diff --git a/ROMVault2/DatReaders/DatCmpReader.cs b/ROMVault2/DatReaders/DatCmpReader.cs index 35f1b38..0eb176f 100644 --- a/ROMVault2/DatReaders/DatCmpReader.cs +++ b/ROMVault2/DatReaders/DatCmpReader.cs @@ -7,6 +7,7 @@ using System; using System.ComponentModel; using System.IO; +using System.Text; using ROMVault2.Properties; using ROMVault2.RvDB; using ROMVault2.Utils; @@ -548,7 +549,7 @@ namespace ROMVault2.DatReaders int errorCode = IO.FileStream.OpenFileRead(strFilename, out _fileStream); if (errorCode != 0) return errorCode; - _streamReader = new StreamReader(_fileStream, Program.Enc); + _streamReader = new StreamReader(_fileStream, Encoding.UTF8); return 0; } public static void Close() @@ -578,7 +579,7 @@ namespace ROMVault2.DatReaders while ((_line.Trim().Length == 0) && (!_streamReader.EndOfStream)) { _line = _streamReader.ReadLine(); - _line = (_line??"").Replace("" + (char)9, " "); + _line = (_line ?? "").Replace("" + (char)9, " "); if (_line.TrimStart().Length > 2 && _line.TrimStart().Substring(0, 2) == @"//") _line = ""; if (_line.TrimStart().Length > 1 && _line.TrimStart().Substring(0, 1) == @"#") _line = ""; if (_line.TrimStart().Length > 1 && _line.TrimStart().Substring(0, 1) == @";") _line = ""; diff --git a/ROMVault2/DatReaders/DatXMLReader.cs b/ROMVault2/DatReaders/DatXMLReader.cs index d421215..9fbb53e 100644 --- a/ROMVault2/DatReaders/DatXMLReader.cs +++ b/ROMVault2/DatReaders/DatXMLReader.cs @@ -124,6 +124,12 @@ namespace ROMVault2.DatReaders tDat.AddData(RvDat.DatData.FileType, "zip"); thisFileType = FileType.ZipFile; break; +#if sevenzip + case "7z": + tDat.AddData(RvDat.DatData.FileType, "7z"); + thisFileType = FileType.SevenZipFile; + break; +#endif case "unzip": case "file": tDat.AddData(RvDat.DatData.FileType, "file"); diff --git a/ROMVault2/DatUpdate.cs b/ROMVault2/DatUpdate.cs index bd4a4b8..b693827 100644 --- a/ROMVault2/DatUpdate.cs +++ b/ROMVault2/DatUpdate.cs @@ -284,7 +284,7 @@ namespace ROMVault2 FileType ft = dbDir.FileType; // if we are checking a dir or zip recurse into it. - if (ft != FileType.Zip && ft != FileType.Dir) return EFile.Keep; + if (ft != FileType.Zip && ft != FileType.Dir && ft!=FileType.SevenZip) return EFile.Keep; RvDir tDir = dbDir as RvDir; // remove all DATStatus's here they will get set back correctly when adding dats back in below. @@ -296,7 +296,7 @@ namespace ROMVault2 tDir.ChildRemove(i); i--; } - if (ft == FileType.Zip && dbDir.GotStatus == GotStatus.Corrupt) return EFile.Keep; + if ((ft == FileType.Zip || ft==FileType.SevenZip) && dbDir.GotStatus == GotStatus.Corrupt) return EFile.Keep; // if this directory is now empty it should be deleted return tDir.ChildCount == 0 ? EFile.Delete : EFile.Keep; @@ -544,7 +544,7 @@ namespace ROMVault2 FileType ft = dbChild.FileType; - if (ft == FileType.Zip || ft == FileType.Dir) + if (ft == FileType.Zip || ft==FileType.SevenZip || ft == FileType.Dir) { RvDir dChild = (RvDir)dbChild; RvDir dNewChild = (RvDir)newDatChild; @@ -605,7 +605,7 @@ namespace ROMVault2 FileType ft = dbChild.FileType; - if (ft == FileType.Zip || ft == FileType.Dir) + if (ft == FileType.Zip || ft == FileType.Dir || ft==FileType.SevenZip) { RvDir dbDir = (RvDir)dbChild; for (int i = 0; i < dbDir.ChildCount; i++) @@ -627,7 +627,7 @@ namespace ROMVault2 // filetypes are now know to be the same // Dir's and Zip's are not deep scanned so matching here is done - if ((v1 == FileType.Dir) || (v1 == FileType.Zip)) + if ((v1 == FileType.Dir) || (v1 == FileType.Zip) || (v1==FileType.SevenZip)) return true; RvFile f1 = (RvFile)var1; diff --git a/ROMVault2/FileScanning.cs b/ROMVault2/FileScanning.cs index 698c1c4..08d7a0b 100644 --- a/ROMVault2/FileScanning.cs +++ b/ROMVault2/FileScanning.cs @@ -15,6 +15,7 @@ using ROMVault2.RvDB; using ROMVault2.SupportedFiles; using ROMVault2.SupportedFiles.CHD; using ROMVault2.SupportedFiles.Files; +using ROMVault2.SupportedFiles.SevenZip; using ROMVault2.SupportedFiles.Zip; using ROMVault2.Utils; using FileInfo = ROMVault2.IO.FileInfo; @@ -140,11 +141,16 @@ namespace ROMVault2 switch (ft) { case FileType.Zip: + case FileType.SevenZip: { fileDir = new RvDir(ft); // open the zip file - ZipFile checkZ = new ZipFile(); + ICompress checkZ; + if (ft == FileType.Zip) + checkZ = new ZipFile(); + else + checkZ = new SevenZ(); ZipReturn zr = checkZ.ZipFileOpen(fullDir, dbDir.TimeStamp, true); @@ -251,6 +257,19 @@ namespace ROMVault2 string fExt = Path.GetExtension(oFile.Name); switch (fExt.ToLower()) { +#if sevenzip + case ".7z": + { + RvDir tGame = new RvDir(FileType.SevenZip) + { + Name = Path.GetFileNameWithoutExtension(oFile.Name), + TimeStamp = oFile.LastWriteTime, + }; + tGame.SetStatus(chechingDatStatus, GotStatus.Got); + fileDir.ChildAdd(tGame); + } + break; +#endif case ".zip": { RvDir tGame = new RvDir(FileType.Zip) @@ -510,6 +529,7 @@ namespace ROMVault2 switch (dbChild.FileType) { case FileType.Zip: + case FileType.SevenZip: if (dbChild.TimeStamp != fileChild.TimeStamp || EScanLevel == eScanLevel.Level3 || (EScanLevel == eScanLevel.Level2 && !IsDeepScanned((RvDir)dbChild))) { @@ -530,7 +550,8 @@ namespace ROMVault2 break; case FileType.File: case FileType.ZipFile: - if (dbChild.TimeStamp == fileChild.TimeStamp && dbChild.GotStatus == GotStatus.Corrupt) + case FileType.SevenZipFile: + if (dbChild.TimeStamp == fileChild.TimeStamp && dbChild.GotStatus == GotStatus.Corrupt) fileChild.GotStatus = GotStatus.Corrupt; dbChild.FileAdd(fileChild); @@ -555,6 +576,7 @@ namespace ROMVault2 switch (fileChild.FileType) { case FileType.Zip: + case FileType.SevenZip: dbDir.ChildAdd(fileChild, dbIndex); CheckADir((RvDir)fileChild, false); break; @@ -576,6 +598,7 @@ namespace ROMVault2 dbDir.ChildAdd(fileChild, dbIndex); break; case FileType.ZipFile: + case FileType.SevenZipFile: dbDir.ChildAdd(fileChild, dbIndex); break; default: @@ -669,7 +692,7 @@ namespace ROMVault2 // filetypes are now know to be the same // Dir's and Zip's are not deep scanned so matching here is done - if ((dbfileType == FileType.Dir) || (dbfileType == FileType.Zip)) + if ((dbfileType == FileType.Dir) || (dbfileType == FileType.Zip) || (dbfileType==FileType.SevenZip)) return true; RvFile dbFileF = (RvFile)dbFile; diff --git a/ROMVault2/FixFileCopy.cs b/ROMVault2/FixFileCopy.cs index 027d427..791cd43 100644 --- a/ROMVault2/FixFileCopy.cs +++ b/ROMVault2/FixFileCopy.cs @@ -7,9 +7,12 @@ using System; using System.ComponentModel; using System.Diagnostics; +using System.Drawing; +using System.IO; using System.Security.Cryptography; using ROMVault2.RvDB; using ROMVault2.SupportedFiles; +using ROMVault2.SupportedFiles.SevenZip; using ROMVault2.SupportedFiles.Zip; using ROMVault2.SupportedFiles.Zip.ZLib; using ROMVault2.Utils; @@ -44,7 +47,7 @@ namespace ROMVault2 /// If we are SHA1/MD5 checking the source file for the first time, and it is different from what we expected the correct values for this file are returned in foundFile /// ReturnCode.Good is the valid return code otherwire we have an error - public static ReturnCode CopyFile(RvFile fileIn, ref ZipFile zipFileOut, string zipFilenameOut, RvFile fileOut, bool forceRaw, out string error, out RvFile foundFile) + public static ReturnCode CopyFile(RvFile fileIn, ref ICompress zipFileOut, string zipFilenameOut, RvFile fileOut, bool forceRaw, out string error, out RvFile foundFile) { foundFile = null; error = ""; @@ -59,120 +62,21 @@ namespace ROMVault2 bool sourceTrrntzip = false; - ZipFile zipFileIn = null; - System.IO.Stream readStream = null; + ICompress zipFileIn = null; + Stream readStream = null; + ReturnCode retC; bool isZeroLengthFile = DBHelper.IsZeroLengthFile(fileOut); if (!isZeroLengthFile) { - #region check that the in and out file match - if (fileOut.FileStatusIs(FileStatus.SizeFromDAT) && fileOut.Size != null && fileIn.Size != fileOut.Size) - { - error = "Source and destination Size does not match. Logic Error."; - return ReturnCode.LogicError; - } - if (fileOut.FileStatusIs(FileStatus.CRCFromDAT) && fileOut.CRC != null && !ArrByte.bCompare(fileIn.CRC, fileOut.CRC)) - { - error = "Source and destination CRC does not match. Logic Error."; - return ReturnCode.LogicError; - } + retC = CheckInputAndOutputFile(fileIn, fileOut, out error); + if (retC != ReturnCode.Good) + return retC; - if (fileOut.FileStatusIs(FileStatus.SHA1FromDAT) && fileIn.FileStatusIs(FileStatus.SHA1Verified)) - { - if (fileIn.SHA1 != null && fileOut.SHA1 != null && !ArrByte.bCompare(fileIn.SHA1, fileOut.SHA1)) - { - error = "Source and destination SHA1 does not match. Logic Error."; - return ReturnCode.LogicError; - } - } - if (fileOut.FileStatusIs(FileStatus.MD5CHDFromDAT) && fileIn.FileStatusIs(FileStatus.MD5Verified)) - { - if (fileIn.MD5 != null && fileOut.MD5 != null && !ArrByte.bCompare(fileIn.MD5, fileOut.MD5)) - { - error = "Source and destination SHA1 does not match. Logic Error."; - return ReturnCode.LogicError; - } - } - - #endregion - - #region Find and Check/Open Input Files - - if (fileIn.FileType == FileType.ZipFile) // Input is a ZipFile - { - RvDir zZipFileIn = fileIn.Parent; - if (zZipFileIn.FileType != FileType.Zip) - { - error = "Zip File Open but Source File is not a zip, Logic Error."; - return ReturnCode.LogicError; - } - - string fileNameIn = zZipFileIn.FullName; - - sourceTrrntzip = (zZipFileIn.ZipStatus & ZipStatus.TrrntZip) == ZipStatus.TrrntZip; - - //if (zZipFileIn.ZipFileType == RvZip.ZipType.Zip) - //{ - zipFileIn = new ZipFile(); - - ZipReturn zr1; - if (fileIn.ZipFileHeaderPosition != null) - zr1 = zipFileIn.ZipFileOpen(fileNameIn, zZipFileIn.TimeStamp, false); - else - zr1 = zipFileIn.ZipFileOpen(fileNameIn, zZipFileIn.TimeStamp, true); - switch (zr1) - { - case ZipReturn.ZipGood: - break; - case ZipReturn.ZipErrorFileNotFound: - error = "File not found, Rescan required before fixing " + fileIn.Name; - return ReturnCode.FileSystemError; - case ZipReturn.ZipErrorTimeStamp: - error = "File has changed, Rescan required before fixing " + fileIn.Name; - return ReturnCode.FileSystemError; - default: - error = "Error Open Zip" + zr1 + ", with File " + fileIn.DatFullName; - return ReturnCode.FileSystemError; - } - if (fileIn.ZipFileHeaderPosition != null) - zipFileIn.ZipFileOpenReadStreamQuick((ulong)fileIn.ZipFileHeaderPosition, rawCopy, out readStream, out streamSize, out compressionMethod); - else - zipFileIn.ZipFileOpenReadStream(fileIn.ZipFileIndex, rawCopy, out readStream, out streamSize, out compressionMethod); - } - else // Input is a regular file - { - string fileNameIn = fileIn.FullName; - if (!IO.File.Exists(fileNameIn)) - { - error = "Rescan needed, File Changed :" + fileNameIn; - return ReturnCode.RescanNeeded; - } - IO.FileInfo fileInInfo = new IO.FileInfo(fileNameIn); - if (fileInInfo.LastWriteTime != fileIn.TimeStamp) - { - error = "Rescan needed, File Changed :" + fileNameIn; - return ReturnCode.RescanNeeded; - } - int errorCode = IO.FileStream.OpenFileRead(fileNameIn, out readStream); - if (errorCode != 0) - { - error = new Win32Exception(errorCode).Message + ". " + fileNameIn; - return ReturnCode.FileSystemError; - } - if (fileIn.Size == null) - { - error = "Null File Size found in Fixing File :" + fileNameIn; - return ReturnCode.LogicError; - } - streamSize = (ulong)fileIn.Size; - if ((ulong)readStream.Length != streamSize) - { - error = "Rescan needed, File Length Changed :" + fileNameIn; - return ReturnCode.RescanNeeded; - } - } - #endregion + retC = OpenInputStream(fileIn, rawCopy, out zipFileIn, out sourceTrrntzip, out readStream, out streamSize, out compressionMethod, out error); + if (retC != ReturnCode.Good) + return retC; } else { @@ -184,72 +88,12 @@ namespace ROMVault2 #region Find and Check/Open Output Files - System.IO.Stream writeStream; - if (fileOut.FileType == FileType.ZipFile) - { - // if ZipFileOut == null then we have not open the output zip yet so open it from writing. - if (zipFileOut == null) - { - if (IO.Path.GetFileName(zipFilenameOut) == "__RomVault.tmp") - { - if (IO.File.Exists(zipFilenameOut)) - IO.File.Delete(zipFilenameOut); - } - else if (IO.File.Exists(zipFilenameOut)) - { - error = "Rescan needed, File Changed :" + zipFilenameOut; - return ReturnCode.RescanNeeded; - } + Stream writeStream; - zipFileOut = new ZipFile(); - ZipReturn zrf = zipFileOut.ZipFileCreate(zipFilenameOut); - if (zrf != ZipReturn.ZipGood) - { - error = "Error Opening Write Stream " + zrf; - return ReturnCode.FileSystemError; - } - } - else - { - if (zipFileOut.ZipOpen != ZipOpenType.OpenWrite) - { - error = "Output Zip File is not set to OpenWrite, Logic Error."; - return ReturnCode.LogicError; - } + retC = OpenOutputStream(fileOut, fileIn, ref zipFileOut, zipFilenameOut, compressionMethod, rawCopy, sourceTrrntzip, out writeStream, out error); + if (retC != ReturnCode.Good) + return retC; - if (zipFileOut.ZipFilename != (new IO.FileInfo(zipFilenameOut).FullName)) - { - error = "Output Zip file has changed name from " + zipFileOut.ZipFilename + " to " + zipFilenameOut + ". Logic Error"; - return ReturnCode.LogicError; - } - } - - if (fileIn.Size == null) - { - error = "Null File Size found in Fixing File :" + fileIn.FullName; - return ReturnCode.LogicError; - } - ZipReturn zr = zipFileOut.ZipFileOpenWriteStream(rawCopy, sourceTrrntzip, fileOut.Name, (ulong)fileIn.Size, compressionMethod, out writeStream); - if (zr != ZipReturn.ZipGood) - { - error = "Error Opening Write Stream " + zr; - return ReturnCode.FileSystemError; - } - } - else - { - if (IO.File.Exists(zipFilenameOut) && fileOut.GotStatus != GotStatus.Corrupt) - { - error = "Rescan needed, File Changed :" + zipFilenameOut; - return ReturnCode.RescanNeeded; - } - int errorCode = IO.FileStream.OpenFileWrite(zipFilenameOut, out writeStream); - if (errorCode != 0) - { - error = new Win32Exception(errorCode).Message + ". " + zipFilenameOut; - return ReturnCode.FileSystemError; - } - } #endregion byte[] bCRC; @@ -374,7 +218,7 @@ namespace ROMVault2 #region close the ReadStream - if (fileIn.FileType == FileType.ZipFile && zipFileIn != null) + if ((fileIn.FileType == FileType.ZipFile || fileIn.FileType == FileType.SevenZipFile) && zipFileIn != null) { ZipReturn zr = zipFileIn.ZipFileCloseReadStream(); if (zr != ZipReturn.ZipGood) @@ -408,7 +252,7 @@ namespace ROMVault2 #region close the WriteStream - if (fileOut.FileType == FileType.ZipFile) + if (fileOut.FileType == FileType.ZipFile || fileOut.FileType == FileType.SevenZipFile) { ZipReturn zr = zipFileOut.ZipFileCloseWriteStream(bCRC); if (zr != ZipReturn.ZipGood) @@ -516,7 +360,7 @@ namespace ROMVault2 if (sourceFailed) { - if (fileIn.FileType == FileType.ZipFile) + if (fileIn.FileType == FileType.ZipFile || fileIn.FileType == FileType.SevenZipFile) { RvFile tZFile = new RvFile(FileType.ZipFile); foundFile = tZFile; @@ -548,7 +392,7 @@ namespace ROMVault2 } } - if (fileOut.FileType == FileType.ZipFile) + if (fileOut.FileType == FileType.ZipFile || fileOut.FileType == FileType.SevenZipFile) { fileOut.FileStatusSet(FileStatus.SizeFromHeader | FileStatus.CRCFromHeader); } @@ -671,5 +515,227 @@ namespace ROMVault2 return false; } + + private static ReturnCode CheckInputAndOutputFile(RvFile fileIn, RvFile fileOut, out string error) + { + if (fileOut.FileStatusIs(FileStatus.SizeFromDAT) && fileOut.Size != null && fileIn.Size != fileOut.Size) + { + error = "Source and destination Size does not match. Logic Error."; + return ReturnCode.LogicError; + } + if (fileOut.FileStatusIs(FileStatus.CRCFromDAT) && fileOut.CRC != null && !ArrByte.bCompare(fileIn.CRC, fileOut.CRC)) + { + error = "Source and destination CRC does not match. Logic Error."; + return ReturnCode.LogicError; + } + + if (fileOut.FileStatusIs(FileStatus.SHA1FromDAT) && fileIn.FileStatusIs(FileStatus.SHA1Verified)) + { + if (fileIn.SHA1 != null && fileOut.SHA1 != null && !ArrByte.bCompare(fileIn.SHA1, fileOut.SHA1)) + { + error = "Source and destination SHA1 does not match. Logic Error."; + return ReturnCode.LogicError; + } + } + if (fileOut.FileStatusIs(FileStatus.MD5CHDFromDAT) && fileIn.FileStatusIs(FileStatus.MD5Verified)) + { + if (fileIn.MD5 != null && fileOut.MD5 != null && !ArrByte.bCompare(fileIn.MD5, fileOut.MD5)) + { + error = "Source and destination SHA1 does not match. Logic Error."; + return ReturnCode.LogicError; + } + } + error = ""; + return ReturnCode.Good; + } + + private static ReturnCode OpenInputStream(RvFile fileIn, bool rawCopy, out ICompress zipFileIn, out bool sourceTrrntzip, out Stream readStream, out ulong streamSize, out ushort compressionMethod, out string error) + { + zipFileIn = null; + sourceTrrntzip = false; + readStream = null; + streamSize = 0; + compressionMethod = 0; + + switch (fileIn.FileType) + { + case FileType.SevenZipFile: + case FileType.ZipFile: + { + RvDir zZipFileIn = fileIn.Parent; + if (zZipFileIn.FileType != DBTypeGet.DirFromFile(fileIn.FileType)) + { + error = "SevenZip File Open but Source File is not a SevenZip, Logic Error."; + return ReturnCode.LogicError; + } + + string fileNameIn = zZipFileIn.FullName; + ZipReturn zr1; + + if (fileIn.FileType == FileType.SevenZipFile) + { + sourceTrrntzip = false; + zipFileIn = new SevenZ(); + zr1 = zipFileIn.ZipFileOpen(fileNameIn, zZipFileIn.TimeStamp, true); + } + else + { + sourceTrrntzip = (zZipFileIn.ZipStatus & ZipStatus.TrrntZip) == ZipStatus.TrrntZip; + zipFileIn = new ZipFile(); + zr1 = zipFileIn.ZipFileOpen(fileNameIn, zZipFileIn.TimeStamp, fileIn.ZipFileHeaderPosition == null); + } + + switch (zr1) + { + case ZipReturn.ZipGood: + break; + case ZipReturn.ZipErrorFileNotFound: + error = "File not found, Rescan required before fixing " + fileIn.Name; + return ReturnCode.FileSystemError; + case ZipReturn.ZipErrorTimeStamp: + error = "File has changed, Rescan required before fixing " + fileIn.Name; + return ReturnCode.FileSystemError; + default: + error = "Error Open Zip" + zr1 + ", with File " + fileIn.DatFullName; + return ReturnCode.FileSystemError; + } + + if (fileIn.FileType == FileType.SevenZipFile) + { + + SevenZ z = zipFileIn as SevenZ; + z.ZipFileOpenReadStream(fileIn.ZipFileIndex, out readStream, out streamSize); + } + else + { + ZipFile z = zipFileIn as ZipFile; + if (fileIn.ZipFileHeaderPosition != null) + z.ZipFileOpenReadStreamQuick((ulong)fileIn.ZipFileHeaderPosition, rawCopy, out readStream, out streamSize, out compressionMethod); + else + z.ZipFileOpenReadStream(fileIn.ZipFileIndex, rawCopy, out readStream, out streamSize, out compressionMethod); + } + } + break; + default: + { + string fileNameIn = fileIn.FullName; + if (!IO.File.Exists(fileNameIn)) + { + error = "Rescan needed, File Changed :" + fileNameIn; + return ReturnCode.RescanNeeded; + } + IO.FileInfo fileInInfo = new IO.FileInfo(fileNameIn); + if (fileInInfo.LastWriteTime != fileIn.TimeStamp) + { + error = "Rescan needed, File Changed :" + fileNameIn; + return ReturnCode.RescanNeeded; + } + int errorCode = IO.FileStream.OpenFileRead(fileNameIn, out readStream); + if (errorCode != 0) + { + error = new Win32Exception(errorCode).Message + ". " + fileNameIn; + return ReturnCode.FileSystemError; + } + if (fileIn.Size == null) + { + error = "Null File Size found in Fixing File :" + fileNameIn; + return ReturnCode.LogicError; + } + streamSize = (ulong)fileIn.Size; + if ((ulong)readStream.Length != streamSize) + { + error = "Rescan needed, File Length Changed :" + fileNameIn; + return ReturnCode.RescanNeeded; + } + } + break; + } + + error = ""; + return ReturnCode.Good; + } + + private static ReturnCode OpenOutputStream(RvFile fileOut, RvFile fileIn, ref ICompress zipFileOut, string zipFilenameOut, ushort compressionMethod, bool rawCopy, bool sourceTrrntzip, out System.IO.Stream writeStream, out string error) + { + writeStream = null; + + switch (fileOut.FileType) + { + case FileType.ZipFile: + case FileType.SevenZipFile: + { + // if ZipFileOut == null then we have not open the output zip yet so open it from writing. + if (zipFileOut == null) + { + if (IO.Path.GetFileName(zipFilenameOut) == "__RomVault.tmp") + { + if (IO.File.Exists(zipFilenameOut)) + IO.File.Delete(zipFilenameOut); + } + else if (IO.File.Exists(zipFilenameOut)) + { + error = "Rescan needed, File Changed :" + zipFilenameOut; + return ReturnCode.RescanNeeded; + } + if (fileOut.FileType == FileType.ZipFile) + zipFileOut = new ZipFile(); + else + zipFileOut = new SevenZ(); + + ZipReturn zrf = zipFileOut.ZipFileCreate(zipFilenameOut); + if (zrf != ZipReturn.ZipGood) + { + error = "Error Opening Write Stream " + zrf; + return ReturnCode.FileSystemError; + } + } + else + { + if (zipFileOut.ZipOpen != ZipOpenType.OpenWrite) + { + error = "Output Zip File is not set to OpenWrite, Logic Error."; + return ReturnCode.LogicError; + } + + if (zipFileOut.ZipFilename != (new IO.FileInfo(zipFilenameOut).FullName)) + { + error = "Output Zip file has changed name from " + zipFileOut.ZipFilename + " to " + zipFilenameOut + ". Logic Error"; + return ReturnCode.LogicError; + } + } + + if (fileIn.Size == null) + { + error = "Null File Size found in Fixing File :" + fileIn.FullName; + return ReturnCode.LogicError; + } + ZipReturn zr = zipFileOut.ZipFileOpenWriteStream(rawCopy, sourceTrrntzip, fileOut.Name, (ulong)fileIn.Size, compressionMethod, out writeStream); + if (zr != ZipReturn.ZipGood) + { + error = "Error Opening Write Stream " + zr; + return ReturnCode.FileSystemError; + } + } + break; + default: + { + if (IO.File.Exists(zipFilenameOut) && fileOut.GotStatus != GotStatus.Corrupt) + { + error = "Rescan needed, File Changed :" + zipFilenameOut; + return ReturnCode.RescanNeeded; + } + int errorCode = IO.FileStream.OpenFileWrite(zipFilenameOut, out writeStream); + if (errorCode != 0) + { + error = new Win32Exception(errorCode).Message + ". " + zipFilenameOut; + return ReturnCode.FileSystemError; + } + } + break; + } + + error = ""; + return ReturnCode.Good; + } } } diff --git a/ROMVault2/FixFiles.cs b/ROMVault2/FixFiles.cs index ed777b9..1d7f0c8 100644 --- a/ROMVault2/FixFiles.cs +++ b/ROMVault2/FixFiles.cs @@ -14,6 +14,7 @@ using ROMVault2.Properties; using ROMVault2.RvDB; using ROMVault2.SupportedFiles; using ROMVault2.SupportedFiles.Zip; +using ROMVault2.Utils; namespace ROMVault2 { @@ -133,6 +134,7 @@ namespace ROMVault2 switch (child.FileType) { case FileType.Zip: + case FileType.SevenZip: if (!thisSelected) continue; RvDir tZip = (RvDir)child; @@ -230,6 +232,23 @@ namespace ROMVault2 } while (returnCode == ReturnCode.StartOver); break; + case FileType.SevenZip: + if (!thisSelected) + return ReturnCode.Good; + + if (!String.IsNullOrEmpty(child.FileName)) + { + string strDir = child.Parent.FullName; + File.Move(Path.Combine(strDir, child.FileName + ".z7"), Path.Combine(strDir, child.Name + ".z7")); + child.FileName = null; + } + + do + { + returnCode = FixZip((RvDir)child); + } while (returnCode == ReturnCode.StartOver); + break; + case FileType.Dir: if (thisSelected) { @@ -418,7 +437,7 @@ namespace ROMVault2 ReportProgress(new bgwShowFix(Path.GetDirectoryName(fixFileFullName), "", Path.GetFileName(fixFileFullName), fixFile.Size, "-->", "ToSort", "", fixFile.Name)); - ZipFile tempZipOut = null; + ICompress tempZipOut = null; RvFile foundFile; ReturnCode returnCode = FixFileCopy.CopyFile(fixFile, ref tempZipOut, toSortFullName, toSortRom, false, out _error, out foundFile); switch (returnCode) @@ -481,7 +500,7 @@ namespace ROMVault2 _bgw.ReportProgress(0, new bgwShowFix(Path.GetDirectoryName(fixFileFullName), "", Path.GetFileName(fixFileFullName), fixFile.Size, "-->", "Corrupt", "", fixFile.Name)); - ZipFile tempZipOut = null; + ICompress tempZipOut = null; RvFile foundFile; ReturnCode returnCode = FixFileCopy.CopyFile(fixFile, ref tempZipOut, toSortCorruptFullName, toSortCorruptRom, false, out _error, out foundFile); switch (returnCode) @@ -642,7 +661,7 @@ namespace ROMVault2 // now we can fix the file. - ZipFile tempZipOut = null; + ICompress tempZipOut = null; RvFile foundFile; ReturnCode returnCode; @@ -851,7 +870,8 @@ namespace ROMVault2 return ReturnCode.Good; } - + if (!fixZip.DirStatus.HasFixable() && needsTrrntzipped && fixZip.FileType == FileType.SevenZip) + return ReturnCode.Good; string fixZipFullName = fixZip.TreeFullName; @@ -869,10 +889,10 @@ namespace ROMVault2 ReportError.LogOut((RvFile)fixZip.Child(intLoop)); ReportError.LogOut(""); - ZipFile tempZipOut = null; + ICompress tempZipOut = null; - ZipFile toSortCorruptOut = null; - ZipFile toSortZipOut = null; + ICompress toSortCorruptOut = null; + ICompress toSortZipOut = null; RvDir toSortGame = null; RvDir toSortCorruptGame = null; @@ -880,9 +900,11 @@ namespace ROMVault2 ReturnCode returnCode; List fixZipTemp = new List(); + FileType fixFileType = fixZip.FileType; + for (int iRom = 0; iRom < fixZip.ChildCount; iRom++) { - RvFile zipFileFixing = new RvFile(FileType.ZipFile); + RvFile zipFileFixing = new RvFile(DBTypeGet.FileFromDir(fixFileType)); fixZip.Child(iRom).CopyTo(zipFileFixing); if (iRom == fixZipTemp.Count) @@ -1063,7 +1085,7 @@ namespace ROMVault2 string ts = lstFixRomTable[0].Parent.FullName; string sourceDir; string sourceFile; - if (lstFixRomTable[0].FileType == FileType.ZipFile) + if (lstFixRomTable[0].FileType == FileType.ZipFile || lstFixRomTable[0].FileType == FileType.SevenZipFile) { sourceDir = Path.GetDirectoryName(ts); sourceFile = Path.GetFileName(ts); @@ -1593,6 +1615,7 @@ namespace ROMVault2 switch (fileToCheck.FileType) { case FileType.ZipFile: + case FileType.SevenZipFile: { string fullPathCheckDelete = fileToCheck.Parent.FullName; if (!File.Exists(fullPathCheckDelete)) @@ -1775,6 +1798,7 @@ namespace ROMVault2 _processList.Add(tCheck); break; case FileType.ZipFile: + case FileType.SevenZipFile: RvDir p = tCheck.Parent; if (fastProcess) diff --git a/ROMVault2/FrmHelpAbout.Designer.cs b/ROMVault2/FrmHelpAbout.Designer.cs index ea98129..7ae19b5 100644 --- a/ROMVault2/FrmHelpAbout.Designer.cs +++ b/ROMVault2/FrmHelpAbout.Designer.cs @@ -71,7 +71,7 @@ // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - this.BackgroundImage = global::ROMVault2.rvImages.romvaultTZ; + this.BackgroundImage = global::ROMVault2.rvImages1.romvaultTZ; this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.ClientSize = new System.Drawing.Size(471, 172); this.Controls.Add(this.label2); diff --git a/ROMVault2/FrmMain.Designer.cs b/ROMVault2/FrmMain.Designer.cs index e38d02f..91178cc 100644 --- a/ROMVault2/FrmMain.Designer.cs +++ b/ROMVault2/FrmMain.Designer.cs @@ -28,19 +28,14 @@ /// private void InitializeComponent() { - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain)); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmMain)); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); - this.btnReport = new System.Windows.Forms.Button(); - this.btnFixFiles = new System.Windows.Forms.Button(); - this.btnFindFixes = new System.Windows.Forms.Button(); - this.btnScanRoms = new System.Windows.Forms.Button(); - this.btnUpdateDats = new System.Windows.Forms.Button(); this.splitContainer2 = new System.Windows.Forms.SplitContainer(); this.splitContainer3 = new System.Windows.Forms.SplitContainer(); this.gbDatInfo = new System.Windows.Forms.GroupBox(); @@ -109,6 +104,11 @@ this.dataGridViewImageColumn1 = new System.Windows.Forms.DataGridViewImageColumn(); this.dataGridViewImageColumn2 = new System.Windows.Forms.DataGridViewImageColumn(); this.dataGridViewImageColumn3 = new System.Windows.Forms.DataGridViewImageColumn(); + this.btnReport = new System.Windows.Forms.Button(); + this.btnFixFiles = new System.Windows.Forms.Button(); + this.btnFindFixes = new System.Windows.Forms.Button(); + this.btnScanRoms = new System.Windows.Forms.Button(); + this.btnUpdateDats = new System.Windows.Forms.Button(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); this.splitContainer1.SuspendLayout(); @@ -154,71 +154,6 @@ this.splitContainer1.SplitterDistance = 80; this.splitContainer1.TabIndex = 5; // - // btnReport - // - this.btnReport.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnReport.BackgroundImage"))); - this.btnReport.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.btnReport.Location = new System.Drawing.Point(0, 320); - this.btnReport.Name = "btnReport"; - this.btnReport.Size = new System.Drawing.Size(80, 80); - this.btnReport.TabIndex = 13; - this.btnReport.Text = "Generate Reports"; - this.btnReport.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnReport.UseVisualStyleBackColor = true; - this.btnReport.Click += new System.EventHandler(this.BtnReportClick); - // - // btnFixFiles - // - this.btnFixFiles.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnFixFiles.BackgroundImage"))); - this.btnFixFiles.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.btnFixFiles.Location = new System.Drawing.Point(0, 240); - this.btnFixFiles.Name = "btnFixFiles"; - this.btnFixFiles.Size = new System.Drawing.Size(80, 80); - this.btnFixFiles.TabIndex = 10; - this.btnFixFiles.Text = "Fix ROMs"; - this.btnFixFiles.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnFixFiles.UseVisualStyleBackColor = true; - this.btnFixFiles.Click += new System.EventHandler(this.BtnFixFilesClick); - // - // btnFindFixes - // - this.btnFindFixes.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnFindFixes.BackgroundImage"))); - this.btnFindFixes.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.btnFindFixes.Location = new System.Drawing.Point(0, 160); - this.btnFindFixes.Name = "btnFindFixes"; - this.btnFindFixes.Size = new System.Drawing.Size(80, 80); - this.btnFindFixes.TabIndex = 9; - this.btnFindFixes.Text = "Find Fixes"; - this.btnFindFixes.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnFindFixes.UseVisualStyleBackColor = true; - this.btnFindFixes.Click += new System.EventHandler(this.BtnFindFixesClick); - // - // btnScanRoms - // - this.btnScanRoms.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnScanRoms.BackgroundImage"))); - this.btnScanRoms.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.btnScanRoms.Location = new System.Drawing.Point(0, 80); - this.btnScanRoms.Name = "btnScanRoms"; - this.btnScanRoms.Size = new System.Drawing.Size(80, 80); - this.btnScanRoms.TabIndex = 8; - this.btnScanRoms.Text = "Scan ROMs"; - this.btnScanRoms.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnScanRoms.UseVisualStyleBackColor = true; - this.btnScanRoms.Click += new System.EventHandler(this.BtnScanRomsClick); - // - // btnUpdateDats - // - this.btnUpdateDats.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("btnUpdateDats.BackgroundImage"))); - this.btnUpdateDats.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; - this.btnUpdateDats.Location = new System.Drawing.Point(0, 0); - this.btnUpdateDats.Name = "btnUpdateDats"; - this.btnUpdateDats.Size = new System.Drawing.Size(80, 80); - this.btnUpdateDats.TabIndex = 0; - this.btnUpdateDats.Text = "Update DATs"; - this.btnUpdateDats.TextAlign = System.Drawing.ContentAlignment.BottomCenter; - this.btnUpdateDats.UseVisualStyleBackColor = true; - this.btnUpdateDats.Click += new System.EventHandler(this.BtnUpdateDatsClick); - // // splitContainer2 // this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill; @@ -653,10 +588,10 @@ this.GameGrid.Size = new System.Drawing.Size(697, 267); this.GameGrid.TabIndex = 4; this.GameGrid.CellFormatting += new System.Windows.Forms.DataGridViewCellFormattingEventHandler(this.GameGrid_CellFormatting); + this.GameGrid.ColumnHeaderMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.GameGridColumnHeaderMouseClick); this.GameGrid.SelectionChanged += new System.EventHandler(this.GameGridSelectionChanged); this.GameGrid.MouseDoubleClick += new System.Windows.Forms.MouseEventHandler(this.GameGridMouseDoubleClick); this.GameGrid.MouseUp += new System.Windows.Forms.MouseEventHandler(this.GameGrid_MouseUp); - this.GameGrid.ColumnHeaderMouseClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.GameGridColumnHeaderMouseClick); // // Type // @@ -665,7 +600,6 @@ this.Type.Name = "Type"; this.Type.ReadOnly = true; this.Type.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.Type.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; this.Type.Width = 40; // // CGame @@ -690,7 +624,6 @@ this.CCorrect.Name = "CCorrect"; this.CCorrect.ReadOnly = true; this.CCorrect.Resizable = System.Windows.Forms.DataGridViewTriState.False; - this.CCorrect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; this.CCorrect.Width = 500; // // RomGrid @@ -760,7 +693,6 @@ this.CGot.Name = "CGot"; this.CGot.ReadOnly = true; this.CGot.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.CGot.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable; this.CGot.Width = 65; // // CRom @@ -972,6 +904,71 @@ this.dataGridViewImageColumn3.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; this.dataGridViewImageColumn3.Width = 65; // + // btnReport + // + this.btnReport.BackgroundImage = global::ROMVault2.rvImages1.btnReport_BackgroundImage; + this.btnReport.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnReport.Location = new System.Drawing.Point(0, 320); + this.btnReport.Name = "btnReport"; + this.btnReport.Size = new System.Drawing.Size(80, 80); + this.btnReport.TabIndex = 13; + this.btnReport.Text = "Generate Reports"; + this.btnReport.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnReport.UseVisualStyleBackColor = true; + this.btnReport.Click += new System.EventHandler(this.BtnReportClick); + // + // btnFixFiles + // + this.btnFixFiles.BackgroundImage = global::ROMVault2.rvImages1.btnFixFiles_BackgroundImage; + this.btnFixFiles.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnFixFiles.Location = new System.Drawing.Point(0, 240); + this.btnFixFiles.Name = "btnFixFiles"; + this.btnFixFiles.Size = new System.Drawing.Size(80, 80); + this.btnFixFiles.TabIndex = 10; + this.btnFixFiles.Text = "Fix ROMs"; + this.btnFixFiles.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnFixFiles.UseVisualStyleBackColor = true; + this.btnFixFiles.Click += new System.EventHandler(this.BtnFixFilesClick); + // + // btnFindFixes + // + this.btnFindFixes.BackgroundImage = global::ROMVault2.rvImages1.btnFindFixes_BackgroundImage; + this.btnFindFixes.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnFindFixes.Location = new System.Drawing.Point(0, 160); + this.btnFindFixes.Name = "btnFindFixes"; + this.btnFindFixes.Size = new System.Drawing.Size(80, 80); + this.btnFindFixes.TabIndex = 9; + this.btnFindFixes.Text = "Find Fixes"; + this.btnFindFixes.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnFindFixes.UseVisualStyleBackColor = true; + this.btnFindFixes.Click += new System.EventHandler(this.BtnFindFixesClick); + // + // btnScanRoms + // + this.btnScanRoms.BackgroundImage = global::ROMVault2.rvImages1.btnScanRoms_BackgroundImage; + this.btnScanRoms.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnScanRoms.Location = new System.Drawing.Point(0, 80); + this.btnScanRoms.Name = "btnScanRoms"; + this.btnScanRoms.Size = new System.Drawing.Size(80, 80); + this.btnScanRoms.TabIndex = 8; + this.btnScanRoms.Text = "Scan ROMs"; + this.btnScanRoms.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnScanRoms.UseVisualStyleBackColor = true; + this.btnScanRoms.Click += new System.EventHandler(this.BtnScanRomsClick); + // + // btnUpdateDats + // + this.btnUpdateDats.BackgroundImage = global::ROMVault2.rvImages1.btnUpdateDats_BackgroundImage; + this.btnUpdateDats.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnUpdateDats.Location = new System.Drawing.Point(0, 0); + this.btnUpdateDats.Name = "btnUpdateDats"; + this.btnUpdateDats.Size = new System.Drawing.Size(80, 80); + this.btnUpdateDats.TabIndex = 0; + this.btnUpdateDats.Text = "Update DATs"; + this.btnUpdateDats.TextAlign = System.Drawing.ContentAlignment.BottomCenter; + this.btnUpdateDats.UseVisualStyleBackColor = true; + this.btnUpdateDats.Click += new System.EventHandler(this.BtnUpdateDatsClick); + // // FrmMain // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; diff --git a/ROMVault2/FrmMain.cs b/ROMVault2/FrmMain.cs index 28be2b3..b957d94 100644 --- a/ROMVault2/FrmMain.cs +++ b/ROMVault2/FrmMain.cs @@ -774,6 +774,12 @@ namespace ROMVault2 else bitmapName = "Zip" + tRvDir.RepStatus; break; + case FileType.SevenZip: + if (tRvDir.RepStatus == RepStatus.DirCorrect && tRvDir.ZipStatus == ZipStatus.TrrntZip) + bitmapName = "SevenZipTZ"; + else + bitmapName = "SevenZip" + tRvDir.RepStatus; + break; default: // hack because DirDirInToSort image doesnt exist. if (tRvDir.RepStatus == RepStatus.DirInToSort) diff --git a/ROMVault2/FrmMain.resx b/ROMVault2/FrmMain.resx index b1dc996..4565e3e 100644 --- a/ROMVault2/FrmMain.resx +++ b/ROMVault2/FrmMain.resx @@ -117,411 +117,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - - 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 - YII= - - - - - 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 - RU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuND6NzHYAABscSURBVHhe7VsH - WJRXuk6MvSSarNncNYlGN7ZoojEbjaKiiCCKIEoV6VKkivQqvfdepffem8CAtKF3GGBgKEO3YdfofeGf - zGVZMCjk3rt59n2O5zl/m/+85+uH3w/evAtezwHG5X8HzEn42bNnL168wAB8Xr16RQxevnxJDB49ekQM - gF9//ZXocRV3EicxwCEGxG3ocQNxlXmGGOA8E8yTM0CcXxTMThhzJV6Plz1//pxgggEOHz9+jEsY4MzT - p0+J+wGsDrFATBC3MQ6mAQ8SA1xl3oDBDMLEGJg+XjhmJ8x8NwbT5YYzWAr0xByIHqqA/ulTrMvkpRcv - sDR4BOowKVKsAlYK+sIUOAGMcZX4Zcap3zD5pn++kzFaDMyp0pjokydPMEvmIfDs+Uu8/NfXb54+ezE2 - fi8xKUVLW/eqrLzMVbnr6hqeXj65efl19Y30weEXUJHXk8Jkrh2AXwNwBueZY+ISsbLEeDrAFjczDhYD - sxOGQIjXoIfeAsQh2KJVVtUY3zS9pqgsJ38NVMUlpKSkrwqLiPILCF3iF0TDEugbGJmZW6amptbV1eFx - /CAhKBDDOqL/V7nNeoZYGsbxYmAm4Rm/TgiWGI+Pj5dV1tg5uUrJKlyRlFFUVVdQVruqoCQiJikhI3dZ - XErwshi/sOhFQZHzfPxnefjO8V7k4OCQlJQ0MjJSU1OzsbHJzc0dGRlhskWPHwd/gLm+TNoEWwLEmUXB - TMJMHYMfhlgwwPtGR0dJJJKDg4PqDS1xaVnZa8rXVK6DNuiBORrYCl+RwCF6jHkuClzgF5JTVNHR0XF0 - dMzIyAgNDXV2dlZVVRUQEDhz5oympqaXl1d5efndu3eJ1xH0pps6ZjJFdhYjXwjmtGF4GvT3799PTEzU - 1dWVl5eXlpaWkrumqHZD5YYWBrKKKvLKamhi0rKioC11VVhMEj3GXDx8gqLiFrYOkKqFhUVkZCRBWEhI - 6NixY+zs7CwsLBgcP378xIkTPDw86urqISEhpaWlCAF4L6ECoDrdyBcLMwkTUiXeUl5RGXgr1N7BxdjM - 0sDYXF1TDwosI68IHcYADSKVV1KVlrumoKwiJSsnJHpFQuYq5zluMSlpNg5O1lPsFy/yX758RURE9NIl - ATY2drRjx1iPHj3+yzT8/PPPB6bw008/YQn4+PikpKRAHpY/OYlJ//8/wW/hmFPC9+49kJVT8PYJ6B8Y - rm1s8fAOsHN0c/X0sXd2MzK1gErzCQgrqd0g9PmioJC4tIzkVVk+AcHL4hI45L0EM+YFw1OnTnNycnFz - 87CynoRcwfbkyVMQ7OHDh/8xBRAG1f379+/bt2/nzp27du2C8C9fvhwXFweqRIYDQOaLottzEkZ0BWEb - W8f7Dx73DY4oqWoUlZDvP3oan5xm4+AcHZ/k7u1nbe8EgaOd57t4RVLqkpAwSPILi4AtOAtfERO5fIX7 - PC/7ac7THGfYTp1Gf5KN/ZfDLEeOHIEwT506xcbGBuZg+8MPP/z4448gLyoqKigoiBuOHj0KDcdMCOMC - /kDCSB7QI+oYGplmZuWBmICwWGlFzfiDRyYW1rqGN5++fP3wyXMHF/fAkPCElHT/oFD4M7gxIVFxeKxJ - /3z2PBsH19lz50GYh5fvHDfPKXYOHF68JIBD+K3z589zc3OzsrJCmUH40KFDGPPz8/Py8h48eHDz5s1Y - Edgwk+1iYSZhpo949OgJcglVNY2IyFgwYefkjopNio5L5jzLe0NLv3dgpKGZInJFqqKqHmvT0NJ+09yq - oLg0NTPH0dVDRV0TLpr9zDmus9zHjp84wnLsDNc5sEUD7RMnTyFcQbYgBsGi5+LiunTp0sWLF8F506ZN - W7Zs2bFjxzfffINpPHz4ED2iF3zY1LwWitklPDGBhPkNtZsWFR3v7OIBi70sJu3k6gUzPnbitJauEchb - 2jgePHw8Ijqhg9oHkpDwxNNJxYC0b4VGlFRUZebm2zk5X9fU4r7AB+EeOc6KduDgIfQwWogUSguthpcG - VQwg5y+//BI8t27dunfvXlyFASP49/f3M703Y34LwOyECWOZePTk7r2JkNDI6vqmuw+e6OjflLqqdOHS - ZRk5Fd+AMFV1XT5+URd3v+i4VA4unisSV6Hz5OoGhCS/wNAnz19PPHmpa2h0p7yirqk5IiZWUVVNTlEJ - 5FlYTxAKDJWGYKHD8FLwVWD79ddfb9++HfrMyclJoVCoVGpra2tvby8yEwj5D7FhwnqJegA/f+/+Ix/f - wBev34CAmaWdtp5JeFSiooqmt18IB9cFdk4eUwt7Vw//02fOy8gphYTH2Dq4/viPw+ZW9m0dPZ4+gXDa - tAE6Hk/NzIK0m9raq+sbAkNCkXiJi4uDMAwVwvxqClBjsAV5Y2PjiYmJnin09fVhJsyAPOWqF0R7dgkD - xO8iLEdFRRGxAZmWgrxyVyetva3L3MzaxtohwD9YTVXDzNTqCAsrci7ogoam3nFWdn0Dk/DweGlpxZMn - uVJTc8nkBl5eIS0to0ePUEi98fcPQwYGbwx3BXMFEI2gxrBeBGFZWdmEhITGxkaI98GDB3j1DIaLTBjW - ix4/ikUlUtycnJx7UzAzM9PU0IXch4fGXV08Y2MSB+mjN5GQXNdqae1ITEpzcnYXEBRlPXFaTl45JCSG - g4PnwgVhNzc/MPz73/dISV0jkSqSk7OPH+eADSMCf/7557BYQocRk5CEIt8AYR8fHxqNRmTdxKwWETMJ - E8s33SXGxsZWV1dDu/T19R3sXR4/ek5pp2pr6VeSa0EeolZWut7Y1NLbN2hhaRufkNLY1K6scsPaxvHE - iTMcnNx29i6GRmYHDx3FWiQkpmlpG+zZ+yMSrO+//x6y3bZtG9gidS0oKGhqaoJgZWRkwsPDYbFEQMIA - IGYCLNxXzyTMsN7f1AZRAZqcnZ0N7UIynJSU0tc3UF1da2ho3Nvbj0JfU1NbWVkVd99/MOHp5QeDH7/7 - MDPrtr2Da1V1Q3pGrpd3gISk7NFjbGfPXfD1C4LwD/z0CzIt5FVgC1eMXL2mpqaysrK4uLiioiIpKQle - Cq+GeAEi92Bi4b56dhsmXoblhFYnJyc3NzdjCYKCgry9fcFzZGQsPDyyqOhOe3uHqup1XV395y9edXZ1 - o0jOys59+epNaVmlgaHpnRLy8MhdK2t7JeXraenZOrqGbu7eXGd5fj6IPOrIt99+iyqiqKgIPKHJaWlp - 9fX1KMuItWYSYxZPBCDt6YfvgX9V6cmfIzQHL0MP68XrcQaTy8vLJ9YXhDMysgYHh1NT0+3sHLq6qfWN - DRaW1s0tbY+fPMu7TTIyNgNb/JaBoYmHp+8AfaS6pgHkQbuQVBITE5Oamgqq+E0MsKZQZrwFwASIIMSc - xvTigViFhWAmYeId+F28GC56+guIQgrn37K/k5ae2dLaDsLmFjZIwhHGTUwt/fyDwBwRzt3DB9JubGpD - GQxhBgcHozCCr/7ss88+/PDDDz74YPny5TBp5GGITCUlJeBPvHoRMaeEiTXGIThjTKw9rr3T/k5TcztE - nZqWhQfLK6qtbRxcXD3BBKnVihUrwHDjxo2sJ07iF7S0dXT1DZRV1Pgu8e/+bg+Y4ypilbW1NVRsamqL - g5mECZFOcvtnLHx/p76uGTEMedWSJUvWb/j0ioR0dHxyU3sXtXegnz48NDI+Mn6vf3Cks6cPJ/OLy43N - rQ/84yAkj+iFQEVMb+GYXaUZLH/DouzvwG7Xr1+/ctUqKVnFrILSirqW+taOzp7+PoLt2N3R8XvDo+P9 - g8Od3X21Te3F5LqcIrKjh/+e7/eBNpJNWAExyYVgdgkzsVj7O0haINgdu77zC43JIlWU1zZ3dPcNDI1C - pLT+QdBu66I1U6iNbV1oLZRucMbJqoa2tLyS6NQ8SXmV5ctXIIwhwWbM7H0xu4SBRdzfMTExgYhYWE+F - xmVk5Jc2U7oHhkYmqQ4MQZ/BnGDb0NpZ20QByYra5tLqxmJyfWV9a2tHT2FZTUhcpq6p3dqPP0HKjZST - mOH7YXanBSzW/k5YWBhke/gYm39kck5RRU8fnT48KdjeKbbt1F5wS7tdEpueH5N2OyGzMLOgjFReW0Su - KyirybtTlU0il1U3VdW33opJ1za1X71mLYoNokh+P7yN8ML3dzo6OtatW7dtx26XgKi84koo8eDIGMG2 - rpkSFJtuZO+rYe6qaOYmYeYpbu4lb+ltYO9j5RHsH5WSkEXKKqzIyC9LzbuDVahqaPWLTLmqqoPlQzAj - JvkemEmYiUXZ3zl9+vTKVav1rdzSb5eAJMG2i9YfEp+pbupyxcj1RyP/jaZR37pmcoYVX4wpYwsmbXFI - 3WoSes7Mz8wtKDA6LTGrMCm7KD6jAMIvq250uxV7jP0cDCQ/P58x0XfEnIQXvr+DMgszO8MnDHpU2gDB - FiHH3DVIztBxn3HgFqc086JWyvjE81e/Mtuzl6+q6HdVMmu/sY4TtvT3Dk2AqqPBIOC9YM/GDj7rP/3s - 0KFDjIm+I+YkvPD9HYh33ScbzFwC6ls6Bocn2cIzGdr7XjF0/tIsSiyJ3Db2cPDR06n2bFqbOjPxtKJ/ - nC2okNX8lldIPAiHJWQFx2XEpt2OS88/w3cZS4kCizHXd8GchBe4v4OKZ+nSpSynzkIhEWnBFi7K0j1E - 0tDpS8tYtez6CvrdysH7VUP3q4YfVI+gPZxqD3CIVjl0nzx4r6RvnCey5IT5raCYtKiUXGi4X2Qy/Lyp - s/+KlavExMQYc30XzEkYvmsh+zseHh7IDdX0rRBXwRYRKDI5V8nIcadFJE90aWTLQCxlMK5zOKFrJLF7 - NAmtZ2yqTY4TqCPxncOxlKGYNnpwY+9B3zwRK//k7CIQ9g5L9I1Ijk3L373/Z2Rg00vleWJOwsBC9ncE - BQU/Xv8pptjdSwfbpnaqlqUHl4nPbo9sA1KrXSXVsbbHpaHXranfo4Xu2Ur3ah2canTPFrp784BrY59T - Hc2+utumolMlq363faK9XxT8tkdwvOutmMRsEq+INBYUFSUx1fljTsIL3N/ZvXv3tp178+5U0von4y2M - UPWm027beM6IEqXcJnVSm3Zphz6ZalTdY1Lba1rXZ1Y/1er6cGhcQzOo7NYt79IoblfIbRJKqvrOI5vP - wh9hHISd/KP8IpKNrF1BGDkcY7rzxtskDLz3/s7atWtZTnIiYSByKRvP0CsmHrvcMs/FlIuk1UnmNsuR - 2pVKOtUqqDcquzUre7TQqnowuEHuVi7rkinuEMlrOZ9Wfyq+kiXszndeuQdto8PiM+Hw7X0i7LzD/cIT - 4bcsLS0ZE5033kZ4Ifs7WH5eAVFkF2CLnFHX2ovbIvAn37zTUWW8yTXC2Y0SBW2yxR2KZV0q5VSVCqpy - OVWxjCpf2iVzp1OquEOMRBG63Xohs5Ezqfp4ZNkB//w9LukOMN+cYqydpXtwcGw6smttbW3GXOeNtxFe - yP4OCAuKSoIq8mTUPTpWnhy2EYcC8tlBOAWEmyQL2+RLOpWm2KpVdF8nTzY1crdqBRUnwVyKRBHJbeFN - qzsdSz4SXLTPM1vb6VZ+SRXYmrncCoxOXbFy5SITJoDSH8b8rvs7ICwiJo0IjNibW0zWs/E64xB99FbB - mZhy/rRa8bwWhWIK9BlqrFtN04fRTrZe9HrVNO2qKcUu7ZQpaBPJauRJrGILv3PQJ1fVzr+kqgFsbzoF - +IQlrl69RktLa2qO74DfJ0yAub8zPj7+li0e5v4OCAuIiFc3tkHIIGxo73PeMQqZI28cWTSjXr6gVb2s - U6+q52ZdL3yVZUO/FVrjZG9R3w8fZlhD0yZTlYspUrnNAsk1XJElR/3yNOz9UWmALbIXz+A4lNYoXYnp - zR/zJQxAw2Gu89ziQa3PcZYX80PFV1heY+YSKGwfyhlCEoivlM5qUCW16VV0mdX22jb2OzXTXVrobq2D - aK6tg84tdIemAauGPuPqHs2SDoXbLaKpNTxRpSf98lBUFJRWg62ejbeLfwSclq2tLWNy88Z8Cb/rFs++ - ffu+3/8TwhLq27KaJnvfCHkr37MhJJF4snxWgwap7SaZalff59ZC92kfCugYvjXVAjuG/SjDXm2Dzk0D - ljU0/bJOldvNkqk1F6NKz7snId9KzCKBrbaVh5GVM5QoJiaGMb95Y16E32OLR0JC4pP1G+Iz8olqPiAq - Vd/W62JAjmhcxbXMeh1SmwW5y6W+16+VHtIxHEkdjekeQ4vuHg3vGrlFGfJqHrCvpd0s61C/3SyTUs0f - WYJCYrJaCooFWx1rT/GrSpBwe3s7Y4rzxu8Qfu8tnuDgYEjA2NoZbgbVPHIje++wq05hojFlium1egUt - 1uWdHnW0oFZ6VOcwsssU2lhq73hyz1gcdTScMuTX3O9c3WNaQrmR2yiTVCUYlGfo4Af/p2PtpWHuZuIU - sP8fv2zevJkxy3fBnIQXuMUzNja2cuXKkxzn0vNLC8pqcosrIWQjex/JoJxryVV6uY3WJRTPmu6Q5v44 - ylAqdSSLNpZNG8voGU3uGolqHwxo6HWu7DIltd7IrJOOK5cw9ykqrw1PzL5h7nbdxMXU0XfZsmXKysqM - ub4L5iS88C0eISGhVavXuAVGTe3UVCRkknzDkzRsfBSii7Uz6ywLW9zJncH1tLjWgbTOoRzqSG73SBZ1 - OJkyGNXc71/T7VhKMc5rUkupknaN9glLQIRDNq5m4oL+3EXhJUuWVFVVMeb6Lngb4QVu8SAn/eijj9jO - 8MSm5xM7NajgfcMTNWx9b8TeMclpcLnTdquqK6axN61tIKdjMLdzKItCT2rpj6jv8SF32BW26GbUyrvH - WHsEd/X0W3qEgK2KsZOxg++atetgwH/5y1/Mzc0Z05035iS8KFs8KFk/WrpU66YtbJjYqUEVERybpmvr - rROS6ZDfFFlDTW3uzWsfKOocLO4aKugYzGrtT2yg+ZdTbqZWKNj4u9+KQTbuHBBNsNW18QpNyLwkIrFt - +87t3/0A2jo6OowZzw9zEl74Fg/XWe7R0dFNmzZt/OJvVm6BcVP7kqiKIfCkLJKDT5iWnZ95RFZkWWsR - hV7fN9Y8MF7VM5LZSHPPKL/hGq5l6Z5DKm/r7EGpQLC9YeYak5rX1NYFfUm/XeIRHPczywm4RnV1dcak - 54E5CS/WJzyFhYUrVqzYun2XtUdQRFI2sVMD9wNnhuYblmDq5Kdt46Vj76frEKBh7Q2ejr7hWYVlUOO0 - 2yV6tt4EW3VTF8+Q+C5aP314tKWju72LBgNBqXiY9TTkrKCgwJj372FOwov4CU9YWNjSpUs3b91uYO0R - EJVC7NR4hyWCeUruHWLDHeGaXNc8WWx09pTXNMWk3jZ1DkQEYsoWNUNKTjHqze5eOpQcy4GaBAJ39o86 - xn4WnOe5dzsn4QVu8cz4hCc6OnrVqlWfbPhM7Jqmg2+kV2gisXcBEaG+dfSNdA2MQYP2Gjv6E7kUwVb1 - prPaTUcZdWMDO1+sUUpuMam8tp1KGxweA+c7lfUwE5eA6JNneKHboqKixN+034I5CQOL+wlPZWXl9u3b - P/jww+/2H1TQNrNwD0a+ae8TTtS3UzWQP5EnE2yvm7qo3XQ6KyCOZVq5arWwnIaB/STnbBI0oB1swZlK - 6y+pbIBTwGKxc1+arFgEBIg6Zy7MSXiBWzyzfsKDtdPT01uzZg2i6NYde7j4xZX0rMHQwM5H39ZH19oL - MRZUVY0dReQ1DrFyfLxh8g/ln3/+OZjwXlHAJRCLSsnNK66saWzvJDj3DiCZg0d0uxV75oIQ7ufl5X3L - F8dvkzDwR3zCMzAwYGBgsGXLFtD4cMmSj9d/+tXW7dv37N+x98DWnXv/+revl69chUvLly/n5OTEHLq6 - urBGf920WU7bAksDznD1SN1Qe4IzfXisu3cA6TpinntQLDf/FXDGgxAYQWEG3kb4D/2EB+pDJpPt7e1h - eCwsLLt37961axfOE6+GKREDJuDqN36x6aqmub6tt8sk55ycInjJts7uPvhtdCgtEjIL3YPiLohIgfPJ - kycJY5yBtxFeyBbP+33Cw3jxbMC6r169+rPP/0ta3WSyHg6Ijkia5FzV0Noxxbmnjw7jTswq9AyO5xeT - W7Lko2PHjt2/f5/x/G/4HZUG3m+L5/0+4Zl64ZzIy8tbt27dpxu/kFQz0rPxQvqFeI4sHbGK4EzrH0R4 - Q82MiC0kde2jj5b+8ssvqOQZz0/h9wkTmL7FExoa2tbWhkPYtqGhYWNz06Mnj0PCQuf/CQ8YpqenI1Zl - ZWX19fVhQWd8gDYXkMasBz7dKKFqCCeHqEZwRiSnUHvpQ5OcEc+TsklIQS9fVVm6dNmBAwem6858CQPQ - cOJPG+jBHLMEYdS9r15D8K+DQoLDI6LG797vHxh0dHKrb2iZ9RMejCcmJioqKqCivb29qCJ/nfoCjnjF - fFBWVrZhw4Z16z8VVzHQsfZ08otC9pZVWE6uawHngaFR/MM4OafIMyRBTF596bJlrKysjIffiTABUJ0B - nIR8oKItLS2I+3AVlpaWubm5cOlurl5amnqdHT3EJzzpadnPn/2KS7W1tSMjI0SSMOOrkvkAj6NUWrPu - E1FFHW0rT0e/yNCErMyCMvBEyjkwNPkHd4zjMwscfSNY2LjgwxhPvgdhAgyuUyDmDfdASB6mmJGR0d/f - j7gVHhZtaGDSS6M/fPAEUQ2toryaQqEMDg4u8D/nNDQ0fPHFF2vWfSwir6lt6eHgGxEanwnOsGFwRrCi - 0gbyS6o8gmJ3/3AABQzjsfcmPB3gCZ0EVWKMnvj/Zk+fvCwtIUeEx4wM34VgnZ3cdbQNcAZU30mH5wLC - x1dffbVqzVoh2RvIWJCihsRlZuSXltU0oaJqoXQXlFbrWzhBpVVUVBjPLAphgPCxwORW7hRzpgAfPmQE - w8zM7ISEJGK8WGhvb9+8eTMST0GZ61oW7khUg2LTUWPkFpPB3CskbtuO3WvXrqXRaIwHFoswIWH0MEj4 - c4zBHJkJuKN//PjpgwcTra3tjY3NL6f+j/EiAo5z69aty1esvCSpgtzT2iPEKyQeVaeFS8CeHyc/5PP1 - 9WXcOoXFIUyAMObpufuk+37N6NGI/1Cx6EBg27Fjx7LlK5BvKxs6aJm7Sipp/+3rb5CxGxkZMW76DYtJ - +P8QdDp97969y5Yt/+Hg8a+37USahdCFOpxxeRoWRBiqy8TvFqL/a4BVa2trDw8PM47/GYsmYcI////H - n0Sl54//EP6zYxEI/7tYL4H/SPjPjv8Q/nPjzZv/BomL8F81zlxOAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAAFAAAABQCAIAAAABc2X6AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuND6NzHYAAAjXSURBVHhe7Zh7 - bFP3FcdPEoeNdNA0ZU2ggwFTt1EGUiAwAc7YWjG0TWNCtGObuiHaTjy6KlBIx9qJrOBWo13/aBChZKUr - j7GGhCQG5wF5AXnN8QNj8iDx+/1M4pA4Lzs+O9e5qkQ1bfaFXHeev/oq8XVin/O5557z+90L+H+mBHC8 - KwEc70oAx7sSwPEuXoGDwWB1dfUpriouLlar1ex3cRWvwDt27IAHU2pqamVlJft1nMQfsMfjSU5OPiJ6 - W666c0vddburp7Ont/tu390+bZ9Wp9HpdQaj3mgymMwms8VssVqsJJvVZrfZSQ67w6HRaBYvXrx582b2 - GzmJP2CDwUAlKikr79EaNQaz3mwz2RxWh9vh9rq8A56Bwf7BocGhe0PDI/dG/CP+Uf/o2OjY+Nj4xPjE - 5MQkKTAZCAiFwtzcXPYbOYk/YL1eT8BlFWKt0WJxuOwuj9PT7+knTh9x+u4NE+fwfZwkQmU4JwPBaX+h - gcfHx3t7e8Vi8bFjx3bu3JmTk0PAFeIrRisV1lVSWnatvqG69mpp2aUrkqrGpuvXb9woLSvT6Q2fq+o0 - aiDsLy5wfX39/Pnzk5KSmFEDIBAIlixZsnHjxpstbXQZU22tdseAjymsb2iYKe/wyNDw8BidpM9oAwEq - MsH7R0fpXZrwgSADvHbt2qmpKTZM9JoRYEroW2Ht2//a8aKTtXUNvVqD0WKTypX0m5rWO+AruVgqvnzl - 05KLZ8+d++j06br6BklVVV19fU1t7c3mZlq96JCKTod1dXU1NTXB4BQx5+YK6SRmZ2fL5XI2WJSaEWAq - z7x5846fONnZp+vVm3QmK80nk9UhU6poCFPfur0DBovdbHfanMzQokM6BdMFp6E1TENrdNQ/Nva5ghNw - t1z4yQlYvBDS0tIaGhrYeNFoRoBDodDq1asPvfHmZ7RWp5v6VqlSmyzWft8Qxx4OBvW3hH4DuDth5dOQ - mZlJSx0bMmLNFPDPSdu3s7Thtcfh8khlCqPJTGXk2MOBoF4m9PdCyATqa5AqgMOHD7MhI9YDATc3N4tE - ov33Ky8vb926dTSlsletMtucREtX8mVJFZX0o9Mf6w1GWn649TAD3Cb0qyHUB9gHPxTC8uXL2VQiFkdg - pVI5vczMEsDj6TAvnfmZ8Sg8NhfS5yYtW/bt3Xv2FH14iiks7Ss8/U63R6s3lFdU9mm0tKngug4H9DeF - fjmEOgE74Y+7ICUlhU0oYnEBbmpqmjNnzqIsOHcEfDcgpIBgBww0gbn5Ga3iHb22nQYS7S5a2qU2h5MG - ksXu+NsnZ6hX333vL3q9gaYRtx6mQ32D0N8KITmgAkR7mQWPzSliRf0Br9eblZW1Yim4qiBEsVtgqhnG - GsFybWWP1kDWGC1Gq51msvK2mvbG3kEflVFSVa28pSI7XW7i4dbDVHDdVaG/EUJtgG0g2sULcEFBgSAZ - VMUQvAYTEvCXw3AJeM+D6niaRtvbF94k03pDNQzfGGgGfEPEQ1dydU1tYeFxo8lEPNx6mOB1kg3+Ggg1 - AjaC6CVegGlObMqGyUrwnQHT+6A+DIpDID0Ikt1wveKkVKFS3Kaboc4OhfLM2XMEo9HqqHtlCsXfL1z4 - oLCwq7ubCsWth+l9XeUGvxhCtYC1IArfa7JpRayoP0Dj99BW8JyAjnyQFoD2LNiqwdYI5ptg6VrgsGc7 - Xat6uhffVs7Xdj9l7Vvh0eR4u9Z4lWs8bWt6JT9Wt5cNDvq49TCdC23pBn8phMSAYhC9wAswxfjDT0Ce - D84zgB2AekAHoBfQBzgCOAY4HvZo+JDe7Ad0AloAdYBKCFx+xNJdz62HaQem/cd6/3kIXQS8CKJf8AX8 - ihDcp5iFAYdycKIIAy0YVPx3BzpwohjtX+9v28+th2nXqTmz3v8xhM4DngfR83wBH9gEoVtUwFcxaMCg - MTpPSPrVP+K2l3Z7+9VF6waPQ5CYz4LoOb6Aj/wacOB7ONmBk7Lo3R5SzDVVvXSnvexOh0QtC1suUSsk - txVXyCrFZfIthVipECvklfKOCpm0oqO9XNp6SdpaeenAd2T7wP0uTPwVjm7jC1h0gMr7Zxyv4WhHNs1Y - LAesBmwAbAGkjYQasDc8Eajbqec9gINh02sj4F1AFWA7TFwFy4cgPQAWEfzpZ7wBv07AJ9B/jqNHitDz - LFq+hqYsNGehJQutYduy0B62I2xn2PSC3qE/0T9YnkBNCsogcAnUb8Drm3gDzqdx9Q7eK4yBh95Dz/Oo - mT3+KbySyxswXdL9v8fBt2Jm717s/PKbP+UN+DVA92707I+lrT84+jJvwPsA7b9Cx4uxtP2XR/OYJ4Rs - WhGLE3AeoHkLWp6Lkbeh8VnUPi3iD/hVWj+eQcNmXq3/PmpWYs8C7JyFd4BMafAF/DvAvu+iZsPMez3e - XYldC1H9FWYdvt+UBl/AewG7V2B39ky5azneWYSqdFSmoIJ5uPFvzdMTDwZ4D22MvoHqbz5UP4WqhajM - QNks5iYsAlMafAHvohP8JCoXPbAXomIByjJQOhvbk2jnGJV5esTDAP8WUDoPO57gaOlX8Z/p2JaGLSnY - DJxNafAF/DLt+B/FlvQoPRebZ+MNAV6Hh2JKgy/gFyleWqRu+hI2CrAxibkxeqimNPgC3glYP+s/OhXr - UrAuCa/BzJnS4At4B+DVZLyacp9rk8NOYu51eTFPTy0Z4N8AVpGTwp5+HQNTGnwBvwB4Ofbm6TFtcnJy - wXbAitib0qBk2LQiVtTAS5cu3bJGECh9PObekiOgZNi0IlbUwAcPHpwlgK73AUtiaUqA0sjPz2fTilhR - A7tcrszMzGVPgrEQ8EJsTKEpAUqDkmHTilhRA5NaW1szMjIeewTe2gbKt8FVBG5eTIEoHAWl0JQApcEm - FI24AJO0Wu3WrVsFAgEzKPkVBaXQlACbSpTiCDwtm81WXl5ezKMoHAVlw3PSAwH/LyoBHO9KAMe7EsDx - rgRwvCsBHO9KAMe7EsDxrgRwvCsBHO9KAMe7EsDxLcR/AYfm9Q3wKO3gAAAAAElFTkSuQmCC - - True @@ -567,6 +162,7 @@ 17, 17 + AAABAAUAEBAAAAAAIABoBAAAVgAAACAgAAAAACAAqBAAAL4EAAAwMAAAAAAgAKglAABmFQAAQEAAAAAA diff --git a/ROMVault2/FrmSplashScreen.Designer.cs b/ROMVault2/FrmSplashScreen.Designer.cs index b15f88f..9307735 100644 --- a/ROMVault2/FrmSplashScreen.Designer.cs +++ b/ROMVault2/FrmSplashScreen.Designer.cs @@ -29,7 +29,6 @@ private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmSplashScreen)); this.lblStatus = new System.Windows.Forms.Label(); this.timer1 = new System.Windows.Forms.Timer(this.components); this.progressBar = new System.Windows.Forms.ProgressBar(); @@ -76,7 +75,7 @@ // FrmSplashScreen // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; - this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage"))); + this.BackgroundImage = global::ROMVault2.rvImages1.romvaultTZ; this.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None; this.ClientSize = new System.Drawing.Size(465, 207); this.ControlBox = false; diff --git a/ROMVault2/FrmSplashScreen.resx b/ROMVault2/FrmSplashScreen.resx index 739f5ec..4680b4e 100644 --- a/ROMVault2/FrmSplashScreen.resx +++ b/ROMVault2/FrmSplashScreen.resx @@ -123,447 +123,4 @@ 104, 17 - - - - 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 - - \ No newline at end of file diff --git a/ROMVault2/ROMVault2.csproj b/ROMVault2/ROMVault2.csproj index d08bdeb..99285c3 100644 --- a/ROMVault2/ROMVault2.csproj +++ b/ROMVault2/ROMVault2.csproj @@ -70,7 +70,7 @@ ..\..\Stage\ - TRACE;UNMANAGED;COMPRESS;LZMA_STREAM;DOTNET20 + TRACE;UNMANAGED;COMPRESS;LZMA_STREAM;DOTNET20;sevenzip true pdbonly AnyCPU @@ -82,6 +82,7 @@ ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\\Rule Sets ;C:\Program Files (x86)\Microsoft Visual Studio 10.0\Team Tools\Static Analysis Tools\FxCop\\Rules false + true chip.ico @@ -118,6 +119,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ROMVault2/RepairStatus.cs b/ROMVault2/RepairStatus.cs index 0e05480..8a936de 100644 --- a/ROMVault2/RepairStatus.cs +++ b/ROMVault2/RepairStatus.cs @@ -92,6 +92,19 @@ namespace ROMVault2 StatusCheck[(int)FileType.Zip, (int)DatStatus.NotInDat, (int)GotStatus.FileLocked] = new List { RepStatus.UnScanned }; StatusCheck[(int)FileType.Zip, (int)DatStatus.NotInDat, (int)GotStatus.NotGot] = new List { RepStatus.Deleted }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.InDatCollect, (int)GotStatus.Got] = new List { RepStatus.DirCorrect }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.InDatCollect, (int)GotStatus.Corrupt] = new List { RepStatus.DirCorrupt }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.InDatCollect, (int)GotStatus.FileLocked] = new List { RepStatus.UnScanned }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.InDatCollect, (int)GotStatus.NotGot] = new List { RepStatus.DirMissing }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.InToSort, (int)GotStatus.Got] = new List { RepStatus.DirInToSort }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.InToSort, (int)GotStatus.Corrupt] = new List { RepStatus.DirCorrupt }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.InToSort, (int)GotStatus.FileLocked] = new List { RepStatus.UnScanned }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.InToSort, (int)GotStatus.NotGot] = new List { RepStatus.Deleted }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.NotInDat, (int)GotStatus.Got] = new List { RepStatus.DirUnknown }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.NotInDat, (int)GotStatus.Corrupt] = new List { RepStatus.DirCorrupt }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.NotInDat, (int)GotStatus.FileLocked] = new List { RepStatus.UnScanned }; + StatusCheck[(int)FileType.SevenZip, (int)DatStatus.NotInDat, (int)GotStatus.NotGot] = new List { RepStatus.Deleted }; + StatusCheck[(int)FileType.File, (int)DatStatus.InDatBad, (int)GotStatus.FileLocked] = new List { RepStatus.UnScanned }; StatusCheck[(int)FileType.File, (int)DatStatus.InDatBad, (int)GotStatus.NotGot] = new List { RepStatus.NotCollected }; @@ -111,7 +124,7 @@ namespace ROMVault2 StatusCheck[(int)FileType.File, (int)DatStatus.NotInDat, (int)GotStatus.Got] = new List { RepStatus.Unknown, RepStatus.Ignore, RepStatus.Delete, RepStatus.MoveToSort, RepStatus.NeededForFix, RepStatus.Rename }; StatusCheck[(int)FileType.File, (int)DatStatus.NotInDat, (int)GotStatus.FileLocked] = new List { RepStatus.UnScanned }; StatusCheck[(int)FileType.File, (int)DatStatus.NotInDat, (int)GotStatus.NotGot] = new List { RepStatus.Deleted }; - + StatusCheck[(int)FileType.ZipFile, (int)DatStatus.InDatBad, (int)GotStatus.NotGot] = new List { RepStatus.NotCollected }; StatusCheck[(int)FileType.ZipFile, (int)DatStatus.InDatBad, (int)GotStatus.Got] = new List { RepStatus.Correct }; @@ -128,6 +141,22 @@ namespace ROMVault2 StatusCheck[(int)FileType.ZipFile, (int)DatStatus.NotInDat, (int)GotStatus.Got] = new List { RepStatus.Unknown, RepStatus.Delete, RepStatus.MoveToSort, RepStatus.NeededForFix, RepStatus.Rename }; StatusCheck[(int)FileType.ZipFile, (int)DatStatus.NotInDat, (int)GotStatus.NotGot] = new List { RepStatus.Deleted }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InDatBad, (int)GotStatus.NotGot] = new List { RepStatus.NotCollected }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InDatBad, (int)GotStatus.Got] = new List { RepStatus.Correct }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InDatCollect, (int)GotStatus.Corrupt] = new List { RepStatus.Corrupt, RepStatus.MoveToCorrupt, RepStatus.CorruptCanBeFixed }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InDatCollect, (int)GotStatus.Got] = new List { RepStatus.Correct }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InDatCollect, (int)GotStatus.FileLocked] = new List { RepStatus.UnScanned }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InDatCollect, (int)GotStatus.NotGot] = new List { RepStatus.Missing, RepStatus.CanBeFixed }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InDatMerged, (int)GotStatus.Got] = new List { RepStatus.UnNeeded, RepStatus.Delete, RepStatus.NeededForFix, RepStatus.Rename }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InDatMerged, (int)GotStatus.NotGot] = new List { RepStatus.NotCollected }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InToSort, (int)GotStatus.Corrupt] = new List { RepStatus.Corrupt, RepStatus.Delete }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InToSort, (int)GotStatus.Got] = new List { RepStatus.InToSort, RepStatus.NeededForFix, RepStatus.Delete }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.InToSort, (int)GotStatus.NotGot] = new List { RepStatus.Deleted }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.NotInDat, (int)GotStatus.Corrupt] = new List { RepStatus.Corrupt, RepStatus.MoveToCorrupt, RepStatus.Delete }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.NotInDat, (int)GotStatus.Got] = new List { RepStatus.Unknown, RepStatus.Delete, RepStatus.MoveToSort, RepStatus.NeededForFix, RepStatus.Rename }; + StatusCheck[(int)FileType.SevenZipFile, (int)DatStatus.NotInDat, (int)GotStatus.NotGot] = new List { RepStatus.Deleted }; + + DisplayOrder = new[] { RepStatus.Error, @@ -169,7 +198,7 @@ namespace ROMVault2 tBase.RepStatusReset(); FileType ftBase = tBase.FileType; - if (ftBase != FileType.Zip && ftBase != FileType.Dir) return; + if (ftBase != FileType.Zip && ftBase != FileType.SevenZip && ftBase != FileType.Dir) return; RvDir tDir = (RvDir)tBase; diff --git a/ROMVault2/RvDB/RvBase.cs b/ROMVault2/RvDB/RvBase.cs index 063ad43..ae51bb8 100644 --- a/ROMVault2/RvDB/RvBase.cs +++ b/ROMVault2/RvDB/RvBase.cs @@ -13,7 +13,7 @@ namespace ROMVault2.RvDB { public enum DatStatus { InDatCollect, InDatMerged, InDatBad, NotInDat, InToSort } public enum GotStatus { NotGot, Got, Corrupt, FileLocked } - public enum FileType { Unknown, Dir, Zip, xSevenZip, xRAR, File, ZipFile, xSevenZipFile } + public enum FileType { Unknown, Dir, Zip, SevenZip, xRAR, File, ZipFile, SevenZipFile } public abstract class RvBase { @@ -184,7 +184,7 @@ namespace ROMVault2.RvDB switch (FileType) { case FileType.Zip: return ".zip"; - //case FileType.SevenZip: return ".7z"; + case FileType.SevenZip: return ".7z"; //case FileType.RAR: return ".rar"; } return ""; diff --git a/ROMVault2/RvDB/RvDir.cs b/ROMVault2/RvDB/RvDir.cs index f245de0..23d4f9d 100644 --- a/ROMVault2/RvDB/RvDir.cs +++ b/ROMVault2/RvDB/RvDir.cs @@ -26,7 +26,7 @@ namespace ROMVault2.RvDB public RvDir(FileType type) : base(type) { - if (type != FileType.Dir && type != FileType.Zip) + if (type != FileType.Dir && type != FileType.Zip && type !=FileType.SevenZip) ReportError.SendAndShow("Trying to set Dir type to " + type); } diff --git a/ROMVault2/RvDB/RvFile.cs b/ROMVault2/RvDB/RvFile.cs index cfda15c..df9808b 100644 --- a/ROMVault2/RvDB/RvFile.cs +++ b/ROMVault2/RvDB/RvFile.cs @@ -32,7 +32,7 @@ namespace ROMVault2.RvDB public RvFile(FileType type) : base(type) { - if (type != FileType.File && type != FileType.ZipFile) + if (type != FileType.File && type != FileType.ZipFile && type != FileType.SevenZipFile) ReportError.SendAndShow("Trying to set file type to " + type); } diff --git a/ROMVault2/SupportedFiles/DirUtil.cs b/ROMVault2/SupportedFiles/DirUtil.cs new file mode 100644 index 0000000..bf20abc --- /dev/null +++ b/ROMVault2/SupportedFiles/DirUtil.cs @@ -0,0 +1,31 @@ +using System; +using TrrntSevenZip.IO; + +namespace TrrntSevenZip.SupportedFiles +{ + public static class DirUtil + { + public static void CreateDirForFile(string sFilename) + { + string strTemp = Path.GetDirectoryName(sFilename); + + if (String.IsNullOrEmpty(strTemp)) return; + + if (Directory.Exists(strTemp)) return; + + + while (strTemp.Length > 0 && !Directory.Exists(strTemp)) + { + int pos = strTemp.LastIndexOf(Path.DirectorySeparatorChar); + if (pos < 0) pos = 0; + strTemp = strTemp.Substring(0, pos); + } + + while (sFilename.IndexOf(Path.DirectorySeparatorChar, strTemp.Length + 1) > 0) + { + strTemp = sFilename.Substring(0, sFilename.IndexOf(Path.DirectorySeparatorChar, strTemp.Length + 1)); + Directory.CreateDirectory(strTemp); + } + } + } +} diff --git a/ROMVault2/SupportedFiles/ICompress.cs b/ROMVault2/SupportedFiles/ICompress.cs new file mode 100644 index 0000000..c55d8ba --- /dev/null +++ b/ROMVault2/SupportedFiles/ICompress.cs @@ -0,0 +1,40 @@ +using System.IO; + +namespace ROMVault2.SupportedFiles +{ + public interface ICompress + { + int LocalFilesCount(); + + string Filename(int i); + ulong? LocalHeader(int i); + ulong UncompressedSize(int i); + byte[] CRC32(int i); + ZipReturn FileStatus(int i); + byte[] MD5(int i); + byte[] SHA1(int i); + + + ZipOpenType ZipOpen { get; } + + ZipReturn ZipFileOpen(string newFilename, long timestamp, bool readHeaders); + void ZipFileClose(); + ZipReturn ZipFileOpenWriteStream(bool raw, bool trrntzip, string filename, ulong uncompressedSize, ushort compressionMethod, out Stream stream); + ZipReturn ZipFileCloseReadStream(); + void DeepScan(); + + + ZipStatus ZipStatus { get; } + + string ZipFilename { get; } + long TimeStamp { get; } + + void ZipFileAddDirectory(); + + ZipReturn ZipFileCreate(string newFilename); + ZipReturn ZipFileCloseWriteStream(byte[] crc32); + ZipReturn ZipFileRollBack(); + void ZipFileCloseFailed(); + + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Common/CRC.cs b/ROMVault2/SupportedFiles/SevenZip/Common/CRC.cs new file mode 100644 index 0000000..f531160 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Common/CRC.cs @@ -0,0 +1,55 @@ +// Common/CRC.cs + +namespace ROMVault2.SupportedFiles.SevenZip.Common +{ + public class CRC + { + public static readonly uint[] Table; + + static CRC() + { + Table = new uint[256]; + const uint kPoly = 0xEDB88320; + for (uint i = 0; i < 256; i++) + { + uint r = i; + for (int j = 0; j < 8; j++) + if ((r & 1) != 0) + r = (r >> 1) ^ kPoly; + else + r >>= 1; + Table[i] = r; + } + } + + uint _value = 0xFFFFFFFF; + + public void Init() { _value = 0xFFFFFFFF; } + + public void UpdateByte(byte b) + { + _value = Table[(((byte)(_value)) ^ b)] ^ (_value >> 8); + } + + public void Update(byte[] data, uint offset, uint size) + { + for (uint i = 0; i < size; i++) + _value = Table[(((byte)(_value)) ^ data[offset + i])] ^ (_value >> 8); + } + + public uint GetDigest() { return _value ^ 0xFFFFFFFF; } + + public static uint CalculateDigest(byte[] data, uint offset, uint size) + { + CRC crc = new CRC(); + // crc.Init(); + crc.Update(data, offset, size); + return crc.GetDigest(); + } + + public static bool VerifyDigest(uint digest, byte[] data, uint offset, uint size) + { + return (CalculateDigest(data, offset, size) == digest); + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Common/ICoder.cs b/ROMVault2/SupportedFiles/SevenZip/Common/ICoder.cs new file mode 100644 index 0000000..e057aac --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Common/ICoder.cs @@ -0,0 +1,157 @@ +// ICoder.h + +using System; + +namespace ROMVault2.SupportedFiles.SevenZip.Common +{ + /// + /// The exception that is thrown when an error in input stream occurs during decoding. + /// + class DataErrorException : ApplicationException + { + public DataErrorException(): base("Data Error") { } + } + + /// + /// The exception that is thrown when the value of an argument is outside the allowable range. + /// + class InvalidParamException : ApplicationException + { + public InvalidParamException(): base("Invalid Parameter") { } + } + + public interface ICodeProgress + { + /// + /// Callback progress. + /// + /// + /// input size. -1 if unknown. + /// + /// + /// output size. -1 if unknown. + /// + void SetProgress(Int64 inSize, Int64 outSize); + }; + + public interface ICoder + { + /// + /// Codes streams. + /// + /// + /// input Stream. + /// + /// + /// output Stream. + /// + /// + /// input Size. -1 if unknown. + /// + /// + /// output Size. -1 if unknown. + /// + /// + /// callback progress reference. + /// + /// + /// if input stream is not valid + /// + void Code(System.IO.Stream inStream, System.IO.Stream outStream, + Int64 inSize, Int64 outSize, ICodeProgress progress); + }; + + /* + public interface ICoder2 + { + void Code(ISequentialInStream []inStreams, + const UInt64 []inSizes, + ISequentialOutStream []outStreams, + UInt64 []outSizes, + ICodeProgress progress); + }; + */ + + /// + /// Provides the fields that represent properties idenitifiers for compressing. + /// + public enum CoderPropID + { + /// + /// Specifies default property. + /// + DefaultProp = 0, + /// + /// Specifies size of dictionary. + /// + DictionarySize, + /// + /// Specifies size of memory for PPM*. + /// + UsedMemorySize, + /// + /// Specifies order for PPM methods. + /// + Order, + /// + /// Specifies Block Size. + /// + BlockSize, + /// + /// Specifies number of postion state bits for LZMA (0 <= x <= 4). + /// + PosStateBits, + /// + /// Specifies number of literal context bits for LZMA (0 <= x <= 8). + /// + LitContextBits, + /// + /// Specifies number of literal position bits for LZMA (0 <= x <= 4). + /// + LitPosBits, + /// + /// Specifies number of fast bytes for LZ*. + /// + NumFastBytes, + /// + /// Specifies match finder. LZMA: "BT2", "BT4" or "BT4B". + /// + MatchFinder, + /// + /// Specifies the number of match finder cyckes. + /// + MatchFinderCycles, + /// + /// Specifies number of passes. + /// + NumPasses, + /// + /// Specifies number of algorithm. + /// + Algorithm, + /// + /// Specifies the number of threads. + /// + NumThreads, + /// + /// Specifies mode with end marker. + /// + EndMarker + }; + + + public interface ISetCoderProperties + { + void SetCoderProperties(CoderPropID[] propIDs, object[] properties); + }; + + public interface IWriteCoderProperties + { + void WriteCoderProperties(System.IO.Stream outStream); + } + + public interface ISetDecoderProperties + { + void SetDecoderProperties(byte[] properties); + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/IMatchFinder.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/IMatchFinder.cs new file mode 100644 index 0000000..8468e0b --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/IMatchFinder.cs @@ -0,0 +1,24 @@ +// IMatchFinder.cs + +using System; + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.LZ +{ + interface IInWindowStream + { + void SetStream(System.IO.Stream inStream); + void Init(); + void ReleaseStream(); + Byte GetIndexByte(Int32 index); + UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit); + UInt32 GetNumAvailableBytes(); + } + + interface IMatchFinder : IInWindowStream + { + void Create(UInt32 historySize, UInt32 keepAddBufferBefore, + UInt32 matchMaxLen, UInt32 keepAddBufferAfter); + UInt32 GetMatches(UInt32[] distances); + void Skip(UInt32 num); + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzBinTree.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzBinTree.cs new file mode 100644 index 0000000..fd16f44 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzBinTree.cs @@ -0,0 +1,368 @@ +// LzBinTree.cs + +using System; +using ROMVault2.SupportedFiles.SevenZip.Common; + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.LZ +{ + public class BinTree : InWindow, IMatchFinder + { + UInt32 _cyclicBufferPos; + UInt32 _cyclicBufferSize = 0; + UInt32 _matchMaxLen; + + UInt32[] _son; + UInt32[] _hash; + + UInt32 _cutValue = 0xFF; + UInt32 _hashMask; + UInt32 _hashSizeSum = 0; + + bool HASH_ARRAY = true; + + const UInt32 kHash2Size = 1 << 10; + const UInt32 kHash3Size = 1 << 16; + const UInt32 kBT2HashSize = 1 << 16; + const UInt32 kStartMaxLen = 1; + const UInt32 kHash3Offset = kHash2Size; + const UInt32 kEmptyHashValue = 0; + const UInt32 kMaxValForNormalize = ((UInt32)1 << 31) - 1; + + UInt32 kNumHashDirectBytes = 0; + UInt32 kMinMatchCheck = 4; + UInt32 kFixHashSize = kHash2Size + kHash3Size; + + public void SetType(int numHashBytes) + { + HASH_ARRAY = (numHashBytes > 2); + if (HASH_ARRAY) + { + kNumHashDirectBytes = 0; + kMinMatchCheck = 4; + kFixHashSize = kHash2Size + kHash3Size; + } + else + { + kNumHashDirectBytes = 2; + kMinMatchCheck = 2 + 1; + kFixHashSize = 0; + } + } + + public new void SetStream(System.IO.Stream stream) { base.SetStream(stream); } + public new void ReleaseStream() { base.ReleaseStream(); } + + public new void Init() + { + base.Init(); + for (UInt32 i = 0; i < _hashSizeSum; i++) + _hash[i] = kEmptyHashValue; + _cyclicBufferPos = 0; + ReduceOffsets(-1); + } + + public new void MovePos() + { + if (++_cyclicBufferPos >= _cyclicBufferSize) + _cyclicBufferPos = 0; + base.MovePos(); + if (_pos == kMaxValForNormalize) + Normalize(); + } + + public new Byte GetIndexByte(Int32 index) { return base.GetIndexByte(index); } + + public new UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit) + { return base.GetMatchLen(index, distance, limit); } + + public new UInt32 GetNumAvailableBytes() { return base.GetNumAvailableBytes(); } + + public void Create(UInt32 historySize, UInt32 keepAddBufferBefore, + UInt32 matchMaxLen, UInt32 keepAddBufferAfter) + { + if (historySize > kMaxValForNormalize - 256) + throw new Exception(); + _cutValue = 16 + (matchMaxLen >> 1); + + UInt32 windowReservSize = (historySize + keepAddBufferBefore + + matchMaxLen + keepAddBufferAfter) / 2 + 256; + + base.Create(historySize + keepAddBufferBefore, matchMaxLen + keepAddBufferAfter, windowReservSize); + + _matchMaxLen = matchMaxLen; + + UInt32 cyclicBufferSize = historySize + 1; + if (_cyclicBufferSize != cyclicBufferSize) + _son = new UInt32[(_cyclicBufferSize = cyclicBufferSize) * 2]; + + UInt32 hs = kBT2HashSize; + + if (HASH_ARRAY) + { + hs = historySize - 1; + hs |= (hs >> 1); + hs |= (hs >> 2); + hs |= (hs >> 4); + hs |= (hs >> 8); + hs >>= 1; + hs |= 0xFFFF; + if (hs > (1 << 24)) + hs >>= 1; + _hashMask = hs; + hs++; + hs += kFixHashSize; + } + if (hs != _hashSizeSum) + _hash = new UInt32[_hashSizeSum = hs]; + } + + public UInt32 GetMatches(UInt32[] distances) + { + UInt32 lenLimit; + if (_pos + _matchMaxLen <= _streamPos) + lenLimit = _matchMaxLen; + else + { + lenLimit = _streamPos - _pos; + if (lenLimit < kMinMatchCheck) + { + MovePos(); + return 0; + } + } + + UInt32 offset = 0; + UInt32 matchMinPos = (_pos > _cyclicBufferSize) ? (_pos - _cyclicBufferSize) : 0; + UInt32 cur = _bufferOffset + _pos; + UInt32 maxLen = kStartMaxLen; // to avoid items for len < hashSize; + UInt32 hashValue, hash2Value = 0, hash3Value = 0; + + if (HASH_ARRAY) + { + UInt32 temp = CRC.Table[_bufferBase[cur]] ^ _bufferBase[cur + 1]; + hash2Value = temp & (kHash2Size - 1); + temp ^= ((UInt32)(_bufferBase[cur + 2]) << 8); + hash3Value = temp & (kHash3Size - 1); + hashValue = (temp ^ (CRC.Table[_bufferBase[cur + 3]] << 5)) & _hashMask; + } + else + hashValue = _bufferBase[cur] ^ ((UInt32)(_bufferBase[cur + 1]) << 8); + + UInt32 curMatch = _hash[kFixHashSize + hashValue]; + if (HASH_ARRAY) + { + UInt32 curMatch2 = _hash[hash2Value]; + UInt32 curMatch3 = _hash[kHash3Offset + hash3Value]; + _hash[hash2Value] = _pos; + _hash[kHash3Offset + hash3Value] = _pos; + if (curMatch2 > matchMinPos) + if (_bufferBase[_bufferOffset + curMatch2] == _bufferBase[cur]) + { + distances[offset++] = maxLen = 2; + distances[offset++] = _pos - curMatch2 - 1; + } + if (curMatch3 > matchMinPos) + if (_bufferBase[_bufferOffset + curMatch3] == _bufferBase[cur]) + { + if (curMatch3 == curMatch2) + offset -= 2; + distances[offset++] = maxLen = 3; + distances[offset++] = _pos - curMatch3 - 1; + curMatch2 = curMatch3; + } + if (offset != 0 && curMatch2 == curMatch) + { + offset -= 2; + maxLen = kStartMaxLen; + } + } + + _hash[kFixHashSize + hashValue] = _pos; + + UInt32 ptr0 = (_cyclicBufferPos << 1) + 1; + UInt32 ptr1 = (_cyclicBufferPos << 1); + + UInt32 len0, len1; + len0 = len1 = kNumHashDirectBytes; + + if (kNumHashDirectBytes != 0) + { + if (curMatch > matchMinPos) + { + if (_bufferBase[_bufferOffset + curMatch + kNumHashDirectBytes] != + _bufferBase[cur + kNumHashDirectBytes]) + { + distances[offset++] = maxLen = kNumHashDirectBytes; + distances[offset++] = _pos - curMatch - 1; + } + } + } + + UInt32 count = _cutValue; + + while(true) + { + if(curMatch <= matchMinPos || count-- == 0) + { + _son[ptr0] = _son[ptr1] = kEmptyHashValue; + break; + } + UInt32 delta = _pos - curMatch; + UInt32 cyclicPos = ((delta <= _cyclicBufferPos) ? + (_cyclicBufferPos - delta) : + (_cyclicBufferPos - delta + _cyclicBufferSize)) << 1; + + UInt32 pby1 = _bufferOffset + curMatch; + UInt32 len = Math.Min(len0, len1); + if (_bufferBase[pby1 + len] == _bufferBase[cur + len]) + { + while(++len != lenLimit) + if (_bufferBase[pby1 + len] != _bufferBase[cur + len]) + break; + if (maxLen < len) + { + distances[offset++] = maxLen = len; + distances[offset++] = delta - 1; + if (len == lenLimit) + { + _son[ptr1] = _son[cyclicPos]; + _son[ptr0] = _son[cyclicPos + 1]; + break; + } + } + } + if (_bufferBase[pby1 + len] < _bufferBase[cur + len]) + { + _son[ptr1] = curMatch; + ptr1 = cyclicPos + 1; + curMatch = _son[ptr1]; + len1 = len; + } + else + { + _son[ptr0] = curMatch; + ptr0 = cyclicPos; + curMatch = _son[ptr0]; + len0 = len; + } + } + MovePos(); + return offset; + } + + public void Skip(UInt32 num) + { + do + { + UInt32 lenLimit; + if (_pos + _matchMaxLen <= _streamPos) + lenLimit = _matchMaxLen; + else + { + lenLimit = _streamPos - _pos; + if (lenLimit < kMinMatchCheck) + { + MovePos(); + continue; + } + } + + UInt32 matchMinPos = (_pos > _cyclicBufferSize) ? (_pos - _cyclicBufferSize) : 0; + UInt32 cur = _bufferOffset + _pos; + + UInt32 hashValue; + + if (HASH_ARRAY) + { + UInt32 temp = CRC.Table[_bufferBase[cur]] ^ _bufferBase[cur + 1]; + UInt32 hash2Value = temp & (kHash2Size - 1); + _hash[hash2Value] = _pos; + temp ^= ((UInt32)(_bufferBase[cur + 2]) << 8); + UInt32 hash3Value = temp & (kHash3Size - 1); + _hash[kHash3Offset + hash3Value] = _pos; + hashValue = (temp ^ (CRC.Table[_bufferBase[cur + 3]] << 5)) & _hashMask; + } + else + hashValue = _bufferBase[cur] ^ ((UInt32)(_bufferBase[cur + 1]) << 8); + + UInt32 curMatch = _hash[kFixHashSize + hashValue]; + _hash[kFixHashSize + hashValue] = _pos; + + UInt32 ptr0 = (_cyclicBufferPos << 1) + 1; + UInt32 ptr1 = (_cyclicBufferPos << 1); + + UInt32 len0, len1; + len0 = len1 = kNumHashDirectBytes; + + UInt32 count = _cutValue; + while (true) + { + if (curMatch <= matchMinPos || count-- == 0) + { + _son[ptr0] = _son[ptr1] = kEmptyHashValue; + break; + } + + UInt32 delta = _pos - curMatch; + UInt32 cyclicPos = ((delta <= _cyclicBufferPos) ? + (_cyclicBufferPos - delta) : + (_cyclicBufferPos - delta + _cyclicBufferSize)) << 1; + + UInt32 pby1 = _bufferOffset + curMatch; + UInt32 len = Math.Min(len0, len1); + if (_bufferBase[pby1 + len] == _bufferBase[cur + len]) + { + while (++len != lenLimit) + if (_bufferBase[pby1 + len] != _bufferBase[cur + len]) + break; + if (len == lenLimit) + { + _son[ptr1] = _son[cyclicPos]; + _son[ptr0] = _son[cyclicPos + 1]; + break; + } + } + if (_bufferBase[pby1 + len] < _bufferBase[cur + len]) + { + _son[ptr1] = curMatch; + ptr1 = cyclicPos + 1; + curMatch = _son[ptr1]; + len1 = len; + } + else + { + _son[ptr0] = curMatch; + ptr0 = cyclicPos; + curMatch = _son[ptr0]; + len0 = len; + } + } + MovePos(); + } + while (--num != 0); + } + + void NormalizeLinks(UInt32[] items, UInt32 numItems, UInt32 subValue) + { + for (UInt32 i = 0; i < numItems; i++) + { + UInt32 value = items[i]; + if (value <= subValue) + value = kEmptyHashValue; + else + value -= subValue; + items[i] = value; + } + } + + void Normalize() + { + UInt32 subValue = _pos - _cyclicBufferSize; + NormalizeLinks(_son, _cyclicBufferSize * 2, subValue); + NormalizeLinks(_hash, _hashSizeSum, subValue); + ReduceOffsets((Int32)subValue); + } + + public void SetCutValue(UInt32 cutValue) { _cutValue = cutValue; } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzInWindow.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzInWindow.cs new file mode 100644 index 0000000..c583e8e --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzInWindow.cs @@ -0,0 +1,132 @@ +// LzInWindow.cs + +using System; + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.LZ +{ + public class InWindow + { + public Byte[] _bufferBase = null; // pointer to buffer with data + System.IO.Stream _stream; + UInt32 _posLimit; // offset (from _buffer) of first byte when new block reading must be done + bool _streamEndWasReached; // if (true) then _streamPos shows real end of stream + + UInt32 _pointerToLastSafePosition; + + public UInt32 _bufferOffset; + + public UInt32 _blockSize; // Size of Allocated memory block + public UInt32 _pos; // offset (from _buffer) of curent byte + UInt32 _keepSizeBefore; // how many BYTEs must be kept in buffer before _pos + UInt32 _keepSizeAfter; // how many BYTEs must be kept buffer after _pos + public UInt32 _streamPos; // offset (from _buffer) of first not read byte from Stream + + public void MoveBlock() + { + UInt32 offset = (UInt32)(_bufferOffset) + _pos - _keepSizeBefore; + // we need one additional byte, since MovePos moves on 1 byte. + if (offset > 0) + offset--; + + UInt32 numBytes = (UInt32)(_bufferOffset) + _streamPos - offset; + + // check negative offset ???? + for (UInt32 i = 0; i < numBytes; i++) + _bufferBase[i] = _bufferBase[offset + i]; + _bufferOffset -= offset; + } + + public virtual void ReadBlock() + { + if (_streamEndWasReached) + return; + while (true) + { + int size = (int)((0 - _bufferOffset) + _blockSize - _streamPos); + if (size == 0) + return; + int numReadBytes = _stream.Read(_bufferBase, (int)(_bufferOffset + _streamPos), size); + if (numReadBytes == 0) + { + _posLimit = _streamPos; + UInt32 pointerToPostion = _bufferOffset + _posLimit; + if (pointerToPostion > _pointerToLastSafePosition) + _posLimit = (UInt32)(_pointerToLastSafePosition - _bufferOffset); + + _streamEndWasReached = true; + return; + } + _streamPos += (UInt32)numReadBytes; + if (_streamPos >= _pos + _keepSizeAfter) + _posLimit = _streamPos - _keepSizeAfter; + } + } + + void Free() { _bufferBase = null; } + + public void Create(UInt32 keepSizeBefore, UInt32 keepSizeAfter, UInt32 keepSizeReserv) + { + _keepSizeBefore = keepSizeBefore; + _keepSizeAfter = keepSizeAfter; + UInt32 blockSize = keepSizeBefore + keepSizeAfter + keepSizeReserv; + if (_bufferBase == null || _blockSize != blockSize) + { + Free(); + _blockSize = blockSize; + _bufferBase = new Byte[_blockSize]; + } + _pointerToLastSafePosition = _blockSize - keepSizeAfter; + } + + public void SetStream(System.IO.Stream stream) { _stream = stream; } + public void ReleaseStream() { _stream = null; } + + public void Init() + { + _bufferOffset = 0; + _pos = 0; + _streamPos = 0; + _streamEndWasReached = false; + ReadBlock(); + } + + public void MovePos() + { + _pos++; + if (_pos > _posLimit) + { + UInt32 pointerToPostion = _bufferOffset + _pos; + if (pointerToPostion > _pointerToLastSafePosition) + MoveBlock(); + ReadBlock(); + } + } + + public Byte GetIndexByte(Int32 index) { return _bufferBase[_bufferOffset + _pos + index]; } + + // index + limit have not to exceed _keepSizeAfter; + public UInt32 GetMatchLen(Int32 index, UInt32 distance, UInt32 limit) + { + if (_streamEndWasReached) + if ((_pos + index) + limit > _streamPos) + limit = _streamPos - (UInt32)(_pos + index); + distance++; + // Byte *pby = _buffer + (size_t)_pos + index; + UInt32 pby = _bufferOffset + _pos + (UInt32)index; + + UInt32 i; + for (i = 0; i < limit && _bufferBase[pby + i] == _bufferBase[pby + i - distance]; i++); + return i; + } + + public UInt32 GetNumAvailableBytes() { return _streamPos - _pos; } + + public void ReduceOffsets(Int32 subValue) + { + _bufferOffset += (UInt32)subValue; + _posLimit -= (UInt32)subValue; + _pos -= (UInt32)subValue; + _streamPos -= (UInt32)subValue; + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzOutWindow.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzOutWindow.cs new file mode 100644 index 0000000..a6cd908 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/LZ/LzOutWindow.cs @@ -0,0 +1,135 @@ +// LzOutWindow.cs + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.LZ +{ + public class OutWindow + { + byte[] _buffer = null; + uint _pos; + uint _windowSize = 0; + uint _streamPos; + System.IO.Stream _stream; + + public uint TrainSize = 0; + + public void Create(uint windowSize) + { + if (_windowSize != windowSize) + { + // System.GC.Collect(); + _buffer = new byte[windowSize]; + } + _windowSize = windowSize; + _pos = 0; + _streamPos = 0; + } + + public void Init(System.IO.Stream stream, bool solid) + { + ReleaseStream(); + _stream = stream; + if (!solid) + { + _streamPos = 0; + _pos = 0; + TrainSize = 0; + } + } + + public bool Train(System.IO.Stream stream) + { + long len = stream.Length; + uint size = (len < _windowSize) ? (uint)len : _windowSize; + TrainSize = size; + stream.Position = len - size; + _streamPos = _pos = 0; + while (size > 0) + { + uint curSize = _windowSize - _pos; + if (size < curSize) + curSize = size; + int numReadBytes = stream.Read(_buffer, (int)_pos, (int)curSize); + if (numReadBytes == 0) + return false; + size -= (uint)numReadBytes; + _pos += (uint)numReadBytes; + _streamPos += (uint)numReadBytes; + if (_pos == _windowSize) + _streamPos = _pos = 0; + } + return true; + } + + public void ReleaseStream() + { + Flush(); + _stream = null; + } + + public void Flush() + { + uint size = _pos - _streamPos; + if (size == 0) + return; + if (_stream != null) + _stream.Write(_buffer, (int)_streamPos, (int)size); + if (_pos >= _windowSize) + _pos = 0; + _streamPos = _pos; + } + + public void CopyBlock(uint distance, uint len) + { + uint l = 0; + + uint pos = _pos - distance - 1; + if (pos >= _windowSize) + pos += _windowSize; + for (; len > 0; len--) + { + if (pos >= _windowSize) + pos = 0; + _buffer[_pos++] = _buffer[pos++]; + if (_pos >= _windowSize) + Flush(); + } + } + + + public void CopyBlockRetBlock(uint distance, uint len, ref byte[] outbuffer) + { + if (outbuffer == null || outbuffer.Length < len) + outbuffer=new byte[len]; + + uint l = 0; + + uint pos = _pos - distance - 1; + if (pos >= _windowSize) + pos += _windowSize; + for (; len > 0; len--) + { + if (pos >= _windowSize) + pos = 0; + outbuffer[l++] = _buffer[pos]; + _buffer[_pos++] = _buffer[pos++]; + if (_pos >= _windowSize) + Flush(); + } + } + + public void PutByte(byte b) + { + _buffer[_pos++] = b; + if (_pos >= _windowSize) + Flush(); + } + + public byte GetByte(uint distance) + { + uint pos = _pos - distance - 1; + if (pos >= _windowSize) + pos += _windowSize; + return _buffer[pos]; + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaBase.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaBase.cs new file mode 100644 index 0000000..d0ec96f --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaBase.cs @@ -0,0 +1,76 @@ +// LzmaBase.cs + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.LZMA +{ + internal abstract class Base + { + public const uint kNumRepDistances = 4; + public const uint kNumStates = 12; + + // static byte []kLiteralNextStates = {0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 4, 5}; + // static byte []kMatchNextStates = {7, 7, 7, 7, 7, 7, 7, 10, 10, 10, 10, 10}; + // static byte []kRepNextStates = {8, 8, 8, 8, 8, 8, 8, 11, 11, 11, 11, 11}; + // static byte []kShortRepNextStates = {9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11}; + + public struct State + { + public uint Index; + public void Init() { Index = 0; } + public void UpdateChar() + { + if (Index < 4) Index = 0; + else if (Index < 10) Index -= 3; + else Index -= 6; + } + public void UpdateMatch() { Index = (uint)(Index < 7 ? 7 : 10); } + public void UpdateRep() { Index = (uint)(Index < 7 ? 8 : 11); } + public void UpdateShortRep() { Index = (uint)(Index < 7 ? 9 : 11); } + public bool IsCharState() { return Index < 7; } + } + + public const int kNumPosSlotBits = 6; + public const int kDicLogSizeMin = 0; + // public const int kDicLogSizeMax = 30; + // public const uint kDistTableSizeMax = kDicLogSizeMax * 2; + + public const int kNumLenToPosStatesBits = 2; // it's for speed optimization + public const uint kNumLenToPosStates = 1 << kNumLenToPosStatesBits; + + public const uint kMatchMinLen = 2; + + public static uint GetLenToPosState(uint len) + { + len -= kMatchMinLen; + if (len < kNumLenToPosStates) + return len; + return (uint)(kNumLenToPosStates - 1); + } + + public const int kNumAlignBits = 4; + public const uint kAlignTableSize = 1 << kNumAlignBits; + public const uint kAlignMask = (kAlignTableSize - 1); + + public const uint kStartPosModelIndex = 4; + public const uint kEndPosModelIndex = 14; + public const uint kNumPosModels = kEndPosModelIndex - kStartPosModelIndex; + + public const uint kNumFullDistances = 1 << ((int)kEndPosModelIndex / 2); + + public const uint kNumLitPosStatesBitsEncodingMax = 4; + public const uint kNumLitContextBitsMax = 8; + + public const int kNumPosStatesBitsMax = 4; + public const uint kNumPosStatesMax = (1 << kNumPosStatesBitsMax); + public const int kNumPosStatesBitsEncodingMax = 4; + public const uint kNumPosStatesEncodingMax = (1 << kNumPosStatesBitsEncodingMax); + + public const int kNumLowLenBits = 3; + public const int kNumMidLenBits = 3; + public const int kNumHighLenBits = 8; + public const uint kNumLowLenSymbols = 1 << kNumLowLenBits; + public const uint kNumMidLenSymbols = 1 << kNumMidLenBits; + public const uint kNumLenSymbols = kNumLowLenSymbols + kNumMidLenSymbols + + (1 << kNumHighLenBits); + public const uint kMatchMaxLen = kMatchMinLen + kNumLenSymbols - 1; + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaDecoder.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaDecoder.cs new file mode 100644 index 0000000..7967120 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaDecoder.cs @@ -0,0 +1,597 @@ +// LzmaDecoder.cs + +using System; +using System.IO; +using ROMVault2.SupportedFiles.SevenZip.Common; +using ROMVault2.SupportedFiles.SevenZip.Compress.RangeCoder; + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.LZMA +{ + public class Decoder : Stream, ICoder, ISetDecoderProperties + { + class LenDecoder + { + BitDecoder m_Choice = new BitDecoder(); + BitDecoder m_Choice2 = new BitDecoder(); + BitTreeDecoder[] m_LowCoder = new BitTreeDecoder[Base.kNumPosStatesMax]; + BitTreeDecoder[] m_MidCoder = new BitTreeDecoder[Base.kNumPosStatesMax]; + BitTreeDecoder m_HighCoder = new BitTreeDecoder(Base.kNumHighLenBits); + uint m_NumPosStates = 0; + + public void Create(uint numPosStates) + { + for (uint posState = m_NumPosStates; posState < numPosStates; posState++) + { + m_LowCoder[posState] = new BitTreeDecoder(Base.kNumLowLenBits); + m_MidCoder[posState] = new BitTreeDecoder(Base.kNumMidLenBits); + } + m_NumPosStates = numPosStates; + } + + public void Init() + { + m_Choice.Init(); + for (uint posState = 0; posState < m_NumPosStates; posState++) + { + m_LowCoder[posState].Init(); + m_MidCoder[posState].Init(); + } + m_Choice2.Init(); + m_HighCoder.Init(); + } + + public uint Decode(RangeCoder.Decoder rangeDecoder, uint posState) + { + if (m_Choice.Decode(rangeDecoder) == 0) + return m_LowCoder[posState].Decode(rangeDecoder); + else + { + uint symbol = Base.kNumLowLenSymbols; + if (m_Choice2.Decode(rangeDecoder) == 0) + symbol += m_MidCoder[posState].Decode(rangeDecoder); + else + { + symbol += Base.kNumMidLenSymbols; + symbol += m_HighCoder.Decode(rangeDecoder); + } + return symbol; + } + } + } + + class LiteralDecoder + { + struct Decoder2 + { + BitDecoder[] m_Decoders; + public void Create() { m_Decoders = new BitDecoder[0x300]; } + public void Init() { for (int i = 0; i < 0x300; i++) m_Decoders[i].Init(); } + + public byte DecodeNormal(RangeCoder.Decoder rangeDecoder) + { + uint symbol = 1; + do + symbol = (symbol << 1) | m_Decoders[symbol].Decode(rangeDecoder); + while (symbol < 0x100); + return (byte)symbol; + } + + public byte DecodeWithMatchByte(RangeCoder.Decoder rangeDecoder, byte matchByte) + { + uint symbol = 1; + do + { + uint matchBit = (uint)(matchByte >> 7) & 1; + matchByte <<= 1; + uint bit = m_Decoders[((1 + matchBit) << 8) + symbol].Decode(rangeDecoder); + symbol = (symbol << 1) | bit; + if (matchBit != bit) + { + while (symbol < 0x100) + symbol = (symbol << 1) | m_Decoders[symbol].Decode(rangeDecoder); + break; + } + } + while (symbol < 0x100); + return (byte)symbol; + } + } + + Decoder2[] m_Coders; + int m_NumPrevBits; + int m_NumPosBits; + uint m_PosMask; + + public void Create(int numPosBits, int numPrevBits) + { + if (m_Coders != null && m_NumPrevBits == numPrevBits && + m_NumPosBits == numPosBits) + return; + m_NumPosBits = numPosBits; + m_PosMask = ((uint)1 << numPosBits) - 1; + m_NumPrevBits = numPrevBits; + uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits); + m_Coders = new Decoder2[numStates]; + for (uint i = 0; i < numStates; i++) + m_Coders[i].Create(); + } + + public void Init() + { + uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits); + for (uint i = 0; i < numStates; i++) + m_Coders[i].Init(); + } + + uint GetState(uint pos, byte prevByte) + { return ((pos & m_PosMask) << m_NumPrevBits) + (uint)(prevByte >> (8 - m_NumPrevBits)); } + + public byte DecodeNormal(RangeCoder.Decoder rangeDecoder, uint pos, byte prevByte) + { return m_Coders[GetState(pos, prevByte)].DecodeNormal(rangeDecoder); } + + public byte DecodeWithMatchByte(RangeCoder.Decoder rangeDecoder, uint pos, byte prevByte, byte matchByte) + { return m_Coders[GetState(pos, prevByte)].DecodeWithMatchByte(rangeDecoder, matchByte); } + }; + + LZ.OutWindow m_OutWindow = new LZ.OutWindow(); + RangeCoder.Decoder m_RangeDecoder = new RangeCoder.Decoder(); + + BitDecoder[] m_IsMatchDecoders = new BitDecoder[Base.kNumStates << Base.kNumPosStatesBitsMax]; + BitDecoder[] m_IsRepDecoders = new BitDecoder[Base.kNumStates]; + BitDecoder[] m_IsRepG0Decoders = new BitDecoder[Base.kNumStates]; + BitDecoder[] m_IsRepG1Decoders = new BitDecoder[Base.kNumStates]; + BitDecoder[] m_IsRepG2Decoders = new BitDecoder[Base.kNumStates]; + BitDecoder[] m_IsRep0LongDecoders = new BitDecoder[Base.kNumStates << Base.kNumPosStatesBitsMax]; + + BitTreeDecoder[] m_PosSlotDecoder = new BitTreeDecoder[Base.kNumLenToPosStates]; + BitDecoder[] m_PosDecoders = new BitDecoder[Base.kNumFullDistances - Base.kEndPosModelIndex]; + + BitTreeDecoder m_PosAlignDecoder = new BitTreeDecoder(Base.kNumAlignBits); + + LenDecoder m_LenDecoder = new LenDecoder(); + LenDecoder m_RepLenDecoder = new LenDecoder(); + + LiteralDecoder m_LiteralDecoder = new LiteralDecoder(); + + uint m_DictionarySize; + uint m_DictionarySizeCheck; + + uint m_PosStateMask; + + public Decoder() + { + m_DictionarySize = 0xFFFFFFFF; + for (int i = 0; i < Base.kNumLenToPosStates; i++) + m_PosSlotDecoder[i] = new BitTreeDecoder(Base.kNumPosSlotBits); + } + + void SetDictionarySize(uint dictionarySize) + { + if (m_DictionarySize != dictionarySize) + { + m_DictionarySize = dictionarySize; + m_DictionarySizeCheck = Math.Max(m_DictionarySize, 1); + uint blockSize = Math.Max(m_DictionarySizeCheck, (1 << 12)); + m_OutWindow.Create(blockSize); + } + } + + void SetLiteralProperties(int lp, int lc) + { + if (lp > 8) + throw new InvalidParamException(); + if (lc > 8) + throw new InvalidParamException(); + m_LiteralDecoder.Create(lp, lc); + } + + void SetPosBitsProperties(int pb) + { + if (pb > Base.kNumPosStatesBitsMax) + throw new InvalidParamException(); + uint numPosStates = (uint)1 << pb; + m_LenDecoder.Create(numPosStates); + m_RepLenDecoder.Create(numPosStates); + m_PosStateMask = numPosStates - 1; + } + + bool _solid = false; + void Init(Stream inStream, Stream outStream) + { + m_RangeDecoder.Init(inStream); + m_OutWindow.Init(outStream, _solid); + + uint i; + for (i = 0; i < Base.kNumStates; i++) + { + for (uint j = 0; j <= m_PosStateMask; j++) + { + uint index = (i << Base.kNumPosStatesBitsMax) + j; + m_IsMatchDecoders[index].Init(); + m_IsRep0LongDecoders[index].Init(); + } + m_IsRepDecoders[i].Init(); + m_IsRepG0Decoders[i].Init(); + m_IsRepG1Decoders[i].Init(); + m_IsRepG2Decoders[i].Init(); + } + + m_LiteralDecoder.Init(); + for (i = 0; i < Base.kNumLenToPosStates; i++) + m_PosSlotDecoder[i].Init(); + // m_PosSpecDecoder.Init(); + for (i = 0; i < Base.kNumFullDistances - Base.kEndPosModelIndex; i++) + m_PosDecoders[i].Init(); + + m_LenDecoder.Init(); + m_RepLenDecoder.Init(); + m_PosAlignDecoder.Init(); + } + + public void Code(Stream inStream, Stream outStream, Int64 inSize, Int64 outSize, ICodeProgress progress) + { + Init(inStream, outStream); + + Base.State state = new Base.State(); + state.Init(); + uint rep0 = 0, rep1 = 0, rep2 = 0, rep3 = 0; + + UInt64 nowPos64 = 0; + UInt64 outSize64 = (UInt64)outSize; + if (nowPos64 < outSize64) + { + if (m_IsMatchDecoders[state.Index << Base.kNumPosStatesBitsMax].Decode(m_RangeDecoder) != 0) + throw new DataErrorException(); + state.UpdateChar(); + byte b = m_LiteralDecoder.DecodeNormal(m_RangeDecoder, 0, 0); + m_OutWindow.PutByte(b); + nowPos64++; + } + while (nowPos64 < outSize64) + { + // UInt64 next = Math.Min(nowPos64 + (1 << 18), outSize64); + // while(nowPos64 < next) + { + uint posState = (uint)nowPos64 & m_PosStateMask; + if (m_IsMatchDecoders[(state.Index << Base.kNumPosStatesBitsMax) + posState].Decode(m_RangeDecoder) == 0) + { + byte b; + byte prevByte = m_OutWindow.GetByte(0); + if (!state.IsCharState()) + b = m_LiteralDecoder.DecodeWithMatchByte(m_RangeDecoder, + (uint)nowPos64, prevByte, m_OutWindow.GetByte(rep0)); + else + b = m_LiteralDecoder.DecodeNormal(m_RangeDecoder, (uint)nowPos64, prevByte); + m_OutWindow.PutByte(b); + state.UpdateChar(); + nowPos64++; + } + else + { + uint len; + if (m_IsRepDecoders[state.Index].Decode(m_RangeDecoder) == 1) + { + if (m_IsRepG0Decoders[state.Index].Decode(m_RangeDecoder) == 0) + { + if (m_IsRep0LongDecoders[(state.Index << Base.kNumPosStatesBitsMax) + posState].Decode(m_RangeDecoder) == 0) + { + state.UpdateShortRep(); + m_OutWindow.PutByte(m_OutWindow.GetByte(rep0)); + nowPos64++; + continue; + } + } + else + { + UInt32 distance; + if (m_IsRepG1Decoders[state.Index].Decode(m_RangeDecoder) == 0) + { + distance = rep1; + } + else + { + if (m_IsRepG2Decoders[state.Index].Decode(m_RangeDecoder) == 0) + distance = rep2; + else + { + distance = rep3; + rep3 = rep2; + } + rep2 = rep1; + } + rep1 = rep0; + rep0 = distance; + } + len = m_RepLenDecoder.Decode(m_RangeDecoder, posState) + Base.kMatchMinLen; + state.UpdateRep(); + } + else + { + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + len = Base.kMatchMinLen + m_LenDecoder.Decode(m_RangeDecoder, posState); + state.UpdateMatch(); + uint posSlot = m_PosSlotDecoder[Base.GetLenToPosState(len)].Decode(m_RangeDecoder); + if (posSlot >= Base.kStartPosModelIndex) + { + int numDirectBits = (int)((posSlot >> 1) - 1); + rep0 = ((2 | (posSlot & 1)) << numDirectBits); + if (posSlot < Base.kEndPosModelIndex) + rep0 += BitTreeDecoder.ReverseDecode(m_PosDecoders, + rep0 - posSlot - 1, m_RangeDecoder, numDirectBits); + else + { + rep0 += (m_RangeDecoder.DecodeDirectBits( + numDirectBits - Base.kNumAlignBits) << Base.kNumAlignBits); + rep0 += m_PosAlignDecoder.ReverseDecode(m_RangeDecoder); + } + } + else + rep0 = posSlot; + } + if (rep0 >= m_OutWindow.TrainSize + nowPos64 || rep0 >= m_DictionarySizeCheck) + { + if (rep0 == 0xFFFFFFFF) + break; + throw new DataErrorException(); + } + m_OutWindow.CopyBlock(rep0, len); + nowPos64 += len; + } + } + } + m_OutWindow.Flush(); + m_OutWindow.ReleaseStream(); + m_RangeDecoder.ReleaseStream(); + } + + public void SetDecoderProperties(byte[] properties) + { + if (properties.Length < 5) + throw new InvalidParamException(); + int lc = properties[0] % 9; + int remainder = properties[0] / 9; + int lp = remainder % 5; + int pb = remainder / 5; + if (pb > Base.kNumPosStatesBitsMax) + throw new InvalidParamException(); + UInt32 dictionarySize = 0; + for (int i = 0; i < 4; i++) + dictionarySize += ((UInt32)(properties[1 + i])) << (i * 8); + SetDictionarySize(dictionarySize); + SetLiteralProperties(lp, lc); + SetPosBitsProperties(pb); + } + + public bool Train(System.IO.Stream stream) + { + _solid = true; + return m_OutWindow.Train(stream); + } + + + + + + private Base.State state; + private uint rep0, rep1, rep2, rep3; + private UInt64 nowPos64; + private bool init; + + private byte[] outbuffer; + private uint outbufferpos; + private uint outbufferlen; + private uint totalout; + public void SetUpStream(Stream inStream) + { + Init(inStream, null); + + state = new Base.State(); + state.Init(); + + rep0 = 0; + rep1 = 0; + rep2 = 0; + rep3 = 0; + nowPos64 = 0; + + init = false; + outbufferpos = 0; + outbufferlen = 0; + totalout = 0; + } + public void ReleaseStream() + { + m_RangeDecoder.ReleaseStream(); + } + + private void GetNextBytes() + { + if (!init) + { + if (m_IsMatchDecoders[state.Index << Base.kNumPosStatesBitsMax].Decode(m_RangeDecoder) != 0) + throw new DataErrorException(); + state.UpdateChar(); + byte b = m_LiteralDecoder.DecodeNormal(m_RangeDecoder, 0, 0); + m_OutWindow.PutByte(b); + nowPos64++; + init = true; + + outbuffer=new byte[1]; + outbuffer[0] = b; + outbufferlen = 1; + return; + } + + uint posState = (uint)nowPos64 & m_PosStateMask; + if (m_IsMatchDecoders[(state.Index << Base.kNumPosStatesBitsMax) + posState].Decode(m_RangeDecoder) == 0) + { + byte b; + byte prevByte = m_OutWindow.GetByte(0); + if (!state.IsCharState()) + b = m_LiteralDecoder.DecodeWithMatchByte(m_RangeDecoder, + (uint)nowPos64, prevByte, m_OutWindow.GetByte(rep0)); + else + b = m_LiteralDecoder.DecodeNormal(m_RangeDecoder, (uint)nowPos64, prevByte); + m_OutWindow.PutByte(b); + state.UpdateChar(); + nowPos64++; + + outbuffer[0] = b; + outbufferlen = 1; + return; + + } + uint len; + if (m_IsRepDecoders[state.Index].Decode(m_RangeDecoder) == 1) + { + if (m_IsRepG0Decoders[state.Index].Decode(m_RangeDecoder) == 0) + { + if (m_IsRep0LongDecoders[(state.Index << Base.kNumPosStatesBitsMax) + posState].Decode(m_RangeDecoder) == 0) + { + state.UpdateShortRep(); + byte b = m_OutWindow.GetByte(rep0); + m_OutWindow.PutByte(b); + nowPos64++; + + outbuffer[0] = b; + outbufferlen = 1; + return; + } + } + else + { + UInt32 distance; + if (m_IsRepG1Decoders[state.Index].Decode(m_RangeDecoder) == 0) + { + distance = rep1; + } + else + { + if (m_IsRepG2Decoders[state.Index].Decode(m_RangeDecoder) == 0) + distance = rep2; + else + { + distance = rep3; + rep3 = rep2; + } + rep2 = rep1; + } + rep1 = rep0; + rep0 = distance; + } + len = m_RepLenDecoder.Decode(m_RangeDecoder, posState) + Base.kMatchMinLen; + state.UpdateRep(); + } + else + { + rep3 = rep2; + rep2 = rep1; + rep1 = rep0; + len = Base.kMatchMinLen + m_LenDecoder.Decode(m_RangeDecoder, posState); + state.UpdateMatch(); + uint posSlot = m_PosSlotDecoder[Base.GetLenToPosState(len)].Decode(m_RangeDecoder); + if (posSlot >= Base.kStartPosModelIndex) + { + int numDirectBits = (int)((posSlot >> 1) - 1); + rep0 = ((2 | (posSlot & 1)) << numDirectBits); + if (posSlot < Base.kEndPosModelIndex) + rep0 += BitTreeDecoder.ReverseDecode(m_PosDecoders, + rep0 - posSlot - 1, m_RangeDecoder, numDirectBits); + else + { + rep0 += (m_RangeDecoder.DecodeDirectBits( + numDirectBits - Base.kNumAlignBits) << Base.kNumAlignBits); + rep0 += m_PosAlignDecoder.ReverseDecode(m_RangeDecoder); + } + } + else + rep0 = posSlot; + } + if (rep0 >= m_OutWindow.TrainSize + nowPos64 || rep0 >= m_DictionarySizeCheck) + { + if (rep0 == 0xFFFFFFFF) + return; + throw new DataErrorException(); + } + m_OutWindow.CopyBlockRetBlock(rep0, len, ref outbuffer); + outbufferlen = len; + nowPos64 += len; + } + + public override void Flush() + { + throw new NotImplementedException(); + } + + public override long Seek(long offset, SeekOrigin origin) + { + if (origin != SeekOrigin.Current) + throw new NotImplementedException(); + + for (int i = 0; i < offset; i++) + { + if (outbufferpos == outbufferlen) + { + GetNextBytes(); + outbufferpos = 0; + } + outbufferpos++; + totalout++; + } + return totalout; + } + + public override void SetLength(long value) + { + throw new NotImplementedException(); + } + + public override int Read(byte[] buffer, int offset, int count) + { + for (int i = 0; i < count; i++) + { + if (outbufferpos == outbufferlen) + { + GetNextBytes(); + outbufferpos = 0; + } + buffer[offset + i] = outbuffer[outbufferpos++]; + totalout++; + } + return count; + } + + public override void Write(byte[] buffer, int offset, int count) + { + throw new NotImplementedException(); + } + + public override bool CanRead + { + get { return true; } + } + + public override bool CanSeek + { + get { throw new NotImplementedException(); } + } + + public override bool CanWrite + { + get { return false; } + } + + public override long Length + { + get { throw new NotImplementedException(); } + } + + public override long Position + { + get { return totalout; } + set { } + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaEncoder.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaEncoder.cs new file mode 100644 index 0000000..53611d3 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/LZMA/LzmaEncoder.cs @@ -0,0 +1,1480 @@ +// LzmaEncoder.cs + +using System; +using ROMVault2.SupportedFiles.SevenZip.Common; +using ROMVault2.SupportedFiles.SevenZip.Compress.RangeCoder; + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.LZMA +{ + public class Encoder : ICoder, ISetCoderProperties, IWriteCoderProperties + { + enum EMatchFinderType + { + BT2, + BT4, + }; + + const UInt32 kIfinityPrice = 0xFFFFFFF; + + static Byte[] g_FastPos = new Byte[1 << 11]; + + static Encoder() + { + const Byte kFastSlots = 22; + int c = 2; + g_FastPos[0] = 0; + g_FastPos[1] = 1; + for (Byte slotFast = 2; slotFast < kFastSlots; slotFast++) + { + UInt32 k = ((UInt32)1 << ((slotFast >> 1) - 1)); + for (UInt32 j = 0; j < k; j++, c++) + g_FastPos[c] = slotFast; + } + } + + static UInt32 GetPosSlot(UInt32 pos) + { + if (pos < (1 << 11)) + return g_FastPos[pos]; + if (pos < (1 << 21)) + return (UInt32)(g_FastPos[pos >> 10] + 20); + return (UInt32)(g_FastPos[pos >> 20] + 40); + } + + static UInt32 GetPosSlot2(UInt32 pos) + { + if (pos < (1 << 17)) + return (UInt32)(g_FastPos[pos >> 6] + 12); + if (pos < (1 << 27)) + return (UInt32)(g_FastPos[pos >> 16] + 32); + return (UInt32)(g_FastPos[pos >> 26] + 52); + } + + Base.State _state = new Base.State(); + Byte _previousByte; + UInt32[] _repDistances = new UInt32[Base.kNumRepDistances]; + + void BaseInit() + { + _state.Init(); + _previousByte = 0; + for (UInt32 i = 0; i < Base.kNumRepDistances; i++) + _repDistances[i] = 0; + } + + const int kDefaultDictionaryLogSize = 22; + const UInt32 kNumFastBytesDefault = 0x20; + + class LiteralEncoder + { + public struct Encoder2 + { + BitEncoder[] m_Encoders; + + public void Create() { m_Encoders = new BitEncoder[0x300]; } + + public void Init() { for (int i = 0; i < 0x300; i++) m_Encoders[i].Init(); } + + public void Encode(RangeCoder.Encoder rangeEncoder, byte symbol) + { + uint context = 1; + for (int i = 7; i >= 0; i--) + { + uint bit = (uint)((symbol >> i) & 1); + m_Encoders[context].Encode(rangeEncoder, bit); + context = (context << 1) | bit; + } + } + + public void EncodeMatched(RangeCoder.Encoder rangeEncoder, byte matchByte, byte symbol) + { + uint context = 1; + bool same = true; + for (int i = 7; i >= 0; i--) + { + uint bit = (uint)((symbol >> i) & 1); + uint state = context; + if (same) + { + uint matchBit = (uint)((matchByte >> i) & 1); + state += ((1 + matchBit) << 8); + same = (matchBit == bit); + } + m_Encoders[state].Encode(rangeEncoder, bit); + context = (context << 1) | bit; + } + } + + public uint GetPrice(bool matchMode, byte matchByte, byte symbol) + { + uint price = 0; + uint context = 1; + int i = 7; + if (matchMode) + { + for (; i >= 0; i--) + { + uint matchBit = (uint)(matchByte >> i) & 1; + uint bit = (uint)(symbol >> i) & 1; + price += m_Encoders[((1 + matchBit) << 8) + context].GetPrice(bit); + context = (context << 1) | bit; + if (matchBit != bit) + { + i--; + break; + } + } + } + for (; i >= 0; i--) + { + uint bit = (uint)(symbol >> i) & 1; + price += m_Encoders[context].GetPrice(bit); + context = (context << 1) | bit; + } + return price; + } + } + + Encoder2[] m_Coders; + int m_NumPrevBits; + int m_NumPosBits; + uint m_PosMask; + + public void Create(int numPosBits, int numPrevBits) + { + if (m_Coders != null && m_NumPrevBits == numPrevBits && m_NumPosBits == numPosBits) + return; + m_NumPosBits = numPosBits; + m_PosMask = ((uint)1 << numPosBits) - 1; + m_NumPrevBits = numPrevBits; + uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits); + m_Coders = new Encoder2[numStates]; + for (uint i = 0; i < numStates; i++) + m_Coders[i].Create(); + } + + public void Init() + { + uint numStates = (uint)1 << (m_NumPrevBits + m_NumPosBits); + for (uint i = 0; i < numStates; i++) + m_Coders[i].Init(); + } + + public Encoder2 GetSubCoder(UInt32 pos, Byte prevByte) + { return m_Coders[((pos & m_PosMask) << m_NumPrevBits) + (uint)(prevByte >> (8 - m_NumPrevBits))]; } + } + + class LenEncoder + { + RangeCoder.BitEncoder _choice = new RangeCoder.BitEncoder(); + RangeCoder.BitEncoder _choice2 = new RangeCoder.BitEncoder(); + RangeCoder.BitTreeEncoder[] _lowCoder = new RangeCoder.BitTreeEncoder[Base.kNumPosStatesEncodingMax]; + RangeCoder.BitTreeEncoder[] _midCoder = new RangeCoder.BitTreeEncoder[Base.kNumPosStatesEncodingMax]; + RangeCoder.BitTreeEncoder _highCoder = new RangeCoder.BitTreeEncoder(Base.kNumHighLenBits); + + public LenEncoder() + { + for (UInt32 posState = 0; posState < Base.kNumPosStatesEncodingMax; posState++) + { + _lowCoder[posState] = new RangeCoder.BitTreeEncoder(Base.kNumLowLenBits); + _midCoder[posState] = new RangeCoder.BitTreeEncoder(Base.kNumMidLenBits); + } + } + + public void Init(UInt32 numPosStates) + { + _choice.Init(); + _choice2.Init(); + for (UInt32 posState = 0; posState < numPosStates; posState++) + { + _lowCoder[posState].Init(); + _midCoder[posState].Init(); + } + _highCoder.Init(); + } + + public void Encode(RangeCoder.Encoder rangeEncoder, UInt32 symbol, UInt32 posState) + { + if (symbol < Base.kNumLowLenSymbols) + { + _choice.Encode(rangeEncoder, 0); + _lowCoder[posState].Encode(rangeEncoder, symbol); + } + else + { + symbol -= Base.kNumLowLenSymbols; + _choice.Encode(rangeEncoder, 1); + if (symbol < Base.kNumMidLenSymbols) + { + _choice2.Encode(rangeEncoder, 0); + _midCoder[posState].Encode(rangeEncoder, symbol); + } + else + { + _choice2.Encode(rangeEncoder, 1); + _highCoder.Encode(rangeEncoder, symbol - Base.kNumMidLenSymbols); + } + } + } + + public void SetPrices(UInt32 posState, UInt32 numSymbols, UInt32[] prices, UInt32 st) + { + UInt32 a0 = _choice.GetPrice0(); + UInt32 a1 = _choice.GetPrice1(); + UInt32 b0 = a1 + _choice2.GetPrice0(); + UInt32 b1 = a1 + _choice2.GetPrice1(); + UInt32 i = 0; + for (i = 0; i < Base.kNumLowLenSymbols; i++) + { + if (i >= numSymbols) + return; + prices[st + i] = a0 + _lowCoder[posState].GetPrice(i); + } + for (; i < Base.kNumLowLenSymbols + Base.kNumMidLenSymbols; i++) + { + if (i >= numSymbols) + return; + prices[st + i] = b0 + _midCoder[posState].GetPrice(i - Base.kNumLowLenSymbols); + } + for (; i < numSymbols; i++) + prices[st + i] = b1 + _highCoder.GetPrice(i - Base.kNumLowLenSymbols - Base.kNumMidLenSymbols); + } + }; + + const UInt32 kNumLenSpecSymbols = Base.kNumLowLenSymbols + Base.kNumMidLenSymbols; + + class LenPriceTableEncoder : LenEncoder + { + UInt32[] _prices = new UInt32[Base.kNumLenSymbols << Base.kNumPosStatesBitsEncodingMax]; + UInt32 _tableSize; + UInt32[] _counters = new UInt32[Base.kNumPosStatesEncodingMax]; + + public void SetTableSize(UInt32 tableSize) { _tableSize = tableSize; } + + public UInt32 GetPrice(UInt32 symbol, UInt32 posState) + { + return _prices[posState * Base.kNumLenSymbols + symbol]; + } + + void UpdateTable(UInt32 posState) + { + SetPrices(posState, _tableSize, _prices, posState * Base.kNumLenSymbols); + _counters[posState] = _tableSize; + } + + public void UpdateTables(UInt32 numPosStates) + { + for (UInt32 posState = 0; posState < numPosStates; posState++) + UpdateTable(posState); + } + + public new void Encode(RangeCoder.Encoder rangeEncoder, UInt32 symbol, UInt32 posState) + { + base.Encode(rangeEncoder, symbol, posState); + if (--_counters[posState] == 0) + UpdateTable(posState); + } + } + + const UInt32 kNumOpts = 1 << 12; + class Optimal + { + public Base.State State; + + public bool Prev1IsChar; + public bool Prev2; + + public UInt32 PosPrev2; + public UInt32 BackPrev2; + + public UInt32 Price; + public UInt32 PosPrev; + public UInt32 BackPrev; + + public UInt32 Backs0; + public UInt32 Backs1; + public UInt32 Backs2; + public UInt32 Backs3; + + public void MakeAsChar() { BackPrev = 0xFFFFFFFF; Prev1IsChar = false; } + public void MakeAsShortRep() { BackPrev = 0; ; Prev1IsChar = false; } + public bool IsShortRep() { return (BackPrev == 0); } + }; + Optimal[] _optimum = new Optimal[kNumOpts]; + LZ.IMatchFinder _matchFinder = null; + RangeCoder.Encoder _rangeEncoder = new RangeCoder.Encoder(); + + RangeCoder.BitEncoder[] _isMatch = new RangeCoder.BitEncoder[Base.kNumStates << Base.kNumPosStatesBitsMax]; + RangeCoder.BitEncoder[] _isRep = new RangeCoder.BitEncoder[Base.kNumStates]; + RangeCoder.BitEncoder[] _isRepG0 = new RangeCoder.BitEncoder[Base.kNumStates]; + RangeCoder.BitEncoder[] _isRepG1 = new RangeCoder.BitEncoder[Base.kNumStates]; + RangeCoder.BitEncoder[] _isRepG2 = new RangeCoder.BitEncoder[Base.kNumStates]; + RangeCoder.BitEncoder[] _isRep0Long = new RangeCoder.BitEncoder[Base.kNumStates << Base.kNumPosStatesBitsMax]; + + RangeCoder.BitTreeEncoder[] _posSlotEncoder = new RangeCoder.BitTreeEncoder[Base.kNumLenToPosStates]; + + RangeCoder.BitEncoder[] _posEncoders = new RangeCoder.BitEncoder[Base.kNumFullDistances - Base.kEndPosModelIndex]; + RangeCoder.BitTreeEncoder _posAlignEncoder = new RangeCoder.BitTreeEncoder(Base.kNumAlignBits); + + LenPriceTableEncoder _lenEncoder = new LenPriceTableEncoder(); + LenPriceTableEncoder _repMatchLenEncoder = new LenPriceTableEncoder(); + + LiteralEncoder _literalEncoder = new LiteralEncoder(); + + UInt32[] _matchDistances = new UInt32[Base.kMatchMaxLen * 2 + 2]; + + UInt32 _numFastBytes = kNumFastBytesDefault; + UInt32 _longestMatchLength; + UInt32 _numDistancePairs; + + UInt32 _additionalOffset; + + UInt32 _optimumEndIndex; + UInt32 _optimumCurrentIndex; + + bool _longestMatchWasFound; + + UInt32[] _posSlotPrices = new UInt32[1 << (Base.kNumPosSlotBits + Base.kNumLenToPosStatesBits)]; + UInt32[] _distancesPrices = new UInt32[Base.kNumFullDistances << Base.kNumLenToPosStatesBits]; + UInt32[] _alignPrices = new UInt32[Base.kAlignTableSize]; + UInt32 _alignPriceCount; + + UInt32 _distTableSize = (kDefaultDictionaryLogSize * 2); + + int _posStateBits = 2; + UInt32 _posStateMask = (4 - 1); + int _numLiteralPosStateBits = 0; + int _numLiteralContextBits = 3; + + UInt32 _dictionarySize = (1 << kDefaultDictionaryLogSize); + UInt32 _dictionarySizePrev = 0xFFFFFFFF; + UInt32 _numFastBytesPrev = 0xFFFFFFFF; + + Int64 nowPos64; + bool _finished; + System.IO.Stream _inStream; + + EMatchFinderType _matchFinderType = EMatchFinderType.BT4; + bool _writeEndMark = false; + + bool _needReleaseMFStream; + + void Create() + { + if (_matchFinder == null) + { + LZ.BinTree bt = new LZ.BinTree(); + int numHashBytes = 4; + if (_matchFinderType == EMatchFinderType.BT2) + numHashBytes = 2; + bt.SetType(numHashBytes); + _matchFinder = bt; + } + _literalEncoder.Create(_numLiteralPosStateBits, _numLiteralContextBits); + + if (_dictionarySize == _dictionarySizePrev && _numFastBytesPrev == _numFastBytes) + return; + _matchFinder.Create(_dictionarySize, kNumOpts, _numFastBytes, Base.kMatchMaxLen + 1); + _dictionarySizePrev = _dictionarySize; + _numFastBytesPrev = _numFastBytes; + } + + public Encoder() + { + for (int i = 0; i < kNumOpts; i++) + _optimum[i] = new Optimal(); + for (int i = 0; i < Base.kNumLenToPosStates; i++) + _posSlotEncoder[i] = new RangeCoder.BitTreeEncoder(Base.kNumPosSlotBits); + } + + void SetWriteEndMarkerMode(bool writeEndMarker) + { + _writeEndMark = writeEndMarker; + } + + void Init() + { + BaseInit(); + _rangeEncoder.Init(); + + uint i; + for (i = 0; i < Base.kNumStates; i++) + { + for (uint j = 0; j <= _posStateMask; j++) + { + uint complexState = (i << Base.kNumPosStatesBitsMax) + j; + _isMatch[complexState].Init(); + _isRep0Long[complexState].Init(); + } + _isRep[i].Init(); + _isRepG0[i].Init(); + _isRepG1[i].Init(); + _isRepG2[i].Init(); + } + _literalEncoder.Init(); + for (i = 0; i < Base.kNumLenToPosStates; i++) + _posSlotEncoder[i].Init(); + for (i = 0; i < Base.kNumFullDistances - Base.kEndPosModelIndex; i++) + _posEncoders[i].Init(); + + _lenEncoder.Init((UInt32)1 << _posStateBits); + _repMatchLenEncoder.Init((UInt32)1 << _posStateBits); + + _posAlignEncoder.Init(); + + _longestMatchWasFound = false; + _optimumEndIndex = 0; + _optimumCurrentIndex = 0; + _additionalOffset = 0; + } + + void ReadMatchDistances(out UInt32 lenRes, out UInt32 numDistancePairs) + { + lenRes = 0; + numDistancePairs = _matchFinder.GetMatches(_matchDistances); + if (numDistancePairs > 0) + { + lenRes = _matchDistances[numDistancePairs - 2]; + if (lenRes == _numFastBytes) + lenRes += _matchFinder.GetMatchLen((int)lenRes - 1, _matchDistances[numDistancePairs - 1], + Base.kMatchMaxLen - lenRes); + } + _additionalOffset++; + } + + + void MovePos(UInt32 num) + { + if (num > 0) + { + _matchFinder.Skip(num); + _additionalOffset += num; + } + } + + UInt32 GetRepLen1Price(Base.State state, UInt32 posState) + { + return _isRepG0[state.Index].GetPrice0() + + _isRep0Long[(state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice0(); + } + + UInt32 GetPureRepPrice(UInt32 repIndex, Base.State state, UInt32 posState) + { + UInt32 price; + if (repIndex == 0) + { + price = _isRepG0[state.Index].GetPrice0(); + price += _isRep0Long[(state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice1(); + } + else + { + price = _isRepG0[state.Index].GetPrice1(); + if (repIndex == 1) + price += _isRepG1[state.Index].GetPrice0(); + else + { + price += _isRepG1[state.Index].GetPrice1(); + price += _isRepG2[state.Index].GetPrice(repIndex - 2); + } + } + return price; + } + + UInt32 GetRepPrice(UInt32 repIndex, UInt32 len, Base.State state, UInt32 posState) + { + UInt32 price = _repMatchLenEncoder.GetPrice(len - Base.kMatchMinLen, posState); + return price + GetPureRepPrice(repIndex, state, posState); + } + + UInt32 GetPosLenPrice(UInt32 pos, UInt32 len, UInt32 posState) + { + UInt32 price; + UInt32 lenToPosState = Base.GetLenToPosState(len); + if (pos < Base.kNumFullDistances) + price = _distancesPrices[(lenToPosState * Base.kNumFullDistances) + pos]; + else + price = _posSlotPrices[(lenToPosState << Base.kNumPosSlotBits) + GetPosSlot2(pos)] + + _alignPrices[pos & Base.kAlignMask]; + return price + _lenEncoder.GetPrice(len - Base.kMatchMinLen, posState); + } + + UInt32 Backward(out UInt32 backRes, UInt32 cur) + { + _optimumEndIndex = cur; + UInt32 posMem = _optimum[cur].PosPrev; + UInt32 backMem = _optimum[cur].BackPrev; + do + { + if (_optimum[cur].Prev1IsChar) + { + _optimum[posMem].MakeAsChar(); + _optimum[posMem].PosPrev = posMem - 1; + if (_optimum[cur].Prev2) + { + _optimum[posMem - 1].Prev1IsChar = false; + _optimum[posMem - 1].PosPrev = _optimum[cur].PosPrev2; + _optimum[posMem - 1].BackPrev = _optimum[cur].BackPrev2; + } + } + UInt32 posPrev = posMem; + UInt32 backCur = backMem; + + backMem = _optimum[posPrev].BackPrev; + posMem = _optimum[posPrev].PosPrev; + + _optimum[posPrev].BackPrev = backCur; + _optimum[posPrev].PosPrev = cur; + cur = posPrev; + } + while (cur > 0); + backRes = _optimum[0].BackPrev; + _optimumCurrentIndex = _optimum[0].PosPrev; + return _optimumCurrentIndex; + } + + UInt32[] reps = new UInt32[Base.kNumRepDistances]; + UInt32[] repLens = new UInt32[Base.kNumRepDistances]; + + + UInt32 GetOptimum(UInt32 position, out UInt32 backRes) + { + if (_optimumEndIndex != _optimumCurrentIndex) + { + UInt32 lenRes = _optimum[_optimumCurrentIndex].PosPrev - _optimumCurrentIndex; + backRes = _optimum[_optimumCurrentIndex].BackPrev; + _optimumCurrentIndex = _optimum[_optimumCurrentIndex].PosPrev; + return lenRes; + } + _optimumCurrentIndex = _optimumEndIndex = 0; + + UInt32 lenMain, numDistancePairs; + if (!_longestMatchWasFound) + { + ReadMatchDistances(out lenMain, out numDistancePairs); + } + else + { + lenMain = _longestMatchLength; + numDistancePairs = _numDistancePairs; + _longestMatchWasFound = false; + } + + UInt32 numAvailableBytes = _matchFinder.GetNumAvailableBytes() + 1; + if (numAvailableBytes < 2) + { + backRes = 0xFFFFFFFF; + return 1; + } + if (numAvailableBytes > Base.kMatchMaxLen) + numAvailableBytes = Base.kMatchMaxLen; + + UInt32 repMaxIndex = 0; + UInt32 i; + for (i = 0; i < Base.kNumRepDistances; i++) + { + reps[i] = _repDistances[i]; + repLens[i] = _matchFinder.GetMatchLen(0 - 1, reps[i], Base.kMatchMaxLen); + if (repLens[i] > repLens[repMaxIndex]) + repMaxIndex = i; + } + if (repLens[repMaxIndex] >= _numFastBytes) + { + backRes = repMaxIndex; + UInt32 lenRes = repLens[repMaxIndex]; + MovePos(lenRes - 1); + return lenRes; + } + + if (lenMain >= _numFastBytes) + { + backRes = _matchDistances[numDistancePairs - 1] + Base.kNumRepDistances; + MovePos(lenMain - 1); + return lenMain; + } + + Byte currentByte = _matchFinder.GetIndexByte(0 - 1); + Byte matchByte = _matchFinder.GetIndexByte((Int32)(0 - _repDistances[0] - 1 - 1)); + + if (lenMain < 2 && currentByte != matchByte && repLens[repMaxIndex] < 2) + { + backRes = (UInt32)0xFFFFFFFF; + return 1; + } + + _optimum[0].State = _state; + + UInt32 posState = (position & _posStateMask); + + _optimum[1].Price = _isMatch[(_state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice0() + + _literalEncoder.GetSubCoder(position, _previousByte).GetPrice(!_state.IsCharState(), matchByte, currentByte); + _optimum[1].MakeAsChar(); + + UInt32 matchPrice = _isMatch[(_state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice1(); + UInt32 repMatchPrice = matchPrice + _isRep[_state.Index].GetPrice1(); + + if (matchByte == currentByte) + { + UInt32 shortRepPrice = repMatchPrice + GetRepLen1Price(_state, posState); + if (shortRepPrice < _optimum[1].Price) + { + _optimum[1].Price = shortRepPrice; + _optimum[1].MakeAsShortRep(); + } + } + + UInt32 lenEnd = ((lenMain >= repLens[repMaxIndex]) ? lenMain : repLens[repMaxIndex]); + + if(lenEnd < 2) + { + backRes = _optimum[1].BackPrev; + return 1; + } + + _optimum[1].PosPrev = 0; + + _optimum[0].Backs0 = reps[0]; + _optimum[0].Backs1 = reps[1]; + _optimum[0].Backs2 = reps[2]; + _optimum[0].Backs3 = reps[3]; + + UInt32 len = lenEnd; + do + _optimum[len--].Price = kIfinityPrice; + while (len >= 2); + + for (i = 0; i < Base.kNumRepDistances; i++) + { + UInt32 repLen = repLens[i]; + if (repLen < 2) + continue; + UInt32 price = repMatchPrice + GetPureRepPrice(i, _state, posState); + do + { + UInt32 curAndLenPrice = price + _repMatchLenEncoder.GetPrice(repLen - 2, posState); + Optimal optimum = _optimum[repLen]; + if (curAndLenPrice < optimum.Price) + { + optimum.Price = curAndLenPrice; + optimum.PosPrev = 0; + optimum.BackPrev = i; + optimum.Prev1IsChar = false; + } + } + while (--repLen >= 2); + } + + UInt32 normalMatchPrice = matchPrice + _isRep[_state.Index].GetPrice0(); + + len = ((repLens[0] >= 2) ? repLens[0] + 1 : 2); + if (len <= lenMain) + { + UInt32 offs = 0; + while (len > _matchDistances[offs]) + offs += 2; + for (; ; len++) + { + UInt32 distance = _matchDistances[offs + 1]; + UInt32 curAndLenPrice = normalMatchPrice + GetPosLenPrice(distance, len, posState); + Optimal optimum = _optimum[len]; + if (curAndLenPrice < optimum.Price) + { + optimum.Price = curAndLenPrice; + optimum.PosPrev = 0; + optimum.BackPrev = distance + Base.kNumRepDistances; + optimum.Prev1IsChar = false; + } + if (len == _matchDistances[offs]) + { + offs += 2; + if (offs == numDistancePairs) + break; + } + } + } + + UInt32 cur = 0; + + while (true) + { + cur++; + if (cur == lenEnd) + return Backward(out backRes, cur); + UInt32 newLen; + ReadMatchDistances(out newLen, out numDistancePairs); + if (newLen >= _numFastBytes) + { + _numDistancePairs = numDistancePairs; + _longestMatchLength = newLen; + _longestMatchWasFound = true; + return Backward(out backRes, cur); + } + position++; + UInt32 posPrev = _optimum[cur].PosPrev; + Base.State state; + if (_optimum[cur].Prev1IsChar) + { + posPrev--; + if (_optimum[cur].Prev2) + { + state = _optimum[_optimum[cur].PosPrev2].State; + if (_optimum[cur].BackPrev2 < Base.kNumRepDistances) + state.UpdateRep(); + else + state.UpdateMatch(); + } + else + state = _optimum[posPrev].State; + state.UpdateChar(); + } + else + state = _optimum[posPrev].State; + if (posPrev == cur - 1) + { + if (_optimum[cur].IsShortRep()) + state.UpdateShortRep(); + else + state.UpdateChar(); + } + else + { + UInt32 pos; + if (_optimum[cur].Prev1IsChar && _optimum[cur].Prev2) + { + posPrev = _optimum[cur].PosPrev2; + pos = _optimum[cur].BackPrev2; + state.UpdateRep(); + } + else + { + pos = _optimum[cur].BackPrev; + if (pos < Base.kNumRepDistances) + state.UpdateRep(); + else + state.UpdateMatch(); + } + Optimal opt = _optimum[posPrev]; + if (pos < Base.kNumRepDistances) + { + if (pos == 0) + { + reps[0] = opt.Backs0; + reps[1] = opt.Backs1; + reps[2] = opt.Backs2; + reps[3] = opt.Backs3; + } + else if (pos == 1) + { + reps[0] = opt.Backs1; + reps[1] = opt.Backs0; + reps[2] = opt.Backs2; + reps[3] = opt.Backs3; + } + else if (pos == 2) + { + reps[0] = opt.Backs2; + reps[1] = opt.Backs0; + reps[2] = opt.Backs1; + reps[3] = opt.Backs3; + } + else + { + reps[0] = opt.Backs3; + reps[1] = opt.Backs0; + reps[2] = opt.Backs1; + reps[3] = opt.Backs2; + } + } + else + { + reps[0] = (pos - Base.kNumRepDistances); + reps[1] = opt.Backs0; + reps[2] = opt.Backs1; + reps[3] = opt.Backs2; + } + } + _optimum[cur].State = state; + _optimum[cur].Backs0 = reps[0]; + _optimum[cur].Backs1 = reps[1]; + _optimum[cur].Backs2 = reps[2]; + _optimum[cur].Backs3 = reps[3]; + UInt32 curPrice = _optimum[cur].Price; + + currentByte = _matchFinder.GetIndexByte(0 - 1); + matchByte = _matchFinder.GetIndexByte((Int32)(0 - reps[0] - 1 - 1)); + + posState = (position & _posStateMask); + + UInt32 curAnd1Price = curPrice + + _isMatch[(state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice0() + + _literalEncoder.GetSubCoder(position, _matchFinder.GetIndexByte(0 - 2)). + GetPrice(!state.IsCharState(), matchByte, currentByte); + + Optimal nextOptimum = _optimum[cur + 1]; + + bool nextIsChar = false; + if (curAnd1Price < nextOptimum.Price) + { + nextOptimum.Price = curAnd1Price; + nextOptimum.PosPrev = cur; + nextOptimum.MakeAsChar(); + nextIsChar = true; + } + + matchPrice = curPrice + _isMatch[(state.Index << Base.kNumPosStatesBitsMax) + posState].GetPrice1(); + repMatchPrice = matchPrice + _isRep[state.Index].GetPrice1(); + + if (matchByte == currentByte && + !(nextOptimum.PosPrev < cur && nextOptimum.BackPrev == 0)) + { + UInt32 shortRepPrice = repMatchPrice + GetRepLen1Price(state, posState); + if (shortRepPrice <= nextOptimum.Price) + { + nextOptimum.Price = shortRepPrice; + nextOptimum.PosPrev = cur; + nextOptimum.MakeAsShortRep(); + nextIsChar = true; + } + } + + UInt32 numAvailableBytesFull = _matchFinder.GetNumAvailableBytes() + 1; + numAvailableBytesFull = Math.Min(kNumOpts - 1 - cur, numAvailableBytesFull); + numAvailableBytes = numAvailableBytesFull; + + if (numAvailableBytes < 2) + continue; + if (numAvailableBytes > _numFastBytes) + numAvailableBytes = _numFastBytes; + if (!nextIsChar && matchByte != currentByte) + { + // try Literal + rep0 + UInt32 t = Math.Min(numAvailableBytesFull - 1, _numFastBytes); + UInt32 lenTest2 = _matchFinder.GetMatchLen(0, reps[0], t); + if (lenTest2 >= 2) + { + Base.State state2 = state; + state2.UpdateChar(); + UInt32 posStateNext = (position + 1) & _posStateMask; + UInt32 nextRepMatchPrice = curAnd1Price + + _isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice1() + + _isRep[state2.Index].GetPrice1(); + { + UInt32 offset = cur + 1 + lenTest2; + while (lenEnd < offset) + _optimum[++lenEnd].Price = kIfinityPrice; + UInt32 curAndLenPrice = nextRepMatchPrice + GetRepPrice( + 0, lenTest2, state2, posStateNext); + Optimal optimum = _optimum[offset]; + if (curAndLenPrice < optimum.Price) + { + optimum.Price = curAndLenPrice; + optimum.PosPrev = cur + 1; + optimum.BackPrev = 0; + optimum.Prev1IsChar = true; + optimum.Prev2 = false; + } + } + } + } + + UInt32 startLen = 2; // speed optimization + + for (UInt32 repIndex = 0; repIndex < Base.kNumRepDistances; repIndex++) + { + UInt32 lenTest = _matchFinder.GetMatchLen(0 - 1, reps[repIndex], numAvailableBytes); + if (lenTest < 2) + continue; + UInt32 lenTestTemp = lenTest; + do + { + while (lenEnd < cur + lenTest) + _optimum[++lenEnd].Price = kIfinityPrice; + UInt32 curAndLenPrice = repMatchPrice + GetRepPrice(repIndex, lenTest, state, posState); + Optimal optimum = _optimum[cur + lenTest]; + if (curAndLenPrice < optimum.Price) + { + optimum.Price = curAndLenPrice; + optimum.PosPrev = cur; + optimum.BackPrev = repIndex; + optimum.Prev1IsChar = false; + } + } + while(--lenTest >= 2); + lenTest = lenTestTemp; + + if (repIndex == 0) + startLen = lenTest + 1; + + // if (_maxMode) + if (lenTest < numAvailableBytesFull) + { + UInt32 t = Math.Min(numAvailableBytesFull - 1 - lenTest, _numFastBytes); + UInt32 lenTest2 = _matchFinder.GetMatchLen((Int32)lenTest, reps[repIndex], t); + if (lenTest2 >= 2) + { + Base.State state2 = state; + state2.UpdateRep(); + UInt32 posStateNext = (position + lenTest) & _posStateMask; + UInt32 curAndLenCharPrice = + repMatchPrice + GetRepPrice(repIndex, lenTest, state, posState) + + _isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice0() + + _literalEncoder.GetSubCoder(position + lenTest, + _matchFinder.GetIndexByte((Int32)lenTest - 1 - 1)).GetPrice(true, + _matchFinder.GetIndexByte((Int32)((Int32)lenTest - 1 - (Int32)(reps[repIndex] + 1))), + _matchFinder.GetIndexByte((Int32)lenTest - 1)); + state2.UpdateChar(); + posStateNext = (position + lenTest + 1) & _posStateMask; + UInt32 nextMatchPrice = curAndLenCharPrice + _isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice1(); + UInt32 nextRepMatchPrice = nextMatchPrice + _isRep[state2.Index].GetPrice1(); + + // for(; lenTest2 >= 2; lenTest2--) + { + UInt32 offset = lenTest + 1 + lenTest2; + while(lenEnd < cur + offset) + _optimum[++lenEnd].Price = kIfinityPrice; + UInt32 curAndLenPrice = nextRepMatchPrice + GetRepPrice(0, lenTest2, state2, posStateNext); + Optimal optimum = _optimum[cur + offset]; + if (curAndLenPrice < optimum.Price) + { + optimum.Price = curAndLenPrice; + optimum.PosPrev = cur + lenTest + 1; + optimum.BackPrev = 0; + optimum.Prev1IsChar = true; + optimum.Prev2 = true; + optimum.PosPrev2 = cur; + optimum.BackPrev2 = repIndex; + } + } + } + } + } + + if (newLen > numAvailableBytes) + { + newLen = numAvailableBytes; + for (numDistancePairs = 0; newLen > _matchDistances[numDistancePairs]; numDistancePairs += 2) ; + _matchDistances[numDistancePairs] = newLen; + numDistancePairs += 2; + } + if (newLen >= startLen) + { + normalMatchPrice = matchPrice + _isRep[state.Index].GetPrice0(); + while (lenEnd < cur + newLen) + _optimum[++lenEnd].Price = kIfinityPrice; + + UInt32 offs = 0; + while (startLen > _matchDistances[offs]) + offs += 2; + + for (UInt32 lenTest = startLen; ; lenTest++) + { + UInt32 curBack = _matchDistances[offs + 1]; + UInt32 curAndLenPrice = normalMatchPrice + GetPosLenPrice(curBack, lenTest, posState); + Optimal optimum = _optimum[cur + lenTest]; + if (curAndLenPrice < optimum.Price) + { + optimum.Price = curAndLenPrice; + optimum.PosPrev = cur; + optimum.BackPrev = curBack + Base.kNumRepDistances; + optimum.Prev1IsChar = false; + } + + if (lenTest == _matchDistances[offs]) + { + if (lenTest < numAvailableBytesFull) + { + UInt32 t = Math.Min(numAvailableBytesFull - 1 - lenTest, _numFastBytes); + UInt32 lenTest2 = _matchFinder.GetMatchLen((Int32)lenTest, curBack, t); + if (lenTest2 >= 2) + { + Base.State state2 = state; + state2.UpdateMatch(); + UInt32 posStateNext = (position + lenTest) & _posStateMask; + UInt32 curAndLenCharPrice = curAndLenPrice + + _isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice0() + + _literalEncoder.GetSubCoder(position + lenTest, + _matchFinder.GetIndexByte((Int32)lenTest - 1 - 1)). + GetPrice(true, + _matchFinder.GetIndexByte((Int32)lenTest - (Int32)(curBack + 1) - 1), + _matchFinder.GetIndexByte((Int32)lenTest - 1)); + state2.UpdateChar(); + posStateNext = (position + lenTest + 1) & _posStateMask; + UInt32 nextMatchPrice = curAndLenCharPrice + _isMatch[(state2.Index << Base.kNumPosStatesBitsMax) + posStateNext].GetPrice1(); + UInt32 nextRepMatchPrice = nextMatchPrice + _isRep[state2.Index].GetPrice1(); + + UInt32 offset = lenTest + 1 + lenTest2; + while (lenEnd < cur + offset) + _optimum[++lenEnd].Price = kIfinityPrice; + curAndLenPrice = nextRepMatchPrice + GetRepPrice(0, lenTest2, state2, posStateNext); + optimum = _optimum[cur + offset]; + if (curAndLenPrice < optimum.Price) + { + optimum.Price = curAndLenPrice; + optimum.PosPrev = cur + lenTest + 1; + optimum.BackPrev = 0; + optimum.Prev1IsChar = true; + optimum.Prev2 = true; + optimum.PosPrev2 = cur; + optimum.BackPrev2 = curBack + Base.kNumRepDistances; + } + } + } + offs += 2; + if (offs == numDistancePairs) + break; + } + } + } + } + } + + bool ChangePair(UInt32 smallDist, UInt32 bigDist) + { + const int kDif = 7; + return (smallDist < ((UInt32)(1) << (32 - kDif)) && bigDist >= (smallDist << kDif)); + } + + void WriteEndMarker(UInt32 posState) + { + if (!_writeEndMark) + return; + + _isMatch[(_state.Index << Base.kNumPosStatesBitsMax) + posState].Encode(_rangeEncoder, 1); + _isRep[_state.Index].Encode(_rangeEncoder, 0); + _state.UpdateMatch(); + UInt32 len = Base.kMatchMinLen; + _lenEncoder.Encode(_rangeEncoder, len - Base.kMatchMinLen, posState); + UInt32 posSlot = (1 << Base.kNumPosSlotBits) - 1; + UInt32 lenToPosState = Base.GetLenToPosState(len); + _posSlotEncoder[lenToPosState].Encode(_rangeEncoder, posSlot); + int footerBits = 30; + UInt32 posReduced = (((UInt32)1) << footerBits) - 1; + _rangeEncoder.EncodeDirectBits(posReduced >> Base.kNumAlignBits, footerBits - Base.kNumAlignBits); + _posAlignEncoder.ReverseEncode(_rangeEncoder, posReduced & Base.kAlignMask); + } + + void Flush(UInt32 nowPos) + { + ReleaseMFStream(); + WriteEndMarker(nowPos & _posStateMask); + _rangeEncoder.FlushData(); + _rangeEncoder.FlushStream(); + } + + public void CodeOneBlock(out Int64 inSize, out Int64 outSize, out bool finished) + { + inSize = 0; + outSize = 0; + finished = true; + + if (_inStream != null) + { + _matchFinder.SetStream(_inStream); + _matchFinder.Init(); + _needReleaseMFStream = true; + _inStream = null; + if (_trainSize > 0) + _matchFinder.Skip(_trainSize); + } + + if (_finished) + return; + _finished = true; + + + Int64 progressPosValuePrev = nowPos64; + if (nowPos64 == 0) + { + if (_matchFinder.GetNumAvailableBytes() == 0) + { + Flush((UInt32)nowPos64); + return; + } + UInt32 len, numDistancePairs; // it's not used + ReadMatchDistances(out len, out numDistancePairs); + UInt32 posState = (UInt32)(nowPos64) & _posStateMask; + _isMatch[(_state.Index << Base.kNumPosStatesBitsMax) + posState].Encode(_rangeEncoder, 0); + _state.UpdateChar(); + Byte curByte = _matchFinder.GetIndexByte((Int32)(0 - _additionalOffset)); + _literalEncoder.GetSubCoder((UInt32)(nowPos64), _previousByte).Encode(_rangeEncoder, curByte); + _previousByte = curByte; + _additionalOffset--; + nowPos64++; + } + if (_matchFinder.GetNumAvailableBytes() == 0) + { + Flush((UInt32)nowPos64); + return; + } + while (true) + { + UInt32 pos; + UInt32 len = GetOptimum((UInt32)nowPos64, out pos); + + UInt32 posState = ((UInt32)nowPos64) & _posStateMask; + UInt32 complexState = (_state.Index << Base.kNumPosStatesBitsMax) + posState; + if (len == 1 && pos == 0xFFFFFFFF) + { + _isMatch[complexState].Encode(_rangeEncoder, 0); + Byte curByte = _matchFinder.GetIndexByte((Int32)(0 - _additionalOffset)); + LiteralEncoder.Encoder2 subCoder = _literalEncoder.GetSubCoder((UInt32)nowPos64, _previousByte); + if (!_state.IsCharState()) + { + Byte matchByte = _matchFinder.GetIndexByte((Int32)(0 - _repDistances[0] - 1 - _additionalOffset)); + subCoder.EncodeMatched(_rangeEncoder, matchByte, curByte); + } + else + subCoder.Encode(_rangeEncoder, curByte); + _previousByte = curByte; + _state.UpdateChar(); + } + else + { + _isMatch[complexState].Encode(_rangeEncoder, 1); + if (pos < Base.kNumRepDistances) + { + _isRep[_state.Index].Encode(_rangeEncoder, 1); + if (pos == 0) + { + _isRepG0[_state.Index].Encode(_rangeEncoder, 0); + if (len == 1) + _isRep0Long[complexState].Encode(_rangeEncoder, 0); + else + _isRep0Long[complexState].Encode(_rangeEncoder, 1); + } + else + { + _isRepG0[_state.Index].Encode(_rangeEncoder, 1); + if (pos == 1) + _isRepG1[_state.Index].Encode(_rangeEncoder, 0); + else + { + _isRepG1[_state.Index].Encode(_rangeEncoder, 1); + _isRepG2[_state.Index].Encode(_rangeEncoder, pos - 2); + } + } + if (len == 1) + _state.UpdateShortRep(); + else + { + _repMatchLenEncoder.Encode(_rangeEncoder, len - Base.kMatchMinLen, posState); + _state.UpdateRep(); + } + UInt32 distance = _repDistances[pos]; + if (pos != 0) + { + for (UInt32 i = pos; i >= 1; i--) + _repDistances[i] = _repDistances[i - 1]; + _repDistances[0] = distance; + } + } + else + { + _isRep[_state.Index].Encode(_rangeEncoder, 0); + _state.UpdateMatch(); + _lenEncoder.Encode(_rangeEncoder, len - Base.kMatchMinLen, posState); + pos -= Base.kNumRepDistances; + UInt32 posSlot = GetPosSlot(pos); + UInt32 lenToPosState = Base.GetLenToPosState(len); + _posSlotEncoder[lenToPosState].Encode(_rangeEncoder, posSlot); + + if (posSlot >= Base.kStartPosModelIndex) + { + int footerBits = (int)((posSlot >> 1) - 1); + UInt32 baseVal = ((2 | (posSlot & 1)) << footerBits); + UInt32 posReduced = pos - baseVal; + + if (posSlot < Base.kEndPosModelIndex) + RangeCoder.BitTreeEncoder.ReverseEncode(_posEncoders, + baseVal - posSlot - 1, _rangeEncoder, footerBits, posReduced); + else + { + _rangeEncoder.EncodeDirectBits(posReduced >> Base.kNumAlignBits, footerBits - Base.kNumAlignBits); + _posAlignEncoder.ReverseEncode(_rangeEncoder, posReduced & Base.kAlignMask); + _alignPriceCount++; + } + } + UInt32 distance = pos; + for (UInt32 i = Base.kNumRepDistances - 1; i >= 1; i--) + _repDistances[i] = _repDistances[i - 1]; + _repDistances[0] = distance; + _matchPriceCount++; + } + _previousByte = _matchFinder.GetIndexByte((Int32)(len - 1 - _additionalOffset)); + } + _additionalOffset -= len; + nowPos64 += len; + if (_additionalOffset == 0) + { + // if (!_fastMode) + if (_matchPriceCount >= (1 << 7)) + FillDistancesPrices(); + if (_alignPriceCount >= Base.kAlignTableSize) + FillAlignPrices(); + inSize = nowPos64; + outSize = _rangeEncoder.GetProcessedSizeAdd(); + if (_matchFinder.GetNumAvailableBytes() == 0) + { + Flush((UInt32)nowPos64); + return; + } + + if (nowPos64 - progressPosValuePrev >= (1 << 12)) + { + _finished = false; + finished = false; + return; + } + } + } + } + + void ReleaseMFStream() + { + if (_matchFinder != null && _needReleaseMFStream) + { + _matchFinder.ReleaseStream(); + _needReleaseMFStream = false; + } + } + + void SetOutStream(System.IO.Stream outStream) { _rangeEncoder.SetStream(outStream); } + void ReleaseOutStream() { _rangeEncoder.ReleaseStream(); } + + void ReleaseStreams() + { + ReleaseMFStream(); + ReleaseOutStream(); + } + + void SetStreams(System.IO.Stream inStream, System.IO.Stream outStream, + Int64 inSize, Int64 outSize) + { + _inStream = inStream; + _finished = false; + Create(); + SetOutStream(outStream); + Init(); + + // if (!_fastMode) + { + FillDistancesPrices(); + FillAlignPrices(); + } + + _lenEncoder.SetTableSize(_numFastBytes + 1 - Base.kMatchMinLen); + _lenEncoder.UpdateTables((UInt32)1 << _posStateBits); + _repMatchLenEncoder.SetTableSize(_numFastBytes + 1 - Base.kMatchMinLen); + _repMatchLenEncoder.UpdateTables((UInt32)1 << _posStateBits); + + nowPos64 = 0; + } + + + public void Code(System.IO.Stream inStream, System.IO.Stream outStream, + Int64 inSize, Int64 outSize, ICodeProgress progress) + { + _needReleaseMFStream = false; + try + { + SetStreams(inStream, outStream, inSize, outSize); + while (true) + { + Int64 processedInSize; + Int64 processedOutSize; + bool finished; + CodeOneBlock(out processedInSize, out processedOutSize, out finished); + if (finished) + return; + if (progress != null) + { + progress.SetProgress(processedInSize, processedOutSize); + } + } + } + finally + { + ReleaseStreams(); + } + } + + const int kPropSize = 5; + Byte[] properties = new Byte[kPropSize]; + + public void WriteCoderProperties(System.IO.Stream outStream) + { + properties[0] = (Byte)((_posStateBits * 5 + _numLiteralPosStateBits) * 9 + _numLiteralContextBits); + for (int i = 0; i < 4; i++) + properties[1 + i] = (Byte)((_dictionarySize >> (8 * i)) & 0xFF); + outStream.Write(properties, 0, kPropSize); + } + + UInt32[] tempPrices = new UInt32[Base.kNumFullDistances]; + UInt32 _matchPriceCount; + + void FillDistancesPrices() + { + for (UInt32 i = Base.kStartPosModelIndex; i < Base.kNumFullDistances; i++) + { + UInt32 posSlot = GetPosSlot(i); + int footerBits = (int)((posSlot >> 1) - 1); + UInt32 baseVal = ((2 | (posSlot & 1)) << footerBits); + tempPrices[i] = BitTreeEncoder.ReverseGetPrice(_posEncoders, + baseVal - posSlot - 1, footerBits, i - baseVal); + } + + for (UInt32 lenToPosState = 0; lenToPosState < Base.kNumLenToPosStates; lenToPosState++) + { + UInt32 posSlot; + RangeCoder.BitTreeEncoder encoder = _posSlotEncoder[lenToPosState]; + + UInt32 st = (lenToPosState << Base.kNumPosSlotBits); + for (posSlot = 0; posSlot < _distTableSize; posSlot++) + _posSlotPrices[st + posSlot] = encoder.GetPrice(posSlot); + for (posSlot = Base.kEndPosModelIndex; posSlot < _distTableSize; posSlot++) + _posSlotPrices[st + posSlot] += ((((posSlot >> 1) - 1) - Base.kNumAlignBits) << RangeCoder.BitEncoder.kNumBitPriceShiftBits); + + UInt32 st2 = lenToPosState * Base.kNumFullDistances; + UInt32 i; + for (i = 0; i < Base.kStartPosModelIndex; i++) + _distancesPrices[st2 + i] = _posSlotPrices[st + i]; + for (; i < Base.kNumFullDistances; i++) + _distancesPrices[st2 + i] = _posSlotPrices[st + GetPosSlot(i)] + tempPrices[i]; + } + _matchPriceCount = 0; + } + + void FillAlignPrices() + { + for (UInt32 i = 0; i < Base.kAlignTableSize; i++) + _alignPrices[i] = _posAlignEncoder.ReverseGetPrice(i); + _alignPriceCount = 0; + } + + + static string[] kMatchFinderIDs = + { + "BT2", + "BT4", + }; + + static int FindMatchFinder(string s) + { + for (int m = 0; m < kMatchFinderIDs.Length; m++) + if (s == kMatchFinderIDs[m]) + return m; + return -1; + } + + public void SetCoderProperties(CoderPropID[] propIDs, object[] properties) + { + for (UInt32 i = 0; i < properties.Length; i++) + { + object prop = properties[i]; + switch (propIDs[i]) + { + case CoderPropID.NumFastBytes: + { + if (!(prop is Int32)) + throw new InvalidParamException(); + Int32 numFastBytes = (Int32)prop; + if (numFastBytes < 5 || numFastBytes > Base.kMatchMaxLen) + throw new InvalidParamException(); + _numFastBytes = (UInt32)numFastBytes; + break; + } + case CoderPropID.Algorithm: + { + /* + if (!(prop is Int32)) + throw new InvalidParamException(); + Int32 maximize = (Int32)prop; + _fastMode = (maximize == 0); + _maxMode = (maximize >= 2); + */ + break; + } + case CoderPropID.MatchFinder: + { + if (!(prop is String)) + throw new InvalidParamException(); + EMatchFinderType matchFinderIndexPrev = _matchFinderType; + int m = FindMatchFinder(((string)prop).ToUpper()); + if (m < 0) + throw new InvalidParamException(); + _matchFinderType = (EMatchFinderType)m; + if (_matchFinder != null && matchFinderIndexPrev != _matchFinderType) + { + _dictionarySizePrev = 0xFFFFFFFF; + _matchFinder = null; + } + break; + } + case CoderPropID.DictionarySize: + { + const int kDicLogSizeMaxCompress = 30; + if (!(prop is Int32)) + throw new InvalidParamException(); ; + Int32 dictionarySize = (Int32)prop; + if (dictionarySize < (UInt32)(1 << Base.kDicLogSizeMin) || + dictionarySize > (UInt32)(1 << kDicLogSizeMaxCompress)) + throw new InvalidParamException(); + _dictionarySize = (UInt32)dictionarySize; + int dicLogSize; + for (dicLogSize = 0; dicLogSize < (UInt32)kDicLogSizeMaxCompress; dicLogSize++) + if (dictionarySize <= ((UInt32)(1) << dicLogSize)) + break; + _distTableSize = (UInt32)dicLogSize * 2; + break; + } + case CoderPropID.PosStateBits: + { + if (!(prop is Int32)) + throw new InvalidParamException(); + Int32 v = (Int32)prop; + if (v < 0 || v > (UInt32)Base.kNumPosStatesBitsEncodingMax) + throw new InvalidParamException(); + _posStateBits = (int)v; + _posStateMask = (((UInt32)1) << (int)_posStateBits) - 1; + break; + } + case CoderPropID.LitPosBits: + { + if (!(prop is Int32)) + throw new InvalidParamException(); + Int32 v = (Int32)prop; + if (v < 0 || v > (UInt32)Base.kNumLitPosStatesBitsEncodingMax) + throw new InvalidParamException(); + _numLiteralPosStateBits = (int)v; + break; + } + case CoderPropID.LitContextBits: + { + if (!(prop is Int32)) + throw new InvalidParamException(); + Int32 v = (Int32)prop; + if (v < 0 || v > (UInt32)Base.kNumLitContextBitsMax) + throw new InvalidParamException(); ; + _numLiteralContextBits = (int)v; + break; + } + case CoderPropID.EndMarker: + { + if (!(prop is Boolean)) + throw new InvalidParamException(); + SetWriteEndMarkerMode((Boolean)prop); + break; + } + default: + throw new InvalidParamException(); + } + } + } + + uint _trainSize = 0; + public void SetTrainSize(uint trainSize) + { + _trainSize = trainSize; + } + + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoder.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoder.cs new file mode 100644 index 0000000..cdcb72c --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoder.cs @@ -0,0 +1,234 @@ +using System; + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.RangeCoder +{ + class Encoder + { + public const uint kTopValue = (1 << 24); + + System.IO.Stream Stream; + + public UInt64 Low; + public uint Range; + uint _cacheSize; + byte _cache; + + long StartPosition; + + public void SetStream(System.IO.Stream stream) + { + Stream = stream; + } + + public void ReleaseStream() + { + Stream = null; + } + + public void Init() + { + StartPosition = Stream.Position; + + Low = 0; + Range = 0xFFFFFFFF; + _cacheSize = 1; + _cache = 0; + } + + public void FlushData() + { + for (int i = 0; i < 5; i++) + ShiftLow(); + } + + public void FlushStream() + { + Stream.Flush(); + } + + public void CloseStream() + { + Stream.Close(); + } + + public void Encode(uint start, uint size, uint total) + { + Low += start * (Range /= total); + Range *= size; + while (Range < kTopValue) + { + Range <<= 8; + ShiftLow(); + } + } + + public void ShiftLow() + { + if ((uint)Low < (uint)0xFF000000 || (uint)(Low >> 32) == 1) + { + byte temp = _cache; + do + { + Stream.WriteByte((byte)(temp + (Low >> 32))); + temp = 0xFF; + } + while (--_cacheSize != 0); + _cache = (byte)(((uint)Low) >> 24); + } + _cacheSize++; + Low = ((uint)Low) << 8; + } + + public void EncodeDirectBits(uint v, int numTotalBits) + { + for (int i = numTotalBits - 1; i >= 0; i--) + { + Range >>= 1; + if (((v >> i) & 1) == 1) + Low += Range; + if (Range < kTopValue) + { + Range <<= 8; + ShiftLow(); + } + } + } + + public void EncodeBit(uint size0, int numTotalBits, uint symbol) + { + uint newBound = (Range >> numTotalBits) * size0; + if (symbol == 0) + Range = newBound; + else + { + Low += newBound; + Range -= newBound; + } + while (Range < kTopValue) + { + Range <<= 8; + ShiftLow(); + } + } + + public long GetProcessedSizeAdd() + { + return _cacheSize + + Stream.Position - StartPosition + 4; + // (long)Stream.GetProcessedSize(); + } + } + + class Decoder + { + public const uint kTopValue = (1 << 24); + public uint Range; + public uint Code; + // public Buffer.InBuffer Stream = new Buffer.InBuffer(1 << 16); + public System.IO.Stream Stream; + + public void Init(System.IO.Stream stream) + { + // Stream.Init(stream); + Stream = stream; + + Code = 0; + Range = 0xFFFFFFFF; + for (int i = 0; i < 5; i++) + Code = (Code << 8) | (byte)Stream.ReadByte(); + } + + public void ReleaseStream() + { + // Stream.ReleaseStream(); + Stream = null; + } + + public void CloseStream() + { + Stream.Close(); + } + + public void Normalize() + { + while (Range < kTopValue) + { + Code = (Code << 8) | (byte)Stream.ReadByte(); + Range <<= 8; + } + } + + public void Normalize2() + { + if (Range < kTopValue) + { + Code = (Code << 8) | (byte)Stream.ReadByte(); + Range <<= 8; + } + } + + public uint GetThreshold(uint total) + { + return Code / (Range /= total); + } + + public void Decode(uint start, uint size, uint total) + { + Code -= start * Range; + Range *= size; + Normalize(); + } + + public uint DecodeDirectBits(int numTotalBits) + { + uint range = Range; + uint code = Code; + uint result = 0; + for (int i = numTotalBits; i > 0; i--) + { + range >>= 1; + /* + result <<= 1; + if (code >= range) + { + code -= range; + result |= 1; + } + */ + uint t = (code - range) >> 31; + code -= range & (t - 1); + result = (result << 1) | (1 - t); + + if (range < kTopValue) + { + code = (code << 8) | (byte)Stream.ReadByte(); + range <<= 8; + } + } + Range = range; + Code = code; + return result; + } + + public uint DecodeBit(uint size0, int numTotalBits) + { + uint newBound = (Range >> numTotalBits) * size0; + uint symbol; + if (Code < newBound) + { + symbol = 0; + Range = newBound; + } + else + { + symbol = 1; + Code -= newBound; + Range -= newBound; + } + Normalize(); + return symbol; + } + + // ulong GetProcessedSize() {return Stream.GetProcessedSize(); } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoderBit.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoderBit.cs new file mode 100644 index 0000000..d81e8a4 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoderBit.cs @@ -0,0 +1,117 @@ +using System; + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.RangeCoder +{ + struct BitEncoder + { + public const int kNumBitModelTotalBits = 11; + public const uint kBitModelTotal = (1 << kNumBitModelTotalBits); + const int kNumMoveBits = 5; + const int kNumMoveReducingBits = 2; + public const int kNumBitPriceShiftBits = 6; + + uint Prob; + + public void Init() { Prob = kBitModelTotal >> 1; } + + public void UpdateModel(uint symbol) + { + if (symbol == 0) + Prob += (kBitModelTotal - Prob) >> kNumMoveBits; + else + Prob -= (Prob) >> kNumMoveBits; + } + + public void Encode(Encoder encoder, uint symbol) + { + // encoder.EncodeBit(Prob, kNumBitModelTotalBits, symbol); + // UpdateModel(symbol); + uint newBound = (encoder.Range >> kNumBitModelTotalBits) * Prob; + if (symbol == 0) + { + encoder.Range = newBound; + Prob += (kBitModelTotal - Prob) >> kNumMoveBits; + } + else + { + encoder.Low += newBound; + encoder.Range -= newBound; + Prob -= (Prob) >> kNumMoveBits; + } + if (encoder.Range < Encoder.kTopValue) + { + encoder.Range <<= 8; + encoder.ShiftLow(); + } + } + + private static UInt32[] ProbPrices = new UInt32[kBitModelTotal >> kNumMoveReducingBits]; + + static BitEncoder() + { + const int kNumBits = (kNumBitModelTotalBits - kNumMoveReducingBits); + for (int i = kNumBits - 1; i >= 0; i--) + { + UInt32 start = (UInt32)1 << (kNumBits - i - 1); + UInt32 end = (UInt32)1 << (kNumBits - i); + for (UInt32 j = start; j < end; j++) + ProbPrices[j] = ((UInt32)i << kNumBitPriceShiftBits) + + (((end - j) << kNumBitPriceShiftBits) >> (kNumBits - i - 1)); + } + } + + public uint GetPrice(uint symbol) + { + return ProbPrices[(((Prob - symbol) ^ ((-(int)symbol))) & (kBitModelTotal - 1)) >> kNumMoveReducingBits]; + } + public uint GetPrice0() { return ProbPrices[Prob >> kNumMoveReducingBits]; } + public uint GetPrice1() { return ProbPrices[(kBitModelTotal - Prob) >> kNumMoveReducingBits]; } + } + + struct BitDecoder + { + public const int kNumBitModelTotalBits = 11; + public const uint kBitModelTotal = (1 << kNumBitModelTotalBits); + const int kNumMoveBits = 5; + + uint Prob; + + public void UpdateModel(int numMoveBits, uint symbol) + { + if (symbol == 0) + Prob += (kBitModelTotal - Prob) >> numMoveBits; + else + Prob -= (Prob) >> numMoveBits; + } + + public void Init() { Prob = kBitModelTotal >> 1; } + + public uint Decode(RangeCoder.Decoder rangeDecoder) + { + uint newBound = (uint)(rangeDecoder.Range >> kNumBitModelTotalBits) * (uint)Prob; + if (rangeDecoder.Code < newBound) + { + rangeDecoder.Range = newBound; + Prob += (kBitModelTotal - Prob) >> kNumMoveBits; + if (rangeDecoder.Range < Decoder.kTopValue) + { + rangeDecoder.Code = (rangeDecoder.Code << 8) | (byte)rangeDecoder.Stream.ReadByte(); + rangeDecoder.Range <<= 8; + } + return 0; + } + else + { + rangeDecoder.Range -= newBound; + rangeDecoder.Code -= newBound; + Prob -= (Prob) >> kNumMoveBits; + if (rangeDecoder.Range < Decoder.kTopValue) + { + rangeDecoder.Code = (rangeDecoder.Code << 8) | (byte)rangeDecoder.Stream.ReadByte(); + rangeDecoder.Range <<= 8; + } + return 1; + } + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs b/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs new file mode 100644 index 0000000..4488815 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Compress/RangeCoder/RangeCoderBitTree.cs @@ -0,0 +1,160 @@ +using System; + +namespace ROMVault2.SupportedFiles.SevenZip.Compress.RangeCoder +{ + struct BitTreeEncoder + { + BitEncoder[] Models; + int NumBitLevels; + + public BitTreeEncoder(int numBitLevels) + { + NumBitLevels = numBitLevels; + Models = new BitEncoder[1 << numBitLevels]; + } + + public void Init() + { + for (uint i = 1; i < (1 << NumBitLevels); i++) + Models[i].Init(); + } + + public void Encode(Encoder rangeEncoder, UInt32 symbol) + { + UInt32 m = 1; + for (int bitIndex = NumBitLevels; bitIndex > 0; ) + { + bitIndex--; + UInt32 bit = (symbol >> bitIndex) & 1; + Models[m].Encode(rangeEncoder, bit); + m = (m << 1) | bit; + } + } + + public void ReverseEncode(Encoder rangeEncoder, UInt32 symbol) + { + UInt32 m = 1; + for (UInt32 i = 0; i < NumBitLevels; i++) + { + UInt32 bit = symbol & 1; + Models[m].Encode(rangeEncoder, bit); + m = (m << 1) | bit; + symbol >>= 1; + } + } + + public UInt32 GetPrice(UInt32 symbol) + { + UInt32 price = 0; + UInt32 m = 1; + for (int bitIndex = NumBitLevels; bitIndex > 0; ) + { + bitIndex--; + UInt32 bit = (symbol >> bitIndex) & 1; + price += Models[m].GetPrice(bit); + m = (m << 1) + bit; + } + return price; + } + + public UInt32 ReverseGetPrice(UInt32 symbol) + { + UInt32 price = 0; + UInt32 m = 1; + for (int i = NumBitLevels; i > 0; i--) + { + UInt32 bit = symbol & 1; + symbol >>= 1; + price += Models[m].GetPrice(bit); + m = (m << 1) | bit; + } + return price; + } + + public static UInt32 ReverseGetPrice(BitEncoder[] Models, UInt32 startIndex, + int NumBitLevels, UInt32 symbol) + { + UInt32 price = 0; + UInt32 m = 1; + for (int i = NumBitLevels; i > 0; i--) + { + UInt32 bit = symbol & 1; + symbol >>= 1; + unchecked + { + price += Models[startIndex + m].GetPrice(bit); + } + m = (m << 1) | bit; + } + return price; + } + + public static void ReverseEncode(BitEncoder[] Models, UInt32 startIndex, + Encoder rangeEncoder, int NumBitLevels, UInt32 symbol) + { + UInt32 m = 1; + for (int i = 0; i < NumBitLevels; i++) + { + UInt32 bit = symbol & 1; + Models[startIndex + m].Encode(rangeEncoder, bit); + m = (m << 1) | bit; + symbol >>= 1; + } + } + } + + struct BitTreeDecoder + { + BitDecoder[] Models; + int NumBitLevels; + + public BitTreeDecoder(int numBitLevels) + { + NumBitLevels = numBitLevels; + Models = new BitDecoder[1 << numBitLevels]; + } + + public void Init() + { + for (uint i = 1; i < (1 << NumBitLevels); i++) + Models[i].Init(); + } + + public uint Decode(RangeCoder.Decoder rangeDecoder) + { + uint m = 1; + for (int bitIndex = NumBitLevels; bitIndex > 0; bitIndex--) + m = (m << 1) + Models[m].Decode(rangeDecoder); + return m - ((uint)1 << NumBitLevels); + } + + public uint ReverseDecode(RangeCoder.Decoder rangeDecoder) + { + uint m = 1; + uint symbol = 0; + for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++) + { + uint bit = Models[m].Decode(rangeDecoder); + m <<= 1; + m += bit; + symbol |= (bit << bitIndex); + } + return symbol; + } + + public static uint ReverseDecode(BitDecoder[] Models, UInt32 startIndex, + RangeCoder.Decoder rangeDecoder, int NumBitLevels) + { + uint m = 1; + uint symbol = 0; + for (int bitIndex = 0; bitIndex < NumBitLevels; bitIndex++) + { + uint bit = Models[startIndex + m].Decode(rangeDecoder); + m <<= 1; + m += bit; + symbol |= (bit << bitIndex); + } + return symbol; + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/DirUtil.cs b/ROMVault2/SupportedFiles/SevenZip/DirUtil.cs new file mode 100644 index 0000000..589359f --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/DirUtil.cs @@ -0,0 +1,31 @@ +using System; +using ROMVault2.IO; + +namespace ROMVault2.SupportedFiles.SevenZip +{ + public static class DirUtil + { + public static void CreateDirForFile(string sFilename) + { + string strTemp = Path.GetDirectoryName(sFilename); + + if (String.IsNullOrEmpty(strTemp)) return; + + if (Directory.Exists(strTemp)) return; + + + while (strTemp.Length > 0 && !Directory.Exists(strTemp)) + { + int pos = strTemp.LastIndexOf(Path.DirectorySeparatorChar); + if (pos < 0) pos = 0; + strTemp = strTemp.Substring(0, pos); + } + + while (sFilename.IndexOf(Path.DirectorySeparatorChar, strTemp.Length + 1) > 0) + { + strTemp = sFilename.Substring(0, sFilename.IndexOf(Path.DirectorySeparatorChar, strTemp.Length + 1)); + Directory.CreateDirectory(strTemp); + } + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Filters/BCJ2Filter.cs b/ROMVault2/SupportedFiles/SevenZip/Filters/BCJ2Filter.cs new file mode 100644 index 0000000..1a98fc6 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Filters/BCJ2Filter.cs @@ -0,0 +1,207 @@ +using System; +using System.IO; + +namespace ROMVault2.SupportedFiles.SevenZip.Filters +{ + public class BCJ2Filter : Stream + { + private Stream baseStream; + private byte[] input = new byte[4096]; + private int inputOffset = 0; + private int inputCount = 0; + private bool endReached = false; + + private long position = 0; + private byte[] output = new byte[4]; + private int outputOffset = 0; + private int outputCount = 0; + + private byte[] control; + private byte[] data1; + private byte[] data2; + + private int controlPos = 0; + private int data1Pos = 0; + private int data2Pos = 0; + + private ushort[] p = new ushort[256 + 2]; + private uint range, code; + private byte prevByte = 0; + + private const int kNumTopBits = 24; + private const int kTopValue = 1 << kNumTopBits; + + private const int kNumBitModelTotalBits = 11; + private const int kBitModelTotal = 1 << kNumBitModelTotalBits; + private const int kNumMoveBits = 5; + + private static bool IsJ(byte b0, byte b1) + { + return (b1 & 0xFE) == 0xE8 || IsJcc(b0, b1); + } + + private static bool IsJcc(byte b0, byte b1) + { + return b0 == 0x0F && (b1 & 0xF0) == 0x80; + } + + public BCJ2Filter(byte[] control, byte[] data1, byte[] data2, Stream baseStream) + { + this.control = control; + this.data1 = data1; + this.data2 = data2; + this.baseStream = baseStream; + + int i; + for (i = 0; i < p.Length; i++) + p[i] = kBitModelTotal >> 1; + + code = 0; + range = 0xFFFFFFFF; + for (i = 0; i < 5; i++) + code = (code << 8) | control[controlPos++]; + } + + public override bool CanRead + { + get { return true; } + } + + public override bool CanSeek + { + get { return false; } + } + + public override bool CanWrite + { + get { return false; } + } + + public override void Flush() + { + throw new NotImplementedException(); + } + + public override long Length + { + get { return baseStream.Length + data1.Length + data2.Length; } + } + + public override long Position + { + get + { + return position; + } + set + { + throw new NotImplementedException(); + } + } + + public override int Read(byte[] buffer, int offset, int count) + { + int size = 0; + byte b = 0; + + while (!endReached && size < count) + { + while (outputOffset < outputCount) + { + b = output[outputOffset++]; + buffer[offset++] = b; + size++; + position++; + + prevByte = b; + if (size == count) + return size; + } + + if (inputOffset == inputCount) + { + inputOffset = 0; + inputCount = baseStream.Read(input, 0, input.Length); + if (inputCount == 0) + { + endReached = true; + break; + } + } + + b = input[inputOffset++]; + buffer[offset++] = b; + size++; + position++; + + if (!IsJ(prevByte, b)) + prevByte = b; + else + { + int prob; + if (b == 0xE8) + prob = prevByte; + else if (b == 0xE9) + prob = 256; + else + prob = 257; + + uint bound = (range >> kNumBitModelTotalBits) * p[prob]; + if (code < bound) + { + range = bound; + p[prob] += (ushort)((kBitModelTotal - p[prob]) >> kNumMoveBits); + if (range < kTopValue) + { + range <<= 8; + code = (code << 8) | control[controlPos++]; + } + prevByte = b; + } + else + { + range -= bound; + code -= bound; + p[prob] -= (ushort)(p[prob] >> kNumMoveBits); + if (range < kTopValue) + { + range <<= 8; + code = (code << 8) | control[controlPos++]; + } + + uint dest; + if (b == 0xE8) + dest = (uint)((data1[data1Pos++] << 24) | (data1[data1Pos++] << 16) | (data1[data1Pos++] << 8) | data1[data1Pos++]); + else + dest = (uint)((data2[data2Pos++] << 24) | (data2[data2Pos++] << 16) | (data2[data2Pos++] << 8) | data2[data2Pos++]); + dest -= (uint)(position + 4); + + output[0] = (byte)dest; + output[1] = (byte)(dest >> 8); + output[2] = (byte)(dest >> 16); + output[3] = (byte)(dest >> 24); + outputOffset = 0; + outputCount = 4; + } + } + } + + return size; + } + + public override long Seek(long offset, SeekOrigin origin) + { + throw new NotImplementedException(); + } + + public override void SetLength(long value) + { + throw new NotImplementedException(); + } + + public override void Write(byte[] buffer, int offset, int count) + { + throw new NotImplementedException(); + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Filters/BCJFilter.cs b/ROMVault2/SupportedFiles/SevenZip/Filters/BCJFilter.cs new file mode 100644 index 0000000..045a179 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Filters/BCJFilter.cs @@ -0,0 +1,90 @@ +using System.IO; + +namespace ROMVault2.SupportedFiles.SevenZip.Filters +{ + public class BCJFilter : Filter + { + private static readonly bool[] MASK_TO_ALLOWED_STATUS = new bool[] {true, true, true, false, true, false, false, false}; + private static readonly int[] MASK_TO_BIT_NUMBER = new int[] { 0, 1, 2, 2, 3, 3, 3, 3 }; + + private int pos; + private int prevMask = 0; + + public BCJFilter(bool isEncoder, Stream baseStream) : base(isEncoder, baseStream, 5) + { + pos = 5; + } + + private static bool test86MSByte(byte b) + { + return b == 0x00 || b == 0xFF; + } + + protected override int Transform(byte[] buffer, int offset, int count) + { + int prevPos = offset - 1; + int end = offset + count - 5; + int i; + + for (i = offset; i <= end; ++i) { + if ((buffer[i] & 0xFE) != 0xE8) + continue; + + prevPos = i - prevPos; + if ((prevPos & ~3) != 0) { // (unsigned)prevPos > 3 + prevMask = 0; + } else { + prevMask = (prevMask << (prevPos - 1)) & 7; + if (prevMask != 0) { + if (!MASK_TO_ALLOWED_STATUS[prevMask] || test86MSByte( + buffer[i + 4 - MASK_TO_BIT_NUMBER[prevMask]])) { + prevPos = i; + prevMask = (prevMask << 1) | 1; + continue; + } + } + } + + prevPos = i; + + if (test86MSByte(buffer[i + 4])) { + int src = buffer[i + 1] + | (buffer[i + 2] << 8) + | (buffer[i + 3] << 16) + | (buffer[i + 4] << 24); + int dest; + while (true) { + if (isEncoder) + dest = src + (pos + i - offset); + else + dest = src - (pos + i - offset); + + if (prevMask == 0) + break; + + int index = MASK_TO_BIT_NUMBER[prevMask] * 8; + if (!test86MSByte((byte)(dest >> (24 - index)))) + break; + + src = dest ^ ((1 << (32 - index)) - 1); + } + + buffer[i + 1] = (byte)dest; + buffer[i + 2] = (byte)(dest >> 8); + buffer[i + 3] = (byte)(dest >> 16); + buffer[i + 4] = (byte)(~(((dest >> 24) & 1) - 1)); + i += 4; + } else { + prevMask = (prevMask << 1) | 1; + } + } + + prevPos = i - prevPos; + prevMask = ((prevPos & ~3) != 0) ? 0 : prevMask << (prevPos - 1); + + i -= offset; + pos += i; + return i; + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Filters/Filter.cs b/ROMVault2/SupportedFiles/SevenZip/Filters/Filter.cs new file mode 100644 index 0000000..e1e8e88 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Filters/Filter.cs @@ -0,0 +1,171 @@ +using System; +using System.IO; + +namespace ROMVault2.SupportedFiles.SevenZip.Filters +{ + public abstract class Filter : Stream + { + protected bool isEncoder; + protected Stream baseStream; + + private byte[] tail; + private byte[] window; + private int transformed = 0; + private int read = 0; + private bool endReached = false; + private long position = 0; + + protected Filter(bool isEncoder, Stream baseStream, int lookahead) + { + this.isEncoder = isEncoder; + this.baseStream = baseStream; + tail = new byte[lookahead - 1]; + window = new byte[tail.Length * 2]; + } + + public Stream BaseStream + { get { return baseStream; } } + + public override bool CanRead + { + get { return !isEncoder; } + } + + public override bool CanSeek + { + get { return false; } + } + + public override bool CanWrite + { + get { return isEncoder; } + } + + public override void Flush() + { + throw new NotImplementedException(); + } + + public override long Length + { + get { return baseStream.Length; } + } + + public override long Position + { + get + { + return position; + } + set + { + throw new NotImplementedException(); + } + } + + public override int Read(byte[] buffer, int offset, int count) + { + int size = 0; + + if (transformed > 0) + { + int copySize = transformed; + if (copySize > count) + copySize = count; + Buffer.BlockCopy(tail, 0, buffer, offset, copySize); + transformed -= copySize; + read -= copySize; + offset += copySize; + count -= copySize; + size += copySize; + Buffer.BlockCopy(tail, copySize, tail, 0, read); + } + if (count == 0) + { + position += size; + return size; + } + + int inSize = read; + if (inSize > count) + inSize = count; + Buffer.BlockCopy(tail, 0, buffer, offset, inSize); + read -= inSize; + Buffer.BlockCopy(tail, inSize, tail, 0, read); + while (!endReached && inSize < count) + { + int baseRead = baseStream.Read(buffer, offset + inSize, count - inSize); + inSize += baseRead; + if (baseRead == 0) + endReached = true; + } + while (!endReached && read < tail.Length) + { + int baseRead = baseStream.Read(tail, read, tail.Length - read); + read += baseRead; + if (baseRead == 0) + endReached = true; + } + + if (inSize > tail.Length) + { + transformed = Transform(buffer, offset, inSize); + offset += transformed; + count -= transformed; + size += transformed; + inSize -= transformed; + transformed = 0; + } + + if (count == 0) + { + position += size; + return size; + } + + Buffer.BlockCopy(buffer, offset, window, 0, inSize); + Buffer.BlockCopy(tail, 0, window, inSize, read); + if (inSize + read > tail.Length) + transformed = Transform(window, 0, inSize + read); + else + transformed = inSize + read; + Buffer.BlockCopy(window, 0, buffer, offset, inSize); + Buffer.BlockCopy(window, inSize, tail, 0, read); + size += inSize; + transformed -= inSize; + + position += size; + return size; + } + + public override long Seek(long offset, SeekOrigin origin) + { + if (origin != SeekOrigin.Current) + throw new NotImplementedException(); + + const int bufferSize = 10240; + Byte[] seekBuffer = new byte[bufferSize]; + long seekToGo = offset; + while (seekToGo > 0) + { + long get = seekToGo > bufferSize ? bufferSize : seekToGo; + Read(seekBuffer, 0, (int) get); + seekToGo -= get; + } + return position; + } + + public override void SetLength(long value) + { + throw new NotImplementedException(); + } + + public override void Write(byte[] buffer, int offset, int count) + { + Transform(buffer, offset, count); + baseStream.Write(buffer, offset, count); + } + + protected abstract int Transform(byte[] buffer, int offset, int count); + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/LZMACompressFile.cs b/ROMVault2/SupportedFiles/SevenZip/LZMACompressFile.cs new file mode 100644 index 0000000..81cc7bd --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/LZMACompressFile.cs @@ -0,0 +1,61 @@ +using System; +using System.IO; +using ROMVault2.SupportedFiles.SevenZip.Common; +using ROMVault2.SupportedFiles.SevenZip.Compress.LZMA; + +namespace ROMVault2.SupportedFiles.SevenZip +{ + public static class LZMACompressFile + { + public static void CompressFile(Stream inStream,Stream outStream,out byte[] codeMSbytes,ICodeProgress p) + { + Int32 dictionary = 1 << 24; + Int32 posStateBits = 2; + Int32 litContextBits = 3; // for normal files + Int32 litPosBits = 0; + Int32 algorithm = 2; + Int32 numFastBytes = 128; //64; + + string mf = "bt4"; + bool eos = true; + + + CoderPropID[] propIDs = + { + CoderPropID.DictionarySize, + CoderPropID.PosStateBits, + CoderPropID.LitContextBits, + CoderPropID.LitPosBits, + CoderPropID.Algorithm, + CoderPropID.NumFastBytes, + CoderPropID.MatchFinder, + CoderPropID.EndMarker + }; + + object[] properties = + { + dictionary, + posStateBits, + litContextBits, + litPosBits, + algorithm, + numFastBytes, + mf, + eos + }; + + + + Encoder encoder = new Encoder(); + encoder.SetCoderProperties(propIDs, properties); + using (MemoryStream codeMS = new MemoryStream()) + { + encoder.WriteCoderProperties(codeMS); + codeMSbytes = new byte[codeMS.Length]; + codeMS.Position = 0; + codeMS.Read(codeMSbytes, 0, codeMSbytes.Length); + } + encoder.Code(inStream, outStream, -1, -1, p); + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/SevenZip.cs b/ROMVault2/SupportedFiles/SevenZip/SevenZip.cs new file mode 100644 index 0000000..792c5fd --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/SevenZip.cs @@ -0,0 +1,782 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Security.Cryptography; +using ROMVault2.SupportedFiles.SevenZip.Common; +using ROMVault2.SupportedFiles.SevenZip.Compress.LZMA; +using ROMVault2.SupportedFiles.SevenZip.Filters; +using ROMVault2.SupportedFiles.SevenZip.Structure; + +namespace ROMVault2.SupportedFiles.SevenZip +{ + public class SevenZ : ICompress + { + public class LocalFile + { + public string FileName; + public ulong UncompressedSize; + public bool isDirectory; + public byte[] crc; + public byte[] sha1; + public byte[] md5; + public int StreamIndex; + public ulong StreamOffset; + public ZipReturn FileStatus = ZipReturn.ZipUntested; + } + + private List _localFiles = new List(); + + private IO.FileInfo _zipFileInfo; + + private Stream _zipFs; + + private ZipOpenType _zipOpen; + private ZipStatus _pZipStatus; + + SignatureHeader _signatureHeader; + + private bool _compressed = true; + private Stream _tmpOutStream; + + + + private Stream _streamNow; + private int _streamIndex = -1; + + + public string ZipFilename + { + get { return _zipFileInfo != null ? _zipFileInfo.FullName : ""; } + } + public long TimeStamp + { + get { return _zipFileInfo != null ? _zipFileInfo.LastWriteTime : 0; } + } + + public ZipOpenType ZipOpen { get { return _zipOpen; } } + public ZipStatus ZipStatus { get { return _pZipStatus; } } + public int LocalFilesCount() { return _localFiles.Count; } + public string Filename(int i) { return _localFiles[i].FileName; } + public ulong? LocalHeader(int i) { return 0; } + public ulong UncompressedSize(int i) { return _localFiles[i].UncompressedSize; } + public ZipReturn FileStatus(int i) { return _localFiles[i].FileStatus; } + public byte[] CRC32(int i) { return _localFiles[i].crc; } + public byte[] MD5(int i) { return _localFiles[i].md5; } + public byte[] SHA1(int i) { return _localFiles[i].sha1; } + public bool IsDirectory(int i) { return _localFiles[i].isDirectory; } + + + private long _baseOffset; + + + #region open 7z files + + public ZipReturn ZipFileOpen(string filename, long timestamp,bool readHeaders) + { + Debug.WriteLine(filename); + #region open file stream + try + { + if (!IO.File.Exists(filename)) + { + ZipFileClose(); + return ZipReturn.ZipErrorFileNotFound; + } + _zipFileInfo = new IO.FileInfo(filename); + if (timestamp != -1 && _zipFileInfo.LastWriteTime != timestamp) + { + ZipFileClose(); + return ZipReturn.ZipErrorTimeStamp; + } + int errorCode = IO.FileStream.OpenFileRead(filename, out _zipFs); + if (errorCode != 0) + { + ZipFileClose(); + return ZipReturn.ZipErrorOpeningFile; + } + } + catch (PathTooLongException) + { + ZipFileClose(); + return ZipReturn.ZipFileNameToLong; + } + catch (IOException) + { + ZipFileClose(); + return ZipReturn.ZipErrorOpeningFile; + } + #endregion + + _zipOpen = ZipOpenType.OpenRead; + _pZipStatus = ZipStatus.None; + + SignatureHeader signatureHeader = new SignatureHeader(); + if (!signatureHeader.Read(new BinaryReader(_zipFs))) + return ZipReturn.ZipSignatureError; + + _baseOffset = _zipFs.Position; Util.log("BaseOffset : " + _baseOffset); + + Util.log("Loading Stream : " + (_baseOffset + (long)signatureHeader.NextHeaderOffset) + " , Size : " + signatureHeader.NextHeaderSize); + + //_zipFs.Seek(_baseOffset + (long)signatureHeader.NextHeaderOffset, SeekOrigin.Begin); + //byte[] mainHeader = new byte[signatureHeader.NextHeaderSize]; + //_zipFs.Read(mainHeader, 0, (int)signatureHeader.NextHeaderSize); + //if (!CRC.VerifyDigest(signatureHeader.NextHeaderCRC, mainHeader, 0, (uint)signatureHeader.NextHeaderSize)) + // return ZipReturn.Zip64EndOfCentralDirError; + + _zipFs.Seek(_baseOffset + (long)signatureHeader.NextHeaderOffset, SeekOrigin.Begin); + ZipReturn zr = Header.ReadHeaderOrPackedHeader(_zipFs, _baseOffset, out _header); + if (zr != ZipReturn.ZipGood) + return zr; + + _zipFs.Seek(_baseOffset + (long)(signatureHeader.NextHeaderOffset + signatureHeader.NextHeaderSize), SeekOrigin.Begin); + _pZipStatus = Istorrent7Z() ? ZipStatus.TrrntZip : ZipStatus.None; + PopulateLocalFiles(out _localFiles); + + return ZipReturn.ZipGood; + } + + + private void PopulateLocalFiles(out List localFiles) + { + int emptyFileIndex = 0; + int folderIndex = 0; + int unpackedStreamsIndex = 0; + ulong streamOffset = 0; + localFiles = new List(); + + for (int i = 0; i < _header.FileInfo.Names.Length; i++) + { + LocalFile lf = new LocalFile { FileName = _header.FileInfo.Names[i] }; + + if (_header.FileInfo.EmptyStreamFlags == null || !_header.FileInfo.EmptyStreamFlags[i]) + { + lf.StreamIndex = folderIndex; + lf.StreamOffset = streamOffset; + lf.UncompressedSize = _header.StreamsInfo.Folders[folderIndex].UnpackedStreamInfo[unpackedStreamsIndex].UnpackedSize; + lf.crc = Util.uinttobytes(_header.StreamsInfo.Folders[folderIndex].UnpackedStreamInfo[unpackedStreamsIndex].Crc); + + streamOffset += lf.UncompressedSize; + unpackedStreamsIndex++; + + if (unpackedStreamsIndex >= _header.StreamsInfo.Folders[folderIndex].UnpackedStreamInfo.Length) + { + folderIndex++; + unpackedStreamsIndex = 0; + streamOffset = 0; + } + } + else + { + lf.UncompressedSize = 0; + lf.crc = new byte[] { 0, 0, 0, 0 }; + lf.isDirectory = _header.FileInfo.EmptyFileFlags == null || !_header.FileInfo.EmptyFileFlags[emptyFileIndex++]; + + if (lf.isDirectory) + if (lf.FileName.Substring(lf.FileName.Length - 1, 1) != "/") + lf.FileName += "/"; + } + + localFiles.Add(lf); + } + } + + public void ZipFileClose() + { + ZipFileClose(null); + } + + public void ZipFileClose(ICodeProgress p) + { + if (_zipOpen == ZipOpenType.Closed) + return; + + if (_zipOpen == ZipOpenType.OpenRead) + { + ZipFileCloseReadStream(); + if (_zipFs != null) + { + _zipFs.Close(); + _zipFs.Dispose(); + } + _zipOpen = ZipOpenType.Closed; + return; + } + + CloseWriting7Zip(p); + + _zipFileInfo = new IO.FileInfo(_zipFileInfo.FullName); + _zipOpen = ZipOpenType.Closed; + } + + private Header _header; + + + + private bool Istorrent7Z() + { + const int crcsz = 128; + const int t7ZsigSize = 16 + 1 + 9 + 4 + 4; + byte[] kSignature = { (byte)'7', (byte)'z', 0xBC, 0xAF, 0x27, 0x1C }; + int kSignatureSize = kSignature.Length; + const string sig = "\xa9\x9f\xd1\x57\x08\xa9\xd7\xea\x29\x64\xb2\x36\x1b\x83\x52\x33\x01torrent7z_0.9beta"; + byte[] t7Zid = Util.Enc.GetBytes(sig); + int t7ZidSize = t7Zid.Length; + + const int tmpbufsize = 256 + t7ZsigSize + 8 + 4; + byte[] buffer = new byte[tmpbufsize]; + + // read fist 128 bytes, pad with zeros if less bytes + int offs = 0; + _zipFs.Seek(0, SeekOrigin.Begin); + int ar = _zipFs.Read(buffer, offs, crcsz); + if (ar < crcsz) + Util.memset(buffer, offs + ar, 0, crcsz - ar); + + + offs = crcsz; + long foffs = _zipFs.Length; + foffs = foffs < (crcsz + t7ZsigSize + 4) ? 0 : foffs - (crcsz + t7ZsigSize + 4); + _zipFs.Seek(foffs, SeekOrigin.Begin); + + ar = _zipFs.Read(buffer, offs, (crcsz + t7ZsigSize + 4)); + if (ar < (crcsz + t7ZsigSize + 4)) + { + if (ar >= t7ZsigSize + 4) + { + ar -= t7ZsigSize + 4; + } + if (ar < kSignatureSize) + { + ar = kSignatureSize; + } + Util.memset(buffer, offs + ar, 0, crcsz - ar); + Util.memcpyr(buffer, crcsz * 2 + 8, buffer, offs + ar, t7ZsigSize + 4); + } + else + Util.memcpyr(buffer, crcsz * 2 + 8, buffer, crcsz * 2, t7ZsigSize + 4); + + foffs = _zipFs.Length; + foffs -= t7ZsigSize + 4; + + //memcpy(buffer, crcsz * 2, &foffs, 8); + buffer[crcsz * 2 + 0] = (byte)((foffs >> 0) & 0xff); + buffer[crcsz * 2 + 1] = (byte)((foffs >> 8) & 0xff); + buffer[crcsz * 2 + 2] = (byte)((foffs >> 16) & 0xff); + buffer[crcsz * 2 + 3] = (byte)((foffs >> 24) & 0xff); + buffer[crcsz * 2 + 4] = 0; + buffer[crcsz * 2 + 5] = 0; + buffer[crcsz * 2 + 6] = 0; + buffer[crcsz * 2 + 7] = 0; + + if (Util.memcmp(buffer, 0, kSignature, kSignatureSize)) + { + t7Zid[16] = buffer[crcsz * 2 + 4 + 8 + 16]; + if (Util.memcmp(buffer, crcsz * 2 + 4 + 8, t7Zid, t7ZidSize)) + { + UInt32 inCrc32 = (UInt32)((buffer[crcsz * 2 + 8 + 0]) + + (buffer[crcsz * 2 + 8 + 1] << 8) + + (buffer[crcsz * 2 + 8 + 2] << 16) + + (buffer[crcsz * 2 + 8 + 3] << 24)); + + buffer[crcsz * 2 + 8 + 0] = 0xff; + buffer[crcsz * 2 + 8 + 1] = 0xff; + buffer[crcsz * 2 + 8 + 2] = 0xff; + buffer[crcsz * 2 + 8 + 3] = 0xff; + + uint calcCrc32 = CRC.CalculateDigest(buffer, 0, crcsz * 2 + 8 + t7ZsigSize + 4); + + if (inCrc32 == calcCrc32) return true; + } + } + + return false; + } + + + + #endregion + + + public void DeepScan() + { + const int bufferSize = 4096 * 128; + byte[] buffer = new byte[bufferSize]; + + for (int index = 0; index < _localFiles.Count; index++) + { + if (_localFiles[index].isDirectory || _localFiles[index].UncompressedSize == 0) + { + _localFiles[index].md5 = new byte[] { 0xd4, 0x1d, 0x8c, 0xd9, 0x8f, 0x00, 0xb2, 0x04, 0xe9, 0x80, 0x09, 0x98, 0xec, 0xf8, 0x42, 0x7e }; + _localFiles[index].sha1 = new byte[] { 0xda, 0x39, 0xa3, 0xee, 0x5e, 0x6b, 0x4b, 0x0d, 0x32, 0x55, 0xbf, 0xef, 0x95, 0x60, 0x18, 0x90, 0xaf, 0xd8, 0x07, 0x09 }; + _localFiles[index].FileStatus = ZipReturn.ZipGood; + + continue; + } + + ulong sizetogo; + Stream inStream; + ZipReturn zr = ZipFileOpenReadStream(index, out inStream, out sizetogo); + if (zr != ZipReturn.ZipGood) + continue; + + if (inStream == null) + continue; + + CRC crc32 = new CRC(); + MD5 lmd5 = System.Security.Cryptography.MD5.Create(); + SHA1 lsha1 = System.Security.Cryptography.SHA1.Create(); + + while (sizetogo > 0) + { + int sizenow = sizetogo > (ulong)bufferSize ? bufferSize : (int)sizetogo; + inStream.Read(buffer, 0, sizenow); + + crc32.Update(buffer, 0, (uint)sizenow); + lmd5.TransformBlock(buffer, 0, sizenow, null, 0); + lsha1.TransformBlock(buffer, 0, sizenow, null, 0); + + sizetogo = sizetogo - (ulong)sizenow; + } + + lmd5.TransformFinalBlock(buffer, 0, 0); + lsha1.TransformFinalBlock(buffer, 0, 0); + + byte[] testcrc = Util.uinttobytes(crc32.GetDigest()); + _localFiles[index].md5 = lmd5.Hash; + _localFiles[index].sha1 = lsha1.Hash; + + _localFiles[index].FileStatus = Util.ByteArrCompare(_localFiles[index].crc, testcrc) ? ZipReturn.ZipGood : ZipReturn.ZipCRCDecodeError; + } + } + + + + #region read 7z file + + public ZipReturn ZipFileOpenReadStream(int index, out Stream stream, out ulong unCompressedSize) + { + Debug.WriteLine("Opening File " + _localFiles[index].FileName); + stream = null; + unCompressedSize = 0; + + if (_zipOpen != ZipOpenType.OpenRead) + return ZipReturn.ZipErrorGettingDataStream; + + if (IsDirectory(index)) + return ZipReturn.ZipTryingToAccessADirectory; + + unCompressedSize = _localFiles[index].UncompressedSize; + + int thisStreamIndex = _localFiles[index].StreamIndex; + + // first see if we can re-use the current open stream + if (_streamIndex == thisStreamIndex) + { + stream = _streamNow; + if (_streamNow is BCJFilter) // it is a BCJ + Decoder stream but need to check the position in the stream can be used. + { + if ((long)_localFiles[index].StreamOffset >= _streamNow.Position) + { + stream.Seek((long)_localFiles[index].StreamOffset - _streamNow.Position, SeekOrigin.Current); + return ZipReturn.ZipGood; + } + } + else if (_streamNow is Decoder) // it is a Decoder stream but need to check the position in the stream can be used. + { + if ((long)_localFiles[index].StreamOffset >= _streamNow.Position) + { + stream.Seek((long)_localFiles[index].StreamOffset - _streamNow.Position, SeekOrigin.Current); + return ZipReturn.ZipGood; + } + } + else // it is an uncompressed stream + { + if (stream != null) + stream.Seek((long)_localFiles[index].StreamOffset - _streamNow.Position, SeekOrigin.Current); + return ZipReturn.ZipGood; + } + } + + // need to open a new stream + + // first close the old streams + ZipFileCloseReadStream(); + + + // open new stream + _streamIndex = thisStreamIndex; + _zipFs.Seek(_baseOffset + (long)_header.StreamsInfo.PackedStreams[thisStreamIndex].StreamPosition, SeekOrigin.Begin); + + byte[] method = _header.StreamsInfo.Folders[_localFiles[index].StreamIndex].Coders[0].Method; + if (method.Length == 3 && method[0] == 3 && method[1] == 1 && method[2] == 1) // LZMA + { + Decoder decoder = new Decoder(); + decoder.SetDecoderProperties(_header.StreamsInfo.Folders[_localFiles[index].StreamIndex].Coders[0].Properties); + decoder.SetUpStream(_zipFs); + stream = decoder; + _streamNow = stream; + + if (_header.StreamsInfo.Folders[_localFiles[index].StreamIndex].Coders.Length > 1) // BCJ + { + method = _header.StreamsInfo.Folders[_localFiles[index].StreamIndex].Coders[1].Method; + if (method.Length == 4 && method[0] == 3 && method[1] == 3 && method[2] == 1 && method[3] == 3) + { + BCJFilter filter = new BCJFilter(false, stream); + stream = filter; + _streamNow = stream; + stream.Seek((long)_localFiles[index].StreamOffset, SeekOrigin.Current); + return ZipReturn.ZipGood; + } + return ZipReturn.ZipUnsupportedCompression; + } + + stream.Seek((long)_localFiles[index].StreamOffset, SeekOrigin.Current); + return ZipReturn.ZipGood; + } + if (method.Length == 1 && method[0] == 33) // lzma2 + { + return ZipReturn.ZipUnsupportedCompression; + } + + if (method.Length == 1 && method[0] == 0) // uncompressed + { + stream = _zipFs; + _streamNow = stream; + stream.Seek((long)_localFiles[index].StreamOffset, SeekOrigin.Current); + return ZipReturn.ZipGood; + } + + if (method.Length == 3 && method[0] == 4 && method[1] == 2 && method[2] == 2) // BZip2 + { + return ZipReturn.ZipUnsupportedCompression; + } + if (method.Length == 1 && method[0] == 33) // LZMA2 + { + return ZipReturn.ZipUnsupportedCompression; + } + + return ZipReturn.ZipUnsupportedCompression; + } + + + public ZipReturn ZipFileCloseReadStream() + { + if (_streamNow is BCJFilter) + { + Stream baseStream = ((BCJFilter)_streamNow).BaseStream; + _streamNow.Dispose(); + _streamNow = baseStream; + } + if (_streamNow is Decoder) + { + _streamNow.Close(); + _streamNow.Dispose(); + } + _streamNow = null; + return ZipReturn.ZipGood; + } + + #endregion + + + #region write 7z File + + public void ZipFileAddDirectory() + { + // do nothing here for 7zip + } + + public ZipReturn ZipFileCreate(string newFilename) + { + return ZipFileCreate(newFilename, true); + } + + + public ZipReturn ZipFileCreate(string newFilename, bool compressOutput) + { + if (_zipOpen != ZipOpenType.Closed) + return ZipReturn.ZipFileAlreadyOpen; + + DirUtil.CreateDirForFile(newFilename); + _zipFileInfo = new IO.FileInfo(newFilename); + + int errorCode = IO.FileStream.OpenFileWrite(newFilename, out _zipFs); + if (errorCode != 0) + { + ZipFileClose(); + return ZipReturn.ZipErrorOpeningFile; + } + _zipOpen = ZipOpenType.OpenWrite; + + _signatureHeader = new SignatureHeader(); + _header = new Header(); + + BinaryWriter bw = new BinaryWriter(_zipFs); + _signatureHeader.Write(bw); + + _compressed = compressOutput; + _tmpOutStream = compressOutput ? new FileStream(_zipFileInfo.FullName + ".tmp", FileMode.Create, FileAccess.Write) : null; + + return ZipReturn.ZipGood; + } + + public ZipReturn ZipFileOpenWriteStream(bool raw, bool trrntzip, string filename, ulong uncompressedSize, ushort compressionMethod, out Stream stream) + { + return ZipFileOpenWriteStream(filename, uncompressedSize, out stream); + } + public ZipReturn ZipFileOpenWriteStream(string filename, ulong uncompressedSize, out Stream stream) + { + LocalFile lf = new LocalFile + { + FileName = filename, + UncompressedSize = uncompressedSize, + StreamOffset = (ulong)(_zipFs.Position - _signatureHeader.BaseOffset) + }; + + _localFiles.Add(lf); + stream = _tmpOutStream ?? _zipFs; + return ZipReturn.ZipGood; + } + + + public ZipReturn ZipFileCloseWriteStream(byte[] crc32) + { + _localFiles[_localFiles.Count - 1].crc = new[] { crc32[3], crc32[2], crc32[1], crc32[0] }; + return ZipReturn.ZipGood; + } + + private void Create7ZStructure() + { + int fileCount = _localFiles.Count; + + //FileInfo + _header.FileInfo = new Structure.FileInfo + { + Names = new string[fileCount] + }; + + ulong emptyStreamCount = 0; + ulong emptyFileCount = 0; + for (int i = 0; i < fileCount; i++) + { + _header.FileInfo.Names[i] = _localFiles[i].FileName; + + if (_localFiles[i].UncompressedSize != 0) + continue; + + if (!_localFiles[i].isDirectory) + emptyFileCount += 1; + + emptyStreamCount += 1; + } + ulong outFileCount = (ulong)_localFiles.Count - emptyStreamCount; + + _header.FileInfo.EmptyStreamFlags = null; + _header.FileInfo.EmptyFileFlags = null; + _header.FileInfo.Attributes = null; + + if (emptyStreamCount > 0) + { + if (emptyStreamCount != emptyFileCount) //then we found directories and need to set the attributes + _header.FileInfo.Attributes = new uint[fileCount]; + + if (emptyFileCount > 0) + _header.FileInfo.EmptyFileFlags = new bool[emptyStreamCount]; + + emptyStreamCount = 0; + _header.FileInfo.EmptyStreamFlags = new bool[fileCount]; + for (int i = 0; i < fileCount; i++) + { + if (_localFiles[i].UncompressedSize != 0) + continue; + + if (_localFiles[i].isDirectory) + _header.FileInfo.Attributes[i] = 0x10; // set attributes to directory + else + _header.FileInfo.EmptyFileFlags[emptyStreamCount] = true; // set empty file flag + + _header.FileInfo.EmptyStreamFlags[i] = true; + emptyStreamCount += 1; + } + } + + + + //StreamsInfo + _header.StreamsInfo = new StreamsInfo { PackPosition = 0 }; + + //StreamsInfo.PackedStreamsInfo + if (_compressed) + { + _header.StreamsInfo.PackedStreams = new PackedStreamInfo[1]; + _header.StreamsInfo.PackedStreams[0] = new PackedStreamInfo { PackedSize = _packStreamSize }; + } + else + { + _header.StreamsInfo.PackedStreams = new PackedStreamInfo[outFileCount]; + int fileIndex = 0; + for (int i = 0; i < fileCount; i++) + { + if (_localFiles[i].UncompressedSize == 0) + continue; + _header.StreamsInfo.PackedStreams[fileIndex++] = new PackedStreamInfo { PackedSize = _localFiles[i].UncompressedSize }; + } + } + //StreamsInfo.PackedStreamsInfo, no CRC or StreamPosition required + + if (_compressed) + { + //StreamsInfo.Folders + _header.StreamsInfo.Folders = new Folder[1]; + + Folder folder = new Folder { Coders = new Coder[1] }; + + //StreamsInfo.Folders.Coder + // flags 0x23 + folder.Coders[0] = new Coder + { + Method = new byte[] { 3, 1, 1 }, + NumInStreams = 1, + NumOutStreams = 1, + Properties = _codeMSbytes + }; + folder.BindPairs = null; + folder.PackedStreamIndices = new[] { (ulong)0 }; + folder.UnpackedStreamSizes = new[] { _unpackedStreamSize }; + folder.UnpackCRC = null; + + folder.UnpackedStreamInfo = new UnpackedStreamInfo[outFileCount]; + int fileIndex = 0; + for (int i = 0; i < fileCount; i++) + { + if (_localFiles[i].UncompressedSize == 0) + continue; + UnpackedStreamInfo unpackedStreamInfo = new UnpackedStreamInfo + { + UnpackedSize = _localFiles[i].UncompressedSize, + Crc = Util.bytestouint(_localFiles[i].crc) + }; + folder.UnpackedStreamInfo[fileIndex++] = unpackedStreamInfo; + } + _header.StreamsInfo.Folders[0] = folder; + } + else + { + _header.StreamsInfo.Folders = new Folder[outFileCount]; + int fileIndex = 0; + for (int i = 0; i < fileCount; i++) + { + if (_localFiles[i].UncompressedSize == 0) + continue; + Folder folder = new Folder { Coders = new Coder[1] }; + + //StreamsInfo.Folders.Coder + // flags 0x01 + folder.Coders[0] = new Coder + { + Method = new byte[] { 0 }, + NumInStreams = 1, + NumOutStreams = 1, + Properties = null + }; + + folder.BindPairs = null; + folder.PackedStreamIndices = new[] { (ulong)i }; + folder.UnpackedStreamSizes = new[] { _localFiles[i].UncompressedSize }; + folder.UnpackCRC = null; + + folder.UnpackedStreamInfo = new UnpackedStreamInfo[1]; + UnpackedStreamInfo unpackedStreamInfo = new UnpackedStreamInfo + { + UnpackedSize = _localFiles[i].UncompressedSize, + Crc = Util.bytestouint(_localFiles[i].crc) + }; + folder.UnpackedStreamInfo[0] = unpackedStreamInfo; + + _header.StreamsInfo.Folders[fileIndex++] = folder; + } + } + } + + ulong _packStreamSize; + ulong _unpackedStreamSize; + byte[] _codeMSbytes; + + private void CloseWriting7Zip(ICodeProgress p = null) + { + if (_compressed) + { + _unpackedStreamSize = (ulong)_tmpOutStream.Length; + _tmpOutStream.Close(); + _tmpOutStream.Dispose(); + + UInt64 packStreamStart = (UInt64)_zipFs.Position; + using (Stream inStream = new FileStream(_zipFileInfo.FullName + ".tmp", FileMode.Open, FileAccess.Read)) + { + LZMACompressFile.CompressFile(inStream, _zipFs, out _codeMSbytes, p); + } + _packStreamSize = (UInt64)_zipFs.Position - packStreamStart; + + File.Delete(_zipFileInfo.FullName + ".tmp"); + } + + Create7ZStructure(); + + byte[] newHeaderByte; + using (Stream headerMem = new MemoryStream()) + { + using (BinaryWriter headerBw = new BinaryWriter(headerMem)) + { + _header.WriteHeader(headerBw); + newHeaderByte = new byte[headerMem.Length]; + headerMem.Position = 0; + headerMem.Read(newHeaderByte, 0, newHeaderByte.Length); + } + } + + CRC mainHeadercrc = new CRC(); + mainHeadercrc.Update(newHeaderByte, 0, (uint)newHeaderByte.Length); + UInt32 mainHeaderCRC = mainHeadercrc.GetDigest(); + + UInt64 headerpos = (UInt64)_zipFs.Position; + BinaryWriter bw = new BinaryWriter(_zipFs); + bw.Write(newHeaderByte); + + _signatureHeader.WriteFinal(bw, headerpos, (ulong)newHeaderByte.Length, mainHeaderCRC); + + _zipFs.Flush(); + _zipFs.Close(); + _zipFs.Dispose(); + } + + #endregion + + + public void ZipFileAddDirectory(string filename) + { + LocalFile lf = new LocalFile + { + FileName = filename, + UncompressedSize = 0, + isDirectory = true, + StreamOffset = 0 + }; + _localFiles.Add(lf); + } + + public ZipReturn ZipFileRollBack() + { + throw new NotImplementedException(); + } + + public void ZipFileCloseFailed() + { + throw new NotImplementedException(); + } + + + + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Structure/BindPair.cs b/ROMVault2/SupportedFiles/SevenZip/Structure/BindPair.cs new file mode 100644 index 0000000..8103a71 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Structure/BindPair.cs @@ -0,0 +1,24 @@ +using System.IO; + +namespace ROMVault2.SupportedFiles.SevenZip.Structure +{ + public class BindPair + { + public ulong InIndex; + public ulong OutIndex; + + public void Read(BinaryReader br) + { + InIndex = br.ReadEncodedUInt64(); + Util.log("InIndex = " + InIndex); + OutIndex = br.ReadEncodedUInt64(); + Util.log("OutIndex = " + OutIndex); + } + + public void Write(BinaryWriter bw) + { + bw.WriteEncodedUInt64(InIndex); + bw.WriteEncodedUInt64(OutIndex); + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Structure/Coder.cs b/ROMVault2/SupportedFiles/SevenZip/Structure/Coder.cs new file mode 100644 index 0000000..dcbe781 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Structure/Coder.cs @@ -0,0 +1,70 @@ +using System; +using System.IO; + +namespace ROMVault2.SupportedFiles.SevenZip.Structure +{ + public class Coder + { + public byte[] Method; + public ulong NumInStreams; + public ulong NumOutStreams; + public byte[] Properties; + + public void Read(BinaryReader br) + { + Util.log("Begin : ReadCoder", 1); + + byte flags = br.ReadByte(); + Util.log("Flags = " + flags.ToString("X")); + int decompressionMethodIdSize = flags & 0xf; + Method = br.ReadBytes(decompressionMethodIdSize); + if ((flags & 0x10) != 0) + { + NumInStreams = br.ReadEncodedUInt64(); + Util.log("NumInStreams = " + NumInStreams); + NumOutStreams = br.ReadEncodedUInt64(); + Util.log("NumOutStreams = " + NumOutStreams); + } + else + { + NumInStreams = 1; + NumOutStreams = 1; + } + if ((flags & 0x20) != 0) + { + ulong propSize = br.ReadEncodedUInt64(); + Util.log("PropertiesSize = " + propSize); + Properties = br.ReadBytes((int)propSize); + Util.log("Properties = " + Properties); + } + if ((flags & 0x80) != 0) + throw new NotSupportedException("External flag"); + + Util.log("End : ReadCoder", -1); + } + + public void Write(BinaryWriter bw) + { + byte flags = (byte)Method.Length; + if (NumInStreams != 1 || NumOutStreams != 1) + flags = (byte)(flags | 0x10); + if (Properties != null && Properties.Length > 0) + flags = (byte)(flags | 0x20); + bw.Write(flags); + + bw.Write(Method); + + if (NumInStreams != 1 || NumOutStreams != 1) + { + bw.WriteEncodedUInt64(NumInStreams); + bw.WriteEncodedUInt64(NumOutStreams); + } + + if (Properties != null && Properties.Length > 0) + { + bw.WriteEncodedUInt64((ulong) Properties.Length); + bw.Write(Properties); + } + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Structure/FileInfo.cs b/ROMVault2/SupportedFiles/SevenZip/Structure/FileInfo.cs new file mode 100644 index 0000000..d42ae6c --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Structure/FileInfo.cs @@ -0,0 +1,128 @@ +using System; +using System.IO; + +namespace ROMVault2.SupportedFiles.SevenZip.Structure +{ + public class FileInfo + { + public string[] Names; + public bool[] EmptyStreamFlags; + public bool[] EmptyFileFlags; + public uint[] Attributes; + + public void Read(BinaryReader br) + { + Util.log("Begin : ReadFileInfo", 1); + + ulong size = br.ReadEncodedUInt64(); + Names = new string[size]; + + ulong numEmptyFiles = 0; + + for (; ; ) + { + HeaderProperty hp = (HeaderProperty)br.ReadByte(); + Util.log("HeaderProperty = " + hp); + if (hp == HeaderProperty.kEnd) + { + Util.log("End : ReadFileInfo", -1); + return; + } + + ulong bytessize = br.ReadEncodedUInt64(); + switch (hp) + { + case HeaderProperty.kName: + if (br.ReadByte() != 0) + throw new Exception("Cannot be external"); + + Util.log("Looping Names Begin " + size, 1); + for (ulong i = 0; i < size; i++) + { + Names[i] = br.ReadName(); + Util.log("enteries[" + i + "]=" + Names[i]); + } + Util.log("Looping Names End " + size, -1); + continue; + + case HeaderProperty.kEmptyStream: + Util.log("reading EmptyStreamFlags Total=" + size); + EmptyStreamFlags = Util.ReadBoolFlags(br, (ulong)Names.Length); + for (ulong i = 0; i < size; i++) + if (EmptyStreamFlags[i]) numEmptyFiles++; + continue; + + case HeaderProperty.kEmptyFile: + Util.log("reading numEmptyFilesFlags Total=" + numEmptyFiles); + EmptyFileFlags = Util.ReadBoolFlags(br, numEmptyFiles); + continue; + + case HeaderProperty.kWinAttributes: + Util.log("skipping bytes " + bytessize); + Attributes = Util.ReadUInt32Def(br, size); + continue; + + case HeaderProperty.kLastWriteTime: + Util.log("skipping bytes " + bytessize); + br.ReadBytes((int)bytessize); + continue; + + case HeaderProperty.kDummy: + Util.log("skipping bytes " + bytessize); + br.ReadBytes((int)bytessize); + continue; + + default: + throw new Exception(hp.ToString()); + } + } + } + + public void Write(BinaryWriter bw) + { + bw.Write((byte)HeaderProperty.kFilesInfo); + bw.WriteEncodedUInt64((UInt64)Names.Length); + + + byte[] namebyte; + using (MemoryStream nameMem = new MemoryStream()) + { + using (BinaryWriter nameBw = new BinaryWriter(nameMem)) + { + nameBw.Write((byte)0); //not external + foreach (string name in Names) + nameBw.WriteName(name); + + namebyte = new byte[nameMem.Length]; + nameMem.Position = 0; + nameMem.Read(namebyte, 0, namebyte.Length); + } + } + + bw.Write((byte)HeaderProperty.kName); + bw.WriteEncodedUInt64((UInt64)namebyte.Length); + bw.Write(namebyte); + + if (EmptyStreamFlags != null) + { + + bw.Write((byte)HeaderProperty.kEmptyStream); + Util.WriteBoolFlags(bw, EmptyStreamFlags); + } + + if (EmptyFileFlags != null) + { + bw.Write((byte)HeaderProperty.kEmptyFile); + Util.WriteBoolFlags(bw, EmptyFileFlags); + } + + if (Attributes != null) + { + bw.Write((byte)HeaderProperty.kWinAttributes); + Util.WriteUint32Def(bw, Attributes); + } + + bw.Write((byte)HeaderProperty.kEnd); + } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Structure/Folder.cs b/ROMVault2/SupportedFiles/SevenZip/Structure/Folder.cs new file mode 100644 index 0000000..b7aca98 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Structure/Folder.cs @@ -0,0 +1,395 @@ +using System; +using System.IO; + +namespace ROMVault2.SupportedFiles.SevenZip.Structure +{ + public class Folder + { + + + public Coder[] Coders; + public BindPair[] BindPairs; + public ulong[] PackedStreamIndices; + public ulong[] UnpackedStreamSizes; + public uint? UnpackCRC; + public UnpackedStreamInfo[] UnpackedStreamInfo; + + + + private void ReadFolder(BinaryReader br) + { + Util.log("Begin : Read Folder", 1); + + ulong numCoders = br.ReadEncodedUInt64(); + Util.log("NumCoders = " + numCoders); + + Coders = new Coder[numCoders]; + + int numInStreams = 0; + int numOutStreams = 0; + + Util.log("Looping Coders Begin", 1); + for (ulong i = 0; i < numCoders; i++) + { + Util.log("Looping Coders : " + i); + Coders[i] = new Coder(); + Coders[i].Read(br); + + numInStreams += (int)Coders[i].NumInStreams; + numOutStreams += (int)Coders[i].NumOutStreams; + } + Util.log("Looping Coders End", -1); + + int numBindPairs = numOutStreams - 1; + Util.log("numBindPairs : " + numBindPairs); + BindPairs = new BindPair[numBindPairs]; + + Util.log("Looping BindPairs Begin", 1); + for (int i = 0; i < numBindPairs; i++) + { + Util.log("Looping BindPairs : " + i); + BindPairs[i] = new BindPair(); + BindPairs[i].Read(br); + } + Util.log("Looping BindPairs End", -1); + + if (numInStreams < numBindPairs) + throw new NotSupportedException("Error"); + + int numPackedStreams = numInStreams - numBindPairs; + Util.log("numPackedStreams : " + numPackedStreams); + + PackedStreamIndices = new ulong[numPackedStreams]; + + if (numPackedStreams == 1) + { + uint pi = 0; + for (uint j = 0; j < numInStreams; j++) + { + for (uint k = 0; k < BindPairs.Length; k++) + { + if (BindPairs[k].InIndex == j) continue; + Util.log("PackedStreamIndices[" + pi + "] : " + j); + PackedStreamIndices[pi++] = j; + break; + } + } + } + else + { + for (uint i = 0; i < numPackedStreams; i++) + { + PackedStreamIndices[i] = br.ReadEncodedUInt64(); + Util.log("PackedStreamIndices[" + i + "] = " + PackedStreamIndices[i]); + } + } + + Util.log("End : Read Folder", -1); + } + private void ReadUnpackedStreamSize(BinaryReader br) + { + ulong outStreams = 0; + foreach (Coder c in Coders) + outStreams += c.NumOutStreams; + + Util.log("Looping UnpackedStreamSizes Begin", 1); + UnpackedStreamSizes = new ulong[outStreams]; + for (uint j = 0; j < outStreams; j++) + { + UnpackedStreamSizes[j] = br.ReadEncodedUInt64(); + Util.log("unpackedStreamSizes[" + j + "] = " + UnpackedStreamSizes[j]); + } + Util.log("Looping UnpackedStreamSizes End", -1); + } + private ulong GetUnpackSize() + { + ulong outStreams = 0; + foreach (Coder coder in Coders) + outStreams += coder.NumInStreams; + + for (ulong j = 0; j < outStreams; j++) + { + bool found = false; + foreach (BindPair bindPair in BindPairs) + { + if (bindPair.OutIndex != j) + continue; + found = true; + break; + } + if (!found) return UnpackedStreamSizes[j]; + + } + return 0; + } + + + public static void ReadUnPackInfo(BinaryReader br,out Folder[] Folders) + { + Folders = null; + Util.log("Begin : ReadUnPackInfo", 1); + + for (; ; ) + { + HeaderProperty hp = (HeaderProperty)br.ReadByte(); + Util.log("HeaderProperty = " + hp); + switch (hp) + { + case HeaderProperty.kFolder: + { + ulong numFolders = br.ReadEncodedUInt64(); + Util.log("NumFolders = " + numFolders); + + Folders = new Folder[numFolders]; + + byte external = br.ReadByte(); + Util.log("External = " + external); + switch (external) + { + case 0: + { + Util.log("Looping Folders Begin", 1); + for (uint i = 0; i < numFolders; i++) + { + Util.log("Looping Folders : " + i); + Folders[i] = new Folder(); + Folders[i].ReadFolder(br); + } + Util.log("Looping Folders End", -1); + break; + } + case 1: + throw new NotSupportedException("External flag"); + } + continue; + } + + + case HeaderProperty.kCodersUnPackSize: + { + Util.log("Looping Folders Begin", 1); + for (uint i = 0; i < Folders.Length; i++) + { + Util.log("Looping Folders : " + i); + Folders[i].ReadUnpackedStreamSize(br); + } + Util.log("Looping Folders End", -1); + continue; + } + + case HeaderProperty.kCRC: + { + + uint?[] crcs; + Util.log("Looping CRC Begin", 1); + Util.UnPackCRCs(br,(ulong) Folders.Length, out crcs); + for (int i = 0; i < Folders.Length; i++) + { + Folders[i].UnpackCRC = crcs[i]; + Util.log("Folder[" + i + "].UnpackCRC = " + (Folders[i].UnpackCRC ?? 0).ToString("X")); + } + Util.log("Looping CRC End", -1); + continue; + } + case HeaderProperty.kEnd: + Util.log("End : ReadUnPackInfo", -1); + return; + + default: + throw new Exception(hp.ToString()); + } + + + } + } + + public static void ReadSubStreamsInfo(BinaryReader br,ref Folder[] Folders) + { + Util.log("Begin : ReadSubStreamsInfo", 1); + + for (; ; ) + { + HeaderProperty hp = (HeaderProperty)br.ReadByte(); + Util.log("HeaderProperty = " + hp); + switch (hp) + { + case HeaderProperty.kNumUnPackStream: + { + Util.log("Looping Folders Begin", 1); + for (int f = 0; f < Folders.Length; f++) + { + int numStreams = (int)br.ReadEncodedUInt64(); + Util.log("Folders[" + f + "].Length=" + numStreams); + Folders[f].UnpackedStreamInfo = new UnpackedStreamInfo[numStreams]; + for (int i = 0; i < numStreams; i++) + Folders[f].UnpackedStreamInfo[i] = new UnpackedStreamInfo(); + } + Util.log("Looping Folders End", -1); + continue; + } + case HeaderProperty.kSize: + { + Util.log("Looping Folders Begin", 1); + for (int f = 0; f < Folders.Length; f++) + { + Folder folder = Folders[f]; + + if (folder.UnpackedStreamInfo.Length == 0) + { + Util.log("Folder size is Zero for " + f + " Begin"); + continue; + } + + Util.log("Looping Folder UnpackedStreams" + f + " : " + (folder.UnpackedStreamInfo.Length - 1), 1); + ulong sum = 0; + for (int i = 0; i < folder.UnpackedStreamInfo.Length - 1; i++) + { + ulong size = br.ReadEncodedUInt64(); + folder.UnpackedStreamInfo[i].UnpackedSize = size; + Util.log("UnpackedStreams[" + i + "].UnpackedSize = " + folder.UnpackedStreamInfo[i].UnpackedSize); + sum += size; + } + Util.log("Looping Folder UnpackedStreams " + f + " End", -1); + + Util.log("Sum : " + sum + " : Folder[" + f + "].GetUnpackSize()=" + Folders[f].GetUnpackSize()); + folder.UnpackedStreamInfo[folder.UnpackedStreamInfo.Length - 1].UnpackedSize = folder.GetUnpackSize() - sum; + Util.log("UnpackedStreams[" + (folder.UnpackedStreamInfo.Length - 1) + "].UnpackedSize = " + folder.UnpackedStreamInfo[folder.UnpackedStreamInfo.Length - 1].UnpackedSize); + } + Util.log("Looping Folders End", -1); + continue; + } + case HeaderProperty.kCRC: + { + ulong numCRC = 0; + foreach (var folder in Folders) + { + if (folder.UnpackedStreamInfo == null) + { + folder.UnpackedStreamInfo = new UnpackedStreamInfo[1]; + folder.UnpackedStreamInfo[0] = new UnpackedStreamInfo(); + folder.UnpackedStreamInfo[0].UnpackedSize = folder.GetUnpackSize(); + } + + if (folder.UnpackedStreamInfo.Length != 1 || !folder.UnpackCRC.HasValue) + numCRC += (ulong)folder.UnpackedStreamInfo.Length; + } + + Util.log("Reading CRC Total : " + numCRC); + int crcIndex = 0; + uint?[] crc; + Util.UnPackCRCs(br, numCRC, out crc); + Util.log("Looping Folders Begin", 1); + for (uint i = 0; i < Folders.Length; i++) + { + Folder folder = Folders[i]; + if (folder.UnpackedStreamInfo.Length == 1 && folder.UnpackCRC.HasValue) + { + folder.UnpackedStreamInfo[0].Crc = folder.UnpackCRC; + Util.log("UnpackedStreams[0].Crc = " + folder.UnpackedStreamInfo[0].Crc); + } + else + { + Util.log("Looping Folder UnpackedStreams" + i + " : " + (Folders[i].UnpackedStreamInfo.Length), 1); + for (uint j = 0; j < folder.UnpackedStreamInfo.Length; j++, crcIndex++) + { + folder.UnpackedStreamInfo[j].Crc = crc[crcIndex]; + Util.log("UnpackedStreams[" + j + "].Crc = " + (folder.UnpackedStreamInfo[j].Crc ?? 0).ToString("X")); + } + Util.log("Looping Folder UnpackedStreams " + i + " End", -1); + + } + } + Util.log("Looping Folders End", -1); + + continue; + } + case HeaderProperty.kEnd: + Util.log("End : ReadSubStreamsInfo", -1); + return; + + default: + throw new Exception(hp.ToString()); + } + } + } + + private void WriteFolder(BinaryWriter bw) + { + ulong numCoders = (ulong)Coders.Length; + bw.WriteEncodedUInt64(numCoders); + for (ulong i=0;i arrByte; + private byte[] testarr; + private int index = 0; + + public TesterStream(byte[] test) + { + arrByte=new List(); + testarr = test; + index = 0; + } + + public override void Flush() + { + throw new NotImplementedException(); + } + + public override long Seek(long offset, SeekOrigin origin) + { + throw new NotImplementedException(); + } + + public override void SetLength(long value) + { + throw new NotImplementedException(); + } + + public override int Read(byte[] buffer, int offset, int count) + { + for (int i = 0; i < count; i++) + { + buffer[offset + i] = arrByte[pos]; + pos += 1; + } + return count; + } + + public override void Write(byte[] buffer, int offset, int count) + { + for (int i = 0; i < count; i++) + { + byte test = buffer[i + offset]; + arrByte.Add(test); + if (test != testarr[index]) + { + Console.WriteLine("Expected ="+testarr[index]+" : Found = "+test); + } + index += 1; + } + } + + public override bool CanRead + { + get { throw new NotImplementedException(); } + } + + public override bool CanSeek + { + get { throw new NotImplementedException(); } + } + + public override bool CanWrite + { + get { return true; } + } + + public override long Length + { + get { return arrByte.Count; } + } + + public override long Position { get; set; } + } +} diff --git a/ROMVault2/SupportedFiles/SevenZip/Util.cs b/ROMVault2/SupportedFiles/SevenZip/Util.cs new file mode 100644 index 0000000..9970d55 --- /dev/null +++ b/ROMVault2/SupportedFiles/SevenZip/Util.cs @@ -0,0 +1,315 @@ +using System; +using System.Diagnostics; +using System.IO; +using System.Text; + +namespace ROMVault2.SupportedFiles.SevenZip +{ + public enum HeaderProperty + { + kEnd, + kHeader, + + kArchiveProperties, + + kAdditionalStreamsInfo, + kMainStreamsInfo, + kFilesInfo, + + kPackInfo, + kUnPackInfo, + kSubStreamsInfo, + + kSize, + kCRC, + + kFolder, + + kCodersUnPackSize, + kNumUnPackStream, + + kEmptyStream, + kEmptyFile, + kAnti, + + kName, + kCreationTime, + kLastAccessTime, + kLastWriteTime, + kWinAttributes, + kComment, + + kEncodedHeader, + + kStartPos, + kDummy + } + + public static class Util + { + public static readonly Encoding Enc = Encoding.GetEncoding(28591); + + private static int indent = 0; + public static void log(string txt, int ind = 0) + { + if (ind < 0) indent += ind; + for (int i = 0; i < indent; i++) + Debug.Write(" "); + Debug.WriteLine(txt); + if (ind == -1) + Debug.WriteLine(""); + if (ind > 0) indent += ind; + } + + public static void memset(byte[] buffer, int start, byte val, int len) + { + for (int i = 0; i < len; i++) + buffer[start + i] = val; + } + + public static void memcpyr(byte[] destBuffer, int destPoint, byte[] sourceBuffer, int sourcePoint, int len) + { + for (int i = len - 1; i >= 0; i--) + destBuffer[destPoint + i] = sourceBuffer[sourcePoint + i]; + } + + + public static bool memcmp(byte[] buffer1, int offset, byte[] buffer2, int len) + { + for (int i = 0; i < len; i++) + { + if (buffer1[offset + i] != buffer2[i]) + return false; + } + return true; + } + + + + public static bool Compare(this byte[] b1, byte[] b2) + { + if (b1 == null || b2 == null) return false; + + if (b1.Length != b2.Length) return false; + + for (int i = 0; i < b1.Length; i++) + if (b1[i] != b2[i]) return false; + + return true; + } + + + public static ulong ReadEncodedUInt64(this BinaryReader br) + { + byte mask = 0x80; + int i; + byte firstByte = br.ReadByte(); + ulong value = 0; + for (i = 0; i < 8; i++) + { + if ((firstByte & mask) == 0) + { + ulong highPart = (ulong)(firstByte & (mask - 1)); + value += (highPart << (8 * i)); + return value; + } + byte b = br.ReadByte(); + value |= ((ulong)b << (8 * i)); + mask >>= 1; + } + return value; + } + public static void WriteEncodedUInt64(this BinaryWriter bw, ulong value) + { + byte firstByte = 0; + byte mask = 0x80; + int i; + for (i = 0; i < 8; i++) + { + if (value < ((ulong)(1) << (7 * (i + 1)))) + { + firstByte |= (byte)(value >> (8 * i)); + break; + } + firstByte |= mask; + mask >>= 1; + } + bw.Write(firstByte); + for (; i > 0; i--) + { + bw.Write((byte)value); + value >>= 8; + } + } + + public static string ReadName(this BinaryReader br) + { + StringBuilder stringBuilder = new StringBuilder(); + for (; ; ) + { + char c = (char)br.ReadUInt16(); + if (c == 0) return stringBuilder.ToString(); + stringBuilder.Append(c); + } + } + + public static void WriteName(this BinaryWriter bw, string name) + { + char[] chars = name.ToCharArray(); + for (int i = 0; i < chars.Length; i++) + { + bw.Write((UInt16)chars[i]); + } + bw.Write((UInt16)0); + } + + + + public static void UnPackCRCs(BinaryReader br, ulong numItems, out uint?[] digests) + { + bool[] digestsDefined = ReadBoolFlagsDefaultTrue(br, numItems); + digests = new uint?[numItems]; + for (ulong i = 0; i < numItems; i++) + { + if (digestsDefined[i]) + { + digests[i] = br.ReadUInt32(); + } + } + } + private static bool[] ReadBoolFlagsDefaultTrue(BinaryReader br, ulong numItems) + { + byte allAreDefined = br.ReadByte(); + if (allAreDefined == 0) + { + return ReadBoolFlags(br, numItems); + } + bool[] flags = new bool[numItems]; + for (ulong i = 0; i < numItems; i++) + { + flags[i] = true; + } + return flags; + } + public static bool[] ReadBoolFlags(BinaryReader br, ulong numItems) + { + byte b = 0; + byte mask = 0; + + bool[] flags = new bool[numItems]; + for (ulong i = 0; i < numItems; i++) + { + if (mask == 0) + { + b = br.ReadByte(); + mask = 0x80; + } + + flags[i] = ((b & mask) != 0); + + mask >>= 1; + } + return flags; + } + + public static bool[] ReadBoolFlags2(BinaryReader br, ulong numItems) + { + byte allAreDefined = br.ReadByte(); + if (allAreDefined == 0) + return ReadBoolFlags(br, numItems); + + + bool[] flags = new bool[numItems]; + for (ulong i = 0; i < numItems; i++) + flags[i] = true; + return flags; + } + + public static void WriteUint32Def(BinaryWriter br, uint[] values) + { + br.WriteEncodedUInt64((ulong)(values.Length * 4 + 2)); + br.Write((byte)1); + br.Write((byte)0); + for (int i = 0; i < values.Length; i++) + br.Write(values[i]); + } + + public static uint[] ReadUInt32Def(BinaryReader br, ulong numItems) + { + uint[] v = new uint[numItems]; + bool[] defs = ReadBoolFlags2(br, numItems); + byte tmp = br.ReadByte(); + for (ulong i = 0; i < numItems; i++) + v[i] = defs[i] ? br.ReadUInt32() : 0; + + return v; + } + + public static ulong[] ReadUInt64Def(BinaryReader br, ulong numItems) + { + ulong[] v = new ulong[numItems]; + bool[] defs = ReadBoolFlags2(br, numItems); + byte tmp = br.ReadByte(); + for (ulong i = 0; i < numItems; i++) + v[i] = defs[i] ? br.ReadUInt64() : 0; + + return v; + } + + public static void WriteBoolFlags(BinaryWriter bw, bool[] bArray) + { + bw.WriteEncodedUInt64((ulong)((bArray.Length + 7) / 8)); + byte mask = 0x80; + byte tmpOut = 0; + for (int i = 0; i < bArray.Length; i++) + { + if (bArray[i]) + tmpOut |= mask; + + mask >>= 1; + if (mask != 0) + continue; + + bw.Write(tmpOut); + mask = 0x80; + tmpOut = 0; + } + if (mask != 0x80) + bw.Write(tmpOut); + } + + public static byte[] uinttobytes(uint? crc) + { + if (crc == null) return null; + uint c = (uint)crc; + + byte[] b = new byte[4]; + b[0] = (byte)((c >> 24) & 0xff); + b[1] = (byte)((c >> 16) & 0xff); + b[2] = (byte)((c >> 8) & 0xff); + b[3] = (byte)((c >> 0) & 0xff); + return b; + } + public static uint? bytestouint(byte[] crc) + { + if (crc == null) return null; + + return (uint?)(crc[0] << 24 | (crc[1] << 16) | (crc[2] << 8) | (crc[3] << 0)); + } + public static bool ByteArrCompare(byte[] b0, byte[] b1) + { + if (b0 == null || b1 == null) + return false; + if (b0.Length != b1.Length) + return false; + + for (int i = 0; i < b0.Length; i++) + { + if (b0[i] != b1[i]) + return false; + } + return true; + } + + } +} diff --git a/ROMVault2/SupportedFiles/Zip/zipFile.cs b/ROMVault2/SupportedFiles/Zip/zipFile.cs index a31b24d..49dce60 100644 --- a/ROMVault2/SupportedFiles/Zip/zipFile.cs +++ b/ROMVault2/SupportedFiles/Zip/zipFile.cs @@ -18,7 +18,7 @@ using ROMVault2.SupportedFiles.Zip.ZLib; namespace ROMVault2.SupportedFiles.Zip { - public class ZipFile + public class ZipFile : ICompress { const int Buffersize = 4096 * 128; private static byte[] _buffer; @@ -807,7 +807,7 @@ namespace ROMVault2.SupportedFiles.Zip private ZipStatus _pZipStatus; private bool _zip64; - public ZipOpenType ZipOpen; + public ZipOpenType ZipOpen { get; private set; } public ZipStatus ZipStatus { get { return _pZipStatus; } } @@ -823,7 +823,7 @@ namespace ROMVault2.SupportedFiles.Zip public byte[] CRC32(int i) { return _localFiles[i].CRC; } public byte[] MD5(int i) { return _localFiles[i].md5; } public byte[] SHA1(int i) { return _localFiles[i].sha1; } - + ~ZipFile() { diff --git a/ROMVault2/SupportedFiles/ZipEnums.cs b/ROMVault2/SupportedFiles/ZipEnums.cs index d80d9fc..61ce79a 100644 --- a/ROMVault2/SupportedFiles/ZipEnums.cs +++ b/ROMVault2/SupportedFiles/ZipEnums.cs @@ -34,6 +34,7 @@ namespace ROMVault2.SupportedFiles ZipErrorReadingFile, ZipErrorTimeStamp, ZipErrorRollBackFile, + ZipTryingToAccessADirectory, ZipUntested } diff --git a/ROMVault2/Utils/DBTypeGet.cs b/ROMVault2/Utils/DBTypeGet.cs index 25daa43..613a1d9 100644 --- a/ROMVault2/Utils/DBTypeGet.cs +++ b/ROMVault2/Utils/DBTypeGet.cs @@ -19,6 +19,8 @@ namespace ROMVault2.Utils return FileType.Dir; case FileType.ZipFile: return FileType.Zip; + case FileType.SevenZipFile: + return FileType.SevenZip; } return FileType.Zip; } @@ -31,13 +33,15 @@ namespace ROMVault2.Utils return FileType.File; case FileType.Zip: return FileType.ZipFile; + case FileType.SevenZip: + return FileType.SevenZipFile; } return FileType.Zip; } public static bool isCompressedDir(FileType fileType) { - return (fileType == FileType.Zip); + return (fileType == FileType.Zip || fileType==FileType.SevenZip); } public static RvBase GetRvType(FileType fileType) @@ -46,9 +50,11 @@ namespace ROMVault2.Utils { case FileType.Dir: case FileType.Zip: + case FileType.SevenZip: return new RvDir(fileType); case FileType.File: case FileType.ZipFile: + case FileType.SevenZipFile: return new RvFile(fileType); default: throw new Exception("Unknown file type"); diff --git a/ROMVault2/rvImages.cs b/ROMVault2/rvImages.cs index c867a9b..e9aed7b 100644 --- a/ROMVault2/rvImages.cs +++ b/ROMVault2/rvImages.cs @@ -11,10 +11,6 @@ namespace ROMVault2 { public static class rvImages { - private static List names; - private static List images; - - public static Bitmap GetBitmap(string bitmapName) { object bmObj = rvImages1.ResourceManager.GetObject(bitmapName); @@ -25,32 +21,5 @@ namespace ROMVault2 return bm; } - - public static Bitmap TickBoxDisabled - { - get { return GetBitmap("TickBoxDisabled"); } - } - public static Bitmap TickBoxTicked - { - get { return GetBitmap("TickBoxTicked"); } - } - public static Bitmap TickBoxUnTicked - { - get { return GetBitmap("TickBoxUnTicked"); } - } - - public static Bitmap ExpandBoxMinus - { - get { return GetBitmap("ExpandBoxMinus"); } - } - public static Bitmap ExpandBoxPlus - { - get { return GetBitmap("ExpandBoxPlus"); } - } - - public static Bitmap romvaultTZ - { - get { return GetBitmap("romvaultTZ"); } - } } } diff --git a/ROMVault2/rvImages1.Designer.cs b/ROMVault2/rvImages1.Designer.cs index 341dc40..7c08bf2 100644 --- a/ROMVault2/rvImages1.Designer.cs +++ b/ROMVault2/rvImages1.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:4.0.30319.34011 +// Runtime Version:4.0.30319.0 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -60,6 +60,56 @@ namespace ROMVault2 { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap btnFindFixes_BackgroundImage { + get { + object obj = ResourceManager.GetObject("btnFindFixes_BackgroundImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap btnFixFiles_BackgroundImage { + get { + object obj = ResourceManager.GetObject("btnFixFiles_BackgroundImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap btnReport_BackgroundImage { + get { + object obj = ResourceManager.GetObject("btnReport_BackgroundImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap btnScanRoms_BackgroundImage { + get { + object obj = ResourceManager.GetObject("btnScanRoms_BackgroundImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap btnUpdateDats_BackgroundImage { + get { + object obj = ResourceManager.GetObject("btnUpdateDats_BackgroundImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -610,6 +660,56 @@ namespace ROMVault2 { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SevenZipDirCorrect { + get { + object obj = ResourceManager.GetObject("SevenZipDirCorrect", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SevenZipDirInToSort { + get { + object obj = ResourceManager.GetObject("SevenZipDirInToSort", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SevenZipDirMissing { + get { + object obj = ResourceManager.GetObject("SevenZipDirMissing", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SevenZipDirUnknown { + get { + object obj = ResourceManager.GetObject("SevenZipDirUnknown", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap SevenZipTZ { + get { + object obj = ResourceManager.GetObject("SevenZipTZ", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/ROMVault2/rvImages1.resx b/ROMVault2/rvImages1.resx index 75a2f72..73d104f 100644 --- a/ROMVault2/rvImages1.resx +++ b/ROMVault2/rvImages1.resx @@ -118,122 +118,6 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - iVBORw0KGgoAAAANSUhEUgAAAG4AAABuCAYAAADGWyb7AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuODc7gF0AABmcSURBVHhe7Z0J - uFRFdseVZEaGYYwYnUzUGEejIyY6TphonAijMd9EYTRGjRmNDONEUWMENQgGl4AKPPHhe/DeE/d933Df - d0VFUXHDBXHBDTcUwQWF6Tm/+93/S01Zfbvu7X6PBrq+7/919+2+t+ue362qc07V7V6tURqlURqlURql - UbqmnHbaaeu2tbX9tKOjY//29vZR9niW6a7W1tYTR4wYscnaa6/d0z72x6bVkx0apXuKgfm2qZ/B2MMA - HZqCucX0pG1faiplacqUKS8MGDDgr+xQ3zN9y9QAWKtiBt7SWssvDMZB9thij5cBxrTQB+HrzDPPLJ1/ - /vmlK664onTNNdeUbrzxxtJtt91Wuvjii5P3+MykSZNmbbDBBj+2r1rXRAtswMtTzIjfNxijTWeanjDN - cyGENHXq1ATMpZdeWrr66qtLt956a+mee+4pPfTQQ6Wnn3669Oyzz5aee+650vPPP588IrY/8cQTpQce - eKB07rnnJscZN27cjJ49e/7UqvHnpga82GLGW8N0u2kZhnR13nnnlS666KLSVVddVbr55ptLd9xxR2n6 - 9Omlp556KgEDlNmzZ5deeOGF0ksvvVSaM2dO6ZVXXinNnTu39Oqrr5Zee+21TrGN9/jsM888kwA+66yz - ku8ZM2bMg1aVfqY/M61hasDLKma0dUy3mL7AgJdffnnSah5++OHOVgOcF198MQHz8ssvJ3BcMK+//npp - 3rx5id58883SW2+9VXrnnXdKb7/9dvL47rvvJo+I9954440EIMcF3hlnnJHAGzVq1I1WpZ+Yvm/6tqkB - r1wxg92K0QSNlkSXBiSMKzgY2wXjQpk/f36i999/P9GHH36Y6KOPPvoDsY332YdjcGxaH92m6jB8+PCL - rFpbmdYxNRyWUDFDbYGx6K4w3qxZs5KWhUGBhHEF5r333usE88EHH/wBnAULFiT6+OOPE33yySelhQsX - fkNs53Psw/GAL3i0csE76KCDOqx6f2Na21T38KzOCnt2aW5u3sA29UjVNfW2LzwDQ+H10dJoZXR7GBRY - bqvxwQiOC+nTTz+tKD7PMQSPi4Nul3Hy9ttvT8CZAZbtt99+J1kV+5r6mJZrrGd16mce9U5WLzzrEw3S - 2fZ8uuk56ivZ68UW4sw46qijdrHd1jThaAGwdsW+aF3T53wh4wxXPdBoYQADlAvIlQ9j0aJF39hWTuwv - eHwPFwjdr8Y8vNPUCEv32GOPo62qm5n+xAS8mhf7rg2VJLDHYfZILHqdKSrkQYzR55xzTudrg/uxXXi/ - ssOvZ/qu6Y/4rpoUq9SxfAmuPA4IVz0tjW4Qo7qQ8oBBIbjapuMCj1bnw2N8xYOlbmbILwcOHHiYVXdT - E1dwLgPYMb5jIkHwSzvWwcShaWsByly+I0aEPBdeeGHpyiuvLF133XWJd33vvfeWHnzwwdJjjz1WevTR - R5Pn9Bh8ln0sxHnSqrCdaUMT8KpveXZgMh7v8gWMLXSRjGl0XRhTrayc0d33yr0fkvsZtTq+j4uFlk4d - 8FhpeRiJ+lnX82n//v1/Y9Xe2ESGpROevf8jA7GtQaALIwZNUmqAsfeWsH8lnX322YmxccwU8tx5553J - mA8Uxn15125cSg9F985zQpuZM2cmYRKxLMdtaWlZ1Lt3b+q9rYkQh7G6umIn9msOTnzmtza6SN/IMVBC - Cu3ndr0uPHmbwNOYx9ibGuFji/Out4H/egM1y+o/X4bP0umnn55AIVPDhXDDDTckYIBCuPPkk08mYDC8 - oPC9blyKysWmDC28JkRiX+DJQ7Y6/m6ttdY61sy9q4m0Xi9sX1Wxg87i4LfccktSQVx9jW0YsxyoojB9 - WP6jPE3Bo9uUt0lLcGG4YlwBDFCuvfbaBMrdd9+dGI/sDA6Xn8ERFD8u9cEARSEQcsMgpFCIbXyW43AB - 0G1ywVA/A3eymXuwifCGrr54sQP+nINecMEFyUlRaSpFNynPUUYOyYXgb3MfY8X3Ib6bC0fdpgyCQYFA - 9wUUWsrjjz+e1B25rUVgQsmCvFAEBmEbSSGRwiK2sQ/H5rupm7JBG264YbuZ/EAT6Ty84+KesbW2Gzgo - VygnyxdSSXWTGNOFUhSIBJTQdkngXHgYBYeFemFUjEw9MT4gAIKAKpUDIygCIyB6VIzqQsEWEvXxRe8g - 8RmOw/dxwXCROeCmmskPNm1j+lNTMXB2sE1MyXTLjBkzvtFNukaOBebu4z7Xa23T83JSa5dBqI8MipFl - fEC4LSXUWgREUIARC8aFEiOB42KhB7j//vs7Zz6OPfbYuU1NTW9YY1lmmmPbLjcdY/rHFElcsR1O5ICX - XXZZMihz1XLinAyVcI0uY/vbJPc9PecxRoLEo/8cySgYEsPI8MhtIXrtgikHRcdE7ndkbQsJQHSJeJx0 - 34QHhFTYNYfweH+QYqlcjPp57HjTTTcl4wJdDFcpJ0zFs4DEguE4Wdv0nMcYYSwZ3gXhS+9rH/8YeUR3 - yzACHGKzadOmRcEhtCCBcNdddyVdJt069uV8eQQ4Q1T6eTJDccVc6TZ2wi1mIGdM4IBcnVRYxo2RjBJ6 - D+k997EaUb/QtiICMGOivEDgYHDCBkEoJzxZjE/8SzjBcegqubC/+uqr0pIlS76hL7/8slM4Temxbkqx - ZBf7YA9rcdPZiS+FPlcWYwLgMESW4cttc9/z39c2/z1XGDK0TfJfl9smua2QK54hAU8UOIQNeNOp4cqK - CV4u7vvuuy/Zn+6RrpgQCDiuKoFCX3zxRadoMOn3nJ2iyS72wT4GLsm9cZXhmFAh1zEJAaiVMKr7PPQ6 - Sy4QbaOLBw5XPvlW4BC0K+2UJSaIiWNJVdHycNK4gEnvff31198AVA4SygKFPv/8804RpKd1GJuiyS72 - wT7sQEKUnUPgZMhqoLnG1mt/ezm5UFxIPFJPjMyaFYJyN6kbEssqaF18nhbHmIUnSl0WL16cwHEVC8qH - 5INyIUmfffZZp5RZMQ1P0WSXsWPHsjwhOaEQOBneNbYvGVXvu699uUaX3PdCr0PC2HhvcrFdkaEgbUdL - I7yh+8dLZrzBYD4cKQQJxYByIcWAQlwoknKZpr1SNBXL6vbhJPGKtyRw7hgnQ1aC4grjhh71PPS+K99t - d7fjPLnAcCCoN3Eb8SWGXLp0aadCkFAsJFQtKBeSRPcradrKtH3KpXKxMW4BOzHG+c6JjF1OMqieu9tC - r10Jjv/ovi/pNfGZvLzrr78+aXkYvBIk5ENCMZB8UJUghUC5kCScGskZf0k8xxUD9yY7Mf0gcIrjXEMK - lgsjBoz72lVoWyXhOFDXSy65JDn5ECDkA5JiQLmQagXKhSTROyB8ByWgTd9JsVQu7e3tz7MTaRnAKY7z - wbnCiKHtkm/wLMV8nrrI8+IkqV8lUCFIqFpQPqS8oBDjrURIkUJblCKJKwbuYXYkjlMAznjBAWVU99E3 - dIzhswQU93lIBLQa18g+xILyIfmgKkEKgfIhVQLlQkK0MFd09ym4OSmSuNLW1nYnO7KoFfcYIwGO8cQ1 - cLUSBPd5jPBwNa7RVWLwWFAupFqByoJUCZQ8cYmhhtxwCo7Fv/FlypQp09iR2Ea5StznSuAwqv9a8l/H - Sklh9zUTodSPcQ3D1BKUD6krQbk+gusbEOin4K5KkcQVA3cxO5Jk5iBkHQDHle4aEYUgFRFAXOEQMb7i - 2TIxSl2YrdAcFuMadcoCVQlSCJQPqRKoLEixoCTZklgzBdeaIokrBu50diQPBziaLv0uIUHI6JUECD1K - tF4SqSwbIGNBwMmdOrSitNJlxUoq6uNCqhWoLEh5WpMPqhwkybUXTmF6rsekSOLK5MmTm9mRaQrNx5Gj - A5wguCDcL9U2RIsADoE8KRzgkIbS3TdZIlVFEEo2RBkcYHHSGDwGlA8JdRUoF1JeUL7dGKJSO/xniiSu - tLa2HseOLEMLrVx2v0SiG8UL5d42urRQ6smVcoRK4HKB4L1yHIyysnR7IUg+KIRdEedPg0ntNChFElcM - 3BHsSAadjDprJBhz5FlK+kIenaukU8BjYpH3aHV4qLRcThTDlhubagUqC1Ke1uSDyoJUBJREj4ac4YLb - yeJLS0vLgeyI0YmR6KYEji/Ql0qMUYIFZLpITh5jr0zeXiyoGEguKHoyCRszQ57aM37ZAmXSpEl7syMZ - dY0vCsJ9cCx8odvj8zgyIUg+qEqQQqB8SJVAZUGqBpQPKRaUIPmgBEuiR0qhsVgr370Ep5566i7szBgk - cAThtCS+WPAY++Ses0YeKD6kWoHKgpSnNfmgsiB1Byhs6orQKwX3foojvjQ3N/dnZ2Z/WbhJ2gtw8ixV - Od10QUCMsWNB+ZBQV4FyIRUBFQMJxUAKgcJTduUsWXgmxRFfrKvcmp1x2+VUkD1xwfGotBOvy0EKgfIh - VQKVBakaUD6kWFCCVAtQ2NQVPkUK7o4UR3wZN27cxuxMNwg40l40YQ5MZVRpxWMYKA+oLEh5WpMPKgtS - d4DyIfmgfEiEWL6YSkvBnZfiiC9NTU3cqJ+sOyHlpOwJB6YyqrTmjDBud4ByIRUBFQPJBeUCQi6kECgX - UgwofAS6Rlcsr0jBTUhxxJcjjjiiJzvjLQocX0JIIHBUjM8ADxCxoLIgVQPKhxQLKrY11QIUnjnhEskG - ejJs68tZsnBkiiNX6Vx3QtPF5QccXyxwOCu8jwNTDlKe1uSDyoLUHaB8SCgPJMSFjp3wyslAkTwOwXLl - 3C62b8oiV1m9o6PjAw5AwhNwXCmAo9KcGJl73ueLioByIRUBFQPJBZUFKQTKhRQDCkgIG+HI0e2RdQrB - yRKxcwou3w0fKgbudQ6gJdSAUkjAidLceZ+bGUKQqgHlQ4oFFduaag0K4bzhxOEVhoDEyknA/yhFka9o - 3QnZeYFTSMCJEt/xPkliH5IPKgtSd4DyIaE8kARKkLiAEfYgVKoWliv9epKJX5DIX7TuBC/HBcdJcOJy - W7njxIVUBFQMJBdUFqQQKBdSDCi/NQmUC4zWVc7BKKpHHnlE0JakGPIXrTshK0Laiz6b7oAT4+S50YH3 - mZLJAuVDigUV25q6C5QEsBgno4icG/rfTDHkL1p3wvwa3SJdArEcJ4YxWEjE+3xhd4LyIfmgKkESqBhI - EhcsniF28I1dS7FEA5tabzczxZC/aN0JzoeyJwoJMIgW7NC/54XkgsqCFALlQooBlac1uaAkzrmId1hE - mtM029+QYshftO6Em/MApyCck8cgmqUlVKgEKrY1LQ9QLiREryLRy3RVtxgSvRs2bW1tjbsnLlQmT558 - MgdhBoDK++D0ozA4LStat1cOFOIciVm7q5W5UmNoaWkZl2LIX7TuhAAbb4e4TfNyGEvT65xovbYmH1QI - kiuA0cpq7S3GSj9vNXHixELprqQY9WEcBEACR+vCABhPd5NgnHoB5UKKBeWKbj9k0O6SbvwfP378f6QY - 8hcD91sOQgqGNSWK5TAIRlSgiGFDkHxQlSAJVNHWVAmUD4neQ+K8ahlEF5XuOx89evROKYb8RetOOBjB - NuCI5TAIhuQ9Zg+A4kOKAZW3NfmgsiDFgJKWZ9foS4uEhg4dyq/eFitad0KXyA3vgFMshyF4j+V3XQXK - hVRLUJr3Qsu7a/SlRVd9+/blR8KLFa07IekJOLIniuXwMHmPpeAhSAJVtDVVApUFKQsUF560PLzGLCmF - 2NHRwT1x/BBbsaJ1JzRfUjECh6F4znusWBakeuj2XFAuJIn6I+ofMt7ylFKIFoa9buYvDk7rTugOmZNT - EI7hlAxltrZeur0sUBL17+q0VVExC4NNrad73MzPr7oXKwYu+b0TliYIHGMCxlMylJvlfUh5QWVBqgUo - ibrXixMSku5lnzBhwm1m/uI/fbjvvvt+iwMhmjHZE4FTMpS7b3xQWZAqgXIhuaBiIPmgBAsRg3Zn6qqI - uKUNm44ZM+ZSM39xcFZYvpD8HQugODgGwJBKhtK8awVKkGJB+ZBcUC6weojPYsS9gdj06KOPbjPb8+8l - Vf1KbLLuBEAcXOC4O5TtLGuIhVRrUD4kgUIszKlHByRLyv0OGzbsRDM94Ir/jL3WndDCcEgwCEZVMpSx - rhwoF5ILygeEfEh5QUm4+PXqfFSSFgkNHjyY3+4ijisOTutOGDhJe9HtYGhdHWzritYUAuVDQlxIiHrV - s+MRI5Y5YtOdd97512b6qsEl606YJyJAxEAYWjMDDPi1AOVDqgQK0broDuvd6YiV7uDt27fvL830/HFE - 8b9r0boTZsEBh6EwtGYGtKQhC1JRUD4kiYtnRe0Oy0lxsQ1Ny8zs/U3VgdO6E2bBWRQkcLonDkNWgoQq - QYoBtaJ3hVnCttiztbV1oZl9gIk7UYv/uZOBu4ADMgvOwTEghlcylOeVIKE8oLg4VnZQvvDOsWdTU9M8 - M/vPTfwHbHFwkydP7uCAzMwqe0ILYBvzcSFIKBaS25pWlrGqiHSHjgXfz5nZdzDxt2RVgUvWnZBMFji+ - iG3MGoQgCRQtx2090qoMqJy0Ym7kyJGPmNl3NAGu+L9aad0JXqTSXkzxsI0pHVqN25JoQcAKVa6h8sL5 - w6aHHnood6Fys8f6puLgtO6E4JCb8/F+NP3AtlAlGsov3Us/ZMiQaWZ2li3w/6lVgUvWnbB8QeC4V4Bt - dJ+hSjSUX9gSm+62227nm9n/yVQdOK07IW7D89GPpbENhyVUiYbyS4uE+vfvT4L5F6a/MPH/5sWK1p3g - iOg/2bTaltguVImG8kv/jbD55ptz3zfg+L/U4uCam5t/xgE5MF0k2RMlmJlEDVWioXxi+NGPIPTq1Yt/ - Vxa4NWBQqBi4LTkgeTTA4VG6P0oTqkhD+aSGYDEct1YNM+FVVjfGad0JwTZzcoDTQMpUT6giDZUXQw12 - BBY/7uPcfVrafvvtLzGTH2D6exOzA8UDcHfdCffDkfbSvBEtMFS5hv5f2IsLnNltOSC+rFdbfMABB8ww - c48y7WHqa+IPbotP67jrTkjLMHGqmQHCg1BlV2WRXWIIYb7SuQm/Ux0dHb+bOHHiwuHDh88eMGDAtN69 - e/Oby9yZAzTm4X5mImvC+FZ86YKVznUnhAGA0zJpnocqvyqJEIlFPgwfzm9Mdqq9vX3p+PHjPzr44IOf - 6tev3+Vmz4kmQB1nGmk6zPRbEy3tH0wbmXqbqv/3fa074UriipIHRH8dOpmVVXh/jE+kp/zxSZoyZcpX - J5xwwvzBgwc/summm/JbXPy/N2tIADXCdKhpf9PepoEmZgL4C+nNTbS075mKj21u0boT4je6R57rp6JW - ZuGIVRqfWltbvzzmmGPm7bnnnveut956Z5q5BIp/0v8f03+ZfmP6N9MuJiZJ/9bEOEbrYvqGxa+0MrpH - Jk+r6iI7izX3Z6gkV5rSXUykhk52RRa9CWtryo1PaNKkSYtHjhw5d+DAgbfb+ESWo8l0gomfmQfUIaYh - Jv7z7Z9N/IXYT0y0KEAxQcryckD1NNG6agPKL1p3QqZE6yk5sdDJr0iqND7hSJx88skLDz/88Bd32GEH - bqafZAIUf3052nSEiT9dx6lgjCJwZpza2sSvAv2liSUIgPquiRbVdaD8Yv32bZwI9wlo3oiuI2SMepWS - 41njU1tb29IJEyYsOOSQQ57eaqutLrNTbzaRghpj+l/T4aaDTPuZ/tVEMhgv8MemzUxkO4i/1jJ1Pyi/ - GLirOTGSylomzfxcyED1opjxCUdi7Nix7+2///4zN9poI7LygBpv+j8TqSfWNw41cVvvv5iYbiE43sq0 - qYlEsA+qdmNUtUXrTriJn+6S54wDIYMtLxGaMD5xcZUbn3Akjj/++Lf32Wef6X369Jlqp3aKSaCIo0g3 - HWjax7SbidTTtqYtTfxrImmodU38xlYvE0ng+gHlF6074cZy5SnpNkMG7C7h3eLllhufkDkSn40ePfqN - 3Xff/Z4ePXoQ6AKKGOp4k2IoUky/Mu1qYsnA35m4jXcTE7PQLAUniwEocofEV/UJyi9ad8LYoBXM5NpC - Bu0KueMTXXRofMKROOWUUxaNGDHilR133JF/qm8xEeyeZCKGOsr03yaC3X838dcnLMohhvpr08Ym4iju - kgEUf2+5YoHyi9adkKPUzzlwtYeMXAsxPpFeY3xiXYsLSDJQy5qamj4ZNmzY7G222eYaq+apJjeGCgW7 - rFfkL0+IoX5oIoYCFEEvrvmKDcovWndCjlKGJP0VMnoRMT5xvKzxCY9v3LhxHw0dOnTWFltswf1jPqg8 - wa5A4fFVn1qq12LghmA8jKobE5gpCEGIUcz4lHp884cMGfLY+uuvT+oIUHmCXTeGUlZi+bnmy6PYIL8n - xsTIMrRudKwkjU/MljM+6cYGX9YdLznuuOPe2muvvR5cZ511SB2tWMFuPZaJEyfuiHFxCuQYkB4KgWJp - A+MTYUO58Qnh8Y0aNeq1XXfd9a4111wT13zFDnbrsZx00kk/NGfga9fw+k+4mPEJGfxPjzzyyDk77bTT - rT179uyww65cwW49lkGDBvU05+Alg/dVCIovXHM8vsMOO2z2dtttd53FUJPtMCt3sFunpYcFsoPMSZlt - UJI/kXDV3t6+jMlC8/ie2nrrra+0zxNDrVrBbp2W1Xv16rWmOQ6DDNAsG58W2Pj00t57733/ZpttdrG9 - 3wh267gwpvzAAOIg0GpwHnDL8fgawW4dF4yMU4CTQMsBDvETrvnOplU72K3zgnPA+IN3RysifsI1bwS7 - y6WsttrvAQMfgh5KTfoXAAAAAElFTkSuQmCC - - iVBORw0KGgoAAAANSUhEUgAAAG4AAABuCAYAAADGWyb7AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO @@ -394,163 +278,440 @@ 1xe7R6QZxv8DiyxXTC5xLO8AAAAASUVORK5CYII= - + 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 - Y/eRFMP4//ZFmX/edOjbAAAAAElFTkSuQmCC + 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 + 1xe7R6QZxv8DiyxXTC5xLO8AAAAASUVORK5CYII= + + + + + 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 + y6WsttrvAQMfgh5KTfoXAAAAAElFTkSuQmCC + + + + + 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 + 1xe7R6QZxv8DiyxXTC5xLO8AAAAASUVORK5CYII= @@ -1013,6 +1174,165 @@ 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 + Y/eRFMP4//ZFmX/edOjbAAAAAElFTkSuQmCC @@ -1056,13 +1376,13 @@ gg== - + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEU9AAdPAAlUAApfAAtoAAxvAA18 - AA6BAA+MABCRABGeABKhABOlAxaoBhmrCButCh2wDSC2FCe6GCu7Gi2+HTDCJTfGKz3ILkDLNEbNN0nS - RFTUR1fVSVnXT1/ZUmLcW2rdXWzgaXbicH3mfIjohpLpjJfrkZvun6juoarwqbLytbz1xMr2x8330NT5 - 3eD64+b87O798vP+9fb++fn//Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEVDQwBVVQBbWwBmZgBvbwB3dwCD + gwCHhwCJiQCSkgCWlgCYmACkpAWnpwerqwqurg2xsQ+zsxG2thS8vBu/vyDAwCHDwyXHxyvLyzHMzDTP + zzrR0T3W1knY2E3Y2E/a2lXc3Fne3mHf32Pi4m7k5HTn54Dp6Yrq6o/s7JXu7qLv76Xw8K3z87j19cb2 + 9sn399L5+d76+uT8/O39/fP9/fb+/vn+/vz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -1072,24 +1392,24 @@ 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 + H6YwJdAl+mOdAAAAAElFTkSuQmCC @@ -1128,13 +1448,13 @@ CV4lp0vtr3kAAAAASUVORK5CYII= - + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEU4ADhIAEhNAE1XAFdfAF9mAGZy - AHJ2AHZ3AHeAAICEAISRAJGSAJKUAJSYAJibAZueA56gBaCjCKOpD6mtE62uFa6xGLG1ILW5Jrm7KLu/ - L7/AM8DHP8fJQ8nJRsnMS8zOT87RWNHSWtLWZdbZbNndet3ghODiieLjj+PnnOfooOjqqOrttO3xw/Hy - xvL0z/T33Pf44/j77Pv88fz99f3++P7+/P7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEVgBgB9CACECQCXCgCkCwCwDADE + DQDMDgDeDwDlDwD/AAD/AAL/AAX/BAD/AA3/CwD/DgD/AxP/BRX/DB35EQD+EAD/ESL/Hy3/IzL/JTT/ + LDv/Lj7/OUj/PUv/SVX/U2D/YGv/bXn/c37/eYL/i5T/jJX/lqD/pav/t73/u8L/xsn/1tn/3eD/5+n/ + 7/D/9PT/+Pj//Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -1144,464 +1464,24 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABn1z/qAAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF - WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA7NJREFUSEt9lQ27ekwQxrdIWkURWSJhhVbt - H6vv/82eWb2cOi/P3bmunMv8dmbuGUK3vyTaU3p9XL/pT6BjxLbdsHr8+9IfQNccXCthqeuS7DPNr4Dg - x83SPl07KIu4bvSe5jega3Z45VasG4ZBDE1CPELbx73fgLbGy1VYVS3Ej2opISRl97s/gIEfZksjOUFB - LwnBUkL2YzM/gLZYYYtSyvinrjRM5P1vQF/vVtilWUZZ89R1FO+TvYz4AMCdhY5JlqYpZaxib2qEiH4A - 0h19tU8i+GTVqXpTwzux/w70BdY0K4qiUH7o6U2yoWPwDWjrmaZ54UsJdP4QVNSsF+aGQ9gLaAus6v67 - kuyhilUnvO55SfjwBNp6o6kr33uXnyQJtC+7oRMsRM/ji7gD0h1Vsx+BL0UJdJ9U9EQn65voLjyGmiTQ - NZuZqtvOXd7j23FkJynNKF3iQXTlmcfdCLT1Yq7pnj0q9Bw7vF9KIKJQ1BqjxTHPz5cYTkfSnUWBcZs5 - lmX7uqqqBlyBPOgbRBY7U0HzGAAyAtdMmRMNDwNPnVCXQGgbIMvzkiSMXBS07XmukBfADoBPwQXenAwD - 67ozxhu2E0FN7qSA+rmJ4ry85OQMQB2geT7FXXdlJ8+2rMjAUoadwiyWqICTztxUzLwsIccFtQFSANCH - tqmqLPSpfwfsCIz1J2shLuAPQWael2dIgQ5IiU0ABGcVreDP8z1D160EDMbrGfgD7XIyMaGmmMQdWiNl - YZpTW1ZE0yi7QlmOl/hg62yzMxfIjGUGrJgE4huBgglSFGW64k11ypJIzgE6bsBWWc6/WLkbGmA4Nq67 - G8q2GClbdarvK5oloe85FliVGsZk3cL65DNFAjmJg92O9WAryw5Bcdhq06nup1HoO7YEIjxxO9HBcBcS - KC8XUhQMNuOG+itrOFAS0WQCG1zSQ23CBAcf4w0i0p+YtP/gfDk40fdDd63vCLZlAgB0pOzkrOIddJ2X - hJTdIOMBuEsiwVjYOO0Q6xPYBglIfwjJn2/YJwBL2xQjokIC1ceeBrUAcAzg4STHRjzCvoDb0ElkCQhk - cDQNhlteyhiQ3eH6jH8HAGlZcQBEVS1NXUpAtn2s63bsd9QHIH92mMwCOx4EchtyWJ+yf/Q76hsAbycu - s2yL+jCbk1iuj3y5fOkHAK1wVjPeZFt4sAiJx3F96ScASN8JeHIP28XcjNnrp+Su34BRA4dZBjvWvtUv - 9ScAs+R13XzWA/ofALrp+m/n327/AQleJadL7a95AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUlEg8wFxMzGRQ5HBc/HhlDIBpL - JB1NJR5OJh5UKCFXKiJfLiVgLiVhLyZjMCdmMShoNCpqNixtOS90PzZ4Qzp5RTx8SD+BT0aFVEuHVk2M - XFSOX1eXamKabWWbb2efdGyhd2+mfneogHmuiIGzjoe6mJPAoJvDpJ/FqaTNs6/PtrLTvLjZxsLh0c7j - 1NHn2tjt5OPx6ej28fD49PT69/f8+vn9/fz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQA84tAAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF - WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA7NJREFUSEt9lQ27ekwQxrdIWkURWSJhhVbt - H6vv/82eWb2cOi/P3bmunMv8dmbuGUK3vyTaU3p9XL/pT6BjxLbdsHr8+9IfQNccXCthqeuS7DPNr4Dg - x83SPl07KIu4bvSe5jega3Z45VasG4ZBDE1CPELbx73fgLbGy1VYVS3Ej2opISRl97s/gIEfZksjOUFB - LwnBUkL2YzM/gLZYYYtSyvinrjRM5P1vQF/vVtilWUZZ89R1FO+TvYz4AMCdhY5JlqYpZaxib2qEiH4A - 0h19tU8i+GTVqXpTwzux/w70BdY0K4qiUH7o6U2yoWPwDWjrmaZ54UsJdP4QVNSsF+aGQ9gLaAus6v67 - kuyhilUnvO55SfjwBNp6o6kr33uXnyQJtC+7oRMsRM/ji7gD0h1Vsx+BL0UJdJ9U9EQn65voLjyGmiTQ - NZuZqtvOXd7j23FkJynNKF3iQXTlmcfdCLT1Yq7pnj0q9Bw7vF9KIKJQ1BqjxTHPz5cYTkfSnUWBcZs5 - lmX7uqqqBlyBPOgbRBY7U0HzGAAyAtdMmRMNDwNPnVCXQGgbIMvzkiSMXBS07XmukBfADoBPwQXenAwD - 67ozxhu2E0FN7qSA+rmJ4ry85OQMQB2geT7FXXdlJ8+2rMjAUoadwiyWqICTztxUzLwsIccFtQFSANCH - tqmqLPSpfwfsCIz1J2shLuAPQWael2dIgQ5IiU0ABGcVreDP8z1D160EDMbrGfgD7XIyMaGmmMQdWiNl - YZpTW1ZE0yi7QlmOl/hg62yzMxfIjGUGrJgE4huBgglSFGW64k11ypJIzgE6bsBWWc6/WLkbGmA4Nq67 - G8q2GClbdarvK5oloe85FliVGsZk3cL65DNFAjmJg92O9WAryw5Bcdhq06nup1HoO7YEIjxxO9HBcBcS - KC8XUhQMNuOG+itrOFAS0WQCG1zSQ23CBAcf4w0i0p+YtP/gfDk40fdDd63vCLZlAgB0pOzkrOIddJ2X - hJTdIOMBuEsiwVjYOO0Q6xPYBglIfwjJn2/YJwBL2xQjokIC1ceeBrUAcAzg4STHRjzCvoDb0ElkCQhk - cDQNhlteyhiQ3eH6jH8HAGlZcQBEVS1NXUpAtn2s63bsd9QHIH92mMwCOx4EchtyWJ+yf/Q76hsAbycu - s2yL+jCbk1iuj3y5fOkHAK1wVjPeZFt4sAiJx3F96ScASN8JeHIP28XcjNnrp+Su34BRA4dZBjvWvtUv - 9ScAs+R13XzWA/ofALrp+m/n327/AQleJadL7a95AAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUaBSohBzYjBzkoCEEsCUcvCUw0 - ClQ3DFg3DFk+EGBBEmRCE2VLG29MHHBNHXJRIXZUI3lXJnxZKH5cK4FiMYdmNotnN4xrO49xQZV1Rpl4 - SZt9T59/UqGIXamLYauMYqyRaLCUbLKac7ebdbiif76nhcGvkMe1mMy5nc68otHFrtfHsNjMt9zTwOHc - zufe0Ojj2Ozr4vHu5/T07/f39Pr59/v7+fz9/P7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs2G/6AAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF - WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA7dJREFUSEt9lYuWsjoMhasgIqCgIEhBELkJ - WLQ/pfj+T3ZSvIwzzpztrCWzyNckOwHR7S/x7pReH9dv+hNgBNu2G9aPf1/6A2DtwbUSkrouzr6n+RXg - 9LhZ2qcrg7Kw60bvaX4DWLvTV25N2DAMfGgT7OGie9z7DegafbkK67qD+FFdgTFOyf3uBzDQw2xpJCco - 6CXOSYrxfmzmA+jKlWYVRUHod12LMBH3fwB9s1tpbpFlBWmfuo6ifbIXEd8AcGehajhL07QgpCZvajmP - PgDhjrraJxF8svpUv6mljO9/An2pK4oVRVEoPsXpTaKhY/AD6JqZonjhSwl0/hBU1K4X5oZC2AvoSk1W - /Xcl2UM1qU/6uqcVpsMT6JqNIq98711+kiTQvuimmOic9zS+8Dsg3JEV+xH4UpRA90ldnIrJ+sbZhcZQ - kwBYu5nJqu3c5T2+HUd0khZZUSz1gbPqTGM2Al2zmCuqZ48KPccO75cCiAooaq2jxTHPz5cYTkfCnUWp - aV3mWJbtq7IsG3AF8qBvEF7sTAnNYwDwCFwzaY4VbRho6oSqAELbAFmelyRh5KKg685zCb8AcgB8qnFO - 25NhaKrqjPGG7URQkzspoX5qojivLjk+A9AEaJ5PNcau5OTZlhUZmpBhpzCLJSrhpDM1JTOvKshxQV2A - JADUoWvrOgv9wr8DdgTG+pM15xfwByMzz6szpEAHJMUmAJySuqjhz/M9Q1WtBAzW1zPwB9qleGJCTTGO - GVojaWGaU1tUVKRRdoWyHC/xwdbZZmcukBmLDLpkYohvOQomSJKk6Yq29SlLIjEH6LgFW0U5/2Lpbmig - w7Fxw24o2+pI2spTdV8XWRL6nmOBValhTNYdrE8+kwSQ4zjY7UgPtpLsEJSHrTKdqn4ahb5jCyDSJi7j - DIa7EEB1ueCyJLAZN9RfSUuBEogiEtjgkhoqE8Ip+BhvEBb+xLj7B+eLwfG+H9i1uSOaLRIAoCJpJ2YV - 76DrvMK4YoOIB+AugQRjYeO0Q02dwDYIQPiDcf58wz4BWNq2HBEZEsi+5ilQCwDHAB5OfGz5I+wLuA1M - IEtAIIOjKDDc6lLFgOwO12f8OwBIR8oDILJsKfJSAKLtY9N0Y7+jvgHiZ4eILLDjQSC2IYf1qfpHv6N+ - APB2oiLLtmwOszmOxfqIl8uXPgBohZKG0DbbwoOFcTyO60ufACA94/DkHraLuRmT10/JXb8BowYKswx2 - pHurX+hPAGZJm6b9Xg/ofwDohvU/zr/d/gOjFSyLIyVhmAAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEVDQwBVVQBbWwBmZgBvbwB3dwCD - gwCHhwCJiQCSkgCWlgCYmACkpAWnpwerqwqurg2xsQ+zsxG2thS8vBu/vyDAwCHDwyXHxyvLyzHMzDTP - zzrR0T3W1knY2E3Y2E/a2lXc3Fne3mHf32Pi4m7k5HTn54Dp6Yrq6o/s7JXu7qLv76Xw8K3z87j19cb2 - 9sn399L5+d76+uT8/O39/fP9/fb+/vn+/vz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyxEXdAAAAGHRFWHRTb2Z0d2FyZQBQYWludC5ORVQg - djMuMzap5+IlAAADtElEQVRIS32VD7tyTBDGt0hCFJHlkLBCq/axVt//m72z6nTq/HnvznXlXOa3M3PP - ELr9JdGf8uvj+kV/Apxi1/Xj5vHvU38AvDv4TkZz38fFe5pfAcGOW8s9XTmUhX0/eU3zG8C7vbn2G8rH - cRRjl+EAk/5x7zegb01rHTdND/GTeoIxzun97g9gZIeFZWUnKOgpIWiO8cfUzA+gr9aGQwih7F1XEmfy - /jdgaPdrwydFQWj3qeskNmQfMuINAHdWuoGLPM8JpQ19USdE8gOQ7ujrjyyBT9Gcmhd1jIuP78BQmZrm - JEkSyw85vUg2dIy+AX270LQgfiqDzh+CirrNyt4yCHsCfWWoeviqrHiooc3J3Aysxmz8BPp2q6nrMHhV - mGUZtC+7ITNTiIGlF3EHpDuq5j4Cn0oy6D5ryInMNjfBLyyFmiTAu+1C1V3vruDx7Xmyk5wUhFjmKHh9 - ZimfgL5dLTU9cCfFgefG90sJJASK2phodSzL8yWF05F0Z1UZRl94juOGuqqqFlyBAugbhFd7W0HLFAA8 - AddCWWLNGEeWe7Eugdi1QE4QZFmc+Cjq+/NSwU+AHgCfG0Kw7mRZhq57U7zlegnU5M8qqJ/ZKC3rS4nP - ALQRWpZzg/MrPQWu4ySWIWW5OczCQhWcdGa2Ypd1DTkuqI+QAoA+9l3TFHFIwjvgJmBsONsIcQF/MLLL - sj5DCnRASmoDIBhtSAN/QRhYuu5kYLC5WYA/0C7DMxtqSnHK0QYpK9ueu7IikifFFcrygiwEWxfbvb1C - diozmIqNIb4TKJohRVHma9Y1pyJL5Byg4w5sleX8S5W7oZEJx6Ytv6FiZyJlp871j4YUWRwGngNW5ZY1 - 2/SwPuVCkUCJ02i/pwPYSotDVB122nyuh3kSh54rgcSY+VxwGO5KAvXlgquKwmbc0HClHQNKIppM4IJL - eqzNqGDgY7pFWPqT4v4fnC8HJ4Zh5Nf2jhiuTACAjpS9nFW6h67LGuOajzIegLskEk2FTdOODX0G2yAB - 6Q/G5ecb9hOApe2qCVEhgRoagQa1AHCM4OHEx048wr6A28glYgECGTxNg+HWlzoFZH+4fsa/AoD0tDoA - oqqOploSkG0f27af+p30BsifHSqzwI5HkdyGEtanHh79TvoGwNuJySy7qj0sljiV6yNfLl/6AUArjLaU - dcUOHiyM02lcX/oJADJwAU/uYbda2il9/pTc9RswaWQwy2hP+5f6pf4EYJasbbv3ekD/A0A3fPh2/u32 - H6YwJdAl+mOdAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEVMGwBhIgBoJAB2KQCALQCKMACZ - NgCfOAChOACtPACyPgDAQwDERADJRgDPSADRSQDUSgDZTwXdUwneVQvhWA7kXhbnYxzpZiDsaybtbinx - eDfzezrzfDz1gUP2hEb4ik/4jFH6lF37mmX9onL9qn3+roP+son/vJf/vZr/w6P/y7D/1sD/2MP/3sz/ - 59r/7OH/8er/9vH/+PX/+vj//fz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD1zQOUAAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF - 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 - RU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFRFqS - R1yUSF2VSV6WSl+XS2CXTGGYV2qdXnGhYXOkZHalZ3inbn+qd4arjo+Pi5m7jJm6kJ29rrO5nafAo67I - r7jPsLnRt7/Vub/QusHVvMPWxsjKxcnNysvMyczQy8/Vzc/Ryc/dzNDW1dXW1djc1dnd2trb29zc3N3e - z9Ti3N/k3uDh3+Ll3uHp3+Lp4eLi4OLm5ubm5+fo6enq6+vs7O3t7e7u6uzw7e7x8vP08vP29PT09fX1 - 9vb2+Pj4+fn5+Pn6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARbOMIgAAAAlwSFlzAAAO - vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuND6NzHYAAAB/SURBVBhXY+BD - Bgx81hBgZ29rDeIJgYCcMK+WDZgnLy+vZMHOIGEL5SkZiDJwGUFUquqoWHIwSqmDeTKKImaSzFx2ymCe - Ng+jJjeruK0GmKegy8TMyulgrQ/mSZvzs7CJ2dsagnmyanoCglamJsZgnrW1jb2dDcg9QB4C8PEBAFWP - FTAV/UJaAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFjo+P - rrO5r7S6sre8tLm9uLu/u77BvL/CwcPFwsTGxsfIysvMzM3Ny8/VzdHWzdHX1NTV1NXW0NPY0NTZ0tXa - 1Nfb1djc29vc2Nve2tzf3N3e3d/h4OHh4OHj4eLi4eLj4uPk4+Tl5OXl5ebm5ufn6Ojo6enp6enq6urq - 6uvr6+vs6+zs7Ozs7e3t7+/v8PDw8vLy9PT09fX19vb2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkW0KowAAAAlwSFlzAAAO - vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuND6NzHYAAABrSURBVBhXXcdt - F4EwFADgRaSIUmJ6w1rycnVn//+/mbvj7BzPt4f9Uc53Hpn4c7vY2BZ88ds6P5SnyG6T7Xgr5Io2LXgt - nwApbVZehhciHmnBuQdUb9XQwh5GpbUWtGWyr7rb436lOWYOYx8cDA/QsvGKEgAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEU9AAdPAAlUAApfAAtoAAxvAA18 - AA6BAA+MABCRABGeABKhABOlAxaoBhmrCButCh2wDSC2FCe6GCu7Gi2+HTDCJTfGKz3ILkDLNEbNN0nS - RFTUR1fVSVnXT1/ZUmLcW2rdXWzgaXbicH3mfIjohpLpjJfrkZvun6juoarwqbLytbz1xMr2x8330NT5 - 3eD64+b87O798vP+9fb++fn//Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - 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 - H6YwJdAl+mOdAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUAMQAAPwAAQwAATAAAUwAAWQAA - YwACZwICaAIGcAYJdAkQgBARgRETgxMWhxYZihkbjRsdjx0gkiAnmCcrnCstnS0woDA3pTc9qT0/qz9F - r0VJsUlUuFRYulhau1pfvl9jwGNrxGttxW13ynd9zX2J0omS1pKX2Jec2pyo36ir4Kuy47K9573K7MrN - 7c3V8NXg9ODm9ubu+e7z+/P2/Pb5/fn8/vz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6Ra9RAAAAGHRFWHRTb2Z0d2FyZQBQYWludC5ORVQg - djMuMzap5+IlAAADs0lEQVRIS32VDbt6TBDGt0haRRFZImGFVu0fq+//zZ5ZvZw6L8/dua6cy/x2Zu4Z - Qre/JNpTen1cv+lPoGPEtt2wevz70h9A1xxcK2Gp65LsM82vgODHzdI+XTsoi7hu9J7mN6BrdnjlVqwb - hkEMTUI8QtvHvd+AtsbLVVhVLcSPaikhJGX3uz+AgR9mSyM5QUEvCcFSQvZjMz+Atlhhi1LK+KeuNEzk - /W9AX+9W2KVZRlnz1HUU75O9jPgAwJ2FjkmWpillrGJvaoSIfgDSHX21TyL4ZNWpelPDO7H/DvQF1jQr - iqJQfujpTbKhY/ANaOuZpnnhSwl0/hBU1KwX5oZD2AtoC6zq/ruS7KGKVSe87nlJ+PAE2nqjqSvfe5ef - JAm0L7uhEyxEz+OLuAPSHVWzH4EvRQl0n1T0RCfrm+guPIaaJNA1m5mq285d3uPbcWQnKc0oXeJBdOWZ - x90ItPVirumePSr0HDu8X0ogolDUGqPFMc/PlxhOR9KdRYFxmzmWZfu6qqoGXIE86BtEFjtTQfMYADIC - 10yZEw0PA0+dUJdAaBsgy/OSJIxcFLTtea6QF8AOgE/BBd6cDAPrujPGG7YTQU3upID6uYnivLzk5AxA - HaB5PsVdd2Unz7asyMBShp3CLJaogJPO3FTMvCwhxwW1AVIA0Ie2qaos9Kl/B+wIjPUnayEu4A9BZp6X - Z0iBDkiJTQAEZxWt4M/zPUPXrQQMxusZ+APtcjIxoaaYxB1aI2VhmlNbVkTTKLtCWY6X+GDrbLMzF8iM - ZQasmATiG4GCCVIUZbriTXXKkkjOATpuwFZZzr9YuRsaYDg2rrsbyrYYKVt1qu8rmiWh7zkWWJUaxmTd - wvrkM0UCOYmD3Y71YCvLDkFx2GrTqe6nUeg7tgQiPHE70cFwFxIoLxdSFAw244b6K2s4UBLRZAIbXNJD - bcIEBx/jDSLSn5i0/+B8OTjR90N3re8ItmUCAHSk7OSs4h10nZeElN0g4wG4SyLBWNg47RDrE9gGCUh/ - CMmfb9gnAEvbFCOiQgLVx54GtQBwDODhJMdGPMK+gNvQSWQJCGRwNA2GW17KGJDd4fqMfwcAaVlxAERV - LU1dSkC2fazrdux31Acgf3aYzAI7HgRyG3JYn7J/9DvqGwBvJy6zbIv6MJuTWK6PfLl86QcArXBWM95k - W3iwCInHcX3pJwBI3wl4cg/bxdyM2eun5K7fgFEDh1kGO9a+1S/1JwCz5HXdfNYD+h8Auun6b+ffbv8B - CV4lp0vtr3kAAAAASUVORK5CYII= - - - - - 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 - SUwPzmIlAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUAE1MAGWsAGnEAHoEAIYwAI5cA - J6cAKK0AKa4AK7kALL8ALcAGNc0HNs4JONAMO9UPPtgRQNwTQt4WReEdTOYiUekjUuomVe0tW/EzYPQ2 - Y/U9aPhAa/lLdf1PeP5Rev5Xfv9bgf9jh/9lif9wkf93l/+DoP+Mp/+Rq/+Wr/+juf+mu/+vwf+5yv/H - 1P/K1v/T3f/e5v/l6//t8f/y9f/1+P/5+v/8/f////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcxoJWAAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF - 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 + btT44/zb7T/qbgW9TfW/8QAAAABJRU5ErkJggg== @@ -1640,13 +1520,13 @@ H6YwJdAl+mOdAAAAAElFTkSuQmCC - + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEVgBgB9CACECQCXCgCkCwCwDADE - DQDMDgDeDwDlDwD/AAD/AAL/AAX/BAD/AA3/CwD/DgD/AxP/BRX/DB35EQD+EAD/ESL/Hy3/IzL/JTT/ - LDv/Lj7/OUj/PUv/SVX/U2D/YGv/bXn/c37/eYL/i5T/jJX/lqD/pav/t73/u8L/xsn/1tn/3eD/5+n/ - 7/D/9PT/+Pj//Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUlEg8wFxMzGRQ5HBc/HhlDIBpL + JB1NJR5OJh5UKCFXKiJfLiVgLiVhLyZjMCdmMShoNCpqNixtOS90PzZ4Qzp5RTx8SD+BT0aFVEuHVk2M + XFSOX1eXamKabWWbb2efdGyhd2+mfneogHmuiIGzjoe6mJPAoJvDpJ/FqaTNs6/PtrLTvLjZxsLh0c7j + 1NHn2tjt5OPx6ej28fD49PT69/f8+vn9/fz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -1656,224 +1536,246 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADRANgHAAAACXBIWXMAAA68AAAOvAGVvHJJAAAAGnRF - WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS4xMDD0cqEAAAOkSURBVEhLfZWNlqo6DIWrILUCIoUiiEAR - sGgPpfj+D3dT/BlnnLnbWUtmka9JdgKi21/Sw6m4Pq7f9CegBA0CN2kf/770B6D6g8tyUbguLb+n+RXQ - 8riLg9NVQVnUddP3NL8Bqt8S5rZCTdOkpz6nHuXD495vwNCRmCVtO0D8rIFTSgtxv/sBTPKwiuP8BAW9 - pLUoKN3PzXwAQ80I45wL+V1XnuTm/g9g7LaMuLwsueifus6SY743Ed8AcGeNCS2LouBCtOJNvdbpB2Dc - wWyfp/Ap21P7pl4qvf8JjDVxHJamaWI+/PQm09Ax+gEM3cpxvOSlHDp/CCrq2ZrtJIS9gKEmNg7flZcP - taI9ETbKhsrpCQzdzrFZ6L0rzPMc2jfd8AXRepTZRd8B447tBI/Al9Icus9bfuILdtPqIjOoyQCq361s - HPh3eY9v3zedFLzkPCaTVs1ZZmoGhm6NHewFsxLPD5L7pQFSDkUxgtbHqjpfMjgdGXfWNSFD6TMWhNi2 - 7RiuQB70DaLrLbMQzgCgM3AtLUwdMk2y8BNsgCSIQczz8jxJXRQNwxlb9AWIA+BLcEH2pzgmGPtzfBz4 - KdTkLmqoXzKUVc2lomcAugjhakmUuoqTFzCWxsQoDgqYRYxqOOksmcWqpoEcFzREyAIAT0PftmUS8vAO - BCkYGy6Y1hfwhyJWVc0ZUqADsjIGgJai5S38eaEXY8xyMJiwFfgD7Uq6YFBTRjOFGLLWjC0DUxEv0vIK - ZfleHoKtq92WrRHLTAZiMQrxvUbRAlmWtWSyb09lnpo5QMc92GrK+ZdZd0MjAsdmnbqhckOQtbGXeN/y - Mk9Cz2dgVRHHCzbA+lQrywAVzaLtVoxgqygPUX3YOMslDos0Cf3AAClZuEorGO7aAM3lQutawGbc0HgV - vQTKII5JEIBLOHEWQkvwMdshavzJ6PAPzjeD0+M4qWt3R0hgEgCAkbU1s8q20HXVUNqoycQDcJdBormw - edoJwQvYBgMYfyitnm/YJwBL29czYkMCOySeA7UAcIzg4aTHXj/CvoDbpAwSAwIZfMeB4TaXJgNke7g+ - 498BQAZRHwCxbebYsQFM28euG+Z+Z30DzM+OMFlgx6PIbEMF69OMj35n/QDg7SRNlk3dHVaYZmZ9zMvl - Sx8AtCJFJ2RfbuDBojSbx/WlTwCQUWl4cg+bNWaZeP2U3PUbMGuSMMtoK4a3+o3+BGCWsuv67/WA/geA - btT44/zb7T/qbgW9TfW/8QAAAABJRU5ErkJggg== + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADQA84tAAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF + WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA7NJREFUSEt9lQ27ekwQxrdIWkURWSJhhVbt + H6vv/82eWb2cOi/P3bmunMv8dmbuGUK3vyTaU3p9XL/pT6BjxLbdsHr8+9IfQNccXCthqeuS7DPNr4Dg + x83SPl07KIu4bvSe5jega3Z45VasG4ZBDE1CPELbx73fgLbGy1VYVS3Ej2opISRl97s/gIEfZksjOUFB + LwnBUkL2YzM/gLZYYYtSyvinrjRM5P1vQF/vVtilWUZZ89R1FO+TvYz4AMCdhY5JlqYpZaxib2qEiH4A + 0h19tU8i+GTVqXpTwzux/w70BdY0K4qiUH7o6U2yoWPwDWjrmaZ54UsJdP4QVNSsF+aGQ9gLaAus6v67 + kuyhilUnvO55SfjwBNp6o6kr33uXnyQJtC+7oRMsRM/ji7gD0h1Vsx+BL0UJdJ9U9EQn65voLjyGmiTQ + NZuZqtvOXd7j23FkJynNKF3iQXTlmcfdCLT1Yq7pnj0q9Bw7vF9KIKJQ1BqjxTHPz5cYTkfSnUWBcZs5 + lmX7uqqqBlyBPOgbRBY7U0HzGAAyAtdMmRMNDwNPnVCXQGgbIMvzkiSMXBS07XmukBfADoBPwQXenAwD + 67ozxhu2E0FN7qSA+rmJ4ry85OQMQB2geT7FXXdlJ8+2rMjAUoadwiyWqICTztxUzLwsIccFtQFSANCH + tqmqLPSpfwfsCIz1J2shLuAPQWael2dIgQ5IiU0ABGcVreDP8z1D160EDMbrGfgD7XIyMaGmmMQdWiNl + YZpTW1ZE0yi7QlmOl/hg62yzMxfIjGUGrJgE4huBgglSFGW64k11ypJIzgE6bsBWWc6/WLkbGmA4Nq67 + G8q2GClbdarvK5oloe85FliVGsZk3cL65DNFAjmJg92O9WAryw5Bcdhq06nup1HoO7YEIjxxO9HBcBcS + KC8XUhQMNuOG+itrOFAS0WQCG1zSQ23CBAcf4w0i0p+YtP/gfDk40fdDd63vCLZlAgB0pOzkrOIddJ2X + hJTdIOMBuEsiwVjYOO0Q6xPYBglIfwjJn2/YJwBL2xQjokIC1ceeBrUAcAzg4STHRjzCvoDb0ElkCQhk + cDQNhlteyhiQ3eH6jH8HAGlZcQBEVS1NXUpAtn2s63bsd9QHIH92mMwCOx4EchtyWJ+yf/Q76hsAbycu + s2yL+jCbk1iuj3y5fOkHAK1wVjPeZFt4sAiJx3F96ScASN8JeHIP28XcjNnrp+Su34BRA4dZBjvWvtUv + 9ScAs+R13XzWA/ofALrp+m/n327/AQleJadL7a95AAAAAElFTkSuQmCC - + - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFTExM - WFhYW1tbYGBgY2NjZGRkZWVlZmZmZ2dnaWlpampqa2trbW1tbm5ucHBwcXFxcnJydHR0dXV1dnZ2d3d3 - eXl5e3t7fX19f39/gICAgYGBgoKCg4ODhISEhYWFhoaGh4eHiIiIiYmJioqKi4uLjIyMjo6Oj4+PkJCQ - kZGRkpKSk5OTlJSUlZWVlpaWl5eXmJiYmZmZmpqam5ubnJycnp6en5+foKCgo6OjpKSkpqamp6enqKio - qampqqqqq6urrq6usLCwsbGxsrKys7OztLS0tbW1tra2t7e3uLi4ubm5u7u7vLy8vb29vr6+wMDAwcHB - wsLCw8PDxMTExcXFxsbGx8fHyMjIycnJy8vLzMzMzc3Nzs7Oz8/P0NDQ0dHR0tLS09PT1NTU1dXV1tbW - 19fX2NjY2dnZ2tra29vb3Nzc3t7e39/f4ODg5eXl5ubm5+fn6Ojo6enp6urq6+vr7e3t7+/v8PDw8vLy - 8/Pz9PT09vb29/f3+vr6+/v7/v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/DPJbQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAABlUlEQVQ4T52T - 6zcCQRTAFxEljzxC2UjYapXXrrdED1t6SFa02tqdDSVKQp7/ui1z6NtOfp/u3Ht+M3PuuRcDTWR8IRGG - aDTZvGcjXwgFUi1c8GeztvXbz6+vJy6YkGBKkV/7ZGIPPL/JvNduImmYVALa6fUpLyvel8rlh0rlNX/2 - k1Xkxz4xTXoZJgauZW4equFEI6tMw44OWrZ3ZXzJ8wuuIKxxsUZNGdlOrejmaYqmKIo+DMezafyuhto2 - DCQtGtpBuqxOh510+9mwU5u8zsKqElhumhh5SSzr2mfMJsId3HTkF8akS0QdEzpJ7UfZZ1s0DI9S7iXL - c/VUwxdYtL9jY1pX71sxk/IS4yQ9a+wOXWVUQTaMaE9iqh4xF/dRuGtVv18icCCQxAGsKoHx3qhFbfZs - 2g3jQzu1x51hvhjj0HsuSWIE79TjQ4b+nqMi0+WJoM5K3a7DB00dar21beX2bMvewpbCOZeEgFGl65vL - Fo7BfzY0J0TP9wb8DAfPSPza8vtA3LWlkHe7TpMtI+VggAQA31EYtvsm5zkIAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAPZklEQVRYR7WY + C2xU15nHzRvHgHkZv8fYHjyMPfY8PDOe5533nffDM/Z4jDGkCqoQasRGoG432SjbbJosu2IXNUoatYUC + baLQRM3mwTZdsumWog1ig0KVDW42CaAQWtKyJDYYMBj/93/GNwHHpIRq90g/Xc+dc+f87ne+8517XXK7 + ZppXuXBbTeOLh7SG4RMmafgdo3f4KDli8g4fNvmm0jmV39oiwyecmY8fqffHlJ/7/2nu0rqFzzRqXh73 + eIFcHy4HevCaK4cdnl48HCjg23I/HiIPkG+GSWQN7o8N4OHEWjyRGMTu5DpsSw6i3949vLnaE1Z+9v+2 + bSh3zBu2h15FJgMU+vFxOIeU2ouFag/KdEGUmSIos8Sm0hVHmT2BMlcKC73dqJYLaCI2Xx7fsKaH3zPH + f3K0XdpzuNW+5wg5qLXveVVj27O/pWvPKzy+YwjtOa6Pficx31qmaNy+PbzCvepTOYtz4SyQ6cN7cg9e + Mch4wRzFc84k9nky2EeZz/ERfxb7AjnsDuYw4E5jVlcEc7w5qDkDYakHv0gMAPm1QD+Pa0iuH8c5S09Z + kkhZk3jKn8e5UA7u0o6conH7Fio1lN5T6+g9L2X6Lvu6+y57M31XXekiV6R032XPzbCPgH0+Y1jKFEzt + 8oESSxilziwanDnsZVqgfz2w/m7CY2EdjgULKBiTaDUlkLJncMAeweblzkFF48vbRM3sBddV5c6rqhXf + GaurOnK9vmoIquohrKydpLFuCE31Q2hW3Rp1A1EdR135sfdXLLGVNTveKDHKmGfrxs7ozaKkbx32evNo + 0MqobY/Cxsi+7ohhX1Pg1qKoKlmKhrm90CzbDZ3qFEza67AaALsJcJoBtxXw2ACvA/A5gYCLuG/g52dx + 3k98dqC9CaipHEf1DENjub5u3krbUAnTZpecZxQHJ6MpRHvXYTOjvUTtQ/nqEAzGCN7zd+OkMTZdFLqS + f4Fh1iWY5wGWUsC6gCwEbOWT2BcrLCFLb2AjXcTK78zs17mI8NqO5WQloKobR80MgxhDXW5YVa7xnd7u + TuKinGCerqHwWlxIDcBt5OJbYUZpnRWPO1NAuh9j7vT0HEWoZBQ9JUD2JnJfIDuDzAS6SWYWf2w2kCLJ + OUBi7iQp3miS2OoAQzPQuJKiM4uiom1Y6Tdu0srfs1Z3vZJt8E5sN8XxUmcC7loJjrm6sYerHE+PeNM7 + L/m6/5brYPqqh6yIJjhIjJEJ8RjiwLKAIjKFQpQLUTJIAvxb4Od5gVscbxJ1qBhZDbBKPY7aG6KftfWV + binRmZg4JyoAo/cfUha71Z7xjXX2A9sqpRql2/SGMEXzFPVXM9GTlGWOhZifshYIN5JKwimVhSgj+5lk + gDchBF13MX95g0XR+fzMa6ytgFZD0VlTRHepnKFfdwSHzvpy7N/PHGWpygzgpDeJX0oZvKELb1C6Tm+I + UrSfoiI3O1cBESHJgYJcEMEqwnwNCjHio5yHchKlPMxnH6+Jso+W55P8nKCoW80c7gB0bRSdPUX0tLN7 + z9loP85H+nBB7sVpbwa7tAE8rHKOX3SlDo05041K1+kNMYquoWhXGWDktOWNvNM25iQjk6REjJEOcsF4 + KeGgjES5CCMY5eKKVzDavEbNm0gIUeLhtLv4G/qOaaLRFU5PoLzrbR6xl+XoD1I3thiiMC8yfvJQhb1C + 6XbrdkOUgxgplV9NUUpmKOFkZHMsPXGmgY0ytfMxtpj9uhhlmSs+uoJp0jApGuf5GPGxr2QBTKZx1E0V + FW19lSQlLMmJT1Kc9vQaHPZwJ9MGrm2us++3zmmtVLpNb5+LWhkxI0tLnhHqpWSGEbYTEyPYToHVnHI1 + p7yJ/Vp53kNRmfkbpGgzpz7GXI0Sv46yrLkWC0XnTBHdqXL6Xm8PvH2SckgUJnO0ewC/82fwM3sMj9S5 + /0SOClGRo3ZKODmd/Zzu/DJOPUUyPCYoH6N4hNErivH7ACMfqJ2cdi+PQlRICgLthBuDrWua6IfOzJ4z + kQLOkYvhXvyezwdPtwXw6ErX9Yuu9JtXnGm10nV6Ky6mAldznEJCysJpNHBlt/PYRoFWRlLLm9CQFkZz + FaOrFlCqhaj4fSP7RhjlMD8H9UwHpovTTtG5U0TjlS6/b7HteIg5uksXwRlXBpv1EVgXGc8/sMy+TOl2 + 64boDIqy9EQ4oJVHE9GTdsrqSJuAIq0KYoUXYX9xE23ExJsIC1FSLG0SF5RrHPVTRUUbrHJ74+bkxKfc + lcS0/5pp8NRq/7UtdfYXzHPbvnxBIULRPMVizMUYpzHI6fdylUvcEt08J+qki5F0Us5JUQePdso5iJOC + FiIqgawQ4ooP80Fbck+L6JN1dvcvdYE33xc5GmeO5iibHcC5QAYvMkcfqnXdo3Sd3hCeSVFGzcvc64tR + tmty+nwsMz4uFB/z00dZH9PDQyT2FbuRRGGJsh5xM7yxoiRxsv56+RDjZkS/IHrKmdn7QbiAP4b5tsAc + PRfI4rn2IB5rFDmaOsY62qJ0nd4QnjWKXg5sZskxcY9OMCJxrtwI/45w0UQY2TClxHYapJifEfSJMiTy + kddEa5irPB8SGwMRe72uHmion7YzDVS75fhS28lwpQu7WEfPuDPYKnK03PjJjirXbeqoTNEeilo4SLHg + M8d6WT+zfAJKcqXHGOkgC7yXck7iZdREwY8oBV/mNU0ULe5gxMEarCdV4jGvZFqOrq+WpLglxTo6Oe0H + vT14XOO7urXOvs86t2250m16K4rmGC0zF0Kx4HPKeykpSpMo+GmmQpTnujjltfNY8JmvNgqJgi9Klij4 + RVFGXoi6uIWauBXXVhefR5Vhim1Hrc12oM1/eIgPIsU6SlGxoM4HWUdtUXyr2vkncjQ0exRZDmTmVBop + l+fU9fKY5ufPCn4HIylWuZqSjTcXfBFtRTRA0QBFJd6UhbuTqu4qRafknMjRIeboR+RyJI9Pg1m81BHC + Pza5RR39rzFXerXSdXrjA8ekqI1iXg4uCn4fRXMkI2orpzfGyEVY7ItijLqfeSkKvph2N8818nq/Iuql + ZBefFVbVPc+9foYyTLE91hyIPVjn+XCwRsKutghOO9O4ryPMvd7wyXernV++fYpWFM1wgRR3HuadqKFt + XN1aHjWc7lXMX7GXi91HRE5INbC/iohjDc838JyPoj4hSkm7bgTaGq0yRLEVFquan1Dp/uatdvnpFx3p + ibE4H/P4PHqUj3yPawKXPzIndpyxJB47povcm7/LNk+57Ebjc+Uo0mIlEwsH7RRwYBMxEgPPC/QCTnsH + EXu/7iaMnA0PRT0U9bFi2Fq3KT9fbJ4F9XWD9avffdIWLL55Yh3fmdZNvjM94criPp2MrdYUng724Wyo + Z8I9X59RLr3R+Iw5Wnwyj1EgzEEFMgcOkSBzURBgnvpJMWICIUXEpjAFfufUfIyOhiXKz5e4y1RLvt6g + O1zf4cePo+JdSUgqorlBDFgzaGr2QtcRRQ+l93NRbVhqv8XLnXHWT2Gb8zKsxDL3ZZhJ52fMe5nb4yTG + +ZMYSqeiVyh+5vftlQXlp0tMpTUL7lvZ9q8thgCsfNvcJd7ri6KUVEQLFK1t9KCWe7/NlsLP+br8TOOX + vC7fqsXna+akFqx0pxY0er5WrvWsJ4OCRVrPgIB/f5F+UuB32YUaT6CswbNVpX3WYQ7A5MpBbc9iR2S6 + aNaSRr1KQkVrGAZLHEe9abyjj3510YeWO9SI8h1KjnDlp3ElnMbvXDF86I7hlJTACW8CH/Bd5wNfEu+T + 4/4UjvhSOEB+zO+2uyLo56Bm5l2FPYMZ+jAGXClcZ93EGuYpGU0PwGeMo3W5HbManNhsi2Ni8nW5T9G4 + fXukwn3XBVfikPgvHvoH8Zv4AAqGOFKmBOLWNMK2DEKOLJ/ocghIPfB4e+Hw5WEO5GEIFWBireyQCyjn + 64bZEsPervhovtH9fketFffqwnjWksD3+cq8udkP35JOvNTiw7A388aov/uHfF3+PMe/Uusv11f8p95z + ELEUDvrTWKiWUNrsRmmLF6WtAZTqgijVy5hnDGOGUSYhzOjk0RLGLFsMlc4kHvBn8YdQ7soVKb1m4xJb + Z/0Ky39vaI3gNWc33uVT1KP6KDZqfNcveDO/ouBiZeg7b/cutS09L2VeH4nmR0670yNnXKmRD6X0yClf + ZuSUv3vkVCA78q4/O/JgZ2ykrNZCOkcCWv/IIV925PfhnpEROfc/l6X0ACWKxf8bS53eAU1o4mycFaBn + LR41x2BeoP9k69KuL9/nv2q70JUs5UBVk2SqxlypqglPpuq6lK6+7klX8+/q99ojVa9qglsOdkT/eUO1 + fSsf2aq5JVbxWBQoLG6seLBa/Q/7NV3/9qaXe32SBZ/7/TtSDt/VhsbeMsR/tl8jb/l6uWOu6L96Tu38 + DRVNj+xu9f/ovnqfR5y7o3bJ5ZqBUGgmwuFZPM6BzOc/srPWXc3BLyG/Dj1tgdH8Ar0KweBMfjeT/WY9 + rjb8aMjOJ/8CBcU/yAbW49PEAJ63ZbGR+f4t5vlwrB/frvEOiHG+trQlM2S242qqAGuj9HZx8DtpxYEn + 5eaTMrKQLNpb7zYgt/Ya1qzHPcbExDcrXRsLSy3JaLkmGVrUlHqq3f2b4hO9KPbiv3kU/Si2BuuNKTTq + Y2hlPT3Fz/ev9D+nW2hYt36Z7ofIFnA1yUXaKJ1Rhv/qrRjJSclysoLUkZVHtV7fxVj/tZPcw1taAthi + S+NeLpgNXQkUOqN8HU7zyUzZPu+ejOixMPvqoqjlA0o96+lxVopNnawEvG4TN4BzyQHcb40g0+T5s0TF + tJdSroI0ET1xnDH5B1L62LiaZSZbYcFOXfD6PmN4fFeHPL6p2Tu+0xCeEIsHg0KW9K/D8yxlFbypitUy + yg0x/Lsnhb3twfEftIfGPJW2q+XaAMpZzp5V++5cVDSKiaguUkTtJD3qCPyFdYHx2rZqOy47ktfgjz2J + YPTvyXb4I//0oiVy4lKUUc3xxa6nB0ixNNkTqG2wo4Elb7Azgqss9hPB5FsIhXf+osX5gmOBAYc0AYw5 + U79Vhr7zRrkZRORoAzER7zMqx/ZL9sRrE57ELsjhLTz3d+QH5Nk/uuVffRTIjCDRewVJEu+9ciGUHR11 + JT+9KKXOXfRnzl4OZo7wuu+x/0/hD/38A33wxLg7OTQuJe9Whv3zWzEVZHk2mUvmESG/nGiIh+TJJvKX + 5K8o8tfkQfIA4flwjjgZxVX8vpKoSBuxkE6E5WbIcun/AvJ6jtQaqNeIAAAAAElFTkSuQmCC - + - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAFRElEQVRYR9WX - CVCUZRjHt2iaShKIhMREEEtIDMIYtREMTUuTpDwYzynT8RiGIsE8QGFMGxUYM0VphXYIBBUZEZRUkFZC - IeXYFWTABBFEWAVlYT24/n3PQ2uL+6FAYDY7v9n53n33fff/3CtpaytEd1BnHUXeZwtwabU/7lw8Jbrn - aafLou8U/47chUtxaqQramRxUO1PhHLWl1B6LsGNAzK0NOaJfq83aIJSdL2nPF50UwGuJe1DwhAHpDm6 - oTYmAa31aqC5mdHkF6AscBuU0+ahalcI7pVmip/TAxqRBx+sQQi2i37eUx4puvWOElfDdyOivyXOTvgU - 1Zt3sMimimv/UFmF5qpq3C8pRc3eGBTOXoyGzKOi53WHLCRhJD4UXgtwBRmie3pKp6I1hXKkTfdEtJE1 - zk+ahdJFX+P6d9uhTjoB9bE0NPya3s4JORpST6MxPbNdOIV+bLjomV2BQjkMe2CGUfDGN4K3C0T3/RtE - RVckRiHSygEyIyvkuHwC5cSZTPGcpext1XZpB27sjGThFAXK+StwXRamd2ZX0EABP6zDS3gLK/Gt6J7e - oIPoFnUuymJ2Y9sAG8SYDsMZe1c98sZ74MqyVSj3WsNUrNyAWiGsK3dFIsXlY5RIo3DJJwCtjd3zEAn2 - FiRrBfd28dLlgWi1Ih3J7jOx6TlTHHxlGFIHOyJ10Nv6COuKCTNwcdp8lMxdjsqgYFQGbEG4kwtUOfkc - 4mSAlvoivcs6gwSuxno8CxusEEK6LwUTLLrqxEFE241mwcftx+Fwf2scMbZB4qCR7PEkczte065nObgh - 39WD85wKF+0LGGqPksCtUO2IQGXwTtHLOiMCe9nDUzAPKpwT3dObSJpr8iF1dkO8zSj88NqbuPdnGYdn - srUTQp83g6+kPwuPMjBjEgyHIEtoXcpJsyEfNRGxLlNQdSgZse6eCBs8AtVbdrL375bK9S67j47PRDri - uWjZwQ1lvVylO0NS/9sRrBpghXin9xE48A3uwVSVz0+dw2FO4n96xhQ/Skz4/aSVE84KnqZ16dgPoCm5 - DE12LooCvsdGQwsOdcpxMhwZVHvRSSRiMuYgVHhpxZNX38FU9nIy4h7s7WskYc7jEGRiicO2Y1g09d66 - qAP848t9g3Bu8iwWT736kMUIzmnt8zqzocj/3IsrOIX0BokRlO7zcXmpH4qFderzdEl7VfbnnNUVqF2j - AaSv81gXidTaAQsl/bDWwATrjQfjakQMVKF7uEhRpSbPUliTUVKGj+GQl3v5oS4zGzHvTUbE63+HtCCa - UoQMQoaiPq97EYlaItRnEkm5S563wOgnGtZaJKpIGc4t+gpFvoGIHuoIf8OB2GvrjD/GT0fG8LFcvCis - pa8OQ6ixJY4v9hZGzXJoTmdBLkxpIRa2HBV1v8SzoVQyqZ5gLRcEqSTUGA7CtPURG2BXL4+YXUFCszWF - IfVVddoxXFzux95b+8IABPezYC9TPoe/bMnP/pZ2UM5dximgEPKeIiTbzYOrOOWx2CW6BGAjiyUchSx/ - EtX6YfQmsla1AreS4nmyIvFUvSlXSTBVcW8DIxx5dyLqfo5D6fJVXMETzG1RJBiiqSKnw1likLcpr0k0 - GUBsT18jOoYSLbfyUHsoFjkzvuDQJo9uftGcKzSlAbUlqtIU0rdTEniaEzvnYW4jl6t4EDb9J14mOhWt - pfm6Ajf37UfBYh+etM54LGSv058Q6tVUE8S+9yhuCtVcbP1J8VjRDxByn95vJR5Ghqs7ty+evO5f0N/7 - lNN10TpQ7t5VCm3mfyi4ra0QfwGf0Gyg6OLESQAAAABJRU5ErkJggg== + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAIAAAD8uT2DAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAA6/AAAOvwE4BVMkAAAAGnRF + WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS4xMDD0cqEAAAX/SURBVFhHrdZNqFVVGMbxMw8kKixt0CeR + fUg0SIIEDalJGBRGAydFRYmDgj6QBsodhAUR2KDAQAIHFYE56yIR3AaBA4kQISqCiOgDigrDzLr9js/m + dd197z0ft7t42ayz9t7r/a/nfdbaZzC/eu2vs+d+/e3MofdP7nnlky++/qUbnbKtGtAfp8/OHf/u/sfe + u+3eA2Lzg289vPvokdkvu9sTt1UAgnLi5I+7934EYsOWl5+e+RgZkfwUEGcOfDq5YP8LSI2+/f73F/bP + 3brttWs27SOMeskNscoHKGSP75mdRLCVA0WYe3YeXrfxuevunJFSPtoYP/fPvwlYrh4jG7ItDx1yff3t + E1i7WRa1FQKZ8eixr6AQBk3sIowXTS/cggIooabou+maNjWQqZWJYy69fieaq+/Ya/VKU8UaEQQTcViw + Hn3+w569pgay0IPvfE6VdRufZWGLTkgDdPLA4S3SWk839fk2BdCfZ/5WJqYJDdOY0Q4SAeKV5UL6XmAy + IRoidQnOt4mAajddccszl9+0Cw21cVA+ESARX48NiCmfrTc1kNp7P7sJDXlMYWXmqis4KGwUa48Os1le + LGWq6YCoyjFQ1t74hGAaBAnlb69EirVHB3nioUi+Y9eRKYCyt+2m0DhFJB4RpII1Iqpe4ua7X2WAGza/ + 5FAF16UcAZTdxC6XXLtDpe575N1JIuVbMhQLjSudSA6I/FAOf3CKI3UcKPIuARRhgFMFDdPIRJ5JIkyJ + snxocLjSac36rYBi6jA9+eKxz0795KfsC4AMpbTEhALI56mXcmywVICqEw5AoaFNcvE1jgC5huECUHYT + YZgmZUKzafsbi0PW3kgbratyIlDIVTjZaaM0oVGs2blvAuRnMDqglIkwazc8RRg0suafTRtyhCb99lai + BaIQiCocYdBcdNntsijC/jePC0BEAhQMbQhUu8mjMbIwaGUS2OpCMv4ASryEr1jdrYBb7q7gWTM7yeyp + i6/ajsmyQRSQB0KjDYEc5HJ71HPuUQhQPtH0tLisG00LFIVgVQRIhCMi+cIgcN5YoUAgi1wSLQtkN/p6 + F/iaK7cBUuZ4nLH4MSmNBytVK5RESpZzMoGGi6levjEhneSKQmwESAcTuA5IvawgQO4FyMuCeHABxVKp + i5TSe6aNAJEzJRMsbE40tTYpA0Qh1wDF2tHJdUDG0KRkAaKBNblFHptWqKkVS8OnrouB0ABNyYRnssND + I1PtKYmlC1CYjOtEpEGKhYaGeShAWVPOVhDBSif5XGGlgmRjGvUSxnMQ2yVmzp4qCwcIq1xVNR2Drmoy + 8GaAvOkhAchy23pl9xKATgalTPmSHgo+I8IIDodZ9pQ5I4ZkrUKIU7Vw5KoaVBioF94wJQD5XHgz9QKE + Q9a4FYGscpMn4bF4S7Rl+uHn09KYMHslCsUrkmIqCdzlYxIMTS3ZXQ8czJHlZX1bOlXzxyBlClA8FCC5 + YyOPES9koeE8NPlIgSCYaVsgnUgCi5BCHTyPZgjkh3yc5LYdoYPJUYQpWCBSrwBFnhbILR00NrlVonFN + blnJ0AIpnPHoJJ0AEG3SBtDiFcpbU/G1WDqtPKlXNhcgt4ZPrt/qXTQmiV0CxE+0lx6QyC3jRmiprKVN + 2vAcisLCVo+XVXQxlvRxbslTQK6pOP0jRpTQN1K+zjgUoSOXjOGoNgRa3FospewVMY4JTYDSJxKmiNEC + tXsq4QHzd8kWtqWB0nIwKnMPi+tLHn2l1FdNd6s6BZQ/zsyePeWukezwLs3CNgpISxFbLB+EwiqFGMtg + gGQtIFdMhUUtNqDNcjTaGKC0fEZ4NtuwsDAJlko/H68CEmVtQAwgzNNzca9NBJRmWYVVaoVJ+CnYqPwr + ALkqEzgcS7q416YASjNvTodSi7f0rd5Px6BzGQGm1Ct9r3Tvj2tTA2kxVrBwuOrzGdnA2VBhSqDxgOe7 + l8e1lQClwUoV4lDVjEiYbChMqR0at/LKJG3lQL2Gj06Y6JRS5iOFZqxv2rZqQGkpJSyhiJNXqtoqA2lx + mMi3qBudsM3P/wd+Ll3eIMt7NwAAAABJRU5ErkJggg== - + - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAEnUlEQVRYR9WY - aUxUZxSGCZEYMQjKmkHC5mgIgqOJGsSoEGNMbBAFSVVITEB2TdGiqYriLgUt4oALMo6poCwhIqi4oVMI - QmuHQi9okUUbF2prRGk1AcNT7pdgOjJW//X2x5NJbu49Z96cc97v3GvRNtjGp9I62MrFZxeJqo4irSGN - mt4apEHJ7L1K5pNF172sI+5KHPPOzKO4o5iKrgqir0Wz9tpa9N16mvqbzD6nRD4qWq5kYUchfkf8WPDt - Asq7y+kb6GNgcEDQ+qKVTGMmq6+s5mDbQer76s3GURL/Krr5bTN5Uh6qdBXLypeR05aD1Cvx5PUTE3re - 9ND1qovC+4XE1MSIETAXTyl8ULThhYGwc2FM3D+RsMowUm6nkN2azdUnV6l5WsOtnlvvqHtWR/2zerr/ - 7Batf7zz+Ih4SmKEaNmsTrefZvLeyaj2qAipDCG8OlwQb4gX1c5vzzdBd19H7W+1SM8lEm8kkteeZxJT - aZiIls0oV8pF9aUKjwwP5p6by/yS+SaEVoWyuWEzW37YwtY7W0k3plPUVYRO0rFYvxi9Uc+Ohh3c7b9r - kkhJvBN984+bLNUvxXq9NV7feKE5pcFf5z8C+Xr45XCibkSRUJtA1s9ZHPjpAAF7Amh61ERnXye6ezrl - iy7uKkaTpcE60ZrAU4F4HfHCW+uN71FfPL72wCfPB88cT4F8Pag0SFR8w+0NxNyIwT/XH3WSmozGDAra - C0S3vJ9ISVg0v2km8EAg/tn+uH3lJlx4e912pp+Yzpj1Y7BcbSmEO+5zZMLuCbhnuxNcGkxEdQQLixay - 6MgiqjqqWJ67HPUONdo2LYeaD2F4ZTCbUAlYXOi5gCpGxRztHFyTXHnZ/1I48sqqlagPq9Ec02CXZof1 - JmtsttowQzdDVHrG8aHfjCA6ezsxPjeyv34/DokOotXlGd/WuI2Wty1mk/7XWMiz6JzkzKyjs3Bb58bj - 148pfVBKZksmO3/cSURlBJ7ZnjilO+Gj9REz7ZHlgesuV1zjXEm+lkz+L/loW7SMjR5L5JVIUm+nklyb - rFzRU/dMxfIzS/GHnROcOdN6hmP3jgmTkudWrqzjXkdmHp3J7JOzsU+1Z2PFRhqfNhKUHSSONrml5SXG - T+uHd7Y3KypXYOhVcHvrO/Ssu7xOzLFvhi92sXZM2zeNkPMhBBQFCPOyTbMVW5nLJheSi5N52PeQht8b - CCkOwWuzl2jpsgdlJBmSONFxQtGCZYR7S28lpAGJSz2XSDWkiurZxNjgkOogqizPs1OaE/Yp9ngmeBJ3 - PU6MwKrqVdiutSX0fCixNbGkfZ9mNonSGLGRNQ80U/aojPjr8UzaPYlRa0ZhFWsl2lp2cavPrQjKDxLH - nLykBJ8NRp2jJv5mPHf+umMSS6mMED2MvJ2d/fUsay6twX2XO6OjRzNu/ThcvnBBc0gjlhLZpZO+S6L8 - cTnGfqPZOErkg6KHkc/xku4SUm6lUCAVEHk+kvEbxhNxMUKc1bInmHtOyXxU9DDDX0gqHlWwpGQJUw5P - IUcaetUc8oP371U6nyz6nzS9bqK2d+it6n8ouG2wjb8BTTQT5ox8KvEAAAAASUVORK5CYII= + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEU4ADhIAEhNAE1XAFdfAF9mAGZy + AHJ2AHZ3AHeAAICEAISRAJGSAJKUAJSYAJibAZueA56gBaCjCKOpD6mtE62uFa6xGLG1ILW5Jrm7KLu/ + L7/AM8DHP8fJQ8nJRsnMS8zOT87RWNHSWtLWZdbZbNndet3ghODiieLjj+PnnOfooOjqqOrttO3xw/Hy + xvL0z/T33Pf44/j77Pv88fz99f3++P7+/P7///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABn1z/qAAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF + WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA7NJREFUSEt9lQ27ekwQxrdIWkURWSJhhVbt + H6vv/82eWb2cOi/P3bmunMv8dmbuGUK3vyTaU3p9XL/pT6BjxLbdsHr8+9IfQNccXCthqeuS7DPNr4Dg + x83SPl07KIu4bvSe5jega3Z45VasG4ZBDE1CPELbx73fgLbGy1VYVS3Ej2opISRl97s/gIEfZksjOUFB + LwnBUkL2YzM/gLZYYYtSyvinrjRM5P1vQF/vVtilWUZZ89R1FO+TvYz4AMCdhY5JlqYpZaxib2qEiH4A + 0h19tU8i+GTVqXpTwzux/w70BdY0K4qiUH7o6U2yoWPwDWjrmaZ54UsJdP4QVNSsF+aGQ9gLaAus6v67 + kuyhilUnvO55SfjwBNp6o6kr33uXnyQJtC+7oRMsRM/ji7gD0h1Vsx+BL0UJdJ9U9EQn65voLjyGmiTQ + NZuZqtvOXd7j23FkJynNKF3iQXTlmcfdCLT1Yq7pnj0q9Bw7vF9KIKJQ1BqjxTHPz5cYTkfSnUWBcZs5 + lmX7uqqqBlyBPOgbRBY7U0HzGAAyAtdMmRMNDwNPnVCXQGgbIMvzkiSMXBS07XmukBfADoBPwQXenAwD + 67ozxhu2E0FN7qSA+rmJ4ry85OQMQB2geT7FXXdlJ8+2rMjAUoadwiyWqICTztxUzLwsIccFtQFSANCH + tqmqLPSpfwfsCIz1J2shLuAPQWael2dIgQ5IiU0ABGcVreDP8z1D160EDMbrGfgD7XIyMaGmmMQdWiNl + YZpTW1ZE0yi7QlmOl/hg62yzMxfIjGUGrJgE4huBgglSFGW64k11ypJIzgE6bsBWWc6/WLkbGmA4Nq67 + G8q2GClbdarvK5oloe85FliVGsZk3cL65DNFAjmJg92O9WAryw5Bcdhq06nup1HoO7YEIjxxO9HBcBcS + KC8XUhQMNuOG+itrOFAS0WQCG1zSQ23CBAcf4w0i0p+YtP/gfDk40fdDd63vCLZlAgB0pOzkrOIddJ2X + hJTdIOMBuEsiwVjYOO0Q6xPYBglIfwjJn2/YJwBL2xQjokIC1ceeBrUAcAzg4STHRjzCvoDb0ElkCQhk + cDQNhlteyhiQ3eH6jH8HAGlZcQBEVS1NXUpAtn2s63bsd9QHIH92mMwCOx4EchtyWJ+yf/Q76hsAbycu + s2yL+jCbk1iuj3y5fOkHAK1wVjPeZFt4sAiJx3F96ScASN8JeHIP28XcjNnrp+Su34BRA4dZBjvWvtUv + 9ScAs+R13XzWA/ofALrp+m/n327/AQleJadL7a95AAAAAElFTkSuQmCC - + - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAE2klEQVRYR9WX - f2jUZRzHv5rn/didu9t2zqm76ZlzW9u1tqlTNJwxwdyWmfujbJGiaIE2AlGwIkhKEipJo7Af4B+KUWYx - hbIgEFLnj5WWSmaOUkOczZ/n7ti+rz7P893pNr9Lw92wP1483/t+nx/3fj4/ns9jYBj8J/IKoTACk6ZC - ONe+zz3OnYueWiE8jBnOgXXvwcZPoLwCc9p0KCrFHDzYftw9yO1Fu9zEyidxPSeL9tyxsH4jXLwE8bjF - ngOYz9VDwQTIGKk9ob83IOpw0CJtgsud73vjX0WrP29W1fBXuhtz/ERYugJ+aISTzd1p/gMO/wJr1kHp - NKHcdr5ksaGqSholxWJO5/ve6FW0ctu/8/NpHeKiPf8hqHgMnl8Om7bCls9h6xcWn26HbQ3w5U46fj4G - b4nrpwZt50wWfSI6WvQgp0YN55zfBdkFECqymFgp1l4JK1/rzsuvW8Ib92POqJYx4VvmTCZ3J9rn4/qY - MezPTuesUwQ7AuAc2p3h+TCzFmqesqidD2+8w7XVa4lOLyf20QdQt0AnvW5zJ5GP586V5qboJZmZtv0S - 3BBtVs7gz7xcmrwGV50D5d2g3lFWz5O4VZZfVK8TWWNpEfGmA1ZsK8vPnCV9b10wGTTMmSPNTdHvVshJ - 0/nNDi36atl4TkfG0hhwEAuHMN2yCULU7eG8YwCxFNeNdwq8wyyLPzKbjsmVtGUP5asHwrQtk5hfJYJV - 7PdYKJkccrnweDzyaIneVldn2y+BoSy8p7CQsyNGcOx+EXP0uFhvMfFgBj/5BrI9xeC8z0U81SAe6CJ6 - VDFXMkdxOFKCuXkLh2sepdGfBi++BAtfgLT+S2ansrIIhULyaInenyO1RJfvPTHMiVPYJLHcXFDAt2ER - 03JBZ2SzfDKxtBSuDsuUDG5wTkSr1gyKMBF9yR1gb1mJlbG/2y0JbQW7vANg/lId4x2Pz9Nz2C3a16hT - pri4WB4NgsEgJ3wptv0SGN/7A3wd8HIpdzTfKNEnTlrHjrLWk5KQImXE3YM443VwLT1VJ7vWwQP174ac - IG01T1gZXCysRZdKeaoSXZlUatLXbtG+JhYOMyUvTx4NIpEILWL1nn26YhxKy2CDx9B/eFdWKrF1G2D5 - q1aSUseV36dd+0p+mI6xIY5KomtZtlhb90hJCccz0qF+lYx5hQv+dKJejy5LKZVixmbBZPGrcFBQVr5d - RWiwYAmt1bVEn12sBewY4qQpO0TbaMnQcmSpGL7sN2hO99EUSOH3Z562vKFhl06AylO0S7/9Pu1TZsK8 - hVb1ZrNYsthRXU2htAk+LJL/3vnNDkO74AipmUdLQSHnq4pFJX6n5z6OeAZwXays4lnt4D5JaJ+Fhlvi - VAhIva08RFds4s5qLAHZBJuFkslmydaJJKZYM0HuAZ3f7FC9ur9UG1BTS2z6LC1eidrnM/jR66TV7WSr - WP50eBysXa9jt21kWLu02gh94+o5Xz9w96ITiHhVUsamVvJbRqoWv9c7iN1eF2fE2qooURcMLVaVnql+ - +3n6gb4T3Ym6ZakkFa+aS3z1m1ycXMHBFAft4yRZyVlN3SJ9/bQb21+0OZ3drpbqqmnXL8FtRSt0NlS1 - uBJXv4JofoSLviE6DPrrWOpL7kh0VxJ3bKpm/y8FYxj8A7QY8EPddxAcAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEU9AAdPAAlUAApfAAtoAAxvAA18 + AA6BAA+MABCRABGeABKhABOlAxaoBhmrCButCh2wDSC2FCe6GCu7Gi2+HTDCJTfGKz3ILkDLNEbNN0nS + RFTUR1fVSVnXT1/ZUmLcW2rdXWzgaXbicH3mfIjohpLpjJfrkZvun6juoarwqbLytbz1xMr2x8330NT5 + 3eD64+b87O798vP+9fb++fn//Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAq2/ciAAAACXBIWXMAAA68AAAOvAGVvHJJAAAAGXRF + WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA65JREFUSEt9lYuWsjoMhasgtQgKghQEESgC + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADs2G/6AAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF + WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA7dJREFUSEt9lYuWsjoMhasgIqCgIEhBELkJ + WLQ/pfj+T3ZSvIwzzpztrCWzyNckOwHR7S/x7pReH9dv+hNgBNu2G9aPf1/6A2DtwbUSkrouzr6n+RXg + 9LhZ2qcrg7Kw60bvaX4DWLvTV25N2DAMfGgT7OGie9z7DegafbkK67qD+FFdgTFOyf3uBzDQw2xpJCco + 6CXOSYrxfmzmA+jKlWYVRUHod12LMBH3fwB9s1tpbpFlBWmfuo6ifbIXEd8AcGehajhL07QgpCZvajmP + PgDhjrraJxF8svpUv6mljO9/An2pK4oVRVEoPsXpTaKhY/AD6JqZonjhSwl0/hBU1K4X5oZC2AvoSk1W + /Xcl2UM1qU/6uqcVpsMT6JqNIq98711+kiTQvuimmOic9zS+8Dsg3JEV+xH4UpRA90ldnIrJ+sbZhcZQ + kwBYu5nJqu3c5T2+HUd0khZZUSz1gbPqTGM2Al2zmCuqZ48KPccO75cCiAooaq2jxTHPz5cYTkfCnUWp + aV3mWJbtq7IsG3AF8qBvEF7sTAnNYwDwCFwzaY4VbRho6oSqAELbAFmelyRh5KKg685zCb8AcgB8qnFO + 25NhaKrqjPGG7URQkzspoX5qojivLjk+A9AEaJ5PNcau5OTZlhUZmpBhpzCLJSrhpDM1JTOvKshxQV2A + JADUoWvrOgv9wr8DdgTG+pM15xfwByMzz6szpEAHJMUmAJySuqjhz/M9Q1WtBAzW1zPwB9qleGJCTTGO + GVojaWGaU1tUVKRRdoWyHC/xwdbZZmcukBmLDLpkYohvOQomSJKk6Yq29SlLIjEH6LgFW0U5/2Lpbmig + w7Fxw24o2+pI2spTdV8XWRL6nmOBValhTNYdrE8+kwSQ4zjY7UgPtpLsEJSHrTKdqn4ahb5jCyDSJi7j + DIa7EEB1ueCyJLAZN9RfSUuBEogiEtjgkhoqE8Ip+BhvEBb+xLj7B+eLwfG+H9i1uSOaLRIAoCJpJ2YV + 76DrvMK4YoOIB+AugQRjYeO0Q02dwDYIQPiDcf58wz4BWNq2HBEZEsi+5ilQCwDHAB5OfGz5I+wLuA1M + IEtAIIOjKDDc6lLFgOwO12f8OwBIR8oDILJsKfJSAKLtY9N0Y7+jvgHiZ4eILLDjQSC2IYf1qfpHv6N+ + APB2oiLLtmwOszmOxfqIl8uXPgBohZKG0DbbwoOFcTyO60ufACA94/DkHraLuRmT10/JXb8BowYKswx2 + pHurX+hPAGZJm6b9Xg/ofwDohvU/zr/d/gOjFSyLIyVhmAAAAABJRU5ErkJggg== - + - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAErklEQVRYR9WY - e1BUVRzHV2UsE3nIS0BWWBJBMR7JpA2PEHTKJGnkkQZMGQWMZFJCIyHC0MgAuQFDILO8Y1kwIB6KKa/A - CIj3gssAAbHIituACkEI4rd7j4/a4ar85+2Pz+zMmXvPb7/n9/39zjmXc18iwbLp6cFUyUV0HPDGQFAY - ZitryBjjsyxm2aJn635B+2E/1Gy3x82sfMgLSiF2/whiz48hP5eFe+0djO+xkWeLpjI5lpWH4k0WqLZ0 - xISwGItT08DCAmGmswfDEXEQ738fsqizmKtvYJ6HRTxV9GJnF6T8FKSrcNG4+12Mn0kkIudHZf9yXYYF - 2Tju9g/hZpoQEndfUgJM87GFJ4qeqalH9T5P5KoaodXZDUNHjuPG1/GYKr+CqYpqTP9U+4ArdZiuqsdf - tQ0PhNPWT0hlnJMtLBVN2Xk0LQcZhhbIUjVEm907EDu5EfoO+ZFsy+MFCvyZlEGE0y7o9j6KG/xkxTlZ - hoJouhkNx6cgTssYuVomaNhqi8btDgp0OLjiD/8QjASehPTTUIx+cRoTaXmQJmfikt3b6BfkoO/zcIUg - bOOx6KnKWlx40w3RShooVOOh2sASVfqvoHqjBfl9BD3etfsgJPu9MPCeP2SR30AaHoNUazvI2zpxt2+Q - ZH7x2tJgbIGIluX9gFyz1xC1WguXzW1RqspDmZoxSvXMIVI3RrmOGUpUjAj0eJOFIzrtXUmdX/PwRSnX - Aqd45uiPiIU8MR1jsd8xBmMLnIX2TghsHHF+sw0SNphg7vdhYs8KQ2uS9aAVKhBqvIxcJR1kr9REsfIm - NFFbV/ceD9TtcIbI7i3Iii5A5OKJZINtGI9JgjSKj79r6hgDsgHOncIyhGgZotD6DUTobsbi7TukK7fu - O4QiTROU816FYJUWkjjqSF2hgUpqMRqpTF+kx3c5Y6Z/EDPN7eg9FY2IlzZgLCyGqnEhBo+HgV5QpqDP - G06ypS0i1bkoMd1JRM+PjmEi+zz58yMnItG214PUeOo6LrF7FdcKBZTl6b37K20eOj8IJB1cGpuE0JVq - ELt4YdAvGH0+gVgUdzMGfd5wBEYW8OGsxUml9QhXM4A0XQg5/xwGDvuTTk1nNoeyNr0ol7bsBH+1NuoC - gzHZ0Azh63uRYWBOLD0Wl4wfjayIO1r2uGO26mfGgGyAQ5+bW458ht4TEcjmWSJMWRdppjb4zeEArm7Z - RZoXbWvBeh74alxc9j2GuaERzNQ3oY46pZ3VMyWumPy+EL3eVNYTBawWTMOhtxbahovd9A2qApKAYJK9 - 0Be18O0aXZJlUs+UvWOU9RHGNYOYcgFdAl1U3Ye9oIlmR1dIPD8hdcwUhG0sOZHR5+1bwkKIvQKQpr8V - X3JUcJqjCv66jcinuvixVaoo2+GEycx8DAWEoN7aCcU6puilFmK+uUVhLray9Bj6kHtt7ZjIFKHt4IcQ - aJuQJnVmjQ6iVQ0g4llBRt2s6JNYv9dR3BYVk+eZ5mEjTxT9CHrboa3c4xuE0aR0/Orqg7i1eqSriynk - KVmM77GZZ4p+zMMvJLcKSnDV3gVFettwPTqBtdvS01i+6P8w39pBrp7/x09F9yUS/APFMyDYaZnYDQAA - AABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAGJ0lEQVRYR82X - a1BUZRjH0QmnNKeh1NBKs7DSsWainHGyT/jBdJIZKz9oYw1Tk2M2NlqWYqMzhpoo4g1voMkoCIJmoMgl - CWVVWNcbyyLL1XVBbiGKoQnL/jv/53hOu3C4eJ0+/OfdyznveX/v/3me9zk+RWttuBfVhCbC9d5E3J72 - BarC0gyveVSybVTGaLvhf/J7VLHxfx3Ua+jqNVlwTfkEba8OR9uGKLTFxADjgmQDGudEwr7qrOF9D0sE - PppyASZLKay2CpSWXhGdL6uBqagaGZbLOGKuhMnsQE5SiYxZF5y4GN95k3qELo6w4uriGIF1jRoFbI6G - u+k62u/cEblPmeGe8x3ax7yDa8E/yOYYzfMgqtxnQ53VhLQDIfh142BERwzopAMHv8Lhc05Rcp5DtPdU - FTL2dDajR2jXohWo9XsSbePGCxwhUeHwkrumFm5bMVpXrBX3635KMJzrflWRfQJVxWlwlu1A9Z4paJzm - i6pJfVAc1hcX/+iD06l9kZ38BNJytiEhqxCbEk9hRVw+duVU4kjsmU7zdQlduy4Tde9PRH1/X3HRFTRV - hY5P8hKSU3QRvD08CvUzwwznvF/VOrJEDc6DuLkmBC5fX1Hztz5wWlQRnJtyuaoBUdlOLN6cjuxjZ2Ha - 2kunryzYBsfIYeJw+8tvwfXiaFVK/hKc7ncUoV2WM7I5vYW2revsgpHqrubD3erAnZZLaIpcqkOXf+6D - VocPGqyq24Sub2zG7rPNCI0x4WyK8Xxe0CXhFjhnr4V5yGDV4acGdZLAKwUNU2eomh4i7jK0W4LGS4Fr - D5kLZ2yh14OMZFv4Da58PBNFy1MN/9dEaAJzzI/8UYcunNcHLeXeTv91vUWgl8aae4auW5+O8glByB+g - TtitFHCGPPNXipgCaQ4cK04zxOl8b6BLQmbJfLeGDu0WvsyagPwTK0Xn98/W11H2veqwltf3BO0IjUXN - 6wEw+/mqVVqDU0THPb9TuuNKKDPk/3lpCNJGBcC9YIkAc+z4oKKVx1E5b7+Xaj+YpM51d96u4OmyFt5t - 9nj9+huH1fCm2x3Dm4WsS+jqHfk4PXYsavz9URzgrxYjxTnXoOfE9YwBfXXwW379ZNShFRW8+bYUtILg - KTA/4yfAdL9yaabXg2zzF/53791Fa587jtcDhsMRsV2/l2F9uzlPdMsRh9bgoWid3Ac3z6vARjndrdP1 - S+IQP6AfKkaPRuZIBVo5fliUeEQR8m//52UhLGr8LuDKhnCBee8GyibhWK7AcoO4Ycxx10ezwA3VH6a4 - d3lunJc8neZI8beKX3bDvqlAv9dR8pu4rDndtuQFtC3yEafvC5phmTl4oIS3Bs1Fc/HuT7/E7TFK9VYW - Rbe1DeBnKnnEMClqWkgTmpslv02YLI2N0UM12eaox09XsJp4RmuFzBr5s9xD5X1mXL23nWyQIyvzkFVt - XTvM58NKHdXfRxZMeLaYcgSxxVTCV3P35huvSL5bn+6Lhnmz4T5+HNbAQNgV1yWkFTFFBEIpcr3pzAjd - HawmFjKqwLIFZ8Jm6NCs3qzcJSY1p3PyDyDvUo3eku49Xm7ckRGwKXi6OEsAwnMjeD5roUdo+7MDRay4 - EtKpGRIFqSOUa7WQVtzlfL1tRQtX56JkwznD/zxlTzoNy/pMlNrTJNTrM8KlM7PnfaiL3RghE086dLEN - NezIuMOaboTvk1zU4OkqoZnP/MzCJiGtwLEHp6MS0q8FqpHBe7tx7EHEMM01qVCE8+yxtT6bbeeW1AKE - J12U6h19yNJ1R+aZe9z5G6Hb5Tiis4QirHZ+s+gx/8VZ5i6rOMNNObq8CtcjEMFZnDJPFBiKb198C9Pa - 0D8TLYbzeHVknmJ3JvAKDOE1cIq56xnSTUt2yfVG8zxsEdxTfIdOy6iSl4yTpdekiK3LbZKRLx9Hk4sk - OlI35upzdAmtie4RjnnPVpMvIQSXlxC6rOSwPNzg3sel9JxGzA/7XYU/3y7aWeCS8CY4N2DHshT9+h6h - NTEFKDnOFGAeWW1fL+7xWHocSliZLjInFmL11hQsi0xG2IaDCF8ej4s7bdgVkYqjq07o1/ca2lN0n736 - /wH43mXDvz/ONMu59lrKAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRF//// + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEVMGwBhIgBoJAB2KQCALQCKMACZ + NgCfOAChOACtPACyPgDAQwDERADJRgDPSADRSQDUSgDZTwXdUwneVQvhWA7kXhbnYxzpZiDsaybtbinx + eDfzezrzfDz1gUP2hEb4ik/4jFH6lF37mmX9onL9qn3+roP+son/vJf/vZr/w6P/y7D/1sD/2MP/3sz/ + 59r/7OH/8er/9vH/+PX/+vj//fz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA @@ -1883,517 +1785,24 @@ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyO34QAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAE0lEQVQ4T2MY - BaNgFIyCYQUYGAAE2AABE91XygAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAGAUlEQVRYR82Y - W2xURRjHW8QHIzHECz4osYKXREwgMRpjQjAkRhMSffCB+KAmxEgwUUgM8iKYJkZKwSgUKKVUoC3S0m6h - tFVpt7ft/bpbdrddut3SvfSy3V7Zbu/t3/Ofdg7d3dPSIqgPv8z2nDkz+5vvm+/MNmK2+RhWQmfnDaSN - 9KPcW4Nu1zXNPg+LqeY4jFjOad4btmdjvCVR814oy5YeaDuP68NeJPj9MExPo2lmBhmBALL6XTB5qzBx - 66Tmcw8KCheWNQoajRZYrTY029pR3+xEmdmN/EYXshtt4rOE1/qsmWFjLUu6tcuAZJ8PySMjqFWER2Zn - MTWPR5HXT02Je4x+n+uq5hj/hBlnCvyDVSj56ytkXIhC+rknkRr/lODSmadFm6X7XEhfaWpGWr0N6TUe - pFa4UGu4HjbektKMnrG7HAmKMCOcq8jZFWmfIhoK5ZkBqRMTcHdc0RzvfuntLoWvR4/O20lwWPfDYf4U - 5qqtaCp6DDf1kagvXI3TRWuxw/seNk1txQf2bxBzsRhJ+taVSfc7UkTqSuFERSZTkWakmdpaUJ73jV3F - mmPeL862HAz0GDDgUdqui+h3H0WfbTO8TRHoMkfie886vDAdhY8nd0LXX4jECi8OJpXBUHAD3rr4sPE0 - pVs6S0Q6U5iyEkaR0Q6F6U1pRpv7fLnSAfuvmtdDofTMpBOBYTMsNXk4fWIP9u1+AonHI3FkcB3WT6/H - 9t4oWN0J6On3I9kUwKHkGpgr8zTHC5JmOlM4we1WI6yFXADZUppkDg7CMjqK/MGOoEkW42zgMA7596DV - GaN5X9Lemo07Q0aYnDroMn7AxfjtiI+JRHTOGiH88tRGnNU/jo5bp+AdCgjp6JQasUBa46nSajrfQ5gs - jD5TntFOUZ5T9/bkWNhEWhwOfIfnZ18X+3ApeUY63xaLN/1v4ZPOd5Fd/RJKDI9iiz9KSB9zP4Py7FV3 - pY1+/JhmXFpaVmcKswoHSS6yAAvF2SfZ4UDO2FyxKxwfDZvIZ49Fw+0DQewb+1JIS7bMbtOUH/G3onuy - ETtmPhL9tk2+gm/9z4nPO0dfhOv2alW6yzcspH/KmNsKC8eRRIy1nRNR4heX0eKXF3K8rsgI8YXMS7Pl - YrGiX+vtFf2lNDNn4UQpQ9FBgkvx9uz7KBi6W4B4IGIha/Nexm7/TrXfq9ObUNC+Bp6GVSjVBUsvGWm7 - t0IVY7T4DmZREhGfFxTt/MKIv+dJ6+4Wi0RppjTHYbpzf3Phxu1n1YkY6eqO/UF8PfZFkOzG6Tewa3IX - ynzHgw47spBNj1tRcCdJ9GP/DwMbMOGMEFU8VJp7etFCltphm5NWJGSk+b7llyeqvEQuggIXidWa0eUz - HIcZwOLG6/c6pck9vZishMddSnd7KpCReQKfFb+DDaOvYW/zs0HS7bZTcHsHkVblwon0Kujya+E0hR+V - I4SA1TonrsD3LCVk+kpJeSJjxA3KNRYs+Vpjf0ZX7av0Y0qGThbKL4GDS8pKWL3NdXGCutIDqNBvx8+m - tcp7+BFxOCEluZtxtbgQefVOFcprHk7qBiwiKnnDnXMRpDxbKTwvIlCE8wcGRDaoW0C5xoxgpDkOx1uO - MGHK3ysbCLeJv+0CLLdq0dRcAZPlDxiNpwT1jWcEyUUGcezk8VOy5DGUg3JyR5c+WF7u4wUtU5qylBTS - 7KcsDFOaz4ZO8KDgDw6rrQWpBkc4ihzJKriJ37KqxcFk79FspKXnosd0OWyssBMZq/lNJVqUCJKX4vOZ - IM/ZMht0ijCPiaHjPUgo7jAViAIlYYX+s6gaN0rNcLh8Iq3jijsRm9GIutpK8XPTY9YF/SQNk5YwnZiq - MoWDUKRllaY4F2k5afqwKG2yiLN2rnkAcXXjgvPGUaQUWAVJ1X3ITUtQ+y8qLZHy3K/ldzzqIrBlseM9 - ref+LRj99LxSxJ5MR63Zjugsm+DIVQui43JEtGOSy1cmLZGRtPQ1qMWNi/BfRljCfxQQpnCD/hIq8s4L - LIZ0sSg9lhz4W35X+y9beiGMvru38n8hvHKO4W9WZNbKBV7RMgAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFTExM - WFhYW1tbYGBgY2NjZGRkZWVlZmZmZ2dnaWlpampqa2trbW1tbm5ucHBwcXFxcnJydHR0dXV1dnZ2d3d3 - eXl5e3t7fX19f39/gICAgYGBgoKCg4ODhISEhYWFhoaGh4eHiIiIiYmJioqKi4uLjIyMjo6Oj4+PkJCQ - kZGRkpKSk5OTlJSUlZWVlpaWl5eXmJiYmZmZmpqam5ubnJycnp6en5+foKCgo6OjpKSkpqamp6enqKio - qampqqqqq6urrq6usLCwsbGxsrKys7OztLS0tbW1tra2t7e3uLi4ubm5u7u7vLy8vb29vr6+wMDAwcHB - wsLCw8PDxMTExcXFxsbGx8fHyMjIycnJy8vLzMzMzc3Nzs7Oz8/P0NDQ0dHR0tLS09PT1NTU1dXV1tbW - 19fX2NjY2dnZ2tra29vb3Nzc3t7e39/f4ODg5eXl5ubm5+fn6Ojo6enp6urq6+vr7e3t7+/v8PDw8vLy - 8/Pz9PT09vb29/f3+vr6+/v7/v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/DPJbQAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAABlUlEQVQ4T52T - 6zcCQRTAFxEljzxC2UjYapXXrrdED1t6SFa02tqdDSVKQp7/ui1z6NtOfp/u3Ht+M3PuuRcDTWR8IRGG - aDTZvGcjXwgFUi1c8GeztvXbz6+vJy6YkGBKkV/7ZGIPPL/JvNduImmYVALa6fUpLyvel8rlh0rlNX/2 - k1Xkxz4xTXoZJgauZW4equFEI6tMw44OWrZ3ZXzJ8wuuIKxxsUZNGdlOrejmaYqmKIo+DMezafyuhto2 - DCQtGtpBuqxOh510+9mwU5u8zsKqElhumhh5SSzr2mfMJsId3HTkF8akS0QdEzpJ7UfZZ1s0DI9S7iXL - c/VUwxdYtL9jY1pX71sxk/IS4yQ9a+wOXWVUQTaMaE9iqh4xF/dRuGtVv18icCCQxAGsKoHx3qhFbfZs - 2g3jQzu1x51hvhjj0HsuSWIE79TjQ4b+nqMi0+WJoM5K3a7DB00dar21beX2bMvewpbCOZeEgFGl65vL - Fo7BfzY0J0TP9wb8DAfPSPza8vtA3LWlkHe7TpMtI+VggAQA31EYtvsm5zkIAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFmdXV - mdramdvbmdzcmd3dmd7emd/fnt/fmeDgm+HhmeLimePjmeTkmeXlmebmmefnnuPjn+fnmejomenpmerq - mevrmezsme3tme7ume/vnejonO3tnO/vmfDwmfHxmfLymfPzmfT0mfX1mfb2mff3nvPznfT0nPb2n/f3 - mfj4mfn5mfr6m/v7nPj4nPn5nfv7od3dod7eot/fpt7eoOLiouXlpubmp+fnoenpo+rqo+vroe7uoO/v - purqqO3toPHxofLyofPzo/T0oPX1o/b2p/LypPT0pfb2p/f3ofj4ovn5ofr6oPv7ofz8pfj4pvn5p/v7 - qvT0q/f3rPDwrfPzrfT0rPX1qvj4qvn5qfv7qvz8rfj4r/v7rfz8serqsu3ts+/vuezsuu/vvunpve7u - sfPzsfn5sfz8sv39tvn5tv39ufLyuvb2vPHxvPPzvvT0uvr6uP39vfr6vPv7vv39wurqxejoxuvrxezs - xe3txu7uzOXlzObmzefny+rqyezsz+rqzezswfHxw/LywPPzwvj4wfv7wf39xfz8zvDwyfr6yPz8yP39 - z/z8zf7+0uPj0+Tk0ubm1eHh1eLi1ePj1OTk1OXl0urq0/f30f7+1f7+2Pv72/7+3/7+4vz84/7+5/39 - 5f7+5v//6fv76v7+6///7P//9f//+////P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkrd1wAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAABpUlEQVQ4T2OY - hACT693i66Bs4gCS7uoQ1e7ecNeUfiifCIDQXWHj2LN85Yr5RZ4JDVAhggCme0qisHP63GUgsKjDqwwq - SghAdE+usRNV0Y/t65sJBLMWdSeCRQkDsO7JpRaiKlpa3ulZQFA4c344KbonJAuIKYOApo+vr29JUfCM - VIgkQQDUXWPLLaEIAZra2rExZosXtkFlCQGGSeVWnA6ycnLicrKyciqa+noyxplZxVBZQoBhmqC06ZJM - OW4mMTFRSWUtBdvZcXwZBbVQaQKAoYpZ2mj5THdJWWF+IXllOfMFc1o5okrSpkLl8QMGEw4Zo6XtsZHu - ksKSChIihkFZbay6kX5E6hZiYGXvytLRVRWztudtmmcpnFEsKenSCJUmABjyQlNFWKWUlWSFhXmSlsxy - 5Ilqj8gmUjMwzKdNqQwUZuUV4xfiNvBr92RT9w+DyhEG4LQ2rcVDiIWDV5xRpj1AUdJtOliGGABJ55Mm - trgLsXJxicWWeDeTk0MntkTnO3Fr6OVC+UQBuG5gXpncpCaRMwXKIwog6QaCiZ2kaJ40CQBLsmMl+qL9 - EAAAAABJRU5ErkJggg== - - - - - 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 - QmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRF//// - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyO34QAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAE0lEQVQ4T2MY - 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 - 2Zu+iiHUgUsAAAAASUVORK5CYII= - - - - - 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 - YII= - - - - - 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 - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyO34QAAAAlwSFlzAAAO - vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAE0lEQVQ4T2MY - BaNgFIyCYQUYGAAE2AABE91XygAAAABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAA68AAAOvAGVvHJJAAAAGnRF - WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS4xMDD0cqEAAAZfSURBVFhHxZd9TNR1HMeRhSvJNUoNrDRL - K521Rbm55R+NWjMrN0trs1mjJ+csszlXM2czNdRUJoqaZ6YkiIj4gKIgoiDi8SxHhxwPwnEgTyooDwJ3 - 3Lvf+3P+rjvud0g+1B/v/bjjft/f9/V9f55+PiXrjBioynUmXI84CLwegpszPodleZLm7+6bIoyoTKp2 - ++7SwWqY02pRcdKCkq2lbv/zpgFDX9GdgX3mTFifHQXrxkjYduwAJoXA9tqbuDovHKawfM377pkU4JQM - AzLzylBsrER5eY2osKIe54wWHL9Qi2M5VfK3qrQLNSiKMXmsdVtoU8RfaN++B12jg2AbNw7YtB32llbY - u7sdysqBfd4i9E54BZ2fLYFlTZrmOncjy2Ej2lszkXQgFLs2jYBuvb+HDiR8haMFFlG83izak1WLE3ty - PNbrF5rA1pXr0BDwIKyTJgscIXHJ7K76BtiNpfJbut+4NFZzvTtV4+UsNNWmwlKhQ92f03Bthi9qp/qi - dKUvilJ9oE/0RVr8A0g9sw0xqSWIiM0SbTvXjMSIsx7raUITtmFDChqnvIGmIX7ioi3kPQd0zH432eKO - ipCYLOC9azejafZKjzXvRgSmmmsS0PZrKGx+fqIb3/qgLs8hgvNQqmuvYPOpGiyJTEZaah70+wwoDS9x - W88DmsB1q3UwjxkpDvc+/RJsT453SMlfCeUlqzwk8Hm5cjgDhTZuyNX83lXcMJ3u7rgoaglf5oSu/NQH - PWYfNBoGOaGbrrbht4IuLN2ZhfxE7TXdoAlMp3JGDHc4/NAwDxG+950PncKsULmHod0RMlkKXG/ofNRF - uz9IS8bFX6Pmg9ko+TlR8/+qVGhes8O/d0IXfzMIHZWe0Lvyb9we2hRZisaIZNRPfQvZ/o4F+xXBlZBn - /orzCmRO8ERxWkJccX4g0GWhc2S9zqAgr/B0uqI4FtkZq0SFcXOd+yhf5AhrNa9doZftzvEOTeDW3/eh - /vmxyAnwk5bkhFNEx10/U66OE7zrqRE4MWEc7IuWCjCv7OluD/slHVUL4tzEQ5a1bq3rDZ4u9/aY5Wo1 - xTh/b01whDfd7gsdFq33Dt28Nx/nJ05EfWAgSscGOpxSnLMNe0xcT/b3dYJ3BgyWq4S6kuvcpOHFl6Wg - GaZPQ84jAQJM96uWpbg9yPjdYudmVVBv19axo6SuqPeq4c221WmORs/0IPS8PQhthQ5grfDu1+mWsL2I - 8R+MS+PHI2VMoLQfFiW2KEK2Bz4uG2FR42cBVw6EG9S/GiyH1JWcLbA8IB4Yc9z2/hxYtub98zDFver5 - 0W5ydZpXit8JsDKMiJR7zWUJAt3TUSBOW398AtYffHD9qDY0C1m/0AzLlOFDJbwJLf1Wmbi4efvHX+Dm - BKV6K5ui2+oB8G8qfvRImdLE3VvQPCwpclOmueV137bBz8Z5jvajwlat/kOKqevvqJryQxLedLw4fIXc - Q+k/8azebFnsz2xZnOCKdBc91vNhpY4c4iMbThw93AHMFqS0J+at6m7bC89Ivhc/7IvmBXNhT09HcXAw - TIrrKjRTRCCUIte685THw/qK0IRltJVvKtT8DcVCRhlytyB3xUdOaFZv9mjTWUdOn8k+AP3Fehk/j2WV - I+58tfZERsCW6bPEWQIQnlcpVLdCj9CmR4eKWHEZDRxGGAU8KDWk6S5bV9fBdI8HaUopbv3BqmowFYjL - 5aYkCfWm5LUymZn07zp15PRWmcYIqsrrGMowk4FECcVuXbzkogpPVwnNfObfLGwMacJxBqejEtLPBTte - PpR7B9Kq/q3YYdgNzmZWCkxsZpXbjK3O2dSWRAPW7i+S6q075JjI+q7nMZxw0zfXR8lkpcITVu3fLHrM - f3FWyV1GBL/nQVyOPOeRu/dUSmE7lVwsucoRk1dX8e2Lb2HqGCouK/fw9dN1X15nb8JLFVZym2GtglPM - XXy50BnSPKT74bCm1KrOd2flygg4WXBVXjCyyq5JEduQ4bgy3JPijdif2+D24qEJ7ZSyKPu4hLLiKvOV - LyEEZ0hL3ivgWhX3vxKhT5e1Y+GKQwLPdkXtMNgkvAnOA9j+0xHnPf1Du4hO8gE9G3dLAWPLGui4eV+l - OM4wjlmVJPm7ZsthLA+PF62PiIMhqgRRUSdwPCzDec+AoVURnMMI9b8D35GM+BtD6z86AGwUowAAAABJ - RU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAA68AAAOvAGVvHJJAAAAGnRF - WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS4xMDD0cqEAAAYmSURBVFhHzZhtTJVlHMYPmLWVzvme+sFc - 2Votqzk33WzrU+baWivrQ2Wbm7WWlWaTXG/rRZckExPQbL4SKMIA5QhyjqACwRF558ABDmdHzjm8I2CA - hChe3dcfnuN5eXjRafXh2nN4zvPcz/O7r+t/3/+DoTrChjvRwQw3Hq934fW6ZiSkunSvuV+yH3fAYboM - ++F6v/M1v9fBbnLDnuL0Oz+aJgydrAZdUePEFLsdYf392HHtGp5ubxeFFTShKKZW9757pl9tyM4rFZWW - VaGquha2WieKbS7kWT0wl7pxutgtnzXxnDWuLmiscaGtUbXYaXJgusWCGVYrwgYH0XHrFq6P6KTSu3/1 - YE5HB97LdSMtRbmvXlBvrLuVK7UKfd0WXMjcgOTDC5F4YDri9s70U2rK+0gvcQh4UqFHFJfvwZmMStTG - lPuNNyY03dtY0QiD0YiZ9fV4UQETshwIUt7QEDaqBBA+6lyT7nh3q9bGPLQ3Z8NVvxeu0k24nPs2atOX - o/JsqFfZSZNw7sJuJJisiEm04Jcj5+QzoQNNGBWacX42rxiGrCyENjfjoZ4eLB0YwE8Kjtrpo31qMiiC - M/qbshp0x7xbOe1p6GrNRVdJLHpfXYHr8+aL+lfOQHvyA6jLDYElLQTOmmi4W7pwoKAd3xzMg+l4ES7t - 8XeZ0oXedroOc00mL7CmWX194vYrOiL82Zs3pcYnDB2er38+QK56Iwb7azC09VPcnDoH7pnzYZ0+Wz4P - vDwHTZYQ5KSEShJarvTiaPk1fBdbiIKEKt3x/KAZ56/TbAiJjw8C9hXhfbX+xg2p6xfKyrBbfb9KgZem - uP0epKstn8D95juw/WjU/35EdLq3sxRd+79F19rVyP/ieRQsmybQdDsQOrasF9uOFY0PzTg/k5krwCEX - L8KgVunRRHDGXYv8MnV8IiUFhVevSsQ5CflpjUEPC5R93Vpg8lSJ6ljwdNphO4GqkijY8r9H25rnhl1+ - 8lF4oh/0xvuOoCNH4hwSEyMrtEBXVIj42Vc8pzlOaB4fttmwKDJSHGbU6Xrggxjly58l+ql19SqB1jQa - PKOtach+Qq4j8ODJyRhsMKDPYQiGTrYNQ+vsJAazuXkYWAEtSExEkapLvrwAq0kwhIffBlaR51EDpuuP - mc2yiK3MzJSUEPqt7h6ciQt42OYtfoBjiUCuiN+897Z4zLJldbako6swUuq4b800iXVbhUG3psd0misd - wQg0NzoazWr74aK0oLHRH3akzjWneWSkGed4tY191Noqk/SUalrWqngv77jiF3G617Ah3k+BTjOyPOfc - ccjPIcZ7aLBBnB74M1auo9uOxEniNMG5ZU043nMPxMnLEo7Q3HNZk6xVAixqahoGV3u1HJW72kTM3rVL - 4OjuB729Mg4nhPctbusct0vTatoXtmZPWdB1GjT364xDO2B5YzGyXnsER7eH+kFrW1aCxS17NfdpPXCD - OLh58zC40lfd3QLhW6+EnFVYOFzv6vr1lZU4o/Zj2dbUZGh1zOsopiQuc/yFrPrjdWPCatIWMarowpco - NL8kNUxpzcn5tCVIPZ8tHZkmwgeVmZLhQ89VLHU6h+uYMVbgU06dEmBKXFVg4rQCXqPgWfesY3ZpPEdn - mQ7u0RwvKcMT9CBdqcVtLFiRinmD0Yb6tEuorLGIyqxGlJTuE2d5pP7IzpG2U2tBj19UE6/+ZoMSOKaB - vXXxQYfEILy6C0uUSwJI57U69oFmpOkkIdlyapFmnLl1cbzAh9wTKfjyEtVP5zqDpeAorQVlY/J5xCnE - Hjk/sR8chN9qvSK1LLBcvUcmQFwfWc0JTYe1Gl/Y2QnuBIHj3UtxQkuMtfKOvmJ/bcqxSj0z1lycuZDl - mqvlZyevqdx/exzdNpRiR0V4uuoHTylIuspVmh3Zz5YWFOy3647zb4iTzV77tLUL+4r/9orOU5yEYxHZ - 3utHhdbEAcNa+2SV5go9z+EQ17WaZw3ft0hPRCr2sSdKsF3FOb/II02Jph+ijOI2XT+8Ld17z7jQFKG4 - /fDICeA/Eug29+b/FHhEVUl1Ik5AekyeVzlHiuUcv/Ot7QlBB4rux+a3/S+A71w2/ANexKXfwolaxQAA - AABJRU5ErkJggg== - - - - - iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAA68AAAOvAGVvHJJAAAAGnRF - WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS4xMDD0cqEAAAYhSURBVFhHzZhrTJNXGMcBsyxZ3DLnLYsa - NTPOLMvMtg8aY5b5ZZr4YR+2hCyLfliMbjGbi4u6mF1i5jJEJ1PBDm9TAeUiKOMiV+UitwDl0lIKhWpL - i5ZWQMpFEPjv/R88paUvUNjc9uGft5ye97zv7/yf5zlPCRo1HMNMlGHNxGqLCaHtTSi2XFed86w0YIpH - d2suhpov+ow/MUaj03wLvS03fMYnU8DQd6zZeM/ciLnNzdjf34+wvj680dEhFGYvRacxSvW+f0rDhpPI - L9YKaWv0aGgwwmA0o8pgQbGuDTlaKzKqxj5LcczVcM1vrWmhB5tO4UJLNuaVleEVnQ77h4bgHB3F4FPd - UPRpzyMscjrxpbUIWkuKeEG1tWar4XsxcHeVoSBrN5IvLkfSuXmIOT3fR9dTtiNVa0RinQHxVUYkVNgQ - W2pFRXmp3/tMCd3bFImDtjoEZ2ZivsmEdQMDArIW8FOZshk7Hw8I+CRHvup6s5WzvQgOexbsdy/AbNgP - U/02NJRtRH1+iFBJ5hxo8l/EVscHWD28DltMXyHs0m2cz2ueGTTD+e3qCgEc0t6O53t6BPRPIyNCR72k - UYApgjMSDt/LU11ztrK0pHnAXbarcFmPwWVci/v6YKHvbIuwanANPhoKFRt+rrQD358vRlFuNhyVGr/1 - VKGjm9KxODvbB5jXBb29AnyLAjZRhM8dHhY5Hig0I0ltfKIIPTJkwYDbAH1RAk6f/AJf73oJZ08EI9yx - EMuGl2FTxwrordF44OrB5do+/HC5AvryDNX1fKBZjCIMfyI4Ls4DrCbCe4thzbxmZPymfL9ZAacj3mur - 6UzfLzjY+zmaLWGq30s16TPR010Dgz0RyUk/4pJmEzRhc3Aoba4ApssMb3NjpAf68JXK6aFFOBdljQGX - lyNIqdKTieB0X4Y8tSolRYQ33eYmMBS9H6SmI33fYunIm3jn8YYp4el0jjFczPvE/j5Sy1ehoOg5rOt/ - TUDTbea1pTlqDLrGPT10rAznqChRoQV0XZ0QP3uLY9JxGfYcWxkRIRxmqNP1iQ9ymsJRffeAj3YMfiZc - IvhU8Azr+0NabB35UMwj7DfuJeJzaP9Kkdd+0MlKKkwG3Wi/OQasAC1JTBRu8eUFsLIJQUeO+IFLYLq+ - IidHFLGNWWNRQujQni4YTQk+D4rpPuSBm07rRzcj99EZz72MGh5ZDO9d7lDPPG5YrnkubNUhuJ0cErjT - MfbCMTAlhxdHRoozmEVpqc02Dqp8J/NcOs2rDOk45Z6dHcp8ZZPWKE3LtidPsN7lBDdUPohOl9/b5yM6 - 7Q3L44Zjxc4Toj+Q93oXMm4G53E+XR60BAmnC2YCvST2nHhZwhFanrfMUwK8/tAxDq5c6a78e+Hx43hL - 2Ry6y3u4DjeE97GKT1edZU57w6rdI6F5bCVdO4nttzcIl/cYFnug6TQLWZujC/FlVvyeVIb47Duw1Pq3 - pkHCvb17hduEPtjVJSBkvr5gMAjIBRUVY/muOL6jvh43lVZUHmsyj8VmKGKU5NsCK2RTwUoRWld5Sqiy - 8ABK8jbh19qXRR7LBqUwfS1uFOSLVlSK8BWFqX7rBe3ubsO7ZrPIY+EmXVeuBKakq0IK8McKPKOBecwu - jWN0lk7TXa53py3T70FqYsh7h/Fk6m/Px6Pmy6hvLBPiEVat1fiIrrLtZPspJdpQNWg+1GU6i47Wi9B0 - NogX98A/zWMJTDGklz98KCDZcsqQZhowJQKBmI3YSvIHRmxRq78UOOpqrl6ENRuTPUdTEZ+Qjge1/v2C - X0dG+J9dOqy028fh5QYorstqTmg6LHOcG1ETwNn8d0RwuswC5a2bt8qRXahDq9UpwpptKAsZ++7HjRdg - 0yWjVzd+Gqi2oZTtKbyo4t7wlAJJV1ml2ZFFdGhFtKit82+opL5R9Nrpuk5oqgY8ovMUNyE9Ptozf1Jo - KR47+9z3xRFEd19taRGuy5znd88qpAMR3Wc+h0cmCHg2JVKHTqUJt+n6jKApLkwwXg+77eIfCSLElbP5 - vwSW4j8KKIZwdV6cUEnGH+LHCd/5gT4N7sYrnvkBQU8U3c90lPwvgGeuY/gLjPkW3JD2cGAAAAAASUVO - RK5CYII= - - - - - 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 - fhwAAAAASUVORK5CYII= - - - - - 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 @@ -2502,612 +1911,6 @@ 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 - 1xe7R6QZxv8DiyxXTC5xLO8AAAAASUVORK5CYII= - - - - - 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 - 1xe7R6QZxv8DiyxXTC5xLO8AAAAASUVORK5CYII= @@ -3145,178 +1948,40 @@ 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 - SUwPzmIlAAAAAElFTkSuQmCC - - - - - iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO - vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuODc7gF0AABLHSURBVFhHtZcH - VJTXuoaxgChIR4pIEEUsCZbEElFR7FgCEgVEUWMKchQ0InYFASEqEQtSpA29t6FNAwbpvQ8oRcSG1BkY - UWeY92w8c0+ul+Qkueved6137X9mvv/fz+z/29/eW+LPpKliNN1ki1XqKftr3Ose0dwrbnHcc27x3DPu - CVzH64lcR4//Zs8xJ/2r/SWR6/Igj3s9pKl76zcpJuLH/f9IR33X9AOWdtS42DjUd7xGOLUT/whtw+7Y - 59iS/gab6f3YxBiAMbMfRqwBGOVxsaFwGFvKRmBW8Q6W1R9gUvkei/1buIYbY7eKH/t/q+XzH0556E/L - rmvk4HXvAO7ktmPBd/GYciQGUmezIOXBhpRX4W/+tQhS90oh5VcBqdAaTIlrxnT6GygxejAr6QW+9q7n - ut4sjTh3PpLi+LM/5czPfhQHBz+Krd0Dyo8/3qf8YOtLuXKNRrl6ucB9vtodGTHGn2uLYbieP6MVPrlP - wGjqhiuzEz84M/HdrUc4FFwFm9gm2MQ3/+bEFtiktMImvR2WmR1YEl6HiffyMCmhHcqxXdCL7sSxsmGU - vuSjd4CHvkEe2G0DuJrWCXOvaiy4UwnzlBe4T2uHjvolczHGn2uuusvUr7YF7vWNarQIS2yxCI9rsoim - 1FlEh9ZZRETWW4TFNPzmWBIzZhLz0fEci4CoRkvNcwyGxO0cSAY/gUJQG6wKh1DVN4oPo4BwVITqHiEu - ZPXAwLUKM9zLsSCgCXZ+bBiuCD4oxvhjJW2RlU00nW8YvWeNe+TO9WUJu405qXs2c6h7t3HSLUw4Gft3 - cjIP7OZk2Zhysg+Z/WYbMw7DZg/n0RFzTtF3e5rouxbWuBkarJI6GFgs4crEZJ9m7CsYQk3/KARjoCKg - vFsIq/iXULBnQu5cAWbdrsTxwGLYWFN/HzR1vYRSkbnS3mbbL0Nbncyedrrbj3bfdcZAwHXwQm5hOPwO - hmMegJ/wEG+TQ/A2LQwj1AiMpBNTwzGSEoqRpBDSBoOfHICWC9ZgbjUSZmyevERx4RWtyRa+HAlnOiwY - r1Db8/7jaI7Bsp8LYBjUiqmHkyF9nAYN1zy4pjbDw61oPGiFk0Rmi4v025c3VdDtpYlubx1039VDt898 - dPsuQLffInQHfEFsQLyEeBm6/Yl9l6L7PvnsTX67ReJuzMPrG7p4fmkFei7uBdtslzBzi+SSsT6U5zvr - Sdsldu2MqEIwvQLtrwbxrHcEQbU86LiVQ8rwFiR3eMM0uBZp9X2ICm8Yn6M9NAk+nkoAT4gfi9s24o4x - T4CofSLQOhmix1JA8xSgcRpE9bJA7XSIquTJ+1MAKhSBGmUIq5Qx6LsDfdcOoXC/BQGV+gg6puUWKUtX - 2TN8tTbdT19kHifa6V6C72+UQcckEtqKTu+3bAiMDIxrCKIkN7uSeTB+1vfQCWinBN6Wq4BXOB/9NFX0 - 0ZTQx1AglkMfXZZ8noa+bCn0ZRJTpdGXNhV9qTLoS5HFywhZ9KcqEXAVCKpVMBi4B4M3jqH0+8PCzG1T - /g36X1q2LnzdfM8K0f1yMusbBvBzZCssj8QKV+7wY5isi9IUh41XTw4BfSWBrtSNEPRXgV/kj+Hsaxhm - OGCIZYlhlhGxLoYYUhjOmoyhdGkMpcpiKE0evBQlvArVwsvYhWREVSGomgFu6H5w7/yMyhN2wqxtUz8B - tTAL3nzyYgbHO6kD+TX9ePyMj0ccHjziq3AiqhGnnXK+F4eOV08BAe2TQLX3bFTfOAou2xk85inwsqyJ - NxDrgZchC16aDHiJcuDFKoEXrQpejDqGknXwtsAYhQ5yQKU6BBVq4EYcwZD/RdQ6nRZmbZf5BPRmSDPF - O78PvnndCGI8w82EJljYp2HLnmBhCKW2ICqkbrY4dLx6iiT4okEJ1NzTRqmrGUZfuAHPHEmuWuFdlTGG - ijahL2MR3sSp4cVDDQxE60DEJiOYbwBR6Woy6qbI+W46yVUNCMrUwY2xBT/UDQ1XLwmzTT4FnbcmxGjO - wnv1pIXV+Ue4G9WMtS75mKnvOrBplb+qOOz31VNMRvQjqCYB3YzRl8eBLiuMcr5GW/BJCNooeFdqj6c+ - MkjfPgORi9TReX8ORIylBHYthrLNkXOYgJZoQlCsSUbdHm+jvdDs4S7M3iE7PkeNI9fN96oW+dXywaof - hGNsByzt0wSGuwIytORPqYnDxmtsRDE4ATV3ZxDQFRh9ZQo8/xrCRm10BGij2F0XzHPqoB1XQvp3qqAe - UAPzlDbexi6FiGmEoQwCeoi8+iItCAtmkrw9g5FEHzy57SXM3in3Ceg+s+ANx8+l13vEtoFZ1ovW529R - 1DKEX1MbccS/CFt3hP+HHC2awEf/RDT6q6A5eDFEfcYQvfoKotZlEDUux2jFSgiLCDh7DYQETJhlDCF1 - E0Tp2yDKMcVA/HawbAhowSwI8rXAo17Ae2og2n3vC2m7PgW9EcyheLF74ZP3BsGs57id3Azr0+nYti90 - NCSsriIiuG6uOHS8egomkl3CZPSXrERP2UrUesmi2mUqqs+T1lEO1ScVUH1CGdV2qqj+SQ1VRzVQdVgT - VUdmouqHmWCaKoKxn7x6tjaEubMwlHkVH7LD0BkUQEAVPgHVN6IY637u0zTXMBgWZ/LgFdYEw8t50NJ3 - 7Tf+yk9ZHPb76smfxBe9kUI/WxF13lNQ6S6FyqukvSCNyrNTUek4DZWnZVB5ShaVJ6ej0l6OlB55VDoo - oPJnYkdFtHioALmfQcD6DDzaNXxgRqMrLFRI2604LkeXbohYr3+zSuRfM4z8Fh5OxrTD/B8pgrW7ApJn - Kpz+4wnVw55M6ugUDBXrgFe8Db0Zi9GbsAi9UfroDddFL2UWekNnoDdEHr1B09H7kLQBiugNVCLfKaPz - tjL6I3UB5mwIGDoYorlBkBOHF1HhZEQ/Bd2z03/tCae0CjeSo9mlvWhqG0Lx4yH4pDfhqH8hNm2jHBWH - jldPrhQfL6ahI2493nUXEuB74GZeBjfZjticeDXxLHATJcGNnQxulDSplbLgRspjMIrAxszG87AvALou - BDRdDAZb4128N55HUMaBegZxwtxze3Evtxthuc9xP+0xDp3LwnZLCsnR2prI4Lp54tDx6smR5qOL5ONN - PZRfPwh+hRtGSpwwwj6EkbyNxPMwkiOHETpxhhJGUlUxkqxBPBMjZDF4+2gL8n8g6332XAiy5mDQZxd6 - nHajwPwbsoRKfwK6ZHPEFv0lvh1660JhcS4fXhEcrLvKhtZCt4HdxqF/UkcZU8mmZDpqvOaQ8mRK6qgL - KfinIHqyF++r1mK4eD36MxeiJ0Edr4I1wY2bTSYOKfhsA1I7ScFnmiHnAAHN1IMgcy64gZbou2IFpvE6 - YfqmCeNydNnmqHX6t2tFfiRHHz0ZgkPcU5jaJn9Yt9M/VkvhtIo4bLx66NP4aJdHza3PCOhGAnqMFPy9 - pOAvR1vISbxvuAd+gR067k0jBV8VUV+o4ZnPXIjopOCzxQXfmoBmzIMwQw9cyhH0Xz+K3O2bCeikT0B3 - b3uwys4xpcQ5qhU0UkcbW3kobh6CbwYHR3wLsH5T8H/I0WwZPloVUHNzJgEldfPVTlLwl0PYMAttftoo - 8dBFzkVN0OxJwT88A2lWamCc1MZIDAFlrP9XwR8DTdeHMJ3sC6KPYdDrBPL37PiQsXnSJzk3lqPOJEdv - 5b5BWN4L+Ge24vtLNOw6ED4aHFbXEBVaN18cOl49mbJ80WNFND+YifYEUuQHNkD0ejlEbcSNpNhXrIag - cA0EbFLsmRtIwd8EQepWjKaZkJXJlFQGY7AsCWiqPgRpBDTOAbx7jmSbtyMha/v0CeJuPmr7QarJxp0x - z5ZujYSFIxs3Qxqw5hKLrPXXBr7ZGPzHy+eYejKm80UcUmLYhuhiLEbxZSkUnZ6MwhNSKLSVRuH3Mig8 - Mh2FNvIotFZEoaUSCr9VRqGZCmlVkLVVHgxzAppIQBMJaMJpDPg58codti4Qd/FRBovM5piZnnE+f4Ee - eTSwXhRV2od8sh89l9hBcpQ6cutmmbeXV4XHBSf2iS+0fKaIb/tNPWlyfDSooC9ZGS2/yoNzg9hTARx3 - RXBclcC5pgyOswo4V1TBuTwDnItq4JxXB+esBjhOxGc08MxVC4ghoDEENPEMnj84+Yv48R81W3e31tJv - jrfs8clEde8HvCMnu3dCskY8+wCz0FasOcvEuju1sM58De/spyIdtcum4lt/U0+iPB/VqkChGkS5GgBL - k+Qe6Zg2C8jShijjM4jSZkOUqgtR0lwgQQ+iuHkfwRBNHCk2uRZE6+FViF131aVvFcWPl9D5zFRxxbdn - SuQvpWL/o0FU9o7+GzSr/T2W3G2E0sE4qF0swOehT/Cjbz6WL/Uff7jjuE6L63ogR+26I0/t8lKgdt1U - pHbdUKJ2/ULsqUzt8lChdl1XpXa5zaB2uapRu66pU7tcNP5lZ+KrYpPPnS5q1Nrz6yzFj5bQ1Ngiu2af - I13FhQotctq0IOf6sp4xUHx0Zsd7GNxphJxVDOTOsDHLpxY/PSzCgf1/cFz+PenPsJVcMNti7YLZVkZf - LrA3WrbAwWjpfGJ9e6Ml+g5GS8j1//RiYgPy2yI9W6M52uZG68xOxGjfSodmWDuUA55gN5uUozejGBEA - IwQ0ve09Ft2uh/yeSMiczIGGVwnOxTfgypVHfx1004qHc4sKKkFn5KGkogERrDr8SinCjfBieEaX4Xpc - BdzjK+GeWAW35GpcTanBmeRa2BHvjyvHztA8LE5owMys15Dxa8KEyywsCa1BAtmIvBz8gG7uB4TWDUPX - tRQzVvhhonkQDH1KkVTfP3ZcthBj/Lm2fh0+LSi0oqCxoxtt/e9wsZQHA5cSLHAvh753PfR8OZgb+Bhz - yWjNie7E7IQuaCe/wMz0V9CgvYEmqwfqjDeQjmrBzNuFsLpfwv/CMqJVfftdrHbKwUGvCnzrUQLDQ6nQ - NfDE9z8m4mF8Y3FoaktgdGj9v3P8L2nxwsuqTpdj81lFNXBIrceUw5GQPBgByZ/iIXkyDZJnMyF5hYHJ - rjmY4MrABLdsTPiFiQleLEz0LYZsSBWMU5/gbnb7u4jIhv0rF/t+KW/o9Xj5KTb+EdSMa+QYsu1qPlba - Jo4GxTWyyXleQdz139fqZQ+UfCMbcwLzX/BuRtTxvCg1vBtR9TzPxCaeZ0ozzzPtMe9a6mPeRs9CnpTJ - rzyp7Td4c+xTeKeSHvNuszp5gfS2vvCoButoSv3H4v/1sqD1S+xoIu/SQTx6OoJtt4oxc/bVgXVL7/3x - Ov9XFXS/cip5HepjjglrVI8KrVVPimlUT4xu0EiMadAg1xqu59nqtraZpx0u5qcs3+TnSLZsGlEknhyB - PwIYfG6lunHT4Zs/2t5nnY1vRXplH5gVvbgS2YZvTtDen3cpTfrxGPP0ivmBUmPxqnLbpJevsnazPJUS - smZ3stHYd39LFAplAo1Gm8hisSbRaTRJJpMhSafTJfeZhGuwqvrflr/8gM9Pp/O/0L2inZGRMZHBYEwk - 8ZNMjziHOPtH4/mbAYhEQDtvFP5lPBz2fYKVJN/XRz1FQHE/Nm+Ntx7r58ulP5g63wpATE0vtPZH13/s - /O9orGMmgzEGKE1aGSaTOZ18J2e1O2JJZTtf0ModxVduZSIjI4qtwbLbu+YtOLZr7jzr3eYXImqp7cMY - FogIqAgdQ6O4VcjFMrcaKF4pxgxS+D0LB7HBIjVeba6LzbKvzgSWtr5BTCWZpJaRL8Td/3Xl5uRMInDS - xPIsJnMGabWIdc45JGwILuoXeJQMQOUnKtY+aMBqMmGW3yuDwS/5OBLQgNxXQrwloGPqICN6IYfEnsmH - HNmgyHvV4SrZWa3yLIVhSAtWOeXBp3IYG+6ysdA65u+D5rBYY699KoFTJaC6xIuJV3tdT7VecLVQqPxT - Ehat/hX7zmSO2rjmCi0uMoSrbOKF+1xyRLROPvjvhRAKheD0fcDhtFeQ+SkdMsfpkHYugn1MDawuZAn3 - ns9+P9vowQfpE1RIm9zBwcNJfx90TOSVj42qnBj0a+JvQgPTT2rpuApMNvsj7GGVID216EFWxqMbxF5p - KXm3j97Oa6fkN6ClrQNPn3Yiu4aUJr9yyJn7Q8EmHEt/YSO6rh/JGZXVdFpu0LEfQpK1dZ1xyi4NkcE1 - zeKu/74I7AQCO5ajnxEvI15/YM9DL0pAOTMptjyYxWSdJn/Ak/ghccy9cDr7FpXDo1d0vWNVPn+XUtr1 - Loj2mB8aVj0YElnTG5LS9Doso6mMTs/1JfFxaam0LPfLWe1xEVWc+Mjqw+Ju//fKycmZSB48mYBKEU8h - 12PwKqTVJzYi3kdsR3yW+DyTwbpEfJn4IrEdsTmDnmNIp+XokfvUSIw28SLi5cRfsljMOSwmc+o/AaNI - SUwPzmIlAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUAE1MAGWsAGnEAHoEAIYwAI5cA + J6cAKK0AKa4AK7kALL8ALcAGNc0HNs4JONAMO9UPPtgRQNwTQt4WReEdTOYiUekjUuomVe0tW/EzYPQ2 + Y/U9aPhAa/lLdf1PeP5Rev5Xfv9bgf9jh/9lif9wkf93l/+DoP+Mp/+Rq/+Wr/+juf+mu/+vwf+5yv/H + 1P/K1v/T3f/e5v/l6//t8f/y9f/1+P/5+v/8/f////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcxoJWAAAACXBIWXMAAA6+AAAOvgHqQrHAAAAAGXRF + WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA7dJREFUSEt9lYuWsjoMhasgIqCgIEhBELkJ + WLQ/pfj+T3ZSvIwzzpztrCWzyNckOwHR7S/x7pReH9dv+hNgBNu2G9aPf1/6A2DtwbUSkrouzr6n+RXg + 9LhZ2qcrg7Kw60bvaX4DWLvTV25N2DAMfGgT7OGie9z7DegafbkK67qD+FFdgTFOyf3uBzDQw2xpJCco + 6CXOSYrxfmzmA+jKlWYVRUHod12LMBH3fwB9s1tpbpFlBWmfuo6ifbIXEd8AcGehajhL07QgpCZvajmP + PgDhjrraJxF8svpUv6mljO9/An2pK4oVRVEoPsXpTaKhY/AD6JqZonjhSwl0/hBU1K4X5oZC2AvoSk1W + /Xcl2UM1qU/6uqcVpsMT6JqNIq98711+kiTQvuimmOic9zS+8Dsg3JEV+xH4UpRA90ldnIrJ+sbZhcZQ + kwBYu5nJqu3c5T2+HUd0khZZUSz1gbPqTGM2Al2zmCuqZ48KPccO75cCiAooaq2jxTHPz5cYTkfCnUWp + aV3mWJbtq7IsG3AF8qBvEF7sTAnNYwDwCFwzaY4VbRho6oSqAELbAFmelyRh5KKg685zCb8AcgB8qnFO + 25NhaKrqjPGG7URQkzspoX5qojivLjk+A9AEaJ5PNcau5OTZlhUZmpBhpzCLJSrhpDM1JTOvKshxQV2A + JADUoWvrOgv9wr8DdgTG+pM15xfwByMzz6szpEAHJMUmAJySuqjhz/M9Q1WtBAzW1zPwB9qleGJCTTGO + GVojaWGaU1tUVKRRdoWyHC/xwdbZZmcukBmLDLpkYohvOQomSJKk6Yq29SlLIjEH6LgFW0U5/2Lpbmig + w7Fxw24o2+pI2spTdV8XWRL6nmOBValhTNYdrE8+kwSQ4zjY7UgPtpLsEJSHrTKdqn4ahb5jCyDSJi7j + DIa7EEB1ueCyJLAZN9RfSUuBEogiEtjgkhoqE8Ip+BhvEBb+xLj7B+eLwfG+H9i1uSOaLRIAoCJpJ2YV + 76DrvMK4YoOIB+AugQRjYeO0Q02dwDYIQPiDcf58wz4BWNq2HBEZEsi+5ilQCwDHAB5OfGz5I+wLuA1M + IEtAIIOjKDDc6lLFgOwO12f8OwBIR8oDILJsKfJSAKLtY9N0Y7+jvgHiZ4eILLDjQSC2IYf1qfpHv6N+ + APB2oiLLtmwOszmOxfqIl8uXPgBohZKG0DbbwoOFcTyO60ufACA94/DkHraLuRmT10/JXb8BowYKswx2 + pHurX+hPAGZJm6b9Xg/ofwDohvU/zr/d/gOjFSyLIyVhmAAAAABJRU5ErkJggg== @@ -3761,73 +2426,199 @@ aFBnMzDoGOvU1RHns8OKwl29ev8Xjm0o4imHmBUAAAAASUVORK5CYII= - + - iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 - JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUAE1MAGWsAGnEAHoEAIYwAI5cA - J6cAKK0AKa4AK7kALL8ALcAGNc0HNs4JONAMO9UPPtgRQNwTQt4WReEdTOYiUekjUuomVe0tW/EzYPQ2 - Y/U9aPhAa/lLdf1PeP5Rev5Xfv9bgf9jh/9lif9wkf93l/+DoP+Mp/+Rq/+Wr/+juf+mu/+vwf+5yv/H - 1P/K1v/T3f/e5v/l6//t8f/y9f/1+P/5+v/8/f////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFTExM + WFhYW1tbYGBgY2NjZGRkZWVlZmZmZ2dnaWlpampqa2trbW1tbm5ucHBwcXFxcnJydHR0dXV1dnZ2d3d3 + eXl5e3t7fX19f39/gICAgYGBgoKCg4ODhISEhYWFhoaGh4eHiIiIiYmJioqKi4uLjIyMjo6Oj4+PkJCQ + kZGRkpKSk5OTlJSUlZWVlpaWl5eXmJiYmZmZmpqam5ubnJycnp6en5+foKCgo6OjpKSkpqamp6enqKio + qampqqqqq6urrq6usLCwsbGxsrKys7OztLS0tbW1tra2t7e3uLi4ubm5u7u7vLy8vb29vr6+wMDAwcHB + wsLCw8PDxMTExcXFxsbGx8fHyMjIycnJy8vLzMzMzc3Nzs7Oz8/P0NDQ0dHR0tLS09PT1NTU1dXV1tbW + 19fX2NjY2dnZ2tra29vb3Nzc3t7e39/f4ODg5eXl5ubm5+fn6Ojo6enp6urq6+vr7e3t7+/v8PDw8vLy + 8/Pz9PT09vb29/f3+vr6+/v7/v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA - AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcxoJWAAAACXBIWXMAAA6+AAAOvgHqQrHAAAAAGXRF - WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS40Po3MdgAAA7dJREFUSEt9lYuWsjoMhasgIqCgIEhBELkJ - WLQ/pfj+T3ZSvIwzzpztrCWzyNckOwHR7S/x7pReH9dv+hNgBNu2G9aPf1/6A2DtwbUSkrouzr6n+RXg - 9LhZ2qcrg7Kw60bvaX4DWLvTV25N2DAMfGgT7OGie9z7DegafbkK67qD+FFdgTFOyf3uBzDQw2xpJCco - 6CXOSYrxfmzmA+jKlWYVRUHod12LMBH3fwB9s1tpbpFlBWmfuo6ifbIXEd8AcGehajhL07QgpCZvajmP - PgDhjrraJxF8svpUv6mljO9/An2pK4oVRVEoPsXpTaKhY/AD6JqZonjhSwl0/hBU1K4X5oZC2AvoSk1W - /Xcl2UM1qU/6uqcVpsMT6JqNIq98711+kiTQvuimmOic9zS+8Dsg3JEV+xH4UpRA90ldnIrJ+sbZhcZQ - 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 + AABJRU5ErkJggg== + + + + + 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 + /wH43mXDvz/ONMu59lrKAAAAAElFTkSuQmCC @@ -3860,6 +2651,370 @@ PIhCbGtSBFiY+8JgLKo0G3POLUGhgbRsscvPrNXflMppJy7RyVxu8ETblhyaCBKzgccVpIgkrpk+NFTN ZJsKDvm9uwunO6o0G/CKX1YpgisSgmcQqiohJbcE9X36i7c5ic9GDgb0Kei9tDnPs/EVEJ7OfNBAZMaI 7EvIPzRt7qkKSgHeq/9Lq6a7aUKpt+F/36xyQ/AuD/+B/0nohgbwF2YcNcxFyIn+AAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRF//// + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyO34QAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAE0lEQVQ4T2MY + BaNgFIyCYQUYGAAE2AABE91XygAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAGAUlEQVRYR82Y + W2xURRjHW8QHIzHECz4osYKXREwgMRpjQjAkRhMSffCB+KAmxEgwUUgM8iKYJkZKwSgUKKVUoC3S0m6h + tFVpt7ft/bpbdrddut3SvfSy3V7Zbu/t3/Ofdg7d3dPSIqgPv8z2nDkz+5vvm+/MNmK2+RhWQmfnDaSN + 9KPcW4Nu1zXNPg+LqeY4jFjOad4btmdjvCVR814oy5YeaDuP68NeJPj9MExPo2lmBhmBALL6XTB5qzBx + 66Tmcw8KCheWNQoajRZYrTY029pR3+xEmdmN/EYXshtt4rOE1/qsmWFjLUu6tcuAZJ8PySMjqFWER2Zn + MTWPR5HXT02Je4x+n+uq5hj/hBlnCvyDVSj56ytkXIhC+rknkRr/lODSmadFm6X7XEhfaWpGWr0N6TUe + pFa4UGu4HjbektKMnrG7HAmKMCOcq8jZFWmfIhoK5ZkBqRMTcHdc0RzvfuntLoWvR4/O20lwWPfDYf4U + 5qqtaCp6DDf1kagvXI3TRWuxw/seNk1txQf2bxBzsRhJ+taVSfc7UkTqSuFERSZTkWakmdpaUJ73jV3F + mmPeL862HAz0GDDgUdqui+h3H0WfbTO8TRHoMkfie886vDAdhY8nd0LXX4jECi8OJpXBUHAD3rr4sPE0 + pVs6S0Q6U5iyEkaR0Q6F6U1pRpv7fLnSAfuvmtdDofTMpBOBYTMsNXk4fWIP9u1+AonHI3FkcB3WT6/H + 9t4oWN0J6On3I9kUwKHkGpgr8zTHC5JmOlM4we1WI6yFXADZUppkDg7CMjqK/MGOoEkW42zgMA7596DV + GaN5X9Lemo07Q0aYnDroMn7AxfjtiI+JRHTOGiH88tRGnNU/jo5bp+AdCgjp6JQasUBa46nSajrfQ5gs + jD5TntFOUZ5T9/bkWNhEWhwOfIfnZ18X+3ApeUY63xaLN/1v4ZPOd5Fd/RJKDI9iiz9KSB9zP4Py7FV3 + pY1+/JhmXFpaVmcKswoHSS6yAAvF2SfZ4UDO2FyxKxwfDZvIZ49Fw+0DQewb+1JIS7bMbtOUH/G3onuy + ETtmPhL9tk2+gm/9z4nPO0dfhOv2alW6yzcspH/KmNsKC8eRRIy1nRNR4heX0eKXF3K8rsgI8YXMS7Pl + YrGiX+vtFf2lNDNn4UQpQ9FBgkvx9uz7KBi6W4B4IGIha/Nexm7/TrXfq9ObUNC+Bp6GVSjVBUsvGWm7 + t0IVY7T4DmZREhGfFxTt/MKIv+dJ6+4Wi0RppjTHYbpzf3Phxu1n1YkY6eqO/UF8PfZFkOzG6Tewa3IX + ynzHgw47spBNj1tRcCdJ9GP/DwMbMOGMEFU8VJp7etFCltphm5NWJGSk+b7llyeqvEQuggIXidWa0eUz + HIcZwOLG6/c6pck9vZishMddSnd7KpCReQKfFb+DDaOvYW/zs0HS7bZTcHsHkVblwon0Kujya+E0hR+V + I4SA1TonrsD3LCVk+kpJeSJjxA3KNRYs+Vpjf0ZX7av0Y0qGThbKL4GDS8pKWL3NdXGCutIDqNBvx8+m + tcp7+BFxOCEluZtxtbgQefVOFcprHk7qBiwiKnnDnXMRpDxbKTwvIlCE8wcGRDaoW0C5xoxgpDkOx1uO + MGHK3ysbCLeJv+0CLLdq0dRcAZPlDxiNpwT1jWcEyUUGcezk8VOy5DGUg3JyR5c+WF7u4wUtU5qylBTS + 7KcsDFOaz4ZO8KDgDw6rrQWpBkc4ihzJKriJ37KqxcFk79FspKXnosd0OWyssBMZq/lNJVqUCJKX4vOZ + IM/ZMht0ijCPiaHjPUgo7jAViAIlYYX+s6gaN0rNcLh8Iq3jijsRm9GIutpK8XPTY9YF/SQNk5YwnZiq + MoWDUKRllaY4F2k5afqwKG2yiLN2rnkAcXXjgvPGUaQUWAVJ1X3ITUtQ+y8qLZHy3K/ldzzqIrBlseM9 + ref+LRj99LxSxJ5MR63Zjugsm+DIVQui43JEtGOSy1cmLZGRtPQ1qMWNi/BfRljCfxQQpnCD/hIq8s4L + LIZ0sSg9lhz4W35X+y9beiGMvru38n8hvHKO4W9WZNbKBV7RMgAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFTExM + WFhYW1tbYGBgY2NjZGRkZWVlZmZmZ2dnaWlpampqa2trbW1tbm5ucHBwcXFxcnJydHR0dXV1dnZ2d3d3 + eXl5e3t7fX19f39/gICAgYGBgoKCg4ODhISEhYWFhoaGh4eHiIiIiYmJioqKi4uLjIyMjo6Oj4+PkJCQ + kZGRkpKSk5OTlJSUlZWVlpaWl5eXmJiYmZmZmpqam5ubnJycnp6en5+foKCgo6OjpKSkpqamp6enqKio + qampqqqqq6urrq6usLCwsbGxsrKys7OztLS0tbW1tra2t7e3uLi4ubm5u7u7vLy8vb29vr6+wMDAwcHB + wsLCw8PDxMTExcXFxsbGx8fHyMjIycnJy8vLzMzMzc3Nzs7Oz8/P0NDQ0dHR0tLS09PT1NTU1dXV1tbW + 19fX2NjY2dnZ2tra29vb3Nzc3t7e39/f4ODg5eXl5ubm5+fn6Ojo6enp6urq6+vr7e3t7+/v8PDw8vLy + 8/Pz9PT09vb29/f3+vr6+/v7/v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/DPJbQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAABlUlEQVQ4T52T + 6zcCQRTAFxEljzxC2UjYapXXrrdED1t6SFa02tqdDSVKQp7/ui1z6NtOfp/u3Ht+M3PuuRcDTWR8IRGG + aDTZvGcjXwgFUi1c8GeztvXbz6+vJy6YkGBKkV/7ZGIPPL/JvNduImmYVALa6fUpLyvel8rlh0rlNX/2 + k1Xkxz4xTXoZJgauZW4equFEI6tMw44OWrZ3ZXzJ8wuuIKxxsUZNGdlOrejmaYqmKIo+DMezafyuhto2 + DCQtGtpBuqxOh510+9mwU5u8zsKqElhumhh5SSzr2mfMJsId3HTkF8akS0QdEzpJ7UfZZ1s0DI9S7iXL + c/VUwxdYtL9jY1pX71sxk/IS4yQ9a+wOXWVUQTaMaE9iqh4xF/dRuGtVv18icCCQxAGsKoHx3qhFbfZs + 2g3jQzu1x51hvhjj0HsuSWIE79TjQ4b+nqMi0+WJoM5K3a7DB00dar21beX2bMvewpbCOZeEgFGl65vL + Fo7BfzY0J0TP9wb8DAfPSPza8vtA3LWlkHe7TpMtI+VggAQA31EYtvsm5zkIAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFmdXV + mdramdvbmdzcmd3dmd7emd/fnt/fmeDgm+HhmeLimePjmeTkmeXlmebmmefnnuPjn+fnmejomenpmerq + mevrmezsme3tme7ume/vnejonO3tnO/vmfDwmfHxmfLymfPzmfT0mfX1mfb2mff3nvPznfT0nPb2n/f3 + mfj4mfn5mfr6m/v7nPj4nPn5nfv7od3dod7eot/fpt7eoOLiouXlpubmp+fnoenpo+rqo+vroe7uoO/v + purqqO3toPHxofLyofPzo/T0oPX1o/b2p/LypPT0pfb2p/f3ofj4ovn5ofr6oPv7ofz8pfj4pvn5p/v7 + qvT0q/f3rPDwrfPzrfT0rPX1qvj4qvn5qfv7qvz8rfj4r/v7rfz8serqsu3ts+/vuezsuu/vvunpve7u + sfPzsfn5sfz8sv39tvn5tv39ufLyuvb2vPHxvPPzvvT0uvr6uP39vfr6vPv7vv39wurqxejoxuvrxezs + xe3txu7uzOXlzObmzefny+rqyezsz+rqzezswfHxw/LywPPzwvj4wfv7wf39xfz8zvDwyfr6yPz8yP39 + z/z8zf7+0uPj0+Tk0ubm1eHh1eLi1ePj1OTk1OXl0urq0/f30f7+1f7+2Pv72/7+3/7+4vz84/7+5/39 + 5f7+5v//6fv76v7+6///7P//9f//+////P//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFkrd1wAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAABpUlEQVQ4T2OY + hACT693i66Bs4gCS7uoQ1e7ecNeUfiifCIDQXWHj2LN85Yr5RZ4JDVAhggCme0qisHP63GUgsKjDqwwq + SghAdE+usRNV0Y/t65sJBLMWdSeCRQkDsO7JpRaiKlpa3ulZQFA4c344KbonJAuIKYOApo+vr29JUfCM + VIgkQQDUXWPLLaEIAZra2rExZosXtkFlCQGGSeVWnA6ycnLicrKyciqa+noyxplZxVBZQoBhmqC06ZJM + OW4mMTFRSWUtBdvZcXwZBbVQaQKAoYpZ2mj5THdJWWF+IXllOfMFc1o5okrSpkLl8QMGEw4Zo6XtsZHu + ksKSChIihkFZbay6kX5E6hZiYGXvytLRVRWztudtmmcpnFEsKenSCJUmABjyQlNFWKWUlWSFhXmSlsxy + 5Ilqj8gmUjMwzKdNqQwUZuUV4xfiNvBr92RT9w+DyhEG4LQ2rcVDiIWDV5xRpj1AUdJtOliGGABJ55Mm + trgLsXJxicWWeDeTk0MntkTnO3Fr6OVC+UQBuG5gXpncpCaRMwXKIwog6QaCiZ2kaJ40CQBLsmMl+qL9 + EAAAAABJRU5ErkJggg== + + + + + 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 + QmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAMAAAAJH8UlAAAABGdBTUEAALGPC/xhBQAAAwBQTFRF//// + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyO34QAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAE0lEQVQ4T2MY + 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 + 2Zu+iiHUgUsAAAAASUVORK5CYII= + + + + + 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 + YII= + + + + + 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 + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyO34QAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAE0lEQVQ4T2MY + BaNgFIyCYQUYGAAE2AABE91XygAAAABJRU5ErkJggg== @@ -3889,6 +3044,167 @@ hUPq3qd/fBNIvOyY/Jm2z1mDoPMmIWbodHIFr4ExG5s1zJ7c4s3twKYcF+AaCOQCJsXQ1N+iCpTr3ge0 yJRfxhgDz+5nsM4ZhfngWnzw7VTGEiztRDhItwLw7yEolmHiSCynzSs9BT4+/0k3YEq6By5esC9PjAXo dxRklOT2WyEJAAAAAElFTkSuQmCC + + + + + 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 + RU5ErkJggg== + + + + + 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 + AABJRU5ErkJggg== + + + + + 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 + RK5CYII= + + + + + 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 + fhwAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAD0AAAAUCAYAAAA+wTUXAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAACXBIWXMAAA68AAAOvAGVvHJJAAAAGnRF + WHRTb2Z0d2FyZQBQYWludC5ORVQgdjMuNS4xMDD0cqEAAAP8SURBVFhH1ZdtaJVlGMevlevUiJW6XA1K + y4SKZphERSF+6EtG0If6UAxBbOIHwfZhEUlQQtmkdNNNJMnUoROyOZfOTcfGfJvbOOrE8AVBRefLfH+f + r/9+13NcnfRZ2qduP/w423POuZ/nf/3/13Xfx/6Q9F/4+epVDT18WB+cPKmq69fVGfOZ0Lln0dUIfPPg + QWXv3q3iS5f0Pbx47FjE55cvq+3mzdjvhchdRbuTP5w+rf5tbeq/c6eKcbqbaz23qKcYH589q0Hd3Sq4 + cEG1N27ErhMS/yo6iXuTz5yRrV6tx/ft01sIruGaFyId/2wLTMbx3FOnVH7t2h1rhUSfon9D4PDOTllz + sx7q6lLi4kW9fuWKvsbJ7xBecosfoQwqwIV/gfAiiFszFGJFf8uQyqmrk61dKzt6VHbiRMQAXB9FMd7F + yXTeBxe/htd8Pv8ZMY9bNxT+IdqH0RR689FFiyKH7cABGcMrnX4MrgG4PpBBNhBH86CAvh5LQUZs2aIy + JvsYIp5MWzc0/hJd3dOjl1tbZQsWyDZvlu3Z0zfHj8sYbg+eO6cRRP4NijB42TK1I7yFwhVSiI60m4RG + JLoUZ/IaG5U5b55yduyQbd0q27Ytxbp1qf8hAyeja4cORcKziXGC2CeSST07c6bGcM2j/gkpuP1GIWHN + OPPY8uVKrF+v3KVL1U5U/eEzt2+XLVwomzZN1tKSoqlJ1tGRijp9764Poe9/Yct6u75ehtve8x+dP6/f + WSfuhiFgpTyklZSkRJeXq4uL05nQee4mAiN32bKspka2apWMvToSjePPV1drE99fTOEm+sCbM0cv0CZj + cXsUhfBpHnfT/xtzd/1hE+3tyq2oiPbdQlx6lYd/hV4d4uJ5LxLuLnMis40bZTj7xIwZGs777yF8Au5a + aamyGITD+HsYPR/qMLMHVqyQFRXJ6Mns2bP1JQ/7Dk5lMqQeZlJnubNEO8dPZB55ivQp+3c9fftkQ4OM + rW00w6yAAkXFAU/J4oBPZlaIoyM5bY1GYAYiMsrKlFVbm4rw/v1/x9ujvWSJPmSyJxH0E5HO3bVLVlmp + fNbwdLzEQBzP378G3M+OeZw9hs50HjafeLp7HlV3NdqvGXTmhWCweaSfoX9dpJ+3bdYsJSjQYAbba6Qj + 7iahcceJrBWm0KPPISxj5UoZIm3uXFlVlWzDBtnUqVH/j6MFhnof790b9bqLrsP929cLkdhjqOOHjGJ6 + 9Wn608V77G3+/Ih+uO+HEp/Sg5jS3/C66T4R7PQpupdmKML5kfT8BOL7lDtLH2cfOaJHOJhMoofjvhcy + dxXdS+9PyK9wNcuFM9D893PIZ+y+uGfR6awhypXQW4j7C+lPYlYpfg7eUvYAAAAASUVORK5CYII= @@ -3917,6 +3233,1144 @@ a+T9nV37IyRN3OcbFcu8vQm4fLhRjLt/N7b6k+ol1DTlzXkrjXOpDk1RaZBWDF7RWAUHf/ivSSPQiF9T L0MnEoHuIFKUQI43Ae+JfWi8KK1gam+IUMXojn2A2D5QwspXfEH/A17q/SLsamD4DH1g++jCDancafj1 87e8EWiWR3/gfyItEMAfGSFv/tw5mZ0AAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAABGdBTUEAALGPC/xhBQAAAwBQTFRF/w8n + /RMq/RMr/hQr9yI3+SM5+iU7/Sc89jBFznJ//EJV/ENW9VBh9mNy92p4+Wx64XuJjo+PvJihrrO5sre8 + uLu/vL/CxYOOyqesy6it17W84o6a7pCZ75Ca5Kat6ayz77i/97m/xsfIzsPKzM3Ny8/VzdHX08XL1NXW + 1djc2tzf3N3e3d/h8s3R9c3R4OHh4eLi5ebm5ufn6Ojo6enq7e3t9OLk8vLy9PT09vb2AAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJD5aTwAAAAlwSFlzAAAO + vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuND6NzHYAAAB0SURBVBhXTcnZ + GoFQGEbhzw4JYduRoQEJDWgu939j1d/Bts7eZ4H/B97IegkNphDb0bgieWzmnxg7DM/f4DyFexv0eDLA + zu8kIwiXWJXli7SLLWBe1xFp70Jd49okpKOivD9Y/NJe1QTON9NxKejJOsk4bwGhyBMzrrTmTgAAAABJ + RU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFRFqS + R1yUSF2VSV6WSl+XS2CXTGGYV2qdXnGhYXOkZHalZ3inbn+qd4arjo+Pi5m7jJm6kJ29rrO5nafAo67I + r7jPsLnRt7/Vub/QusHVvMPWxsjKxcnNysvMyczQy8/Vzc/Ryc/dzNDW1dXW1djc1dnd2trb29zc3N3e + z9Ti3N/k3uDh3+Ll3uHp3+Lp4eLi4OLm5ubm5+fo6enq6+vs7O3t7e7u6uzw7e7x8vP08vP29PT09fX1 + 9vb2+Pj4+fn5+Pn6AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARbOMIgAAAAlwSFlzAAAO + vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuND6NzHYAAAB/SURBVBhXY+BD + Bgx81hBgZ29rDeIJgYCcMK+WDZgnLy+vZMHOIGEL5SkZiDJwGUFUquqoWHIwSqmDeTKKImaSzFx2ymCe + Ng+jJjeruK0GmKegy8TMyulgrQ/mSZvzs7CJ2dsagnmyanoCglamJsZgnrW1jb2dDcg9QB4C8PEBAFWP + FTAV/UJaAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAA0AAAANCAMAAABFNRROAAAABGdBTUEAALGPC/xhBQAAAwBQTFRFjo+P + rrO5r7S6sre8tLm9uLu/u77BvL/CwcPFwsTGxsfIysvMzM3Ny8/VzdHWzdHX1NTV1NXW0NPY0NTZ0tXa + 1Nfb1djc29vc2Nve2tzf3N3e3d/h4OHh4OHj4eLi4eLj4uPk4+Tl5OXl5ebm5ufn6Ojo6enp6enq6urq + 6uvr6+vs6+zs7Ozs7e3t7+/v8PDw8vLy9PT09fX19vb2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkW0KowAAAAlwSFlzAAAO + vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuND6NzHYAAABrSURBVBhXXcdt + F4EwFADgRaSIUmJ6w1rycnVn//+/mbvj7BzPt4f9Uc53Hpn4c7vY2BZ88ds6P5SnyG6T7Xgr5Io2LXgt + nwApbVZehhciHmnBuQdUb9XQwh5GpbUWtGWyr7rb436lOWYOYx8cDA/QsvGKEgAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEU9AAdPAAlUAApfAAtoAAxvAA18 + AA6BAA+MABCRABGeABKhABOlAxaoBhmrCButCh2wDSC2FCe6GCu7Gi2+HTDCJTfGKz3ILkDLNEbNN0nS + RFTUR1fVSVnXT1/ZUmLcW2rdXWzgaXbicH3mfIjohpLpjJfrkZvun6juoarwqbLytbz1xMr2x8330NT5 + 3eD64+b87O798vP+9fb++fn//Pz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + 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 + H6YwJdAl+mOdAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUAMQAAPwAAQwAATAAAUwAAWQAA + YwACZwICaAIGcAYJdAkQgBARgRETgxMWhxYZihkbjRsdjx0gkiAnmCcrnCstnS0woDA3pTc9qT0/qz9F + r0VJsUlUuFRYulhau1pfvl9jwGNrxGttxW13ynd9zX2J0omS1pKX2Jec2pyo36ir4Kuy47K9573K7MrN + 7c3V8NXg9ODm9ubu+e7z+/P2/Pb5/fn8/vz///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB6Ra9RAAAAGHRFWHRTb2Z0d2FyZQBQYWludC5ORVQg + djMuMzap5+IlAAADs0lEQVRIS32VDbt6TBDGt0haRRFZImGFVu0fq+//zZ5ZvZw6L8/dua6cy/x2Zu4Z + Qre/JNpTen1cv+lPoGPEtt2wevz70h9A1xxcK2Gp65LsM82vgODHzdI+XTsoi7hu9J7mN6BrdnjlVqwb + hkEMTUI8QtvHvd+AtsbLVVhVLcSPaikhJGX3uz+AgR9mSyM5QUEvCcFSQvZjMz+Atlhhi1LK+KeuNEzk + /W9AX+9W2KVZRlnz1HUU75O9jPgAwJ2FjkmWpillrGJvaoSIfgDSHX21TyL4ZNWpelPDO7H/DvQF1jQr + iqJQfujpTbKhY/ANaOuZpnnhSwl0/hBU1KwX5oZD2AtoC6zq/ruS7KGKVSe87nlJ+PAE2nqjqSvfe5ef + JAm0L7uhEyxEz+OLuAPSHVWzH4EvRQl0n1T0RCfrm+guPIaaJNA1m5mq285d3uPbcWQnKc0oXeJBdOWZ + x90ItPVirumePSr0HDu8X0ogolDUGqPFMc/PlxhOR9KdRYFxmzmWZfu6qqoGXIE86BtEFjtTQfMYADIC + 10yZEw0PA0+dUJdAaBsgy/OSJIxcFLTtea6QF8AOgE/BBd6cDAPrujPGG7YTQU3upID6uYnivLzk5AxA + HaB5PsVdd2Unz7asyMBShp3CLJaogJPO3FTMvCwhxwW1AVIA0Ie2qaos9Kl/B+wIjPUnayEu4A9BZp6X + Z0iBDkiJTQAEZxWt4M/zPUPXrQQMxusZ+APtcjIxoaaYxB1aI2VhmlNbVkTTKLtCWY6X+GDrbLMzF8iM + ZQasmATiG4GCCVIUZbriTXXKkkjOATpuwFZZzr9YuRsaYDg2rrsbyrYYKVt1qu8rmiWh7zkWWJUaxmTd + wvrkM0UCOYmD3Y71YCvLDkFx2GrTqe6nUeg7tgQiPHE70cFwFxIoLxdSFAw244b6K2s4UBLRZAIbXNJD + bcIEBx/jDSLSn5i0/+B8OTjR90N3re8ItmUCAHSk7OSs4h10nZeElN0g4wG4SyLBWNg47RDrE9gGCUh/ + CMmfb9gnAEvbFCOiQgLVx54GtQBwDODhJMdGPMK+gNvQSWQJCGRwNA2GW17KGJDd4fqMfwcAaVlxAERV + LU1dSkC2fazrdux31Acgf3aYzAI7HgRyG3JYn7J/9DvqGwBvJy6zbIv6MJuTWK6PfLl86QcArXBWM95k + W3iwCInHcX3pJwBI3wl4cg/bxdyM2eun5K7fgFEDh1kGO9a+1S/1JwCz5HXdfNYD+h8Auun6b+ffbv8B + CV4lp0vtr3kAAAAASUVORK5CYII= + + + + + iVBORw0KGgoAAAANSUhEUgAAADAAAAApCAMAAABEBVrmAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6 + JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAADAFBMVEUAE1MAGWsAGnEAHoEAIYwAI5cA + J6cAKK0AKa4AK7kALL8ALcAGNc0HNs4JONAMO9UPPtgRQNwTQt4WReEdTOYiUekjUuomVe0tW/EzYPQ2 + Y/U9aPhAa/lLdf1PeP5Rev5Xfv9bgf9jh/9lif9wkf93l/+DoP+Mp/+Rq/+Wr/+juf+mu/+vwf+5yv/H + 1P/K1v/T3f/e5v/l6//t8f/y9f/1+P/5+v/8/f////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcxoJWAAAACXBIWXMAAA69AAAOvQFH+5CtAAAAGXRF + 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 + SUwPzmIlAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vAAADrwBlbxySQAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAPZklEQVRYR7WY + C2xU15nHzRvHgHkZv8fYHjyMPfY8PDOe5533nffDM/Z4jDGkCqoQasRGoG432SjbbJosu2IXNUoatYUC + baLQRM3mwTZdsumWog1ig0KVDW42CaAQWtKyJDYYMBj/93/GNwHHpIRq90g/Xc+dc+f87ne+8517XXK7 + ZppXuXBbTeOLh7SG4RMmafgdo3f4KDli8g4fNvmm0jmV39oiwyecmY8fqffHlJ/7/2nu0rqFzzRqXh73 + eIFcHy4HevCaK4cdnl48HCjg23I/HiIPkG+GSWQN7o8N4OHEWjyRGMTu5DpsSw6i3949vLnaE1Z+9v+2 + bSh3zBu2h15FJgMU+vFxOIeU2ouFag/KdEGUmSIos8Sm0hVHmT2BMlcKC73dqJYLaCI2Xx7fsKaH3zPH + f3K0XdpzuNW+5wg5qLXveVVj27O/pWvPKzy+YwjtOa6Pficx31qmaNy+PbzCvepTOYtz4SyQ6cN7cg9e + Mch4wRzFc84k9nky2EeZz/ERfxb7AjnsDuYw4E5jVlcEc7w5qDkDYakHv0gMAPm1QD+Pa0iuH8c5S09Z + kkhZk3jKn8e5UA7u0o6conH7Fio1lN5T6+g9L2X6Lvu6+y57M31XXekiV6R032XPzbCPgH0+Y1jKFEzt + 8oESSxilziwanDnsZVqgfz2w/m7CY2EdjgULKBiTaDUlkLJncMAeweblzkFF48vbRM3sBddV5c6rqhXf + GaurOnK9vmoIquohrKydpLFuCE31Q2hW3Rp1A1EdR135sfdXLLGVNTveKDHKmGfrxs7ozaKkbx32evNo + 0MqobY/Cxsi+7ohhX1Pg1qKoKlmKhrm90CzbDZ3qFEza67AaALsJcJoBtxXw2ACvA/A5gYCLuG/g52dx + 3k98dqC9CaipHEf1DENjub5u3krbUAnTZpecZxQHJ6MpRHvXYTOjvUTtQ/nqEAzGCN7zd+OkMTZdFLqS + f4Fh1iWY5wGWUsC6gCwEbOWT2BcrLCFLb2AjXcTK78zs17mI8NqO5WQloKobR80MgxhDXW5YVa7xnd7u + TuKinGCerqHwWlxIDcBt5OJbYUZpnRWPO1NAuh9j7vT0HEWoZBQ9JUD2JnJfIDuDzAS6SWYWf2w2kCLJ + OUBi7iQp3miS2OoAQzPQuJKiM4uiom1Y6Tdu0srfs1Z3vZJt8E5sN8XxUmcC7loJjrm6sYerHE+PeNM7 + L/m6/5brYPqqh6yIJjhIjJEJ8RjiwLKAIjKFQpQLUTJIAvxb4Od5gVscbxJ1qBhZDbBKPY7aG6KftfWV + binRmZg4JyoAo/cfUha71Z7xjXX2A9sqpRql2/SGMEXzFPVXM9GTlGWOhZifshYIN5JKwimVhSgj+5lk + gDchBF13MX95g0XR+fzMa6ytgFZD0VlTRHepnKFfdwSHzvpy7N/PHGWpygzgpDeJX0oZvKELb1C6Tm+I + UrSfoiI3O1cBESHJgYJcEMEqwnwNCjHio5yHchKlPMxnH6+Jso+W55P8nKCoW80c7gB0bRSdPUX0tLN7 + z9loP85H+nBB7sVpbwa7tAE8rHKOX3SlDo05041K1+kNMYquoWhXGWDktOWNvNM25iQjk6REjJEOcsF4 + KeGgjES5CCMY5eKKVzDavEbNm0gIUeLhtLv4G/qOaaLRFU5PoLzrbR6xl+XoD1I3thiiMC8yfvJQhb1C + 6XbrdkOUgxgplV9NUUpmKOFkZHMsPXGmgY0ytfMxtpj9uhhlmSs+uoJp0jApGuf5GPGxr2QBTKZx1E0V + FW19lSQlLMmJT1Kc9vQaHPZwJ9MGrm2us++3zmmtVLpNb5+LWhkxI0tLnhHqpWSGEbYTEyPYToHVnHI1 + p7yJ/Vp53kNRmfkbpGgzpz7GXI0Sv46yrLkWC0XnTBHdqXL6Xm8PvH2SckgUJnO0ewC/82fwM3sMj9S5 + /0SOClGRo3ZKODmd/Zzu/DJOPUUyPCYoH6N4hNErivH7ACMfqJ2cdi+PQlRICgLthBuDrWua6IfOzJ4z + kQLOkYvhXvyezwdPtwXw6ErX9Yuu9JtXnGm10nV6Ky6mAldznEJCysJpNHBlt/PYRoFWRlLLm9CQFkZz + FaOrFlCqhaj4fSP7RhjlMD8H9UwHpovTTtG5U0TjlS6/b7HteIg5uksXwRlXBpv1EVgXGc8/sMy+TOl2 + 64boDIqy9EQ4oJVHE9GTdsrqSJuAIq0KYoUXYX9xE23ExJsIC1FSLG0SF5RrHPVTRUUbrHJ74+bkxKfc + lcS0/5pp8NRq/7UtdfYXzHPbvnxBIULRPMVizMUYpzHI6fdylUvcEt08J+qki5F0Us5JUQePdso5iJOC + FiIqgawQ4ooP80Fbck+L6JN1dvcvdYE33xc5GmeO5iibHcC5QAYvMkcfqnXdo3Sd3hCeSVFGzcvc64tR + tmty+nwsMz4uFB/z00dZH9PDQyT2FbuRRGGJsh5xM7yxoiRxsv56+RDjZkS/IHrKmdn7QbiAP4b5tsAc + PRfI4rn2IB5rFDmaOsY62qJ0nd4QnjWKXg5sZskxcY9OMCJxrtwI/45w0UQY2TClxHYapJifEfSJMiTy + kddEa5irPB8SGwMRe72uHmion7YzDVS75fhS28lwpQu7WEfPuDPYKnK03PjJjirXbeqoTNEeilo4SLHg + M8d6WT+zfAJKcqXHGOkgC7yXck7iZdREwY8oBV/mNU0ULe5gxMEarCdV4jGvZFqOrq+WpLglxTo6Oe0H + vT14XOO7urXOvs86t2250m16K4rmGC0zF0Kx4HPKeykpSpMo+GmmQpTnujjltfNY8JmvNgqJgi9Klij4 + RVFGXoi6uIWauBXXVhefR5Vhim1Hrc12oM1/eIgPIsU6SlGxoM4HWUdtUXyr2vkncjQ0exRZDmTmVBop + l+fU9fKY5ufPCn4HIylWuZqSjTcXfBFtRTRA0QBFJd6UhbuTqu4qRafknMjRIeboR+RyJI9Pg1m81BHC + Pza5RR39rzFXerXSdXrjA8ekqI1iXg4uCn4fRXMkI2orpzfGyEVY7ItijLqfeSkKvph2N8818nq/Iuql + ZBefFVbVPc+9foYyTLE91hyIPVjn+XCwRsKutghOO9O4ryPMvd7wyXernV++fYpWFM1wgRR3HuadqKFt + XN1aHjWc7lXMX7GXi91HRE5INbC/iohjDc838JyPoj4hSkm7bgTaGq0yRLEVFquan1Dp/uatdvnpFx3p + ibE4H/P4PHqUj3yPawKXPzIndpyxJB47povcm7/LNk+57Ebjc+Uo0mIlEwsH7RRwYBMxEgPPC/QCTnsH + EXu/7iaMnA0PRT0U9bFi2Fq3KT9fbJ4F9XWD9avffdIWLL55Yh3fmdZNvjM94criPp2MrdYUng724Wyo + Z8I9X59RLr3R+Iw5Wnwyj1EgzEEFMgcOkSBzURBgnvpJMWICIUXEpjAFfufUfIyOhiXKz5e4y1RLvt6g + O1zf4cePo+JdSUgqorlBDFgzaGr2QtcRRQ+l93NRbVhqv8XLnXHWT2Gb8zKsxDL3ZZhJ52fMe5nb4yTG + +ZMYSqeiVyh+5vftlQXlp0tMpTUL7lvZ9q8thgCsfNvcJd7ri6KUVEQLFK1t9KCWe7/NlsLP+br8TOOX + vC7fqsXna+akFqx0pxY0er5WrvWsJ4OCRVrPgIB/f5F+UuB32YUaT6CswbNVpX3WYQ7A5MpBbc9iR2S6 + aNaSRr1KQkVrGAZLHEe9abyjj3510YeWO9SI8h1KjnDlp3ElnMbvXDF86I7hlJTACW8CH/Bd5wNfEu+T + 4/4UjvhSOEB+zO+2uyLo56Bm5l2FPYMZ+jAGXClcZ93EGuYpGU0PwGeMo3W5HbManNhsi2Ni8nW5T9G4 + fXukwn3XBVfikPgvHvoH8Zv4AAqGOFKmBOLWNMK2DEKOLJ/ocghIPfB4e+Hw5WEO5GEIFWBireyQCyjn + 64bZEsPervhovtH9fketFffqwnjWksD3+cq8udkP35JOvNTiw7A388aov/uHfF3+PMe/Uusv11f8p95z + ELEUDvrTWKiWUNrsRmmLF6WtAZTqgijVy5hnDGOGUSYhzOjk0RLGLFsMlc4kHvBn8YdQ7soVKb1m4xJb + Z/0Ky39vaI3gNWc33uVT1KP6KDZqfNcveDO/ouBiZeg7b/cutS09L2VeH4nmR0670yNnXKmRD6X0yClf + ZuSUv3vkVCA78q4/O/JgZ2ykrNZCOkcCWv/IIV925PfhnpEROfc/l6X0ACWKxf8bS53eAU1o4mycFaBn + LR41x2BeoP9k69KuL9/nv2q70JUs5UBVk2SqxlypqglPpuq6lK6+7klX8+/q99ojVa9qglsOdkT/eUO1 + fSsf2aq5JVbxWBQoLG6seLBa/Q/7NV3/9qaXe32SBZ/7/TtSDt/VhsbeMsR/tl8jb/l6uWOu6L96Tu38 + DRVNj+xu9f/ovnqfR5y7o3bJ5ZqBUGgmwuFZPM6BzOc/srPWXc3BLyG/Dj1tgdH8Ar0KweBMfjeT/WY9 + rjb8aMjOJ/8CBcU/yAbW49PEAJ63ZbGR+f4t5vlwrB/frvEOiHG+trQlM2S242qqAGuj9HZx8DtpxYEn + 5eaTMrKQLNpb7zYgt/Ya1qzHPcbExDcrXRsLSy3JaLkmGVrUlHqq3f2b4hO9KPbiv3kU/Si2BuuNKTTq + Y2hlPT3Fz/ev9D+nW2hYt36Z7ofIFnA1yUXaKJ1Rhv/qrRjJSclysoLUkZVHtV7fxVj/tZPcw1taAthi + S+NeLpgNXQkUOqN8HU7zyUzZPu+ejOixMPvqoqjlA0o96+lxVopNnawEvG4TN4BzyQHcb40g0+T5s0TF + tJdSroI0ET1xnDH5B1L62LiaZSZbYcFOXfD6PmN4fFeHPL6p2Tu+0xCeEIsHg0KW9K/D8yxlFbypitUy + yg0x/Lsnhb3twfEftIfGPJW2q+XaAMpZzp5V++5cVDSKiaguUkTtJD3qCPyFdYHx2rZqOy47ktfgjz2J + YPTvyXb4I//0oiVy4lKUUc3xxa6nB0ixNNkTqG2wo4Elb7Azgqss9hPB5FsIhXf+osX5gmOBAYc0AYw5 + U79Vhr7zRrkZRORoAzER7zMqx/ZL9sRrE57ELsjhLTz3d+QH5Nk/uuVffRTIjCDRewVJEu+9ciGUHR11 + JT+9KKXOXfRnzl4OZo7wuu+x/0/hD/38A33wxLg7OTQuJe9Whv3zWzEVZHk2mUvmESG/nGiIh+TJJvKX + 5K8o8tfkQfIA4flwjjgZxVX8vpKoSBuxkE6E5WbIcun/AvJ6jtQaqNeIAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAACoAAAAqCAYAAADFw8lbAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + vgAADr4B6kKxwAAAABl0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuODc7gF0AABLHSURBVFhHtZcH + VJTXuoaxgChIR4pIEEUsCZbEElFR7FgCEgVEUWMKchQ0InYFASEqEQtSpA29t6FNAwbpvQ8oRcSG1BkY + UWeY92w8c0+ul+Qkueved6137X9mvv/fz+z/29/eW+LPpKliNN1ki1XqKftr3Ose0dwrbnHcc27x3DPu + CVzH64lcR4//Zs8xJ/2r/SWR6/Igj3s9pKl76zcpJuLH/f9IR33X9AOWdtS42DjUd7xGOLUT/whtw+7Y + 59iS/gab6f3YxBiAMbMfRqwBGOVxsaFwGFvKRmBW8Q6W1R9gUvkei/1buIYbY7eKH/t/q+XzH0556E/L + rmvk4HXvAO7ktmPBd/GYciQGUmezIOXBhpRX4W/+tQhS90oh5VcBqdAaTIlrxnT6GygxejAr6QW+9q7n + ut4sjTh3PpLi+LM/5czPfhQHBz+Krd0Dyo8/3qf8YOtLuXKNRrl6ucB9vtodGTHGn2uLYbieP6MVPrlP + wGjqhiuzEz84M/HdrUc4FFwFm9gm2MQ3/+bEFtiktMImvR2WmR1YEl6HiffyMCmhHcqxXdCL7sSxsmGU + vuSjd4CHvkEe2G0DuJrWCXOvaiy4UwnzlBe4T2uHjvolczHGn2uuusvUr7YF7vWNarQIS2yxCI9rsoim + 1FlEh9ZZRETWW4TFNPzmWBIzZhLz0fEci4CoRkvNcwyGxO0cSAY/gUJQG6wKh1DVN4oPo4BwVITqHiEu + ZPXAwLUKM9zLsSCgCXZ+bBiuCD4oxvhjJW2RlU00nW8YvWeNe+TO9WUJu405qXs2c6h7t3HSLUw4Gft3 + cjIP7OZk2Zhysg+Z/WYbMw7DZg/n0RFzTtF3e5rouxbWuBkarJI6GFgs4crEZJ9m7CsYQk3/KARjoCKg + vFsIq/iXULBnQu5cAWbdrsTxwGLYWFN/HzR1vYRSkbnS3mbbL0Nbncyedrrbj3bfdcZAwHXwQm5hOPwO + hmMegJ/wEG+TQ/A2LQwj1AiMpBNTwzGSEoqRpBDSBoOfHICWC9ZgbjUSZmyevERx4RWtyRa+HAlnOiwY + r1Db8/7jaI7Bsp8LYBjUiqmHkyF9nAYN1zy4pjbDw61oPGiFk0Rmi4v025c3VdDtpYlubx1039VDt898 + dPsuQLffInQHfEFsQLyEeBm6/Yl9l6L7PvnsTX67ReJuzMPrG7p4fmkFei7uBdtslzBzi+SSsT6U5zvr + Sdsldu2MqEIwvQLtrwbxrHcEQbU86LiVQ8rwFiR3eMM0uBZp9X2ICm8Yn6M9NAk+nkoAT4gfi9s24o4x + T4CofSLQOhmix1JA8xSgcRpE9bJA7XSIquTJ+1MAKhSBGmUIq5Qx6LsDfdcOoXC/BQGV+gg6puUWKUtX + 2TN8tTbdT19kHifa6V6C72+UQcckEtqKTu+3bAiMDIxrCKIkN7uSeTB+1vfQCWinBN6Wq4BXOB/9NFX0 + 0ZTQx1AglkMfXZZ8noa+bCn0ZRJTpdGXNhV9qTLoS5HFywhZ9KcqEXAVCKpVMBi4B4M3jqH0+8PCzG1T + /g36X1q2LnzdfM8K0f1yMusbBvBzZCssj8QKV+7wY5isi9IUh41XTw4BfSWBrtSNEPRXgV/kj+Hsaxhm + OGCIZYlhlhGxLoYYUhjOmoyhdGkMpcpiKE0evBQlvArVwsvYhWREVSGomgFu6H5w7/yMyhN2wqxtUz8B + tTAL3nzyYgbHO6kD+TX9ePyMj0ccHjziq3AiqhGnnXK+F4eOV08BAe2TQLX3bFTfOAou2xk85inwsqyJ + NxDrgZchC16aDHiJcuDFKoEXrQpejDqGknXwtsAYhQ5yQKU6BBVq4EYcwZD/RdQ6nRZmbZf5BPRmSDPF + O78PvnndCGI8w82EJljYp2HLnmBhCKW2ICqkbrY4dLx6iiT4okEJ1NzTRqmrGUZfuAHPHEmuWuFdlTGG + ijahL2MR3sSp4cVDDQxE60DEJiOYbwBR6Woy6qbI+W46yVUNCMrUwY2xBT/UDQ1XLwmzTT4FnbcmxGjO + wnv1pIXV+Ue4G9WMtS75mKnvOrBplb+qOOz31VNMRvQjqCYB3YzRl8eBLiuMcr5GW/BJCNooeFdqj6c+ + MkjfPgORi9TReX8ORIylBHYthrLNkXOYgJZoQlCsSUbdHm+jvdDs4S7M3iE7PkeNI9fN96oW+dXywaof + hGNsByzt0wSGuwIytORPqYnDxmtsRDE4ATV3ZxDQFRh9ZQo8/xrCRm10BGij2F0XzHPqoB1XQvp3qqAe + UAPzlDbexi6FiGmEoQwCeoi8+iItCAtmkrw9g5FEHzy57SXM3in3Ceg+s+ANx8+l13vEtoFZ1ovW529R + 1DKEX1MbccS/CFt3hP+HHC2awEf/RDT6q6A5eDFEfcYQvfoKotZlEDUux2jFSgiLCDh7DYQETJhlDCF1 + E0Tp2yDKMcVA/HawbAhowSwI8rXAo17Ae2og2n3vC2m7PgW9EcyheLF74ZP3BsGs57id3Azr0+nYti90 + NCSsriIiuG6uOHS8egomkl3CZPSXrERP2UrUesmi2mUqqs+T1lEO1ScVUH1CGdV2qqj+SQ1VRzVQdVgT + VUdmouqHmWCaKoKxn7x6tjaEubMwlHkVH7LD0BkUQEAVPgHVN6IY637u0zTXMBgWZ/LgFdYEw8t50NJ3 + 7Tf+yk9ZHPb76smfxBe9kUI/WxF13lNQ6S6FyqukvSCNyrNTUek4DZWnZVB5ShaVJ6ej0l6OlB55VDoo + oPJnYkdFtHioALmfQcD6DDzaNXxgRqMrLFRI2604LkeXbohYr3+zSuRfM4z8Fh5OxrTD/B8pgrW7ApJn + Kpz+4wnVw55M6ugUDBXrgFe8Db0Zi9GbsAi9UfroDddFL2UWekNnoDdEHr1B09H7kLQBiugNVCLfKaPz + tjL6I3UB5mwIGDoYorlBkBOHF1HhZEQ/Bd2z03/tCae0CjeSo9mlvWhqG0Lx4yH4pDfhqH8hNm2jHBWH + jldPrhQfL6ahI2493nUXEuB74GZeBjfZjticeDXxLHATJcGNnQxulDSplbLgRspjMIrAxszG87AvALou + BDRdDAZb4128N55HUMaBegZxwtxze3Evtxthuc9xP+0xDp3LwnZLCsnR2prI4Lp54tDx6smR5qOL5ONN + PZRfPwh+hRtGSpwwwj6EkbyNxPMwkiOHETpxhhJGUlUxkqxBPBMjZDF4+2gL8n8g6332XAiy5mDQZxd6 + nHajwPwbsoRKfwK6ZHPEFv0lvh1660JhcS4fXhEcrLvKhtZCt4HdxqF/UkcZU8mmZDpqvOaQ8mRK6qgL + KfinIHqyF++r1mK4eD36MxeiJ0Edr4I1wY2bTSYOKfhsA1I7ScFnmiHnAAHN1IMgcy64gZbou2IFpvE6 + YfqmCeNydNnmqHX6t2tFfiRHHz0ZgkPcU5jaJn9Yt9M/VkvhtIo4bLx66NP4aJdHza3PCOhGAnqMFPy9 + pOAvR1vISbxvuAd+gR067k0jBV8VUV+o4ZnPXIjopOCzxQXfmoBmzIMwQw9cyhH0Xz+K3O2bCeikT0B3 + b3uwys4xpcQ5qhU0UkcbW3kobh6CbwYHR3wLsH5T8H/I0WwZPloVUHNzJgEldfPVTlLwl0PYMAttftoo + 8dBFzkVN0OxJwT88A2lWamCc1MZIDAFlrP9XwR8DTdeHMJ3sC6KPYdDrBPL37PiQsXnSJzk3lqPOJEdv + 5b5BWN4L+Ge24vtLNOw6ED4aHFbXEBVaN18cOl49mbJ80WNFND+YifYEUuQHNkD0ejlEbcSNpNhXrIag + cA0EbFLsmRtIwd8EQepWjKaZkJXJlFQGY7AsCWiqPgRpBDTOAbx7jmSbtyMha/v0CeJuPmr7QarJxp0x + z5ZujYSFIxs3Qxqw5hKLrPXXBr7ZGPzHy+eYejKm80UcUmLYhuhiLEbxZSkUnZ6MwhNSKLSVRuH3Mig8 + Mh2FNvIotFZEoaUSCr9VRqGZCmlVkLVVHgxzAppIQBMJaMJpDPg58codti4Qd/FRBovM5piZnnE+f4Ee + eTSwXhRV2od8sh89l9hBcpQ6cutmmbeXV4XHBSf2iS+0fKaIb/tNPWlyfDSooC9ZGS2/yoNzg9hTARx3 + RXBclcC5pgyOswo4V1TBuTwDnItq4JxXB+esBjhOxGc08MxVC4ghoDEENPEMnj84+Yv48R81W3e31tJv + jrfs8clEde8HvCMnu3dCskY8+wCz0FasOcvEuju1sM58De/spyIdtcum4lt/U0+iPB/VqkChGkS5GgBL + k+Qe6Zg2C8jShijjM4jSZkOUqgtR0lwgQQ+iuHkfwRBNHCk2uRZE6+FViF131aVvFcWPl9D5zFRxxbdn + SuQvpWL/o0FU9o7+GzSr/T2W3G2E0sE4qF0swOehT/Cjbz6WL/Uff7jjuE6L63ogR+26I0/t8lKgdt1U + pHbdUKJ2/ULsqUzt8lChdl1XpXa5zaB2uapRu66pU7tcNP5lZ+KrYpPPnS5q1Nrz6yzFj5bQ1Ngiu2af + I13FhQotctq0IOf6sp4xUHx0Zsd7GNxphJxVDOTOsDHLpxY/PSzCgf1/cFz+PenPsJVcMNti7YLZVkZf + LrA3WrbAwWjpfGJ9e6Ml+g5GS8j1//RiYgPy2yI9W6M52uZG68xOxGjfSodmWDuUA55gN5uUozejGBEA + IwQ0ve09Ft2uh/yeSMiczIGGVwnOxTfgypVHfx1004qHc4sKKkFn5KGkogERrDr8SinCjfBieEaX4Xpc + BdzjK+GeWAW35GpcTanBmeRa2BHvjyvHztA8LE5owMys15Dxa8KEyywsCa1BAtmIvBz8gG7uB4TWDUPX + tRQzVvhhonkQDH1KkVTfP3ZcthBj/Lm2fh0+LSi0oqCxoxtt/e9wsZQHA5cSLHAvh753PfR8OZgb+Bhz + yWjNie7E7IQuaCe/wMz0V9CgvYEmqwfqjDeQjmrBzNuFsLpfwv/CMqJVfftdrHbKwUGvCnzrUQLDQ6nQ + NfDE9z8m4mF8Y3FoaktgdGj9v3P8L2nxwsuqTpdj81lFNXBIrceUw5GQPBgByZ/iIXkyDZJnMyF5hYHJ + rjmY4MrABLdsTPiFiQleLEz0LYZsSBWMU5/gbnb7u4jIhv0rF/t+KW/o9Xj5KTb+EdSMa+QYsu1qPlba + Jo4GxTWyyXleQdz139fqZQ+UfCMbcwLzX/BuRtTxvCg1vBtR9TzPxCaeZ0ozzzPtMe9a6mPeRs9CnpTJ + rzyp7Td4c+xTeKeSHvNuszp5gfS2vvCoButoSv3H4v/1sqD1S+xoIu/SQTx6OoJtt4oxc/bVgXVL7/3x + Ov9XFXS/cip5HepjjglrVI8KrVVPimlUT4xu0EiMadAg1xqu59nqtraZpx0u5qcs3+TnSLZsGlEknhyB + PwIYfG6lunHT4Zs/2t5nnY1vRXplH5gVvbgS2YZvTtDen3cpTfrxGPP0ivmBUmPxqnLbpJevsnazPJUS + smZ3stHYd39LFAplAo1Gm8hisSbRaTRJJpMhSafTJfeZhGuwqvrflr/8gM9Pp/O/0L2inZGRMZHBYEwk + 8ZNMjziHOPtH4/mbAYhEQDtvFP5lPBz2fYKVJN/XRz1FQHE/Nm+Ntx7r58ulP5g63wpATE0vtPZH13/s + /O9orGMmgzEGKE1aGSaTOZ18J2e1O2JJZTtf0ModxVduZSIjI4qtwbLbu+YtOLZr7jzr3eYXImqp7cMY + FogIqAgdQ6O4VcjFMrcaKF4pxgxS+D0LB7HBIjVeba6LzbKvzgSWtr5BTCWZpJaRL8Td/3Xl5uRMInDS + xPIsJnMGabWIdc45JGwILuoXeJQMQOUnKtY+aMBqMmGW3yuDwS/5OBLQgNxXQrwloGPqICN6IYfEnsmH + HNmgyHvV4SrZWa3yLIVhSAtWOeXBp3IYG+6ysdA65u+D5rBYY699KoFTJaC6xIuJV3tdT7VecLVQqPxT + Ehat/hX7zmSO2rjmCi0uMoSrbOKF+1xyRLROPvjvhRAKheD0fcDhtFeQ+SkdMsfpkHYugn1MDawuZAn3 + ns9+P9vowQfpE1RIm9zBwcNJfx90TOSVj42qnBj0a+JvQgPTT2rpuApMNvsj7GGVID216EFWxqMbxF5p + KXm3j97Oa6fkN6ClrQNPn3Yiu4aUJr9yyJn7Q8EmHEt/YSO6rh/JGZXVdFpu0LEfQpK1dZ1xyi4NkcE1 + zeKu/74I7AQCO5ajnxEvI15/YM9DL0pAOTMptjyYxWSdJn/Ak/ghccy9cDr7FpXDo1d0vWNVPn+XUtr1 + Loj2mB8aVj0YElnTG5LS9Doso6mMTs/1JfFxaam0LPfLWe1xEVWc+Mjqw+Ju//fKycmZSB48mYBKEU8h + 12PwKqTVJzYi3kdsR3yW+DyTwbpEfJn4IrEdsTmDnmNIp+XokfvUSIw28SLi5cRfsljMOSwmc+o/AaNI + SUwPzmIlAAAAAElFTkSuQmCC + + + + + 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 + SUwPzmIlAAAAAElFTkSuQmCC + + + + + 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 + RU5ErkJggg== + + + + + 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 + YII= + + + + + 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 + JFzwq65RKR6VMtP7E120VNnFOeHVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAIAAADY27xgAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAyUlEQVRYR+2S + SwrDMAwFff8zF1z6mIBVK82nVFGJZpeRhGeR1tNQKR6V4tEeaXiltARUisd7Cv9PIDxcKQYe/psU1EE4 + 3g1nlWLgbH8Kah32KsXAXkCKC3sCNUi+PdgQqG9SWBIogQpLYUOgFrAxKYwFaoDBBGOBEqgTKcwEysLM + wkygFrC3S2EgUAMMAlKwAmVhdqMUlEBNMP5pCt8C5cHGiZRNOP54zoZAVcrxlBh4uFIMPJw65UIqxYOU + JFzwq65RKR6VMtP7E120VNnFOeHVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAIAAADY27xgAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAyklEQVRYR+2Y + QQ6CUAwFuf8dPKr5xpchoVIVMNYa3uyYtvmzcOU02uCUDKdkTNc23FMuDXBKxmMKv59CeNgpAR7+mxTU + TjjeDGdOCXC2PQX1HPacEmCvICWFPYFaSL4z2BCoT1JYEiiBKkthQ6BmsDUpjAVqAYMVjAVKoA6kMBOo + CLMIM4GawZ4uhYFALWBQkIIVqAizE6WgBGoF46+m8C1QGWwcSHkLxy/P2RAop+xPqYGHnRLg4dYpP8Qp + GaQ0wf9QZjglo03KGDc9MBjKSzywjQAAAABJRU5ErkJggg== + + + + + iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAIAAADY27xgAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wgAADsIBFShKgAAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAyUlEQVRYR+2S + SwrDMAwFff8zF1z6mIBVK82nVFGJZpeRhGeR1tNQKR6V4tEeaXiltARUisd7Cv9PIDxcKQYe/psU1EE4 + 3g1nlWLgbH8Kah32KsXAXkCKC3sCNUi+PdgQqG9SWBIogQpLYUOgFrAxKYwFaoDBBGOBEqgTKcwEysLM + wkygFrC3S2EgUAMMAlKwAmVhdqMUlEBNMP5pCt8C5cHGiZRNOP54zoZAVcrxlBh4uFIMPJw65UIqxYOU + JFzwq65RKR6VMtP7E120VNnFOeHVAAAAAElFTkSuQmCC + + + + + iVBORw0KGgoAAAANSUhEUgAAAC4AAAAuCAIAAADY27xgAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + wQAADsEBuJFr7QAAABp0RVh0U29mdHdhcmUAUGFpbnQuTkVUIHYzLjUuMTAw9HKhAAAAy0lEQVRYR+2S + QQrDMAwEfetH+v8XFlyFLqoiqQqlxnHJDnuwJczOwa0vA1UyqJLRHsuwqbQFoEqGV8H/mQiKqbIDxf+t + crt/l0NQTJUdKP5F5RCqZAxQ0bKYeiux6ES3MQKKx6pY7FDPMQKKB6pY3NxeXQQU13/FPlB0aGMpVi/c + FsVDVCxuJXHEFYqvq5LOUTxTJR0KKL6iSpwoKJ6j4q4OFA9RqVM/EVBMlXcEFNcqc0AxVXageGmVE6FK + BlQW4YSv+gmqZFAl0vsTyV3d9o5XpoEAAAAASUVORK5CYII= \ No newline at end of file diff --git a/ROMVault2/rvTree.cs b/ROMVault2/rvTree.cs index 72af6d3..9c87868 100644 --- a/ROMVault2/rvTree.cs +++ b/ROMVault2/rvTree.cs @@ -170,7 +170,7 @@ namespace ROMVault2 if (!pTree.Tree.RExpand.IsEmpty) if (pTree.Tree.RExpand.IntersectsWith(t)) { - g.DrawImage(pTree.Tree.TreeExpanded ? rvImages.ExpandBoxMinus : rvImages.ExpandBoxPlus, RSub(pTree.Tree.RExpand, _hScroll, _vScroll)); + g.DrawImage(pTree.Tree.TreeExpanded ? rvImages1.ExpandBoxMinus : rvImages1.ExpandBoxPlus, RSub(pTree.Tree.RExpand, _hScroll, _vScroll)); } @@ -179,13 +179,13 @@ namespace ROMVault2 switch (pTree.Tree.Checked) { case RvTreeRow.TreeSelect.Disabled: - g.DrawImage(rvImages.TickBoxDisabled, RSub(pTree.Tree.RChecked, _hScroll, _vScroll)); + g.DrawImage(rvImages1.TickBoxDisabled, RSub(pTree.Tree.RChecked, _hScroll, _vScroll)); break; case RvTreeRow.TreeSelect.UnSelected: - g.DrawImage(rvImages.TickBoxUnTicked, RSub(pTree.Tree.RChecked, _hScroll, _vScroll)); + g.DrawImage(rvImages1.TickBoxUnTicked, RSub(pTree.Tree.RChecked, _hScroll, _vScroll)); break; case RvTreeRow.TreeSelect.Selected: - g.DrawImage(rvImages.TickBoxTicked, RSub(pTree.Tree.RChecked, _hScroll, _vScroll)); + g.DrawImage(rvImages1.TickBoxTicked, RSub(pTree.Tree.RChecked, _hScroll, _vScroll)); break; } }