From 0e30cf19d67a2565b8ed4b92160713c5c00c4586 Mon Sep 17 00:00:00 2001 From: ptahmose Date: Tue, 29 Aug 2023 13:48:32 +0200 Subject: [PATCH 01/10] initial draft --- Src/libCZI/CziParse.cpp | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Src/libCZI/CziParse.cpp b/Src/libCZI/CziParse.cpp index 93c8a9ba..a9a66639 100644 --- a/Src/libCZI/CziParse.cpp +++ b/Src/libCZI/CziParse.cpp @@ -524,6 +524,8 @@ using namespace libCZI; entry.Invalidate(); // TODO: - add consistency checks like dimension appears twice, X and Y are not present ... + bool x_was_given = false; + bool y_was_given = false; for (int i = 0; i < subBlkDirDE->DimensionCount; ++i) { if (CCZIParse::IsXDimension(subBlkDirDE->DimensionEntries[i].Dimension, 4)) @@ -531,12 +533,14 @@ using namespace libCZI; entry.x = subBlkDirDE->DimensionEntries[i].Start; entry.width = subBlkDirDE->DimensionEntries[i].Size; entry.storedWidth = subBlkDirDE->DimensionEntries[i].StoredSize; + x_was_given = true; } else if (CCZIParse::IsYDimension(subBlkDirDE->DimensionEntries[i].Dimension, 4)) { entry.y = subBlkDirDE->DimensionEntries[i].Start; entry.height = subBlkDirDE->DimensionEntries[i].Size; entry.storedHeight = subBlkDirDE->DimensionEntries[i].StoredSize; + y_was_given = true; } else if (CCZIParse::IsMDimension(subBlkDirDE->DimensionEntries[i].Dimension, 4)) { @@ -546,9 +550,18 @@ using namespace libCZI; { libCZI::DimensionIndex dim = CCZIParse::DimensionCharToDimensionIndex(subBlkDirDE->DimensionEntries[i].Dimension, 4); entry.coordinate.Set(dim, subBlkDirDE->DimensionEntries[i].Start); + if (subBlkDirDE->DimensionEntries[i].Size != 1) + { + throw LibCZICZIParseException("size for dimension is not 1", LibCZICZIParseException::ErrorCode::CorruptedData); + } } } + if (!x_was_given || !y_was_given) + { + throw LibCZICZIParseException("X or Y was not given", LibCZICZIParseException::ErrorCode::CorruptedData); + } + entry.FilePosition = subBlkDirDE->FilePosition; entry.PixelType = subBlkDirDE->PixelType; entry.Compression = subBlkDirDE->Compression; From 025dee5033675a9dcfabf84a816cfa600eacf8e8 Mon Sep 17 00:00:00 2001 From: ptahmose Date: Tue, 29 Aug 2023 16:23:30 +0200 Subject: [PATCH 02/10] something like that? --- Src/libCZI/CZIReader.cpp | 10 ++++-- Src/libCZI/CZIReader.h | 2 +- Src/libCZI/CziParse.cpp | 50 ++++++++++++++-------------- Src/libCZI/CziParse.h | 8 ++--- Src/libCZI/libCZI.h | 9 +++-- Src/libCZI_UnitTests/test_writer.cpp | 4 +-- 6 files changed, 47 insertions(+), 36 deletions(-) diff --git a/Src/libCZI/CZIReader.cpp b/Src/libCZI/CZIReader.cpp index 6fc25959..de920ea8 100644 --- a/Src/libCZI/CZIReader.cpp +++ b/Src/libCZI/CZIReader.cpp @@ -23,15 +23,21 @@ CCZIReader::~CCZIReader() { } -/*virtual */void CCZIReader::Open(std::shared_ptr stream) +/*virtual */void CCZIReader::Open(const std::shared_ptr& stream, const ICZIReader::OpenOptions* options) { if (this->isOperational == true) { throw logic_error("CZIReader is already operational."); } + if (options == nullptr) + { + auto default_options = OpenOptions{}; + return CCZIReader::Open(stream, &default_options); + } + this->hdrSegmentData = CCZIParse::ReadFileHeaderSegmentData(stream.get()); - this->subBlkDir = CCZIParse::ReadSubBlockDirectory(stream.get(), this->hdrSegmentData.GetSubBlockDirectoryPosition()); + this->subBlkDir = CCZIParse::ReadSubBlockDirectory(stream.get(), this->hdrSegmentData.GetSubBlockDirectoryPosition(), options->lax_subblock_coordinate_checks); auto attachmentPos = this->hdrSegmentData.GetAttachmentDirectoryPosition(); if (attachmentPos != 0) { diff --git a/Src/libCZI/CZIReader.h b/Src/libCZI/CZIReader.h index 394544e9..3a8b4565 100644 --- a/Src/libCZI/CZIReader.h +++ b/Src/libCZI/CZIReader.h @@ -36,7 +36,7 @@ class CCZIReader : public libCZI::ICZIReader, public std::enable_shared_from_thi void EnumerateSubBlocksEx(const std::function& funcEnum) override; // interface ICZIReader - void Open(std::shared_ptr stream) override; + void Open(const std::shared_ptr& stream, const ICZIReader::OpenOptions* options) override; libCZI::FileHeaderInfo GetFileHeaderInfo() override; std::shared_ptr ReadMetadataSegment() override; std::shared_ptr CreateAccessor(libCZI::AccessorType accessorType) override; diff --git a/Src/libCZI/CziParse.cpp b/Src/libCZI/CziParse.cpp index a9a66639..739e706c 100644 --- a/Src/libCZI/CziParse.cpp +++ b/Src/libCZI/CziParse.cpp @@ -57,15 +57,15 @@ using namespace libCZI; return fileHdr; } -/*static*/CCziSubBlockDirectory CCZIParse::ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset) +/*static*/CCziSubBlockDirectory CCZIParse::ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, bool lax_subblock_coordinate_checks) { CCziSubBlockDirectory subBlkDir; - CCZIParse::ReadSubBlockDirectory(str, offset, subBlkDir); + CCZIParse::ReadSubBlockDirectory(str, offset, subBlkDir, lax_subblock_coordinate_checks); subBlkDir.AddingFinished(); return subBlkDir; } -/*static*/void CCZIParse::ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, SegmentSizes* segmentSizes /*= nullptr*/) +/*static*/void CCZIParse::ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, bool lax_subblock_coordinate_checks, SegmentSizes* segmentSizes /*= nullptr*/) { SubBlockDirectorySegment subBlckDirSegment; std::uint64_t bytesRead; @@ -152,14 +152,14 @@ using namespace libCZI; } else if (subBlkDirDV != nullptr) { - CCZIParse::AddEntryToSubBlockDirectory(subBlkDirDV, addFunc); + CCZIParse::AddEntryToSubBlockDirectory(subBlkDirDV, addFunc, lax_subblock_coordinate_checks); } }); } -/*static*/void CCZIParse::ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, CCziSubBlockDirectory& subBlkDir) +/*static*/void CCZIParse::ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, CCziSubBlockDirectory& subBlkDir, bool lax_subblock_coordinate_checks) { - CCZIParse::ReadSubBlockDirectory(str, offset, [&](const CCziSubBlockDirectoryBase::SubBlkEntry& e)->void {subBlkDir.AddSubBlock(e); }); + CCZIParse::ReadSubBlockDirectory(str, offset, [&](const CCziSubBlockDirectoryBase::SubBlkEntry& e)->void {subBlkDir.AddSubBlock(e); }, lax_subblock_coordinate_checks); } /*static*/CCziAttachmentsDirectory CCZIParse::ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset) @@ -518,7 +518,7 @@ using namespace libCZI; throw std::logic_error("not (yet) implemented"); } -/*static*/void CCZIParse::AddEntryToSubBlockDirectory(const SubBlockDirectoryEntryDV* subBlkDirDE, const std::function& addFunc) +/*static*/void CCZIParse::AddEntryToSubBlockDirectory(const SubBlockDirectoryEntryDV* subBlkDirDV, const std::function& addFunc, bool lax_subblock_coordinate_checks) { CCziSubBlockDirectory::SubBlkEntry entry; entry.Invalidate(); @@ -526,45 +526,45 @@ using namespace libCZI; // TODO: - add consistency checks like dimension appears twice, X and Y are not present ... bool x_was_given = false; bool y_was_given = false; - for (int i = 0; i < subBlkDirDE->DimensionCount; ++i) + for (int i = 0; i < subBlkDirDV->DimensionCount; ++i) { - if (CCZIParse::IsXDimension(subBlkDirDE->DimensionEntries[i].Dimension, 4)) + if (CCZIParse::IsXDimension(subBlkDirDV->DimensionEntries[i].Dimension, 4)) { - entry.x = subBlkDirDE->DimensionEntries[i].Start; - entry.width = subBlkDirDE->DimensionEntries[i].Size; - entry.storedWidth = subBlkDirDE->DimensionEntries[i].StoredSize; + entry.x = subBlkDirDV->DimensionEntries[i].Start; + entry.width = subBlkDirDV->DimensionEntries[i].Size; + entry.storedWidth = subBlkDirDV->DimensionEntries[i].StoredSize; x_was_given = true; } - else if (CCZIParse::IsYDimension(subBlkDirDE->DimensionEntries[i].Dimension, 4)) + else if (CCZIParse::IsYDimension(subBlkDirDV->DimensionEntries[i].Dimension, 4)) { - entry.y = subBlkDirDE->DimensionEntries[i].Start; - entry.height = subBlkDirDE->DimensionEntries[i].Size; - entry.storedHeight = subBlkDirDE->DimensionEntries[i].StoredSize; + entry.y = subBlkDirDV->DimensionEntries[i].Start; + entry.height = subBlkDirDV->DimensionEntries[i].Size; + entry.storedHeight = subBlkDirDV->DimensionEntries[i].StoredSize; y_was_given = true; } - else if (CCZIParse::IsMDimension(subBlkDirDE->DimensionEntries[i].Dimension, 4)) + else if (CCZIParse::IsMDimension(subBlkDirDV->DimensionEntries[i].Dimension, 4)) { - entry.mIndex = subBlkDirDE->DimensionEntries[i].Start; + entry.mIndex = subBlkDirDV->DimensionEntries[i].Start; } else { - libCZI::DimensionIndex dim = CCZIParse::DimensionCharToDimensionIndex(subBlkDirDE->DimensionEntries[i].Dimension, 4); - entry.coordinate.Set(dim, subBlkDirDE->DimensionEntries[i].Start); - if (subBlkDirDE->DimensionEntries[i].Size != 1) + libCZI::DimensionIndex dim = CCZIParse::DimensionCharToDimensionIndex(subBlkDirDV->DimensionEntries[i].Dimension, 4); + entry.coordinate.Set(dim, subBlkDirDV->DimensionEntries[i].Start); + if (lax_subblock_coordinate_checks && subBlkDirDV->DimensionEntries[i].Size != 1) { throw LibCZICZIParseException("size for dimension is not 1", LibCZICZIParseException::ErrorCode::CorruptedData); } } } - if (!x_was_given || !y_was_given) + if (lax_subblock_coordinate_checks && (!x_was_given || !y_was_given)) { throw LibCZICZIParseException("X or Y was not given", LibCZICZIParseException::ErrorCode::CorruptedData); } - entry.FilePosition = subBlkDirDE->FilePosition; - entry.PixelType = subBlkDirDE->PixelType; - entry.Compression = subBlkDirDE->Compression; + entry.FilePosition = subBlkDirDV->FilePosition; + entry.PixelType = subBlkDirDV->PixelType; + entry.Compression = subBlkDirDV->Compression; addFunc(entry); } diff --git a/Src/libCZI/CziParse.h b/Src/libCZI/CziParse.h index 72868177..a8385696 100644 --- a/Src/libCZI/CziParse.h +++ b/Src/libCZI/CziParse.h @@ -41,13 +41,13 @@ class CCZIParse static FileHeaderSegmentData ReadFileHeaderSegment(libCZI::IStream* str); static CFileHeaderSegmentData ReadFileHeaderSegmentData(libCZI::IStream* str); - static CCziSubBlockDirectory ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset); + static CCziSubBlockDirectory ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, bool lax_subblock_coordinate_checks); static CCziAttachmentsDirectory ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset); static void ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, SegmentSizes* segmentSizes = nullptr); - static void ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, CCziSubBlockDirectory& subBlkDir); + static void ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, CCziSubBlockDirectory& subBlkDir, bool lax_subblock_coordinate_checks); - static void ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, SegmentSizes* segmentSizes = nullptr); + static void ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, bool lax_subblock_coordinate_checks, SegmentSizes* segmentSizes = nullptr); struct SubBlockStorageAllocate { @@ -98,7 +98,7 @@ class CCZIParse static void ParseThroughDirectoryEntries(int count, const std::function& funcRead, const std::function& funcAddEntry); static void AddEntryToSubBlockDirectory(const SubBlockDirectoryEntryDE* subBlkDirDE, const std::function& addFunc); - static void AddEntryToSubBlockDirectory(const SubBlockDirectoryEntryDV* subBlkDirDE, const std::function& addFunc); + static void AddEntryToSubBlockDirectory(const SubBlockDirectoryEntryDV* subBlkDirDV, const std::function& addFunc, bool lax_subblock_coordinate_checks); static libCZI::DimensionIndex DimensionCharToDimensionIndex(const char* ptr, size_t size); static bool IsMDimension(const char* ptr, size_t size); diff --git a/Src/libCZI/libCZI.h b/Src/libCZI/libCZI.h index 4f75c2a9..a4e77e10 100644 --- a/Src/libCZI/libCZI.h +++ b/Src/libCZI/libCZI.h @@ -618,9 +618,14 @@ namespace libCZI }; /// This interface is used to represent the CZI-file. - class ICZIReader : public ISubBlockRepository, public ISubBlockRepositoryEx, public IAttachmentRepository + class LIBCZI_API ICZIReader : public ISubBlockRepository, public ISubBlockRepositoryEx, public IAttachmentRepository { public: + struct OpenOptions + { + bool lax_subblock_coordinate_checks{ true }; + }; + /// Opens the specified stream and reads the global information from the CZI-document. /// The stream passed in will have its refcount incremented, a reference is held until Close /// is called (or the instance is destroyed). @@ -628,7 +633,7 @@ namespace libCZI /// If this method is called twice, then an exception of type std::logic_error is thrown. /// /// \param stream The stream object. - virtual void Open(std::shared_ptr stream) = 0; + virtual void Open(const std::shared_ptr& stream, const OpenOptions* options = nullptr) = 0; /// Gets the file header information. /// \return The file header information. diff --git a/Src/libCZI_UnitTests/test_writer.cpp b/Src/libCZI_UnitTests/test_writer.cpp index c353db34..5c12e441 100644 --- a/Src/libCZI_UnitTests/test_writer.cpp +++ b/Src/libCZI_UnitTests/test_writer.cpp @@ -265,7 +265,7 @@ static void _testWriteReadCompressedImageZStd0(uint32_t width, uint32_t height, { auto stream = CreateStreamFromMemory(buffer, sizeBuffer); CCZIReader reader; - reader.Open(stream); + reader.Open(stream, nullptr); std::shared_ptr sbBlkRead = reader.ReadSubBlock(0); size_t sizeBlock = 0; @@ -392,7 +392,7 @@ static void _testWriteReadCompressedImageZStd1(uint32_t width, uint32_t height, { auto stream = CreateStreamFromMemory(buffer, sizeBuffer); CCZIReader reader; - reader.Open(stream); + reader.Open(stream, nullptr); std::shared_ptr sbBlkRead = reader.ReadSubBlock(0); size_t sizeBlock = 0; From fb80f061470abf4571b49873c3ab5e13c1e8b2a0 Mon Sep 17 00:00:00 2001 From: ptahmose Date: Tue, 29 Aug 2023 16:24:28 +0200 Subject: [PATCH 03/10] formatting --- Src/libCZI/CZIReader.cpp | 60 ++++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 30 deletions(-) diff --git a/Src/libCZI/CZIReader.cpp b/Src/libCZI/CZIReader.cpp index de920ea8..20da3929 100644 --- a/Src/libCZI/CZIReader.cpp +++ b/Src/libCZI/CZIReader.cpp @@ -90,13 +90,13 @@ CCZIReader::~CCZIReader() [&](int index, const CCziSubBlockDirectory::SubBlkEntry& entry)->bool { SubBlockInfo info; - info.compressionModeRaw = entry.Compression; - info.pixelType = CziUtils::PixelTypeFromInt(entry.PixelType); - info.coordinate = entry.coordinate; - info.logicalRect = IntRect{ entry.x,entry.y,entry.width,entry.height }; - info.physicalSize = IntSize{ (std::uint32_t)entry.storedWidth, (std::uint32_t)entry.storedHeight }; - info.mIndex = entry.mIndex; - return funcEnum(index, info); + info.compressionModeRaw = entry.Compression; + info.pixelType = CziUtils::PixelTypeFromInt(entry.PixelType); + info.coordinate = entry.coordinate; + info.logicalRect = IntRect{ entry.x,entry.y,entry.width,entry.height }; + info.physicalSize = IntSize{ (std::uint32_t)entry.storedWidth, (std::uint32_t)entry.storedHeight }; + info.mIndex = entry.mIndex; + return funcEnum(index, info); }); } @@ -107,14 +107,14 @@ CCZIReader::~CCZIReader() [&](int index, const CCziSubBlockDirectory::SubBlkEntry& entry)->bool { DirectorySubBlockInfo info; - info.compressionModeRaw = entry.Compression; - info.pixelType = CziUtils::PixelTypeFromInt(entry.PixelType); - info.coordinate = entry.coordinate; - info.logicalRect = IntRect{ entry.x,entry.y,entry.width,entry.height }; - info.physicalSize = IntSize{ (std::uint32_t)entry.storedWidth, (std::uint32_t)entry.storedHeight }; - info.mIndex = entry.mIndex; - info.filePosition = entry.FilePosition; - return funcEnum(index, info); + info.compressionModeRaw = entry.Compression; + info.pixelType = CziUtils::PixelTypeFromInt(entry.PixelType); + info.coordinate = entry.coordinate; + info.logicalRect = IntRect{ entry.x,entry.y,entry.width,entry.height }; + info.physicalSize = IntSize{ (std::uint32_t)entry.storedWidth, (std::uint32_t)entry.storedHeight }; + info.mIndex = entry.mIndex; + info.filePosition = entry.FilePosition; + return funcEnum(index, info); }); } @@ -143,7 +143,7 @@ CCZIReader::~CCZIReader() } } - return true; + return true; }); } @@ -175,8 +175,8 @@ CCZIReader::~CCZIReader() [&](int index, const SubBlockInfo& sbinfo)->bool { info = sbinfo; - foundASubBlock = true; - return false; + foundASubBlock = true; + return false; }); } else @@ -185,14 +185,14 @@ CCZIReader::~CCZIReader() [&](int index, const SubBlockInfo& sbinfo)->bool { int c; - if (sbinfo.coordinate.TryGetPosition(DimensionIndex::C, &c) == true && c == channelIndex) - { - info = sbinfo; - foundASubBlock = true; - return false; - } + if (sbinfo.coordinate.TryGetPosition(DimensionIndex::C, &c) == true && c == channelIndex) + { + info = sbinfo; + foundASubBlock = true; + return false; + } - return true; + return true; }); } @@ -242,10 +242,10 @@ CCZIReader::~CCZIReader() [&](int index, const CCziAttachmentsDirectory::AttachmentEntry& ae) { ai.contentGuid = ae.ContentGuid; - memcpy(ai.contentFileType, ae.ContentFileType, sizeof(ae.ContentFileType)); - ai.name = ae.Name; - bool b = funcEnum(index, ai); - return b; + memcpy(ai.contentFileType, ae.ContentFileType, sizeof(ae.ContentFileType)); + ai.name = ae.Name; + bool b = funcEnum(index, ai); + return b; }); } @@ -269,7 +269,7 @@ CCZIReader::~CCZIReader() } } - return true; + return true; }); } From 34a8406693750089df11f23cae9698ed0a5cb604 Mon Sep 17 00:00:00 2001 From: ptahmose Date: Wed, 30 Aug 2023 19:00:27 +0200 Subject: [PATCH 04/10] cosmetic and final touches --- Src/libCZI/CziParse.cpp | 33 ++++++++++++++++++++++++++++----- Src/libCZI/libCZI.h | 28 ++++++++++++++++++++++------ Src/libCZI/libCZI_exceptions.h | 7 ++++--- 3 files changed, 54 insertions(+), 14 deletions(-) diff --git a/Src/libCZI/CziParse.cpp b/Src/libCZI/CziParse.cpp index 739e706c..721b716a 100644 --- a/Src/libCZI/CziParse.cpp +++ b/Src/libCZI/CziParse.cpp @@ -523,7 +523,6 @@ using namespace libCZI; CCziSubBlockDirectory::SubBlkEntry entry; entry.Invalidate(); - // TODO: - add consistency checks like dimension appears twice, X and Y are not present ... bool x_was_given = false; bool y_was_given = false; for (int i = 0; i < subBlkDirDV->DimensionCount; ++i) @@ -545,21 +544,45 @@ using namespace libCZI; else if (CCZIParse::IsMDimension(subBlkDirDV->DimensionEntries[i].Dimension, 4)) { entry.mIndex = subBlkDirDV->DimensionEntries[i].Start; + if (!lax_subblock_coordinate_checks && subBlkDirDV->DimensionEntries[i].Size != 1) + { + stringstream string_stream; + string_stream << "Size for dimension 'M' is expected to be 1, but found " << subBlkDirDV->DimensionEntries[i].Size << " (file-offset:" << subBlkDirDV->FilePosition << ")."; + throw LibCZICZIParseException(string_stream.str().c_str(), LibCZICZIParseException::ErrorCode::NonConformingSubBlockDimensionEntry); + } } else { libCZI::DimensionIndex dim = CCZIParse::DimensionCharToDimensionIndex(subBlkDirDV->DimensionEntries[i].Dimension, 4); entry.coordinate.Set(dim, subBlkDirDV->DimensionEntries[i].Start); - if (lax_subblock_coordinate_checks && subBlkDirDV->DimensionEntries[i].Size != 1) + if (!lax_subblock_coordinate_checks && subBlkDirDV->DimensionEntries[i].Size != 1) { - throw LibCZICZIParseException("size for dimension is not 1", LibCZICZIParseException::ErrorCode::CorruptedData); + stringstream string_stream; + string_stream << "Size for dimension '" << Utils::DimensionToChar(dim) << "' is expected to be 1, but found " << subBlkDirDV->DimensionEntries[i].Size << " (file-offset:" << subBlkDirDV->FilePosition << ")."; + throw LibCZICZIParseException(string_stream.str().c_str(), LibCZICZIParseException::ErrorCode::NonConformingSubBlockDimensionEntry); } } } - if (lax_subblock_coordinate_checks && (!x_was_given || !y_was_given)) + if (!lax_subblock_coordinate_checks && (!x_was_given || !y_was_given)) { - throw LibCZICZIParseException("X or Y was not given", LibCZICZIParseException::ErrorCode::CorruptedData); + stringstream string_stream; + string_stream << "No coordinate/size given for "; + if (!x_was_given && y_was_given) + { + string_stream << "'X'"; + } + else if (!y_was_given && x_was_given) + { + string_stream << "'Y'"; + } + else + { + string_stream << "'X' and 'Y'"; + } + + string_stream << " (file-offset:" << subBlkDirDV->FilePosition << ")."; + throw LibCZICZIParseException(string_stream.str().c_str(), LibCZICZIParseException::ErrorCode::NonConformingSubBlockDimensionEntry); } entry.FilePosition = subBlkDirDV->FilePosition; diff --git a/Src/libCZI/libCZI.h b/Src/libCZI/libCZI.h index a4e77e10..763697be 100644 --- a/Src/libCZI/libCZI.h +++ b/Src/libCZI/libCZI.h @@ -621,18 +621,34 @@ namespace libCZI class LIBCZI_API ICZIReader : public ISubBlockRepository, public ISubBlockRepositoryEx, public IAttachmentRepository { public: - struct OpenOptions + /// This structure gathers the settings for controlling the 'Open' operation of the CZIReader-class. + struct LIBCZI_API OpenOptions { + /// This option controls whether the lax parameter validation when parsing the dimension-entry of a subblock is to be used. + /// Previous versions of libCZI did not check whether certain values in the file have the expected value. If those values + /// are different than expected, this meant that libCZI would not be able to deal with the document properly. + /// If lax checking of this is disabled, then Open will fail with a corresponding exception. + /// The default is to enable lax checking (for compatibility with previous libCZI-versions), but users are encouraged to + /// disable this for new code. bool lax_subblock_coordinate_checks{ true }; + + /// Sets the the default. + void SetDefault() + { + this->lax_subblock_coordinate_checks = true; + } }; - /// Opens the specified stream and reads the global information from the CZI-document. - /// The stream passed in will have its refcount incremented, a reference is held until Close - /// is called (or the instance is destroyed). + /// Opens the specified stream and reads the global information from the CZI-document. The stream + /// passed in will have its refcount incremented, a reference is held until Close is called (or + /// the instance is destroyed). + /// /// \remark - /// If this method is called twice, then an exception of type std::logic_error is thrown. + /// If this method is called twice (assuming successful return), then an exception of type std::logic_error is + /// thrown. /// - /// \param stream The stream object. + /// \param stream The stream object. + /// \param options (Optional) Options for controlling the operation. If nullptr is given here, then the default settings are used. virtual void Open(const std::shared_ptr& stream, const OpenOptions* options = nullptr) = 0; /// Gets the file header information. diff --git a/Src/libCZI/libCZI_exceptions.h b/Src/libCZI/libCZI_exceptions.h index 22178f05..c14eb71e 100644 --- a/Src/libCZI/libCZI_exceptions.h +++ b/Src/libCZI/libCZI_exceptions.h @@ -140,9 +140,10 @@ namespace libCZI /// Values that represent different error conditions. enum class ErrorCode { - NotEnoughData, ///< An enum constant representing that not the expected amount of data could be read. - CorruptedData, ///< An enum constant representing that the data was detected to be bogus. - InternalError ///< An internal error was detected. + NotEnoughData, ///< An enum constant representing that not the expected amount of data could be read. + CorruptedData, ///< An enum constant representing that the data was detected to be bogus. + NonConformingSubBlockDimensionEntry,///< An enum constant representing that the dimension-entry of a subblock was found to be non-conforming. + InternalError ///< An internal error was detected. }; /// Constructor for the LibCZICZIParseException. This type is used From f2b3e2687e1b3b8f8fb5bd8baa962208b1cea4ad Mon Sep 17 00:00:00 2001 From: ptahmose Date: Thu, 31 Aug 2023 10:31:18 +0200 Subject: [PATCH 05/10] bump version number --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 384ff9c0..ac101b15 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.15) cmake_policy(SET CMP0091 NEW) # enable new "MSVC runtime library selection" (https://cmake.org/cmake/help/latest/variable/CMAKE_MSVC_RUNTIME_LIBRARY.html) project(libCZI - VERSION 0.50.1 + VERSION 0.51.0 HOMEPAGE_URL "https://github.com/ZEISS/libczi" DESCRIPTION "libCZI is an Open Source Cross-Platform C++ library to read and write CZI") From fb2555199ec817170f61b76867f6b67f446c9b9d Mon Sep 17 00:00:00 2001 From: ptahmose Date: Thu, 31 Aug 2023 14:42:03 +0200 Subject: [PATCH 06/10] add & fix unittest --- Src/libCZI/CziParse.cpp | 4 +- Src/libCZI/CziParse.h | 4 +- Src/libCZI/CziReaderWriter.cpp | 1 + Src/libCZI_UnitTests/CMakeLists.txt | 3 +- Src/libCZI_UnitTests/test_CZIParse.cpp | 637 +++++++++++++++++++++++++ 5 files changed, 644 insertions(+), 5 deletions(-) create mode 100644 Src/libCZI_UnitTests/test_CZIParse.cpp diff --git a/Src/libCZI/CziParse.cpp b/Src/libCZI/CziParse.cpp index 721b716a..068e0dcc 100644 --- a/Src/libCZI/CziParse.cpp +++ b/Src/libCZI/CziParse.cpp @@ -159,13 +159,13 @@ using namespace libCZI; /*static*/void CCZIParse::ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, CCziSubBlockDirectory& subBlkDir, bool lax_subblock_coordinate_checks) { - CCZIParse::ReadSubBlockDirectory(str, offset, [&](const CCziSubBlockDirectoryBase::SubBlkEntry& e)->void {subBlkDir.AddSubBlock(e); }, lax_subblock_coordinate_checks); + CCZIParse::ReadSubBlockDirectory(str, offset, [&](const CCziSubBlockDirectoryBase::SubBlkEntry& e)->void {subBlkDir.AddSubBlock(e); }, lax_subblock_coordinate_checks, nullptr); } /*static*/CCziAttachmentsDirectory CCZIParse::ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset) { CCziAttachmentsDirectory attDir; - CCZIParse::ReadAttachmentsDirectory(str, offset, [&](const CCziAttachmentsDirectoryBase::AttachmentEntry& ae)->void {attDir.AddAttachmentEntry(ae); }); + CCZIParse::ReadAttachmentsDirectory(str, offset, [&](const CCziAttachmentsDirectoryBase::AttachmentEntry& ae)->void {attDir.AddAttachmentEntry(ae); }, nullptr); return attDir; } diff --git a/Src/libCZI/CziParse.h b/Src/libCZI/CziParse.h index a8385696..d18bc552 100644 --- a/Src/libCZI/CziParse.h +++ b/Src/libCZI/CziParse.h @@ -43,11 +43,11 @@ class CCZIParse static CCziSubBlockDirectory ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, bool lax_subblock_coordinate_checks); static CCziAttachmentsDirectory ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset); - static void ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, SegmentSizes* segmentSizes = nullptr); + static void ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, SegmentSizes* segmentSizes); static void ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, CCziSubBlockDirectory& subBlkDir, bool lax_subblock_coordinate_checks); - static void ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, bool lax_subblock_coordinate_checks, SegmentSizes* segmentSizes = nullptr); + static void ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, bool lax_subblock_coordinate_checks, SegmentSizes* segmentSizes); struct SubBlockStorageAllocate { diff --git a/Src/libCZI/CziReaderWriter.cpp b/Src/libCZI/CziReaderWriter.cpp index f0bbc5c3..b1472a88 100644 --- a/Src/libCZI/CziReaderWriter.cpp +++ b/Src/libCZI/CziReaderWriter.cpp @@ -396,6 +396,7 @@ void CCziReaderWriter::ReadCziStructure() { this->sbBlkDirectory.AddSubBlock(e); }, + true, &sbBlkDirSegmentSize); this->sbBlkDirectory.SetModified(false); diff --git a/Src/libCZI_UnitTests/CMakeLists.txt b/Src/libCZI_UnitTests/CMakeLists.txt index b02b3b0d..7d41128f 100644 --- a/Src/libCZI_UnitTests/CMakeLists.txt +++ b/Src/libCZI_UnitTests/CMakeLists.txt @@ -68,7 +68,8 @@ ADD_EXECUTABLE(libCZI_UnitTests testImage.cpp test_reader.cpp utils.h - test_Accessors.cpp) + test_Accessors.cpp + test_CZIParse.cpp) # Now simply link against gtest or gtest_main as needed. Eg TARGET_LINK_LIBRARIES(libCZI_UnitTests diff --git a/Src/libCZI_UnitTests/test_CZIParse.cpp b/Src/libCZI_UnitTests/test_CZIParse.cpp new file mode 100644 index 00000000..ba28d369 --- /dev/null +++ b/Src/libCZI_UnitTests/test_CZIParse.cpp @@ -0,0 +1,637 @@ +#include "pch.h" +#include "MemInputOutputStream.h" +#include "../libCZI/CziParse.h" + +using namespace libCZI; +using namespace std; + +/// This is a CZI-document which contains a subblock with sizeT=2. +extern const uint8_t czi_with_subblock_of_size_t2[2304]; + +/// This is a CZI-document which contains a subblock with sizeM=2. +extern const uint8_t czi_with_subblock_of_size_m2[2304]; + +/// This is a CZI-document which contains a subblock for which no x-coordinate is given. +extern const uint8_t czi_with_subblock_without_x[2304]; + +TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithSizeTOf2AndExpectException) +{ + const auto memory_stream = make_shared(czi_with_subblock_of_size_t2, sizeof(czi_with_subblock_of_size_t2)); + auto file_header_segment_data = CCZIParse::ReadFileHeaderSegmentData(memory_stream.get()); + + // if doing "lax dimension-entry-parsing", we expect no exception + EXPECT_NO_THROW(CCZIParse::ReadSubBlockDirectory(memory_stream.get(), file_header_segment_data.GetSubBlockDirectoryPosition(), true)); + + // ...but, with strict parsing, we expect an exception + EXPECT_THROW(CCZIParse::ReadSubBlockDirectory(memory_stream.get(), file_header_segment_data.GetSubBlockDirectoryPosition(), false), LibCZICZIParseException); +} + +TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithSizeMOf2AndExpectException) +{ + const auto memory_stream = make_shared(czi_with_subblock_of_size_m2, sizeof(czi_with_subblock_of_size_m2)); + auto file_header_segment_data = CCZIParse::ReadFileHeaderSegmentData(memory_stream.get()); + + // if doing "lax dimension-entry-parsing", we expect no exception + EXPECT_NO_THROW(CCZIParse::ReadSubBlockDirectory(memory_stream.get(), file_header_segment_data.GetSubBlockDirectoryPosition(), true)); + + // ...but, with strict parsing, we expect an exception + EXPECT_THROW(CCZIParse::ReadSubBlockDirectory(memory_stream.get(), file_header_segment_data.GetSubBlockDirectoryPosition(), false), LibCZICZIParseException); +} + +TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithoutXAndExpectException) +{ + const auto memory_stream = make_shared(czi_with_subblock_of_size_m2, sizeof(czi_with_subblock_of_size_m2)); + auto file_header_segment_data = CCZIParse::ReadFileHeaderSegmentData(memory_stream.get()); + + // if doing "lax dimension-entry-parsing", we expect no exception + EXPECT_NO_THROW(CCZIParse::ReadSubBlockDirectory(memory_stream.get(), file_header_segment_data.GetSubBlockDirectoryPosition(), true)); + + // ...but, with strict parsing, we expect an exception + EXPECT_THROW(CCZIParse::ReadSubBlockDirectory(memory_stream.get(), file_header_segment_data.GetSubBlockDirectoryPosition(), false), LibCZICZIParseException); +} + + +static const uint8_t czi_with_subblock_of_size_t2[2304] = { + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, + 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, + 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, + 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, + 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, + 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, + 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, + 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, + 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, + 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, + 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, + 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, + 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, + 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, + 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, + 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, + 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, + 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, + 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, + 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, + 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, + 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, + 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, + 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, + 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, + 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, + 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, + 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, + 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, + 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, + 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, + 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, + 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, + 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const uint8_t czi_with_subblock_of_size_m2[2304] = { + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, + 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, + 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, + 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, + 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, + 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, + 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, + 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, + 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, + 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, + 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, + 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, + 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, + 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, + 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, + 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, + 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, + 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, + 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, + 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, + 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, + 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, + 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, + 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, + 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, + 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, + 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, + 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, + 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, + 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, + 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, + 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, + 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, + 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +static const uint8_t czi_with_subblock_without_x[2304] = { + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, + 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, + 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, + 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, + 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, + 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, + 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, + 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, + 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, + 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, + 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, + 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, + 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, + 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, + 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, + 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, + 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, + 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, + 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, + 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, + 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, + 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, + 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, + 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, + 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, + 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, + 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, + 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, + 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, + 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, + 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, + 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, + 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, + 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; From dd4a8a531fd9eeab861c6cb44acd1a9a9e462b97 Mon Sep 17 00:00:00 2001 From: ptahmose Date: Thu, 31 Aug 2023 15:06:28 +0200 Subject: [PATCH 07/10] cosmetic --- Src/libCZI/CziParse.h | 12 ++++++++++++ Src/libCZI_UnitTests/test_CZIParse.cpp | 6 +++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/Src/libCZI/CziParse.h b/Src/libCZI/CziParse.h index d18bc552..7456cf59 100644 --- a/Src/libCZI/CziParse.h +++ b/Src/libCZI/CziParse.h @@ -41,7 +41,19 @@ class CCZIParse static FileHeaderSegmentData ReadFileHeaderSegment(libCZI::IStream* str); static CFileHeaderSegmentData ReadFileHeaderSegmentData(libCZI::IStream* str); + /// Parse the subblock-directory from the specified stream at the specified offset. + /// Historically, libCZI did not check whether the elements in the dimensions-entry-list had a size other than + /// "1" given (for all dimensions other than X and Y). We refer to this as "lax parsing". If the argument + /// lax_subblock_coordinate_checks is true, then we check for those sizes to be as expected and otherwise + /// throw an exception. + /// + /// \param [in,out] str The stream to read from. + /// \param offset The offset in the stream. + /// \param lax_subblock_coordinate_checks True to do "lax subblock coordinate checking". + /// + /// \returns An in-memory representation of the subblock-directory. static CCziSubBlockDirectory ReadSubBlockDirectory(libCZI::IStream* str, std::uint64_t offset, bool lax_subblock_coordinate_checks); + static CCziAttachmentsDirectory ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset); static void ReadAttachmentsDirectory(libCZI::IStream* str, std::uint64_t offset, const std::function& addFunc, SegmentSizes* segmentSizes); diff --git a/Src/libCZI_UnitTests/test_CZIParse.cpp b/Src/libCZI_UnitTests/test_CZIParse.cpp index ba28d369..4f8b16ab 100644 --- a/Src/libCZI_UnitTests/test_CZIParse.cpp +++ b/Src/libCZI_UnitTests/test_CZIParse.cpp @@ -1,3 +1,7 @@ +// SPDX-FileCopyrightText: 2023 Carl Zeiss Microscopy GmbH +// +// SPDX-License-Identifier: LGPL-3.0-or-later + #include "pch.h" #include "MemInputOutputStream.h" #include "../libCZI/CziParse.h" @@ -40,7 +44,7 @@ TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithSizeMOf2AndExpectException) TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithoutXAndExpectException) { - const auto memory_stream = make_shared(czi_with_subblock_of_size_m2, sizeof(czi_with_subblock_of_size_m2)); + const auto memory_stream = make_shared(czi_with_subblock_without_x, sizeof(czi_with_subblock_without_x)); auto file_header_segment_data = CCZIParse::ReadFileHeaderSegmentData(memory_stream.get()); // if doing "lax dimension-entry-parsing", we expect no exception From 774c82413238e6328db1f384313f12bafef2d0b4 Mon Sep 17 00:00:00 2001 From: ptahmose Date: Thu, 31 Aug 2023 15:10:29 +0200 Subject: [PATCH 08/10] cosmetic --- Src/libCZI_UnitTests/test_CZIParse.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/Src/libCZI_UnitTests/test_CZIParse.cpp b/Src/libCZI_UnitTests/test_CZIParse.cpp index 4f8b16ab..dbb8814b 100644 --- a/Src/libCZI_UnitTests/test_CZIParse.cpp +++ b/Src/libCZI_UnitTests/test_CZIParse.cpp @@ -54,7 +54,6 @@ TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithoutXAndExpectException) EXPECT_THROW(CCZIParse::ReadSubBlockDirectory(memory_stream.get(), file_header_segment_data.GetSubBlockDirectoryPosition(), false), LibCZICZIParseException); } - static const uint8_t czi_with_subblock_of_size_t2[2304] = { 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, From b1515a468e7a7925cdbe56847d2adca9c591bf67 Mon Sep 17 00:00:00 2001 From: ptahmose Date: Thu, 31 Aug 2023 23:28:42 +0200 Subject: [PATCH 09/10] fix build error --- Src/libCZI_UnitTests/test_CZIParse.cpp | 1182 ++++++++++++------------ 1 file changed, 594 insertions(+), 588 deletions(-) diff --git a/Src/libCZI_UnitTests/test_CZIParse.cpp b/Src/libCZI_UnitTests/test_CZIParse.cpp index dbb8814b..67dc1322 100644 --- a/Src/libCZI_UnitTests/test_CZIParse.cpp +++ b/Src/libCZI_UnitTests/test_CZIParse.cpp @@ -9,14 +9,17 @@ using namespace libCZI; using namespace std; -/// This is a CZI-document which contains a subblock with sizeT=2. -extern const uint8_t czi_with_subblock_of_size_t2[2304]; +namespace +{ + /// This is a CZI-document which contains a subblock with sizeT=2. + extern const uint8_t czi_with_subblock_of_size_t2[2304]; -/// This is a CZI-document which contains a subblock with sizeM=2. -extern const uint8_t czi_with_subblock_of_size_m2[2304]; + /// This is a CZI-document which contains a subblock with sizeM=2. + extern const uint8_t czi_with_subblock_of_size_m2[2304]; -/// This is a CZI-document which contains a subblock for which no x-coordinate is given. -extern const uint8_t czi_with_subblock_without_x[2304]; + /// This is a CZI-document which contains a subblock for which no x-coordinate is given. + extern const uint8_t czi_with_subblock_without_x[2304]; +} TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithSizeTOf2AndExpectException) { @@ -54,587 +57,590 @@ TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithoutXAndExpectException) EXPECT_THROW(CCZIParse::ReadSubBlockDirectory(memory_stream.get(), file_header_segment_data.GetSubBlockDirectoryPosition(), false), LibCZICZIParseException); } -static const uint8_t czi_with_subblock_of_size_t2[2304] = { - 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, - 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, - 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, - 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, - 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, - 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, - 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, - 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, - 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, - 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, - 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, - 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, - 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, - 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, - 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, - 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, - 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, - 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, - 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, - 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, - 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, - 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, - 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, - 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, - 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, - 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, - 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, - 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, - 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, - 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, - 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, - 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, - 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, - 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, - 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, - 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, - 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, - 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, - 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, - 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, - 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; +namespace +{ + const uint8_t czi_with_subblock_of_size_t2[2304] = { + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, + 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, + 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, + 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, + 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, + 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, + 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, + 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, + 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, + 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, + 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, + 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, + 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, + 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, + 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, + 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, + 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, + 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, + 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, + 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, + 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, + 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, + 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, + 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, + 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, + 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, + 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, + 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, + 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, + 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, + 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, + 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, + 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, + 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; -static const uint8_t czi_with_subblock_of_size_m2[2304] = { - 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, - 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, - 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, - 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, - 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, - 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, - 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, - 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, - 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, - 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, - 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, - 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, - 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, - 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, - 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, - 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, - 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, - 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, - 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, - 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, - 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, - 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, - 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, - 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, - 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, - 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, - 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, - 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, - 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, - 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, - 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, - 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, - 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, - 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, - 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, - 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, - 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, - 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, - 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, - 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, - 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; + const uint8_t czi_with_subblock_of_size_m2[2304] = { + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, + 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, + 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, + 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, + 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, + 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, + 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, + 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, + 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, + 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, + 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, + 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, + 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, + 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, + 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, + 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, + 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, + 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, + 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, + 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, + 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, + 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, + 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, + 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, + 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, + 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, + 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, + 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, + 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, + 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, + 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, + 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, + 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, + 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; -static const uint8_t czi_with_subblock_without_x[2304] = { - 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, - 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, - 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, - 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, - 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, - 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, - 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, - 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, - 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, - 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, - 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, - 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, - 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, - 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, - 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, - 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, - 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, - 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, - 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, - 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, - 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, - 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, - 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, - 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, - 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, - 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, - 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, - 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, - 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, - 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, - 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, - 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, - 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, - 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, - 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, - 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, - 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, - 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, - 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, - 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, - 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; + const uint8_t czi_with_subblock_without_x[2304] = { + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, + 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, + 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, + 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, + 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, + 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, + 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, + 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, + 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, + 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, + 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, + 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, + 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, + 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, + 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, + 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, + 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, + 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, + 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, + 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, + 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, + 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, + 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, + 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, + 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, + 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, + 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, + 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, + 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, + 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, + 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, + 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, + 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, + 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; +} From a329ab8237202416ff6539a70725ef8cfd573257 Mon Sep 17 00:00:00 2001 From: ptahmose Date: Thu, 31 Aug 2023 23:43:56 +0200 Subject: [PATCH 10/10] fix formatting --- Src/libCZI_UnitTests/test_CZIParse.cpp | 393 +++++++++++++------------ 1 file changed, 198 insertions(+), 195 deletions(-) diff --git a/Src/libCZI_UnitTests/test_CZIParse.cpp b/Src/libCZI_UnitTests/test_CZIParse.cpp index 67dc1322..94d95792 100644 --- a/Src/libCZI_UnitTests/test_CZIParse.cpp +++ b/Src/libCZI_UnitTests/test_CZIParse.cpp @@ -59,7 +59,8 @@ TEST(CZIParse, ParseSubblockDirectoryWithSubblockWithoutXAndExpectException) namespace { - const uint8_t czi_with_subblock_of_size_t2[2304] = { + const uint8_t czi_with_subblock_of_size_t2[2304] = + { 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -254,7 +255,8 @@ namespace 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - const uint8_t czi_with_subblock_of_size_m2[2304] = { + const uint8_t czi_with_subblock_of_size_m2[2304] = + { 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, @@ -449,198 +451,199 @@ namespace 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - const uint8_t czi_with_subblock_without_x[2304] = { - 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, - 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, - 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, - 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, - 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, - 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, - 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, - 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, - 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, - 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, - 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, - 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, - 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, - 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, - 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, - 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, - 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, - 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, - 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, - 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, - 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, - 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, - 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, - 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, - 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, - 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, - 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, - 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, - 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, - 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, - 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, - 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, - 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, - 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, - 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, - 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, - 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, - 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, - 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, - 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, - 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, - 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, - 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, - 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, - 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, - 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, - 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, - 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + const uint8_t czi_with_subblock_without_x[2304] = + { + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x46, 0x49, 0x4C, 0x45, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, 0x88, 0xCB, 0xCB, 0xEB, + 0x19, 0xEC, 0x07, 0x79, 0x16, 0x97, 0x3C, 0xEF, 0x24, 0xA9, 0x55, 0x41, + 0x88, 0xCB, 0xCB, 0xEB, 0x19, 0xEC, 0x07, 0x79, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x53, 0x55, + 0x42, 0x42, 0x4C, 0x4F, 0x43, 0x4B, 0x00, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, 0x00, 0x00, 0x20, 0x02, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x4D, 0x45, 0x54, 0x41, 0x44, 0x41, + 0x54, 0x41, 0x00, 0x00, 0x40, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x31, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, + 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x4D, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6E, + 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, 0x69, + 0x7A, 0x65, 0x58, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, 0x58, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x53, + 0x69, 0x7A, 0x65, 0x59, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, 0x65, + 0x59, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x53, 0x69, 0x7A, 0x65, 0x43, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, 0x7A, + 0x65, 0x43, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x54, 0x3E, 0x31, 0x3C, 0x2F, 0x53, 0x69, + 0x7A, 0x65, 0x54, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x53, 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x31, 0x3C, 0x2F, 0x53, + 0x69, 0x7A, 0x65, 0x4D, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x44, 0x69, 0x6D, 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, + 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x3C, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x20, 0x49, 0x64, 0x3D, + 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3A, 0x30, 0x22, 0x20, + 0x4E, 0x61, 0x6D, 0x65, 0x3D, 0x22, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, + 0x6C, 0x20, 0x23, 0x30, 0x22, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, + 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, + 0x38, 0x3C, 0x2F, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x43, 0x68, 0x61, 0x6E, 0x6E, 0x65, 0x6C, 0x73, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x44, 0x69, 0x6D, + 0x65, 0x6E, 0x73, 0x69, 0x6F, 0x6E, 0x73, 0x3E, 0x0A, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x50, 0x69, 0x78, 0x65, 0x6C, 0x54, + 0x79, 0x70, 0x65, 0x3E, 0x47, 0x72, 0x61, 0x79, 0x38, 0x3C, 0x2F, 0x50, + 0x69, 0x78, 0x65, 0x6C, 0x54, 0x79, 0x70, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x3E, + 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x44, 0x6F, 0x63, 0x75, + 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x3C, 0x2F, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x43, 0x5A, 0x49, 0x43, 0x6D, 0x64, 0x20, 0x67, 0x65, 0x6E, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x64, 0x3C, 0x2F, 0x54, 0x69, 0x74, 0x6C, 0x65, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x43, + 0x6F, 0x6D, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x42, 0x6F, 0x75, 0x6E, 0x64, + 0x73, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x43, 0x30, 0x3A, 0x31, 0x54, 0x30, + 0x3A, 0x31, 0x3B, 0x20, 0x54, 0x69, 0x6C, 0x65, 0x2D, 0x73, 0x69, 0x7A, + 0x65, 0x3A, 0x20, 0x31, 0x20, 0x78, 0x20, 0x31, 0x3B, 0x20, 0x4D, 0x6F, + 0x73, 0x61, 0x69, 0x63, 0x3A, 0x20, 0x20, 0x20, 0x20, 0x31, 0x20, 0x72, + 0x6F, 0x77, 0x20, 0x62, 0x79, 0x20, 0x31, 0x20, 0x63, 0x6F, 0x6C, 0x75, + 0x6D, 0x6E, 0x20, 0x77, 0x69, 0x74, 0x68, 0x20, 0x30, 0x25, 0x20, 0x6F, + 0x76, 0x65, 0x72, 0x6C, 0x61, 0x70, 0x3C, 0x2F, 0x43, 0x6F, 0x6D, 0x6D, + 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, + 0x2F, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x41, 0x70, 0x70, 0x6C, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x6C, 0x69, 0x62, + 0x43, 0x5A, 0x49, 0x72, 0x77, 0x2D, 0x54, 0x65, 0x73, 0x74, 0x3C, 0x2F, + 0x4E, 0x61, 0x6D, 0x65, 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, + 0x20, 0x20, 0x3C, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x3E, 0x30, + 0x2E, 0x30, 0x31, 0x3C, 0x2F, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, + 0x3E, 0x0A, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x41, 0x70, + 0x70, 0x6C, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, + 0x20, 0x20, 0x20, 0x3C, 0x2F, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x3E, 0x0A, 0x20, 0x20, 0x3C, 0x2F, 0x4D, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x3E, 0x0A, 0x3C, 0x2F, 0x49, 0x6D, + 0x61, 0x67, 0x65, 0x44, 0x6F, 0x63, 0x75, 0x6D, 0x65, 0x6E, 0x74, 0x3E, + 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5A, 0x49, 0x53, 0x52, 0x41, 0x57, 0x44, 0x49, + 0x52, 0x45, 0x43, 0x54, 0x4F, 0x52, 0x59, 0x00, 0x20, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x56, 0x00, 0x00, + 0x00, 0x00, 0x20, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x5A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; }