From 1c2e430bcc9739d6fa1dc2b5f0e23cedb445e52f Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Mon, 31 Dec 2018 12:45:53 +0200 Subject: [PATCH 01/32] Support Kernal RPM/WPM, ReClass x64 can read 32bit process. --- NativeCore/BypaPH/BypaPH.h | 140 + NativeCore/BypaPH/Driver.cpp | 191 + NativeCore/BypaPH/Driver.h | 44 + NativeCore/BypaPH/KProcessHacker.cpp | 0 NativeCore/BypaPH/KProcessHacker.h | 4797 +++++++++++++++++ NativeCore/BypaPH/Tools.cpp | 68 + NativeCore/BypaPH/Tools.h | 18 + NativeCore/Unix/NativeCore.Unix.vcxproj | 8 +- NativeCore/Windows/CloseRemoteProcess.cpp | 12 +- NativeCore/Windows/EnumerateProcesses.cpp | 4 +- NativeCore/Windows/NativeCore.hpp | 4 +- NativeCore/Windows/NativeCore.vcxproj | 13 +- NativeCore/Windows/NativeCore.vcxproj.filters | 25 + NativeCore/Windows/OpenRemoteProcess.cpp | 13 +- NativeCore/Windows/Program.h | 4 + NativeCore/Windows/ReadRemoteMemory.cpp | 29 +- NativeCore/Windows/WriteRemoteMemory.cpp | 25 +- ReClass.NET/Core/CoreFunctionsManager.cs | 8 +- ReClass.NET/Core/ICoreProcessFunctions.cs | 4 +- ReClass.NET/Core/NativeCoreWrapper.cs | 12 +- ReClass.NET/Forms/MainForm.cs | 8 +- ReClass.NET/Memory/RemoteProcess.cs | 6 +- 22 files changed, 5385 insertions(+), 48 deletions(-) create mode 100644 NativeCore/BypaPH/BypaPH.h create mode 100644 NativeCore/BypaPH/Driver.cpp create mode 100644 NativeCore/BypaPH/Driver.h create mode 100644 NativeCore/BypaPH/KProcessHacker.cpp create mode 100644 NativeCore/BypaPH/KProcessHacker.h create mode 100644 NativeCore/BypaPH/Tools.cpp create mode 100644 NativeCore/BypaPH/Tools.h create mode 100644 NativeCore/Windows/Program.h diff --git a/NativeCore/BypaPH/BypaPH.h b/NativeCore/BypaPH/BypaPH.h new file mode 100644 index 00000000..257168b9 --- /dev/null +++ b/NativeCore/BypaPH/BypaPH.h @@ -0,0 +1,140 @@ +#pragma once +#include "Driver.h" +#include "KProcessHacker.h" + +#define KPH_DEVICE_TYPE 0x9999 +#define KPH_CTL_CODE(x) CTL_CODE(KPH_DEVICE_TYPE, 0x800 + x, METHOD_NEITHER, FILE_ANY_ACCESS) +#define KPH_READVIRTUALMEMORYUNSAFE KPH_CTL_CODE(58) +#define KPH_READVIRTUALMEMORY KPH_CTL_CODE(56) +#define KPH_WRITEVIRTUALMEMORY KPH_CTL_CODE(57) + +#define PHACKER_DRIVER_FILE "kprocesshacker.sys" +#define PHACKER_SERVICE_NAME "KProcessHacker2" +#define PHACKER_DEVICE_NAME "\\Device\\KProcessHacker2" + +class BypaPH +{ +public: + HANDLE m_hTarget = nullptr; + DWORD pID = 0; + + BypaPH(DWORD dwTargetPid = NULL) + { + pID = dwTargetPid; + SetPrivilege(SE_DEBUG_NAME, TRUE); + m_drv = new Driver(PHACKER_DRIVER_FILE, PHACKER_DEVICE_NAME, PHACKER_SERVICE_NAME, KProcessHacker, KProcessHackerSize); + if (dwTargetPid) + Attach(dwTargetPid); + } + + ~BypaPH() + { + delete m_drv; + if (m_hTarget) + CloseHandle(m_hTarget); + SetPrivilege(SE_DEBUG_NAME, FALSE); + } + + NTSTATUS RWVM(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, SIZE_T BufferSize, PSIZE_T NumberOfBytesReadOrWritten = nullptr, bool read = true, bool unsafe = false) + { + // ProcessHandle may be NULL if reading kernel memory >= 0x8* + + if (!m_drv->GetHandle()) + return STATUS_ABANDONED; + + struct + { + HANDLE ProcessHandle; + PVOID BaseAddress; + PVOID Buffer; + SIZE_T BufferSize; + PSIZE_T NumberOfBytesRead; + } input = { ProcessHandle, BaseAddress, Buffer, BufferSize, NumberOfBytesReadOrWritten }; + + IO_STATUS_BLOCK isb; + + ULONG ioctrlCode = 0; + if (!read && unsafe) // There is no write unsafe + return STATUS_ABANDONED; + if (read && unsafe) + ioctrlCode = KPH_READVIRTUALMEMORYUNSAFE; + if (read && !unsafe) + ioctrlCode = KPH_READVIRTUALMEMORY; + if (!read && !unsafe) + ioctrlCode = KPH_WRITEVIRTUALMEMORY; + + return NtDeviceIoControlFile(m_drv->GetHandle(), nullptr, nullptr, nullptr, &isb, ioctrlCode, &input, sizeof(input), nullptr, 0); + // If status == 0xC0000004 (STATUS_INFO_LENGTH_MISMATCH) you are most likely using the x64 driver from an x86 process. + // We could have it working by having the struct at the right size though. + } + + template T RVMu(HANDLE ProcessHandle, PVOID BaseAddress, PSIZE_T NumberOfBytesRead = nullptr) + { + T response = {}; + RWVM(ProcessHandle, BaseAddress, &response, sizeof(T), NumberOfBytesRead, true, true); + return response; + } + + template T qRVMu(PVOID BaseAddress, PSIZE_T NumberOfBytesRead = nullptr) + { + if (!m_hTarget) + { + *NumberOfBytesRead = 0; + return T{}; + } + return RVMu(m_hTarget, BaseAddress, NumberOfBytesRead); + } + + template T RVM(HANDLE ProcessHandle, PVOID BaseAddress, PSIZE_T NumberOfBytesRead = nullptr) + { + T response = {}; + RWVM(ProcessHandle, BaseAddress, &response, sizeof(T), NumberOfBytesRead, true, false); + return response; + } + + template T qRVM(PVOID BaseAddress, PSIZE_T NumberOfBytesRead = nullptr) + { + if (!m_hTarget) + { + *NumberOfBytesRead = 0; + return T{}; + } + return RVM(m_hTarget, BaseAddress, NumberOfBytesRead); + } + + NTSTATUS WVM(HANDLE ProcessHandle, PVOID BaseAddress, PVOID Buffer, SIZE_T BufferSize, PSIZE_T NumberOfBytesWritten = nullptr) + { + return RWVM(ProcessHandle, BaseAddress, Buffer, BufferSize, NumberOfBytesWritten, false, false); + } + + NTSTATUS qWVM(PVOID BaseAddress, PVOID Buffer, SIZE_T BufferSize, PSIZE_T NumberOfBytesWritten = nullptr) + { + if (!m_hTarget) + { + *NumberOfBytesWritten = 0; + return STATUS_ABANDONED; + } + return WVM(m_hTarget, BaseAddress, Buffer, BufferSize, NumberOfBytesWritten); + } + + bool Attach(DWORD dwPid) + { + if (m_hTarget) + if (!CloseHandle(m_hTarget)) + return false; + m_hTarget = OpenProcess(SYNCHRONIZE, FALSE, dwPid); // Read will work whatever the handle permission. + return m_hTarget != nullptr; + } + + bool Detach(DWORD dwPid) + { + if (m_hTarget) + if (!CloseHandle(m_hTarget)) + return false; + m_hTarget = nullptr; + return true; + } + +private: + Driver* m_drv = nullptr; +}; diff --git a/NativeCore/BypaPH/Driver.cpp b/NativeCore/BypaPH/Driver.cpp new file mode 100644 index 00000000..9dacfad6 --- /dev/null +++ b/NativeCore/BypaPH/Driver.cpp @@ -0,0 +1,191 @@ +#include "Driver.h" + +Driver::Driver(const std::string& strDriverFile, + const std::string& strDeviceName, + const std::string& strDriverName, + const unsigned char* pRawDriver, + const size_t szRawDriver) +{ + // Using either absolute path or getting relative path + m_strDriverFile = strDriverFile; + if (strDriverFile.find_first_of(':') == std::string::npos) + { + char currentPath[MAX_PATH]; + GetCurrentDirectoryA(MAX_PATH, currentPath); + std::string strCurrentPath = currentPath; + strCurrentPath += "\\"; + m_strDriverFile = strCurrentPath + strDriverFile; + } + + m_strDeviceName = strDeviceName; + m_strDriverName = strDriverName; + m_pRawDriver = pRawDriver; + m_szRawDriver = szRawDriver; + + Load(); +} + +Driver::~Driver() { Unload(); } + +bool Driver::Connect() +{ + // Attempts to connect (get a handle) to the driver, first with the classic way + const auto hDevice = CreateFileA(m_strDeviceName.c_str(), GENERIC_READ | GENERIC_WRITE, 0, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); + if (hDevice != INVALID_HANDLE_VALUE) + { + m_hDriver = hDevice; + return true; + } + + // If that failed, trying to get a handle directly with NtOpenFile like Process Hacker does (see their source, in kph.c) + // Thank to sen66 @ UnknownCheats.me for this code snippet + UNICODE_STRING objectName; + OBJECT_ATTRIBUTES objectAttributes; + IO_STATUS_BLOCK isb; + HANDLE hNtDriver; + const auto strObjectName = str2wstr(m_strDeviceName); + + RtlInitUnicodeString(&objectName, strObjectName.c_str()); + InitializeObjectAttributes(&objectAttributes, &objectName, FILE_NON_DIRECTORY_FILE, NULL, NULL); + const auto status = NtOpenFile(&hNtDriver, FILE_GENERIC_READ | FILE_GENERIC_WRITE, &objectAttributes, &isb, FILE_SHARE_READ | FILE_SHARE_WRITE, FILE_NON_DIRECTORY_FILE); + if (status == STATUS_SUCCESS) + { + m_hDriver = hNtDriver; + return true; + } + + return false; +} + +bool Driver::Load() +{ + // Try to get a handle on the driver (if already loaded) + if (Connect()) + { + m_wasRunning = true; + return true; + } + m_wasRunning = false; + + // Getting ready to interact with the service + const auto hScm = OpenSCManagerA(nullptr, nullptr, SC_MANAGER_CREATE_SERVICE); + if (!hScm) + return false; + + // Trying to get a handle on the service if it exist, otherwise we create it + auto hSc = OpenServiceA(hScm, m_strDriverName.c_str(), SERVICE_START); + if (!hSc) + { + // If driver file doesn't exist on disk and we have an embedded driver, we write it on disk + if (WriteDataToFile(m_pRawDriver, m_szRawDriver, m_strDriverFile)) + m_fileWasCreated = true; + else + m_fileWasCreated = false; + + hSc = CreateServiceA(hScm, m_strDriverName.c_str(), "", SERVICE_START, SERVICE_KERNEL_DRIVER, SERVICE_DEMAND_START, SERVICE_ERROR_IGNORE, m_strDriverFile.c_str(), nullptr, nullptr, nullptr, nullptr, nullptr); + if (!hSc) + { + // Service doesn't exist and can't create it, aborting + CloseServiceHandle(hScm); + return false; + } + m_wasInstalled = false; + } + else + m_wasInstalled = true; // The service was already installed + + // Starting service + auto bStartService = StartServiceA(hSc, NULL, nullptr); + if (!bStartService && GetLastError() == ERROR_SERVICE_DISABLED) + { + // Couldn't start service because it is disabled, upgrading handle to modify servcie configuration and starting it + CloseServiceHandle(hSc); + hSc = OpenServiceA(hScm, m_strDriverName.c_str(), SERVICE_START | SERVICE_CHANGE_CONFIG); + const auto bChangeServiceConfig = ChangeServiceConfigA(hSc, SERVICE_NO_CHANGE, SERVICE_DEMAND_START, SERVICE_NO_CHANGE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr); + std::cout << "GLE = " << std::dec << GetLastError() << std::endl; + if (bChangeServiceConfig) + { + bStartService = StartServiceA(hSc, NULL, nullptr); + if (bStartService) + m_wasDisabled = true; + else + m_wasDisabled = false; + } + } + CloseServiceHandle(hSc); + CloseServiceHandle(hScm); + + // Getting handle + return Connect(); +} + +bool Driver::Unload() +{ + // Closing handle + CloseHandle(m_hDriver); + m_hDriver = nullptr; + + // If we want to forcibly stop the driver's service and uninstall it, we ignore if it was running and installed + if (removeAllOnExit) + { + m_wasRunning = false; + m_wasInstalled = false; + } + + // If the service was running we just leave it be just as it was + if (m_wasRunning && !removeAllOnExit) + return true; + + // Getting ready to interact with the service to stop, disable, and/or delete it + SERVICE_STATUS scStatus; + const auto hScm = OpenSCManagerA(nullptr, nullptr, SC_MANAGER_CONNECT); + if (!hScm) + return false; + DWORD dwServicePermission = SERVICE_STOP; + if (!m_wasInstalled) + dwServicePermission |= DELETE; + if (m_wasDisabled) + dwServicePermission |= SERVICE_CHANGE_CONFIG; + const auto hSc = OpenServiceA(hScm, m_strDriverName.c_str(), dwServicePermission); + if (!hSc) + { + CloseServiceHandle(hScm); + return false; + } + + // If the service was not running we stop it + if (!ControlService(hSc, SERVICE_CONTROL_STOP, &scStatus)) + { + CloseServiceHandle(hSc); + CloseServiceHandle(hScm); + return false; + } + + // If the service was disabled we re-disable it + if (m_wasDisabled) + if (!ChangeServiceConfigA(hSc, SERVICE_NO_CHANGE, SERVICE_DISABLED, SERVICE_NO_CHANGE, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr)) + { + CloseServiceHandle(hSc); + CloseServiceHandle(hScm); + return false; + } + + // If the service was installed we stop here + if (m_wasInstalled && !removeAllOnExit) + { + CloseServiceHandle(hSc); + CloseServiceHandle(hScm); + return true; + } + + // If the service was not installed, we uninstall it + const auto bDeleteService = DeleteService(hSc); + CloseServiceHandle(hSc); + CloseServiceHandle(hScm); + + // If we should delete the file we delete it + if (m_fileWasCreated && removeAllOnExit) + return DeleteFileA(m_strDriverFile.c_str()); + + return bDeleteService; +} \ No newline at end of file diff --git a/NativeCore/BypaPH/Driver.h b/NativeCore/BypaPH/Driver.h new file mode 100644 index 00000000..fe656b54 --- /dev/null +++ b/NativeCore/BypaPH/Driver.h @@ -0,0 +1,44 @@ +#pragma once +#include +#include +#include +#include +#include +#include "Tools.h" + +#pragma comment (lib, "ntdll.lib") + +class Driver +{ +public: + Driver(const std::string& strDriverFile, + const std::string& strDeviceName, + const std::string& strDriverName, + const unsigned char* pRawDriver = nullptr, + const size_t szRawDriver = 0); + + ~Driver(); + + HANDLE GetHandle() const { return m_hDriver; } + bool removeAllOnExit = false; + +private: + bool Connect(); + bool Load(); + bool Unload(); + + std::string m_strDriverFile = ""; + std::string m_strDeviceName = ""; + std::string m_strDriverName = ""; + + const unsigned char* m_pRawDriver = nullptr; + size_t m_szRawDriver = 0; + + bool m_wasRunning = false; + bool m_wasInstalled = false; + bool m_wasDisabled = false; + bool m_fileWasCreated = false; + + HANDLE m_hDriver = nullptr; +}; + diff --git a/NativeCore/BypaPH/KProcessHacker.cpp b/NativeCore/BypaPH/KProcessHacker.cpp new file mode 100644 index 00000000..e69de29b diff --git a/NativeCore/BypaPH/KProcessHacker.h b/NativeCore/BypaPH/KProcessHacker.h new file mode 100644 index 00000000..af1c4e10 --- /dev/null +++ b/NativeCore/BypaPH/KProcessHacker.h @@ -0,0 +1,4797 @@ +#pragma once + +#ifndef _WIN64 +#define KProcessHacker KProcessHacker_2_38_x86 +#define KProcessHackerSize KProcessHacker_2_38_x86_size +#else +#define KProcessHacker KProcessHacker_2_38_x64 +#define KProcessHackerSize KProcessHacker_2_38_x64_size +#endif + +const size_t KProcessHacker_2_38_x86_size = 36376; +const unsigned char KProcessHacker_2_38_x86[36376] = { + 0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x02, 0x00, 0x00, + 0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68, + 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20, + 0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x0F, 0xAF, 0x3D, 0x7C, 0x4B, 0xCE, 0x53, 0x2F, 0x4B, 0xCE, 0x53, 0x2F, 0x4B, 0xCE, 0x53, 0x2F, + 0x42, 0xB6, 0xC6, 0x2F, 0x4F, 0xCE, 0x53, 0x2F, 0x4B, 0xCE, 0x52, 0x2F, 0x06, 0xCE, 0x53, 0x2F, + 0x88, 0xC1, 0x0E, 0x2F, 0x4E, 0xCE, 0x53, 0x2F, 0x88, 0xC1, 0x0C, 0x2F, 0x4A, 0xCE, 0x53, 0x2F, + 0x42, 0xB6, 0xD0, 0x2F, 0x46, 0xCE, 0x53, 0x2F, 0x42, 0xB6, 0xC7, 0x2F, 0x4A, 0xCE, 0x53, 0x2F, + 0x42, 0xB6, 0xC2, 0x2F, 0x4A, 0xCE, 0x53, 0x2F, 0x52, 0x69, 0x63, 0x68, 0x4B, 0xCE, 0x53, 0x2F, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x45, 0x00, 0x00, 0x4C, 0x01, 0x07, 0x00, + 0xE2, 0x77, 0x69, 0x55, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x02, 0x01, + 0x0B, 0x01, 0x09, 0x00, 0x80, 0x51, 0x00, 0x00, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xBE, 0x57, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, + 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x69, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x9C, 0x38, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD0, 0x57, 0x00, 0x00, 0x3C, 0x00, 0x00, 0x00, + 0x00, 0x60, 0x00, 0x00, 0xF8, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x69, 0x00, 0x00, 0x98, 0x24, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x78, 0x05, 0x00, 0x00, + 0x40, 0x13, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x60, 0x13, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x12, 0x00, 0x00, 0x3C, 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, + 0x2E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x4A, 0x0D, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, + 0x80, 0x0D, 0x00, 0x00, 0x80, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x68, 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, + 0xB4, 0x06, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, + 0x2E, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0xB4, 0x02, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC8, 0x50, 0x41, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x3B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x80, 0x3B, 0x00, 0x00, 0x00, 0x1C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, + 0x49, 0x4E, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x42, 0x08, 0x00, 0x00, 0x80, 0x57, 0x00, 0x00, + 0x80, 0x08, 0x00, 0x00, 0x80, 0x57, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE2, 0x2E, 0x72, 0x73, 0x72, 0x63, 0x00, 0x00, 0x00, + 0xF8, 0x02, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, + 0x2E, 0x72, 0x65, 0x6C, 0x6F, 0x63, 0x00, 0x00, 0x0E, 0x06, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, + 0x80, 0x06, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x1C, 0xA1, 0x10, + 0x1A, 0x01, 0x00, 0x33, 0xC5, 0x89, 0x45, 0xFC, 0x83, 0x65, 0xE4, 0x00, 0x53, 0x8B, 0x1D, 0x0C, + 0x12, 0x01, 0x00, 0x56, 0x8B, 0x75, 0x0C, 0x8B, 0x46, 0x60, 0x57, 0x8B, 0x78, 0x04, 0xFF, 0xD3, + 0x33, 0xC0, 0x40, 0x39, 0x05, 0xA8, 0x1B, 0x01, 0x00, 0x75, 0x38, 0x83, 0x65, 0xF4, 0x00, 0x83, + 0x65, 0xF8, 0x00, 0x89, 0x45, 0xE8, 0x89, 0x45, 0xEC, 0x0F, 0xB6, 0x46, 0x20, 0x50, 0x8B, 0x47, + 0x04, 0x83, 0xC0, 0x1C, 0x50, 0x8D, 0x45, 0xE8, 0x50, 0xC7, 0x45, 0xF0, 0x14, 0x00, 0x00, 0x00, + 0xFF, 0x15, 0x98, 0x12, 0x01, 0x00, 0x84, 0xC0, 0x75, 0x09, 0xBF, 0x61, 0x00, 0x00, 0xC0, 0xFF, + 0xD3, 0xEB, 0x03, 0x8B, 0x7D, 0xE4, 0x83, 0x66, 0x1C, 0x00, 0x32, 0xD2, 0x8B, 0xCE, 0x89, 0x7E, + 0x18, 0xFF, 0x15, 0x28, 0x13, 0x01, 0x00, 0x8B, 0x4D, 0xFC, 0x8B, 0xC7, 0x5F, 0x5E, 0x33, 0xCD, + 0x5B, 0xE8, 0xE5, 0x08, 0x00, 0x00, 0xC9, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x51, 0x51, 0x53, 0x56, 0x57, 0xC7, 0x45, 0xFC, 0x00, 0x08, 0x00, + 0x00, 0xC7, 0x45, 0xF8, 0x08, 0x00, 0x00, 0x00, 0xBE, 0x4B, 0x70, 0x68, 0x54, 0x56, 0xFF, 0x75, + 0xFC, 0x6A, 0x01, 0xFF, 0x15, 0x20, 0x12, 0x01, 0x00, 0x8B, 0xF8, 0x85, 0xFF, 0x74, 0x2D, 0x8D, + 0x45, 0xFC, 0x50, 0xFF, 0x75, 0xFC, 0x57, 0x6A, 0x0B, 0xFF, 0x15, 0x30, 0x12, 0x01, 0x00, 0x8B, + 0xD8, 0x85, 0xDB, 0x7D, 0x1E, 0x56, 0x57, 0xFF, 0x15, 0x18, 0x12, 0x01, 0x00, 0x81, 0xFB, 0x04, + 0x00, 0x00, 0xC0, 0x75, 0x13, 0xFF, 0x4D, 0xF8, 0x75, 0xC3, 0xEB, 0x0C, 0xBB, 0x9A, 0x00, 0x00, + 0xC0, 0xEB, 0x05, 0x8B, 0x45, 0x08, 0x89, 0x38, 0x5F, 0x5E, 0x8B, 0xC3, 0x5B, 0xC9, 0xC2, 0x04, + 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x0C, 0x8D, 0x45, + 0xF4, 0x50, 0xE8, 0x79, 0xFF, 0xFF, 0xFF, 0x33, 0xD2, 0x3B, 0xC2, 0x7C, 0x5F, 0x8B, 0x4D, 0xF4, + 0x88, 0x55, 0xFF, 0x89, 0x55, 0xF8, 0x39, 0x11, 0x76, 0x3A, 0x8B, 0x45, 0x0C, 0x56, 0x8B, 0x75, + 0x08, 0x57, 0x8D, 0x3C, 0x06, 0x8D, 0x41, 0x0C, 0x53, 0x3B, 0xFE, 0x72, 0x0F, 0x8B, 0x10, 0x3B, + 0xF2, 0x72, 0x09, 0x8B, 0x58, 0x04, 0x03, 0xDA, 0x3B, 0xFB, 0x76, 0x11, 0xFF, 0x45, 0xF8, 0x8B, + 0x55, 0xF8, 0x05, 0x1C, 0x01, 0x00, 0x00, 0x3B, 0x11, 0x72, 0xDE, 0xEB, 0x04, 0xC6, 0x45, 0xFF, + 0x01, 0x5B, 0x5F, 0x5E, 0x68, 0x4B, 0x70, 0x68, 0x54, 0x51, 0xFF, 0x15, 0x18, 0x12, 0x01, 0x00, + 0x33, 0xC0, 0x38, 0x45, 0xFF, 0x75, 0x05, 0xB8, 0x05, 0x00, 0x00, 0xC0, 0xC9, 0xC2, 0x08, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x58, 0x68, 0x38, 0x14, 0x01, 0x00, 0xE8, 0xFA, 0x09, + 0x00, 0x00, 0x8B, 0x4D, 0x0C, 0x89, 0x4D, 0x98, 0x8B, 0x41, 0x60, 0x8B, 0x78, 0x10, 0x8B, 0x58, + 0x08, 0x8B, 0x70, 0x0C, 0x8A, 0x41, 0x20, 0x88, 0x45, 0xA0, 0x85, 0xDB, 0x74, 0x0E, 0x85, 0xFF, + 0x75, 0x0A, 0xBE, 0x06, 0x02, 0x00, 0xC0, 0xE9, 0xE3, 0x04, 0x00, 0x00, 0x83, 0xFB, 0x40, 0x77, + 0xF1, 0x84, 0xC0, 0x74, 0x45, 0x83, 0x65, 0xFC, 0x00, 0x6A, 0x01, 0x53, 0x57, 0xFF, 0x15, 0x38, + 0x12, 0x01, 0x00, 0x53, 0x57, 0x8D, 0x45, 0xA4, 0x50, 0xE8, 0xCE, 0x07, 0x00, 0x00, 0x83, 0xC4, + 0x0C, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x2E, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, + 0x00, 0x89, 0x45, 0x9C, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0x9C, 0xC7, 0x45, + 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xE9, 0x95, 0x04, 0x00, 0x00, 0x53, 0x57, 0x8D, 0x45, 0xA4, 0x50, + 0xE8, 0x97, 0x07, 0x00, 0x00, 0x83, 0xC4, 0x0C, 0xB8, 0x97, 0x21, 0x99, 0x99, 0x3B, 0xF0, 0x0F, + 0x87, 0x33, 0x02, 0x00, 0x00, 0x0F, 0x84, 0x0E, 0x02, 0x00, 0x00, 0xB8, 0xDF, 0x20, 0x99, 0x99, + 0x3B, 0xF0, 0x0F, 0x87, 0xF4, 0x00, 0x00, 0x00, 0x0F, 0x84, 0xD6, 0x00, 0x00, 0x00, 0x81, 0xFE, + 0x03, 0x20, 0x99, 0x99, 0x0F, 0x84, 0xAB, 0x00, 0x00, 0x00, 0x81, 0xFE, 0xCB, 0x20, 0x99, 0x99, + 0x0F, 0x84, 0x84, 0x00, 0x00, 0x00, 0x81, 0xFE, 0xCF, 0x20, 0x99, 0x99, 0x74, 0x61, 0x81, 0xFE, + 0xD3, 0x20, 0x99, 0x99, 0x74, 0x3E, 0x81, 0xFE, 0xD7, 0x20, 0x99, 0x99, 0x74, 0x21, 0x81, 0xFE, + 0xDB, 0x20, 0x99, 0x99, 0x0F, 0x85, 0x4C, 0x03, 0x00, 0x00, 0x83, 0xFB, 0x04, 0x75, 0x7B, 0xFF, + 0x75, 0xA0, 0xFF, 0x75, 0xA4, 0xE8, 0x60, 0x33, 0x00, 0x00, 0xE9, 0x0E, 0x04, 0x00, 0x00, 0x83, + 0xFB, 0x04, 0x75, 0x66, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xA4, 0xE8, 0xF7, 0x32, 0x00, 0x00, 0xE9, + 0xF9, 0x03, 0x00, 0x00, 0x83, 0xFB, 0x0C, 0x75, 0x51, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xAC, 0xFF, + 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xEC, 0x31, 0x00, 0x00, 0xE9, 0xDE, 0x03, 0x00, 0x00, 0x83, + 0xFB, 0x0C, 0x75, 0x36, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, + 0xE8, 0xE5, 0x30, 0x00, 0x00, 0xE9, 0xC3, 0x03, 0x00, 0x00, 0x83, 0xFB, 0x0C, 0x75, 0x1B, 0xFF, + 0x75, 0xA0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xAE, 0x2F, 0x00, 0x00, + 0xE9, 0xA8, 0x03, 0x00, 0x00, 0x83, 0xFB, 0x04, 0x74, 0x0A, 0xBE, 0x04, 0x00, 0x00, 0xC0, 0xE9, + 0x9B, 0x03, 0x00, 0x00, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xA4, 0xE8, 0xFD, 0x15, 0x00, 0x00, 0xE9, + 0x89, 0x03, 0x00, 0x00, 0x83, 0xFB, 0x08, 0x75, 0xE1, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xA8, 0xFF, + 0x75, 0xA4, 0xE8, 0x93, 0x33, 0x00, 0x00, 0xE9, 0x71, 0x03, 0x00, 0x00, 0x81, 0xFE, 0xE3, 0x20, + 0x99, 0x99, 0x0F, 0x84, 0xDC, 0x00, 0x00, 0x00, 0x81, 0xFE, 0xE7, 0x20, 0x99, 0x99, 0x0F, 0x84, + 0xAB, 0x00, 0x00, 0x00, 0x81, 0xFE, 0xEB, 0x20, 0x99, 0x99, 0x74, 0x7E, 0x81, 0xFE, 0xEF, 0x20, + 0x99, 0x99, 0x74, 0x51, 0x81, 0xFE, 0xF3, 0x20, 0x99, 0x99, 0x74, 0x27, 0x81, 0xFE, 0x93, 0x21, + 0x99, 0x99, 0x0F, 0x85, 0x5E, 0x02, 0x00, 0x00, 0x83, 0xFB, 0x0C, 0x75, 0x8D, 0xFF, 0x75, 0xA0, + 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xFA, 0x39, 0x00, 0x00, 0xE9, 0x1A, + 0x03, 0x00, 0x00, 0x83, 0xFB, 0x10, 0x0F, 0x85, 0x6E, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, + 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0x04, 0x36, 0x00, 0x00, + 0xE9, 0xF8, 0x02, 0x00, 0x00, 0x83, 0xFB, 0x14, 0x0F, 0x85, 0x4C, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, + 0xA0, 0xFF, 0x75, 0xB4, 0xFF, 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, + 0xE8, 0x93, 0x33, 0x00, 0x00, 0xE9, 0xD3, 0x02, 0x00, 0x00, 0x83, 0xFB, 0x14, 0x0F, 0x85, 0x27, + 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB4, 0xFF, 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, + 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0x7E, 0x4A, 0x00, 0x00, 0xE9, 0xAE, 0x02, 0x00, 0x00, 0x83, + 0xFB, 0x14, 0x0F, 0x85, 0x02, 0xFF, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB4, 0xFF, 0x75, + 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0x4D, 0x49, 0x00, 0x00, 0xE9, + 0x89, 0x02, 0x00, 0x00, 0x83, 0xFB, 0x14, 0x0F, 0x85, 0xDD, 0xFE, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, + 0xFF, 0x75, 0xB4, 0xFF, 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, + 0x1C, 0x48, 0x00, 0x00, 0xE9, 0x64, 0x02, 0x00, 0x00, 0x83, 0xFB, 0x0C, 0x0F, 0x85, 0xB8, 0xFE, + 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0x29, + 0x3A, 0x00, 0x00, 0xE9, 0x45, 0x02, 0x00, 0x00, 0xB8, 0xB3, 0x21, 0x99, 0x99, 0x3B, 0xF0, 0x0F, + 0x87, 0x25, 0x01, 0x00, 0x00, 0x0F, 0x84, 0xFD, 0x00, 0x00, 0x00, 0x81, 0xFE, 0x9B, 0x21, 0x99, + 0x99, 0x0F, 0x84, 0xD5, 0x00, 0x00, 0x00, 0x81, 0xFE, 0x9F, 0x21, 0x99, 0x99, 0x0F, 0x84, 0xAD, + 0x00, 0x00, 0x00, 0x81, 0xFE, 0xA3, 0x21, 0x99, 0x99, 0x0F, 0x84, 0x85, 0x00, 0x00, 0x00, 0x81, + 0xFE, 0xA7, 0x21, 0x99, 0x99, 0x74, 0x61, 0x81, 0xFE, 0xAB, 0x21, 0x99, 0x99, 0x74, 0x31, 0x81, + 0xFE, 0xAF, 0x21, 0x99, 0x99, 0x0F, 0x85, 0x1B, 0x01, 0x00, 0x00, 0x83, 0xFB, 0x14, 0x0F, 0x85, + 0x46, 0xFE, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB4, 0xFF, 0x75, 0xB0, 0xFF, 0x75, 0xAC, + 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xB7, 0x3C, 0x00, 0x00, 0xE9, 0xCD, 0x01, 0x00, 0x00, + 0x83, 0xFB, 0x18, 0x0F, 0x85, 0x21, 0xFE, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB8, 0xFF, + 0x75, 0xB4, 0xFF, 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0x2D, + 0x43, 0x00, 0x00, 0xE9, 0xA5, 0x01, 0x00, 0x00, 0x83, 0xFB, 0x08, 0x0F, 0x85, 0xF9, 0xFD, 0xFF, + 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xE7, 0x3B, 0x00, 0x00, 0xE9, + 0x89, 0x01, 0x00, 0x00, 0x83, 0xFB, 0x08, 0x0F, 0x85, 0xDD, 0xFD, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, + 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0x7F, 0x3B, 0x00, 0x00, 0xE9, 0x6D, 0x01, 0x00, 0x00, + 0x83, 0xFB, 0x08, 0x0F, 0x85, 0xC1, 0xFD, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xA8, 0xFF, + 0x75, 0xA4, 0xE8, 0xCF, 0x3F, 0x00, 0x00, 0xE9, 0x51, 0x01, 0x00, 0x00, 0x83, 0xFB, 0x08, 0x0F, + 0x85, 0xA5, 0xFD, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xB9, + 0x3A, 0x00, 0x00, 0xE9, 0x35, 0x01, 0x00, 0x00, 0x83, 0xFB, 0x10, 0x0F, 0x85, 0x89, 0xFD, 0xFF, + 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, + 0xE8, 0xB5, 0x3D, 0x00, 0x00, 0xE9, 0x13, 0x01, 0x00, 0x00, 0x81, 0xFE, 0x5B, 0x22, 0x99, 0x99, + 0x0F, 0x84, 0xEA, 0x00, 0x00, 0x00, 0x81, 0xFE, 0x5F, 0x22, 0x99, 0x99, 0x0F, 0x84, 0xB9, 0x00, + 0x00, 0x00, 0x81, 0xFE, 0x63, 0x22, 0x99, 0x99, 0x0F, 0x84, 0x8B, 0x00, 0x00, 0x00, 0x81, 0xFE, + 0x67, 0x22, 0x99, 0x99, 0x74, 0x5B, 0x81, 0xFE, 0x23, 0x23, 0x99, 0x99, 0x74, 0x37, 0x81, 0xFE, + 0x27, 0x23, 0x99, 0x99, 0x74, 0x0A, 0xBE, 0x10, 0x00, 0x00, 0xC0, 0xE9, 0xCF, 0x00, 0x00, 0x00, + 0x83, 0xFB, 0x14, 0x0F, 0x85, 0x21, 0xFD, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB4, 0xFF, + 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xD4, 0x35, 0x00, 0x00, + 0xE9, 0xA8, 0x00, 0x00, 0x00, 0x83, 0xFB, 0x08, 0x0F, 0x85, 0xFC, 0xFC, 0xFF, 0xFF, 0xFF, 0x75, + 0xA0, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0x4C, 0x35, 0x00, 0x00, 0xE9, 0x8C, 0x00, 0x00, + 0x00, 0x83, 0xFB, 0x1C, 0x0F, 0x85, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xBC, + 0xFF, 0x75, 0xB8, 0xFF, 0x75, 0xB4, 0xFF, 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, + 0x75, 0xA4, 0xE8, 0x85, 0x21, 0x00, 0x00, 0xEB, 0x64, 0x83, 0xFB, 0x14, 0x0F, 0x85, 0xB8, 0xFC, + 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB4, 0xFF, 0x75, 0xB0, 0xFF, 0x75, 0xAC, 0xFF, 0x75, + 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xCF, 0x1E, 0x00, 0x00, 0xEB, 0x42, 0x83, 0xFB, 0x18, 0x0F, 0x85, + 0x96, 0xFC, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB8, 0xFF, 0x75, 0xB4, 0xFF, 0x75, 0xB0, + 0xFF, 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0xF6, 0x23, 0x00, 0x00, 0xEB, 0x1D, + 0x83, 0xFB, 0x10, 0x0F, 0x85, 0x71, 0xFC, 0xFF, 0xFF, 0xFF, 0x75, 0xA0, 0xFF, 0x75, 0xB0, 0xFF, + 0x75, 0xAC, 0xFF, 0x75, 0xA8, 0xFF, 0x75, 0xA4, 0xE8, 0x21, 0x1C, 0x00, 0x00, 0x8B, 0xF0, 0x8B, + 0x4D, 0x98, 0x89, 0x71, 0x18, 0x83, 0x61, 0x1C, 0x00, 0x32, 0xD2, 0xFF, 0x15, 0x28, 0x13, 0x01, + 0x00, 0x8B, 0xC6, 0xE8, 0x1C, 0x05, 0x00, 0x00, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x51, 0x56, 0x8B, 0x75, 0x08, 0x80, 0x3E, 0x00, 0x75, 0x04, 0x33, + 0xC0, 0xEB, 0x5B, 0x80, 0x7E, 0x01, 0x00, 0x75, 0x52, 0x8B, 0x46, 0x04, 0x8B, 0x4E, 0x0C, 0x53, + 0x8B, 0x5E, 0x08, 0x57, 0x89, 0x45, 0xFC, 0x8B, 0x46, 0x10, 0x50, 0x8D, 0x14, 0x01, 0x51, 0x89, + 0x55, 0x08, 0xE8, 0x0F, 0xFA, 0xFF, 0xFF, 0x85, 0xC0, 0x7C, 0x26, 0x8B, 0x7E, 0x0C, 0xEB, 0x10, + 0x53, 0xFF, 0x75, 0xFC, 0x57, 0xFF, 0x15, 0x3C, 0x12, 0x01, 0x00, 0x3B, 0xC3, 0x74, 0x08, 0x47, + 0x3B, 0x7D, 0x08, 0x72, 0xEB, 0xEB, 0x0E, 0x8B, 0x46, 0x14, 0x03, 0xC7, 0x89, 0x46, 0x18, 0xEB, + 0x04, 0x83, 0x66, 0x18, 0x00, 0x5F, 0xC6, 0x46, 0x01, 0x01, 0x5B, 0x8B, 0x46, 0x18, 0x5E, 0xC9, + 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x1C, 0x68, 0x58, 0x14, 0x01, 0x00, 0xE8, + 0x80, 0x02, 0x00, 0x00, 0x83, 0x65, 0xFC, 0x00, 0x6A, 0x04, 0x6A, 0x08, 0x8B, 0x7D, 0x08, 0x57, + 0x8B, 0x35, 0x38, 0x12, 0x01, 0x00, 0xFF, 0xD6, 0x66, 0x8B, 0x1F, 0x66, 0x89, 0x5D, 0xD4, 0x66, + 0x89, 0x5D, 0xD6, 0x83, 0x65, 0xD8, 0x00, 0x8B, 0x47, 0x04, 0x89, 0x45, 0xE4, 0x0F, 0xB7, 0xFB, + 0x6A, 0x02, 0x57, 0x50, 0xFF, 0xD6, 0x6A, 0xFE, 0x5E, 0x89, 0x75, 0xFC, 0xF6, 0xC3, 0x01, 0x74, + 0x0A, 0xB8, 0x0D, 0x00, 0x00, 0xC0, 0xE9, 0x8E, 0x00, 0x00, 0x00, 0x66, 0x85, 0xDB, 0x74, 0x31, + 0x68, 0x4B, 0x70, 0x68, 0x55, 0x57, 0x33, 0xDB, 0x43, 0x53, 0xFF, 0x15, 0x20, 0x12, 0x01, 0x00, + 0x89, 0x45, 0xD8, 0x85, 0xC0, 0x75, 0x07, 0xB8, 0x9A, 0x00, 0x00, 0xC0, 0xEB, 0x6B, 0x89, 0x5D, + 0xFC, 0x57, 0xFF, 0x75, 0xE4, 0x50, 0xE8, 0xF1, 0x01, 0x00, 0x00, 0x83, 0xC4, 0x0C, 0x89, 0x75, + 0xFC, 0x8B, 0x4D, 0xD4, 0x8B, 0x45, 0x0C, 0x89, 0x08, 0x8B, 0x4D, 0xD8, 0x89, 0x48, 0x04, 0x33, + 0xC0, 0xEB, 0x46, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, + 0xC3, 0x8B, 0x65, 0xE8, 0x68, 0x4B, 0x70, 0x68, 0x55, 0xFF, 0x75, 0xD8, 0xFF, 0x15, 0x18, 0x12, + 0x01, 0x00, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE0, 0xEB, 0x1B, 0x8B, 0x45, + 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, + 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xDC, 0xE8, 0xEB, 0x01, 0x00, 0x00, 0xC2, 0x08, + 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0xA1, 0x20, 0x1A, 0x01, 0x00, + 0x85, 0xC0, 0x74, 0x19, 0x83, 0x3D, 0x38, 0x1A, 0x01, 0x00, 0x00, 0x74, 0x10, 0xFF, 0x75, 0x08, + 0xFF, 0xD0, 0x33, 0xC9, 0x85, 0xC0, 0x0F, 0x9D, 0xC1, 0x8A, 0xC1, 0xEB, 0x19, 0xA1, 0x08, 0x19, + 0x01, 0x00, 0x83, 0xF8, 0xFF, 0x75, 0x04, 0x32, 0xC0, 0xEB, 0x0B, 0x8B, 0x4D, 0x08, 0x03, 0xC8, + 0xFF, 0x15, 0xBC, 0x12, 0x01, 0x00, 0x5D, 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0xA1, 0x38, 0x1A, 0x01, 0x00, 0x85, 0xC0, 0x74, 0x03, 0x5D, 0xFF, + 0xE0, 0xA1, 0x08, 0x19, 0x01, 0x00, 0x83, 0xF8, 0xFF, 0x74, 0x0B, 0x8B, 0x4D, 0x08, 0x03, 0xC8, + 0xFF, 0x15, 0xC0, 0x12, 0x01, 0x00, 0x5D, 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x81, 0xEC, 0x00, 0x01, 0x00, 0x00, 0x53, 0x8B, 0x5D, 0x0C, 0x56, + 0x8B, 0x75, 0x08, 0x46, 0x8D, 0x04, 0x1E, 0x83, 0xF8, 0x40, 0x76, 0x04, 0x33, 0xC0, 0xEB, 0x58, + 0x8B, 0x4D, 0x10, 0x83, 0xE1, 0x01, 0x3B, 0x4D, 0x10, 0x75, 0xF1, 0xFF, 0x75, 0x10, 0x50, 0x8D, + 0x85, 0x00, 0xFF, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0xE4, 0x12, 0x01, 0x00, 0x89, 0x45, 0x10, 0x3B, + 0xC6, 0x76, 0xD9, 0x57, 0x33, 0xC0, 0x33, 0xFF, 0x85, 0xDB, 0x76, 0x22, 0x8D, 0x94, 0xB5, 0x00, + 0xFF, 0xFF, 0xFF, 0x8D, 0x0C, 0x30, 0x3B, 0x4D, 0x10, 0x73, 0x13, 0x8B, 0x0A, 0x8B, 0x5D, 0x14, + 0x03, 0xF9, 0x89, 0x0C, 0x83, 0x40, 0x83, 0xC2, 0x04, 0x3B, 0x45, 0x0C, 0x72, 0xE5, 0x8B, 0x4D, + 0x18, 0x85, 0xC9, 0x74, 0x02, 0x89, 0x39, 0x5F, 0x5E, 0x5B, 0xC9, 0xC2, 0x14, 0x00, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x8B, 0x55, 0x0C, 0x8B, 0x45, 0x08, 0xC6, + 0x02, 0x00, 0x8B, 0x00, 0x8B, 0x08, 0x81, 0xF9, 0x05, 0x00, 0x00, 0xC0, 0x74, 0x10, 0x81, 0xF9, + 0x01, 0x00, 0x00, 0x80, 0x74, 0x08, 0x81, 0xF9, 0x06, 0x00, 0x00, 0xC0, 0x75, 0x11, 0x83, 0x78, + 0x10, 0x01, 0x76, 0x0B, 0x8B, 0x4D, 0x10, 0xC6, 0x02, 0x01, 0x8B, 0x40, 0x18, 0x89, 0x01, 0x33, + 0xC0, 0x40, 0x5D, 0xC2, 0x0C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x3B, 0x0D, 0x10, 0x1A, 0x01, + 0x00, 0x75, 0x03, 0xC2, 0x00, 0x00, 0xE9, 0x05, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x51, 0x89, 0x4D, 0xFC, 0x6A, 0x00, 0xFF, 0x35, 0x14, 0x1A, 0x01, + 0x00, 0xFF, 0x35, 0x10, 0x1A, 0x01, 0x00, 0xFF, 0x75, 0xFC, 0x68, 0xF7, 0x00, 0x00, 0x00, 0xFF, + 0x15, 0x24, 0x13, 0x01, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFF, 0x25, 0x28, 0x12, + 0x01, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFF, 0x25, 0x2C, 0x13, 0x01, 0x00, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x68, 0xC0, 0x0E, 0x01, 0x00, 0x64, 0xFF, 0x35, 0x00, 0x00, 0x00, 0x00, + 0x8B, 0x44, 0x24, 0x10, 0x89, 0x6C, 0x24, 0x10, 0x8D, 0x6C, 0x24, 0x10, 0x2B, 0xE0, 0x53, 0x56, + 0x57, 0xA1, 0x10, 0x1A, 0x01, 0x00, 0x31, 0x45, 0xFC, 0x33, 0xC5, 0x50, 0x89, 0x65, 0xE8, 0xFF, + 0x75, 0xF8, 0x8B, 0x45, 0xFC, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x89, 0x45, 0xF8, 0x8D, + 0x45, 0xF0, 0x64, 0xA3, 0x00, 0x00, 0x00, 0x00, 0xC3, 0x8B, 0x4D, 0xF0, 0x64, 0x89, 0x0D, 0x00, + 0x00, 0x00, 0x00, 0x59, 0x5F, 0x5F, 0x5E, 0x5B, 0x8B, 0xE5, 0x5D, 0x51, 0xC3, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x14, 0x53, 0x8B, 0x5D, 0x0C, 0x56, 0x8B, 0x73, 0x08, + 0x33, 0x35, 0x10, 0x1A, 0x01, 0x00, 0x57, 0x8B, 0x06, 0xC6, 0x45, 0xFF, 0x00, 0xC7, 0x45, 0xF8, + 0x01, 0x00, 0x00, 0x00, 0x8D, 0x7B, 0x10, 0x83, 0xF8, 0xFE, 0x74, 0x0D, 0x8B, 0x4E, 0x04, 0x03, + 0xCF, 0x33, 0x0C, 0x38, 0xE8, 0x02, 0xFF, 0xFF, 0xFF, 0x8B, 0x4E, 0x0C, 0x8B, 0x46, 0x08, 0x03, + 0xCF, 0x33, 0x0C, 0x38, 0xE8, 0xF2, 0xFE, 0xFF, 0xFF, 0x8B, 0x45, 0x08, 0xF6, 0x40, 0x04, 0x66, + 0x0F, 0x85, 0xE2, 0x00, 0x00, 0x00, 0x8B, 0x4D, 0x10, 0x8D, 0x55, 0xEC, 0x89, 0x53, 0xFC, 0x8B, + 0x5B, 0x0C, 0x89, 0x45, 0xEC, 0x89, 0x4D, 0xF0, 0x83, 0xFB, 0xFE, 0x74, 0x5F, 0x8D, 0x49, 0x00, + 0x8D, 0x04, 0x5B, 0x8B, 0x4C, 0x86, 0x14, 0x8D, 0x44, 0x86, 0x10, 0x89, 0x45, 0xF4, 0x8B, 0x00, + 0x89, 0x45, 0x08, 0x85, 0xC9, 0x74, 0x14, 0x8B, 0xD7, 0xE8, 0x0F, 0x02, 0x00, 0x00, 0xC6, 0x45, + 0xFF, 0x01, 0x85, 0xC0, 0x7C, 0x40, 0x7F, 0x47, 0x8B, 0x45, 0x08, 0x8B, 0xD8, 0x83, 0xF8, 0xFE, + 0x75, 0xCE, 0x80, 0x7D, 0xFF, 0x00, 0x74, 0x24, 0x8B, 0x06, 0x83, 0xF8, 0xFE, 0x74, 0x0D, 0x8B, + 0x4E, 0x04, 0x03, 0xCF, 0x33, 0x0C, 0x38, 0xE8, 0x7F, 0xFE, 0xFF, 0xFF, 0x8B, 0x4E, 0x0C, 0x8B, + 0x56, 0x08, 0x03, 0xCF, 0x33, 0x0C, 0x3A, 0xE8, 0x6F, 0xFE, 0xFF, 0xFF, 0x8B, 0x45, 0xF8, 0x5F, + 0x5E, 0x5B, 0x8B, 0xE5, 0x5D, 0xC3, 0xC7, 0x45, 0xF8, 0x00, 0x00, 0x00, 0x00, 0xEB, 0xC9, 0x8B, + 0x4D, 0x0C, 0xE8, 0xDF, 0x01, 0x00, 0x00, 0x8B, 0x45, 0x0C, 0x39, 0x58, 0x0C, 0x74, 0x12, 0x68, + 0x10, 0x1A, 0x01, 0x00, 0x57, 0x8B, 0xD3, 0x8B, 0xC8, 0xE8, 0xE2, 0x01, 0x00, 0x00, 0x8B, 0x45, + 0x0C, 0x8B, 0x4D, 0x08, 0x89, 0x48, 0x0C, 0x8B, 0x06, 0x83, 0xF8, 0xFE, 0x74, 0x0D, 0x8B, 0x4E, + 0x04, 0x03, 0xCF, 0x33, 0x0C, 0x38, 0xE8, 0x20, 0xFE, 0xFF, 0xFF, 0x8B, 0x4E, 0x0C, 0x8B, 0x56, + 0x08, 0x03, 0xCF, 0x33, 0x0C, 0x3A, 0xE8, 0x10, 0xFE, 0xFF, 0xFF, 0x8B, 0x45, 0xF4, 0x8B, 0x48, + 0x08, 0x8B, 0xD7, 0xE8, 0x7C, 0x01, 0x00, 0x00, 0xBA, 0xFE, 0xFF, 0xFF, 0xFF, 0x39, 0x53, 0x0C, + 0x74, 0x8A, 0x68, 0x10, 0x1A, 0x01, 0x00, 0x57, 0x8B, 0xCB, 0xE8, 0x91, 0x01, 0x00, 0x00, 0xE9, + 0x54, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x68, 0xC0, 0x0E, 0x01, + 0x00, 0x64, 0xFF, 0x35, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x44, 0x24, 0x10, 0x89, 0x6C, 0x24, 0x10, + 0x8D, 0x6C, 0x24, 0x10, 0x2B, 0xE0, 0x53, 0x56, 0x57, 0xA1, 0x10, 0x1A, 0x01, 0x00, 0x31, 0x45, + 0xFC, 0x33, 0xC5, 0x89, 0x45, 0xE4, 0x50, 0x89, 0x65, 0xE8, 0xFF, 0x75, 0xF8, 0x8B, 0x45, 0xFC, + 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x89, 0x45, 0xF8, 0x8D, 0x45, 0xF0, 0x64, 0xA3, 0x00, + 0x00, 0x00, 0x00, 0xC3, 0x8B, 0x4D, 0xE4, 0x33, 0xCD, 0xE8, 0x8D, 0xFD, 0xFF, 0xFF, 0xE9, 0x26, + 0xFE, 0xFF, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x53, 0x56, 0x57, 0x8B, 0x54, 0x24, 0x10, 0x8B, + 0x44, 0x24, 0x14, 0x8B, 0x4C, 0x24, 0x18, 0x55, 0x52, 0x50, 0x51, 0x51, 0x68, 0xFB, 0x10, 0x01, + 0x00, 0x64, 0xFF, 0x35, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x10, 0x1A, 0x01, 0x00, 0x33, 0xC4, 0x89, + 0x44, 0x24, 0x08, 0x64, 0x89, 0x25, 0x00, 0x00, 0x00, 0x00, 0x8B, 0x44, 0x24, 0x30, 0x8B, 0x58, + 0x08, 0x8B, 0x4C, 0x24, 0x2C, 0x33, 0x19, 0x8B, 0x70, 0x0C, 0x83, 0xFE, 0xFE, 0x74, 0x2E, 0x8B, + 0x54, 0x24, 0x34, 0x83, 0xFA, 0xFE, 0x74, 0x04, 0x3B, 0xF2, 0x76, 0x21, 0x8D, 0x34, 0x76, 0x8D, + 0x5C, 0xB3, 0x10, 0x8B, 0x0B, 0x89, 0x48, 0x0C, 0x83, 0x7B, 0x04, 0x00, 0x75, 0xCC, 0xB9, 0x01, + 0x00, 0x00, 0x00, 0x8B, 0x43, 0x08, 0xE8, 0xD1, 0x00, 0x00, 0x00, 0xEB, 0xBD, 0x64, 0x8F, 0x05, + 0x00, 0x00, 0x00, 0x00, 0x83, 0xC4, 0x18, 0x5F, 0x5E, 0x5B, 0xC3, 0x8B, 0x4C, 0x24, 0x04, 0xF7, + 0x41, 0x04, 0x06, 0x00, 0x00, 0x00, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x74, 0x33, 0x8B, 0x44, 0x24, + 0x08, 0x8B, 0x48, 0x08, 0x33, 0xC8, 0xE8, 0xE0, 0xFC, 0xFF, 0xFF, 0x55, 0x8B, 0x68, 0x18, 0xFF, + 0x70, 0x0C, 0xFF, 0x70, 0x10, 0xFF, 0x70, 0x14, 0xE8, 0x4B, 0xFF, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, + 0x5D, 0x8B, 0x44, 0x24, 0x08, 0x8B, 0x54, 0x24, 0x10, 0x89, 0x02, 0xB8, 0x03, 0x00, 0x00, 0x00, + 0xC3, 0x55, 0x8B, 0x4C, 0x24, 0x08, 0x8B, 0x29, 0xFF, 0x71, 0x1C, 0xFF, 0x71, 0x18, 0xFF, 0x71, + 0x28, 0xE8, 0x22, 0xFF, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, 0x5D, 0xC2, 0x04, 0x00, 0x55, 0x56, 0x57, + 0x53, 0x8B, 0xEA, 0x33, 0xC0, 0x33, 0xDB, 0x33, 0xD2, 0x33, 0xF6, 0x33, 0xFF, 0xFF, 0xD1, 0x5B, + 0x5F, 0x5E, 0x5D, 0xC3, 0x8B, 0xEA, 0x8B, 0xF1, 0x8B, 0xC1, 0x33, 0xC0, 0x33, 0xDB, 0x33, 0xC9, + 0x33, 0xD2, 0x33, 0xFF, 0xFF, 0xE6, 0x55, 0x8B, 0xEC, 0x53, 0x56, 0x57, 0x6A, 0x00, 0x6A, 0x00, + 0x68, 0x9B, 0x11, 0x01, 0x00, 0x51, 0xE8, 0x29, 0x00, 0x00, 0x00, 0x5F, 0x5E, 0x5B, 0x5D, 0xC3, + 0x55, 0x8B, 0x6C, 0x24, 0x08, 0x52, 0x51, 0xFF, 0x74, 0x24, 0x14, 0xE8, 0xC8, 0xFE, 0xFF, 0xFF, + 0x83, 0xC4, 0x0C, 0x5D, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFF, 0xD0, 0xC3, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xFF, 0x25, 0x34, 0x13, 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, + 0x92, 0x5F, 0x00, 0x00, 0xA0, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x59, 0x00, 0x00, + 0x9C, 0x59, 0x00, 0x00, 0xAE, 0x59, 0x00, 0x00, 0xB8, 0x59, 0x00, 0x00, 0xCC, 0x59, 0x00, 0x00, + 0xD8, 0x59, 0x00, 0x00, 0xF0, 0x59, 0x00, 0x00, 0x08, 0x5A, 0x00, 0x00, 0x12, 0x5A, 0x00, 0x00, + 0x22, 0x5A, 0x00, 0x00, 0x3E, 0x5A, 0x00, 0x00, 0x50, 0x5A, 0x00, 0x00, 0x60, 0x5A, 0x00, 0x00, + 0x74, 0x5A, 0x00, 0x00, 0x84, 0x5A, 0x00, 0x00, 0xA0, 0x5A, 0x00, 0x00, 0xB4, 0x5A, 0x00, 0x00, + 0xCC, 0x5A, 0x00, 0x00, 0xE8, 0x5A, 0x00, 0x00, 0xF8, 0x5A, 0x00, 0x00, 0x0C, 0x5B, 0x00, 0x00, + 0x26, 0x5B, 0x00, 0x00, 0x3E, 0x5B, 0x00, 0x00, 0x56, 0x5B, 0x00, 0x00, 0x70, 0x5B, 0x00, 0x00, + 0x88, 0x5B, 0x00, 0x00, 0x98, 0x5B, 0x00, 0x00, 0xAE, 0x5B, 0x00, 0x00, 0xC4, 0x5B, 0x00, 0x00, + 0xD8, 0x5B, 0x00, 0x00, 0xEE, 0x5B, 0x00, 0x00, 0x06, 0x5C, 0x00, 0x00, 0x22, 0x5C, 0x00, 0x00, + 0x3E, 0x5C, 0x00, 0x00, 0x5C, 0x5C, 0x00, 0x00, 0x70, 0x59, 0x00, 0x00, 0x76, 0x5C, 0x00, 0x00, + 0x94, 0x5C, 0x00, 0x00, 0xB2, 0x5C, 0x00, 0x00, 0xCE, 0x5C, 0x00, 0x00, 0xE2, 0x5C, 0x00, 0x00, + 0xFC, 0x5C, 0x00, 0x00, 0x08, 0x5D, 0x00, 0x00, 0x1A, 0x5D, 0x00, 0x00, 0x30, 0x5D, 0x00, 0x00, + 0x4E, 0x5D, 0x00, 0x00, 0x6C, 0x5D, 0x00, 0x00, 0x86, 0x5D, 0x00, 0x00, 0x9C, 0x5D, 0x00, 0x00, + 0xAC, 0x5D, 0x00, 0x00, 0xC8, 0x5D, 0x00, 0x00, 0xDC, 0x5D, 0x00, 0x00, 0xEA, 0x5D, 0x00, 0x00, + 0x00, 0x5E, 0x00, 0x00, 0x16, 0x5E, 0x00, 0x00, 0x2A, 0x5E, 0x00, 0x00, 0x44, 0x5E, 0x00, 0x00, + 0x62, 0x5E, 0x00, 0x00, 0x7C, 0x5E, 0x00, 0x00, 0x94, 0x5E, 0x00, 0x00, 0xA8, 0x5E, 0x00, 0x00, + 0xBA, 0x5E, 0x00, 0x00, 0xCE, 0x5E, 0x00, 0x00, 0xDE, 0x5E, 0x00, 0x00, 0xF4, 0x5E, 0x00, 0x00, + 0x04, 0x5F, 0x00, 0x00, 0x24, 0x5F, 0x00, 0x00, 0x3A, 0x5F, 0x00, 0x00, 0x52, 0x5F, 0x00, 0x00, + 0x66, 0x5F, 0x00, 0x00, 0x74, 0x5F, 0x00, 0x00, 0x5A, 0x59, 0x00, 0x00, 0x6C, 0x5C, 0x00, 0x00, + 0x48, 0x59, 0x00, 0x00, 0xB6, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE2, 0x77, 0x69, 0x55, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5E, 0x00, 0x00, 0x00, 0xA8, 0x13, 0x00, 0x00, 0xA8, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x1A, 0x01, 0x00, + 0x10, 0x14, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x52, 0x53, 0x44, 0x53, 0x91, 0xE5, 0x7F, 0xB7, + 0xDE, 0x2C, 0x9C, 0x42, 0xAF, 0x26, 0x46, 0xC1, 0x91, 0x80, 0x7A, 0x90, 0x06, 0x00, 0x00, 0x00, + 0x64, 0x3A, 0x5C, 0x70, 0x72, 0x6F, 0x6A, 0x65, 0x63, 0x74, 0x73, 0x5C, 0x70, 0x72, 0x6F, 0x63, + 0x65, 0x73, 0x73, 0x68, 0x61, 0x63, 0x6B, 0x65, 0x72, 0x32, 0x5C, 0x6B, 0x70, 0x72, 0x6F, 0x63, + 0x65, 0x73, 0x73, 0x68, 0x61, 0x63, 0x6B, 0x65, 0x72, 0x5C, 0x62, 0x69, 0x6E, 0x5C, 0x69, 0x33, + 0x38, 0x36, 0x5C, 0x6B, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x68, 0x61, 0x63, 0x6B, 0x65, + 0x72, 0x2E, 0x70, 0x64, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0x0E, 0x00, 0x00, 0xFB, 0x10, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xD4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xD0, 0x1D, 0x01, 0x00, + 0xDE, 0x1D, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x88, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x7A, 0x06, 0x01, 0x00, + 0x88, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xC4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x8E, 0x0C, 0x01, 0x00, + 0x9C, 0x0C, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x63, 0x0C, 0x01, 0x00, 0x71, 0x0C, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xBC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xDC, 0x26, 0x01, 0x00, 0xEA, 0x26, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xB0, 0x27, 0x01, 0x00, 0xBE, 0x27, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x7C, 0x28, 0x01, 0x00, 0x8A, 0x28, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xBA, 0x28, 0x01, 0x00, + 0xC8, 0x28, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xB4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x36, 0x2A, 0x01, 0x00, + 0x44, 0x2A, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x88, 0x2A, 0x01, 0x00, 0x96, 0x2A, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xCC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x83, 0x2C, 0x01, 0x00, 0x91, 0x2C, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x27, 0x2D, 0x01, 0x00, 0x2B, 0x2D, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xAC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xB7, 0x2D, 0x01, 0x00, + 0xC5, 0x2D, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x67, 0x2E, 0x01, 0x00, 0x75, 0x2E, 0x01, 0x00, + 0xE4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x3C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x92, 0x2F, 0x01, 0x00, 0xA3, 0x2F, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x35, 0x30, 0x01, 0x00, 0x46, 0x30, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x1B, 0x31, 0x01, 0x00, + 0x2C, 0x31, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x04, 0x32, 0x01, 0x00, 0x15, 0x32, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x94, 0x32, 0x01, 0x00, 0xA5, 0x32, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x1B, 0x33, 0x01, 0x00, 0x2C, 0x33, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xA2, 0x33, 0x01, 0x00, + 0xB3, 0x33, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xC8, 0x34, 0x01, 0x00, 0xD9, 0x34, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xB2, 0x35, 0x01, 0x00, 0xC3, 0x35, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x7C, 0x36, 0x01, 0x00, 0x8D, 0x36, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xE3, 0x36, 0x01, 0x00, + 0xE7, 0x36, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xC0, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x74, 0x37, 0x01, 0x00, + 0x82, 0x37, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x19, 0x38, 0x01, 0x00, 0x27, 0x38, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xE4, 0x38, 0x01, 0x00, 0xF2, 0x38, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x01, 0x39, 0x01, 0x00, 0x0F, 0x39, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xCC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x66, 0x39, 0x01, 0x00, + 0x74, 0x39, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xF5, 0x39, 0x01, 0x00, 0x03, 0x3A, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xAC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x33, 0x3C, 0x01, 0x00, 0x41, 0x3C, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0xC5, 0x3D, 0x01, 0x00, 0xD3, 0x3D, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x6C, 0x3D, 0x01, 0x00, + 0x7A, 0x3D, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xF7, 0x3C, 0x01, 0x00, 0x05, 0x3D, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x12, 0x3E, 0x01, 0x00, 0x16, 0x3E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xB4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x61, 0x3E, 0x01, 0x00, 0x6F, 0x3E, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x65, 0x3F, 0x01, 0x00, 0x73, 0x3F, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xDA, 0x3E, 0x01, 0x00, + 0xE8, 0x3E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xCC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x92, 0x40, 0x01, 0x00, + 0xA0, 0x40, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xD0, 0x41, 0x01, 0x00, 0xDE, 0x41, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x4E, 0x42, 0x01, 0x00, 0x5C, 0x42, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0xDB, 0x42, 0x01, 0x00, 0xE9, 0x42, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xCC, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x39, 0x43, 0x01, 0x00, + 0x47, 0x43, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xBD, 0x43, 0x01, 0x00, 0xCB, 0x43, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x50, 0x46, 0x01, 0x00, 0x5E, 0x46, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x5A, 0x47, 0x01, 0x00, 0x68, 0x47, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x0F, 0x47, 0x01, 0x00, + 0x1D, 0x47, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xA7, 0x47, 0x01, 0x00, 0xAB, 0x47, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xF8, 0x47, 0x01, 0x00, 0x06, 0x48, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0x02, 0x49, 0x01, 0x00, 0x10, 0x49, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x70, 0x48, 0x01, 0x00, + 0x7E, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0x6C, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xAF, 0x4A, 0x01, 0x00, + 0xBD, 0x4A, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xF8, 0x4A, 0x01, 0x00, 0x06, 0x4B, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x46, 0x4C, 0x01, 0x00, 0x54, 0x4C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x24, 0xFD, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xD9, 0x4F, 0x01, 0x00, 0xFB, 0x4F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x39, 0x51, 0x01, 0x00, 0x47, 0x51, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0xCA, 0x51, 0x01, 0x00, 0xCE, 0x51, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xD4, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x45, 0x52, 0x01, 0x00, + 0x53, 0x52, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0xD6, 0x52, 0x01, 0x00, 0xDA, 0x52, 0x01, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xC8, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xFF, 0xFF, 0xFF, 0xA0, 0x53, 0x01, 0x00, 0xAE, 0x53, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, + 0xF1, 0x53, 0x01, 0x00, 0xFF, 0x53, 0x01, 0x00, 0xFE, 0xFF, 0xFF, 0xFF, 0x6E, 0x54, 0x01, 0x00, + 0x72, 0x54, 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, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x56, 0x64, 0xA1, 0x24, 0x01, 0x00, 0x00, + 0x8B, 0x75, 0x08, 0x3B, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x56, 0x8B, 0x75, 0x08, 0x57, 0x8D, 0xBE, + 0x40, 0x02, 0x00, 0x00, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x53, 0x56, 0x57, 0x33, 0xD2, 0x6A, 0x08, + 0x42, 0x5E, 0x8D, 0xB9, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x51, 0x51, 0x53, 0x56, 0x64, 0x8B, 0x35, + 0x24, 0x01, 0x00, 0x00, 0x66, 0xFF, 0x8E, 0x84, 0x00, 0x00, 0x00, 0x57, 0xC7, 0x45, 0xFC, 0x00, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x51, 0x53, 0x64, 0x8B, 0x1D, 0x24, 0x01, 0x00, 0x00, 0x56, 0x8D, + 0xB3, 0x3C, 0x01, 0x00, 0x00, 0x66, 0xFF, 0x0E, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xE4, 0xF8, + 0x56, 0x64, 0x8B, 0x35, 0x24, 0x01, 0x00, 0x00, 0x57, 0x66, 0xFF, 0x8E, 0x3C, 0x01, 0x00, 0x00, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x0C, 0x83, 0x4D, 0xF8, 0xFF, 0x56, 0x57, 0x8B, 0x7D, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x53, 0x56, 0x57, 0x8B, 0x7D, 0x08, 0x8D, 0xB7, 0x40, 0x02, 0x00, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xE4, 0xF8, 0x51, 0x53, 0x56, 0x8B, 0x75, 0x08, 0x57, 0x8D, + 0xBE, 0x60, 0x02, 0x00, 0x00, 0xF6, 0x07, 0x40, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xE4, 0xF8, + 0x51, 0x53, 0x56, 0x8B, 0x75, 0x08, 0x57, 0x8D, 0xBE, 0x80, 0x02, 0x00, 0x00, 0xF6, 0x07, 0x40, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x8D, 0x87, 0x68, 0x02, 0x00, 0x00, 0xF6, 0x00, 0x20, 0x53, 0x8A, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x53, 0x56, 0x8B, 0xF1, 0x8B, 0xDA, 0x57, 0x8D, 0xBE, 0xB8, 0x03, + 0x4E, 0xE6, 0x40, 0xBB, 0xB1, 0x19, 0xBF, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x35, 0xB0, 0x1B, 0x01, 0x00, 0xFF, 0x15, 0x30, 0x13, + 0x01, 0x00, 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, + 0xEC, 0x18, 0xA1, 0x10, 0x1A, 0x01, 0x00, 0x33, 0xC5, 0x89, 0x45, 0xFC, 0x8B, 0x45, 0x08, 0x8B, + 0x4D, 0x0C, 0x85, 0xC0, 0x75, 0x05, 0x8B, 0x45, 0x10, 0xEB, 0x29, 0x8D, 0x55, 0xE8, 0x52, 0x6A, + 0x10, 0x8D, 0x55, 0xEC, 0x52, 0x6A, 0x02, 0x51, 0x50, 0xFF, 0x15, 0x10, 0x12, 0x01, 0x00, 0x83, + 0x7D, 0xF0, 0x04, 0x74, 0x05, 0xB8, 0x24, 0x00, 0x00, 0xC0, 0x85, 0xC0, 0x8B, 0x45, 0x10, 0x7C, + 0x03, 0x8B, 0x45, 0xF8, 0x8B, 0x4D, 0xFC, 0x33, 0xCD, 0xE8, 0x8D, 0xF1, 0xFF, 0xFF, 0xC9, 0xC2, + 0x0C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x34, + 0x53, 0x56, 0x57, 0x8B, 0x3D, 0x24, 0x12, 0x01, 0x00, 0x68, 0xE0, 0x54, 0x01, 0x00, 0x8D, 0x45, + 0xEC, 0x50, 0xFF, 0xD7, 0x8B, 0x75, 0x08, 0x66, 0x8B, 0x06, 0x66, 0x03, 0x45, 0xEC, 0xBB, 0x4B, + 0x70, 0x68, 0x54, 0x66, 0x89, 0x45, 0xF4, 0x66, 0x89, 0x45, 0xF6, 0x0F, 0xB7, 0xC0, 0x53, 0x50, + 0x6A, 0x01, 0xFF, 0x15, 0x20, 0x12, 0x01, 0x00, 0x89, 0x45, 0xF8, 0x85, 0xC0, 0x75, 0x0A, 0xB8, + 0x9A, 0x00, 0x00, 0xC0, 0xE9, 0xC7, 0x00, 0x00, 0x00, 0x0F, 0xB7, 0x0E, 0x51, 0xFF, 0x76, 0x04, + 0x50, 0xE8, 0x66, 0xF1, 0xFF, 0xFF, 0x0F, 0xB7, 0x45, 0xEC, 0x8B, 0x4D, 0xF8, 0x50, 0x0F, 0xB7, + 0x06, 0xFF, 0x75, 0xF0, 0xD1, 0xE8, 0x8D, 0x04, 0x41, 0x50, 0xE8, 0x4D, 0xF1, 0xFF, 0xFF, 0x8D, + 0x45, 0xF4, 0x83, 0xC4, 0x18, 0x89, 0x45, 0xD4, 0x8D, 0x45, 0xCC, 0x50, 0x33, 0xF6, 0x68, 0x19, + 0x00, 0x02, 0x00, 0x8D, 0x45, 0xFC, 0x50, 0xC7, 0x45, 0xCC, 0x18, 0x00, 0x00, 0x00, 0x89, 0x75, + 0xD0, 0xC7, 0x45, 0xD8, 0x40, 0x02, 0x00, 0x00, 0x89, 0x75, 0xDC, 0x89, 0x75, 0xE0, 0xFF, 0x15, + 0x1C, 0x12, 0x01, 0x00, 0x53, 0xFF, 0x75, 0xF8, 0x89, 0x45, 0x08, 0xFF, 0x15, 0x18, 0x12, 0x01, + 0x00, 0x39, 0x75, 0x08, 0x7D, 0x06, 0x89, 0x75, 0x08, 0x89, 0x75, 0xFC, 0x68, 0xC4, 0x54, 0x01, + 0x00, 0x8D, 0x45, 0xE4, 0x50, 0xFF, 0xD7, 0x6A, 0x01, 0x8D, 0x45, 0xE4, 0x50, 0xFF, 0x75, 0xFC, + 0xE8, 0xC5, 0xFE, 0xFF, 0xFF, 0xA3, 0xA8, 0x1B, 0x01, 0x00, 0x68, 0x8C, 0x54, 0x01, 0x00, 0x8D, + 0x45, 0xE4, 0x50, 0xFF, 0xD7, 0x56, 0x8D, 0x45, 0xE4, 0x50, 0xFF, 0x75, 0xFC, 0xE8, 0xA8, 0xFE, + 0xFF, 0xFF, 0xFF, 0x75, 0xFC, 0xA3, 0xAC, 0x1B, 0x01, 0x00, 0xE8, 0xB1, 0x06, 0x00, 0x00, 0x39, + 0x75, 0xFC, 0x74, 0x09, 0xFF, 0x75, 0xFC, 0xFF, 0x15, 0x14, 0x12, 0x01, 0x00, 0x8B, 0x45, 0x08, + 0x5F, 0x5E, 0x5B, 0xC9, 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x0C, 0x68, 0x18, + 0x14, 0x01, 0x00, 0xE8, 0xAC, 0xF0, 0xFF, 0xFF, 0x80, 0x7D, 0x0C, 0x00, 0x74, 0x3F, 0x83, 0x65, + 0xFC, 0x00, 0x6A, 0x04, 0x6A, 0x04, 0x8B, 0x75, 0x08, 0x56, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, + 0xA1, 0xA0, 0x1B, 0x01, 0x00, 0x89, 0x06, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x28, + 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE4, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, + 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE4, 0xEB, 0x0D, 0x8B, 0x45, 0x08, + 0x8B, 0x0D, 0xA0, 0x1B, 0x01, 0x00, 0x89, 0x08, 0x33, 0xC0, 0xE8, 0x9A, 0xF0, 0xFF, 0xFF, 0xC2, + 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x51, 0x51, 0x56, + 0x8B, 0x75, 0x08, 0x89, 0x35, 0x9C, 0x1B, 0x01, 0x00, 0xE8, 0xDC, 0x05, 0x00, 0x00, 0x85, 0xC0, + 0x7C, 0x63, 0xE8, 0xE9, 0x06, 0x00, 0x00, 0xFF, 0x75, 0x0C, 0xE8, 0x49, 0xFE, 0xFF, 0xFF, 0x85, + 0xC0, 0x7C, 0x52, 0x68, 0xF8, 0x54, 0x01, 0x00, 0x8D, 0x45, 0xF8, 0x50, 0xFF, 0x15, 0x24, 0x12, + 0x01, 0x00, 0x8D, 0x45, 0x08, 0x50, 0x6A, 0x00, 0x68, 0x00, 0x01, 0x00, 0x00, 0x6A, 0x22, 0x8D, + 0x45, 0xF8, 0x50, 0x6A, 0x00, 0x56, 0xFF, 0x15, 0x34, 0x12, 0x01, 0x00, 0x85, 0xC0, 0x7C, 0x25, + 0x8B, 0x4D, 0x08, 0x89, 0x0D, 0xB0, 0x1B, 0x01, 0x00, 0xC7, 0x46, 0x38, 0x86, 0x04, 0x01, 0x00, + 0xC7, 0x46, 0x70, 0x16, 0x06, 0x01, 0x00, 0xC7, 0x46, 0x34, 0x06, 0x1C, 0x01, 0x00, 0x81, 0x61, + 0x1C, 0x7F, 0xFF, 0xFF, 0xFF, 0x5E, 0xC9, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0x7D, 0x0C, 0x08, 0x73, 0x0A, 0xB8, 0x0D, 0x00, 0x00, 0xC0, + 0xE9, 0x84, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x08, 0x83, 0x38, 0x02, 0x75, 0xEE, 0x56, 0x8B, 0x70, + 0x04, 0x83, 0xFE, 0x40, 0x77, 0x0D, 0x8B, 0xCE, 0x6B, 0xC9, 0x24, 0x83, 0xC1, 0x08, 0x39, 0x4D, + 0x0C, 0x73, 0x07, 0xB8, 0x0D, 0x00, 0x00, 0xC0, 0xEB, 0x5E, 0x53, 0x57, 0x33, 0xFF, 0x85, 0xF6, + 0x76, 0x4F, 0x83, 0xC0, 0x0C, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x0F, 0xB7, 0x48, 0xFC, 0x3B, 0x0D, + 0x84, 0x1A, 0x01, 0x00, 0x75, 0x33, 0x0F, 0xB7, 0x48, 0xFE, 0x3B, 0x0D, 0x88, 0x1A, 0x01, 0x00, + 0x75, 0x27, 0x0F, 0xB7, 0x08, 0x8B, 0xDA, 0x66, 0x3B, 0xCB, 0x74, 0x09, 0x66, 0x3B, 0x0D, 0x94, + 0x1B, 0x01, 0x00, 0x75, 0x14, 0x0F, 0xB7, 0x48, 0x02, 0x66, 0x3B, 0xCB, 0x74, 0x1F, 0x0F, 0xB7, + 0xC9, 0x3B, 0x0D, 0x8C, 0x1A, 0x01, 0x00, 0x74, 0x14, 0x47, 0x83, 0xC0, 0x24, 0x3B, 0xFE, 0x72, + 0xB9, 0xB8, 0x25, 0x02, 0x00, 0xC0, 0x5F, 0x5B, 0x5E, 0x5D, 0xC2, 0x08, 0x00, 0x8B, 0x48, 0x04, + 0x89, 0x0D, 0x7C, 0x1A, 0x01, 0x00, 0x0F, 0xBF, 0x48, 0x08, 0x89, 0x0D, 0x00, 0x19, 0x01, 0x00, + 0x0F, 0xBF, 0x48, 0x0A, 0x89, 0x0D, 0x04, 0x19, 0x01, 0x00, 0x0F, 0xBF, 0x48, 0x10, 0x89, 0x0D, + 0x08, 0x19, 0x01, 0x00, 0x0F, 0xBF, 0x48, 0x12, 0x89, 0x0D, 0x0C, 0x19, 0x01, 0x00, 0x0F, 0xBF, + 0x48, 0x14, 0x89, 0x0D, 0x10, 0x19, 0x01, 0x00, 0x0F, 0xBF, 0x48, 0x16, 0x89, 0x0D, 0x14, 0x19, + 0x01, 0x00, 0x0F, 0xBF, 0x48, 0x18, 0x89, 0x0D, 0x18, 0x19, 0x01, 0x00, 0x0F, 0xBF, 0x48, 0x1A, + 0x89, 0x0D, 0x1C, 0x19, 0x01, 0x00, 0x0F, 0xBF, 0x40, 0x1C, 0xA3, 0x20, 0x19, 0x01, 0x00, 0x33, + 0xC0, 0xEB, 0x93, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0x0D, 0x84, 0x1A, 0x01, 0x00, 0xA1, 0x88, + 0x1A, 0x01, 0x00, 0x53, 0x56, 0x0F, 0xB7, 0x35, 0x94, 0x1B, 0x01, 0x00, 0x57, 0x83, 0xF9, 0x05, + 0x0F, 0x85, 0x3A, 0x01, 0x00, 0x00, 0x83, 0xF8, 0x01, 0x0F, 0x85, 0x92, 0x00, 0x00, 0x00, 0x68, + 0xB4, 0x55, 0x01, 0x00, 0xE8, 0x1F, 0x05, 0x00, 0x00, 0x33, 0xDB, 0xC7, 0x05, 0x7C, 0x1A, 0x01, + 0x00, 0x33, 0x00, 0x00, 0x00, 0x3B, 0xF3, 0x0F, 0x84, 0x0E, 0x04, 0x00, 0x00, 0x83, 0xFE, 0x01, + 0x0F, 0x84, 0x05, 0x04, 0x00, 0x00, 0x83, 0xFE, 0x02, 0x74, 0x09, 0x83, 0xFE, 0x03, 0x0F, 0x85, + 0xF7, 0x03, 0x00, 0x00, 0xC7, 0x05, 0x04, 0x19, 0x01, 0x00, 0xC4, 0x00, 0x00, 0x00, 0xC7, 0x05, + 0x08, 0x19, 0x01, 0x00, 0x80, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x14, 0x19, 0x01, 0x00, 0x40, 0x00, + 0x00, 0x00, 0xC7, 0x05, 0x18, 0x19, 0x01, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x3B, 0xC3, 0x0F, 0x84, + 0xB5, 0x03, 0x00, 0x00, 0x6A, 0x10, 0x5A, 0xC7, 0x05, 0x64, 0x1A, 0x01, 0x00, 0x24, 0x19, 0x01, + 0x00, 0x89, 0x15, 0x68, 0x1A, 0x01, 0x00, 0xB9, 0x00, 0x00, 0x10, 0x00, 0xC7, 0x05, 0x44, 0x1A, + 0x01, 0x00, 0xA0, 0x19, 0x01, 0x00, 0x89, 0x15, 0x48, 0x1A, 0x01, 0x00, 0xE9, 0x40, 0x03, 0x00, + 0x00, 0x83, 0xF8, 0x02, 0x0F, 0x85, 0x91, 0x03, 0x00, 0x00, 0x68, 0x98, 0x55, 0x01, 0x00, 0xE8, + 0x84, 0x04, 0x00, 0x00, 0x33, 0xDB, 0xC7, 0x05, 0x7C, 0x1A, 0x01, 0x00, 0x34, 0x00, 0x00, 0x00, + 0x3B, 0xF3, 0x74, 0x0E, 0x83, 0xFE, 0x01, 0x74, 0x09, 0x83, 0xFE, 0x02, 0x0F, 0x85, 0x69, 0x03, + 0x00, 0x00, 0xC7, 0x05, 0x04, 0x19, 0x01, 0x00, 0xD4, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x08, 0x19, + 0x01, 0x00, 0x90, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x14, 0x19, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, + 0xC7, 0x05, 0x18, 0x19, 0x01, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x3B, 0xC3, 0x0F, 0x84, 0x27, 0x03, + 0x00, 0x00, 0x8D, 0x88, 0x00, 0x00, 0xFB, 0xFF, 0x6A, 0x10, 0x5A, 0x89, 0x0D, 0x6C, 0x1A, 0x01, + 0x00, 0xC7, 0x05, 0x64, 0x1A, 0x01, 0x00, 0x34, 0x19, 0x01, 0x00, 0x89, 0x15, 0x68, 0x1A, 0x01, + 0x00, 0xB9, 0x00, 0x00, 0x10, 0x00, 0xC7, 0x05, 0x44, 0x1A, 0x01, 0x00, 0xB0, 0x19, 0x01, 0x00, + 0x89, 0x15, 0x48, 0x1A, 0x01, 0x00, 0x05, 0x00, 0x00, 0xFE, 0xFF, 0xE9, 0xA6, 0x02, 0x00, 0x00, + 0x83, 0xF9, 0x06, 0x0F, 0x85, 0xE9, 0x02, 0x00, 0x00, 0x33, 0xDB, 0x3B, 0xC3, 0x0F, 0x85, 0xB7, + 0x00, 0x00, 0x00, 0x68, 0xB4, 0x55, 0x01, 0x00, 0xE8, 0xDB, 0x03, 0x00, 0x00, 0x6A, 0x08, 0xC7, + 0x05, 0x7C, 0x1A, 0x01, 0x00, 0x3C, 0x00, 0x00, 0x00, 0x59, 0x3B, 0xF3, 0x75, 0x16, 0xC7, 0x05, + 0x14, 0x19, 0x01, 0x00, 0x40, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x18, 0x19, 0x01, 0x00, 0x4C, 0x00, + 0x00, 0x00, 0xEB, 0x1E, 0x83, 0xFE, 0x01, 0x74, 0x09, 0x83, 0xFE, 0x02, 0x0F, 0x85, 0xA9, 0x02, + 0x00, 0x00, 0xC7, 0x05, 0x18, 0x19, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x89, 0x0D, 0x14, 0x19, + 0x01, 0x00, 0xC7, 0x05, 0x00, 0x19, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x04, 0x19, + 0x01, 0x00, 0xDC, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x08, 0x19, 0x01, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x89, 0x0D, 0x0C, 0x19, 0x01, 0x00, 0x3B, 0xC3, 0x0F, 0x84, 0x5B, 0x02, 0x00, 0x00, 0xA3, 0x6C, + 0x1A, 0x01, 0x00, 0xC7, 0x05, 0x64, 0x1A, 0x01, 0x00, 0x44, 0x19, 0x01, 0x00, 0xC7, 0x05, 0x68, + 0x1A, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0xB9, 0x00, 0x00, 0x10, 0x00, 0xC7, 0x05, 0x44, 0x1A, + 0x01, 0x00, 0xC0, 0x19, 0x01, 0x00, 0xC7, 0x05, 0x48, 0x1A, 0x01, 0x00, 0x18, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x00, 0xFB, 0xFF, 0xE9, 0xDC, 0x01, 0x00, 0x00, 0x83, 0xF8, 0x01, 0x0F, 0x85, 0xD0, + 0x00, 0x00, 0x00, 0x68, 0x70, 0x55, 0x01, 0x00, 0xE8, 0x1B, 0x03, 0x00, 0x00, 0x68, 0x4C, 0x55, + 0x01, 0x00, 0x8B, 0xF8, 0xE8, 0x0F, 0x03, 0x00, 0x00, 0xC7, 0x05, 0x7C, 0x1A, 0x01, 0x00, 0x3D, + 0x00, 0x00, 0x00, 0x3B, 0xF3, 0x74, 0x09, 0x83, 0xFE, 0x01, 0x0F, 0x85, 0xFB, 0x01, 0x00, 0x00, + 0x6A, 0x08, 0x59, 0xC7, 0x05, 0x00, 0x19, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x04, + 0x19, 0x01, 0x00, 0xF4, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x08, 0x19, 0x01, 0x00, 0xB0, 0x00, 0x00, + 0x00, 0x89, 0x0D, 0x0C, 0x19, 0x01, 0x00, 0x89, 0x0D, 0x14, 0x19, 0x01, 0x00, 0xC7, 0x05, 0x18, + 0x19, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3B, 0xFB, 0x74, 0x3D, 0xC6, 0x05, 0x60, 0x1A, 0x01, + 0x00, 0x01, 0x88, 0x1D, 0x61, 0x1A, 0x01, 0x00, 0xC7, 0x05, 0x64, 0x1A, 0x01, 0x00, 0x54, 0x19, + 0x01, 0x00, 0xC7, 0x05, 0x68, 0x1A, 0x01, 0x00, 0x1B, 0x00, 0x00, 0x00, 0x89, 0x3D, 0x6C, 0x1A, + 0x01, 0x00, 0xC7, 0x05, 0x70, 0x1A, 0x01, 0x00, 0x00, 0xA0, 0x00, 0x00, 0x89, 0x1D, 0x74, 0x1A, + 0x01, 0x00, 0x89, 0x1D, 0x78, 0x1A, 0x01, 0x00, 0x3B, 0xC3, 0x0F, 0x84, 0x69, 0x01, 0x00, 0x00, + 0xC7, 0x05, 0x44, 0x1A, 0x01, 0x00, 0xD8, 0x19, 0x01, 0x00, 0xC7, 0x05, 0x48, 0x1A, 0x01, 0x00, + 0x18, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x50, 0x1A, 0x01, 0x00, 0x00, 0xA0, 0x01, 0x00, 0xE9, 0x28, + 0x01, 0x00, 0x00, 0x83, 0xF8, 0x02, 0x75, 0x71, 0x68, 0x28, 0x55, 0x01, 0x00, 0xE8, 0x46, 0x02, + 0x00, 0x00, 0xC7, 0x05, 0x7C, 0x1A, 0x01, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x3B, 0xF3, 0x0F, 0x85, + 0x37, 0x01, 0x00, 0x00, 0x6A, 0x08, 0x59, 0xC7, 0x05, 0x00, 0x19, 0x01, 0x00, 0x0C, 0x00, 0x00, + 0x00, 0xC7, 0x05, 0x04, 0x19, 0x01, 0x00, 0x50, 0x01, 0x00, 0x00, 0xC7, 0x05, 0x08, 0x19, 0x01, + 0x00, 0xB0, 0x00, 0x00, 0x00, 0x89, 0x0D, 0x0C, 0x19, 0x01, 0x00, 0x89, 0x0D, 0x14, 0x19, 0x01, + 0x00, 0xC7, 0x05, 0x18, 0x19, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3B, 0xC3, 0x0F, 0x84, 0xE6, + 0x00, 0x00, 0x00, 0xC7, 0x05, 0x64, 0x1A, 0x01, 0x00, 0x70, 0x19, 0x01, 0x00, 0xC7, 0x05, 0x44, + 0x1A, 0x01, 0x00, 0xF0, 0x19, 0x01, 0x00, 0xEB, 0x6F, 0x83, 0xF8, 0x03, 0x0F, 0x85, 0xCB, 0x00, + 0x00, 0x00, 0x68, 0x28, 0x55, 0x01, 0x00, 0xE8, 0xCC, 0x01, 0x00, 0x00, 0xC7, 0x05, 0x7C, 0x1A, + 0x01, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x3B, 0xF3, 0x0F, 0x85, 0xBD, 0x00, 0x00, 0x00, 0xC7, 0x05, + 0x00, 0x19, 0x01, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x04, 0x19, 0x01, 0x00, 0x50, 0x01, + 0x00, 0x00, 0xC7, 0x05, 0x08, 0x19, 0x01, 0x00, 0xB0, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x14, 0x19, + 0x01, 0x00, 0x08, 0x00, 0x00, 0x00, 0xC7, 0x05, 0x18, 0x19, 0x01, 0x00, 0x14, 0x00, 0x00, 0x00, + 0x3B, 0xC3, 0x74, 0x75, 0xC7, 0x05, 0x64, 0x1A, 0x01, 0x00, 0x88, 0x19, 0x01, 0x00, 0xC7, 0x05, + 0x44, 0x1A, 0x01, 0x00, 0x00, 0x1A, 0x01, 0x00, 0xC7, 0x05, 0x48, 0x1A, 0x01, 0x00, 0x10, 0x00, + 0x00, 0x00, 0xB9, 0x00, 0x80, 0x00, 0x00, 0xC7, 0x05, 0x68, 0x1A, 0x01, 0x00, 0x18, 0x00, 0x00, + 0x00, 0xA3, 0x6C, 0x1A, 0x01, 0x00, 0xC6, 0x05, 0x60, 0x1A, 0x01, 0x00, 0x01, 0x88, 0x1D, 0x61, + 0x1A, 0x01, 0x00, 0x89, 0x0D, 0x70, 0x1A, 0x01, 0x00, 0x89, 0x1D, 0x74, 0x1A, 0x01, 0x00, 0x89, + 0x1D, 0x78, 0x1A, 0x01, 0x00, 0x89, 0x0D, 0x50, 0x1A, 0x01, 0x00, 0x89, 0x1D, 0x58, 0x1A, 0x01, + 0x00, 0x89, 0x1D, 0x54, 0x1A, 0x01, 0x00, 0xA3, 0x4C, 0x1A, 0x01, 0x00, 0x88, 0x1D, 0x41, 0x1A, + 0x01, 0x00, 0xC6, 0x05, 0x40, 0x1A, 0x01, 0x00, 0x01, 0x33, 0xC0, 0xEB, 0x13, 0x77, 0x05, 0x83, + 0xF9, 0x06, 0x76, 0x07, 0x83, 0x0D, 0x7C, 0x1A, 0x01, 0x00, 0xFF, 0xB8, 0xBB, 0x00, 0x00, 0xC0, + 0x5F, 0x5E, 0x5B, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x56, 0x68, 0x80, 0x1A, + 0x01, 0x00, 0xC7, 0x05, 0x80, 0x1A, 0x01, 0x00, 0x1C, 0x01, 0x00, 0x00, 0xFF, 0x15, 0x40, 0x12, + 0x01, 0x00, 0x8B, 0xF0, 0x85, 0xF6, 0x7C, 0x10, 0x83, 0x3D, 0x7C, 0x1A, 0x01, 0x00, 0x00, 0x75, + 0x05, 0xE8, 0x72, 0xFB, 0xFF, 0xFF, 0x8B, 0xC6, 0x5E, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x0C, 0x56, 0x33, 0xF6, 0x39, 0x75, 0x08, 0x75, 0x0A, + 0xB8, 0x01, 0x00, 0x00, 0xC0, 0xE9, 0x94, 0x00, 0x00, 0x00, 0x68, 0xC4, 0x55, 0x01, 0x00, 0x8D, + 0x45, 0xF4, 0x50, 0xFF, 0x15, 0x24, 0x12, 0x01, 0x00, 0x8D, 0x45, 0xFC, 0x50, 0x56, 0x56, 0x8B, + 0x35, 0x10, 0x12, 0x01, 0x00, 0x6A, 0x02, 0x8D, 0x45, 0xF4, 0x50, 0xFF, 0x75, 0x08, 0xFF, 0xD6, + 0x3D, 0x05, 0x00, 0x00, 0x80, 0x74, 0x07, 0x3D, 0x23, 0x00, 0x00, 0xC0, 0x75, 0xC2, 0x53, 0x57, + 0xBB, 0x4B, 0x70, 0x68, 0x54, 0x53, 0xFF, 0x75, 0xFC, 0x6A, 0x01, 0xFF, 0x15, 0x20, 0x12, 0x01, + 0x00, 0x8B, 0xF8, 0x85, 0xFF, 0x75, 0x07, 0xB8, 0x9A, 0x00, 0x00, 0xC0, 0xEB, 0x3E, 0x8D, 0x45, + 0xFC, 0x50, 0xFF, 0x75, 0xFC, 0x8D, 0x45, 0xF4, 0x57, 0x6A, 0x02, 0x50, 0xFF, 0x75, 0x08, 0xFF, + 0xD6, 0x8B, 0xF0, 0x85, 0xF6, 0x7C, 0x1B, 0x83, 0x7F, 0x04, 0x03, 0x75, 0x10, 0xFF, 0x77, 0x08, + 0x8D, 0x47, 0x0C, 0x50, 0xE8, 0xC7, 0xF9, 0xFF, 0xFF, 0x8B, 0xF0, 0xEB, 0x05, 0xBE, 0x24, 0x00, + 0x00, 0xC0, 0x53, 0x57, 0xFF, 0x15, 0x18, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0x5F, 0x5B, 0x5E, 0xC9, + 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x51, 0x51, 0xFF, + 0x75, 0x08, 0x8D, 0x45, 0xF8, 0x50, 0xFF, 0x15, 0x24, 0x12, 0x01, 0x00, 0x8D, 0x45, 0xF8, 0x50, + 0xFF, 0x15, 0x44, 0x12, 0x01, 0x00, 0xC9, 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x83, 0x3D, 0x7C, 0x1A, 0x01, 0x00, 0x3E, 0x72, 0x0F, 0x68, 0x0A, 0x57, 0x01, 0x00, 0xE8, 0xC5, + 0xFF, 0xFF, 0xFF, 0xA3, 0x30, 0x1A, 0x01, 0x00, 0x68, 0xEA, 0x56, 0x01, 0x00, 0xE8, 0xB6, 0xFF, + 0xFF, 0xFF, 0x68, 0xA2, 0x56, 0x01, 0x00, 0xA3, 0x28, 0x1A, 0x01, 0x00, 0xE8, 0xA7, 0xFF, 0xFF, + 0xFF, 0x68, 0x78, 0x56, 0x01, 0x00, 0xA3, 0x20, 0x1A, 0x01, 0x00, 0xE8, 0x98, 0xFF, 0xFF, 0xFF, + 0x68, 0x30, 0x56, 0x01, 0x00, 0xA3, 0x2C, 0x1A, 0x01, 0x00, 0xE8, 0x89, 0xFF, 0xFF, 0xFF, 0x68, + 0x10, 0x56, 0x01, 0x00, 0xA3, 0x38, 0x1A, 0x01, 0x00, 0xE8, 0x7A, 0xFF, 0xFF, 0xFF, 0x68, 0xEE, + 0x55, 0x01, 0x00, 0xA3, 0x24, 0x1A, 0x01, 0x00, 0xE8, 0x6B, 0xFF, 0xFF, 0xFF, 0xA3, 0x34, 0x1A, + 0x01, 0x00, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0xA1, 0x7C, 0x1A, + 0x01, 0x00, 0x8D, 0x48, 0xCD, 0x83, 0xF9, 0x09, 0x77, 0x08, 0x8B, 0x45, 0x08, 0x8B, 0x40, 0xF0, + 0xEB, 0x13, 0x83, 0xF8, 0x3D, 0x72, 0x0C, 0xA1, 0x28, 0x1A, 0x01, 0x00, 0x85, 0xC0, 0x74, 0x03, + 0x5D, 0xFF, 0xE0, 0x33, 0xC0, 0x5D, 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, + 0x55, 0x8B, 0xEC, 0x56, 0x33, 0xF6, 0x83, 0x3D, 0x04, 0x19, 0x01, 0x00, 0xFF, 0x75, 0x04, 0x33, + 0xC0, 0xEB, 0x23, 0x57, 0x8B, 0x7D, 0x08, 0x57, 0xE8, 0xD9, 0xE6, 0xFF, 0xFF, 0x84, 0xC0, 0x74, + 0x12, 0xA1, 0x04, 0x19, 0x01, 0x00, 0x8B, 0x34, 0x38, 0x85, 0xF6, 0x75, 0x06, 0x57, 0xE8, 0x0D, + 0xE7, 0xFF, 0xFF, 0x8B, 0xC6, 0x5F, 0x5E, 0x5D, 0xC2, 0x04, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x8B, 0x4D, 0x0C, 0x33, 0xC0, 0x40, 0xF0, 0x0F, 0xC1, 0x01, 0x8B, + 0x45, 0x08, 0x8B, 0x0D, 0x10, 0x19, 0x01, 0x00, 0x03, 0xC8, 0x83, 0x39, 0x00, 0x74, 0x08, 0x33, + 0xD2, 0xFF, 0x15, 0x30, 0x1A, 0x01, 0x00, 0x5D, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x6A, 0x24, 0x68, 0x80, 0x14, 0x01, 0x00, 0xE8, 0x18, 0xE8, 0xFF, 0xFF, 0x8B, 0x4D, 0x08, 0x8B, + 0x11, 0x8B, 0xC2, 0x83, 0xE0, 0xF8, 0x8B, 0x75, 0x0C, 0x89, 0x75, 0xCC, 0x8D, 0x70, 0x18, 0xF7, + 0xD8, 0x1B, 0xC0, 0x23, 0xC6, 0x89, 0x45, 0xD0, 0x8B, 0x49, 0x04, 0x8B, 0xF1, 0x81, 0xE6, 0xFF, + 0xFF, 0xFF, 0xFD, 0x89, 0x75, 0xD4, 0xBE, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0x89, 0x75, 0xD8, 0x33, + 0xF6, 0x66, 0x89, 0x75, 0xDA, 0xC1, 0xE9, 0x19, 0x83, 0xE1, 0x01, 0x83, 0xE2, 0x06, 0x0B, 0xCA, + 0x89, 0x4D, 0xDC, 0x89, 0x75, 0xE0, 0x3B, 0xC6, 0x74, 0x2D, 0x50, 0xE8, 0xF8, 0xFE, 0xFF, 0xFF, + 0x3B, 0xC6, 0x74, 0x23, 0x8B, 0x0D, 0x18, 0x19, 0x01, 0x00, 0x83, 0xF9, 0xFF, 0x74, 0x18, 0x83, + 0x3D, 0x7C, 0x1A, 0x01, 0x00, 0x3D, 0x72, 0x07, 0x66, 0x0F, 0xB6, 0x04, 0x01, 0xEB, 0x04, 0x66, + 0x8B, 0x04, 0x01, 0x66, 0x89, 0x45, 0xD8, 0x8B, 0x45, 0x10, 0x8B, 0x78, 0x08, 0x8D, 0x4F, 0x18, + 0x89, 0x48, 0x08, 0xFF, 0x40, 0x0C, 0x3B, 0x38, 0x72, 0x3B, 0x3B, 0x48, 0x04, 0x77, 0x36, 0x89, + 0x75, 0xFC, 0x6A, 0x06, 0x59, 0x8D, 0x75, 0xCC, 0xF3, 0xA5, 0xEB, 0x20, 0x8B, 0x45, 0xEC, 0x8B, + 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE4, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x45, 0x10, + 0x83, 0x78, 0x10, 0x00, 0x75, 0x06, 0x8B, 0x4D, 0xE4, 0x89, 0x48, 0x10, 0xC7, 0x45, 0xFC, 0xFE, + 0xFF, 0xFF, 0xFF, 0xEB, 0x0C, 0x39, 0x70, 0x10, 0x75, 0x07, 0xC7, 0x40, 0x10, 0x23, 0x00, 0x00, + 0xC0, 0x32, 0xC0, 0xE8, 0x81, 0xE7, 0xFF, 0xFF, 0xC2, 0x0C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x53, 0xFF, 0x75, 0x14, 0xFF, 0x75, 0x10, 0xFF, 0x75, 0x0C, 0xE8, + 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x75, 0x0C, 0x8A, 0xD8, 0xFF, 0x75, 0x08, 0xE8, 0xBF, 0xFE, 0xFF, + 0xFF, 0x8A, 0xC3, 0x5B, 0x5D, 0xC2, 0x10, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x28, + 0x68, 0xA0, 0x14, 0x01, 0x00, 0xE8, 0xFA, 0xE6, 0xFF, 0xFF, 0x33, 0xDB, 0x83, 0x3D, 0x7C, 0x1A, + 0x01, 0x00, 0x3E, 0x72, 0x1B, 0x39, 0x1D, 0x30, 0x1A, 0x01, 0x00, 0x74, 0x09, 0x83, 0x3D, 0x10, + 0x19, 0x01, 0x00, 0xFF, 0x75, 0x0A, 0xB8, 0xBB, 0x00, 0x00, 0xC0, 0xE9, 0x55, 0x01, 0x00, 0x00, + 0x38, 0x5D, 0x18, 0x74, 0x4B, 0x89, 0x5D, 0xFC, 0x6A, 0x04, 0xFF, 0x75, 0x10, 0x8B, 0x7D, 0x0C, + 0x57, 0x8B, 0x35, 0x2C, 0x12, 0x01, 0x00, 0xFF, 0xD6, 0x39, 0x5D, 0x14, 0x74, 0x09, 0x6A, 0x04, + 0x6A, 0x04, 0xFF, 0x75, 0x14, 0xFF, 0xD6, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x23, + 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE4, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x45, + 0xE4, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xE9, 0x05, 0x01, 0x00, 0x00, + 0x8B, 0x7D, 0x0C, 0x53, 0x8D, 0x45, 0x0C, 0x50, 0xFF, 0x75, 0x18, 0xA1, 0x54, 0x12, 0x01, 0x00, + 0xFF, 0x30, 0x53, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x3B, 0xC3, 0x0F, 0x8C, + 0xE1, 0x00, 0x00, 0x00, 0xFF, 0x75, 0x0C, 0xE8, 0xC2, 0xFD, 0xFF, 0xFF, 0x3B, 0xC3, 0x75, 0x13, + 0x8B, 0x4D, 0x0C, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0xB8, 0x01, 0x00, 0x00, 0xC0, 0xE9, 0xC2, + 0x00, 0x00, 0x00, 0x89, 0x7D, 0xC8, 0x8B, 0x75, 0x10, 0x8D, 0x0C, 0x37, 0x89, 0x4D, 0xCC, 0x8D, + 0x4F, 0x04, 0x89, 0x4D, 0xD0, 0x89, 0x5D, 0xD4, 0x89, 0x5D, 0xD8, 0x53, 0x8D, 0x4D, 0xC8, 0x51, + 0x83, 0x3D, 0x7C, 0x1A, 0x01, 0x00, 0x3E, 0x72, 0x07, 0x68, 0x20, 0x27, 0x01, 0x00, 0xEB, 0x05, + 0x68, 0x30, 0x26, 0x01, 0x00, 0x50, 0xFF, 0x15, 0x48, 0x12, 0x01, 0x00, 0xFF, 0x75, 0x0C, 0xE8, + 0xAC, 0xE4, 0xFF, 0xFF, 0x8B, 0x4D, 0x0C, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x83, 0xFE, 0x04, + 0x72, 0x35, 0x38, 0x5D, 0x18, 0x74, 0x2B, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, + 0xD4, 0x89, 0x07, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x1B, 0x8B, 0x45, 0xEC, 0x8B, + 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x45, 0xE0, 0xE9, 0x2F, 0xFF, + 0xFF, 0xFF, 0x8B, 0x45, 0xD4, 0x89, 0x07, 0x8B, 0x75, 0x14, 0x3B, 0xF3, 0x74, 0x34, 0x8B, 0x45, + 0xD0, 0x2B, 0xC7, 0x38, 0x5D, 0x18, 0x74, 0x28, 0xC7, 0x45, 0xFC, 0x02, 0x00, 0x00, 0x00, 0x89, + 0x06, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x18, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, + 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x45, 0xDC, 0xE9, 0xF1, 0xFE, 0xFF, 0xFF, + 0x89, 0x06, 0x8B, 0x45, 0xD8, 0xE8, 0xBF, 0xE5, 0xFF, 0xFF, 0xC2, 0x14, 0x00, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x51, 0x6A, 0x08, 0x59, 0x39, 0x4D, 0x10, 0x73, 0x0C, + 0x8B, 0x45, 0x14, 0x89, 0x08, 0xB8, 0x23, 0x00, 0x00, 0xC0, 0xEB, 0x5E, 0x53, 0x33, 0xC0, 0x56, + 0x8B, 0x75, 0x0C, 0x66, 0x89, 0x06, 0x8D, 0x46, 0x08, 0x57, 0x8B, 0x7D, 0x08, 0x89, 0x46, 0x04, + 0x89, 0x45, 0x0C, 0x8B, 0x47, 0x04, 0x33, 0xDB, 0x8B, 0xD1, 0x3B, 0xC3, 0x74, 0x2D, 0x8D, 0x4D, + 0xFC, 0x51, 0xFF, 0x75, 0x10, 0x56, 0x50, 0xFF, 0x15, 0x58, 0x12, 0x01, 0x00, 0x3B, 0xC3, 0x7D, + 0x0F, 0x3D, 0x04, 0x00, 0x00, 0xC0, 0x75, 0x03, 0x83, 0xC0, 0x1F, 0x8B, 0x55, 0xFC, 0xEB, 0x12, + 0x0F, 0xB7, 0x06, 0x01, 0x45, 0x0C, 0x83, 0xC0, 0x08, 0x8B, 0xD0, 0x39, 0x5F, 0x34, 0x75, 0x0E, + 0x33, 0xC0, 0x8B, 0x4D, 0x14, 0x5F, 0x5E, 0x89, 0x11, 0x5B, 0xC9, 0xC2, 0x10, 0x00, 0x8B, 0xC7, + 0x0F, 0xB7, 0x48, 0x30, 0x03, 0xD9, 0x8B, 0x48, 0x20, 0x3B, 0xC1, 0x74, 0x06, 0x8B, 0xC1, 0x85, + 0xC0, 0x75, 0xED, 0x03, 0xD3, 0x89, 0x55, 0x08, 0x3B, 0x55, 0x10, 0x76, 0x07, 0xB8, 0x23, 0x00, + 0x00, 0xC0, 0xEB, 0xCE, 0x01, 0x5D, 0x0C, 0x0F, 0xB7, 0x47, 0x30, 0x29, 0x45, 0x0C, 0x50, 0xFF, + 0x77, 0x34, 0xFF, 0x75, 0x0C, 0xE8, 0xA2, 0xE4, 0xFF, 0xFF, 0x8B, 0x47, 0x20, 0x83, 0xC4, 0x0C, + 0x3B, 0xF8, 0x74, 0x06, 0x8B, 0xF8, 0x85, 0xFF, 0x75, 0xDD, 0x66, 0x01, 0x1E, 0x8B, 0x55, 0x08, + 0xEB, 0x9E, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x2C, 0x68, 0xD8, 0x14, 0x01, 0x00, 0xE8, + 0x90, 0xE4, 0xFF, 0xFF, 0x33, 0xDB, 0x38, 0x5D, 0x1C, 0x74, 0x25, 0x33, 0xC0, 0x83, 0x7D, 0x10, + 0x03, 0x0F, 0x94, 0xC0, 0x48, 0x83, 0xE0, 0x03, 0x40, 0x89, 0x5D, 0xFC, 0x50, 0xFF, 0x75, 0x18, + 0xFF, 0x75, 0x14, 0xFF, 0x15, 0x38, 0x12, 0x01, 0x00, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0x53, 0x8D, 0x45, 0xE4, 0x50, 0xFF, 0x75, 0x1C, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x53, + 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x3B, 0xF3, 0x0F, 0x8C, 0xCD, + 0x00, 0x00, 0x00, 0x8B, 0x4D, 0xE4, 0xA1, 0x68, 0x12, 0x01, 0x00, 0x3B, 0x08, 0x75, 0x37, 0x81, + 0x4D, 0x0C, 0x00, 0x00, 0x00, 0x80, 0x83, 0x7D, 0x10, 0x03, 0x74, 0x3C, 0xBE, 0x03, 0x00, 0x00, + 0xC0, 0xE9, 0xA1, 0x00, 0x00, 0x00, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, + 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, + 0xE0, 0xE9, 0x8C, 0x00, 0x00, 0x00, 0x39, 0x5D, 0x0C, 0x7D, 0xCB, 0xFF, 0x15, 0x4C, 0x12, 0x01, + 0x00, 0xB8, 0x08, 0x00, 0x00, 0xC0, 0xEB, 0x7A, 0x83, 0x7D, 0x18, 0x02, 0x75, 0x39, 0xC7, 0x45, + 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x14, 0x66, 0x8B, 0x00, 0x66, 0x89, 0x45, 0x1C, 0xC7, + 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x24, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, + 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0xDC, 0xC7, 0x45, 0xFC, 0xFE, + 0xFF, 0xFF, 0xFF, 0x33, 0xDB, 0xEB, 0x05, 0xBE, 0x04, 0x00, 0x00, 0xC0, 0x3B, 0xF3, 0x7C, 0x27, + 0x8D, 0x45, 0xC4, 0x50, 0xFF, 0x75, 0xE4, 0xFF, 0x15, 0x64, 0x12, 0x01, 0x00, 0x53, 0x8D, 0x45, + 0x1C, 0x50, 0xFF, 0x75, 0x0C, 0xFF, 0x15, 0x60, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x8D, 0x45, 0xC4, + 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x8B, 0x4D, 0xE4, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, + 0x8B, 0xC6, 0xE8, 0xB2, 0xE3, 0xFF, 0xFF, 0xC2, 0x18, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x20, 0x83, 0x7D, 0x0C, 0x00, 0xC6, 0x45, 0xFF, 0x00, + 0xC6, 0x45, 0xFE, 0x00, 0x74, 0x06, 0x83, 0x7D, 0x14, 0x00, 0x75, 0x10, 0xF6, 0x45, 0x20, 0x01, + 0x75, 0x0A, 0xB8, 0x30, 0x00, 0x00, 0xC0, 0xE9, 0x26, 0x01, 0x00, 0x00, 0x8A, 0x45, 0x24, 0x84, + 0xC0, 0x74, 0x13, 0xF7, 0x45, 0x1C, 0x00, 0x02, 0x00, 0x00, 0x74, 0x0A, 0xB8, 0xF4, 0x00, 0x00, + 0xC0, 0xE9, 0x0C, 0x01, 0x00, 0x00, 0x8B, 0x0D, 0x68, 0x12, 0x01, 0x00, 0x53, 0x8B, 0x5D, 0x08, + 0x3B, 0x19, 0x75, 0x0D, 0x81, 0x4D, 0x10, 0x00, 0x00, 0x00, 0x80, 0xC6, 0x45, 0x24, 0x00, 0xEB, + 0x03, 0x88, 0x45, 0x24, 0x57, 0x8B, 0x3D, 0x74, 0x12, 0x01, 0x00, 0xFF, 0xD7, 0x3B, 0xD8, 0x75, + 0x10, 0xF6, 0x45, 0x20, 0x01, 0x74, 0x0A, 0xB8, 0xDB, 0x00, 0x00, 0xC0, 0xE9, 0xCF, 0x00, 0x00, + 0x00, 0x56, 0xFF, 0xD7, 0x8B, 0x35, 0x64, 0x12, 0x01, 0x00, 0x3B, 0xD8, 0x74, 0x0B, 0x8D, 0x45, + 0xE0, 0x50, 0x53, 0xFF, 0xD6, 0xC6, 0x45, 0xFF, 0x01, 0xF6, 0x45, 0x20, 0x01, 0x74, 0x25, 0xFF, + 0x75, 0x24, 0xFF, 0x75, 0x10, 0xFF, 0x15, 0x70, 0x12, 0x01, 0x00, 0x80, 0x7D, 0xFF, 0x00, 0x8B, + 0xF0, 0x74, 0x0A, 0x8D, 0x45, 0xE0, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0xE9, + 0x8B, 0x00, 0x00, 0x00, 0x33, 0xC0, 0x50, 0x8D, 0x4D, 0x08, 0x51, 0xFF, 0x75, 0x24, 0x50, 0x50, + 0xFF, 0x75, 0x10, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x80, 0x7D, 0xFF, 0x00, 0x8B, 0xD8, 0x74, + 0x0A, 0x8D, 0x45, 0xE0, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x85, 0xDB, 0x7D, 0x04, 0x8B, + 0xC3, 0xEB, 0x5C, 0xFF, 0xD7, 0x39, 0x45, 0x0C, 0x74, 0x0D, 0x8D, 0x45, 0xE0, 0x50, 0xFF, 0x75, + 0x0C, 0xFF, 0xD6, 0xC6, 0x45, 0xFE, 0x01, 0x8D, 0x45, 0xF8, 0x50, 0x33, 0xF6, 0x56, 0x56, 0xFF, + 0x75, 0x18, 0x56, 0xFF, 0x75, 0x1C, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, + 0x4D, 0x08, 0x8B, 0xF8, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x80, 0x7D, 0xFE, 0x00, 0x74, 0x0A, + 0x8D, 0x45, 0xE0, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x3B, 0xFE, 0x7C, 0x0A, 0x8B, 0x45, + 0xF8, 0x8B, 0x4D, 0x14, 0x89, 0x01, 0xEB, 0x05, 0x8B, 0x45, 0x14, 0x89, 0x30, 0x8B, 0xC7, 0x5E, + 0x5F, 0x5B, 0xC9, 0xC2, 0x20, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x14, 0x68, 0x00, + 0x15, 0x01, 0x00, 0xE8, 0xFC, 0xE1, 0xFF, 0xFF, 0x33, 0xDB, 0x89, 0x5D, 0xE4, 0x89, 0x5D, 0xE0, + 0x38, 0x5D, 0x24, 0x74, 0x3E, 0x89, 0x5D, 0xFC, 0x8B, 0x7D, 0x14, 0x3B, 0xFB, 0x74, 0x0B, 0x6A, + 0x01, 0x6A, 0x04, 0x57, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, + 0xFF, 0xEB, 0x23, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, + 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xDC, 0xE9, 0xB8, + 0x00, 0x00, 0x00, 0x8B, 0x7D, 0x14, 0x53, 0x8D, 0x45, 0xE4, 0x50, 0xFF, 0x75, 0x24, 0xA1, 0x54, + 0x12, 0x01, 0x00, 0xFF, 0x30, 0x53, 0xFF, 0x75, 0x08, 0x8B, 0x35, 0x50, 0x12, 0x01, 0x00, 0xFF, + 0xD6, 0x3B, 0xC3, 0x0F, 0x8C, 0x92, 0x00, 0x00, 0x00, 0x39, 0x5D, 0x10, 0x74, 0x1B, 0x53, 0x8D, + 0x45, 0xE0, 0x50, 0xFF, 0x75, 0x24, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x53, 0xFF, 0x75, + 0x10, 0xFF, 0xD6, 0x8B, 0xF0, 0x3B, 0xF3, 0x7C, 0x67, 0xFF, 0x75, 0x24, 0xFF, 0x75, 0x20, 0xFF, + 0x75, 0x1C, 0xFF, 0x75, 0x18, 0x8D, 0x45, 0x14, 0x50, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0xE0, 0xFF, + 0x75, 0xE4, 0xE8, 0xE9, 0xFD, 0xFF, 0xFF, 0x8B, 0xF0, 0x3B, 0xFB, 0x74, 0x36, 0x38, 0x5D, 0x24, + 0x74, 0x2C, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x14, 0x89, 0x07, 0xC7, 0x45, + 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x1C, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xBE, 0x05, + 0x00, 0x00, 0xC0, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x33, 0xDB, 0xEB, 0x05, 0x8B, 0x45, + 0x14, 0x89, 0x07, 0x8B, 0x4D, 0xE0, 0x3B, 0xCB, 0x74, 0x06, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, + 0x8B, 0x4D, 0xE4, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0xE8, 0x39, 0xE1, 0xFF, 0xFF, + 0xC2, 0x20, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x34, 0x68, 0x28, 0x15, 0x01, 0x00, 0xE8, + 0xE0, 0xE0, 0xFF, 0xFF, 0x33, 0xDB, 0x89, 0x5D, 0xBC, 0x33, 0xC0, 0x8D, 0x7D, 0xC0, 0xAB, 0xAB, + 0xAB, 0xAB, 0xAB, 0x38, 0x5D, 0x18, 0x74, 0x4F, 0x89, 0x5D, 0xFC, 0x6A, 0x04, 0x6A, 0x04, 0xFF, + 0x75, 0x08, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, 0x6A, 0x04, 0x6A, 0x18, 0x8B, 0x75, 0x10, 0x56, + 0xFF, 0x15, 0x38, 0x12, 0x01, 0x00, 0x6A, 0x06, 0x59, 0x8D, 0x7D, 0xBC, 0xF3, 0xA5, 0xC7, 0x45, + 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x2B, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, + 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, + 0x45, 0xE0, 0xE9, 0xB7, 0x00, 0x00, 0x00, 0x6A, 0x06, 0x59, 0x8B, 0x75, 0x10, 0x8D, 0x7D, 0xBC, + 0xF3, 0xA5, 0x39, 0x5D, 0xC4, 0x75, 0x0A, 0xB8, 0x0D, 0x00, 0x00, 0xC0, 0xE9, 0x9D, 0x00, 0x00, + 0x00, 0x38, 0x5D, 0x18, 0x74, 0x13, 0xF7, 0x45, 0xC8, 0x00, 0x02, 0x00, 0x00, 0x75, 0xE8, 0x38, + 0x5D, 0x18, 0x74, 0x05, 0x39, 0x5D, 0xC0, 0x7C, 0xDE, 0x8D, 0x45, 0xD4, 0x50, 0xFF, 0x75, 0xC4, + 0xE8, 0xB3, 0xDD, 0xFF, 0xFF, 0x3B, 0xC3, 0x7C, 0x75, 0x8D, 0x45, 0xD4, 0x89, 0x45, 0xC4, 0x89, + 0x5D, 0xCC, 0x89, 0x5D, 0xD0, 0x8D, 0x45, 0xE4, 0x50, 0x53, 0xFF, 0x75, 0x0C, 0x53, 0x53, 0xFF, + 0x75, 0x14, 0x8D, 0x45, 0xBC, 0x50, 0xFF, 0x15, 0x78, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x39, 0x5D, + 0xD8, 0x74, 0x0E, 0x68, 0x4B, 0x70, 0x68, 0x55, 0xFF, 0x75, 0xD8, 0xFF, 0x15, 0x18, 0x12, 0x01, + 0x00, 0x38, 0x5D, 0x18, 0x74, 0x2E, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, 0xE4, + 0x8B, 0x4D, 0x08, 0x89, 0x01, 0xEB, 0x14, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, + 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0xDC, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, + 0xFF, 0xFF, 0xEB, 0x08, 0x8B, 0x45, 0xE4, 0x8B, 0x4D, 0x08, 0x89, 0x01, 0x8B, 0xC6, 0xE8, 0x06, + 0xE0, 0xFF, 0xFF, 0xC2, 0x14, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, + 0xEC, 0x56, 0x8B, 0x75, 0x08, 0x56, 0xE8, 0xDD, 0xF6, 0xFF, 0xFF, 0x8B, 0x0D, 0x7C, 0x12, 0x01, + 0x00, 0x3B, 0x01, 0x75, 0x1D, 0x83, 0x7E, 0x44, 0x00, 0x75, 0x06, 0x83, 0x7E, 0x40, 0x00, 0x74, + 0x11, 0xFF, 0x75, 0x14, 0xFF, 0x75, 0x10, 0xFF, 0x75, 0x0C, 0x56, 0xE8, 0x12, 0xFA, 0xFF, 0xFF, + 0xEB, 0x10, 0xFF, 0x75, 0x14, 0xFF, 0x75, 0x10, 0xFF, 0x75, 0x0C, 0x56, 0xFF, 0x15, 0x58, 0x12, + 0x01, 0x00, 0xB9, 0x23, 0x00, 0x00, 0xC0, 0x5E, 0x3D, 0x05, 0x00, 0x00, 0x80, 0x75, 0x02, 0x8B, + 0xC1, 0x3D, 0x04, 0x00, 0x00, 0xC0, 0x75, 0x02, 0x8B, 0xC1, 0x5D, 0xC2, 0x10, 0x00, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x68, 0xA4, 0x00, 0x00, 0x00, 0x68, 0x50, 0x15, 0x01, 0x00, 0xE8, 0x09, + 0xE1, 0xFF, 0xFF, 0x8B, 0x45, 0x08, 0x89, 0x45, 0x98, 0x8B, 0x7D, 0x0C, 0x8B, 0x45, 0x14, 0x89, + 0x45, 0x9C, 0x8B, 0x5D, 0x1C, 0x89, 0x9D, 0x5C, 0xFF, 0xFF, 0xFF, 0x80, 0x7D, 0x20, 0x00, 0x74, + 0x24, 0x83, 0x65, 0xFC, 0x00, 0x6A, 0x04, 0xFF, 0x75, 0x18, 0x50, 0x8B, 0x35, 0x2C, 0x12, 0x01, + 0x00, 0xFF, 0xD6, 0x85, 0xDB, 0x74, 0x07, 0x6A, 0x04, 0x6A, 0x04, 0x53, 0xFF, 0xD6, 0xC7, 0x45, + 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x6A, 0x00, 0x8D, 0x45, 0x90, 0x50, 0xFF, 0x75, 0x20, 0xA1, 0x54, + 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x00, 0xFF, 0x75, 0x98, 0x8B, 0x35, 0x50, 0x12, 0x01, 0x00, + 0xFF, 0xD6, 0x85, 0xC0, 0x0F, 0x8C, 0x81, 0x07, 0x00, 0x00, 0x8B, 0x4D, 0x90, 0xA1, 0x68, 0x12, + 0x01, 0x00, 0x3B, 0x08, 0x75, 0x32, 0x81, 0xCF, 0x00, 0x00, 0x00, 0x80, 0xC6, 0x45, 0xA8, 0x00, + 0xEB, 0x40, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x85, 0x50, 0xFF, 0xFF, 0xFF, 0x33, + 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x85, 0x50, + 0xFF, 0xFF, 0xFF, 0xE9, 0x43, 0x07, 0x00, 0x00, 0x85, 0xFF, 0x7D, 0x10, 0xFF, 0x15, 0x4C, 0x12, + 0x01, 0x00, 0xB8, 0x08, 0x00, 0x00, 0xC0, 0xE9, 0x2F, 0x07, 0x00, 0x00, 0x8A, 0x45, 0x20, 0x88, + 0x45, 0xA8, 0x8B, 0x45, 0x10, 0x6A, 0x08, 0x5B, 0x3B, 0xC3, 0x0F, 0x87, 0xD1, 0x06, 0x00, 0x00, + 0xFF, 0x24, 0x85, 0x04, 0x37, 0x01, 0x00, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0x51, 0xFF, + 0x15, 0x64, 0x12, 0x01, 0x00, 0x33, 0xF6, 0x56, 0x6A, 0x38, 0x8D, 0x45, 0xAC, 0x50, 0x56, 0x57, + 0xFF, 0x15, 0x94, 0x12, 0x01, 0x00, 0x89, 0x45, 0xA8, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, + 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x39, 0x75, 0xA8, 0x7C, 0x47, 0x83, 0x7D, 0x18, 0x38, 0x75, + 0x3A, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x6A, 0x0E, 0x59, 0x8D, 0x75, 0xAC, 0x8B, 0x7D, + 0x9C, 0xF3, 0xA5, 0xEB, 0x1D, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x85, 0x54, 0xFF, + 0xFF, 0xFF, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x85, 0x54, 0xFF, 0xFF, 0xFF, 0x89, + 0x45, 0xA8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x07, 0xC7, 0x45, 0xA8, 0x04, 0x00, + 0x00, 0xC0, 0xC7, 0x45, 0xA0, 0x38, 0x00, 0x00, 0x00, 0xE9, 0x4E, 0x06, 0x00, 0x00, 0x89, 0x5D, + 0xA0, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0x51, 0xFF, 0x15, 0x64, 0x12, 0x01, 0x00, 0x33, + 0xC0, 0x50, 0x8D, 0x4D, 0xA4, 0x51, 0xFF, 0x75, 0xA8, 0x50, 0x50, 0x57, 0xFF, 0xD6, 0x89, 0x45, + 0xA8, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x83, 0x7D, + 0xA8, 0x00, 0x0F, 0x8C, 0x14, 0x06, 0x00, 0x00, 0x8B, 0x7D, 0x18, 0x8B, 0xC7, 0x3B, 0xFB, 0x73, + 0x02, 0x8B, 0xC3, 0x68, 0x4B, 0x70, 0x68, 0x51, 0x50, 0x6A, 0x01, 0xFF, 0x15, 0x90, 0x12, 0x01, + 0x00, 0x8B, 0xF0, 0x89, 0x75, 0x98, 0x85, 0xF6, 0x0F, 0x84, 0x82, 0x00, 0x00, 0x00, 0x57, 0x6A, + 0x00, 0x56, 0xE8, 0x71, 0xDD, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, 0x8D, 0x45, 0xA0, 0x50, 0x57, 0x56, + 0xFF, 0x75, 0xA4, 0xE8, 0xB4, 0xFD, 0xFF, 0xFF, 0x89, 0x45, 0xA8, 0x85, 0xC0, 0x7C, 0x53, 0x8B, + 0x46, 0x04, 0x85, 0xC0, 0x74, 0x08, 0x2B, 0xC6, 0x03, 0x45, 0x9C, 0x89, 0x46, 0x04, 0xC7, 0x45, + 0xFC, 0x02, 0x00, 0x00, 0x00, 0x57, 0x56, 0xFF, 0x75, 0x9C, 0xE8, 0x2D, 0xDD, 0xFF, 0xFF, 0x83, + 0xC4, 0x0C, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x27, 0x8B, 0x45, 0xEC, 0x8B, 0x00, + 0x8B, 0x00, 0x89, 0x85, 0x4C, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, + 0x85, 0x4C, 0xFF, 0xFF, 0xFF, 0x89, 0x45, 0xA8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, + 0x75, 0x98, 0x68, 0x4B, 0x70, 0x68, 0x51, 0x56, 0xFF, 0x15, 0x18, 0x12, 0x01, 0x00, 0xEB, 0x07, + 0xC7, 0x45, 0xA8, 0x9A, 0x00, 0x00, 0xC0, 0x8B, 0x4D, 0xA4, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, + 0xE9, 0x57, 0x05, 0x00, 0x00, 0x6A, 0x60, 0x59, 0x89, 0x4D, 0xA0, 0x8B, 0x45, 0x18, 0x3B, 0xC1, + 0x73, 0x02, 0x8B, 0xC1, 0x03, 0xC3, 0x68, 0x4B, 0x70, 0x68, 0x51, 0x50, 0x6A, 0x01, 0xFF, 0x15, + 0x90, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x89, 0x75, 0x98, 0x85, 0xF6, 0x0F, 0x84, 0xAB, 0x00, 0x00, + 0x00, 0xFF, 0x75, 0x18, 0x6A, 0x00, 0x56, 0xE8, 0xAC, 0xDC, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, 0x8D, + 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0xFF, 0x75, 0x90, 0xFF, 0x15, 0x64, 0x12, 0x01, 0x00, 0x8D, + 0x45, 0xA0, 0x50, 0xFF, 0x75, 0x18, 0x56, 0x6A, 0x02, 0x57, 0xFF, 0x15, 0x94, 0x12, 0x01, 0x00, + 0x89, 0x45, 0xA8, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, + 0x83, 0x7D, 0xA8, 0x00, 0x7C, 0x55, 0x8B, 0x46, 0x04, 0x85, 0xC0, 0x74, 0x08, 0x2B, 0xC6, 0x03, + 0x45, 0x9C, 0x89, 0x46, 0x04, 0xC7, 0x45, 0xFC, 0x03, 0x00, 0x00, 0x00, 0xFF, 0x75, 0x18, 0x56, + 0xFF, 0x75, 0x9C, 0xE8, 0x44, 0xDC, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, + 0xFF, 0xFF, 0xEB, 0x27, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x85, 0x74, 0xFF, 0xFF, + 0xFF, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x85, 0x74, 0xFF, 0xFF, 0xFF, 0x89, 0x45, + 0xA8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x75, 0x98, 0x68, 0x4B, 0x70, 0x68, 0x51, + 0x56, 0xFF, 0x15, 0x18, 0x12, 0x01, 0x00, 0xE9, 0x80, 0x04, 0x00, 0x00, 0xC7, 0x45, 0xA8, 0x9A, + 0x00, 0x00, 0xC0, 0xE9, 0x74, 0x04, 0x00, 0x00, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0x51, + 0xFF, 0x15, 0x64, 0x12, 0x01, 0x00, 0x6A, 0x00, 0x6A, 0x02, 0x8D, 0x45, 0xA4, 0x50, 0x6A, 0x04, + 0x5E, 0x56, 0x57, 0xFF, 0x15, 0x94, 0x12, 0x01, 0x00, 0x89, 0x45, 0xA8, 0x8D, 0x85, 0x78, 0xFF, + 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x83, 0x7D, 0xA8, 0x00, 0x7C, 0x42, 0x83, + 0x7D, 0x18, 0x02, 0x75, 0x35, 0x89, 0x75, 0xFC, 0x66, 0x8B, 0x45, 0xA4, 0x8B, 0x4D, 0x9C, 0x66, + 0x89, 0x01, 0xEB, 0x1D, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x85, 0x68, 0xFF, 0xFF, + 0xFF, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x85, 0x68, 0xFF, 0xFF, 0xFF, 0x89, 0x45, + 0xA8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x07, 0xC7, 0x45, 0xA8, 0x04, 0x00, 0x00, + 0xC0, 0xC7, 0x45, 0xA0, 0x02, 0x00, 0x00, 0x00, 0xE9, 0xEF, 0x03, 0x00, 0x00, 0x8D, 0x85, 0x78, + 0xFF, 0xFF, 0xFF, 0x50, 0x51, 0xFF, 0x15, 0x64, 0x12, 0x01, 0x00, 0x33, 0xF6, 0x56, 0x6A, 0x18, + 0x8D, 0x45, 0xCC, 0x50, 0x56, 0x57, 0xFF, 0x15, 0x8C, 0x12, 0x01, 0x00, 0x89, 0x45, 0xA8, 0x8D, + 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x39, 0x75, 0xA8, 0x7C, + 0x47, 0x83, 0x7D, 0x18, 0x18, 0x75, 0x3A, 0xC7, 0x45, 0xFC, 0x05, 0x00, 0x00, 0x00, 0x6A, 0x06, + 0x59, 0x8D, 0x75, 0xCC, 0x8B, 0x7D, 0x9C, 0xF3, 0xA5, 0xEB, 0x1D, 0x8B, 0x45, 0xEC, 0x8B, 0x00, + 0x8B, 0x00, 0x89, 0x85, 0x58, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, + 0x85, 0x58, 0xFF, 0xFF, 0xFF, 0x89, 0x45, 0xA8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, + 0x07, 0xC7, 0x45, 0xA8, 0x04, 0x00, 0x00, 0xC0, 0xC7, 0x45, 0xA0, 0x18, 0x00, 0x00, 0x00, 0xE9, + 0x68, 0x03, 0x00, 0x00, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0x51, 0xFF, 0x15, 0x64, 0x12, + 0x01, 0x00, 0x33, 0xF6, 0x56, 0x6A, 0x1C, 0x8D, 0x45, 0xC8, 0x50, 0x56, 0x57, 0xFF, 0x15, 0x88, + 0x12, 0x01, 0x00, 0x89, 0x45, 0xA8, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, + 0x12, 0x01, 0x00, 0x39, 0x75, 0xA8, 0x7C, 0x47, 0x83, 0x7D, 0x18, 0x1C, 0x75, 0x3A, 0xC7, 0x45, + 0xFC, 0x06, 0x00, 0x00, 0x00, 0x6A, 0x07, 0x59, 0x8D, 0x75, 0xC8, 0x8B, 0x7D, 0x9C, 0xF3, 0xA5, + 0xEB, 0x1D, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x85, 0x60, 0xFF, 0xFF, 0xFF, 0x33, + 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x85, 0x60, 0xFF, 0xFF, 0xFF, 0x89, 0x45, 0xA8, 0xC7, + 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x07, 0xC7, 0x45, 0xA8, 0x04, 0x00, 0x00, 0xC0, 0xC7, + 0x45, 0xA0, 0x1C, 0x00, 0x00, 0x00, 0xE9, 0xE1, 0x02, 0x00, 0x00, 0x83, 0x3D, 0x00, 0x19, 0x01, + 0x00, 0xFF, 0x0F, 0x84, 0x18, 0x01, 0x00, 0x00, 0x83, 0x3D, 0x0C, 0x19, 0x01, 0x00, 0xFF, 0x0F, + 0x84, 0x0B, 0x01, 0x00, 0x00, 0x83, 0x3D, 0x14, 0x19, 0x01, 0x00, 0xFF, 0x0F, 0x84, 0xFE, 0x00, + 0x00, 0x00, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0x51, 0xFF, 0x15, 0x64, 0x12, 0x01, 0x00, + 0x33, 0xDB, 0x53, 0x8D, 0x45, 0xA4, 0x50, 0xFF, 0x75, 0xA8, 0x53, 0x53, 0x57, 0xFF, 0xD6, 0x89, + 0x45, 0xA8, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x39, + 0x5D, 0xA8, 0x0F, 0x8C, 0xCF, 0x00, 0x00, 0x00, 0xFF, 0x75, 0xA4, 0xE8, 0x48, 0xF1, 0xFF, 0xFF, + 0x3B, 0xC3, 0x74, 0x31, 0x8B, 0x0D, 0x14, 0x19, 0x01, 0x00, 0x8D, 0x34, 0x01, 0x68, 0x30, 0x57, + 0x01, 0x00, 0x8D, 0x45, 0x94, 0x50, 0xFF, 0x15, 0x24, 0x12, 0x01, 0x00, 0x53, 0x8D, 0x45, 0x94, + 0x50, 0x56, 0xFF, 0x15, 0x84, 0x12, 0x01, 0x00, 0x84, 0xC0, 0x75, 0x10, 0xC7, 0x45, 0xA8, 0x24, + 0x00, 0x00, 0xC0, 0xEB, 0x07, 0xC7, 0x45, 0xA8, 0xBB, 0x00, 0x00, 0xC0, 0x39, 0x5D, 0xA8, 0x7C, + 0x74, 0xA1, 0x0C, 0x19, 0x01, 0x00, 0x8B, 0x4D, 0xA4, 0x8B, 0x04, 0x08, 0x3B, 0xC3, 0x74, 0x12, + 0x8B, 0x0D, 0x00, 0x19, 0x01, 0x00, 0x8D, 0x34, 0x01, 0x8D, 0x7D, 0xD0, 0xA5, 0xA5, 0xA5, 0xA5, + 0xEB, 0x09, 0x33, 0xC0, 0x8D, 0x7D, 0xD0, 0xAB, 0xAB, 0xAB, 0xAB, 0x89, 0x5D, 0xE0, 0x83, 0x7D, + 0x18, 0x14, 0x75, 0x3A, 0xC7, 0x45, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x6A, 0x05, 0x59, 0x8D, 0x75, + 0xD0, 0x8B, 0x7D, 0x9C, 0xF3, 0xA5, 0xEB, 0x1D, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, + 0x85, 0x70, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x85, 0x70, 0xFF, + 0xFF, 0xFF, 0x89, 0x45, 0xA8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x07, 0xC7, 0x45, + 0xA8, 0x04, 0x00, 0x00, 0xC0, 0x8B, 0x4D, 0xA4, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0xEB, 0x07, + 0xC7, 0x45, 0xA8, 0xBB, 0x00, 0x00, 0xC0, 0xC7, 0x45, 0xA0, 0x14, 0x00, 0x00, 0x00, 0xE9, 0xA9, + 0x01, 0x00, 0x00, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0x51, 0xFF, 0x15, 0x64, 0x12, 0x01, + 0x00, 0x6A, 0x00, 0x8D, 0x45, 0xA4, 0x50, 0xFF, 0x75, 0xA8, 0xA1, 0x7C, 0x12, 0x01, 0x00, 0xFF, + 0x30, 0x6A, 0x00, 0x57, 0xFF, 0xD6, 0x89, 0x45, 0xA8, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, + 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x83, 0x7D, 0xA8, 0x00, 0x0F, 0x8C, 0xF8, 0xFD, 0xFF, 0xFF, + 0x8B, 0x45, 0xA4, 0x8A, 0x48, 0x24, 0x88, 0x4D, 0xCC, 0x8A, 0x48, 0x25, 0x88, 0x4D, 0xCD, 0x8A, + 0x48, 0x26, 0x88, 0x4D, 0xCE, 0x8A, 0x48, 0x27, 0x88, 0x4D, 0xCF, 0x8A, 0x48, 0x28, 0x88, 0x4D, + 0xD0, 0x8A, 0x48, 0x29, 0x88, 0x4D, 0xD1, 0x8A, 0x48, 0x2A, 0x88, 0x4D, 0xD2, 0x8A, 0x48, 0x2B, + 0x88, 0x4D, 0xD3, 0x8B, 0x48, 0x38, 0x89, 0x4D, 0xD4, 0x8B, 0x48, 0x3C, 0x89, 0x4D, 0xD8, 0x8B, + 0x48, 0x2C, 0x89, 0x4D, 0xDC, 0x83, 0x7D, 0x18, 0x18, 0x75, 0x40, 0x89, 0x5D, 0xFC, 0x6A, 0x06, + 0x59, 0x8D, 0x75, 0xCC, 0x8B, 0x7D, 0x9C, 0xF3, 0xA5, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0xEB, 0x30, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x85, 0x6C, 0xFF, 0xFF, 0xFF, 0x33, + 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x85, 0x6C, 0xFF, 0xFF, 0xFF, 0x89, 0x45, 0xA8, 0xC7, + 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xA4, 0xEB, 0x07, 0xC7, 0x45, 0xA8, 0x04, 0x00, + 0x00, 0xC0, 0x8B, 0xC8, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0xE9, 0x59, 0xFD, 0xFF, 0xFF, 0x83, + 0x7D, 0x18, 0x04, 0x0F, 0x85, 0xAF, 0x00, 0x00, 0x00, 0x8D, 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, + 0x51, 0xFF, 0x15, 0x64, 0x12, 0x01, 0x00, 0x33, 0xDB, 0x53, 0x8D, 0x45, 0x98, 0x50, 0xFF, 0x75, + 0xA8, 0xA1, 0x7C, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x53, 0x57, 0xFF, 0xD6, 0x89, 0x45, 0xA8, 0x8D, + 0x85, 0x78, 0xFF, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x39, 0x5D, 0xA8, 0x0F, + 0x8C, 0x87, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x98, 0x39, 0x58, 0x04, 0x74, 0x26, 0x8B, 0x40, 0x04, + 0x8B, 0x40, 0x08, 0x3B, 0xC3, 0x74, 0x1C, 0x8D, 0x4D, 0xA4, 0x51, 0x53, 0x8B, 0x0D, 0x80, 0x12, + 0x01, 0x00, 0xFF, 0x31, 0x53, 0x53, 0x53, 0x50, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x89, 0x45, + 0xA8, 0xEB, 0x03, 0x89, 0x5D, 0xA4, 0x39, 0x5D, 0xA8, 0x7C, 0x35, 0xC7, 0x45, 0xFC, 0x09, 0x00, + 0x00, 0x00, 0x8B, 0x45, 0x9C, 0x8B, 0x4D, 0xA4, 0x89, 0x08, 0xEB, 0x1D, 0x8B, 0x45, 0xEC, 0x8B, + 0x00, 0x8B, 0x00, 0x89, 0x85, 0x64, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, + 0x8B, 0x85, 0x64, 0xFF, 0xFF, 0xFF, 0x89, 0x45, 0xA8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0x8B, 0x4D, 0x98, 0xE9, 0xB2, 0xFA, 0xFF, 0xFF, 0xC7, 0x45, 0xA8, 0x04, 0x00, 0x00, 0xC0, 0xEB, + 0x0B, 0xC7, 0x45, 0xA8, 0x03, 0x00, 0x00, 0xC0, 0x83, 0x65, 0xA0, 0x00, 0x8B, 0x4D, 0x90, 0xFF, + 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0x85, 0x5C, 0xFF, 0xFF, 0xFF, 0x85, 0xC0, 0x74, 0x29, 0x80, + 0x7D, 0x20, 0x00, 0x74, 0x1E, 0xC7, 0x45, 0xFC, 0x0A, 0x00, 0x00, 0x00, 0x8B, 0x4D, 0xA0, 0x89, + 0x08, 0xEB, 0x07, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, + 0xFF, 0xEB, 0x05, 0x8B, 0x4D, 0xA0, 0x89, 0x08, 0x8B, 0x45, 0xA8, 0xE8, 0x64, 0xD9, 0xFF, 0xFF, + 0xC2, 0x1C, 0x00, 0x90, 0xE7, 0x2F, 0x01, 0x00, 0x6E, 0x30, 0x01, 0x00, 0x65, 0x31, 0x01, 0x00, + 0x48, 0x32, 0x01, 0x00, 0xCD, 0x32, 0x01, 0x00, 0x54, 0x33, 0x01, 0x00, 0xDB, 0x33, 0x01, 0x00, + 0x13, 0x35, 0x01, 0x00, 0xEF, 0x35, 0x01, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x20, + 0x68, 0xE8, 0x15, 0x01, 0x00, 0xE8, 0x1A, 0xD7, 0xFF, 0xFF, 0x33, 0xDB, 0x38, 0x5D, 0x14, 0x74, + 0x53, 0x89, 0x5D, 0xFC, 0x6A, 0x04, 0x6A, 0x04, 0x8B, 0x7D, 0x08, 0x57, 0xFF, 0x15, 0x2C, 0x12, + 0x01, 0x00, 0x6A, 0x04, 0x6A, 0x08, 0x8B, 0x75, 0x10, 0x56, 0xFF, 0x15, 0x38, 0x12, 0x01, 0x00, + 0x8B, 0x0E, 0x89, 0x4D, 0xD0, 0x8B, 0x76, 0x04, 0x89, 0x75, 0xD4, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, + 0xFF, 0xFF, 0xEB, 0x31, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, + 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE0, 0xE9, + 0xA9, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x10, 0x8B, 0x08, 0x89, 0x4D, 0xD0, 0x8B, 0x70, 0x04, 0x89, + 0x75, 0xD4, 0x8B, 0x7D, 0x08, 0x3B, 0xF3, 0x74, 0x23, 0x8D, 0x45, 0xDC, 0x50, 0x8D, 0x45, 0x08, + 0x50, 0x8D, 0x45, 0xD0, 0x50, 0xFF, 0x15, 0xA0, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x3B, 0xF3, 0x7C, + 0x7A, 0x8B, 0x4D, 0xDC, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0xEB, 0x0D, 0x8D, 0x45, 0x08, 0x50, + 0x51, 0xFF, 0x15, 0x9C, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x3B, 0xF3, 0x7C, 0x5E, 0x8D, 0x45, 0xE4, + 0x50, 0x53, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0xFF, 0x75, 0x0C, 0x53, 0x53, 0xFF, 0x75, + 0x08, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x8B, 0x4D, 0x08, 0xFF, 0x15, 0x4C, 0x12, + 0x01, 0x00, 0x3B, 0xF3, 0x7C, 0x35, 0x38, 0x5D, 0x14, 0x74, 0x2B, 0xC7, 0x45, 0xFC, 0x01, 0x00, + 0x00, 0x00, 0x8B, 0x45, 0xE4, 0x89, 0x07, 0xEB, 0x14, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, + 0x89, 0x45, 0xD8, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0xD8, 0xC7, 0x45, 0xFC, + 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x05, 0x8B, 0x45, 0xE4, 0x89, 0x07, 0x8B, 0xC6, 0xE8, 0x57, 0xD6, + 0xFF, 0xFF, 0xC2, 0x10, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x18, 0x68, 0x10, 0x16, 0x01, + 0x00, 0xE8, 0xFE, 0xD5, 0xFF, 0xFF, 0x33, 0xDB, 0x38, 0x5D, 0x14, 0x74, 0x17, 0x89, 0x5D, 0xFC, + 0x6A, 0x04, 0x6A, 0x04, 0xFF, 0x75, 0x10, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, 0xC7, 0x45, 0xFC, + 0xFE, 0xFF, 0xFF, 0xFF, 0x53, 0x8D, 0x45, 0xE4, 0x50, 0xFF, 0x75, 0x14, 0xA1, 0x54, 0x12, 0x01, + 0x00, 0xFF, 0x30, 0x53, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x3B, 0xC3, 0x0F, + 0x8C, 0x93, 0x00, 0x00, 0x00, 0xFF, 0x75, 0xE4, 0xFF, 0x15, 0xAC, 0x12, 0x01, 0x00, 0x8B, 0xF0, + 0x8D, 0x45, 0xE0, 0x50, 0x53, 0xA1, 0xA8, 0x12, 0x01, 0x00, 0xFF, 0x30, 0xFF, 0x75, 0x0C, 0x53, + 0x53, 0x56, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, 0xF8, 0x56, 0xFF, 0x15, 0xA4, 0x12, 0x01, + 0x00, 0x8B, 0x4D, 0xE4, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x3B, 0xFB, 0x7C, 0x58, 0x38, 0x5D, + 0x14, 0x74, 0x4B, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, 0xE0, 0x8B, 0x4D, 0x10, + 0x89, 0x01, 0xEB, 0x31, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, + 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xDC, 0xEB, + 0x27, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xD8, 0x33, 0xC0, 0x40, 0xC3, 0x8B, + 0x65, 0xE8, 0x8B, 0x7D, 0xD8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x08, 0x8B, 0x45, + 0xE0, 0x8B, 0x4D, 0x10, 0x89, 0x01, 0x8B, 0xC7, 0xE8, 0x6C, 0xD5, 0xFF, 0xFF, 0xC2, 0x10, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x14, 0x68, 0x38, 0x16, 0x01, 0x00, 0xE8, 0x12, 0xD5, + 0xFF, 0xFF, 0x33, 0xDB, 0x89, 0x5D, 0xE4, 0x38, 0x5D, 0x14, 0x74, 0x3A, 0x89, 0x5D, 0xFC, 0x6A, + 0x04, 0x6A, 0x04, 0x8B, 0x7D, 0x10, 0x57, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, 0xC7, 0x45, 0xFC, + 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x23, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, + 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, + 0xE0, 0xE9, 0x93, 0x00, 0x00, 0x00, 0x8B, 0x7D, 0x10, 0x53, 0x8D, 0x45, 0x10, 0x50, 0xFF, 0x75, + 0x14, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x53, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, + 0x01, 0x00, 0x3B, 0xC3, 0x7C, 0x73, 0xFF, 0x75, 0x10, 0xFF, 0x15, 0xB4, 0x12, 0x01, 0x00, 0x3B, + 0xC3, 0x74, 0x1D, 0x8D, 0x4D, 0xE4, 0x51, 0x53, 0x8B, 0x0D, 0xB0, 0x12, 0x01, 0x00, 0xFF, 0x31, + 0xFF, 0x75, 0x0C, 0x53, 0x53, 0x50, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0xEB, 0x05, + 0xBE, 0x25, 0x02, 0x00, 0xC0, 0x8B, 0x4D, 0x10, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x3B, 0xF3, + 0x7C, 0x35, 0x38, 0x5D, 0x14, 0x74, 0x2B, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, + 0xE4, 0x89, 0x07, 0xEB, 0x14, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, + 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0xDC, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0xEB, 0x05, 0x8B, 0x45, 0xE4, 0x89, 0x07, 0x8B, 0xC6, 0xE8, 0x7B, 0xD4, 0xFF, 0xFF, 0xC2, 0x10, + 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x56, 0x33, 0xF6, 0x39, 0x35, + 0x34, 0x1A, 0x01, 0x00, 0x75, 0x07, 0xB8, 0xBB, 0x00, 0x00, 0xC0, 0xEB, 0x33, 0x56, 0x8D, 0x45, + 0x0C, 0x50, 0xFF, 0x75, 0x0C, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x56, 0xFF, 0x75, 0x08, + 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x3B, 0xC6, 0x7C, 0x16, 0xFF, 0x75, 0x0C, 0xFF, 0x15, 0x34, + 0x1A, 0x01, 0x00, 0x8B, 0x4D, 0x0C, 0x8B, 0xF0, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, + 0x5E, 0x5D, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x56, + 0x33, 0xF6, 0x39, 0x35, 0x24, 0x1A, 0x01, 0x00, 0x75, 0x07, 0xB8, 0xBB, 0x00, 0x00, 0xC0, 0xEB, + 0x33, 0x56, 0x8D, 0x45, 0x0C, 0x50, 0xFF, 0x75, 0x0C, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, + 0x56, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x3B, 0xC6, 0x7C, 0x16, 0xFF, 0x75, + 0x0C, 0xFF, 0x15, 0x24, 0x1A, 0x01, 0x00, 0x8B, 0x4D, 0x0C, 0x8B, 0xF0, 0xFF, 0x15, 0x4C, 0x12, + 0x01, 0x00, 0x8B, 0xC6, 0x5E, 0x5D, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, + 0x55, 0x8B, 0xEC, 0x51, 0x51, 0x83, 0x3D, 0xAC, 0x1B, 0x01, 0x00, 0x00, 0x74, 0x07, 0xB8, 0xBB, + 0x00, 0x00, 0xC0, 0xEB, 0x5B, 0x68, 0x60, 0x1A, 0x01, 0x00, 0xE8, 0x61, 0xD0, 0xFF, 0xFF, 0x89, + 0x45, 0xF8, 0x85, 0xC0, 0x74, 0xE8, 0x8B, 0x0D, 0x7C, 0x1A, 0x01, 0x00, 0x83, 0xF9, 0x33, 0x74, + 0x31, 0x83, 0xF9, 0x34, 0x74, 0x2C, 0x83, 0xF9, 0x3E, 0x74, 0x27, 0x83, 0xF9, 0x3C, 0x74, 0x14, + 0x83, 0xF9, 0x3D, 0x74, 0x0F, 0x83, 0xF9, 0x3F, 0x75, 0xC4, 0x8B, 0x55, 0x0C, 0x8B, 0x4D, 0x08, + 0xFF, 0xD0, 0xEB, 0x16, 0xFF, 0x75, 0x0C, 0x8B, 0x4D, 0x08, 0xFF, 0x55, 0xF8, 0x89, 0x45, 0xFC, + 0xEB, 0x0B, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x08, 0xFF, 0xD0, 0x89, 0x45, 0xFC, 0x8B, 0x45, 0xFC, + 0xC9, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x6A, + 0x00, 0x8D, 0x45, 0x10, 0x50, 0xFF, 0x75, 0x10, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, + 0x00, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x85, 0xC0, 0x7C, 0x70, 0x56, 0xFF, + 0x15, 0x74, 0x12, 0x01, 0x00, 0x39, 0x45, 0x10, 0x74, 0x53, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x10, + 0xE8, 0x49, 0xFF, 0xFF, 0xFF, 0x8B, 0xF0, 0x81, 0xFE, 0xBB, 0x00, 0x00, 0xC0, 0x75, 0x43, 0x8D, + 0x45, 0x08, 0x50, 0xA1, 0x54, 0x12, 0x01, 0x00, 0x6A, 0x00, 0xFF, 0x30, 0x6A, 0x01, 0x6A, 0x00, + 0x68, 0x00, 0x02, 0x00, 0x00, 0xFF, 0x75, 0x10, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, 0xF0, + 0x85, 0xF6, 0x7C, 0x1E, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0xB8, 0x12, 0x01, 0x00, + 0xFF, 0x75, 0x08, 0x8B, 0xF0, 0xFF, 0x15, 0x14, 0x12, 0x01, 0x00, 0xEB, 0x05, 0xBE, 0xDB, 0x00, + 0x00, 0xC0, 0x8B, 0x4D, 0x10, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0x5E, 0x5D, 0xC2, + 0x0C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x34, 0x68, 0x60, 0x16, 0x01, 0x00, 0xE8, + 0x60, 0xD2, 0xFF, 0xFF, 0x80, 0x7D, 0x1C, 0x00, 0x74, 0x59, 0x8B, 0x45, 0x0C, 0x48, 0x74, 0x05, + 0x6A, 0x04, 0x58, 0xEB, 0x03, 0x33, 0xC0, 0x40, 0x83, 0x65, 0xFC, 0x00, 0x50, 0xFF, 0x75, 0x14, + 0x8B, 0x5D, 0x10, 0x53, 0x8B, 0x35, 0x2C, 0x12, 0x01, 0x00, 0xFF, 0xD6, 0x83, 0x7D, 0x18, 0x00, + 0x74, 0x09, 0x6A, 0x04, 0x6A, 0x04, 0xFF, 0x75, 0x18, 0xFF, 0xD6, 0x6A, 0xFE, 0x5F, 0x89, 0x7D, + 0xFC, 0xEB, 0x26, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, + 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE0, 0xE9, 0xD4, + 0x01, 0x00, 0x00, 0x6A, 0xFE, 0x5F, 0x8B, 0x5D, 0x10, 0x33, 0xF6, 0x56, 0x8D, 0x45, 0xE4, 0x50, + 0xFF, 0x75, 0x1C, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x56, 0xFF, 0x75, 0x08, 0xFF, 0x15, + 0x50, 0x12, 0x01, 0x00, 0x89, 0x45, 0x10, 0x3B, 0xC6, 0x0F, 0x8C, 0xA5, 0x01, 0x00, 0x00, 0x8B, + 0x45, 0x0C, 0x48, 0x0F, 0x84, 0x0E, 0x01, 0x00, 0x00, 0x48, 0x0F, 0x84, 0x98, 0x00, 0x00, 0x00, + 0x48, 0x74, 0x0C, 0xC7, 0x45, 0x10, 0x03, 0x00, 0x00, 0xC0, 0xE9, 0x4F, 0x01, 0x00, 0x00, 0x8D, + 0x45, 0x0C, 0x50, 0x56, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x68, 0x00, 0x04, 0x00, 0x00, + 0x56, 0x68, 0x00, 0x02, 0x00, 0x00, 0xFF, 0x75, 0xE4, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x89, + 0x45, 0x10, 0x3B, 0xC6, 0x0F, 0x8C, 0xC8, 0x00, 0x00, 0x00, 0x56, 0x6A, 0x04, 0x8D, 0x45, 0x08, + 0x50, 0x6A, 0x21, 0xFF, 0x75, 0x0C, 0xFF, 0x15, 0x8C, 0x12, 0x01, 0x00, 0x89, 0x45, 0x10, 0x3B, + 0xC6, 0x7C, 0x3A, 0x83, 0x7D, 0x14, 0x04, 0x75, 0x2D, 0xC7, 0x45, 0xFC, 0x03, 0x00, 0x00, 0x00, + 0x8B, 0x45, 0x08, 0x89, 0x03, 0xEB, 0x1A, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, + 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x45, 0xDC, 0x89, 0x45, 0x10, 0x6A, 0xFE, + 0x5F, 0x89, 0x7D, 0xFC, 0xEB, 0x07, 0xC7, 0x45, 0x10, 0x04, 0x00, 0x00, 0xC0, 0xFF, 0x75, 0x0C, + 0xFF, 0x15, 0x14, 0x12, 0x01, 0x00, 0xEB, 0x6A, 0x8D, 0x45, 0xBC, 0x50, 0xFF, 0x75, 0xE4, 0xFF, + 0x15, 0x64, 0x12, 0x01, 0x00, 0x56, 0x6A, 0x04, 0x8D, 0x45, 0x0C, 0x50, 0x6A, 0x22, 0x6A, 0xFF, + 0xFF, 0x15, 0x8C, 0x12, 0x01, 0x00, 0x89, 0x45, 0x10, 0x8D, 0x45, 0xBC, 0x50, 0xFF, 0x15, 0x5C, + 0x12, 0x01, 0x00, 0x39, 0x75, 0x10, 0x7C, 0x3A, 0x83, 0x7D, 0x14, 0x04, 0x75, 0x2D, 0xC7, 0x45, + 0xFC, 0x02, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x0C, 0x89, 0x03, 0xEB, 0x1A, 0x8B, 0x45, 0xEC, 0x8B, + 0x00, 0x8B, 0x00, 0x89, 0x45, 0xD8, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x45, 0xD8, + 0x89, 0x45, 0x10, 0x6A, 0xFE, 0x5F, 0x89, 0x7D, 0xFC, 0xEB, 0x07, 0xC7, 0x45, 0x10, 0x04, 0x00, + 0x00, 0xC0, 0x6A, 0x04, 0x5E, 0xEB, 0x57, 0x32, 0xC0, 0x8B, 0x0D, 0x2C, 0x1A, 0x01, 0x00, 0x3B, + 0xCE, 0x74, 0x07, 0xFF, 0x75, 0xE4, 0xFF, 0xD1, 0xEB, 0x07, 0xC7, 0x45, 0x10, 0xBB, 0x00, 0x00, + 0xC0, 0x39, 0x75, 0x10, 0x7C, 0x35, 0x33, 0xC9, 0x41, 0x39, 0x4D, 0x14, 0x75, 0x26, 0x89, 0x4D, + 0xFC, 0x88, 0x03, 0xEB, 0x1A, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xD4, 0x33, + 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x45, 0xD4, 0x89, 0x45, 0x10, 0x6A, 0xFE, 0x5F, 0x89, + 0x7D, 0xFC, 0xEB, 0x07, 0xC7, 0x45, 0x10, 0x04, 0x00, 0x00, 0xC0, 0x33, 0xF6, 0x46, 0x8B, 0x4D, + 0xE4, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0x45, 0x18, 0x85, 0xC0, 0x74, 0x26, 0x80, 0x7D, + 0x1C, 0x00, 0x74, 0x1E, 0xC7, 0x45, 0xFC, 0x04, 0x00, 0x00, 0x00, 0x89, 0x30, 0x89, 0x7D, 0xFC, + 0xEB, 0x12, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0xEB, 0x02, 0x89, 0x30, 0x8B, 0x45, 0x10, 0xE8, 0x6D, 0xD0, 0xFF, 0xFF, 0xC2, 0x18, 0x00, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x2C, 0x68, 0xB0, 0x16, 0x01, 0x00, 0xE8, 0x14, 0xD0, 0xFF, 0xFF, + 0x80, 0x7D, 0x18, 0x00, 0x74, 0x3B, 0x83, 0x65, 0xFC, 0x00, 0x6A, 0x04, 0xFF, 0x75, 0x14, 0x8B, + 0x7D, 0x10, 0x57, 0xFF, 0x15, 0x38, 0x12, 0x01, 0x00, 0x6A, 0xFE, 0x5B, 0x89, 0x5D, 0xFC, 0xEB, + 0x26, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE4, 0x33, 0xC0, 0x40, 0xC3, 0x8B, + 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE4, 0xE9, 0x59, 0x01, 0x00, + 0x00, 0x6A, 0xFE, 0x5B, 0x8B, 0x7D, 0x10, 0x6A, 0x00, 0x8D, 0x45, 0x10, 0x50, 0xFF, 0x75, 0x18, + 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, + 0x01, 0x00, 0x8B, 0xF0, 0x85, 0xF6, 0x0F, 0x8C, 0x2C, 0x01, 0x00, 0x00, 0x8B, 0x45, 0x0C, 0x6A, + 0x02, 0x59, 0x2B, 0xC1, 0x0F, 0x84, 0x94, 0x00, 0x00, 0x00, 0x48, 0x74, 0x0A, 0xBE, 0x03, 0x00, + 0x00, 0xC0, 0xE9, 0x08, 0x01, 0x00, 0x00, 0x83, 0x7D, 0x14, 0x04, 0x75, 0x2A, 0x89, 0x4D, 0xFC, + 0x8B, 0x07, 0x89, 0x45, 0x18, 0x89, 0x5D, 0xFC, 0xEB, 0x22, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, + 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0xE0, 0xC7, 0x45, + 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x05, 0xBE, 0x04, 0x00, 0x00, 0xC0, 0x85, 0xF6, 0x0F, 0x8C, + 0xCB, 0x00, 0x00, 0x00, 0x8D, 0x45, 0x14, 0x50, 0x6A, 0x00, 0xA1, 0x54, 0x12, 0x01, 0x00, 0xFF, + 0x30, 0xB8, 0x00, 0x02, 0x00, 0x00, 0x50, 0x6A, 0x00, 0x50, 0xFF, 0x75, 0x10, 0xFF, 0x15, 0x6C, + 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x85, 0xF6, 0x0F, 0x8C, 0xA2, 0x00, 0x00, 0x00, 0x6A, 0x04, 0x8D, + 0x45, 0x18, 0x50, 0x6A, 0x21, 0xFF, 0x75, 0x14, 0xFF, 0x15, 0xC4, 0x12, 0x01, 0x00, 0x8B, 0xF0, + 0xFF, 0x75, 0x14, 0xFF, 0x15, 0x14, 0x12, 0x01, 0x00, 0xE9, 0x81, 0x00, 0x00, 0x00, 0x83, 0x7D, + 0x14, 0x04, 0x75, 0x2E, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x07, 0x89, 0x45, 0x14, + 0x89, 0x5D, 0xFC, 0xEB, 0x22, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, + 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0xDC, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0xEB, 0x05, 0xBE, 0x04, 0x00, 0x00, 0xC0, 0x85, 0xF6, 0x7C, 0x44, 0xFF, 0x75, 0x10, 0xE8, 0x23, + 0xCD, 0xFF, 0xFF, 0x84, 0xC0, 0x74, 0x33, 0x8D, 0x45, 0xC4, 0x50, 0xFF, 0x75, 0x10, 0xFF, 0x15, + 0x64, 0x12, 0x01, 0x00, 0x6A, 0x04, 0x8D, 0x45, 0x14, 0x50, 0x6A, 0x22, 0x6A, 0xFF, 0xFF, 0x15, + 0xC4, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x8D, 0x45, 0xC4, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, + 0xFF, 0x75, 0x10, 0xE8, 0x38, 0xCD, 0xFF, 0xFF, 0xEB, 0x05, 0xBE, 0x0A, 0x01, 0x00, 0xC0, 0x8B, + 0x4D, 0x10, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0xE8, 0xBA, 0xCE, 0xFF, 0xFF, 0xC2, + 0x14, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0xFF, 0x75, 0x10, + 0xA1, 0x80, 0x12, 0x01, 0x00, 0xFF, 0x30, 0xFF, 0x75, 0x0C, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xE8, + 0x64, 0xED, 0xFF, 0xFF, 0x5D, 0xC2, 0x0C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, + 0x55, 0x8B, 0xEC, 0x8B, 0x55, 0x0C, 0x8B, 0x45, 0x08, 0x85, 0xD2, 0x74, 0x22, 0x0F, 0xB7, 0x0A, + 0x66, 0x89, 0x08, 0x66, 0x89, 0x48, 0x02, 0x8D, 0x48, 0x08, 0x89, 0x48, 0x04, 0x0F, 0xB7, 0x00, + 0x50, 0xFF, 0x72, 0x04, 0x51, 0xE8, 0x02, 0xCE, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, 0xEB, 0x0C, 0x33, + 0xC9, 0x21, 0x48, 0x04, 0x66, 0x89, 0x08, 0x66, 0x89, 0x48, 0x02, 0x5D, 0xC2, 0x08, 0x00, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x14, 0x68, 0xE8, 0x16, 0x01, 0x00, 0xE8, 0xF4, 0xCD, 0xFF, 0xFF, + 0x80, 0x7D, 0x1C, 0x00, 0x74, 0x4C, 0x83, 0x65, 0xFC, 0x00, 0x6A, 0x01, 0xFF, 0x75, 0x14, 0x8B, + 0x7D, 0x10, 0x57, 0x8B, 0x35, 0x2C, 0x12, 0x01, 0x00, 0xFF, 0xD6, 0x8B, 0x5D, 0x18, 0x85, 0xDB, + 0x74, 0x07, 0x6A, 0x01, 0x6A, 0x04, 0x53, 0xFF, 0xD6, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0xEB, 0x26, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, + 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE0, 0xE9, 0x48, 0x01, + 0x00, 0x00, 0x8B, 0x5D, 0x18, 0x8B, 0x7D, 0x10, 0x6A, 0x00, 0x8D, 0x45, 0x10, 0x50, 0xFF, 0x75, + 0x1C, 0xA1, 0x80, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, + 0x12, 0x01, 0x00, 0x89, 0x45, 0xE4, 0x33, 0xF6, 0x3B, 0xC6, 0x0F, 0x8C, 0x1A, 0x01, 0x00, 0x00, + 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x0C, 0x2B, 0xC6, 0x0F, 0x84, 0xB1, 0x00, + 0x00, 0x00, 0x48, 0x74, 0x7C, 0x48, 0x74, 0x0C, 0xC7, 0x45, 0xE4, 0x03, 0x00, 0x00, 0xC0, 0xE9, + 0xE3, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x10, 0x39, 0x70, 0x18, 0x74, 0x3F, 0x3B, 0xFE, 0x74, 0x21, + 0x8B, 0x40, 0x18, 0x83, 0xC0, 0x0C, 0x0F, 0xB7, 0x08, 0x83, 0xC1, 0x08, 0x3B, 0x4D, 0x14, 0x77, + 0x09, 0x50, 0x57, 0xE8, 0xE6, 0xFE, 0xFF, 0xFF, 0xEB, 0x07, 0xC7, 0x45, 0xE4, 0x23, 0x00, 0x00, + 0xC0, 0x3B, 0xDE, 0x0F, 0x84, 0xAE, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x10, 0x8B, 0x40, 0x18, 0x0F, + 0xB7, 0x40, 0x0C, 0x83, 0xC0, 0x08, 0xE9, 0x81, 0x00, 0x00, 0x00, 0x3B, 0xFE, 0x74, 0x16, 0x83, + 0x7D, 0x14, 0x08, 0x72, 0x09, 0x56, 0x57, 0xE8, 0xB2, 0xFE, 0xFF, 0xFF, 0xEB, 0x07, 0xC7, 0x45, + 0xE4, 0x23, 0x00, 0x00, 0xC0, 0x3B, 0xDE, 0x74, 0x7E, 0xC7, 0x03, 0x08, 0x00, 0x00, 0x00, 0xEB, + 0x76, 0x3B, 0xFE, 0x74, 0x21, 0x8B, 0x45, 0x10, 0x83, 0xC0, 0x1C, 0x0F, 0xB7, 0x08, 0x83, 0xC1, + 0x08, 0x3B, 0x4D, 0x14, 0x77, 0x09, 0x50, 0x57, 0xE8, 0x81, 0xFE, 0xFF, 0xFF, 0xEB, 0x07, 0xC7, + 0x45, 0xE4, 0x23, 0x00, 0x00, 0xC0, 0x3B, 0xDE, 0x74, 0x4D, 0x8B, 0x45, 0x10, 0x0F, 0xB7, 0x40, + 0x1C, 0xEB, 0xA0, 0x6A, 0x0C, 0x58, 0x39, 0x45, 0x14, 0x75, 0x16, 0x8B, 0x4D, 0x10, 0x8B, 0x51, + 0x08, 0x89, 0x17, 0x8B, 0x51, 0x0C, 0x89, 0x57, 0x04, 0x8B, 0x49, 0x10, 0x89, 0x4F, 0x08, 0xEB, + 0x07, 0xC7, 0x45, 0xE4, 0x04, 0x00, 0x00, 0xC0, 0x3B, 0xDE, 0x74, 0x1B, 0x89, 0x03, 0xEB, 0x17, + 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, + 0xE8, 0x8B, 0x45, 0xDC, 0x89, 0x45, 0xE4, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x4D, + 0x10, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0x45, 0xE4, 0xE8, 0x9A, 0xCC, 0xFF, 0xFF, 0xC2, + 0x18, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x1C, 0x68, 0x10, 0x17, 0x01, 0x00, 0xE8, + 0x40, 0xCC, 0xFF, 0xFF, 0x33, 0xDB, 0x38, 0x5D, 0x14, 0x74, 0x53, 0x89, 0x5D, 0xFC, 0x6A, 0x04, + 0x6A, 0x04, 0x8B, 0x7D, 0x08, 0x57, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, 0x6A, 0x04, 0x6A, 0x08, + 0x8B, 0x75, 0x10, 0x56, 0xFF, 0x15, 0x38, 0x12, 0x01, 0x00, 0x8B, 0x06, 0x89, 0x45, 0xD4, 0x8B, + 0x4E, 0x04, 0x89, 0x4D, 0xD8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x31, 0x8B, 0x45, + 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, + 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE0, 0xE9, 0x91, 0x00, 0x00, 0x00, 0x8B, 0x4D, + 0x10, 0x8B, 0x01, 0x89, 0x45, 0xD4, 0x8B, 0x49, 0x04, 0x89, 0x4D, 0xD8, 0x8B, 0x7D, 0x08, 0x3B, + 0xC3, 0x8D, 0x45, 0x08, 0x50, 0x74, 0x0D, 0x53, 0x8D, 0x45, 0xD4, 0x50, 0xFF, 0x15, 0xA0, 0x12, + 0x01, 0x00, 0xEB, 0x07, 0x51, 0xFF, 0x15, 0xD0, 0x12, 0x01, 0x00, 0x3B, 0xC3, 0x7C, 0x60, 0x8D, + 0x45, 0xE4, 0x50, 0x53, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, 0xFF, 0x75, 0x0C, 0x53, 0x53, + 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x8B, 0x4D, 0x08, 0xFF, 0x15, + 0x4C, 0x12, 0x01, 0x00, 0x3B, 0xF3, 0x7C, 0x35, 0x38, 0x5D, 0x14, 0x74, 0x2B, 0xC7, 0x45, 0xFC, + 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, 0xE4, 0x89, 0x07, 0xEB, 0x14, 0x8B, 0x45, 0xEC, 0x8B, 0x00, + 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0xDC, 0xC7, + 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x05, 0x8B, 0x45, 0xE4, 0x89, 0x07, 0x8B, 0xC6, 0xE8, + 0x95, 0xCB, 0xFF, 0xFF, 0xC2, 0x10, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x14, 0x68, 0x38, + 0x17, 0x01, 0x00, 0xE8, 0x3C, 0xCB, 0xFF, 0xFF, 0x33, 0xDB, 0x38, 0x5D, 0x14, 0x74, 0x3A, 0x89, + 0x5D, 0xFC, 0x6A, 0x04, 0x6A, 0x04, 0x8B, 0x7D, 0x10, 0x57, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, + 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x23, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, + 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, + 0xFF, 0x8B, 0x45, 0xE0, 0xE9, 0x88, 0x00, 0x00, 0x00, 0x8B, 0x7D, 0x10, 0x53, 0x8D, 0x45, 0x10, + 0x50, 0xFF, 0x75, 0x14, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x53, 0xFF, 0x75, 0x08, 0xFF, + 0x15, 0x50, 0x12, 0x01, 0x00, 0x3B, 0xC3, 0x7C, 0x68, 0xFF, 0x75, 0x10, 0xFF, 0x15, 0xD4, 0x12, + 0x01, 0x00, 0x8D, 0x4D, 0xE4, 0x51, 0x53, 0x8B, 0x0D, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x31, 0xFF, + 0x75, 0x0C, 0x53, 0x53, 0x50, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x8B, 0x4D, 0x10, + 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x3B, 0xF3, 0x7C, 0x35, 0x38, 0x5D, 0x14, 0x74, 0x2B, 0xC7, + 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, 0xE4, 0x89, 0x07, 0xEB, 0x14, 0x8B, 0x45, 0xEC, + 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x75, + 0xDC, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x05, 0x8B, 0x45, 0xE4, 0x89, 0x07, 0x8B, + 0xC6, 0xE8, 0xB3, 0xCA, 0xFF, 0xFF, 0xC2, 0x10, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, + 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x0C, 0x83, 0x3D, 0xAC, 0x1B, 0x01, 0x00, 0x00, 0x56, 0x57, 0x74, + 0x0A, 0xB8, 0xBB, 0x00, 0x00, 0xC0, 0xE9, 0x96, 0x00, 0x00, 0x00, 0x68, 0x40, 0x1A, 0x01, 0x00, + 0xE8, 0x3B, 0xC7, 0xFF, 0xFF, 0x8B, 0xF0, 0x89, 0x75, 0xF8, 0x85, 0xF6, 0x74, 0xE3, 0xA1, 0x7C, + 0x1A, 0x01, 0x00, 0x83, 0xF8, 0x33, 0x75, 0x0A, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x08, 0xFF, 0xD6, + 0xEB, 0x6F, 0x83, 0xF8, 0x34, 0x74, 0x52, 0x83, 0xF8, 0x3C, 0x74, 0x4D, 0x83, 0xF8, 0x3D, 0x74, + 0x48, 0x83, 0xF8, 0x3E, 0x75, 0x25, 0xFF, 0x15, 0xC8, 0x12, 0x01, 0x00, 0x33, 0xC9, 0x39, 0x45, + 0x08, 0x0F, 0x94, 0xC1, 0x89, 0x4D, 0xF4, 0xFF, 0x75, 0xF4, 0xFF, 0x75, 0x0C, 0x8B, 0x7D, 0x08, + 0xFF, 0x55, 0xF8, 0x89, 0x45, 0xFC, 0x8B, 0x45, 0xFC, 0xEB, 0x36, 0x83, 0xF8, 0x3F, 0x75, 0x91, + 0xFF, 0x15, 0xC8, 0x12, 0x01, 0x00, 0x8B, 0x4D, 0x08, 0x8B, 0x55, 0x0C, 0x3B, 0xC8, 0x0F, 0x94, + 0xC0, 0x0F, 0xB6, 0xC0, 0x50, 0xFF, 0xD6, 0xEB, 0x18, 0xFF, 0x15, 0xC8, 0x12, 0x01, 0x00, 0x39, + 0x45, 0x08, 0x0F, 0x94, 0xC0, 0x0F, 0xB6, 0xC0, 0x50, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x08, 0xFF, + 0xD6, 0x5F, 0x5E, 0xC9, 0xC2, 0x08, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, + 0xEC, 0x6A, 0x00, 0x8D, 0x45, 0x10, 0x50, 0xFF, 0x75, 0x10, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, + 0x30, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x85, 0xC0, 0x7C, 0x2C, + 0x56, 0xFF, 0x15, 0xC8, 0x12, 0x01, 0x00, 0x39, 0x45, 0x10, 0x74, 0x0F, 0xFF, 0x75, 0x0C, 0xFF, + 0x75, 0x10, 0xE8, 0x07, 0xFF, 0xFF, 0xFF, 0x8B, 0xF0, 0xEB, 0x05, 0xBE, 0xDB, 0x00, 0x00, 0xC0, + 0x8B, 0x4D, 0x10, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0x5E, 0x5D, 0xC2, 0x0C, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x8B, 0x45, 0x14, 0x8B, 0x00, + 0x56, 0x8B, 0x70, 0x40, 0x6A, 0x00, 0x6A, 0x00, 0x83, 0xC0, 0x30, 0x50, 0xFF, 0x15, 0xD8, 0x12, + 0x01, 0x00, 0x56, 0xFF, 0x15, 0xC8, 0x12, 0x01, 0x00, 0x50, 0xE8, 0xBF, 0xFE, 0xFF, 0xFF, 0x5E, + 0x5D, 0xC2, 0x14, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x6A, + 0x00, 0x8D, 0x45, 0x08, 0x50, 0xFF, 0x75, 0x10, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, + 0x00, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x85, 0xC0, 0x7C, 0x1E, 0x56, 0xFF, + 0x75, 0x10, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0xDC, 0x12, 0x01, 0x00, 0x8B, 0x4D, + 0x08, 0x8B, 0xF0, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0x5E, 0x5D, 0xC2, 0x0C, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x6A, 0x00, 0x8D, 0x45, 0x08, + 0x50, 0xFF, 0x75, 0x10, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x00, 0xFF, 0x75, 0x08, + 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x85, 0xC0, 0x7C, 0x1E, 0x56, 0xFF, 0x75, 0x10, 0xFF, 0x75, + 0x0C, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0xE0, 0x12, 0x01, 0x00, 0x8B, 0x4D, 0x08, 0x8B, 0xF0, 0xFF, + 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0x5E, 0x5D, 0xC2, 0x0C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x8B, 0x45, 0x14, 0x56, 0x8B, 0x30, 0x8D, 0x46, 0x54, + 0x50, 0xFF, 0x76, 0x4C, 0x6A, 0x00, 0xFF, 0x76, 0x48, 0xFF, 0x76, 0x44, 0xE8, 0x3F, 0xC7, 0xFF, + 0xFF, 0x80, 0x3E, 0x00, 0x89, 0x46, 0x50, 0x75, 0x0E, 0x6A, 0x00, 0x6A, 0x00, 0x83, 0xC6, 0x34, + 0x56, 0xFF, 0x15, 0xD8, 0x12, 0x01, 0x00, 0x5E, 0x5D, 0xC2, 0x14, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0x6A, 0x18, 0x68, 0x60, 0x17, 0x01, 0x00, 0xE8, 0x36, 0xC8, 0xFF, 0xFF, 0x80, 0x7D, + 0x1C, 0x00, 0x74, 0x4C, 0x83, 0x65, 0xFC, 0x00, 0x6A, 0x04, 0xFF, 0x75, 0x14, 0x8B, 0x5D, 0x10, + 0x53, 0x8B, 0x35, 0x2C, 0x12, 0x01, 0x00, 0xFF, 0xD6, 0x83, 0x7D, 0x18, 0x00, 0x74, 0x09, 0x6A, + 0x04, 0x6A, 0x04, 0xFF, 0x75, 0x18, 0xFF, 0xD6, 0x6A, 0xFE, 0x5F, 0x89, 0x7D, 0xFC, 0xEB, 0x26, + 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, + 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE0, 0xE9, 0x4C, 0x01, 0x00, 0x00, + 0x6A, 0xFE, 0x5F, 0x8B, 0x5D, 0x10, 0x6A, 0x00, 0x8D, 0x45, 0xE4, 0x50, 0xFF, 0x75, 0x1C, 0xA1, + 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, + 0x00, 0x89, 0x45, 0x10, 0x85, 0xC0, 0x0F, 0x8C, 0x20, 0x01, 0x00, 0x00, 0x8B, 0x45, 0x0C, 0x48, + 0x0F, 0x84, 0x9A, 0x00, 0x00, 0x00, 0x6A, 0x02, 0x5E, 0x2B, 0xC6, 0x74, 0x0E, 0xC7, 0x45, 0x10, + 0x03, 0x00, 0x00, 0xC0, 0x33, 0xF6, 0xE9, 0xC8, 0x00, 0x00, 0x00, 0x8D, 0x45, 0x08, 0x50, 0x6A, + 0x00, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x40, 0x6A, 0x00, 0x68, 0x00, 0x02, 0x00, + 0x00, 0xFF, 0x75, 0xE4, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x89, 0x45, 0x10, 0x85, 0xC0, 0x0F, + 0x8C, 0x9B, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x6A, 0x04, 0x8D, 0x45, 0x0C, 0x50, 0x6A, 0x16, 0xFF, + 0x75, 0x08, 0xFF, 0x15, 0x88, 0x12, 0x01, 0x00, 0x89, 0x45, 0x10, 0x85, 0xC0, 0x7C, 0x36, 0x83, + 0x7D, 0x14, 0x04, 0x75, 0x29, 0x89, 0x75, 0xFC, 0x8B, 0x45, 0x0C, 0x89, 0x03, 0xEB, 0x1A, 0x8B, + 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, + 0x8B, 0x45, 0xDC, 0x89, 0x45, 0x10, 0x6A, 0xFE, 0x5F, 0x89, 0x7D, 0xFC, 0xEB, 0x07, 0xC7, 0x45, + 0x10, 0x04, 0x00, 0x00, 0xC0, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x14, 0x12, 0x01, 0x00, 0xEB, 0x40, + 0xFF, 0x75, 0xE4, 0xFF, 0x15, 0xE8, 0x12, 0x01, 0x00, 0x83, 0x7D, 0x14, 0x04, 0x75, 0x2A, 0xC7, + 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x89, 0x03, 0xEB, 0x1A, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, + 0x00, 0x89, 0x45, 0xD8, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x45, 0xD8, 0x89, 0x45, + 0x10, 0x6A, 0xFE, 0x5F, 0x89, 0x7D, 0xFC, 0xEB, 0x07, 0xC7, 0x45, 0x10, 0x04, 0x00, 0x00, 0xC0, + 0x6A, 0x04, 0x5E, 0x8B, 0x4D, 0xE4, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0x45, 0x18, 0x85, + 0xC0, 0x74, 0x26, 0x80, 0x7D, 0x1C, 0x00, 0x74, 0x1E, 0xC7, 0x45, 0xFC, 0x03, 0x00, 0x00, 0x00, + 0x89, 0x30, 0x89, 0x7D, 0xFC, 0xEB, 0x12, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, + 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x02, 0x89, 0x30, 0x8B, 0x45, 0x10, 0xE8, 0xD8, 0xC6, 0xFF, + 0xFF, 0xC2, 0x18, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x18, 0x68, 0xA0, 0x17, 0x01, + 0x00, 0xE8, 0x7E, 0xC6, 0xFF, 0xFF, 0x33, 0xDB, 0x38, 0x5D, 0x18, 0x74, 0x3B, 0x89, 0x5D, 0xFC, + 0x6A, 0x04, 0xFF, 0x75, 0x14, 0x8B, 0x7D, 0x10, 0x57, 0xFF, 0x15, 0x38, 0x12, 0x01, 0x00, 0xC7, + 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x23, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, + 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0x8B, 0x45, 0xE0, 0xE9, 0x80, 0x01, 0x00, 0x00, 0x8B, 0x7D, 0x10, 0x53, 0x8D, 0x45, 0x10, 0x50, + 0xFF, 0x75, 0x18, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x53, 0xFF, 0x75, 0x08, 0xFF, 0x15, + 0x50, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x3B, 0xF3, 0x0F, 0x8C, 0x58, 0x01, 0x00, 0x00, 0x8B, 0x45, + 0x0C, 0x6A, 0x02, 0x59, 0x2B, 0xC1, 0x0F, 0x84, 0x98, 0x00, 0x00, 0x00, 0x48, 0x74, 0x0A, 0xBE, + 0x03, 0x00, 0x00, 0xC0, 0xE9, 0x34, 0x01, 0x00, 0x00, 0x83, 0x7D, 0x14, 0x04, 0x75, 0x30, 0x89, + 0x4D, 0xFC, 0x8B, 0x07, 0x89, 0x45, 0x18, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x24, + 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, + 0xE8, 0x8B, 0x75, 0xDC, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x33, 0xDB, 0xEB, 0x05, 0xBE, + 0x04, 0x00, 0x00, 0xC0, 0x3B, 0xF3, 0x0F, 0x8C, 0xF1, 0x00, 0x00, 0x00, 0x8D, 0x45, 0x14, 0x50, + 0x53, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x20, 0x53, 0x68, 0x00, 0x02, 0x00, 0x00, + 0xFF, 0x75, 0x10, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x3B, 0xF3, 0x0F, 0x8C, 0xCA, + 0x00, 0x00, 0x00, 0x6A, 0x04, 0x8D, 0x45, 0x18, 0x50, 0x6A, 0x16, 0xFF, 0x75, 0x14, 0xFF, 0x15, + 0xF0, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0xFF, 0x75, 0x14, 0xFF, 0x15, 0x14, 0x12, 0x01, 0x00, 0xE9, + 0xA9, 0x00, 0x00, 0x00, 0x89, 0x5D, 0xE4, 0x83, 0x7D, 0x14, 0x04, 0x75, 0x34, 0xC7, 0x45, 0xFC, + 0x01, 0x00, 0x00, 0x00, 0x8B, 0x07, 0x89, 0x45, 0xE4, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, + 0xEB, 0x24, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xD8, 0x33, 0xC0, 0x40, 0xC3, + 0x8B, 0x65, 0xE8, 0x8B, 0x75, 0xD8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x33, 0xDB, 0xEB, + 0x05, 0xBE, 0x04, 0x00, 0x00, 0xC0, 0x3B, 0xF3, 0x7C, 0x63, 0x53, 0x8D, 0x45, 0x08, 0x50, 0xFF, + 0x75, 0x18, 0xA1, 0xA8, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x04, 0xFF, 0x75, 0xE4, 0xFF, 0x15, + 0x50, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x3B, 0xF3, 0x7C, 0x43, 0x8D, 0x45, 0x14, 0x50, 0x53, 0xA1, + 0xA8, 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x04, 0x53, 0x68, 0x00, 0x02, 0x00, 0x00, 0xFF, 0x75, + 0x08, 0xFF, 0x15, 0x6C, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0x3B, 0xF3, 0x7C, 0x17, 0xFF, 0x75, 0x14, + 0xFF, 0x75, 0x10, 0xFF, 0x15, 0xEC, 0x12, 0x01, 0x00, 0x8B, 0xF0, 0xFF, 0x75, 0x14, 0xFF, 0x15, + 0x14, 0x12, 0x01, 0x00, 0x8B, 0x4D, 0x08, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0x4D, 0x10, + 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0xE8, 0xFC, 0xC4, 0xFF, 0xFF, 0xC2, 0x14, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x83, 0xEC, 0x44, 0x56, 0x33, + 0xF6, 0x56, 0x8D, 0x45, 0x10, 0x50, 0xFF, 0x75, 0x10, 0xA1, 0xCC, 0x12, 0x01, 0x00, 0xFF, 0x30, + 0x56, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x3B, 0xC6, 0x7C, 0x6F, 0xFF, 0x15, + 0xC8, 0x12, 0x01, 0x00, 0x39, 0x45, 0x10, 0x74, 0x54, 0x8B, 0x45, 0x0C, 0x56, 0x89, 0x45, 0xFC, + 0x56, 0x8D, 0x45, 0xEC, 0x50, 0xFF, 0x15, 0x00, 0x13, 0x01, 0x00, 0x56, 0x56, 0x56, 0x56, 0x68, + 0x06, 0x45, 0x01, 0x00, 0x56, 0xFF, 0x75, 0x10, 0x8D, 0x45, 0xBC, 0x50, 0xFF, 0x15, 0xFC, 0x12, + 0x01, 0x00, 0x6A, 0x02, 0x56, 0x8D, 0x45, 0xBC, 0x50, 0x50, 0xFF, 0x15, 0xF8, 0x12, 0x01, 0x00, + 0x84, 0xC0, 0x74, 0x12, 0x56, 0x56, 0x56, 0x56, 0x8D, 0x45, 0xEC, 0x50, 0xFF, 0x15, 0xF4, 0x12, + 0x01, 0x00, 0x8B, 0xF0, 0xEB, 0x0C, 0xBE, 0x01, 0x00, 0x00, 0xC0, 0xEB, 0x05, 0xBE, 0xDB, 0x00, + 0x00, 0xC0, 0x8B, 0x4D, 0x10, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0x5E, 0xC9, 0xC2, + 0x0C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x74, 0x68, 0xD8, 0x17, 0x01, 0x00, 0xE8, + 0x00, 0xC4, 0xFF, 0xFF, 0x33, 0xDB, 0x89, 0x5D, 0xE4, 0x8B, 0x75, 0x10, 0x83, 0xFE, 0x40, 0x76, + 0x0A, 0xB8, 0xF1, 0x00, 0x00, 0xC0, 0xE9, 0x37, 0x02, 0x00, 0x00, 0x8B, 0xC6, 0xC1, 0xE0, 0x02, + 0x38, 0x5D, 0x20, 0x74, 0x5A, 0x89, 0x5D, 0xFC, 0x6A, 0x04, 0x5F, 0x57, 0x50, 0xFF, 0x75, 0x14, + 0x8B, 0x35, 0x2C, 0x12, 0x01, 0x00, 0xFF, 0xD6, 0x39, 0x5D, 0x18, 0x74, 0x07, 0x57, 0x57, 0xFF, + 0x75, 0x18, 0xFF, 0xD6, 0x8B, 0x4D, 0x1C, 0x3B, 0xCB, 0x74, 0x08, 0x57, 0x57, 0x51, 0xFF, 0xD6, + 0x8B, 0x4D, 0x1C, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x75, 0x10, 0xEB, 0x23, 0x8B, + 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, + 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE0, 0xE9, 0xD3, 0x01, 0x00, 0x00, 0x8B, + 0x4D, 0x1C, 0x8B, 0xC6, 0xC1, 0xE0, 0x02, 0x3B, 0xC3, 0x75, 0x58, 0x38, 0x5D, 0x20, 0x74, 0x3B, + 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x8B, 0x45, 0x18, 0x3B, 0xC3, 0x74, 0x02, 0x89, 0x18, + 0x3B, 0xCB, 0x74, 0x1B, 0x89, 0x19, 0xEB, 0x17, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, + 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x45, 0xDC, 0x89, 0x45, 0xE4, 0xC7, + 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xE9, 0x84, 0x01, 0x00, 0x00, 0x8B, 0x45, 0x18, 0x3B, 0xC3, + 0x74, 0x02, 0x89, 0x18, 0x3B, 0xCB, 0x0F, 0x84, 0x73, 0x01, 0x00, 0x00, 0x89, 0x19, 0xE9, 0x6C, + 0x01, 0x00, 0x00, 0x68, 0x4B, 0x70, 0x68, 0x62, 0x50, 0x53, 0xFF, 0x15, 0x20, 0x12, 0x01, 0x00, + 0x8B, 0xF8, 0x89, 0x7D, 0xD4, 0x3B, 0xFB, 0x75, 0x0A, 0xB8, 0x9A, 0x00, 0x00, 0xC0, 0xE9, 0x4F, + 0x01, 0x00, 0x00, 0x8B, 0x45, 0x0C, 0x89, 0x45, 0xC0, 0x89, 0x75, 0xC4, 0x89, 0x7D, 0xC8, 0xFF, + 0x15, 0xC8, 0x12, 0x01, 0x00, 0x39, 0x45, 0x08, 0x75, 0x39, 0x8D, 0x85, 0x7C, 0xFF, 0xFF, 0xFF, + 0x89, 0x45, 0x08, 0xC6, 0x85, 0x7C, 0xFF, 0xFF, 0xFF, 0x01, 0xB1, 0x01, 0xFF, 0x15, 0x04, 0x12, + 0x01, 0x00, 0x88, 0x45, 0x13, 0x8D, 0x45, 0x20, 0x50, 0x8D, 0x45, 0x08, 0x50, 0x53, 0x53, 0x8D, + 0x45, 0x80, 0x50, 0xE8, 0x3A, 0xFA, 0xFF, 0xFF, 0x8A, 0x4D, 0x13, 0xFF, 0x15, 0x00, 0x12, 0x01, + 0x00, 0xEB, 0x5B, 0x88, 0x9D, 0x7C, 0xFF, 0xFF, 0xFF, 0x53, 0x53, 0x8D, 0x45, 0xB0, 0x50, 0xFF, + 0x15, 0x00, 0x13, 0x01, 0x00, 0x53, 0x53, 0x53, 0x53, 0x68, 0xD2, 0x45, 0x01, 0x00, 0x53, 0xFF, + 0x75, 0x08, 0x8D, 0x45, 0x80, 0x50, 0xFF, 0x15, 0xFC, 0x12, 0x01, 0x00, 0x6A, 0x02, 0x53, 0x8D, + 0x85, 0x7C, 0xFF, 0xFF, 0xFF, 0x50, 0x8D, 0x45, 0x80, 0x50, 0xFF, 0x15, 0xF8, 0x12, 0x01, 0x00, + 0x84, 0xC0, 0x74, 0x13, 0x53, 0x53, 0x53, 0x53, 0x8D, 0x45, 0xB0, 0x50, 0xFF, 0x15, 0xF4, 0x12, + 0x01, 0x00, 0x89, 0x45, 0xE4, 0xEB, 0x07, 0xC7, 0x45, 0xE4, 0x01, 0x00, 0x00, 0xC0, 0x39, 0x5D, + 0xE4, 0x0F, 0x8C, 0x8C, 0x00, 0x00, 0x00, 0x38, 0x5D, 0x20, 0x74, 0x5D, 0xC7, 0x45, 0xFC, 0x02, + 0x00, 0x00, 0x00, 0x8B, 0x75, 0xCC, 0x8B, 0xC6, 0xC1, 0xE0, 0x02, 0x50, 0x57, 0xFF, 0x75, 0x14, + 0xE8, 0x17, 0xC2, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, 0x8B, 0x45, 0x18, 0x3B, 0xC3, 0x74, 0x02, 0x89, + 0x30, 0x8B, 0x45, 0x1C, 0x3B, 0xC3, 0x74, 0x05, 0x8B, 0x4D, 0xD0, 0x89, 0x08, 0xC7, 0x45, 0xFC, + 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x4D, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xD8, + 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0x8B, 0x45, 0xD8, 0x89, 0x45, 0xE4, 0xC7, 0x45, 0xFC, + 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x7D, 0xD4, 0xEB, 0x2A, 0x8B, 0x75, 0xCC, 0x8B, 0xC6, 0xC1, 0xE0, + 0x02, 0x50, 0x57, 0xFF, 0x75, 0x14, 0xE8, 0xC1, 0xC1, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, 0x8B, 0x45, + 0x18, 0x3B, 0xC3, 0x74, 0x02, 0x89, 0x30, 0x8B, 0x45, 0x1C, 0x3B, 0xC3, 0x74, 0x05, 0x8B, 0x4D, + 0xD0, 0x89, 0x08, 0x68, 0x4B, 0x70, 0x68, 0x62, 0x57, 0xFF, 0x15, 0x18, 0x12, 0x01, 0x00, 0x8B, + 0x45, 0xE4, 0xE8, 0xF2, 0xC1, 0xFF, 0xFF, 0xC2, 0x1C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x8B, 0xFF, 0x55, 0x8B, 0xEC, 0x6A, 0x00, 0x8D, 0x45, 0x08, 0x50, 0xFF, 0x75, 0x20, 0xA1, 0xCC, + 0x12, 0x01, 0x00, 0xFF, 0x30, 0x6A, 0x00, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, + 0x85, 0xC0, 0x7C, 0x29, 0x56, 0xFF, 0x75, 0x20, 0xFF, 0x75, 0x1C, 0xFF, 0x75, 0x18, 0xFF, 0x75, + 0x14, 0xFF, 0x75, 0x10, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x08, 0xE8, 0x59, 0xFD, 0xFF, 0xFF, 0x8B, + 0x4D, 0x08, 0x8B, 0xF0, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0xC6, 0x5E, 0x5D, 0xC2, 0x1C, + 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x68, 0xBC, 0x02, 0x00, 0x00, 0x68, 0x10, 0x18, 0x01, 0x00, + 0xE8, 0x07, 0xC3, 0xFF, 0xFF, 0x8B, 0x45, 0x08, 0x89, 0x85, 0xAC, 0xFD, 0xFF, 0xFF, 0x8B, 0x4D, + 0x0C, 0x89, 0x8D, 0xA8, 0xFD, 0xFF, 0xFF, 0x8B, 0x45, 0x10, 0x89, 0x85, 0xB0, 0xFD, 0xFF, 0xFF, + 0x8B, 0x45, 0x14, 0x89, 0x85, 0xB8, 0xFD, 0xFF, 0xFF, 0x8B, 0x55, 0x20, 0x89, 0x95, 0xC0, 0xFD, + 0xFF, 0xFF, 0x8D, 0xB5, 0x34, 0xFD, 0xFF, 0xFF, 0x89, 0xB5, 0xBC, 0xFD, 0xFF, 0xFF, 0x33, 0xDB, + 0x88, 0x9D, 0xE3, 0xFD, 0xFF, 0xFF, 0x88, 0x9D, 0xE1, 0xFD, 0xFF, 0xFF, 0x89, 0x8D, 0xD0, 0xFD, + 0xFF, 0xFF, 0x89, 0x85, 0xC4, 0xFD, 0xFF, 0xFF, 0x8D, 0x8D, 0xE4, 0xFD, 0xFF, 0xFF, 0x89, 0x8D, + 0xD8, 0xFD, 0xFF, 0xFF, 0xB8, 0x00, 0xC0, 0x00, 0x00, 0x8B, 0x55, 0x18, 0x3B, 0xD0, 0x73, 0x02, + 0x8B, 0xC2, 0x89, 0x95, 0xCC, 0xFD, 0xFF, 0xFF, 0x8B, 0xF8, 0x39, 0x9D, 0xCC, 0xFD, 0xFF, 0xFF, + 0x0F, 0x84, 0x19, 0x03, 0x00, 0x00, 0x3B, 0xBD, 0xCC, 0xFD, 0xFF, 0xFF, 0x76, 0x06, 0x8B, 0xBD, + 0xCC, 0xFD, 0xFF, 0xFF, 0x81, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x76, 0x09, 0xC6, 0x85, 0xE2, 0xFD, + 0xFF, 0xFF, 0x01, 0xEB, 0x34, 0x88, 0x9D, 0xE2, 0xFD, 0xFF, 0xFF, 0x8D, 0x85, 0xE4, 0xFD, 0xFF, + 0xFF, 0x81, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x0F, 0x87, 0x02, 0x01, 0x00, 0x00, 0x3B, 0xC8, 0x74, + 0x0C, 0x68, 0x4B, 0x70, 0x68, 0x43, 0x51, 0xFF, 0x15, 0x18, 0x12, 0x01, 0x00, 0x8D, 0x85, 0xE4, + 0xFD, 0xFF, 0xFF, 0x89, 0x85, 0xD8, 0xFD, 0xFF, 0xFF, 0x89, 0x9D, 0xC8, 0xFD, 0xFF, 0xFF, 0x88, + 0x9D, 0xE0, 0xFD, 0xFF, 0xFF, 0x88, 0x9D, 0xDF, 0xFD, 0xFF, 0xFF, 0x8D, 0x85, 0x8C, 0xFD, 0xFF, + 0xFF, 0x50, 0xFF, 0xB5, 0xAC, 0xFD, 0xFF, 0xFF, 0xFF, 0x15, 0x64, 0x12, 0x01, 0x00, 0x89, 0x5D, + 0xFC, 0x8B, 0x85, 0xD0, 0xFD, 0xFF, 0xFF, 0x3B, 0x85, 0xA8, 0xFD, 0xFF, 0xFF, 0x75, 0x24, 0x38, + 0x5D, 0x1C, 0x74, 0x1F, 0xC6, 0x85, 0xE3, 0xFD, 0xFF, 0xFF, 0x01, 0x6A, 0x01, 0xFF, 0x75, 0x18, + 0x50, 0xFF, 0x15, 0x38, 0x12, 0x01, 0x00, 0x88, 0x9D, 0xE3, 0xFD, 0xFF, 0xFF, 0x8B, 0x85, 0xD0, + 0xFD, 0xFF, 0xFF, 0x38, 0x9D, 0xE2, 0xFD, 0xFF, 0xFF, 0x0F, 0x84, 0xB4, 0x00, 0x00, 0x00, 0x89, + 0x1E, 0xB9, 0xFF, 0x0F, 0x00, 0x00, 0x23, 0xC1, 0x8B, 0xD7, 0x23, 0xD1, 0x8D, 0x8C, 0x02, 0xFF, + 0x0F, 0x00, 0x00, 0xC1, 0xE9, 0x0C, 0x8B, 0xD7, 0xC1, 0xEA, 0x0C, 0x03, 0xCA, 0x8D, 0x0C, 0x8D, + 0x1C, 0x00, 0x00, 0x00, 0x66, 0x89, 0x4E, 0x04, 0x33, 0xC9, 0x66, 0x89, 0x4E, 0x06, 0x8B, 0x8D, + 0xD0, 0xFD, 0xFF, 0xFF, 0x81, 0xE1, 0x00, 0xF0, 0xFF, 0xFF, 0x89, 0x4E, 0x10, 0x89, 0x46, 0x18, + 0x89, 0x7E, 0x14, 0x53, 0xFF, 0x75, 0x1C, 0x56, 0xFF, 0x15, 0x14, 0x13, 0x01, 0x00, 0xC6, 0x85, + 0xE0, 0xFD, 0xFF, 0xFF, 0x01, 0x6A, 0x20, 0x53, 0x53, 0x6A, 0x01, 0x53, 0x56, 0xFF, 0x15, 0x10, + 0x13, 0x01, 0x00, 0x89, 0x85, 0xC8, 0xFD, 0xFF, 0xFF, 0x3B, 0xC3, 0x75, 0x56, 0xC6, 0x85, 0xE1, + 0xFD, 0xFF, 0xFF, 0x01, 0x68, 0x9A, 0x00, 0x00, 0xC0, 0xFF, 0x15, 0x0C, 0x13, 0x01, 0x00, 0x3B, + 0xC8, 0x0F, 0x85, 0x12, 0xFF, 0xFF, 0xFF, 0xEB, 0x0E, 0xD1, 0xEF, 0x81, 0xFF, 0x00, 0x02, 0x00, + 0x00, 0x0F, 0x86, 0xF6, 0xFE, 0xFF, 0xFF, 0x68, 0x4B, 0x70, 0x68, 0x43, 0x57, 0x53, 0xFF, 0x15, + 0x20, 0x12, 0x01, 0x00, 0x3B, 0xC3, 0x89, 0x85, 0xD8, 0xFD, 0xFF, 0xFF, 0x74, 0xDB, 0xE9, 0xE6, + 0xFE, 0xFF, 0xFF, 0x57, 0x50, 0xFF, 0xB5, 0xD8, 0xFD, 0xFF, 0xFF, 0xE8, 0x2C, 0xBF, 0xFF, 0xFF, + 0x83, 0xC4, 0x0C, 0x8D, 0x85, 0x8C, 0xFD, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, + 0x8D, 0x85, 0x8C, 0xFD, 0xFF, 0xFF, 0x50, 0xFF, 0xB5, 0xB0, 0xFD, 0xFF, 0xFF, 0xFF, 0x15, 0x64, + 0x12, 0x01, 0x00, 0x8B, 0x85, 0xC4, 0xFD, 0xFF, 0xFF, 0x3B, 0x85, 0xB8, 0xFD, 0xFF, 0xFF, 0x75, + 0x24, 0x38, 0x5D, 0x1C, 0x74, 0x1F, 0xC6, 0x85, 0xE3, 0xFD, 0xFF, 0xFF, 0x01, 0x6A, 0x01, 0xFF, + 0x75, 0x18, 0x50, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, 0x88, 0x9D, 0xE3, 0xFD, 0xFF, 0xFF, 0x8B, + 0x85, 0xC4, 0xFD, 0xFF, 0xFF, 0xC6, 0x85, 0xDF, 0xFD, 0xFF, 0xFF, 0x01, 0x57, 0x38, 0x9D, 0xE2, + 0xFD, 0xFF, 0xFF, 0x74, 0x08, 0xFF, 0xB5, 0xC8, 0xFD, 0xFF, 0xFF, 0xEB, 0x06, 0xFF, 0xB5, 0xD8, + 0xFD, 0xFF, 0xFF, 0x50, 0xE8, 0xB3, 0xBE, 0xFF, 0xFF, 0x83, 0xC4, 0x0C, 0xC7, 0x45, 0xFC, 0xFE, + 0xFF, 0xFF, 0xFF, 0x8D, 0x85, 0x8C, 0xFD, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, + 0x38, 0x9D, 0xE2, 0xFD, 0xFF, 0xFF, 0x74, 0x14, 0x56, 0xFF, 0xB5, 0xC8, 0xFD, 0xFF, 0xFF, 0xFF, + 0x15, 0x08, 0x13, 0x01, 0x00, 0x56, 0xFF, 0x15, 0x04, 0x13, 0x01, 0x00, 0x29, 0xBD, 0xCC, 0xFD, + 0xFF, 0xFF, 0x01, 0xBD, 0xD0, 0xFD, 0xFF, 0xFF, 0x01, 0xBD, 0xC4, 0xFD, 0xFF, 0xFF, 0x8B, 0x8D, + 0xD8, 0xFD, 0xFF, 0xFF, 0xE9, 0xB1, 0xFD, 0xFF, 0xFF, 0x8B, 0x45, 0xEC, 0x8B, 0x08, 0x8B, 0x09, + 0x89, 0x8D, 0xB4, 0xFD, 0xFF, 0xFF, 0x8D, 0x8D, 0xA4, 0xFD, 0xFF, 0xFF, 0x51, 0x8D, 0x8D, 0xD7, + 0xFD, 0xFF, 0xFF, 0x51, 0x50, 0xE8, 0xBA, 0xBD, 0xFF, 0xFF, 0xC3, 0x8B, 0x65, 0xE8, 0x8D, 0x85, + 0x8C, 0xFD, 0xFF, 0xFF, 0x50, 0xFF, 0x15, 0x5C, 0x12, 0x01, 0x00, 0x33, 0xDB, 0x39, 0x9D, 0xC8, + 0xFD, 0xFF, 0xFF, 0x74, 0x12, 0xFF, 0xB5, 0xBC, 0xFD, 0xFF, 0xFF, 0xFF, 0xB5, 0xC8, 0xFD, 0xFF, + 0xFF, 0xFF, 0x15, 0x08, 0x13, 0x01, 0x00, 0x38, 0x9D, 0xE0, 0xFD, 0xFF, 0xFF, 0x74, 0x0C, 0xFF, + 0xB5, 0xBC, 0xFD, 0xFF, 0xFF, 0xFF, 0x15, 0x04, 0x13, 0x01, 0x00, 0x8D, 0x85, 0xE4, 0xFD, 0xFF, + 0xFF, 0x39, 0x85, 0xD8, 0xFD, 0xFF, 0xFF, 0x74, 0x11, 0x68, 0x4B, 0x70, 0x68, 0x43, 0xFF, 0xB5, + 0xD8, 0xFD, 0xFF, 0xFF, 0xFF, 0x15, 0x18, 0x12, 0x01, 0x00, 0x38, 0x9D, 0xE3, 0xFD, 0xFF, 0xFF, + 0x75, 0x3E, 0x38, 0x9D, 0xE1, 0xFD, 0xFF, 0xFF, 0x75, 0x36, 0x38, 0x9D, 0xDF, 0xFD, 0xFF, 0xFF, + 0x74, 0x16, 0x38, 0x9D, 0xD7, 0xFD, 0xFF, 0xFF, 0x74, 0x0E, 0x8B, 0x85, 0xA4, 0xFD, 0xFF, 0xFF, + 0x2B, 0x85, 0xD0, 0xFD, 0xFF, 0xFF, 0xEB, 0x09, 0x8B, 0x45, 0x18, 0x2B, 0x85, 0xCC, 0xFD, 0xFF, + 0xFF, 0x8B, 0x8D, 0xC0, 0xFD, 0xFF, 0xFF, 0x89, 0x01, 0xB8, 0x0D, 0x00, 0x00, 0x80, 0xEB, 0x06, + 0x8B, 0x85, 0xB4, 0xFD, 0xFF, 0xFF, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x23, 0x8D, + 0x85, 0xE4, 0xFD, 0xFF, 0xFF, 0x3B, 0xC8, 0x74, 0x0C, 0x68, 0x4B, 0x70, 0x68, 0x43, 0x51, 0xFF, + 0x15, 0x18, 0x12, 0x01, 0x00, 0x8B, 0x45, 0x18, 0x8B, 0x8D, 0xC0, 0xFD, 0xFF, 0xFF, 0x89, 0x01, + 0x33, 0xC0, 0xE8, 0x8D, 0xBF, 0xFF, 0xFF, 0xC2, 0x1C, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x6A, 0x0C, 0x68, 0x30, 0x18, 0x01, 0x00, 0xE8, 0x68, 0xBD, 0xFF, 0xFF, 0x8B, 0x5D, 0x1C, 0x8B, + 0x75, 0x14, 0x84, 0xDB, 0x74, 0x6A, 0x8B, 0x45, 0x0C, 0x8D, 0x0C, 0x30, 0x3B, 0xC8, 0x72, 0x59, + 0x8B, 0x55, 0x10, 0x8D, 0x04, 0x32, 0x3B, 0xC2, 0x72, 0x4F, 0x8B, 0x15, 0x18, 0x13, 0x01, 0x00, + 0x8B, 0x12, 0x3B, 0xCA, 0x77, 0x43, 0x3B, 0xC2, 0x77, 0x3F, 0x8B, 0x7D, 0x18, 0x85, 0xFF, 0x74, + 0x42, 0x83, 0x65, 0xFC, 0x00, 0x6A, 0x04, 0x6A, 0x04, 0x57, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, + 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x2A, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, + 0x89, 0x45, 0xE4, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, + 0xFF, 0x8B, 0x45, 0xE4, 0xE9, 0x86, 0x00, 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0xC0, 0xEB, 0x7F, + 0x8B, 0x7D, 0x18, 0x33, 0xC0, 0x3B, 0xF0, 0x74, 0x5C, 0x50, 0x8D, 0x4D, 0x14, 0x51, 0x53, 0x8B, + 0x0D, 0x54, 0x12, 0x01, 0x00, 0xFF, 0x31, 0x50, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, + 0x00, 0x89, 0x45, 0x18, 0x85, 0xC0, 0x7C, 0x27, 0x8D, 0x45, 0x10, 0x50, 0x53, 0x56, 0xFF, 0x75, + 0x10, 0xFF, 0x15, 0x74, 0x12, 0x01, 0x00, 0x50, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x14, 0xE8, 0x63, + 0xFB, 0xFF, 0xFF, 0x89, 0x45, 0x18, 0x8B, 0x4D, 0x14, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, + 0x45, 0x10, 0x85, 0xFF, 0x74, 0x26, 0x84, 0xDB, 0x74, 0x20, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, + 0x00, 0x89, 0x07, 0xEB, 0x0C, 0x89, 0x45, 0x18, 0xEB, 0xE8, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, + 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x02, 0x89, 0x07, 0x8B, 0x45, 0x18, 0xE8, + 0xB5, 0xBC, 0xFF, 0xFF, 0xC2, 0x18, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x0C, 0x68, 0x58, + 0x18, 0x01, 0x00, 0xE8, 0x5C, 0xBC, 0xFF, 0xFF, 0x8B, 0x5D, 0x1C, 0x8B, 0x75, 0x14, 0x84, 0xDB, + 0x74, 0x6A, 0x8B, 0x45, 0x0C, 0x8D, 0x0C, 0x30, 0x3B, 0xC8, 0x72, 0x59, 0x8B, 0x55, 0x10, 0x8D, + 0x04, 0x32, 0x3B, 0xC2, 0x72, 0x4F, 0x8B, 0x15, 0x18, 0x13, 0x01, 0x00, 0x8B, 0x12, 0x3B, 0xCA, + 0x77, 0x43, 0x3B, 0xC2, 0x77, 0x3F, 0x8B, 0x7D, 0x18, 0x85, 0xFF, 0x74, 0x42, 0x83, 0x65, 0xFC, + 0x00, 0x6A, 0x04, 0x6A, 0x04, 0x57, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, 0xC7, 0x45, 0xFC, 0xFE, + 0xFF, 0xFF, 0xFF, 0xEB, 0x2A, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE4, 0x33, + 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x8B, 0x45, 0xE4, + 0xE9, 0x86, 0x00, 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0xC0, 0xEB, 0x7F, 0x8B, 0x7D, 0x18, 0x33, + 0xC0, 0x3B, 0xF0, 0x74, 0x5C, 0x50, 0x8D, 0x4D, 0x14, 0x51, 0x53, 0x8B, 0x0D, 0x54, 0x12, 0x01, + 0x00, 0xFF, 0x31, 0x50, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x89, 0x45, 0x18, + 0x85, 0xC0, 0x7C, 0x27, 0x8D, 0x45, 0x0C, 0x50, 0x53, 0x56, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x14, + 0xFF, 0x75, 0x10, 0xFF, 0x15, 0x74, 0x12, 0x01, 0x00, 0x50, 0xE8, 0x57, 0xFA, 0xFF, 0xFF, 0x89, + 0x45, 0x18, 0x8B, 0x4D, 0x14, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0x45, 0x0C, 0x85, 0xFF, + 0x74, 0x26, 0x84, 0xDB, 0x74, 0x20, 0xC7, 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x89, 0x07, 0xEB, + 0x0C, 0x89, 0x45, 0x18, 0xEB, 0xE8, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, + 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x02, 0x89, 0x07, 0x8B, 0x45, 0x18, 0xE8, 0xA9, 0xBB, 0xFF, 0xFF, + 0xC2, 0x18, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x6A, 0x18, 0x68, 0x80, 0x18, 0x01, 0x00, 0xE8, + 0x50, 0xBB, 0xFF, 0xFF, 0x8B, 0x5D, 0x14, 0x80, 0x7D, 0x1C, 0x00, 0x74, 0x48, 0x8B, 0x45, 0x0C, + 0x8D, 0x0C, 0x18, 0x3B, 0xC8, 0x0F, 0x82, 0xA5, 0x00, 0x00, 0x00, 0x8B, 0x4D, 0x10, 0x8D, 0x04, + 0x19, 0x3B, 0xC1, 0x0F, 0x82, 0x97, 0x00, 0x00, 0x00, 0x8B, 0x0D, 0x18, 0x13, 0x01, 0x00, 0x3B, + 0x01, 0x0F, 0x87, 0x89, 0x00, 0x00, 0x00, 0x83, 0x7D, 0x18, 0x00, 0x74, 0x18, 0x83, 0x65, 0xFC, + 0x00, 0x6A, 0x04, 0x6A, 0x04, 0xFF, 0x75, 0x18, 0xFF, 0x15, 0x2C, 0x12, 0x01, 0x00, 0xC7, 0x45, + 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x33, 0xC0, 0x3B, 0xD8, 0x0F, 0x84, 0x08, 0x01, 0x00, 0x00, 0x8B, + 0x7D, 0x0C, 0x8D, 0x0C, 0x1F, 0x8B, 0x15, 0x18, 0x13, 0x01, 0x00, 0x3B, 0x0A, 0x0F, 0x86, 0x91, + 0x00, 0x00, 0x00, 0xB8, 0x00, 0xF0, 0xFF, 0xFF, 0x23, 0xF8, 0x8D, 0x71, 0xFF, 0x23, 0xF0, 0xC7, + 0x45, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x3B, 0xFE, 0x77, 0x4B, 0x57, 0xFF, 0x15, 0x1C, 0x13, 0x01, + 0x00, 0x84, 0xC0, 0x75, 0x35, 0x68, 0x05, 0x00, 0x00, 0xC0, 0xFF, 0x15, 0x0C, 0x13, 0x01, 0x00, + 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xE0, 0x33, 0xC0, 0x40, 0xC3, 0x8B, 0x45, + 0xE0, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xE9, 0xC3, 0x00, 0x00, 0x00, + 0xB8, 0x05, 0x00, 0x00, 0xC0, 0xE9, 0xB9, 0x00, 0x00, 0x00, 0x81, 0xC7, 0x00, 0x10, 0x00, 0x00, + 0x89, 0x7D, 0xD8, 0xEB, 0xB1, 0x53, 0xFF, 0x75, 0x0C, 0xFF, 0x75, 0x10, 0xE8, 0x5B, 0xBA, 0xFF, + 0xFF, 0x83, 0xC4, 0x0C, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0x83, 0x65, 0x14, 0x00, 0xEB, + 0x5E, 0x8B, 0x45, 0xEC, 0x8B, 0x00, 0x8B, 0x00, 0x89, 0x45, 0xDC, 0x33, 0xC0, 0x40, 0xC3, 0x8B, + 0x45, 0xDC, 0xEB, 0xAD, 0x50, 0x8D, 0x4D, 0xE4, 0x51, 0xFF, 0x75, 0x1C, 0x8B, 0x0D, 0x54, 0x12, + 0x01, 0x00, 0xFF, 0x31, 0x50, 0xFF, 0x75, 0x08, 0xFF, 0x15, 0x50, 0x12, 0x01, 0x00, 0x89, 0x45, + 0x14, 0x85, 0xC0, 0x7C, 0x27, 0x8D, 0x45, 0x0C, 0x50, 0xFF, 0x75, 0x1C, 0x53, 0xFF, 0x75, 0x10, + 0xFF, 0x15, 0x74, 0x12, 0x01, 0x00, 0x50, 0x57, 0xFF, 0x75, 0xE4, 0xE8, 0xC6, 0xF8, 0xFF, 0xFF, + 0x89, 0x45, 0x14, 0x8B, 0x4D, 0xE4, 0xFF, 0x15, 0x4C, 0x12, 0x01, 0x00, 0x8B, 0x5D, 0x0C, 0x8B, + 0x45, 0x18, 0x85, 0xC0, 0x74, 0x2A, 0x80, 0x7D, 0x1C, 0x00, 0x74, 0x22, 0xC7, 0x45, 0xFC, 0x02, + 0x00, 0x00, 0x00, 0x89, 0x18, 0xEB, 0x0E, 0x33, 0xDB, 0x89, 0x45, 0x14, 0xEB, 0xE1, 0x33, 0xC0, + 0x40, 0xC3, 0x8B, 0x65, 0xE8, 0xC7, 0x45, 0xFC, 0xFE, 0xFF, 0xFF, 0xFF, 0xEB, 0x02, 0x89, 0x18, + 0x8B, 0x45, 0x14, 0xE8, 0x11, 0xBA, 0xFF, 0xFF, 0xC2, 0x18, 0x00, 0xCC, 0x44, 0x00, 0x69, 0x00, + 0x73, 0x00, 0x61, 0x00, 0x62, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x44, 0x00, 0x79, 0x00, 0x6E, 0x00, + 0x61, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x75, 0x00, 0x72, 0x00, 0x65, 0x00, 0x53, 0x00, 0x63, 0x00, 0x61, 0x00, + 0x6E, 0x00, 0x00, 0x00, 0x53, 0x00, 0x65, 0x00, 0x63, 0x00, 0x75, 0x00, 0x72, 0x00, 0x69, 0x00, + 0x74, 0x00, 0x79, 0x00, 0x4C, 0x00, 0x65, 0x00, 0x76, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x00, 0x00, + 0x5C, 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x61, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x74, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x00, 0x00, 0x5C, 0x00, 0x44, 0x00, 0x65, 0x00, 0x76, 0x00, + 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x5C, 0x00, 0x4B, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x48, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6B, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x32, 0x00, 0x00, 0x00, 0x49, 0x00, 0x6F, 0x00, 0x53, 0x00, 0x65, 0x00, + 0x74, 0x00, 0x49, 0x00, 0x6F, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x6D, 0x00, 0x70, 0x00, 0x6C, 0x00, + 0x65, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x52, 0x00, 0x74, 0x00, + 0x6C, 0x00, 0x4D, 0x00, 0x61, 0x00, 0x70, 0x00, 0x47, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x69, 0x00, 0x63, 0x00, 0x4D, 0x00, 0x61, 0x00, 0x73, 0x00, 0x6B, 0x00, 0x00, 0x00, + 0x4C, 0x00, 0x73, 0x00, 0x61, 0x00, 0x46, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x52, 0x00, + 0x65, 0x00, 0x74, 0x00, 0x75, 0x00, 0x72, 0x00, 0x6E, 0x00, 0x42, 0x00, 0x75, 0x00, 0x66, 0x00, + 0x66, 0x00, 0x65, 0x00, 0x72, 0x00, 0x00, 0x00, 0x52, 0x00, 0x74, 0x00, 0x6C, 0x00, 0x43, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x48, 0x00, 0x65, 0x00, 0x61, 0x00, + 0x70, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x74, 0x00, 0x43, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x73, 0x00, + 0x65, 0x00, 0x00, 0x00, 0x44, 0x00, 0x79, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6D, 0x00, 0x69, 0x00, + 0x63, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x69, 0x00, 0x67, 0x00, 0x75, 0x00, + 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x50, 0x00, + 0x73, 0x00, 0x53, 0x00, 0x75, 0x00, 0x73, 0x00, 0x70, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x64, 0x00, + 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x73, 0x00, 0x52, 0x00, 0x65, 0x00, 0x73, 0x00, 0x75, 0x00, 0x6D, 0x00, 0x65, 0x00, + 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x73, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x61, 0x00, 0x73, 0x00, + 0x65, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x45, 0x00, 0x78, 0x00, 0x69, 0x00, 0x74, 0x00, 0x53, 0x00, 0x79, 0x00, 0x6E, 0x00, 0x63, 0x00, + 0x68, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x69, 0x00, 0x7A, 0x00, 0x61, 0x00, 0x74, 0x00, + 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x50, 0x00, 0x73, 0x00, 0x49, 0x00, 0x73, 0x00, + 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x74, 0x00, 0x65, 0x00, 0x63, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x64, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x00, 0x00, 0x50, 0x00, 0x73, 0x00, 0x41, 0x00, 0x63, 0x00, 0x71, 0x00, 0x75, 0x00, 0x69, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, + 0x73, 0x00, 0x45, 0x00, 0x78, 0x00, 0x69, 0x00, 0x74, 0x00, 0x53, 0x00, 0x79, 0x00, 0x6E, 0x00, + 0x63, 0x00, 0x68, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x69, 0x00, 0x7A, 0x00, 0x61, 0x00, + 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x4F, 0x00, 0x62, 0x00, 0x47, 0x00, + 0x65, 0x00, 0x74, 0x00, 0x4F, 0x00, 0x62, 0x00, 0x6A, 0x00, 0x65, 0x00, 0x63, 0x00, 0x74, 0x00, + 0x54, 0x00, 0x79, 0x00, 0x70, 0x00, 0x65, 0x00, 0x00, 0x00, 0x45, 0x00, 0x78, 0x00, 0x66, 0x00, + 0x55, 0x00, 0x6E, 0x00, 0x62, 0x00, 0x6C, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x6B, 0x00, 0x50, 0x00, + 0x75, 0x00, 0x73, 0x00, 0x68, 0x00, 0x4C, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x6B, 0x00, 0x00, 0x00, + 0x45, 0x00, 0x74, 0x00, 0x77, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x69, 0x00, 0x73, 0x00, + 0x74, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xA1, 0x10, 0x1A, 0x01, 0x00, 0xB9, 0x4E, 0xE6, 0x40, 0xBB, 0x85, + 0xC0, 0x74, 0x04, 0x3B, 0xC1, 0x75, 0x1A, 0xA1, 0x20, 0x13, 0x01, 0x00, 0x8B, 0x00, 0x35, 0x10, + 0x1A, 0x01, 0x00, 0xA3, 0x10, 0x1A, 0x01, 0x00, 0x75, 0x07, 0x8B, 0xC1, 0xA3, 0x10, 0x1A, 0x01, + 0x00, 0xF7, 0xD0, 0xA3, 0x14, 0x1A, 0x01, 0x00, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0xFF, + 0x55, 0x8B, 0xEC, 0xE8, 0xBD, 0xFF, 0xFF, 0xFF, 0x5D, 0xE9, 0x3A, 0xC6, 0xFF, 0xFF, 0xCC, 0xCC, + 0x18, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x5F, 0x00, 0x00, + 0x0C, 0x12, 0x00, 0x00, 0x0C, 0x58, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAE, 0x5F, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x92, 0x5F, 0x00, 0x00, + 0xA0, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x59, 0x00, 0x00, 0x9C, 0x59, 0x00, 0x00, + 0xAE, 0x59, 0x00, 0x00, 0xB8, 0x59, 0x00, 0x00, 0xCC, 0x59, 0x00, 0x00, 0xD8, 0x59, 0x00, 0x00, + 0xF0, 0x59, 0x00, 0x00, 0x08, 0x5A, 0x00, 0x00, 0x12, 0x5A, 0x00, 0x00, 0x22, 0x5A, 0x00, 0x00, + 0x3E, 0x5A, 0x00, 0x00, 0x50, 0x5A, 0x00, 0x00, 0x60, 0x5A, 0x00, 0x00, 0x74, 0x5A, 0x00, 0x00, + 0x84, 0x5A, 0x00, 0x00, 0xA0, 0x5A, 0x00, 0x00, 0xB4, 0x5A, 0x00, 0x00, 0xCC, 0x5A, 0x00, 0x00, + 0xE8, 0x5A, 0x00, 0x00, 0xF8, 0x5A, 0x00, 0x00, 0x0C, 0x5B, 0x00, 0x00, 0x26, 0x5B, 0x00, 0x00, + 0x3E, 0x5B, 0x00, 0x00, 0x56, 0x5B, 0x00, 0x00, 0x70, 0x5B, 0x00, 0x00, 0x88, 0x5B, 0x00, 0x00, + 0x98, 0x5B, 0x00, 0x00, 0xAE, 0x5B, 0x00, 0x00, 0xC4, 0x5B, 0x00, 0x00, 0xD8, 0x5B, 0x00, 0x00, + 0xEE, 0x5B, 0x00, 0x00, 0x06, 0x5C, 0x00, 0x00, 0x22, 0x5C, 0x00, 0x00, 0x3E, 0x5C, 0x00, 0x00, + 0x5C, 0x5C, 0x00, 0x00, 0x70, 0x59, 0x00, 0x00, 0x76, 0x5C, 0x00, 0x00, 0x94, 0x5C, 0x00, 0x00, + 0xB2, 0x5C, 0x00, 0x00, 0xCE, 0x5C, 0x00, 0x00, 0xE2, 0x5C, 0x00, 0x00, 0xFC, 0x5C, 0x00, 0x00, + 0x08, 0x5D, 0x00, 0x00, 0x1A, 0x5D, 0x00, 0x00, 0x30, 0x5D, 0x00, 0x00, 0x4E, 0x5D, 0x00, 0x00, + 0x6C, 0x5D, 0x00, 0x00, 0x86, 0x5D, 0x00, 0x00, 0x9C, 0x5D, 0x00, 0x00, 0xAC, 0x5D, 0x00, 0x00, + 0xC8, 0x5D, 0x00, 0x00, 0xDC, 0x5D, 0x00, 0x00, 0xEA, 0x5D, 0x00, 0x00, 0x00, 0x5E, 0x00, 0x00, + 0x16, 0x5E, 0x00, 0x00, 0x2A, 0x5E, 0x00, 0x00, 0x44, 0x5E, 0x00, 0x00, 0x62, 0x5E, 0x00, 0x00, + 0x7C, 0x5E, 0x00, 0x00, 0x94, 0x5E, 0x00, 0x00, 0xA8, 0x5E, 0x00, 0x00, 0xBA, 0x5E, 0x00, 0x00, + 0xCE, 0x5E, 0x00, 0x00, 0xDE, 0x5E, 0x00, 0x00, 0xF4, 0x5E, 0x00, 0x00, 0x04, 0x5F, 0x00, 0x00, + 0x24, 0x5F, 0x00, 0x00, 0x3A, 0x5F, 0x00, 0x00, 0x52, 0x5F, 0x00, 0x00, 0x66, 0x5F, 0x00, 0x00, + 0x74, 0x5F, 0x00, 0x00, 0x5A, 0x59, 0x00, 0x00, 0x6C, 0x5C, 0x00, 0x00, 0x48, 0x59, 0x00, 0x00, + 0xB6, 0x5F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4F, 0x01, 0x49, 0x6F, 0x44, 0x65, 0x6C, 0x65, + 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x00, 0x00, 0xE3, 0x01, 0x49, 0x6F, 0x66, 0x43, + 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x00, 0x00, + 0xD5, 0x04, 0x53, 0x65, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6C, 0x65, 0x67, 0x65, 0x43, 0x68, 0x65, + 0x63, 0x6B, 0x00, 0x00, 0x53, 0x03, 0x50, 0x73, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6E, 0x74, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x00, 0x51, 0x05, 0x5A, 0x77, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6C, 0x75, 0x65, 0x4B, 0x65, 0x79, 0x00, 0x0B, 0x05, + 0x5A, 0x77, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0x4E, 0x00, 0x45, 0x78, 0x46, 0x72, 0x65, 0x65, + 0x50, 0x6F, 0x6F, 0x6C, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x00, 0x31, 0x05, 0x5A, 0x77, + 0x4F, 0x70, 0x65, 0x6E, 0x4B, 0x65, 0x79, 0x00, 0x41, 0x00, 0x45, 0x78, 0x41, 0x6C, 0x6C, 0x6F, + 0x63, 0x61, 0x74, 0x65, 0x50, 0x6F, 0x6F, 0x6C, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x00, + 0x1D, 0x04, 0x52, 0x74, 0x6C, 0x49, 0x6E, 0x69, 0x74, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, + 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x00, 0xA7, 0x05, 0x6D, 0x65, 0x6D, 0x63, 0x70, 0x79, + 0x00, 0x00, 0x45, 0x03, 0x50, 0x72, 0x6F, 0x62, 0x65, 0x46, 0x6F, 0x72, 0x57, 0x72, 0x69, 0x74, + 0x65, 0x00, 0x50, 0x05, 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x79, 0x73, 0x74, 0x65, + 0x6D, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x3E, 0x01, + 0x49, 0x6F, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x00, 0x00, + 0x44, 0x03, 0x50, 0x72, 0x6F, 0x62, 0x65, 0x46, 0x6F, 0x72, 0x52, 0x65, 0x61, 0x64, 0x00, 0x00, + 0xBA, 0x03, 0x52, 0x74, 0x6C, 0x43, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x4D, 0x65, 0x6D, 0x6F, + 0x72, 0x79, 0x00, 0x00, 0x16, 0x04, 0x52, 0x74, 0x6C, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, + 0x69, 0x6F, 0x6E, 0x00, 0xA1, 0x02, 0x4D, 0x6D, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, + 0x6D, 0x52, 0x6F, 0x75, 0x74, 0x69, 0x6E, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x00, + 0x4A, 0x00, 0x45, 0x78, 0x45, 0x6E, 0x75, 0x6D, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x54, 0x61, + 0x62, 0x6C, 0x65, 0x00, 0x30, 0x03, 0x4F, 0x62, 0x66, 0x44, 0x65, 0x72, 0x65, 0x66, 0x65, 0x72, + 0x65, 0x6E, 0x63, 0x65, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00, 0x28, 0x03, 0x4F, 0x62, + 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x42, + 0x79, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x00, 0x80, 0x03, 0x50, 0x73, 0x50, 0x72, 0x6F, 0x63, + 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x00, 0x26, 0x03, 0x4F, 0x62, 0x51, 0x75, 0x65, 0x72, + 0x79, 0x4E, 0x61, 0x6D, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x67, 0x02, 0x4B, 0x65, + 0x55, 0x6E, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x50, 0x72, 0x6F, + 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, 0x2D, 0x03, 0x4F, 0x62, 0x53, 0x65, 0x74, 0x48, 0x61, 0x6E, + 0x64, 0x6C, 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x63, 0x02, + 0x4B, 0x65, 0x53, 0x74, 0x61, 0x63, 0x6B, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x50, 0x72, 0x6F, + 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, 0x77, 0x03, 0x50, 0x73, 0x49, 0x6E, 0x69, 0x74, 0x69, 0x61, + 0x6C, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, + 0x25, 0x03, 0x4F, 0x62, 0x4F, 0x70, 0x65, 0x6E, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x42, 0x79, + 0x50, 0x6F, 0x69, 0x6E, 0x74, 0x65, 0x72, 0x00, 0x19, 0x03, 0x4F, 0x62, 0x43, 0x6C, 0x6F, 0x73, + 0x65, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x00, 0x69, 0x01, 0x49, 0x6F, 0x47, 0x65, 0x74, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x24, 0x03, + 0x4F, 0x62, 0x4F, 0x70, 0x65, 0x6E, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x42, 0x79, 0x4E, 0x61, + 0x6D, 0x65, 0x00, 0x00, 0x5C, 0x01, 0x49, 0x6F, 0x46, 0x69, 0x6C, 0x65, 0x4F, 0x62, 0x6A, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x00, 0x00, 0x57, 0x01, 0x49, 0x6F, 0x44, 0x72, 0x69, 0x76, + 0x65, 0x72, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x00, 0x00, 0xEC, 0x03, + 0x52, 0x74, 0x6C, 0x45, 0x71, 0x75, 0x61, 0x6C, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x53, + 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x48, 0x05, 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, + 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x00, 0x00, 0x47, 0x05, 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6E, 0x66, 0x6F, 0x72, + 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x40, 0x00, + 0x45, 0x78, 0x41, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x50, 0x6F, 0x6F, 0x6C, 0x57, 0x69, + 0x74, 0x68, 0x51, 0x75, 0x6F, 0x74, 0x61, 0x54, 0x61, 0x67, 0x00, 0x00, 0x4C, 0x05, 0x5A, 0x77, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0xA9, 0x05, 0x6D, 0x65, + 0x6D, 0x73, 0x65, 0x74, 0x00, 0x00, 0x7D, 0x03, 0x50, 0x73, 0x4C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, + 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, + 0x49, 0x64, 0x00, 0x00, 0x7E, 0x03, 0x50, 0x73, 0x4C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x50, 0x72, + 0x6F, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x43, 0x69, 0x64, + 0x00, 0x00, 0x4E, 0x03, 0x50, 0x73, 0x44, 0x65, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, + 0x65, 0x50, 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0xE8, 0x04, + 0x53, 0x65, 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, + 0x65, 0x00, 0x82, 0x03, 0x50, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x50, + 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x7C, 0x03, 0x50, 0x73, + 0x4A, 0x6F, 0x62, 0x54, 0x79, 0x70, 0x65, 0x00, 0x65, 0x03, 0x50, 0x73, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x4A, 0x6F, 0x62, 0x00, 0x6C, 0x05, 0x5A, 0x77, 0x54, 0x65, + 0x72, 0x6D, 0x69, 0x6E, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, + 0x39, 0x00, 0x45, 0x78, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x52, 0x75, 0x6E, 0x64, 0x6F, + 0x77, 0x6E, 0x50, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x7C, 0x00, + 0x45, 0x78, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x52, 0x75, 0x6E, 0x64, 0x6F, 0x77, 0x6E, + 0x50, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x63, 0x05, 0x5A, 0x77, + 0x53, 0x65, 0x74, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x50, 0x72, + 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x07, 0x02, 0x4B, 0x65, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, + 0x72, 0x65, 0x6E, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, 0x99, 0x03, 0x50, 0x73, + 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x00, 0x00, 0x7F, 0x03, 0x50, 0x73, + 0x4C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x42, 0x79, 0x54, 0x68, + 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x00, 0x00, 0xC4, 0x01, 0x49, 0x6F, 0x54, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x54, 0x6F, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x56, 0x02, 0x4B, 0x65, + 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6E, 0x74, 0x00, 0x00, 0x51, 0x03, 0x50, 0x73, 0x47, 0x65, + 0x74, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, + 0x8B, 0x03, 0x50, 0x73, 0x53, 0x65, 0x74, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x54, 0x68, + 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, 0xB1, 0x04, 0x52, 0x74, 0x6C, 0x57, 0x61, 0x6C, 0x6B, 0x46, + 0x72, 0x61, 0x6D, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6E, 0x00, 0x74, 0x03, 0x50, 0x73, 0x47, 0x65, + 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x57, 0x69, 0x6E, 0x33, 0x32, 0x54, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x00, 0x00, 0x46, 0x03, 0x50, 0x73, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6E, 0x49, 0x6D, + 0x70, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x6F, 0x6B, 0x65, 0x6E, + 0x00, 0x00, 0x64, 0x05, 0x5A, 0x77, 0x53, 0x65, 0x74, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, + 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, 0x6D, 0x02, 0x4B, 0x65, + 0x57, 0x61, 0x69, 0x74, 0x46, 0x6F, 0x72, 0x53, 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x4F, 0x62, 0x6A, + 0x65, 0x63, 0x74, 0x00, 0x25, 0x02, 0x4B, 0x65, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x51, 0x75, + 0x65, 0x75, 0x65, 0x41, 0x70, 0x63, 0x00, 0x00, 0x15, 0x02, 0x4B, 0x65, 0x49, 0x6E, 0x69, 0x74, + 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x41, 0x70, 0x63, 0x00, 0x18, 0x02, 0x4B, 0x65, 0x49, 0x6E, + 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, 0x45, 0x76, 0x65, 0x6E, 0x74, 0x00, 0xCB, 0x02, + 0x4D, 0x6D, 0x55, 0x6E, 0x6C, 0x6F, 0x63, 0x6B, 0x50, 0x61, 0x67, 0x65, 0x73, 0x00, 0xCD, 0x02, + 0x4D, 0x6D, 0x55, 0x6E, 0x6D, 0x61, 0x70, 0x4C, 0x6F, 0x63, 0x6B, 0x65, 0x64, 0x50, 0x61, 0x67, + 0x65, 0x73, 0x00, 0x00, 0x75, 0x00, 0x45, 0x78, 0x52, 0x61, 0x69, 0x73, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x00, 0xB0, 0x02, 0x4D, 0x6D, 0x4D, 0x61, 0x70, 0x4C, 0x6F, 0x63, 0x6B, 0x65, + 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x79, 0x43, 0x61, 0x63, + 0x68, 0x65, 0x00, 0x00, 0xBC, 0x02, 0x4D, 0x6D, 0x50, 0x72, 0x6F, 0x62, 0x65, 0x41, 0x6E, 0x64, + 0x4C, 0x6F, 0x63, 0x6B, 0x50, 0x61, 0x67, 0x65, 0x73, 0x00, 0xA4, 0x02, 0x4D, 0x6D, 0x48, 0x69, + 0x67, 0x68, 0x65, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x00, 0x00, 0xA5, 0x02, 0x4D, 0x6D, 0x49, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x56, + 0x61, 0x6C, 0x69, 0x64, 0x00, 0x00, 0x66, 0x02, 0x4B, 0x65, 0x54, 0x69, 0x63, 0x6B, 0x43, 0x6F, + 0x75, 0x6E, 0x74, 0x00, 0xF6, 0x01, 0x4B, 0x65, 0x42, 0x75, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6B, + 0x45, 0x78, 0x00, 0x00, 0x6E, 0x74, 0x6F, 0x73, 0x6B, 0x72, 0x6E, 0x6C, 0x2E, 0x65, 0x78, 0x65, + 0x00, 0x00, 0x4D, 0x00, 0x4B, 0x66, 0x4C, 0x6F, 0x77, 0x65, 0x72, 0x49, 0x72, 0x71, 0x6C, 0x00, + 0x4E, 0x00, 0x4B, 0x66, 0x52, 0x61, 0x69, 0x73, 0x65, 0x49, 0x72, 0x71, 0x6C, 0x00, 0x48, 0x41, + 0x4C, 0x2E, 0x64, 0x6C, 0x6C, 0x00, 0xA0, 0x04, 0x52, 0x74, 0x6C, 0x55, 0x6E, 0x77, 0x69, 0x6E, + 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x09, 0x04, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x60, 0x60, 0x00, 0x00, 0x98, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x02, 0x34, 0x00, 0x00, 0x00, 0x56, 0x00, 0x53, 0x00, 0x5F, 0x00, 0x56, 0x00, 0x45, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x49, 0x00, 0x4F, 0x00, 0x4E, 0x00, 0x5F, 0x00, 0x49, 0x00, 0x4E, 0x00, + 0x46, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x04, 0xEF, 0xFE, 0x00, 0x00, 0x01, 0x00, + 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x53, 0x00, 0x74, 0x00, 0x72, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x46, 0x00, + 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x49, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x6F, 0x00, 0x00, 0x00, + 0xD4, 0x01, 0x00, 0x00, 0x01, 0x00, 0x30, 0x00, 0x34, 0x00, 0x30, 0x00, 0x39, 0x00, 0x30, 0x00, + 0x34, 0x00, 0x45, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x05, 0x00, 0x01, 0x00, 0x43, 0x00, + 0x6F, 0x00, 0x6D, 0x00, 0x70, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x79, 0x00, 0x4E, 0x00, 0x61, 0x00, + 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x6A, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6C, 0x00, + 0x65, 0x00, 0x44, 0x00, 0x65, 0x00, 0x73, 0x00, 0x63, 0x00, 0x72, 0x00, 0x69, 0x00, 0x70, 0x00, + 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x50, 0x00, + 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x48, 0x00, 0x61, 0x00, + 0x63, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, + 0x73, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x2E, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x64, 0x00, 0x20, 0x00, 0x01, 0x00, 0x4C, 0x00, 0x65, 0x00, 0x67, 0x00, + 0x61, 0x00, 0x6C, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, + 0x6E, 0x00, 0x73, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x75, 0x00, 0x6E, 0x00, 0x64, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x47, 0x00, + 0x4E, 0x00, 0x55, 0x00, 0x20, 0x00, 0x47, 0x00, 0x50, 0x00, 0x4C, 0x00, 0x2C, 0x00, 0x20, 0x00, + 0x76, 0x00, 0x33, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x13, 0x00, 0x01, 0x00, 0x4F, 0x00, + 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6C, 0x00, 0x46, 0x00, + 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x6B, 0x00, 0x70, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x68, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x72, 0x00, 0x2E, 0x00, 0x73, 0x00, + 0x79, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x50, 0x00, + 0x72, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x75, 0x00, 0x63, 0x00, 0x74, 0x00, 0x4E, 0x00, 0x61, 0x00, + 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x48, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6B, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x04, 0x00, 0x01, 0x00, 0x50, 0x00, + 0x72, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x75, 0x00, 0x63, 0x00, 0x74, 0x00, 0x56, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x32, 0x00, 0x2E, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x56, 0x00, 0x61, 0x00, 0x72, 0x00, + 0x46, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x49, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x6F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x04, 0x00, 0x00, 0x00, 0x54, 0x00, 0x72, 0x00, 0x61, 0x00, + 0x6E, 0x00, 0x73, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x04, 0xE4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x8F, 0x34, 0x9F, 0x34, 0xB5, 0x34, 0xE2, 0x34, + 0x03, 0x35, 0x45, 0x35, 0x5B, 0x35, 0x69, 0x35, 0xFC, 0x35, 0x19, 0x36, 0x5F, 0x36, 0x3D, 0x3B, + 0x97, 0x3B, 0xCB, 0x3B, 0xE2, 0x3B, 0x2C, 0x3C, 0x7E, 0x3C, 0xBC, 0x3C, 0xC6, 0x3C, 0xDE, 0x3C, + 0xF2, 0x3C, 0x06, 0x3D, 0x12, 0x3D, 0x22, 0x3D, 0x68, 0x3D, 0xFD, 0x3D, 0x1D, 0x3E, 0x23, 0x3E, + 0x31, 0x3E, 0x3E, 0x3E, 0x4A, 0x3E, 0x55, 0x3E, 0x72, 0x3E, 0xD2, 0x3E, 0xB0, 0x3F, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x74, 0x01, 0x00, 0x00, 0x03, 0x30, 0x1D, 0x30, 0x3A, 0x30, 0x8D, 0x30, + 0x99, 0x30, 0x91, 0x31, 0xC6, 0x31, 0x9C, 0x33, 0xA0, 0x33, 0x2C, 0x34, 0x30, 0x34, 0x4C, 0x34, + 0x50, 0x34, 0x6C, 0x34, 0x70, 0x34, 0x78, 0x34, 0x7C, 0x34, 0x94, 0x34, 0x98, 0x34, 0xB4, 0x34, + 0xB8, 0x34, 0xC0, 0x34, 0xC4, 0x34, 0xCC, 0x34, 0xD0, 0x34, 0xEC, 0x34, 0xF0, 0x34, 0xF8, 0x34, + 0xFC, 0x34, 0x14, 0x35, 0x18, 0x35, 0x20, 0x35, 0x24, 0x35, 0x3C, 0x35, 0x40, 0x35, 0x48, 0x35, + 0x4C, 0x35, 0x64, 0x35, 0x68, 0x35, 0x70, 0x35, 0x74, 0x35, 0x7C, 0x35, 0x80, 0x35, 0x88, 0x35, + 0x8C, 0x35, 0x94, 0x35, 0x98, 0x35, 0xA0, 0x35, 0xA4, 0x35, 0xAC, 0x35, 0xB0, 0x35, 0xB8, 0x35, + 0xBC, 0x35, 0xC4, 0x35, 0xC8, 0x35, 0xD0, 0x35, 0xD4, 0x35, 0xDC, 0x35, 0xE0, 0x35, 0xFC, 0x35, + 0x00, 0x36, 0x08, 0x36, 0x0C, 0x36, 0x24, 0x36, 0x28, 0x36, 0x30, 0x36, 0x34, 0x36, 0x4C, 0x36, + 0x50, 0x36, 0x58, 0x36, 0x5C, 0x36, 0x74, 0x36, 0x78, 0x36, 0x80, 0x36, 0x84, 0x36, 0x8C, 0x36, + 0x90, 0x36, 0x98, 0x36, 0x9C, 0x36, 0xA4, 0x36, 0xA8, 0x36, 0xC4, 0x36, 0xC8, 0x36, 0xD0, 0x36, + 0xD4, 0x36, 0xDC, 0x36, 0xE0, 0x36, 0xFC, 0x36, 0x00, 0x37, 0x08, 0x37, 0x0C, 0x37, 0x24, 0x37, + 0x28, 0x37, 0x30, 0x37, 0x34, 0x37, 0x4C, 0x37, 0x50, 0x37, 0x58, 0x37, 0x5C, 0x37, 0x74, 0x37, + 0x78, 0x37, 0x80, 0x37, 0x84, 0x37, 0x8C, 0x37, 0x90, 0x37, 0x98, 0x37, 0x9C, 0x37, 0xB4, 0x37, + 0xB8, 0x37, 0xC0, 0x37, 0xC4, 0x37, 0xCC, 0x37, 0xD0, 0x37, 0xEC, 0x37, 0xF0, 0x37, 0xF8, 0x37, + 0xFC, 0x37, 0x04, 0x38, 0x08, 0x38, 0x24, 0x38, 0x28, 0x38, 0x44, 0x38, 0x48, 0x38, 0x50, 0x38, + 0x54, 0x38, 0x6C, 0x38, 0x70, 0x38, 0x78, 0x38, 0x7C, 0x38, 0x94, 0x38, 0x98, 0x38, 0xA0, 0x38, + 0xA4, 0x38, 0xAC, 0x38, 0xB0, 0x38, 0x08, 0x3C, 0x0E, 0x3C, 0x23, 0x3C, 0x4B, 0x3C, 0x85, 0x3C, + 0x8A, 0x3C, 0xB4, 0x3C, 0x20, 0x3D, 0x2D, 0x3D, 0x3D, 0x3D, 0x56, 0x3D, 0x5B, 0x3D, 0x76, 0x3D, + 0x89, 0x3D, 0x9F, 0x3D, 0xBC, 0x3D, 0xC1, 0x3D, 0xF2, 0x3D, 0x15, 0x3E, 0x34, 0x3E, 0x3E, 0x3E, + 0x58, 0x3E, 0x65, 0x3E, 0x6C, 0x3E, 0x73, 0x3E, 0x7A, 0x3E, 0xE0, 0x3E, 0xEC, 0x3E, 0xFF, 0x3E, + 0x13, 0x3F, 0x32, 0x3F, 0x3C, 0x3F, 0x46, 0x3F, 0x50, 0x3F, 0x5A, 0x3F, 0x64, 0x3F, 0x6E, 0x3F, + 0x78, 0x3F, 0x82, 0x3F, 0x8B, 0x3F, 0x9A, 0x3F, 0x9F, 0x3F, 0xA8, 0x3F, 0xC0, 0x3F, 0xCD, 0x3F, + 0xF6, 0x3F, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x84, 0x01, 0x00, 0x00, 0x00, 0x30, 0x0A, 0x30, + 0x14, 0x30, 0x29, 0x30, 0x2D, 0x30, 0x33, 0x30, 0x3E, 0x30, 0x42, 0x30, 0x48, 0x30, 0x5B, 0x30, + 0x68, 0x30, 0x84, 0x30, 0x8E, 0x30, 0x98, 0x30, 0xA2, 0x30, 0xBD, 0x30, 0xC3, 0x30, 0xC7, 0x30, + 0xCD, 0x30, 0xD8, 0x30, 0xDC, 0x30, 0xE2, 0x30, 0x04, 0x31, 0x11, 0x31, 0x20, 0x31, 0x2A, 0x31, + 0x44, 0x31, 0x4E, 0x31, 0x54, 0x31, 0x5E, 0x31, 0x68, 0x31, 0x72, 0x31, 0x7F, 0x31, 0x85, 0x31, + 0x89, 0x31, 0x8F, 0x31, 0x9E, 0x31, 0xA2, 0x31, 0xA8, 0x31, 0xC4, 0x31, 0xCE, 0x31, 0xDB, 0x31, + 0xF5, 0x31, 0xFF, 0x31, 0x09, 0x32, 0x13, 0x32, 0x19, 0x32, 0x1F, 0x32, 0x2D, 0x32, 0x34, 0x32, + 0x3A, 0x32, 0x3E, 0x32, 0x44, 0x32, 0x4E, 0x32, 0x54, 0x32, 0x5E, 0x32, 0x64, 0x32, 0x72, 0x32, + 0x76, 0x32, 0x7C, 0x32, 0x86, 0x32, 0x99, 0x32, 0xA4, 0x32, 0xB9, 0x32, 0xC3, 0x32, 0xCD, 0x32, + 0xD7, 0x32, 0xDD, 0x32, 0xE3, 0x32, 0xF5, 0x32, 0xF9, 0x32, 0xFF, 0x32, 0x03, 0x33, 0x13, 0x33, + 0x1E, 0x33, 0x30, 0x33, 0x3A, 0x33, 0x44, 0x33, 0x4E, 0x33, 0x58, 0x33, 0x66, 0x33, 0x6A, 0x33, + 0x70, 0x33, 0x74, 0x33, 0x7A, 0x33, 0x89, 0x33, 0x92, 0x33, 0x98, 0x33, 0x9F, 0x33, 0xA5, 0x33, + 0xAB, 0x33, 0xB1, 0x33, 0xB7, 0x33, 0xBD, 0x33, 0xC3, 0x33, 0xC8, 0x33, 0xCE, 0x33, 0xD4, 0x33, + 0xE6, 0x33, 0xFE, 0x33, 0x04, 0x34, 0x0E, 0x34, 0x1A, 0x34, 0x4B, 0x34, 0x55, 0x34, 0x61, 0x34, + 0x8D, 0x34, 0xD6, 0x34, 0xF8, 0x34, 0x02, 0x35, 0x12, 0x35, 0x1A, 0x35, 0x24, 0x35, 0x29, 0x35, + 0x33, 0x35, 0x38, 0x35, 0x42, 0x35, 0x47, 0x35, 0x51, 0x35, 0x56, 0x35, 0x60, 0x35, 0x65, 0x35, + 0x6F, 0x35, 0x74, 0x35, 0x7E, 0x35, 0x8E, 0x35, 0xA8, 0x35, 0xC8, 0x35, 0xE2, 0x35, 0x14, 0x36, + 0x23, 0x36, 0x33, 0x36, 0x96, 0x36, 0xA1, 0x36, 0x51, 0x37, 0x5E, 0x37, 0x67, 0x37, 0x6F, 0x37, + 0x93, 0x37, 0xDC, 0x37, 0xE8, 0x37, 0x05, 0x38, 0x32, 0x38, 0x3A, 0x38, 0x41, 0x38, 0x48, 0x38, + 0x59, 0x38, 0x29, 0x39, 0xBB, 0x39, 0xE5, 0x39, 0xF9, 0x39, 0x05, 0x3A, 0x17, 0x3A, 0x5D, 0x3A, + 0xB9, 0x3A, 0xC7, 0x3A, 0xD3, 0x3A, 0xDC, 0x3A, 0x38, 0x3B, 0x57, 0x3B, 0x76, 0x3B, 0x97, 0x3B, + 0xA9, 0x3B, 0xC5, 0x3B, 0xD7, 0x3B, 0x0B, 0x3C, 0x16, 0x3C, 0x26, 0x3C, 0x4F, 0x3C, 0x76, 0x3C, + 0xAF, 0x3C, 0xBB, 0x3C, 0xD7, 0x3C, 0x4C, 0x3D, 0x55, 0x3D, 0x6B, 0x3D, 0x94, 0x3D, 0xA2, 0x3D, + 0x38, 0x3E, 0x4D, 0x3E, 0xAD, 0x3E, 0xDE, 0x3E, 0x0A, 0x3F, 0x3D, 0x3F, 0x5F, 0x3F, 0x6C, 0x3F, + 0x7E, 0x3F, 0xBE, 0x3F, 0xE3, 0x3F, 0xF1, 0x3F, 0x00, 0x30, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, + 0x02, 0x30, 0x12, 0x30, 0x7B, 0x30, 0x9A, 0x30, 0xBD, 0x30, 0x4A, 0x31, 0x5C, 0x31, 0x80, 0x31, + 0xAB, 0x31, 0xBC, 0x31, 0xCC, 0x31, 0x33, 0x32, 0x52, 0x32, 0x65, 0x32, 0x75, 0x32, 0xD7, 0x32, + 0xE8, 0x32, 0xF8, 0x32, 0x5E, 0x33, 0x6F, 0x33, 0x7F, 0x33, 0xDD, 0x33, 0xEA, 0x33, 0xF7, 0x33, + 0x0C, 0x34, 0x2B, 0x34, 0x46, 0x34, 0x4E, 0x34, 0x58, 0x34, 0x64, 0x34, 0x82, 0x34, 0x92, 0x34, + 0xFA, 0x34, 0x1D, 0x35, 0x2B, 0x35, 0x42, 0x35, 0xE6, 0x35, 0x03, 0x36, 0x12, 0x36, 0x28, 0x36, + 0x4E, 0x36, 0x5A, 0x36, 0xC1, 0x36, 0x04, 0x37, 0x08, 0x37, 0x0C, 0x37, 0x10, 0x37, 0x14, 0x37, + 0x18, 0x37, 0x1C, 0x37, 0x20, 0x37, 0x24, 0x37, 0x31, 0x37, 0x4E, 0x37, 0x5C, 0x37, 0xB7, 0x37, + 0xC6, 0x37, 0xD3, 0x37, 0xE3, 0x37, 0xF3, 0x37, 0xFE, 0x37, 0x4D, 0x38, 0x69, 0x38, 0x7D, 0x38, + 0x89, 0x38, 0x9A, 0x38, 0xA6, 0x38, 0xB4, 0x38, 0xBD, 0x38, 0xC6, 0x38, 0x39, 0x39, 0x59, 0x39, + 0x92, 0x39, 0x9E, 0x39, 0xAB, 0x39, 0xBA, 0x39, 0xC8, 0x39, 0xDA, 0x39, 0x30, 0x3A, 0x46, 0x3A, + 0x52, 0x3A, 0x5F, 0x3A, 0x6A, 0x3A, 0x84, 0x3A, 0x9A, 0x3A, 0xA6, 0x3A, 0xB3, 0x3A, 0xBE, 0x3A, + 0xD7, 0x3A, 0xE6, 0x3A, 0xF8, 0x3A, 0x59, 0x3B, 0x66, 0x3B, 0x71, 0x3B, 0x94, 0x3B, 0xAA, 0x3B, + 0xBC, 0x3B, 0xC7, 0x3B, 0xD7, 0x3B, 0xEB, 0x3B, 0x16, 0x3C, 0x64, 0x3C, 0x70, 0x3C, 0xA5, 0x3C, + 0xBB, 0x3C, 0xD8, 0x3C, 0x22, 0x3D, 0x31, 0x3D, 0x42, 0x3D, 0x4F, 0x3D, 0x9B, 0x3D, 0xF3, 0x3D, + 0x37, 0x3E, 0x55, 0x3E, 0x91, 0x3E, 0x9E, 0x3E, 0x0B, 0x3F, 0x1F, 0x3F, 0x3A, 0x3F, 0x45, 0x3F, + 0xA0, 0x3F, 0xB0, 0x3F, 0xBC, 0x3F, 0xD4, 0x3F, 0xF1, 0x3F, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, + 0xDC, 0x00, 0x00, 0x00, 0x57, 0x30, 0x75, 0x30, 0xC2, 0x30, 0xCF, 0x30, 0xF3, 0x31, 0x0B, 0x32, + 0x28, 0x32, 0x36, 0x32, 0x8E, 0x32, 0x97, 0x32, 0xA5, 0x32, 0xB5, 0x32, 0xC0, 0x32, 0x0F, 0x33, + 0x2C, 0x33, 0x65, 0x33, 0x71, 0x33, 0x7E, 0x33, 0x89, 0x33, 0x97, 0x33, 0xA2, 0x33, 0xF8, 0x33, + 0x0C, 0x34, 0x1F, 0x34, 0x48, 0x34, 0x72, 0x34, 0x8B, 0x34, 0xBB, 0x34, 0xC8, 0x34, 0xD3, 0x34, + 0xF5, 0x34, 0x1E, 0x35, 0x25, 0x35, 0x49, 0x35, 0x56, 0x35, 0x6A, 0x35, 0x75, 0x35, 0x95, 0x35, + 0xA2, 0x35, 0xB6, 0x35, 0xC1, 0x35, 0x03, 0x36, 0x15, 0x36, 0x33, 0x36, 0x80, 0x36, 0x8D, 0x36, + 0xC2, 0x36, 0xD6, 0x36, 0xF4, 0x36, 0x3A, 0x37, 0x45, 0x37, 0x88, 0x37, 0xCD, 0x37, 0xEB, 0x37, + 0x24, 0x38, 0x30, 0x38, 0xA2, 0x38, 0xB5, 0x38, 0xD0, 0x38, 0xDB, 0x38, 0x33, 0x39, 0x40, 0x39, + 0x50, 0x39, 0x63, 0x39, 0x75, 0x39, 0x80, 0x39, 0x89, 0x39, 0x92, 0x39, 0xBA, 0x39, 0xC6, 0x39, + 0xD0, 0x39, 0xE7, 0x39, 0xF0, 0x39, 0xFE, 0x39, 0x0C, 0x3A, 0x1E, 0x3A, 0x37, 0x3A, 0x4B, 0x3A, + 0x82, 0x3A, 0x3C, 0x3B, 0x61, 0x3B, 0x7E, 0x3B, 0x9D, 0x3B, 0xB1, 0x3B, 0xBA, 0x3B, 0xC8, 0x3B, + 0xDC, 0x3B, 0xEE, 0x3B, 0x9B, 0x3C, 0xBF, 0x3C, 0xCC, 0x3C, 0xF6, 0x3C, 0x0C, 0x3D, 0xD9, 0x3D, + 0x0A, 0x3E, 0x33, 0x3E, 0x9A, 0x3E, 0xAF, 0x3E, 0xCB, 0x3E, 0xF0, 0x3E, 0x1C, 0x3F, 0x2F, 0x3F, + 0x55, 0x3F, 0x9C, 0x3F, 0xB1, 0x3F, 0xB8, 0x3F, 0x00, 0x50, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, + 0x07, 0x30, 0x23, 0x30, 0x37, 0x30, 0x56, 0x30, 0xC1, 0x30, 0xE3, 0x30, 0x0C, 0x31, 0x2C, 0x31, + 0x71, 0x31, 0x7D, 0x31, 0x93, 0x31, 0xAB, 0x31, 0xEF, 0x31, 0x18, 0x32, 0x38, 0x32, 0x7D, 0x32, + 0x89, 0x32, 0xA5, 0x32, 0xB7, 0x32, 0xFB, 0x32, 0x2B, 0x33, 0x4A, 0x33, 0x67, 0x33, 0x8D, 0x33, + 0x9C, 0x33, 0x0E, 0x34, 0x1A, 0x34, 0x32, 0x34, 0x48, 0x34, 0x86, 0x37, 0x98, 0x37, 0x9F, 0x37, + 0xA4, 0x37, 0xAD, 0x37, 0xB4, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x24, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x30, 0x82, 0x24, 0x8B, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02, 0xA0, 0x82, 0x24, 0x7C, 0x30, 0x82, 0x24, 0x78, 0x02, + 0x01, 0x01, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x30, + 0x4C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xA0, 0x3E, 0x30, + 0x3C, 0x30, 0x17, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0F, 0x30, + 0x09, 0x03, 0x01, 0x00, 0xA0, 0x04, 0xA2, 0x02, 0x80, 0x00, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, + 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0xBD, 0x01, 0xBE, 0xE3, 0x72, 0x99, 0xE1, + 0xF6, 0x50, 0xAC, 0xEF, 0x44, 0x79, 0x6E, 0x95, 0xD8, 0x3D, 0x62, 0x05, 0xDD, 0xA0, 0x82, 0x1F, + 0xDE, 0x30, 0x82, 0x05, 0x3B, 0x30, 0x82, 0x03, 0x23, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0A, + 0x61, 0x20, 0x4D, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, + 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, + 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, + 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, + 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, + 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x31, + 0x30, 0x34, 0x31, 0x35, 0x31, 0x39, 0x34, 0x35, 0x33, 0x33, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, + 0x34, 0x31, 0x35, 0x31, 0x39, 0x35, 0x35, 0x33, 0x33, 0x5A, 0x30, 0x6C, 0x31, 0x0B, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x2B, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x45, 0x56, + 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, + 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC6, 0xCC, 0xE5, 0x73, 0xE6, 0xFB, 0xD4, + 0xBB, 0xE5, 0x2D, 0x2D, 0x32, 0xA6, 0xDF, 0xE5, 0x81, 0x3F, 0xC9, 0xCD, 0x25, 0x49, 0xB6, 0x71, + 0x2A, 0xC3, 0xD5, 0x94, 0x34, 0x67, 0xA2, 0x0A, 0x1C, 0xB0, 0x5F, 0x69, 0xA6, 0x40, 0xB1, 0xC4, + 0xB7, 0xB2, 0x8F, 0xD0, 0x98, 0xA4, 0xA9, 0x41, 0x59, 0x3A, 0xD3, 0xDC, 0x94, 0xD6, 0x3C, 0xDB, + 0x74, 0x38, 0xA4, 0x4A, 0xCC, 0x4D, 0x25, 0x82, 0xF7, 0x4A, 0xA5, 0x53, 0x12, 0x38, 0xEE, 0xF3, + 0x49, 0x6D, 0x71, 0x91, 0x7E, 0x63, 0xB6, 0xAB, 0xA6, 0x5F, 0xC3, 0xA4, 0x84, 0xF8, 0x4F, 0x62, + 0x51, 0xBE, 0xF8, 0xC5, 0xEC, 0xDB, 0x38, 0x92, 0xE3, 0x06, 0xE5, 0x08, 0x91, 0x0C, 0xC4, 0x28, + 0x41, 0x55, 0xFB, 0xCB, 0x5A, 0x89, 0x15, 0x7E, 0x71, 0xE8, 0x35, 0xBF, 0x4D, 0x72, 0x09, 0x3D, + 0xBE, 0x3A, 0x38, 0x50, 0x5B, 0x77, 0x31, 0x1B, 0x8D, 0xB3, 0xC7, 0x24, 0x45, 0x9A, 0xA7, 0xAC, + 0x6D, 0x00, 0x14, 0x5A, 0x04, 0xB7, 0xBA, 0x13, 0xEB, 0x51, 0x0A, 0x98, 0x41, 0x41, 0x22, 0x4E, + 0x65, 0x61, 0x87, 0x81, 0x41, 0x50, 0xA6, 0x79, 0x5C, 0x89, 0xDE, 0x19, 0x4A, 0x57, 0xD5, 0x2E, + 0xE6, 0x5D, 0x1C, 0x53, 0x2C, 0x7E, 0x98, 0xCD, 0x1A, 0x06, 0x16, 0xA4, 0x68, 0x73, 0xD0, 0x34, + 0x04, 0x13, 0x5C, 0xA1, 0x71, 0xD3, 0x5A, 0x7C, 0x55, 0xDB, 0x5E, 0x64, 0xE1, 0x37, 0x87, 0x30, + 0x56, 0x04, 0xE5, 0x11, 0xB4, 0x29, 0x80, 0x12, 0xF1, 0x79, 0x39, 0x88, 0xA2, 0x02, 0x11, 0x7C, + 0x27, 0x66, 0xB7, 0x88, 0xB7, 0x78, 0xF2, 0xCA, 0x0A, 0xA8, 0x38, 0xAB, 0x0A, 0x64, 0xC2, 0xBF, + 0x66, 0x5D, 0x95, 0x84, 0xC1, 0xA1, 0x25, 0x1E, 0x87, 0x5D, 0x1A, 0x50, 0x0B, 0x20, 0x12, 0xCC, + 0x41, 0xBB, 0x6E, 0x0B, 0x51, 0x38, 0xB8, 0x4B, 0xCB, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81, + 0xCB, 0x30, 0x81, 0xC8, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x0A, 0x30, 0x08, 0x30, + 0x06, 0x06, 0x04, 0x55, 0x1D, 0x20, 0x00, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, + 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, + 0xB1, 0x3E, 0xC3, 0x69, 0x03, 0xF8, 0xBF, 0x47, 0x01, 0xD4, 0x98, 0x26, 0x1A, 0x08, 0x02, 0xEF, + 0x63, 0x64, 0x2B, 0xC3, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0x62, 0xFB, 0x0A, 0x21, 0x5B, 0x7F, 0x43, 0x6E, 0x11, 0xDA, 0x09, 0x54, 0x50, 0x6B, 0xF5, + 0xD2, 0x96, 0x71, 0xF1, 0x9E, 0x30, 0x55, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x4E, 0x30, 0x4C, + 0x30, 0x4A, 0xA0, 0x48, 0xA0, 0x46, 0x86, 0x44, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, + 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, + 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, + 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x43, 0x6F, 0x64, 0x65, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x52, 0x6F, 0x6F, 0x74, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x0D, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, + 0x20, 0x8C, 0xC1, 0x59, 0xED, 0x6F, 0x9C, 0x6B, 0x2D, 0xC1, 0x4A, 0x3E, 0x75, 0x1D, 0x45, 0x4C, + 0x41, 0x50, 0x1C, 0xBD, 0x80, 0xEA, 0xD9, 0xB0, 0x92, 0x8B, 0x06, 0x2A, 0x13, 0x3F, 0x53, 0x16, + 0x9E, 0x56, 0x39, 0x6A, 0x8A, 0x63, 0xB6, 0x78, 0x24, 0x79, 0xF5, 0x7D, 0xB8, 0xB9, 0x47, 0xA1, + 0x0A, 0x96, 0xC2, 0xF6, 0xCB, 0xBD, 0xA2, 0x66, 0x9F, 0x06, 0xE1, 0xAC, 0xD2, 0x79, 0x09, 0x0E, + 0xFD, 0x3C, 0xDC, 0xAC, 0x02, 0x0C, 0x70, 0xAF, 0x3F, 0x1B, 0xEC, 0x78, 0x7E, 0xD4, 0xEB, 0x4B, + 0x05, 0x60, 0x26, 0xD9, 0x73, 0x61, 0x91, 0x21, 0xED, 0xB0, 0x68, 0x63, 0xE0, 0x97, 0x12, 0xAB, + 0x6F, 0xA0, 0x12, 0xED, 0xD9, 0x9F, 0xD2, 0xDA, 0x27, 0x3C, 0xB3, 0xE4, 0x56, 0xF9, 0xD1, 0xD4, + 0x81, 0x0F, 0x71, 0xBD, 0x42, 0x7C, 0xA6, 0x89, 0xDC, 0xCD, 0xD5, 0xBD, 0x95, 0xA2, 0xAB, 0xF1, + 0x93, 0x11, 0x7D, 0xE8, 0xAC, 0x31, 0x29, 0xA8, 0x5D, 0x66, 0x70, 0x41, 0x9D, 0xFC, 0x75, 0xC9, + 0xD5, 0xB3, 0x1A, 0x39, 0x2A, 0xD0, 0x85, 0x05, 0x50, 0x8B, 0xAC, 0x91, 0xCA, 0xC4, 0x93, 0xCB, + 0x71, 0xA5, 0x9D, 0xA4, 0x94, 0x6F, 0x58, 0x0C, 0xFA, 0x6E, 0x20, 0xC4, 0x08, 0x31, 0xB5, 0x85, + 0x9D, 0x7E, 0x81, 0xF9, 0xD2, 0x3D, 0xCA, 0x5B, 0x18, 0x85, 0x6C, 0x0A, 0x86, 0xEC, 0x22, 0x09, + 0x1B, 0xA5, 0x74, 0x34, 0x4F, 0x7F, 0x28, 0xBC, 0x95, 0x4A, 0xAB, 0x1D, 0xB6, 0x98, 0xB0, 0x5D, + 0x09, 0xA4, 0x77, 0x76, 0x7E, 0xEF, 0xA7, 0x8E, 0x5D, 0x84, 0xF6, 0x18, 0x24, 0xCB, 0xD1, 0x6D, + 0xA6, 0xC3, 0xA1, 0x9C, 0xC2, 0x10, 0x75, 0x80, 0xFF, 0x9D, 0x32, 0xFD, 0xE6, 0xCF, 0x43, 0x3A, + 0x82, 0xF7, 0xCE, 0x8F, 0xE1, 0x72, 0x2A, 0x9B, 0x62, 0xB7, 0x5F, 0xED, 0x95, 0x1A, 0x39, 0x5C, + 0x2F, 0x94, 0x6D, 0x48, 0xB7, 0x01, 0x5F, 0x33, 0x2F, 0xBB, 0xDC, 0x2D, 0x73, 0x34, 0x89, 0x04, + 0x42, 0x0A, 0x1C, 0x8B, 0x79, 0xF9, 0xA3, 0xFA, 0x17, 0xEF, 0xFA, 0xA1, 0x1A, 0x10, 0xDF, 0xE0, + 0xB2, 0xC1, 0x95, 0xEB, 0x5C, 0x0C, 0x05, 0x97, 0x3B, 0x35, 0x3E, 0x18, 0x88, 0x4D, 0xDB, 0x6C, + 0xBF, 0x24, 0x89, 0x8D, 0xC8, 0xBD, 0xD8, 0x9F, 0x7B, 0x39, 0x3A, 0x24, 0xA0, 0xD5, 0xDF, 0xD1, + 0xF3, 0x4A, 0x1A, 0x97, 0xF6, 0xA6, 0x6F, 0x7A, 0x1F, 0xB0, 0x90, 0xA9, 0xB3, 0xAC, 0x01, 0x39, + 0x91, 0xD3, 0x61, 0xB7, 0x64, 0xF1, 0x3E, 0x57, 0x38, 0x03, 0xAF, 0xCE, 0x7A, 0xD2, 0xB5, 0x90, + 0xF5, 0xAE, 0xDC, 0x39, 0x99, 0xD5, 0xB6, 0x3C, 0x97, 0xED, 0xA6, 0xCB, 0x16, 0xC7, 0x7D, 0x6B, + 0x2A, 0x4C, 0x90, 0x94, 0xE6, 0x4C, 0x54, 0xFD, 0x1E, 0xCD, 0x20, 0xEC, 0xCE, 0x68, 0x9C, 0x87, + 0x58, 0xE9, 0x61, 0x60, 0xBE, 0xEB, 0x0E, 0xC9, 0xD5, 0x19, 0x7D, 0x9F, 0xE9, 0x78, 0xBD, 0x0E, + 0xAC, 0x21, 0x75, 0x07, 0x8F, 0xA9, 0x6E, 0xE0, 0x8C, 0x6A, 0x2A, 0x6B, 0x9C, 0xE3, 0xE7, 0x65, + 0xBC, 0xBC, 0x2D, 0x3C, 0x6D, 0xDC, 0x04, 0xDC, 0x67, 0x45, 0x36, 0x32, 0xAF, 0x04, 0x81, 0xBC, + 0xA8, 0x00, 0x6E, 0x61, 0x4C, 0x95, 0xC5, 0x5C, 0xD4, 0x8E, 0x8E, 0x9F, 0x2F, 0xC1, 0x32, 0x74, + 0xBD, 0xBD, 0x11, 0x65, 0x03, 0x07, 0xCD, 0xEF, 0xB7, 0x5E, 0x02, 0x57, 0xDA, 0x86, 0xD4, 0x1A, + 0x28, 0x34, 0xAF, 0x88, 0x49, 0xB2, 0xCF, 0xA5, 0xDD, 0x82, 0x56, 0x6F, 0x68, 0xAA, 0x14, 0xE2, + 0x59, 0x54, 0xFE, 0xFF, 0xEA, 0xEE, 0xEF, 0xEA, 0x92, 0x70, 0x22, 0x60, 0x81, 0xE3, 0x25, 0x23, + 0xC0, 0x9F, 0xCC, 0x0F, 0x49, 0xB2, 0x35, 0xAA, 0x58, 0xC3, 0x3A, 0xC3, 0xD9, 0x16, 0x94, 0x10, + 0x30, 0x82, 0x06, 0x6A, 0x30, 0x82, 0x05, 0x52, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x03, + 0x01, 0x9A, 0x02, 0x3A, 0xFF, 0x58, 0xB1, 0x6B, 0xD6, 0xD5, 0xEA, 0xE6, 0x17, 0xF0, 0x66, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x62, + 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, + 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, + 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, + 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x43, 0x41, + 0x2D, 0x31, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x34, 0x31, 0x30, 0x32, 0x32, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x34, 0x31, 0x30, 0x32, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5A, 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x08, 0x44, 0x69, 0x67, 0x69, + 0x43, 0x65, 0x72, 0x74, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1C, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, + 0x70, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x65, 0x72, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xA3, 0x64, 0x5D, 0xFC, + 0x7C, 0xB3, 0xE0, 0x82, 0x35, 0xE0, 0xE0, 0xF6, 0xC6, 0x2A, 0xE6, 0x49, 0x75, 0x3B, 0xCC, 0x6E, + 0xE0, 0x53, 0xA9, 0x9F, 0x1F, 0x64, 0x59, 0xE6, 0x7C, 0x6B, 0x7F, 0x6B, 0x8C, 0x9D, 0x55, 0xF8, + 0x92, 0xE3, 0x9E, 0xD5, 0x5A, 0x63, 0x5B, 0x02, 0x49, 0x50, 0xD9, 0x83, 0xCE, 0x6F, 0x66, 0xEE, + 0xDD, 0xCB, 0x85, 0xE9, 0x5F, 0xA5, 0xF9, 0xD4, 0x87, 0x74, 0x88, 0x44, 0x3B, 0x19, 0xC9, 0xE5, + 0xF5, 0x91, 0x9F, 0xC6, 0x14, 0x39, 0xAC, 0x24, 0xEA, 0xA8, 0x4B, 0x2C, 0x91, 0x89, 0xCC, 0x5E, + 0x28, 0xF4, 0x64, 0xB6, 0x50, 0xB7, 0xF5, 0x12, 0xB3, 0x73, 0x96, 0x0A, 0x67, 0xA3, 0xBE, 0x61, + 0x9F, 0xAE, 0xF3, 0xFD, 0x12, 0x78, 0x75, 0x0E, 0xA6, 0x5B, 0x14, 0xFD, 0x45, 0x23, 0x8E, 0x86, + 0x44, 0x55, 0x7D, 0x18, 0x86, 0x05, 0x8C, 0x55, 0x87, 0x79, 0x48, 0x46, 0xF7, 0xCA, 0x0E, 0x8D, + 0xA7, 0xDE, 0x4E, 0x5F, 0xE2, 0xA8, 0xB6, 0x2D, 0x59, 0x02, 0x61, 0x88, 0x61, 0x72, 0x18, 0x68, + 0xB9, 0xB8, 0x7C, 0xEE, 0xE6, 0xE7, 0x34, 0x2F, 0x31, 0x77, 0x81, 0x30, 0x1F, 0xBB, 0x36, 0x01, + 0x8D, 0xEF, 0x27, 0xE3, 0xF7, 0x9A, 0xF0, 0x4C, 0x31, 0x64, 0x8D, 0xE3, 0xEB, 0xFA, 0x19, 0x87, + 0xA8, 0x7E, 0xCF, 0xEC, 0x8C, 0x0C, 0x36, 0x5B, 0x7A, 0xC1, 0x7A, 0xB8, 0x78, 0xC7, 0xC9, 0x06, + 0x2E, 0x46, 0x10, 0xC8, 0x8D, 0xE8, 0x04, 0x60, 0xDB, 0xBC, 0x73, 0x74, 0xFA, 0x4E, 0xD8, 0xFE, + 0xAA, 0x40, 0xF1, 0xB2, 0xCE, 0x70, 0x46, 0x83, 0xE9, 0xDA, 0x40, 0xA1, 0x59, 0x3A, 0xD9, 0x15, + 0x09, 0x57, 0x99, 0x56, 0x30, 0x93, 0xF3, 0xC9, 0x61, 0xCC, 0xD0, 0x08, 0xCC, 0x6B, 0xEC, 0x62, + 0x42, 0x91, 0xAC, 0x02, 0xC0, 0xEF, 0xA4, 0xF0, 0x89, 0x11, 0x8F, 0x77, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xA3, 0x82, 0x03, 0x35, 0x30, 0x82, 0x03, 0x31, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, + 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, + 0x01, 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x01, 0x01, + 0xFF, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, + 0x82, 0x01, 0xBF, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x82, 0x01, 0xB6, 0x30, 0x82, 0x01, 0xB2, + 0x30, 0x82, 0x01, 0xA1, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, 0x07, 0x01, 0x30, + 0x82, 0x01, 0x92, 0x30, 0x28, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x1C, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, + 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x50, 0x53, 0x30, 0x82, 0x01, + 0x64, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1E, + 0x82, 0x01, 0x52, 0x00, 0x41, 0x00, 0x6E, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, + 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, + 0x69, 0x00, 0x63, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6F, 0x00, + 0x6E, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, + 0x61, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, + 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, + 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x50, 0x00, 0x2F, 0x00, + 0x43, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, + 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x79, 0x00, + 0x69, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, + 0x79, 0x00, 0x20, 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6D, 0x00, + 0x65, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, + 0x68, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, + 0x6C, 0x00, 0x69, 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x74, 0x00, + 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, + 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, + 0x6F, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, + 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6E, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x2E, 0x30, 0x0B, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, + 0x03, 0x15, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x15, + 0x00, 0x12, 0x2B, 0x13, 0x98, 0xB2, 0x99, 0x07, 0xED, 0x1E, 0xDF, 0xA2, 0xBE, 0x57, 0x0D, 0x2B, + 0x67, 0x02, 0xCD, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x61, 0x5A, + 0x4D, 0x24, 0xB6, 0x49, 0x32, 0x9D, 0x4A, 0x2A, 0x79, 0x1A, 0x83, 0x4B, 0xF4, 0x1E, 0x89, 0xC1, + 0xCA, 0x7D, 0x30, 0x7D, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x76, 0x30, 0x74, 0x30, 0x38, 0xA0, + 0x36, 0xA0, 0x34, 0x86, 0x32, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x33, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x49, 0x44, 0x43, + 0x41, 0x2D, 0x31, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x38, 0xA0, 0x36, 0xA0, 0x34, 0x86, 0x32, 0x68, + 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x34, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x49, 0x44, 0x43, 0x41, 0x2D, 0x31, 0x2E, 0x63, 0x72, + 0x6C, 0x30, 0x77, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6B, 0x30, + 0x69, 0x30, 0x24, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x41, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x02, 0x86, 0x35, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x61, 0x63, 0x65, + 0x72, 0x74, 0x73, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, + 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, + 0x49, 0x44, 0x43, 0x41, 0x2D, 0x31, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x9D, 0x25, + 0x7E, 0x1B, 0x33, 0x4D, 0xB2, 0x26, 0x81, 0x5C, 0x9B, 0x86, 0xCE, 0x23, 0x20, 0x0F, 0x80, 0x87, + 0xE5, 0x88, 0xFF, 0xFF, 0xB1, 0xD4, 0x6A, 0x2C, 0x31, 0xED, 0x3A, 0x17, 0x19, 0x71, 0x17, 0xCD, + 0xA9, 0x1B, 0xBC, 0x5A, 0x16, 0x39, 0x00, 0x9D, 0xE3, 0x6C, 0x84, 0xE4, 0x5A, 0x40, 0xFB, 0xDE, + 0x06, 0x01, 0x8C, 0x37, 0xFA, 0x9B, 0xB1, 0x9D, 0x24, 0x7E, 0xFE, 0x20, 0xA4, 0x57, 0xAD, 0x5B, + 0xB7, 0x9A, 0xB0, 0x60, 0x26, 0xEA, 0x69, 0x57, 0x21, 0x5D, 0x34, 0x2F, 0x1F, 0x71, 0xB0, 0x83, + 0x94, 0x19, 0x05, 0x6B, 0x35, 0x90, 0x10, 0xA0, 0x7B, 0x97, 0xC7, 0xF6, 0x3F, 0xE7, 0xE2, 0x11, + 0x41, 0xA6, 0xBD, 0x62, 0xD9, 0xF0, 0x27, 0x3D, 0x38, 0x1D, 0x28, 0x6F, 0x3A, 0x52, 0x09, 0xF0, + 0xEC, 0x70, 0x62, 0xD3, 0x62, 0x4B, 0xB0, 0xE0, 0x73, 0xA6, 0x92, 0xC0, 0xD3, 0x8E, 0x31, 0xD8, + 0x2F, 0xE3, 0x6D, 0x17, 0x13, 0x06, 0xEE, 0xE4, 0x03, 0xB6, 0x14, 0xAB, 0xF3, 0x8F, 0x43, 0xA7, + 0x71, 0x9D, 0x21, 0xDD, 0x14, 0xCA, 0x15, 0x5D, 0x92, 0x41, 0xDA, 0xF9, 0x0F, 0x81, 0xD1, 0x99, + 0x74, 0x0D, 0x26, 0xC4, 0x0E, 0x7F, 0x1B, 0xB5, 0xF5, 0xA0, 0xF1, 0xC6, 0x77, 0x06, 0x28, 0x15, + 0xE9, 0xD8, 0x93, 0xE5, 0x55, 0x16, 0xF0, 0xBB, 0x0A, 0xAB, 0x1C, 0xDB, 0x5C, 0x48, 0x27, 0x66, + 0xC8, 0xA3, 0x8B, 0x0A, 0x1C, 0xE5, 0x95, 0xDA, 0xAE, 0xC4, 0x2E, 0x59, 0xA0, 0x61, 0xDD, 0xDA, + 0xF3, 0x6D, 0xA2, 0x61, 0xE9, 0x8A, 0x0B, 0x6D, 0xEC, 0x12, 0x18, 0xBD, 0xF7, 0x55, 0x54, 0x40, + 0x03, 0x92, 0x2B, 0x6B, 0xC2, 0x51, 0xC2, 0x0A, 0x48, 0xAF, 0xB0, 0xD4, 0x6E, 0xE0, 0xF4, 0x14, + 0x0A, 0x3A, 0x1B, 0xE3, 0x8F, 0x3D, 0xCA, 0xAF, 0x6A, 0x8D, 0x7B, 0xDC, 0xD8, 0x44, 0x30, 0x82, + 0x06, 0x96, 0x30, 0x82, 0x05, 0x7E, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x03, 0xE9, 0x01, + 0x7D, 0x54, 0xCD, 0x93, 0xF0, 0x94, 0xD0, 0xA2, 0xAB, 0x7F, 0xC0, 0xE3, 0xF5, 0x30, 0x0D, 0x06, + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x73, 0x31, 0x0B, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x32, 0x30, + 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, + 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x2D, + 0x31, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x33, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5A, 0x17, 0x0D, 0x31, 0x35, 0x31, 0x31, 0x30, 0x34, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, + 0x5A, 0x30, 0x64, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, + 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0F, 0x4E, 0x65, 0x77, 0x20, 0x53, + 0x6F, 0x75, 0x74, 0x68, 0x20, 0x57, 0x61, 0x6C, 0x65, 0x73, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, + 0x55, 0x04, 0x07, 0x13, 0x06, 0x53, 0x79, 0x64, 0x6E, 0x65, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0B, 0x57, 0x65, 0x6E, 0x20, 0x4A, 0x69, 0x61, 0x20, 0x4C, 0x69, + 0x75, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0B, 0x57, 0x65, 0x6E, 0x20, + 0x4A, 0x69, 0x61, 0x20, 0x4C, 0x69, 0x75, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, + 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xD3, 0x1D, 0xC2, 0xE0, 0x3F, 0x42, 0x5C, 0xAD, + 0x9E, 0x41, 0x16, 0x88, 0xEF, 0x79, 0x4A, 0x73, 0x7D, 0x58, 0x94, 0xFB, 0xF5, 0xD6, 0xC5, 0x8B, + 0xB9, 0x81, 0x57, 0x59, 0x82, 0xAF, 0x2C, 0x3E, 0x87, 0xDA, 0xCF, 0x25, 0xC6, 0x34, 0x23, 0x33, + 0x95, 0xF7, 0x10, 0xAE, 0x18, 0xF7, 0xA6, 0xFF, 0x51, 0x42, 0xFF, 0xDA, 0x14, 0xE6, 0x2F, 0x01, + 0xCB, 0x3A, 0xA4, 0xB5, 0x0D, 0xDA, 0xE0, 0x33, 0x09, 0xC6, 0x57, 0xF3, 0x62, 0xE3, 0x57, 0x98, + 0x72, 0xBF, 0x88, 0x05, 0x90, 0x31, 0x3F, 0x45, 0xBE, 0x7F, 0x0A, 0x82, 0x16, 0x1D, 0xB9, 0xC3, + 0xF7, 0x00, 0x40, 0xD4, 0x37, 0x9C, 0xFA, 0x94, 0xAA, 0xDB, 0x22, 0xBC, 0x61, 0xA8, 0x75, 0xB6, + 0xC7, 0x45, 0x49, 0x16, 0xE1, 0xDE, 0xBA, 0x51, 0x50, 0x00, 0xF6, 0x76, 0xA6, 0x43, 0x27, 0xB0, + 0x3C, 0xE4, 0xA2, 0x21, 0x64, 0x38, 0x48, 0xAC, 0x89, 0x83, 0xF5, 0x2B, 0xFD, 0x41, 0xBB, 0x5A, + 0x30, 0xD3, 0xBF, 0x35, 0xCB, 0x89, 0xEB, 0x9C, 0x10, 0xC6, 0x5D, 0xD5, 0xE3, 0x6B, 0x2D, 0xE7, + 0xFD, 0x6C, 0xF9, 0xDA, 0xB3, 0x17, 0xFF, 0xC3, 0x82, 0xDA, 0x24, 0x4E, 0x76, 0x6D, 0xA5, 0x28, + 0x33, 0x52, 0x78, 0x27, 0x40, 0xFB, 0xFB, 0xF8, 0x6D, 0x38, 0x97, 0x03, 0x81, 0x83, 0x52, 0xDC, + 0xEC, 0x87, 0xA2, 0xE0, 0xAB, 0x3F, 0x87, 0xA9, 0x67, 0x5C, 0x5A, 0xDC, 0x21, 0x6A, 0x5B, 0x09, + 0x26, 0x1E, 0x19, 0x1F, 0x09, 0xD3, 0x83, 0x0C, 0x11, 0xA7, 0xCA, 0x7E, 0xBD, 0x71, 0x44, 0xCC, + 0x9B, 0xB9, 0x55, 0x67, 0xEE, 0x29, 0xE2, 0xC2, 0x2C, 0x57, 0x6C, 0xDD, 0xB0, 0x96, 0xB3, 0x06, + 0x59, 0x99, 0x0B, 0x92, 0x03, 0x24, 0xAE, 0xA3, 0x35, 0x27, 0xAA, 0x4B, 0x3A, 0xB8, 0xEA, 0x94, + 0xFD, 0xC9, 0x1A, 0xA9, 0xB7, 0xB6, 0xCC, 0x6B, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x03, + 0x33, 0x30, 0x82, 0x03, 0x2F, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x97, 0x48, 0x03, 0xEB, 0x15, 0x08, 0x6B, 0xB9, 0xB2, 0x58, 0x23, 0xCC, 0x94, 0x2E, + 0xF1, 0xC6, 0x65, 0xD2, 0x64, 0x8E, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, + 0x14, 0xA8, 0xA3, 0x4D, 0x2A, 0x8E, 0xA5, 0x2E, 0x70, 0x45, 0xB6, 0xFA, 0x5B, 0xFA, 0xAD, 0x22, + 0x25, 0xED, 0xBA, 0x8B, 0x6C, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, + 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x69, 0x06, 0x03, 0x55, 0x1D, + 0x1F, 0x04, 0x62, 0x30, 0x60, 0x30, 0x2E, 0xA0, 0x2C, 0xA0, 0x2A, 0x86, 0x28, 0x68, 0x74, 0x74, + 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x33, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x68, 0x61, 0x2D, 0x63, 0x73, 0x2D, 0x32, 0x30, 0x31, 0x31, + 0x61, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x2E, 0xA0, 0x2C, 0xA0, 0x2A, 0x86, 0x28, 0x68, 0x74, 0x74, + 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x34, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x68, 0x61, 0x2D, 0x63, 0x73, 0x2D, 0x32, 0x30, 0x31, 0x31, + 0x61, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x82, 0x01, 0xC4, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x82, + 0x01, 0xBB, 0x30, 0x82, 0x01, 0xB7, 0x30, 0x82, 0x01, 0xB3, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, + 0x86, 0xFD, 0x6C, 0x03, 0x01, 0x30, 0x82, 0x01, 0xA4, 0x30, 0x3A, 0x06, 0x08, 0x2B, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2E, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, + 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, + 0x73, 0x6C, 0x2D, 0x63, 0x70, 0x73, 0x2D, 0x72, 0x65, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x6F, 0x72, + 0x79, 0x2E, 0x68, 0x74, 0x6D, 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1E, 0x82, 0x01, 0x52, 0x00, 0x41, 0x00, 0x6E, 0x00, + 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, + 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x61, 0x00, 0x74, 0x00, + 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, + 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, + 0x44, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, + 0x20, 0x00, 0x43, 0x00, 0x50, 0x00, 0x2F, 0x00, 0x43, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, + 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, + 0x52, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x79, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x20, 0x00, + 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x41, 0x00, 0x67, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, + 0x77, 0x00, 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, + 0x6D, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x69, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, + 0x64, 0x00, 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6E, 0x00, + 0x63, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, + 0x6E, 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2E, 0x30, 0x81, 0x86, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x7A, 0x30, 0x78, 0x30, 0x24, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, + 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x50, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, + 0x86, 0x44, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x73, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, + 0x6E, 0x63, 0x65, 0x43, 0x6F, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x43, 0x41, + 0x2D, 0x31, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, + 0x04, 0x02, 0x30, 0x00, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, + 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xBB, 0xC0, 0x31, 0xB3, 0xDD, 0x6B, 0x1C, 0x6E, + 0xBE, 0xC7, 0x7B, 0x8D, 0xC1, 0xEC, 0xFA, 0x93, 0x81, 0x49, 0xC6, 0x4E, 0x0C, 0x95, 0x9E, 0x58, + 0x57, 0xDB, 0x5C, 0x28, 0xEF, 0x54, 0x9D, 0xDF, 0x0B, 0xE9, 0x20, 0xCC, 0xB7, 0xEC, 0x51, 0x5A, + 0xAE, 0xB1, 0x80, 0xA2, 0x8D, 0x64, 0xA1, 0xF4, 0x06, 0x5D, 0x38, 0xCB, 0x99, 0x7D, 0xB5, 0x92, + 0x95, 0xF1, 0x23, 0x85, 0x13, 0x92, 0x90, 0x3C, 0x67, 0x3E, 0xD6, 0xD1, 0xDB, 0x93, 0x0E, 0xC1, + 0x61, 0x8A, 0xDD, 0x99, 0x89, 0xF0, 0xF1, 0xFC, 0x8D, 0x06, 0xEC, 0x5A, 0x94, 0x52, 0x42, 0xCD, + 0x74, 0x32, 0xD6, 0x83, 0x8E, 0x33, 0xB4, 0xC3, 0xE4, 0x78, 0x4E, 0x75, 0x4B, 0x64, 0xDC, 0xE0, + 0x78, 0x68, 0x6A, 0xB2, 0xE6, 0x62, 0x68, 0x48, 0xFF, 0x7D, 0xCD, 0x6F, 0xB7, 0xEF, 0xEB, 0xFF, + 0xDF, 0xDA, 0xD1, 0xEE, 0xFC, 0x1E, 0x98, 0xF9, 0xC3, 0x38, 0xFF, 0x25, 0x65, 0xF0, 0x50, 0x39, + 0x17, 0x6B, 0x24, 0x14, 0x8A, 0x84, 0x16, 0x14, 0x63, 0x51, 0x57, 0xDA, 0x5F, 0x61, 0xA1, 0x7B, + 0xBD, 0x6D, 0x47, 0x98, 0x15, 0x71, 0x4E, 0x8D, 0x30, 0x67, 0xF0, 0x32, 0x0D, 0x5E, 0x8B, 0xFA, + 0xA6, 0xE3, 0x57, 0x31, 0x80, 0x49, 0x25, 0xDF, 0x9B, 0x85, 0xBA, 0x32, 0xC0, 0xD9, 0xF4, 0xCC, + 0xD4, 0x84, 0xD6, 0xD1, 0xB2, 0x79, 0xBA, 0xD0, 0xEF, 0x22, 0xB0, 0xDA, 0x37, 0x58, 0x26, 0xEA, + 0x2E, 0x11, 0x9D, 0x5C, 0x84, 0x8D, 0x9A, 0x92, 0x75, 0xB9, 0x3A, 0xBB, 0x08, 0x4C, 0x02, 0xAF, + 0x9F, 0x1B, 0x46, 0xC5, 0x35, 0x76, 0x52, 0xF1, 0x13, 0xF5, 0x56, 0xFD, 0xB9, 0xD1, 0x90, 0x02, + 0x23, 0x34, 0x15, 0x03, 0xF4, 0xE8, 0x9B, 0x98, 0xBA, 0xE1, 0x34, 0xF7, 0xCC, 0x9D, 0x64, 0x09, + 0xFC, 0xF7, 0x2D, 0x2C, 0x74, 0x6C, 0x71, 0x4A, 0x30, 0x82, 0x06, 0xC2, 0x30, 0x82, 0x05, 0xAA, + 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x02, 0xC4, 0xD1, 0xE5, 0x8A, 0x4A, 0x68, 0x0C, 0x56, + 0x8D, 0xA3, 0x04, 0x7E, 0x7E, 0x4D, 0x5F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, + 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x31, 0x30, 0x32, 0x31, 0x31, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x36, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x30, + 0x30, 0x30, 0x30, 0x5A, 0x30, 0x73, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, + 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, + 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x2D, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, + 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC5, 0xF9, 0x23, 0xE6, 0x94, 0x27, + 0xC4, 0x80, 0x14, 0xA4, 0x80, 0x32, 0x5F, 0x40, 0xA3, 0x8D, 0x6F, 0x70, 0xC0, 0xE5, 0x36, 0x71, + 0x71, 0x3A, 0x75, 0xA4, 0xAA, 0x1A, 0x92, 0x94, 0x89, 0x5E, 0xAC, 0x23, 0x71, 0xCB, 0x4E, 0x67, + 0x7D, 0x41, 0x3F, 0xAA, 0xE3, 0x4B, 0xB7, 0x7B, 0xBE, 0x9D, 0xC1, 0xA8, 0x38, 0x8F, 0x69, 0x2F, + 0x3A, 0x24, 0xE9, 0x77, 0x59, 0x12, 0xC7, 0x66, 0x04, 0x43, 0xC2, 0x0D, 0x26, 0x82, 0x89, 0x40, + 0x19, 0xF2, 0x2C, 0xEA, 0xE7, 0x4C, 0xE7, 0x7C, 0x05, 0x1A, 0xB8, 0xFF, 0x88, 0x09, 0x4F, 0x26, + 0x37, 0xEF, 0x3A, 0xA4, 0xFA, 0x22, 0x6C, 0x88, 0xC9, 0x4A, 0x1B, 0x61, 0xF2, 0xAE, 0x10, 0x5E, + 0x6F, 0xBC, 0xD1, 0x79, 0x9B, 0x59, 0x18, 0x60, 0xE5, 0xEE, 0x29, 0xB5, 0x03, 0x2A, 0xA4, 0xCE, + 0xF1, 0x83, 0x19, 0x4F, 0x69, 0x05, 0x73, 0x28, 0x09, 0xFB, 0x22, 0x10, 0x93, 0x22, 0xA0, 0x90, + 0x19, 0x1A, 0x4C, 0x31, 0xF2, 0xD3, 0x2B, 0xD8, 0x84, 0x43, 0xAF, 0x3C, 0x63, 0xFF, 0x98, 0xDB, + 0x20, 0xD2, 0x09, 0x2B, 0x54, 0xC1, 0xEA, 0xFD, 0x6A, 0x83, 0xE7, 0x10, 0xA3, 0x12, 0x71, 0xF5, + 0xD6, 0xD7, 0xE1, 0x12, 0x7A, 0xD5, 0xE0, 0x56, 0x5A, 0xCE, 0xEA, 0x01, 0x5B, 0x68, 0x65, 0x5B, + 0xC1, 0x3F, 0x58, 0x52, 0x33, 0xA9, 0x35, 0x61, 0x4E, 0x22, 0xCB, 0x81, 0xCA, 0x36, 0xA3, 0x12, + 0xCB, 0x06, 0xD6, 0xCF, 0x1B, 0x4D, 0x18, 0x7E, 0xB9, 0x92, 0xB9, 0x12, 0xCF, 0x40, 0x26, 0xD8, + 0x9A, 0x36, 0x85, 0xB3, 0x15, 0xAA, 0x47, 0x93, 0x84, 0x6B, 0x07, 0xBB, 0xBC, 0xD5, 0xB3, 0xDE, + 0x25, 0x00, 0x11, 0x89, 0x00, 0x68, 0xC1, 0x29, 0x3C, 0xEA, 0x3E, 0x2D, 0xEE, 0x50, 0xAB, 0xD7, + 0x1C, 0x30, 0x06, 0x78, 0x3C, 0xA5, 0x10, 0x23, 0x67, 0x91, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, + 0x82, 0x03, 0x57, 0x30, 0x82, 0x03, 0x53, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, + 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, + 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x82, 0x01, 0xC3, + 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x82, 0x01, 0xBA, 0x30, 0x82, 0x01, 0xB6, 0x30, 0x82, 0x01, + 0xB2, 0x06, 0x08, 0x60, 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, 0x03, 0x30, 0x82, 0x01, 0xA4, 0x30, + 0x3A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2E, 0x68, 0x74, 0x74, + 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x73, 0x6C, 0x2D, 0x63, 0x70, 0x73, 0x2D, 0x72, 0x65, 0x70, + 0x6F, 0x73, 0x69, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x68, 0x74, 0x6D, 0x30, 0x82, 0x01, 0x64, 0x06, + 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1E, 0x82, 0x01, + 0x52, 0x00, 0x41, 0x00, 0x6E, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, 0x00, + 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, + 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, + 0x63, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x6E, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, + 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, + 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, + 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x50, 0x00, 0x2F, 0x00, 0x43, 0x00, + 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, 0x00, + 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x79, 0x00, 0x69, 0x00, + 0x6E, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, + 0x20, 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6D, 0x00, 0x65, 0x00, + 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, + 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6C, 0x00, + 0x69, 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, 0x00, + 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, + 0x20, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, 0x00, + 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x63, 0x00, + 0x65, 0x00, 0x2E, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x7F, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x73, 0x30, 0x71, 0x30, 0x24, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x49, 0x06, + 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x3D, 0x68, 0x74, 0x74, 0x70, 0x3A, + 0x2F, 0x2F, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, + 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, + 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6F, + 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x81, 0x8F, 0x06, 0x03, 0x55, 0x1D, 0x1F, + 0x04, 0x81, 0x87, 0x30, 0x81, 0x84, 0x30, 0x40, 0xA0, 0x3E, 0xA0, 0x3C, 0x86, 0x3A, 0x68, 0x74, + 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x33, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, + 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, + 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6F, + 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x40, 0xA0, 0x3E, 0xA0, 0x3C, 0x86, 0x3A, + 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x34, 0x2E, 0x64, 0x69, 0x67, 0x69, + 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x45, 0x56, + 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, + 0x0E, 0x04, 0x16, 0x04, 0x14, 0x97, 0x48, 0x03, 0xEB, 0x15, 0x08, 0x6B, 0xB9, 0xB2, 0x58, 0x23, + 0xCC, 0x94, 0x2E, 0xF1, 0xC6, 0x65, 0xD2, 0x64, 0x8E, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xB1, 0x3E, 0xC3, 0x69, 0x03, 0xF8, 0xBF, 0x47, 0x01, 0xD4, + 0x98, 0x26, 0x1A, 0x08, 0x02, 0xEF, 0x63, 0x64, 0x2B, 0xC3, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x49, 0xEB, + 0x7C, 0x60, 0xBE, 0xAE, 0xEF, 0xC9, 0x7C, 0xB3, 0xC5, 0xBA, 0x4B, 0x64, 0xDF, 0x16, 0x69, 0xE2, + 0x86, 0xFA, 0x29, 0xD9, 0xDE, 0x98, 0x85, 0x7D, 0x40, 0x66, 0x26, 0x33, 0x2F, 0x44, 0x55, 0xAA, + 0xAA, 0x90, 0xE9, 0x35, 0x70, 0x0A, 0x34, 0xBE, 0xD3, 0xAE, 0x54, 0x2E, 0x8E, 0x65, 0x00, 0xD6, + 0x7A, 0x32, 0x20, 0x3E, 0x6C, 0x26, 0xB8, 0x98, 0xA9, 0x39, 0xB1, 0xBC, 0x95, 0xC7, 0xAA, 0xE9, + 0xF5, 0xEE, 0x46, 0x66, 0xC6, 0xB3, 0xE8, 0x12, 0xF8, 0xB3, 0x97, 0x9D, 0xFF, 0x74, 0x58, 0x82, + 0x34, 0x99, 0x75, 0x50, 0xAC, 0x44, 0x8F, 0xE8, 0x92, 0xCE, 0x7D, 0x8B, 0x0F, 0x31, 0x96, 0xC7, + 0xDC, 0xD3, 0x11, 0x30, 0x98, 0x74, 0x16, 0xC6, 0xE5, 0x6B, 0x45, 0x76, 0xA3, 0x94, 0x01, 0xCD, + 0x33, 0x00, 0x7A, 0x48, 0xF6, 0x6F, 0x86, 0x31, 0xC9, 0x56, 0x2B, 0x33, 0x22, 0xD5, 0xF8, 0x01, + 0xB6, 0x44, 0xCE, 0x8C, 0xB4, 0xCA, 0x88, 0xD2, 0xE4, 0x16, 0xE3, 0xE7, 0xF6, 0xE2, 0x3E, 0xE1, + 0x09, 0xC0, 0x9D, 0x79, 0x43, 0x43, 0x7F, 0x55, 0x5C, 0x05, 0xAD, 0x93, 0x10, 0xC6, 0x2C, 0x0D, + 0x6B, 0xC0, 0x9E, 0xEA, 0x78, 0xE5, 0xD2, 0x77, 0xD6, 0xB8, 0xDA, 0x9A, 0x98, 0x7F, 0xBA, 0x4C, + 0x92, 0x2B, 0x9D, 0xBD, 0xA4, 0x88, 0xB1, 0xDD, 0xAF, 0xC3, 0x4C, 0xD2, 0x97, 0x9B, 0x03, 0xC6, + 0xAE, 0x5F, 0x1B, 0x44, 0x0F, 0x33, 0x37, 0x15, 0xE3, 0xCB, 0xFF, 0x2F, 0x56, 0xD3, 0x16, 0xA4, + 0x5B, 0x55, 0x67, 0x9D, 0xA2, 0xCA, 0xDB, 0x34, 0x6C, 0x0C, 0x73, 0x4A, 0xB5, 0x7B, 0xA4, 0xB6, + 0xB3, 0xE9, 0x35, 0x02, 0x78, 0x70, 0xEC, 0x00, 0x7A, 0xCB, 0xFC, 0x4B, 0x4F, 0x22, 0x36, 0xBB, + 0x14, 0x84, 0xC9, 0x8F, 0x91, 0xDD, 0x0F, 0x3C, 0x75, 0x8C, 0xCA, 0x0B, 0x88, 0xE7, 0x30, 0x82, + 0x06, 0xCD, 0x30, 0x82, 0x05, 0xB5, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x06, 0xFD, 0xF9, + 0x03, 0x96, 0x03, 0xAD, 0xEA, 0x00, 0x0A, 0xEB, 0x3F, 0x27, 0xBB, 0xBA, 0x1B, 0x30, 0x0D, 0x06, + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x65, 0x31, 0x0B, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x24, 0x30, + 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x36, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5A, 0x30, 0x62, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, + 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, + 0x49, 0x44, 0x20, 0x43, 0x41, 0x2D, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, + 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xE8, 0x82, 0x2D, 0x99, 0xF9, 0xCA, 0xC2, 0x42, + 0x95, 0xA5, 0x80, 0x73, 0x40, 0x70, 0xD2, 0x9E, 0x56, 0x54, 0x5C, 0xA9, 0xC4, 0xD2, 0x41, 0x06, + 0x8F, 0xC9, 0x33, 0xFC, 0x4D, 0x45, 0x91, 0x5C, 0x81, 0x9F, 0xED, 0x2C, 0x9C, 0xF8, 0x16, 0x59, + 0xDF, 0x9E, 0xB5, 0x24, 0x15, 0xC2, 0x98, 0xB9, 0xB4, 0x77, 0x49, 0xDC, 0x89, 0xC4, 0x0A, 0xDA, + 0xAF, 0xCB, 0x5E, 0x6B, 0xED, 0xAD, 0xB0, 0x71, 0x31, 0xEB, 0xCF, 0x3A, 0x40, 0x0C, 0x46, 0x4D, + 0x93, 0xEC, 0x8B, 0x7A, 0x36, 0x08, 0x03, 0xAB, 0x0C, 0x34, 0xFE, 0x18, 0x49, 0x82, 0xFE, 0xC7, + 0xC7, 0x31, 0x48, 0x80, 0x7C, 0x1E, 0xA2, 0x0F, 0x92, 0x0E, 0x50, 0xC9, 0xC6, 0x87, 0xEB, 0x36, + 0x3F, 0xD8, 0x30, 0xC3, 0xFF, 0xA6, 0xF7, 0xFB, 0xA2, 0xCD, 0x6F, 0x73, 0x23, 0xFE, 0xAC, 0x56, + 0x05, 0x90, 0xF0, 0x32, 0x21, 0x16, 0x89, 0xC6, 0x70, 0x88, 0xF9, 0x05, 0x97, 0x7D, 0xA3, 0xC7, + 0x43, 0xDD, 0x02, 0xE8, 0x3B, 0x3D, 0xED, 0xB1, 0x41, 0xA3, 0xED, 0x3F, 0xBE, 0xDB, 0x95, 0x48, + 0xC4, 0xEE, 0x1E, 0xB3, 0xF2, 0xBC, 0x0C, 0x2B, 0x99, 0xD0, 0xC6, 0x5D, 0x12, 0x42, 0x81, 0xE1, + 0x83, 0x6E, 0x82, 0x73, 0x3F, 0x26, 0x4B, 0x14, 0x90, 0xAE, 0x59, 0x66, 0x0A, 0xC4, 0x8D, 0xBE, + 0xD2, 0xCE, 0x06, 0xAE, 0xAD, 0x84, 0x6F, 0x48, 0x84, 0x9B, 0x4F, 0x40, 0xB9, 0xF1, 0x4C, 0xF2, + 0xAF, 0x98, 0xFB, 0xF6, 0xCE, 0x40, 0x5D, 0x5C, 0xF6, 0xA8, 0xF1, 0x2F, 0xAF, 0xEC, 0x89, 0x22, + 0xF2, 0x6B, 0x18, 0x65, 0xB1, 0xC1, 0x73, 0xAD, 0xD7, 0xF1, 0xD8, 0xCF, 0x1E, 0x0A, 0x74, 0x5C, + 0x42, 0xB8, 0x68, 0x7E, 0xB7, 0xD5, 0x77, 0x0A, 0x27, 0x56, 0x7C, 0x0F, 0x62, 0xA4, 0x3F, 0x32, + 0x14, 0x60, 0x95, 0xFD, 0x07, 0x04, 0xA2, 0x09, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x03, + 0x7A, 0x30, 0x82, 0x03, 0x76, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x3B, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x34, 0x30, 0x32, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x08, + 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x04, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x08, 0x30, 0x82, 0x01, 0xD2, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x82, 0x01, 0xC9, 0x30, + 0x82, 0x01, 0xC5, 0x30, 0x82, 0x01, 0xB4, 0x06, 0x0A, 0x60, 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, + 0x00, 0x01, 0x04, 0x30, 0x82, 0x01, 0xA4, 0x30, 0x3A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2E, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x73, 0x6C, + 0x2D, 0x63, 0x70, 0x73, 0x2D, 0x72, 0x65, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x6F, 0x72, 0x79, 0x2E, + 0x68, 0x74, 0x6D, 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x02, 0x30, 0x82, 0x01, 0x56, 0x1E, 0x82, 0x01, 0x52, 0x00, 0x41, 0x00, 0x6E, 0x00, 0x79, 0x00, + 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, + 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, + 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x20, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, + 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, + 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, + 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, + 0x43, 0x00, 0x50, 0x00, 0x2F, 0x00, 0x43, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, + 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, + 0x65, 0x00, 0x6C, 0x00, 0x79, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50, 0x00, + 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, + 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6D, 0x00, + 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, + 0x6C, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, + 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x63, 0x00, + 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6E, 0x00, + 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2E, 0x30, 0x0B, 0x06, 0x09, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, 0x03, 0x15, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, + 0x01, 0xFF, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x79, 0x06, 0x08, + 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6D, 0x30, 0x6B, 0x30, 0x24, 0x06, 0x08, + 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, + 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, + 0x6F, 0x6D, 0x30, 0x43, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x37, + 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2E, 0x64, + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, + 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x49, 0x44, 0x52, 0x6F, 0x6F, + 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x81, 0x81, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, + 0x7A, 0x30, 0x78, 0x30, 0x3A, 0xA0, 0x38, 0xA0, 0x36, 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3A, + 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x33, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, + 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, + 0x72, 0x65, 0x64, 0x49, 0x44, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, + 0x3A, 0xA0, 0x38, 0xA0, 0x36, 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, + 0x6C, 0x34, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x49, + 0x44, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x1D, 0x06, 0x03, 0x55, + 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x15, 0x00, 0x12, 0x2B, 0x13, 0x98, 0xB2, 0x99, 0x07, 0xED, + 0x1E, 0xDF, 0xA2, 0xBE, 0x57, 0x0D, 0x2B, 0x67, 0x02, 0xCD, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x45, 0xEB, 0xA2, 0xAF, 0xF4, 0x92, 0xCB, 0x82, 0x31, + 0x2D, 0x51, 0x8B, 0xA7, 0xA7, 0x21, 0x9D, 0xF3, 0x6D, 0xC8, 0x0F, 0x30, 0x0D, 0x06, 0x09, 0x2A, + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x46, + 0x50, 0x3E, 0xC9, 0xB7, 0x28, 0x24, 0xA7, 0x38, 0x1D, 0xB6, 0x5B, 0x29, 0xAF, 0x52, 0xCF, 0x52, + 0xE9, 0x31, 0x47, 0xAB, 0x56, 0x5C, 0x7B, 0xD5, 0x0D, 0x0B, 0x41, 0xB3, 0xEF, 0xEC, 0x75, 0x1F, + 0x74, 0x38, 0xF2, 0xB2, 0x5C, 0x61, 0xA2, 0x9C, 0x95, 0xC3, 0x50, 0xE4, 0x82, 0xB9, 0x23, 0xD1, + 0xBA, 0x3A, 0x86, 0x72, 0xAD, 0x38, 0x78, 0xAC, 0x75, 0x5D, 0x17, 0x17, 0x34, 0x72, 0x47, 0x85, + 0x94, 0x56, 0xD1, 0xEB, 0xBB, 0x36, 0x84, 0x77, 0xCC, 0x24, 0xA5, 0xF3, 0x04, 0x19, 0x55, 0xA9, + 0xE7, 0xE3, 0xE7, 0xAB, 0x62, 0xCD, 0xFB, 0x8B, 0x2D, 0x90, 0xC2, 0xC0, 0xD2, 0xB5, 0x94, 0xBD, + 0x5E, 0x4F, 0xB1, 0x05, 0xD2, 0x0E, 0x3D, 0x1A, 0xA9, 0x14, 0x5B, 0xA6, 0x86, 0x31, 0x62, 0xA8, + 0xA8, 0x33, 0xE4, 0x9B, 0x39, 0xA7, 0xC4, 0xF5, 0xCE, 0x1D, 0x78, 0x76, 0x94, 0x25, 0x73, 0xE4, + 0x2A, 0xAB, 0xCF, 0x9C, 0x76, 0x4B, 0xED, 0x5F, 0xC2, 0x4B, 0x16, 0xE4, 0x4B, 0x70, 0x4C, 0x00, + 0x89, 0x1E, 0xFC, 0xC5, 0x79, 0xBC, 0x4C, 0x12, 0x57, 0xFE, 0x5F, 0xE1, 0x1E, 0xBC, 0x02, 0x5D, + 0xA8, 0xFE, 0xFB, 0x07, 0x38, 0x4F, 0x0D, 0xC6, 0x5D, 0x91, 0xB9, 0x0F, 0x67, 0x45, 0xCD, 0xD6, + 0x83, 0xED, 0xE7, 0x92, 0x0D, 0x8D, 0xB1, 0x69, 0x8C, 0x4F, 0xFB, 0x59, 0xE0, 0x23, 0x0F, 0xD2, + 0xAA, 0xAE, 0x00, 0x7C, 0xEE, 0x9C, 0x42, 0x0E, 0xCF, 0x91, 0xD7, 0x27, 0xB7, 0x16, 0xEE, 0x0F, + 0xC3, 0xBD, 0x7C, 0x0A, 0xA0, 0xEE, 0x2C, 0x08, 0x55, 0x85, 0x22, 0xB8, 0xEB, 0x18, 0x1A, 0x4D, + 0xFC, 0x2A, 0x21, 0xAD, 0x49, 0x31, 0x83, 0x47, 0x95, 0x77, 0x71, 0xDC, 0xB1, 0x1B, 0x4B, 0x4B, + 0x1C, 0x10, 0x9C, 0x77, 0x14, 0xC1, 0x9D, 0x4F, 0x2F, 0x5A, 0x95, 0x08, 0x29, 0x10, 0x26, 0x31, + 0x82, 0x04, 0x34, 0x30, 0x82, 0x04, 0x30, 0x02, 0x01, 0x01, 0x30, 0x81, 0x87, 0x30, 0x73, 0x31, + 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, + 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, + 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, + 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x32, + 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, + 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, + 0x2D, 0x31, 0x02, 0x10, 0x03, 0xE9, 0x01, 0x7D, 0x54, 0xCD, 0x93, 0xF0, 0x94, 0xD0, 0xA2, 0xAB, + 0x7F, 0xC0, 0xE3, 0xF5, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, + 0x70, 0x30, 0x10, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0C, 0x31, + 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, + 0x31, 0x0C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1C, + 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0B, 0x31, 0x0E, 0x30, 0x0C, + 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0xE6, 0x7D, 0x64, + 0x4F, 0x60, 0xEB, 0xF0, 0x7E, 0xBC, 0x21, 0x86, 0x75, 0x1F, 0x02, 0x93, 0xA2, 0x42, 0xDB, 0xB7, + 0x73, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x04, 0x82, 0x01, 0x00, 0x1D, 0x12, 0xFE, 0x8D, 0x1F, 0xEA, 0x97, 0x9C, 0x81, 0x84, 0xCD, 0x4E, + 0xDA, 0x22, 0x1B, 0x0E, 0x01, 0xB3, 0x3B, 0xE3, 0xBC, 0x4D, 0x45, 0x2C, 0xD4, 0xD9, 0x1A, 0xED, + 0x9A, 0x4E, 0xF3, 0x20, 0xEF, 0x46, 0xDB, 0xEA, 0x22, 0x2C, 0x83, 0xA2, 0xEB, 0x30, 0x04, 0x5F, + 0x0F, 0xD0, 0xEE, 0x5D, 0x61, 0x68, 0x18, 0x47, 0xBD, 0x5A, 0x94, 0x7C, 0x8C, 0x26, 0xD7, 0x5F, + 0x34, 0x35, 0x84, 0xD6, 0xEE, 0x46, 0xA4, 0x86, 0xA2, 0xF2, 0xDB, 0x22, 0xC8, 0x80, 0xB6, 0xCA, + 0x0E, 0x3B, 0x0A, 0x16, 0x10, 0x50, 0x43, 0xD9, 0x75, 0x53, 0xCD, 0x76, 0x2F, 0x0B, 0x08, 0x7D, + 0xF8, 0x65, 0x23, 0x7F, 0xBC, 0x7A, 0x9F, 0x4B, 0xBA, 0x67, 0xF2, 0x16, 0x17, 0x75, 0x57, 0x66, + 0x4C, 0x54, 0x51, 0xAC, 0x02, 0x4C, 0x68, 0x96, 0xB7, 0x80, 0xBE, 0xD9, 0x3B, 0x08, 0xE4, 0x8D, + 0x6E, 0x06, 0x3D, 0x4C, 0x6F, 0x38, 0x22, 0xF8, 0xF9, 0xBC, 0xD7, 0xD8, 0x4F, 0xC7, 0x73, 0x3B, + 0xB1, 0x0F, 0x53, 0x75, 0x1A, 0x72, 0xDA, 0xCA, 0x77, 0x78, 0x69, 0x22, 0x45, 0x5A, 0x4E, 0x45, + 0xC3, 0xF5, 0xC5, 0x48, 0x99, 0x27, 0x1B, 0x80, 0x4B, 0x8E, 0x43, 0x27, 0x00, 0xC6, 0x74, 0x72, + 0x79, 0x69, 0x47, 0x8D, 0x40, 0x30, 0x23, 0xBC, 0xE6, 0x08, 0x5D, 0x47, 0x19, 0xFF, 0xFE, 0x85, + 0xDC, 0x3F, 0x81, 0xD2, 0x8B, 0x22, 0x4A, 0x32, 0x4D, 0x30, 0xB8, 0xA5, 0x83, 0xA8, 0xCF, 0xB7, + 0xFA, 0x7F, 0x30, 0xAE, 0xD9, 0x6C, 0x8D, 0x4D, 0x44, 0x40, 0xED, 0x58, 0x30, 0xED, 0x29, 0xF7, + 0xB2, 0x27, 0xA8, 0x38, 0x65, 0x0B, 0x3A, 0xBE, 0x38, 0x40, 0xBE, 0xDD, 0x21, 0x09, 0xE2, 0x1B, + 0x53, 0xE6, 0x44, 0x42, 0x8C, 0x27, 0x3F, 0x67, 0xD0, 0x91, 0xF0, 0x60, 0xD8, 0xF9, 0x2B, 0x2C, + 0x04, 0x79, 0x88, 0xB5, 0xA1, 0x82, 0x02, 0x0F, 0x30, 0x82, 0x02, 0x0B, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x06, 0x31, 0x82, 0x01, 0xFC, 0x30, 0x82, 0x01, 0xF8, 0x02, + 0x01, 0x01, 0x30, 0x76, 0x30, 0x62, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, + 0x20, 0x49, 0x44, 0x20, 0x43, 0x41, 0x2D, 0x31, 0x02, 0x10, 0x03, 0x01, 0x9A, 0x02, 0x3A, 0xFF, + 0x58, 0xB1, 0x6B, 0xD6, 0xD5, 0xEA, 0xE6, 0x17, 0xF0, 0x66, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, + 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, 0x5D, 0x30, 0x18, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, + 0x01, 0x30, 0x1C, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x05, 0x31, 0x0F, + 0x17, 0x0D, 0x31, 0x35, 0x30, 0x35, 0x33, 0x30, 0x30, 0x38, 0x34, 0x32, 0x31, 0x34, 0x5A, 0x30, + 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, + 0x88, 0x9D, 0x5C, 0x13, 0x59, 0xC1, 0x1B, 0xE0, 0x00, 0xD7, 0xB8, 0x63, 0x7B, 0x77, 0x85, 0x9C, + 0x7C, 0xE8, 0x30, 0x6C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x81, 0x7C, 0xB0, 0x53, 0x40, 0xE3, 0xAE, 0x29, 0x4B, + 0xA3, 0x74, 0x67, 0xB0, 0x84, 0xFF, 0x51, 0xCC, 0xB3, 0x76, 0xE3, 0x46, 0xC0, 0x6D, 0xA0, 0x1C, + 0x1A, 0x83, 0x3F, 0xBA, 0x17, 0xD1, 0x38, 0xF0, 0xD6, 0x6F, 0x3D, 0x28, 0xBA, 0x5B, 0x64, 0xC3, + 0x06, 0x44, 0xFB, 0x34, 0x84, 0x49, 0x2E, 0xE0, 0x39, 0xB2, 0xC8, 0x6F, 0xA8, 0x08, 0x62, 0xA6, + 0xC5, 0xEC, 0xCF, 0xF4, 0x26, 0x17, 0xCD, 0x42, 0x67, 0x07, 0x8C, 0x36, 0x10, 0xE4, 0x5B, 0x70, + 0x3F, 0xA3, 0xAD, 0xFA, 0xD1, 0x54, 0x5F, 0x46, 0x03, 0x15, 0xE0, 0x43, 0x38, 0x61, 0xF4, 0x93, + 0x79, 0xD2, 0xB6, 0xC5, 0xF5, 0xC8, 0x41, 0x4D, 0xCE, 0x08, 0x2A, 0x0A, 0xEE, 0x31, 0xC0, 0xE7, + 0x8E, 0x43, 0xCC, 0x48, 0xBF, 0xD0, 0x13, 0xE1, 0x70, 0x66, 0x29, 0xB1, 0x9E, 0x40, 0x88, 0x91, + 0xED, 0xFB, 0x6A, 0xD4, 0x0A, 0xF2, 0xA4, 0xDA, 0x5D, 0x81, 0x1F, 0xB5, 0x7A, 0xA9, 0x39, 0x96, + 0x97, 0x6D, 0x43, 0xDC, 0xBA, 0x8D, 0xD7, 0x6D, 0x67, 0x99, 0x90, 0x8F, 0x8C, 0xFA, 0x62, 0x36, + 0x4C, 0x5F, 0x5F, 0x0D, 0xF8, 0xFE, 0x75, 0x85, 0x1B, 0x2D, 0xF0, 0xA1, 0x36, 0x3E, 0x56, 0xCD, + 0x58, 0x50, 0xC0, 0x20, 0x1D, 0x76, 0xF1, 0x74, 0x34, 0x79, 0x14, 0x8F, 0xBB, 0x7D, 0x52, 0xAE, + 0xC0, 0xEE, 0x4F, 0x38, 0xF5, 0x0A, 0x06, 0x64, 0xFC, 0x76, 0xEE, 0x6B, 0x86, 0x21, 0x0A, 0xFC, + 0xF2, 0x2F, 0xF4, 0xE2, 0x7B, 0xAD, 0x47, 0xD4, 0xF5, 0x29, 0xF6, 0x46, 0x86, 0xBC, 0x77, 0x5D, + 0x00, 0xB3, 0x1F, 0x5E, 0x56, 0x88, 0xA4, 0xE8, 0x80, 0xAF, 0x79, 0xD6, 0xBF, 0x49, 0x86, 0xBC, + 0x24, 0x54, 0x2C, 0xEA, 0x01, 0x3D, 0x3E, 0xFB, 0xF4, 0x0E, 0x8C, 0x64, 0x3E, 0x0D, 0x56, 0xFB, + 0x47, 0xAA, 0xB1, 0xFD, 0x6E, 0xBF, 0x9E, 0x00 +}; + +const size_t KProcessHacker_2_38_x64_size = 40088; +const unsigned char KProcessHacker_2_38_x64[40088] = { + 0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, + 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE0, 0x00, 0x00, 0x00, + 0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68, + 0x69, 0x73, 0x20, 0x70, 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, + 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20, + 0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xB2, 0xC6, 0xAF, 0xE4, 0xF6, 0xA7, 0xC1, 0xB7, 0xF6, 0xA7, 0xC1, 0xB7, 0xF6, 0xA7, 0xC1, 0xB7, + 0xF6, 0xA7, 0xC0, 0xB7, 0xB1, 0xA7, 0xC1, 0xB7, 0xFF, 0xDF, 0x52, 0xB7, 0xF5, 0xA7, 0xC1, 0xB7, + 0xFF, 0xDF, 0x54, 0xB7, 0xF5, 0xA7, 0xC1, 0xB7, 0xFF, 0xDF, 0x42, 0xB7, 0xF3, 0xA7, 0xC1, 0xB7, + 0xFF, 0xDF, 0x48, 0xB7, 0xFF, 0xA7, 0xC1, 0xB7, 0xFF, 0xDF, 0x55, 0xB7, 0xF7, 0xA7, 0xC1, 0xB7, + 0xFF, 0xDF, 0x50, 0xB7, 0xF7, 0xA7, 0xC1, 0xB7, 0x52, 0x69, 0x63, 0x68, 0xF6, 0xA7, 0xC1, 0xB7, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x50, 0x45, 0x00, 0x00, 0x64, 0x86, 0x07, 0x00, 0xE4, 0x77, 0x69, 0x55, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x22, 0x00, 0x0B, 0x02, 0x09, 0x00, 0x00, 0x5E, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xA0, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xC0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0xF2, 0x6F, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x84, 0xA0, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0xF8, 0x02, 0x00, 0x00, + 0x00, 0x50, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x98, 0x24, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x32, 0x00, 0x00, 0x1C, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x40, 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, 0x2E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, + 0x70, 0x14, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x68, + 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0xD4, 0x0A, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, + 0x00, 0x0C, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x2E, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, + 0x40, 0x03, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC8, + 0x2E, 0x70, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x7C, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, + 0x00, 0x04, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x50, 0x41, 0x47, 0x45, 0x00, 0x00, 0x00, 0x00, + 0xB2, 0x3C, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x60, + 0x49, 0x4E, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x1A, 0x09, 0x00, 0x00, 0x00, 0xA0, 0x00, 0x00, + 0x00, 0x0A, 0x00, 0x00, 0x00, 0x6A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xE2, 0x2E, 0x72, 0x73, 0x72, 0x63, 0x00, 0x00, 0x00, + 0xF8, 0x02, 0x00, 0x00, 0x00, 0xB0, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, + 0x24, 0x18, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x48, 0x8B, 0x05, 0xE2, 0x30, 0x00, 0x00, 0x48, 0x33, + 0xC4, 0x48, 0x89, 0x44, 0x24, 0x38, 0x48, 0x8B, 0x82, 0xB8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xDA, + 0x33, 0xFF, 0x48, 0x8B, 0x70, 0x08, 0xFF, 0x15, 0x0C, 0x20, 0x00, 0x00, 0x44, 0x8D, 0x5F, 0x01, + 0x44, 0x39, 0x1D, 0xE9, 0x32, 0x00, 0x00, 0x75, 0x40, 0x48, 0x8B, 0x56, 0x08, 0x44, 0x8A, 0x43, + 0x40, 0x21, 0x7C, 0x24, 0x2C, 0x21, 0x7C, 0x24, 0x30, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0x48, 0x83, + 0xC2, 0x20, 0x44, 0x89, 0x5C, 0x24, 0x20, 0x44, 0x89, 0x5C, 0x24, 0x24, 0xC7, 0x44, 0x24, 0x28, + 0x14, 0x00, 0x00, 0x00, 0xFF, 0x15, 0xDE, 0x1F, 0x00, 0x00, 0x84, 0xC0, 0x75, 0x0B, 0xBF, 0x61, + 0x00, 0x00, 0xC0, 0xFF, 0x15, 0xBF, 0x1F, 0x00, 0x00, 0x48, 0x83, 0x63, 0x38, 0x00, 0x33, 0xD2, + 0x48, 0x8B, 0xCB, 0x89, 0x7B, 0x30, 0xFF, 0x15, 0xA4, 0x1F, 0x00, 0x00, 0x8B, 0xC7, 0x48, 0x8B, + 0x4C, 0x24, 0x38, 0x48, 0x33, 0xCC, 0xE8, 0xF5, 0x0D, 0x00, 0x00, 0x48, 0x8B, 0x5C, 0x24, 0x50, + 0x48, 0x8B, 0x74, 0x24, 0x60, 0x48, 0x83, 0xC4, 0x40, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x6C, 0x24, 0x10, 0x48, 0x89, + 0x74, 0x24, 0x20, 0x57, 0x41, 0x54, 0x41, 0x55, 0x48, 0x83, 0xEC, 0x20, 0xB8, 0x00, 0x08, 0x00, + 0x00, 0x4C, 0x8B, 0xEA, 0x4C, 0x8B, 0xE1, 0xBD, 0x08, 0x00, 0x00, 0x00, 0x33, 0xFF, 0x89, 0x44, + 0x24, 0x50, 0x8B, 0xD0, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x41, 0xB8, 0x4B, 0x70, 0x68, 0x54, 0xFF, + 0x15, 0xFB, 0x1E, 0x00, 0x00, 0x48, 0x8B, 0xF0, 0x48, 0x3B, 0xC7, 0x0F, 0x84, 0x99, 0x00, 0x00, + 0x00, 0x44, 0x8B, 0x44, 0x24, 0x50, 0x4C, 0x8D, 0x4C, 0x24, 0x50, 0x48, 0x8B, 0xD0, 0xB9, 0x0B, + 0x00, 0x00, 0x00, 0xFF, 0x15, 0xFF, 0x1E, 0x00, 0x00, 0x3B, 0xC7, 0x8B, 0xD8, 0x7D, 0x26, 0xBA, + 0x4B, 0x70, 0x68, 0x54, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0xCB, 0x1E, 0x00, 0x00, 0x81, 0xFB, 0x04, + 0x00, 0x00, 0xC0, 0x75, 0x0B, 0x83, 0xC5, 0xFF, 0x74, 0x65, 0x8B, 0x44, 0x24, 0x50, 0xEB, 0xA2, + 0x48, 0x8B, 0x74, 0x24, 0x50, 0x3B, 0xDF, 0x7C, 0x56, 0x8B, 0xD7, 0x39, 0x3E, 0x76, 0x2F, 0x4F, + 0x8D, 0x04, 0x2C, 0x48, 0x8D, 0x4E, 0x18, 0x4D, 0x3B, 0xC4, 0x72, 0x10, 0x4C, 0x3B, 0x21, 0x72, + 0x0B, 0x8B, 0x41, 0x08, 0x48, 0x03, 0x01, 0x4C, 0x3B, 0xC0, 0x76, 0x0F, 0xFF, 0xC2, 0x48, 0x81, + 0xC1, 0x28, 0x01, 0x00, 0x00, 0x3B, 0x16, 0x73, 0x05, 0xEB, 0xDC, 0x40, 0xB7, 0x01, 0xBA, 0x4B, + 0x70, 0x68, 0x54, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0x6C, 0x1E, 0x00, 0x00, 0x40, 0xF6, 0xDF, 0x1B, + 0xC0, 0xF7, 0xD0, 0x25, 0x05, 0x00, 0x00, 0xC0, 0xEB, 0x07, 0xBB, 0x9A, 0x00, 0x00, 0xC0, 0x8B, + 0xC3, 0x48, 0x8B, 0x5C, 0x24, 0x40, 0x48, 0x8B, 0x6C, 0x24, 0x48, 0x48, 0x8B, 0x74, 0x24, 0x58, + 0x48, 0x83, 0xC4, 0x20, 0x41, 0x5D, 0x41, 0x5C, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, 0x24, 0x18, 0x48, 0x89, 0x7C, 0x24, 0x20, 0x41, + 0x54, 0x41, 0x55, 0x41, 0x57, 0x48, 0x81, 0xEC, 0x00, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x05, 0x0D, + 0x2F, 0x00, 0x00, 0x48, 0x33, 0xC4, 0x48, 0x89, 0x84, 0x24, 0xF0, 0x00, 0x00, 0x00, 0x4C, 0x8B, + 0xFA, 0x48, 0x89, 0x54, 0x24, 0x40, 0x48, 0x8B, 0x82, 0xB8, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x68, + 0x20, 0x8B, 0x70, 0x10, 0x8B, 0x78, 0x18, 0x44, 0x8A, 0x62, 0x40, 0x85, 0xF6, 0x74, 0x0F, 0x4D, + 0x85, 0xED, 0x75, 0x0A, 0xBB, 0x06, 0x02, 0x00, 0xC0, 0xE9, 0x32, 0x09, 0x00, 0x00, 0x81, 0xFE, + 0x80, 0x00, 0x00, 0x00, 0x76, 0x0A, 0xBB, 0x06, 0x02, 0x00, 0xC0, 0xE9, 0x20, 0x09, 0x00, 0x00, + 0x45, 0x84, 0xE4, 0x74, 0x31, 0x41, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xD6, 0x49, 0x8B, + 0xCD, 0xFF, 0x15, 0x11, 0x1E, 0x00, 0x00, 0x4C, 0x8B, 0xC6, 0x49, 0x8B, 0xD5, 0x48, 0x8D, 0x4C, + 0x24, 0x70, 0xE8, 0xA9, 0x0C, 0x00, 0x00, 0x90, 0xEB, 0x1C, 0x8B, 0xD8, 0x4C, 0x8B, 0x7C, 0x24, + 0x40, 0xE9, 0xEA, 0x08, 0x00, 0x00, 0x4C, 0x8B, 0xC6, 0x49, 0x8B, 0xD5, 0x48, 0x8D, 0x4C, 0x24, + 0x70, 0xE8, 0x8A, 0x0C, 0x00, 0x00, 0xB8, 0x97, 0x21, 0x99, 0x99, 0x3B, 0xF8, 0x0F, 0x87, 0x16, + 0x04, 0x00, 0x00, 0x3B, 0xF8, 0x0F, 0x84, 0xDF, 0x03, 0x00, 0x00, 0xB8, 0xDF, 0x20, 0x99, 0x99, + 0x3B, 0xF8, 0x0F, 0x87, 0x0F, 0x02, 0x00, 0x00, 0x3B, 0xF8, 0x0F, 0x84, 0xE0, 0x01, 0x00, 0x00, + 0x81, 0xFF, 0x03, 0x20, 0x99, 0x99, 0x0F, 0x84, 0xB1, 0x01, 0x00, 0x00, 0x81, 0xFF, 0xCB, 0x20, + 0x99, 0x99, 0x0F, 0x84, 0x76, 0x01, 0x00, 0x00, 0x81, 0xFF, 0xCF, 0x20, 0x99, 0x99, 0x0F, 0x84, + 0x3B, 0x01, 0x00, 0x00, 0x81, 0xFF, 0xD3, 0x20, 0x99, 0x99, 0x0F, 0x84, 0x00, 0x01, 0x00, 0x00, + 0x81, 0xFF, 0xD7, 0x20, 0x99, 0x99, 0x0F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xDB, 0x20, + 0x99, 0x99, 0x0F, 0x85, 0xC7, 0x06, 0x00, 0x00, 0x83, 0xFE, 0x08, 0x74, 0x0A, 0xBB, 0x04, 0x00, + 0x00, 0xC0, 0xE9, 0x59, 0x08, 0x00, 0x00, 0x48, 0x83, 0x3D, 0x39, 0x2E, 0x00, 0x00, 0x00, 0x75, + 0x0A, 0xBB, 0xBB, 0x00, 0x00, 0xC0, 0xE9, 0x45, 0x08, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, + 0x00, 0x48, 0x8D, 0x44, 0x24, 0x68, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCC, 0x4C, 0x8B, + 0x05, 0x53, 0x1D, 0x00, 0x00, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xFF, + 0x15, 0x93, 0x1D, 0x00, 0x00, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0x11, 0x08, 0x00, 0x00, 0x48, + 0x8B, 0x4C, 0x24, 0x68, 0xFF, 0x15, 0xEE, 0x2D, 0x00, 0x00, 0x8B, 0xD8, 0x48, 0x8B, 0x4C, 0x24, + 0x68, 0xFF, 0x15, 0x99, 0x1D, 0x00, 0x00, 0xE9, 0xF4, 0x07, 0x00, 0x00, 0x83, 0xFE, 0x08, 0x74, + 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0xE5, 0x07, 0x00, 0x00, 0x48, 0x83, 0x3D, 0xE5, 0x2D, + 0x00, 0x00, 0x00, 0x75, 0x0A, 0xBB, 0xBB, 0x00, 0x00, 0xC0, 0xE9, 0xD1, 0x07, 0x00, 0x00, 0x48, + 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x60, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, + 0x8A, 0xCC, 0x4C, 0x8B, 0x05, 0xDF, 0x1C, 0x00, 0x00, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, + 0x4C, 0x24, 0x70, 0xFF, 0x15, 0x1F, 0x1D, 0x00, 0x00, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0x9D, + 0x07, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x60, 0xFF, 0x15, 0x9A, 0x2D, 0x00, 0x00, 0x8B, 0xD8, + 0x48, 0x8B, 0x4C, 0x24, 0x60, 0xFF, 0x15, 0x25, 0x1D, 0x00, 0x00, 0xE9, 0x80, 0x07, 0x00, 0x00, + 0x83, 0xFE, 0x18, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x71, 0x07, 0x00, 0x00, 0x45, + 0x8A, 0xCC, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, + 0x4C, 0x24, 0x70, 0xE8, 0x70, 0x69, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0x51, 0x07, 0x00, 0x00, 0x83, + 0xFE, 0x18, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x42, 0x07, 0x00, 0x00, 0x45, 0x8A, + 0xCC, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, + 0x24, 0x70, 0xE8, 0x45, 0x68, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0x22, 0x07, 0x00, 0x00, 0x83, 0xFE, + 0x18, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x13, 0x07, 0x00, 0x00, 0x45, 0x8A, 0xCC, + 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, + 0x70, 0xE8, 0xEE, 0x66, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0xF3, 0x06, 0x00, 0x00, 0x83, 0xFE, 0x08, + 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0xE4, 0x06, 0x00, 0x00, 0x41, 0x8A, 0xD4, 0x48, + 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0x7B, 0x4E, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0xD0, 0x06, 0x00, 0x00, + 0x83, 0xFE, 0x10, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0xC1, 0x06, 0x00, 0x00, 0x45, + 0x8A, 0xC4, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0xC8, 0x69, 0x00, 0x00, + 0x8B, 0xD8, 0xE9, 0xA9, 0x06, 0x00, 0x00, 0x81, 0xFF, 0xE3, 0x20, 0x99, 0x99, 0x0F, 0x84, 0x70, + 0x01, 0x00, 0x00, 0x81, 0xFF, 0xE7, 0x20, 0x99, 0x99, 0x0F, 0x84, 0x1D, 0x01, 0x00, 0x00, 0x81, + 0xFF, 0xEB, 0x20, 0x99, 0x99, 0x0F, 0x84, 0xCA, 0x00, 0x00, 0x00, 0x81, 0xFF, 0xEF, 0x20, 0x99, + 0x99, 0x74, 0x7C, 0x81, 0xFF, 0xF3, 0x20, 0x99, 0x99, 0x74, 0x3B, 0x81, 0xFF, 0x93, 0x21, 0x99, + 0x99, 0x0F, 0x85, 0xC8, 0x04, 0x00, 0x00, 0x83, 0xFE, 0x18, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, + 0xC0, 0xE9, 0x5A, 0x06, 0x00, 0x00, 0x45, 0x8A, 0xCC, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, + 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0x11, 0x71, 0x00, 0x00, 0x8B, + 0xD8, 0xE9, 0x3A, 0x06, 0x00, 0x00, 0x83, 0xFE, 0x20, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, + 0xE9, 0x2B, 0x06, 0x00, 0x00, 0x44, 0x88, 0x64, 0x24, 0x20, 0x44, 0x8B, 0x8C, 0x24, 0x88, 0x00, + 0x00, 0x00, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, + 0x4C, 0x24, 0x70, 0xE8, 0xC4, 0x6C, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0x01, 0x06, 0x00, 0x00, 0x83, + 0xFE, 0x28, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0xF2, 0x05, 0x00, 0x00, 0x44, 0x88, + 0x64, 0x24, 0x28, 0x48, 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, + 0x44, 0x8B, 0x8C, 0x24, 0x88, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, + 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0xDE, 0x69, 0x00, 0x00, 0x8B, 0xD8, + 0xE9, 0xBB, 0x05, 0x00, 0x00, 0x83, 0xFE, 0x28, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, + 0xAC, 0x05, 0x00, 0x00, 0x44, 0x88, 0x64, 0x24, 0x28, 0x48, 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, + 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 0x4C, 0x8B, 0x8C, 0x24, 0x88, 0x00, 0x00, 0x00, 0x4C, 0x8B, + 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, + 0xE8, 0x6B, 0x82, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0x74, 0x05, 0x00, 0x00, 0x83, 0xFE, 0x28, 0x74, + 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x65, 0x05, 0x00, 0x00, 0x44, 0x88, 0x64, 0x24, 0x28, + 0x48, 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 0x4C, 0x8B, 0x8C, + 0x24, 0x88, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, + 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0xC0, 0x80, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0x2D, + 0x05, 0x00, 0x00, 0x83, 0xFE, 0x28, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x1E, 0x05, + 0x00, 0x00, 0x44, 0x88, 0x64, 0x24, 0x28, 0x48, 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, + 0x89, 0x44, 0x24, 0x20, 0x4C, 0x8B, 0x8C, 0x24, 0x88, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x84, 0x24, + 0x80, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0x15, + 0x7F, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0xE6, 0x04, 0x00, 0x00, 0x83, 0xFE, 0x18, 0x74, 0x0A, 0xBB, + 0x04, 0x00, 0x00, 0xC0, 0xE9, 0xD7, 0x04, 0x00, 0x00, 0x45, 0x8A, 0xCC, 0x4C, 0x8B, 0x84, 0x24, + 0x80, 0x00, 0x00, 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0x9E, 0x70, + 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0xB7, 0x04, 0x00, 0x00, 0xB8, 0xB3, 0x21, 0x99, 0x99, 0x3B, 0xF8, + 0x0F, 0x87, 0xC9, 0x02, 0x00, 0x00, 0x3B, 0xF8, 0x0F, 0x84, 0x88, 0x02, 0x00, 0x00, 0x81, 0xFF, + 0x9B, 0x21, 0x99, 0x99, 0x0F, 0x84, 0x04, 0x02, 0x00, 0x00, 0x81, 0xFF, 0x9F, 0x21, 0x99, 0x99, + 0x0F, 0x84, 0xD1, 0x01, 0x00, 0x00, 0x81, 0xFF, 0xA3, 0x21, 0x99, 0x99, 0x0F, 0x84, 0x5D, 0x01, + 0x00, 0x00, 0x81, 0xFF, 0xA7, 0x21, 0x99, 0x99, 0x0F, 0x84, 0xE9, 0x00, 0x00, 0x00, 0x81, 0xFF, + 0xAB, 0x21, 0x99, 0x99, 0x74, 0x52, 0x81, 0xFF, 0xAF, 0x21, 0x99, 0x99, 0x0F, 0x85, 0xBD, 0x02, + 0x00, 0x00, 0x83, 0xFE, 0x28, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x4F, 0x04, 0x00, + 0x00, 0x44, 0x88, 0x64, 0x24, 0x28, 0x48, 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x89, + 0x44, 0x24, 0x20, 0x44, 0x8B, 0x8C, 0x24, 0x88, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x84, 0x24, 0x80, + 0x00, 0x00, 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0xDF, 0x75, 0x00, + 0x00, 0x8B, 0xD8, 0xE9, 0x18, 0x04, 0x00, 0x00, 0x83, 0xFE, 0x28, 0x74, 0x0A, 0xBB, 0x04, 0x00, + 0x00, 0xC0, 0xE9, 0x09, 0x04, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, + 0x24, 0x58, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCC, 0x4C, 0x8B, 0x05, 0x5F, 0x1A, 0x00, + 0x00, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xFF, 0x15, 0x57, 0x19, 0x00, + 0x00, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0xD5, 0x03, 0x00, 0x00, 0x44, 0x88, 0x64, 0x24, 0x30, + 0x48, 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x28, 0x48, 0x8B, 0x84, + 0x24, 0x88, 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 0x4C, 0x8B, 0x8C, 0x24, 0x80, 0x00, + 0x00, 0x00, 0x44, 0x8B, 0x44, 0x24, 0x7C, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x58, + 0xE8, 0x37, 0x72, 0x00, 0x00, 0x8B, 0xD8, 0x48, 0x8B, 0x4C, 0x24, 0x58, 0xFF, 0x15, 0x2E, 0x19, + 0x00, 0x00, 0xE9, 0x89, 0x03, 0x00, 0x00, 0x83, 0xFE, 0x10, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, + 0xC0, 0xE9, 0x7A, 0x03, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, + 0x48, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCC, 0x4C, 0x8B, 0x05, 0xD0, 0x19, 0x00, 0x00, + 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xFF, 0x15, 0xC8, 0x18, 0x00, 0x00, + 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0x46, 0x03, 0x00, 0x00, 0x45, 0x8A, 0xC4, 0x48, 0x8B, 0x54, + 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x83, 0x19, 0x00, 0x00, 0x8B, 0xD8, 0x48, + 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0xC6, 0x18, 0x00, 0x00, 0xE9, 0x21, 0x03, 0x00, 0x00, 0x83, + 0xFE, 0x10, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x12, 0x03, 0x00, 0x00, 0x48, 0x83, + 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x50, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, + 0xCC, 0x4C, 0x8B, 0x05, 0x68, 0x19, 0x00, 0x00, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0x4C, + 0x24, 0x70, 0xFF, 0x15, 0x60, 0x18, 0x00, 0x00, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0xDE, 0x02, + 0x00, 0x00, 0x45, 0x8A, 0xC4, 0x48, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0xFF, + 0x15, 0x4B, 0x19, 0x00, 0x00, 0x8B, 0xD8, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0xFF, 0x15, 0x5E, 0x18, + 0x00, 0x00, 0xE9, 0xB9, 0x02, 0x00, 0x00, 0x83, 0xFE, 0x10, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, + 0xC0, 0xE9, 0xAA, 0x02, 0x00, 0x00, 0x45, 0x8A, 0xC4, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, + 0x24, 0x70, 0xE8, 0xF5, 0x6F, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0x92, 0x02, 0x00, 0x00, 0x83, 0xFE, + 0x10, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x83, 0x02, 0x00, 0x00, 0x48, 0x83, 0x64, + 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCC, + 0x4C, 0x8B, 0x05, 0xD9, 0x18, 0x00, 0x00, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0x4C, 0x24, + 0x70, 0xFF, 0x15, 0xD1, 0x17, 0x00, 0x00, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0x4F, 0x02, 0x00, + 0x00, 0x65, 0x48, 0x8B, 0x04, 0x25, 0x88, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0x48, + 0x3B, 0xC8, 0x74, 0x12, 0x8B, 0x54, 0x24, 0x78, 0xE8, 0x03, 0x6F, 0x00, 0x00, 0x8B, 0xD8, 0x48, + 0x8B, 0x4C, 0x24, 0x40, 0xEB, 0x05, 0xBB, 0xDB, 0x00, 0x00, 0xC0, 0xFF, 0x15, 0xBF, 0x17, 0x00, + 0x00, 0xE9, 0x1A, 0x02, 0x00, 0x00, 0x83, 0xFE, 0x20, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, + 0xE9, 0x0B, 0x02, 0x00, 0x00, 0x44, 0x88, 0x64, 0x24, 0x20, 0x44, 0x8B, 0x8C, 0x24, 0x88, 0x00, + 0x00, 0x00, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, + 0x4C, 0x24, 0x70, 0xE8, 0xAC, 0x75, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0xE1, 0x01, 0x00, 0x00, 0x81, + 0xFF, 0x5B, 0x22, 0x99, 0x99, 0x0F, 0x84, 0xA3, 0x01, 0x00, 0x00, 0x81, 0xFF, 0x5F, 0x22, 0x99, + 0x99, 0x0F, 0x84, 0x4B, 0x01, 0x00, 0x00, 0x81, 0xFF, 0x63, 0x22, 0x99, 0x99, 0x0F, 0x84, 0xFD, + 0x00, 0x00, 0x00, 0x81, 0xFF, 0x67, 0x22, 0x99, 0x99, 0x0F, 0x84, 0x96, 0x00, 0x00, 0x00, 0x81, + 0xFF, 0x23, 0x23, 0x99, 0x99, 0x74, 0x58, 0x81, 0xFF, 0x27, 0x23, 0x99, 0x99, 0x74, 0x0A, 0xBB, + 0x10, 0x00, 0x00, 0xC0, 0xE9, 0x97, 0x01, 0x00, 0x00, 0x83, 0xFE, 0x28, 0x74, 0x0A, 0xBB, 0x04, + 0x00, 0x00, 0xC0, 0xE9, 0x88, 0x01, 0x00, 0x00, 0x44, 0x88, 0x64, 0x24, 0x28, 0x48, 0x8B, 0x84, + 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x20, 0x44, 0x8B, 0x8C, 0x24, 0x88, 0x00, + 0x00, 0x00, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, + 0x4C, 0x24, 0x70, 0xE8, 0xE0, 0x69, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0x51, 0x01, 0x00, 0x00, 0x83, + 0xFE, 0x10, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0x42, 0x01, 0x00, 0x00, 0x44, 0x88, + 0x64, 0x24, 0x20, 0x4C, 0x8B, 0x0D, 0x9E, 0x16, 0x00, 0x00, 0x4D, 0x8B, 0x09, 0x4C, 0x8B, 0x44, + 0x24, 0x78, 0x33, 0xD2, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0x92, 0x5F, 0x00, 0x00, 0x8B, 0xD8, + 0xE9, 0x1B, 0x01, 0x00, 0x00, 0x83, 0xFE, 0x30, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, + 0x0C, 0x01, 0x00, 0x00, 0x44, 0x88, 0x64, 0x24, 0x38, 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, + 0x89, 0x44, 0x24, 0x30, 0x8B, 0x84, 0x24, 0x94, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x28, 0x8B, + 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x20, 0x4C, 0x8B, 0x8C, 0x24, 0x88, 0x00, + 0x00, 0x00, 0x4C, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x78, 0x48, + 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0xCB, 0x5D, 0x00, 0x00, 0x8B, 0xD8, 0xE9, 0xC0, 0x00, 0x00, 0x00, + 0x83, 0xFE, 0x28, 0x74, 0x0A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xE9, 0xB1, 0x00, 0x00, 0x00, 0x44, + 0x88, 0x64, 0x24, 0x28, 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x20, 0x4C, + 0x8B, 0x8C, 0x24, 0x88, 0x00, 0x00, 0x00, 0x44, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, + 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0x5A, 0x5A, 0x00, 0x00, 0x8B, 0xD8, + 0xEB, 0x7E, 0x83, 0xFE, 0x30, 0x74, 0x07, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xEB, 0x72, 0x44, 0x88, + 0x64, 0x24, 0x30, 0x48, 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x28, + 0x8B, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x20, 0x4C, 0x8B, 0x8C, 0x24, 0x88, + 0x00, 0x00, 0x00, 0x44, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x78, + 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0xEE, 0x50, 0x00, 0x00, 0x8B, 0xD8, 0xEB, 0x32, 0x83, 0xFE, + 0x20, 0x74, 0x07, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0xEB, 0x26, 0x44, 0x88, 0x64, 0x24, 0x20, 0x4C, + 0x8B, 0x8C, 0x24, 0x88, 0x00, 0x00, 0x00, 0x44, 0x8B, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, + 0x8B, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0xE8, 0xBE, 0x4D, 0x00, 0x00, 0x8B, 0xD8, + 0x41, 0x89, 0x5F, 0x30, 0x49, 0x83, 0x67, 0x38, 0x00, 0x33, 0xD2, 0x49, 0x8B, 0xCF, 0xFF, 0x15, + 0xCC, 0x14, 0x00, 0x00, 0x8B, 0xC3, 0x48, 0x8B, 0x8C, 0x24, 0xF0, 0x00, 0x00, 0x00, 0x48, 0x33, + 0xCC, 0xE8, 0x1A, 0x03, 0x00, 0x00, 0x4C, 0x8D, 0x9C, 0x24, 0x00, 0x01, 0x00, 0x00, 0x49, 0x8B, + 0x5B, 0x20, 0x49, 0x8B, 0x73, 0x30, 0x49, 0x8B, 0x7B, 0x38, 0x49, 0x8B, 0xE3, 0x41, 0x5F, 0x41, + 0x5D, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, + 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48, 0x89, 0x70, 0x18, 0x48, 0x89, 0x78, 0x20, 0x41, + 0x54, 0x48, 0x83, 0xEC, 0x20, 0x33, 0xFF, 0x48, 0x8B, 0xD9, 0x40, 0x38, 0x39, 0x75, 0x04, 0x33, + 0xC0, 0xEB, 0x5E, 0x40, 0x38, 0x79, 0x01, 0x75, 0x54, 0x8B, 0x51, 0x20, 0x4C, 0x8B, 0x61, 0x08, + 0x8B, 0x69, 0x10, 0x48, 0x8B, 0x49, 0x18, 0x48, 0x8D, 0x34, 0x11, 0xE8, 0xD4, 0xF4, 0xFF, 0xFF, + 0x3B, 0xC7, 0x7C, 0x31, 0x48, 0x8B, 0x7B, 0x18, 0xEB, 0x17, 0x4C, 0x8B, 0xC5, 0x49, 0x8B, 0xD4, + 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x6F, 0x14, 0x00, 0x00, 0x48, 0x3B, 0xC5, 0x74, 0x0A, 0x48, 0xFF, + 0xC7, 0x48, 0x3B, 0xFE, 0x72, 0xE4, 0xEB, 0x11, 0x48, 0x63, 0x43, 0x24, 0x48, 0x03, 0xC7, 0x48, + 0x89, 0x43, 0x28, 0xEB, 0x04, 0x48, 0x89, 0x7B, 0x28, 0xC6, 0x43, 0x01, 0x01, 0x48, 0x8B, 0x43, + 0x28, 0x48, 0x8B, 0x5C, 0x24, 0x30, 0x48, 0x8B, 0x6C, 0x24, 0x38, 0x48, 0x8B, 0x74, 0x24, 0x40, + 0x48, 0x8B, 0x7C, 0x24, 0x48, 0x48, 0x83, 0xC4, 0x20, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, + 0x89, 0x78, 0x18, 0x4C, 0x89, 0x60, 0x20, 0x41, 0x55, 0x48, 0x83, 0xEC, 0x40, 0x48, 0x8B, 0xFA, + 0x48, 0x8B, 0xD9, 0xBA, 0x10, 0x00, 0x00, 0x00, 0x44, 0x8D, 0x42, 0xF4, 0xFF, 0x15, 0xE6, 0x13, + 0x00, 0x00, 0x0F, 0xB7, 0x33, 0x66, 0x89, 0x74, 0x24, 0x28, 0x66, 0x89, 0x74, 0x24, 0x2A, 0x45, + 0x33, 0xED, 0x4C, 0x89, 0x6C, 0x24, 0x30, 0x4C, 0x8B, 0x63, 0x08, 0x4C, 0x89, 0x64, 0x24, 0x20, + 0x48, 0x8B, 0xDE, 0x45, 0x8D, 0x45, 0x02, 0x48, 0x8B, 0xD6, 0x49, 0x8B, 0xCC, 0xFF, 0x15, 0xB5, + 0x13, 0x00, 0x00, 0x90, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x84, 0x4C, 0x24, 0x28, 0x74, 0x07, 0xB8, + 0x0D, 0x00, 0x00, 0xC0, 0xEB, 0x5A, 0x66, 0x41, 0x3B, 0xF5, 0x74, 0x46, 0x41, 0xB8, 0x4B, 0x70, + 0x68, 0x55, 0x48, 0x8B, 0xD3, 0xFF, 0x15, 0x25, 0x13, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x30, + 0x49, 0x3B, 0xC5, 0x75, 0x07, 0xB8, 0x9A, 0x00, 0x00, 0xC0, 0xEB, 0x34, 0x4C, 0x8B, 0xC3, 0x49, + 0x8B, 0xD4, 0x48, 0x8B, 0xC8, 0xE8, 0x16, 0x02, 0x00, 0x00, 0xEB, 0x16, 0x8B, 0xD8, 0xBA, 0x4B, + 0x70, 0x68, 0x55, 0x48, 0x8B, 0x4C, 0x24, 0x30, 0xFF, 0x15, 0xFA, 0x12, 0x00, 0x00, 0x8B, 0xC3, + 0xEB, 0x0E, 0xF3, 0x0F, 0x6F, 0x44, 0x24, 0x28, 0xF3, 0x0F, 0x7F, 0x07, 0x33, 0xC0, 0xEB, 0x00, + 0x48, 0x8B, 0x5C, 0x24, 0x50, 0x48, 0x8B, 0x74, 0x24, 0x58, 0x48, 0x8B, 0x7C, 0x24, 0x60, 0x4C, + 0x8B, 0x64, 0x24, 0x68, 0x48, 0x83, 0xC4, 0x40, 0x41, 0x5D, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x40, 0x53, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x8B, 0x05, 0xEF, 0x23, 0x00, + 0x00, 0x33, 0xDB, 0x48, 0x3B, 0xC3, 0x74, 0x12, 0x48, 0x39, 0x1D, 0x11, 0x24, 0x00, 0x00, 0x74, + 0x09, 0xFF, 0xD0, 0x3B, 0xC3, 0x0F, 0x9D, 0xC0, 0xEB, 0x18, 0x8B, 0x05, 0xA8, 0x23, 0x00, 0x00, + 0x83, 0xF8, 0xFF, 0x75, 0x04, 0x32, 0xC0, 0xEB, 0x09, 0x48, 0x03, 0xC8, 0xFF, 0x15, 0xA6, 0x13, + 0x00, 0x00, 0x48, 0x83, 0xC4, 0x20, 0x5B, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x83, 0xEC, 0x28, 0x48, 0x8B, 0x05, 0xD5, 0x23, 0x00, 0x00, 0x48, 0x85, 0xC0, 0x74, 0x04, + 0xFF, 0xD0, 0xEB, 0x14, 0x8B, 0x05, 0x6E, 0x23, 0x00, 0x00, 0x83, 0xF8, 0xFF, 0x74, 0x09, 0x48, + 0x03, 0xC8, 0xFF, 0x15, 0x98, 0x13, 0x00, 0x00, 0x48, 0x83, 0xC4, 0x28, 0xC3, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x57, 0x48, + 0x81, 0xEC, 0x20, 0x02, 0x00, 0x00, 0x8D, 0x59, 0x01, 0x8B, 0xFA, 0x49, 0x8B, 0xF1, 0x03, 0xD3, + 0x83, 0xFA, 0x40, 0x76, 0x04, 0x33, 0xC0, 0xEB, 0x57, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0x45, 0x33, + 0xC0, 0xFF, 0x15, 0x91, 0x13, 0x00, 0x00, 0x44, 0x8B, 0xD8, 0x3B, 0xC3, 0x76, 0xE7, 0x33, 0xD2, + 0x45, 0x33, 0xC0, 0x48, 0x63, 0xC3, 0x85, 0xFF, 0x74, 0x24, 0x48, 0x8D, 0x4C, 0xC4, 0x20, 0x8D, + 0x04, 0x1A, 0x41, 0x3B, 0xC3, 0x73, 0x17, 0x48, 0x8B, 0x01, 0xFF, 0xC2, 0x48, 0x83, 0xC1, 0x08, + 0x48, 0x89, 0x06, 0x48, 0x83, 0xC6, 0x08, 0x44, 0x03, 0xC0, 0x3B, 0xD7, 0x72, 0xE1, 0x48, 0x8B, + 0x8C, 0x24, 0x50, 0x02, 0x00, 0x00, 0x48, 0x85, 0xC9, 0x74, 0x03, 0x44, 0x89, 0x01, 0x8B, 0xC2, + 0x4C, 0x8D, 0x9C, 0x24, 0x20, 0x02, 0x00, 0x00, 0x49, 0x8B, 0x5B, 0x10, 0x49, 0x8B, 0x73, 0x18, + 0x49, 0x8B, 0xE3, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xC6, 0x02, 0x00, 0x48, + 0x8B, 0x09, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x81, 0x39, 0x05, 0x00, 0x00, 0xC0, 0x74, 0x10, 0x81, + 0x39, 0x01, 0x00, 0x00, 0x80, 0x74, 0x08, 0x81, 0x39, 0x06, 0x00, 0x00, 0xC0, 0x75, 0x0E, 0x39, + 0x41, 0x18, 0x76, 0x09, 0x88, 0x02, 0x48, 0x8B, 0x49, 0x28, 0x49, 0x89, 0x08, 0xC3, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x3B, 0x0D, 0x59, 0x22, 0x00, 0x00, 0x75, 0x12, 0x48, 0xC1, 0xC1, 0x10, 0x66, 0xF7, 0xC1, + 0xFF, 0xFF, 0x75, 0x03, 0xC2, 0x00, 0x00, 0x48, 0xC1, 0xC9, 0x10, 0xE9, 0x08, 0x00, 0x00, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x83, 0xEC, 0x38, 0x4C, 0x8B, 0x0D, 0x35, + 0x22, 0x00, 0x00, 0x4C, 0x8B, 0x05, 0x26, 0x22, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x20, 0x00, + 0x48, 0x8B, 0xD1, 0xB9, 0xF7, 0x00, 0x00, 0x00, 0xFF, 0x15, 0x3A, 0x13, 0x00, 0x00, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFF, 0x25, 0x34, 0x13, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4C, 0x8B, 0xD9, 0x48, 0x2B, 0xD1, 0x0F, 0x82, 0x9E, 0x01, 0x00, 0x00, 0x49, 0x83, 0xF8, 0x08, + 0x72, 0x62, 0xF6, 0xC1, 0x07, 0x74, 0x37, 0xF6, 0xC1, 0x01, 0x74, 0x0C, 0x8A, 0x04, 0x0A, 0x49, + 0xFF, 0xC8, 0x88, 0x01, 0x48, 0x83, 0xC1, 0x01, 0xF6, 0xC1, 0x02, 0x74, 0x0F, 0x66, 0x8B, 0x04, + 0x0A, 0x49, 0x83, 0xE8, 0x02, 0x66, 0x89, 0x01, 0x48, 0x83, 0xC1, 0x02, 0xF6, 0xC1, 0x04, 0x74, + 0x0D, 0x8B, 0x04, 0x0A, 0x49, 0x83, 0xE8, 0x04, 0x89, 0x01, 0x48, 0x83, 0xC1, 0x04, 0x4D, 0x8B, + 0xC8, 0x49, 0xC1, 0xE9, 0x05, 0x75, 0x50, 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x03, 0x74, 0x14, + 0x48, 0x8B, 0x04, 0x0A, 0x48, 0x89, 0x01, 0x48, 0x83, 0xC1, 0x08, 0x49, 0xFF, 0xC9, 0x75, 0xF0, + 0x49, 0x83, 0xE0, 0x07, 0x4D, 0x85, 0xC0, 0x75, 0x07, 0x49, 0x8B, 0xC3, 0xC3, 0x0F, 0x1F, 0x00, + 0x8A, 0x04, 0x0A, 0x88, 0x01, 0x48, 0xFF, 0xC1, 0x49, 0xFF, 0xC8, 0x75, 0xF3, 0x49, 0x8B, 0xC3, + 0xC3, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x49, 0x81, 0xF9, 0x00, 0x20, 0x00, 0x00, 0x73, 0x42, + 0x48, 0x8B, 0x04, 0x0A, 0x4C, 0x8B, 0x54, 0x0A, 0x08, 0x48, 0x83, 0xC1, 0x20, 0x48, 0x89, 0x41, + 0xE0, 0x4C, 0x89, 0x51, 0xE8, 0x48, 0x8B, 0x44, 0x0A, 0xF0, 0x4C, 0x8B, 0x54, 0x0A, 0xF8, 0x49, + 0xFF, 0xC9, 0x48, 0x89, 0x41, 0xF0, 0x4C, 0x89, 0x51, 0xF8, 0x75, 0xD4, 0x49, 0x83, 0xE0, 0x1F, + 0xE9, 0x72, 0xFF, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x90, 0x48, 0x81, 0xFA, 0x00, 0x10, 0x00, 0x00, 0x72, 0xB5, 0xB8, 0x20, 0x00, 0x00, 0x00, + 0x0F, 0x18, 0x04, 0x0A, 0x0F, 0x18, 0x44, 0x0A, 0x40, 0x48, 0x81, 0xC1, 0x80, 0x00, 0x00, 0x00, + 0xFF, 0xC8, 0x75, 0xEC, 0x48, 0x81, 0xE9, 0x00, 0x10, 0x00, 0x00, 0xB8, 0x40, 0x00, 0x00, 0x00, + 0x4C, 0x8B, 0x0C, 0x0A, 0x4C, 0x8B, 0x54, 0x0A, 0x08, 0x4C, 0x0F, 0xC3, 0x09, 0x4C, 0x0F, 0xC3, + 0x51, 0x08, 0x4C, 0x8B, 0x4C, 0x0A, 0x10, 0x4C, 0x8B, 0x54, 0x0A, 0x18, 0x4C, 0x0F, 0xC3, 0x49, + 0x10, 0x4C, 0x0F, 0xC3, 0x51, 0x18, 0x4C, 0x8B, 0x4C, 0x0A, 0x20, 0x4C, 0x8B, 0x54, 0x0A, 0x28, + 0x48, 0x83, 0xC1, 0x40, 0x4C, 0x0F, 0xC3, 0x49, 0xE0, 0x4C, 0x0F, 0xC3, 0x51, 0xE8, 0x4C, 0x8B, + 0x4C, 0x0A, 0xF0, 0x4C, 0x8B, 0x54, 0x0A, 0xF8, 0xFF, 0xC8, 0x4C, 0x0F, 0xC3, 0x49, 0xF0, 0x4C, + 0x0F, 0xC3, 0x51, 0xF8, 0x75, 0xAA, 0x49, 0x81, 0xE8, 0x00, 0x10, 0x00, 0x00, 0x49, 0x81, 0xF8, + 0x00, 0x10, 0x00, 0x00, 0x0F, 0x83, 0x71, 0xFF, 0xFF, 0xFF, 0xF0, 0x80, 0x0C, 0x24, 0x00, 0xE9, + 0xBA, 0xFE, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x90, 0x49, 0x03, 0xC8, 0x49, 0x83, 0xF8, + 0x08, 0x72, 0x61, 0xF6, 0xC1, 0x07, 0x74, 0x36, 0xF6, 0xC1, 0x01, 0x74, 0x0B, 0x48, 0xFF, 0xC9, + 0x8A, 0x04, 0x0A, 0x49, 0xFF, 0xC8, 0x88, 0x01, 0xF6, 0xC1, 0x02, 0x74, 0x0F, 0x48, 0x83, 0xE9, + 0x02, 0x66, 0x8B, 0x04, 0x0A, 0x49, 0x83, 0xE8, 0x02, 0x66, 0x89, 0x01, 0xF6, 0xC1, 0x04, 0x74, + 0x0D, 0x48, 0x83, 0xE9, 0x04, 0x8B, 0x04, 0x0A, 0x49, 0x83, 0xE8, 0x04, 0x89, 0x01, 0x4D, 0x8B, + 0xC8, 0x49, 0xC1, 0xE9, 0x05, 0x75, 0x50, 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x03, 0x74, 0x14, + 0x48, 0x83, 0xE9, 0x08, 0x48, 0x8B, 0x04, 0x0A, 0x49, 0xFF, 0xC9, 0x48, 0x89, 0x01, 0x75, 0xF0, + 0x49, 0x83, 0xE0, 0x07, 0x4D, 0x85, 0xC0, 0x75, 0x07, 0x49, 0x8B, 0xC3, 0xC3, 0x0F, 0x1F, 0x00, + 0x48, 0xFF, 0xC9, 0x8A, 0x04, 0x0A, 0x49, 0xFF, 0xC8, 0x88, 0x01, 0x75, 0xF3, 0x49, 0x8B, 0xC3, + 0xC3, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x49, 0x81, 0xF9, 0x00, 0x20, 0x00, 0x00, 0x73, 0x42, + 0x48, 0x8B, 0x44, 0x0A, 0xF8, 0x4C, 0x8B, 0x54, 0x0A, 0xF0, 0x48, 0x83, 0xE9, 0x20, 0x48, 0x89, + 0x41, 0x18, 0x4C, 0x89, 0x51, 0x10, 0x48, 0x8B, 0x44, 0x0A, 0x08, 0x4C, 0x8B, 0x14, 0x0A, 0x49, + 0xFF, 0xC9, 0x48, 0x89, 0x41, 0x08, 0x4C, 0x89, 0x11, 0x75, 0xD5, 0x49, 0x83, 0xE0, 0x1F, 0xE9, + 0x73, 0xFF, 0xFF, 0xFF, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x66, 0x90, 0x48, 0x81, 0xFA, 0x00, 0xF0, 0xFF, 0xFF, 0x77, 0xB5, 0xB8, 0x20, 0x00, 0x00, 0x00, + 0x48, 0x81, 0xE9, 0x80, 0x00, 0x00, 0x00, 0x0F, 0x18, 0x04, 0x0A, 0x0F, 0x18, 0x44, 0x0A, 0x40, + 0xFF, 0xC8, 0x75, 0xEC, 0x48, 0x81, 0xC1, 0x00, 0x10, 0x00, 0x00, 0xB8, 0x40, 0x00, 0x00, 0x00, + 0x4C, 0x8B, 0x4C, 0x0A, 0xF8, 0x4C, 0x8B, 0x54, 0x0A, 0xF0, 0x4C, 0x0F, 0xC3, 0x49, 0xF8, 0x4C, + 0x0F, 0xC3, 0x51, 0xF0, 0x4C, 0x8B, 0x4C, 0x0A, 0xE8, 0x4C, 0x8B, 0x54, 0x0A, 0xE0, 0x4C, 0x0F, + 0xC3, 0x49, 0xE8, 0x4C, 0x0F, 0xC3, 0x51, 0xE0, 0x4C, 0x8B, 0x4C, 0x0A, 0xD8, 0x4C, 0x8B, 0x54, + 0x0A, 0xD0, 0x48, 0x83, 0xE9, 0x40, 0x4C, 0x0F, 0xC3, 0x49, 0x18, 0x4C, 0x0F, 0xC3, 0x51, 0x10, + 0x4C, 0x8B, 0x4C, 0x0A, 0x08, 0x4C, 0x8B, 0x14, 0x0A, 0xFF, 0xC8, 0x4C, 0x0F, 0xC3, 0x49, 0x08, + 0x4C, 0x0F, 0xC3, 0x11, 0x75, 0xAA, 0x49, 0x81, 0xE8, 0x00, 0x10, 0x00, 0x00, 0x49, 0x81, 0xF8, + 0x00, 0x10, 0x00, 0x00, 0x0F, 0x83, 0x71, 0xFF, 0xFF, 0xFF, 0xF0, 0x80, 0x0C, 0x24, 0x00, 0xE9, + 0xBA, 0xFE, 0xFF, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x40, 0x53, 0x48, 0x83, + 0xEC, 0x20, 0x45, 0x8B, 0x18, 0x48, 0x8B, 0xDA, 0x4C, 0x8B, 0xC9, 0x41, 0x83, 0xE3, 0xF8, 0x41, + 0xF6, 0x00, 0x04, 0x4C, 0x8B, 0xD1, 0x74, 0x13, 0x41, 0x8B, 0x40, 0x08, 0x4D, 0x63, 0x50, 0x04, + 0xF7, 0xD8, 0x4C, 0x03, 0xD1, 0x48, 0x63, 0xC8, 0x4C, 0x23, 0xD1, 0x49, 0x63, 0xC3, 0x4A, 0x8B, + 0x14, 0x10, 0x48, 0x8B, 0x43, 0x10, 0x8B, 0x48, 0x08, 0x48, 0x03, 0x4B, 0x08, 0xF6, 0x41, 0x03, + 0x0F, 0x74, 0x0C, 0x0F, 0xB6, 0x41, 0x03, 0x83, 0xE0, 0xF0, 0x48, 0x98, 0x4C, 0x03, 0xC8, 0x4C, + 0x33, 0xCA, 0x49, 0x8B, 0xC9, 0x48, 0x83, 0xC4, 0x20, 0x5B, 0xE9, 0xF1, 0xFB, 0xFF, 0xFF, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x83, 0xEC, 0x28, 0x4D, 0x8B, 0x41, 0x38, + 0x48, 0x8B, 0xCA, 0x49, 0x8B, 0xD1, 0xE8, 0x81, 0xFF, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x00, 0x00, + 0x48, 0x83, 0xC4, 0x28, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, + 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48, 0x89, 0x70, 0x18, 0x48, 0x89, 0x78, 0x20, 0x41, + 0x54, 0x48, 0x83, 0xEC, 0x20, 0x4D, 0x8B, 0x51, 0x38, 0x48, 0x8B, 0xF2, 0x4D, 0x8B, 0xE0, 0x41, + 0x8B, 0x02, 0x48, 0x8B, 0xE9, 0x49, 0x8B, 0xD1, 0x48, 0x03, 0xC0, 0x48, 0x8B, 0xCE, 0x49, 0x8B, + 0xF9, 0x49, 0x8D, 0x5C, 0xC2, 0x04, 0x4C, 0x8B, 0xC3, 0xE8, 0x2E, 0xFF, 0xFF, 0xFF, 0x44, 0x8B, + 0x1B, 0x44, 0x8B, 0x55, 0x04, 0x41, 0x8B, 0xC3, 0x41, 0x83, 0xE3, 0x02, 0xBA, 0x01, 0x00, 0x00, + 0x00, 0x23, 0xC2, 0x41, 0x80, 0xE2, 0x66, 0x44, 0x0F, 0x44, 0xD8, 0x45, 0x85, 0xDB, 0x74, 0x13, + 0x4C, 0x8B, 0xCF, 0x4D, 0x8B, 0xC4, 0x48, 0x8B, 0xD6, 0x48, 0x8B, 0xCD, 0xE8, 0xA5, 0xFB, 0xFF, + 0xFF, 0x8B, 0xD0, 0x48, 0x8B, 0x5C, 0x24, 0x30, 0x48, 0x8B, 0x6C, 0x24, 0x38, 0x48, 0x8B, 0x74, + 0x24, 0x40, 0x48, 0x8B, 0x7C, 0x24, 0x48, 0x8B, 0xC2, 0x48, 0x83, 0xC4, 0x20, 0x41, 0x5C, 0xC3, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x48, 0x8B, 0xC1, 0x49, 0x83, 0xF8, 0x08, 0x72, 0x53, 0x0F, 0xB6, 0xD2, 0x49, 0xB9, 0x01, 0x01, + 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x49, 0x0F, 0xAF, 0xD1, 0x49, 0x83, 0xF8, 0x40, 0x72, 0x1E, + 0x48, 0xF7, 0xD9, 0x83, 0xE1, 0x07, 0x74, 0x06, 0x4C, 0x2B, 0xC1, 0x48, 0x89, 0x10, 0x48, 0x03, + 0xC8, 0x4D, 0x8B, 0xC8, 0x49, 0x83, 0xE0, 0x3F, 0x49, 0xC1, 0xE9, 0x06, 0x75, 0x39, 0x4D, 0x8B, + 0xC8, 0x49, 0x83, 0xE0, 0x07, 0x49, 0xC1, 0xE9, 0x03, 0x74, 0x11, 0x66, 0x66, 0x66, 0x90, 0x90, + 0x48, 0x89, 0x11, 0x48, 0x83, 0xC1, 0x08, 0x49, 0xFF, 0xC9, 0x75, 0xF4, 0x4D, 0x85, 0xC0, 0x74, + 0x0A, 0x88, 0x11, 0x48, 0xFF, 0xC1, 0x49, 0xFF, 0xC8, 0x75, 0xF6, 0xC2, 0x00, 0x00, 0x66, 0x90, + 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x49, 0x81, 0xF9, 0x00, 0x1C, 0x00, 0x00, 0x73, 0x30, + 0x48, 0x89, 0x11, 0x48, 0x89, 0x51, 0x08, 0x48, 0x89, 0x51, 0x10, 0x48, 0x83, 0xC1, 0x40, 0x48, + 0x89, 0x51, 0xD8, 0x48, 0x89, 0x51, 0xE0, 0x49, 0xFF, 0xC9, 0x48, 0x89, 0x51, 0xE8, 0x48, 0x89, + 0x51, 0xF0, 0x48, 0x89, 0x51, 0xF8, 0x75, 0xD8, 0xEB, 0x94, 0x66, 0x0F, 0x1F, 0x44, 0x00, 0x00, + 0x48, 0x0F, 0xC3, 0x11, 0x48, 0x0F, 0xC3, 0x51, 0x08, 0x48, 0x0F, 0xC3, 0x51, 0x10, 0x48, 0x83, + 0xC1, 0x40, 0x48, 0x0F, 0xC3, 0x51, 0xD8, 0x48, 0x0F, 0xC3, 0x51, 0xE0, 0x49, 0xFF, 0xC9, 0x48, + 0x0F, 0xC3, 0x51, 0xE8, 0x48, 0x0F, 0xC3, 0x51, 0xF0, 0x48, 0x0F, 0xC3, 0x51, 0xF8, 0x75, 0xD0, + 0xF0, 0x80, 0x0C, 0x24, 0x00, 0xE9, 0x54, 0xFF, 0xFF, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1C, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x72, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8E, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xBC, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE2, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x22, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4E, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x74, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA6, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xCE, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2A, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xBE, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF2, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xB8, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE8, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1A, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x62, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8A, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xBA, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEC, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4C, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x72, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xD0, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xE4, 0x77, 0x69, 0x55, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x5F, 0x00, 0x00, 0x00, 0x5C, 0x32, 0x00, 0x00, 0x5C, 0x1C, 0x00, 0x00, 0x52, 0x53, 0x44, 0x53, + 0xFC, 0xB1, 0x4A, 0x5E, 0x71, 0xBC, 0xA5, 0x41, 0xAB, 0xC3, 0x9A, 0x92, 0xAF, 0x34, 0x99, 0xBC, + 0x05, 0x00, 0x00, 0x00, 0x64, 0x3A, 0x5C, 0x70, 0x72, 0x6F, 0x6A, 0x65, 0x63, 0x74, 0x73, 0x5C, + 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x68, 0x61, 0x63, 0x6B, 0x65, 0x72, 0x32, 0x5C, 0x6B, + 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x68, 0x61, 0x63, 0x6B, 0x65, 0x72, 0x5C, 0x62, 0x69, + 0x6E, 0x5C, 0x61, 0x6D, 0x64, 0x36, 0x34, 0x5C, 0x6B, 0x70, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, + 0x68, 0x61, 0x63, 0x6B, 0x65, 0x72, 0x2E, 0x70, 0x64, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x04, 0x62, 0x00, 0x00, + 0x09, 0x19, 0x0A, 0x00, 0x19, 0xC4, 0x11, 0x00, 0x19, 0x74, 0x10, 0x00, 0x19, 0x64, 0x0F, 0x00, + 0x19, 0x34, 0x0E, 0x00, 0x19, 0xB2, 0x15, 0xD0, 0xF6, 0x1E, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x55, 0x8F, 0x00, 0x00, 0x69, 0x8F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x69, 0x8F, 0x00, 0x00, + 0xBD, 0x8F, 0x00, 0x00, 0xCA, 0x8F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xCA, 0x8F, 0x00, 0x00, + 0x57, 0x90, 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x90, 0x00, 0x00, + 0x09, 0x1D, 0x0C, 0x00, 0x1D, 0xC4, 0x13, 0x00, 0x1D, 0x74, 0x12, 0x00, 0x1D, 0x64, 0x11, 0x00, + 0x1D, 0x34, 0x10, 0x00, 0x1D, 0xB2, 0x19, 0xF0, 0x17, 0xE0, 0x15, 0xD0, 0xF6, 0x1E, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x56, 0x8D, 0x00, 0x00, 0x88, 0x8D, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x88, 0x8D, 0x00, 0x00, 0x62, 0x8E, 0x00, 0x00, 0x6B, 0x8E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6B, 0x8E, 0x00, 0x00, 0xAF, 0x8E, 0x00, 0x00, 0xB4, 0x8E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xB4, 0x8E, 0x00, 0x00, 0xEF, 0x8E, 0x00, 0x00, 0xF3, 0x8E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xF3, 0x8E, 0x00, 0x00, 0x09, 0x15, 0x08, 0x00, 0x15, 0x74, 0x0E, 0x00, 0x15, 0x64, 0x0D, 0x00, + 0x15, 0x34, 0x0C, 0x00, 0x15, 0x92, 0x11, 0xC0, 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x66, 0x87, 0x00, 0x00, 0x79, 0x87, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x79, 0x87, 0x00, 0x00, + 0xFA, 0x87, 0x00, 0x00, 0x04, 0x88, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x04, 0x88, 0x00, 0x00, + 0x09, 0x15, 0x08, 0x00, 0x15, 0x74, 0x10, 0x00, 0x15, 0x64, 0x0F, 0x00, 0x15, 0x34, 0x0E, 0x00, + 0x15, 0xB2, 0x11, 0xC0, 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x56, 0x86, 0x00, 0x00, + 0x80, 0x86, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x86, 0x00, 0x00, 0x09, 0x87, 0x00, 0x00, + 0x13, 0x87, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x13, 0x87, 0x00, 0x00, 0x09, 0x1D, 0x0C, 0x00, + 0x1D, 0xC4, 0x0F, 0x00, 0x1D, 0x74, 0x0E, 0x00, 0x1D, 0x64, 0x0D, 0x00, 0x1D, 0x34, 0x0C, 0x00, + 0x1D, 0x72, 0x19, 0xF0, 0x17, 0xE0, 0x15, 0xD0, 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x84, 0x00, 0x00, 0x50, 0x84, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x84, 0x00, 0x00, + 0x8F, 0x84, 0x00, 0x00, 0xB7, 0x85, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xB7, 0x85, 0x00, 0x00, + 0x09, 0x1C, 0x0A, 0x00, 0x1C, 0xC4, 0x15, 0x00, 0x1C, 0x74, 0x14, 0x00, 0x1C, 0x64, 0x13, 0x00, + 0x1C, 0x34, 0x12, 0x00, 0x1C, 0xF2, 0x15, 0xD0, 0xF6, 0x1E, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x4E, 0x82, 0x00, 0x00, 0x62, 0x82, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x62, 0x82, 0x00, 0x00, + 0xB6, 0x82, 0x00, 0x00, 0xC3, 0x82, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC3, 0x82, 0x00, 0x00, + 0x43, 0x83, 0x00, 0x00, 0x50, 0x83, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x50, 0x83, 0x00, 0x00, + 0x09, 0x1C, 0x0B, 0x00, 0x1C, 0x74, 0x18, 0x00, 0x1C, 0x64, 0x17, 0x00, 0x1C, 0x34, 0x16, 0x00, + 0x1C, 0x01, 0x12, 0x00, 0x15, 0xE0, 0x13, 0xD0, 0x11, 0xC0, 0x00, 0x00, 0xF6, 0x1E, 0x00, 0x00, + 0x05, 0x00, 0x00, 0x00, 0xC5, 0x7F, 0x00, 0x00, 0xEF, 0x7F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xEF, 0x7F, 0x00, 0x00, 0xD5, 0x80, 0x00, 0x00, 0xDE, 0x80, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xDE, 0x80, 0x00, 0x00, 0x53, 0x81, 0x00, 0x00, 0x5C, 0x81, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x5C, 0x81, 0x00, 0x00, 0xA8, 0x81, 0x00, 0x00, 0xAD, 0x81, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xAD, 0x81, 0x00, 0x00, 0xE5, 0x81, 0x00, 0x00, 0xEB, 0x81, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xEB, 0x81, 0x00, 0x00, 0x09, 0x15, 0x08, 0x00, 0x15, 0x74, 0x0E, 0x00, 0x15, 0x64, 0x0D, 0x00, + 0x15, 0x34, 0x0C, 0x00, 0x15, 0x92, 0x11, 0xC0, 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0xA3, 0x7D, 0x00, 0x00, 0xB6, 0x7D, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xB6, 0x7D, 0x00, 0x00, + 0x43, 0x7E, 0x00, 0x00, 0x4D, 0x7E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4D, 0x7E, 0x00, 0x00, + 0x09, 0x15, 0x08, 0x00, 0x15, 0x74, 0x0E, 0x00, 0x15, 0x64, 0x0D, 0x00, 0x15, 0x34, 0x0C, 0x00, + 0x15, 0x92, 0x11, 0xC0, 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xA1, 0x7C, 0x00, 0x00, + 0xB4, 0x7C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xB4, 0x7C, 0x00, 0x00, 0x41, 0x7D, 0x00, 0x00, + 0x4B, 0x7D, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4B, 0x7D, 0x00, 0x00, 0x09, 0x15, 0x08, 0x00, + 0x15, 0x74, 0x12, 0x00, 0x15, 0x64, 0x11, 0x00, 0x15, 0x34, 0x10, 0x00, 0x15, 0xD2, 0x11, 0xC0, + 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7A, 0x7B, 0x00, 0x00, 0xA4, 0x7B, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xA6, 0x7B, 0x00, 0x00, 0x47, 0x7C, 0x00, 0x00, 0x51, 0x7C, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x51, 0x7C, 0x00, 0x00, 0x01, 0x19, 0x0A, 0x00, 0x19, 0x54, 0x18, 0x00, + 0x19, 0x34, 0x16, 0x00, 0x19, 0xF2, 0x12, 0xF0, 0x10, 0xE0, 0x0E, 0xD0, 0x0C, 0x70, 0x0B, 0x60, + 0x09, 0x1D, 0x0A, 0x00, 0x1D, 0x74, 0x15, 0x00, 0x1D, 0x64, 0x14, 0x00, 0x1D, 0x34, 0x12, 0x00, + 0x1D, 0xD2, 0x19, 0xE0, 0x17, 0xD0, 0x15, 0xC0, 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x7D, 0x75, 0x00, 0x00, 0x92, 0x75, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x92, 0x75, 0x00, 0x00, + 0x16, 0x76, 0x00, 0x00, 0x25, 0x76, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x25, 0x76, 0x00, 0x00, + 0x01, 0x1C, 0x0C, 0x00, 0x1C, 0x64, 0x0D, 0x00, 0x1C, 0x54, 0x0B, 0x00, 0x1C, 0x34, 0x0A, 0x00, + 0x1C, 0x32, 0x18, 0xF0, 0x16, 0xE0, 0x14, 0xD0, 0x12, 0xC0, 0x10, 0x70, 0x01, 0x0A, 0x04, 0x00, + 0x0A, 0x34, 0x0B, 0x00, 0x0A, 0x72, 0x06, 0x70, 0x09, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, + 0xF6, 0x1E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x11, 0x63, 0x00, 0x00, 0x29, 0x63, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x2B, 0x63, 0x00, 0x00, 0x19, 0x15, 0x02, 0x00, 0x06, 0x92, 0x02, 0x30, + 0xB8, 0x22, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x01, 0x06, 0x02, 0x00, 0x06, 0x52, 0x02, 0x50, + 0x19, 0x23, 0x08, 0x00, 0x11, 0x01, 0x73, 0x00, 0x0A, 0xF0, 0x08, 0xE0, 0x06, 0xD0, 0x04, 0x70, + 0x03, 0x60, 0x02, 0x30, 0xDC, 0x22, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC3, 0x92, 0x00, 0x00, + 0x3F, 0x94, 0x00, 0x00, 0x96, 0x9C, 0x00, 0x00, 0x8C, 0x94, 0x00, 0x00, 0x81, 0x03, 0x00, 0x00, + 0x01, 0x12, 0x07, 0x00, 0x12, 0x64, 0x47, 0x00, 0x12, 0x34, 0x46, 0x00, 0x12, 0x01, 0x44, 0x00, + 0x0B, 0x70, 0x00, 0x00, 0x09, 0x19, 0x0A, 0x00, 0x19, 0xC4, 0x11, 0x00, 0x19, 0x74, 0x10, 0x00, + 0x19, 0x64, 0x0F, 0x00, 0x19, 0x34, 0x0E, 0x00, 0x19, 0xB2, 0x15, 0xD0, 0xF6, 0x1E, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0xA0, 0x78, 0x00, 0x00, 0xB9, 0x78, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xB9, 0x78, 0x00, 0x00, 0x79, 0x79, 0x00, 0x00, 0x83, 0x79, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x83, 0x79, 0x00, 0x00, 0x09, 0x0F, 0x04, 0x00, 0x0F, 0x34, 0x0A, 0x00, 0x0F, 0x72, 0x0B, 0x70, + 0xF6, 0x1E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x74, 0x68, 0x00, 0x00, 0x86, 0x68, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x86, 0x68, 0x00, 0x00, 0x09, 0x19, 0x0A, 0x00, 0x19, 0xC4, 0x0D, 0x00, + 0x19, 0x74, 0x0C, 0x00, 0x19, 0x64, 0x0B, 0x00, 0x19, 0x34, 0x0A, 0x00, 0x19, 0x72, 0x15, 0xD0, + 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x1C, 0x00, 0x00, 0xB4, 0x1C, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x1D, 0x00, 0x00, 0xEC, 0x1C, 0x00, 0x00, 0xFC, 0x1C, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xFC, 0x1C, 0x00, 0x00, 0x01, 0x18, 0x0A, 0x00, 0x18, 0x64, 0x0B, 0x00, + 0x18, 0x54, 0x09, 0x00, 0x18, 0x34, 0x08, 0x00, 0x18, 0x32, 0x14, 0xD0, 0x12, 0xC0, 0x10, 0x70, + 0x01, 0x0D, 0x05, 0x00, 0x0D, 0x34, 0x15, 0x00, 0x0D, 0x01, 0x12, 0x00, 0x06, 0x70, 0x00, 0x00, + 0x19, 0x1E, 0x06, 0x00, 0x0F, 0x64, 0x0C, 0x00, 0x0F, 0x34, 0x0A, 0x00, 0x0F, 0x72, 0x0B, 0x70, + 0xB8, 0x22, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x09, 0x1D, 0x0C, 0x00, 0x1D, 0xC4, 0x13, 0x00, + 0x1D, 0x74, 0x12, 0x00, 0x1D, 0x64, 0x11, 0x00, 0x1D, 0x34, 0x10, 0x00, 0x1D, 0xB2, 0x19, 0xF0, + 0x17, 0xE0, 0x15, 0xD0, 0xF6, 0x1E, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xB0, 0x98, 0x00, 0x00, + 0xC3, 0x98, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xC3, 0x98, 0x00, 0x00, 0x07, 0x99, 0x00, 0x00, + 0x41, 0x99, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x4F, 0x99, 0x00, 0x00, 0xED, 0x99, 0x00, 0x00, + 0xF2, 0x99, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xF2, 0x99, 0x00, 0x00, 0x09, 0x19, 0x0A, 0x00, + 0x19, 0x74, 0x10, 0x00, 0x19, 0x64, 0x0F, 0x00, 0x19, 0x34, 0x0E, 0x00, 0x19, 0x92, 0x15, 0xE0, + 0x13, 0xD0, 0x11, 0xC0, 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x4E, 0x97, 0x00, 0x00, + 0x61, 0x97, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x61, 0x97, 0x00, 0x00, 0x1B, 0x98, 0x00, 0x00, + 0x20, 0x98, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x98, 0x00, 0x00, 0x09, 0x19, 0x0A, 0x00, + 0x19, 0x74, 0x10, 0x00, 0x19, 0x64, 0x0F, 0x00, 0x19, 0x34, 0x0E, 0x00, 0x19, 0x92, 0x15, 0xE0, + 0x13, 0xD0, 0x11, 0xC0, 0xF6, 0x1E, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0xEA, 0x95, 0x00, 0x00, + 0xFD, 0x95, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xFD, 0x95, 0x00, 0x00, 0xB7, 0x96, 0x00, 0x00, + 0xBC, 0x96, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xBC, 0x96, 0x00, 0x00, 0x01, 0x06, 0x02, 0x00, + 0x06, 0x52, 0x02, 0x30, 0x09, 0x21, 0x09, 0x00, 0x21, 0x34, 0x26, 0x00, 0x21, 0x01, 0x1E, 0x00, + 0x1A, 0xF0, 0x18, 0xD0, 0x16, 0xC0, 0x14, 0x70, 0x13, 0x60, 0x00, 0x00, 0xF6, 0x1E, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x47, 0x8A, 0x00, 0x00, 0xA7, 0x8A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xA7, 0x8A, 0x00, 0x00, 0xCB, 0x8A, 0x00, 0x00, 0xDD, 0x8A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xDD, 0x8A, 0x00, 0x00, 0x2F, 0x8C, 0x00, 0x00, 0x64, 0x8C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x64, 0x8C, 0x00, 0x00, 0x09, 0x18, 0x09, 0x00, 0x18, 0xC4, 0x16, 0x00, 0x18, 0x74, 0x15, 0x00, + 0x18, 0x64, 0x14, 0x00, 0x18, 0x01, 0x12, 0x00, 0x11, 0xD0, 0x00, 0x00, 0xF6, 0x1E, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x0E, 0x7A, 0x00, 0x00, 0x45, 0x7A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x47, 0x7A, 0x00, 0x00, 0x1C, 0x7B, 0x00, 0x00, 0x26, 0x7B, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x26, 0x7B, 0x00, 0x00, 0x19, 0x26, 0x09, 0x00, 0x14, 0x34, 0x26, 0x00, 0x14, 0x01, 0x1E, 0x00, + 0x0D, 0xE0, 0x0B, 0xD0, 0x09, 0xC0, 0x07, 0x70, 0x06, 0x60, 0x00, 0x00, 0xDC, 0x22, 0x00, 0x00, + 0x0B, 0x00, 0x00, 0x00, 0x61, 0x6C, 0x00, 0x00, 0x92, 0x6C, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x92, 0x6C, 0x00, 0x00, 0x2E, 0x6E, 0x00, 0x00, 0x34, 0x6E, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x34, 0x6E, 0x00, 0x00, 0x19, 0x6F, 0x00, 0x00, 0x3C, 0x6F, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3C, 0x6F, 0x00, 0x00, 0x78, 0x70, 0x00, 0x00, 0x9B, 0x70, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x9B, 0x70, 0x00, 0x00, 0x18, 0x71, 0x00, 0x00, 0x2D, 0x71, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x2D, 0x71, 0x00, 0x00, 0x94, 0x71, 0x00, 0x00, 0xA9, 0x71, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xA9, 0x71, 0x00, 0x00, 0x0F, 0x72, 0x00, 0x00, 0x1B, 0x72, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x1B, 0x72, 0x00, 0x00, 0xD2, 0x72, 0x00, 0x00, 0xE2, 0x72, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xE2, 0x72, 0x00, 0x00, 0x18, 0x74, 0x00, 0x00, 0x28, 0x74, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x28, 0x74, 0x00, 0x00, 0xA2, 0x74, 0x00, 0x00, 0xB7, 0x74, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xB7, 0x74, 0x00, 0x00, 0xEF, 0x74, 0x00, 0x00, 0xF9, 0x74, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xF9, 0x74, 0x00, 0x00, 0xE1, 0x00, 0x00, 0x00, 0x01, 0x0F, 0x06, 0x00, 0x0F, 0x64, 0x07, 0x00, + 0x0F, 0x34, 0x06, 0x00, 0x0F, 0x32, 0x0B, 0x70, 0x01, 0x0A, 0x04, 0x00, 0x0A, 0x34, 0x06, 0x00, + 0x0A, 0x32, 0x06, 0x70, 0x09, 0x19, 0x0A, 0x00, 0x19, 0xC4, 0x11, 0x00, 0x19, 0x74, 0x10, 0x00, + 0x19, 0x64, 0x0F, 0x00, 0x19, 0x34, 0x0E, 0x00, 0x19, 0xB2, 0x15, 0xE0, 0xF6, 0x1E, 0x00, 0x00, + 0x03, 0x00, 0x00, 0x00, 0x71, 0x69, 0x00, 0x00, 0x9B, 0x69, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x9B, 0x69, 0x00, 0x00, 0x9C, 0x6A, 0x00, 0x00, 0xA2, 0x6A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xA4, 0x6A, 0x00, 0x00, 0xC1, 0x6A, 0x00, 0x00, 0xC5, 0x6A, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xC7, 0x6A, 0x00, 0x00, 0x01, 0x0B, 0x03, 0x00, 0x0B, 0x01, 0x18, 0x00, 0x04, 0x30, 0x00, 0x00, + 0x01, 0x10, 0x06, 0x00, 0x10, 0x64, 0x0D, 0x00, 0x10, 0x34, 0x0C, 0x00, 0x10, 0x92, 0x0C, 0x70, + 0x19, 0x2E, 0x0B, 0x00, 0x1C, 0x74, 0x27, 0x00, 0x1C, 0x64, 0x26, 0x00, 0x1C, 0x34, 0x24, 0x00, + 0x1C, 0x01, 0x20, 0x00, 0x15, 0xF0, 0x13, 0xD0, 0x11, 0xC0, 0x00, 0x00, 0xDC, 0x22, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x45, 0x12, 0x00, 0x00, 0x68, 0x12, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x6A, 0x12, 0x00, 0x00, 0xF1, 0x00, 0x00, 0x00, 0x01, 0x0A, 0x04, 0x00, 0x0A, 0x34, 0x0D, 0x00, + 0x0A, 0x92, 0x06, 0x70, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01, 0x06, 0x02, 0x00, + 0x06, 0x32, 0x02, 0x30, 0x01, 0x19, 0x0A, 0x00, 0x19, 0x74, 0x09, 0x00, 0x19, 0x64, 0x08, 0x00, + 0x19, 0x54, 0x07, 0x00, 0x19, 0x34, 0x06, 0x00, 0x19, 0x32, 0x15, 0xC0, 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, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x32, 0xA2, 0xDF, 0x2D, 0x99, 0x2B, 0x00, 0x00, 0xCD, 0x5D, 0x20, 0xD2, 0x66, 0xD4, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0xFF, 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, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x08, 0x10, 0x00, 0x00, 0xBB, 0x10, 0x00, 0x00, 0x80, 0x37, 0x00, 0x00, 0xC4, 0x10, 0x00, 0x00, + 0xCA, 0x11, 0x00, 0x00, 0x58, 0x37, 0x00, 0x00, 0xD0, 0x11, 0x00, 0x00, 0xA4, 0x1B, 0x00, 0x00, + 0x60, 0x3A, 0x00, 0x00, 0xAC, 0x1B, 0x00, 0x00, 0x4C, 0x1C, 0x00, 0x00, 0xB4, 0x3A, 0x00, 0x00, + 0x54, 0x1C, 0x00, 0x00, 0x3B, 0x1D, 0x00, 0x00, 0x18, 0x37, 0x00, 0x00, 0x44, 0x1D, 0x00, 0x00, + 0x88, 0x1D, 0x00, 0x00, 0xAC, 0x3A, 0x00, 0x00, 0x90, 0x1D, 0x00, 0x00, 0xBD, 0x1D, 0x00, 0x00, + 0xC0, 0x32, 0x00, 0x00, 0xC4, 0x1D, 0x00, 0x00, 0x55, 0x1E, 0x00, 0x00, 0xA0, 0x36, 0x00, 0x00, + 0xC8, 0x1E, 0x00, 0x00, 0xEF, 0x1E, 0x00, 0x00, 0xC8, 0x32, 0x00, 0x00, 0x10, 0x1F, 0x00, 0x00, + 0x44, 0x22, 0x00, 0x00, 0xA8, 0x3A, 0x00, 0x00, 0x4C, 0x22, 0x00, 0x00, 0xAF, 0x22, 0x00, 0x00, + 0xAC, 0x3A, 0x00, 0x00, 0xB8, 0x22, 0x00, 0x00, 0xD5, 0x22, 0x00, 0x00, 0xC0, 0x32, 0x00, 0x00, + 0xDC, 0x22, 0x00, 0x00, 0x70, 0x23, 0x00, 0x00, 0xB4, 0x3A, 0x00, 0x00, 0x80, 0x23, 0x00, 0x00, + 0x6A, 0x24, 0x00, 0x00, 0xD0, 0x3A, 0x00, 0x00, 0x08, 0x60, 0x00, 0x00, 0xEE, 0x60, 0x00, 0x00, + 0x98, 0x3A, 0x00, 0x00, 0x08, 0x61, 0x00, 0x00, 0x71, 0x61, 0x00, 0x00, 0x58, 0x36, 0x00, 0x00, + 0x78, 0x61, 0x00, 0x00, 0xFC, 0x62, 0x00, 0x00, 0x70, 0x37, 0x00, 0x00, 0x04, 0x63, 0x00, 0x00, + 0x3D, 0x63, 0x00, 0x00, 0x38, 0x36, 0x00, 0x00, 0x44, 0x63, 0x00, 0x00, 0x2D, 0x64, 0x00, 0x00, + 0x2C, 0x36, 0x00, 0x00, 0x10, 0x66, 0x00, 0x00, 0x1E, 0x67, 0x00, 0x00, 0xC8, 0x32, 0x00, 0x00, + 0x24, 0x67, 0x00, 0x00, 0x58, 0x67, 0x00, 0x00, 0xC0, 0x32, 0x00, 0x00, 0x60, 0x67, 0x00, 0x00, + 0xB0, 0x68, 0x00, 0x00, 0xF4, 0x36, 0x00, 0x00, 0xB8, 0x68, 0x00, 0x00, 0x16, 0x69, 0x00, 0x00, + 0xD8, 0x39, 0x00, 0x00, 0x1C, 0x69, 0x00, 0x00, 0xFC, 0x6A, 0x00, 0x00, 0xF4, 0x39, 0x00, 0x00, + 0x04, 0x6B, 0x00, 0x00, 0x12, 0x6C, 0x00, 0x00, 0x10, 0x36, 0x00, 0x00, 0x18, 0x6C, 0x00, 0x00, + 0x32, 0x75, 0x00, 0x00, 0x04, 0x39, 0x00, 0x00, 0x38, 0x75, 0x00, 0x00, 0x93, 0x76, 0x00, 0x00, + 0xD0, 0x35, 0x00, 0x00, 0x9C, 0x76, 0x00, 0x00, 0x5D, 0x78, 0x00, 0x00, 0xB8, 0x35, 0x00, 0x00, + 0x64, 0x78, 0x00, 0x00, 0xCA, 0x79, 0x00, 0x00, 0xB4, 0x36, 0x00, 0x00, 0xD0, 0x79, 0x00, 0x00, + 0x4E, 0x7B, 0x00, 0x00, 0xC4, 0x38, 0x00, 0x00, 0x54, 0x7B, 0x00, 0x00, 0x76, 0x7C, 0x00, 0x00, + 0x7C, 0x35, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x6F, 0x7D, 0x00, 0x00, 0x40, 0x35, 0x00, 0x00, + 0x78, 0x7D, 0x00, 0x00, 0x71, 0x7E, 0x00, 0x00, 0x04, 0x35, 0x00, 0x00, 0x78, 0x7E, 0x00, 0x00, + 0x73, 0x7F, 0x00, 0x00, 0x50, 0x3A, 0x00, 0x00, 0x7C, 0x7F, 0x00, 0x00, 0x15, 0x82, 0x00, 0x00, + 0x90, 0x34, 0x00, 0x00, 0x1C, 0x82, 0x00, 0x00, 0xE0, 0x83, 0x00, 0x00, 0x40, 0x34, 0x00, 0x00, + 0xE8, 0x83, 0x00, 0x00, 0xE5, 0x85, 0x00, 0x00, 0xFC, 0x33, 0x00, 0x00, 0xEC, 0x85, 0x00, 0x00, + 0x2A, 0x86, 0x00, 0x00, 0xC0, 0x32, 0x00, 0x00, 0x30, 0x86, 0x00, 0x00, 0x38, 0x87, 0x00, 0x00, + 0xC0, 0x33, 0x00, 0x00, 0x40, 0x87, 0x00, 0x00, 0x28, 0x88, 0x00, 0x00, 0x84, 0x33, 0x00, 0x00, + 0x30, 0x88, 0x00, 0x00, 0xB4, 0x88, 0x00, 0x00, 0xE8, 0x39, 0x00, 0x00, 0xBC, 0x88, 0x00, 0x00, + 0xBC, 0x89, 0x00, 0x00, 0x44, 0x3A, 0x00, 0x00, 0xC4, 0x89, 0x00, 0x00, 0xF4, 0x89, 0x00, 0x00, + 0xAC, 0x3A, 0x00, 0x00, 0xFC, 0x89, 0x00, 0x00, 0xCA, 0x8C, 0x00, 0x00, 0x74, 0x38, 0x00, 0x00, + 0xD0, 0x8C, 0x00, 0x00, 0x1A, 0x8D, 0x00, 0x00, 0x6C, 0x38, 0x00, 0x00, 0x20, 0x8D, 0x00, 0x00, + 0x1C, 0x8F, 0x00, 0x00, 0x20, 0x33, 0x00, 0x00, 0x24, 0x8F, 0x00, 0x00, 0x3B, 0x91, 0x00, 0x00, + 0xD0, 0x32, 0x00, 0x00, 0x44, 0x91, 0x00, 0x00, 0x81, 0x95, 0x00, 0x00, 0x70, 0x36, 0x00, 0x00, + 0x88, 0x95, 0x00, 0x00, 0xE5, 0x96, 0x00, 0x00, 0x2C, 0x38, 0x00, 0x00, 0xEC, 0x96, 0x00, 0x00, + 0x49, 0x98, 0x00, 0x00, 0xEC, 0x37, 0x00, 0x00, 0x50, 0x98, 0x00, 0x00, 0x1F, 0x9A, 0x00, 0x00, + 0x98, 0x37, 0x00, 0x00, 0x96, 0x9C, 0x00, 0x00, 0xB2, 0x9C, 0x00, 0x00, 0x68, 0x36, 0x00, 0x00, + 0x64, 0xA0, 0x00, 0x00, 0x82, 0xA0, 0x00, 0x00, 0xC0, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x89, 0x5C, 0x24, 0x10, 0x57, 0x48, 0x83, + 0xEC, 0x50, 0x48, 0x8B, 0xD9, 0x48, 0x89, 0x0D, 0x04, 0xE3, 0xFF, 0xFF, 0x48, 0x8D, 0x0D, 0xDD, + 0xE1, 0xFF, 0xFF, 0x48, 0x8B, 0xFA, 0xC7, 0x05, 0xD0, 0xE1, 0xFF, 0xFF, 0x1C, 0x01, 0x00, 0x00, + 0xFF, 0x15, 0x3A, 0xD0, 0xFF, 0xFF, 0x44, 0x8B, 0xD8, 0x85, 0xC0, 0x78, 0x0E, 0x83, 0x3D, 0xAC, + 0xE1, 0xFF, 0xFF, 0x00, 0x75, 0x05, 0xE8, 0xF1, 0x04, 0x00, 0x00, 0x45, 0x85, 0xDB, 0x0F, 0x88, + 0x8C, 0x00, 0x00, 0x00, 0xE8, 0xB7, 0x05, 0x00, 0x00, 0x48, 0x8B, 0xCF, 0xE8, 0x17, 0x01, 0x00, + 0x00, 0x85, 0xC0, 0x78, 0x7E, 0x48, 0x8D, 0x15, 0xB4, 0x39, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, + 0x40, 0xFF, 0x15, 0x99, 0xCF, 0xFF, 0xFF, 0x4C, 0x8D, 0x5C, 0x24, 0x60, 0x4C, 0x8D, 0x44, 0x24, + 0x40, 0x4C, 0x89, 0x5C, 0x24, 0x30, 0x41, 0xB9, 0x22, 0x00, 0x00, 0x00, 0x33, 0xD2, 0x48, 0x8B, + 0xCB, 0xC6, 0x44, 0x24, 0x28, 0x00, 0xC7, 0x44, 0x24, 0x20, 0x00, 0x01, 0x00, 0x00, 0xFF, 0x15, + 0xAC, 0xCF, 0xFF, 0xFF, 0x44, 0x8B, 0xD8, 0x85, 0xC0, 0x78, 0x38, 0x48, 0x8B, 0x44, 0x24, 0x60, + 0x48, 0x8D, 0x0D, 0x51, 0xAF, 0xFF, 0xFF, 0x48, 0x89, 0x4B, 0x70, 0x48, 0x8D, 0x0D, 0x0E, 0xB1, + 0xFF, 0xFF, 0x48, 0x89, 0x05, 0x6F, 0xE2, 0xFF, 0xFF, 0x48, 0x89, 0x8B, 0xE0, 0x00, 0x00, 0x00, + 0x48, 0x8D, 0x0D, 0x1D, 0x00, 0x00, 0x00, 0x48, 0x89, 0x4B, 0x68, 0x0F, 0xBA, 0x70, 0x30, 0x07, + 0x41, 0x8B, 0xC3, 0x48, 0x8B, 0x5C, 0x24, 0x68, 0x48, 0x83, 0xC4, 0x50, 0x5F, 0xC3, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0x0D, 0x3D, 0xE2, 0xFF, 0xFF, 0x48, 0xFF, 0x25, 0x16, 0xCF, + 0xFF, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x40, 0x53, 0x48, 0x83, 0xEC, 0x50, 0x48, 0x8B, + 0x05, 0xEB, 0xDF, 0xFF, 0xFF, 0x48, 0x33, 0xC4, 0x48, 0x89, 0x44, 0x24, 0x48, 0x48, 0x8D, 0x44, + 0x24, 0x30, 0x41, 0x8B, 0xD8, 0x4C, 0x8D, 0x4C, 0x24, 0x38, 0x48, 0x89, 0x44, 0x24, 0x28, 0x41, + 0xB8, 0x02, 0x00, 0x00, 0x00, 0xC7, 0x44, 0x24, 0x20, 0x10, 0x00, 0x00, 0x00, 0xFF, 0x15, 0xED, + 0xCE, 0xFF, 0xFF, 0x83, 0x7C, 0x24, 0x3C, 0x04, 0x44, 0x8B, 0xD8, 0xB8, 0x24, 0x00, 0x00, 0xC0, + 0x44, 0x0F, 0x45, 0xD8, 0x8B, 0x44, 0x24, 0x44, 0x45, 0x85, 0xDB, 0x0F, 0x48, 0xC3, 0x48, 0x8B, + 0x4C, 0x24, 0x48, 0x48, 0x33, 0xCC, 0xE8, 0x35, 0xBD, 0xFF, 0xFF, 0x48, 0x83, 0xC4, 0x50, 0x5B, + 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x10, 0x57, 0x48, 0x81, + 0xEC, 0x90, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xF9, 0x48, 0x8D, 0x15, 0xC1, 0x38, 0x00, 0x00, 0x48, + 0x8D, 0x4C, 0x24, 0x38, 0xFF, 0x15, 0x76, 0xCE, 0xFF, 0xFF, 0x44, 0x0F, 0xB7, 0x1F, 0xBB, 0x01, + 0x00, 0x00, 0x00, 0x66, 0x44, 0x03, 0x5C, 0x24, 0x38, 0x41, 0xB8, 0x4B, 0x70, 0x68, 0x54, 0x8B, + 0xCB, 0x41, 0x0F, 0xB7, 0xD3, 0x66, 0x44, 0x89, 0x5C, 0x24, 0x28, 0x66, 0x44, 0x89, 0x5C, 0x24, + 0x2A, 0xFF, 0x15, 0x39, 0xCE, 0xFF, 0xFF, 0x48, 0x89, 0x44, 0x24, 0x30, 0x48, 0x85, 0xC0, 0x75, + 0x0A, 0xB8, 0x9A, 0x00, 0x00, 0xC0, 0xE9, 0x10, 0x01, 0x00, 0x00, 0x44, 0x0F, 0xB7, 0x07, 0x48, + 0x8B, 0x57, 0x08, 0x48, 0x8B, 0xC8, 0xE8, 0x25, 0xBD, 0xFF, 0xFF, 0x0F, 0xB7, 0x0F, 0x48, 0x8B, + 0x44, 0x24, 0x30, 0x44, 0x0F, 0xB7, 0x44, 0x24, 0x38, 0x48, 0x8B, 0x54, 0x24, 0x40, 0x48, 0xD1, + 0xE9, 0x48, 0x8D, 0x0C, 0x48, 0xE8, 0x06, 0xBD, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, 0x60, 0x00, + 0x48, 0x83, 0x64, 0x24, 0x78, 0x00, 0x48, 0x83, 0xA4, 0x24, 0x80, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x8D, 0x44, 0x24, 0x28, 0x4C, 0x8D, 0x44, 0x24, 0x58, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xBA, 0x19, + 0x00, 0x02, 0x00, 0x48, 0x89, 0x44, 0x24, 0x68, 0xC7, 0x44, 0x24, 0x58, 0x30, 0x00, 0x00, 0x00, + 0xC7, 0x44, 0x24, 0x70, 0x40, 0x02, 0x00, 0x00, 0xFF, 0x15, 0x12, 0xCE, 0xFF, 0xFF, 0x48, 0x8B, + 0x4C, 0x24, 0x30, 0xBA, 0x4B, 0x70, 0x68, 0x54, 0x8B, 0xF8, 0xFF, 0x15, 0xA8, 0xCD, 0xFF, 0xFF, + 0x85, 0xFF, 0x79, 0x07, 0x33, 0xFF, 0x48, 0x21, 0x7C, 0x24, 0x20, 0x48, 0x8D, 0x15, 0xFE, 0x37, + 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x93, 0xCD, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, + 0x24, 0x20, 0x48, 0x85, 0xC9, 0x74, 0x0F, 0x48, 0x8D, 0x54, 0x24, 0x48, 0x44, 0x8B, 0xC3, 0xE8, + 0x74, 0xFE, 0xFF, 0xFF, 0x8B, 0xD8, 0x48, 0x8D, 0x15, 0xF3, 0x37, 0x00, 0x00, 0x48, 0x8D, 0x4C, + 0x24, 0x48, 0x89, 0x1D, 0x88, 0xE0, 0xFF, 0xFF, 0xFF, 0x15, 0x62, 0xCD, 0xFF, 0xFF, 0x48, 0x8B, + 0x4C, 0x24, 0x20, 0x48, 0x85, 0xC9, 0x75, 0x04, 0x33, 0xC0, 0xEB, 0x12, 0x48, 0x8D, 0x54, 0x24, + 0x48, 0x45, 0x33, 0xC0, 0xE8, 0x3F, 0xFE, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x20, 0x89, 0x05, + 0x60, 0xE0, 0xFF, 0xFF, 0xE8, 0x6B, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x20, 0x48, 0x85, + 0xC9, 0x74, 0x06, 0xFF, 0x15, 0x4F, 0xCD, 0xFF, 0xFF, 0x8B, 0xC7, 0x48, 0x8B, 0x9C, 0x24, 0xA8, + 0x00, 0x00, 0x00, 0x48, 0x81, 0xC4, 0x90, 0x00, 0x00, 0x00, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x40, 0x53, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x8B, 0xD9, 0x84, 0xD2, 0x74, + 0x1C, 0xBA, 0x04, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0xFF, 0x15, 0x01, 0xCD, 0xFF, 0xFF, 0x44, + 0x8B, 0x1D, 0x02, 0xE0, 0xFF, 0xFF, 0x44, 0x89, 0x1B, 0xEB, 0x0A, 0xEB, 0x0A, 0x8B, 0x05, 0xF5, + 0xDF, 0xFF, 0xFF, 0x89, 0x01, 0x33, 0xC0, 0x48, 0x83, 0xC4, 0x20, 0x5B, 0xC3, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x10, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x48, 0x8B, + 0xF9, 0x48, 0x85, 0xC9, 0x75, 0x0A, 0xB8, 0x01, 0x00, 0x00, 0xC0, 0xE9, 0xC2, 0x00, 0x00, 0x00, + 0x48, 0x8D, 0x15, 0x69, 0x37, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x30, 0xFF, 0x15, 0x9E, 0xCC, + 0xFF, 0xFF, 0x45, 0x33, 0xC9, 0x4C, 0x8D, 0x5C, 0x24, 0x50, 0x4C, 0x89, 0x5C, 0x24, 0x28, 0x83, + 0x64, 0x24, 0x20, 0x00, 0x48, 0x8D, 0x54, 0x24, 0x30, 0x45, 0x8D, 0x41, 0x02, 0x48, 0x8B, 0xCF, + 0xFF, 0x15, 0x9A, 0xCC, 0xFF, 0xFF, 0x3D, 0x05, 0x00, 0x00, 0x80, 0x74, 0x07, 0x3D, 0x23, 0x00, + 0x00, 0xC0, 0x75, 0xB2, 0x8B, 0x54, 0x24, 0x50, 0xB9, 0x01, 0x00, 0x00, 0x00, 0x41, 0xB8, 0x4B, + 0x70, 0x68, 0x54, 0xFF, 0x15, 0x47, 0xCC, 0xFF, 0xFF, 0x48, 0x8B, 0xD8, 0x48, 0x85, 0xC0, 0x75, + 0x07, 0xB8, 0x9A, 0x00, 0x00, 0xC0, 0xEB, 0x5A, 0x48, 0x8D, 0x44, 0x24, 0x50, 0x48, 0x8D, 0x54, + 0x24, 0x30, 0x4C, 0x8B, 0xCB, 0x48, 0x89, 0x44, 0x24, 0x28, 0x8B, 0x44, 0x24, 0x50, 0x41, 0xB8, + 0x02, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xCF, 0x89, 0x44, 0x24, 0x20, 0xFF, 0x15, 0x3F, 0xCC, 0xFF, + 0xFF, 0x8B, 0xF8, 0x85, 0xC0, 0x78, 0x1B, 0x83, 0x7B, 0x04, 0x03, 0x75, 0x10, 0x8B, 0x53, 0x08, + 0x48, 0x8D, 0x4B, 0x0C, 0xE8, 0x2B, 0x00, 0x00, 0x00, 0x8B, 0xF8, 0xEB, 0x05, 0xBF, 0x24, 0x00, + 0x00, 0xC0, 0xBA, 0x4B, 0x70, 0x68, 0x54, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xE8, 0xCB, 0xFF, 0xFF, + 0x8B, 0xC7, 0x48, 0x8B, 0x5C, 0x24, 0x58, 0x48, 0x83, 0xC4, 0x40, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x44, 0x8B, 0xCA, 0x4C, 0x8B, 0xC1, 0x83, 0xFA, 0x08, 0x73, 0x06, 0xB8, + 0x0D, 0x00, 0x00, 0xC0, 0xC3, 0x83, 0x39, 0x02, 0x75, 0xF5, 0x8B, 0x51, 0x04, 0x83, 0xFA, 0x40, + 0x77, 0xED, 0x48, 0x8D, 0x0C, 0xD2, 0x48, 0x8D, 0x0C, 0x8D, 0x08, 0x00, 0x00, 0x00, 0x4C, 0x3B, + 0xC9, 0x72, 0xDC, 0x33, 0xC9, 0x3B, 0xD1, 0x76, 0x56, 0x44, 0x0F, 0xB7, 0x0D, 0xA3, 0xDE, 0xFF, + 0xFF, 0x49, 0x83, 0xC0, 0x0C, 0x41, 0xBA, 0xFF, 0xFF, 0x00, 0x00, 0x41, 0x0F, 0xB7, 0x40, 0xFC, + 0x3B, 0x05, 0x7E, 0xDD, 0xFF, 0xFF, 0x75, 0x2D, 0x41, 0x0F, 0xB7, 0x40, 0xFE, 0x3B, 0x05, 0x75, + 0xDD, 0xFF, 0xFF, 0x75, 0x20, 0x66, 0x45, 0x39, 0x10, 0x74, 0x06, 0x66, 0x45, 0x39, 0x08, 0x75, + 0x14, 0x66, 0x45, 0x39, 0x50, 0x02, 0x74, 0x1D, 0x41, 0x0F, 0xB7, 0x40, 0x02, 0x3B, 0x05, 0x59, + 0xDD, 0xFF, 0xFF, 0x74, 0x10, 0xFF, 0xC1, 0x49, 0x83, 0xC0, 0x24, 0x3B, 0xCA, 0x72, 0xBC, 0xB8, + 0x25, 0x02, 0x00, 0xC0, 0xC3, 0x41, 0x8B, 0x40, 0x04, 0x89, 0x05, 0x21, 0xDD, 0xFF, 0xFF, 0x41, + 0x0F, 0xBF, 0x40, 0x08, 0x89, 0x05, 0x36, 0xDC, 0xFF, 0xFF, 0x41, 0x0F, 0xBF, 0x40, 0x0A, 0x89, + 0x05, 0x2F, 0xDC, 0xFF, 0xFF, 0x41, 0x0F, 0xBF, 0x40, 0x10, 0x89, 0x05, 0x28, 0xDC, 0xFF, 0xFF, + 0x41, 0x0F, 0xBF, 0x40, 0x12, 0x89, 0x05, 0x21, 0xDC, 0xFF, 0xFF, 0x41, 0x0F, 0xBF, 0x40, 0x14, + 0x89, 0x05, 0x1A, 0xDC, 0xFF, 0xFF, 0x41, 0x0F, 0xBF, 0x40, 0x16, 0x89, 0x05, 0x13, 0xDC, 0xFF, + 0xFF, 0x41, 0x0F, 0xBF, 0x40, 0x18, 0x89, 0x05, 0x0C, 0xDC, 0xFF, 0xFF, 0x41, 0x0F, 0xBF, 0x40, + 0x1A, 0x89, 0x05, 0x05, 0xDC, 0xFF, 0xFF, 0x41, 0x0F, 0xBF, 0x40, 0x1C, 0x89, 0x05, 0xFE, 0xDB, + 0xFF, 0xFF, 0x33, 0xC0, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x8B, 0x15, 0xC2, 0xDC, + 0xFF, 0xFF, 0x8B, 0x0D, 0xC0, 0xDC, 0xFF, 0xFF, 0x0F, 0xB7, 0x05, 0xC5, 0xDD, 0xFF, 0xFF, 0x83, + 0xFA, 0x05, 0x75, 0x4B, 0x83, 0xF9, 0x01, 0x75, 0x29, 0xC7, 0x05, 0x8D, 0xDC, 0xFF, 0xFF, 0x33, + 0x00, 0x00, 0x00, 0x85, 0xC0, 0x0F, 0x84, 0x97, 0x00, 0x00, 0x00, 0x3B, 0xC1, 0x0F, 0x84, 0x8F, + 0x00, 0x00, 0x00, 0x83, 0xF8, 0x02, 0x74, 0x79, 0x83, 0xF8, 0x03, 0x74, 0x74, 0xE9, 0x80, 0x00, + 0x00, 0x00, 0x83, 0xF9, 0x02, 0x75, 0x7B, 0xC7, 0x05, 0x5F, 0xDC, 0xFF, 0xFF, 0x34, 0x00, 0x00, + 0x00, 0x85, 0xC0, 0x74, 0x5C, 0x83, 0xF8, 0x01, 0x74, 0x57, 0x83, 0xF8, 0x02, 0xEB, 0xDC, 0x83, + 0xFA, 0x06, 0x75, 0x55, 0x85, 0xC9, 0x75, 0x0C, 0xC7, 0x05, 0x3E, 0xDC, 0xFF, 0xFF, 0x3C, 0x00, + 0x00, 0x00, 0xEB, 0xDD, 0x83, 0xF9, 0x01, 0x75, 0x12, 0xC7, 0x05, 0x2D, 0xDC, 0xFF, 0xFF, 0x3D, + 0x00, 0x00, 0x00, 0x85, 0xC0, 0x74, 0x2A, 0x3B, 0xC1, 0xEB, 0xB0, 0x83, 0xF9, 0x02, 0x75, 0x0E, + 0xC7, 0x05, 0x16, 0xDC, 0xFF, 0xFF, 0x3E, 0x00, 0x00, 0x00, 0x85, 0xC0, 0xEB, 0x9D, 0x83, 0xF9, + 0x03, 0x75, 0x11, 0xC7, 0x05, 0x03, 0xDC, 0xFF, 0xFF, 0x3F, 0x00, 0x00, 0x00, 0x85, 0xC0, 0x75, + 0x11, 0x33, 0xC0, 0xC3, 0x77, 0x05, 0x83, 0xFA, 0x06, 0x76, 0x07, 0x83, 0x0D, 0xEE, 0xDB, 0xFF, + 0xFF, 0xFF, 0xB8, 0xBB, 0x00, 0x00, 0xC0, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x83, 0xEC, 0x38, 0x83, 0x3D, 0xD5, 0xDB, 0xFF, 0xFF, 0x3E, 0x72, 0x24, 0x48, 0x8D, 0x15, + 0xDC, 0x34, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0xE1, 0xC9, 0xFF, 0xFF, 0x48, + 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0x46, 0xCA, 0xFF, 0xFF, 0x48, 0x89, 0x05, 0x1F, 0xDB, 0xFF, + 0xFF, 0x48, 0x8D, 0x15, 0xE8, 0x34, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0xBD, + 0xC9, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0x22, 0xCA, 0xFF, 0xFF, 0x48, 0x8D, + 0x15, 0xEB, 0x34, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0x48, 0x89, 0x05, 0xDF, 0xDA, 0xFF, + 0xFF, 0xFF, 0x15, 0x99, 0xC9, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0xFE, 0xC9, + 0xFF, 0xFF, 0x48, 0x8D, 0x15, 0x17, 0x35, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0x48, 0x89, + 0x05, 0xAB, 0xDA, 0xFF, 0xFF, 0xFF, 0x15, 0x75, 0xC9, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x20, + 0xFF, 0x15, 0xDA, 0xC9, 0xFF, 0xFF, 0x48, 0x8D, 0x15, 0x23, 0x35, 0x00, 0x00, 0x48, 0x8D, 0x4C, + 0x24, 0x20, 0x48, 0x89, 0x05, 0x9F, 0xDA, 0xFF, 0xFF, 0xFF, 0x15, 0x51, 0xC9, 0xFF, 0xFF, 0x48, + 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0xB6, 0xC9, 0xFF, 0xFF, 0x48, 0x8D, 0x15, 0x4F, 0x35, 0x00, + 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0x48, 0x89, 0x05, 0x93, 0xDA, 0xFF, 0xFF, 0xFF, 0x15, 0x2D, + 0xC9, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0x92, 0xC9, 0xFF, 0xFF, 0x48, 0x8D, + 0x15, 0x4B, 0x35, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0x48, 0x89, 0x05, 0x47, 0xDA, 0xFF, + 0xFF, 0xFF, 0x15, 0x09, 0xC9, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x20, 0xFF, 0x15, 0x6E, 0xC9, + 0xFF, 0xFF, 0x48, 0x89, 0x05, 0x4F, 0xDA, 0xFF, 0xFF, 0x48, 0x83, 0xC4, 0x38, 0xC3, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x83, 0xEC, 0x28, 0x8B, 0x15, 0xC2, 0xDA, 0xFF, 0xFF, 0x8D, 0x42, + 0xCD, 0x83, 0xF8, 0x09, 0x77, 0x06, 0x48, 0x8B, 0x41, 0xE0, 0xEB, 0x17, 0x83, 0xFA, 0x3D, 0x72, + 0x10, 0x48, 0x8B, 0x05, 0x08, 0xDA, 0xFF, 0xFF, 0x48, 0x85, 0xC0, 0x74, 0x04, 0xFF, 0xD0, 0xEB, + 0x02, 0x33, 0xC0, 0x48, 0x83, 0xC4, 0x28, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x89, 0x5C, 0x24, 0x08, 0x4C, 0x89, 0x44, 0x24, 0x18, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x49, + 0x8B, 0xF8, 0x48, 0x8B, 0xC2, 0x4C, 0x8B, 0xD1, 0x4C, 0x8B, 0x01, 0x44, 0x8B, 0x1D, 0x6E, 0xDA, + 0xFF, 0xFF, 0x41, 0x83, 0xFB, 0x3E, 0x72, 0x20, 0x8B, 0x0D, 0x9E, 0xD9, 0xFF, 0xFF, 0x83, 0xF9, + 0xFF, 0x74, 0x0E, 0x49, 0x8B, 0xD0, 0x48, 0xD3, 0xFA, 0x48, 0x83, 0xE2, 0xF0, 0x33, 0xDB, 0xEB, + 0x10, 0x33, 0xDB, 0x48, 0x8B, 0xD3, 0xEB, 0x09, 0x49, 0x8B, 0xD0, 0x48, 0x83, 0xE2, 0xF8, 0x33, + 0xDB, 0x48, 0x89, 0x44, 0x24, 0x20, 0x48, 0x8D, 0x42, 0x30, 0x48, 0xF7, 0xDA, 0x4D, 0x1B, 0xC9, + 0x4C, 0x23, 0xC8, 0x4C, 0x89, 0x4C, 0x24, 0x28, 0x41, 0x8B, 0x4A, 0x08, 0x8B, 0xC1, 0x0F, 0xBA, + 0xF0, 0x19, 0x89, 0x44, 0x24, 0x30, 0xB8, 0xFF, 0xFF, 0x00, 0x00, 0x66, 0x89, 0x44, 0x24, 0x34, + 0x66, 0x89, 0x5C, 0x24, 0x36, 0x41, 0x83, 0xFB, 0x3E, 0x72, 0x1F, 0x8B, 0x0D, 0x3F, 0xD9, 0xFF, + 0xFF, 0x83, 0xF9, 0xFF, 0x74, 0x0E, 0x49, 0xD3, 0xE8, 0x41, 0x83, 0xE0, 0x03, 0x44, 0x89, 0x44, + 0x24, 0x38, 0xEB, 0x18, 0x89, 0x5C, 0x24, 0x38, 0xEB, 0x12, 0xC1, 0xE9, 0x19, 0x83, 0xE1, 0x01, + 0x41, 0x8B, 0xC0, 0x83, 0xE0, 0x06, 0x0B, 0xC8, 0x89, 0x4C, 0x24, 0x38, 0x89, 0x5C, 0x24, 0x3C, + 0x4C, 0x3B, 0xCB, 0x74, 0x35, 0x49, 0x8B, 0xC9, 0xE8, 0xF7, 0xFE, 0xFF, 0xFF, 0x48, 0x3B, 0xC3, + 0x74, 0x28, 0x8B, 0x0D, 0xF0, 0xD8, 0xFF, 0xFF, 0x83, 0xF9, 0xFF, 0x74, 0x1D, 0x83, 0x3D, 0xAC, + 0xD9, 0xFF, 0xFF, 0x3D, 0x72, 0x0B, 0x0F, 0xB6, 0x04, 0x01, 0x66, 0x89, 0x44, 0x24, 0x34, 0xEB, + 0x09, 0x0F, 0xB7, 0x0C, 0x01, 0x66, 0x89, 0x4C, 0x24, 0x34, 0x48, 0x8B, 0x4F, 0x10, 0x48, 0x8D, + 0x41, 0x20, 0x48, 0x89, 0x47, 0x10, 0xFF, 0x47, 0x18, 0x48, 0x3B, 0x0F, 0x72, 0x29, 0x48, 0x3B, + 0x47, 0x08, 0x77, 0x23, 0x48, 0x8D, 0x54, 0x24, 0x20, 0x41, 0xB8, 0x20, 0x00, 0x00, 0x00, 0xE8, + 0x8C, 0xB6, 0xFF, 0xFF, 0xEB, 0x0F, 0x48, 0x8B, 0x4C, 0x24, 0x60, 0x33, 0xDB, 0x39, 0x59, 0x1C, + 0x75, 0x03, 0x89, 0x41, 0x1C, 0xEB, 0x0C, 0x39, 0x5F, 0x1C, 0x75, 0x07, 0xC7, 0x47, 0x1C, 0x23, + 0x00, 0x00, 0xC0, 0x32, 0xC0, 0x48, 0x8B, 0x5C, 0x24, 0x50, 0x48, 0x83, 0xC4, 0x40, 0x5F, 0xC3, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, + 0x24, 0x10, 0x57, 0x48, 0x83, 0xEC, 0x20, 0x49, 0x8B, 0xC0, 0x48, 0x8B, 0xDA, 0x48, 0x8B, 0xF9, + 0x48, 0x8B, 0xD0, 0x48, 0x8B, 0xCB, 0x4D, 0x8B, 0xC1, 0xE8, 0x82, 0xFE, 0xFF, 0xFF, 0x41, 0xB8, + 0x01, 0x00, 0x00, 0x00, 0x40, 0x8A, 0xF0, 0xF0, 0x4C, 0x0F, 0xC1, 0x03, 0x8B, 0x0D, 0x2E, 0xD8, + 0xFF, 0xFF, 0x48, 0x03, 0xCF, 0x48, 0x83, 0x39, 0x00, 0x74, 0x08, 0x33, 0xD2, 0xFF, 0x15, 0x5D, + 0xD8, 0xFF, 0xFF, 0x48, 0x8B, 0x5C, 0x24, 0x30, 0x40, 0x8A, 0xC6, 0x48, 0x8B, 0x74, 0x24, 0x38, + 0x48, 0x83, 0xC4, 0x20, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, + 0x89, 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, 0x89, 0x78, 0x18, 0x4C, 0x89, 0x60, 0x20, 0x41, + 0x56, 0x48, 0x83, 0xEC, 0x60, 0x4D, 0x8B, 0xE1, 0x45, 0x8B, 0xF0, 0x48, 0x8B, 0xF2, 0x48, 0x8B, + 0xD9, 0x83, 0x3D, 0xA8, 0xD8, 0xFF, 0xFF, 0x3E, 0x72, 0x1D, 0x48, 0x83, 0x3D, 0x0E, 0xD8, 0xFF, + 0xFF, 0x00, 0x74, 0x09, 0x83, 0x3D, 0xC5, 0xD7, 0xFF, 0xFF, 0xFF, 0x75, 0x0A, 0xB8, 0xBB, 0x00, + 0x00, 0xC0, 0xE9, 0x7A, 0x01, 0x00, 0x00, 0x80, 0xBC, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, 0x74, + 0x2F, 0x49, 0x8B, 0xD6, 0xBF, 0x04, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC7, 0x48, 0x8B, 0xCE, 0xFF, + 0x15, 0x9B, 0xC6, 0xFF, 0xFF, 0x4D, 0x85, 0xE4, 0x74, 0x0F, 0x44, 0x8B, 0xC7, 0x48, 0x8B, 0xD7, + 0x49, 0x8B, 0xCC, 0xFF, 0x15, 0x87, 0xC6, 0xFF, 0xFF, 0xEB, 0x05, 0xE9, 0x41, 0x01, 0x00, 0x00, + 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x30, 0x48, 0x89, 0x44, 0x24, 0x20, + 0x44, 0x8A, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x05, 0xC9, 0xC6, 0xFF, 0xFF, 0x4D, + 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x0B, 0xC7, 0xFF, 0xFF, 0x85, 0xC0, 0x0F, + 0x88, 0x0C, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x5C, 0x24, 0x30, 0x33, 0xFF, 0x83, 0x3D, 0x31, 0xD7, + 0xFF, 0xFF, 0xFF, 0x0F, 0x84, 0xEA, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xCB, 0xE8, 0x53, 0xB3, 0xFF, + 0xFF, 0x84, 0xC0, 0x74, 0x17, 0x8B, 0x05, 0x19, 0xD7, 0xFF, 0xFF, 0x48, 0x8B, 0x3C, 0x18, 0x48, + 0x85, 0xFF, 0x75, 0x08, 0x48, 0x8B, 0xCB, 0xE8, 0x84, 0xB3, 0xFF, 0xFF, 0x48, 0x85, 0xFF, 0x75, + 0x0A, 0x48, 0x8B, 0x5C, 0x24, 0x30, 0xE9, 0xB8, 0x00, 0x00, 0x00, 0x48, 0x89, 0x74, 0x24, 0x38, + 0x4A, 0x8D, 0x04, 0x36, 0x48, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8D, 0x46, 0x08, 0x48, 0x89, 0x44, + 0x24, 0x48, 0x83, 0x64, 0x24, 0x50, 0x00, 0x83, 0x64, 0x24, 0x54, 0x00, 0x83, 0x3D, 0xAD, 0xD7, + 0xFF, 0xFF, 0x3E, 0x72, 0x1A, 0x45, 0x33, 0xC9, 0x4C, 0x8D, 0x44, 0x24, 0x38, 0x48, 0x8D, 0x15, + 0x64, 0xFE, 0xFF, 0xFF, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x53, 0xC6, 0xFF, 0xFF, 0xEB, 0x18, 0x45, + 0x33, 0xC9, 0x4C, 0x8D, 0x44, 0x24, 0x38, 0x48, 0x8D, 0x15, 0xF2, 0xFC, 0xFF, 0xFF, 0x48, 0x8B, + 0xCF, 0xFF, 0x15, 0x39, 0xC6, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x30, 0xE8, 0x0F, 0xB3, 0xFF, + 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x30, 0xFF, 0x15, 0x74, 0xC6, 0xFF, 0xFF, 0x41, 0x83, 0xFE, 0x08, + 0x72, 0x1A, 0x80, 0xBC, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, 0x74, 0x0A, 0x8B, 0x44, 0x24, 0x50, + 0x89, 0x06, 0xEB, 0x08, 0xEB, 0x3B, 0x8B, 0x44, 0x24, 0x50, 0x89, 0x06, 0x4D, 0x85, 0xE4, 0x74, + 0x1C, 0x8B, 0x44, 0x24, 0x48, 0x2B, 0xC6, 0x80, 0xBC, 0x24, 0x90, 0x00, 0x00, 0x00, 0x00, 0x74, + 0x08, 0x41, 0x89, 0x04, 0x24, 0xEB, 0x06, 0xEB, 0x18, 0x41, 0x89, 0x04, 0x24, 0x8B, 0x44, 0x24, + 0x54, 0xEB, 0x0E, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x24, 0xC6, 0xFF, 0xFF, 0xB8, 0x01, 0x00, 0x00, + 0xC0, 0x4C, 0x8D, 0x5C, 0x24, 0x60, 0x49, 0x8B, 0x5B, 0x10, 0x49, 0x8B, 0x73, 0x18, 0x49, 0x8B, + 0x7B, 0x20, 0x4D, 0x8B, 0x63, 0x28, 0x49, 0x8B, 0xE3, 0x41, 0x5E, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x6C, 0x24, 0x10, 0x48, 0x89, + 0x74, 0x24, 0x20, 0x57, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xEC, 0x20, + 0xBF, 0x10, 0x00, 0x00, 0x00, 0x4D, 0x8B, 0xF1, 0x45, 0x8B, 0xF8, 0x4C, 0x8B, 0xE2, 0x48, 0x8B, + 0xF1, 0x44, 0x3B, 0xC7, 0x73, 0x0D, 0x41, 0x89, 0x39, 0xB8, 0x23, 0x00, 0x00, 0xC0, 0xE9, 0xB2, + 0x00, 0x00, 0x00, 0x33, 0xDB, 0x4C, 0x8D, 0x6A, 0x10, 0x4C, 0x89, 0x6A, 0x08, 0x66, 0x89, 0x1A, + 0x48, 0x8B, 0x49, 0x08, 0x48, 0x3B, 0xCB, 0x74, 0x38, 0x4C, 0x8D, 0x4C, 0x24, 0x60, 0xFF, 0x15, + 0x54, 0xC5, 0xFF, 0xFF, 0x3B, 0xC3, 0x44, 0x8B, 0xD8, 0x7D, 0x1C, 0xB8, 0x23, 0x00, 0x00, 0xC0, + 0x41, 0x81, 0xFB, 0x04, 0x00, 0x00, 0xC0, 0x44, 0x0F, 0x44, 0xD8, 0x8B, 0x44, 0x24, 0x60, 0x41, + 0x89, 0x06, 0x41, 0x8B, 0xC3, 0xEB, 0x6E, 0x41, 0x0F, 0xB7, 0x04, 0x24, 0x4C, 0x03, 0xE8, 0x03, + 0xF8, 0x48, 0x39, 0x5E, 0x60, 0x74, 0x59, 0x48, 0x8B, 0xCE, 0x8B, 0xEB, 0x0F, 0xB7, 0x41, 0x58, + 0x03, 0xE8, 0x48, 0x8B, 0x41, 0x40, 0x48, 0x3B, 0xC8, 0x74, 0x08, 0x48, 0x8B, 0xC8, 0x48, 0x3B, + 0xC3, 0x75, 0xE9, 0x03, 0xFD, 0x41, 0x3B, 0xFF, 0x76, 0x07, 0xBB, 0x23, 0x00, 0x00, 0xC0, 0xEB, + 0x2F, 0x8B, 0xC5, 0x4C, 0x03, 0xE8, 0x44, 0x0F, 0xB7, 0x46, 0x58, 0x48, 0x8B, 0x56, 0x60, 0x4D, + 0x2B, 0xE8, 0x49, 0x8B, 0xCD, 0xE8, 0x36, 0xB3, 0xFF, 0xFF, 0x4C, 0x8B, 0x5E, 0x40, 0x49, 0x3B, + 0xF3, 0x74, 0x08, 0x49, 0x8B, 0xF3, 0x4C, 0x3B, 0xDB, 0x75, 0xDB, 0x66, 0x41, 0x01, 0x2C, 0x24, + 0x41, 0x89, 0x3E, 0x8B, 0xC3, 0x48, 0x8B, 0x5C, 0x24, 0x50, 0x48, 0x8B, 0x6C, 0x24, 0x58, 0x48, + 0x8B, 0x74, 0x24, 0x68, 0x48, 0x83, 0xC4, 0x20, 0x41, 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0x41, 0x5C, + 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x18, 0x56, 0x57, 0x41, + 0x54, 0x41, 0x55, 0x41, 0x56, 0x48, 0x81, 0xEC, 0xF0, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x05, 0xCD, + 0xD4, 0xFF, 0xFF, 0x48, 0x33, 0xC4, 0x48, 0x89, 0x84, 0x24, 0xE0, 0x00, 0x00, 0x00, 0x4D, 0x8B, + 0xE1, 0x41, 0x8B, 0xD8, 0x48, 0x8B, 0xFA, 0x4C, 0x8B, 0xF1, 0x4C, 0x8B, 0xAC, 0x24, 0x48, 0x01, + 0x00, 0x00, 0x4C, 0x89, 0x6C, 0x24, 0x70, 0x80, 0xBC, 0x24, 0x50, 0x01, 0x00, 0x00, 0x00, 0x74, + 0x36, 0x8B, 0xB4, 0x24, 0x40, 0x01, 0x00, 0x00, 0x48, 0x8B, 0xD6, 0x41, 0xB8, 0x04, 0x00, 0x00, + 0x00, 0x49, 0x8B, 0xC9, 0xFF, 0x15, 0xA6, 0xC3, 0xFF, 0xFF, 0x4D, 0x85, 0xED, 0x74, 0x11, 0xBA, + 0x04, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0x49, 0x8B, 0xCD, 0xFF, 0x15, 0x90, 0xC3, 0xFF, 0xFF, + 0xEB, 0x0C, 0xE9, 0x73, 0x08, 0x00, 0x00, 0x8B, 0xB4, 0x24, 0x40, 0x01, 0x00, 0x00, 0x48, 0x83, + 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x20, 0x44, 0x8A, + 0x8C, 0x24, 0x50, 0x01, 0x00, 0x00, 0x4C, 0x8B, 0x05, 0xCB, 0xC3, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, + 0x33, 0xD2, 0x49, 0x8B, 0xCE, 0xFF, 0x15, 0x0D, 0xC4, 0xFF, 0xFF, 0x85, 0xC0, 0x0F, 0x88, 0x37, + 0x08, 0x00, 0x00, 0x48, 0x8B, 0x05, 0x0E, 0xC4, 0xFF, 0xFF, 0x48, 0x8B, 0x08, 0x48, 0x39, 0x4C, + 0x24, 0x48, 0x75, 0x0C, 0x48, 0x81, 0xCF, 0x00, 0x00, 0x00, 0x80, 0x45, 0x32, 0xED, 0xEB, 0x22, + 0x48, 0x85, 0xFF, 0x79, 0x15, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x00, 0xC4, 0xFF, 0xFF, + 0xB8, 0x08, 0x00, 0x00, 0xC0, 0xE9, 0x00, 0x08, 0x00, 0x00, 0x44, 0x8A, 0xAC, 0x24, 0x50, 0x01, + 0x00, 0x00, 0x85, 0xDB, 0x0F, 0x84, 0x3F, 0x07, 0x00, 0x00, 0x41, 0xBE, 0x01, 0x00, 0x00, 0x00, + 0x41, 0x2B, 0xDE, 0x0F, 0x84, 0xE5, 0x05, 0x00, 0x00, 0x41, 0x2B, 0xDE, 0x0F, 0x84, 0x07, 0x05, + 0x00, 0x00, 0x41, 0x2B, 0xDE, 0x0F, 0x84, 0x8C, 0x04, 0x00, 0x00, 0x41, 0x2B, 0xDE, 0x0F, 0x84, + 0x07, 0x04, 0x00, 0x00, 0x41, 0x2B, 0xDE, 0x0F, 0x84, 0x82, 0x03, 0x00, 0x00, 0x41, 0x2B, 0xDE, + 0x0F, 0x84, 0x0F, 0x02, 0x00, 0x00, 0x41, 0x2B, 0xDE, 0x0F, 0x84, 0xF9, 0x00, 0x00, 0x00, 0x41, + 0x3B, 0xDE, 0x74, 0x13, 0xBF, 0x03, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0x83, 0x64, 0x24, + 0x44, 0x00, 0xE9, 0x59, 0x07, 0x00, 0x00, 0x83, 0xFE, 0x08, 0x0F, 0x85, 0xCA, 0x00, 0x00, 0x00, + 0x48, 0x8D, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x90, 0xC3, 0xFF, 0xFF, + 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x60, 0x48, 0x89, 0x44, 0x24, 0x20, + 0x45, 0x8A, 0xCD, 0x4C, 0x8B, 0x05, 0x16, 0xC3, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, + 0x8B, 0xCF, 0xFF, 0x15, 0x20, 0xC3, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8D, + 0x4C, 0x24, 0x78, 0xFF, 0x15, 0xDF, 0xC2, 0xFF, 0xFF, 0x85, 0xFF, 0x0F, 0x88, 0xFF, 0x06, 0x00, + 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x60, 0x48, 0x83, 0x79, 0x08, 0x00, 0x74, 0x46, 0x48, 0x8B, 0x49, + 0x08, 0x48, 0x8B, 0x49, 0x08, 0x48, 0x85, 0xC9, 0x74, 0x39, 0x48, 0x8D, 0x44, 0x24, 0x50, 0x48, + 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, 0x8B, 0x05, 0xC8, 0xC2, 0xFF, 0xFF, + 0x48, 0x8B, 0x10, 0x48, 0x89, 0x54, 0x24, 0x20, 0x45, 0x33, 0xC9, 0x45, 0x33, 0xC0, 0x33, 0xD2, + 0xFF, 0x15, 0x02, 0xC3, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8B, 0x44, 0x24, + 0x50, 0xEB, 0x07, 0x33, 0xC0, 0x48, 0x89, 0x44, 0x24, 0x50, 0x85, 0xFF, 0x78, 0x0C, 0x49, 0x89, + 0x04, 0x24, 0xEB, 0x06, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8B, 0x4C, 0x24, 0x60, 0xFF, + 0x15, 0xBB, 0xC2, 0xFF, 0xFF, 0xE9, 0x86, 0x06, 0x00, 0x00, 0xBF, 0x04, 0x00, 0x00, 0xC0, 0x89, + 0x7C, 0x24, 0x40, 0xE9, 0x78, 0x06, 0x00, 0x00, 0x48, 0x8D, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, + 0x24, 0x48, 0xFF, 0x15, 0xB8, 0xC2, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, + 0x44, 0x24, 0x60, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCD, 0x4C, 0x8B, 0x05, 0x3E, 0xC2, + 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x48, 0xC2, 0xFF, 0xFF, + 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8D, 0x4C, 0x24, 0x78, 0xFF, 0x15, 0x07, 0xC2, 0xFF, + 0xFF, 0x85, 0xFF, 0x0F, 0x88, 0xAF, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x60, 0x8A, 0x41, + 0x48, 0x88, 0x84, 0x24, 0xA8, 0x00, 0x00, 0x00, 0x8A, 0x41, 0x49, 0x88, 0x84, 0x24, 0xA9, 0x00, + 0x00, 0x00, 0x8A, 0x41, 0x4A, 0x88, 0x84, 0x24, 0xAA, 0x00, 0x00, 0x00, 0x8A, 0x41, 0x4B, 0x88, + 0x84, 0x24, 0xAB, 0x00, 0x00, 0x00, 0x8A, 0x41, 0x4C, 0x88, 0x84, 0x24, 0xAC, 0x00, 0x00, 0x00, + 0x8A, 0x41, 0x4D, 0x88, 0x84, 0x24, 0xAD, 0x00, 0x00, 0x00, 0x8A, 0x41, 0x4E, 0x88, 0x84, 0x24, + 0xAE, 0x00, 0x00, 0x00, 0x8A, 0x41, 0x4F, 0x88, 0x84, 0x24, 0xAF, 0x00, 0x00, 0x00, 0x48, 0x8B, + 0x41, 0x68, 0x48, 0x89, 0x84, 0x24, 0xB0, 0x00, 0x00, 0x00, 0x8B, 0x41, 0x50, 0x89, 0x84, 0x24, + 0xB8, 0x00, 0x00, 0x00, 0x83, 0xFE, 0x18, 0x75, 0x30, 0x48, 0x8D, 0x94, 0x24, 0xA8, 0x00, 0x00, + 0x00, 0x48, 0x8B, 0x02, 0x49, 0x89, 0x04, 0x24, 0x48, 0x8B, 0x42, 0x08, 0x49, 0x89, 0x44, 0x24, + 0x08, 0x48, 0x8B, 0x42, 0x10, 0x49, 0x89, 0x44, 0x24, 0x10, 0xEB, 0x0B, 0x8B, 0xF8, 0x89, 0x44, + 0x24, 0x40, 0x48, 0x8B, 0x4C, 0x24, 0x60, 0xEB, 0x09, 0xBF, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x7C, + 0x24, 0x40, 0xFF, 0x15, 0xA8, 0xC1, 0xFF, 0xFF, 0xC7, 0x44, 0x24, 0x44, 0x18, 0x00, 0x00, 0x00, + 0xE9, 0x6B, 0x05, 0x00, 0x00, 0x83, 0xC8, 0xFF, 0x39, 0x05, 0xA2, 0xD1, 0xFF, 0xFF, 0x0F, 0x84, + 0x45, 0x01, 0x00, 0x00, 0x39, 0x05, 0xA2, 0xD1, 0xFF, 0xFF, 0x0F, 0x84, 0x39, 0x01, 0x00, 0x00, + 0x39, 0x05, 0x9E, 0xD1, 0xFF, 0xFF, 0x0F, 0x84, 0x2D, 0x01, 0x00, 0x00, 0x48, 0x8D, 0x54, 0x24, + 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x84, 0xC1, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, + 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x50, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCD, 0x45, + 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x1B, 0xC1, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, + 0x44, 0x24, 0x40, 0x48, 0x8D, 0x4C, 0x24, 0x78, 0xFF, 0x15, 0xDA, 0xC0, 0xFF, 0xFF, 0x85, 0xFF, + 0x0F, 0x88, 0xEC, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0xE8, 0x44, 0xF7, 0xFF, 0xFF, + 0x48, 0x85, 0xC0, 0x74, 0x3B, 0x8B, 0x1D, 0x39, 0xD1, 0xFF, 0xFF, 0x48, 0x03, 0xD8, 0x48, 0x8D, + 0x15, 0x7B, 0x2C, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x60, 0xFF, 0x15, 0x10, 0xC0, 0xFF, 0xFF, + 0x45, 0x33, 0xC0, 0x48, 0x8D, 0x54, 0x24, 0x60, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x8F, 0xC0, 0xFF, + 0xFF, 0x84, 0xC0, 0x75, 0x14, 0xBF, 0x24, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0xEB, 0x09, + 0xBF, 0xBB, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0x85, 0xFF, 0x78, 0x7F, 0x8B, 0x0D, 0xE9, + 0xD0, 0xFF, 0xFF, 0x48, 0x8B, 0x44, 0x24, 0x50, 0x48, 0x8B, 0x14, 0x01, 0x48, 0x85, 0xD2, 0x74, + 0x16, 0x8B, 0x05, 0xC9, 0xD0, 0xFF, 0xFF, 0xF3, 0x0F, 0x6F, 0x04, 0x10, 0xF3, 0x0F, 0x7F, 0x84, + 0x24, 0xA8, 0x00, 0x00, 0x00, 0xEB, 0x13, 0x33, 0xD2, 0x44, 0x8D, 0x42, 0x10, 0x48, 0x8D, 0x8C, + 0x24, 0xA8, 0x00, 0x00, 0x00, 0xE8, 0x16, 0xB3, 0xFF, 0xFF, 0x48, 0x83, 0xA4, 0x24, 0xB8, 0x00, + 0x00, 0x00, 0x00, 0x83, 0xFE, 0x18, 0x75, 0x2B, 0x48, 0x8D, 0x8C, 0x24, 0xA8, 0x00, 0x00, 0x00, + 0x48, 0x8B, 0x01, 0x49, 0x89, 0x04, 0x24, 0x48, 0x8B, 0x41, 0x08, 0x49, 0x89, 0x44, 0x24, 0x08, + 0x48, 0x8B, 0x41, 0x10, 0x49, 0x89, 0x44, 0x24, 0x10, 0xEB, 0x06, 0x8B, 0xF8, 0x89, 0x44, 0x24, + 0x40, 0xEB, 0x09, 0xBF, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0x48, 0x8B, 0x4C, 0x24, + 0x50, 0xFF, 0x15, 0x49, 0xC0, 0xFF, 0xFF, 0xEB, 0x09, 0xBF, 0xBB, 0x00, 0x00, 0xC0, 0x89, 0x7C, + 0x24, 0x40, 0xC7, 0x44, 0x24, 0x44, 0x18, 0x00, 0x00, 0x00, 0xE9, 0x01, 0x04, 0x00, 0x00, 0x48, + 0x8D, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x41, 0xC0, 0xFF, 0xFF, 0x48, + 0x83, 0x64, 0x24, 0x20, 0x00, 0x41, 0xB9, 0x30, 0x00, 0x00, 0x00, 0x4C, 0x8D, 0x84, 0x24, 0xA8, + 0x00, 0x00, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x12, 0xC0, 0xFF, 0xFF, 0x8B, 0xF8, + 0x89, 0x44, 0x24, 0x40, 0x48, 0x8D, 0x4C, 0x24, 0x78, 0xFF, 0x15, 0x99, 0xBF, 0xFF, 0xFF, 0x85, + 0xFF, 0x78, 0x2B, 0x83, 0xFE, 0x30, 0x75, 0x1D, 0x49, 0x8B, 0xCC, 0x48, 0x8D, 0x94, 0x24, 0xA8, + 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC6, 0xE8, 0xE5, 0xAD, 0xFF, 0xFF, 0xEB, 0x06, 0x8B, 0xF8, 0x89, + 0x44, 0x24, 0x40, 0xEB, 0x09, 0xBF, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0xC7, 0x44, + 0x24, 0x44, 0x30, 0x00, 0x00, 0x00, 0xE9, 0x85, 0x03, 0x00, 0x00, 0x48, 0x8D, 0x54, 0x24, 0x78, + 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0xC5, 0xBF, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, 0x20, + 0x00, 0x41, 0xB9, 0x30, 0x00, 0x00, 0x00, 0x4C, 0x8D, 0x84, 0x24, 0xA8, 0x00, 0x00, 0x00, 0x33, + 0xD2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x7E, 0xBF, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, + 0x48, 0x8D, 0x4C, 0x24, 0x78, 0xFF, 0x15, 0x1D, 0xBF, 0xFF, 0xFF, 0x85, 0xFF, 0x78, 0x2B, 0x83, + 0xFE, 0x30, 0x75, 0x1D, 0x49, 0x8B, 0xCC, 0x48, 0x8D, 0x94, 0x24, 0xA8, 0x00, 0x00, 0x00, 0x44, + 0x8B, 0xC6, 0xE8, 0x69, 0xAD, 0xFF, 0xFF, 0xEB, 0x06, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0xEB, + 0x09, 0xBF, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0xC7, 0x44, 0x24, 0x44, 0x30, 0x00, + 0x00, 0x00, 0xE9, 0x09, 0x03, 0x00, 0x00, 0x48, 0x8D, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, + 0x48, 0xFF, 0x15, 0x49, 0xBF, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, 0x20, 0x00, 0x41, 0xB9, 0x02, + 0x00, 0x00, 0x00, 0x4C, 0x8D, 0x44, 0x24, 0x58, 0x41, 0x8D, 0x51, 0x02, 0x48, 0x8B, 0xCF, 0xFF, + 0x15, 0xA3, 0xBE, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8D, 0x4C, 0x24, 0x78, + 0xFF, 0x15, 0xA2, 0xBE, 0xFF, 0xFF, 0x85, 0xFF, 0x78, 0x22, 0x83, 0xFE, 0x02, 0x75, 0x14, 0x0F, + 0xB7, 0x44, 0x24, 0x58, 0x66, 0x41, 0x89, 0x04, 0x24, 0xEB, 0x06, 0x8B, 0xF8, 0x89, 0x44, 0x24, + 0x40, 0xEB, 0x09, 0xBF, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0xC7, 0x44, 0x24, 0x44, + 0x02, 0x00, 0x00, 0x00, 0xE9, 0x97, 0x02, 0x00, 0x00, 0xBA, 0x68, 0x00, 0x00, 0x00, 0x89, 0x54, + 0x24, 0x44, 0x8B, 0xC6, 0x3B, 0xF2, 0x0F, 0x42, 0xC2, 0x8D, 0x50, 0x08, 0x41, 0xB8, 0x4B, 0x70, + 0x68, 0x51, 0x41, 0x8B, 0xCE, 0xFF, 0x15, 0xAD, 0xBE, 0xFF, 0xFF, 0x48, 0x8B, 0xD8, 0x48, 0x89, + 0x44, 0x24, 0x60, 0x48, 0x85, 0xC0, 0x0F, 0x84, 0x94, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xEE, 0x44, + 0x8B, 0xC6, 0x33, 0xD2, 0x48, 0x8B, 0xC8, 0xE8, 0x04, 0xB1, 0xFF, 0xFF, 0x48, 0x8D, 0x54, 0x24, + 0x78, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x94, 0xBE, 0xFF, 0xFF, 0x4C, 0x8D, 0x5C, 0x24, + 0x44, 0x4C, 0x89, 0x5C, 0x24, 0x20, 0x44, 0x8B, 0xCE, 0x4C, 0x8B, 0xC3, 0xBA, 0x02, 0x00, 0x00, + 0x00, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0xEE, 0xBD, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, + 0x48, 0x8D, 0x4C, 0x24, 0x78, 0xFF, 0x15, 0xED, 0xBD, 0xFF, 0xFF, 0x85, 0xFF, 0x78, 0x2E, 0x48, + 0x8B, 0x43, 0x08, 0x48, 0x85, 0xC0, 0x74, 0x0A, 0x48, 0x2B, 0xC3, 0x49, 0x03, 0xC4, 0x48, 0x89, + 0x43, 0x08, 0x4D, 0x8B, 0xC5, 0x48, 0x8B, 0xD3, 0x49, 0x8B, 0xCC, 0xE8, 0x30, 0xAC, 0xFF, 0xFF, + 0xEB, 0x0B, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8B, 0x5C, 0x24, 0x60, 0xBA, 0x4B, 0x70, + 0x68, 0x51, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x0D, 0xBD, 0xFF, 0xFF, 0xE9, 0xD0, 0x01, 0x00, 0x00, + 0xBF, 0x9A, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0xE9, 0xC2, 0x01, 0x00, 0x00, 0xBB, 0x10, + 0x00, 0x00, 0x00, 0x89, 0x5C, 0x24, 0x44, 0x48, 0x8D, 0x54, 0x24, 0x78, 0x48, 0x8B, 0x4C, 0x24, + 0x48, 0xFF, 0x15, 0xF9, 0xBD, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, + 0x24, 0x60, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCD, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, + 0x8B, 0xCF, 0xFF, 0x15, 0x90, 0xBD, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8D, + 0x4C, 0x24, 0x78, 0xFF, 0x15, 0x4F, 0xBD, 0xFF, 0xFF, 0x85, 0xFF, 0x0F, 0x88, 0x6F, 0x01, 0x00, + 0x00, 0x8B, 0xD6, 0x3B, 0xF3, 0x0F, 0x42, 0xD3, 0x41, 0xB8, 0x4B, 0x70, 0x68, 0x51, 0x41, 0x8B, + 0xCE, 0xFF, 0x15, 0x91, 0xBD, 0xFF, 0xFF, 0x48, 0x8B, 0xD8, 0x48, 0x89, 0x44, 0x24, 0x50, 0x48, + 0x85, 0xC0, 0x0F, 0x84, 0xBB, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xEE, 0x44, 0x8B, 0xC6, 0x33, 0xD2, + 0x48, 0x8B, 0xC8, 0xE8, 0xE8, 0xAF, 0xFF, 0xFF, 0x48, 0x8B, 0x7C, 0x24, 0x60, 0x48, 0x8B, 0xCF, + 0xE8, 0x7F, 0xF3, 0xFF, 0xFF, 0x48, 0x8B, 0x15, 0x14, 0xBD, 0xFF, 0xFF, 0x48, 0x3B, 0x02, 0x75, + 0x21, 0x83, 0x7F, 0x74, 0x00, 0x75, 0x06, 0x83, 0x7F, 0x70, 0x00, 0x74, 0x15, 0x4C, 0x8D, 0x4C, + 0x24, 0x44, 0x44, 0x8B, 0xC6, 0x48, 0x8B, 0xD3, 0x48, 0x8B, 0xCF, 0xE8, 0x34, 0xF7, 0xFF, 0xFF, + 0xEB, 0x14, 0x4C, 0x8D, 0x4C, 0x24, 0x44, 0x44, 0x8B, 0xC6, 0x48, 0x8B, 0xD3, 0x48, 0x8B, 0xCF, + 0xFF, 0x15, 0xD2, 0xBC, 0xFF, 0xFF, 0xB9, 0x23, 0x00, 0x00, 0xC0, 0x3D, 0x05, 0x00, 0x00, 0x80, + 0x0F, 0x44, 0xC1, 0x8D, 0x79, 0xE1, 0x3B, 0xC7, 0x0F, 0x44, 0xC1, 0x8B, 0xF8, 0x89, 0x44, 0x24, + 0x40, 0x85, 0xC0, 0x78, 0x2E, 0x48, 0x8B, 0x43, 0x08, 0x48, 0x85, 0xC0, 0x74, 0x0A, 0x48, 0x2B, + 0xC3, 0x49, 0x03, 0xC4, 0x48, 0x89, 0x43, 0x08, 0x4D, 0x8B, 0xC5, 0x48, 0x8B, 0xD3, 0x49, 0x8B, + 0xCC, 0xE8, 0xEA, 0xAA, 0xFF, 0xFF, 0xEB, 0x0B, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8B, + 0x5C, 0x24, 0x50, 0xBA, 0x4B, 0x70, 0x68, 0x51, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xC7, 0xBB, 0xFF, + 0xFF, 0xEB, 0x09, 0xBF, 0x9A, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0x48, 0x8B, 0x4C, 0x24, + 0x60, 0xFF, 0x15, 0xA9, 0xBC, 0xFF, 0xFF, 0xEB, 0x77, 0x48, 0x8D, 0x54, 0x24, 0x78, 0x48, 0x8B, + 0x4C, 0x24, 0x48, 0xFF, 0x15, 0xB7, 0xBC, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, 0x20, 0x00, 0x41, + 0xB9, 0x38, 0x00, 0x00, 0x00, 0x4C, 0x8D, 0x84, 0x24, 0xA8, 0x00, 0x00, 0x00, 0x33, 0xD2, 0x48, + 0x8B, 0xCF, 0xFF, 0x15, 0x10, 0xBC, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0x48, 0x8D, + 0x4C, 0x24, 0x78, 0xFF, 0x15, 0x0F, 0xBC, 0xFF, 0xFF, 0x85, 0xFF, 0x78, 0x2B, 0x83, 0xFE, 0x38, + 0x75, 0x1D, 0x49, 0x8B, 0xCC, 0x48, 0x8D, 0x94, 0x24, 0xA8, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC6, + 0xE8, 0x5B, 0xAA, 0xFF, 0xFF, 0xEB, 0x06, 0x8B, 0xF8, 0x89, 0x44, 0x24, 0x40, 0xEB, 0x09, 0xBF, + 0x04, 0x00, 0x00, 0xC0, 0x89, 0x7C, 0x24, 0x40, 0xC7, 0x44, 0x24, 0x44, 0x38, 0x00, 0x00, 0x00, + 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x25, 0xBC, 0xFF, 0xFF, 0x4C, 0x8B, 0x6C, 0x24, 0x70, + 0x4D, 0x85, 0xED, 0x74, 0x23, 0x80, 0xBC, 0x24, 0x50, 0x01, 0x00, 0x00, 0x00, 0x74, 0x10, 0x8B, + 0x44, 0x24, 0x44, 0x41, 0x89, 0x45, 0x00, 0xEB, 0x04, 0x8B, 0x7C, 0x24, 0x40, 0xEB, 0x09, 0x8B, + 0x4C, 0x24, 0x44, 0x49, 0x8B, 0xC5, 0x89, 0x08, 0x8B, 0xC7, 0x48, 0x8B, 0x8C, 0x24, 0xE0, 0x00, + 0x00, 0x00, 0x48, 0x33, 0xCC, 0xE8, 0x86, 0xA9, 0xFF, 0xFF, 0x48, 0x8B, 0x9C, 0x24, 0x30, 0x01, + 0x00, 0x00, 0x48, 0x81, 0xC4, 0xF0, 0x00, 0x00, 0x00, 0x41, 0x5E, 0x41, 0x5D, 0x41, 0x5C, 0x5F, + 0x5E, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, + 0x89, 0x70, 0x18, 0x48, 0x89, 0x78, 0x20, 0x48, 0x89, 0x50, 0x10, 0x41, 0x54, 0x41, 0x55, 0x41, + 0x56, 0x48, 0x83, 0xEC, 0x70, 0x4D, 0x8B, 0xE9, 0x45, 0x8B, 0xE0, 0x48, 0x8B, 0xFA, 0x4C, 0x8B, + 0xF1, 0x8A, 0x9C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x84, 0xDB, 0x74, 0x2B, 0xB8, 0x04, 0x00, 0x00, + 0x00, 0x44, 0x8D, 0x40, 0xFD, 0x41, 0x83, 0xFC, 0x03, 0x44, 0x0F, 0x45, 0xC0, 0x8B, 0xB4, 0x24, + 0xB0, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xD6, 0x49, 0x8B, 0xC9, 0xFF, 0x15, 0xD8, 0xBA, 0xFF, 0xFF, + 0xEB, 0x0C, 0xE9, 0xE1, 0x00, 0x00, 0x00, 0x8B, 0xB4, 0x24, 0xB0, 0x00, 0x00, 0x00, 0x48, 0x83, + 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x30, 0x48, 0x89, 0x44, 0x24, 0x20, 0x44, 0x8A, + 0xCB, 0x4C, 0x8B, 0x05, 0xD0, 0xBA, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x49, 0x8B, 0xCE, + 0xFF, 0x15, 0x12, 0xBB, 0xFF, 0xFF, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0xA8, 0x00, 0x00, 0x00, + 0x48, 0x8B, 0x4C, 0x24, 0x30, 0x48, 0x8B, 0x05, 0x0C, 0xBB, 0xFF, 0xFF, 0x48, 0x3B, 0x08, 0x75, + 0x11, 0x48, 0x81, 0xCF, 0x00, 0x00, 0x00, 0x80, 0x48, 0x89, 0xBC, 0x24, 0x98, 0x00, 0x00, 0x00, + 0xEB, 0x12, 0x48, 0x85, 0xFF, 0x79, 0x0D, 0xFF, 0x15, 0x03, 0xBB, 0xFF, 0xFF, 0xB8, 0x08, 0x00, + 0x00, 0xC0, 0xEB, 0x74, 0x41, 0x83, 0xFC, 0x03, 0x74, 0x07, 0xBB, 0x03, 0x00, 0x00, 0xC0, 0xEB, + 0x5F, 0x83, 0xFE, 0x02, 0x75, 0x20, 0x41, 0x0F, 0xB7, 0x45, 0x00, 0x66, 0x89, 0x84, 0x24, 0xB8, + 0x00, 0x00, 0x00, 0xEB, 0x0F, 0x8B, 0xD8, 0x48, 0x8B, 0xBC, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, + 0x8B, 0x4C, 0x24, 0x30, 0xEB, 0x05, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0x85, 0xDB, 0x78, 0x31, 0x48, + 0x8D, 0x54, 0x24, 0x38, 0xFF, 0x15, 0xD6, 0xBA, 0xFF, 0xFF, 0x45, 0x33, 0xC0, 0x48, 0x8D, 0x94, + 0x24, 0xB8, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x92, 0xBA, 0xFF, 0xFF, 0x8B, 0xD8, + 0x48, 0x8D, 0x4C, 0x24, 0x38, 0xFF, 0x15, 0x3D, 0xBA, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x30, + 0xFF, 0x15, 0x8A, 0xBA, 0xFF, 0xFF, 0x8B, 0xC3, 0x4C, 0x8D, 0x5C, 0x24, 0x70, 0x49, 0x8B, 0x5B, + 0x20, 0x49, 0x8B, 0x73, 0x30, 0x49, 0x8B, 0x7B, 0x38, 0x49, 0x8B, 0xE3, 0x41, 0x5E, 0x41, 0x5D, + 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, + 0x08, 0x48, 0x89, 0x6C, 0x24, 0x18, 0x56, 0x57, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x81, + 0xEC, 0x80, 0x00, 0x00, 0x00, 0x33, 0xDB, 0x4D, 0x8B, 0xF9, 0x49, 0x8B, 0xE8, 0x4C, 0x8B, 0xEA, + 0x48, 0x8B, 0xF1, 0x44, 0x8A, 0xF3, 0x88, 0x9C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x48, 0x3B, 0xD3, + 0x74, 0x05, 0x4C, 0x3B, 0xCB, 0x75, 0x14, 0xF6, 0x84, 0x24, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x75, + 0x0A, 0xB8, 0x30, 0x00, 0x00, 0xC0, 0xE9, 0x56, 0x01, 0x00, 0x00, 0x40, 0x8A, 0xBC, 0x24, 0xE8, + 0x00, 0x00, 0x00, 0x40, 0x3A, 0xFB, 0x74, 0x15, 0x0F, 0xBA, 0xA4, 0x24, 0xD8, 0x00, 0x00, 0x00, + 0x09, 0x73, 0x0A, 0xB8, 0xF4, 0x00, 0x00, 0xC0, 0xE9, 0x34, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x05, + 0xD4, 0xB9, 0xFF, 0xFF, 0x48, 0x3B, 0x08, 0x75, 0x0A, 0x48, 0x81, 0xCD, 0x00, 0x00, 0x00, 0x80, + 0x40, 0x8A, 0xFB, 0xFF, 0x15, 0xA7, 0xB9, 0xFF, 0xFF, 0x48, 0x3B, 0xF0, 0x75, 0x14, 0xF6, 0x84, + 0x24, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x74, 0x0A, 0xB8, 0xDB, 0x00, 0x00, 0xC0, 0xE9, 0xFF, 0x00, + 0x00, 0x00, 0xFF, 0x15, 0x88, 0xB9, 0xFF, 0xFF, 0x48, 0x3B, 0xF0, 0x74, 0x11, 0x48, 0x8D, 0x54, + 0x24, 0x50, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0xC5, 0xB9, 0xFF, 0xFF, 0x41, 0xB6, 0x01, 0xF6, 0x84, + 0x24, 0xE0, 0x00, 0x00, 0x00, 0x01, 0x48, 0x8B, 0xCD, 0x74, 0x24, 0x40, 0x8A, 0xD7, 0xFF, 0x15, + 0x6C, 0xB9, 0xFF, 0xFF, 0x8B, 0xF8, 0x44, 0x3A, 0xF3, 0x0F, 0x84, 0xC0, 0x00, 0x00, 0x00, 0x48, + 0x8D, 0x4C, 0x24, 0x50, 0xFF, 0x15, 0x1E, 0xB9, 0xFF, 0xFF, 0xE9, 0xB0, 0x00, 0x00, 0x00, 0x48, + 0x8D, 0x44, 0x24, 0x40, 0x44, 0x8A, 0xCF, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x89, 0x5C, 0x24, + 0x28, 0x48, 0x89, 0x44, 0x24, 0x20, 0xFF, 0x15, 0x2C, 0xB9, 0xFF, 0xFF, 0x8B, 0xF8, 0x44, 0x3A, + 0xF3, 0x74, 0x0B, 0x48, 0x8D, 0x4C, 0x24, 0x50, 0xFF, 0x15, 0xEA, 0xB8, 0xFF, 0xFF, 0x3B, 0xFB, + 0x7C, 0x7D, 0xFF, 0x15, 0x08, 0xB9, 0xFF, 0xFF, 0x4C, 0x3B, 0xE8, 0x74, 0x16, 0x48, 0x8D, 0x54, + 0x24, 0x50, 0x49, 0x8B, 0xCD, 0xFF, 0x15, 0x45, 0xB9, 0xFF, 0xFF, 0xC6, 0x84, 0x24, 0xB8, 0x00, + 0x00, 0x00, 0x01, 0x44, 0x8B, 0x8C, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x8B, 0x94, 0x24, 0xD8, 0x00, + 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x45, 0x33, 0xC0, 0x48, + 0x89, 0x44, 0x24, 0x30, 0x88, 0x5C, 0x24, 0x28, 0x48, 0x89, 0x5C, 0x24, 0x20, 0xFF, 0x15, 0x05, + 0xB9, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0x8B, 0xF8, 0xFF, 0x15, 0xE0, 0xB8, 0xFF, 0xFF, + 0x38, 0x9C, 0x24, 0xB8, 0x00, 0x00, 0x00, 0x74, 0x0B, 0x48, 0x8D, 0x4C, 0x24, 0x50, 0xFF, 0x15, + 0x74, 0xB8, 0xFF, 0xFF, 0x3B, 0xFB, 0x48, 0x0F, 0x4D, 0x5C, 0x24, 0x48, 0x49, 0x89, 0x1F, 0x8B, + 0xC7, 0x4C, 0x8D, 0x9C, 0x24, 0x80, 0x00, 0x00, 0x00, 0x49, 0x8B, 0x5B, 0x30, 0x49, 0x8B, 0x6B, + 0x40, 0x49, 0x8B, 0xE3, 0x41, 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0x5F, 0x5E, 0xC3, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, + 0x89, 0x78, 0x18, 0x4C, 0x89, 0x60, 0x20, 0x41, 0x55, 0x48, 0x83, 0xEC, 0x60, 0x49, 0x8B, 0xD9, + 0x49, 0x8B, 0xF8, 0x4C, 0x8B, 0xEA, 0x4C, 0x8B, 0xE1, 0x48, 0x83, 0x60, 0xD8, 0x00, 0x48, 0x83, + 0x60, 0xE0, 0x00, 0x40, 0x8A, 0xB4, 0x24, 0xA8, 0x00, 0x00, 0x00, 0x40, 0x84, 0xF6, 0x74, 0x1E, + 0x48, 0x85, 0xDB, 0x74, 0x12, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x44, 0x8D, 0x42, 0xF9, 0x48, 0x8B, + 0xCB, 0xFF, 0x15, 0x69, 0xB7, 0xFF, 0xFF, 0xEB, 0x05, 0xE9, 0xF1, 0x00, 0x00, 0x00, 0x48, 0x83, + 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x20, 0x44, 0x8A, + 0xCE, 0x4C, 0x8B, 0x05, 0xB0, 0xB7, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x49, 0x8B, 0xCC, + 0xFF, 0x15, 0xF2, 0xB7, 0xFF, 0xFF, 0x85, 0xC0, 0x0F, 0x88, 0xC1, 0x00, 0x00, 0x00, 0x48, 0x85, + 0xFF, 0x74, 0x3D, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, + 0x44, 0x24, 0x20, 0x44, 0x8A, 0xCE, 0x4C, 0x8B, 0x05, 0x7B, 0xB7, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, + 0x33, 0xD2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0xBD, 0xB7, 0xFF, 0xFF, 0x8B, 0xF8, 0x85, 0xC0, 0x79, + 0x0F, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0xD4, 0xB7, 0xFF, 0xFF, 0x8B, 0xC7, 0xEB, 0x7F, + 0x40, 0x88, 0x74, 0x24, 0x38, 0x8B, 0x84, 0x24, 0xA0, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x30, + 0x8B, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x28, 0x8B, 0x84, 0x24, 0x90, 0x00, + 0x00, 0x00, 0x89, 0x44, 0x24, 0x20, 0x4C, 0x8D, 0x4C, 0x24, 0x50, 0x4D, 0x8B, 0xC5, 0x48, 0x8B, + 0x54, 0x24, 0x48, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xE8, 0x2F, 0xFD, 0xFF, 0xFF, 0x8B, 0xF8, 0x48, + 0x85, 0xDB, 0x74, 0x1E, 0x40, 0x84, 0xF6, 0x74, 0x11, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0x48, 0x89, + 0x0B, 0xEB, 0x05, 0xBF, 0x05, 0x00, 0x00, 0xC0, 0xEB, 0x08, 0x48, 0x8B, 0x44, 0x24, 0x50, 0x48, + 0x89, 0x03, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0x48, 0x85, 0xC9, 0x74, 0x06, 0xFF, 0x15, 0x5E, 0xB7, + 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x53, 0xB7, 0xFF, 0xFF, 0x8B, 0xC7, 0x4C, + 0x8D, 0x5C, 0x24, 0x60, 0x49, 0x8B, 0x5B, 0x10, 0x49, 0x8B, 0x73, 0x18, 0x49, 0x8B, 0x7B, 0x20, + 0x4D, 0x8B, 0x63, 0x28, 0x49, 0x8B, 0xE3, 0x41, 0x5D, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x70, 0x08, 0x48, 0x89, 0x78, 0x10, 0x4C, 0x89, 0x60, 0x18, 0x41, + 0x55, 0x48, 0x81, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x4D, 0x8B, 0xE9, 0x4D, 0x8B, 0xE0, 0x48, 0x8B, + 0xF1, 0x83, 0x60, 0xC0, 0x00, 0x33, 0xD2, 0x44, 0x8D, 0x42, 0x28, 0x48, 0x8D, 0x48, 0xC8, 0xE8, + 0x7C, 0xA9, 0xFF, 0xFF, 0x80, 0xBC, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x3E, 0xBA, 0x08, + 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0x01, 0xB6, 0xFF, 0xFF, 0xBF, + 0x30, 0x00, 0x00, 0x00, 0x44, 0x8D, 0x47, 0xD4, 0x48, 0x8B, 0xD7, 0x49, 0x8B, 0xCC, 0xFF, 0x15, + 0x34, 0xB6, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x58, 0x49, 0x8B, 0xD4, 0x4C, 0x8B, 0xC7, 0xE8, + 0xCC, 0xA4, 0xFF, 0xFF, 0x90, 0xEB, 0x18, 0xE9, 0xE8, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, + 0x58, 0x49, 0x8B, 0xD4, 0x41, 0xB8, 0x30, 0x00, 0x00, 0x00, 0xE8, 0xB1, 0xA4, 0xFF, 0xFF, 0x48, + 0x8B, 0x4C, 0x24, 0x68, 0x48, 0x85, 0xC9, 0x75, 0x0A, 0xB8, 0x0D, 0x00, 0x00, 0xC0, 0xE9, 0xC1, + 0x00, 0x00, 0x00, 0x80, 0xBC, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x12, 0x0F, 0xBA, 0x64, + 0x24, 0x70, 0x09, 0x73, 0x0A, 0xB8, 0x0D, 0x00, 0x00, 0xC0, 0xE9, 0xA5, 0x00, 0x00, 0x00, 0x80, + 0xBC, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x12, 0x48, 0x83, 0x7C, 0x24, 0x60, 0x00, 0x7D, + 0x0A, 0xB8, 0x0D, 0x00, 0x00, 0xC0, 0xE9, 0x89, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x54, 0x24, 0x48, + 0xE8, 0x9F, 0xA1, 0xFF, 0xFF, 0x85, 0xC0, 0x78, 0x7B, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, + 0x44, 0x24, 0x68, 0x48, 0x83, 0x64, 0x24, 0x78, 0x00, 0x48, 0x83, 0xA4, 0x24, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x30, 0x48, 0x83, 0x64, 0x24, + 0x28, 0x00, 0x83, 0x64, 0x24, 0x20, 0x00, 0x45, 0x33, 0xC9, 0x45, 0x33, 0xC0, 0x49, 0x8B, 0xD5, + 0x48, 0x8D, 0x4C, 0x24, 0x58, 0xFF, 0x15, 0x95, 0xB5, 0xFF, 0xFF, 0x8B, 0xF8, 0x48, 0x8B, 0x4C, + 0x24, 0x50, 0x48, 0x85, 0xC9, 0x74, 0x0B, 0xBA, 0x4B, 0x70, 0x68, 0x55, 0xFF, 0x15, 0xF6, 0xB4, + 0xFF, 0xFF, 0x80, 0xBC, 0x24, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x74, 0x0E, 0x48, 0x8B, 0x44, 0x24, + 0x40, 0x48, 0x89, 0x06, 0xEB, 0x02, 0x8B, 0xF8, 0xEB, 0x08, 0x48, 0x8B, 0x44, 0x24, 0x40, 0x48, + 0x89, 0x06, 0x8B, 0xC7, 0x4C, 0x8D, 0x9C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x49, 0x8B, 0x73, 0x10, + 0x49, 0x8B, 0x7B, 0x18, 0x4D, 0x8B, 0x63, 0x20, 0x49, 0x8B, 0xE3, 0x41, 0x5D, 0xC3, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x48, 0x89, + 0x7C, 0x24, 0x18, 0x41, 0x54, 0x48, 0x83, 0xEC, 0x70, 0x41, 0x8A, 0xF1, 0x49, 0x8B, 0xD8, 0x44, + 0x8B, 0xE2, 0x48, 0x8B, 0xF9, 0x45, 0x84, 0xC9, 0x74, 0x31, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x44, + 0x8B, 0xC2, 0xFF, 0x15, 0x98, 0xB4, 0xFF, 0xFF, 0xBA, 0x10, 0x00, 0x00, 0x00, 0x44, 0x8D, 0x42, + 0xF4, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xCE, 0xB4, 0xFF, 0xFF, 0xF3, 0x0F, 0x6F, 0x2B, 0xF3, 0x0F, + 0x7F, 0x6C, 0x24, 0x58, 0xEB, 0x10, 0xE9, 0xB4, 0x00, 0x00, 0x00, 0xF3, 0x41, 0x0F, 0x6F, 0x00, + 0xF3, 0x0F, 0x7F, 0x44, 0x24, 0x58, 0x48, 0x83, 0x7C, 0x24, 0x60, 0x00, 0x74, 0x28, 0x4C, 0x8D, + 0x44, 0x24, 0x50, 0x48, 0x8D, 0x54, 0x24, 0x40, 0x48, 0x8D, 0x4C, 0x24, 0x58, 0xFF, 0x15, 0x95, + 0xB5, 0xFF, 0xFF, 0x8B, 0xD8, 0x85, 0xC0, 0x78, 0x1F, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0xFF, 0x15, + 0x1C, 0xB5, 0xFF, 0xFF, 0xEB, 0x12, 0x48, 0x8D, 0x54, 0x24, 0x40, 0x48, 0x8B, 0x4C, 0x24, 0x58, + 0xFF, 0x15, 0x3A, 0xB5, 0xFF, 0xFF, 0x8B, 0xD8, 0x85, 0xDB, 0x79, 0x04, 0x8B, 0xC3, 0xEB, 0x5F, + 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, + 0x8B, 0x05, 0x72, 0xB4, 0xFF, 0xFF, 0x48, 0x8B, 0x08, 0x48, 0x89, 0x4C, 0x24, 0x20, 0x45, 0x8B, + 0xCC, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0xE7, 0xB4, 0xFF, + 0xFF, 0x8B, 0xD8, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0xC2, 0xB4, 0xFF, 0xFF, 0x85, 0xDB, + 0x78, 0x1B, 0x40, 0x84, 0xF6, 0x74, 0x0E, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0x48, 0x89, 0x0F, 0xEB, + 0x02, 0x8B, 0xD8, 0xEB, 0x08, 0x48, 0x8B, 0x44, 0x24, 0x48, 0x48, 0x89, 0x07, 0x8B, 0xC3, 0x4C, + 0x8D, 0x5C, 0x24, 0x70, 0x49, 0x8B, 0x5B, 0x10, 0x49, 0x8B, 0x73, 0x18, 0x49, 0x8B, 0x7B, 0x20, + 0x49, 0x8B, 0xE3, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, + 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x48, 0x89, 0x7C, 0x24, 0x18, 0x41, 0x54, 0x48, 0x83, 0xEC, + 0x50, 0x45, 0x8A, 0xE1, 0x49, 0x8B, 0xF8, 0x8B, 0xF2, 0x48, 0x8B, 0xD9, 0x45, 0x84, 0xC9, 0x74, + 0x18, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x6E, 0xB3, + 0xFF, 0xFF, 0xEB, 0x05, 0xE9, 0xA0, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, + 0x8D, 0x44, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCC, 0x4C, 0x8B, 0x05, 0xB5, + 0xB3, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xF7, 0xB3, 0xFF, + 0xFF, 0x85, 0xC0, 0x78, 0x74, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x50, 0xB4, 0xFF, 0xFF, + 0x48, 0x8B, 0xD8, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, 0x24, + 0x28, 0x00, 0x48, 0x8B, 0x0D, 0x3F, 0xB4, 0xFF, 0xFF, 0x48, 0x8B, 0x11, 0x48, 0x89, 0x54, 0x24, + 0x20, 0x44, 0x8B, 0xCE, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xF6, 0xB3, + 0xFF, 0xFF, 0x8B, 0xF0, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x4B, 0xB4, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, + 0x24, 0x40, 0xFF, 0x15, 0xC8, 0xB3, 0xFF, 0xFF, 0x85, 0xF6, 0x78, 0x1B, 0x45, 0x84, 0xE4, 0x74, + 0x0E, 0x48, 0x8B, 0x44, 0x24, 0x48, 0x48, 0x89, 0x07, 0xEB, 0x02, 0x8B, 0xF0, 0xEB, 0x08, 0x48, + 0x8B, 0x44, 0x24, 0x48, 0x48, 0x89, 0x07, 0x8B, 0xC6, 0x48, 0x8B, 0x5C, 0x24, 0x60, 0x48, 0x8B, + 0x74, 0x24, 0x68, 0x48, 0x8B, 0x7C, 0x24, 0x70, 0x48, 0x83, 0xC4, 0x50, 0x41, 0x5C, 0xC3, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, + 0x89, 0x70, 0x10, 0x48, 0x89, 0x78, 0x18, 0x41, 0x54, 0x48, 0x83, 0xEC, 0x50, 0x41, 0x8A, 0xF1, + 0x49, 0x8B, 0xF8, 0x44, 0x8B, 0xE2, 0x48, 0x8B, 0xD9, 0x48, 0x83, 0x60, 0xE8, 0x00, 0x45, 0x84, + 0xC9, 0x74, 0x18, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, + 0x6C, 0xB2, 0xFF, 0xFF, 0xEB, 0x05, 0xE9, 0xA0, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, + 0x00, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x20, 0x44, 0x8A, 0xCE, 0x4C, 0x8B, + 0x05, 0xB3, 0xB2, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xF5, + 0xB2, 0xFF, 0xFF, 0x85, 0xC0, 0x78, 0x74, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x6E, 0xB3, + 0xFF, 0xFF, 0x48, 0x85, 0xC0, 0x74, 0x33, 0x48, 0x8D, 0x4C, 0x24, 0x40, 0x48, 0x89, 0x4C, 0x24, + 0x30, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, 0x8B, 0x0D, 0x2B, 0xB3, 0xFF, 0xFF, 0x48, 0x8B, 0x11, + 0x48, 0x89, 0x54, 0x24, 0x20, 0x45, 0x8B, 0xCC, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8B, 0xC8, + 0xFF, 0x15, 0xF2, 0xB2, 0xFF, 0xFF, 0x8B, 0xD8, 0xEB, 0x05, 0xBB, 0x25, 0x02, 0x00, 0xC0, 0x48, + 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0xC6, 0xB2, 0xFF, 0xFF, 0x85, 0xDB, 0x78, 0x1B, 0x40, 0x84, + 0xF6, 0x74, 0x0E, 0x48, 0x8B, 0x44, 0x24, 0x40, 0x48, 0x89, 0x07, 0xEB, 0x02, 0x8B, 0xD8, 0xEB, + 0x08, 0x48, 0x8B, 0x44, 0x24, 0x40, 0x48, 0x89, 0x07, 0x8B, 0xC3, 0x48, 0x8B, 0x5C, 0x24, 0x60, + 0x48, 0x8B, 0x74, 0x24, 0x68, 0x48, 0x8B, 0x7C, 0x24, 0x70, 0x48, 0x83, 0xC4, 0x50, 0x41, 0x5C, + 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x4C, 0x8B, 0xDC, 0x49, 0x89, 0x5B, 0x08, 0x49, + 0x89, 0x73, 0x10, 0x57, 0x48, 0x83, 0xEC, 0x50, 0x49, 0x83, 0x63, 0xD0, 0x00, 0x45, 0x8A, 0xC8, + 0x4C, 0x8B, 0x05, 0xF1, 0xB1, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x49, 0x8D, 0x43, 0x20, 0x8B, 0xF2, + 0x33, 0xD2, 0x49, 0x89, 0x43, 0xC8, 0xFF, 0x15, 0x2C, 0xB2, 0xFF, 0xFF, 0x85, 0xC0, 0x0F, 0x88, + 0xAF, 0x00, 0x00, 0x00, 0xFF, 0x15, 0x16, 0xB2, 0xFF, 0xFF, 0x48, 0x8B, 0x5C, 0x24, 0x78, 0x48, + 0x3B, 0xD8, 0x0F, 0x84, 0x8B, 0x00, 0x00, 0x00, 0x83, 0x3D, 0x65, 0xC4, 0xFF, 0xFF, 0x00, 0x75, + 0x26, 0x48, 0x8D, 0x0D, 0xE8, 0xC2, 0xFF, 0xFF, 0xE8, 0xCF, 0x9C, 0xFF, 0xFF, 0x48, 0x85, 0xC0, + 0x74, 0x10, 0x8B, 0xD6, 0x48, 0x8B, 0xCB, 0xFF, 0xD0, 0x8B, 0xF8, 0x3D, 0xBB, 0x00, 0x00, 0xC0, + 0x75, 0x5A, 0x48, 0x8B, 0x5C, 0x24, 0x78, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x41, 0xB9, 0x01, 0x00, + 0x00, 0x00, 0x45, 0x33, 0xC0, 0x48, 0x89, 0x44, 0x24, 0x30, 0x48, 0x8B, 0x05, 0x77, 0xB1, 0xFF, + 0xFF, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, 0x8B, 0x08, 0xBA, 0x00, 0x02, 0x00, 0x00, 0x48, 0x89, + 0x4C, 0x24, 0x20, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xEC, 0xB1, 0xFF, 0xFF, 0x8B, 0xF8, 0x85, 0xC0, + 0x78, 0x1A, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0x8B, 0xD6, 0xFF, 0x15, 0x31, 0xB2, 0xFF, 0xFF, 0x48, + 0x8B, 0x4C, 0x24, 0x40, 0x8B, 0xF8, 0xFF, 0x15, 0xEC, 0xB0, 0xFF, 0xFF, 0x48, 0x8B, 0x5C, 0x24, + 0x78, 0xEB, 0x05, 0xBF, 0xDB, 0x00, 0x00, 0xC0, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x9F, 0xB1, 0xFF, + 0xFF, 0x8B, 0xC7, 0x48, 0x8B, 0x5C, 0x24, 0x60, 0x48, 0x8B, 0x74, 0x24, 0x68, 0x48, 0x83, 0xC4, + 0x50, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, + 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x48, 0x89, 0x7C, 0x24, 0x18, 0x41, 0x54, 0x41, 0x55, 0x41, + 0x56, 0x48, 0x81, 0xEC, 0x90, 0x00, 0x00, 0x00, 0x45, 0x8B, 0xE9, 0x4D, 0x8B, 0xF0, 0x8B, 0xF2, + 0x48, 0x8B, 0xD9, 0x80, 0xBC, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x00, 0x74, 0x47, 0x83, 0xFA, 0x01, + 0x74, 0x0A, 0xBF, 0x04, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC7, 0xEB, 0x09, 0xBF, 0x04, 0x00, 0x00, + 0x00, 0x44, 0x8D, 0x47, 0xFD, 0x49, 0x8B, 0xD5, 0x49, 0x8B, 0xCE, 0xFF, 0x15, 0x4F, 0xB0, 0xFF, + 0xFF, 0x4C, 0x8B, 0xA4, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x4D, 0x85, 0xE4, 0x74, 0x0F, 0x44, 0x8B, + 0xC7, 0x48, 0x8B, 0xD7, 0x49, 0x8B, 0xCC, 0xFF, 0x15, 0x33, 0xB0, 0xFF, 0xFF, 0xEB, 0x12, 0xE9, + 0x03, 0x02, 0x00, 0x00, 0xBF, 0x04, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0xA4, 0x24, 0xD0, 0x00, 0x00, + 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, + 0x20, 0x44, 0x8A, 0x8C, 0x24, 0xD8, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x05, 0x68, 0xB0, 0xFF, 0xFF, + 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xAA, 0xB0, 0xFF, 0xFF, 0x8B, 0xD8, + 0x89, 0x44, 0x24, 0x40, 0x85, 0xC0, 0x0F, 0x88, 0xBB, 0x01, 0x00, 0x00, 0x83, 0xEE, 0x01, 0x0F, + 0x84, 0x37, 0x01, 0x00, 0x00, 0x83, 0xEE, 0x01, 0x0F, 0x84, 0xBE, 0x00, 0x00, 0x00, 0x83, 0xFE, + 0x01, 0x74, 0x10, 0xBB, 0x03, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x40, 0x33, 0xFF, 0xE9, 0x68, + 0x01, 0x00, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x50, 0x48, 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, 0x24, + 0x28, 0x00, 0x48, 0x8B, 0x05, 0x0F, 0xB0, 0xFF, 0xFF, 0x48, 0x8B, 0x08, 0x48, 0x89, 0x4C, 0x24, + 0x20, 0x41, 0xB9, 0x00, 0x04, 0x00, 0x00, 0x45, 0x33, 0xC0, 0xBA, 0x00, 0x02, 0x00, 0x00, 0x48, + 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x7E, 0xB0, 0xFF, 0xFF, 0x8B, 0xD8, 0x89, 0x44, 0x24, 0x40, + 0x85, 0xC0, 0x0F, 0x88, 0x23, 0x01, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x20, 0x00, 0x44, 0x8B, + 0xCF, 0x4C, 0x8D, 0x44, 0x24, 0x44, 0xBA, 0x21, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x50, + 0xFF, 0x15, 0x32, 0xB0, 0xFF, 0xFF, 0x8B, 0xD8, 0x89, 0x44, 0x24, 0x40, 0x85, 0xC0, 0x78, 0x2C, + 0x44, 0x3B, 0xEF, 0x75, 0x1E, 0x8B, 0x44, 0x24, 0x44, 0x41, 0x89, 0x06, 0xEB, 0x13, 0x8B, 0xD8, + 0x89, 0x44, 0x24, 0x40, 0xBF, 0x04, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0xA4, 0x24, 0xD0, 0x00, 0x00, + 0x00, 0xEB, 0x09, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x40, 0x48, 0x8B, 0x4C, 0x24, + 0x50, 0xFF, 0x15, 0x31, 0xAF, 0xFF, 0xFF, 0xE9, 0xBF, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x54, 0x24, + 0x58, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x04, 0xB0, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, + 0x20, 0x00, 0x44, 0x8B, 0xCF, 0x4C, 0x8D, 0x44, 0x24, 0x44, 0xBA, 0x22, 0x00, 0x00, 0x00, 0x48, + 0x83, 0xC9, 0xFF, 0xFF, 0x15, 0xBF, 0xAF, 0xFF, 0xFF, 0x8B, 0xD8, 0x89, 0x44, 0x24, 0x40, 0x48, + 0x8D, 0x4C, 0x24, 0x58, 0xFF, 0x15, 0x5E, 0xAF, 0xFF, 0xFF, 0x85, 0xDB, 0x78, 0x7D, 0x44, 0x3B, + 0xEF, 0x75, 0x1E, 0x8B, 0x44, 0x24, 0x44, 0x41, 0x89, 0x06, 0xEB, 0x13, 0x8B, 0xD8, 0x89, 0x44, + 0x24, 0x40, 0xBF, 0x04, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0xA4, 0x24, 0xD0, 0x00, 0x00, 0x00, 0xEB, + 0x5A, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x40, 0xEB, 0x4F, 0x32, 0xC9, 0x48, 0x8B, + 0x05, 0xD3, 0xBF, 0xFF, 0xFF, 0x48, 0x85, 0xC0, 0x74, 0x0B, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, + 0xD0, 0x8A, 0xC8, 0xEB, 0x09, 0xBB, 0xBB, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x40, 0x85, 0xDB, + 0x78, 0x24, 0x41, 0x83, 0xFD, 0x01, 0x75, 0x15, 0x41, 0x88, 0x0E, 0xEB, 0x0E, 0x8B, 0xD8, 0x89, + 0x44, 0x24, 0x40, 0x4C, 0x8B, 0xA4, 0x24, 0xD0, 0x00, 0x00, 0x00, 0xEB, 0x09, 0xBB, 0x04, 0x00, + 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x40, 0xBF, 0x01, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x48, + 0xFF, 0x15, 0x2A, 0xAF, 0xFF, 0xFF, 0x4D, 0x85, 0xE4, 0x74, 0x1A, 0x80, 0xBC, 0x24, 0xD8, 0x00, + 0x00, 0x00, 0x00, 0x74, 0x0C, 0x41, 0x89, 0x3C, 0x24, 0xEB, 0x04, 0x8B, 0x5C, 0x24, 0x40, 0xEB, + 0x04, 0x41, 0x89, 0x3C, 0x24, 0x8B, 0xC3, 0x4C, 0x8D, 0x9C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x49, + 0x8B, 0x5B, 0x20, 0x49, 0x8B, 0x73, 0x28, 0x49, 0x8B, 0x7B, 0x30, 0x49, 0x8B, 0xE3, 0x41, 0x5E, + 0x41, 0x5D, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, + 0x89, 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, 0x89, 0x78, 0x18, 0x4C, 0x89, 0x60, 0x20, 0x41, + 0x55, 0x48, 0x81, 0xEC, 0x80, 0x00, 0x00, 0x00, 0x41, 0x8B, 0xF1, 0x4D, 0x8B, 0xE0, 0x8B, 0xFA, + 0x4C, 0x8B, 0xE9, 0x8A, 0x9C, 0x24, 0xB0, 0x00, 0x00, 0x00, 0x84, 0xDB, 0x74, 0x19, 0x48, 0x8B, + 0xD6, 0x41, 0xB8, 0x04, 0x00, 0x00, 0x00, 0x49, 0x8B, 0xCC, 0xFF, 0x15, 0x08, 0xAE, 0xFF, 0xFF, + 0xEB, 0x05, 0xE9, 0x5B, 0x01, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, + 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x20, 0x44, 0x8A, 0xCB, 0x4C, 0x8B, 0x05, 0x07, 0xAE, 0xFF, + 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x49, 0x8B, 0xCD, 0xFF, 0x15, 0x49, 0xAE, 0xFF, 0xFF, 0x8B, + 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0x29, 0x01, 0x00, 0x00, 0x83, 0xEF, 0x02, 0x0F, 0x84, 0x9C, 0x00, + 0x00, 0x00, 0x83, 0xFF, 0x01, 0x74, 0x0A, 0xBB, 0x03, 0x00, 0x00, 0xC0, 0xE9, 0x04, 0x01, 0x00, + 0x00, 0x83, 0xFE, 0x04, 0x75, 0x11, 0x41, 0x8B, 0x04, 0x24, 0x89, 0x84, 0x24, 0xB0, 0x00, 0x00, + 0x00, 0xEB, 0x02, 0x8B, 0xD8, 0xEB, 0x05, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0x85, 0xDB, 0x0F, 0x88, + 0xE1, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, + 0x24, 0x28, 0x00, 0x48, 0x8B, 0x05, 0x9E, 0xAD, 0xFF, 0xFF, 0x48, 0x8B, 0x08, 0x48, 0x89, 0x4C, + 0x24, 0x20, 0xBA, 0x00, 0x02, 0x00, 0x00, 0x44, 0x8B, 0xCA, 0x45, 0x33, 0xC0, 0x48, 0x8B, 0x4C, + 0x24, 0x40, 0xFF, 0x15, 0x10, 0xAE, 0xFF, 0xFF, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0xA3, 0x00, + 0x00, 0x00, 0x41, 0xB9, 0x04, 0x00, 0x00, 0x00, 0x4C, 0x8D, 0x84, 0x24, 0xB0, 0x00, 0x00, 0x00, + 0x41, 0x8D, 0x51, 0x1D, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x29, 0xAE, 0xFF, 0xFF, 0x8B, + 0xD8, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, 0x15, 0xFC, 0xAC, 0xFF, 0xFF, 0xEB, 0x77, 0x83, 0xFE, + 0x04, 0x75, 0x11, 0x41, 0x8B, 0x04, 0x24, 0x89, 0x84, 0x24, 0xB0, 0x00, 0x00, 0x00, 0xEB, 0x02, + 0x8B, 0xD8, 0xEB, 0x05, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0x85, 0xDB, 0x78, 0x58, 0x48, 0x8B, 0x4C, + 0x24, 0x40, 0xE8, 0xDD, 0x99, 0xFF, 0xFF, 0x84, 0xC0, 0x74, 0x45, 0x48, 0x8D, 0x54, 0x24, 0x50, + 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0xA5, 0xAD, 0xFF, 0xFF, 0x41, 0xB9, 0x04, 0x00, 0x00, + 0x00, 0x4C, 0x8D, 0x84, 0x24, 0xB0, 0x00, 0x00, 0x00, 0x41, 0x8D, 0x51, 0x1E, 0x48, 0x83, 0xC9, + 0xFF, 0xFF, 0x15, 0xC1, 0xAD, 0xFF, 0xFF, 0x8B, 0xD8, 0x48, 0x8D, 0x4C, 0x24, 0x50, 0xFF, 0x15, + 0x04, 0xAD, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xE8, 0xE2, 0x99, 0xFF, 0xFF, 0xEB, 0x05, + 0xBB, 0x0A, 0x01, 0x00, 0xC0, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x40, 0xAD, 0xFF, 0xFF, + 0x8B, 0xC3, 0x4C, 0x8D, 0x9C, 0x24, 0x80, 0x00, 0x00, 0x00, 0x49, 0x8B, 0x5B, 0x10, 0x49, 0x8B, + 0x73, 0x18, 0x49, 0x8B, 0x7B, 0x20, 0x4D, 0x8B, 0x63, 0x28, 0x49, 0x8B, 0xE3, 0x41, 0x5D, 0xC3, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, + 0x89, 0x70, 0x10, 0x48, 0x89, 0x78, 0x18, 0x4C, 0x89, 0x60, 0x20, 0x41, 0x55, 0x41, 0x56, 0x41, + 0x57, 0x48, 0x83, 0xEC, 0x40, 0x45, 0x8B, 0xE9, 0x49, 0x8B, 0xF0, 0x44, 0x8B, 0xE2, 0x4C, 0x8B, + 0xF1, 0x8A, 0x9C, 0x24, 0x88, 0x00, 0x00, 0x00, 0x45, 0x33, 0xFF, 0x41, 0x3A, 0xDF, 0x74, 0x35, + 0x49, 0x8B, 0xD5, 0x45, 0x8D, 0x47, 0x01, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0xF0, 0xAB, 0xFF, 0xFF, + 0x48, 0x8B, 0xBC, 0x24, 0x80, 0x00, 0x00, 0x00, 0x49, 0x3B, 0xFF, 0x74, 0x11, 0x41, 0x8D, 0x57, + 0x04, 0x45, 0x8D, 0x47, 0x01, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0xD2, 0xAB, 0xFF, 0xFF, 0xEB, 0x0D, + 0xE9, 0x71, 0x01, 0x00, 0x00, 0x48, 0x8B, 0xBC, 0x24, 0x80, 0x00, 0x00, 0x00, 0x4C, 0x89, 0x7C, + 0x24, 0x28, 0x48, 0x8D, 0x44, 0x24, 0x38, 0x48, 0x89, 0x44, 0x24, 0x20, 0x44, 0x8A, 0xCB, 0x4C, + 0x8B, 0x05, 0x52, 0xAC, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x49, 0x8B, 0xCE, 0xFF, 0x15, + 0x54, 0xAC, 0xFF, 0xFF, 0x8B, 0xD8, 0x41, 0x3B, 0xC7, 0x0F, 0x8C, 0x37, 0x01, 0x00, 0x00, 0x45, + 0x3B, 0xE7, 0x0F, 0x84, 0xE9, 0x00, 0x00, 0x00, 0x41, 0x83, 0xEC, 0x01, 0x0F, 0x84, 0x9C, 0x00, + 0x00, 0x00, 0x41, 0x83, 0xFC, 0x01, 0x74, 0x0E, 0xBB, 0x03, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, + 0x30, 0xE9, 0xFF, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x38, 0x4C, 0x39, 0x78, 0x30, 0x74, + 0x4D, 0x49, 0x3B, 0xF7, 0x74, 0x27, 0x48, 0x8B, 0x50, 0x30, 0x48, 0x83, 0xC2, 0x18, 0x0F, 0xB7, + 0x0A, 0x48, 0x83, 0xC1, 0x10, 0x49, 0x3B, 0xCD, 0x77, 0x0A, 0x48, 0x8B, 0xCE, 0xE8, 0x0A, 0x01, + 0x00, 0x00, 0xEB, 0x09, 0xBB, 0x23, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x30, 0x49, 0x3B, 0xFF, + 0x0F, 0x84, 0xBF, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x44, 0x24, 0x38, 0x48, 0x8B, 0x48, 0x30, 0x0F, + 0xB7, 0x41, 0x18, 0x48, 0x83, 0xC0, 0x10, 0x89, 0x07, 0xE9, 0xA7, 0x00, 0x00, 0x00, 0x49, 0x3B, + 0xF7, 0x74, 0x1E, 0x41, 0x83, 0xFD, 0x10, 0x72, 0x0F, 0x66, 0x44, 0x89, 0x3E, 0x66, 0x44, 0x89, + 0x7E, 0x02, 0x4C, 0x89, 0x7E, 0x08, 0xEB, 0x09, 0xBB, 0x23, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, + 0x30, 0x49, 0x3B, 0xFF, 0x74, 0x7F, 0xC7, 0x07, 0x10, 0x00, 0x00, 0x00, 0xEB, 0x77, 0x49, 0x3B, + 0xF7, 0x74, 0x28, 0x48, 0x8B, 0x54, 0x24, 0x38, 0x48, 0x83, 0xC2, 0x38, 0x0F, 0xB7, 0x0A, 0x48, + 0x83, 0xC1, 0x10, 0x49, 0x3B, 0xCD, 0x77, 0x0A, 0x48, 0x8B, 0xCE, 0xE8, 0x8C, 0x00, 0x00, 0x00, + 0xEB, 0x09, 0xBB, 0x23, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x30, 0x49, 0x3B, 0xFF, 0x74, 0x45, + 0x48, 0x8B, 0x44, 0x24, 0x38, 0x0F, 0xB7, 0x48, 0x38, 0x48, 0x83, 0xC1, 0x10, 0x89, 0x0F, 0xEB, + 0x34, 0x41, 0x83, 0xFD, 0x18, 0x75, 0x1A, 0x48, 0x8B, 0x4C, 0x24, 0x38, 0x8B, 0x41, 0x10, 0x89, + 0x06, 0x48, 0x8B, 0x41, 0x18, 0x48, 0x89, 0x46, 0x08, 0x8B, 0x41, 0x20, 0x89, 0x46, 0x10, 0xEB, + 0x09, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x30, 0x49, 0x3B, 0xFF, 0x74, 0x06, 0xC7, + 0x07, 0x18, 0x00, 0x00, 0x00, 0xEB, 0x02, 0x8B, 0xD8, 0x48, 0x8B, 0x4C, 0x24, 0x38, 0xFF, 0x15, + 0x3C, 0xAB, 0xFF, 0xFF, 0x8B, 0xC3, 0x48, 0x8B, 0x5C, 0x24, 0x60, 0x48, 0x8B, 0x74, 0x24, 0x68, + 0x48, 0x8B, 0x7C, 0x24, 0x70, 0x4C, 0x8B, 0x64, 0x24, 0x78, 0x48, 0x83, 0xC4, 0x40, 0x41, 0x5F, + 0x41, 0x5E, 0x41, 0x5D, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x83, 0xEC, 0x28, + 0x33, 0xC0, 0x4C, 0x8B, 0xC1, 0x48, 0x3B, 0xD0, 0x74, 0x20, 0x0F, 0xB7, 0x02, 0x66, 0x89, 0x01, + 0x66, 0x89, 0x41, 0x02, 0x48, 0x83, 0xC1, 0x10, 0x49, 0x89, 0x48, 0x08, 0x48, 0x8B, 0x52, 0x08, + 0x4C, 0x8B, 0xC0, 0xE8, 0xF8, 0x98, 0xFF, 0xFF, 0xEB, 0x0B, 0x66, 0x89, 0x01, 0x66, 0x89, 0x41, + 0x02, 0x48, 0x89, 0x41, 0x08, 0x48, 0x83, 0xC4, 0x28, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x48, 0x89, 0x7C, 0x24, 0x18, 0x41, + 0x54, 0x48, 0x83, 0xEC, 0x60, 0x41, 0x8A, 0xF1, 0x49, 0x8B, 0xD8, 0x44, 0x8B, 0xE2, 0x48, 0x8B, + 0xF9, 0x45, 0x84, 0xC9, 0x74, 0x31, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0xFF, 0x15, + 0xBC, 0xA9, 0xFF, 0xFF, 0xBA, 0x10, 0x00, 0x00, 0x00, 0x44, 0x8D, 0x42, 0xF4, 0x48, 0x8B, 0xCB, + 0xFF, 0x15, 0xF2, 0xA9, 0xFF, 0xFF, 0xF3, 0x0F, 0x6F, 0x2B, 0xF3, 0x0F, 0x7F, 0x6C, 0x24, 0x50, + 0xEB, 0x10, 0xE9, 0x9A, 0x00, 0x00, 0x00, 0xF3, 0x41, 0x0F, 0x6F, 0x00, 0xF3, 0x0F, 0x7F, 0x44, + 0x24, 0x50, 0x48, 0x83, 0x7C, 0x24, 0x50, 0x00, 0x74, 0x14, 0x4C, 0x8D, 0x44, 0x24, 0x40, 0x33, + 0xD2, 0x48, 0x8D, 0x4C, 0x24, 0x50, 0xFF, 0x15, 0xBC, 0xAA, 0xFF, 0xFF, 0xEB, 0x10, 0x48, 0x8D, + 0x54, 0x24, 0x40, 0x48, 0x8B, 0x4C, 0x24, 0x58, 0xFF, 0x15, 0x2A, 0xAB, 0xFF, 0xFF, 0x85, 0xC0, + 0x78, 0x5F, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, 0x24, 0x28, + 0x00, 0x48, 0x8B, 0x05, 0xF8, 0xAA, 0xFF, 0xFF, 0x48, 0x8B, 0x08, 0x48, 0x89, 0x4C, 0x24, 0x20, + 0x45, 0x8B, 0xCC, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x25, + 0xAA, 0xFF, 0xFF, 0x8B, 0xD8, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x00, 0xAA, 0xFF, 0xFF, + 0x85, 0xDB, 0x78, 0x1B, 0x40, 0x84, 0xF6, 0x74, 0x0E, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0x48, 0x89, + 0x0F, 0xEB, 0x02, 0x8B, 0xD8, 0xEB, 0x08, 0x48, 0x8B, 0x44, 0x24, 0x48, 0x48, 0x89, 0x07, 0x8B, + 0xC3, 0x4C, 0x8D, 0x5C, 0x24, 0x60, 0x49, 0x8B, 0x5B, 0x10, 0x49, 0x8B, 0x73, 0x18, 0x49, 0x8B, + 0x7B, 0x20, 0x49, 0x8B, 0xE3, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x48, 0x89, 0x7C, 0x24, 0x18, 0x41, + 0x54, 0x48, 0x83, 0xEC, 0x50, 0x41, 0x8A, 0xF1, 0x49, 0x8B, 0xD8, 0x44, 0x8B, 0xE2, 0x48, 0x8B, + 0xF9, 0x45, 0x84, 0xC9, 0x74, 0x18, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0x48, 0x8B, + 0xCB, 0xFF, 0x15, 0xA9, 0xA8, 0xFF, 0xFF, 0xEB, 0x05, 0xE9, 0x94, 0x00, 0x00, 0x00, 0x48, 0x83, + 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x20, 0x44, 0x8A, + 0xCE, 0x4C, 0x8B, 0x05, 0x38, 0xAA, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCF, + 0xFF, 0x15, 0x32, 0xA9, 0xFF, 0xFF, 0x85, 0xC0, 0x78, 0x68, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, + 0x15, 0xCB, 0xA9, 0xFF, 0xFF, 0x48, 0x8D, 0x4C, 0x24, 0x48, 0x48, 0x89, 0x4C, 0x24, 0x30, 0xC6, + 0x44, 0x24, 0x28, 0x00, 0x48, 0x8B, 0x0D, 0xBD, 0xA8, 0xFF, 0xFF, 0x48, 0x8B, 0x11, 0x48, 0x89, + 0x54, 0x24, 0x20, 0x45, 0x8B, 0xCC, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8B, 0xC8, 0xFF, 0x15, + 0x34, 0xA9, 0xFF, 0xFF, 0x8B, 0xF8, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x0F, 0xA9, 0xFF, + 0xFF, 0x85, 0xFF, 0x78, 0x1B, 0x40, 0x84, 0xF6, 0x74, 0x0E, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0x48, + 0x89, 0x0B, 0xEB, 0x02, 0x8B, 0xF8, 0xEB, 0x08, 0x48, 0x8B, 0x44, 0x24, 0x48, 0x48, 0x89, 0x03, + 0x8B, 0xC7, 0x48, 0x8B, 0x5C, 0x24, 0x60, 0x48, 0x8B, 0x74, 0x24, 0x68, 0x48, 0x8B, 0x7C, 0x24, + 0x70, 0x48, 0x83, 0xC4, 0x50, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x89, 0x5C, 0x24, 0x08, 0x57, 0x48, 0x83, 0xEC, 0x20, 0x83, 0x3D, 0xF3, 0xBA, 0xFF, 0xFF, + 0x00, 0x8B, 0xFA, 0x48, 0x8B, 0xD9, 0x74, 0x07, 0xB8, 0xBB, 0x00, 0x00, 0xC0, 0xEB, 0x5A, 0x48, + 0x8D, 0x0D, 0x2A, 0xB9, 0xFF, 0xFF, 0xE8, 0x51, 0x93, 0xFF, 0xFF, 0x4C, 0x8B, 0xD8, 0x48, 0x85, + 0xC0, 0x74, 0xE5, 0x8B, 0x05, 0x87, 0xB9, 0xFF, 0xFF, 0x83, 0xF8, 0x33, 0x75, 0x0A, 0x8B, 0xD7, + 0x48, 0x8B, 0xCB, 0x41, 0xFF, 0xD3, 0xEB, 0x31, 0x83, 0xF8, 0x34, 0x74, 0x14, 0x83, 0xF8, 0x3C, + 0x74, 0x0F, 0x83, 0xF8, 0x3D, 0x74, 0x0A, 0x83, 0xF8, 0x3E, 0x74, 0x05, 0x83, 0xF8, 0x3F, 0x75, + 0xB7, 0x65, 0x48, 0x8B, 0x04, 0x25, 0x88, 0x01, 0x00, 0x00, 0x8B, 0xD7, 0x48, 0x8B, 0xCB, 0x48, + 0x3B, 0xD8, 0x41, 0x0F, 0x94, 0xC0, 0x41, 0xFF, 0xD3, 0x48, 0x8B, 0x5C, 0x24, 0x30, 0x48, 0x83, + 0xC4, 0x20, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x53, + 0x48, 0x81, 0xEC, 0xC0, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x45, 0x8A, 0xC8, + 0x4C, 0x8B, 0x05, 0xF9, 0xA8, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x48, 0x8D, 0x40, 0x20, 0x8B, 0xDA, + 0x33, 0xD2, 0x48, 0x89, 0x44, 0x24, 0x20, 0xFF, 0x15, 0xEB, 0xA7, 0xFF, 0xFF, 0x85, 0xC0, 0x0F, + 0x88, 0xBE, 0x00, 0x00, 0x00, 0x65, 0x48, 0x8B, 0x04, 0x25, 0x88, 0x01, 0x00, 0x00, 0x48, 0x39, + 0x84, 0x24, 0xE8, 0x00, 0x00, 0x00, 0x0F, 0x84, 0x92, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x8C, 0x24, + 0x98, 0x00, 0x00, 0x00, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x89, 0x9C, 0x24, 0xB0, 0x00, 0x00, 0x00, + 0xFF, 0x15, 0x82, 0xA8, 0xFF, 0xFF, 0x48, 0x83, 0x64, 0x24, 0x38, 0x00, 0x48, 0x8B, 0x94, 0x24, + 0xE8, 0x00, 0x00, 0x00, 0xC6, 0x44, 0x24, 0x30, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, + 0x83, 0x64, 0x24, 0x20, 0x00, 0x4C, 0x8D, 0x0D, 0x78, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x4C, 0x24, + 0x40, 0x45, 0x33, 0xC0, 0xFF, 0x15, 0x36, 0xA8, 0xFF, 0xFF, 0x48, 0x8D, 0x54, 0x24, 0x40, 0x48, + 0x8D, 0x4C, 0x24, 0x40, 0x41, 0xB9, 0x02, 0x00, 0x00, 0x00, 0x45, 0x33, 0xC0, 0xFF, 0x15, 0x2D, + 0xA8, 0xFF, 0xFF, 0x84, 0xC0, 0x74, 0x20, 0x48, 0x83, 0x64, 0x24, 0x20, 0x00, 0x48, 0x8D, 0x8C, + 0x24, 0x98, 0x00, 0x00, 0x00, 0x45, 0x33, 0xC9, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0xFF, 0x15, 0x35, + 0xA8, 0xFF, 0xFF, 0x8B, 0xD8, 0xEB, 0x0C, 0xBB, 0x01, 0x00, 0x00, 0xC0, 0xEB, 0x05, 0xBB, 0xDB, + 0x00, 0x00, 0xC0, 0x48, 0x8B, 0x8C, 0x24, 0xE8, 0x00, 0x00, 0x00, 0xFF, 0x15, 0x4F, 0xA7, 0xFF, + 0xFF, 0x8B, 0xC3, 0x48, 0x81, 0xC4, 0xC0, 0x00, 0x00, 0x00, 0x5B, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x40, 0x53, 0x48, 0x83, 0xEC, 0x20, 0x49, 0x8B, 0x09, 0x45, 0x33, 0xC0, + 0x33, 0xD2, 0x8B, 0x59, 0x70, 0x48, 0x83, 0xC1, 0x58, 0xFF, 0x15, 0xB9, 0xA7, 0xFF, 0xFF, 0x65, + 0x48, 0x8B, 0x0C, 0x25, 0x88, 0x01, 0x00, 0x00, 0x8B, 0xD3, 0x48, 0x83, 0xC4, 0x20, 0x5B, 0xE9, + 0x3C, 0xFE, 0xFF, 0xFF, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, + 0x89, 0x58, 0x18, 0x4C, 0x89, 0x48, 0x20, 0x89, 0x50, 0x10, 0x48, 0x89, 0x48, 0x08, 0x56, 0x57, + 0x41, 0x54, 0x41, 0x55, 0x41, 0x57, 0x48, 0x81, 0xEC, 0xF0, 0x00, 0x00, 0x00, 0x45, 0x8B, 0xF8, + 0x48, 0x8B, 0xD9, 0x45, 0x33, 0xE4, 0x41, 0x83, 0xF8, 0x40, 0x76, 0x0A, 0xB8, 0xF1, 0x00, 0x00, + 0xC0, 0xE9, 0x7C, 0x02, 0x00, 0x00, 0x45, 0x8B, 0xE8, 0x41, 0xC1, 0xE5, 0x03, 0x44, 0x38, 0xA4, + 0x24, 0x50, 0x01, 0x00, 0x00, 0x74, 0x65, 0x41, 0x8B, 0xD5, 0x41, 0xB8, 0x08, 0x00, 0x00, 0x00, + 0x49, 0x8B, 0xC9, 0xFF, 0x15, 0xC7, 0xA5, 0xFF, 0xFF, 0x48, 0x8B, 0xB4, 0x24, 0x40, 0x01, 0x00, + 0x00, 0x48, 0x85, 0xF6, 0x74, 0x16, 0xBB, 0x04, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC3, 0x48, 0x8B, + 0xD3, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0xA6, 0xA5, 0xFF, 0xFF, 0xEB, 0x05, 0xBB, 0x04, 0x00, 0x00, + 0x00, 0x48, 0x8B, 0xBC, 0x24, 0x48, 0x01, 0x00, 0x00, 0x48, 0x85, 0xFF, 0x74, 0x0F, 0x44, 0x8B, + 0xC3, 0x48, 0x8B, 0xD3, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x83, 0xA5, 0xFF, 0xFF, 0x48, 0x8B, 0x9C, + 0x24, 0x20, 0x01, 0x00, 0x00, 0xEB, 0x15, 0xE9, 0x06, 0x02, 0x00, 0x00, 0x48, 0x8B, 0xBC, 0x24, + 0x48, 0x01, 0x00, 0x00, 0x48, 0x8B, 0xB4, 0x24, 0x40, 0x01, 0x00, 0x00, 0x45, 0x85, 0xED, 0x75, + 0x39, 0x44, 0x38, 0xAC, 0x24, 0x50, 0x01, 0x00, 0x00, 0x74, 0x17, 0x48, 0x85, 0xF6, 0x74, 0x03, + 0x44, 0x21, 0x2E, 0x48, 0x85, 0xFF, 0x74, 0x03, 0x83, 0x27, 0x00, 0xEB, 0x03, 0x44, 0x8B, 0xE0, + 0xEB, 0x10, 0x48, 0x85, 0xF6, 0x74, 0x03, 0x83, 0x26, 0x00, 0x48, 0x85, 0xFF, 0x74, 0x03, 0x83, + 0x27, 0x00, 0x41, 0x8B, 0xC4, 0xE9, 0xB8, 0x01, 0x00, 0x00, 0x41, 0x8B, 0xD5, 0x33, 0xC9, 0x41, + 0xB8, 0x4B, 0x70, 0x68, 0x62, 0xFF, 0x15, 0xF5, 0xA4, 0xFF, 0xFF, 0x4C, 0x8B, 0xE8, 0x48, 0x89, + 0x44, 0x24, 0x40, 0x48, 0x85, 0xC0, 0x75, 0x0A, 0xB8, 0x9A, 0x00, 0x00, 0xC0, 0xE9, 0x90, 0x01, + 0x00, 0x00, 0x8B, 0x84, 0x24, 0x28, 0x01, 0x00, 0x00, 0x89, 0x84, 0x24, 0xD8, 0x00, 0x00, 0x00, + 0x44, 0x89, 0xBC, 0x24, 0xDC, 0x00, 0x00, 0x00, 0x4C, 0x89, 0xAC, 0x24, 0xE0, 0x00, 0x00, 0x00, + 0x65, 0x48, 0x8B, 0x04, 0x25, 0x88, 0x01, 0x00, 0x00, 0x48, 0x3B, 0xD8, 0x75, 0x49, 0x48, 0x8D, + 0x44, 0x24, 0x60, 0x48, 0x89, 0x44, 0x24, 0x48, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x88, 0x44, 0x24, + 0x60, 0x44, 0x0F, 0x20, 0xC3, 0x44, 0x0F, 0x22, 0xC0, 0x48, 0x8D, 0x44, 0x24, 0x50, 0x48, 0x89, + 0x44, 0x24, 0x20, 0x4C, 0x8D, 0x4C, 0x24, 0x48, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8D, 0x4C, + 0x24, 0x68, 0xE8, 0x49, 0x01, 0x00, 0x00, 0x44, 0x0F, 0xB6, 0xDB, 0x45, 0x0F, 0x22, 0xC3, 0x45, + 0x33, 0xFF, 0xE9, 0x89, 0x00, 0x00, 0x00, 0x45, 0x33, 0xFF, 0x44, 0x88, 0x7C, 0x24, 0x60, 0x45, + 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8D, 0x8C, 0x24, 0xC0, 0x00, 0x00, 0x00, 0xFF, 0x15, 0xF6, 0xA5, + 0xFF, 0xFF, 0x4C, 0x89, 0x7C, 0x24, 0x38, 0x44, 0x88, 0x7C, 0x24, 0x30, 0x4C, 0x89, 0x7C, 0x24, + 0x28, 0x4C, 0x89, 0x7C, 0x24, 0x20, 0x4C, 0x8D, 0x0D, 0x03, 0x01, 0x00, 0x00, 0x45, 0x33, 0xC0, + 0x48, 0x8B, 0xD3, 0x48, 0x8D, 0x4C, 0x24, 0x68, 0xFF, 0x15, 0xB2, 0xA5, 0xFF, 0xFF, 0x45, 0x8D, + 0x4F, 0x02, 0x45, 0x33, 0xC0, 0x48, 0x8D, 0x54, 0x24, 0x60, 0x48, 0x8D, 0x4C, 0x24, 0x68, 0xFF, + 0x15, 0xAB, 0xA5, 0xFF, 0xFF, 0x41, 0x3A, 0xC7, 0x74, 0x20, 0x4C, 0x89, 0x7C, 0x24, 0x20, 0x45, + 0x33, 0xC9, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0x48, 0x8D, 0x8C, 0x24, 0xC0, 0x00, 0x00, 0x00, 0xFF, + 0x15, 0xB3, 0xA5, 0xFF, 0xFF, 0x44, 0x8B, 0xE0, 0xEB, 0x06, 0x41, 0xBC, 0x01, 0x00, 0x00, 0xC0, + 0x45, 0x3B, 0xE7, 0x7C, 0x7C, 0x44, 0x38, 0xBC, 0x24, 0x50, 0x01, 0x00, 0x00, 0x74, 0x3F, 0x8B, + 0x9C, 0x24, 0xE8, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0xC3, 0x49, 0xC1, 0xE0, 0x03, 0x49, 0x8B, 0xD5, + 0x48, 0x8B, 0x8C, 0x24, 0x38, 0x01, 0x00, 0x00, 0xE8, 0xC3, 0x92, 0xFF, 0xFF, 0x49, 0x3B, 0xF7, + 0x74, 0x02, 0x89, 0x1E, 0x49, 0x3B, 0xFF, 0x74, 0x09, 0x8B, 0x84, 0x24, 0xEC, 0x00, 0x00, 0x00, + 0x89, 0x07, 0xEB, 0x08, 0x44, 0x8B, 0xE0, 0x4C, 0x8B, 0x6C, 0x24, 0x40, 0xEB, 0x33, 0x8B, 0x9C, + 0x24, 0xE8, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0xC3, 0x49, 0xC1, 0xE0, 0x03, 0x49, 0x8B, 0xD5, 0x48, + 0x8B, 0x8C, 0x24, 0x38, 0x01, 0x00, 0x00, 0xE8, 0x84, 0x92, 0xFF, 0xFF, 0x49, 0x3B, 0xF7, 0x74, + 0x02, 0x89, 0x1E, 0x49, 0x3B, 0xFF, 0x74, 0x09, 0x8B, 0x84, 0x24, 0xEC, 0x00, 0x00, 0x00, 0x89, + 0x07, 0xBA, 0x4B, 0x70, 0x68, 0x62, 0x49, 0x8B, 0xCD, 0xFF, 0x15, 0x59, 0xA3, 0xFF, 0xFF, 0x41, + 0x8B, 0xC4, 0x48, 0x8B, 0x9C, 0x24, 0x30, 0x01, 0x00, 0x00, 0x48, 0x81, 0xC4, 0xF0, 0x00, 0x00, + 0x00, 0x41, 0x5F, 0x41, 0x5D, 0x41, 0x5C, 0x5F, 0x5E, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x40, 0x53, 0x48, 0x83, 0xEC, 0x30, 0x49, 0x8B, 0x19, 0x45, 0x33, 0xC0, 0x4C, 0x8B, 0x8B, 0x80, + 0x00, 0x00, 0x00, 0x8B, 0x53, 0x7C, 0x8B, 0x4B, 0x78, 0x48, 0x8D, 0x83, 0x8C, 0x00, 0x00, 0x00, + 0x48, 0x89, 0x44, 0x24, 0x20, 0xE8, 0xCA, 0x90, 0xFF, 0xFF, 0x80, 0x3B, 0x00, 0x89, 0x83, 0x88, + 0x00, 0x00, 0x00, 0x75, 0x0F, 0x48, 0x8D, 0x4B, 0x60, 0x45, 0x33, 0xC0, 0x33, 0xD2, 0xFF, 0x15, + 0x84, 0xA4, 0xFF, 0xFF, 0x48, 0x83, 0xC4, 0x30, 0x5B, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, 0x89, 0x78, 0x18, 0x4C, + 0x89, 0x60, 0x20, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xEC, 0x60, 0x45, 0x8B, 0xE9, + 0x4D, 0x8B, 0xF8, 0x44, 0x8B, 0xE2, 0x48, 0x8B, 0xD9, 0x44, 0x8A, 0xB4, 0x24, 0xA8, 0x00, 0x00, + 0x00, 0x45, 0x84, 0xF6, 0x74, 0x37, 0x49, 0x8B, 0xD5, 0xBF, 0x04, 0x00, 0x00, 0x00, 0x44, 0x8B, + 0xC7, 0x49, 0x8B, 0xCF, 0xFF, 0x15, 0xB6, 0xA2, 0xFF, 0xFF, 0x48, 0x8B, 0xB4, 0x24, 0xA0, 0x00, + 0x00, 0x00, 0x48, 0x85, 0xF6, 0x74, 0x0F, 0x44, 0x8B, 0xC7, 0x48, 0x8B, 0xD7, 0x48, 0x8B, 0xCE, + 0xFF, 0x15, 0x9A, 0xA2, 0xFF, 0xFF, 0xEB, 0x12, 0xE9, 0x70, 0x01, 0x00, 0x00, 0xBF, 0x04, 0x00, + 0x00, 0x00, 0x48, 0x8B, 0xB4, 0x24, 0xA0, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, + 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCE, 0x4C, 0x8B, 0x05, + 0x1C, 0xA4, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x16, 0xA3, + 0xFF, 0xFF, 0x8B, 0xD8, 0x89, 0x44, 0x24, 0x40, 0x85, 0xC0, 0x0F, 0x88, 0x2D, 0x01, 0x00, 0x00, + 0x41, 0x83, 0xEC, 0x01, 0x0F, 0x84, 0xC4, 0x00, 0x00, 0x00, 0x41, 0x83, 0xFC, 0x02, 0x74, 0x10, + 0xBB, 0x03, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, 0x40, 0x33, 0xFF, 0xE9, 0xEA, 0x00, 0x00, 0x00, + 0x48, 0x8D, 0x44, 0x24, 0x50, 0x48, 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, + 0x8B, 0x05, 0xCA, 0xA3, 0xFF, 0xFF, 0x48, 0x8B, 0x08, 0x48, 0x89, 0x4C, 0x24, 0x20, 0x41, 0xB9, + 0x40, 0x00, 0x00, 0x00, 0x45, 0x33, 0xC0, 0xBA, 0x00, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, + 0x48, 0xFF, 0x15, 0xF1, 0xA2, 0xFF, 0xFF, 0x8B, 0xD8, 0x89, 0x44, 0x24, 0x40, 0x85, 0xC0, 0x0F, + 0x88, 0xA5, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x20, 0x00, 0x44, 0x8B, 0xCF, 0x4C, 0x8D, + 0x44, 0x24, 0x44, 0xBA, 0x16, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0xFF, 0x15, 0xBD, + 0xA2, 0xFF, 0xFF, 0x8B, 0xD8, 0x89, 0x44, 0x24, 0x40, 0x85, 0xC0, 0x78, 0x34, 0x44, 0x3B, 0xEF, + 0x75, 0x26, 0x8B, 0x44, 0x24, 0x44, 0x41, 0x89, 0x07, 0xEB, 0x1B, 0x8B, 0xD8, 0x89, 0x44, 0x24, + 0x40, 0xBF, 0x04, 0x00, 0x00, 0x00, 0x44, 0x8A, 0xB4, 0x24, 0xA8, 0x00, 0x00, 0x00, 0x48, 0x8B, + 0xB4, 0x24, 0xA0, 0x00, 0x00, 0x00, 0xEB, 0x09, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0x89, 0x5C, 0x24, + 0x40, 0x48, 0x8B, 0x4C, 0x24, 0x50, 0xFF, 0x15, 0x9C, 0xA1, 0xFF, 0xFF, 0xEB, 0x3C, 0x48, 0x8B, + 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x0F, 0xA3, 0xFF, 0xFF, 0x41, 0x83, 0xFD, 0x08, 0x75, 0x1D, 0x49, + 0x89, 0x07, 0xEB, 0x16, 0x8B, 0xD8, 0x89, 0x44, 0x24, 0x40, 0x44, 0x8A, 0xB4, 0x24, 0xA8, 0x00, + 0x00, 0x00, 0x48, 0x8B, 0xB4, 0x24, 0xA0, 0x00, 0x00, 0x00, 0xEB, 0x09, 0xBB, 0x04, 0x00, 0x00, + 0xC0, 0x89, 0x5C, 0x24, 0x40, 0xBF, 0x08, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x48, 0xFF, + 0x15, 0x1B, 0xA2, 0xFF, 0xFF, 0x48, 0x85, 0xF6, 0x74, 0x11, 0x45, 0x84, 0xF6, 0x74, 0x0A, 0x89, + 0x3E, 0xEB, 0x04, 0x8B, 0x5C, 0x24, 0x40, 0xEB, 0x02, 0x89, 0x3E, 0x8B, 0xC3, 0x4C, 0x8D, 0x5C, + 0x24, 0x60, 0x49, 0x8B, 0x5B, 0x20, 0x49, 0x8B, 0x73, 0x28, 0x49, 0x8B, 0x7B, 0x30, 0x4D, 0x8B, + 0x63, 0x38, 0x49, 0x8B, 0xE3, 0x41, 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, + 0x89, 0x78, 0x18, 0x4C, 0x89, 0x60, 0x20, 0x41, 0x55, 0x48, 0x83, 0xEC, 0x60, 0x41, 0x8B, 0xF1, + 0x4D, 0x8B, 0xE0, 0x8B, 0xFA, 0x48, 0x8B, 0xD9, 0x44, 0x8A, 0xAC, 0x24, 0x90, 0x00, 0x00, 0x00, + 0x45, 0x84, 0xED, 0x74, 0x19, 0x48, 0x8B, 0xD6, 0x41, 0xB8, 0x04, 0x00, 0x00, 0x00, 0x49, 0x8B, + 0xCC, 0xFF, 0x15, 0x01, 0xA1, 0xFF, 0xFF, 0xEB, 0x05, 0xE9, 0xB2, 0x01, 0x00, 0x00, 0x48, 0x83, + 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, + 0xCD, 0x4C, 0x8B, 0x05, 0x48, 0xA2, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCB, + 0xFF, 0x15, 0x42, 0xA1, 0xFF, 0xFF, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0x80, 0x01, 0x00, 0x00, + 0x83, 0xEF, 0x02, 0x0F, 0x84, 0xA2, 0x00, 0x00, 0x00, 0x83, 0xFF, 0x01, 0x74, 0x0A, 0xBB, 0x03, + 0x00, 0x00, 0xC0, 0xE9, 0x5B, 0x01, 0x00, 0x00, 0x83, 0xFE, 0x04, 0x75, 0x11, 0x41, 0x8B, 0x04, + 0x24, 0x89, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0xEB, 0x02, 0x8B, 0xD8, 0xEB, 0x05, 0xBB, 0x04, + 0x00, 0x00, 0xC0, 0x85, 0xDB, 0x0F, 0x88, 0x38, 0x01, 0x00, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x48, + 0x48, 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, 0x8B, 0x05, 0xDF, 0xA1, 0xFF, + 0xFF, 0x48, 0x8B, 0x08, 0x48, 0x89, 0x4C, 0x24, 0x20, 0x41, 0xB9, 0x20, 0x00, 0x00, 0x00, 0x45, + 0x33, 0xC0, 0xBA, 0x00, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x06, 0xA1, + 0xFF, 0xFF, 0x8B, 0xD8, 0x85, 0xC0, 0x0F, 0x88, 0xF7, 0x00, 0x00, 0x00, 0x41, 0xB9, 0x04, 0x00, + 0x00, 0x00, 0x4C, 0x8D, 0x84, 0x24, 0x90, 0x00, 0x00, 0x00, 0x41, 0x8D, 0x51, 0x12, 0x48, 0x8B, + 0x4C, 0x24, 0x48, 0xFF, 0x15, 0x87, 0xA1, 0xFF, 0xFF, 0x8B, 0xD8, 0x48, 0x8B, 0x4C, 0x24, 0x48, + 0xFF, 0x15, 0xF2, 0x9F, 0xFF, 0xFF, 0xE9, 0xC8, 0x00, 0x00, 0x00, 0x33, 0xC9, 0x48, 0x89, 0x4C, + 0x24, 0x50, 0x83, 0xFE, 0x08, 0x75, 0x1C, 0x49, 0x8B, 0x0C, 0x24, 0x48, 0x89, 0x4C, 0x24, 0x50, + 0xEB, 0x0F, 0x8B, 0xD8, 0x44, 0x8A, 0xAC, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, + 0x50, 0xEB, 0x05, 0xBB, 0x04, 0x00, 0x00, 0xC0, 0x85, 0xDB, 0x0F, 0x88, 0x93, 0x00, 0x00, 0x00, + 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x58, 0x48, 0x89, 0x44, 0x24, 0x20, + 0x45, 0x8A, 0xCD, 0x4C, 0x8B, 0x05, 0xAE, 0xA0, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0xBA, 0x04, 0x00, + 0x00, 0x00, 0xFF, 0x15, 0x30, 0xA0, 0xFF, 0xFF, 0x8B, 0xD8, 0x85, 0xC0, 0x78, 0x65, 0x48, 0x8D, + 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x30, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, 0x8B, 0x05, + 0x84, 0xA0, 0xFF, 0xFF, 0x48, 0x8B, 0x08, 0x48, 0x89, 0x4C, 0x24, 0x20, 0x41, 0xB9, 0x04, 0x00, + 0x00, 0x00, 0x45, 0x33, 0xC0, 0xBA, 0x00, 0x02, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x58, 0xFF, + 0x15, 0x33, 0xA0, 0xFF, 0xFF, 0x8B, 0xD8, 0x85, 0xC0, 0x78, 0x1D, 0x48, 0x8B, 0x54, 0x24, 0x48, + 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0xDD, 0xA0, 0xFF, 0xFF, 0x8B, 0xD8, 0x48, 0x8B, 0x4C, + 0x24, 0x48, 0xFF, 0x15, 0x30, 0x9F, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x58, 0xFF, 0x15, 0xED, + 0x9F, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0xE2, 0x9F, 0xFF, 0xFF, 0x8B, 0xC3, + 0x4C, 0x8D, 0x5C, 0x24, 0x60, 0x49, 0x8B, 0x5B, 0x10, 0x49, 0x8B, 0x73, 0x18, 0x49, 0x8B, 0x7B, + 0x20, 0x4D, 0x8B, 0x63, 0x28, 0x49, 0x8B, 0xE3, 0x41, 0x5D, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x40, 0x53, 0x56, 0x57, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x81, + 0xEC, 0x98, 0x03, 0x00, 0x00, 0x48, 0x8B, 0x05, 0xA4, 0xAF, 0xFF, 0xFF, 0x48, 0x33, 0xC4, 0x48, + 0x89, 0x84, 0x24, 0x80, 0x03, 0x00, 0x00, 0x4C, 0x89, 0x8C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x4C, + 0x89, 0x44, 0x24, 0x68, 0x48, 0x89, 0x94, 0x24, 0x88, 0x00, 0x00, 0x00, 0x48, 0x89, 0x8C, 0x24, + 0x80, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0x00, 0x04, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, + 0x78, 0x48, 0x89, 0x44, 0x24, 0x60, 0x48, 0x8D, 0x84, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x89, + 0x44, 0x24, 0x50, 0x33, 0xDB, 0x88, 0x5C, 0x24, 0x30, 0x88, 0x5C, 0x24, 0x32, 0x4C, 0x8B, 0xEA, + 0x48, 0x89, 0x54, 0x24, 0x58, 0x4D, 0x8B, 0xF9, 0x48, 0x8D, 0xB4, 0x24, 0x80, 0x01, 0x00, 0x00, + 0x48, 0x89, 0x74, 0x24, 0x38, 0xBF, 0x00, 0xC0, 0x00, 0x00, 0x48, 0x8B, 0x84, 0x24, 0xF0, 0x03, + 0x00, 0x00, 0x48, 0x3B, 0xC7, 0x48, 0x0F, 0x42, 0xF8, 0x4C, 0x8B, 0xF0, 0x48, 0x89, 0x44, 0x24, + 0x48, 0x4C, 0x3B, 0xF3, 0x0F, 0x84, 0x49, 0x03, 0x00, 0x00, 0x49, 0x3B, 0xFE, 0x49, 0x0F, 0x47, + 0xFE, 0x48, 0x81, 0xFF, 0xFF, 0x03, 0x00, 0x00, 0x76, 0x0A, 0xC6, 0x44, 0x24, 0x31, 0x01, 0xE9, + 0x9B, 0x00, 0x00, 0x00, 0x88, 0x5C, 0x24, 0x31, 0x48, 0x81, 0xFF, 0x00, 0x02, 0x00, 0x00, 0x77, + 0x2A, 0x48, 0x8D, 0x84, 0x24, 0x80, 0x01, 0x00, 0x00, 0x48, 0x3B, 0xF0, 0x74, 0x0E, 0xBA, 0x4B, + 0x70, 0x68, 0x43, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0xDC, 0x9D, 0xFF, 0xFF, 0x48, 0x8D, 0xB4, 0x24, + 0x80, 0x01, 0x00, 0x00, 0x48, 0x89, 0x74, 0x24, 0x38, 0xEB, 0x64, 0x48, 0x8D, 0x84, 0x24, 0x80, + 0x01, 0x00, 0x00, 0x48, 0x3B, 0xF0, 0x75, 0x57, 0x41, 0xB8, 0x4B, 0x70, 0x68, 0x43, 0x48, 0x8B, + 0xD7, 0x33, 0xC9, 0xFF, 0x15, 0xA7, 0x9D, 0xFF, 0xFF, 0x48, 0x8B, 0xF0, 0x48, 0x89, 0x44, 0x24, + 0x38, 0x48, 0x3B, 0xC3, 0x75, 0x39, 0x48, 0xD1, 0xEF, 0x48, 0x81, 0xFF, 0x00, 0x02, 0x00, 0x00, + 0x76, 0x20, 0x41, 0xB8, 0x4B, 0x70, 0x68, 0x43, 0x48, 0x8B, 0xD7, 0x33, 0xC9, 0xFF, 0x15, 0x7D, + 0x9D, 0xFF, 0xFF, 0x48, 0x8B, 0xF0, 0x48, 0x89, 0x44, 0x24, 0x38, 0x48, 0x3B, 0xC3, 0x74, 0xD6, + 0xEB, 0x0D, 0x48, 0x8D, 0xB4, 0x24, 0x80, 0x01, 0x00, 0x00, 0x48, 0x89, 0x74, 0x24, 0x38, 0x48, + 0x89, 0x5C, 0x24, 0x40, 0x88, 0x5C, 0x24, 0x33, 0x88, 0x5C, 0x24, 0x34, 0x48, 0x8D, 0x94, 0x24, + 0x98, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x8C, 0x24, 0x80, 0x00, 0x00, 0x00, 0xFF, 0x15, 0x5E, 0x9E, + 0xFF, 0xFF, 0x90, 0x4C, 0x3B, 0xAC, 0x24, 0x88, 0x00, 0x00, 0x00, 0x75, 0x29, 0x38, 0x9C, 0x24, + 0xF8, 0x03, 0x00, 0x00, 0x74, 0x20, 0xC6, 0x44, 0x24, 0x30, 0x01, 0x41, 0xB8, 0x01, 0x00, 0x00, + 0x00, 0x48, 0x8B, 0x94, 0x24, 0xF0, 0x03, 0x00, 0x00, 0x49, 0x8B, 0xCD, 0xFF, 0x15, 0x76, 0x9D, + 0xFF, 0xFF, 0x88, 0x5C, 0x24, 0x30, 0x38, 0x5C, 0x24, 0x31, 0x0F, 0x84, 0xB1, 0x00, 0x00, 0x00, + 0x4C, 0x8D, 0x8C, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x49, 0x89, 0x19, 0x41, 0x8B, 0xCD, 0x41, 0xB8, + 0xFF, 0x0F, 0x00, 0x00, 0x41, 0x23, 0xC8, 0x8B, 0xC7, 0x41, 0x23, 0xC0, 0x8D, 0x94, 0x01, 0xFF, + 0x0F, 0x00, 0x00, 0xC1, 0xEA, 0x0C, 0x48, 0x8B, 0xC7, 0x48, 0xC1, 0xE8, 0x0C, 0x03, 0xC2, 0x48, + 0x8D, 0x04, 0xC5, 0x30, 0x00, 0x00, 0x00, 0x66, 0x41, 0x89, 0x41, 0x08, 0x66, 0x41, 0x89, 0x59, + 0x0A, 0x49, 0x8B, 0xC5, 0x48, 0x25, 0x00, 0xF0, 0xFF, 0xFF, 0x49, 0x89, 0x41, 0x20, 0x49, 0x8B, + 0xC5, 0x49, 0x23, 0xC0, 0x41, 0x89, 0x41, 0x2C, 0x41, 0x89, 0x79, 0x28, 0x45, 0x33, 0xC0, 0x8A, + 0x94, 0x24, 0xF8, 0x03, 0x00, 0x00, 0x49, 0x8B, 0xC9, 0xFF, 0x15, 0xA1, 0x9E, 0xFF, 0xFF, 0xC6, + 0x44, 0x24, 0x33, 0x01, 0xC7, 0x44, 0x24, 0x28, 0x20, 0x00, 0x00, 0x00, 0x89, 0x5C, 0x24, 0x20, + 0x45, 0x33, 0xC9, 0x33, 0xD2, 0x45, 0x8D, 0x41, 0x01, 0x48, 0x8D, 0x8C, 0x24, 0xD0, 0x00, 0x00, + 0x00, 0xFF, 0x15, 0x71, 0x9E, 0xFF, 0xFF, 0x48, 0x89, 0x44, 0x24, 0x40, 0x48, 0x3B, 0xC3, 0x75, + 0x1E, 0xC6, 0x44, 0x24, 0x32, 0x01, 0xB9, 0x9A, 0x00, 0x00, 0xC0, 0xFF, 0x15, 0x47, 0x9E, 0xFF, + 0xFF, 0x4C, 0x8B, 0xC7, 0x49, 0x8B, 0xD5, 0x48, 0x8B, 0xCE, 0xE8, 0x51, 0x8B, 0xFF, 0xFF, 0x48, + 0x8D, 0x8C, 0x24, 0x98, 0x00, 0x00, 0x00, 0xFF, 0x15, 0xDB, 0x9C, 0xFF, 0xFF, 0x48, 0x8D, 0x94, + 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x68, 0xFF, 0x15, 0x40, 0x9D, 0xFF, 0xFF, + 0x4C, 0x3B, 0xBC, 0x24, 0x90, 0x00, 0x00, 0x00, 0x75, 0x29, 0x38, 0x9C, 0x24, 0xF8, 0x03, 0x00, + 0x00, 0x74, 0x20, 0xC6, 0x44, 0x24, 0x30, 0x01, 0x41, 0xB8, 0x01, 0x00, 0x00, 0x00, 0x48, 0x8B, + 0x94, 0x24, 0xF0, 0x03, 0x00, 0x00, 0x49, 0x8B, 0xCF, 0xFF, 0x15, 0x11, 0x9C, 0xFF, 0xFF, 0x88, + 0x5C, 0x24, 0x30, 0xC6, 0x44, 0x24, 0x34, 0x01, 0x38, 0x5C, 0x24, 0x31, 0x74, 0x12, 0x4C, 0x8B, + 0xC7, 0x48, 0x8B, 0x54, 0x24, 0x40, 0x49, 0x8B, 0xCF, 0xE8, 0xE2, 0x8A, 0xFF, 0xFF, 0xEB, 0x0F, + 0x4C, 0x8B, 0xC7, 0x48, 0x8B, 0xD6, 0x49, 0x8B, 0xCF, 0xE8, 0xD2, 0x8A, 0xFF, 0xFF, 0x90, 0x48, + 0x8D, 0x8C, 0x24, 0x98, 0x00, 0x00, 0x00, 0xFF, 0x15, 0x5B, 0x9C, 0xFF, 0xFF, 0x38, 0x5C, 0x24, + 0x31, 0x74, 0x21, 0x48, 0x8D, 0x94, 0x24, 0xD0, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x40, + 0xFF, 0x15, 0x8A, 0x9D, 0xFF, 0xFF, 0x48, 0x8D, 0x8C, 0x24, 0xD0, 0x00, 0x00, 0x00, 0xFF, 0x15, + 0xA4, 0x9D, 0xFF, 0xFF, 0x4C, 0x2B, 0xF7, 0x4C, 0x89, 0x74, 0x24, 0x48, 0x4C, 0x03, 0xEF, 0x4C, + 0x89, 0x6C, 0x24, 0x58, 0x4C, 0x03, 0xFF, 0xE9, 0x55, 0xFD, 0xFF, 0xFF, 0x8B, 0xF0, 0x48, 0x8D, + 0x8C, 0x24, 0x98, 0x00, 0x00, 0x00, 0xFF, 0x15, 0x0C, 0x9C, 0xFF, 0xFF, 0x48, 0x8B, 0x4C, 0x24, + 0x40, 0x33, 0xDB, 0x48, 0x3B, 0xCB, 0x74, 0x10, 0x48, 0x8B, 0x7C, 0x24, 0x50, 0x48, 0x8B, 0xD7, + 0xFF, 0x15, 0x3A, 0x9D, 0xFF, 0xFF, 0xEB, 0x05, 0x48, 0x8B, 0x7C, 0x24, 0x50, 0x38, 0x5C, 0x24, + 0x33, 0x74, 0x09, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x4C, 0x9D, 0xFF, 0xFF, 0x48, 0x8D, 0x84, 0x24, + 0x80, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x38, 0x48, 0x3B, 0xC8, 0x74, 0x0B, 0xBA, 0x4B, + 0x70, 0x68, 0x43, 0xFF, 0x15, 0x1F, 0x9B, 0xFF, 0xFF, 0x38, 0x5C, 0x24, 0x30, 0x75, 0x40, 0x38, + 0x5C, 0x24, 0x32, 0x75, 0x3A, 0x38, 0x5C, 0x24, 0x34, 0x74, 0x18, 0x38, 0x5C, 0x24, 0x35, 0x74, + 0x12, 0x8B, 0x4C, 0x24, 0x70, 0x2B, 0x4C, 0x24, 0x58, 0x48, 0x8B, 0x44, 0x24, 0x60, 0x48, 0x89, + 0x08, 0xEB, 0x15, 0x48, 0x8B, 0x8C, 0x24, 0xF0, 0x03, 0x00, 0x00, 0x48, 0x2B, 0x4C, 0x24, 0x48, + 0x48, 0x8B, 0x44, 0x24, 0x60, 0x48, 0x89, 0x08, 0xB8, 0x0D, 0x00, 0x00, 0x80, 0xEB, 0x31, 0x8B, + 0xC6, 0xEB, 0x2D, 0x48, 0x8D, 0x84, 0x24, 0x80, 0x01, 0x00, 0x00, 0x48, 0x3B, 0xF0, 0x74, 0x0E, + 0xBA, 0x4B, 0x70, 0x68, 0x43, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0xBA, 0x9A, 0xFF, 0xFF, 0x48, 0x8B, + 0x84, 0x24, 0xF0, 0x03, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x78, 0x48, 0x89, 0x01, 0x33, 0xC0, + 0x48, 0x8B, 0x8C, 0x24, 0x80, 0x03, 0x00, 0x00, 0x48, 0x33, 0xCC, 0xE8, 0x30, 0x89, 0xFF, 0xFF, + 0x48, 0x81, 0xC4, 0x98, 0x03, 0x00, 0x00, 0x41, 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0x5F, 0x5E, 0x5B, + 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, + 0x24, 0x10, 0x48, 0x89, 0x7C, 0x24, 0x18, 0x41, 0x54, 0x41, 0x55, 0x41, 0x56, 0x48, 0x83, 0xEC, + 0x50, 0x49, 0x8B, 0xF1, 0x4D, 0x8B, 0xF0, 0x4C, 0x8B, 0xEA, 0x48, 0x8B, 0xF9, 0x44, 0x8A, 0xA4, + 0x24, 0x98, 0x00, 0x00, 0x00, 0x45, 0x84, 0xE4, 0x74, 0x52, 0x4E, 0x8D, 0x14, 0x0A, 0x4C, 0x3B, + 0xD2, 0x72, 0x3F, 0x4F, 0x8D, 0x1C, 0x08, 0x4D, 0x3B, 0xD8, 0x72, 0x36, 0x48, 0x8B, 0x05, 0x2D, + 0x9C, 0xFF, 0xFF, 0x4C, 0x3B, 0x10, 0x77, 0x2A, 0x4C, 0x3B, 0x18, 0x77, 0x25, 0x48, 0x8B, 0x9C, + 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x85, 0xDB, 0x74, 0x2A, 0xBA, 0x08, 0x00, 0x00, 0x00, 0x44, + 0x8B, 0xC2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x25, 0x9A, 0xFF, 0xFF, 0xEB, 0x17, 0xE9, 0xC8, 0x00, + 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0xC0, 0xE9, 0xBE, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x9C, 0x24, + 0x90, 0x00, 0x00, 0x00, 0x48, 0x85, 0xF6, 0x0F, 0x84, 0x84, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, + 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCC, + 0x4C, 0x8B, 0x05, 0x51, 0x9A, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCF, 0xFF, + 0x15, 0x93, 0x9A, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x85, 0xC0, + 0x78, 0x48, 0xFF, 0x15, 0x78, 0x9A, 0xFF, 0xFF, 0x4C, 0x8B, 0xC0, 0x48, 0x8D, 0x44, 0x24, 0x48, + 0x48, 0x89, 0x44, 0x24, 0x30, 0x44, 0x88, 0x64, 0x24, 0x28, 0x48, 0x89, 0x74, 0x24, 0x20, 0x4D, + 0x8B, 0xCE, 0x49, 0x8B, 0xD5, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xE8, 0xC5, 0xFA, 0xFF, 0xFF, 0x8B, + 0xF8, 0x89, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x6D, + 0x9A, 0xFF, 0xFF, 0x4C, 0x8B, 0x5C, 0x24, 0x48, 0xEB, 0x13, 0x4C, 0x8B, 0x5C, 0x24, 0x48, 0xEB, + 0x0C, 0x45, 0x33, 0xDB, 0x33, 0xFF, 0x89, 0xBC, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x85, 0xDB, + 0x74, 0x16, 0x45, 0x84, 0xE4, 0x74, 0x0E, 0x4C, 0x89, 0x1B, 0xEB, 0x07, 0x8B, 0xBC, 0x24, 0x98, + 0x00, 0x00, 0x00, 0xEB, 0x03, 0x4C, 0x89, 0x1B, 0x8B, 0xC7, 0x4C, 0x8D, 0x5C, 0x24, 0x50, 0x49, + 0x8B, 0x5B, 0x20, 0x49, 0x8B, 0x73, 0x28, 0x49, 0x8B, 0x7B, 0x30, 0x49, 0x8B, 0xE3, 0x41, 0x5E, + 0x41, 0x5D, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, + 0x08, 0x48, 0x89, 0x74, 0x24, 0x10, 0x48, 0x89, 0x7C, 0x24, 0x18, 0x41, 0x54, 0x41, 0x55, 0x41, + 0x56, 0x48, 0x83, 0xEC, 0x50, 0x49, 0x8B, 0xF1, 0x4D, 0x8B, 0xF0, 0x4C, 0x8B, 0xEA, 0x48, 0x8B, + 0xF9, 0x44, 0x8A, 0xA4, 0x24, 0x98, 0x00, 0x00, 0x00, 0x45, 0x84, 0xE4, 0x74, 0x52, 0x4E, 0x8D, + 0x14, 0x0A, 0x4C, 0x3B, 0xD2, 0x72, 0x3F, 0x4F, 0x8D, 0x1C, 0x08, 0x4D, 0x3B, 0xD8, 0x72, 0x36, + 0x48, 0x8B, 0x05, 0xC9, 0x9A, 0xFF, 0xFF, 0x4C, 0x3B, 0x10, 0x77, 0x2A, 0x4C, 0x3B, 0x18, 0x77, + 0x25, 0x48, 0x8B, 0x9C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x85, 0xDB, 0x74, 0x2A, 0xBA, 0x08, + 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0xC1, 0x98, 0xFF, 0xFF, 0xEB, + 0x17, 0xE9, 0xC8, 0x00, 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0xC0, 0xE9, 0xBE, 0x00, 0x00, 0x00, + 0x48, 0x8B, 0x9C, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x85, 0xF6, 0x0F, 0x84, 0x84, 0x00, 0x00, + 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x48, 0x89, 0x44, 0x24, + 0x20, 0x45, 0x8A, 0xCC, 0x4C, 0x8B, 0x05, 0xED, 0x98, 0xFF, 0xFF, 0x4D, 0x8B, 0x00, 0x33, 0xD2, + 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x2F, 0x99, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x84, 0x24, 0x98, 0x00, + 0x00, 0x00, 0x85, 0xC0, 0x78, 0x48, 0xFF, 0x15, 0x14, 0x99, 0xFF, 0xFF, 0x48, 0x8B, 0xC8, 0x48, + 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x30, 0x44, 0x88, 0x64, 0x24, 0x28, 0x48, 0x89, + 0x74, 0x24, 0x20, 0x4D, 0x8B, 0xCD, 0x4C, 0x8B, 0x44, 0x24, 0x40, 0x49, 0x8B, 0xD6, 0xE8, 0x61, + 0xF9, 0xFF, 0xFF, 0x8B, 0xF8, 0x89, 0x84, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, + 0x40, 0xFF, 0x15, 0x09, 0x99, 0xFF, 0xFF, 0x4C, 0x8B, 0x5C, 0x24, 0x48, 0xEB, 0x13, 0x4C, 0x8B, + 0x5C, 0x24, 0x48, 0xEB, 0x0C, 0x45, 0x33, 0xDB, 0x33, 0xFF, 0x89, 0xBC, 0x24, 0x98, 0x00, 0x00, + 0x00, 0x48, 0x85, 0xDB, 0x74, 0x16, 0x45, 0x84, 0xE4, 0x74, 0x0E, 0x4C, 0x89, 0x1B, 0xEB, 0x07, + 0x8B, 0xBC, 0x24, 0x98, 0x00, 0x00, 0x00, 0xEB, 0x03, 0x4C, 0x89, 0x1B, 0x8B, 0xC7, 0x4C, 0x8D, + 0x5C, 0x24, 0x50, 0x49, 0x8B, 0x5B, 0x20, 0x49, 0x8B, 0x73, 0x28, 0x49, 0x8B, 0x7B, 0x30, 0x49, + 0x8B, 0xE3, 0x41, 0x5E, 0x41, 0x5D, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x70, 0x10, 0x48, 0x89, 0x78, 0x18, 0x4C, + 0x89, 0x60, 0x20, 0x41, 0x55, 0x41, 0x56, 0x41, 0x57, 0x48, 0x83, 0xEC, 0x60, 0x49, 0x8B, 0xF9, + 0x4D, 0x8B, 0xF0, 0x4C, 0x8B, 0xE2, 0x48, 0x8B, 0xD9, 0x44, 0x8A, 0xBC, 0x24, 0xA8, 0x00, 0x00, + 0x00, 0x45, 0x84, 0xFF, 0x74, 0x4C, 0x4A, 0x8D, 0x04, 0x0A, 0x48, 0x3B, 0xC2, 0x72, 0x39, 0x4D, + 0x03, 0xC8, 0x4D, 0x3B, 0xC8, 0x72, 0x31, 0x48, 0x8B, 0x05, 0x62, 0x99, 0xFF, 0xFF, 0x4C, 0x3B, + 0x08, 0x77, 0x25, 0x48, 0x8B, 0xB4, 0x24, 0xA0, 0x00, 0x00, 0x00, 0x48, 0x85, 0xF6, 0x74, 0x2A, + 0xBA, 0x08, 0x00, 0x00, 0x00, 0x44, 0x8B, 0xC2, 0x48, 0x8B, 0xCE, 0xFF, 0x15, 0x5F, 0x97, 0xFF, + 0xFF, 0xEB, 0x17, 0xE9, 0x38, 0x01, 0x00, 0x00, 0xB8, 0x05, 0x00, 0x00, 0xC0, 0xE9, 0x2E, 0x01, + 0x00, 0x00, 0x48, 0x8B, 0xB4, 0x24, 0xA0, 0x00, 0x00, 0x00, 0x48, 0x85, 0xFF, 0x0F, 0x84, 0xF5, + 0x00, 0x00, 0x00, 0x49, 0x8D, 0x0C, 0x3C, 0x48, 0x8B, 0x05, 0x12, 0x99, 0xFF, 0xFF, 0x48, 0x3B, + 0x08, 0x76, 0x61, 0x49, 0x8B, 0xDC, 0x48, 0xC7, 0xC0, 0x00, 0xF0, 0xFF, 0xFF, 0x48, 0x23, 0xD8, + 0x4C, 0x8D, 0x69, 0xFF, 0x4C, 0x23, 0xE8, 0x49, 0x3B, 0xDD, 0x77, 0x26, 0x48, 0x8B, 0xCB, 0xFF, + 0x15, 0x0B, 0x99, 0xFF, 0xFF, 0x84, 0xC0, 0x75, 0x0B, 0xB9, 0x05, 0x00, 0x00, 0xC0, 0xFF, 0x15, + 0xD4, 0x98, 0xFF, 0xFF, 0x48, 0x81, 0xC3, 0x00, 0x10, 0x00, 0x00, 0x48, 0x89, 0x5C, 0x24, 0x50, + 0xEB, 0xD5, 0x4C, 0x8B, 0xC7, 0x49, 0x8B, 0xD4, 0x49, 0x8B, 0xCE, 0xE8, 0xD0, 0x85, 0xFF, 0xFF, + 0x90, 0x33, 0xDB, 0x89, 0x9C, 0x24, 0xA8, 0x00, 0x00, 0x00, 0xE9, 0x94, 0x00, 0x00, 0x00, 0xE9, + 0xAC, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x28, 0x00, 0x48, 0x8D, 0x44, 0x24, 0x40, 0x48, + 0x89, 0x44, 0x24, 0x20, 0x45, 0x8A, 0xCF, 0x4C, 0x8B, 0x05, 0x1A, 0x97, 0xFF, 0xFF, 0x4D, 0x8B, + 0x00, 0x33, 0xD2, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x5C, 0x97, 0xFF, 0xFF, 0x8B, 0xD8, 0x89, 0x84, + 0x24, 0xA8, 0x00, 0x00, 0x00, 0x85, 0xC0, 0x78, 0x48, 0xFF, 0x15, 0x41, 0x97, 0xFF, 0xFF, 0x4C, + 0x8B, 0xC0, 0x48, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x89, 0x44, 0x24, 0x30, 0x44, 0x88, 0x7C, 0x24, + 0x28, 0x48, 0x89, 0x7C, 0x24, 0x20, 0x4D, 0x8B, 0xCE, 0x49, 0x8B, 0xD4, 0x48, 0x8B, 0x4C, 0x24, + 0x40, 0xE8, 0x8E, 0xF7, 0xFF, 0xFF, 0x8B, 0xD8, 0x89, 0x84, 0x24, 0xA8, 0x00, 0x00, 0x00, 0x48, + 0x8B, 0x4C, 0x24, 0x40, 0xFF, 0x15, 0x36, 0x97, 0xFF, 0xFF, 0x48, 0x8B, 0x7C, 0x24, 0x48, 0xEB, + 0x12, 0x48, 0x8B, 0x7C, 0x24, 0x48, 0xEB, 0x0B, 0x33, 0xFF, 0x33, 0xDB, 0x89, 0x9C, 0x24, 0xA8, + 0x00, 0x00, 0x00, 0x48, 0x85, 0xF6, 0x74, 0x16, 0x45, 0x84, 0xFF, 0x74, 0x0E, 0x48, 0x89, 0x3E, + 0xEB, 0x07, 0x8B, 0x9C, 0x24, 0xA8, 0x00, 0x00, 0x00, 0xEB, 0x03, 0x48, 0x89, 0x3E, 0x8B, 0xC3, + 0x4C, 0x8D, 0x5C, 0x24, 0x60, 0x49, 0x8B, 0x5B, 0x20, 0x49, 0x8B, 0x73, 0x28, 0x49, 0x8B, 0x7B, + 0x30, 0x4D, 0x8B, 0x63, 0x38, 0x49, 0x8B, 0xE3, 0x41, 0x5F, 0x41, 0x5E, 0x41, 0x5D, 0xC3, 0xCC, + 0x5C, 0x00, 0x44, 0x00, 0x65, 0x00, 0x76, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x5C, 0x00, + 0x4B, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x48, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x72, 0x00, 0x32, 0x00, 0x00, 0x00, + 0x5C, 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x61, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x74, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x53, 0x00, 0x65, 0x00, 0x63, 0x00, 0x75, 0x00, 0x72, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, 0x00, + 0x4C, 0x00, 0x65, 0x00, 0x76, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, + 0x44, 0x00, 0x69, 0x00, 0x73, 0x00, 0x61, 0x00, 0x62, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x44, 0x00, + 0x79, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x50, 0x00, 0x72, 0x00, + 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x64, 0x00, 0x75, 0x00, 0x72, 0x00, 0x65, 0x00, 0x53, 0x00, + 0x63, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x44, 0x00, 0x79, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x63, 0x00, 0x43, 0x00, + 0x6F, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x69, 0x00, 0x67, 0x00, 0x75, 0x00, 0x72, 0x00, 0x61, 0x00, + 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x45, 0x00, 0x78, 0x00, 0x66, 0x00, 0x55, 0x00, 0x6E, 0x00, 0x62, 0x00, 0x6C, 0x00, 0x6F, 0x00, + 0x63, 0x00, 0x6B, 0x00, 0x50, 0x00, 0x75, 0x00, 0x73, 0x00, 0x68, 0x00, 0x4C, 0x00, 0x6F, 0x00, + 0x63, 0x00, 0x6B, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x4F, 0x00, 0x62, 0x00, 0x47, 0x00, 0x65, 0x00, 0x74, 0x00, 0x4F, 0x00, 0x62, 0x00, 0x6A, 0x00, + 0x65, 0x00, 0x63, 0x00, 0x74, 0x00, 0x54, 0x00, 0x79, 0x00, 0x70, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x73, 0x00, 0x41, 0x00, 0x63, 0x00, 0x71, 0x00, 0x75, 0x00, 0x69, 0x00, 0x72, 0x00, + 0x65, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x45, 0x00, 0x78, 0x00, 0x69, 0x00, 0x74, 0x00, 0x53, 0x00, 0x79, 0x00, 0x6E, 0x00, 0x63, 0x00, + 0x68, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x69, 0x00, 0x7A, 0x00, 0x61, 0x00, 0x74, 0x00, + 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x50, 0x00, 0x73, 0x00, 0x49, 0x00, 0x73, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x74, 0x00, + 0x65, 0x00, 0x63, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x50, 0x00, 0x73, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x61, 0x00, 0x73, 0x00, + 0x65, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x45, 0x00, 0x78, 0x00, 0x69, 0x00, 0x74, 0x00, 0x53, 0x00, 0x79, 0x00, 0x6E, 0x00, 0x63, 0x00, + 0x68, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x69, 0x00, 0x7A, 0x00, 0x61, 0x00, 0x74, 0x00, + 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x50, 0x00, 0x73, 0x00, 0x52, 0x00, 0x65, 0x00, 0x73, 0x00, 0x75, 0x00, 0x6D, 0x00, 0x65, 0x00, + 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x73, 0x00, 0x53, 0x00, 0x75, 0x00, 0x73, 0x00, 0x70, 0x00, 0x65, 0x00, 0x6E, 0x00, + 0x64, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, + 0x45, 0x00, 0x74, 0x00, 0x77, 0x00, 0x52, 0x00, 0x65, 0x00, 0x67, 0x00, 0x69, 0x00, 0x73, 0x00, + 0x74, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, + 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x40, 0x55, 0x48, 0x83, 0xEC, 0x30, 0x48, 0x8B, 0xEA, 0x4C, + 0x8D, 0x45, 0x70, 0x48, 0x8D, 0x55, 0x35, 0xE8, 0xB0, 0x81, 0xFF, 0xFF, 0x48, 0x83, 0xC4, 0x30, + 0x5D, 0xC3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x05, 0xF1, 0xA0, 0xFF, 0xFF, 0x48, + 0xBA, 0x32, 0xA2, 0xDF, 0x2D, 0x99, 0x2B, 0x00, 0x00, 0x48, 0x85, 0xC0, 0x74, 0x05, 0x48, 0x3B, + 0xC2, 0x75, 0x2F, 0x48, 0x8D, 0x0D, 0xD6, 0xA0, 0xFF, 0xFF, 0x48, 0xB8, 0x20, 0x03, 0x00, 0x00, + 0x80, 0xF7, 0xFF, 0xFF, 0x48, 0x8B, 0x00, 0x48, 0x33, 0xC1, 0x48, 0xB9, 0xFF, 0xFF, 0xFF, 0xFF, + 0xFF, 0xFF, 0x00, 0x00, 0x48, 0x23, 0xC1, 0x48, 0x0F, 0x44, 0xC2, 0x48, 0x89, 0x05, 0xAE, 0xA0, + 0xFF, 0xFF, 0x48, 0xF7, 0xD0, 0x48, 0x89, 0x05, 0xAC, 0xA0, 0xFF, 0xFF, 0xC3, 0xCC, 0xCC, 0xCC, + 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x83, 0xEC, 0x28, 0x4C, 0x8B, 0xC2, 0x4C, 0x8B, 0xC9, 0xE8, 0x95, + 0xFF, 0xFF, 0xFF, 0x49, 0x8B, 0xD0, 0x49, 0x8B, 0xC9, 0x48, 0x83, 0xC4, 0x28, 0xE9, 0x86, 0xBF, + 0xFF, 0xFF, 0xCC, 0xCC, 0xB0, 0xA0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF4, 0xA8, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF0, 0xA2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1C, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x46, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x56, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x72, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8E, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA4, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xBC, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCE, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE2, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEE, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xFE, 0xA3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x22, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4E, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x74, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8C, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xA6, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBA, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xCE, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE2, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF8, 0xA4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0E, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x2A, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3A, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x54, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x88, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xBE, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xDA, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xF2, 0xA5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0A, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x28, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x52, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x6C, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9E, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xB8, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xE8, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFE, 0xA6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1A, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2E, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x42, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x62, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x8A, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA0, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xBA, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xD4, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xEC, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFC, 0xA7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x1A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x4C, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x62, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x72, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8A, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xAA, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xD0, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xE4, 0xA8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x02, 0xA9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x73, 0x00, 0x45, 0x78, 0x41, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x50, 0x6F, 0x6F, 0x6C, + 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x00, 0x8B, 0x00, 0x45, 0x78, 0x46, 0x72, 0x65, 0x65, + 0x50, 0x6F, 0x6F, 0x6C, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x00, 0xBA, 0x05, 0x52, 0x74, + 0x6C, 0x49, 0x6E, 0x69, 0x74, 0x55, 0x6E, 0x69, 0x63, 0x6F, 0x64, 0x65, 0x53, 0x74, 0x72, 0x69, + 0x6E, 0x67, 0x00, 0x00, 0xE3, 0x01, 0x49, 0x6F, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x00, 0x00, 0xB6, 0x04, 0x50, 0x72, 0x6F, 0x62, 0x65, 0x46, 0x6F, 0x72, + 0x57, 0x72, 0x69, 0x74, 0x65, 0x00, 0x82, 0x07, 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6D, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x00, 0x00, 0x83, 0x07, 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x56, 0x61, 0x6C, 0x75, 0x65, + 0x4B, 0x65, 0x79, 0x00, 0x12, 0x07, 0x5A, 0x77, 0x43, 0x6C, 0x6F, 0x73, 0x65, 0x00, 0xA3, 0x02, + 0x49, 0x6F, 0x66, 0x43, 0x6F, 0x6D, 0x70, 0x6C, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x00, 0x00, 0xC5, 0x04, 0x50, 0x73, 0x47, 0x65, 0x74, 0x43, 0x75, 0x72, 0x72, 0x65, + 0x6E, 0x74, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x00, 0xCE, 0x01, 0x49, 0x6F, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x00, 0x00, 0xA0, 0x06, + 0x53, 0x65, 0x50, 0x72, 0x69, 0x76, 0x69, 0x6C, 0x65, 0x67, 0x65, 0x43, 0x68, 0x65, 0x63, 0x6B, + 0x00, 0x00, 0x4E, 0x07, 0x5A, 0x77, 0x4F, 0x70, 0x65, 0x6E, 0x4B, 0x65, 0x79, 0x00, 0xB5, 0x04, + 0x50, 0x72, 0x6F, 0x62, 0x65, 0x46, 0x6F, 0x72, 0x52, 0x65, 0x61, 0x64, 0x00, 0x00, 0xAE, 0x05, + 0x52, 0x74, 0x6C, 0x47, 0x65, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6F, 0x6E, 0x00, 0x3F, 0x05, + 0x52, 0x74, 0x6C, 0x43, 0x6F, 0x6D, 0x70, 0x61, 0x72, 0x65, 0x4D, 0x65, 0x6D, 0x6F, 0x72, 0x79, + 0x00, 0x00, 0xBF, 0x03, 0x4D, 0x6D, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x52, + 0x6F, 0x75, 0x74, 0x69, 0x6E, 0x65, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x00, 0xFF, 0x04, + 0x50, 0x73, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x54, 0x79, 0x70, 0x65, 0x00, 0x76, 0x04, + 0x4F, 0x62, 0x4F, 0x70, 0x65, 0x6E, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x42, 0x79, 0x4E, 0x61, + 0x6D, 0x65, 0x00, 0x00, 0x7C, 0x07, 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x4F, 0x62, 0x6A, + 0x65, 0x63, 0x74, 0x00, 0x7A, 0x05, 0x52, 0x74, 0x6C, 0x45, 0x71, 0x75, 0x61, 0x6C, 0x55, 0x6E, + 0x69, 0x63, 0x6F, 0x64, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x81, 0x03, 0x4B, 0x65, + 0x55, 0x6E, 0x73, 0x74, 0x61, 0x63, 0x6B, 0x44, 0x65, 0x74, 0x61, 0x63, 0x68, 0x50, 0x72, 0x6F, + 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, 0x83, 0x00, 0x45, 0x78, 0x45, 0x6E, 0x75, 0x6D, 0x48, 0x61, + 0x6E, 0x64, 0x6C, 0x65, 0x54, 0x61, 0x62, 0x6C, 0x65, 0x00, 0x7A, 0x04, 0x4F, 0x62, 0x51, 0x75, + 0x65, 0x72, 0x79, 0x4E, 0x61, 0x6D, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0xF2, 0x01, + 0x49, 0x6F, 0x46, 0x69, 0x6C, 0x65, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x00, 0x00, 0xEC, 0x01, 0x49, 0x6F, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x4F, 0x62, 0x6A, 0x65, + 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x00, 0x00, 0x04, 0x02, 0x49, 0x6F, 0x47, 0x65, 0x74, 0x43, + 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x7C, 0x04, + 0x4F, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x4F, 0x62, 0x6A, 0x65, 0x63, + 0x74, 0x42, 0x79, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x00, 0x65, 0x04, 0x4F, 0x62, 0x43, 0x6C, + 0x6F, 0x73, 0x65, 0x48, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x00, 0xF2, 0x04, 0x50, 0x73, 0x49, 0x6E, + 0x69, 0x74, 0x69, 0x61, 0x6C, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6D, 0x50, 0x72, 0x6F, 0x63, 0x65, + 0x73, 0x73, 0x00, 0x00, 0x84, 0x04, 0x4F, 0x62, 0x53, 0x65, 0x74, 0x48, 0x61, 0x6E, 0x64, 0x6C, + 0x65, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x00, 0x73, 0x07, 0x5A, 0x77, + 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x88, 0x04, 0x4F, 0x62, 0x66, 0x44, 0x65, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x00, + 0x72, 0x00, 0x45, 0x78, 0x41, 0x6C, 0x6C, 0x6F, 0x63, 0x61, 0x74, 0x65, 0x50, 0x6F, 0x6F, 0x6C, + 0x57, 0x69, 0x74, 0x68, 0x51, 0x75, 0x6F, 0x74, 0x61, 0x54, 0x61, 0x67, 0x00, 0x00, 0x75, 0x07, + 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, + 0x6F, 0x6E, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, 0x77, 0x04, 0x4F, 0x62, 0x4F, 0x70, + 0x65, 0x6E, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x42, 0x79, 0x50, 0x6F, 0x69, 0x6E, 0x74, 0x65, + 0x72, 0x00, 0x77, 0x03, 0x4B, 0x65, 0x53, 0x74, 0x61, 0x63, 0x6B, 0x41, 0x74, 0x74, 0x61, 0x63, + 0x68, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, 0x64, 0x00, 0x45, 0x78, 0x41, 0x63, + 0x71, 0x75, 0x69, 0x72, 0x65, 0x52, 0x75, 0x6E, 0x64, 0x6F, 0x77, 0x6E, 0x50, 0x72, 0x6F, 0x74, + 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0xFC, 0x04, 0x50, 0x73, 0x4C, 0x6F, 0x6F, 0x6B, + 0x75, 0x70, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x42, 0x79, 0x50, 0x72, 0x6F, 0x63, 0x65, + 0x73, 0x73, 0x49, 0x64, 0x00, 0x00, 0xFA, 0x04, 0x50, 0x73, 0x4A, 0x6F, 0x62, 0x54, 0x79, 0x70, + 0x65, 0x00, 0x02, 0x05, 0x50, 0x73, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x50, + 0x72, 0x69, 0x6D, 0x61, 0x72, 0x79, 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0xB9, 0x06, 0x53, 0x65, + 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x00, + 0xBE, 0x00, 0x45, 0x78, 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x52, 0x75, 0x6E, 0x64, 0x6F, + 0x77, 0x6E, 0x50, 0x72, 0x6F, 0x74, 0x65, 0x63, 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0xA3, 0x07, + 0x5A, 0x77, 0x53, 0x65, 0x74, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, + 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0xDE, 0x04, 0x50, 0x73, 0x47, 0x65, 0x74, 0x50, + 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x4A, 0x6F, 0x62, 0x00, 0xFD, 0x04, 0x50, 0x73, 0x4C, 0x6F, + 0x6F, 0x6B, 0x75, 0x70, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x54, 0x68, 0x72, 0x65, 0x61, + 0x64, 0x42, 0x79, 0x43, 0x69, 0x64, 0x00, 0x00, 0xB1, 0x07, 0x5A, 0x77, 0x54, 0x65, 0x72, 0x6D, + 0x69, 0x6E, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x00, 0xBF, 0x04, + 0x50, 0x73, 0x44, 0x65, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6E, 0x63, 0x65, 0x50, 0x72, 0x69, + 0x6D, 0x61, 0x72, 0x79, 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x7D, 0x02, 0x49, 0x6F, 0x54, 0x68, + 0x72, 0x65, 0x61, 0x64, 0x54, 0x6F, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 0x73, 0x00, 0x69, 0x06, + 0x52, 0x74, 0x6C, 0x57, 0x61, 0x6C, 0x6B, 0x46, 0x72, 0x61, 0x6D, 0x65, 0x43, 0x68, 0x61, 0x69, + 0x6E, 0x00, 0xF1, 0x02, 0x4B, 0x65, 0x49, 0x6E, 0x69, 0x74, 0x69, 0x61, 0x6C, 0x69, 0x7A, 0x65, + 0x41, 0x70, 0x63, 0x00, 0x65, 0x03, 0x4B, 0x65, 0x53, 0x65, 0x74, 0x45, 0x76, 0x65, 0x6E, 0x74, + 0x00, 0x00, 0x05, 0x03, 0x4B, 0x65, 0x49, 0x6E, 0x73, 0x65, 0x72, 0x74, 0x51, 0x75, 0x65, 0x75, + 0x65, 0x41, 0x70, 0x63, 0x00, 0x00, 0xF7, 0x02, 0x4B, 0x65, 0x49, 0x6E, 0x69, 0x74, 0x69, 0x61, + 0x6C, 0x69, 0x7A, 0x65, 0x45, 0x76, 0x65, 0x6E, 0x74, 0x00, 0x0E, 0x05, 0x50, 0x73, 0x53, 0x65, + 0x74, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, + 0xEF, 0x04, 0x50, 0x73, 0x47, 0x65, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x57, 0x69, 0x6E, + 0x33, 0x32, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, 0xA5, 0x07, 0x5A, 0x77, 0x53, 0x65, + 0x74, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x54, 0x68, 0x72, 0x65, + 0x61, 0x64, 0x00, 0x00, 0x87, 0x03, 0x4B, 0x65, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6F, 0x72, 0x53, + 0x69, 0x6E, 0x67, 0x6C, 0x65, 0x4F, 0x62, 0x6A, 0x65, 0x63, 0x74, 0x00, 0x1F, 0x05, 0x50, 0x73, + 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x00, 0x00, 0xB8, 0x04, 0x50, 0x73, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6E, 0x49, 0x6D, 0x70, 0x65, 0x72, 0x73, 0x6F, 0x6E, 0x61, 0x74, + 0x69, 0x6F, 0x6E, 0x54, 0x6F, 0x6B, 0x65, 0x6E, 0x00, 0x00, 0xC3, 0x04, 0x50, 0x73, 0x47, 0x65, + 0x74, 0x43, 0x6F, 0x6E, 0x74, 0x65, 0x78, 0x74, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x00, 0x00, + 0xFE, 0x04, 0x50, 0x73, 0x4C, 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, + 0x42, 0x79, 0x54, 0x68, 0x72, 0x65, 0x61, 0x64, 0x49, 0x64, 0x00, 0x00, 0xEE, 0x03, 0x4D, 0x6D, + 0x55, 0x6E, 0x6D, 0x61, 0x70, 0x4C, 0x6F, 0x63, 0x6B, 0x65, 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, + 0x00, 0x00, 0xAF, 0x00, 0x45, 0x78, 0x52, 0x61, 0x69, 0x73, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x00, 0xC2, 0x03, 0x4D, 0x6D, 0x48, 0x69, 0x67, 0x68, 0x65, 0x73, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x00, 0x00, 0xD0, 0x03, 0x4D, 0x6D, 0x4D, 0x61, + 0x70, 0x4C, 0x6F, 0x63, 0x6B, 0x65, 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, 0x53, 0x70, 0x65, 0x63, + 0x69, 0x66, 0x79, 0x43, 0x61, 0x63, 0x68, 0x65, 0x00, 0x00, 0xDC, 0x03, 0x4D, 0x6D, 0x50, 0x72, + 0x6F, 0x62, 0x65, 0x41, 0x6E, 0x64, 0x4C, 0x6F, 0x63, 0x6B, 0x50, 0x61, 0x67, 0x65, 0x73, 0x00, + 0xEC, 0x03, 0x4D, 0x6D, 0x55, 0x6E, 0x6C, 0x6F, 0x63, 0x6B, 0x50, 0x61, 0x67, 0x65, 0x73, 0x00, + 0xC3, 0x03, 0x4D, 0x6D, 0x49, 0x73, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x56, 0x61, 0x6C, + 0x69, 0x64, 0x00, 0x00, 0xC8, 0x02, 0x4B, 0x65, 0x42, 0x75, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6B, + 0x45, 0x78, 0x00, 0x00, 0x6E, 0x74, 0x6F, 0x73, 0x6B, 0x72, 0x6E, 0x6C, 0x2E, 0x65, 0x78, 0x65, + 0x00, 0x00, 0xBD, 0x07, 0x5F, 0x5F, 0x43, 0x5F, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, + 0x5F, 0x68, 0x61, 0x6E, 0x64, 0x6C, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x09, 0x04, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x60, 0xB0, 0x00, 0x00, 0x98, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x02, 0x34, 0x00, 0x00, 0x00, 0x56, 0x00, 0x53, 0x00, 0x5F, 0x00, 0x56, 0x00, 0x45, 0x00, + 0x52, 0x00, 0x53, 0x00, 0x49, 0x00, 0x4F, 0x00, 0x4E, 0x00, 0x5F, 0x00, 0x49, 0x00, 0x4E, 0x00, + 0x46, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBD, 0x04, 0xEF, 0xFE, 0x00, 0x00, 0x01, 0x00, + 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF8, 0x01, 0x00, 0x00, + 0x01, 0x00, 0x53, 0x00, 0x74, 0x00, 0x72, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x46, 0x00, + 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x49, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x6F, 0x00, 0x00, 0x00, + 0xD4, 0x01, 0x00, 0x00, 0x01, 0x00, 0x30, 0x00, 0x34, 0x00, 0x30, 0x00, 0x39, 0x00, 0x30, 0x00, + 0x34, 0x00, 0x45, 0x00, 0x34, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x05, 0x00, 0x01, 0x00, 0x43, 0x00, + 0x6F, 0x00, 0x6D, 0x00, 0x70, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x79, 0x00, 0x4E, 0x00, 0x61, 0x00, + 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x77, 0x00, 0x6A, 0x00, 0x33, 0x00, 0x32, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x46, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6C, 0x00, + 0x65, 0x00, 0x44, 0x00, 0x65, 0x00, 0x73, 0x00, 0x63, 0x00, 0x72, 0x00, 0x69, 0x00, 0x70, 0x00, + 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x50, 0x00, + 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x48, 0x00, 0x61, 0x00, + 0x63, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x00, 0x04, 0x00, + 0x01, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, + 0x73, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x00, 0x2E, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x64, 0x00, 0x20, 0x00, 0x01, 0x00, 0x4C, 0x00, 0x65, 0x00, 0x67, 0x00, + 0x61, 0x00, 0x6C, 0x00, 0x43, 0x00, 0x6F, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, + 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, + 0x6E, 0x00, 0x73, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x75, 0x00, 0x6E, 0x00, 0x64, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x47, 0x00, + 0x4E, 0x00, 0x55, 0x00, 0x20, 0x00, 0x47, 0x00, 0x50, 0x00, 0x4C, 0x00, 0x2C, 0x00, 0x20, 0x00, + 0x76, 0x00, 0x33, 0x00, 0x2E, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x13, 0x00, 0x01, 0x00, 0x4F, 0x00, + 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6C, 0x00, 0x46, 0x00, + 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x61, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00, + 0x6B, 0x00, 0x70, 0x00, 0x72, 0x00, 0x6F, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, + 0x68, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6B, 0x00, 0x65, 0x00, 0x72, 0x00, 0x2E, 0x00, 0x73, 0x00, + 0x79, 0x00, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x0F, 0x00, 0x01, 0x00, 0x50, 0x00, + 0x72, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x75, 0x00, 0x63, 0x00, 0x74, 0x00, 0x4E, 0x00, 0x61, 0x00, + 0x6D, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4B, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6F, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x73, 0x00, 0x48, 0x00, 0x61, 0x00, 0x63, 0x00, 0x6B, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2C, 0x00, 0x04, 0x00, 0x01, 0x00, 0x50, 0x00, + 0x72, 0x00, 0x6F, 0x00, 0x64, 0x00, 0x75, 0x00, 0x63, 0x00, 0x74, 0x00, 0x56, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x00, 0x00, 0x32, 0x00, 0x2E, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x56, 0x00, 0x61, 0x00, 0x72, 0x00, + 0x46, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x65, 0x00, 0x49, 0x00, 0x6E, 0x00, 0x66, 0x00, 0x6F, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x04, 0x00, 0x00, 0x00, 0x54, 0x00, 0x72, 0x00, 0x61, 0x00, + 0x6E, 0x00, 0x73, 0x00, 0x6C, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6F, 0x00, 0x6E, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x09, 0x04, 0xE4, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x98, 0x24, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x30, 0x82, 0x24, 0x8B, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02, 0xA0, 0x82, 0x24, 0x7C, 0x30, 0x82, 0x24, 0x78, 0x02, + 0x01, 0x01, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x30, + 0x4C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xA0, 0x3E, 0x30, + 0x3C, 0x30, 0x17, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0F, 0x30, + 0x09, 0x03, 0x01, 0x00, 0xA0, 0x04, 0xA2, 0x02, 0x80, 0x00, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, + 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14, 0x61, 0xB5, 0x5B, 0xB7, 0xC1, 0x11, 0xF9, + 0x3B, 0xD3, 0xEA, 0x9A, 0xC7, 0x15, 0x91, 0xE1, 0xA6, 0xB8, 0x9F, 0xEE, 0xE1, 0xA0, 0x82, 0x1F, + 0xDE, 0x30, 0x82, 0x05, 0x3B, 0x30, 0x82, 0x03, 0x23, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0A, + 0x61, 0x20, 0x4D, 0xB4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x27, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, + 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, + 0x08, 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 0x31, 0x10, 0x30, + 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, + 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, + 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x31, + 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, + 0x6F, 0x66, 0x74, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x31, + 0x30, 0x34, 0x31, 0x35, 0x31, 0x39, 0x34, 0x35, 0x33, 0x33, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, + 0x34, 0x31, 0x35, 0x31, 0x39, 0x35, 0x35, 0x33, 0x33, 0x5A, 0x30, 0x6C, 0x31, 0x0B, 0x30, 0x09, + 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, + 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, + 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x2B, 0x30, 0x29, 0x06, + 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, + 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x45, 0x56, + 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, + 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC6, 0xCC, 0xE5, 0x73, 0xE6, 0xFB, 0xD4, + 0xBB, 0xE5, 0x2D, 0x2D, 0x32, 0xA6, 0xDF, 0xE5, 0x81, 0x3F, 0xC9, 0xCD, 0x25, 0x49, 0xB6, 0x71, + 0x2A, 0xC3, 0xD5, 0x94, 0x34, 0x67, 0xA2, 0x0A, 0x1C, 0xB0, 0x5F, 0x69, 0xA6, 0x40, 0xB1, 0xC4, + 0xB7, 0xB2, 0x8F, 0xD0, 0x98, 0xA4, 0xA9, 0x41, 0x59, 0x3A, 0xD3, 0xDC, 0x94, 0xD6, 0x3C, 0xDB, + 0x74, 0x38, 0xA4, 0x4A, 0xCC, 0x4D, 0x25, 0x82, 0xF7, 0x4A, 0xA5, 0x53, 0x12, 0x38, 0xEE, 0xF3, + 0x49, 0x6D, 0x71, 0x91, 0x7E, 0x63, 0xB6, 0xAB, 0xA6, 0x5F, 0xC3, 0xA4, 0x84, 0xF8, 0x4F, 0x62, + 0x51, 0xBE, 0xF8, 0xC5, 0xEC, 0xDB, 0x38, 0x92, 0xE3, 0x06, 0xE5, 0x08, 0x91, 0x0C, 0xC4, 0x28, + 0x41, 0x55, 0xFB, 0xCB, 0x5A, 0x89, 0x15, 0x7E, 0x71, 0xE8, 0x35, 0xBF, 0x4D, 0x72, 0x09, 0x3D, + 0xBE, 0x3A, 0x38, 0x50, 0x5B, 0x77, 0x31, 0x1B, 0x8D, 0xB3, 0xC7, 0x24, 0x45, 0x9A, 0xA7, 0xAC, + 0x6D, 0x00, 0x14, 0x5A, 0x04, 0xB7, 0xBA, 0x13, 0xEB, 0x51, 0x0A, 0x98, 0x41, 0x41, 0x22, 0x4E, + 0x65, 0x61, 0x87, 0x81, 0x41, 0x50, 0xA6, 0x79, 0x5C, 0x89, 0xDE, 0x19, 0x4A, 0x57, 0xD5, 0x2E, + 0xE6, 0x5D, 0x1C, 0x53, 0x2C, 0x7E, 0x98, 0xCD, 0x1A, 0x06, 0x16, 0xA4, 0x68, 0x73, 0xD0, 0x34, + 0x04, 0x13, 0x5C, 0xA1, 0x71, 0xD3, 0x5A, 0x7C, 0x55, 0xDB, 0x5E, 0x64, 0xE1, 0x37, 0x87, 0x30, + 0x56, 0x04, 0xE5, 0x11, 0xB4, 0x29, 0x80, 0x12, 0xF1, 0x79, 0x39, 0x88, 0xA2, 0x02, 0x11, 0x7C, + 0x27, 0x66, 0xB7, 0x88, 0xB7, 0x78, 0xF2, 0xCA, 0x0A, 0xA8, 0x38, 0xAB, 0x0A, 0x64, 0xC2, 0xBF, + 0x66, 0x5D, 0x95, 0x84, 0xC1, 0xA1, 0x25, 0x1E, 0x87, 0x5D, 0x1A, 0x50, 0x0B, 0x20, 0x12, 0xCC, + 0x41, 0xBB, 0x6E, 0x0B, 0x51, 0x38, 0xB8, 0x4B, 0xCB, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81, + 0xCB, 0x30, 0x81, 0xC8, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x0A, 0x30, 0x08, 0x30, + 0x06, 0x06, 0x04, 0x55, 0x1D, 0x20, 0x00, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 0x04, + 0x03, 0x02, 0x01, 0x86, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x05, + 0x30, 0x03, 0x01, 0x01, 0xFF, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, + 0xB1, 0x3E, 0xC3, 0x69, 0x03, 0xF8, 0xBF, 0x47, 0x01, 0xD4, 0x98, 0x26, 0x1A, 0x08, 0x02, 0xEF, + 0x63, 0x64, 0x2B, 0xC3, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, + 0x14, 0x62, 0xFB, 0x0A, 0x21, 0x5B, 0x7F, 0x43, 0x6E, 0x11, 0xDA, 0x09, 0x54, 0x50, 0x6B, 0xF5, + 0xD2, 0x96, 0x71, 0xF1, 0x9E, 0x30, 0x55, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x4E, 0x30, 0x4C, + 0x30, 0x4A, 0xA0, 0x48, 0xA0, 0x46, 0x86, 0x44, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, + 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, + 0x2F, 0x70, 0x6B, 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 0x74, + 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x43, 0x6F, 0x64, 0x65, 0x56, + 0x65, 0x72, 0x69, 0x66, 0x52, 0x6F, 0x6F, 0x74, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x0D, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, + 0x20, 0x8C, 0xC1, 0x59, 0xED, 0x6F, 0x9C, 0x6B, 0x2D, 0xC1, 0x4A, 0x3E, 0x75, 0x1D, 0x45, 0x4C, + 0x41, 0x50, 0x1C, 0xBD, 0x80, 0xEA, 0xD9, 0xB0, 0x92, 0x8B, 0x06, 0x2A, 0x13, 0x3F, 0x53, 0x16, + 0x9E, 0x56, 0x39, 0x6A, 0x8A, 0x63, 0xB6, 0x78, 0x24, 0x79, 0xF5, 0x7D, 0xB8, 0xB9, 0x47, 0xA1, + 0x0A, 0x96, 0xC2, 0xF6, 0xCB, 0xBD, 0xA2, 0x66, 0x9F, 0x06, 0xE1, 0xAC, 0xD2, 0x79, 0x09, 0x0E, + 0xFD, 0x3C, 0xDC, 0xAC, 0x02, 0x0C, 0x70, 0xAF, 0x3F, 0x1B, 0xEC, 0x78, 0x7E, 0xD4, 0xEB, 0x4B, + 0x05, 0x60, 0x26, 0xD9, 0x73, 0x61, 0x91, 0x21, 0xED, 0xB0, 0x68, 0x63, 0xE0, 0x97, 0x12, 0xAB, + 0x6F, 0xA0, 0x12, 0xED, 0xD9, 0x9F, 0xD2, 0xDA, 0x27, 0x3C, 0xB3, 0xE4, 0x56, 0xF9, 0xD1, 0xD4, + 0x81, 0x0F, 0x71, 0xBD, 0x42, 0x7C, 0xA6, 0x89, 0xDC, 0xCD, 0xD5, 0xBD, 0x95, 0xA2, 0xAB, 0xF1, + 0x93, 0x11, 0x7D, 0xE8, 0xAC, 0x31, 0x29, 0xA8, 0x5D, 0x66, 0x70, 0x41, 0x9D, 0xFC, 0x75, 0xC9, + 0xD5, 0xB3, 0x1A, 0x39, 0x2A, 0xD0, 0x85, 0x05, 0x50, 0x8B, 0xAC, 0x91, 0xCA, 0xC4, 0x93, 0xCB, + 0x71, 0xA5, 0x9D, 0xA4, 0x94, 0x6F, 0x58, 0x0C, 0xFA, 0x6E, 0x20, 0xC4, 0x08, 0x31, 0xB5, 0x85, + 0x9D, 0x7E, 0x81, 0xF9, 0xD2, 0x3D, 0xCA, 0x5B, 0x18, 0x85, 0x6C, 0x0A, 0x86, 0xEC, 0x22, 0x09, + 0x1B, 0xA5, 0x74, 0x34, 0x4F, 0x7F, 0x28, 0xBC, 0x95, 0x4A, 0xAB, 0x1D, 0xB6, 0x98, 0xB0, 0x5D, + 0x09, 0xA4, 0x77, 0x76, 0x7E, 0xEF, 0xA7, 0x8E, 0x5D, 0x84, 0xF6, 0x18, 0x24, 0xCB, 0xD1, 0x6D, + 0xA6, 0xC3, 0xA1, 0x9C, 0xC2, 0x10, 0x75, 0x80, 0xFF, 0x9D, 0x32, 0xFD, 0xE6, 0xCF, 0x43, 0x3A, + 0x82, 0xF7, 0xCE, 0x8F, 0xE1, 0x72, 0x2A, 0x9B, 0x62, 0xB7, 0x5F, 0xED, 0x95, 0x1A, 0x39, 0x5C, + 0x2F, 0x94, 0x6D, 0x48, 0xB7, 0x01, 0x5F, 0x33, 0x2F, 0xBB, 0xDC, 0x2D, 0x73, 0x34, 0x89, 0x04, + 0x42, 0x0A, 0x1C, 0x8B, 0x79, 0xF9, 0xA3, 0xFA, 0x17, 0xEF, 0xFA, 0xA1, 0x1A, 0x10, 0xDF, 0xE0, + 0xB2, 0xC1, 0x95, 0xEB, 0x5C, 0x0C, 0x05, 0x97, 0x3B, 0x35, 0x3E, 0x18, 0x88, 0x4D, 0xDB, 0x6C, + 0xBF, 0x24, 0x89, 0x8D, 0xC8, 0xBD, 0xD8, 0x9F, 0x7B, 0x39, 0x3A, 0x24, 0xA0, 0xD5, 0xDF, 0xD1, + 0xF3, 0x4A, 0x1A, 0x97, 0xF6, 0xA6, 0x6F, 0x7A, 0x1F, 0xB0, 0x90, 0xA9, 0xB3, 0xAC, 0x01, 0x39, + 0x91, 0xD3, 0x61, 0xB7, 0x64, 0xF1, 0x3E, 0x57, 0x38, 0x03, 0xAF, 0xCE, 0x7A, 0xD2, 0xB5, 0x90, + 0xF5, 0xAE, 0xDC, 0x39, 0x99, 0xD5, 0xB6, 0x3C, 0x97, 0xED, 0xA6, 0xCB, 0x16, 0xC7, 0x7D, 0x6B, + 0x2A, 0x4C, 0x90, 0x94, 0xE6, 0x4C, 0x54, 0xFD, 0x1E, 0xCD, 0x20, 0xEC, 0xCE, 0x68, 0x9C, 0x87, + 0x58, 0xE9, 0x61, 0x60, 0xBE, 0xEB, 0x0E, 0xC9, 0xD5, 0x19, 0x7D, 0x9F, 0xE9, 0x78, 0xBD, 0x0E, + 0xAC, 0x21, 0x75, 0x07, 0x8F, 0xA9, 0x6E, 0xE0, 0x8C, 0x6A, 0x2A, 0x6B, 0x9C, 0xE3, 0xE7, 0x65, + 0xBC, 0xBC, 0x2D, 0x3C, 0x6D, 0xDC, 0x04, 0xDC, 0x67, 0x45, 0x36, 0x32, 0xAF, 0x04, 0x81, 0xBC, + 0xA8, 0x00, 0x6E, 0x61, 0x4C, 0x95, 0xC5, 0x5C, 0xD4, 0x8E, 0x8E, 0x9F, 0x2F, 0xC1, 0x32, 0x74, + 0xBD, 0xBD, 0x11, 0x65, 0x03, 0x07, 0xCD, 0xEF, 0xB7, 0x5E, 0x02, 0x57, 0xDA, 0x86, 0xD4, 0x1A, + 0x28, 0x34, 0xAF, 0x88, 0x49, 0xB2, 0xCF, 0xA5, 0xDD, 0x82, 0x56, 0x6F, 0x68, 0xAA, 0x14, 0xE2, + 0x59, 0x54, 0xFE, 0xFF, 0xEA, 0xEE, 0xEF, 0xEA, 0x92, 0x70, 0x22, 0x60, 0x81, 0xE3, 0x25, 0x23, + 0xC0, 0x9F, 0xCC, 0x0F, 0x49, 0xB2, 0x35, 0xAA, 0x58, 0xC3, 0x3A, 0xC3, 0xD9, 0x16, 0x94, 0x10, + 0x30, 0x82, 0x06, 0x6A, 0x30, 0x82, 0x05, 0x52, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x03, + 0x01, 0x9A, 0x02, 0x3A, 0xFF, 0x58, 0xB1, 0x6B, 0xD6, 0xD5, 0xEA, 0xE6, 0x17, 0xF0, 0x66, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x62, + 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, + 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, + 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, + 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, + 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x43, 0x41, + 0x2D, 0x31, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x34, 0x31, 0x30, 0x32, 0x32, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x34, 0x31, 0x30, 0x32, 0x32, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5A, 0x30, 0x47, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, + 0x53, 0x31, 0x11, 0x30, 0x0F, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x08, 0x44, 0x69, 0x67, 0x69, + 0x43, 0x65, 0x72, 0x74, 0x31, 0x25, 0x30, 0x23, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1C, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x54, 0x69, 0x6D, 0x65, 0x73, 0x74, 0x61, 0x6D, + 0x70, 0x20, 0x52, 0x65, 0x73, 0x70, 0x6F, 0x6E, 0x64, 0x65, 0x72, 0x30, 0x82, 0x01, 0x22, 0x30, + 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, + 0x01, 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xA3, 0x64, 0x5D, 0xFC, + 0x7C, 0xB3, 0xE0, 0x82, 0x35, 0xE0, 0xE0, 0xF6, 0xC6, 0x2A, 0xE6, 0x49, 0x75, 0x3B, 0xCC, 0x6E, + 0xE0, 0x53, 0xA9, 0x9F, 0x1F, 0x64, 0x59, 0xE6, 0x7C, 0x6B, 0x7F, 0x6B, 0x8C, 0x9D, 0x55, 0xF8, + 0x92, 0xE3, 0x9E, 0xD5, 0x5A, 0x63, 0x5B, 0x02, 0x49, 0x50, 0xD9, 0x83, 0xCE, 0x6F, 0x66, 0xEE, + 0xDD, 0xCB, 0x85, 0xE9, 0x5F, 0xA5, 0xF9, 0xD4, 0x87, 0x74, 0x88, 0x44, 0x3B, 0x19, 0xC9, 0xE5, + 0xF5, 0x91, 0x9F, 0xC6, 0x14, 0x39, 0xAC, 0x24, 0xEA, 0xA8, 0x4B, 0x2C, 0x91, 0x89, 0xCC, 0x5E, + 0x28, 0xF4, 0x64, 0xB6, 0x50, 0xB7, 0xF5, 0x12, 0xB3, 0x73, 0x96, 0x0A, 0x67, 0xA3, 0xBE, 0x61, + 0x9F, 0xAE, 0xF3, 0xFD, 0x12, 0x78, 0x75, 0x0E, 0xA6, 0x5B, 0x14, 0xFD, 0x45, 0x23, 0x8E, 0x86, + 0x44, 0x55, 0x7D, 0x18, 0x86, 0x05, 0x8C, 0x55, 0x87, 0x79, 0x48, 0x46, 0xF7, 0xCA, 0x0E, 0x8D, + 0xA7, 0xDE, 0x4E, 0x5F, 0xE2, 0xA8, 0xB6, 0x2D, 0x59, 0x02, 0x61, 0x88, 0x61, 0x72, 0x18, 0x68, + 0xB9, 0xB8, 0x7C, 0xEE, 0xE6, 0xE7, 0x34, 0x2F, 0x31, 0x77, 0x81, 0x30, 0x1F, 0xBB, 0x36, 0x01, + 0x8D, 0xEF, 0x27, 0xE3, 0xF7, 0x9A, 0xF0, 0x4C, 0x31, 0x64, 0x8D, 0xE3, 0xEB, 0xFA, 0x19, 0x87, + 0xA8, 0x7E, 0xCF, 0xEC, 0x8C, 0x0C, 0x36, 0x5B, 0x7A, 0xC1, 0x7A, 0xB8, 0x78, 0xC7, 0xC9, 0x06, + 0x2E, 0x46, 0x10, 0xC8, 0x8D, 0xE8, 0x04, 0x60, 0xDB, 0xBC, 0x73, 0x74, 0xFA, 0x4E, 0xD8, 0xFE, + 0xAA, 0x40, 0xF1, 0xB2, 0xCE, 0x70, 0x46, 0x83, 0xE9, 0xDA, 0x40, 0xA1, 0x59, 0x3A, 0xD9, 0x15, + 0x09, 0x57, 0x99, 0x56, 0x30, 0x93, 0xF3, 0xC9, 0x61, 0xCC, 0xD0, 0x08, 0xCC, 0x6B, 0xEC, 0x62, + 0x42, 0x91, 0xAC, 0x02, 0xC0, 0xEF, 0xA4, 0xF0, 0x89, 0x11, 0x8F, 0x77, 0x02, 0x03, 0x01, 0x00, + 0x01, 0xA3, 0x82, 0x03, 0x35, 0x30, 0x82, 0x03, 0x31, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, + 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, + 0x01, 0x01, 0xFF, 0x04, 0x02, 0x30, 0x00, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x01, 0x01, + 0xFF, 0x04, 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, + 0x82, 0x01, 0xBF, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x82, 0x01, 0xB6, 0x30, 0x82, 0x01, 0xB2, + 0x30, 0x82, 0x01, 0xA1, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, 0x07, 0x01, 0x30, + 0x82, 0x01, 0x92, 0x30, 0x28, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, + 0x1C, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, + 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x50, 0x53, 0x30, 0x82, 0x01, + 0x64, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1E, + 0x82, 0x01, 0x52, 0x00, 0x41, 0x00, 0x6E, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, + 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, + 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, + 0x69, 0x00, 0x63, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6F, 0x00, + 0x6E, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, + 0x61, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, + 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, + 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x50, 0x00, 0x2F, 0x00, + 0x43, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, + 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x79, 0x00, + 0x69, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, + 0x79, 0x00, 0x20, 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6D, 0x00, + 0x65, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, + 0x68, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, + 0x6C, 0x00, 0x69, 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x74, 0x00, + 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, + 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, + 0x6F, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, + 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6E, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x2E, 0x30, 0x0B, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, + 0x03, 0x15, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x15, + 0x00, 0x12, 0x2B, 0x13, 0x98, 0xB2, 0x99, 0x07, 0xED, 0x1E, 0xDF, 0xA2, 0xBE, 0x57, 0x0D, 0x2B, + 0x67, 0x02, 0xCD, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x61, 0x5A, + 0x4D, 0x24, 0xB6, 0x49, 0x32, 0x9D, 0x4A, 0x2A, 0x79, 0x1A, 0x83, 0x4B, 0xF4, 0x1E, 0x89, 0xC1, + 0xCA, 0x7D, 0x30, 0x7D, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x76, 0x30, 0x74, 0x30, 0x38, 0xA0, + 0x36, 0xA0, 0x34, 0x86, 0x32, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x33, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x49, 0x44, 0x43, + 0x41, 0x2D, 0x31, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x38, 0xA0, 0x36, 0xA0, 0x34, 0x86, 0x32, 0x68, + 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x34, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x49, 0x44, 0x43, 0x41, 0x2D, 0x31, 0x2E, 0x63, 0x72, + 0x6C, 0x30, 0x77, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6B, 0x30, + 0x69, 0x30, 0x24, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, + 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x41, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x02, 0x86, 0x35, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x61, 0x63, 0x65, + 0x72, 0x74, 0x73, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, + 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, + 0x49, 0x44, 0x43, 0x41, 0x2D, 0x31, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x9D, 0x25, + 0x7E, 0x1B, 0x33, 0x4D, 0xB2, 0x26, 0x81, 0x5C, 0x9B, 0x86, 0xCE, 0x23, 0x20, 0x0F, 0x80, 0x87, + 0xE5, 0x88, 0xFF, 0xFF, 0xB1, 0xD4, 0x6A, 0x2C, 0x31, 0xED, 0x3A, 0x17, 0x19, 0x71, 0x17, 0xCD, + 0xA9, 0x1B, 0xBC, 0x5A, 0x16, 0x39, 0x00, 0x9D, 0xE3, 0x6C, 0x84, 0xE4, 0x5A, 0x40, 0xFB, 0xDE, + 0x06, 0x01, 0x8C, 0x37, 0xFA, 0x9B, 0xB1, 0x9D, 0x24, 0x7E, 0xFE, 0x20, 0xA4, 0x57, 0xAD, 0x5B, + 0xB7, 0x9A, 0xB0, 0x60, 0x26, 0xEA, 0x69, 0x57, 0x21, 0x5D, 0x34, 0x2F, 0x1F, 0x71, 0xB0, 0x83, + 0x94, 0x19, 0x05, 0x6B, 0x35, 0x90, 0x10, 0xA0, 0x7B, 0x97, 0xC7, 0xF6, 0x3F, 0xE7, 0xE2, 0x11, + 0x41, 0xA6, 0xBD, 0x62, 0xD9, 0xF0, 0x27, 0x3D, 0x38, 0x1D, 0x28, 0x6F, 0x3A, 0x52, 0x09, 0xF0, + 0xEC, 0x70, 0x62, 0xD3, 0x62, 0x4B, 0xB0, 0xE0, 0x73, 0xA6, 0x92, 0xC0, 0xD3, 0x8E, 0x31, 0xD8, + 0x2F, 0xE3, 0x6D, 0x17, 0x13, 0x06, 0xEE, 0xE4, 0x03, 0xB6, 0x14, 0xAB, 0xF3, 0x8F, 0x43, 0xA7, + 0x71, 0x9D, 0x21, 0xDD, 0x14, 0xCA, 0x15, 0x5D, 0x92, 0x41, 0xDA, 0xF9, 0x0F, 0x81, 0xD1, 0x99, + 0x74, 0x0D, 0x26, 0xC4, 0x0E, 0x7F, 0x1B, 0xB5, 0xF5, 0xA0, 0xF1, 0xC6, 0x77, 0x06, 0x28, 0x15, + 0xE9, 0xD8, 0x93, 0xE5, 0x55, 0x16, 0xF0, 0xBB, 0x0A, 0xAB, 0x1C, 0xDB, 0x5C, 0x48, 0x27, 0x66, + 0xC8, 0xA3, 0x8B, 0x0A, 0x1C, 0xE5, 0x95, 0xDA, 0xAE, 0xC4, 0x2E, 0x59, 0xA0, 0x61, 0xDD, 0xDA, + 0xF3, 0x6D, 0xA2, 0x61, 0xE9, 0x8A, 0x0B, 0x6D, 0xEC, 0x12, 0x18, 0xBD, 0xF7, 0x55, 0x54, 0x40, + 0x03, 0x92, 0x2B, 0x6B, 0xC2, 0x51, 0xC2, 0x0A, 0x48, 0xAF, 0xB0, 0xD4, 0x6E, 0xE0, 0xF4, 0x14, + 0x0A, 0x3A, 0x1B, 0xE3, 0x8F, 0x3D, 0xCA, 0xAF, 0x6A, 0x8D, 0x7B, 0xDC, 0xD8, 0x44, 0x30, 0x82, + 0x06, 0x96, 0x30, 0x82, 0x05, 0x7E, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x03, 0xE9, 0x01, + 0x7D, 0x54, 0xCD, 0x93, 0xF0, 0x94, 0xD0, 0xA2, 0xAB, 0x7F, 0xC0, 0xE3, 0xF5, 0x30, 0x0D, 0x06, + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x73, 0x31, 0x0B, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x32, 0x30, + 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, + 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x2D, + 0x31, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x33, 0x31, 0x30, 0x33, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x5A, 0x17, 0x0D, 0x31, 0x35, 0x31, 0x31, 0x30, 0x34, 0x31, 0x32, 0x30, 0x30, 0x30, 0x30, + 0x5A, 0x30, 0x64, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x41, 0x55, + 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0F, 0x4E, 0x65, 0x77, 0x20, 0x53, + 0x6F, 0x75, 0x74, 0x68, 0x20, 0x57, 0x61, 0x6C, 0x65, 0x73, 0x31, 0x0F, 0x30, 0x0D, 0x06, 0x03, + 0x55, 0x04, 0x07, 0x13, 0x06, 0x53, 0x79, 0x64, 0x6E, 0x65, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0B, 0x57, 0x65, 0x6E, 0x20, 0x4A, 0x69, 0x61, 0x20, 0x4C, 0x69, + 0x75, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0B, 0x57, 0x65, 0x6E, 0x20, + 0x4A, 0x69, 0x61, 0x20, 0x4C, 0x69, 0x75, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, + 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xD3, 0x1D, 0xC2, 0xE0, 0x3F, 0x42, 0x5C, 0xAD, + 0x9E, 0x41, 0x16, 0x88, 0xEF, 0x79, 0x4A, 0x73, 0x7D, 0x58, 0x94, 0xFB, 0xF5, 0xD6, 0xC5, 0x8B, + 0xB9, 0x81, 0x57, 0x59, 0x82, 0xAF, 0x2C, 0x3E, 0x87, 0xDA, 0xCF, 0x25, 0xC6, 0x34, 0x23, 0x33, + 0x95, 0xF7, 0x10, 0xAE, 0x18, 0xF7, 0xA6, 0xFF, 0x51, 0x42, 0xFF, 0xDA, 0x14, 0xE6, 0x2F, 0x01, + 0xCB, 0x3A, 0xA4, 0xB5, 0x0D, 0xDA, 0xE0, 0x33, 0x09, 0xC6, 0x57, 0xF3, 0x62, 0xE3, 0x57, 0x98, + 0x72, 0xBF, 0x88, 0x05, 0x90, 0x31, 0x3F, 0x45, 0xBE, 0x7F, 0x0A, 0x82, 0x16, 0x1D, 0xB9, 0xC3, + 0xF7, 0x00, 0x40, 0xD4, 0x37, 0x9C, 0xFA, 0x94, 0xAA, 0xDB, 0x22, 0xBC, 0x61, 0xA8, 0x75, 0xB6, + 0xC7, 0x45, 0x49, 0x16, 0xE1, 0xDE, 0xBA, 0x51, 0x50, 0x00, 0xF6, 0x76, 0xA6, 0x43, 0x27, 0xB0, + 0x3C, 0xE4, 0xA2, 0x21, 0x64, 0x38, 0x48, 0xAC, 0x89, 0x83, 0xF5, 0x2B, 0xFD, 0x41, 0xBB, 0x5A, + 0x30, 0xD3, 0xBF, 0x35, 0xCB, 0x89, 0xEB, 0x9C, 0x10, 0xC6, 0x5D, 0xD5, 0xE3, 0x6B, 0x2D, 0xE7, + 0xFD, 0x6C, 0xF9, 0xDA, 0xB3, 0x17, 0xFF, 0xC3, 0x82, 0xDA, 0x24, 0x4E, 0x76, 0x6D, 0xA5, 0x28, + 0x33, 0x52, 0x78, 0x27, 0x40, 0xFB, 0xFB, 0xF8, 0x6D, 0x38, 0x97, 0x03, 0x81, 0x83, 0x52, 0xDC, + 0xEC, 0x87, 0xA2, 0xE0, 0xAB, 0x3F, 0x87, 0xA9, 0x67, 0x5C, 0x5A, 0xDC, 0x21, 0x6A, 0x5B, 0x09, + 0x26, 0x1E, 0x19, 0x1F, 0x09, 0xD3, 0x83, 0x0C, 0x11, 0xA7, 0xCA, 0x7E, 0xBD, 0x71, 0x44, 0xCC, + 0x9B, 0xB9, 0x55, 0x67, 0xEE, 0x29, 0xE2, 0xC2, 0x2C, 0x57, 0x6C, 0xDD, 0xB0, 0x96, 0xB3, 0x06, + 0x59, 0x99, 0x0B, 0x92, 0x03, 0x24, 0xAE, 0xA3, 0x35, 0x27, 0xAA, 0x4B, 0x3A, 0xB8, 0xEA, 0x94, + 0xFD, 0xC9, 0x1A, 0xA9, 0xB7, 0xB6, 0xCC, 0x6B, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x03, + 0x33, 0x30, 0x82, 0x03, 0x2F, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 0x30, 0x16, + 0x80, 0x14, 0x97, 0x48, 0x03, 0xEB, 0x15, 0x08, 0x6B, 0xB9, 0xB2, 0x58, 0x23, 0xCC, 0x94, 0x2E, + 0xF1, 0xC6, 0x65, 0xD2, 0x64, 0x8E, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, + 0x14, 0xA8, 0xA3, 0x4D, 0x2A, 0x8E, 0xA5, 0x2E, 0x70, 0x45, 0xB6, 0xFA, 0x5B, 0xFA, 0xAD, 0x22, + 0x25, 0xED, 0xBA, 0x8B, 0x6C, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, + 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 0x0A, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x69, 0x06, 0x03, 0x55, 0x1D, + 0x1F, 0x04, 0x62, 0x30, 0x60, 0x30, 0x2E, 0xA0, 0x2C, 0xA0, 0x2A, 0x86, 0x28, 0x68, 0x74, 0x74, + 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x33, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x68, 0x61, 0x2D, 0x63, 0x73, 0x2D, 0x32, 0x30, 0x31, 0x31, + 0x61, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x2E, 0xA0, 0x2C, 0xA0, 0x2A, 0x86, 0x28, 0x68, 0x74, 0x74, + 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x34, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x68, 0x61, 0x2D, 0x63, 0x73, 0x2D, 0x32, 0x30, 0x31, 0x31, + 0x61, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x82, 0x01, 0xC4, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x82, + 0x01, 0xBB, 0x30, 0x82, 0x01, 0xB7, 0x30, 0x82, 0x01, 0xB3, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, + 0x86, 0xFD, 0x6C, 0x03, 0x01, 0x30, 0x82, 0x01, 0xA4, 0x30, 0x3A, 0x06, 0x08, 0x2B, 0x06, 0x01, + 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2E, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, + 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, + 0x73, 0x6C, 0x2D, 0x63, 0x70, 0x73, 0x2D, 0x72, 0x65, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x6F, 0x72, + 0x79, 0x2E, 0x68, 0x74, 0x6D, 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1E, 0x82, 0x01, 0x52, 0x00, 0x41, 0x00, 0x6E, 0x00, + 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, + 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x61, 0x00, 0x74, 0x00, + 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, + 0x74, 0x00, 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, + 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, + 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, + 0x44, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, + 0x20, 0x00, 0x43, 0x00, 0x50, 0x00, 0x2F, 0x00, 0x43, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, + 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, + 0x52, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x79, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x20, 0x00, + 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x41, 0x00, 0x67, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, + 0x77, 0x00, 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, + 0x6D, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x61, 0x00, 0x62, 0x00, + 0x69, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, + 0x64, 0x00, 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6E, 0x00, + 0x63, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, + 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, + 0x6E, 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2E, 0x30, 0x81, 0x86, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x7A, 0x30, 0x78, 0x30, 0x24, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, + 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x50, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, + 0x86, 0x44, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x73, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, + 0x6E, 0x63, 0x65, 0x43, 0x6F, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x43, 0x41, + 0x2D, 0x31, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, + 0x04, 0x02, 0x30, 0x00, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, + 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0xBB, 0xC0, 0x31, 0xB3, 0xDD, 0x6B, 0x1C, 0x6E, + 0xBE, 0xC7, 0x7B, 0x8D, 0xC1, 0xEC, 0xFA, 0x93, 0x81, 0x49, 0xC6, 0x4E, 0x0C, 0x95, 0x9E, 0x58, + 0x57, 0xDB, 0x5C, 0x28, 0xEF, 0x54, 0x9D, 0xDF, 0x0B, 0xE9, 0x20, 0xCC, 0xB7, 0xEC, 0x51, 0x5A, + 0xAE, 0xB1, 0x80, 0xA2, 0x8D, 0x64, 0xA1, 0xF4, 0x06, 0x5D, 0x38, 0xCB, 0x99, 0x7D, 0xB5, 0x92, + 0x95, 0xF1, 0x23, 0x85, 0x13, 0x92, 0x90, 0x3C, 0x67, 0x3E, 0xD6, 0xD1, 0xDB, 0x93, 0x0E, 0xC1, + 0x61, 0x8A, 0xDD, 0x99, 0x89, 0xF0, 0xF1, 0xFC, 0x8D, 0x06, 0xEC, 0x5A, 0x94, 0x52, 0x42, 0xCD, + 0x74, 0x32, 0xD6, 0x83, 0x8E, 0x33, 0xB4, 0xC3, 0xE4, 0x78, 0x4E, 0x75, 0x4B, 0x64, 0xDC, 0xE0, + 0x78, 0x68, 0x6A, 0xB2, 0xE6, 0x62, 0x68, 0x48, 0xFF, 0x7D, 0xCD, 0x6F, 0xB7, 0xEF, 0xEB, 0xFF, + 0xDF, 0xDA, 0xD1, 0xEE, 0xFC, 0x1E, 0x98, 0xF9, 0xC3, 0x38, 0xFF, 0x25, 0x65, 0xF0, 0x50, 0x39, + 0x17, 0x6B, 0x24, 0x14, 0x8A, 0x84, 0x16, 0x14, 0x63, 0x51, 0x57, 0xDA, 0x5F, 0x61, 0xA1, 0x7B, + 0xBD, 0x6D, 0x47, 0x98, 0x15, 0x71, 0x4E, 0x8D, 0x30, 0x67, 0xF0, 0x32, 0x0D, 0x5E, 0x8B, 0xFA, + 0xA6, 0xE3, 0x57, 0x31, 0x80, 0x49, 0x25, 0xDF, 0x9B, 0x85, 0xBA, 0x32, 0xC0, 0xD9, 0xF4, 0xCC, + 0xD4, 0x84, 0xD6, 0xD1, 0xB2, 0x79, 0xBA, 0xD0, 0xEF, 0x22, 0xB0, 0xDA, 0x37, 0x58, 0x26, 0xEA, + 0x2E, 0x11, 0x9D, 0x5C, 0x84, 0x8D, 0x9A, 0x92, 0x75, 0xB9, 0x3A, 0xBB, 0x08, 0x4C, 0x02, 0xAF, + 0x9F, 0x1B, 0x46, 0xC5, 0x35, 0x76, 0x52, 0xF1, 0x13, 0xF5, 0x56, 0xFD, 0xB9, 0xD1, 0x90, 0x02, + 0x23, 0x34, 0x15, 0x03, 0xF4, 0xE8, 0x9B, 0x98, 0xBA, 0xE1, 0x34, 0xF7, 0xCC, 0x9D, 0x64, 0x09, + 0xFC, 0xF7, 0x2D, 0x2C, 0x74, 0x6C, 0x71, 0x4A, 0x30, 0x82, 0x06, 0xC2, 0x30, 0x82, 0x05, 0xAA, + 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x02, 0xC4, 0xD1, 0xE5, 0x8A, 0x4A, 0x68, 0x0C, 0x56, + 0x8D, 0xA3, 0x04, 0x7E, 0x7E, 0x4D, 0x5F, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x6C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, + 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, + 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, + 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x2B, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, + 0x13, 0x22, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, + 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x45, 0x56, 0x20, 0x52, 0x6F, 0x6F, + 0x74, 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x31, 0x31, 0x30, 0x32, 0x31, 0x31, 0x31, 0x32, + 0x30, 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x36, 0x30, 0x32, 0x31, 0x30, 0x31, 0x32, 0x30, + 0x30, 0x30, 0x30, 0x5A, 0x30, 0x73, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x32, 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, + 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, + 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x2D, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, + 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xC5, 0xF9, 0x23, 0xE6, 0x94, 0x27, + 0xC4, 0x80, 0x14, 0xA4, 0x80, 0x32, 0x5F, 0x40, 0xA3, 0x8D, 0x6F, 0x70, 0xC0, 0xE5, 0x36, 0x71, + 0x71, 0x3A, 0x75, 0xA4, 0xAA, 0x1A, 0x92, 0x94, 0x89, 0x5E, 0xAC, 0x23, 0x71, 0xCB, 0x4E, 0x67, + 0x7D, 0x41, 0x3F, 0xAA, 0xE3, 0x4B, 0xB7, 0x7B, 0xBE, 0x9D, 0xC1, 0xA8, 0x38, 0x8F, 0x69, 0x2F, + 0x3A, 0x24, 0xE9, 0x77, 0x59, 0x12, 0xC7, 0x66, 0x04, 0x43, 0xC2, 0x0D, 0x26, 0x82, 0x89, 0x40, + 0x19, 0xF2, 0x2C, 0xEA, 0xE7, 0x4C, 0xE7, 0x7C, 0x05, 0x1A, 0xB8, 0xFF, 0x88, 0x09, 0x4F, 0x26, + 0x37, 0xEF, 0x3A, 0xA4, 0xFA, 0x22, 0x6C, 0x88, 0xC9, 0x4A, 0x1B, 0x61, 0xF2, 0xAE, 0x10, 0x5E, + 0x6F, 0xBC, 0xD1, 0x79, 0x9B, 0x59, 0x18, 0x60, 0xE5, 0xEE, 0x29, 0xB5, 0x03, 0x2A, 0xA4, 0xCE, + 0xF1, 0x83, 0x19, 0x4F, 0x69, 0x05, 0x73, 0x28, 0x09, 0xFB, 0x22, 0x10, 0x93, 0x22, 0xA0, 0x90, + 0x19, 0x1A, 0x4C, 0x31, 0xF2, 0xD3, 0x2B, 0xD8, 0x84, 0x43, 0xAF, 0x3C, 0x63, 0xFF, 0x98, 0xDB, + 0x20, 0xD2, 0x09, 0x2B, 0x54, 0xC1, 0xEA, 0xFD, 0x6A, 0x83, 0xE7, 0x10, 0xA3, 0x12, 0x71, 0xF5, + 0xD6, 0xD7, 0xE1, 0x12, 0x7A, 0xD5, 0xE0, 0x56, 0x5A, 0xCE, 0xEA, 0x01, 0x5B, 0x68, 0x65, 0x5B, + 0xC1, 0x3F, 0x58, 0x52, 0x33, 0xA9, 0x35, 0x61, 0x4E, 0x22, 0xCB, 0x81, 0xCA, 0x36, 0xA3, 0x12, + 0xCB, 0x06, 0xD6, 0xCF, 0x1B, 0x4D, 0x18, 0x7E, 0xB9, 0x92, 0xB9, 0x12, 0xCF, 0x40, 0x26, 0xD8, + 0x9A, 0x36, 0x85, 0xB3, 0x15, 0xAA, 0x47, 0x93, 0x84, 0x6B, 0x07, 0xBB, 0xBC, 0xD5, 0xB3, 0xDE, + 0x25, 0x00, 0x11, 0x89, 0x00, 0x68, 0xC1, 0x29, 0x3C, 0xEA, 0x3E, 0x2D, 0xEE, 0x50, 0xAB, 0xD7, + 0x1C, 0x30, 0x06, 0x78, 0x3C, 0xA5, 0x10, 0x23, 0x67, 0x91, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, + 0x82, 0x03, 0x57, 0x30, 0x82, 0x03, 0x53, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, + 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, + 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x82, 0x01, 0xC3, + 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x82, 0x01, 0xBA, 0x30, 0x82, 0x01, 0xB6, 0x30, 0x82, 0x01, + 0xB2, 0x06, 0x08, 0x60, 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, 0x03, 0x30, 0x82, 0x01, 0xA4, 0x30, + 0x3A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x2E, 0x68, 0x74, 0x74, + 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x73, 0x6C, 0x2D, 0x63, 0x70, 0x73, 0x2D, 0x72, 0x65, 0x70, + 0x6F, 0x73, 0x69, 0x74, 0x6F, 0x72, 0x79, 0x2E, 0x68, 0x74, 0x6D, 0x30, 0x82, 0x01, 0x64, 0x06, + 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x82, 0x01, 0x56, 0x1E, 0x82, 0x01, + 0x52, 0x00, 0x41, 0x00, 0x6E, 0x00, 0x79, 0x00, 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, 0x00, + 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, + 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, + 0x63, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x20, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x6E, 0x00, + 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, + 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, 0x00, 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, + 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, + 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, + 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, 0x43, 0x00, 0x50, 0x00, 0x2F, 0x00, 0x43, 0x00, + 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, 0x00, + 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x6C, 0x00, 0x79, 0x00, 0x69, 0x00, + 0x6E, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50, 0x00, 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, + 0x20, 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, 0x65, 0x00, 0x65, 0x00, 0x6D, 0x00, 0x65, 0x00, + 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, + 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6D, 0x00, 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6C, 0x00, + 0x69, 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, 0x00, + 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, + 0x20, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, 0x00, + 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x63, 0x00, + 0x65, 0x00, 0x2E, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30, + 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x7F, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x01, 0x01, 0x04, 0x73, 0x30, 0x71, 0x30, 0x24, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x49, 0x06, + 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x3D, 0x68, 0x74, 0x74, 0x70, 0x3A, + 0x2F, 0x2F, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, + 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, + 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6F, + 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x81, 0x8F, 0x06, 0x03, 0x55, 0x1D, 0x1F, + 0x04, 0x81, 0x87, 0x30, 0x81, 0x84, 0x30, 0x40, 0xA0, 0x3E, 0xA0, 0x3C, 0x86, 0x3A, 0x68, 0x74, + 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x33, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, + 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x48, + 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x45, 0x56, 0x52, 0x6F, + 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x40, 0xA0, 0x3E, 0xA0, 0x3C, 0x86, 0x3A, + 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x34, 0x2E, 0x64, 0x69, 0x67, 0x69, + 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x48, 0x69, 0x67, 0x68, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, 0x45, 0x56, + 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, + 0x0E, 0x04, 0x16, 0x04, 0x14, 0x97, 0x48, 0x03, 0xEB, 0x15, 0x08, 0x6B, 0xB9, 0xB2, 0x58, 0x23, + 0xCC, 0x94, 0x2E, 0xF1, 0xC6, 0x65, 0xD2, 0x64, 0x8E, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, + 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0xB1, 0x3E, 0xC3, 0x69, 0x03, 0xF8, 0xBF, 0x47, 0x01, 0xD4, + 0x98, 0x26, 0x1A, 0x08, 0x02, 0xEF, 0x63, 0x64, 0x2B, 0xC3, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x49, 0xEB, + 0x7C, 0x60, 0xBE, 0xAE, 0xEF, 0xC9, 0x7C, 0xB3, 0xC5, 0xBA, 0x4B, 0x64, 0xDF, 0x16, 0x69, 0xE2, + 0x86, 0xFA, 0x29, 0xD9, 0xDE, 0x98, 0x85, 0x7D, 0x40, 0x66, 0x26, 0x33, 0x2F, 0x44, 0x55, 0xAA, + 0xAA, 0x90, 0xE9, 0x35, 0x70, 0x0A, 0x34, 0xBE, 0xD3, 0xAE, 0x54, 0x2E, 0x8E, 0x65, 0x00, 0xD6, + 0x7A, 0x32, 0x20, 0x3E, 0x6C, 0x26, 0xB8, 0x98, 0xA9, 0x39, 0xB1, 0xBC, 0x95, 0xC7, 0xAA, 0xE9, + 0xF5, 0xEE, 0x46, 0x66, 0xC6, 0xB3, 0xE8, 0x12, 0xF8, 0xB3, 0x97, 0x9D, 0xFF, 0x74, 0x58, 0x82, + 0x34, 0x99, 0x75, 0x50, 0xAC, 0x44, 0x8F, 0xE8, 0x92, 0xCE, 0x7D, 0x8B, 0x0F, 0x31, 0x96, 0xC7, + 0xDC, 0xD3, 0x11, 0x30, 0x98, 0x74, 0x16, 0xC6, 0xE5, 0x6B, 0x45, 0x76, 0xA3, 0x94, 0x01, 0xCD, + 0x33, 0x00, 0x7A, 0x48, 0xF6, 0x6F, 0x86, 0x31, 0xC9, 0x56, 0x2B, 0x33, 0x22, 0xD5, 0xF8, 0x01, + 0xB6, 0x44, 0xCE, 0x8C, 0xB4, 0xCA, 0x88, 0xD2, 0xE4, 0x16, 0xE3, 0xE7, 0xF6, 0xE2, 0x3E, 0xE1, + 0x09, 0xC0, 0x9D, 0x79, 0x43, 0x43, 0x7F, 0x55, 0x5C, 0x05, 0xAD, 0x93, 0x10, 0xC6, 0x2C, 0x0D, + 0x6B, 0xC0, 0x9E, 0xEA, 0x78, 0xE5, 0xD2, 0x77, 0xD6, 0xB8, 0xDA, 0x9A, 0x98, 0x7F, 0xBA, 0x4C, + 0x92, 0x2B, 0x9D, 0xBD, 0xA4, 0x88, 0xB1, 0xDD, 0xAF, 0xC3, 0x4C, 0xD2, 0x97, 0x9B, 0x03, 0xC6, + 0xAE, 0x5F, 0x1B, 0x44, 0x0F, 0x33, 0x37, 0x15, 0xE3, 0xCB, 0xFF, 0x2F, 0x56, 0xD3, 0x16, 0xA4, + 0x5B, 0x55, 0x67, 0x9D, 0xA2, 0xCA, 0xDB, 0x34, 0x6C, 0x0C, 0x73, 0x4A, 0xB5, 0x7B, 0xA4, 0xB6, + 0xB3, 0xE9, 0x35, 0x02, 0x78, 0x70, 0xEC, 0x00, 0x7A, 0xCB, 0xFC, 0x4B, 0x4F, 0x22, 0x36, 0xBB, + 0x14, 0x84, 0xC9, 0x8F, 0x91, 0xDD, 0x0F, 0x3C, 0x75, 0x8C, 0xCA, 0x0B, 0x88, 0xE7, 0x30, 0x82, + 0x06, 0xCD, 0x30, 0x82, 0x05, 0xB5, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x06, 0xFD, 0xF9, + 0x03, 0x96, 0x03, 0xAD, 0xEA, 0x00, 0x0A, 0xEB, 0x3F, 0x27, 0xBB, 0xBA, 0x1B, 0x30, 0x0D, 0x06, + 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x65, 0x31, 0x0B, + 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, + 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, + 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, + 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x24, 0x30, + 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, + 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, 0x49, 0x44, 0x20, 0x52, 0x6F, 0x6F, 0x74, + 0x20, 0x43, 0x41, 0x30, 0x1E, 0x17, 0x0D, 0x30, 0x36, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x31, 0x31, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, + 0x30, 0x30, 0x5A, 0x30, 0x62, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, + 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, + 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, + 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, + 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, 0x44, + 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x20, + 0x49, 0x44, 0x20, 0x43, 0x41, 0x2D, 0x31, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 0x00, 0x30, + 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xE8, 0x82, 0x2D, 0x99, 0xF9, 0xCA, 0xC2, 0x42, + 0x95, 0xA5, 0x80, 0x73, 0x40, 0x70, 0xD2, 0x9E, 0x56, 0x54, 0x5C, 0xA9, 0xC4, 0xD2, 0x41, 0x06, + 0x8F, 0xC9, 0x33, 0xFC, 0x4D, 0x45, 0x91, 0x5C, 0x81, 0x9F, 0xED, 0x2C, 0x9C, 0xF8, 0x16, 0x59, + 0xDF, 0x9E, 0xB5, 0x24, 0x15, 0xC2, 0x98, 0xB9, 0xB4, 0x77, 0x49, 0xDC, 0x89, 0xC4, 0x0A, 0xDA, + 0xAF, 0xCB, 0x5E, 0x6B, 0xED, 0xAD, 0xB0, 0x71, 0x31, 0xEB, 0xCF, 0x3A, 0x40, 0x0C, 0x46, 0x4D, + 0x93, 0xEC, 0x8B, 0x7A, 0x36, 0x08, 0x03, 0xAB, 0x0C, 0x34, 0xFE, 0x18, 0x49, 0x82, 0xFE, 0xC7, + 0xC7, 0x31, 0x48, 0x80, 0x7C, 0x1E, 0xA2, 0x0F, 0x92, 0x0E, 0x50, 0xC9, 0xC6, 0x87, 0xEB, 0x36, + 0x3F, 0xD8, 0x30, 0xC3, 0xFF, 0xA6, 0xF7, 0xFB, 0xA2, 0xCD, 0x6F, 0x73, 0x23, 0xFE, 0xAC, 0x56, + 0x05, 0x90, 0xF0, 0x32, 0x21, 0x16, 0x89, 0xC6, 0x70, 0x88, 0xF9, 0x05, 0x97, 0x7D, 0xA3, 0xC7, + 0x43, 0xDD, 0x02, 0xE8, 0x3B, 0x3D, 0xED, 0xB1, 0x41, 0xA3, 0xED, 0x3F, 0xBE, 0xDB, 0x95, 0x48, + 0xC4, 0xEE, 0x1E, 0xB3, 0xF2, 0xBC, 0x0C, 0x2B, 0x99, 0xD0, 0xC6, 0x5D, 0x12, 0x42, 0x81, 0xE1, + 0x83, 0x6E, 0x82, 0x73, 0x3F, 0x26, 0x4B, 0x14, 0x90, 0xAE, 0x59, 0x66, 0x0A, 0xC4, 0x8D, 0xBE, + 0xD2, 0xCE, 0x06, 0xAE, 0xAD, 0x84, 0x6F, 0x48, 0x84, 0x9B, 0x4F, 0x40, 0xB9, 0xF1, 0x4C, 0xF2, + 0xAF, 0x98, 0xFB, 0xF6, 0xCE, 0x40, 0x5D, 0x5C, 0xF6, 0xA8, 0xF1, 0x2F, 0xAF, 0xEC, 0x89, 0x22, + 0xF2, 0x6B, 0x18, 0x65, 0xB1, 0xC1, 0x73, 0xAD, 0xD7, 0xF1, 0xD8, 0xCF, 0x1E, 0x0A, 0x74, 0x5C, + 0x42, 0xB8, 0x68, 0x7E, 0xB7, 0xD5, 0x77, 0x0A, 0x27, 0x56, 0x7C, 0x0F, 0x62, 0xA4, 0x3F, 0x32, + 0x14, 0x60, 0x95, 0xFD, 0x07, 0x04, 0xA2, 0x09, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x03, + 0x7A, 0x30, 0x82, 0x03, 0x76, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, + 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x3B, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x34, 0x30, 0x32, + 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x01, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, + 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x06, 0x08, + 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x04, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, + 0x03, 0x08, 0x30, 0x82, 0x01, 0xD2, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x82, 0x01, 0xC9, 0x30, + 0x82, 0x01, 0xC5, 0x30, 0x82, 0x01, 0xB4, 0x06, 0x0A, 0x60, 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, + 0x00, 0x01, 0x04, 0x30, 0x82, 0x01, 0xA4, 0x30, 0x3A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, + 0x07, 0x02, 0x01, 0x16, 0x2E, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x77, 0x77, 0x77, 0x2E, + 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x73, 0x73, 0x6C, + 0x2D, 0x63, 0x70, 0x73, 0x2D, 0x72, 0x65, 0x70, 0x6F, 0x73, 0x69, 0x74, 0x6F, 0x72, 0x79, 0x2E, + 0x68, 0x74, 0x6D, 0x30, 0x82, 0x01, 0x64, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, + 0x02, 0x30, 0x82, 0x01, 0x56, 0x1E, 0x82, 0x01, 0x52, 0x00, 0x41, 0x00, 0x6E, 0x00, 0x79, 0x00, + 0x20, 0x00, 0x75, 0x00, 0x73, 0x00, 0x65, 0x00, 0x20, 0x00, 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, + 0x74, 0x00, 0x68, 0x00, 0x69, 0x00, 0x73, 0x00, 0x20, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, + 0x74, 0x00, 0x69, 0x00, 0x66, 0x00, 0x69, 0x00, 0x63, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x20, 0x00, 0x63, 0x00, 0x6F, 0x00, 0x6E, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x74, 0x00, + 0x75, 0x00, 0x74, 0x00, 0x65, 0x00, 0x73, 0x00, 0x20, 0x00, 0x61, 0x00, 0x63, 0x00, 0x63, 0x00, + 0x65, 0x00, 0x70, 0x00, 0x74, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x20, 0x00, + 0x6F, 0x00, 0x66, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x44, 0x00, + 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x43, 0x00, 0x65, 0x00, 0x72, 0x00, 0x74, 0x00, 0x20, 0x00, + 0x43, 0x00, 0x50, 0x00, 0x2F, 0x00, 0x43, 0x00, 0x50, 0x00, 0x53, 0x00, 0x20, 0x00, 0x61, 0x00, + 0x6E, 0x00, 0x64, 0x00, 0x20, 0x00, 0x74, 0x00, 0x68, 0x00, 0x65, 0x00, 0x20, 0x00, 0x52, 0x00, + 0x65, 0x00, 0x6C, 0x00, 0x79, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x67, 0x00, 0x20, 0x00, 0x50, 0x00, + 0x61, 0x00, 0x72, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x41, 0x00, 0x67, 0x00, 0x72, 0x00, + 0x65, 0x00, 0x65, 0x00, 0x6D, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x74, 0x00, 0x20, 0x00, 0x77, 0x00, + 0x68, 0x00, 0x69, 0x00, 0x63, 0x00, 0x68, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x6D, 0x00, + 0x69, 0x00, 0x74, 0x00, 0x20, 0x00, 0x6C, 0x00, 0x69, 0x00, 0x61, 0x00, 0x62, 0x00, 0x69, 0x00, + 0x6C, 0x00, 0x69, 0x00, 0x74, 0x00, 0x79, 0x00, 0x20, 0x00, 0x61, 0x00, 0x6E, 0x00, 0x64, 0x00, + 0x20, 0x00, 0x61, 0x00, 0x72, 0x00, 0x65, 0x00, 0x20, 0x00, 0x69, 0x00, 0x6E, 0x00, 0x63, 0x00, + 0x6F, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6F, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x64, 0x00, 0x20, 0x00, 0x68, 0x00, 0x65, 0x00, 0x72, 0x00, 0x65, 0x00, 0x69, 0x00, 0x6E, 0x00, + 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x20, 0x00, 0x72, 0x00, 0x65, 0x00, 0x66, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x65, 0x00, 0x6E, 0x00, 0x63, 0x00, 0x65, 0x00, 0x2E, 0x30, 0x0B, 0x06, 0x09, 0x60, + 0x86, 0x48, 0x01, 0x86, 0xFD, 0x6C, 0x03, 0x15, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, + 0x01, 0xFF, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x79, 0x06, 0x08, + 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6D, 0x30, 0x6B, 0x30, 0x24, 0x06, 0x08, + 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, + 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, + 0x6F, 0x6D, 0x30, 0x43, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x37, + 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x61, 0x63, 0x65, 0x72, 0x74, 0x73, 0x2E, 0x64, + 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, + 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x49, 0x44, 0x52, 0x6F, 0x6F, + 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x81, 0x81, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, + 0x7A, 0x30, 0x78, 0x30, 0x3A, 0xA0, 0x38, 0xA0, 0x36, 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3A, + 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x33, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, + 0x63, 0x6F, 0x6D, 0x2F, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, + 0x72, 0x65, 0x64, 0x49, 0x44, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, + 0x3A, 0xA0, 0x38, 0xA0, 0x36, 0x86, 0x34, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, + 0x6C, 0x34, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, 0x49, + 0x44, 0x52, 0x6F, 0x6F, 0x74, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x1D, 0x06, 0x03, 0x55, + 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x15, 0x00, 0x12, 0x2B, 0x13, 0x98, 0xB2, 0x99, 0x07, 0xED, + 0x1E, 0xDF, 0xA2, 0xBE, 0x57, 0x0D, 0x2B, 0x67, 0x02, 0xCD, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, + 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x45, 0xEB, 0xA2, 0xAF, 0xF4, 0x92, 0xCB, 0x82, 0x31, + 0x2D, 0x51, 0x8B, 0xA7, 0xA7, 0x21, 0x9D, 0xF3, 0x6D, 0xC8, 0x0F, 0x30, 0x0D, 0x06, 0x09, 0x2A, + 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x46, + 0x50, 0x3E, 0xC9, 0xB7, 0x28, 0x24, 0xA7, 0x38, 0x1D, 0xB6, 0x5B, 0x29, 0xAF, 0x52, 0xCF, 0x52, + 0xE9, 0x31, 0x47, 0xAB, 0x56, 0x5C, 0x7B, 0xD5, 0x0D, 0x0B, 0x41, 0xB3, 0xEF, 0xEC, 0x75, 0x1F, + 0x74, 0x38, 0xF2, 0xB2, 0x5C, 0x61, 0xA2, 0x9C, 0x95, 0xC3, 0x50, 0xE4, 0x82, 0xB9, 0x23, 0xD1, + 0xBA, 0x3A, 0x86, 0x72, 0xAD, 0x38, 0x78, 0xAC, 0x75, 0x5D, 0x17, 0x17, 0x34, 0x72, 0x47, 0x85, + 0x94, 0x56, 0xD1, 0xEB, 0xBB, 0x36, 0x84, 0x77, 0xCC, 0x24, 0xA5, 0xF3, 0x04, 0x19, 0x55, 0xA9, + 0xE7, 0xE3, 0xE7, 0xAB, 0x62, 0xCD, 0xFB, 0x8B, 0x2D, 0x90, 0xC2, 0xC0, 0xD2, 0xB5, 0x94, 0xBD, + 0x5E, 0x4F, 0xB1, 0x05, 0xD2, 0x0E, 0x3D, 0x1A, 0xA9, 0x14, 0x5B, 0xA6, 0x86, 0x31, 0x62, 0xA8, + 0xA8, 0x33, 0xE4, 0x9B, 0x39, 0xA7, 0xC4, 0xF5, 0xCE, 0x1D, 0x78, 0x76, 0x94, 0x25, 0x73, 0xE4, + 0x2A, 0xAB, 0xCF, 0x9C, 0x76, 0x4B, 0xED, 0x5F, 0xC2, 0x4B, 0x16, 0xE4, 0x4B, 0x70, 0x4C, 0x00, + 0x89, 0x1E, 0xFC, 0xC5, 0x79, 0xBC, 0x4C, 0x12, 0x57, 0xFE, 0x5F, 0xE1, 0x1E, 0xBC, 0x02, 0x5D, + 0xA8, 0xFE, 0xFB, 0x07, 0x38, 0x4F, 0x0D, 0xC6, 0x5D, 0x91, 0xB9, 0x0F, 0x67, 0x45, 0xCD, 0xD6, + 0x83, 0xED, 0xE7, 0x92, 0x0D, 0x8D, 0xB1, 0x69, 0x8C, 0x4F, 0xFB, 0x59, 0xE0, 0x23, 0x0F, 0xD2, + 0xAA, 0xAE, 0x00, 0x7C, 0xEE, 0x9C, 0x42, 0x0E, 0xCF, 0x91, 0xD7, 0x27, 0xB7, 0x16, 0xEE, 0x0F, + 0xC3, 0xBD, 0x7C, 0x0A, 0xA0, 0xEE, 0x2C, 0x08, 0x55, 0x85, 0x22, 0xB8, 0xEB, 0x18, 0x1A, 0x4D, + 0xFC, 0x2A, 0x21, 0xAD, 0x49, 0x31, 0x83, 0x47, 0x95, 0x77, 0x71, 0xDC, 0xB1, 0x1B, 0x4B, 0x4B, + 0x1C, 0x10, 0x9C, 0x77, 0x14, 0xC1, 0x9D, 0x4F, 0x2F, 0x5A, 0x95, 0x08, 0x29, 0x10, 0x26, 0x31, + 0x82, 0x04, 0x34, 0x30, 0x82, 0x04, 0x30, 0x02, 0x01, 0x01, 0x30, 0x81, 0x87, 0x30, 0x73, 0x31, + 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, + 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, + 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, + 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x32, + 0x30, 0x30, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x29, 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, + 0x74, 0x20, 0x48, 0x69, 0x67, 0x68, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x61, 0x6E, 0x63, 0x65, + 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, + 0x2D, 0x31, 0x02, 0x10, 0x03, 0xE9, 0x01, 0x7D, 0x54, 0xCD, 0x93, 0xF0, 0x94, 0xD0, 0xA2, 0xAB, + 0x7F, 0xC0, 0xE3, 0xF5, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, + 0x70, 0x30, 0x10, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0C, 0x31, + 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, + 0x31, 0x0C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1C, + 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0B, 0x31, 0x0E, 0x30, 0x0C, + 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, + 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0xF8, 0xB8, 0xAC, + 0xF6, 0x28, 0x3C, 0xAB, 0x9E, 0x8A, 0xB4, 0x24, 0x66, 0x1F, 0x67, 0x41, 0xD5, 0x52, 0xC4, 0x20, + 0xB1, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, + 0x04, 0x82, 0x01, 0x00, 0x00, 0x1E, 0x16, 0xBC, 0xB2, 0x31, 0x8C, 0xBA, 0xD8, 0x58, 0x9E, 0x10, + 0x38, 0xA7, 0x08, 0x7A, 0x56, 0xE4, 0xB3, 0x80, 0x58, 0xB2, 0xE1, 0x34, 0x0C, 0xDF, 0x68, 0x7A, + 0x55, 0x43, 0x56, 0x27, 0xFE, 0xF4, 0x98, 0xDF, 0x47, 0xDD, 0x7A, 0xDA, 0x53, 0xB6, 0x67, 0xD8, + 0xB4, 0x11, 0x91, 0xF8, 0xFC, 0xE3, 0xD2, 0x86, 0x9B, 0xE1, 0x3A, 0x39, 0x1E, 0x08, 0xB8, 0xA0, + 0x60, 0xB8, 0x3A, 0x01, 0x68, 0xAF, 0xB4, 0xD3, 0x2E, 0xF6, 0xD3, 0x27, 0x01, 0xB8, 0x48, 0x63, + 0x29, 0x94, 0x39, 0x0B, 0x0E, 0x99, 0xAD, 0x4B, 0xC4, 0x91, 0x3F, 0x3C, 0x81, 0x05, 0x69, 0x38, + 0x8D, 0xB1, 0x95, 0x15, 0x7C, 0x7A, 0x0E, 0x53, 0x16, 0x19, 0xEC, 0x67, 0x2B, 0x4F, 0xA8, 0xE7, + 0xDA, 0x64, 0x27, 0x05, 0x16, 0x68, 0x03, 0xAB, 0xBB, 0xEB, 0xCB, 0xC9, 0x80, 0x83, 0xB6, 0x95, + 0x87, 0x8A, 0x4F, 0xAC, 0x72, 0x66, 0x63, 0x7E, 0xA3, 0xD0, 0x0F, 0xDB, 0xC7, 0x8B, 0x7F, 0xFA, + 0x39, 0x41, 0x71, 0xDE, 0xE5, 0x51, 0xF2, 0x50, 0xD2, 0xEF, 0xD9, 0x77, 0xE4, 0xFA, 0x88, 0x30, + 0xC9, 0xF9, 0xBB, 0xAE, 0x63, 0xA7, 0x12, 0x09, 0x65, 0x61, 0x79, 0x11, 0xB8, 0xC4, 0x4B, 0x77, + 0x9E, 0x4F, 0xB8, 0xCB, 0xEB, 0x96, 0x92, 0xA9, 0xB8, 0x0F, 0x27, 0xBB, 0xDF, 0x04, 0x3D, 0x6D, + 0xED, 0x74, 0x96, 0x71, 0x76, 0xF6, 0xDC, 0x7A, 0x79, 0xDF, 0xDA, 0x0D, 0x4E, 0x47, 0x25, 0x01, + 0x32, 0xED, 0x07, 0xFD, 0xCB, 0x5B, 0x92, 0xB7, 0x79, 0x6F, 0x7A, 0xD7, 0x6A, 0x93, 0xCB, 0xF8, + 0x1E, 0x98, 0xB3, 0x8B, 0x56, 0x51, 0x29, 0x78, 0x89, 0x4D, 0x52, 0x4A, 0xFA, 0x7E, 0xD7, 0x2E, + 0x9E, 0x63, 0xD8, 0x1D, 0xA2, 0xCA, 0xEF, 0xAC, 0x78, 0xDC, 0x93, 0x92, 0x06, 0x76, 0x0D, 0xA8, + 0x5B, 0x7D, 0x4A, 0x5F, 0xA1, 0x82, 0x02, 0x0F, 0x30, 0x82, 0x02, 0x0B, 0x06, 0x09, 0x2A, 0x86, + 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x06, 0x31, 0x82, 0x01, 0xFC, 0x30, 0x82, 0x01, 0xF8, 0x02, + 0x01, 0x01, 0x30, 0x76, 0x30, 0x62, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, + 0x02, 0x55, 0x53, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0C, 0x44, 0x69, + 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x49, 0x6E, 0x63, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, + 0x55, 0x04, 0x0B, 0x13, 0x10, 0x77, 0x77, 0x77, 0x2E, 0x64, 0x69, 0x67, 0x69, 0x63, 0x65, 0x72, + 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x31, 0x21, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x18, + 0x44, 0x69, 0x67, 0x69, 0x43, 0x65, 0x72, 0x74, 0x20, 0x41, 0x73, 0x73, 0x75, 0x72, 0x65, 0x64, + 0x20, 0x49, 0x44, 0x20, 0x43, 0x41, 0x2D, 0x31, 0x02, 0x10, 0x03, 0x01, 0x9A, 0x02, 0x3A, 0xFF, + 0x58, 0xB1, 0x6B, 0xD6, 0xD5, 0xEA, 0xE6, 0x17, 0xF0, 0x66, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, + 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, 0x5D, 0x30, 0x18, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, + 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0B, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, + 0x01, 0x30, 0x1C, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x05, 0x31, 0x0F, + 0x17, 0x0D, 0x31, 0x35, 0x30, 0x35, 0x33, 0x30, 0x30, 0x38, 0x34, 0x32, 0x31, 0x34, 0x5A, 0x30, + 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, + 0x84, 0xE8, 0x74, 0xD1, 0xD0, 0x66, 0x0A, 0x35, 0x18, 0x65, 0x77, 0xDE, 0xBC, 0x98, 0x4F, 0x63, + 0xB7, 0xC4, 0xC2, 0xB4, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, + 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 0x07, 0xA9, 0xF9, 0xCD, 0x0D, 0xDD, 0xF4, 0xB4, 0x53, + 0x47, 0x01, 0x4A, 0x16, 0x89, 0x97, 0xBE, 0x07, 0xC5, 0xE5, 0x33, 0x85, 0xDC, 0x36, 0xFF, 0x63, + 0xE7, 0xF0, 0x5D, 0xE4, 0x56, 0xA8, 0x0A, 0xEA, 0x1D, 0x21, 0xB6, 0xE9, 0x56, 0xCF, 0x1E, 0x1A, + 0xC6, 0x33, 0x3F, 0xF3, 0xDD, 0xED, 0xAC, 0x5D, 0x72, 0x55, 0xAA, 0x5D, 0x43, 0x5E, 0xC8, 0xC4, + 0x91, 0x40, 0xFD, 0x27, 0x07, 0x13, 0xEF, 0x89, 0x40, 0xA3, 0x52, 0xC2, 0x29, 0x69, 0xDC, 0x82, + 0xE7, 0x85, 0xB7, 0xBB, 0x49, 0x86, 0x3D, 0x58, 0x19, 0xD0, 0xC6, 0x3B, 0x51, 0x88, 0x4D, 0xCA, + 0x02, 0x05, 0xC8, 0xA1, 0x86, 0x8D, 0xE5, 0x18, 0x8C, 0xFB, 0x76, 0xB8, 0x22, 0x64, 0x10, 0xC2, + 0xAC, 0x7A, 0x6B, 0x70, 0x50, 0x8E, 0xD3, 0xDD, 0xFE, 0x37, 0x7F, 0x38, 0x27, 0x5B, 0x69, 0x04, + 0x08, 0x73, 0xB6, 0xC4, 0x9D, 0x31, 0x79, 0x6F, 0xFE, 0x11, 0xFE, 0xE3, 0xA2, 0x6E, 0xB9, 0x9A, + 0x37, 0xBB, 0x73, 0x19, 0x80, 0x6A, 0x3A, 0x0F, 0x85, 0xC7, 0x54, 0x09, 0x8D, 0xAA, 0x53, 0xBE, + 0x72, 0x62, 0x9D, 0x8E, 0xBA, 0x5B, 0xAB, 0xD9, 0xA3, 0x02, 0x95, 0xF1, 0x59, 0xCD, 0x79, 0x67, + 0xE0, 0x86, 0x05, 0xA0, 0x3C, 0xDE, 0x3C, 0x60, 0xDD, 0xB5, 0x11, 0xA7, 0x64, 0x03, 0x5E, 0xFE, + 0x85, 0x5E, 0x1E, 0xFC, 0x5B, 0xE7, 0xEB, 0x2A, 0x16, 0x95, 0x66, 0x75, 0xBD, 0x0C, 0x48, 0x1C, + 0xFD, 0x61, 0x8B, 0x3B, 0xA9, 0xC2, 0xD3, 0x99, 0x24, 0x8E, 0x6F, 0x42, 0x45, 0x49, 0x31, 0x6B, + 0x85, 0x1B, 0x3E, 0x56, 0x06, 0x92, 0x93, 0xDE, 0xB3, 0xB5, 0x89, 0xDA, 0x2F, 0xE8, 0x84, 0x19, + 0xD4, 0x83, 0xB9, 0x1B, 0xD8, 0xE0, 0xE3, 0x47, 0x0E, 0xF6, 0xD1, 0xBB, 0xB7, 0x05, 0x2F, 0xD9, + 0x56, 0xA6, 0xDA, 0xF4, 0x1A, 0xEA, 0x51, 0x00 +}; \ No newline at end of file diff --git a/NativeCore/BypaPH/Tools.cpp b/NativeCore/BypaPH/Tools.cpp new file mode 100644 index 00000000..e25e0afe --- /dev/null +++ b/NativeCore/BypaPH/Tools.cpp @@ -0,0 +1,68 @@ +#include "Tools.h" + +std::wstring str2wstr(std::string in) { std::wstring out; out.assign(in.begin(), in.end()); return out; } +std::string wstr2str(std::wstring in) { std::string out; out.assign(in.begin(), in.end()); return out; } + +bool SetPrivilegeW(const LPCWSTR lpszPrivilege, const BOOL bEnablePrivilege) { + TOKEN_PRIVILEGES priv = { 0,0,0,0 }; + HANDLE hToken = nullptr; + LUID luid = { 0,0 }; + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) { + if (hToken) + CloseHandle(hToken); + return false; + } + if (!LookupPrivilegeValueW(nullptr, lpszPrivilege, &luid)) { + if (hToken) + CloseHandle(hToken); + return false; + } + priv.PrivilegeCount = 1; + priv.Privileges[0].Luid = luid; + priv.Privileges[0].Attributes = bEnablePrivilege ? SE_PRIVILEGE_ENABLED : SE_PRIVILEGE_REMOVED; + if (!AdjustTokenPrivileges(hToken, false, &priv, 0, nullptr, nullptr)) { + if (hToken) + CloseHandle(hToken); + return false; + } + if (hToken) + CloseHandle(hToken); + return true; +} + +bool SetPrivilegeA(const LPCSTR lpszPrivilege, const BOOL bEnablePrivilege) { + TOKEN_PRIVILEGES priv = { 0,0,0,0 }; + HANDLE hToken = nullptr; + LUID luid = { 0,0 }; + if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES, &hToken)) { + if (hToken) + CloseHandle(hToken); + return false; + } + if (!LookupPrivilegeValueA(nullptr, lpszPrivilege, &luid)) { + if (hToken) + CloseHandle(hToken); + return false; + } + priv.PrivilegeCount = 1; + priv.Privileges[0].Luid = luid; + priv.Privileges[0].Attributes = bEnablePrivilege ? SE_PRIVILEGE_ENABLED : SE_PRIVILEGE_REMOVED; + if (!AdjustTokenPrivileges(hToken, false, &priv, 0, nullptr, nullptr)) { + if (hToken) + CloseHandle(hToken); + return false; + } + if (hToken) + CloseHandle(hToken); + return true; +} + +bool WriteDataToFile(const UCHAR pBuffer[], const DWORD dwSize, const std::string& strFileName, const DWORD dwCreationDisposition) +{ + const auto hFile = CreateFileA(strFileName.c_str(), GENERIC_READ | GENERIC_WRITE, 0, nullptr, dwCreationDisposition, FILE_ATTRIBUTE_NORMAL, nullptr); + if (hFile == INVALID_HANDLE_VALUE) return false; + DWORD dwNumberOfBytesWritten = NULL; + const auto bWriteFile = WriteFile(hFile, pBuffer, dwSize, &dwNumberOfBytesWritten, nullptr); + CloseHandle(hFile); + return !(!bWriteFile || dwNumberOfBytesWritten != dwSize); +} \ No newline at end of file diff --git a/NativeCore/BypaPH/Tools.h b/NativeCore/BypaPH/Tools.h new file mode 100644 index 00000000..cfb4d265 --- /dev/null +++ b/NativeCore/BypaPH/Tools.h @@ -0,0 +1,18 @@ +#pragma once +#include +#include + +#ifdef UNICODE +#define SetPrivilege SetPrivilegeW +#else +#define SetPrivilege SetPrivilegeA +#endif + +std::wstring str2wstr(std::string in); +std::string wstr2str(std::wstring in); + +bool SetPrivilegeW(const LPCWSTR lpszPrivilege, const BOOL bEnablePrivilege); + +bool SetPrivilegeA(const LPCSTR lpszPrivilege, const BOOL bEnablePrivilege); + +bool WriteDataToFile(const UCHAR pBuffer[], const DWORD dwSize, const std::string& strFileName, const DWORD dwCreationDisposition = CREATE_NEW); \ No newline at end of file diff --git a/NativeCore/Unix/NativeCore.Unix.vcxproj b/NativeCore/Unix/NativeCore.Unix.vcxproj index 6d13567a..05e63690 100644 --- a/NativeCore/Unix/NativeCore.Unix.vcxproj +++ b/NativeCore/Unix/NativeCore.Unix.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -27,24 +27,28 @@ 1.0 Generic {D51BCBC9-82E9-4017-911E-C93873C4EA2B} - 8.1 + 10.0.17763.0 true DynamicLibrary + v141 false DynamicLibrary + v141 true DynamicLibrary + v141 false DynamicLibrary + v141 diff --git a/NativeCore/Windows/CloseRemoteProcess.cpp b/NativeCore/Windows/CloseRemoteProcess.cpp index 413ef8a1..66dfc6b7 100644 --- a/NativeCore/Windows/CloseRemoteProcess.cpp +++ b/NativeCore/Windows/CloseRemoteProcess.cpp @@ -1,13 +1,13 @@ #include +#include "Program.h" #include "NativeCore.hpp" -void RC_CallConv CloseRemoteProcess(RC_Pointer handle) +void RC_CallConv CloseRemoteProcess(RC_Pointer handle, DWORD targetProcessID) { - if (handle == nullptr) - { - return; - } + if (handle != nullptr) + CloseHandle(handle); - CloseHandle(handle); + if (ByPass != nullptr && ByPass->pID == targetProcessID) + delete ByPass; } diff --git a/NativeCore/Windows/EnumerateProcesses.cpp b/NativeCore/Windows/EnumerateProcesses.cpp index e7d14faf..abda7bc5 100644 --- a/NativeCore/Windows/EnumerateProcesses.cpp +++ b/NativeCore/Windows/EnumerateProcesses.cpp @@ -63,12 +63,12 @@ void RC_CallConv EnumerateProcesses(EnumerateProcessCallback callbackProcess) const auto process = OpenRemoteProcess(reinterpret_cast(static_cast(pe32.th32ProcessID)), ProcessAccess::Read); if (IsProcessValid(process)) { - const auto platform = GetProcessPlatform(process); + /*const auto platform = GetProcessPlatform(process); #ifdef RECLASSNET64 if (platform == Platform::X64) #else if (platform == Platform::X86) -#endif +#endif*/ { EnumerateProcessData data = { }; data.Id = pe32.th32ProcessID; diff --git a/NativeCore/Windows/NativeCore.hpp b/NativeCore/Windows/NativeCore.hpp index db0fa692..2297bbf7 100644 --- a/NativeCore/Windows/NativeCore.hpp +++ b/NativeCore/Windows/NativeCore.hpp @@ -6,9 +6,9 @@ void RC_CallConv EnumerateProcesses(EnumerateProcessCallback callbackProcess); void RC_CallConv EnumerateRemoteSectionsAndModules(RC_Pointer handle, EnumerateRemoteSectionsCallback callbackSection, EnumerateRemoteModulesCallback callbackModule); -RC_Pointer RC_CallConv OpenRemoteProcess(RC_Pointer id, ProcessAccess desiredAccess); +RC_Pointer RC_CallConv OpenRemoteProcess(RC_Pointer id, ProcessAccess desiredAccess, bool useKernal = false, bool isTargetProcess = false); bool RC_CallConv IsProcessValid(RC_Pointer handle); -void RC_CallConv CloseRemoteProcess(RC_Pointer handle); +void RC_CallConv CloseRemoteProcess(RC_Pointer handle, DWORD targetProcessID = NULL); bool RC_CallConv ReadRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Pointer buffer, int offset, int size); bool RC_CallConv WriteRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Pointer buffer, int offset, int size); diff --git a/NativeCore/Windows/NativeCore.vcxproj b/NativeCore/Windows/NativeCore.vcxproj index bec0c645..6994a986 100644 --- a/NativeCore/Windows/NativeCore.vcxproj +++ b/NativeCore/Windows/NativeCore.vcxproj @@ -22,14 +22,14 @@ {22CA6FDB-7622-4F94-8FC2-2E7AB481C86F} Win32Proj NativeCore - 10.0.17134.0 + 10.0.17763.0 DynamicLibrary true v141 - Unicode + MultiByte DynamicLibrary @@ -104,6 +104,7 @@ Level3 Disabled WIN32;_DEBUG;_WINDOWS;_USRDLL;NATIVECORE_EXPORTS;_CRT_SECURE_NO_WARNINGS;NOMINMAX;RECLASSNET32;%(PreprocessorDefinitions) + Windows @@ -166,6 +167,9 @@ + + + @@ -192,8 +196,13 @@ + + + + + diff --git a/NativeCore/Windows/NativeCore.vcxproj.filters b/NativeCore/Windows/NativeCore.vcxproj.filters index a7d8862a..6732ef58 100644 --- a/NativeCore/Windows/NativeCore.vcxproj.filters +++ b/NativeCore/Windows/NativeCore.vcxproj.filters @@ -64,6 +64,15 @@ Shared + + BypaPH + + + BypaPH + + + BypaPH + @@ -81,9 +90,25 @@ {faf06b55-02ad-4707-a65d-37e1c0d13640} + + {9162fbc2-f5c4-4a5d-8253-a7a6f9f82d03} + + + BypaPH + + + BypaPH + + + BypaPH + + + BypaPH + + \ No newline at end of file diff --git a/NativeCore/Windows/OpenRemoteProcess.cpp b/NativeCore/Windows/OpenRemoteProcess.cpp index d8944dd3..a6f38f5c 100644 --- a/NativeCore/Windows/OpenRemoteProcess.cpp +++ b/NativeCore/Windows/OpenRemoteProcess.cpp @@ -1,9 +1,14 @@ #include +#include "Program.h" #include "NativeCore.hpp" -RC_Pointer RC_CallConv OpenRemoteProcess(RC_Pointer id, ProcessAccess desiredAccess) +BypaPH *ByPass = nullptr; + +RC_Pointer RC_CallConv OpenRemoteProcess(RC_Pointer id, ProcessAccess desiredAccess, bool useKernal, bool isTargetProcess) { + DWORD pID = static_cast(reinterpret_cast(id)); + DWORD access = STANDARD_RIGHTS_REQUIRED | PROCESS_TERMINATE | PROCESS_QUERY_INFORMATION | SYNCHRONIZE; switch (desiredAccess) { @@ -18,12 +23,12 @@ RC_Pointer RC_CallConv OpenRemoteProcess(RC_Pointer id, ProcessAccess desiredAcc break; } - const auto handle = OpenProcess(access, FALSE, static_cast(reinterpret_cast(id))); + if (isTargetProcess && useKernal) + ByPass = new BypaPH(pID); + const auto handle = OpenProcess(access, FALSE, pID); if (handle == nullptr || handle == INVALID_HANDLE_VALUE) - { return nullptr; - } return handle; } diff --git a/NativeCore/Windows/Program.h b/NativeCore/Windows/Program.h new file mode 100644 index 00000000..56375087 --- /dev/null +++ b/NativeCore/Windows/Program.h @@ -0,0 +1,4 @@ +#pragma once +#include "../BypaPH/BypaPH.h" + +extern BypaPH *ByPass; \ No newline at end of file diff --git a/NativeCore/Windows/ReadRemoteMemory.cpp b/NativeCore/Windows/ReadRemoteMemory.cpp index a29b8ae2..7bccd3b5 100644 --- a/NativeCore/Windows/ReadRemoteMemory.cpp +++ b/NativeCore/Windows/ReadRemoteMemory.cpp @@ -1,16 +1,29 @@ #include +#include "Program.h" #include "NativeCore.hpp" bool RC_CallConv ReadRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Pointer buffer, int offset, int size) { - buffer = reinterpret_cast(reinterpret_cast(buffer) + offset); + buffer = reinterpret_cast(reinterpret_cast(buffer) + offset); - SIZE_T numberOfBytesRead; - if (ReadProcessMemory(handle, address, buffer, size, &numberOfBytesRead) && size == numberOfBytesRead) - { - return true; - } + SIZE_T numberOfBytesRead = 0; + if (ByPass == nullptr) + { + if (ReadProcessMemory(handle, address, buffer, size, &numberOfBytesRead) && size == numberOfBytesRead) + return true; + } + else // BypaPH + { + NTSTATUS read = ByPass->RWVM(ByPass->m_hTarget, address, buffer, size, &numberOfBytesRead); + /*char gg[9] = { '\0' }; + sprintf_s(gg, sizeof(gg), "%x", read); + MessageBox(0, gg, "GG Read", MB_OK);*/ - return false; -} + if (read == STATUS_SUCCESS && size == numberOfBytesRead) + return true; + + } + + return false; +} \ No newline at end of file diff --git a/NativeCore/Windows/WriteRemoteMemory.cpp b/NativeCore/Windows/WriteRemoteMemory.cpp index e0dac2df..a6e0b039 100644 --- a/NativeCore/Windows/WriteRemoteMemory.cpp +++ b/NativeCore/Windows/WriteRemoteMemory.cpp @@ -1,19 +1,34 @@ #include +#include "Program.h" #include "NativeCore.hpp" bool RC_CallConv WriteRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Pointer buffer, int offset, int size) { buffer = reinterpret_cast(reinterpret_cast(buffer) + offset); - DWORD oldProtect; - if (VirtualProtectEx(handle, address, size, PAGE_EXECUTE_READWRITE, &oldProtect)) + if (ByPass == nullptr) { - SIZE_T numberOfBytesWritten; - if (WriteProcessMemory(handle, address, buffer, size, &numberOfBytesWritten)) + DWORD oldProtect; + if (VirtualProtectEx(handle, address, size, PAGE_EXECUTE_READWRITE, &oldProtect)) { - VirtualProtectEx(handle, address, size, oldProtect, nullptr); + SIZE_T numberOfBytesWritten = 0; + if (WriteProcessMemory(handle, address, buffer, size, &numberOfBytesWritten)) + { + VirtualProtectEx(handle, address, size, oldProtect, nullptr); + if (size == numberOfBytesWritten) + { + return true; + } + } + } + } + else // BypaPH Stuff + { + SIZE_T numberOfBytesWritten = 0; + if (ByPass->WVM(ByPass->m_hTarget, address, buffer, size, &numberOfBytesWritten) == STATUS_SUCCESS) + { if (size == numberOfBytesWritten) { return true; diff --git a/ReClass.NET/Core/CoreFunctionsManager.cs b/ReClass.NET/Core/CoreFunctionsManager.cs index a8fa0c68..b9a91135 100644 --- a/ReClass.NET/Core/CoreFunctionsManager.cs +++ b/ReClass.NET/Core/CoreFunctionsManager.cs @@ -124,9 +124,9 @@ public void EnumerateRemoteSectionsAndModules(IntPtr process, out List
EnumerateRemoteSectionsAndModules(process, sections.Add, modules.Add); } - public IntPtr OpenRemoteProcess(IntPtr pid, ProcessAccess desiredAccess) + public IntPtr OpenRemoteProcess(IntPtr pid, ProcessAccess desiredAccess, bool UseKernal = false, bool IsTargetProcess = false) { - return currentFunctions.OpenRemoteProcess(pid, desiredAccess); + return currentFunctions.OpenRemoteProcess(pid, desiredAccess, UseKernal, IsTargetProcess); } public bool IsProcessValid(IntPtr process) @@ -134,9 +134,9 @@ public bool IsProcessValid(IntPtr process) return currentFunctions.IsProcessValid(process); } - public void CloseRemoteProcess(IntPtr process) + public void CloseRemoteProcess(IntPtr process, uint targetProcessID) { - currentFunctions.CloseRemoteProcess(process); + currentFunctions.CloseRemoteProcess(process, targetProcessID); } public bool ReadRemoteMemory(IntPtr process, IntPtr address, ref byte[] buffer, int offset, int size) diff --git a/ReClass.NET/Core/ICoreProcessFunctions.cs b/ReClass.NET/Core/ICoreProcessFunctions.cs index 1c96f4df..3897afc6 100644 --- a/ReClass.NET/Core/ICoreProcessFunctions.cs +++ b/ReClass.NET/Core/ICoreProcessFunctions.cs @@ -13,11 +13,11 @@ public interface ICoreProcessFunctions void EnumerateRemoteSectionsAndModules(IntPtr process, EnumerateRemoteSectionCallback callbackSection, EnumerateRemoteModuleCallback callbackModule); - IntPtr OpenRemoteProcess(IntPtr pid, ProcessAccess desiredAccess); + IntPtr OpenRemoteProcess(IntPtr pid, ProcessAccess desiredAccess, bool UseKernal, bool IsTargetProcess); bool IsProcessValid(IntPtr process); - void CloseRemoteProcess(IntPtr process); + void CloseRemoteProcess(IntPtr process, uint targetProcessID); bool ReadRemoteMemory(IntPtr process, IntPtr address, ref byte[] buffer, int offset, int size); diff --git a/ReClass.NET/Core/NativeCoreWrapper.cs b/ReClass.NET/Core/NativeCoreWrapper.cs index 9ec1e24b..98064188 100644 --- a/ReClass.NET/Core/NativeCoreWrapper.cs +++ b/ReClass.NET/Core/NativeCoreWrapper.cs @@ -18,9 +18,9 @@ public class NativeCoreWrapper : ICoreProcessFunctions [return: MarshalAs(UnmanagedType.I1)] private delegate bool IsProcessValidDelegate(IntPtr process); - private delegate IntPtr OpenRemoteProcessDelegate(IntPtr pid, ProcessAccess desiredAccess); + private delegate IntPtr OpenRemoteProcessDelegate(IntPtr pid, ProcessAccess desiredAccess, bool UseKernal, bool IsTargetProcess); - private delegate void CloseRemoteProcessDelegate(IntPtr process); + private delegate void CloseRemoteProcessDelegate(IntPtr process, uint targetProcessID); [return: MarshalAs(UnmanagedType.I1)] private delegate bool ReadRemoteMemoryDelegate(IntPtr process, IntPtr address, [Out] byte[] buffer, int offset, int size); @@ -101,9 +101,9 @@ public void EnumerateRemoteSectionsAndModules(IntPtr process, EnumerateRemoteSec enumerateRemoteSectionsAndModulesDelegate(process, callbackSection, callbackModule); } - public IntPtr OpenRemoteProcess(IntPtr pid, ProcessAccess desiredAccess) + public IntPtr OpenRemoteProcess(IntPtr pid, ProcessAccess desiredAccess, bool UseKernal, bool IsTargetProcess) { - return openRemoteProcessDelegate(pid, desiredAccess); + return openRemoteProcessDelegate(pid, desiredAccess, UseKernal, IsTargetProcess); } public bool IsProcessValid(IntPtr process) @@ -111,9 +111,9 @@ public bool IsProcessValid(IntPtr process) return isProcessValidDelegate(process); } - public void CloseRemoteProcess(IntPtr process) + public void CloseRemoteProcess(IntPtr process, uint targetProcessID) { - closeRemoteProcessDelegate(process); + closeRemoteProcessDelegate(process, targetProcessID); } public bool ReadRemoteMemory(IntPtr process, IntPtr address, ref byte[] buffer, int offset, int size) diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index 5ddfe86f..b867bcbf 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -554,8 +554,12 @@ public void AttachToProcess(ProcessInfo info) Program.RemoteProcess.Close(); - Program.RemoteProcess.Open(info); - Program.RemoteProcess.UpdateProcessInformations(); + if (MessageBox.Show("Use kprocesshacker to read/write process memory .?", "Use Kernal.?", MessageBoxButtons.YesNo) == DialogResult.Yes) + Program.RemoteProcess.Open(info, true); + else + Program.RemoteProcess.Open(info, false); + + Program.RemoteProcess.UpdateProcessInformations(); Program.Settings.LastProcess = Program.RemoteProcess.UnderlayingProcess.Name; } diff --git a/ReClass.NET/Memory/RemoteProcess.cs b/ReClass.NET/Memory/RemoteProcess.cs index 3451375a..0130df3b 100644 --- a/ReClass.NET/Memory/RemoteProcess.cs +++ b/ReClass.NET/Memory/RemoteProcess.cs @@ -104,7 +104,7 @@ public void Dispose() /// Opens the given process to gather informations from. /// The process information. - public void Open(ProcessInfo info) + public void Open(ProcessInfo info, bool UseKernal) { Contract.Requires(info != null); @@ -118,7 +118,7 @@ public void Open(ProcessInfo info) process = info; - handle = coreFunctions.OpenRemoteProcess(process.Id, ProcessAccess.Full); + handle = coreFunctions.OpenRemoteProcess(process.Id, ProcessAccess.Full, UseKernal, true); } ProcessAttached?.Invoke(this); @@ -136,7 +136,7 @@ public void Close() { debugger.Terminate(); - coreFunctions.CloseRemoteProcess(handle); + coreFunctions.CloseRemoteProcess(handle, (uint)process.Id.ToInt32()); handle = IntPtr.Zero; From 9678244bcfb91fe6d1c30d8990efe15d0e78a53e Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Mon, 31 Dec 2018 16:33:10 +0200 Subject: [PATCH 02/32] Remove x86 Version of ReClass, Support both x64 and x32 in the ReClass x64 --- ReClass.NET/AddressParser/TokenReader.cs | 12 +- ReClass.NET/Constants.cs | 20 +-- .../DataExchange/ReClass/ReClassFile.cs | 54 +++++--- ReClass.NET/Debugger/DataExchange.cs | 4 +- ReClass.NET/Debugger/RemoteDebugger.cs | 126 +++++++++++------- .../BinaryReaderWriterExtensions.cs | 19 ++- ReClass.NET/Extensions/IntPtrExtensions.cs | 95 +++++-------- ReClass.NET/Forms/FoundCodeForm.cs | 63 ++++----- ReClass.NET/Forms/IconForm.cs | 12 -- ReClass.NET/Forms/MainForm.cs | 22 ++- ReClass.NET/IconForm.cs | 30 +++++ ReClass.NET/IconForm.resx | 120 +++++++++++++++++ ReClass.NET/Memory/NodeDissector.cs | 13 +- ReClass.NET/Memory/ProcessInfo.cs | 3 +- ReClass.NET/Memory/RemoteProcess.cs | 31 ++--- ReClass.NET/MemoryScanner/ScanSettings.cs | 9 +- ReClass.NET/Nodes/BaseContainerNode.cs | 53 +++++--- ReClass.NET/Nodes/ClassNode.cs | 6 +- ReClass.NET/Nodes/ClassPtrNode.cs | 12 +- ReClass.NET/ProcessExtension.cs | 29 ++++ ReClass.NET/Program.cs | 2 + ReClass.NET/ReClass.NET.csproj | 10 +- ReClass.NET/UI/MemoryPreviewPopUp.cs | 13 +- ReClass.NET_Launcher/Program.cs | 5 +- 24 files changed, 486 insertions(+), 277 deletions(-) delete mode 100644 ReClass.NET/Forms/IconForm.cs create mode 100644 ReClass.NET/IconForm.cs create mode 100644 ReClass.NET/IconForm.resx create mode 100644 ReClass.NET/ProcessExtension.cs diff --git a/ReClass.NET/AddressParser/TokenReader.cs b/ReClass.NET/AddressParser/TokenReader.cs index 963a9fa8..4ab81a44 100644 --- a/ReClass.NET/AddressParser/TokenReader.cs +++ b/ReClass.NET/AddressParser/TokenReader.cs @@ -70,13 +70,13 @@ public List Read(string formula) if (long.TryParse(buffer, NumberStyles.HexNumber, null, out var offsetValue)) { -#if RECLASSNET64 - var address = (IntPtr)offsetValue; -#else - var address = (IntPtr)unchecked((int)offsetValue); -#endif + IntPtr address; + if (Program.TargetProcessIs64) + address = (IntPtr)offsetValue; + else + address = (IntPtr)unchecked((int)offsetValue); - tokens.Add(new Token(TokenType.Offset, address)); + tokens.Add(new Token(TokenType.Offset, address)); isFormulaSubPart = false; } else diff --git a/ReClass.NET/Constants.cs b/ReClass.NET/Constants.cs index e1abd568..cab1a309 100644 --- a/ReClass.NET/Constants.cs +++ b/ReClass.NET/Constants.cs @@ -18,17 +18,21 @@ public class Constants public const string PluginUrl = "https://github.com/KN4CK3R/ReClass.NET#plugins"; -#if RECLASSNET64 - public const string Platform = "x64"; + public static string Platform = "x64"; - public const string AddressHexFormat = "X016"; -#else - public const string Platform = "x86"; + public static string AddressHexFormat = "X016"; - public const string AddressHexFormat = "X08"; -#endif +//#if RECLASSNET64 +// public const string Platform = "x64"; - public const string SettingsFile = "settings.xml"; +// public const string AddressHexFormat = "X016"; +//#else +// public const string Platform = "x86"; + +// public const string AddressHexFormat = "X08"; +//#endif + + public const string SettingsFile = "settings.xml"; public const string PluginsFolder = "Plugins"; diff --git a/ReClass.NET/DataExchange/ReClass/ReClassFile.cs b/ReClass.NET/DataExchange/ReClass/ReClassFile.cs index 18875ae8..9b2e2490 100644 --- a/ReClass.NET/DataExchange/ReClass/ReClassFile.cs +++ b/ReClass.NET/DataExchange/ReClass/ReClassFile.cs @@ -175,28 +175,42 @@ private IEnumerable ReadNodeElements(IEnumerable elements, C while (size != 0) { BaseNode paddingNode; -#if RECLASSNET64 - if (size >= 8) - { - paddingNode = new Hex64Node(); - } - else -#endif - if (size >= 4) - { - paddingNode = new Hex32Node(); - } - else if (size >= 2) - { - paddingNode = new Hex16Node(); - } - else - { - paddingNode = new Hex8Node(); - } + if (Program.TargetProcessIs64) + { + if (size >= 8) + { + paddingNode = new Hex64Node(); + } + else if (size >= 4) + { + paddingNode = new Hex32Node(); + } + else if (size >= 2) + { + paddingNode = new Hex16Node(); + } + else + { + paddingNode = new Hex8Node(); + } + } + else + { + if (size >= 4) + { + paddingNode = new Hex32Node(); + } + else if (size >= 2) + { + paddingNode = new Hex16Node(); + } + else + { + paddingNode = new Hex8Node(); + } + } paddingNode.Comment = node.Comment; - size -= paddingNode.MemorySize; yield return paddingNode; diff --git a/ReClass.NET/Debugger/DataExchange.cs b/ReClass.NET/Debugger/DataExchange.cs index 176352ce..8ed7c5bf 100644 --- a/ReClass.NET/Debugger/DataExchange.cs +++ b/ReClass.NET/Debugger/DataExchange.cs @@ -15,7 +15,6 @@ public struct ExceptionDebugInfo [StructLayout(LayoutKind.Sequential, Pack = 1)] public struct RegisterInfo { -#if RECLASSNET64 public IntPtr Rax; public IntPtr Rbx; public IntPtr Rcx; @@ -34,7 +33,7 @@ public struct RegisterInfo public IntPtr R13; public IntPtr R14; public IntPtr R15; -#else + public IntPtr Eax; public IntPtr Ebx; public IntPtr Ecx; @@ -44,7 +43,6 @@ public struct RegisterInfo public IntPtr Esp; public IntPtr Ebp; public IntPtr Eip; -#endif }; public RegisterInfo Registers; diff --git a/ReClass.NET/Debugger/RemoteDebugger.cs b/ReClass.NET/Debugger/RemoteDebugger.cs index bb468553..423bba64 100644 --- a/ReClass.NET/Debugger/RemoteDebugger.cs +++ b/ReClass.NET/Debugger/RemoteDebugger.cs @@ -131,51 +131,87 @@ private List SplitBreakpoint(IntPtr address, int size) while (size > 0) { -#if RECLASSNET64 - if (size >= 8) - { - if (address.Mod(8) == 0) - { - splits.Add(new BreakpointSplit { Address = address, Size = 8 }); - - address += 8; - size -= 8; - - continue; - } - } -#endif - if (size >= 4) - { - if (address.Mod(4) == 0) - { - splits.Add(new BreakpointSplit { Address = address, Size = 4 }); - - address += 4; - size -= 4; - - continue; - } - } - if (size >= 2) - { - if (address.Mod(2) == 0) - { - splits.Add(new BreakpointSplit { Address = address, Size = 2 }); - - address += 2; - size -= 2; - - continue; - } - } - if (size >= 1) - { - splits.Add(new BreakpointSplit { Address = address, Size = 1 }); - - address += 1; - size -= 1; - } + if (Program.TargetProcessIs64) + { + if (size >= 8) + { + if (address.Mod(8) == 0) + { + splits.Add(new BreakpointSplit { Address = address, Size = 8 }); + + address += 8; + size -= 8; + + continue; + } + } + + if (size >= 4) + { + if (address.Mod(4) == 0) + { + splits.Add(new BreakpointSplit { Address = address, Size = 4 }); + + address += 4; + size -= 4; + + continue; + } + } + if (size >= 2) + { + if (address.Mod(2) == 0) + { + splits.Add(new BreakpointSplit { Address = address, Size = 2 }); + + address += 2; + size -= 2; + + continue; + } + } + if (size >= 1) + { + splits.Add(new BreakpointSplit { Address = address, Size = 1 }); + + address += 1; + size -= 1; + } + } + else + { + if (size >= 4) + { + if (address.Mod(4) == 0) + { + splits.Add(new BreakpointSplit { Address = address, Size = 4 }); + + address += 4; + size -= 4; + + continue; + } + } + if (size >= 2) + { + if (address.Mod(2) == 0) + { + splits.Add(new BreakpointSplit { Address = address, Size = 2 }); + + address += 2; + size -= 2; + + continue; + } + } + if (size >= 1) + { + splits.Add(new BreakpointSplit { Address = address, Size = 1 }); + + address += 1; + size -= 1; + } + } } return splits; diff --git a/ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs b/ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs index fdae07f4..90c57eff 100644 --- a/ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs +++ b/ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs @@ -9,23 +9,20 @@ public static class BinaryReaderWriterExtension public static IntPtr ReadIntPtr(this BinaryReader br) { Contract.Requires(br != null); - -#if RECLASSNET64 - return (IntPtr)br.ReadInt64(); -#else - return (IntPtr)br.ReadInt32(); -#endif + if (Program.TargetProcessIs64) + return (IntPtr)br.ReadInt64(); + else + return (IntPtr)br.ReadInt32(); } public static void Write(this BinaryWriter bw, IntPtr value) { Contract.Requires(bw != null); -#if RECLASSNET64 - bw.Write(value.ToInt64()); -#else - bw.Write(value.ToInt32()); -#endif + if (Program.TargetProcessIs64) + bw.Write(value.ToInt64()); + else + bw.Write(value.ToInt32()); } } } diff --git a/ReClass.NET/Extensions/IntPtrExtensions.cs b/ReClass.NET/Extensions/IntPtrExtensions.cs index 42ee257b..99f4c5d2 100644 --- a/ReClass.NET/Extensions/IntPtrExtensions.cs +++ b/ReClass.NET/Extensions/IntPtrExtensions.cs @@ -17,95 +17,61 @@ public static bool IsNull(this IntPtr ptr) [DebuggerStepThrough] public static bool MayBeValid(this IntPtr ptr) { -#if RECLASSNET64 - return ptr.InRange((IntPtr)0x10000, (IntPtr)long.MaxValue); -#else - return ptr.InRange((IntPtr)0x10000, (IntPtr)int.MaxValue); -#endif + return ptr.InRange((IntPtr)0x10000, (IntPtr)long.MaxValue); } [Pure] [DebuggerStepThrough] public static IntPtr Add(this IntPtr lhs, IntPtr rhs) { -#if RECLASSNET64 - return new IntPtr(lhs.ToInt64() + rhs.ToInt64()); -#else - return new IntPtr(lhs.ToInt32() + rhs.ToInt32()); -#endif - } + return new IntPtr(lhs.ToInt64() + rhs.ToInt64()); + } [Pure] [DebuggerStepThrough] public static IntPtr Sub(this IntPtr lhs, IntPtr rhs) { -#if RECLASSNET64 - return new IntPtr(lhs.ToInt64() - rhs.ToInt64()); -#else - return new IntPtr(lhs.ToInt32() - rhs.ToInt32()); -#endif + return new IntPtr(lhs.ToInt64() - rhs.ToInt64()); } [Pure] [DebuggerStepThrough] public static IntPtr Mul(this IntPtr lhs, IntPtr rhs) { -#if RECLASSNET64 - return new IntPtr(lhs.ToInt64() * rhs.ToInt64()); -#else - return new IntPtr(lhs.ToInt32() * rhs.ToInt32()); -#endif - } + return new IntPtr(lhs.ToInt64() * rhs.ToInt64()); + } [Pure] [DebuggerStepThrough] public static IntPtr Div(this IntPtr lhs, IntPtr rhs) { Contract.Requires(!rhs.IsNull()); - -#if RECLASSNET64 - return new IntPtr(lhs.ToInt64() / rhs.ToInt64()); -#else - return new IntPtr(lhs.ToInt32() / rhs.ToInt32()); -#endif + return new IntPtr(lhs.ToInt64() / rhs.ToInt64()); } [Pure] [DebuggerStepThrough] public static int Mod(this IntPtr lhs, int mod) { -#if RECLASSNET64 - return (int)(lhs.ToInt64() % mod); -#else - return lhs.ToInt32() % mod; -#endif + return (int)(lhs.ToInt64() % mod); } [Pure] [DebuggerStepThrough] public static bool InRange(this IntPtr address, IntPtr start, IntPtr end) { -#if RECLASSNET64 - var val = (ulong)address.ToInt64(); - return (ulong)start.ToInt64() <= val && val <= (ulong)end.ToInt64(); -#else - var val = (uint)address.ToInt32(); - return (uint)start.ToInt32() <= val && val <= (uint)end.ToInt32(); -#endif + var val = (ulong)address.ToInt64(); + return (ulong)start.ToInt64() <= val && val <= (ulong)end.ToInt64(); } [Pure] [DebuggerStepThrough] public static int CompareTo(this IntPtr lhs, IntPtr rhs) { -#if RECLASSNET64 - return ((ulong)lhs.ToInt64()).CompareTo((ulong)rhs.ToInt64()); -#else - return ((uint)lhs.ToInt32()).CompareTo((uint)rhs.ToInt32()); -#endif - } + return ((ulong)lhs.ToInt64()).CompareTo((ulong)rhs.ToInt64()); + } - [Pure] + [Pure] [DebuggerStepThrough] public static int CompareToRange(this IntPtr address, IntPtr start, IntPtr end) { @@ -127,22 +93,27 @@ public static int CompareToRange(this IntPtr address, IntPtr start, IntPtr end) [DebuggerStepThrough] public static long ToInt64Bits(this IntPtr ptr) { -#if RECLASSNET64 - return ptr.ToInt64(); -#else - var value = ptr.ToInt64(); + return ptr.ToInt64(); - if (value < 0) - { - var intValue = ptr.ToInt32(); - if (value == intValue) - { - value = intValue & 0xFFFFFFFFL; - } - } + //if (is64Bit) + //{ + // return ptr.ToInt64(); + //} + //else + //{ + // var value = ptr.ToInt64(); - return value; -#endif - } + // if (value < 0) + // { + // var intValue = ptr.ToInt32(); + // if (value == intValue) + // { + // value = intValue & 0xFFFFFFFFL; + // } + // } + + // return value; + //} + } } } diff --git a/ReClass.NET/Forms/FoundCodeForm.cs b/ReClass.NET/Forms/FoundCodeForm.cs index 68ccd141..3ca1a2ca 100644 --- a/ReClass.NET/Forms/FoundCodeForm.cs +++ b/ReClass.NET/Forms/FoundCodeForm.cs @@ -102,36 +102,39 @@ private void foundCodeDataGridView_SelectionChanged(object sender, EventArgs e) sb.AppendLine(); -#if RECLASSNET64 - sb.AppendLine($"RAX = {info.DebugInfo.Registers.Rax.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"RBX = {info.DebugInfo.Registers.Rbx.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"RCX = {info.DebugInfo.Registers.Rcx.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"RDX = {info.DebugInfo.Registers.Rdx.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"RDI = {info.DebugInfo.Registers.Rdi.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"RSI = {info.DebugInfo.Registers.Rsi.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"RSP = {info.DebugInfo.Registers.Rsp.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"RBP = {info.DebugInfo.Registers.Rbp.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"RIP = {info.DebugInfo.Registers.Rip.ToString(Constants.AddressHexFormat)}"); - - sb.AppendLine($"R8 = {info.DebugInfo.Registers.R8.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"R9 = {info.DebugInfo.Registers.R9.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"R10 = {info.DebugInfo.Registers.R10.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"R11 = {info.DebugInfo.Registers.R11.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"R12 = {info.DebugInfo.Registers.R12.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"R13 = {info.DebugInfo.Registers.R13.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"R14 = {info.DebugInfo.Registers.R14.ToString(Constants.AddressHexFormat)}"); - sb.Append($"R15 = {info.DebugInfo.Registers.R15.ToString(Constants.AddressHexFormat)}"); -#else - sb.AppendLine($"EAX = {info.DebugInfo.Registers.Eax.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"EBX = {info.DebugInfo.Registers.Ebx.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"ECX = {info.DebugInfo.Registers.Ecx.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"EDX = {info.DebugInfo.Registers.Edx.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"EDI = {info.DebugInfo.Registers.Edi.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"ESI = {info.DebugInfo.Registers.Esi.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"ESP = {info.DebugInfo.Registers.Esp.ToString(Constants.AddressHexFormat)}"); - sb.AppendLine($"EBP = {info.DebugInfo.Registers.Ebp.ToString(Constants.AddressHexFormat)}"); - sb.Append($"EIP = {info.DebugInfo.Registers.Eip.ToString(Constants.AddressHexFormat)}"); -#endif + if (Program.TargetProcessIs64) + { + sb.AppendLine($"RAX = {info.DebugInfo.Registers.Rax.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"RBX = {info.DebugInfo.Registers.Rbx.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"RCX = {info.DebugInfo.Registers.Rcx.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"RDX = {info.DebugInfo.Registers.Rdx.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"RDI = {info.DebugInfo.Registers.Rdi.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"RSI = {info.DebugInfo.Registers.Rsi.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"RSP = {info.DebugInfo.Registers.Rsp.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"RBP = {info.DebugInfo.Registers.Rbp.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"RIP = {info.DebugInfo.Registers.Rip.ToString(Constants.AddressHexFormat)}"); + + sb.AppendLine($"R8 = {info.DebugInfo.Registers.R8.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"R9 = {info.DebugInfo.Registers.R9.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"R10 = {info.DebugInfo.Registers.R10.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"R11 = {info.DebugInfo.Registers.R11.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"R12 = {info.DebugInfo.Registers.R12.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"R13 = {info.DebugInfo.Registers.R13.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"R14 = {info.DebugInfo.Registers.R14.ToString(Constants.AddressHexFormat)}"); + sb.Append($"R15 = {info.DebugInfo.Registers.R15.ToString(Constants.AddressHexFormat)}"); + } + else + { + sb.AppendLine($"EAX = {info.DebugInfo.Registers.Eax.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"EBX = {info.DebugInfo.Registers.Ebx.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"ECX = {info.DebugInfo.Registers.Ecx.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"EDX = {info.DebugInfo.Registers.Edx.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"EDI = {info.DebugInfo.Registers.Edi.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"ESI = {info.DebugInfo.Registers.Esi.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"ESP = {info.DebugInfo.Registers.Esp.ToString(Constants.AddressHexFormat)}"); + sb.AppendLine($"EBP = {info.DebugInfo.Registers.Ebp.ToString(Constants.AddressHexFormat)}"); + sb.Append($"EIP = {info.DebugInfo.Registers.Eip.ToString(Constants.AddressHexFormat)}"); + } infoTextBox.Text = sb.ToString(); } diff --git a/ReClass.NET/Forms/IconForm.cs b/ReClass.NET/Forms/IconForm.cs deleted file mode 100644 index 5184adb7..00000000 --- a/ReClass.NET/Forms/IconForm.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System.Windows.Forms; - -namespace ReClassNET.Forms -{ - public class IconForm : Form - { - public IconForm() - { - Icon = Properties.Resources.ReClassNet; - } - } -} diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index b867bcbf..bd15e737 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -42,21 +42,21 @@ public MainForm() InitializeComponent(); - Text = $"{Constants.ApplicationName} ({Constants.Platform})"; + Text = $"{Constants.ApplicationName} (x64)"; mainMenuStrip.Renderer = new CustomToolStripProfessionalRenderer(true, true); toolStrip.Renderer = new CustomToolStripProfessionalRenderer(true, false); Program.RemoteProcess.ProcessAttached += sender => { - var text = $"{sender.UnderlayingProcess.Name} (ID: {sender.UnderlayingProcess.Id.ToString()})"; + var text = $"{sender.UnderlayingProcess.Name} (ID: {sender.UnderlayingProcess.Id.ToString()}, Platform: {Constants.Platform})"; - Text = $"{Constants.ApplicationName} ({Constants.Platform}) - {text}"; + Text = $"{Constants.ApplicationName} (x64) - {text}"; processInfoToolStripStatusLabel.Text = text; }; Program.RemoteProcess.ProcessClosed += sender => { - Text = $"{Constants.ApplicationName} ({Constants.Platform})"; + Text = $"{Constants.ApplicationName} (x64)"; processInfoToolStripStatusLabel.Text = "No process selected"; }; @@ -393,6 +393,20 @@ private void attachToProcessToolStripSplitButton_ButtonClick(object sender, Even { if (pb.SelectedProcess != null) { + // Is 64Bit + Program.TargetProcessIs64 = System.Diagnostics.Process.GetProcessById(pb.SelectedProcess.Id.ToInt32()).Is64BitProcess(); + + if (Program.TargetProcessIs64) + { + Constants.Platform = "x64"; + Constants.AddressHexFormat = "X016"; + } + else + { + Constants.Platform = "x86"; + Constants.AddressHexFormat = "X08"; + } + AttachToProcess(pb.SelectedProcess); if (pb.LoadSymbols) diff --git a/ReClass.NET/IconForm.cs b/ReClass.NET/IconForm.cs new file mode 100644 index 00000000..bbb1a8d7 --- /dev/null +++ b/ReClass.NET/IconForm.cs @@ -0,0 +1,30 @@ +using System.Windows.Forms; + +namespace ReClassNET +{ + public class IconForm : Form + { + public IconForm() + { + Icon = Properties.Resources.ReClassNet; + } + + private void InitializeComponent() + { + this.SuspendLayout(); + // + // IconForm + // + this.ClientSize = new System.Drawing.Size(284, 261); + this.Name = "IconForm"; + this.Load += new System.EventHandler(this.IconForm_Load); + this.ResumeLayout(false); + + } + + private void IconForm_Load(object sender, System.EventArgs e) + { + + } + } +} diff --git a/ReClass.NET/IconForm.resx b/ReClass.NET/IconForm.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/ReClass.NET/IconForm.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ReClass.NET/Memory/NodeDissector.cs b/ReClass.NET/Memory/NodeDissector.cs index 041f20f4..6f43d7be 100644 --- a/ReClass.NET/Memory/NodeDissector.cs +++ b/ReClass.NET/Memory/NodeDissector.cs @@ -55,13 +55,12 @@ public static Type GuessType(BaseHexNode node, MemoryBuffer memory) if (is8ByteAligned) { -#if RECLASSNET64 - var pointerType = GuessPointerType(data64.IntPtr, memory); - if (pointerType != null) - { - return pointerType; - } -#endif + if (Program.TargetProcessIs64) + { + var pointerType = GuessPointerType(data64.IntPtr, memory); + if (pointerType != null) + return pointerType; + } } { diff --git a/ReClass.NET/Memory/ProcessInfo.cs b/ReClass.NET/Memory/ProcessInfo.cs index fe60ae2f..96bffa05 100644 --- a/ReClass.NET/Memory/ProcessInfo.cs +++ b/ReClass.NET/Memory/ProcessInfo.cs @@ -10,7 +10,7 @@ public class ProcessInfo public IntPtr Id { get; } public string Name { get; } public string Path { get; } - public Image Icon => icon.Value; + public Image Icon => icon.Value; private readonly Lazy icon; @@ -22,6 +22,7 @@ public ProcessInfo(IntPtr id, string name, string path) Id = id; Name = name; Path = path; + icon = new Lazy(() => { using (var i = NativeMethods.GetIconForFile(Path)) diff --git a/ReClass.NET/Memory/RemoteProcess.cs b/ReClass.NET/Memory/RemoteProcess.cs index 0130df3b..3cb15c26 100644 --- a/ReClass.NET/Memory/RemoteProcess.cs +++ b/ReClass.NET/Memory/RemoteProcess.cs @@ -322,21 +322,17 @@ public double ReadRemoteDouble(IntPtr address) /// The data read as or 0 if the read fails. public IntPtr ReadRemoteIntPtr(IntPtr address) { -#if RECLASSNET64 - return (IntPtr)ReadRemoteInt64(address); -#else - return (IntPtr)ReadRemoteInt32(address); -#endif - } + return (IntPtr)ReadRemoteInt64(address); + } - #endregion + #endregion - /// Reads a string from the address in the remote process with the given length using the provided encoding. - /// The encoding used by the string. - /// The address of the string. - /// The length of the string. - /// The string. - public string ReadRemoteString(Encoding encoding, IntPtr address, int length) + /// Reads a string from the address in the remote process with the given length using the provided encoding. + /// The encoding used by the string. + /// The address of the string. + /// The length of the string. + /// The string. + public string ReadRemoteString(Encoding encoding, IntPtr address, int length) { Contract.Requires(encoding != null); Contract.Requires(length >= 0); @@ -410,13 +406,8 @@ public string ReadRemoteRuntimeTypeInformation(IntPtr address) if (objectLocatorPtr.MayBeValid()) { -#if RECLASSNET64 - rtti = ReadRemoteRuntimeTypeInformation64(objectLocatorPtr); -#else - rtti = ReadRemoteRuntimeTypeInformation32(objectLocatorPtr); -#endif - - rttiCache[address] = rtti; + rtti = ReadRemoteRuntimeTypeInformation64(objectLocatorPtr); + rttiCache[address] = rtti; } } return rtti; diff --git a/ReClass.NET/MemoryScanner/ScanSettings.cs b/ReClass.NET/MemoryScanner/ScanSettings.cs index b21b9793..59297f50 100644 --- a/ReClass.NET/MemoryScanner/ScanSettings.cs +++ b/ReClass.NET/MemoryScanner/ScanSettings.cs @@ -12,13 +12,8 @@ public enum SettingState public class ScanSettings { public IntPtr StartAddress { get; set; } = IntPtr.Zero; - public IntPtr StopAddress { get; set; } = -#if RECLASSNET64 - (IntPtr)long.MaxValue; -#else - (IntPtr)int.MaxValue; -#endif - public SettingState ScanWritableMemory { get; set; } = SettingState.Yes; + public IntPtr StopAddress { get; set; } = Program.TargetProcessIs64 ? (IntPtr)long.MaxValue : (IntPtr)int.MaxValue; + public SettingState ScanWritableMemory { get; set; } = SettingState.Yes; public SettingState ScanExecutableMemory { get; set; } = SettingState.Indeterminate; public SettingState ScanCopyOnWriteMemory { get; set; } = SettingState.No; public bool ScanPrivateMemory { get; set; } = true; diff --git a/ReClass.NET/Nodes/BaseContainerNode.cs b/ReClass.NET/Nodes/BaseContainerNode.cs index a22f7a35..0be68855 100644 --- a/ReClass.NET/Nodes/BaseContainerNode.cs +++ b/ReClass.NET/Nodes/BaseContainerNode.cs @@ -195,25 +195,40 @@ public virtual void InsertBytes(int index, int size, ref List createdN while (size != 0) { BaseNode node; -#if RECLASSNET64 - if (size >= 8) - { - node = new Hex64Node(); - } - else -#endif - if (size >= 4) - { - node = new Hex32Node(); - } - else if (size >= 2) - { - node = new Hex16Node(); - } - else - { - node = new Hex8Node(); - } + if (Program.TargetProcessIs64) + { + if (size >= 8) + { + node = new Hex64Node(); + } + else if (size >= 4) + { + node = new Hex32Node(); + } + else if (size >= 2) + { + node = new Hex16Node(); + } + else + { + node = new Hex8Node(); + } + } + else + { + if (size >= 4) + { + node = new Hex32Node(); + } + else if (size >= 2) + { + node = new Hex16Node(); + } + else + { + node = new Hex8Node(); + } + } node.ParentNode = this; node.Offset = offset; diff --git a/ReClass.NET/Nodes/ClassNode.cs b/ReClass.NET/Nodes/ClassNode.cs index 23cbc7b1..d140b85e 100644 --- a/ReClass.NET/Nodes/ClassNode.cs +++ b/ReClass.NET/Nodes/ClassNode.cs @@ -17,11 +17,7 @@ public class ClassNode : BaseContainerNode { public static event ClassCreatedEventHandler ClassCreated; -#if RECLASSNET64 - public static IntPtr DefaultAddress { get; } = (IntPtr)0x140000000; -#else - public static IntPtr DefaultAddress { get; } = (IntPtr)0x400000; -#endif + public static IntPtr DefaultAddress { get; } = Program.TargetProcessIs64 ? (IntPtr)0x140000000 : (IntPtr)0x400000; /// Size of the node in bytes. public override int MemorySize => Nodes.Sum(n => n.MemorySize); diff --git a/ReClass.NET/Nodes/ClassPtrNode.cs b/ReClass.NET/Nodes/ClassPtrNode.cs index 2a857db5..17283536 100644 --- a/ReClass.NET/Nodes/ClassPtrNode.cs +++ b/ReClass.NET/Nodes/ClassPtrNode.cs @@ -105,13 +105,13 @@ public override void Update(HotSpot spot) { if (spot.Text.TryGetHexString(out var hexValue) && long.TryParse(hexValue, NumberStyles.HexNumber, null, out var val)) { -#if RECLASSNET64 - var address = (IntPtr)val; -#else - var address = (IntPtr)unchecked((int)val); -#endif + IntPtr address; + if (Program.TargetProcessIs64) + address = (IntPtr)val; + else + address = (IntPtr)unchecked((int)val); - spot.Memory.Process.WriteRemoteMemory(spot.Address, address); + spot.Memory.Process.WriteRemoteMemory(spot.Address, address); } } } diff --git a/ReClass.NET/ProcessExtension.cs b/ReClass.NET/ProcessExtension.cs new file mode 100644 index 00000000..74d1747d --- /dev/null +++ b/ReClass.NET/ProcessExtension.cs @@ -0,0 +1,29 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Linq; +using System.Runtime.InteropServices; +using System.Text; +using System.Threading.Tasks; + +namespace ReClassNET +{ + public static class ProcessExtension + { + [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)] + [return: MarshalAs(UnmanagedType.Bool)] + public static extern bool IsWow64Process([In] IntPtr processHandle, [Out, MarshalAs(UnmanagedType.Bool)] out bool wow64Process); + + public static bool Is64BitProcess(this Process process) + { + if (!Environment.Is64BitOperatingSystem) + return false; + + if (!IsWow64Process(process.Handle, out bool isWow64Process)) + throw new Win32Exception(Marshal.GetLastWin32Error()); + + return !isWow64Process; + } + } +} diff --git a/ReClass.NET/Program.cs b/ReClass.NET/Program.cs index d5e04f87..60ede581 100644 --- a/ReClass.NET/Program.cs +++ b/ReClass.NET/Program.cs @@ -29,6 +29,8 @@ public static class Program public static MainForm MainForm { get; private set; } + public static bool TargetProcessIs64 { get; set; } = true; + public static bool DesignMode { get; private set; } = true; public static FontEx MonoSpaceFont { get; private set; } diff --git a/ReClass.NET/ReClass.NET.csproj b/ReClass.NET/ReClass.NET.csproj index 2849a2fd..b8a67ecc 100644 --- a/ReClass.NET/ReClass.NET.csproj +++ b/ReClass.NET/ReClass.NET.csproj @@ -70,6 +70,7 @@ Full %28none%29 3 + false x86 @@ -82,7 +83,7 @@ 4 - x64 + AnyCPU true full false @@ -92,6 +93,7 @@ prompt 4 false + false x64 @@ -246,6 +248,7 @@ + Component @@ -294,7 +297,7 @@ Component - + Form @@ -513,6 +516,9 @@ ScannerForm.cs + + IconForm.cs + ClassNodeView.cs Designer diff --git a/ReClass.NET/UI/MemoryPreviewPopUp.cs b/ReClass.NET/UI/MemoryPreviewPopUp.cs index 4bf532ff..997570f2 100644 --- a/ReClass.NET/UI/MemoryPreviewPopUp.cs +++ b/ReClass.NET/UI/MemoryPreviewPopUp.cs @@ -57,14 +57,13 @@ private void SetNodeCount(int count) { BaseHexNode CreateNode(int index) { -#if RECLASSNET64 - return new Hex64Node { Offset = (IntPtr)(index * 8) }; -#else - return new Hex32Node { Offset = (IntPtr)(index * 4) }; -#endif - } + if (Program.TargetProcessIs64) + return new Hex64Node { Offset = (IntPtr)(index * 8) }; + else + return new Hex32Node { Offset = (IntPtr)(index * 4) }; + } - if (nodes.Count < count) + if (nodes.Count < count) { nodes.AddRange(Enumerable.Range(nodes.Count, count - nodes.Count).Select(CreateNode)); } diff --git a/ReClass.NET_Launcher/Program.cs b/ReClass.NET_Launcher/Program.cs index 8c160e3e..d865e2e5 100644 --- a/ReClass.NET_Launcher/Program.cs +++ b/ReClass.NET_Launcher/Program.cs @@ -11,7 +11,8 @@ namespace ReClassNET_Launcher { static class Program { - [STAThread] + public static bool is64Bit; + [STAThread] static void Main(string[] args) { var commandLineArgs = new CommandLineArgs(args); @@ -30,7 +31,7 @@ static void Main(string[] args) return; } - var is64Bit = IntPtr.Size == 8; + is64Bit = IntPtr.Size == 8; // If there is a file in the commandline, read the platform. if (commandLineArgs.FileName != null) From 0de9c4053946b928b6aff5619435ee494c369fcd Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Mon, 31 Dec 2018 16:57:10 +0200 Subject: [PATCH 03/32] Some Fixes --- ReClass.NET/Forms/ScannerForm.cs | 17 ++++++++++------- ReClass.NET/Memory/MemoryBuffer.cs | 15 +++++++-------- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/ReClass.NET/Forms/ScannerForm.cs b/ReClass.NET/Forms/ScannerForm.cs index 81eebc89..e32c5e95 100644 --- a/ReClass.NET/Forms/ScannerForm.cs +++ b/ReClass.NET/Forms/ScannerForm.cs @@ -645,13 +645,16 @@ private ScanSettings CreateSearchSettings() long.TryParse(startAddressTextBox.Text, NumberStyles.HexNumber, null, out var startAddressVar); long.TryParse(stopAddressTextBox.Text, NumberStyles.HexNumber, null, out var endAddressVar); -#if RECLASSNET64 - settings.StartAddress = unchecked((IntPtr)startAddressVar); - settings.StopAddress = unchecked((IntPtr)endAddressVar); -#else - settings.StartAddress = unchecked((IntPtr)(int)startAddressVar); - settings.StopAddress = unchecked((IntPtr)(int)endAddressVar); -#endif + if (Program.TargetProcessIs64) + { + settings.StartAddress = unchecked((IntPtr)startAddressVar); + settings.StopAddress = unchecked((IntPtr)endAddressVar); + } + else + { + settings.StartAddress = unchecked((IntPtr)(int)startAddressVar); + settings.StopAddress = unchecked((IntPtr)(int)endAddressVar); + } settings.EnableFastScan = fastScanCheckBox.Checked; int.TryParse(fastScanAlignmentTextBox.Text, out var alignment); settings.FastScanAlignment = Math.Max(1, alignment); diff --git a/ReClass.NET/Memory/MemoryBuffer.cs b/ReClass.NET/Memory/MemoryBuffer.cs index 2910a478..ff06afe0 100644 --- a/ReClass.NET/Memory/MemoryBuffer.cs +++ b/ReClass.NET/Memory/MemoryBuffer.cs @@ -460,16 +460,15 @@ public IntPtr ReadIntPtr(int offset) { Contract.Requires(offset >= 0); -#if RECLASSNET64 - return (IntPtr)ReadInt64(offset); -#else - return (IntPtr)ReadInt32(offset); -#endif - } + if (Program.TargetProcessIs64) + return (IntPtr)ReadInt64(offset); + else + return (IntPtr)ReadInt32(offset); + } - #endregion + #endregion - public string ReadPrintableAsciiString(IntPtr offset, int length) + public string ReadPrintableAsciiString(IntPtr offset, int length) { Contract.Requires(offset.ToInt32() >= 0); Contract.Requires(length >= 0); From 89210d104cd77b4e691d59949fcb037a60cd2e11 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Tue, 1 Jan 2019 02:21:44 +0200 Subject: [PATCH 04/32] set my name :D --- ReClass.NET/Constants.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReClass.NET/Constants.cs b/ReClass.NET/Constants.cs index cab1a309..1c285379 100644 --- a/ReClass.NET/Constants.cs +++ b/ReClass.NET/Constants.cs @@ -2,7 +2,7 @@ { public class Constants { - public const string ApplicationName = "ReClass.NET"; + public const string ApplicationName = "ReClass.NET (CorrM Edition)"; public const string ApplicationExecutableName = ApplicationName + ".exe"; From 712754d3a7337fc3585fadd2ffcf2bc30d7050cc Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Tue, 1 Jan 2019 04:00:31 +0200 Subject: [PATCH 05/32] PtrSize Option in gen struct, Fix UnHide BUG --- ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs | 10 +++++++--- ReClass.NET/CodeGenerator/CppCodeGenerator.cs | 13 ++++++++++--- ReClass.NET/DataExchange/ReClass/ReClassFile.cs | 2 +- ReClass.NET/Forms/MainForm.cs | 8 +++++--- ReClass.NET/Nodes/BaseNode.cs | 2 +- ReClass.NET/Nodes/BitFieldNode.cs | 2 +- ReClass.NET/Nodes/BoolNode.cs | 2 +- ReClass.NET/Nodes/ClassInstanceArrayNode.cs | 2 +- ReClass.NET/Nodes/ClassInstanceNode.cs | 2 +- ReClass.NET/Nodes/ClassNode.cs | 2 +- ReClass.NET/Nodes/ClassPtrArrayNode.cs | 2 +- ReClass.NET/Nodes/ClassPtrNode.cs | 4 ++-- ReClass.NET/Nodes/DoubleNode.cs | 2 +- ReClass.NET/Nodes/FloatNode.cs | 2 +- ReClass.NET/Nodes/FunctionNode.cs | 2 +- ReClass.NET/Nodes/FunctionPtrNode.cs | 14 ++++++++------ ReClass.NET/Nodes/Hex16Node.cs | 2 +- ReClass.NET/Nodes/Hex32Node.cs | 2 +- ReClass.NET/Nodes/Hex64Node.cs | 2 +- ReClass.NET/Nodes/Hex8Node.cs | 2 +- ReClass.NET/Nodes/Int16Node.cs | 2 +- ReClass.NET/Nodes/Int32Node.cs | 2 +- ReClass.NET/Nodes/Int64Node.cs | 2 +- ReClass.NET/Nodes/Int8Node.cs | 2 +- ReClass.NET/Nodes/Matrix3x3Node.cs | 2 +- ReClass.NET/Nodes/Matrix3x4Node.cs | 2 +- ReClass.NET/Nodes/Matrix4x4Node.cs | 2 +- ReClass.NET/Nodes/UInt16Node.cs | 2 +- ReClass.NET/Nodes/UInt32Node.cs | 2 +- ReClass.NET/Nodes/UInt64Node.cs | 2 +- ReClass.NET/Nodes/UInt8Node.cs | 2 +- ReClass.NET/Nodes/UTF16TextNode.cs | 4 +++- ReClass.NET/Nodes/UTF16TextPtrNode.cs | 4 +++- ReClass.NET/Nodes/UTF32TextNode.cs | 4 +++- ReClass.NET/Nodes/UTF32TextPtrNode.cs | 4 +++- ReClass.NET/Nodes/UTF8TextNode.cs | 4 +++- ReClass.NET/Nodes/UTF8TextPtrNode.cs | 4 +++- ReClass.NET/Nodes/VMethodNode.cs | 4 +++- ReClass.NET/Nodes/VTableNode.cs | 2 +- ReClass.NET/Nodes/Vector2Node.cs | 2 +- ReClass.NET/Nodes/Vector3Node.cs | 2 +- ReClass.NET/Nodes/Vector4Node.cs | 2 +- ReClass.NET/UI/LinkedWindowFeatures.cs | 3 ++- ReClass.NET/UI/MemoryViewControl.cs | 5 +++-- 44 files changed, 88 insertions(+), 57 deletions(-) diff --git a/ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs b/ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs index 14626dba..b532183b 100644 --- a/ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs +++ b/ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs @@ -12,6 +12,7 @@ namespace ReClassNET.CodeGenerator { class CSharpCodeGenerator : ICodeGenerator { + private bool ptrIs64Bit; private readonly Dictionary typeToTypedefMap = new Dictionary { [typeof(DoubleNode)] = "double", @@ -34,9 +35,12 @@ class CSharpCodeGenerator : ICodeGenerator [typeof(VTableNode)] = "IntPtr" }; - public Language Language => Language.CSharp; - - public string GenerateCode(IEnumerable classes, ILogger logger) + public Language Language => Language.CSharp; + public CSharpCodeGenerator(bool ptrIs64Bit) + { + this.ptrIs64Bit = ptrIs64Bit; + } + public string GenerateCode(IEnumerable classes, ILogger logger) { var sb = new StringBuilder(); sb.AppendLine($"// Created with {Constants.ApplicationName} by {Constants.Author}"); diff --git a/ReClass.NET/CodeGenerator/CppCodeGenerator.cs b/ReClass.NET/CodeGenerator/CppCodeGenerator.cs index b005496c..b00524e7 100644 --- a/ReClass.NET/CodeGenerator/CppCodeGenerator.cs +++ b/ReClass.NET/CodeGenerator/CppCodeGenerator.cs @@ -12,7 +12,8 @@ namespace ReClassNET.CodeGenerator { class CppCodeGenerator : ICodeGenerator { - private readonly Dictionary typeToTypedefMap = new Dictionary + private bool ptrIs64Bit; + private readonly Dictionary typeToTypedefMap = new Dictionary { [typeof(BoolNode)] = Program.Settings.TypeBool, [typeof(DoubleNode)] = Program.Settings.TypeDouble, @@ -42,7 +43,12 @@ class CppCodeGenerator : ICodeGenerator public Language Language => Language.Cpp; - public string GenerateCode(IEnumerable classes, ILogger logger) + public CppCodeGenerator(bool ptrIs64Bit) + { + this.ptrIs64Bit = ptrIs64Bit; + } + + public string GenerateCode(IEnumerable classes, ILogger logger) { var classNodes = classes as IList ?? classes.ToList(); @@ -225,7 +231,8 @@ private IEnumerable YieldMemberDefinitions(IEnumerableDummy node to represent the ReClass Custom node. private class CustomNode : BaseNode { - public override int MemorySize => throw new NotImplementedException(); + public override int MemorySize { get { throw new NotImplementedException(); } set { } } public override int CalculateDrawnHeight(ViewInfo view) { diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index bd15e737..63355316 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -365,13 +365,15 @@ private void cleanUnusedClassesToolStripMenuItem_Click(object sender, EventArgs private void generateCppCodeToolStripMenuItem_Click(object sender, EventArgs e) { - ShowCodeForm(new CppCodeGenerator()); + bool ptrIs64Bit = MessageBox.Show("Pointer is 64bit (8byte) .?", "Pointer Size", MessageBoxButtons.YesNo) == DialogResult.Yes; + ShowCodeForm(new CppCodeGenerator(ptrIs64Bit)); } private void generateCSharpCodeToolStripMenuItem_Click(object sender, EventArgs e) { - ShowCodeForm(new CSharpCodeGenerator()); - } + bool ptrIs64Bit = MessageBox.Show("Pointer is 64bit (8byte) .?", "Pointer Size", MessageBoxButtons.YesNo) == DialogResult.Yes; + ShowCodeForm(new CSharpCodeGenerator(ptrIs64Bit)); + } private void aboutToolStripMenuItem_Click(object sender, EventArgs e) { diff --git a/ReClass.NET/Nodes/BaseNode.cs b/ReClass.NET/Nodes/BaseNode.cs index a7cdeb99..9b4d9e94 100644 --- a/ReClass.NET/Nodes/BaseNode.cs +++ b/ReClass.NET/Nodes/BaseNode.cs @@ -47,7 +47,7 @@ public abstract class BaseNode public bool IsSelected { get; set; } /// Size of the node in bytes. - public abstract int MemorySize { get; } + public abstract int MemorySize { get; set; } public event NodeEventHandler NameChanged; public event NodeEventHandler CommentChanged; diff --git a/ReClass.NET/Nodes/BitFieldNode.cs b/ReClass.NET/Nodes/BitFieldNode.cs index 768e474d..d5752d96 100644 --- a/ReClass.NET/Nodes/BitFieldNode.cs +++ b/ReClass.NET/Nodes/BitFieldNode.cs @@ -42,7 +42,7 @@ public int Bits } } - public override int MemorySize => size; + public override int MemorySize { get { return size; } set { } } public BitFieldNode() { diff --git a/ReClass.NET/Nodes/BoolNode.cs b/ReClass.NET/Nodes/BoolNode.cs index 845a8e78..93f01306 100644 --- a/ReClass.NET/Nodes/BoolNode.cs +++ b/ReClass.NET/Nodes/BoolNode.cs @@ -6,7 +6,7 @@ namespace ReClassNET.Nodes public class BoolNode : BaseNumericNode { /// Size of the node in bytes. - public override int MemorySize => 1; + public override int MemorySize { get; set; } = 1; /// Draws this node. /// The view information. diff --git a/ReClass.NET/Nodes/ClassInstanceArrayNode.cs b/ReClass.NET/Nodes/ClassInstanceArrayNode.cs index 351489fa..98e760cd 100644 --- a/ReClass.NET/Nodes/ClassInstanceArrayNode.cs +++ b/ReClass.NET/Nodes/ClassInstanceArrayNode.cs @@ -8,7 +8,7 @@ namespace ReClassNET.Nodes public class ClassInstanceArrayNode : BaseArrayNode { /// Size of the node in bytes. - public override int MemorySize => InnerNode.MemorySize * Count; + public override int MemorySize { get { return InnerNode.MemorySize * Count; } set { } } public override bool PerformCycleCheck => true; diff --git a/ReClass.NET/Nodes/ClassInstanceNode.cs b/ReClass.NET/Nodes/ClassInstanceNode.cs index 7090d87b..f3243283 100644 --- a/ReClass.NET/Nodes/ClassInstanceNode.cs +++ b/ReClass.NET/Nodes/ClassInstanceNode.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes public class ClassInstanceNode : BaseReferenceNode { /// Size of the node in bytes. - public override int MemorySize => InnerNode.MemorySize; + public override int MemorySize { get { return InnerNode.MemorySize; } set { } } public override bool PerformCycleCheck => true; diff --git a/ReClass.NET/Nodes/ClassNode.cs b/ReClass.NET/Nodes/ClassNode.cs index d140b85e..3d9bf31d 100644 --- a/ReClass.NET/Nodes/ClassNode.cs +++ b/ReClass.NET/Nodes/ClassNode.cs @@ -20,7 +20,7 @@ public class ClassNode : BaseContainerNode public static IntPtr DefaultAddress { get; } = Program.TargetProcessIs64 ? (IntPtr)0x140000000 : (IntPtr)0x400000; /// Size of the node in bytes. - public override int MemorySize => Nodes.Sum(n => n.MemorySize); + public override int MemorySize { get { return Nodes.Sum(n => n.MemorySize); } set { } } private NodeUuid uuid; public NodeUuid Uuid diff --git a/ReClass.NET/Nodes/ClassPtrArrayNode.cs b/ReClass.NET/Nodes/ClassPtrArrayNode.cs index e87c6e3a..aefd22b5 100644 --- a/ReClass.NET/Nodes/ClassPtrArrayNode.cs +++ b/ReClass.NET/Nodes/ClassPtrArrayNode.cs @@ -9,7 +9,7 @@ public class ClassPtrArrayNode : BaseArrayNode { private readonly MemoryBuffer memory = new MemoryBuffer(); - public override int MemorySize => IntPtr.Size * Count; + public override int MemorySize { get { return IntPtr.Size * Count; } set { } } public override bool PerformCycleCheck => false; diff --git a/ReClass.NET/Nodes/ClassPtrNode.cs b/ReClass.NET/Nodes/ClassPtrNode.cs index 17283536..fcb2acd5 100644 --- a/ReClass.NET/Nodes/ClassPtrNode.cs +++ b/ReClass.NET/Nodes/ClassPtrNode.cs @@ -12,11 +12,11 @@ public class ClassPtrNode : BaseReferenceNode { private readonly MemoryBuffer memory = new MemoryBuffer(); - public override int MemorySize => IntPtr.Size; + public override int MemorySize { get; set; } = IntPtr.Size; public override bool PerformCycleCheck => false; - public override void Intialize() + public override void Intialize() { var node = ClassNode.Create(); node.Intialize(); diff --git a/ReClass.NET/Nodes/DoubleNode.cs b/ReClass.NET/Nodes/DoubleNode.cs index 93bc588a..67e03138 100644 --- a/ReClass.NET/Nodes/DoubleNode.cs +++ b/ReClass.NET/Nodes/DoubleNode.cs @@ -6,7 +6,7 @@ namespace ReClassNET.Nodes { public class DoubleNode : BaseNumericNode { - public override int MemorySize => 8; + public override int MemorySize { get; set; } = 8; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/FloatNode.cs b/ReClass.NET/Nodes/FloatNode.cs index 43a64302..867fb8ed 100644 --- a/ReClass.NET/Nodes/FloatNode.cs +++ b/ReClass.NET/Nodes/FloatNode.cs @@ -6,7 +6,7 @@ namespace ReClassNET.Nodes { public class FloatNode : BaseNumericNode { - public override int MemorySize => 4; + public override int MemorySize { get; set; } = 4; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/FunctionNode.cs b/ReClass.NET/Nodes/FunctionNode.cs index 6e9b915c..7d86fb8d 100644 --- a/ReClass.NET/Nodes/FunctionNode.cs +++ b/ReClass.NET/Nodes/FunctionNode.cs @@ -16,7 +16,7 @@ public class FunctionNode : BaseFunctionNode private int memorySize = IntPtr.Size; /// Size of the node in bytes. - public override int MemorySize => memorySize; + public override int MemorySize { get; set; } = IntPtr.Size; public override string GetToolTipText(HotSpot spot, MemoryBuffer memory) { diff --git a/ReClass.NET/Nodes/FunctionPtrNode.cs b/ReClass.NET/Nodes/FunctionPtrNode.cs index 1ab2f3c8..3f85ba6b 100644 --- a/ReClass.NET/Nodes/FunctionPtrNode.cs +++ b/ReClass.NET/Nodes/FunctionPtrNode.cs @@ -5,12 +5,14 @@ namespace ReClassNET.Nodes { public class FunctionPtrNode : BaseFunctionPtrNode { - /// Draws this node. - /// The view information. - /// The x coordinate. - /// The y coordinate. - /// The pixel size the node occupies. - public override Size Draw(ViewInfo view, int x, int y) + public override int MemorySize { set => throw new System.NotImplementedException(); } + + /// Draws this node. + /// The view information. + /// The x coordinate. + /// The y coordinate. + /// The pixel size the node occupies. + public override Size Draw(ViewInfo view, int x, int y) { return Draw(view, x, y, "FunctionPtr", Name); } diff --git a/ReClass.NET/Nodes/Hex16Node.cs b/ReClass.NET/Nodes/Hex16Node.cs index a93d13f5..2a06bf01 100644 --- a/ReClass.NET/Nodes/Hex16Node.cs +++ b/ReClass.NET/Nodes/Hex16Node.cs @@ -7,7 +7,7 @@ namespace ReClassNET.Nodes public class Hex16Node : BaseHexNode { /// Size of the node in bytes. - public override int MemorySize => 2; + public override int MemorySize { get; set; } = 2; /// Gets informations about this node to show in a tool tip. /// The spot. diff --git a/ReClass.NET/Nodes/Hex32Node.cs b/ReClass.NET/Nodes/Hex32Node.cs index 8310408d..74b621c7 100644 --- a/ReClass.NET/Nodes/Hex32Node.cs +++ b/ReClass.NET/Nodes/Hex32Node.cs @@ -8,7 +8,7 @@ namespace ReClassNET.Nodes public class Hex32Node : BaseHexCommentNode { /// Size of the node in bytes. - public override int MemorySize => 4; + public override int MemorySize { get; set; } = 4; public override bool UseMemoryPreviewToolTip(HotSpot spot, MemoryBuffer memory, out IntPtr address) { diff --git a/ReClass.NET/Nodes/Hex64Node.cs b/ReClass.NET/Nodes/Hex64Node.cs index ab297773..89ab6e1c 100644 --- a/ReClass.NET/Nodes/Hex64Node.cs +++ b/ReClass.NET/Nodes/Hex64Node.cs @@ -8,7 +8,7 @@ namespace ReClassNET.Nodes public class Hex64Node : BaseHexCommentNode { /// Size of the node in bytes. - public override int MemorySize => 8; + public override int MemorySize { get; set; } = 8; public override bool UseMemoryPreviewToolTip(HotSpot spot, MemoryBuffer memory, out IntPtr address) { diff --git a/ReClass.NET/Nodes/Hex8Node.cs b/ReClass.NET/Nodes/Hex8Node.cs index f5ab9465..0775f013 100644 --- a/ReClass.NET/Nodes/Hex8Node.cs +++ b/ReClass.NET/Nodes/Hex8Node.cs @@ -6,7 +6,7 @@ namespace ReClassNET.Nodes { public class Hex8Node : BaseHexNode { - public override int MemorySize => 1; + public override int MemorySize { get; set; } = 1; public override string GetToolTipText(HotSpot spot, MemoryBuffer memory) { diff --git a/ReClass.NET/Nodes/Int16Node.cs b/ReClass.NET/Nodes/Int16Node.cs index 213d85a0..16ecc96b 100644 --- a/ReClass.NET/Nodes/Int16Node.cs +++ b/ReClass.NET/Nodes/Int16Node.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes { public class Int16Node : BaseNumericNode { - public override int MemorySize => 2; + public override int MemorySize { get; set; } = 2; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/Int32Node.cs b/ReClass.NET/Nodes/Int32Node.cs index 5c5d9ceb..00724a98 100644 --- a/ReClass.NET/Nodes/Int32Node.cs +++ b/ReClass.NET/Nodes/Int32Node.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes { public class Int32Node : BaseNumericNode { - public override int MemorySize => 4; + public override int MemorySize { get; set; } = 4; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/Int64Node.cs b/ReClass.NET/Nodes/Int64Node.cs index ab26c3f8..608ea17d 100644 --- a/ReClass.NET/Nodes/Int64Node.cs +++ b/ReClass.NET/Nodes/Int64Node.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes { public class Int64Node : BaseNumericNode { - public override int MemorySize => 8; + public override int MemorySize { get; set; } = 8; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/Int8Node.cs b/ReClass.NET/Nodes/Int8Node.cs index 99316a5a..7b16b4ad 100644 --- a/ReClass.NET/Nodes/Int8Node.cs +++ b/ReClass.NET/Nodes/Int8Node.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes { public class Int8Node : BaseNumericNode { - public override int MemorySize => 1; + public override int MemorySize { get; set; } = 1; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/Matrix3x3Node.cs b/ReClass.NET/Nodes/Matrix3x3Node.cs index 296a6332..b3e470ae 100644 --- a/ReClass.NET/Nodes/Matrix3x3Node.cs +++ b/ReClass.NET/Nodes/Matrix3x3Node.cs @@ -32,7 +32,7 @@ private struct Matrix3x3Data public override int ValueTypeSize => sizeof(float); - public override int MemorySize => 9 * ValueTypeSize; + public override int MemorySize { get { return 9 * ValueTypeSize; } set { } } /// Draws this node. /// The view information. diff --git a/ReClass.NET/Nodes/Matrix3x4Node.cs b/ReClass.NET/Nodes/Matrix3x4Node.cs index b3f3f625..0623a503 100644 --- a/ReClass.NET/Nodes/Matrix3x4Node.cs +++ b/ReClass.NET/Nodes/Matrix3x4Node.cs @@ -38,7 +38,7 @@ private struct Matrix3x4Data public override int ValueTypeSize => sizeof(float); - public override int MemorySize => 12 * ValueTypeSize; + public override int MemorySize { get { return 12 * ValueTypeSize; } set { } } /// Draws this node. /// The view information. diff --git a/ReClass.NET/Nodes/Matrix4x4Node.cs b/ReClass.NET/Nodes/Matrix4x4Node.cs index deb1e748..81dc6d6b 100644 --- a/ReClass.NET/Nodes/Matrix4x4Node.cs +++ b/ReClass.NET/Nodes/Matrix4x4Node.cs @@ -46,7 +46,7 @@ private struct Matrix4x4Data public override int ValueTypeSize => sizeof(float); - public override int MemorySize => 16 * ValueTypeSize; + public override int MemorySize { get { return 16 * ValueTypeSize; } set { } } /// Draws this node. /// The view information. diff --git a/ReClass.NET/Nodes/UInt16Node.cs b/ReClass.NET/Nodes/UInt16Node.cs index 1c279379..92fbe08f 100644 --- a/ReClass.NET/Nodes/UInt16Node.cs +++ b/ReClass.NET/Nodes/UInt16Node.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes { public class UInt16Node : BaseNumericNode { - public override int MemorySize => 2; + public override int MemorySize { get; set; } = 2; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/UInt32Node.cs b/ReClass.NET/Nodes/UInt32Node.cs index fee519af..3b552190 100644 --- a/ReClass.NET/Nodes/UInt32Node.cs +++ b/ReClass.NET/Nodes/UInt32Node.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes { public class UInt32Node : BaseNumericNode { - public override int MemorySize => 4; + public override int MemorySize { get; set; } = 4; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/UInt64Node.cs b/ReClass.NET/Nodes/UInt64Node.cs index 6a2a61d5..d3c4da5b 100644 --- a/ReClass.NET/Nodes/UInt64Node.cs +++ b/ReClass.NET/Nodes/UInt64Node.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes { public class UInt64Node : BaseNumericNode { - public override int MemorySize => 8; + public override int MemorySize { get; set; } = 8; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/UInt8Node.cs b/ReClass.NET/Nodes/UInt8Node.cs index 6292ac20..3b3d40dd 100644 --- a/ReClass.NET/Nodes/UInt8Node.cs +++ b/ReClass.NET/Nodes/UInt8Node.cs @@ -9,7 +9,7 @@ namespace ReClassNET.Nodes { public class UInt8Node : BaseNumericNode { - public override int MemorySize => 1; + public override int MemorySize { get; set; } = 1; public override Size Draw(ViewInfo view, int x, int y) { diff --git a/ReClass.NET/Nodes/UTF16TextNode.cs b/ReClass.NET/Nodes/UTF16TextNode.cs index 8ed4897b..201d50a3 100644 --- a/ReClass.NET/Nodes/UTF16TextNode.cs +++ b/ReClass.NET/Nodes/UTF16TextNode.cs @@ -8,7 +8,9 @@ public class Utf16TextNode : BaseTextNode { public override Encoding Encoding => Encoding.Unicode; - public override Size Draw(ViewInfo view, int x, int y) + public override int MemorySize { set => throw new System.NotImplementedException(); } + + public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text16"); } diff --git a/ReClass.NET/Nodes/UTF16TextPtrNode.cs b/ReClass.NET/Nodes/UTF16TextPtrNode.cs index 9b6bd111..3c1c5336 100644 --- a/ReClass.NET/Nodes/UTF16TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF16TextPtrNode.cs @@ -8,7 +8,9 @@ public class Utf16TextPtrNode : BaseTextPtrNode { public override Encoding Encoding => Encoding.Unicode; - public override Size Draw(ViewInfo view, int x, int y) + public override int MemorySize { set => throw new System.NotImplementedException(); } + + public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text16Ptr"); } diff --git a/ReClass.NET/Nodes/UTF32TextNode.cs b/ReClass.NET/Nodes/UTF32TextNode.cs index 2c3dd84b..f3a54505 100644 --- a/ReClass.NET/Nodes/UTF32TextNode.cs +++ b/ReClass.NET/Nodes/UTF32TextNode.cs @@ -8,7 +8,9 @@ public class Utf32TextNode : BaseTextNode { public override Encoding Encoding => Encoding.UTF32; - public override Size Draw(ViewInfo view, int x, int y) + public override int MemorySize { set => throw new System.NotImplementedException(); } + + public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text32"); } diff --git a/ReClass.NET/Nodes/UTF32TextPtrNode.cs b/ReClass.NET/Nodes/UTF32TextPtrNode.cs index cd14be3a..bbfb384e 100644 --- a/ReClass.NET/Nodes/UTF32TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF32TextPtrNode.cs @@ -8,7 +8,9 @@ public class Utf32TextPtrNode : BaseTextPtrNode { public override Encoding Encoding => Encoding.UTF32; - public override Size Draw(ViewInfo view, int x, int y) + public override int MemorySize { set => throw new System.NotImplementedException(); } + + public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text32Ptr"); } diff --git a/ReClass.NET/Nodes/UTF8TextNode.cs b/ReClass.NET/Nodes/UTF8TextNode.cs index c724f2a8..1db49ebf 100644 --- a/ReClass.NET/Nodes/UTF8TextNode.cs +++ b/ReClass.NET/Nodes/UTF8TextNode.cs @@ -8,7 +8,9 @@ public class Utf8TextNode : BaseTextNode { public override Encoding Encoding => Encoding.UTF8; - public override Size Draw(ViewInfo view, int x, int y) + public override int MemorySize { set => throw new System.NotImplementedException(); } + + public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text8"); } diff --git a/ReClass.NET/Nodes/UTF8TextPtrNode.cs b/ReClass.NET/Nodes/UTF8TextPtrNode.cs index 501463b3..4e7569ae 100644 --- a/ReClass.NET/Nodes/UTF8TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF8TextPtrNode.cs @@ -8,7 +8,9 @@ public class Utf8TextPtrNode : BaseTextPtrNode { public override Encoding Encoding => Encoding.UTF8; - public override Size Draw(ViewInfo view, int x, int y) + public override int MemorySize { set => throw new System.NotImplementedException(); } + + public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text8Ptr"); } diff --git a/ReClass.NET/Nodes/VMethodNode.cs b/ReClass.NET/Nodes/VMethodNode.cs index aaf17416..c4e350f3 100644 --- a/ReClass.NET/Nodes/VMethodNode.cs +++ b/ReClass.NET/Nodes/VMethodNode.cs @@ -9,7 +9,9 @@ public class VMethodNode : BaseFunctionPtrNode { public string MethodName => string.IsNullOrEmpty(Name) ? $"Function{Offset.ToInt32() / IntPtr.Size}" : Name; - public VMethodNode() + public override int MemorySize { set => throw new NotImplementedException(); } + + public VMethodNode() { Contract.Ensures(Name != null); diff --git a/ReClass.NET/Nodes/VTableNode.cs b/ReClass.NET/Nodes/VTableNode.cs index ff06d6f3..afc0593b 100644 --- a/ReClass.NET/Nodes/VTableNode.cs +++ b/ReClass.NET/Nodes/VTableNode.cs @@ -11,7 +11,7 @@ public class VTableNode : BaseContainerNode { private readonly MemoryBuffer memory = new MemoryBuffer(); - public override int MemorySize => IntPtr.Size; + public override int MemorySize { get; set; } = IntPtr.Size; public override void Intialize() { diff --git a/ReClass.NET/Nodes/Vector2Node.cs b/ReClass.NET/Nodes/Vector2Node.cs index 713dca38..b585ef2f 100644 --- a/ReClass.NET/Nodes/Vector2Node.cs +++ b/ReClass.NET/Nodes/Vector2Node.cs @@ -17,7 +17,7 @@ private struct Vector2Data public override int ValueTypeSize => sizeof(float); - public override int MemorySize => 2 * ValueTypeSize; + public override int MemorySize { get { return 2 * ValueTypeSize; } set { } } /// Draws this node. /// The view information. diff --git a/ReClass.NET/Nodes/Vector3Node.cs b/ReClass.NET/Nodes/Vector3Node.cs index bc5140d9..cf35e318 100644 --- a/ReClass.NET/Nodes/Vector3Node.cs +++ b/ReClass.NET/Nodes/Vector3Node.cs @@ -19,7 +19,7 @@ private struct Vector3Data public override int ValueTypeSize => sizeof(float); - public override int MemorySize => 3 * ValueTypeSize; + public override int MemorySize { get { return 3 * ValueTypeSize; } set { } } /// Draws this node. /// The view information. diff --git a/ReClass.NET/Nodes/Vector4Node.cs b/ReClass.NET/Nodes/Vector4Node.cs index 1db6ce03..a8e54b87 100644 --- a/ReClass.NET/Nodes/Vector4Node.cs +++ b/ReClass.NET/Nodes/Vector4Node.cs @@ -21,7 +21,7 @@ private struct Vector4Data public override int ValueTypeSize => sizeof(float); - public override int MemorySize => 4 * ValueTypeSize; + public override int MemorySize { get { return 4 * ValueTypeSize; } set { } } /// Draws this node. /// The view information. diff --git a/ReClass.NET/UI/LinkedWindowFeatures.cs b/ReClass.NET/UI/LinkedWindowFeatures.cs index 8d4c26d8..d4859dfe 100644 --- a/ReClass.NET/UI/LinkedWindowFeatures.cs +++ b/ReClass.NET/UI/LinkedWindowFeatures.cs @@ -136,7 +136,8 @@ public static void ShowCodeGeneratorForm(IEnumerable classes) { Contract.Requires(classes != null); - ShowCodeGeneratorForm(classes, new CppCodeGenerator()); + bool ptrIs64Bit = MessageBox.Show("Pointer is 64bit (8byte) .?", "Pointer Size", MessageBoxButtons.YesNo) == DialogResult.Yes; + ShowCodeGeneratorForm(classes, new CppCodeGenerator(ptrIs64Bit)); } public static void ShowCodeGeneratorForm(IEnumerable classes, ICodeGenerator generator) diff --git a/ReClass.NET/UI/MemoryViewControl.cs b/ReClass.NET/UI/MemoryViewControl.cs index 36ddbcbc..8c7ee5c9 100644 --- a/ReClass.NET/UI/MemoryViewControl.cs +++ b/ReClass.NET/UI/MemoryViewControl.cs @@ -959,8 +959,9 @@ private void hideNodesToolStripMenuItem_Click(object sender, EventArgs e) private void unhideChildNodesToolStripMenuItem_Click(object sender, EventArgs e) { - UnhideChildNodes(); - } + if (!(sender is ToolStripMenuItem)) + UnhideChildNodes(); + } private void unhideNodesAboveToolStripMenuItem_Click(object sender, EventArgs e) { From 6811a54cd83fe1e7cc57114c688c00fbcd0573cf Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Wed, 24 Apr 2019 11:21:24 +0200 Subject: [PATCH 06/32] Submit updates --- NativeCore/Windows/CloseRemoteProcess.cpp | 5 +++- NativeCore/Windows/OpenRemoteProcess.cpp | 10 ++++++- NativeCore/Windows/Program.h | 3 ++- NativeCore/Windows/ReadRemoteMemory.cpp | 4 +-- NativeCore/Windows/WriteRemoteMemory.cpp | 4 +-- .../CodeGenerator/CSharpCodeGenerator.cs | 3 ++- ReClass.NET/CodeGenerator/CppCodeGenerator.cs | 26 ++++++++++++++++--- ReClass.NET/CodeGenerator/ICodeGenerator.cs | 9 ++++--- ReClass.NET/Forms/CodeForm.cs | 3 +++ ReClass.NET/Forms/MainForm.cs | 5 +++- ReClass.NET/Nodes/ClassPtrNode.cs | 2 +- ReClass.NET/Nodes/FunctionNode.cs | 2 +- ReClass.NET/Nodes/VTableNode.cs | 2 +- 13 files changed, 59 insertions(+), 19 deletions(-) diff --git a/NativeCore/Windows/CloseRemoteProcess.cpp b/NativeCore/Windows/CloseRemoteProcess.cpp index 66dfc6b7..28680de6 100644 --- a/NativeCore/Windows/CloseRemoteProcess.cpp +++ b/NativeCore/Windows/CloseRemoteProcess.cpp @@ -8,6 +8,9 @@ void RC_CallConv CloseRemoteProcess(RC_Pointer handle, DWORD targetProcessID) if (handle != nullptr) CloseHandle(handle); - if (ByPass != nullptr && ByPass->pID == targetProcessID) + /*if (ByPass != nullptr && ByPass->pID == targetProcessID) + { delete ByPass; + ByPass = nullptr; + }*/ } diff --git a/NativeCore/Windows/OpenRemoteProcess.cpp b/NativeCore/Windows/OpenRemoteProcess.cpp index a6f38f5c..f71177de 100644 --- a/NativeCore/Windows/OpenRemoteProcess.cpp +++ b/NativeCore/Windows/OpenRemoteProcess.cpp @@ -4,6 +4,7 @@ #include "NativeCore.hpp" BypaPH *ByPass = nullptr; +bool UseKernal = false; RC_Pointer RC_CallConv OpenRemoteProcess(RC_Pointer id, ProcessAccess desiredAccess, bool useKernal, bool isTargetProcess) { @@ -24,8 +25,15 @@ RC_Pointer RC_CallConv OpenRemoteProcess(RC_Pointer id, ProcessAccess desiredAcc } if (isTargetProcess && useKernal) - ByPass = new BypaPH(pID); + { + UseKernal = useKernal; // must check isTargetProcess + if (ByPass == nullptr) + ByPass = new BypaPH(pID); + else + ByPass->Attach(pID); + } + // Return normal handle to not make a problems const auto handle = OpenProcess(access, FALSE, pID); if (handle == nullptr || handle == INVALID_HANDLE_VALUE) return nullptr; diff --git a/NativeCore/Windows/Program.h b/NativeCore/Windows/Program.h index 56375087..66975067 100644 --- a/NativeCore/Windows/Program.h +++ b/NativeCore/Windows/Program.h @@ -1,4 +1,5 @@ #pragma once #include "../BypaPH/BypaPH.h" -extern BypaPH *ByPass; \ No newline at end of file +extern BypaPH *ByPass; +extern bool UseKernal; \ No newline at end of file diff --git a/NativeCore/Windows/ReadRemoteMemory.cpp b/NativeCore/Windows/ReadRemoteMemory.cpp index 7bccd3b5..235da2f0 100644 --- a/NativeCore/Windows/ReadRemoteMemory.cpp +++ b/NativeCore/Windows/ReadRemoteMemory.cpp @@ -8,12 +8,12 @@ bool RC_CallConv ReadRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Poin buffer = reinterpret_cast(reinterpret_cast(buffer) + offset); SIZE_T numberOfBytesRead = 0; - if (ByPass == nullptr) + if (!UseKernal) { if (ReadProcessMemory(handle, address, buffer, size, &numberOfBytesRead) && size == numberOfBytesRead) return true; } - else // BypaPH + else if (ByPass != nullptr) // BypaPH { NTSTATUS read = ByPass->RWVM(ByPass->m_hTarget, address, buffer, size, &numberOfBytesRead); /*char gg[9] = { '\0' }; diff --git a/NativeCore/Windows/WriteRemoteMemory.cpp b/NativeCore/Windows/WriteRemoteMemory.cpp index a6e0b039..a8afb031 100644 --- a/NativeCore/Windows/WriteRemoteMemory.cpp +++ b/NativeCore/Windows/WriteRemoteMemory.cpp @@ -7,7 +7,7 @@ bool RC_CallConv WriteRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Poi { buffer = reinterpret_cast(reinterpret_cast(buffer) + offset); - if (ByPass == nullptr) + if (!UseKernal) { DWORD oldProtect; if (VirtualProtectEx(handle, address, size, PAGE_EXECUTE_READWRITE, &oldProtect)) @@ -24,7 +24,7 @@ bool RC_CallConv WriteRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Poi } } } - else // BypaPH Stuff + else if (ByPass != nullptr) // BypaPH Stuff { SIZE_T numberOfBytesWritten = 0; if (ByPass->WVM(ByPass->m_hTarget, address, buffer, size, &numberOfBytesWritten) == STATUS_SUCCESS) diff --git a/ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs b/ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs index b532183b..b01802d0 100644 --- a/ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs +++ b/ReClass.NET/CodeGenerator/CSharpCodeGenerator.cs @@ -12,7 +12,6 @@ namespace ReClassNET.CodeGenerator { class CSharpCodeGenerator : ICodeGenerator { - private bool ptrIs64Bit; private readonly Dictionary typeToTypedefMap = new Dictionary { [typeof(DoubleNode)] = "double", @@ -36,6 +35,8 @@ class CSharpCodeGenerator : ICodeGenerator }; public Language Language => Language.CSharp; + public bool ptrIs64Bit { get; } + public CSharpCodeGenerator(bool ptrIs64Bit) { this.ptrIs64Bit = ptrIs64Bit; diff --git a/ReClass.NET/CodeGenerator/CppCodeGenerator.cs b/ReClass.NET/CodeGenerator/CppCodeGenerator.cs index b00524e7..54437e8c 100644 --- a/ReClass.NET/CodeGenerator/CppCodeGenerator.cs +++ b/ReClass.NET/CodeGenerator/CppCodeGenerator.cs @@ -12,7 +12,6 @@ namespace ReClassNET.CodeGenerator { class CppCodeGenerator : ICodeGenerator { - private bool ptrIs64Bit; private readonly Dictionary typeToTypedefMap = new Dictionary { [typeof(BoolNode)] = Program.Settings.TypeBool, @@ -42,6 +41,7 @@ class CppCodeGenerator : ICodeGenerator }; public Language Language => Language.Cpp; + public bool ptrIs64Bit { get; } public CppCodeGenerator(bool ptrIs64Bit) { @@ -50,7 +50,7 @@ public CppCodeGenerator(bool ptrIs64Bit) public string GenerateCode(IEnumerable classes, ILogger logger) { - var classNodes = classes as IList ?? classes.ToList(); + var classNodes = classes as IList ?? classes.ToList(); var sb = new StringBuilder(); sb.AppendLine($"// Created with {Constants.ApplicationName} by {Constants.Author}"); @@ -79,18 +79,36 @@ public string GenerateCode(IEnumerable classes, ILogger logger) } csb.AppendLine(); + List newNodes = new List(c.Nodes); + if (ptrIs64Bit && !Program.TargetProcessIs64) // Game Is x86 and user need ptrIs64Bit (8byte) + { + List IndexsToRmv = new List(); + for (int i = 0; i < newNodes.Count; i++) + { + if (newNodes[i] is ClassPtrNode) + { + IndexsToRmv.Add(i + 1); + i++; + } + } + + foreach (var item in IndexsToRmv) + if (item < newNodes.Count) + newNodes.RemoveAt(item); + } + csb.AppendLine("{"); csb.AppendLine("public:"); csb.AppendLine( string.Join( Environment.NewLine, - YieldMemberDefinitions(c.Nodes.Skip(skipFirstMember ? 1 : 0).WhereNot(n => n is FunctionNode), logger) + YieldMemberDefinitions(newNodes.Skip(skipFirstMember ? 1 : 0).WhereNot(n => n is FunctionNode), logger) .Select(MemberDefinitionToString) .Select(s => "\t" + s) ) ); - var vTableNodes = c.Nodes.OfType().ToList(); + var vTableNodes = newNodes.OfType().ToList(); if (vTableNodes.Any()) { csb.AppendLine(); diff --git a/ReClass.NET/CodeGenerator/ICodeGenerator.cs b/ReClass.NET/CodeGenerator/ICodeGenerator.cs index 525cb744..049838bb 100644 --- a/ReClass.NET/CodeGenerator/ICodeGenerator.cs +++ b/ReClass.NET/CodeGenerator/ICodeGenerator.cs @@ -9,8 +9,9 @@ namespace ReClassNET.CodeGenerator [ContractClass(typeof(CodeGeneratorContract))] public interface ICodeGenerator { - /// The language this generator produces. - Language Language { get; } + bool ptrIs64Bit { get; } + /// The language this generator produces. + Language Language { get; } /// Generates code for the classes. /// The classes to generate code from. @@ -22,9 +23,11 @@ public interface ICodeGenerator [ContractClassFor(typeof(ICodeGenerator))] internal abstract class CodeGeneratorContract : ICodeGenerator { + public bool ptrIs64Bit => throw new NotImplementedException(); public Language Language => throw new NotImplementedException(); - public string GenerateCode(IEnumerable classes, ILogger logger) + + public string GenerateCode(IEnumerable classes, ILogger logger) { Contract.Requires(classes != null); Contract.Requires(Contract.ForAll(classes, c => c != null)); diff --git a/ReClass.NET/Forms/CodeForm.cs b/ReClass.NET/Forms/CodeForm.cs index d6b08984..fc7bcba0 100644 --- a/ReClass.NET/Forms/CodeForm.cs +++ b/ReClass.NET/Forms/CodeForm.cs @@ -28,6 +28,9 @@ public CodeForm(ICodeGenerator generator, IEnumerable classes, ILogge codeRichTextBox.SetInnerPadding(5, 5, 5, 5); + if (generator.ptrIs64Bit) + Text += $" Pointer Is (8Byte)"; + var code = generator.GenerateCode(classes, logger); var buffer = new StringBuilder(code.Length * 2); diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index 63355316..497feccd 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -4,6 +4,7 @@ using System.Drawing; using System.IO; using System.Linq; +using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; @@ -365,7 +366,9 @@ private void cleanUnusedClassesToolStripMenuItem_Click(object sender, EventArgs private void generateCppCodeToolStripMenuItem_Click(object sender, EventArgs e) { - bool ptrIs64Bit = MessageBox.Show("Pointer is 64bit (8byte) .?", "Pointer Size", MessageBoxButtons.YesNo) == DialogResult.Yes; + bool ptrIs64Bit = MessageBox.Show($"Pointer is 64bit (8byte) .?", "Pointer Size", MessageBoxButtons.YesNo) == DialogResult.Yes; + if (ptrIs64Bit && !Program.TargetProcessIs64) + MessageBox.Show("You targeting (x84) Process, so make sure u have 4bytes after every ClassPtr.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); ShowCodeForm(new CppCodeGenerator(ptrIs64Bit)); } diff --git a/ReClass.NET/Nodes/ClassPtrNode.cs b/ReClass.NET/Nodes/ClassPtrNode.cs index fcb2acd5..68a22c5d 100644 --- a/ReClass.NET/Nodes/ClassPtrNode.cs +++ b/ReClass.NET/Nodes/ClassPtrNode.cs @@ -12,7 +12,7 @@ public class ClassPtrNode : BaseReferenceNode { private readonly MemoryBuffer memory = new MemoryBuffer(); - public override int MemorySize { get; set; } = IntPtr.Size; + public override int MemorySize { get; set; } = Program.TargetProcessIs64 ? 8 : 4; public override bool PerformCycleCheck => false; diff --git a/ReClass.NET/Nodes/FunctionNode.cs b/ReClass.NET/Nodes/FunctionNode.cs index 7d86fb8d..db24b028 100644 --- a/ReClass.NET/Nodes/FunctionNode.cs +++ b/ReClass.NET/Nodes/FunctionNode.cs @@ -16,7 +16,7 @@ public class FunctionNode : BaseFunctionNode private int memorySize = IntPtr.Size; /// Size of the node in bytes. - public override int MemorySize { get; set; } = IntPtr.Size; + public override int MemorySize { get; set; } = Program.TargetProcessIs64 ? 8 : 4; public override string GetToolTipText(HotSpot spot, MemoryBuffer memory) { diff --git a/ReClass.NET/Nodes/VTableNode.cs b/ReClass.NET/Nodes/VTableNode.cs index afc0593b..bebdcfc3 100644 --- a/ReClass.NET/Nodes/VTableNode.cs +++ b/ReClass.NET/Nodes/VTableNode.cs @@ -11,7 +11,7 @@ public class VTableNode : BaseContainerNode { private readonly MemoryBuffer memory = new MemoryBuffer(); - public override int MemorySize { get; set; } = IntPtr.Size; + public override int MemorySize { get; set; } = Program.TargetProcessIs64 ? 8 : 4; public override void Intialize() { From f13756c44a5fce3bcceab6836e33bcf36484ef9b Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Wed, 24 Apr 2019 12:16:43 +0200 Subject: [PATCH 07/32] Some FIxes --- NativeCore/ReClassNET_Plugin.hpp | 1 + NativeCore/Windows/CloseRemoteProcess.cpp | 4 +- NativeCore/Windows/ReadRemoteMemory.cpp | 5 - ReClass.NET/Forms/MainForm.Designer.cs | 2243 +++++++++-------- ReClass.NET/Forms/MainForm.cs | 8 +- .../Forms/ProcessBrowserForm.Designer.cs | 434 ++-- ReClass.NET/UI/MemoryPreviewPopUp.cs | 51 +- 7 files changed, 1384 insertions(+), 1362 deletions(-) diff --git a/NativeCore/ReClassNET_Plugin.hpp b/NativeCore/ReClassNET_Plugin.hpp index 58e909e3..26881a59 100644 --- a/NativeCore/ReClassNET_Plugin.hpp +++ b/NativeCore/ReClassNET_Plugin.hpp @@ -76,6 +76,7 @@ enum class SectionType enum class SectionCategory { Unknown, + CODE, DATA, HEAP diff --git a/NativeCore/Windows/CloseRemoteProcess.cpp b/NativeCore/Windows/CloseRemoteProcess.cpp index 28680de6..8702a9fe 100644 --- a/NativeCore/Windows/CloseRemoteProcess.cpp +++ b/NativeCore/Windows/CloseRemoteProcess.cpp @@ -8,9 +8,9 @@ void RC_CallConv CloseRemoteProcess(RC_Pointer handle, DWORD targetProcessID) if (handle != nullptr) CloseHandle(handle); - /*if (ByPass != nullptr && ByPass->pID == targetProcessID) + if (ByPass != nullptr && ByPass->pID == targetProcessID) { delete ByPass; ByPass = nullptr; - }*/ + } } diff --git a/NativeCore/Windows/ReadRemoteMemory.cpp b/NativeCore/Windows/ReadRemoteMemory.cpp index 235da2f0..b2218b1e 100644 --- a/NativeCore/Windows/ReadRemoteMemory.cpp +++ b/NativeCore/Windows/ReadRemoteMemory.cpp @@ -16,13 +16,8 @@ bool RC_CallConv ReadRemoteMemory(RC_Pointer handle, RC_Pointer address, RC_Poin else if (ByPass != nullptr) // BypaPH { NTSTATUS read = ByPass->RWVM(ByPass->m_hTarget, address, buffer, size, &numberOfBytesRead); - /*char gg[9] = { '\0' }; - sprintf_s(gg, sizeof(gg), "%x", read); - MessageBox(0, gg, "GG Read", MB_OK);*/ - if (read == STATUS_SUCCESS && size == numberOfBytesRead) return true; - } return false; diff --git a/ReClass.NET/Forms/MainForm.Designer.cs b/ReClass.NET/Forms/MainForm.Designer.cs index 8caf3da7..e8e4511d 100644 --- a/ReClass.NET/Forms/MainForm.Designer.cs +++ b/ReClass.NET/Forms/MainForm.Designer.cs @@ -28,174 +28,176 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); - this.processUpdateTimer = new System.Windows.Forms.Timer(this.components); - this.splitContainer = new System.Windows.Forms.SplitContainer(); - this.classesView = new ReClassNET.UI.ClassNodeView(); - this.memoryViewControl = new ReClassNET.UI.MemoryViewControl(); - this.toolStrip = new System.Windows.Forms.ToolStrip(); - this.attachToProcessToolStripSplitButton = new System.Windows.Forms.ToolStripSplitButton(); - this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); - this.openProjectToolStripButton = new System.Windows.Forms.ToolStripButton(); - this.saveToolStripButton = new System.Windows.Forms.ToolStripButton(); - this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); - this.newClassToolStripButton = new System.Windows.Forms.ToolStripButton(); - this.addBytesToolStripDropDownButton = new System.Windows.Forms.ToolStripDropDownButton(); - this.add4BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add8BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add64BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add256BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add1024BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add2048BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add4096BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.addXBytesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.insertBytesToolStripDropDownButton = new System.Windows.Forms.ToolStripDropDownButton(); - this.insert4BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert8BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert64BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert256BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert1024BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert2048BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert4096BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insertXBytesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); - this.hex64ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.hex32ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.hex16ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.hex8ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); - this.int64ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.int32ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.int16ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.int8ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); - this.uint64ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.uint32ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.uint16ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.uint8ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); - this.boolToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.bitFieldToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); - this.floatToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.doubleToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); - this.vec4ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.vec3ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.vec2ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.mat44ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.mat34ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.mat33ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); - this.utf8TextToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.utf8TextPtrToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.utf16TextToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.utf16TextPtrToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); - this.classInstanceToolStripButton6 = new ReClassNET.UI.TypeToolStripButton(); - this.classPtrToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator(); - this.arrayToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.ptrArrayToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.vtableToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.fnPtrToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.fnTypeToolStripButton = new ReClassNET.UI.TypeToolStripButton(); - this.toolStripSeparator19 = new System.Windows.Forms.ToolStripSeparator(); - this.statusStrip = new System.Windows.Forms.StatusStrip(); - this.processInfoToolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); - this.infoToolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); - this.mainMenuStrip = new System.Windows.Forms.MenuStrip(); - this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.attachToProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.reattachToProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.detachToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.openProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.mergeWithProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.clearProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.pluginsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); - this.quitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.processToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.processInformationsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.memorySearcherToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator(); - this.loadSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.loadSymbolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.resumeProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.suspendProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.terminateProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.namedAddressesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.projectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.cleanUnusedClassesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator(); - this.generateCppCodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.generateCSharpCodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit(); - this.splitContainer.Panel1.SuspendLayout(); - this.splitContainer.Panel2.SuspendLayout(); - this.splitContainer.SuspendLayout(); - this.toolStrip.SuspendLayout(); - this.statusStrip.SuspendLayout(); - this.mainMenuStrip.SuspendLayout(); - this.SuspendLayout(); - // - // processUpdateTimer - // - this.processUpdateTimer.Enabled = true; - this.processUpdateTimer.Interval = 5000; - this.processUpdateTimer.Tick += new System.EventHandler(this.processUpdateTimer_Tick); - // - // splitContainer - // - this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; - this.splitContainer.Location = new System.Drawing.Point(0, 49); - this.splitContainer.Name = "splitContainer"; - // - // splitContainer.Panel1 - // - this.splitContainer.Panel1.Controls.Add(this.classesView); - // - // splitContainer.Panel2 - // - this.splitContainer.Panel2.BackColor = System.Drawing.SystemColors.Control; - this.splitContainer.Panel2.Controls.Add(this.memoryViewControl); - this.splitContainer.Size = new System.Drawing.Size(1141, 524); - this.splitContainer.SplitterDistance = 201; - this.splitContainer.TabIndex = 4; - // - // classesView - // - this.classesView.Dock = System.Windows.Forms.DockStyle.Fill; - this.classesView.Location = new System.Drawing.Point(0, 0); - this.classesView.Name = "classesView"; - this.classesView.Size = new System.Drawing.Size(201, 524); - this.classesView.TabIndex = 0; - this.classesView.SelectionChanged += new ReClassNET.UI.ClassNodeView.SelectionChangedEvent(this.classesView_ClassSelected); - // - // memoryViewControl - // - this.memoryViewControl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.memoryViewControl.Dock = System.Windows.Forms.DockStyle.Fill; - this.memoryViewControl.Location = new System.Drawing.Point(0, 0); - this.memoryViewControl.Name = "memoryViewControl"; - this.memoryViewControl.Size = new System.Drawing.Size(936, 524); - this.memoryViewControl.TabIndex = 0; - this.memoryViewControl.SelectionChanged += new System.EventHandler(this.memoryViewControl_SelectionChanged); - // - // toolStrip - // - this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm)); + this.processUpdateTimer = new System.Windows.Forms.Timer(this.components); + this.splitContainer = new System.Windows.Forms.SplitContainer(); + this.classesView = new ReClassNET.UI.ClassNodeView(); + this.memoryViewControl = new ReClassNET.UI.MemoryViewControl(); + this.toolStrip = new System.Windows.Forms.ToolStrip(); + this.attachToProcessToolStripSplitButton = new System.Windows.Forms.ToolStripSplitButton(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.openProjectToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.saveToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.newClassToolStripButton = new System.Windows.Forms.ToolStripButton(); + this.addBytesToolStripDropDownButton = new System.Windows.Forms.ToolStripDropDownButton(); + this.add4BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add8BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add64BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add256BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add1024BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add2048BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add4096BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.addXBytesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.insertBytesToolStripDropDownButton = new System.Windows.Forms.ToolStripDropDownButton(); + this.insert4BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert8BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert64BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert256BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert1024BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert2048BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert4096BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insertXBytesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.hex64ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.hex32ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.hex16ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.hex8ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.int64ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.int32ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.int16ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.int8ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.uint64ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.uint32ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.uint16ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.uint8ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.boolToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.bitFieldToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); + this.floatToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.doubleToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); + this.vec4ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.vec3ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.vec2ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.mat44ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.mat34ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.mat33ToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); + this.utf8TextToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.utf8TextPtrToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.utf16TextToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.utf16TextPtrToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); + this.classInstanceToolStripButton6 = new ReClassNET.UI.TypeToolStripButton(); + this.classPtrToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator(); + this.arrayToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.ptrArrayToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.vtableToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.fnPtrToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.fnTypeToolStripButton = new ReClassNET.UI.TypeToolStripButton(); + this.toolStripSeparator19 = new System.Windows.Forms.ToolStripSeparator(); + this.statusStrip = new System.Windows.Forms.StatusStrip(); + this.processInfoToolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.infoToolStripStatusLabel = new System.Windows.Forms.ToolStripStatusLabel(); + this.mainMenuStrip = new System.Windows.Forms.MenuStrip(); + this.fileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.attachToProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.reattachToProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.detachToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.openProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.mergeWithProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.clearProjectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.saveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.saveAsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.settingsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pluginsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.quitToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.processToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.processInformationsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.memorySearcherToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.namedAddressesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator(); + this.loadSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.loadSymbolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.resumeProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.suspendProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.terminateProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.projectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.cleanUnusedClassesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator(); + this.generateCppCodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.generateCSharpCodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.addNewClassToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator20 = new System.Windows.Forms.ToolStripSeparator(); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit(); + this.splitContainer.Panel1.SuspendLayout(); + this.splitContainer.Panel2.SuspendLayout(); + this.splitContainer.SuspendLayout(); + this.toolStrip.SuspendLayout(); + this.statusStrip.SuspendLayout(); + this.mainMenuStrip.SuspendLayout(); + this.SuspendLayout(); + // + // processUpdateTimer + // + this.processUpdateTimer.Enabled = true; + this.processUpdateTimer.Interval = 5000; + this.processUpdateTimer.Tick += new System.EventHandler(this.processUpdateTimer_Tick); + // + // splitContainer + // + this.splitContainer.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer.FixedPanel = System.Windows.Forms.FixedPanel.Panel1; + this.splitContainer.Location = new System.Drawing.Point(0, 49); + this.splitContainer.Name = "splitContainer"; + // + // splitContainer.Panel1 + // + this.splitContainer.Panel1.Controls.Add(this.classesView); + // + // splitContainer.Panel2 + // + this.splitContainer.Panel2.BackColor = System.Drawing.SystemColors.Control; + this.splitContainer.Panel2.Controls.Add(this.memoryViewControl); + this.splitContainer.Size = new System.Drawing.Size(1141, 524); + this.splitContainer.SplitterDistance = 172; + this.splitContainer.TabIndex = 4; + // + // classesView + // + this.classesView.Dock = System.Windows.Forms.DockStyle.Fill; + this.classesView.Location = new System.Drawing.Point(0, 0); + this.classesView.Name = "classesView"; + this.classesView.Size = new System.Drawing.Size(172, 524); + this.classesView.TabIndex = 0; + this.classesView.SelectionChanged += new ReClassNET.UI.ClassNodeView.SelectionChangedEvent(this.classesView_ClassSelected); + // + // memoryViewControl + // + this.memoryViewControl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.memoryViewControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.memoryViewControl.Location = new System.Drawing.Point(0, 0); + this.memoryViewControl.Name = "memoryViewControl"; + this.memoryViewControl.Size = new System.Drawing.Size(965, 524); + this.memoryViewControl.TabIndex = 0; + this.memoryViewControl.SelectionChanged += new System.EventHandler(this.memoryViewControl_SelectionChanged); + // + // toolStrip + // + this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.attachToProcessToolStripSplitButton, this.toolStripSeparator6, this.openProjectToolStripButton, @@ -247,68 +249,68 @@ private void InitializeComponent() this.fnPtrToolStripButton, this.fnTypeToolStripButton, this.toolStripSeparator19}); - this.toolStrip.Location = new System.Drawing.Point(0, 24); - this.toolStrip.Name = "toolStrip"; - this.toolStrip.Size = new System.Drawing.Size(1141, 25); - this.toolStrip.TabIndex = 3; - // - // attachToProcessToolStripSplitButton - // - this.attachToProcessToolStripSplitButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.attachToProcessToolStripSplitButton.Image = global::ReClassNET.Properties.Resources.B16x16_Magnifier; - this.attachToProcessToolStripSplitButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.attachToProcessToolStripSplitButton.Name = "attachToProcessToolStripSplitButton"; - this.attachToProcessToolStripSplitButton.Size = new System.Drawing.Size(32, 22); - this.attachToProcessToolStripSplitButton.ToolTipText = "Attach to Process..."; - this.attachToProcessToolStripSplitButton.ButtonClick += new System.EventHandler(this.attachToProcessToolStripSplitButton_ButtonClick); - this.attachToProcessToolStripSplitButton.DropDownClosed += new System.EventHandler(this.attachToProcessToolStripSplitButton_DropDownClosed); - this.attachToProcessToolStripSplitButton.DropDownOpening += new System.EventHandler(this.attachToProcessToolStripSplitButton_DropDownOpening); - // - // toolStripSeparator6 - // - this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25); - // - // openProjectToolStripButton - // - this.openProjectToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.openProjectToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Folder; - this.openProjectToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.openProjectToolStripButton.Name = "openProjectToolStripButton"; - this.openProjectToolStripButton.Size = new System.Drawing.Size(23, 22); - this.openProjectToolStripButton.ToolTipText = "Open Project..."; - this.openProjectToolStripButton.Click += new System.EventHandler(this.openProjectToolStripMenuItem_Click); - // - // saveToolStripButton - // - this.saveToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.saveToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Save; - this.saveToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.saveToolStripButton.Name = "saveToolStripButton"; - this.saveToolStripButton.Size = new System.Drawing.Size(23, 22); - this.saveToolStripButton.ToolTipText = "Save Project"; - this.saveToolStripButton.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); - // - // toolStripSeparator7 - // - this.toolStripSeparator7.Name = "toolStripSeparator7"; - this.toolStripSeparator7.Size = new System.Drawing.Size(6, 25); - // - // newClassToolStripButton - // - this.newClassToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.newClassToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Add; - this.newClassToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.newClassToolStripButton.Name = "newClassToolStripButton"; - this.newClassToolStripButton.Size = new System.Drawing.Size(23, 22); - this.newClassToolStripButton.Text = "addClassToolStripButton"; - this.newClassToolStripButton.ToolTipText = "Add a new class to this project"; - this.newClassToolStripButton.Click += new System.EventHandler(this.newClassToolStripButton_Click); - // - // addBytesToolStripDropDownButton - // - this.addBytesToolStripDropDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.addBytesToolStripDropDownButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStrip.Location = new System.Drawing.Point(0, 24); + this.toolStrip.Name = "toolStrip"; + this.toolStrip.Size = new System.Drawing.Size(1141, 25); + this.toolStrip.TabIndex = 3; + // + // attachToProcessToolStripSplitButton + // + this.attachToProcessToolStripSplitButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.attachToProcessToolStripSplitButton.Image = global::ReClassNET.Properties.Resources.B16x16_Magnifier; + this.attachToProcessToolStripSplitButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.attachToProcessToolStripSplitButton.Name = "attachToProcessToolStripSplitButton"; + this.attachToProcessToolStripSplitButton.Size = new System.Drawing.Size(32, 22); + this.attachToProcessToolStripSplitButton.ToolTipText = "Attach to Process..."; + this.attachToProcessToolStripSplitButton.ButtonClick += new System.EventHandler(this.attachToProcessToolStripSplitButton_ButtonClick); + this.attachToProcessToolStripSplitButton.DropDownClosed += new System.EventHandler(this.attachToProcessToolStripSplitButton_DropDownClosed); + this.attachToProcessToolStripSplitButton.DropDownOpening += new System.EventHandler(this.attachToProcessToolStripSplitButton_DropDownOpening); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(6, 25); + // + // openProjectToolStripButton + // + this.openProjectToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.openProjectToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Folder; + this.openProjectToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.openProjectToolStripButton.Name = "openProjectToolStripButton"; + this.openProjectToolStripButton.Size = new System.Drawing.Size(23, 22); + this.openProjectToolStripButton.ToolTipText = "Open Project..."; + this.openProjectToolStripButton.Click += new System.EventHandler(this.openProjectToolStripMenuItem_Click); + // + // saveToolStripButton + // + this.saveToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.saveToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Save; + this.saveToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.saveToolStripButton.Name = "saveToolStripButton"; + this.saveToolStripButton.Size = new System.Drawing.Size(23, 22); + this.saveToolStripButton.ToolTipText = "Save Project"; + this.saveToolStripButton.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(6, 25); + // + // newClassToolStripButton + // + this.newClassToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.newClassToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Add; + this.newClassToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.newClassToolStripButton.Name = "newClassToolStripButton"; + this.newClassToolStripButton.Size = new System.Drawing.Size(23, 22); + this.newClassToolStripButton.Text = "addClassToolStripButton"; + this.newClassToolStripButton.ToolTipText = "Add a new class to this project"; + this.newClassToolStripButton.Click += new System.EventHandler(this.newClassToolStripButton_Click); + // + // addBytesToolStripDropDownButton + // + this.addBytesToolStripDropDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.addBytesToolStripDropDownButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.add4BytesToolStripMenuItem, this.add8BytesToolStripMenuItem, this.add64BytesToolStripMenuItem, @@ -317,87 +319,87 @@ private void InitializeComponent() this.add2048BytesToolStripMenuItem, this.add4096BytesToolStripMenuItem, this.addXBytesToolStripMenuItem}); - this.addBytesToolStripDropDownButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_X; - this.addBytesToolStripDropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.addBytesToolStripDropDownButton.Name = "addBytesToolStripDropDownButton"; - this.addBytesToolStripDropDownButton.Size = new System.Drawing.Size(29, 22); - // - // add4BytesToolStripMenuItem - // - this.add4BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_4; - this.add4BytesToolStripMenuItem.Name = "add4BytesToolStripMenuItem"; - this.add4BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add4BytesToolStripMenuItem.Tag = ""; - this.add4BytesToolStripMenuItem.Text = "Add 4 Bytes"; - this.add4BytesToolStripMenuItem.Value = 4; - this.add4BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add8BytesToolStripMenuItem - // - this.add8BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_8; - this.add8BytesToolStripMenuItem.Name = "add8BytesToolStripMenuItem"; - this.add8BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add8BytesToolStripMenuItem.Text = "Add 8 Bytes"; - this.add8BytesToolStripMenuItem.Value = 8; - this.add8BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add64BytesToolStripMenuItem - // - this.add64BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_64; - this.add64BytesToolStripMenuItem.Name = "add64BytesToolStripMenuItem"; - this.add64BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add64BytesToolStripMenuItem.Text = "Add 64 Bytes"; - this.add64BytesToolStripMenuItem.Value = 64; - this.add64BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add256BytesToolStripMenuItem - // - this.add256BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_256; - this.add256BytesToolStripMenuItem.Name = "add256BytesToolStripMenuItem"; - this.add256BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add256BytesToolStripMenuItem.Text = "Add 256 Bytes"; - this.add256BytesToolStripMenuItem.Value = 256; - this.add256BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add1024BytesToolStripMenuItem - // - this.add1024BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_1024; - this.add1024BytesToolStripMenuItem.Name = "add1024BytesToolStripMenuItem"; - this.add1024BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add1024BytesToolStripMenuItem.Text = "Add 1024 Bytes"; - this.add1024BytesToolStripMenuItem.Value = 1024; - this.add1024BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add2048BytesToolStripMenuItem - // - this.add2048BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_2048; - this.add2048BytesToolStripMenuItem.Name = "add2048BytesToolStripMenuItem"; - this.add2048BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add2048BytesToolStripMenuItem.Text = "Add 2048 Bytes"; - this.add2048BytesToolStripMenuItem.Value = 2048; - this.add2048BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add4096BytesToolStripMenuItem - // - this.add4096BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_4096; - this.add4096BytesToolStripMenuItem.Name = "add4096BytesToolStripMenuItem"; - this.add4096BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add4096BytesToolStripMenuItem.Text = "Add 4096 Bytes"; - this.add4096BytesToolStripMenuItem.Value = 4096; - this.add4096BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // addXBytesToolStripMenuItem - // - this.addXBytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_X; - this.addXBytesToolStripMenuItem.Name = "addXBytesToolStripMenuItem"; - this.addXBytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.addXBytesToolStripMenuItem.Text = "Add ... Bytes"; - this.addXBytesToolStripMenuItem.Click += new System.EventHandler(this.addXBytesToolStripMenuItem_Click); - // - // insertBytesToolStripDropDownButton - // - this.insertBytesToolStripDropDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.insertBytesToolStripDropDownButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.addBytesToolStripDropDownButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_X; + this.addBytesToolStripDropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.addBytesToolStripDropDownButton.Name = "addBytesToolStripDropDownButton"; + this.addBytesToolStripDropDownButton.Size = new System.Drawing.Size(29, 22); + // + // add4BytesToolStripMenuItem + // + this.add4BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_4; + this.add4BytesToolStripMenuItem.Name = "add4BytesToolStripMenuItem"; + this.add4BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add4BytesToolStripMenuItem.Tag = ""; + this.add4BytesToolStripMenuItem.Text = "Add 4 Bytes"; + this.add4BytesToolStripMenuItem.Value = 4; + this.add4BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add8BytesToolStripMenuItem + // + this.add8BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_8; + this.add8BytesToolStripMenuItem.Name = "add8BytesToolStripMenuItem"; + this.add8BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add8BytesToolStripMenuItem.Text = "Add 8 Bytes"; + this.add8BytesToolStripMenuItem.Value = 8; + this.add8BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add64BytesToolStripMenuItem + // + this.add64BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_64; + this.add64BytesToolStripMenuItem.Name = "add64BytesToolStripMenuItem"; + this.add64BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add64BytesToolStripMenuItem.Text = "Add 64 Bytes"; + this.add64BytesToolStripMenuItem.Value = 64; + this.add64BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add256BytesToolStripMenuItem + // + this.add256BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_256; + this.add256BytesToolStripMenuItem.Name = "add256BytesToolStripMenuItem"; + this.add256BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add256BytesToolStripMenuItem.Text = "Add 256 Bytes"; + this.add256BytesToolStripMenuItem.Value = 256; + this.add256BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add1024BytesToolStripMenuItem + // + this.add1024BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_1024; + this.add1024BytesToolStripMenuItem.Name = "add1024BytesToolStripMenuItem"; + this.add1024BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add1024BytesToolStripMenuItem.Text = "Add 1024 Bytes"; + this.add1024BytesToolStripMenuItem.Value = 1024; + this.add1024BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add2048BytesToolStripMenuItem + // + this.add2048BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_2048; + this.add2048BytesToolStripMenuItem.Name = "add2048BytesToolStripMenuItem"; + this.add2048BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add2048BytesToolStripMenuItem.Text = "Add 2048 Bytes"; + this.add2048BytesToolStripMenuItem.Value = 2048; + this.add2048BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add4096BytesToolStripMenuItem + // + this.add4096BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_4096; + this.add4096BytesToolStripMenuItem.Name = "add4096BytesToolStripMenuItem"; + this.add4096BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add4096BytesToolStripMenuItem.Text = "Add 4096 Bytes"; + this.add4096BytesToolStripMenuItem.Value = 4096; + this.add4096BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // addXBytesToolStripMenuItem + // + this.addXBytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_X; + this.addXBytesToolStripMenuItem.Name = "addXBytesToolStripMenuItem"; + this.addXBytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.addXBytesToolStripMenuItem.Text = "Add ... Bytes"; + this.addXBytesToolStripMenuItem.Click += new System.EventHandler(this.addXBytesToolStripMenuItem_Click); + // + // insertBytesToolStripDropDownButton + // + this.insertBytesToolStripDropDownButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.insertBytesToolStripDropDownButton.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.insert4BytesToolStripMenuItem, this.insert8BytesToolStripMenuItem, this.insert64BytesToolStripMenuItem, @@ -406,535 +408,535 @@ private void InitializeComponent() this.insert2048BytesToolStripMenuItem, this.insert4096BytesToolStripMenuItem, this.insertXBytesToolStripMenuItem}); - this.insertBytesToolStripDropDownButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_X; - this.insertBytesToolStripDropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.insertBytesToolStripDropDownButton.Name = "insertBytesToolStripDropDownButton"; - this.insertBytesToolStripDropDownButton.Size = new System.Drawing.Size(29, 22); - this.insertBytesToolStripDropDownButton.ToolTipText = "Insert bytes at selected position"; - // - // insert4BytesToolStripMenuItem - // - this.insert4BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_4; - this.insert4BytesToolStripMenuItem.Name = "insert4BytesToolStripMenuItem"; - this.insert4BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert4BytesToolStripMenuItem.Tag = ""; - this.insert4BytesToolStripMenuItem.Text = "Insert 4 Bytes"; - this.insert4BytesToolStripMenuItem.Value = 4; - this.insert4BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert8BytesToolStripMenuItem - // - this.insert8BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_8; - this.insert8BytesToolStripMenuItem.Name = "insert8BytesToolStripMenuItem"; - this.insert8BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert8BytesToolStripMenuItem.Text = "Insert 8 Bytes"; - this.insert8BytesToolStripMenuItem.Value = 8; - this.insert8BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert64BytesToolStripMenuItem - // - this.insert64BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_64; - this.insert64BytesToolStripMenuItem.Name = "insert64BytesToolStripMenuItem"; - this.insert64BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert64BytesToolStripMenuItem.Text = "Insert 64 Bytes"; - this.insert64BytesToolStripMenuItem.Value = 64; - this.insert64BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert256BytesToolStripMenuItem - // - this.insert256BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_256; - this.insert256BytesToolStripMenuItem.Name = "insert256BytesToolStripMenuItem"; - this.insert256BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert256BytesToolStripMenuItem.Text = "Insert 256 Bytes"; - this.insert256BytesToolStripMenuItem.Value = 256; - this.insert256BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert1024BytesToolStripMenuItem - // - this.insert1024BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_1024; - this.insert1024BytesToolStripMenuItem.Name = "insert1024BytesToolStripMenuItem"; - this.insert1024BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert1024BytesToolStripMenuItem.Text = "Insert 1024 Bytes"; - this.insert1024BytesToolStripMenuItem.Value = 1024; - this.insert1024BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert2048BytesToolStripMenuItem - // - this.insert2048BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_2048; - this.insert2048BytesToolStripMenuItem.Name = "insert2048BytesToolStripMenuItem"; - this.insert2048BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert2048BytesToolStripMenuItem.Text = "Insert 2048 Bytes"; - this.insert2048BytesToolStripMenuItem.Value = 2048; - this.insert2048BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert4096BytesToolStripMenuItem - // - this.insert4096BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_4096; - this.insert4096BytesToolStripMenuItem.Name = "insert4096BytesToolStripMenuItem"; - this.insert4096BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert4096BytesToolStripMenuItem.Text = "Insert 4096 Bytes"; - this.insert4096BytesToolStripMenuItem.Value = 4096; - this.insert4096BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insertXBytesToolStripMenuItem - // - this.insertXBytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_X; - this.insertXBytesToolStripMenuItem.Name = "insertXBytesToolStripMenuItem"; - this.insertXBytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insertXBytesToolStripMenuItem.Text = "Insert ... Bytes"; - this.insertXBytesToolStripMenuItem.Click += new System.EventHandler(this.insertXBytesToolStripMenuItem_Click); - // - // toolStripSeparator8 - // - this.toolStripSeparator8.Name = "toolStripSeparator8"; - this.toolStripSeparator8.Size = new System.Drawing.Size(6, 25); - // - // hex64ToolStripButton - // - this.hex64ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.hex64ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_64; - this.hex64ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.hex64ToolStripButton.Name = "hex64ToolStripButton"; - this.hex64ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.hex64ToolStripButton.ToolTipText = "Hex64"; - this.hex64ToolStripButton.Value = typeof(ReClassNET.Nodes.Hex64Node); - this.hex64ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // hex32ToolStripButton - // - this.hex32ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.hex32ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_32; - this.hex32ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.hex32ToolStripButton.Name = "hex32ToolStripButton"; - this.hex32ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.hex32ToolStripButton.ToolTipText = "Hex32"; - this.hex32ToolStripButton.Value = typeof(ReClassNET.Nodes.Hex32Node); - this.hex32ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // hex16ToolStripButton - // - this.hex16ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.hex16ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_16; - this.hex16ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.hex16ToolStripButton.Name = "hex16ToolStripButton"; - this.hex16ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.hex16ToolStripButton.ToolTipText = "Hex16"; - this.hex16ToolStripButton.Value = typeof(ReClassNET.Nodes.Hex16Node); - this.hex16ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // hex8ToolStripButton - // - this.hex8ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.hex8ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_8; - this.hex8ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.hex8ToolStripButton.Name = "hex8ToolStripButton"; - this.hex8ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.hex8ToolStripButton.ToolTipText = "Hex8"; - this.hex8ToolStripButton.Value = typeof(ReClassNET.Nodes.Hex8Node); - this.hex8ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator9 - // - this.toolStripSeparator9.Name = "toolStripSeparator9"; - this.toolStripSeparator9.Size = new System.Drawing.Size(6, 25); - // - // int64ToolStripButton - // - this.int64ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.int64ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_64; - this.int64ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.int64ToolStripButton.Name = "int64ToolStripButton"; - this.int64ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.int64ToolStripButton.ToolTipText = "Int64"; - this.int64ToolStripButton.Value = typeof(ReClassNET.Nodes.Int64Node); - this.int64ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // int32ToolStripButton - // - this.int32ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.int32ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_32; - this.int32ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.int32ToolStripButton.Name = "int32ToolStripButton"; - this.int32ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.int32ToolStripButton.ToolTipText = "Int32"; - this.int32ToolStripButton.Value = typeof(ReClassNET.Nodes.Int32Node); - this.int32ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // int16ToolStripButton - // - this.int16ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.int16ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_16; - this.int16ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.int16ToolStripButton.Name = "int16ToolStripButton"; - this.int16ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.int16ToolStripButton.ToolTipText = "Int16"; - this.int16ToolStripButton.Value = typeof(ReClassNET.Nodes.Int16Node); - this.int16ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // int8ToolStripButton - // - this.int8ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.int8ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_8; - this.int8ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.int8ToolStripButton.Name = "int8ToolStripButton"; - this.int8ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.int8ToolStripButton.ToolTipText = "Int8"; - this.int8ToolStripButton.Value = typeof(ReClassNET.Nodes.Int8Node); - this.int8ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator10 - // - this.toolStripSeparator10.Name = "toolStripSeparator10"; - this.toolStripSeparator10.Size = new System.Drawing.Size(6, 25); - // - // uint64ToolStripButton - // - this.uint64ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.uint64ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_64; - this.uint64ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.uint64ToolStripButton.Name = "uint64ToolStripButton"; - this.uint64ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.uint64ToolStripButton.ToolTipText = "UInt64 / QWORD"; - this.uint64ToolStripButton.Value = typeof(ReClassNET.Nodes.UInt64Node); - this.uint64ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // uint32ToolStripButton - // - this.uint32ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.uint32ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_32; - this.uint32ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.uint32ToolStripButton.Name = "uint32ToolStripButton"; - this.uint32ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.uint32ToolStripButton.ToolTipText = "UInt32 / DWORD"; - this.uint32ToolStripButton.Value = typeof(ReClassNET.Nodes.UInt32Node); - this.uint32ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // uint16ToolStripButton - // - this.uint16ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.uint16ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_16; - this.uint16ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.uint16ToolStripButton.Name = "uint16ToolStripButton"; - this.uint16ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.uint16ToolStripButton.ToolTipText = "UInt16 / WORD"; - this.uint16ToolStripButton.Value = typeof(ReClassNET.Nodes.UInt16Node); - this.uint16ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // uint8ToolStripButton - // - this.uint8ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.uint8ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_8; - this.uint8ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.uint8ToolStripButton.Name = "uint8ToolStripButton"; - this.uint8ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.uint8ToolStripButton.ToolTipText = "UInt8 / BYTE"; - this.uint8ToolStripButton.Value = typeof(ReClassNET.Nodes.UInt8Node); - this.uint8ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator11 - // - this.toolStripSeparator11.Name = "toolStripSeparator11"; - this.toolStripSeparator11.Size = new System.Drawing.Size(6, 25); - // - // boolToolStripButton - // - this.boolToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.boolToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Bool; - this.boolToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.boolToolStripButton.Name = "boolToolStripButton"; - this.boolToolStripButton.Size = new System.Drawing.Size(23, 22); - this.boolToolStripButton.ToolTipText = "Bool"; - this.boolToolStripButton.Value = typeof(ReClassNET.Nodes.BoolNode); - this.boolToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // bitFieldToolStripButton - // - this.bitFieldToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.bitFieldToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Bits; - this.bitFieldToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.bitFieldToolStripButton.Name = "bitFieldToolStripButton"; - this.bitFieldToolStripButton.Size = new System.Drawing.Size(23, 22); - this.bitFieldToolStripButton.ToolTipText = "Bit Field"; - this.bitFieldToolStripButton.Value = typeof(ReClassNET.Nodes.BitFieldNode); - this.bitFieldToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator18 - // - this.toolStripSeparator18.Name = "toolStripSeparator18"; - this.toolStripSeparator18.Size = new System.Drawing.Size(6, 25); - // - // floatToolStripButton - // - this.floatToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.floatToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Float; - this.floatToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.floatToolStripButton.Name = "floatToolStripButton"; - this.floatToolStripButton.Size = new System.Drawing.Size(23, 22); - this.floatToolStripButton.ToolTipText = "Float"; - this.floatToolStripButton.Value = typeof(ReClassNET.Nodes.FloatNode); - this.floatToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // doubleToolStripButton - // - this.doubleToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.doubleToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Double; - this.doubleToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.doubleToolStripButton.Name = "doubleToolStripButton"; - this.doubleToolStripButton.Size = new System.Drawing.Size(23, 22); - this.doubleToolStripButton.ToolTipText = "Double"; - this.doubleToolStripButton.Value = typeof(ReClassNET.Nodes.DoubleNode); - this.doubleToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator12 - // - this.toolStripSeparator12.Name = "toolStripSeparator12"; - this.toolStripSeparator12.Size = new System.Drawing.Size(6, 25); - // - // vec4ToolStripButton - // - this.vec4ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.vec4ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_4; - this.vec4ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.vec4ToolStripButton.Name = "vec4ToolStripButton"; - this.vec4ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.vec4ToolStripButton.ToolTipText = "Vector4"; - this.vec4ToolStripButton.Value = typeof(ReClassNET.Nodes.Vector4Node); - this.vec4ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // vec3ToolStripButton - // - this.vec3ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.vec3ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_3; - this.vec3ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.vec3ToolStripButton.Name = "vec3ToolStripButton"; - this.vec3ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.vec3ToolStripButton.ToolTipText = "Vector3"; - this.vec3ToolStripButton.Value = typeof(ReClassNET.Nodes.Vector3Node); - this.vec3ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // vec2ToolStripButton - // - this.vec2ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.vec2ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_2; - this.vec2ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.vec2ToolStripButton.Name = "vec2ToolStripButton"; - this.vec2ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.vec2ToolStripButton.ToolTipText = "Vector2"; - this.vec2ToolStripButton.Value = typeof(ReClassNET.Nodes.Vector2Node); - this.vec2ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // mat44ToolStripButton - // - this.mat44ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.mat44ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_4x4; - this.mat44ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.mat44ToolStripButton.Name = "mat44ToolStripButton"; - this.mat44ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.mat44ToolStripButton.ToolTipText = "4x4 Matrix"; - this.mat44ToolStripButton.Value = typeof(ReClassNET.Nodes.Matrix4x4Node); - this.mat44ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // mat34ToolStripButton - // - this.mat34ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.mat34ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_3x4; - this.mat34ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.mat34ToolStripButton.Name = "mat34ToolStripButton"; - this.mat34ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.mat34ToolStripButton.ToolTipText = "3x4 Matrix"; - this.mat34ToolStripButton.Value = typeof(ReClassNET.Nodes.Matrix3x4Node); - this.mat34ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // mat33ToolStripButton - // - this.mat33ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.mat33ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_3x3; - this.mat33ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.mat33ToolStripButton.Name = "mat33ToolStripButton"; - this.mat33ToolStripButton.Size = new System.Drawing.Size(23, 22); - this.mat33ToolStripButton.ToolTipText = "3x3 Matrix"; - this.mat33ToolStripButton.Value = typeof(ReClassNET.Nodes.Matrix3x3Node); - this.mat33ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator13 - // - this.toolStripSeparator13.Name = "toolStripSeparator13"; - this.toolStripSeparator13.Size = new System.Drawing.Size(6, 25); - // - // utf8TextToolStripButton - // - this.utf8TextToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.utf8TextToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Text; - this.utf8TextToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.utf8TextToolStripButton.Name = "utf8TextToolStripButton"; - this.utf8TextToolStripButton.Size = new System.Drawing.Size(23, 22); - this.utf8TextToolStripButton.ToolTipText = "UTF8 Text"; - this.utf8TextToolStripButton.Value = typeof(ReClassNET.Nodes.Utf8TextNode); - this.utf8TextToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // utf8TextPtrToolStripButton - // - this.utf8TextPtrToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.utf8TextPtrToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Text_Pointer; - this.utf8TextPtrToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.utf8TextPtrToolStripButton.Name = "utf8TextPtrToolStripButton"; - this.utf8TextPtrToolStripButton.Size = new System.Drawing.Size(23, 22); - this.utf8TextPtrToolStripButton.ToolTipText = "Pointer to UTF8 text"; - this.utf8TextPtrToolStripButton.Value = typeof(ReClassNET.Nodes.Utf8TextPtrNode); - this.utf8TextPtrToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // utf16TextToolStripButton - // - this.utf16TextToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.utf16TextToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UText; - this.utf16TextToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.utf16TextToolStripButton.Name = "utf16TextToolStripButton"; - this.utf16TextToolStripButton.Size = new System.Drawing.Size(23, 22); - this.utf16TextToolStripButton.ToolTipText = "UTF16 / Unicode Text"; - this.utf16TextToolStripButton.Value = typeof(ReClassNET.Nodes.Utf16TextNode); - this.utf16TextToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // utf16TextPtrToolStripButton - // - this.utf16TextPtrToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.utf16TextPtrToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UText_Pointer; - this.utf16TextPtrToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.utf16TextPtrToolStripButton.Name = "utf16TextPtrToolStripButton"; - this.utf16TextPtrToolStripButton.Size = new System.Drawing.Size(23, 22); - this.utf16TextPtrToolStripButton.ToolTipText = "Pointer to UTF16 / Unicode text"; - this.utf16TextPtrToolStripButton.Value = typeof(ReClassNET.Nodes.Utf16TextPtrNode); - this.utf16TextPtrToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator14 - // - this.toolStripSeparator14.Name = "toolStripSeparator14"; - this.toolStripSeparator14.Size = new System.Drawing.Size(6, 25); - // - // classInstanceToolStripButton6 - // - this.classInstanceToolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.classInstanceToolStripButton6.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Instance; - this.classInstanceToolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta; - this.classInstanceToolStripButton6.Name = "classInstanceToolStripButton6"; - this.classInstanceToolStripButton6.Size = new System.Drawing.Size(23, 22); - this.classInstanceToolStripButton6.ToolTipText = "Class instance"; - this.classInstanceToolStripButton6.Value = typeof(ReClassNET.Nodes.ClassInstanceNode); - this.classInstanceToolStripButton6.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // classPtrToolStripButton - // - this.classPtrToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.classPtrToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Pointer; - this.classPtrToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.classPtrToolStripButton.Name = "classPtrToolStripButton"; - this.classPtrToolStripButton.Size = new System.Drawing.Size(23, 22); - this.classPtrToolStripButton.ToolTipText = "Pointer to class instance"; - this.classPtrToolStripButton.Value = typeof(ReClassNET.Nodes.ClassPtrNode); - this.classPtrToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator15 - // - this.toolStripSeparator15.Name = "toolStripSeparator15"; - this.toolStripSeparator15.Size = new System.Drawing.Size(6, 25); - // - // arrayToolStripButton - // - this.arrayToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.arrayToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Array; - this.arrayToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.arrayToolStripButton.Name = "arrayToolStripButton"; - this.arrayToolStripButton.Size = new System.Drawing.Size(23, 22); - this.arrayToolStripButton.ToolTipText = "Array of Classes"; - this.arrayToolStripButton.Value = typeof(ReClassNET.Nodes.ClassInstanceArrayNode); - this.arrayToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // ptrArrayToolStripButton - // - this.ptrArrayToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.ptrArrayToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Pointer_Array; - this.ptrArrayToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.ptrArrayToolStripButton.Name = "ptrArrayToolStripButton"; - this.ptrArrayToolStripButton.Size = new System.Drawing.Size(23, 22); - this.ptrArrayToolStripButton.ToolTipText = "Array of Pointers"; - this.ptrArrayToolStripButton.Value = typeof(ReClassNET.Nodes.ClassPtrArrayNode); - this.ptrArrayToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // vtableToolStripButton - // - this.vtableToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.vtableToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_VTable; - this.vtableToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.vtableToolStripButton.Name = "vtableToolStripButton"; - this.vtableToolStripButton.Size = new System.Drawing.Size(23, 22); - this.vtableToolStripButton.ToolTipText = "Pointer to VTable"; - this.vtableToolStripButton.Value = typeof(ReClassNET.Nodes.VTableNode); - this.vtableToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // fnPtrToolStripButton - // - this.fnPtrToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.fnPtrToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Function_Pointer; - this.fnPtrToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.fnPtrToolStripButton.Name = "fnPtrToolStripButton"; - this.fnPtrToolStripButton.Size = new System.Drawing.Size(23, 22); - this.fnPtrToolStripButton.ToolTipText = "Pointer to a function"; - this.fnPtrToolStripButton.Value = typeof(ReClassNET.Nodes.FunctionPtrNode); - this.fnPtrToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // fnTypeToolStripButton - // - this.fnTypeToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.fnTypeToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Function; - this.fnTypeToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.fnTypeToolStripButton.Name = "fnTypeToolStripButton"; - this.fnTypeToolStripButton.Size = new System.Drawing.Size(23, 22); - this.fnTypeToolStripButton.ToolTipText = "Function"; - this.fnTypeToolStripButton.Value = typeof(ReClassNET.Nodes.FunctionNode); - this.fnTypeToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); - // - // toolStripSeparator19 - // - this.toolStripSeparator19.Name = "toolStripSeparator19"; - this.toolStripSeparator19.Size = new System.Drawing.Size(6, 25); - // - // statusStrip - // - this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.insertBytesToolStripDropDownButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_X; + this.insertBytesToolStripDropDownButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.insertBytesToolStripDropDownButton.Name = "insertBytesToolStripDropDownButton"; + this.insertBytesToolStripDropDownButton.Size = new System.Drawing.Size(29, 22); + this.insertBytesToolStripDropDownButton.ToolTipText = "Insert bytes at selected position"; + // + // insert4BytesToolStripMenuItem + // + this.insert4BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_4; + this.insert4BytesToolStripMenuItem.Name = "insert4BytesToolStripMenuItem"; + this.insert4BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert4BytesToolStripMenuItem.Tag = ""; + this.insert4BytesToolStripMenuItem.Text = "Insert 4 Bytes"; + this.insert4BytesToolStripMenuItem.Value = 4; + this.insert4BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert8BytesToolStripMenuItem + // + this.insert8BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_8; + this.insert8BytesToolStripMenuItem.Name = "insert8BytesToolStripMenuItem"; + this.insert8BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert8BytesToolStripMenuItem.Text = "Insert 8 Bytes"; + this.insert8BytesToolStripMenuItem.Value = 8; + this.insert8BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert64BytesToolStripMenuItem + // + this.insert64BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_64; + this.insert64BytesToolStripMenuItem.Name = "insert64BytesToolStripMenuItem"; + this.insert64BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert64BytesToolStripMenuItem.Text = "Insert 64 Bytes"; + this.insert64BytesToolStripMenuItem.Value = 64; + this.insert64BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert256BytesToolStripMenuItem + // + this.insert256BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_256; + this.insert256BytesToolStripMenuItem.Name = "insert256BytesToolStripMenuItem"; + this.insert256BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert256BytesToolStripMenuItem.Text = "Insert 256 Bytes"; + this.insert256BytesToolStripMenuItem.Value = 256; + this.insert256BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert1024BytesToolStripMenuItem + // + this.insert1024BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_1024; + this.insert1024BytesToolStripMenuItem.Name = "insert1024BytesToolStripMenuItem"; + this.insert1024BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert1024BytesToolStripMenuItem.Text = "Insert 1024 Bytes"; + this.insert1024BytesToolStripMenuItem.Value = 1024; + this.insert1024BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert2048BytesToolStripMenuItem + // + this.insert2048BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_2048; + this.insert2048BytesToolStripMenuItem.Name = "insert2048BytesToolStripMenuItem"; + this.insert2048BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert2048BytesToolStripMenuItem.Text = "Insert 2048 Bytes"; + this.insert2048BytesToolStripMenuItem.Value = 2048; + this.insert2048BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert4096BytesToolStripMenuItem + // + this.insert4096BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_4096; + this.insert4096BytesToolStripMenuItem.Name = "insert4096BytesToolStripMenuItem"; + this.insert4096BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert4096BytesToolStripMenuItem.Text = "Insert 4096 Bytes"; + this.insert4096BytesToolStripMenuItem.Value = 4096; + this.insert4096BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insertXBytesToolStripMenuItem + // + this.insertXBytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_X; + this.insertXBytesToolStripMenuItem.Name = "insertXBytesToolStripMenuItem"; + this.insertXBytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insertXBytesToolStripMenuItem.Text = "Insert ... Bytes"; + this.insertXBytesToolStripMenuItem.Click += new System.EventHandler(this.insertXBytesToolStripMenuItem_Click); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Name = "toolStripSeparator8"; + this.toolStripSeparator8.Size = new System.Drawing.Size(6, 25); + // + // hex64ToolStripButton + // + this.hex64ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.hex64ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_64; + this.hex64ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.hex64ToolStripButton.Name = "hex64ToolStripButton"; + this.hex64ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.hex64ToolStripButton.ToolTipText = "Hex64"; + this.hex64ToolStripButton.Value = typeof(ReClassNET.Nodes.Hex64Node); + this.hex64ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // hex32ToolStripButton + // + this.hex32ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.hex32ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_32; + this.hex32ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.hex32ToolStripButton.Name = "hex32ToolStripButton"; + this.hex32ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.hex32ToolStripButton.ToolTipText = "Hex32"; + this.hex32ToolStripButton.Value = typeof(ReClassNET.Nodes.Hex32Node); + this.hex32ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // hex16ToolStripButton + // + this.hex16ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.hex16ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_16; + this.hex16ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.hex16ToolStripButton.Name = "hex16ToolStripButton"; + this.hex16ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.hex16ToolStripButton.ToolTipText = "Hex16"; + this.hex16ToolStripButton.Value = typeof(ReClassNET.Nodes.Hex16Node); + this.hex16ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // hex8ToolStripButton + // + this.hex8ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.hex8ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_8; + this.hex8ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.hex8ToolStripButton.Name = "hex8ToolStripButton"; + this.hex8ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.hex8ToolStripButton.ToolTipText = "Hex8"; + this.hex8ToolStripButton.Value = typeof(ReClassNET.Nodes.Hex8Node); + this.hex8ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + this.toolStripSeparator9.Size = new System.Drawing.Size(6, 25); + // + // int64ToolStripButton + // + this.int64ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.int64ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_64; + this.int64ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.int64ToolStripButton.Name = "int64ToolStripButton"; + this.int64ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.int64ToolStripButton.ToolTipText = "Int64"; + this.int64ToolStripButton.Value = typeof(ReClassNET.Nodes.Int64Node); + this.int64ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // int32ToolStripButton + // + this.int32ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.int32ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_32; + this.int32ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.int32ToolStripButton.Name = "int32ToolStripButton"; + this.int32ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.int32ToolStripButton.ToolTipText = "Int32"; + this.int32ToolStripButton.Value = typeof(ReClassNET.Nodes.Int32Node); + this.int32ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // int16ToolStripButton + // + this.int16ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.int16ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_16; + this.int16ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.int16ToolStripButton.Name = "int16ToolStripButton"; + this.int16ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.int16ToolStripButton.ToolTipText = "Int16"; + this.int16ToolStripButton.Value = typeof(ReClassNET.Nodes.Int16Node); + this.int16ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // int8ToolStripButton + // + this.int8ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.int8ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_8; + this.int8ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.int8ToolStripButton.Name = "int8ToolStripButton"; + this.int8ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.int8ToolStripButton.ToolTipText = "Int8"; + this.int8ToolStripButton.Value = typeof(ReClassNET.Nodes.Int8Node); + this.int8ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator10 + // + this.toolStripSeparator10.Name = "toolStripSeparator10"; + this.toolStripSeparator10.Size = new System.Drawing.Size(6, 25); + // + // uint64ToolStripButton + // + this.uint64ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.uint64ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_64; + this.uint64ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.uint64ToolStripButton.Name = "uint64ToolStripButton"; + this.uint64ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.uint64ToolStripButton.ToolTipText = "UInt64 / QWORD"; + this.uint64ToolStripButton.Value = typeof(ReClassNET.Nodes.UInt64Node); + this.uint64ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // uint32ToolStripButton + // + this.uint32ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.uint32ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_32; + this.uint32ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.uint32ToolStripButton.Name = "uint32ToolStripButton"; + this.uint32ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.uint32ToolStripButton.ToolTipText = "UInt32 / DWORD"; + this.uint32ToolStripButton.Value = typeof(ReClassNET.Nodes.UInt32Node); + this.uint32ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // uint16ToolStripButton + // + this.uint16ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.uint16ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_16; + this.uint16ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.uint16ToolStripButton.Name = "uint16ToolStripButton"; + this.uint16ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.uint16ToolStripButton.ToolTipText = "UInt16 / WORD"; + this.uint16ToolStripButton.Value = typeof(ReClassNET.Nodes.UInt16Node); + this.uint16ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // uint8ToolStripButton + // + this.uint8ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.uint8ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_8; + this.uint8ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.uint8ToolStripButton.Name = "uint8ToolStripButton"; + this.uint8ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.uint8ToolStripButton.ToolTipText = "UInt8 / BYTE"; + this.uint8ToolStripButton.Value = typeof(ReClassNET.Nodes.UInt8Node); + this.uint8ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator11 + // + this.toolStripSeparator11.Name = "toolStripSeparator11"; + this.toolStripSeparator11.Size = new System.Drawing.Size(6, 25); + // + // boolToolStripButton + // + this.boolToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.boolToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Bool; + this.boolToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.boolToolStripButton.Name = "boolToolStripButton"; + this.boolToolStripButton.Size = new System.Drawing.Size(23, 22); + this.boolToolStripButton.ToolTipText = "Bool"; + this.boolToolStripButton.Value = typeof(ReClassNET.Nodes.BoolNode); + this.boolToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // bitFieldToolStripButton + // + this.bitFieldToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.bitFieldToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Bits; + this.bitFieldToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.bitFieldToolStripButton.Name = "bitFieldToolStripButton"; + this.bitFieldToolStripButton.Size = new System.Drawing.Size(23, 22); + this.bitFieldToolStripButton.ToolTipText = "Bit Field"; + this.bitFieldToolStripButton.Value = typeof(ReClassNET.Nodes.BitFieldNode); + this.bitFieldToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator18 + // + this.toolStripSeparator18.Name = "toolStripSeparator18"; + this.toolStripSeparator18.Size = new System.Drawing.Size(6, 25); + // + // floatToolStripButton + // + this.floatToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.floatToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Float; + this.floatToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.floatToolStripButton.Name = "floatToolStripButton"; + this.floatToolStripButton.Size = new System.Drawing.Size(23, 22); + this.floatToolStripButton.ToolTipText = "Float"; + this.floatToolStripButton.Value = typeof(ReClassNET.Nodes.FloatNode); + this.floatToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // doubleToolStripButton + // + this.doubleToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.doubleToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Double; + this.doubleToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.doubleToolStripButton.Name = "doubleToolStripButton"; + this.doubleToolStripButton.Size = new System.Drawing.Size(23, 22); + this.doubleToolStripButton.ToolTipText = "Double"; + this.doubleToolStripButton.Value = typeof(ReClassNET.Nodes.DoubleNode); + this.doubleToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator12 + // + this.toolStripSeparator12.Name = "toolStripSeparator12"; + this.toolStripSeparator12.Size = new System.Drawing.Size(6, 25); + // + // vec4ToolStripButton + // + this.vec4ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.vec4ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_4; + this.vec4ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.vec4ToolStripButton.Name = "vec4ToolStripButton"; + this.vec4ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.vec4ToolStripButton.ToolTipText = "Vector4"; + this.vec4ToolStripButton.Value = typeof(ReClassNET.Nodes.Vector4Node); + this.vec4ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // vec3ToolStripButton + // + this.vec3ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.vec3ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_3; + this.vec3ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.vec3ToolStripButton.Name = "vec3ToolStripButton"; + this.vec3ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.vec3ToolStripButton.ToolTipText = "Vector3"; + this.vec3ToolStripButton.Value = typeof(ReClassNET.Nodes.Vector3Node); + this.vec3ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // vec2ToolStripButton + // + this.vec2ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.vec2ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_2; + this.vec2ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.vec2ToolStripButton.Name = "vec2ToolStripButton"; + this.vec2ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.vec2ToolStripButton.ToolTipText = "Vector2"; + this.vec2ToolStripButton.Value = typeof(ReClassNET.Nodes.Vector2Node); + this.vec2ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // mat44ToolStripButton + // + this.mat44ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.mat44ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_4x4; + this.mat44ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.mat44ToolStripButton.Name = "mat44ToolStripButton"; + this.mat44ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.mat44ToolStripButton.ToolTipText = "4x4 Matrix"; + this.mat44ToolStripButton.Value = typeof(ReClassNET.Nodes.Matrix4x4Node); + this.mat44ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // mat34ToolStripButton + // + this.mat34ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.mat34ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_3x4; + this.mat34ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.mat34ToolStripButton.Name = "mat34ToolStripButton"; + this.mat34ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.mat34ToolStripButton.ToolTipText = "3x4 Matrix"; + this.mat34ToolStripButton.Value = typeof(ReClassNET.Nodes.Matrix3x4Node); + this.mat34ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // mat33ToolStripButton + // + this.mat33ToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.mat33ToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_3x3; + this.mat33ToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.mat33ToolStripButton.Name = "mat33ToolStripButton"; + this.mat33ToolStripButton.Size = new System.Drawing.Size(23, 22); + this.mat33ToolStripButton.ToolTipText = "3x3 Matrix"; + this.mat33ToolStripButton.Value = typeof(ReClassNET.Nodes.Matrix3x3Node); + this.mat33ToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator13 + // + this.toolStripSeparator13.Name = "toolStripSeparator13"; + this.toolStripSeparator13.Size = new System.Drawing.Size(6, 25); + // + // utf8TextToolStripButton + // + this.utf8TextToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.utf8TextToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Text; + this.utf8TextToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.utf8TextToolStripButton.Name = "utf8TextToolStripButton"; + this.utf8TextToolStripButton.Size = new System.Drawing.Size(23, 22); + this.utf8TextToolStripButton.ToolTipText = "UTF8 Text"; + this.utf8TextToolStripButton.Value = typeof(ReClassNET.Nodes.Utf8TextNode); + this.utf8TextToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // utf8TextPtrToolStripButton + // + this.utf8TextPtrToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.utf8TextPtrToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Text_Pointer; + this.utf8TextPtrToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.utf8TextPtrToolStripButton.Name = "utf8TextPtrToolStripButton"; + this.utf8TextPtrToolStripButton.Size = new System.Drawing.Size(23, 22); + this.utf8TextPtrToolStripButton.ToolTipText = "Pointer to UTF8 text"; + this.utf8TextPtrToolStripButton.Value = typeof(ReClassNET.Nodes.Utf8TextPtrNode); + this.utf8TextPtrToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // utf16TextToolStripButton + // + this.utf16TextToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.utf16TextToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UText; + this.utf16TextToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.utf16TextToolStripButton.Name = "utf16TextToolStripButton"; + this.utf16TextToolStripButton.Size = new System.Drawing.Size(23, 22); + this.utf16TextToolStripButton.ToolTipText = "UTF16 / Unicode Text"; + this.utf16TextToolStripButton.Value = typeof(ReClassNET.Nodes.Utf16TextNode); + this.utf16TextToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // utf16TextPtrToolStripButton + // + this.utf16TextPtrToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.utf16TextPtrToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UText_Pointer; + this.utf16TextPtrToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.utf16TextPtrToolStripButton.Name = "utf16TextPtrToolStripButton"; + this.utf16TextPtrToolStripButton.Size = new System.Drawing.Size(23, 22); + this.utf16TextPtrToolStripButton.ToolTipText = "Pointer to UTF16 / Unicode text"; + this.utf16TextPtrToolStripButton.Value = typeof(ReClassNET.Nodes.Utf16TextPtrNode); + this.utf16TextPtrToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator14 + // + this.toolStripSeparator14.Name = "toolStripSeparator14"; + this.toolStripSeparator14.Size = new System.Drawing.Size(6, 25); + // + // classInstanceToolStripButton6 + // + this.classInstanceToolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.classInstanceToolStripButton6.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Instance; + this.classInstanceToolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta; + this.classInstanceToolStripButton6.Name = "classInstanceToolStripButton6"; + this.classInstanceToolStripButton6.Size = new System.Drawing.Size(23, 22); + this.classInstanceToolStripButton6.ToolTipText = "Class instance"; + this.classInstanceToolStripButton6.Value = typeof(ReClassNET.Nodes.ClassInstanceNode); + this.classInstanceToolStripButton6.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // classPtrToolStripButton + // + this.classPtrToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.classPtrToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Pointer; + this.classPtrToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.classPtrToolStripButton.Name = "classPtrToolStripButton"; + this.classPtrToolStripButton.Size = new System.Drawing.Size(23, 22); + this.classPtrToolStripButton.ToolTipText = "Pointer to class instance"; + this.classPtrToolStripButton.Value = typeof(ReClassNET.Nodes.ClassPtrNode); + this.classPtrToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator15 + // + this.toolStripSeparator15.Name = "toolStripSeparator15"; + this.toolStripSeparator15.Size = new System.Drawing.Size(6, 25); + // + // arrayToolStripButton + // + this.arrayToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.arrayToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Array; + this.arrayToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.arrayToolStripButton.Name = "arrayToolStripButton"; + this.arrayToolStripButton.Size = new System.Drawing.Size(23, 22); + this.arrayToolStripButton.ToolTipText = "Array of Classes"; + this.arrayToolStripButton.Value = typeof(ReClassNET.Nodes.ClassInstanceArrayNode); + this.arrayToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // ptrArrayToolStripButton + // + this.ptrArrayToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.ptrArrayToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Pointer_Array; + this.ptrArrayToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.ptrArrayToolStripButton.Name = "ptrArrayToolStripButton"; + this.ptrArrayToolStripButton.Size = new System.Drawing.Size(23, 22); + this.ptrArrayToolStripButton.ToolTipText = "Array of Pointers"; + this.ptrArrayToolStripButton.Value = typeof(ReClassNET.Nodes.ClassPtrArrayNode); + this.ptrArrayToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // vtableToolStripButton + // + this.vtableToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.vtableToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_VTable; + this.vtableToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.vtableToolStripButton.Name = "vtableToolStripButton"; + this.vtableToolStripButton.Size = new System.Drawing.Size(23, 22); + this.vtableToolStripButton.ToolTipText = "Pointer to VTable"; + this.vtableToolStripButton.Value = typeof(ReClassNET.Nodes.VTableNode); + this.vtableToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // fnPtrToolStripButton + // + this.fnPtrToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.fnPtrToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Function_Pointer; + this.fnPtrToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.fnPtrToolStripButton.Name = "fnPtrToolStripButton"; + this.fnPtrToolStripButton.Size = new System.Drawing.Size(23, 22); + this.fnPtrToolStripButton.ToolTipText = "Pointer to a function"; + this.fnPtrToolStripButton.Value = typeof(ReClassNET.Nodes.FunctionPtrNode); + this.fnPtrToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // fnTypeToolStripButton + // + this.fnTypeToolStripButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.fnTypeToolStripButton.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Function; + this.fnTypeToolStripButton.ImageTransparentColor = System.Drawing.Color.Magenta; + this.fnTypeToolStripButton.Name = "fnTypeToolStripButton"; + this.fnTypeToolStripButton.Size = new System.Drawing.Size(23, 22); + this.fnTypeToolStripButton.ToolTipText = "Function"; + this.fnTypeToolStripButton.Value = typeof(ReClassNET.Nodes.FunctionNode); + this.fnTypeToolStripButton.Click += new System.EventHandler(this.memoryTypeToolStripButton_Click); + // + // toolStripSeparator19 + // + this.toolStripSeparator19.Name = "toolStripSeparator19"; + this.toolStripSeparator19.Size = new System.Drawing.Size(6, 25); + // + // statusStrip + // + this.statusStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.processInfoToolStripStatusLabel, this.infoToolStripStatusLabel}); - this.statusStrip.Location = new System.Drawing.Point(0, 573); - this.statusStrip.Name = "statusStrip"; - this.statusStrip.Size = new System.Drawing.Size(1141, 22); - this.statusStrip.TabIndex = 1; - // - // processInfoToolStripStatusLabel - // - this.processInfoToolStripStatusLabel.Name = "processInfoToolStripStatusLabel"; - this.processInfoToolStripStatusLabel.Size = new System.Drawing.Size(112, 17); - this.processInfoToolStripStatusLabel.Text = "No process selected"; - // - // infoToolStripStatusLabel - // - this.infoToolStripStatusLabel.Name = "infoToolStripStatusLabel"; - this.infoToolStripStatusLabel.Size = new System.Drawing.Size(23, 17); - this.infoToolStripStatusLabel.Text = "<>"; - this.infoToolStripStatusLabel.Visible = false; - // - // mainMenuStrip - // - this.mainMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.statusStrip.Location = new System.Drawing.Point(0, 573); + this.statusStrip.Name = "statusStrip"; + this.statusStrip.Size = new System.Drawing.Size(1141, 22); + this.statusStrip.TabIndex = 1; + // + // processInfoToolStripStatusLabel + // + this.processInfoToolStripStatusLabel.Name = "processInfoToolStripStatusLabel"; + this.processInfoToolStripStatusLabel.Size = new System.Drawing.Size(112, 17); + this.processInfoToolStripStatusLabel.Text = "No process selected"; + // + // infoToolStripStatusLabel + // + this.infoToolStripStatusLabel.Name = "infoToolStripStatusLabel"; + this.infoToolStripStatusLabel.Size = new System.Drawing.Size(23, 17); + this.infoToolStripStatusLabel.Text = "<>"; + this.infoToolStripStatusLabel.Visible = false; + // + // mainMenuStrip + // + this.mainMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.fileToolStripMenuItem, this.processToolStripMenuItem, this.projectToolStripMenuItem, this.helpToolStripMenuItem}); - this.mainMenuStrip.Location = new System.Drawing.Point(0, 0); - this.mainMenuStrip.Name = "mainMenuStrip"; - this.mainMenuStrip.Size = new System.Drawing.Size(1141, 24); - this.mainMenuStrip.TabIndex = 2; - // - // fileToolStripMenuItem - // - this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.mainMenuStrip.Location = new System.Drawing.Point(0, 0); + this.mainMenuStrip.Name = "mainMenuStrip"; + this.mainMenuStrip.Size = new System.Drawing.Size(1141, 24); + this.mainMenuStrip.TabIndex = 2; + // + // fileToolStripMenuItem + // + this.fileToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.attachToProcessToolStripMenuItem, this.reattachToProcessToolStripMenuItem, this.detachToolStripMenuItem, @@ -950,126 +952,126 @@ private void InitializeComponent() this.pluginsToolStripMenuItem, this.toolStripSeparator5, this.quitToolStripMenuItem}); - this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; - this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); - this.fileToolStripMenuItem.Text = "File"; - this.fileToolStripMenuItem.DropDownOpening += new System.EventHandler(this.fileToolStripMenuItem_DropDownOpening); - // - // attachToProcessToolStripMenuItem - // - this.attachToProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Magnifier; - this.attachToProcessToolStripMenuItem.Name = "attachToProcessToolStripMenuItem"; - this.attachToProcessToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.attachToProcessToolStripMenuItem.Text = "Attach to Process..."; - this.attachToProcessToolStripMenuItem.Click += new System.EventHandler(this.attachToProcessToolStripSplitButton_ButtonClick); - // - // reattachToProcessToolStripMenuItem - // - this.reattachToProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Magnifier_Arrow; - this.reattachToProcessToolStripMenuItem.Name = "reattachToProcessToolStripMenuItem"; - this.reattachToProcessToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.reattachToProcessToolStripMenuItem.Text = "<>"; - this.reattachToProcessToolStripMenuItem.Click += new System.EventHandler(this.reattachToProcessToolStripMenuItem_Click); - // - // detachToolStripMenuItem - // - this.detachToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Magnifier_Remove; - this.detachToolStripMenuItem.Name = "detachToolStripMenuItem"; - this.detachToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.detachToolStripMenuItem.Text = "Detach"; - this.detachToolStripMenuItem.Click += new System.EventHandler(this.detachToolStripMenuItem_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(243, 6); - // - // openProjectToolStripMenuItem - // - this.openProjectToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Folder; - this.openProjectToolStripMenuItem.Name = "openProjectToolStripMenuItem"; - this.openProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); - this.openProjectToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.openProjectToolStripMenuItem.Text = "Open Project..."; - this.openProjectToolStripMenuItem.Click += new System.EventHandler(this.openProjectToolStripMenuItem_Click); - // - // mergeWithProjectToolStripMenuItem - // - this.mergeWithProjectToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Folder_Add; - this.mergeWithProjectToolStripMenuItem.Name = "mergeWithProjectToolStripMenuItem"; - this.mergeWithProjectToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.mergeWithProjectToolStripMenuItem.Text = "Merge with Project..."; - this.mergeWithProjectToolStripMenuItem.Click += new System.EventHandler(this.mergeWithProjectToolStripMenuItem_Click); - // - // clearProjectToolStripMenuItem - // - this.clearProjectToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Arrow_Refresh; - this.clearProjectToolStripMenuItem.Name = "clearProjectToolStripMenuItem"; - this.clearProjectToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.clearProjectToolStripMenuItem.Text = "Clear Project"; - this.clearProjectToolStripMenuItem.Click += new System.EventHandler(this.clearProjectToolStripMenuItem_Click); - // - // toolStripSeparator2 - // - this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(243, 6); - // - // saveToolStripMenuItem - // - this.saveToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Save; - this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; - this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); - this.saveToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.saveToolStripMenuItem.Text = "Save"; - this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); - // - // saveAsToolStripMenuItem - // - this.saveAsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Save_As; - this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; - this.saveAsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) + this.fileToolStripMenuItem.Name = "fileToolStripMenuItem"; + this.fileToolStripMenuItem.Size = new System.Drawing.Size(37, 20); + this.fileToolStripMenuItem.Text = "File"; + this.fileToolStripMenuItem.DropDownOpening += new System.EventHandler(this.fileToolStripMenuItem_DropDownOpening); + // + // attachToProcessToolStripMenuItem + // + this.attachToProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Magnifier; + this.attachToProcessToolStripMenuItem.Name = "attachToProcessToolStripMenuItem"; + this.attachToProcessToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.attachToProcessToolStripMenuItem.Text = "Attach to Process..."; + this.attachToProcessToolStripMenuItem.Click += new System.EventHandler(this.attachToProcessToolStripSplitButton_ButtonClick); + // + // reattachToProcessToolStripMenuItem + // + this.reattachToProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Magnifier_Arrow; + this.reattachToProcessToolStripMenuItem.Name = "reattachToProcessToolStripMenuItem"; + this.reattachToProcessToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.reattachToProcessToolStripMenuItem.Text = "<>"; + this.reattachToProcessToolStripMenuItem.Click += new System.EventHandler(this.reattachToProcessToolStripMenuItem_Click); + // + // detachToolStripMenuItem + // + this.detachToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Magnifier_Remove; + this.detachToolStripMenuItem.Name = "detachToolStripMenuItem"; + this.detachToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.detachToolStripMenuItem.Text = "Detach"; + this.detachToolStripMenuItem.Click += new System.EventHandler(this.detachToolStripMenuItem_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(192, 6); + // + // openProjectToolStripMenuItem + // + this.openProjectToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Folder; + this.openProjectToolStripMenuItem.Name = "openProjectToolStripMenuItem"; + this.openProjectToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.O))); + this.openProjectToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.openProjectToolStripMenuItem.Text = "Open Project..."; + this.openProjectToolStripMenuItem.Click += new System.EventHandler(this.openProjectToolStripMenuItem_Click); + // + // mergeWithProjectToolStripMenuItem + // + this.mergeWithProjectToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Folder_Add; + this.mergeWithProjectToolStripMenuItem.Name = "mergeWithProjectToolStripMenuItem"; + this.mergeWithProjectToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.mergeWithProjectToolStripMenuItem.Text = "Merge with Project..."; + this.mergeWithProjectToolStripMenuItem.Click += new System.EventHandler(this.mergeWithProjectToolStripMenuItem_Click); + // + // clearProjectToolStripMenuItem + // + this.clearProjectToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Arrow_Refresh; + this.clearProjectToolStripMenuItem.Name = "clearProjectToolStripMenuItem"; + this.clearProjectToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.clearProjectToolStripMenuItem.Text = "Clear Project"; + this.clearProjectToolStripMenuItem.Click += new System.EventHandler(this.clearProjectToolStripMenuItem_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(192, 6); + // + // saveToolStripMenuItem + // + this.saveToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Save; + this.saveToolStripMenuItem.Name = "saveToolStripMenuItem"; + this.saveToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.S))); + this.saveToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.saveToolStripMenuItem.Text = "Save"; + this.saveToolStripMenuItem.Click += new System.EventHandler(this.saveToolStripMenuItem_Click); + // + // saveAsToolStripMenuItem + // + this.saveAsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Save_As; + this.saveAsToolStripMenuItem.Name = "saveAsToolStripMenuItem"; + this.saveAsToolStripMenuItem.ShortcutKeys = ((System.Windows.Forms.Keys)(((System.Windows.Forms.Keys.Control | System.Windows.Forms.Keys.Shift) | System.Windows.Forms.Keys.S))); - this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.saveAsToolStripMenuItem.Text = "Save as..."; - this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click); - // - // toolStripSeparator3 - // - this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(243, 6); - // - // settingsToolStripMenuItem - // - this.settingsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Cogs; - this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; - this.settingsToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.settingsToolStripMenuItem.Text = "Settings..."; - this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click); - // - // pluginsToolStripMenuItem - // - this.pluginsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Plugin; - this.pluginsToolStripMenuItem.Name = "pluginsToolStripMenuItem"; - this.pluginsToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.pluginsToolStripMenuItem.Text = "Plugins..."; - this.pluginsToolStripMenuItem.Click += new System.EventHandler(this.pluginsToolStripButton_Click); - // - // toolStripSeparator5 - // - this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(243, 6); - // - // quitToolStripMenuItem - // - this.quitToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Quit; - this.quitToolStripMenuItem.Name = "quitToolStripMenuItem"; - this.quitToolStripMenuItem.Size = new System.Drawing.Size(246, 22); - this.quitToolStripMenuItem.Text = "Quit"; - this.quitToolStripMenuItem.Click += new System.EventHandler(this.quitToolStripMenuItem_Click); - // - // processToolStripMenuItem - // - this.processToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.saveAsToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.saveAsToolStripMenuItem.Text = "Save as..."; + this.saveAsToolStripMenuItem.Click += new System.EventHandler(this.saveAsToolStripMenuItem_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(192, 6); + // + // settingsToolStripMenuItem + // + this.settingsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Cogs; + this.settingsToolStripMenuItem.Name = "settingsToolStripMenuItem"; + this.settingsToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.settingsToolStripMenuItem.Text = "Settings..."; + this.settingsToolStripMenuItem.Click += new System.EventHandler(this.settingsToolStripMenuItem_Click); + // + // pluginsToolStripMenuItem + // + this.pluginsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Plugin; + this.pluginsToolStripMenuItem.Name = "pluginsToolStripMenuItem"; + this.pluginsToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.pluginsToolStripMenuItem.Text = "Plugins..."; + this.pluginsToolStripMenuItem.Click += new System.EventHandler(this.pluginsToolStripButton_Click); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(192, 6); + // + // quitToolStripMenuItem + // + this.quitToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Quit; + this.quitToolStripMenuItem.Name = "quitToolStripMenuItem"; + this.quitToolStripMenuItem.Size = new System.Drawing.Size(195, 22); + this.quitToolStripMenuItem.Text = "Quit"; + this.quitToolStripMenuItem.Click += new System.EventHandler(this.quitToolStripMenuItem_Click); + // + // processToolStripMenuItem + // + this.processToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.processInformationsToolStripMenuItem, this.memorySearcherToolStripMenuItem, this.namedAddressesToolStripMenuItem, @@ -1080,169 +1082,184 @@ private void InitializeComponent() this.resumeProcessToolStripMenuItem, this.suspendProcessToolStripMenuItem, this.terminateProcessToolStripMenuItem}); - this.processToolStripMenuItem.Name = "processToolStripMenuItem"; - this.processToolStripMenuItem.Size = new System.Drawing.Size(59, 20); - this.processToolStripMenuItem.Text = "Process"; - // - // processInformationsToolStripMenuItem - // - this.processInformationsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Category; - this.processInformationsToolStripMenuItem.Name = "processInformationsToolStripMenuItem"; - this.processInformationsToolStripMenuItem.Size = new System.Drawing.Size(194, 22); - this.processInformationsToolStripMenuItem.Text = "Process Informations..."; - this.processInformationsToolStripMenuItem.Click += new System.EventHandler(this.memoryViewerToolStripMenuItem_Click); - // - // memorySearcherToolStripMenuItem - // - this.memorySearcherToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; - this.memorySearcherToolStripMenuItem.Name = "memorySearcherToolStripMenuItem"; - this.memorySearcherToolStripMenuItem.Size = new System.Drawing.Size(194, 22); - this.memorySearcherToolStripMenuItem.Text = "Memory Searcher..."; - this.memorySearcherToolStripMenuItem.Click += new System.EventHandler(this.memorySearcherToolStripMenuItem_Click); - // - // toolStripSeparator17 - // - this.toolStripSeparator17.Name = "toolStripSeparator17"; - this.toolStripSeparator17.Size = new System.Drawing.Size(191, 6); - // - // loadSymbolToolStripMenuItem - // - this.loadSymbolToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Pdb; - this.loadSymbolToolStripMenuItem.Name = "loadSymbolToolStripMenuItem"; - this.loadSymbolToolStripMenuItem.Size = new System.Drawing.Size(194, 22); - this.loadSymbolToolStripMenuItem.Text = "Load Symbol..."; - this.loadSymbolToolStripMenuItem.Click += new System.EventHandler(this.loadSymbolToolStripMenuItem_Click); - // - // loadSymbolsToolStripMenuItem - // - this.loadSymbolsToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("loadSymbolsToolStripMenuItem.Image"))); - this.loadSymbolsToolStripMenuItem.Name = "loadSymbolsToolStripMenuItem"; - this.loadSymbolsToolStripMenuItem.Size = new System.Drawing.Size(194, 22); - this.loadSymbolsToolStripMenuItem.Text = "Load all Symbols"; - this.loadSymbolsToolStripMenuItem.Click += new System.EventHandler(this.loadSymbolsToolStripMenuItem_Click); - // - // toolStripSeparator4 - // - this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(191, 6); - // - // resumeProcessToolStripMenuItem - // - this.resumeProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Control_Play; - this.resumeProcessToolStripMenuItem.Name = "resumeProcessToolStripMenuItem"; - this.resumeProcessToolStripMenuItem.Size = new System.Drawing.Size(194, 22); - this.resumeProcessToolStripMenuItem.Text = "Resume"; - this.resumeProcessToolStripMenuItem.Click += new System.EventHandler(this.ControlRemoteProcessToolStripMenuItem_Click); - // - // suspendProcessToolStripMenuItem - // - this.suspendProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Control_Pause; - this.suspendProcessToolStripMenuItem.Name = "suspendProcessToolStripMenuItem"; - this.suspendProcessToolStripMenuItem.Size = new System.Drawing.Size(194, 22); - this.suspendProcessToolStripMenuItem.Text = "Suspend"; - this.suspendProcessToolStripMenuItem.Click += new System.EventHandler(this.ControlRemoteProcessToolStripMenuItem_Click); - // - // terminateProcessToolStripMenuItem - // - this.terminateProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Control_Stop; - this.terminateProcessToolStripMenuItem.Name = "terminateProcessToolStripMenuItem"; - this.terminateProcessToolStripMenuItem.Size = new System.Drawing.Size(194, 22); - this.terminateProcessToolStripMenuItem.Text = "Kill"; - this.terminateProcessToolStripMenuItem.Click += new System.EventHandler(this.ControlRemoteProcessToolStripMenuItem_Click); - // - // namedAddressesToolStripMenuItem - // - this.namedAddressesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Custom_Type; - this.namedAddressesToolStripMenuItem.Name = "namedAddressesToolStripMenuItem"; - this.namedAddressesToolStripMenuItem.Size = new System.Drawing.Size(194, 22); - this.namedAddressesToolStripMenuItem.Text = "Named Addresses..."; - this.namedAddressesToolStripMenuItem.Click += new System.EventHandler(this.namedAddressesToolStripMenuItem_Click); - // - // projectToolStripMenuItem - // - this.projectToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.processToolStripMenuItem.Name = "processToolStripMenuItem"; + this.processToolStripMenuItem.Size = new System.Drawing.Size(59, 20); + this.processToolStripMenuItem.Text = "Process"; + // + // processInformationsToolStripMenuItem + // + this.processInformationsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Category; + this.processInformationsToolStripMenuItem.Name = "processInformationsToolStripMenuItem"; + this.processInformationsToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.processInformationsToolStripMenuItem.Text = "Process Informations..."; + this.processInformationsToolStripMenuItem.Click += new System.EventHandler(this.memoryViewerToolStripMenuItem_Click); + // + // memorySearcherToolStripMenuItem + // + this.memorySearcherToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; + this.memorySearcherToolStripMenuItem.Name = "memorySearcherToolStripMenuItem"; + this.memorySearcherToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.memorySearcherToolStripMenuItem.Text = "Memory Searcher..."; + this.memorySearcherToolStripMenuItem.Click += new System.EventHandler(this.memorySearcherToolStripMenuItem_Click); + // + // namedAddressesToolStripMenuItem + // + this.namedAddressesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Custom_Type; + this.namedAddressesToolStripMenuItem.Name = "namedAddressesToolStripMenuItem"; + this.namedAddressesToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.namedAddressesToolStripMenuItem.Text = "Named Addresses..."; + this.namedAddressesToolStripMenuItem.Click += new System.EventHandler(this.namedAddressesToolStripMenuItem_Click); + // + // toolStripSeparator17 + // + this.toolStripSeparator17.Name = "toolStripSeparator17"; + this.toolStripSeparator17.Size = new System.Drawing.Size(191, 6); + // + // loadSymbolToolStripMenuItem + // + this.loadSymbolToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Pdb; + this.loadSymbolToolStripMenuItem.Name = "loadSymbolToolStripMenuItem"; + this.loadSymbolToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.loadSymbolToolStripMenuItem.Text = "Load Symbol..."; + this.loadSymbolToolStripMenuItem.Click += new System.EventHandler(this.loadSymbolToolStripMenuItem_Click); + // + // loadSymbolsToolStripMenuItem + // + this.loadSymbolsToolStripMenuItem.Image = ((System.Drawing.Image)(resources.GetObject("loadSymbolsToolStripMenuItem.Image"))); + this.loadSymbolsToolStripMenuItem.Name = "loadSymbolsToolStripMenuItem"; + this.loadSymbolsToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.loadSymbolsToolStripMenuItem.Text = "Load all Symbols"; + this.loadSymbolsToolStripMenuItem.Click += new System.EventHandler(this.loadSymbolsToolStripMenuItem_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(191, 6); + // + // resumeProcessToolStripMenuItem + // + this.resumeProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Control_Play; + this.resumeProcessToolStripMenuItem.Name = "resumeProcessToolStripMenuItem"; + this.resumeProcessToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.resumeProcessToolStripMenuItem.Text = "Resume"; + this.resumeProcessToolStripMenuItem.Click += new System.EventHandler(this.ControlRemoteProcessToolStripMenuItem_Click); + // + // suspendProcessToolStripMenuItem + // + this.suspendProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Control_Pause; + this.suspendProcessToolStripMenuItem.Name = "suspendProcessToolStripMenuItem"; + this.suspendProcessToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.suspendProcessToolStripMenuItem.Text = "Suspend"; + this.suspendProcessToolStripMenuItem.Click += new System.EventHandler(this.ControlRemoteProcessToolStripMenuItem_Click); + // + // terminateProcessToolStripMenuItem + // + this.terminateProcessToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Control_Stop; + this.terminateProcessToolStripMenuItem.Name = "terminateProcessToolStripMenuItem"; + this.terminateProcessToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.terminateProcessToolStripMenuItem.Text = "Kill"; + this.terminateProcessToolStripMenuItem.Click += new System.EventHandler(this.ControlRemoteProcessToolStripMenuItem_Click); + // + // projectToolStripMenuItem + // + this.projectToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.addNewClassToolStripMenuItem, + this.toolStripSeparator20, this.cleanUnusedClassesToolStripMenuItem, this.toolStripSeparator16, this.generateCppCodeToolStripMenuItem, this.generateCSharpCodeToolStripMenuItem}); - this.projectToolStripMenuItem.Name = "projectToolStripMenuItem"; - this.projectToolStripMenuItem.Size = new System.Drawing.Size(56, 20); - this.projectToolStripMenuItem.Text = "Project"; - // - // cleanUnusedClassesToolStripMenuItem - // - this.cleanUnusedClassesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Chart_Delete; - this.cleanUnusedClassesToolStripMenuItem.Name = "cleanUnusedClassesToolStripMenuItem"; - this.cleanUnusedClassesToolStripMenuItem.Size = new System.Drawing.Size(198, 22); - this.cleanUnusedClassesToolStripMenuItem.Text = "Remove unused classes"; - this.cleanUnusedClassesToolStripMenuItem.Click += new System.EventHandler(this.cleanUnusedClassesToolStripMenuItem_Click); - // - // toolStripSeparator16 - // - this.toolStripSeparator16.Name = "toolStripSeparator16"; - this.toolStripSeparator16.Size = new System.Drawing.Size(195, 6); - // - // generateCppCodeToolStripMenuItem - // - this.generateCppCodeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Code_Cpp; - this.generateCppCodeToolStripMenuItem.Name = "generateCppCodeToolStripMenuItem"; - this.generateCppCodeToolStripMenuItem.Size = new System.Drawing.Size(198, 22); - this.generateCppCodeToolStripMenuItem.Text = "Generate C++ Code..."; - this.generateCppCodeToolStripMenuItem.Click += new System.EventHandler(this.generateCppCodeToolStripMenuItem_Click); - // - // generateCSharpCodeToolStripMenuItem - // - this.generateCSharpCodeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Code_Csharp; - this.generateCSharpCodeToolStripMenuItem.Name = "generateCSharpCodeToolStripMenuItem"; - this.generateCSharpCodeToolStripMenuItem.Size = new System.Drawing.Size(198, 22); - this.generateCSharpCodeToolStripMenuItem.Text = "Generate C# Code..."; - this.generateCSharpCodeToolStripMenuItem.Click += new System.EventHandler(this.generateCSharpCodeToolStripMenuItem_Click); - // - // helpToolStripMenuItem - // - this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.projectToolStripMenuItem.Name = "projectToolStripMenuItem"; + this.projectToolStripMenuItem.Size = new System.Drawing.Size(56, 20); + this.projectToolStripMenuItem.Text = "Project"; + // + // cleanUnusedClassesToolStripMenuItem + // + this.cleanUnusedClassesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Chart_Delete; + this.cleanUnusedClassesToolStripMenuItem.Name = "cleanUnusedClassesToolStripMenuItem"; + this.cleanUnusedClassesToolStripMenuItem.Size = new System.Drawing.Size(198, 22); + this.cleanUnusedClassesToolStripMenuItem.Text = "Remove unused classes"; + this.cleanUnusedClassesToolStripMenuItem.Click += new System.EventHandler(this.cleanUnusedClassesToolStripMenuItem_Click); + // + // toolStripSeparator16 + // + this.toolStripSeparator16.Name = "toolStripSeparator16"; + this.toolStripSeparator16.Size = new System.Drawing.Size(195, 6); + // + // generateCppCodeToolStripMenuItem + // + this.generateCppCodeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Code_Cpp; + this.generateCppCodeToolStripMenuItem.Name = "generateCppCodeToolStripMenuItem"; + this.generateCppCodeToolStripMenuItem.Size = new System.Drawing.Size(198, 22); + this.generateCppCodeToolStripMenuItem.Text = "Generate C++ Code..."; + this.generateCppCodeToolStripMenuItem.Click += new System.EventHandler(this.generateCppCodeToolStripMenuItem_Click); + // + // generateCSharpCodeToolStripMenuItem + // + this.generateCSharpCodeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Code_Csharp; + this.generateCSharpCodeToolStripMenuItem.Name = "generateCSharpCodeToolStripMenuItem"; + this.generateCSharpCodeToolStripMenuItem.Size = new System.Drawing.Size(198, 22); + this.generateCSharpCodeToolStripMenuItem.Text = "Generate C# Code..."; + this.generateCSharpCodeToolStripMenuItem.Click += new System.EventHandler(this.generateCSharpCodeToolStripMenuItem_Click); + // + // helpToolStripMenuItem + // + this.helpToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.aboutToolStripMenuItem}); - this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; - this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); - this.helpToolStripMenuItem.Text = "Help"; - // - // aboutToolStripMenuItem - // - this.aboutToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Information; - this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; - this.aboutToolStripMenuItem.Size = new System.Drawing.Size(152, 22); - this.aboutToolStripMenuItem.Text = "About..."; - this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); - // - // MainForm - // - this.AllowDrop = true; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(1141, 595); - this.Controls.Add(this.splitContainer); - this.Controls.Add(this.toolStrip); - this.Controls.Add(this.statusStrip); - this.Controls.Add(this.mainMenuStrip); - this.MainMenuStrip = this.mainMenuStrip; - this.MinimumSize = new System.Drawing.Size(200, 100); - this.Name = "MainForm"; - this.Text = "ReClass.NET"; - this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); - this.DragDrop += new System.Windows.Forms.DragEventHandler(this.MainForm_DragDrop); - this.DragEnter += new System.Windows.Forms.DragEventHandler(this.MainForm_DragEnter); - this.splitContainer.Panel1.ResumeLayout(false); - this.splitContainer.Panel2.ResumeLayout(false); - ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit(); - this.splitContainer.ResumeLayout(false); - this.toolStrip.ResumeLayout(false); - this.toolStrip.PerformLayout(); - this.statusStrip.ResumeLayout(false); - this.statusStrip.PerformLayout(); - this.mainMenuStrip.ResumeLayout(false); - this.mainMenuStrip.PerformLayout(); - this.ResumeLayout(false); - this.PerformLayout(); + this.helpToolStripMenuItem.Name = "helpToolStripMenuItem"; + this.helpToolStripMenuItem.Size = new System.Drawing.Size(44, 20); + this.helpToolStripMenuItem.Text = "Help"; + // + // aboutToolStripMenuItem + // + this.aboutToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Information; + this.aboutToolStripMenuItem.Name = "aboutToolStripMenuItem"; + this.aboutToolStripMenuItem.Size = new System.Drawing.Size(116, 22); + this.aboutToolStripMenuItem.Text = "About..."; + this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); + // + // addNewClassToolStripMenuItem + // + this.addNewClassToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Add; + this.addNewClassToolStripMenuItem.Name = "addNewClassToolStripMenuItem"; + this.addNewClassToolStripMenuItem.Size = new System.Drawing.Size(198, 22); + this.addNewClassToolStripMenuItem.Text = "Add new class"; + this.addNewClassToolStripMenuItem.Click += new System.EventHandler(this.addNewClassToolStripMenuItem_Click); + // + // toolStripSeparator20 + // + this.toolStripSeparator20.Name = "toolStripSeparator20"; + this.toolStripSeparator20.Size = new System.Drawing.Size(195, 6); + // + // MainForm + // + this.AllowDrop = true; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(1141, 595); + this.Controls.Add(this.splitContainer); + this.Controls.Add(this.toolStrip); + this.Controls.Add(this.statusStrip); + this.Controls.Add(this.mainMenuStrip); + this.MainMenuStrip = this.mainMenuStrip; + this.MinimumSize = new System.Drawing.Size(200, 100); + this.Name = "MainForm"; + this.Text = "ReClass.NET"; + this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); + this.DragDrop += new System.Windows.Forms.DragEventHandler(this.MainForm_DragDrop); + this.DragEnter += new System.Windows.Forms.DragEventHandler(this.MainForm_DragEnter); + this.splitContainer.Panel1.ResumeLayout(false); + this.splitContainer.Panel2.ResumeLayout(false); + ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).EndInit(); + this.splitContainer.ResumeLayout(false); + this.toolStrip.ResumeLayout(false); + this.toolStrip.PerformLayout(); + this.statusStrip.ResumeLayout(false); + this.statusStrip.PerformLayout(); + this.mainMenuStrip.ResumeLayout(false); + this.mainMenuStrip.PerformLayout(); + this.ResumeLayout(false); + this.PerformLayout(); } @@ -1359,6 +1376,8 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem reattachToProcessToolStripMenuItem; private System.Windows.Forms.ToolStripSplitButton attachToProcessToolStripSplitButton; private System.Windows.Forms.ToolStripMenuItem namedAddressesToolStripMenuItem; - } + private System.Windows.Forms.ToolStripMenuItem addNewClassToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator20; + } } diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index 497feccd..dcbf0be9 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -529,7 +529,6 @@ private void processUpdateTimer_Tick(object sender, EventArgs e) private void classesView_ClassSelected(object sender, ClassNode node) { memoryViewControl.ClassNode = node; - memoryViewControl.Invalidate(); } @@ -780,5 +779,10 @@ private void LoadAllSymbolsForCurrentProcess() .LoadAllSymbolsAsync(progress, loadSymbolsTaskToken.Token) .ContinueWith(_ => infoToolStripStatusLabel.Visible = false, TaskScheduler.FromCurrentSynchronizationContext()); } - } + + private void addNewClassToolStripMenuItem_Click(object sender, EventArgs e) + { + LinkedWindowFeatures.CreateDefaultClass(); + } + } } diff --git a/ReClass.NET/Forms/ProcessBrowserForm.Designer.cs b/ReClass.NET/Forms/ProcessBrowserForm.Designer.cs index d8677633..8cb4848b 100644 --- a/ReClass.NET/Forms/ProcessBrowserForm.Designer.cs +++ b/ReClass.NET/Forms/ProcessBrowserForm.Designer.cs @@ -28,230 +28,230 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.processDataGridView = new System.Windows.Forms.DataGridView(); - this.iconColumn = new System.Windows.Forms.DataGridViewImageColumn(); - this.processNameColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.pidColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.pathColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.filterCheckBox = new System.Windows.Forms.CheckBox(); - this.refreshButton = new System.Windows.Forms.Button(); - this.attachToProcessButton = new System.Windows.Forms.Button(); - this.loadSymbolsCheckBox = new System.Windows.Forms.CheckBox(); - this.filterGroupBox = new System.Windows.Forms.GroupBox(); - this.previousProcessLinkLabel = new System.Windows.Forms.LinkLabel(); - this.label2 = new System.Windows.Forms.Label(); - this.label1 = new System.Windows.Forms.Label(); - this.filterTextBox = new System.Windows.Forms.TextBox(); - this.bannerBox = new ReClassNET.UI.BannerBox(); - ((System.ComponentModel.ISupportInitialize)(this.processDataGridView)).BeginInit(); - this.filterGroupBox.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); - this.SuspendLayout(); - // - // processDataGridView - // - this.processDataGridView.AllowUserToAddRows = false; - this.processDataGridView.AllowUserToDeleteRows = false; - this.processDataGridView.AllowUserToResizeColumns = false; - this.processDataGridView.AllowUserToResizeRows = false; - this.processDataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + this.processDataGridView = new System.Windows.Forms.DataGridView(); + this.iconColumn = new System.Windows.Forms.DataGridViewImageColumn(); + this.processNameColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.pidColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.pathColumn = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.filterCheckBox = new System.Windows.Forms.CheckBox(); + this.refreshButton = new System.Windows.Forms.Button(); + this.attachToProcessButton = new System.Windows.Forms.Button(); + this.loadSymbolsCheckBox = new System.Windows.Forms.CheckBox(); + this.filterGroupBox = new System.Windows.Forms.GroupBox(); + this.previousProcessLinkLabel = new System.Windows.Forms.LinkLabel(); + this.label2 = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.filterTextBox = new System.Windows.Forms.TextBox(); + this.bannerBox = new ReClassNET.UI.BannerBox(); + ((System.ComponentModel.ISupportInitialize)(this.processDataGridView)).BeginInit(); + this.filterGroupBox.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); + this.SuspendLayout(); + // + // processDataGridView + // + this.processDataGridView.AllowUserToAddRows = false; + this.processDataGridView.AllowUserToDeleteRows = false; + this.processDataGridView.AllowUserToResizeColumns = false; + this.processDataGridView.AllowUserToResizeRows = false; + this.processDataGridView.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.processDataGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleHorizontal; - this.processDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; - this.processDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { + this.processDataGridView.CellBorderStyle = System.Windows.Forms.DataGridViewCellBorderStyle.SingleHorizontal; + this.processDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; + this.processDataGridView.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.iconColumn, this.processNameColumn, this.pidColumn, this.pathColumn}); - this.processDataGridView.Location = new System.Drawing.Point(12, 199); - this.processDataGridView.MultiSelect = false; - this.processDataGridView.Name = "processDataGridView"; - this.processDataGridView.ReadOnly = true; - this.processDataGridView.RowHeadersVisible = false; - this.processDataGridView.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; - this.processDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; - this.processDataGridView.Size = new System.Drawing.Size(549, 291); - this.processDataGridView.TabIndex = 0; - this.processDataGridView.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.processDataGridView_CellMouseDoubleClick); - // - // iconColumn - // - this.iconColumn.DataPropertyName = "icon"; - this.iconColumn.HeaderText = ""; - this.iconColumn.MinimumWidth = 18; - this.iconColumn.Name = "iconColumn"; - this.iconColumn.ReadOnly = true; - this.iconColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.iconColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - this.iconColumn.Width = 18; - // - // processNameColumn - // - this.processNameColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; - this.processNameColumn.DataPropertyName = "name"; - this.processNameColumn.HeaderText = "Process"; - this.processNameColumn.Name = "processNameColumn"; - this.processNameColumn.ReadOnly = true; - this.processNameColumn.Width = 70; - // - // pidColumn - // - this.pidColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; - this.pidColumn.DataPropertyName = "id"; - this.pidColumn.HeaderText = "PID"; - this.pidColumn.Name = "pidColumn"; - this.pidColumn.ReadOnly = true; - this.pidColumn.Width = 50; - // - // pathColumn - // - this.pathColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; - this.pathColumn.DataPropertyName = "path"; - this.pathColumn.HeaderText = "Path"; - this.pathColumn.Name = "pathColumn"; - this.pathColumn.ReadOnly = true; - // - // filterCheckBox - // - this.filterCheckBox.AutoSize = true; - this.filterCheckBox.Checked = true; - this.filterCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; - this.filterCheckBox.Location = new System.Drawing.Point(9, 72); - this.filterCheckBox.Name = "filterCheckBox"; - this.filterCheckBox.Size = new System.Drawing.Size(158, 17); - this.filterCheckBox.TabIndex = 1; - this.filterCheckBox.Text = "Exclude common processes"; - this.filterCheckBox.UseVisualStyleBackColor = true; - this.filterCheckBox.CheckedChanged += new System.EventHandler(this.filterCheckBox_CheckedChanged); - // - // refreshButton - // - this.refreshButton.Image = global::ReClassNET.Properties.Resources.B16x16_Arrow_Refresh; - this.refreshButton.Location = new System.Drawing.Point(9, 99); - this.refreshButton.Name = "refreshButton"; - this.refreshButton.Size = new System.Drawing.Size(158, 23); - this.refreshButton.TabIndex = 2; - this.refreshButton.Text = "Refresh"; - this.refreshButton.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.refreshButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; - this.refreshButton.UseVisualStyleBackColor = true; - this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click); - // - // attachToProcessButton - // - this.attachToProcessButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) + this.processDataGridView.Location = new System.Drawing.Point(12, 199); + this.processDataGridView.MultiSelect = false; + this.processDataGridView.Name = "processDataGridView"; + this.processDataGridView.ReadOnly = true; + this.processDataGridView.RowHeadersVisible = false; + this.processDataGridView.ScrollBars = System.Windows.Forms.ScrollBars.Vertical; + this.processDataGridView.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect; + this.processDataGridView.Size = new System.Drawing.Size(549, 291); + this.processDataGridView.TabIndex = 1; + this.processDataGridView.CellMouseDoubleClick += new System.Windows.Forms.DataGridViewCellMouseEventHandler(this.processDataGridView_CellMouseDoubleClick); + // + // iconColumn + // + this.iconColumn.DataPropertyName = "icon"; + this.iconColumn.HeaderText = ""; + this.iconColumn.MinimumWidth = 18; + this.iconColumn.Name = "iconColumn"; + this.iconColumn.ReadOnly = true; + this.iconColumn.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.iconColumn.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.iconColumn.Width = 18; + // + // processNameColumn + // + this.processNameColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; + this.processNameColumn.DataPropertyName = "name"; + this.processNameColumn.HeaderText = "Process"; + this.processNameColumn.Name = "processNameColumn"; + this.processNameColumn.ReadOnly = true; + this.processNameColumn.Width = 69; + // + // pidColumn + // + this.pidColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.AllCells; + this.pidColumn.DataPropertyName = "id"; + this.pidColumn.HeaderText = "PID"; + this.pidColumn.Name = "pidColumn"; + this.pidColumn.ReadOnly = true; + this.pidColumn.Width = 49; + // + // pathColumn + // + this.pathColumn.AutoSizeMode = System.Windows.Forms.DataGridViewAutoSizeColumnMode.Fill; + this.pathColumn.DataPropertyName = "path"; + this.pathColumn.HeaderText = "Path"; + this.pathColumn.Name = "pathColumn"; + this.pathColumn.ReadOnly = true; + // + // filterCheckBox + // + this.filterCheckBox.AutoSize = true; + this.filterCheckBox.Checked = true; + this.filterCheckBox.CheckState = System.Windows.Forms.CheckState.Checked; + this.filterCheckBox.Location = new System.Drawing.Point(9, 72); + this.filterCheckBox.Name = "filterCheckBox"; + this.filterCheckBox.Size = new System.Drawing.Size(156, 17); + this.filterCheckBox.TabIndex = 2; + this.filterCheckBox.Text = "Exclude common processes"; + this.filterCheckBox.UseVisualStyleBackColor = true; + this.filterCheckBox.CheckedChanged += new System.EventHandler(this.filterCheckBox_CheckedChanged); + // + // refreshButton + // + this.refreshButton.Image = global::ReClassNET.Properties.Resources.B16x16_Arrow_Refresh; + this.refreshButton.Location = new System.Drawing.Point(9, 99); + this.refreshButton.Name = "refreshButton"; + this.refreshButton.Size = new System.Drawing.Size(158, 23); + this.refreshButton.TabIndex = 3; + this.refreshButton.Text = "Refresh"; + this.refreshButton.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.refreshButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.refreshButton.UseVisualStyleBackColor = true; + this.refreshButton.Click += new System.EventHandler(this.refreshButton_Click); + // + // attachToProcessButton + // + this.attachToProcessButton.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.attachToProcessButton.DialogResult = System.Windows.Forms.DialogResult.OK; - this.attachToProcessButton.Image = global::ReClassNET.Properties.Resources.B16x16_Accept; - this.attachToProcessButton.Location = new System.Drawing.Point(12, 519); - this.attachToProcessButton.Name = "attachToProcessButton"; - this.attachToProcessButton.Size = new System.Drawing.Size(549, 23); - this.attachToProcessButton.TabIndex = 3; - this.attachToProcessButton.Text = "Attach to Process"; - this.attachToProcessButton.TextAlign = System.Drawing.ContentAlignment.MiddleRight; - this.attachToProcessButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; - this.attachToProcessButton.UseVisualStyleBackColor = true; - // - // loadSymbolsCheckBox - // - this.loadSymbolsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.loadSymbolsCheckBox.AutoSize = true; - this.loadSymbolsCheckBox.Location = new System.Drawing.Point(12, 496); - this.loadSymbolsCheckBox.Name = "loadSymbolsCheckBox"; - this.loadSymbolsCheckBox.Size = new System.Drawing.Size(92, 17); - this.loadSymbolsCheckBox.TabIndex = 4; - this.loadSymbolsCheckBox.Text = "Load Symbols"; - this.loadSymbolsCheckBox.UseVisualStyleBackColor = true; - // - // filterGroupBox - // - this.filterGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) + this.attachToProcessButton.DialogResult = System.Windows.Forms.DialogResult.OK; + this.attachToProcessButton.Image = global::ReClassNET.Properties.Resources.B16x16_Accept; + this.attachToProcessButton.Location = new System.Drawing.Point(12, 519); + this.attachToProcessButton.Name = "attachToProcessButton"; + this.attachToProcessButton.Size = new System.Drawing.Size(549, 23); + this.attachToProcessButton.TabIndex = 3; + this.attachToProcessButton.Text = "Attach to Process"; + this.attachToProcessButton.TextAlign = System.Drawing.ContentAlignment.MiddleRight; + this.attachToProcessButton.TextImageRelation = System.Windows.Forms.TextImageRelation.ImageBeforeText; + this.attachToProcessButton.UseVisualStyleBackColor = true; + // + // loadSymbolsCheckBox + // + this.loadSymbolsCheckBox.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); + this.loadSymbolsCheckBox.AutoSize = true; + this.loadSymbolsCheckBox.Location = new System.Drawing.Point(12, 496); + this.loadSymbolsCheckBox.Name = "loadSymbolsCheckBox"; + this.loadSymbolsCheckBox.Size = new System.Drawing.Size(91, 17); + this.loadSymbolsCheckBox.TabIndex = 2; + this.loadSymbolsCheckBox.Text = "Load Symbols"; + this.loadSymbolsCheckBox.UseVisualStyleBackColor = true; + // + // filterGroupBox + // + this.filterGroupBox.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); - this.filterGroupBox.Controls.Add(this.previousProcessLinkLabel); - this.filterGroupBox.Controls.Add(this.label2); - this.filterGroupBox.Controls.Add(this.label1); - this.filterGroupBox.Controls.Add(this.filterCheckBox); - this.filterGroupBox.Controls.Add(this.refreshButton); - this.filterGroupBox.Controls.Add(this.filterTextBox); - this.filterGroupBox.Location = new System.Drawing.Point(12, 60); - this.filterGroupBox.Name = "filterGroupBox"; - this.filterGroupBox.Size = new System.Drawing.Size(549, 133); - this.filterGroupBox.TabIndex = 5; - this.filterGroupBox.TabStop = false; - this.filterGroupBox.Text = "Filter"; - // - // previousProcessLinkLabel - // - this.previousProcessLinkLabel.AutoSize = true; - this.previousProcessLinkLabel.Location = new System.Drawing.Point(103, 47); - this.previousProcessLinkLabel.Name = "previousProcessLinkLabel"; - this.previousProcessLinkLabel.Size = new System.Drawing.Size(19, 13); - this.previousProcessLinkLabel.TabIndex = 3; - this.previousProcessLinkLabel.TabStop = true; - this.previousProcessLinkLabel.Text = "<>"; - this.previousProcessLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.previousProcessLinkLabel_LinkClicked); - // - // label2 - // - this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(6, 47); - this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(92, 13); - this.label2.TabIndex = 2; - this.label2.Text = "Previous Process:"; - // - // label1 - // - this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(6, 22); - this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(79, 13); - this.label1.TabIndex = 1; - this.label1.Text = "Process Name:"; - // - // filterTextBox - // - this.filterTextBox.Location = new System.Drawing.Point(103, 19); - this.filterTextBox.Name = "filterTextBox"; - this.filterTextBox.Size = new System.Drawing.Size(270, 20); - this.filterTextBox.TabIndex = 0; - this.filterTextBox.TextChanged += new System.EventHandler(this.filterTextBox_TextChanged); - // - // bannerBox - // - this.bannerBox.Dock = System.Windows.Forms.DockStyle.Top; - this.bannerBox.Icon = global::ReClassNET.Properties.Resources.B32x32_Magnifier; - this.bannerBox.Location = new System.Drawing.Point(0, 0); - this.bannerBox.Name = "bannerBox"; - this.bannerBox.Size = new System.Drawing.Size(573, 48); - this.bannerBox.TabIndex = 6; - this.bannerBox.Text = "Select the process to which ReClass.NET is to be attached."; - this.bannerBox.Title = "Attach to Process"; - // - // ProcessBrowserForm - // - this.AcceptButton = this.attachToProcessButton; - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(573, 554); - this.Controls.Add(this.bannerBox); - this.Controls.Add(this.filterGroupBox); - this.Controls.Add(this.loadSymbolsCheckBox); - this.Controls.Add(this.attachToProcessButton); - this.Controls.Add(this.processDataGridView); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; - this.MaximizeBox = false; - this.MinimizeBox = false; - this.Name = "ProcessBrowserForm"; - this.ShowInTaskbar = false; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "ReClass.NET - Attach to Process"; - ((System.ComponentModel.ISupportInitialize)(this.processDataGridView)).EndInit(); - this.filterGroupBox.ResumeLayout(false); - this.filterGroupBox.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); + this.filterGroupBox.Controls.Add(this.previousProcessLinkLabel); + this.filterGroupBox.Controls.Add(this.label2); + this.filterGroupBox.Controls.Add(this.label1); + this.filterGroupBox.Controls.Add(this.filterCheckBox); + this.filterGroupBox.Controls.Add(this.refreshButton); + this.filterGroupBox.Controls.Add(this.filterTextBox); + this.filterGroupBox.Location = new System.Drawing.Point(12, 60); + this.filterGroupBox.Name = "filterGroupBox"; + this.filterGroupBox.Size = new System.Drawing.Size(549, 133); + this.filterGroupBox.TabIndex = 0; + this.filterGroupBox.TabStop = false; + this.filterGroupBox.Text = "Filter"; + // + // previousProcessLinkLabel + // + this.previousProcessLinkLabel.AutoSize = true; + this.previousProcessLinkLabel.Location = new System.Drawing.Point(103, 47); + this.previousProcessLinkLabel.Name = "previousProcessLinkLabel"; + this.previousProcessLinkLabel.Size = new System.Drawing.Size(23, 13); + this.previousProcessLinkLabel.TabIndex = 1; + this.previousProcessLinkLabel.TabStop = true; + this.previousProcessLinkLabel.Text = "<>"; + this.previousProcessLinkLabel.LinkClicked += new System.Windows.Forms.LinkLabelLinkClickedEventHandler(this.previousProcessLinkLabel_LinkClicked); + // + // label2 + // + this.label2.AutoSize = true; + this.label2.Location = new System.Drawing.Point(6, 47); + this.label2.Name = "label2"; + this.label2.Size = new System.Drawing.Size(92, 13); + this.label2.TabIndex = 2; + this.label2.Text = "Previous Process:"; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(6, 22); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(78, 13); + this.label1.TabIndex = 1; + this.label1.Text = "Process Name:"; + // + // filterTextBox + // + this.filterTextBox.Location = new System.Drawing.Point(103, 19); + this.filterTextBox.Name = "filterTextBox"; + this.filterTextBox.Size = new System.Drawing.Size(270, 20); + this.filterTextBox.TabIndex = 0; + this.filterTextBox.TextChanged += new System.EventHandler(this.filterTextBox_TextChanged); + // + // bannerBox + // + this.bannerBox.Dock = System.Windows.Forms.DockStyle.Top; + this.bannerBox.Icon = global::ReClassNET.Properties.Resources.B32x32_Magnifier; + this.bannerBox.Location = new System.Drawing.Point(0, 0); + this.bannerBox.Name = "bannerBox"; + this.bannerBox.Size = new System.Drawing.Size(573, 48); + this.bannerBox.TabIndex = 6; + this.bannerBox.Text = "Select the process to which ReClass.NET is to be attached."; + this.bannerBox.Title = "Attach to Process"; + // + // ProcessBrowserForm + // + this.AcceptButton = this.attachToProcessButton; + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(573, 554); + this.Controls.Add(this.bannerBox); + this.Controls.Add(this.filterGroupBox); + this.Controls.Add(this.loadSymbolsCheckBox); + this.Controls.Add(this.attachToProcessButton); + this.Controls.Add(this.processDataGridView); + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog; + this.MaximizeBox = false; + this.MinimizeBox = false; + this.Name = "ProcessBrowserForm"; + this.ShowInTaskbar = false; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "ReClass.NET - Attach to Process"; + ((System.ComponentModel.ISupportInitialize)(this.processDataGridView)).EndInit(); + this.filterGroupBox.ResumeLayout(false); + this.filterGroupBox.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); } diff --git a/ReClass.NET/UI/MemoryPreviewPopUp.cs b/ReClass.NET/UI/MemoryPreviewPopUp.cs index 997570f2..168a631e 100644 --- a/ReClass.NET/UI/MemoryPreviewPopUp.cs +++ b/ReClass.NET/UI/MemoryPreviewPopUp.cs @@ -23,10 +23,9 @@ private class MemoryPreviewPanel : Panel { private const int MinNodeCount = 10; - public ViewInfo ViewInfo => viewInfo; + public ViewInfo ViewInfo { get; } - private readonly ViewInfo viewInfo; - private readonly List nodes; + private readonly List nodes; public MemoryPreviewPanel(FontEx font) { @@ -36,7 +35,7 @@ public MemoryPreviewPanel(FontEx font) nodes = new List(); - viewInfo = new ViewInfo + ViewInfo = new ViewInfo { Font = font, @@ -51,17 +50,21 @@ public MemoryPreviewPanel(FontEx font) CalculateSize(); } - /// Sets the absolute number of nodes and resizes the underlaying memory buffer. - /// Number of nodes. - private void SetNodeCount(int count) + private BaseHexNode CreateNode(int index) + { + if (Program.TargetProcessIs64) + return new Hex64Node { Offset = (IntPtr)(index * 8) }; + else + return new Hex32Node { Offset = (IntPtr)(index * 4) }; + } + + /// Sets the absolute number of nodes and resizes the underlaying memory buffer. + /// Number of nodes. + private void SetNodeCount(int count) { - BaseHexNode CreateNode(int index) - { - if (Program.TargetProcessIs64) - return new Hex64Node { Offset = (IntPtr)(index * 8) }; - else - return new Hex32Node { Offset = (IntPtr)(index * 4) }; - } + // Convert to 32Node (Just clear and [if (nodes.Count < count)] will exec) + if (!Program.TargetProcessIs64 && nodes[0] is Hex64Node) + nodes.Clear(); if (nodes.Count < count) { @@ -72,7 +75,7 @@ BaseHexNode CreateNode(int index) nodes.RemoveRange(count, nodes.Count - count); } - viewInfo.Memory.Size = nodes.Select(n => n.MemorySize).Sum(); + ViewInfo.Memory.Size = nodes.Select(n => n.MemorySize).Sum(); } /// Changes the number of nodes with the provided delta. @@ -97,29 +100,29 @@ private void CalculateSize() { var size = new Size( ToolTipWidth, - nodes.Sum(n => n.CalculateDrawnHeight(viewInfo)) + ToolTipPadding + nodes.Sum(n => n.CalculateDrawnHeight(ViewInfo)) + ToolTipPadding ); - viewInfo.ClientArea = new Rectangle(ToolTipPadding / 2, ToolTipPadding / 2, size.Width - ToolTipPadding, size.Height - ToolTipPadding); + ViewInfo.ClientArea = new Rectangle(ToolTipPadding / 2, ToolTipPadding / 2, size.Width - ToolTipPadding, size.Height - ToolTipPadding); Size = MinimumSize = MaximumSize = size; } protected override void OnPaint(PaintEventArgs e) { - viewInfo.HotSpots.Clear(); + ViewInfo.HotSpots.Clear(); // Some settings are not usefull for the preview. - viewInfo.Settings = Program.Settings.Clone(); - viewInfo.Settings.ShowNodeAddress = false; + ViewInfo.Settings = Program.Settings.Clone(); + ViewInfo.Settings.ShowNodeAddress = false; - viewInfo.Context = e.Graphics; + ViewInfo.Context = e.Graphics; - using (var brush = new SolidBrush(viewInfo.Settings.BackgroundColor)) + using (var brush = new SolidBrush(ViewInfo.Settings.BackgroundColor)) { e.Graphics.FillRectangle(brush, ClientRectangle); } - using (var pen = new Pen(viewInfo.Settings.BackgroundColor.Invert(), 1)) + using (var pen = new Pen(ViewInfo.Settings.BackgroundColor.Invert(), 1)) { e.Graphics.DrawRectangle(pen, new Rectangle(Bounds.X, Bounds.Y, Bounds.Width - 1, Bounds.Height - 1)); } @@ -128,7 +131,7 @@ protected override void OnPaint(PaintEventArgs e) int y = 2; foreach (var node in nodes) { - y += node.Draw(viewInfo, x, y).Height; + y += node.Draw(ViewInfo, x, y).Height; } } } From c403ea850238ee64527b46cf430cf4d3f2f264b1 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Wed, 24 Apr 2019 12:29:04 +0200 Subject: [PATCH 08/32] # --- ReClass.NET/Constants.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ReClass.NET/Constants.cs b/ReClass.NET/Constants.cs index 1c285379..c47ededf 100644 --- a/ReClass.NET/Constants.cs +++ b/ReClass.NET/Constants.cs @@ -2,7 +2,7 @@ { public class Constants { - public const string ApplicationName = "ReClass.NET (CorrM Edition)"; + public const string ApplicationName = "ReClass.NET"; public const string ApplicationExecutableName = ApplicationName + ".exe"; @@ -18,9 +18,9 @@ public class Constants public const string PluginUrl = "https://github.com/KN4CK3R/ReClass.NET#plugins"; - public static string Platform = "x64"; + public static string Platform { get; set; } = "x64"; - public static string AddressHexFormat = "X016"; + public static string AddressHexFormat { get; set; } = "X016"; //#if RECLASSNET64 // public const string Platform = "x64"; From 496ec811f6c2aeb89434c3610f73474e5bfa410d Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Wed, 24 Apr 2019 22:04:44 +0200 Subject: [PATCH 09/32] # --- ReClass.NET/ReClass.NET.csproj | 10 ++++++++-- ReClass.NET/UI/MemoryViewControl.cs | 1 - ReClass.NET/packages.config | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/ReClass.NET/ReClass.NET.csproj b/ReClass.NET/ReClass.NET.csproj index b8a67ecc..b96b5012 100644 --- a/ReClass.NET/ReClass.NET.csproj +++ b/ReClass.NET/ReClass.NET.csproj @@ -124,8 +124,8 @@ - - ..\packages\System.Data.SQLite.Core.1.0.106.0\lib\net46\System.Data.SQLite.dll + + ..\packages\System.Data.SQLite.Core.1.0.110.0\lib\net46\System.Data.SQLite.dll @@ -138,6 +138,10 @@ + + ..\packages\InputSimulator.1.0.4.0\lib\net20\WindowsInput.dll + True + @@ -974,7 +978,9 @@ Missing file: "{0}". + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + \ No newline at end of file diff --git a/ReClass.NET/Forms/CodeForm.Designer.cs b/ReClass.NET/Forms/CodeForm.Designer.cs index fee807e4..a0484dc7 100644 --- a/ReClass.NET/Forms/CodeForm.Designer.cs +++ b/ReClass.NET/Forms/CodeForm.Designer.cs @@ -28,45 +28,45 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.bannerBox = new ReClassNET.UI.BannerBox(); - this.codeRichTextBox = new System.Windows.Forms.RichTextBox(); - ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); - this.SuspendLayout(); - // - // bannerBox - // - this.bannerBox.Dock = System.Windows.Forms.DockStyle.Top; - this.bannerBox.Icon = global::ReClassNET.Properties.Resources.B32x32_Page_Code; - this.bannerBox.Location = new System.Drawing.Point(0, 0); - this.bannerBox.Name = "bannerBox"; - this.bannerBox.Size = new System.Drawing.Size(629, 48); - this.bannerBox.TabIndex = 2; - this.bannerBox.Text = "The classes transformed into source code."; - this.bannerBox.Title = "Code Generator"; - // - // codeRichTextBox - // - this.codeRichTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.codeRichTextBox.Dock = System.Windows.Forms.DockStyle.Fill; - this.codeRichTextBox.Location = new System.Drawing.Point(0, 48); - this.codeRichTextBox.Name = "codeRichTextBox"; - this.codeRichTextBox.Size = new System.Drawing.Size(629, 390); - this.codeRichTextBox.TabIndex = 3; - this.codeRichTextBox.Text = ""; - // - // CodeForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(629, 438); - this.Controls.Add(this.codeRichTextBox); - this.Controls.Add(this.bannerBox); - this.MinimumSize = new System.Drawing.Size(350, 185); - this.Name = "CodeForm"; - this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; - this.Text = "ReClass.NET - Code Generator"; - ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).EndInit(); - this.ResumeLayout(false); + this.bannerBox = new ReClassNET.UI.BannerBox(); + this.codeRichTextBox = new System.Windows.Forms.RichTextBox(); + ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); + this.SuspendLayout(); + // + // bannerBox + // + this.bannerBox.Dock = System.Windows.Forms.DockStyle.Top; + this.bannerBox.Icon = global::ReClassNET.Properties.Resources.B32x32_Page_Code; + this.bannerBox.Location = new System.Drawing.Point(0, 0); + this.bannerBox.Name = "bannerBox"; + this.bannerBox.Size = new System.Drawing.Size(629, 48); + this.bannerBox.TabIndex = 2; + this.bannerBox.Text = "The classes transformed into source code."; + this.bannerBox.Title = "Code Generator"; + // + // codeRichTextBox + // + this.codeRichTextBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.codeRichTextBox.Dock = System.Windows.Forms.DockStyle.Fill; + this.codeRichTextBox.Location = new System.Drawing.Point(0, 48); + this.codeRichTextBox.Name = "codeRichTextBox"; + this.codeRichTextBox.Size = new System.Drawing.Size(629, 390); + this.codeRichTextBox.TabIndex = 3; + this.codeRichTextBox.Text = ""; + // + // CodeForm + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(629, 438); + this.Controls.Add(this.codeRichTextBox); + this.Controls.Add(this.bannerBox); + this.MinimumSize = new System.Drawing.Size(350, 185); + this.Name = "CodeForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent; + this.Text = "ReClass.NET - Code Generator"; + ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).EndInit(); + this.ResumeLayout(false); } diff --git a/ReClass.NET/Forms/CodeForm.cs b/ReClass.NET/Forms/CodeForm.cs index fc7bcba0..b0fc12c1 100644 --- a/ReClass.NET/Forms/CodeForm.cs +++ b/ReClass.NET/Forms/CodeForm.cs @@ -61,9 +61,9 @@ protected override void OnFormClosed(FormClosedEventArgs e) GlobalWindowManager.RemoveWindow(this); } - } + } - internal class RtfFormatter : IFormatter + internal class RtfFormatter : IFormatter { private readonly RtfBuilder builder = new RtfBuilder(RtfFont.Consolas, 20); diff --git a/ReClass.NET/Forms/MainForm.Designer.cs b/ReClass.NET/Forms/MainForm.Designer.cs index e8e4511d..5d6c15ee 100644 --- a/ReClass.NET/Forms/MainForm.Designer.cs +++ b/ReClass.NET/Forms/MainForm.Designer.cs @@ -126,6 +126,7 @@ private void InitializeComponent() this.processInformationsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.memorySearcherToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.namedAddressesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.classCompareToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator(); this.loadSymbolToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.loadSymbolsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -134,14 +135,14 @@ private void InitializeComponent() this.suspendProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.terminateProcessToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.projectToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.addNewClassToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator20 = new System.Windows.Forms.ToolStripSeparator(); this.cleanUnusedClassesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator(); this.generateCppCodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.generateCSharpCodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.helpToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aboutToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.addNewClassToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator20 = new System.Windows.Forms.ToolStripSeparator(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer)).BeginInit(); this.splitContainer.Panel1.SuspendLayout(); this.splitContainer.Panel2.SuspendLayout(); @@ -1075,6 +1076,7 @@ private void InitializeComponent() this.processInformationsToolStripMenuItem, this.memorySearcherToolStripMenuItem, this.namedAddressesToolStripMenuItem, + this.classCompareToolStripMenuItem, this.toolStripSeparator17, this.loadSymbolToolStripMenuItem, this.loadSymbolsToolStripMenuItem, @@ -1110,6 +1112,13 @@ private void InitializeComponent() this.namedAddressesToolStripMenuItem.Text = "Named Addresses..."; this.namedAddressesToolStripMenuItem.Click += new System.EventHandler(this.namedAddressesToolStripMenuItem_Click); // + // classCompareToolStripMenuItem + // + this.classCompareToolStripMenuItem.Name = "classCompareToolStripMenuItem"; + this.classCompareToolStripMenuItem.Size = new System.Drawing.Size(194, 22); + this.classCompareToolStripMenuItem.Text = "Class Compare"; + this.classCompareToolStripMenuItem.Click += new System.EventHandler(this.classCompareToolStripMenuItem_Click); + // // toolStripSeparator17 // this.toolStripSeparator17.Name = "toolStripSeparator17"; @@ -1173,6 +1182,19 @@ private void InitializeComponent() this.projectToolStripMenuItem.Size = new System.Drawing.Size(56, 20); this.projectToolStripMenuItem.Text = "Project"; // + // addNewClassToolStripMenuItem + // + this.addNewClassToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Add; + this.addNewClassToolStripMenuItem.Name = "addNewClassToolStripMenuItem"; + this.addNewClassToolStripMenuItem.Size = new System.Drawing.Size(198, 22); + this.addNewClassToolStripMenuItem.Text = "Add new class"; + this.addNewClassToolStripMenuItem.Click += new System.EventHandler(this.addNewClassToolStripMenuItem_Click); + // + // toolStripSeparator20 + // + this.toolStripSeparator20.Name = "toolStripSeparator20"; + this.toolStripSeparator20.Size = new System.Drawing.Size(195, 6); + // // cleanUnusedClassesToolStripMenuItem // this.cleanUnusedClassesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Chart_Delete; @@ -1218,19 +1240,6 @@ private void InitializeComponent() this.aboutToolStripMenuItem.Text = "About..."; this.aboutToolStripMenuItem.Click += new System.EventHandler(this.aboutToolStripMenuItem_Click); // - // addNewClassToolStripMenuItem - // - this.addNewClassToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Add; - this.addNewClassToolStripMenuItem.Name = "addNewClassToolStripMenuItem"; - this.addNewClassToolStripMenuItem.Size = new System.Drawing.Size(198, 22); - this.addNewClassToolStripMenuItem.Text = "Add new class"; - this.addNewClassToolStripMenuItem.Click += new System.EventHandler(this.addNewClassToolStripMenuItem_Click); - // - // toolStripSeparator20 - // - this.toolStripSeparator20.Name = "toolStripSeparator20"; - this.toolStripSeparator20.Size = new System.Drawing.Size(195, 6); - // // MainForm // this.AllowDrop = true; @@ -1244,6 +1253,7 @@ private void InitializeComponent() this.MainMenuStrip = this.mainMenuStrip; this.MinimumSize = new System.Drawing.Size(200, 100); this.Name = "MainForm"; + this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; this.Text = "ReClass.NET"; this.FormClosing += new System.Windows.Forms.FormClosingEventHandler(this.MainForm_FormClosing); this.DragDrop += new System.Windows.Forms.DragEventHandler(this.MainForm_DragDrop); @@ -1378,6 +1388,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem namedAddressesToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem addNewClassToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator20; + private System.Windows.Forms.ToolStripMenuItem classCompareToolStripMenuItem; } } diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index dcbf0be9..df61d4fa 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -43,7 +43,7 @@ public MainForm() InitializeComponent(); - Text = $"{Constants.ApplicationName} (x64)"; + // Text = $"{Constants.ApplicationName}"; mainMenuStrip.Renderer = new CustomToolStripProfessionalRenderer(true, true); toolStrip.Renderer = new CustomToolStripProfessionalRenderer(true, false); @@ -304,7 +304,12 @@ private void memoryViewerToolStripMenuItem_Click(object sender, EventArgs e) new ProcessInfoForm().Show(); } - private void memorySearcherToolStripMenuItem_Click(object sender, EventArgs e) + private void classCompareToolStripMenuItem_Click(object sender, EventArgs e) + { + new ClassCompare(currentProject.Classes).Show(); + } + + private void memorySearcherToolStripMenuItem_Click(object sender, EventArgs e) { new ScannerForm().Show(); } @@ -784,5 +789,7 @@ private void addNewClassToolStripMenuItem_Click(object sender, EventArgs e) { LinkedWindowFeatures.CreateDefaultClass(); } + + } } diff --git a/ReClass.NET/Nodes/BaseNode.cs b/ReClass.NET/Nodes/BaseNode.cs index 9b4d9e94..ddf8d714 100644 --- a/ReClass.NET/Nodes/BaseNode.cs +++ b/ReClass.NET/Nodes/BaseNode.cs @@ -127,14 +127,21 @@ public virtual string GetToolTipText(HotSpot spot, MemoryBuffer memory) /// The pixel size the node occupies. public abstract Size Draw(ViewInfo view, int x, int y); - /// - /// Calculates the height of the node if drawn. - /// This method is used to determine if a node outside the visible area should be drawn. - /// The returned height must be equal to the height which is returned by the method. - /// + /// Draws the node for compare. /// The view information. - /// The calculated height. - public abstract int CalculateDrawnHeight(ViewInfo view); + /// The x coordinate. + /// The y coordinate. + /// The pixel size the node occupies. + public abstract Size DrawCompare(ViewInfo view, int x, int y); + + /// + /// Calculates the height of the node if drawn. + /// This method is used to determine if a node outside the visible area should be drawn. + /// The returned height must be equal to the height which is returned by the method. + /// + /// The view information. + /// The calculated height. + public abstract int CalculateDrawnHeight(ViewInfo view); /// Updates the node from the given . Sets the and of the node. /// The spot. @@ -232,36 +239,49 @@ protected int AddText(ViewInfo view, int x, int y, Color color, int hitId, strin return x + width; } - /// Draws the address and of the node. - /// The view information. - /// The x coordinate. - /// The y coordinate. - /// The new x coordinate after drawing the text. - protected int AddAddressOffset(ViewInfo view, int x, int y) + /// Draws the address and of the node. + /// The view information. + /// The x coordinate. + /// The y coordinate. + /// Show address offset. + /// Show address. + /// The new x coordinate after drawing the text. + protected int AddAddressOffset(ViewInfo view, int x, int y) { Contract.Requires(view != null); Contract.Requires(view.Context != null); Contract.Requires(view.Font != null); - if (view.Settings.ShowNodeOffset) - { + if (view.Settings.ShowNodeOffset) x = AddText(view, x, y, view.Settings.OffsetColor, HotSpot.NoneId, $"{Offset.ToInt32():X04}") + view.Font.Width; - } if (view.Settings.ShowNodeAddress) - { x = AddText(view, x, y, view.Settings.AddressColor, HotSpot.AddressId, view.Address.Add(Offset).ToString(Constants.AddressHexFormat)) + view.Font.Width; - } return x; } - /// Draws a bar which indicates the selection status of the node. A for this area gets added too. - /// The view information. - /// The x coordinate. - /// The y coordinate. - /// The height of the bar. - protected void AddSelection(ViewInfo view, int x, int y, int height) + protected int AddAddressOffset(ViewInfo view, int x, int y, bool ShowOffset, bool ShowAddress) + { + Contract.Requires(view != null); + Contract.Requires(view.Context != null); + Contract.Requires(view.Font != null); + + if (ShowOffset) + x = AddText(view, x, y, view.Settings.OffsetColor, HotSpot.NoneId, $"{Offset.ToInt32():X04}") + view.Font.Width; + + if (ShowAddress) + x = AddText(view, x, y, view.Settings.AddressColor, HotSpot.AddressId, view.Address.Add(Offset).ToString(Constants.AddressHexFormat)) + view.Font.Width; + + return x; + } + + /// Draws a bar which indicates the selection status of the node. A for this area gets added too. + /// The view information. + /// The x coordinate. + /// The y coordinate. + /// The height of the bar. + protected void AddSelection(ViewInfo view, int x, int y, int height) { Contract.Requires(view != null); Contract.Requires(view.Context != null); diff --git a/ReClass.NET/Nodes/BaseNumericNode.cs b/ReClass.NET/Nodes/BaseNumericNode.cs index b389614a..34d57194 100644 --- a/ReClass.NET/Nodes/BaseNumericNode.cs +++ b/ReClass.NET/Nodes/BaseNumericNode.cs @@ -55,7 +55,47 @@ protected Size DrawNumeric(ViewInfo view, int x, int y, Image icon, string type, return new Size(x - origX, view.Font.Height); } - public override int CalculateDrawnHeight(ViewInfo view) + protected Size DrawNumericCompare(ViewInfo view, int x, int y, Image icon, string type, string value, string alternativeValue) + { + Contract.Requires(view != null); + Contract.Requires(icon != null); + Contract.Requires(type != null); + Contract.Requires(value != null); + + if (IsHidden) + { + return DrawHidden(view, x, y); + } + + // DrawInvalidMemoryIndicator(view, y); + + var origX = x; + + AddSelection(view, x, y, view.Font.Height); + + x += TextPadding; + + //x = AddIcon(view, x, y, icon, HotSpot.NoneId, HotSpotType.None); + x = AddAddressOffset(view, x, y, true, false); + + x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, type) + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "=") + view.Font.Width; + x = AddText(view, x, y, view.Settings.ValueColor, 0, value) + view.Font.Width; + if (alternativeValue != null) + { + x = AddText(view, x, y, view.Settings.ValueColor, 1, alternativeValue) + view.Font.Width; + } + + // x = AddComment(view, x, y); + + // AddTypeDrop(view, y); + // AddDelete(view, y); + + return new Size(x - origX, view.Font.Height); + } + + public override int CalculateDrawnHeight(ViewInfo view) { return IsHidden ? HiddenHeight : view.Font.Height; } diff --git a/ReClass.NET/Nodes/BitFieldNode.cs b/ReClass.NET/Nodes/BitFieldNode.cs index d5752d96..84b5857f 100644 --- a/ReClass.NET/Nodes/BitFieldNode.cs +++ b/ReClass.NET/Nodes/BitFieldNode.cs @@ -146,7 +146,12 @@ public override Size Draw(ViewInfo view, int x, int y) return new Size(x - origX, y - origY + view.Font.Height); } - public override int CalculateDrawnHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override int CalculateDrawnHeight(ViewInfo view) { if (IsHidden) { diff --git a/ReClass.NET/Nodes/BoolNode.cs b/ReClass.NET/Nodes/BoolNode.cs index 93f01306..e3bc2adb 100644 --- a/ReClass.NET/Nodes/BoolNode.cs +++ b/ReClass.NET/Nodes/BoolNode.cs @@ -45,7 +45,12 @@ public override Size Draw(ViewInfo view, int x, int y) return new Size(x - origX, view.Font.Height); } - public override int CalculateDrawnHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override int CalculateDrawnHeight(ViewInfo view) { return IsHidden ? HiddenHeight : view.Font.Height; } diff --git a/ReClass.NET/Nodes/ClassInstanceArrayNode.cs b/ReClass.NET/Nodes/ClassInstanceArrayNode.cs index 98e760cd..9e958114 100644 --- a/ReClass.NET/Nodes/ClassInstanceArrayNode.cs +++ b/ReClass.NET/Nodes/ClassInstanceArrayNode.cs @@ -28,7 +28,12 @@ public override Size Draw(ViewInfo view, int x, int y) return Draw(view, x, y, "Array", HotSpotType.ChangeType); } - protected override Size DrawChild(ViewInfo view, int x, int y) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + protected override Size DrawChild(ViewInfo view, int x, int y) { var v = view.Clone(); v.Address = view.Address.Add(Offset) + InnerNode.MemorySize * CurrentIndex; diff --git a/ReClass.NET/Nodes/ClassInstanceNode.cs b/ReClass.NET/Nodes/ClassInstanceNode.cs index f3243283..1c2f99e6 100644 --- a/ReClass.NET/Nodes/ClassInstanceNode.cs +++ b/ReClass.NET/Nodes/ClassInstanceNode.cs @@ -73,7 +73,12 @@ public override Size Draw(ViewInfo view, int x, int y) return size; } - public override int CalculateDrawnHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override int CalculateDrawnHeight(ViewInfo view) { if (IsHidden) { diff --git a/ReClass.NET/Nodes/ClassNode.cs b/ReClass.NET/Nodes/ClassNode.cs index 3d9bf31d..ce5a135b 100644 --- a/ReClass.NET/Nodes/ClassNode.cs +++ b/ReClass.NET/Nodes/ClassNode.cs @@ -158,7 +158,101 @@ public override Size Draw(ViewInfo view, int x, int y) return size; } - public override int CalculateDrawnHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var viewType = (MemoryCompareControl.ViewTypes)view.Tag; + var otherViews = (List)view.Tag2; + + AddSelection(view, 0, y, view.Font.Height); + + var origX = x; + var origY = y; + + x = AddOpenClose(view, x, y); + + var tx = x; + + x = AddIcon(view, x, y, Icons.Class, -1, HotSpotType.None); + // x = AddText(view, x, y, view.Settings.OffsetColor, 0, AddressFormula) + view.Font.Width; + + x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, "Class") + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width; + // x = AddText(view, x, y, view.Settings.ValueColor, HotSpot.NoneId, $"[{MemorySize}]") + view.Font.Width; + // x = AddComment(view, x, y); + + y += view.Font.Height; + + var size = new Size(x - origX, y - origY); + + if (levelsOpen[view.Level]) + { + var childOffset = tx - origX; + + var nv = view.Clone(); + nv.Level++; + foreach (var node in Nodes) + { + switch (node) + { + case BaseHexNode _: + continue; + } + + if (otherViews != null && viewType != MemoryCompareControl.ViewTypes.NotMatter) + { + if (viewType == MemoryCompareControl.ViewTypes.Matches) + { + byte[] toCheck = view.Memory.ReadBytes(node.Offset, node.MemorySize); + if (!otherViews.All(v => v.Memory.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) + continue; + } + else if (viewType == MemoryCompareControl.ViewTypes.Matches) + { + byte[] toCheck = view.Memory.ReadBytes(node.Offset, node.MemorySize); + if (!otherViews.Any(v => v.Memory.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) + continue; + } + } + + // Draw the node if it is in the visible area. + if (view.ClientArea.Contains(tx, y)) + { + var innerSize = node.DrawCompare(nv, tx, y); + + size = Utils.AggregateNodeSizes(size, innerSize.Extend(childOffset, 0)); + + y += innerSize.Height; + } + else + { + // Otherwise calculate the height... + var calculatedHeight = node.CalculateDrawnHeight(nv); + + // and check if the node area overlaps with the visible area... + if (new Rectangle(tx, y, 9999999, calculatedHeight).IntersectsWith(view.ClientArea)) + { + // then draw the node... + var innerSize = node.DrawCompare(nv, tx, y); + + size = Utils.AggregateNodeSizes(size, innerSize.Extend(childOffset, 0)); + + y += innerSize.Height; + } + else + { + // or skip drawing and just use the calculated height. + size = Utils.AggregateNodeSizes(size, new Size(0, calculatedHeight)); + + y += calculatedHeight; + } + } + } + } + + return size; + } + + public override int CalculateDrawnHeight(ViewInfo view) { if (IsHidden) { diff --git a/ReClass.NET/Nodes/ClassPtrArrayNode.cs b/ReClass.NET/Nodes/ClassPtrArrayNode.cs index aefd22b5..a254014a 100644 --- a/ReClass.NET/Nodes/ClassPtrArrayNode.cs +++ b/ReClass.NET/Nodes/ClassPtrArrayNode.cs @@ -26,7 +26,12 @@ public override Size Draw(ViewInfo view, int x, int y) return Draw(view, x, y, "PtrArray", HotSpotType.ChangeType); } - protected override Size DrawChild(ViewInfo view, int x, int y) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + protected override Size DrawChild(ViewInfo view, int x, int y) { var ptr = view.Memory.ReadIntPtr(Offset + IntPtr.Size * CurrentIndex); diff --git a/ReClass.NET/Nodes/ClassPtrNode.cs b/ReClass.NET/Nodes/ClassPtrNode.cs index 68a22c5d..f5e637aa 100644 --- a/ReClass.NET/Nodes/ClassPtrNode.cs +++ b/ReClass.NET/Nodes/ClassPtrNode.cs @@ -82,7 +82,12 @@ public override Size Draw(ViewInfo view, int x, int y) return size; } - public override int CalculateDrawnHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override int CalculateDrawnHeight(ViewInfo view) { if (IsHidden) { diff --git a/ReClass.NET/Nodes/DoubleNode.cs b/ReClass.NET/Nodes/DoubleNode.cs index 67e03138..3ef8342d 100644 --- a/ReClass.NET/Nodes/DoubleNode.cs +++ b/ReClass.NET/Nodes/DoubleNode.cs @@ -13,7 +13,12 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Double, "Double", ReadValueFromMemory(view.Memory).ToString("0.000"), null); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/FloatNode.cs b/ReClass.NET/Nodes/FloatNode.cs index 867fb8ed..0daa779d 100644 --- a/ReClass.NET/Nodes/FloatNode.cs +++ b/ReClass.NET/Nodes/FloatNode.cs @@ -13,7 +13,12 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Float, "Float", ReadValueFromMemory(view.Memory).ToString("0.000"), null); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/FunctionNode.cs b/ReClass.NET/Nodes/FunctionNode.cs index db24b028..8441fab6 100644 --- a/ReClass.NET/Nodes/FunctionNode.cs +++ b/ReClass.NET/Nodes/FunctionNode.cs @@ -86,7 +86,12 @@ public override Size Draw(ViewInfo view, int x, int y) return size; } - public override int CalculateDrawnHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override int CalculateDrawnHeight(ViewInfo view) { if (IsHidden) { diff --git a/ReClass.NET/Nodes/FunctionPtrNode.cs b/ReClass.NET/Nodes/FunctionPtrNode.cs index 3f85ba6b..f940eed3 100644 --- a/ReClass.NET/Nodes/FunctionPtrNode.cs +++ b/ReClass.NET/Nodes/FunctionPtrNode.cs @@ -16,5 +16,10 @@ public override Size Draw(ViewInfo view, int x, int y) { return Draw(view, x, y, "FunctionPtr", Name); } - } + + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + } } diff --git a/ReClass.NET/Nodes/Hex16Node.cs b/ReClass.NET/Nodes/Hex16Node.cs index 2a06bf01..102dc78a 100644 --- a/ReClass.NET/Nodes/Hex16Node.cs +++ b/ReClass.NET/Nodes/Hex16Node.cs @@ -30,7 +30,12 @@ public override Size Draw(ViewInfo view, int x, int y) return Draw(view, x, y, view.Settings.ShowNodeText ? view.Memory.ReadPrintableAsciiString(Offset, 2) + " " : null, 2); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override void Update(HotSpot spot) { Update(spot, 2); } diff --git a/ReClass.NET/Nodes/Hex32Node.cs b/ReClass.NET/Nodes/Hex32Node.cs index 74b621c7..8a69a6c4 100644 --- a/ReClass.NET/Nodes/Hex32Node.cs +++ b/ReClass.NET/Nodes/Hex32Node.cs @@ -40,7 +40,12 @@ public override Size Draw(ViewInfo view, int x, int y) return Draw(view, x, y, view.Settings.ShowNodeText ? view.Memory.ReadPrintableAsciiString(Offset, 4) + " " : null, 4); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override void Update(HotSpot spot) { Update(spot, 4); } diff --git a/ReClass.NET/Nodes/Hex64Node.cs b/ReClass.NET/Nodes/Hex64Node.cs index 89ab6e1c..4dd1adce 100644 --- a/ReClass.NET/Nodes/Hex64Node.cs +++ b/ReClass.NET/Nodes/Hex64Node.cs @@ -40,7 +40,12 @@ public override Size Draw(ViewInfo view, int x, int y) return Draw(view, x, y, view.Settings.ShowNodeText ? view.Memory.ReadPrintableAsciiString(Offset, 8) + " " : null, 8); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override void Update(HotSpot spot) { Update(spot, 8); } diff --git a/ReClass.NET/Nodes/Hex8Node.cs b/ReClass.NET/Nodes/Hex8Node.cs index 0775f013..b7c27c45 100644 --- a/ReClass.NET/Nodes/Hex8Node.cs +++ b/ReClass.NET/Nodes/Hex8Node.cs @@ -20,7 +20,12 @@ public override Size Draw(ViewInfo view, int x, int y) return Draw(view, x, y, view.Settings.ShowNodeText ? view.Memory.ReadPrintableAsciiString(Offset, 1) + " " : null, 1); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override void Update(HotSpot spot) { Update(spot, 1); } diff --git a/ReClass.NET/Nodes/Int16Node.cs b/ReClass.NET/Nodes/Int16Node.cs index 16ecc96b..79d444ea 100644 --- a/ReClass.NET/Nodes/Int16Node.cs +++ b/ReClass.NET/Nodes/Int16Node.cs @@ -17,7 +17,13 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Signed, "Int16", value.ToString(), $"0x{value:X}"); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var value = ReadValueFromMemory(view.Memory); + return DrawNumericCompare(view, x, y, Icons.Signed, "Int16", value.ToString(), $"0x{value:X}"); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/Int32Node.cs b/ReClass.NET/Nodes/Int32Node.cs index 00724a98..7a870313 100644 --- a/ReClass.NET/Nodes/Int32Node.cs +++ b/ReClass.NET/Nodes/Int32Node.cs @@ -17,7 +17,13 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Signed, "Int32", value.ToString(), $"0x{value:X}"); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var value = ReadValueFromMemory(view.Memory); + return DrawNumericCompare(view, x, y, Icons.Signed, "Int32", value.ToString(), $"0x{value:X}"); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/Int64Node.cs b/ReClass.NET/Nodes/Int64Node.cs index 608ea17d..66d49646 100644 --- a/ReClass.NET/Nodes/Int64Node.cs +++ b/ReClass.NET/Nodes/Int64Node.cs @@ -17,7 +17,13 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Signed, "Int64", value.ToString(), $"0x{value:X}"); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var value = ReadValueFromMemory(view.Memory); + return DrawNumericCompare(view, x, y, Icons.Signed, "Int64", value.ToString(), $"0x{value:X}"); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/Int8Node.cs b/ReClass.NET/Nodes/Int8Node.cs index 7b16b4ad..7ecc8e2d 100644 --- a/ReClass.NET/Nodes/Int8Node.cs +++ b/ReClass.NET/Nodes/Int8Node.cs @@ -17,7 +17,13 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Signed, "Int8", value.ToString(), $"0x{value:X}"); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var value = ReadValueFromMemory(view.Memory); + return DrawNumericCompare(view, x, y, Icons.Signed, "Int8", value.ToString(), $"0x{value:X}"); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/Matrix3x3Node.cs b/ReClass.NET/Nodes/Matrix3x3Node.cs index b3e470ae..f8ec7d68 100644 --- a/ReClass.NET/Nodes/Matrix3x3Node.cs +++ b/ReClass.NET/Nodes/Matrix3x3Node.cs @@ -80,7 +80,12 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - protected override int CalculateValuesHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + protected override int CalculateValuesHeight(ViewInfo view) { return 3 * view.Font.Height; } diff --git a/ReClass.NET/Nodes/Matrix3x4Node.cs b/ReClass.NET/Nodes/Matrix3x4Node.cs index 0623a503..093e31a5 100644 --- a/ReClass.NET/Nodes/Matrix3x4Node.cs +++ b/ReClass.NET/Nodes/Matrix3x4Node.cs @@ -92,7 +92,12 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - protected override int CalculateValuesHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + protected override int CalculateValuesHeight(ViewInfo view) { return 3 * view.Font.Height; } diff --git a/ReClass.NET/Nodes/Matrix4x4Node.cs b/ReClass.NET/Nodes/Matrix4x4Node.cs index 81dc6d6b..374731e2 100644 --- a/ReClass.NET/Nodes/Matrix4x4Node.cs +++ b/ReClass.NET/Nodes/Matrix4x4Node.cs @@ -113,7 +113,12 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - protected override int CalculateValuesHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + protected override int CalculateValuesHeight(ViewInfo view) { return 4 * view.Font.Height; } diff --git a/ReClass.NET/Nodes/UInt16Node.cs b/ReClass.NET/Nodes/UInt16Node.cs index 92fbe08f..bfab52f8 100644 --- a/ReClass.NET/Nodes/UInt16Node.cs +++ b/ReClass.NET/Nodes/UInt16Node.cs @@ -17,7 +17,13 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Unsigned, "UInt16", value.ToString(), $"0x{value:X}"); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var value = ReadValueFromMemory(view.Memory); + return DrawNumericCompare(view, x, y, Icons.Unsigned, "UInt16", value.ToString(), $"0x{value:X}"); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/UInt32Node.cs b/ReClass.NET/Nodes/UInt32Node.cs index 3b552190..fa4a1dc2 100644 --- a/ReClass.NET/Nodes/UInt32Node.cs +++ b/ReClass.NET/Nodes/UInt32Node.cs @@ -17,7 +17,13 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Unsigned, "UInt32", value.ToString(), $"0x{value:X}"); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var value = ReadValueFromMemory(view.Memory); + return DrawNumericCompare(view, x, y, Icons.Unsigned, "UInt32", value.ToString(), $"0x{value:X}"); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/UInt64Node.cs b/ReClass.NET/Nodes/UInt64Node.cs index d3c4da5b..ce34f2bf 100644 --- a/ReClass.NET/Nodes/UInt64Node.cs +++ b/ReClass.NET/Nodes/UInt64Node.cs @@ -17,7 +17,13 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Unsigned, "UInt64", value.ToString(), $"0x{value:X}"); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var value = ReadValueFromMemory(view.Memory); + return DrawNumericCompare(view, x, y, Icons.Unsigned, "UInt64", value.ToString(), $"0x{value:X}"); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/UInt8Node.cs b/ReClass.NET/Nodes/UInt8Node.cs index 3b3d40dd..9815b27c 100644 --- a/ReClass.NET/Nodes/UInt8Node.cs +++ b/ReClass.NET/Nodes/UInt8Node.cs @@ -17,7 +17,13 @@ public override Size Draw(ViewInfo view, int x, int y) return DrawNumeric(view, x, y, Icons.Unsigned, "UInt8", value.ToString(), $"0x{value:X}"); } - public override void Update(HotSpot spot) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + var value = ReadValueFromMemory(view.Memory); + return DrawNumericCompare(view, x, y, Icons.Unsigned, "UInt8", value.ToString(), $"0x{value:X}"); + } + + public override void Update(HotSpot spot) { base.Update(spot); diff --git a/ReClass.NET/Nodes/UTF16TextNode.cs b/ReClass.NET/Nodes/UTF16TextNode.cs index 201d50a3..0b99c32c 100644 --- a/ReClass.NET/Nodes/UTF16TextNode.cs +++ b/ReClass.NET/Nodes/UTF16TextNode.cs @@ -14,5 +14,10 @@ public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text16"); } - } + + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + } } diff --git a/ReClass.NET/Nodes/UTF16TextPtrNode.cs b/ReClass.NET/Nodes/UTF16TextPtrNode.cs index 3c1c5336..dc56f89e 100644 --- a/ReClass.NET/Nodes/UTF16TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF16TextPtrNode.cs @@ -14,5 +14,10 @@ public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text16Ptr"); } - } + + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + } } diff --git a/ReClass.NET/Nodes/UTF32TextNode.cs b/ReClass.NET/Nodes/UTF32TextNode.cs index f3a54505..c1f3673d 100644 --- a/ReClass.NET/Nodes/UTF32TextNode.cs +++ b/ReClass.NET/Nodes/UTF32TextNode.cs @@ -14,5 +14,10 @@ public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text32"); } - } + + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + } } diff --git a/ReClass.NET/Nodes/UTF32TextPtrNode.cs b/ReClass.NET/Nodes/UTF32TextPtrNode.cs index bbfb384e..25b4db20 100644 --- a/ReClass.NET/Nodes/UTF32TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF32TextPtrNode.cs @@ -14,5 +14,10 @@ public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text32Ptr"); } - } + + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + } } diff --git a/ReClass.NET/Nodes/UTF8TextNode.cs b/ReClass.NET/Nodes/UTF8TextNode.cs index 1db49ebf..312f6f50 100644 --- a/ReClass.NET/Nodes/UTF8TextNode.cs +++ b/ReClass.NET/Nodes/UTF8TextNode.cs @@ -14,5 +14,10 @@ public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text8"); } - } + + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + } } diff --git a/ReClass.NET/Nodes/UTF8TextPtrNode.cs b/ReClass.NET/Nodes/UTF8TextPtrNode.cs index 4e7569ae..c610fd50 100644 --- a/ReClass.NET/Nodes/UTF8TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF8TextPtrNode.cs @@ -14,5 +14,9 @@ public override Size Draw(ViewInfo view, int x, int y) { return DrawText(view, x, y, "Text8Ptr"); } - } + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + } } diff --git a/ReClass.NET/Nodes/VMethodNode.cs b/ReClass.NET/Nodes/VMethodNode.cs index c4e350f3..2136d4f6 100644 --- a/ReClass.NET/Nodes/VMethodNode.cs +++ b/ReClass.NET/Nodes/VMethodNode.cs @@ -27,5 +27,10 @@ public override Size Draw(ViewInfo view, int x, int y) { return Draw(view, x, y, $"({Offset.ToInt32() / IntPtr.Size})", MethodName); } - } + + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + } } diff --git a/ReClass.NET/Nodes/VTableNode.cs b/ReClass.NET/Nodes/VTableNode.cs index bebdcfc3..176ca691 100644 --- a/ReClass.NET/Nodes/VTableNode.cs +++ b/ReClass.NET/Nodes/VTableNode.cs @@ -86,7 +86,12 @@ public override Size Draw(ViewInfo view, int x, int y) return size; } - public override int CalculateDrawnHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + public override int CalculateDrawnHeight(ViewInfo view) { if (IsHidden) { @@ -159,5 +164,5 @@ public override bool RemoveNode(BaseNode node) } return removed; } - } + } } diff --git a/ReClass.NET/Nodes/Vector2Node.cs b/ReClass.NET/Nodes/Vector2Node.cs index b585ef2f..00ba2d66 100644 --- a/ReClass.NET/Nodes/Vector2Node.cs +++ b/ReClass.NET/Nodes/Vector2Node.cs @@ -38,7 +38,12 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - protected override int CalculateValuesHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + protected override int CalculateValuesHeight(ViewInfo view) { return 0; } diff --git a/ReClass.NET/Nodes/Vector3Node.cs b/ReClass.NET/Nodes/Vector3Node.cs index cf35e318..1cb7e64f 100644 --- a/ReClass.NET/Nodes/Vector3Node.cs +++ b/ReClass.NET/Nodes/Vector3Node.cs @@ -42,7 +42,12 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - protected override int CalculateValuesHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + protected override int CalculateValuesHeight(ViewInfo view) { return 0; } diff --git a/ReClass.NET/Nodes/Vector4Node.cs b/ReClass.NET/Nodes/Vector4Node.cs index a8e54b87..e5f9de72 100644 --- a/ReClass.NET/Nodes/Vector4Node.cs +++ b/ReClass.NET/Nodes/Vector4Node.cs @@ -46,7 +46,12 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - protected override int CalculateValuesHeight(ViewInfo view) + public override Size DrawCompare(ViewInfo view, int x, int y) + { + return Draw(view, x, y); + } + + protected override int CalculateValuesHeight(ViewInfo view) { return 0; } diff --git a/ReClass.NET/ReClass.NET.csproj b/ReClass.NET/ReClass.NET.csproj index af5ccf14..4a836bcc 100644 --- a/ReClass.NET/ReClass.NET.csproj +++ b/ReClass.NET/ReClass.NET.csproj @@ -174,6 +174,12 @@ + + Form + + + ClassCompare.cs + Form @@ -340,13 +346,34 @@ MemoryRecordList.cs + + UserControl + + + MemoryCompareControl.cs + MemoryViewControl.cs + + Component + Component + + UserControl + + + ScrollableSplitTable.cs + + + Component + + + SplitTablePanel.cs + @@ -499,6 +526,9 @@ AboutForm.cs + + ClassCompare.cs + NamedAddressesForm.cs @@ -547,6 +577,9 @@ MemoryRecordList.cs + + MemoryCompareControl.cs + MemoryViewControl.cs @@ -568,6 +601,12 @@ Resources.Designer.cs + + ScrollableSplitTable.cs + + + SplitTablePanel.cs + SettingsSingleFileGenerator diff --git a/ReClass.NET/UI/MemoryCompareControl.Designer.cs b/ReClass.NET/UI/MemoryCompareControl.Designer.cs new file mode 100644 index 00000000..7a0d9aa9 --- /dev/null +++ b/ReClass.NET/UI/MemoryCompareControl.Designer.cs @@ -0,0 +1,80 @@ +namespace ReClassNET.UI +{ + partial class MemoryCompareControl + { + /// + /// Erforderliche Designervariable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Verwendete Ressourcen bereinigen. + /// + /// True, wenn verwaltete Ressourcen gelöscht werden sollen; andernfalls False. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Vom Komponenten-Designer generierter Code + + /// + /// Erforderliche Methode für die Designerunterstützung. + /// Der Inhalt der Methode darf nicht mit dem Code-Editor geändert werden. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + this.selectedNodeContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); + this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); + this.repaintTimer = new System.Windows.Forms.Timer(this.components); + this.nodeInfoToolTip = new System.Windows.Forms.ToolTip(this.components); + this.selectedNodeContextMenuStrip.SuspendLayout(); + this.SuspendLayout(); + // + // selectedNodeContextMenuStrip + // + this.selectedNodeContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.toolStripMenuItem1}); + this.selectedNodeContextMenuStrip.Name = "selectedNodeContextMenuStrip"; + this.selectedNodeContextMenuStrip.Size = new System.Drawing.Size(96, 26); + this.selectedNodeContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.selectedNodeContextMenuStrip_Opening); + // + // toolStripMenuItem1 + // + this.toolStripMenuItem1.Name = "toolStripMenuItem1"; + this.toolStripMenuItem1.Size = new System.Drawing.Size(95, 22); + this.toolStripMenuItem1.Text = "Test"; + // + // repaintTimer + // + this.repaintTimer.Enabled = true; + this.repaintTimer.Interval = 250; + this.repaintTimer.Tick += new System.EventHandler(this.repaintTimer_Tick); + // + // nodeInfoToolTip + // + this.nodeInfoToolTip.ShowAlways = true; + // + // MemoryCompareControl + // + this.DoubleBuffered = true; + this.Name = "MemoryCompareControl"; + this.Size = new System.Drawing.Size(277, 252); + this.selectedNodeContextMenuStrip.ResumeLayout(false); + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.ContextMenuStrip selectedNodeContextMenuStrip; + private System.Windows.Forms.Timer repaintTimer; + private System.Windows.Forms.ToolTip nodeInfoToolTip; + private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; + } +} diff --git a/ReClass.NET/UI/MemoryCompareControl.cs b/ReClass.NET/UI/MemoryCompareControl.cs new file mode 100644 index 00000000..51b6705a --- /dev/null +++ b/ReClass.NET/UI/MemoryCompareControl.cs @@ -0,0 +1,623 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Diagnostics; +using System.Diagnostics.Contracts; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Windows.Forms; +using ReClassNET.DataExchange.ReClass; +using ReClassNET.Extensions; +using ReClassNET.Forms; +using ReClassNET.Memory; +using ReClassNET.MemoryScanner; +using ReClassNET.MemoryScanner.Comparer; +using ReClassNET.Nodes; +using ReClassNET.Util; + +namespace ReClassNET.UI +{ + public partial class MemoryCompareControl : ScrollableCustomControl + { + public enum ViewTypes + { + NotMatter, + Matches, + NotMatches + } + + private ReClassNetProject project; + private KeyBoardManager keyBoard; + private ClassNode classNode; + + private readonly List hotSpots = new List(); + private readonly List selectedNodes = new List(); + + private HotSpot selectionCaret; + private HotSpot selectionAnchor; + + private readonly FontEx font; + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public ReClassNetProject Project + { + get => project; + set + { + Contract.Requires(value != null); + + project = value; + } + } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public ClassNode ClassNode + { + get => classNode; + set + { + ClearSelection(); + + OnSelectionChanged(); + + classNode = value; + + VerticalScroll.Value = 0; + if (classNode != null && Memory?.Process != null) + { + classNode.UpdateAddress(Memory.Process); + } + + Invalidate(); + } + } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public MemoryBuffer Memory { get; set; } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public ViewTypes ViewType { get; set; } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public object OtherMemCompareControls { get; set; } + + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public IntPtr ClassOffset; + + public IEnumerable SelectedNodes => selectedNodes.Select(s => s.Node); + public event EventHandler SelectionChanged; + + /// The context menu of a node. + public ContextMenuStrip NodeContextMenu => selectedNodeContextMenuStrip; + + private readonly MemoryPreviewPopUp memoryPreviewPopUp; + + public MemoryCompareControl() + { + InitializeComponent(); + + if (Program.DesignMode) + return; + + font = Program.MonoSpaceFont; + memoryPreviewPopUp = new MemoryPreviewPopUp(font); + keyBoard = new KeyBoardManager(); + } + + protected override void OnLoad(EventArgs e) + { + base.OnLoad(e); + + VerticalScroll.Enabled = true; + VerticalScroll.Visible = false; + VerticalScroll.SmallChange = 10; + HorizontalScroll.Enabled = true; + HorizontalScroll.Visible = false; + HorizontalScroll.SmallChange = 100; + } + + protected override void OnPaint(PaintEventArgs e) + { + base.OnPaint(e); + if (DesignMode) + { + e.Graphics.FillRectangle(Brushes.White, ClientRectangle); + return; + } + + hotSpots.Clear(); + + using (var brush = new SolidBrush(Program.Settings.BackgroundColor)) + { + e.Graphics.FillRectangle(brush, ClientRectangle); + } + + if (ClassNode == null) + { + return; + } + + if (Memory.Process != null) + { + ClassNode.UpdateAddress(Memory.Process); + } + + if (memoryPreviewPopUp.Visible) + { + memoryPreviewPopUp.UpdateMemory(); + } + + Memory.Size = ClassNode.MemorySize; + Memory.Update(ClassOffset == IntPtr.Zero ? ClassNode.Offset : ClassOffset); + + BaseHexNode.CurrentHighlightTime = DateTime.Now; + + var view = new ViewInfo + { + Settings = Program.Settings, + Context = e.Graphics, + Font = font, + Address = ClassNode.Offset, + ClientArea = ClientRectangle, + Level = 0, + Memory = Memory, + MultipleNodesSelected = selectedNodes.Count > 1, + HotSpots = hotSpots, + Tag = ViewType, + Tag2 = OtherMemCompareControls + }; + + try + { + var drawnSize = ClassNode.DrawCompare(view, -HorizontalScroll.Value, -VerticalScroll.Value * font.Height); + drawnSize.Width += 50; + + /*foreach (var spot in hotSpots.Where(h => h.Type == HotSpotType.Select)) + { + e.Graphics.DrawRectangle(new Pen(new SolidBrush(Color.FromArgb(150, 255, 0, 0)), 1), spot.Rect); + }*/ + + if (drawnSize.Height > ClientSize.Height) + { + VerticalScroll.Enabled = true; + + VerticalScroll.LargeChange = ClientSize.Height / font.Height; + VerticalScroll.Maximum = (drawnSize.Height - ClientSize.Height) / font.Height + VerticalScroll.LargeChange; + } + else + { + VerticalScroll.Enabled = false; + VerticalScroll.Value = 0; + } + + if (drawnSize.Width > ClientSize.Width) + { + HorizontalScroll.Enabled = true; + + HorizontalScroll.LargeChange = ClientSize.Width; + HorizontalScroll.Maximum = drawnSize.Width - ClientSize.Width + HorizontalScroll.LargeChange; + } + else + { + HorizontalScroll.Enabled = false; + HorizontalScroll.Value = 0; + } + } + catch (Exception ex) + { + Debug.Assert(false); + } + } + + private void OnSelectionChanged() + { + SelectionChanged?.Invoke(this, EventArgs.Empty); + } + + #region Process Input + protected override void OnMouseClick(MouseEventArgs e) + { + Contract.Requires(e != null); + bool invalidate = false; + + foreach (var hotSpot in hotSpots) + { + if (hotSpot.Rect.Contains(e.Location)) + { + try + { + var hitObject = hotSpot.Node; + + if (hotSpot.Type == HotSpotType.OpenClose) + { + hitObject.ToggleLevelOpen(hotSpot.Level); + + invalidate = true; + + break; + } + if (hotSpot.Type == HotSpotType.Click) + { + hitObject.Update(hotSpot); + + invalidate = true; + + break; + } + if (hotSpot.Type == HotSpotType.Select) + { + if (e.Button == MouseButtons.Left) + { + if (ModifierKeys == Keys.None) + { + ClearSelection(); + + hitObject.IsSelected = true; + + selectedNodes.Add(hotSpot); + + OnSelectionChanged(); + + selectionAnchor = selectionCaret = hotSpot; + } + else if (ModifierKeys == Keys.Control) + { + hitObject.IsSelected = !hitObject.IsSelected; + + if (hitObject.IsSelected) + { + selectedNodes.Add(hotSpot); + } + else + { + selectedNodes.Remove(selectedNodes.FirstOrDefault(c => c.Node == hitObject)); + } + + OnSelectionChanged(); + } + else if (ModifierKeys == Keys.Shift) + { + if (selectedNodes.Count > 0) + { + var selectedNode = selectedNodes[0].Node; + if (hitObject.ParentNode != null && selectedNode.ParentNode != hitObject.ParentNode) + { + continue; + } + + if (hotSpot.Node is BaseContainerNode) + { + continue; + } + + var first = Utils.Min(selectedNodes[0], hotSpot, h => h.Node.Offset.ToInt32()); + var last = first == hotSpot ? selectedNodes[0] : hotSpot; + + ClearSelection(); + + var containerNode = selectedNode.ParentNode; + foreach (var spot in containerNode.Nodes + .SkipWhile(n => n != first.Node) + .TakeUntil(n => n == last.Node) + .Select(n => new HotSpot + { + Address = containerNode.Offset.Add(n.Offset), + Node = n, + Memory = first.Memory, + Level = first.Level + })) + { + spot.Node.IsSelected = true; + selectedNodes.Add(spot); + } + + OnSelectionChanged(); + + selectionAnchor = first; + selectionCaret = last; + } + } + } + else if (e.Button == MouseButtons.Right) + { + // If there is only one selected node, select the node the user clicked at. + if (selectedNodes.Count <= 1) + { + ClearSelection(); + + hitObject.IsSelected = true; + + selectedNodes.Add(hotSpot); + + OnSelectionChanged(); + + selectionAnchor = selectionCaret = hotSpot; + } + + selectedNodeContextMenuStrip.Show(this, e.Location); + } + + invalidate = true; + } + else if (hotSpot.Type == HotSpotType.Drop) + { + selectedNodeContextMenuStrip.Show(this, e.Location); + + break; + } + } + catch (Exception ex) + { + Program.Logger.Log(ex); + } + } + } + + if (invalidate) + { + Invalidate(); + } + + base.OnMouseClick(e); + } + + protected override void OnMouseDoubleClick(MouseEventArgs e) + { + Contract.Requires(e != null); + base.OnMouseDoubleClick(e); + + BaseNode toggleNode = null; + var level = 0; + + foreach (var hotSpot in hotSpots.Where(h => h.Type == HotSpotType.Edit || h.Type == HotSpotType.Select)) + { + if (hotSpot.Rect.Contains(e.Location)) + { + if (hotSpot.Type == HotSpotType.Edit) + { + return; + } + + if (hotSpot.Type == HotSpotType.Select) + { + toggleNode = hotSpot.Node; + level = hotSpot.Level; + } + } + } + + if (toggleNode != null) + { + toggleNode.ToggleLevelOpen(level); + + Invalidate(); + } + } + + private Point toolTipPosition; + protected override void OnMouseHover(EventArgs e) + { + Contract.Requires(e != null); + + base.OnMouseHover(e); + + if (selectedNodes.Count > 1) + { + var memorySize = selectedNodes.Sum(h => h.Node.MemorySize); + nodeInfoToolTip.Show($"{selectedNodes.Count} Nodes selected, {memorySize} bytes", this, toolTipPosition.OffsetEx(16, 16)); + } + else + { + foreach (var spot in hotSpots.Where(h => h.Type == HotSpotType.Select)) + { + if (spot.Rect.Contains(toolTipPosition)) + { + if (spot.Node.UseMemoryPreviewToolTip(spot, spot.Memory, out var previewAddress) && + keyBoard.input.InputDeviceState.IsKeyDown(WindowsInput.Native.VirtualKeyCode.CONTROL)) // Control Key IsDown + { + memoryPreviewPopUp.InitializeMemory(spot.Memory.Process, previewAddress); + memoryPreviewPopUp.Show(this, toolTipPosition.OffsetEx(16, 16)); + } + else + { + var text = spot.Node.GetToolTipText(spot, spot.Memory); + if (!string.IsNullOrEmpty(text)) + { + nodeInfoToolTip.Show(text, this, toolTipPosition.OffsetEx(16, 16)); + } + } + + return; + } + } + } + } + + protected override void OnMouseMove(MouseEventArgs e) + { + Contract.Requires(e != null); + + base.OnMouseMove(e); + + if (e.Location != toolTipPosition) + { + toolTipPosition = e.Location; + + nodeInfoToolTip.Hide(this); + + if (memoryPreviewPopUp.Visible) + { + memoryPreviewPopUp.Close(); + + Invalidate(); + } + + ResetMouseEventArgs(); + } + } + + protected override void OnMouseWheel(MouseEventArgs e) + { + if (memoryPreviewPopUp.Visible) + { + memoryPreviewPopUp.HandleMouseWheelEvent(e); + } + else + { + // base.OnMouseWheel(e); + } + } + + protected override void OnScroll(ScrollEventArgs e) + { + Contract.Requires(e != null); + base.OnScroll(e); + } + + protected override bool ProcessCmdKey(ref Message msg, Keys keyData) + { + return base.ProcessCmdKey(ref msg, keyData); + } + #endregion + + #region Event Handler + protected override void OnSizeChanged(EventArgs e) + { + base.OnSizeChanged(e); + + Invalidate(); + } + + private void repaintTimer_Tick(object sender, EventArgs e) + { + if (DesignMode) + { + return; + } + + Invalidate(false); + } + + private void selectedNodeContextMenuStrip_Opening(object sender, CancelEventArgs e) + { + var count = selectedNodes.Count; + var node = selectedNodes.Select(s => s.Node).FirstOrDefault(); + var parentNode = node?.ParentNode; + + var nodeIsClass = node is ClassNode; + var nodeIsValueNode = false; + } + #endregion + + /// Groups the selected nodes in blocks if the nodes are continues. + /// The selection to partition. + /// An enumeration with blocks of continues nodes. + private static IEnumerable> PartitionSelectedNodes(IEnumerable selection) + { + Contract.Requires(selection != null); + + List partition; + using (var it = selection.GetEnumerator()) + { + if (!it.MoveNext()) + { + yield break; + } + + partition = new List { it.Current }; + + var last = it.Current; + + while (it.MoveNext()) + { + if (it.Current.Address != last.Address + last.Node.MemorySize) + { + yield return partition; + + partition = new List(); + } + + partition.Add(it.Current); + + last = it.Current; + } + } + + if (partition.Count != 0) + { + yield return partition; + } + } + + /// Recursive replace all splitted nodes. + /// The parent node. + /// The node type. + /// The nodes to replace. + /// The new nodes. + private static IEnumerable RecursiveReplaceNodes(BaseContainerNode parentNode, Type type, IEnumerable nodesToReplace) + { + Contract.Requires(parentNode != null); + Contract.Requires(type != null); + Contract.Requires(nodesToReplace != null); + Contract.Ensures(Contract.Result>() != null); + + foreach (var nodeToReplace in nodesToReplace) + { + var temp = new List(); + if (parentNode.ReplaceChildNode(nodeToReplace, type, ref temp)) + { + var node = temp.First(); + + node.IsSelected = true; + + yield return node; + + if (temp.Count > 1) + { + foreach (var n in RecursiveReplaceNodes(parentNode, type, temp.Skip(1))) + { + yield return n; + } + } + } + } + } + + private void ClearSelection() + { + selectedNodes.ForEach(h => h.Node.ClearSelection()); + + selectedNodes.Clear(); + } + + private void RemoveSelectedNodes() + { + selectedNodes.WhereNot(h => h.Node is ClassNode).ForEach(h => h.Node.ParentNode.RemoveNode(h.Node)); + + selectedNodes.Clear(); + + OnSelectionChanged(); + + Invalidate(); + } + + private bool IsCycleFree(ClassNode parent, ClassNode node) + { + if (!ClassUtil.IsCycleFree(parent, node, project.Classes)) + { + MessageBox.Show("Invalid operation because this would create a class cycle.", "Cycle Detected", MessageBoxButtons.OK, MessageBoxIcon.Error); + + return false; + } + + return true; + } + } +} diff --git a/ReClass.NET/UI/MemoryCompareControl.resx b/ReClass.NET/UI/MemoryCompareControl.resx new file mode 100644 index 00000000..0d4e9955 --- /dev/null +++ b/ReClass.NET/UI/MemoryCompareControl.resx @@ -0,0 +1,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 243, 17 + + + 364, 17 + + + 65 + + \ No newline at end of file diff --git a/ReClass.NET/UI/MemoryPreviewPopUp.cs b/ReClass.NET/UI/MemoryPreviewPopUp.cs index 168a631e..6029d500 100644 --- a/ReClass.NET/UI/MemoryPreviewPopUp.cs +++ b/ReClass.NET/UI/MemoryPreviewPopUp.cs @@ -63,7 +63,7 @@ private BaseHexNode CreateNode(int index) private void SetNodeCount(int count) { // Convert to 32Node (Just clear and [if (nodes.Count < count)] will exec) - if (!Program.TargetProcessIs64 && nodes[0] is Hex64Node) + if (!Program.TargetProcessIs64 && nodes.Count > 0 && nodes[0] is Hex64Node) nodes.Clear(); if (nodes.Count < count) diff --git a/ReClass.NET/UI/MemoryViewControl.Designer.cs b/ReClass.NET/UI/MemoryViewControl.Designer.cs index 1b33921f..6978de8c 100644 --- a/ReClass.NET/UI/MemoryViewControl.Designer.cs +++ b/ReClass.NET/UI/MemoryViewControl.Designer.cs @@ -28,101 +28,101 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - this.components = new System.ComponentModel.Container(); - this.selectedNodeContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); - this.changeTypeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.hex64ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.hex32ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.hex16ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.hex8ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); - this.int64ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.int32ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.int16ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.int8ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); - this.uInt64ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.uInt32ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.uInt16ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.uInt8ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); - this.boolToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.bitsToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); - this.floatToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.doubleToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); - this.vector4ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.vector3ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.vector2ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); - this.matrix4x4ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.matrix3x4ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.matrix3x3ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); - this.uTF8TextToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.uTF8TextPointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.uTF16TextToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.uTF16TextPointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); - this.classInstanceToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.classPointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); - this.arrayToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.arrayOfPointersToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.vTablePointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.functionPointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.functionToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); - this.addBytesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.add4BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add8BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add64BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add256BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add1024BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add2048BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.add4096BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insertBytesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.insert4BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert8BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert64BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert256BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert1024BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert2048BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.insert4096BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); - this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); - this.createClassFromNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); - this.dissectNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); - this.searchForEqualValuesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator(); - this.findOutWhatAccessesThisAddressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.findOutWhatWritesToThisAddressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); - this.copyNodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.pasteNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator(); - this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); - this.hideNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.unhideNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.unhideChildNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.unhideNodesAboveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.unhideNodesBelowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); - this.copyAddressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator(); - this.showCodeOfClassToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.shrinkClassToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); - this.repaintTimer = new System.Windows.Forms.Timer(this.components); - this.editBox = new ReClassNET.UI.HotSpotTextBox(); - this.nodeInfoToolTip = new System.Windows.Forms.ToolTip(this.components); - this.selectedNodeContextMenuStrip.SuspendLayout(); - this.SuspendLayout(); - // - // selectedNodeContextMenuStrip - // - this.selectedNodeContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.components = new System.ComponentModel.Container(); + this.selectedNodeContextMenuStrip = new System.Windows.Forms.ContextMenuStrip(this.components); + this.changeTypeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.hex64ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.hex32ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.hex16ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.hex8ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.int64ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.int32ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.int16ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.int8ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator(); + this.uInt64ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.uInt32ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.uInt16ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.uInt8ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator(); + this.boolToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.bitsToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator11 = new System.Windows.Forms.ToolStripSeparator(); + this.floatToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.doubleToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator6 = new System.Windows.Forms.ToolStripSeparator(); + this.vector4ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.vector3ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.vector2ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator7 = new System.Windows.Forms.ToolStripSeparator(); + this.matrix4x4ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.matrix3x4ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.matrix3x3ToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator8 = new System.Windows.Forms.ToolStripSeparator(); + this.uTF8TextToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.uTF8TextPointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.uTF16TextToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.uTF16TextPointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator9 = new System.Windows.Forms.ToolStripSeparator(); + this.classInstanceToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.classPointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.toolStripSeparator10 = new System.Windows.Forms.ToolStripSeparator(); + this.arrayToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.arrayOfPointersToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.vTablePointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.functionPointerToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.functionToolStripMenuItem = new ReClassNET.UI.TypeToolStripMenuItem(); + this.addBytesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.add4BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add8BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add64BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add256BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add1024BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add2048BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.add4096BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insertBytesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.insert4BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert8BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert64BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert256BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert1024BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert2048BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.insert4096BytesToolStripMenuItem = new ReClassNET.UI.IntegerToolStripMenuItem(); + this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); + this.createClassFromNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator13 = new System.Windows.Forms.ToolStripSeparator(); + this.dissectNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.searchForEqualValuesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator15 = new System.Windows.Forms.ToolStripSeparator(); + this.findOutWhatAccessesThisAddressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.findOutWhatWritesToThisAddressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator14 = new System.Windows.Forms.ToolStripSeparator(); + this.copyNodeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.pasteNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator17 = new System.Windows.Forms.ToolStripSeparator(); + this.removeToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator12 = new System.Windows.Forms.ToolStripSeparator(); + this.hideNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.unhideNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.unhideChildNodesToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.unhideNodesAboveToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.unhideNodesBelowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator18 = new System.Windows.Forms.ToolStripSeparator(); + this.copyAddressToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator16 = new System.Windows.Forms.ToolStripSeparator(); + this.showCodeOfClassToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.shrinkClassToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.repaintTimer = new System.Windows.Forms.Timer(this.components); + this.editBox = new ReClassNET.UI.HotSpotTextBox(); + this.nodeInfoToolTip = new System.Windows.Forms.ToolTip(this.components); + this.selectedNodeContextMenuStrip.SuspendLayout(); + this.SuspendLayout(); + // + // selectedNodeContextMenuStrip + // + this.selectedNodeContextMenuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.changeTypeToolStripMenuItem, this.addBytesToolStripMenuItem, this.insertBytesToolStripMenuItem, @@ -148,13 +148,13 @@ private void InitializeComponent() this.toolStripSeparator16, this.showCodeOfClassToolStripMenuItem, this.shrinkClassToolStripMenuItem}); - this.selectedNodeContextMenuStrip.Name = "selectedNodeContextMenuStrip"; - this.selectedNodeContextMenuStrip.Size = new System.Drawing.Size(270, 432); - this.selectedNodeContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.selectedNodeContextMenuStrip_Opening); - // - // changeTypeToolStripMenuItem - // - this.changeTypeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.selectedNodeContextMenuStrip.Name = "selectedNodeContextMenuStrip"; + this.selectedNodeContextMenuStrip.Size = new System.Drawing.Size(270, 410); + this.selectedNodeContextMenuStrip.Opening += new System.ComponentModel.CancelEventHandler(this.selectedNodeContextMenuStrip_Opening); + // + // changeTypeToolStripMenuItem + // + this.changeTypeToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.hex64ToolStripMenuItem, this.hex32ToolStripMenuItem, this.hex16ToolStripMenuItem, @@ -197,356 +197,356 @@ private void InitializeComponent() this.vTablePointerToolStripMenuItem, this.functionPointerToolStripMenuItem, this.functionToolStripMenuItem}); - this.changeTypeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Exchange_Button; - this.changeTypeToolStripMenuItem.Name = "changeTypeToolStripMenuItem"; - this.changeTypeToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.changeTypeToolStripMenuItem.Text = "Change Type"; - // - // hex64ToolStripMenuItem - // - this.hex64ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_64; - this.hex64ToolStripMenuItem.Name = "hex64ToolStripMenuItem"; - this.hex64ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.hex64ToolStripMenuItem.Text = "Hex 64"; - this.hex64ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Hex64Node); - this.hex64ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // hex32ToolStripMenuItem - // - this.hex32ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_32; - this.hex32ToolStripMenuItem.Name = "hex32ToolStripMenuItem"; - this.hex32ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.hex32ToolStripMenuItem.Text = "Hex 32"; - this.hex32ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Hex32Node); - this.hex32ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // hex16ToolStripMenuItem - // - this.hex16ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_16; - this.hex16ToolStripMenuItem.Name = "hex16ToolStripMenuItem"; - this.hex16ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.hex16ToolStripMenuItem.Text = "Hex 16"; - this.hex16ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Hex16Node); - this.hex16ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // hex8ToolStripMenuItem - // - this.hex8ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_8; - this.hex8ToolStripMenuItem.Name = "hex8ToolStripMenuItem"; - this.hex8ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.hex8ToolStripMenuItem.Text = "Hex 8"; - this.hex8ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Hex8Node); - this.hex8ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator3 - // - this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(169, 6); - // - // int64ToolStripMenuItem - // - this.int64ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_64; - this.int64ToolStripMenuItem.Name = "int64ToolStripMenuItem"; - this.int64ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.int64ToolStripMenuItem.Text = "Int 64"; - this.int64ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Int64Node); - this.int64ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // int32ToolStripMenuItem - // - this.int32ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_32; - this.int32ToolStripMenuItem.Name = "int32ToolStripMenuItem"; - this.int32ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.int32ToolStripMenuItem.Text = "Int 32"; - this.int32ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Int32Node); - this.int32ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // int16ToolStripMenuItem - // - this.int16ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_16; - this.int16ToolStripMenuItem.Name = "int16ToolStripMenuItem"; - this.int16ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.int16ToolStripMenuItem.Text = "Int 16"; - this.int16ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Int16Node); - this.int16ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // int8ToolStripMenuItem - // - this.int8ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_8; - this.int8ToolStripMenuItem.Name = "int8ToolStripMenuItem"; - this.int8ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.int8ToolStripMenuItem.Text = "Int 8"; - this.int8ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Int8Node); - this.int8ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator4 - // - this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(169, 6); - // - // uInt64ToolStripMenuItem - // - this.uInt64ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_64; - this.uInt64ToolStripMenuItem.Name = "uInt64ToolStripMenuItem"; - this.uInt64ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.uInt64ToolStripMenuItem.Text = "UInt 64"; - this.uInt64ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.UInt64Node); - this.uInt64ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // uInt32ToolStripMenuItem - // - this.uInt32ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_32; - this.uInt32ToolStripMenuItem.Name = "uInt32ToolStripMenuItem"; - this.uInt32ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.uInt32ToolStripMenuItem.Text = "UInt 32"; - this.uInt32ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.UInt32Node); - this.uInt32ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // uInt16ToolStripMenuItem - // - this.uInt16ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_16; - this.uInt16ToolStripMenuItem.Name = "uInt16ToolStripMenuItem"; - this.uInt16ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.uInt16ToolStripMenuItem.Text = "UInt 16"; - this.uInt16ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.UInt16Node); - this.uInt16ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // uInt8ToolStripMenuItem - // - this.uInt8ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_8; - this.uInt8ToolStripMenuItem.Name = "uInt8ToolStripMenuItem"; - this.uInt8ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.uInt8ToolStripMenuItem.Text = "UInt 8"; - this.uInt8ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.UInt8Node); - this.uInt8ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator5 - // - this.toolStripSeparator5.Name = "toolStripSeparator5"; - this.toolStripSeparator5.Size = new System.Drawing.Size(169, 6); - // - // boolToolStripMenuItem - // - this.boolToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Bool; - this.boolToolStripMenuItem.Name = "boolToolStripMenuItem"; - this.boolToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.boolToolStripMenuItem.Text = "Bool"; - this.boolToolStripMenuItem.Value = typeof(ReClassNET.Nodes.BoolNode); - this.boolToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // bitsToolStripMenuItem - // - this.bitsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Bits; - this.bitsToolStripMenuItem.Name = "bitsToolStripMenuItem"; - this.bitsToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.bitsToolStripMenuItem.Text = "Bits"; - this.bitsToolStripMenuItem.Value = typeof(ReClassNET.Nodes.BitFieldNode); - this.bitsToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator11 - // - this.toolStripSeparator11.Name = "toolStripSeparator11"; - this.toolStripSeparator11.Size = new System.Drawing.Size(169, 6); - // - // floatToolStripMenuItem - // - this.floatToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Float; - this.floatToolStripMenuItem.Name = "floatToolStripMenuItem"; - this.floatToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.floatToolStripMenuItem.Text = "Float"; - this.floatToolStripMenuItem.Value = typeof(ReClassNET.Nodes.FloatNode); - this.floatToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // doubleToolStripMenuItem - // - this.doubleToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Double; - this.doubleToolStripMenuItem.Name = "doubleToolStripMenuItem"; - this.doubleToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.doubleToolStripMenuItem.Text = "Double"; - this.doubleToolStripMenuItem.Value = typeof(ReClassNET.Nodes.DoubleNode); - this.doubleToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator6 - // - this.toolStripSeparator6.Name = "toolStripSeparator6"; - this.toolStripSeparator6.Size = new System.Drawing.Size(169, 6); - // - // vector4ToolStripMenuItem - // - this.vector4ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_4; - this.vector4ToolStripMenuItem.Name = "vector4ToolStripMenuItem"; - this.vector4ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.vector4ToolStripMenuItem.Text = "Vector 4"; - this.vector4ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Vector4Node); - this.vector4ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // vector3ToolStripMenuItem - // - this.vector3ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_3; - this.vector3ToolStripMenuItem.Name = "vector3ToolStripMenuItem"; - this.vector3ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.vector3ToolStripMenuItem.Text = "Vector 3"; - this.vector3ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Vector3Node); - this.vector3ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // vector2ToolStripMenuItem - // - this.vector2ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_2; - this.vector2ToolStripMenuItem.Name = "vector2ToolStripMenuItem"; - this.vector2ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.vector2ToolStripMenuItem.Text = "Vector 2"; - this.vector2ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Vector2Node); - this.vector2ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator7 - // - this.toolStripSeparator7.Name = "toolStripSeparator7"; - this.toolStripSeparator7.Size = new System.Drawing.Size(169, 6); - // - // matrix4x4ToolStripMenuItem - // - this.matrix4x4ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_4x4; - this.matrix4x4ToolStripMenuItem.Name = "matrix4x4ToolStripMenuItem"; - this.matrix4x4ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.matrix4x4ToolStripMenuItem.Text = "Matrix 4x4"; - this.matrix4x4ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Matrix4x4Node); - this.matrix4x4ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // matrix3x4ToolStripMenuItem - // - this.matrix3x4ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_3x4; - this.matrix3x4ToolStripMenuItem.Name = "matrix3x4ToolStripMenuItem"; - this.matrix3x4ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.matrix3x4ToolStripMenuItem.Text = "Matrix 3x4"; - this.matrix3x4ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Matrix3x4Node); - this.matrix3x4ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // matrix3x3ToolStripMenuItem - // - this.matrix3x3ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_3x3; - this.matrix3x3ToolStripMenuItem.Name = "matrix3x3ToolStripMenuItem"; - this.matrix3x3ToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.matrix3x3ToolStripMenuItem.Text = "Matrix 3x3"; - this.matrix3x3ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Matrix3x3Node); - this.matrix3x3ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator8 - // - this.toolStripSeparator8.Name = "toolStripSeparator8"; - this.toolStripSeparator8.Size = new System.Drawing.Size(169, 6); - // - // uTF8TextToolStripMenuItem - // - this.uTF8TextToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Text; - this.uTF8TextToolStripMenuItem.Name = "uTF8TextToolStripMenuItem"; - this.uTF8TextToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.uTF8TextToolStripMenuItem.Text = "UTF8 Text"; - this.uTF8TextToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Utf8TextNode); - this.uTF8TextToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // uTF8TextPointerToolStripMenuItem - // - this.uTF8TextPointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Text_Pointer; - this.uTF8TextPointerToolStripMenuItem.Name = "uTF8TextPointerToolStripMenuItem"; - this.uTF8TextPointerToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.uTF8TextPointerToolStripMenuItem.Text = "UTF8 Text Pointer"; - this.uTF8TextPointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Utf8TextPtrNode); - this.uTF8TextPointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // uTF16TextToolStripMenuItem - // - this.uTF16TextToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UText; - this.uTF16TextToolStripMenuItem.Name = "uTF16TextToolStripMenuItem"; - this.uTF16TextToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.uTF16TextToolStripMenuItem.Text = "UTF16 Text"; - this.uTF16TextToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Utf16TextNode); - this.uTF16TextToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // uTF16TextPointerToolStripMenuItem - // - this.uTF16TextPointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UText_Pointer; - this.uTF16TextPointerToolStripMenuItem.Name = "uTF16TextPointerToolStripMenuItem"; - this.uTF16TextPointerToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.uTF16TextPointerToolStripMenuItem.Text = "UTF16 Text Pointer"; - this.uTF16TextPointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Utf16TextPtrNode); - this.uTF16TextPointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator9 - // - this.toolStripSeparator9.Name = "toolStripSeparator9"; - this.toolStripSeparator9.Size = new System.Drawing.Size(169, 6); - // - // classInstanceToolStripMenuItem - // - this.classInstanceToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Instance; - this.classInstanceToolStripMenuItem.Name = "classInstanceToolStripMenuItem"; - this.classInstanceToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.classInstanceToolStripMenuItem.Text = "Class Instance"; - this.classInstanceToolStripMenuItem.Value = typeof(ReClassNET.Nodes.ClassInstanceNode); - this.classInstanceToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // classPointerToolStripMenuItem - // - this.classPointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Pointer; - this.classPointerToolStripMenuItem.Name = "classPointerToolStripMenuItem"; - this.classPointerToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.classPointerToolStripMenuItem.Text = "Class Pointer"; - this.classPointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.ClassPtrNode); - this.classPointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // toolStripSeparator10 - // - this.toolStripSeparator10.Name = "toolStripSeparator10"; - this.toolStripSeparator10.Size = new System.Drawing.Size(169, 6); - // - // arrayToolStripMenuItem - // - this.arrayToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Array; - this.arrayToolStripMenuItem.Name = "arrayToolStripMenuItem"; - this.arrayToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.arrayToolStripMenuItem.Text = "Array of Classes"; - this.arrayToolStripMenuItem.Value = typeof(ReClassNET.Nodes.ClassInstanceArrayNode); - this.arrayToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // arrayOfPointersToolStripMenuItem - // - this.arrayOfPointersToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Pointer_Array; - this.arrayOfPointersToolStripMenuItem.Name = "arrayOfPointersToolStripMenuItem"; - this.arrayOfPointersToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.arrayOfPointersToolStripMenuItem.Text = "Array of Pointers"; - this.arrayOfPointersToolStripMenuItem.Value = typeof(ReClassNET.Nodes.ClassPtrArrayNode); - this.arrayOfPointersToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // vTablePointerToolStripMenuItem - // - this.vTablePointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_VTable; - this.vTablePointerToolStripMenuItem.Name = "vTablePointerToolStripMenuItem"; - this.vTablePointerToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.vTablePointerToolStripMenuItem.Text = "VTable Pointer"; - this.vTablePointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.VTableNode); - this.vTablePointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // functionPointerToolStripMenuItem - // - this.functionPointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Function_Pointer; - this.functionPointerToolStripMenuItem.Name = "functionPointerToolStripMenuItem"; - this.functionPointerToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.functionPointerToolStripMenuItem.Text = "Function Pointer"; - this.functionPointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.FunctionPtrNode); - this.functionPointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // functionToolStripMenuItem - // - this.functionToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Function; - this.functionToolStripMenuItem.Name = "functionToolStripMenuItem"; - this.functionToolStripMenuItem.Size = new System.Drawing.Size(172, 22); - this.functionToolStripMenuItem.Text = "Function"; - this.functionToolStripMenuItem.Value = typeof(ReClassNET.Nodes.FunctionNode); - this.functionToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); - // - // addBytesToolStripMenuItem - // - this.addBytesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.changeTypeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Exchange_Button; + this.changeTypeToolStripMenuItem.Name = "changeTypeToolStripMenuItem"; + this.changeTypeToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.changeTypeToolStripMenuItem.Text = "Change Type"; + // + // hex64ToolStripMenuItem + // + this.hex64ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_64; + this.hex64ToolStripMenuItem.Name = "hex64ToolStripMenuItem"; + this.hex64ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.hex64ToolStripMenuItem.Text = "Hex 64"; + this.hex64ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Hex64Node); + this.hex64ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // hex32ToolStripMenuItem + // + this.hex32ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_32; + this.hex32ToolStripMenuItem.Name = "hex32ToolStripMenuItem"; + this.hex32ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.hex32ToolStripMenuItem.Text = "Hex 32"; + this.hex32ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Hex32Node); + this.hex32ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // hex16ToolStripMenuItem + // + this.hex16ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_16; + this.hex16ToolStripMenuItem.Name = "hex16ToolStripMenuItem"; + this.hex16ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.hex16ToolStripMenuItem.Text = "Hex 16"; + this.hex16ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Hex16Node); + this.hex16ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // hex8ToolStripMenuItem + // + this.hex8ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Hex_8; + this.hex8ToolStripMenuItem.Name = "hex8ToolStripMenuItem"; + this.hex8ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.hex8ToolStripMenuItem.Text = "Hex 8"; + this.hex8ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Hex8Node); + this.hex8ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(177, 6); + // + // int64ToolStripMenuItem + // + this.int64ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_64; + this.int64ToolStripMenuItem.Name = "int64ToolStripMenuItem"; + this.int64ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.int64ToolStripMenuItem.Text = "Int 64"; + this.int64ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Int64Node); + this.int64ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // int32ToolStripMenuItem + // + this.int32ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_32; + this.int32ToolStripMenuItem.Name = "int32ToolStripMenuItem"; + this.int32ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.int32ToolStripMenuItem.Text = "Int 32"; + this.int32ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Int32Node); + this.int32ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // int16ToolStripMenuItem + // + this.int16ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_16; + this.int16ToolStripMenuItem.Name = "int16ToolStripMenuItem"; + this.int16ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.int16ToolStripMenuItem.Text = "Int 16"; + this.int16ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Int16Node); + this.int16ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // int8ToolStripMenuItem + // + this.int8ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Int_8; + this.int8ToolStripMenuItem.Name = "int8ToolStripMenuItem"; + this.int8ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.int8ToolStripMenuItem.Text = "Int 8"; + this.int8ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Int8Node); + this.int8ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator4 + // + this.toolStripSeparator4.Name = "toolStripSeparator4"; + this.toolStripSeparator4.Size = new System.Drawing.Size(177, 6); + // + // uInt64ToolStripMenuItem + // + this.uInt64ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_64; + this.uInt64ToolStripMenuItem.Name = "uInt64ToolStripMenuItem"; + this.uInt64ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.uInt64ToolStripMenuItem.Text = "UInt 64"; + this.uInt64ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.UInt64Node); + this.uInt64ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // uInt32ToolStripMenuItem + // + this.uInt32ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_32; + this.uInt32ToolStripMenuItem.Name = "uInt32ToolStripMenuItem"; + this.uInt32ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.uInt32ToolStripMenuItem.Text = "UInt 32"; + this.uInt32ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.UInt32Node); + this.uInt32ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // uInt16ToolStripMenuItem + // + this.uInt16ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_16; + this.uInt16ToolStripMenuItem.Name = "uInt16ToolStripMenuItem"; + this.uInt16ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.uInt16ToolStripMenuItem.Text = "UInt 16"; + this.uInt16ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.UInt16Node); + this.uInt16ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // uInt8ToolStripMenuItem + // + this.uInt8ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UInt_8; + this.uInt8ToolStripMenuItem.Name = "uInt8ToolStripMenuItem"; + this.uInt8ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.uInt8ToolStripMenuItem.Text = "UInt 8"; + this.uInt8ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.UInt8Node); + this.uInt8ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator5 + // + this.toolStripSeparator5.Name = "toolStripSeparator5"; + this.toolStripSeparator5.Size = new System.Drawing.Size(177, 6); + // + // boolToolStripMenuItem + // + this.boolToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Bool; + this.boolToolStripMenuItem.Name = "boolToolStripMenuItem"; + this.boolToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.boolToolStripMenuItem.Text = "Bool"; + this.boolToolStripMenuItem.Value = typeof(ReClassNET.Nodes.BoolNode); + this.boolToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // bitsToolStripMenuItem + // + this.bitsToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Bits; + this.bitsToolStripMenuItem.Name = "bitsToolStripMenuItem"; + this.bitsToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.bitsToolStripMenuItem.Text = "Bits"; + this.bitsToolStripMenuItem.Value = typeof(ReClassNET.Nodes.BitFieldNode); + this.bitsToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator11 + // + this.toolStripSeparator11.Name = "toolStripSeparator11"; + this.toolStripSeparator11.Size = new System.Drawing.Size(177, 6); + // + // floatToolStripMenuItem + // + this.floatToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Float; + this.floatToolStripMenuItem.Name = "floatToolStripMenuItem"; + this.floatToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.floatToolStripMenuItem.Text = "Float"; + this.floatToolStripMenuItem.Value = typeof(ReClassNET.Nodes.FloatNode); + this.floatToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // doubleToolStripMenuItem + // + this.doubleToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Double; + this.doubleToolStripMenuItem.Name = "doubleToolStripMenuItem"; + this.doubleToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.doubleToolStripMenuItem.Text = "Double"; + this.doubleToolStripMenuItem.Value = typeof(ReClassNET.Nodes.DoubleNode); + this.doubleToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator6 + // + this.toolStripSeparator6.Name = "toolStripSeparator6"; + this.toolStripSeparator6.Size = new System.Drawing.Size(177, 6); + // + // vector4ToolStripMenuItem + // + this.vector4ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_4; + this.vector4ToolStripMenuItem.Name = "vector4ToolStripMenuItem"; + this.vector4ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.vector4ToolStripMenuItem.Text = "Vector 4"; + this.vector4ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Vector4Node); + this.vector4ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // vector3ToolStripMenuItem + // + this.vector3ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_3; + this.vector3ToolStripMenuItem.Name = "vector3ToolStripMenuItem"; + this.vector3ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.vector3ToolStripMenuItem.Text = "Vector 3"; + this.vector3ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Vector3Node); + this.vector3ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // vector2ToolStripMenuItem + // + this.vector2ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Vector_2; + this.vector2ToolStripMenuItem.Name = "vector2ToolStripMenuItem"; + this.vector2ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.vector2ToolStripMenuItem.Text = "Vector 2"; + this.vector2ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Vector2Node); + this.vector2ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator7 + // + this.toolStripSeparator7.Name = "toolStripSeparator7"; + this.toolStripSeparator7.Size = new System.Drawing.Size(177, 6); + // + // matrix4x4ToolStripMenuItem + // + this.matrix4x4ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_4x4; + this.matrix4x4ToolStripMenuItem.Name = "matrix4x4ToolStripMenuItem"; + this.matrix4x4ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.matrix4x4ToolStripMenuItem.Text = "Matrix 4x4"; + this.matrix4x4ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Matrix4x4Node); + this.matrix4x4ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // matrix3x4ToolStripMenuItem + // + this.matrix3x4ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_3x4; + this.matrix3x4ToolStripMenuItem.Name = "matrix3x4ToolStripMenuItem"; + this.matrix3x4ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.matrix3x4ToolStripMenuItem.Text = "Matrix 3x4"; + this.matrix3x4ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Matrix3x4Node); + this.matrix3x4ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // matrix3x3ToolStripMenuItem + // + this.matrix3x3ToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Matrix_3x3; + this.matrix3x3ToolStripMenuItem.Name = "matrix3x3ToolStripMenuItem"; + this.matrix3x3ToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.matrix3x3ToolStripMenuItem.Text = "Matrix 3x3"; + this.matrix3x3ToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Matrix3x3Node); + this.matrix3x3ToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator8 + // + this.toolStripSeparator8.Name = "toolStripSeparator8"; + this.toolStripSeparator8.Size = new System.Drawing.Size(177, 6); + // + // uTF8TextToolStripMenuItem + // + this.uTF8TextToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Text; + this.uTF8TextToolStripMenuItem.Name = "uTF8TextToolStripMenuItem"; + this.uTF8TextToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.uTF8TextToolStripMenuItem.Text = "UTF8 Text"; + this.uTF8TextToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Utf8TextNode); + this.uTF8TextToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // uTF8TextPointerToolStripMenuItem + // + this.uTF8TextPointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Text_Pointer; + this.uTF8TextPointerToolStripMenuItem.Name = "uTF8TextPointerToolStripMenuItem"; + this.uTF8TextPointerToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.uTF8TextPointerToolStripMenuItem.Text = "UTF8 Text Pointer"; + this.uTF8TextPointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Utf8TextPtrNode); + this.uTF8TextPointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // uTF16TextToolStripMenuItem + // + this.uTF16TextToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UText; + this.uTF16TextToolStripMenuItem.Name = "uTF16TextToolStripMenuItem"; + this.uTF16TextToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.uTF16TextToolStripMenuItem.Text = "UTF16 Text"; + this.uTF16TextToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Utf16TextNode); + this.uTF16TextToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // uTF16TextPointerToolStripMenuItem + // + this.uTF16TextPointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_UText_Pointer; + this.uTF16TextPointerToolStripMenuItem.Name = "uTF16TextPointerToolStripMenuItem"; + this.uTF16TextPointerToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.uTF16TextPointerToolStripMenuItem.Text = "UTF16 Text Pointer"; + this.uTF16TextPointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.Utf16TextPtrNode); + this.uTF16TextPointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator9 + // + this.toolStripSeparator9.Name = "toolStripSeparator9"; + this.toolStripSeparator9.Size = new System.Drawing.Size(177, 6); + // + // classInstanceToolStripMenuItem + // + this.classInstanceToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Instance; + this.classInstanceToolStripMenuItem.Name = "classInstanceToolStripMenuItem"; + this.classInstanceToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.classInstanceToolStripMenuItem.Text = "Class Instance"; + this.classInstanceToolStripMenuItem.Value = typeof(ReClassNET.Nodes.ClassInstanceNode); + this.classInstanceToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // classPointerToolStripMenuItem + // + this.classPointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Pointer; + this.classPointerToolStripMenuItem.Name = "classPointerToolStripMenuItem"; + this.classPointerToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.classPointerToolStripMenuItem.Text = "Class Pointer"; + this.classPointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.ClassPtrNode); + this.classPointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // toolStripSeparator10 + // + this.toolStripSeparator10.Name = "toolStripSeparator10"; + this.toolStripSeparator10.Size = new System.Drawing.Size(177, 6); + // + // arrayToolStripMenuItem + // + this.arrayToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Array; + this.arrayToolStripMenuItem.Name = "arrayToolStripMenuItem"; + this.arrayToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.arrayToolStripMenuItem.Text = "Array of Classes"; + this.arrayToolStripMenuItem.Value = typeof(ReClassNET.Nodes.ClassInstanceArrayNode); + this.arrayToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // arrayOfPointersToolStripMenuItem + // + this.arrayOfPointersToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Pointer_Array; + this.arrayOfPointersToolStripMenuItem.Name = "arrayOfPointersToolStripMenuItem"; + this.arrayOfPointersToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.arrayOfPointersToolStripMenuItem.Text = "Array of Pointers"; + this.arrayOfPointersToolStripMenuItem.Value = typeof(ReClassNET.Nodes.ClassPtrArrayNode); + this.arrayOfPointersToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // vTablePointerToolStripMenuItem + // + this.vTablePointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_VTable; + this.vTablePointerToolStripMenuItem.Name = "vTablePointerToolStripMenuItem"; + this.vTablePointerToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.vTablePointerToolStripMenuItem.Text = "VTable Pointer"; + this.vTablePointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.VTableNode); + this.vTablePointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // functionPointerToolStripMenuItem + // + this.functionPointerToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Function_Pointer; + this.functionPointerToolStripMenuItem.Name = "functionPointerToolStripMenuItem"; + this.functionPointerToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.functionPointerToolStripMenuItem.Text = "Function Pointer"; + this.functionPointerToolStripMenuItem.Value = typeof(ReClassNET.Nodes.FunctionPtrNode); + this.functionPointerToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // functionToolStripMenuItem + // + this.functionToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Function; + this.functionToolStripMenuItem.Name = "functionToolStripMenuItem"; + this.functionToolStripMenuItem.Size = new System.Drawing.Size(180, 22); + this.functionToolStripMenuItem.Text = "Function"; + this.functionToolStripMenuItem.Value = typeof(ReClassNET.Nodes.FunctionNode); + this.functionToolStripMenuItem.Click += new System.EventHandler(this.memoryTypeToolStripMenuItem_Click); + // + // addBytesToolStripMenuItem + // + this.addBytesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.add4BytesToolStripMenuItem, this.add8BytesToolStripMenuItem, this.add64BytesToolStripMenuItem, @@ -554,77 +554,77 @@ private void InitializeComponent() this.add1024BytesToolStripMenuItem, this.add2048BytesToolStripMenuItem, this.add4096BytesToolStripMenuItem}); - this.addBytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_X; - this.addBytesToolStripMenuItem.Name = "addBytesToolStripMenuItem"; - this.addBytesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.addBytesToolStripMenuItem.Text = "Add Bytes"; - // - // add4BytesToolStripMenuItem - // - this.add4BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_4; - this.add4BytesToolStripMenuItem.Name = "add4BytesToolStripMenuItem"; - this.add4BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add4BytesToolStripMenuItem.Text = "Add 4 Bytes"; - this.add4BytesToolStripMenuItem.Value = 4; - this.add4BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add8BytesToolStripMenuItem - // - this.add8BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_8; - this.add8BytesToolStripMenuItem.Name = "add8BytesToolStripMenuItem"; - this.add8BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add8BytesToolStripMenuItem.Text = "Add 8 Bytes"; - this.add8BytesToolStripMenuItem.Value = 8; - this.add8BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add64BytesToolStripMenuItem - // - this.add64BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_64; - this.add64BytesToolStripMenuItem.Name = "add64BytesToolStripMenuItem"; - this.add64BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add64BytesToolStripMenuItem.Text = "Add 64 Bytes"; - this.add64BytesToolStripMenuItem.Value = 64; - this.add64BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add256BytesToolStripMenuItem - // - this.add256BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_256; - this.add256BytesToolStripMenuItem.Name = "add256BytesToolStripMenuItem"; - this.add256BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add256BytesToolStripMenuItem.Text = "Add 256 Bytes"; - this.add256BytesToolStripMenuItem.Value = 256; - this.add256BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add1024BytesToolStripMenuItem - // - this.add1024BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_1024; - this.add1024BytesToolStripMenuItem.Name = "add1024BytesToolStripMenuItem"; - this.add1024BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add1024BytesToolStripMenuItem.Text = "Add 1024 Bytes"; - this.add1024BytesToolStripMenuItem.Value = 1024; - this.add1024BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add2048BytesToolStripMenuItem - // - this.add2048BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_2048; - this.add2048BytesToolStripMenuItem.Name = "add2048BytesToolStripMenuItem"; - this.add2048BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add2048BytesToolStripMenuItem.Text = "Add 2048 Bytes"; - this.add2048BytesToolStripMenuItem.Value = 2048; - this.add2048BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // add4096BytesToolStripMenuItem - // - this.add4096BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_4096; - this.add4096BytesToolStripMenuItem.Name = "add4096BytesToolStripMenuItem"; - this.add4096BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); - this.add4096BytesToolStripMenuItem.Text = "Add 4096 Bytes"; - this.add4096BytesToolStripMenuItem.Value = 4096; - this.add4096BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); - // - // insertBytesToolStripMenuItem - // - this.insertBytesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.addBytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_X; + this.addBytesToolStripMenuItem.Name = "addBytesToolStripMenuItem"; + this.addBytesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.addBytesToolStripMenuItem.Text = "Add Bytes"; + // + // add4BytesToolStripMenuItem + // + this.add4BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_4; + this.add4BytesToolStripMenuItem.Name = "add4BytesToolStripMenuItem"; + this.add4BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add4BytesToolStripMenuItem.Text = "Add 4 Bytes"; + this.add4BytesToolStripMenuItem.Value = 4; + this.add4BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add8BytesToolStripMenuItem + // + this.add8BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_8; + this.add8BytesToolStripMenuItem.Name = "add8BytesToolStripMenuItem"; + this.add8BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add8BytesToolStripMenuItem.Text = "Add 8 Bytes"; + this.add8BytesToolStripMenuItem.Value = 8; + this.add8BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add64BytesToolStripMenuItem + // + this.add64BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_64; + this.add64BytesToolStripMenuItem.Name = "add64BytesToolStripMenuItem"; + this.add64BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add64BytesToolStripMenuItem.Text = "Add 64 Bytes"; + this.add64BytesToolStripMenuItem.Value = 64; + this.add64BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add256BytesToolStripMenuItem + // + this.add256BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_256; + this.add256BytesToolStripMenuItem.Name = "add256BytesToolStripMenuItem"; + this.add256BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add256BytesToolStripMenuItem.Text = "Add 256 Bytes"; + this.add256BytesToolStripMenuItem.Value = 256; + this.add256BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add1024BytesToolStripMenuItem + // + this.add1024BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_1024; + this.add1024BytesToolStripMenuItem.Name = "add1024BytesToolStripMenuItem"; + this.add1024BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add1024BytesToolStripMenuItem.Text = "Add 1024 Bytes"; + this.add1024BytesToolStripMenuItem.Value = 1024; + this.add1024BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add2048BytesToolStripMenuItem + // + this.add2048BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_2048; + this.add2048BytesToolStripMenuItem.Name = "add2048BytesToolStripMenuItem"; + this.add2048BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add2048BytesToolStripMenuItem.Text = "Add 2048 Bytes"; + this.add2048BytesToolStripMenuItem.Value = 2048; + this.add2048BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // add4096BytesToolStripMenuItem + // + this.add4096BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Add_Bytes_4096; + this.add4096BytesToolStripMenuItem.Name = "add4096BytesToolStripMenuItem"; + this.add4096BytesToolStripMenuItem.Size = new System.Drawing.Size(154, 22); + this.add4096BytesToolStripMenuItem.Text = "Add 4096 Bytes"; + this.add4096BytesToolStripMenuItem.Value = 4096; + this.add4096BytesToolStripMenuItem.Click += new System.EventHandler(this.addBytesToolStripMenuItem_Click); + // + // insertBytesToolStripMenuItem + // + this.insertBytesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.insert4BytesToolStripMenuItem, this.insert8BytesToolStripMenuItem, this.insert64BytesToolStripMenuItem, @@ -632,282 +632,282 @@ private void InitializeComponent() this.insert1024BytesToolStripMenuItem, this.insert2048BytesToolStripMenuItem, this.insert4096BytesToolStripMenuItem}); - this.insertBytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_X; - this.insertBytesToolStripMenuItem.Name = "insertBytesToolStripMenuItem"; - this.insertBytesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.insertBytesToolStripMenuItem.Text = "Insert Bytes"; - // - // insert4BytesToolStripMenuItem - // - this.insert4BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_4; - this.insert4BytesToolStripMenuItem.Name = "insert4BytesToolStripMenuItem"; - this.insert4BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert4BytesToolStripMenuItem.Text = "Insert 4 Bytes"; - this.insert4BytesToolStripMenuItem.Value = 4; - this.insert4BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert8BytesToolStripMenuItem - // - this.insert8BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_8; - this.insert8BytesToolStripMenuItem.Name = "insert8BytesToolStripMenuItem"; - this.insert8BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert8BytesToolStripMenuItem.Text = "Insert 8 Bytes"; - this.insert8BytesToolStripMenuItem.Value = 8; - this.insert8BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert64BytesToolStripMenuItem - // - this.insert64BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_64; - this.insert64BytesToolStripMenuItem.Name = "insert64BytesToolStripMenuItem"; - this.insert64BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert64BytesToolStripMenuItem.Text = "Insert 64 Bytes"; - this.insert64BytesToolStripMenuItem.Value = 64; - this.insert64BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert256BytesToolStripMenuItem - // - this.insert256BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_256; - this.insert256BytesToolStripMenuItem.Name = "insert256BytesToolStripMenuItem"; - this.insert256BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert256BytesToolStripMenuItem.Text = "Insert 256 Bytes"; - this.insert256BytesToolStripMenuItem.Value = 256; - this.insert256BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert1024BytesToolStripMenuItem - // - this.insert1024BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_1024; - this.insert1024BytesToolStripMenuItem.Name = "insert1024BytesToolStripMenuItem"; - this.insert1024BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert1024BytesToolStripMenuItem.Text = "Insert 1024 Bytes"; - this.insert1024BytesToolStripMenuItem.Value = 1024; - this.insert1024BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert2048BytesToolStripMenuItem - // - this.insert2048BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_2048; - this.insert2048BytesToolStripMenuItem.Name = "insert2048BytesToolStripMenuItem"; - this.insert2048BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert2048BytesToolStripMenuItem.Text = "Insert 2048 Bytes"; - this.insert2048BytesToolStripMenuItem.Value = 2048; - this.insert2048BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // insert4096BytesToolStripMenuItem - // - this.insert4096BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_4096; - this.insert4096BytesToolStripMenuItem.Name = "insert4096BytesToolStripMenuItem"; - this.insert4096BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); - this.insert4096BytesToolStripMenuItem.Text = "Insert 4096 Bytes"; - this.insert4096BytesToolStripMenuItem.Value = 4096; - this.insert4096BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); - // - // toolStripSeparator1 - // - this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(266, 6); - // - // createClassFromNodesToolStripMenuItem - // - this.createClassFromNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Add; - this.createClassFromNodesToolStripMenuItem.Name = "createClassFromNodesToolStripMenuItem"; - this.createClassFromNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.createClassFromNodesToolStripMenuItem.Text = "Create Class from Nodes"; - this.createClassFromNodesToolStripMenuItem.Click += new System.EventHandler(this.createClassFromNodesToolStripMenuItem_Click); - // - // toolStripSeparator13 - // - this.toolStripSeparator13.Name = "toolStripSeparator13"; - this.toolStripSeparator13.Size = new System.Drawing.Size(266, 6); - // - // dissectNodesToolStripMenuItem - // - this.dissectNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Camera; - this.dissectNodesToolStripMenuItem.Name = "dissectNodesToolStripMenuItem"; - this.dissectNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.dissectNodesToolStripMenuItem.Text = "Dissect Node(s)"; - this.dissectNodesToolStripMenuItem.Click += new System.EventHandler(this.dissectNodesToolStripMenuItem_Click); - // - // toolStripSeparator2 - // - this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(266, 6); - // - // searchForEqualValuesToolStripMenuItem - // - this.searchForEqualValuesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; - this.searchForEqualValuesToolStripMenuItem.Name = "searchForEqualValuesToolStripMenuItem"; - this.searchForEqualValuesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.searchForEqualValuesToolStripMenuItem.Text = "Search for equal values..."; - this.searchForEqualValuesToolStripMenuItem.Click += new System.EventHandler(this.searchForEqualValuesToolStripMenuItem_Click); - // - // toolStripSeparator15 - // - this.toolStripSeparator15.Name = "toolStripSeparator15"; - this.toolStripSeparator15.Size = new System.Drawing.Size(266, 6); - // - // findOutWhatAccessesThisAddressToolStripMenuItem - // - this.findOutWhatAccessesThisAddressToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Find_Access; - this.findOutWhatAccessesThisAddressToolStripMenuItem.Name = "findOutWhatAccessesThisAddressToolStripMenuItem"; - this.findOutWhatAccessesThisAddressToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.findOutWhatAccessesThisAddressToolStripMenuItem.Text = "Find out what accesses this address..."; - this.findOutWhatAccessesThisAddressToolStripMenuItem.Click += new System.EventHandler(this.findOutWhatAccessesThisAddressToolStripMenuItem_Click); - // - // findOutWhatWritesToThisAddressToolStripMenuItem - // - this.findOutWhatWritesToThisAddressToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Find_Write; - this.findOutWhatWritesToThisAddressToolStripMenuItem.Name = "findOutWhatWritesToThisAddressToolStripMenuItem"; - this.findOutWhatWritesToThisAddressToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.findOutWhatWritesToThisAddressToolStripMenuItem.Text = "Find out what writes to this address..."; - this.findOutWhatWritesToThisAddressToolStripMenuItem.Click += new System.EventHandler(this.findOutWhatWritesToThisAddressToolStripMenuItem_Click); - // - // toolStripSeparator14 - // - this.toolStripSeparator14.Name = "toolStripSeparator14"; - this.toolStripSeparator14.Size = new System.Drawing.Size(266, 6); - // - // copyNodeToolStripMenuItem - // - this.copyNodeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Copy; - this.copyNodeToolStripMenuItem.Name = "copyNodeToolStripMenuItem"; - this.copyNodeToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.copyNodeToolStripMenuItem.Text = "Copy Node(s)"; - this.copyNodeToolStripMenuItem.Click += new System.EventHandler(this.copyNodeToolStripMenuItem_Click); - // - // pasteNodesToolStripMenuItem - // - this.pasteNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Paste; - this.pasteNodesToolStripMenuItem.Name = "pasteNodesToolStripMenuItem"; - this.pasteNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.pasteNodesToolStripMenuItem.Text = "Paste Node(s)"; - this.pasteNodesToolStripMenuItem.Click += new System.EventHandler(this.pasteNodesToolStripMenuItem_Click); - // - // toolStripSeparator17 - // - this.toolStripSeparator17.Name = "toolStripSeparator17"; - this.toolStripSeparator17.Size = new System.Drawing.Size(266, 6); - // - // removeToolStripMenuItem - // - this.removeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Delete; - this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; - this.removeToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.removeToolStripMenuItem.Text = "Remove Node(s)"; - this.removeToolStripMenuItem.Click += new System.EventHandler(this.removeToolStripMenuItem_Click); - // - // toolStripSeparator12 - // - this.toolStripSeparator12.Name = "toolStripSeparator12"; - this.toolStripSeparator12.Size = new System.Drawing.Size(266, 6); - // - // hideNodesToolStripMenuItem - // - this.hideNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; - this.hideNodesToolStripMenuItem.Name = "hideNodesToolStripMenuItem"; - this.hideNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.hideNodesToolStripMenuItem.Text = "Hide selected Node(s)"; - this.hideNodesToolStripMenuItem.Click += new System.EventHandler(this.hideNodesToolStripMenuItem_Click); - // - // unhideNodesToolStripMenuItem - // - this.unhideNodesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.insertBytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_X; + this.insertBytesToolStripMenuItem.Name = "insertBytesToolStripMenuItem"; + this.insertBytesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.insertBytesToolStripMenuItem.Text = "Insert Bytes"; + // + // insert4BytesToolStripMenuItem + // + this.insert4BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_4; + this.insert4BytesToolStripMenuItem.Name = "insert4BytesToolStripMenuItem"; + this.insert4BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert4BytesToolStripMenuItem.Text = "Insert 4 Bytes"; + this.insert4BytesToolStripMenuItem.Value = 4; + this.insert4BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert8BytesToolStripMenuItem + // + this.insert8BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_8; + this.insert8BytesToolStripMenuItem.Name = "insert8BytesToolStripMenuItem"; + this.insert8BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert8BytesToolStripMenuItem.Text = "Insert 8 Bytes"; + this.insert8BytesToolStripMenuItem.Value = 8; + this.insert8BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert64BytesToolStripMenuItem + // + this.insert64BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_64; + this.insert64BytesToolStripMenuItem.Name = "insert64BytesToolStripMenuItem"; + this.insert64BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert64BytesToolStripMenuItem.Text = "Insert 64 Bytes"; + this.insert64BytesToolStripMenuItem.Value = 64; + this.insert64BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert256BytesToolStripMenuItem + // + this.insert256BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_256; + this.insert256BytesToolStripMenuItem.Name = "insert256BytesToolStripMenuItem"; + this.insert256BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert256BytesToolStripMenuItem.Text = "Insert 256 Bytes"; + this.insert256BytesToolStripMenuItem.Value = 256; + this.insert256BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert1024BytesToolStripMenuItem + // + this.insert1024BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_1024; + this.insert1024BytesToolStripMenuItem.Name = "insert1024BytesToolStripMenuItem"; + this.insert1024BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert1024BytesToolStripMenuItem.Text = "Insert 1024 Bytes"; + this.insert1024BytesToolStripMenuItem.Value = 1024; + this.insert1024BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert2048BytesToolStripMenuItem + // + this.insert2048BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_2048; + this.insert2048BytesToolStripMenuItem.Name = "insert2048BytesToolStripMenuItem"; + this.insert2048BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert2048BytesToolStripMenuItem.Text = "Insert 2048 Bytes"; + this.insert2048BytesToolStripMenuItem.Value = 2048; + this.insert2048BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // insert4096BytesToolStripMenuItem + // + this.insert4096BytesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Insert_Bytes_4096; + this.insert4096BytesToolStripMenuItem.Name = "insert4096BytesToolStripMenuItem"; + this.insert4096BytesToolStripMenuItem.Size = new System.Drawing.Size(161, 22); + this.insert4096BytesToolStripMenuItem.Text = "Insert 4096 Bytes"; + this.insert4096BytesToolStripMenuItem.Value = 4096; + this.insert4096BytesToolStripMenuItem.Click += new System.EventHandler(this.insertBytesToolStripMenuItem_Click); + // + // toolStripSeparator1 + // + this.toolStripSeparator1.Name = "toolStripSeparator1"; + this.toolStripSeparator1.Size = new System.Drawing.Size(266, 6); + // + // createClassFromNodesToolStripMenuItem + // + this.createClassFromNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Class_Add; + this.createClassFromNodesToolStripMenuItem.Name = "createClassFromNodesToolStripMenuItem"; + this.createClassFromNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.createClassFromNodesToolStripMenuItem.Text = "Create Class from Nodes"; + this.createClassFromNodesToolStripMenuItem.Click += new System.EventHandler(this.createClassFromNodesToolStripMenuItem_Click); + // + // toolStripSeparator13 + // + this.toolStripSeparator13.Name = "toolStripSeparator13"; + this.toolStripSeparator13.Size = new System.Drawing.Size(266, 6); + // + // dissectNodesToolStripMenuItem + // + this.dissectNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Camera; + this.dissectNodesToolStripMenuItem.Name = "dissectNodesToolStripMenuItem"; + this.dissectNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.dissectNodesToolStripMenuItem.Text = "Dissect Node(s)"; + this.dissectNodesToolStripMenuItem.Click += new System.EventHandler(this.dissectNodesToolStripMenuItem_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(266, 6); + // + // searchForEqualValuesToolStripMenuItem + // + this.searchForEqualValuesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; + this.searchForEqualValuesToolStripMenuItem.Name = "searchForEqualValuesToolStripMenuItem"; + this.searchForEqualValuesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.searchForEqualValuesToolStripMenuItem.Text = "Search for equal values..."; + this.searchForEqualValuesToolStripMenuItem.Click += new System.EventHandler(this.searchForEqualValuesToolStripMenuItem_Click); + // + // toolStripSeparator15 + // + this.toolStripSeparator15.Name = "toolStripSeparator15"; + this.toolStripSeparator15.Size = new System.Drawing.Size(266, 6); + // + // findOutWhatAccessesThisAddressToolStripMenuItem + // + this.findOutWhatAccessesThisAddressToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Find_Access; + this.findOutWhatAccessesThisAddressToolStripMenuItem.Name = "findOutWhatAccessesThisAddressToolStripMenuItem"; + this.findOutWhatAccessesThisAddressToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.findOutWhatAccessesThisAddressToolStripMenuItem.Text = "Find out what accesses this address..."; + this.findOutWhatAccessesThisAddressToolStripMenuItem.Click += new System.EventHandler(this.findOutWhatAccessesThisAddressToolStripMenuItem_Click); + // + // findOutWhatWritesToThisAddressToolStripMenuItem + // + this.findOutWhatWritesToThisAddressToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Find_Write; + this.findOutWhatWritesToThisAddressToolStripMenuItem.Name = "findOutWhatWritesToThisAddressToolStripMenuItem"; + this.findOutWhatWritesToThisAddressToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.findOutWhatWritesToThisAddressToolStripMenuItem.Text = "Find out what writes to this address..."; + this.findOutWhatWritesToThisAddressToolStripMenuItem.Click += new System.EventHandler(this.findOutWhatWritesToThisAddressToolStripMenuItem_Click); + // + // toolStripSeparator14 + // + this.toolStripSeparator14.Name = "toolStripSeparator14"; + this.toolStripSeparator14.Size = new System.Drawing.Size(266, 6); + // + // copyNodeToolStripMenuItem + // + this.copyNodeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Copy; + this.copyNodeToolStripMenuItem.Name = "copyNodeToolStripMenuItem"; + this.copyNodeToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.copyNodeToolStripMenuItem.Text = "Copy Node(s)"; + this.copyNodeToolStripMenuItem.Click += new System.EventHandler(this.copyNodeToolStripMenuItem_Click); + // + // pasteNodesToolStripMenuItem + // + this.pasteNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Paste; + this.pasteNodesToolStripMenuItem.Name = "pasteNodesToolStripMenuItem"; + this.pasteNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.pasteNodesToolStripMenuItem.Text = "Paste Node(s)"; + this.pasteNodesToolStripMenuItem.Click += new System.EventHandler(this.pasteNodesToolStripMenuItem_Click); + // + // toolStripSeparator17 + // + this.toolStripSeparator17.Name = "toolStripSeparator17"; + this.toolStripSeparator17.Size = new System.Drawing.Size(266, 6); + // + // removeToolStripMenuItem + // + this.removeToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Button_Delete; + this.removeToolStripMenuItem.Name = "removeToolStripMenuItem"; + this.removeToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.removeToolStripMenuItem.Text = "Remove Node(s)"; + this.removeToolStripMenuItem.Click += new System.EventHandler(this.removeToolStripMenuItem_Click); + // + // toolStripSeparator12 + // + this.toolStripSeparator12.Name = "toolStripSeparator12"; + this.toolStripSeparator12.Size = new System.Drawing.Size(266, 6); + // + // hideNodesToolStripMenuItem + // + this.hideNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; + this.hideNodesToolStripMenuItem.Name = "hideNodesToolStripMenuItem"; + this.hideNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.hideNodesToolStripMenuItem.Text = "Hide selected Node(s)"; + this.hideNodesToolStripMenuItem.Click += new System.EventHandler(this.hideNodesToolStripMenuItem_Click); + // + // unhideNodesToolStripMenuItem + // + this.unhideNodesToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.unhideChildNodesToolStripMenuItem, this.unhideNodesAboveToolStripMenuItem, this.unhideNodesBelowToolStripMenuItem}); - this.unhideNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; - this.unhideNodesToolStripMenuItem.Name = "unhideNodesToolStripMenuItem"; - this.unhideNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.unhideNodesToolStripMenuItem.Text = "Unhide..."; - this.unhideNodesToolStripMenuItem.Click += new System.EventHandler(this.unhideChildNodesToolStripMenuItem_Click); - // - // unhideChildNodesToolStripMenuItem - // - this.unhideChildNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; - this.unhideChildNodesToolStripMenuItem.Name = "unhideChildNodesToolStripMenuItem"; - this.unhideChildNodesToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.unhideChildNodesToolStripMenuItem.Text = "... Child Node(s)"; - this.unhideChildNodesToolStripMenuItem.Click += new System.EventHandler(this.unhideChildNodesToolStripMenuItem_Click); - // - // unhideNodesAboveToolStripMenuItem - // - this.unhideNodesAboveToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; - this.unhideNodesAboveToolStripMenuItem.Name = "unhideNodesAboveToolStripMenuItem"; - this.unhideNodesAboveToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.unhideNodesAboveToolStripMenuItem.Text = "... Node(s) above"; - this.unhideNodesAboveToolStripMenuItem.Click += new System.EventHandler(this.unhideNodesAboveToolStripMenuItem_Click); - // - // unhideNodesBelowToolStripMenuItem - // - this.unhideNodesBelowToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; - this.unhideNodesBelowToolStripMenuItem.Name = "unhideNodesBelowToolStripMenuItem"; - this.unhideNodesBelowToolStripMenuItem.Size = new System.Drawing.Size(180, 22); - this.unhideNodesBelowToolStripMenuItem.Text = "... Node(s) below"; - this.unhideNodesBelowToolStripMenuItem.Click += new System.EventHandler(this.unhideNodesBelowToolStripMenuItem_Click); - // - // toolStripSeparator18 - // - this.toolStripSeparator18.Name = "toolStripSeparator18"; - this.toolStripSeparator18.Size = new System.Drawing.Size(266, 6); - // - // copyAddressToolStripMenuItem - // - this.copyAddressToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Copy; - this.copyAddressToolStripMenuItem.Name = "copyAddressToolStripMenuItem"; - this.copyAddressToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.copyAddressToolStripMenuItem.Text = "Copy Address"; - this.copyAddressToolStripMenuItem.Click += new System.EventHandler(this.copyAddressToolStripMenuItem_Click); - // - // toolStripSeparator16 - // - this.toolStripSeparator16.Name = "toolStripSeparator16"; - this.toolStripSeparator16.Size = new System.Drawing.Size(266, 6); - // - // showCodeOfClassToolStripMenuItem - // - this.showCodeOfClassToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Code_Cpp; - this.showCodeOfClassToolStripMenuItem.Name = "showCodeOfClassToolStripMenuItem"; - this.showCodeOfClassToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.showCodeOfClassToolStripMenuItem.Text = "Show C++ Code of Class"; - this.showCodeOfClassToolStripMenuItem.Click += new System.EventHandler(this.showCodeOfClassToolStripMenuItem_Click); - // - // shrinkClassToolStripMenuItem - // - this.shrinkClassToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Chart_Delete; - this.shrinkClassToolStripMenuItem.Name = "shrinkClassToolStripMenuItem"; - this.shrinkClassToolStripMenuItem.Size = new System.Drawing.Size(269, 22); - this.shrinkClassToolStripMenuItem.Text = "Shrink Class"; - this.shrinkClassToolStripMenuItem.Click += new System.EventHandler(this.shrinkClassToolStripMenuItem_Click); - // - // repaintTimer - // - this.repaintTimer.Enabled = true; - this.repaintTimer.Interval = 250; - this.repaintTimer.Tick += new System.EventHandler(this.repaintTimer_Tick); - // - // editBox - // - this.editBox.BorderStyle = System.Windows.Forms.BorderStyle.None; - this.editBox.Location = new System.Drawing.Point(36, 81); - this.editBox.MinimumWidth = 0; - this.editBox.Name = "editBox"; - this.editBox.Size = new System.Drawing.Size(100, 13); - this.editBox.TabIndex = 1; - this.editBox.TabStop = false; - this.editBox.Visible = false; - this.editBox.Committed += new System.EventHandler(this.editBox_Committed); - // - // nodeInfoToolTip - // - this.nodeInfoToolTip.ShowAlways = true; - // - // MemoryViewControl - // - this.Controls.Add(this.editBox); - this.DoubleBuffered = true; - this.Name = "MemoryViewControl"; - this.Size = new System.Drawing.Size(150, 162); - this.selectedNodeContextMenuStrip.ResumeLayout(false); - this.ResumeLayout(false); - this.PerformLayout(); + this.unhideNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; + this.unhideNodesToolStripMenuItem.Name = "unhideNodesToolStripMenuItem"; + this.unhideNodesToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.unhideNodesToolStripMenuItem.Text = "Unhide..."; + this.unhideNodesToolStripMenuItem.Click += new System.EventHandler(this.unhideChildNodesToolStripMenuItem_Click); + // + // unhideChildNodesToolStripMenuItem + // + this.unhideChildNodesToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; + this.unhideChildNodesToolStripMenuItem.Name = "unhideChildNodesToolStripMenuItem"; + this.unhideChildNodesToolStripMenuItem.Size = new System.Drawing.Size(163, 22); + this.unhideChildNodesToolStripMenuItem.Text = "... Child Node(s)"; + this.unhideChildNodesToolStripMenuItem.Click += new System.EventHandler(this.unhideChildNodesToolStripMenuItem_Click); + // + // unhideNodesAboveToolStripMenuItem + // + this.unhideNodesAboveToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; + this.unhideNodesAboveToolStripMenuItem.Name = "unhideNodesAboveToolStripMenuItem"; + this.unhideNodesAboveToolStripMenuItem.Size = new System.Drawing.Size(163, 22); + this.unhideNodesAboveToolStripMenuItem.Text = "... Node(s) above"; + this.unhideNodesAboveToolStripMenuItem.Click += new System.EventHandler(this.unhideNodesAboveToolStripMenuItem_Click); + // + // unhideNodesBelowToolStripMenuItem + // + this.unhideNodesBelowToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Eye; + this.unhideNodesBelowToolStripMenuItem.Name = "unhideNodesBelowToolStripMenuItem"; + this.unhideNodesBelowToolStripMenuItem.Size = new System.Drawing.Size(163, 22); + this.unhideNodesBelowToolStripMenuItem.Text = "... Node(s) below"; + this.unhideNodesBelowToolStripMenuItem.Click += new System.EventHandler(this.unhideNodesBelowToolStripMenuItem_Click); + // + // toolStripSeparator18 + // + this.toolStripSeparator18.Name = "toolStripSeparator18"; + this.toolStripSeparator18.Size = new System.Drawing.Size(266, 6); + // + // copyAddressToolStripMenuItem + // + this.copyAddressToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Copy; + this.copyAddressToolStripMenuItem.Name = "copyAddressToolStripMenuItem"; + this.copyAddressToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.copyAddressToolStripMenuItem.Text = "Copy Address"; + this.copyAddressToolStripMenuItem.Click += new System.EventHandler(this.copyAddressToolStripMenuItem_Click); + // + // toolStripSeparator16 + // + this.toolStripSeparator16.Name = "toolStripSeparator16"; + this.toolStripSeparator16.Size = new System.Drawing.Size(266, 6); + // + // showCodeOfClassToolStripMenuItem + // + this.showCodeOfClassToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Page_Code_Cpp; + this.showCodeOfClassToolStripMenuItem.Name = "showCodeOfClassToolStripMenuItem"; + this.showCodeOfClassToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.showCodeOfClassToolStripMenuItem.Text = "Show C++ Code of Class"; + this.showCodeOfClassToolStripMenuItem.Click += new System.EventHandler(this.showCodeOfClassToolStripMenuItem_Click); + // + // shrinkClassToolStripMenuItem + // + this.shrinkClassToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.B16x16_Chart_Delete; + this.shrinkClassToolStripMenuItem.Name = "shrinkClassToolStripMenuItem"; + this.shrinkClassToolStripMenuItem.Size = new System.Drawing.Size(269, 22); + this.shrinkClassToolStripMenuItem.Text = "Shrink Class"; + this.shrinkClassToolStripMenuItem.Click += new System.EventHandler(this.shrinkClassToolStripMenuItem_Click); + // + // repaintTimer + // + this.repaintTimer.Enabled = true; + this.repaintTimer.Interval = 250; + this.repaintTimer.Tick += new System.EventHandler(this.repaintTimer_Tick); + // + // editBox + // + this.editBox.BorderStyle = System.Windows.Forms.BorderStyle.None; + this.editBox.Location = new System.Drawing.Point(36, 81); + this.editBox.MinimumWidth = 0; + this.editBox.Name = "editBox"; + this.editBox.Size = new System.Drawing.Size(100, 13); + this.editBox.TabIndex = 1; + this.editBox.TabStop = false; + this.editBox.Visible = false; + this.editBox.Committed += new System.EventHandler(this.editBox_Committed); + // + // nodeInfoToolTip + // + this.nodeInfoToolTip.ShowAlways = true; + // + // MemoryViewControl + // + this.Controls.Add(this.editBox); + this.DoubleBuffered = true; + this.Name = "MemoryViewControl"; + this.Size = new System.Drawing.Size(150, 162); + this.selectedNodeContextMenuStrip.ResumeLayout(false); + this.ResumeLayout(false); + this.PerformLayout(); } @@ -1001,5 +1001,5 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem unhideNodesAboveToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem unhideNodesBelowToolStripMenuItem; private System.Windows.Forms.ToolStripSeparator toolStripSeparator18; - } + } } diff --git a/ReClass.NET/UI/MemoryViewControl.cs b/ReClass.NET/UI/MemoryViewControl.cs index cec097f0..c1aa80bc 100644 --- a/ReClass.NET/UI/MemoryViewControl.cs +++ b/ReClass.NET/UI/MemoryViewControl.cs @@ -93,7 +93,6 @@ public MemoryViewControl() editBox.Font = font; memoryPreviewPopUp = new MemoryPreviewPopUp(font); keyBoard = new KeyBoardManager(); - keyBoard.KeysCodesToHandle.Add(WindowsInput.Native.VirtualKeyCode.CONTROL); } protected override void OnLoad(EventArgs e) @@ -1356,5 +1355,5 @@ private void FindWhatInteractsWithSelectedNode(bool writeOnly) LinkedWindowFeatures.FindWhatInteractsWithAddress(selectedNode.Address, selectedNode.Node.MemorySize, writeOnly); } - } + } } diff --git a/ReClass.NET/UI/PanelWithScorllBar.cs b/ReClass.NET/UI/PanelWithScorllBar.cs new file mode 100644 index 00000000..cc36cdbd --- /dev/null +++ b/ReClass.NET/UI/PanelWithScorllBar.cs @@ -0,0 +1,23 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ReClassNET.UI +{ + public class PanelWithScorllBar : Panel + { + protected override CreateParams CreateParams + { + get + { + var cp = base.CreateParams; + cp.Style |= 0x00100000; // WS_HSCROLL + //cp.Style |= 0x00200000; // WS_VSCROLL + return cp; + } + } + } +} diff --git a/ReClass.NET/UI/ScrollableSplitTable.Designer.cs b/ReClass.NET/UI/ScrollableSplitTable.Designer.cs new file mode 100644 index 00000000..b13b6cab --- /dev/null +++ b/ReClass.NET/UI/ScrollableSplitTable.Designer.cs @@ -0,0 +1,69 @@ +namespace ReClassNET.UI +{ + partial class ScrollableSplitTable + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.PanelControl = new ReClassNET.UI.SplitTablePanel(); + this.SuspendLayout(); + // + // PanelControl + // + this.PanelControl.AutoScroll = true; + this.PanelControl.AutoSize = true; + this.PanelControl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; + this.PanelControl.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.PanelControl.ColumnCount = 1; + this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 484F)); + this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); + this.PanelControl.Dock = System.Windows.Forms.DockStyle.Fill; + this.PanelControl.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddColumns; + this.PanelControl.Location = new System.Drawing.Point(0, 0); + this.PanelControl.Name = "PanelControl"; + this.PanelControl.RowCount = 1; + this.PanelControl.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F)); + this.PanelControl.Size = new System.Drawing.Size(482, 287); + this.PanelControl.SplitterSize = 6; + this.PanelControl.TabIndex = 1; + // + // ScrollableSplitTable + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.Controls.Add(this.PanelControl); + this.Name = "ScrollableSplitTable"; + this.Size = new System.Drawing.Size(482, 287); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + + private SplitTablePanel PanelControl; + } +} diff --git a/ReClass.NET/UI/ScrollableSplitTable.cs b/ReClass.NET/UI/ScrollableSplitTable.cs new file mode 100644 index 00000000..65808d90 --- /dev/null +++ b/ReClass.NET/UI/ScrollableSplitTable.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ReClassNET.UI +{ + public partial class ScrollableSplitTable : ScrollableCustomControl + { + public SplitTablePanel Panel => PanelControl; + + public ScrollableSplitTable() + { + InitializeComponent(); + } + } +} diff --git a/ReClass.NET/UI/ScrollableSplitTable.resx b/ReClass.NET/UI/ScrollableSplitTable.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/ReClass.NET/UI/ScrollableSplitTable.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ReClass.NET/UI/SplitTablePanel.Designer.cs b/ReClass.NET/UI/SplitTablePanel.Designer.cs new file mode 100644 index 00000000..1f951284 --- /dev/null +++ b/ReClass.NET/UI/SplitTablePanel.Designer.cs @@ -0,0 +1,41 @@ +namespace ReClassNET.UI +{ + partial class SplitTablePanel + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Component Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.SuspendLayout(); + // + // SplitTablePanel + // + this.Name = "SplitTablePanel"; + this.ResumeLayout(false); + } + + #endregion + } +} diff --git a/ReClass.NET/UI/SplitTablePanel.cs b/ReClass.NET/UI/SplitTablePanel.cs new file mode 100644 index 00000000..ce4a78ce --- /dev/null +++ b/ReClass.NET/UI/SplitTablePanel.cs @@ -0,0 +1,246 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Drawing; +using System.Data; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace ReClassNET.UI +{ + public partial class SplitTablePanel : TableLayoutPanel + { + public int SplitterSize { get; set; } + + int sizingRow = -1; + int currentRow = -1; + Point mdown = Point.Empty; + int oldHeight = -1; + bool isNormalRow = false; + List tlpRows = new List(); + int[] rowHeights = new int[0]; + + int sizingCol = -1; + int currentCol = -1; + int oldWidth = -1; + bool isNormalCol = false; + List tlpCols = new List(); + int[] colWidths = new int[0]; + + public SplitTablePanel() + { + InitializeComponent(); + this.MouseDown += SplitTablePanel_MouseDown; + this.MouseMove += SplitTablePanel_MouseMove; + this.MouseUp += SplitTablePanel_MouseUp; + this.MouseLeave += SplitTablePanel_MouseLeave; + this.Resize += SplitTablePanel_Resize; + SplitterSize = 6; + } + + void SplitTablePanel_Resize(object sender, EventArgs e) + { + getRowRectangles(SplitterSize); + getColRectangles(SplitterSize); + } + void SplitTablePanel_MouseLeave(object sender, EventArgs e) + { + Cursor = Cursors.Default; + } + + + void SplitTablePanel_MouseUp(object sender, MouseEventArgs e) + { + getRowRectangles(SplitterSize); + getColRectangles(SplitterSize); + } + + void SplitTablePanel_MouseMove(object sender, MouseEventArgs e) + { + bool r = rowMove(sender, e); + bool c = colMove(sender, e); + + if (r && !c) + Cursor = Cursors.SizeNS; + else if (!r && c) + Cursor = Cursors.SizeWE; + else if (r && c) + Cursor = Cursors.SizeAll; + else + Cursor = Cursors.Default; + } + + bool rowMove(object sender, MouseEventArgs e) + { + bool isMove = false; + if (!isNormalRow) nomalizeRowStyles(); + if (tlpRows.Count <= 0) getRowRectangles(SplitterSize); + if (rowHeights.Length <= 0) rowHeights = GetRowHeights(); + + if (e.Button == System.Windows.Forms.MouseButtons.Left) + { + if (sizingRow < 0) return false; + int newHeight = oldHeight + e.Y - mdown.Y; + sizeRow(sizingRow, newHeight); + isMove = true; + } + else + { + currentRow = -1; + for (int i = 0; i < tlpRows.Count; i++) + if (tlpRows[i].Contains(e.Location)) + { + currentRow = i; + isMove = true; + break; + } + } + return isMove; + } + + bool colMove(object sender, MouseEventArgs e) + { + bool isMove = false; + if (!isNormalCol) nomalizeColStyles(); + if (tlpCols.Count <= 0) getColRectangles(SplitterSize); + if (colWidths.Length <= 0) colWidths = GetColumnWidths(); + + if (e.Button == System.Windows.Forms.MouseButtons.Left) + { + if (sizingCol < 0) return false; + int newWidth = oldWidth + e.X - mdown.X; + sizeCol(sizingCol, newWidth); + isMove = true; + } + else + { + currentCol = -1; + for (int i = 0; i < tlpCols.Count; i++) + if (tlpCols[i].Contains(e.Location)) + { + currentCol = i; + isMove = true; + break; + } + } + return isMove; + } + + void SplitTablePanel_MouseDown(object sender, MouseEventArgs e) + { + mdown = Point.Empty; + rowDown(); + colDown(); + mdown = e.Location; + } + + void rowDown() + { + sizingRow = -1; + if (currentRow < 0) return; + sizingRow = currentRow; + oldHeight = rowHeights[sizingRow]; + } + + void colDown() + { + sizingCol = -1; + if (currentCol < 0) return; + sizingCol = currentCol; + oldWidth = colWidths[sizingCol]; + } + + + void getRowRectangles(float size) + { // get a list of mouse sensitive rectangles + float sz = size / 2f; + float y = 0f; + int w = ClientSize.Width; + int[] rw = GetRowHeights(); + + tlpRows.Clear(); + for (int i = 0; i < rw.Length - 1; i++) + { + y += rw[i]; + tlpRows.Add(new RectangleF(0, y - sz, w, size)); + } + + } + + void getColRectangles(float size) + { // get a list of mouse sensitive rectangles + float sz = size / 2f; + float x = 0f; + int h = ClientSize.Height; + int[] rw = GetColumnWidths(); + + tlpCols.Clear(); + for (int i = 0; i < rw.Length - 1; i++) + { + x += rw[i]; + tlpCols.Add(new RectangleF(x - sz, 0, size, h)); + } + + } + + void sizeRow(int row, int newHeight) + { // change the height of one row + if (newHeight == 0) return; + if (sizingRow < 0) return; + SuspendLayout(); + rowHeights = GetRowHeights(); + if (sizingRow >= rowHeights.Length) return; + + if (newHeight > 0) + RowStyles[sizingRow] = new RowStyle(SizeType.Absolute, newHeight); + ResumeLayout(); + rowHeights = GetRowHeights(); + getRowRectangles(SplitterSize); + } + + void sizeCol(int col, int newWidth) + { // change the height of one row + if (newWidth == 0) return; + if (sizingCol < 0) return; + SuspendLayout(); + colWidths = GetColumnWidths(); + if (sizingCol >= colWidths.Length) return; + + if (newWidth > 0) + ColumnStyles[sizingCol] = new ColumnStyle(SizeType.Absolute, newWidth); + ResumeLayout(); + colWidths = GetColumnWidths(); + getColRectangles(SplitterSize); + } + + void nomalizeRowStyles() + { // set all rows to absolute and the last one to percent=100! + if (rowHeights.Length <= 0) return; + rowHeights = GetRowHeights(); + RowStyles.Clear(); + for (int i = 0; i < RowCount - 1; i++) + { + RowStyle cs = new RowStyle(SizeType.Absolute, rowHeights[i]); + RowStyles.Add(cs); + } + RowStyles.Add(new RowStyle(SizeType.Percent, 100)); + isNormalRow = true; + } + + void nomalizeColStyles() + { // set all rows to absolute and the last one to percent=100! + if (colWidths.Length <= 0) return; + colWidths = GetColumnWidths(); + ColumnStyles.Clear(); + for (int i = 0; i < ColumnCount - 1; i++) + { + ColumnStyle cs = new ColumnStyle(SizeType.Absolute, colWidths[i]); + ColumnStyles.Add(cs); + } + ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 100)); + isNormalCol = true; + } + } +} diff --git a/ReClass.NET/UI/SplitTablePanel.resx b/ReClass.NET/UI/SplitTablePanel.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/ReClass.NET/UI/SplitTablePanel.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/ReClass.NET/UI/ViewInfo.cs b/ReClass.NET/UI/ViewInfo.cs index 64d6ea5a..3ee950a2 100644 --- a/ReClass.NET/UI/ViewInfo.cs +++ b/ReClass.NET/UI/ViewInfo.cs @@ -21,7 +21,10 @@ public class ViewInfo public int Level { get; set; } public bool MultipleNodesSelected { get; set; } - public ViewInfo Clone() + public object Tag { get; set; } + public object Tag2 { get; set; } + + public ViewInfo Clone() { return new ViewInfo { From 5518a0306a49b07f317fe6de2e7c741e3e91a931 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Thu, 25 Apr 2019 10:55:30 +0200 Subject: [PATCH 12/32] Update README.md --- README.md | 103 ++---------------------------------------------------- 1 file changed, 3 insertions(+), 100 deletions(-) diff --git a/README.md b/README.md index bf3cd1a1..0b993b4e 100644 --- a/README.md +++ b/README.md @@ -2,105 +2,7 @@ This is a port of ReClass to the .NET platform with lots of additional features. ![](https://abload.de/img/main4hsbj.jpg) - -## Features -- Support for x86 / x64 -- File import from ReClass 2007-2016 and ReClass QT -- Memory Nodes - - Hex 8 / 16 / 32 / 64 - - Int 8 / 16 / 32 / 64 - - UInt 8 / 16 / 32 / 64 - - Bool - - Bits ![](https://abload.de/img/bitsnhlql.jpg) - - Float / Double - - Vector 2 / 3 / 4 - - Matrix 3x3 / 3x4 / 4x4 - - UTF8/16/32 Text and pointer to text - - Class Arrays and array of pointers to classes - - VTable - - Function Pointer - - Function -- Automatic Node Dissection -- Highlight changed memory -- Pointer Preview -- Copy / Paste Support across ReClass.NET instances -- Display types from Debug Symbols (*.pdb) -- Display Runtime Type Informations (RTTI) -- Control the remote process: start / stop / kill -- Process Selection Dialog with filtering -- Memory Viewer -- Memory Scanner - - Import files from Cheat Engine and CrySearch - - Scan for values correlated to your input -- Class address calculator -- Code Generator (C++ / C#) -- Module / Section Dumper -- Linux Support (tested on Ubuntu) -- Debugger with "Find out what writes/accesses this address" support -- Plugin Support - - Plugins can be written in different languages (example: C++, C++/CLI, C#) - - Plugins can provide custom methods to access an other process (example: use a driver) - - Plugins can interact with the ReClass.NET windows - - Plugins can provide node infos which will be displayed (example: class informations for Frostbite games) - - Plugins can implement custom nodes with load/save and code generation support - -## Plugins -- [Sample Plugins](https://github.com/KN4CK3R/ReClass.NET-SamplePlugin) -- [Frostbite Plugin](https://github.com/KN4CK3R/ReClass.NET-FrostbitePlugin) -- [MemoryPipe Plugin](https://github.com/KN4CK3R/ReClass.NET-MemoryPipePlugin) -- [LoadBinary Plugin](https://github.com/KN4CK3R/ReClass.NET-LoadBinaryPlugin) -- [Handle Abuser Plugin](https://github.com/KN4CK3R/ReClass.NET-HandleAbuser) -- [Unreal Plugin](https://github.com/DrP3pp3r/ReClass.NET-UnrealPlugin) (by [DrP3pp3r](https://github.com/DrP3pp3r)) - -To install a plugin just copy it in the "Plugins" folder. -If you want to develop your own plugin just learn from the code of the [Sample Plugins](https://github.com/KN4CK3R/ReClass.NET-SamplePlugin) and [Frostbite Plugin](https://github.com/KN4CK3R/ReClass.NET-FrostbitePlugin) repositories. If you have developed a nice plugin, leave me a message and I will add it to the list above. - -## Installation -Just download the [latest version](https://github.com/KN4CK3R/ReClass.NET/releases) and start the x86 / x64 version or let the launcher decide. - -## Tips -- Lots of elements have a context menu. Just right-click it and see what you can do there. -- The node window can be controlled with the keyboard too. Arrow keys can select other keys, combined with the shift key the nodes get selected. The menu key opens the context menu which itself can be controlled with the keyboard. -- The memory address field of a class can contain a real formula not just a fixed address. - - **\ + 0x123** will use the base address of Program.exe and add 0x123 to it. - **[0x4012ABDE]** will read the integer (4 byte on x86 / 8 byte on x64) from the address 0x4012ABDE and use this value as class address. - **[\ + 0xDE] - AB** will use the base address of Program.exe, add 0xDE to it, read the value from this address and finally sub 0xAB from it. - **[\ + offset + [\ + offset2]]** Nested operations are supported too. - - Valid operations are read ([..]), add (+), sub (-), mul (*) and div (/). Please note that all operations are integer calculations. - -## Compiling -If you want to compile ReClass.NET just fork the repository and open the ReClass.NET.sln file with Visual Studio 2017. -Compile the project and copy the dependencies to the output folder. - -## Videos - -[Youtube Playlist](https://www.youtube.com/playlist?list=PLO246BmtoITanq3ygMCL8_w0eov4D8hjk) - -## Screenshots -Process Selection -![](https://abload.de/img/processgya2k.jpg) - -Memory Viewer -![](https://abload.de/img/memoryviewerb4y1s.jpg) - -Memory Scanner -![](https://abload.de/img/scannerytub1.jpg) - -Pointer Preview -![](http://abload.de/img/memorypreview2gsfp.jpg) - -Code Generator -![](https://abload.de/img/codegeneratorqdat2.jpg) -![](https://abload.de/img/codegenerator24qzce.jpg) - -Plugins -![](https://abload.de/img/plugin1mda4r.jpg) -![](https://abload.de/img/plugin25dxk1.jpg) - -Settings -![](https://abload.de/img/settings8sz4b.jpg) +https://github.com/ReClassNET/ReClass.NET/blob/master/README.md ## Authors / Special Thanks - [KN4CK3R](https://github.com/KN4CK3R) @@ -116,4 +18,5 @@ Settings - leveln - [buddyfavors](https://github.com/buddyfavors) - [DrP3pp3r](https://github.com/DrP3pp3r) -- [ko1N](https://github.com/ko1N) \ No newline at end of file +- [ko1N](https://github.com/ko1N) +- [CorrM](https://github.com/CorrM) From 0b1d67bebbec16348c9519419f1f45e46ff1b985 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Thu, 25 Apr 2019 10:59:40 +0200 Subject: [PATCH 13/32] Update README.md --- README.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0b993b4e..33601652 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,13 @@ # ReClass.NET This is a port of ReClass to the .NET platform with lots of additional features. - -![](https://abload.de/img/main4hsbj.jpg) https://github.com/ReClassNET/ReClass.NET/blob/master/README.md +## New Features +- Kernal Memory Option (Read/Write) +- Class Compare +- x64 only + - Can Access 32/64bit Process + ## Authors / Special Thanks - [KN4CK3R](https://github.com/KN4CK3R) - DrUnKeN ChEeTaH From e0d2580224eeac4b8a3157d2860be7f37f666d39 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Thu, 25 Apr 2019 11:17:40 +0200 Subject: [PATCH 14/32] add icons --- ReClass.NET/Forms/ClassCompare.Designer.cs | 2 +- ReClass.NET/Forms/MainForm.Designer.cs | 1 + ReClass.NET/Properties/Resources.Designer.cs | 302 ++++++----- ReClass.NET/Properties/Resources.resx | 496 +++++++++--------- ReClass.NET/ReClass.NET.csproj | 6 + ReClass.NET/Resources/Images/compare16x16.png | Bin 0 -> 253 bytes ReClass.NET/Resources/Images/compare32x32.png | Bin 0 -> 390 bytes 7 files changed, 420 insertions(+), 387 deletions(-) create mode 100644 ReClass.NET/Resources/Images/compare16x16.png create mode 100644 ReClass.NET/Resources/Images/compare32x32.png diff --git a/ReClass.NET/Forms/ClassCompare.Designer.cs b/ReClass.NET/Forms/ClassCompare.Designer.cs index 1e054b16..a308802e 100644 --- a/ReClass.NET/Forms/ClassCompare.Designer.cs +++ b/ReClass.NET/Forms/ClassCompare.Designer.cs @@ -55,7 +55,7 @@ private void InitializeComponent() // bannerBox // this.bannerBox.Dock = System.Windows.Forms.DockStyle.Top; - this.bannerBox.Icon = global::ReClassNET.Properties.Resources.B32x32_Plugin; + this.bannerBox.Icon = global::ReClassNET.Properties.Resources.compare32x32; this.bannerBox.Location = new System.Drawing.Point(0, 0); this.bannerBox.Name = "bannerBox"; this.bannerBox.Size = new System.Drawing.Size(704, 48); diff --git a/ReClass.NET/Forms/MainForm.Designer.cs b/ReClass.NET/Forms/MainForm.Designer.cs index 5d6c15ee..c3e9fdef 100644 --- a/ReClass.NET/Forms/MainForm.Designer.cs +++ b/ReClass.NET/Forms/MainForm.Designer.cs @@ -1114,6 +1114,7 @@ private void InitializeComponent() // // classCompareToolStripMenuItem // + this.classCompareToolStripMenuItem.Image = global::ReClassNET.Properties.Resources.compare16x16; this.classCompareToolStripMenuItem.Name = "classCompareToolStripMenuItem"; this.classCompareToolStripMenuItem.Size = new System.Drawing.Size(194, 22); this.classCompareToolStripMenuItem.Text = "Class Compare"; diff --git a/ReClass.NET/Properties/Resources.Designer.cs b/ReClass.NET/Properties/Resources.Designer.cs index acde293f..6f68879b 100644 --- a/ReClass.NET/Properties/Resources.Designer.cs +++ b/ReClass.NET/Properties/Resources.Designer.cs @@ -1,10 +1,10 @@ //------------------------------------------------------------------------------ // -// Dieser Code wurde von einem Tool generiert. -// Laufzeitversion:4.0.30319.42000 +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 // -// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn -// der Code erneut generiert wird. +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. // //------------------------------------------------------------------------------ @@ -13,12 +13,12 @@ namespace ReClassNET.Properties { /// - /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw. + /// A strongly-typed resource class, for looking up localized strings, etc. /// - // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert - // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert. - // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen - // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu. + // This class was auto-generated by the StronglyTypedResourceBuilder + // class via a tool like ResGen or Visual Studio. + // To add or remove a member, edit your .ResX file then rerun ResGen + // with the /str option, or rebuild your VS project. [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "15.0.0.0")] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] @@ -33,7 +33,7 @@ internal Resources() { } /// - /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird. + /// Returns the cached ResourceManager instance used by this class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { @@ -47,8 +47,8 @@ internal Resources() { } /// - /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle - /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden. + /// Overrides the current thread's CurrentUICulture property for all + /// resource lookups using this strongly typed resource class. /// [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Globalization.CultureInfo Culture { @@ -61,7 +61,7 @@ internal Resources() { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Accept { get { @@ -71,7 +71,7 @@ internal static System.Drawing.Bitmap B16x16_Accept { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Array_Type { get { @@ -81,7 +81,7 @@ internal static System.Drawing.Bitmap B16x16_Array_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Arrow_Refresh { get { @@ -91,7 +91,7 @@ internal static System.Drawing.Bitmap B16x16_Arrow_Refresh { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add { get { @@ -101,7 +101,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_1024 { get { @@ -111,7 +111,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_1024 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_2048 { get { @@ -121,7 +121,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_2048 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_256 { get { @@ -131,7 +131,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_256 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_4 { get { @@ -141,7 +141,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_4 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_4096 { get { @@ -151,7 +151,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_4096 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_64 { get { @@ -161,7 +161,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_64 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_8 { get { @@ -171,7 +171,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_8 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_X { get { @@ -181,7 +181,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Add_Bytes_X { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Array { get { @@ -191,7 +191,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Array { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Bits { get { @@ -201,7 +201,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Bits { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Bool { get { @@ -211,7 +211,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Bool { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Class_Add { get { @@ -221,7 +221,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Class_Add { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Class_Instance { get { @@ -231,7 +231,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Class_Instance { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Class_Pointer { get { @@ -241,7 +241,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Class_Pointer { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Class_Remove { get { @@ -251,7 +251,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Class_Remove { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Delete { get { @@ -261,7 +261,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Delete { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Double { get { @@ -271,7 +271,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Double { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Drop_Down { get { @@ -281,7 +281,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Drop_Down { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Float { get { @@ -291,7 +291,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Float { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Function { get { @@ -301,7 +301,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Function { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Function_Pointer { get { @@ -311,7 +311,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Function_Pointer { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Hex_16 { get { @@ -321,7 +321,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Hex_16 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Hex_32 { get { @@ -331,7 +331,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Hex_32 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Hex_64 { get { @@ -341,7 +341,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Hex_64 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Hex_8 { get { @@ -351,7 +351,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Hex_8 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_1024 { get { @@ -361,7 +361,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_1024 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_2048 { get { @@ -371,7 +371,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_2048 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_256 { get { @@ -381,7 +381,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_256 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_4 { get { @@ -391,7 +391,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_4 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_4096 { get { @@ -401,7 +401,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_4096 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_64 { get { @@ -411,7 +411,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_64 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_8 { get { @@ -421,7 +421,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_8 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_X { get { @@ -431,7 +431,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Insert_Bytes_X { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Int_16 { get { @@ -441,7 +441,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Int_16 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Int_32 { get { @@ -451,7 +451,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Int_32 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Int_64 { get { @@ -461,7 +461,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Int_64 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Int_8 { get { @@ -471,7 +471,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Int_8 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Matrix_3x3 { get { @@ -481,7 +481,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Matrix_3x3 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Matrix_3x4 { get { @@ -491,7 +491,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Matrix_3x4 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Matrix_4x4 { get { @@ -501,7 +501,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Matrix_4x4 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Pointer_Array { get { @@ -511,7 +511,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Pointer_Array { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Remove { get { @@ -521,7 +521,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Remove { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Text { get { @@ -531,7 +531,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Text { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Text_Pointer { get { @@ -541,7 +541,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Text_Pointer { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_UInt_16 { get { @@ -551,7 +551,7 @@ internal static System.Drawing.Bitmap B16x16_Button_UInt_16 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_UInt_32 { get { @@ -561,7 +561,7 @@ internal static System.Drawing.Bitmap B16x16_Button_UInt_32 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_UInt_64 { get { @@ -571,7 +571,7 @@ internal static System.Drawing.Bitmap B16x16_Button_UInt_64 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_UInt_8 { get { @@ -581,7 +581,7 @@ internal static System.Drawing.Bitmap B16x16_Button_UInt_8 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_UText { get { @@ -591,7 +591,7 @@ internal static System.Drawing.Bitmap B16x16_Button_UText { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_UText_Pointer { get { @@ -601,7 +601,7 @@ internal static System.Drawing.Bitmap B16x16_Button_UText_Pointer { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Vector_2 { get { @@ -611,7 +611,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Vector_2 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Vector_3 { get { @@ -621,7 +621,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Vector_3 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_Vector_4 { get { @@ -631,7 +631,7 @@ internal static System.Drawing.Bitmap B16x16_Button_Vector_4 { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Button_VTable { get { @@ -641,7 +641,7 @@ internal static System.Drawing.Bitmap B16x16_Button_VTable { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Camera { get { @@ -651,7 +651,7 @@ internal static System.Drawing.Bitmap B16x16_Camera { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Canvas_Size { get { @@ -661,7 +661,7 @@ internal static System.Drawing.Bitmap B16x16_Canvas_Size { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Category { get { @@ -671,7 +671,7 @@ internal static System.Drawing.Bitmap B16x16_Category { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Chart_Delete { get { @@ -681,7 +681,7 @@ internal static System.Drawing.Bitmap B16x16_Chart_Delete { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Class_Type { get { @@ -691,7 +691,7 @@ internal static System.Drawing.Bitmap B16x16_Class_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Closed_Icon { get { @@ -701,7 +701,7 @@ internal static System.Drawing.Bitmap B16x16_Closed_Icon { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Cogs { get { @@ -711,7 +711,7 @@ internal static System.Drawing.Bitmap B16x16_Cogs { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Color_Wheel { get { @@ -721,7 +721,7 @@ internal static System.Drawing.Bitmap B16x16_Color_Wheel { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Control_Pause { get { @@ -731,7 +731,7 @@ internal static System.Drawing.Bitmap B16x16_Control_Pause { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Control_Play { get { @@ -741,7 +741,7 @@ internal static System.Drawing.Bitmap B16x16_Control_Play { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Control_Stop { get { @@ -751,7 +751,7 @@ internal static System.Drawing.Bitmap B16x16_Control_Stop { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Custom_Type { get { @@ -761,7 +761,7 @@ internal static System.Drawing.Bitmap B16x16_Custom_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Double_Type { get { @@ -771,7 +771,7 @@ internal static System.Drawing.Bitmap B16x16_Double_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Drive_Go { get { @@ -781,7 +781,7 @@ internal static System.Drawing.Bitmap B16x16_Drive_Go { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Enum_Type { get { @@ -791,7 +791,7 @@ internal static System.Drawing.Bitmap B16x16_Enum_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Error { get { @@ -801,7 +801,7 @@ internal static System.Drawing.Bitmap B16x16_Error { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Exchange_Button { get { @@ -811,7 +811,7 @@ internal static System.Drawing.Bitmap B16x16_Exchange_Button { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Eye { get { @@ -821,7 +821,7 @@ internal static System.Drawing.Bitmap B16x16_Eye { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Find_Access { get { @@ -831,7 +831,7 @@ internal static System.Drawing.Bitmap B16x16_Find_Access { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Find_Write { get { @@ -841,7 +841,7 @@ internal static System.Drawing.Bitmap B16x16_Find_Write { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Float_Type { get { @@ -851,7 +851,7 @@ internal static System.Drawing.Bitmap B16x16_Float_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Folder { get { @@ -861,7 +861,7 @@ internal static System.Drawing.Bitmap B16x16_Folder { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Folder_Add { get { @@ -871,7 +871,7 @@ internal static System.Drawing.Bitmap B16x16_Folder_Add { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Function_Type { get { @@ -881,7 +881,7 @@ internal static System.Drawing.Bitmap B16x16_Function_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Gear { get { @@ -891,7 +891,7 @@ internal static System.Drawing.Bitmap B16x16_Gear { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Help { get { @@ -901,7 +901,7 @@ internal static System.Drawing.Bitmap B16x16_Help { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Information { get { @@ -911,7 +911,7 @@ internal static System.Drawing.Bitmap B16x16_Information { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Interface_Type { get { @@ -921,7 +921,7 @@ internal static System.Drawing.Bitmap B16x16_Interface_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Left_Button { get { @@ -931,7 +931,7 @@ internal static System.Drawing.Bitmap B16x16_Left_Button { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Magnifier { get { @@ -941,7 +941,7 @@ internal static System.Drawing.Bitmap B16x16_Magnifier { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Magnifier_Arrow { get { @@ -951,7 +951,7 @@ internal static System.Drawing.Bitmap B16x16_Magnifier_Arrow { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Magnifier_Remove { get { @@ -961,7 +961,7 @@ internal static System.Drawing.Bitmap B16x16_Magnifier_Remove { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Matrix_Type { get { @@ -971,7 +971,7 @@ internal static System.Drawing.Bitmap B16x16_Matrix_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Open_Icon { get { @@ -981,7 +981,7 @@ internal static System.Drawing.Bitmap B16x16_Open_Icon { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Page_Code { get { @@ -991,7 +991,7 @@ internal static System.Drawing.Bitmap B16x16_Page_Code { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Page_Code_Add { get { @@ -1001,7 +1001,7 @@ internal static System.Drawing.Bitmap B16x16_Page_Code_Add { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Page_Code_Cpp { get { @@ -1011,7 +1011,7 @@ internal static System.Drawing.Bitmap B16x16_Page_Code_Cpp { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Page_Code_Csharp { get { @@ -1021,7 +1021,7 @@ internal static System.Drawing.Bitmap B16x16_Page_Code_Csharp { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Page_Copy { get { @@ -1031,7 +1031,7 @@ internal static System.Drawing.Bitmap B16x16_Page_Copy { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Page_Paste { get { @@ -1041,7 +1041,7 @@ internal static System.Drawing.Bitmap B16x16_Page_Paste { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Page_White_Stack { get { @@ -1051,7 +1051,7 @@ internal static System.Drawing.Bitmap B16x16_Page_White_Stack { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Pdb { get { @@ -1061,7 +1061,7 @@ internal static System.Drawing.Bitmap B16x16_Pdb { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Plugin { get { @@ -1071,7 +1071,7 @@ internal static System.Drawing.Bitmap B16x16_Plugin { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Pointer_Type { get { @@ -1081,7 +1081,7 @@ internal static System.Drawing.Bitmap B16x16_Pointer_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Quit { get { @@ -1091,7 +1091,7 @@ internal static System.Drawing.Bitmap B16x16_Quit { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Redo { get { @@ -1101,7 +1101,7 @@ internal static System.Drawing.Bitmap B16x16_Redo { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Right_Button { get { @@ -1111,7 +1111,7 @@ internal static System.Drawing.Bitmap B16x16_Right_Button { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Save { get { @@ -1121,7 +1121,7 @@ internal static System.Drawing.Bitmap B16x16_Save { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Save_As { get { @@ -1131,7 +1131,7 @@ internal static System.Drawing.Bitmap B16x16_Save_As { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Settings_Edit { get { @@ -1141,7 +1141,7 @@ internal static System.Drawing.Bitmap B16x16_Settings_Edit { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Signed_Type { get { @@ -1151,7 +1151,7 @@ internal static System.Drawing.Bitmap B16x16_Signed_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Table_Gear { get { @@ -1161,7 +1161,7 @@ internal static System.Drawing.Bitmap B16x16_Table_Gear { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Text_List_Bullets { get { @@ -1171,7 +1171,7 @@ internal static System.Drawing.Bitmap B16x16_Text_List_Bullets { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Text_Type { get { @@ -1181,7 +1181,7 @@ internal static System.Drawing.Bitmap B16x16_Text_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Textfield_Rename { get { @@ -1191,7 +1191,7 @@ internal static System.Drawing.Bitmap B16x16_Textfield_Rename { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Tree_Collapse { get { @@ -1201,7 +1201,7 @@ internal static System.Drawing.Bitmap B16x16_Tree_Collapse { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Tree_Expand { get { @@ -1211,7 +1211,7 @@ internal static System.Drawing.Bitmap B16x16_Tree_Expand { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Undo { get { @@ -1221,7 +1221,7 @@ internal static System.Drawing.Bitmap B16x16_Undo { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Unsigned_Type { get { @@ -1231,7 +1231,7 @@ internal static System.Drawing.Bitmap B16x16_Unsigned_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Vector_Type { get { @@ -1241,7 +1241,7 @@ internal static System.Drawing.Bitmap B16x16_Vector_Type { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B16x16_Warning { get { @@ -1251,7 +1251,7 @@ internal static System.Drawing.Bitmap B16x16_Warning { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B32x32_3D_Glasses { get { @@ -1261,7 +1261,7 @@ internal static System.Drawing.Bitmap B32x32_3D_Glasses { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B32x32_Canvas_Size { get { @@ -1271,7 +1271,7 @@ internal static System.Drawing.Bitmap B32x32_Canvas_Size { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B32x32_Cogs { get { @@ -1281,7 +1281,7 @@ internal static System.Drawing.Bitmap B32x32_Cogs { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B32x32_Eye { get { @@ -1291,7 +1291,7 @@ internal static System.Drawing.Bitmap B32x32_Eye { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B32x32_Magnifier { get { @@ -1301,7 +1301,7 @@ internal static System.Drawing.Bitmap B32x32_Magnifier { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B32x32_Page_Code { get { @@ -1311,7 +1311,7 @@ internal static System.Drawing.Bitmap B32x32_Page_Code { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. + /// Looks up a localized resource of type System.Drawing.Bitmap. /// internal static System.Drawing.Bitmap B32x32_Plugin { get { @@ -1321,8 +1321,8 @@ internal static System.Drawing.Bitmap B32x32_Plugin { } /// - /// Sucht eine lokalisierte Zeichenfolge, die 2018/01/18 10:06:36 - /// ähnelt. + /// Looks up a localized string similar to 2019/04/25 09:15:56 + ///. /// internal static string BuildDate { get { @@ -1331,7 +1331,27 @@ internal static string BuildDate { } /// - /// Sucht eine lokalisierte Ressource vom Typ System.Drawing.Icon ähnlich wie (Symbol). + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap compare16x16 { + get { + object obj = ResourceManager.GetObject("compare16x16", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap compare32x32 { + get { + object obj = ResourceManager.GetObject("compare32x32", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Icon similar to (Icon). /// internal static System.Drawing.Icon ReClassNet { get { diff --git a/ReClass.NET/Properties/Resources.resx b/ReClass.NET/Properties/Resources.resx index ec7ad954..a0f3fdf6 100644 --- a/ReClass.NET/Properties/Resources.resx +++ b/ReClass.NET/Properties/Resources.resx @@ -118,388 +118,394 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\Images\B16x16_Tree_Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B32x32_Plugin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Control_Stop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Class_Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Class_Remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Table_Gear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Matrix_3x3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Pointer_Array.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Exchange_Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Enum_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Chart_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_VTable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_Insert_Bytes_4096.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_Hex_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_Insert_Bytes_X.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Plugin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_Add_Bytes_4096.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Settings_Edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Closed_Icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_Class_Pointer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Double_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Text_List_Bullets.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Pdb.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Page_Code_Csharp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_UText.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Category.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B32x32_Cogs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Interface_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_UInt_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Matrix_3x4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Folder_Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_UInt_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Button_Text.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Int_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_UText_Pointer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Insert_Bytes_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Insert_Bytes_256.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_UInt_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Text_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Bits.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Pointer_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Double_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Add_Bytes_1024.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Add_Bytes_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Matrix_4x4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Array_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Insert_Bytes_2048.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Custom_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Closed_Icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_UInt_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Add_Bytes_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Page_Code.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Arrow_Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_UText.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Table_Gear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Matrix_3x3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Settings_Edit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Gear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Float.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Page_Code_Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Text_List_Bullets.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Page_Paste.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Canvas_Size.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Hex_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Add_Bytes_4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Tree_Expand.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Textfield_Rename.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Int_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Chart_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B32x32_Magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Button_Vector_4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Button_UInt_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Button_Function.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Color_Wheel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B32x32_3D_Glasses.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Folder.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Tree_Collapse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Array_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\Images\B32x32_Page_Code.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Function_Pointer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Pdb.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Gear.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Insert_Bytes_2048.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Control_Pause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Page_Copy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Array.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Class_Remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Add_Bytes_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Control_Play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Drive_Go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Array.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Int_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Class_Instance.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Camera.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Information.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B32x32_Eye.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Warning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Add_Bytes_2048.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Quit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Left_Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Int_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B32x32_Plugin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Matrix_4x4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Vector_3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Camera.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Insert_Bytes_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Insert_Bytes_4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Eye.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Arrow_Refresh.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Button_Bool.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Control_Stop.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Drop_Down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Class_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Function_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B32x32_Cogs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Right_Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Float_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Control_Play.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Drive_Go.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Accept.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Add_Bytes_2048.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Hex_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Right_Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Matrix_3x4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_UInt_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Class_Instance.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Textfield_Rename.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Float_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Magnifier_Remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Page_Paste.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Button_UText_Pointer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Unsigned_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Add_Bytes_X.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B32x32_Magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_Text_Pointer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Vector_3.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Add_Bytes_256.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Signed_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_VTable.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Function_Pointer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Hex_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Page_Code_Cpp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Save_As.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Matrix_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Vector_4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Class_Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Open_Icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Left_Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Icon\ReClassNet.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\BuildDate.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 + + ..\Resources\Images\B16x16_Button_Text_Pointer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Add_Bytes_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Insert_Bytes_4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Add_Bytes_256.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Class_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_UInt_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Insert_Bytes_256.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Add_Bytes_1024.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Insert_Bytes_X.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Insert_Bytes_1024.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Error.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Page_Code_Cpp.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Vector_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Color_Wheel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Hex_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Category.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Signed_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Insert_Bytes_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Interface_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Page_White_Stack.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Warning.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Insert_Bytes_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Quit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Button_Vector_2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Accept.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Insert_Bytes_1024.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Help.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Save.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Function.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Icon\ReClassNet.ico;System.Drawing.Icon, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Vector_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Folder_Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Control_Pause.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Int_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Class_Pointer.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Exchange_Button.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Int_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Cogs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Page_Copy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Drop_Down.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Magnifier_Remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_UInt_8.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Magnifier.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Hex_64.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Page_White_Stack.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Button_Insert_Bytes_4096.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Button_Int_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Float.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Function_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\Images\B16x16_Button_Double.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Hex_32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Matrix_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Information.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Add_Bytes_4.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Tree_Expand.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Find_Access.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Save_As.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Find_Write.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Custom_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Eye.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Add_Bytes_4096.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B16x16_Magnifier_Arrow.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B32x32_3D_Glasses.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Bits.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B32x32_Eye.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Double.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Button_Add_Bytes_X.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Page_Code_Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Images\B32x32_Canvas_Size.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Canvas_Size.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\BuildDate.txt;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-16 - - ..\Resources\Images\B16x16_Redo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Hex_16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Undo.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Button_Pointer_Array.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Add.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Pointer_Type.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Images\B16x16_Button_Remove.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Images\B16x16_Plugin.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Cogs.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Button_Delete.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Find_Write.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\B16x16_Find_Access.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\compare16x16.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\Images\compare32x32.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/ReClass.NET/ReClass.NET.csproj b/ReClass.NET/ReClass.NET.csproj index 4a836bcc..304f00cb 100644 --- a/ReClass.NET/ReClass.NET.csproj +++ b/ReClass.NET/ReClass.NET.csproj @@ -1008,6 +1008,12 @@ + + + + + + powershell -Command "((Get-Date).ToUniversalTime()).ToString(\"yyyy\/MM\/dd HH:mm:ss\") | Out-File '$(ProjectDir)Resources\BuildDate.txt'" diff --git a/ReClass.NET/Resources/Images/compare16x16.png b/ReClass.NET/Resources/Images/compare16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..7cf96fd2bb69880acb932aa11d601d02adbfd220 GIT binary patch literal 253 zcmVhG7K@v~h)Wqx36O??H{fMP7T62oGp6D90?euC{``N82`t2D^$%+hfWiiD z@|Ru3|9RYcQEbBHf-k#@_w%^*I)V*{8I8>VT!Dzy0FZ6ye#K<~vRbeUU`|C3Fl+{( zs|6eI^UOqWXoCQ|Nj}_L*bG2d3papOH;Li*<#|LIfUFj70Gn|h!>_ZGh%x|KEu-1` zwQ%Rdym2Zp7;G@Q7qF=vqBBui~?L{lI;Lcl)*v*6!e5jLYg=LIl6|I13>XhC|i+Q8R0S$ zBMl%YE_{w4#R2%tL~#Im$_B+TE=LgS077QM9e_*a7$y;&KEb2M}u} zJOqB8nTS%hBWE#olYES{LdXFi{lu6#_#D7yoCo*(ud|cDY)V4_pP3jTKz9e2tzU~X z?$K+;Q-Q%at8e6@m=rS^Nl{D_2M|;LV^c#+E+EEivYJsKgGU`O@ Date: Thu, 25 Apr 2019 11:34:39 +0200 Subject: [PATCH 15/32] Almost nodes Compare Draw functions --- ReClass.NET/Nodes/BaseMatrixNode.cs | 92 ++++++++++++++++++++++++++- ReClass.NET/Nodes/BaseTextNode.cs | 44 ++++++++++++- ReClass.NET/Nodes/BaseTextPtrNode.cs | 46 +++++++++++++- ReClass.NET/Nodes/DoubleNode.cs | 2 +- ReClass.NET/Nodes/FloatNode.cs | 2 +- ReClass.NET/Nodes/Matrix3x3Node.cs | 40 +++++++++++- ReClass.NET/Nodes/Matrix3x4Node.cs | 46 +++++++++++++- ReClass.NET/Nodes/Matrix4x4Node.cs | 59 ++++++++++++++++- ReClass.NET/Nodes/UTF16TextNode.cs | 2 +- ReClass.NET/Nodes/UTF16TextPtrNode.cs | 2 +- ReClass.NET/Nodes/UTF32TextNode.cs | 2 +- ReClass.NET/Nodes/UTF32TextPtrNode.cs | 2 +- ReClass.NET/Nodes/UTF8TextNode.cs | 2 +- ReClass.NET/Nodes/UTF8TextPtrNode.cs | 2 +- ReClass.NET/Nodes/Vector2Node.cs | 13 +++- ReClass.NET/Nodes/Vector3Node.cs | 15 ++++- ReClass.NET/Nodes/Vector4Node.cs | 17 ++++- 17 files changed, 364 insertions(+), 24 deletions(-) diff --git a/ReClass.NET/Nodes/BaseMatrixNode.cs b/ReClass.NET/Nodes/BaseMatrixNode.cs index fd31d0ef..c153d120 100644 --- a/ReClass.NET/Nodes/BaseMatrixNode.cs +++ b/ReClass.NET/Nodes/BaseMatrixNode.cs @@ -61,7 +61,52 @@ protected Size DrawMatrixType(ViewInfo view, int x, int y, string type, DrawMatr return new Size(x - origX, y - origY + view.Font.Height); } - protected delegate void DrawVectorValues(ref int x, ref int y); + protected Size DrawMatrixTypeCompare(ViewInfo view, int x, int y, string type, DrawMatrixValues drawValues) + { + Contract.Requires(view != null); + Contract.Requires(type != null); + Contract.Requires(drawValues != null); + + if (IsHidden) + { + return DrawHidden(view, x, y); + } + + // DrawInvalidMemoryIndicator(view, y); + + var origX = x; + var origY = y; + + AddSelection(view, x, y, view.Font.Height); + + x += TextPadding; + + // x = AddIcon(view, x, y, Icons.Matrix, HotSpot.NoneId, HotSpotType.None); + + var tx = x; + + x = AddAddressOffset(view, x, y, true, false); + + x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, type) + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name); + x = AddOpenClose(view, x, y); + + x += view.Font.Width; + + // x = AddComment(view, x, y); + + // AddTypeDrop(view, y); + // AddDelete(view, y); + + if (levelsOpen[view.Level]) + { + drawValues(tx, ref x, ref y); + } + + return new Size(x - origX, y - origY + view.Font.Height); + } + + protected delegate void DrawVectorValues(ref int x, ref int y); protected Size DrawVectorType(ViewInfo view, int x, int y, string type, DrawVectorValues drawValues) { Contract.Requires(view != null); @@ -104,7 +149,50 @@ protected Size DrawVectorType(ViewInfo view, int x, int y, string type, DrawVect return new Size(x - origX, y - origY + view.Font.Height); } - public override int CalculateDrawnHeight(ViewInfo view) + protected Size DrawVectorTypeCompare(ViewInfo view, int x, int y, string type, DrawVectorValues drawValues) + { + Contract.Requires(view != null); + Contract.Requires(type != null); + Contract.Requires(drawValues != null); + + if (IsHidden) + { + return DrawHidden(view, x, y); + } + + // DrawInvalidMemoryIndicator(view, y); + + var origX = x; + var origY = y; + + AddSelection(view, x, y, view.Font.Height); + + x += TextPadding; + + // x = AddIcon(view, x, y, Icons.Vector, HotSpot.NoneId, HotSpotType.None); + x = AddAddressOffset(view, x, y, true, false); + + x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, type) + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name); + x = AddOpenClose(view, x, y); + + if (levelsOpen[view.Level]) + { + drawValues(ref x, ref y); + } + + x += view.Font.Width; + + // x = AddComment(view, x, y); + + // AddTypeDrop(view, y); + // AddDelete(view, y); + + return new Size(x - origX, y - origY + view.Font.Height); + } + + + public override int CalculateDrawnHeight(ViewInfo view) { if (IsHidden) { diff --git a/ReClass.NET/Nodes/BaseTextNode.cs b/ReClass.NET/Nodes/BaseTextNode.cs index 0e5f5f82..1eadd95a 100644 --- a/ReClass.NET/Nodes/BaseTextNode.cs +++ b/ReClass.NET/Nodes/BaseTextNode.cs @@ -67,7 +67,49 @@ protected Size DrawText(ViewInfo view, int x, int y, string type) return new Size(x - origX, view.Font.Height); } - public override int CalculateDrawnHeight(ViewInfo view) + protected Size DrawTextCompare(ViewInfo view, int x, int y, string type) + { + Contract.Requires(view != null); + Contract.Requires(type != null); + + if (IsHidden) + { + return DrawHidden(view, x, y); + } + + var length = MemorySize / CharacterSize; + var text = ReadValueFromMemory(view.Memory); + + // DrawInvalidMemoryIndicator(view, y); + + var origX = x; + + AddSelection(view, x, y, view.Font.Height); + + x += TextPadding; + // x = AddIcon(view, x, y, Icons.Text, HotSpot.NoneId, HotSpotType.None); + x = AddAddressOffset(view, x, y, true, false); + + x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, type) + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name); + x = AddText(view, x, y, view.Settings.IndexColor, HotSpot.NoneId, "["); + x = AddText(view, x, y, view.Settings.IndexColor, 0, length.ToString()); + x = AddText(view, x, y, view.Settings.IndexColor, HotSpot.NoneId, "]") + view.Font.Width; + + x = AddText(view, x, y, view.Settings.TextColor, HotSpot.NoneId, "= '"); + x = AddText(view, x, y, view.Settings.TextColor, 1, text.LimitLength(150)); + x = AddText(view, x, y, view.Settings.TextColor, HotSpot.NoneId, "'") + view.Font.Width; + + // x = AddComment(view, x, y); + + // AddTypeDrop(view, y); + // AddDelete(view, y); + + return new Size(x - origX, view.Font.Height); + } + + + public override int CalculateDrawnHeight(ViewInfo view) { return IsHidden ? HiddenHeight : view.Font.Height; } diff --git a/ReClass.NET/Nodes/BaseTextPtrNode.cs b/ReClass.NET/Nodes/BaseTextPtrNode.cs index 2e61bac9..fa6df966 100644 --- a/ReClass.NET/Nodes/BaseTextPtrNode.cs +++ b/ReClass.NET/Nodes/BaseTextPtrNode.cs @@ -57,7 +57,51 @@ public Size DrawText(ViewInfo view, int x, int y, string type) return new Size(x - origX, view.Font.Height); } - public override int CalculateDrawnHeight(ViewInfo view) + /// Draws this node. + /// The view information. + /// The x coordinate. + /// The y coordinate. + /// The name of the type. + /// The pixel size the node occupies. + public Size DrawTextCompare(ViewInfo view, int x, int y, string type) + { + Contract.Requires(view != null); + Contract.Requires(type != null); + + if (IsHidden) + { + return DrawHidden(view, x, y); + } + + var ptr = view.Memory.ReadIntPtr(Offset); + var text = view.Memory.Process.ReadRemoteString(Encoding, ptr, 64); + + // DrawInvalidMemoryIndicator(view, y); + + var origX = x; + + AddSelection(view, x, y, view.Font.Height); + + x += TextPadding; + // x = AddIcon(view, x, y, Icons.Text, HotSpot.NoneId, HotSpotType.None); + x = AddAddressOffset(view, x, y, true, false); + + x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, type) + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width; + + x = AddText(view, x, y, view.Settings.TextColor, HotSpot.NoneId, "= '"); + x = AddText(view, x, y, view.Settings.TextColor, HotSpot.NoneId, text); + x = AddText(view, x, y, view.Settings.TextColor, HotSpot.NoneId, "'") + view.Font.Width; + + // x = AddComment(view, x, y); + + // AddTypeDrop(view, y); + // AddDelete(view, y); + + return new Size(x - origX, view.Font.Height); + } + + public override int CalculateDrawnHeight(ViewInfo view) { return IsHidden ? HiddenHeight : view.Font.Height; } diff --git a/ReClass.NET/Nodes/DoubleNode.cs b/ReClass.NET/Nodes/DoubleNode.cs index 3ef8342d..0fe5c474 100644 --- a/ReClass.NET/Nodes/DoubleNode.cs +++ b/ReClass.NET/Nodes/DoubleNode.cs @@ -15,7 +15,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawNumericCompare(view, x, y, Icons.Double, "Double", ReadValueFromMemory(view.Memory).ToString("0.000"), null); } public override void Update(HotSpot spot) diff --git a/ReClass.NET/Nodes/FloatNode.cs b/ReClass.NET/Nodes/FloatNode.cs index 0daa779d..aa245307 100644 --- a/ReClass.NET/Nodes/FloatNode.cs +++ b/ReClass.NET/Nodes/FloatNode.cs @@ -15,7 +15,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawNumericCompare(view, x, y, Icons.Float, "Float", ReadValueFromMemory(view.Memory).ToString("0.000"), null); } public override void Update(HotSpot spot) diff --git a/ReClass.NET/Nodes/Matrix3x3Node.cs b/ReClass.NET/Nodes/Matrix3x3Node.cs index f8ec7d68..6d262e46 100644 --- a/ReClass.NET/Nodes/Matrix3x3Node.cs +++ b/ReClass.NET/Nodes/Matrix3x3Node.cs @@ -80,9 +80,45 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - public override Size DrawCompare(ViewInfo view, int x, int y) + public override Size DrawCompare(ViewInfo view, int x2, int y2) { - return Draw(view, x, y); + return DrawMatrixTypeCompare(view, x2, y2, "Matrix (3x3)", (int defaultX, ref int maxX, ref int y) => + { + var value = view.Memory.ReadObject(Offset); + + y += view.Font.Height; + var x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 0, $"{value._11,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 1, $"{value._12,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 2, $"{value._13,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + + y += view.Font.Height; + x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 3, $"{value._21,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 4, $"{value._22,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 5, $"{value._23,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + + y += view.Font.Height; + x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 6, $"{value._31,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 7, $"{value._32,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 8, $"{value._33,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + }); } protected override int CalculateValuesHeight(ViewInfo view) diff --git a/ReClass.NET/Nodes/Matrix3x4Node.cs b/ReClass.NET/Nodes/Matrix3x4Node.cs index 093e31a5..5c005767 100644 --- a/ReClass.NET/Nodes/Matrix3x4Node.cs +++ b/ReClass.NET/Nodes/Matrix3x4Node.cs @@ -92,9 +92,51 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - public override Size DrawCompare(ViewInfo view, int x, int y) + public override Size DrawCompare(ViewInfo view, int x2, int y2) { - return Draw(view, x, y); + return DrawMatrixTypeCompare(view, x2, y2, "Matrix (3x4)", (int defaultX, ref int maxX, ref int y) => + { + var value = view.Memory.ReadObject(Offset); + + y += view.Font.Height; + var x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 0, $"{value._11,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 1, $"{value._12,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 2, $"{value._13,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 3, $"{value._14,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + + y += view.Font.Height; + x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 4, $"{value._21,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 5, $"{value._22,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 6, $"{value._23,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 7, $"{value._24,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + + y += view.Font.Height; + x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 8, $"{value._31,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 9, $"{value._32,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 10, $"{value._33,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 11, $"{value._34,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + }); } protected override int CalculateValuesHeight(ViewInfo view) diff --git a/ReClass.NET/Nodes/Matrix4x4Node.cs b/ReClass.NET/Nodes/Matrix4x4Node.cs index 374731e2..15f43525 100644 --- a/ReClass.NET/Nodes/Matrix4x4Node.cs +++ b/ReClass.NET/Nodes/Matrix4x4Node.cs @@ -113,9 +113,64 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - public override Size DrawCompare(ViewInfo view, int x, int y) + public override Size DrawCompare(ViewInfo view, int x2, int y2) { - return Draw(view, x, y); + return DrawMatrixTypeCompare(view, x2, y2, "Matrix (4x4)", (int defaultX, ref int maxX, ref int y) => + { + var value = view.Memory.ReadObject(Offset); + + y += view.Font.Height; + var x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 0, $"{value._11,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 1, $"{value._12,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 2, $"{value._13,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 3, $"{value._14,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + + y += view.Font.Height; + x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 4, $"{value._21,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 5, $"{value._22,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 6, $"{value._23,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 7, $"{value._24,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + + y += view.Font.Height; + x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 8, $"{value._31,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 9, $"{value._32,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 10, $"{value._33,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 11, $"{value._34,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + + y += view.Font.Height; + x = defaultX; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + x = AddText(view, x, y, view.Settings.ValueColor, 12, $"{value._41,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 13, $"{value._42,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 14, $"{value._43,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 15, $"{value._44,14:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "|"); + maxX = Math.Max(x, maxX); + }); } protected override int CalculateValuesHeight(ViewInfo view) diff --git a/ReClass.NET/Nodes/UTF16TextNode.cs b/ReClass.NET/Nodes/UTF16TextNode.cs index 0b99c32c..536d1e43 100644 --- a/ReClass.NET/Nodes/UTF16TextNode.cs +++ b/ReClass.NET/Nodes/UTF16TextNode.cs @@ -17,7 +17,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawTextCompare(view, x, y, "Text16"); } } } diff --git a/ReClass.NET/Nodes/UTF16TextPtrNode.cs b/ReClass.NET/Nodes/UTF16TextPtrNode.cs index dc56f89e..0d097695 100644 --- a/ReClass.NET/Nodes/UTF16TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF16TextPtrNode.cs @@ -17,7 +17,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawTextCompare(view, x, y, "Text16Ptr"); } } } diff --git a/ReClass.NET/Nodes/UTF32TextNode.cs b/ReClass.NET/Nodes/UTF32TextNode.cs index c1f3673d..353b1840 100644 --- a/ReClass.NET/Nodes/UTF32TextNode.cs +++ b/ReClass.NET/Nodes/UTF32TextNode.cs @@ -17,7 +17,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawTextCompare(view, x, y, "Text32"); } } } diff --git a/ReClass.NET/Nodes/UTF32TextPtrNode.cs b/ReClass.NET/Nodes/UTF32TextPtrNode.cs index 25b4db20..09892946 100644 --- a/ReClass.NET/Nodes/UTF32TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF32TextPtrNode.cs @@ -17,7 +17,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawTextCompare(view, x, y, "Text32Ptr"); } } } diff --git a/ReClass.NET/Nodes/UTF8TextNode.cs b/ReClass.NET/Nodes/UTF8TextNode.cs index 312f6f50..3e1911c8 100644 --- a/ReClass.NET/Nodes/UTF8TextNode.cs +++ b/ReClass.NET/Nodes/UTF8TextNode.cs @@ -17,7 +17,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawTextCompare(view, x, y, "Text8"); } } } diff --git a/ReClass.NET/Nodes/UTF8TextPtrNode.cs b/ReClass.NET/Nodes/UTF8TextPtrNode.cs index c610fd50..f89e7fdd 100644 --- a/ReClass.NET/Nodes/UTF8TextPtrNode.cs +++ b/ReClass.NET/Nodes/UTF8TextPtrNode.cs @@ -16,7 +16,7 @@ public override Size Draw(ViewInfo view, int x, int y) } public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawTextCompare(view, x, y, "Text8Ptr"); } } } diff --git a/ReClass.NET/Nodes/Vector2Node.cs b/ReClass.NET/Nodes/Vector2Node.cs index 00ba2d66..90eade57 100644 --- a/ReClass.NET/Nodes/Vector2Node.cs +++ b/ReClass.NET/Nodes/Vector2Node.cs @@ -38,9 +38,18 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - public override Size DrawCompare(ViewInfo view, int x, int y) + public override Size DrawCompare(ViewInfo view, int x2, int y2) { - return Draw(view, x, y); + return DrawVectorTypeCompare(view, x2, y2, "Vector2", (ref int x, ref int y) => + { + var value = view.Memory.ReadObject(Offset); + + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "("); + x = AddText(view, x, y, view.Settings.ValueColor, 0, $"{value.X:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 1, $"{value.Y:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ")"); + }); } protected override int CalculateValuesHeight(ViewInfo view) diff --git a/ReClass.NET/Nodes/Vector3Node.cs b/ReClass.NET/Nodes/Vector3Node.cs index 1cb7e64f..a8a53cba 100644 --- a/ReClass.NET/Nodes/Vector3Node.cs +++ b/ReClass.NET/Nodes/Vector3Node.cs @@ -42,9 +42,20 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - public override Size DrawCompare(ViewInfo view, int x, int y) + public override Size DrawCompare(ViewInfo view, int x2, int y2) { - return Draw(view, x, y); + return DrawVectorTypeCompare(view, x2, y2, "Vector3", (ref int x, ref int y) => + { + var value = view.Memory.ReadObject(Offset); + + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "("); + x = AddText(view, x, y, view.Settings.ValueColor, 0, $"{value.X:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 1, $"{value.Y:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 2, $"{value.Z:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ")"); + }); } protected override int CalculateValuesHeight(ViewInfo view) diff --git a/ReClass.NET/Nodes/Vector4Node.cs b/ReClass.NET/Nodes/Vector4Node.cs index e5f9de72..33b50e7a 100644 --- a/ReClass.NET/Nodes/Vector4Node.cs +++ b/ReClass.NET/Nodes/Vector4Node.cs @@ -46,9 +46,22 @@ public override Size Draw(ViewInfo view, int x2, int y2) }); } - public override Size DrawCompare(ViewInfo view, int x, int y) + public override Size DrawCompare(ViewInfo view, int x2, int y2) { - return Draw(view, x, y); + return DrawVectorTypeCompare(view, x2, y2, "Vector4", (ref int x, ref int y) => + { + var value = view.Memory.ReadObject(Offset); + + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "("); + x = AddText(view, x, y, view.Settings.ValueColor, 0, $"{value.X:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 1, $"{value.Y:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 2, $"{value.Z:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ","); + x = AddText(view, x, y, view.Settings.ValueColor, 3, $"{value.W:0.000}"); + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, ")"); + }); } protected override int CalculateValuesHeight(ViewInfo view) From eae9e909df5752882d5121a9a240314c99eb7fc3 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Thu, 25 Apr 2019 11:49:31 +0200 Subject: [PATCH 16/32] # --- ReClass.NET/Nodes/ClassPtrNode.cs | 55 ++++++++++++++++++++++++++++++- ReClass.NET/UI/ViewInfo.cs | 6 ++-- 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/ReClass.NET/Nodes/ClassPtrNode.cs b/ReClass.NET/Nodes/ClassPtrNode.cs index f5e637aa..3ac2d8a2 100644 --- a/ReClass.NET/Nodes/ClassPtrNode.cs +++ b/ReClass.NET/Nodes/ClassPtrNode.cs @@ -84,7 +84,60 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + if (IsHidden) + { + return DrawHidden(view, x, y); + } + + // DrawInvalidMemoryIndicator(view, y); + + var origX = x; + var origY = y; + + AddSelection(view, x, y, view.Font.Height); + + x = AddOpenClose(view, x, y); + // x = AddIcon(view, x, y, Icons.Pointer, -1, HotSpotType.None); + + var tx = x; + x = AddAddressOffset(view, x, y, true, false); + + x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, "Ptr") + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width; + // x = AddText(view, x, y, view.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>") + view.Font.Width; + // x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeType) + view.Font.Width; + + var ptr = view.Memory.ReadIntPtr(Offset); + + x = AddText(view, x, y, view.Settings.OffsetColor, HotSpot.NoneId, "->") + view.Font.Width; + x = AddText(view, x, y, view.Settings.ValueColor, 0, "0x" + ptr.ToString(Constants.AddressHexFormat)) + view.Font.Width; + + // x = AddComment(view, x, y); + + // AddTypeDrop(view, y); + // AddDelete(view, y); + + y += view.Font.Height; + + var size = new Size(x - origX, y - origY); + + if (levelsOpen[view.Level]) + { + memory.Size = InnerNode.MemorySize; + memory.Process = view.Memory.Process; + memory.Update(ptr); + + var v = view.Clone(); + v.Address = ptr; + v.Memory = memory; + + var innerSize = InnerNode.DrawCompare(v, tx, y); + + size.Width = Math.Max(size.Width, innerSize.Width + tx - origX); + size.Height += innerSize.Height; + } + + return size; } public override int CalculateDrawnHeight(ViewInfo view) diff --git a/ReClass.NET/UI/ViewInfo.cs b/ReClass.NET/UI/ViewInfo.cs index 3ee950a2..28b9ff0b 100644 --- a/ReClass.NET/UI/ViewInfo.cs +++ b/ReClass.NET/UI/ViewInfo.cs @@ -37,8 +37,10 @@ public ViewInfo Clone() Classes = Classes, Address = Address, Level = Level, - MultipleNodesSelected = MultipleNodesSelected - }; + MultipleNodesSelected = MultipleNodesSelected, + Tag = Tag, + Tag2 = Tag2 + }; } } } From 52bfc5c861348911b15f0dfea11c05437911912d Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Thu, 25 Apr 2019 12:24:32 +0200 Subject: [PATCH 17/32] # --- ReClass.NET/Forms/ClassCompare.Designer.cs | 67 ++++++---------------- ReClass.NET/Forms/ClassCompare.cs | 8 +++ ReClass.NET/Nodes/ClassNode.cs | 30 ++++++---- ReClass.NET/UI/MemoryCompareControl.cs | 7 ++- ReClass.NET/UI/ViewInfo.cs | 5 +- 5 files changed, 55 insertions(+), 62 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.Designer.cs b/ReClass.NET/Forms/ClassCompare.Designer.cs index a308802e..050e22e2 100644 --- a/ReClass.NET/Forms/ClassCompare.Designer.cs +++ b/ReClass.NET/Forms/ClassCompare.Designer.cs @@ -37,18 +37,15 @@ private void InitializeComponent() this.Box1 = new ReClassNET.UI.PlaceholderTextBox(); this.addAddressBox = new System.Windows.Forms.Button(); this.removeAddressBox = new System.Windows.Forms.Button(); - this.radioButton1 = new System.Windows.Forms.RadioButton(); - this.radioButton2 = new System.Windows.Forms.RadioButton(); this.groupBox2 = new System.Windows.Forms.GroupBox(); this.timer1 = new System.Windows.Forms.Timer(this.components); this.LayoutPanel = new ReClassNET.UI.ScrollableSplitTable(); - this.groupBox1 = new System.Windows.Forms.GroupBox(); this.groupBox3 = new System.Windows.Forms.GroupBox(); + this.PointerCheck = new System.Windows.Forms.CheckBox(); this.ViewTypeBox = new System.Windows.Forms.ComboBox(); ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); this.addressPanel.SuspendLayout(); this.groupBox2.SuspendLayout(); - this.groupBox1.SuspendLayout(); this.groupBox3.SuspendLayout(); this.SuspendLayout(); // @@ -136,29 +133,6 @@ private void InitializeComponent() this.removeAddressBox.UseVisualStyleBackColor = true; this.removeAddressBox.Click += new System.EventHandler(this.RemoveAddressBox_Click); // - // radioButton1 - // - this.radioButton1.AutoSize = true; - this.radioButton1.Checked = true; - this.radioButton1.Location = new System.Drawing.Point(7, 17); - this.radioButton1.Name = "radioButton1"; - this.radioButton1.Size = new System.Drawing.Size(112, 17); - this.radioButton1.TabIndex = 3; - this.radioButton1.TabStop = true; - this.radioButton1.Text = "Match Class Items"; - this.radioButton1.UseVisualStyleBackColor = true; - // - // radioButton2 - // - this.radioButton2.AutoSize = true; - this.radioButton2.Enabled = false; - this.radioButton2.Location = new System.Drawing.Point(133, 17); - this.radioButton2.Name = "radioButton2"; - this.radioButton2.Size = new System.Drawing.Size(109, 17); - this.radioButton2.TabIndex = 4; - this.radioButton2.Text = "Memory Compare"; - this.radioButton2.UseVisualStyleBackColor = true; - // // groupBox2 // this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) @@ -190,31 +164,30 @@ private void InitializeComponent() this.LayoutPanel.TabIndex = 6; this.LayoutPanel.Scroll += new System.Windows.Forms.ScrollEventHandler(this.tableLayoutPanel1_Scroll); // - // groupBox1 - // - this.groupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.groupBox1.Controls.Add(this.radioButton1); - this.groupBox1.Controls.Add(this.radioButton2); - this.groupBox1.Location = new System.Drawing.Point(264, 49); - this.groupBox1.Name = "groupBox1"; - this.groupBox1.Size = new System.Drawing.Size(248, 44); - this.groupBox1.TabIndex = 7; - this.groupBox1.TabStop = false; - this.groupBox1.Text = "Memory Scane Type"; - // // groupBox3 // this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) | System.Windows.Forms.AnchorStyles.Right))); + this.groupBox3.Controls.Add(this.PointerCheck); this.groupBox3.Controls.Add(this.ViewTypeBox); - this.groupBox3.Location = new System.Drawing.Point(518, 49); + this.groupBox3.Location = new System.Drawing.Point(425, 49); this.groupBox3.Name = "groupBox3"; - this.groupBox3.Size = new System.Drawing.Size(177, 44); + this.groupBox3.Size = new System.Drawing.Size(270, 44); this.groupBox3.TabIndex = 8; this.groupBox3.TabStop = false; this.groupBox3.Text = "View Options"; // + // PointerCheck + // + this.PointerCheck.AutoSize = true; + this.PointerCheck.Location = new System.Drawing.Point(163, 18); + this.PointerCheck.Name = "PointerCheck"; + this.PointerCheck.Size = new System.Drawing.Size(103, 17); + this.PointerCheck.TabIndex = 2; + this.PointerCheck.Text = "Include Pointers"; + this.PointerCheck.UseVisualStyleBackColor = true; + this.PointerCheck.CheckedChanged += new System.EventHandler(this.PointerCheck_CheckedChanged); + // // ViewTypeBox // this.ViewTypeBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; @@ -225,7 +198,7 @@ private void InitializeComponent() "value not match"}); this.ViewTypeBox.Location = new System.Drawing.Point(6, 16); this.ViewTypeBox.Name = "ViewTypeBox"; - this.ViewTypeBox.Size = new System.Drawing.Size(168, 21); + this.ViewTypeBox.Size = new System.Drawing.Size(151, 21); this.ViewTypeBox.TabIndex = 1; this.ViewTypeBox.SelectedIndexChanged += new System.EventHandler(this.ViewTypeBox_SelectedIndexChanged); // @@ -235,7 +208,6 @@ private void InitializeComponent() this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(704, 450); this.Controls.Add(this.groupBox3); - this.Controls.Add(this.groupBox1); this.Controls.Add(this.LayoutPanel); this.Controls.Add(this.groupBox2); this.Controls.Add(this.addressPanel); @@ -250,9 +222,8 @@ private void InitializeComponent() this.addressPanel.PerformLayout(); this.groupBox2.ResumeLayout(false); this.groupBox2.PerformLayout(); - this.groupBox1.ResumeLayout(false); - this.groupBox1.PerformLayout(); this.groupBox3.ResumeLayout(false); + this.groupBox3.PerformLayout(); this.ResumeLayout(false); } @@ -264,15 +235,13 @@ private void InitializeComponent() private UI.PanelWithScorllBar addressPanel; private System.Windows.Forms.Button addAddressBox; private System.Windows.Forms.Button removeAddressBox; - private System.Windows.Forms.RadioButton radioButton1; - private System.Windows.Forms.RadioButton radioButton2; private System.Windows.Forms.GroupBox groupBox2; private System.Windows.Forms.Timer timer1; private UI.ScrollableSplitTable LayoutPanel; private UI.PlaceholderTextBox Box2; private UI.PlaceholderTextBox Box1; - private System.Windows.Forms.GroupBox groupBox1; private System.Windows.Forms.GroupBox groupBox3; private System.Windows.Forms.ComboBox ViewTypeBox; + private System.Windows.Forms.CheckBox PointerCheck; } } \ No newline at end of file diff --git a/ReClass.NET/Forms/ClassCompare.cs b/ReClass.NET/Forms/ClassCompare.cs index 962557f9..ef14003f 100644 --- a/ReClass.NET/Forms/ClassCompare.cs +++ b/ReClass.NET/Forms/ClassCompare.cs @@ -211,5 +211,13 @@ private void AddressBox_TextChanged(object sender, EventArgs e) try { newOffset = new IntPtr(Convert.ToInt32(ci.AddressBox.Text, 16)); } catch (Exception) { } ci.ViewBox.ClassOffset = newOffset; } + + private void PointerCheck_CheckedChanged(object sender, EventArgs e) + { + foreach (var item in CompareItems.Select(i => i.ViewBox)) + { + item.ComparePointer = PointerCheck.Checked; + } + } } } diff --git a/ReClass.NET/Nodes/ClassNode.cs b/ReClass.NET/Nodes/ClassNode.cs index ce5a135b..bb61ee18 100644 --- a/ReClass.NET/Nodes/ClassNode.cs +++ b/ReClass.NET/Nodes/ClassNode.cs @@ -198,21 +198,29 @@ public override Size DrawCompare(ViewInfo view, int x, int y) continue; } - if (otherViews != null && viewType != MemoryCompareControl.ViewTypes.NotMatter) + if (node is ClassPtrNode && !view.ComparePointer) { - if (viewType == MemoryCompareControl.ViewTypes.Matches) - { - byte[] toCheck = view.Memory.ReadBytes(node.Offset, node.MemorySize); - if (!otherViews.All(v => v.Memory.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) - continue; - } - else if (viewType == MemoryCompareControl.ViewTypes.Matches) + // Don't do anything + } + else + { + if (otherViews != null && viewType != MemoryCompareControl.ViewTypes.NotMatter) { - byte[] toCheck = view.Memory.ReadBytes(node.Offset, node.MemorySize); - if (!otherViews.Any(v => v.Memory.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) - continue; + if (viewType == MemoryCompareControl.ViewTypes.Matches) + { + byte[] toCheck = view.Memory.ReadBytes(node.Offset, node.MemorySize); + if (!otherViews.All(v => v.Memory.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) + continue; + } + else if (viewType == MemoryCompareControl.ViewTypes.NotMatches) + { + byte[] toCheck = view.Memory.ReadBytes(node.Offset, node.MemorySize); + if (!otherViews.Any(v => v.Memory.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) + continue; + } } } + // Draw the node if it is in the visible area. if (view.ClientArea.Contains(tx, y)) diff --git a/ReClass.NET/UI/MemoryCompareControl.cs b/ReClass.NET/UI/MemoryCompareControl.cs index 51b6705a..2c863149 100644 --- a/ReClass.NET/UI/MemoryCompareControl.cs +++ b/ReClass.NET/UI/MemoryCompareControl.cs @@ -87,6 +87,10 @@ public ClassNode ClassNode [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public object OtherMemCompareControls { get; set; } + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public bool ComparePointer { get; set; } + [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] public IntPtr ClassOffset; @@ -171,7 +175,8 @@ protected override void OnPaint(PaintEventArgs e) MultipleNodesSelected = selectedNodes.Count > 1, HotSpots = hotSpots, Tag = ViewType, - Tag2 = OtherMemCompareControls + Tag2 = OtherMemCompareControls, + ComparePointer = ComparePointer }; try diff --git a/ReClass.NET/UI/ViewInfo.cs b/ReClass.NET/UI/ViewInfo.cs index 28b9ff0b..2e37e3c7 100644 --- a/ReClass.NET/UI/ViewInfo.cs +++ b/ReClass.NET/UI/ViewInfo.cs @@ -21,6 +21,8 @@ public class ViewInfo public int Level { get; set; } public bool MultipleNodesSelected { get; set; } + + public bool ComparePointer { get; set; } public object Tag { get; set; } public object Tag2 { get; set; } @@ -39,7 +41,8 @@ public ViewInfo Clone() Level = Level, MultipleNodesSelected = MultipleNodesSelected, Tag = Tag, - Tag2 = Tag2 + Tag2 = Tag2, + ComparePointer = ComparePointer }; } } From 13ab17b7e8585f89dafd2fffaae10dc8875e3d95 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Thu, 25 Apr 2019 20:58:10 +0200 Subject: [PATCH 18/32] # --- ReClass.NET/Forms/ClassCompare.cs | 13 +++++++++++-- ReClass.NET/Nodes/BaseMatrixNode.cs | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.cs b/ReClass.NET/Forms/ClassCompare.cs index ef14003f..0ad866f8 100644 --- a/ReClass.NET/Forms/ClassCompare.cs +++ b/ReClass.NET/Forms/ClassCompare.cs @@ -94,6 +94,7 @@ private void AddAddressBox_Click(object sender, EventArgs e) // Get Some Info var lastItem = CompareItems.Last(); var newLoc = lastItem.AddressBox.Location; newLoc.X += lastItem.AddressBox.Size.Width + 6; + var klass = Classes.FirstOrDefault(c => c.Name == ClassBox.Text); // AddressBox var newBox = new PlaceholderTextBox @@ -101,7 +102,8 @@ private void AddAddressBox_Click(object sender, EventArgs e) Name = $"Box{CompareItems.Count + 1}", Location = newLoc, PlaceholderText = "Address", - Font = Box1.Font + Font = Box1.Font, + Text = klass.Offset.ToString("X2") }; newBox.TextChanged += AddressBox_TextChanged; @@ -178,11 +180,18 @@ private void tableLayoutPanel1_Scroll(object sender, ScrollEventArgs e) private void ClassBox_SelectedIndexChanged(object sender, EventArgs e) { + var klass = Classes.FirstOrDefault(c => c.Name == ClassBox.Text); + + foreach (var item in CompareItems.Select(i => i.AddressBox)) + { + if (string.IsNullOrWhiteSpace(item.Text)) + item.Text = klass.Offset.ToString("X2"); + } + foreach (var item in CompareItems) { // item.VerticalScroll.Visible = true; // item.HorizontalScroll.Visible = true; - var klass = Classes.FirstOrDefault(c => c.Name == ClassBox.Text); IntPtr newOffset = klass.Offset; try { newOffset = new IntPtr(Convert.ToInt32(item.AddressBox.Text, 16)); } catch (Exception) { } item.ViewBox.ClassNode = klass; diff --git a/ReClass.NET/Nodes/BaseMatrixNode.cs b/ReClass.NET/Nodes/BaseMatrixNode.cs index c153d120..b1525ffa 100644 --- a/ReClass.NET/Nodes/BaseMatrixNode.cs +++ b/ReClass.NET/Nodes/BaseMatrixNode.cs @@ -174,7 +174,7 @@ protected Size DrawVectorTypeCompare(ViewInfo view, int x, int y, string type, D x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, type) + view.Font.Width; x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name); - x = AddOpenClose(view, x, y); + // x = AddOpenClose(view, x, y); if (levelsOpen[view.Level]) { From e1d45daedc37359c898dca819f9dc2adfe7cc377 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Fri, 26 Apr 2019 05:54:16 +0200 Subject: [PATCH 19/32] Fix ViewOption in Class Compare --- ReClass.NET/Forms/ClassCompare.cs | 6 ++-- ReClass.NET/Nodes/BoolNode.cs | 29 ++++++++++++++++++- ReClass.NET/Nodes/ClassNode.cs | 7 +++-- ReClass.NET/Nodes/ClassPtrNode.cs | 17 ++++++++++- ReClass.NET/UI/MemoryCompareControl.cs | 18 ++++++------ .../UI/ScrollableSplitTable.Designer.cs | 5 +--- 6 files changed, 61 insertions(+), 21 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.cs b/ReClass.NET/Forms/ClassCompare.cs index 0ad866f8..baa5b907 100644 --- a/ReClass.NET/Forms/ClassCompare.cs +++ b/ReClass.NET/Forms/ClassCompare.cs @@ -160,10 +160,10 @@ private void timer1_Tick(object sender, EventArgs e) LayoutPanel.HorizontalScroll.LargeChange = CompareItems[0].ViewBox.HorizontalScroll.LargeChange; LayoutPanel.HorizontalScroll.Maximum = CompareItems[0].ViewBox.HorizontalScroll.Maximum; - var Other = CompareItems.Select(t => t.ViewBox).ToList(); - foreach (var item in LayoutPanel.Panel.Controls.OfType().ToArray()) + var Other = CompareItems.Select(t => t.ViewBox.Memory).ToList(); + foreach (var item in CompareItems.Select(i => i.ViewBox)) { - item.OtherMemCompareControls = Other; + item.OtherMemoryBuffer = Other; } } diff --git a/ReClass.NET/Nodes/BoolNode.cs b/ReClass.NET/Nodes/BoolNode.cs index e3bc2adb..4daa9a26 100644 --- a/ReClass.NET/Nodes/BoolNode.cs +++ b/ReClass.NET/Nodes/BoolNode.cs @@ -47,7 +47,34 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + if (IsHidden) + { + return DrawHidden(view, x, y); + } + + //DrawInvalidMemoryIndicator(view, y); + + var origX = x; + + AddSelection(view, x, y, view.Font.Height); + + x += TextPadding + Icons.Dimensions; + + x = AddAddressOffset(view, x, y, true, false); + + x = AddText(view, x, y, view.Settings.TypeColor, HotSpot.NoneId, "Bool") + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NameId, Name) + view.Font.Width; + x = AddText(view, x, y, view.Settings.NameColor, HotSpot.NoneId, "=") + view.Font.Width; + + var value = view.Memory.ReadUInt8(Offset); + x = AddText(view, x, y, view.Settings.ValueColor, 0, value == 0 ? "false" : "true") + view.Font.Width; + + // x = AddComment(view, x, y); + + // AddTypeDrop(view, y); + // AddDelete(view, y); + + return new Size(x - origX, view.Font.Height); } public override int CalculateDrawnHeight(ViewInfo view) diff --git a/ReClass.NET/Nodes/ClassNode.cs b/ReClass.NET/Nodes/ClassNode.cs index bb61ee18..d22bfc7d 100644 --- a/ReClass.NET/Nodes/ClassNode.cs +++ b/ReClass.NET/Nodes/ClassNode.cs @@ -161,7 +161,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { var viewType = (MemoryCompareControl.ViewTypes)view.Tag; - var otherViews = (List)view.Tag2; + var otherViews = (List)view.Tag2; AddSelection(view, 0, y, view.Font.Height); @@ -198,6 +198,7 @@ public override Size DrawCompare(ViewInfo view, int x, int y) continue; } + // Is Pointer and Don't compare if (node is ClassPtrNode && !view.ComparePointer) { // Don't do anything @@ -209,13 +210,13 @@ public override Size DrawCompare(ViewInfo view, int x, int y) if (viewType == MemoryCompareControl.ViewTypes.Matches) { byte[] toCheck = view.Memory.ReadBytes(node.Offset, node.MemorySize); - if (!otherViews.All(v => v.Memory.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) + if (!otherViews.All(M => M.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) continue; } else if (viewType == MemoryCompareControl.ViewTypes.NotMatches) { byte[] toCheck = view.Memory.ReadBytes(node.Offset, node.MemorySize); - if (!otherViews.Any(v => v.Memory.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) + if (otherViews.All(M => M.ReadBytes(node.Offset, node.MemorySize).SequenceEqual(toCheck))) continue; } } diff --git a/ReClass.NET/Nodes/ClassPtrNode.cs b/ReClass.NET/Nodes/ClassPtrNode.cs index 3ac2d8a2..6c59d1e3 100644 --- a/ReClass.NET/Nodes/ClassPtrNode.cs +++ b/ReClass.NET/Nodes/ClassPtrNode.cs @@ -1,6 +1,8 @@ using System; +using System.Collections.Generic; using System.Drawing; using System.Globalization; +using System.Linq; using ReClassNET.Extensions; using ReClassNET.Memory; using ReClassNET.UI; @@ -84,6 +86,8 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { + var viewType = (MemoryCompareControl.ViewTypes)view.Tag; + var otherViews = (List)view.Tag2; if (IsHidden) { return DrawHidden(view, x, y); @@ -107,7 +111,7 @@ public override Size DrawCompare(ViewInfo view, int x, int y) // x = AddText(view, x, y, view.Settings.ValueColor, HotSpot.NoneId, $"<{InnerNode.Name}>") + view.Font.Width; // x = AddIcon(view, x, y, Icons.Change, 4, HotSpotType.ChangeType) + view.Font.Width; - var ptr = view.Memory.ReadIntPtr(Offset); + IntPtr ptr = view.Memory.ReadIntPtr(Offset); x = AddText(view, x, y, view.Settings.OffsetColor, HotSpot.NoneId, "->") + view.Font.Width; x = AddText(view, x, y, view.Settings.ValueColor, 0, "0x" + ptr.ToString(Constants.AddressHexFormat)) + view.Font.Width; @@ -130,6 +134,17 @@ public override Size DrawCompare(ViewInfo view, int x, int y) var v = view.Clone(); v.Address = ptr; v.Memory = memory; + v.Tag = viewType; + v.Tag2 = otherViews.Select(M => // Update all other MemoryBuffer + { + var newMem = new MemoryBuffer(M); + IntPtr newPtr = M.ReadIntPtr(Offset); + newMem.Size = InnerNode.MemorySize; + newMem.Process = view.Memory.Process; + newMem.Update(newPtr); + + return newMem; + }).ToList(); var innerSize = InnerNode.DrawCompare(v, tx, y); diff --git a/ReClass.NET/UI/MemoryCompareControl.cs b/ReClass.NET/UI/MemoryCompareControl.cs index 2c863149..fbd3bf68 100644 --- a/ReClass.NET/UI/MemoryCompareControl.cs +++ b/ReClass.NET/UI/MemoryCompareControl.cs @@ -85,7 +85,7 @@ public ClassNode ClassNode [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public object OtherMemCompareControls { get; set; } + public List OtherMemoryBuffer { get; set; } [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] @@ -175,12 +175,12 @@ protected override void OnPaint(PaintEventArgs e) MultipleNodesSelected = selectedNodes.Count > 1, HotSpots = hotSpots, Tag = ViewType, - Tag2 = OtherMemCompareControls, + Tag2 = OtherMemoryBuffer, ComparePointer = ComparePointer }; - try - { + //try + //{ var drawnSize = ClassNode.DrawCompare(view, -HorizontalScroll.Value, -VerticalScroll.Value * font.Height); drawnSize.Width += 50; @@ -214,11 +214,11 @@ protected override void OnPaint(PaintEventArgs e) HorizontalScroll.Enabled = false; HorizontalScroll.Value = 0; } - } - catch (Exception ex) - { - Debug.Assert(false); - } + //} + //catch (Exception ex) + //{ + // Debug.Assert(false); + //} } private void OnSelectionChanged() diff --git a/ReClass.NET/UI/ScrollableSplitTable.Designer.cs b/ReClass.NET/UI/ScrollableSplitTable.Designer.cs index b13b6cab..d9b63615 100644 --- a/ReClass.NET/UI/ScrollableSplitTable.Designer.cs +++ b/ReClass.NET/UI/ScrollableSplitTable.Designer.cs @@ -34,11 +34,9 @@ private void InitializeComponent() // PanelControl // this.PanelControl.AutoScroll = true; - this.PanelControl.AutoSize = true; - this.PanelControl.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.PanelControl.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; this.PanelControl.ColumnCount = 1; - this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 484F)); + this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 485F)); this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.PanelControl.Dock = System.Windows.Forms.DockStyle.Fill; this.PanelControl.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddColumns; @@ -58,7 +56,6 @@ private void InitializeComponent() this.Name = "ScrollableSplitTable"; this.Size = new System.Drawing.Size(482, 287); this.ResumeLayout(false); - this.PerformLayout(); } From cee8b65b462c9d005ec3c576a25dd1d6ea173f3a Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Fri, 26 Apr 2019 06:08:00 +0200 Subject: [PATCH 20/32] # --- ReClass.NET/Forms/ClassCompare.cs | 1 - ReClass.NET/UI/ScrollableSplitTable.Designer.cs | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.cs b/ReClass.NET/Forms/ClassCompare.cs index baa5b907..28b3b20d 100644 --- a/ReClass.NET/Forms/ClassCompare.cs +++ b/ReClass.NET/Forms/ClassCompare.cs @@ -102,7 +102,6 @@ private void AddAddressBox_Click(object sender, EventArgs e) Name = $"Box{CompareItems.Count + 1}", Location = newLoc, PlaceholderText = "Address", - Font = Box1.Font, Text = klass.Offset.ToString("X2") }; newBox.TextChanged += AddressBox_TextChanged; diff --git a/ReClass.NET/UI/ScrollableSplitTable.Designer.cs b/ReClass.NET/UI/ScrollableSplitTable.Designer.cs index d9b63615..458c3b24 100644 --- a/ReClass.NET/UI/ScrollableSplitTable.Designer.cs +++ b/ReClass.NET/UI/ScrollableSplitTable.Designer.cs @@ -34,9 +34,9 @@ private void InitializeComponent() // PanelControl // this.PanelControl.AutoScroll = true; - this.PanelControl.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; + this.PanelControl.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset; this.PanelControl.ColumnCount = 1; - this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 485F)); + this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 490F)); this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.PanelControl.Dock = System.Windows.Forms.DockStyle.Fill; this.PanelControl.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddColumns; From f6ded1dbb385f95af0a287edcdeb9d700a1eae28 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Fri, 26 Apr 2019 06:09:19 +0200 Subject: [PATCH 21/32] # --- ReClass.NET/UI/MemoryCompareControl.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ReClass.NET/UI/MemoryCompareControl.cs b/ReClass.NET/UI/MemoryCompareControl.cs index fbd3bf68..8a6cccc5 100644 --- a/ReClass.NET/UI/MemoryCompareControl.cs +++ b/ReClass.NET/UI/MemoryCompareControl.cs @@ -179,8 +179,8 @@ protected override void OnPaint(PaintEventArgs e) ComparePointer = ComparePointer }; - //try - //{ + try + { var drawnSize = ClassNode.DrawCompare(view, -HorizontalScroll.Value, -VerticalScroll.Value * font.Height); drawnSize.Width += 50; @@ -214,11 +214,11 @@ protected override void OnPaint(PaintEventArgs e) HorizontalScroll.Enabled = false; HorizontalScroll.Value = 0; } - //} - //catch (Exception ex) - //{ - // Debug.Assert(false); - //} + } + catch (Exception ex) + { + Debug.Assert(false); + } } private void OnSelectionChanged() From a3fb4003f1cec105de4b6a83fb3295b16a656fa1 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Fri, 26 Apr 2019 07:00:10 +0200 Subject: [PATCH 22/32] Add showhex in class compare Some Fix --- ReClass.NET/Forms/ClassCompare.Designer.cs | 37 ++++++++-- ReClass.NET/Forms/ClassCompare.cs | 17 ++++- ReClass.NET/Nodes/BaseHexNode.cs | 68 ++++++++++++++++++- ReClass.NET/Nodes/ClassNode.cs | 9 +-- ReClass.NET/Nodes/Hex16Node.cs | 2 +- ReClass.NET/Nodes/Hex32Node.cs | 2 +- ReClass.NET/Nodes/Hex64Node.cs | 2 +- ReClass.NET/Nodes/Hex8Node.cs | 2 +- ReClass.NET/ReClass.NET.csproj | 1 + ReClass.NET/UI/CompareOptions.cs | 14 ++++ ReClass.NET/UI/MemoryCompareControl.cs | 6 +- .../UI/ScrollableSplitTable.Designer.cs | 4 +- ReClass.NET/UI/ViewInfo.cs | 5 +- 13 files changed, 143 insertions(+), 26 deletions(-) create mode 100644 ReClass.NET/UI/CompareOptions.cs diff --git a/ReClass.NET/Forms/ClassCompare.Designer.cs b/ReClass.NET/Forms/ClassCompare.Designer.cs index 050e22e2..39986fd5 100644 --- a/ReClass.NET/Forms/ClassCompare.Designer.cs +++ b/ReClass.NET/Forms/ClassCompare.Designer.cs @@ -43,6 +43,8 @@ private void InitializeComponent() this.groupBox3 = new System.Windows.Forms.GroupBox(); this.PointerCheck = new System.Windows.Forms.CheckBox(); this.ViewTypeBox = new System.Windows.Forms.ComboBox(); + this.ShowHexBox = new System.Windows.Forms.CheckBox(); + this.checkBox2 = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); this.addressPanel.SuspendLayout(); this.groupBox2.SuspendLayout(); @@ -64,7 +66,7 @@ private void InitializeComponent() // this.ClassBox.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; this.ClassBox.FormattingEnabled = true; - this.ClassBox.Location = new System.Drawing.Point(51, 16); + this.ClassBox.Location = new System.Drawing.Point(46, 16); this.ClassBox.Name = "ClassBox"; this.ClassBox.Size = new System.Drawing.Size(134, 21); this.ClassBox.TabIndex = 0; @@ -115,7 +117,7 @@ private void InitializeComponent() // // addAddressBox // - this.addAddressBox.Location = new System.Drawing.Point(191, 16); + this.addAddressBox.Location = new System.Drawing.Point(182, 16); this.addAddressBox.Name = "addAddressBox"; this.addAddressBox.Size = new System.Drawing.Size(23, 21); this.addAddressBox.TabIndex = 1; @@ -125,7 +127,7 @@ private void InitializeComponent() // // removeAddressBox // - this.removeAddressBox.Location = new System.Drawing.Point(215, 16); + this.removeAddressBox.Location = new System.Drawing.Point(206, 16); this.removeAddressBox.Name = "removeAddressBox"; this.removeAddressBox.Size = new System.Drawing.Size(23, 21); this.removeAddressBox.TabIndex = 2; @@ -143,7 +145,7 @@ private void InitializeComponent() this.groupBox2.Controls.Add(this.addAddressBox); this.groupBox2.Location = new System.Drawing.Point(10, 49); this.groupBox2.Name = "groupBox2"; - this.groupBox2.Size = new System.Drawing.Size(248, 44); + this.groupBox2.Size = new System.Drawing.Size(232, 44); this.groupBox2.TabIndex = 0; this.groupBox2.TabStop = false; this.groupBox2.Text = "Compare Options"; @@ -202,11 +204,35 @@ private void InitializeComponent() this.ViewTypeBox.TabIndex = 1; this.ViewTypeBox.SelectedIndexChanged += new System.EventHandler(this.ViewTypeBox_SelectedIndexChanged); // + // ShowHexBox + // + this.ShowHexBox.AutoSize = true; + this.ShowHexBox.Location = new System.Drawing.Point(248, 54); + this.ShowHexBox.Name = "ShowHexBox"; + this.ShowHexBox.Size = new System.Drawing.Size(74, 17); + this.ShowHexBox.TabIndex = 9; + this.ShowHexBox.Text = "Show Hex"; + this.ShowHexBox.UseVisualStyleBackColor = true; + this.ShowHexBox.CheckedChanged += new System.EventHandler(this.ShowHexBox_CheckedChanged); + // + // checkBox2 + // + this.checkBox2.AutoSize = true; + this.checkBox2.Enabled = false; + this.checkBox2.Location = new System.Drawing.Point(248, 76); + this.checkBox2.Name = "checkBox2"; + this.checkBox2.Size = new System.Drawing.Size(82, 17); + this.checkBox2.TabIndex = 10; + this.checkBox2.Text = "Nothing Yet"; + this.checkBox2.UseVisualStyleBackColor = true; + // // ClassCompare // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(704, 450); + this.Controls.Add(this.checkBox2); + this.Controls.Add(this.ShowHexBox); this.Controls.Add(this.groupBox3); this.Controls.Add(this.LayoutPanel); this.Controls.Add(this.groupBox2); @@ -225,6 +251,7 @@ private void InitializeComponent() this.groupBox3.ResumeLayout(false); this.groupBox3.PerformLayout(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -243,5 +270,7 @@ private void InitializeComponent() private System.Windows.Forms.GroupBox groupBox3; private System.Windows.Forms.ComboBox ViewTypeBox; private System.Windows.Forms.CheckBox PointerCheck; + private System.Windows.Forms.CheckBox ShowHexBox; + private System.Windows.Forms.CheckBox checkBox2; } } \ No newline at end of file diff --git a/ReClass.NET/Forms/ClassCompare.cs b/ReClass.NET/Forms/ClassCompare.cs index 28b3b20d..c31e5f68 100644 --- a/ReClass.NET/Forms/ClassCompare.cs +++ b/ReClass.NET/Forms/ClassCompare.cs @@ -37,13 +37,15 @@ public ClassCompare(IEnumerable classes) { Name = "ViewBox1", Dock = DockStyle.Fill, - Memory = new MemoryBuffer() { Process = Program.RemoteProcess } + Memory = new MemoryBuffer() { Process = Program.RemoteProcess }, + ShowOptions = new CompareOptions() }; var ViewBox2 = new MemoryCompareControl() { Name = "ViewBox2", Dock = DockStyle.Fill, - Memory = new MemoryBuffer() { Process = Program.RemoteProcess } + Memory = new MemoryBuffer() { Process = Program.RemoteProcess }, + ShowOptions = new CompareOptions() }; // Events @@ -112,6 +114,7 @@ private void AddAddressBox_Click(object sender, EventArgs e) Name = $"ViewBox{CompareItems.Count}", Dock = DockStyle.Fill, Memory = new MemoryBuffer() { Process = Program.RemoteProcess }, + ShowOptions = new CompareOptions(), ClassNode = Classes.FirstOrDefault(c => c.Name == ClassBox.Text) }; viewBox.Leave += ViewBox_Leave; @@ -224,7 +227,15 @@ private void PointerCheck_CheckedChanged(object sender, EventArgs e) { foreach (var item in CompareItems.Select(i => i.ViewBox)) { - item.ComparePointer = PointerCheck.Checked; + item.ShowOptions.ComparePointer = PointerCheck.Checked; + } + } + + private void ShowHexBox_CheckedChanged(object sender, EventArgs e) + { + foreach (var item in CompareItems.Select(i => i.ViewBox)) + { + item.ShowOptions.ShowHex = ShowHexBox.Checked; } } } diff --git a/ReClass.NET/Nodes/BaseHexNode.cs b/ReClass.NET/Nodes/BaseHexNode.cs index 5c93f446..12eb5131 100644 --- a/ReClass.NET/Nodes/BaseHexNode.cs +++ b/ReClass.NET/Nodes/BaseHexNode.cs @@ -91,7 +91,73 @@ protected Size Draw(ViewInfo view, int x, int y, string text, int length) return new Size(x - origX, view.Font.Height); } - public override int CalculateDrawnHeight(ViewInfo view) + protected Size DrawCompare(ViewInfo view, int x, int y, string text, int length) + { + Contract.Requires(view != null); + + if (IsHidden) + { + return DrawHidden(view, x, y); + } + + // DrawInvalidMemoryIndicator(view, y); + + var origX = x; + + AddSelection(view, x, y, view.Font.Height); + + x += TextPadding; + x = AddAddressOffset(view, x, y, true, false); + + if (!string.IsNullOrEmpty(text)) + { + x = AddText(view, x, y, view.Settings.TextColor, HotSpot.NoneId, text); + } + + view.Memory.ReadBytes(Offset, buffer); + + var color = view.Settings.HexColor; + if (view.Settings.HighlightChangedValues) + { + var address = view.Address.Add(Offset); + + highlightTimer.RemoveWhere(kv => kv.Value.Value < CurrentHighlightTime); + + if (highlightTimer.TryGetValue(address, out var until)) + { + if (until.Value >= CurrentHighlightTime) + { + color = view.Settings.HighlightColor; + + if (view.Memory.HasChanged(Offset, MemorySize)) + { + until.Value = CurrentHighlightTime.Add(HightlightDuration); + } + } + } + else if (view.Memory.HasChanged(Offset, MemorySize)) + { + highlightTimer.Add(address, CurrentHighlightTime.Add(HightlightDuration)); + + color = view.Settings.HighlightColor; + } + } + + for (var i = 0; i < length; ++i) + { + x = AddText(view, x, y, color, i, $"{buffer[i]:X02}") + view.Font.Width; + } + + // x = AddComment(view, x, y); + + // AddTypeDrop(view, y); + // AddDelete(view, y); + + return new Size(x - origX, view.Font.Height); + } + + + public override int CalculateDrawnHeight(ViewInfo view) { return IsHidden ? HiddenHeight : view.Font.Height; } diff --git a/ReClass.NET/Nodes/ClassNode.cs b/ReClass.NET/Nodes/ClassNode.cs index d22bfc7d..e150a0cc 100644 --- a/ReClass.NET/Nodes/ClassNode.cs +++ b/ReClass.NET/Nodes/ClassNode.cs @@ -192,14 +192,11 @@ public override Size DrawCompare(ViewInfo view, int x, int y) nv.Level++; foreach (var node in Nodes) { - switch (node) - { - case BaseHexNode _: - continue; - } + if (node is BaseHexNode && !view.ShowOptions.ShowHex) + continue; // Is Pointer and Don't compare - if (node is ClassPtrNode && !view.ComparePointer) + if (node is ClassPtrNode && !view.ShowOptions.ComparePointer) { // Don't do anything } diff --git a/ReClass.NET/Nodes/Hex16Node.cs b/ReClass.NET/Nodes/Hex16Node.cs index 102dc78a..882fecad 100644 --- a/ReClass.NET/Nodes/Hex16Node.cs +++ b/ReClass.NET/Nodes/Hex16Node.cs @@ -32,7 +32,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawCompare(view, x, y, view.Settings.ShowNodeText ? view.Memory.ReadPrintableAsciiString(Offset, 2) + " " : null, 2); } public override void Update(HotSpot spot) diff --git a/ReClass.NET/Nodes/Hex32Node.cs b/ReClass.NET/Nodes/Hex32Node.cs index 8a69a6c4..fa858b04 100644 --- a/ReClass.NET/Nodes/Hex32Node.cs +++ b/ReClass.NET/Nodes/Hex32Node.cs @@ -42,7 +42,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawCompare(view, x, y, view.Settings.ShowNodeText ? view.Memory.ReadPrintableAsciiString(Offset, 4) + " " : null, 4); } public override void Update(HotSpot spot) diff --git a/ReClass.NET/Nodes/Hex64Node.cs b/ReClass.NET/Nodes/Hex64Node.cs index 4dd1adce..34eede2f 100644 --- a/ReClass.NET/Nodes/Hex64Node.cs +++ b/ReClass.NET/Nodes/Hex64Node.cs @@ -42,7 +42,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawCompare(view, x, y, view.Settings.ShowNodeText ? view.Memory.ReadPrintableAsciiString(Offset, 8) + " " : null, 8); } public override void Update(HotSpot spot) diff --git a/ReClass.NET/Nodes/Hex8Node.cs b/ReClass.NET/Nodes/Hex8Node.cs index b7c27c45..74ae8f18 100644 --- a/ReClass.NET/Nodes/Hex8Node.cs +++ b/ReClass.NET/Nodes/Hex8Node.cs @@ -22,7 +22,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - return Draw(view, x, y); + return DrawCompare(view, x, y, view.Settings.ShowNodeText ? view.Memory.ReadPrintableAsciiString(Offset, 1) + " " : null, 1); } public override void Update(HotSpot spot) diff --git a/ReClass.NET/ReClass.NET.csproj b/ReClass.NET/ReClass.NET.csproj index 304f00cb..fdee62e9 100644 --- a/ReClass.NET/ReClass.NET.csproj +++ b/ReClass.NET/ReClass.NET.csproj @@ -284,6 +284,7 @@ + diff --git a/ReClass.NET/UI/CompareOptions.cs b/ReClass.NET/UI/CompareOptions.cs new file mode 100644 index 00000000..63440b0c --- /dev/null +++ b/ReClass.NET/UI/CompareOptions.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace ReClassNET.UI +{ + public class CompareOptions + { + public bool ComparePointer { get; set; } + public bool ShowHex { get; set; } + } +} diff --git a/ReClass.NET/UI/MemoryCompareControl.cs b/ReClass.NET/UI/MemoryCompareControl.cs index 8a6cccc5..99433061 100644 --- a/ReClass.NET/UI/MemoryCompareControl.cs +++ b/ReClass.NET/UI/MemoryCompareControl.cs @@ -89,11 +89,11 @@ public ClassNode ClassNode [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public bool ComparePointer { get; set; } + public IntPtr ClassOffset; [Browsable(false)] [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] - public IntPtr ClassOffset; + public CompareOptions ShowOptions; public IEnumerable SelectedNodes => selectedNodes.Select(s => s.Node); public event EventHandler SelectionChanged; @@ -176,7 +176,7 @@ protected override void OnPaint(PaintEventArgs e) HotSpots = hotSpots, Tag = ViewType, Tag2 = OtherMemoryBuffer, - ComparePointer = ComparePointer + ShowOptions = ShowOptions }; try diff --git a/ReClass.NET/UI/ScrollableSplitTable.Designer.cs b/ReClass.NET/UI/ScrollableSplitTable.Designer.cs index 458c3b24..7eed956e 100644 --- a/ReClass.NET/UI/ScrollableSplitTable.Designer.cs +++ b/ReClass.NET/UI/ScrollableSplitTable.Designer.cs @@ -34,9 +34,9 @@ private void InitializeComponent() // PanelControl // this.PanelControl.AutoScroll = true; - this.PanelControl.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Inset; + this.PanelControl.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single; this.PanelControl.ColumnCount = 1; - this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 490F)); + this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 492F)); this.PanelControl.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F)); this.PanelControl.Dock = System.Windows.Forms.DockStyle.Fill; this.PanelControl.GrowStyle = System.Windows.Forms.TableLayoutPanelGrowStyle.AddColumns; diff --git a/ReClass.NET/UI/ViewInfo.cs b/ReClass.NET/UI/ViewInfo.cs index 2e37e3c7..a5fcb6e8 100644 --- a/ReClass.NET/UI/ViewInfo.cs +++ b/ReClass.NET/UI/ViewInfo.cs @@ -21,8 +21,7 @@ public class ViewInfo public int Level { get; set; } public bool MultipleNodesSelected { get; set; } - - public bool ComparePointer { get; set; } + public CompareOptions ShowOptions { get; set; } public object Tag { get; set; } public object Tag2 { get; set; } @@ -42,7 +41,7 @@ public ViewInfo Clone() MultipleNodesSelected = MultipleNodesSelected, Tag = Tag, Tag2 = Tag2, - ComparePointer = ComparePointer + ShowOptions = ShowOptions }; } } From f81e4dce8c301a985f165f6a692a6f42c99ea991 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Fri, 26 Apr 2019 07:07:58 +0200 Subject: [PATCH 23/32] # --- ReClass.NET/Forms/ClassCompare.Designer.cs | 34 ++++++++++++++++++++-- ReClass.NET/Forms/MainForm.cs | 4 +++ 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.Designer.cs b/ReClass.NET/Forms/ClassCompare.Designer.cs index 39986fd5..c3f2ff28 100644 --- a/ReClass.NET/Forms/ClassCompare.Designer.cs +++ b/ReClass.NET/Forms/ClassCompare.Designer.cs @@ -45,6 +45,8 @@ private void InitializeComponent() this.ViewTypeBox = new System.Windows.Forms.ComboBox(); this.ShowHexBox = new System.Windows.Forms.CheckBox(); this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.checkBox1 = new System.Windows.Forms.CheckBox(); + this.checkBox3 = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); this.addressPanel.SuspendLayout(); this.groupBox2.SuspendLayout(); @@ -172,7 +174,7 @@ private void InitializeComponent() | System.Windows.Forms.AnchorStyles.Right))); this.groupBox3.Controls.Add(this.PointerCheck); this.groupBox3.Controls.Add(this.ViewTypeBox); - this.groupBox3.Location = new System.Drawing.Point(425, 49); + this.groupBox3.Location = new System.Drawing.Point(246, 49); this.groupBox3.Name = "groupBox3"; this.groupBox3.Size = new System.Drawing.Size(270, 44); this.groupBox3.TabIndex = 8; @@ -207,7 +209,7 @@ private void InitializeComponent() // ShowHexBox // this.ShowHexBox.AutoSize = true; - this.ShowHexBox.Location = new System.Drawing.Point(248, 54); + this.ShowHexBox.Location = new System.Drawing.Point(522, 55); this.ShowHexBox.Name = "ShowHexBox"; this.ShowHexBox.Size = new System.Drawing.Size(74, 17); this.ShowHexBox.TabIndex = 9; @@ -219,18 +221,42 @@ private void InitializeComponent() // this.checkBox2.AutoSize = true; this.checkBox2.Enabled = false; - this.checkBox2.Location = new System.Drawing.Point(248, 76); + this.checkBox2.Location = new System.Drawing.Point(522, 76); this.checkBox2.Name = "checkBox2"; this.checkBox2.Size = new System.Drawing.Size(82, 17); this.checkBox2.TabIndex = 10; this.checkBox2.Text = "Nothing Yet"; this.checkBox2.UseVisualStyleBackColor = true; // + // checkBox1 + // + this.checkBox1.AutoSize = true; + this.checkBox1.Enabled = false; + this.checkBox1.Location = new System.Drawing.Point(613, 55); + this.checkBox1.Name = "checkBox1"; + this.checkBox1.Size = new System.Drawing.Size(82, 17); + this.checkBox1.TabIndex = 11; + this.checkBox1.Text = "Nothing Yet"; + this.checkBox1.UseVisualStyleBackColor = true; + // + // checkBox3 + // + this.checkBox3.AutoSize = true; + this.checkBox3.Enabled = false; + this.checkBox3.Location = new System.Drawing.Point(613, 76); + this.checkBox3.Name = "checkBox3"; + this.checkBox3.Size = new System.Drawing.Size(82, 17); + this.checkBox3.TabIndex = 12; + this.checkBox3.Text = "Nothing Yet"; + this.checkBox3.UseVisualStyleBackColor = true; + // // ClassCompare // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(704, 450); + this.Controls.Add(this.checkBox3); + this.Controls.Add(this.checkBox1); this.Controls.Add(this.checkBox2); this.Controls.Add(this.ShowHexBox); this.Controls.Add(this.groupBox3); @@ -272,5 +298,7 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox PointerCheck; private System.Windows.Forms.CheckBox ShowHexBox; private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox checkBox1; + private System.Windows.Forms.CheckBox checkBox3; } } \ No newline at end of file diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index df61d4fa..63bbd5ce 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -306,6 +306,10 @@ private void memoryViewerToolStripMenuItem_Click(object sender, EventArgs e) private void classCompareToolStripMenuItem_Click(object sender, EventArgs e) { + // DeSelect + foreach (var item in memoryViewControl.SelectedNodes) + item.ClearSelection(); + new ClassCompare(currentProject.Classes).Show(); } From d7f794a0dbf15f0370fb13e1b891c5298a9b9665 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Fri, 26 Apr 2019 21:54:54 +0200 Subject: [PATCH 24/32] # --- img/Class Compare.png | Bin 0 -> 20179 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 img/Class Compare.png diff --git a/img/Class Compare.png b/img/Class Compare.png new file mode 100644 index 0000000000000000000000000000000000000000..9d45848cd67644da758de085863f565f509ec59a GIT binary patch literal 20179 zcmZ_01yq#L*Dg*-NQy|OASK;MilmZ?bW2GN-3%$95&}wxbc5v3-6`E20}Mkm#K6oQ z{C(fO>;K*Vowa7MX21JA?>_sSv-fkJvtPbysw)xVQRAVZp%K1Smj8f;hS7zFhQ5i5 zjgoBYl(?e)Ja$&rcSA!X>UsF0|KcQ~K?!l(->NC#Y(1hT6(Y`^d4By*q@d?6>*4+x z;EGmUF`|qT5xAp7@>XsZuC~tZwg4wI(#Ox4QF6Qoxg5aR$JN&6vpZTD@rXD|O7u_a zYGwYQ%II$EXoV(xMf@0b__kP!xcaOXP2$W)4A~P6pwPT%fFI6eHxEeuk`s3p$Q(P{11`8 zo3H9%uN^gV^q!aZe%n!g)&DN=gYf5_S-UEjx4P_ea@iNyFTd5xPrQ7>_*|By>Kzx! zH*GT;VBm;}wP56UtU8lBu$Ue`Qm+rX zpgeH5B+)0*uq`93jtAl7)+KUBn&LGcJ1#j12}#`cMs$Fdcr)|EHKvSCkL{y3HFKxC zV@DB@sE=}l%aw|jqMkhJ6Q6)#j=F>7?Yq|8mESFEg|rgq7_4nq(pZIA`-TY6#ju#? zk>+itr+5JIoNH$`G>?*PYf=B z1@%op%x)B$$KFo*^)qQNYdjlRFnYjqj}bA?t9vq=%C@i41p?g<{hF*3BMJ+2&G~8) zFupY@=zFSY!n=Au{CvzCEEJA}?6jPdT<~lBJ$rmtql=dX^Ke1vw>IRN2`$Zm&v>&A z-)&1jI3uz@2!17DaJ&bVBVA6|BWMVeS#oMg4s2Y%_^|^3o^a?Q5GxI^B^O4?wmJQ~ zwT-~D*mhy(`#&2F5d~vr?QV9~rTx2gS-@>H_uzw}($Wi(X%gxg7zv zLG>(a86rPfQq+Cj;`22`oWbzSLJFeoXqqu|-2N0dq|!F<_>*$`gBPE0Md?>kldu3Sk$ z*4j%-;CZOV!>{@kZx^E_cUs)QnyXjOfS&OT)7qzV?Q^I3hrIEt$Pc$o>$TE61XI0l zL4$8WkCXjfpQ>kKbO*eAQ(kzE4_Kc)d5$>?9N1nOw|SEnQ%k#XphPU_zo;2weVfGX z7^EK)vZt3Zw$~j!VjKCaYzfxS>Bg?~J;?h}Nk-jqhUbWay!;FOyJ4(CE#dn+oz6d^ zxI|=(Al;8i8t~t-vSVL-8gK~AXJTH$psVlJo{2#SCD_dgS6WTyWt4@&wQ@Gl<^)en6HY(6Os?x%M47SuuRyOwO=||9Boz=4Z@w_H)?`jP z;Kc<(Z|MZ<8fsYRx61r{RdkFfHk5m^0CNE%JcIUrULJYk^2$)Vxu1`2*Ep3i&g(cohky zw~4V??7>g*4%zh5KS;wkKu|ueK512WtVDg>BBqX)%ag)bRU89r@NTx;DFxv22Z~+}u}!Tvr>xf3B2; zF~`Ly5>{!i*T0SrRK)%07bV5x|*$%UV+d zllsui%{Cv+ZISLv3DI<7Y>Dd3aux-`jCKQ^3k=uR#;{crR$YK|vr zX>{3&B?v5)=CghX(Y=wE&uhjLW)qu!?0))mX3*6yP5optajJp+ez@giQaq-mJpo{o zwHZH5V=E-HxxJ*nopE!VF3cB!!%N)}-WI;q6cHsEyJ5IyV~hV|F=?aLd2MW+#^u6% zR`UzOd$ptt;fhe}3Gr?_*=&O|D0qCZL*9L+j(G^(y16_1?1x^0y< zy59q0dyBR@GXj>Me9U08_uIdZ*y#G$=9g{b)1h%#EV+|bN?jX88rPiWOT^hnzcpD7 z`vQB_1#Q%ErlhM!xqfN<+`wnJZ2x(cm8FKwwbHTRIuN3USh1BW_w9meaNc*d10Hg! zvTlpIvth;EeX}{BXoE0(D?pBLF0L7W)TBR+x#D6u*y3l~w)Ne06@jGaujBOjE*7xf zIemSG_!!>#u~9-&e=$1v!~5o}vKlu^=QC0Sq`SSpJa=-6O3qvh<`4=1oy=PLYD*AgBi{_9AVK*P-DJtV2-))5|0ThVSWDHj}TV%%L_ z&fuYmL+9K=jPh;#p>ICrg$U^rFjWv+EH%f7r}^X(-*1XqW|Qc@(a#8&VYtn50$nxO z$7lEL7w3Ui`<*0@9eIE9A|U0@h_S@FV81lZx^OzMOm}fuaw)}ktargW)hEPoDSH|O z#SCAQYM*3N0LqJTmPwx)Uj6#C`OWKz-4kzDBST5uxJU}p4k4GcR%ewfMl<~Em}AX<{+ug|25HaaGdj~UZPY>L1G^M?pCB5?>5#G943h;S3j&%k53O*0 zU~~)3UvD&S;eTN+_{MXqb;KV$fQI)JD3>^^r_2u8@u(i!Zah=hV>W5$}EKvCGmguyZfBAV2Vu zJ=o6CWP$p!cjC#at%mO8>6%;e{_>b0`snwc7ipP z!9-dCm&jTFj^-%M|MVS04m+^J+W?U8ENPIVyVs`hQ&!Di3R2y$R|9Ou9O=&e(n^g` zU_JBjiUbvgIlM}A<$1_}CWc^_6NrZB{ww_GPV28P;9O_)#o2jqFxVw{No@)X>?@EJ zXmgbo*bNQ85~KiMXf~5LvqgjHVVAdtyc)dX7y;vJXq#-ZoeN2wZ4L zoO6UP-faSIp!QD6$Vltzx0rUbWtQE~*F&t=Y1fU$+B>3~Ih>o}neZpqH0{O--2qc> zjL2ctmUTxFF>$BS`lgrj&I5FR1J?xJT$-X*ZO)EoN&~-3vvI>p6;78^($^)cu(s^* z;nezdr+)6lt(oy3zFvQ|nMa6?oI9p&NE9QC^1J#el0$4M#q1XoN&2GZ*REvlB(}5g zZNX=+y4N+gl!OxGsKKr?hgr_r=UE)>0M3X*npgUTt#C8^0h!Mi0Jpv9dm+FlZJr#CLTkiSL-PV_uk8y3uW?) zAoFBO9ux#Lr>w$BR^%n^wyKr(8FOnC>dp(e>@UvRa935l4l3Vj{@|Ro5KOgE&`rx4 z5gcSIHj2BXo+yZ+k;r+y>hDBJZbw7f4eh&M#lO3Q5nm(jO>M+pFD7v`9}myI^vm3c zh;1WOpS1-`8@VGIGm*km7nw`QsYt38z;jsLjQAt0e)D>K{q}^d*(RPq_uPvGkcKhdF z)~)OYoJm)_0qbx0nIO}*JPdun+^gb71J}WPclgYFh^PKuFUq)dYExA5}6F4f|N$vII}1KIk^J&X~EK=~Qoz+Q&# zg5ih#i$VBsk8|(_b}k)yLGZo?!(!>_vg?9#^P+BG`Ylz=FOrzEmqcuYdkI0!p<%8U zmhYzT@uz$20m6bne`F~hQpBl>Y&^sUUP2{H+j@zy=pW*- zOV5ds=LnzC^UZkn0~hmA5~3ybckqK)Et&4G9L)aXF>V1!Q=>a7H%@i@c2~T+kR4kwSgr8PPZ2arEKz9r+_?*jWrt7WbU1fBt&r zwJxZeDhfs8ON0BwaQ$x-fdZ?deiYqMR*M7T6fY0zza#jWp3;G~nQR^9=3vgT*~h^0 z+|`KC@haQ7ojW)#L}pPtjtC9Ec8(Y%_mbr!5&)kr3wD!2Iv%3q-J~W7I_Xa$?f=(J$rz> z&EVI_$ex2|f8jqpGB#jgMottYm0J)IBWQ_?$vr{;1B>H!1h@E9@!P*ib|H1({KZl0 zre4Q+v&q5Qk$8Sh^k)4pa6sadl&HfubMzFpO>IvZ4; zkooU=o-P!7PBRn&!>g~mpr-@4%{i-W(97IPE%8+7JK~tiaW2%7&M2n%yM&d@>NIYg z>&S{Zl#B(6VpbiJ6+5H0=QaZ1OpYMO(NdoSLG&fE4g zYSw*K15jMR{DYg-Aa96Ur8@H^!lO!;{)B8q?(p~Eo*voEdotc8?6e#m+dvmKr!-vQ zE?_MxraB7yjLC@*jZ8>OCJKHjTdoq=<2^Z01aPok1Q!WbgmbzFw7Gh@vo*4mWNq}M zlkglf%s0c~R6pt5$a5m>E2TW%DfxYYJ5BePq4N3BZ_uy;gT_I`x%y-Uq$3KRL;mr-@EYneY9V1Rfu$)RQlqcnx_Mz1w zDoN&>o^=6ocuBUC{X3gKZC!_C({1zQGcg?~*FE`?o=@BpELF_B1t*BozXAbz&LXt@ z+#qWjkGKg5!a|q6m#d?kLh|(mOE1cvU7<;vcm!3>{m6zff^g8>}!FtLe;3BdjPdVfpjaQ6^=Me zbC86qVngmNReeC@y=9|j`ZSrN-|1o2gAX;5;x}_D*(#!T!eGySSK6*HihSss`ON&J zUOf@NJwWMFFx}Hwy8O6kp$(bkeg8atmdrLo5Ay86;9;8rd=S1bilHggz0lnd-xm?v zsjn`JQ-4>Z9*)oOxS3FJbI_G;X59HFN&VmrBJ?Lk;Mi45@g@&qOO%jqvi{LvW1Oi> z@>nY5$ihttB(*^#;$QQ%I(|)S>Aj=pF5+9Ha;#g|xfpZ4XzPa@;wKuJ0yp5ndR`r~ zygac1+z1(pa#XL>Ke~m*{zTBA>9&CNPgV^K_Z4Pk*0P8?UU4FL9i(8eO>G-LwY$oh zpH`B?hxUQ}K(uQ1fD4Md#g>FLomsXrcd zZpmk>4k;jwhuM%u>zh`|q~t^vE=ac-HFk#Elz2_(($V2P8A)8`03Sh=GRIQnQr&&D zr7;el0^{g$364Dvl=3fOD0#xz6n z7kOoC*Yx8;4gqCdX^vUqy=AUJ+=H$?I}@JMov&$}c2B&gAPAejIw98griPwJqShD z{kK{pZVo`4!Ayv?*`3a|x^P%Tfj5$(=5U*wp9e|74I*Fhr)ajN8QrlH>8%wn5!#=+(mxuGys-b#gE=Yoy{{X>M2o;abd zE3@f|eR%ZnTpG-x0MOSyudI_YzaTFf-tA2;(LQw2gt_@${qd6AbWYaBo2{B3$WYUo zPrgm<6Ma{F1ft72;~E_D1# zSe_bw%6Ci_q=&e&LgDPZR zB7peO6$mCpt+rTZan-#B9*PLQLw5A^T$C|D5iZ8bJE#ruG(q>5fP?a3cew^MLH4PG z7bb!Pq}@^d(~&(eL0YS@PCNqv9;RWabyC31pAR~fEs<-ch^%RJv#cMEX!}O#J20b) z?m*XHB!4Qvy`n3b!x8fuT>?R@tK}XE@X&s}_tzANtuwMi^y|gIn){_pkLV|t$ozDE z5a3&jDG{8ks;yGty;8%L*4*uO%{PkD6gV^segAGJFw;K3uTL*_M(~{KJgN|K1^Be| z{Uiy_dX|O@7jsb8TpRt1$}x4ZnHp|O9<{4$%daMm*J8W4krt&ZsNnEo)3X_)fTw}4 zgMcKN8oPkojYdszKI19E;T6PE#D;1^9wwOn%#Y=(Z|&+rPd&xu7BrtrFQZcfq4}l_ z;3MKjuFA4C&Ra7E-G$!DS*o_jajc$khzdwq;26%`V46>9SxX5^UQ#9p?c;|D4vf^y zxkO?D{OWy<83BF=0}SaKl~cH7NYuT~3zs9OvkAIg2T2U)GFQ^HFwRc_@25#%*N-mO zpq^VMS7N0c>jJZ95Rd0336!xjKTVxJ!Fek?p`JArWs#aryJJmn5z(|$IbN`-zH)b#F_dAH)s6PP>0FN7Svnej>6`?z)~j?2ZxZQlySWr)*7uhdeU^o;AJhBQ#Y>=n-Xvaw6WJ4%31!*lBM8g3 zGrwMODPm4t7!h^|@dtNhX}jJl$a*Xz+gomvmTt~VWoj3tr?)GoYBG+$Vc3KD7xj8# z);_wnmh)cWO9A| z1hPyHIJf>zEejQ5hvLGoVUpy=+P#t*YnU;utr~Hwn4R#?smZKF2lJgd!}J^FBsKm^ z?PT2uDAO|Vd!%x;%Oxz!(i20B#QE4S<#ZC=EuKZ+O)0$GjFR3E>_SS~ zo($SN$JkhH{jCduJOUXeqY!KP{IBHy@N(|)8i)mRH7X}Qzb_g^)JK1*%$wv77nenxVs;=d=2+fZ_lY$+FtPVaFI;XY8J%Bp2F=3!aX8?7>ogw4$&2LdO4#%Zwwkkmmb( zLIEUwz)Sm`&;HZ!hYySoK$__-2Y;}$6;*L@F+xe->P_lb&~3f~`aO?#m;oAkJIyxdG4;$^nB*}dm_-PldO>_+Xik#UfM z>Z!S7VS;x1yc%AI$};_rI%7!{O?Y3k5U*feRs0E@Ab;O>ZlVYJdiy7!$i{Zx_@nMx@4)oOZ$m>Ef_l%d zW|ly>@SKq(_ed^Q^)DW)%GVvhWbwGNbybJt@#Oa9b3_5Et5&js7Y8*gsB-|_{1t)mW^Uk3U_flE3^esh?B*&cGUTrkSd#=1U@`Rh~NUj>$3d z*l_5Otp1Fv%$8zmIC=Sl`a~H@&8L)?`7-;R^(c19@h2o5ckNHVrIm3yZf=BGi#rD? zbRqxNz>`AN%G0^M#+A~fH5ikCa4ABc^T^7WqpT?13hPO}Beb*}@GCQb79-zF*jISr zziR;qZPZj)6kc2DQ{i;XwJY}<_i%D^bFcfPW$7|<+KA22lzAEMgliLI895npF5C3O z8_`6{Ev`p49E!qnaxf2V*h!&;`!y_+<&R>SnWT(A2J?ws|9D1VrChXgS$D|OkVKaG z(Pg%$_}Ow@@X&%>w%JS48no~antap9K+}v>*WaH71RG-)ec3;8C@>%AEY5mLz3yxs z;i;}0eyNjRQSD)E-I0{dYz}_{ZCkt*>8Xj;e?G>lm?)$zjdF~#4y zn^lg~k&%6xA})qE(4!Pp9vsslp+g%R@&p@$<3Jd(&Dml0@|7kFL9x}URlBT7{zn%9tudMPdW` z?U}x;;|}XAVb-!QPhj%6`n~47^Y8fk<_G}^dnPR}8TlP_N@*XR^>4QhUoR*tTVbhN z9_<(Tyexm%q}Gbw=h9ZfZy}Xzs9&b(U|b4*xJiS(<+^0&P_@9zhd~dZAoc-69SxK& zM+PSXpKCjrX?K2PC3?=7@Uh)CLq^bnV%n((n6wBcHjwEQ@c0BlTU^2c$X)^=Hk*8o z^^KL6DjbFev6uO+34ZvVh6^HbM4CcAVqR+P-!~FMSF=f^CG<%Py8^DN{0`)+CEcP$ z9fGpUfkcz2l}KA;+86eCSSX^s^i_QtOg$U+NIr2ezxqL=W27>e!U8dnvH-$ zCaI;T1}HJQ#a_&Qh%US{lhpcymR33EhmWYmZcpw-aK+2JBC{;>i|Msl^M-ozV5;`u zSTW=ds+ZLEdoryLZwAL+?kKtO+kSEJGpSk`%QVL$dmW->;mN5ZHcp%p^AfgCqeH>k%@MbldNcv`@-JTB3$V_ALRtKj77>nDo$&lb8f7*a znZtq?m$SZMuw%=tt%{Z~8B9C|YN66g4pS%*LJw|)46J-9fGE+>l`o?{r)~$5TJ$>Z zyZH%CZy4m6a4#1Qe~#PNUMxJ_7hsB}+Uk#u^|h1Vd)4*pXFdQhjo9<6&05!Dwm&>8LouM2tsbWOr3p7Z#gk)+UfUw zZfKY6XKFzFp^|_nw13J)RcNO{k;N9^CLrT78Bg9C*)8KFDJn|DTYgJEOgWoAsHlQ-mh;-dI}>Inn!!fTFk7oP`5#)w>x&U zUns`nkDcI4ir8_R*F|lY<1CedgflbI7YxR)n<@cHgPbs@G+B#F=@_gl?hm_Sc*Zgh zM{;rWxkbyQ?&_;%Soy0#-WNh11R+xX zDZ0lY7X4x(j9HSLXL*6X*qGEbkK;tKmwYc6{)+!5)TaL!Xc!PmfNbiIafwp&^cL*W z7N(W*6*6Z#?7cd(eaPYJ&wfo!3Zzs|6Mh^Ui}pQ#-Z*PTdj%b|@|+b`U9m9kbD7^Z z%qjhR!Q>g9!kPX{ia@e)%c(q&2aC#Ze(C1~Ka@^lXyWfHGaKw}L223Z_)r!F#FMnLTKeKx1DPvc z_-Da0M6QN6V*@#_3c4qa9yAMSE6 z8=cAE6CkrsNGY>D9ZMJpr{nYRNj%;!@n}4ZdZ|ZP!JrW?mKGtIo!3pRWkW_bs-Q=0 z0*JFOq4I*`1?!Uvu5;5`@o9w`)Tu%a*#VJ-vFz)1+KbV*KgwSl<;nF(J*hAiL5Ikz zAitE({mF(9=ylY}h9<-2WsxDFvHXsU7J4f60)W4a*o4$Qzh%$o4-AV-xpBk>ET*ve z2j;xuh@PDIyw%M3`dO~2z07dF#f>CaiT9I@u7uwjusd9sPwK;yG!Oi=ZX=M6ytqy} z=7w*kDb9CKY$8pCo#1gulG>m9ox^r7uMXF7#;11rW(oYuNWW>qZD~03Vb!0xSsy|3 z8HtwjF^QH2GX_DhBQ$;(U991YO=B>PcOv(57)wga<*Xt9F9n6ploxSCH>!0>Z1zoM zBU#axNHqPoDcmZCF#mOt%P?=J@xxoEPMX@~!7DXX((yf3M`1gtqo4y4qVIVw>FMo+ zFKMnHuqXY<0Wh<&>s1i>C=$SEgp`DM5->MM%ed7zEgZIwZls!z_!T`pNOC!EF>g~n zOErg!J+ad_5>J)ecWmS`suKQuqaz~YgGt(FFpeGD9P=JdEjGWCXh`JbLtepY_2vj7 znbs3`B7-<3&h*}VECN_vE^#>D9hE%oA-&sTK<*An#JLYZAOc~X( zHXNh@6Lg|nTI*i~zk*w`mXh=4X8IhFt->&0j`Aw76?HYp|VXEQbh-2-Cv!Iy0xv(R=1A=k zOOrgncxTFXn~92Ck`eF+_js4b7Pg>g7hwzHFfniRW2Og+bkzG3G&D36#CtTFCaR^c zKNy0AF9s>A5wD6cUWVWoXPDg|oQ##wc%Nz=d+u}F!2Y| z&8`ZG6;%XmORg8&?8dI6`(^N57u4xU9Jh2!l(qy$Vb8s)*QUt^)m#OTSV&y_zI0eQ z5ES+$scAJOkaI0xuS59Enj0R;2hjN`M$8wq#YmNXYLe1wVU`ctA6zXcC=hU6`3OmD zmG!VT7W_3)8d884eh^sH_5~6e;K#O>!t|7}E!bH{q}#J>>t-PErJ(t?c)<|?qO>{k zERo#6fVHOciu6N~)u~{;J35^Hs6fVpVY#cusK24JWB&2-iLa|hEG}X*W{slWF$SiM z;M)1U?(kV+K``^QY%cCSKKrF&T*|8`46*qR>7}#ItqP0jgtVoxrkJx9HbFN^D`Y!p zInyfh=EXd4Ba(gD6V|3;#BwA!L%0A&)_Yf1#?8L%xie)8P(JZ0P}X<`j&dfcq3CRh z3ub5=s{T#9wO4GkMa6QEWok3pU1F-ZQ0-ere5Otwy((vH6=~He>&fL7){4E>gE=QP z{Egduh*;zg;3H9rvGYwQ_xNH+b&BL$R1bnWc#p0F%ww(ML`iRQWK?d{i%^}If9M2A z<<&LiRE2LM#H5yPT;7QdnwUKP5oe$&ym(|Q+xh)(?pz3*2=CqYBc51I-5%g0Cqv|& zxaUavp`;1~S~w*gc1s^U^o#abGR_qhzd(wXV%^IV-|nA4aK~t)CgjZpC9P7m@cm(RidzM z;^DWdIu5O06;`iS2|+i74BiEM1Tpm{fJ91-3?ncve#I0*a?&$i)A&G8yFKc0X2QH; z!I8!2*fJldftv$clxi zM~QF%5(&cG3Yy1^&Vx-~8U?jdGMk2OkML(Ab~=~BuIZz)@me$7BYDnK@c36L z9Eo18(E^QIG~|Fv=n6ZvVYjY!5Wl|FiUdbT2!LoV@HhK@A_4^~W-U0yWoA6PZW0zlr-_6Jj!e!#wpp9!B!Us72%mfO_ z`}hXJ77wlvBdhO_MrXIWn#NK=h}{0TBgoSGvv1$a!TqqRd|!tBEmurtOf)w#ROlbua5yNqwy+8!7*Ecu>-~81Z@koRKM`;(uV^ zS@U$a=fK5d5tRPBZ?79lv7R$!yv@QP*?)Np-j(eoiXj?^K-}*Kx-nU${>g zp=$hI{3L2bF@lpH)f6mHWv{H&o{XrVmWxtAk%r7t8#--jGh~M+8KG9gA)fr=vvf+q z59NaL(>sDOMEMlnJm)iCP^-PH2yvX|Jg3=;j#bsQ|#tw zHkW3Tcp;B>q@qpa9;nU1r|~32L?Va7s#6zO46w^4KOc?Uxd(RCx2XZA z3y-TwrZxP*WCEdoWs>soAB-?JG~M3i`%T!hqb>}-c|h3@@0_^chy8kch`6BshT>oa zzQT8=+;g;0#XT3tt6 z6fZkIbMEaO{U0mcXHX|;4-fgDwW-q;uexOJ_cgX=i1%Ok5hTP zpFg;J(j3JQ*#4Ju*s!`DWdCOfz8zRL){IL_yubffh5Ge-tPEm)!uLH^mpW(kc1JKK zw8CQG$8%_f+yiACpH}c6-uZuX!T)>cJXiF2^z`*pj*&Y%JEvs^|J3!EHb)w)!pI)| zW2STFw^aO=7wBCc|8GgJ1f`P~V;SSW5?k?ilA#-(IH)RUtq1+cu&3iM9E=JS*(v{3 z!peWYQVna!;3_oxr~QmyA*GK8R_(f1mB5 zEB^xfRCV3%e@@6ZtDkNTYsS@;E&9{ec5}p`&k+VHB}9 z9og=Bit`ebg~l*BPbuS`(_N56i7iQ7Ufx6F)kKfO0;s+Y1H*h;zTUkzef)|&aQ0eX z$z4f4uYan6lWDN5tZZb$_c8H<+JsDx+<`8)EK5ik!T2f#O$mOQ-r1y0$-7%?TFj$Z_C{E%Ebc^hc{c!U9)OwPQw zuET9Tb(@1T0_v82sNG+b+Wg~K28(%jW#~3uh+2ooW;utrtP5bG(Y@)9My*p}1-k_; z)Il&5N8qdwl}U_){k9$9kx`>jtyMCms9f`VvI#o*xEFaYqMp=V!bk7U@Q8rJLqqJm zyu{6IxlzvTz{1nZN(y-+@ZC9%^W}^wuHJ4&nlnE{LGl zE&op-PjbQKyfg)@vR>G|ysky$4(OSB`kmq=4Pb%>0lmkvOk7s&PIQT)~r8o*y)%^A^N2ZsXF8u_ldV1&DIeEC%Q)_)11MS4}mPy6DCyNa5Dw zw8sf_#}q0?Q6==>fQfMpf%lhRE{^E*R(vc#ClOXi;wzc5&UqpAvy&+$G5?8AK*V0@ za=qCroWRo<03XoiSVB_kl0e4$NGH%bhv*1>*K+CQSoo_YDgDQ6nW2;X>#q8-lPu-B z`X3H>8MN>$`s8(26FIbg`#Y%(RF|kR2;>jIl7O?XVNNCc{5xobznTX*n?p`X$87?v z+y=H7nSzCm?3SbJXoXN7J;Uyd6X-OF!9<-|X*D2jyM9j%tr@xfEu9^?Xt! zx|!O`f_JWgbC5&q+L4no1{Jw9F#&nO)OVq-z4f_9e#0WtUZ)h8LmIlb(Cl)Rsg$%0K#x8aq)%YA=?@U+{gGq?G1)t_vGDD+Xe(r|7P6cGf%RA+=Fc z$*{XouK8nXdD~+j7e;A zh{B+3HWv^tYOMnQ!3oc}qt6#dILK`o(U$&S%x)Y3W)vRL^|G&Mc4LG1VK-JDv&(|; zaR>96&Wbn5>03Uxv|L2g>q+yFA?)xs8@S+|i2<%gyjehJCM}hWJuU4CGEckCUDSv4 z+)vquFbx)Cq0)^(?H_BH0s>*Pu*s)SG%PhqQa`M>Z(&<|XSSWJYE3_(OIHF`LrHsc zl>suv!Xkk~#*nq0p}5ADD@24p&#{AR8^X^nt1<2{N)Wxl6Kk6*n4f2yw(1Rg7O|To zo8!+Wv;1=PB=B}eG^lM+}UPGP3lNX?26R z^@uv+#$zuD`v{L2HUbmdl~))5mddv&{4<V#4Mb(vn%OT`~-*k6^ll0A8HGA?#yf>U@a!*K}ge zjJu8z1XLJ3V!}+Blj9Q6g%r_SoA!Z9-8F0GC*ZNYL!PgZ7oVxU6y&)w=y5Uqf$RH1 z(lVhJ=TDsHgw>ru_ry;FI_dkfEar z{y%v_9Ktc{YQb-c!(R%QnV>3#-*-`%I((&xWFHs2PJq^S35G*jhxbS&$9l~Iyv zzXEg{dIup=AmmJfI}N71nhTT|3;$)GB4G7AC1p4OvgomM79LJrBDs@YZ~V$CJ1|QS zGgc|Wr}$Z7v)KlvH%AW~R0`mgO6W6wSk=u(u%`@4M?6Bh<}`$isS%L+5IQ58O`4Ll1> z5c&Q8C=n zFS>c`?Z_zNS3u;z%E3ZVX-00vXTG z=kB+C9K>Q#7To;jQGF$D%?G*>J;GQ(Y;~@}6nm-h*ig9tyY#YlP;_TOX;Q@0$y3Pr znf|f!aF;WoC|ZBW7EQ=!qH&EU?m;HVH_e%yp3DvlYNQ8R;bE2DqRajH;)Z< zPc+bE!B|*VM4ud4zuPqo9mzCbUYK zINJr}_qTyFqd4tRSEXLy>XK3liQJY}rXa!50-77s9ro-m%kK2XKfc&z5Z9Hb$yNPB z$~^*Vd`exgDRIZYlB|)^XrLiKT7V2-6 z(HcH5TFNT%lc?P$uvyf3P108HQm^=U%Frr3Hx;Rv7qqeWWC#~|&XWI!5@OTrFb>P- zhe_3Jztn60Vq9;vWfL8WiO6axNjzc&d;)?vyvnk}FMV#%&u7JZe(n5q@IyKp65hPO zlboG}@kR$zR0%v49gm=J!x-0e0>HCv0A;BEl@R{$e*q>19}*2J*}{xT}AU-~h>q4op#L9W6XuH+3uBXY!hOJ`p@n2nezYyRGf!~it$Y$4*wRSn?aXHcE zUO@IK?__G!GKmFUe-r%vn>x39zvMEuH9PLQ3dK|TJu9JGPNY*ArW^EY)iWqQdhFIj z*z5UPAfC6~a|rkW4*HWP8Fy*z)c+EwG$Xek9Py_)xw{Z*ga3rXNP<9vMvtN>mAX-< zk1-0hGUL5!so?v@zvryfy7&|RS@MgBeEvT>WMzllc${*l=qIv7n)tewp!R_Ml>bD1 znk5)2=8*k+i_xa~9Xk&Xj9U^_s3lRQf_e{ds-Ge75FV(Y@CB7{Ng_h}$5BZCj~jR_ z8A2mqiMxxL&@?#xZ#xzz2BFtte%R;8JA@NZO`;A@{<9PLf4?&L-|rMo2ViWld zgxZ;BnoHuvG8-l@zwGeniLss>$*)-X?Pm%dDIP^U1Y%HcIilBBKcbG z@Pgi_)E!i86jgk0qW3wKMrx<7E)!gTcGlGa9S$AJJBe{6|^^38btOQF?sL2Q+!rDG}3szDW(B}mCa6Rj$aB#Av&}~-iR%Vks~d7 zr`FFPjh|911&!q*CpVc+wXN6l{rV3Pn0ev>J8wDtUOyG|*5``-{|Uh9Nq{w?Ip3k0 znvL5hjs&Ab{%!3Rh}$!3fxe&EtQ!8Ul{JY;tr!VL*$He5Zg(I8LaQ-Py^U5!TM<>F zI;3N=0M?LW%KsY2ZgA^Z z`Ay`Jx3i}oaGL&g1!I<%?fK&lo15P*eSQh-&~^WJ9=j{I8n}Bs`Ffqwy(xAvm3M_A zYHf42>&`ZoKi1P&9mnXEaOCR-rQKh*aZa#h&uW}=^;+$_^=G%$UD}<_8Dq_UqV27k zjwG}5cK18U(|R_ty*ngyW1rF)uTq0#Q=5IZK9v?&O5*KDAAXyuYJT~_iw4)1ht2N& z_uKA2n|V7^|C(*n_+{8c4t>3?c=q78Niinxwk;|&?|YgHY|8EXrn=;vG{^Bpd7Ni% zT&~)(>Nfx9+{Jf=&Zn&Jlbp<`G4s9uyqIX7?{E6|^;zCd^pn+z%sD$dd+OR1&6gyv ztvj|U`*Aw&@|thnBDNxjk9n?2d|Gr&_m@J-O;96jpUR~b*BviCJFwRIp`dsG$M$W8 z65TG&z`FG=-?GB+MHhXU9)_>6zyEgeiH?PVQ<8Z%Rd+f6pSHEa^vqUWd9Iul&6b9J zCrUSHZ_~Z4Fa7LH>s4ch+j^DzyXE=|4cHVubIHxxG-v75!_8cF3%1Ff*rI#N`?cHC z+|JtHKT_1<8V|GZO?uAHyS*sqw){Ee&g6+z!ZTIEx7R)l{IVJXc{`K63 za5tCGR^@xKYd+6e`R47%NrsKZ*XKpc-1s*sD57WTgp=QLAwKJ95h7j*WcW z8BQDLoxtky`;tQO3p-}7__QqpST^5I+;ucm+2^v!X>T9lHSQl)9-4S6`}E(_Z~GfI zmuIiN+`BjR;+$KrH(tC}lh~PgtxfZ@tyfg}`jo|)v!rvs-ZdDo+ zExo{cE98T-^Cxw z)iyjkKhbtuYsLTLyZ&x-`u_>Ia5Jsw#MfIl_sv*#^XxjQ#95Gr2hgFZDz8=vA~&tM z`_9|_e&fe;*43qI8EA;<`~R*kF5s|(5+7^-eB-n;91&vNz!C1dDUd-Ek2$cS66f~o zQ3aq)mfZ7^e`sJwI#yE&FN+O6%!K##P&0KS+R*yzwW2{p(@ug5u)O zKlaKUeEoVhSY09xb(_6e`VEgAE$%-3v}k=hV}kYm-3-T{yTLNrrNOdF7;dymqGZG+>GD@@ zn9M&fzrVb8B{KsH zo6BGCrfiB@d#q?@%-(Y2#eyK^mtTH~=jb>5CUlsA;luvfe#<8t9;@Ja$X;JpBM3Z+ gZqD4Z6Cdn%IByViV_shm@a#4QPgg&ebxsLQ0C~6d$^ZZW literal 0 HcmV?d00001 From 46bc62b237790f883f52a057da452a8b8b5c627e Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Fri, 26 Apr 2019 21:55:53 +0200 Subject: [PATCH 25/32] Update README.md --- README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/README.md b/README.md index 33601652..19775e2c 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@ https://github.com/ReClassNET/ReClass.NET/blob/master/README.md - x64 only - Can Access 32/64bit Process +## ScreenShots +![](https://github.com/CorrM/ReClass.NET/raw/master/img/Class%20Compare.png) + ## Authors / Special Thanks - [KN4CK3R](https://github.com/KN4CK3R) - DrUnKeN ChEeTaH From 909af4c85062dae70825832650ff9a0255d3c86a Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Sat, 27 Apr 2019 01:32:49 +0200 Subject: [PATCH 26/32] Add Is64 To RemoteProcess --- ReClass.NET/AddressParser/TokenReader.cs | 2 +- ReClass.NET/CodeGenerator/CppCodeGenerator.cs | 2 +- ReClass.NET/DataExchange/ReClass/ReClassFile.cs | 2 +- ReClass.NET/Debugger/RemoteDebugger.cs | 2 +- ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs | 4 ++-- ReClass.NET/Forms/FoundCodeForm.cs | 2 +- ReClass.NET/Forms/MainForm.cs | 6 +++--- ReClass.NET/Forms/ScannerForm.cs | 2 +- ReClass.NET/Memory/MemoryBuffer.cs | 2 +- ReClass.NET/Memory/NodeDissector.cs | 2 +- ReClass.NET/Memory/RemoteProcess.cs | 4 +++- ReClass.NET/MemoryScanner/ScanSettings.cs | 2 +- ReClass.NET/Nodes/BaseContainerNode.cs | 2 +- ReClass.NET/Nodes/ClassNode.cs | 2 +- ReClass.NET/Nodes/ClassPtrNode.cs | 4 ++-- ReClass.NET/Nodes/FunctionNode.cs | 2 +- ReClass.NET/Nodes/VTableNode.cs | 2 +- ReClass.NET/Program.cs | 2 -- ReClass.NET/UI/MemoryPreviewPopUp.cs | 4 ++-- 19 files changed, 25 insertions(+), 25 deletions(-) diff --git a/ReClass.NET/AddressParser/TokenReader.cs b/ReClass.NET/AddressParser/TokenReader.cs index 4ab81a44..f2657118 100644 --- a/ReClass.NET/AddressParser/TokenReader.cs +++ b/ReClass.NET/AddressParser/TokenReader.cs @@ -71,7 +71,7 @@ public List Read(string formula) if (long.TryParse(buffer, NumberStyles.HexNumber, null, out var offsetValue)) { IntPtr address; - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) address = (IntPtr)offsetValue; else address = (IntPtr)unchecked((int)offsetValue); diff --git a/ReClass.NET/CodeGenerator/CppCodeGenerator.cs b/ReClass.NET/CodeGenerator/CppCodeGenerator.cs index 54437e8c..20b99f24 100644 --- a/ReClass.NET/CodeGenerator/CppCodeGenerator.cs +++ b/ReClass.NET/CodeGenerator/CppCodeGenerator.cs @@ -80,7 +80,7 @@ public string GenerateCode(IEnumerable classes, ILogger logger) csb.AppendLine(); List newNodes = new List(c.Nodes); - if (ptrIs64Bit && !Program.TargetProcessIs64) // Game Is x86 and user need ptrIs64Bit (8byte) + if (ptrIs64Bit && !Program.RemoteProcess.Is64) // Game Is x86 and user need ptrIs64Bit (8byte) { List IndexsToRmv = new List(); for (int i = 0; i < newNodes.Count; i++) diff --git a/ReClass.NET/DataExchange/ReClass/ReClassFile.cs b/ReClass.NET/DataExchange/ReClass/ReClassFile.cs index 5d2b0b2c..7d575092 100644 --- a/ReClass.NET/DataExchange/ReClass/ReClassFile.cs +++ b/ReClass.NET/DataExchange/ReClass/ReClassFile.cs @@ -175,7 +175,7 @@ private IEnumerable ReadNodeElements(IEnumerable elements, C while (size != 0) { BaseNode paddingNode; - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) { if (size >= 8) { diff --git a/ReClass.NET/Debugger/RemoteDebugger.cs b/ReClass.NET/Debugger/RemoteDebugger.cs index 423bba64..e52bd1cd 100644 --- a/ReClass.NET/Debugger/RemoteDebugger.cs +++ b/ReClass.NET/Debugger/RemoteDebugger.cs @@ -131,7 +131,7 @@ private List SplitBreakpoint(IntPtr address, int size) while (size > 0) { - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) { if (size >= 8) { diff --git a/ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs b/ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs index 90c57eff..afa16119 100644 --- a/ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs +++ b/ReClass.NET/Extensions/BinaryReaderWriterExtensions.cs @@ -9,7 +9,7 @@ public static class BinaryReaderWriterExtension public static IntPtr ReadIntPtr(this BinaryReader br) { Contract.Requires(br != null); - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) return (IntPtr)br.ReadInt64(); else return (IntPtr)br.ReadInt32(); @@ -19,7 +19,7 @@ public static void Write(this BinaryWriter bw, IntPtr value) { Contract.Requires(bw != null); - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) bw.Write(value.ToInt64()); else bw.Write(value.ToInt32()); diff --git a/ReClass.NET/Forms/FoundCodeForm.cs b/ReClass.NET/Forms/FoundCodeForm.cs index 3ca1a2ca..0267b17f 100644 --- a/ReClass.NET/Forms/FoundCodeForm.cs +++ b/ReClass.NET/Forms/FoundCodeForm.cs @@ -102,7 +102,7 @@ private void foundCodeDataGridView_SelectionChanged(object sender, EventArgs e) sb.AppendLine(); - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) { sb.AppendLine($"RAX = {info.DebugInfo.Registers.Rax.ToString(Constants.AddressHexFormat)}"); sb.AppendLine($"RBX = {info.DebugInfo.Registers.Rbx.ToString(Constants.AddressHexFormat)}"); diff --git a/ReClass.NET/Forms/MainForm.cs b/ReClass.NET/Forms/MainForm.cs index 63bbd5ce..e029ac26 100644 --- a/ReClass.NET/Forms/MainForm.cs +++ b/ReClass.NET/Forms/MainForm.cs @@ -376,7 +376,7 @@ private void cleanUnusedClassesToolStripMenuItem_Click(object sender, EventArgs private void generateCppCodeToolStripMenuItem_Click(object sender, EventArgs e) { bool ptrIs64Bit = MessageBox.Show($"Pointer is 64bit (8byte) .?", "Pointer Size", MessageBoxButtons.YesNo) == DialogResult.Yes; - if (ptrIs64Bit && !Program.TargetProcessIs64) + if (ptrIs64Bit && !Program.RemoteProcess.Is64) MessageBox.Show("You targeting (x84) Process, so make sure u have 4bytes after every ClassPtr.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); ShowCodeForm(new CppCodeGenerator(ptrIs64Bit)); } @@ -408,9 +408,9 @@ private void attachToProcessToolStripSplitButton_ButtonClick(object sender, Even if (pb.SelectedProcess != null) { // Is 64Bit - Program.TargetProcessIs64 = System.Diagnostics.Process.GetProcessById(pb.SelectedProcess.Id.ToInt32()).Is64BitProcess(); + Program.RemoteProcess.Is64 = System.Diagnostics.Process.GetProcessById(pb.SelectedProcess.Id.ToInt32()).Is64BitProcess(); - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) { Constants.Platform = "x64"; Constants.AddressHexFormat = "X016"; diff --git a/ReClass.NET/Forms/ScannerForm.cs b/ReClass.NET/Forms/ScannerForm.cs index e32c5e95..5eb5ea76 100644 --- a/ReClass.NET/Forms/ScannerForm.cs +++ b/ReClass.NET/Forms/ScannerForm.cs @@ -645,7 +645,7 @@ private ScanSettings CreateSearchSettings() long.TryParse(startAddressTextBox.Text, NumberStyles.HexNumber, null, out var startAddressVar); long.TryParse(stopAddressTextBox.Text, NumberStyles.HexNumber, null, out var endAddressVar); - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) { settings.StartAddress = unchecked((IntPtr)startAddressVar); settings.StopAddress = unchecked((IntPtr)endAddressVar); diff --git a/ReClass.NET/Memory/MemoryBuffer.cs b/ReClass.NET/Memory/MemoryBuffer.cs index ff06afe0..c9fdc379 100644 --- a/ReClass.NET/Memory/MemoryBuffer.cs +++ b/ReClass.NET/Memory/MemoryBuffer.cs @@ -460,7 +460,7 @@ public IntPtr ReadIntPtr(int offset) { Contract.Requires(offset >= 0); - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) return (IntPtr)ReadInt64(offset); else return (IntPtr)ReadInt32(offset); diff --git a/ReClass.NET/Memory/NodeDissector.cs b/ReClass.NET/Memory/NodeDissector.cs index 6f43d7be..34309bbc 100644 --- a/ReClass.NET/Memory/NodeDissector.cs +++ b/ReClass.NET/Memory/NodeDissector.cs @@ -55,7 +55,7 @@ public static Type GuessType(BaseHexNode node, MemoryBuffer memory) if (is8ByteAligned) { - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) { var pointerType = GuessPointerType(data64.IntPtr, memory); if (pointerType != null) diff --git a/ReClass.NET/Memory/RemoteProcess.cs b/ReClass.NET/Memory/RemoteProcess.cs index 3cb15c26..26c7d5a0 100644 --- a/ReClass.NET/Memory/RemoteProcess.cs +++ b/ReClass.NET/Memory/RemoteProcess.cs @@ -21,7 +21,9 @@ namespace ReClassNET.Memory public class RemoteProcess : IDisposable { - private readonly object processSync = new object(); + public bool Is64 { get; set; } = false; + + private readonly object processSync = new object(); private readonly CoreFunctionsManager coreFunctions; diff --git a/ReClass.NET/MemoryScanner/ScanSettings.cs b/ReClass.NET/MemoryScanner/ScanSettings.cs index 59297f50..3504de2f 100644 --- a/ReClass.NET/MemoryScanner/ScanSettings.cs +++ b/ReClass.NET/MemoryScanner/ScanSettings.cs @@ -12,7 +12,7 @@ public enum SettingState public class ScanSettings { public IntPtr StartAddress { get; set; } = IntPtr.Zero; - public IntPtr StopAddress { get; set; } = Program.TargetProcessIs64 ? (IntPtr)long.MaxValue : (IntPtr)int.MaxValue; + public IntPtr StopAddress { get; set; } = Program.RemoteProcess.Is64 ? (IntPtr)long.MaxValue : (IntPtr)int.MaxValue; public SettingState ScanWritableMemory { get; set; } = SettingState.Yes; public SettingState ScanExecutableMemory { get; set; } = SettingState.Indeterminate; public SettingState ScanCopyOnWriteMemory { get; set; } = SettingState.No; diff --git a/ReClass.NET/Nodes/BaseContainerNode.cs b/ReClass.NET/Nodes/BaseContainerNode.cs index 0be68855..e2bb30f5 100644 --- a/ReClass.NET/Nodes/BaseContainerNode.cs +++ b/ReClass.NET/Nodes/BaseContainerNode.cs @@ -195,7 +195,7 @@ public virtual void InsertBytes(int index, int size, ref List createdN while (size != 0) { BaseNode node; - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) { if (size >= 8) { diff --git a/ReClass.NET/Nodes/ClassNode.cs b/ReClass.NET/Nodes/ClassNode.cs index e150a0cc..17a7a50b 100644 --- a/ReClass.NET/Nodes/ClassNode.cs +++ b/ReClass.NET/Nodes/ClassNode.cs @@ -17,7 +17,7 @@ public class ClassNode : BaseContainerNode { public static event ClassCreatedEventHandler ClassCreated; - public static IntPtr DefaultAddress { get; } = Program.TargetProcessIs64 ? (IntPtr)0x140000000 : (IntPtr)0x400000; + public static IntPtr DefaultAddress { get; } = Program.RemoteProcess.Is64 ? (IntPtr)0x140000000 : (IntPtr)0x400000; /// Size of the node in bytes. public override int MemorySize { get { return Nodes.Sum(n => n.MemorySize); } set { } } diff --git a/ReClass.NET/Nodes/ClassPtrNode.cs b/ReClass.NET/Nodes/ClassPtrNode.cs index 6c59d1e3..36e9b6e5 100644 --- a/ReClass.NET/Nodes/ClassPtrNode.cs +++ b/ReClass.NET/Nodes/ClassPtrNode.cs @@ -14,7 +14,7 @@ public class ClassPtrNode : BaseReferenceNode { private readonly MemoryBuffer memory = new MemoryBuffer(); - public override int MemorySize { get; set; } = Program.TargetProcessIs64 ? 8 : 4; + public override int MemorySize { get; set; } = Program.RemoteProcess.Is64 ? 8 : 4; public override bool PerformCycleCheck => false; @@ -179,7 +179,7 @@ public override void Update(HotSpot spot) if (spot.Text.TryGetHexString(out var hexValue) && long.TryParse(hexValue, NumberStyles.HexNumber, null, out var val)) { IntPtr address; - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) address = (IntPtr)val; else address = (IntPtr)unchecked((int)val); diff --git a/ReClass.NET/Nodes/FunctionNode.cs b/ReClass.NET/Nodes/FunctionNode.cs index 8441fab6..34cdbbb9 100644 --- a/ReClass.NET/Nodes/FunctionNode.cs +++ b/ReClass.NET/Nodes/FunctionNode.cs @@ -16,7 +16,7 @@ public class FunctionNode : BaseFunctionNode private int memorySize = IntPtr.Size; /// Size of the node in bytes. - public override int MemorySize { get; set; } = Program.TargetProcessIs64 ? 8 : 4; + public override int MemorySize { get; set; } = Program.RemoteProcess.Is64 ? 8 : 4; public override string GetToolTipText(HotSpot spot, MemoryBuffer memory) { diff --git a/ReClass.NET/Nodes/VTableNode.cs b/ReClass.NET/Nodes/VTableNode.cs index 176ca691..5b2e711c 100644 --- a/ReClass.NET/Nodes/VTableNode.cs +++ b/ReClass.NET/Nodes/VTableNode.cs @@ -11,7 +11,7 @@ public class VTableNode : BaseContainerNode { private readonly MemoryBuffer memory = new MemoryBuffer(); - public override int MemorySize { get; set; } = Program.TargetProcessIs64 ? 8 : 4; + public override int MemorySize { get; set; } = Program.RemoteProcess.Is64 ? 8 : 4; public override void Intialize() { diff --git a/ReClass.NET/Program.cs b/ReClass.NET/Program.cs index 60ede581..d5e04f87 100644 --- a/ReClass.NET/Program.cs +++ b/ReClass.NET/Program.cs @@ -29,8 +29,6 @@ public static class Program public static MainForm MainForm { get; private set; } - public static bool TargetProcessIs64 { get; set; } = true; - public static bool DesignMode { get; private set; } = true; public static FontEx MonoSpaceFont { get; private set; } diff --git a/ReClass.NET/UI/MemoryPreviewPopUp.cs b/ReClass.NET/UI/MemoryPreviewPopUp.cs index 6029d500..d221735e 100644 --- a/ReClass.NET/UI/MemoryPreviewPopUp.cs +++ b/ReClass.NET/UI/MemoryPreviewPopUp.cs @@ -52,7 +52,7 @@ public MemoryPreviewPanel(FontEx font) private BaseHexNode CreateNode(int index) { - if (Program.TargetProcessIs64) + if (Program.RemoteProcess.Is64) return new Hex64Node { Offset = (IntPtr)(index * 8) }; else return new Hex32Node { Offset = (IntPtr)(index * 4) }; @@ -63,7 +63,7 @@ private BaseHexNode CreateNode(int index) private void SetNodeCount(int count) { // Convert to 32Node (Just clear and [if (nodes.Count < count)] will exec) - if (!Program.TargetProcessIs64 && nodes.Count > 0 && nodes[0] is Hex64Node) + if (!Program.RemoteProcess.Is64 && nodes.Count > 0 && nodes[0] is Hex64Node) nodes.Clear(); if (nodes.Count < count) From c524e8c7ba27c19cd00ae36fb5b53c40743395bd Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Sun, 28 Apr 2019 05:32:17 +0200 Subject: [PATCH 27/32] # --- ReClass.NET/Memory/RemoteProcess.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ReClass.NET/Memory/RemoteProcess.cs b/ReClass.NET/Memory/RemoteProcess.cs index 26c7d5a0..841f39de 100644 --- a/ReClass.NET/Memory/RemoteProcess.cs +++ b/ReClass.NET/Memory/RemoteProcess.cs @@ -21,8 +21,6 @@ namespace ReClassNET.Memory public class RemoteProcess : IDisposable { - public bool Is64 { get; set; } = false; - private readonly object processSync = new object(); private readonly CoreFunctionsManager coreFunctions; @@ -57,8 +55,10 @@ public class RemoteProcess : IDisposable public SymbolStore Symbols => symbols; - /// Gets a copy of the current modules list. This list may change if the remote process (un)loads a module. - public IEnumerable Modules + public bool Is64 { get; internal set; } = true; + + /// Gets a copy of the current modules list. This list may change if the remote process (un)loads a module. + public IEnumerable Modules { get { From 4fdae0849edd5cc33b6de5b08c348705f5959d3e Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Sun, 28 Apr 2019 08:18:06 +0200 Subject: [PATCH 28/32] Add Show Hidden in Class Compare --- ReClass.NET/Forms/ClassCompare.Designer.cs | 24 +++++++++++----------- ReClass.NET/Forms/ClassCompare.cs | 18 ++++++++++++---- ReClass.NET/Nodes/BaseHexNode.cs | 4 ++-- ReClass.NET/Nodes/BaseMatrixNode.cs | 6 +++--- ReClass.NET/Nodes/BaseNumericNode.cs | 4 ++-- ReClass.NET/Nodes/BaseTextNode.cs | 4 ++-- ReClass.NET/Nodes/BaseTextPtrNode.cs | 4 ++-- ReClass.NET/Nodes/BoolNode.cs | 4 ++-- ReClass.NET/Nodes/ClassNode.cs | 2 +- ReClass.NET/Nodes/ClassPtrNode.cs | 4 ++-- ReClass.NET/UI/CompareOptions.cs | 1 + 11 files changed, 43 insertions(+), 32 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.Designer.cs b/ReClass.NET/Forms/ClassCompare.Designer.cs index c3f2ff28..1fc38f2b 100644 --- a/ReClass.NET/Forms/ClassCompare.Designer.cs +++ b/ReClass.NET/Forms/ClassCompare.Designer.cs @@ -44,7 +44,7 @@ private void InitializeComponent() this.PointerCheck = new System.Windows.Forms.CheckBox(); this.ViewTypeBox = new System.Windows.Forms.ComboBox(); this.ShowHexBox = new System.Windows.Forms.CheckBox(); - this.checkBox2 = new System.Windows.Forms.CheckBox(); + this.ShowHiddenBox = new System.Windows.Forms.CheckBox(); this.checkBox1 = new System.Windows.Forms.CheckBox(); this.checkBox3 = new System.Windows.Forms.CheckBox(); ((System.ComponentModel.ISupportInitialize)(this.bannerBox)).BeginInit(); @@ -217,16 +217,16 @@ private void InitializeComponent() this.ShowHexBox.UseVisualStyleBackColor = true; this.ShowHexBox.CheckedChanged += new System.EventHandler(this.ShowHexBox_CheckedChanged); // - // checkBox2 + // ShowHiddenBox // - this.checkBox2.AutoSize = true; - this.checkBox2.Enabled = false; - this.checkBox2.Location = new System.Drawing.Point(522, 76); - this.checkBox2.Name = "checkBox2"; - this.checkBox2.Size = new System.Drawing.Size(82, 17); - this.checkBox2.TabIndex = 10; - this.checkBox2.Text = "Nothing Yet"; - this.checkBox2.UseVisualStyleBackColor = true; + this.ShowHiddenBox.AutoSize = true; + this.ShowHiddenBox.Location = new System.Drawing.Point(522, 76); + this.ShowHiddenBox.Name = "ShowHiddenBox"; + this.ShowHiddenBox.Size = new System.Drawing.Size(88, 17); + this.ShowHiddenBox.TabIndex = 10; + this.ShowHiddenBox.Text = "Show Hidden"; + this.ShowHiddenBox.UseVisualStyleBackColor = true; + this.ShowHiddenBox.CheckedChanged += new System.EventHandler(this.ShowHiddenBox_CheckedChanged); // // checkBox1 // @@ -257,7 +257,7 @@ private void InitializeComponent() this.ClientSize = new System.Drawing.Size(704, 450); this.Controls.Add(this.checkBox3); this.Controls.Add(this.checkBox1); - this.Controls.Add(this.checkBox2); + this.Controls.Add(this.ShowHiddenBox); this.Controls.Add(this.ShowHexBox); this.Controls.Add(this.groupBox3); this.Controls.Add(this.LayoutPanel); @@ -297,7 +297,7 @@ private void InitializeComponent() private System.Windows.Forms.ComboBox ViewTypeBox; private System.Windows.Forms.CheckBox PointerCheck; private System.Windows.Forms.CheckBox ShowHexBox; - private System.Windows.Forms.CheckBox checkBox2; + private System.Windows.Forms.CheckBox ShowHiddenBox; private System.Windows.Forms.CheckBox checkBox1; private System.Windows.Forms.CheckBox checkBox3; } diff --git a/ReClass.NET/Forms/ClassCompare.cs b/ReClass.NET/Forms/ClassCompare.cs index c31e5f68..0ffea191 100644 --- a/ReClass.NET/Forms/ClassCompare.cs +++ b/ReClass.NET/Forms/ClassCompare.cs @@ -85,6 +85,14 @@ protected override void OnFormClosed(FormClosedEventArgs e) GlobalWindowManager.RemoveWindow(this); } + private void ExecAllViewBox(Action action) + { + foreach (var item in CompareItems.Select(i => i.ViewBox)) + { + action?.Invoke(item); + } + } + private void ClassCompare_Load(object sender, EventArgs e) { ClassBox.SelectedIndex = 0; @@ -233,10 +241,12 @@ private void PointerCheck_CheckedChanged(object sender, EventArgs e) private void ShowHexBox_CheckedChanged(object sender, EventArgs e) { - foreach (var item in CompareItems.Select(i => i.ViewBox)) - { - item.ShowOptions.ShowHex = ShowHexBox.Checked; - } + ExecAllViewBox(item => item.ShowOptions.ShowHex = ShowHexBox.Checked); + } + + private void ShowHiddenBox_CheckedChanged(object sender, EventArgs e) + { + ExecAllViewBox(item => item.ShowOptions.ShowHidden = ShowHiddenBox.Checked); } } } diff --git a/ReClass.NET/Nodes/BaseHexNode.cs b/ReClass.NET/Nodes/BaseHexNode.cs index 12eb5131..24226fde 100644 --- a/ReClass.NET/Nodes/BaseHexNode.cs +++ b/ReClass.NET/Nodes/BaseHexNode.cs @@ -95,7 +95,7 @@ protected Size DrawCompare(ViewInfo view, int x, int y, string text, int length) { Contract.Requires(view != null); - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return DrawHidden(view, x, y); } @@ -159,7 +159,7 @@ protected Size DrawCompare(ViewInfo view, int x, int y, string text, int length) public override int CalculateDrawnHeight(ViewInfo view) { - return IsHidden ? HiddenHeight : view.Font.Height; + return IsHidden && !view.ShowOptions.ShowHidden ? HiddenHeight : view.Font.Height; } /// Updates the node from the given spot. Sets the value of the selected byte. diff --git a/ReClass.NET/Nodes/BaseMatrixNode.cs b/ReClass.NET/Nodes/BaseMatrixNode.cs index b1525ffa..174b2859 100644 --- a/ReClass.NET/Nodes/BaseMatrixNode.cs +++ b/ReClass.NET/Nodes/BaseMatrixNode.cs @@ -67,7 +67,7 @@ protected Size DrawMatrixTypeCompare(ViewInfo view, int x, int y, string type, D Contract.Requires(type != null); Contract.Requires(drawValues != null); - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return DrawHidden(view, x, y); } @@ -155,7 +155,7 @@ protected Size DrawVectorTypeCompare(ViewInfo view, int x, int y, string type, D Contract.Requires(type != null); Contract.Requires(drawValues != null); - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return DrawHidden(view, x, y); } @@ -194,7 +194,7 @@ protected Size DrawVectorTypeCompare(ViewInfo view, int x, int y, string type, D public override int CalculateDrawnHeight(ViewInfo view) { - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return HiddenHeight; } diff --git a/ReClass.NET/Nodes/BaseNumericNode.cs b/ReClass.NET/Nodes/BaseNumericNode.cs index 34d57194..1d753022 100644 --- a/ReClass.NET/Nodes/BaseNumericNode.cs +++ b/ReClass.NET/Nodes/BaseNumericNode.cs @@ -62,7 +62,7 @@ protected Size DrawNumericCompare(ViewInfo view, int x, int y, Image icon, strin Contract.Requires(type != null); Contract.Requires(value != null); - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return DrawHidden(view, x, y); } @@ -97,7 +97,7 @@ protected Size DrawNumericCompare(ViewInfo view, int x, int y, Image icon, strin public override int CalculateDrawnHeight(ViewInfo view) { - return IsHidden ? HiddenHeight : view.Font.Height; + return IsHidden && !view.ShowOptions.ShowHidden ? HiddenHeight : view.Font.Height; } } } diff --git a/ReClass.NET/Nodes/BaseTextNode.cs b/ReClass.NET/Nodes/BaseTextNode.cs index 1eadd95a..b27ae03e 100644 --- a/ReClass.NET/Nodes/BaseTextNode.cs +++ b/ReClass.NET/Nodes/BaseTextNode.cs @@ -72,7 +72,7 @@ protected Size DrawTextCompare(ViewInfo view, int x, int y, string type) Contract.Requires(view != null); Contract.Requires(type != null); - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return DrawHidden(view, x, y); } @@ -111,7 +111,7 @@ protected Size DrawTextCompare(ViewInfo view, int x, int y, string type) public override int CalculateDrawnHeight(ViewInfo view) { - return IsHidden ? HiddenHeight : view.Font.Height; + return IsHidden && !view.ShowOptions.ShowHidden ? HiddenHeight : view.Font.Height; } public override void Update(HotSpot spot) diff --git a/ReClass.NET/Nodes/BaseTextPtrNode.cs b/ReClass.NET/Nodes/BaseTextPtrNode.cs index fa6df966..2564c7dc 100644 --- a/ReClass.NET/Nodes/BaseTextPtrNode.cs +++ b/ReClass.NET/Nodes/BaseTextPtrNode.cs @@ -68,7 +68,7 @@ public Size DrawTextCompare(ViewInfo view, int x, int y, string type) Contract.Requires(view != null); Contract.Requires(type != null); - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return DrawHidden(view, x, y); } @@ -103,7 +103,7 @@ public Size DrawTextCompare(ViewInfo view, int x, int y, string type) public override int CalculateDrawnHeight(ViewInfo view) { - return IsHidden ? HiddenHeight : view.Font.Height; + return IsHidden && !view.ShowOptions.ShowHidden ? HiddenHeight : view.Font.Height; } } } diff --git a/ReClass.NET/Nodes/BoolNode.cs b/ReClass.NET/Nodes/BoolNode.cs index 4daa9a26..a9f54e34 100644 --- a/ReClass.NET/Nodes/BoolNode.cs +++ b/ReClass.NET/Nodes/BoolNode.cs @@ -47,7 +47,7 @@ public override Size Draw(ViewInfo view, int x, int y) public override Size DrawCompare(ViewInfo view, int x, int y) { - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return DrawHidden(view, x, y); } @@ -79,7 +79,7 @@ public override Size DrawCompare(ViewInfo view, int x, int y) public override int CalculateDrawnHeight(ViewInfo view) { - return IsHidden ? HiddenHeight : view.Font.Height; + return IsHidden && !view.ShowOptions.ShowHidden ? HiddenHeight : view.Font.Height; } /// Updates the node from the given spot and sets the value. diff --git a/ReClass.NET/Nodes/ClassNode.cs b/ReClass.NET/Nodes/ClassNode.cs index 17a7a50b..b576bc80 100644 --- a/ReClass.NET/Nodes/ClassNode.cs +++ b/ReClass.NET/Nodes/ClassNode.cs @@ -260,7 +260,7 @@ public override Size DrawCompare(ViewInfo view, int x, int y) public override int CalculateDrawnHeight(ViewInfo view) { - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return HiddenHeight; } diff --git a/ReClass.NET/Nodes/ClassPtrNode.cs b/ReClass.NET/Nodes/ClassPtrNode.cs index 36e9b6e5..008ad5fe 100644 --- a/ReClass.NET/Nodes/ClassPtrNode.cs +++ b/ReClass.NET/Nodes/ClassPtrNode.cs @@ -88,7 +88,7 @@ public override Size DrawCompare(ViewInfo view, int x, int y) { var viewType = (MemoryCompareControl.ViewTypes)view.Tag; var otherViews = (List)view.Tag2; - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return DrawHidden(view, x, y); } @@ -157,7 +157,7 @@ public override Size DrawCompare(ViewInfo view, int x, int y) public override int CalculateDrawnHeight(ViewInfo view) { - if (IsHidden) + if (IsHidden && !view.ShowOptions.ShowHidden) { return HiddenHeight; } diff --git a/ReClass.NET/UI/CompareOptions.cs b/ReClass.NET/UI/CompareOptions.cs index 63440b0c..42724dd2 100644 --- a/ReClass.NET/UI/CompareOptions.cs +++ b/ReClass.NET/UI/CompareOptions.cs @@ -10,5 +10,6 @@ public class CompareOptions { public bool ComparePointer { get; set; } public bool ShowHex { get; set; } + public bool ShowHidden { get; set; } } } From e7b9c135affa55d6c09d1b73c90ef5c2d30dea12 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Sun, 28 Apr 2019 08:52:52 +0200 Subject: [PATCH 29/32] # --- ReClass.NET/Forms/ClassCompare.Designer.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.Designer.cs b/ReClass.NET/Forms/ClassCompare.Designer.cs index 1fc38f2b..136d3e67 100644 --- a/ReClass.NET/Forms/ClassCompare.Designer.cs +++ b/ReClass.NET/Forms/ClassCompare.Designer.cs @@ -170,8 +170,6 @@ private void InitializeComponent() // // groupBox3 // - this.groupBox3.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.groupBox3.Controls.Add(this.PointerCheck); this.groupBox3.Controls.Add(this.ViewTypeBox); this.groupBox3.Location = new System.Drawing.Point(246, 49); From cc00f187680438e13cfadf3e492c64f8673c46dd Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Sun, 28 Apr 2019 09:05:16 +0200 Subject: [PATCH 30/32] Fix Crash --- ReClass.NET/Forms/ClassCompare.Designer.cs | 2 -- ReClass.NET/UI/CompareOptions.cs | 6 +++--- ReClass.NET/UI/ViewInfo.cs | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.Designer.cs b/ReClass.NET/Forms/ClassCompare.Designer.cs index 136d3e67..6e87d2c3 100644 --- a/ReClass.NET/Forms/ClassCompare.Designer.cs +++ b/ReClass.NET/Forms/ClassCompare.Designer.cs @@ -139,8 +139,6 @@ private void InitializeComponent() // // groupBox2 // - this.groupBox2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); this.groupBox2.Controls.Add(this.label1); this.groupBox2.Controls.Add(this.ClassBox); this.groupBox2.Controls.Add(this.removeAddressBox); diff --git a/ReClass.NET/UI/CompareOptions.cs b/ReClass.NET/UI/CompareOptions.cs index 42724dd2..335ac8f2 100644 --- a/ReClass.NET/UI/CompareOptions.cs +++ b/ReClass.NET/UI/CompareOptions.cs @@ -8,8 +8,8 @@ namespace ReClassNET.UI { public class CompareOptions { - public bool ComparePointer { get; set; } - public bool ShowHex { get; set; } - public bool ShowHidden { get; set; } + public bool ComparePointer { get; set; } = false; + public bool ShowHex { get; set; } = false; + public bool ShowHidden { get; set; } = false; } } diff --git a/ReClass.NET/UI/ViewInfo.cs b/ReClass.NET/UI/ViewInfo.cs index a5fcb6e8..5b0c628c 100644 --- a/ReClass.NET/UI/ViewInfo.cs +++ b/ReClass.NET/UI/ViewInfo.cs @@ -21,7 +21,7 @@ public class ViewInfo public int Level { get; set; } public bool MultipleNodesSelected { get; set; } - public CompareOptions ShowOptions { get; set; } + public CompareOptions ShowOptions { get; set; } = new CompareOptions(); public object Tag { get; set; } public object Tag2 { get; set; } From 36cd53afeccf399f78a0db46c364c35646830969 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Sun, 28 Apr 2019 09:31:35 +0200 Subject: [PATCH 31/32] # --- ReClass.NET/Forms/ClassCompare.Designer.cs | 2 +- ReClass.NET/Forms/ClassCompare.cs | 27 +++++++++++++++------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/ReClass.NET/Forms/ClassCompare.Designer.cs b/ReClass.NET/Forms/ClassCompare.Designer.cs index 6e87d2c3..109c7ad0 100644 --- a/ReClass.NET/Forms/ClassCompare.Designer.cs +++ b/ReClass.NET/Forms/ClassCompare.Designer.cs @@ -92,7 +92,7 @@ private void InitializeComponent() this.addressPanel.Controls.Add(this.Box1); this.addressPanel.Location = new System.Drawing.Point(10, 96); this.addressPanel.Name = "addressPanel"; - this.addressPanel.Size = new System.Drawing.Size(685, 45); + this.addressPanel.Size = new System.Drawing.Size(506, 45); this.addressPanel.TabIndex = 1; // // Box2 diff --git a/ReClass.NET/Forms/ClassCompare.cs b/ReClass.NET/Forms/ClassCompare.cs index 0ffea191..c0c66756 100644 --- a/ReClass.NET/Forms/ClassCompare.cs +++ b/ReClass.NET/Forms/ClassCompare.cs @@ -5,6 +5,7 @@ using System.Collections.Generic; using System.ComponentModel; using System.Data; +using System.Diagnostics; using System.Diagnostics.Contracts; using System.Drawing; using System.Linq; @@ -38,14 +39,18 @@ public ClassCompare(IEnumerable classes) Name = "ViewBox1", Dock = DockStyle.Fill, Memory = new MemoryBuffer() { Process = Program.RemoteProcess }, - ShowOptions = new CompareOptions() + ShowOptions = new CompareOptions(), + AutoScroll = false, + AutoSize = false }; var ViewBox2 = new MemoryCompareControl() { Name = "ViewBox2", Dock = DockStyle.Fill, Memory = new MemoryBuffer() { Process = Program.RemoteProcess }, - ShowOptions = new CompareOptions() + ShowOptions = new CompareOptions(), + AutoScroll = false, + AutoSize = false }; // Events @@ -85,6 +90,7 @@ protected override void OnFormClosed(FormClosedEventArgs e) GlobalWindowManager.RemoveWindow(this); } + [DebuggerStepThrough] private void ExecAllViewBox(Action action) { foreach (var item in CompareItems.Select(i => i.ViewBox)) @@ -179,13 +185,18 @@ private void timer1_Tick(object sender, EventArgs e) private void tableLayoutPanel1_Scroll(object sender, ScrollEventArgs e) { - foreach (var item in LayoutPanel.Panel.Controls.OfType().ToArray()) + ExecAllViewBox(item => { - if (e.ScrollOrientation == ScrollOrientation.VerticalScroll) - item.VerticalScroll.Value = e.NewValue; - else if (e.ScrollOrientation == ScrollOrientation.HorizontalScroll) - item.HorizontalScroll.Value = e.NewValue; - } + switch (e.ScrollOrientation) + { + case ScrollOrientation.HorizontalScroll: + item.HorizontalScroll.Value = e.NewValue; + break; + case ScrollOrientation.VerticalScroll: + item.VerticalScroll.Value = e.NewValue; + break; + } + }); } private void ClassBox_SelectedIndexChanged(object sender, EventArgs e) From e84571b81f20e3be8c71c639ab800107eb3fed46 Mon Sep 17 00:00:00 2001 From: Islam Nofl Date: Tue, 21 May 2019 02:12:26 +0200 Subject: [PATCH 32/32] Update README.md --- README.md | 15 +-------------- 1 file changed, 1 insertion(+), 14 deletions(-) diff --git a/README.md b/README.md index 19775e2c..bae87bc6 100644 --- a/README.md +++ b/README.md @@ -12,18 +12,5 @@ https://github.com/ReClassNET/ReClass.NET/blob/master/README.md ![](https://github.com/CorrM/ReClass.NET/raw/master/img/Class%20Compare.png) ## Authors / Special Thanks -- [KN4CK3R](https://github.com/KN4CK3R) -- DrUnKeN ChEeTaH -- P47R!CK -- DogMatt -- [Dude719](https://github.com/dude719) -- [IChooseYou](https://github.com/IChooseYou) -- [stevemk14ebr](https://github.com/stevemk14ebr) -- [Timboy67678](https://github.com/Timboy67678) -- [DarthTon](https://github.com/DarthTon) -- [ReUnioN](https://github.com/ReUnioN) -- leveln -- [buddyfavors](https://github.com/buddyfavors) -- [DrP3pp3r](https://github.com/DrP3pp3r) -- [ko1N](https://github.com/ko1N) +- [Base Authors](https://github.com/ReClassNET/ReClass.NET/blob/master/README.md#authors--special-thanks) - [CorrM](https://github.com/CorrM)