├── CosExampleDriver ├── CosExampleDriver.sln └── CosExampleDriver │ ├── CosExampleDriver.filters │ ├── CosExampleDriver.user │ ├── CosExampleDriver.vcxproj │ ├── Include.hpp │ └── Main.cpp ├── CosKernelmode ├── CosKernelmode.sln └── CosKernelmode │ ├── CosKernelmode.vcxproj │ ├── CosKernelmode.vcxproj.filters │ ├── CosKernelmode.vcxproj.user │ ├── Include.hpp │ ├── Main.cpp │ ├── Mapper.cpp │ ├── Mapper.hpp │ ├── Memory.cpp │ ├── Memory.hpp │ ├── Native.cpp │ ├── Native.hpp │ ├── Signature Scan.cpp │ └── Signature Scan.hpp ├── CosUsermode ├── CosUsermode.sln └── CosUsermode │ ├── CosUsermode.vcxproj │ ├── CosUsermode.vcxproj.filters │ ├── CosUsermode.vcxproj.user │ ├── loadup.hpp │ ├── main.cpp │ ├── mapper_resource.hpp │ ├── stdafx.hpp │ └── util.hpp ├── README.md └── example.PNG /CosExampleDriver/CosExampleDriver.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30804.86 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CosExampleDriver", "CosExampleDriver\CosExampleDriver.vcxproj", "{89A95BE7-6815-4B4B-BCD6-6C83FB47A920}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Release|x64 = Release|x64 11 | EndGlobalSection 12 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 13 | {89A95BE7-6815-4B4B-BCD6-6C83FB47A920}.Release|x64.ActiveCfg = Release|x64 14 | {89A95BE7-6815-4B4B-BCD6-6C83FB47A920}.Release|x64.Build.0 = Release|x64 15 | {89A95BE7-6815-4B4B-BCD6-6C83FB47A920}.Release|x64.Deploy.0 = Release|x64 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | GlobalSection(ExtensibilityGlobals) = postSolution 21 | SolutionGuid = {FF68B84B-D997-4FA3-8258-A9B5E5967AFF} 22 | EndGlobalSection 23 | EndGlobal 24 | -------------------------------------------------------------------------------- /CosExampleDriver/CosExampleDriver/CosExampleDriver.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {8E41214B-6785-4CFE-B992-037D68949A14} 18 | inf;inv;inx;mof;mc; 19 | 20 | 21 | 22 | 23 | Source Files 24 | 25 | 26 | 27 | 28 | Header Files 29 | 30 | 31 | -------------------------------------------------------------------------------- /CosExampleDriver/CosExampleDriver/CosExampleDriver.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Off 5 | 6 | -------------------------------------------------------------------------------- /CosExampleDriver/CosExampleDriver/CosExampleDriver.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | Debug 22 | ARM 23 | 24 | 25 | Release 26 | ARM 27 | 28 | 29 | Debug 30 | ARM64 31 | 32 | 33 | Release 34 | ARM64 35 | 36 | 37 | 38 | {89A95BE7-6815-4B4B-BCD6-6C83FB47A920} 39 | {1bc93793-694f-48fe-9372-81e2b05556fd} 40 | v4.5 41 | 12.0 42 | Debug 43 | Win32 44 | SpooferDriver 45 | $(LatestTargetPlatformVersion) 46 | CosExampleDriver 47 | 48 | 49 | 50 | Windows10 51 | true 52 | WindowsKernelModeDriver10.0 53 | Driver 54 | KMDF 55 | Universal 56 | 57 | 58 | Windows10 59 | false 60 | WindowsKernelModeDriver10.0 61 | Driver 62 | KMDF 63 | Universal 64 | 65 | 66 | Windows10 67 | true 68 | WindowsKernelModeDriver10.0 69 | Driver 70 | KMDF 71 | Universal 72 | 73 | 74 | Windows10 75 | false 76 | WindowsKernelModeDriver10.0 77 | Driver 78 | KMDF 79 | Universal 80 | false 81 | 82 | 83 | Windows10 84 | true 85 | WindowsKernelModeDriver10.0 86 | Driver 87 | KMDF 88 | Universal 89 | 90 | 91 | Windows10 92 | false 93 | WindowsKernelModeDriver10.0 94 | Driver 95 | KMDF 96 | Universal 97 | 98 | 99 | Windows10 100 | true 101 | WindowsKernelModeDriver10.0 102 | Driver 103 | KMDF 104 | Universal 105 | 106 | 107 | Windows10 108 | false 109 | WindowsKernelModeDriver10.0 110 | Driver 111 | KMDF 112 | Universal 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | DbgengKernelDebugger 125 | 126 | 127 | DbgengKernelDebugger 128 | 129 | 130 | DbgengKernelDebugger 131 | $(VC_IncludePath);$(IncludePath) 132 | 133 | 134 | DbgengKernelDebugger 135 | $(VC_IncludePath);$(IncludePath) 136 | $(SolutionDir)Output\ 137 | $(SolutionDir)CosExampleDriver\Bin\ 138 | 139 | 140 | DbgengKernelDebugger 141 | 142 | 143 | DbgengKernelDebugger 144 | 145 | 146 | DbgengKernelDebugger 147 | 148 | 149 | DbgengKernelDebugger 150 | 151 | 152 | 153 | stdcpp17 154 | TurnOffAllWarnings 155 | false 156 | true 157 | 158 | 159 | DriverEntry 160 | 161 | 162 | 163 | 164 | stdcpp17 165 | TurnOffAllWarnings 166 | false 167 | true 168 | 169 | 170 | DriverEntry 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | -------------------------------------------------------------------------------- /CosExampleDriver/CosExampleDriver/Include.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | 9 | #define DebugPrint(fmt, ...) DbgPrintEx(0, 0, "[ExampleMappedDriver] " fmt, ##__VA_ARGS__) -------------------------------------------------------------------------------- /CosExampleDriver/CosExampleDriver/Main.cpp: -------------------------------------------------------------------------------- 1 | #include "Include.hpp" 2 | 3 | struct EntryInitialize 4 | { 5 | std::uintptr_t mappedImageBase{}; 6 | std::size_t mappedImageSize{}; 7 | }; 8 | 9 | NTSTATUS DriverEntry(EntryInitialize* entryParam) 10 | { 11 | DebugPrint("Example Driver Mapped [%p] w/ Size [0x%x]", entryParam->mappedImageBase, entryParam->mappedImageSize); 12 | 13 | ExFreePool(reinterpret_cast(entryParam)); 14 | 15 | return STATUS_SUCCESS; 16 | } -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30804.86 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SignedManualMapper", "CosKernelmode\CosKernelmode.vcxproj", "{1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|ARM = Debug|ARM 11 | Debug|ARM64 = Debug|ARM64 12 | Debug|x64 = Debug|x64 13 | Debug|x86 = Debug|x86 14 | Release|ARM = Release|ARM 15 | Release|ARM64 = Release|ARM64 16 | Release|x64 = Release|x64 17 | Release|x86 = Release|x86 18 | EndGlobalSection 19 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 20 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM.ActiveCfg = Debug|ARM 21 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM.Build.0 = Debug|ARM 22 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM.Deploy.0 = Debug|ARM 23 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM64.ActiveCfg = Debug|ARM64 24 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM64.Build.0 = Debug|ARM64 25 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|ARM64.Deploy.0 = Debug|ARM64 26 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x64.ActiveCfg = Debug|x64 27 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x64.Build.0 = Debug|x64 28 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x64.Deploy.0 = Debug|x64 29 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x86.ActiveCfg = Debug|Win32 30 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x86.Build.0 = Debug|Win32 31 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Debug|x86.Deploy.0 = Debug|Win32 32 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM.ActiveCfg = Release|ARM 33 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM.Build.0 = Release|ARM 34 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM.Deploy.0 = Release|ARM 35 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM64.ActiveCfg = Release|ARM64 36 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM64.Build.0 = Release|ARM64 37 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|ARM64.Deploy.0 = Release|ARM64 38 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x64.ActiveCfg = Release|x64 39 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x64.Build.0 = Release|x64 40 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x64.Deploy.0 = Release|x64 41 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x86.ActiveCfg = Release|Win32 42 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x86.Build.0 = Release|Win32 43 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6}.Release|x86.Deploy.0 = Release|Win32 44 | EndGlobalSection 45 | GlobalSection(SolutionProperties) = preSolution 46 | HideSolutionNode = FALSE 47 | EndGlobalSection 48 | GlobalSection(ExtensibilityGlobals) = postSolution 49 | SolutionGuid = {FF68B84B-D997-4FA3-8258-A9B5E5967AFF} 50 | EndGlobalSection 51 | EndGlobal 52 | -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/CosKernelmode.vcxproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | Debug 22 | ARM 23 | 24 | 25 | Release 26 | ARM 27 | 28 | 29 | Debug 30 | ARM64 31 | 32 | 33 | Release 34 | ARM64 35 | 36 | 37 | 38 | {1E272B48-82A2-4222-97C4-BC6D4FA1CBF6} 39 | {1bc93793-694f-48fe-9372-81e2b05556fd} 40 | v4.5 41 | 12.0 42 | Debug 43 | Win32 44 | CosExampleDriver 45 | $(LatestTargetPlatformVersion) 46 | CosExampleDriver 47 | 48 | 49 | 50 | Windows10 51 | true 52 | WindowsKernelModeDriver10.0 53 | Driver 54 | KMDF 55 | Universal 56 | 57 | 58 | Windows10 59 | false 60 | WindowsKernelModeDriver10.0 61 | Driver 62 | KMDF 63 | Universal 64 | 65 | 66 | Windows10 67 | true 68 | WindowsKernelModeDriver10.0 69 | Driver 70 | KMDF 71 | Universal 72 | 73 | 74 | Windows10 75 | false 76 | WindowsKernelModeDriver10.0 77 | Driver 78 | KMDF 79 | Universal 80 | false 81 | 82 | 83 | Windows10 84 | true 85 | WindowsKernelModeDriver10.0 86 | Driver 87 | KMDF 88 | Universal 89 | 90 | 91 | Windows10 92 | false 93 | WindowsKernelModeDriver10.0 94 | Driver 95 | KMDF 96 | Universal 97 | 98 | 99 | Windows10 100 | true 101 | WindowsKernelModeDriver10.0 102 | Driver 103 | KMDF 104 | Universal 105 | 106 | 107 | Windows10 108 | false 109 | WindowsKernelModeDriver10.0 110 | Driver 111 | KMDF 112 | Universal 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | DbgengKernelDebugger 124 | 125 | 126 | DbgengKernelDebugger 127 | 128 | 129 | DbgengKernelDebugger 130 | $(VC_IncludePath);$(IncludePath) 131 | 132 | 133 | DbgengKernelDebugger 134 | $(VC_IncludePath);$(IncludePath) 135 | $(SolutionDir)Output\ 136 | $(SolutionDir)CosExampleDriver\Bin\ 137 | 138 | 139 | DbgengKernelDebugger 140 | 141 | 142 | DbgengKernelDebugger 143 | 144 | 145 | DbgengKernelDebugger 146 | 147 | 148 | DbgengKernelDebugger 149 | 150 | 151 | 152 | stdcpp17 153 | TurnOffAllWarnings 154 | false 155 | true 156 | 157 | 158 | DriverEntry 159 | 160 | 161 | 162 | 163 | stdcpp17 164 | TurnOffAllWarnings 165 | false 166 | true 167 | 168 | 169 | DriverEntry 170 | 171 | 172 | 173 | 174 | 175 | 176 | 177 | 178 | 179 | 180 | 181 | 182 | 183 | 184 | 185 | 186 | 187 | 188 | 189 | 190 | 191 | 192 | -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/CosKernelmode.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hpp;hxx;hm;inl;inc;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | {8E41214B-6785-4CFE-B992-037D68949A14} 18 | inf;inv;inx;mof;mc; 19 | 20 | 21 | 22 | 23 | Source Files 24 | 25 | 26 | Source Files 27 | 28 | 29 | Source Files 30 | 31 | 32 | Source Files 33 | 34 | 35 | Source Files 36 | 37 | 38 | 39 | 40 | Header Files 41 | 42 | 43 | Header Files 44 | 45 | 46 | Header Files 47 | 48 | 49 | Header Files 50 | 51 | 52 | Header Files 53 | 54 | 55 | -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/CosKernelmode.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | Off 5 | 6 | -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Include.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | #include 4 | #include 5 | 6 | #include 7 | #include 8 | #include 9 | 10 | #include "Native.hpp" 11 | #include "Mapper.hpp" 12 | #include "Memory.hpp" 13 | 14 | #include "Signature Scan.hpp" 15 | 16 | #define RelativeAddress(addr, size) ((PVOID*)((PBYTE)(addr) + *(PINT)((PBYTE)(addr) + ((size) - (INT)sizeof(INT))) + (size))) 17 | #define DebugPrint(fmt, ...) DbgPrintEx(0, 0, "[SignedManualMapper] " fmt, ##__VA_ARGS__) -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Main.cpp: -------------------------------------------------------------------------------- 1 | #include "Include.hpp" 2 | 3 | std::uintptr_t(NTAPI* EnumerateDebuggingDevicesOriginal)(std::uintptr_t, std::uintptr_t*); 4 | std::uintptr_t hookAddress{}; 5 | 6 | struct EntryInitialize 7 | { 8 | std::uintptr_t mappedImageBase{}; 9 | std::size_t mappedImageSize{}; 10 | }; 11 | 12 | struct HookStruct 13 | { 14 | std::size_t rawDataSize{}; 15 | std::uintptr_t rawDataAddress{}; 16 | }; 17 | 18 | using EntryFuncCall = NTSTATUS(__stdcall*) (EntryInitialize*); 19 | 20 | std::uintptr_t NTAPI EnumerateDebuggingDevicesHook(std::uintptr_t data, std::uintptr_t* status) 21 | { 22 | if (ExGetPreviousMode() != UserMode || !data) 23 | { 24 | return EnumerateDebuggingDevicesOriginal(data, status); 25 | } 26 | 27 | HookStruct requestStruct = { 0 }; 28 | if (!Native::safeCopyMemory(&requestStruct, reinterpret_cast(data), sizeof(requestStruct)) || !requestStruct.rawDataSize || !requestStruct.rawDataAddress) 29 | { 30 | return EnumerateDebuggingDevicesOriginal(data, status); 31 | } 32 | 33 | std::uintptr_t driverBase = reinterpret_cast(ExAllocatePool(NonPagedPool, requestStruct.rawDataSize)); 34 | if (!driverBase) return STATUS_UNSUCCESSFUL; 35 | 36 | memcpy(reinterpret_cast(driverBase), reinterpret_cast(requestStruct.rawDataAddress), requestStruct.rawDataSize); 37 | 38 | Mapper::resolveImports(driverBase); 39 | 40 | const auto dosHeaders = reinterpret_cast(driverBase); 41 | const auto ntHeaders = reinterpret_cast(driverBase + dosHeaders->e_lfanew); 42 | 43 | const PIMAGE_SECTION_HEADER currentImageSection = IMAGE_FIRST_SECTION(ntHeaders); 44 | 45 | // Allocate Memory for Mapped Driver w/o HEADERS Size - PAGE_SIZE (Mapping Without PE Header (First Page)) 46 | const auto driverAllocationBase = reinterpret_cast(ExAllocatePool(NonPagedPool, ntHeaders->OptionalHeader.SizeOfImage)) - PAGE_SIZE; 47 | if (!driverAllocationBase) 48 | { 49 | *status = STATUS_UNSUCCESSFUL; 50 | return 0; 51 | } 52 | 53 | Memory::cleanBigPoolAllocation(driverAllocationBase + PAGE_SIZE); 54 | 55 | for (auto i = 0; i < ntHeaders->FileHeader.NumberOfSections; ++i) 56 | { 57 | auto sectionAddress = reinterpret_cast(driverAllocationBase + currentImageSection[i].VirtualAddress); 58 | 59 | memcpy(sectionAddress, reinterpret_cast(driverBase + currentImageSection[i].PointerToRawData), currentImageSection[i].SizeOfRawData); 60 | } 61 | 62 | Mapper::resolveRelocations(driverBase, driverAllocationBase, driverAllocationBase - ntHeaders->OptionalHeader.ImageBase); 63 | 64 | ExFreePool(reinterpret_cast(driverBase)); 65 | 66 | const auto entryParams = reinterpret_cast(ExAllocatePool(NonPagedPool, sizeof(EntryInitialize))); 67 | if (!entryParams) 68 | { 69 | *status = STATUS_UNSUCCESSFUL; 70 | return 0; 71 | } 72 | 73 | entryParams->mappedImageBase = driverAllocationBase; 74 | entryParams->mappedImageSize = ntHeaders->OptionalHeader.SizeOfImage; 75 | 76 | EntryFuncCall mappedEntryPoint = reinterpret_cast(driverAllocationBase + ntHeaders->OptionalHeader.AddressOfEntryPoint); 77 | 78 | *status = mappedEntryPoint(entryParams); 79 | 80 | return 0; 81 | } 82 | 83 | void DriverUnload(PDRIVER_OBJECT driverObject) 84 | { 85 | reinterpret_cast(InterlockedExchangePointer(RelativeAddress(hookAddress, 7), (PVOID)EnumerateDebuggingDevicesOriginal)); 86 | 87 | reinterpret_cast(driverObject->DriverSection)->BaseDllName.Length = 0; 88 | 89 | Memory::cleanPiddbCache(driverObject); 90 | } 91 | 92 | NTSTATUS DriverEntry(const PDRIVER_OBJECT driverObject, const PUNICODE_STRING registryPath) 93 | { 94 | driverObject->DriverUnload = DriverUnload; 95 | 96 | std::uintptr_t ntoskrnlBase; 97 | std::uintptr_t ntoskrnlSize; 98 | 99 | Native::getKernelModuleByName("ntoskrnl.exe", &ntoskrnlBase, &ntoskrnlSize); 100 | if (!ntoskrnlBase) 101 | { 102 | return STATUS_FAILED_DRIVER_ENTRY; 103 | } 104 | 105 | hookAddress = Scanner::scanPattern(reinterpret_cast(ntoskrnlBase), ntoskrnlSize, "\x48\x8B\x05\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x8B\xC8\x85\xC0\x78\x40", "xxx????x????xxxxxx"); 106 | if (!hookAddress) 107 | { 108 | return STATUS_FAILED_DRIVER_ENTRY; 109 | } 110 | 111 | *reinterpret_cast(&EnumerateDebuggingDevicesOriginal) = reinterpret_cast(InterlockedExchangePointer(RelativeAddress(hookAddress, 7), (PVOID)EnumerateDebuggingDevicesHook)); 112 | 113 | return STATUS_SUCCESS; 114 | } -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Mapper.cpp: -------------------------------------------------------------------------------- 1 | #include "Include.hpp" 2 | 3 | namespace Mapper 4 | { 5 | PIMAGE_SECTION_HEADER TranslateRawSection(PIMAGE_NT_HEADERS nt, DWORD rva) 6 | { 7 | auto section = IMAGE_FIRST_SECTION(nt); 8 | for (auto i = 0; i < nt->FileHeader.NumberOfSections; ++i, ++section) 9 | { 10 | if (rva >= section->VirtualAddress && rva < section->VirtualAddress + section->Misc.VirtualSize) 11 | { 12 | return section; 13 | } 14 | } 15 | 16 | return NULL; 17 | } 18 | 19 | PVOID TranslateRaw(PBYTE base, PIMAGE_NT_HEADERS nt, DWORD rva) 20 | { 21 | auto section = TranslateRawSection(nt, rva); 22 | if (!section) 23 | { 24 | return NULL; 25 | } 26 | 27 | return base + section->PointerToRawData + (rva - section->VirtualAddress); 28 | } 29 | 30 | void resolveRelocations(std::uintptr_t imageBase, std::uintptr_t newBase, std::uintptr_t delta) 31 | { 32 | const auto dosHeaders = reinterpret_cast(imageBase); 33 | const auto ntHeaders = reinterpret_cast(imageBase + dosHeaders->e_lfanew); 34 | 35 | DWORD reloc_va = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress; 36 | 37 | if (!reloc_va) 38 | return; 39 | 40 | auto current_base_relocation = reinterpret_cast(newBase + reloc_va); 41 | const auto reloc_end = reinterpret_cast(current_base_relocation) + ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size; 42 | 43 | while (current_base_relocation->VirtualAddress && current_base_relocation->VirtualAddress < reloc_end && current_base_relocation->SizeOfBlock) 44 | { 45 | uint64_t current_reloc_address = newBase + current_base_relocation->VirtualAddress; 46 | uint16_t* current_reloc_item = reinterpret_cast(reinterpret_cast(current_base_relocation) + sizeof(IMAGE_BASE_RELOCATION)); 47 | uint32_t current_reloc_count = (current_base_relocation->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(uint16_t); 48 | 49 | for (auto i = 0u; i < current_reloc_count; ++i) 50 | { 51 | const uint16_t type = current_reloc_item[i] >> 12; 52 | const uint16_t offset = current_reloc_item[i] & 0xFFF; 53 | 54 | if (type == IMAGE_REL_BASED_DIR64) 55 | *reinterpret_cast(current_reloc_address + offset) += delta; 56 | } 57 | 58 | current_base_relocation = reinterpret_cast(reinterpret_cast(current_base_relocation) + current_base_relocation->SizeOfBlock); 59 | } 60 | } 61 | 62 | BOOLEAN resolveImports(std::uintptr_t imageBase) 63 | { 64 | const auto dosHeaders = reinterpret_cast(imageBase); 65 | const auto ntHeaders = reinterpret_cast(imageBase + dosHeaders->e_lfanew); 66 | 67 | auto rva = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; 68 | if (!rva) 69 | { 70 | return TRUE; 71 | } 72 | 73 | auto importDescriptor = reinterpret_cast(TranslateRaw(reinterpret_cast(imageBase), ntHeaders, rva)); 74 | if (!importDescriptor) 75 | { 76 | return TRUE; 77 | } 78 | 79 | for (; importDescriptor->FirstThunk; ++importDescriptor) 80 | { 81 | auto moduleName = reinterpret_cast(TranslateRaw(reinterpret_cast(imageBase), ntHeaders, importDescriptor->Name)); 82 | if (!moduleName) 83 | { 84 | break; 85 | } 86 | 87 | std::uintptr_t processModuleBase = NULL; 88 | std::size_t processModuleSize = 0; 89 | 90 | Native::getKernelModuleByName(moduleName, &processModuleBase, &processModuleSize); 91 | 92 | if (!processModuleBase) 93 | { 94 | return FALSE; 95 | } 96 | 97 | for (auto thunk = reinterpret_cast(TranslateRaw(reinterpret_cast(imageBase), ntHeaders, importDescriptor->FirstThunk)); thunk->u1.AddressOfData; ++thunk) 98 | { 99 | auto importByName = reinterpret_cast(TranslateRaw(reinterpret_cast(imageBase), ntHeaders, static_cast(thunk->u1.AddressOfData))); 100 | 101 | std::uintptr_t funcPtr = reinterpret_cast(RtlFindExportedRoutineByName(reinterpret_cast(processModuleBase), importByName->Name)); 102 | 103 | if (!funcPtr) 104 | { 105 | return FALSE; 106 | } 107 | 108 | thunk->u1.Function = funcPtr; 109 | } 110 | } 111 | 112 | return TRUE; 113 | } 114 | } -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Mapper.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Mapper 4 | { 5 | BOOLEAN resolveImports(std::uintptr_t imageBase); 6 | void resolveRelocations(std::uintptr_t imageBase, std::uintptr_t newBase, std::uintptr_t delta); 7 | } -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Memory.cpp: -------------------------------------------------------------------------------- 1 | #include "Include.hpp" 2 | 3 | typedef struct PiDDBCacheEntry 4 | { 5 | LIST_ENTRY list; 6 | UNICODE_STRING driverName; 7 | ULONG driverStamp; 8 | NTSTATUS loadStatus; 9 | }; 10 | 11 | typedef struct _POOL_TRACKER_BIG_PAGES 12 | { 13 | PVOID Va; 14 | ULONG Key; 15 | ULONG PoolType; 16 | ULONG NumberOfBytes; 17 | } POOL_TRACKER_BIG_PAGES, * PPOOL_TRACKER_BIG_PAGES; 18 | 19 | namespace Memory 20 | { 21 | NTSTATUS cleanBigPoolAllocation(std::uintptr_t allocationAddress) 22 | { 23 | std::uintptr_t ntoskrnlBase{}; 24 | std::size_t ntoskrnlSize{}; 25 | 26 | Native::getKernelModuleByName("ntoskrnl.exe", &ntoskrnlBase, &ntoskrnlSize); 27 | 28 | std::uintptr_t exProtectPoolExCallInstructionsAddress = Scanner::scanPattern(reinterpret_cast(ntoskrnlBase), ntoskrnlSize, "\xE8\x00\x00\x00\x00\x83\x67\x0C\x00", "x????xxxx"); 29 | 30 | if (!exProtectPoolExCallInstructionsAddress) 31 | return STATUS_NOT_FOUND; 32 | 33 | void* ExProtectPoolExAddress = reinterpret_cast(exProtectPoolExCallInstructionsAddress + *reinterpret_cast(exProtectPoolExCallInstructionsAddress + 1) + 5); 34 | 35 | if (!ExProtectPoolExAddress) 36 | return STATUS_NOT_FOUND; 37 | 38 | uintptr_t PoolBigPageTableInstructionAddress = ((ULONG64)ExProtectPoolExAddress + 0x95); 39 | uint64_t pPoolBigPageTable = (uint64_t)(PoolBigPageTableInstructionAddress + *reinterpret_cast(PoolBigPageTableInstructionAddress + 3) + 7); 40 | 41 | uintptr_t PoolBigPageTableSizeInstructionAddress = ((ULONG64)ExProtectPoolExAddress + 0x8E); 42 | uint64_t pPoolBigPageTableSize = (uint64_t)(PoolBigPageTableSizeInstructionAddress + *reinterpret_cast(PoolBigPageTableSizeInstructionAddress + 3) + 7); 43 | 44 | if (!pPoolBigPageTableSize || !pPoolBigPageTable) 45 | return STATUS_NOT_FOUND; 46 | 47 | PPOOL_TRACKER_BIG_PAGES PoolBigPageTable = 0; 48 | RtlCopyMemory(&PoolBigPageTable, (PVOID)pPoolBigPageTable, 8); 49 | 50 | SIZE_T PoolBigPageTableSize = 0; 51 | RtlCopyMemory(&PoolBigPageTableSize, (PVOID)pPoolBigPageTableSize, 8); 52 | 53 | if (!PoolBigPageTableSize || !PoolBigPageTable) 54 | return STATUS_NOT_FOUND; 55 | 56 | for (int i = 0; i < PoolBigPageTableSize; i++) 57 | { 58 | if (PoolBigPageTable[i].Va == reinterpret_cast(allocationAddress) || PoolBigPageTable[i].Va == reinterpret_cast(allocationAddress + 0x1)) 59 | { 60 | PoolBigPageTable[i].Va = reinterpret_cast(0x1); 61 | PoolBigPageTable[i].NumberOfBytes = 0x0; 62 | 63 | return STATUS_SUCCESS; 64 | } 65 | } 66 | 67 | return STATUS_NOT_FOUND; 68 | } 69 | 70 | NTSTATUS cleanPiddbCache(PDRIVER_OBJECT driverObject) 71 | { 72 | std::uintptr_t ntoskrnlBase{}; 73 | std::size_t ntoskrnlSize{}; 74 | 75 | Native::getKernelModuleByName("ntoskrnl.exe", &ntoskrnlBase, &ntoskrnlSize); 76 | 77 | std::uintptr_t piddbLockAddress = Scanner::scanPattern(reinterpret_cast(ntoskrnlBase), ntoskrnlSize, "\x48\x8D\x0D\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x4C\x8B\x8C\x24", "xxx????x????xxxx"); 78 | 79 | if(!piddbLockAddress) 80 | return STATUS_UNSUCCESSFUL; 81 | 82 | piddbLockAddress += 3; 83 | piddbLockAddress += *reinterpret_cast(piddbLockAddress) + sizeof(std::int32_t); 84 | 85 | std::uintptr_t piddbTableAddress = Scanner::scanPattern(reinterpret_cast(ntoskrnlBase), ntoskrnlSize, "\x48\x8D\x0D\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x48\x8D\x1D\x00\x00\x00\x00\x48\x85\xC0\x0F", "xxx????x????xxx????xxxx"); 86 | 87 | if (!piddbTableAddress) 88 | return STATUS_UNSUCCESSFUL; 89 | 90 | piddbTableAddress += 3; 91 | piddbTableAddress += *reinterpret_cast(piddbTableAddress) + sizeof(std::int32_t); 92 | 93 | PiDDBCacheEntry cacheEntry; 94 | RtlInitUnicodeString(&cacheEntry.driverName, reinterpret_cast(driverObject->DriverSection)->BaseDllName.Buffer); 95 | 96 | if (!ExAcquireResourceExclusiveLite(reinterpret_cast(piddbLockAddress), true)) 97 | return STATUS_UNSUCCESSFUL; 98 | 99 | PiDDBCacheEntry* entryPointer = 100 | reinterpret_cast(RtlLookupElementGenericTableAvl( 101 | reinterpret_cast(piddbTableAddress), 102 | reinterpret_cast(&cacheEntry) 103 | )); 104 | 105 | if (entryPointer) 106 | { 107 | PLIST_ENTRY NextEntry = entryPointer->list.Flink; 108 | PLIST_ENTRY PrevEntry = entryPointer->list.Blink; 109 | 110 | PrevEntry->Flink = entryPointer->list.Flink; 111 | NextEntry->Blink = entryPointer->list.Blink; 112 | 113 | entryPointer->list.Blink = PrevEntry; 114 | entryPointer->list.Flink = NextEntry; 115 | 116 | RtlDeleteElementGenericTableAvl(reinterpret_cast(piddbTableAddress), entryPointer); 117 | } 118 | else 119 | return STATUS_UNSUCCESSFUL; 120 | 121 | ExReleaseResourceLite(reinterpret_cast(piddbLockAddress)); 122 | 123 | return STATUS_SUCCESS; 124 | } 125 | } -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Memory.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Memory 4 | { 5 | NTSTATUS cleanPiddbCache(PDRIVER_OBJECT driverObject); 6 | NTSTATUS cleanBigPoolAllocation(std::uintptr_t allocationAddress); 7 | } -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Native.cpp: -------------------------------------------------------------------------------- 1 | #include "Include.hpp" 2 | 3 | namespace Native 4 | { 5 | bool safeCopyMemory(PVOID dest, PVOID src, SIZE_T size) 6 | { 7 | SIZE_T returnSize = 0; 8 | if (NT_SUCCESS(MmCopyVirtualMemory(PsGetCurrentProcess(), src, PsGetCurrentProcess(), dest, size, KernelMode, &returnSize)) && returnSize == size) { 9 | return TRUE; 10 | } 11 | 12 | return FALSE; 13 | } 14 | 15 | NTSTATUS getKernelModuleByName(const char* moduleName, std::uintptr_t* moduleStart, std::size_t* moduleSize) 16 | { 17 | if (!moduleStart || !moduleSize) 18 | return STATUS_INVALID_PARAMETER; 19 | 20 | std::size_t size{}; 21 | ZwQuerySystemInformation(0xB, nullptr, size, reinterpret_cast(&size)); 22 | 23 | const auto listHeader = ExAllocatePool(NonPagedPool, size); 24 | if (!listHeader) 25 | return STATUS_MEMORY_NOT_ALLOCATED; 26 | 27 | if (const auto status = ZwQuerySystemInformation(0xB, listHeader, size, reinterpret_cast(&size))) 28 | return status; 29 | 30 | auto currentModule = reinterpret_cast(listHeader)->Module; 31 | for (std::size_t i{}; i < reinterpret_cast(listHeader)->Count; ++i, ++currentModule) 32 | { 33 | const auto currentModuleName = reinterpret_cast(currentModule->FullPathName + currentModule->OffsetToFileName); 34 | if (!strcmp(moduleName, currentModuleName)) 35 | { 36 | *moduleStart = reinterpret_cast(currentModule->ImageBase); 37 | *moduleSize = currentModule->ImageSize; 38 | return STATUS_SUCCESS; 39 | } 40 | } 41 | 42 | return STATUS_NOT_FOUND; 43 | } 44 | } -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Native.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | extern "C" 4 | { 5 | NTSTATUS NTAPI ZwQuerySystemInformation(ULONG SystemInformationClass, PVOID SystemInformation, 6 | ULONG SystemInformationLength, PULONG ReturnLength); 7 | 8 | extern "C" NTKERNELAPI 9 | PVOID 10 | NTAPI 11 | RtlFindExportedRoutineByName( 12 | _In_ PVOID ImageBase, 13 | _In_ PCCH RoutineNam 14 | ); 15 | 16 | NTKERNELAPI NTSTATUS NTAPI MmCopyVirtualMemory(PEPROCESS SourceProcess, PVOID SourceAddress, PEPROCESS TargetProcess, PVOID TargetAddress, SIZE_T BufferSize, KPROCESSOR_MODE PreviousMode, PSIZE_T ReturnSize); 17 | } 18 | 19 | namespace Native 20 | { 21 | bool safeCopyMemory(PVOID dest, PVOID src, SIZE_T size); 22 | NTSTATUS getKernelModuleByName(const char *moduleName, std::uintptr_t *moduleStart, std::size_t *moduleSize); 23 | } 24 | 25 | typedef struct _KLDR_DATA_TABLE_ENTRY { 26 | LIST_ENTRY InLoadOrderLinks; 27 | PVOID ExceptionTable; 28 | ULONG ExceptionTableSize; 29 | PVOID GpValue; 30 | PVOID NonPagedDebugInfo; 31 | PVOID DllBase; 32 | PVOID EntryPoint; 33 | ULONG SizeOfImage; 34 | UNICODE_STRING FullDllName; 35 | UNICODE_STRING BaseDllName; 36 | ULONG Flags; 37 | USHORT LoadCount; 38 | USHORT __Unused; 39 | PVOID SectionPointer; 40 | ULONG CheckSum; 41 | PVOID LoadedImports; 42 | PVOID PatchInformation; 43 | } KLDR_DATA_TABLE_ENTRY, * PKLDR_DATA_TABLE_ENTRY; 44 | 45 | typedef struct _SYSTEM_MODULE_ENTRY { 46 | HANDLE Section; 47 | PVOID MappedBase; 48 | PVOID ImageBase; 49 | ULONG ImageSize; 50 | ULONG Flags; 51 | USHORT LoadOrderIndex; 52 | USHORT InitOrderIndex; 53 | USHORT LoadCount; 54 | USHORT OffsetToFileName; 55 | UCHAR FullPathName[256]; 56 | } SYSTEM_MODULE_ENTRY, * PSYSTEM_MODULE_ENTRY; 57 | 58 | typedef struct _SYSTEM_MODULE_INFORMATION { 59 | ULONG Count; 60 | SYSTEM_MODULE_ENTRY Module[1]; 61 | } SYSTEM_MODULE_INFORMATION, * PSYSTEM_MODULE_INFORMATION; -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Signature Scan.cpp: -------------------------------------------------------------------------------- 1 | #include "Include.hpp" 2 | 3 | // 4 | // Scan for a memory pattern 5 | // 6 | std::uintptr_t Scanner::scanPattern(std::uint8_t *base, const std::size_t size, char *pattern, char *mask) 7 | { 8 | const auto patternSize = strlen(mask); 9 | 10 | for (std::size_t i = {}; i < size - patternSize; i++) 11 | { 12 | for (std::size_t j = {}; j < patternSize; j++) 13 | { 14 | if (mask[j] != '?' && *reinterpret_cast(base + i + j) != static_cast(pattern[j])) 15 | break; 16 | 17 | if (j == patternSize - 1) 18 | return reinterpret_cast(base) + i; 19 | } 20 | } 21 | 22 | return {}; 23 | } 24 | 25 | NTSTATUS Scanner::getImageSectionByName(std::uintptr_t imageBase, const char* sectionName, std::uintptr_t* startOut, std::size_t* sizeOut) 26 | { 27 | if (reinterpret_cast(imageBase)->e_magic != 0x5A4D) 28 | return STATUS_NOT_FOUND; 29 | 30 | const auto ntHeader = reinterpret_cast( 31 | imageBase + reinterpret_cast(imageBase)->e_lfanew); 32 | const auto sectionCount = ntHeader->FileHeader.NumberOfSections; 33 | 34 | auto sectionHeader = IMAGE_FIRST_SECTION(ntHeader); 35 | for (std::size_t i{}; i < sectionCount; ++i, ++sectionHeader) { 36 | if (strstr(reinterpret_cast(sectionHeader->Name), sectionName)) { 37 | if (sizeOut) 38 | *sizeOut = sectionHeader->Misc.VirtualSize; 39 | if (startOut) 40 | *startOut = imageBase + sectionHeader->VirtualAddress; 41 | } 42 | } 43 | 44 | return STATUS_SUCCESS; 45 | } -------------------------------------------------------------------------------- /CosKernelmode/CosKernelmode/Signature Scan.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | namespace Scanner 4 | { 5 | std::uintptr_t scanPattern(std::uint8_t *base, const std::size_t size, char *pattern, char *mask); 6 | NTSTATUS getImageSectionByName(std::uintptr_t imageBase, const char* sectionName, std::uintptr_t* startOut, std::size_t* sizeOut); 7 | std::uintptr_t getImageSectionByName(std::uintptr_t imageBase, const char* sectionName, std::size_t* sizeOut); 8 | } -------------------------------------------------------------------------------- /CosUsermode/CosUsermode.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.31229.75 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CosUsermode", "CosUsermode\CosUsermode.vcxproj", "{D9692A2A-9474-431E-AC35-81F4BD60F537}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Debug|x64.ActiveCfg = Debug|x64 17 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Debug|x64.Build.0 = Debug|x64 18 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Debug|x86.ActiveCfg = Debug|Win32 19 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Debug|x86.Build.0 = Debug|Win32 20 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Release|x64.ActiveCfg = Release|x64 21 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Release|x64.Build.0 = Release|x64 22 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Release|x86.ActiveCfg = Release|Win32 23 | {D9692A2A-9474-431E-AC35-81F4BD60F537}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {CD16C6E4-74A2-4122-81D5-BFDD3F580E3B} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /CosUsermode/CosUsermode/CosUsermode.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 16.0 23 | Win32Proj 24 | {d9692a2a-9474-431e-ac35-81f4bd60f537} 25 | CosUsermode 26 | 10.0 27 | 28 | 29 | 30 | Application 31 | true 32 | v142 33 | Unicode 34 | 35 | 36 | Application 37 | false 38 | v142 39 | true 40 | Unicode 41 | 42 | 43 | Application 44 | true 45 | v142 46 | Unicode 47 | 48 | 49 | Application 50 | false 51 | v142 52 | true 53 | Unicode 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | true 75 | 76 | 77 | false 78 | 79 | 80 | true 81 | 82 | 83 | false 84 | 85 | 86 | 87 | Level3 88 | true 89 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) 90 | true 91 | 92 | 93 | Console 94 | true 95 | 96 | 97 | 98 | 99 | Level3 100 | true 101 | true 102 | true 103 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 104 | true 105 | 106 | 107 | Console 108 | true 109 | true 110 | true 111 | 112 | 113 | 114 | 115 | Level3 116 | true 117 | _DEBUG;_CONSOLE;%(PreprocessorDefinitions) 118 | true 119 | 120 | 121 | Console 122 | true 123 | 124 | 125 | 126 | 127 | Level3 128 | true 129 | true 130 | true 131 | NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 132 | true 133 | stdcpp17 134 | 135 | 136 | Console 137 | true 138 | true 139 | true 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | 154 | -------------------------------------------------------------------------------- /CosUsermode/CosUsermode/CosUsermode.vcxproj.filters: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Header Files 25 | 26 | 27 | Header Files 28 | 29 | 30 | Header Files 31 | 32 | 33 | Header Files 34 | 35 | 36 | -------------------------------------------------------------------------------- /CosUsermode/CosUsermode/CosUsermode.vcxproj.user: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | -------------------------------------------------------------------------------- /CosUsermode/CosUsermode/loadup.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | MIT License 3 | 4 | Copyright (c) 2020 xerox 5 | 6 | Permission is hereby granted, free of charge, to any person obtaining a copy 7 | of this software and associated documentation files (the "Software"), to deal 8 | in the Software without restriction, including without limitation the rights 9 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 | copies of the Software, and to permit persons to whom the Software is 11 | furnished to do so, subject to the following conditions: 12 | 13 | The above copyright notice and this permission notice shall be included in all 14 | copies or substantial portions of the Software. 15 | 16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 | SOFTWARE. 23 | */ 24 | 25 | 26 | #pragma once 27 | #include 28 | #include 29 | #include 30 | #include 31 | #include 32 | 33 | #pragma comment(lib, "ntdll.lib") 34 | using nt_load_driver_t = NTSTATUS(__fastcall*)(PUNICODE_STRING); 35 | using nt_unload_driver_t = NTSTATUS(__fastcall*)(PUNICODE_STRING); 36 | 37 | namespace driver 38 | { 39 | namespace util 40 | { 41 | inline bool delete_service_entry(const std::string& service_name) 42 | { 43 | HKEY reg_handle; 44 | static const std::string reg_key("System\\CurrentControlSet\\Services\\"); 45 | 46 | auto result = RegOpenKeyA( 47 | HKEY_LOCAL_MACHINE, 48 | reg_key.c_str(), 49 | ®_handle 50 | ); 51 | 52 | return ERROR_SUCCESS == RegDeleteKeyA(reg_handle, service_name.data()) && ERROR_SUCCESS == RegCloseKey(reg_handle);; 53 | } 54 | 55 | inline bool create_service_entry(const std::string& drv_path, const std::string& service_name) 56 | { 57 | HKEY reg_handle; 58 | std::string reg_key("System\\CurrentControlSet\\Services\\"); 59 | reg_key += service_name; 60 | 61 | auto result = RegCreateKeyA( 62 | HKEY_LOCAL_MACHINE, 63 | reg_key.c_str(), 64 | ®_handle 65 | ); 66 | 67 | if (result != ERROR_SUCCESS) 68 | return false; 69 | 70 | // 71 | // set type to 1 (kernel) 72 | // 73 | constexpr std::uint8_t type_value = 1; 74 | result = RegSetValueExA( 75 | reg_handle, 76 | "Type", 77 | NULL, 78 | REG_DWORD, 79 | &type_value, 80 | 4u 81 | ); 82 | 83 | if (result != ERROR_SUCCESS) 84 | return false; 85 | 86 | // 87 | // set error control to 3 88 | // 89 | constexpr std::uint8_t error_control_value = 3; 90 | result = RegSetValueExA( 91 | reg_handle, 92 | "ErrorControl", 93 | NULL, 94 | REG_DWORD, 95 | &error_control_value, 96 | 4u 97 | ); 98 | 99 | if (result != ERROR_SUCCESS) 100 | return false; 101 | 102 | // 103 | // set start to 3 104 | // 105 | constexpr std::uint8_t start_value = 3; 106 | result = RegSetValueExA( 107 | reg_handle, 108 | "Start", 109 | NULL, 110 | REG_DWORD, 111 | &start_value, 112 | 4u 113 | ); 114 | 115 | if (result != ERROR_SUCCESS) 116 | return false; 117 | 118 | // 119 | // set image path to the driver on disk 120 | // 121 | result = RegSetValueExA( 122 | reg_handle, 123 | "ImagePath", 124 | NULL, 125 | REG_SZ, 126 | (std::uint8_t*)drv_path.c_str(), 127 | drv_path.size() 128 | ); 129 | 130 | if (result != ERROR_SUCCESS) 131 | return false; 132 | 133 | return ERROR_SUCCESS == RegCloseKey(reg_handle); 134 | } 135 | 136 | // this function was coded by paracord: https://githacks.org/snippets/4#L94 137 | inline bool enable_privilege(const std::wstring& privilege_name) 138 | { 139 | HANDLE token_handle = nullptr; 140 | if (!OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES | TOKEN_QUERY, &token_handle)) 141 | return false; 142 | 143 | LUID luid{}; 144 | if (!LookupPrivilegeValueW(nullptr, privilege_name.data(), &luid)) 145 | return false; 146 | 147 | TOKEN_PRIVILEGES token_state{}; 148 | token_state.PrivilegeCount = 1; 149 | token_state.Privileges[0].Luid = luid; 150 | token_state.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED; 151 | 152 | if (!AdjustTokenPrivileges(token_handle, FALSE, &token_state, sizeof(TOKEN_PRIVILEGES), nullptr, nullptr)) 153 | return false; 154 | 155 | CloseHandle(token_handle); 156 | return true; 157 | } 158 | 159 | inline std::string get_service_image_path(const std::string& service_name) 160 | { 161 | HKEY reg_handle; 162 | DWORD bytes_read; 163 | char image_path[0xFF]; 164 | static const std::string reg_key("System\\CurrentControlSet\\Services\\"); 165 | 166 | auto result = RegOpenKeyA( 167 | HKEY_LOCAL_MACHINE, 168 | reg_key.c_str(), 169 | ®_handle 170 | ); 171 | 172 | result = RegGetValueA( 173 | reg_handle, 174 | service_name.c_str(), 175 | "ImagePath", 176 | REG_SZ, 177 | NULL, 178 | image_path, 179 | &bytes_read 180 | ); 181 | 182 | RegCloseKey(reg_handle); 183 | return std::string(image_path); 184 | } 185 | } 186 | 187 | inline bool load(const std::string& drv_path, const std::string& service_name) 188 | { 189 | if (!util::enable_privilege(L"SeLoadDriverPrivilege")) 190 | return false; 191 | 192 | if (!util::create_service_entry("\\??\\" + std::filesystem::absolute(std::filesystem::path(drv_path)).string(), service_name)) 193 | return false; 194 | 195 | std::string reg_path("\\Registry\\Machine\\System\\CurrentControlSet\\Services\\"); 196 | reg_path += service_name; 197 | 198 | static const auto lp_nt_load_drv = 199 | ::GetProcAddress( 200 | GetModuleHandleA("ntdll.dll"), 201 | "NtLoadDriver" 202 | ); 203 | 204 | if (lp_nt_load_drv) 205 | { 206 | ANSI_STRING driver_rep_path_cstr; 207 | UNICODE_STRING driver_reg_path_unicode; 208 | 209 | RtlInitAnsiString(&driver_rep_path_cstr, reg_path.c_str()); 210 | RtlAnsiStringToUnicodeString(&driver_reg_path_unicode, &driver_rep_path_cstr, true); 211 | return ERROR_SUCCESS == reinterpret_cast(lp_nt_load_drv)(&driver_reg_path_unicode); 212 | } 213 | return false; 214 | } 215 | 216 | inline std::tuple load(const std::vector& drv_buffer) 217 | { 218 | static const auto random_file_name = [](std::size_t length) -> std::string 219 | { 220 | static const auto randchar = []() -> char 221 | { 222 | const char charset[] = 223 | "0123456789" 224 | "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 225 | "abcdefghijklmnopqrstuvwxyz"; 226 | const std::size_t max_index = (sizeof(charset) - 1); 227 | return charset[rand() % max_index]; 228 | }; 229 | std::string str(length, 0); 230 | std::generate_n(str.begin(), length, randchar); 231 | return str; 232 | }; 233 | 234 | const auto service_name = random_file_name(16); 235 | const auto file_path = std::filesystem::temp_directory_path().string() + service_name; 236 | std::ofstream output_file(file_path.c_str(), std::ios::binary); 237 | 238 | output_file.write((char*)drv_buffer.data(), drv_buffer.size()); 239 | output_file.close(); 240 | 241 | return { load(file_path, service_name), service_name }; 242 | } 243 | 244 | inline std::tuple load(const std::uint8_t* buffer, const std::size_t size) 245 | { 246 | std::vector image(buffer, buffer + size); 247 | return load(image); 248 | } 249 | 250 | inline bool unload(const std::string& service_name) 251 | { 252 | std::string reg_path("\\Registry\\Machine\\System\\CurrentControlSet\\Services\\"); 253 | reg_path += service_name; 254 | 255 | static const auto lp_nt_unload_drv = 256 | ::GetProcAddress( 257 | GetModuleHandleA("ntdll.dll"), 258 | "NtUnloadDriver" 259 | ); 260 | 261 | if (lp_nt_unload_drv) 262 | { 263 | ANSI_STRING driver_rep_path_cstr; 264 | UNICODE_STRING driver_reg_path_unicode; 265 | 266 | RtlInitAnsiString(&driver_rep_path_cstr, reg_path.c_str()); 267 | RtlAnsiStringToUnicodeString(&driver_reg_path_unicode, &driver_rep_path_cstr, true); 268 | 269 | const bool unload_drv = !reinterpret_cast(lp_nt_unload_drv)(&driver_reg_path_unicode); 270 | const auto image_path = std::filesystem::temp_directory_path().string() + service_name; 271 | const bool delete_reg = util::delete_service_entry(service_name); 272 | const bool delete_drv = std::filesystem::remove(image_path); 273 | return unload_drv && delete_reg && delete_drv; 274 | } 275 | return false; 276 | } 277 | } 278 | -------------------------------------------------------------------------------- /CosUsermode/CosUsermode/main.cpp: -------------------------------------------------------------------------------- 1 | #include "stdafx.hpp" 2 | 3 | std::uint32_t mapDriver(std::vectorrawDriverImage) 4 | { 5 | HookStruct request{}; 6 | request.rawDataAddress = reinterpret_cast(rawDriverImage.data()); 7 | request.rawDataSize = rawDriverImage.size(); 8 | 9 | std::uint8_t mzSignature = *reinterpret_cast(request.rawDataAddress); 10 | if (mzSignature != 0x4d) 11 | { 12 | printf("invalid driver mz signature\n"); 13 | return STATUS_INVALID_PARAMETER; 14 | } 15 | 16 | printf("[+] mz byte [0x%x]\n", mzSignature); 17 | printf("[+] size of driver [0x%x]\n", request.rawDataSize); 18 | printf("[+] driver read [%p]\n", request.rawDataAddress); 19 | 20 | void* requestPointer = &request; 21 | 22 | std::uint32_t status{}; 23 | NtConvert(0, &requestPointer, &status, 0); 24 | 25 | RtlZeroMemory(reinterpret_cast(request.rawDataAddress), request.rawDataSize); 26 | 27 | return status; 28 | } 29 | 30 | int main(int argumentCount, char** argumentArray) 31 | { 32 | if (argumentCount < 2 || std::filesystem::path(argumentArray[1]).extension().string().compare(".sys")) 33 | { 34 | printf("[-] usage: cosusermode.exe driver.sys\n"); 35 | return -1; 36 | } 37 | 38 | if (!std::filesystem::exists(argumentArray[1])) 39 | { 40 | printf("[-] driver [%s] does not exist\n", argumentArray[1]); 41 | return -1; 42 | } 43 | 44 | const auto& [status, service_name] = driver::load(signedMapperRaw, sizeof(signedMapperRaw)); 45 | if (!status) 46 | { 47 | printf("[-] failed to load signed mapper\n"); 48 | return -1; 49 | } 50 | 51 | printf("[+] loaded signed mapper [%s]\n", service_name.c_str()); 52 | 53 | if (!Util::initializeDriverComm()) 54 | { 55 | printf("[-] failed to initialize driver comm\n"); 56 | return -1; 57 | } 58 | 59 | std::vector rawDriverImage = { 0 }; 60 | if (!Util::readFileToMemory(argumentArray[1], &rawDriverImage)) 61 | { 62 | printf("[-] failed to read driver [%s]\n", argumentArray[1]); 63 | return -1; 64 | } 65 | 66 | printf("[+] mapped driver status [0x%x]\n", mapDriver(rawDriverImage)); 67 | 68 | printf("[+] unloading signed mapper [0x%x]\n", !driver::unload(service_name)); 69 | 70 | return 0; 71 | } 72 | -------------------------------------------------------------------------------- /CosUsermode/CosUsermode/mapper_resource.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | inline std::uint8_t signedMapperRaw[13384] = { 4 | 0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 5 | 0xFF, 0xFF, 0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 6 | 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 7 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 8 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 9 | 0xD8, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4, 0x09, 0xCD, 10 | 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 11 | 0x72, 0x6F, 0x67, 0x72, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 12 | 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 13 | 0x44, 0x4F, 0x53, 0x20, 0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, 14 | 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x77, 0x51, 0x8C, 15 | 0xC7, 0x16, 0x3F, 0xDF, 0xC7, 0x16, 0x3F, 0xDF, 0xC7, 0x16, 0x3F, 0xDF, 16 | 0xD3, 0x7D, 0x3E, 0xDE, 0xC4, 0x16, 0x3F, 0xDF, 0xC7, 0x16, 0x3E, 0xDF, 17 | 0xCA, 0x16, 0x3F, 0xDF, 0xD3, 0x7D, 0x3C, 0xDE, 0xC5, 0x16, 0x3F, 0xDF, 18 | 0xD3, 0x7D, 0x3B, 0xDE, 0xC4, 0x16, 0x3F, 0xDF, 0x1C, 0x62, 0x3A, 0xDE, 19 | 0xC2, 0x16, 0x3F, 0xDF, 0x1C, 0x62, 0x3D, 0xDE, 0xC6, 0x16, 0x3F, 0xDF, 20 | 0x52, 0x69, 0x63, 0x68, 0xC7, 0x16, 0x3F, 0xDF, 0x00, 0x00, 0x00, 0x00, 21 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 22 | 0x50, 0x45, 0x00, 0x00, 0x64, 0x86, 0x06, 0x00, 0x87, 0xD5, 0x0F, 0x61, 23 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0x00, 0x22, 0x00, 24 | 0x0B, 0x02, 0x0E, 0x1C, 0x00, 0x10, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 25 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 26 | 0x00, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 27 | 0x00, 0x02, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 0x0A, 0x00, 0x00, 0x00, 28 | 0x0A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 29 | 0x00, 0x04, 0x00, 0x00, 0xF1, 0x23, 0x01, 0x00, 0x01, 0x00, 0x60, 0x41, 30 | 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 31 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 32 | 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 33 | 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 34 | 0x00, 0x50, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 35 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 36 | 0x00, 0x20, 0x00, 0x00, 0x48, 0x14, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 37 | 0x14, 0x00, 0x00, 0x00, 0x90, 0x20, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 38 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 39 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 40 | 0xD0, 0x20, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 41 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 42 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 43 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 44 | 0x2E, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x58, 0x0C, 0x00, 0x00, 45 | 0x00, 0x10, 0x00, 0x00, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 46 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 47 | 0x20, 0x00, 0x00, 0x68, 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 48 | 0x74, 0x04, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 49 | 0x00, 0x12, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 50 | 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x2E, 0x64, 0x61, 0x74, 51 | 0x61, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 52 | 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 53 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xC8, 54 | 0x2E, 0x70, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 55 | 0x00, 0x40, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1A, 0x00, 0x00, 56 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 57 | 0x40, 0x00, 0x00, 0x48, 0x49, 0x4E, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 58 | 0xD6, 0x01, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 59 | 0x00, 0x1C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 60 | 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x62, 0x2E, 0x72, 0x65, 0x6C, 61 | 0x6F, 0x63, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 62 | 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 63 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 64 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 65 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 66 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 67 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 68 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 69 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 70 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 71 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 72 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 73 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 74 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 75 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 76 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 77 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 78 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 79 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 80 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 81 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 82 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 83 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 84 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 85 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 86 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 87 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 88 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 89 | 0x00, 0x00, 0x00, 0x00, 0x48, 0x83, 0xEC, 0x28, 0x48, 0x8D, 0x05, 0x75, 90 | 0x00, 0x00, 0x00, 0x48, 0x89, 0x41, 0x68, 0x4C, 0x8D, 0x44, 0x24, 0x40, 91 | 0x48, 0x8D, 0x0D, 0x55, 0x0B, 0x00, 0x00, 0x48, 0x8D, 0x54, 0x24, 0x30, 92 | 0xE8, 0x37, 0x06, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x30, 0x48, 0x85, 93 | 0xC9, 0x74, 0x3F, 0x48, 0x8B, 0x54, 0x24, 0x40, 0x4C, 0x8D, 0x0D, 0x45, 94 | 0x0B, 0x00, 0x00, 0x4C, 0x8D, 0x05, 0x5E, 0x0B, 0x00, 0x00, 0xE8, 0x91, 95 | 0x07, 0x00, 0x00, 0x48, 0x89, 0x05, 0xC2, 0x1F, 0x00, 0x00, 0x48, 0x85, 96 | 0xC0, 0x74, 0x1B, 0x48, 0x63, 0x50, 0x03, 0x48, 0x8D, 0x0D, 0x52, 0x00, 97 | 0x00, 0x00, 0x48, 0x87, 0x4C, 0x02, 0x07, 0x48, 0x89, 0x0D, 0x9E, 0x1F, 98 | 0x00, 0x00, 0x33, 0xC0, 0xEB, 0x05, 0xB8, 0x65, 0x03, 0x00, 0xC0, 0x48, 99 | 0x83, 0xC4, 0x28, 0xC3, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 100 | 0x4C, 0x8B, 0x05, 0x89, 0x1F, 0x00, 0x00, 0x48, 0x8B, 0x05, 0x7A, 0x1F, 101 | 0x00, 0x00, 0x49, 0x63, 0x50, 0x03, 0x4A, 0x87, 0x44, 0x02, 0x07, 0x48, 102 | 0x8B, 0x51, 0x28, 0x33, 0xC0, 0x66, 0x89, 0x42, 0x58, 0xE9, 0xA6, 0x04, 103 | 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 104 | 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48, 105 | 0x89, 0x70, 0x18, 0x48, 0x89, 0x78, 0x20, 0x41, 0x54, 0x41, 0x56, 0x41, 106 | 0x57, 0x48, 0x83, 0xEC, 0x30, 0x48, 0x8B, 0xF2, 0x48, 0x8B, 0xD9, 0xFF, 107 | 0x15, 0x37, 0x0F, 0x00, 0x00, 0x3C, 0x01, 0x0F, 0x85, 0x47, 0x01, 0x00, 108 | 0x00, 0x45, 0x33, 0xE4, 0x48, 0x85, 0xDB, 0x0F, 0x84, 0x3B, 0x01, 0x00, 109 | 0x00, 0x45, 0x8D, 0x44, 0x24, 0x10, 0x4C, 0x89, 0x64, 0x24, 0x20, 0x48, 110 | 0x8B, 0xD3, 0x4C, 0x89, 0x64, 0x24, 0x28, 0x48, 0x8D, 0x4C, 0x24, 0x20, 111 | 0xE8, 0x4F, 0x06, 0x00, 0x00, 0x84, 0xC0, 0x0F, 0x84, 0x17, 0x01, 0x00, 112 | 0x00, 0x48, 0x8B, 0x54, 0x24, 0x20, 0x48, 0x85, 0xD2, 0x0F, 0x84, 0x09, 113 | 0x01, 0x00, 0x00, 0x4C, 0x39, 0x64, 0x24, 0x28, 0x0F, 0x84, 0xFE, 0x00, 114 | 0x00, 0x00, 0x33, 0xC9, 0xFF, 0x15, 0xCE, 0x0E, 0x00, 0x00, 0x48, 0x8B, 115 | 0xF8, 0x48, 0x85, 0xC0, 0x75, 0x0C, 0x48, 0xC7, 0xC0, 0x01, 0x00, 0x00, 116 | 0xC0, 0xE9, 0xF5, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x44, 0x24, 0x20, 0x48, 117 | 0x8B, 0xCF, 0x48, 0x8B, 0x54, 0x24, 0x28, 0xE8, 0x68, 0x07, 0x00, 0x00, 118 | 0x48, 0x8B, 0xCF, 0xE8, 0x74, 0x01, 0x00, 0x00, 0x48, 0x63, 0x5F, 0x3C, 119 | 0x33, 0xC9, 0x48, 0x03, 0xDF, 0x44, 0x0F, 0xB7, 0x73, 0x14, 0x8B, 0x53, 120 | 0x50, 0x49, 0x83, 0xC6, 0x2C, 0xFF, 0x15, 0x85, 0x0E, 0x00, 0x00, 0x48, 121 | 0x8B, 0xE8, 0x48, 0x81, 0xED, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x84, 0x92, 122 | 0x00, 0x00, 0x00, 0x48, 0x8D, 0x8D, 0x00, 0x10, 0x00, 0x00, 0xE8, 0xD9, 123 | 0x02, 0x00, 0x00, 0x45, 0x8B, 0xFC, 0x66, 0x44, 0x3B, 0x63, 0x06, 0x73, 124 | 0x29, 0x4C, 0x03, 0xF3, 0x41, 0x8B, 0x16, 0x41, 0x8B, 0x4E, 0xF8, 0x48, 125 | 0x03, 0xD7, 0x45, 0x8B, 0x46, 0xFC, 0x48, 0x03, 0xCD, 0xE8, 0x06, 0x07, 126 | 0x00, 0x00, 0x0F, 0xB7, 0x43, 0x06, 0x4D, 0x8D, 0x76, 0x28, 0x41, 0xFF, 127 | 0xC7, 0x44, 0x3B, 0xF8, 0x7C, 0xDA, 0x4C, 0x8B, 0xC5, 0x48, 0x8B, 0xD5, 128 | 0x4C, 0x2B, 0x43, 0x30, 0x48, 0x8B, 0xCF, 0xE8, 0xF0, 0x01, 0x00, 0x00, 129 | 0x33, 0xD2, 0x48, 0x8B, 0xCF, 0xFF, 0x15, 0x21, 0x0E, 0x00, 0x00, 0xBA, 130 | 0x10, 0x00, 0x00, 0x00, 0x33, 0xC9, 0xFF, 0x15, 0x0C, 0x0E, 0x00, 0x00, 131 | 0x48, 0x8B, 0xD0, 0x48, 0x85, 0xC0, 0x74, 0x21, 0x48, 0x89, 0x28, 0x8B, 132 | 0x4B, 0x50, 0x48, 0x89, 0x48, 0x08, 0x48, 0x8B, 0xCA, 0x8B, 0x43, 0x28, 133 | 0x48, 0x03, 0xC5, 0xFF, 0x15, 0x5B, 0x0E, 0x00, 0x00, 0x48, 0x63, 0xC8, 134 | 0x48, 0x89, 0x0E, 0xEB, 0x07, 0x48, 0xC7, 0x06, 0x01, 0x00, 0x00, 0xC0, 135 | 0x33, 0xC0, 0xEB, 0x13, 0x48, 0x8B, 0x05, 0xD9, 0x1D, 0x00, 0x00, 0x48, 136 | 0x8B, 0xD6, 0x48, 0x8B, 0xCB, 0xFF, 0x15, 0x35, 0x0E, 0x00, 0x00, 0x48, 137 | 0x8B, 0x5C, 0x24, 0x50, 0x48, 0x8B, 0x6C, 0x24, 0x58, 0x48, 0x8B, 0x74, 138 | 0x24, 0x60, 0x48, 0x8B, 0x7C, 0x24, 0x68, 0x48, 0x83, 0xC4, 0x30, 0x41, 139 | 0x5F, 0x41, 0x5E, 0x41, 0x5C, 0xC3, 0xCC, 0xCC, 0x48, 0x89, 0x5C, 0x24, 140 | 0x08, 0x57, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x8B, 0xC2, 0x48, 0x8B, 0xF9, 141 | 0x48, 0x8B, 0xC8, 0x41, 0x8B, 0xD0, 0x41, 0x8B, 0xD8, 0xE8, 0x1E, 0x00, 142 | 0x00, 0x00, 0x48, 0x85, 0xC0, 0x74, 0x0E, 0x2B, 0x58, 0x0C, 0x8B, 0x40, 143 | 0x14, 0x8B, 0xCB, 0x48, 0x03, 0xCF, 0x48, 0x03, 0xC1, 0x48, 0x8B, 0x5C, 144 | 0x24, 0x30, 0x48, 0x83, 0xC4, 0x20, 0x5F, 0xC3, 0x0F, 0xB7, 0x41, 0x14, 145 | 0x4C, 0x8D, 0x41, 0x18, 0x44, 0x0F, 0xB7, 0x51, 0x06, 0x4C, 0x03, 0xC0, 146 | 0x45, 0x33, 0xC9, 0x45, 0x85, 0xD2, 0x74, 0x1C, 0x41, 0x8B, 0x48, 0x0C, 147 | 0x3B, 0xD1, 0x72, 0x08, 0x41, 0x03, 0x48, 0x08, 0x3B, 0xD1, 0x72, 0x0F, 148 | 0x41, 0xFF, 0xC1, 0x49, 0x83, 0xC0, 0x28, 0x45, 0x3B, 0xCA, 0x7C, 0xE4, 149 | 0x33, 0xC0, 0xC3, 0x49, 0x8B, 0xC0, 0xC3, 0xCC, 0x48, 0x89, 0x5C, 0x24, 150 | 0x18, 0x48, 0x89, 0x6C, 0x24, 0x20, 0x56, 0x57, 0x41, 0x56, 0x48, 0x83, 151 | 0xEC, 0x20, 0x48, 0x63, 0x79, 0x3C, 0x48, 0x8B, 0xE9, 0x48, 0x03, 0xF9, 152 | 0x44, 0x8B, 0x87, 0x90, 0x00, 0x00, 0x00, 0x45, 0x85, 0xC0, 0x0F, 0x84, 153 | 0xB2, 0x00, 0x00, 0x00, 0x48, 0x8B, 0xD7, 0xE8, 0x54, 0xFF, 0xFF, 0xFF, 154 | 0x48, 0x85, 0xC0, 0x0F, 0x84, 0xA1, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x58, 155 | 0x10, 0xE9, 0x8F, 0x00, 0x00, 0x00, 0x44, 0x8B, 0x43, 0xFC, 0x48, 0x8B, 156 | 0xD7, 0x48, 0x8B, 0xCD, 0xE8, 0x33, 0xFF, 0xFF, 0xFF, 0x48, 0x85, 0xC0, 157 | 0x0F, 0x84, 0x80, 0x00, 0x00, 0x00, 0x48, 0x83, 0x64, 0x24, 0x40, 0x00, 158 | 0x4C, 0x8D, 0x44, 0x24, 0x48, 0x48, 0x83, 0x64, 0x24, 0x48, 0x00, 0x48, 159 | 0x8D, 0x54, 0x24, 0x40, 0x48, 0x8B, 0xC8, 0xE8, 0x0C, 0x03, 0x00, 0x00, 160 | 0x4C, 0x8B, 0x74, 0x24, 0x40, 0x4D, 0x85, 0xF6, 0x74, 0x6D, 0x44, 0x8B, 161 | 0x03, 0x48, 0x8B, 0xD7, 0x48, 0x8B, 0xCD, 0xE8, 0xF4, 0xFE, 0xFF, 0xFF, 162 | 0x48, 0x8B, 0xF0, 0x48, 0x83, 0x38, 0x00, 0x74, 0x34, 0x44, 0x8B, 0x06, 163 | 0x48, 0x8B, 0xD7, 0x48, 0x8B, 0xCD, 0xE8, 0xDD, 0xFE, 0xFF, 0xFF, 0x49, 164 | 0x8B, 0xCE, 0x48, 0x8D, 0x50, 0x02, 0xFF, 0x15, 0x8C, 0x0C, 0x00, 0x00, 165 | 0x48, 0x85, 0xC0, 0x74, 0x36, 0x48, 0x89, 0x06, 0x48, 0x83, 0xC6, 0x08, 166 | 0x48, 0x83, 0x3E, 0x00, 0x74, 0x07, 0x4C, 0x8B, 0x74, 0x24, 0x40, 0xEB, 167 | 0xCC, 0x48, 0x83, 0xC3, 0x14, 0x83, 0x3B, 0x00, 0x0F, 0x85, 0x68, 0xFF, 168 | 0xFF, 0xFF, 0xB0, 0x01, 0x48, 0x8B, 0x5C, 0x24, 0x50, 0x48, 0x8B, 0x6C, 169 | 0x24, 0x58, 0x48, 0x83, 0xC4, 0x20, 0x41, 0x5E, 0x5F, 0x5E, 0xC3, 0x32, 170 | 0xC0, 0xEB, 0xE9, 0xCC, 0x48, 0x89, 0x5C, 0x24, 0x08, 0x48, 0x89, 0x74, 171 | 0x24, 0x10, 0x48, 0x89, 0x7C, 0x24, 0x18, 0x48, 0x63, 0x41, 0x3C, 0x49, 172 | 0x8B, 0xF8, 0x48, 0x03, 0xC1, 0x48, 0x8B, 0xDA, 0x8B, 0x88, 0xB0, 0x00, 173 | 0x00, 0x00, 0x85, 0xC9, 0x74, 0x6C, 0x44, 0x8B, 0x88, 0xB4, 0x00, 0x00, 174 | 0x00, 0x48, 0x03, 0xCA, 0x4C, 0x03, 0xC9, 0xEB, 0x57, 0x8B, 0xD0, 0x49, 175 | 0x3B, 0xD1, 0x73, 0x56, 0x8B, 0x41, 0x04, 0x85, 0xC0, 0x74, 0x4F, 0x4C, 176 | 0x8D, 0x1C, 0x1A, 0x48, 0x8D, 0x50, 0xF8, 0x48, 0xD1, 0xEA, 0x4C, 0x8D, 177 | 0x41, 0x08, 0x85, 0xD2, 0x74, 0x33, 0x44, 0x8B, 0xD2, 0x41, 0x0F, 0xB7, 178 | 0x10, 0xBE, 0x00, 0xF0, 0x00, 0x00, 0x0F, 0xB7, 0xC2, 0x66, 0x23, 0xC6, 179 | 0xBE, 0x00, 0xA0, 0x00, 0x00, 0x66, 0x3B, 0xC6, 0x75, 0x0A, 0x81, 0xE2, 180 | 0xFF, 0x0F, 0x00, 0x00, 0x4A, 0x01, 0x3C, 0x1A, 0x49, 0x83, 0xC0, 0x02, 181 | 0x49, 0x83, 0xEA, 0x01, 0x75, 0xD3, 0x8B, 0x41, 0x04, 0x48, 0x03, 0xC8, 182 | 0x8B, 0x01, 0x85, 0xC0, 0x75, 0xA3, 0x48, 0x8B, 0x5C, 0x24, 0x08, 0x48, 183 | 0x8B, 0x74, 0x24, 0x10, 0x48, 0x8B, 0x7C, 0x24, 0x18, 0xC3, 0xCC, 0xCC, 184 | 0x48, 0x8B, 0xC4, 0x53, 0x48, 0x83, 0xEC, 0x20, 0x48, 0x83, 0x60, 0x18, 185 | 0x00, 0x4C, 0x8D, 0x40, 0x10, 0x48, 0x83, 0x60, 0x10, 0x00, 0x48, 0x8D, 186 | 0x50, 0x18, 0x48, 0x8B, 0xD9, 0x48, 0x8D, 0x0D, 0xDC, 0x06, 0x00, 0x00, 187 | 0xE8, 0xC3, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x38, 0x4C, 0x8D, 188 | 0x0D, 0x1B, 0x07, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x40, 0x4C, 0x8D, 189 | 0x05, 0x1F, 0x07, 0x00, 0x00, 0xE8, 0x22, 0x03, 0x00, 0x00, 0x48, 0x85, 190 | 0xC0, 0x74, 0x6C, 0x48, 0x63, 0x48, 0x01, 0x48, 0x8D, 0x50, 0x05, 0x48, 191 | 0x03, 0xD1, 0x74, 0x5F, 0x48, 0x63, 0x82, 0x91, 0x00, 0x00, 0x00, 0x4C, 192 | 0x8D, 0x82, 0x95, 0x00, 0x00, 0x00, 0x4C, 0x03, 0xC0, 0x74, 0x4C, 0x48, 193 | 0x63, 0x82, 0x98, 0x00, 0x00, 0x00, 0x48, 0x81, 0xC2, 0x9C, 0x00, 0x00, 194 | 0x00, 0x48, 0x03, 0xD0, 0x74, 0x39, 0x4D, 0x8B, 0x00, 0x4D, 0x85, 0xC0, 195 | 0x74, 0x31, 0x48, 0x8B, 0x12, 0x48, 0x85, 0xD2, 0x74, 0x29, 0x33, 0xC9, 196 | 0x4D, 0x85, 0xC0, 0x74, 0x22, 0x4C, 0x8B, 0xCA, 0x4D, 0x8B, 0x11, 0x4C, 197 | 0x3B, 0xD3, 0x74, 0x22, 0x48, 0x8D, 0x43, 0x01, 0x4C, 0x3B, 0xD0, 0x74, 198 | 0x19, 0xFF, 0xC1, 0x49, 0x83, 0xC1, 0x18, 0x48, 0x63, 0xC1, 0x49, 0x3B, 199 | 0xC0, 0x72, 0xE1, 0xB8, 0x25, 0x02, 0x00, 0xC0, 0x48, 0x83, 0xC4, 0x20, 200 | 0x5B, 0xC3, 0x48, 0x63, 0xC1, 0x48, 0x8D, 0x0C, 0x40, 0x83, 0x64, 0xCA, 201 | 0x10, 0x00, 0x33, 0xC0, 0x48, 0xC7, 0x04, 0xCA, 0x01, 0x00, 0x00, 0x00, 202 | 0xEB, 0xE2, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 203 | 0x89, 0x70, 0x20, 0x57, 0x48, 0x83, 0xEC, 0x50, 0x48, 0x83, 0x60, 0x18, 204 | 0x00, 0x4C, 0x8D, 0x40, 0x10, 0x48, 0x83, 0x60, 0x10, 0x00, 0x48, 0x8D, 205 | 0x50, 0x18, 0x48, 0x8B, 0xF1, 0x48, 0x8D, 0x0D, 0xF8, 0x05, 0x00, 0x00, 206 | 0xE8, 0xDF, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x68, 0x4C, 0x8D, 207 | 0x0D, 0x57, 0x06, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x70, 0x4C, 0x8D, 208 | 0x05, 0x6B, 0x06, 0x00, 0x00, 0xE8, 0x3E, 0x02, 0x00, 0x00, 0x48, 0x85, 209 | 0xC0, 0x0F, 0x84, 0xA1, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x54, 0x24, 0x68, 210 | 0x4C, 0x8D, 0x0D, 0x71, 0x06, 0x00, 0x00, 0x48, 0x8B, 0x4C, 0x24, 0x70, 211 | 0x4C, 0x8D, 0x05, 0x85, 0x06, 0x00, 0x00, 0x48, 0x83, 0xC0, 0x03, 0x48, 212 | 0x63, 0x38, 0x48, 0x03, 0xF8, 0xE8, 0x0E, 0x02, 0x00, 0x00, 0x48, 0x85, 213 | 0xC0, 0x74, 0x75, 0x48, 0x8B, 0x56, 0x28, 0x48, 0x8D, 0x4C, 0x24, 0x30, 214 | 0x48, 0x83, 0xC0, 0x03, 0x48, 0x8B, 0x52, 0x60, 0x48, 0x63, 0x18, 0x48, 215 | 0x03, 0xD8, 0xFF, 0x15, 0x34, 0x0A, 0x00, 0x00, 0xB2, 0x01, 0x48, 0x8D, 216 | 0x4F, 0x04, 0xFF, 0x15, 0x30, 0x0A, 0x00, 0x00, 0x84, 0xC0, 0x74, 0x48, 217 | 0x48, 0x8D, 0x54, 0x24, 0x20, 0x48, 0x8D, 0x4B, 0x04, 0xFF, 0x15, 0x35, 218 | 0x0A, 0x00, 0x00, 0x48, 0x85, 0xC0, 0x74, 0x34, 0x4C, 0x8B, 0x40, 0x08, 219 | 0x48, 0x8D, 0x4B, 0x04, 0x4C, 0x8B, 0x08, 0x4D, 0x89, 0x08, 0x48, 0x8B, 220 | 0x50, 0x08, 0x49, 0x89, 0x51, 0x08, 0x48, 0x8B, 0xD0, 0x4C, 0x89, 0x40, 221 | 0x08, 0x4C, 0x89, 0x08, 0xFF, 0x15, 0x02, 0x0A, 0x00, 0x00, 0x48, 0x8D, 222 | 0x4F, 0x04, 0xFF, 0x15, 0xF0, 0x09, 0x00, 0x00, 0x33, 0xC0, 0xEB, 0x05, 223 | 0xB8, 0x01, 0x00, 0x00, 0xC0, 0x48, 0x8B, 0x5C, 0x24, 0x60, 0x48, 0x8B, 224 | 0x74, 0x24, 0x78, 0x48, 0x83, 0xC4, 0x50, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 225 | 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x18, 0x48, 226 | 0x89, 0x70, 0x20, 0x57, 0x48, 0x83, 0xEC, 0x20, 0x49, 0x8B, 0xF8, 0x48, 227 | 0x8B, 0xF2, 0x48, 0x8B, 0xE9, 0x48, 0x85, 0xD2, 0x0F, 0x84, 0xBB, 0x00, 228 | 0x00, 0x00, 0x4D, 0x85, 0xC0, 0x0F, 0x84, 0xB2, 0x00, 0x00, 0x00, 0x48, 229 | 0x83, 0x60, 0x10, 0x00, 0x4C, 0x8D, 0x48, 0x10, 0x33, 0xD2, 0x45, 0x33, 230 | 0xC0, 0x8D, 0x4A, 0x0B, 0xE8, 0xEF, 0x01, 0x00, 0x00, 0x48, 0x8B, 0x54, 231 | 0x24, 0x38, 0x33, 0xC9, 0xFF, 0x15, 0x52, 0x09, 0x00, 0x00, 0x48, 0x8B, 232 | 0xD8, 0x48, 0x85, 0xC0, 0x75, 0x0A, 0xB8, 0xA0, 0x00, 0x00, 0xC0, 0xE9, 233 | 0x82, 0x00, 0x00, 0x00, 0x44, 0x8B, 0x44, 0x24, 0x38, 0x4C, 0x8D, 0x4C, 234 | 0x24, 0x38, 0x48, 0x8B, 0xD3, 0xB9, 0x0B, 0x00, 0x00, 0x00, 0xE8, 0xB9, 235 | 0x01, 0x00, 0x00, 0x85, 0xC0, 0x75, 0x67, 0x44, 0x8B, 0x13, 0x48, 0x8D, 236 | 0x4B, 0x08, 0x33, 0xD2, 0x4D, 0x85, 0xD2, 0x74, 0x3C, 0x44, 0x0F, 0xB7, 237 | 0x59, 0x26, 0x48, 0x8B, 0xC5, 0x49, 0x83, 0xC3, 0x28, 0x4C, 0x03, 0xD9, 238 | 0x4C, 0x2B, 0xDD, 0x44, 0x0F, 0xB6, 0x00, 0x46, 0x0F, 0xB6, 0x0C, 0x18, 239 | 0x45, 0x2B, 0xC1, 0x75, 0x08, 0x48, 0xFF, 0xC0, 0x45, 0x85, 0xC9, 0x75, 240 | 0xEA, 0x45, 0x85, 0xC0, 0x74, 0x16, 0x48, 0xFF, 0xC2, 0x48, 0x81, 0xC1, 241 | 0x28, 0x01, 0x00, 0x00, 0x49, 0x3B, 0xD2, 0x72, 0xC4, 0xB8, 0x25, 0x02, 242 | 0x00, 0xC0, 0xEB, 0x16, 0x48, 0x8B, 0x41, 0x10, 0x48, 0x89, 0x06, 0x8B, 243 | 0x41, 0x18, 0x48, 0x89, 0x07, 0x33, 0xC0, 0xEB, 0x05, 0xB8, 0x0D, 0x00, 244 | 0x00, 0xC0, 0x48, 0x8B, 0x5C, 0x24, 0x30, 0x48, 0x8B, 0x6C, 0x24, 0x40, 245 | 0x48, 0x8B, 0x74, 0x24, 0x48, 0x48, 0x83, 0xC4, 0x20, 0x5F, 0xC3, 0xCC, 246 | 0x48, 0x8B, 0xC4, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48, 247 | 0x89, 0x70, 0x18, 0x57, 0x48, 0x83, 0xEC, 0x40, 0x48, 0x83, 0x60, 0x20, 248 | 0x00, 0x49, 0x8B, 0xE8, 0x48, 0x8B, 0xF2, 0x48, 0x8B, 0xF9, 0xFF, 0x15, 249 | 0xC8, 0x08, 0x00, 0x00, 0x48, 0x8B, 0xD8, 0xFF, 0x15, 0xBF, 0x08, 0x00, 250 | 0x00, 0x48, 0x8D, 0x4C, 0x24, 0x68, 0x4C, 0x8B, 0xCF, 0x48, 0x89, 0x4C, 251 | 0x24, 0x30, 0x4C, 0x8B, 0xC3, 0xC6, 0x44, 0x24, 0x28, 0x00, 0x48, 0x8B, 252 | 0xC8, 0x48, 0x8B, 0xD6, 0x48, 0x89, 0x6C, 0x24, 0x20, 0xFF, 0x15, 0xA9, 253 | 0x08, 0x00, 0x00, 0x85, 0xC0, 0x78, 0x0B, 0x48, 0x39, 0x6C, 0x24, 0x68, 254 | 0x75, 0x04, 0xB0, 0x01, 0xEB, 0x02, 0x32, 0xC0, 0x48, 0x8B, 0x5C, 0x24, 255 | 0x50, 0x48, 0x8B, 0x6C, 0x24, 0x58, 0x48, 0x8B, 0x74, 0x24, 0x60, 0x48, 256 | 0x83, 0xC4, 0x40, 0x5F, 0xC3, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0xC4, 0x48, 257 | 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48, 0x89, 0x70, 0x18, 0x48, 258 | 0x89, 0x78, 0x20, 0x41, 0x56, 0x41, 0x57, 0x4D, 0x8B, 0xF8, 0x48, 0x8B, 259 | 0xFA, 0x48, 0x8B, 0xF1, 0x49, 0x83, 0xCA, 0xFF, 0x49, 0xFF, 0xC2, 0x43, 260 | 0x80, 0x3C, 0x11, 0x00, 0x75, 0xF6, 0x33, 0xD2, 0x49, 0x2B, 0xFA, 0x74, 261 | 0x4F, 0x4C, 0x8B, 0xDE, 0x4D, 0x2B, 0xD9, 0x4D, 0x85, 0xD2, 0x74, 0x3C, 262 | 0x4D, 0x8B, 0xF7, 0x49, 0x8D, 0x2C, 0x13, 0x4D, 0x2B, 0xF1, 0x49, 0x8B, 263 | 0xD9, 0x48, 0xF7, 0xDB, 0x4D, 0x8B, 0xC1, 0x41, 0x80, 0x38, 0x3F, 0x74, 264 | 0x0A, 0x43, 0x8A, 0x04, 0x06, 0x41, 0x38, 0x04, 0x28, 0x75, 0x19, 0x4A, 265 | 0x8D, 0x0C, 0x03, 0x49, 0x8D, 0x42, 0xFF, 0x48, 0x3B, 0xC8, 0x74, 0x2F, 266 | 0x49, 0xFF, 0xC0, 0x4A, 0x8D, 0x04, 0x03, 0x49, 0x3B, 0xC2, 0x72, 0xD7, 267 | 0x48, 0xFF, 0xC2, 0x48, 0x3B, 0xD7, 0x72, 0xB7, 0x33, 0xC0, 0x48, 0x8B, 268 | 0x5C, 0x24, 0x18, 0x48, 0x8B, 0x6C, 0x24, 0x20, 0x48, 0x8B, 0x74, 0x24, 269 | 0x28, 0x48, 0x8B, 0x7C, 0x24, 0x30, 0x41, 0x5F, 0x41, 0x5E, 0xC3, 0x48, 270 | 0x8D, 0x04, 0x32, 0xEB, 0xE1, 0xCC, 0xCC, 0xCC, 0xC2, 0x00, 0x00, 0xCC, 271 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 272 | 0xFF, 0x25, 0xBA, 0x07, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 273 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x66, 0x66, 274 | 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xE0, 0xCC, 0xCC, 275 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 276 | 0x48, 0x8B, 0xC1, 0x49, 0x83, 0xF8, 0x08, 0x72, 0x37, 0x49, 0x83, 0xF8, 277 | 0x10, 0x77, 0x11, 0x4C, 0x8B, 0x1A, 0x4A, 0x8B, 0x54, 0x02, 0xF8, 0x4C, 278 | 0x89, 0x19, 0x4A, 0x89, 0x54, 0x01, 0xF8, 0xC3, 0x49, 0x83, 0xF8, 0x20, 279 | 0x77, 0x5A, 0x0F, 0x10, 0x02, 0x42, 0x0F, 0x10, 0x4C, 0x02, 0xF0, 0x0F, 280 | 0x11, 0x01, 0x42, 0x0F, 0x11, 0x4C, 0x01, 0xF0, 0xC3, 0x0F, 0x1F, 0x80, 281 | 0x00, 0x00, 0x00, 0x00, 0x4D, 0x85, 0xC0, 0x74, 0x15, 0x48, 0x2B, 0xD1, 282 | 0x72, 0x16, 0x44, 0x8A, 0x1C, 0x11, 0x48, 0xFF, 0xC1, 0x49, 0xFF, 0xC8, 283 | 0x44, 0x88, 0x59, 0xFF, 0x75, 0xF0, 0xC3, 0x0F, 0x1F, 0x44, 0x00, 0x00, 284 | 0x49, 0x03, 0xC8, 0x44, 0x8A, 0x5C, 0x11, 0xFF, 0x48, 0xFF, 0xC9, 0x49, 285 | 0xFF, 0xC8, 0x44, 0x88, 0x19, 0x75, 0xF0, 0xC3, 0x66, 0x66, 0x66, 0x66, 286 | 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4E, 0x8D, 0x1C, 0x02, 287 | 0x48, 0x2B, 0xD1, 0x73, 0x09, 0x4C, 0x3B, 0xD9, 0x0F, 0x87, 0x6E, 0x01, 288 | 0x00, 0x00, 0x0F, 0x10, 0x04, 0x11, 0x48, 0x83, 0xC1, 0x10, 0xF6, 0xC1, 289 | 0x0F, 0x74, 0x12, 0x48, 0x83, 0xE1, 0xF0, 0x0F, 0x10, 0x0C, 0x11, 0x0F, 290 | 0x11, 0x00, 0x0F, 0x28, 0xC1, 0x48, 0x83, 0xC1, 0x10, 0x4C, 0x03, 0xC0, 291 | 0x4C, 0x2B, 0xC1, 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x06, 0x74, 0x6F, 292 | 0x49, 0x81, 0xF9, 0x00, 0x10, 0x00, 0x00, 0x0F, 0x87, 0xB3, 0x00, 0x00, 293 | 0x00, 0x49, 0x83, 0xE0, 0x3F, 0xEB, 0x2D, 0x66, 0x66, 0x66, 0x66, 0x66, 294 | 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 295 | 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 296 | 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 297 | 0x00, 0x00, 0x00, 0x00, 0x0F, 0x10, 0x0C, 0x11, 0x0F, 0x10, 0x54, 0x11, 298 | 0x10, 0x0F, 0x10, 0x5C, 0x11, 0x20, 0x0F, 0x10, 0x64, 0x11, 0x30, 0x0F, 299 | 0x29, 0x41, 0xF0, 0x48, 0x83, 0xC1, 0x40, 0x49, 0xFF, 0xC9, 0x0F, 0x29, 300 | 0x49, 0xC0, 0x0F, 0x29, 0x51, 0xD0, 0x0F, 0x29, 0x59, 0xE0, 0x0F, 0x28, 301 | 0xC4, 0x75, 0xD1, 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x04, 0x74, 0x19, 302 | 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x29, 0x41, 0xF0, 303 | 0x0F, 0x10, 0x04, 0x11, 0x48, 0x83, 0xC1, 0x10, 0x49, 0xFF, 0xC9, 0x75, 304 | 0xEF, 0x49, 0x83, 0xE0, 0x0F, 0x74, 0x0E, 0x4E, 0x8D, 0x5C, 0x01, 0xF0, 305 | 0x41, 0x0F, 0x10, 0x0C, 0x13, 0x41, 0x0F, 0x11, 0x0B, 0x0F, 0x29, 0x41, 306 | 0xF0, 0xC3, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 307 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x0F, 0x1F, 0x80, 0x00, 0x00, 0x00, 0x00, 308 | 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x06, 0x49, 0x83, 0xE0, 0x3F, 0x0F, 309 | 0x18, 0x44, 0x11, 0x40, 0xEB, 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 310 | 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 311 | 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 0x00, 0x00, 0x00, 312 | 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x0F, 0x1F, 0x84, 0x00, 0x00, 313 | 0x00, 0x00, 0x00, 0x90, 0x0F, 0x10, 0x0C, 0x11, 0x0F, 0x10, 0x54, 0x11, 314 | 0x10, 0x0F, 0x10, 0x5C, 0x11, 0x20, 0x0F, 0x10, 0x64, 0x11, 0x30, 0x0F, 315 | 0x2B, 0x41, 0xF0, 0x48, 0x83, 0xC1, 0x40, 0x0F, 0x18, 0x44, 0x11, 0x40, 316 | 0x49, 0xFF, 0xC9, 0x0F, 0x2B, 0x49, 0xC0, 0x0F, 0x2B, 0x51, 0xD0, 0x0F, 317 | 0x2B, 0x59, 0xE0, 0x0F, 0x28, 0xC4, 0x75, 0xCC, 0x0F, 0xAE, 0xF8, 0xE9, 318 | 0x33, 0xFF, 0xFF, 0xFF, 0x0F, 0x1F, 0x40, 0x00, 0x49, 0x03, 0xC8, 0x0F, 319 | 0x10, 0x44, 0x11, 0xF0, 0x48, 0x83, 0xE9, 0x10, 0x49, 0x83, 0xE8, 0x10, 320 | 0xF6, 0xC1, 0x0F, 0x74, 0x18, 0x4C, 0x8B, 0xD9, 0x48, 0x83, 0xE1, 0xF0, 321 | 0x0F, 0x10, 0x0C, 0x11, 0x41, 0x0F, 0x11, 0x03, 0x0F, 0x28, 0xC1, 0x4C, 322 | 0x8B, 0xC1, 0x4C, 0x2B, 0xC0, 0x4D, 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x06, 323 | 0x74, 0x39, 0x49, 0x83, 0xE0, 0x3F, 0xEB, 0x04, 0x0F, 0x1F, 0x40, 0x00, 324 | 0x0F, 0x10, 0x4C, 0x11, 0xF0, 0x0F, 0x10, 0x54, 0x11, 0xE0, 0x0F, 0x10, 325 | 0x5C, 0x11, 0xD0, 0x0F, 0x10, 0x64, 0x11, 0xC0, 0x0F, 0x29, 0x01, 0x48, 326 | 0x83, 0xE9, 0x40, 0x49, 0xFF, 0xC9, 0x0F, 0x29, 0x49, 0x30, 0x0F, 0x29, 327 | 0x51, 0x20, 0x0F, 0x29, 0x59, 0x10, 0x0F, 0x28, 0xC4, 0x75, 0xD1, 0x4D, 328 | 0x8B, 0xC8, 0x49, 0xC1, 0xE9, 0x04, 0x74, 0x19, 0x0F, 0x1F, 0x84, 0x00, 329 | 0x00, 0x00, 0x00, 0x00, 0x0F, 0x29, 0x01, 0x0F, 0x10, 0x44, 0x11, 0xF0, 330 | 0x48, 0x83, 0xE9, 0x10, 0x49, 0xFF, 0xC9, 0x75, 0xEF, 0x49, 0x83, 0xE0, 331 | 0x0F, 0x74, 0x0F, 0x4C, 0x8B, 0xD9, 0x4D, 0x2B, 0xD8, 0x41, 0x0F, 0x10, 332 | 0x0C, 0x13, 0x41, 0x0F, 0x11, 0x0B, 0x0F, 0x29, 0x01, 0xC3, 0xCC, 0xCC, 333 | 0xCC, 0xCC, 0xCC, 0xCC, 0x6E, 0x74, 0x6F, 0x73, 0x6B, 0x72, 0x6E, 0x6C, 334 | 0x2E, 0x65, 0x78, 0x65, 0x00, 0xCC, 0xCC, 0xCC, 0x78, 0x78, 0x78, 0x3F, 335 | 0x3F, 0x3F, 0x3F, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x78, 0x78, 0x78, 336 | 0x78, 0x78, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 337 | 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8B, 0x05, 0x00, 0x00, 0x00, 0x00, 0xE8, 338 | 0x00, 0x00, 0x00, 0x00, 0x8B, 0xC8, 0x85, 0xC0, 0x78, 0x40, 0x00, 0xCC, 339 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 340 | 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x78, 0x78, 0x78, 0x00, 0xCC, 0xCC, 341 | 0xCC, 0xCC, 0xCC, 0xCC, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x83, 0x67, 0x0C, 342 | 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x78, 0x78, 0x78, 0x3F, 343 | 0x3F, 0x3F, 0x3F, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x78, 0x78, 0x78, 344 | 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 345 | 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8D, 0x0D, 0x00, 0x00, 0x00, 0x00, 0xE8, 346 | 0x00, 0x00, 0x00, 0x00, 0x4C, 0x8B, 0x8C, 0x24, 0x00, 0xCC, 0xCC, 0xCC, 347 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 348 | 0x78, 0x78, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 349 | 0x78, 0x78, 0x78, 0x3F, 0x3F, 0x3F, 0x3F, 0x78, 0x78, 0x78, 0x78, 0x00, 350 | 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x48, 0x8D, 0x0D, 0x00, 351 | 0x00, 0x00, 0x00, 0xE8, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8D, 0x1D, 0x00, 352 | 0x00, 0x00, 0x00, 0x48, 0x85, 0xC0, 0x0F, 0x00, 0x00, 0x00, 0x00, 0x00, 353 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 354 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 355 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 356 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 357 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 358 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 359 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 360 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 361 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 362 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 363 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 364 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 365 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 366 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 367 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 368 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 369 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 370 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 371 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 372 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 373 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 374 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 375 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 376 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 377 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 378 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 379 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 380 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 381 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 382 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 383 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 384 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 385 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 386 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 387 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 388 | 0x90, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xA2, 0x50, 0x00, 0x00, 389 | 0x00, 0x00, 0x00, 0x00, 0xB6, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 390 | 0xCA, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xEA, 0x50, 0x00, 0x00, 391 | 0x00, 0x00, 0x00, 0x00, 0x02, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 392 | 0x24, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3C, 0x51, 0x00, 0x00, 393 | 0x00, 0x00, 0x00, 0x00, 0x5E, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 394 | 0x80, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x51, 0x00, 0x00, 395 | 0x00, 0x00, 0x00, 0x00, 0xB2, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 396 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x18, 0x00, 0x40, 397 | 0x01, 0x00, 0x00, 0x00, 0xB0, 0x18, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 398 | 0x00, 0x10, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0xB0, 0x10, 0x00, 0x00, 399 | 0x80, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 400 | 0x00, 0x00, 0x00, 0x00, 0x87, 0xD5, 0x0F, 0x61, 0x00, 0x00, 0x00, 0x00, 401 | 0x02, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0xE8, 0x21, 0x00, 0x00, 402 | 0xE8, 0x13, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x87, 0xD5, 0x0F, 0x61, 403 | 0x00, 0x00, 0x00, 0x00, 0x0D, 0x00, 0x00, 0x00, 0x3C, 0x01, 0x00, 0x00, 404 | 0x50, 0x22, 0x00, 0x00, 0x50, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 405 | 0x00, 0x00, 0x00, 0x00, 0x18, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 406 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 407 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 408 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 409 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 410 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 411 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 412 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x40, 413 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 414 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x20, 0x00, 0x40, 415 | 0x01, 0x00, 0x00, 0x00, 0x70, 0x20, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 416 | 0x78, 0x20, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 417 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x45, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 418 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 419 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 420 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 421 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 422 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 423 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 424 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 425 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 426 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 427 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 428 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x52, 0x53, 0x44, 0x53, 429 | 0x82, 0x3E, 0xA8, 0xE8, 0x64, 0x06, 0xDE, 0x49, 0xA2, 0x50, 0x72, 0x26, 430 | 0x04, 0xBA, 0x9E, 0x82, 0x18, 0x00, 0x00, 0x00, 0x43, 0x3A, 0x5C, 0x55, 431 | 0x73, 0x65, 0x72, 0x73, 0x5C, 0x72, 0x65, 0x76, 0x65, 0x72, 0x5C, 0x44, 432 | 0x65, 0x73, 0x6B, 0x74, 0x6F, 0x70, 0x5C, 0x43, 0x6F, 0x73, 0x4D, 0x61, 433 | 0x70, 0x70, 0x65, 0x72, 0x5C, 0x43, 0x6F, 0x73, 0x4B, 0x65, 0x72, 0x6E, 434 | 0x65, 0x6C, 0x6D, 0x6F, 0x64, 0x65, 0x5C, 0x4F, 0x75, 0x74, 0x70, 0x75, 435 | 0x74, 0x5C, 0x53, 0x69, 0x67, 0x6E, 0x65, 0x64, 0x4D, 0x61, 0x6E, 0x75, 436 | 0x61, 0x6C, 0x4D, 0x61, 0x70, 0x70, 0x65, 0x72, 0x2E, 0x70, 0x64, 0x62, 437 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 438 | 0xA0, 0x08, 0x00, 0x00, 0x2E, 0x74, 0x65, 0x78, 0x74, 0x24, 0x6D, 0x6E, 439 | 0x00, 0x00, 0x00, 0x00, 0xA0, 0x18, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 440 | 0x2E, 0x74, 0x65, 0x78, 0x74, 0x24, 0x6D, 0x6E, 0x24, 0x30, 0x30, 0x00, 441 | 0xC0, 0x18, 0x00, 0x00, 0xB0, 0x02, 0x00, 0x00, 0x2E, 0x74, 0x65, 0x78, 442 | 0x74, 0x24, 0x6D, 0x6E, 0x24, 0x32, 0x31, 0x00, 0x70, 0x1B, 0x00, 0x00, 443 | 0xE8, 0x00, 0x00, 0x00, 0x2E, 0x74, 0x65, 0x78, 0x74, 0x24, 0x73, 0x00, 444 | 0x00, 0x20, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x2E, 0x69, 0x64, 0x61, 445 | 0x74, 0x61, 0x24, 0x35, 0x00, 0x00, 0x00, 0x00, 0x68, 0x20, 0x00, 0x00, 446 | 0x10, 0x00, 0x00, 0x00, 0x2E, 0x30, 0x30, 0x63, 0x66, 0x67, 0x00, 0x00, 447 | 0x78, 0x20, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x2E, 0x67, 0x66, 0x69, 448 | 0x64, 0x73, 0x00, 0x00, 0x90, 0x20, 0x00, 0x00, 0x58, 0x01, 0x00, 0x00, 449 | 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0xE8, 0x21, 0x00, 0x00, 450 | 0xA8, 0x01, 0x00, 0x00, 0x2E, 0x72, 0x64, 0x61, 0x74, 0x61, 0x24, 0x7A, 451 | 0x7A, 0x7A, 0x64, 0x62, 0x67, 0x00, 0x00, 0x00, 0x90, 0x23, 0x00, 0x00, 452 | 0xE4, 0x00, 0x00, 0x00, 0x2E, 0x78, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 453 | 0x00, 0x30, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x2E, 0x64, 0x61, 0x74, 454 | 0x61, 0x00, 0x00, 0x00, 0x08, 0x30, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 455 | 0x2E, 0x62, 0x73, 0x73, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 456 | 0x90, 0x00, 0x00, 0x00, 0x2E, 0x70, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 457 | 0x00, 0x50, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x2E, 0x69, 0x64, 0x61, 458 | 0x74, 0x61, 0x24, 0x32, 0x00, 0x00, 0x00, 0x00, 0x14, 0x50, 0x00, 0x00, 459 | 0x14, 0x00, 0x00, 0x00, 0x2E, 0x69, 0x64, 0x61, 0x74, 0x61, 0x24, 0x33, 460 | 0x00, 0x00, 0x00, 0x00, 0x28, 0x50, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 461 | 0x2E, 0x69, 0x64, 0x61, 0x74, 0x61, 0x24, 0x34, 0x00, 0x00, 0x00, 0x00, 462 | 0x90, 0x50, 0x00, 0x00, 0x46, 0x01, 0x00, 0x00, 0x2E, 0x69, 0x64, 0x61, 463 | 0x74, 0x61, 0x24, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 464 | 0x02, 0x1D, 0x0E, 0x00, 0x07, 0x16, 0x00, 0x06, 0x1D, 0x74, 0x0D, 0x00, 465 | 0x1D, 0x64, 0x0C, 0x00, 0x1D, 0x54, 0x0B, 0x00, 0x1D, 0x34, 0x0A, 0x00, 466 | 0x1D, 0x52, 0x19, 0xF0, 0x17, 0xE0, 0x15, 0xC0, 0x02, 0x04, 0x03, 0x00, 467 | 0x01, 0x16, 0x00, 0x06, 0x04, 0x42, 0x00, 0x00, 0x02, 0x12, 0x0A, 0x00, 468 | 0x05, 0x06, 0x09, 0x06, 0x12, 0x54, 0x0B, 0x00, 0x12, 0x34, 0x0A, 0x00, 469 | 0x12, 0x32, 0x0E, 0xE0, 0x0C, 0x70, 0x0B, 0x60, 0x02, 0x0F, 0x08, 0x00, 470 | 0x01, 0x16, 0x00, 0x06, 0x0F, 0x74, 0x03, 0x00, 0x0A, 0x64, 0x02, 0x00, 471 | 0x05, 0x34, 0x01, 0x00, 0x02, 0x0A, 0x06, 0x00, 0x02, 0x16, 0x00, 0x06, 472 | 0x0A, 0x34, 0x06, 0x00, 0x0A, 0x32, 0x06, 0x70, 0x02, 0x10, 0x08, 0x00, 473 | 0x02, 0x16, 0x00, 0x06, 0x10, 0x64, 0x0F, 0x00, 0x10, 0x34, 0x0C, 0x00, 474 | 0x10, 0x92, 0x0C, 0x70, 0x02, 0x08, 0x04, 0x00, 0x02, 0x06, 0x1A, 0x06, 475 | 0x08, 0x32, 0x04, 0x30, 0x02, 0x14, 0x0A, 0x00, 0x02, 0x16, 0x00, 0x06, 476 | 0x14, 0x64, 0x0C, 0x00, 0x14, 0x54, 0x0B, 0x00, 0x14, 0x34, 0x0A, 0x00, 477 | 0x14, 0x72, 0x10, 0x70, 0x02, 0x14, 0x0A, 0x00, 0x02, 0x16, 0x00, 0x06, 478 | 0x14, 0x64, 0x09, 0x00, 0x14, 0x54, 0x08, 0x00, 0x14, 0x34, 0x06, 0x00, 479 | 0x14, 0x32, 0x10, 0x70, 0x02, 0x17, 0x0C, 0x00, 0x05, 0x06, 0x0B, 0x06, 480 | 0x17, 0x74, 0x06, 0x00, 0x17, 0x64, 0x05, 0x00, 0x17, 0x54, 0x04, 0x00, 481 | 0x17, 0x34, 0x03, 0x00, 0x17, 0xF0, 0x15, 0xE0, 0x00, 0x00, 0x00, 0x00, 482 | 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 483 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 484 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 485 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 486 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 487 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 488 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 489 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 490 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 491 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 492 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 493 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 494 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 495 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 496 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 497 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 498 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 499 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 500 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 501 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 502 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 503 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 504 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 505 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 506 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 507 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 508 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 509 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 510 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 511 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 512 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 513 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 514 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 515 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 516 | 0x32, 0xA2, 0xDF, 0x2D, 0x99, 0x2B, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 517 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 518 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 519 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 520 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 521 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 522 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 523 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 524 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 525 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 526 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 527 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 528 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 529 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 530 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 531 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 532 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 533 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 534 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 535 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 536 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 537 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 538 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 539 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 540 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 541 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 542 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 543 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 544 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 545 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 546 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 547 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 548 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 549 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 550 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 551 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 552 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 553 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 554 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 555 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 556 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 557 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 558 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 559 | 0x78, 0x10, 0x00, 0x00, 0xB0, 0x23, 0x00, 0x00, 0xB0, 0x10, 0x00, 0x00, 560 | 0x5A, 0x12, 0x00, 0x00, 0x90, 0x23, 0x00, 0x00, 0x5C, 0x12, 0x00, 0x00, 561 | 0x98, 0x12, 0x00, 0x00, 0xE8, 0x23, 0x00, 0x00, 0xD4, 0x12, 0x00, 0x00, 562 | 0xCB, 0x13, 0x00, 0x00, 0xBC, 0x23, 0x00, 0x00, 0xCC, 0x13, 0x00, 0x00, 563 | 0x6E, 0x14, 0x00, 0x00, 0xD4, 0x23, 0x00, 0x00, 0x70, 0x14, 0x00, 0x00, 564 | 0x4A, 0x15, 0x00, 0x00, 0x0C, 0x24, 0x00, 0x00, 0x4C, 0x15, 0x00, 0x00, 565 | 0x59, 0x16, 0x00, 0x00, 0xF8, 0x23, 0x00, 0x00, 0x5C, 0x16, 0x00, 0x00, 566 | 0x57, 0x17, 0x00, 0x00, 0x30, 0x24, 0x00, 0x00, 0x58, 0x17, 0x00, 0x00, 567 | 0xD5, 0x17, 0x00, 0x00, 0x18, 0x24, 0x00, 0x00, 0xD8, 0x17, 0x00, 0x00, 568 | 0x7D, 0x18, 0x00, 0x00, 0x48, 0x24, 0x00, 0x00, 0xB0, 0x18, 0x00, 0x00, 569 | 0xB5, 0x18, 0x00, 0x00, 0x68, 0x24, 0x00, 0x00, 0xC0, 0x18, 0x00, 0x00, 570 | 0x6A, 0x1B, 0x00, 0x00, 0x70, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 571 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 572 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 573 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 574 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 575 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 576 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 577 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 578 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 579 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 580 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 581 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 582 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 583 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 584 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 585 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 586 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 587 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 588 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 589 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 590 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 591 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 592 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 593 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 594 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 595 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 596 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 597 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 598 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 599 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 600 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 601 | 0x00, 0x00, 0x00, 0x00, 0x28, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 602 | 0x00, 0x00, 0x00, 0x00, 0xC8, 0x51, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 603 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 604 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x50, 0x00, 0x00, 605 | 0x00, 0x00, 0x00, 0x00, 0xA2, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 606 | 0xB6, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xCA, 0x50, 0x00, 0x00, 607 | 0x00, 0x00, 0x00, 0x00, 0xEA, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 608 | 0x02, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x51, 0x00, 0x00, 609 | 0x00, 0x00, 0x00, 0x00, 0x3C, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 610 | 0x5E, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x51, 0x00, 0x00, 611 | 0x00, 0x00, 0x00, 0x00, 0x96, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 612 | 0xB2, 0x51, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 613 | 0x00, 0x00, 0x00, 0x00, 0x9E, 0x00, 0x45, 0x78, 0x41, 0x6C, 0x6C, 0x6F, 614 | 0x63, 0x61, 0x74, 0x65, 0x50, 0x6F, 0x6F, 0x6C, 0x00, 0x00, 0xCA, 0x00, 615 | 0x45, 0x78, 0x46, 0x72, 0x65, 0x65, 0x50, 0x6F, 0x6F, 0x6C, 0x57, 0x69, 616 | 0x74, 0x68, 0x54, 0x61, 0x67, 0x00, 0xD1, 0x00, 0x45, 0x78, 0x47, 0x65, 617 | 0x74, 0x50, 0x72, 0x65, 0x76, 0x69, 0x6F, 0x75, 0x73, 0x4D, 0x6F, 0x64, 618 | 0x65, 0x00, 0x27, 0x08, 0x52, 0x74, 0x6C, 0x46, 0x69, 0x6E, 0x64, 0x45, 619 | 0x78, 0x70, 0x6F, 0x72, 0x74, 0x65, 0x64, 0x52, 0x6F, 0x75, 0x74, 0x69, 620 | 0x6E, 0x65, 0x42, 0x79, 0x4E, 0x61, 0x6D, 0x65, 0x00, 0x00, 0x7F, 0x08, 621 | 0x52, 0x74, 0x6C, 0x49, 0x6E, 0x69, 0x74, 0x55, 0x6E, 0x69, 0x63, 0x6F, 622 | 0x64, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6E, 0x67, 0x00, 0x00, 0x8E, 0x00, 623 | 0x45, 0x78, 0x41, 0x63, 0x71, 0x75, 0x69, 0x72, 0x65, 0x52, 0x65, 0x73, 624 | 0x6F, 0x75, 0x72, 0x63, 0x65, 0x45, 0x78, 0x63, 0x6C, 0x75, 0x73, 0x69, 625 | 0x76, 0x65, 0x4C, 0x69, 0x74, 0x65, 0x00, 0x00, 0x1B, 0x01, 0x45, 0x78, 626 | 0x52, 0x65, 0x6C, 0x65, 0x61, 0x73, 0x65, 0x52, 0x65, 0x73, 0x6F, 0x75, 627 | 0x72, 0x63, 0x65, 0x4C, 0x69, 0x74, 0x65, 0x00, 0xF7, 0x07, 0x52, 0x74, 628 | 0x6C, 0x44, 0x65, 0x6C, 0x65, 0x74, 0x65, 0x45, 0x6C, 0x65, 0x6D, 0x65, 629 | 0x6E, 0x74, 0x47, 0x65, 0x6E, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 630 | 0x6C, 0x65, 0x41, 0x76, 0x6C, 0x00, 0xCF, 0x08, 0x52, 0x74, 0x6C, 0x4C, 631 | 0x6F, 0x6F, 0x6B, 0x75, 0x70, 0x45, 0x6C, 0x65, 0x6D, 0x65, 0x6E, 0x74, 632 | 0x47, 0x65, 0x6E, 0x65, 0x72, 0x69, 0x63, 0x54, 0x61, 0x62, 0x6C, 0x65, 633 | 0x41, 0x76, 0x6C, 0x00, 0x2C, 0x03, 0x49, 0x6F, 0x47, 0x65, 0x74, 0x43, 634 | 0x75, 0x72, 0x72, 0x65, 0x6E, 0x74, 0x50, 0x72, 0x6F, 0x63, 0x65, 0x73, 635 | 0x73, 0x00, 0x14, 0x0B, 0x5A, 0x77, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 636 | 0x79, 0x73, 0x74, 0x65, 0x6D, 0x49, 0x6E, 0x66, 0x6F, 0x72, 0x6D, 0x61, 637 | 0x74, 0x69, 0x6F, 0x6E, 0x00, 0x00, 0x6C, 0x05, 0x4D, 0x6D, 0x43, 0x6F, 638 | 0x70, 0x79, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6C, 0x4D, 0x65, 0x6D, 639 | 0x6F, 0x72, 0x79, 0x00, 0x6E, 0x74, 0x6F, 0x73, 0x6B, 0x72, 0x6E, 0x6C, 640 | 0x2E, 0x65, 0x78, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 641 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 642 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 643 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 644 | 0x00, 0x20, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x68, 0xA0, 0x70, 0xA0, 645 | 0x28, 0xA1, 0x40, 0xA1, 0x48, 0xA1, 0x50, 0xA1, 0x00, 0x00, 0x00, 0x00, 646 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 647 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 648 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 649 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 650 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 651 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 652 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 653 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 654 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 655 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 656 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 657 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 658 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 659 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 660 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 661 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 662 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 663 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 664 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 665 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 666 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 667 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 668 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 669 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 670 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 671 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 672 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 673 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 674 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 675 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 676 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 677 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 678 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 679 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 680 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 681 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 682 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 683 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 684 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 685 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 686 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x14, 0x00, 0x00, 687 | 0x00, 0x02, 0x02, 0x00, 0x30, 0x82, 0x14, 0x3C, 0x06, 0x09, 0x2A, 0x86, 688 | 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x07, 0x02, 0xA0, 0x82, 0x14, 0x2D, 0x30, 689 | 0x82, 0x14, 0x29, 0x02, 0x01, 0x01, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x05, 690 | 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0x30, 0x4C, 0x06, 0x0A, 0x2B, 691 | 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xA0, 0x3E, 0x30, 692 | 0x3C, 0x30, 0x17, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 693 | 0x02, 0x01, 0x0F, 0x30, 0x09, 0x03, 0x01, 0x00, 0xA0, 0x04, 0xA2, 0x02, 694 | 0x80, 0x00, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 695 | 0x1A, 0x05, 0x00, 0x04, 0x14, 0x6E, 0x40, 0x26, 0xF5, 0x9B, 0x0E, 0x2D, 696 | 0x05, 0xA2, 0x29, 0xF6, 0x49, 0x51, 0x3A, 0x29, 0x96, 0xE4, 0x67, 0xFA, 697 | 0xC9, 0xA0, 0x82, 0x11, 0x98, 0x30, 0x82, 0x05, 0x31, 0x30, 0x82, 0x04, 698 | 0x19, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x11, 0x00, 0xA7, 0x5A, 0xF1, 699 | 0x6C, 0xB1, 0x56, 0x98, 0x23, 0x09, 0x5A, 0x4C, 0x76, 0xE1, 0x67, 0x82, 700 | 0x84, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 701 | 0x01, 0x0B, 0x05, 0x00, 0x30, 0x7C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 702 | 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 703 | 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 704 | 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 705 | 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 706 | 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 707 | 0x55, 0x04, 0x0A, 0x13, 0x0F, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 708 | 0x20, 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 709 | 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, 0x53, 0x65, 0x63, 0x74, 0x69, 710 | 0x67, 0x6F, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 711 | 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 0x41, 0x30, 0x1E, 712 | 0x17, 0x0D, 0x32, 0x30, 0x30, 0x34, 0x32, 0x39, 0x30, 0x30, 0x30, 0x30, 713 | 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x32, 0x31, 0x30, 0x34, 0x32, 0x38, 0x32, 714 | 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x81, 0xA1, 0x31, 0x0B, 0x30, 715 | 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x43, 0x41, 0x31, 0x10, 716 | 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x11, 0x0C, 0x07, 0x56, 0x36, 0x57, 717 | 0x20, 0x30, 0x42, 0x38, 0x31, 0x19, 0x30, 0x17, 0x06, 0x03, 0x55, 0x04, 718 | 0x08, 0x0C, 0x10, 0x42, 0x72, 0x69, 0x74, 0x69, 0x73, 0x68, 0x20, 0x43, 719 | 0x6F, 0x6C, 0x75, 0x6D, 0x62, 0x69, 0x61, 0x31, 0x11, 0x30, 0x0F, 0x06, 720 | 0x03, 0x55, 0x04, 0x07, 0x0C, 0x08, 0x52, 0x69, 0x63, 0x68, 0x6D, 0x6F, 721 | 0x6E, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x09, 0x0C, 722 | 0x11, 0x39, 0x31, 0x31, 0x2D, 0x31, 0x30, 0x38, 0x37, 0x30, 0x20, 0x4E, 723 | 0x6F, 0x2E, 0x35, 0x20, 0x72, 0x64, 0x31, 0x1A, 0x30, 0x18, 0x06, 0x03, 724 | 0x55, 0x04, 0x0A, 0x0C, 0x11, 0x4A, 0x65, 0x72, 0x6F, 0x6D, 0x69, 0x6E, 725 | 0x20, 0x43, 0x6F, 0x64, 0x79, 0x20, 0x45, 0x72, 0x69, 0x63, 0x31, 0x1A, 726 | 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x0C, 0x11, 0x4A, 0x65, 0x72, 727 | 0x6F, 0x6D, 0x69, 0x6E, 0x20, 0x43, 0x6F, 0x64, 0x79, 0x20, 0x45, 0x72, 728 | 0x69, 0x63, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 729 | 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 730 | 0x0F, 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0xD1, 731 | 0x8D, 0xBC, 0xDB, 0x92, 0x18, 0xC8, 0x53, 0xA8, 0x71, 0x6B, 0x88, 0xF3, 732 | 0x08, 0xC7, 0xBA, 0x68, 0x42, 0x32, 0x3D, 0xB4, 0x97, 0x73, 0x96, 0xAD, 733 | 0xB3, 0x84, 0xA8, 0xEB, 0xC2, 0x82, 0x09, 0xF8, 0x8C, 0xF2, 0x84, 0xCB, 734 | 0x60, 0x72, 0x60, 0xAE, 0x1B, 0x41, 0x64, 0x85, 0x48, 0x7F, 0x6F, 0xB3, 735 | 0x2D, 0x79, 0xD6, 0x27, 0x68, 0x3B, 0xDD, 0x09, 0x03, 0x46, 0x9B, 0x32, 736 | 0x7D, 0xDA, 0xEC, 0x5B, 0xC7, 0xC0, 0xA4, 0x9B, 0x98, 0x6D, 0x6A, 0xA7, 737 | 0x41, 0x3A, 0x84, 0x54, 0x15, 0xAD, 0x3F, 0x6C, 0xB9, 0x14, 0xAB, 0xE3, 738 | 0xDB, 0x19, 0x01, 0x37, 0xF0, 0xA8, 0xE2, 0x47, 0xC7, 0x54, 0x56, 0xA4, 739 | 0x46, 0x6C, 0x41, 0x8D, 0x14, 0xEB, 0xB2, 0xFA, 0x81, 0x46, 0xDF, 0x24, 740 | 0x39, 0x39, 0x1E, 0xE0, 0x52, 0x85, 0xB3, 0x0F, 0x87, 0xDB, 0x6D, 0x18, 741 | 0x34, 0xD4, 0x35, 0x7C, 0xF5, 0xDB, 0xE5, 0xB5, 0x39, 0x41, 0x62, 0x86, 742 | 0x41, 0xCC, 0x8A, 0xFC, 0xF4, 0xEA, 0xB4, 0x4B, 0x74, 0x40, 0x8C, 0x3B, 743 | 0xBA, 0x26, 0x5F, 0x3C, 0xC9, 0x97, 0x12, 0xE8, 0x84, 0x57, 0x69, 0x50, 744 | 0xE8, 0x60, 0x52, 0x12, 0x53, 0xBF, 0x91, 0xF4, 0x63, 0x40, 0x85, 0xD6, 745 | 0x81, 0x48, 0x9B, 0x7D, 0x6D, 0xBB, 0xFD, 0x4E, 0x75, 0x31, 0xC4, 0x8B, 746 | 0x00, 0xF4, 0x39, 0x94, 0x45, 0x44, 0xF6, 0xBD, 0x13, 0x4E, 0xC4, 0x61, 747 | 0x4B, 0xE4, 0x7E, 0xA0, 0x53, 0x39, 0x75, 0x67, 0xD5, 0x35, 0x86, 0xFA, 748 | 0xD5, 0x71, 0x2C, 0x4D, 0xD7, 0xB2, 0xBB, 0xE4, 0xC6, 0x99, 0x85, 0x6B, 749 | 0x1E, 0xC2, 0x7D, 0xC6, 0xE2, 0x74, 0xE1, 0x08, 0xDC, 0xFF, 0x99, 0xEB, 750 | 0xAB, 0x87, 0x4F, 0xCC, 0x62, 0x53, 0x95, 0xA9, 0x92, 0x3C, 0x7B, 0x26, 751 | 0x0A, 0x52, 0x41, 0x9D, 0x2B, 0xF7, 0x51, 0x80, 0x10, 0xEE, 0x65, 0xDC, 752 | 0x07, 0xEC, 0xDD, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x86, 753 | 0x30, 0x82, 0x01, 0x82, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 754 | 0x18, 0x30, 0x16, 0x80, 0x14, 0x0E, 0xE1, 0x3A, 0xA8, 0x53, 0x3A, 0x31, 755 | 0xD5, 0x8A, 0xBE, 0xC1, 0xBB, 0xAD, 0x67, 0x1A, 0x03, 0x85, 0xAD, 0x34, 756 | 0x0E, 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 757 | 0x65, 0x94, 0x5A, 0x31, 0x0D, 0xEA, 0x7A, 0x25, 0x88, 0xE2, 0xDC, 0x08, 758 | 0x30, 0x37, 0xEF, 0x92, 0x34, 0x12, 0x90, 0xE6, 0x30, 0x0E, 0x06, 0x03, 759 | 0x55, 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 760 | 0x30, 0x0C, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x02, 761 | 0x30, 0x00, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 0x0C, 0x30, 762 | 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 763 | 0x11, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xF8, 0x42, 0x01, 0x01, 764 | 0x04, 0x04, 0x03, 0x02, 0x04, 0x10, 0x30, 0x40, 0x06, 0x03, 0x55, 0x1D, 765 | 0x20, 0x04, 0x39, 0x30, 0x37, 0x30, 0x35, 0x06, 0x0C, 0x2B, 0x06, 0x01, 766 | 0x04, 0x01, 0xB2, 0x31, 0x01, 0x02, 0x01, 0x03, 0x02, 0x30, 0x25, 0x30, 767 | 0x23, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 768 | 0x17, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3A, 0x2F, 0x2F, 0x73, 0x65, 0x63, 769 | 0x74, 0x69, 0x67, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x43, 0x50, 0x53, 770 | 0x30, 0x43, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x3C, 0x30, 0x3A, 0x30, 771 | 0x38, 0xA0, 0x36, 0xA0, 0x34, 0x86, 0x32, 0x68, 0x74, 0x74, 0x70, 0x3A, 772 | 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x73, 0x65, 0x63, 0x74, 0x69, 0x67, 773 | 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 774 | 0x6F, 0x52, 0x53, 0x41, 0x43, 0x6F, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6E, 775 | 0x69, 0x6E, 0x67, 0x43, 0x41, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x73, 0x06, 776 | 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x67, 0x30, 777 | 0x65, 0x30, 0x3E, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 778 | 0x02, 0x86, 0x32, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 779 | 0x74, 0x2E, 0x73, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 0x2E, 0x63, 0x6F, 780 | 0x6D, 0x2F, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 0x52, 0x53, 0x41, 781 | 0x43, 0x6F, 0x64, 0x65, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x43, 782 | 0x41, 0x2E, 0x63, 0x72, 0x74, 0x30, 0x23, 0x06, 0x08, 0x2B, 0x06, 0x01, 783 | 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x17, 0x68, 0x74, 0x74, 0x70, 0x3A, 784 | 0x2F, 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x73, 0x65, 0x63, 0x74, 0x69, 785 | 0x67, 0x6F, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 786 | 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0B, 0x05, 0x00, 0x03, 0x82, 0x01, 787 | 0x01, 0x00, 0x08, 0xC6, 0x9A, 0xDC, 0x72, 0x4B, 0xAB, 0xB8, 0x57, 0x89, 788 | 0x16, 0x84, 0x2B, 0x82, 0x81, 0xF3, 0x54, 0xFD, 0x7C, 0xD4, 0xCC, 0x32, 789 | 0x5B, 0xA6, 0x2E, 0xDC, 0x0D, 0x54, 0x80, 0xD7, 0x3E, 0x50, 0xE3, 0x8D, 790 | 0x3E, 0x76, 0x26, 0xCD, 0xE2, 0xF8, 0x3E, 0x79, 0x4E, 0xA0, 0x13, 0x67, 791 | 0xD6, 0x6F, 0x8D, 0x80, 0x0E, 0xBF, 0x14, 0xA6, 0x31, 0xA4, 0xF7, 0xB1, 792 | 0xE6, 0x48, 0x5E, 0x36, 0x60, 0x7D, 0x20, 0x29, 0xA0, 0xCD, 0xAE, 0x4D, 793 | 0xCC, 0x67, 0xEB, 0xAE, 0x34, 0xA8, 0xF3, 0xF7, 0x4E, 0xFF, 0x72, 0xE1, 794 | 0xCA, 0xA5, 0x79, 0x31, 0xDE, 0xAE, 0xE2, 0xE6, 0x7D, 0x4A, 0xBC, 0x94, 795 | 0x80, 0xFF, 0x10, 0x8B, 0x4A, 0xDF, 0x17, 0xF7, 0x77, 0x0E, 0x43, 0xB7, 796 | 0xE2, 0xC0, 0xBA, 0x66, 0x1B, 0x79, 0x69, 0xD3, 0xE9, 0xB9, 0xCE, 0x67, 797 | 0x61, 0xA7, 0xDC, 0xB4, 0x2E, 0x3A, 0xAC, 0xF5, 0x57, 0xD3, 0x5D, 0x17, 798 | 0xEA, 0x78, 0x70, 0xC6, 0x87, 0xB3, 0x43, 0x4C, 0x55, 0x76, 0x94, 0x6E, 799 | 0x94, 0x02, 0x3B, 0x3D, 0xEE, 0xCF, 0x5B, 0x08, 0xBB, 0x07, 0xD1, 0xBE, 800 | 0x46, 0xB8, 0x9F, 0xA2, 0xA0, 0x1E, 0x6C, 0x49, 0x9E, 0x92, 0x49, 0x98, 801 | 0xDF, 0x17, 0x74, 0x74, 0xAA, 0x24, 0x97, 0x8A, 0xAD, 0xD0, 0x59, 0x37, 802 | 0xBD, 0xC7, 0x8D, 0x66, 0xD8, 0x47, 0xC4, 0x04, 0xEF, 0x53, 0x49, 0x89, 803 | 0xA9, 0xEF, 0xAF, 0x17, 0xB2, 0x5B, 0x8C, 0x3D, 0x0D, 0x3F, 0xFE, 0x80, 804 | 0x28, 0x58, 0x06, 0x7C, 0xF9, 0x5C, 0x4B, 0x7C, 0x66, 0x7C, 0x7C, 0x0C, 805 | 0x85, 0xD1, 0x14, 0x2D, 0x2F, 0xB7, 0x11, 0x8F, 0xA2, 0x43, 0x02, 0xB2, 806 | 0xF5, 0x86, 0xBD, 0xCD, 0x34, 0x8E, 0xA5, 0xD4, 0x12, 0xE7, 0xCD, 0x28, 807 | 0xA2, 0x9E, 0x5C, 0xF1, 0x38, 0x70, 0x5E, 0x58, 0xEF, 0x53, 0x54, 0xDE, 808 | 0x11, 0x93, 0x1D, 0xD9, 0x2A, 0xBD, 0x30, 0x82, 0x05, 0xF5, 0x30, 0x82, 809 | 0x03, 0xDD, 0xA0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x1D, 0xA2, 0x48, 810 | 0x30, 0x6F, 0x9B, 0x26, 0x18, 0xD0, 0x82, 0xE0, 0x96, 0x7D, 0x33, 0xD3, 811 | 0x6A, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 812 | 0x01, 0x0C, 0x05, 0x00, 0x30, 0x81, 0x88, 0x31, 0x0B, 0x30, 0x09, 0x06, 813 | 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 814 | 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x4E, 0x65, 0x77, 0x20, 0x4A, 815 | 0x65, 0x72, 0x73, 0x65, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 816 | 0x04, 0x07, 0x13, 0x0B, 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20, 0x43, 817 | 0x69, 0x74, 0x79, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 0x0A, 818 | 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 0x52, 819 | 0x55, 0x53, 0x54, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 0x31, 820 | 0x2E, 0x30, 0x2C, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55, 0x53, 821 | 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 0x20, 822 | 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6F, 823 | 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 0x30, 824 | 0x1E, 0x17, 0x0D, 0x31, 0x38, 0x31, 0x31, 0x30, 0x32, 0x30, 0x30, 0x30, 825 | 0x30, 0x30, 0x30, 0x5A, 0x17, 0x0D, 0x33, 0x30, 0x31, 0x32, 0x33, 0x31, 826 | 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5A, 0x30, 0x7C, 0x31, 0x0B, 0x30, 827 | 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x47, 0x42, 0x31, 0x1B, 828 | 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x12, 0x47, 0x72, 0x65, 829 | 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, 0x6E, 0x63, 0x68, 0x65, 0x73, 830 | 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 831 | 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 0x64, 0x31, 0x18, 0x30, 832 | 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0F, 0x53, 0x65, 0x63, 0x74, 833 | 0x69, 0x67, 0x6F, 0x20, 0x4C, 0x69, 0x6D, 0x69, 0x74, 0x65, 0x64, 0x31, 834 | 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x1B, 0x53, 0x65, 835 | 0x63, 0x74, 0x69, 0x67, 0x6F, 0x20, 0x52, 0x53, 0x41, 0x20, 0x43, 0x6F, 836 | 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 0x6E, 0x67, 0x20, 0x43, 837 | 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 838 | 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0F, 839 | 0x00, 0x30, 0x82, 0x01, 0x0A, 0x02, 0x82, 0x01, 0x01, 0x00, 0x86, 0x22, 840 | 0x8D, 0x32, 0x85, 0x7A, 0x18, 0x9F, 0x49, 0xF0, 0x96, 0x2F, 0x63, 0x08, 841 | 0x1E, 0x2D, 0xDC, 0x7C, 0x9F, 0x14, 0xCF, 0xE3, 0x26, 0xB6, 0x25, 0x66, 842 | 0x29, 0x40, 0x86, 0x54, 0x46, 0x74, 0x31, 0x62, 0xC5, 0x10, 0xED, 0xB2, 843 | 0x87, 0x27, 0xA6, 0x99, 0xCB, 0x95, 0x30, 0xC0, 0x56, 0xF5, 0xA4, 0x75, 844 | 0xC6, 0xA9, 0x0E, 0x50, 0x62, 0xA5, 0x51, 0x91, 0x10, 0x6A, 0xE0, 0x4B, 845 | 0x62, 0xAE, 0xFD, 0xF0, 0xF8, 0x18, 0xAC, 0xA7, 0xFF, 0xEE, 0x2E, 0x33, 846 | 0x20, 0xFA, 0x0C, 0x19, 0x89, 0xA8, 0x6C, 0x7B, 0xAD, 0x00, 0xC3, 0x61, 847 | 0xA1, 0xDC, 0x69, 0x65, 0x6D, 0x1F, 0x6E, 0x27, 0x96, 0xD7, 0x97, 0x51, 848 | 0x86, 0xA6, 0xF4, 0x27, 0xE5, 0x7C, 0x6A, 0x8B, 0x95, 0x1E, 0x5B, 0x60, 849 | 0xD5, 0x7E, 0xD7, 0x16, 0x92, 0x9C, 0x00, 0x2F, 0x68, 0xF7, 0x97, 0xED, 850 | 0x6A, 0x72, 0xBE, 0x38, 0x3B, 0x63, 0xDE, 0x8F, 0xBF, 0x6E, 0x4C, 0x41, 851 | 0x5D, 0x12, 0x20, 0x08, 0x59, 0xE8, 0x39, 0xCD, 0x8F, 0xD2, 0xD6, 0xCF, 852 | 0x06, 0xB4, 0x57, 0x05, 0xB6, 0x4E, 0xA1, 0x3E, 0x57, 0x6B, 0x1F, 0x98, 853 | 0xBC, 0xC4, 0x62, 0xD6, 0x1B, 0x0B, 0x8D, 0xC7, 0x66, 0x1B, 0x4A, 0x9F, 854 | 0x9D, 0x81, 0xC4, 0x72, 0x40, 0xB5, 0xE2, 0x5F, 0xEF, 0x0B, 0x45, 0xFF, 855 | 0xA3, 0xCE, 0x17, 0xA6, 0x2D, 0x55, 0xB0, 0xB7, 0xB0, 0xBC, 0x54, 0x6A, 856 | 0x9D, 0xBC, 0x8D, 0x56, 0x53, 0xC6, 0xF0, 0xBA, 0x79, 0x50, 0x49, 0x2C, 857 | 0xF7, 0x03, 0xB9, 0xFE, 0x2F, 0x65, 0x35, 0xF2, 0x22, 0xEA, 0x2C, 0x07, 858 | 0xAF, 0x46, 0xD9, 0xF9, 0x46, 0x1C, 0xDC, 0x8C, 0x7C, 0x71, 0x28, 0xF3, 859 | 0xFE, 0xA7, 0xC6, 0x14, 0xDD, 0x55, 0x91, 0x6E, 0x8A, 0x11, 0x0D, 0xDF, 860 | 0x06, 0x24, 0x95, 0x7D, 0x0F, 0xA7, 0xA1, 0x7C, 0x3A, 0xDA, 0x86, 0x35, 861 | 0x61, 0xD3, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x82, 0x01, 0x64, 0x30, 862 | 0x82, 0x01, 0x60, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 0x04, 0x18, 863 | 0x30, 0x16, 0x80, 0x14, 0x53, 0x79, 0xBF, 0x5A, 0xAA, 0x2B, 0x4A, 0xCF, 864 | 0x54, 0x80, 0xE1, 0xD8, 0x9B, 0xC0, 0x9D, 0xF2, 0xB2, 0x03, 0x66, 0xCB, 865 | 0x30, 0x1D, 0x06, 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x0E, 866 | 0xE1, 0x3A, 0xA8, 0x53, 0x3A, 0x31, 0xD5, 0x8A, 0xBE, 0xC1, 0xBB, 0xAD, 867 | 0x67, 0x1A, 0x03, 0x85, 0xAD, 0x34, 0x0E, 0x30, 0x0E, 0x06, 0x03, 0x55, 868 | 0x1D, 0x0F, 0x01, 0x01, 0xFF, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 869 | 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 0x08, 0x30, 870 | 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x00, 0x30, 0x1D, 0x06, 0x03, 0x55, 871 | 0x1D, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 872 | 0x05, 0x07, 0x03, 0x03, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 873 | 0x03, 0x08, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1D, 0x20, 0x04, 0x0A, 0x30, 874 | 0x08, 0x30, 0x06, 0x06, 0x04, 0x55, 0x1D, 0x20, 0x00, 0x30, 0x50, 0x06, 875 | 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x49, 0x30, 0x47, 0x30, 0x45, 0xA0, 0x43, 876 | 0xA0, 0x41, 0x86, 0x3F, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 877 | 0x72, 0x6C, 0x2E, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 878 | 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, 0x75, 879 | 0x73, 0x74, 0x52, 0x53, 0x41, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 880 | 0x63, 0x61, 0x74, 0x69, 0x6F, 0x6E, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 881 | 0x69, 0x74, 0x79, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x76, 0x06, 0x08, 0x2B, 882 | 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x6A, 0x30, 0x68, 0x30, 883 | 0x3F, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 884 | 0x33, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x74, 0x2E, 885 | 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 0x75, 0x73, 0x74, 0x2E, 0x63, 0x6F, 886 | 0x6D, 0x2F, 0x55, 0x53, 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x52, 887 | 0x53, 0x41, 0x41, 0x64, 0x64, 0x54, 0x72, 0x75, 0x73, 0x74, 0x43, 0x41, 888 | 0x2E, 0x63, 0x72, 0x74, 0x30, 0x25, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 889 | 0x05, 0x07, 0x30, 0x01, 0x86, 0x19, 0x68, 0x74, 0x74, 0x70, 0x3A, 0x2F, 890 | 0x2F, 0x6F, 0x63, 0x73, 0x70, 0x2E, 0x75, 0x73, 0x65, 0x72, 0x74, 0x72, 891 | 0x75, 0x73, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x30, 0x0D, 0x06, 0x09, 0x2A, 892 | 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x0C, 0x05, 0x00, 0x03, 0x82, 893 | 0x02, 0x01, 0x00, 0x4D, 0x63, 0x50, 0xED, 0x47, 0x34, 0x4A, 0x61, 0xA4, 894 | 0xDB, 0xDE, 0x6A, 0x2A, 0x8C, 0x9B, 0xF1, 0x00, 0x00, 0x1E, 0x1D, 0x62, 895 | 0x7B, 0x3A, 0xD7, 0x32, 0xC2, 0xF6, 0xB3, 0xE0, 0x63, 0xB3, 0xFB, 0x61, 896 | 0x00, 0x88, 0x9A, 0x1B, 0x6D, 0x10, 0x07, 0x04, 0x4F, 0xBE, 0xB8, 0xEA, 897 | 0x89, 0x78, 0x22, 0xEB, 0x0F, 0x46, 0xEC, 0xF3, 0x46, 0x5E, 0x40, 0x46, 898 | 0x89, 0x12, 0xF4, 0x0B, 0x77, 0x5A, 0x9C, 0x2A, 0x41, 0x3A, 0xFC, 0xD6, 899 | 0xF4, 0xEB, 0xE7, 0xF7, 0x15, 0x95, 0x33, 0xC3, 0xA1, 0x83, 0x28, 0xB7, 900 | 0xDE, 0x2F, 0xE4, 0x94, 0xF7, 0x85, 0x33, 0x83, 0x2D, 0x4A, 0x40, 0x48, 901 | 0xBF, 0x9A, 0xC2, 0x4F, 0x4A, 0xB1, 0x8F, 0x24, 0xF4, 0xB3, 0x81, 0x37, 902 | 0xD3, 0xB7, 0x64, 0xB0, 0xA6, 0x23, 0x6A, 0x59, 0x68, 0x52, 0x42, 0x5F, 903 | 0xFF, 0x04, 0xEB, 0xE1, 0x74, 0x65, 0x79, 0x08, 0xF5, 0xA9, 0x93, 0xDE, 904 | 0x6B, 0x71, 0x40, 0x99, 0x96, 0xBA, 0x78, 0xF1, 0xB9, 0xC8, 0xE2, 0xC3, 905 | 0x08, 0x16, 0xB1, 0xAB, 0x63, 0x5A, 0xC8, 0x15, 0x80, 0x6D, 0x74, 0x5E, 906 | 0x4A, 0x75, 0x7E, 0xA5, 0xB8, 0xC3, 0x6C, 0xB5, 0xCF, 0xDF, 0x4A, 0x79, 907 | 0x87, 0x5C, 0xC7, 0x40, 0x4D, 0x63, 0x35, 0xF6, 0x30, 0xD3, 0xCF, 0xB5, 908 | 0x0A, 0x0E, 0x0B, 0x04, 0x7F, 0xA0, 0x4B, 0xAE, 0xBB, 0xA3, 0xA5, 0xD0, 909 | 0x84, 0x00, 0x93, 0x3E, 0x53, 0x5D, 0x34, 0xA5, 0x00, 0x35, 0x69, 0x6C, 910 | 0xBE, 0x9F, 0x20, 0x25, 0x10, 0x0D, 0x19, 0xFB, 0x50, 0x90, 0x61, 0xBE, 911 | 0x39, 0x8F, 0x7A, 0x8E, 0x4D, 0xF6, 0x9F, 0x0E, 0x1E, 0xFE, 0x07, 0x51, 912 | 0x12, 0x66, 0x83, 0x26, 0x19, 0x48, 0x95, 0xCE, 0x4A, 0xC9, 0xC1, 0x7F, 913 | 0xF3, 0x3A, 0x05, 0x9B, 0xF9, 0x6F, 0xDF, 0x88, 0x7F, 0xC0, 0x23, 0x9E, 914 | 0xD2, 0x1E, 0x43, 0x7A, 0x45, 0x31, 0xC1, 0x9C, 0x4D, 0xA9, 0xF0, 0x59, 915 | 0xB2, 0x59, 0x19, 0xE8, 0x6A, 0x8D, 0x29, 0x04, 0x02, 0x77, 0x7C, 0x4B, 916 | 0x4B, 0xCD, 0x70, 0xBE, 0x3A, 0xB2, 0x55, 0x5A, 0x78, 0x3E, 0xBC, 0xBB, 917 | 0x6F, 0x03, 0x10, 0x25, 0x77, 0x15, 0x34, 0x8A, 0xF9, 0x36, 0xCC, 0x43, 918 | 0x92, 0xE4, 0xBA, 0x4F, 0xF1, 0x62, 0x93, 0x28, 0x25, 0x57, 0x29, 0xFB, 919 | 0x51, 0x19, 0xC7, 0xA1, 0x25, 0x40, 0x6A, 0x84, 0x57, 0xC6, 0xB2, 0x9D, 920 | 0xB1, 0xBC, 0x1C, 0x0A, 0xDA, 0x7C, 0x67, 0x7E, 0x7D, 0x2E, 0xE9, 0x28, 921 | 0x4C, 0x18, 0x7E, 0xC4, 0x7B, 0x31, 0x41, 0x71, 0x9A, 0x4B, 0x29, 0xEC, 922 | 0x0B, 0x3D, 0x57, 0x50, 0xD2, 0xCA, 0xDD, 0xFD, 0x9E, 0x05, 0x51, 0xE5, 923 | 0x44, 0x78, 0xDD, 0x01, 0xDE, 0xB1, 0x75, 0x98, 0x0D, 0x54, 0x24, 0xFD, 924 | 0xF0, 0x4E, 0xE3, 0xE2, 0xF8, 0x83, 0xBD, 0x72, 0xBA, 0xCB, 0x3D, 0x3A, 925 | 0xEE, 0xF0, 0x5E, 0x17, 0x92, 0x68, 0x6D, 0xC8, 0x61, 0xF9, 0xA6, 0xF1, 926 | 0x2A, 0x0A, 0x0B, 0xA5, 0xB9, 0xF4, 0x9E, 0xEE, 0x98, 0x32, 0x05, 0x85, 927 | 0x9E, 0xEB, 0xF9, 0x83, 0x29, 0xD3, 0xC6, 0x2C, 0x7D, 0xBD, 0x3A, 0x77, 928 | 0x2E, 0x8B, 0x37, 0x42, 0xA0, 0x6A, 0x82, 0xED, 0x3B, 0x4A, 0xAA, 0x94, 929 | 0x10, 0xA4, 0xE1, 0x0D, 0xF8, 0x17, 0xC5, 0xB6, 0x5A, 0x79, 0x33, 0x18, 930 | 0x92, 0xE3, 0xB5, 0x75, 0xF8, 0xA1, 0xE9, 0x8E, 0x0A, 0x25, 0x1E, 0xE4, 931 | 0x1E, 0xF1, 0x9F, 0x5A, 0x87, 0x23, 0xFF, 0x9F, 0xA4, 0x51, 0x9E, 0xFB, 932 | 0x39, 0x80, 0x11, 0xCD, 0xDB, 0xB5, 0xC4, 0xA7, 0xA8, 0x80, 0x6F, 0xE5, 933 | 0x53, 0xD4, 0xE0, 0xE3, 0xA2, 0xC2, 0xD2, 0x5B, 0x1A, 0xFA, 0x32, 0x26, 934 | 0x2D, 0x6A, 0x57, 0x70, 0x1C, 0x3C, 0xA4, 0x58, 0x2E, 0xA3, 0xF3, 0x5B, 935 | 0x4B, 0x07, 0xDC, 0x32, 0x59, 0xF3, 0x87, 0xA7, 0x1A, 0x6D, 0x58, 0x30, 936 | 0x82, 0x06, 0x66, 0x30, 0x82, 0x04, 0x4E, 0xA0, 0x03, 0x02, 0x01, 0x02, 937 | 0x02, 0x13, 0x33, 0x00, 0x00, 0x00, 0x44, 0xB7, 0x3F, 0xFC, 0xEF, 0x5A, 938 | 0xCF, 0xA2, 0x7A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x30, 0x0D, 0x06, 939 | 0x09, 0x2A, 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 940 | 0x30, 0x7F, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 941 | 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 942 | 0x13, 0x0A, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6E, 0x67, 0x74, 0x6F, 0x6E, 943 | 0x31, 0x10, 0x30, 0x0E, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 944 | 0x65, 0x64, 0x6D, 0x6F, 0x6E, 0x64, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 945 | 0x55, 0x04, 0x0A, 0x13, 0x15, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 946 | 0x66, 0x74, 0x20, 0x43, 0x6F, 0x72, 0x70, 0x6F, 0x72, 0x61, 0x74, 0x69, 947 | 0x6F, 0x6E, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 948 | 0x20, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x20, 0x43, 949 | 0x6F, 0x64, 0x65, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 950 | 0x74, 0x69, 0x6F, 0x6E, 0x20, 0x52, 0x6F, 0x6F, 0x74, 0x30, 0x1E, 0x17, 951 | 0x0D, 0x31, 0x35, 0x30, 0x37, 0x32, 0x32, 0x32, 0x31, 0x30, 0x33, 0x34, 952 | 0x39, 0x5A, 0x17, 0x0D, 0x32, 0x35, 0x30, 0x37, 0x32, 0x32, 0x32, 0x31, 953 | 0x30, 0x33, 0x34, 0x39, 0x5A, 0x30, 0x81, 0x88, 0x31, 0x0B, 0x30, 0x09, 954 | 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 955 | 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0A, 0x4E, 0x65, 0x77, 0x20, 956 | 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 957 | 0x55, 0x04, 0x07, 0x13, 0x0B, 0x4A, 0x65, 0x72, 0x73, 0x65, 0x79, 0x20, 958 | 0x43, 0x69, 0x74, 0x79, 0x31, 0x1E, 0x30, 0x1C, 0x06, 0x03, 0x55, 0x04, 959 | 0x0A, 0x13, 0x15, 0x54, 0x68, 0x65, 0x20, 0x55, 0x53, 0x45, 0x52, 0x54, 960 | 0x52, 0x55, 0x53, 0x54, 0x20, 0x4E, 0x65, 0x74, 0x77, 0x6F, 0x72, 0x6B, 961 | 0x31, 0x2E, 0x30, 0x2C, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x25, 0x55, 962 | 0x53, 0x45, 0x52, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x52, 0x53, 0x41, 963 | 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 964 | 0x6F, 0x6E, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6F, 0x72, 0x69, 0x74, 0x79, 965 | 0x30, 0x82, 0x02, 0x22, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 966 | 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x02, 0x0F, 0x00, 967 | 0x30, 0x82, 0x02, 0x0A, 0x02, 0x82, 0x02, 0x01, 0x00, 0x80, 0x12, 0x65, 968 | 0x17, 0x36, 0x0E, 0xC3, 0xDB, 0x08, 0xB3, 0xD0, 0xAC, 0x57, 0x0D, 0x76, 969 | 0xED, 0xCD, 0x27, 0xD3, 0x4C, 0xAD, 0x50, 0x83, 0x61, 0xE2, 0xAA, 0x20, 970 | 0x4D, 0x09, 0x2D, 0x64, 0x09, 0xDC, 0xCE, 0x89, 0x9F, 0xCC, 0x3D, 0xA9, 971 | 0xEC, 0xF6, 0xCF, 0xC1, 0xDC, 0xF1, 0xD3, 0xB1, 0xD6, 0x7B, 0x37, 0x28, 972 | 0x11, 0x2B, 0x47, 0xDA, 0x39, 0xC6, 0xBC, 0x3A, 0x19, 0xB4, 0x5F, 0xA6, 973 | 0xBD, 0x7D, 0x9D, 0xA3, 0x63, 0x42, 0xB6, 0x76, 0xF2, 0xA9, 0x3B, 0x2B, 974 | 0x91, 0xF8, 0xE2, 0x6F, 0xD0, 0xEC, 0x16, 0x20, 0x90, 0x09, 0x3E, 0xE2, 975 | 0xE8, 0x74, 0xC9, 0x18, 0xB4, 0x91, 0xD4, 0x62, 0x64, 0xDB, 0x7F, 0xA3, 976 | 0x06, 0xF1, 0x88, 0x18, 0x6A, 0x90, 0x22, 0x3C, 0xBC, 0xFE, 0x13, 0xF0, 977 | 0x87, 0x14, 0x7B, 0xF6, 0xE4, 0x1F, 0x8E, 0xD4, 0xE4, 0x51, 0xC6, 0x11, 978 | 0x67, 0x46, 0x08, 0x51, 0xCB, 0x86, 0x14, 0x54, 0x3F, 0xBC, 0x33, 0xFE, 979 | 0x7E, 0x6C, 0x9C, 0xFF, 0x16, 0x9D, 0x18, 0xBD, 0x51, 0x8E, 0x35, 0xA6, 980 | 0xA7, 0x66, 0xC8, 0x72, 0x67, 0xDB, 0x21, 0x66, 0xB1, 0xD4, 0x9B, 0x78, 981 | 0x03, 0xC0, 0x50, 0x3A, 0xE8, 0xCC, 0xF0, 0xDC, 0xBC, 0x9E, 0x4C, 0xFE, 982 | 0xAF, 0x05, 0x96, 0x35, 0x1F, 0x57, 0x5A, 0xB7, 0xFF, 0xCE, 0xF9, 0x3D, 983 | 0xB7, 0x2C, 0xB6, 0xF6, 0x54, 0xDD, 0xC8, 0xE7, 0x12, 0x3A, 0x4D, 0xAE, 984 | 0x4C, 0x8A, 0xB7, 0x5C, 0x9A, 0xB4, 0xB7, 0x20, 0x3D, 0xCA, 0x7F, 0x22, 985 | 0x34, 0xAE, 0x7E, 0x3B, 0x68, 0x66, 0x01, 0x44, 0xE7, 0x01, 0x4E, 0x46, 986 | 0x53, 0x9B, 0x33, 0x60, 0xF7, 0x94, 0xBE, 0x53, 0x37, 0x90, 0x73, 0x43, 987 | 0xF3, 0x32, 0xC3, 0x53, 0xEF, 0xDB, 0xAA, 0xFE, 0x74, 0x4E, 0x69, 0xC7, 988 | 0x6B, 0x8C, 0x60, 0x93, 0xDE, 0xC4, 0xC7, 0x0C, 0xDF, 0xE1, 0x32, 0xAE, 989 | 0xCC, 0x93, 0x3B, 0x51, 0x78, 0x95, 0x67, 0x8B, 0xEE, 0x3D, 0x56, 0xFE, 990 | 0x0C, 0xD0, 0x69, 0x0F, 0x1B, 0x0F, 0xF3, 0x25, 0x26, 0x6B, 0x33, 0x6D, 991 | 0xF7, 0x6E, 0x47, 0xFA, 0x73, 0x43, 0xE5, 0x7E, 0x0E, 0xA5, 0x66, 0xB1, 992 | 0x29, 0x7C, 0x32, 0x84, 0x63, 0x55, 0x89, 0xC4, 0x0D, 0xC1, 0x93, 0x54, 993 | 0x30, 0x19, 0x13, 0xAC, 0xD3, 0x7D, 0x37, 0xA7, 0xEB, 0x5D, 0x3A, 0x6C, 994 | 0x35, 0x5C, 0xDB, 0x41, 0xD7, 0x12, 0xDA, 0xA9, 0x49, 0x0B, 0xDF, 0xD8, 995 | 0x80, 0x8A, 0x09, 0x93, 0x62, 0x8E, 0xB5, 0x66, 0xCF, 0x25, 0x88, 0xCD, 996 | 0x84, 0xB8, 0xB1, 0x3F, 0xA4, 0x39, 0x0F, 0xD9, 0x02, 0x9E, 0xEB, 0x12, 997 | 0x4C, 0x95, 0x7C, 0xF3, 0x6B, 0x05, 0xA9, 0x5E, 0x16, 0x83, 0xCC, 0xB8, 998 | 0x67, 0xE2, 0xE8, 0x13, 0x9D, 0xCC, 0x5B, 0x82, 0xD3, 0x4C, 0xB3, 0xED, 999 | 0x5B, 0xFF, 0xDE, 0xE5, 0x73, 0xAC, 0x23, 0x3B, 0x2D, 0x00, 0xBF, 0x35, 1000 | 0x55, 0x74, 0x09, 0x49, 0xD8, 0x49, 0x58, 0x1A, 0x7F, 0x92, 0x36, 0xE6, 1001 | 0x51, 0x92, 0x0E, 0xF3, 0x26, 0x7D, 0x1C, 0x4D, 0x17, 0xBC, 0xC9, 0xEC, 1002 | 0x43, 0x26, 0xD0, 0xBF, 0x41, 0x5F, 0x40, 0xA9, 0x44, 0x44, 0xF4, 0x99, 1003 | 0xE7, 0x57, 0x87, 0x9E, 0x50, 0x1F, 0x57, 0x54, 0xA8, 0x3E, 0xFD, 0x74, 1004 | 0x63, 0x2F, 0xB1, 0x50, 0x65, 0x09, 0xE6, 0x58, 0x42, 0x2E, 0x43, 0x1A, 1005 | 0x4C, 0xB4, 0xF0, 0x25, 0x47, 0x59, 0xFA, 0x04, 0x1E, 0x93, 0xD4, 0x26, 1006 | 0x46, 0x4A, 0x50, 0x81, 0xB2, 0xDE, 0xBE, 0x78, 0xB7, 0xFC, 0x67, 0x15, 1007 | 0xE1, 0xC9, 0x57, 0x84, 0x1E, 0x0F, 0x63, 0xD6, 0xE9, 0x62, 0xBA, 0xD6, 1008 | 0x5F, 0x55, 0x2E, 0xEA, 0x5C, 0xC6, 0x28, 0x08, 0x04, 0x25, 0x39, 0xB8, 1009 | 0x0E, 0x2B, 0xA9, 0xF2, 0x4C, 0x97, 0x1C, 0x07, 0x3F, 0x0D, 0x52, 0xF5, 1010 | 0xED, 0xEF, 0x2F, 0x82, 0x0F, 0x02, 0x03, 0x01, 0x00, 0x01, 0xA3, 0x81, 1011 | 0xD0, 0x30, 0x81, 0xCD, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1D, 0x25, 0x04, 1012 | 0x0C, 0x30, 0x0A, 0x06, 0x08, 0x2B, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 1013 | 0x03, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1D, 0x13, 0x01, 0x01, 0xFF, 0x04, 1014 | 0x08, 0x30, 0x06, 0x01, 0x01, 0xFF, 0x02, 0x01, 0x02, 0x30, 0x1D, 0x06, 1015 | 0x03, 0x55, 0x1D, 0x0E, 0x04, 0x16, 0x04, 0x14, 0x53, 0x79, 0xBF, 0x5A, 1016 | 0xAA, 0x2B, 0x4A, 0xCF, 0x54, 0x80, 0xE1, 0xD8, 0x9B, 0xC0, 0x9D, 0xF2, 1017 | 0xB2, 0x03, 0x66, 0xCB, 0x30, 0x0B, 0x06, 0x03, 0x55, 0x1D, 0x0F, 0x04, 1018 | 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x1F, 0x06, 0x03, 0x55, 0x1D, 0x23, 1019 | 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x62, 0xFB, 0x0A, 0x21, 0x5B, 0x7F, 1020 | 0x43, 0x6E, 0x11, 0xDA, 0x09, 0x54, 0x50, 0x6B, 0xF5, 0xD2, 0x96, 0x71, 1021 | 0xF1, 0x9E, 0x30, 0x55, 0x06, 0x03, 0x55, 0x1D, 0x1F, 0x04, 0x4E, 0x30, 1022 | 0x4C, 0x30, 0x4A, 0xA0, 0x48, 0xA0, 0x46, 0x86, 0x44, 0x68, 0x74, 0x74, 1023 | 0x70, 0x3A, 0x2F, 0x2F, 0x63, 0x72, 0x6C, 0x2E, 0x6D, 0x69, 0x63, 0x72, 1024 | 0x6F, 0x73, 0x6F, 0x66, 0x74, 0x2E, 0x63, 0x6F, 0x6D, 0x2F, 0x70, 0x6B, 1025 | 0x69, 0x2F, 0x63, 0x72, 0x6C, 0x2F, 0x70, 0x72, 0x6F, 0x64, 0x75, 0x63, 1026 | 0x74, 0x73, 0x2F, 0x4D, 0x69, 0x63, 0x72, 0x6F, 0x73, 0x6F, 0x66, 0x74, 1027 | 0x43, 0x6F, 0x64, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x52, 0x6F, 0x6F, 1028 | 0x74, 0x2E, 0x63, 0x72, 0x6C, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 1029 | 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 1030 | 0x00, 0x6B, 0x22, 0x93, 0x3C, 0x3D, 0x39, 0x54, 0x71, 0x64, 0x6B, 0x0E, 1031 | 0xF2, 0xE4, 0x3C, 0x30, 0x11, 0xC5, 0x20, 0x4A, 0x4B, 0x86, 0x0F, 0x92, 1032 | 0xF1, 0xFF, 0x33, 0x79, 0x3A, 0xD9, 0xE4, 0x98, 0xA7, 0x0E, 0x40, 0xA0, 1033 | 0x22, 0x80, 0x7E, 0x61, 0xB2, 0xE0, 0xA7, 0x19, 0xCF, 0x26, 0x95, 0x31, 1034 | 0x2A, 0x65, 0xD4, 0x6A, 0x4F, 0x31, 0x86, 0xEA, 0xC0, 0xC6, 0x2E, 0xC5, 1035 | 0x64, 0x8C, 0x3D, 0x48, 0x59, 0xCD, 0x0B, 0x2F, 0x74, 0x3D, 0x94, 0x26, 1036 | 0x13, 0x10, 0x42, 0xD4, 0x97, 0x98, 0x27, 0x5E, 0x3C, 0x76, 0xD2, 0x78, 1037 | 0x69, 0x1D, 0x1A, 0x64, 0xE7, 0x05, 0x72, 0x75, 0xE0, 0xEB, 0x66, 0x40, 1038 | 0x43, 0x9F, 0x8F, 0x0C, 0x46, 0xFF, 0x97, 0x60, 0xA6, 0xC8, 0x67, 0xAD, 1039 | 0x10, 0x08, 0x9B, 0x62, 0xA6, 0xE9, 0xBE, 0x3A, 0x8A, 0xD3, 0x07, 0x4D, 1040 | 0x9F, 0x72, 0x93, 0x25, 0xBC, 0x06, 0x11, 0xE0, 0x2C, 0x90, 0x38, 0x3E, 1041 | 0x67, 0x1C, 0xFD, 0x19, 0xD7, 0x9E, 0x90, 0xCE, 0x3D, 0xC2, 0xE0, 0xE7, 1042 | 0x61, 0xAC, 0xC0, 0xE5, 0x04, 0xF5, 0x1E, 0x99, 0x54, 0x0C, 0x91, 0x0D, 1043 | 0x01, 0x56, 0x71, 0x37, 0xAE, 0x27, 0xD4, 0x9E, 0x43, 0x22, 0xA5, 0xC9, 1044 | 0x27, 0xCD, 0x4D, 0xE5, 0x71, 0x12, 0x39, 0x24, 0xA5, 0x41, 0x56, 0x87, 1045 | 0xFF, 0xBC, 0x55, 0x14, 0x0F, 0x25, 0xCA, 0x89, 0xEE, 0xC7, 0x97, 0xE5, 1046 | 0xD2, 0x13, 0xFF, 0x3D, 0x7E, 0x1A, 0xA0, 0x8F, 0x3F, 0xC8, 0x2C, 0xD7, 1047 | 0xA3, 0x70, 0xD0, 0xC7, 0x60, 0xC0, 0xFC, 0xD8, 0x3E, 0x51, 0xE7, 0x97, 1048 | 0xC6, 0x3E, 0x3B, 0xED, 0xCF, 0x78, 0xBE, 0x8A, 0xCA, 0xE3, 0xC4, 0xF2, 1049 | 0xA7, 0xA7, 0xED, 0x9E, 0xAE, 0x08, 0x02, 0x8F, 0xA0, 0x52, 0xDB, 0x72, 1050 | 0x1E, 0xD5, 0x3B, 0xC3, 0x4D, 0x9F, 0x8E, 0xFA, 0x9B, 0x70, 0xC7, 0xF8, 1051 | 0xE3, 0xBF, 0x6C, 0x3F, 0x92, 0x9B, 0xE4, 0x37, 0x3E, 0xEC, 0x6A, 0x8C, 1052 | 0x29, 0xF9, 0xC1, 0xA2, 0xBF, 0x8B, 0x3E, 0x1A, 0x69, 0x66, 0xFB, 0x1C, 1053 | 0x63, 0x4F, 0x26, 0x01, 0xC9, 0x02, 0xC4, 0x3E, 0xD2, 0xFF, 0xC3, 0x43, 1054 | 0xA8, 0x1B, 0xFD, 0x99, 0xFA, 0xD4, 0xBC, 0xA5, 0xB9, 0xE2, 0x93, 0x2F, 1055 | 0x3B, 0x01, 0xC5, 0xD1, 0xF4, 0x3A, 0x2F, 0x68, 0xC3, 0xE0, 0x64, 0xB7, 1056 | 0x5A, 0x95, 0x5E, 0x46, 0xCC, 0x07, 0x83, 0x69, 0xBB, 0x3C, 0x05, 0x92, 1057 | 0x56, 0x73, 0x35, 0x73, 0x45, 0x98, 0x4E, 0x7C, 0xD8, 0x12, 0xA5, 0xB7, 1058 | 0x42, 0xE9, 0xA2, 0x63, 0xF6, 0x42, 0x60, 0x18, 0x70, 0xD1, 0x3B, 0x6F, 1059 | 0x31, 0xC0, 0x87, 0xC7, 0xE6, 0x71, 0xE1, 0xF3, 0x46, 0x16, 0xE9, 0xF5, 1060 | 0xB8, 0x72, 0xB3, 0xE9, 0x6D, 0x1F, 0x62, 0x26, 0x49, 0xA3, 0x49, 0x8B, 1061 | 0xDD, 0x68, 0xC7, 0x8B, 0x68, 0x56, 0xF7, 0xDE, 0xFC, 0xFA, 0x87, 0x24, 1062 | 0xB8, 0x03, 0x81, 0x17, 0x8F, 0xE5, 0xF1, 0x67, 0x6A, 0x1D, 0xAE, 0xD3, 1063 | 0x74, 0xF7, 0x8C, 0xA5, 0x5D, 0xB3, 0x0B, 0x8E, 0x42, 0x29, 0x96, 0xCE, 1064 | 0x49, 0xC4, 0x77, 0x7E, 0x66, 0x7C, 0x01, 0x17, 0x1A, 0x6C, 0x14, 0x24, 1065 | 0xC3, 0xB0, 0x17, 0x77, 0x05, 0xD8, 0x1A, 0x40, 0xB7, 0x86, 0x6B, 0xD8, 1066 | 0xE4, 0x7B, 0x40, 0xAC, 0x7E, 0xDF, 0x4E, 0x6F, 0x24, 0xF9, 0x20, 0x80, 1067 | 0x82, 0x8C, 0x33, 0xE7, 0xE5, 0xFA, 0x29, 0xD8, 0x9D, 0xDA, 0x8B, 0x70, 1068 | 0x5D, 0x2B, 0xC9, 0x1D, 0x82, 0x4C, 0x0B, 0x67, 0xCB, 0x84, 0x41, 0x9E, 1069 | 0xE7, 0x06, 0x7E, 0x11, 0x83, 0x44, 0x2D, 0x8A, 0x19, 0xEE, 0xF4, 0x7F, 1070 | 0x9A, 0xDD, 0x79, 0x1C, 0x37, 0x19, 0x1E, 0x9F, 0x3F, 0x8C, 0x29, 0xBA, 1071 | 0x0D, 0x5C, 0x10, 0x86, 0x37, 0x6C, 0x48, 0xCD, 0x45, 0x5D, 0xCD, 0x70, 1072 | 0xBC, 0xBC, 0xD1, 0x4D, 0x5D, 0xD8, 0xC5, 0xB8, 0x76, 0x31, 0x82, 0x02, 1073 | 0x2B, 0x30, 0x82, 0x02, 0x27, 0x02, 0x01, 0x01, 0x30, 0x81, 0x91, 0x30, 1074 | 0x7C, 0x31, 0x0B, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 1075 | 0x47, 0x42, 0x31, 0x1B, 0x30, 0x19, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 1076 | 0x12, 0x47, 0x72, 0x65, 0x61, 0x74, 0x65, 0x72, 0x20, 0x4D, 0x61, 0x6E, 1077 | 0x63, 0x68, 0x65, 0x73, 0x74, 0x65, 0x72, 0x31, 0x10, 0x30, 0x0E, 0x06, 1078 | 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x53, 0x61, 0x6C, 0x66, 0x6F, 0x72, 1079 | 0x64, 0x31, 0x18, 0x30, 0x16, 0x06, 0x03, 0x55, 0x04, 0x0A, 0x13, 0x0F, 1080 | 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 0x20, 0x4C, 0x69, 0x6D, 0x69, 1081 | 0x74, 0x65, 0x64, 0x31, 0x24, 0x30, 0x22, 0x06, 0x03, 0x55, 0x04, 0x03, 1082 | 0x13, 0x1B, 0x53, 0x65, 0x63, 0x74, 0x69, 0x67, 0x6F, 0x20, 0x52, 0x53, 1083 | 0x41, 0x20, 0x43, 0x6F, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6E, 0x69, 1084 | 0x6E, 0x67, 0x20, 0x43, 0x41, 0x02, 0x11, 0x00, 0xA7, 0x5A, 0xF1, 0x6C, 1085 | 0xB1, 0x56, 0x98, 0x23, 0x09, 0x5A, 0x4C, 0x76, 0xE1, 0x67, 0x82, 0x84, 1086 | 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E, 0x03, 0x02, 0x1A, 0x05, 0x00, 0xA0, 1087 | 0x70, 0x30, 0x10, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 1088 | 0x02, 0x01, 0x0C, 0x31, 0x02, 0x30, 0x00, 0x30, 0x19, 0x06, 0x09, 0x2A, 1089 | 0x86, 0x48, 0x86, 0xF7, 0x0D, 0x01, 0x09, 0x03, 0x31, 0x0C, 0x06, 0x0A, 1090 | 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1C, 1091 | 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0B, 1092 | 0x31, 0x0E, 0x30, 0x0C, 0x06, 0x0A, 0x2B, 0x06, 0x01, 0x04, 0x01, 0x82, 1093 | 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, 0x2A, 0x86, 0x48, 0x86, 1094 | 0xF7, 0x0D, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0x7A, 0x88, 0xAC, 1095 | 0xCD, 0x68, 0x3C, 0xB2, 0x21, 0xF6, 0x53, 0x4A, 0xF1, 0x8C, 0xDF, 0x1B, 1096 | 0x46, 0x43, 0x4D, 0x09, 0xAA, 0x30, 0x0D, 0x06, 0x09, 0x2A, 0x86, 0x48, 1097 | 0x86, 0xF7, 0x0D, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x82, 0x01, 0x00, 1098 | 0xCB, 0xF6, 0x6B, 0x66, 0xA9, 0xB4, 0xC4, 0x5A, 0x3B, 0x61, 0x7D, 0xA4, 1099 | 0x8F, 0x9D, 0x55, 0xC9, 0xEE, 0x97, 0x2B, 0x3A, 0xCC, 0xEE, 0xA4, 0x61, 1100 | 0x10, 0x94, 0x1E, 0x45, 0x71, 0xF8, 0x08, 0xDD, 0x3A, 0x37, 0x43, 0xF9, 1101 | 0x5D, 0x94, 0x55, 0x7B, 0xE3, 0x59, 0x70, 0x6D, 0x3D, 0xB9, 0xBB, 0x88, 1102 | 0xAF, 0xFD, 0x44, 0xF9, 0x0B, 0xD2, 0x00, 0x59, 0x37, 0xC4, 0xE3, 0xBD, 1103 | 0x75, 0xD3, 0x80, 0xDC, 0x09, 0xE6, 0x48, 0x82, 0x69, 0xFD, 0x6C, 0x30, 1104 | 0x28, 0xFD, 0x98, 0xC9, 0xB5, 0xBD, 0x3F, 0xD9, 0x62, 0xEE, 0xBB, 0xA9, 1105 | 0xD4, 0xF3, 0x5F, 0x5F, 0x20, 0x45, 0xA4, 0x8C, 0x9A, 0x01, 0x85, 0x3C, 1106 | 0x6B, 0xD1, 0xC2, 0xFE, 0x79, 0xAC, 0x9D, 0x97, 0xDB, 0xD3, 0xCF, 0xF9, 1107 | 0xD7, 0xB1, 0x32, 0x45, 0x01, 0x6A, 0xAC, 0x19, 0xB8, 0xBD, 0x4D, 0xCC, 1108 | 0x31, 0x86, 0xB9, 0x31, 0x61, 0xE8, 0x12, 0x34, 0xFD, 0x73, 0x2B, 0xA2, 1109 | 0x59, 0xFD, 0x2E, 0xEC, 0x80, 0x39, 0x34, 0x5C, 0x03, 0x5A, 0x61, 0x4E, 1110 | 0x06, 0xCE, 0x68, 0x94, 0xBA, 0x4B, 0x4D, 0x3E, 0xC4, 0x5D, 0x54, 0xC4, 1111 | 0x78, 0x43, 0x78, 0x9B, 0x39, 0xC3, 0xCF, 0xC1, 0xD8, 0xFB, 0xDF, 0x03, 1112 | 0xF1, 0x9A, 0x13, 0xEA, 0xE0, 0x91, 0xB8, 0xE5, 0xC2, 0x23, 0xA9, 0x95, 1113 | 0x7A, 0x0F, 0xDB, 0x41, 0xF1, 0x67, 0x1D, 0xB4, 0x7E, 0xAB, 0xD8, 0x72, 1114 | 0xDF, 0x32, 0xF0, 0x6F, 0x3B, 0x51, 0xA4, 0x8D, 0xC7, 0xAD, 0xF8, 0xB9, 1115 | 0xAD, 0x01, 0x62, 0xB2, 0xFE, 0x07, 0xAB, 0x48, 0xDE, 0xB7, 0x76, 0x7B, 1116 | 0x1A, 0x4F, 0x3F, 0x96, 0xD8, 0x15, 0x1B, 0xC7, 0x0B, 0xA2, 0xDC, 0xC7, 1117 | 0xD2, 0x87, 0xC2, 0xC0, 0xB3, 0x67, 0x94, 0x17, 0xAD, 0x12, 0x09, 0xBB, 1118 | 0x27, 0xFC, 0x1F, 0x6C, 0x1E, 0xF2, 0xEB, 0x4C, 0x27, 0xE6, 0xAE, 0x62, 1119 | 0xDD, 0xBA, 0xCC, 0xDE 1120 | }; 1121 | -------------------------------------------------------------------------------- /CosUsermode/CosUsermode/stdafx.hpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | 8 | #include "util.hpp" 9 | #include "loadup.hpp" 10 | #include "mapper_resource.hpp" 11 | 12 | struct HookStruct 13 | { 14 | std::size_t rawDataSize{}; 15 | std::uintptr_t rawDataAddress{}; 16 | }; -------------------------------------------------------------------------------- /CosUsermode/CosUsermode/util.hpp: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | inline PVOID(NTAPI* NtConvert)(PVOID, PVOID, PVOID, PVOID); 4 | 5 | namespace Util 6 | { 7 | inline bool readFileToMemory(const std::string& file_path, std::vector* out_buffer) 8 | { 9 | std::ifstream file_ifstream(file_path, std::ios::binary); 10 | 11 | if (!file_ifstream) 12 | return false; 13 | 14 | out_buffer->assign((std::istreambuf_iterator(file_ifstream)), std::istreambuf_iterator()); 15 | file_ifstream.close(); 16 | 17 | return true; 18 | } 19 | 20 | inline bool initializeDriverComm() 21 | { 22 | *reinterpret_cast(&NtConvert) = GetProcAddress(LoadLibrary(L"ntdll.dll"), "NtConvertBetweenAuxiliaryCounterAndPerformanceCounter"); 23 | if (!NtConvert) 24 | { 25 | return false; 26 | } 27 | 28 | return true; 29 | } 30 | } -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CosMapper 2 | Loads a signed kernel driver (signed with leaked cert) which allows you to map any driver to kernel mode without any traces of the signed / mapped driver. 3 | 4 | ## Procedure 5 | 1. The usermode program loads the signed driver (signed with leaked cert) 6 | 2. The signed driver then does a [.data] hook on a ntoskrnl function to transfer the mapped driver buffer to kernel 7 | 3. Usermode process sends mapped driver bytes to driver to map and returns status to usermode. 8 | 4. MmUnloadedList PiddbCache and BigPoolAllocation are cleaned and the driver header is not mapped and no empty bytes for the header allocated. 9 | 5. The usermode program unloads the signed driver (signed with leaked cert) and deletes the service to remove final traces. 10 | 11 | ## Requirements 12 | Your driver needs an entry like the example driver: 13 | 14 | ``` 15 | struct EntryInitialize 16 | { 17 | std::uintptr_t mappedImageBase{}; 18 | std::size_t mappedImageSize{}; 19 | }; 20 | 21 | NTSTATUS DriverEntry(EntryInitialize* entryParam) 22 | { 23 | DebugPrint("Example Driver Mapped [%p] w/ Size [0x%x]", entryParam->mappedImageBase, entryParam->mappedImageSize); 24 | 25 | ExFreePool(reinterpret_cast(entryParam)); 26 | 27 | return STATUS_SUCCESS; 28 | } 29 | ``` 30 | The current example passes a structure with the image base and size of the mapped driver but it can be modified to your own liking. 31 | 32 | ![DbgView Example](./example.PNG) 33 | 34 | Note: this project was coded in 2 days so it might have some bugs (open ticket)
35 | The project has been tested on ``Windows 10 20H2`` 36 | 37 | ## Usage 38 | 39 | ```cosusermode.exe driver.sys``` 40 | -------------------------------------------------------------------------------- /example.PNG: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/armvirus/CosMapper/06bd9b806dc92cc2ac94eb3d9efd51b5d32bd46a/example.PNG --------------------------------------------------------------------------------