diff --git a/src/SBaseFileTable.cpp b/src/SBaseFileTable.cpp index 20d7cc4..befe40f 100644 --- a/src/SBaseFileTable.cpp +++ b/src/SBaseFileTable.cpp @@ -312,59 +312,38 @@ static ULONGLONG DetermineArchiveSize_V1( return (EndOfMpq - MpqOffset); } -static ULONGLONG DetermineArchiveSize_V2( - TMPQHeader * pHeader, - ULONGLONG MpqOffset, - ULONGLONG FileSize) +static ULONGLONG DetermineBlockTableSize_V2(TMPQHeader * pHeader, ULONGLONG MpqHeaderPos, ULONGLONG FileSize) { - ULONGLONG TableOffset; - ULONGLONG TableSize; - ULONGLONG MaxOffset = 0; - - // This could only be called for MPQs version 2.0 - assert(pHeader->wFormatVersion == MPQ_FORMAT_VERSION_2); + ULONGLONG BlockTablePos = MAKE_OFFSET64(pHeader->wBlockTablePosHi, pHeader->dwBlockTablePos); + ULONGLONG ArchiveSize = FileSize - MpqHeaderPos; - // Is the hash table end greater than max offset? - TableOffset = MAKE_OFFSET64(pHeader->wHashTablePosHi, pHeader->dwHashTablePos); - TableSize = (ULONGLONG)pHeader->dwHashTableSize * sizeof(TMPQHash); - if((TableOffset + TableSize) > MaxOffset) - MaxOffset = TableOffset + TableSize; - - // Is the block table end greater than max offset? - TableOffset = MAKE_OFFSET64(pHeader->wBlockTablePosHi, pHeader->dwBlockTablePos); - TableSize = (ULONGLONG)pHeader->dwBlockTableSize * sizeof(TMPQBlock); - if((TableOffset + TableSize) > MaxOffset) - MaxOffset = TableOffset + TableSize; - - // Is the hi-block table end greater than max offset? - if((TableOffset = pHeader->HiBlockTablePos64) != 0) + // If there is a hi-block table and it is beyond the block table, + // we can determine the block table size from it + if(pHeader->HiBlockTablePos64 != 0) { - TableSize = (ULONGLONG)pHeader->dwBlockTableSize * sizeof(USHORT); - if((TableOffset + TableSize) > MaxOffset) - MaxOffset = TableOffset + TableSize; + if(pHeader->HiBlockTablePos64 > BlockTablePos) + { + return (pHeader->HiBlockTablePos64 - BlockTablePos); + } } - // Cut to the file size - if(MaxOffset > (FileSize - MpqOffset)) - MaxOffset = FileSize - MpqOffset; - return MaxOffset; -} - -static ULONGLONG DetermineBlockTableSize_V2(TMPQHeader * pHeader) -{ - ULONGLONG BlockTableOffset = MAKE_OFFSET64(pHeader->wBlockTablePosHi, pHeader->dwBlockTablePos); - ULONGLONG TableOffset; - ULONGLONG TableSize = (pHeader->ArchiveSize64 - BlockTableOffset); - - // Subtract the offset of the hi-block table - if((TableOffset = pHeader->HiBlockTablePos64) != 0) + // If we have valid archive size, we can determine the block table size from the archive size + else { - if(TableOffset > BlockTableOffset) + if((BlockTablePos >> 0x20) == 0 && (ArchiveSize >> 0x20) == 0) { - TableSize = TableOffset - BlockTableOffset; + DWORD dwBlockTablePos32 = (DWORD)(BlockTablePos); + DWORD dwArchiveSize32 = (DWORD)(ArchiveSize); + + if(pHeader->dwArchiveSize == dwArchiveSize32) + { + return (dwArchiveSize32 - dwBlockTablePos32); + } } } - return TableSize; + + // Default is the block table size from MPQ header + return (ULONGLONG)(pHeader->dwBlockTableSize) * sizeof(TMPQBlock); } static ULONGLONG DetermineArchiveSize_V4( @@ -566,35 +545,14 @@ DWORD ConvertMpqHeaderToFormat4( // We require the block table to follow hash table if(BlockTablePos64 >= HashTablePos64) { - // HashTableSize64 may be less than TblSize * sizeof(TMPQHash). - // That means that the hash table is compressed. + // Determine whether the hash table is compressed. This can be detected + // by subtracting hash table position from the block table position. pHeader->HashTableSize64 = BlockTablePos64 - HashTablePos64; - // Calculate the compressed block table size - if(pHeader->HiBlockTablePos64 != 0) - { - // BlockTableSize64 may be less than TblSize * sizeof(TMPQBlock). - // That means that the block table is compressed. - pHeader->BlockTableSize64 = pHeader->HiBlockTablePos64 - BlockTablePos64; - assert(pHeader->BlockTableSize64 <= (pHeader->dwBlockTableSize * sizeof(TMPQBlock))); - - // Determine real archive size - pHeader->ArchiveSize64 = DetermineArchiveSize_V2(pHeader, ByteOffset, FileSize); - - // Calculate the size of the hi-block table - pHeader->HiBlockTableSize64 = pHeader->ArchiveSize64 - pHeader->HiBlockTablePos64; - assert(pHeader->HiBlockTableSize64 == (pHeader->dwBlockTableSize * sizeof(USHORT))); - } - else - { - // Determine real archive size - pHeader->ArchiveSize64 = DetermineArchiveSize_V2(pHeader, ByteOffset, FileSize); - pHeader->dwArchiveSize = (DWORD)(pHeader->ArchiveSize64); - - // Calculate size of the block table - pHeader->BlockTableSize64 = DetermineBlockTableSize_V2(pHeader); - assert(pHeader->BlockTableSize64 <= (pHeader->dwBlockTableSize * sizeof(TMPQBlock))); - } + // Also, block table may be compressed. We check whether the HiBlockTable is there. + // If not, we try to use the archive size. Note that ArchiveSize may have + // an arbitrary value, because it is not tested by Blizzard games anymore + pHeader->BlockTableSize64 = DetermineBlockTableSize_V2(pHeader, ByteOffset, FileSize); } else { diff --git a/src/SCompression.cpp b/src/SCompression.cpp index 659c9a8..d6d2e27 100644 --- a/src/SCompression.cpp +++ b/src/SCompression.cpp @@ -895,6 +895,16 @@ int WINAPI SCompCompress(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuff /* */ /*****************************************************************************/ +// Decompression table specific for Starcraft I BETA +// WAVE files are compressed by different ADPCM compression +static TDecompressTable dcmp_table_sc_beta[] = +{ + {MPQ_COMPRESSION_PKWARE, Decompress_PKLIB}, // Decompression with Pkware Data Compression Library + {MPQ_COMPRESSION_HUFFMANN, Decompress_huff}, // Huffmann decompression + {0x10, Decompress_ADPCM1_sc1b}, // IMA ADPCM mono decompression + {0x20, Decompress_ADPCM2_sc1b}, // IMA ADPCM stereo decompression +}; + // This table contains decompress functions which can be applied to // uncompressed data. The compression mask is stored in the first byte // of compressed data @@ -909,25 +919,22 @@ static TDecompressTable dcmp_table[] = {MPQ_COMPRESSION_SPARSE, Decompress_SPARSE} // Sparse decompression }; -// Decompression table specific for Starcraft I BETA -// WAVE files are compressed by different ADPCM compression -static TDecompressTable dcmp_table_sc1b[] = -{ - {MPQ_COMPRESSION_PKWARE, Decompress_PKLIB}, // Decompression with Pkware Data Compression Library - {MPQ_COMPRESSION_HUFFMANN, Decompress_huff}, // Huffmann decompression - {0x10, Decompress_ADPCM1_sc1b}, // IMA ADPCM mono decompression - {0x20, Decompress_ADPCM2_sc1b}, // IMA ADPCM stereo decompression -}; - -static int SCompDecompressInternal(TDecompressTable * table, size_t table_length, void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer) +static int SCompDecompressInternal( + TDecompressTable * table, + size_t table_length, + void * pvOutBuffer, + int * pcbOutBuffer, + void * pvInBuffer, + int cbInBuffer, + unsigned uValidMask = 0xFF) { unsigned char * pbWorkBuffer = NULL; unsigned char * pbOutBuffer = (unsigned char *)pvOutBuffer; unsigned char * pbInBuffer = (unsigned char *)pvInBuffer; unsigned char * pbOutput = (unsigned char *)pvOutBuffer; unsigned char * pbInput; - unsigned uCompressionMask; // Decompressions applied to the data - unsigned uCompressionCopy; // Decompressions applied to the data + unsigned uCompressionMask1; // Decompressions applied to the data + unsigned uCompressionMask2; // Decompressions applied to the data int cbOutBuffer = *pcbOutBuffer; // Current size of the output buffer int cbInLength; // Current size of the input buffer int nCompressCount = 0; // Number of compressions to be applied @@ -948,7 +955,8 @@ static int SCompDecompressInternal(TDecompressTable * table, size_t table_length } // Get applied compression types and decrement data length - uCompressionMask = uCompressionCopy = (unsigned char)(*pbInBuffer++); + uCompressionMask1 = ((unsigned char)(*pbInBuffer++) & (uValidMask)); + uCompressionMask2 = uCompressionMask1; cbInBuffer--; // Get current compressed data and length of it @@ -956,21 +964,21 @@ static int SCompDecompressInternal(TDecompressTable * table, size_t table_length cbInLength = cbInBuffer; // This compression function doesn't support LZMA - assert(uCompressionMask != MPQ_COMPRESSION_LZMA); + assert(uCompressionMask1 != MPQ_COMPRESSION_LZMA); // Parse the compression mask for(size_t i = 0; i < table_length; i++) { // If the mask agrees, insert the compression function to the array - if(uCompressionMask & table[i].uMask) + if(uCompressionMask1 & table[i].uMask) { - uCompressionCopy &= ~table[i].uMask; + uCompressionMask2 &= ~table[i].uMask; nCompressCount++; } } // If at least one of the compressions remaing unknown, return an error - if(nCompressCount == 0 || uCompressionCopy != 0) + if(nCompressCount == 0 || uCompressionMask2 != 0) { SetLastError(ERROR_NOT_SUPPORTED); return 0; @@ -994,7 +1002,7 @@ static int SCompDecompressInternal(TDecompressTable * table, size_t table_length for(size_t i = 0; i < table_length; i++) { // Perform the (next) decompression - if(uCompressionMask & table[i].uMask) + if(uCompressionMask1 & table[i].uMask) { // Get the correct output buffer pbOutput = (nCompressIndex & 1) ? pbWorkBuffer : pbOutBuffer; @@ -1030,11 +1038,6 @@ int WINAPI SCompDecompress(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBu return SCompDecompressInternal(dcmp_table, _countof(dcmp_table), pvOutBuffer, pcbOutBuffer, pvInBuffer, cbInBuffer); } -int WINAPI SCompDecompress_SC1B(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer) -{ - return SCompDecompressInternal(dcmp_table_sc1b, _countof(dcmp_table_sc1b), pvOutBuffer, pcbOutBuffer, pvInBuffer, cbInBuffer); -} - int WINAPI SCompDecompress2(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer) { DECOMPRESS pfnDecompress1 = NULL; @@ -1149,6 +1152,24 @@ int WINAPI SCompDecompress2(void * pvOutBuffer, int * pcbOutBuffer, void * pvInB return nResult; } +int WINAPI SCompDecompressX(TMPQArchive * ha, void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer) +{ + // MPQs version 2 use their own fixed list of compression flags. + if(ha->pHeader->wFormatVersion >= MPQ_FORMAT_VERSION_2) + { + return SCompDecompress2(pvOutBuffer, pcbOutBuffer, pvInBuffer, cbInBuffer); + } + + // Starcraft BETA has specific decompression table. + if(ha->dwFlags & MPQ_FLAG_STARCRAFT_BETA) + { + return SCompDecompressInternal(dcmp_table_sc_beta, _countof(dcmp_table_sc_beta), pvOutBuffer, pcbOutBuffer, pvInBuffer, cbInBuffer); + } + + // Default: Use the common MPQ v1 decompression routine + return SCompDecompressInternal(dcmp_table, _countof(dcmp_table), pvOutBuffer, pcbOutBuffer, pvInBuffer, cbInBuffer); +} + /*****************************************************************************/ /* */ /* File decompression for MPK archives */ diff --git a/src/SFileOpenArchive.cpp b/src/SFileOpenArchive.cpp index 16e2491..f19a6e7 100644 --- a/src/SFileOpenArchive.cpp +++ b/src/SFileOpenArchive.cpp @@ -463,16 +463,19 @@ bool WINAPI SFileOpenArchive( if(IsStarcraftBetaArchive(ha->pHeader)) ha->dwFlags |= MPQ_FLAG_STARCRAFT_BETA; - // Remember whether whis is a map for Warcraft III - if(MapType == MapTypeWarcraft3) + // Maps from StarCraft and Warcraft III need special treatment + switch(MapType) { - ha->dwValidFileFlags = MPQ_FILE_VALID_FLAGS_W3X; - ha->dwFlags |= MPQ_FLAG_WAR3_MAP; - } + case MapTypeStarcraft: + ha->dwValidFileFlags = MPQ_FILE_VALID_FLAGS_SCX; + ha->dwFlags |= MPQ_FLAG_STARCRAFT; + break; - // If this is starcraft map, set the flag mask - if(MapType == MapTypeStarcraft) - ha->dwValidFileFlags = MPQ_FILE_VALID_FLAGS_SCX; + case MapTypeWarcraft3: + ha->dwValidFileFlags = MPQ_FILE_VALID_FLAGS_W3X; + ha->dwFlags |= MPQ_FLAG_WAR3_MAP; + break; + } // Set the size of file sector ha->dwSectorSize = (0x200 << ha->pHeader->wSectorSize); diff --git a/src/SFileOpenFileEx.cpp b/src/SFileOpenFileEx.cpp index a14ffee..b5829b4 100644 --- a/src/SFileOpenFileEx.cpp +++ b/src/SFileOpenFileEx.cpp @@ -298,32 +298,32 @@ bool WINAPI SFileOpenFileEx(HANDLE hMpq, const char * szFileName, DWORD dwSearch if(dwErrCode == ERROR_SUCCESS) { // If we didn't find the file, try to open it using pseudo file name ("File - if (pFileEntry == NULL || (pFileEntry->dwFlags & MPQ_FILE_EXISTS) == 0) + if(pFileEntry == NULL || (pFileEntry->dwFlags & MPQ_FILE_EXISTS) == 0) { // Check the pseudo-file name ("File00000001.ext") - if ((bOpenByIndex = IsPseudoFileName(szFileName, &dwFileIndex)) == true) + if((bOpenByIndex = IsPseudoFileName(szFileName, &dwFileIndex)) == true) { // Get the file entry for the file - if (dwFileIndex < ha->dwFileTableSize) + if(dwFileIndex < ha->dwFileTableSize) { pFileEntry = ha->pFileTable + dwFileIndex; } } // Still not found? - if (pFileEntry == NULL) + if(pFileEntry == NULL || (pFileEntry->dwFlags & MPQ_FILE_EXISTS) == 0) { dwErrCode = ERROR_FILE_NOT_FOUND; } } // Perform some checks of invalid files - if (pFileEntry != NULL) + if(pFileEntry != NULL) { // MPQ protectors use insanely amount of fake files, often with very high size. // We won't open any files whose compressed size is bigger than archive size // If the file is not compressed, its size cannot be bigger than archive size - if ((pFileEntry->dwFlags & MPQ_FILE_COMPRESS_MASK) == 0 && (pFileEntry->dwFileSize > ha->FileSize)) + if((pFileEntry->dwFlags & MPQ_FILE_COMPRESS_MASK) == 0 && (pFileEntry->dwFileSize > ha->FileSize)) { dwErrCode = ERROR_FILE_CORRUPT; pFileEntry = NULL; diff --git a/src/SFileReadFile.cpp b/src/SFileReadFile.cpp index 39f794e..b0698c1 100644 --- a/src/SFileReadFile.cpp +++ b/src/SFileReadFile.cpp @@ -13,6 +13,11 @@ #include "StormLib.h" #include "StormCommon.h" +//----------------------------------------------------------------------------- +// External references (not public functions) + +int WINAPI SCompDecompressX(TMPQArchive * ha, void * pvOutBuffer, int * pcbOutBuffer, void * pbInBuffer, int cbInBuffer); + //----------------------------------------------------------------------------- // Local functions @@ -171,18 +176,10 @@ static DWORD ReadMpqSectors(TMPQFile * hf, LPBYTE pbBuffer, DWORD dwByteOffset, // Remember the last used compression hf->dwCompression0 = pbInSector[0]; - // Decompress the data - if(ha->pHeader->wFormatVersion >= MPQ_FORMAT_VERSION_2) - { - nResult = SCompDecompress2(pbOutSector, &cbOutSector, pbInSector, cbInSector); - } - else - { - if(ha->dwFlags & MPQ_FLAG_STARCRAFT_BETA) - nResult = SCompDecompress_SC1B(pbOutSector, &cbOutSector, pbInSector, cbInSector); - else - nResult = SCompDecompress(pbOutSector, &cbOutSector, pbInSector, cbInSector); - } + // Decompress the data. We need to perform MPQ-specific decompression, + // as multiple Blizzard games may have their own decompression tables + // and even decompression methods. + nResult = SCompDecompressX(ha, pbOutSector, &cbOutSector, pbInSector, cbInSector); } // Is the file compressed by PKWARE Data Compression Library ? diff --git a/src/StormLib.h b/src/StormLib.h index 07408b2..4aa51c1 100644 --- a/src/StormLib.h +++ b/src/StormLib.h @@ -143,8 +143,8 @@ extern "C" { //----------------------------------------------------------------------------- // Defines -#define STORMLIB_VERSION 0x0918 // Current version of StormLib (9.24) -#define STORMLIB_VERSION_STRING "9.24" // String version of StormLib version +#define STORMLIB_VERSION 0x0919 // Current version of StormLib +#define STORMLIB_VERSION_STRING "9.25" // Current version of StormLib as string #define ID_MPQ 0x1A51504D // MPQ archive header ID ('MPQ\x1A') #define ID_MPQ_USERDATA 0x1B51504D // MPQ userdata entry ('MPQ\x1B') @@ -194,15 +194,16 @@ extern "C" { #define MPQ_FLAG_CHECK_SECTOR_CRC 0x00000020 // Checking sector CRC when reading files #define MPQ_FLAG_SAVING_TABLES 0x00000040 // If set, we are saving MPQ internal files and MPQ tables #define MPQ_FLAG_PATCH 0x00000080 // If set, this MPQ is a patch archive -#define MPQ_FLAG_WAR3_MAP 0x00000100 // If set, this MPQ is a Warcraft III map -#define MPQ_FLAG_STARCRAFT_BETA 0x00000200 // If set, this MPQ is StarDat.mpq from Starcraft I BETA -#define MPQ_FLAG_LISTFILE_NONE 0x00000400 // Set when no (listfile) was found in InvalidateInternalFiles -#define MPQ_FLAG_LISTFILE_NEW 0x00000800 // Set when (listfile) invalidated by InvalidateInternalFiles -#define MPQ_FLAG_LISTFILE_FORCE 0x00001000 // Save updated listfile on exit -#define MPQ_FLAG_ATTRIBUTES_NONE 0x00002000 // Set when no (attributes) was found in InvalidateInternalFiles -#define MPQ_FLAG_ATTRIBUTES_NEW 0x00004000 // Set when (attributes) invalidated by InvalidateInternalFiles -#define MPQ_FLAG_SIGNATURE_NONE 0x00008000 // Set when no (signature) was found in InvalidateInternalFiles -#define MPQ_FLAG_SIGNATURE_NEW 0x00010000 // Set when (signature) invalidated by InvalidateInternalFiles +#define MPQ_FLAG_STARCRAFT_BETA 0x00000100 // If set, this MPQ is from Starcraft I BETA +#define MPQ_FLAG_STARCRAFT 0x00000200 // If set, this MPQ is from Starcraft I +#define MPQ_FLAG_WAR3_MAP 0x00000400 // If set, this MPQ is a Warcraft III map +#define MPQ_FLAG_LISTFILE_NONE 0x00000800 // Set when no (listfile) was found in InvalidateInternalFiles +#define MPQ_FLAG_LISTFILE_NEW 0x00001000 // Set when (listfile) invalidated by InvalidateInternalFiles +#define MPQ_FLAG_LISTFILE_FORCE 0x00002000 // Save updated listfile on exit +#define MPQ_FLAG_ATTRIBUTES_NONE 0x00004000 // Set when no (attributes) was found in InvalidateInternalFiles +#define MPQ_FLAG_ATTRIBUTES_NEW 0x00008000 // Set when (attributes) invalidated by InvalidateInternalFiles +#define MPQ_FLAG_SIGNATURE_NONE 0x00010000 // Set when no (signature) was found in InvalidateInternalFiles +#define MPQ_FLAG_SIGNATURE_NEW 0x00020000 // Set when (signature) invalidated by InvalidateInternalFiles // Values for TMPQArchive::dwSubType #define MPQ_SUBTYPE_MPQ 0x00000000 // The file is a MPQ file (Blizzard games) @@ -1121,7 +1122,6 @@ int WINAPI SCompExplode (void * pvOutBuffer, int * pcbOutBuffer, void * pv int WINAPI SCompCompress (void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer, unsigned uCompressionMask, int nCmpType, int nCmpLevel); int WINAPI SCompDecompress (void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer); int WINAPI SCompDecompress2(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer); -int WINAPI SCompDecompress_SC1B(void * pvOutBuffer, int * pcbOutBuffer, void * pvInBuffer, int cbInBuffer); //----------------------------------------------------------------------------- // Non-Windows support for SetLastError/GetLastError diff --git a/test/Readme.txt b/test/Readme.txt deleted file mode 100644 index 19bdf53..0000000 --- a/test/Readme.txt +++ /dev/null @@ -1,90 +0,0 @@ -Testing MPQ set for StormLib test suite -======================================= - -The path to the directory could be anywhere. Path to this directory -is set on a command line. If there is no command line argument passed, -one of the hard-coded paths is used. - -The testing directory must contain the following files: - -Path File Size -------------------------------------------------- ----------- -patches\wow-update-13164.MPQ 480 028 668 // Original patch files from WoW -patches\wow-update-13205.MPQ 8 814 -patches\wow-update-13287.MPQ 333 363 917 -patches\wow-update-13329.MPQ 159 285 434 -patches\wow-update-13596.MPQ 148 022 182 -patches\wow-update-13623.MPQ 11 561 -patches\wow-update-base-13914.MPQ 293 580 556 -patches\wow-update-base-14007.MPQ 262 906 -patches\wow-update-base-14333.MPQ 368 972 365 -patches\wow-update-base-14480.MPQ 75 897 -patches\wow-update-base-14545.MPQ 1 224 415 -patches\wow-update-base-14946.MPQ 749 246 163 -patches\wow-update-base-15005.MPQ 7 121 223 -patches\wow-update-base-15050.MPQ 4 497 -patches\wow-update-enGB-16016.MPQ 17 117 318 -patches\wow-update-enGB-16048.MPQ 78 180 -patches\wow-update-enGB-16057.MPQ 4 072 -patches\wow-update-enGB-16309.MPQ 28 187 877 -patches\wow-update-enGB-16357.MPQ 3 621 -patches\wow-update-enGB-16516.MPQ 42 934 402 -patches\wow-update-enGB-16650.MPQ 426 683 -patches\wow-update-enGB-16844.MPQ 18 366 460 -patches\wow-update-enGB-16965.MPQ 305 202 -patches\wow-update-oldworld-13154.MPQ 54 068 663 -patches\wow-update-oldworld-13286.MPQ 2 328 773 - -AddFile.bin 0 // Just an empty file -AddFile.exe 432 640 // An arbitraty binary file -AddFile.wav 311 340 // An arbitrary WAVE file -ListFile_Blizzard.txt 3 904 784 // Listfile for Blizzard games (pre-WoW) -ListFile_WarOfTheImmortals.txt 3 904 858 // Listfile for War of the Immortals game -MPQ_1997_v1_Diablo1_DIABDAT.MPQ 517 501 282 // Originally DIABDAT.MPQ from Diablo I -MPQ_1997_v1_Diablo1_DIABDAT.sha 206 -MPQ_1997_v1_Diablo1_single_0.sha 201 // Single player savegame from Diablo I -MPQ_1997_v1_Diablo1_single_0.sv 98 980 -MPQ_1999_v1_WeakSignature.exe 1 031 826 // War2Patch_202.exe from Warcraft II Bnet Edition -MPQ_1999_v1_WeakSignature.sha 260 -MPQ_2002_v1_BlockTableCut.MPQ 27 498 436 // Cut file War3Patch.mpq from Warcraft III -MPQ_2002_v1_BlockTableCut.sha 250 -MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.sha 1 067 -MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.w3x 1 089 638 // Protected Warcraft III map -MPQ_2002_v1_ProtectedMap_InvalidMpqFormat.sha 507 -MPQ_2002_v1_ProtectedMap_InvalidMpqFormat.w3x 2 429 195 // Protected Warcraft III map -MPQ_2002_v1_ProtectedMap_InvalidUserData.sha 293 -MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x 596 486 // Protected Warcraft III map -MPQ_2002_v1_StrongSignature.sha 250 -MPQ_2002_v1_StrongSignature.w3m 306 818 // (10)DustwallowKeys.w3m from Warcraft III -MPQ_2009_v2_WoW_patch.MPQ.part 31 396 380 // patch.MPQ.part from trial WoW build 10958 -MPQ_2009_v2_WoW_patch.MPQ.sha 226 -MPQ_2010_v2_HashTableCompressed.MPQ.part 14 546 972 // interface.MPQ.part from WoW build 10958 -MPQ_2010_v2_HashTableCompressed.MPQ.sha 277 -MPQ_2010_v2_HasUserData.s2ma 1 972 177 // (4) - AI - Kulas Ravine (1x).s2ma from Starcraft II Beta -MPQ_2010_v2_HasUserData.sha 261 -MPQ_2010_v3_expansion-locale-frFR.MPQ 2 980 489 // expansion-locale-frFR.MPQ from WoW 12911 -MPQ_2010_v3_expansion-locale-frFR.sha 274 -MPQ_2011_v2_EncryptedMpq.MPQE 41 631 764 // Installer UI 2 esES.MPQE from Starcraft II Installer (build 15404) -MPQ_2011_v2_EncryptedMpq.sha 255 -MPQ_2011_v4_InvalidHetEntryCount.MPQ 206 164 // An invalid MPQ created by a previous Stormlib version -MPQ_2011_v4_InvalidHetEntryCount.sha 312 -MPQ_2012_v2_EmptyMpq.MPQ 44 // Empty MPQ (Cache from WoW 11723) -MPQ_2012_v2_EmptyMpq.sha 212 -MPQ_2012_v4_OldWorld.MPQ 1 854 547 587 // OldWorld.MPQ from WoW 12911 -MPQ_2012_v4_OldWorld.sha 270 -MPQ_2013_v4_EmptyMpq.MPQ 208 // Empty MPQ created by StormLib -MPQ_2013_v4_EmptyMpq.sha 183 -MPQ_2013_v4_expansion1.MPQ 1 426 926 736 // expansion1.MPQ from WoW build 17538 -MPQ_2013_v4_expansion1.sha 221 -MPQ_2013_v4_locale-enGB.MPQ 446 491 866 // locale-enGB.MPQ from WoW build 16965 -MPQ_2013_v4_locale-enGB.sha 273 -MPQ_2013_v4_patch-base-16357.MPQ 249 // patch-base-16357.MPQ from WoW build 17538 -MPQ_2013_v4_patch-base-16357.sha 229 -MPQ_2013_v4_SC2_EmptyMap.SC2Map 25 058 // Custom Starcraft II Map -MPQ_2013_v4_SC2_EmptyMap.sha 243 -MPQ_2013_v4_world.MPQ 2 617 175 835 // world.MPQ from WoW build 12911 -MPQ_2013_v4_world.sha 252 -MPx_2013_v1_LongwuOnline.mpk 2 146 549 // Scp.mpk from Longwu Online -MPx_2013_v1_LongwuOnline.sha 277 -MPx_2013_v1_WarOfTheImmortals.sha 248 -MPx_2013_v1_WarOfTheImmortals.sqp 56 775 675 // Modified Other.sqp from War of the Immortals diff --git a/test/StormTest.cpp b/test/StormTest.cpp old mode 100644 new mode 100755 index 82668cf..a65430d --- a/test/StormTest.cpp +++ b/test/StormTest.cpp @@ -44,7 +44,7 @@ // Artificial flag for not reporting open failure #define MPQ_OPEN_DONT_REPORT_FAILURE 0x80000000 -typedef DWORD(*FIND_FILE_CALLBACK)(LPCTSTR szFullPath); +typedef DWORD (*FS_SEARCH_CALLBACK)(LPCTSTR szFullPath, void * lpContext); typedef enum _EXTRA_TYPE { @@ -105,22 +105,14 @@ typedef struct _LINE_INFO #ifdef STORMLIB_WINDOWS #define WORK_PATH_ROOT _T("\\Multimedia\\MPQs") -static const TCHAR szListFileDir[] = { '1', '9', '9', '5', ' ', '-', ' ', 'T', 'e', 's', 't', ' ', 'M', 'P', 'Q', 's', '\\', 'l', 'i', 's', 't', 'f', 'i', 'l', 'e', 's', '-', (TCHAR)0x65B0, (TCHAR)0x5EFA, (TCHAR)0x6587, (TCHAR)0x4EF6, (TCHAR)0x5939, 0 }; #endif #ifdef STORMLIB_LINUX -#define WORK_PATH_ROOT "/media/ladik/CascStorages/MPQs" -static const TCHAR szListFileDir[] = { '1', '9', '9', '5', ' ', '-', ' ', 'T', 'e', 's', 't', ' ', 'M', 'P', 'Q', 's', '\\', 'l', 'i', 's', 't', 'f', 'i', 'l', 'e', 's', '-', (TCHAR)0xe6, (TCHAR)0x96, (TCHAR)0xB0, (TCHAR)0xE5, (TCHAR)0xBB, (TCHAR)0xBA, (TCHAR)0xE6, (TCHAR)0x96, (TCHAR)0x87, (TCHAR)0xE4, (TCHAR)0xBB, (TCHAR)0xB6, (TCHAR)0xE5, (TCHAR)0xA4, (TCHAR)0xB9, 0 }; -#endif - -#ifdef STORMLIB_MAC -#define WORK_PATH_ROOT "/home/sam/StormLib/test" -static const TCHAR szListFileDir[] = { '1', '9', '9', '5', ' ', '-', ' ', 'T', 'e', 's', 't', ' ', 'M', 'P', 'Q', 's', '\\', 'l', 'i', 's', 't', 'f', 'i', 'l', 'e', 's', '-', (TCHAR)0xe6, (TCHAR)0x96, (TCHAR)0xB0, (TCHAR)0xE5, (TCHAR)0xBB, (TCHAR)0xBA, (TCHAR)0xE6, (TCHAR)0x96, (TCHAR)0x87, (TCHAR)0xE4, (TCHAR)0xBB, (TCHAR)0xB6, (TCHAR)0xE5, (TCHAR)0xA4, (TCHAR)0xB9, 0 }; +#define WORK_PATH_ROOT "/media/ladik/MPQs" #endif #ifdef STORMLIB_HAIKU #define WORK_PATH_ROOT "~/StormLib/test" -static const TCHAR szListFileDir[] = { '1', '9', '9', '5', ' ', '-', ' ', 'T', 'e', 's', 't', ' ', 'M', 'P', 'Q', 's', '\\', 'l', 'i', 's', 't', 'f', 'i', 'l', 'e', 's', '-', (TCHAR)0xe6, (TCHAR)0x96, (TCHAR)0xB0, (TCHAR)0xE5, (TCHAR)0xBB, (TCHAR)0xBA, (TCHAR)0xE6, (TCHAR)0x96, (TCHAR)0x87, (TCHAR)0xE4, (TCHAR)0xBB, (TCHAR)0xB6, (TCHAR)0xE5, (TCHAR)0xA4, (TCHAR)0xB9, 0 }; #endif // Definition of the path separator @@ -134,8 +126,8 @@ static const TCHAR PATH_SEPARATOR = '/'; // Path separator for Non-Wi // Global for the work MPQ static LPCTSTR szMpqSubDir = _T("1995 - Test MPQs"); -static LPCTSTR szMpqPatchDir = _T("1995 - Test MPQs\\patches"); -static LPCSTR IntToHexChar = "0123456789abcdef"; +static TCHAR szListFileDir[MAX_PATH] = {0}; +static TCHAR szMpqPatchDir[MAX_PATH] = {0}; //----------------------------------------------------------------------------- // Testing data @@ -270,6 +262,20 @@ static bool IsFullPath(const XCHAR * szFileName) return false; } +LPCTSTR GetRelativePath(LPCTSTR szFullPath) +{ + LPCTSTR szRelativePath; + + if(szFullPath && szFullPath[0]) + { + if((szRelativePath = _tcsstr(szFullPath, szMpqSubDir)) != NULL) + { + return szRelativePath; + } + } + return _T(""); +} + static bool IsMpqExtension(LPCTSTR szFileName) { LPCTSTR szExtension = _tcsrchr(szFileName, '.'); @@ -312,6 +318,7 @@ static bool IsMpqExtension(LPCTSTR szFileName) template xchar * StringFromBinary(LPBYTE pbBinary, size_t cbBinary, xchar * szBuffer) { + const char * IntToHexChar = "0123456789abcdef"; xchar * szSaveBuffer = szBuffer; // Verify the binary pointer @@ -537,13 +544,14 @@ static DWORD CalculateFileSha1(TLogHelper * pLogger, LPCTSTR szFullPath, TCHAR * hash_state sha1_state; ULONGLONG ByteOffset = 0; ULONGLONG FileSize = 0; - BYTE * pbFileBlock; + LPCTSTR szHashingFormat = _T("Hashing %s " fmt_X_of_Y_a); + LPBYTE pbFileBlock; DWORD cbBytesToRead; DWORD cbFileBlock = 0x100000; DWORD dwErrCode = ERROR_SUCCESS; // Notify the user - pLogger->PrintProgress(_T("Hashing file %s"), szShortPlainName); + pLogger->PrintProgress(_T("Hashing %s ..."), szShortPlainName); szFileSha1[0] = 0; // Open the file to be verified @@ -564,7 +572,7 @@ static DWORD CalculateFileSha1(TLogHelper * pLogger, LPCTSTR szFullPath, TCHAR * while(ByteOffset < FileSize) { // Notify the user - pLogger->PrintProgress(_T("Hashing file %s (%I64u of %I64u)"), szShortPlainName, ByteOffset, FileSize); + pLogger->PrintProgress(szHashingFormat, szShortPlainName, ByteOffset, FileSize); // Load the file block cbBytesToRead = ((FileSize - ByteOffset) > cbFileBlock) ? cbFileBlock : (DWORD)(FileSize - ByteOffset); @@ -580,7 +588,7 @@ static DWORD CalculateFileSha1(TLogHelper * pLogger, LPCTSTR szFullPath, TCHAR * } // Notify the user - pLogger->PrintProgress(_T("Hashing file %s (%I64u of %I64u)"), szShortPlainName, ByteOffset, FileSize); + pLogger->PrintProgress(szHashingFormat, szShortPlainName, ByteOffset, FileSize); // Finalize SHA1 sha1_done(&sha1_state, sha1_digest); @@ -627,24 +635,15 @@ static HANDLE InitDirectorySearch(LPCTSTR szDirectory) #endif } -static bool SearchDirectory(HANDLE hFind, TCHAR * szDirEntry, size_t cchDirEntry, bool & IsDirectory) +static bool SearchDirectory(HANDLE hFind, LPTSTR szDirEntry, size_t cchDirEntry, bool & IsDirectory) { #ifdef STORMLIB_WINDOWS WIN32_FIND_DATA wf; - TCHAR szDirEntryT[MAX_PATH]; - char szDirEntryA[MAX_PATH]; - - __SearchNextEntry: // Search for the hnext entry. if(FindNextFile(hFind, &wf)) { - // Verify if the directory entry is an UNICODE name that would be destroyed - // by Unicode->ANSI->Unicode conversion - if(CopyStringAndVerifyConversion(wf.cFileName, szDirEntryT, szDirEntryA, _countof(szDirEntryA)) == false) - goto __SearchNextEntry; - IsDirectory = (wf.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ? true : false; StringCopy(szDirEntry, cchDirEntry, wf.cFileName); return true; @@ -682,9 +681,60 @@ static void FreeDirectorySearch(HANDLE hFind) #endif } -static DWORD FindFilesInternal(FIND_FILE_CALLBACK pfnTest, TCHAR * szDirectory) +static PFILE_DATA LoadLocalFile(TLogHelper * pLogger, LPCTSTR szFileName, bool bMustSucceed) +{ + TFileStream * pStream; + PFILE_DATA pFileData = NULL; + ULONGLONG FileSize = 0; + size_t nAllocateBytes; + + // Notify the user + if(pLogger != NULL) + pLogger->PrintProgress(_T("Loading %s ..."), GetPlainFileName(szFileName)); + + // Attempt to open the file + if((pStream = FileStream_OpenFile(szFileName, STREAM_FLAG_READ_ONLY)) != NULL) + { + // Get the file size + FileStream_GetSize(pStream, &FileSize); + + // Check for too big files + if((FileSize >> 0x20) == 0) + { + // Allocate space for the file + nAllocateBytes = sizeof(FILE_DATA) + (size_t)FileSize; + pFileData = (PFILE_DATA)STORM_ALLOC(BYTE, nAllocateBytes); + if(pFileData != NULL) + { + // Make sure it;s properly zeroed + memset(pFileData, 0, nAllocateBytes); + pFileData->dwFileSize = (DWORD)FileSize; + + // Load to memory + if(!FileStream_Read(pStream, NULL, pFileData->FileData, pFileData->dwFileSize)) + { + STORM_FREE(pFileData); + pFileData = NULL; + } + } + } + + // Close the stream + FileStream_Close(pStream); + } + else + { + if(pLogger != NULL && bMustSucceed == true) + pLogger->PrintError(_T("Open failed: %s"), szFileName); + } + + // Return the loaded file data or NULL + return pFileData; +} + +static DWORD FindFilesInternal(FS_SEARCH_CALLBACK PfnFolderCallback, FS_SEARCH_CALLBACK PfnFileCallback, LPTSTR szDirectory, void * lpContext = NULL) { - TCHAR * szPlainName; + LPTSTR szPlainName; HANDLE hFind; size_t nLength; TCHAR szDirEntry[MAX_PATH]; @@ -713,14 +763,16 @@ static DWORD FindFilesInternal(FIND_FILE_CALLBACK pfnTest, TCHAR * szDirectory) { if(szDirEntry[0] != '.') { - dwErrCode = FindFilesInternal(pfnTest, szDirectory); + if(PfnFolderCallback != NULL) + PfnFolderCallback(szDirectory, lpContext); + dwErrCode = FindFilesInternal(PfnFolderCallback, PfnFileCallback, szDirectory, lpContext); } } else { - if(pfnTest != NULL) + if(PfnFileCallback != NULL) { - dwErrCode = pfnTest(szDirectory); + dwErrCode = PfnFileCallback(szDirectory, lpContext); } } } @@ -733,19 +785,100 @@ static DWORD FindFilesInternal(FIND_FILE_CALLBACK pfnTest, TCHAR * szDirectory) return dwErrCode; } -static DWORD FindFiles(FIND_FILE_CALLBACK pfnFindFile, LPCTSTR szSubDirectory) +static DWORD ForEachFile_VerifyFileHash(LPCTSTR szFullPath, void * lpContext) { + TLogHelper * pLogger = (TLogHelper *)(lpContext); + PFILE_DATA pFileData; + TCHAR * szExtension; + TCHAR szShaFileName[MAX_PATH + 1]; + TCHAR szSha1Text[0x40]; + char szSha1TextA[0x40]; + DWORD dwErrCode = ERROR_SUCCESS; + + // Try to load the file with the SHA extension + StringCopy(szShaFileName, _countof(szShaFileName), szFullPath); + szExtension = _tcsrchr(szShaFileName, '.'); + if(szExtension == NULL) + return ERROR_SUCCESS; + + // Skip .SHA and .TXT files + if(!_tcsicmp(szExtension, _T(".sha")) || !_tcsicmp(szExtension, _T(".txt"))) + return ERROR_SUCCESS; + + // Load the local file to memory + _tcscpy(szExtension, _T(".sha")); + pFileData = LoadLocalFile(pLogger, szShaFileName, false); + if(pFileData != NULL) + { + // Calculate SHA1 of the entire file + dwErrCode = CalculateFileSha1(pLogger, szFullPath, szSha1Text); + if(dwErrCode == ERROR_SUCCESS) + { + // Compare with what we loaded from the file + if(pFileData->dwFileSize >= (SHA1_DIGEST_SIZE * 2)) + { + // Compare the SHA1 + StringCopy(szSha1TextA, _countof(szSha1TextA), szSha1Text); + if(_strnicmp(szSha1TextA, (char *)pFileData->FileData, (SHA1_DIGEST_SIZE * 2))) + { + SetLastError(dwErrCode = ERROR_FILE_CORRUPT); + pLogger->PrintError(_T("File hash check failed: %s"), szFullPath); + } + } + } + + // Clear the line + if(dwErrCode == ERROR_SUCCESS) + pLogger->PrintProgress("OK"); + STORM_FREE(pFileData); + } + return dwErrCode; +} + +static DWORD VerifyFileHashes(LPCTSTR szSubDirectory) +{ + TLogHelper Logger("TestVerifyHash"); TCHAR szWorkBuff[MAX_PATH]; + // Construct the full directory name CreateFullPathName(szWorkBuff, _countof(szWorkBuff), szSubDirectory, NULL); - return FindFilesInternal(pfnFindFile, szWorkBuff); + + // Find each file and check its hash + return FindFilesInternal(NULL, ForEachFile_VerifyFileHash, szWorkBuff, &Logger); +} + +static DWORD FindListFileFolder(LPCTSTR szFullPath, void * /* lpContext */) +{ + LPCTSTR szPlainName = GetPlainFileName(szFullPath); + + // Check listfile directory + if(szListFileDir[0] == 0) + { + if(!_tcsnicmp(szPlainName, _T("listfiles-"), 10)) + { + StringCopy(szListFileDir, _countof(szListFileDir), GetRelativePath(szFullPath)); + return ERROR_SUCCESS; + } + } + + if(szMpqPatchDir[0] == 0) + { + if(!_tcsnicmp(szPlainName, _T("patches-"), 8)) + { + StringCopy(szMpqPatchDir, _countof(szMpqPatchDir), GetRelativePath(szFullPath)); + return ERROR_SUCCESS; + } + } + + // Check patch directory + return ERROR_SUCCESS; } static DWORD InitializeMpqDirectory(TCHAR * argv[], int argc) { - TLogHelper Logger("InitWorkDir"); + TLogHelper Logger("InitWorkFolder"); TFileStream * pStream; - TCHAR szFullPath[MAX_PATH]; + TCHAR szFullPath[MAX_PATH] = {0}; LPCTSTR szWhereFrom = _T("default"); LPCTSTR szDirName = WORK_PATH_ROOT; @@ -777,6 +910,14 @@ static DWORD InitializeMpqDirectory(TCHAR * argv[], int argc) // Print the work directory info Logger.PrintMessage(_T("Work directory %s (%s)"), szMpqDirectory, szWhereFrom); + // Find the listfile directory within the MPQ directory + CreateFullPathName(szFullPath, _countof(szFullPath), NULL, szMpqSubDir); + FindFilesInternal(FindListFileFolder, NULL, szFullPath, NULL); + if(szListFileDir[0] == 0) + return Logger.PrintError(_T("Listfile folder was not found in the MPQ directory")); + if(szMpqPatchDir[0] == 0) + return Logger.PrintError(_T("Patches folder was not found in the MPQ directory")); + // Verify if the work MPQ directory is writable CreateFullPathName(szFullPath, _countof(szFullPath), NULL, _T("TestFile.bin")); pStream = FileStream_CreateFile(szFullPath, 0); @@ -995,7 +1136,7 @@ static DWORD WriteFileData( DWORD cbToWrite = (ByteCount > cbDataBuffer) ? cbDataBuffer : (DWORD)ByteCount; // Notify the user - pLogger->PrintProgress("Writing file data (%I64u of %I64u) ...", BytesWritten, SaveByteCount); + pLogger->PrintProgress("Writing file data " fmt_X_of_Y_a " ...", BytesWritten, SaveByteCount); // Write the data if(!FileStream_Write(pStream, &ByteOffset, pbDataBuffer, cbToWrite)) @@ -1054,7 +1195,7 @@ static DWORD CopyFileData( ByteOffset += BytesToRead; // Notify the user - pLogger->PrintProgress("Copying (%I64u of %I64u complete) ...", BytesCopied, ByteCount); + pLogger->PrintProgress("Copying " fmt_X_of_Y_a " ...", BytesCopied, ByteCount); } STORM_FREE(pbCopyBuffer); @@ -1214,52 +1355,6 @@ static bool CheckIfFileIsPresent(TLogHelper * pLogger, HANDLE hMpq, LPCSTR szFil } } -static PFILE_DATA LoadLocalFile(TLogHelper * pLogger, LPCTSTR szFileName, bool bMustSucceed) -{ - TFileStream * pStream; - PFILE_DATA pFileData = NULL; - ULONGLONG FileSize = 0; - size_t nAllocateBytes; - - // Notify the user - if(pLogger != NULL) - pLogger->PrintProgress("Loading local file ..."); - - // Attempt to open the file - pStream = FileStream_OpenFile(szFileName, STREAM_FLAG_READ_ONLY); - if(pStream == NULL) - { - if(pLogger != NULL && bMustSucceed == true) - pLogger->PrintError(_T("Open failed: %s"), szFileName); - return NULL; - } - - // Verify the size - FileStream_GetSize(pStream, &FileSize); - if((FileSize >> 0x20) == 0) - { - // Allocate space for the file - nAllocateBytes = sizeof(FILE_DATA) + (size_t)FileSize; - pFileData = (PFILE_DATA)STORM_ALLOC(BYTE, nAllocateBytes); - if(pFileData != NULL) - { - // Make sure it;s properly zeroed - memset(pFileData, 0, nAllocateBytes); - pFileData->dwFileSize = (DWORD)FileSize; - - // Load to memory - if(!FileStream_Read(pStream, NULL, pFileData->FileData, pFileData->dwFileSize)) - { - STORM_FREE(pFileData); - pFileData = NULL; - } - } - } - - FileStream_Close(pStream); - return pFileData; -} - static DWORD LoadLocalFileMD5(TLogHelper * pLogger, LPCTSTR szFileFullName, LPBYTE md5_file_local) { PFILE_DATA pFileData; @@ -1834,10 +1929,6 @@ static DWORD AddFileToMpq( pLogger->PrintError("Unexpected result from SFileCreateFile(%s)", szFileName); dwErrCode = ERROR_CAN_NOT_COMPLETE; } - else - { - dwErrCode = ERROR_SUCCESS; - } } return dwErrCode; } @@ -1989,7 +2080,7 @@ static DWORD TestOnLocalListFile_Read(TLogHelper & Logger, HANDLE hFile) static DWORD TestOnLocalListFile(LPCTSTR szPlainName) { - TLogHelper Logger("LocalListFile", szPlainName); + TLogHelper Logger("TestLiFiSearch", szPlainName); SFILE_FIND_DATA sf; HANDLE hFile; HANDLE hFind; @@ -2066,7 +2157,7 @@ static DWORD TestReadFile_MasterMirror(LPCTSTR szMirrorName, LPCTSTR szMasterNam { TFileStream * pStream1; // Master file TFileStream * pStream2; // Mirror file - TLogHelper Logger("OpenMirrorFile", szMirrorName); + TLogHelper Logger("TestFileMirror", szMirrorName); TCHAR szMirrorPath[MAX_PATH + MAX_PATH]; TCHAR szMasterPath[MAX_PATH]; DWORD dwProvider = 0; @@ -2111,7 +2202,7 @@ static DWORD TestReadFile_MasterMirror(LPCTSTR szMirrorName, LPCTSTR szMasterNam static DWORD TestFileStreamOperations(LPCTSTR szPlainName, DWORD dwStreamFlags) { TFileStream * pStream = NULL; - TLogHelper Logger("FileStreamTest", szPlainName); + TLogHelper Logger("TestFileStream", szPlainName); ULONGLONG ByteOffset; ULONGLONG FileSize = 0; TCHAR szFullPath[MAX_PATH]; @@ -2496,7 +2587,7 @@ static DWORD TestOpenArchive( DWORD dwFlags, // Test flags. Lower bits contains the number of files const void * pExtra) // Extra parameter { - TLogHelper Logger("TestMpq", szMpqName1); + TLogHelper Logger("TestReadingMpq", szMpqName1); HANDLE hMpq = NULL; DWORD dwExpectedFileCount = 0; DWORD dwSearchFlags = 0; @@ -2564,7 +2655,7 @@ static DWORD TestOpenArchive( } // Reset error code, if the failure is expected - if((dwErrCode != ERROR_SUCCESS) && (hMpq == NULL) && (dwFlags & TFLG_WILL_FAIL)) + if((dwErrCode != ERROR_SUCCESS || hMpq == NULL) && (dwFlags & TFLG_WILL_FAIL)) SetLastError(dwErrCode = ERROR_SUCCESS); // Cleanup and exit @@ -2616,9 +2707,9 @@ static void WINAPI CompactCallback(void * pvUserData, DWORD dwWork, ULONGLONG By if(szWork != NULL) { if(pLogger != NULL) - pLogger->PrintProgress("%s (%I64u of %I64u) ...", szWork, BytesDone, TotalBytes); + pLogger->PrintProgress("%s " fmt_X_of_Y_a " ...", szWork, BytesDone, TotalBytes); else - printf("%s (" fmt_I64u_a " of " fmt_I64u_a ") ... \r", szWork, BytesDone, TotalBytes); + printf("%s " fmt_X_of_Y_a " ... \r", szWork, BytesDone, TotalBytes); } } @@ -2643,7 +2734,7 @@ static DWORD TestReopenArchive( LPCSTR szExpectedHash, // Expected name+data hash DWORD dwFlags) // Test flags. Lower bits contains the number of files { - TLogHelper Logger("ReopenMpqTest", szMpqName1); + TLogHelper Logger("Test_ReopenMpq", szMpqName1); ULONGLONG PreMpqDataSize = (dwFlags & TFLG_ADD_USER_DATA) ? 0x400 : 0; ULONGLONG UserDataSize = (dwFlags & TFLG_ADD_USER_DATA) ? 0x531 : 0; LPCTSTR szCopyName = _T("StormLibTest_Reopened.mpq"); @@ -2713,7 +2804,7 @@ static DWORD TestReopenArchive( static DWORD TestOpenArchive_SignatureTest(LPCTSTR szPlainName, LPCTSTR szOriginalName, DWORD dwFlags) { - TLogHelper Logger("SignatureTest", szPlainName); + TLogHelper Logger("Test_Signature", szPlainName); HANDLE hMpq; DWORD dwCreateFlags = MPQ_CREATE_LISTFILE | MPQ_CREATE_ATTRIBUTES | MPQ_FORMAT_VERSION_1; DWORD dwErrCode = ERROR_SUCCESS; @@ -2764,7 +2855,7 @@ static DWORD TestOpenArchive_SignatureTest(LPCTSTR szPlainName, LPCTSTR szOrigin static DWORD TestOpenArchive_CompactArchive(LPCTSTR szPlainName, LPCTSTR szCopyName, DWORD bAddUserData) { - TLogHelper Logger("CompactMpqTest", szPlainName); + TLogHelper Logger("TestCompactMpq", szPlainName); ULONGLONG PreMpqDataSize = (bAddUserData) ? 0x400 : 0; ULONGLONG UserDataSize = (bAddUserData) ? 0x531 : 0; HANDLE hMpq; @@ -2844,7 +2935,7 @@ static DWORD TestOpenArchive_CompactArchive(LPCTSTR szPlainName, LPCTSTR szCopyN static DWORD TestOpenArchive_AddFile(LPCTSTR szMpqName, DWORD dwFlags) { - TLogHelper Logger("AddFileToMpqTest", szMpqName); + TLogHelper Logger("TestAddFileToMpq", szMpqName); PFILE_DATA pFileData = NULL; LPCTSTR szBackupMpq = (dwFlags & TFLAG_REOPEN) ? _T("StormLibTest_Reopened.mpq") : szMpqName; LPCSTR szFileName = "AddedFile001.txt"; @@ -2905,93 +2996,6 @@ static DWORD TestOpenArchive_AddFile(LPCTSTR szMpqName, DWORD dwFlags) return dwErrCode; } - -static DWORD ForEachFile_VerifyFileChecksum(LPCTSTR szFullPath) -{ - PFILE_DATA pFileData; - TCHAR * szExtension; - TCHAR szShaFileName[MAX_PATH + 1]; - TCHAR szSha1Text[0x40]; - char szSha1TextA[0x40]; - DWORD dwErrCode = ERROR_SUCCESS; - - // Try to load the file with the SHA extension - StringCopy(szShaFileName, _countof(szShaFileName), szFullPath); - szExtension = _tcsrchr(szShaFileName, '.'); - if(szExtension == NULL) - return ERROR_SUCCESS; - - // Skip .SHA and .TXT files - if(!_tcsicmp(szExtension, _T(".sha")) || !_tcsicmp(szExtension, _T(".txt"))) - return ERROR_SUCCESS; - - // Load the local file to memory - _tcscpy(szExtension, _T(".sha")); - pFileData = LoadLocalFile(NULL, szShaFileName, false); - if(pFileData != NULL) - { - TLogHelper Logger("VerifyFileHash"); - - // Calculate SHA1 of the entire file - dwErrCode = CalculateFileSha1(&Logger, szFullPath, szSha1Text); - if(dwErrCode == ERROR_SUCCESS) - { - // Compare with what we loaded from the file - if(pFileData->dwFileSize >= (SHA1_DIGEST_SIZE * 2)) - { - // Compare the SHA1 - StringCopy(szSha1TextA, _countof(szSha1TextA), szSha1Text); - if(_strnicmp(szSha1TextA, (char *)pFileData->FileData, (SHA1_DIGEST_SIZE * 2))) - { - SetLastError(dwErrCode = ERROR_FILE_CORRUPT); - Logger.PrintError(_T("File CRC check failed: %s"), szFullPath); - } - } - } - - STORM_FREE(pFileData); - } - - return dwErrCode; -} - -// Opens a found archive -static DWORD ForEachFile_OpenArchive(LPCTSTR szFullPath) -{ - HANDLE hMpq = NULL; - DWORD dwFileCount = 0; - DWORD dwErrCode = ERROR_SUCCESS; - - // Check if it's a MPQ file type - if(IsMpqExtension(szFullPath)) - { - TLogHelper Logger("OpenEachMpqTest", GetShortPlainName(szFullPath)); - - // Open the MPQ name - dwErrCode = OpenExistingArchive(&Logger, szFullPath, 0, &hMpq); - if(dwErrCode == ERROR_AVI_FILE || dwErrCode == ERROR_FILE_CORRUPT || dwErrCode == ERROR_BAD_FORMAT) - return ERROR_SUCCESS; - - // Search the archive and load every file - if(dwErrCode == ERROR_SUCCESS) - { - dwErrCode = SearchArchive(&Logger, hMpq, 0, &dwFileCount); - SFileCloseArchive(hMpq); - } - - // Show warning if no files found - if(dwFileCount == 0) - { - Logger.PrintMessage("Warning: no files in the archive"); - } - } - - // Correct some errors - if(dwErrCode == ERROR_FILE_CORRUPT || dwErrCode == ERROR_FILE_INCOMPLETE) - return ERROR_SUCCESS; - return dwErrCode; -} - static DWORD TestCreateArchive_EmptyMpq(LPCTSTR szPlainName, DWORD dwCreateFlags) { TLogHelper Logger("CreateEmptyMpq", szPlainName); @@ -3027,7 +3031,7 @@ static DWORD TestCreateArchive_EmptyMpq(LPCTSTR szPlainName, DWORD dwCreateFlags static DWORD TestCreateArchive_TestGaps(LPCTSTR szPlainName) { - TLogHelper Logger("CreateGapsTest", szPlainName); + TLogHelper Logger("TestCreateGaps", szPlainName); ULONGLONG ByteOffset1 = 0xFFFFFFFF; ULONGLONG ByteOffset2 = 0xEEEEEEEE; HANDLE hMpq = NULL; @@ -3100,7 +3104,7 @@ static DWORD TestCreateArchive_TestGaps(LPCTSTR szPlainName) static DWORD TestCreateArchive_NonStdNames(LPCTSTR szPlainName) { - TLogHelper Logger("NonStdNamesTest", szPlainName); + TLogHelper Logger("TestNonStdNames", szPlainName); HANDLE hMpq = NULL; DWORD dwErrCode = ERROR_SUCCESS; @@ -3167,7 +3171,7 @@ static DWORD TestCreateArchive_MpqEditor(LPCTSTR szPlainName, LPCSTR szFileName) static DWORD TestCreateArchive_FillArchive(LPCTSTR szPlainName, DWORD dwCreateFlags) { - TLogHelper Logger("CreateFullMpq", szPlainName); + TLogHelper Logger("TestCreateFull", szPlainName); LPCSTR szFileData = "TestCreateArchive_FillArchive: Testing file data"; char szFileName[MAX_PATH]; HANDLE hMpq = NULL; @@ -3375,7 +3379,7 @@ static DWORD TestCreateArchive_UnicodeNames() static DWORD TestCreateArchive_FileFlagTest(LPCTSTR szPlainName) { - TLogHelper Logger("FileFlagTest", szPlainName); + TLogHelper Logger("TestFileFlag", szPlainName); HANDLE hMpq = NULL; // Handle of created archive TCHAR szFileName1[MAX_PATH]; TCHAR szFileName2[MAX_PATH]; @@ -3532,9 +3536,9 @@ static DWORD TestCreateArchive_FileFlagTest(LPCTSTR szPlainName) static DWORD TestCreateArchive_WaveCompressionsTest(LPCTSTR szPlainName, LPCTSTR szWaveFile) { - TLogHelper Logger("CompressionsTest", szPlainName); + TLogHelper Logger("TestCompressions", szPlainName); HANDLE hMpq = NULL; // Handle of created archive - TCHAR szFileName[MAX_PATH]; // Source file to be added + TCHAR szFileName[MAX_PATH]; // Source file to be added char szArchivedName[MAX_PATH]; DWORD dwCmprCount = sizeof(WaveCompressions) / sizeof(DWORD); DWORD dwAddedFiles = 0; @@ -3681,7 +3685,7 @@ static DWORD TestCreateArchive_ListFilePos(LPCTSTR szPlainName) static DWORD TestCreateArchive_BigArchive(LPCTSTR szPlainName) { - TLogHelper Logger("BigMpqTest", szPlainName); + TLogHelper Logger("TestBigArchive", szPlainName); HANDLE hMpq = NULL; // Handle of created archive TCHAR szLocalFileName[MAX_PATH]; char szArchivedName[MAX_PATH]; @@ -3736,7 +3740,7 @@ static DWORD TestCreateArchive_BigArchive(LPCTSTR szPlainName) // "MPQ_2014_v4_Heroes_Replay.MPQ", "AddFile-replay.message.events" static DWORD TestModifyArchive_ReplaceFile(LPCTSTR szMpqPlainName, LPCTSTR szFilePlainName) { - TLogHelper Logger("ModifyTest", szMpqPlainName); + TLogHelper Logger("TestModifyMpq", szMpqPlainName); HANDLE hMpq = NULL; TCHAR szFileFullName[MAX_PATH]; TCHAR szMpqFullName[MAX_PATH]; @@ -4055,6 +4059,9 @@ static const TEST_INFO Test_OpenMpqs[] = {_T("mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE"), NULL, "10e4dcdbe95b7ad731c563ec6b71bc16", 82}, // Encrypted archive from Starcraft II installer {_T("part-file://MPQ_2010_v2_HashTableCompressed.MPQ.part"),NULL, "d41d8cd98f00b204e9800998ecf8427e", 14263}, // Partial MPQ with compressed hash table {_T("blk4-file://streaming/model.MPQ.0"), NULL, "e06b00efb2fc7e7469dd8b3b859ae15d", 39914}, // Archive that is merged with multiple files + {_T("MPQ_2023_v2_MemoryCorruption.SC2Replay"), NULL, "4cf5021aa272298e64712a378a50df44", 10}, // MPQ archive v 2.0, archive size is wrong + {_T("MPQ_2023_v1_StarcraftMap.scm"), NULL, "7830c51700697dd3c175f086a3157b29", 4}, // StarCraft map from StarCraft: Brood War 1.16 + {_T("MPQ_2023_v1_BroodWarMap.scx"), NULL, "dd3afa3c2f5e562ce3ca91c0c605a71f", 3}, // Brood War map from StarCraft: Brood War 1.16 // Protected archives {_T("MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x"), NULL, "b900364cc134a51ddeca21a13697c3ca", 79}, @@ -4164,7 +4171,7 @@ static const TEST_INFO Test_Signature[] = //----------------------------------------------------------------------------- // Main -//#define TEST_COMMAND_LINE +#define TEST_COMMAND_LINE #define TEST_LOCAL_LISTFILE #define TEST_STREAM_OPERATIONS #define TEST_MASTER_MIRROR @@ -4183,20 +4190,29 @@ int _tmain(int argc, TCHAR * argv[]) // Initialize storage and mix the random number generator printf("==== Test Suite for StormLib version %s ====\n", STORMLIB_VERSION_STRING); dwErrCode = InitializeMpqDirectory(argv, argc); - - // Check creation of the MPQ with LZMA compression - LPCTSTR szArchiveName = _T("e:\\MemoryCorruption.SC2Replay"); +/* + // Check opening of a MPQ + LPCTSTR szArchiveName = _T("e:\\Volcanis.scm"); + LPBYTE pbBuffer = NULL; HANDLE hFile = NULL; HANDLE hMpq = NULL; -/* + DWORD dwFileSize; + if(SFileOpenArchive(szArchiveName, 0, 0, &hMpq)) { - if(SFileOpenFileEx(hMpq, "DlgSearchFile.cpp", 0, &hFile)) + if(SFileOpenFileEx(hMpq, "staredit\\scenario.chk", 0, &hFile)) { - DWORD dwBytesRead = 0; - BYTE Buffer[0x100]; + if((dwFileSize = SFileGetFileSize(hFile, NULL)) != NULL) + { + if((pbBuffer = STORM_ALLOC(BYTE, dwFileSize)) != NULL) + { + DWORD dwBytesRead = 0; - SFileReadFile(hFile, Buffer, sizeof(Buffer), &dwBytesRead, NULL); + SFileReadFile(hFile, pbBuffer, dwFileSize, &dwBytesRead, NULL); + assert(dwBytesRead == dwFileSize); + STORM_FREE(pbBuffer); + } + } SFileCloseFile(hFile); } SFileCloseArchive(hMpq); @@ -4205,9 +4221,9 @@ int _tmain(int argc, TCHAR * argv[]) #ifdef TEST_COMMAND_LINE // Test-open MPQs from the command line. They must be plain name // and must be placed in the Test-MPQs folder - for(int i = 2; i < argc; i++) + for(int i = 1; i < argc; i++) { - TestOpenArchive(argv[i], Bliz, 0, "Scripts\\War3map.j", NULL); + TestOpenArchive(argv[i], NULL, NULL, 0, &LfBliz); } #endif // TEST_COMMAND_LINE @@ -4287,11 +4303,7 @@ int _tmain(int argc, TCHAR * argv[]) // Verify SHA1 of each MPQ that we have in the list if(dwErrCode == ERROR_SUCCESS) - dwErrCode = FindFiles(ForEachFile_VerifyFileChecksum, szMpqSubDir); - - // Open every MPQ that we have in the storage - if(dwErrCode == ERROR_SUCCESS) - dwErrCode = FindFiles(ForEachFile_OpenArchive, NULL); + dwErrCode = VerifyFileHashes(szMpqSubDir); // Create an empty archive v2 if(dwErrCode == ERROR_SUCCESS) diff --git a/test/TLogHelper.cpp b/test/TLogHelper.cpp index 84dc0aa..d96108f 100644 --- a/test/TLogHelper.cpp +++ b/test/TLogHelper.cpp @@ -28,6 +28,8 @@ #define fmt_I64X_a "%llX" #endif +#define fmt_X_of_Y_a "(" fmt_I64u_a " of " fmt_I64u_a ")" + #ifdef __CASCLIB_SELF__ #define TEST_MIN CASCLIB_MIN #define TEST_PRINT_PREFIX false diff --git a/test/stormlib-test-001-linux.txt b/test/stormlib-test-001-linux.txt new file mode 100644 index 0000000..3c193ca --- /dev/null +++ b/test/stormlib-test-001-linux.txt @@ -0,0 +1,136 @@ +==== Test Suite for StormLib version 9.24 ==== +InitWorkFolder: Work directory /media/ladik/MPQs (default) +TestLiFiSearch (FLAT-MAP:ListFile_Blizzard.txt) succeeded. +TestLiFiSearch (ListFile_Blizzard.txt) succeeded. +TestFileStream (MPQ_2013_v4_alternate-original.MPQ) succeeded. +TestFileStream (MPQ_2013_v4_alternate-original.MPQ) succeeded. +TestFileStream (MPQ_2013_v4_alternate-complete.MPQ) succeeded. +TestFileStream (part-file://MPQ_2009_v2_WoW_patch.MPQ.part) succeeded. +TestFileStream (blk4-file://streaming/model.MPQ.0) succeeded. +TestFileStream (mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. +TestFileMirror (part-file://MPQ_2009_v1_patch-created.MPQ.part) succeeded. +TestFileMirror (part-file://MPQ_2009_v1_patch-partial.MPQ.part) succeeded. +TestFileMirror (part-file://MPQ_2009_v1_patch-complete.MPQ.part) succeeded. +TestFileMirror (MPQ_2013_v4_alternate-created.MPQ) succeeded. +TestFileMirror (MPQ_2013_v4_alternate-incomplete.MPQ) succeeded. +TestFileMirror (MPQ_2013_v4_alternate-complete.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_patch_rt_SC1B.mpq) succeeded. +TestReadingMpq (MPQ_1997_v1_StarDat_SC1B.mpq) succeeded. +TestReadingMpq (MPQ_1997_v1_INSTALL_SC1B.EXE_) succeeded. +TestReadingMpq: Warning: CRC32 error on (signature) +TestReadingMpq: Warning: CRC32 error on (signature) +TestReadingMpq (MPQ_2016_v1_D2XP_IX86_1xx_114a.mpq) succeeded. +TestReadingMpq (MPQ_2018_v1_icon_error.w3m) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_STANDARD.SNP) succeeded. +TestReadingMpq (MPQ_2012_v2_EmptyMpq.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_EmptyMpq.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_patch-base-16357.MPQ) succeeded. +TestReadingMpq (MPQ_2011_v4_InvalidHetEntryCount.MPQ) succeeded. +TestReadingMpq (MPQ_2002_v1_BlockTableCut.MPQ) succeeded. +TestReadingMpq (MPQ_2010_v2_HasUserData.s2ma) succeeded. +TestReadingMpq: Warning: CRC32 error on (listfile) +TestReadingMpq: Warning: CRC32 error on (listfile) +TestReadingMpq: Warning: CRC32 error on File00000003.xxx +TestReadingMpq (MPQ_2014_v1_AttributesOneEntryLess.w3x) succeeded. +TestReadingMpq (MPQ_2020_v1_AHF04patch.mix) succeeded. +TestReadingMpq (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. +TestReadingMpq (mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. +TestReadingMpq (part-file://MPQ_2010_v2_HashTableCompressed.MPQ.part) succeeded. +TestReadingMpq (blk4-file://streaming/model.MPQ.0) succeeded. +TestReadingMpq: Warning: CRC32 error on replay.message.events +TestReadingMpq (MPQ_2023_v2_MemoryCorruption.SC2Replay) succeeded. +TestReadingMpq (MPQ_2023_v1_StarcraftMap.scm) succeeded. +TestReadingMpq (MPQ_2023_v1_BroodWarMap.scx) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_InvalidMpqFormat.w3x) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_Spazzler.w3x) succeeded. +TestReadingMpq (MPQ_2014_v1_ProtectedMap_Spazzler2.w3x) succeeded. +TestReadingMpq (MPQ_2014_v1_ProtectedMap_Spazzler3.w3x) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_BOBA.w3m) succeeded. +TestReadingMpq (MPQ_2015_v1_ProtectedMap_KangTooJee.w3x) succeeded. +TestReadingMpq (MPQ_2015_v1_ProtectedMap_Somj2hM16.w3x) succeeded. +TestReadingMpq (MPQ_2015_v1_ProtectedMap_Spazy.w3x) succeeded. +TestReadingMpq (MPQ_2015_v1_MessListFile.mpq) succeeded. +TestReadingMpq (MPQ_2016_v1_ProtectedMap_TableSizeOverflow.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_ProtectedMap_HashOffsIsZero.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_ProtectedMap_Somj2.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_WME4_4.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_SP_(4)Adrenaline.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_ProtectedMap_1.4.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_KoreanFile.w3m) succeeded. +TestReadingMpq (MPQ_2017_v1_Eden_RPG_S2_2.5J.w3x) succeeded. +TestReadingMpq (MPQ_2017_v1_BigDummyFiles.w3x) succeeded. +TestReadingMpq (MPQ_2017_v1_TildeInFileName.mpq) succeeded. +TestReadingMpq (MPQ_2018_v1_EWIX_v8_7.w3x) succeeded. +TestReadingMpq (MPQ_2020_v4_FakeMpqHeaders.SC2Mod) succeeded. +TestReadingMpq (MPQ_2020_v4_NP_Protect_1.s2ma) succeeded. +TestReadingMpq (MPQ_2020_v4_NP_Protect_2.s2ma) succeeded. +TestReadingMpq (MPQ_2015_v1_flem1.w3x) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.w3x) succeeded. +TestReadingMpq (MPQ_2021_v1_CantExtractCHK.scx) succeeded. +TestReadingMpq (MPQ_2022_v1_Sniper.scx) succeeded. +TestReadingMpq (MPQ_2022_v1_OcOc_Bound_2.scx) succeeded. +TestReadingMpq (MPQ_2020_v1_HS0.1.asi) succeeded. +TestReadingMpq (MPQ_2022_v1_hs0.8.asi) succeeded. +TestReadingMpq (MPQ_2022_v1_MoeMoeMod.asi) succeeded. +TestReadingMpq (MPx_2013_v1_LongwuOnline.mpk) succeeded. +TestReadingMpq (MPx_2013_v1_WarOfTheImmortals.sqp) succeeded. +TestReadingMpq (MPx_2022_v1_Music.mpk) succeeded. +TestReadingMpq (MPx_2022_v1_Scp.mpk) succeeded. +TestReadingMpq (MPx_2022_v1_UI.mpk) succeeded. +TestReadingMpq (MPQ_1998_v1_StarCraft.mpq) succeeded. +TestReadingMpq (MPQ_2012_v4_OldWorld.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_world.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_locale-enGB.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_Base1.SC2Data) succeeded. +TestReadingMpq (MPQ_2013_v4_Mods#Core.SC2Mod#enGB.SC2Assets) succeeded. +TestReadingMpq (MPQ_2013_v4_Base1.SC2Data) succeeded. +TestReadingMpq (MPQ_2013_v4_Base3.SC2Maps) succeeded. +TestReadingMpq (MPQ_2013_v4_Mods#Liberty.SC2Mod#enGB.SC2Data) succeeded. +TestReadingMpq (MPQ_2014_v4_base-Win.MPQ) succeeded. +TestReadingMpq (MPQ_2014_v4_base-Win.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_STANDARD.SNP) succeeded. +TestReadingMpq (MPQ_1999_v1_WeakSignature.exe) succeeded. +TestReadingMpq (MPQ_2003_v1_WeakSignatureEmpty.exe) succeeded. +TestReadingMpq (MPQ_2002_v1_StrongSignature.w3m) succeeded. +TestReadingMpq (MPQ_1998_v1_StarDat.mpq) succeeded. +TestReadingMpq (MPQ_1999_v1_WeakSignature.exe) succeeded. +TestReadingMpq (flat-file://streaming/model.MPQ.0) succeeded. +TestReadingMpq (MPQ_2013_vX_Battle.net.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. +TestReadingMpq (MPQ_2002_v1_StrongSignature.w3m) succeeded. +TestReadingMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. +Test_ReopenMpq (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. +Test_ReopenMpq (MPQ_2016_v1_00000.pak) succeeded. +Test_ReopenMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. +Test_ReopenMpq (MPQ_2013_v4_expansion1.MPQ) succeeded. +Test_ReopenMpq (MPQ_2014_v1_out1.w3x) succeeded. +Test_ReopenMpq (MPQ_2014_v1_out2.w3x) succeeded. +Test_ReopenMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. +Test_ReopenMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. +Test_Signature (MPQ_1999_v1_WeakSigned1.mpq) succeeded. +Test_Signature (MPQ_1999_v1_WeakSigned1.mpq) succeeded. +TestVerifyHash succeeded. +CreateEmptyMpq (StormLibTest_EmptyMpq_v2.mpq) succeeded. +CreateEmptyMpq (StormLibTest_EmptyMpq_v4.mpq) succeeded. +TestCreateGaps (StormLibTest_GapsTest.mpq) succeeded. +TestNonStdNames (StormLibTest_NonStdNames.mpq) succeeded. +CreateMpqEditor (StormLibTest_MpqEditorTest.mpq) succeeded. +TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. +TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. +TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. +TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. +IncMaxFileCount (StormLibTest_IncMaxFileCount.mpq) succeeded. +MpqUnicodeName succeeded. +TestFileFlag (StormLibTest_FileFlagTest.mpq) succeeded. +TestCompressions: Warning: CRC32 error on WaveFile_01.wav +TestCompressions: Warning: CRC32 error on WaveFile_02.wav +TestCompressions (StormLibTest_AddWaveMonoBadTest.mpq) succeeded. +TestCompressions: Warning: CRC32 error on WaveFile_01.wav +TestCompressions: Warning: CRC32 error on WaveFile_02.wav +ListFilePos (StormLibTest_ListFilePos.mpq) succeeded. +TestBigArchive (StormLibTest_BigArchive_v4.mpq) succeeded. +TestModifyMpq (MPQ_2014_v4_Base.StormReplay) succeeded. +TestModifyMpq (MPQ_2022_v1_v4.329.w3x) succeeded. \ No newline at end of file diff --git a/test/stormlib-test-001.txt b/test/stormlib-test-001.txt index 70d5325..b8ceeac 100644 --- a/test/stormlib-test-001.txt +++ b/test/stormlib-test-001.txt @@ -1,2370 +1,136 @@ -Microsoft Windows [Version 10.0.19045.2486] -(c) Microsoft Corporation. All rights reserved. - -E:\Ladik\Appdir\StormLib\bin\StormLib_test\x64\Release>StormLib_test.exe ==== Test Suite for StormLib version 9.24 ==== -InitWorkDir: Work directory \Multimedia\MPQs (default) -LocalListFile (FLAT-MAP:ListFile_Blizzard.txt) succeeded. -LocalListFile (ListFile_Blizzard.txt) succeeded. -FileStreamTest (MPQ_2013_v4_alternate-original.MPQ) succeeded. -FileStreamTest (MPQ_2013_v4_alternate-original.MPQ) succeeded. -FileStreamTest (MPQ_2013_v4_alternate-complete.MPQ) succeeded. -FileStreamTest (part-file://MPQ_2009_v2_WoW_patch.MPQ.part) succeeded. -FileStreamTest (blk4-file://streaming/model.MPQ.0) succeeded. -FileStreamTest (mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. -OpenMirrorFile (part-file://MPQ_2009_v1_patch-created.MPQ.part) succeeded. -OpenMirrorFile (part-file://MPQ_2009_v1_patch-partial.MPQ.part) succeeded. -OpenMirrorFile (part-file://MPQ_2009_v1_patch-complete.MPQ.part) succeeded. -OpenMirrorFile (MPQ_2013_v4_alternate-created.MPQ) succeeded. -OpenMirrorFile (MPQ_2013_v4_alternate-incomplete.MPQ) succeeded. -OpenMirrorFile (MPQ_2013_v4_alternate-complete.MPQ) succeeded. -TestMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -TestMpq (MPQ_1997_v1_patch_rt_SC1B.mpq) succeeded. -TestMpq (MPQ_1997_v1_StarDat_SC1B.mpq) succeeded. -TestMpq (MPQ_1997_v1_INSTALL_SC1B.EXE_) succeeded. -TestMpq: Warning: CRC32 error on (signature) -TestMpq: Warning: CRC32 error on (signature) -TestMpq (MPQ_2016_v1_D2XP_IX86_1xx_114a.mpq) succeeded. -TestMpq (MPQ_2018_v1_icon_error.w3m) succeeded. -TestMpq (MPQ_1997_v1_Diablo1_STANDARD.SNP) succeeded. -TestMpq (MPQ_2012_v2_EmptyMpq.MPQ) succeeded. -TestMpq (MPQ_2013_v4_EmptyMpq.MPQ) succeeded. -TestMpq (MPQ_2013_v4_patch-base-16357.MPQ) succeeded. -TestMpq (MPQ_2011_v4_InvalidHetEntryCount.MPQ) succeeded. -TestMpq (MPQ_2002_v1_BlockTableCut.MPQ) succeeded. -TestMpq (MPQ_2010_v2_HasUserData.s2ma) succeeded. -TestMpq: Warning: CRC32 error on (listfile) -TestMpq: Warning: CRC32 error on (listfile) -TestMpq: Warning: CRC32 error on File00000003.xxx -TestMpq (MPQ_2014_v1_AttributesOneEntryLess.w3x) succeeded. -TestMpq (MPQ_2020_v1_AHF04patch.mix) succeeded. -TestMpq (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. -TestMpq (mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. -TestMpq (part-file://MPQ_2010_v2_HashTableCompressed.MPQ.part) succeeded. -TestMpq (blk4-file://streaming/model.MPQ.0) succeeded. -TestMpq (MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x) succeeded. -TestMpq (MPQ_2002_v1_ProtectedMap_InvalidMpqFormat.w3x) succeeded. -TestMpq (MPQ_2002_v1_ProtectedMap_Spazzler.w3x) succeeded. -TestMpq (MPQ_2014_v1_ProtectedMap_Spazzler2.w3x) succeeded. -TestMpq (MPQ_2014_v1_ProtectedMap_Spazzler3.w3x) succeeded. -TestMpq (MPQ_2002_v1_ProtectedMap_BOBA.w3m) succeeded. -TestMpq (MPQ_2015_v1_ProtectedMap_KangTooJee.w3x) succeeded. -TestMpq (MPQ_2015_v1_ProtectedMap_Somj2hM16.w3x) succeeded. -TestMpq (MPQ_2015_v1_ProtectedMap_Spazy.w3x) succeeded. -TestMpq (MPQ_2015_v1_MessListFile.mpq) succeeded. -TestMpq (MPQ_2016_v1_ProtectedMap_TableSizeOverflow.w3x) succeeded. -TestMpq (MPQ_2016_v1_ProtectedMap_HashOffsIsZero.w3x) succeeded. -TestMpq (MPQ_2016_v1_ProtectedMap_Somj2.w3x) succeeded. -TestMpq (MPQ_2016_v1_WME4_4.w3x) succeeded. -TestMpq (MPQ_2016_v1_SP_(4)Adrenaline.w3x) succeeded. -TestMpq (MPQ_2016_v1_ProtectedMap_1.4.w3x) succeeded. -TestMpq (MPQ_2016_v1_KoreanFile.w3m) succeeded. -TestMpq (MPQ_2017_v1_Eden_RPG_S2_2.5J.w3x) succeeded. -TestMpq (MPQ_2017_v1_BigDummyFiles.w3x) succeeded. -TestMpq (MPQ_2017_v1_TildeInFileName.mpq) succeeded. -TestMpq (MPQ_2018_v1_EWIX_v8_7.w3x) succeeded. -TestMpq (MPQ_2020_v4_FakeMpqHeaders.SC2Mod) succeeded. -TestMpq (MPQ_2020_v4_NP_Protect_1.s2ma) succeeded. -TestMpq (MPQ_2020_v4_NP_Protect_2.s2ma) succeeded. -TestMpq (MPQ_2015_v1_flem1.w3x) succeeded. -TestMpq (MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.w3x) succeeded. -TestMpq (MPQ_2021_v1_CantExtractCHK.scx) succeeded. -TestMpq (MPQ_2022_v1_Sniper.scx) succeeded. -TestMpq (MPQ_2022_v1_OcOc_Bound_2.scx) succeeded. -TestMpq (MPQ_2020_v1_HS0.1.asi) succeeded. -TestMpq (MPQ_2022_v1_hs0.8.asi) succeeded. -TestMpq (MPQ_2022_v1_MoeMoeMod.asi) succeeded. -TestMpq (MPx_2013_v1_LongwuOnline.mpk) succeeded. -TestMpq (MPx_2013_v1_WarOfTheImmortals.sqp) succeeded. -TestMpq (MPx_2022_v1_Music.mpk) succeeded. -TestMpq (MPx_2022_v1_Scp.mpk) succeeded. -TestMpq (MPx_2022_v1_UI.mpk) succeeded. -TestMpq (MPQ_1998_v1_StarCraft.mpq) succeeded. -TestMpq (MPQ_2012_v4_OldWorld.MPQ) succeeded. -TestMpq (MPQ_2013_v4_world.MPQ) succeeded. -TestMpq (MPQ_2013_v4_locale-enGB.MPQ) succeeded. -TestMpq (MPQ_2013_v4_Base1.SC2Data) succeeded. -TestMpq (MPQ_2013_v4_Mods#Core.SC2Mod#enGB.SC2Assets) succeeded. -TestMpq (MPQ_2013_v4_Base1.SC2Data) succeeded. -TestMpq (MPQ_2013_v4_Base3.SC2Maps) succeeded. -TestMpq (MPQ_2013_v4_Mods#Liberty.SC2Mod#enGB.SC2Data) succeeded. -TestMpq (MPQ_2014_v4_base-Win.MPQ) succeeded. -TestMpq (MPQ_2014_v4_base-Win.MPQ) succeeded. -TestMpq (MPQ_1997_v1_Diablo1_STANDARD.SNP) succeeded. -TestMpq (MPQ_1999_v1_WeakSignature.exe) succeeded. -TestMpq (MPQ_2003_v1_WeakSignatureEmpty.exe) succeeded. -TestMpq (MPQ_2002_v1_StrongSignature.w3m) succeeded. -TestMpq (MPQ_1998_v1_StarDat.mpq) succeeded. -TestMpq (MPQ_1999_v1_WeakSignature.exe) succeeded. -TestMpq (flat-file://streaming/model.MPQ.0) succeeded. -TestMpq (MPQ_2013_vX_Battle.net.MPQ) succeeded. -TestMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -TestMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -TestMpq (MPQ_2002_v1_StrongSignature.w3m) succeeded. -TestMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. -ReopenMpqTest (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. -ReopenMpqTest (MPQ_2016_v1_00000.pak) succeeded. -ReopenMpqTest (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. -ReopenMpqTest (MPQ_2013_v4_expansion1.MPQ) succeeded. -ReopenMpqTest (MPQ_2014_v1_out1.w3x) succeeded. -ReopenMpqTest (MPQ_2014_v1_out2.w3x) succeeded. -ReopenMpqTest (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -ReopenMpqTest (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. -SignatureTest (MPQ_1999_v1_WeakSigned1.mpq) succeeded. -SignatureTest (MPQ_1999_v1_WeakSigned1.mpq) succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -VerifyFileHash succeeded. -OpenEachMpqTest ((10)DustwallowKeys.w3m) succeeded. -OpenEachMpqTest (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -OpenEachMpqTest (MPQ_1997_v1_Diablo1_single_0.sv) succeeded. -OpenEachMpqTest (MPQ_1997_v1_patch_rt_SC1B.mpq) succeeded. -OpenEachMpqTest (MPQ_1997_v1_StarDat.mpq) succeeded. -OpenEachMpqTest (MPQ_1997_v1_StarDat_SC1B.mpq) succeeded. -OpenEachMpqTest (MPQ_1998_v1_StarCraft.mpq) succeeded. -OpenEachMpqTest (MPQ_1998_v1_StarDat.mpq) succeeded. -OpenEachMpqTest (MPQ_2002_v1_BlockTableCut.MPQ) succeeded. -OpenEachMpqTest (MPQ_2002_v1_ProtectedMap_BOBA.w3m) succeeded. -OpenEachMpqTest (MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.w3x) succeeded. -OpenEachMpqTest (MPQ_2002_v1_ProtectedMap_InvalidMpqFormat.w3x) succeeded. -OpenEachMpqTest (MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x) succeeded. -OpenEachMpqTest (MPQ_2002_v1_ProtectedMap_Spazzler.w3x) succeeded. -OpenEachMpqTest (MPQ_2002_v1_StrongSignature.w3m) succeeded. -OpenEachMpqTest (MPQ_2009_v1_patch-complete.MPQ.part) succeeded. -OpenEachMpqTest (MPQ_2009_v1_patch-original.MPQ) succeeded. -OpenEachMpqTest (MPQ_2009_v1_patch-partial.MPQ.part) succeeded. -OpenEachMpqTest (MPQ_2009_v2_WoW_patch.MPQ.part) succeeded. -OpenEachMpqTest (MPQ_2010_v2_HashTableCompressed.MPQ.part) succeeded. -OpenEachMpqTest (MPQ_2010_v2_HasUserData.s2ma) succeeded. -OpenEachMpqTest (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. -OpenEachMpqTest (MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. -OpenEachMpqTest (MPQ_2011_v4_InvalidHetEntryCount.MPQ) succeeded. -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest (MPQ_2012_v4_OldWorld.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_alternate-complete.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_alternate-downloaded.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_alternate-incomplete.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_alternate-original.MPQ) succeeded. -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest (MPQ_2013_v4_expansion1.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_locale-enGB.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_patch-base-16357.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. -OpenEachMpqTest (MPQ_2013_v4_world.MPQ) succeeded. -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest (MPQ_2014_v1_AttributesOneEntryLess.w3x) succeeded. -OpenEachMpqTest (MPQ_2014_v1_CompactTest.w3x) succeeded. -OpenEachMpqTest (MPQ_2014_v1_out1.w3x) succeeded. -OpenEachMpqTest (MPQ_2014_v1_out2.w3x) succeeded. -OpenEachMpqTest (MPQ_2014_v1_ProtectedMap_Spazzler2.w3x) succeeded. -OpenEachMpqTest (MPQ_2014_v1_ProtectedMap_Spazzler3.w3x) succeeded. -OpenEachMpqTest (MPQ_2014_v4_base-Win.MPQ) succeeded. -OpenEachMpqTest (MPQ_2015_v1_flem1.w3x) succeeded. -OpenEachMpqTest (MPQ_2015_v1_MessListFile.mpq) succeeded. -OpenEachMpqTest (MPQ_2015_v1_ProtectedMap_KangTooJee.w3x) succeeded. -OpenEachMpqTest (MPQ_2015_v1_ProtectedMap_Somj2hM16.w3x) succeeded. -OpenEachMpqTest (MPQ_2015_v1_ProtectedMap_Spazy.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_AnotherProtectedMap.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_D2XP_IX86_1xx_114a.mpq) succeeded. -OpenEachMpqTest (MPQ_2016_v1_DeathWing_ORPG_v.1.45a.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_KoreanFile.w3m) succeeded. -OpenEachMpqTest (MPQ_2016_v1_ProtectedMap123.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_ProtectedMap_1.4.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_ProtectedMap_HashOffsIsZero.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_ProtectedMap_Somj2.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_ProtectedMap_TableSizeOverflow.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_SP_(4)Adrenaline.w3x) succeeded. -OpenEachMpqTest (MPQ_2016_v1_WME4_4.w3x) succeeded. -OpenEachMpqTest (MPQ_2017_v1_BigDummyFiles.w3x) succeeded. -OpenEachMpqTest (MPQ_2017_v1_Eden_RPG_S2_2.5J.w3x) succeeded. -OpenEachMpqTest (MPQ_2017_v1_TildeInFileName.mpq) succeeded. -OpenEachMpqTest (MPQ_2018_v1_EWIX_v8_7.w3x) succeeded. -OpenEachMpqTest (MPQ_2018_v1_icon_error.w3m) succeeded. -OpenEachMpqTest (MPQ_2020_v1_HS0.1.asi) succeeded. -OpenEachMpqTest (MPQ_2020_v4_FakeMpqHeaders.SC2Mod) succeeded. -OpenEachMpqTest (MPQ_2020_v4_NP_Protect_1.s2ma) succeeded. -OpenEachMpqTest (MPQ_2020_v4_NP_Protect_2.s2ma) succeeded. -OpenEachMpqTest (MPQ_2020_v4_NP_Protect_3.s2ma) succeeded. -OpenEachMpqTest (MPQ_2020_v4_NP_Protect_4.s2ma) succeeded. -OpenEachMpqTest (MPQ_2020_v4_ThreeFakeHeaders.s2ma) succeeded. -OpenEachMpqTest (MPQ_2021_v1_CrossLinkedFiles.w3x) succeeded. -OpenEachMpqTest (MPQ_2021_v4_BzipError.SC2Replay) succeeded. -OpenEachMpqTest (MPQ_2022_v1_hs0.8.asi) succeeded. -OpenEachMpqTest (MPQ_2022_v1_MoeMoeMod.asi) succeeded. -OpenEachMpqTest (MPQ_2022_v1_v4.329.w3x) succeeded. -OpenEachMpqTest (hs-0-3604-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-0-5314-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-5314-5435-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-5435-5506-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-5506-5834-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-5834-6024-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6024-6141-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6141-6187-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6187-6284-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6284-6485-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6485-6898-Win-final.MPQ) succeeded. -OpenEachMpqTest (s1-1998-BroodWar.mpq) succeeded. -OpenEachMpqTest (s2-update-base-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-26147.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-28522.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-30508.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-32283.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-32384.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-34644.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-26147.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-28522.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-30508.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-32283.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-32384.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-34644.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-36281.MPQ) succeeded. -OpenEachMpqTest (wow-update-13164.MPQ) succeeded. -OpenEachMpqTest (wow-update-13205.MPQ) succeeded. -OpenEachMpqTest (wow-update-13287.MPQ) succeeded. -OpenEachMpqTest (wow-update-13329.MPQ) succeeded. -OpenEachMpqTest (wow-update-13596.MPQ) succeeded. -OpenEachMpqTest (wow-update-13623.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-13914.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14007.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14333.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14480.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14545.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14946.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15005.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15050.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16309.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16357.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16516.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16650.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16844.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16965.MPQ) succeeded. -OpenEachMpqTest (wow-update-oldworld-13154.MPQ) succeeded. -OpenEachMpqTest (wow-update-oldworld-13286.MPQ) succeeded. -OpenEachMpqTest (model.MPQ.0) succeeded. -OpenEachMpqTest (DIABDAT.mpq) succeeded. -OpenEachMpqTest (single_0.sv) succeeded. -OpenEachMpqTest (DIABDAT.MPQ) succeeded. -OpenEachMpqTest (hellfire.mpq) succeeded. -OpenEachMpqTest (hfmonk.mpq) succeeded. -OpenEachMpqTest (hfmusic.mpq) succeeded. -OpenEachMpqTest (hfvoice.mpq) succeeded. -OpenEachMpqTest (gs.mpq) succeeded. -OpenEachMpqTest (imp.mpq) succeeded. -OpenEachMpqTest (pic.mpq) succeeded. -OpenEachMpqTest (sndfx.mpq) succeeded. -OpenEachMpqTest (special.mpq) succeeded. -OpenEachMpqTest (patch_rt.mpq) succeeded. -OpenEachMpqTest (StarDat.mpq) succeeded. -OpenEachMpqTest (BrooDat.mpq) succeeded. -OpenEachMpqTest (BroodWar.mpq) succeeded. -OpenEachMpqTest (Patch_rt.mpq) succeeded. -OpenEachMpqTest (StarCraft.mpq) succeeded. -OpenEachMpqTest (StarDat.mpq) succeeded. -OpenEachMpqTest (StardatSW.mpq) succeeded. -OpenEachMpqTest (StarDat_BETA.mpq) succeeded. -OpenEachMpqTest (War2Dat.mpq) succeeded. -OpenEachMpqTest (War2Patch.mpq) succeeded. -OpenEachMpqTest (d2char.mpq) succeeded. -OpenEachMpqTest (d2data.mpq) succeeded. -OpenEachMpqTest (d2exp.mpq) succeeded. -OpenEachMpqTest (d2music.mpq) succeeded. -OpenEachMpqTest (d2sfx.mpq) succeeded. -OpenEachMpqTest (d2speech.mpq) succeeded. -OpenEachMpqTest (d2video.mpq) succeeded. -OpenEachMpqTest (D2XMUSIC.MPQ) succeeded. -OpenEachMpqTest (d2xtalk.mpq) succeeded. -OpenEachMpqTest (d2xvideo.mpq) succeeded. -OpenEachMpqTest (Patch_D2.mpq) succeeded. -OpenEachMpqTest (setup.mpq) succeeded. -OpenEachMpqTest (HumanEd.mpq) succeeded. -OpenEachMpqTest ((10)DustwallowKeys.w3m) succeeded. -OpenEachMpqTest ((10)RagingStream.w3x) succeeded. -OpenEachMpqTest ((4)aaaa.w3x) succeeded. -OpenEachMpqTest (a_tvse_x_1_2_f.w3x) succeeded. -OpenEachMpqTest (Shopping_Maul_ USA 9.10.7.w3x) succeeded. -OpenEachMpqTest (siverrpg_1.9_ver.w3x) succeeded. -OpenEachMpqTest (ACGExternal0.2.asi) succeeded. -OpenEachMpqTest (grandparty.asi) succeeded. -OpenEachMpqTest (HS0.1.asi) succeeded. -OpenEachMpqTest (HS0.5.asi) succeeded. -OpenEachMpqTest (Patch_War3x.mpq) succeeded. -OpenEachMpqTest (Patch_War3_Low.mpq) succeeded. -OpenEachMpqTest (Patch_War3_Med.mpq) succeeded. -OpenEachMpqTest (War3.mpq) succeeded. -OpenEachMpqTest (War3Patch.mpq) succeeded. -OpenEachMpqTest (War3x.mpq) succeeded. -OpenEachMpqTest (War3xlocal.mpq) succeeded. -OpenEachMpqTest (dbc.MPQ) succeeded. -OpenEachMpqTest (fonts.MPQ) succeeded. -OpenEachMpqTest (interface.MPQ) succeeded. -OpenEachMpqTest (misc.MPQ) succeeded. -OpenEachMpqTest (model.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (speech.MPQ) succeeded. -OpenEachMpqTest (texture.MPQ) succeeded. -OpenEachMpqTest (TheramoreDocks.wmo.MPQ) succeeded. -OpenEachMpqTest (Azeroth.wdl.MPQ) succeeded. -OpenEachMpqTest (Azeroth.wdt.MPQ) succeeded. -OpenEachMpqTest (Blackfathom.wdl.MPQ) succeeded. -OpenEachMpqTest (Blackfathom.wdt.MPQ) succeeded. -OpenEachMpqTest (Collin.wdl.MPQ) succeeded. -OpenEachMpqTest (Collin.wdt.MPQ) succeeded. -OpenEachMpqTest (DeadminesInstance.wdl.MPQ) succeeded. -OpenEachMpqTest (DeadminesInstance.wdt.MPQ) succeeded. -OpenEachMpqTest (GnomeragonInstance.wdl.MPQ) succeeded. -OpenEachMpqTest (GnomeragonInstance.wdt.MPQ) succeeded. -OpenEachMpqTest (Kalidar.wdl.MPQ) succeeded. -OpenEachMpqTest (Kalidar.wdt.MPQ) succeeded. -OpenEachMpqTest (Kalimdor.wdl.MPQ) succeeded. -OpenEachMpqTest (Kalimdor.wdt.MPQ) succeeded. -OpenEachMpqTest (Monastery.wdl.MPQ) succeeded. -OpenEachMpqTest (Monastery.wdt.MPQ) succeeded. -OpenEachMpqTest (PVPZone01.wdl.MPQ) succeeded. -OpenEachMpqTest (PVPZone01.wdt.MPQ) succeeded. -OpenEachMpqTest (PVPZone02.wdl.MPQ) succeeded. -OpenEachMpqTest (PVPZone02.wdt.MPQ) succeeded. -OpenEachMpqTest (RazorfenDowns.wdl.MPQ) succeeded. -OpenEachMpqTest (RazorfenDowns.wdt.MPQ) succeeded. -OpenEachMpqTest (RazorfenKraulInstance.wdl.MPQ) succeeded. -OpenEachMpqTest (RazorfenKraulInstance.wdt.MPQ) succeeded. -OpenEachMpqTest (Shadowfang.wdl.MPQ) succeeded. -OpenEachMpqTest (Shadowfang.wdt.MPQ) succeeded. -OpenEachMpqTest (StormwindJail.wdl.MPQ) succeeded. -OpenEachMpqTest (StormwindJail.wdt.MPQ) succeeded. -OpenEachMpqTest (StormwindPrison.wdl.MPQ) succeeded. -OpenEachMpqTest (StormwindPrison.wdt.MPQ) succeeded. -OpenEachMpqTest (SunkenTemple.wdl.MPQ) succeeded. -OpenEachMpqTest (SunkenTemple.wdt.MPQ) succeeded. -OpenEachMpqTest (test.wdl.MPQ) succeeded. -OpenEachMpqTest (test.wdt.MPQ) succeeded. -OpenEachMpqTest (Uldaman.wdl.MPQ) succeeded. -OpenEachMpqTest (Uldaman.wdt.MPQ) succeeded. -OpenEachMpqTest (UnderMine.wdl.MPQ) succeeded. -OpenEachMpqTest (UnderMine.wdt.MPQ) succeeded. -OpenEachMpqTest (WailingCaverns.wdl.MPQ) succeeded. -OpenEachMpqTest (WailingCaverns.wdt.MPQ) succeeded. -OpenEachMpqTest (AltarOfStorms.wmo.MPQ) succeeded. -OpenEachMpqTest (Big_Keep.wmo.MPQ) succeeded. -OpenEachMpqTest (castle01.wmo.MPQ) succeeded. -OpenEachMpqTest (Chapel.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodChapel.wmo.MPQ) succeeded. -OpenEachMpqTest (RedridgeChapel.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodAbandoned_Barn.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodAbandoned_Blacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodAbandoned_HumanTwoStory.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodAbandoned_human_farm.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodAbandoned_Inn.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodAbandoned_lumbermill.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodAbandoned_TownHall_NoWall.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_Barn.wmo.MPQ) succeeded. -OpenEachMpqTest (duskwood_barracks.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_Blacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_HumanTwoStory.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_human_farm.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodFarmHouseburnt.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_Inn.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_lumbermill.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_MageTower.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_Stable.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_TownHall.wmo.MPQ) succeeded. -OpenEachMpqTest (Duskwood_TownHall_NoWall.wmo.MPQ) succeeded. -OpenEachMpqTest (GnomeHut.wmo.MPQ) succeeded. -OpenEachMpqTest (GnomeHutTwoStory.wmo.MPQ) succeeded. -OpenEachMpqTest (goldshireblacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (GoldshireInn.wmo.MPQ) succeeded. -OpenEachMpqTest (GriffonAviary.wmo.MPQ) succeeded. -OpenEachMpqTest (GuardTower.wmo.MPQ) succeeded. -OpenEachMpqTest (RuinedHumanGuardTower01.wmo.MPQ) succeeded. -OpenEachMpqTest (HumanTwoStory.wmo.MPQ) succeeded. -OpenEachMpqTest (barn.wmo.MPQ) succeeded. -OpenEachMpqTest (silo.wmo.MPQ) succeeded. -OpenEachMpqTest (Human_Barracks.wmo.MPQ) succeeded. -OpenEachMpqTest (farm.wmo.MPQ) succeeded. -OpenEachMpqTest (farmtest.wmo.MPQ) succeeded. -OpenEachMpqTest (Gate01.wmo.MPQ) succeeded. -OpenEachMpqTest (Gate02.wmo.MPQ) succeeded. -OpenEachMpqTest (Gate03.wmo.MPQ) succeeded. -OpenEachMpqTest (GateRuined01.wmo.MPQ) succeeded. -OpenEachMpqTest (GateRuined02.wmo.MPQ) succeeded. -OpenEachMpqTest (KeepBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (LowWallPost01.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPiece01.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPiece02.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPiece03.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPiece04.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPiece05.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPieceRuin01.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPieceRuin02.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPieceRuin03.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPieceRuin04.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPieceStairs01.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPost01.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPost02.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPostRuined01.wmo.MPQ) succeeded. -OpenEachMpqTest (WallPostTunnel01.wmo.MPQ) succeeded. -OpenEachMpqTest (lumbermill.wmo.MPQ) succeeded. -OpenEachMpqTest (magetower.wmo.MPQ) succeeded. -OpenEachMpqTest (Moonbrook_Blacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (Moonbrook_HumanTwoStory.wmo.MPQ) succeeded. -OpenEachMpqTest (Moonbrook_human_farm.wmo.MPQ) succeeded. -OpenEachMpqTest (Moonbrook_Inn.wmo.MPQ) succeeded. -OpenEachMpqTest (Moonbrook_TownHall_NoWall.wmo.MPQ) succeeded. -OpenEachMpqTest (NSabbey.wmo.MPQ) succeeded. -OpenEachMpqTest (OilPlatform.wmo.MPQ) succeeded. -OpenEachMpqTest (OilPlatformSmall.wmo.MPQ) succeeded. -OpenEachMpqTest (oil_platform.wmo.MPQ) succeeded. -OpenEachMpqTest (PrisonGuardTower.wmo.MPQ) succeeded. -OpenEachMpqTest (prisonHQ.wmo.MPQ) succeeded. -OpenEachMpqTest (prisonLonghouse.wmo.MPQ) succeeded. -OpenEachMpqTest (PrisonOubliette.wmo.MPQ) succeeded. -OpenEachMpqTest (PrisonOublietteTunnel.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_Barn.wmo.MPQ) succeeded. -OpenEachMpqTest (redridge_barracks.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_Blacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_HumanTwoStory.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_human_farm.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_Inn.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_lumbermill.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_MageTower.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_Stable.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_TownHall.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidge_TownHall_NoWall.wmo.MPQ) succeeded. -OpenEachMpqTest (Scarlet_Monestary.wmo.MPQ) succeeded. -OpenEachMpqTest (stable.wmo.MPQ) succeeded. -OpenEachMpqTest (Stormwind.wmo.MPQ) succeeded. -OpenEachMpqTest (BootyBay.wmo.MPQ) succeeded. -OpenEachMpqTest (BootyBayPlank.wmo.MPQ) succeeded. -OpenEachMpqTest (BootyBay_house1.wmo.MPQ) succeeded. -OpenEachMpqTest (BootyBay_house2.wmo.MPQ) succeeded. -OpenEachMpqTest (BootyBay_railing.wmo.MPQ) succeeded. -OpenEachMpqTest (BootyBay_warehouse.wmo.MPQ) succeeded. -OpenEachMpqTest (ratchet_dock.wmo.MPQ) succeeded. -OpenEachMpqTest (TownHall.wmo.MPQ) succeeded. -OpenEachMpqTest (TownHall_NoWall.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_Barn.wmo.MPQ) succeeded. -OpenEachMpqTest (westfall_barracks.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_Blacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_GuardTower.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_HumanTwoStory.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_human_farm.wmo.MPQ) succeeded. -OpenEachMpqTest (WestFallFarmHouseburnt.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_Inn.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_lumbermill.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_MageTower.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_Stable.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_TownHall.wmo.MPQ) succeeded. -OpenEachMpqTest (Westfall_TownHall_NoWall.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskWorldTree.wmo.MPQ) succeeded. -OpenEachMpqTest (WorldTree.wmo.MPQ) succeeded. -OpenEachMpqTest (TrollZiggurat.wmo.MPQ) succeeded. -OpenEachMpqTest (ZulGurubRuins01.wmo.MPQ) succeeded. -OpenEachMpqTest (AllianceShrine.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodChasmBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (DuskwoodCoveredBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (abbeygate01.wmo.MPQ) succeeded. -OpenEachMpqTest (abbeygate02.wmo.MPQ) succeeded. -OpenEachMpqTest (ElwynnLakeBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (ElwynnFootbridge.wmo.MPQ) succeeded. -OpenEachMpqTest (ElwynnLionBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (HeroBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (HeroGate.wmo.MPQ) succeeded. -OpenEachMpqTest (ElwynnWideBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (HordeShrine.wmo.MPQ) succeeded. -OpenEachMpqTest (IronFootbridge.wmo.MPQ) succeeded. -OpenEachMpqTest (IronforgeRopeBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (IronStonebridge.wmo.MPQ) succeeded. -OpenEachMpqTest (RedridgeDamagedBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidgeDocks01.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidgeDocks02.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidgeDocks03.wmo.MPQ) succeeded. -OpenEachMpqTest (RedRidgeFootbridge.wmo.MPQ) succeeded. -OpenEachMpqTest (OilRefinery.wmo.MPQ) succeeded. -OpenEachMpqTest (RopeBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (StrangleRuinStair.wmo.MPQ) succeeded. -OpenEachMpqTest (StrangleGladiatorArena.wmo.MPQ) succeeded. -OpenEachMpqTest (StrangleArenaGate01.wmo.MPQ) succeeded. -OpenEachMpqTest (StranglethornRuins01.wmo.MPQ) succeeded. -OpenEachMpqTest (StranglethornRuins02.wmo.MPQ) succeeded. -OpenEachMpqTest (StranglethornRuins04.wmo.MPQ) succeeded. -OpenEachMpqTest (StranglethornRuins11.wmo.MPQ) succeeded. -OpenEachMpqTest (StranglethornRuins12.wmo.MPQ) succeeded. -OpenEachMpqTest (StranglethornRuins13.wmo.MPQ) succeeded. -OpenEachMpqTest (StranglethornRuins16.wmo.MPQ) succeeded. -OpenEachMpqTest (BridgeStranglethorn.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampDock01.wmo.MPQ) succeeded. -OpenEachMpqTest (HumanBoatHouse.wmo.MPQ) succeeded. -OpenEachMpqTest (WestFallGrainSilo01.wmo.MPQ) succeeded. -OpenEachMpqTest (WetlandsHumanDock01.wmo.MPQ) succeeded. -OpenEachMpqTest (WetlandsBustedWagon.wmo.MPQ) succeeded. -OpenEachMpqTest (cameron.wmo.MPQ) succeeded. -OpenEachMpqTest (Blackrock.wmo.MPQ) succeeded. -OpenEachMpqTest (Blackrock2.wmo.MPQ) succeeded. -OpenEachMpqTest (AZ_Deadmines_A.wmo.MPQ) succeeded. -OpenEachMpqTest (AZ_Deadmines_B.wmo.MPQ) succeeded. -OpenEachMpqTest (AZ_Deadmines_C.wmo.MPQ) succeeded. -OpenEachMpqTest (AZ_Deadmines_D.wmo.MPQ) succeeded. -OpenEachMpqTest (Karazhan.wmo.MPQ) succeeded. -OpenEachMpqTest (StormwindJail.wmo.MPQ) succeeded. -OpenEachMpqTest (StormwindPrison.wmo.MPQ) succeeded. -OpenEachMpqTest (Ahn_Qiraj.wmo.MPQ) succeeded. -OpenEachMpqTest (Ahn_Qirajwall01.wmo.MPQ) succeeded. -OpenEachMpqTest (Ahn_Qirajwall02.wmo.MPQ) succeeded. -OpenEachMpqTest (Ahn_Qirajwall03.wmo.MPQ) succeeded. -OpenEachMpqTest (Blackfathom.wmo.MPQ) succeeded. -OpenEachMpqTest (Blackfathom_instance.wmo.MPQ) succeeded. -OpenEachMpqTest (RazorfenDowns.wmo.MPQ) succeeded. -OpenEachMpqTest (RazorfenDowns_instance.wmo.MPQ) succeeded. -OpenEachMpqTest (RazorfenKraul.wmo.MPQ) succeeded. -OpenEachMpqTest (RazorfenKraul_instance.wmo.MPQ) succeeded. -OpenEachMpqTest (wailingcaverns.wmo.MPQ) succeeded. -OpenEachMpqTest (wailingcaverns_instance.wmo.MPQ) succeeded. -OpenEachMpqTest (KZ_Gnomeragon.wmo.MPQ) succeeded. -OpenEachMpqTest (KZ_Gnomeragon_Instance.wmo.MPQ) succeeded. -OpenEachMpqTest (KZ_Uldaman.wmo.MPQ) succeeded. -OpenEachMpqTest (KZ_Uldaman_A.wmo.MPQ) succeeded. -OpenEachMpqTest (KZ_Uldaman_B.wmo.MPQ) succeeded. -OpenEachMpqTest (LD_ShadowFang.wmo.MPQ) succeeded. -OpenEachMpqTest (LD_ShadowFangInterior.wmo.MPQ) succeeded. -OpenEachMpqTest (Stratholme.wmo.MPQ) succeeded. -OpenEachMpqTest (AlgazGate.wmo.MPQ) succeeded. -OpenEachMpqTest (AnimalDen.wmo.MPQ) succeeded. -OpenEachMpqTest (Anvilmarpass.wmo.MPQ) succeeded. -OpenEachMpqTest (BarrowDens.wmo.MPQ) succeeded. -OpenEachMpqTest (CorruptBarrowDens.wmo.MPQ) succeeded. -OpenEachMpqTest (BarrowDensOneRm.wmo.MPQ) succeeded. -OpenEachMpqTest (CorruptBarrowDensOneRoom.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_IceDen.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_JungleDen.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_MushroomDen.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_TrollDen.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_TrollDen_Warm.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_WarmDen.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_CaveTunnel01.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_StoneAshen_Tunnel.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_WarmCaveTunnel01.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Crypt.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_CryptOneRm.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_CryptSchool.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_CryptSimpleEnt.wmo.MPQ) succeeded. -OpenEachMpqTest (LargeTunnel.wmo.MPQ) succeeded. -OpenEachMpqTest (MediumTunnel.wmo.MPQ) succeeded. -OpenEachMpqTest (MediumTunnel_Snow.wmo.MPQ) succeeded. -OpenEachMpqTest (SmallTunnel.wmo.MPQ) succeeded. -OpenEachMpqTest (SmallTunnel_Snow.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_FishingHoleIce.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Goldmine.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Goldmine_1Room.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Goldmine_variantA.wmo.MPQ) succeeded. -OpenEachMpqTest (exterior_arch.wmo.MPQ) succeeded. -OpenEachMpqTest (exterior_piece01.wmo.MPQ) succeeded. -OpenEachMpqTest (exterior_piece02.wmo.MPQ) succeeded. -OpenEachMpqTest (exterior_piece03.wmo.MPQ) succeeded. -OpenEachMpqTest (exterior_piece04.wmo.MPQ) succeeded. -OpenEachMpqTest (exterior_piece05.wmo.MPQ) succeeded. -OpenEachMpqTest (mini-hive_A.wmo.MPQ) succeeded. -OpenEachMpqTest (mini-hive_B.wmo.MPQ) succeeded. -OpenEachMpqTest (mini-hive_C.wmo.MPQ) succeeded. -OpenEachMpqTest (mini-hive_D.wmo.MPQ) succeeded. -OpenEachMpqTest (mini-hive_E.wmo.MPQ) succeeded. -OpenEachMpqTest (mini-hive_F.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Hordemine.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Hordemine1Room.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Icecave.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Icecave_Medium.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Junglecave.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Junglecave_Medium.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Mountaincave_Medium.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Mushroomcave.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Underwatercave_Medium.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Warmcave.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Warmcave_Medium.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Brogremound.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Brogremound1Room.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Grogremound.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Grogremound1Room.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Ogremound.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Ogremound1Room.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Ogremound_Medium.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Snogremound.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Snogremound1Room.wmo.MPQ) succeeded. -OpenEachMpqTest (Pirateship.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_RuinedFortress.wmo.MPQ) succeeded. -OpenEachMpqTest (Ruinedkeep.wmo.MPQ) succeeded. -OpenEachMpqTest (Shipwreck_A.wmo.MPQ) succeeded. -OpenEachMpqTest (Shipwreck_B.wmo.MPQ) succeeded. -OpenEachMpqTest (Shipwreck_C.wmo.MPQ) succeeded. -OpenEachMpqTest (Shipwreck_D.wmo.MPQ) succeeded. -OpenEachMpqTest (Transport_Shipwreck.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Spidermine.wmo.MPQ) succeeded. -OpenEachMpqTest (MD_Spidermine_nokobolds.wmo.MPQ) succeeded. -OpenEachMpqTest (Scarlet_Monestary_Interior.wmo.MPQ) succeeded. -OpenEachMpqTest (AZ_SunkenTemple.wmo.MPQ) succeeded. -OpenEachMpqTest (AZ_SunkenTemple_Instance.wmo.MPQ) succeeded. -OpenEachMpqTest (SunkenTemple.wmo.MPQ) succeeded. -OpenEachMpqTest (collintest.wmo.MPQ) succeeded. -OpenEachMpqTest (missingwmo.wmo.MPQ) succeeded. -OpenEachMpqTest (test.wmo.MPQ) succeeded. -OpenEachMpqTest (ThousandNeedlesElevator.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin01.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin02.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin03.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin04.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin05.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin06.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin07.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin08.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin09.wmo.MPQ) succeeded. -OpenEachMpqTest (AZRClassicalElfRuin10.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfRuin01.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfRuin02.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfRuin03.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfRuin04.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfRuin05.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfRuin06.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfRuin07.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfRuin08.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfTemple.wmo.MPQ) succeeded. -OpenEachMpqTest (ClassicalElfTemple2.wmo.MPQ) succeeded. -OpenEachMpqTest (GoblinHut.wmo.MPQ) succeeded. -OpenEachMpqTest (GoblinLab.wmo.MPQ) succeeded. -OpenEachMpqTest (NagaPagoda01.wmo.MPQ) succeeded. -OpenEachMpqTest (DSNightElf2Story.wmo.MPQ) succeeded. -OpenEachMpqTest (NightElf2Story.wmo.MPQ) succeeded. -OpenEachMpqTest (NightElfAbbey.wmo.MPQ) succeeded. -OpenEachMpqTest (DSNightElfDruidTower.wmo.MPQ) succeeded. -OpenEachMpqTest (NightElfDruidTower.wmo.MPQ) succeeded. -OpenEachMpqTest (DSNightElfHuntersLodge.wmo.MPQ) succeeded. -OpenEachMpqTest (NightElfHuntersLodge.wmo.MPQ) succeeded. -OpenEachMpqTest (DSNightElfInn.wmo.MPQ) succeeded. -OpenEachMpqTest (NightElfInn.wmo.MPQ) succeeded. -OpenEachMpqTest (DSNightElfMoonWell.wmo.MPQ) succeeded. -OpenEachMpqTest (DSNightElfMoonWellOrnate.wmo.MPQ) succeeded. -OpenEachMpqTest (GiantMoonwell.wmo.MPQ) succeeded. -OpenEachMpqTest (NightElfMoonWell.wmo.MPQ) succeeded. -OpenEachMpqTest (NightElfMoonWellOrnate.wmo.MPQ) succeeded. -OpenEachMpqTest (DSNightElfSmallHouse.wmo.MPQ) succeeded. -OpenEachMpqTest (NightElfSmallHouse.wmo.MPQ) succeeded. -OpenEachMpqTest (southGate.wmo.MPQ) succeeded. -OpenEachMpqTest (AbandonedOrcBarracks.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockOrcBarracks.wmo.MPQ) succeeded. -OpenEachMpqTest (OrcBarracks.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampOrcBarracks.wmo.MPQ) succeeded. -OpenEachMpqTest (AbandonedOrcBlacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockOrcBlacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (orcblacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampOrcBlacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockOrcFortress.wmo.MPQ) succeeded. -OpenEachMpqTest (OrcFortress.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampOrcFortress.wmo.MPQ) succeeded. -OpenEachMpqTest (AbandonedOrcGreatHall.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockOrcGreatHall.wmo.MPQ) succeeded. -OpenEachMpqTest (OrcGreatHall.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampOrcGreatHall.wmo.MPQ) succeeded. -OpenEachMpqTest (AbandonedOrcKennel.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockOrcKennel.wmo.MPQ) succeeded. -OpenEachMpqTest (OrcKennel.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampOrcKennel.wmo.MPQ) succeeded. -OpenEachMpqTest (abandonedOrcMageTower.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockOrcMageTower.wmo.MPQ) succeeded. -OpenEachMpqTest (OrcMageTower.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampOrcMageTower.wmo.MPQ) succeeded. -OpenEachMpqTest (AbandonedOrcMedium.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockOrcMedium.wmo.MPQ) succeeded. -OpenEachMpqTest (OrcMedium.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampOrcMedium.wmo.MPQ) succeeded. -OpenEachMpqTest (AbandonedOrcTower.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockOrcTower.wmo.MPQ) succeeded. -OpenEachMpqTest (OrcTower.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampOrcTower.wmo.MPQ) succeeded. -OpenEachMpqTest (Bighouse.wmo.MPQ) succeeded. -OpenEachMpqTest (Hut.wmo.MPQ) succeeded. -OpenEachMpqTest (Ladder.wmo.MPQ) succeeded. -OpenEachMpqTest (Wallhut.wmo.MPQ) succeeded. -OpenEachMpqTest (Wallhut2.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins01.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins02.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins03.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins04.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins05.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins06.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins07.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins09.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins11.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins12.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins13.wmo.MPQ) succeeded. -OpenEachMpqTest (TanarisRuins14.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenDruidTent.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenHunterTent.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenChickenHut.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenHutA.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenHutB.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenHutBig.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenHutC.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenHutD.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenTallHut.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenTepee.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenLonghouse.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenShamanTent.wmo.MPQ) succeeded. -OpenEachMpqTest (Trollbridge.wmo.MPQ) succeeded. -OpenEachMpqTest (AbandonedTrollBurrow.wmo.MPQ) succeeded. -OpenEachMpqTest (BlackrockTrollBurrow.wmo.MPQ) succeeded. -OpenEachMpqTest (SwampTrollBurrow.wmo.MPQ) succeeded. -OpenEachMpqTest (TrollBurrow.wmo.MPQ) succeeded. -OpenEachMpqTest (troll_hotel01.wmo.MPQ) succeeded. -OpenEachMpqTest (troll_hotel_burn01.wmo.MPQ) succeeded. -OpenEachMpqTest (trollhut01.wmo.MPQ) succeeded. -OpenEachMpqTest (trollhutSmall01.wmo.MPQ) succeeded. -OpenEachMpqTest (trollhut_burn01.wmo.MPQ) succeeded. -OpenEachMpqTest (WyvernNest.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreBridge02.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreBridge03.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreBridge04.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreDocks01.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreDocks02.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreDocks03.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreDocksAberdeen.wmo.MPQ) succeeded. -OpenEachMpqTest (DarkshoreDocksCurve.wmo.MPQ) succeeded. -OpenEachMpqTest (GiantSeaTurtle01.wmo.MPQ) succeeded. -OpenEachMpqTest (GiantSeaTurtle02.wmo.MPQ) succeeded. -OpenEachMpqTest (SnakeSpineGiantArch.wmo.MPQ) succeeded. -OpenEachMpqTest (DurotarBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (DurotarRootedRock03.wmo.MPQ) succeeded. -OpenEachMpqTest (DurotarGate.wmo.MPQ) succeeded. -OpenEachMpqTest (CrashedZippelin.wmo.MPQ) succeeded. -OpenEachMpqTest (DustWallowFootbridge.wmo.MPQ) succeeded. -OpenEachMpqTest (FeralasStoneBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (KalidarBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (KalidarDock01.wmo.MPQ) succeeded. -OpenEachMpqTest (KalidarTreeBranch.wmo.MPQ) succeeded. -OpenEachMpqTest (MoongladeBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (CentaurTent02.wmo.MPQ) succeeded. -OpenEachMpqTest (CentaurTent03.wmo.MPQ) succeeded. -OpenEachMpqTest (Crossroadsbridge.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (TaurenTent01.wmo.MPQ) succeeded. -OpenEachMpqTest (Orcbridge.wmo.MPQ) succeeded. -OpenEachMpqTest (LandingPad01.wmo.MPQ) succeeded. -OpenEachMpqTest (MonsterLogMachine_01.wmo.MPQ) succeeded. -OpenEachMpqTest (StonetalonWheelPlatform.wmo.MPQ) succeeded. -OpenEachMpqTest (TrollTentSand01.wmo.MPQ) succeeded. -OpenEachMpqTest (1000NeedlesBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (Darnassis.wmo.MPQ) succeeded. -OpenEachMpqTest (Ogrimmar.wmo.MPQ) succeeded. -OpenEachMpqTest (DruidMesaA.wmo.MPQ) succeeded. -OpenEachMpqTest (DruidMesaB.wmo.MPQ) succeeded. -OpenEachMpqTest (GiantTotem.wmo.MPQ) succeeded. -OpenEachMpqTest (LowerMesaA.wmo.MPQ) succeeded. -OpenEachMpqTest (LowerMesaB.wmo.MPQ) succeeded. -OpenEachMpqTest (LowerMesaC.wmo.MPQ) succeeded. -OpenEachMpqTest (LowerMesaD.wmo.MPQ) succeeded. -OpenEachMpqTest (LowerMesaE.wmo.MPQ) succeeded. -OpenEachMpqTest (LowerMesaF.wmo.MPQ) succeeded. -OpenEachMpqTest (MidMesaA.wmo.MPQ) succeeded. -OpenEachMpqTest (MidMesaB.wmo.MPQ) succeeded. -OpenEachMpqTest (MidMesaC.wmo.MPQ) succeeded. -OpenEachMpqTest (MidMesaD.wmo.MPQ) succeeded. -OpenEachMpqTest (ShamanMesa.wmo.MPQ) succeeded. -OpenEachMpqTest (UndeadCave.wmo.MPQ) succeeded. -OpenEachMpqTest (UpperMesaA.wmo.MPQ) succeeded. -OpenEachMpqTest (UpperMesaB.wmo.MPQ) succeeded. -OpenEachMpqTest (UpperMesaC.wmo.MPQ) succeeded. -OpenEachMpqTest (UpperMesaD.wmo.MPQ) succeeded. -OpenEachMpqTest (UpperMesaE.wmo.MPQ) succeeded. -OpenEachMpqTest (WarriorMesaA.wmo.MPQ) succeeded. -OpenEachMpqTest (WarriorMesaB.wmo.MPQ) succeeded. -OpenEachMpqTest (AnvilMar.wmo.MPQ) succeeded. -OpenEachMpqTest (mud_hovel.wmo.MPQ) succeeded. -OpenEachMpqTest (hovel_machine.wmo.MPQ) succeeded. -OpenEachMpqTest (snow_hovel.wmo.MPQ) succeeded. -OpenEachMpqTest (mud_2story.wmo.MPQ) succeeded. -OpenEachMpqTest (snow_2story.wmo.MPQ) succeeded. -OpenEachMpqTest (snow_dwarfbarracks.wmo.MPQ) succeeded. -OpenEachMpqTest (wet_dwarfbarracks.wmo.MPQ) succeeded. -OpenEachMpqTest (snow_blacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (wetland_blacksmith.wmo.MPQ) succeeded. -OpenEachMpqTest (Dwarven_GriffonAviary.wmo.MPQ) succeeded. -OpenEachMpqTest (Dwarven_GuardTower.wmo.MPQ) succeeded. -OpenEachMpqTest (Dwarven_SnowStable.wmo.MPQ) succeeded. -OpenEachMpqTest (Dwarven_SnowTower.wmo.MPQ) succeeded. -OpenEachMpqTest (Dwarven_Stable.wmo.MPQ) succeeded. -OpenEachMpqTest (Snow_Tavern.wmo.MPQ) succeeded. -OpenEachMpqTest (wet_Tavern.wmo.MPQ) succeeded. -OpenEachMpqTest (GreatWall_Gate.wmo.MPQ) succeeded. -OpenEachMpqTest (GreatWall_tower_01.wmo.MPQ) succeeded. -OpenEachMpqTest (GreatWall_tower_02.wmo.MPQ) succeeded. -OpenEachMpqTest (GreatWall_wall_01.wmo.MPQ) succeeded. -OpenEachMpqTest (GreatWall_wall_02.wmo.MPQ) succeeded. -OpenEachMpqTest (GreatWall_wall_03.wmo.MPQ) succeeded. -OpenEachMpqTest (GreatWall_wall_04.wmo.MPQ) succeeded. -OpenEachMpqTest (ThandolSpan.wmo.MPQ) succeeded. -OpenEachMpqTest (Wetlands_GrimBatol.wmo.MPQ) succeeded. -OpenEachMpqTest (ironforge.wmo.MPQ) succeeded. -OpenEachMpqTest (DwarvenDam01.wmo.MPQ) succeeded. -OpenEachMpqTest (DwarvenDock01.wmo.MPQ) succeeded. -OpenEachMpqTest (DwarvenSentinel01.wmo.MPQ) succeeded. -OpenEachMpqTest (DwarvenSentinel02.wmo.MPQ) succeeded. -OpenEachMpqTest (ExcavationPlatform01.wmo.MPQ) succeeded. -OpenEachMpqTest (ExcavationPlatform02.wmo.MPQ) succeeded. -OpenEachMpqTest (ExcavationPlatform03.wmo.MPQ) succeeded. -OpenEachMpqTest (NetherguardWall.wmo.MPQ) succeeded. -OpenEachMpqTest (GreenHouse01.wmo.MPQ) succeeded. -OpenEachMpqTest (Cathedral.wmo.MPQ) succeeded. -OpenEachMpqTest (SlaughterHouse.wmo.MPQ) succeeded. -OpenEachMpqTest (UndeadZiggurat.wmo.MPQ) succeeded. -OpenEachMpqTest (UtherShrine.wmo.MPQ) succeeded. -OpenEachMpqTest (BridgeBigWhite.wmo.MPQ) succeeded. -OpenEachMpqTest (ArathiStoneBridge01.wmo.MPQ) succeeded. -OpenEachMpqTest (ArathiStoneBridge02.wmo.MPQ) succeeded. -OpenEachMpqTest (ChimneyTop.wmo.MPQ) succeeded. -OpenEachMpqTest (HuRuinedBuildingsBig01.wmo.MPQ) succeeded. -OpenEachMpqTest (HuRuinedBuildingsBig02.wmo.MPQ) succeeded. -OpenEachMpqTest (HuRuinedBuildingsBig03.wmo.MPQ) succeeded. -OpenEachMpqTest (HuRuinedBuildingsMed01.wmo.MPQ) succeeded. -OpenEachMpqTest (HuRuinedBuildingsMed02.wmo.MPQ) succeeded. -OpenEachMpqTest (HuRuinedBuildingsSmall01.wmo.MPQ) succeeded. -OpenEachMpqTest (HuRuinedBuildingsSmall02.wmo.MPQ) succeeded. -OpenEachMpqTest (WreckedBuildingHCorner01.wmo.MPQ) succeeded. -OpenEachMpqTest (WreckedBuildingHCorner02.wmo.MPQ) succeeded. -OpenEachMpqTest (PlaguelandsBridge.wmo.MPQ) succeeded. -OpenEachMpqTest (Undercity.wmo.MPQ) succeeded. -OpenEachMpqTest (Undercitywall01.wmo.MPQ) succeeded. -OpenEachMpqTest (Undercity_test01.wmo.MPQ) succeeded. -OpenEachMpqTest (HumanLevelOneTest.wmo.MPQ) succeeded. -OpenEachMpqTest (HumanLevelThreeTest.wmo.MPQ) succeeded. -OpenEachMpqTest (transportship_A.wmo.MPQ) succeeded. -OpenEachMpqTest (base.MPQ) succeeded. -OpenEachMpqTest (dbc.MPQ) succeeded. -OpenEachMpqTest (fonts.MPQ) succeeded. -OpenEachMpqTest (interface.MPQ) succeeded. -OpenEachMpqTest (misc.MPQ) succeeded. -OpenEachMpqTest (model.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (speech.MPQ) succeeded. -OpenEachMpqTest (terrain.MPQ) succeeded. -OpenEachMpqTest (texture.MPQ) succeeded. -OpenEachMpqTest (wmo.MPQ) succeeded. -OpenEachMpqTest (base.MPQ) succeeded. -OpenEachMpqTest (dbc.MPQ) succeeded. -OpenEachMpqTest (fonts.MPQ) succeeded. -OpenEachMpqTest (interface.MPQ) succeeded. -OpenEachMpqTest (misc.MPQ) succeeded. -OpenEachMpqTest (model.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (speech.MPQ) succeeded. -OpenEachMpqTest (terrain.MPQ) succeeded. -OpenEachMpqTest (texture.MPQ) succeeded. -OpenEachMpqTest (wmo.MPQ) succeeded. -OpenEachMpqTest (base.MPQ) succeeded. -OpenEachMpqTest (dbc.MPQ) succeeded. -OpenEachMpqTest (expansion.MPQ) succeeded. -OpenEachMpqTest (expansionLoc.MPQ) succeeded. -OpenEachMpqTest (fonts.MPQ) succeeded. -OpenEachMpqTest (interface.MPQ) succeeded. -OpenEachMpqTest (misc.MPQ) succeeded. -OpenEachMpqTest (model.MPQ) succeeded. -OpenEachMpqTest (patch.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (speech.MPQ) succeeded. -OpenEachMpqTest (terrain.MPQ) succeeded. -OpenEachMpqTest (texture.MPQ) succeeded. -OpenEachMpqTest (wmo.MPQ) succeeded. -OpenEachMpqTest (backup-enGB.MPQ) succeeded. -OpenEachMpqTest (base-enGB.MPQ) succeeded. -OpenEachMpqTest (common.MPQ) succeeded. -OpenEachMpqTest (expansion-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (common.MPQ) succeeded. -OpenEachMpqTest (backup-enGB.MPQ) succeeded. -OpenEachMpqTest (base-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion.MPQ) succeeded. -OpenEachMpqTest (Installer Tome.mpq) succeeded. -OpenEachMpqTest (common-2.MPQ) succeeded. -OpenEachMpqTest (common.MPQ) succeeded. -OpenEachMpqTest (base-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (lichking-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (lichking-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion.MPQ) succeeded. -OpenEachMpqTest (lichking.MPQ) succeeded. -OpenEachMpqTest (installer tome.mpq.part) succeeded. -OpenEachMpqTest (movies.mpq.part) succeeded. -OpenEachMpqTest (dbc.MPQ.0) succeeded. -OpenEachMpqTest (fonts.MPQ.0) succeeded. -OpenEachMpqTest (interface.MPQ.0) succeeded. -OpenEachMpqTest (misc.MPQ.0) succeeded. -OpenEachMpqTest (model.MPQ.0) succeeded. -OpenEachMpqTest (patch.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ.0) succeeded. -OpenEachMpqTest (speech.MPQ.0) succeeded. -OpenEachMpqTest (streaming.MPQ.0) succeeded. -OpenEachMpqTest (streamingloc.MPQ.0) succeeded. -OpenEachMpqTest (terrain.MPQ.0) succeeded. -OpenEachMpqTest (texture.MPQ.0) succeeded. -OpenEachMpqTest (wmo.MPQ.0) succeeded. -OpenEachMpqTest (dbc.MPQ.part) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (fonts.MPQ.part) succeeded. -OpenEachMpqTest (interface.MPQ.part) succeeded. -OpenEachMpqTest (misc.MPQ.part) succeeded. -OpenEachMpqTest (model.MPQ.part) succeeded. -OpenEachMpqTest (patch.MPQ.part) succeeded. -OpenEachMpqTest (sound.MPQ.part) succeeded. -OpenEachMpqTest (speech.MPQ.part) succeeded. -OpenEachMpqTest (streaming.MPQ.part) succeeded. -OpenEachMpqTest (streamingloc.MPQ.part) succeeded. -OpenEachMpqTest (terrain.MPQ.part) succeeded. -OpenEachMpqTest (texture.MPQ.part) succeeded. -OpenEachMpqTest (wmo.MPQ.part) succeeded. -OpenEachMpqTest (WoW-3.3.0.10958-4.0.0.12911-EU-Stage-1.mpq) succeeded. -OpenEachMpqTest (dbc.MPQ.part) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (fonts.MPQ.part) succeeded. -OpenEachMpqTest (interface.MPQ.part) succeeded. -OpenEachMpqTest (misc.MPQ.part) succeeded. -OpenEachMpqTest (model.MPQ.part) succeeded. -OpenEachMpqTest (patch.MPQ.part) succeeded. -OpenEachMpqTest (sound.MPQ.part) succeeded. -OpenEachMpqTest: Failed to open archive \Multimedia\MPQs\2004 - WoW\11403\Data\SoundCache.MPQ (error code: 11) -OpenEachMpqTest (speech.MPQ.part) succeeded. -OpenEachMpqTest (streaming.MPQ.part) succeeded. -OpenEachMpqTest (streamingloc.MPQ.part) succeeded. -OpenEachMpqTest (terrain.MPQ.part) succeeded. -OpenEachMpqTest (texture.MPQ.part) succeeded. -OpenEachMpqTest (wmo.MPQ.part) succeeded. -OpenEachMpqTest (Installer Tome 2.mpq.part) succeeded. -OpenEachMpqTest: Failed to open archive \Multimedia\MPQs\2004 - WoW\11927\Installer Tome.mpq.1.part (error code: 11) -OpenEachMpqTest (Installer Tome.mpq.part) succeeded. -OpenEachMpqTest (expansion-locale-frFR.MPQ) succeeded. -OpenEachMpqTest (art.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion1.MPQ) succeeded. -OpenEachMpqTest (expansion2.MPQ) succeeded. -OpenEachMpqTest (expansion3.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (world.MPQ) succeeded. -OpenEachMpqTest (wow-update-12694.MPQ) succeeded. -OpenEachMpqTest (wow-update-12759.MPQ) succeeded. -OpenEachMpqTest (wow-update-12803.MPQ) succeeded. -OpenEachMpqTest (wow-update-12857.MPQ) succeeded. -OpenEachMpqTest (wow-update-12942.MPQ) succeeded. -OpenEachMpqTest (wow-update-12984.MPQ) succeeded. -OpenEachMpqTest (wow-update-13066.MPQ) succeeded. -OpenEachMpqTest (wow-update-13117.MPQ) succeeded. -OpenEachMpqTest (wow-update-13183.MPQ) succeeded. -OpenEachMpqTest (wow-update-13189.MPQ) succeeded. -OpenEachMpqTest (wow-update-13195.MPQ) succeeded. -OpenEachMpqTest (wow-update-13202.MPQ) succeeded. -OpenEachMpqTest (wow-update-13221.MPQ) succeeded. -OpenEachMpqTest (wow-update-13241.MPQ) succeeded. -OpenEachMpqTest (wow-update-13277.MPQ) succeeded. -OpenEachMpqTest (wow-update-13316.MPQ) succeeded. -OpenEachMpqTest (wow-12635-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-12635-Win-final.MPQ) succeeded. -OpenEachMpqTest (wow-12694-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-12694-Win-final.MPQ) succeeded. -OpenEachMpqTest (wow-12759-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-12759-Win-final.MPQ) succeeded. -OpenEachMpqTest (base-OSX.MPQ) succeeded. -OpenEachMpqTest (base-Win.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (OldWorld-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13623.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13914.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-14007.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-14333.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-14480.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-14545.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-14946.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15005.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15050.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion1.MPQ) succeeded. -OpenEachMpqTest (expansion2.MPQ) succeeded. -OpenEachMpqTest (expansion3.MPQ) succeeded. -OpenEachMpqTest (OldWorld.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (world.MPQ) succeeded. -OpenEachMpqTest (wow-update-13164.MPQ) succeeded. -OpenEachMpqTest (wow-update-13205.MPQ) succeeded. -OpenEachMpqTest (wow-update-13287.MPQ) succeeded. -OpenEachMpqTest (wow-update-13329.MPQ) succeeded. -OpenEachMpqTest (wow-update-13596.MPQ) succeeded. -OpenEachMpqTest (wow-update-13623.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-13914.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14007.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14333.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14480.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14545.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-14946.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15005.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15050.MPQ) succeeded. -OpenEachMpqTest (wow-update-oldworld-13154.MPQ) succeeded. -OpenEachMpqTest (wow-update-oldworld-13286.MPQ) succeeded. -OpenEachMpqTest (wow-update-12941.MPQ) succeeded. -OpenEachMpqTest (wow-update-12984.MPQ) succeeded. -OpenEachMpqTest (SoundCache-patch-13154.MPQ) succeeded. -OpenEachMpqTest (SoundCache-patch-13164.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13417.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13449.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13482.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13529.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13561.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13596.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13682.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13698.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13707.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13726.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13750.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13793.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13812.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13850.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13875.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-13914.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-14002.MPQ) succeeded. -OpenEachMpqTest (locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (alternate.MPQ) succeeded. -OpenEachMpqTest (art.MPQ) succeeded. -OpenEachMpqTest (base-OSX.MPQ) succeeded. -OpenEachMpqTest (base-Win.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-deDE.MPQ) succeeded. -OpenEachMpqTest (locale-deDE.MPQ) succeeded. -OpenEachMpqTest (OldWorld-deDE.MPQ) succeeded. -OpenEachMpqTest (speech-deDE.MPQ) succeeded. -OpenEachMpqTest (wow-update-deDE-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-deDE-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-deDE-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enCN.MPQ) succeeded. -OpenEachMpqTest (locale-enCN.MPQ) succeeded. -OpenEachMpqTest (speech-enCN.MPQ) succeeded. -OpenEachMpqTest (wow-update-enCN-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-enCN-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-enCN-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (OldWorld-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enTW.MPQ) succeeded. -OpenEachMpqTest (locale-enTW.MPQ) succeeded. -OpenEachMpqTest (OldWorld-enTW.MPQ) succeeded. -OpenEachMpqTest (speech-enTW.MPQ) succeeded. -OpenEachMpqTest (wow-update-enTW-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-enTW-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-enTW-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (locale-enUS.MPQ) succeeded. -OpenEachMpqTest (OldWorld-enUS.MPQ) succeeded. -OpenEachMpqTest (speech-enUS.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-esES.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-esES.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-esES.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-esES.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-esES.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-esES.MPQ) succeeded. -OpenEachMpqTest (locale-esES.MPQ) succeeded. -OpenEachMpqTest (OldWorld-esES.MPQ) succeeded. -OpenEachMpqTest (speech-esES.MPQ) succeeded. -OpenEachMpqTest (wow-update-esES-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-esES-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-esES-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-esMX.MPQ) succeeded. -OpenEachMpqTest (locale-esMX.MPQ) succeeded. -OpenEachMpqTest (OldWorld-esMX.MPQ) succeeded. -OpenEachMpqTest (speech-esMX.MPQ) succeeded. -OpenEachMpqTest (wow-update-esMX-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-esMX-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-esMX-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1.MPQ) succeeded. -OpenEachMpqTest (expansion2.MPQ) succeeded. -OpenEachMpqTest (expansion3.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-frFR.MPQ) succeeded. -OpenEachMpqTest (locale-frFR.MPQ) succeeded. -OpenEachMpqTest (OldWorld-frFR.MPQ) succeeded. -OpenEachMpqTest (speech-frFR.MPQ) succeeded. -OpenEachMpqTest (wow-update-frFR-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-frFR-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-frFR-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-koKR.MPQ) succeeded. -OpenEachMpqTest (locale-koKR.MPQ) succeeded. -OpenEachMpqTest (OldWorld-koKR.MPQ) succeeded. -OpenEachMpqTest (speech-koKR.MPQ) succeeded. -OpenEachMpqTest (wow-update-koKR-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-koKR-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-koKR-15595.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_base1.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_base2.MPQ) succeeded. -OpenEachMpqTest (OldWorld.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (locale-ptBR.MPQ) succeeded. -OpenEachMpqTest (speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptBR-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptBR-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptBR-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (locale-ptPT.MPQ) succeeded. -OpenEachMpqTest (speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptPT-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptPT-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptPT-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (locale-ruRU.MPQ) succeeded. -OpenEachMpqTest (OldWorld-ruRU.MPQ) succeeded. -OpenEachMpqTest (speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (wow-update-ruRU-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-ruRU-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-ruRU-15595.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (world.MPQ) succeeded. -OpenEachMpqTest (world2.MPQ) succeeded. -OpenEachMpqTest (wow-0-15595-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-0-15595-Win-final.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhCN-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhCN-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhCN-15595.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (locale-zhTW.MPQ) succeeded. -OpenEachMpqTest (OldWorld-zhTW.MPQ) succeeded. -OpenEachMpqTest (speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhTW-15211.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhTW-15354.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhTW-15595.MPQ) succeeded. -OpenEachMpqTest (wow-0-15211-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-0-15211-Win-final.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (SoundCache-patch-15508.MPQ) succeeded. -OpenEachMpqTest (alternate.MPQ) succeeded. -OpenEachMpqTest (Base-Win.mpq) succeeded. -OpenEachMpqTest (expansion1-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (patch-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15508.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15544.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15589.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (locale-enUS.MPQ) succeeded. -OpenEachMpqTest (patch-enUS.MPQ) succeeded. -OpenEachMpqTest (speech-enUS.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-15508.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-15544.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-15589.MPQ) succeeded. -OpenEachMpqTest (expansion1.MPQ) succeeded. -OpenEachMpqTest (expansion2.MPQ) succeeded. -OpenEachMpqTest (expansion3.MPQ) succeeded. -OpenEachMpqTest (expansion4.MPQ) succeeded. -OpenEachMpqTest (interface.MPQ) succeeded. -OpenEachMpqTest (itemtexture.MPQ) succeeded. -OpenEachMpqTest (misc.MPQ) succeeded. -OpenEachMpqTest (model.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (texture.MPQ) succeeded. -OpenEachMpqTest (wow-0-15508-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-0-15508-Win-final.MPQ) succeeded. -OpenEachMpqTest (wow-0-15544-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-0-15589-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-0-15589-Win-final.MPQ) succeeded. -OpenEachMpqTest (world.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15508.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15544.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15589.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-15851.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-15851.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-15851.MPQ) succeeded. -OpenEachMpqTest (alternate.MPQ) succeeded. -OpenEachMpqTest (art.MPQ) succeeded. -OpenEachMpqTest (base-OSX.MPQ) succeeded. -OpenEachMpqTest (base-Win.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-deDE.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-deDE.MPQ) succeeded. -OpenEachMpqTest (locale-deDE.MPQ) succeeded. -OpenEachMpqTest (OldWorld-deDE.MPQ) succeeded. -OpenEachMpqTest (speech-deDE.MPQ) succeeded. -OpenEachMpqTest (wow-update-deDE-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-deDE-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-deDE-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-deDE-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enCN.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-enCN.MPQ) succeeded. -OpenEachMpqTest (locale-enCN.MPQ) succeeded. -OpenEachMpqTest (OldWorld-enCN.MPQ) succeeded. -OpenEachMpqTest (speech-enCN.MPQ) succeeded. -OpenEachMpqTest (wow-update-enCN-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-enCN-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-enCN-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-enCN-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (OldWorld-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enTW.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-enTW.MPQ) succeeded. -OpenEachMpqTest (locale-enTW.MPQ) succeeded. -OpenEachMpqTest (OldWorld-enTW.MPQ) succeeded. -OpenEachMpqTest (speech-enTW.MPQ) succeeded. -OpenEachMpqTest (wow-update-enTW-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-enTW-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-enTW-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-enTW-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-enUS.MPQ) succeeded. -OpenEachMpqTest (locale-enUS.MPQ) succeeded. -OpenEachMpqTest (OldWorld-enUS.MPQ) succeeded. -OpenEachMpqTest (speech-enUS.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-esES.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-esES.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-esES.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-esES.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-esES.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-esES.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-esES.MPQ) succeeded. -OpenEachMpqTest (locale-esES.MPQ) succeeded. -OpenEachMpqTest (OldWorld-esES.MPQ) succeeded. -OpenEachMpqTest (speech-esES.MPQ) succeeded. -OpenEachMpqTest (wow-update-esES-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-esES-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-esES-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-esES-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-esMX.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-esMX.MPQ) succeeded. -OpenEachMpqTest (locale-esMX.MPQ) succeeded. -OpenEachMpqTest (OldWorld-esMX.MPQ) succeeded. -OpenEachMpqTest (speech-esMX.MPQ) succeeded. -OpenEachMpqTest (wow-update-esMX-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-esMX-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-esMX-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-esMX-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1.MPQ) succeeded. -OpenEachMpqTest (expansion2.MPQ) succeeded. -OpenEachMpqTest (expansion3.MPQ) succeeded. -OpenEachMpqTest (expansion4.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-frFR.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-frFR.MPQ) succeeded. -OpenEachMpqTest (locale-frFR.MPQ) succeeded. -OpenEachMpqTest (OldWorld-frFR.MPQ) succeeded. -OpenEachMpqTest (speech-frFR.MPQ) succeeded. -OpenEachMpqTest (wow-update-frFR-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-frFR-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-frFR-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-frFR-16309.MPQ) succeeded. -OpenEachMpqTest (interface.MPQ) succeeded. -OpenEachMpqTest (itemtexture.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-itIT.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-itIT.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-itIT.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-itIT.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-itIT.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-itIT.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-itIT.MPQ) succeeded. -OpenEachMpqTest (locale-itIT.MPQ) succeeded. -OpenEachMpqTest (OldWorld-itIT.MPQ) succeeded. -OpenEachMpqTest (speech-itIT.MPQ) succeeded. -OpenEachMpqTest (wow-update-itIT-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-itIT-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-itIT-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-itIT-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-koKR.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-koKR.MPQ) succeeded. -OpenEachMpqTest (locale-koKR.MPQ) succeeded. -OpenEachMpqTest (OldWorld-koKR.MPQ) succeeded. -OpenEachMpqTest (speech-koKR.MPQ) succeeded. -OpenEachMpqTest (wow-update-koKR-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-koKR-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-koKR-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-koKR-16309.MPQ) succeeded. -OpenEachMpqTest (misc.MPQ) succeeded. -OpenEachMpqTest (model.MPQ) succeeded. -OpenEachMpqTest (OldWorld.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (locale-ptBR.MPQ) succeeded. -OpenEachMpqTest (OldWorld-ptBR.MPQ) succeeded. -OpenEachMpqTest (speech-ptBR.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptBR-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptBR-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptBR-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptBR-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (locale-ptPT.MPQ) succeeded. -OpenEachMpqTest (OldWorld-ptPT.MPQ) succeeded. -OpenEachMpqTest (speech-ptPT.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptPT-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptPT-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptPT-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-ptPT-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (locale-ruRU.MPQ) succeeded. -OpenEachMpqTest (OldWorld-ruRU.MPQ) succeeded. -OpenEachMpqTest (speech-ruRU.MPQ) succeeded. -OpenEachMpqTest (wow-update-ruRU-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-ruRU-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-ruRU-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-ruRU-16309.MPQ) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (texture.MPQ) succeeded. -OpenEachMpqTest (world.MPQ) succeeded. -OpenEachMpqTest (world2.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (locale-zhCN.MPQ) succeeded. -OpenEachMpqTest (OldWorld-zhCN.MPQ) succeeded. -OpenEachMpqTest (speech-zhCN.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhCN-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhCN-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhCN-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhCN-16309.MPQ) succeeded. -OpenEachMpqTest (expansion1-locale-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion2-locale-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion3-locale-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (locale-zhTW.MPQ) succeeded. -OpenEachMpqTest (OldWorld-zhTW.MPQ) succeeded. -OpenEachMpqTest (speech-zhTW.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhTW-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhTW-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhTW-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-zhTW-16309.MPQ) succeeded. -OpenEachMpqTest (wow-0-16309-OSX-final.MPQ) succeeded. -OpenEachMpqTest (wow-0-16309-Win-final.MPQ) succeeded. -OpenEachMpqTest (alternate.MPQ) succeeded. -OpenEachMpqTest (Base-Win.mpq) succeeded. -OpenEachMpqTest (expansion1-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16309.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16357.MPQ) succeeded. -OpenEachMpqTest (locale-enUS.MPQ) succeeded. -OpenEachMpqTest (speech-enUS.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-enUS-16057.MPQ) succeeded. -OpenEachMpqTest (expansion1.MPQ) succeeded. -OpenEachMpqTest (expansion2.MPQ) succeeded. -OpenEachMpqTest (expansion3.MPQ) succeeded. -OpenEachMpqTest (expansion4.MPQ) succeeded. -OpenEachMpqTest (interface.MPQ) succeeded. -OpenEachMpqTest (itemtexture.MPQ) succeeded. -OpenEachMpqTest (misc.MPQ) succeeded. -OpenEachMpqTest (model.MPQ) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (sound.MPQ) succeeded. -OpenEachMpqTest (texture.MPQ) succeeded. -OpenEachMpqTest (world.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16309.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16357.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16516.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16650.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16844.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-16965.MPQ) succeeded. -OpenEachMpqTest (base-Win.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16516.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16650.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16844.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16965.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17116.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17266.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17325.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17345.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17538.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17645.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17116.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17266.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17325.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17345.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17538.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17645.MPQ) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (base-Win.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16016.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16048.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16057.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16309.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16357.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16516.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16650.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16844.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16965.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-17116.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-17266.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-17325.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-17345.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-17538.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-17645.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-17688.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-17898.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-18273.MPQ) succeeded. -OpenEachMpqTest (patch-base-16016.MPQ) succeeded. -OpenEachMpqTest (patch-base-16048.MPQ) succeeded. -OpenEachMpqTest (patch-base-16057.MPQ) succeeded. -OpenEachMpqTest (patch-base-16309.MPQ) succeeded. -OpenEachMpqTest (patch-base-16357.MPQ) succeeded. -OpenEachMpqTest (patch-base-16516.MPQ) succeeded. -OpenEachMpqTest (patch-base-16650.MPQ) succeeded. -OpenEachMpqTest (patch-base-16844.MPQ) succeeded. -OpenEachMpqTest (patch-base-16965.MPQ) succeeded. -OpenEachMpqTest (patch-base-17116.MPQ) succeeded. -OpenEachMpqTest (patch-base-17266.MPQ) succeeded. -OpenEachMpqTest (patch-base-17325.MPQ) succeeded. -OpenEachMpqTest (patch-base-17345.MPQ) succeeded. -OpenEachMpqTest (patch-base-17538.MPQ) succeeded. -OpenEachMpqTest (patch-base-17645.MPQ) succeeded. -OpenEachMpqTest (patch-base-17688.MPQ) succeeded. -OpenEachMpqTest (patch-base-17898.MPQ) succeeded. -OpenEachMpqTest (patch-base-18273.MPQ) succeeded. -OpenEachMpqTest (expansion1-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion2-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion3-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (expansion4-speech-enGB.MPQ) succeeded. -OpenEachMpqTest (locale-enGB.MPQ) succeeded. -OpenEachMpqTest (speech-enGB.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16016.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16048.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16057.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16309.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16357.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16516.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16650.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16844.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-16965.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17116.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17266.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17325.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17345.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17538.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17645.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17688.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-17898.MPQ) succeeded. -OpenEachMpqTest (wow-update-enGB-18273.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17116.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17266.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17325.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17345.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17538.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17645.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17688.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-17898.MPQ) succeeded. -OpenEachMpqTest (wow-update-base-18273.MPQ) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (Bel'shir Wildlands1.0.SC2Map) succeeded. -OpenEachMpqTest (CubDefensev09.SC2Map) succeeded. -OpenEachMpqTest (Hell_TD_v0.17.SC2Map) succeeded. -OpenEachMpqTest (Magma Mayham.SC2Map) succeeded. -OpenEachMpqTest (Test map - published (locked).SC2Map) succeeded. -OpenEachMpqTest (Test map - published (unlocked).SC2Map) succeeded. -OpenEachMpqTest (TiddaoTest01.SC2Map) succeeded. -OpenEachMpqTest (Tya's Zerg Defense (unprotected).SC2Map) succeeded. -OpenEachMpqTest (Tya's Zerg Defense.SC2Map) succeeded. -OpenEachMpqTest (Zenith.SC2MAP) succeeded. -OpenEachMpqTest (zone_control_belshir.SC2Map) succeeded. -OpenEachMpqTest ((12)(SB) - Shakuras Plateau (Money Map).s2ma) succeeded. -OpenEachMpqTest ((12)(SB) - Shakuras Plateau (Money Map)_orig.s2ma) succeeded. -OpenEachMpqTest ((2) - AI - Blistering Sands.s2ma) succeeded. -OpenEachMpqTest ((2) - AI - Desert Oasis.s2ma) succeeded. -OpenEachMpqTest ((2) - AI - Scrap Station.s2ma) succeeded. -OpenEachMpqTest ((2) - AI - Steppes of War.s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Kulas Ravine (1x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Kulas Ravine (3x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Lost Temple (1x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Lost Temple (3x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Metalopolis (1x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Metalopolis (3x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Shakuras Plateau (1x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Shakuras Plateau (3x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Twilight Fortress (1x).s2ma) succeeded. -OpenEachMpqTest ((4) - AI - Twilight Fortress (3x).s2ma) succeeded. -OpenEachMpqTest (Battle.net.MPQ) succeeded. -OpenEachMpqTest (LOST_v1.SC2Map) succeeded. -OpenEachMpqTest (Backup.MPQ) succeeded. -OpenEachMpqTest (Base.MPQ) succeeded. -OpenEachMpqTest (Installer Tome 1.MPQE) succeeded. -OpenEachMpqTest (Installer UI 1.MPQ) succeeded. -OpenEachMpqTest (Installer UI 2.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 deDE.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 enGB.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 enSG.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 enUS.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 esES.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 esMX.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 frFR.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 itIT.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 plPL.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 ptBR.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 ruRU.MPQE) succeeded. -OpenEachMpqTest (Installer UI 2 zhTW.MPQE) succeeded. -OpenEachMpqTest (Battle.net-patch.MPQ) succeeded. -OpenEachMpqTest (Battle.net.MPQ) succeeded. -OpenEachMpqTest (Challenges.SC2Mod) succeeded. -OpenEachMpqTest (Backup.MPQ) succeeded. -OpenEachMpqTest (Base.MPQ) succeeded. -OpenEachMpqTest (Battle.net.MPQ) succeeded. -OpenEachMpqTest (Challenges.SC2Mod) succeeded. -OpenEachMpqTest (Base-OSX.mpq) succeeded. -OpenEachMpqTest (Base-Win.mpq) succeeded. -OpenEachMpqTest (Battle.net.MPQ) succeeded. -OpenEachMpqTest (Test map.SC2Map) succeeded. -OpenEachMpqTest (Challenges.SC2Mod) succeeded. -OpenEachMpqTest (Base-Win.mpq) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (s2-update-base-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-24540.MPQ) succeeded. -OpenEachMpqTest (patch-base-23258.MPQ) succeeded. -OpenEachMpqTest (patch-base-24540.MPQ) succeeded. -OpenEachMpqTest (patch-deDE-23258.MPQ) succeeded. -OpenEachMpqTest (patch-deDE-24540.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-23258.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-24540.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-23258.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-24540.MPQ) succeeded. -OpenEachMpqTest (patch-esES-23258.MPQ) succeeded. -OpenEachMpqTest (patch-esES-24540.MPQ) succeeded. -OpenEachMpqTest (patch-esMX-23258.MPQ) succeeded. -OpenEachMpqTest (patch-esMX-24540.MPQ) succeeded. -OpenEachMpqTest (patch-frFR-23258.MPQ) succeeded. -OpenEachMpqTest (patch-frFR-24540.MPQ) succeeded. -OpenEachMpqTest (patch-itIT-23258.MPQ) succeeded. -OpenEachMpqTest (patch-itIT-24540.MPQ) succeeded. -OpenEachMpqTest (patch-koKR-23258.MPQ) succeeded. -OpenEachMpqTest (patch-koKR-24540.MPQ) succeeded. -OpenEachMpqTest (patch-plPL-23258.MPQ) succeeded. -OpenEachMpqTest (patch-plPL-24540.MPQ) succeeded. -OpenEachMpqTest (patch-ptBR-23258.MPQ) succeeded. -OpenEachMpqTest (patch-ptBR-24540.MPQ) succeeded. -OpenEachMpqTest (patch-ruRU-23258.MPQ) succeeded. -OpenEachMpqTest (patch-ruRU-24540.MPQ) succeeded. -OpenEachMpqTest (patch-zhCN-23258.MPQ) succeeded. -OpenEachMpqTest (patch-zhCN-24540.MPQ) succeeded. -OpenEachMpqTest (patch-zhTW-23258.MPQ) succeeded. -OpenEachMpqTest (patch-zhTW-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-deDE-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-deDE-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-enUS-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-enUS-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-esES-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-esES-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-esMX-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-esMX-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-frFR-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-frFR-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-itIT-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-itIT-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-koKR-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-koKR-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-plPL-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-plPL-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-ptBR-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-ptBR-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-ruRU-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-ruRU-24540.MPQ) succeeded. -OpenEachMpqTest (s2-0-24540-Win-final.MPQ) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_Base.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_Base1.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_deDE.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_enGB.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_enUS.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_esES.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_esMX.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_frFR.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_itIT.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_koKR.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_plPL.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_ptBR.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_ruRU.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_zhTW.MPQE) succeeded. -OpenEachMpqTest (MigrationContent_base1.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_deDE.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_enGB.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_enUS.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_esES.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_esMX.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_frFR.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_itIT.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_koKR.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_plPL.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_ptBR.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_ruRU.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_zhCN.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_zhTW.MPQ) succeeded. -OpenEachMpqTest (s2-update-zhCN-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-zhCN-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-zhTW-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-zhTW-24540.MPQ) succeeded. -OpenEachMpqTest (Battle.net.MPQ) succeeded. -OpenEachMpqTest (Challenges.SC2Mod) succeeded. -OpenEachMpqTest (Base-Win.mpq) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (s2-update-base-24764.MPQ) succeeded. -OpenEachMpqTest (s2-update-enUS-24764.MPQ) succeeded. -OpenEachMpqTest (s2-0-24764-Win-final.MPQ) succeeded. -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest: Failed to open archive \Multimedia\MPQs\2010 - Starcraft II\25092\Updates\base\s2-update-base-24540.MPQ (error code: 1392) -OpenEachMpqTest: Failed to open archive \Multimedia\MPQs\2010 - Starcraft II\25092\Updates\base\s2-update-base-25092.MPQ (error code: 1392) -OpenEachMpqTest (patch-base-23258.MPQ) succeeded. -OpenEachMpqTest (patch-base-24540.MPQ) succeeded. -OpenEachMpqTest (patch-deDE-23258.MPQ) succeeded. -OpenEachMpqTest (patch-deDE-24540.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-23258.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-24540.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-23258.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-24540.MPQ) succeeded. -OpenEachMpqTest (patch-esES-23258.MPQ) succeeded. -OpenEachMpqTest (patch-esES-24540.MPQ) succeeded. -OpenEachMpqTest (patch-esMX-23258.MPQ) succeeded. -OpenEachMpqTest (patch-esMX-24540.MPQ) succeeded. -OpenEachMpqTest (patch-frFR-23258.MPQ) succeeded. -OpenEachMpqTest (patch-frFR-24540.MPQ) succeeded. -OpenEachMpqTest (patch-itIT-23258.MPQ) succeeded. -OpenEachMpqTest (patch-itIT-24540.MPQ) succeeded. -OpenEachMpqTest (patch-koKR-23258.MPQ) succeeded. -OpenEachMpqTest (patch-koKR-24540.MPQ) succeeded. -OpenEachMpqTest (patch-plPL-23258.MPQ) succeeded. -OpenEachMpqTest (patch-plPL-24540.MPQ) succeeded. -OpenEachMpqTest (patch-ptBR-23258.MPQ) succeeded. -OpenEachMpqTest (patch-ptBR-24540.MPQ) succeeded. -OpenEachMpqTest (patch-ruRU-23258.MPQ) succeeded. -OpenEachMpqTest (patch-ruRU-24540.MPQ) succeeded. -OpenEachMpqTest (patch-zhCN-23258.MPQ) succeeded. -OpenEachMpqTest (patch-zhCN-24540.MPQ) succeeded. -OpenEachMpqTest (patch-zhTW-23258.MPQ) succeeded. -OpenEachMpqTest (patch-zhTW-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-deDE-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-deDE-24540.MPQ) succeeded. -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest (s2-update-enUS-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-enUS-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-esES-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-esES-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-esMX-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-esMX-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-frFR-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-frFR-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-itIT-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-itIT-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-koKR-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-koKR-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-plPL-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-plPL-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-ptBR-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-ptBR-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-ruRU-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-ruRU-24540.MPQ) succeeded. -OpenEachMpqTest (s2-0-24540-Win-final.MPQ) succeeded. -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest (SC2_HotS_20_BGDL_Base.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_Base1.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_deDE.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_enGB.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_enUS.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_esES.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_esMX.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_frFR.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_itIT.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_koKR.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_plPL.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_ptBR.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_ruRU.MPQE) succeeded. -OpenEachMpqTest (SC2_HotS_20_BGDL_zhTW.MPQE) succeeded. -OpenEachMpqTest (MigrationContent_base1.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_deDE.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_enGB.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_enUS.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_esES.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_esMX.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_frFR.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_itIT.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_koKR.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_plPL.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_ptBR.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_ruRU.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_zhCN.MPQ) succeeded. -OpenEachMpqTest (MigrationContent_zhTW.MPQ) succeeded. -OpenEachMpqTest (s2-update-zhCN-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-zhCN-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-zhTW-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-zhTW-24540.MPQ) succeeded. -OpenEachMpqTest (Battle.net.MPQ) succeeded. -OpenEachMpqTest (SwarmStoryUtil.SC2Mod) succeeded. -OpenEachMpqTest (Challenges.SC2Mod) succeeded. -OpenEachMpqTest (Base-Win.mpq) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (s2-update-base-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-25293.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-26147.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-26825.MPQ) succeeded. -OpenEachMpqTest (patch-base-25293.MPQ) succeeded. -OpenEachMpqTest (patch-base-26147.MPQ) succeeded. -OpenEachMpqTest (patch-base-26825.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-26147.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-26825.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-26147.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-26825.MPQ) succeeded. -OpenEachMpqTest (s2-0-26825-Win-final.MPQ) succeeded. -OpenEachMpqTest (Battle.net.MPQ) succeeded. -OpenEachMpqTest (SwarmStoryUtil.SC2Mod) succeeded. -OpenEachMpqTest (Challenges.SC2Mod) succeeded. -OpenEachMpqTest (Base-Win.mpq) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (s2-update-base-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-26147.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-28522.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-32384.MPQ) succeeded. -OpenEachMpqTest (s2-update-base-34644.MPQ) succeeded. -OpenEachMpqTest (patch-base-26147.MPQ) succeeded. -OpenEachMpqTest (patch-base-28522.MPQ) succeeded. -OpenEachMpqTest (patch-base-32384.MPQ) succeeded. -OpenEachMpqTest (patch-base-34644.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-26147.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-28522.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-32384.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-34644.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-23258.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-24540.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-26147.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-28522.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-32384.MPQ) succeeded. -OpenEachMpqTest (s2-update-enGB-34644.MPQ) succeeded. -OpenEachMpqTest (s2-0-34644-Win-final.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-7170.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-7200.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-7318.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-7338.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-7447.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-7728.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-7841.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-7931.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-8059.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-8101.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-8296.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-8350.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-8392.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-8610.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-8815.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-8896.MPQ) succeeded. -OpenEachMpqTest (base-Win.mpq) succeeded. -OpenEachMpqTest (patch-base-7170.MPQ) succeeded. -OpenEachMpqTest (patch-base-7200.MPQ) succeeded. -OpenEachMpqTest (patch-base-7318.MPQ) succeeded. -OpenEachMpqTest (patch-base-7338.MPQ) succeeded. -OpenEachMpqTest (patch-base-7447.MPQ) succeeded. -OpenEachMpqTest (patch-base-7728.MPQ) succeeded. -OpenEachMpqTest (patch-base-7841.MPQ) succeeded. -OpenEachMpqTest (patch-base-7931.MPQ) succeeded. -OpenEachMpqTest (patch-base-8059.MPQ) succeeded. -OpenEachMpqTest (patch-base-8101.MPQ) succeeded. -OpenEachMpqTest (patch-base-8296.MPQ) succeeded. -OpenEachMpqTest (patch-base-8350.MPQ) succeeded. -OpenEachMpqTest (patch-base-8392.MPQ) succeeded. -OpenEachMpqTest (patch-base-8610.MPQ) succeeded. -OpenEachMpqTest (patch-base-8815.MPQ) succeeded. -OpenEachMpqTest (patch-base-8896.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-7170.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-7200.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-7318.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-7338.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-7447.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-7728.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-7841.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-7931.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-8059.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-8296.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-8392.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-8610.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-8815.MPQ) succeeded. -OpenEachMpqTest (patch-enUS-8896.MPQ) succeeded. -OpenEachMpqTest (patch-Win-7200.MPQ) succeeded. -OpenEachMpqTest (patch-Win-7318.MPQ) succeeded. -OpenEachMpqTest (patch-Win-7338.MPQ) succeeded. -OpenEachMpqTest (patch-Win-7447.MPQ) succeeded. -OpenEachMpqTest (patch-Win-7728.MPQ) succeeded. -OpenEachMpqTest (patch-Win-7841.MPQ) succeeded. -OpenEachMpqTest (patch-Win-7931.MPQ) succeeded. -OpenEachMpqTest (patch-Win-8059.MPQ) succeeded. -OpenEachMpqTest (patch-Win-8101.MPQ) succeeded. -OpenEachMpqTest (patch-Win-8296.MPQ) succeeded. -OpenEachMpqTest (patch-Win-8350.MPQ) succeeded. -OpenEachMpqTest (patch-Win-8392.MPQ) succeeded. -OpenEachMpqTest (patch-Win-8610.MPQ) succeeded. -OpenEachMpqTest (patch-Win-8815.MPQ) succeeded. -OpenEachMpqTest (patch-Win-8896.MPQ) succeeded. -OpenEachMpqTest (ClientData.mpq) succeeded. -OpenEachMpqTest (CoreData.mpq) succeeded. -OpenEachMpqTest (d3-update-enUS-7170.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-7200.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-7318.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-7338.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-7447.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-7728.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-7841.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-7931.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-8059.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-8296.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-8392.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-8610.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-8815.MPQ) succeeded. -OpenEachMpqTest (d3-update-enUS-8896.MPQ) succeeded. -OpenEachMpqTest (enUS_Audio.mpq) succeeded. -OpenEachMpqTest (enUS_Cutscene.mpq) succeeded. -OpenEachMpqTest (enUS_Text.mpq) succeeded. -OpenEachMpqTest (HLSLShaders.mpq) succeeded. -OpenEachMpqTest (patch.MPQ) succeeded. -OpenEachMpqTest (Sound.mpq) succeeded. -OpenEachMpqTest (Texture.mpq) succeeded. -OpenEachMpqTest (d3-update-Win-7200.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-7318.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-7338.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-7447.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-7728.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-7841.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-7931.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-8059.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-8101.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-8296.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-8350.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-8392.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-8610.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-8815.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-8896.MPQ) succeeded. -OpenEachMpqTest (Installer Tome 1 deDE.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 enGB.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 enSG.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 enUS.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 esES.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 esMX.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 frFR.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 itIT.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 koKR.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 plPL.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 ptBR.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 ruRU.MPQE) succeeded. -OpenEachMpqTest (Installer Tome 1 zhTW.MPQE) succeeded. -OpenEachMpqTest (d3-update-base-10057.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-10235.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-10485.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-11327.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-12480.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-12811.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-13300.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-13644.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-9558.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-9749.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-9858.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-9950.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-9991.MPQ) succeeded. -OpenEachMpqTest (base-Win.mpq) succeeded. -OpenEachMpqTest (patch-base-10057.MPQ) succeeded. -OpenEachMpqTest (patch-base-10235.MPQ) succeeded. -OpenEachMpqTest (patch-base-10485.MPQ) succeeded. -OpenEachMpqTest (patch-base-11327.MPQ) succeeded. -OpenEachMpqTest (patch-base-12480.MPQ) succeeded. -OpenEachMpqTest (patch-base-12811.MPQ) succeeded. -OpenEachMpqTest (patch-base-13300.MPQ) succeeded. -OpenEachMpqTest (patch-base-13644.MPQ) succeeded. -OpenEachMpqTest (patch-base-9558.MPQ) succeeded. -OpenEachMpqTest (patch-base-9749.MPQ) succeeded. -OpenEachMpqTest (patch-base-9858.MPQ) succeeded. -OpenEachMpqTest (patch-base-9950.MPQ) succeeded. -OpenEachMpqTest (patch-base-9991.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-10057.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-10485.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-11327.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-12480.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-13300.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-9558.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-9749.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-9858.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-9950.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-9991.MPQ) succeeded. -OpenEachMpqTest (patch-Win-10057.MPQ) succeeded. -OpenEachMpqTest (patch-Win-11327.MPQ) succeeded. -OpenEachMpqTest (patch-Win-12480.MPQ) succeeded. -OpenEachMpqTest (patch-Win-9558.MPQ) succeeded. -OpenEachMpqTest (ClientData.mpq) succeeded. -OpenEachMpqTest (CoreData.mpq) succeeded. -OpenEachMpqTest (d3-update-enGB-10057.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-10485.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-11327.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-12480.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-13300.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-9558.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-9749.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-9858.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-9950.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-9991.MPQ) succeeded. -OpenEachMpqTest (enGB_Audio.mpq) succeeded. -OpenEachMpqTest (enGB_Cutscene.mpq) succeeded. -OpenEachMpqTest (enGB_Text.mpq) succeeded. -OpenEachMpqTest (HLSLShaders.mpq) succeeded. -OpenEachMpqTest (Sound.mpq) succeeded. -OpenEachMpqTest (Texture.mpq) succeeded. -OpenEachMpqTest (d3-update-Win-10057.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-11327.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-12480.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-9558.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-14633.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-15295.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-16416.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-16603.MPQ) succeeded. -OpenEachMpqTest (patch-base-14633.MPQ) succeeded. -OpenEachMpqTest (patch-base-15295.MPQ) succeeded. -OpenEachMpqTest (patch-base-16416.MPQ) succeeded. -OpenEachMpqTest (patch-base-16603.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-14633.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-16416.MPQ) succeeded. -OpenEachMpqTest (patch-Win-16416.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-14633.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-16416.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-16416.MPQ) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (d3-update-base-21876.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-22044.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-22274.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-22427.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-23119.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-23920.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-24017.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-24641.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-26451.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-27255.MPQ) succeeded. -OpenEachMpqTest (d3-update-base-28709.MPQ) succeeded. -OpenEachMpqTest (base-Win.mpq) succeeded. -OpenEachMpqTest (patch-base-21876.MPQ) succeeded. -OpenEachMpqTest (patch-base-22044.MPQ) succeeded. -OpenEachMpqTest (patch-base-22274.MPQ) succeeded. -OpenEachMpqTest (patch-base-22427.MPQ) succeeded. -OpenEachMpqTest (patch-base-23119.MPQ) succeeded. -OpenEachMpqTest (patch-base-23920.MPQ) succeeded. -OpenEachMpqTest (patch-base-24017.MPQ) succeeded. -OpenEachMpqTest (patch-base-24641.MPQ) succeeded. -OpenEachMpqTest (patch-base-26451.MPQ) succeeded. -OpenEachMpqTest (patch-base-27255.MPQ) succeeded. -OpenEachMpqTest (patch-base-28709.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-21876.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-22044.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-22274.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-22427.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-23119.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-23920.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-24641.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-26451.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-27255.MPQ) succeeded. -OpenEachMpqTest (patch-enGB-28709.MPQ) succeeded. -OpenEachMpqTest (patch-Win-21876.MPQ) succeeded. -OpenEachMpqTest (patch-Win-22044.MPQ) succeeded. -OpenEachMpqTest (patch-Win-23119.MPQ) succeeded. -OpenEachMpqTest (patch-Win-23920.MPQ) succeeded. -OpenEachMpqTest (patch-Win-26451.MPQ) succeeded. -OpenEachMpqTest (patch-Win-27255.MPQ) succeeded. -OpenEachMpqTest (patch-Win-28709.MPQ) succeeded. -OpenEachMpqTest (ClientData.mpq) succeeded. -OpenEachMpqTest (CoreData.mpq) succeeded. -OpenEachMpqTest (d3-update-enGB-21876.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-22044.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-22274.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-22427.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-23119.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-23920.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-24641.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-26451.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-27255.MPQ) succeeded. -OpenEachMpqTest (d3-update-enGB-28709.MPQ) succeeded. -OpenEachMpqTest (enGB_Audio.mpq) succeeded. -OpenEachMpqTest (enGB_Cutscene.mpq) succeeded. -OpenEachMpqTest (enGB_Text.mpq) succeeded. -OpenEachMpqTest (HLSLShaders.mpq) succeeded. -OpenEachMpqTest (Sound.mpq) succeeded. -OpenEachMpqTest (Texture.mpq) succeeded. -OpenEachMpqTest (d3-update-Win-21876.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-22044.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-23119.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-23920.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-26451.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-27255.MPQ) succeeded. -OpenEachMpqTest (d3-update-Win-28709.MPQ) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (Installer Tome 1.MPQ) succeeded. -OpenEachMpqTest (base-Win.MPQ) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (base-Win.MPQ) succeeded. -OpenEachMpqTest (SetupWin.mpq) succeeded. -OpenEachMpqTest (hs-0-5314-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-5314-5435-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-5435-5506-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-5506-5834-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-5834-6024-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6024-6141-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6141-6187-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6187-6284-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6284-6485-Win-final.MPQ) succeeded. -OpenEachMpqTest (hs-6485-6898-Win-final.MPQ) succeeded. -OpenEachMpqTest: Failed to open archive \Multimedia\MPQs\model.MPQ.0 (error code: 11) -OpenEachMpqTest (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. -OpenEachMpqTest (MPQ_1998_v1_StarDat.mpq) succeeded. -OpenEachMpqTest (MPQ_1999_v1_WeakSigned1.mpq) succeeded. -OpenEachMpqTest (MPQ_1999_v1_WeakSigned2.mpq) succeeded. -OpenEachMpqTest (MPQ_2002_v1_StrongSignature.w3m) succeeded. -OpenEachMpqTest (MPQ_2009_v1_patch-complete.MPQ.part) succeeded. -OpenEachMpqTest (MPQ_2009_v1_patch-created.MPQ.part) succeeded. -OpenEachMpqTest (MPQ_2009_v1_patch-partial.MPQ.part) succeeded. -OpenEachMpqTest (MPQ_2009_v2_WoW_patch.MPQ.part) succeeded. -OpenEachMpqTest (MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. -OpenEachMpqTest (MPQ_2013_v4_alternate-complete.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_alternate-created.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_alternate-incomplete.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_alternate-original.MPQ) succeeded. -OpenEachMpqTest (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest (MPQ_2014_v1_out1.w3x) succeeded. -OpenEachMpqTest (MPQ_2014_v1_out2.w3x) succeeded. -OpenEachMpqTest (MPQ_2022_v1_v4.329.w3x) succeeded. -OpenEachMpqTest (StormLibTest_AddWaveMonoBadTest.mpq) succeeded. -OpenEachMpqTest (StormLibTest_AddWaveMonoTest.mpq) succeeded. -OpenEachMpqTest (StormLibTest_AddWaveStereoTest.mpq) succeeded. -OpenEachMpqTest (StormLibTest_BigArchive_v4.mpq) succeeded. -OpenEachMpqTest (StormLibTest_CraftedMpq1_v3.mpq) succeeded. -OpenEachMpqTest (StormLibTest_CraftedMpq2_v4.mpq) succeeded. -OpenEachMpqTest (StormLibTest_CraftedMpq3_v4.mpq) succeeded. -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest: Warning: no files in the archive -OpenEachMpqTest (StormLibTest_FileFlagTest.mpq) succeeded. -OpenEachMpqTest (StormLibTest_FileTableFull.mpq) succeeded. -OpenEachMpqTest (StormLibTest_GapsTest.mpq) succeeded. -OpenEachMpqTest (StormLibTest_HasListFile.mpq) succeeded. -OpenEachMpqTest (StormLibTest_IncMaxFileCount.mpq) succeeded. -OpenEachMpqTest (StormLibTest_ListFilePos.mpq) succeeded. -OpenEachMpqTest (StormLibTest_MpqEditorTest.mpq) succeeded. -OpenEachMpqTest (StormLibTest_NoListFile.mpq) succeeded. -OpenEachMpqTest (StormLibTest_NonStdNames.mpq) succeeded. -OpenEachMpqTest (StormLibTest_ReadOnly.mpq) succeeded. -OpenEachMpqTest (StormLibTest_ReadWrite.mpq) succeeded. -OpenEachMpqTest (StormLibTest_Reopened.mpq) succeeded. -OpenEachMpqTest (File00000003.mpq) succeeded. -CreateEmptyMpq: The file "File00000000.xxx" is present, but it should not be -CreateEmptyMpq: The file "File00000000.xxx" is present, but it should not be -CreateGapsTest (StormLibTest_GapsTest.mpq) succeeded. -NonStdNamesTest (StormLibTest_NonStdNames.mpq) succeeded. +InitWorkFolder: Work directory \Multimedia\MPQs (default) +TestLiFiSearch (FLAT-MAP:ListFile_Blizzard.txt) succeeded. +TestLiFiSearch (ListFile_Blizzard.txt) succeeded. +TestFileStream (MPQ_2013_v4_alternate-original.MPQ) succeeded. +TestFileStream (MPQ_2013_v4_alternate-original.MPQ) succeeded. +TestFileStream (MPQ_2013_v4_alternate-complete.MPQ) succeeded. +TestFileStream (part-file://MPQ_2009_v2_WoW_patch.MPQ.part) succeeded. +TestFileStream (blk4-file://streaming/model.MPQ.0) succeeded. +TestFileStream (mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. +TestFileMirror (part-file://MPQ_2009_v1_patch-created.MPQ.part) succeeded. +TestFileMirror (part-file://MPQ_2009_v1_patch-partial.MPQ.part) succeeded. +TestFileMirror (part-file://MPQ_2009_v1_patch-complete.MPQ.part) succeeded. +TestFileMirror (MPQ_2013_v4_alternate-created.MPQ) succeeded. +TestFileMirror (MPQ_2013_v4_alternate-incomplete.MPQ) succeeded. +TestFileMirror (MPQ_2013_v4_alternate-complete.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_patch_rt_SC1B.mpq) succeeded. +TestReadingMpq (MPQ_1997_v1_StarDat_SC1B.mpq) succeeded. +TestReadingMpq (MPQ_1997_v1_INSTALL_SC1B.EXE_) succeeded. +TestReadingMpq: Warning: CRC32 error on (signature) +TestReadingMpq: Warning: CRC32 error on (signature) +TestReadingMpq (MPQ_2016_v1_D2XP_IX86_1xx_114a.mpq) succeeded. +TestReadingMpq (MPQ_2018_v1_icon_error.w3m) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_STANDARD.SNP) succeeded. +TestReadingMpq (MPQ_2012_v2_EmptyMpq.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_EmptyMpq.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_patch-base-16357.MPQ) succeeded. +TestReadingMpq (MPQ_2011_v4_InvalidHetEntryCount.MPQ) succeeded. +TestReadingMpq (MPQ_2002_v1_BlockTableCut.MPQ) succeeded. +TestReadingMpq (MPQ_2010_v2_HasUserData.s2ma) succeeded. +TestReadingMpq: Warning: CRC32 error on (listfile) +TestReadingMpq: Warning: CRC32 error on (listfile) +TestReadingMpq: Warning: CRC32 error on File00000003.xxx +TestReadingMpq (MPQ_2014_v1_AttributesOneEntryLess.w3x) succeeded. +TestReadingMpq (MPQ_2020_v1_AHF04patch.mix) succeeded. +TestReadingMpq (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. +TestReadingMpq (mpqe-file://MPQ_2011_v2_EncryptedMpq.MPQE) succeeded. +TestReadingMpq (part-file://MPQ_2010_v2_HashTableCompressed.MPQ.part) succeeded. +TestReadingMpq (blk4-file://streaming/model.MPQ.0) succeeded. +TestReadingMpq: Warning: CRC32 error on replay.message.events +TestReadingMpq (MPQ_2023_v2_MemoryCorruption.SC2Replay) succeeded. +TestReadingMpq (MPQ_2023_v1_StarcraftMap.scm) succeeded. +TestReadingMpq (MPQ_2023_v1_BroodWarMap.scx) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_InvalidUserData.w3x) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_InvalidMpqFormat.w3x) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_Spazzler.w3x) succeeded. +TestReadingMpq (MPQ_2014_v1_ProtectedMap_Spazzler2.w3x) succeeded. +TestReadingMpq (MPQ_2014_v1_ProtectedMap_Spazzler3.w3x) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_BOBA.w3m) succeeded. +TestReadingMpq (MPQ_2015_v1_ProtectedMap_KangTooJee.w3x) succeeded. +TestReadingMpq (MPQ_2015_v1_ProtectedMap_Somj2hM16.w3x) succeeded. +TestReadingMpq (MPQ_2015_v1_ProtectedMap_Spazy.w3x) succeeded. +TestReadingMpq (MPQ_2015_v1_MessListFile.mpq) succeeded. +TestReadingMpq (MPQ_2016_v1_ProtectedMap_TableSizeOverflow.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_ProtectedMap_HashOffsIsZero.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_ProtectedMap_Somj2.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_WME4_4.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_SP_(4)Adrenaline.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_ProtectedMap_1.4.w3x) succeeded. +TestReadingMpq (MPQ_2016_v1_KoreanFile.w3m) succeeded. +TestReadingMpq (MPQ_2017_v1_Eden_RPG_S2_2.5J.w3x) succeeded. +TestReadingMpq (MPQ_2017_v1_BigDummyFiles.w3x) succeeded. +TestReadingMpq (MPQ_2017_v1_TildeInFileName.mpq) succeeded. +TestReadingMpq (MPQ_2018_v1_EWIX_v8_7.w3x) succeeded. +TestReadingMpq (MPQ_2020_v4_FakeMpqHeaders.SC2Mod) succeeded. +TestReadingMpq (MPQ_2020_v4_NP_Protect_1.s2ma) succeeded. +TestReadingMpq (MPQ_2020_v4_NP_Protect_2.s2ma) succeeded. +TestReadingMpq (MPQ_2015_v1_flem1.w3x) succeeded. +TestReadingMpq (MPQ_2002_v1_ProtectedMap_HashTable_FakeValid.w3x) succeeded. +TestReadingMpq (MPQ_2021_v1_CantExtractCHK.scx) succeeded. +TestReadingMpq (MPQ_2022_v1_Sniper.scx) succeeded. +TestReadingMpq (MPQ_2022_v1_OcOc_Bound_2.scx) succeeded. +TestReadingMpq (MPQ_2020_v1_HS0.1.asi) succeeded. +TestReadingMpq (MPQ_2022_v1_hs0.8.asi) succeeded. +TestReadingMpq (MPQ_2022_v1_MoeMoeMod.asi) succeeded. +TestReadingMpq (MPx_2013_v1_LongwuOnline.mpk) succeeded. +TestReadingMpq (MPx_2013_v1_WarOfTheImmortals.sqp) succeeded. +TestReadingMpq (MPx_2022_v1_Music.mpk) succeeded. +TestReadingMpq (MPx_2022_v1_Scp.mpk) succeeded. +TestReadingMpq (MPx_2022_v1_UI.mpk) succeeded. +TestReadingMpq (MPQ_1998_v1_StarCraft.mpq) succeeded. +TestReadingMpq (MPQ_2012_v4_OldWorld.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_world.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_locale-enGB.MPQ) succeeded. +TestReadingMpq (MPQ_2013_v4_Base1.SC2Data) succeeded. +TestReadingMpq (MPQ_2013_v4_Mods#Core.SC2Mod#enGB.SC2Assets) succeeded. +TestReadingMpq (MPQ_2013_v4_Base1.SC2Data) succeeded. +TestReadingMpq (MPQ_2013_v4_Base3.SC2Maps) succeeded. +TestReadingMpq (MPQ_2013_v4_Mods#Liberty.SC2Mod#enGB.SC2Data) succeeded. +TestReadingMpq (MPQ_2014_v4_base-Win.MPQ) succeeded. +TestReadingMpq (MPQ_2014_v4_base-Win.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_STANDARD.SNP) succeeded. +TestReadingMpq (MPQ_1999_v1_WeakSignature.exe) succeeded. +TestReadingMpq (MPQ_2003_v1_WeakSignatureEmpty.exe) succeeded. +TestReadingMpq (MPQ_2002_v1_StrongSignature.w3m) succeeded. +TestReadingMpq (MPQ_1998_v1_StarDat.mpq) succeeded. +TestReadingMpq (MPQ_1999_v1_WeakSignature.exe) succeeded. +TestReadingMpq (flat-file://streaming/model.MPQ.0) succeeded. +TestReadingMpq (MPQ_2013_vX_Battle.net.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. +TestReadingMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. +TestReadingMpq (MPQ_2002_v1_StrongSignature.w3m) succeeded. +TestReadingMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. +Test_ReopenMpq (MPQ_2010_v3_expansion-locale-frFR.MPQ) succeeded. +Test_ReopenMpq (MPQ_2016_v1_00000.pak) succeeded. +Test_ReopenMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. +Test_ReopenMpq (MPQ_2013_v4_expansion1.MPQ) succeeded. +Test_ReopenMpq (MPQ_2014_v1_out1.w3x) succeeded. +Test_ReopenMpq (MPQ_2014_v1_out2.w3x) succeeded. +Test_ReopenMpq (MPQ_1997_v1_Diablo1_DIABDAT.MPQ) succeeded. +Test_ReopenMpq (MPQ_2013_v4_SC2_EmptyMap.SC2Map) succeeded. +Test_Signature (MPQ_1999_v1_WeakSigned1.mpq) succeeded. +Test_Signature (MPQ_1999_v1_WeakSigned1.mpq) succeeded. +TestVerifyHash succeeded. +CreateEmptyMpq (StormLibTest_EmptyMpq_v2.mpq) succeeded. +CreateEmptyMpq (StormLibTest_EmptyMpq_v4.mpq) succeeded. +TestCreateGaps (StormLibTest_GapsTest.mpq) succeeded. +TestNonStdNames (StormLibTest_NonStdNames.mpq) succeeded. CreateMpqEditor (StormLibTest_MpqEditorTest.mpq) succeeded. -CreateFullMpq (StormLibTest_FileTableFull.mpq) succeeded. -CreateFullMpq (StormLibTest_FileTableFull.mpq) succeeded. -CreateFullMpq (StormLibTest_FileTableFull.mpq) succeeded. -CreateFullMpq (StormLibTest_FileTableFull.mpq) succeeded. +TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. +TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. +TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. +TestCreateFull (StormLibTest_FileTableFull.mpq) succeeded. IncMaxFileCount (StormLibTest_IncMaxFileCount.mpq) succeeded. MpqUnicodeName succeeded. -FileFlagTest (StormLibTest_FileFlagTest.mpq) succeeded. -CompressionsTest: Warning: CRC32 error on WaveFile_01.wav -CompressionsTest: Warning: CRC32 error on WaveFile_02.wav -CompressionsTest (StormLibTest_AddWaveMonoBadTest.mpq) succeeded. -CompressionsTest: Warning: CRC32 error on WaveFile_01.wav -CompressionsTest: Warning: CRC32 error on WaveFile_02.wav +TestFileFlag (StormLibTest_FileFlagTest.mpq) succeeded. +TestCompressions: Warning: CRC32 error on WaveFile_01.wav +TestCompressions: Warning: CRC32 error on WaveFile_02.wav +TestCompressions (StormLibTest_AddWaveMonoBadTest.mpq) succeeded. +TestCompressions: Warning: CRC32 error on WaveFile_01.wav +TestCompressions: Warning: CRC32 error on WaveFile_02.wav ListFilePos (StormLibTest_ListFilePos.mpq) succeeded. -BigMpqTest (StormLibTest_BigArchive_v4.mpq) succeeded. -ModifyTest (MPQ_2014_v4_Base.StormReplay) succeeded. -ModifyTest (MPQ_2022_v1_v4.329.w3x) succeeded. - -E:\Ladik\Appdir\StormLib\bin\StormLib_test\x64\Release> \ No newline at end of file +TestBigArchive (StormLibTest_BigArchive_v4.mpq) succeeded. +TestModifyMpq (MPQ_2014_v4_Base.StormReplay) succeeded. +TestModifyMpq (MPQ_2022_v1_v4.329.w3x) succeeded.