├── .gitattributes ├── .gitignore ├── .gitmodules ├── .travis.yml ├── CMakeLists.txt ├── README.md ├── avsocks.kdev4 ├── avsocks.service ├── avsocks.socket ├── cmake ├── FindPythonLibsNew.cmake └── Findsystemd.cmake ├── gfwlist.txt ├── org.avplayer.avsocks.plist └── src ├── avauth.hpp ├── avsession.hpp ├── cert.hpp ├── gfwlist.hpp ├── main.cpp ├── pch.hpp └── splice.hpp /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | *.sln merge=union 7 | *.csproj merge=union 8 | *.vbproj merge=union 9 | *.fsproj merge=union 10 | *.dbproj merge=union 11 | 12 | # Standard to msysgit 13 | *.doc diff=astextplain 14 | *.DOC diff=astextplain 15 | *.docx diff=astextplain 16 | *.DOCX diff=astextplain 17 | *.dot diff=astextplain 18 | *.DOT diff=astextplain 19 | *.pdf diff=astextplain 20 | *.PDF diff=astextplain 21 | *.rtf diff=astextplain 22 | *.RTF diff=astextplain 23 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.exe 2 | ################# 3 | ## Eclipse 4 | ################# 5 | 6 | *.pydevproject 7 | .project 8 | .metadata 9 | bin/ 10 | tmp/ 11 | *.tmp 12 | *.bak 13 | *.swp 14 | *~.nib 15 | local.properties 16 | .classpath 17 | .settings/ 18 | .loadpath 19 | 20 | # External tool builders 21 | .externalToolBuilders/ 22 | 23 | # Locally stored "Eclipse launch configurations" 24 | *.launch 25 | 26 | # CDT-specific 27 | .cproject 28 | 29 | # PDT-specific 30 | .buildpath 31 | 32 | 33 | ################# 34 | ## Visual Studio 35 | ################# 36 | 37 | ## Ignore Visual Studio temporary files, build results, and 38 | ## files generated by popular Visual Studio add-ons. 39 | 40 | # User-specific files 41 | *.suo 42 | *.user 43 | *.sln.docstates 44 | 45 | # Build results 46 | [Dd]ebug/ 47 | [Rr]elease/ 48 | *_i.c 49 | *_p.c 50 | *.ilk 51 | *.meta 52 | *.obj 53 | *.pch 54 | *.pdb 55 | *.pgc 56 | *.pgd 57 | *.rsp 58 | *.sbr 59 | *.tlb 60 | *.tli 61 | *.tlh 62 | *.tmp 63 | *.vspscc 64 | .builds 65 | *.dotCover 66 | 67 | ## TODO: If you have NuGet Package Restore enabled, uncomment this 68 | #packages/ 69 | 70 | # Visual C++ cache files 71 | ipch/ 72 | *.aps 73 | *.ncb 74 | *.opensdf 75 | *.sdf 76 | 77 | # Visual Studio profiler 78 | *.psess 79 | *.vsp 80 | 81 | # ReSharper is a .NET coding add-in 82 | _ReSharper* 83 | 84 | # Installshield output folder 85 | [Ee]xpress 86 | 87 | # DocProject is a documentation generator add-in 88 | DocProject/buildhelp/ 89 | DocProject/Help/*.HxT 90 | DocProject/Help/*.HxC 91 | DocProject/Help/*.hhc 92 | DocProject/Help/*.hhk 93 | DocProject/Help/*.hhp 94 | DocProject/Help/Html2 95 | DocProject/Help/html 96 | 97 | # Click-Once directory 98 | publish 99 | 100 | # Others 101 | [Bb]in 102 | [Oo]bj 103 | sql 104 | TestResults 105 | *.Cache 106 | ClientBin 107 | stylecop.* 108 | ~$* 109 | *.dbmdl 110 | Generated_Code #added for RIA/Silverlight projects 111 | 112 | # Backup & report files from converting an old project file to a newer 113 | # Visual Studio version. Backup files are not needed, because we have git ;-) 114 | _UpgradeReport_Files/ 115 | Backup*/ 116 | UpgradeLog*.XML 117 | 118 | 119 | 120 | ############ 121 | ## Windows 122 | ############ 123 | 124 | # Windows image file caches 125 | Thumbs.db 126 | 127 | # Folder config file 128 | Desktop.ini 129 | 130 | 131 | ############# 132 | ## Python 133 | ############# 134 | 135 | *.py[co] 136 | 137 | # Packages 138 | *.egg 139 | *.egg-info 140 | dist 141 | build 142 | eggs 143 | parts 144 | bin 145 | var 146 | sdist 147 | develop-eggs 148 | .installed.cfg 149 | 150 | # Installer logs 151 | pip-log.txt 152 | 153 | # Unit test / coverage reports 154 | .coverage 155 | .tox 156 | 157 | #Translations 158 | *.mo 159 | 160 | #Mr Developer 161 | .mr.developer.cfg 162 | 163 | # Mac crap 164 | .DS_Store 165 | 166 | newsocks 167 | 168 | avsocks 169 | .kdev4 170 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "third_party/openssl"] 2 | path = third_party/openssl 3 | url = git://gitcafe.com/microcai/openssl-cmake.git 4 | branch = master 5 | [submodule "avboost"] 6 | path = avboost 7 | url = https://github.com/avplayer/avboost.git 8 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: cpp 2 | compiler: 3 | - gcc 4 | - clang 5 | 6 | before_install: 7 | - sudo add-apt-repository -y ppa:28msec/boost 8 | - sudo apt-get update 9 | - sudo apt-get install -qq boost1.50 10 | - git submodule init 11 | - git submodule update 12 | 13 | before_script: 14 | cmake . 15 | 16 | script: 17 | make 18 | 19 | branches: 20 | only: 21 | - master 22 | notifications: 23 | recipients: 24 | - microcaicai@gmail.com 25 | - jack.wgm@gmail.com 26 | email: 27 | on_success: change 28 | on_failure: always 29 | 30 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 2.6) 2 | project(avsocks) 3 | 4 | set(CMAKE_INSTALL_PREFIX /usr) 5 | 6 | ################################################## 7 | # Common for all avplayer projects 8 | ###### 9 | include(CheckCXXCompilerFlag) 10 | # check_cxx_compiler_flag(-std=c++11 HAS_CXX11)sd- 11 | if (HAS_CXX11) 12 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 ") 13 | endif() 14 | 15 | check_cxx_compiler_flag(-fvisibility=hidden HAS_VISIBILITY) 16 | if (HAS_VISIBILITY) 17 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden ") 18 | endif() 19 | 20 | #set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11 -fvisibility=hidden") 21 | 22 | if(MSVC) 23 | set (CMAKE_CONFIGURATION_TYPES "Release;Debug") 24 | set(CompilerFlags 25 | CMAKE_CXX_FLAGS 26 | CMAKE_CXX_FLAGS_DEBUG 27 | CMAKE_CXX_FLAGS_RELEASE 28 | CMAKE_CXX_FLAGS_MinSizeRel 29 | CMAKE_C_FLAGS 30 | CMAKE_C_FLAGS_DEBUG 31 | CMAKE_C_FLAGS_RELEASE 32 | CMAKE_C_FLAGS_MinSizeRel 33 | ) 34 | 35 | foreach(CompilerFlag ${CompilerFlags}) 36 | string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}") 37 | endforeach() 38 | 39 | foreach(CompilerFlag ${CompilerFlags}) 40 | string(REPLACE "/W3" "/W1" ${CompilerFlag} "${${CompilerFlag}}") 41 | endforeach() 42 | 43 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /bigobj /MP") 44 | 45 | #set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") 46 | set(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /ignore:4099 /NODEFAULTLIB:libcmt.lib ") 47 | set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER} /SAFESEH:NO ") 48 | 49 | endif(MSVC) 50 | 51 | ################################################# 52 | 53 | 54 | if(WIN32) 55 | add_definitions(-DOPENSSL_NO_ENGINE) 56 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOPENSSL_NO_ENGINE -DOPENSSL_NO_COMP") 57 | include_directories(third_party/openssl/include) 58 | add_subdirectory(third_party/openssl) 59 | else() 60 | find_package(OpenSSL REQUIRED) 61 | endif() 62 | 63 | ################################################# 64 | 65 | 66 | option(USE_STATIC "static link to boost" ON) 67 | 68 | if(USE_STATIC) 69 | set(Boost_USE_STATIC_LIBS ON) 70 | set(Boost_USE_STATIC_RUNTIME ON) 71 | endif() 72 | 73 | list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake) 74 | 75 | 76 | find_package(Boost 1.47 REQUIRED system program_options regex filesystem) 77 | find_package(Threads) 78 | find_package(systemd) 79 | 80 | include_directories(${OPENSSL_INCLUDE_DIR}) 81 | link_libraries(${OPENSSL_LIBRARIES}) 82 | link_directories(${Boost_LIBRARY_DIR}) 83 | include_directories(${Boost_INCLUDE_DIR}) 84 | 85 | if(WIN32) 86 | add_definitions(-DDISABLE_SYSTEMD) 87 | endif() 88 | 89 | add_executable(avsocks 90 | src/avauth.hpp src/gfwlist.hpp 91 | src/avsession.hpp src/main.cpp 92 | src/cert.hpp src/pch.hpp src/splice.hpp 93 | ) 94 | 95 | if(SYSTEMD_FOUND) 96 | target_link_libraries(avsocks ${SYSTEMD_LIBRARIES}) 97 | target_compile_definitions(avsocks PRIVATE -DHAVE_SYSTEMD) 98 | endif() 99 | 100 | target_link_libraries(avsocks ${Boost_LIBRARIES} ${OPENSSL_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT}) 101 | 102 | install(TARGETS avsocks RUNTIME DESTINATION bin) 103 | 104 | install(FILES avsocks.service DESTINATION lib/systemd/system) 105 | install(FILES avsocks.socket DESTINATION lib/systemd/system) 106 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | avsocks 科学操长城软件 by avplayer.org 社区 2 | ======= 3 | 4 | 5 | avsocks 科学操长城软件,由2部分构成,一个运行在能科学上网的服务器上,一个运行在不能科学上网的电脑上。 6 | 两个部分实际上为同一个可执行文件,都是 avsocks 7 | 8 | 在能科学上网的电脑上执行 avsocks -d ,加 -d 进入后台模式 9 | 10 | 在不能科学上网的电脑上执行 avsocks -d --avserver 能科学上网的电脑的名字或ip 11 | 12 | 好了,本地 4567 端口就开了 socks5 代理了。 13 | 14 | 15 | 萝莉们, 来看看我们是如何fuck墙的吧, 下面是工作示意图: 16 | 17 | ~~~ 18 | 19 | +---------------+ | +-------------+ 20 | browser/app --> | socks5 -> ssl | ----|---> | ssl -> sock |--> website/server 21 | +---------------+ | +-------------+ 22 | GFW 23 | ~~~ 24 | 25 | 26 | # 编译 27 | 28 | 依赖 boost 和 openssl 29 | 30 | 备注: 在win32平台下编译应程序, 需要从 avplayer 项目中的 third_party 复制到源码所在目录, 就可以了. 31 | 32 | 33 | 34 | -![alt text](http://i.imgur.com/WWLYo.gif "Fuck 墙!!!") 35 | 36 | -------------------------------------------------------------------------------- /avsocks.kdev4: -------------------------------------------------------------------------------- 1 | [Project] 2 | Name=avsocks 3 | Manager=KDevCMakeManager 4 | VersionControl=kdevgit 5 | -------------------------------------------------------------------------------- /avsocks.service: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Fuck the gfw 3 | 4 | [Service] 5 | ExecStart=/usr/bin/avsocks 6 | 7 | [Install] 8 | WantedBy=multi-user.target 9 | -------------------------------------------------------------------------------- /avsocks.socket: -------------------------------------------------------------------------------- 1 | [Unit] 2 | Description=Fuck the gfw 3 | Conflicts=avsocks.service 4 | 5 | [Socket] 6 | ListenStream=4567 7 | 8 | [Install] 9 | WantedBy=sockets.target -------------------------------------------------------------------------------- /cmake/FindPythonLibsNew.cmake: -------------------------------------------------------------------------------- 1 | # - Find python libraries 2 | # This module finds the libraries corresponding to the Python interpeter 3 | # FindPythonInterp provides. 4 | # This code sets the following variables: 5 | # 6 | # PYTHONLIBS_FOUND - have the Python libs been found 7 | # PYTHON_PREFIX - path to the Python installation 8 | # PYTHON_LIBRARIES - path to the python library 9 | # PYTHON_INCLUDE_DIRS - path to where Python.h is found 10 | # PYTHON_SITE_PACKAGES - path to installation site-packages 11 | # PYTHON_IS_DEBUG - whether the Python interpreter is a debug build 12 | # 13 | # PYTHON_INCLUDE_PATH - path to where Python.h is found (deprecated) 14 | # 15 | # A function PYTHON_ADD_MODULE( src1 src2 ... srcN) is defined 16 | # to build modules for python. 17 | # 18 | # Thanks to talljimbo for the patch adding the 'LDVERSION' config 19 | # variable usage. 20 | 21 | #============================================================================= 22 | # Copyright 2001-2009 Kitware, Inc. 23 | # Copyright 2012 Continuum Analytics, Inc. 24 | # 25 | # All rights reserved. 26 | # 27 | # Redistribution and use in source and binary forms, with or without 28 | # modification, are permitted provided that the following conditions 29 | # are met: 30 | # 31 | # * Redistributions of source code must retain the above copyright 32 | # notice, this list of conditions and the following disclaimer. 33 | # 34 | # * Redistributions in binary form must reproduce the above copyright 35 | # notice, this list of conditions and the following disclaimer in the 36 | # documentation and/or other materials provided with the distribution. 37 | # 38 | # * Neither the names of Kitware, Inc., the Insight Software Consortium, 39 | # nor the names of their contributors may be used to endorse or promote 40 | # products derived from this software without specific prior written 41 | # permission. 42 | # 43 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 44 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 45 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 46 | # # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 47 | # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 48 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 49 | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 50 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 51 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 52 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 53 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 54 | #============================================================================= 55 | # (To distribute this file outside of CMake, substitute the full 56 | # License text for the above reference.) 57 | 58 | # Use the Python interpreter to find the libs. 59 | if(PythonLibsNew_FIND_REQUIRED) 60 | find_package(PythonInterp REQUIRED) 61 | else() 62 | find_package(PythonInterp) 63 | endif() 64 | 65 | if(NOT PYTHONINTERP_FOUND) 66 | set(PYTHONLIBS_FOUND FALSE) 67 | return() 68 | endif() 69 | 70 | # According to http://stackoverflow.com/questions/646518/python-how-to-detect-debug-interpreter 71 | # testing whether sys has the gettotalrefcount function is a reliable, cross-platform 72 | # way to detect a CPython debug interpreter. 73 | # 74 | # The library suffix is from the config var LDVERSION sometimes, otherwise 75 | # VERSION. VERSION will typically be like "2.7" on unix, and "27" on windows. 76 | execute_process(COMMAND "${PYTHON_EXECUTABLE}" "-c" 77 | "from distutils import sysconfig as s;import sys;import struct; 78 | print('.'.join(str(v) for v in sys.version_info)); 79 | print(sys.prefix); 80 | print(s.get_python_inc(plat_specific=True)); 81 | print(s.get_python_lib(plat_specific=True)); 82 | print(s.get_config_var('SO')); 83 | print(hasattr(sys, 'gettotalrefcount')+0); 84 | print(struct.calcsize('@P')); 85 | print(s.get_config_var('LDVERSION') or s.get_config_var('VERSION')); 86 | " 87 | RESULT_VARIABLE _PYTHON_SUCCESS 88 | OUTPUT_VARIABLE _PYTHON_VALUES 89 | ERROR_VARIABLE _PYTHON_ERROR_VALUE 90 | OUTPUT_STRIP_TRAILING_WHITESPACE) 91 | 92 | if(NOT _PYTHON_SUCCESS MATCHES 0) 93 | if(PythonLibsNew_FIND_REQUIRED) 94 | message(FATAL_ERROR 95 | "Python config failure:\n${_PYTHON_ERROR_VALUE}") 96 | endif() 97 | set(PYTHONLIBS_FOUND FALSE) 98 | return() 99 | endif() 100 | 101 | # Convert the process output into a list 102 | string(REGEX REPLACE ";" "\\\\;" _PYTHON_VALUES ${_PYTHON_VALUES}) 103 | string(REGEX REPLACE "\n" ";" _PYTHON_VALUES ${_PYTHON_VALUES}) 104 | list(GET _PYTHON_VALUES 0 _PYTHON_VERSION_LIST) 105 | list(GET _PYTHON_VALUES 1 PYTHON_PREFIX) 106 | list(GET _PYTHON_VALUES 2 PYTHON_INCLUDE_DIR) 107 | list(GET _PYTHON_VALUES 3 PYTHON_SITE_PACKAGES) 108 | list(GET _PYTHON_VALUES 4 PYTHON_MODULE_EXTENSION) 109 | list(GET _PYTHON_VALUES 5 PYTHON_IS_DEBUG) 110 | list(GET _PYTHON_VALUES 6 PYTHON_SIZEOF_VOID_P) 111 | list(GET _PYTHON_VALUES 7 PYTHON_LIBRARY_SUFFIX) 112 | 113 | # Make sure the Python has the same pointer-size as the chosen compiler 114 | # Skip the check on OS X, it doesn't consistently have CMAKE_SIZEOF_VOID_P defined 115 | if((NOT APPLE) AND (NOT "${PYTHON_SIZEOF_VOID_P}" STREQUAL "${CMAKE_SIZEOF_VOID_P}")) 116 | if(PythonLibsNew_FIND_REQUIRED) 117 | math(EXPR _PYTHON_BITS "${PYTHON_SIZEOF_VOID_P} * 8") 118 | math(EXPR _CMAKE_BITS "${CMAKE_SIZEOF_VOID_P} * 8") 119 | message(FATAL_ERROR 120 | "Python config failure: Python is ${_PYTHON_BITS}-bit, " 121 | "chosen compiler is ${_CMAKE_BITS}-bit") 122 | endif() 123 | set(PYTHONLIBS_FOUND FALSE) 124 | return() 125 | endif() 126 | 127 | # The built-in FindPython didn't always give the version numbers 128 | string(REGEX REPLACE "\\." ";" _PYTHON_VERSION_LIST ${_PYTHON_VERSION_LIST}) 129 | list(GET _PYTHON_VERSION_LIST 0 PYTHON_VERSION_MAJOR) 130 | list(GET _PYTHON_VERSION_LIST 1 PYTHON_VERSION_MINOR) 131 | list(GET _PYTHON_VERSION_LIST 2 PYTHON_VERSION_PATCH) 132 | 133 | # Make sure all directory separators are '/' 134 | string(REGEX REPLACE "\\\\" "/" PYTHON_PREFIX ${PYTHON_PREFIX}) 135 | string(REGEX REPLACE "\\\\" "/" PYTHON_INCLUDE_DIR ${PYTHON_INCLUDE_DIR}) 136 | string(REGEX REPLACE "\\\\" "/" PYTHON_SITE_PACKAGES ${PYTHON_SITE_PACKAGES}) 137 | 138 | # TODO: All the nuances of CPython debug builds have not been dealt with/tested. 139 | if(PYTHON_IS_DEBUG) 140 | set(PYTHON_MODULE_EXTENSION "_d${PYTHON_MODULE_EXTENSION}") 141 | endif() 142 | 143 | if(CMAKE_HOST_WIN32) 144 | set(PYTHON_LIBRARY 145 | "${PYTHON_PREFIX}/libs/Python${PYTHON_LIBRARY_SUFFIX}.lib") 146 | elseif(APPLE) 147 | # Seems to require "-undefined dynamic_lookup" instead of linking 148 | # against the .dylib, otherwise it crashes. This flag is added 149 | # below 150 | #set(PYTHON_LIBRARY "") 151 | set(PYTHON_LIBRARY 152 | "${PYTHON_PREFIX}/lib/libpython${PYTHON_LIBRARY_SUFFIX}.dylib") 153 | else() 154 | if(${PYTHON_SIZEOF_VOID_P} MATCHES 8) 155 | set(_PYTHON_LIBS_SEARCH "${PYTHON_PREFIX}/lib64" "${PYTHON_PREFIX}/lib") 156 | else() 157 | set(_PYTHON_LIBS_SEARCH "${PYTHON_PREFIX}/lib") 158 | endif() 159 | message(STATUS "Searching for Python libs in ${_PYTHON_LIBS_SEARCH}") 160 | # Probably this needs to be more involved. It would be nice if the config 161 | # information the python interpreter itself gave us were more complete. 162 | find_library(PYTHON_LIBRARY 163 | NAMES "python${PYTHON_LIBRARY_SUFFIX}" 164 | PATHS ${_PYTHON_LIBS_SEARCH} 165 | NO_DEFAULT_PATH) 166 | message(STATUS "Found Python lib ${PYTHON_LIBRARY}") 167 | endif() 168 | 169 | # For backward compatibility, set PYTHON_INCLUDE_PATH, but make it internal. 170 | SET(PYTHON_INCLUDE_PATH "${PYTHON_INCLUDE_DIR}" CACHE INTERNAL 171 | "Path to where Python.h is found (deprecated)") 172 | 173 | MARK_AS_ADVANCED( 174 | PYTHON_LIBRARY 175 | PYTHON_INCLUDE_DIR 176 | ) 177 | 178 | # We use PYTHON_INCLUDE_DIR, PYTHON_LIBRARY and PYTHON_DEBUG_LIBRARY for the 179 | # cache entries because they are meant to specify the location of a single 180 | # library. We now set the variables listed by the documentation for this 181 | # module. 182 | SET(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}") 183 | SET(PYTHON_LIBRARIES "${PYTHON_LIBRARY}") 184 | SET(PYTHON_DEBUG_LIBRARIES "${PYTHON_DEBUG_LIBRARY}") 185 | 186 | 187 | # Don't know how to get to this directory, just doing something simple :P 188 | #INCLUDE(${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake) 189 | #FIND_PACKAGE_HANDLE_STANDARD_ARGS(PythonLibs DEFAULT_MSG PYTHON_LIBRARIES PYTHON_INCLUDE_DIRS) 190 | find_package_message(PYTHON 191 | "Found PythonLibs: ${PYTHON_LIBRARY}" 192 | "${PYTHON_EXECUTABLE}${PYTHON_VERSION}") 193 | 194 | 195 | # PYTHON_ADD_MODULE( src1 src2 ... srcN) is used to build modules for python. 196 | FUNCTION(PYTHON_ADD_MODULE _NAME ) 197 | GET_PROPERTY(_TARGET_SUPPORTS_SHARED_LIBS 198 | GLOBAL PROPERTY TARGET_SUPPORTS_SHARED_LIBS) 199 | OPTION(PYTHON_ENABLE_MODULE_${_NAME} "Add module ${_NAME}" TRUE) 200 | OPTION(PYTHON_MODULE_${_NAME}_BUILD_SHARED 201 | "Add module ${_NAME} shared" ${_TARGET_SUPPORTS_SHARED_LIBS}) 202 | 203 | # Mark these options as advanced 204 | MARK_AS_ADVANCED(PYTHON_ENABLE_MODULE_${_NAME} 205 | PYTHON_MODULE_${_NAME}_BUILD_SHARED) 206 | 207 | IF(PYTHON_ENABLE_MODULE_${_NAME}) 208 | IF(PYTHON_MODULE_${_NAME}_BUILD_SHARED) 209 | SET(PY_MODULE_TYPE MODULE) 210 | ELSE(PYTHON_MODULE_${_NAME}_BUILD_SHARED) 211 | SET(PY_MODULE_TYPE STATIC) 212 | SET_PROPERTY(GLOBAL APPEND PROPERTY PY_STATIC_MODULES_LIST ${_NAME}) 213 | ENDIF(PYTHON_MODULE_${_NAME}_BUILD_SHARED) 214 | 215 | SET_PROPERTY(GLOBAL APPEND PROPERTY PY_MODULES_LIST ${_NAME}) 216 | ADD_LIBRARY(${_NAME} ${PY_MODULE_TYPE} ${ARGN}) 217 | IF(APPLE) 218 | # On OS X, linking against the Python libraries causes 219 | # segfaults, so do this dynamic lookup instead. 220 | SET_TARGET_PROPERTIES(${_NAME} PROPERTIES LINK_FLAGS 221 | "-undefined dynamic_lookup") 222 | ELSE() 223 | TARGET_LINK_LIBRARIES(${_NAME} ${PYTHON_LIBRARIES}) 224 | ENDIF() 225 | IF(PYTHON_MODULE_${_NAME}_BUILD_SHARED) 226 | SET_TARGET_PROPERTIES(${_NAME} PROPERTIES PREFIX "${PYTHON_MODULE_PREFIX}") 227 | SET_TARGET_PROPERTIES(${_NAME} PROPERTIES SUFFIX "${PYTHON_MODULE_EXTENSION}") 228 | ELSE() 229 | ENDIF() 230 | 231 | ENDIF(PYTHON_ENABLE_MODULE_${_NAME}) 232 | ENDFUNCTION(PYTHON_ADD_MODULE) 233 | 234 | -------------------------------------------------------------------------------- /cmake/Findsystemd.cmake: -------------------------------------------------------------------------------- 1 | # - Find systemd libraries 2 | # This module finds the systemd libraries 3 | 4 | # This code sets the following variables: 5 | # 6 | # SYSTEMD_FOUND - have the systemd libs been found 7 | # SYSTEMD_LIBRARIES - path to the systemd library 8 | # SYSTEMD_INCLUDE_DIRS - path to where sd-daemon.h is found 9 | # 10 | 11 | #============================================================================= 12 | # Copyright 2014 microcai 13 | # 14 | # All rights reserved. 15 | # 16 | # Redistribution and use in source and binary forms, with or without 17 | # modification, are permitted provided that the following conditions 18 | # are met: 19 | # 20 | # * Redistributions of source code must retain the above copyright 21 | # notice, this list of conditions and the following disclaimer. 22 | # 23 | # * Redistributions in binary form must reproduce the above copyright 24 | # notice, this list of conditions and the following disclaimer in the 25 | # documentation and/or other materials provided with the distribution. 26 | # 27 | # * Neither the names of Kitware, Inc., the Insight Software Consortium, 28 | # nor the names of their contributors may be used to endorse or promote 29 | # products derived from this software without specific prior written 30 | # permission. 31 | # 32 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 33 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 34 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 35 | # # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 36 | # HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 37 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 38 | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 39 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 40 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 41 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 42 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 43 | #============================================================================= 44 | # (To distribute this file outside of CMake, substitute the full 45 | # License text for the above reference.) 46 | 47 | # Use the Python interpreter to find the libs. 48 | # check for systemd 49 | if(SYSTEMD_INCLUDE_DIR) 50 | set(SYSTEMD_FIND_QUIETLY TRUE) 51 | endif() 52 | 53 | find_library(SYSTEMD_LIBRARY NAMES systemd) 54 | find_path(SYSTEMD_INCLUDE_DIR systemd/sd-daemon.h) 55 | 56 | include(FindPackageHandleStandardArgs) 57 | find_package_handle_standard_args(SYSTEMD REQUIRED_VARS SYSTEMD_LIBRARY SYSTEMD_INCLUDE_DIR) 58 | mark_as_advanced(SYSTEMD_LIBRARY SYSTEMD_INCLUDE_DIR) 59 | set(SYSTEMD_LIBRARIES ${SYSTEMD_LIBRARY}) 60 | -------------------------------------------------------------------------------- /gfwlist.txt: -------------------------------------------------------------------------------- 1 | W0F1dG9Qcm94eSAwLjIuOV0KISBDaGVja3N1bTogZTIvMHVYT1JSZ2JlOXF0NmxR 2 | VTVwdwohIENoZWNrc3VtOiAKISBFeHBpcmVzOiA2aAohIExhc3QgTW9kaWZpZWQ6 3 | IFRodSwgMjQgSmFuIDIwMTMgMTA6MTg6MzEgKzA5MDAKISAgICAgLS0tLWh0dHA6 4 | Ly9hdXRvcHJveHktZ2Z3bGlzdC5nb29nbGVjb2RlLmNvbS8KCiEtLS0tLS0tLS0t 5 | LS0tLS0tLS0tLU51bS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLjByei50 6 | dwp8aHR0cDovLzByei50dwp8fDB0bzI1NS5jb20KMS1hcHBsZS5jb20udHcKfHwx 7 | LWFwcGxlLmNvbS50dwouMTJiZXQuY29tCnx8MTJiZXQuY29tCi4xMnZwbi5jb20K 8 | fHwxMnZwbi5jb20KMTQxaG9uZ2tvbmcuY29tL2ZvcnVtCnQuMTZjbGFzcy5jbgox 9 | NzNuZy5jb20KfHwxNzNuZy5jb20KLjE3ZS5vcmcKfGh0dHA6Ly8xN2Uub3JnLwox 10 | OTg0YmJzLmNvbQp8fDE5ODRiYnMuY29tCnx8MTk4NGJsb2cuY29tCi4xOTg0YmJz 11 | Lm9yZwp8fDE5ODRiYnMub3JnCi4xYmFvLm9yZwp8aHR0cDovLzFiYW8ub3JnCnx8 12 | MWZyZWUud3MKfHwxcG9uZG8udHYKYmJzLjF0b3IuY29tCi4yLWhhbmQuaW5mbwou 13 | MjAwMGZ1bi5jb20vYmJzCi4yMDA4eGlhbnpoYW5nLmluZm8KfHwyMDA4eGlhbnpo 14 | YW5nLmluZm8KLjIxY29kZS5jb20KLjJzaGFyZWQuY29tCi4zMTVsei5jb20KfHwz 15 | NnJhaW4uY29tCnx8M2I4LmNjLwo0LmdwCnx8NGJsdWVzdG9uZXMuYml6Ci40c2hh 16 | cmVkLmNvbQp8aHR0cDovLzRzaGFyZWQuY29tCjVpMDEuY29tCnRhaXdhbm5hdGlv 17 | bi41MHdlYnMuY29tCnx8YmJzLjUxLmNhCmJsb2cuNTEuY2EKaW5mby41MS5jYQp8 18 | fGluZm8uNTEuY2EKLjVtYW9kYW5nLmNvbQp8fDYtNC5uZXQvCjY0bWVtbwo2NHRp 19 | YW53YW5nLmNvbQo2NjZrYi5jb20KNnBhcmsuY29tCnx8NnBhcmsuY29tCnx8d3d3 20 | LjZ2NmRvdGEuY29tCnx8N2NhcHR1cmUuY29tCi44MDAwLmNvbQp8fDgwMDAuY29t 21 | Ci44ODE5MDMuY29tL3BhZ2UvemgtdHcvCi44ODguY29tCjg5LTY0Lm9yZwp8fDg5 22 | LTY0Lm9yZwouOTAwMTcwMC5jb20KLjkyY2Nhdi5jb20KOTgudG8KLjk5OTljbi5j 23 | b20KfHw5OTk5Y24uY29tCi45OWJicy5jb20KfHw5YmlzLmNvbQp8fDliaXMubmV0 24 | Ci45Y2l0eS5tZS9hcmNoaXZlciozMDg1NzguaHRtbAoKIS0tLS0tLS0tLS0tLS0t 25 | LS0tLS0tLS0tLS0tQUEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8fGEtbm9y 26 | bWFsLWRheS5jb20KYTUuY29tLnJ1Cnx8YWlyY3JhY2stbmcub3JnCi5hYm9sdW93 27 | YW5nLmNvbQp8fGFib2x1b3dhbmcuY29tCi5hYm91dGdmdy5jb20KLmFib3V0dXMu 28 | b3JnCnx8YWJvdXR1cy5vcmcKfHxhY2drai5jb20KfHxhY3Vsby51cwp8fGFkZGlj 29 | dGVkdG9jb2ZmZWUuZGUKLmFkdWx0MTY4LmNvbQphZHVsdGZyaWVuZGZpbmRlci5j 30 | b20KfHxhZHZhbnNjZW5lLmNvbQp8fGFkdmVydGZhbi5jb20KfHxhZW5oYW5jZXJz 31 | LmNvbQp8fGFpcm9kdW1wLm5ldAouYWlzZXguY29tCnx8YWl0Lm9yZy50dwpibG9n 32 | LmFpd2Vpd2VpLmNvbQp8fGJsb2cuYWl3ZWl3ZWkuY29tCi5haXdlaXdlaWJsb2cu 33 | Y29tCnx8YWl3ZWl3ZWlibG9nLmNvbQp8fGFpeW9yaS5vcmcKfHxhamF4cGxvcmVy 34 | LmluZm8KfHx3d3cuYWpzYW5kcy5jb20KfHxha2liYS1vbmxpbmUuY29tCi5ha2ly 35 | YWNsdWIuY29tCnx8YWtpcmFjbHViLmNvbQp8fGFsYWJvdXQuY29tCmFsYWRkaW5n 36 | LmNvbQp8fGFsYWRkaW5nLmNvbQp8fGFsYXNiYXJyaWNhZGFzLm9yZwp8fG5vdGVz 37 | LmFsZXhkb25nLmNvbQphbGV4bHVyLm9yZwp8fGFsa2FzaXIuY29tCmJicy5hbGxo 38 | YWJpdC5jb20KYWxsaWFuY2Uub3JnLmhrCi5hbGxpbmZhLmNvbQp8aHR0cDovL2Fs 39 | bGluZmEuY29tCnx8YWxsaW5mby5jb20KfHxhbHRlcm5hdGUtdG9vbHMuY29tCmFs 40 | d2F5c2RhdGEuY29tCnx8YWx3YXlzZGF0YS5jb20KfHxhbHdheXNkYXRhLm5ldAph 41 | bWVibG8uanAKfHxhbWVibG8uanAKfHxhbWVyaWNhbmdyZWVuY2FyZC5jb20KfHxh 42 | bWlibG9ja2Vkb3Jub3QuY29tCi5hbW5lc3R5Lm9yZwp8fGFtbmVzdHkub3JnCi5h 43 | bW5lc3R5dXNhLm9yZwp8fGFtbmVzdHl1c2Eub3JnCi5hbW9paXN0LmNvbQphbXpz 44 | Lm1lCmFuYWx5emUtdi5jb20KfHxhbmNob3JmcmVlLmNvbQp8fGFuZGZhcmF3YXku 45 | bmV0Cnx8YW5vYmlpLmNvbQouYW5vbnltaXplci5jb20KfHxhbnRob255Y2FsemFk 46 | aWxsYS5jb20KLmFudGl3YXZlLm5ldAp8aHR0cDovL2FudGl3YXZlLm5ldAp8fGFv 47 | bGNoYW5uZWxzLmFvbC5jb20KdmlkZW8uYW9sLmNhL3ZpZGVvLWRldGFpbAp2aWRl 48 | by5hb2wuY28udWsvdmlkZW8tZGV0YWlsCnZpZGVvLmFvbC5jb20KfHx2aWRlby5h 49 | b2wuY29tCnd3dy5hb2xuZXdzLmNvbQouYXBpZ2VlLmNvbQp8fGFwaWdlZS5jb20K 50 | Cml0dW5lcy5hcHBsZS4qMjg1Njg4OTM0Cml0dW5lcy5hcHBsZS4qMzU4ODAxMjg0 51 | Cml0dW5lcy5hcHBsZS4qMzY0MTQ3ODgxCml0dW5lcy5hcHBsZS4qMzc1NTg0Njc3 52 | Cml0dW5lcy5hcHBsZS4qMzgzOTQ5MDg5Cml0dW5lcy5hcHBsZS4qMzE5Mjk1MzMy 53 | Cml0dW5lcy5hcHBsZS4qNDE4OTg3Nzc1Cml0dW5lcy5hcHBsZS5jb20vdXMqaWQ0 54 | NDcxMTk2MzQKaXR1bmVzLmFwcGxlLmNvbSppc3VuYWZmYWlycy9pZDQ1NDQzOTg5 55 | MwoKfHxhcHBsZWRhaWx5LmNvbS50dwouYXJjaGl2ZS5vcmcKfHxhcmNoaXZlLm9y 56 | Zwp8fGFyY2hsaW51eC5mcgouYXJjdG9zaWEuY29tCnxodHRwOi8vYXJjdG9zaWEu 57 | Y29tCnx8YXJlY2EtYmFja3VwLm9yZwphc2RmZy5qcC9kYWJyCmFzaWFkZW1vLm9y 58 | Zwp8fGFzaWFkZW1vLm9yZwouYXNpYWhhcnZlc3Qub3JnCnx8YXNpYWhhcnZlc3Qu 59 | b3JnCmFzaWFuZXdzLml0Cnx8YXNpYW53b21lbnNmaWxtLmRlCnx8YXNrc3R1ZGVu 60 | dC5jb20KLmFza3luei5uZXQKfHxhc2t5bnoubmV0Cnx8YXN0b25tYXJ0aW5uZXdz 61 | LmNvbQouYXRjaGluZXNlLmNvbQp8aHR0cDovL2F0Y2hpbmVzZS5jb20KfHxhdGou 62 | b3JnLnR3Ci5hdGxhc3Bvc3QuY29tCnx8YXRsYXNwb3N0LmNvbQouYXRuZXh0LmNv 63 | bQp8fGF0bmV4dC5jb20KfHxhdmlkZW11eC5vcmcKfHxhdm9pc2lvbi5jb20KfHxh 64 | eHVyZWZvcm1hYy5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUJCLS0t 65 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZm9ydW0uYmFieS1raW5nZG9tLmNvbQpi 66 | YWNrY2hpbmEuY29tCnx8YmFja2NoaW5hLmNvbQouYmFja3BhY2tlcnMuY29tLnR3 67 | L2ZvcnVtCmJhZG9vLmNvbQp8fGJhaWR1LmpwCmhlbi5iYW8ubGkKfHxiYW8ubGkK 68 | fHxiYXJuYWJ1LmNvLnVrCmRhanVzaGEuYmF5d29yZHMuY29tCi5iYmMuY28udWsv 69 | Y2hpbmVzZQouYmJjLmNvLnVrL3R2Ci5iYmMuY28udWsvemhvbmd3ZW4KbmV3cy5i 70 | YmMuY28udWsvb250aGlzZGF5Km5ld3NpZF8yNDk2MDAwLzI0OTYyNzcKbmV3c2Zv 71 | cnVtcy5iYmMuY28udWsKLmJiY2NoaW5lc2UuY29tCnx8YmJjY2hpbmVzZS5jb20K 72 | fGh0dHA6Ly9iYmMuaW4KLmJiZy5nb3YKfHxiYnNmZWVkLmNvbQpiYnNsYW5kLmNv 73 | bQouYmNjLmNvbS50dy9ib2FyZAouYmNjaGluZXNlLm5ldAouYmViby5jb20KfHxi 74 | ZWJvLmNvbQp8fGJlaWppbmcxOTg5LmNvbQpiZWlqaW5nc3ByaW5nLmNvbQp8fGJl 75 | aWppbmdzcHJpbmcuY29tCi5iZXJsaW50d2l0dGVyd2FsbC5jb20KfHxiZXJsaW50 76 | d2l0dGVyd2FsbC5jb20KLmJlc3Rmb3JjaGluYS5vcmcKfHxiZXN0Zm9yY2hpbmEu 77 | b3JnCi5iZXQzNjUuY29tCi5iZXRmYWlyLmNvbQouYmV0dHdlZW4uY29tCnx8YmV0 78 | dHdlZW4uY29tCnx8YmZubi5vcmcKfHxiZnNoLmhrLwouYmlnbmV3cy5vcmcKfHxi 79 | aWduZXdzLm9yZwouYmlnc291bmQub3JnL3BvcnRub3kKfHxiaWxsMi1zb2Z0d2Fy 80 | ZS5jb20KfHxiaWxseXdyLmNvbQouYml0Lmx5CnxodHRwOi8vYml0Lmx5Ci5iaXRz 81 | aGFyZS5jb20vZmlsZXMKaHR0cDovL2JpdHNoYXJlLmNvbS9maWxlcwouYml0c25v 82 | b3AuY29tCnxodHRwOi8vYml0c25vb3AuY29tCmJqemMub3JnCnx8Ymp6Yy5vcmcv 83 | Cnx8YmxhY2tyYTFuLmNvbQp8fGJsb2dlYXJ0aC5vcmcKfHxsaW1lcmExbi5jb20K 84 | fHxsaW1lc24wdy5jb20KfHxwdXJwbGVyYTFuLmNvbQp0b3IuYmxpbmdibGluZ3Nx 85 | dWFkLm5ldAouYmxpbmt4LmNvbQp8fGJsaW5reC5jb20KLmJsaXAudHYKfHxibGlw 86 | LnR2LwouYmxvY2tjbi5jb20KfHxibG9ja2NuLmNvbQouYmxvZ2NhdGFsb2cuY29t 87 | Cnx8YmxvZ2NhdGFsb2cuY29tCi5ibG9nZ2VyLmNvbQpibG9naW1nLmpwCnx8Ymxv 88 | Zy5rYW5neWUub3JnCi5ibG9nbGluZXMuY29tCnx8YmxvZ2xpbmVzLmNvbQpyY29u 89 | dmVyc2F0aW9uLmJsb2dzLmNvbQpibG9nc3BvdC5jb20KYmxvZ3RkLm5ldAouYmxv 90 | Z3RkLm9yZwp8aHR0cDovL2Jsb2d0ZC5vcmcKfHxibG9vZHNoZWQubmV0Ci5ibG9v 91 | bWJlcmcuY24KfHxibG9vbWJlcmcuY24KLmJsb29tYmVyZy5jb20KfHxibG9vbWJl 92 | cmcuY29tCiEtLS5ibG9vbWJlcmcuY29tKnBpZD0yMDYwMTA4Nwp8fGJsb29tZm9y 93 | dHVuZS5jb20KfHxibnJtZXRhbC5jb20KYm9hcmRyZWFkZXIuY29tL3RocmVhZAp8 94 | fGJvYXJkcmVhZGVyLmNvbQp8fGJvZGhpbGludXguY29tCmJvbHRicm93c2VyLmNv 95 | bS9kb3dubG9hZAp8fGJvb2tzLmNvbS50dwouYm90Lm51Ci5ib3dlbnByZXNzLmNv 96 | bQp8fGJvd2VucHJlc3MuY29tCmRsLmJveC5uZXQKfHxkbC5ib3gubmV0CmJveHVu 97 | LmNvbQp8fGJveHVuLmNvbQouYm94dW4udHYKfHxib3h1bi50dgp8fGJyLnN0Cnx8 98 | YnJhbmRvbmh1dGNoaW5zb24uY29tCi5icmVhay5jb20KfHxicmVhay5jb20KLmJy 99 | ZWFraW5ndHdlZXRzLmNvbQp8fGJyZWFraW5ndHdlZXRzLmNvbQouYnJpZWZkcmVh 100 | bS5jb20vJUU3JUI0JUEwJUU2JUEzJUJBCnx8YmtpdGUuY29tCmJyaWdodGtpdGUu 101 | Y29tCnx8YnJpZ2h0a2l0ZS5jb20KYnJpenpseS5jb20KfHxicml6emx5LmNvbQpp 102 | YnJvcy5vcmcKYnJ1Y2V3YW5nLm5ldAp8fGJ0OTUuY29tCi5idWRhZWR1Lm9yZwp8 103 | fGJ1ZGFlZHUub3JnCi5idWxsb2cub3JnCnx8YnVsbG9nLm9yZwouYnVsbG9nZ2Vy 104 | LmNvbQp8fGJ1bGxvZ2dlci5jb20KLmJ1c2luZXNzd2Vlay5jb20KIS0tYnVzaW5l 105 | c3N0aW1lcwouYnVzaW5lc3N0aW1lcy5jb20uY24KfGh0dHA6Ly9idXNpbmVzc3Rp 106 | bWVzLmNvbS5jbgpidWdiZWVwLmNvbQp8fGJ1Z2NsdWIub3JnCnx8YnV1Z2FhLmNv 107 | bQpidXp6dXJsLmpwCmhvbHouYnlldGhvc3Q4LmNvbQoKIS0tLS0tLS0tLS0tLS0t 108 | LS0tLS0tLS0tLS0tQ0MtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQouYy1zcGFu 109 | dmlkZW8ub3JnCnx8Yy1zcGFudmlkZW8ub3JnCnx8Yy1lc3Qtc2ltcGxlLmNvbQou 110 | Y2FmZXByZXNzLmNvbQouY2FsYW1lby5jb20vYm9va3MKLmNuLmNhbGFtZW8uY29t 111 | CnxodHRwOi8vY24uY2FsYW1lby5jb20KY2FuYWRhbWVldC5jb20KLmNhbnl1Lm9y 112 | ZwouY2FvLmltCi5jYW9iaWFuLmluZm8KfHxjYW9iaWFuLmluZm8KY2FvY2hhbmdx 113 | aW5nLmNvbQp8fGNhb2NoYW5ncWluZy5jb20KLmNhdGhvbGljLm9yZy5oawp8fGNh 114 | dGhvbGljLm9yZy5oawouY2NjLmRlCnx8Y2NjLmRlCi5jY2R0ci5vcmcKfHxjY2R0 115 | ci5vcmcKY2NsaWZlLm9yZwouY2N0aGVyZS5jb20KLmNjdG9uZ2Jhby5jb20vYXJ0 116 | aWNsZS8yMDc4NzMyCmNkanAub3JnCnx8Y2RqcC5vcmcvCi5jZG5ld3MuY29tLnR3 117 | L2NkbmV3c19zaXRlL2RvY0RldGFpbC5qc3A/CmNkcDE5OTgub3JnCnx8Y2RwMTk5 118 | OC5vcmcKY2Rwd2ViLm9yZwp8fGNkcHdlYi5vcmcKY2Rwd3Uub3JnCnx8Y2Rwd3Uu 119 | b3JnCi5jZWNjLmdvdgp8fGNlY2MuZ292Cnx8Y2VsbHVsby5pbmZvCnx8Y2VuY2ku 120 | dGsKfHxjZW5ld3MuZXUKLmNlbnR1cnlzLm5ldAp8aHR0cDovL2NlbnR1cnlzLm5l 121 | dAp8fGNoYW5kb28ub3JnCi5jaGFuZ2Uub3JnCnxodHRwOi8vY2hhbmdlLm9yZwou 122 | Y2hhbmdwLmNvbQp8fGNoYW5ncC5jb20KY2hlbmdtaW5nbWFnLmNvbQp8fGNoZXJy 123 | eXNhdmUuY29tCi5jaGluYS13ZWVrLmNvbQpjaGluYTEwMS5jb20KfHxjaGluYTEw 124 | MS5jb20KY2hpbmEyMS5vcmcKfHxjaGluYTIxLm9yZwpjaGluYWFmZmFpcnMub3Jn 125 | Cnx8Y2hpbmFhZmZhaXJzLm9yZwpjaGluYWNvbW1lbnRzLm9yZwp8fGNoaW5hY29t 126 | bWVudHMub3JnCmNoaW5hY2hhbm5lbC5oawp8fGNoaW5hY2hhbm5lbC5oawouY2hp 127 | bmFkaWdpdGFsdGltZXMubmV0CnxodHRwOi8vY2hpbmFkaWdpdGFsdGltZXMubmV0 128 | Ci5jaGluYWV3ZWVrbHkuY29tCnx8Y2hpbmFld2Vla2x5LmNvbQp8fGNoaW5hZnJl 129 | ZXByZXNzLm9yZwpjaGluYWdmdy5vcmcKfHxjaGluYWdmdy5vcmcKLmNoaW5hZ3Jl 130 | ZW5wYXJ0eS5vcmcKfHxjaGluYWdyZWVucGFydHkub3JnCmNoaW5heGNoaW5hLmNv 131 | bS9ob3d0bwouY2hpbmFpbnBlcnNwZWN0aXZlLmNvbQpjaGluYWlucGVyc3BlY3Rp 132 | dmUubmV0L0FydFNob3cuYXNweD8KfHxjaGluYWlucGVyc3BlY3RpdmUubmV0Ci5j 133 | aGluYWlucGVyc3BlY3RpdmUub3JnCnx8Y2hpbmFpbnBlcnNwZWN0aXZlLm9yZwp8 134 | fGNoaW5haW50ZXJpbWdvdi5vcmcKLmNoaW5hbXVsZS5jb20KfHxjaGluYW11bGUu 135 | Y29tCmNoaW5hc29jaWFsZGVtb2NyYXRpY3BhcnR5LmNvbQp8fGNoaW5hc29jaWFs 136 | ZGVtb2NyYXRpY3BhcnR5LmNvbQpjaGluYXNvdWwub3JnCnx8Y2hpbmFzb3VsLm9y 137 | ZwpibG9nLmNoaW5hdGltZXMuY29tCmNhbWVyYS5jaGluYXRpbWVzLmNvbQpmb3J1 138 | bS5jaGluYXRpbWVzLmNvbQpnYi5jaGluYXRpbWVzLmNvbS9nYXRlL2diKjIwMDdD 139 | dGktTmV3cwpnYi5jaGluYXRpbWVzLmNvbS9nYXRlL2diL25ld3MuY2hpbmF0aW1l 140 | cy5jb20vZm9jdXMKLm5ld3MuY2hpbmF0aW1lcy5jb20KfGh0dHA6Ly9uZXdzLmNo 141 | aW5hdGltZXMuY29tCiEtLW5ld3MuY2hpbmF0aW1lcy5jb20vMjAwN0N0aSowLDQ1 142 | MjEsMTMwNTA1CiEtLW5ld3MuY2hpbmF0aW1lcy5jb20vMjAwN0N0aS8yMDA3Q3Rp 143 | LVJ0bi8yMDA3Q3RpLVJ0bi1Db250ZW50CmNoaW5hdHdlZXBzLmNvbQpjaGluYXdh 144 | eS5vcmcKLmNoaW5hd29ya2VyLmluZm8KfHxjaGluYXdvcmtlci5pbmZvCmNoaW5h 145 | eXVhbm1pbi5vcmcKfHxjaGluYXl1YW5taW4ub3JnCi5jaGluZXNlLWhlcm1pdC5u 146 | ZXQKLmNoaW5lc2VuLmRlCnx8Y2hpbmVzZW4uZGUKY2hpbmVzZW5ld3NuZXQuY29t 147 | Ci5jaGluZXNlcGVuLm9yZwouY2hpbmVzZXRhbGtzLm5ldC9jaAouY2hpbmdjaGVv 148 | bmcuY29tCnx8Y2hpbmdjaGVvbmcuY29tCmNobi5jaG9zdW4uY29tL3NlcnZsZXQv 149 | Y2hpbmEuQXJ0aWNsZUxpc3QuQXJ0aWNsZUxpc3Q/Y29kZT1GRkEKY2hyaXN0aWFu 150 | c3R1ZHkuY29tCnx8Y2hyaXN0aWFuc3R1ZHkuY29tCmNocmlzdHVzcmV4Lm9yZy93 151 | d3cxL3NkYwp8fGNocmxjZy1oay5vcmcKY2h1aXppLm5ldAp8fGNodWl6aS5uZXQK 152 | IS0tc2FtZSBpcAp8fGNocmlzcGVkZXJpY2suY29tCnx8Y2hyaXNwZWRlcmljay5u 153 | ZXQKfHxhbGxhYm91dGFscGhhLmNvbQouY2l0aXplbmxhYi5vcmcKY2l0eTl4LmNv 154 | bQouY2l2aWNwYXJ0eS5oawp8fGNpdmljcGFydHkuaGsKY2l2aWxocmZyb250Lm9y 155 | Zwp8fGNpdmlsaHJmcm9udC5vcmcKcHNpcGhvbi5jaXZpc2VjLm9yZwp8fHNoZWxs 156 | LmNqYi5uZXQKLmNrMTAxLmNvbQp8fGNrMTAxLmNvbQp8fGNsYXNzaWNhbGd1aXRh 157 | cmJsb2cubmV0Ci5jbXVsZS5jb20KfHxjbXVsZS5jb20KfHxjbmEuY29tLnR3Ci5j 158 | bmF2aXN0YS5jb20udHcvc2hvcC9zdG9yZXNfYXBwCi5jbmQub3JnCnx8Y25kLm9y 159 | Zy8Kd2lraS5jbml0dGVyLmNvbQouY25uLmNvbS92aWRlbwpjbi5uZXdzLmNueWVz 160 | LmNvbQp8fGNvY2hpbmEub3JnCi5jb2RlMTk4NC5jb20vNjQKY29tZWZyb21jaGlu 161 | YS5jb20KfHxjb21lZnJvbWNoaW5hLmNvbQp8fGNvbm95by5jb20KLmNvb2xhbGVy 162 | LmNvbQp8fGNvb2xhbGVyLmNvbQpjb29sZGVyLmNvbQp8fGNvb2xkZXIuY29tCnx8 163 | Y29vbGxvdWQub3JnLnR3CmNvcnVtY29sbGVnZS5jb20KfHxjb3VjaGRid2lraS5j 164 | b20KfHxjb3R3ZWV0LmNvbQpjcGoub3JnCnx8Y3BqLm9yZy8KY3JhY2tsZS5jb20K 165 | fHxjcmFja2xlLmNvbQpjcmQtbmV0Lm9yZwpjcmVhZGVycy5uZXQKfHxjcmVhZGVy 166 | cy5uZXQKLmNyb3NzdGhld2FsbC5uZXQKfHxjcm9zc3RoZXdhbGwubmV0Cnx8Y3N1 167 | Y2hlbi5kZQouY3Voa2Fjcy5vcmcvfmJlbm5nCi5jdWlodWEub3JnCnx8Y3VpaHVh 168 | Lm9yZwouY3Vpd2VpcGluZy5uZXQKfHxjdWl3ZWlwaW5nLm5ldAp8fGN1cnZlZmlz 169 | aC5jb20KZm9ydW0uY3liZXJjdG0uY29tL2ZvcnVtCnx8Y3luc2NyaWJlLmNvbQpj 170 | eXRvZGUudXMKfHxpZmFuLmN6LmNjCnx8bWlrZS5jei5jYwp8fG5pYy5jei5jYwoK 171 | IS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tREQtLS0tLS0tLS0tLS0tLS0tLS0t 172 | LS0tLS0tLQpjbC5kMHoubmV0Ci5kYWJyLmNvLnVrCnx8ZGFici5jby51awpkYWJy 173 | Lm1vYmkKfHxkYWJyLm1vYmkKZGFkYXppbS5jb20KfHxkYWRhemltLmNvbQouZGFk 174 | aTM2MC5jb20KLmRhaWxpZGFpbGkuY29tCnx8ZGFpbGlkYWlsaS5jb20KLmRhaWx5 175 | bW90aW9uLmNvbQouZGFqaXl1YW4uY29tCnx8ZGFqaXl1YW4uY29tCmRhbGFpbGFt 176 | YS5jb20KLmRhbGFpbGFtYXdvcmxkLmNvbQp8fGRhbGFpbGFtYXdvcmxkLmNvbQpk 177 | YWxpYW5tZW5nLm9yZwp8fGRhbGlhbm1lbmcub3JnCi5kYW5rZTRjaGluYS5uZXQK 178 | fHxkYW5rZTRjaGluYS5uZXQKLmRhbndlaS5vcmcKLmRhb2xhbi5uZXQKZGF4YS5j 179 | bgp8fGRheGEuY24vCmNuLmRheWFib29rLmNvbQouZGF5bGlmZS5jb20vdG9waWMv 180 | ZGFsYWlfbGFtYQp8fGRlLXNjaS5vcmcKLmRlLXNjaS5vcmcKbGlzdHMuZGViaWFu 181 | Lm9yZwpwYWNrYWdlcy5kZWJpYW4ub3JnL3poLWNuL2xlbm55L2dwYXNzCnx8d3d3 182 | LmRlYnVnbW9kZS5jb20KfHxkZWxjYW1wLm5ldApkZWxpY2lvdXMuY29tL0dGV2Jv 183 | b2ttYXJrCi5kZW1vY3JhdHMub3JnCnx8ZGVtb2NyYXRzLm9yZwp8fGRlc2Muc2Uv 184 | Cnx8ZGV1dHNjaGUtd2VsbGUuZGUKfHxkZXYxMDIuY29tCnx8ZGV2aW8udXMKLmRp 185 | YW95dWlzbGFuZHMub3JnCnx8ZGlhb3l1aXNsYW5kcy5vcmcKfHxkaWdpdGFsbm9t 186 | YWRzcHJvamVjdC5vcmcKLmRpaWdvLmNvbQp8fGRpaWdvLmNvbQp8fGZ1cmwubmV0 187 | Ci5kaXNjdXNzLmNvbS5oawp8fGRpc2N1c3MuY29tLmhrCmRpc3AuY2MKfHxkaXQt 188 | aW5jLnVzCi5kaXpoaWRpemhpLmNvbQp8fGRsLWxhYnkuanAKfHxkbHNpdGUuY29t 189 | Ci5kb2NzdG9jLmNvbS9kb2NzCi5kb2ppbi5jb20KLmRvbGMuZGUvZm9ydW0KLmRv 190 | bWFpbi5jbHViLnR3CmRvbmdkZS5jb20KZG9uZ3RhaXdhbmcuY29tCi5kb25ndGFp 191 | d2FuZy5uZXQKfHxkb25ndGFpd2FuZy5uZXQKLmRvbmd5YW5namluZy5jb20KLmRv 192 | bnRmaWx0ZXIudXMKfHxkb250bW92ZXRvY2hpbmEuY29tCi5kb3RwbGFuZS5jb20K 193 | fHxkb3RwbGFuZS5jb20KZG91YmxlYWYuY29tCnx8ZG91Z3NjcmlwdHMuY29tCmRv 194 | d2VpLm9yZwp8fGRveHlnZW4ub3JnCmRwaGsub3JnCnx8ZHBwLm9yZy50dwp8fHdl 195 | aWdlZ2VieWMuZHJlYW1ob3N0ZXJzLmNvbQouZHJvcGJveC5jb20KfHxkdGlibG9n 196 | LmNvbQpkdGlzZXJ2Mi5jb20KLmR1Y2tsb2FkLmNvbS9kb3dubG9hZAp8fGR1Y2tt 197 | eWxpZmUuY29tCi5kdWlodWEub3JnCnx8ZHVpaHVhLm9yZwouZHVvd2VpdGltZXMu 198 | Y29tCnx8ZHVvd2VpdGltZXMuY29tCmR1cGluZy5uZXQKZHVwb2xhLmNvbQpkdXBv 199 | bGEubmV0Cnx8ZHZvcmFrLm9yZwouZHcuZGUKfGh0dHA6Ly9kdy5kZQouZHctd29y 200 | bGQuY29tCnx8ZHctd29ybGQuY29tCi5kdy13b3JsZC5kZQpodHRwOi8vZHctd29y 201 | bGQuZGUKd3d3LmR3aGVlbGVyLmNvbQouZHduZXdzLmNvbQp8fGR3bmV3cy5jb20K 202 | eHlzLmR4aW9uZy5jb20KZHkyNGsuaW5mbwp8fGR5bmF3ZWJpbmMuY29tCi5kenpl 203 | LmNvbQoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUVFLS0tLS0tLS0tLS0tLS0t 204 | LS0tLS0tLS0tCnx8ZS1nb2xkLmNvbQouZS1nb2xkLmNvbQplLWluZm8ub3JnLnR3 205 | Ci5lLXRyYWRlcmxhbmQubmV0L2JvYXJkCi5lYXN5LXNoYXJlLmNvbS8xOTEKaGtq 206 | cC5lYXN5d2ViLmhrCmVib29rZWUuY29tCmJicy5lY3N0YXJ0LmNvbQplZG9vcnMu 207 | Y29tCi5lZHVicmlkZ2UuY29tCnx8ZWR1YnJpZGdlLmNvbQohLS0uZWR1YnJpZGdl 208 | LmNvbS9lcnhpYW50YW5nL2xpYnJhcnkKfHxlZXZwbi5jb20KfHxlaWMtYXYuY29t 209 | Ci5lbHRvbmRpc25leS5jb20KfHxlbWFjc2Jsb2cub3JnCi5lbW9yeS5lZHUKfHxl 210 | bXNjcmlwdGVuLm9yZwouZW11bGUtZWQyay5jb20KfGh0dHA6Ly9lbXVsZS1lZDJr 211 | LmNvbQpjaGluZXNlLmVuZ2FkZ2V0LmNvbQp8fGVuZ2xpc2hmcm9tZW5nbGFuZC5j 212 | by51awp8fGVudGVybWFwLmNvbQplcG9jaHRpbWVzLmNvbQp8fGVwb2NodGltZXMu 213 | Y29tCi5lcG9jaHRpbWVzLmllCnx8ZXBvY2h0aW1lcy5pZQp8fGVybmVzdG1hbmRl 214 | bC5vcmcKfHxlcmlnaHRzLm5ldApldGFpd2FubmV3cy5jb20KfHxldGl6ZXIub3Jn 215 | Cnd3dy5ldWxhbS5jb20KZXZlbnRmdWwuY29tCnx8ZXhibG9nLmpwCnx8YmxvZy5l 216 | eGJsb2cuY28uanAKQEB8fHd3dy5leGJsb2cuanAKfHxleHBsb2FkZXIubmV0CmV5 217 | bnkuY29tCi5lenBjLnRrL2NhdGVnb3J5L3NvZnQKLmV6cGVlci5jb20KCiEtLS0t 218 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLUZGLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 219 | LS0KLmZhY2Vib29rLmNvbQp8fGZhY2Vib29rLmNvbQovXmh0dHBzPzpcL1wvW15c 220 | L10rZmFjZWJvb2tcLmNvbS8KQEB8fCp2Ni5mYWNlYm9vay5jb20KfHxjb25uZWN0 221 | LmZhY2Vib29rLm5ldAouZmFra3UubmV0Ci5mYXJ4aWFuLmNvbQp8fGZiY2RuLm5l 222 | dApmYW5xaWFuZ3lha2V4aS5uZXQKZmFpbC5oawp8fGZhbXVuaW9uLmNvbQouZmFu 223 | LXFpYW5nLmNvbQouZmFuZ2JpbnhpbmcuY29tCnx8ZmFuZ2JpbnhpbmcuY29tCmZh 224 | bmdlbWluZy5jb20KLmZhcndlc3RjaGluYS5jb20KZmF2b3Jpb3VzLmNvbQp8fGZh 225 | dm9yaW91cy5jb20KZW4uZmF2b3R0ZXIubmV0Cnx8ZmFzdHN0b25lLm9yZwpmYXZz 226 | dGFyLmZtCnx8ZmF2c3Rhci5mbQpmYXlkYW8uY29tL3dlYmxvZwpmYzIuY29tCi5m 227 | YzJjaGluYS5jb20Kc2hpZmVpa2UuYmxvZzEyNS5mYzJibG9nLm5ldAp2aWRlby5m 228 | ZGJveC5jb20KfHxmb3VyZmFjZS5ub2Rlc25vb3AuY29tCmZlZWRib29rcy5tb2Jp 229 | CmZlZWRzLmZlZWRidXJuZXIuY29tCmZlZWRzMi5mZWVkYnVybmVyLmNvbS9jaGlu 230 | YWdmd2Jsb2cKZ29vLmdsL2ZiCnx8ZmVlZHpzaGFyZS5jb20KZmVlci5jb20KZmVs 231 | aXhjYXQubmV0Cnx8ZmVsaXhjYXQubmV0Cnx8ZmVtaW5pc3R0ZWFjaGVyLmNvbQou 232 | ZmVuZ3poZW5naHUuY29tCnx8ZmVuZ3poZW5naHUuY29tCmZmbGljay5jb20KLmZn 233 | bXR2Lm9yZwouZmlsZWZhY3RvcnkuY29tL2ZpbGUKLmZpbGVzMm1lLmNvbQp8aHR0 234 | cDovL2ZpbGVzMm1lLmNvbQouZmlsZXNlcnZlLmNvbS9maWxlCi5maWxlc29uaWMu 235 | Y29tL2ZpbGUKZmlsbHRoZXNxdWFyZS5vcmcKZmluZGJvb2sudHcKZmlubGVyLm5l 236 | dAouZmlyZW9mbGliZXJ0eS5vcmcKfHxmaXJlb2ZsaWJlcnR5Lm9yZwp8fGZsYWdm 237 | b3gubmV0Ci5mYWxzZWZpcmUuY29tCnx8ZmFsc2VmaXJlLmNvbQpmbGVzaGJvdC5j 238 | b20KCi5mbGlja3IuY29tL3Bob3Rvcy80NjIzMTA3N0BOMDYKLmZsaWNrci5jb20v 239 | Z3JvdXBzL2Fpd2Vpd2VpCi5mbGlja3IuY29tL3Bob3Rvcy9kaWdpdGFsYm95MTAw 240 | Ci5mbGlja3IuY29tL3Bob3Rvcy9memhlbmdodQouZmxpY2tyLmNvbS9waG90b3Mv 241 | bG9uZWx5Zm94CmZsaWNrci5jb20vcGhvdG9zL3ZhbnZhbi81Mjk5MjUxNTcKLmZs 242 | aWNrci5jb20vcGhvdG9zL3dpbnRlcmthbmFsCi5mbGlja3IuY29tL3Bob3Rvcy96 243 | b2xhCgpmbGlja3JoaXZlbWluZC5uZXQKeXVtaW5nLmZsbmV0Lm9yZwpibG9nLmZv 244 | b2xzbW91bnRhaW4uY29tCnd3dy5mb3J1bTRoay5jb20KcGlvbmVlci13b3JrZXIu 245 | Zm9ydW1zLWZyZWUuY29tCmZvdXJzcXVhcmUuY29tCnxodHRwOi8vNHNxLmNvbQp8 246 | fGZvdG9wLm5ldAp2aWRlby5mb3hidXNpbmVzcy5jb20KfHxmcmluZ2VuZXR3b3Jr 247 | LmNvbQp8fGZsZWNoZWludGhlcGVjaGUuZnIKfHxmb2ZnLm9yZwouZm9vb29vLmNv 248 | bQp8fGZvb29vby5jb20KZm9vdHdpYmFsbC5jb20KfHxmb3VydGhpbnRlcm5hdGlv 249 | bmFsLm9yZwp8fGZveGRpZS51cwp8fGZveHN1Yi5jb20KLmZveHRhbmcuY29tCnx8 250 | ZnJhbmtsYy5jb20KLmZyZWFrc2hhcmUuY29tCnxodHRwOi8vZnJlYWtzaGFyZS5j 251 | b20KLmZyZWUuZnIvYWRzbAp8fGFsbG9ubGludXguZnJlZS5mcgp8fGRpbWl0cmlr 252 | LmZyZWUuZnIKa2luZW94LmZyZWUuZnIKfHxwdXR0eWNtLmZyZWUuZnIKLmZyZWUt 253 | dnBuLmluZm8vbXJ6aGFuZwp3aGl0ZWJlYXIuZnJlZWJlYXJibG9nLm9yZwpmcmVl 254 | Y2l2Lm9yZwouZnJlZWRvbWhvdXNlLm9yZwp8fGZyZWVkb21ob3VzZS5vcmcKLmZy 255 | ZWVnYW8uY29tCnx8ZnJlZWdhby5jb20KLmZyZWVsb3R0by5jb20KfHxmcmVlbG90 256 | dG8uY29tCmZyZWVtYW4yLmNvbQpmcmVlbW9yZW4uY29tCmZyZWVtb3JlbmV3cy5j 257 | b20KLmZyZWVvei5vcmcvYmJzCnx8d3d3LmJ1bGJvdXMuZnJlZXNlcnZlLmNvLnVr 258 | Cnx8ZnJlZXNzaC51cwouZnJlZS1zc2guY29tCnx8ZnJlZS1zc2guY29tCnd3dy5m 259 | cmVldGliZXQub3JnCnx8ZnJlZXdhbGxwYXBlcjQubWUKLmZyZWV3ZWJzLmNvbQou 260 | ZnJlZXhpbndlbi5jb20KZnJpZW5kZmVlZC5jb20KZnJpZW5kZmVlZC1tZWRpYS5j 261 | b20vZTk5YTRlYmUyZmI0YzE5ODVjMmE1ODc3NWViNDQyMjk2MWFhNWEyZQp8aHR0 262 | cDovL2ZmLmltCi5mcmluZy5jb20KfHxmcmluZy5jb20KfHxmcm9tbWVsLm5ldAp8 263 | fGZzY2tlZC5vcmcKLmZzdXJmLmNvbQohLS5mdGNoaW5lc2UuY29tL3N0b3J5LzAw 264 | MTAzODIyMAouZnRjaGluZXNlLmNvbQouZnVja2NubmljLm5ldAp8fGZ1Y2tjbm5p 265 | Yy5uZXQKZnVja2dmdy5vcmcKZnVsdWUuY29tCmZ1bnAuY29tCnx8ZnVyaW5rYW4u 266 | Y29tCi5mdXR1cmVjaGluYWZvcnVtLm9yZwp8fGZ1dHVyZW1lc3NhZ2Uub3JnCmZ6 267 | aDk5OS5jb20KZnpoOTk5Lm5ldAoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUdH 268 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8Z2Fib2NvcnAuY29tCnx8Z2FsZW53 269 | dS5jb20KLmdhbWViYXNlLmNvbS50dwp8fGdhbWVyLmNvbS50dwouZ2FtZXouY29t 270 | LnR3Cnx8Z2FtZXouY29tLnR3Ci5nYW9taW5nLm5ldAp8fGdhb21pbmcubmV0Ci5n 271 | YW9waS5uZXQKfGh0dHA6Ly9nYW9waS5uZXQKfHxnYXBwcC5vcmcKZ2FyZGVubmV0 272 | d29ya3MuY29tCnx8Z2FyZGVubmV0d29ya3Mub3JnCiEtLUlQIG9mIEdhcmRlbiBO 273 | ZXR3b3JrCjcyLjUyLjgxLjIyCnx8Z2FydGxpdmUuY29tCnx8Z2F0aGVyLmNvbQp8 274 | fGdheW1hcC5jYwouZ2F6b3R1YmUuY29tCnx8Z2F6b3R1YmUuY29tCnx8Z2Nsb29u 275 | ZXkuY29tCi5nZGJ0Lm5ldC9mb3J1bQpnZHpmLm9yZwp8fGdlZWstYXJ0Lm5ldApn 276 | ZWVrZXJob21lLmNvbS8yMDEwLzAzL3hpeGlhbmctcHJvamVjdC1jcm9zcy1nZncK 277 | fHxnZWVrbWFudWFscy5jb20KLmdlb2NpdGllcy5jby5qcAouZ2VvY2l0aWVzLmNv 278 | bS9TaWxpY29uVmFsbGV5L0NpcmN1aXQvNTY4My9kb3dubG9hZC5odG1sCmhrLmdl 279 | b2NpdGllcy5jb20KZ2VvY2l0aWVzLmpwCnx8Z2VvaG90LmNvbQp8fGdlb21ldHJp 280 | Y3Rvb2xzLmNvbQp8fGdldC1kaWdpdGFsLWhlbHAuY29tCi5nZXRmcmVlZHVyLmNv 281 | bQouZ2V0amV0c28uY29tL2ZvcnVtCmdldGl0b24uY29tCi5nZXRzb2NpYWxzY29w 282 | ZS5jb20KZ2Z3Lm9yZy51YQouZ2dzc2wuY29tCnx8Z2dzc2wuY29tCmdpZ3Bvcm5v 283 | LnJ1Cnx8Z2ltcHNob3AuY29tCi5naW54LmNvbQp8fGdpbnguY29tCnx8Z2xlbm5o 284 | aWx0b24uY29tCmdsb2JhbG11c2V1bW9uY29tbXVuaXNtLm9yZwouZ2xvYmFsdm9p 285 | Y2Vzb25saW5lLm9yZwp8fGdsb2JhbHZvaWNlc29ubGluZS5vcmcKZ21iZC5jbgp8 286 | fGdtaHoub3JnCnx8Z29sZHdhdmUuY29tCmdvbmdtZW5nLmluZm8KZ29uZ21pbmxp 287 | bGlhbmcuY29tCi5nb25nd3QuY29tCi5nb29kcmVhZHMuY29tCnx8Z29vZHJlYWRz 288 | LmNvbQouZ29vZHJlYWRlcnMuY29tCnx8Z29vZHJlYWRlcnMuY29tCnx8Z29vZmlu 289 | ZC5jb20KLmdvb2dsZXNpbGUuY29tCi5nb3BldGl0aW9uLmNvbQp8fGdvcGV0aXRp 290 | b24uY29tCnx8Z290dy5jYS8KZ3JhbmR0cmlhbC5vcmcKfHxncmFwaGlzLm5lLmpw 291 | CmdyZWF0ZmlyZXdhbGwuYml6Cnx8Z3JlYXRmaXJld2FsbG9mY2hpbmEubmV0Ci5n 292 | cmVhdGZpcmV3YWxsb2ZjaGluYS5vcmcKfHxncmVhdGZpcmV3YWxsb2ZjaGluYS5v 293 | cmcKLmdyZWVucGFydHkub3JnLnR3CmdwYXNzMS5jb20KZ3JlYXQtZmlyZXdhbGwu 294 | Y29tCnx8d3d3LmdyZWVucG9pczBuLmNvbQpncmVhdHJvYy5vcmcKLmdyZWVudnBu 295 | Lm5ldAp8fGdyZWVudnBuLm5ldApncy1kaXNjdXNzLmNvbQouZ3NlZWtlci5jb20v 296 | NTAyMjY3MTEvZWVpZXlvdXR1YmVhZ29vZ2xlY18xMjE4MjIucGhwCnx8Z3RrZm9y 297 | dW1zLmNvbQp8fGd0cmlja3MuY29tCmd1YW5jaGEub3JnCi5ndW4td29ybGQubmV0 298 | CkBAfHxiYWsuZ3VuLXdvcmxkLm5ldAp8fGd1dHRlcnVuY2Vuc29yZWQuY29tCi5n 299 | em0udHYKfHxnem9uZS1hbmltZS5pbmZvCgohLS0tLS0tLS0tLS0tR29vZ2xlIEFw 300 | cCBFbmdpbmUvQXBwc3BvdC0tLS0tLS0KLmFwcHNwb3QuY29tCnx8YXBwc3BvdC5j 301 | b20KL15odHRwcz86XC9cL1teXC9dK2FwcHNwb3RcLmNvbS8KIS1idWxsb2c0Y24u 302 | YXBwc3BvdC5jb20KIS1jaG5zaG90LmFwcHNwb3QuY29tCiEtZ28yY2hpbmE4LmFw 303 | cHNwb3QuY29tCiEtbWVtZTIwMjguYXBwc3BvdC5jb20KIS1uZXN0LmFwcHNwb3Qu 304 | Y29tCiEtcHJveHlweS5hcHBzcG90LmNvbQohLXNxdWFsbDA2MjkuYXBwc3BvdC5j 305 | b20KIS10d2l0ZXNlLmFwcHNwb3QuY29tCiEtdHdpdHRlci1taXJyb3IuYXBwc3Bv 306 | dC5jb20KIS10d2l0dGVyZ2FkZ2V0LmFwcHNwb3QuY29tCiEtd2F0ZXJ6ZW9uZy5h 307 | cHBzcG90LmNvbQoKCiEtLS0tLS0tLS0tLS0tR29vZ2xlIENvZGUtLS0tLQpjb2Rl 308 | Lmdvb2dsZS5jb20vcC9nYXBwcHJveHkKY29kZS5nb29nbGUuY29tL3AvYXV0b3By 309 | b3h5L3VwZGF0ZXMvbGlzdApjb2RlLmdvb2dsZS5jb20vcC9wcm9ncmFtLXRoaW5r 310 | L3dpa2kvU29mdHdhcmUKY29kZS5nb29nbGUuY29tL3Avc2Nob2xhcnpoYW5nCmNv 311 | ZGUuZ29vZ2xlLmNvbS9wL3Zmb3JjaHJvbWUvd2lraS9TdGFydApjb2RlLmdvb2ds 312 | ZS5jb20vcC90dWl0ZQpjb2RlLmdvb2dsZS5jb20vcC90d2l0ZXNlCmNvZGUuZ29v 313 | Z2xlLmNvbS9wL3R3aXAKYXV0b3Byb3h5LWdmd2xpc3QuZ29vZ2xlY29kZS5jb20v 314 | c3ZuL3RydW5rL2dmd2xpc3QudHh0Cmdmd2ludGVyY2VwdG9yLmdvb2dsZWNvZGUu 315 | Y29tCmd0YXAuZ29vZ2xlY29kZS5jb20KdHVpdGUuZ29vZ2xlY29kZS5jb20KCiEt 316 | LS0tLS0tLS0tLS0tR29vZ2xlIERvY3MtLS0tLQpkb2NzLmdvb2dsZS5jb20vRG9j 317 | P2RvY2lkPTBBZTlqV01vVWhnVjFaSGQwY2pKMk5WODFOR1E1TW5JMGQzRTEKZG9j 318 | cy5nb29nbGUuY29tL1ZpZXc/aWQ9ZDh4YnBwNl80aGhwYjJkZmQKZG9jcy5nb29n 319 | bGUuY29tL1ZpZXc/aWQ9ZGRzNjhkel85Y3FnbTh2Z3EKZG9jcy5nb29nbGUuY29t 320 | KlZpZXcqaWQqZGc1bXRtajlfOGczaGsyN2Y1CmRvY3MuZ29vZ2xlLmNvbSpWaWV3 321 | KmlkKmRnNW10bWo5XzMxODh4NDh6Y24KZG9jcy5nb29nbGUuY29tL1ZpZXc/aWQ9 322 | ZGdqeHN4d3NfMTQ4ZnZwejZ3ZGcKZG9jcy5nb29nbGUuY29tKmRndGJtd2Q2Xzkz 323 | NGdnOTl2Nmc0Y2MKZG9jcy5nb29nbGUuY29tL1ZpZXc/aWQ9ZGhoNWd0eGJfMTQ1 324 | bnN4Z2N0Y2MKCiEtLS0tLS0tLS0tLS0tR29vZ2xlIGdocy0tLS0tCiEtfHx3d3cu 325 | MjB0aGluZ3NpbGVhcm5lZC5jb20KIS18fHd3dy4zZHRpbi5jb20KIS1BCiEtfHxh 326 | YmVsaGFkaWdpdGFsLmNvbQohLXx8YmxvZy5hZWdpc3ViLm9yZwohLXx8cGRrLmFu 327 | ZHJvaWQuY29tCiEtfHxhbmRyb2lkLXg4Ni5vcmcKIS18fGNocm9tZS5hbmdyeWJp 328 | cmRzLmNvbQohLXx8YXBwYnJhaW4uY29tCiEtfHxteS5hcmNoaXRleGEuY29tCiEt 329 | fHxmZWVkcy5hcnN0ZWNobmljYS5jb20KIS18fGJsb2cuYXRoaWNvLmNvbQohLXx8 330 | YXVyb3Jhc29mdHdvcmtzLmNvbQohLXx8YXZ3aWtpcGVkaWEuY29tCiEtQgohLXx8 331 | d3d3LmJlbmphbWluZ29sdWIuY29tCiEtfHxyc3MuYmVycnlyZXZpZXcuY29tCiEt 332 | fHxkb2NzLmJsYWNrdHJlZS5jb20KIS18fHNlY3JldHMuYmxhY2t0cmVlLmNvbQoh 333 | LXx8d3d3LmJsYWNrdHJlZS5jb20KIS18fGZlZWRzLmJvaW5nYm9pbmcubmV0CiEt 334 | fHxib3h1bmJsb2cuY29tCiEtfHxtb2Jsb2cuYnJhZGxleWl0LmNvbQohLXx8d3d3 335 | LmJ1ZGR5cnVubmVyLmNvbQohLXx8YnV6emNhbnR3ZWV0LmNvbQohLUMKIS18fGZl 336 | ZWRzLmNic25ld3MuY29tCmNoaW5hYWlkLm5ldAohLXx8Y2hpbmFhaWQubmV0CiEt 337 | fHx3d3cuY2hpbmVzZWFsYnVtYXJ0LmNvbQohLXx8Y2hyb21lZXhwZXJpbWVudHMu 338 | Y29tCiEtfHxibG9nLmNocm9taXVtLm9yZwohLXx8Y29kZXJldmlldy5jaHJvbWl1 339 | bS5vcmcKIS18fGRldi5jaHJvbWl1bS5vcmcKIS18fHd3dy5jaHJvbWl1bS5vcmcK 340 | IS18fHd3dy5jbGVtZW50aW5lLXBsYXllci5vcmcKIS18fGRhdGEuY2xlbWVudGlu 341 | ZS1wbGF5ZXIub3JnCiEtfHxjbGVtZXNoYS5vcmcKIS18fHd3dy5jbG91ZGdpcmxm 342 | cmllbmQuY29tCiEtfHxyc3MuY25uLmNvbQohLXx8Y29jb2F3aXRobG92ZS5jb20K 343 | IS18fGJsb2cuY29udHJvbHNwYWNlLm9yZwohLUQKIS18fHd3dy5kYWlseWd5YW4u 344 | Y29tCiEtfHxkYWlseXRvZG8ub3JnCiEtfHxibG9nLmRhbm1hcm5lci5jb20KIS18 345 | fGdpdGh1Yi5kYW5tYXJuZXIuY29tCiEtfHxkZXNpZ24tc2VlZHMuY29tCiEtfHxk 346 | ZXNpZ25lcnMtYXJ0aXN0cy5jb20KIS18fGZlZWRzLmRpZ2cuY29tCiEtfHxhcHAu 347 | ZGl1LmxpCiEtfHxtYWlsLmRpeWFuZy5vcmcKIS18fGJsb2cuZG91Z2hlbGxtYW5u 348 | LmNvbQohLXx8ZG93bmZvcmV2ZXJ5b25lb3JqdXN0bWUuY29tCiEtfHxkcm9pZHNl 349 | Y3VyaXR5LmNvbQohLXx8d3d3LmRyb3Btb2Nrcy5jb20KIS18fGR1bWJsaXR0bGVt 350 | YW4uY29tCiEtfHxmZWVkcy5kem9uZS5jb20KIS1FCmVjaG9mb24uY29tCiEtfHxl 351 | Y2hvZm9uLmNvbQohLXx8ZXBjLWphdi5jb20KIS18fGV2ZXJkYXJrLmluZm8KIS18 352 | fHMuZXZlcm5vdGUuY29tCiEtfHxldmhlYWQuY29tCiEtRgohLXx8ZmFjaWxlbG9n 353 | aW4uY29tCiEtfHwqLmZhdGR1Y2sub3JnCiEtfHxibG9nLmZkY24ub3JnCiEtfHxm 354 | ZnRvZ28uY29tCiEtfHxmbGlnaHRzaW10YWxrLmNvbQohLXx8bWNsZWUuZm9vbG1l 355 | Lm5ldAohLXx8d3d3LmZyaWVuZGRlY2suY29tCiEtfHxmcmluZ2VzcG9pbGVycy5j 356 | b20KIS18fGZyaW5nZXRlbGV2aXNpb24uY29tCiEtfHxmdW5wZWEuY29tCiEtRwoh 357 | LXx8YmxvZy5nYXRlaW4ub3JnCiEtfHxmZWVkcy5nYXdrZXIuY29tCiEtfHxnZWVr 358 | dGFuZy5jb20KIS18fGdlb2hvdC51cwohLXx8Z2V0YXJvdW5kLmNvbQohLXx8Z21l 359 | ci5uZXQKIS18fHd3dy5nbW90ZS5vcmcKIS18fGJsb2cuZ28yd2ViMjAubmV0CiEt 360 | fHxibG9nLmdvb2dsZS5vcmcKIS18fGdvb2dsZS1tZWxhbmdlLmNvbQohLXx8Ymxv 361 | Zy5nb2xhbmcub3JnCiEtfHxmYW1lLmdvbnpvbGFicy5vcmcKIS18fGdvdmVjbi5v 362 | cmcKIS18fGdxdWV1ZXMuY29tCiEtfHxncmFwaHljYWxjLmNvbQohLXx8d3d3Lmdy 363 | ZWFzZXNwb3QubmV0CiEtfHxibG9nLmdyb3dsZm9yd2luZG93cy5jb20KIS1ICiEt 364 | fHxibG9nLmhlYWRpdXMuY29tCiEtfHxob2diYXlzb2Z0d2FyZS5jb20KIS18fGJs 365 | b2cuaG90b3Qub3JnCiEtfHxmZWVkcy5ob3dzdHVmZndvcmtzLmNvbQohLXx8c2xp 366 | ZGVzLmh0bWw1cm9ja3MuY29tCiEtfHx3d3cuaHRtbDVyb2Nrcy5jb20KIS18fGh1 367 | aGFpdGFpLmNvbQohLXx8YmxvZy5odW1hbnJpZ2h0c2ZpcnN0Lm9yZwohLUkKIS18 368 | fHNpdGUuaWN1LXByb2plY3Qub3JnCiEtfHxpZ29yd2FyZS5jb20KIS18fGloYXMx 369 | MzM3Y29kZS5jb20KIS18fGlua25vdXZlYXUuY29tCiEtfHxpbm90ZS50dwohLXx8 370 | aXJvbmhlbG1ldC5jb20KIS18fGl3ZndjZi5jb20KIS1KCiEtfHxibG9nLmphbmdt 371 | dC5jb20KIS18fGJsb2cuamF5ZmllbGRzLmNvbQohLXx8dC5qaWVjaWkuY29tCiEt 372 | fHxibG9nLmpvaW50Lm5ldAohLXx8YmxvZy5qc3F1YXJlZGphdmFzY3JpcHQuY29t 373 | CiEtfHxibG9nLmp0YndvcmxkLmNvbQohLUsKIS18fGthdGh5c2Nod2FsYmUuY29t 374 | CiEtfHx0b21hdG92cG4ua2VpdGhtb3llci5jb20KIS18fHd3dy5rZWl0aG1veWVy 375 | LmNvbQohLXx8a2VuZGFsdmFuZHlrZS5jb20KIS18fGJsb2cua2VuZ2FvLnR3CiEt 376 | fHxsb2cua2Vzby5jbgohLXx8d3d3LmtoYW5hY2FkZW15Lm9yZwp8fHd3dy5rbGlw 377 | Lm1lCiEtfHx1c2Jsb2FkZXJneC5rb3VyZWlvLm5ldAohLXx8YmxvZy5rb3dhbGN6 378 | eWsuaW5mbwohLUwKIS18fGxhYnlyaW50aDIuY29tCiEtfHxsYXJzZ2VvcmdlLmNv 379 | bQohLXx8YmxvZy5sYXN0cGFzcy5jb20KIS18fGRvY3MubGF0ZXhsYWIub3JnCiEt 380 | fHxsZWFuZXNzYXlzLmNvbQohLXx8YmxvZy5saWRhb2JpbmcuaW5mbwohLXx8bG9n 381 | LmxpZ2h0b3J5Lm5ldAohLXx8ZmVlZHMubGltaS5uZXQKIS18fHd3dy5saXRlYXBw 382 | bGljYXRpb25zLmNvbQohLXx8YmxvZy5saXVrYW5neHUuaW5mbwohLXx8dHdpdHRl 383 | ci5saXVrYW5neHUuaW5mbwohLXx8b2FzaXNuZXdzcm9vbS5saXZlNGV2ZXIudXMK 384 | IS18fHd3dy5sb2NrZXJnbm9tZS5jb20KIS18fGxvY3FsLmNvbQpAQHx8c2l0ZS5s 385 | b2NxbC5jb20KIS18fGZlZWRzLmxvaWNsZW1ldXIuY29tCiEtfHxibG9nLmxvdWlz 386 | Z3JheS5jb20KIS1NCiEtfHxtYWRlYnlzb2ZhLmNvbQohLXx8bWFkZW1vaXNlbGxl 387 | cm9ib3QuY29tCiEtfHxtYXNhbWl4ZXMuY29tCiEtfHx3d3cubWV0YW11c2UubmV0 388 | CiEtfHxibG9nLm1ldGFzcGxvaXQuY29tCiEtfHxtaWxhemkuY29tCiEtfHx3d3cu 389 | bWluaXdlYXRoZXIuY29tCiEtfHx0d2l0dGVyLm1pc3NpdS5jb20KIS18fHBsdXJr 390 | dG9wLWJ1dHRvbi5tbWRheXMuY29tCiEtfHxmZWVkcy5tb2JpbGVyZWFkLmNvbQoh 391 | LXx8d3d3Lm1vZGVybml6ci5jb20KIS18fHd3dy5tb2RrLml0CiEtfHxteXR3aXNo 392 | aXJ0LmNvbQohLU4KIS18fGJsb2cubmV0ZmxpeC5jb20KIS18fGJsb2cubmloaWxv 393 | Z2ljLmRrCiEtfHxudGxrLm9yZwohLXx8bnZxdWFuLm9yZwohLXx8bm9nb29kYXRj 394 | b2RpbmcuY29tCiEtfHxibG9nLm5vdGRvdC5uZXQKIS18fHd3dy5ub3RpZnkuaW8K 395 | IS1PCiEtfHxibG9nLm9idmlvdXMuY29tCiEtfHxvbmViaWdmbHVrZS5jb20KIS18 396 | fG92ZXJzdGltdWxhdGUuY29tCiEtUAohLXx8cGNnZWVrYmxvZy5jb20KIS18fGZl 397 | ZWRzLnBkZmNobS5uZXQKIS18fGZlZWRzLnBlb3BsZS5jb20KIS18fGJsb2cucGVy 398 | c2lzdGVudC5pbmZvCiEtfHxjaHJvbWUucGxhbnRzdnN6b21iaWVzLmNvbQohLXx8 399 | cG9ydGFibGVzb2Z0Lm9yZy5ydQohLXx8cHJhc2FubmF0ZWNoLm5ldAohLXx8dGFs 400 | ay5uZXdzLnB0cy5vcmcudHcKIS18fHB5dGhvbi1leGNlbC5vcmcKIS1RCiEtUgoh 401 | LXx8ci1jaGFydC5jb20KIS18fHJhbWVzaHN1YnJhbWFuaWFuLm9yZwohLXx8cmFw 402 | aWQucGsKIS18fGJsb2cucmVkZGl0LmNvbQohLXx8YmxvZy5yZW5hbnNlLmNvbQoh 403 | LXx8ZmVlZHMucmV1dGVycy5jb20KIS18fHJvYmVydG1hby5jb20KIS18fHd3dy5y 404 | b21lby1mb3h0cm90LmNvbQohLVMKIS18fHNhbG1peXVjay5jb20KIS18fHNhbXNh 405 | bC5jb20KIS18fGJsb2cuc2VlbWluZ2xlZS5jb20KIS18fGJsb2cuc2Zsb3cuY29t 406 | CiEtfHxibG9nLnNpZ2ZwZS5jb20KIS18fHNpbXBsZXRleHQud3MKIS18fHd3dy5z 407 | a3VscHQub3JnCiEtfHxyc3Muc2xhc2hkb3Qub3JnCiEtfHxzbmlwcGV0c2FwcC5j 408 | b20KIS18fHcuc25zLmx5CiEtfHx3d3cuc29jaWFsbm1vYmlsZS5jb20KIS18fHd3 409 | dy5zb2NpYWx3aG9pcy5jb20KIS18fHNwaXJpdGpiLm9yZwohLXx8c3Nib29rLmNv 410 | bQohLXx8c3NoZm9yd2FyZGluZy5jb20KIS18fHN0YXRpb25lcmlhLmNvbQohLXx8 411 | c3Vuamlkb25nLm5ldAohLXx8c3luaXVtc29mdHdhcmUuY29tCkBAfHxkb3dubG9h 412 | ZC5zeW5pdW1zb2Z0d2FyZS5jb20KIS1UCiEtfHx0YWd4ZWRvLmNvbQohLXx8Ymxv 413 | Zy50YXRvZWJhLm9yZwohLXx8d3d3LnRlY2hmb2IuY29tCiEtfHx0ZWFjaHBhcmVu 414 | dHN0ZWNoLm9yZwohLXx8dGhlOHBlbi5jb20KIS18fHRoZWlwaG9uZXdpa2kuY29t 415 | CiEtfHxibG9nLnRoZXNpbGVudG51bWJlci5tZQohLXx8dGhlc3BvbnR5LmNvbQoh 416 | LXx8dGhldWx0cmFsaW54LmNvbQohLXx8YmxvZy50aGluay1hc3luYy5jb20KIS18 417 | fHRvcm5hZG93ZWIub3JnCiEtfHx0cmFuc3BhcmVudHVwdGltZS5jb20KIS18fHRy 418 | aWFuZ3VsYXRpb25ibG9nLmNvbQohLXx8YmxvZy50c3VuYW5ldC5uZXQKIS18fGVu 419 | LnR1eGVyby5jb20KIS18fHR3YXp6dXAuY29tCiEtfHx0d2VldHN3ZWxsLmNvbQoh 420 | LXx8dHdpYmVzLmNvbQohLXx8YXJ0LnR3Z2cub3JnCiEtfHx0d2l2ZXJ0LmNvbQoh 421 | LVUKfGh0dHA6Ly91YjAuY2MKIS18fGpvbm55LnVidW50dS10dy5uZXQKIS18fGJs 422 | b2cudW1vbmtleS5uZXQKIS1WCiEtfHx0cC52YmFwLmNvbS5hdQohLXx8d3d3LnZp 423 | cnR1b3Vzcm9tLmNvbQohLXx8YmxvZy52aXNpYm90ZWNoLmNvbQohLVcKIS18fHdh 424 | dmVwcm90b2NvbC5vcmcKIS18fHd3dy53YXZlc2FuZGJveC5jb20KIS18fHdlYmZl 425 | ZS5vcmcucnUKIS18fGJsb2cud2VibXByb2plY3Qub3JnCiEtfHx3ZWJ1cGQ4Lm9y 426 | ZwohLXx8d3d3LndoYXRicm93c2VyLm9yZwohLXx8d3d3LndoZXJlZG95b3Vnby5u 427 | ZXQKIS18fHdpbGxoYWlucy5jb20KIS18fGZlZWRzLndpcmVkLmNvbQohLXx8d2lz 428 | ZW1hcHBpbmcub3JnCndvenkuaW4KIS18fHdvenkuaW4vCiEtfHxibG9nLnd1bmRl 429 | cmNvdW50ZXIuY29tCiEtWAohLXx8eGRlbHRhLm9yZwohLXx8eGlhb2dhb3ppLm9y 430 | ZwohLXx8eGlsb3UudXMKIS18fHh6eS5vcmcucnUKIS1ZCiEtfHx5b29wZXIuYmUK 431 | IS18fHRzb25nLnl1bnhpLm5ldAohLVoKCiEtLS0tLS0tLS0tLS0tR29vZ2xlIFNl 432 | YXJjaC0tLS0tCkBAfHxpcHY2Lmdvb2dsZS5jb20KLmdvb2dsZS4qL2NvbXBsZXRl 433 | L3NlYXJjaAovc2VhcmNoP3E9Y2FjaGUKL3NlYXJjaCUzRnElM0RjYWNoZQolMkZz 434 | ZWFyY2glM0ZxJTNEY2FjaGUKZ29vZ2xlKnNlYXJjaCpxPWNhY2hlCiEtLmdvb2ds 435 | ZS4qMzAxCi5nb29nbGUuKnNlYXJjaCo4OTY0Ci5nb29nbGUuKmdmdwouZ29vZ2xl 436 | LipncmVhdCpmaXJld2FsbAouZ29vZ2xlLipwcm90ZXN0KjE5ODkKLmdvb2dsZS4q 437 | c2VhcmNoKlRhbmttYW4KLmdvb2dsZS4qdGJtPW1ibAouZ29vZ2xlLip0Ym0lM0Rt 438 | YmwKLmdvb2dsZS4qc2VhcmNoKnRicz1tYmwKLmdvb2dsZS4qc2VhcmNoKnRicyUz 439 | RG1ibAouZ29vZ2xlLip0YnM9cWRyCi5nb29nbGUuKnRicyUzRHFkcgouZ29vZ2xl 440 | Lip0YnM9cmx0bQouZ29vZ2xlLip0YnMlM0RybHRtCi5nb29nbGUuKlRpYW5hbm1l 441 | bgouZ29vZ2xlLipUaWJldGFuKmluZGVwZW5kZW5jZQohLS1CZWkgR3VvIFpoaSBD 442 | aHVuCi5nb29nbGUqc2VhcmNoKiVFNSU4QyU5NyVFNSU5QiVCRCVFNCVCOSU4QiVF 443 | NiU5OCVBNQohLS1EYSBMYWkgTGEgTWEKLmdvb2dsZS5jb20qJUU4JUJFJUJFJUU4 444 | JUI1JTk2JUU1JTk2JTg3JUU1JTk4JTlCCiEtLURhaSBMaS9Qcm94eQoqLmdvb2ds 445 | ZS5jb20qJUU0JUJCJUEzJUU3JTkwJTg2Ci5nb29nbGUuKmZhY2Vib29rCiEtLUZh 446 | biBRaWFuZwouZ29vZ2xlLiolRTclQkYlQkIlRTUlQTIlOTkKIS0tR2FvIFpoaSBT 447 | aGVuZwouZ29vZ2xlLiolRTklQUIlOTglRTYlOTklQkElRTYlOTklOUYKIS0tR2Ug 448 | TWluZwouZ29vZ2xlLiolRTklOUQlQTklRTUlOTElQkQKIS0tR29uZyBDaGFuCi5n 449 | b29nbGUuKiVFNSU4NSVCMSVFNCVCQSVBNwohLS1HdWFuIEppYW4gU2hpIEtlCi5n 450 | b29nbGUuKiVFNSU4NSVCMyVFOSU5NCVBRSVFNiU5NyVCNiVFNSU4OCVCQgohLS1H 451 | dWFuZyBDaGFuZwouZ29vZ2xlLiolRTUlQjklQkYlRTUlOUMlQkEKIS0tR3VvIEpp 452 | YSBGYW5nIEh1byBRaWFuZyBaaGkgRnUKLmdvb2dsZS4qc2VhcmNoKiVFNSU5QiVC 453 | RCVFNSVBRSVCNiVFOSU5OCVCMiVFNyU4MSVBQiVFNSVBMiU5OQohLS1KaSBaaGUg 454 | V3UgSmlhbmcgSmllCi5nb29nbGUuKiVFOCVBRSVCMCVFOCU4MCU4NSVFNiU5NyVB 455 | MCVFNyU5NiU4NiVFNyU5NSU4QwohLS1KaWEgYmFvCi5nb29nbGUuKiVFNSVBRSVC 456 | NiVFNSVBRSU5RAohLS1KaW4gVGFvCi5nb29nbGUuKi9zZWFyY2gqJUU5JTk0JUE2 457 | JUU2JUI2JTlCCiEtLUppbiBQaW5nCi5nb29nbGUuKiVFOCVCRiU5MSVFNSVCOSVC 458 | MwohLS1LdSBYaW5nCnNlYXJjaColRTklODUlQjclRTUlODglOTEKIS0tTGl1IFFp 459 | Ci5nb29nbGUuKnNlYXJjaColRTUlODglOTglRTYlQjclODcKIS0tTGl1IFNpCi5n 460 | b29nbGUuKiVFNSU4NSVBRCVFNSU5QiU5QgohLS1MdSBYaQouZ29vZ2xlLiolRTkl 461 | QjIlODElRTYlOTglOTUKIS0tTWEgS2FpCi5nb29nbGUuKiVFOSVBOSVBQyVFNSU4 462 | NyVBRgohLS1NYWkgRGFuZyBMYW8gfCBNY0RvbmFsZAouZ29vZ2xlLiolRTklQkEl 463 | QTYlRTUlQkQlOTMlRTUlOEElQjMKIS0tTWVuZyBHdStTaGkgV2VpCi5nb29nbGUu 464 | KiVFNSU4NiU4NSVFOCU5MiU5OSolRTclQTQlQkElRTUlQTglODEKIS0tTWVuZyBK 465 | aWFuIFpodQouZ29vZ2xlLiolRTUlQUQlOUYlRTUlQkIlQkElRTYlOUYlQjEKIS0t 466 | TWVuZyBZaW5nIFdlaSBNaW5nIEh1Ci5nb29nbGUuKiVFNiVBMiVBNiVFOCU5MCVB 467 | NiVFNiU5QyVBQSVFNSU5MCU4RCVFNiVCOSU5NgohLS1NbyBMaQouZ29vZ2xlLiol 468 | RTglOEMlODklRTglOEUlODkKIS0tTmEgTWkgQmkgWWEKLmdvb2dsZS5jb20qJUU3 469 | JUJBJUIzJUU3JUIxJUIzJUU2JUFGJTk0JUU0JUJBJTlBCiEtLU51byBCZWkgRXIg 470 | SGUgUGluZyBKaWFuZyAvIE5vYmVsIFBlYWNlIFByaXplCi5nb29nbGUuKiVFOCVB 471 | RiVCQSVFOCVCNCU5RCVFNSVCMCU5NCVFNSU5MiU4QyVFNSVCOSVCMyVFNSVBNSU5 472 | NgohLS1OYW1pYmlhICsgTnVjdGVjaAouZ29vZ2xlLmNvbSpzZWFyY2gqbmFtaWJp 473 | YSpudWN0ZWNoCiEtLVBvIEhhaQouZ29vZ2xlLmNvbSolRTglQkYlQUIlRTUlQUUl 474 | QjMKIS0tUWlhbiBTaGkgSmluIFNoZW5nCi5nb29nbGUuY29tKiVFNSU4OSU4RCVF 475 | NCVCOCU5NiVFNCVCQiU4QSVFNyU5NCU5RgohLS1SaSBKaQouZ29vZ2xlLiolRTYl 476 | OTclQTUlRTglQUUlQjAKIS0tU2FuIFR1aQouZ29vZ2xlLiolRTQlQjglODklRTkl 477 | ODAlODAKIS0tVGFpIFppCi5nb29nbGUuKiVFNSVBNCVBQSVFNSVBRCU5MAohLS1U 478 | YW4gWnVvIFJlbgouZ29vZ2xlLipzZWFyY2gqJUU4JUIwJUFEJUU0JUJEJTlDJUU0 479 | JUJBJUJBCiEtLVRpYW4gQW4gTWVuCmdvb2dsZS5jb20qc2VhcmNoKnEqJUU1JUE0 480 | JUE5JUU1JUFFJTg5JUU5JTk3JUE4CiEtLVRpYW4gTWllCi5nb29nbGUuKnE9JUU1 481 | JUE0JUE5JUU3JTgxJUFECiEtLVR1IE5pIFNpCi5nb29nbGUuKiVFNyVBQSU4MSVF 482 | NSVCMCVCQyVFNiU5NiVBRgouZ29vZ2xlLip0d2l0dGVyCiEtLVdhbmcgWWFuZwou 483 | Z29vZ2xlLmNvbSpzZWFyY2gqJUU2JUIxJUFBJUU2JTk2JUFGCiEtLVdvIE1laSBZ 484 | b3UgRGkgUmVuCmdvb2dsZS5jb20qJUU2JTg4JTkxJUU2JUIyJUExJUU2JTlDJTg5 485 | JUU2JTk1JThDJUU0JUJBJUJBCiEtLVhpIExhaQouZ29vZ2xlLmNvbSolRTclODYl 486 | OTklRTYlOUQlQTUKIS0tWXVlIFl1ZQouZ29vZ2xlLiolRTYlOUMlODglRTYlOUMl 487 | ODgKIS0tWWluZyBEaQouZ29vZ2xlLiolRTUlQkQlQjElRTUlQjglOUQKIS0tWXUg 488 | WmhlbmcgU2hlbmcKLmdvb2dsZS4qc2VhcmNoKiVFNCVCRiU5RSVFNiVBRCVBMyVF 489 | NSVBMyVCMAohLS1ZdWUgSG91IEppIEZlbgouZ29vZ2xlLiolRTklOTglODUlRTUl 490 | OTAlOEUlRTUlOEQlQjMlRTclODQlOUEKIS0tWmUgTWluCi5nb29nbGUuKiVFNiVC 491 | MyVCRCVFNiVCMCU5MQohLS1aaGVuIExpIEJ1Ci5nb29nbGUuKiVFNyU5QyU5RiVF 492 | NyU5MCU4NiVFOSU4MyVBOAohLS1aaGVuIFhpYW5nCi5nb29nbGUuKiVFNyU5QyU5 493 | RiVFNyU5QiVCOAohLS1aaG9uZyBHb25nCi5nb29nbGUuKiVFNCVCOCVBRCVFNSU4 494 | NSVCMQohLS1aaG9uZyBHdW8gWXVhbiBNaW4gRGEgVG9uZyBNZW5nCi5nb29nbGUu 495 | KiVFNCVCOCVBRCVFNSU5QiVCRCVFNSU4NiVBNCVFNiVCMCU5MSVFNSVBNCVBNyVF 496 | NSU5MCU4QyVFNyU5QiU5RgohLS1aaSBZb3UgTWVuCi5nb29nbGUuY29tKiVFOCU4 497 | NyVBQSVFNyU5NCVCMSVFOSU5NyVBOAohLS1aaSBZb3UgWWEgWm91IERpYW4gVGFp 498 | Ci5nb29nbGUuKnE9JUU4JTg3JUFBJUU3JTk0JUIxJUU0JUJBJTlBJUU2JUI0JUIy 499 | JUU3JTk0JUI1JUU1JThGJUIwCiEtLS0tLVN1cm5hbWVzLS0tLS0KIS0tSGUKLmdv 500 | b2dsZS5jb20vbSolRTglQjQlQkEKLmdvb2dsZS4qL3NlYXJjaColRTglQjQlQkEK 501 | IS0tSHUKLmdvb2dsZS5jb20vbSolRTglODMlQTEKLmdvb2dsZS4qL3NlYXJjaCol 502 | RTglODMlQTEKIS0tSHVhbmcKIS0tLmdvb2dsZS4qL3NlYXJjaColRTklQkIlODQK 503 | IS0tSmlhCi5nb29nbGUuY29tL20qJUU4JUI0JUJFCi5nb29nbGUuKi9zZWFyY2gq 504 | JUU4JUI0JUJFCiEtLUppYW5nCi5nb29nbGUuKiVFNiVCMSU5RgohLS1MaQouZ29v 505 | Z2xlLmNvbS9tKiVFNiU5RCU4RQouZ29vZ2xlLiovc2VhcmNoKiVFNiU5RCU4RQoh 506 | LS1MaXUKLmdvb2dsZS4qL3NlYXJjaColRTUlODglOTgKIS0tV2FuZwouZ29vZ2xl 507 | LiolRTclOEUlOEIKIS0tV2VuCi5nb29nbGUuY29tL20qJUU2JUI4JUE5Ci5nb29n 508 | bGUuKi9zZWFyY2gqJUU2JUI4JUE5CiEtLVd1Ci5nb29nbGUuY29tL20qJUU1JTkw 509 | JUI0Ci5nb29nbGUuKi9zZWFyY2gqJUU1JTkwJUI0CiEtLVhpCi5nb29nbGUuY29t 510 | L20qJUU0JUI5JUEwCi5nb29nbGUuKi9zZWFyY2gqJUU0JUI5JUEwCiEtLVpob3UK 511 | Lmdvb2dsZS5jb20vbSolRTUlOTElQTgKLmdvb2dsZS4qL3NlYXJjaColRTUlOTEl 512 | QTgKCiEtLS0tLS0tLS0tLS0tR29vZ2xlLm90aGVyLS0tLS0KfGh0dHBzOi8vKmRv 513 | Y3MuZ29vZ2xlLmNvbQp8aHR0cHM6Ly8qZHJpdmUuZ29vZ2xlLmNvbQp8aHR0cHM6 514 | Ly9ncm91cHMuZ29vZ2xlLmNvbQp8aHR0cHM6Ly9wbHVzLmdvb2dsZS5jb20KfGh0 515 | dHBzOi8vcGx1c29uZS5nb29nbGUuY29tCi5nb29nbGUuY29tL21vZGVyYXRvcgou 516 | Z29vZ2xlLmNvbSUyRm1vZGVyYXRvcgouZ29vZ2xlLmNvbS9yZWFkZXIvdmlldy9m 517 | ZWVkCi5nb29nbGUuY29tJTJGcmVhZGVyJTJGdmlldyUyRmZlZWQKLmdvb2dsZS5j 518 | b20uaGsvd2VuZGEKLmdvb2dsZS5jb20uaGslMkZ3ZW5kYQp8fGVuY3J5cHRlZC5n 519 | b29nbGUuY29tCmZlZWRwcm94eS5nb29nbGUuY29tCmdyb3Vwcy5nb29nbGUuKmdy 520 | b3VwCmtub2wuZ29vZ2xlLmNvbS9rLy0vMDgvM2poaTF6ZHp2eGozZgpuZXdzLmdv 521 | b2dsZS5jb20uaGsvbndzaHA/aGw9emgtY24mdGFiPXduCnBpY2FzYXdlYi5nb29n 522 | bGUuY29tCnNpdGVzLmdvb2dsZS5jb20KfHxzaXRlcy5nb29nbGUuY29tCnxodHRw 523 | czovL3RhbGtnYWRnZXQuZ29vZ2xlLmNvbS8KdmlkZW8uZ29vZ2xlLmNvbQp3ZWJj 524 | YWNoZS5nb29nbGV1c2VyY29udGVudC5jb20KfHx3ZWJjYWNoZS5nb29nbGV1c2Vy 525 | Y29udGVudC5jb20KYW50aS5hbnRpLmNubi5nb29nbGVwYWdlcy5jb20KfHxmcmVl 526 | Z2F0ZWdldC5nb29nbGVwYWdlcy5jb20KbXlib29va3MuZ29vZ2xlcGFnZXMuY29t 527 | Ci5nb29nbGV2aWRlby5jb20KfHxnc3RhdGljLmNvbQoKIS0tLS0tLS0tLS0tLS0t 528 | LS0tLS0tLS0tLS0tSEgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQp8fGgtY2hp 529 | bmEub3JnCmgxbjFjaGluYS5vcmcKLmhhY2tlbi5jYy9iYnMKfHxoYWNrdGhhdHBo 530 | b25lLm5ldApoYWhsby5jb20KfHxoYWtrYXR2Lm9yZy50dwouaGFudW55aS5jb20K 531 | fHxoYXNhb3dhbGwuY29tCkBAfHxoYXlnby5jb20KfHxoZHR2Yi5uZXQKfHxoZWFy 532 | dHlpdC5jb20KLmhlY2FpdG91Lm5ldAp8fGhlY2FpdG91Lm5ldAouaGVjaGFqaS5j 533 | b20KfHxoZWNoYWppLmNvbQp8fGhlbGxvcXVlZXIuY29tCmhlbGxvdHh0LmNvbQp8 534 | fGhlbGxvdHh0LmNvbQp8fGh0eHQuaXQvCi5oZWxsb3VrLm9yZy9mb3J1bS9sb2Zp 535 | dmVyc2lvbgouaGVscGVhY2hwZW9wbGUuY29tCnx8aGVscGVhY2hwZW9wbGUuY29t 536 | CgohLS1IZXJva3UKfHxoZXJva3UuY29tCnx8YnJhbmNoLmNvbQp8fGF3YXJkd2lu 537 | bmluZ2Zqb3Jkcy5jb20KfHxmdXR1cmVtZS5vcmcKfHxnZXRjbG91ZGFwcC5jb20K 538 | fHxjbC5seQpAQHx8Zi5jbC5seQp8fGdldHNtYXJ0bGlua3MuY29tCnx8Z2l0LXNj 539 | bS5jb20KfHxsZXNzY3NzLm9yZwp8fGxpc3QubHkKfHxtYXhnaWYuY29tCnx8b3Zl 540 | cmxhcHIuY29tCnx8cGVlcnBvbmcuY29tCnx8cG9zZS5jb20KfHxydWJ5aW5zdGFs 541 | bGVyLm9yZwp8fHNhbXNvZmYuZXMKfHxzZW5kb2lkLmNvbQp8fHNwZWNrbGVhcHAu 542 | Y29tCnx8c3R1ZmZpbXJlYWRpbmcubmV0Cnx8dG9tYXlrby5jb20KfHx0d3QuZm0K 543 | fHx2aWV3cy5mbQoKfHxoZXVuZ2tvbmdkaXNjdXNzLmNvbQphcHAuaGV5d2lyZS5j 544 | b20KaGlkZWNsb3VkLmNvbS9ibG9nLzIwMDgvMDcvMjkvZnVjay1iZWlqaW5nLW9s 545 | eW1waWNzLmh0bWwKLmhpZGVteWFzcy5jb20KfHxoaWRlbXlhc3MuY29tCi5oaWhp 546 | Zm9ydW0uY29tCnxodHRwOi8vaGloaWZvcnVtLmNvbQouaGlnZncuY29tCnx8aGln 547 | aHJvY2ttZWRpYS5jb20KdGltZXMuaGluZXQubmV0Ci5oamNsdWIuaW5mbwp8fGhq 548 | Y2x1Yi5pbmZvCi5oay1wdWIuY29tL2ZvcnVtCnxodHRwOi8vaGstcHViLmNvbS9m 549 | b3J1bQouaGszMjE2OC5jb20KfHxoazMyMTY4LmNvbQphcHAuaGthdHZuZXdzLmNv 550 | bS92MwouaGtiZi5vcmcKaGtkYXkubmV0Ci5oa2RhaWx5bmV3cy5jb20uaGsvY2hp 551 | bmEucGhwCi5oa2VqLmNvbS90ZW1wbGF0ZS9mb3J1bQouaGtlcGMuY29tL2ZvcnVt 552 | L3ZpZXd0aHJlYWQucGhwP3RpZD0xMTUzMzIyCmdsb2JhbC5oa2VwYy5jb20qZm9y 553 | dW0KaGtnb2xkZW4uY29tCi5oa2dyZWVucmFkaW8ub3JnL2hvbWUKLmhraGVhZGxp 554 | bmUuY29tKmJsb2cKLmhraGVhZGxpbmUuY29tL2luc3RhbnRuZXdzCmhramMuY29t 555 | Ci5oa2pwLm9yZwouaGtyZXBvcnRlci5jb20KfHxoa3JlcG9ydGVyLmNvbQp8fGhr 556 | em9uZS5vcmcKYXBwcy5obG9saS5uZXQvZ2Z3dHViZQpobmpoai5jb20KfHxobmpo 557 | ai5jb20KfHxkZXJla2hzdS5ob21laXAubmV0CmhvbmdtZWltZWkuY29tCmhvb3Rz 558 | dWl0ZS5jb20KfHxob290c3VpdGUuY29tCmhvdGZpbGUuY29tL2RsCmhvdHBvdC5o 559 | awp8fGhvdHNwb3RzaGllbGQuY29tCnx8aG91Z2FpZ2UuY29tCi5ocWNkcC5vcmcK 560 | fHxocWNkcC5vcmcKaHJpY2hpbmEub3JnCi5ocncub3JnCnx8aHNqcC5uZXQKfHxo 561 | dG1sZG9nLmNvbQouaHVhbmdodWFnYW5nLm9yZwp8fGh1YW5naHVhZ2FuZy5vcmcK 562 | fHxodWdvcm95LmV1CnQuaHVoYWl0YWkuY29tCi5odWx1LmNvbQp8fGh1bmdlcnN0 563 | cmlrZWZvcmFpZHMub3JnCnx8aHVwaW5nLm5ldAp8fGh1dGlhbnlpLm5ldAp8fGh3 564 | aW5mby5jb20KCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLUlJLS0tLS0tLS0t 565 | LS0tLS0tLS0tLS0tLS0tLS0KfHxpMnAyLmRlLwp8fGkycnVubmVyLmNvbQppYmli 566 | bGlvLm9yZy9wdWIvcGFja2FnZXMvY2NpYwp8fGlibG9nc2Vydi1mLm5ldApibG9n 567 | cy5pY2Vyb2NrZXQuY29tL3RhZwp8fGljbC1maS5vcmcKfHxpY29ucGFwZXIub3Jn 568 | CncuaWRhaXdhbi5jb20vZm9ydW0KLmlkZW50aS5jYQp8fGlkZW50aS5jYQouaWRv 569 | dWdhLmNvbQpmb3J1bS5pZHNhbS5jb20KLmlkdi50dwouaWVkMmsubmV0Cnx8aWYt 570 | bm90LXRydWUtdGhlbi1mYWxzZS5jb20KLmlmYW5yLmNvbS84NTcKLmlmY3NzLm9y 571 | Zwp8fGlmY3NzLm9yZwpjeWRpYS5pZnVja2dmdy5jb20KfHxjeWRpYS5pZnVja2dm 572 | dy5jb20KfHxhbnRpZHJtLmhwZy5pZy5jb20uYnIKaWdmdy50awp8fGlnbml0ZWRl 573 | dHJvaXQubmV0Cnx8aWxsdXNpb25mYWN0b3J5LmNvbQp8fGlsb3ZlODAuYmUKfHxp 574 | bS50dgpAQHx8bXl2bG9nLmltLnR2Cnx8aW1hZ2VmbGVhLmNvbQppbWFnZXNoYWNr 575 | LnVzCnx8aW1hZ2V2ZW51ZS5jb20KLmltZGIuY29tCnxodHRwOi8vaW1kYi5jb20K 576 | LmltZy5seQp8fGltZy5seQouaW1rZXYuY29tCnx8aW1rZXYuY29tCi5pbWxpdmUu 577 | Y29tCnx8aW5jcmVkaWJveC5mcgouaW5tZWRpYWhrLm5ldAp8fGlubWVkaWFoay5u 578 | ZXQKfHxpbnRlcmZhY2VhZGRpY3Rpb24uY29tCnx8aW50ZXJuYXRpb25hbHJpdmVy 579 | cy5vcmcKaW50ZXJuZXRmcmVlZG9tLm9yZwp8fGludGVybmV0cG9wY3VsdHVyZS5j 580 | b20KfHxpcGhvbmVoYWNrcy5jb20KfHxpcGhvbml4LmZyCnx8aXBpY3R1cmUucnUK 581 | aXBvYmFyLmNvbQp8fGlwcG90di5jb20KfHxpcm9uaWNzb2Z0d2FyZS5jb20KfHxp 582 | cm9ucHl0aG9uLm5ldAouYmV0YS5pc2V0LmNvbS50dy9mb3J1bQpodHRwOi8vYmV0 583 | YS5pc2V0LmNvbS50dy9mb3J1bQpmb3J1bS5pc2V0LmNvbS50dwouaXNsYW0ub3Jn 584 | LmhrCi5pc2FhY21hby5jb20KfHxpc2FhY21hby5jb20KfHxpc2dyZWF0Lm9yZwp8 585 | fGlzbXByb2Zlc3Npb25hbC5uZXQKaXNvaHVudC5jb20KYmxvZy5pc3RlZi5pbmZv 586 | LzIwMDcvMTAvMjEvbXllbnR1bm5lbAppdGFib28uaW5mbwp8fGl0YWJvby5pbmZv 587 | Cml0aGVscC5pdGhvbWUuY29tLnR3L3F1ZXN0aW9uLzEwMDA3MDk0Ci5pdHdlZXQu 588 | bmV0CnxodHRwOi8vaXR3ZWV0Lm5ldAouaXU0NS5jb20KeXkuaXlhdG91LmNvbS9h 589 | cmNoaXZlcy8xMDQyCi5pemFvYmFvLnVzCnx8Z21vem9tZy5pemlob3N0Lm9yZwou 590 | aXpsZXMubmV0CgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1KSi0tLS0tLS0t 591 | LS0tLS0tLS0tLS0tLS0tLS0tCmJsb2cuamFja2ppYS5jb20Kd2lsbGlhbWxvbmcu 592 | amFpa3UuY29tCmplYW55aW0uY29tCnx8amdvb2RpZXMuY29tCnx8amlhb3lvdTgu 593 | Y29tCi5qaWVodWEuY3oKfHxoay5qaWVwYW5nLmNvbQp8fHR3LmppZXBhbmcuY29t 594 | CmppZXNoaWJhb2Jhby5jb20KLmppbW9wYXJ0eS5jb20KfGh0dHA6Ly9qaW1vcGFy 595 | dHkuY29tCnpoYW8uamluaGFpLmRlCmppbmdwaW4ub3JnCnx8amluZ3Bpbi5vcmcK 596 | YWMuamlydWFuLm5ldAp8fGppdG91Y2guY29tCmprZm9ydW0ubmV0Cnx8am9hY2hp 597 | bXMub3JnCnx8am9ic28udHYKfHxqb2VlZGVsbWFuLmNvbQp8fGpvdXJuYWxvZmRl 598 | bW9jcmFjeS5vcmcKanBvcGZvcnVtLm5ldAp0Lmp0ZWV0LmNvbQp8fGp1bGllcmV5 599 | Yy5jb20KfHxqdW5hdXphLmNvbQouanVuZWZvdXJ0aC0yMC5uZXQKfHxqdW5lZm91 600 | cnRoLTIwLm5ldAouanVzdGluLnR2Cmp1c3R0cmlzdGFuLmNvbQp8fGp3bXVzaWMu 601 | b3JnCkBAfHxtdXNpYy5qd211c2ljLm9yZwouanl4Zi5uZXQKCiEtLS0tLS0tLS0t 602 | LS0tLS0tLS0tLS0tLS0tLUtLLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KfHxr 603 | YS13YWkuY29tCi5rYWd5dW9mZmljZS5vcmcudHcKfHxrYWd5dW9mZmljZS5vcmcu 604 | dHcKLmthaXl1YW4uZGUKa2FuemhvbmdndW8uY29tCnx8a2FyYXlvdS5jb20KfHxr 605 | Y3NvZnR3YXJlcy5jb20KLmtlY2hhcmEuY29tCi5rZWVwYW5kc2hhcmUuY29tL3Zp 606 | c2l0L3Zpc2l0X3BhZ2UucGhwP2k9Njg4MTU0Ci5rZW5kaW5jb3MubmV0Ci5rZW5l 607 | bmdiYS5jb20KfHxrZW5lbmdiYS5jb20Kd2lraS5rZXNvLmNuL0hvbWUKLmtobXVz 608 | aWMuY29tLnR3CmJicy5raW15LmNvbS50dwpraW5naG9zdC5jb20KLmtpbmdzdG9u 609 | ZS5jb20udHcKLmtub3dsZWRnZXJ1c2guY29tL2tyL2VuY3ljbG9wZWRpYQp8fGtv 610 | ZGluZ2VuLmNvbQpAQHx8d3d3LmtvZGluZ2VuLmNvbQp8fGtvbXBvemVyLm5ldAp8 611 | fGtvb2xzb2x1dGlvbnMuY29tCi5rb29ybmsuY29tCnx8a29vcm5rLmNvbQoua3Vp 612 | Lm5hbWUvZXZlbnQKa3VuLmltCnx8a3VydG11bmdlci5jb20Ka3Vzb2NpdHkuY29t 613 | Cmt3b25nd2FoLmNvbS5teQoua3plbmcuaW5mbwp8fGt6ZW5nLmluZm8KCiEtLS0t 614 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLUxMLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 615 | LS0KbGFkYnJva2VzLmNvbQoubGFsdWxhbHUuY29tCmxhb2dhaS5vcmcKfHxsYW9n 616 | YWkub3JnCmxhb21pdS5jb20KLmxhb3lhbmcuaW5mbwp8aHR0cDovL2xhb3lhbmcu 617 | aW5mbwp8fGxhcHRvcGxvY2tkb3duLmNvbQpsYXRlbGluZW5ld3MuY29tCnx8bGVl 618 | Y2hldWt5YW4ub3JnCnx8bGVud2hpdGUuY29tCmJsb2cubGVzdGVyODUwLmluZm8K 619 | LmxldHNjb3JwLm5ldAp8fGxldHNjb3JwLm5ldApsaWFuc2kub3JnCi5saWFueXVl 620 | Lm5ldAp8fGxpYW93YW5neGl6YW5nLm5ldAoubGlhb3dhbmd4aXphbmcubmV0Cnx8 621 | bGliZXJhbC5vcmcuaGsKbGliZXJ0eXRpbWVzLmNvbS50dwoubGlkZWNoZW5nLmNv 622 | bS9ibG9nL2Z1Y2tpbmctZ2Z3CmFiaXRuby5saW5waWUuY29tL3VzZS1pcHY2LXRv 623 | LWZ1Y2stZ2Z3Ci5saW5nbGluZ2ZhLmNvbQp8fGFwaS5saW5rc2FscGhhLmNvbQp8 624 | fGFwaWRvY3MubGlua3NhbHBoYS5jb20KfHx3d3cubGlua3NhbHBoYS5jb20KfHxo 625 | ZWxwLmxpbmtzYWxwaGEuY29tCnx8bGludXgtZW5naW5lZXIubmV0Cnx8bGludXhj 626 | b25maWcub3JnCnx8bGludXhyZXZpZXdzLm9yZwpsaW51eHRveS5vcmcvYXJjaGl2 627 | ZXMvaW5zdGFsbGluZy13ZXN0LWNoYW1iZXItb24tdWJ1bnR1Ci5saXB1bWFuLmNv 628 | bQp8fGxpdWRlanVuLmNvbQoubGl1aGFueXUuY29tCi5saXVqaWFuc2h1LmNvbQp8 629 | fGxpdWppYW5zaHUuY29tCmxpdXhpYW90b25nLmNvbQp8fGxpdXhpYW90b25nLmNv 630 | bQpsaXUubHUKLmxpdmVzdGF0aW9uLmNvbQp8fGxpdmluZ29ubGluZS51cwoKIS0t 631 | LS0tLS0tLS0tLS1saXZlIHNwYWNlcy0tLS0tCmNjOTAwNy5zcGFjZXMubGl2ZS5j 632 | b20KY2hlbnllaGFvLnNwYWNlcy5saXZlLmNvbQpjaGluYS1ncmVlbi1wYXJ0eS5z 633 | cGFjZXMubGl2ZS5jb20KZmxvd2Vyb2ZoYXBwaW5lc3Muc3BhY2VzLmxpdmUuY29t 634 | Cmd1ZmVuZzUyMS5zcGFjZXMubGl2ZS5jb20KaG9uZW9uZXQuc3BhY2VzLmxpdmUu 635 | Y29tCmh1YWppYWRpLnNwYWNlcy5saXZlLmNvbQpodWppYWNoaW5hLnNwYWNlcy5s 636 | aXZlLmNvbQppZWVtZGFpLnNwYWNlcy5saXZlLmNvbQpwb3J0aXMyMS5zcGFjZXMu 637 | bGl2ZS5jb20KcHJvZ3JhbS10aGluay5zcGFjZXMubGl2ZS5jb20Kc2luZ3VsYXJp 638 | dHlzLnNwYWNlcy5saXZlLmNvbQpzaXlpMTIzMTIzMTIzLnNwYWNlcy5saXZlLmNv 639 | bQpzdWJsZXhpY2FsLnNwYWNlcy5saXZlLmNvbQp0d2l0ZXNlLnNwYWNlcy5saXZl 640 | LmNvbQp3YW5neWk2NC5zcGFjZXMubGl2ZS5jb20Kd2VueXVuY2hhby5zcGFjZXMu 641 | bGl2ZS5jb20Kd2lsbGlhbWxvbmcuc3BhY2VzLmxpdmUuY29tCnlhbmdoZW5nanVu 642 | LnNwYWNlcy5saXZlLmNvbQp5ZXppbWFyeS5zcGFjZXMubGl2ZS5jb20KemVuZ2pp 643 | bnlhbi5zcGFjZXMubGl2ZS5jb20KemhsbGcuc3BhY2VzLmxpdmUuY29tCgp8fGxp 644 | dmV2aWRlby5jb20KLmxpdmV2aWRlby5jb20KbGl6aGl6aHVhbmdiaS5jb20KfHxs 645 | b2NrZG93bi5jb20KbG9nYm90Lm5ldAp8fGxvZ21pa2UuY29tCi5sb25naGFpci5o 646 | awp8fGxvbmd0ZXJtbHkubmV0Ci5sb29rYXRnYW1lLmNvbQp8aHR0cDovL2xvb2th 647 | dGdhbWUuY29tCnx8bG9va2luZ2dsYXNzdGhlYXRyZS5vcmcKfHxsb29rcGljLmNv 648 | bQp8fGxyZnouY29tCi5sc2Qub3JnLmhrCnx8bHNkLm9yZy5oawpsc2ZvcnVtLm5l 649 | dAoubHVwbS5vcmcKfHxsdXBtLm9yZwpsdmhhaS5vcmcKfHxsdmhhaS5vcmcKCiEt 650 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLU1NLS0tLS0tLS0tLS0tLS0tLS0tLS0t 651 | LS0tLS0KbS10ZWFtLmNjL2ZvcnVtCnd3dy5tYWNyb3Zwbi5jb20KfHxtYWQtYXIu 652 | Y2gKLm1haWlvLm5ldAptYWlsLWFyY2hpdmUuY29tCm1hbGF5c2lha2luaS5jb20v 653 | Y24KfHxtYWtlbXltb29kLmNvbQp8fG1hcmluZXMubWlsCm1hcmttYWlsLm9yZypt 654 | ZXNzYWdlCnx8bWFydGF1LmNvbQptYXJ1dGEuYmUvZm9yZ2V0Ci5tYXJ4aXN0LmNv 655 | bQp8fG1hcnhpc3QubmV0Ci5tYXJ4aXN0cy5vcmcvY2hpbmVzZQptYXNoYWJsZS5j 656 | b20KfHxtYXNoYWJsZS5jb20KfHxtYXRhaW5qYS5jb20KfHxtYXRoaWV3LWJhZGlt 657 | b24uY29tCm1heWltYXlpLmNvbQoubWQtdC5vcmcKfHxtZC10Lm9yZwoubWVkaWFm 658 | aXJlLmNvbS8/Cnx8bWVldHVwLmNvbQpsaWNoMzU1Lm1lZ2FieWV0Lm5ldC8lRTcl 659 | QkQlOTElRTclQkIlOUMlRTclQTUlOUUlRTUlODUlQkQlRTUlOEYlQTQlRTklQjgl 660 | QkQlRTglQkYlODElRTclQTclQkIlRTglQUUlQjAKLm1lZ2Fwb3JuLmNvbQp8fG1l 661 | Z2Fyb3RpYy5jb20KfHxtZWdhdXBsb2FkLmNvbQoubWVnYXVwbG9hZC5jb20vP2Q9 662 | Cm1lZ2F2aWRlby5jb20KfHxtZWd1cmluZWx1a2EuY29tCm1laXJpeGlhb2NoYW8u 663 | Y29tCnx8bWVsb24tcGVhY2guY29tCm1lbWVkaWEuY24KLm1lc290dy5jb20vYmJz 664 | Ci5tZXRhY2FmZS5jb20KfHxtZXRlb3JzaG93ZXJzb25saW5lLmNvbQptaHJhZGlv 665 | Lm9yZwp8fG1pY2hhZWxtYXJrZXRsLmNvbQptaWRkbGUtd2F5Lm5ldAoubWloay5o 666 | ay9mb3J1bQptaWh1YS5vcmcKLm1pbWl2aXAuY29tCi5taW5naHVpLm9yZwptaW5n 667 | cGFvLmNvbQoubWluZ3Bhb21vbnRobHkuY29tCm1pbmdwYW9uZXdzLmNvbQoubWlu 668 | Z3Bhb255LmNvbQoubWluZ3Bhb3NmLmNvbQoubWluZ3Bhb3Rvci5jb20KLm1pbmdw 669 | YW92YW4uY29tCi5taW5pbm92YS5vcmcvdG9yLzI1OTM1MDMKLm1pbnpodWh1YS5u 670 | ZXQKfHxtaW56aHVodWEubmV0Cm1pbnpodXpob25nZ3VvLm9yZwp8fG1pcm9ndWlk 671 | ZS5jb20KbWlycm9yYm9va3MuY29tCm1pdGJicy5jb20KLm1peGVyby5jb20KfHxt 672 | aXhlcm8uY29tCi5taXh4LmNvbQp8fG1peHguY29tCnx8bWl6em1vbmEuY29tCi5t 673 | azUwMDAuY29tCi5tbGNvb2wuY29tCnx8bW1hYXh4LmNvbQpwbHVya3RvcC5tbWRh 674 | eXMuY29tCi5tbW1jYS5jb20KfHxtb2JhdGVrLm5ldAoubW9iaWxlMDEuY29tCnx8 675 | bW9iaWxld2F5cy5kZQoubW9ieXBpY3R1cmUuY29tCnxodHRwOi8vbW9ieS50bwp8 676 | fG1vZy5jb20KfHxtb25kZXgub3JnCmMxNTIyLm1vb28uY29tCmJicy5tb3JiZWxs 677 | LmNvbQp8fG1vcm5pbmdzdW4ub3JnCnx8bW92YWJsZXR5cGUuY29tCnx8bW92aWVm 678 | YXAuY29tCnx8d3d3Lm1venR3Lm9yZwp8fG1wLwp8fG1wZXR0aXMuY29tCm1waW5l 679 | d3MuY29tCm1ydHdlZXQuY29tCnx8bXJ0d2VldC5jb20KbmV3cy5tc24uY29tLnR3 680 | Ci5tc2d1YW5jaGEuY29tCnx8bXRocnVmLmNvbQp8fG11bHRpcGx5LmNvbQpmb3J1 681 | bS5teW1hamkuY29tCm11bHRpdXBsb2FkLmNvbQp8fG11b3VqdS5jb20KfHxtdXpp 682 | LmNvbQp8fG11emkubmV0Cnx8bXg5ODEuY29tCmZvcnVtLm15OTAzLmNvbQp8fG15 683 | YXVkaW9jYXN0LmNvbQoubXlhdi5jb20udHcvYmJzCnx8YmJzLm15Y2hhdC50bwp8 684 | fG15Y2hpbmFteWhvbWUuY29tCi5teWNoaW5hbXlob21lLmNvbQp8fHd3dy5teWNv 685 | dWxkLmNvbQp8fG15ZWNsaXBzZWlkZS5jb20KLm15Zm9ydW0uY29tLmhrCnx8bXlm 686 | b3J1bS5jb20uaGsKfHxteWZvcnVtLmNvbS51awoubXlmcmVzaG5ldC5jb20KfHxt 687 | eXBhcmFnbGlkaW5nLmNvbQp8fG15cG9wZXNjdS5jb20KbXlzaW5hYmxvZy5jb20K 688 | Lm15c3BhY2UuY29tCiEtLS5ibG9ncy5teXNwYWNlLmNvbQohLS18fGJsb2dzLm15 689 | c3BhY2UuY29tCiEtLXZpZHMubXlzcGFjZS5jb20vaW5kZXguY2ZtP2Z1c2VhY3Rp 690 | b249dmlkcy4KIS0tdmlld21vcmVwaWNzLm15c3BhY2UuY29tCgohLS0tLS0tLS0t 691 | LS0tLS0tLS0tLS0tLS0tLS1OTi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm9s 692 | ZC5uYWJibGUuY29tCnx8bmFpdGlrLm5ldAp8fG5hbXNpc2kuY29tCi5uYW55YW5n 693 | cG9zdC5jb20KfGh0dHA6Ly9uYW55YW5ncG9zdC5jb20KfHxuYXZlZW5zcmluaXZh 694 | c2FuLmNvbQp8fG5hdmljYXQuY29tCi5uYWtpZG8uY29tCnx8bmFraWRvLmNvbQou 695 | bmFvbC5jYQpjeWJlcmdob3N0Lm5hdGFkby5jb20KbmNjd2F0Y2gub3JnLnR3Ci5u 696 | Y2guY29tLnR3Ci5uY24ub3JnCnx8bmNuLm9yZy8KfHxldG9vbHMubmNvbC5jb20K 697 | d3d3Lm5lZC5vcmcKfHxuZWtvc2xvdmFraWEubmV0CnQubmVvbGVlLmNuCm5ldGNv 698 | bG9ueS5jb20KYm9saW4ubmV0ZmlybXMuY29tCnpoLm5ldGxvZy5jb20KbmV0bWUu 699 | Y2MKbmV0d29ya2VkYmxvZ3MuY29tCm5ldmVyZm9yZ2V0ODk2NC5vcmcKbmV3LTNs 700 | dW5jaC5uZXQKLm5ldy1ha2liYS5jb20KLm5ld2NlbnR1cnltYy5jb20KfGh0dHA6 701 | Ly9uZXdjZW50dXJ5bWMuY29tCm5ld2NlbnR1cnluZXdzLmNvbQp8fG5ld2NoZW4u 702 | Y29tCi5uZXdjaGVuLmNvbQoubmV3Z3JvdW5kcy5jb20KLm5ld3Njbi5vcmcKfHxu 703 | ZXdzY24ub3JnCmJicy5uZXdzZ3JvdXAubGEKYmJzMi5uZXdzZ3JvdXAubGEKZm9y 704 | dW0ubmV3c2dyb3VwLmxhCnx8bmV3c21pbmVyLmNvbQpuZXdzcGVhay5jYy9zdG9y 705 | eQoubmV3c3BwLm9yZwp8fG5ld3NwcC5vcmcKbmV3c3Rpbi5jb20KbmV3dGFsay50 706 | dwp8fG5ld3RhbGsudHcKaGsqLm5leHRtZWRpYS5jb20KdHcqLm5leHRtZWRpYS5j 707 | b20KfHxuZXh0b24tbmV0LmpwCi5uZXh0dHYuY29tLnR3Cm5nZW5zaXMuY29tCnx8 708 | bmdzMi5pbmZvCi5uaWNvdmlkZW8uanAKfHxuaWNvdmlkZW8uanAKIS0tfHxibG9n 709 | Lm5pY292aWRlbyxqcAohLS10dy5uaWNvdmlkZW8uanAKbmljb3ZpZGVvLnR3Cnx8 710 | bmlnaG9zdC5vcmcKbmludGVuZGl1bS5jb20KLmRheWFhcm1vbmdvbC5uaW5nLmNv 711 | bQp8aHR0cDovL2RheWFhcm1vbmdvbC5uaW5nLmNvbQp0YWl3YW55ZXMubmluZy5j 712 | b20Kbmp1aWNlLmNvbQp8fG5qdWljZS5jb20Kbm8taXAuY29tCi5ub2JlbHByaXpl 713 | Lm9yZwp8aHR0cDovL25vYmVscHJpemUub3JnCm5vYmVscHJpemUub3JnL25vYmVs 714 | X3ByaXplcy9wZWFjZS9sYXVyZWF0ZXMvMjAxMApub2JvZHljYW5zdG9wLnVzCnx8 715 | bm9ib2R5Y2Fuc3RvcC51cwp8fG5va29sYS5jb20KfHxub29iYm94LmNvbQpub29p 716 | ZGVhLmNvbQp8fG5vdmVsYXNpYS5jb20KLm5vd25ld3MuY29tL2N5YmVyc2V4Ci5u 717 | b3duZXdzLmNvbS9ib3gKfHxibG9nLm5vd25ld3MuY29tCmZvcnVtLm5vd25ld3Mu 718 | Y29tCi5ub3d0b3JyZW50cy5jb20KLm5veXBmLmNvbQp8fG5veXBmLmNvbQoubnBz 719 | LmdvdgoubnJrLm5vCnx8bnJrLm5vCmJicy5uc3lzdS5lZHUudHcKbnRkdHYuY29t 720 | Cnx8Y2JzLm50dS5lZHUudHcKfHxudWV4cG8uY29tCnx8bnVyZ28tc29mdHdhcmUu 721 | Y29tCi5ueXRpbWVzLmNvbQp8fG55dGltZXMuY29tCm55c2luZ3Rhby5jb20KfHxu 722 | emNoaW5lc2UubmV0Lm56CgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1PTy0t 723 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCm9ibWVtLmNvbQpvYnNlcnZlY2hpbmEu 724 | bmV0Cnx8b2N0b2Jlci1yZXZpZXcub3JnCnx8b2dhb2dhLm9yZwp0d3RyMnNyYy5v 725 | Z2FvZ2Eub3JnCi5vaGxvaC5uZXQKfHxvaGxvaC5uZXQKLm9pa29zLmNvbS50dy92 726 | NAoub2lrdHYuY29tCm9pem9ibG9nLmNvbQpvbGQtY2F0Lm5ldAp8fG9sdW1wby5j 727 | b20Kb21naWxpLmNvbQpvbW5pdGFsay4KdGhlLXN1bi5vbi5jYwoub25seWxhZHku 728 | Y24KLm9vcHNmb3J1bS5jb20Kb3Blbi5jb20uaGsKfHxvcGVuaWQuY29tCnx8Ymxv 729 | Zy5vcGVuaW5rcG90Lm9yZwoub3BlbmxlYWtzLm9yZwp8fG9wZW5sZWFrcy5vcmcK 730 | fHxvcGVud2Vic3Rlci5jb20Kb3BlcmEuY29tL21pbmkKbXkub3BlcmEuY29tL2Rh 731 | aGVtYQp8fGRlbW8ub3BlcmEtbWluaS5uZXQKb3BuaXIuY29tLzIxNS9teWVudHVu 732 | bmVsLXNzaC1hdXRvcHJveHktY3Jvc3MtZ2Z3Cnd3dy5vcmNoaWRiYnMuY29tCnx8 733 | b3JuLmpwCnQub3J6ZHJlYW0uY29tCnx8dC5vcnpkcmVhbS5jb20KdHVpLm9yemRy 734 | ZWFtLmNvbQp8fG9zZm9vcmEuY29tCm0ub3Vsb3ZlLm9yZwp8fG91cmRlYXJhbXku 735 | Y29tCm91cnNvZ28uY29tCnNoYXJlLm92aS5jb20vbWVkaWEKLm93Lmx5CnxodHRw 736 | Oi8vb3cubHkKfGh0dHA6Ly9vd2wubGkKfGh0dHA6Ly9odC5seQp8aHR0cDovL2h0 737 | bC5saQp8aHR0cDovL21hc2gudG8Kd3d3Lm93aW5kLmNvbQp8aHR0cDovL3d3dy5v 738 | eGlkLml0Ci5vemNoaW5lc2UuY29tL2JicwpiYnMub3pjaGluZXNlLmNvbQoKIS0t 739 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tUFAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t 740 | LS0tLQoucGFjaWZpY3Bva2VyLmNvbQp8fHBhbmRvcmEuY29tCi5wYW5kb3JhLnR2 741 | CnBhZ2UycnNzLmNvbQohLS1Hb2RhZGR5IEZyZWUgSG9zdGluZwp8fHBhaW50Lm5l 742 | dAp8fGNvdmVyaW5nd2ViLmNvbQoucGFsYWNlbW9vbi5jb20KZm9ydW0ucGFsbWlz 743 | bGlmZS5jb20KIS0tU2FtZSBJUAp8fHBhcGVyLXJlcGxpa2EuY29tCnx8ZXJpdmVy 744 | c29mdC5jb20KcGFwZXIubGkKcGFwZXJiLnVzCi5wYW5sdWFuLm5ldAp8fHBhbmx1 745 | YW4ubmV0Ci5wYW5vcmFtaW8uY29tL2ZvcnVtCi5wYXJhZGUuY29tL2RpY3RhdG9y 746 | cy8yMDA5CnBhc3RlYmluLmNhCi5wYXN0aWUub3JnCnx8cGFzdGllLm9yZwp8fGJs 747 | b2cucGF0aHRvc2hhcmVwb2ludC5jb20KcGJzLm9yZy93Z2JoL3BhZ2VzL2Zyb250 748 | bGluZS9nYXRlCnBicy5vcmcvd2diaC9wYWdlcy9mcm9udGxpbmUvdGFua21hbgoK 749 | IS0tUGJ3aWtpCnBid2lraS5jb20KfHxwYndvcmtzLmNvbQp8fGRldmVsb3BlcnMu 750 | Ym94Lm5ldAp8fHdpa2kub2F1dGgubmV0Cnx8d2lraS5waG9uZWdhcC5jb20KfHx3 751 | aWtpLmpxdWVyeXVpLmNvbQoKfHxwYnhlcy5jb20KfHxwYnhlcy5vcmcKLnBjZGlz 752 | Y3Vzcy5jb20KYmxvZy5wY2hvbWUuY29tLnR3Cnx8YmxvZy5wY2hvbWUuY29tLnR3 753 | CmZvcnVtLnBjaG9tZS5jb20udHcKbXlwYXBlci5wY2hvbWUuY29tLnR3Cm5ld3Mu 754 | cGNob21lLmNvbS50dwoucGN3b3JsZC5jb20vZG93bmxvYWRzL2ZpbGUvZmlkLDcx 755 | MjA5LW9yZGVyCnBkZXRhaWxzLmNvbQpwZWFjZWZpcmUub3JnCnBlYWNlaGFsbC5j 756 | b20KLnBlZWFzaWFuLmNvbQoucGVraW5nZHVjay5vcmcKfHxwZWtpbmdkdWNrLm9y 757 | ZwpwZW5jaGluZXNlLmNvbQp8fHBlbmNoaW5lc2UubmV0Ci5wZW5jaGluZXNlLm5l 758 | dApwZW5neXVsb25nLmNvbQp8fGJsb2cucGVudGFsb2dpYy5uZXQKLnBlbnRob3Vz 759 | ZS5jb20KLnBlb3BvLm9yZwp8fHBlb3BvLm9yZwpwZXRhcmRhcy5jb20KcGhpbGx5 760 | LmNvbQp8fHBob3RvZm9jdXMuY29tCi5waWNpZGFlLm5ldAp8fGltZyoucGljdHVy 761 | ZWRpcC5jb20KcGljdHVyZXNvY2lhbC5jb20KLnBpZG93bi5jb20KLnBpZ24ubmV0 762 | CmJsb2cucGlsb3Rtb29uLmNvbQoucGluNi5jb20KfHxwaW42LmNvbQoucGluZy5m 763 | bQp8fHBpbmcuZm0vCnx8cGlub3ktbi5jb20KLnBpcmluZy5jb20KfHxwaXhlbHFp 764 | LmNvbQp8fGNzcy5waXhuZXQuaW4KfHxwaXhuZXQubmV0Ci5waXhuZXQubmV0Ci5w 765 | ay5jb20KfHxwbGFjZW1peC5jb20KLnBsYW5ldHN1enkub3JnCnx8d3d3LnBsYXli 766 | b3kuY29tCnBsYXlzLmNvbS50dwp8fG0ucGxpeGkuY29tCnBsdXJrLmNvbQp8fHBs 767 | dXJrLmNvbQoucGx1czI4LmNvbQoucGx1c2JiLmNvbQoucG1hdGVzLmNvbQp8fHBv 768 | MmIuY29tCnx8cG9kaWN0aW9uYXJ5LmNvbQoucG9rZXJzdGFycy5jb20KfHxwb2tl 769 | cnN0YXJzLmNvbQp6aC5wb2tlcnN0cmF0ZWd5LmNvbQp8fHBvcHVsYXJwYWdlcy5u 770 | ZXQKLnBvcHlhcmQuY29tCnx8cG9weWFyZC5vcmcKLnBvcm4uY29tCi5wb3JuMi5j 771 | b20KLnBvcm5iYXNlLm9yZwoucG9ybmh1Yi5jb20KLnBvcm5yYXBpZHNoYXJlLmNv 772 | bQp8fHBvcm5yYXBpZHNoYXJlLmNvbQoucG9ybnN0YXJjbHViLmNvbQoucG9ybnR1 773 | YmUuY29tCi5wb3JudmlzaXQuY29tCnBvc3RhZHVsdC5jb20KfHxwb3dlcmN4LmNv 774 | bQp8fHd3dy5wb3dlcnBvaW50bmluamEuY29tCm5ld3MucHRzLm9yZy50dwp3ZWIu 775 | cHRzLm9yZy50dwoKIS0tLS0tLS0tLS0tLS1Qb3N0ZXJvdXMtLS0tLQp8aHR0cDov 776 | L3Bvc3QubHkKLnBvc3Rlcm91cy5jb20KfGh0dHA6Ly9wb3N0ZXJvdXMuY29tCnx8 777 | cG9zdC5hbnl1Lm9yZwp8fGJyYWxpby5jb20KfHxjYWxlYmVsc3Rvbi5jb20KIS18 778 | fGJsb2cuZGFici5jby51awp8fGRlc2lnbmVyb2wuY29tCnx8YmxvZy5maXp6aWsu 779 | Y29tCnx8bmYuaWQuYXUKfHxtYXJrbWlsaWFuLmNvbQp8fGxvZy5yaWt1Lm1lCnx8 780 | c29ncmFkeS5tZQp8fHZhdG4ub3JnCnx8dmVlbXBpaXJlLmNvbQp8fHd3dy52ZWdv 781 | cnBlZGVyc2VuLmNvbQp8fHZlbnR1cmVzd2VsbC5jb20KfHx3ZWJmZWUudGsKfHx3 782 | aGVyZWlzd2VybmVyLmNvbQp8fGJpbGwuemhvbmcucHAucnUKCi5wb3dlci5jb20K 783 | fHxwb3dlci5jb20KcG93ZXJhcHBsZS5jb20KfHxhYmMucHAucnUKaGVpeC5wcC5y 784 | dQp8fHByYXlmb3JjaGluYS5uZXQKfHxwcmVtZWZvcndpbmRvd3M3LmNvbQp8fHBy 785 | ZXNlbnRhdGlvbnplbi5jb20KcHJpc29uZXItc3RhdGUtc2VjcmV0LWpvdXJuYWwt 786 | cHJlbWllcgp8fHByaXZhY3lib3guZGUKcHJpdmF0ZXBhc3RlLmNvbQp8fHByaXZh 787 | dGVwYXN0ZS5jb20KfHxwcm9zaWJlbi5kZQphcGkucHJveGxldC5jb20KfHxwcm94 788 | b21pdHJvbi5pbmZvCnByb3h5Lm9yZwoucHJveHlweS5uZXQKfHxwcm94eXB5Lm5l 789 | dApwcm94eXJvYWQuY29tCnByb3p6Lm5ldApwc2Jsb2cubmFtZQp8fHBzYmxvZy5u 790 | YW1lCnBzaXBob24uY2EKLnB0dC5jYwoucHVmZnN0b3JlLmNvbQp8fHB1bGxmb2xp 791 | by5jb20KfHxwdXJlY29uY2VwdHMubmV0Cnx8cHVyZXBkZi5jb20KLnB1dGxvY2tl 792 | ci5jb20vZmlsZQpwd25lZC5jb20KLnB5dGhvbi5jb20udHcKfGh0dHA6Ly9weXRo 793 | b24uY29tLnR3CnB5dGhvbi5vcmcqZG93bmxvYWQKCiEtLS0tLS0tLS0tLS0tLS0t 794 | LS0tLS0tLS0tLVFRLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnFhbm90ZS5j 795 | b20KfHxxYW5vdGUuY29tCi5xaWVua3Vlbi5vcmcKfHxxaWVua3Vlbi5vcmcKcWl4 796 | aWFuZ2x1LmNuCmJicy5xbXpkZC5jb20KCi5xa3NoYXJlLmNvbQp8fHFvb3MuY29t 797 | CmJsb2cucW9vemEuaGsqZGFmZW5ncWl4aQp8fGVma3NvZnQuY29tCnx8cXN0YXR1 798 | cy5jb20KfHxxdHdlZXRlci5jb20KfHxxdHJhYy5ldQohLS1xdWFkZWRnZQp8fHF1 799 | YWRlZGdlLmNvbQp8fHd3dy5nZXR5b3VyYW0uY29tCnx8aGlpdGNoLmNvbQpxdXNp 800 | OC5uZXQKLnF2b2R6eS5vcmcKbmVtZXNpczIucXgubmV0KnBhZ2VzKk15RW5UdW5u 801 | ZWwKcXhiYnMub3JnCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1SUi0tLS0t 802 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tCnd3dy5yYWRpb2F1c3RyYWxpYS5uZXQuYXUq 803 | Y2hpbmVzZSphcnRpY2xlcyoKfHxyYWRpb3ZhdGljYW5hLm9yZwpyYW5nemVuLm9y 804 | ZwpyYW55dW5mZWkuY29tCnx8cmFueXVuZmVpLmNvbQoucmFwaWRzaGFyZS5jb20K 805 | fGh0dHA6Ly9yYXBpZHNoYXJlLmNvbQoucmFwaWRzaGFyZTEuY29tCnx8cmFwaWRz 806 | aGFyZTguY29tCi5yYXBpZHNoYXJlZGF0YS5jb20KLnJhcGlkc2Nhbi5tZQp8aHR0 807 | cDovL3JhcGlkc2Nhbi5tZQoucmF5Zm1lLmNvbS9iYnMKcmNpbmV0LmNhCi5yZWFk 808 | MTAwLmNvbQoucmVhZGluZ3RpbWVzLmNvbS50dwp8fHJlYWRpbmd0aW1lcy5jb20u 809 | dHcKLnJlYWxyYXB0YWxrLmNvbQoucmVjb3JkaGlzdG9yeS5vcmcKYmxvZy5yZWRy 810 | ZW4uY29tLzIwMDkvMDEvamFwLWxldC15b3UtdXNlLW9ubGluZS1zdGVhbHRoCi5y 811 | ZWR0dWJlLmNvbQpyZWZlcmVyLnVzCnx8cmVmZXJlci51cwp8fHJlZmxlY3RpdmVj 812 | b2RlLmNvbQpyZW5taW5iYW8uY29tCi5yZW55dXJlbnF1YW4ub3JnCnx8cmVueXVy 813 | ZW5xdWFuLm9yZwpzdWJhY21lLnJlcm91dGVkLm9yZwoucmV2bGVmdC5jb20KcmV0 814 | d2VldGlzdC5jb20KfHxyZXR3ZWV0cmFuay5jb20KcmV2dmVyLmNvbQoucmZhLm9y 815 | ZwoucmZhY2hpbmEuY29tCi5yZmFtb2JpbGUub3JnCi5yZmkuZnIKfHxyZmkuZnIK 816 | fGh0dHA6Ly9yZmkubXkvCi5yaWxleWd1aWRlLmNvbQpyaWt1Lm1lLwoucmx3bHcu 817 | Y29tCnx8cmx3bHcuY29tCnJvYnRleC5jb20KfHxyb2J1c3RuZXNzaXNrZXkuY29t 818 | Cnx8cm9jbXAub3JnCnx8cm9uam9uZXN3cml0ZXIuY29tCi5yb29kby5jb20KfHxy 819 | b29zb25nLmNuCi5yc2Yub3JnCnx8cnNmLm9yZy8KLnJzZi1jaGluZXNlLm9yZwp8 820 | fHJzZi1jaGluZXNlLm9yZwoucnNzbWVtZS5jb20KfHxyc3NtZW1lLmNvbQoucnRo 821 | ay5oawp8aHR0cDovL3J0aGsuaGsKLnJ0aGsub3JnLmhrCnxodHRwOi8vcnRoay5v 822 | cmcuaGsKcnRpLm9yZy50dwoucnVhbnlpZmVuZy5jb20vYmxvZypzb21lX3dheXNf 823 | dG9fYnJlYWtfdGhlX2dyZWF0X2ZpcmV3YWxsCi5ydXNoYmVlLmNvbQpydXR1YmUu 824 | cnUKLnJ1eWlzZWVrLmNvbQoucnhoai5uZXQKfHxyeGhqLm5ldAoKIS0tLS0tLS0t 825 | LS0tLS0tLS0tLS0tLS0tLS1TUy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmJs 826 | b2cuczEzNS5jb20vZ29vZ2xlX3NzbAp8fHMxaGVuZy5jb20Kc2Fjb20uaGsKfHxz 827 | YWNvbS5oawouc2FpcS5tZQp8fHNhaXEubWUvCi5zYWx2YXRpb24ub3JnLmhrCnx8 828 | c2FsdmF0aW9uLm9yZy5oawouc2FtYWlyLnJ1L3Byb3h5L3R5cGUtMDEKc2FuZG5v 829 | YmxlLmNvbS9ib29rU2VhcmNoL2lzYm5JbnF1aXJ5LmFzcAp8fHNhbmthaXpvay5j 830 | b20KLnNhbm1pbi5jb20udHcKc2FwaWthY2h1Lm5ldApzYXZldGliZXQub3JnCnx8 831 | c2F5Mi5pbmZvCi5zY3JpYmQuY29tCnNlYXB1ZmYuY29tCmRvbWFpbmhlbHAuc2Vh 832 | cmNoLmNvbQpzZWNyZXRjaGluYS5jb20KfHxzZWNyZXRnYXJkZW4ubm8KfHxkZWZh 833 | dWx0LnNlY3VyZXNlcnZlci5uZXQKc2Vlc21pYy5jb20KfHxzZWV6b25lLm5ldApz 834 | ZWppZS5jb20KLnNlbmRzcGFjZS5jb20vZmlsZQpzZXNhd2UubmV0Cnx8c2VzYXdl 835 | Lm5ldAouc2VzYXdlLm9yZwp8fHNldGh3a2xlaW4ubmV0CmZvcnVtLnNldHR5LmNv 836 | bS50dwouc2V2ZW5sb2FkLmNvbQp8fHNldmVubG9hZC5jb20KLnNleC5jb20KLnNl 837 | eC0xMS5jb20KLnNleDguY2MKLnNleGFuZHN1Ym1pc3Npb24uY29tCi5zZXhodS5j 838 | b20KLnNleGh1YW5nLmNvbQpzZXhpbnNleC5uZXQKfHxzZXhpbnNleC5uZXQKIS0t 839 | SVAgb2YgU2V4SW5TZXgKNjcuMjIwLjkxLjE4CjY3LjIyMC45MS4yMwouc2ZpbGV5 840 | ZHkuY29tCi5zaGFuZ2Zhbmcub3JnCnx8c2hhbmdmYW5nLm9yZwpzaGFwZXNlcnZp 841 | Y2VzLmNvbQouc2hhcmViZWUuY29tCnx8c2hhcmVjb29sLm9yZwp8fHNoYXJrZG9s 842 | cGhpbi5jb20KLnNoYXVudGhlc2hlZXAuY29tCnx8c2hhdW50aGVzaGVlcC5jb20K 843 | c2hlbnNob3Uub3JnCnNoZW55dW5wZXJmb3JtaW5nYXJ0cy5vcmcKc2hpbnljaGFu 844 | LmNvbQp8fHNoaXhpYW8ub3JnCnx8c2hpemhhby5vcmcKLnNoaXpoYW8ub3JnCnNo 845 | a3Nwci5tb2JpL2RhYnIKY2guc2h2b29uZy5jb20KLnNod2NodXJjaDMuY29tCnxo 846 | dHRwOi8vc2h3Y2h1cmNoMy5jb20Kc2ltcGxlcHJvZHVjdGl2aXR5YmxvZy5jb20K 847 | YmJzLnNpbmEuY29tLwpiYnMuc2luYS5jb20lMkYKYmxvZy5zaW5hLmNvbS50dwpk 848 | YWlseW5ld3Muc2luYS5jb20vCmRhaWx5bmV3cy5zaW5hLmNvbSUyRgpmb3J1bS5z 849 | aW5hLmNvbS5oawp8fG1hZ2F6aW5lcy5zaW5hLmNvbS50dwpuZXdzLnNpbmEuY29t 850 | LmhrCm5ld3Muc2luYS5jb20udHcKbmV3cy5zaW5ndGFvLmNhCnx8Y2RwLnNpbmlj 851 | YS5lZHUudHcKLnNpbm9uZXQuY2EKLnNpbm9waXR0LmluZm8KLnNpbm9hbnRzLmNv 852 | bQp8fHNpbm9hbnRzLmNvbQp8fHNpdGU5MC5uZXQKLnNpdGVicm8udHcKfHxzaXRl 853 | a3MudWsudG8KfHxzaXRlbWFwcy5vcmcKc2l0ZXRhZy51cwp8fHNqdW0uY24vCnx8 854 | c2tpbXR1YmUuY29tCmJicy5za3lraXdpLmNvbQp8aHR0cDovL3d3dy5za3lwZS5j 855 | b20vaW50bC8Kc2hhcmUuc2t5cGUuY29tL3NpdGVzL2VuLzIwMDgvMTAvc2t5cGVf 856 | cHJlc2lkZW50X2FkZHJlc3Nlc19jaGluCm0uc2xhbmRyLm5ldAp8fHNsYXZhc29m 857 | dC5jb20KfHxzbGhlbmcuY29tCi5zbGlkZXNoYXJlLm5ldApmb3J1bS5zbGltZS5j 858 | b20udHcKLnNsdXRsb2FkLmNvbQp8fHNvLWdhLm5ldAouc28tZ2EubmV0Cnx8c28t 859 | bmV3cy5jb20KLnNvLW5ld3MuY29tCmhvbWUuc28tbmV0Lm5ldC50dy95aXNhX3Rz 860 | YWkKfHxzb2MubWlsLwouc29kLmNvLmpwCnx8c29nY2x1Yi5jb20KfHx3d3cuc29t 861 | ZWUuY29tCnx8c29ydGluZy1hbGdvcml0aG1zLmNvbQouc291bW8uaW5mbwp8fHNv 862 | dXAuaW8vCkBAfHxzdGF0aWMuc291cC5pbwouc2xpbmtzZXQuY29tCi5zbmFwdHUu 863 | Y29tCnx8c25hcHR1LmNvbQpzbmVha21lLm5ldAouc29iZWVzLmNvbQp8fHNvYmVl 864 | cy5jb20Kc29jaWFsd2hhbGUuY29tCnx8c29mdHdhcmVieWNodWNrLmNvbQpibG9n 865 | LnNvZ29vLm9yZwpjaGluZXNlLnNvaWZpbmQuY29tCnNva2Ftb25saW5lLmNvbQou 866 | c29uZ2ppYW5qdW4uY29tCnx8c29uZ2ppYW5qdW4uY29tCi5zb3BjYXN0LmNvbQpz 867 | b3VuZG9maG9wZS5vcmcKfHxzb3Vwb2ZtZWRpYS5jb20KLnNvdXJjZWZvcmdlLm5l 868 | dAp8aHR0cDovL3NvdXJjZWZvcmdlLm5ldAohLXNvdXJjZWZvcmdlLm5ldC9wcm9q 869 | ZWN0cy9wb3J0YWJsZXRvci9maWxlcy8Kc293ZXJzLm9yZy5oawp8fHdseC5zb3dp 870 | a2kubmV0Cnx8c3BhY2Utc2NhcGUuY29tCi5zcGFua3dpcmUuY29tCi5zcGIuY29t 871 | L2JsYWNrYmVycnktc29mdHdhcmUvdHYvZG93bmxvYWQKfGh0dHA6Ly9zcGIuY29t 872 | L2JsYWNrYmVycnktc29mdHdhcmUvdHYvZG93bmxvYWQKLnNwYi5jb20vcG9ja2V0 873 | cGMtc29mdHdhcmUvdHYvZG93bmxvYWQKfGh0dHA6Ly9zcGIuY29tL3BvY2tldHBj 874 | LXNvZnR3YXJlL3R2L2Rvd25sb2FkCi5zcGIuY29tL3N5bWJpYW4tc29mdHdhcmUv 875 | dHYvZG93bmxvYWQKfGh0dHA6Ly9zcGIuY29tL3N5bWJpYW4tc29mdHdhcmUvdHYv 876 | ZG93bmxvYWQKLnNwZWVkcGx1c3Mub3JnCnx8c3BlbmNlcnRpcHBpbmcuY29tCnx8 877 | c3Byb3V0Y29yZS5jb20Kc3F1YXJlc3BhY2UuY29tCnd3dy5zdGFja2ZpbGUuY29t 878 | L2ZyZWVkdXIKdXNpbmZvLnN0YXRlLmdvdgouc3RhcnAycC5jb20KfHxzdGFycDJw 879 | LmNvbQouc3RhdGUxNjguY29tCnx8c3RlZWwtc3Rvcm0uY29tCnN0aG9vLmNvbQp8 880 | fHN0aG9vLmNvbQouc3RpY2thbS5jb20Kc3RpY2tlcmFjdGlvbi5jb20vc2VzYXdl 881 | Cnx8c3RvbmVnYW1lcy5uZXQKfHxzdG9uZWlwLmluZm8KfHxzdG9yYWdlbmV3c2xl 882 | dHRlci5jb20KLnN0b3B0aWJldGNyaXNpcy5uZXQKfHxzdG9wdGliZXRjcmlzaXMu 883 | bmV0Cnx8c3Rvd2Vib3lkLmNvbQp8fHN0cmVhbWluZ3RoZS5uZXQKY24uc3RyZWV0 884 | dm9pY2UuY29tL2FydGljbGUKY24uc3RyZWV0dm9pY2UuY29tL2RpYXJ5CmNuMi5z 885 | dHJlZXR2b2ljZS5jb20KdHcuc3RyZWV0dm9pY2UuY29tCi5zdHJvbmd2cG4uY29t 886 | CnxodHRwOi8vc3Ryb25ndnBuLmNvbQouc3R1ZGVudC50dy9kYgpibG9nLnN1ZmVu 887 | Zy5vcmcKLnN1Z2Fyc3luYy5jb20KfHxzdWdhcnN5bmMuY29tCnQuc3VueHVuLmlu 888 | Zm8vbG9naW4ucGhwCmFwaS5zdXBlcnR3ZWV0Lm5ldAp3d3cuc3VwZXJ0d2VldC5u 889 | ZXQKc3VwcG9ydC95b3V0dWJlL2Jpbi9yZXF1ZXN0LnB5P2NvbnRhY3RfdHlwZT1h 890 | YnVzZSYKL3N1cHBvcnQveW91dHViZS9iaW4vc3RhdGljLnB5P3BhZ2U9c3RhcnQu 891 | Y3MmCnx8c3dldXguY29tCnx8c3dpZnQtdG9vbHMubmV0Cnx8c3luY2JhY2suY29t 892 | Cnx8c3lzYWRtaW4xMTM4Lm5ldApzeXNyZXNjY2Qub3JnCi5zeXRlcy5uZXQKYmxv 893 | Zy5zeXg4Ni5jb20vMjAwOS8wOS9wdWZmCmJsb2cuc3l4ODYuY24vMjAwOS8wOS9w 894 | dWZmCi5zemJicy5uZXQKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVRULS0t 895 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnQzNS5jb20KLnQ2NnkuY29tCnx8dDY2 896 | eS5jb20KLnRhYS11c2Eub3JnCnxodHRwOi8vdGFhLXVzYS5vcmcKdGFidHRlci5q 897 | cAoudGFjZW0ub3JnCnRhZ3dhbGsuY29tCnx8dGFnd2Fsay5jb20KLnRhaXdhbmRh 898 | aWx5Lm5ldAp8fHRhaXdhbnR0Lm9yZy50dwp8fHRhaXdhbmRhaWx5Lm5ldAp0YWl3 899 | YW5raXNzLmNvbQp0YWl3YW4tc2V4LmNvbQp8fHRhbWlhb2RlLnRrCnRhbmdiZW4u 900 | Y29tCi50YW9sdW4uaW5mbwp8fHRhb2x1bi5pbmZvCmJsb2cudGFyYWdhbmEuY29t 901 | Ci50YXdlZXQuY29tCnx8dGF3ZWV0LmNvbQp8fHRicGljLmluZm8KdGNocmQub3Jn 902 | CnRjbm8ubmV0KmRvYyp0b3IKfHx0ZWFtc2Vlc21pYy5jb20KLnRlYXNoYXJrLmNv 903 | bS9kb3dubG9hZC5odG1sCnx8dGVjaGxpZmV3ZWIuY29tCnRlY2hub3JhdGkuY29t 904 | Cnx8dGVjaHBhcmFpc28uY29tCnx8dGVjay5pbi8KdGVsZWNvbXNwYWNlLmNvbQp8 905 | fHRoZWFwcGxlYmxvZy5jb20KfHx0aGVhdHJ1bS1iZWxsaS5jb20KdGhlYmxlbWlz 906 | aC5jb20KfHx0aGViY29tcGxleC5jb20KLnRoZWNoaW5hYmVhdC5vcmcKfHx0aGVk 907 | aWVsaW5lLmNvbQp8fHRoZWR3LnVzCnx8dGhlZ2F0ZXNub3Rlcy5jb20KfHx0aGVs 908 | aWZleW91Y2Fuc2F2ZS5jb20KfHx0aGVsaXVzLm9yZwp0aGVwaXJhdGViYXkub3Jn 909 | Cnx8dGhlcGlyYXRlYmF5LnNlCnRoZXFpaS5pbmZvL2Jsb2cKfHx0aGVzYXJ0b3Jp 910 | YWxpc3QuY29tCnRoZXNwZWVkZXIuY29tCnx8dGhldGliZXRwb3N0LmNvbQp0aGV0 911 | cm90c2t5bW92aWUuY29tLwp0aGV2aXZla3Nwb3QuY29tCi50aGlzYXYuY29tCnxo 912 | dHRwOi8vdGhpc2F2LmNvbQp0aGtwaG90by5jb20KfHx0aG9tYXNiZXJuaGFyZC5v 913 | cmcKdGhyZWF0Y2hhb3MuY29tCnx8dGhyb3VnaG5pZ2h0c2ZpcmUuY29tCi50aHVt 914 | YnppbGxhLmNvbQp0aWFuYW5tZW5tb3RoZXIub3JnCnx8dGlhbmRpeGluZy5vcmcK 915 | LnRpYW5odWF5dWFuLmNvbQp0aWFudGlib29rcy5vcmcKLnRpYW56aHUub3JnCi50 916 | aWJldC5jb20KfHx0aWJldC5jb20KLnRpYmV0Lm5ldAp8fHRpYmV0Lm5ldAp0aWJl 917 | dC5vcmcudHcKdGliZXRhbGsuY29tCi50aWJldGFueW91dGhjb25ncmVzcy5vcmcK 918 | fHx0aWJldGFueW91dGhjb25ncmVzcy5vcmcKdGliZXRmdW5kLm9yZwp8fHRpYmV0 919 | b25saW5lLnR2Ci50aWJldG9ubGluZS50dgp8fHRpYmV0d3JpdGVzLm9yZwoudGlt 920 | ZS5jb20vdGltZS90aW1lMTAwL2xlYWRlcnMvcHJvZmlsZS9yZWJlbAoudGltZS5j 921 | b20vdGltZS9zcGVjaWFscy9wYWNrYWdlcy9hcnRpY2xlLzAsMjg4MDQKfHxibG9n 922 | LnRpbmV5LmNvbQp8fHRpbnlwYXN0ZS5jb20KfHx0aWR5cmVhZC5jb20KLnRpc3Rv 923 | cnkuY29tCnx8dGtjcy1jb2xsaW5zLmNvbQp8fHRrZm9ydW0udGsKdGxkcC5vcmcK 924 | fGh0dHA6Ly90bWkubWUKLnRuYWZsaXguY29tCnx8dG5hZmxpeC5jb20KdG9nZXR0 925 | ZXIuY29tCi50b2t5by0yNDcuY29tCnRva3lvLWhvdC5jb20KdG9ueXlhbi5uZXQK 926 | LnRvb2RvYy5jb20KdG9vbmVsLm5ldAoudG9wbmV3cy5pbgp8fHRvcHNoYXJlLnVz 927 | Ci50b3BzaGFyZXdhcmUuY29tCnx8dG9wc3R5bGU0LmNvbQp8fHRvcHN5LmNvbQp0 928 | b3BzeS5jb20KdG9yYS50bwoudG9ycHJvamVjdC5vcmcKdG91Y2g5OS5jb20KfHx0 929 | b3V0ZnIuY29tCi50cGkub3JnLnR3Cnx8dHBpLm9yZy50dwp8fHRyYW5zZ3Jlc3Np 930 | b25pc20ub3JnCnx8dHJhdmVsaW5sb2NhbC5jb20KdHJlbmRzbWFwLmNvbQp8fHRy 931 | ZW5kc21hcC5jb20KLnRyaWFsb2ZjY3Aub3JnCnx8dHJpYWxvZmNjcC5vcmcKfHx0 932 | cmlwb2QuY29tCkBAfHx3d3cudHJpcG9kLmNvbQp8fHRydXN0ZWRiaS5jb20KLnRy 933 | dXRoMTAxLmNvLnR2CnxodHRwOi8vdHJ1dGgxMDEuY28udHYKfHx0cnV0aGNuLmNv 934 | bQoudHJ1dmVvLmNvbQoudHNlbXR1bGt1LmNvbQp0c3F1YXJlLnR2Ci50c2N0di5u 935 | ZXQKfHx0dDEwNjkubmV0Cnx8dHR0YW4uY29tCi50dHRhbi5jb20KYmIudHR2LmNv 936 | bS50dy9iYgoudHVhbnp0LmNvbQoudHViZS5jb20KdHVpZGFuZy5uZXQKYmJzLnR1 937 | aXR1aS5pbmZvCi50dW5laW4uY29tCnxodHRwOi8vdHVuZWluLmNvbQoudHVyYm9i 938 | aXQubmV0CnxodHRwOi8vdHVyYm9iaXQubmV0Cnx8dHVybmluZ3RvcnNvLmNvbQp8 939 | fHR1eHRyYWluaW5nLmNvbQoKCiEtLS0tLS0tLS0tLS0tVHVtYmxyLS0tLS0KfHx0 940 | dW1ibHIuY29tCkBAfHxhc3NldHMudHVtYmxyLmNvbQpAQHx8ZGF0YS50dW1ibHIu 941 | Y29tCkBAfHxtZWRpYS50dW1ibHIuY29tCkBAfHxzdGF0aWMudHVtYmxyLmNvbQpA 942 | QHx8d3d3LnR1bWJsci5jb20KfHwzMDF3b3Jrcy5vcmcKfHwzNjVzaW5nbGVzLmNv 943 | bS5hcgp8fGFsbC10aGF0LWlzLWludGVyZXN0aW5nLmNvbQp8fGFydC1vci1wb3Ju 944 | LmNvbQp8fG5ld3MuYXRlYml0cy5jb20KfHx0dW1ibHIuYXdmbGFzaGVyLmNvbQp8 945 | fGJhZGFzc2pzLmNvbQp8fGJhc2V0aW1lc2hlaWdodGRpdmlkZWRieTIuY29tCnx8 946 | YmVuamFtaW5zdGUuaW4KfHxibG9nLmJpcmRob3VzZWFwcC5jb20KfHxib2J1bGF0 947 | ZS5jb20KfHxib25qb3VybGVzZ2Vla3MuY29tCnx8Ym9va3NoZWxmcG9ybi5jb20K 948 | fHxibG9nLmJveGNhci5pbwp8fGJsb2cuYml0bHkuY29tCnx8Y2hldnJvbndwNy5j 949 | b20KfHxjbGllbnRzZnJvbWhlbGwubmV0Cnx8Y29kZWJveGFwcC5jb20KfHxjb29r 950 | aW5ndG90aGVnb29kbGlmZS5jb20KfHxjdWJpY2xlMTcuY29tCnx8cGhvdG9zLmRh 951 | aWx5bWUuY29tCnx8ZGF2aWRzbG9nLmNvbQp8fGJsb2cuZGF2aWR6aWVnbGVyLm5l 952 | dAp8fGJsb2cuZGF5b25lYXBwLmNvbQp8fGRyZXdvbGFub2ZmLmNvbQp8fGJsb2cu 953 | ZHJpYmJibGUuY29tCnx8Y2hhb3MuZS1zcGFjeS5jb20KfHxlYW1vbm5icmVubmFu 954 | LmNvbQp8fGV2ZXJ5ZGF5LWNhcnJ5LmNvbQp8fGV5ZXNwaXJpdC5pbmZvCnx8bGlm 955 | ZS5mbHk0ZXZlci5tZQp8fGZyZWR3aWxzb24udmMKfHxmdWNrZ2Z3LmNvbQp8fGdl 956 | ZWttYWRlLmNvLnVrCnx8Z2VuZXJlc2lzLmNvbQp8fG5ld3MuZ2hvc3RlcnkuY29t 957 | Cnx8Z2l2ZW1lc29tZXRoaW5ndG9yZWFkLmNvbQp8fGJsb2cuZ293YWxsYS5jb20K 958 | fHxoZWl5by5pbmZvCnx8aGVsbG9uZXd5b3JrLnVzCnx8YmxvZy5ob3Rwb3RhdG8u 959 | Y29tCnx8aWFsbW9zdGxhdWdoLmNvbQp8fGJsb2cuaWZ0dHQuY29tCnx8YmxvZy5p 960 | bnN0YWdyYW0uY29tCnx8YmxvZy5pbnN0YXBhcGVyLmNvbQp8fGludGVyZXN0aW5n 961 | bGF1Z2guY29tCnx8YmxvZy5pcGhvbmUtZGV2Lm9yZwp8fGpheXBhcmtpbnNvbm1k 962 | LmNvbQp8fGJsb2cuam9leXJvYmVydC5vcmcKfHxrdC5rY29tZS5vcmcKfHxteS5r 963 | ZXNvLmNuCnx8YmxvZy5raWNrc3RhcnRlci5jb20KfHxibG9nLmtsLmFtCnx8Ymxv 964 | Zy5rbGlwLm1lCnx8dC5rdW4uaW0KfHxibG9nLmxpZ2h0Ym94LmNvbQp8fGxpdHRs 965 | ZWJpZ2RldGFpbHMuY29tCnx8bG92ZXF1aWNrc2lsdmVyLmNvbQp8fGx5cmljc3F1 966 | b3RlLmNvbQp8fG1hZG1lbnVuYnV0dG9uZWQuY29tCnx8bWFyY28ub3JnCnx8bWlu 967 | aW1hbG1hYy5jb20KfHxtaXhlZG1lZGlhbGFicy5jb20KfHxtb2RmZXRpc2guY29t 968 | Cnx8YmxvZy5tb25nb2RiLm9yZwp8fG5hdmlnZWF0ZXJzLmNvbQp8fGxvbmRvbi5u 969 | ZWlnaGJvcmhvb2RyLmNvbQp8fGJsb2cucGF0aC5jb20KfHxwYXJpc2xlbW9uLmNv 970 | bQp8fGJsb2cucGlrY2h1ci5jb20KfHxibG9nLnJvY2ttZWx0LmNvbQp8fGJsb2cu 971 | cm9tYW5hbmRyZWcuY29tCnx8c29sb3pvcnJvLnRrCnx8YmxvZy5zcGFycm93bWFp 972 | bGFwcC5jb20KfHxzdHVmZmltcmVhZGluZy5jb20KfHxibG9nLnN1bW1pZnkuY29t 973 | Cnx8dGhlZGFpbHl3aC5hdAp8fHRoZWNoYW5nZWxvZy5jb20KfHx0aGVpbnRlcm5l 974 | dHdpc2hsaXN0LmNvbQp8fHRoaXNpc3doeXlvdWFyZWZhdC5jb20KfHx3d3cudGlm 975 | ZmFueWFybWVudC5jb20KfHx0amhvbG93YXljaHVrLmNvbQp8fHRvbXNjLmNvbQp8 976 | fGJsb2cudG9waWZ5LmNvbQp8fHRoZWh1bmdyeWR1ZGVzLmNvbQp8fHR1bWJsd2Vl 977 | ZC5vcmcKfHxzdGF0dXMudHdoaXJsLm9yZwohLXx8c3RhdHVzLnR3aXR0ZXIuY29t 978 | Cnx8YmxvZy51c2EuZ292Cnx8cGhvdG8udXRvbS51cwp8fHYtc3RhdGUub3JnCnx8 979 | d2VsbHBsYWNlZHBpeGVscy5jb20KfHx3aHlkaWR5b3VidXltZXRoYXQuY29tCnx8 980 | d29yZGJvbmVyLmNvbQp8fHdvcmRzYW5kdHVyZHMuY29tCnx8d29yc3R0aGluZ2ll 981 | dmVyYXRlLmNvbQp8fHhtdXNpYy5mbQp8fHh1emh1b2VyLmNvbQp8fGJkLnpoZS5s 982 | YQp8fGNvY29hLnpvbmJsZS5uZXQKCi50di5jb20KfHx3d3cudHYuY29tCnxodHRw 983 | Oi8vdHYuY29tCnx8dHYtaW50cm9zLmNvbQpmb3J1bS50dmIuY29tLwp0dmJveG5v 984 | dy5jb20KdHZpZGVyLmNvbQp8fHR2dW5ldHdvcmtzLmNvbQp0d2Euc2gKdHdhcHBl 985 | cmtlZXBlci5jb20KfHx0d2FwcGVya2VlcGVyLmNvbQp8fHR3YXVkLmlvCi50d2F1 986 | ZC5pbwoudHdiYnMubmV0LnR3CnR3YmJzLm9yZwp8fHR3YmxvZ2dlci5jb20KdHdl 987 | ZXBtYWcuY29tCi50d2VlcG1sLm9yZwp8fHR3ZWVwbWwub3JnCi50d2VldGJhY2t1 988 | cC5jb20KfHx0d2VldGJhY2t1cC5jb20KdHdlZXRib2FyZC5jb20KfHx0d2VldGJv 989 | YXJkLmNvbQoudHdlZXRib25lci5iaXoKfHx0d2VldGJvbmVyLmJpegoudHdlZXRk 990 | ZWNrLmNvbQp8aHR0cDovL3R3ZWV0ZGVjay5jb20KfGh0dHA6Ly9kZWNrLmx5Cnx8 991 | dHdlZXRlLm5ldAptLnR3ZWV0ZS5uZXQKfHxtdHcudGwKfHx0d2VldGVkdGltZXMu 992 | Y29tCnR3ZWV0bWVtZS5jb20KfHx0d2VldG15bGFzdC5mbQp0d2VldHBob3RvLmNv 993 | bQp8fHR3ZWV0cGhvdG8uY29tCnx8dHdlZXRyYW5zLmNvbQp0d2VldHJlZS5jb20K 994 | fHx0d2VldHJlZS5jb20KfHx0d2VldHdhbGx5LmNvbQp0d2VldHltYWlsLmNvbQp8 995 | fHR3ZnRwLm9yZwp0d2liYXNlLmNvbQoudHdpYmJsZS5kZQp8fHR3aWJibGUuZGUK 996 | dHdpYmJvbi5jb20KfHx0d2licy5jb20KLnR3aWZhbi5jb20KfGh0dHA6Ly90d2lm 997 | YW4uY29tCnR3aWZmby5jb20KfHx0d2lmZm8uY29tCnR3aWxvZy5vcmcKdHdpbWJv 998 | dy5jb20KfHx0d2luZGV4eC5jb20KfHx0d2lwLm1lLwp0d2lzdGFyLmNjCnR3aXN0 999 | ZXJub3cuY29tCnR3aXN0b3J5Lm5ldAp0d2l0YnJvd3Nlci5uZXQKfHx0d2l0Y2F1 1000 | c2UuY29tCnx8dHdpdGdldGhlci5jb20KfHx0d2lnZ2l0Lm9yZwp0d2l0Z29vLmNv 1001 | bQp0d2l0aXEuY29tCnx8dHdpdGlxLmNvbQoudHdpdGxvbmdlci5jb20KfHx0d2l0 1002 | bG9uZ2VyLmNvbQp8aHR0cDovL3RsLmdkLwp0d2l0b2FzdGVyLmNvbQp8fHR3aXRv 1003 | YXN0ZXIuY29tCnx8dHdpdG9ubXNuLmNvbQoudHdpdHBpYy5jb20KfHx0d2l0cGlj 1004 | LmNvbQp0d2l0cmVmZXJyYWwuY29tCiEtLVNhbWUgSVAKLnR3aXQyZC5jb20KfHx0 1005 | d2l0MmQuY29tCi50d2l0c3RhdC5jb20KfHx0d2l0c3RhdC5jb20KfHxkb3RoZXlm 1006 | b2xsb3dlYWNob3RoZXIuY29tCnx8Zmlyc3RmaXZlZm9sbG93ZXJzLmNvbQp8fHJl 1007 | dHdlZXRlZmZlY3QuY29tCnx8dHdlZXBsaWtlLm1lCnx8dHdlZXBndWlkZS5jb20K 1008 | fHx0dXJib3R3aXR0ZXIuY29tCi50d2l0dmlkLmNvbQp8fHR3aXR2aWQuY29tCgox 1009 | OTkuNTkuMTQ4LjIwCnxodHRwOi8vdC5jbwp8aHR0cHM6Ly90LmNvCnxodHRwOi8v 1010 | dHd0LnRsCi50d2l0dGVyLmNvbQp8fHR3aXR0ZXIuY29tCnx8dHdpdHRlci5qcAp8 1011 | fHR3dHRyLmNvbQovXmh0dHBzPzpcL1wvW15cL10rdHdpdHRlclwuY29tLwoKLnR3 1012 | aXR0ZXJjb3VudGVyLmNvbQp8fHR3aXR0ZXJjb3VudGVyLmNvbQp0d2l0dGVyZmVl 1013 | ZC5jb20KLnR3aXR0ZXJnYWRnZXQuY29tCnx8dHdpdHRlcmdhZGdldC5jb20KLnR3 1014 | aXR0ZXJrci5jb20KfHx0d2l0dGVya3IuY29tCnx8dHdpdHRlcm1haWwuY29tCnR3 1015 | aXR0ZXJ0aW0uZXMKfHx0d2l0dGVydGltLmVzCnR3aXR0aGF0LmNvbQoudHdpdHR1 1016 | cmx5LmNvbQp8fHR3aXR0dXJseS5jb20KLnR3aXR6YXAuY29tCnR3aXlpYS5jb20K 1017 | LnR3cmVnLmluZm8KfHx0d3JlZy5pbmZvCnx8dHdzdGFyLm5ldAoKLnR3dGtyLmNv 1018 | bQp8aHR0cDovL3R3dGtyLmNvbQp0d3VybC5ubAoudHd5YWMub3JnCnx8dHd5YWMu 1019 | b3JnCi50eWNvb2wuY29tCnx8dHljb29sLmNvbQp0eW5zb2Uub3JnCnx8dHphbmdt 1020 | cy5jb20KCiEtLXR5cGVwYWQKfHx0eXBlcGFkLmNvbQpAQHx8d3d3LnR5cGVwYWQu 1021 | Y29tCkBAfHxzdGF0aWMudHlwZXBhZC5jb20KfHxibG9nLmV4cG9mdXR1cmVzLmNv 1022 | bQp8fGxlZ2FsdGVjaC5sYXcuY29tCnx8d3d3LmxvaWNsZW1ldXIuY29tCnx8bGF0 1023 | aW1lc2Jsb2dzLmxhdGltZXMuY29tCnx8YmxvZy5wYWxtLmNvbQohLXx8YmxvZy5z 1024 | ZWVzbWljLmNvbQp8fGJsb2dzLnRhbXBhYmF5LmNvbQp8fGNvbnRlc3RzLnR3aWxp 1025 | by5jb20KIS1sYXdwcm9mZXNzb3JzLnR5cGVwYWQuY29tL2NoaW5hX2xhd19wcm9m 1026 | CgohLS0tLS0tLS0tLS0tLVR3aXRlc2UtLS0tLQplbWJyLmluCmZhbmZvdS5pbQov 1027 | Xmh0dHBzPzpcL1wvW15cL10rZmFuZm91XC5pbS8KZmFuZm91LmRlCmZhbmZvdS5s 1028 | YQpndW9taW4udXMvbG9naW4KdC5maXNobm90ZS5uZXQKdHdpdHRlci5maXNobm90 1029 | ZS5uZXQKdHVpdGUuaW4KdHVpdGUuaW0KfHx0dWl0ZS5pbS8KCiEtLS0tLS0tLS0t 1030 | LS0tLS0tLS0tLS0tLS0tLVVVLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLnNy 1031 | Y2YudWNhbS5vcmcvc2Fsb24vCmh1bWFuaXRpZXMudWNoaWNhZ28uZWR1L2ZhY3Vs 1032 | dHkveXdhbmcvaGkKfGh0dHA6Ly91ZG4uY29tCi51ZG4uY29tCiEtYWxidW0udWRu 1033 | LmNvbQohLWJsb2cudWRuLmNvbQohLWJvb2ttYXJrLnVkbi5jb20vYm9va21hcmsK 1034 | IS1jaXR5LnVkbi5jb20KIS1kaWduZXdzLnVkbi5jb20vZm9ydW0vCiEtZm9ydW0u 1035 | dWRuLmNvbQoudWV1by5jb20KdWlnaHVyYml6Lm5ldAoudWxpa2UubmV0Cnx8dWx0 1036 | cmF2cG4uZnIKLnVsdHJldnBuLmZyCnVsdHJheHMuY29tCnVuY3ljbG9tZWRpYS5v 1037 | cmcKdW5jeWNsb3BlZGlhLmluZm8KfHx1bmhvbHlrbmlnaHQuY29tCi51bmkuY2MK 1038 | LnVuaXRlZGRhaWx5LmNvbS5teS9pbmRleC5waHA/Cnx8dW5rbm93bnNwYWNlLm9y 1039 | Zwp8fHVvY24ub3JnCnRvci51cGRhdGVzdGFyLmNvbQoudXBsb2FkNHUuaW5mbwou 1040 | dXBsb2FkZWQudG8vZmlsZQp8aHR0cDovL3VwbG9hZGVkLnRvL2ZpbGUKLnVwbG9h 1041 | ZHN0YXRpb24uY29tL2ZpbGUKd3d3LnVyYmFub3V0Zml0dGVycy5jb20KbXlzaGFy 1042 | ZS51cmwuY29tLnR3Lwp8fHVybGJvcmcuY29tCnx8dXJscGFyc2VyLmNvbQp1cy50 1043 | bwp8fHVzYWNuLmNvbQpiZXRhLnVzZWp1bXAuY29tCmVhcnRocXVha2UudXNncy5n 1044 | b3YvZXFjZW50ZXIvcmVjZW50ZXFzd3cvTWFwcy8xMC8xMDVfMzAucGhwCnx8dXNt 1045 | Yy5taWwKLnVzdHJlYW0udHYKfHx1c3RyZWFtLnR2Ci51dXNoYXJlLmNvbQp8aHR0 1046 | cDovL3V1c2hhcmUuY29tCi51d2FudHMuY29tCi51d2FudHMubmV0Cnx8dXlnaHVy 1047 | Y29uZ3Jlc3Mub3JnCgohLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1WVi0tLS0t 1048 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tCnY3MC51cwp8fHZhYXlvby5jb20KfHx2YWx1 1049 | ZS1kb21haW4uY29tCi52YW5lbXUuY24KLnZhbmlsbGEtanAuY29tCnx8dmFwdXJs 1050 | LmNvbQp8fHZjZi1vbmxpbmUub3JnCnx8dmNmYnVpbGRlci5vcmcKdmVvaC5jb20K 1051 | LnZlcml6b24ubmV0Cnx8dmVyeWJzLmNvbQoudmZ0LmNvbS50dwoudmlkZW9tby5j 1052 | b20KfHx2aWRvZW1vLmNvbQp8fHZpa2kuY29tCi52aW1lby5jb20KfHx2aW1lby5j 1053 | b20KfHx2aW5jbmQuY29tCnx8dmlubmlldi5jb20KdmlkZW8udGlzY2FsaS5pdC9j 1054 | YW5hbGkvdHJ1dmVvCnx8dm1peGNvcmUuY29tCmNuLnZvYS5tb2JpCnR3LnZvYS5t 1055 | b2JpCi52b2FjaGluZXNlYmxvZy5jb20KfHx2b2FjaGluZXNlYmxvZy5jb20KIS0t 1056 | dm9hY2hpbmVzZWJsb2cuY29tL2hlcWluZ2xpYW4Kdm9hbmV3cy5jb20vY2hpbmVz 1057 | ZQoudm90Lm9yZwp3d3cudm95LmNvbQp8fHd3dy52cG5jdXAuY29tCgohLS0tLS0t 1058 | LS0tLS0tLS0tLS0tLS0tLS0tLS1XVy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t 1059 | Cmxpc3RzLnczLm9yZy9hcmNoaXZlcy9wdWJsaWMKfHx3YWZmbGUxOTk5LmNvbQou 1060 | anl6ai53YXFuLmNvbQpodHRwOi8vanl6ai53YXFuLmNvbQoud2FoYXMuY29tCi53 1061 | YWlnYW9idS5jb20Kd2Fpa2V1bmcub3JnL3BocF93aW5kCi53YWl3YWllci5jb20K 1062 | fGh0dHA6Ly93YWl3YWllci5jb20Kd2FsbG9ybm90Lm9yZwp8fHdhbGxwYXBlcmNh 1063 | c2EuY29tCnx8d3d3Lndhbi1wcmVzcy5vcmcKfHx3YW5kZXJpbmdob3JzZS5uZXQK 1064 | fHx3YW5nYWZ1Lm5ldAp8fHdhbmdqaW5iby5vcmcKLndhbmdqaW5iby5vcmcKd2Fu 1065 | Z2xpeGlvbmcuY29tCndhbmdydW9zaHVpLm5ldAp3d3cud2FuZ3J1b3dhbmcub3Jn 1066 | CndhcGVkaWEubW9iaS96aHNpbXAKLm1ha3pob3Uud2FyZWhvdXNlMzMzLmNvbQp3 1067 | YXNoZW5nLm5ldAoud2F0dHBhZC5jb20KLndlYXJuLmNvbQp8fHdlYXJuLmNvbQp8 1068 | fGh1ZGF0b3JpcS53ZWIuaWQKfHx3ZWIycHJvamVjdC5uZXQKd2ViYmFuZy5uZXQK 1069 | d2Vicy10di5uZXQKd2Vic2hvdHMuY29tCndlYnNpdGVwdWxzZS5jb20vaGVscC90 1070 | ZXN0dG9vbHMuY2hpbmEtdGVzdC5odG1sCndlYndvcmtlcmRhaWx5LmNvbQp3ZWVl 1071 | d29vby5uZXQvaHNzL2hvdHNwb3RfY24KLndlZWttYWcuaW5mbwoud2Vmb25nLmNv 1072 | bQp3ZWlqaW5nc2hlbmcub3JnCndlbmdld2FuZy5jb20KLndlbmdld2FuZy5vcmcK 1073 | fHx3ZW5nZXdhbmcub3JnCi53ZW5odWkuY2gKfHx3ZW5rdS5jb20Kd2VueHVlY2l0 1074 | eS5jb20KLndlbnl1bmNoYW8uY29tCnx8d2VueXVuY2hhby5jb20KfHx3ZXN0Y2Eu 1075 | Y29tCmhrZy53ZXN0a2l0Lm5ldAp3d3cud2V0MTIzLmNvbQp3ZXRwdXNzeWdhbWVz 1076 | LmNvbQp3ZXhpYW9iby5vcmcKfHx3ZXhpYW9iby5vcmcKd2V6aGl5b25nLm9yZwp8 1077 | fHdlem9uZS5uZXQKLndmb3J1bS5jb20KfHx3Zm9ydW0uY29tLwp3ZzE5NjYuY29t 1078 | Ci53aGF0YmxvY2tlZC5jb20KfHx3aGF0YmxvY2tlZC5jb20KLndoaXBwZWRhc3Mu 1079 | Y29tCnx8d2h5eC5vcmcKemgudW5jeWNsb3BlZGlhLndpa2lhLmNvbQoyMTMuMjUx 1080 | LjE0NS45Ngp8fDIxMy4yNTEuMTQ1Ljk2Cnx8d2lraWxlYWtzLmNoCi53aWtpbGVh 1081 | a3Mub3JnCnx8d2lraWxlYWtzLm9yZwp8fGNvbGxhdGVyYWxtdXJkZXIuY29tCnx8 1082 | Y29sbGF0ZXJhbG11cmRlci5vcmcKd2lraWxpdnJlcy5pbmZvL3dpa2kvJUU5JTlC 1083 | JUI2JUU1JTg1JUFCJUU1JUFFJUFBJUU3JUFCJUEwCnx8d2lraW1hcGlhLm9yZwp8 1084 | fHNlY3VyZS53aWtpbWVkaWEub3JnCnx8d2lraW1lZGlhLm9yZy5tbwp8fHdpa2l3 1085 | aWtpLmpwCnx8d2lsbHcubmV0Cnx8d2luZG93c3Bob25lbWUuY29tCndpbndoaXNw 1086 | ZXJzLmluZm8KfHx3aXJlZGJ5dGVzLmNvbQp8fHdpcmVkcGVuLmNvbQoud2lzZXZp 1087 | ZC5jb20KfHx3aXNldmlkLmNvbQoud2l0b3BpYS5uZXQKd2pkLm5hbWUKLndvLnRj 1088 | Cnx8d29lc2VyLmNvbQoud29mYS51cwoud29tZW5zcmlnaHRzb2ZjaGluYS5vcmcK 1089 | fHx3b21lbnNyaWdodHNvZmNoaW5hLm9yZwoud29vcGllLmpwL3ZpZGVvCndvcmxk 1090 | am91cm5hbC5jb20KCiEtLS0tLS0tLS0tLS0tV29yZHByZXNzIEJsb2ctLS0tLQoh 1091 | LXx8dGVjaC5ibG9nLmFrbmluLm5hbWUKIS18fGF1dG9tYXR0aWMuY29tCiEtfHxi 1092 | aG9yb3dpdHouY29tCiEtfHxibG9nLmJpdHRvcnJlbnQuY29tCiEtfHxibG9nbWF2 1093 | ZXJpY2suY29tCiEtfHxicmVha2luZ25ld3N3b3JsZC5vcmcKIS18fGJsb2dzLmNu 1094 | bi5jb20KIS18fGJsb2cuZHJha2VuZ3Jlbi5jb20KIS18fGJsb2cuZmVlZGx5LmNv 1095 | bQohLXx8Zm91cndhbGxzYW5kYXJvb2YuY29tCiEtfHxoZXJic3V0dGVyLmNvbQoh 1096 | LXx8aGl2ZW1pbmRzLmNvLnVrCiEtfHxob3Bhcm91bmR0aGVnbG9iZS5jb20KIS18 1097 | fGh1bmJ1bGluLmNvbQohLXx8aWNhbmhhc2NoZWV6YnVyZ2VyLmNvbQohLXx8c3Vw 1098 | cG9ydC5pbnRlbnNlZGViYXRlLmNvbQohLXx8YmxvZy5saW5rZWRpbi5jb20KIS18 1099 | fG1lbnJvLm1lCiEtfHxtaWNoYWVsZGVoYWFuLm5ldAohLXx8bXlub2tpYWJsb2cu 1100 | Y29tCiEtfHxuYW5kYWxhbGEuY29tCiEtfHxwMnRoZW1lLmNvbQohLXx8cGl4ZWxi 1101 | cmVhZC5jb20KIS18fGJsb2cucGl4ZWxwaXBlLmNvbQohLXx8YmxvZy5wb2xsZGFk 1102 | ZHkuY29tCiEtfHxyYXdmb29kc29zLmNvbQohLXx8cmF5b3VzLmNvbQohLXx8c2Vt 1103 | aWNvbG9uYXBwcy5jb20KIS18fHNoYXJwaW5zYW5kaWVnby5jb20KIS18fHNtZWRp 1104 | by5jb20KIS18fHN0ZXZlYmxhbmsuY29tCiEtfHxibG9nLnN5bWJpYW4ub3JnCiEt 1105 | fHx0aGVicmlnYWRlLmNvbQohLXx8YmxvZy50aGluZ2xhYnMuY29tCiEtfHxjaGlu 1106 | YS5ibG9ncy50aW1lLmNvbQohLXx8YmxvZy50aW55cGljLmNvbQohLXx8YmxvZy50 1107 | eXBla2l0LmNvbQohLXx8YmxvZy53YWtvb3BhLmNvbQohLXx8d2F0dHN1cHdpdGh0 1108 | aGF0LmNvbQohLXx8d2VibWluay5jb20KIS1jYWl0aW5nNjY2LndvcmRwcmVzcy5j 1109 | b20KIS1yZmF1bnBsdWdnZWQud29yZHByZXNzLmNvbQohLWVuLndvcmRwcmVzcy5j 1110 | b20vdGFnCiEtemgtY24ud29yZHByZXNzLmNvbQohLXpoLXNnLndvcmRwcmVzcy5j 1111 | b20KIS16aGVueGlhbmcud29yZHByZXNzLmNvbQohLXxodHRwczovLyoud29yZHBy 1112 | ZXNzLmNvbQoud29yZHByZXNzLmNvbQp8fHdvcmRwcmVzcy5jb20KIS18aHR0cDov 1113 | L3dwLmNvbS8KIS1AQHxodHRwOi8vd29yZHByZXNzLmNvbQohLUBAfGh0dHBzOi8v 1114 | d29yZHByZXNzLmNvbQohLUBAfHxmaWxlcy53b3JkcHJlc3MuY29tCiEtfHxhbmRy 1115 | b2lkLndvcmRwcmVzcy5vcmcKIS18fGlvcy53b3JkcHJlc3Mub3JnCiEtfHx3b3Jt 1116 | c2N1bHB0b3IuY29tCiEtfHx3cC5tZQoKLndwb2ZvcnVtLmNvbQp8fHdwb2ZvcnVt 1117 | LmNvbQoud3FsaHcuY29tCi53cXlkLm9yZwp8fHdxeWQub3JnCndyZXRjaC5jYwou 1118 | Y2hpbmVzZS53c2ouY29tL2diCnxodHRwOi8vY2hpbmVzZS53c2ouY29tL2diCi53 1119 | dGZwZW9wbGUuY29tCi53dWFsYS5jb20Kd3VlcmthaXhpLmNvbQp3dWZpLm9yZy50 1120 | dwp3dWppZS5uZXQKd3VrYW5ncnVpLm5ldAp3enlib3kuaW0vcG9zdC8xNjAKCiEt 1121 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVhYLS0tLS0tLS0tLS0tLS0tLS0tLS0t 1122 | LS0tLS0KeDE5NDl4LmNvbQp4MzY1eC5jb20KLnhib29rY24uY29tCnx8eGJvb2tj 1123 | bi5jb20KeC54Y2l0eS5qcAoueGNyaXRpYy5jb20KZGVzdGlueS54ZmlsZXMudG8v 1124 | dWJidGhyZWFkcwoueGZtLnBwLnJ1CnhoNG4uY24vYmxvZwp4aGFtc3Rlci5jb20K 1125 | b25lLnh0aG9zdC5pbmZvCi54aWFvY2h1bmNuanAuY29tCnMueGlhb2QuaW4KLnhp 1126 | YW9oZXhpZS5jb20KfHx4aWFvbWEub3JnCnx8eGlhb2hleGllLmNvbQp4aWV6aHVh 1127 | LmNvbQoueGluZy5jb20KfGh0dHA6Ly94aW5nLmNvbQoueGlubWlhby5jb20uaGsK 1128 | fHx4aW5taWFvLmNvbS5oawp4aW5zaGVuZy5uZXQKeGluc2hpanVlLmNvbQp4aW5o 1129 | dWFuZXQub3JnCnhpemFuZy16aGl5ZS5vcmcKfHx4bWwtdHJhaW5pbmctZ3VpZGUu 1130 | Y29tCnhtb3ZpZXMuY29tCnx8eHB1ZC5vcmcKfHxrMi54cmVhLmNvbQpibG9nLnh1 1131 | aXRlLm5ldAp2bG9nLnh1aXRlLm5ldAp4dXpoaXlvbmcubmV0Cnh2ZWRpb3MuY29t 1132 | Ci54dmlkZW9zLmNvbQoueHhiYnguY29tCnx8eHh4eC5jb20uYXUKeHlzLm9yZwp4 1133 | eXNibG9ncy5vcmcKCiEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVlZLS0tLS0t 1134 | LS0tLS0tLS0tLS0tLS0tLS0tLS0KcGFnZS5iaWQueWFob28uY29tCmJsb2dzLnlh 1135 | aG9vLmNvLmpwCmJ1eS55YWhvby5jb20udHcvZ2RzYWxlCmhrLnlhaG9vLmNvbQpo 1136 | ay5rbm93bGVkZ2UueWFob28uY29tCmhrLm15YmxvZy55YWhvby5jb20KaGsubmV3 1137 | cy55YWhvby5jb20KaGsucmQueWFob28uY29tCmhrLnNlYXJjaC55YWhvby5jb20v 1138 | c2VhcmNoCmhrLnZpZGVvLm5ld3MueWFob28uY29tL3ZpZGVvCm1lbWUueWFob28u 1139 | Y29tCnR3LnlhaG9vLmNvbQp0dy5teWJsb2cueWFob28uY29tCnR3Lm5ld3MueWFo 1140 | b28uY29tCnB1bHNlLnlhaG9vLmNvbQp1cGNvbWluZy55YWhvby5jb20KdmlkZW8u 1141 | eWFob28uY29tCiEtLXZpZGVvLnlhaG9vLmNvbS93YXRjaAp8fHlhaG9vLmNvbS5o 1142 | awpibG9nLnlhbS5jb20KLm15bWVkaWEueWFtLmNvbQp8aHR0cDovL215bWVkaWEu 1143 | eWFtLmNvbQpuLnlhbS5jb20KbmV3cy55YW0uY29tCi55ZHkuY29tCnx8eWVlbG91 1144 | LmNvbQp5ZWV5aS5jb20KeWVnbGUubmV0Cnx8eWVnbGUubmV0Cnlmcm9nLmNvbQou 1145 | eWkub3JnCi55aWRpby5jb20KfHx5aWRpby5jb20KeWlsdWJicy5jb20KeGEueWlt 1146 | Zy5jb20KLnlpcHViLmNvbQp8fHlpcHViLmNvbQoueW9naWNoZW4ub3JnCnx8eW9n 1147 | aWNoZW4ub3JnCnlvbmcuaHUKZm9ydW0ueW9ya2Jicy5jYQp8fHlvdXh1LmluZm8K 1148 | Lnl5aWkub3JnCnx8eXlpaS5vcmcKLnl6emsuY29tCnx8eXp6ay5jb20KLnlvdWpp 1149 | enouY29tCnx8eW91aml6ei5jb20KeW91bWFrZXIuY29tCi55b3VwYWkub3JnCnx8 1150 | eW91cGFpLm9yZwoueW91ci1mcmVlZG9tLm5ldAoueW91c2VuZGl0LmNvbQp8fHlv 1151 | dXNlbmRpdC5jb20KeW91dGhiYW8uY29tCi55b3V0aG5ldHJhZGlvLm9yZy90bWl0 1152 | L2ZvcnVtCmJsb2cueW91dGh3YW50LmNvbS50dwpzaGFyZS55b3V0aHdhbnQuY29t 1153 | LnR3CnRvcGljLnlvdXRod2FudC5jb20udHcKLnlvdXBvcm4uY29tCnxodHRwOi8v 1154 | eW91cG9ybi5jb20KeW91dHUuYmUKLnlvdXR1YmUuY29tCnx8eW91dHViZS5jb20K 1155 | IS0tL15odHRwcz86XC9cL1teXC9dK3lvdXR1YmVcLmNvbS8KLnlvdXR1YmUtbm9j 1156 | b29raWUuY29tCi55b3V0dWJlY24uY29tCmJsb2cueW91eHUuaW5mby8yMDEwLzAz 1157 | LzE0L3dlc3QtY2hhbWJlcgohLVlvdXR1YmUgQ0ROCi55dGltZy5jb20KeXRodC5u 1158 | ZXQKeXVhbm1pbmcubmV0Cnx8eXVuY2hhby5uZXQKfHx5dmVzZ2VsZXluLmNvbQp5 1159 | eDUxLm5ldAoKIS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tWlotLS0tLS0tLS0t 1160 | LS0tLS0tLS0tLS0tLS0tLQp8fHphbm5lbC5jb20KfHx0YXAxMS5jb20KLnphb2Jh 1161 | by5jb20KfGh0dHA6Ly96YW9iYW8uY29tCiEtLWx1bnRhbi56YW9iYW8uY29tCiEt 1162 | LS56YW9iYW8uY29tL3NwZWNpYWwvY2hpbmEvY25wb2wvcGFnZXMyCiEtLS56YW9i 1163 | YW8uY29tL3NwZWNpYWwvc2l0ZW1hcAohLS0uemFvYmFvLmNvbS5zZwohLS18fHph 1164 | b2Jhby5jb20uc2cKLnphb3pvbi5jb20KfHx6YXJpYXMuY29tCnd3dy56YXVydXMu 1165 | b3JnLnVrCi56ZG5ldC5jb20udHcvbmV3cy9zb2Z0d2FyZS8wLDIwMDAwODU2Nzgs 1166 | MjAxMTExODcsMDAKLnplbmdqaW55YW4ub3JnCnx8emV1dGNoLmNvbQouemhhbmJp 1167 | bi5uZXQKfHx6aGFuYmluLm5ldAouemhpbmVuZ2x1eW91LmNvbQp6aG9uZ2d0dW90 1168 | ZXNlLm5ldAp8fHpob25nbWVuZy5vcmcKLnpob25neGluZzloYW8ubmV0LmNuCnx8 1169 | emhyZWFkZXIuY29tCnpodWZlbmcubWUKLnppZGR1LmNvbS9kb3dubG9hZAouemth 1170 | aXAuY29tCnx8emthaXAuY29tCnx8emxpYi5uZXQvCi56b25hZXVyb3BhLmNvbQp8 1171 | fHpvbmFldXJvcGEuY29tCi56b296bGUubmV0CndyaXRlci56b2hvLmNvbQouenNo 1172 | YXJlLm5ldC9kb3dubG9hZAp8fHp1aWh1bHUubmV0Ci56dWlodWx1Lm5ldAouenVv 1173 | LmxhCnx8enVvLmxhCi56dW9sYS5jb20KfHx6dW9sYS5jb20Kenl6Zy51cwoKIS0t 1174 | LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tT3RoZXItLS0tLS0tLS0tLS0tLS0tLS0t 1175 | LS0tCmZhbHVuCmZyZWVuZXQKcT1mcmVlZG9tCnElM0RmcmVlZG9tCnJlbWVtYmVy 1176 | aW5nX3RpYW5hbm1lbl8yMF95ZWFycwpzZWFyY2gqc2FmZXdlYgpxPXRyaWFuZ2xl 1177 | CnElM0RUcmlhbmdsZQp1bHRyYXJlYWNoCnVsdHJhc3VyZgp6aGVuZ2ppYW4KCiEt 1178 | LUJhIEtlCiVFNyVCRCVBMiVFOCVBRiVCRQohLS1CYW8gVG9uZwpzZWFyY2gqJUU5 1179 | JUIyJThEJUU1JUJEJUE0CiEtLUJvIFh1bgpzZWFyY2gqJUU1JThEJTlBJUU4JUFF 1180 | JUFGCiEtLURhIEppIFl1YW4Kc2VhcmNoKiVFNSVBNCVBNyVFNyVCQSVBQSVFNSU4 1181 | NSU4MwohLS1EaWFvIFl1IERhbwpzZWFyY2gqJUU5JTkyJTkzJUU5JUIxJUJDJUU1 1182 | JUIyJTlCCiEtLWRvbmcgdGFpIHdhbmcKJUU1JThBJUE4JUU2JTgwJTgxJUU3JUJE 1183 | JTkxCiEtLUR1byBXZWkgKGhhbnMvaGFudCkKc2VhcmNoKiVFNSVBNCU5QSVFNyVC 1184 | NiVBRApzZWFyY2gqJUU1JUE0JTlBJUU3JUJCJUI0CnNlYXJjaCpmcmVlZ2F0ZQoh 1185 | LS0oTGkpIEZhIEh1aQpzZWFyY2gqJUU2JUIzJTk1JUU0JUJDJTlBCiEtLWZhIGx1 1186 | biBkYSBmYQolRTYlQjMlOTUlRTglQkQlQUUlRTUlQTQlQTclRTYlQjMlOTUKIS0t 1187 | RmEgTHVuIEdvbmc6IFRyYWRpdGlvbmFsIENoaW5lc2UKJUU2JUIzJTk1JUU4JUJD 1188 | JUFBJUU1JThBJTlGCiEtLUZhIEx1biBHb25nOiBTaW1wbGlmaWVkIENoaW5lc2UK 1189 | JUU2JUIzJTk1JUU4JUJEJUFFJUU1JThBJTlGCiEtLUh1IEhhaSBGZW5nCiVFOCU4 1190 | MyVBMSVFNiVCNSVCNyVFNSVCMyVCMAohLS1IdSBIYWkgUWluZwolRTglODMlQTEl 1191 | RTYlQjUlQjclRTYlQjglODUKIS0tSHVhIEh1YSBHb25nIFppCnNlYXJjaColRTgl 1192 | OEElQjElRTglOEElQjElRTUlODUlQUMlRTUlQUQlOTAKIS0tSmkgWXVhbgpzZWFy 1193 | Y2gqJUJDJUNEJUQ0JUFBCiEtLUppYSBNaSBEYWkgTGkgKEdCL1U4KQpzZWFyY2gq 1194 | JUJDJUQzJUMzJURDJUI0JUZBJUMwJUVECnNlYXJjaColRTUlOEElQTAlRTUlQUYl 1195 | ODYlRTQlQkIlQTMlRTclOTAlODYKIS0tSmlhbmcgTGl1IE1hbmcKc2VhcmNoKiVF 1196 | NiVCMSU5RiVFNiVCNSU4MSVFNiVCMCU5MwohLS1LYW4gWmhvbmcgR3VvCnNlYXJj 1197 | aColRTclOUMlOEIlRTQlQjglQUQlRTUlOUIlQkQKIS0tTGl1IFNpCnNlYXJjaCol 1198 | RTUlODUlQUQlRTUlOUIlOUIKIS0tTGl1IFhpYW8gQm8KJUU1JTg4JTk4JUU2JTk5 1199 | JTkzJUU2JUIzJUEyCiEtLU1laSBHdW8gWmhpIFlpbgolRTclQkUlOEUlRTUlOUIl 1200 | QkQlRTQlQjklOEIlRTklOUYlQjMKIS0tTWluIEppbiBEYW5nCiVFNiVCMCU5MSVF 1201 | OCVCRiU5QiVFNSU4NSU5QQohLS0oTm9uZykgTWluIFl1biAoRG9uZyBIdWkpCiVF 1202 | NiVCMCU5MSVFOCVCRiU5MAohLS1TZSBRaW5nCnNlYXJjaColRTglODklQjIlRTYl 1203 | ODMlODUKIS0tV2FuZyBEYW4KJUU3JThFJThCJUU0JUI4JUI5CiEtLVdhbmcgVGUK 1204 | c2VhcmNoKiVFNyVCRCU5MSVFNyU4OSVCOQohLS1XYW5nIFhpIFpoZQpzZWFyY2gq 1205 | JUU3JThFJThCJUU1JUI4JThDJUU1JTkzJUIyCiEtLVdlaSBKaW5nIFNoZW5nCnNl 1206 | YXJjaColRTklQUQlOEYlRTQlQkElQUMlRTclOTQlOUYKIS0tV2VuIFppIFl1CnNl 1207 | YXJjaColRTYlOTYlODclRTUlQUQlOTclRTclOEIlQjEKIS0tV28gRGUgRmVuIERv 1208 | dQpzZWFyY2gqJUU2JTg4JTkxJUU3JTlBJTg0JUU1JUE1JThCJUU2JTk2JTk3CiEt 1209 | LVd1IEppZQpzZWFyY2gqJUU2JTk3JUEwJUU3JTk1JThDCiEtLVhpZSBFCnNlYXJj 1210 | aColRTklODIlQUElRTYlODElQjYKIS0tWGkgTmFvCnNlYXJjaColRTYlQjQlOTcl 1211 | RTglODQlOTEKIS0tWGluIFRhbmcgUmVuCnNlYXJjaColRTYlOTYlQjAlRTUlOTQl 1212 | OTAlRTQlQkElQkEKIS0tWGluIFl1IFNpCnNlYXJjaColRTYlOTYlQjAlRTglQUYl 1213 | QUQlRTQlQjglOUQKIS0tWHVlIFl1bgpzZWFyY2gqJUU1JUFEJUE2JUU4JUJGJTkw 1214 | CiEtLVpoYW8gWmkgWWFuZwolRTglQjUlQjUlRTclQjQlQUIlRTklOTglQjMKIS0t 1215 | WmhvbmcgR29uZwpzZWFyY2gqJUU0JUI4JUFEJUU1JThBJTlGCiEtLVpob25nIEd1 1216 | byBMdW4gVGFuCnNlYXJjaColRTQlQjglQUQlRTUlOUIlQkQlRTglQUUlQkElRTUl 1217 | OUQlOUIKIS0tWmhvbmcgWHVhbiBCdQpzZWFyY2gqJUU0JUI4JUFEJUU1JUFFJUEz 1218 | JUU5JTgzJUE4CgohLS0tLS0tLS0tLS0tLWVuLldpa2lwZWRpYS0tLS0tCmVuLndp 1219 | a2lwZWRpYS5vcmcvd2lraS9Cb29rX2J1cm5pbmcKZW4ud2lraXBlZGlhLm9yZy93 1220 | aWtpL0NlbnNvcnNoaXBfaW5fdGhlX1Blb3BsZSUyN3NfUmVwdWJsaWNfb2ZfQ2hp 1221 | bmEKZW4ud2lraXBlZGlhLm9yZy93aWtpL0NoYXJ0ZXJfMDgKZW4ud2lraXBlZGlh 1222 | Lm9yZy93aWtpL0RhbGFpX0xhbWEKZW4ud2lraXBlZGlhLm9yZy93aWtpL0RlZXBf 1223 | cGFja2V0X2luc3BlY3Rpb24KZW4ud2lraXBlZGlhLm9yZy93aWtpL0ZyZWVnYXRl 1224 | CmVuLndpa2lwZWRpYS5vcmcvd2lraS9Hb2xkZW5fU2hpZWxkX1Byb2plY3QKZW4u 1225 | d2lraXBlZGlhLm9yZy93aWtpL0hvbmdfS29uZwplbi53aWtpcGVkaWEub3JnL3dp 1226 | a2kvSHVhbmdfUWkKZW4ud2lraXBlZGlhLm9yZy93aWtpL0ludGVybmV0X2NlbnNv 1227 | cnNoaXAKZW4ud2lraXBlZGlhLm9yZy93aWtpL0phdmFfQW5vbl9Qcm94eQplbi53 1228 | aWtpcGVkaWEub3JnL3dpa2kvTGl1X1hpYW9ibwplbi53aWtpcGVkaWEub3JnL3dp 1229 | a2kvU2hpX1Rhbwplbi53aWtpcGVkaWEub3JnL3dpa2kvVGFua19tYW4KZW4ud2lr 1230 | aXBlZGlhLm9yZy93aWtpL1RpYW5hbm1lbl9QYXBlcnMKZW4ud2lraXBlZGlhLm9y 1231 | Zy93aWtpL1RpYW5hbm1lbl9TcXVhcmVfcHJvdGVzdHNfb2ZfMTk4OQplbi53aWtp 1232 | cGVkaWEub3JnL3dpa2kvVGliZXRhbl9pbmRlcGVuZGVuY2VfbW92ZW1lbnQKCiEt 1233 | LS0tLS0tLS0tLS0temguV2lraXBlZGlhLS0tLS0tLS0tLQp6aC53aWtpcGVkaWEu 1234 | b3JnL3dpa2kvU3BlY2lhbDpDb250cmlidXRpb25zCnpoLndpa2lwZWRpYS5vcmcv 1235 | d2lraS9XaWtpcGVkaWE6JUU5JUEwJTgxJUU5JTlEJUEyJUU1JUFEJTk4JUU1JUJC 1236 | JUEyJUU4JUE4JThFJUU4JUFCJTk2CnpoLm0ud2lraXBlZGlhLm9yZwp6aC53aWtp 1237 | c291cmNlLm9yZwohLS01MTIgRGEgRGkgWmhlbgp6aC53aWtpcGVkaWEub3JnKjUx 1238 | MiVFNSVBNCVBNyVFNSU5QyVCMCVFOSU5QyU4NwohLS0wOCBYaWFuIFpoYW5nCnpo 1239 | Lndpa2lwZWRpYS5vcmcqMDglRTUlQUUlQUElRTclQUIlQTAKIS0tMTk4OSBOaWFu 1240 | CnpoLndpa2lwZWRpYS5vcmcqMTk4OSVFNSVCOSVCNAohLS02MTAgQmFuIEdvbmcg 1241 | U2hpCnpoLndpa2lwZWRpYS5vcmcqNjEwJUU4JUJFJUE2JUU1JTg1JUFDJUU1JUFF 1242 | JUE0CiEtLUFudGktQ05OCnpoLndpa2lwZWRpYS5vcmcqQW50aS1DTk4KIS0tQSBQ 1243 | ZWkgQSBXYW5nIEppbiBNZWkKemgud2lraXBlZGlhLm9yZyolRTklOTglQkYlRTYl 1244 | QjIlOUIlQzIlQjclRTklOTglQkYlRTYlOTclQkElRTYlOTklOEIlRTclQkUlOEUK 1245 | IS0tQWkgV2VpIFdlaQp6aC53aWtpcGVkaWEub3JnKiVFOCU4OSVCRSVFNiU5QyVB 1246 | QSVFNiU5QyVBQQohLS1CYW4gQ2hhbgp6aC53aWtpcGVkaWEub3JnKiVFNyU4RiVB 1247 | RCVFNyVBNiU4NQohLS1CYW8gVG9uZwp6aC53aWtpcGVkaWEub3JnKiVFOSVCMiU4 1248 | RCVFNSVCRCVBNAohLS1CZWkgSmluZyBHYW8gWGlhbyBYdWUgU2hlbmcgWmkgWmhp 1249 | IExpYW4gSGUgSHVpCnpoLndpa2lwZWRpYS5vcmcqJUU1JThDJTk3JUU0JUJBJUFD 1250 | JUU5JUFCJTk4JUU2JUEwJUExJUU1JUFEJUE2JUU3JTk0JTlGJUU4JTg3JUFBJUU2 1251 | JUIyJUJCJUU4JTgxJTk0JUU1JTkwJTg4JUU0JUJDJTlBCiEtLUJlaSBKaW5nIFpo 1252 | aSBDaHVuCnpoLndpa2lwZWRpYS5vcmcqJUU1JThDJTk3JUU0JUJBJUFDJUU0JUI5 1253 | JThCJUU2JTk4JUE1CiEtLUJvIFhpIExhaQp6aC53aWtpcGVkaWEub3JnKiVFOCU5 1254 | NiU4NCVFNyU4NiU5OSVFNiU5RCVBNQohLS1CbyBYdW4Kemgud2lraXBlZGlhLm9y 1255 | Zy96aC10dy8lRTUlOEQlOUElRTglQUUlQUYKemgud2lraXBlZGlhLm9yZy93aWtp 1256 | LyVFNSU4RCU5QSVFOCVBRSVBRgohLS1CdSBMYSBHZSBaaGkgQ2h1bgp6aC53aWtp 1257 | cGVkaWEub3JnKiVFNSVCOCU4MyVFNiU4QiU4OSVFNiVBMCVCQyVFNCVCOSU4QiVF 1258 | NiU5OCVBNQohLS1DYWkgTGluZwp6aC53aWtpcGVkaWEub3JnKiVFNiU5RiVCNCVF 1259 | NyU4RSVCMgohLS1DYW5nIFlhbmcgSmlhIEN1bwp6aC53aWtpcGVkaWEub3JnKiVF 1260 | NCVCQiU5MyVFNSVBNCVBRSVFNSU5OCU4OSVFNiU4RSVBQQohLS1DYW8gQ2hhbmcg 1261 | UWluZwp6aC53aWtpcGVkaWEub3JnKiVFNiU5QiVCOSVFOSU5NSVCNyVFOSU5RCU5 1262 | MgohLS1EYSBKaSBZdWFuCnpoLndpa2lwZWRpYS5vcmcqJUU1JUE0JUE3JUU3JUI0 1263 | JTgwJUU1JTg1JTgzCiEtLURhIEppIFl1YW4gU2hpIEJhbyAoemgtaGFucykKemgu 1264 | d2lraXBlZGlhLm9yZyolRTUlQTQlQTclRTclQkElQUElRTUlODUlODMlRTYlOTcl 1265 | QjYlRTYlOEElQTUKIS0tRGEgTGFpIExhIE1hCnpoLndpa2lwZWRpYS5vcmcqJUU4 1266 | JUJFJUJFJUU4JUI1JTk2JUU1JTk2JTg3JUU1JTk4JTlCCiEtLURhIExhbiBTaGEg 1267 | TGEKemgud2lraXBlZGlhLm9yZyolRTklODElOTQlRTglOTglQUQlRTglOTYlQTkl 1268 | RTYlOEIlODkKIS0tRGEgU2hlIEd1byBKSQp6aC53aWtpcGVkaWEub3JnKiVFNSVB 1269 | NCVBNyVFOCVCNSVBNiVFNSU5QiVCRCVFOSU5OSU4NQohLS1EYW4gWmVuZyBKaWEg 1270 | Q3VvCnpoLndpa2lwZWRpYS5vcmcqJUU0JUI4JUI5JUU1JUEyJTlFJUU1JTk4JTg5 1271 | JUU2JThFJUFBCiEtLUR1byBXZWkKemgud2lraXBlZGlhLm9yZyolRTUlQTQlOUEl 1272 | RTclQkIlQjQKemgud2lraXBlZGlhLm9yZyolRTUlQTQlOUElRTclQjYlQUQKIS0t 1273 | RSBMdW8gU2kgKHpoLWhhbnQpCnpoLndpa2lwZWRpYS5vcmcqJUU0JUJGJTg0JUU3 1274 | JUJFJTg1JUU2JTk2JUFGCiEtLUZhbiBIdWEgU2hpIExpCnpoLndpa2lwZWRpYS5v 1275 | cmcqJUU1JThGJThEJUU1JThEJThFJUU1JThBJUJGJUU1JThBJTlCCiEtLUZhbmcg 1276 | SHVvIENoYW5nIENoZW5nCnpoLndpa2lwZWRpYS5vcmcqJUU5JTk4JUIyJUU3JTgx 1277 | JUFCJUU5JTk1JUJGJUU1JTlGJThFCiEtLUZhbmcgTGkgWmhpCnpoLndpa2lwZWRp 1278 | YS5vcmcqJUU2JTk2JUI5JUU1JThBJUIxJUU0JUI5JThCCiEtLUZhbmcgWmhvdSBa 1279 | aQp6aC53aWtpcGVkaWEub3JnKiVFNiU5NiVCOSVFOCU4OCU5RiVFNSVBRCU5MAoh 1280 | LS1GZW4gUWluZwp6aC53aWtpcGVkaWEub3JnKiVFNiU4NCVBNCVFOSU5RCU5Mgoh 1281 | LS1GZW5nIENvbmcgRGUKemgud2lraXBlZGlhLm9yZyolRTUlQjAlODElRTQlQkIl 1282 | OEUlRTUlQkUlQjcKIS0tRmVuZyBaaGVuZyBIdQp6aC53aWtpcGVkaWEub3JnKiVF 1283 | NSU4NiVBRiVFNiVBRCVBMyVFOCU5OSU4RQohLS1HYW8gWmhpIFNoZW5nCnpoLndp 1284 | a2lwZWRpYS5vcmcqJUU5JUFCJTk4JUU2JTk5JUJBJUU2JTk5JTlGCiEtLURpIFNo 1285 | aSBZaSBTaGkgQmFuIENoYW4gRXIgRXIgRGUgTmkgR2VuZyBEZW5nIFF1ZSBKaSBO 1286 | aSBNYQp6aC53aWtpcGVkaWEub3JnKiVFNiU5QiVCNCVFNyU5OSVCQiVFNyVBMiVC 1287 | QSVFNSU5MCU4OSVFNSVCMCVCQyVFNyU5MSVBQQohLS1HYWkgR2UgTGkgQ2hlbmcK 1288 | emgud2lraXBlZGlhLm9yZyolRTYlOTQlQjklRTklOUQlQTklRTUlOEUlODYlRTcl 1289 | QTglOEIKIS0tR2FvIFhpbmcgSmlhbgp6aC53aWtpcGVkaWEub3JnKiVFOSVBQiU5 1290 | OCVFOCVBMSU4QyVFNSU4MSVBNQohLS1HRlcKemgud2lraXBlZGlhLm9yZypHRlcK 1291 | IS0tR29vZ2xlIFNoZW4gQ2hhCnpoLndpa2lwZWRpYS5vcmcqR29vZ2xlJUU1JUFF 1292 | JUExJUU2JTlGJUE1CiEtLUd1IEdlIFR1aSBDaHUgWmhvbmcgR3VvIFNoaSBKaWFu 1293 | IChHb29nbGUpCnpoLndpa2lwZWRpYS5vcmcvemgtY24vJUU4JUIwJUI3JUU2JUFE 1294 | JThDJUU5JTgwJTgwJUU1JTg3JUJBJUU0JUI4JUFEJUU1JTlCJUJEJUU0JUJBJThC 1295 | JUU0JUJCJUI2CnpoLndpa2lwZWRpYS5vcmcvd2lraS8lRTglQjAlQjclRTYlQUQl 1296 | OEMlRTklODAlODAlRTUlODclQkElRTQlQjglQUQlRTUlOUIlQkQlRTQlQkElOEIl 1297 | RTQlQkIlQjYKIS0tR3VhbmcgWmhvdSBTaGkgWGluIFRhbmcgU2hpIEppYW4Kemgu 1298 | d2lraXBlZGlhLm9yZy93aWtpLyVFNSVCOSVCRiVFNSVCNyU5RSVFNSVCOCU4MiVF 1299 | NiU5NiVCMCVFNSVBMSU5OCVFNCVCQSU4QiVFNCVCQiVCNgohLS1HdW8gQmFvCnpo 1300 | Lndpa2lwZWRpYS5vcmcqJUU1JTlCJUJEJUU0JUJGJTlECiEtLUd1byBCbyBYaW9u 1301 | Zwp6aC53aWtpcGVkaWEub3JnKiVFOSU4MyVBRCVFNCVCQyVBRiVFOSU5QiU4NAoh 1302 | LS1HdW8gTmVpIEFuIFF1YW4gQmFvIFdlaSBaaGkgRHVpCnpoLndpa2lwZWRpYS5v 1303 | cmcqJUU1JTlCJUJEJUU1JTg2JTg1JUU1JUFFJTg5JUU1JTg1JUE4JUU0JUJGJTlE 1304 | JUU1JThEJUFCJUU2JTk0JUFGJUU5JTk4JTlGCiEtLUd1byBXdSBZdWFuIEZhbmcg 1305 | RmFuIEhlIENodSBMaSBYaWUgSmlhbyBXZW4gVGkgQmFuIEdvbmcgU2hpCnpoLndp 1306 | a2lwZWRpYS5vcmcqJUU1JTlDJThCJUU1JThCJTk5JUU5JTk5JUEyJUU5JTk4JUIy 1307 | JUU3JUFGJTg0JUU1JTkyJThDJUU4JTk5JTk1JUU3JTkwJTg2JUU5JTgyJUFBJUU2 1308 | JTk1JTk5JUU1JTk1JThGJUU5JUExJThDJUU4JUJFJUE2JUU1JTg1JUFDJUU1JUFF 1309 | JUE0CiEtLUhlIEd1byBRaWFuZwp6aC53aWtpcGVkaWEub3JnKiVFOCVCNCVCQSVF 1310 | NSU5QiVCRCVFNSVCQyVCQQohLS1IZSBTaGFuZwp6aC53aWtpcGVkaWEub3JnKiVF 1311 | NiVCMiVCMyVFNiVBRSU4NwohLS1Ib3UgRGUgSmlhbgp6aC53aWtpcGVkaWEub3Jn 1312 | KiVFNCVCRSVBRiVFNSVCRSVCNyVFNSVCQiVCQQp6aC53aWtpcGVkaWEub3JnKiVF 1313 | NCVCRSVBRiVFOCVCNSU5QiVFNSU5QiVBMCVFNiVCMSU5RgohLS1IdSBKaWEgKFNo 1314 | ZSBIdWkgSHVvIERvbmcgSmlhKSAoK1JlZGlyKQp6aC53aWtpcGVkaWEub3JnKiVF 1315 | OCU4MyVBMSVFNCVCRCVCM18lMjgxOTczJUU1JUI5JUI0JTI5CnpoLndpa2lwZWRp 1316 | YS5vcmcqJUU4JTgzJUExJUU0JUJEJUIzXyUyOCVFNyVBNCVCRSVFNiVCNCVCQiVF 1317 | NSU4QiU5NSVFNSVBRSVCNiUyOQohLS1IdSBKaW5nIFRhbwp6aC53aWtpcGVkaWEu 1318 | b3JnKiVFOCU4MyVBMSVFOSU5NCVBNiVFNiVCNiU5QgohLS1IdSBQaW5nIChadW8g 1319 | SmlhKQp6aC53aWtpcGVkaWEub3JnKiVFOCU4MyVBMSVFNSVCOSVCM18lMjglRTQl 1320 | QkQlOUMlRTUlQUUlQjYlMjkKIS0tSHUgV2VuIFRpIFpoaSAoV2hvJldlbiA6RCkK 1321 | emgud2lraXBlZGlhLm9yZyolRTglODMlQTElRTYlQjglQTklRTQlQkQlOTMlRTUl 1322 | ODglQjYKIS0tSHUgWWFvIEJhbmcKemgud2lraXBlZGlhLm9yZyolRTglODMlQTEl 1323 | RTglODAlODAlRTklODIlQTYKIS0tSHVhIEd1byBGZW5nICh6aC1oYW5zL2hhbnQp 1324 | CnpoLndpa2lwZWRpYS5vcmcqJUU1JThEJThFJUU1JTlCJUJEJUU5JTk0JThCCnpo 1325 | Lndpa2lwZWRpYS5vcmcqJUU4JThGJUFGJUU1JTlDJThCJUU5JThCJTkyCiEtLUh1 1326 | YSBYaWEgV2VuIFpoYWkKemgud2lraXBlZGlhLm9yZyolRTUlOEQlOEUlRTUlQTQl 1327 | OEYlRTYlOTYlODclRTYlOTElOTgKIS0tSHVhIFl1YW4gUnVhbiBKaWFuCnpoLndp 1328 | a2lwZWRpYS5vcmcqJUU4JThBJUIxJUU1JTlCJUFEJUU4JUJEJUFGJUU0JUJCJUI2 1329 | CiEtLUh1YSBZdWFuIFdhbmcKemgud2lraXBlZGlhLm9yZyolRTglOEElQjElRTUl 1330 | OUIlQUQlRTclQkQlOTEKIS0tSHVhbmcgUWkKemgud2lraXBlZGlhLm9yZyolRTkl 1331 | QkIlODQlRTclOTAlQTYKIS0tSHVhbmcgUXVlIFhpbmcgRG9uZwp6aC53aWtpcGVk 1332 | aWEub3JnKiVFOSVCQiU4MyVFOSU5QiU4MCVFOCVBMSU4QyVFNSU4QiU5NQohLS1I 1333 | dWFuZyBXYW4gTGkKemgud2lraXBlZGlhLm9yZyolRTklQkIlODQlRTQlQjglODcl 1334 | RTklODclOEMKIS0tSHVvIFlpbmcgRG9uZwp6aC53aWtpcGVkaWEub3JnKiVFOSU5 1335 | QyU4RCVFOCU4QiVCMSVFNiU5RCVCMQohLS1KaWEgSmluZwp6aC53aWtpcGVkaWEu 1336 | b3JnKiVFNSU5OCU4OSVFOSU5RCU5NgohLS1KaWEgTGUgRnUKemgud2lraXBlZGlh 1337 | Lm9yZyolRTUlQUUlQjYlRTQlQjklOTAlRTclQTYlOEYKIS0tSmlhIFFpbmcgTGlu 1338 | CnpoLndpa2lwZWRpYS5vcmcqJUU4JUIzJTg4JUU2JTg1JUI2JUU2JTlFJTk3CiEt 1339 | LUppYW5nIFplIE1pbiAoemgtaGFucy9oYW50KQp6aC53aWtpcGVkaWEub3JnKiVF 1340 | NiVCMSU5RiVFNiVCMyVCRCVFNiVCMCU5MQp6aC53aWtpcGVkaWEub3JnKiVFNiVC 1341 | MSU5RiVFNiVCRSVBNCVFNiVCMCU5MQohLS1KaW4gRHVuIEdvbmcgQ2hlbmcKemgu 1342 | d2lraXBlZGlhLm9yZyolRTklODclOTElRTclOUIlQkUlRTUlQjclQTUlRTclQTgl 1343 | OEIKIS0tSmluIER1biBHb25nIENoZW5nID8Kemgud2lraXBlZGlhLm9yZyolQkQl 1344 | RjAlQjYlREMlQjklQTQlQjMlQ0MKIS0tSml1IFBpbmcgR29uZyBDaGFuIERhbmcK 1345 | emgud2lraXBlZGlhLm9yZyolRTQlQjklOUQlRTglQUYlODQlRTUlODUlQjElRTQl 1346 | QkElQTclRTUlODUlOUEKIS0tSnVlIFNoaQp6aC53aWtpcGVkaWEub3JnKiVFNyVC 1347 | QiU5RCVFOSVBMyU5RgohLS1MaSBDaGFuZyBDaHVuICh6aC1oYW5zL2hhbnQpCnpo 1348 | Lndpa2lwZWRpYS5vcmcqJUU2JTlEJThFJUU5JTk1JUJGJUU2JTk4JUE1CnpoLndp 1349 | a2lwZWRpYS5vcmcqJUU2JTlEJThFJUU5JTk1JUI3JUU2JTk4JUE1CiEtLUxpIEhv 1350 | bmcgWmhpCnpoLndpa2lwZWRpYS5vcmcqJUU2JTlEJThFJUU2JUI0JUFBJUU1JUJG 1351 | JTk3CiEtLUxpIEtlIFFpYW5nCnpoLndpa2lwZWRpYS5vcmcqJUU2JTlEJThFJUU1 1352 | JTg1JThCJUU1JUJDJUJBCiEtLUxpIFBlbmcKemgud2lraXBlZGlhLm9yZy93aWtp 1353 | LyVFNiU5RCU4RSVFOSVCOSU4Rgp6aC53aWtpcGVkaWEub3JnL3poLyVFNiU5RCU4 1354 | RSVFOSVCOSU4Rgp6aC53aWtpcGVkaWEub3JnL3poLWhrLyVFNiU5RCU4RSVFOSVC 1355 | OSU4Rgp6aC53aWtpcGVkaWEub3JnL3poLXR3LyVFNiU5RCU4RSVFOSVCOSU4Rgoh 1356 | LS1MaSBSdWkgSHVhbgp6aC53aWtpcGVkaWEub3JnKiVFNiU5RCU4RSVFNyU5MSU5 1357 | RSVFNyU4RSVBRgohLS1MaSBTaGVuIFpoaQp6aC53aWtpcGVkaWEub3JnKiVFNiU5 1358 | RCU4RSVFNiU4NSU4RSVFNCVCOSU4QgohLS1MaSBZdWFuIENoYW8Kemgud2lraXBl 1359 | ZGlhLm9yZyolRTYlOUQlOEUlRTYlQkElOTAlRTYlQkQlQUUKIS0tTGlhbmcgR3Vv 1360 | IFhpb25nCnpoLndpa2lwZWRpYS5vcmcqJUU2JUEyJTgxJUU1JTlCJUJEJUU5JTlC 1361 | JTg0CiEtLUxpbiBHdW8gWGlvbmcKemgud2lraXBlZGlhLm9yZyolRTYlQTIlODEl 1362 | RTUlOUMlOEIlRTklOUIlODQKIS0tTGluZyBCYSBYaWFuIFpoYW5nCnpoLndpa2lw 1363 | ZWRpYS5vcmcqJUU5JTlCJUI2JUU1JTg1JUFCJUU1JUFFJUFBJUU3JUFCJUEwCiEt 1364 | LUxpdSBCaW4gWWFuCnpoLndpa2lwZWRpYS5vcmcqJUU1JTg4JTk4JUU1JUFFJUJF 1365 | JUU5JTlCJTgxCiEtLUxpdSBIdWkgUWluZwp6aC53aWtpcGVkaWEub3JnKiVFNSU4 1366 | OCU5OCVFNiU4NSVBNyVFNSU4RCVCRgohLS1MaXUgSHVpIFFpbmcgKHpoLWhhbnQp 1367 | CnpoLndpa2lwZWRpYS5vcmcqJUU1JThBJTg5JUU2JTg1JUE3JUU1JThEJUJGCiEt 1368 | LUxpdSBRaQp6aC53aWtpcGVkaWEub3JnKiVFNSU4OCU5OCVFNiVCNyU4NwohLS1M 1369 | aXUgU2kgKEdlIFF1IC8gU2hpIEppIC8gU2hpIEppYW4pCnpoLndpa2lwZWRpYS5v 1370 | cmcqJUU1JTg1JUFEJUU1JTlCJTlCCiEtLUxpdSBTaSBTaGkgSmlhbgp6aC15dWUu 1371 | d2lraXBlZGlhLm9yZyolRTUlODUlQUQlRTUlOUIlOUIlRTQlQkElOEIlRTQlQkIl 1372 | QjYKIS0tTGl1IFlhbiBEb25nCnpoLndpa2lwZWRpYS5vcmcqJUU1JTg4JTk4JUU1 1373 | JUJCJUI2JUU0JUI4JTlDCiEtLUxpdSBZdW4gU2hhbgp6aC53aWtpcGVkaWEub3Jn 1374 | KiVFNSU4OCU5OCVFNCVCQSU5MSVFNSVCMSVCMQohLS1MdiBCYSBIdWEgSmkgSHUg 1375 | SGFuZwp6aC53aWtpcGVkaWEub3JnKiVFNyVCNiVBMCVFNSVBMyVBOSVDMiVCNyVF 1376 | OCU4QSVCMSVFNSVBRCVBMyVFOCVBRCVCNyVFOCU4OCVBQQohLS1MdiBCYSBOaWFu 1377 | Zwp6aC53aWtpcGVkaWEub3JnL3dpa2kvJWU3JWJiJWJmJWU1JTlkJTlkJWU1JWE4 1378 | JTk4CiEtLU1pbiBHYW4gUmVuIFNoaQp6aC53aWtpcGVkaWEub3JnKiVFNiU5NSU4 1379 | RiVFNiU4NCU5RiVFNCVCQSVCQSVFNSVBMyVBQgohLS1NaW4gWmh1IE52IFNoZW4K 1380 | emgud2lraXBlZGlhLm9yZyolRTYlQjAlOTElRTQlQjglQkIlRTUlQTUlQjMlRTcl 1381 | QTUlOUUKIS0tTWluIFpodSBEYW5nIF8gWGlhbmcgR2FuZwp6aC53aWtpcGVkaWEu 1382 | b3JnKiVFNiVCMCU5MSVFNCVCOCVCQiVFOSVCQiVBOF8oJUU5JUE2JTk5JUU2JUI4 1383 | JUFGKQohLS1OZWkgTWVuZyBHdSBLYW5nIFlpCnpoLndpa2lwZWRpYS5vcmcvd2lr 1384 | aS8lRTUlODYlODUlRTglOTIlOTklRTUlOEYlQTQlRTYlOEElOTclRTglQUUlQUUK 1385 | emgud2lraXBlZGlhLm9yZy96aC1oay8lRTUlODYlODUlRTglOTIlOTklRTUlOEYl 1386 | QTQlRTYlOEElOTclRTglQUUlQUUKemgud2lraXBlZGlhLm9yZy96aC10dy8lRTUl 1387 | ODYlODUlRTglOTIlOTklRTUlOEYlQTQlRTYlOEElOTclRTglQUUlQUUKIS0tTml1 1388 | IEJvIFdhbmctLQp6aC53aWtpcGVkaWEub3JnKiVFNyU4OSU5QiVFNSU4RCU5QSVF 1389 | NyVCRCU5MQohLS1OdW8gQmVpIEVyIEhlIFBpbmcgSmlhbmcKemgud2lraXBlZGlh 1390 | Lm9yZyolRTglQUYlQkElRTglQjQlOUQlRTUlQjAlOTQlRTUlOTIlOEMlRTUlQjkl 1391 | QjMlRTUlQTUlOTYKIS0tTnVvIFdlaQp6aC53aWtpcGVkaWEub3JnKiVFNiU4QyVB 1392 | QSVFNSVBOCU4MQohLS1QZW5nIExpIFl1YW4Kemgud2lraXBlZGlhLm9yZyolRTUl 1393 | QkQlQUQlRTQlQjglQkQlRTUlQUElOUIKIS0tUG8gV2FuZwp6aC53aWtpcGVkaWEu 1394 | b3JnKiVFNyVBMCVCNCVFNyVCRCU5MQohLS1RaW5nIENoYW8Kemgud2lraXBlZGlh 1395 | Lm9yZyolRTYlQjglODUlRTYlOUMlOUQKIS0tUmFuIFNoYW8gUGluZyAoR0IrVVRG 1396 | OCkKemgud2lraXBlZGlhLm9yZyolQzglQkMlQzklRDUlQzYlQkYKemgud2lraXBl 1397 | ZGlhLm9yZyolRTclODclODMlRTclODMlQTclRTclOTMlQjYKIS0tUmUgQmkgWWEK 1398 | emgud2lraXBlZGlhLm9yZyolRTclODMlQUQlRTYlQUYlOTQlRTUlQTglODUKIS0t 1399 | U2FuIE5pYW4gWmkgUmFuIFphaSBIYWkKemgud2lraXBlZGlhLm9yZyolRTQlQjgl 1400 | ODklRTUlQjklQjQlRTglODclQUElRTclODQlQjYlRTclODElQkUlRTUlQUUlQjMK 1401 | IS0tU2hlbmcgWGlvbmcgR2FuIERpCnpoLndpa2lwZWRpYS5vcmcqJUU1JTlDJUEz 1402 | JUU5JTlCJTg0JUU3JTk0JTk4JUU1JTlDJUIwCiEtLVNoaSBKaWUgSmluZyBKaSBE 1403 | YW8gQmFvCnpoLndpa2lwZWRpYS5vcmcqJUU0JUI4JTk2JUU3JTk1JThDJUU3JUJC 1404 | JThGJUU2JUI1JThFJUU1JUFGJUJDJUU2JThBJUE1CiEtLVNoaSBTaSBTaGkgRGEg 1405 | TGFpCnpoLndpa2lwZWRpYS5vcmcqJUU1JThEJTgxJUU1JTlCJTlCJUU0JUI4JTk2 1406 | JUU4JUJFJUJFJUU4JUI1JTk2CiEtLVNoaSBUYW8Kemgud2lraXBlZGlhLm9yZyol 1407 | RTUlQjglODglRTYlQjYlOUIKIS0tU2hpIFhpbmcgWXVuCnpoLndpa2lwZWRpYS5v 1408 | cmcqJUU5JTg3JThBJUU2JTk4JTlGJUU0JUJBJTkxCiEtLVNpIFR1IEh1YSAoemgt 1409 | aGFucy9oYW50KQp6aC53aWtpcGVkaWEub3JnKiVFNSU4RiVCOCVFNSVCRSU5MiVF 1410 | NSU4RCU4RQp6aC53aWtpcGVkaWEub3JnKiVFNSU4RiVCOCVFNSVCRSU5MiVFOCU4 1411 | RiVBRgohLS1TaSBXdSBYaW5nIERvbmcKemgud2lraXBlZGlhLm9yZyolRTUlOUIl 1412 | OUIlRTQlQkElOTQlRTglQTElOEMlRTUlOEIlOTUKIS0tU29uZyBCaW5nIEJpbmcK 1413 | emgud2lraXBlZGlhLm9yZyolRTUlQUUlOEIlRTUlQkQlQUMlRTUlQkQlQUMKIS0t 1414 | U29uZyBSZW4gUWlvbmcgKHpoLWhhbnMvaGFudCkKemgud2lraXBlZGlhLm9yZyol 1415 | RTUlQUUlOEIlRTQlQkIlQkIlRTclQTklQjcKemgud2lraXBlZGlhLm9yZyolRTUl 1416 | QUUlOEIlRTQlQkIlQkIlRTclQUElQUUKIS0tU3UgSmlhIFR1biBTaGkgSmlhbgp6 1417 | aC53aWtpcGVkaWEub3JnKiVFOCU4QiU4RiVFNSVBRSVCNiVFNSVCMSVBRiVFNCVC 1418 | QSU4QiVFNCVCQiVCNgohLS1TdW4gV2VuIEd1YW5nCnpoLndpa2lwZWRpYS5vcmcv 1419 | d2lraS8lRTUlQUQlOTklRTYlOTYlODclRTUlQjklQkYKIS0tVGFpIFppIERhbmcK 1420 | emgud2lraXBlZGlhLm9yZy93aWtpLyVFNSVBNCVBQSVFNSVBRCU5MCVFNSU4NSU5 1421 | QQp6aC53aWtpcGVkaWEub3JnL3poLyVFNSVBNCVBQSVFNSVBRCU5MCVFNSU4NSU5 1422 | QQp6aC53aWtpcGVkaWEub3JnL3poLWNuLyVFNSVBNCVBQSVFNSVBRCU5MCVFNSU4 1423 | NSU5QQohLS1UYW4gWnVvIFJlbgp6aC53aWtpcGVkaWEub3JnKiVFOCVCMCVBRCVF 1424 | NCVCRCU5QyVFNCVCQSVCQQohLS1UaWFuIEFuIE1lbiBHdWFuZyBDaGFuZwp6aC53 1425 | aWtpcGVkaWEub3JnKiVFNSVBNCVBOSVFNSVBRSU4OSVFOSU5NyVBOCVFNSVCOSVC 1426 | RiVFNSU5QyVCQQohLS1UaWFuIEFuIE1lbiBTaGkgSmlhbgp6aC53aWtpcGVkaWEu 1427 | b3JnKiVFNSVBNCVBOSVFNSVBRSU4OSVFOSU5NiU4MCVFNCVCQSU4QiVFNCVCQiVC 1428 | NgohLS1UaWFuIEFuIE1lbiBXZW4gSmlhbgp6aC53aWtpcGVkaWEub3JnKiVFNSVB 1429 | NCVBOSVFNSVBRSU4OSVFOSU5NyVBOCVFNiU5NiU4NyVFNCVCQiVCNgohLS1UaWFu 1430 | IEFuIE1lbiBaaSBGZW4gU2hpIEppYW4Kemgud2lraXBlZGlhLm9yZyolRTUlQTQl 1431 | QTklRTUlQUUlODklRTklOTclQTglRTglODclQUElRTclODQlOUElRTQlQkElOEIl 1432 | RTQlQkIlQjYKIS0tVG9yCnpoLndpa2lwZWRpYS5vcmcvemgtY24vVG9yCiEtLVRl 1433 | aXR0ZXIKemgud2lraXBlZGlhLm9yZy96aC1oay9Ud2l0dGVyCnpoLndpa2lwZWRp 1434 | YS5vcmcvd2lraS9Ud2l0dGVyCiEtLVdhbmcgSnVuIFRhbwp6aC53aWtpcGVkaWEu 1435 | b3JnKiVFNyU4RSU4QiVFNSU4NiU5QiVFNiVCNiU5QgohLS1XYW5nIFFpIFNoYW4K 1436 | emgud2lraXBlZGlhLm9yZyolRTclOEUlOEIlRTUlQjIlOTAlRTUlQjElQjEKIS0t 1437 | V2FuZyBRaWFuIFl1YW4Kemgud2lraXBlZGlhLm9yZyolRTclOEUlOEIlRTUlOEQl 1438 | ODMlRTYlQkElOTAKIS0tV2FuZyBXZWkgTGluCnpoLndpa2lwZWRpYS5vcmcqJUU3 1439 | JThFJThCJUU3JUJCJUI0JUU2JTlFJTk3CiEtLVdhbmcgWW91IENhaQp6aC53aWtp 1440 | cGVkaWEub3JnKiVFNyU4RSU4QiVFNiU5QyU4OSVFNiU4OSU4RAohLS1XZWkgSmlu 1441 | ZyBTaGVuZwp6aC53aWtpcGVkaWEub3JnKiVFOSVBRCU4RiVFNCVCQSVBQyVFNyU5 1442 | NCU5RgohLS1XZW4gQ2h1YW4gRGEgRGkgWmhlbgp6aC53aWtpcGVkaWEub3JnKiVF 1443 | NiVCMSVCNiVFNSVCNyU5RCVFNSVBNCVBNyVFNSU5QyVCMCVFOSU5QyU4NwohLS1X 1444 | YW5nIEJpbmcgWmhhbmcKemgud2lraXBlZGlhLm9yZyolRTclOEUlOEIlRTclODIl 1445 | QjMlRTclQUIlQTAKIS0tV2FuZyBMZSBRdWFuCnpoLndpa2lwZWRpYS5vcmcqJUU3 1446 | JThFJThCJUU0JUI5JTkwJUU2JUIzJTg5CiEtLVdhbmcgTGkgWGlvbmcKemgud2lr 1447 | aXBlZGlhLm9yZyolRTclOEUlOEIlRTUlOEElOUIlRTklOUIlODQKIS0tV2FuZyBY 1448 | aW5nCnpoLndpa2lwZWRpYS5vcmcvd2lraS8lRTclOEUlOEIlRTUlQTclOTMKIS0t 1449 | V2FuZyBZYW5nCnpoLndpa2lwZWRpYS5vcmcqJUU2JUIxJUFBJUU2JUI0JThCCiEt 1450 | LVdhbmcgWmhhbyBHdW8Kemgud2lraXBlZGlhLm9yZyolRTclOEUlOEIlRTUlODUl 1451 | ODYlRTUlOUIlQkQKIS0tV2VpIFNlCnpoLndpa2lwZWRpYS5vcmcqJUU1JTk0JUFG 1452 | JUU4JTg5JUIyCiEtLVdlbiBDaHVhbiBEaSBaaGVuCnpoLndpa2lwZWRpYS5vcmcq 1453 | JUU2JUIxJUI2JUU1JUI3JTlEJUU1JTlDJUIwJUU5JTlDJTg3CiEtLVdlbiBKaWEg 1454 | QmFvCnpoLndpa2lwZWRpYS5vcmcqJUU2JUI4JUE5JUU1JUFFJUI2JUU1JUFFJTlE 1455 | CiEtLVdlbiBZdW4gU29uZwp6aC53aWtpcGVkaWEub3JnKiVFNiVCOCVBOSVFNCVC 1456 | QSU5MSVFNiU5RCVCRQohLS1XZW4gWmkgWXUgKHpoLWhhbnMvaGFudCkKemgud2lr 1457 | aXBlZGlhLm9yZy93aWtpLyVFNiU5NiU4NyVFNSVBRCU5NyVFNyU4QiVCMQp6aC53 1458 | aWtpcGVkaWEub3JnL3dpa2kvJUU2JTk2JTg3JUU1JUFEJTk3JUU3JThEJTg0CiEt 1459 | LVd1IEJhbmcgR3VvCnpoLndpa2lwZWRpYS5vcmcqJUU1JTkwJUI0JUU5JTgyJUE2 1460 | JUU1JTlCJUJECiEtLVdvIERlIEZlbiBEb3UKemgud2lraXBlZGlhLm9yZyolRTYl 1461 | ODglOTElRTclOUElODQlRTUlQTUlOEIlRTYlOTYlOTcKIS0tV3UgRXIgS2FpIFhp 1462 | CnpoLndpa2lwZWRpYS5vcmcqJUU1JTkwJUJFJUU1JUIwJTk0JUU1JUJDJTgwJUU1 1463 | JUI4JThDCiEtLVd1IEd1byBKaWUgSmkgWmhlCnpoLndpa2lwZWRpYS5vcmcqJUU2 1464 | JTk3JUEwJUU1JTlCJUJEJUU3JTk1JThDJUU4JUFFJUIwJUU4JTgwJTg1CiEtLVd1 1465 | IEppZQp6aC53aWtpcGVkaWEub3JnKiVFNiU5NyVBMCVFNyU5NSU4QwohLS1XdSBM 1466 | dSBNdSBRaSBRaSBXdSBCYW8gTGkgU2hpIEppYW4Kemgud2lraXBlZGlhLm9yZyol 1467 | RTQlQjklOEMlRTklQjIlODElRTYlOUMlQTglRTklQkQlOTAlRTQlQjglODMlQzIl 1468 | QjclRTQlQkElOTQlRTYlOUElQjQlRTUlOEElOUIlRTQlQkElOEIlRTQlQkIlQjYK 1469 | IS0tWGkgRGFuIE1pbiBaaHUgUWlhbmcKemgud2lraXBlZGlhLm9yZyolRTglQTUl 1470 | QkYlRTUlOEQlOTUlRTYlQjAlOTElRTQlQjglQkIlRTUlQTIlOTkKIS0tWGkgSmlu 1471 | IFBpbmcgKHpoLWhhbnQpCnpoLndpa2lwZWRpYS5vcmcqJUU3JUJGJTkyJUU4JUJG 1472 | JTkxJUU1JUI5JUIzCiEtLVhpIEppbiBQaW5nCnpoLndpa2lwZWRpYS5vcmcqJUU0 1473 | JUI5JUEwJUU4JUJGJTkxJUU1JUI5JUIzCiEtLVhpIFphbmcKemgud2lraXBlZGlh 1474 | Lm9yZyolRTglQTUlQkYlRTglOTclOEYKIS0tWGkgWmhvbmcgWHVuCnpoLndpa2lw 1475 | ZWRpYS5vcmcqJUU0JUI5JUEwJUU0JUJCJUIyJUU1JThCJThCCiEtLVhpYW5nIEdh 1476 | bmcgTWluIFpodSBQYWkKemgud2lraXBlZGlhLm9yZyolRTklQTYlOTklRTYlQjgl 1477 | QUYqJUU2JUIwJTkxJUU0JUI4JUJCJUU2JUI0JUJFCiEtLVhpZSBZYW4gRmVpCnpo 1478 | Lndpa2lwZWRpYS5vcmcqJUU4JUIwJUEyJUU1JUJEJUE2JUU5JUEzJTlFCiEtLVhp 1479 | biBIYW8gTmlhbgp6aC53aWtpcGVkaWEub3JnKiVFOCVCRSU5QiVFNyU4MSU4RiVF 1480 | NSVCOSVCNAohLS1YaW4gV2VuIFppIFlvdSBMdWUgRHVvIFpoZQp6aC53aWtpcGVk 1481 | aWEub3JnKiVFNiU5NiVCMCVFOSU5NyVCQiVFOCU4NyVBQSVFNyU5NCVCMSVFNiU4 1482 | RSVBMCVFNSVBNCVCQSVFOCU4MCU4NQohLS1YaW5nIFl1biBGYSBTaGkKemgud2lr 1483 | aXBlZGlhLm9yZyolRTYlOTglOUYlRTQlQkElOTElRTYlQjMlOTUlRTUlQjglODgK 1484 | IS0tWGlvbmcgWWFuCnpoLndpa2lwZWRpYS5vcmcqJUU3JTg2JThBJUU3JTg0JUIx 1485 | CiEtLVh1IEppYSBUdW4Kemgud2lraXBlZGlhLm9yZyolRTglQUUlQjglRTUlQUUl 1486 | QjYlRTUlQjElQUYKIS0tWHVuIFdlbiBDaHUKemgud2lraXBlZGlhLm9yZyolRTgl 1487 | QTklQTIlRTUlOTUlOEYlRTglOTklOTUKIS0tWWFuIE1pbmcgRnUKemgud2lraXBl 1488 | ZGlhLm9yZyolRTklOTglOEUlRTYlOTglOEUlRTUlQTQlOEQKIS0tWWFuZyBKaWEg 1489 | WGkgSmluZyBBbgp6aC53aWtpcGVkaWEub3JnKiVFNiU5RCVBOCVFNCVCRCVCMyVF 1490 | OCVBMiVBRCVFOCVBRCVBNiVFNiVBMSU4OAohLS1ZYW5nIEppYW4gTGkKemgud2lr 1491 | aXBlZGlhLm9yZyolRTYlQTUlOEElRTUlQkIlQkElRTUlODglQTkKIS0tWWkgTGkg 1492 | U2hlbgp6aC53aWtpcGVkaWEub3JnKiVFOCU5QSU4MSVFNSU4QSU5QiVFNyVBNSU5 1493 | RQohLS1Zb25nIEhlIEdvbmcKemgud2lraXBlZGlhLm9yZyolRTklOUIlOEQlRTUl 1494 | OTIlOEMlRTUlQUUlQUIKIS0tWW91IExpbmcgV2FuZwp6aC53aWtpcGVkaWEub3Jn 1495 | KiVFNSVCOSVCRCVFNyU4MSVCNSVFNyVCRCU5MQohLS1ZdSBKaWUKemgud2lraXBl 1496 | ZGlhLm9yZyolRTQlQkQlOTklRTYlOUQlQjAKIS0tWXUgWmhlbmcgU2hlbmcKemgu 1497 | d2lraXBlZGlhLm9yZyolRTQlQkYlOUUlRTYlQUQlQTMlRTUlQTMlQjAKIS0tWXVh 1498 | biBIb25nIEJpbgp6aC53aWtpcGVkaWEub3JnKiVFOCVBMiU4MSVFNyVCQSVBMiVF 1499 | NSU4NiVCMAohLS1aaGFuZyBEZSBKaWFuZwp6aC53aWtpcGVkaWEub3JnKiVFNSVC 1500 | QyVBMCVFNSVCRSVCNyVFNiVCMSU5RgohLS1aaGFuZyBZaSBIZSAoemgtaGFucy9o 1501 | YW50KQp6aC53aWtpcGVkaWEub3JnKiVFNyVBQiVBMCVFOCVBOSU5MiVFNSU5MiU4 1502 | Qwp6aC53aWtpcGVkaWEub3JnKiVFNyVBQiVBMCVFOCVBRiU5MiVFNSU5MiU4Qwoh 1503 | LS1aaGFuZyBZdQp6aC53aWtpcGVkaWEub3JnKiVFNSVCQyVBMCVFOSU5MiVCMAoh 1504 | LS1aaGFuZyBZdSAoemgtaGFudCkKemgud2lraXBlZGlhLm9yZyolRTUlQkMlQjUl 1505 | RTklODglQkEKIS0tWmhhbyBaaSBZYW5nICh6aC1oYW50KQp6aC53aWtpcGVkaWEu 1506 | b3JnKiVFOCVCNiU5OSVFNyVCNCVBQiVFOSU5OSVCRAohLS1aaG9uZyBHb25nIFpo 1507 | b25nIFlhbmcgWHVhbiBDaHVhbiBCdQp6aC53aWtpcGVkaWEub3JnKiVFNCVCOCVB 1508 | RCVFNSU4NSVCMSVFNCVCOCVBRCVFNSVBNCVBRSVFNSVBRSVBMyVFNCVCQyVBMCVF 1509 | OSU4MyVBOAohLS1aaG9uZyBHdW8gRGEgTHUgRmVuZyBTdW8gV2VpIEppIE1laSBU 1510 | aSBTaGkgSmlhbiAoemgtaGFucy9oYW50KQp6aC53aWtpcGVkaWEub3JnKiVFNCVC 1511 | OCVBRCVFNSU5QiVCRCVFNSVBNCVBNyVFOSU5OSU4NiVFNSVCMCU4MSVFOSU5NCU4 1512 | MSVFNyVCQiVCNCVFNSU5RiVCQSVFNSVBQSU5MiVFNCVCRCU5MyVFNCVCQSU4QiVF 1513 | NCVCQiVCNgp6aC53aWtpcGVkaWEub3JnKiVFNCVCOCVBRCVFNSU5QiVCRCVFNSVB 1514 | NCVBNyVFOSU5OSU4NiVFNSVCMCU4MSVFOSU5NCU4MSVFNyVCQiVCNCVFNSU5RiVC 1515 | QSVFNyU5OSVCRSVFNyVBNyU5MSVFNCVCQSU4QiVFNCVCQiVCNgohLS1aaG9uZyBH 1516 | dW8gRGEgTHUgV2FuZyBMdW8gRmVuZyBTdW8Kemgud2lraXBlZGlhLm9yZyolRTQl 1517 | QjglQUQlRTUlOUMlOEIlRTUlQTQlQTclRTklOTklQjglRTclQjYlQjIlRTglQjcl 1518 | QUYlRTUlQjAlODElRTklOEUlOTYKIS0tWmhvbmcgR3VvIEZhbiBMYW4gTGlhbiBN 1519 | ZW5nCnpoLndpa2lwZWRpYS5vcmcqJUU0JUI4JUFEJUU1JTlCJUJEJUU2JUIzJTlC 1520 | JUU4JTkzJTlEJUU4JTgxJTk0JUU3JTlCJTlGCiEtLVpob25nIEd1byBHb25nIENo 1521 | YW4gRGFuZyhaaGVuZyBaaGkgWXVuIERvbmcoTGllIEJpYW8pKS8oWmhvbmcgWWFu 1522 | ZyBKdW4gU2hpIFdlaSBZdWFuIEh1aSkuLi4Kemgud2lraXBlZGlhLm9yZyolRTQl 1523 | QjglQUQlRTUlOUIlQkQlRTUlODUlQjElRTQlQkElQTclRTUlODUlOUEKIS0tWmhv 1524 | bmcgR3VvIEdvbmcgQ2hhbiBEYW5nICh6aC1oYW50KQp6aC53aWtpcGVkaWEub3Jn 1525 | KiVFNCVCOCVBRCVFNSU5QyU4QiVFNSU4NSVCMSVFNyU5NCVBMiVFOSVCQgohLS1a 1526 | aG9uZyBHdW8gTWluIFpodSBEYW5nCnpoLndpa2lwZWRpYS5vcmcqJUU0JUI4JUFE 1527 | JUU1JTlCJUJEJUU2JUIwJTkxJUU0JUI4JUJCJUU1JTg1JTlBCiEtLVpob25nIEd1 1528 | byBNaW4gWmh1IFl1biBEb25nCnpoLndpa2lwZWRpYS5vcmcqJUU0JUI4JUFEJUU1 1529 | JTlCJUJEJUU2JUIwJTkxJUU0JUI4JUJCJUU4JUJGJTkwJUU1JThBJUE4CiEtLVpo 1530 | b25nIEd1byBNbyBMaSBIdWEgR2UgTWluZwp6aC53aWtpcGVkaWEub3JnL3poLWNu 1531 | LyVFNCVCOCVBRCVFNSU5QyU4QiVFOCU4QyU4OSVFOCU4RSU4OSVFOCU4QSVCMSVF 1532 | OSU5RCVBOSVFNSU5MSVCRAp6aC53aWtpcGVkaWEub3JnL3dpa2kvJUU0JUI4JUFE 1533 | JUU1JTlDJThCJUU4JThDJTg5JUU4JThFJTg5JUU4JThBJUIxJUU5JTlEJUE5JUU1 1534 | JTkxJUJECiEtLVpob25nIChIdWEgUmVuIE1pbiBHb25nIEhlKSBHdW8gUmVuIFF1 1535 | YW4Kemgud2lraXBlZGlhLm9yZyolRTQlQjglQUQqJUU1JTlCJUJEJUU0JUJBJUJB 1536 | JUU2JTlEJTgzCiEtLVpob25nIEd1byBXYW5nIEx1byBSdWFuIEppYW4gR3VvIEx2 1537 | IEd1YW4gSmlhbiBaaSBMaWUgQmlhbwp6aC53aWtpcGVkaWEub3JnKiVFNCVCOCVB 1538 | RCVFNSU5QiVCRCVFNyVCRCU5MSVFNyVCQiU5QyVFOCVCRCVBRiVFNCVCQiVCNiVF 1539 | OCVCRiU4NyVFNiVCQiVBNCVFNSU4NSVCMyVFOSU5NCVBRSVFNSVBRCU5NyVFNSU4 1540 | OCU5NyVFOCVBMSVBOAohLS1aaG9uZyBHdW8gV2FuZyBMdW8gU2hlbiBDaGEKemgu 1541 | d2lraXBlZGlhLm9yZyolRTQlQjglQUQlRTUlOUIlQkQlRTclQkQlOTElRTclQkIl 1542 | OUMlRTUlQUUlQTElRTYlOUYlQTUKemgud2lraXBlZGlhLm9yZyolRTQlQjglQUQl 1543 | RTUlOUMlOEIlRTclQjYlQjIlRTglQjclQUYlRTUlQUYlQTklRTYlOUYlQTUKIS0t 1544 | WmhvbmcgSHVhIFJlbiBNaW4gR29uZyBIZSBHdW8gWGlhbiBGYQp6aC53aWtpcGVk 1545 | aWEub3JnKiVFNCVCOCVBRCVFNSU4RCU4RSVFNCVCQSVCQSVFNiVCMCU5MSVFNSU4 1546 | NSVCMSVFNSU5MiU4QyVFNSU5QiVCRCVFNSVBRSVBQSVFNiVCMyU5NQohLS1aaG9u 1547 | ZyBIdWEgTWluIEd1byBHdW8gTWluIERhIEh1aQp6aC53aWtpcGVkaWEub3JnKiVF 1548 | NCVCOCVBRCVFOCU4RiVBRiVFNiVCMCU5MSVFNSU5QyU4QiVFNSU5QyU4QiVFNiVC 1549 | MCU5MSVFNSVBNCVBNyVFNiU5QyU4MwohLS1aaG9uZyBIdWEgTWluIEd1byBaaGkg 1550 | WmFuZyBMaSBTaGkKemgud2lraXBlZGlhLm9yZyolRTQlQjglQUQlRTglOEYlQUYl 1551 | RTYlQjAlOTElRTUlOUMlOEIlRTYlQjIlQkIlRTglOTclOEYlRTYlQUQlQjclRTUl 1552 | OEYlQjIKIS0tWmhvbmcgSHVhIFJlbiBNaW4gR29uZyBIZSBHdW8gV2FuZyBMdW8g 1553 | U2hlbiBDaGEKemgud2lraXBlZGlhLm9yZyolRTQlQjglQUQlRTUlOEQlOEUlRTQl 1554 | QkElQkElRTYlQjAlOTElRTUlODUlQjElRTUlOTIlOEMlRTUlOUIlQkQlRTclQkQl 1555 | OTElRTclQkIlOUMlRTUlQUUlQTElRTYlOUYlQTUKIS0tWmhvbmcgV2VuIFdlaSBK 1556 | aSBCYWkgS2UKemgud2lraXBlZGlhLm9yZyolRTQlQjglQUQlRTYlOTYlODclRTcl 1557 | QkIlQjQlRTUlOUYlQkElRTclOTklQkUlRTclQTclOTEKIS0tWmhvbmcgWWFuZyBK 1558 | aW5nIFdlaSBKdQp6aC53aWtpcGVkaWEub3JnKiVFNCVCOCVBRCVFNSVBNCVBRSVF 1559 | OCVBRCVBNiVFOCVBMSU5QiVFNSVCMSU4MAohLS1aaG9uZyBZaW5nIFh1IERpbmcg 1560 | WmFuZyBZaW4gVGlhbyBZdWUKemgud2lraXBlZGlhLm9yZyolRTQlQjglQUQlRTgl 1561 | OEIlQjElRTclQkElOEMlRTglQTglODIlRTglOTclOEYlRTUlOEQlQjAlRTYlQTIl 1562 | OUQlRTclQjQlODQKIS0tWmhvdSBZb25nIEthbmcKemgud2lraXBlZGlhLm9yZyol 1563 | RTUlOTElQTglRTYlQjAlQjglRTUlQkElQjcKIS0tWmh1YW4gRmEgTHVuCnpoLndp 1564 | a2lwZWRpYS5vcmcqJUU4JUJEJUFDJUU2JUIzJTk1JUU4JUJEJUFFCiEtLVppIFlv 1565 | dSBNZW4Kemgud2lraXBlZGlhLm9yZyolRTglODclQUElRTclOTQlQjElRTklOTcl 1566 | QTgKIS0tWmkgWW91IFlhIFpob3UKemgud2lraXBlZGlhLm9yZyolRTglODclQUEl 1567 | RTclOTQlQjElRTQlQkElOUElRTYlQjQlQjIKIS0tVHUgUG8gV2FuZyBMdW8gU2hl 1568 | biBDaGEtLVdpa2lib29rcwp6aC53aWtpYm9va3Mub3JnKiVFNyVBQSU4MSVFNyVB 1569 | MCVCNCVFNyVCRCU5MSVFNyVCQiU5QyVFNSVBRSVBMSVFNiU5RiVBNQohLS1MaW5n 1570 | IEJhIFhpYW4gWmhhbmctLVdpa2lTb3VyY2UKIS0temgud2lraXNvdXJjZS5vcmcv 1571 | d2lraS8lRTklOUIlQjYlRTUlODUlQUIlRTUlQUUlQUElRTclQUIlQTAKCiEtLS0t 1572 | LS0tLS0tLS1UVyBHb3YtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCnx8Z292LnR3 1573 | LwoucHJlc2lkZW50Lmdvdi50dwpAQHx8dGF4Lm5hdC5nb3YudHcKQEB8fG1vZS5n 1574 | b3YudHcKQEB8fGN3Yi5nb3YudHcKQEB8fG5wbS5nb3YudHcKQEB8fHlhdHNlbi5n 1575 | b3YudHcKQEB8fGFlYy5nb3YudHcKQEB8fG12ZGlzLmdvdi50dwpAQHx8c3RkdGlt 1576 | ZS5nb3YudHcKQEB8fG5tbWJhLmdvdi50dwpAQHx8bnRkbWguZ292LnR3CkBAfHxn 1577 | cmIuZ292LnR3CkBAfHx0cGRlLmFpZGUuZ292LnR3CkBAfHxtYXRzdS1uZXdzLmdv 1578 | di50dwpAQHx8bmVyaGwuZ292LnR3CkBAfHxkYXB1LWhvdXNlLmdvdi50dwpAQHx8 1579 | dmdodGMuZ292LnR3CkBAfHxhaWRlLmdvdi50dwpAQHx8aGNoY2MuZ292LnR3CkBA 1580 | fHxudHVoLmdvdi50dwpAQHx8bmhyaS5nb3YudHcKQEB8fG5zdG0uZ292LnR3CkBA 1581 | fHxudHNlYy5nb3YudHcKQEB8fG5lci5nb3YudHcKQEB8fG5tdGwuZ292LnR3CkBA 1582 | fHxudGwuZ292LnR3CkBAfHxwZXQuZ292LnR3CkBAfHxraGNjLmdvdi50dwpAQHx8 1583 | bm1tYmEuZ292LnR3CkBAfHxraG1zLmdvdi50dwpAQHx8d2FuZmFuZy5nb3YudHcK 1584 | QEB8fG5pY3QuZ292LnR3CkBAfHxhcnRlLmdvdi50dwpAQHx8bm1oLmdvdi50dwpA 1585 | QHx8bm1wLmdvdi50dwpAQHx8dHBoY2MuZ292LnR3CkBAfHxpbmVyLmdvdi50dwpA 1586 | QHx8dG5jc2VjLmdvdi50dwpAQHx8bnNwby5nb3YudHcKQEB8fGFpZGUuZ292LnR3 1587 | CkBAfHxuY3JlZS5nb3YudHcKQEB8fHZnaGtzLmdvdi50dwpAQHx8dGNoYi5nb3Yu 1588 | dHcKQEB8fHBhYnAuZ292LnR3CkBAfHxpdHJjLmdvdi50dwpAQHx8ZGYuZ292LnR3 1589 | CkBAfHx3b21lbmJ1c2luZXNzLm55Yy5nb3YudHcKQEB8fGdzbi1jZXJ0Lm5hdC5n 1590 | b3YudHcKQEB8fGtrLmdvdi50dwpAQHx8dGhic3RjLmdvdi50dwpAQHx8Y29tbmV3 1591 | cy5naW8uZ292LnR3CkBAfHxjb21uZXdzLmdpby5nb3YudHcKQEB8fGtsY2NhYi5n 1592 | b3YudHcKQEB8fHl2dGMuZ292LnR3CkBAfHxhZnR5Z2guZ292LnR3CkBAfHxrbHJh 1593 | Lmdvdi50dwpAQHx8bHVuZ3RhbmhyLmdvdi50dwpAQHx8dGFveXVhbi5nb3YudHcK 1594 | QEB8fGhjYy5nb3YudHcKQEB8fG52cmkuZ292LnR3CkBAfHxubXZ0dGMuZ292LnR3 1595 | CkBAfHxrbWguZ292LnR3CkBAfHxwYXRlaHIuZ292LnR3CkBAfHxuZXJjaC5nb3Yu 1596 | dHcKQEB8fGttc2VoLmdvdi50dwpAQHx8bmVydHQuZ292LnR3CkBAfHxjeWNhYi5n 1597 | b3YudHcKQEB8fGNodWt1YW5nLmdvdi50dwpAQHx8Z3lzZC5ueWMuZ292LnR3CkBA 1598 | fHxjcC1ob3VzZS5nb3YudHcKQEB8fHZnaHRwZS5nb3YudHcKQEB8fGV0cmFpbmlu 1599 | Zy5nb3YudHcKQEB8fHN0YWcuZ292LnR3CkBAfHxiZGhyLmdvdi50dwpAQHx8dGNz 1600 | YWMuZ292LnR3CkBAfHxpbWFnZXNibG9nLmdpby5nb3YudHcKQEB8fGFydGUuZ292 1601 | LnR3CkBAfHxkbXRpcC5nb3YudHcKQEB8fGNoY2NjLmdvdi50dwpAQHx8aGVuZ2No 1602 | dWVuLmdvdi50dwpAQHx8aHNpbmNodS1jYy5nb3YudHcKQEB8fDkyMS5nb3YudHcK 1603 | QEB8fG5jZHIubmF0Lmdvdi50dwpAQHx8NHBwcGMuZ292LnR3CkBAfHxrbHNpby5n 1604 | b3YudHcKQEB8fG5pY2kubmF0Lmdvdi50dwpAQHx8Y3JvbW90Yy5uYXQuZ292LnR3 1605 | CkBAfHx0YWl0dW5nLWhvdXNlLmdvdi50dwoK 1606 | -------------------------------------------------------------------------------- /org.avplayer.avsocks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Label 6 | org.avplayer.avsocks 7 | ProgramArguments 8 | 9 | 10 | /usr/local/bin/avsocks 11 | 12 | --avserver 13 | PUT YOUR SERVER ADDRESS HERE 14 | 15 | --gfwlist 16 | off 17 | 18 | KeepAlive 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /src/avauth.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * avauth.hpp , 认证 3 | * 4 | * Copyright (c) 2010-2013 hyq 5 | */ 6 | 7 | #pragma once 8 | #include 9 | #include 10 | 11 | class avauth 12 | { 13 | public: 14 | avauth(std::string authfile) 15 | : m_file(authfile) 16 | { load(); } 17 | 18 | void load() 19 | { 20 | m_usermap.clear(); 21 | std::fstream input(m_file.c_str(), std::fstream::in); 22 | std::string user,pass; 23 | while(input >> user >> pass) 24 | { 25 | m_usermap[user] = pass; 26 | } 27 | } 28 | 29 | bool auth(std::string& user, std::string& pass) 30 | { return m_usermap[user] == pass; } 31 | 32 | private: 33 | std::string m_file; 34 | std::map m_usermap; 35 | }; -------------------------------------------------------------------------------- /src/avsession.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | * avsession.hpp , 真正的代理服务器代码. 3 | * 4 | * Copyright (c) 2010-2013 microcai 5 | */ 6 | 7 | #pragma once 8 | 9 | #include 10 | #include 11 | #include 12 | #include 13 | #include 14 | #include 15 | #include 16 | #include "avauth.hpp" 17 | namespace asio = boost::asio; 18 | namespace ip = boost::asio::ip; 19 | 20 | #define ASIO_READ_PLACEHOLDERS asio::placeholders::error, asio::placeholders::bytes_transferred 21 | #define ASIO_WRITE_PLACEHOLDERS asio::placeholders::error,asio::placeholders::bytes_transferred 22 | 23 | /** 24 | * 真正的执行 proxy 任务的类,是个模板,这样就可以支持 SSL 和 raw socket. 25 | * 起码使用 owner 技术,确保 avclient 类不被析构掉. 26 | * 喜欢上 C++ 这种确定析构的语言了吧,来吧,和 C++签订契约,成为cpper吧. 27 | * 28 | * 握手完成后,最后的接力任务交给 splice 完成. 29 | */ 30 | template < class Towner, class S1, class S2 > 31 | class avsession 32 | :public boost::enable_shared_from_this >, 33 | private boost::noncopyable 34 | { 35 | using boost::enable_shared_from_this >::shared_from_this; 36 | public: 37 | avsession(boost::shared_ptr _owner, S1& _s1, S2& _s2, boost::shared_ptr auth) 38 | :s1(_s1),s2(_s2),owner(_owner),auth(auth){} 39 | 40 | void start(){ 41 | // 读取第一个数据包,以确定客户端需要链接的目的地. 42 | s1.async_read_some( 43 | s1readbuf.prepare(64), 44 | boost::bind(&avsession::handle_socks5_read,shared_from_this(),ASIO_READ_PLACEHOLDERS) 45 | ); 46 | } 47 | 48 | // 都已经看完了,就不用遮掩了. 49 | void start(std::string host, int port) 50 | { 51 | resolve_dnshost(host, port); 52 | } 53 | 54 | private: 55 | void handle_socks5_read(const boost::system::error_code & ec, std::size_t bytes_transferred){ 56 | s1readbuf.commit(bytes_transferred); 57 | const boost::uint8_t* buffer = asio::buffer_cast(s1readbuf.data()); 58 | if(ec) 59 | return; 60 | 61 | for(int count = buffer[1] ; count ; count--) 62 | { 63 | // 协议支持情况 64 | switch(buffer[1+count]) 65 | { 66 | case 2: // 用户名/密码 认证 TODO 67 | s1.async_write_some(asio::buffer("\x05\x02", 2), 68 | boost::bind(&avsession::handle_send_auth, shared_from_this(), ASIO_WRITE_PLACEHOLDERS)); 69 | s1readbuf.consume(s1readbuf.size()); 70 | return ; 71 | case 0: // 没认证,很好 72 | s1.async_write_some(asio::buffer("\005\000",2), 73 | boost::bind(&avsession::handle_write,shared_from_this(),ASIO_WRITE_PLACEHOLDERS) 74 | ); 75 | s1readbuf.consume(bytes_transferred); 76 | s1.async_read_some(s1readbuf.prepare(5), 77 | boost::bind(&avsession::handle_read_socks5_magic,shared_from_this(),ASIO_READ_PLACEHOLDERS) 78 | ); 79 | return ; 80 | } 81 | } 82 | } 83 | 84 | void handle_send_auth(const boost::system::error_code & ec, std::size_t bytes_transferred) 85 | { 86 | s1.async_read_some(s1readbuf.prepare(1024), 87 | boost::bind(&avsession::handle_recv_auth, shared_from_this(), ASIO_READ_PLACEHOLDERS)); 88 | } 89 | 90 | void handle_recv_auth(const boost::system::error_code & ec, std::size_t bytes_transferred) 91 | { 92 | s1readbuf.commit(bytes_transferred); 93 | const boost::uint8_t* buffer = asio::buffer_cast(s1readbuf.data()); 94 | if(buffer[0] == 5) // 检查版本号. 95 | { 96 | std::size_t pos = 1; 97 | 98 | std::size_t user_len = buffer[pos++]; 99 | std::string user(buffer+pos, buffer+pos+user_len); 100 | pos += user_len; 101 | 102 | std::size_t pass_len = buffer[pos++]; 103 | std::string pass(buffer+pos, buffer+pos+pass_len); 104 | pos += pass_len; 105 | 106 | if( !auth || auth->auth(user, pass)) 107 | { 108 | s1.async_write_some(asio::buffer("\x05\x00", 2), 109 | boost::bind(&avsession::handle_write,shared_from_this(),ASIO_WRITE_PLACEHOLDERS) 110 | ); 111 | s1.async_read_some(s1readbuf.prepare(5), 112 | boost::bind(&avsession::handle_read_socks5_magic,shared_from_this(),ASIO_READ_PLACEHOLDERS) 113 | ); 114 | } 115 | else 116 | { 117 | // 认证失败. 118 | s1.async_write_some(asio::buffer("\x05\x01"), 119 | boost::bind(&avsession::handle_write,shared_from_this(),ASIO_WRITE_PLACEHOLDERS) 120 | ); 121 | } 122 | s1readbuf.consume(bytes_transferred); 123 | } 124 | } 125 | 126 | void handle_write(const boost::system::error_code & ec, std::size_t bytes_transferred){} 127 | 128 | void handle_read_socks5_magic(const boost::system::error_code & ec, std::size_t bytes_transferred){ 129 | if( ec || bytes_transferred < 5){ 130 | std::cout << ec.message() << std::endl; 131 | return; 132 | } 133 | s1readbuf.commit(bytes_transferred); 134 | const boost::uint8_t* buffer = asio::buffer_cast(s1readbuf.data()); 135 | 136 | 137 | if(buffer[0]==5 && buffer[1] == 1) 138 | { 139 | int type = buffer[3]; 140 | switch(type) 141 | { 142 | case 1: // IPv4 143 | // g_socket_receive(socket,buffer,4,0,0); 144 | // // 继续读6个字节. 145 | // g_socket_add_watch(socket,G_IO_IN,3,(GSocketSourceFunc)get_socks5_iphost,session); 146 | break; 147 | case 3: // DNS 地址. 148 | { 149 | if (s1readbuf.size() < 5) 150 | break; 151 | int dnshost_len = buffer[4]+2; 152 | s1readbuf.consume(s1readbuf.size()); 153 | s1.async_read_some(s1readbuf.prepare(dnshost_len), 154 | boost::bind(&avsession::handle_read_socks5_dnshost,shared_from_this(),ASIO_READ_PLACEHOLDERS) 155 | ); 156 | } 157 | break; 158 | } 159 | } 160 | } 161 | 162 | void handle_read_socks5_dnshost(const boost::system::error_code & ec, std::size_t bytes_transferred){ 163 | if(ec) 164 | return; 165 | s1readbuf.commit(bytes_transferred); 166 | const char* buffer = asio::buffer_cast(s1readbuf.data()); 167 | 168 | std::string host; 169 | host.assign(buffer,s1readbuf.size()-2); 170 | int port = ntohs( *(boost::uint16_t*)(buffer+ s1readbuf.size()-2)); 171 | // 好的,目的地址和端口都获得了,执行DNS解析,链接,etc工作. 172 | 173 | resolve_dnshost(host, port); 174 | } 175 | 176 | void resolve_dnshost(std::string host,int port) 177 | { 178 | ip::tcp::resolver::query query(host,boost::lexical_cast(port)); 179 | boost::shared_ptr resolver(new ip::tcp::resolver(s1.get_executor())); 180 | resolver->async_resolve(query, 181 | boost::bind(&avsession::handle_resolve_remote,shared_from_this(),resolver,asio::placeholders::error,asio::placeholders::iterator) 182 | ); 183 | } 184 | 185 | void handle_resolve_remote(boost::shared_ptr resolver, const boost::system::error_code& ec, ip::tcp::resolver::iterator iterator){ 186 | if(ec){ 187 | // 想客户放回 DNS 没找到, socks5 里是啥代号来着的? TODO 188 | }else{ 189 | // 链接到服务器. 190 | s2.async_connect(*iterator, 191 | boost::bind(&avsession::handle_remote_connected,shared_from_this(),asio::placeholders::error) 192 | ); 193 | } 194 | } 195 | 196 | void handle_remote_connected(const boost::system::error_code& ec){ 197 | if(ec){ 198 | 199 | }else 200 | { 201 | // 向 client 返回链接成功信息. 202 | s1.async_write_some(asio::buffer("\005\000\000\001\000\000\000\000\000\000",10), 203 | boost::bind(&avsession::handle_write_socks5_ok,shared_from_this(),ASIO_WRITE_PLACEHOLDERS) 204 | ); 205 | 206 | } 207 | } 208 | 209 | void handle_write_socks5_ok(const boost::system::error_code & ec, std::size_t bytes_transferred){ 210 | // 开始 splice ! 211 | // splice过去, 协议的解析神码的都交给服务器来做就是了. 212 | boost::shared_ptr > 213 | splice(new avsocks::splice(owner,s1,s2)); 214 | splice->start(); 215 | } 216 | 217 | private: 218 | asio::streambuf s1readbuf; 219 | S1& s1; // 两个 socket 220 | S2& s2; // 两个 socket 221 | boost::shared_ptr owner; // 确保 owner 不被析构掉. 222 | boost::shared_ptr auth; 223 | }; 224 | 225 | #undef ASIO_READ_PLACEHOLDERS 226 | #undef ASIO_WRITE_PLACEHOLDERS 227 | -------------------------------------------------------------------------------- /src/cert.hpp: -------------------------------------------------------------------------------- 1 | static char server_key[]={"-----BEGIN RSA PRIVATE KEY-----\n\ 2 | MIICXAIBAAKBgQDBXNqZ1xlKOr1kdXwtDQcY5j7SDlw32VAjBOQvqTpAUW0e56kR\n\ 3 | 9NECGwAMvXIdh8Q0+4hh7sfGhoqLddM6RS8ESf9oJBFGoPy+EguDEATkEpbTzhoD\n\ 4 | 6pL6lg6fJmt2og+S2b6JwloQd9KlBjeha0c3sCiVJUhCbjvn9lho8Kbh/wIDAQAB\n\ 5 | AoGAIBzPoST76jv/ICPyz3iOaTAz1qbT4eKRUH+Lde7g4bWkLbHDflvuKi9ZvsPn\n\ 6 | o8fcagAsEjeZrfrCH48d2VuMBxxshg+ykJ2y+oQECINqEHJ+kp+M4rYfRRBL1HQv\n\ 7 | 9Pjr5rDq6/NRrJl+n0W5ENFr4jQODw77VLm2aQlxn51rLgECQQDej50nvvFn1oCa\n\ 8 | LZLCknh8SNUy6JLXGDad6MFAu4MxH52cLjTG1XSLGhleuMwDLA+AhbRYrB+j05h2\n\ 9 | Sq5DvVpBAkEA3mou/Z/BgbJrN1wvihHk8O4A6Ip8M4PpJHClKiuMfl7kGR2f0eUj\n\ 10 | 5O4nosiI8+Wh7lYgkCcCZss4pDaJTeqsPwJBALf9W/t2tBWW0/whvtkRw39jqrUK\n\ 11 | ZhJh1w0WVWURX3Sl4WMzI7hY0J8KdXzEIwxgSXSDlENWEFYcYEcyl/wyNsECQC7D\n\ 12 | /OVvNezjaw/U3loVsSHHqYE7vSnHzrnOxau8RGo94ZA2Xmhv2cBFIyhjKgi+e/H1\n\ 13 | QhuNWD/s8xf0L6KmeVkCQCFyWNIfFbZ9Z4qdBtDC5bsNBbM+vZM7WqFoy9hy6ud4\n\ 14 | SpK1mW54/bu+hy0dPftZLwyBwU1wlvH3FKXE5KFwUCE=\n\ 15 | -----END RSA PRIVATE KEY-----\n"}; 16 | 17 | static char server_crt[]={"-----BEGIN CERTIFICATE-----\n\ 18 | MIIC3jCCAkegAwIBAgIJAMDrWIvND12iMA0GCSqGSIb3DQEBBQUAMIGHMQswCQYD\n\ 19 | VQQGEwJDTjELMAkGA1UECAwCWkoxCzAJBgNVBAcMAkhaMRUwEwYDVQQKDAxhdnBs\n\ 20 | YXllci5vcmcxEDAOBgNVBAsMB2F2c29ja3MxEDAOBgNVBAMMB2F2c29ja3MxIzAh\n\ 21 | BgkqhkiG9w0BCQEWFGF2c29ja3NAYXZwbGF5ZXIub3JnMB4XDTEzMDEyMjE2NTk0\n\ 22 | M1oXDTEzMDIyMTE2NTk0M1owgYcxCzAJBgNVBAYTAkNOMQswCQYDVQQIDAJaSjEL\n\ 23 | MAkGA1UEBwwCSFoxFTATBgNVBAoMDGF2cGxheWVyLm9yZzEQMA4GA1UECwwHYXZz\n\ 24 | b2NrczEQMA4GA1UEAwwHYXZzb2NrczEjMCEGCSqGSIb3DQEJARYUYXZzb2Nrc0Bh\n\ 25 | dnBsYXllci5vcmcwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMFc2pnXGUo6\n\ 26 | vWR1fC0NBxjmPtIOXDfZUCME5C+pOkBRbR7nqRH00QIbAAy9ch2HxDT7iGHux8aG\n\ 27 | iot10zpFLwRJ/2gkEUag/L4SC4MQBOQSltPOGgPqkvqWDp8ma3aiD5LZvonCWhB3\n\ 28 | 0qUGN6FrRzewKJUlSEJuO+f2WGjwpuH/AgMBAAGjUDBOMB0GA1UdDgQWBBTMZnN8\n\ 29 | dsYlPZHSuFkf8Kz9NrYWWjAfBgNVHSMEGDAWgBTMZnN8dsYlPZHSuFkf8Kz9NrYW\n\ 30 | WjAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4GBAG3298a+HI7KYFScuUSu\n\ 31 | ceWO9josXzQ7teXToi3eA/ToEzWJN1vxZeGwiwH76+Vl1EHg5OVQ/PoBpJDGr7+5\n\ 32 | NIw6UxEBZYjgIQm7zu5buRzmeXjUX9Q4J+TPI2QA0U0QjF8Ndv3tYLV15jacxozw\n\ 33 | fqgpugGlsz7uMdcyij9shxsn\n\ 34 | -----END CERTIFICATE-----\n"}; 35 | -------------------------------------------------------------------------------- /src/gfwlist.hpp: -------------------------------------------------------------------------------- 1 | 2 | /** 3 | * gfwlist.hpp 自动更新下载 gfwlist.txt 文件,并执行 gfw 匹配 4 | * 5 | * copyright (C) 2013 microcai 6 | **/ 7 | 8 | #pragma once 9 | 10 | #include "pch.hpp" 11 | 12 | #if defined _WIN32 || defined __CYGWIN__ 13 | #define SYMBOL_HIDDEN 14 | #else 15 | #if __GNUC__ >= 4 || defined __clang__ 16 | #define SYMBOL_HIDDEN __attribute__ ((visibility ("hidden"))) 17 | #else 18 | #define SYMBOL_HIDDEN 19 | #endif 20 | #endif 21 | 22 | namespace urdl{ 23 | 24 | class SYMBOL_HIDDEN https : protected boost::noncopyable{ 25 | public: 26 | typedef boost::function< void(const boost::system::error_code & , boost::asio::streambuf & body) > completedhander; 27 | // template< class Handle> 28 | https(asio::io_service& _io_service, std::string url, completedhander handler) 29 | :io_service(_io_service), 30 | m_sslctx(ssl::context::sslv23), 31 | resolver(_io_service), 32 | m_handler(handler) 33 | { 34 | method = "GET"; 35 | std::size_t dem = url.find("://"); 36 | if( url.substr(0,dem) == "https"){ 37 | port = 443; 38 | } 39 | std::size_t dem_query = url.find("/",dem+3); 40 | host = url.substr(dem +3,dem_query - dem -3); 41 | query = url.substr(dem_query,std::string::npos); 42 | 43 | m_sslctx.set_verify_mode(ssl::context::verify_none); 44 | 45 | m_sslstream.reset(new sslsocket(io_service,m_sslctx)); 46 | ip::tcp::resolver::query query(host,boost::lexical_cast(port)); 47 | resolver.async_resolve(query,boost::bind(&https::resolved, this, asio::placeholders::error, asio::placeholders::iterator)); 48 | //asio::async_connect(*m_sslstream.lowest_layer(), ); 49 | } 50 | private: 51 | void resolved(const boost::system::error_code& ec, ip::tcp::resolver::iterator it){ 52 | if(!ec){ 53 | asio::async_connect(m_sslstream->lowest_layer(), it, boost::bind(&https::connected, this, asio::placeholders::error)); 54 | }else m_handler(ec, m_response_body); 55 | } 56 | 57 | void connected(const boost::system::error_code& ec){ 58 | if(!ec){ 59 | m_sslstream->async_handshake(ssl::stream_base::client, boost::bind(&https::hande_handshake, this, asio::placeholders::error)); 60 | }else m_handler(ec, m_response_body); 61 | } 62 | 63 | void hande_handshake(const boost::system::error_code& ec){ 64 | if(!ec) 65 | { 66 | // 发送 GET 67 | std::string httpheader = boost::str( 68 | boost::format("GET %s HTTP/1.0\r\nHost: %s\r\nConnection: close\r\n\r\n") 69 | % query % host 70 | ); 71 | asio::async_write(*m_sslstream, asio::buffer(httpheader.c_str(), httpheader.length()), boost::bind(&https::handle_write_header, this, asio::placeholders::error)); 72 | }else m_handler(ec, m_response_body); 73 | } 74 | 75 | void handle_write_header(const boost::system::error_code& ec){ 76 | if(!ec){ 77 | // 读取response 78 | asio::async_read_until(*m_sslstream, m_response_header, std::string("\r\n\r\n"), 79 | boost::bind(&https::handle_read_header, this, asio::placeholders::error, asio::placeholders::bytes_transferred) 80 | ); 81 | }else m_handler(ec, m_response_body); 82 | } 83 | 84 | void handle_read_header(const boost::system::error_code& ec, std::size_t bytes_transferred){ 85 | if(!ec){ 86 | std::istream stream(&m_response_header); 87 | std::string v1,v2,v3; 88 | stream >> v1 >> v2 >> v3; 89 | if(v2 == "200"){ 90 | asio::async_read(*m_sslstream, m_response_body.prepare(16384), 91 | boost::bind(&https::handle_read_body, this, asio::placeholders::error, asio::placeholders::bytes_transferred) 92 | ); 93 | }else m_handler(asio::error::make_error_code(asio::error::network_reset), m_response_body); 94 | }else m_handler(ec, m_response_body); 95 | } 96 | 97 | void handle_read_body(const boost::system::error_code& ec, std::size_t bytes_transferred){ 98 | 99 | if(!ec){ 100 | m_response_body.commit(bytes_transferred); 101 | asio::async_read(*m_sslstream, m_response_body.prepare(16384), 102 | boost::bind(&https::handle_read_body, this, asio::placeholders::error, asio::placeholders::bytes_transferred) 103 | ); 104 | }else if(ec == asio::error::eof){ 105 | // now its full, call the callback hander 106 | boost::system::error_code noerror; 107 | m_handler(noerror, m_response_body); 108 | }else m_handler(ec, m_response_body); 109 | } 110 | 111 | typedef asio::ssl::stream sslsocket; 112 | 113 | asio::io_service& io_service; 114 | ip::tcp::resolver resolver; 115 | ssl::context m_sslctx; 116 | std::string host; 117 | std::string query; 118 | std::string method; 119 | int port; 120 | boost::scoped_ptr m_sslstream; 121 | asio::streambuf m_response_header; 122 | asio::streambuf m_response_body; 123 | completedhander m_handler; 124 | }; 125 | 126 | } 127 | 128 | class gfwlist : protected boost::noncopyable{ 129 | public: 130 | // 默认构造文件. 131 | gfwlist(asio::io_service & _io_service):io_service(_io_service){ 132 | #ifndef _WIN32 133 | if(getenv("HOME")) 134 | m_cached_gfwlist = fs::path(getenv("HOME")) / ".cache" / "gfwlist.txt"; 135 | else 136 | m_cached_gfwlist = fs::path("/etc/cache/gfwlist.txt"); 137 | #else 138 | m_cached_gfwlist = fs::path(getenv("USERPROFILE")) / ".avsocks" / "gfwlist.txt"; 139 | #endif 140 | } 141 | 142 | // 在 $HOME/.cache/gfwlist.txt 保存一份缓存的 GFWLIST 文件,如果时间超过一天就重新下载. 143 | void async_check_and_update(){ 144 | bool do_download = false; 145 | if(fs::exists(m_cached_gfwlist) && fs::is_regular_file(m_cached_gfwlist)){ 146 | // 检查日期. 147 | std::time_t current_time; 148 | std::time_t last_write_time = fs::last_write_time(m_cached_gfwlist); 149 | std::time(¤t_time); 150 | 151 | if( current_time - last_write_time > 24*3600){ 152 | do_download = true; 153 | } 154 | }else if(fs::exists(m_cached_gfwlist) && !fs::is_regular_file(m_cached_gfwlist)){ 155 | fs::remove(m_cached_gfwlist); 156 | do_download = true; 157 | }else{ 158 | if(!fs::exists(m_cached_gfwlist.parent_path())) 159 | fs::create_directory(m_cached_gfwlist.parent_path()); 160 | do_download = true; 161 | } 162 | 163 | if ( do_download ) { 164 | // 下载文件吧,下载文件大丈夫. 165 | m_https.reset( 166 | new urdl::https(io_service, "https://raw.github.com/avplayer/avsocks/master/gfwlist.txt", 167 | boost::bind(&gfwlist::handle_downloaded, this, _1, _2)) 168 | ); 169 | }else{ 170 | // load from file 171 | std::ifstream inf(m_cached_gfwlist.c_str()); 172 | while(!inf.eof()){ 173 | std::string line; 174 | std::getline(inf,line); 175 | m_content_lines.push_back(line); 176 | } 177 | compile_rules(); 178 | } 179 | } 180 | 181 | // 该函数的作用就是检查 gfwlist.txt 判定是否被河蟹. 182 | bool is_gfwed(const std::string host, unsigned int port = 80) const{ 183 | BOOST_FOREACH(const std::string &l, m_content_lines) 184 | { 185 | if( l[0] == '!' || l.empty()) 186 | continue; 187 | if( is_matched(host,port, l)) 188 | return true; 189 | } 190 | return false; 191 | } 192 | 193 | private: 194 | // 编译规则,编译后的规则更容易匹配. 195 | void compile_rules(){ 196 | //TODO 197 | } 198 | 199 | std::string get_domain(const std::string & rule) const { 200 | std::size_t pos = rule.find("/"); 201 | if( pos != std::string::npos){ 202 | return rule.substr(0,pos); 203 | } 204 | return rule; 205 | } 206 | 207 | bool is_domain_match(const std::string &host, const std::string& domain) const { 208 | bool ret = host.find(domain.c_str())!=std::string::npos; 209 | return ret; 210 | } 211 | 212 | bool is_matched(const std::string& host, unsigned int port, const std::string& rule) const { 213 | if(rule[0]=='|' && rule[1]=='|'){ // 整个域名匹配. 214 | return is_domain_match(host, get_domain(rule.substr(2))); 215 | }else if(rule[0]=='@' && rule[1]=='@'){ 216 | // 反过来 217 | return false; 218 | }else if(rule.substr(0,8) == "|http://"){ 219 | if( port != 80) 220 | return false; 221 | return is_domain_match(host, get_domain(rule.substr(8))); 222 | }else if(rule.substr(0,9) == "|https://"){ 223 | if( port != 443) 224 | return false; 225 | return is_domain_match(host, get_domain(rule.substr(9))); 226 | }else if(rule.substr(0,9) == "/^https?:") 227 | { 228 | if(port == 443) 229 | return false; 230 | }else if(rule[0]=='/' || rule.substr(0,2) == "!-"){ 231 | // url 模式暂时不支持 232 | return false; 233 | }else { // free style 了. 234 | return is_domain_match(host, get_domain(rule)); 235 | } 236 | return false; 237 | } 238 | 239 | private: 240 | void handle_downloaded(const boost::system::error_code & ec, asio::streambuf & content){ 241 | if(!ec){ 242 | // download completed 243 | base64_decode(content); 244 | // save to file 245 | std::ofstream outf(m_cached_gfwlist.c_str()); 246 | BOOST_FOREACH(const std::string &l, m_content_lines) 247 | { 248 | outf << l << std::endl; 249 | } 250 | }else{ 251 | // TODO 重试. 252 | std::cout << ec.message() << std::endl; 253 | } 254 | m_https.reset(); 255 | } 256 | 257 | // BASE64 解码. 258 | void base64_decode(asio::streambuf & m_content_base64){ 259 | using namespace boost::archive::iterators; 260 | // convert base64 characters to binary values 261 | typedef transform_width< binary_from_base64, 8, 6, char> base64Iterator; 262 | 263 | const char * data = asio::buffer_cast( m_content_base64.data() ); 264 | 265 | std::string str(data,asio::buffer_size(m_content_base64.data())); 266 | boost::replace_all(str,"\n",""); 267 | boost::replace_all(str,"\r",""); 268 | 269 | std::string decoded( base64Iterator(str.begin()) , base64Iterator(str.end())); 270 | 271 | boost::split(m_content_lines,decoded,boost::is_any_of("\n")); 272 | } 273 | 274 | private: 275 | asio::io_service& io_service; 276 | fs::path m_cached_gfwlist; 277 | std::vector m_content_lines; 278 | boost::scoped_ptr m_https; 279 | }; 280 | -------------------------------------------------------------------------------- /src/main.cpp: -------------------------------------------------------------------------------- 1 | // 头文件定义. 2 | #include "pch.hpp" 3 | 4 | // 通过使用 SYMBOL_HIDDEN 让这个类不要导出,减少ELF文件体积. 5 | #if defined _WIN32 || defined __CYGWIN__ 6 | #define SYMBOL_HIDDEN 7 | #else 8 | #if __GNUC__ >= 4 || defined __clang__ 9 | #define SYMBOL_HIDDEN __attribute__ ((visibility ("hidden"))) 10 | #else 11 | #define SYMBOL_HIDDEN 12 | #endif 13 | #endif 14 | 15 | #ifdef HAVE_SYSTEMD 16 | #include "systemd/sd-daemon.h" 17 | #endif 18 | 19 | #include "splice.hpp" 20 | #include "avsession.hpp" 21 | #include "gfwlist.hpp" 22 | #include "avauth.hpp" 23 | 24 | typedef boost::shared_ptr< asio::ip::tcp::socket > socketptr; 25 | typedef asio::ip::tcp::resolver dnsresolver; 26 | typedef asio::ip::tcp::endpoint hostaddress; 27 | 28 | static asio::io_service io_service; 29 | // 用来连接avsocks服务器的地址! 30 | static hostaddress avserver_address; 31 | static boost::shared_ptr auth; 32 | 33 | 34 | // avclient类定义, 每一个客户(可能是socks5或加密ssl)连接, 都将创建一个avclient 35 | // 对象, 在avclient中, 根据连接的对象是socks5或加密ssl, 自动启动不同的工作. 36 | // 如果是socks5连接, 则将启动avsession; 如果是ssl, 则转发数据到远程server中. 37 | // 38 | // Fuck墙的工程流程大致如下图所示: 39 | // 40 | // +---------------+ | +-------------+ 41 | // browser/app --> | socks5 -> ssl | ----|---> | ssl -> sock |--> website/server 42 | // +---------------+ | +-------------+ 43 | // GFW 44 | // 45 | 46 | class avclient 47 | : public boost::enable_shared_from_this 48 | , private boost::noncopyable 49 | { 50 | public: 51 | typedef boost::shared_ptr avclientptr; 52 | 53 | std::map& config; 54 | 55 | public: 56 | // avclient构造析构函数. 57 | avclient(asio::io_service& _io_service, std::map& config, 58 | gfwlist& gfwlistfile, socketptr socket, hostaddress avserveraddr); 59 | 60 | // 创建一个avclient对象, 并进入工作. 61 | static void new_avclient(asio::io_service& _io_service, std::map& config, 62 | gfwlist& gfwlistfile, socketptr socket, hostaddress avserveraddr = avserver_address); 63 | 64 | // 启动avclient工作. 65 | void start(); 66 | 67 | private: 68 | 69 | // 检查连接类型, 是否为ssl或socks5连接, 方法: 通过读取第一个数据包来确定客户端的类型. 70 | void typedetect(const boost::system::error_code & ec) SYMBOL_HIDDEN; 71 | // ssl握手. 72 | void handle_ssl_handshake(const boost::system::error_code & ec) SYMBOL_HIDDEN; 73 | // 连接远程代理服务器回调. 74 | void handle_avserver_connected(const boost::system::error_code & ec) SYMBOL_HIDDEN; 75 | // 设置证书和私钥信息. 76 | void setup_ssl_cert() SYMBOL_HIDDEN; 77 | void start_ssl_handshake() SYMBOL_HIDDEN; 78 | void detect_ifgfwed(const boost::system::error_code & ec, std::size_t bytes_transferred, int state) SYMBOL_HIDDEN; 79 | void start_socks5_helper() SYMBOL_HIDDEN; 80 | void handle_socks5_auth(const boost::system::error_code & ec, std::size_t bytes_transferred, int state) SYMBOL_HIDDEN; 81 | void socks5_send_request() SYMBOL_HIDDEN; 82 | 83 | private: 84 | 85 | enum { 86 | AVCLIENT_TYPE_SOCKS5, // 工作在client模式,意味着直接将数据SSL转发给远程的avsocks服务器. 87 | AVCLIENT_TYPE_SERVER, // 工作在server模式,意味着需要将SSL读取的数据直接转发给远程主机. 88 | } m_type; 89 | 90 | asio::io_service& io_service; 91 | gfwlist& m_gfwlistfile; 92 | hostaddress m_avsocks_serveraddress; 93 | socketptr m_socket_client; 94 | ip::tcp::socket m_socket_server; 95 | ssl::context m_sslctx; 96 | boost::shared_ptr > m_sslstream; 97 | // 浏览器想要连接的目标. 98 | std::string host; 99 | int port; 100 | }; 101 | 102 | 103 | // 下面是avclient的具体实现. 104 | 105 | 106 | avclient::avclient(asio::io_service& _io_service, std::map& config, 107 | gfwlist& gfwlistfile, socketptr socket, hostaddress avserveraddr) 108 | : io_service(_io_service) 109 | , m_socket_client(socket) 110 | , m_avsocks_serveraddress(avserveraddr) 111 | , m_sslctx(ssl::context::sslv23) 112 | , m_socket_server(_io_service) 113 | , config(config) 114 | , m_gfwlistfile(gfwlistfile) 115 | {} 116 | 117 | void avclient::start() 118 | { 119 | // 首先读取第一个字节,来确定工作在server状态还是client状态. 120 | // server状态很明显,第一个接收的包是 SSL 握手的. 121 | // 所以,先读取第一个数据. 122 | m_socket_client->async_read_some(asio::null_buffers(), 123 | boost::bind(&avclient::typedetect, shared_from_this(), asio::placeholders::error)); 124 | } 125 | 126 | void avclient::typedetect(const boost::system::error_code& ec) 127 | { 128 | boost::uint8_t buffer[64]={0}; 129 | int fd = m_socket_client->native_handle(); 130 | 131 | // 使用 msg_peek, 这样读取的数据并不会从接收缓冲区删除. 132 | #if defined(WIN32) || defined(__APPLE__) 133 | recv(fd, (char*)buffer, sizeof(buffer), MSG_PEEK); 134 | #else 135 | recv(fd, buffer, sizeof(buffer), MSG_PEEK|MSG_NOSIGNAL|MSG_DONTWAIT); 136 | #endif // WIN32 or __APPLE__ 137 | 138 | // 检查 socks5. 139 | if(buffer[0] == 0x05 || buffer[0] == 'G') 140 | { 141 | m_type = AVCLIENT_TYPE_SOCKS5; 142 | // 检测到 socks5 协议!,进入 client 模式,向 server 端发起SSL连接. 143 | std::cout << "client mode" << std::endl; 144 | // 检查是否被墙. 145 | m_socket_client->async_read_some(boost::asio::null_buffers(), 146 | boost::bind(&avclient::detect_ifgfwed, shared_from_this(), 147 | asio::placeholders::error, asio::placeholders::bytes_transferred, 0)); 148 | 149 | } 150 | else//TODO: 检查 HTTP 协议. 151 | { 152 | // 否则就是 ssl handshake 了. 153 | m_type = AVCLIENT_TYPE_SERVER; 154 | 155 | start_ssl_handshake(); 156 | } 157 | } 158 | 159 | void avclient::start_socks5_helper() 160 | { 161 | m_sslstream.reset(new ssl::stream(m_socket_server, m_sslctx)); 162 | // 异步发起到 vps server的连接,并开始读取client的第一个请求,依 163 | // 据请求来判定是 socks5 还是 HTTP 还是透明代理. 164 | m_socket_server.async_connect(m_avsocks_serveraddress, 165 | boost::bind(&avclient::handle_avserver_connected, shared_from_this(), asio::placeholders::error)); 166 | } 167 | 168 | 169 | void avclient::detect_ifgfwed(const boost::system::error_code& ec, std::size_t bytes_transferred, int state) 170 | { 171 | // 出错了就没了. 172 | if(ec) 173 | return; 174 | 175 | boost::uint8_t buffer[300]={0}; 176 | boost::system::error_code ec_; 177 | std::size_t n; 178 | // 这里是状态机. 179 | switch(state) { 180 | case 0: // 读取客户端认证方式列表. 181 | // 读取版本号和支持的认证数. 182 | asio::read(*m_socket_client, asio::buffer(buffer, 2), ec_); 183 | // 读取支持的认证方法. 184 | asio::read(*m_socket_client, asio::buffer(buffer, buffer[1]), ec_); 185 | // 告诉客户端,不需要认证. 186 | asio::async_write(*m_socket_client, asio::buffer("\x05\x00", 2), 187 | boost::bind(&avclient::detect_ifgfwed, shared_from_this(), _1, _2, 1)); 188 | break; 189 | 190 | case 1: // 读取客户端请求. 191 | m_socket_client->async_read_some(asio::null_buffers(), 192 | boost::bind(&avclient::detect_ifgfwed, shared_from_this(), _1, _2, 2)); 193 | break; 194 | 195 | case 2: // 196 | n = m_socket_client->read_some(boost::asio::buffer(buffer), ec_); 197 | 198 | // 只支持CONNECT 199 | if(!(buffer[0]==5 && buffer[1] == 1)) 200 | { 201 | std::cerr << "only suppport CONNECT now" << std::endl; 202 | return; 203 | } 204 | 205 | switch(buffer[3]) 206 | { 207 | case 0x01:// IPv4. 208 | { 209 | // ipv4 模式无法执行 GFW 匹配,全部走SSL通道. 210 | 211 | boost::asio::ip::tcp::endpoint endp; 212 | endp.address(boost::asio::ip::address_v4(ntohl(*((boost::uint32_t*)(buffer + 4))))); 213 | endp.port(ntohs(*((boost::uint16_t*)(buffer+8)))); 214 | host = endp.address().to_string(); 215 | port = endp.port(); 216 | start_socks5_helper(); 217 | return; 218 | } 219 | break; 220 | case 0x03: 221 | { 222 | std::size_t dlen = buffer[4]; 223 | host.assign(buffer+5, buffer+5+dlen); 224 | port = ntohs( *(boost::uint16_t*)(buffer+5+dlen)); 225 | if( config["gfwlist"] == "on" ) 226 | { 227 | if( m_gfwlistfile.is_gfwed(host, port) ) 228 | { 229 | std::cout << "Oooops, " << host << " has been gfwed!!! " << std::endl; 230 | start_socks5_helper(); 231 | return; 232 | } 233 | else 234 | { 235 | std::cout << "good, " << host << " can be connected directly" << std::endl; 236 | } 237 | } 238 | else 239 | { 240 | start_socks5_helper(); 241 | return; 242 | } 243 | } 244 | break; 245 | } 246 | 247 | boost::shared_ptr > 248 | session(new avsession (shared_from_this(), *m_socket_client, m_socket_server, auth)); 250 | session->start(host, port); 251 | break; 252 | } 253 | } 254 | 255 | void avclient::start_ssl_handshake() 256 | { 257 | // 设置 SSL 证书等等. 258 | setup_ssl_cert(); 259 | // 把 client 的socket打入SSL模式. 260 | m_sslstream.reset(new ssl::stream(*m_socket_client, m_sslctx)); 261 | // 执行 SSL 握手. 262 | m_sslstream->async_handshake(ssl::stream_base::server, 263 | boost::bind(&avclient::handle_ssl_handshake, shared_from_this(), asio::placeholders::error)); 264 | } 265 | 266 | 267 | void avclient::handle_avserver_connected(const boost::system::error_code& ec) 268 | { 269 | if (!ec) 270 | { 271 | // 执行 ssl handshake. 272 | m_sslstream->async_handshake(ssl::stream_base::client, 273 | boost::bind(&avclient::handle_ssl_handshake, shared_from_this(), asio::placeholders::error)); 274 | } 275 | else 276 | { 277 | std::cout << ec.message() << std::endl; 278 | } 279 | } 280 | 281 | void avclient::socks5_send_request() 282 | { 283 | boost::uint8_t buffer[512]; 284 | std::size_t len = 0; 285 | buffer[len++] = 5; 286 | buffer[len++] = 1; // CONNECT. 287 | buffer[len++] = 0; // RSV. 288 | buffer[len++] = 3; // ATYP:DOMAIN. 289 | buffer[len++] = host.size(); 290 | std::copy(host.begin(), host.end(), buffer + len); 291 | len += host.size(); 292 | *(boost::uint16_t*)(buffer+len) = htons(port); 293 | len += 2; 294 | m_sslstream->async_write_some(asio::buffer(buffer, len), 295 | boost::bind(&avclient::handle_socks5_auth, shared_from_this(), _1, _2, 4)); 296 | } 297 | 298 | 299 | void avclient::handle_socks5_auth(const boost::system::error_code& ec, std::size_t bytes_transferred, int state) 300 | { 301 | if(ec) 302 | return; 303 | switch(state) 304 | { 305 | case 0: // 发送完验证方式. 306 | { 307 | m_sslstream->async_read_some(asio::null_buffers(), 308 | boost::bind(&avclient::handle_socks5_auth, shared_from_this(), _1, _2, 1)); 309 | } 310 | break; 311 | case 1: // 看看服务器需要什么方式. 312 | { 313 | boost::uint8_t buffer[256]; 314 | boost::system::error_code ec_; 315 | // 理论上来说,应该是读取到两个字节. 316 | m_sslstream->read_some(asio::buffer(buffer, 256), ec_); 317 | 318 | if(buffer[0] == 0x05) 319 | { 320 | // 服务器说不要认证. 321 | if(buffer[1] == 0x00) 322 | { 323 | socks5_send_request(); 324 | } 325 | // 服务器需要认证. 326 | else if(buffer[1] == 0x02 && ! config["auth"].empty()) 327 | { 328 | boost::uint8_t data[1024]; 329 | std::size_t pos = 0; 330 | data[pos++] = 5; 331 | std::vector user_pass; 332 | boost::split(user_pass, config["auth"], boost::is_any_of(":")); 333 | if(user_pass.size() == 2) 334 | { 335 | data[pos++] = user_pass[0].size(); 336 | std::copy(user_pass[0].begin(), user_pass[0].end(), data+pos); 337 | pos += user_pass[0].size(); 338 | data[pos++] = user_pass[1].size(); 339 | std::copy(user_pass[1].begin(), user_pass[1].end(), data+pos); 340 | pos += user_pass[1].size(); 341 | m_sslstream->async_write_some(asio::buffer(data, pos), 342 | boost::bind(&avclient::handle_socks5_auth, shared_from_this(), _1, _2, 2)); 343 | } 344 | } 345 | } 346 | } 347 | break; 348 | case 2: // 开始读取认证结果. 349 | { 350 | m_sslstream->async_read_some(asio::null_buffers(), 351 | boost::bind(&avclient::handle_socks5_auth, shared_from_this(), _1, _2, 3)); 352 | } 353 | break; 354 | case 3: // 读取认证的结果. 355 | { 356 | boost::uint8_t buffer[2]; 357 | boost::system::error_code ec_; 358 | std::size_t n; 359 | n = m_sslstream->read_some(asio::buffer(buffer), ec_); 360 | if( n == 2 && buffer[0] == 5 && buffer[1] == 0) 361 | { 362 | socks5_send_request(); 363 | } 364 | } 365 | case 4: // 已经将请求发送给服务器,开始对接. 366 | { 367 | boost::shared_ptr > > 368 | splice(new avsocks::splice > (shared_from_this(), *m_socket_client, *m_sslstream)); 369 | splice->start(); 370 | } 371 | break; 372 | } 373 | } 374 | 375 | 376 | void avclient::handle_ssl_handshake(const boost::system::error_code& ec) 377 | { 378 | if(!ec) 379 | { 380 | if(m_type == AVCLIENT_TYPE_SERVER) 381 | { 382 | // 客户端已经被授权了,那么,开始处理吧,支持 SOCKS5 协议哦! 383 | boost::shared_ptr,ip::tcp::socket> > 384 | session(new avsession, ip::tcp::socket> 385 | (shared_from_this(), *m_sslstream, m_socket_server, auth)); 386 | session->start(); 387 | } 388 | else 389 | { 390 | if( config["auth"].empty() ) 391 | { 392 | m_sslstream->async_write_some(asio::buffer("\x05\x01\x00"), 393 | boost::bind(&avclient::handle_socks5_auth, shared_from_this(), _1, _2, 0)); 394 | } 395 | else 396 | { 397 | m_sslstream->async_write_some(asio::buffer("\x05\x02\x00\x02"), 398 | boost::bind(&avclient::handle_socks5_auth, shared_from_this(), _1, _2, 0)); 399 | } 400 | // splice过去, 协议的解析神码的都交给服务器来做就是了. 401 | // boost::shared_ptr > > 402 | // splice(new avsocks::splice > (shared_from_this(), *m_socket_client, *m_sslstream)); 403 | // splice->start(); 404 | } 405 | } 406 | else 407 | { 408 | std::cout << ec.message() << std::endl; 409 | } 410 | } 411 | 412 | #include "cert.hpp" // 引入证书和私钥数据. 413 | 414 | void avclient::setup_ssl_cert() 415 | { 416 | m_sslctx.set_verify_mode(ssl::context::verify_none); 417 | m_sslctx.set_options(ssl::context::default_workarounds|ssl::context::no_sslv2); 418 | 419 | SSL_CTX *CTX; 420 | 421 | CTX = m_sslctx.native_handle(); 422 | 423 | X509 *cert = NULL; 424 | RSA *rsa = NULL; 425 | BIO *bio = NULL; 426 | 427 | bio = BIO_new_mem_buf(server_crt,sizeof(server_crt)); 428 | cert = PEM_read_bio_X509(bio, NULL, 0, NULL); 429 | SSL_CTX_use_certificate(CTX, cert); 430 | BIO_free_all(bio); 431 | 432 | bio = BIO_new_mem_buf(server_key,sizeof(server_key)); 433 | rsa = PEM_read_bio_RSAPrivateKey(bio, NULL, 0, NULL); 434 | SSL_CTX_use_RSAPrivateKey(CTX, rsa); 435 | BIO_free_all(bio); 436 | } 437 | 438 | 439 | void avclient::new_avclient(asio::io_service& io_service, std::map& config, 440 | gfwlist& gfwlistfile, socketptr socket, hostaddress avserveraddr/* = avserver_address*/) 441 | { 442 | // 先构造一个对象. 443 | avclientptr p(new avclient(io_service, config, gfwlistfile, socket, avserveraddr)); 444 | // 立刻开始工作. 445 | p->start(); 446 | } 447 | 448 | 449 | // 一个简单的accept服务器, 用于不停的异步接受客户端的连接, 连接可能是socks5连接或ssl加密数据连接. 450 | static void do_accept(ip::tcp::acceptor &accepter, std::map& config, 451 | gfwlist& gfwlistfile, socketptr avsocketclient, const boost::system::error_code &ec) 452 | { 453 | // socket对象 454 | if(!ec) 455 | { 456 | // 使得这个avsocketclient构造一个avclient对象, 并start进入工作. 457 | avclient::new_avclient(io_service, config, gfwlistfile, avsocketclient); 458 | } 459 | 460 | // 创建新的socket, 进入侦听, . 461 | avsocketclient.reset(new ip::tcp::socket(accepter.get_executor())); 462 | accepter.async_accept(*avsocketclient, 463 | boost::bind(&do_accept, boost::ref(accepter), 464 | boost::ref(config), boost::ref(gfwlistfile), 465 | avsocketclient, asio::placeholders::error)); 466 | } 467 | 468 | 469 | int main(int argc, char **argv) 470 | { 471 | std::string avserverport; 472 | std::string localport; 473 | std::string avserveraddress; // = "avsocks.avplayer.org";//"fysj.com" 474 | bool is_ipv6 = false; 475 | std::map config; 476 | 477 | po::options_description desc("avsocks options"); 478 | desc.add_options() 479 | ( "version,v", "output version" ) 480 | ( "help,h", "produce help message" ) 481 | ( "port,p", po::value(&avserverport)->default_value("4567"), "server port" ) 482 | ( "avserver", po::value(&avserveraddress)->default_value("localhost"), "avsocks server address" ) 483 | ( "listen,l", po::value(&localport)->default_value("4567"), "local listen port" ) 484 | ( "ipv6,6", po::value(&is_ipv6)->default_value(false), "is ipv6" ) 485 | ( "daemon,d", "go into daemon mode" ) 486 | ( "auth", po::value(&config["auth"]), "username:password pair" ) 487 | ( "authfile", po::value(&config["authfile"]), "a file consist of username password pair" ) 488 | ( "gfwlist", po::value(&config["gfwlist"])->default_value("off"), "enable gfwlist [on|off]") 489 | ; 490 | 491 | po::variables_map vm; 492 | 493 | // 读取配置文件, 优先级为: 临时配置 > 用户配置 > 系统配置. 494 | std::vector config_files; 495 | config_files.push_back ( "/etc/avsocks.conf" ); // 系统配置文件. 496 | 497 | if ( getenv ( "HOME" ) ) 498 | config_files.push_back ( fs::path ( getenv ( "HOME" ) ) / ".avsocks.conf" ); // 用户配置文件. 499 | 500 | config_files.push_back ( "avsocks.conf" ); // 临时配置文件. 501 | BOOST_FOREACH ( fs::path config_file, config_files ) { 502 | if ( fs::exists ( config_file ) ) { 503 | po::store ( po::parse_config_file ( config_file.string().c_str(), desc ), vm ); 504 | } 505 | } 506 | 507 | po::store(po::parse_command_line(argc, argv, desc), vm); 508 | 509 | po::notify(vm); 510 | 511 | if (vm.count("help")) 512 | { 513 | std::cerr << desc << std::endl; 514 | return 1; 515 | } 516 | if (vm.count("version")) 517 | { 518 | std::cout << "avsocks version " << "0.1" << std::endl; 519 | } 520 | 521 | // 解析 avsocks 服务器地址. 522 | avserver_address = *dnsresolver(io_service).resolve(dnsresolver::query(avserveraddress, avserverport)); 523 | 524 | if( !config["authfile"].empty() ) 525 | { 526 | if(fs::exists(config["authfile"])) 527 | auth.reset(new avauth(config["authfile"])); 528 | else 529 | std::cerr << "authfile not exists: " << config["authfile"] << std::endl; 530 | } 531 | 532 | gfwlist gfwlistfile(io_service); 533 | 534 | if(config["gfwlist"] == "on") 535 | { 536 | gfwlistfile.async_check_and_update(); 537 | } 538 | // 不论是 server还是client,都是使用的监听模式嘛。所以创建个 accepter 就可以了. 539 | boost::shared_ptr acceptor; 540 | #ifdef __linux__ 541 | 542 | if ( sd_listen_fds ( 0 ) > 0 ) { 543 | ip::tcp::socket::native_handle_type fd = sd_listen_fds ( 1 ) + SD_LISTEN_FDS_START; 544 | 545 | if ( sd_is_socket ( fd, AF_INET6, SOCK_STREAM, 1 ) ) { // ipv6 协议. 546 | std::cout << "v6" << std::endl; 547 | acceptor.reset(new ip::tcp::acceptor( io_service, asio::ip::tcp::v6(), fd )); 548 | } else if ( sd_is_socket ( fd, AF_INET, SOCK_STREAM, 1 ) ) { // ipv4 协议. 549 | std::cout << "v4" << std::endl; 550 | acceptor.reset(new ip::tcp::acceptor( io_service, asio::ip::tcp::v4(), fd )); 551 | } else { 552 | std::cerr << "invalid socket passed by systemd" << std::endl; 553 | return 1; 554 | } 555 | }else 556 | #endif // windows 下自带 fallback 过去就是用这个了. 557 | acceptor.reset(new ip::tcp::acceptor( io_service, 558 | ip::tcp::endpoint(is_ipv6 ? ip::tcp::v6() : ip::tcp::v4(), boost::lexical_cast(localport) ))); 559 | 560 | { 561 | socketptr avsocketclient(new asio::ip::tcp::socket(acceptor->get_executor())); 562 | acceptor->async_accept(*avsocketclient, 563 | boost::bind(&do_accept, boost::ref(*acceptor), 564 | boost::ref(config), boost::ref(gfwlistfile), 565 | avsocketclient, asio::placeholders::error)); 566 | } 567 | 568 | #ifndef WIN32 569 | if(vm.count("daemon")>0) 570 | daemon(0, 0); 571 | #endif // WIN32 572 | 573 | asio::signal_set signal_set(io_service); 574 | signal_set.add(SIGINT); 575 | signal_set.add(SIGTERM); 576 | #ifdef SIGHUP 577 | signal_set.add(SIGHUP); 578 | #endif 579 | signal_set.async_wait(boost::bind(&asio::io_service::stop, boost::ref(io_service))); 580 | 581 | return io_service.run() > 0 ? 0 : 1; 582 | } 583 | -------------------------------------------------------------------------------- /src/pch.hpp: -------------------------------------------------------------------------------- 1 | 2 | #ifndef ___PCH____ 3 | #define ___PCH____ 4 | // for pre-compiled header 5 | 6 | #include 7 | #include 8 | #include 9 | #include 10 | #include 11 | 12 | #include 13 | #include 14 | 15 | #include 16 | 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | 26 | #include 27 | #include 28 | 29 | #include 30 | #include 31 | #include 32 | #include 33 | 34 | #include 35 | #include 36 | 37 | 38 | 39 | namespace asio = boost::asio; 40 | namespace ip = asio::ip; 41 | namespace ssl = asio::ssl; 42 | namespace po = boost::program_options; 43 | namespace fs = boost::filesystem; 44 | using boost::make_shared; 45 | 46 | #endif // ___PCH____ 47 | -------------------------------------------------------------------------------- /src/splice.hpp: -------------------------------------------------------------------------------- 1 | /** 2 | * splice.hpp , implements the splice syntactics. 3 | */ 4 | 5 | #pragma once 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | namespace asio = boost::asio; 13 | 14 | namespace avsocks{ 15 | 16 | #define ASIO_READ_PLACEHOLDERS asio::placeholders::error,asio::placeholders::bytes_transferred 17 | 18 | #define ASIO_WRITE_PLACEHOLDERS asio::placeholders::error,asio::placeholders::bytes_transferred 19 | 20 | #define SPLICE_SIZE 1024*1024 21 | 22 | template 23 | class splice : public boost::enable_shared_from_this >{ 24 | public: 25 | using boost::enable_shared_from_this >::shared_from_this; 26 | typedef boost::shared_ptr pointer; 27 | 28 | splice(boost::shared_ptr _owner, S1& _s1, S2& _s2) 29 | : s1(_s1),s2(_s2), owner(_owner) {} 30 | 31 | void start(){ 32 | s1.async_read_some(boost::asio::buffer(s1s2buf), 33 | boost::bind(&splice::s1s2_handle_read,shared_from_this(),ASIO_READ_PLACEHOLDERS) 34 | ); 35 | s2.async_read_some(boost::asio::buffer(s2s1buf), 36 | boost::bind(&splice::s2s1_handle_read,shared_from_this(),ASIO_READ_PLACEHOLDERS) 37 | ); 38 | } 39 | 40 | ~splice(){ 41 | } 42 | 43 | private: 44 | void s1s2_handle_read(const boost::system::error_code & ec, std::size_t bytes_transferred){ 45 | if(!ec){ 46 | boost::asio::async_write(s2, boost::asio::buffer(s1s2buf), boost::asio::transfer_exactly(bytes_transferred), 47 | boost::bind(&splice::s1s2_handle_write,shared_from_this(),ASIO_WRITE_PLACEHOLDERS) 48 | ); 49 | } 50 | else if (ec == boost::asio::error::eof || bytes_transferred == 0){ 51 | boost::system::error_code ec; 52 | s1.lowest_layer().close(ec); 53 | s2.lowest_layer().shutdown(asio::socket_base::shutdown_both,ec);//->close(); 54 | } 55 | else { 56 | boost::system::error_code ec; 57 | s1.lowest_layer().close(ec); 58 | s2.lowest_layer().close(ec); 59 | } 60 | } 61 | void s1s2_handle_write(const boost::system::error_code & ec, std::size_t bytes_transferred){ 62 | if(!ec){ 63 | s1.async_read_some(boost::asio::buffer(s1s2buf), 64 | boost::bind(&splice::s1s2_handle_read,shared_from_this(),ASIO_READ_PLACEHOLDERS) 65 | ); 66 | } 67 | else { 68 | boost::system::error_code ec; 69 | s1.lowest_layer().close(ec); 70 | s2.lowest_layer().close(ec); 71 | } 72 | } 73 | void s2s1_handle_read(const boost::system::error_code & ec, std::size_t bytes_transferred){ 74 | if(!ec){ 75 | boost::asio::async_write(s1, boost::asio::buffer(s2s1buf), boost::asio::transfer_exactly(bytes_transferred), 76 | boost::bind(&splice::s2s1_handle_write,shared_from_this(),ASIO_WRITE_PLACEHOLDERS) 77 | ); 78 | }else if (ec == boost::asio::error::eof || bytes_transferred == 0){ 79 | boost::system::error_code ec; 80 | s2.lowest_layer().close(ec); 81 | s1.lowest_layer().shutdown(asio::socket_base::shutdown_both,ec); 82 | }else{ 83 | boost::system::error_code ec; 84 | s1.lowest_layer().close(ec); 85 | s2.lowest_layer().close(ec); 86 | } 87 | } 88 | void s2s1_handle_write(const boost::system::error_code & ec, std::size_t bytes_transferred){ 89 | if(!ec){ 90 | s2.async_read_some(boost::asio::buffer(s2s1buf), 91 | boost::bind(&splice::s2s1_handle_read,shared_from_this(),ASIO_READ_PLACEHOLDERS) 92 | ); 93 | }else{ 94 | boost::system::error_code ec; 95 | s1.lowest_layer().shutdown(asio::socket_base::shutdown_both,ec); 96 | } 97 | } 98 | private: 99 | std::array s1s2buf,s2s1buf; 100 | S1& s1; //两个 socket 101 | S2& s2; //两个 socket 102 | boost::shared_ptr owner; 103 | }; 104 | 105 | #undef ASIO_READ_PLACEHOLDERS 106 | #undef ASIO_WRITE_PLACEHOLDERS 107 | 108 | } // namespace avsocks. 109 | --------------------------------------------------------------------------------