pax_global_header00006660000000000000000000000064151654315630014523gustar00rootroot0000000000000052 comment=f40c31c81d90289ef0156fd67b0ff6f38c148a2d MEGAcmd-2.5.2_Linux/000077500000000000000000000000001516543156300141055ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/.dockerignore000066400000000000000000000020301516543156300165540ustar00rootroot00000000000000# Compiled Object files *.slo *.lo *.o *.obj *.lo *.pyc # Compiled Dynamic libraries *.so *.dylib *.dll # Compiled Static libraries *.lai *.la *.a *.lib # Executables *.exe *.out *.app # Editors and IDEs *~ .project .cproject .settings *.pro.user* .vscode CMakeLists.txt.user # MEGAcmd-specific files mega-cmd mega-exec mega-cmd-server mega-cmd-updater mega-cmd-tests-integration mega-cmd-tests-unit megaclient_statecache* megacmdversion.h # Standard location of CMake builds /build/build-cmake-* # Linux packaging files and artifacts /build/megacmd/PKGBUILD /build/megacmd/megacmd.dsc /build/megacmd/megacmd.spec /build/megacmd/megacmd_*.tar.gz # Windows packaging files and artifacts /build/build-x64-windows-mega /build/build-x86-windows-mega /build/built64 /build/built32 /build/sign32 /build/sign64 mega-cmd-server_version.rc # macOS packaging files and artifacts Info.plist # Git *_BACKUP_* *_BASE_* *_LOCAL_* *_REMOTE_* # Backups *_bk # Docker-specific .git build-with-docker .cache /sdk/contrib/QtCreator /sdk/contrib/sdk_build MEGAcmd-2.5.2_Linux/.github/000077500000000000000000000000001516543156300154455ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/.github/ISSUE_TEMPLATE/000077500000000000000000000000001516543156300176305ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/.github/ISSUE_TEMPLATE/bug_report.yml000066400000000000000000000033431516543156300225260ustar00rootroot00000000000000name: Bug Report description: "Report an issue with MEGAcmd" labels: ["bug"] body: - type: markdown attributes: value: "Thank you for filing a bug report!" - type: dropdown id: version attributes: label: "MEGAcmd version" description: "Which version of MEGAcmd did you encountered this issue? (Can be looked up using the `version` command)" options: - 2.1.1 - 2.1.0 - 2.0.0 - 1.7.0 - 1.6.3 - 1.6.2 - 1.6.1 - 1.6.0 - 1.5.1 - 1.5.0 - 1.4.1 - 1.3.0 - 1.2.0 - 1.1.0 - 1.0.0 validations: required: true - type: dropdown id: platform attributes: label: "Operating System/Platform" description: "What platform are you using MEGAcmd on?" options: - Windows - Linux - MacOS - Synology - QNAP validations: required: true - type: input id: platform-version attributes: label: "Platform version. In the case of Linux, please enter the Linux distribution you are using." placeholder: "ex. Windows 11 Pro" validations: required: true - type: textarea id: steps attributes: label: "Steps" description: "What steps did you take you encounter this issue?" placeholder: | 1. 2. 3. 4. validations: required: true - type: textarea id: expected-behavior attributes: label: "Expected behavior" description: "What did you expect to happen?" - type: textarea id: actual-behavior attributes: label: "Actual behavior" description: "What actually happened?" validations: required: true MEGAcmd-2.5.2_Linux/.gitignore000066400000000000000000000022541516543156300161000ustar00rootroot00000000000000# Compiled Object files *.slo *.lo *.o *.obj *.lo *.pyc # Compiled Dynamic libraries *.so *.dylib *.dll # Compiled Static libraries *.lai *.la *.a *.lib # Executables *.exe *.out *.app # Editors and IDEs *~ .project .cproject .settings *.pro.user* .vscode CMakeLists.txt.user # MEGAcmd-specific files mega-cmd mega-exec mega-cmd-server mega-cmd-updater mega-cmd-tests-integration mega-cmd-tests-unit megaclient_statecache* megacmdversion.h megacmd_src_file_list.h # Standard location of CMake builds /build/build-cmake-* # Linux packaging files and artifacts /build/megacmd/PKGBUILD /build/megacmd/megacmd.dsc /build/megacmd/megacmd.spec /build/megacmd/megacmd_*.tar.gz # Windows packaging files and artifacts /build/build-x64-windows-mega /build/build-x86-windows-mega /build/built64 /build/built32 /build/sign32 /build/sign64 /build/installer/mega-cmd-server_version.rc /build/installer/mega-cmd-client_version.rc /build/installer/mega-cmd-shell_version.rc /build/installer/mega-cmd-updater_version.rc # macOS packaging files and artifacts Info.plist # Synology packaging files and artifacts /build/SynologyNAS/packages # Git *_BACKUP_* *_BASE_* *_LOCAL_* *_REMOTE_* # Backups *_bk MEGAcmd-2.5.2_Linux/.gitmodules000066400000000000000000000001071516543156300162600ustar00rootroot00000000000000[submodule "sdk"] path = sdk url = https://github.com/meganz/sdk.git MEGAcmd-2.5.2_Linux/CMakeLists.txt000066400000000000000000000474361516543156300166630ustar00rootroot00000000000000# CMakeLists.txt file to build the MEGAcmd cmake_minimum_required(VERSION 3.16) find_package(Git REQUIRED) execute_process( COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/sdk OUTPUT_VARIABLE SDK_COMMIT_HASH OUTPUT_STRIP_TRAILING_WHITESPACE ) set(MEGACMD_MAJOR_VERSION 2) set(MEGACMD_MINOR_VERSION 5) set(MEGACMD_MICRO_VERSION 2) ## Configure megacmdversion.h configure_file("${CMAKE_CURRENT_LIST_DIR}/src/megacmdversion.h.in" "${CMAKE_CURRENT_LIST_DIR}/src/megacmdversion.h" @ONLY) if (APPLE) configure_file("${CMAKE_CURRENT_LIST_DIR}/build/installer/Info.plist.in" "${CMAKE_CURRENT_LIST_DIR}/build/installer/Info.plist" @ONLY) endif() # Qt Creator configures VCPKG automatically. Disable it, we may want to use different tripplets, paths... set(QT_CREATOR_SKIP_VCPKG_SETUP TRUE CACHE BOOL "") ## Modules location list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/build/cmake/modules) # Modules from MEGAcmd list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/sdk/cmake/modules) # Modules from MEGAsdk set(VCPKG_ROOT "${CMAKE_CURRENT_LIST_DIR}/../vcpkg" CACHE PATH "If set, it will build and use the VCPKG packages defined in the manifest file") include(detect_host_architecture) if (WIN32) execute_process( COMMAND bash --version RESULT_VARIABLE BASH_VERSION_RESULT OUTPUT_QUIET ERROR_QUIET ) endif() if((NOT WIN32 OR BASH_VERSION_RESULT EQUAL 0) AND NOT EXISTS ${VCPKG_ROOT}) message(STATUS "vcpkg will be cloned into ${VCPKG_ROOT}") execute_process( #TODO: have the same for windows ... or at least check if bash is available COMMAND "bash" "-x" "${CMAKE_CURRENT_LIST_DIR}/build/clone_vcpkg_from_baseline.sh" "${VCPKG_ROOT}" WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}" ERROR_VARIABLE resulte OUTPUT_VARIABLE result RESULT_VARIABLE status ) if(NOT status EQUAL "0") message(FATAL_ERROR "Failed to run the clone_vcpkg_from_baseline. ${status} ${result} ${resulte} ") endif() message(STATUS "vcpkg cloned successfully: ${status}") endif() #TODO: Review the following, move to a separate module and add add_executable WIN32/MACOSX_BUNDLE properties # Set min OSX version if(CMAKE_HOST_APPLE) # Minimum deployment target differs if we are building for intel or arm64 targets # CMAKE_SYSTEM_PROCESSOR and CMAKE_HOST_SYSTEM_PROCESSOR are only available after project() execute_process( COMMAND uname -m OUTPUT_VARIABLE HOST_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE) # Setup CMAKE_OSX_DEPLOYMENT_TARGET before project() if(CMAKE_OSX_ARCHITECTURES STREQUAL "arm64" OR (NOT CMAKE_OSX_ARCHITECTURES AND HOST_ARCHITECTURE STREQUAL "arm64")) set(CMAKE_OSX_DEPLOYMENT_TARGET "11.1" CACHE STRING "Minimum OS X deployment version") else() set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum OS X deployment version") endif() message(STATUS "Minimum OS X deployment version is set to ${CMAKE_OSX_DEPLOYMENT_TARGET}") unset(HOST_ARCHITECTURE) endif() if(WIN32) add_definitions( -DUNICODE -D_UNICODE ) # needed for visual studio projects to use the unicode runtime libraries #supported windows version: 8 and beyond add_definitions( -D_WIN32_WINNT=0x0602 ) # 0602: windows 8. Note: NTDDI_VERSIO & WINVER shall be inferred from those by Win SDK add_definitions( -DNO_READLINE ) # This one is defined within SdkLib, but we need it too for MEGAcmd code. add_definitions( -DUSE_CPPTHREAD ) # For win32, we need this to be defined explicitly (used directly in different targets). TODO: remove in CMD-318 add_definitions( -DNOMINMAX ) # To fix usages of std::min / std::max endif() ## Configurable options ## include(megacmd_options) #Load first MEGAcmd's options (that we have prevalescence over SDK (e.g libuv) include(sdklib_options) #load default sdk's if (EXISTS ${CMAKE_CURRENT_LIST_DIR}/sdk/include/mega/config.h) file(RENAME ${CMAKE_CURRENT_LIST_DIR}/sdk/include/mega/config.h ${CMAKE_CURRENT_LIST_DIR}/sdk/include/mega/config.h_non_cmake_bk) endif() message(STATUS "Using VCPKG_ROOT = ${VCPKG_ROOT}") if(VCPKG_ROOT) if (ENABLE_MEGACMD_TESTS) list(APPEND VCPKG_MANIFEST_FEATURES "megacmd-enable-tests") endif() # Include VCPKG management tools. include(vcpkg_management) list(APPEND vcpkg_overlay ${CMAKE_CURRENT_LIST_DIR}/sdk/cmake) # MEGAsdk overlays process_vcpkg_libraries("${vcpkg_overlay}") # Choose and build libraries depending on the configured options. else() # For packages with no pkg-config in the system. list(APPEND CMAKE_MODULE_PATH sdk/cmake/modules/packages) message(STATUS "Using system dependencies") endif() project(MEGAcmd VERSION ${MEGACMD_MAJOR_VERSION}.${MEGACMD_MINOR_VERSION}.${MEGACMD_MICRO_VERSION} DESCRIPTION "MEGAcmd" ) # In-source build not allowed if(CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR) message(FATAL_ERROR "In-source build is not allowed. Remove CMakeCache.txt and the CMakeFiles directory and set a new binary directory different than the source tree.") endif() message(STATUS "Building MEGAcmd v${PROJECT_VERSION}") #utilities/helper functions include(GNUInstallDirs) # Values for installation directories. All platforms include(CMakePackageConfigHelpers) # For the CMake package include(target_sources_conditional) # To add files to the project without building them include(target_platform_compile_options) # To add compile options depeding on the platform if(UNIX AND NOT APPLE) # Set rpath and location for dirs accordingly: # If CMAKE_INSTALL_PREFIX is set (not default), it will set rpath to to such prefix plus /opt/.... # If CMAKE_INSTALL_PREFIX is not set, it will set rpath to /opt/.... # Note: using cmake --install --prefix /some/prefix will not set rpath relative to that prefix # The above can be used for building packages: in which install dir is a path construction folder that will not be there in packages set(CMAKE_INSTALL_LIBDIR "opt/megacmd/lib") set(CMAKE_INSTALL_BINDIR "usr/bin") #override default "bin" if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT) message(STATUS "Overriding default CMAKE_INSTALL_PREFIX to /") set(CMAKE_INSTALL_PREFIX "/" CACHE PATH "Default install path" FORCE) # override default /usr/local set(RPATH_FOR_DYNAMIC_LIBS "/${CMAKE_INSTALL_LIBDIR}") else() # If explicit cmake prefix at cmake call time, make rpath relative to install dir set(RPATH_FOR_DYNAMIC_LIBS "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") endif() list( APPEND CMAKE_INSTALL_RPATH "${RPATH_FOR_DYNAMIC_LIBS}") endif() if(APPLE) set(CMAKE_MACOSX_RPATH 1) get_filename_component(ABSOLUTE_RPATH_LIBS ${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR} ABSOLUTE) list( APPEND CMAKE_INSTALL_RPATH ${ABSOLUTE_RPATH_LIBS} ) #set(CMAKE_INSTALL_RPATH ${ABSOLUTE_RPATH_LIBS}) message(STATUS "Added CMAKE_INSTALL_LIBDIR=${ABSOLUTE_RPATH_LIBS} to rpath: ${CMAKE_INSTALL_RPATH}") endif() # Load SDK project to build sdk library add_subdirectory(sdk) #LOAD MEGACMD modules: include(megacmd_configuration) ## Load global CMake configuration for the project include(megacmd_libraries) # to load libraries dependencies by target include(megacmd_utility_functions) # utility functions #TODO: CONSIDER SPLITTING TARGET IN FILES and have add_subdirectory(src) , ... See MR !682 set(ProjectDir "${CMAKE_CURRENT_LIST_DIR}") # Populate list of MEGAcmd source files (used by logger): generate_src_file_list("${ProjectDir}/sdk" SDK_SRCS) generate_src_file_list("${ProjectDir}/src" MEGACMD_SRCS) foreach(CMDFILE ${MEGACMD_SRCS}) if (CMDFILE IN_LIST SDK_SRCS) message(FATAL_ERROR "MEGAcmd src filename ${CMDFILE} clashing with SDK's: please, pick a new one") endif() endforeach() string(JOIN ", " MEGACMD_SRC_FILE_LIST ${MEGACMD_SRCS}) configure_file("${ProjectDir}/src/megacmd_src_file_list.h.in" "${ProjectDir}/src/megacmd_src_file_list.h" @ONLY) add_library(LMEGAcmdCommonUtils STATIC) add_source_and_corresponding_header_to_target(LMEGAcmdCommonUtils PUBLIC "${ProjectDir}/src/megacmdcommonutils.cpp" "${ProjectDir}/src/megacmd_utf8.cpp" ) add_library(LMegacmdServer STATIC) add_source_and_corresponding_header_to_target(LMegacmdServer PUBLIC "${ProjectDir}/src/megacmd.cpp" "${ProjectDir}/src/megacmdexecuter.cpp" "${ProjectDir}/src/megacmd_events.cpp" "${ProjectDir}/src/megacmdlogger.cpp" "${ProjectDir}/src/megacmdsandbox.cpp" "${ProjectDir}/src/megacmdutils.cpp" "${ProjectDir}/src/comunicationsmanager.cpp" "${ProjectDir}/src/comunicationsmanagerfilesockets.cpp" "${ProjectDir}/src/comunicationsmanagernamedpipes.cpp" "${ProjectDir}/src/configurationmanager.cpp" "${ProjectDir}/src/listeners.cpp" "${ProjectDir}/src/sync_command.cpp" "${ProjectDir}/src/sync_issues.cpp" "${ProjectDir}/src/sync_ignore.cpp" "${ProjectDir}/src/megacmd_rotating_logger.cpp" "${ProjectDir}/src/megacmd_fuse.cpp" ) target_sources_conditional(LMegacmdServer FLAG APPLE PRIVATE "${ProjectDir}/src/megacmdplatform.h" "${ProjectDir}/src/megacmdplatform.mm" ) # Given we are no longer including the sdk, and some sources use certain defines without including SDK's config.h, # We need to explicitly pass the compiling options. target_compile_definitions(LMegacmdServer PUBLIC $<$:USE_PCRE> ) if (NOT WIN32) if (ENABLE_ASAN) add_compile_options("-fsanitize=address" "-fno-omit-frame-pointer" "-fno-common") link_libraries("-fsanitize=address") endif() if (ENABLE_UBSAN) add_compile_options("-fsanitize=undefined" "-fno-omit-frame-pointer") link_libraries("-fsanitize=undefined") endif() if (ENABLE_TSAN) add_compile_options("-fsanitize=thread" "-fno-omit-frame-pointer") link_libraries("-fsanitize=thread") endif() endif() if (APPLE) set(executablesType MACOSX_BUNDLE) endif() add_executable(mega-cmd-server ${executablesType}) if (WIN32) set(MEGACMD_RESOURCE_NAME MEGAcmdServer) configure_file("${CMAKE_CURRENT_LIST_DIR}/build/installer/winversion.rc.in" "${CMAKE_CURRENT_LIST_DIR}/build/installer/mega-cmd-server_version.rc" @ONLY) set(RESOURCE_FILES_MEGACMD_SERVER "${CMAKE_CURRENT_LIST_DIR}/build/installer/mega-cmd-server_version.rc") set(MEGACMD_RESOURCE_NAME MEGAclient) configure_file("${CMAKE_CURRENT_LIST_DIR}/build/installer/winversion.rc.in" "${CMAKE_CURRENT_LIST_DIR}/build/installer/mega-cmd-client_version.rc" @ONLY) set(RESOURCE_FILES_MEGACMD_CLIENT "${CMAKE_CURRENT_LIST_DIR}/build/installer/mega-cmd-client_version.rc") set(MEGACMD_RESOURCE_NAME MEGAcmdShell) configure_file("${CMAKE_CURRENT_LIST_DIR}/build/installer/winversion.rc.in" "${CMAKE_CURRENT_LIST_DIR}/build/installer/mega-cmd-shell_version.rc" @ONLY) set(RESOURCE_FILES_MEGACMD_SHELL "${CMAKE_CURRENT_LIST_DIR}/build/installer/mega-cmd-shell_version.rc") set(MEGACMD_RESOURCE_NAME MEGAcmdUpdater) configure_file("${CMAKE_CURRENT_LIST_DIR}/build/installer/winversion.rc.in" "${CMAKE_CURRENT_LIST_DIR}/build/installer/mega-cmd-updater_version.rc" @ONLY) set(RESOURCE_FILES_MEGACMD_UPDATER "${CMAKE_CURRENT_LIST_DIR}/build/installer/mega-cmd-updater_version.rc") elseif (APPLE) set(RESOURCE_FILES_MEGACMD_SERVER ${CMAKE_CURRENT_SOURCE_DIR}/build/installer/app.icns ) set_target_properties(mega-cmd-server PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/build/installer/Info.plist RESOURCE "${RESOURCE_FILES_MEGACMD_SERVER}" ) endif() add_source_and_corresponding_header_to_target(mega-cmd-server PRIVATE "${ProjectDir}/src/megacmd_server_main.cpp" "${RESOURCE_FILES_MEGACMD_SERVER}" ) if (APPLE) set_target_properties(mega-cmd-server PROPERTIES OUTPUT_NAME "MEGAcmd") elseif (WIN32) set_target_properties(mega-cmd-server PROPERTIES OUTPUT_NAME "MEGAcmdServer") endif() add_library(LMegacmdClient STATIC) add_source_and_corresponding_header_to_target(LMegacmdClient PUBLIC "${ProjectDir}/src/client/megacmdclient.cpp" "${ProjectDir}/src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp" "${ProjectDir}/src/megacmdshell/megacmdshellcommunications.cpp" ) add_executable(mega-exec ${executablesType}) add_source_and_corresponding_header_to_target(mega-exec PRIVATE "${ProjectDir}/src/client/megacmd_client_main.cpp" "${RESOURCE_FILES_MEGACMD_CLIENT}" ) add_executable(mega-cmd ${executablesType}) add_source_and_corresponding_header_to_target(mega-cmd PRIVATE "${ProjectDir}/src/megacmdshell/megacmdshellcommunications.cpp" "${ProjectDir}/src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp" "${ProjectDir}/src/megacmdshell/megacmdshell.cpp" "${RESOURCE_FILES_MEGACMD_SHELL}" ) if (WIN32) add_executable(mega-cmd-updater WIN32) else() add_executable(mega-cmd-updater ${executablesType}) endif() add_source_and_corresponding_header_to_target(mega-cmd-updater PRIVATE "${ProjectDir}/src/updater/MegaUpdater.cpp" ) add_source_and_corresponding_header_to_target(mega-cmd-updater PRIVATE "${ProjectDir}/src/updater/UpdateTask.cpp" "${RESOURCE_FILES_MEGACMD_UPDATER}" ) target_sources_conditional(mega-cmd-updater FLAG APPLE PRIVATE "${ProjectDir}/src/updater/MacUtils.h" "${ProjectDir}/src/updater/MacUtils.mm" ) if (ENABLE_MEGACMD_TESTS) #Test Common: add_library(LMegacmdTestsCommon STATIC) add_source_and_corresponding_header_to_target(LMegacmdTestsCommon PRIVATE "${ProjectDir}/tests/common/Instruments.cpp" "${ProjectDir}/tests/common/TestUtils.cpp" ) #Integration tests: add_executable(mega-cmd-tests-integration ${executablesType}) add_source_and_corresponding_header_to_target(mega-cmd-tests-integration PRIVATE "${ProjectDir}/tests/integration/BasicTests.cpp" "${ProjectDir}/tests/integration/CatTests.cpp" "${ProjectDir}/tests/integration/ExportTests.cpp" "${ProjectDir}/tests/integration/PutTests.cpp" "${ProjectDir}/tests/integration/SyncIssuesTests.cpp" "${ProjectDir}/tests/integration/SyncIgnoreTests.cpp" "${ProjectDir}/tests/integration/FuseTests.cpp" "${ProjectDir}/tests/integration/MegaCmdTestingTools.cpp" "${ProjectDir}/tests/integration/main.cpp" ) target_include_directories(mega-cmd-tests-integration PUBLIC ${ProjectDir}/src ${ProjectDir}/tests/common) target_link_libraries(mega-cmd-tests-integration PUBLIC LMegacmdServer LMegacmdClient LMegacmdTestsCommon) if(APPLE) target_link_libraries(mega-cmd-tests-integration PRIVATE "-framework Security" ) endif() #Unit tests: add_executable(mega-cmd-tests-unit ${executablesType}) add_source_and_corresponding_header_to_target(mega-cmd-tests-unit PRIVATE "${ProjectDir}/tests/unit/ComunicationsManagerFileSocketsTests.cpp" "${ProjectDir}/tests/unit/OptionsFlagsUtilsTests.cpp" "${ProjectDir}/tests/unit/PlatformDirectoriesTests.cpp" "${ProjectDir}/tests/unit/StringUtilsTests.cpp" "${ProjectDir}/tests/unit/Utf8Tests.cpp" "${ProjectDir}/tests/unit/UtilsTests.cpp" "${ProjectDir}/tests/unit/main.cpp" ) if(APPLE) target_link_libraries(mega-cmd-tests-unit PRIVATE "-framework Security" ) endif() endif() if (WIN32) set_target_properties(mega-exec PROPERTIES OUTPUT_NAME MEGAclient) set_target_properties(mega-cmd PROPERTIES OUTPUT_NAME MEGAcmdShell) set_target_properties(mega-cmd-updater PROPERTIES OUTPUT_NAME MEGAcmdUpdater) set_target_properties(mega-cmd-server PROPERTIES OUTPUT_NAME MEGAcmdServer) set_target_properties(mega-cmd-server PROPERTIES LINK_FLAGS "/LARGEADDRESSAWARE /DEBUG" ) #TODO: if this is still required, these paths will need adjusting #set(3RDPARTY_RUNTIME_PATH_DEBUG "PATH=%PATH%" "${Mega3rdPartyDir}/vcpkg/installed/${VCPKG_TRIPLET}/debug/bin") #set(3RDPARTY_RUNTIME_PATH_RELEASE "PATH=%PATH%" "${Mega3rdPartyDir}/vcpkg/installed/${VCPKG_TRIPLET}/bin") #set_target_properties(mega-exec PROPERTIES VS_DEBUGGER_ENVIRONMENT "${3RDPARTY_RUNTIME_PATH_DEBUG}") #set_target_properties(mega-cmd PROPERTIES VS_DEBUGGER_ENVIRONMENT "${3RDPARTY_RUNTIME_PATH_DEBUG}") #set_target_properties(mega-cmd-updater PROPERTIES VS_DEBUGGER_ENVIRONMENT "${3RDPARTY_RUNTIME_PATH_DEBUG}") #set_target_properties(mega-cmd-server PROPERTIES VS_DEBUGGER_ENVIRONMENT "${3RDPARTY_RUNTIME_PATH_DEBUG}") endif() target_link_libraries(LMegacmdClient PUBLIC MEGA::SDKlib LMEGAcmdCommonUtils) target_link_libraries(mega-exec LMegacmdClient) target_link_libraries(mega-cmd PUBLIC MEGA::SDKlib LMEGAcmdCommonUtils) target_link_libraries(mega-cmd-updater PUBLIC MEGA::SDKlib LMEGAcmdCommonUtils) target_link_libraries(LMegacmdServer PUBLIC MEGA::SDKlib LMEGAcmdCommonUtils) if (ENABLE_MEGACMD_TESTS) target_link_libraries(LMegacmdServer PUBLIC LMegacmdTestsCommon) endif() if (WIN32) target_link_libraries(LMegacmdServer PUBLIC Lz32.lib Taskschd.lib) target_link_libraries(mega-cmd-updater PUBLIC Lz32.lib Urlmon.lib) endif() target_link_libraries(mega-cmd-server PUBLIC LMegacmdServer) if (ENABLE_MEGACMD_TESTS) target_include_directories(LMegacmdTestsCommon PUBLIC ${ProjectDir}/src ${ProjectDir}/tests/common) target_link_libraries(mega-cmd-tests-unit PUBLIC LMegacmdServer LMegacmdTestsCommon) endif() # Load 3rd parties #TODO: consider splitting by target? load_megacmdserver_libraries() #file(GET_RUNTIME_DEPENDENCIES ... _deps) #foreach(_dep IN LISTS _deps) # message( "es una dependencia") ## if("${_dep}" SAME_FILE "/some/file/built/by/cmake.so") # if(SAME_FILE) doesn't currently exist, we'd have to create it ## # Target install rules for this CMake-built target # #else() ## # Standard install rules for external runtime dependencies ## endif() #endforeach() list(APPEND all_targets mega-exec mega-cmd mega-cmd-server) if (APPLE) list(APPEND all_targets mega-cmd-updater) endif() if(ENABLE_MEGACMD_TESTS) list(APPEND all_targets mega-cmd-tests-unit mega-cmd-tests-integration) endif() # Install stuff if (APPLE) install(TARGETS ${all_targets} BUNDLE DESTINATION "./" ) elseif(NOT WIN32) set(PERMISSIONS755 OWNER_READ OWNER_WRITE OWNER_EXECUTE GROUP_READ GROUP_EXECUTE WORLD_READ WORLD_EXECUTE ) set(CMAKE_INSTALL_DEFAULT_DIRECTORY_PERMISSIONS ${PERMISSIONS755}) install(TARGETS ${all_targets} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ) install(DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/src/client/" DESTINATION ${CMAKE_INSTALL_BINDIR} FILE_PERMISSIONS ${PERMISSIONS755} FILES_MATCHING PATTERN "mega-*" PATTERN "*.cpp" EXCLUDE PATTERN "*.h" EXCLUDE PATTERN "mega-exec" EXCLUDE PATTERN "megacmd_completion.sh" EXCLUDE PATTERN "python" EXCLUDE PATTERN "win" EXCLUDE) install(FILES "${CMAKE_CURRENT_LIST_DIR}/src/client/megacmd_completion.sh" DESTINATION "etc/bash_completion.d" ) # generate 100-megacmd-inotify-limit.conf file and have it installed execute_process(COMMAND echo "fs.inotify.max_user_watches = 524288" OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/99-megacmd-inotify-limit.conf) install(FILES ${CMAKE_CURRENT_BINARY_DIR}/99-megacmd-inotify-limit.conf DESTINATION "etc/sysctl.d" ) #Install vcpkg dynamic libraries in locations defined by GNUInstallDirs. if(CMAKE_BUILD_TYPE STREQUAL "Debug") SET(vcpkg_lib_folder "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/debug/lib/") else() SET(vcpkg_lib_folder "${VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/lib/") endif() install(DIRECTORY "${vcpkg_lib_folder}" DESTINATION ${CMAKE_INSTALL_LIBDIR} FILES_MATCHING PATTERN "lib*.so*" PATTERN "*dylib*" #macOS PATTERN "manual-link" EXCLUDE PATTERN "pkgconfig" EXCLUDE) endif() #not WIN32 MEGAcmd-2.5.2_Linux/LICENSE000066400000000000000000000032411516543156300151120ustar00rootroot00000000000000Copyright (c) 2013, Mega Limited All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The previous applies to all sources and binaries with the exception of those explicitly distributed under the terms of the GNU General Public License (see http://www.gnu.org/copyleft/gpl.txt for details), and the interactive MEGAcmdShell executables (mega-cmd in linux, MEGAcmdShell in MAC and MEGAcmdShell.exe in Windows), distributed under the aforementioned GNU General Public License. MEGAcmd-2.5.2_Linux/README.md000066400000000000000000000310501516543156300153630ustar00rootroot00000000000000# MEGAcmd - Command Line Interactive and Scriptable Application MEGAcmd provides non UI access to MEGA services. It intends to offer all the functionality with your MEGA account via commands. It features **synchronization** , **backup** of local folders into your MEGA account and a **webdav/streaming** server. See [`Usage Examples`](#usage-examples). Available packages for MEGAcmd in all supported platforms should be found [here](https://mega.nz/cmd). If the package fails to install, read below for the requirements. **It supports 2 modes of interaction:** - **Interactive** - A shell to query your actions - **Scriptable** - A way to execute commands from a shell/a script/another program In order to provide those 2 modes, it features one server (**MEGAcmdServer**), an interactive shell (**MEGAcmdShell**) and several commands that will launch the non-interactive client (**MEGAcmdClient**). See [`Usage`](#usage) and [`Platform`](#platforms) to understand how to use it in your particular system. # Building MEGAcmd ## Requirements All dependencies are downloaded and installed automatically by vcpkg while building. The local path to the vcpkg repository can be set with the `-DVCPKG_ROOT` flag (defaults to `../vcpkg` if the flag is missing). ## Getting the source Ensure you obtain the repository recursively. ``` git clone https://github.com/meganz/MEGAcmd.git cd MEGAcmd && git submodule update --init --recursive ``` ## Building To build MEGAcmd, we first need to configure the project using CMake: ``` cmake -B build/build-cmake-Debug -DCMAKE_BUILD_TYPE=Debug ``` A different build type can be selected out of `Debug`, `Release`, `MinSizeRel`, or `RelWithDebInfo`. By convention, we use `build/build-cmake-[Debug|Release|...]` as build directory, but any other path can be selected with the `-B` option. To build unit and integration tests as well, we can add the `-DENABLE_MEGACMD_TESTS=ON` flag. If `ccache` is installed in our system, we can use it to speed up subsequent compilations by adding the `-DCMAKE_CXX_COMPILER_LAUNCHER=ccache` flag. After the project has been configured, we can build it with: ``` cmake --build build/build-cmake-Debug ``` To speed up compilation, we can use the `-j` option to specify a number of cores. ## System-wide installation (Linux/macOS) On Unix-based systems, such as Linux or macOS, MEGAcmd can be installed with (after building): ``` sudo cmake --install build/build-cmake-Release ``` This will install `mega-cmd`, `mega-cmd-server`, and all `mega-*` commands such as `mega-put`, `mega-cd`, etc. It is recommended to avoid installing a Debug build, since some paths might not be properly setup. We can specify the default directory to install from by adding the `-DCMAKE_INSTALL_PREFIX` flag while configuring. # Usage Before explaining the two ways of interaction, it's important to understand how MEGAcmd works. When you login with MEGAcmd, your session, the list of synced folders, cache databases, and extra configuration are stored in your local home folder. Closing it does not delete those, and restarting the MEGAcmd server will restore your previous session (similary to the MEGA Desktop App, which won't ask for user/password once restarted). You will need to `logout` properly in order to clean your data. Now let's get into details of the two usage modes. Both modes require that MEGAcmdServer is running. You can manually launch it. Fortunately, you can also open the interactive shell or execute any command and the server will start automatically. ## Interactively: Execute MEGAcmd shell. [`Platform`](#platforms) section explains how to do that in the different supported systems. You should be facing an interactive shell where you can start typing your commands, with their arguments and flags. You can list all the available commands with `help`. And obtain useful information about a command with `command --help` First you would like to log in into your account. Again, notice that doing this stores the session and other stuff in your home folder. A complete logout is required if you want to end you session permanently and clean any traces (see `logout --help` for further info). ## Non-interactively: When MEGAcmd server is running, it will be listening for client commands. Use the different `mega-*` commands available. `mega-help` will list all these commands (you will need to prepend "mega-" to the commands listed there). To obtain further info use `mega-command --help`. Those commands will have an output value != 0 in case of failure. See [megacmd.h](https://github.com/meganz/MEGAcmd/blob/master/src/megacmd.h) to view the existing error codes. Ideally, you would like to have these commands in your `PATH` variable (See [`Platform`](#platforms) for more info). For further info use `mega-help --non-interactive`. ## Usage examples Here are some examples of use (more info and usage examples are available at the [User Guide](UserGuide.md)). **Notice:** the commands listed here assume you are using the interactive interaction mode: they are supposed to be executed within MEGAcmdShell. * A **synchronization** can be established simply by typing: ``` sync /path/to/local/folder /folder/in/mega ``` This will synchronize the contents in your local and your mega folder both ways. * You can also set remote **backups** of a local folder to keep historical snapshots of your files. So simple as: ``` backup /path/mega/folder /remote/path --period="0 0 4 * * *" --num-backups=10 ``` This will configure a backup of "myfolder" into /remote/path that will be carried out at 4:00 A.M. (UTC) every day. It will store the last 10 copies. Further info on backups [here](contrib/docs/BACKUPS.md). * You **serve a location** in your MEGA account via WebDAV: ``` webdav /path/mega/folder ``` * Or **stream a file** in your MEGA account: ``` webdav /path/to/myfile.mp4 ``` Further info on webdav and streaming [here](contrib/docs/WEBDAV.md). * **Download the contents** of a shared link: ``` get https://mega.nz/#F!ABcD1E2F!gHiJ23k-LMno45PqrSTUvw /path/to/local/folder ``` Now let's do something more complicated with non-interactive usage using some GNU tools (similar stuff can be easily done in Windows as well): * We want to provide something crypto secured with only 10 minutes of access: ``` mega-put /path/to/my/temporary_resource /exportedstuff/ mega-export -a /exportedstuff/temporary_resource --expire=10M | awk '{print $4}' ``` * Or imagine we'd like to public the enterprise promotional videos of May 2015 that we have previously stored in MEGA: ``` for i in $(mega-find /enterprise/video/promotional2015/may --pattern="*mpeg"); do mega-export -a $i | awk '{print $4}'; done ``` # Platforms ## Linux If you have installed MEGAcmd using one of the available packages at [here](https://mega.nz/cmd). Or have it built without `--prefix`, both the server (`mega-cmd-server`), the shell (`mega-cmd`) and the different client commands (`mega-*`) will be in your `PATH` (on a fresh install, you might need to open your terminal again). If you are using bash, you should also have autocompletion for client commands working. If that is not you case, include the location for the binaries in your `PATH` variable. ## Windows You can have MEGAcmd installed using the installer from [here](https://mega.nz/cmd). If you are interested in installing MEGAcmd without human intervention, notice that this installer supports silent installation, you just need to execute in your command prompt: ``` MEGAcmdSetup.exe /S ``` Once you have MEGAcmd installed, you just need to execute it (via Desktop icon or Start Menu) to open the shell. This will open MEGAcmdServer in the background (a process named MEGAcmdServer.exe). For a better user experience we recommend executing MEGAcmd from PowerShell. **Open PowerShell and execute:** ``` $env:PATH += ";$env:LOCALAPPDATA\MEGAcmd" MEGAcmdShell ``` For *non-interactive* usage, there are several `mega-*.bat` client commands you can use writting their absolute paths, or including their location into your environment `PATH` and execute them normally (`mega-*`). If you use PowerShell and you have installed the official MEGAcmd, you can do that simply with: ``` $env:PATH += ";$env:LOCALAPPDATA\MEGAcmd" ``` Client commands completion requires bash, hence, it is not available for Windows. ### Caveats Although there have been several efforts in having non-ASCII unicode characters supported in Windows, there still may be some issues. Pay special attention if you are willing to use pipes or send the output of a command into a file from your client commands. See `help --unicode` for further info regarding that. ## macOS Install MEGAcmd from [here](https://mega.nz/cmd). For macOS, after installing the dmg, you can launch the server using MEGAcmd in Applications. If you wish to use the client commands from macOS Terminal, open the Terminal and include the installation folder in the `PATH`. **Typically:** ``` export PATH=/Applications/MEGAcmd.app/Contents/MacOS:$PATH ``` And for **bash completion**, source `megacmd_completion.sh`: ``` source /Applications/MEGAcmd.app/Contents/macOS/megacmd_completion.sh ``` *Note for macOS Catalina or above*: since Catalina, macOS uses `zsh` as default shell. If you want to have auto completion, we strongly recommend you to use `bash` shell (just execute `bash` in your terminal). ## NAS systems Currently we have build scripts for **Synology**, which can be found in the `build/SynologyNAS` folder along with instructions on how to set up the build. Typically this results in a 'package' which can then be manually installed in the NAS. To use MEGAcmd on those systems, ssh into the device and run the commands as normal (having first added their folder to your `PATH` variable). # Features: ## Autocompletion: MEGAcmd features autocompletion in both interactive and non-interactive (only for bash) mode. It will help completing both local and remote (Mega Cloud) files, flags for commands, values for flags/access levels, even contacts. ## Verbosity There are two different kinds of logging messages: - **SDK based**: those messages reported by the sdk and dependent libraries. - **MEGAcmd based**: those messages reported by MEGAcmd itself. You can adjust the level of logging for those kinds with `log` command. However, passing `-v` (`-vv`, `-vvv`, and so on for a more verbose output) to an specific command will use higher level of verbosity of MEGAcmd based messages. Further info on verbosity [here](contrib/docs/DEBUG.md). ## Regular Expressions If you have compiled MEGAcmd with PCRE (enabled by default), you can use PCRE compatible expressions in certain commands with the flag `--use-pcre`. Otherwise, if compiled with c++11, c++11 regular expressions will be used. If none of the above is the case, you can only use wildcards: "*" for any number of characters or "?" for a single unknown character. You can check the regular expressions compatibility with `find --help`: ``` find --help ... Options: --pattern=PATTERN Pattern to match (Perl Compatible Regular Expressions) ``` **Notice:** if you use MEGAcmd in non interactive mode, notice that shell pattern will take precedence. You will need to either escape symbols like `*` (`\*`) or surround them between quotes (e.g: "*.txt"). ## MEGAcmd Updates MEGAcmd updates automatically for Windows & macOS. For Linux, whenever there is a new update, it will be published in the corresponding repository and your system's updating tool will let you update it. ### Disable automatic updates You can type `update --auto=OFF` to disable automatic updates. `update --auto=ON` will re-enable them. If you want to see the state of automatic updates you can use `update --auto=query`. This will inform if automatic updates are enabled or not. Notice that MEGAcmdServer must be running in order to have automatic updates working. You can also update manually by typing `update` within MEGAcmd. This will check if there are updates available and proceed to update if affirmative. Whenever MEGAcmd is updated it will be restarted (all open instances of MEGAcmdShell will be restarted too). Alternatively you can also execute `MEGAcmdUpdater.exe` in Windows or `MEGAcmdUpdater` (located at /Applications/MEGAcmd.app/Contents/MacOS) in macOS. ## Known Bugs Currently there are certain discrepancies with **PATHS** when logging into a public folder. For instance, imagine a folder named `toshare` with a subfolder named `x`. If we login in to `toshare` and execute `find /x`, this will be the output: ``` /toshare/x ``` Whereas if we execute `find /toshare/x`, we receive an error, since folder absolute path refers to `/` as root path. ``` [err: 12:21:51] Couldn't find /toshare/x ``` It might better be referred as `/toshare/x`. MEGAcmd-2.5.2_Linux/UserGuide.md000066400000000000000000001170161516543156300163310ustar00rootroot00000000000000# MEGAcmd User Guide This document relates to MEGAcmd version 2.5.0. It contains introductory information and the [Command Summary](#command-summary), with links to detailed command descriptions. ### What is it A command line tool to work with your MEGA account and files. The intent is to offer all the MEGA account functionality via command line. You can run it in [interactive](#interactive) mode where it processes all commands directly, or you can run its [scriptable](#scriptable) commands from your favourite Linux or Mac shell such as bash, or you can even run its commands in a Windows command prompt. And of course you can write scripts using those scriptable commands. Here is an example of downloading a file using MEGAcmd. In this case we are downloading a file specified by a public link, which does not require being logged in:

``` mega-get https://mega.nz/#F!ABcD1E2F!gHiJ23k-LMno45PqrSTUvw /path/to/local/folder ``` Note:- If you get any error like this one ``` Event not found ``` In link put ```\``` in front of every ```!``` for example ``` mega-get https://mega.nz/#F\!ABcD1E2F\!gHiJ23k-LMno45PqrSTUvw /path/to/local/folder ``` And here is an example of uploading a file using MEGAcmd, and making a link available to share it, that will expire after 10 minutes.

``` mega-put /path/to/my/temporary_resource /exportedstuff/ mega-export -a /exportedstuff/temporary_resource --expire=10M | awk '{print $4}' ``` And here is an example of the power of using [scriptable](#scriptable) MEGAcmd commands in bash. In this case we are going to share some promotional videos previously uploaded to MEGA:

``` for i in $(mega-find /enterprise/video/promotional2015/may --pattern="*mpeg") do mega-export -a $i | awk '{print $4}'; done ``` In addition to running commands on request, MEGAcmd can also be configured to [synchronise](#synchronisation-configurations) folders between your local device and your MEGA account, or perform regular [backups](#backup-configurations) from your device to your MEGA account. In order to enable synchronisation and backup features, and for efficiency running commands, MEGAcmd runs a server process in the background which the MEGAcmd shell or the script commands forward requests to. The server keeps running in the background until it is told to close with the [`quit`](#misc) command. If you want it to keep running when you quit the interactive shell (to keep sync and backup running for example), use `quit --only-shell`. Working with your MEGA account requires signing in with your email and password using the [`login`](#login-logout) command, though you can download public links or upload to public folders without logging in. Logging in with your username and password starts a [Session](#session), and causes some of your account such as the folder structure to be downloaded to your [Local Cache](#local-cache). ### Where can you get it For Linux, Mac, or Windows: Download it from the MEGA.nz website: https://mega.nz/cmd

We are also building it for some NAS systems, please check your provider's App Store. ### What can you do with it The major features are * Move files around inside your MEGA account or between MEGA and your PC using command line tools. * Use those same commands in scripts to manage your files. * Set up synchronization or a backup schedule between a folder on your machine, and a folder on your MEGA account. (use the [`sync`](#moving-copying-files) or [`backup`](#moving-copying-files) commands). * Set up WebDAV access to files in your MEGA account (use the [`webdav`](#webdav) command). * [Linux only] Set up a FUSE mount point to seamlessly access files in your MEGA account (use the [`fuse-add`](#fuse-mount-your-cloud-folder-to-the-local-system) command). See our Help Centre pages for the basics of getting started, and friendly examples of common usages with plenty of pictures: https://mega.nz/help ## Terminology and Descriptions ### Interactive Interactive refers to running the MEGAcmd shell which only processes MEGA commands. You invoke commands by typing and pressing Enter. MEGAcmd shell provides a lot of feedback about what it's doing. You can start the MEGAcmd shell with `mega-cmd` (or `MEGAcmd` on Windows). You can then issue commands like `ls` directly:

`ls /my/account/folder`

or you can get a list of available commands with:

`help`

or you can get detailed information about any particular command by using the `--help` flag with that command:

`ls --help`

Autocompletion (pressing tab to fill in the remainder of a command) is available in interactive mode. ### Scriptable Scriptable refers to running the MEGAcmd commands from a shell such as bash or the windows powershell. If the PATH to the MEGAcmd commands are not yet on the PATH in that shell, you'll need to add it. You can then issue commands like `ls` by prefixing them with the `mega-` prefix:

`mega-ls /my/account/folder`

or you can get a list of available commands with:

`mega-help`

or you can get detailed information about any particular command by using the `--help` flag with that command:

`mega-ls --help`

Scriptable commands can of course be used in scripts to achieve a lot in a short space of time, using loops or preparing all the desired commands ahead of time. If you are using bash as your shell, the MEGAcmd commands support auto-completion. ### Contact A contact is someone (identified by their email address) that also has a MEGA account, who you can share files or folders with, and can chat with on MEGAchat. ### Remote Path This refers to a file or a folder stored in your MEGA account, or a publicly available file or folder in the MEGA cloud. Remote paths always use the '/' character as the separator between folder and file elements. Some MEGAcmd commands allow the use of regular expressions in remote paths. You can check if the command supports those by using the `--help` flag with the command. If you use these in the [scriptable](#scriptable) way, you need to escape characters that would otherwise be intercepted and interpreted by the shell. Paths to folders shared to you from another person start with their email and a : character, see the example at ([example](#shared-folders)) ### Local Path This refers to a file or folder on the PC or device that MEGAcmd is running in. ### Session When you log in with your email and MEGA account password, that creates a session. The session exists until you log out of it or kill it from another client. In MEGAcmd, use `whoami -l` to see all your open sessions across all devices, and use `killsession` to close them. You can use other MEGA clients such as the phone app, or webclient to close these also. Devices that were using a killed session will have their connection to MEGA closed immediately and will no longer have access to your account, until you log in on them again. Syncs, backups, and webdavs are specific to a session, so logging out will cause them to be cancelled. ### Local Cache Logging in with MEGAcmd creates your Local Cache, a subfolder of your home folder. MEGAcmd downloads and stores some data in your Local Cache relating to your account, such as folder structure and contacts, for performance reasons. The MEGAcmd background server keeps the local cache up to date when changes to your account occur from other clients. The cache does contain a way for MEGAcmd to access your MEGA account when it starts up again if you have not specifically logged out. The Local Cache also contains information from your Session, including sync, backup, and webdav configurations. Logging out cleans the Local Cache, but also closes your session and the sync, backup, and webdav configurations are wiped. ### Synchronisation configurations MEGAcmd can set up a synchronisation between a folder on your local machine and a folder in your MEGA account, using the [sync](#syncing) command. This is the same mechanism that MEGAsync uses. The synchronisation is two-way: the folders you nominate to be synced will mirror any action! Whatever you add or delete in your sync folder on your device gets added or deleted in your sync folder in your MEGA account. And additions or deletions in your synced folder in your MEGA account will similarly be applied to your local synced folder. Files that are removed from sync folders are moved to a hidden local folder (Rubbish/.debris inside your local sync folder, or SyncDebris folder in the Rubbish Bin of your MEGA account). Here is a very simple example of setting up a synchronisation with MEGAcmd:

``` sync /path/to/local/folder /folder/in/mega ``` You can set up more than one pair or folders to be synced, and you can also set a sync from another device to the same folder, to achieve folder synchronisations between different devices. The changes are sent via your MEGA account rather than directly between the devices in that case. Additional information about synchronising folders is available in our Help Centre: https://mega.nz/help/client/megasync/syncing ### Backup configurations MEGAcmd can set up a periodic copy of a local folder to your MEGA account using the [`backup`](#backups) command. Here is a simple example that will back up a folder immediately and then at 4am each day, keeping the 10 most recent backups:

``` backup /path/mega/folder /remote/path --period="0 0 4 * * *" --num-backups=10 ``` For further information on backups, please see the [`backup`](#backups) command and the [tutorial](BACKUPS.md). ### WebDAV configurations MEGAcmd can set up access to folders or files in your MEGA account as if they were local folders and files on your device using the [`webdav`](#webdav) command. For example making the folder appear like a local drive on your PC, or providing a hyperlink a browser can access, where the hyperlink is to your PC. For further information on WebDAV, please see the [`webdav`](#webdav) command and the [tutorial](WEBDAV.md ### FUSE mount point If you use Linux, MEGAcmd can set up access to folders or files in your MEGA account as if they were local folders and files on your device using Filesystem in User Space via [`fuse-add`](#fuse-mount-your-cloud-folder-to-the-local-system) command. For further information on FUSE, please see the [`fuse-add`](#fuse-mount-your-cloud-folder-to-the-local-system) command and the [tutorial](FUSE.md). ### Linux On Linux, MEGAcmd commands are installed at /usr/bin and so will already be on your PATH. The interactive shell is `mega-cmd` and the background server is `mega-cmd-server`, which will be automatically started on demand. The various scriptable commands are installed at the same location, and invoke `mega-exec` to send the command to `mega-cmd-server`. If you are using the scriptable commands in bash (or using the interactive commands in mega-cmd), the commands will auto-complete. ### Macintosh For MacOS, after installing the dmg, you can launch the server using **MEGAcmd** in Applications. If you wish to use the client commands from MacOS Terminal, open the Terminal and include the installation folder in the PATH.

Typically: ``` export PATH=/Applications/MEGAcmd.app/Contents/MacOS:$PATH ``` And for bash completion, source `megacmd_completion.sh` : ``` source /Applications/MEGAcmd.app/Contents/MacOS/megacmd_completion.sh ``` ### Windows Once you have MEGAcmd installed, you can start the [interactive](#interactive) shell from the Start Menu or desktop icon. On windows the interactive shell executable is called `MEGAcmdShell.exe` and the server is `MEGAcmdServer.exe`. You can also start MEGAcmd Shell from inside PowerShell. To do so, start powershell from the Start Menu and then execute these commands to start it: ``` $env:PATH += ";$env:LOCALAPPDATA\MEGAcmd" MEGAcmdShell ``` For [scriptable](#scriptable) usage, the MEGAcmd commands are provided via installed .bat files which pass the command to the MEGAcmdServer.exe. Provided you have set the PATH as above, you can use these like normal command line tools in PowerShell: ``` $env:PATH += ";$env:LOCALAPPDATA\MEGAcmd" mega-cd /my/favourite/folder mega-ls ``` Or in Command Prompt: ``` set PATH=%LOCALAPPDATA%\MEGAcmd;%PATH% mega-cd /my/favourite/folder mega-ls ``` And of course those can be invoked in your own .bat or .cmd files. Autocompletion is not available for the scriptable commands, but is in the interactive shell. Unicode is supported though it currently in the interactive shell it needs to be switched on, and to have a suitable font selected; please execute `help --unicode` for the latest information. There are plans to improve this. Please report any issues experienced to our support team. ### NAS Support We have released packages for QNAP and Synology, which you can download and install from the App Center in QNAP, and the Package Center in Synology. In QNAP, please make sure to turn on "Enable home folder for all users" from the control panel, and set HOME=/share/homes/ before starting any MEGA commands, and in Synology, 'Enable user home service', so that the `mega-cmd-server` creates the `.megaCmd` local cache folder there (as the default HOME location may be erased on restart). ## Command Summary These summaries use the usual conventions - `[]` indicates its content is optional, `|` indicates you should choose either the item on the left or the one on the right (but not both) Each command is described as it would be used in the [interactive](#interactive) MEGAcmd shell, and the corresponding [scriptable](#scriptable) command (which must be prefixed with `mega-`) works in the same way. Commands referring to a [remote path](#remote-path) are talking about a file in your MEGA account online, whereas a [local path](#local-path) refers to a file or folder on your local device where MEGAcmd is running. Verbosity: You can increase the amount of information given by any command by passing `-v` (`-vv`, `-vvv`, ...) ### Account / Contacts * [`signup`](contrib/docs/commands/signup.md)`email password [--name="Your Name"]` Register as user with a given email * [`confirm`](contrib/docs/commands/confirm.md)`link email password` Confirm an account using the link provided after the "signup" process. * [`invite`](contrib/docs/commands/invite.md)`[-d|-r] dstemail [--message="MESSAGE"]` Invites a contact / deletes an invitation * [`showpcr`](contrib/docs/commands/showpcr.md)`[--in | --out] [--time-format=FORMAT]` Shows incoming and outgoing contact requests. * [`ipc`](contrib/docs/commands/ipc.md)`email|handle -a|-d|-i` Manages contact incoming invitations. * [`users`](contrib/docs/commands/users.md)`[-s] [-h] [-n] [-d contact@email] [--time-format=FORMAT] [--verify|--unverify contact@email.com] [--help-verify [contact@email.com]]` List contacts * [`userattr`](contrib/docs/commands/userattr.md)`[-s attribute value|attribute|--list] [--user=user@email]` Lists/updates user attributes * [`passwd`](contrib/docs/commands/passwd.md)`[-f] [--auth-code=XXXX] newpassword` Modifies user password * [`masterkey`](contrib/docs/commands/masterkey.md)`pathtosave` Shows your master key. ### Login / Logout * [`login`](contrib/docs/commands/login.md)`[--auth-code=XXXX] email password | exportedfolderurl#key [--auth-key=XXXX] [--resume] | passwordprotectedlink [--password=PASSWORD] | session` Logs into a MEGA account, folder link or a previous session. You can only log into one entity at a time. * [`logout`](contrib/docs/commands/logout.md)`[--keep-session]` Logs out * [`whoami`](contrib/docs/commands/whoami.md)`[-l]` Prints info of the user * [`session`](contrib/docs/commands/session.md) Prints (secret) session ID * [`killsession`](contrib/docs/commands/killsession.md)`[-a | sessionid1 sessionid2 ... ]` Kills a session of current user. ### Browse * [`cd`](contrib/docs/commands/cd.md)`[remotepath]` Changes the current remote folder * [`lcd`](contrib/docs/commands/lcd.md)`[localpath]` Changes the current local folder for the interactive console * [`ls`](contrib/docs/commands/ls.md)`[-halRr] [--show-handles] [--tree] [--versions] [remotepath] [--use-pcre] [--show-creation-time] [--time-format=FORMAT]` Lists files in a remote path * [`pwd`](contrib/docs/commands/pwd.md) Prints the current remote folder * [`lpwd`](contrib/docs/commands/lpwd.md) Prints the current local folder for the interactive console * [`attr`](contrib/docs/commands/attr.md)`remotepath [--force-non-official] [-s attribute value|-d attribute [--print-only-value]` Lists/updates node attributes. * [`du`](contrib/docs/commands/du.md)`[-h] [--versions] [remotepath remotepath2 remotepath3 ... ] [--use-pcre]` Prints size used by files/folders * [`find`](contrib/docs/commands/find.md)`[remotepath] [-l] [--pattern=PATTERN] [--type=d|f] [--mtime=TIMECONSTRAIN] [--size=SIZECONSTRAIN] [--use-pcre] [--time-format=FORMAT] [--show-handles|--print-only-handles]` Find nodes matching a pattern * [`mount`](contrib/docs/commands/mount.md) Lists all the root nodes ### Moving / Copying files * [`mkdir`](contrib/docs/commands/mkdir.md)`[-p] remotepath` Creates a directory or a directories hierarchy * [`cp`](contrib/docs/commands/cp.md)`[--use-pcre] srcremotepath [srcremotepath2 srcremotepath3 ..] dstremotepath|dstemail` : Copies files/folders into a new location (all remotes) * [`put`](contrib/docs/commands/put.md)`[-c] [-q] [--print-tag-at-start] localfile [localfile2 localfile3 ...] [dstremotepath]` Uploads files/folders to a remote folder * [`get`](contrib/docs/commands/get.md)`[-m] [-q] [--ignore-quota-warn] [--use-pcre] [--password=PASSWORD] exportedlink|remotepath [localpath]` Downloads a remote file/folder or a public link * [`preview`](contrib/docs/commands/preview.md)`[-s] remotepath localpath` To download/upload the preview of a file. * [`thumbnail`](contrib/docs/commands/thumbnail.md)`[-s] remotepath localpath` To download/upload the thumbnail of a file. * [`mv`](contrib/docs/commands/mv.md)`srcremotepath [--use-pcre] [srcremotepath2 srcremotepath3 ..] dstremotepath` Moves file(s)/folder(s) into a new location (all remotes) * [`rm`](contrib/docs/commands/rm.md)`[-r] [-f] [--use-pcre] remotepath` Deletes a remote file/folder * [`transfers`](contrib/docs/commands/transfers.md)`[-c TAG|-a] | [-r TAG|-a] | [-p TAG|-a] [--only-downloads | --only-uploads] [SHOWOPTIONS]` List or operate with transfers * [`speedlimit`](contrib/docs/commands/speedlimit.md)`[-u|-d|--upload-connections|--download-connections] [-h] [NEWLIMIT]` Displays/modifies upload/download rate limits: either speed or max connections * [`sync`](contrib/docs/commands/sync.md)`[localpath dstremotepath| [-dpe] [ID|localpath]` Controls synchronizations. * [`sync-issues`](contrib/docs/commands/sync-issues.md)`[[--detail (ID|--all)] [--limit=rowcount] [--disable-path-collapse]] | [--enable-warning|--disable-warning]` Show all issues with current syncs * [`sync-ignore`](contrib/docs/commands/sync-ignore.md)`[--show|[--add|--add-exclusion|--remove|--remove-exclusion] filter1 filter2 ...] (ID|localpath|DEFAULT)` Manages ignore filters for syncs * [`sync-config`](contrib/docs/commands/sync-config.md)`[--delayed-uploads-wait-seconds | --delayed-uploads-max-attempts]` Controls sync configuration. * [`exclude`](contrib/docs/commands/exclude.md)`[(-a|-d) pattern1 pattern2 pattern3]` Manages default exclusion rules in syncs. * [`backup`](contrib/docs/commands/backup.md)`(localpath remotepath --period="PERIODSTRING" --num-backups=N | [-lhda] [TAG|localpath] [--period="PERIODSTRING"] [--num-backups=N]) [--time-format=FORMAT]` Controls backups ### Sharing (your own files, of course, without infringing any copyright) * [`export`](contrib/docs/commands/export.md)`[-d|-a [--writable] [--mega-hosted] [--password=PASSWORD] [--expire=TIMEDELAY] [-f]] [remotepath] [--use-pcre] [--time-format=FORMAT]` Prints/Modifies the status of current exports * [`import`](contrib/docs/commands/import.md)`exportedlink [--password=PASSWORD] [remotepath]` Imports the contents of a remote link into user's cloud * [`share`](contrib/docs/commands/share.md)`[-p] [-d|-a --with=user@email.com [--level=LEVEL]] [remotepath] [--use-pcre] [--time-format=FORMAT]` Prints/Modifies the status of current shares * [`webdav`](contrib/docs/commands/webdav.md)`[-d (--all | remotepath ) ] [ remotepath [--port=PORT] [--public] [--tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key]] [--use-pcre]` Configures a WEBDAV server to serve a location in MEGA ### FUSE (mount your cloud folder to the local system) * [`fuse-add`](contrib/docs/commands/fuse-add.md)`[--name=name] [--disabled] [--transient] [--read-only] localPath remotePath` Creates a new FUSE mount. * [`fuse-remove`](contrib/docs/commands/fuse-remove.md)`(name|localPath)` Deletes a specified FUSE mount. * [`fuse-enable`](contrib/docs/commands/fuse-enable.md)`[--temporarily] (name|localPath)` Enables a specified FUSE mount. * [`fuse-disable`](contrib/docs/commands/fuse-disable.md)`[--temporarily] (name|localPath)` Disables a specified FUSE mount. * [`fuse-show`](contrib/docs/commands/fuse-show.md)`[--only-enabled] [--disable-path-collapse] [[--limit=rowcount] | [name|localPath]]` Displays the list of FUSE mounts and their information. If a name or local path provided, displays information of that mount instead. * [`fuse-config`](contrib/docs/commands/fuse-config.md)`[--name=name] [--enable-at-startup=yes|no] [--persistent=yes|no] [--read-only=yes|no] (name|localPath)` Modifies the specified FUSE mount configuration. ### Misc. * [`autocomplete`](contrib/docs/commands/autocomplete.md)`[dos | unix]` Modifies how tab completion operates. * [`cancel`](contrib/docs/commands/cancel.md) Cancels your MEGA account * [`cat`](contrib/docs/commands/cat.md)`remotepath1 remotepath2 ...` Prints the contents of remote files * [`clear`](contrib/docs/commands/clear.md) Clear screen * [`codepage`](contrib/docs/commands/codepage.md)`[N [M]]` Switches the codepage used to decide which characters show on-screen. * [`configure`](contrib/docs/commands/configure.md)`[key [value]]` Shows and modifies global configurations. * [`confirmcancel`](contrib/docs/commands/confirmcancel.md)`link password` Confirms the cancellation of your MEGA account * [`debug`](contrib/docs/commands/debug.md) Enters debugging mode (HIGHLY VERBOSE) * [`deleteversions`](contrib/docs/commands/deleteversions.md)`[-f] (--all | remotepath1 remotepath2 ...) [--use-pcre]` Deletes previous versions. * [`df`](contrib/docs/commands/df.md)`[-h]` Shows storage info * [`errorcode`](contrib/docs/commands/errorcode.md)`number` Translate error code into string * [`exit`](contrib/docs/commands/exit.md)`[--only-shell]` Quits MEGAcmd * [`ftp`](contrib/docs/commands/ftp.md)`[-d ( --all | remotepath ) ] [ remotepath [--port=PORT] [--data-ports=BEGIN-END] [--public] [--tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key]] [--use-pcre]` Configures a FTP server to serve a location in MEGA * [`graphics`](contrib/docs/commands/graphics.md)`[on|off]` Shows if special features related to images and videos are enabled. * [`help`](contrib/docs/commands/help.md)`[-f|-ff|--non-interactive|--upgrade|--paths] [--show-all-options]` Prints list of commands * [`https`](contrib/docs/commands/https.md)`[on|off]` Shows if HTTPS is used for transfers. Use "https on" to enable it. * [`log`](contrib/docs/commands/log.md)`[-sc] level` Prints/Modifies the log level * [`mediainfo`](contrib/docs/commands/mediainfo.md)`remotepath1 remotepath2 ...` Prints media info of remote files * [`permissions`](contrib/docs/commands/permissions.md)`[(--files|--folders) [-s XXX]]` Shows/Establish default permissions for files and folders created by MEGAcmd. * [`proxy`](contrib/docs/commands/proxy.md)`[URL|--auto|--none] [--username=USERNAME --password=PASSWORD]` Show or sets proxy configuration * [`psa`](contrib/docs/commands/psa.md)`[--discard]` Shows the next available Public Service Announcement (PSA) * [`quit`](contrib/docs/commands/quit.md)`[--only-shell]` Quits MEGAcmd * [`reload`](contrib/docs/commands/reload.md) Forces a reload of the remote files of the user * [`tree`](contrib/docs/commands/tree.md)`[remotepath]` Lists files in a remote path in a nested tree decorated output * [`unicode`](contrib/docs/commands/unicode.md) Toggle unicode input enabled/disabled in interactive shell * [`update`](contrib/docs/commands/update.md)`[--auto=on|off|query]` Updates MEGAcmd * [`version`](contrib/docs/commands/version.md)`[-l][-c]` Prints MEGAcmd versioning and extra info ## Examples Some examples of typical MEGAcmd workflows and commands. **Note:** command output might differ. It could be slightly outdated, or it could've been manually re-formatted to better fit this markdown page. ### Account management #### Creating new accounts

MEGA CMD> signup eg.email_1@example.co.nz --name="test1"
New Password:
Retype New Password:
Account  created succesfully. You will receive a confirmation link. Use "confirm" with the provided link to confirm that account

MEGA CMD> confirm https://mega.nz/#confirmQFSfjtUkExc5M2Us6q5d-klx60RfxVbxjhk eg.email_1@example.co.nz
Password:
Account eg.email_1@example.co.nz confirmed succesfully. You can login with it now

MEGA CMD> signup eg.email_2@example.co.nz --name="test2"
New Password:
Retype New Password:
Account  created succesfully. You will receive a confirmation link. Use "confirm" with the provided link to confirm that account

MEGA CMD> confirm https://mega.nz/#confirmcz7Ss68ChhMKk8WEFTQCqLMHJg8esAEEpQE eg.email_2@example.co.nz
Password:
Account eg.email_2@example.co.nz confirmed succesfully. You can login with it now
#### Logging-in and contacts
MEGA CMD> login eg.email_1@example.co.nz
Password:
[SDK:info: 23:19:14] Fetching nodes ...
Fetching nodes ||########################################||(38/38 MB: 100.00 %)
[SDK:info: 23:19:17] Loading transfers from local cache
[SDK:info: 23:19:17] Login complete as eg.email_1@example.co.nz
#### Adding a contact and viewing
eg.email_1@example.co.nz:/$ invite eg.email_2@example.co.nz
Invitation to user: eg.email_2@example.co.nz sent

eg.email_1@example.co.nz:/$ showpcr
Outgoing PCRs:
 eg.email_2@example.co.nz  (id: 47Xhz6wvVTk, creation: Thu, 26 Apr 2018 11:20:09 +1200, modification: Thu, 26 Apr 2018 11:20:09 +1200)

eg.email_1@example.co.nz:/$ logout
Logging out...

MEGA CMD> login eg.email_2@example.co.nz
Password:
[SDK:info: 23:21:10] Fetching nodes ...
[SDK:info: 23:21:12] Loading transfers from local cache
[SDK:info: 23:21:12] Login complete as eg.email_2@example.co.nz

eg.email_2@example.co.nz:/$ showpcr
Incoming PCRs:
 eg.email_1@example.co.nz  (id: 47Xhz6wvVTk, creation: Thu, 26 Apr 2018 11:20:09 +1200, modification: Thu, 26 Apr 2018 11:20:09 +1200)

eg.email_2@example.co.nz:/$ ipc 47Xhz6wvVTk -a
Accepted invitation by eg.email_1@example.co.nz

eg.email_2@example.co.nz:/$ users
eg.email_1@example.co.nz, visible since Thu, 26 Apr 2018 11:22:02 +1200

eg.email_2@example.co.nz:/$ userattr --user=eg.email_1@example.co.nz
        firstname = test1
        ed25519 = 5Xl2-mUtsZkaATmSS88Ncepju5805uw66Hfdh_-SwpE
        cu25519 = ejoYtpaJIZvlpmPsYviIa6tNvPTdVjfkYf9G1k8PKgM
        rsa = AAAAAFrhDPPMS1AXAhJwScpJ_GKqFUJ42uIIcwxLp5RIalkWtsa5j87u2LFhoZlI_rHIzGXrdsbywgs7Msisw0CjodrtwtME
        cu255 = AAAAAFrhDPPWUOP2tNByV72zU4M3EKNoddyVCT13VkkouMldniR2UZtLrPjUjUeOZOLvOL7H1C0W0Q_b3QqYSvAKo775pUwD

eg.email_2@example.co.nz:/$ logout
Logging out...

MEGA CMD> login eg.email_1@example.co.nz
Password:
[SDK:info: 23:24:26] Fetching nodes ...
[SDK:info: 23:24:27] Loading transfers from local cache
[SDK:info: 23:24:27] Login complete as eg.email_1@example.co.nz

eg.email_1@example.co.nz:/$ users
eg.email_2@example.co.nz, visible

eg.email_1@example.co.nz:/$ userattr --user=eg.email_2@example.co.nz
        firstname = test2
        ed25519 = M7SLy2RajwUAvynxJQaVkhe6hxGpbwJmvve3dgl8B1o
        cu25519 = VaXluGS2c5xbo0xOHHJciqLRxwMaWZHVK8iuxtlCBTk
        rsa = AAAAAFrhDWemabQ4JAOtP7zcoy6m74PsFTFCbj04Zh4G8K_TZB5Sm9T5Xj9CXYzwWnpfRd1McPdDouKdsASQ6Er7i4Y4LpEA
        cu255 = AAAAAFrhDWcXE_7AHZmvxk5Hk0G7V65UnvFO42tb1gM9SYy3BpsMCas0X-pbqkYwf6_2eBG-ZLvkonGfXB3DWonWNvnVehIB
### Node operations #### Getting user info
MEGA CMD> login eg.email_1@example.co.nz
Password:
[SDK:info: 23:43:14] Fetching nodes ...
[SDK:info: 23:43:14] Loading transfers from local cache
[SDK:info: 23:43:14] Login complete as eg.email_1@example.co.nz

eg.email_1@example.co.nz:/$ whoami -l
Account e-mail: eg.email_1@example.co.nz
    Available storage: 50.00 GBytes
        In ROOT:      146... KBytes in     1 file(s) and     0 folder(s)
        In INBOX:       0.00  Bytes in     0 file(s) and     0 folder(s)
        In RUBBISH:     0.00  Bytes in     0 file(s) and     0 folder(s)
        Total size taken up by file versions:      0.00  Bytes
    Pro level: 0
    Subscription type:
    Account balance:
Current Active Sessions:
    * Current Session
    Session ID: m3a8eluyPdo
    Session start: 4/26/2018 11:43:12 AM
    Most recent activity: 4/26/2018 11:43:13 AM
    IP: 122.56.56.232
    Country: NZ
    User-Agent: MEGAcmd/0.9.9.0 (Windows 10.0.16299) MegaClient/3.3.5
    -----
1 active sessions opened

eg.email_1@example.co.nz:/$ mount
ROOT on /
INBOX on //in
RUBBISH on //bin
#### Downloading a file
eg.email_1@example.co.nz:/$ ls
Welcome to MEGA.pdf

eg.email_1@example.co.nz:/$ get "Welcome to MEGA.pdf"
TRANSFERING ||################################################################################||(1/1 MB: 100.00 %)
Download finished: Welcome to MEGA.pdf
TRANSFERING ||################################################################################||(1/1 MB: 100.00 %)
#### Uploading a file
eg.email_1@example.co.nz:/$ mkdir my-pictures

eg.email_1@example.co.nz:/$ cd my-pictures/

eg.email_1@example.co.nz:/my-pictures$ put C:\Users\MYWINDOWSUSER\Pictures
TRANSFERING ||################################################################################||(1/1 MB: 100.00 %)
Upload finished: C:\Users\MYWINDOWUSER\Pictures
TRANSFERING ||################################################################################||(1/1 MB: 100.00 %)
#### Creating and navigating directories
eg.email_1@example.co.nz:/my-pictures$ pwd
/my-pictures

eg.email_1@example.co.nz:/my-pictures$ ls
Pictures

eg.email_1@example.co.nz:/my-pictures$ cd Pictures/

eg.email_1@example.co.nz:/my-pictures/my-pictures$ ls
Camera Roll
Feedback
Saved Pictures
megacmdpkg.gif
megacmdpkg_80.gif
megacmdpkg_gray.gif

eg.email_1@example.co.nz:/my-pictures/my-pictures$ pwd
/my-pictures/Pictures

eg.email_1@example.co.nz:/my-pictures/my-pictures$ cd /

eg.email_1@example.co.nz:/$ du -h my-pictures/
FILENAME                                        SIZE
my-pictures:                                 1.31 MB
----------------------------------------------------------------
Total storage used:                          1.31 MB
#### Logging-out
eg.email_1@example.co.nz:/$ logout
Logging out...
MEGA CMD>
### Syncing
email_1@example.co.nz:/$ sync c:\Go go-backup/
Added sync: //?\c:\Go to /go-backup

email_1@example.co.nz:/$ sync
ID          LOCALPATH                   REMOTEPATH RUN_STATE STATUS  ERROR SIZE      FILES DIRS
WOOmFwZfQwM \\?\c:\Go                   /go-backup Running   Syncing NO    119.13 KB 10    97

email_1@example.co.nz:/$ sync
ID          LOCALPATH                   REMOTEPATH RUN_STATE STATUS  ERROR SIZE     FILES DIRS
WOOmFwZfQwM \\?\c:\Go                   /go-backup Running   Syncing NO    61.22 MB 1252  463

email_1@example.co.nz:/$ sync
ID          LOCALPATH                   REMOTEPATH RUN_STATE STATUS  ERROR SIZE      FILES DIRS
WOOmFwZfQwM \\?\c:\Go                   /go-backup Running   Syncing NO    232.94 MB 4942  773

email_1@example.co.nz:/$ sync
ID          LOCALPATH                   REMOTEPATH RUN_STATE STATUS ERROR SIZE      FILES DIRS
WOOmFwZfQwM \\?\c:\Go                   /go-backup Running   Synced NO    285.91 MB 7710  1003
Then, on a windows cmd prompt:
C:\Users\ME>rmdir /s c:\go\blog
c:\go\blog, Are you sure (Y/N)? Y
Back in MEGAcmd (the update has been applied to MEGA already):
email_1@example.co.nz:/$ sync
ID          LOCALPATH                   REMOTEPATH RUN_STATE STATUS ERROR SIZE      FILES DIRS
WOOmFwZfQwM \\?\c:\Go                   /go-backup Running   Synced NO    268.53 MB 7306  961
### Backups
eg.email@example.co.nz:/$ backup c:/cmake /cmake-backup --period="0 0 4 * * *" --num-backups=3
Backup established: c:/cmake into /cmake-backup period="0 0 4 * * *" Number-of-Backups=3

eg.email@example.co.nz:/$ backup
TAG   LOCALPATH                                               REMOTEPARENTPATH                                                STATUS
166   \\?\c:\cmake                                            /cmake-backup                                                  COMPLETE

eg.email@example.co.nz:/$ backup -h
TAG   LOCALPATH                                               REMOTEPARENTPATH                                                STATUS
166   \\?\c:\cmake                                            /cmake-backup                                                  COMPLETE
   -- HISTORY OF BACKUPS --
  NAME                                                    DATE                    STATUS   FILES FOLDERS
  cmake_bk_20180426133300                                 26Apr2018 13:33:00      COMPLETE     0      92
### WebDAV
eg.email@example.co.nz:/$ webdav myfile.tif --port=1024
Serving via webdav myfile.tif: http://127.0.0.1:1024/5mYHQT4B/myfile.tif

eg.email@example.co.nz:/$ webdav
WEBDAV SERVED LOCATIONS:
/myfile.tif: http://127.0.0.1:1024/5mYHQT4B/myfile.tif

eg.email@example.co.nz:/$ webdav -d myfile.tif
myfile.tif no longer served via webdav
### Exporting and importing
eg.email_1@example.co.nz:/$ export -a Pictures/
MEGA respects the copyrights of others and requires that users of the MEGA cloud service comply with the laws of copyright.
You are strictly prohibited from using the MEGA cloud service to infringe copyrights.
You may not upload, download, store, share, display, stream, distribute, email, link to, transmit or otherwise make available any files, data or content that infringes any copyright or other proprietary rights of any person or entity. Do you accept this terms? (Yes/No): Yes
Please enter [y]es/[n]o/[a]ll/none:yes
Exported /Pictures: https://mega.nz/#F!iaZlEBIL!mQD3rFuJhKov0sco-6s9xg

eg.email_1@example.co.nz:/$ export
Pictures (folder, shared as exported permanent folder link: https://mega.nz/#F!iaZlEBIL!mQD3rFuJhKov0sco-6s9xg)

eg.email_1@example.co.nz:/$ logout --keep-session
Logging out...
Session closed but not deleted. Warning: it will be restored the next time you execute the application. Execute "logout" to delete the session permanently.
You can also login with the session id: ARo7aiLAxK-jseOdVBYhj285Twb06ivWsFmT4XAnkTsiaDRRbm5oYS1zRm-V3I0FHHOvwj7P2RPvrSw_

MEGA CMD> login eg.email_2@example.co.nz
Password:
[SDK:info: 01:55:04] Fetching nodes ...
[SDK:info: 01:55:05] Loading transfers from local cache
[SDK:info: 01:55:05] Login complete as eg.email_2@example.co.nz

eg.email_2@example.co.nz:/$ ls
Welcome to MEGA.pdf

eg.email_2@example.co.nz:/$ import https://mega.nz/#F!iaZlEBIL!mQD3rFuJhKov0sco-6s9xg
Imported folder complete: /Pictures

eg.email_2@example.co.nz:/$ ls
Pictures
Welcome to MEGA.pdf

eg.email_2@example.co.nz:/$ ls Pictures/
Camera Roll
Feedback
Saved Pictures
megacmdpkg.gif
megacmdpkg_80.gif
megacmdpkg_gray.gif

eg.email_2@example.co.nz:/$ logout
Logging out...

MEGA CMD> login ARo7aiLAxK-jseOdVBYhj285Twb06ivWsFmT4XAnkTsiaDRRbm5oYS1zRm-V3I0FHHOvwj7P2RPvrSw_
eg.email_1@example.co.nz:/$ export
Pictures (folder, shared as exported permanent folder link: https://mega.nz/#F!iaZlEBIL!mQD3rFuJhKov0sco-6s9xg)

eg.email_1@example.co.nz:/$ export -d Pictures/
Disabled export: /Pictures

eg.email_1@example.co.nz:/$ export
Couldn't find anything exported below current folder. Use -a to export it
### Transfers
eg.email@example.co.nz:/tmp-test/Mega.dir$ transfers
DIR/SYNC TAG  SOURCEPATH                         DESTINYPATH                              PROGRESS           STATE
 U     17361 \\?\C:\Users\ME\...ebug\megaapi.obj /tmp-test/Mega.dir/Mega.dir/Debug    100.00% of 2016.62 KB  ACTIVE
 U     17362 \\?\C:\Users\ME\...megaapi_impl.obj /tmp-test/Mega.dir/Mega.dir/Debug     13.64% of   13.85 MB  ACTIVE
 U     17363 \\?\C:\Users\ME\...g\megaclient.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of   15.46 MB  QUEUED
 U     17364 \\?\C:\Users\ME\..._http_parser.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of   85.15 KB  QUEUED
 U     17365 \\?\C:\Users\ME\...ega_utf8proc.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  312.44 KB  QUEUED
 U     17366 \\?\C:\Users\ME\...\mega_zxcvbn.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  589.88 KB  QUEUED
 U     17367 \\?\C:\Users\ME\...ir\Debug\net.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of    3.20 MB  QUEUED
 U     17368 \\?\C:\Users\ME\...r\Debug\node.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of    3.73 MB  QUEUED
 U     17369 \\?\C:\Users\ME\...ntactrequest.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  352.22 KB  QUEUED
 U     17370 \\?\C:\Users\ME\...\Debug\proxy.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  203.57 KB  QUEUED
 ...  Showing first 10 transfers ...

eg.email@example.co.nz:/tmp-test/Mega.dir$ transfers -p 17367
Transfer 17367 paused successfully.

eg.email@example.co.nz:/tmp-test/Mega.dir$ transfers -c 17370
Transfer 17370 cancelled successfully.

eg.email@example.co.nz:/tmp-test/Mega.dir$ transfers
DIR/SYNC TAG  SOURCEPATH                         DESTINYPATH                              PROGRESS           STATE
 U     17362 \\?\C:\Users\ME\...megaapi_impl.obj /tmp-test/Mega.dir/Mega.dir/Debug     96.32% of   13.85 MB  ACTIVE
 U     17363 \\?\C:\Users\ME\...g\megaclient.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.20% of   15.46 MB  ACTIVE
 U     17364 \\?\C:\Users\ME\..._http_parser.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of   85.15 KB  QUEUED
 U     17365 \\?\C:\Users\ME\...ega_utf8proc.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  312.44 KB  QUEUED
 U     17366 \\?\C:\Users\ME\...\mega_zxcvbn.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  589.88 KB  QUEUED
 U     17367 \\?\C:\Users\ME\...ir\Debug\net.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of    3.20 MB  PAUSED
 U     17368 \\?\C:\Users\ME\...r\Debug\node.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of    3.73 MB  QUEUED
 U     17369 \\?\C:\Users\ME\...ntactrequest.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  352.22 KB  QUEUED
 U     17371 \\?\C:\Users\ME\...pubkeyaction.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  355.75 KB  QUEUED
 U     17372 \\?\C:\Users\ME\...ebug\request.obj /tmp-test/Mega.dir/Mega.dir/Debug      0.00% of  933.14 KB  QUEUED
 ...  Showing first 10 transfers ...
### Shared folders
eg.email@example.co.nz:/$ mount
ROOT on /
INBOX on //in
RUBBISH on //bin
INSHARE on //from/family.member@example.co.nz:photos_Jan_1_2020 (read access)
INSHARE on //from/family.member@example.co.nz:other_folder (read access)

eg.email@example.co.nz:/$ ls family.member@example.co.nz:photos_Jan_1_2020
photo1.jpg
photo2.jpg

eg.email@example.co.nz:/$ get family.member@example.co.nz:photos_Jan_1_2020/photo1.jpg
TRANSFERRING ||###########################################################################################||(5/5 MB: 100.00 %)
Download finished: .\photo1.jpg

eg.email@example.co.nz:/$ share -a --with=family.member@example.co.nz --level=0  "/Camera Uploads/my_photos_from_that_day"
Shared /Camera Uploads/my_photos_from_that_day : family.member@example.co.nz accessLevel=0
MEGAcmd-2.5.2_Linux/build-with-docker/000077500000000000000000000000001516543156300174225ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build-with-docker/Dockerfile.cmake000066400000000000000000000066211516543156300225000ustar00rootroot00000000000000# syntax=docker/dockerfile:1 FROM debian:12-slim as base RUN rm -f /etc/apt/apt.conf.d/docker-clean; \ echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update \ && apt-get install -y --no-install-recommends \ cmake zip pkg-config curl python3 python3-pip autoconf-archive nasm git g++ uuid-runtime zstd fuse \ && python3 -m pip install unittest-xml-reporting pexpect --break-system-packages RUN if [ ! -e /etc/machine-id ]; then \ uuidgen > /etc/machine-id; \ fi FROM base as build-deps-cmake RUN --mount=type=cache,target=/var/cache/apt,sharing=locked \ --mount=type=cache,target=/var/lib/apt,sharing=locked \ apt-get update \ && apt-get install -y --no-install-recommends \ ccache jq \ cmake zip pkg-config curl python3 autoconf-archive nasm libgtest-dev libgmock-dev git g++ make unzip autoconf ca-certificates automake ninja-build \ libfuse-dev libtool COPY vcpkg.json ./vcpkg.json COPY build/clone_vcpkg_from_baseline.sh ./clone_vcpkg_from_baseline.sh RUN /clone_vcpkg_from_baseline.sh /vcpkg FROM scratch as src WORKDIR /usr/src/megacmd COPY sdk ./sdk COPY src ./src COPY build ./build COPY contrib ./contrib COPY tests/common ./tests/common COPY tests/integration ./tests/integration COPY tests/unit ./tests/unit COPY CMakeLists.txt ./CMakeLists.txt COPY vcpkg.json ./vcpkg.json FROM build-deps-cmake as build LABEL stage=autocleanable-intermediate-stage WORKDIR /usr/src/megacmd # setting ccache as env variables breaks latest vcpkg libsodium compilation #ENV CC "ccache gcc-12" #ENV CXX "ccache g++-12" ENV CCACHE_DIR=/tmp/ccache ENV VCPKG_DEFAULT_BINARY_CACHE=/tmp/vcpkgcache ENV VCPKG_BINARY_SOURCES="clear;files,/tmp/vcpkgcache,readwrite" ARG ENABLE_asan=OFF ARG ENABLE_ubsan=OFF ARG ENABLE_tsan=OFF ARG ENABLE_MEGACMD_TESTS=ON ARG BUILD_CORES COPY --from=src /usr/src/megacmd /usr/src/megacmd #We don't wont a potential config coming from host machine to meddle with the build: RUN rm ./sdk/include/mega/config.h || true RUN --mount=type=cache,target=/tmp/ccache \ --mount=type=cache,target=/tmp/vcpkgcache \ --mount=type=tmpfs,target=/tmp/build \ VCPKG_MAX_CONCURRENCY=${BUILD_CORES:-$(nproc)} \ flock -w 7200 /tmp/vcpkgcache/.vcpkg-install.lock \ cmake -B /tmp/build \ -DVCPKG_ROOT=/vcpkg \ -DCMAKE_CXX_COMPILER=g++ \ -DCMAKE_C_COMPILER=gcc \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_BUILD_TYPE=Debug \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DENABLE_ASAN=${ENABLE_asan} \ -DENABLE_UBSAN=${ENABLE_ubsan} \ -DENABLE_TSAN=${ENABLE_tsan} \ -DENABLE_MEGACMD_TESTS=${ENABLE_MEGACMD_TESTS} \ -DWITH_FUSE=ON \ && cmake --build /tmp/build -j${BUILD_CORES:-$(nproc)} --target mega-cmd mega-cmd-server mega-exec \ mega-cmd-updater mega-cmd-tests-integration mega-cmd-tests-unit \ && cmake --install /tmp/build #|| mkdir /inspectme && mv /tmp/build/* /vcpkg /inspectme FROM base as final COPY --from=build /usr/bin/mega* /usr/bin/ COPY --from=build /opt/megacmd /opt/megacmd COPY --chmod=555 tests/*.py /usr/local/bin/ #COPY --from=build /inspectme /inspectme # Integration tests that use fuse will requiere uid and gid 1001 RUN groupadd -g 1001 jenkins && useradd jenkins -u 1001 -g 1001 -m -s /bin/bash MEGAcmd-2.5.2_Linux/build/000077500000000000000000000000001516543156300152045ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/SynologyNAS/000077500000000000000000000000001516543156300173715ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/SynologyNAS/README.md000066400000000000000000000062011516543156300206470ustar00rootroot00000000000000# How to build MEGAcmd for Synology NAS drives. We use docker to cross-compile MEGAcmd for Synology. To build for a specific platform, run: ``` docker build -t megacmd-dms-build-env -f $PWD/build/SynologyNAS/synology-cross-build.dockerfile $PWD --build-arg PLATFORM= ``` The `-t` argument tags the container with a name, whereas `-f` specifies the dockerfile. Note that the working directory has to be the MEGAcmd repository. The possible platforms are: ``` alpine alpine4k apollolake armada37xx armada38x avoton broadwell broadwellnk broadwellnkv2 broadwellntbap bromolow braswell denverton epyc7002 geminilake grantley kvmx64 monaco purley r1000 rtd1296 rtd1619b v1000 ``` After building successfully, we need to run the container so we can extract the generated package. To do so, run: ``` docker run -d --name megacmd-dms megacmd-dms-build-env ``` Then, copy the package folder to the current directory with: ``` docker cp megacmd-dms:/image/ . ``` After copying, we can stop and remove the container if needed: ``` docker rm -f megacmd-dms ``` The script `build/SynologyNAS/generate_pkg.sh` automates all of these steps, creating the necessary docker container, extracting the package from it, and deleting it afterwards. In this case, the package will be extracted to `build/SynologyNAS/packages`. To install the package on your NAS device, login using the web interface. Navigate to the Package Manager, and click Manual Install. This will open up a menu which lets you choose a local file. Select your generated .pkg file, and install. To actually run MEGAcmd, you'll need to enable a telnet or SSH connection in the Synology NAS, and run a remote terminal on it. Executables are available at `/volume1/@appstore/megacmdpkg`. # Notes **Writable Home Directory** MEGAcmd requires a user's home directory to be writable. If you intend to use MEGAcmd as a non-root user on your Synology device, make sure you've correctly set up a home directory for your user. Generally this will require formatting a volume and configuring Synology's "User Home Service." You can learn more here: [Synology DSM - Advanced User Settings](https://www.synology.com/en-global/knowledgebase/DSM/help/DSM/AdminCenter/file_user_advanced) **Limit on Inotify Watches** MEGAcmd makes use of the Linux kernel's inotify functionality to monitor the filesystem for changes. Unfortunately, inotify watches are relatively expensive constructs and so the Linux kernel imposes a configurable limit to how many can be established. How large this limit is depends on the machine running Linux. Synology NAS, being embedded devices, have a somewhat small limit. If you find yourself having trouble synchronizing large directory trees, you can try increasing this limit using Linux's sysctl command. To view the current limit, you can issue the following command: `sysctl fs.inotify.max_user_watches` To temporarily alter the limit, you can issue this command as root: `sysctl fs.inotify.max_user_watches=131072` To permanently alter the limit, you will need to edit /etc/sysctl.conf. You can learn about sysctl.conf's format [here](https://man7.org/linux/man-pages/man5/sysctl.conf.5.html) MEGAcmd-2.5.2_Linux/build/SynologyNAS/dockerfile/000077500000000000000000000000001516543156300215005ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/SynologyNAS/dockerfile/synology-cross-build.dockerfile000066400000000000000000000050531516543156300276430ustar00rootroot00000000000000# Dockerfile for cross-compiling MEGAcmd for Synology in its different architectures. See README.md for more info. FROM debian:12-slim # Set default architecture ARG PLATFORM=alpine ENV PLATFORM=${PLATFORM} RUN apt-get --quiet=2 update && DEBCONF_NOWARNINGS=yes apt-get --quiet=2 install \ aria2 \ autoconf \ autoconf-archive \ build-essential \ ccache \ cmake \ curl \ fakeroot \ git \ nasm \ pkg-config \ python3 \ tar \ unzip \ wget \ xz-utils \ zip \ 1> /dev/null ENV CCACHE_DIR=/tmp/ccache ENV VCPKG_DEFAULT_BINARY_CACHE=/tmp/vcpkgcache # We don't wont a potential config coming from host machine to meddle with the build RUN rm sdk/include/mega/config.h || true WORKDIR /mega RUN chmod 777 /mega # Clone and checkout known pkgscripts baseline RUN git clone https://github.com/SynologyOpenSource/pkgscripts-ng.git pkgscripts \ && git -C ./pkgscripts checkout e1d9f52 COPY sdk/dockerfile/dms-toolchain.sh /mega/ COPY sdk/dockerfile/dms-toolchains.conf /mega/ COPY build/SynologyNAS/toolkit/source/MEGAcmd/SynoBuildConf/install /mega/spk_install.sh RUN chmod +x /mega/dms-toolchain.sh RUN chmod +x /mega/spk_install.sh COPY vcpkg.json ./vcpkg.json COPY build/clone_vcpkg_from_baseline.sh ./clone_vcpkg_from_baseline.sh RUN /mega/clone_vcpkg_from_baseline.sh /mega/vcpkg WORKDIR /mega/megacmd COPY sdk ./sdk COPY src ./src COPY build ./build COPY contrib ./contrib COPY tests/common ./tests/common COPY CMakeLists.txt ./CMakeLists.txt COPY vcpkg.json ./vcpkg.json RUN /mega/dms-toolchain.sh ${PLATFORM} # Remove the dynamic version of libatomic to avoid compiling with it, which causes # execution to fail in the NAS because the shared library object cannot be found RUN find /mega/toolchain/ \( -type f -o -type l \) -name libatomic.so* -delete RUN --mount=type=cache,target=/tmp/ccache \ --mount=type=cache,target=/tmp/vcpkgcache \ --mount=type=tmpfs,target=/tmp/build \ cmake -B buildDMS \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DENABLE_MEGACMD_TESTS=OFF \ -DENABLE_ASAN=OFF \ -DENABLE_UBSAN=OFF \ -DENABLE_TSAN=OFF \ -DCMAKE_VERBOSE_MAKEFILE=ON \ -DWITH_FUSE=OFF \ -DVCPKG_CHAINLOAD_TOOLCHAIN_FILE=/mega/${PLATFORM}.toolchain.cmake \ -DVCPKG_OVERLAY_TRIPLETS=/mega \ -DVCPKG_ROOT=/mega/vcpkg \ -DVCPKG_TARGET_TRIPLET=${PLATFORM} && \ cmake --build buildDMS RUN export PLATFORM=${PLATFORM} && /mega/spk_install.sh MEGAcmd-2.5.2_Linux/build/SynologyNAS/generate_pkg.sh000077500000000000000000000016631516543156300223710ustar00rootroot00000000000000#!/bin/bash set -e SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd ) if [ "$#" -ne 1 ]; then echo "Usage: $0 " exit 1 fi PLATFORM="$1" CONTAINER="megacmd-${PLATFORM}-build-env" cleanup() { echo "Cleaning up container..." docker rm -f $CONTAINER > /dev/null 2>&1 || true } trap cleanup EXIT echo "Starting build for '${PLATFORM}'..." BUILDER_PARAMETER="${DOCKER_CUSTOM_BUILDER:+--builder $DOCKER_CUSTOM_BUILDER --load}" MEGACMD_FOLDER="${SOURCE_PATH:-${SCRIPT_DIR}/../..}" OUTPUT_FOLDER="${OUTPUT_PATH:-${SCRIPT_DIR}/packages}" docker buildx build $BUILDER_PARAMETER -t $CONTAINER \ -f "$SCRIPT_DIR/dockerfile/synology-cross-build.dockerfile" \ "${MEGACMD_FOLDER}" \ --build-arg PLATFORM="$PLATFORM" CONTAINER_ID=$(docker create $CONTAINER) mkdir -p "$OUTPUT_FOLDER" docker cp "${CONTAINER_ID}:/image/${PLATFORM}" "${OUTPUT_FOLDER}"/ echo "Extracted package for '${PLATFORM}'" MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/000077500000000000000000000000001516543156300210565ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/000077500000000000000000000000001516543156300223565ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/000077500000000000000000000000001516543156300235535ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/INFO.sh000077500000000000000000000014561516543156300246530ustar00rootroot00000000000000#!/bin/bash source /mega/pkgscripts/include/pkg_util.sh package="megacmdpkg" version="2.2.0-0001" displayname="MEGAcmd" maintainer="Mega NZ" arch="$PLATFORM" description="MEGAcmd command line tool. Access your MEGA.nz secure cloud storage account and upload/download files, use its commands in scripts, automatically synchronise folders between your MEGA.nz account and your Synology NAS. Connect to your NAS via ssh or Putty to use the MEGAcmd commands. Run mega-help from the command line for documentation, or see our User Guide online." os_min_ver="7.0-40000" maintainer="Mega Ltd." maintaner_url="https://MEGA.nz" support_url="https://mega.nz/help" helpurl="https://github.com/meganz/MEGAcmd/blob/master/UserGuide.md" thirdparty="yes" ctl_stop="no" [ "$(caller)" != "0 NULL" ] && return 0 pkg_dump_info MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/PACKAGE_ICON.PNG000066400000000000000000000074551516543156300257770ustar00rootroot00000000000000‰PNG  IHDR@@ªiqÞgAMA±� üa cHRMz&€„ú€èu0ê`:˜pœºQ<bKGDÿÿÿ ½§“ pHYsÃÃÇo¨dtIMEä :!ÅsgIDATxÚÍ›k�ÕuÇçvÏìI»Zi,‰ÀJ+»,�$$~HØDˆJ¤lÇebTþ’,ì q’�â‘X,©b\©‚r…(áƒIå|®XzBcí®„�0D¯iß;Ó}O>Ì«{¦»§G’“ÜÒÖîÎö=÷œÿÿœsϹ·%üƱ¹·pNófžiëjÓï àGYl± t´SÕf@QÕ‚¯vÌÃωê ;`Õ*¨}sR½�ßøù\—qíÒóû/¹®r©íš½–mãƒò3¯ín續˜õÜ,ÕYŠº`QUÊßEÕR!ð¹EU=‹=gÕùØÝµ/�«·÷�±£Ã÷´]®7�ýêÿÇçÞJkæ˜ìâ¬8w8ÈY ´Ÿ(©(”�«1\±Õ¿©ÖÌ)~·j'}ì/=µ/ÔÿÙ)[̈±ËFßþ¿``ÎÍ|äMÉÊ–®ÅY1_w‘/ \!"R2»d”†Œ«Á&?ž£Víûö¹‚õòÖÔèàDzmº|âÝÿÞë¹…ßÉ´’³…î.“¹+ƒ¹G`QÉîʨe²ŽñÃç„RTí`AíS9-<;SÜá3ZàšñÃMÙcšyøhïïsÌL˜¼Úf›ìO³˜­F¤ÞxJ† •O‚ŸW"à%Œ-‚žS+OXì ?èç§õn8ªæ@Ǣߎœï½ _ýÖ§m£‹yP�ù3ûÂÙ�NŽI9¢üœUûAûÈG~þ³b¦–O¹tŒÌ»�¼Ú®™Æ}ÐAî‘¶¸gƒ±Ÿ>Ñ5Šýtáa±“žÚ§ÆÔ{ÔEr‹&�6´­aŒÌû#ÎkaÞeÆÝá ›’Œ§âÊT]¸¤xñ_ÀÕßkÜ>"<’d ´¹°©³}TýÞ¡¶+/€Ó½_`T½y=&»#ƒÜ)"NÒóUõc Šõ @59"-XU€îœ%fǨõzßi]xaŒÍ»AºzLËÖÌEEKœ�Ø'¬¸ä¨5^H@²ð¥.1[Um×`Ë‚æø°÷6NÙéÖÆ}0ƒ|µ±ñUõÃF$³¯‘ìk,ûѲ Ï)ÉU2ðÕNä¯OSh=Ðry:N̽•ËO¾(—;­w•^º­2–}�`? ꘼ö«`ƒ¢Žߘ§Î]+§~ÃÞLo�Ú!jݽ†þÖùŒÛü§ÚÅ}ΈÄûNÈöæ3êçRVŽI²­ê‰)ü/·‰óúqo‚Ïø¹hèÉôpÆŸìng³¤4>9öc˜L �Z·�KŽž'[ÐeËY?ßÝi2Ñ!ðΜõÌîèc†É~ÍAÖ§­�¢c?Þ5ÃQPиô`5N¼¬ïùÚ5-í¼ìÌ® Ïé`|âØ’ rw£í®1û )© ª•–ýT²îþõÔhÿÂ@R7ƒsnæÿý¢dÄlèOI~jöë{€EN3`¥=Qíwac¿wFv™®âg“ón§€.é÷%#Ò¸|*«`-ê{•E "¨”('¥‹+q+e²Zð½À³ Tˆ�Nš=:¦öV>éçpÏYOkf&ÆÙ �ÞxµÐÛ+CÆATab}ó0zj¸¨X“�:@­�X‹™Û�»ò“ÐÑV”QÈ“ßû&þG'SÉÖ¢\Õ ®4î÷n/ÃírZ8™?Û3Ûd7¤)x*nªÀÆ[�ûþ¸¬+b-úÊAô¯~„=ú©/râ²}Xå9¾�é[@çã’ùÜ0¥Ô%ÂøÖ3ú½ÇAÒË6膃þôÓ3EΚnÉr™qW;ȲÔì—ƒ§g&b ┾2.æ¦U8�߇\õ1Ô÷ë™LÍ~)\|§o!�Û¿GöæÏ"™ â8Å/c�9Ýh9•§<[Õ«Ûaõ ãt."ƒ¹‰Ê^óÂk‡Y»·„´MM`ûò}œ¾+èØñ]²Ÿ[¯�vˆ$Ù%o,v�ú{‹3�˜3#¿šm�O§uÿ›#@X‰ûÄ&¤¯ B=CÑÛ\ÐíÒ±c Ù×4X­¾yª“]³“åSûó¹Ù¦Mœ~�”çHES á¬]Iæ‰ûžÐˆýªÛ›Ei��˜Ÿ"ñ‚.jA#²\`VzökjµdŸø6rÕ|Ô÷«2⊜RÌwlßœÊøÍ�-t‰ê càjÀM‹rmvM3œu×’}òÛHß|ðýxöËn¿=ó=RP¡ÂH]ƒ^m\Ì’Tñ_±;-÷áá®[EË“!ÐÿWÜ~ûf27^Ÿ^°BÈík·Ý:ö«9èã£ó¯QÃ~ÊBë@ú<°>΢+èØþPsÆ×°SÏ~ÀðÚžDæéN)¿¾K‹!)IºëVÓöÃï`úA(¹}ûö‡È¬»>VžÆ­U15�ý˜îÒ ÝÆ�ÎdÛ£c_ÑØCu»ç—Ø¡±2Ýu«iÝöLßLßÚ·=DfÝu±ÏûïQxý@‚’ZW@…á‰�!ÛûÁ:=& ì‡Èëqì‘Ö®¦ýéGéxú1Üu«cŸó†Þcäއȿ¶¯�’ñÝetOŠfÏû‚ìG¶´q©Pÿ•Lë± ˆ¸«–—„½¡cŒüùf¦±»ZÿGj©±?Ç&GŠl€|,ªök ×FIÐþ®LÝ¿{ä8Íoè#÷n&ÿ‹×‹MUƒ}§¹³Ê¿ç�¯ŒÅ˜O$û)6Àj¯.ø»ö1µéûøCéAð†Ž1zïfòÿ¹»ÒQ&/¨ô¢ôŽd_°0f|t8Òü¸:]ƒˆ¦`żWö1uÿߥ¡hü–ó¦ñ:fµQw¤×‡aã"ı_e<¦®n`>(*%víerÓc‰ „�—ÀŠI Dºv½ÞZý´œq8a èáºxŽe¿¦Jä>¼co×^&6=‚?ô~¤ñc÷~·b|uo/çœdó›c_PŒE^PõT•) v+*�0þÍ0aãMxN‚ñ••Bu@B@¨tñ|xËUô Â9�žäد–›ªÔSQac÷l¡õϾ(?ÞIa÷þ€Û×Êo”o‚®^Ój=û¥Ÿr Ý õZÄz¢c?bŸUÑX�ªlHtj„Âîö½j±ù|Ñí`׺p¢§¥Ò;\¸* M¢¦§¥ÿ¬Ewk,ûD°Oã: q+DÀ+ žØê"ª6M½ñÆöõì+^[CfØøù÷)¨¾Œ2™†ý�kÆuÑ{v’Ð>�Å~®SY'ò¦8È~HÙI~þ.nÎæ±°/+™C½>ÅÚ:ÀZôtµ–Ê1y©`Ó39P‹ŠPÏ~ ىמ9‹z~e  Xh�>]Ô!p9’Ä>€…C°OwX§éÏÌ9;í�ý›A®OB±V9ï™ð¾ ®S½…™Îãï;TJhyÉÑHvMâUÆÿéy G ›)‚ ¨W`zÏþ†²ƒì—Üÿ…e˜³¯âÿ2Ñû<ì’6q_ôªt×UŠZ¿tØYó†—)^�ÕÏIqø[èZ,b­bK.¥�‹¸ +�!!öõèÜêÂÀ2òÅËÑý)fœ|iÀSû¯åCËÚr72Žp 8N建¦âm©zôHöƒáQra‘ÀZÅ/qœÒ\´ì(ö}xnùÁ“Ørº*Žñ¹€�ö·ŠùwA—4¼¬¬e(òMŽKÄþÈŽb_ÑÃÓð‡ .-5Á•&û„—ç²Vw  ö)Uõâ3w CiÊçˆ�$$[SÊN±KEïùðÔÇqOv”ÐÞprÎz,Ú5SÜ�ÜÖí&ßOõ*l*ö“eWëjž‡¾8 wÈ]8 ³ìÎ3WÜÜ”z«êñ†h7ºˆ¨c?©&Ïiò’#$»ýå¿Zôxî�Ü�ûul8€þ]K7¾QÀ>ªèDUÂnš”k•‹ëÒ"û‹”²5ZvЭK�Å„�,gæwSP÷.жÉc|}ä çÔ{§CL§ÀP“Žý¤B$¾ÈIǾF°_P0öµ¸qî8…Ýö!ÓþgkŒ¯ó€ò¸bøfŠ™ÊÙÂcµ;µyü»ü …HìG3!»Â~8<‚CQõ`ç(<6 3ý™ãcè=» ƒ=7¬ù¿œÆ¾¼\H¹ì'öèì‡j ;�}EµÏŸ‡ œ[wîKƒ·Åç¿J;r2g ß,¨}VQ?µAÁçu—Ç~BU •˜÷=xö<Ü×§®K0¾!½Ã¯Ò'G¬¿ÉS}RU' T�¸öë«ÀF²£Ã£xÈÅ„OŽÃ¦68µ¢�ñÐÄ™œµŠ¼jë<ÉÜéÀA\Ì;Àu{}Š9ñµ(z܇‡O¡;³0óM{@y,>·ÔNíñGžÇÿbAíKªxU…ˆ�ãã�Ù×XöÃÞT‘XðÑ—&áKoà?CÆ7ååqdÆJ:EÅvÍ@þÔQ¾!hsì_š(-öpýûIøç6Èù@·¿(ÊcoG?Gò#²¶mÞ"6Õ?ôJU+uMIê'ÕsjÕóÑñП<Ìô‘¯�Ñ;š`ý’Pow|œ¼ªé6™¾¸Ã  º ÕöæâXÙWtª}ÛG_ðTöÞ‘ÄÞØ$ã—€òø¯ö>~¤'åod~W«°ÚE׋ê§]„ê,ź՘ŽjŠê@ð,6§ªG|ô5OíLb÷ý-¹»iÕõ:uIô¾dÇž¶+9£¾ù]ÉtµÁbËEí2A?a± Œj— ¨¶”Œ�¶ØqO5'è _í»Š=䩾5�¾�7<£Ÿ·c¯\Íø|¼ž�ªZ%tEXtdate:create2020-10-13T03:53:24+00:00VUzä%tEXtdate:modify2020-10-08T22:35:36+00:00x”=IEND®B`‚MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/PACKAGE_ICON_256.PNG000077500000000000000000000573001516543156300263700ustar00rootroot00000000000000‰PNG  IHDR\r¨fsRGB®ÎégAMA±� üa pHYsÃÃÇo¨d^UIDATx^í� œeEuÿ뽞pÀdqIŒŠìÓfÓ‚ÙM$&—¨I‰‰‘l®1«cðQQ0n$vœwã4@dg†féî÷îÿT�s«Î©ªóî}Ýïu¿×ÓßÏÌ­s~§îïÖÝêÞ×ÝÓÓ0K 5´ê˜µ¦a6¦Øé!Ï2G­?}ÕØ†¢aÖEñ8ÁkA?Șb9´ËÛÆŒ7L1f×5.\ã(¦`±þî3¦½·0�‡‹Â<ý¿nØÕºÿjsÛýÐÿès'¬yçŸî¾ýA»æÃÉÒ0l>ð¸Õí™â¸A��_ìé£kŸ7åÑ� 7éjº“ º¡Ã‚(ot¦ÁÝí¶DHq�ÔC&;!¸Â[¯�zø®›yø{ gdzæ{ÍÜõ¨ë±ÄÀ²4 ›Ç�_]Œ¶O˜[wÒ¦ñuÏéipsŠUºý\“¹¡¹B77Â{’Ž�Ê ‘Ó©À˜/±Éèçq7´_¾vfÇ—®›zø¦æôömoŸÙ±4) KÀ³yõñ�3�âô WÿŒ¢Ù>î›'ƒ¼ «ÊÍÕáÉí²° 2“E·t�ÔC‘O2Þ¥â¡ÏÀâ3¦qãŸí¾í–fa®ý“½w܆µ%‚¥ `ž™_·jrlý³.\}ìóM£ù<�Žõ7Œ[ˆ†Ý>a'Êd_¿ìÊÃõ§zc¾Ä¦ÊÃéÔ†¦øN³Ù¾ê�½ó‹×Mï¸úú™G–Þæ‘¥ `رyÕñ�Û´|í/NŽox9¤O‚¿Ê±f7@4°ƒ5n:·�zÈ(ÂN©î�êŒù›*K¤S®�îpVøÖuÓÛ/½¾µãßÞ±ç‡KúÀÒÐC6¯}ÊúMÅ�¯˜_ÿ*8²O%¹º1¢7^:è®@d—……où’×…îÈyX¢m²:_"¤°>HÎÃ’Û¬cª&‚ݸ{×¥oŸ¹ó—˜#KÀ™=¸9¹ü1/¸pâ¸ß„ÃùB�è xu`7@4„Œ"ªó%”J\$:µ¹7^b“ó°€îÓ2À–/±É莜‡¥Üf1õÏÂǃ\ÓÞñÅ›¦vµ�¼Ä¬Xšf ¼â±iùºß€§ýù�‚j7°K?ºqã¥ú„LöwYXø–/y]莜‡%Ú&«ó%B ëƒä<,¹ýÁ:f¡*ß(î¹næ‘¿¿¶õè?\¼çÎ¥¯Ì‚¥  K6OwÚ…÷S4^iôżn`7@4„Œ"ªó%”J\$:µ¹7^b“ó°€îÓ2À–/±É莜‡…mÓwÀ––Ó S|ü{ï~ÿŸí½û'-Q‹¥  “ck›Žmø™ÉŽÿHOCu.°‹7ºqã¥ú„LöwYXø–/y]莜‡%Ú&«ó%B ëƒä<,¹ýÁ:f¡*ßÈyEqíM{ï~ÏEÅ#—/}<¨fièÀäØºeðÙþœÉñ o†ôhT{»x£ ¹¨©Î—)®‘zÈ(¢>‰NmÎ#^b£ÜtV÷i`ë—Q�/‘œ‡…mÓwÀ–/ˆñ��o½~fן¾sï�>r}ëûHKdXš2LŽ®ƒ×üóáóýBzª½‚]¶áŠ˜NKô ™ìï²°ð-_òºÐ9K¹MÒX]èRX$·O"oÖ³:_úRä]â�¯wÁpÑÅ{~ô¡ë[�N“¼±40&—m¹ð€cΟ\¾a3¤=¾ñKØÅMñÅ[Ö½T\#õ�QD}0“}Ý’êÞ“têz…ÈéT`ì—¾éžÒÃéÔÙ+~‰`ŸœNÙo˜~dó;¦xÉ�Ó{Z(-±4[&N?srbýÛ!ü Tú»<Ã0½¼\-Ð'd²¿Ëª<°SKÝQzøÁn:ßp…t)¬�Û'‘·ëY�/})ò.ñÇŠiB�¥ Šâk[÷Ýó–NÝó9'ïçì÷Àæ‰ãžráÄñï�p*ý„]¼ÑÍë/Òª'z©¸Fê!£ˆú`&ûº%Õ¼'éÔ'ô ‘Ó©ÀØ/}©ÊÃéÔÙ+~‰Ty¡`ûŸçÔý\¼ïî[IÜ/Ùo'€É±õoyÌéfšæ\H›¨ö¼Ý2¾)*ûP§Tw�yÄKêTf@ˆ¼DÙŸ4Vºúú4Ò)r:냡ìK0öTyXXfLãŠ~¼§—Íÿ¢}ÿûG7´v=Dâ~ŵû “«۸䀟ú�Í«�ÿÜö'‚4o“ ¿ SäEÈ\¼£ŒÄÈø%FüÆ�h:"=ûtÞÌ# cÍCÓWi7'¼|ô _;edÕö{f¦¿r»±¿iÿa¿š6Oÿd¸ù/?jdÕoÀmoEÖ<Á.EõiD��èéà+Ïñ†&�€ŒÅn0™ˆü|*uÍ#ÕuOÕñFVllŽ�ùsc=¿ÑhÝxCk÷~óo ö‹ `rlÝø%>ý�Î[yä‡!= Õù%½ð” ¶Cì2.©¤{„Fê<㤺\/Å>�ƒ7óȵdHuŃM�F±ñ”‘‰_�·�Ñ;ÛÓ7ÞYL/úï,ú¯l™8îé“«�ÿìéIšgðsKý³(k2:µXU¡—}±S™!òzXø–/y]èðði¤Sät— Â—ÖszÈ| ·?XÇ,T…Ru¼-Ð'Õ�ößÛöÞ÷ªOß÷e%‹ö `r|ý²KÖ<ý¢ÉUG]7ÿ,þ±Nïp—»ædR'¦LJŽTÒ<(v�\Kd,‘½,\é³”W8©®yDz ï‘ꚇ¢#[¶êÕ§4W.»«˜¾þŽbzQþXñ¢œ6tüÑ—L<ýÊ£FW½Òyø ¿†~�%— ‰®zdbÙ$¤zÆÃ¡Å�¥&ŽTîàçS¹–Ì©Î%Žšz ©.<šG4Ç6ýÂèšç�Θ«¯+v?L•Eâû°eíi¯žßð.'PYHèõ2,|Ë—º`b—…‘yuíàá–®‘zÈ òIƛڜ‡XúRÎÃ:ëÃ[¿Œê|éƒ�1bŸù�`Ë—ª':Ä> ŠGnh=zÁÙ{þïŸIX,š ^ù'¶¬?ýoMÛØ§þÀ.-y!… ¬Œ°SªS‹åPzÙ;•"¯‡…où’×…îŸF:ENw *|‰`=§‡ÌwrûƒuÌBU(UÇÛ}ØS´ãÝ,>rö®Û_sc{ÏN'9‹â#¼òsÉOÿ8CÏ&i Ð.$¤NL™”(iëeb×p=ÊX‚!¯ÖŒYÊ+Ô£õ<ûTéûD ®¬ÇcqN$ZuXæ)¿8zàY£­ÆÂG‚¡ÿ_‘†þ `ËÚÓ_OÿK €Wþ¹À‚_R™§v¢LöõKíiTöÇNe„ÈéT`Ì—ØdtGéa‰tjCÃÒãŒ=lÜÙc%5úƒ±‡)UÇÛ}ØS"�x隢ØqCûÑófï�—£8œ í€ý]|·ô´?=j|ý»!Gupp—JæBB´X‚. ¤yh±DTX‚¡æ¡ÅK£ŠuÍC‹ +Ò5û›?¥³ù5Ìò�ͱŸ?edÅø�3­-wšimõ�f(ß&ÇÖMlY·éRÏDe�`—KÕÓ;Q&ûúeW–¨?Õó%6U–H§64\!ÝQåd÷SjôcO•‡…éÐ3Ù×/«<°“Ô s%¼ ¼âÆöî]$ ø-²Ù7ÿapó_ áÞü^#á!…�1Ï8èá º_ Â»$é¤û"o–=A÷ (ã1«{t?�¿ùSæäÝ0/ùäòî=ydEŸ~‡Dÿª7€-gir|Ýe0)Ž’44¨çßQë"À,c”‘¿Äh–7F䀨§sðfkšŽ°jŸþˆîÈx“�è%Ecô”Æø'.o¸@¿­Y° `rlý¡“«Ç?7ÿ’†vJçøôG¤G€¯<ǃ<2Œ§¿îá™õÓ_÷È8õ@œ.Š�¤“ŒYvà ck>sRcù¡”Ï; 2ÀÍ¿z˺Óáæ7G¢2\ðÓ‰è'; c—q‰H%Ý#4Rç'Õåz�(öé¼™G@®%³@ª+êÍ�ó@½æÁI<ˆT'Å5¾zÔÇÇ6|&�U”Ï+ó>L®xLc˺Óì/óx**Ã;¥ÑcSf ‰.”ŠX6 ©®ydt"Ú O*kûT®%³@ªk,®:ÞDªkZœó@œ.Š�¤“X!ʈ†yúeãë/}†Y9ïß›÷ï\²æµlÕ¯R:t$çW=ÙZL™”©¤yPì¹–ÈX"{Y¸Ò!f)¯pR]óˆôÞ%"Õ5ER$Ñ«&×ȵdHuÍ£ŒÇÑl—µ½†„ya^'xòŸ59¾áýá¯"Ë�4Df ‰®zdbÙ$¤zÆÃ¡Å�¥&ŽTîàçS¹–Ì©Î%”§¿ ãᚌNÈ,Pê#§Ÿ42öåËZ»o%©ïÌÛ°ùÀãŽ>oùQŸ…p*ÃGr~ER'¦LJŽTÒ<(v�\Kd,‘½,\é³”W8©®yDz ï‘ꚇ¢©’è úô·¸¸±ÑŒ¾p¬½ïã×›Ö¼ü/Dóò5€ÉÑu«.\yü'!²¯ø—h'-Î]õÈIJIHõŒ‡C‹!KM©ÜÁϧr-™R�+JÜÕÓ¿Ž‡ÇYõ ×h}â,€:U]SôÛ£ë>ybc|¥Óú̼L[Öžö·Ð< ³áÏ ?�ÝÆ”IÉ�’¶^&v ×£Œ%òj͘¥¼ÂA=ZϱO•>¼KêÊz<Öf2@« ®ydb.É�ºæ‘Ñ3�ÆS.Yk?*÷�¾O[Öž~Ži6_IéÒáDQë!^­$e*¼V5-–h÷ Êuü æ)ÃËQS.Öˆ¹ D©uÍCÑKHÊT¨k|e®K´ êŠÇHã¼]Û÷_+Öׯl^û”Ç�7¾ñ î?îè<7ìäð¥Æôp¡%ÍC‹%¢Â 5-XU<¨kZÌY©�®y°ÎIg�Ô¿(v—ˆŒä@]z„Fê<ãp}ccÙsÇÛû>z½ií ©çôí `r|ò ÇŽ¶ßïà_äY…vš2°áU=晃„D'ºyúwöHAY÷ €wG ªc*=2ö—�(�Pü¢I;ñ !ÑÒ#ÀWîp¼©Í#=>^ó[cëÿõ³¬oê¾_ràÓ.!“ý]Vå��BXêŽÒÃ/ˆr›¤±ºÐ¤°>H4nŸDÞ¬gu¾ô¥È»Ä+¦ –¾é%s=Þê“è»,,ˆÌ¸;x¸¥k¤2ˆ|’ñ.×H=dùÄêÅUGMßÿ|fŜ޶LœôÂá¿ù~È9¨³jæbC(æ‘‘¨k=ƒVÉ]Hˆ}Ê/0Ig]zdÌ3NvUS&v8ÞѪžD'é�1Ï$$:Qy¼=Æ­9¿Æó.o¬|%³bÖÀäèÁÍɉCíå5ä°]lÉù !Ñ Ô¥G€¯ÜÅÅK .=2Ö.$E&"?ŸJ]óÈꊇ§êxšîˆ<]xkÅÈ# cmu¡'�t¿@äÍ’2|êÈÊ??ÉŒÍú>žõŠpŒý7þCýK>JÄAN�'$ c—eŒ2#ã—Íòƈ<ûtÞÌ# cÍCÓVíps×ö‚îÈx“�è%® =2Ö<ÒI»ž¼�?ùµÍå/'¡kf5LŽ®�_¿™Ò!†̪§ ‰.�¾òo òÈ8½�E&"?ŸJ]óHuÝÃSu¼‰T×=2N=§‹bÆ#é$cžq„^ákÉŒ%²—1'�Œm>ÑŒÌê§og5\8qüyÐ<³á&>˜R©»ŒKD*é¡‘:Ï8©.× D±OçàÍ<r-™R]ñPoè5'NâA¤:)®áU-޳@:i×ñ qØ¿ 9ñ*J»¢ë `rlýèäòõo¦tˆa3:2HHt¡TIJIHuÍ#£é…„¤²æ±OåZ2 ¤ºæÁâªãM¤ºæ¡Å9Ä题ñH:‰¢, ôŽZe,‘½, ÀŸ“š#ožÍ[@×À…«Ž±¿§lñ<ýÅåI�˜2)9RIó Ø5r-‘±Dö²p¥CÌR^᤺æé%¼KDªkФH¢WM®‘kÉ,�ꚇÇY �´ëøÉ•0k<þw›]- « >÷7'—oX\OÿìÁd��èªG&–MBªg<Z YjâHå~>•kÉ,�ê\Qâh ©’ꚇç<�TÏx¸&£2 ½£‡GKd/ (^,Ì3#oø‰.¶§« à±ÿÓhCéP㎛8¢<©S&%G*i»F®%2–È^®tˆYÊ+œT×<"½„w‰HuÍCÑ�ÔIôª Â5r-™R]óÐâ8 ¤“väáÓHgð¬Ñ0Ožl¬èꃺ{˜8ôõ1õ¦ƒ„DW=2±lR=ãáÐbÈRG*wðó©\Kf�TçŠGM=ÔëxhqœP¯ðp�Ö'ΨSÕ5¼g�8ΨGëù4è¯Yñ{Ö¢ö°y⸡±‡w¸j]HZL™”(iëeb×p=ÊX‚!¯ÖŒYÊ+Ô£õ<ûTéûD ®¬Çcm&´ êšG&æ‘‘¨k=ƒVÁajû”ë¥ò¼ßi®€Oõ¨=\8qÜïP8Ätq0IÀ†WëÄI™Š£ò"ðh¥G Êuü æ)ÃËQS.Öˆ¹ D©uÍCÑKHÊT¨k|e®K´ ꚇK´ ꑇO#> \ÐXYûM½Ö 6¯9æ� W=éÿ ìù/%œ_ÊïÙ³ƒ¶n�1×›b™ýJr0ÅÒa×ݳÏwÝoÌÃ��h)¿¯õµ ["¤¸Fê!ƒÈ'ïRqMF/—¾y{@w©ÔÄÒ—"½ BÆtˆ}_/{Å/•”Þ�ƒÖ˜‘�‡šÆŠåîŠ.õ)\šž6­ÿ»Ë´î�*º†�ÛC Õ™qSŸDw€NõÆ~éKU–HÇvê¯fvñ>3s¯K;Pkزö´?˜ßГ¼pСq X®YeÌÅ¿a/> ÞƒºúRÅ׿oÚþœ)þí*S´Úe�5U'Pjñ›*K¤S®�î¨òB òv@Œ0öTyX˜}0“}ý2ò0##fü•g›åç¼Ô,{ÆSLcç°h·Í¾Ë?ov\ð¦Ø“9nˆ¶j‘Û¤r¹ ¢q³ºÐÐ×§‘N‘ÓY e_úƒ±GzlmM¿õåÅ®?%A¥r˜\¶adËúSo3�ÆF’†:@å¸ì"Ó8¥7ÿ”¡øòwÍÌùo7澇Hh;|‰”ãð ¢Ë‹À.]#õ�Aä“H÷€îR©‰¥/)`�Õ}XzÙ+~é¨ôèxZš‡¬3—¾ÛŒ>£öGÝŽì»úFóð‹Ï¥M³q{H¡z 3nê“èЩÀØ/}©ÊÃéÔRpû+[»£™.ŸLY*§ÍÉkí?ù]7ÉIOìÙÍoi<íX³ìSï4æ±ëP �‰mr\�WõXó`÷C†šÞЇ—³uÝ/ÀÆyDi„âÇÚd¶ãæ,ÈÓŸÚ“›ÍŽ÷°:l^uœýCü“ìЈ3 ²Þ‚“@ù5�êåp‰6V-Ž2–È^P¼È«Zgˆ©®y(1„¼Âq:,Ükÿ<Üü>"ŠËÁ0DÆÙË•1Ky…“êšG¤›ÆÉ¯5cêMÔ `ÓŠµ?MWÿ²hÐà‡b!p“À�on0ñÉ)‘#ÕÆ]ùô÷i¤3dHWÕ<´XYˆR4�77>v_ûóàhªÇªÇ�ÉÔƒrˆ}Êõ8  î«ÍË~žâu˜;ø¥!ìÐ,ÀÓŸƒoå×$âD¹F«ÇYõh=ŸFº‡ÇqF€ˆº¶^�8ÎVw7ÿ¼>ù-™±f)$–`È«ub€¥QŃºæ±O¹€ @½—³ÀæÕÇÙ/µž€Ùp’?ºÞOì$0ö)˜¥Ÿè0 uÜ®À«QìS®K´ ꚇK²«˜2±âéï^û?;ß7JåñöðXÒÛ§¿ÄËQS.ºø™¿cÆuiDvØ4¾îlh†ôõŸíü?ý9n¸â¯ü›Ž†Æäm¬<–hÔ#ŸFºB¶âm4-–h•Ƈš5Ÿÿç¾ùkŽ›%òªóŒ'Bg .=2Îz€šÏ0ÅY¤²Àäø†¡þÞö@¨kÕþƒoök“"QÇí ¼Å>­ø¡š ¨K�€ŒyÆÉ® `ÊÄOÿ¦½ùÿýƒ þä·tóôçG{ú#5½/gëy¿›ãgR(H&€ÍãëVAó,̆ ¶óÑÅ–=V @9 4Ê�n`r¬�A–ÈϧR×<²ºâá©y¼szó°CÌqó×wÒ‰ z¬y=A÷ (ã‘éÏz¦YI±'}]ÿlXŽc2|d„§su¾À�mÛ@ýqG±O»¼¡=Ò# cÍCÓV�&ˆ’æ�5|þCñäw¸¡åÇÇ<㤓v=¿x'ˆ—Óè¯8ÁŒLº”‘L®~Òó(2Ø×|-$n¸ü/Å$Ÿ´Ê‹ ‹ô©Ô5�T×=<5�w¬»›@^û-µÆí®Ô‰£Œ%²—/òªÇb¬_ÐIîíô  Ù~.ECGz ¸Ââ´ã‚€þÒ1 X”qDZO»¼¡=Ò# ×’Y Õ�h‚°ØÏüƒtó;ÜД}qœÒI»ŽŸ\)± ¼ž@uÜ0#ɽ-&€ÍÇͱ˜ l‡£3 3À ‰º`¸Iàoòçê?ý¹Å>•kÉ,�êš‹«Ž7Áuwó_ùƒuó+ˆýq WêÄQÆÙËŠyU‹ãŒ1Õ�òÄךqq¡Åo›àïP~ûÏížØkžhñ`Ð|Ü¡ð&P~M Î¸!f)¯pR]óˆôÞ%"Õ5©ã“ÿŸÌÈãñWL(û â8 òÓßYÃ4 {�{ÄpáÇ�NáÑq‡%‰084ÝÇœæéïQâ.Ÿþþæ‚'¿Eì�K¸R'Ž2–È^P¼È«Zgˆ©”×6ÆÅ=.ßÚ�S(*ÜæI‹®„›>ùWÕo,Õö%Õ5�H/á]"R]ó±û‚ß@¿ö+ûí­Ì•OŸF:CfÔaé;ðžuâ�5ж¸Çý°yüÇWà Â�ýÿÕ;ì!!ÑŒæQ‡šñOËoZÒqs%Š}*×’Y Õ¹¢Ä]<ýûµ?îí•køÖ‰ã,€z´žO#]![ñ6š‡‹ŸüF3bÖÇÞFGŸËL†·Kâb¬6öi9þéwÁ$`¿&íKµ=B=ZϱO•>¼KêÊz<¦s‚7ÿ?Ík¿Ü‰VÁ]åÕ(ö)×%ZuÍC‹%ѪËö˜æÓ\ø `Óòõö·"5v¸„lôõ 7 \n?’w‡˜§ /GuL¹X#æ2¥û³ýÃòÕ~îí•køj±D« yø4Ò²o£y„ø™Æø{ÝO“cëŸJáÐàvi‘=ý9øq |Ønh{„º¶ïZÌY©�®y°Ήò?®?¿Ã¯?tóóH7O^átÖ¥G@Æ<ãäV}¦õ÷zøPC4h»›©�€�¾Þ bß–óI@샌Å\ÈðrTÇTzdì3.Qê°7ÿÄP½öÇÐ^¹†ï¡Œ+�w–ÈϧR×<²ºâቒEÃÈ `óØñ+M£q´S†·KÑŽ¢¦hXq“Àåö ƒ8 tÞŸ9³ºG÷+±¿Ìcb_ûí>hû>ëcâÓ9x3�€Œ5�T/•â o4Íå6Â7€±Âþôß�|°‹‚¶ÖpÐ<ê0³üŠw«oÝ>ýé�±æ¥áÉ?T¯ý1´W®á{(ãúOÝ#¤Rç'ÕuO4PÌö �î'~qhþ¿" szúçÕAǽ \ñ6 X`_üîÈ}ȘgS]÷`ìnþÏ ïkºïHªw>Ä,åNªk‘Î�Y ÕwÏ» à±ã†dèbv¬5A vXa'�ÃÂ�tW“4êÄʪO›‡B7ö·N ´W®á{(w¾Oÿ8 ¤ºæÁâìÓyƒig[|†ÏÿÚŽiqœ-Ü$ð™÷㛀ßÉ9S]ó�±ýh2ñYû¯ú†ýæ'ØîÍö˜ð”W8©®yDz ï‘ê©Ç^Ó|‚mq(Ì�»vÀ©½Ã‹ôéÏÁ7�÷F~OÓ¨+«ejo~ü!ŸEró{:“èX”¤²æ±OåZ2 ¤:W”¸ÃÓßÑh<Þ6å×\2¸h;¦Å™&4}q“À•ïº>& ¦ºæâæá»›¿yøcIY°]�Í1q1Ky…“êšG¤—ð.©®y8l^uœýÏ'l2ÈÔÞ᪠B3Rì$°òßÿF¼ ø]L N¬¬ ØÔ=ù¿pÉâºù=ŽIt,JPÖÖ‹bŸr=Ψój�¸êé�x�]Ó„w€ÿÚŽi±ºÃª>ì¸IàÊ÷›Æ‘ü†¬qL@D�W;ÇøÚÿ‹ïæg»Šaçã€ð`iTñ ®y@ìS®3x—ÔyU‰é>j›öö#ÀÀÓ–ïõtÇ�Lì®/ÊIå8ì£ßM¾¿Z,É® 4·¿½w‘½ö :¥„2/vˆyÊðrTÇ”‹5b.QêA½±± чïßm·ªvX_o1`¿·ê³ oò”f÷Äô˜èqxíÏÑq±ÐÍ1áO„Î@]zdœõ1«¨K�‹á> YñØæ¦UëãßH9PðÝà .w,�‰¹´ˆq“À•C“€~L´ÃáuÖÁ}«Ï=ùóÍßá˜h/êqç7 [×ýlÜ‘G”FfÒ˜ƒ›“#ëåo£Øð£›;Ù1´F]«.>Ü$ðœ²{íE^e1;ÞûÇÍÏQŽIóŒ'BOÐýÊDbV÷è~8¯¼òd³lCÔò¬8æ¼Ã»,1J„E‡›>õ>wg�I†X·ë®þôßîG7Júä–Ç2 ÇõŸþºG@ÆÙU�(RX{L�ƒ\6P°ÁÎñé�H�ý{Û�8 X`ßýî+Ç„Ž7>ùÿÁŒøu÷”c"â(c‰ìeÅ‹¼ªÅqF€˜êš‡CÈ+–Üûö‹€R>PăUw¬Cì2.퇸7�+?à'ípp½¼ù÷ç'¿eîOÿ8 x= €:±²*¥@Þ¢›0 @ù€À�™$$ºPÒ8íß{¦/þ�iÿàNÊ7 \nb°¼¡•ãÇÛö¤×þ™[o3»þä=”ÍÊñDƵP¼È«Zgˆ©®y(1„¼RÒ0Åû5€ä ]hÜ`ňyR'¦LJŽŒÔZ—o1û~úu¦ý?ÿGÊÂbŸê«?OõÌ+}yLÜ“ÿ ˜×þ™ïýÀ<ü‚_2{?þï¤Ì‹ýéo)Lc¥ýÀM�AB¢«iϾsßCfßÙ¿78“€}ºžîþÇdÐ^ûÝÍÿÂsLûÞûçùÌé׌ÈX’Ž/òªÇbªkJ !¯pƬ¸77X1bžÔ‰)“’##õ�ÂM¿kÚßœ�«?ówþF·Ç¤¹Ñþ{þ¿¨×þ…¹ù‘ʧ¿O#�!³ê°ôxÏ:±²*€)ÅŽD�÷°Œ’Fl2tÒ]Ò<´¸Ÿ„oÿ ä$ð¹0cç¿ÔŒÃ߉ÏþÓ@Þü�ù;g¹Mm¨Gëù4Ò²o£yh±D¯8Faœßè«ÎZubʤä@)Sè;´å{0û~ú‚Áù8°ñ±få_¿Õýµoƒ@ù™¿ý£û\¾ gËm”o9Š}Êu‰VA]óÐbIvUS&V?ý-#2¨L+$`ëuâ…ž ì={p¾08H„Ïü@¶çOߎVA=«O#]![ñ6š‡ŒyÆÑtÆ2; n°]?ý%èáBJ¬ [ô íIâ&�—ÂÇ�¥IÀãnþ¿Šn~dNQB7O^átÖ¥G@Æ<ãdWõ0±ÞÓßa'€† …>À¤B6¼ªÇì=ëw–&Ÿüçú×~yn(ž‡Ó¥m¢ó¦£±úTêšGVW<<ÑÍ�õ4=bf&lͧ¿¶cèá šß|�÷&p–ýšÀí$îø›_|ÁoaÎn”o9Š}:Û›Nzd¬y¤ºâÑÅÓê-˜ŠiÊ€.vXÚNʸ³G¿Ém,L{~Æ~Øÿ&wóŸy^‡¯öSìšÜ±ì?éV3ãs@ìS©óŒ“꺇GÜܲGÓSÓ04öP¶pôüéŸñH;ÍѸYbCûq`Ï~ö&ànþÁ“ÿîòµ?�ž¡…9gˆYª�&Õ5�HgÈ,�êŠGWOÇnû`7ÆóM³cÍ ‚“xšÞꌕÞö“IÀÞüÛíÍßñ«ýsižI7Ýa¬>•kÉ,�êš‹{þôw,Ô í˜ë;ætQÌx¤�æ mhñhŠû„I൦ýý;HY|Øò±7ËÞü™Ó‘J™N}‡ob–j£IuÍ#ÒKx—ˆT×<½#Åû5€”Í+Ú}hŸþœzãnßû�Ù}æo-Ê7÷ä?£ü>¿¥â˜Èf^I·™ŸbŸÊµdHu®(qžþ@c»ý}Û)›'´Ób}Çœ.Š�¤“X¡¯ˆ-±$($Ú7�Ý?ýÛ‹jÀ×~û}~úÙþôä�ɼ÷ 1KµÑ¤ºæé%¼KDªkŠ^ôÜÑ4�Æ 9"Q¹Þì$°>àk?Þüí8P,€÷é/¸%¾½±O¹gÔyµFÜÕÓ_«jÛ_"¿ ÛW´Óâ8 ¤zÆÃ5}ÁDcòiÐÝ›À™¯1­!~ˆ_ûÝÞñ]'Pâ-î'ÑvXª�u^�bŸr�Á»D Î«JMÝѸ¿yõ#wßKÙ¼  umÇ2±k¸gÔyUëÙ;ü6ý¦ômj•¶û8ð[C9 „×þ_íç�¤“~‚ÛÔÆÅSì´,? ¶/¤ƒUv¬Cì2.©¤{ðf~èf"ŠÆêÓH·K÷qà7Më{ ? Ø›‡íOÇŠð8Ω®õì'swubeU JÝ£`ÍïÛ'€“Þý;%C'!Ñ…RË&!èZ�^·Å>•ã�Y Õab¹÷A³k�'�òæw?ÛŸÁ�[ ž''�Ä iyH7ŠyU‹ãŒ1Õ5%†�WfKƒú8L­ìÓ@ƒ#æI�˜2)9RIó Ø5éZýBÛRªsbŸFz u±v�ýš™ÜÍ/^û3cu ×ã,�êÜc¾à“Ö†áõ4êÄʪ@”ºG·¬0í[më&€·MÝòmÛö}°ÉÐIHwIóÈIJIÐôþ�Õ§rDÚøR�+ð&ð£ûáMà7æup7ÿ‹Ïw¯ý³wh2:2©÷“tK x‘Wµ8ÎS]óPbye.\lÚîž/¿Ї €+FÌ“:1eRr¤’æA±kÒµæ›tÑX}é%¼ áÞ^òëó2 àk?Üü÷tÿ›|âq—¤ºîÑ?øvä6µ Kß�÷¬+«˜21úz`ÀTã»°ìáïÔ› �„t—4�L,›Mï?ÑX}*G¤�/Õ¹"c; ì´“À÷û÷‹F[·Þ†7ÿ}øÚßyÜúXC£õ‰³ù·�ɧ‘®�­xÍC‹%z¥kfV˜â{6pÀæ}ßÞöÿcã^á«ÎZubʤä@I[/»†ë Ž 3>Ä>Uúð.V/àÆÜù¢_éË›€}òo?ãUxóW�×Ì 3’uÍC[kþÐF€:,}ÞS‹%ÙUL™Øã§?8|ïÏM{Ÿ�Ë�–¯P;Gô&°áÕ:1AR¦âÀcWáÑ¢m*›õrTÇ”‹5bíwv¾ä×z: ø×~wó£ÆGÀA�W3±k¸.Ñ+ý·É· ±O#]![ñ6š‡ŒyÆÑôÙÐ0ÅW) ÀÕ­¾Fáœqƒíúé/A PÒ<´xá™ó¸AV*¤‡jq/¼ ¼äWá•}îÿ€Èzð×~9 »ŒKDFr .=B£­5h#@–¾ï)cžq²«z˜Øã§¿åFÓJ'€kvß¿�Â9 0©�€ ¯ê1Ï$$:¡=ýµþýÆ­lÐËQ=¥ûŒË@Þy±ý8ð¿¤t�xí·Ð6¢MEÈñøÊ5nŒFáÂGÔå¸Otsg=MŸ-_6Æßëá#À¾Õ ›Lf�lͧ¿¶cèá º_`/°9ŒĬîÉûÙ7�Gì›À,&�–{í5Üü]ül?—ˆŒÄÈø%Fú¹ì'�· UßAŽ5ÐÍ5¨xôáé>Ó+MÛÞë?lžºùQh¾…Ùlèb‡… í¤Œ5�D/qé1ÿÀ¸•Íz9[ׯ-cÍCô²o]~°_íßînþòµ ÓhS€Øµ–LìšÙÞólÓo–o¿Ëq+žèÂ�Y@ÓgOã››Âÿ_ ü‹€6»�¢ÙÓó§Æ#é$cžq‚®õè1~3r|gGbªë�Ûÿ|ä‘3Î7Ó×ÝLŠÎÔµ[ÍöçŸK7�íP&%G*i»F®%³ù!Ý&W öi¤3dHuÅ£/OëÔ÷¸˜Þ¶ýÛ×RØ%]ÌŽ5'NâA¤:)®áU-î'5ŽIubeU JTÚ÷?d9óWÌÎ_ù}3}ý-¦˜ Ÿöl<}ýÍæ‘_~#ôùeÓ~à!ªdªy#±lR=ãÑw`;~Sr›ÚR]ó`ñ‚=ý�yŸi_C¡C¾4vèr»ÚŽi±¾§‹bÆ#é$Vˆ²€¦÷m¬5Æ bªkJ ¡ÏàüL}ì³æx½èð“ÌC?ñ"óÐS^d<ìD³ã…çCíß]êL­E‹)“’#•4Š]#×’Ùü�n“+û4ÒKx—ˆT×<}î Ó¾Žb‡˜6ïüö=ÐtýcÁÚ½Ö!×J<ˆT'Å5¼š‰¹Ô'´Mx= €:±²*¥€æñ}Û�ð÷—$$$zìçÉIJIHõŒGß�íøMÉmj#Hu®(±¸rˆ¦Ï�â›ï5…øuMò ÀÒl]EQ ´Óâ8 8]3I'±B”„®uê ÚXå ²C1Õ5%†�W8NEžÔ‰)“’#•4Š]#×’Ùü�n“+û4ÒKx—ˆT×<½ì3Ero'ÀÛv|ï?(¬…6ÄD¯š \#×’Y Õ5-^üÒ¨+«Q ‚æ¡Å9Ñ04�L,›Ô3ë9*Vî%~rcÚ¦QçÕqWO­:{þÞ´«'€«§î¿šÿe¸¶cZ¬ïRªg<\“Ñ ™P§ªk´žý„oSn?;Q×Ö«ÇYÀé]O<¦LJ”´õ21—!eêý#3>Ä>UÄ»D Î«JM=f÷¶èó¿%�ö=ð(Œd ¥ц‹º¶c™Ø5\�³ê¼J±k2ú‚!·�,½ÌëZ,É® `ÊÄš2'©�€�æ¡ÅI™Š‡©yhqÈmÁkQS.Öˆ¹ D©u­:{Àñ?·™"ùŸÀÓ¯W·¼’B6@õb“hÔ5Š]Ãu‰VA½žGÿз™­€ˆ:¯Ö‰%ZÅéµ&Í¡ôp¡%ÍC‹%¢¢wë3ú¸³CQ*êÒ#Àb8'šG/¸Þ´>C¡ ;\³÷>;´1Ë£ u¹c�LÌ%"#9P×<2z½Ò?p›°ôç£�1Ï8ÙUL™ØáxG«z�l¤G@ÆAaœwb—eŒ2#ã—Õ¹À´ý¶ç7É·-cmTšŽ°j‡›»¶·t¿@Æ›„D/qé�±êÑGü6Ó¨gW¢Ðýéà+wqñ ¤G óZ½DÛRªƒâE^eñ¬ŸþºG@Æ©âtQÌx$�dÌ3ŽÐ�ùBŽ•“ ˆ©®y(1„¼ÒÚÛLÑý°yç·o‡‘ÝH©'¬²cb—q‰H%Ý#4RçGÓûlÙo\Ž•£�/ÕõæÎy ‰^s‚à$Dª“â^ÕbžI½Ÿø-¥P'VV¢Ð=zÜ׽ǴÕÿþO�,Wï{ðR 6@q¡d†NBºK\©ˆe“�êšGFŸ´-¥:(^äUWo"Õ5-Îy NÅŒGÒI¬e¡Wxô}›Ù€˜êš‡CÈ+ýàÓb÷pJÇ àš]�~ ÿƒân°bÄ<©S&%G*i»F®%2–È^ó lÙoœ�BŽW8©®y(:�z ‰^5A¸F®%³@ªkZgóƒßfubeU JÝ£‡ìù†i_Fq–ŽÀæ©›„±]Ñi°ÉÐIHwIóÈIJIHõŒ‡#SÓõ�b¯û¥«‚Y�{Pžþ‚Œ‡k2:!³€Ð�bß”kûI±¯<_r¤2#@Lu®Ôˆ!ä•>ñ©‹Mñ0ÅY:N–·íúö‡lë+FÌ“:1eRr¤’æA±käZ"c‰ìe�OEßêëÿ…jŠ·›âîûØÆù(äàÒñ!©®y(:�z ‰>àOÿÖï6­;^Çsfêëß„%lÙo\Ÿ+«˜2±Ã9ë%ï53îÞíDåpõÞ‡¾ ý>)9Ødè$¤»Ä•ŠX6 ©žñph1\P7~Í´®ö¿­çì½øƒ°ùÿ¬ÌjÜ]=ýëxhqœP¯ðp�Ö'ΨSÕ5¼'‹gfÌÎwü5%½gÏU[ÌÞën¢,ÀGãue¬j,Ñ+½üÿ>ÿWþþjUno?Zl[·ú¨‘•Ï& ¨³Ãr]&%JÚz™Ø5\�2–`È«CÓúÂ�¦qäcMó GÚ_„‚ú)ví6ûþäïÌô>Ê6›Ù¾B^á ®¬Çãh‚àhÔ5�LÌ%"#9P×<2z­²oÛWM±{¯{æÓLclŒÔ¹Q´Ûf÷Ç?mîõoÁG¶½lãÚXkŒ;ê‚)çéé¿Í´/~oæÿÄÔºò7¯yÂ!´ò‰öÿœ¢#Ï¿ÝF‘kJ�ïS2;Ï—Ô©Ì€9�êŒù›Œî(=,4Öd‡®³¿*%àJ|m¿1þÁ¸žøíïß�Ÿý£ýLúÚÿ`ìaJÖÃÂtèÃÖ ˜yÄKêTf@ˆ¼^Ó#^"¥‡_ѸY]èR¨OcÅr³ìèǛƲ&ë‘Oøþ”`uª‚aë‡?4­û:•làCUo»ô¥* Ó{ËÔ{ÌÔï7Ž”«Ô~ôµ9ûÃð¤<§4_:èBItˆ]Dæ`vðpK×H=dù$ã]*®ÉèåÒ—´ºK¥&–¾é%`2¦CìûzÙ+~é¨ôp ó.¡z¢—}ÂÈl“ú`&ûº%ÕU–¨?Õû¥/UyX"�Ú {Å/‘* t˜w Õ½ç4>|ŒÙû*J:Rù5€’·íúî{(L‡NBºczÌ3 ‰Nh"ãÎ)(ë~~H¼Õ1•ûŒË@”F(~Ù‹‘AB¢ ¤G€¯ÜáxS›Gzd\y¼³D~>•ºæ‘ÕOÕñ&4½‡ï1Ó隸’®>üÂ[À °ÆÉ¸rçCÆw‘ô° ÊþL£˜èeß° ¢mú$ã]*®‘zÈ òI¤{@w©ÔÄÒ—�ªce—^öŠ_:*=:žó.¡z¢—}ÂÈl“ú`&ûº%ÕU–¨?Õû¥/UyX"�Ú {Å/‘*ÀwÀ–/TOô#ºîX3u:¥•Ô~°\³ë»ïL†.žè±æ‘è%® =2Ö< ÌQÓ[ñðr¶®ûø…D-¥ŠŸh7Ç[®ÈÄ®ép¼© èWo�îR©óŒ“꺇'¨ÌšÞK¾eZ擄]MoÛµãJØ�ÿ–»Rq0EQ®šŒî¨y¢*<2æO„îÅ‹¼ªÇ<ó€˜êºG€Åp±¥ˆÓEQñPcʤäH%̓b×ȵdHu®tˆYÊ+œT×<"�!³@ª+Ñ„ÜG¾ùǦõYŠkÑÕpµùQqÍÞ £î˜¾ÃÚî§:)®áU-޳@ú$©ã'WJ,¯§P'VV¢Ð<´8ãAB¢«™X6 ©®ydt"=gH*kûT®%³@ªk,Ž*³€¦÷’›ÌÌ;¿Þ妺š,íüÎ¥°‰[)í¼Ã¢ÈŠ“Nb…( ½£‡GKd/ (^äU-Ž3ÄT×<”B^á8]yR'¦LJŽTÒ<(v�\Kd,‘½,\é³”W8©®yDz ï‘ꚇ¢÷x/üîûL룔֦ë àꙇZ×ì½ïíKO¦§P'VV¢Ð<´8ãAB¢«™X6 ©žñph1d©‰#•;øùT®%³@ªsE‰èéÿ%Óúã[*~�_Ž®'ËE{¾gßþ§ã‹"O(N:‰¢, ôŽZe,‘½, x‘Wµ8ÎS]óPby…ãtQäI�˜2)9RIó Ø5r-‘±Dö²p¥CÌR^᤺æé%¼KDªkŠÞsŠïü�iý%]1« àê}Í\3ýÐb–ÙI×ÈÖv?Õ5-޳@åÓß§‘Î�Y ]UóÐbeU JAÐ<´8ç!†æ‘‰e“€zf=G�2™zP®ã±O¹gÔyµFÜÕÓ_«ö†›Më�¶#ÿñIMf5X.zèöß³@º«\¡Ø5��Yuªº†÷¬ÇYõh=ŸFº‡ÇqF€ˆº¶^�8ÎNïz‚à1eRr ¤­—‰¹D‰%òj�`iTñ ®y@ìS®3x—ÔyU‰µ™¬ÇÀgÿ¯üµi©¿ò«ŠYOî;»îy¥í°käÎk‡u^¥Ø5=ƒVÁã¯y@ìS®K´ ꚇK²«˜2±ÖÍ-I*$`£yh1AR¦â¨<ÞÍ¡ôHA¹ŽÄ•ºæ‘꺇'º¹yÆIuÝ# ãÔqº(f<’N2æGè±–ÌX"{Y@ñ"¯jqœ ¦ºæ¡ÄòJ¿ØfŠ7ßlŠ]”ΉÞü.,bjËÿ£Ñ0ϱ‡!Šè‚åK„×H=dQŸD§6ç!–¾”ó°€ÎúðÖ/£:_"9 Û¦ï€-_:¨žèû,lÈìO¿¬ôÀE¢S‹«‡ª×Ù›œ‡tŸ–¶|‰MFwä<,l›¾¶|‰@Œ0öä<,¹ý�ÿ`Ü7Š/c¦Î dÎôä  äí{¿÷k0ÀG)è@È&!Õ¹ÂWÎè„8?ŒTÖ< ö©\Kf�TוkÉ,�ê\Qâh ©’ꚇç<�TÏx¸&£2 ½£‡GKd/ (^äU-Ž3ÄT×<”B^éà¿õfÚÿZ¾^ÑÓ7Ëíí=EÃ4¶�>ö˜WC þÊA+c×p=ÊX"{Y¸Ò!f)¯pR]óˆôÞ%"Õ5ER$Ñ«&×ȵdHuÍC‹ã,Í…@äáÓHgÈ,€:,}Þ³N¬¬ `ÊÄ笇L½Ï´^òIÓ®ü-¿ÝÒó ÀrÍôC÷ž>ú˜½G�¬t´Ã’êÚÁÔbÈRG*wðó©\Kf�TçŠGM=ÔëxhqœP¯ðp�Ö'ΨSÕ5¼g�8ΨGëù4Ò²o£yh±D¯ôxõÛÍ̧)í)=ÿPò'û¾ÿ—…)ØÿL’9˜®‘‡Od,Á�WkÆ,åêÑzˆ}ªôá]"PWÖã±6“ZuÍ#s‰ÈHÔ5�ŒžA«à05ˆ}Êu‰VA]óÐbIvUS&ªÇ»—W½ÏLÃÇêþЗ7Ëí3{LsêÁÿ:mÅáö÷“¯D5Pyxô«Ý3(×ñƒ˜§ /GuL¹X#æ2¥Ô5E/!)Sq ®yð•¹.Ñ*¨kZ,Ñ*¨G>�t…lÅÛh2æGÓ{x?ðA3}ÆÇŒÙIRÏéÛ`¹¦½wçäèA?8rdÅÏ“è‡LTX‚!¯Ö‰–Fꚇ3@V*¤k,†›»³G êŠ_»ŒKDFr .=B#užqT=ã€Ø§s8&Ì# cžq²«z˜X5!Ï�b›)^ùzÓº™ò¾ÐÓÒ˜ZÆ‹Fq>fpðÝñJ _bÃOTˆœîÓH§64\!ÝQåD'3©ÑŒ=U¦CÌd_¿¬òÀN©î =òˆ—Ô©Ì€y=,ˆ²?i¬.tôõi¤SätÖCÙ—þ`ì©ò°°þs=Þïaáý{CÛ´ÿñ83ý«”ö�¾} €óœÛ^‡ëy0%BO:qA�5¡'è~eÜ fu�îç’dÎÞ»,c”‘¿Ä¨ãöé¼™G@ÆšGª+ÑÑn>×´~›â¾Ò×�%w´öÌ4§Ö\uúŠ瘢±R=°Q¬Zqüjz+^ÎÖu¿w䥊_t±%$$ºP*b×ÌñÆ �€Œ+�·G÷©ÔyÆIuÝà TfMŸ+à{ÿÍÔó.3Ń$õ•y™,×´´}rdí׎X¶â�Š7q0]•z1Ïx"t(^äU=æ™ÄT×=,†‹-õ@œ.ŠŠ‡S&%G*i»F®%³@ªs¥CÌR^᤺æé ™R]ñˆ&ä3³ÍÌœýzÓþå}gÞ&ˇ÷ÝýƒÓGš9rdÅsPѦvhÓ'‰æ¡ÅqðzubeU JÍC‹3$$ºê‘‰e“�êšGF'ú÷ô�³@ªk,^à§ÿVÓz+¼úÿ ¥ó¼N–;›{¯ÅøcŸÔ0�ãm.¦K¸R'Ž2–È^P¼È«Zgˆ©®y(1„¼Âqº(ò¤NL™”©¤yPì¹–ÈX"{Y¸Ò!f)¯pR]óˆôÞ%"Õ5Eï…i}ü÷ÍÌëî¦|¾˜—/r®ÞóPqÆÃ·¼^~o" �S;´KO ‰®zdbÙ$¤zÆÃ¡Å�¥&ŽTîàçS¹–Ì©Î%^À§?Ü 7œkÚç„@3Ìû`¹vzûÞlÿòY°·? ‰v�ï�8ÊX"{Y@ñ"¯jqœ ¦ºæ¡Äò Çé¢È“:1eRr¤’æA±käZ"c‰ìeáJ‡˜¥¼ÂIuÍ#ÒKx—ˆT×<}î|ÿ\3}ö6ÓÞKù¼2ïJþ¯½wwszäs§._óòûIAíÐV>ý}é ™ÒU5-VV¢ÍC‹s¢ah™X6 ¨gÖsÔ‰!“©å:û”ëq@�WkÄ]=ýµê¬xàŸÌÔ³?fŠ»(Ÿwl°\Û~è¡M£k¾tdsåËáÀ.#àY‹õS�z´žO#ÝÃã8#@D][¯Ng§w=Að˜2)9PÒÖËÄ\"„Ä yµN °4ªxP×< ö)×¼K꼪ÄÚL67öÞbZ/ü¦ýuÊ„ùÀyþޝ]wíôï„pZ;Ìxü•“ccŸr]¢UP×<´X’]À”‰µnnIR!ÍC‹ ’2Gåñöh¥G Êuü æ)ÃËQS.Öˆ¹ D©u­Ú5Ó[Mû—~ÉÌÜHù‚±à€å;¾ò‰k¦¶?*Ü–Y?àõOÄ>�t…lÅÛhZ,Ñ*N¯5Ah¥‡ (iZ,–`¨yȘg<:ué�qÖĬ .=,†s¢yÌ’öVSœŸû?Iù‚² 8ÙwÏ7O=ðÞ#G–¿Rÿo*ŸF>ÕOTg]zdÌ3NvUS&v¸¹£U=‰N6Ò# cž9HHt¢òx{:Œ[+8jz+^ÎÖu¿wä¥�«5)¶™ö¯ÃÍÿÏ”/83X`ø2L»ðw Ö¸²ð*Ä>•ºæ‘ÕOtsg=MwD�.¼µbä�±¶ºÐ“Nº_ òf‰Ðt¿€2n³ºG÷óÀ9éìÑðÚÿz¸ùßOé@0P€&�›`h›À&T:œ(ŸÖ¼x¤G@Æš‡¦#¬Úáæ®í-Ý/�ñ&!ÑK\Azd¬y¤“v=¿x'ˆ—Ó¨gW¢ÐÐ ôGÎ¥ûî½£9m>}êøš@ºÖjÚ‰Ju®ð3é%¼KDªkФH¢/–§¿O#�!³ê°ôxÏ:±²*€);œ³:À·~ÐL=ç ¦ýU’ñöaàÔekÖ|ºaŠ“’hcüƒ±‡¡Ðw"½l}—PJt¡„ŒéЇ­A0%s±ñ¥Ã{Xd—Uy`§–º£ôð "7« ÝA ëƒDãöIäíÀzVçK_мKªŽ·]úR¤—¨Ç»7žc¦ÎÞfŠû) †â#çú™÷¿pç×íAžýŸR’“Ç>Uúð.¨+ëñXܘ­‚ºæ‘‰¹Dd$êšGFÏ Ur7bŸr]¢UP×<´X’]À”‰êñ®¦0�O�k¦ž;l7¿eh>pîhqÏÎÛ¸llï‘#ËŸLdpÒ”óæå¨Ž)kÄ\¢Ôƒºæ¡è%$e*Ô5¾2×%ZuÍC‹%ZõÈç‘®�­xÍCÆ<ãhzZ[Mû-¿g¦.ø²1Ó¤ C÷ æ3Ç?gÓèA…Ó·^{ù¥/Ez „Œéû¾^öŠ_:*=€hÀŒiTOô²oX™mRÌd_·¤z ÊÃõ§zc¿ô¥*K¤Sd¯ø%Rå„ó.¡z¢wæ¾­fæåçšÖQ>” åçÒ©ûo™ÞñÑSFןb�ÃIöøÓ�×ôdë±Ï¸ Di„â—½$$º@zøÊoBÓé�±Ø †"‘ŸO¥®yduÅÃSu¼ MWøÒ?Â+ÿøßò÷‚¡Ÿ,×¶÷=rýÌŽ9wņ p¾ ¤ô'=ÊEbç‹@÷óÀÆ5�9{C첌QFbdü£>ŒÛ§sðfk©®xDDEôþîÓú…ËLñ0iCÍЈùìªãÎ:uìÀ„sµÎŸÎìS :ñøc»ÀÔ' Óý ûúe•vJuj±ªB/ûb§2Bäõ°ð-_òºÐàáÓH§Èé.A…/¬çô�ù@n°ŽY¨ ¥«sfáýØjŠ_>×L]Aù¢`ÑM–S—pðg'ŽûHaÏu'ÕŸ×n.lýÒwˆôõB"=,|Ë—º`b—…‘Ùf·t�ÔCFõItjsbéK9 è¬oý2ªó%’ó°°múØò¥ƒê‰žP\uŽ™9g›ißK¢aQ|ˆ¹£½ïћ̣ÿzxcô‘#ã“ -“'¸NÌ2)Ç) yhqƃ„DW=2±lR]óÈèD¸é$©¬y@ìS¹–Ì©®y°8¨ÌšN샛þM¿o¦k›)v‘¶¨X”€åö™½Å¥SÜ'øó§-;À~]àÐìÉ1Õ¹R#†�W8NEžÔ‰)“’#•4Š]#×Kd/ W:Ä,åNªk‘^»D¤ºæ¡è�›ßkZ/}³™ùäIXŒ,Ú  ä†™�w_7³ã’#›ã{�hŽŸ '»ÆofYtm¤—Šæ¡Å]õÈIJIHõŒ‡C‹!KM©ÜÁϧr-™R�+J<·§ÿnxê¿ñ­fêW?iÚóýõÌ;‹~°ÜÙžjÃÛÀõ3#æÒÓFVß0�Ç»\éEÀ•1„¼Âqº(ò¤NL™”©¤yPì¹–ÈX"{Y¸Ò!f)¯pR]óˆôÞ%"Õ5E7æ3a¦ÎøÓúâ]9»EÈ¢ü"`W®:ö•§Ž®~G£0‡ãY–„Ï¢ %dQ�/¦Tzà"Ñ©År¨ ½ì‹�Ê ‘×kzÄK<|éÔ††+¤; Æ?{¢qû$òv`=«—˪ãm�>l »¼óKfæ÷Ï3­K�°±_N–SG&&>·üÐ?œY¶úu�Ž¢]‘^â/$ Ó!vYÕMg¡>‰±Ë‚�¯£ƒ‡[ºFê!ƒÈ'ïRqMF/—¾y{@w©ÔÄÒ—"½ BÆtˆ}_/{Å/òXí�×ý‹ßkfÞ¹ b'ígìrÜQLM½cúÁ«ŠFóÓð±`#L…O°º¿TØ5cá—�ƒ.$D‹%I…l4-&HÊTÚM‡h±Dì*å:~ó”á娎)kÄ\¢ÔºÝ¥Ë>`¦_ö&Óºü‡ÆÌPi¿c¿}ˆùÜø“'O\>ú×paü$^"T €/p …Œé»,3Að¥ƒú$:Ä. ‚=éJ:x¸¥k¤2ˆ|’ñ.×H=dù$Ò= »TjbéKŠduß–^öŠ_:Ðã«ß43¯ûY3s-©û5K@ħ&~ü¬ÓCèÞì”»�\Ö»H©’¹x]“ñæJW–¨?Õó%6U–H§64\!ÝQåd÷SjôcO•‡…¢Â|÷3ý¦W˜™Eõ“|seiÈpòèªæ›ÆùùÓš—Ïñ¨² .¶äs�]ŒñÒQéáDÙŸi´�D/û†mÓ'ïRq�ÔC‘O"ݺK¥&–¾¤xT+»ô²WÜVýö—ÌôEkf.»Éý×sKp–&€œ:²jÙ[–­Å ãk.€õ4'VÝtêƒd.^×°‹×Ô®<,Qª0æKlª<,e€-_b“Ñ9 Û¦ï€-_"ãŒ=9 ê }e›™z×ûŒùèV3³ß~Ưbi¨ÉÇ~ö—ò–FQ<.0:nå…‡­[Fc¼t@Ÿ�Éþ. ßò%¯ Ý‘ó°DÛdu¾DHa}�œ‡%·?XÇ,T¥â;9 {¬°õKßÁÆÅµß03o™™¾ŠÄ%:°4tÉ›Æ~ÒëÇ6¼©Ñ0¿©ÿöa¸}d.^ªó%”J\$:µ¹7^b“ó°€îÓ2À–/±É莜‡…mÓwÀ–/ˆñÆžÄcÞí?öþbß;ßcf¾éô%j±4Ì’·Œµî„ñÆ/ÃÇ„_…ôñî2 W<€1_: OÈd—……où’×…îÈyX¢m²:_"¤°>HÎÃ’Û¬cªRñ€œ�=VØÒòû[Ûí|Ãì»äbÓ^ÿ>¾Yšæˆý‚á©�•Ï{ýØúW4L㥠­ÆJæâ¥ ‚/R\#õ�QD}�ÚœG¼ÄF¹é¬îÓ2À–/±É莜‡…mÓwÀ–/ˆñÆ8ì*Šâ“ï5S—ÞRL_µô…½¹±4ô�·Œ¬<ð”æQ?{¸ù9HŸ—í¿xíEÏ/åéaá[¾äu¡;r–h›¬Î—)¬’ó°äö똅ªT| çÈcÕ‚¿ÿùõbê²­Eëã›Öv*,1G–&€>ñú± �;mdåËNl®x äSàv?u‰5»ÐKÅ5REÔ'Ñ©ÍyÄKl”›Îê>-lý2ªó%’ó°”Û„eTçKÄõiÁò†mÅÌ73Ÿ€'þíT\¢‡,MóÀÿ[·ñÙ…9óéck_‡üÙpuOP  #Ü5Æ|I�BXêŽÒÃ/vÓù†+¤;Ha}�ÒÑO"oÖ³:_úRämÌNX~ñí½ÿyMQ\ùn3u—+-Ñ7–&€yæäæŠU'�¬|ÖëG~~cdæy [yÓùF¹éì’êÞ“têz…ÈéT`ì—¾éžÒÃéÔøÿ�fѼê]Å£_ÜjZWo-fu…%æ…¥ `�yýòuëŠVqòškŸ[Œ§4Lñd�Gý ã®�î ›‹õAØMç®�î …õAJ D>‰¼XÏêa9mÚÅ7Z¦yÃ{‹ÝÿÙ6�ßWìyÀ•–X–&€ãäÆò'/[ùS›Ì�ÏxÚhã©�Âþã$sÜ INFO cp -av INFO ${PKG_DIR} ### Create the final spk mkdir -p "/image/${PLATFORM}" pkg_make_spk ${PKG_DIR} "/image/${PLATFORM}" $(__get_spk_name get_platform_family INFO) popd } create_inner_tarball create_spk MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/conf/000077500000000000000000000000001516543156300245005ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/conf/privilege000066400000000000000000000000711516543156300264070ustar00rootroot00000000000000{ "defaults": { "run-as": "package" } } MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/conf/resource000066400000000000000000000032261516543156300262550ustar00rootroot00000000000000{ "usr-local-linker": { "bin": [ "mega-attr", "mega-backup", "mega-cancel", "mega-cat", "mega-cd", "mega-cmd", "mega-cmd-server", "mega-confirm", "mega-confirmcancel", "mega-cp", "mega-debug", "mega-deleteversions", "mega-df", "mega-du", "mega-errorcode", "mega-exclude", "mega-exec", "mega-export", "mega-find", "mega-ftp", "mega-get", "mega-graphics", "mega-help", "mega-https", "mega-import", "mega-invite", "mega-ipc", "mega-killsession", "mega-lcd", "mega-log", "mega-login", "mega-logout", "mega-lpwd", "mega-ls", "mega-mediainfo", "mega-mkdir", "mega-mount", "mega-mv", "mega-passwd", "mega-permissions", "mega-preview", "mega-proxy", "mega-put", "mega-pwd", "mega-quit", "mega-reload", "mega-rm", "mega-session", "mega-share", "mega-showpcr", "mega-signup", "mega-speedlimit", "mega-sync", "mega-thumbnail", "mega-transfers", "mega-tree", "mega-userattr", "mega-users", "mega-version", "mega-webdav", "mega-whoami" ] } } MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/scripts/000077500000000000000000000000001516543156300252425ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/scripts/postinst000077500000000000000000000000231516543156300270460ustar00rootroot00000000000000#!/bin/sh exit 0 MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/scripts/postuninst000077500000000000000000000000231516543156300274110ustar00rootroot00000000000000#!/bin/sh exit 0 MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/scripts/postupgrade000077500000000000000000000000231516543156300275200ustar00rootroot00000000000000#!/bin/sh exit 0 MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/scripts/preinst000077500000000000000000000000231516543156300266470ustar00rootroot00000000000000#!/bin/sh exit 0 MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/scripts/preuninst000077500000000000000000000000231516543156300272120ustar00rootroot00000000000000#!/bin/sh exit 0 MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/scripts/preupgrade000077500000000000000000000000231516543156300273210ustar00rootroot00000000000000#!/bin/sh exit 0 MEGAcmd-2.5.2_Linux/build/SynologyNAS/toolkit/source/MEGAcmd/scripts/start-stop-status000077500000000000000000000000231516543156300306240ustar00rootroot00000000000000#!/bin/sh exit 0 MEGAcmd-2.5.2_Linux/build/clone_vcpkg_from_baseline.sh000077500000000000000000000010501516543156300227160ustar00rootroot00000000000000#!/bin/bash set -e #If a dependency required an older commit (older than baseline), set it here: VCPKG_OLDEST_COMMIT=c6d3ab273572019ea0d6f6688e1163143190d326 if [ -z ${VCPKG_OLDEST_COMMIT+x} ]; then commit=$(grep '."builtin-baseline"' vcpkg.json | awk -F '"' '{print $(NF-1)}') else commit="${VCPKG_OLDEST_COMMIT}" fi commit_date=$(curl -s "https://api.github.com/repos/microsoft/vcpkg/commits/$commit" | grep '"date"' | head -n 1 | awk -F '"' '{print $(NF-1)}') git clone --shallow-since $commit_date https://github.com/microsoft/vcpkg $@ MEGAcmd-2.5.2_Linux/build/cmake/000077500000000000000000000000001516543156300162645ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/cmake/modules/000077500000000000000000000000001516543156300177345ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/cmake/modules/megacmd_configuration.cmake000066400000000000000000000014701516543156300252640ustar00rootroot00000000000000# Define debug symbols covering all platforms. add_compile_definitions( $<$:DEBUG> $<$:_DEBUG> ) # Build the project with C++17 set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) if (MSVC) # https://gitlab.kitware.com/cmake/cmake/-/issues/18837 add_compile_options(/Zc:__cplusplus) # Enable updated __cplusplus macro # Enable build with multiple processes. add_compile_options(/MP) # Create a separated PDB file with debug symbols. add_compile_options($<$:/Zi>) else() include(CheckIncludeFile) include(CheckFunctionExists) check_include_file(inttypes.h HAVE_INTTYPES_H) check_include_file(dirent.h HAVE_DIRENT_H) check_include_file(glob.h HAVE_GLOB_H) check_function_exists(aio_write, HAVE_AIO_RT) endif() MEGAcmd-2.5.2_Linux/build/cmake/modules/megacmd_libraries.cmake000066400000000000000000000014631516543156300243730ustar00rootroot00000000000000macro(load_megacmdserver_libraries) if(VCPKG_ROOT) if(USE_PCRE) find_package(unofficial-pcre REQUIRED) target_link_libraries(LMegacmdServer PRIVATE unofficial::pcre::pcrecpp) set(USE_PCRE 1) endif() if (ENABLE_MEGACMD_TESTS) find_package(GTest CONFIG REQUIRED) target_link_libraries(LMegacmdTestsCommon PUBLIC GTest::gtest GTest::gmock) endif() else() # No VCPKG usage. Use pkg-config find_package(PkgConfig REQUIRED) # For libraries loaded using pkg-config if(USE_PCRE) #TODO: UNTESTED! pkg_check_modules(pcre REQUIRED IMPORTED_TARGET libpcre) target_link_libraries(LMegacmdServer PRIVATE PkgConfig::pcre) set(USE_PCRE 1) endif() endif() endmacro() MEGAcmd-2.5.2_Linux/build/cmake/modules/megacmd_options.cmake000066400000000000000000000051451516543156300241130ustar00rootroot00000000000000option(USE_PCRE "Used to provide support for pcre" ON) option(FULL_REQS "Fail compilation when some requirement is not met" ON) if(USE_PCRE) add_compile_definitions(USE_PCRE) #this one is no longer added to target_compile_definitions(SDKlib, hence some cpps not using config.h will lack this, causing the full reqs to fail # TODO: remove once PCRE optionality is removed endif() if(FULL_REQS) #On by default in the SDK, but let's enforce anyway option(USE_PDFIUM "Used to create previews/thumbnails for PDF files" ON) option(USE_FFMPEG "Used to create previews/thumbnails for video files" ON) option(ENABLE_MEDIA_FILE_METADATA "Used to determine media properties and set those as node attributes" ON) option(USE_MEDIAINFO "[DEPRECATED] Used to determine media properties and set those as node attributes" ON) #make compilation fail in case those are not fully available: add_compile_definitions( REQUIRE_HAVE_FFMPEG REQUIRE_HAVE_PDFIUM REQUIRE_USE_MEDIAINFO REQUIRE_HAVE_LIBUV REQUIRE_USE_PCRE ) else() option(USE_PDFIUM "Used to create previews/thumbnails for PDF files" OFF) option(USE_FFMPEG "Used to create previews/thumbnails for video files" OFF) option(ENABLE_MEDIA_FILE_METADATA "Used to determine media properties and set those as node attributes" OFF) option(USE_MEDIAINFO "[DEPRECATED] Used to determine media properties and set those as node attributes" OFF) endif() if (CMAKE_BUILD_TYPE STREQUAL "Debug" ) option(ENABLE_MEGACMD_TESTS "Enable MEGAcmd testing code" ON) else() option(ENABLE_MEGACMD_TESTS "Enable MEGAcmd testing code" OFF) endif() if(ENABLE_MEGACMD_TESTS) add_compile_definitions(MEGACMD_TESTING_CODE=1) endif() #Override SDK's options: option(ENABLE_ISOLATED_GFX "Turns on isolated GFX processor" OFF) option(ENABLE_SDKLIB_WERROR "Enable warnings as errors" OFF) option(USE_LIBUV "Includes the library and turns on internal web and ftp server functionality" ON) if(WIN32) option(WITH_FUSE "Build with FUSE support." ON) elseif(UNIX AND NOT APPLE) execute_process( COMMAND uname -m OUTPUT_VARIABLE SYSTEM_ARCHITECTURE OUTPUT_STRIP_TRAILING_WHITESPACE ) message(STATUS "System Architecture: <${SYSTEM_ARCHITECTURE}>") if(SYSTEM_ARCHITECTURE MATCHES "^(i[3-6]86|x86|armhf|armv7l)$") set(IS_32_BIT ON) else() set(IS_32_BIT OFF) endif() if(NOT IS_32_BIT) message(STATUS "Configuring with FUSE support") option(WITH_FUSE "Build with FUSE support." ON) endif() endif() if(WITH_FUSE) add_compile_definitions(WITH_FUSE=1) endif() MEGAcmd-2.5.2_Linux/build/cmake/modules/megacmd_utility_functions.cmake000066400000000000000000000024461516543156300262140ustar00rootroot00000000000000function(header_from_source) set(SOURCE ${ARGV1}) string(REPLACE ".cpp" ".h" header_ ${SOURCE}) if(EXISTS ${header_}) set(${ARGV0} ${header_} PARENT_SCOPE) endif() endfunction() function(add_source_and_corresponding_header_to_target) set(options "") set(oneValueArgs "") set(multiValueArgs FLAG INTERFACE PUBLIC PRIVATE) set(TARGET ${ARGV0}) cmake_parse_arguments(PARSE_ARGV 1 "target_sources_conditional" "${options}" "${oneValueArgs}" "${multiValueArgs}" ) foreach(_source ${target_sources_conditional_PUBLIC}) header_from_source(header ${_source}) target_sources(${TARGET} PUBLIC ${_source} ${header}) endforeach() foreach(_source ${target_sources_conditional_PRIVATE}) header_from_source(header ${_source}) target_sources(${TARGET} PRIVATE ${_source} ${header}) endforeach() endfunction() function(generate_src_file_list base_folder OUTPUT_VAR) set(SRC_LIST "") file(GLOB_RECURSE ALL_FILES "${base_folder}/*.cpp" "${base_folder}/*.h" ) foreach(FILE_PATH ${ALL_FILES}) get_filename_component(FILENAME ${FILE_PATH} NAME) list(APPEND SRC_LIST "\"${FILENAME}\"") endforeach() set(${OUTPUT_VAR} ${SRC_LIST} PARENT_SCOPE) endfunction() MEGAcmd-2.5.2_Linux/build/create_tarball.sh000077500000000000000000000076711516543156300205220ustar00rootroot00000000000000#!/bin/bash -x ## # @file src/build/create_tarball.sh # @brief Generates megacmd tarballs and compilation scripts # # (c) 2013-2014 by Mega Limited, Auckland, New Zealand # # This file is part of the MEGAcmd. # # MEGAcmd is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # @copyright Simplified (2-clause) BSD License. # # You should have received a copy of the license along with this # program. ## set -euo pipefail IFS=$'\n\t' BASEPATH=$(pwd)/../ # get current version megacmd_VERSION=$(cat $BASEPATH/CMakeLists.txt | grep -Po "MEGACMD_.*_VERSION [0-9]*"| awk '{print $2}' | paste -sd '.') export megacmd_NAME=megacmd-$megacmd_VERSION rm -rf $megacmd_NAME.tar.gz rm -rf $megacmd_NAME echo "megacmd version: $megacmd_VERSION" # delete previously generated files rm -fr megacmd/megacmd*.dsc # fix version number in template files and copy to appropriate directories sed -e "s/megacmd_VERSION/$megacmd_VERSION/g" templates/megacmd/megacmd.spec | sed "s#^ *##g" > megacmd/megacmd.spec sed -e "s/megacmd_VERSION/$megacmd_VERSION/g" templates/megacmd/megacmd.dsc > megacmd/megacmd.dsc sed -e "s/megacmd_VERSION/$megacmd_VERSION/g" templates/megacmd/PKGBUILD > megacmd/PKGBUILD for dscFile in `find templates/megacmd/ -name megacmd-xUbuntu_* -o -name megacmd-Debian_* -o -name megacmd-Raspbian_*`; do sed -e "s/megacmd_VERSION/$megacmd_VERSION/g" "${dscFile}" > megacmd/`basename ${dscFile}` done # Adjustments to remove fuse dependency for 32 bits builds if pwd | grep -E "/(i[3-6]86|x86|armhf|armv7l)/" >/dev/null; then echo "Removing fuse dependency...." sed -i "/libfuse-dev/d" megacmd/debian.control sed -i "s#, fuse##g" megacmd/debian.control sed -i "/fuse/d" megacmd/megacmd.spec sed -i "s#, libfuse-dev##g" megacmd/megacmd.dsc sed -i "s# 'fuse2'##g" megacmd/PKGBUILD fi # read the last generated ChangeLog version version_file="version" if [ -s "$version_file" ]; then last_version=$(cat "$version_file") else last_version="none" fi if [ "$last_version" != "$megacmd_VERSION" ]; then # add RPM ChangeLog entry changelog="megacmd/megacmd.changes" changelogold="megacmd/megacmd.changes.old" if [ -f $changelog ]; then mv $changelog $changelogold fi ./generate_rpm_changelog_entry.sh $megacmd_VERSION $BASEPATH/src/megacmdversion.h > $changelog #TODO: read this from somewhere if [ -f $changelogold ]; then cat $changelogold >> $changelog rm $changelogold fi # add DEB ChangeLog entry changelog="megacmd/debian.changelog" changelogold="megacmd/debian.changelog.old" if [ -f $changelog ]; then mv $changelog $changelogold fi ./generate_deb_changelog_entry.sh $megacmd_VERSION $BASEPATH/src/megacmdversion.h > $changelog #TODO: read this from somewhere if [ -f $changelogold ]; then cat $changelogold >> $changelog rm $changelogold fi # update version file echo $megacmd_VERSION > $version_file fi # create archive mkdir $megacmd_NAME ln -s ../megacmd/megacmd.spec $megacmd_NAME/megacmd.spec ln -s ../megacmd/debian.postinst $megacmd_NAME/debian.postinst ln -s ../megacmd/debian.prerm $megacmd_NAME/debian.prerm ln -s ../megacmd/debian.postrm $megacmd_NAME/debian.postrm ln -s ../megacmd/debian.copyright $megacmd_NAME/debian.copyright for i in $BASEPATH/{src,sdk,tests,CMakeLists.txt,vcpkg.json}; do ln -s $i $megacmd_NAME/ done mkdir $megacmd_NAME/build ln -sf $BASEPATH/build/cmake $megacmd_NAME/build/ tar czfh $megacmd_NAME.tar.gz --exclude-vcs $megacmd_NAME rm -rf $megacmd_NAME # delete any previous archive rm -fr megacmd/megacmd_*.tar.gz # transform arch name, to satisfy Debian requirements mv $megacmd_NAME.tar.gz megacmd/megacmd_$megacmd_VERSION.tar.gz #get md5sum and replace in PKGBUILD MD5SUM=`md5sum megacmd/megacmd_$megacmd_VERSION.tar.gz | awk '{print $1}'` sed "s/MD5SUM/$MD5SUM/g" -i megacmd/PKGBUILD ###### ###### MEGAcmd-2.5.2_Linux/build/full_build_process.cmd000066400000000000000000000067641516543156300215650ustar00rootroot00000000000000@echo off IF "%1%" EQU "-help" ( goto Usage ) SET MEGA_ARCH=32/64 SET MEGA_SKIP_32_BIT_BUILD=false SET MEGA_SIGN=sign SET MEGA_CORES=0 SET MEGA_VERSION_SUFFIX= IF NOT "%1" == "" ( SET MEGA_ARCH=%1 SET MEGA_SIGN=%2 SET MEGA_CORES=%3 SET MEGA_VERSION_SUFFIX=%4 :: CHECK NUMBER OF ARGUMENTS IF "%3" == "" ( echo "Error: too few arguments" goto Usage ) IF NOT "%5" == "" ( echo "Error: too many arguments" goto Usage ) ) IF [%MEGA_WIN_KITVER%]==[] ( SET MEGA_WIN_KITVER=10.0.22621.0 ) :: CHECK ARCHITECTURE IF "%MEGA_ARCH%" EQU "64" ( echo "Info: Building x64 only" SET MEGA_SKIP_32_BIT_BUILD=true ) ELSE ( IF "%MEGA_ARCH%" EQU "32/64" ( echo "Info: Building both x64 and x86" ) ELSE ( echo "Please add the architecture as first parameter: 64 or 32/64" goto Usage ) ) :: CHECK SIGN IF "%MEGA_SIGN%" EQU "sign" ( echo "Info: Signed installer(s) will be generated" ) ELSE ( IF "%MEGA_SIGN%" EQU "nosign" ( echo "Info: Unsigned installer(s) will be generated" ) ELSE ( echo "Please add a correct sign argument: sign or nosign" goto Usage ) ) :: CHECK CORES SET "VALID_CORES=1" IF %MEGA_CORES% LSS 0 ( SET "VALID_CORES=0" ) IF %MEGA_CORES% GTR 16 ( SET "VALID_CORES=0" ) IF %MEGA_CORES% EQU 0 ( FOR /f "tokens=2 delims==" %%f IN ('wmic cpu get NumberOfLogicalProcessors /value ^| find "="') DO SET MEGA_CORES=%%f ) IF %VALID_CORES% EQU 0 ( echo "Please add a correct core argument: 1 to 16, or 0 for default value" goto Usage ) echo "Info: CORES SET to %MEGA_CORES%" REM Clean up any previous leftovers IF EXIST built32 ( rmdir /s /q built32 ) IF EXIST sign32 ( rmdir /s /q sign32 ) IF EXIST built64 ( rmdir /s /q built64 ) IF EXIST sign64 ( rmdir /s /q sign64 ) IF [%SKIP_BUILD_PRODUCTS%]==[] ( IF EXIST build-x64-windows-mega ( rmdir /s /q build-x64-windows-mega ) IF EXIST build-x86-windows-mega ( rmdir /s /q build-x86-windows-mega ) ) IF [%SKIP_BUILD_PRODUCTS%]==[] ( echo calling production_build.cmd call production_build.cmd || exit 1 /b ) echo calling gather_built_products.cmd call gather_built_products.cmd || exit 1 /b echo calling make_uninstallers.cmd call make_uninstallers.cmd || exit 1 /b IF "%MEGA_SIGN%" EQU "sign" ( echo time to sign the executables in built32/64 folders REM TODO: here in case of IF "%MEGA_SIGN%" EQU "sign" , the signing would need to take place, replacing the built .exes and .dlls with the signed ones echo gathering signed executables in the built folders call gather_signed_products.cmd || exit 1 /b ) echo calling make_installers.cmd call make_installers.cmd %MEGA_SIGN% || exit 1 /b REM TODO: Pending signing the installers themselves! exit /B :Usage echo "Usage: %~0 [-help] [64|32/64 sign|nosign []]" echo Script building, signing and creating the installer(s) echo It can take 0, 1, 3 or 4 arguments: echo - -help: this message echo - 0 arguments: use these settings: 32/64 sign 1 echo - Architecture : 64 or 32/64 to build either for 64 bit or both 32 and 64 bit echo - Sign: sign or nosign if the binaries must be signed or not echo - Cores: the number of cores to build the project, or 0 for default value (number of logical cores on the machine) echo - Suffix for installer: The installer will add this suffix to the version. [OPTIONAl] echo MEGA_VCPKGPATH environment variable may be set to the root of the vcpkg cloned (or to be cloned) folder. echo MEGA_WIN_KITVER environment variable can be used to set the Windows sdk to use. Value defaults to "10.0.22621.0". Set to "." to use the Universal Kit exit /B MEGAcmd-2.5.2_Linux/build/gather_built_products.cmd000066400000000000000000000043771516543156300223000ustar00rootroot00000000000000mkdir built64 mkdir sign64 SET BASEMEGACMDPATH=. copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\*.dll built64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\MEGAclient.exe built64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\MEGAcmdServer.exe built64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\MEGAcmdShell.exe built64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\MEGAcmdUpdater.exe built64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\*.pdb built64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\*.dll sign64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\MEGAclient.exe sign64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\MEGAcmdServer.exe sign64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\MEGAcmdShell.exe sign64 copy %BASEMEGACMDPATH%\build-x64-windows-mega\RelWithDebInfo\MEGAcmdUpdater.exe sign64 REM copy debug symbols of 3rd parties. dlls were already copied copy %BASEMEGACMDPATH%\build-x64-windows-mega\vcpkg_installed\x64-windows-mega\bin\*.pdb built64 IF "%MEGA_SKIP_32_BIT_BUILD%" == "true" ( GOTO :EOF ) mkdir built32 mkdir sign32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\*.dll built32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\MEGAclient.exe built32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\MEGAcmdServer.exe built32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\MEGAcmdShell.exe built32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\MEGAcmdUpdater.exe built32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\*.pdb built32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\*.dll sign32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\MEGAclient.exe sign32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\MEGAcmdServer.exe sign32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\MEGAcmdShell.exe sign32 copy %BASEMEGACMDPATH%\build-x86-windows-mega\RelWithDebInfo\MEGAcmdUpdater.exe sign32 REM copy debug symbols of 3rd parties. dlls were already copied copy %BASEMEGACMDPATH%\build-x86-windows-mega\vcpkg_installed\x86-windows-mega\bin\*.pdb built32 REM copy scritps?? MEGAcmd-2.5.2_Linux/build/gather_signed_products.cmd000066400000000000000000000023051516543156300224170ustar00rootroot00000000000000:: CHECK SIGN :Check echo Info: Checking if sources are signed "C:\Program Files (x86)\Windows Kits\10\bin\%MEGA_WIN_KITVER%\x64\signtool.exe" verify /pa sign64/*.exe >nul || goto SleepAndRetry "C:\Program Files (x86)\Windows Kits\10\bin\%MEGA_WIN_KITVER%\x64\signtool.exe" verify /pa sign64/*.dll >nul || goto SleepAndRetry IF NOT "%MEGA_SKIP_32_BIT_BUILD%" == "true" ( "C:\Program Files (x86)\Windows Kits\10\bin\%MEGA_WIN_KITVER%\x64\signtool.exe" verify /pa sign32/*.exe >nul || goto SleepAndRetry "C:\Program Files (x86)\Windows Kits\10\bin\%MEGA_WIN_KITVER%\x64\signtool.exe" verify /pa sign32/*.dll >nul || goto SleepAndRetry ) echo Signed executables found. Will copy them to builtXX folders REM Copying signed installers copy sign64\* built64 copy sign32\* built32 exit /b :SleepAndRetry IF [%MSYSTEM%]==[MINGW64] ( REM pause or set \p freezed mingw bash and there are no builtin mechanism for Batch to sleep, using python for it: echo "you need to place signed executables in sign folders. The signature verification will be retry in 30 seconds" python -c "import time; time.sleep(30)" ) else ( echo You need to place signed executables in sign folders. After that, pause ) goto Check exit 2 /b MEGAcmd-2.5.2_Linux/build/generate_deb_changelog_entry.sh000077500000000000000000000021051516543156300233750ustar00rootroot00000000000000#!/bin/bash ## # @file src/build/generate_changelog_entry.sh # @brief Processes the input file and prints DEB ChangeLog entry # # (c) 2013-2014 by Mega Limited, Auckland, New Zealand # # This file is part of the MEGAcmd. # # MEGAcmd is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # @copyright Simplified (2-clause) BSD License. # # You should have received a copy of the license along with this # program. ## if [ "$#" -ne 2 ]; then echo " $0 [version] [input file path]" exit 1 fi in_file="$2" out1=$(printf "#include using namespace std; #include \"$2\" int main() { cout << megacmd::megacmdchangelog << endl; }" | g++ -x c++ - -o /tmp/printChangeLogMcmd && /tmp/printChangeLogMcmd | awk '{print " * "$0}' && rm /tmp/printChangeLogMcmd ) # print ChangeLog entry NOW=$(LANG=C date -R) echo "megacmd ($1) stable; urgency=low" echo "" echo "$out1" | sed 's#\\"#"#g' echo "" echo " -- MEGA Team $NOW" echo "" MEGAcmd-2.5.2_Linux/build/generate_rpm_changelog_entry.sh000077500000000000000000000021561516543156300234470ustar00rootroot00000000000000#!/bin/bash ## # @file src/build/generate_changelog_entry.sh # @brief Processes the input file and prints RPM ChangeLog entry # # (c) 2013-2014 by Mega Limited, Auckland, New Zealand # # This file is part of the MEGAcmd. # # MEGAcmd is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # @copyright Simplified (2-clause) BSD License. # # You should have received a copy of the license along with this # program. ## if [ "$#" -ne 2 ]; then echo " $0 [version] [input file path]" exit 1 fi in_file="$2" out1=$(printf "#include using namespace std; #include \"$2\" int main() { cout << megacmd::megacmdchangelog << endl; }" | g++ -x c++ - -o /tmp/printChangeLogMcmd && /tmp/printChangeLogMcmd | awk '{print " * "$0}' && rm /tmp/printChangeLogMcmd ) # print ChangeLog entry NOW=$(LANG=en_us_8859_1;date) echo $NOW - linux@mega.co.nz echo "- Update to version $1:" echo "$out1" | sed 's#\\"#"#g' echo "" echo "-------------------------------------------------------------------" MEGAcmd-2.5.2_Linux/build/get_winfsp.cmd000066400000000000000000000013411516543156300200350ustar00rootroot00000000000000@echo off setlocal set "WINFSP_VERSION=2.1.25156" set "WINFSP_VERSION_SHORT=2.1" set "EXPECTED_HASH=073a70e00f77423e34bed98b86e600def93393ba5822204fac57a29324db9f7a" set "FILENAME=winfsp-installer.msi" set "URL=https://github.com/winfsp/winfsp/releases/download/v%WINFSP_VERSION_SHORT%/winfsp-%WINFSP_VERSION%.msi" echo Downloading: %URL% curl -L -o "%FILENAME%" "%URL%" if errorlevel 1 ( echo ERROR: Download failed exit /b 1 ) for /f %%H in ('sha256sum "%FILENAME%"') do set "ACTUAL_HASH=%%H" if /i "%ACTUAL_HASH%"=="%EXPECTED_HASH%" ( echo Downloaded %FILENAME% correctly ) else ( echo ERROR: Checksum mismatch! echo Expected: %EXPECTED_HASH% echo Actual : %ACTUAL_HASH% exit /b 1 ) endlocal exit /B MEGAcmd-2.5.2_Linux/build/installer/000077500000000000000000000000001516543156300172015ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/installer/Info.plist.in000066400000000000000000000020511516543156300215540ustar00rootroot00000000000000 NSPrincipalClass NSApplication CFBundleIconFile app.icns CFBundlePackageType APPL CFBundleShortVersionString @MEGACMD_MAJOR_VERSION@.@MEGACMD_MINOR_VERSION@.@MEGACMD_MICRO_VERSION@ CFBundleSignature ???? CFBundleExecutable MEGAcmd LSUIElement 1 CFBundleIdentifier megacmd.mac CFBundleShortVersionString NSHighResolutionCapable True LSMinimumSystemVersion 10.15 NSAppTransportSecurity NSAllowsArbitraryLoads MEGAcmd-2.5.2_Linux/build/installer/MEGAcmd.sh000077500000000000000000000002761516543156300207420ustar00rootroot00000000000000#!/bin/bash /Applications/MEGAcmd.app/Contents/MacOS/mega-cmd & sleep 2 osascript -e 'tell app "Terminal" to do script "/Applications/MEGAcmd.app/Contents/MacOS/MEGAcmdShell;exit" activate' MEGAcmd-2.5.2_Linux/build/installer/app.icns000066400000000000000000005040221516543156300206420ustar00rootroot00000000000000icnsˆs8mk[zz[�ôÿÿÿÿô�-ãÿÿýûûýÿÿã-ãÿùþÿÿÿÿþùÿã�ÿùÿÿÿÿÿÿÿÿùÿ�õÿþÿÿÿÿÿÿÿÿþÿô[ÿýÿÿÿÿÿÿÿÿÿÿýÿ\zÿûÿÿÿÿÿÿÿÿÿÿûÿzzÿûÿÿÿÿÿÿÿÿÿÿûÿz\ÿýÿÿÿÿÿÿÿÿÿÿýÿ\ õÿþÿÿÿÿÿÿÿÿþÿô �ÿùÿÿÿÿÿÿÿÿùÿ�ãÿùþÿÿÿÿþùÿã-ãÿÿýúúýÿÿã-�õÿÿÿÿõ�\{{\is32C ÿÿüûûüÿÿ€ÿôùú�ÿ úùôÿÿùøÿú�ø úÿøùÿôôÿöõ�ô õöÿõôòÿðìí�ò[íìðÿòïîñéùñçïïçñùéñîïëôëåýÿïããïÿýåëôìèøèâüûÿîîÿûüâèøèäôãÝþéèÿÿèéþÝãôäÞèßÚÿêÒëëÒêÿÚßèÞ×ÜÝÖøå�ØåøÖÝÛרçÖÓÔØÙÙØÔÓÖçØÓÔßÖÖ�Õ ÖÖßÔÓª×ÒàÓ�ÒÓàÒתÿÓÐÏ×ßß×ÏÐÓÿ€ªÎ�ÍΪÁƒ„!ç¥�¥ç!ƒ -ûÿ¦¦ÿû-ƒ +øçÿ¢¢ÿçø+ƒ #ÿš�ÿÿ�šÿ#ƒ $ÿ¨¤¤¨ÿ$ƒë–�—넃Á‚… ‚�€t))/詨è/7úÿ©©ÿû75øèÿ¥¥ÿèø5/ÿ�”ÿÿ”�ÿ//ÿª§§ªÿ/)ì™�™ì('  ' � € �  ‚€ � € … ‚l8mk  S“ÀßïïßÁ“S€ãÿÿÿÿÿÿÿÿÿÿã€ZåÿÿýûüýþþýüûýÿÿåZ’ÿÿúýÿÿÿÿÿÿÿÿÿÿýúÿÿ“¦ÿüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüÿ§’ÿûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþúÿ’Zÿüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüÿ[çÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿç€ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ€ âÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿâ QÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿQ“ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ”ÁÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÁßÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿß ïÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿï ïÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþÿì ßÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿÞÁÿüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüÿÁ“ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ”QÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿQ âÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿâ €ÿûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûÿ�çÿýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýÿç[ÿüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþüÿ[“ÿúþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿþúÿ”¨ÿüýÿÿÿÿÿÿÿÿÿÿÿÿÿÿýüÿ©’ÿÿúýÿÿÿÿÿÿÿÿÿÿýúÿÿ”ZåÿÿýûüýþþýüûýÿÿæZ€ãÿÿÿÿÿÿÿÿÿÿã�S“ÁÞììÞÁ“S il32ã…ÿÿ��ÿ�ÿÿŒ¿ÿ‚üûüûüüÿ¿‰ÿÿÿûù�ÿþþ�ÿùûÿÿÿ†ÿ÷ùÿÿ‡ùÿÿù÷ÿ„ÿøÿÿùù‡øùùÿÿøÿ‚ÿ÷ÿ�÷ÿ÷ÿ�ÿöÿ�õöÿöÿ€ÿôÿ�ôó‰ôó�ô ÿôÿÿòóø€ò€ô‡ò€ô€òøóòÿÿñÿðññïæåèññð�ñðññèåæïññðÿñÿêîôïîðãòúìàðƒîðàìúòãðîïôîêïõ€íïáüÿÿíÞî�íîÞíÿÿüáï€íKõïìûëëêìßúÿþÿìÜìëëìÜìÿþÿúßìêëëûêéóêééëÞúÿþþÿëÛëëÛëÿþþÿúÞëééêóêÿçíèççèÜú€ÿþÿëÙÙëÿþ€ÿ+úÜèççèíçÿëåéææåçÛúÿúìÿþÿëëÿþÿìúÿúÛçåææéåëëãç€ã䨸ÿøÍéÿýÿÿýÿéÍøÿøØä€ãeçäêßáçââáã×øÿ÷ØÕçÿüüÿçÕØ÷ÿø×ãáââçâßßéààßáÕøÿöÕâÑæÿÿæÑâÕöÿøÕáßààéáÞíÝÞÝßÓøÿöÓßßÑããÑßßÓöÿøÓßÝÞÝíÝÜä€ÜÝÒúÿøÒÝÜÝÕÕÝÜÝÒøÿúÒÝ€Ü/äÜÕÚßÛÚÛÑí÷ìÑÛÚÚÜÜÚÚÛÑì÷íÑÛÚÛßÚÕÿÙçØØÙ×ÏÎÏ×ÙƒØÙ×ÏÎÏ×ÙØØç×ÿÿÙ×Ü€×€Ø×Öƒ×Ö×€Ø€× Ü×ÙÿÿÕàÖ‘ÕÖßÕÿ€ÿÔã€Ô‹Ó€ÔãÔÿ�ÿÓá�ÒâÓÿ‚ÿÒÛÖÑчÐÑÑÖÛÐÿ„ÿÏÐÝÔÐσÐÏÐÔÝÏÏÿ†ÿÿÉÏÏ×ÝØÔÒÒÔØÝ×ÏÐ×ÿÿ‰¿È‡ÎÈ¿Œÿÿ�ßÄÄß�ÿÿ…ÿÿ¢‰�Ò쫇«ìÒ‹0ûÿÿµ…µÿÿû0‹,óýúÿ´ƒ´ÿúýó,‹,óýúùÿ´�´ÿùúýó,‹,ñûùýøÿ³³ÿøýùûñ,‹+ïýæ´ýöÿ®®ÿöý´æýï+‹+íûä©ýôúúôý©äûí+‹*ëùä"ªûññûª"äùë*‹*ê÷â#§ûû§#â÷ê*‹)çõà€˜™€àõç)‹,íùå!…!åùí,‹Äݽ‡½ÝÄ�‰ÿÿ¢‹  •'€$�Œ‡Š€‰€ˆ‹†‘„…‚ ƒ � &� &€ 'Óí®®íÓ' 9ûÿÿ¸·ÿÿû96óýúÿ··ÿúýó66óýúùÿ¶¶ÿùúýó6 ?6òûùýøÿµµÿøýùûò6 5ðýç¶ýöÿ±±ÿöý¶çýð5�5îüæ¬þõûûõþ¬æüî5€ �4íúæ-­ýòòý­-æúí4�b 4ëùä.ªýýª.äùë43éöá*œœ*áöé35îúç,,çúî5€"ÆßÀ  À߯"€€""�    ƒ    ‚€ ‡ € „ ‘  † �  ˆ‘ Š ‡  Œ € � €  �  –Œic07'ý‰PNG  IHDR€€Ã>aËðiCCPICC Profile8��UÝoÛT?‰o\¤? ±Ž‹¯US[¹­ÆI“¥éB¹ÍØ*¤ÉunS×6¶ÓmUŸöo ø€²�xB Äö²í´ISAÕ$¤=tÚ@h“ö‚ªp®¯S»]Ƹ‘¯9çw>ïÑ5@ÇWšã˜I`Þò]5Ÿ‘�Ÿ˜–;V! ÏA'ô@§¦{Nº\..Æ…GÖÃ_!ÁÞ7ÚëÿsuV©§$žBlW=}ñi€”©;® ÞFùð)ßAÜñ<â.&ˆXax–ã,Ã38Sê(b–‹¤×µ*â%Äý31ùl ó‚µ#O-êºÌzQvíšaÒXºOPÿÏ5o6Zñzñéòæ&�â»�Õ^wÇÔ®k¹IÄ/#¾æø&ñ½Æ\%�x/@ò™š{¤ÂùÉ7ëSï Þ‰¸jø…©P¾hÍ”&¸mryÎ>ª†œkº7Š=ƒߪÓB‘ç#@•fs¬_ˆ{ë�±Ð¿0î-LæZ~ë£%îGpßÓÆËˆ{èÚêÏYX¦f^åþ…+Ž_sÖ-³Tä>‰D½ Æ@îקƸ-9àã!r[2]3ŽBþ’c³ˆ¹‘ónC­„œš›Ës?ä>µ*¡ÏÔ®ª–e½D|Ž%4 `à î:X°2¨�‡ ¾pQSL”PÔR”‰§aeíyå€ÃqĘ ¬×™5FiÏáî„›t…ìÇç )’Cd˜Œ€LÞ$o‘Ã$‹ÒrpÓ¶‹ÏbÝÙôó>4Ð+ãƒÌ¹žF_ï¬{ÒЯô÷kû‘œi+ŸxÀô˜ñú¯.ý°+ò±B.¼{³ëêL<©¿©Û©õÔ î«©µˆ‘ú=µ†¿UHcnf�Ñ<>F�‡Ë ^Ãe||ÐpÿyvŒ·%bÍ:×iX'襇%8ÛI•ß”?•å å¼rw[—ÛvIøTøVøQøNø^ødá’pYøI¸"|#\Œ�Õãçcóìƒz[Õ2M»^S0¥Œ´[zIÊJ/H¯HÅÈŸÔ- IcÒÔìÞ<·x¼x-œÀ½ÕÕö±8¯‚ZNxA‡-8³mþCkÒK†HaÛÔ³Yn1Äœ˜Ó ‹{ÅqHg¸•Ÿ¸u#¸ç¶L�þ˜ hŒ¯s ˜:6«Ìz!Ðy@}zÚgí¨íœq�Ùº/ïS”×å4~ª¨\°ôÁ~Y3M9Py²K=ê.Ðê °ï ¿¢¨Á÷-±óz$óß8ôÞY7"Ùtàk ûµHÖ‡wⳟ\8 7Ü…ðÎO$~ðjû÷ñ]¼›n5›ð¾êø`ããfóŸåfsãKô¿pÉüYqxµá†#ÀIDATxí] °E™þçœûJrI0ÉMB�@ ð�A�e�d­Z´WEPB‚A|-niÕÖV¹X„Z×*kÙUAØU)‘‡`¡¨¬Z>¶¨›„eU0‹‹èAB<ò¸ÏÜÇ9göûþîž3ç=眙so’ÓÉœî™îþûÿÿïï¿{zfúŠ´ÃQ­ïh’Þ‰$/ ¡èÑ")äpREäøvòå�ÈÕ#è°>„Ö?ÒŒÃ)H¥<,àìª@P×tŠL¤EfP'kNÜNó³"ÏÌT3–�a¨QîqX@„À}9ï]–ÿu)I­Î‰¿ B®òÅôÄ[Œxñtê<Êj˜�³˜DÞ8ò†ïG¼íìL‰·3'¹âý^dð%OCÙ|¨ÆK¾ÔÜM6E“Wô\É"�S|9a #Ó§¥$÷V\<ÇZàæDW,(]t¡Âia=ü¿?Ú;‘³Çor’úu‡t=áÉsÃŽòY±„G—?ãBIç ‡P*JÍÂ=›àË2ôìŽ Ìz䟗�½;ÈÅ5æ/�Ńk÷=œ±€Ç›f~A@ž¯µXÁùÏa"�6l ¤ÀLŸmìÅÙ6ä ÍHæç=òÒsš©ù¥|»¼¹iæGFy䋊§‹WL|YºlF:ßÅ¿çvHj¾aÛ—S$ÃJ(ÌzU�6õ¢ÿ’‡�aälº£ÓØ”ÊHn–ö0ŒáûÓ2ý`¯¼²—(["Kô–“/IææT€ÂÒ`*èí3²ü\_¼�¸önŒÃÇ�Yön([‡[Þ)ºe²€5 òJ�auê%ˆ7Œa®=è‰ÿÍNÙó°cªX6w}6cð?7BX9Tè´,¿½é"ëé|ér1±³†A}kÏšÌ.À¶»�¡ÂˆÏ2Þoí’=ߣÑ0?,+Ïg3P‘³ ŒÔý¡^Ÿ‘•£×?Ú%©ïÂÅ®Ï@_3’Ë0æ˜ð˜sàS‡À×ðæ™2P– d¢l¶`–2SvžÏf˜5@4!8Ý=ô…»rYùè)ŸƒÂÎ6ç9×ÛuÈk‡g0^«SR*æ+¿ÈŠ÷Ùy²ë!Ê=ÀÉÞÙ´RÎY1kù:ÓæŒ~ZÒŸÇ ù¥t›Ór¤_ £1xô|N\åÛ]’ýŒ'/í°��WBŠk&yÞr Å»^?-+®C@¯OõOaN…Q PŸ¤Ì³LÛǤÑKuãFCÛä½¾KvßB¦Âºi“-3kå)4˜�”c×`áæk9£Ç‘�RhGE€.àëü Ö:¸¾€aa K×öÈ‹ÏpnpIèö7i…´Dç8¸µ›–Á ÿföz¸{Þ»§�?ë“¡¤]Ž>dçšBÃBt1 £¸®KöÞɲa�•«×µÄ ‚¨Ëg<%Ëoƒëû0{=f~œüqÔСÞCáíݲçc^1?\&¥¤D À 0!+�M‹ÿÝ.ñΚ2“<¶ËžßЀ�@¿“ÄIÉ=êKê}óe׋N‡I)*1pŒcAçtôøÿè‘ÔŠ)ÜíaÜÉFÛàBêt‚;¡™n<¥„ìÆü௱€ô˜Óea�xÎ{‡¬ëš”Á¿‚Yÿ—ßçúˆ‚OÖ)pûÈëÀé„:Â0�¡Î »G¨Cè)C�²LÜ�Ä`­:á›�—ÁíßK ò\Ô9ÌtbUSbY ÎÕBèÏ»|¾ì¾Ïé6Jå¨eb50¨¾C2xÆû;ùæ\>–´Á�ŠH¨Àáãì4ßZ™¹jžì¹Ûé8T¬©dlàcÏïBÏǃ.kqb“È0Ó”Ô‡Wå^nIÑÿO‹ÿ�ù²÷~§ë8ĈÅCã²ìB<§ÿ!Ãį ~9Lõ® z½p�ìý±Óy³M4mŽ‘ Yv:û6øú.0ÙvûÍ"SZ?‹•Ó4†Õ)ĆåãÇ�îK‹F¿Ò”€;á[y,tíoù¤yfßó£cPOÉ,tŒu·'é³ì:A°ÊZ!W¶áñàóé{:†§ìwç+ø9®îµÁwÚ�?æ"Qº^�÷€õÄ áŽÜ°|ÇNîàúo›‡¾ ÉÁ;y`FyÚq2z Ž©kÁ™c²ìßhc‹Fì­!˱–—“Á� Ä»cË»xšGWÔ-Ð;e`Ùx\üõÊÞ;&õ6_·°¯oe&eåIü+�ÈŽ¾…[oãíò�iÀt4ϣÅb‘!6õR¬«Ój-�T‡zÅ[‡Þ¯Ïòëm¸]¾y ð�x�x�-ðüF"À'*õz @WúFeÙuÿæ1}‘#™5ê¨íå`XtŒˆÿ·òÒÍõ‘ „ù6OîÞáÃTÿ·ð5ý|ºƒk‘ií`%!?pñqæ‹Q,¯�gÞ1T¬¢´W÷Sý/Àâ>þ ?¹jÏúgQÄ€Xô‰×Glp^WˆÔ{².6”¥‰Ç”?Ú4_eªÛxêâ¬]¸. Ð;ã\ ë,”—î0«E„Ïj×wô�øæôw]¿öüš•Û×€íÅ 0{7"ú¹Ã¬Vã5{1-‰D†eÙ¥X|83N]çÇõv˜# ĉØ`ヷa’~)YsØUcÓOù" Àû{~é ËÒÇ`§²P¾Fûêlj€½«²é ñŸ�—OwØ1®ÄW- ùòäb¬ø%>XTGC'V|Ð1ÿp ­—‰=ž”X3«±ªךð™>ÌÇûW1%ÛZýW³ðŒKð‘Œ,S�Š<<`�™Dz®ƒ“‡zÿSyxi!déÇqéd䱘á1AõÏÍ*¶NkBfö€,9Ÿ;oÅ­†+P®º•Õ‰Iån™ê;AäÄA´Èù&[áÀ%NMIú�ÃDpÛ‘>OÆ�Kåν@#M¥z%—{^M5{òé"Ý]…ýÈÊ„]äÙ½Ò=úœtÉ H‰›7Í‹Gúz´d×üóÉ+Û–åZ¨åXg\ &�9¾Ÿ¥|¹vÊ^ódÀA2ÿpƒ,ýÔ'Åëņ7˜ÎÊ8™š–É''ÿõéþÞ}ÒÓ{¢dÇFPÄ*KºåùÁgºw@&Çž•©‹.“…Ÿ¾NzÞôF¼C ,Œ°Dã��˾/Þ,òO7ÂèÝèÙâ F+ú ¨cXü  º­å²Z$Èð_–%ƒèý¿ƒÍƒ~IöË–¯Ö@¥<|ø€‡d´ïYºã×Ò}ÌâJEõzv|Bv}êï¤ûë·IÏÂ5’=8#Sþ¸¬üâ?KzÁüªòLíÛ//¯~«ô�îƒßÀÔ­º§®J«L¦Ì<`¶ïf¾q)¶«q˜—­äK9óÂtÌ{7V˜>?mÖ¯¹q•vÇA[Â[k%ÅžÏÀžRæð3YUèÊ/ß$S×|L�†ÂõµÓXxi\ò@^|ðF >y.'‹ó*3dWh¿jœ‡2x|?K숡êÖ̲m2U2pÏà¿—Ö�L0tý4¥ã>›+ß–—N©BÓóæÉÊ/Ý$“›>ª Op2U¾N2<RÕžþô&€ÞÈ#Á'Ïeƒ“2«ìZ(Œnü÷Z>,¦…\•p¹Ù<ôñʲÀÖ¹X\ ŠSœÆÄyPd=è8à¸dàB(z×±_þ5‚‰ág$x'oÑhaCÛä�™ïùøŒƒà‡x/H;9!sاFk3:h>e±;X®††ý͸æšwqÉ…l!Œï€ ™ÆšzçÌ5TÐCЗ _�DÆ2êbWÁ¦>Oè ŒÆÃ’LcÂÇž�¶Éy1nŸàcô$øB^ö|*BµHE¨.bG �å;YÉa&Pb7#Cÿí”#)Kº†~˜¤©‹J³ `î“ _usÞØ�(¢ó)Û`[øàAÁO >Û«Ä?¯‡‚“?)=;àøog³7Øæ™(¸­Ctƹ²p!îûÏÁ’"A²þ,_)ΕŒýn|¬Ñ_@ó±o˜&]/à>Û¿ãkÒ3p¢ä†¹˜T¤éô¢g·¯à_ý9.˜ð¡ç§¨&•¦:9Wq¸táYuQsAŸËÂlçœý²h`±À>ÈæÏÑ(özŽþõ82n¸œ˜*S)!ÅhÚ]««ÌÌàÞ{€€'¸úZ™~V{'ˆ��çÄ€Ï6Ø–‚�¶}ð oDVà³D2ãÊÆÃXE*ìÄ�XS[°ó‚Ю'w^ú 3Gé£ÑË^GÒ}½Æ6^ ×ü¬x:˜>EShöà$“4IÛ€·�6|öü†‚ê·iÞªÉf±ã+c”àm–Í÷XÀý�Á‘{‹ Ý�`Q+Y§G XŠZß”Ó9�3ŒÇÓ0õýñÜ"’Ë4h‘&iÓÛàsÂ×h Ì��â»_MÆüÃfˆ%~Õä16 sÑñqç+â�ŠM X­À@bæÍ’C+t‰ ŒÉE=uÔL;OÀ9èÜùuééDzñÈØWcbè"Oÿ"™ø>lÜ>{>Ú2·z–ï:ùÕâ*sõëi eÑBŠXB±§â—t`—–ü< 0Gw¿,^†«ð=:«Õ‰†£R;í<,T†;jW-[Âãû4¶œìï“ãn¾Iþzþ]·7lüCÿªkäµ IÚl#ò„¯§NNÆü…«NNÑ m±Ý>Ÿ8â}Ÿõãà-i´ÉgiàÓA²¿Âf#|Ø”5XɬkÑšõÆ¥l\É÷€`h9((VtB'õFA‹è Ôn’ìuߺÃ@Ù …Xùè[$‡þWËjöü€Ïžu…Ô"ñFY�¼0© üxmùKl+Aƒj8£N•ü¡›E¼oÄ¿8ì½¶Tl•Ac¤ÖÌåâ_‡ÝŽòÅ™eÎ�L* «á v�þ½0‚ÞÕ’3ï ¦zqŸ€�ž¯àOÖ>ÈFæ­@fÇt Á]±bPæƒ!z€EL;¬‡=IwÂQ,Ê?8NÎ(®Šìšºµ»@v¥ѳ##ºC1|LðÌ2l¸\iZ‹àÊé Võï`ÖÐð&ÇvØžvûœð•Ò*¸:|ÜB/Á‰]v”¼õaĵê.(ìN@ÔÉÊú¸Ì#ÙWܸ#;o7½Eˆì®sH!8¨'{dwøèca²é˜K"fƒJ×ý°WðTR˜&ØÒÙ){¿÷ÙyëW5­4TÙ…eKh(H0Þp8ÀÝÁôåÕåøÓWlÔkf̧ÛWd+òâè+Od|½xÛWeï?д¹^�'''bM²>B…Òq]çëa }ÄØ$ÍoÑÉL {×wétAóÉV ‚J�m®B›ÔB àìÿô'¥sñ"¼ò Ü›c�Ëy‚¬ºá ƒž€OùÂ&Âê›>/¼æOFwûú =Ùëäï÷ȼÔúšÛ¿a8p ›³Â_ŠF>È­ w�ß\‚ÔѺ:ôOææiÀ0þ–.ÖºÌ _(ÉT�ØtÍeB¸LJïG™á�Wâ=嬬¸ú*íÙêŠ9, ¯“wÍ�¬¬¾íKÚš×�/í _Íú¨€ßÝ-»ï¸KF7mTžÈ› éä‹ônW/©ØbÚEŒÃm@8£•iíÜÐ_Ÿ¯8õD¾ê¯�s„Xz’Ü´)OVl€1¨'`!cÈ( ëø3¸×Ñ¿>‡±i­g2�#*[;~ª“àß-#›6ÊBðrèå?‚�!ÈSކaÑŒvåòºFÝAo¹…E»ôÀ€¤sS’ÁÒqu%ÆÅ#™¢Ê¬Þ£‘µ=(;•E¯[!Û6h=5ŒñªÙPO¬H”†¢H¡D”ò$¤åñh© àßy·¶=ȋ˛9©þ–».ù«“­š öÀ)ÿRz>@BóÅiLÒlñVÓ„:ô¦h½é,f¶3j6‚¼"j¦øtûŸm*øà!5�Ý‘AÀÙSMZ(àdÖzõwƒ(MeКñ0©÷gð»ªÏeÀrÙ�yQão×(ƒ,èøtåc‹. 5öDí�•4ÈÂÌ Û®rÆ÷]0 #ðeÅUÔ pÔž]K*å =Ÿyí¾ó.zئù¬‹ÃGˆyT^ÁYøº+‚Ëåä-WÔU‰#6ô½qb¦W`Èà³âœ%PŽ$™"pzh#Ô .T 6_ë \>6òp88°i#®{²òªZ#@) ×+Œ«€ß-»îº'ŸÞÇì’æ—\]sVúË| ¿^Z(¾+ŽÄ\þ$ãAÐ!U„L«*_ Àª-(Øš¸ ·ÅG•Æ ®ô3�'Ø  Ø[u•¬ Íâ6ŠÏI8>i:·ïz¾i» sÅ4y®ÂU©“@±4OõüLƒ ×-ôc|פùsŸ@GUSDW·î8Ð�&ðC¶TáHi>übS…¿8µÅ Ó²\öc|fzå•—O œÖ)‹å…†´ë®»Õ»,íœv v¢üDY]:ùñXYp¦å8ìþÉk’� S´øŠmG±f:<¨çÇÒÆ š0¼ÙòÉD<ªðár®^øšöv€Ãù8�à€�F@mG�hY,:a·ëî{|ÒÌêÆhüb�„ya:й±œ«çâbºqœÓÔ°XM®v[zâBÐ<0²Óˆhþ@A ÄA#ŠB�pþÒ°”€ÏÙ>{>çåÁ/–/¯Åµ’<÷Räzy¡¸•À`+ 5BÜ\=?�GX9âVÅÕâ876¯¿lÅAŸ(lÃÝ%8wËz°ìÂBÁ=÷àÔဗW~ð²¢á ¸n^ZÞçïºû[¨»àêí¦›ðY5-¹„òceÐÁS7…p¹E±+‡Ëy9Šù)ªÓà©• HñÁOî’qX3MW �¯– Ü'þnô3’aI› ý¸V\Ê*HÖÊ/(ŒüifôZÈ9Á®{îS—®ž�8éøÖí;ðó=¿˜~µóZ¼º|W£Õ\[ –ÄïM?Mjk¦à ɲŸ› ¼€Wˆxªª"‘$6 @�8ƒ‹ÍYÅ_W¬:Oœ¤ÑdÔì �¶¥önÚ°½UÇ|ʾk¸¶Ïžoî.8®Ö–’«ÈmQF˜yk„Õh7›‡ÖñÌ_±|�Øq“7ö�Í0Äèü'y…ÆCZ*®ÚÜy^0¤`fú¢¤u�ÁpP|ÎÙ¼š¤ò� n<}U�à^ë *¾ã×�09t>–aÙ|ÏWåUm‹²h oŽÇbÞCçNVa¬Ô·dâŒÈ‘ÁÒ’Øn6Mx€¬G�dÄÉ‘¥U[­5 D¨QN­Ÿ·ˆì͵LömÚ(/~ó.}Ù!ÝÛ‹o ñáhñ{>Ë蟶f?°=´V Í"Ø´.j0H,qw÷8‹9Œ]•`È nr€çm¿EØ'·‡§í&À£E°0r|U�Mתµ™dßL ûd©Œ|ôh‹,¸ðš?þ£ŸJö;÷óÌ­ç̬c™ÓR•TS•³KrªH0�”°ØuŒ¢ øº_‘‡1Ó à&øu�£ÂKˆñU)YŒŽ«ÍP5˨õÐ LÓ¹%ÓrÉðQN ]z«7‰S¼8pV›C°v1m§Ò�ÑE“DʧaC‚O,Õ8Œ]ñOt°ZâmIï‘y¦TBóªÎ†ðØÉ1´ÒáÆQVÓê!ŽV•˜Àr7®v'KÃÕ÷,x­LóóòàW!T�Ž¿Jü»ù�‹:Ž@p!®DÎ`è=BL7�ÿl¤ÀðÂùf€—¬ráMù‹ÈšqQÌ�7Úaš¼R­'Nh‘®nc¼±zû8{|>�fÍüõZ)Ös<Õ®oZ!ͼ Lç¯×j/j>5ixË=Ä:ç[lÃõ <3¶YPÑû)>›] WJ.] |¶Z+?9΢S®Åc­üè-U+‰V8J¦‰!±dÙ­Ûp½°Ù8`Ü ?÷2ð0¾)»»MÑÀcÿLÌôüÒuj`\MAù²®†­8«QÀ‹ÊœUàÉæ£¬ùW¡X“—ÑJŽß»‡O–8ç“�’á¼ÄØî6þ˜|§X–™à& Äœ{pl¬ô=m�¯€s“(wÏÒãg¨Šà_uDYÈ#y­¤4½Y)³“¥�&£Tahïªç1-®W2°À:]9ä�SæÁ1É탕@2�á —Äsp£hÿ©=øBg\¼l—Še(~]SîH¥ÁÞÞͽºÏøˆCPrL|4M¼¨ ƒ7òH^ËÉ`®AFÈJ™ýßíA=~§�>CtøÅOzØuJF `�Å�„²nýFá!\/3£Øòøä"§áuKl�_9, ÒÀ Ý_ðöýÝ2–î–ù§œ,9l°˜ÅîÙLé‘ËædÿÃÿ-û>þYéÎÚ-Tq 4{ìXšã�<%©3Þ(�˰ž03]*¶²ÉÂÓÍ`Ÿàoýw‘_þõ–B |€#O0§,–·R úí52z/±Ä¶Õì1%¡b»¬ô~ú£ôž—’ôVÜKÒL+–/¡é� â¿*3ÇŠwÊr»4[¦2Z÷ž6ÛÆ{Â�¥¹X3—ÿšÒ~Ý÷Û?Ûñ”ÓeèÀöôéÄÛ—]òÔA×*[¸)Ùð�‡ï³çŸ$cÛ–å(–c3(G~QÀÿƒ l�/r^ü.†ÍÓ}ÂÇܧ.¿Í—I,�ÂhÈôUY/S7éKìø»]ê$_©ÑÝþ1�e1GaÖ�'@+öÏÆÈ¶“eø|‡a%êe'�¡ÂäŽ[Å~Çyd“G|�Ô¸B7�¸WÓÕi;×?×À'×ä‰ÏÓCU ”›2³l¼e«¤ˆãV¦C“,ý­¥Iåļ?Hÿ¯ñÙØéœ à¼ìÜ¡”|ûJ+5°²ÝÀË[��,#oÅ9mA1¬Ä­£ZàÀo‚¼/T¥T�J;¯%phsb¥Ø¡a^®ˆiäð”ôÿs�·áOáF¶í"+®51öso`ùåëeäì¨MÖòJ‡^€ ÜÁÞ@䙬jV¦Lû·E°XèĈÍ:Ìj±Ù€ ßÊý^úïÇtí’Qܰá¼Ö$²Vûíü4løÇ£;Æð¸ÿu2ò~‡UÒuÀÓ2°kÛá°“HkQØn—q`§Ä;ÿ)xæQÜû¯=E†wÔc‘†6Ɔ†ÐãÙN¯Ç\€ÁŽæ¤ýÛz l<ôÑp=±!FÄ**'‘=€%èÊûOIßž6­Ãж`¤Z¨�gð7;€ÁÖ7Èè:\ ð‰ÊJd` ú÷Ûçhé#xÖ<ÜXŠÏñô~£·Lpý‚q_1¸–øXlAäP¯Ÿ ¡á×Éèa×aqˆ¡®FM•öo“ð©{(þ“Ä‚˜›ziÖml`=\¬- ·sV³oÇ ”·‰|�ºZ£�Ꜻ?UF¿A,ˆI#M£7`yú ˆ–÷é{�sÎCd¢}kؘJ£Ö¸/÷åÑWeôï°ˆJ \®!@°Î¬åe.ÆDd/¾@Á|@·™·ÑNǤê–:¦®�ûÅŸ‹F›@Ýæ=Ù.ýg¥%· cAÜÇ"]=lŽz»vHY¾åÅb{¬ÔykeäWN÷¡2u'›6¶óã½gæIé»Û0þ�æˆÑ®¥˜n‡Æ5@€ CÎøÕ[cwÃw½YFätÞ8eS³á! Ü0Á‚`Bò#|{s9V¤8DüÈ azít^Ô!uI �þÁ§®©ó|©ÆS±›_o�`­Œß7-¹ ü$ÄI¿î[“ÆÅ9âjr_×T't‰WM6œ*c÷|ê:.IaHñX)'%Ùí²à2x‚{ÙçˆÛs‚:T =ê˜�nÔ¿âM2~¯Ómdj�͸–þ¬”žïï]ˆ!a3WîOÊÛ�®¶ãêz ®¨3èn*#¹w|ꔺuzŽ+ŽÝÈØz@†O•‰ã�¿?Ç›|»ñ™ë܈²*hÀêf†º¢Î »sÞ,:æS§ª5uF•\€@:YÙ.óŽÅ‡¦ôKêÌÜË¢Q¶›ˆñ%'Mâ”ù<ÅïÇ ßˆäÅ—Êï[+‡^t:LªõDAÊê (È?/‘ÜŽU,~@Åv±è¤•0Ý uBÝPGÔu6d;P’m'êã\­r*ž�p“xË|¼PÂ¥c0@c8êÖ ¬âÙës\ÚÅ»|ؤۿs§;©·°Îœ“ˆ[bd‚zßÐ4„Ǥ V ¿†±n=ÇÌÆ§7À�ì äÑë½tü•VÂêÞµ§ËÈ3þsïßE´Ì¦Cz½uÿ¿•Þë åçúDúáú(0ŽŽôÛEÎäSxšçaïžpý›eìê'¬ž·"´Ü(�æ ¦Üߎw ±wÏç±pt)?˜šÈ?LâzÂ((‚ÞÂñ›}>7Ç-Þ·=éøÌZóŠß²æÓÕ–¯œÎ¦Ž½!ôöõÖ<. ÞŽ¹Á?âÝö³©°Ic0xX{ÈÀ»éðŒ1äýŸ‡^�±þ!œº^Oã ¸-äiV¤Nanàqn@Fž�ÞKðØóï±[ÀéFa:40�†0ëü’Ç�`*Ïèñú >¬} þ…Ód âšIÆzîsÑò^æÎ(4<ë…ö<ÂE˜¨¯‡1ph FÕHÀ4ïæ ïT(˜¡¥*˜à9 à±ï˜ò<„Foð° ˆeåùl†9¥D*Òg N)Û¥ïܬä6âüÝØôàj�Š…¦i 稕ãÛåÍ¥¸œ"æ/ÂÛ ÖP°~#‹°-üixéLs b- c>—šÇÞÉgéXhRƒ`äÁÊî@R¥"xmE1_lá–ô2x$˾yÛQ÷7Ø×ëõ�Oœ!†‘­×ËòèòçbL™»°��c�"ˆiþWßIœ·Îñõ0„Õxu,ŒcÀD¡c p?â8ïÁÑ@ù˜š·ætØ[Aè>”Û �wâ¡ Èx;:%÷Tþ@ìÌþ4(bê¦¶àØ ^6û²9‡GtX@Xµ@—˜— ®Áú œÂRtîy²$5Š?¤Ì¿¥‹?*Ÿ[,/垀ï„1@)Fno3hœ�ã8‘V.Ù†yˆ3}Ø@±2h¼†›í�‚éu´¨,Sh,[pðº›iÐAÖ‘TAGŽ85%ÑE™j¥¬BŽ(�«ÉÛÎ;Ê5ðÿ/9%ü¼{IEND®B`‚ic08K@‰PNG  IHDR\r¨fðiCCPICC Profile8��UÝoÛT?‰o\¤? ±Ž‹¯US[¹­ÆI“¥éB¹ÍØ*¤ÉunS×6¶ÓmUŸöo ø€²�xB Äö²í´ISAÕ$¤=tÚ@h“ö‚ªp®¯S»]Ƹ‘¯9çw>ïÑ5@ÇWšã˜I`Þò]5Ÿ‘�Ÿ˜–;V! ÏA'ô@§¦{Nº\..Æ…GÖÃ_!ÁÞ7ÚëÿsuV©§$žBlW=}ñi€”©;® ÞFùð)ßAÜñ<â.&ˆXax–ã,Ã38Sê(b–‹¤×µ*â%Äý31ùl ó‚µ#O-êºÌzQvíšaÒXºOPÿÏ5o6Zñzñéòæ&�â»�Õ^wÇÔ®k¹IÄ/#¾æø&ñ½Æ\%�x/@ò™š{¤ÂùÉ7ëSï Þ‰¸jø…©P¾hÍ”&¸mryÎ>ª†œkº7Š=ƒߪÓB‘ç#@•fs¬_ˆ{ë�±Ð¿0î-LæZ~ë£%îGpßÓÆËˆ{èÚêÏYX¦f^åþ…+Ž_sÖ-³Tä>‰D½ Æ@îקƸ-9àã!r[2]3ŽBþ’c³ˆ¹‘ónC­„œš›Ës?ä>µ*¡ÏÔ®ª–e½D|Ž%4 `à î:X°2¨�‡ ¾pQSL”PÔR”‰§aeíyå€ÃqĘ ¬×™5FiÏáî„›t…ìÇç )’Cd˜Œ€LÞ$o‘Ã$‹ÒrpÓ¶‹ÏbÝÙôó>4Ð+ãƒÌ¹žF_ï¬{ÒЯô÷kû‘œi+ŸxÀô˜ñú¯.ý°+ò±B.¼{³ëêL<©¿©Û©õÔ î«©µˆ‘ú=µ†¿UHcnf�Ñ<>F�‡Ë ^Ãe||ÐpÿyvŒ·%bÍ:×iX'襇%8ÛI•ß”?•å å¼rw[—ÛvIøTøVøQøNø^ødá’pYøI¸"|#\Œ�Õãçcóìƒz[Õ2M»^S0¥Œ´[zIÊJ/H¯HÅÈŸÔ- IcÒÔìÞ<·x¼x-œÀ½ÕÕö±8¯‚ZNxA‡-8³mþCkÒK†HaÛÔ³Yn1Äœ˜Ó ‹{ÅqHg¸•Ÿ¸u#¸ç¶L�þ˜ hŒ¯s ˜:6«Ìz!Ðy@}zÚgí¨íœq�Ùº/ïS”×å4~ª¨\°ôÁ~Y3M9Py²K=ê.Ðê °ï ¿¢¨Á÷-±óz$óß8ôÞY7"Ùtàk ûµHÖ‡wⳟ\8 7Ü…ðÎO$~ðjû÷ñ]¼›n5›ð¾êø`ããfóŸåfsãKô¿pÉüYqxµá†@IDATxí} ”\WyæÿªzQ/jɶK6Þbc-–7l‚ÁÆ-‡9Æ8 bâ!Ca’“0arf’0ˆ“œ&Û„fÛ�@0�x K·�É»}0±-¼ÈZ°-õ"©»ªÞ|ßï­~ÕÝU]Ë{UïUß+U¿í¾{ïÿýËýïúD|ðx<�€GÀ#àðx<�€GÀ#àðxº� «©óÄ)¡HS|ÆKxÕ‡nF )Áèf@²D[D±ÉG÷s$PyK­*±Í#gÓ�¦ÍôùcÆztý1;Ph|H9V YJUÄqœŒŠëU<óþËzDâýéü~™Í­EH‚é!äKûñw­ô–D‹"«püa¡‘ôÇ‘È(Ò@ 1ÀûÞ0ƒ´oRÆ¡ùÊþ!(Ó«P󋊸Pê“VÎÈ̆œä6l %\‡xkÀØ5PÁÕ¸ÁýÄÂo?Å{jLúlš38BiƒþÆ»‡q=…x‡ðî!_Ä»pï®÷!Í=%)=Ó'}{D~2�ø›NÅaòø É¯{£PNJ.À;:‰4ƒ<à�µqˆÔÀ•!”—õŠìÙ-Û„Hg@I_ŠWNC¬“ñ{ ~Cy‘^ÃLów~ •×õ^-žµ…œÅFBžÂo7Šþ8î?†7~ëò¨È†=�ü�q*â ¨J/½ÒËä|è‹q¸CEY>ÙBâ‰;>ÀIEíiž�¸±(áy¨iÏG�» dzp</ àÊè5©dôHOBþaú|¢/EÏ#‰Tœ"NhRÕ—ôœ÷p…sê«–;—C’$ÀÞ6qXÕÆq7Êñ Žà¸3/Á.‘§Ÿ5i¹Øš0½fÙrÅ\ªþ¬^æ8Wï>^SX%díGA§¢–C(ëO-Jï«pûˆ÷ <ß…²z‹xT+¾R!ù./É;ýñnºSs#¡¿È„ù›?æÀkµ8æaÔðÌ'„• §ñì¼ûÝ’ßë•Â��ì}÷ʉЦðWwÿFùeÒm˜¦JÖ/A ‰ï¥eÍÊ‚ô]„g?‡ÚñÕÐ�sò’CÛœÁ(;<*�!Ç´xnÓÔ›iüƒ2F¼)‘„< Z…Q(HéHºÑoÇóoõÈÌÝ�˜ÐØøƒ÷¼1p`$x´ò•`Ë,i« êÜr{µüº¢ä_¡¿�l‡U8ÁØu™Y»³fç�ïfBÙQκ‚3 ˆL{ 4ÂK@3‚�"¨g€Á8îÝœ—â7áìÓÇúT�(/}3Á�ÓÑ€˜€t5-·éC9ñØ)]a#²¹ �Ýc�ÀÏÚ÷Uáq\n¼ 1p!ß«6Ïø<ž}á†>ÉÝÈÓ¼Ö€Øg° eûCƒ,7¡kž¥£C éâS{µ¶çuA6^†ë_Åù•=’[ÏçtìÑvµ|Þˆú²SzB± m6à1ÌõÀ;@ÓHã¡©°g7Ëè‘gÇp®v>î õ7êBÀ \WTÉ!á Æ¡è£¦�ŽK*ø†“ ¼%”à×0f·-RÓkmeÖãM°–ìP,³<xH„-ä¸#FJ_€gðÅyîI&³/x߇úðYN‹Â†ÖÞe7VŽ¿4”Üoáþë!¬ÃŒhÜûµY@ïÀcLPš€Ý`iš Šï$’ûz ¥¿ï•çnwI#"›~ÁRÇÑ g ÍW|NÌ™‘=W¡jz7$îê8j%þ ˆË‹ízbG To }*=ø!u6«ä;hW}¢O6|ÙM<ò† ~ཨ�Õ|Åß'k‡WKﯣ=ÿ^tNm᫬íÔPpý}m_˘•1w^:[F¿ÁÇ_”Ùϯ“ýôØ<ðÁÀ{P ÀQWŸŠ?"=oÇõïBñOå+³RÒN?ëæWIÅßN60ZrÚ CðøôW˜htM1Ž—É—'[9¢@ñ)H:ÞÊÖ¾Yyá¨KÞƒâkO¾wó£€¥æÜ40‚€Z? �~Ç�õÊ1Ÿä¡𕲎х¹¹©)z â €Âv;'àh�rT6\�ó?‚âoöŠßA m,{`k†rÏ>zõGa >z5¥ãоÆÏ¤š8�Ó ÐWótÕþŒŒó|÷ýÀaYÖ@küÃLJ ðat*½•“PЖä}<ö=úT˜ì�|¢ï&ÏÉX0×¢êÿÀ€ìÙMš¢2�]›/ù²®b­?f:ù8Ù$8"ß î‡�¼“MB£üìÕ÷Êß¼h¥åM�H”'OÉ[ò˜¼&ÏÉ{V8Â8,ÏÊô/¯@f“é¤zV6¾ c÷¡¸«ïp3D¯¿Îëb‰ûÃ"V&öàG/ïÌ'x_¯<{iŽÊFcPAÚ²1ÖÂk[?”SV•™� Šÿ}´õ)^ñ+Ä¢ë/ÔÀð÷`}kƒÿÓ/}È“Gð`Yõ , µì³râ¥E)}¢_‚M3´ùvši׋¼'pÌã>TG%|{2¼»Wž¾�£2³È‹]s«ëûhÑéòã˜;*'üOô�åg­O>«Ëß5 õ„4‚€òž}>Êeƒ2BY±2£#�¤˜µ¸]ëP³¿ F¾Ê�1}ŒåËgáò½ü(†É\\s<Ø�€C@;û1áû¸ù6ÌxäK�“«ìÄ0±›Ž]i ü厾Ùøþù¸yƒpùYëSñ»’înÌÑÑ‘"d¥²rUÅoȳŸaY¢2Õ¡²%’m×)¥søqìEÍÿ·píÞazøu^×»t‰HÉòK´€ZBG Ð7ðixÿŠ2ëd«›àèæ�íå?"'žCþ�pç·Ëo'ôèÆš¾êï&éM€È‘“N!CyÈÐNˆÖ¯¬�§L#€û]³ç@W«üœÔ�­f�fò]7nõãòÓ#Ðþ~|ðÔ…@Df +L“_G ¯^!ÏÝ ycç9×Ð^d:d~€Ì #ð£òsÕÞMÛ_ ×�ß¶S—?ó\Ê´ˆe³ðNf(C”%Êe‹2FYÃ�ûf^@GvPîì;"8¶ÿ.0‹f™ â^ú>xZF€Jâd 2Æ9Ÿ\!{ÞÍ„£2ØrFH ³ÀÛξ�ƒ`ÈWÐV{-Ûû¸O�€ŸÅòÁ#Ö¨§iûn{QJo:^öN9YŒ-³6&”IàŸ’—lÌKáF0ä¼#:�W�­²�ذF€é¢_ ‡¦AiWQz~~HžzÖÉdì™&œ`æ €«¹Î„v\²“�r]�„Ø�Û�@»fûu¨9Ü=#ÁkGäÙG�l¶«qä“)àž‘ /ÃØÞ­è�]ãzúãçáh!€ À˜áC²çNFL§cÑ3c°\‹]znEÍ?ÌÞYìÆë'÷tL||ÆØ~ŒëÐ�)t=½3ït²št2a ‡u»®àøú+°³ ·êòÊŸ)ëò2B‰ ØIªíP|ñ8¼_-w2›vÒSo�Pþí°°·Bùû0OÛ/æI»d-¿òq AF`FžÀscNvÓ Eª €ûõ]¿åï÷ÊŸfqZöesF-ùØwð;N†ÓŠLj €nJ6\�Ãwãáb yåO«ùrE°F œÂjÂÑ´w ¦r*£Sþ£²›4È-èdb›ç~ DÒüiú ŒRV)³è ¼ÅÊpjû«Rç@ùuzÙHÏÝç? @Ájßá—>y÷%ªŽ@²ÛÙÝ�ïI]4$ö8Ù®þJûŸ¤Ê Nã-…râÀ´ï”àüi;ïýÐø=-#PÄŒÁi wJþâ@ž>ìd¼å”cJ 5M£ËyI×´¾Bå?,%tªúš?&^ûdÚ�<€Ò¬©È _aö¦‚s[´¿@ósL… òlDÐãÿ XÍ+Xó㾟Þ;Ÿcþ:SP†)Ë”ithÒž‹ÕRá}§Â¶ûK“Xk�é½ï`ç÷mþL‰º/l Ð (á ¼sÚî'€¸©èÐ%Ôe½SØÉ§Oä&Ì¢`ÀítXH-�ÿãh•iÈ8g ]9dvRÙo=éæSè¨"ÚãDÖž^”Ü=ë_�!¬«ðßäkž¥þÍô"– ã9Èø‹XÏòòU²ÿ1§�*sÇš Ü}˜±· ùD‰ÊÏOtéN>4—þç1è& lSÆ)ëyÉÿhëE \ÜÑÁ­Å:føÑZ½IYÿ·CèñŸÒN¿ ‡ ÷Á#Ð�côPÖ)óÓ�}Ò¹–¡Sôv$caÛýëÖð‚N?ÿ‰®N �Ï·„Å!l9ŽÎÁ·ÉÞÏ8�hwIÚn@¨¶ûù¹.|™õpñáßîo7ç}~F ,áå9Ô|œtÁJyîa§í,X[› еûÙú†E¨üÚîo'Ñ>/�@ç ò‡l  þ,tÃ}�´­•r[ À¸ûœ– á²-›àÇû;/�¾A Üp!u‚Eoóü€¶YçÞL`WhüW÷ sÜî\òöÁ#Ðiø�­¡ÛÑCÙvì2ÔŽ‚µÅ�@*ûSXä³Z ;WˆlÂFŠœí—ŠÙPíÚçá¨�@3`óØOìÑ¥çü—˜ECª35Þ‰åQ»Üo65Š«¤ðáa(ÿ¤¶ûÅùÅÂBŸHÖ@åå Ã`ÿ‹Â‡AÏûÇM嘸�¸€Ú_{ýɺW¡×óNVûô¬W�uÞùò{ZFºPÖ ºÄè¼xDöÝåt§å j$�¨°J®Ê>%뿇 ÐÙa\íƒGÀ#`°ŠÈCù) �¯”½/�T”‰©KÒM´Â„¬ûý•P~çú“äD-�ÁÔÿõd L Е ¨3"û>T‡’"$1=„ÉÒÝ}ËÆ“ R¼T¬Bƒ†WôîLŠ›>ÝL#@e„Þ„¨•èÊ!,�;ûÙƒ-ÅŒ.%A\’€—Y)}mÕ„íøÃ”?<�E ŸÏ ÊO/`ät·Þjn/òB ·TIcH§" ¢/`Ì¿_Â1~¹É«"cáèøµÛà¨Û�1_R�Š›¼¤fjEŸ—ÒŸ`{dj¾¯øãæœO¯« ÎPw¨C–ÐDt(ö&À˜]éwPÖ]�é¾—p¥=‚®æ–'Î#3ÔŒ`Å`p u)�}×S·¶Ç9�@ª(aè1#¥³×ÉþI§kq=ÎÚY-S¯äÞ¾Jr§âCž¾ö�ƒC>�åŽ@Žº´ *uË‚›‹à,’¯ý—»¬zúBÀz!¼€0V/ `Üöò÷Hðë#¾öOH|²Ëõ¨[ý"ÿ‰8ŒÇ4²Ö²àj{_”õ÷`“St\øžÿe,­žôD(aÏt Ê£«dÍ9q�´<ÀZ¢Â!YÖúoáØ%ŒAlm”D ô‰z²‡G8/`Ó ²ÿ*ÿúq£gìkk:Äæ¼ kïÀ6Ç:ñÓ2kB�±Ühˈo%2Q«iÆvû‹¡Ž.7*¾%ð ÕSfƒÙJ“ë¾sŒìµó¾[!§Q+òbM�ŠPþW£ý;LÑm)ÍŠ ÚzÁ¢@¬¨ÈO7˜ó±¬’ð0ßÅ´ DScr>ˆ<žo0ŸÁ]wò(£bZ^-^ #p‡ÓÁ�(Go© €¯ûؼȄNûÍâ.¿¬†° ãn™E¥-bÒ%œneRKP(C%(ýƒ{$ø A >i|„Œ^–@ÕzO}¨òƒ`@—<: ý-ÊKDÎ:ÓÌ Ð|\5à!ç§°¸öá{,�NÆ+Sx£QO¯j&m{›†äz‰¼™Þ1§ƒÍ¡i3Xu½ÿ ²ád°ãA¨Ë0¶û"+šN³9Z}‹îû ¥`½ó½rÌ»Þ!ý/=Àz’.…RÜ·_ŽþøÇ2}ómRü‹ÿ%Ã*fëñ6ÍIö„¬²Û‡^Õ ~ûð¹#’ßÈàë.—þÓO—üºµF ë) ÀÑ=&/|òÓÒÿ©�ƒC4äOÆÄ:‰ €Êä ÉŸ5 ­íÐ4õcva‹²ö¿axâO±v¹UjÉ£¨‡�ñÇY�û'2ý®ß‘þö/ÑÏښ¼ën9tÅ[eåÄ¿ƒM§€]“(rki"�e 準Ã'ebägdäækeÕ«.j ‹Û3ï}Ÿ |â¯ÑS�º+ƒM6x˜œëyQJx¬ìÿS§‹ÍÓ”@5oýHþYÇE?g™¡¿l}Ö›uNúà >%«~°S†_vž„³˜±Æû0)Xj<€Ìôc?–])Ã?ý‘½§ ÍIÍ©-×wB˜å wØ=)“kΔ5ÿv£ ž—Ͳ2Ö ‚‹àm�Lþp—¼à|4ú^‚\fÀHt¦Bè†$G.Ǭ¤õðb)�C¤ØN xŒáÇþ€°P0žÀ`V”`Щå�ÀBY)+?0¢Á\ ÃI/ŠjßJ <)+½ãµ#" ‹•æ;Ü<´ˆ¯ ­ÃÖå,èxqÃ`Ô(ºx½)3³ªëAs@=gØ¿Ú “ºýœEå?YH«ºý =ÐEåÄÚáŸî‘<Èë. ÔEê$P>‡:JÒvÔ),D ÈcÆàÌŒ n:ŠAOà$Uã dÝÌWþ“”FÒJšI»­#s†ýÂz‘VPG™¢ÓÙ¥R¯‹£°Ï&¡ÜËùÅRJ¦1! Í�²ø×EŒ@Lµ=™hÍåø_ÕÐåÏøRÛ±\2Cýš0†–1GË:[û½% ­ T^×£å>öIk�£Eè¦_m˜’Za (ºµØndlÖdk–Øtø‘UþÍ®æï¼ògÏ%õ K„•ª‹ð·¬³KIî’À%ð¼{ÞrÔÜP7À=Ëò‘�¥%”�e=ŒÀ$6¬`»™ŠT§AO )DÕµù_¢´ ¦HùHiâ½+S ÇÀêæfêj½éÔc4\‹s1Ö8ˆ¶qëÀži„IÂB#@^²c0+óÌ8?Ë<)'¦VùÉs#Ä)b>e±ùÀ~Î€ŽæÎ³É,©ßKF@BNÙÏÇÒC\†Ø–¥{B™ýŽÊ�ä{ÌèÀæMp�¿©Šbß¹ŽÁrÑ"¸6ÿOЄ9eÿ† ‚Žt�¦ÔËë2ïSS°V ¢a"Î,)ÕK€Ù?´ü·Ígó¢{‚!¢ Ž èrÇŽ’Èyft`ˆFà!ö lD¥•f#Uþd=Ê̲Ïõö§@Ýoõh½¿Žò9ÞÌ)˶w~«MyÉÎúšf,Óùÿ8öî—€2Ý ¬´ôµ~(ÓB¡p¿Ö“�%ÝTäèQÚ² õMÙ»õ5hYÓp¨0M» åçîÊ“0Tëú†–9DÙÙ¤I‡QKÕà’·báTZ tB*ëÍc˜¥ ƒ€�ºU‡«’¹¤@ÒöÈ1�Âɳ8g‚i!·Õr÷›K+]äiŸ@ÄР¢™N¶% üY �™}ÙÛï”ÿ›•ÊŸP¾Í%;Ç[Çw»%€–ÀèhpêVY»¦º–2öy°v| «ÿtæÄ"r3E§Q#püƒßÄ6æP:Ó0 Ø™Âêž:Bñ” 5?ÊFo¥\ów¦Xuåšvž×EÄ"‘¨£  é 7ññ——˜²¿”Pœ0ÿÿ ìÿÇ„mú‹äœá[•µ@åUZÈ*�­h@Ñ&`\Ÿ@'Œ€S~–�eYÿ Ü~”-ÝÊ?ÇÛ¹³´p8–rP_¹O ê„›™">#¬:\-õš`ܾ…Úÿ 3uCQ¸Kø²ÿsȸ£!·òÊB�ŠÃœØ"ô&åx”k~Ç`Ò|!¦ÍϼY–ehë–”+?Ë=Ç[wfŽIcÖÖôCvì�.õÆIv�PÓŒšŸ=‹§Í@áA†v¶•>Éüˆ ÓŸ •Ws÷ÓqVaøjßu(ÿOP8î1ˆ‘`œ%ûc¿óbÍ¿Êÿ­Œ(?ù7Ç[w–,VIóbÑôê*u–�Zæùb¡ê(€á«üžçDNaçBW�� '®‡8Å®vàó48rD†ÎÚ"ëïÿ–Y¼.�³á ¨X«Šj¶uO`QåG^ÝPó;~Ç)S�N‹4QW©³Ø$„ IX¬ECU0n_BbûÌûº HÜ«“éæŸõPi¾ ½Ò4�q´æ_«f¸‹”ßñ¾y|Ré9PÙuoTÞôÞù­€Æ À(ßÔ¬ë3'º‘R—�¥”9A0dfì¯eÈ|#0!k´³ÎôØWvzÕÇCÆ2~Lëøû¾-ÊïÉ\®¸,>ƒ#£›Ž «„U�¾à¥#<,ªŽÌÅ×À’à’ݧU É\ôL�Y1°=ú£º;Ïd¸`úÇáê¨îý¶ì9w{dt ‘µna;üަ¥Ê�´ƒzû±Ÿa9XË×i?a5VÁã¬PÀ!¾¨:»ätàªML!TdPw¬±S€»MûëA2cqà²CAÕœ³ Š;>Œäè7‰(nUÊæ+ÿ˜ #-¦©ÊoÄ¢êÛþA*¨³Ô]–Æéòb%«j0…P¥€W[±ñ`1ë¸Çñçö…yF`W#F ªüÇʆ]¨ù;¤üíŬ}ÜiSNØ„þz°šù9]^,ïªÚ®R‹„VaaAWÚ}˜¸jbæDÐߟ|>Ü��sφ"�aÖÞ1¶O€[uY“yÇÜ㪾§4.߯»�¨ùÉbff�D ói[øs™ëIŽtQg©»Œïty±w5H@kûfóÏŠ ï9ÀºåH@”çÛ¸£’Ï‹V~|mòÙY™~è3SN§Q1×VÒ­÷]fo›Pä�÷Ž£9p è5ÍŠÇ£5ÿ1·RùÛWf*=;4‰±#†&ÔKw­xzBD#ý s8t͹z kd‡] ˆs³ 8t<à�ŸÇ‡!ƒ¨®�§Ìr‹ŠJþ”;‡ôhþ¨.,>zQ˜š–Ƕm—ý_ùšH_²€7ÅŽ´�v#ïê´áéi¸ò0»ÆQ»¯BÎÑ>�¨ò¯Ö8Œâ¾ÛH^­Ä%&Š0"V�m»L±`hšÍó¢\.Ç_=F5"†´ÛÄÏ2-5ó3±¨»Ôa0±j¨i^&§ç øˆ«–uÍâ3”¢£2€?å#Ï[ÿQ°‡N]'/üêU²ïŸn�`Å MW?­Cúõ”Q�ÀÔ”ºôwÞ>gúF$À��†aÃÎqãö#®*›Êç°úW(FÄjèTÌeÐ/3µÎƒ9ŒÀi«üä9YmBe·z™ù„:KÝ¥["=Ô|¸G¦ó°¿ ?¤kϺæè $j îh®ZøË„lb==P¯yþª7#00€gííWÑyðFVžwŽ#°RŠ3»õ7!+õŸ…ˆÃ¸í F ÑgLö}åňX 03!‚c«…r¼µGwÙmrM]%®Ô]êp-Øj€™Åó°—¢Úmª¥Gâ�“-á˜t´QÇZ#ðUxÖF e»(%ºÑ¨5'Ü{—ÌüâUø½Yx>§ü5EbÑt›½©´U~xG4�ĈX³Ä°± óн?¥¬×èpu93[5û“-^UãdõA”ù®²N„T5¡Lã·ZF°’î§W½ƒ³7Ⱥ_~ƒö²‡ìøJ$ã…‰ª˜Æd¡m[e苟Õl–„¸×Îoõ©L••ÿ«À„Ê¿N•?V‰¢ü˜Sþva¿�ÉÝ1²]îA­šQMsPŠT~xÝ*ß"CáV ôÖªØ÷OOÀæŸt1˜>¿Èë¶îÒ¦wï彄ÙìÒg3œÞ�©ù©üoTLˆ 1J<¸‚ £ H<ãöe Cw©Ãµr]Ò¨õrÖŸ$'F(!—è=áQˉ³!Æôœf™zžF ¯lBxëßô)a¦]ÈŒñŸåJ2˜ô¡lüâ#<¥§‰ç­„’[1 {aŸ/+?å_ +’ˆç°cÙb)áH¬£•¤3Ý8ØÍ´²jZ‡U’/œÙn(JW,V—0W�œ*À^ {Q!TÛW#ùQê* ‘”6«ü7,Tþv©bâv’ßr ¿Jºð›¥×z¹¦0/ª®•FfŸµ[æò#{¢Fà ²÷†�vq¯Bù¿¶ æwÊ?‡Qr‹*};òKŽ’¥R^Zwk€öA»L·$PÝþ[ ÎÆž;´ªáfÚ»ø�#:Ù'ÐÅF@µÌÕü_SZI3iwý"­èÑàíî4†~­Ø.Ån>’~ê.u¸5 ÀD+1‰ÞaÇ 1ù9#ðÕ.i‚E•k üõ ~Ö‡cSnªê.u¸5 À�º§x0½X=V+ÑÌ=ƒsà§sÎÕÑ�ÐÅy\�ùFàæhŸ¦ÆêæÑM,â,W’i±ÌØ8$*kþ”?�ò‘ÇäuÅPÀüÉâc£³Á´Ñáê,jð2Í®ì qrÈFÒ{Õ“Êö�“§â�­þ„#jVÃE>À>�¯~]rœ6ØVË•ôû¤Û–—e' ¤Å¸ý (ÿ|üâ(7™ªÿ™XW줤Ú&¥N§y Uç"7dz�Ö¤!#MúSs‰?Ç(LMœG+ç³d2˜«®q¿*Ì~(Ž`¬|ý/½^ç hi•+HH˺d‚í‹@"Y&U~¬AµÊOhÐJX”æÜþ4 ÊW«8èµó,XPžº¼¢ nX¸‘Ðé¤feU €ýªh ½è<€ZŒ[�ræn€:%�Ç8¤mq–ÂÐy"ýª8ûѨjÏ¢3w YTù¿öuqÊÖ©ü5 ¾p5_vÉ[žW&Vyåâf÷V¨ ^ N—£hÑ&#º¯ŠÂ5>�§Åœ�Úb©eú`S½·Gž·òk £3TÖž4{¡P¦9€&Rkåk…¶ÅÞe™ðÓšŸÊ�2³ì±(?±\,ÏFï1¾cþð¤+Ø� �@§Ë‹[Õp‘Ñer€{Ç:'wîYÖ�¤GO\;›Ç8B4ÍrzŠcùªÖ‰3Æ8NÊx¿hšew¶V*mz¦�Ù¡¾*ÊÏ’¨î-Q$í‹qqÊ<á�øåI$¹zÊ劔ö#É¢®� ÔÔ*sU0nßB«tgh#aõ"¸ÕJ7ƒÏ@™Çc "aÝaM4bTÃÏ V�/³OàlŸËCY[âñ‚ò³Í¯nÿQó(M›ŸåkŒf[ÅŒiãZÏã Ó¦7¯DM•¯%Ì’}ôä8Ïÿö1§ñÙUmì7ÐãÕü³øÄ!c\Ç…�ÀuˤÄ"òÊÉÍãd:‹X$3ÅÚÇÑ�¯ÿ‹m¸Tã-zý©!§ü(Ó>¬k`YVvfÒßq%lôHÌÊ!z^¾ÙÚI£åÉJ| BÍQg‹’ÛC”æt™W•¡ª@»�4#„Ïb‡Qî Ò•Á16vâ,zñ¤K  Bqg!ö |ýÆU~”‰ecYÖX=“X±4IŒï&ùŽþ¥´Pg±Ð3,Èœ./,V-½¶°÷ =:¥ÕÿÂ÷3‡`%PÁ$€Ë|#ðK²÷Ÿi�Íwö:�œ&Q~”�)1å_˜y,w²Ã÷ÆÈ¥Òš=ÀìªRT·¬./L«–ÐØ'ÉÁ œiu·ê$ Ò]uÀ‚BÁ��s\‘;·sxª{`BпÂ…L”i"uþå|LÍÇÖƒ3ýèt;VöÂ6Yÿ W&7D¨…·½ýÿr#ò45 †(nåŸÃ ™*_ˆX è1 Ëg=ÕTcH—ÅKI€´¹9�³Hã¦EP¨V¼ª€}Aµ½¹�ñSC¸Àÿ9è²�E)5Fî¶xª‰ÎK#.ü˜ìpƒƒ4hüËͦc°¬,‹å?¯8K^º4œòßTV~ÓáÇþf†8é2)š¿.ÿè½&Ï5)üY�d\eï|:¤Îì§Z'˜ -ç‡�15??1–D›¿õÒ.�BÖx¼4E.†ÕÍü”ªhøï;vqæk èJ¢É=нÚ3r×ÂçsÇùH¥öÚö X#p£õÔ´Xð 彿Áþ‡¸ÝþKYß뎷îXß[™‰E²Øˆã6VÀép5"j÷Ò³òÂ$º»ÇøNÝ õÈ6rÝÙ9:#À݆aÞˆŽÁF@ ¬“$×)?Òb?Óάò“òLó¸.Ö…VGRö/9 ˜)Ö4À+Ü�8`wQt.<؇ ýZ¯Ð tÓO‰Qê@XÌ¡=8±ç÷\¶>t #ÏÍ7�xŒQ~¦Å4™¶Ù½¨ù~�`3ŒÀZ7RŽ Å-Ñ7CoÝ#Û1z·ºK®…cMÀ?h�RyÀ6j&X+³´=›#gøòN1VÔÔµtŽqÍÙ0wæîÄ}dÇŽAã ”�€¢5ç† kÑÄ8ÜɇC}hó3 SóÓü³Ã�y$¢™�†¢ÜµÊÛà³2�­^DóKŽªö¤LZÌ€ð!æøÁ%*xÆYÒ ŽÅ(؉†ÙŸïÐæ‹r¼t™Ô¢yDÏ ~2�¹Ì�=ônºErƒÐ#”‰¿jχq÷Þx‹ì)»ýíQ~+ŠÑÜy�2W£¥Êýù)ÍåQå… Ý-Úˆªl—-ö|rPS�ÐŽ@tÞ‹á…i¼PsbÁ‚R|cItZ*ûBÑ23ZJ´Î—™7�@/Væ­.7òC˜6ŒÏÅ…EÖªˆRþ¡d¼‡gŒÃþƒç ü|×´ù“¯ùa‹c´K¿Õc²2ÐjézŸ›€pÿéâœPÝ­•J=@ß?]žó0ë‚ÚÕˆFÈÄÓ’%9¦¸IˆYTÀ’H¿:Ðΰ90…þ%yæÚ뵆ÍIЃ©]¹œþr=½’ÖgŒÃ¸|‡M‰v¸ýQ¢E±‹Æi弜~™çIäÒJ ›}7 É-ÐGŒ®Ö—ÎR3)t9þ_|\‚»û%¸_±£e©ÛxÔW”NÄ*‹ƒfž„(¸˜vé×F�,2Í�ìÎóâÛß&“cwÈq¿òË2|ö6Éš¹Þ‡&dâþäyÌ&,\{ TŸ{ø1pzoçØì°Ó¢Äô'ÊÓ$r‰©°�%S‚næ°ènPTÖÙ¥’XÒ0�q¸<µø>§� tÍ'ÓcTÔY' s¥Ï‚ky”¤pÝgd/~Ï�r–ä�_ƒg�Ÿ~N‚§ÑúžqJr÷ù=‰äÐAâUÃÂ\‰å»UhàÁB.5ðrŠ¢�u>Ý÷X¬ñ:«ËÜn'õJé.|E‚‚® @Ép¥MÀ–™Ÿ‹'ºøÝ¤ f®%ü›„À·b &á“âgò5uü‰Ÿ¢Æ1ë=:SÒ2O* I ,‘$#§¹fç"DûŸµxzùo,÷íVg—¢¡.ÿn‡­¼N‘ƒO Ý|Û‹óÊ<ËÈ_K‚ð'zäyK¿Hz)�Ê(ö4”œ“E�C�ºV%œÓ8 ÿ×iQ ¾,–öVÓ|á‹L£|´çƒ)‡' þ Žs¨ÖÈ(Í�HÄ\ˆŸ$­Ä�Ae>s9ú³J(P³Ê'­^Íq€gî×jª~€H€]€Ÿ)JŸ¶ÿQžº½óz›Ôrò$·I`‹°`|Àè}ÍOw˜º²§°eÞ‚ÕE©�E ‹ø^¤.¢pœºI¥®Fi­u^·`"ãfL ™•n¶[Œ4ô~­‚têYÝHuª€>ßÄèÞ程ã¹…@�[åy=¡!5ƒÃ0/¥obÈáy´²6õ¨Ýq|íßnÄÓ“_ÖyÏšž:H]Ć}ß ²£VGëE¹!À ébœ.“üâÈ·ézà:ÓÍ€…µ@ÖÅ¢^Ö/Çx•¼]ÈûlaBݳMñ1ê$®®�éTtÆ‘ N°h4üjA‚_ƹ~3PfôO¥ ðªRPZ%‹_c¯Le>­¦Ú½ï+Vñ²À‚5Çž¹_†‘T÷ºxi·ºÙ= €Q[ãc“ÐÛàzìCëÐ!–‰°¬bš�«Ã@\Þ@ÿ&®îg¦C3©éº’&j#`1RV€'º?.b‘.M<Æ|¹ì›cçþï£.ÓÑ&¼ñ†šÌ|¿„9›e⧸¼ ËIx;ÓÍ€@g4Ç"aÄ¢"è´›òŒédò¨È0ó#`–ܬD¤\æIf+ZÝ»‰ºH�rÖzÖOSÓÆFƒ.|+ùÚ¹ÛY9¼ÂYø0;®gÑÉ‘|[yŠ«ê˜_Ã<Ò7—σ1#vñÔüóЯ•çz;³<ÉsÉï $#¢“JU½ö˜0äšÍ49CŽAm\aé=ÞÏNÀ6'²^‚Çî“éýX‚þ~ tfœP4y„û‘N_ŸL?þ„Ȥ�E8¶ìÀÓ‘’’'À ˜)vÀP±l•'xŸ¼%�•×à9yŸQž”¨sÔ½Ó ƒd“ÓÉFYÖ”@&º6™r™/p#B„LŠË¿çó×JijJò+Wb]7Ëhá—ÏK~d¥^<({þßç¥OÁ!<„¥noàªEn? ž;bH,[â‡å%yKï¹ö:å9yŸQžèæŸÔ=ê ,=yÖV ‡¦šÌåv‹¾Cö…Cþ!f" ›%ŠjÃéÜ S@oƒýܧå@¸ñmo•�ÓO“ "ÈŽ<ÊH½�,@Û’®ëô=�ɳŸùœÈ—®ƒ›v<¸cwT¬7­eoZ1+»G±kÑÆwü¦ �yļ 9w<™�‘Ã?~\žýìµ~þÓÒž‡º²§‚)\úÛsHdì‹,‘ÓÅfJ×õìxx3,Ð�dä:l(uõœ,¢i£Ò ­¿C¸5¶ì´:%ü™³EúáÐ4عtíþÇÐZ¬G•ŸKmí'MoYÆw<Ož3<9ã\|ë6Ë“£Xõøï÷[žPùùÑëLò¤ üÂ&9tµÓÁfÅ$&eÍ} C‚W[D›-K‡Þ£’cj*+>ƒ&Ai5ªø�W­ù3)h­BÐÂûŽ'ôÎÈ\?vo é¹W×ᛡhÍŸYžhç_NrŸtTµrlÉ`Æ` ë¼^À˜•t Fð5a5­­”«ƒï²[„¿V ¡û6|LôxZBÀÕþO¢ößgíÏRµ< àH‹zËÈÇÐ^ù,çðÍ�?zšC€mÿ>ðö±HíÛʵØ<Ò6çH_`F6sD÷cij4‡ŸË#�M œÚó�o3c–ú¡sãêù�¢›ÀDç¼™yHä£XNsÌ7ÄñÁ#àh¬³ç¶{áG#=ÿ±Õþ,NRºÉtÇeåwð!ê‹1s kcνôÁ#ਠ��~ðƒwn‘ N°S�ªëÕ"Åê¸|éò£´EØ®`YÌîãkÂabÖÆåë��n@úC]á°ŽáH“Ó)žÇi›SùͶa“ãøzÐuX½Dë«ë'>-�@ÊàŠ¿€º³Y&Çív_ð¢ãTÌD‚µX¥ÇeõÉG¥t?Ö`�€kÜÉÒ'ê踿^€ê+$·í4yq·Ó¥$ˆKÄ`AaYJcf$Ø(äÃî´þç1ð2PUì^ÿᇩ;Ô!êRÊoõ4©¤•@]* f�ÈÈ÷D.Èþráäðò)/o èºÜ›}þ`³z9®uO*“B&1€¶èvÅhü&‘’¦¶/N Ÿ®G 8]1:¾Ï]'©ü¤;QÀ @€n²I&îBÀŸ�°_SGøÔ�€G:¢:AÝ Žl•‰;mE™HÇ_qæ�x1Úø7‘�U²r'¶4ÞKGâòxæƒG`Ù"`°ˆtyL÷}ô LœÿJ‘ÃNg’&q€€H]-HÂÐxϬm €H¯ÿIsاŸj¨øå©Ô êÈXŒ«ý–"¾m³ó>gG.”™Çß-ý+àî\ŒuôÚb„–Â?÷t�"t!‡Ž¿?Û*“×Pù··qÎŒõ@ÚC:,�È=$+¿;(rá´!6‘‰í¡Êçâh�t :pÚý¯€2ráœêHÓ)6øb[k_¨%¡è |†ÃItœ³A<|t�@[ Pö©Ô^Û°í m5$‹¡›wça»ßÆ&¢ m%Údéÿz:Š@HÙÇ×}~‡º@� n´»Dm7$p;Ü~Z;¸=Ÿ�ûs æ=³/¯h7÷}~�B€sý±¿¿\³M&®¡.P':Q˜ŽŠê_kýÃ2ñžCRÚŶnw„Nïó\¶h»Ÿ2OÙ' N:�š� °œXÄbg%¼`,€ßF¬s,ñ9'‹@ 2žƒŒÄFn‘C�9H6Ûê©wÌ`‘¨ülûòkÖ±LêT/¶âÈ”iî“�\M™§ìSôV‡þtÔ�æípû­¸ëŸÿë°¡›‰vŸ­G Âe›2¾MÝD™§ì'‘S#iƒÔÈÉÄ `9þYº_†?¹J‚wħÆqíç$ƒ·Oµ�@¶ �éÈô§Î–Éwášž�÷t;îX>„²'_n¿³£¨ü0˜>x2�À,eyBÂÛ(Û¤ÄÊ: @Ç Qz‚µŒ%|ht°O†¿3,Áù“ÞHƒ|IBò\€ ÷@†wÎÈä%ø~æ´“ñ†J0rª é@vd`pCIòw㋨'c•ÛJ¾9�  ø¤cG €U¯=Xï²;'Å‹¶Èô'Û±çÔB‚©S*X$;20½ç~YùZL•¼_F9ŽË‡ñ¬m‹—ZÀÔ¿ºÌ€¢sy/§ùþ][¯= Ê?fzü;Þé7Ÿ5©ó\"‡H Èà¡äÇ{E†f¼pðøcJ ò£ÂÊCV§sRºt›LÿÀÉr‹œ–NÀØPù DÃàuX/}´Àà‘ý �@  lRF)«�ß+Ò®ü„,µ€…sF½§w\�YoˆŒiCÀ)AÂʪ•YõbÓVÖhy céT�|P†·cžð-0ý¾9�~¾-—Rùéö³æG�zÅY29æd6ídÂD(6¹m€[úLŸ€H»„uù Pþ|Æk =ÔW`…ëwœ¬f�ôÌ‚é€5ƒ¹[±žú8l¥äg fAÒº°Œ�ǾuуÏwÿ4�Òk³ÐæŸÏ†LÞ n ¥t¾ zÖUsÆ  |ð´ �Y,aïÅ—¯Hîò³eâQ'›m+A ¥ºp1ú`±tt€€c ñEPþ]XdÑKkŒŸ�D ŒQÖ(sS"÷¢zeV•Ÿ@eΰÐ4cp½Î—égS,1Õò6»v€C„Þ$’@€²Å]|9·ÿ_™¼ø\9ü e‘2™D†I§™¹&@pC§ óV~.Ù»`•ü¦"ÿ7>T¦†�ޤȧε {¢2_VíK)“€ƒÖ‹ŸS0îúî) ÿ€s›ñã½LZdG›?¦ �eвE‹(?—õfzbiÊtJ;¬8G¦þ÷.y=²×ÃX…‚YˆÞL»9™æN¶ Ùass=ýèìã6^¹«ÏÁf¬t>džÑ+Ètè&ÝÆÐ$ØŽšŸ{ ÎJé±óêy‡ÌúÒ™io'ÓR–ÍÂó#!Úûy´÷wõJîWÜ6^�±®ékê& b# [-aAo� ý† ߎ%™ä˜Ÿ4”MEìD© üh–¢ Vô]s¶L½Š2ëd«J*Ï®3 –»Ü9¸SV¾M‚ÿ C07Ž“†¸ ¨+éNJH–KºŠ²QäõßÇzs¿s>öíŸ/SÝ„GWºÅ`dq\þ/AÙÉÀP‚ ÀÐ{FÀX«üÜ[À�€"`e�Êe„²B™¡ìP†v@–(SÝW×ëÁº5?™øzúH�ÿ�=ŸÜeÄÈ~‹±ëáèFn‚&¨º†®`¨µ>wïa“Ëþ �ÉI(9Ù±‘»ò°,$žVüÍÖ‚ï’áQýw+E6¡ƒ�L¥e÷; u¥x/I”ò}‚�h9•÷=çÉä8ߊÊÌ’©d8²0䘌CÑ·ÃxBdÅ 2ôQxÿ+¹ØÑCãO#°lð­Ë2�Á�ü—‮â Ù;üçGdê�_‰>¿1xŒ£x†xŒÓõaÙ <¸Zî Ü%+_Oï/1\È>) ¾“°KÅžJ þÙÃ�NaÔú!‹r¿wžLÜE’£²Ñ¥, kÙËhÒ­;`zp¿ ý>>Óü4 F°®€B ¾Y°@\2}ƒµzÛt {1÷IDATp÷AÝ?r®L}ÌòºÄóLSØDá©Ë6D-þNYqr ù�`·¡ÿÈuÅð(0ħ+GJ–ÓuBj|ìØÃÉ áu%)þñùrd71ˆÊÀ2¤Lê²6VÊ}¼¾ÛŽA(þdPäböa;röÐxC2èÅ•¸=7«w̹Âþ?0�Œ4àϲjë“æÅ²7(}î˨ñçF †®Æ½?‚˸Û= ö ä°aŽñÜ;þ˜>À#Öø%nÓ…mã°r/|÷>zžL]ÏÒ²wÿ*TüŒ—¾Ò·¿DÀÁ‡(vø‡Â>$ÒwD† cÅïGGá)œRLC€ƒ÷BÊ‚ÖøT|Ná…â? {þ±>™üû­d.ÀÛœ3ð)+{ÇŠã @èÇì">~HÖÏÈôÛqú»CœÊ¶$¿TÄg¾³ÐàЩ¿Ê¸úyöÝ`¹î°½B?½Uöcé¾q÷·³ùïüXÉÜ ¸’ýÆþõPÂ÷¢Si c¢³ÑtÜØÎA—è„V‡ó�I|P° <øxŸ |>ªø£ËhL¿н¨µù†€+ ó2„¦d𞼄cB k6*}ó <[ˆ¢n>Ú_=ðÄ8� s7‚;aþ®(S_Æ×wéœù¾ö °æ¾ºS†/EÁoÁ¼E¢© Íõ pÊæ�Ç ´ÊXÂÍLÇwå ¿Žu¾LÞîÒó=ûŠº�^8ë†j.¢3£÷r—¬8úþĺSŒ·bq‰ÖPp ´ÖÂ}o B�Á)=·áÊÑÃÂâ-ºWè—ôæ¿xžy’i-Æ Þ÷¡>¼¨§ª±8jÀ‡®wy µÐjÚŽ[o�p^‰í¤Ö1¶'ãTã²1 ð^–}Ú‘ Ø¡—^PzsÜöáùM¸üâ‹25¶ÝvæÍÇÏ}h/€M€¶Ø+; ´—âç”q’‘c�Jñr4Þ]¿ _2:5j3•bבÅ)ÉÁr3 ™ôã¿NÁÍ—øh' ðy�¾ ÿ†~Éß¶UáÚ„1ØÛñÎcLÝmlðÁ‡˜Ðñf¦é¼žß'ÃëJ¾§¯ƒ°CV¹ ó 0¤¨š XÀÎ1p|qGÜÊt ¢3Pé9çžF/Çñz®ÆäB,¸÷Ïâô[nÎIðÍsdr_`ˆÔöô \ZúÌÿi �n°ÖPHèmHª#Ž¡§ðjxTÖ¬œ’_£p)nžƒvî ¬CàüíÊFd ºŽqSY˜™Å£&’Ò?(œºóöèh΃րãôèÈ}!ûGèÝe¿‘¾=+ýw¿BžÇ"@gn¿Q`À´Ä‡DHµ0%Bq‡¥âŽ£¿`tž1`qî‘§å%ÿ*Ì/øYD{ä}3ŒÁ =ìP£ÓØ8¾ˆ4\³�¯‘wúsLd|�t@&ª�úÇœóT/ñŒË­6uØcŸG‘XÃCé§qûÐø=(ýw‹R¼ëB9òx´¬HÀ+}�6œ·E`Ú@G¦²€ Xw�[‹ãvÛ©åà³ïÉÀ 0çáÞù`ÐYh oƒ~� eZÁÎ1*kQº4 ¬fUûÌ©»Ô~Ë`=ðÓÇ¡jÀC­Ám„rmŽkfÁwÙD¡ ¯'TtvrÒ{¡±2��¬ÝƒÝèûx/=ˆÇ;QÞ]?‹Ïh1}\—ÃÚôûq“*–årÜ2:!}è,Áh˥ЧQ(¢n¿D'ådÅÆPò›õ L9z)f½�Š(§ þ‰Ð¨!he/k\¶©©¡TFg Ü‘šÇsx;ËkþÜ9�4:|—}œë€óYÄ™BOãòIÔìO ç�„Ç` -É‘gÝÄäŸ1ÔžÇɪ•)n€ÂŸ€šx"®Ã£5`ìZÔÀ«à=¬ÂùîáíÁ®¹;²©¸MjTfîŠ ‡‚ÛaG ôTîCxç ®ñTÔr÷÷ÁBí�Ax¦Gò{~*'¶ÏóbL’";@Ã¥Ö°ákx$åCZ°x<�€GÀ#àðx<�€GÀ#àðx<�@føÿ(%øq¿5IEND®B`‚ic09•+‰PNG  IHDRôxÔúðiCCPICC Profile8��UÝoÛT?‰o\¤? ±Ž‹¯US[¹­ÆI“¥éB¹ÍØ*¤ÉunS×6¶ÓmUŸöo ø€²�xB Äö²í´ISAÕ$¤=tÚ@h“ö‚ªp®¯S»]Ƹ‘¯9çw>ïÑ5@ÇWšã˜I`Þò]5Ÿ‘�Ÿ˜–;V! ÏA'ô@§¦{Nº\..Æ…GÖÃ_!ÁÞ7ÚëÿsuV©§$žBlW=}ñi€”©;® ÞFùð)ßAÜñ<â.&ˆXax–ã,Ã38Sê(b–‹¤×µ*â%Äý31ùl ó‚µ#O-êºÌzQvíšaÒXºOPÿÏ5o6Zñzñéòæ&�â»�Õ^wÇÔ®k¹IÄ/#¾æø&ñ½Æ\%�x/@ò™š{¤ÂùÉ7ëSï Þ‰¸jø…©P¾hÍ”&¸mryÎ>ª†œkº7Š=ƒߪÓB‘ç#@•fs¬_ˆ{ë�±Ð¿0î-LæZ~ë£%îGpßÓÆËˆ{èÚêÏYX¦f^åþ…+Ž_sÖ-³Tä>‰D½ Æ@îקƸ-9àã!r[2]3ŽBþ’c³ˆ¹‘ónC­„œš›Ës?ä>µ*¡ÏÔ®ª–e½D|Ž%4 `à î:X°2¨�‡ ¾pQSL”PÔR”‰§aeíyå€ÃqĘ ¬×™5FiÏáî„›t…ìÇç )’Cd˜Œ€LÞ$o‘Ã$‹ÒrpÓ¶‹ÏbÝÙôó>4Ð+ãƒÌ¹žF_ï¬{ÒЯô÷kû‘œi+ŸxÀô˜ñú¯.ý°+ò±B.¼{³ëêL<©¿©Û©õÔ î«©µˆ‘ú=µ†¿UHcnf�Ñ<>F�‡Ë ^Ãe||ÐpÿyvŒ·%bÍ:×iX'襇%8ÛI•ß”?•å å¼rw[—ÛvIøTøVøQøNø^ødá’pYøI¸"|#\Œ�Õãçcóìƒz[Õ2M»^S0¥Œ´[zIÊJ/H¯HÅÈŸÔ- IcÒÔìÞ<·x¼x-œÀ½ÕÕö±8¯‚ZNxA‡-8³mþCkÒK†HaÛÔ³Yn1Äœ˜Ó ‹{ÅqHg¸•Ÿ¸u#¸ç¶L�þ˜ hŒ¯s ˜:6«Ìz!Ðy@}zÚgí¨íœq�Ùº/ïS”×å4~ª¨\°ôÁ~Y3M9Py²K=ê.Ðê °ï ¿¢¨Á÷-±óz$óß8ôÞY7"Ùtàk ûµHÖ‡wⳟ\8 7Ü…ðÎO$~ðjû÷ñ]¼›n5›ð¾êø`ããfóŸåfsãKô¿pÉüYqxµá†@IDATxì½  Gu.|zæîÚ,[¶%Ù€ Æ,Æ8`–˜-R^€$$y�@òaßlà…„Gò€XK0‹³…–„-ðç $xVCŒm0l[–-Ù²®tu×™~ßWÝ5·ï&Ý;ÓÝÓËWÒÜîéé®:õÕ©úN�ZÚLA! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€B@! „€è � §§õ°…D 4Kµn#2D© „€B@䂉<ñià¼pø–Ù �ñ5þž*ñ'3ɸññ2$ÓöéS6'C|of²$åÒ¹Ý!  ÚnzJôŒI’‘\‚ãÅQlüîëd'íèòÚÿÆq7ÌÎÇ玦Ù¢›mì·vp²…ŒÚ§GÞ÷ƒßOvü=ˆtÉé'µÌ®¢ ¼ß» x2¸#`<á%øsqg/q3B! ºC`Q#Ð]$zJ�•ã <’<뛯s«"x<;`¶}è¨ n°öICf'¶lî$DsBŸ¦…›pÜX¸qoÄgŒ<Çã?�ÃàÚAœóƒz0ˆûÙ[w�áZ ×fqJÂÇ1˜ -œÆù?¸ç(Žþ3Žû�4,oYpÇ»Ã]M¸cÆìÎ9kÜ1f³‡ÌöÎà¹9¯…€èÔ1! Ò@låë �ç$1ô¢W¡�>Š[N™³à4ùv�0>†O° ¼Ñœ‚k§ n�|› 숕âN›;}ÖVN¯åøÚ³¸›FÂí�÷vȽy¹áì…Á°wÀÂ[0š�ßnž\)F^Ç3ð^DXâè<"ˆ;íÌ1)!P;ŽW«kˆ2,Vƒˆu'ùY±GÚYÃS6±uÀ‚{ã�3@‚g€ÔÏÀó÷@gâˆ}8 bÇÏŒ2"®ã_~Ú÷9~t)A®|Ðܳàœ“¿Ewû/îw‰º?Ñó�ïÉß@ì¸NQ¢¹<6�š»ÐI‚ß’!„E‘- wá<Ž?&? ­ýS<}Œƒš­ÛØ�xÏ’€‡½Ç§NVy – ¤ Bàø,®�ÇBw�ú!@¦cð=ûeÉ÷ LÚé§ZûÜx6º«÷Æ3gãú}@lÛЕ¥;ÞEý‰båߘØÙÃÅg±vøtѓɯ‰8ûs a¢Ì ùÎ Nãë¸ÔÉ“#oo(DÒÎgÆ ]&Sôàêðû xà‡å†Yk\7j7߆ëK†�€‹7NžåÃ�%º ¿B@Ì#0_óæ¯éLÔ²U I…=êågpÚîv÷k�‹ÞëУ¿?Žç‚süØb¢'ÑEޏÀoølAÏÙ%˜H·Òøº\À9�fŸÐ­0à®#Dy!æ 7ëk€ä÷p¼vÎš× Ûφ;9aA@„˜?ጦÁØ|² îÓ!PWækX]P¾… á°"á�Ûi'�‚à1~ý`Üû Òù )�½a‚�¯F¤©ÑÏÅlC‚ìæ\ó< ð•8Î8ˆ�„ÐYJ8Xj8oÁ4P‡Q\…{¾x¿�!„k»à ã`|øÐCÀ£‚¨5jŒj]üõÍß…±öuL®üæŽ�íýùb!p� ‚Å è{­ˆjM­²¬ÌÖ4øÔwÎ*gй…=¡Ýc[ËZ�}<×¾9“ö°”ÎW‘ãÎ…ï†W¿¸ãx}T:æ„Àôî�3 âó”N]Ѹ_Qn:¸_þž‚¯4­‰ãOoåý>°ˆcCD®ÉÞ={š4èÂ'á“Tg ¬S(?„À²£aЀ—À•�/[‡£!ƒðK¸¶ç.›þÖÉvà°ÏV\ÆÎPd‘3Nÿ›ŽB J¨1«Ri*/Ž ?ŽFÿ)hÙ¡Ü &ïMÚö»Z°0ý (~'ÿ4Ïç¤|Oøø�ë†ê@¨@ �óCc.6|ÑÒ³c·àÛn¸„þLÔü�QÛû³džñàt*„Niî@�—_ JŸe ¾ �¦;ÒÆI‡ô£ëÛ„†ýqÇ,ÚpŒé7ÖEHEëÑq]¾®‡�ëªõP#?�€Çfrÿx„& _Çü�/@¡>�½‹¾ƒ{ &QÀ‰æ x0t,=jðJ_„õÍc’>Ý»Òß�ú‘vÚCpí h·¿ŸÒwz÷ò¹3ÝÄM^ÄÑý†S…"€Â÷“ �!ˆáèE¤0B(ØÁxü,ôä_¾b·|kgB×p�ÆÀ’ù$5„QY.)jüJZpu�îÒçµ9Û~0ù-LÓûu¬H_£‰{ø�u�¥óAaE .n‚(½� …-\‚!p-të³øýŸlïWñ{g")’1°"¤ú¡¨¨1,jÉH®h\©§ŽÑ“�îŒ�vä'â÷'Á�{^´D/ÄŽ0lÃé{—žwÐÔÉ "ñC¢Àü|qÃGWãÛ§`p~zÈn¹?¸€›½Îi¾€EÇÂ" †±°E#ÁؘîÁggÂí:iÛîÑ´Æ“@üOÆï rNä$éC©ÝÆ;BP¤…tŠCø¿Ð˜µ6�ƒ¯Bå>/Á§FíÖŸú4wÃhØ�ûñlÇSàÓQ覂(haƒ=Ÿß‘X��MyÆ0;ûñ¡5žŠqü_éóÕ·èâ³/õô¡È"}‚¢�9еŽ1€s °ÓϽˆÛG0àßà#øïÁ½'ÚQGù }n³KÝå3Òáþ_�%€*FË150? e7Bw?ÝýÈ¢!ͨ³¶,ïj< V u­'7\!‹sv>zKÛÇfÌ~§Ï†›ÿ±ó.~6²Ü˜'àýÒ[‚¥P40q0lAG0Xaœô Pg¿Aß?dö^�z_´ŒHžz  †´å\¨\ƽw6€�mWC;íìk? ùT�>zûôísá^ˆün»wöö„@YÀ¸£5ˆW¸!xì#ÊúàˆÝr3²\](K%gù�Pþ2,M|c¥ë¬ÛŸµ­¿„ñB\{"væa“âG/ŠÁ¿t´4%,A—AªLC€ëé½ ¨ßS¸øi h½{Ðö}Ñ?ƒkèÅþºŽB +Ô¸f…¬âí €†mÁlþÐN�±Öï wôB¸JÅF“ü8¾¯Þ~5�Tçà\¾Ú˜Æî¬Ù—áåzÏ�5?ØÍ“Ìón­¨`Ñ3K2ŠY.•�ŠÄ�ŒpO~7¾ØN=eÄšÏÂõçcMõYÌ$–ïùqS�í…: ÐÑyÔ×£ü'=e­l°Ûn'¨'¬Ü�HËë }È£S¾>¤«$+ŒÀbâmë3Ö¸Êöl4x'G=ŸÐ°ØÈ)�š"ÕÔ 7<C`?êÉû¬ý®Àöý„ È¨©jä�m9€\—$ÿ´m¿/ì%ÈÿÓÑÀaí¾ßç>Î�Ö¤¾º(†ò¹ Ü<�6æ `W„GðÐQW.¶½×3«€Q·¬ k‚K7/‡ÀRâßv?Œqþ1ü–ÏñÇ[§r|_nþåÔ5!0�ªSØBýq{ À˜ÆO0ˆíÖïó6ó`é¬7dô†_­ŸŽ‰¿³yÏ´m½`�—öø‡ûDüµÖe¾ œ!à' ÂÀö4Ú0ö}�ñá®ÐVÃC¡+dt[½BÃC½áëtÝr>Ìê? ž¼מ âL¬ßñ×[U”ûÞp†€ßO†Øßa¯ŒK±jàGŒ>6´|°w¬kƒ €Úy÷^LüGíôÓ­õ'°^ˆ±Ë1÷ØêI!p“ØuðݳÖ|˘Ý| Ÿ•!põód,�D–C`7Ü�;ãÿ!;ýÄk¿³ø^ âß,WÿrˆéšÈgø¡Ý1׿Š)k¼}“Ý|'SLÖÕL$P¤•A@@eŠ2›Œ µ¡ŸãŒxÚùƒ³v+wíû3ÿvnÔ‹H“û²�^± �c!à ®Àðëá^\xàm{w`WÍâœm;ççÄËm�•~«+T!°4 6ñÁ¿'£¡¹c� ³c‘"þ%¨é‚Èg`î�[>ˆWd_‹U7—`¢à'( ~¤¯Í„r/–r$( å”›”qÏ¡3Áï¨m}Hÿµèi<–B �Á:~½œ'·QBB`u¸m†QW¹2€�/`bî«Ælß7øõš×5Q�`(t�Ð�B'ì-x—!vï;yÖãÚÁ›ˆ7õ±ñ@C¢�û¤)B ¨D¯#6²Fs†µÕìÊAk_‚]÷Sæd/j$W~ÈÈ름Fa�»ÊN»¨amºûOe#‚fãˆ"þ Kˆê,�wxnk[㼂ø]¼�FhüõŽ�%¸Õë‚ €z•÷’Ü¢1À$"x fmÛcÚ¼�ÆÃ9ÁOãüKàÒ!P&P½Ãçp¢ Œù¯c~Àÿµ[¿ÄL$ë~™2%YÓC@@zX–*&T~öúé"lc#ŸÑKx-ºèùGî~üBÝp÷”*cV�Åp~@ÈanË��„Þ5l�Wa#¡;“íÀâ‡ô½úȨ~/È!*<˼3ÉoÚ¶= —.E¯ÿ4ôðsˆÆBîþ é‹¨nX �º ®có ðx¿À‡™5T|M¬D¯-2Ö†W©ïF%'ñsÜ/Ä8ÿÙ˜0tƒ'°ú£Aв¾R—®„«B€F~ õÞ-D½ÿ ¦ ¾ ónÀÓ~ÔÞ«‚±7ɨF93¨Ô zý3¶í¢Ò¿�Àg÷ãaü®×óDý(*…=}æ†`Egà•CvëÛ˜E´òTª¬WÎŒ €•±©Ä/¨Ì�¥}ØÌçLzf÷ïàö½ø°×ÏÊ® „@-çøêa|¸Z`&ÿþ6ºŽP$ÛŽZBSƒLk’W… ™–<,<·è´mÿ_ðî]EòG¯ñ³È¿Âů¬ �U  °-`›À¶�mDÔV8·`‹mÈ*"Ñ-%E@€’ܱÄF¥¥aÇu¾!&ùݽþ÷`)У±;&¨×,ìô›¨/á_2„]?mÚÂ/cXà˜$ø}ö€ —qØ@¡BÈP¡ÂdVh±³¢’ü§lû‹Qo¿Mò§…�Ú˺,‹¾be®ì�tØF°­¶àQl;І¼„m Û¶-餣XŠ‚ÊU¡ ÄVº›Á{ÔN?­iíwc’ßoh¬¿ ¥«<�¼Xà ø v|á˜Ý| Ú™ÎÛAó–Hé¥�€ €ô1Í=FVJd<Ö¿íIøþ^lô±…–<„a…U9ç^*JP”4%†%ƒ��ik@#r!†>É\%ÛœÒç²Æ1”¼ðQéòÇú¬‰ñþËàº{ km´�¯\v%/^‰/Š€&r;a¶+|¹Ðæ—vÝŒo{Š  dèÝáÖ÷§PùÜü `›ËûÐÉÿ;Xêç£×ï'êh~GßKI�Ê àÚ´1 ´1W£Ùyú°ÝvM²ªLNk”‘D •ÎíèGòŸ±íÏù ãý$ºüiÔ©\KX®Y¶)ØB¸=‡¶æ<41ßĆbÏgÄÛ¤Ë.ÑV@€d¡P"PÑb—ÿ9CÓvç;áò.'úÁ<ç0€fé–¨,%ª()-°}3Ú<(ü›A;ñE(gIÊ(I¹�ÜYVn–?–æÜÓpþý„É9-üàöð.IV$¦%Gm{ý!Ú &¼ß™¶à©mïõ¸¦U%*[%(,T*¿ƒ;jÛ¯aáûÐó_?å6õQ¯¿E(…@U˜ÁAltŽ=oØö~”M¶YUÍxò¥±â‚—"*’ÛØ‡b¢çÿ¦Q³„‰½nF�\þ/?‰'ªŒÛ ¶El“†Ð6±�b~ÙaaÛUå¼W!o('…¢"“?ÆöO?qÚZ�»íñpùwfùãw! „@_ˆIĵKh£SÖþü¬50$p˾ ë«€J|EäXšþý€JìŽzþs˜åÿ )k} .’g–¿È¿壔…€˜G n‹Ü*¶QxÜ�µ±J`ûƒ`̱-Ã=êlÎCV˜3JaŠ"…)~‘ÏößÃë9ÿä?Ìñ~–s©Å®`’K! ꌀ'´O~^À4æ<“ób@/*˜‚ÈP A%ñëûÃIÛö*Ž©al�äÏ™þ´¢9¹FA!P8|ûĶŠmÛ.¶alËpÍ¿P—Š‚€7ÚŠ"Omå@åñ[úS¶õoG¬ñ,L®ñuª!⯭j(ãB tÄÄÂy<˜Ü@èC¶ï94|[WºLUP`(T_!âÉ~ŸÄDš˜HÃ^¿Wù �$‚kB &~¼«¤½gÆOÖäÀ5Á˜éÍ22…÷ø‘{òÇ‹|îZð†Íîå×÷³pDþÇÇPw!PLmX¬4ü(! ÊŽ€oÏh°�c[Ç6ï¨m} �¶…lËžÏ2Ê/Ðs.5(:�.·Ì»f½³d/çË|ZÆÿ®"ä,‘’B@äƒ@L8-4‚ÍpþŒÙKFlï± e‚ùC'y:PdBòGàë3¹Ìïup‡]>òÇî>œ-K+XA!PYâ6®‰Þ^eÛ@¶…lÙ6²�¬læ ˜1`®�žü™zþWBñ_w˜¶õÍ|¥!„@¡ˆ‰'Þ>8hL›½ž€?¤�ɶ²PBWP9*šüÐÅo°v?„%1OÃ’~§µËWù*! j…@L>lþÚñk…?ŒÕ@’mf­@É9³22Ü+2Ž“¶õŸF­ù›XãÏ=ý5ñ%cì½ÅG$D# …Ž& ¶°zßoãWt:NÅÏE9%”�a¹yÆ?£“Öúì¨5vLFä¯×dfˆ»¢B ”Ì¡�DG©½¥_ìæI߆–27%Z@F…´=þ�ΊݲaÒ>ž=ÿY(ô`FI*Z! „@©!ÍÂ0#à«£6÷øÀömi©3VPá5ã2ƒ‚ñ Ú'LÙÀˆü3YQ !P9ØAbG)j3þƒm(;RlS+—ÙdH€” Á“ÿ!;ýÄAkýû¨RÏ?e��•F`Þ~gÖš¿²Én¾Ó·­•ÎxΙ“�"à^AcòGÏ?8OäŸ"ÀŠJ�Ú �0®†ðË2Ò/z)aÆ3V鲚´i’¿zþ)a«h„€¨' #à;£6üË�ýä.ßÖÖ‘ts- <½B†¶eÇü1‰å!êù§¬¢B öÌí«01p''ú6·öàô€&ö WÄh©ßÀçDþ=ªÇ…€ ÐÆú‰�çsEÛZ-¶½‰ÛtÚ2ºÍ?äÞþTD¬]�ã:-õóàè(„€H �„€6vî³lsã¶WÖÆ¯Kðbòw{Yc‡¿O�üwÈíß%˜zL!p¼/+6TÛú)Þ#@/:nÇúYÀ±ÐYá·…ä¿íC ÿßàTÐÑe! „€è¶±lkÙæµmft2ºUÀ±ƒBßÜÞÕvÔ¶^9bÁÓÐóçÞþÚ¨b�Xêv! „@ °ÍÅJ«§² ŽŸã¶¹‹èêûˆ €µ•=É?ÀŸ�ï°†ú"X£|«Ÿ&£¬ GÝ-„€è�&Û^¶Á¶íõl“™kŸ{‰´nÏ0…U" ãÄ“¹£¶ý%£fo?jmÎ�Ò­?Ý&„€H’~8f�ƤÙKÇlïå¾�N1�JG%`•Åëë°m} \O›†Á ð4e•øé6! „@Úø6x­ñ¤…¿»Áö}Ü·Õi§UÅød¬¢T½BÁíÿè¶…»›4[²÷¯!”Uà§[„€"ÐF›Ü@›ÜjX°sÔný¿¾ÍÎ0ÍJD-à8Åèiʶß öÕ!³Í3P4<¦qÿã`§Ÿ…€9!ÐBÇlÆì Œ� Flï|Û�Sú¥LF=Øc¨ inܶoi[û3c ÿY 9ã_ä Üô“B gšl›ÙF³­f›Í¶›mxÎr”*9+Çïò×°ðŸ0Ûô^G¡`´*WxD—…€B O°mfͶšm6ÉFwjÏ­P&f` 0ÁÁ KL>€I�Æ’“Y|ù! „@1À¶ìíÙ¨ÍÞö�XDí°BYÉX˜=‘åNØÖ¿XgÁ@¡´Ëß28é’B h çïüÛpôæÂ= X¶˜ØÓUH åqkýÛ©¿‡õ¥ÿ8e4]V œt*„€(0®ÝÆN­Á´µÿǘÝöQß¶XæÜE©% ÷ 2cÛ4gí¯Â=2-÷ ä)Ià¤S! „@ñÝò@¬×ž­ñˆu¶÷Û¾�/¾ìùH(b‹q†bpÒfüŸvÒ¬µ?9‘?–û‰üóQE¥"„€H�ho¶å�µ?Á¶�m<Ûú4S)s\¥…àþþîÕ¾Mk}xÌ‚3±«–ûZBRfí–ìB@Ô�ï àÊ€àL¶íƒm=Ûüšã²/ Ò‡Þ,õF�ÿã±Ç?É_3þUC„€¥G ÀòÀ6ö`Û¾õMqvÄ}¢öV,ÁΤ¿u˜ô‡ÿð�,ÄÒ×ze@!àÑ¡ICìИÀ¤À šèq©¯†@#ÜFÜæwÖZß´`ýœÛã_ãþõÕ å\�j"¶0§ ;´æCâí‚T3¿ÇÏUmÝ »æwúÄŒÿXo ’?]ÿµÅäøê¢;„€eE h°��Úúö?\g6Ï@kW�'Öv½Îúo±Sß×ÿsáÒ¸YëµäB@¬�pmþÚü¿]o·=×sÁª¯Ð�µìí¢À9îßž°SŸ“?—ûiÒ_…[YB@,�@@òo¡íθ�ú|r9aù{«}µv´ó9l[ÏAæ¿…u~#Úì§ÚJ®Ü ! "¶îå&A˜øPx®ñܰð¾j«•Ìõþ­Ý‘àï±ÏÿH[ãþÕÖpåN!°’ØÂÒÀaüôÁëì7€±äÖ _¨•€rtù}¨�ú�ÿƒ9îÊõ_aõVÖ„€+!4¹?†Î;Ãî¸,¾«VœXk–�[ïÔ¶ý6L¾Or½?ÈŸ„€B †€ÐåÛÜcO³[?é¹¢pÔ‚ÿP nÆÿ„mÙÚÀÕƒf[°”þÔÊÚ«ƒB+�B@�µ!¶± ö°�Í�·Îìõœ±¶xÊww­°mÍwÁõOò×zÿòéª$B@d€€ÛCÁrD 6Êʱ;Kþ¶^„ ~‹Ë?Ðó¯å’�Âj¡B@ô�hi`Ä[/‚k¼K+=òwKþÆmû}›Ö¾ ÖÎØ—ë5Ó³¯õJ‰ ! Ê�@ˆeáƆ�¶¬qþFÛ{½ç�rˆ¿v)+ÛFÁ¹%„ï‚~/–{ŒiÖÿÚDO! j‚@€=a¸*€\ñ^äù1è!·b.aDZr¡²”–›õ;c;o8â¶úµ�J–båÔRB@ä�@Lˆ|_ÀÀakÿùF»í žKò—&û+i ÀœëûüŸ‹ó«�ÉAñ_®ÿìUJ)! J�@Îà+ágq<¿Ê»Vn…Öqýc�ÿ;×�ü�`Ç'd“€‚B@�• ùc@k½ƒfïÄ}�ƵJTqæq˜±S^¶ÞìQÓù¯¤êº.„€IbWq“ÜA·Sþ$þÝqKòÞ²Ÿƒ«PpnßqÛrv`ÍïøYÿ´èÔû¯N9+'B@�, 1‚3:«Bk=h£¸ÁsL–içw=À¯yÜ7cpã°÷/òÏS£”–B ä°ÃHî ‡�KÈ)%ÏÒ²âWÆ@�qÖ®ÿ§¡ÀžÀq^cA*! „€X är¹$â”SžFŽáµµÄSä{+aìŠ\ÿs‡ìô1ñïRìéÌÀÉ€ B@! ºB æ�€œBn!ÇàÚÜ®øÍ²]EZ ‡*Á‘°Èܲ¿Ã¶õ�˜´q,6ìõ¯Þ�ôL¢! J‰@L’ €7ÀÞµÁö½ÈsN)3”ºô€/ˆÃ¶í1Øî÷‹ñV¿tÝ”>o‰rÒ©B@ô � (=Mð ¶ þ¥ vë—<÷ôI¤T’-5I’ä}Á`ÓŸ¯�Z𰣯‰Ê)|‰B@"ЖòÍI ¿�Í�Î Iâ÷²…²n»ßC¶õ�6š]A×? ¤24ʦL’W!Pe@˜n(`ÜìÅ›lß;È7¼VÖ<—ÖðnÍ?fýŸÚ¶à°þÉ(ÎЬÄÄÆ²*”äB@Tf\Ó×ìoXxîz»ý6ÏEeÌs™ÉÒ/�ÙµÁ’?­°2ç§Œú#™…€uB€ä?GÎ!÷Ä/mGº”‚Ãâr³þáú(Fa¾g"ÄõRæ§NµGyB@”�L‚k‚‡a(à›ž“Ê–¯²ö˜�· ¯�%ƉîE e_ò ! „@¹ˆ;š-rÂkbé='•*3¥3€2{ÿíq;õ¿�š=þ°…Ø­‘«3„€B@ä‚@“ÜC:h§<‘œDnÊ%å)•@Ë @³·O /!øŽ¯ B@! òCÀsOÓ‚]䤘›p(O(Û’9ÿܸ�|áF Î;lm-û+�®IR! „@e éOaéùkœwœ„…W"sŽ£Ê’ÉÒX+Ûmúíŧú_ÈA! „€U@€œFnc^vÄ\Çó~‡B§ pƒ¶e6üä„›ø4û ŽÒB@!ÐA“œFn;h[w’ëÈy½Å™ÎÓ…xðÇã¼ÖxÁ(ì¤9k·°‹R!dKæ²ÆBûŰnïaÌ@_Q\U˜æ[´9ß“N ~ä •C€ Ïz„Ï(êÕ0ŽnÝS�E=š˜AĬWœJ¥ÐO°›mkÔà¶çCŽÝžóú)Ó¦Fö5 ©o@ˆö¸m9»m�«q>¢mûZ$Qâƒcx©%ìVÛŸ«0��ƒÓf&&‘.�!Pv@ôëF¡Ó ¶[rÍL`'Ãx_‡º|4×t•Øâí�mªaíó6Ú�<÷-¹3Ç }ïeï‰&úµç,xæ Œ2œª÷Ÿ£ $“bÏ›=”a gëpƒ >í¹Ö|äÃ,8 I'¤a7"-ö~æ°PfïmÖºæ{Ö¾öûÖþÆn 'h™n€)¸ÅlŠ {0i¤ÙÉ€N„@ư.Áƒ6CzêtúV§ÁÍ‡í´ÆîgÍsïoÁöSá`CœÚV'L3 áíû­õ•oØÜ‡?†º¼iß?`.ºêRŒPî¿18.x:Rõž˜ûr—$‘`_[Õ˜ÂÛíäõØ0á8šÏ€ÓŠ­}!æ&$pªÁ)’?ðûløU—ØðóžeÍ»ß-"j÷K†ÚØ7kzÆZ?¸Áf¿ôe›¹ô]ÖÞ{-®mH”v*=R‹ K@Q§†›0ôøá~íVkl€ ½â"|Ì£¬yŸ³±C`Ó¯½8®K¬çô¬õµéGúµ m–<8îÆlàÜÀöõØ/4úª»Ñ²ïD-9d§>vò‡�`슱P¿©mºT…&¬½6öñOÙð“Ÿ8�ÉÙõRæ/¥y°1¤7 Úî°éü¸M¿ø"È„Ÿ‡ÏDæ0Îrh8rèT¬ �ÿð³79оü]6üûO±Æ–“Fƒú¢^eÖ§„‘1ý‰OÙѧü6d››ÀZ¥�7œ 0f�æakÿ�“lÿG=æ-‡Ooa«ë¯æt„ º)0í”Ïc�äceäürÉ`ÌŸnÿÑ÷½ßFžû¬È-IÒO4"Ë=–Ú5o`øcœîܵ߳£/x©µ¾ú﬿§Ù‘q$)# 5ÜQŠ€Ð×m„»ÿFk^ð+6öÞ·cØûGñ{²÷†®?¦˜ú²Q1]¦…ÏÔ{þÆ&/|XÏ€  9Ëâ•ùEî @ ü܉vû¯zÌ<Ùè›@jAâíƒvò/@;¯‚|lÕqY¾©Ê*ÃËCþfø�§Ø†ú0& F@^�Ôr9£!ÐÆ§Ù°ð΃6ñâ?±Ù�¼ß‚Mg™º OÈX6]ë ÚM'XxèG6øÔgÛº+ÞbÁ‰›ámÇu¶tý®KLvÖÿöÓlî_>ŽFötÅU 9#à9ŠaÞl·_� Ž s–Ã%×ÏI€ÎøÀr¿§n² ¡Éý(þ8Í ˜ôïúгŸ‘ #1Í>�İÁâî�… éº÷\nG ÓìßgÁ 0î’ÐG�QÒ @[~Èÿ.�ÿÓŸgëÞùVx«Ö;Ýí{=¢œ¬K¬Ó0ìYÇgaê¼–° óù‚Âpo ¸ËÂ?@’W³„òIzi*}éFÁâq*Ú©XŸbO™Œ:þ}‘e)$u»Ý;|Äi`ó¾÷‰2ÏÒ)J !7&Ôõï|›k`ÙвÁ�æ‹EPÉQO’?uÔ‘?]ïý6¢“×iÖqW»QçûÈ;IÉjx4Èy(‡'s<ŽØ÷¦?F@¿H×¥{§µmÌÌüéìí—,5TÀd–áb·ÛÌÎ>ßš§s‚B‘ ÊÃùÎXÏxžëmÉ 8 ýC`9òGŸ†äŸ×Ü™ÕfÞwC¿ÏC¢:¯&wµè¥z¹ŽœGîC÷æ×âÈûÂ}I ÁSéhÆ—°@}N'YÝþÃ÷§¨!i\ OÀ3ž/# ¨eU ¹äƒ4êù”ü“å�a€`¨Ÿ#¿Iaêys]HîkXðû1 1'æ‹IîÀ.ä`òßÖ3�ÕÇq¯¹sòͶR[‚@_Ôo‰Ǿ°Àx«Œ€c£¥_3C IþÏ·õ0Hƒõ% �G꺗µ²Ç AîCQäFÀ�,ƒ«ã$z7B 1�}•Be`ág‘À9mÍ ¨l±ç—1(Æü©KÔ©¥=ÿXÿòH)U r ¹�œHndö¹zÀ”ë²å“Á MQ_UX0ôLE)¦rÈ‘ èÎè�È¿%Wb)r"v<‡É|xÎÌ:O¹ó.�ö6‚÷Ñ^çfád  â/ËX"è<2 RHEcù³çÏ·úufûÇò{]+zv$_)`oŸœHnÄù(ôV_½(NÎQ!¹ü>1‡f#cf2B÷ûv;y=ÔmÇD¤t™Z3Ù@T�X+ß ¸:…²dF¼4# è¼Y¡zDäúñ|Ïß‘½&üùºî�Õ+çRç¨sårg`û� œÜPz¹ÊÌøx4ÖßB¿ÿü¦§Í¢åõmpQœ)#PåÖ�ysFÖ¦€6€×q:#€ž½; e]*Dt~Â_Dþ,s–ý’ž?e­²î¢,$ÄJ�#É•ä̸_¿è¹t¥gz¹žÙ€§ÌO^ø¥  ~dLËÿz)©¼Ÿ¥&VùC<ù¡V4°ñ lüœ ±OÀ�ÝK`Äy+\–é%ÉÿBgð9òGÙ;`ÒUÖuæM¡Ľý9r&Èù1:Á¥©ç!3tÎ/axÌ\dRK S/¾”#ôS4ü1åè �kØê5X7fßþfGÞ9 O@!K« ¡’äÿBÛxù›ç{þ 4±uÑuŸOìI=’Xrðÿ—�âk\šº™±b c+†2 ±q-3oCê¨Ô5B6¾�ðÇ:`A#`vÖ­'AŒÃúžyÿ»e”¾ì“ä�žÿåoŠÖù£¬­NäïË1Y¿ý5 ‡¹’œ‰ðPrè)¶ŸçÔèrz³"e/Þnôˆa8TÛr&£<é•[F1Õ¸ˆHÎXïˆbèÙÈHÉrŠv9òÇ‹}<ùç$Eñ’©q/^a¬$–†í 6B‹ß” Wg鞘ìáÄxä(xÖ !PloÖœ€b—Ö1¤ùýTÈ™äÎk?‚âîɨ�…àÞþG¡Q /˜&ýËýO Ê€@ÇÀêÌ ÐÄÀ2ZRÆùcR§óç+}kßóOb¤ó €·r¿†àʺ3•pHÝ}“ºàè’î·-ÛÑ÷?—¯ÿEH]ð(Zý # PóˆrùÀs{û‹üó_i¤‹@qgx.¹”Q{nM3™Ô çâù? ãÿë±–‘rËH³ÔWöÈÈãTSù§ §"ë7¹sJ.�…I�¯³XàȾm�_äÞqÌå€Y¤ÓïRúUG`‘pú<ó·ïÒŽ�…+wô1°½/÷pzÎEºY4Û¿pòöW öȲèMö7W•L½˜—"wŸÆ'õŽtê$Œßúþ"Ç0ð=u¡+YÔÊT1H›@,$n%KÂQ3Z„"‹ÈßmaÉí_„r‘ ½"@îŒæÐ…4H¤1·öóü󩨊ŽìÇí´“pòÀ¤ƒk©¦1/ºÎ„@N,6ž+# 'ä�“L‚üQ&"ÿãÀ¥ŸK…¹“J.%§Rxϱie$UrŽ÷,¶i›>›ÿnænFÎ"HKZÅ#ú…@Òx<2úUqº‹Èe¢žŸ‹Dɧй3âÐ`39•‘{ŽM+¡T €ÄžÅÞ ‘íÿŸVIeR…Õ!�48 #`u¸¥~×"ò—Û¿K„U÷».—ÇP:n£rr)ƒù'Á±üÚsHÕ€4nÃüqÂjŒ´çòQECÀx“œ› # çZ†üùV?-õ˹”\>DFÚ<§¦»©^j@l­´¿e6ˆžÿƒ1ûŸ©ÅŸØJE¬�%FÀ‹41p°õ~K’ü_�ù‹ü{‡U1r(¹”œsk›\›–À©ô%±Pw³Sîáî‰×m0¤&h�þ �‚ °Àx#†dd[2‹Éÿ�Ñ[ýÔóÏvÅÞo‚˜Kïy–�z7 ã¹6 ÁR3.ŽÉ¾i­s‡Ì†á²@�•�F!åK‹ïlâ¾M´1ý›Ãt\ ŒÐ…33Žˆ6½íR™)*ôË.ÝR?ZÄ:@ÏŸØ»QRéèÊ:ê±éÔé¸eά¬qÊàÅ@† �lxÎæȸ/N‘WS3 —ëíc sÖ¹S·PÊX(º|@ƒ«°*xœ€ýæe¬ ²5Þ´ ùk‡9½0 «D@uz•@ð¶°EN%·ÆÂ¥æYOs‡>*0U,d÷‡u: <›ÿæ¯êXpØ8´F-hŽ[pf,kÏ F€“–É™ƒnžbÈ]Šd\›‹GM ñâ�À¿ß¥öºÏ°ÆäÑ^»½pØ?ÚÓÔ»ž ãÇŸ­ñ�j�%ÚçÛ}yùcŸÅQò1óFÀ¨ëEs�@ï (¦‘‹KýDþ…ÖcÖuÿ)´ n9ÜRÀ8—?z^îÆÕ\ëz Èuw›ÁˆN†@T*wm5 ë! Ž�+ÆËݸ9\è›á ±r-½_"xŒ§sþ‰ä¿Ø2RÖnäEA�Þ`³@®ÅaËnǽ½ñnOŠq–�>h6¹¥q¿ ‚RÖÀ}¹Ž#Þ7¼¬Ù¨ŒÜ¬í|wÀÌŒ£#¶ùM¯·yOÀ=ñ2�"lìÉ;ü‘ü!#eí,õkÇJäE¡ÏøºÝg1”|OQ� Oޏ÷æxÿ½îâìÚà“kÚ¡u`ýMÑ&@ªå—òUf….+cAO—ÏÑ‹ @IDAT‚�<7ZÐy•p¿r³ß½Ò7AþœðGY!³^ìÓ¯rYmºªû«Eª(÷¡;à6"çØ]ë{•« îíaÀpHªÔkQèy!°08°Ø§Àmƒã^öJ�gr�ä�í}!C§ç¿`¶¿Z„L`W¤µG€5+âÜá-1]{Þ»6>ï$°Æ–ÀqIè ²A 6Ü> O@_Œ€c�?{þnŠY6((V!Pwhî“sɽÄÂsq7¸tm<%NmÎÚ[0 € GŽ»¶Dº^Ï�z!,0^âzáùy’äÿLøÃ˜¿ïù‹ü륎ÊmîD†ä\r/ð\Ü�0]{b²ãoŒgÊç×M è!°&o~\ðy‹Éÿu˜ðoò#ò_S)êf!Ð!9Ü»‰qìé¡ãݵ°ƒ)#€õ1Áuüåˆ Ñ_!�1 #¼9# Aþ²ç/òϸ�½X8ÿ1釜 ÂÝÈv,s×j/um\Õñ„0Ü—~ÌDZm>uŸ¨Ë fNÊK8`ù¿Iä_1eRvÊ…@ì�Àsq7Yèz€óã™>`ý�ôýûO7Bè™þ#Àò+g€%B ¹\νh†Þ¨òæfme°È1sŸ€£ï¾Üš›¸O¿umãÇ¢€ü±·ÿÜ¡mŒ=¿ÎŸójçö�t+äÞØŸ¡¬ùW[½¶ZVÄ»ãÞ¶óx.îFή $æZYT‰�ÑÎDôLð+‰‚È�¨A†‡]ƒlØ0Ç\ãLÒ««ðz—óI Ñ „º5ÐÌ€ü["è›7à#“óÜÔ7×ÞÕE×ò¨ÓJãØD´K€µ“÷b@× ØmËÀt]¢øã<¼ ò�PÐßœຓÁA›þöwìðûÿÓbaŠâ»óÔÊMzFìDôÒÙ[oƒ¸IàÝíÀæëücògœn‡¿šöü�NA·¨cÔ5êuÍ9©»’žci€¼7¬èŸ{x¬�ô!�ºþÒÏ| ÆÍÍÙÄ•mŸóL»ë/ÿÊlv΂��úÜ,[ñöf,%sÛûÖÓíOò§NQ·¨cÔµ‰+ßëtO­^¾U^©9¶ÇK÷ÈùÁXŒG×@×Ctˆ1q�ÿ(ú®t-Eœ ú‡€ÛÅÁíŽåxzÿDY}ʇu½~¸e›xjâÒ×X87k›_s1ì&Îa ðžÚzP1§ña;ñ�¯u9çœ€ÆÆ{š�¯fNÈŸ;üùž?ã@\.Î#gߣ>!Iþ_}‰}Ëœ®YG�Sý0z¢ (aÀ²Cwu½àòJ¼•`‹Æò$÷ò.ÖJ» Ý^¦ À‡ù3EG!�)ÔÄXÿ[ïkh "#ž€Úh@ÔÑ „F�cøúê@j1ùc%ÁØ…/ų¯AíæÞþ0(ÜKmmþ8C˜==ÉŸºÕ„޵÷]‘¾‡­Ôˆx(u&j'|\jΈ3ŸääUãÑ•ÀÄãÔ·¢¯ÁïøàR%jĪÁÓ�A ® á¾q7ñ͸¶ùµôÔÕˆß?ñ�¯CÕ ìè»Þ¾hb`²¾&Èÿ"�ÿ¥èù{·¿Èß‘?'URǪ’:P­œU57ðá`€l븗~9ún»bß® €°ðƒ…£!‹/Å-qâ� �ü€â¹l¨'.‹=µ6è ˆç�Ðæ�¾J8ü„¿%äïëvâÞŠŸ.èù¿ =èR´¢‚˜%;]UBmvK1ˆsCýŒ¾v‘ `u~bgЀ $cÆÝgµòOV£™�3¬÷FÀA4àtáFëרEó®7Ï^ýžãûÁI'A§9‡hÌ�»1‘4ÿÅ»ý�?çO0”_‡ªQ×£Ò¨ã_–_4 0‰8¸{zò Ø\€Þÿpù«D÷VåÉj•!ªHÂ`u©÷pÀ¼'`3&JCC6ñö7Í«îfë^úr;á5¯N¸ýëG+÷üIþÕÁ£Zu}^�ëtÆ2D·oœëI1{2î´ÙúM DO‚Ô©ðŠ–W–_O® >g(Ö¿Ey€:Â0pä²KÝDí_Wç90¸†dÄ6¿~— ÿ·6õ¥/»’yÌ£l ßÝ ¼‡£Š5 óä?gwºžÿ¥Î‹í¦¸ú[©se ¾¾,ÌUYsS?¹Q~nô;QÌöÔt÷dl³v€ùÁ‘;¢~¡4qÞðÖK�°µ60ЭŠh6mì7ÝÆÿ+QÂ#`ÓÓµ\1A�ÿ+1æ]‰Æü«Õó� [«€�8Ôf,Bm÷dÇõdD@†=Y U( å¡ÈÈH–ŽÛëÖãGݶ¶î7œs™_½öLˆPù'µCçåBÀ½Œ£'‘{"ïCÖjÀ¤5¢Pz2) ÃB#àÎWîJìXOíu„�²bY×q�?Õ´Nä_½:ͬo`«…2$÷‚BO÷’°ž-.e Dʸ69“FÀ1λkÞp«h‹[’,}B”¹ßÞ—a·nÿµëaúyYMŒk«+«‰Q÷ô�®×þ%Oa ›NK�w4uhVXô.[4ʸ¦Y �Z›_» vô€µ±Ï»Õpò¬_ ù£ÌÙ9;Cpâmo\û˜?ë ë ÑãyIêK v-®Ÿ>ö1Çòô|%ÝF~€{�!ÚO«2)Í܈ɟeÞ5ùç&¬+#�y÷Ç&kr âlÑ�ß•!Ô/õD 6ð‚öþ¾r—Œ€:(ÂräÏ—$a¥HäNªÊc çÂñ4Kî%?=QÂØ HA”T!¼�oÉ›x»Œ€ÒßZN’? >çöï¼!Q]˜µÂ©û‹€@ï¯æìɸո ìm+¢"àXsêÛü-4î|åÅòT±.,&|ó¯G®§ö×3×ÕQn–f²´ÚŽƒ»ÏWO“O´AT­Y¼ÛÎ/‘^u_}}²Ì½ë„äyçâ1O�óŽ' Ú÷Ä×îÂ&›ƒØ9O� ]~L�? "9ñu2ÒЯ¾ÆáÉoDä²O–-˘Ûû¢÷ÔµhÝéX×É¥þ ¯+¾î§ž€"Ìlç…u,7÷¤Ž=gØOZ7Û‰SQUb•ê¾R傘Y�žôg™øú{©{ Ä“Ü6˜s.�=¯“ÐßÒì!õ$ù¿ä�2unÿxÂ_÷zÒƒL…{´3¨p™©‘@žkƒ©3̼¾«ü÷d E&>9_™ªE&]!ª‡ú€@Rï’ç]ˆ2~'ˆâÌØá ¸DÃ]ÀØ×G�?Üþ—¿9ó¿b±µêQG\æÒˆ£¯(ʼnW%EÀ2?bÎ�DŠ=]Mô„�#ªZ{R©Uù!¨”„À²@«ýœ‡›27ŽÑ>ËV¬‹Ç%ÿb‰+i„@¸}§bîus<'¯5®® $’0ƒ„`­Éë~!Ð%^ãý±Ëh–ŒF=€ð¿/6“°$8Ù_:þ±ë!¤ÆYˆx`8‰÷ˆ?%ÝQ|¸ŽÃ©�E/Sj ¥Ì™Dî�€+ÞìR8ñõ˜€7pG«ºµ�3V‘¶Û‘—ffÆüQfÑR?ïöÏ"·î‰u…:X‚úB13«/à«(WD€­¹—7 X¯xó1~èÚ@œ®ùÅñ(Oð‘jèrü7f¥)IÊ dùÉ$@«ýœgpNÀ.Ív¿˜�^§›YÚ™d¨z‘²ñ!ù ÂKò%Éÿ-nË.j¦2ȶ×;Ö§îO ¥%夌E—3­üV7r-Õïôv�_»*Ø® €�Ç5 ©¦5ÒUê‘ðú[ GN³ü±0‚-$7…nN&‚X¨é›910i,•NWòBÀ“ÿìbòïn�×b»zÓõÓÙ?HÊp2]Ðì¡({ lúbÎ=̼x.î&_]û1Ÿ2oZЇrk’»É¨žY ¾ýq5ÏÔá4š#à2¼;àb ÌD½N� „L°e¯ IœcògY¸M~:=ÿœÉ?û\§�‚WNL!JEÑ/0ôî ¹Càäy.^³<]{®ŠÅLÄq¦*µZ3öz %¼îùcJÑ.Š&2,\cFaqâd¦¬ù·p‘¨�ñp@ÇàfAà # ÀPV4öü¹õ2vøcÏŸØ’üýlÿN±çš�XÇ:‰G0¯ƒ¹ ³úÄ´Ðê±*ð�Ô¾&Ú9ì>‚É÷'1ÃÿBÏÀ�ìæÙ3í„ؘà4Tn6Ù©=È¥GsB SXnKS”ž?æ”~Oɰ6,’——úæ�º¨)×¼'Sv¤û#^ÙRmù�70†ÓÓvÇ+éöëògvúQÖ�RôzÇ#%é‡0k)S'&åŒ?ñ³E{-Y¬Ã½Ð?ld¼íû îí5Ï]„‰ï4›û©Ùþ¦ãýÐïQÜ«\z¾/°q`Â<¢„  £Ñ Ü‘´¿R#uxÜpÀ•o†ÞžèHª“ð=’?{þï|›Ã”Øk©u�u…ÇþjÞŠXv~ œüâþt®]ꎠ:ñ„1ר îåE”áÂBõw®âصÀ¸‘*û5ðFû¢Ù„!ª‚Tj¸êjO×Ô÷œDúVœ<@\Õ .ÚQ[^÷—pN_ t=ï¶ïHç"@8ïö?ðʈüóÚägµù›¯+ålëŠSWV‹¸îóÀÏoìã5”eÌÁþ޵{2�[3n†~+æðd¾nໂȯtþ˜GšÇN#2ÜŽ�W¾ÍÕŠ-¯Çœ€!xd¬ Éoõ g¦�ä?ì’cþ+?˜ÿ/Åѵîó^…‰2ƒÀ5)·Æ9ðÜU†R鎠׿�Vš½ršÄ]A§‡Š†@±”/š@£'à\Ù$6÷ÚZ�Â"’䬊JþÅÒ±Eêkå ÇF­Gäè5ýΈğ[¦]ç_þÍ^ DÏw�@ñz42VUš‹É?ó÷³ýWGN7OÇrʸ’)Aƒ\KÎ�êI%S1ÚÞ2IÃñˆž*ÊC¤„Àb#à/ä H"["òOŠ­s!�71·6ȵäÜ8ýžø¶'à’X4q?ÇéTB` ±°�Ão·#3ÜÝpf¼×6, ÿ¿pC%Eó¯m)ã…B æØ©ÑˆsÍsp·Böd\÷öGll?»3žœÐ­,zNT‡±D�FÀ»`üïØÀF7Üê¶v�Ký8ᆠ"FĦˆnÿÚ•�2\HØÕ'Ç’k œK!=ó¼›Ð“àÜf{'qþÓxIAO. §ŽB zÈpeJòç$B4ˆùÃ@Ò<âêi½r”!9û³˜s{ޏ'–H¸+Z‡HÒÿÙl4q5ìÎô\Š 6ÔÜù×FÓ•Ñt ·Fk?]Ľ]'Ô“ÀTá‚ðqÜ['òt]z°P)J~NÀ†ªl?sÌy,sÏ¿<:V’ª 1W�ˆÕyðÀM|(Á½«Žcñ�½n”ˆ/¸‰£‚4d$`)Ó©+8üá»M:xñÜ6¬‘¤þR¡åî—0ÞývwÕm4RÑmƒ}ÏrÊí‰0�<—Ñí¿@Ǩ{Üê‘KQ_(oGuR2È­ÑæÿÁMi‰Þ³ðñX¥ZÖºiÎØøMV è eAÀµ ®AÃY‚T -?…†¬üÇq'ïŠ*´Ì „‹Œîx„È�´Oþ+lìÞ"È1G®d“Ó¶Ÿcþï¹Üíðׯ–Éel&¨kn%¶¯/,£¢S\W¢úR|qË¥ãÙKKN%·N@ÑZÖ¾‰)zîí%õž €ïź„Ñÿ¢bL¡ÉÁÅ^dÒ³¹"àš²DŠPµ²˜n”“Ÿê¶àK"_Å= Çï´W€"# é (_ž"´Q8¾ç� žü™Wæy™Â‹+Ã_ɲúWPá)k¢bGâóoYu« 8g$K oÜeGËíƒ2Ͻ½$Ùs§éâŽÝ…—„·ÁΧšI«z)•œŸumC'Í’]ÉÄíÀ¼à%p˜FÀÎØÿ篶pjÊÍ”�–.,¡�ö döä�¼ìçR?8Ì#óš$£Âfáx‚•N÷æ.£F¯8ªü;Ê ãÿ,¿ð63rmïKGÏ€W¤3£�€~ÈYŠóšÆo …F SX¾0 -í"áÊ(ó¢,D_‘,ƒ‹Œ€+\o¹¼Fò’$ÿØí‘9Ýþ+ٲ׋|1®/�:_dY%[\eg?<\Ëâ¢LÞ³æóž ¤È‘0îOÀðƒ!ü�›BúåàП̨”¦¡J'�®(�'yXBþWÄ=ÿ ‘?»Rº—yMU= @N�¸5¸�ÑĜ۳¦aPgŒ@š hïnƨ j‰@Âx/<¥2‘¿sûW”ük©›Êt¿ Q“[1mø± Žs{•'ÀÏFÄt²ë9K†À¤ëÙ:é5sz^”�ÅF@æ,Cþ0`*çö/§BIê#@.%§FÜ^ϬxÎí5[©O‰Œ´�ëZÕ;z-=/’FÀ;à (²°˜ü_m"©°Hö¤É©äVr,#õœËó^B*€àGvÇmpQܨ‰€‘rÑ|GA>�DAŽe0–#ÿw¨ç_ Z"F\Ç;u~É ºP@Ü@8n"Ǧ)_*”‰.ŠÆN³9,¼–“Ø,¤)¨âÊ�ï«UÈä®cF¡ø‰�ï-š'€µ<~±�[êÇž¿È¿ë¢ÎãÁ¸Žwê|i*�ž`-#§‚U¯Ùé8Ö¸–Jö¼P"g4&Ú�êZž´(nâG�j’Ó&¯R<–¬ð:y(.Ì=H†Â€` ý,w <å ¯µ`dÄÂYlÚ—!S‚üoÇ…'¾ö¸t ´†ÒñÕd �ôÿV/4ŽÕ®+ý‡:m üÄz”ÛµqÜŽkÓH'MÀ©†®›{ yhòBÉx$ Lˇ+,üñÇBçÄ©[IdMHŠ÷üõ•v;¢tFÀ(Œ€o¤‘Î*ã ùóÅ>ØÛÿö?{•M@¦zMøóõÄãå*�ÿR¼£{WÁb™‹'¦$Zˆ@Ì¡n `”žÿÇqã·ðÞn¾¥f\ 5gá5�n&Ê0,—XþnDÓ3¹#À�ÿÉ=ñn¤¼|Îýé&‚’=ƒ&`±ðW¯±€F=;9îJ>ò?:i®ç_;ò'Ʊî¹úÏúî“ ¼ñ§ûHôdΠƇ¨Õj÷tÓÂï2yϵiˆ’Z‹qqÜ ²C?ƒ¼š˜FéäÚ‡NÃæH• úñ /�µ ‹Œô¾IÄÁ^%ÜæÀ[Æå…4‚lJJòÿ3¸ýkIþ±Â-ÐÁŒqïµ\]5Áw¬U…){fÃAç’ nÜo‡~ÎÌ\œb)¦fÐR�n5bc%üöH»&–]ý$Hï{'záØ1pFÀ ¦ qNVq3 çöç&?ï«›Û?+`¯X�ö°û)ü6¹•K®]ñî5þ�š§ëâƒtß^£º]�5!�40'€û8#€ž€ÔÚ‡y‰ùsÌŸn‘ÿ<0:Ù#�àÔT9;ÕÈüîDö;G"#…s 2h�²¼~)”¸˜:¢wNjR|±°o¤'.ùy# E盟íïÈnöü‘&ç#ij0k‚7³ëX©U­ÔÂ×Hל² �K±Ðw˜qϱi��ªàw'±ÖwÛäîEQ…‘Â¥U`ŠG,DFÀ¼J˜FÀß$Œ€! ´R0G€¸\ÏŸcþ04ù#Íú‘ÿBäõMd‡9Ó?6Ô €S™–çØ´ÒMÕðc§Ûá;Ð8|—c¸†V„€ÈTã¤ðò?·ö¡q ÆÆ"# û›Ï�üãºqÒÀ˜'ÿT›ŽŒpQ´B ¬¸¥ôñøð݈S“vS›W!õZ¼/-`jx%Ð׆@ü`ÿT^1'úAÔ�ؽ‡M|ྲྀï9Úì~Â^�9ð½œÀÚ¸\�ô×yïÅ3|–q0.ÆÙ@Ü440©ÖH+óB È�äPr)ÓÛskši§¶€jGܼ4,øß^„à6ò¿ëXL\IS´ãJEÙýç¸7WúóäAk4ïfSÿöiÛûo_´Þ÷VÛð„_³æI'Z8‡]:ðá~ÖZTâœ[Œ¹œ�ËüZw´»>ú »ëyŒ]=£8CÄ-ò/¿®ù’÷ÇJW‰rg®y”ôoÁ×™�1·¦™¥Ô ‡Ö¬oߘ¶¹#M Öc K�¤Yr)ÅÅBñäYÖ!)wò<%ˆJMÃÂÖ!ô¶�¸ÇíÀóžeã¿øË¶áÙO³u�¼À¶o³Æ熣ÅE�ÌMO[{fÚfös›øÊWíðû?l3_ûijÎÅÕFœ"ÿùÁ̲êåö_÷;: “ €~?6 ‚)øÜZÖüF,˜ãÖ4…LÝð,w;°÷G¶éša .˜„Îáºÿ)MùWŠ”µ€’r'ÏS„¦dQÑEnŸÍ6 "?€Ï]v’ >ö‘6üˆ‡ÙÀY÷D‡?š¦ÛÆæ>s?¾Ñ¦¿ò ›ýÂWlÎîpNþ†�ŽxP{]\rû'• ¬z¶XîÅß“yÔy_€ûß‚iì¬{–Ýq %É¢¬R7 g¸c;ñÖ"Lcø*Æ0.€£ áÕ‚ôUŸŽŸxY{5ÇÏYï`sÁ�� á8ٚã֞¾Ó¦¾ðÏ6‰ƒoP|¹ó{`ëqïݱñ(‰ÿoCðwFßô·¼ø².oê!9Ê ƒÆ´ÙW™ãÝ1§¦�û, €äXÅW¦,|š�OÍHÚŧø„ÀjàN⳨œRt @ßbzÿž X1'h,Ìàƒ9Óã8*!Ðb®l€;ùï?)ÃŽùÚšªH™�Ð�U4lö?§lpó6rLÙ©Ÿ"kA€Õ’$�ÏÄZžÓ½B@ä…@<þÀÀ�s_‰ÓM}üŸñfâ–Ë;#æL›Ø‡Ì|SïÈKu”ŽB@”�69“ÜIåiÌ©©g++Ç,š;£y_°à¿Á•Á‰€ …C€¶tÒ¸µâ8Æ—Ýo…ýC9)h)„-,ЬbÝë‘£ºÓM9?³¤n«Þä\«JŽšÎä½_âŸÝ1—ò<í�‰€Bî�[eŒ,~)z/@@cC—v fŸŠ)X©èªÓ}ƒ~m £ ·ÿ?LË/òQÏ¥k‹fuwgfø=‹7ÙàU0nÁ;ʤ„«+–~ß%_M¿K@é �tP�NϬb �\IÎ$w2Ï¥Y¤˜™u£s¶qŠí?‚ó=£шÖ%e‘Å™*2ÔR…S‘ �¾# :Ý÷"X…äÈQ܇!ó/’;ñ�{tfVx™Í`^÷D“ 9òôlBú4\ °€?)ö X"e./t,sN ¢cEªT_˜I.4S(Я qÑ]>O©öÄÊó,Bf »#îñ#3»ñ^€ $ÖÌҚɠªÇY‰ê�LT"UW¶ŠäÏéZ®Y¨ˆFEÙ 7’#É•äL^Ý‘±×éeb²îe†ó¯scR„LÖ3f—‹jÇìJ¤Y¬J>*P•ÏBUt­*ù¨�ÂaùŸ+•o�3‘¯Ì–ÿyÌ25˜Ì·á8¬Í/ðGüWB@! <äÆèíæÜÿ»cîô¿gqÌÜØ÷øa×|áp´ÀÎedQšŠS! J‡9Ÿr$V8`GÞòÌ Oö÷²CßF©ü^p /@éÔS ! „@V°÷OnDø¯{Ø¡ïðÄs'ϳ ™ܽ0ÊLð™ø-äš�U‰*^! „€(xûŸëò–\ ÷.çåatv2jZû3pq°`4 P6õ”¼B@!�:qOŸîôúÛŸaYîþ—Ì@.€ßÉè'6þ-ÐÿµñË�œ%�Fçù#P•B¨J>ò×¥¸Vª¢kUÉÇZ˯€÷‡äDì‘sÝÍvø›”ÏsfÖ²æbx—ÆN÷r ûl<@ÃY—î*âGÙT"T%•(ŒŠg¢*ºV•|”]Ý`ˆÁý�•ÿ|v'8rwŽò\ �wi„Öøgº:�éY ýW]–AÙËÁç¡ìùè¿6H‚ã!P]óù8^~õ{¶ÄåàÜÿØôïÿcjž+³M9Š=Ó­€“øÝxI68øêmÓÕpyœ7…k 7#$)�Îç¨BcP…<Ì—ˆÎŠŒu­ÌAu¥P¥‡Í¬.¼úÞàFJæ¹2)ó$_¿ �…€Ÿâ"‡Ø(È#£Jce¸Ý—WV~°ï¿,”sá·¾ '*ˆÀR[z¥˜Ù†œ Q§Å·>RµÉ…äD”I{wN³ÿ=¼y¶#&ü¶5>=n! ­ðQˆ#ßßè?n`À÷ xôrò¨ ú�À,`IÖá²ö,¥¹ðŸÛü‡\HNäï;rîçjÐÂa&ïcw] ‹ç«|E0‚&…B4bŽOãc‘Û´dã ]%D]XT9}]¢žýþ�QÕ•")h›ˆ_#'R0Ï‘y ™«ÀLíŽ\8k|2~7@^yU:•DÀ‘•Ì™2Ut¤{E/¡"ËG“,Þûÿ“”sžó“:wà‹q�³?…ÕîÁÈ®³Mó˶RZŠ@Š  yXZ2ºR$ª cUÈC‘tbí²Àtä«9û¢…ñÆà¹qí±uÿDn«¼ˆ»`@ý�Ýõ“lÓç×™= p 6†ü�:æ‹{3ü”1$åVãVÆ,ŸÌI�+“ô‹ë¹êK?J¨·×YÐ<Œ—äÝ×ÝqbþÃá¹{b°]íÁŸ�´¢ e­MýÐ�”ÓŒ€é³|ÊV˜>ÎBn!�#!ë t¯T�u{võDþ1ý8ÔðG˜øwʳ|C¿ Ws6ØÈ¿5û –AÀ#�¿õ“/ÔEM��Àf oºÆænÙ §œB¥™Y�©¤�µµwŸ³[pVT�%WE Ž‘G©sÔ½ÒXÌ”u{îæ[,¼ñ»�{3>2Bî�\GÎ#÷ÍØÐ¿R€P©ÜA‚}1Õ±¹Õn›€ Ÿà>Èø^2sºÅ•Ešm †Ö;í›úáá”ÂHŒkزH+Å8!c08`³0Zf¾ôïh”7"ò¾Ô¡3¥¨Š� €�6óÿÝéu°õ¯¬ÛS?ü‘«%¬ójrû£mä:rÂ'αýGÈ…äÄèR¾ûbÄYt†Z~ˆë q�óúB¾�-5lË<ƒ}¨Æ?ôQk/… t Ú€�æ_mÎ5i2ЦYÕ”‡FæF§sãŸù¬#ÕÈPàÜÒ tu{üƒÿè�꼚Û>”Aˆ8/øpœ~ß ‚Þ¬¾ä: åsƒmü·1 ?a!k—&ö¥DÖó×N~ë;ì¤ Ÿoí£pP±áhôÓF\ÈÄm3š7Úѯ}Ýnþ¥Gᦓð¡êȉ´ bº”:¬ì¯°ÓvÉÖ=âk��é‹ëlÑŠ8O¬�ÑQ;på{ìÀŸ¾nßí�ðH‘¤¬“,-Nþ;jáçζñ_õØ/¨Å} {"²ŸkXð~ñxVú‚ÀQ4 [ìÀÿ‘5OØd'<å·Qcçd':hh ô5@;ÐÀÇlŒ Ûä·¿m·þÖ3�¾ yƒd~bS_…Tâµ@€†&êþî{ü3lûž�Úèù²pj]¢nr`Ÿë ‘õed’šÝõ³;ùŸŒo0îú‚€ç8hÇ(Àž˜yÞ�@yú‚óìµíc‡mâš!³{΂mp½`ÝξA”sÂt¾°a»Ó6½ì¶ù`Cw;Ý‚áa¸ûj+¢ƒ�ÙþÓÓÖ:xÐÆÿíóvÇ‹^àúû�� ™Ù õU•s.'%×Hðc¨+·¡± ì$ô®7þÚ㬹ysT_š}nÂfç\}™ùùÍvðï?d‡.»”RBf/ô–)ä�Z¨ö ¬2tUn\oëÎÝn{�zÌ[Ÿ^ß[ÍÝð¥íÄ;�1 ðš ¼ c#s®Ïlãá©ã‘FÀš‰[ÝXÌèï<Õ†~ñ¡Ö<…=‡>¶³¬96û�klò_0ùêÖëÑèrÓ>“ø°±å� B /Øt’L9�kgGlpë}mô7Åt®5Öa‡“Xwó’(™Nëöý6óµoÚä'?âè¾aÛœœ‘ÌÉ;už#sáÃľ7¯…ûÿÕžûrLIR}7PGÜÀÛ†³1¿ï°:œ!iße[‚V­.�`'а* µR!¢Ïi8c¯Ÿ=^¡º(�¼ðºG£™Þ,±ÃYQ´‘Ò5ÜêÖe�ù„~îü@7¦šžw/;|Îû¾ü½ï=m(iûc! ð| $~[ö¾ËÖOméÚl0šh@NÁ” ÎŒôynf “ÿ¦¸á?”Í7³þˆK B W¼î±¹:SôD|°Â{õ… »ú¦°Ál‹u…scDþý,Š8mNþCïß>}/¿�œ éûXL¡H“¹Þ;iáï°>³MÔ¥"P?Ù�`™ wlPB`h pôcïSšd·Hu¾Üäbë¦ï-}6Sç¡@õq`¿Œ%��„!€>Ÿ �y„t&„€eC€=}¼ö—Kÿ¾r”çº"ä£ÏSUç!Ø“=Àywa¬’yñt&„€B +Èiä6>¼§@ÛÂp­·Š~n6:i¿‹‘´³°ª–Ól c¤°ð„€B@¬�ö0–þÍXø£QàݰdÄsÝ*ŸÏô¶ÂÌ€%îÆÄ?t=ÆI0�æ�3‘�iñ+r! „€È¼øÇS¼�ÜFŽ×q²H!Ba<DÃ[F?° [ðŠškÍNR¸ìÖz0 !„€B`„èaà°ýÖ~ÀYvävÏq«x6—[ å^÷^€ûØá ÿ'§¢+! „€(-Lh‡¼ÁHþqïŸÚ„BDå‹ñVU-k¾ûŒC@S ´Â”žB@�""À�øÖ?nÂð. ¸£€Û0ÎØ�ÀöÍûÛ]?fÂæ 8È @„€B pã úÁûÚ¡›ÈiøÆ9m… …3bt\�¯¥¹â°µ§œ¼…R #„€+ ’³àÁw…—Ç÷Ò‹]H€–-&̸à}p½¼+è™. ! „@ÁhEœ~�VÔÞ?1+¤¦³˜0ð2XR3òLÅ%ŽB@,FÀ÷þgÈ]ñ�…ìýS¶ÂÞ p¶ù>æÊ °XÍô]! І@§÷Oî*rïŸÀÖˆKÕYNx}âe˜M9+/@Ñt]ò! „@Œ€ïýÏâjoõ׊ŒN¡ ︷ùÜ)§¹EV%É&„€¨5¾÷ÿ÷çØ‘ëŠÞûgIÚˆUÉyZ¼+&!°VÔºŽ)óB@�Â!àÖý“£°‹í¥±tŽ» 'iB ’i¡½»Aú÷·ñ~Ï6¾^€ÿ‰á€V<PhÙ%œB@T0={ÿØøÇÞC®"g�£ ³çÿJ%P@gwÀ¦Í¾äV‹¼+•¨® ! „@žpÏîúw9Š ±€›þ,H) €]±à>6y ¬ª+¸¿2-®å2¤kB@! òB€\íùoW�£ØûßU|ZŽ�^gOÄ„Àk-Ø>�\ #¦(KJ! „€Xm¼µ¶1ká^ŒýŸ{Ž�ßé¹j qôíÖÒ�'ÉŸ–nXðúáhwÀÂí­Ü·’TÂB@!�7툋‚¿"7‘£ÈUy Ñmz¥ñ0ƒÞ²Â±y½m¸jÄ‚ó¦1!0´ Ù-zN! „ÀZÀ@t äßœ²ð»÷µÃ™‚‹"OõZãê×ý…_�Æ{pœûžÙ.üö)Â4(•%“̔΅€B T€wíàübœ´vG½ÿÂÏü�D�þ–fÀ ½ä¿ c.÷·ÃŸž2û^¹Ø øþw…€B@d‰9‡ÜC"í'‘›²L3‹¸Kg„ûÇ–&üÅD4ÜÂ!€Ø(Ë&Å)„€BÀ!@®i’{ÈA¼â9ÉýZ¢?0dÊPMZaØè]Í.ÄÌ9|/Õ�F9‘—ÔB@�ú"î™Ûmúónlús‘ç¢2"RJ�¾$îñ‡Öº¯ >€e�$­ (£Jf! „@9À²¿`€œCî¡Èž‹Ê!þB)KkìŠ7:Ç&öaDà/G¢|ÉXX¾ú&„€é!ÐŽ¸&øKrÏnx�w•¸ã ¯yy\/ns æ}}Ììa“Xš�¯Mü¦ „€B gb¢l�bÙߤÙ7àú8#MrPωô!‚Òzˆ %D¸=k¿|&�yÿGXè¯B@ôŽ9¥qLû匎ÜCê=êþÅPj€°¡¸ùBóþväKXƒñî p à;ߨ „€B 'È%är 9†\CÎ!÷ôq.½@ /™·Â^‰É· iB`TK"! *�@›œBnÁ{h^Å%8§Ô¬„°«3!püΖ¯„‘¦ „€B 'øº_x‚?»Ÿ¾cwÉ'þ%‘¨„À íŒw<ׯ?„‰€ŸÁ.MœÀ½„€B@¬ �˜;æÈ%G-ü,^öó¡]%Ýño¥ŒWŠÑåç¶ÀíïÛ†³qþ_°nF1HCO@¥ò¹RaêºB@¤†@ˆ^d€µå“xõüƒÎ³Ã?ð“Z }ލ2âHòß ÷ Ü47  ^=ñ~é'jôYG”¼B Ž´È!ä’?¹…S% *×3Fa%öØðe¸o ÷�ö¨’Ö*/B@�ŒˆI‘äÏýþ¿rŽ~“JrKFIçm¥<D…~,Þ mí¡gq�á¿‚B@�• W�3ÈMpï$§�[V~ªœ¿TÎ`1ü.Ögæ\›ø.¾þÅz ”S;%µB Z1güÅ}Á!ärJþbdŸ"Œšj˜j�¡€ïÙ†/a›àGODïkÖ«YäÊ•B W0ëßÀ_†ëÿÑŒ,É%½F^´ç+K†t×ÐmCË »7½àˆ…W5-ƒ‡òŒ\E+ É#„€}C€³þÀGÛ<ŸRÄ®ÿJöþ™¿J0c ~(à�vøz|}ù(þ€ý+5‹“ùTB@�Þ 7�#^NÎØ]aה͊ÌäÎxƒ Ø‘w­óÏØÏÙmäÐQ! j�À¹�A®ØU± V*ÝÊÎHf–�Û èzÛÞ²æÕ÷Ø‚�è ¨´$‰�Î…€B`) Á68¡�¡âMk�w_;º×sÆÒ»«u¥È¦;'*ØðBºjaùTKW•! „@&�0@|9‚\AÎÈ$¡‚EZ+„Uç^áx�­¿|“5^«ìDÈ‚éšÄB@ �¹�xÓ߸µß ×ÿzŽ(š�YÉS7À- ¤…wŠ­ÿú¨ƘO D`V(+^! „€( {ìögÍ) ¯6;ò°sÌfp­³|¼PÂf$L­ bè-¼«mýÐõÿfÂøzÚ¸^‹á�ŒôHÑ ! Jƒˆ¯�O#´pºmáøiœç†Òd"AkGz(t·KàyväZ¼ßù%#ˆ({! „€¨ a´ä/xILþ÷¯ìzÿ•Êy®g`�™o_kÞ�1 gi>@=õ@¹B vÄãþá`‡Ÿí¹ v( õóøB¾$>Ùo‡/:lá5°9�“„€B š̱­g›Ï¶ŸYô\PÍì;Wµõ?æs�­?ó¾9`Á¨æ[aô«B ŒÐã‹/Öû‡“8>ô;r�ç€2æ' ™kë xPˆ`€ŠXøÜ¡Q\Çe! „€¨¾Mg϶>&ÿZŽû'˸(x+ðÛð&ÌøSÍ�N! *…€÷ó¹vøå¾Í¯T»ÈŒ €eè¬ýÄ&AŸÃ» wóŽ6 úí� �%UyÇ¿¾wfwggf)¢B%b,‚ˆû`]E�†4’’`$¨Q$“£–©TL4‘ÙTŒ1eiÅTðUÆJD´‚F-•ŠÄrv•ë², JE-ð…;3ûš™ÛùýϽ}çî0;ÌÌÎ�ûúŸÝžî>÷t÷éß9çû¾óìd*_b&`íBùÎ:ÿé+7nŽÉ ¯F™ß.ñlEjíKHš•j3†ŸSŠ|Í_Æ�Ué”%ðs0h"� 2¹„Lž­D6º5&¾\Èì&>³+nm¶„dÄJšÙÃÀZÆzy¹:< }Nx —;ˆ ˜€ ˜@ ›SEL2¥Ït¿‰/KVKf7áq]wKKLÒÓjRÚ“×ÓðúÁj†ÓÕä;;00�5& \C²X2Y²Y2Z²z�ãѱ�sÀò’.#ÃiDiåöüÇ¡(ý £Mg9/Éy·rh00�•@ØJùW˜ë_žŒÊÛ6ÇÔ›8/–øåÐn)¬´–B©!L¡è•Y-ðæ›^é…‚ùÐLÀšO€ühÄþæú_Õ(—›ÿèîy‚»–™–Rü;kµ}V˜º å�2"Ð}NËdéà&`&°\’µµUþ®“ò×õ’É’Í˽W¯‡‡™ÝJ�Óêƒo�áÏ Eü6Æ€W \ L_c&`K#0�òïg®ÿg7ÇÄź¤Q/íUp @Ab™{,§´P�.{JL\BSÔ.eLN=e™,ÜLÀ–@ )*Z»%sÞ ý,�Ú"Al,ç‘~jXijæHL^„Uz‹–¡ä:�Ï¿›€ ˜ÀÒ LK¶ˆøÊј|°™b¥Ö¥ßÂ!çpÀ|"+8§ JËMÎ~%µicL‘Ò"àô%&`&0�@RþT°¾q0ú/xF¨A+ô_Ýâ)‚Mí[š€ t�Ú<ÿüÉ΢Ùß5ÿæ$sÖœÛú®"�×fü0bà1tFÀÈ�Èg€ÞgB&`&`s�—3,­ÞG×é.¦ú]´#â`!CçBùh5 ØXMš Ü«ÈÀìûöÇà'Éà¬2Êø™ÿÌìe&Ð;‚ú°Ïì02’ Ògˆ©KF‘‘…ììkÿ¦®‰6™9™{¶¶ZƒW¦.ÞCa�€Ë0üÁ&³÷íMÀÚ›€”¥úU?Õü¯ÛS¯PŒk2Ó£ý›œ|ð·[ X³õoè+‚W2@�¼Ÿœ>'lg&`=A ¦x’üC–�…ïÑÇÕôò�²²'`´ð%m¬!üÆŒ�ðÖ�o:X}¾ ‚d®aZøQ&`-%�d20$ý¶scêMŠM£ŒliìzäáV:k˜ÐX[•1=™<ÃÚ}3Êÿõúp‰ ?7w­aZøQ&`­! Y'™'Ù'(å/™8†ŸddkbÕ›Ou @ Ò]™�ÇêûÕÆ¼„ó�QJ|<@‹\x\F ÒÄ�4X3Ⱥ>d]ù÷²-1y=òOÑœsíÖ’€[Ö’víYÊèÚÆ)*�R ÜÀ9%À+]µ MüH0�æ�l“Œ;ñÍ�ÌñŸ¼^2°�‡Í}ºï¾ØÛµ’…B`æö:›¶¯Ï F<‘1©%À‰ÓÊ”ñ³MÀVƒ2Nn†Á~}Sß¡Öyñ昼³�}ÕŸý·ÜÐ ê Ï”òWAP�XÙyô‰íÞÄ9A4& Vv.ð¡ ˜€ tɰYÉ4”ÿ—$ã¬üÛ'ñl´AZȧ€œ?§Yl”ù°ÿÁ¢åZÔ<(¦ ÒÈQ0X6�$»$Ë$Óø<"'Y'™·ì»ù‚U'``Õ‘®ì†£-~ÁÕ9‹aüÖòß­g  ä+Cê«LÀZD€jé/Æ¢go‘L#*¹dœd]‹¢åÇÎ#PÔ2çyû´®§€Œ¡ð±�ã±qôK¯ŠuwU"á†Èú)1Z>Ø[+ÆÏ4X2”ì7ùÑÙÈ.ß“×à§YO¥×xšß’9®E@ÒĮݨ°ìªYÊ·ÅÆíydŸàCBgß ¾N·vK4ÇÇL ¾¦?Mþ÷d‘_º5î¥BÓ7B‹B Ñf×N¬HÚ)5æÅ…Ò’úÊîŒáGO³NöPdϧ`cÜ0�—OMÀZF Öߟ±¬o~cd—©¿¿�a-‹•¼(+‘Eñ´öG¬³ÆÁ�NDåÌ£-Ño£ts?Zk“ÇO7¨˜‘L’l’Œb ó…ì×YÃ-�NXÑõ%2Y/à÷f#ÿàÆÈ™2(#@­v&`&°¦jíù3¬çßw0ò©,²?e¤ÿljF™µ¦‘òÖEÀºcY¸Z˜¥´’!0»?†ŸÄàÀ�nŠlßÏVßZú­u±ó“MÀzŒ@™”#ƒÊÈ }¥È^¾%&¾�Ÿ–k™_íÚ�€‡]ÇÚ¥æÿ­ˆuÓ1øZþø0ñ§.µ¸ÔuPb:ª&Ða¤0�1³hù2Mþ|Ì'ÿ÷þ˜ºòœˆ£…lê°WêéèÚèÀä§–I¸ôõÀ[cøUYTþ•©‚ëaà_æw§k¦«£l@`f€JÈ!¦ø•£ôçÔú? 87ʤxG±FÀƒ;0+Hù�Ñ@¡+�K¤ïmÇáÈ÷Ö–Ö‡†Ôgg&`'L@²¤&S*4ù£üc?-ŽO“ò— «uMžðƒ|ƒ5'`=±æÈW÷�ãµ.íOŠ¡wb�¿VM|]0u ¬îÓ|70�$�>á«Î}º¯Y“op“wä]�ŽXáõ.�½1t)‰ú^¾¼u Ë ëCCú-cog&`K" Å€ÌPkâì • ¾Pª9ý¯Þ“× jr%uC.é†Ô–”Îv]@€©´L³öÅÀé¾o0²‹h®c€`Ž!�é ƒ8B&礯�ðÎL`ž\`¿Fö÷Ñ¢S‘)rŶ8t¯?^åß%9ÆZ K²x�ñZ—€Îo‹¡×å‘¿�™(Äêpk@Ê{0�cH àUC ÖŸinÿaƽ‘¹ýïVÀFÙ¢s»Î'` óÓðao@ ÖàN5ßå,t6ítï§KàÙ*Ýꨵ<ìRn7”¿ÖIDAT{˜€ ô(ä…fõ¡üƒ&ÿ›èwMþw /¤'ô1Ÿ´Üo�âéÊ×ö,€.LVT¶|œÂ¼9&ïäk\ÏÁš#ù­Å·¸e Ø™€ ô0�š �,`E¿¬ ”µüÿZ2CÊ_2D²„ÍÊ¿ óI-ý»ðÍüJ‰€¾¿ýÒÚšûb茀£5à|æñj!Ïp>1�Þ& uüéëOµþÝ(„× üYg,¢Qvô6¢î}{Ý›¶õ7Cé×?/,Ï}1øvÿ@SßF¬ýúR„³3èr5¡Ÿ–òå £eºù¬Hüí¶˜z—^]µþ* „³H�.v6º8qç¿Z£E¿/†-�Ê»hö{�šŽ2H�ÌàUçCó¹ t)u´úì:šû5ˆ®Á²(½a[LüŸ^³QFtÑkûUŽCÀÀqÀt±w†…_­6ÿ«5àrÞõŸ†#;}Ù€pP_Ÿ¦úØ™€ tÕêK”õŒ²~/¯F_ÿÔµzEd‚¾1¢yýˆ»^!àA€½’Òsï™KùSÊÓžG¢´u‚ŃÐú-š*¨Ö/'<ÇÌG&Б(ÇÂ/£~Ve[e\e½?Ê[TöÇ�’£Õ �•? zÉ)Øõ0�ñªå¯^€ØC¿Á¢AÿÌØ€óŽp>ín�Î~õN'€pOÍýý4÷¯çeèëÿ*‹ûüÕ–˜ü’Þ­±ìwú»:þ+#à€•qëš«dù�Uke jÏ`DÐU(ÿŸêÃT d$zÉÏ®Iq¿H�˜UÙUž¡,«L«l«Œã_›«õ÷¿æBܰ•õ“` C$ew �Êb c, zM‡,¤fD‚x|@�f¿vgPùUW^‰2Ë¿ìjy;YÍï§Š~cïŒ×q,›IÀ@3évæ½ç x:•…¿gÔð…Ê,¬PŸ6Ø™¯çX›@WHÓú˜Ï¯™<šÕóyºþßÂúý_ÓÛŽ{�_W&ú‰¾” €%Ø¥×�¡õ¯¦&Q´ÜÃ/bÚàNæ o)Æðêš-à<Ô¥yÀ¯Õ¤ïg‹~~ÖõØ_¡èO)öüXÞÉn¬:P^v&P'`á]GჅh^ð5¢ã3cèÕ4,¾™©D�S#í�@hC`!xö3�æHŠŸ‚—Öî?ù�øpÏ[YÅï½2ÚÇ0àŸŒqþR�ßi^ tÁ�mtA"®Å+¨&!Á¢g}+6=j:*¯Çx--'ë#C ðBBk‘~FO  ¦‘ýôë'ÅÏ|þÙÿîþ(ýË9qàÁi,«= Ë/ÿˆl<""( Xæ-)\‰ì�úL¯n Å¿›Á}cà'v+ @ž²3�#€¤Ò‚Rõ߈¡³ÉX¹ �õÅ`AüJµ°'ö@_m]J€2¢é| îÓú(þ#Ìåÿ0~ï|jLÞ©×æXu®°]ŠÁ¯µFÈCv&°:jʽnì�á'± ÙëÈd—E ³†€¦ hŒ€ �ÕAî»t )s)~¾Ð×Ç\~Lp~mü¶ÄÄ·õšVü]’Ømô6Ú(1º%*ó �½±áñYôý"ìOhxŒÖ`¡’4£€CÕfìL W ¤rÀB[e­×O�ÿ'4¦}SùýÛãð÷ÅŠ¿W³FóßÛ@ó÷ìæ{bø”rT^I“æƒOTû%­Kƒœ´‚™ócÏæ–Þyq2yØÇ—©ígê?›Šø]fï›�Ò‡XÄç~Ѱâ»f°Àm&]ß;£Éÿ|¶ÑÚ`Á=K1øbôý•ýÏPÍGãjk ¸{Àù¦+ lS3¿ö©¿º¢f|ÅÿÞÙ˜º~‡Šn܃ûº2ýÛñ¥l´cªtiœTÃßE­§0ôš{cðy¬`ö*Vø¦®oì sÊpíÒüÐ ¯EæUm? Ö+šù™Ã„<ÿiòü¶ÇÔ Rü#žÎWàð~ X¸®d?âX _�á³Ê‘_N†¼l âW•1«_3ó Ácéù¬�SmŸ}ªí“çéîŠï²¿n6²kŸwïaÅ_�ð~­ HÎÚ™@Ëèû/¡–$�©Hì‰Ó6öÅ�‹+‘¿¿ß¤U t ê÷ ~+ PvmG€¼Yôí—¨í—6Cjû2þ—åz?4›>³#îKÍüø•®§uËkõ·]2öT„ȳv&Ðzˆ»Æ (Ftl%ƒ¾‚Ã3Nà L‰ª�ÀOÓ ÝE Pv-#PSú2Nó¢oŸ©¯êßÿ~'_„fþÛŠŽW›ùeÈ&ƒ·ð÷ÞZA€|hgíC�™Æ Œ4ô…~>bð11ð|VA»Œ˜þ­Cú¡Z¯Ã9ÓµÛ™@S �ÉTÓçj‘êSMŸùûªí3}?þ§ùu?‰C7^˜÷§€ËÓ„³3�–°Àly8Ç#€„=f…A…Óšô\ÊÈéßEß?“uJÓÈb¸´È{ ‡ÿ¬)}îU èKJ¿{“yûÔäó[˜Úúߨ¬Ÿ(æîë¹\àûV+|Ÿ¦°Ð¬¾éj@�*ŸÊ¨�ÐýÕEÀHêKQý"~ÜŠ1@Ókj~ÕÏn»�Ò'ïIñ«¹¾�n¨X_Uúò¸�¼÷)òÞ'›ø œŒV]S38´3�ö$` =Óű:�1ìùl£µ5LBw_ ?™ûBN/"SŸ#c€�ƒi®5¿Ëð˜Á²[”€”6ùE _ÆfRú èSM_ùì[øß@vûô¶˜¸…ß.¹qÂîæ|¬Á¯ö“w&жÈÃv&ЙÈ8(A|R <�Ï¥^„ a¶ £üe00K[K¯â]_‚Øe=ì”ä”/´*_Z’·Ú§ŸŒ€}xßÀç®?÷Púúhƒá©¼6B–"Õ ÝÈÎ:…€…_§¤”ã¹�Œé„¥S‘Ô�Éž}#6žËîB2úóÐûç±Û :f™“-‰¯Ú^üœM·‹=Ç¿u)ý¢–_&?d¬=‘2kO°*oöU|�Ñü7ž÷’w>¹q”þÏ8gú^º¾ð÷Þ:‘€ €NL5Çy1 º`O üJ¥ 8Ĉÿé|“ ¦Ù޲!ÑÓâ-Æ€Ë0ºÀI�kSm½Dâ2O?‚e¨µ¿ÿ½ìv±}�©¿¸#ý€ãº³Ò¯£ðA—°€ë²õëC ÍØ…À­V𤒻‰Ïoˆ¡¥¨ŒPã;Ÿ¶3È ¿ê@Bø�ʉ¦ÊÏeíêHµêÈ5|¥[RøÀw˜¤+h¿½Ý]¡épLîy¶fñ͹lœ®€‘ªÁ ÛÕn9ÀG&Ð (v&Ð�âÅ|ì‡õÛî��§!矕GéYÚCd3 c£  &”A ¾œ†È H‹©é¾ò³[[@Oʾ¶——ëS�jø¼WUø¹Vß»�Õøn¦†3Éuóö8x~uG–v±��̺_Ø™@°àê�Dö+>œ€”6K±>lÜ@RÝ¥(?�±ßOÇï< Êf¶“5»@ãÁ5 P–ZGÊ"Ùün£Íp°]HÙ—iÎÏúx ¦è1%/�Ö'Mät?ÛWñûZ%f¿6¿YŸßb¼ÖŸÿ’¹š¾¼íL gP®ìLÀd@AµÀcdöÄð)tl圯¶ëÄvL�3X f=ßtǨ¶È(à7)«ZƒAš~˜º"ô€Ús8²[ˆÀ†×79½�–˜oÒ¤Ï:ûG~€U&ÌǸñc¾~Ó3ìLÀjzBà8µMà $ƒ è2©Ö kú|îÎ{ÐWý1ðÆ{}èIc-´¤3 ÿ0�»»`w7vÁÝ}‘ßu4*w–âÐ�Rö„—±VÒ½Z“>wš‹“NìLÀŽ%ÐVB䨍ùÌÚ— 'ÛÉv5Û.¶Ýè­1é®lýDlx,ªƒ ?ƒ&ê3ÐMÚ�’{JîÑì×SãÍÔ—­æmu)È0(ŒÝXϕӮ8­yÕ ‚Æ2-…[wl<­û7 ¸_ò®�4úÇÅ^÷Ô&�žž§ƒb“r¯nÕwÒØ Trm~„wþ9ïþ=.û>Û=¼µûŒóÙ»‡ãð�Ϭ®ÝÄǺ1n>Û7ÙÉv5ÈÃÎL`YTpíLÀV�(•§†–)&éðãºF ü,6ü-§³zái„? ]–ö?Ž{žÊþüNâöêþ^§Zs±ÉX�S3ya{iÄbSËûêY-Òµ“êݪ':nÜ’†Ç¯ªÜ«!e¨¨£Ø8”~gËâ9÷êgìÄv~÷qí}31{5ú{O�Ã?ýåêšL\¶°ãºò..,jö Å=ñ¶38QÕR|¢wñõ&`Ç%€¶J­OfjÒ_#èl Ÿtõ¢n]ÏRÆëJ14È}N¡©ü”™˜Á (�DmyS%*i�N”�°‰› ²m¤¥a€Ï'ð r¶,u©s.ýÝϽT1/Ü4þÉPÁ_•t\NŸzÆ»8Âçm1¾A‹'ª+žµsòü†‚Ï”¢”ö¼ÊC}Ñw?]Rú÷WbrЉõGGkÓ&uÇã9ž‘šïõ»ýlW³q~²3hʘ� ˜@‹¤±;Ѧ(<¹Ô� ƒ‘% »�Csªl—h�(ct”d`” A¡ÝÚ—ì�ê•ÃQ®Ì¤Œ�ŠŸTh•��£Œ+ô§§^ˆQÆÄ¥®àGªJ]M÷Á;KÉËÄÎL`­ ÔÊßZ?ÖÏ3X �š"OAQš™ZPʱ«ªàC:¢¦-eÝôš³âRÄ£"+ž­È�ð|Œ�(jïò“CÀX¹WQø¯ ´m—$Ž� œ0�T®WKó6‰Õºå ¿ o`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`&`-'ðÿaÏ>ø?Ú?IEND®B`‚ic10ÒZ‰PNG  IHDR+ƒðiCCPICC Profile8��UÝoÛT?‰o\¤? ±Ž‹¯US[¹­ÆI“¥éB¹ÍØ*¤ÉunS×6¶ÓmUŸöo ø€²�xB Äö²í´ISAÕ$¤=tÚ@h“ö‚ªp®¯S»]Ƹ‘¯9çw>ïÑ5@ÇWšã˜I`Þò]5Ÿ‘�Ÿ˜–;V! ÏA'ô@§¦{Nº\..Æ…GÖÃ_!ÁÞ7ÚëÿsuV©§$žBlW=}ñi€”©;® ÞFùð)ßAÜñ<â.&ˆXax–ã,Ã38Sê(b–‹¤×µ*â%Äý31ùl ó‚µ#O-êºÌzQvíšaÒXºOPÿÏ5o6Zñzñéòæ&�â»�Õ^wÇÔ®k¹IÄ/#¾æø&ñ½Æ\%�x/@ò™š{¤ÂùÉ7ëSï Þ‰¸jø…©P¾hÍ”&¸mryÎ>ª†œkº7Š=ƒߪÓB‘ç#@•fs¬_ˆ{ë�±Ð¿0î-LæZ~ë£%îGpßÓÆËˆ{èÚêÏYX¦f^åþ…+Ž_sÖ-³Tä>‰D½ Æ@îקƸ-9àã!r[2]3ŽBþ’c³ˆ¹‘ónC­„œš›Ës?ä>µ*¡ÏÔ®ª–e½D|Ž%4 `à î:X°2¨�‡ ¾pQSL”PÔR”‰§aeíyå€ÃqĘ ¬×™5FiÏáî„›t…ìÇç )’Cd˜Œ€LÞ$o‘Ã$‹ÒrpÓ¶‹ÏbÝÙôó>4Ð+ãƒÌ¹žF_ï¬{ÒЯô÷kû‘œi+ŸxÀô˜ñú¯.ý°+ò±B.¼{³ëêL<©¿©Û©õÔ î«©µˆ‘ú=µ†¿UHcnf�Ñ<>F�‡Ë ^Ãe||ÐpÿyvŒ·%bÍ:×iX'襇%8ÛI•ß”?•å å¼rw[—ÛvIøTøVøQøNø^ødá’pYøI¸"|#\Œ�Õãçcóìƒz[Õ2M»^S0¥Œ´[zIÊJ/H¯HÅÈŸÔ- IcÒÔìÞ<·x¼x-œÀ½ÕÕö±8¯‚ZNxA‡-8³mþCkÒK†HaÛÔ³Yn1Äœ˜Ó ‹{ÅqHg¸•Ÿ¸u#¸ç¶L�þ˜ hŒ¯s ˜:6«Ìz!Ðy@}zÚgí¨íœq�Ùº/ïS”×å4~ª¨\°ôÁ~Y3M9Py²K=ê.Ðê °ï ¿¢¨Á÷-±óz$óß8ôÞY7"Ùtàk ûµHÖ‡wⳟ\8 7Ü…ðÎO$~ðjû÷ñ]¼›n5›ð¾êø`ããfóŸåfsãKô¿pÉüYqxµá†@IDATxìÝ œegY î÷Ü[U½ïUÕ K$� $ìe“EÂŽƒŠƒ¨0Š£Î☗a�qùƒ#®ƒ² Aƒ ;$½§Ó�ô^÷ü¿S•ît'ÕUu«îr–çü~IWÝ{η<ß©ªó¾÷;߉° @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @`aÙÂv³ Ðk�í«ÖÄøÚvÄÚVŒ¬íD¾.‹lC­µ©®é�ôªôÚÚôïòôýêôßšôþH¤×"²vž¾O_§ï³ô^>Z´/½¿,ý³²øzfËSñYQÞ¶|Úwê”æ‘™ù>;–ê¸=½<µç@ú:í—íOïOï§ïãöԞíé×âŽôý¡<:Åû·¦×nëÄñýé€ýb÷þ-1ýþL±þO€ L@``Ô*"@€�: 쌉Õ)ÊÞÚŽl|*ý׊˜È¢=™à‰(oJp7¦¯7&ƒàGú7+¾«³É};š{SÂ`oÚçÖ”´¸óë|OúzWS;;»Ú‘ïžJÿ¥¬Ä-“±+%l @€ÀR$–¢çX¨½À�)H¿_l¾×H´î�‚Ò³Ò§Ù÷NŸloK�êÖÀ¦³³ÍYä÷Jÿžò©{íY†ÐÁ<ÍFȾ“;ÒÅËö”L¹%Í”¸9Í�øvJ¶|ãxt¾ýÕØñ� "RrÁF€Ì& 0›Š× @ 1·ÇÄ–±h��‚Ë{§@þÞ­³ÒÇäßÇY)à,‚|/+qFä)'“¥ä@|#�å·Ó¿ßŽè|#�å·‹ï�Fçë«cWºóÂF€š)à‚¦™ã®×h’@v0¶¥`¾snšžn ï—>1Nÿf禠ðÜ0÷ÖÛ#�§µ ²›ÒØß”ft¤ã«é6ƒ›òhÝ´2nN ƒH§ˆ�ÔS@ žãªWhœÀ¾X·aU¬¼0EoJ�?/MÑOA~~¿âßô}±ˆž�À|‡Ó9ó•tÎ|%ý{SÚùKéBé ãŽ×Åþb½¨´€@¥‡Oã  Ð<�ý±fÓŠX}A ôœ>¬}pº<Ýö�§¯³4UßF _yºu û|Zÿ!- ‘}>]@}þPÜ~ãÚ8°§_5*—ôZ@ ×¢Ê#@€�ž|-}j¯Øza*ìá)àzhúƒu~ ôÓ÷ÙdO*P�žä;Ó9ù¯)!õÅt~~6ùO߉[þõœôHÄž¯ ÐC €b*Š'pk¬_¿<–?,=öíai¾ðÇÅ3ñÌ{�ª äÇgñ™´á?¥ÇBþóá8üÏbß¾ªõD{  @ ^õO½!@€@éÄ–‰ÑˆG¦ùR°K�Ò%éžëô�©�@½Òº_K^ŸN½üç´ðà?‹øÔšØ¾«Þ½Ö;(“€@™FC[ P3�"F[.NŸê_–¦G§ÿ²ËÓžû׬›ºC`Ñ)ö•ô³ñÉô³q}š-pýçbûg.�H¹è½€@ïM•H€�Æ Šm÷mE'ùÙå) ¹,ý‘)¦ó[�¿±g„Ž/B =‰ þ)%®O ^߉ö'VÄÍß\D9!@€÷�¸‰ @`!×FŒš».͸"âx7%Ø—ÎX�À×Ò'ù[bËåiU¾Ç§)ý)àÏ•þŒ¬ZÐÁv"@ ‡ùégïé–��¦,ÀGvÇöëïq¨‡(Šj* PÓ�Õ-,UàDÀߊֳȯHÓú™Ê4�©°Ž'Ð{�#i�ÁtË@vm':¿=¶ò�!ì½²  P € ¢. @ ïˆh?'6_šEë»Ò§‹ß�ÊLŸð ø{a« 8œêK3ò§uþî=±ã†FL ¸ ª#@€� H”pP4‰ƒ8ãlÅØSÒ'üEÐEªwÝ êV¸-%®M3þ®G?´)‹öSRMOKÓúÏNÿÚh�@º]àë©»L‹ þíqøï6Æ­)A`#@€�&H4a”õ‘�F ‰�nÅòg¦‹þg¤_ú�NŸô§uül(òã)ðñ” üëNþ«e±÷ó\ @ ¾õ[=#@ ¡7FŒÝ?¶=±�g¦`?ýÙýJ¡Ût)�…iýÏü¯:Ñú«¯ÄÍAÄÑ.‹°;”X@ Äƒ£iX¨Àí1¹yl:Øo}O:æ©)ð_½ÐcíG€�ÙòÛÓë“|ÿÑÈÿzuìÜ1û~^%@€�ªHTe¤´“w8›/L�è{Nš¾û¬ôËüÒô·î¶‹o  Ð#�¼“~×Ü�~×¼/=jð=ËbÇ¿ö¨`Å @€À$ˆ­*,Uàhl½$]„?/Mënú~ÞRËs<#�~})Ý.ðîô{è]cq˧S†c @`ðƒ7W#ºÈŽÆæËòh§€?/÷ów£g_ú.PU˜ò6(£€@GE›h´À;"ÚWÆ–ÇNMÒߺ2ý¢¾w£Atž�ʤÈÿÛiÍ€«ÛifÀÕ±ýc/ŒH¿Êl P €²Œ„v Ðt�ìXl{tºR~I+ò¤ûù'›¢ÿT] ßÙ‰ì�)ð–Ѹùã©7fT}HµŸ�Ê HT~u€�*  ùE´¾/õá%izÿÙé_j'PÜ&�:õÖˆÎ[, X»áÕ!*$ P¡ÁÒTê!p(¶ž5ñ}铱ôÇEõè•^ @`aiÀ¿¤™No=žf¬ˆ[¾±°£ìE€½�è…¢2 0�ÀþØ6¾<:évجø´ÿÑé_¿ç1ó6uÈ‹[®Kw¼õp´Þ±6nÞ]÷ë†-àtØ# ~j+pCÄèE±í{ÒÅí¥éýéß­mguŒK8–nxJŽþñ¿ÄÍï¿4âØÒŠs4Ì& 0›Š× °�t_ÿEy´~¨ñï,æ·H‡ ÐP�bñÀøó,:œÖ ø—†"è6ú" ÐV… Ð4�ÛbíÆ±:MïÏ_–‚þKšÖý%@€@òO§ß©r(n˺ؿ·?u(•Í�hÎXë)=¸*-ßÿ ±ùIYú´?Mñ^*~Y�«PÌI·¼+O³^;®¹*=N t/ н™#h¸ÀÁØt¯ÑýÑ´Šÿ§Àÿ¾ çÐ} T %¾™ž"ðGÇâØ¬Œ=ßhå*#@€@Å$*>€šO€À`®šþ´Ûwg‘¿"ý÷¬ômz’Ÿ�†'Ð9žGö¾ôßï½6nþðUf o(ÔL€@e$*3TJ€À0ŠÇ÷­ˆÎËÒ\ÓŸ¦úŸ;Œ6¨“æH·Ü”^ý¿‡¢õ''8·•w h¶€@³Ç_ï 8ƒÀ±˜|LšâŸ>ío½ -@åÞþ38y™åÈÓZ�¿H·üÞhì¼®\mÓ _@`øc ”D`WŒ¯Y#ߟG�ÿE%i–f @€À"R"à_Ò…î÷ÅÔ›'c×í‹(Â!¨�€@í†T‡èVàPl9»­ŸLÇýHúo}·ÇÛŸJ-°/µî§¢ó»+bû×KÝR�#@€@Ÿ$ú ¬xÊ+p,¶=¶�W§•ü¯LÓüÛåm©– @€ÀÒò©ô�«[Ñú­Ñ¸ùcK/O ¨ž€@õÆL‹ X‚À�cçÆä ²hÿt ú/YBQ%@€�Ê äŸÎcêß;ÿ₈£•톆 @ K €.ÁìN€@5fVóÏ_‘ö{eúÅ·µš½Ðjè¥@Zóå–´`à¥G zz@/e•E€@Y$Ê:2ÚE€@OŽÄ¦óó{M+²—¦—÷¤P… @€@Ýw"ÿ³,ŽþƲØóźuN pB@à„„ ¨•ÀÌcüZ?—îïfšêŸm#@€ó ä�´NÀ_µ¢ó:�œÏÊûTQÀEqGM› ˜Uઈ֑˜|ÎÑØv]#K�ò{¶àV*/ @€À¬Y«øÛQü )þ–¤¿)W^•þ¶Ìº«  PA3*8hšL€Àé7DŒ>$¶¼$�ìçÓ'þ>ý]ß @€�Å ¤_È"íçbû[/�8¶ø’I€�á H  ´€�E |+bÅæØö#yt~6}bsÖ"‹q˜W ý­ùFú[óúqóÞ'âмØ�%�(á hs 쌉Õbô•ébì5ifæäÜ{{—ôR ³3%~ãÖ8ö†ÉØu{/KVú- Ðoaå Ð3�™À¿õ“y´RàŸ�÷¬` @€�®òÝYt~óÖèüŽD@×x @`HC‚W- ØãkÖGû§òhÿL:jÓÂ�´'è»Àž,¦~s_LýÎDì>Ð÷ÚT@€�%H,Ï¡ôW`Ol\»6–¥À?+ÿ�ý­Mé @`I{Ób�¿¹?ŽüΦػI%9˜}�è¬b X¼ÀÞØ°nM,{UšêÿR)ÿÅS:’/��ÿs ŽüöƸõ¶ÁW¯FœY@àÌ6Þ!@`À3÷ø·:þ?�ªÞ0àêUG€z)pk‘¸5Ý`�€^²*‹�¥H,EϱôDàËËΊÍ?žVôÿ/÷ë ©B @ 4ùîˆÎ¯~#v¼ñGJÓ, !@ ‘�v�&P�k#F› }âÿKYd÷-G«´‚ô^ �ü›iFÀÿ¸.vüéÇ{_ƒ  0¿€ÀüFö @ ÷Ù‘Øò¼ôiÿ/§ÀÿüÞ¯D PN�”øbDþ‹Ëbû»R ór¶R«¨«€@]GV¿”Tàpl{J+M…LÓý/-i5‹ @ ÿt'²ÿ¼I„ý�è·°ò 4\àpLœ›ÅÈëÒ/›ç¤)ÿ~ç4ü|Ð}˜] ÝpuÇnyìºiö=¼J€�¥ ¸_º¡˜E`l‹Î/µ"{y üÇfÙÅK @€ÀiùÑt[À›ŽF\µ6nNO° @ ·½õT�Æ |+bÅ–Øüê<Ú?Ÿ0Ö7è^`_S¯Û;þÏ}"u¸# 0»€Àì.^%@ {�´²ÿæ§Åý^ë‘~Ýã9‚Ü] xt`Z%à–ÅŽ·¥÷<1àî@¾'@ k €®É@€ÀÝŠþ"Úÿ;½žþµ @€=H Ný´…{¬ª8 �hà ë2�^ ŒM÷jÇØ¯§_$é“ üõÊU9 @àžyž¦¼m*ŽþÇ•±ç;÷|ß+˜_@`~#{ p7�#ÆÎ�Í?“‚þÿ’¦ü¯¾ÛÛ¾%@€ú&й=Ý ð«7ÅŽß¼ "­h#@€ÀÂ$neO’ÀáØú´táñ;Y´ÎB€ G �Nz\`öSËã–§j%@ ŠU5m&0�Ã1qníßHŸø?{Õ«’˜U óÞ<¦^³[\X$ð_h€€ d]$P�-�Ì#û£tŸÿD @€3ù�Yä?<Û?E„�ú ˜Pÿ1ÖÆ |+bÅáØòºü\ðßð“A÷  @€À=² Šk„âZ¡¸f¸ÇÛ^ @ VfÔj8u†ÀéÇbò1SÑþ#�ö;ÝÅw @€À=ŠG¶cê‡Gcçu÷|×+ÔAÀ €:Œ¢>¸›ÀöˆU‡cëou¢ýÁÿÝp|K€Ì*P\3×Å5Dq-1ëN^$@ ÒfTzø4žÀ=Ä–'ŽFö‡é�øýîù®W @€ó ¤Ù_MÿýèŠØ~íü{Ûƒ�ª˜P•‘ÒNóìŠñ5GcëÇ"»Fð?–·  @€�9Šk‰VdW\[ì‰�kçÜÙ›TFÀ €Ê •†8³À̧þñ'Y´Î:ó^Þ!@€t/�GçyÄ™ н�#”MÀ €²�ˆöèB X­7eæÿwúÔÿïÿ]ÀÙ•X°@q�‘f|¸¸æð¤€³Ù‘@)Ì(å°h�ùÒáK;oNSôΟo{ @€–.�Öøb+:/‹×/½4% 0h3-®>KH+ñŒ‰-¿”þBð¿DL‡ @€] ×yd;[®*®Iº:ØÎ ]À €¡�X¸Àá˜87‹Ñ7§#._øQö$@€ô^ �볘zéòØuSïKW"ý0 ªÊ$Ð�C±õDzh&-øïƒ¯"  @€�îZѺ,‹‘.®Qº;ÒÞ KÀ €aÉ«—ÀöÇšMËbõFdß»ÀCìF€°@þ—G"ûѵqóîW¬:º�èË®-0óx¿ìÏÒê½]·ú @€Ý¤õ‰nŽÈpyìøp7ÇÙ—�Á ¸`pÖj"°`�bQ�C±ù—Ç">,ø_0›  @€�! ¤·¥ÿþæplyÝ £ClŠª 8ƒ€g€ñ2�a Šm÷Í"Kúá|̰ڠ^ @€ÀR:‘ß�Åñ·“¼=bUïÊU‹p ÀbåG GGbó…i…ÿ·¥ÿ.èQ‘Š!@€”J -øÅ,:/Z;?Wª†i �† ˜а×Ýr ŽÍ/�hý£à¿\ã¢5 @€@oÒâ€çG´¯Ÿ¹öémÙJ#@`á ·²'�ž Sþ�Ä–?É¢õS¡Ë{V°‚ @€åX^\û¤k ?-®…ÊÛL-#P_·Ôwlõ¬¤‡cü¼´(Nº×?KSÿm @€�& äÿšÇñç§§|©‰½×gÃ0`Xòêm¤ÀÁØò‚,ÚŸü7røuš8)�]X\×F'_ò}0 ïÄ* qCÄè…±õדūy @€Ü%p<â·¿·üì¥ÇîzÕWôC@ ªÊ$pŠÀÁØvŸvL½#�Öå§¼ìK @€�;Ò>Ù‰ö‹VÄÍß„B€@ÿÜÐ?[%ˆÃ±í)éÚ§ÿN @€À™f®•:7×NgÞË;,U@`©‚Ž'0»@v$&)¢ó�ôØ›‰Ùwñ* @€À �™k¦Îf®¡ÂLå0þ%ÐC?X=ÄT�B`Ol\»*ÆÞœú{6 @€�Åäï½#Ž~ÿ¦Ø»1G;†�Ù$fwñ*�E ‰­Ê#¿:ÿç-ª @€Ü)�)Í ¸rYÜò$ôFÀ-½qT �¸#&Ÿs<-`#øw2 @€z!��—Gçúâ«¥)ƒ� g�¥ dwÄ–«ÚÑzwúoíÒ‹S @€ÀŒ@kMq�u(¶ü÷ô½ÙËN KðC´D@‡7[`gÄêµ±ùÿ¥\Ú•Í–Ð{ @€@¿:Wï�?0q{¿kR>�º HÔudõ«ï‡cóýÒ}iïÉ#»¨ï•©€ @ MÈÿ%­·ôœå±ã«8è^À-Ý›9‚@ˆÍOJÏ«ý”àßÉ@€œ@qíU\ƒ×bƒ«UMê# PŸ±Ô“ ŠÍ?:ñÁ4}fÓ€ªT  @€À�Å5Xq-V\“A!@ ; €î¼ìÝ`�«Ò�þcËë²h½)}™þîØ @€†#Ð-®ÉŠk³«,l>œ!Pk%¬PÉaÓèA XìoÐâê#@€,T ó—iqÀ—Zp¡^ök²€@“G_ß$p06Þ»£ïK÷›=lA؉ @` Ytþy*Ž=keìýö@+V�Š HTlÀ4w°wÄø%­yoZíÛ`kV @€@7éé7wâø³WÅîOwsœ} 4IÀMm}íJà`L^ÙŽ‘üwÅfg @€ÀPŠk¶âÚí`l}îP R�¨À iâàŽÄæÿÔŠÖ;#²Uƒ¯]� @€‹ÈVµ"gq-·¸ãE Þõ_½ëRàíC±õMé~ÿ_KÁ¿Ÿ�.ýìN€¾@–×rÅ5ݵ#Ão�(�€5Ê3Z2d�í«ÖÇ–·§ÀÿCnŠê  @€z"�ÿõ¾Øþ¢-wô¤8…¨¸€@ÅPó{#p 6OŽE+ý?²7%*… @  Yäÿx4òg®‰éÉÎ6Í�höøë}8çæÑþ@Z8æ\  @€õèDþ•VL=my캩~½Ó# p�ó­ìYC�ƒ±å‘)øÿ¸à¿†ƒ«K @€�;Z‘Ý¿¸æ;›/ƒB ÉMý†÷ýŽØüÌôpM þ'N¡û @€�Ú ×|)ðwéðYµï¬8ƒ€À`¼\o�C±ùÇÚ‘½Çcþê=ÎzG€8] [•®¯.®OÝwš! ÐŒqÖËSÅ–ÿ‘Eë÷Sðß>åe_ @€4B kׂÅ5a#º«“N�8×õ¸*¢•~Ñ¿!MÿúÅz÷Tï @€æ(® ‹këÒ5â|ûzŸ@]< .#©s Ü1zAlþÓ”í}Éœ;z“ @ QytÞúÕØñ² "Ž6ªã:ÛH €F{³:}sÄÊ�±åiÊÿ3šÕs½%@€X˜@þ×{cû ·E\Øþö"PM €jŽ›V/P`olX·"–½7Mñzü± @€@òˆ�ŠÃÏÚ·ÞÖÀîërC$2ÐMìæ�Ø<9­¦_æ7±ÿúL€ Ð�@ Ž>s,¦ž¾:vîèîH{¨†€@5ÆI+»8[ÏÊ"ÿ›Ndçuy¨Ý  @€,ЊüKydO]·|£Á º^S+^Öt`›Ü­ý±éüNäü7ù,Ðw @€ÀâŠkÈâZ²¸¦\\ Ž"P^3Ê;6Z¶�;büá#L÷üO,âp‡ @€˜èDìÎâØSWÅîBB .uIýHK¶n¾,O÷ü§“z= @€KHkIíË¢óô•±ã“K-ËñÊ P†QІ% ì�‰Ç�Dë¯Ó£þÖ,¹0 @€8)�8�g¬�]=ù’/TTÀ8;KàpL>y$Úüßeâ+ @€�^ dkŠkÍâš³W%*‡À°Ì–¼z{"pGlyz:‰ß� [Þ“B€ @`v�Ã門筊íïŸým¯(¿€å#-<ƒÀ±ùY)øOz[ð#/ @€ôL`yºö¼º¸íY‰ "0` €ƒ«®7wÄäsÒJÿïL¥�õ¦D¥ @€˜W`¬¸-®EçÝÓJ( PÂAѤ¹Æäó²h½=í%øŸ›Ê» @€½HI€ÖÛ‹kÒÞ­Dý�误Ò{,p0¶¼ -ö÷ÖT¬à¿Ç¶Š#@€X°@ºÍÞ:smºàcìH`èúhÀBf²¬EðŸ�.ôû @€èŸ@~,"ÉÊØù®þÕ¡d½�è�¥’ú(�‚ÿ+#ZoKUøä¿�Ί&@€èZàh�­Š�ÅâÔ6¥�(õðh\!0³Ú¿ÿœ  @€¥HI€ü«bÇ{KÛB #�$œ¥¸#¶|O:I¯N�ôÉ©GJã @€�HI€¸rUlã%”V@ ´C£a‡còÉ�hYÔå4 @€T@àp+:Ï^;ÿ¶mÕÄ H4pЫÐå1ñøv´?�Úº² íÕF @€w œŠ©§¯‰]!B le퉃±ùòÄð¡t‡Ê @€ª'�Hm~ÊÊØñÉêµ]‹ë, PçÑ­`ßîˆñ‡G´¯É"[WÁæk2 @€�i�´(àmSßµ*v �²H”e$´#öǦóÛ1ú‘tRNà @€ Pu�´(ன8öøµ±ç‹Uï‹ö×C@ ãXù^Œ�÷Îcì鄼wå;£ @€îHI€ogqôÑ+cï· ¶@kØ P?�±z"‹ÑkÿÎ @€�º ׸éZ÷šâš·n}ÓŸê HToÌjÕâ½±a]+V}(�ìÜZuLg @€Ü)P\ëŽÆª¿-®}¡¦€À0õ^÷ÍéËcÙûÒ‚k8…î @€Ô\ ÙC‹kßâ¸æ]Õ½ H”xpêÜ´#ÆÖÅæw¤>>®ÎýÔ7 @€§<®¸.®…OyÍ—& 00j�HQû¬˜ü£ôÉÿ3N¼æ_ @€M(®�ωÍ\\7¡¿úX.O(×x4¢5‡bËÒj¨?ÞˆÎê$ @€�YR öƱý•³¼å%}0 o´ žMàPlþ5Áÿl2^#@€h’@qM\\7©Ïú:|3†?�iÁ1™>õo½¡1ÖQ @€ó t^¹*v¾qÞÝì@ =@TÄüûcó³ÓMNïŽÈÜë4?—= @€#�OME›.ËcôšÔã•Í鵞 @€X°ÀÁ,Ž=ieì¹~ÁGØ‘À"$�æ�… Üç¶£ýñt¢M,ü({ @€h–@Z`×TL=z]캩Y=×ÛA Xp�Ú «ë@¬ž�Öÿ xÝ%@€èZ ¸f.®�‹kè®v� H,ÊnÝ Üœ¦û·bÕûòÈÎíîH{ @€h¦@qí\\C×ÒÍÐë~ Hô[¸�å¿#¢½.6¿5-øwY»¯Ë @€– �]V\K×ÔK(Ä¡f°À¬,^\ŠÀ±¥xÔ_zäŸ� @€�E ¼qUlå"�u�Y̘•Å‹‹¸=6ÿB:Vð¿X@Ç @€˜øñ;¯­y虀=£TÐ�q+ÚoISÿ�WN @€KÈóôt€·:v¤Ûkm–. P[º¡’ÀÁØtY£×¤/-X⌠@€ Ð;�ƒY{ÒÊØs}ïŠTRS$š:ò=ì÷m1qn;ÚO'“G–ôÐUQ @€ �4 `×TL=z]캉�¥X`)zŽ�½±a];ZW þ�  @€ú#P\k�Dë=ŵwjPjS$š2Ò}ègñh’±Xö¶,² ûP¼"  @€8)�]P\{{<àI_,BÀ-‹@sÈŒ@Z•ô·Rðÿ* @€ F �ü·Ó¢€¯Lmj©›€@ÝFt@ý¹#&_Ñz〪S  @€':?¾*vþÞÉo}A`� „²Û]bó“Ò½#H�û»ëU_ @€ 0�üh'âékbGñ.� H,˜ÊŽ…À¾˜¼ÿHdŸH'Žÿ� @€†$�»§"¿|}ìüÊ�š Ú X°‚ƒ6¬&ïŒX=™ÿ‡5ê%@€ p§@ 䯋kóâ �… H,TÊ~ÙªØüÿÃE( @€(…ÀEéýÍ©%fv—b8Êß €ò�Q)Zx &)5äÊR4F# @€8!ðœt­~Õ‰oüK`.™¢¹t¼7-°?&¯lG¼+%�/Î  @€¥Èó´&Àó×ÄÎw—®iT*]©†£|�9[1õÉVdkË×:-"@€ @ èD¾?¢}ùš¸å DœIÀ-g’ñzì� 벘ºZðïd @€ Pn�âš½¸v/®áËÝR­¦€À0õË]w¶,Æþ4‹ì¼r7Së @€(Šk÷e1Z,Üm¦·SbV €YY¼xGLþbRø^ @€TI {vº–ÿoUj±¶N@fhpÖ•©épL>e*âý)q˜Öþ³ @€ P-�|*]È?cyìü›jµ[kû- Ðoን¿'6Þg,F?�NŒ‰Š5]s  @€¸S �Øu4Ž]²)ö~ �n8!á߸1bl,FÞ&øw2 @€¨¶@qM_\Û×øÕî‰Ö÷R@ —š/묘x]Z8äÑï†æ @€ �Škûâ�n8!ÑðÄÄó³hýEÃtŸ @€@íòÈ^¸&¶»Ö¯ÝÈvß! €îÍjwÄþO�úk}ªxvhí:§C @€.Љ|Dç‘kc÷—NÑøî» á§ÀÍ+‹Oþÿ ?tŸ @ ¶ŵ~íw×þµí¤Ž-H@`ALõÝimL¾1ÝtQ}{¨g @€¤©ß¦kÿß#Ñl €�ÿ±ùåii�h0�® @€h�@öý31@ƒº¬«§ Xà4Žæ|s 6\˜ÅاR�W4§×zJ€ @ ñ‡"Ž^¾:ný\ã%`@}æÞŸ±·¥® þ8þºL€ Ðh�yŒ½}{ĪF+4´ó ø51ùiêÇ ìº. @€h¼@ŠÎ_“¿Ûxˆ¸ aƒ~ &ž_¬úß°në. @€÷È_º:vþù=^öBm$j;´÷ìØ­±õ¬‘è|& ú†{¾ë @€š$�G~{'ò‡¯‹]_nR¿›ÜW·4dôßщ©·þ2àºI€ @`�ô8ðÕíh½åƈ±yvõvM$j2�óuãé1ñßÓø£çÛÏû @€4JàÒ³bò—ÕãwÖ- ü[cüŠÑhýmDÖn@wu‘ @€�®òüxdOY;>ÜÕav®œ€@冬»ï�5ãíXñÙ<²mÝio @€š#�ß’ÇÁ‡®‰Ûw5§ÏÍë©[j>æY¬øÁÍY÷ @€,Y Û±òMK.F¥�(õð,­qwÄħûþ¿wi¥8š @€�&±CC4¡¯Mí£[j:òûbó9­È?ÛŠlMM»¨[ @€ôX =ð@'²‡¦õ¾Öã¢W3J0½nBñÈ¿üÿ©à¿×²Ê#@€ Po�"†(b‰"¦¨wO›Ù; €ŽûÓbò5é÷q5ìš. @€ Ðg�"–(bŠ>W£ø!¸`èý¬òöØð�ˆ±LuŒõ³e @€ Pk�£G±:ný\­{ٰΙP£ÿrIJ\—5©fTp´·G¬jEûM‚ÿ ž& @€¨´@–ž;Þþý�«+Ý�†6^ ‚¿*&~5‹ìœ 6]“  @€¨¸@‹¬ˆ‰_©x7Ù|·TlØ÷ÄÆG�ÅÈGÓ§ÿiñ @€†!�wŽÆñÇnнŸFíê\œ€‹sÊQ_ŽX6# ø ¿J  @€8)�µF£ý‡EŒrò%_”^@ ôCtW'cò¿¤é6¾ë_ @€ @`8Y´4ÿu8µ«u1nXŒÚŽ9[1õ™ôé¿ ÛüUI€ @€Àlù‘ˆöÅkâ–/Ìö®×Ê%`@¹ÆãL­I‰šãoüŸ‰Çë @€ G ø€²ˆU‡ËÀ®j•èŠk8;ï�‰—E´ž0œÚÕJ€ @€�¹ZOH1Ë͵‡÷Ê! KSŽq8c+n‰Õ«bÕÒ@m:ãNÞ @€ @€Àòˆ=wÄÚ·ïb3T=�€ó ûí5±òõ‚ÿa�‚ú  @€˜K ˆYRìòsíã½á ˜0ü18c öŦ'µ£ýát;�q:£’7 @€(‡@žOÅÔw¯�=×”£=Zqw3î.R’ï‹çi¶¢],ü'ø/ɘh @€s dYÃ|-bù\{yoxóŸ³æÉ˜üÏYdœs'o @€ @ DE ³1&ÿS‰š¤)§øtùŒ²|¹?ÆÏË¢õY�ý+ˈh @€ È�ä1õ°µ±ç‹ ?Æžƒ0`Ê]Ö‘ÍLýOÏÓ´ @€ @ jÙ²,FÞPµV7¡½%å1ñ¢Ô¤+JÖ,Í!@€ @€@7Wˆñws€}û/à€þ/¸†�«WÄdš&“ÝkÁÙ‘ @€¥È¿s(vž?q{)›×ÀF™P¢A_“¿(ø/Ñ€h  @€KÈîµ<ÆÿÛ ph�Ìè1èb‹Û›Î�h}.ý7ºØ2G€ @€�r tŽEtbAÀrŒŠå‡È£õ[‚ÿ’ †f @€ Ð#�ÖèL¬Ó£â³$ €%ñõæà[cò9é±OéMiJ!@€ @€@yŠX§ˆyÊÓ¢æ¶D`Ècÿµˆåi~sÈÍP= @€ú&PÄk h[‘ÿ¯T•à@Þª!@€ @ Ë*ÑØª7Ò €ŒàžØø¨Ñh_‘ñ€·* @€¨–À±8þèM±÷ÕjuõZkÀÆ,ÿ¿*ø´* @€¨¤@Š™þg%^±FKôyÀöÅÆ'§àÿŠ>W£x @€TX {Âm1ùÔ w M—èï0¥9ÿí_ëoJ'@€ @€@ò_I½pÛt‡R �¸ûbâyYd—ö± E @€ @ EìTÄPµèLI;!Ч�¹6b$áþrŸŠW, @€j'PÄPE,U»Ž•¤C}ˆ‹câÓì•óûT¼b  @€ PC�ìü™Xª†]+A—Ü_чAørIJɘüRÂ=«Å+’ @€µÈ#ÿÖÞØõÀs"×¶“C꘩}€�‰Wä)øOÿÙ @€ @ +�ì>ëcü•»³«Ãì<¯€óu·Ã®ˆ5£1yS:j²»#íM€ @€w ì>;ï7q€Hï¬Ð;Ëé’ÆbâÕé Á�]G€ @€@£ÆÇbü?4ªÇè¬=DÞ±v$&¾žG¶¡‡Å*Š @€�È"ß·;ŽŸ}ÿ¸õ¶Æu¾O6 ‡°)ø•࿇ Š"@€ @ ±)¶Z?íW5 7 G¨Å§ÿí˜üZ*nc�ŠT  @€-�fÜzû‚ˆ£C¨¾2Uš0ÏPm‹É þçAò6 @€†(PÄlEì6Ä&T¢j €y‡)ÿóîb @€²€Øm¾�˜CèÖXÿ„ôØ¿‹çØÅ[ @€ P �ìâ]1þÄR4¥¤��˜c`:1òÊ9Þö @€”H`$Z¯.QsJ׋žaHöƆûf1ò•4`ä »x™ @€J%�Ïãøý7Æ­ß,U³JÒ3Î8íŸüŸÇ @€(¡@ñnËÙf0`•�«Gcü[­õ³¼í% @€(­@gß±Ø}ŸÉˆÛKÛÄ!5Ì €YàGbòÿ³Àx‰ @€¥h­Ÿ‰éJßÐ�7P`vòŸ˜ýe¯ @€ @€@Ù²È_Qö6£}n¸›zñ؈´räµw{Ù·ÜC`YŒ<ãQ1úä+¢}ù%Ñ:ûìhmÚ1R±u3÷ï�Ξ[£ó�oÅÔç¿�/ý[L}úsqüºS��Þ£×^ @€�*ŒÅÈc.ˆö%‰ÖyŒöƒÏ�ÖY÷™ù;µvm:pW�Ÿù;õõ¯ÇÔ'?Ç>ü÷qü¯>žÞ?r×>¾"@`V�<Ž=.-ø±Yßlè‹wø=1þöV´^x·—}K€À�Ùúõ±ü?¾<–ýä�ETí"ª›Qœ.P|ò?öÒŸþ¢ï¦:{öÆÁÿHÿp±“�ú-0òÝ�Ž•oýƒh�oêwU•,ÿÈïþ~ú©_¬dÛ5š@?:qü©›bï‡úYGUÊv À]#õïïúÒWc?üÁÿ§BkÓÆXý·WÇŠ_ûù´—_§sPy‹KhMÿ®]ý¡w þç�\ö“/�b½§ ´bäÇO¥¹ß™�Æ~Ol¼O+Ú_K"ÚÍ=ôœÀéÙºõ±î›ÿØÌ{þO§XÐwÇÞ÷�8øìW¤if‡´¿� @`aY,�•ïý½}ÖÓv@Ó÷J ÞvßGD~›§4ýTÐÿSòã�˜:'Íøö©¯6ñkYM�zëGÿM<ýõy.�å?Ÿ&ÅÔù1su~嶺>úÖt_ÕÊEí˜M ø�ZünüϦs†×Òßîå¿ðŠ3¼éeMÈÒzï­mjïOíwãg\•΄ŸŠñ¯§ûÿïs*Œ¯ 4Y ‹e±~zÜÝš5MfXTß�òSqû£^”f\Ôñ"@€��"ø_ý‰·ÇÈå�DÒ­À�±oíéoÑ‘n�´?�Ú äÑùöïÄî³®jøb€�ŸðªØðTÁmÎul‘#Ï|´à±véBµ¸`ͲU‹,Áa ø_â9�øÓË—XŒÃ ÔI Å|÷~UL<­N}ZL_ŸÈbä‡çu}ê“êܽ¾÷­ø´jõÇß& Ðwi PGÁoFÕßòÞ8*¥^iú{ãc¿F'n‰Õé¹�Ï®×i­7–.оø!K/¤á%H4üÐ}%PÌž2íQt÷8¨ýð‡Þã5/hº@ŠýžUÄ€Mvht`,–¿4-0Öä@ß Ì&ÐzÀ¹³½ìµ.$º³;�˜þÓì)÷ü÷æ4h�{ÿÞ¤µh�¥ðjÕ¥.;Óè@º$­þo#@àî­ ëîþ’ï)0�°&À"õF€@Sÿ½éÖÆõ½/T‰j �bÀªA7Ý…Æ&vÅø%Ií‚EË9�@�FGëÜ»�÷mä²GXpàê*$@ *‚ÿ>�ÔHzê™��Ù.Ø›ûx‘Æ&Ú‘5:ó3ÛO‚×蟀$@ÿl•L€@uÜó_ݱÓrUhE«±·42�žn^Ü÷ÿâ*Ÿ´ÚN€@õ$ª7fZL€@ÿNÿi–”�ƒÈ_òåˆeƒ­³µ52°%6>+"ÛTŽ!Ð š$p2 0ººIÝÖWœ& ø?�Ã7 \ µqcL¤˜°y[#oÊ"ûÁˆ¼y£­Ç”B`: ðo‹Ûó¢ÈóÛKÑ&� @€À ²lu¬¾îíQü.´õ[Àõn¿…•_]�,òÆ;«ÛƒÅµ¼q3nŽ5ãéÓÿ§-ŽËQè�ÀȣҀ鸸¶ @ )'ƒÿô;ÐF€�! !ï P"�‹îŒKÔ¤þ5¥1 Ÿþ÷ï$R2½˜I¼-Í�è­¬Ò„@ñ»«˜Í4=íªƒKhÎ,€¦$Ò}ÿYºÿßF€�jHTcœ´’�Óf‚ÿ· þOgñ¥˜Ž±V\#;cCZù?+ž`#@€@e$*3TJ€@ü; ¨®@vÖLÌXÝ,´å�HŒDÛâ =#ìG€@©f’Å€n(ÕÀh § þOãð hJÌXûiïˆh?)&¾“:º¹‚ç¡&ŠÀÆÎŽ¡Ô«Ò3 ÿÔ§ãÀ£Ó#;μ“w 0�¬µ&Ö|¼¸çÿ’!Ԯʹö¶\þÎåã=§ ¤•î¼&vm{aÄÔ©¯×íëÚϸ"Ö?Vð_·ÓV4O ¸°..°‹ mÊ" ø/ËHhKH1ãä1þ¸¥–SöãkŸÈ¢ý¼²‚ö @`!’ Q²ƒüJZ= J ‹¼ö±cÝÅ-ÏÔ £ô[`: ð‰¿0 ßÐÊ'@`NÁÿœ<Þ$@ ºW¦¦1dm·Z'vÄÆË³hÝ«¶£§c4R`äÇI€F޽N(ƒÀtðŸ~¹ç¿ £¡ ôR ˆ‹²—e–­¬Z'F¢Uû)e;¡´‡�ÁH ÆY-œ.p2øO‰Hê(P÷²Ö €,2ÓÿëøS©OL H8¤€à�Úê"@`Xu�!k›ØãO�r8gX'Žz  0�é$À'­ 0kuh²€à¿É£¯ïš%PÄ�)–¬ísMk›hGîÓÿfý¬ê-�Æ Œ\šÖ�hìøë8�~ LÿéwL‘p´ @  uŽ%k›èD<¿ '§> @ �p Ð�“ÁJ4Ú Ð�<²ÚÆ’µLì‰�¤ÏkÊ ªŸ(¦“׿Ó#�ôD@ðßF… PI�ì�{cÃ…•lú<�®e õÙôÿyÞÛÔS`ä’‡ÅI€z®^ €à€Øª"@ ”iÀ•¥lØUË@­g,ÑÅᨬ€$@e‡Nà ”B`:øO‰ÄbV‘�M¨kLY»ÀöX=™E<¢©'ª~ @ �p °�“ÁšMd#@€@“Š˜²ˆ-ëfP»ÀH,{z¤;`ë6PúC€�nN&ÆÖv{¨ý h €à¿�ƒ®ËÌ!�µZ±¢v3Ëë(ï£è-4J`: pÝ_D& Шq×YÝ ¿#ŠõCŠß6˜hEçÙu³¨UàËË"ZO®Û é–" °=Ǩ¿Àt🅂ÿú�µ Э@ë»gbÌn�+ïþµJlŒ�OH÷j¬./·– @`8’ÃqW+�² þË>BÚG€À0ŠØ²ˆ1‡Ù†^×]«@zTCíîÑèõ€+��æ L'>ñN·4÷Ðs§ þOãð f¨[ŒY«@šþ/0ëiëEÌŒ\üÐXS$2 :'4Y øPü.0í¿Ég�¾ °0�zŘiVC=¶Ý±éAYdŸ¯Goô‚Àp6vv·jï»ÀñÏ|6<ây‘wö÷½. P.�¬•‚ÿ|W A[½ö¶j÷³z˜Þ•V ‹©‹6Æ­ÿZÚvѰ‘.ö-û®ßÛ){ µ�%˜ž �€ý) Б(ɨh�þ ´ÿýG.Q ®�K4šRi�,ZÏL¨E 6·t"ûžJŸUO€� I€µ) Ð[7àšUG€À0Šà¿ø™÷Éÿ0ôÕI€@•R¬Y›[Ík‘øbÄš,òË«|Ri;†!0�H÷K C_�'PüŒ þç­&ê%�bÍËÒãk±€R-ëcü‰Ùh½N3½!@€À`$ã¬Ã˜þ‹ÿÜó?¬!P/•ÈF×Äú'V¾©µHŒDþ”: †> @`X’Ã’W/�þ þûë«tš#0í'ס·µH䵌:œPú@€@u¦“Ÿ´&@uGPË œ. ø?ÝÃwXŠ@]bÎÊ'nŽ ÷MÓÿÏ[Ê`:–fFö�X+ àt Py�éà?ý,›ö_ù¡ÔJ#��7{–¦A‹jHå#‘ùôQCï Ì. 0»‹W TEàdðŸz6è�@bÏ‘Þq «¤–À°èÕ[_�Ž'×wpÖ³‘‡\kÓ¢aûõüè½maÙ‹�¡ œœöŸ~†Ãïò¡�‡ P7�éØó«Ü«JϸjfÃïªòh;Ê*0òЋ¦“­ëÊÚDí"@à�âgµHÜ?»6è‡@þÝWU|!ýJ'^ãgãýZe @€@Lk?öÎ�p6(·ÀtðŸ~Vÿå'­#@ ÚYd›R úð*÷¢Ò €±ÈMÿ¯òÙ§íTB`z&€$@%ÆJ#›) øoæ¸ë5èz ZéÀ”Çÿ ç¬W+��hÜ�ëpEÿ(Í$@ 6i¥¬J]ÙÀ×"–§)�®Í™¤#(¹Àtàºw¹ äã¤yÍü7g¬õ”�2 d�*bÑ2µ¨›¶T6°*Ö?2Ýÿ_Yønɾ(‹ÀôÓ$Ê2ÚÑ`�éà?ý,ºç¿Á'�® 0�"]ë/Jå=¨´² €V´߃þ+‚º�èÌîz,p2ø/õg#@€�� dÑ~ÜÀ+íQ…•M¤ûÿŸÐ#Å @€@—’]‚Ù�@�ÿ=‚T – PåX´’ €"FÓýÿ�Z˜9”–(p2 °jÝKr8 h¥ŸµµÅ´Ÿü/„Ë>è›@;­EWĤ}« �W2pïØxIº÷bU]M€ ˜N|4- ( °-»X¼ÀtðŸ~Öÿ‹7t$z%�G¬,bÒ^•7Èr*™hEfúÿ Ïu @`I€9p¼E ‚ÿ *‚=¨jLZÉ@šrQÙEz|Þ)Ž¥�(Å0hD ÿ5T]"@ )&­ä¢ôi&}µ¶wD´¯ˆM{òÈÜtZ­¡ÓÚ Lß^¡Öjj™ŽÿË�±ï±Ï�üŽÛÊÔ,m!PI�,ÝZ³Þ´ÿJŽ]Y½kdKYš¢j'�E~Ûµ±gÓ #Òš€ÕÙ*7à±1þPÁuN0-%@ Y#]ë?öî(‹˜þÓÏ’{þoèHôS ˆI‹Ø´Ÿuô£ìÊ%ÒR‹•œjÑ�ÁS&Ê( PÆQѦ* œ þSBÍF€å�NåÖ¦«\`*r €òþ h¦$œ' ø_œ›£ 0 �© ®MW¹@Ù£†1¸ê$@€�îN&Ö¬ïî@{h¨@–~VŠ[hŠŸ”_ Š±i¥·Äú³Óª…V3)ÿÏ‚ @`Z`: ð‘wEØØ8³ÀtðŸ~Vÿg6òÊ&PĦEŒZ¶vÍÕžJ%²h]6Wg¼G€å�(ߘhQ¹ÿå­!@€@7iÀåÝì?ì}«–xä°ÁÔO€Ý Htoæˆfþ›1ÎzI€@}²h?¢J½«T "¯Tv¥J'‚¶ @ ßÓI€�^í�ý†V~e¦üK?¦ýWfÈ4”³T+F­LàÆˆ±¤ýðYĽD€¹ðA±þº÷HTd¼4³ÓÁúY(~&l Pi�‡ß«V¢•IlŒMK÷W,¯„ªF @€À$ÎHã�†þ2кI€@#еˆU«ÒÙÊ$²È=þ¯*g•v @`I€y€¼][Ám‡VÇh°@•bÕ %2 6ø‡J× ¨ŸÀÉ$€GÖopõhV�éÿLûŸÕÆ‹¨²@šP™…+“ˆ�¨ò…¶ @`6�é$@±0 $Àl<^«‘Àtð_,øçžÿ�ª® @à„@V™ÇÕW"pK¬žÈ"Î=Áë_¨�€$@}ÆROfüÏîâUÔE ˆU‹˜µ ý©D`$FMÿ¯ÂÙ¤�X¤€$À"áVzÁé‡H  Ð#�ÑJÜ0Ò£Þöµ˜©h]\‰LE_N`€y>ÀÊTE`F`ä‚óc}š"½ïqWF~`•8ü§s;ü^­üxêæÈ¢U<²þýsíS†÷*W§F^\,m @€�þ œH�“�@•N þ«Üm'@€� ¤˜µ�¬D �¬˜ :3ìD€s HÌÉãÍ þ+0HšH€� ¤˜µZ—>ðµˆõ鹊çôx|G€%�(ñàhÚœ‚ÿ9y¼I€�Ú 1k»–½ƒ¥O,�ñôé–V´ @€@“N$Úk74©ÛúZa�â\-Ö±(Î]4M Ëfb×r÷»ô‹æÑ¹8�Òç)Ê=ÊZG€�Š �ÔÚ�¼;ö=þ¹ÑÙkE{¡ÙMh¥à¿8WÿMíêôÑ’¾Õ+-­‡@»¦žü}™{SúȺíþÿ2Ÿ?ÚF€�¾ LÏH�U`Ù”Q 87× þË84ÚD€�� T!v-} e.‹Ç)Ø @ Á’ ü’w]ð_òÒ< P  ±k©�X‘nþw#ÝOZU @ ¬ÓI€�]m&@Y¨�íšþÓ9iÚ_—  0‹@»1ì,o•æ¥R'ΉM¦K¿NAiFSC Ps�‘�ë%j>ÊÕèÞÉà?�“6 0#��Ìİåõ(u y%ž¥XÞáÕ2ÔO@ ~cZµ þ«6bÚK€�Á ”=†-u }úÿÐÁ •š @ *ÓI€ëÞãv€ª X�Ú9ü§s¯8m @àžYzŒ}y·R'Ò=”—NË @`˜#ç?0ÖK sW÷Éà?�{6 0›@Ša<Ûëey­Ô €Nä•J; @ |’哺¶Hð_בÕ/ôV ì1li»båÖ,Z{;J#@€�º HÔmDË×ÁùÆD‹ PV�"†ýf¬ÜVÖö•6Љåé 6 0¿ÀÉ$À:yãùµìÑ�@+�SÅ­&Å9f#@€ XËK{+{iS¦ÿ/äì²L L'ŠGJ8#z$0ü§sJðß#PÅ @ !eŽeK›hEëü†œºI€=�è¤b¦IëÿÎX„@Še´ˆÃrHiiõÄÒ¢ ddTB€‹�X›ƒNðÉÿ)¾$@€�®ÊË–6�GG ëSÍ PI€ ×¹ÀÙн@üçŽiÿÝÛ9‚fR,[ÚÙì¥Ll�Õ“iõÄMN  °X�öy’‹µkêq'‚ÿâܱ @€�Å ±lÓ.öø~WÊ@'åÝûÙie @€@3$š1νè¥à¿ŠÊ @€�e�iGN4°Lÿ¶#{pD^¦&i TT H‹¹í{Ìs¢³oE{¡Ùýh­Û4}Žøä¿ŸÊÊŽ€ëéḫ•@ÄLL)›E)g¤àÿeƒÒ¨®Àô€éYîE g#pªÀ‰àß=ÿ§ªøš–.PΘ¶” €<27ß-ýŒSœ"0�H3$NAiø—‚ÿ†ŸºO€�> ”5¦-å-y´Ìèãɨh4UàDàÖÇ]�}{šÊ ßI µ>Mûÿ¨Õþ� õp@½ÇWïÊ-PÖ˜6=¢°\ÛµééMŠ�#²ÑrµLk4G`óÑ[šÓY=m¤Àñ/ý[Üú¸çJ4rôg‚ÿ }wŒXí¿¡g@sº½clks:«§J'�ûBì]yEÄñ25­t·\kÏü—éÑÔO ü6¤O‹O�mÍ(Ƽ{Á³Æ]o  0x�lt&¶|ÍsÕXºÀ‘h»ÿ®óôD`ä¼HôD²:…Üü»Ó°:£¦¥¨®@cÛÒ%Ò¢÷«îk9TI@ J£µ´¶ þ—æçhè^ Œ±méYdÝŸ[Ž @€�E H,®B‡µ6œ˜öï“ÿ ›¦ @ ò)¶½Ù:Qº@D^:¤² šö @€@oN&R h«—Àtðÿ‘âžÁ½FVo P�¼tn—0çTa(µ‘ê%0�H�b0Úê! ø¯Ç8êª*�Å)0ßàån˜�Èû Ð'I€>Á¡XÁÿÐUI€w(ßíí¥šðµXµ%Ý'±ênj¾%@€�uß*ü÷�VÁ Ð…@ŠmW~=Vníâ�¾ïZªÀh,;»ï=V˜G Hlüè{Ü0�Sß.‚ÿbìŠ1´ @€�a ŒÄò³†Ý†Së/U qßSçk 0,�öÏ•þ"ë=ücg#@€eH�”8ó@ägŸù=ï @€�Á H Ö{)µ þ—¢çXè—@¹À™q[fœÇ; 0I€! wYekãøôl Ÿüw gw€@¹bÜRÝ�…8UA€] œL¤@ÓV.�éà?=¾Qð_®qјȢcÀ™O†Ü €3ãx‡†(0�H�fpÚÊ! ø/Ç8hÌ) pfžì>g~Ï; @`¸’Ãõ?µvÁÿ©¾&@€�ò ”+Æ-Í-Ÿ�X‘­/ïÀiˆé©æÍê©0ü§Gý™ö?ÔaP9,H [CÄÊí:€�J“Økî5€þª‚,Y`z&@ @ݰdÊ® 8ü?àþ]ë 0 �³bͽ‡Qïlu–&0-Óÿg!¯ @€@)Ú)Ý( 0бü”[e Ð#�2ź¥Iä‘™УL1 0I€Á8µþg­&è­@ŠuK3`¤·][|iE _üáŽ$@€C8‘ØóøçÄÔžÝCiCÝ+m�OÄÆH�ú3í¿îC­=èô¸<Å °X�vi>ì.Ó €-‹åt¦@˜núHZ”.ª¶Þ ¦›ÿ½EU T �|ó@+œ£²Ò$RC¶ÎÑNo @€�R L'Š@U gã$øï¥‚ @`ˆeŠuK“˜Š||ˆc¢j °dI€%ž,@ð’ Pq�2ź¥Y ‹–?±5¿F¹9j4šº2`�ö¹÷‹MÿîØó„ç¦5v ¸özT×Þtç´ÿd~ÕcPõ‚ (S¬[š3üC¡ë¨“ÀÌšév€ÈÚº˜þ?’ìŠàßF€j!PžX7+ƒç £ÛbãÑ2´EH r¹=˜ºé«1ót3Â9ü§Åÿ á²�ynYf‚í¼Hv 0 �›cïØ¥ÇTÝ«)Å €ñXéÓÿ3‘7 @ ªÓ·O0`Þ!lošœy’‚à^+; @€@õ&ce)¦–"0£Ò“Õ;‡µ˜ 0?ÒLðoÚÿüRö @€�ª Œ”$æ-Eàx„U=“µ›æ¸+ 09ï¾MÛAðß´×_4S`*ÚfœúÑȶ�øÚ¿ @ Ž3I€ba@I€ã+ø?!á_¨»ÀHt¶”¡�¥˜Љ¬Ù�2 ˆ6 @€@}$î[Áÿ]¾"@€�ú ”%æ-E y)²!õ?íô�†- Ó³ 6}ì/­ö?ì“Qý 00�²Ä¼¥Ht¢µq`ò*"@€C˜Npo˜þä¿èûýÎò(¨ž N �Ö¦ÁÕvæšJ‘ˆÈן¹‰Þ!@€õ(àéOÁ”ü×ï<Ö#X˜@^’˜· €,B`aç�½ @ FMJ´Ç'g>ù¯Ñ¬+ °P�²Ä¼¥Hä g? P'�&$þöîÜŽ«<ö·�dÉ’%›â@n �`p/Sm“„TlLˆHÈ%.��¤Bn~ß”›@!•� ¤PCsƒ$@vh6¸bŒ{Å`Ë–›tŠtÊžÍV±$Y§ì=³fæ�çÑ£sö™™õ­wÍÙg¾o¯™$ÿŸ7í¿MÇ­¾ @€ÀâRΛŇÞYr©†,n­M€†#°³�>%oÛ"ùoÛˆê,E —œ7‹@DÏ €¥E¶!@€�Ö Šå§ä-*Hþ[sxê,[ �œ·öÀée .ÛÓ @€@ÃÚT�ü7ü`> [àÀÓ·å¾ÃÞï¢ö—f"Ô»|3âacñ°»ê�Bëì*ð][oÛõ[_ P±ÀÜ 7ÅÆgŸs器åá4W&ÿáìXñØGg‡öB€À’¾½ú,i; 0�"fþžØ\kî[û €UqP7CÍÛ+X¼@9`�@7ðrÉÿâÇÛ Ð �ýb¬öÜ·öÀT&wCìÆ!§— Ð�òÓó¦$ÿM9ºÄI€ulÉ ÷­½°2„:_› @`_M*¬üŽGšö¿¯õs躀éyˆžÐõ_ý'@ ¢ß�¹o}›�ì(” v®KÛÃË'¸æ?×!ª5®Á{[z�³ @ ëéÓw€±èy@×ôŸ@Çú÷Üw<å™±áqÇÆ]O^ôï¾·ã"º¿§@™X— vŽEÉÿž£åûå{YùžV¾·•ïqå{�…]H¹ïAu÷¿öKŠèí_7‚ö  P§À–�ž³7Þ4aëÅ—Ç]'�¬Pç€dÚvŽE€•�øNŸügz¼ÔÖ ùOïeå{Z¹”ïq[>rFÝaiŸµ ¤Üwu­¤Æk/¤çšP÷Q }j(î½o·ög®º6î:ñùŠ»©ø¦È©0HþÿûLÓþšØ‘ü—ïe».Å}›výÖ×èœ@¹oº_ÝK‘ª ‰ÂB€@>®Õ¬v,Št7”=–™«¯þÙ³bìaµ_.¶Gt¾­S`Å£¿7žï»N85f︽–PÉÿygDKyÿ �ƒäÿ^{&ÿƒŸ—ïuŽ—Tþ'@ “eî[ïRû €~ôÖÔK uä)0(<÷3òžZ£Zñ˜GÅÃS^&âU/;“ÿƒ…À®ƒä?½gÍ›üﺢ¯  ÐQ�rßÚ )€õÝ&@€À>öIÔÙê(Hþ;{¸í³ã;“ÿ4{ÉB€ó ä�ûÖ^ˆ¨ÄüÃãUä!0(¸1`ƒ‘YUÉyÍ¿Oþ3; êGò_ÿˆ€�¦ÔŸûfPè­mÊp‰“u Ì\s½§Ô…Ÿy»ƒ"@JÌGy9ÀÎ俼æßB`Éÿ.¾$@€À>êÏ}3(ĺ}:Y�BÀA°7�7E@ò¿7u¯’ÿ4;©œ¥d!@€� ÔžûæP¨ýNˆ *+ @ E€ !ÓFQXùÈïl�ßûÝñðó?ãòÖ˜ø³÷F?6ïÖÄX¬�~ó¥±îwßckößíg¾!PË÷–²Ð¸Üe¹ïsËm¿‹Û3ïâ¨ë3�È¡p@ïÁcôSX€@y‚®°¨®R&öþÁ›âÀßÿ�˜þÒ1såU…ýž|H¬zÆÓ"VÖþ�DG%ÿ.3ùÏ¿·"$@€ÀèRQ®öKj/$æbýhk� Šé&]ŸwŽ™x7®‰”è¯zÎ3ÿ»€+�üWÊ­1º#P{ÅÝõ÷Ý9Øô”�ŽÌ\cl,èžqÝ$0\Éÿp=í�9 (ä4b!@€À�†i7:&0HþËGý ášÿŽÑé.!P{ ]ÿ_û³1R‚$@€À" fuØ™ü§YD‰Àš‘ìu;­½Ñ[»ˆx­J€‹ØYØx÷"¶²*]�üwmÄõ—�:zÑ[UG»»¶™A`×p|M€ÃÒc¼úŠÃ¦µ?­�ü·bu‚ PX“• ÐlE€f�Ÿè ŒJ , –7 -ß#, Ð~€ö�± @`  à@ @`W�AòŸfIþwUñ5Ú-°²ÝÝÓ;–"PKÙÊ6K¨Ð{PHŸö=üÜsbìà‡-9d Ðl�2ù¿ë¤Š“ÿô^çïK³�Ñ Ð|3š?†z@€�E ÌÜpSÜuâóÝ`QjV&Ð�Z’ÿöðé - Ðèá<–& °47[hºÀ ùO@Óþ›>’â'@€ÀÒ–æf+4^`gàŽ»ß @`ß;“ÿ4 ÈB€ÝÈ PLv“^¯  P¿À ðÜôˆ@E€úCF( ù!®] @`�EÓ \ud«Õ^H÷ƒ™Yïì˜ö) °O"+h´@Yà+ïûQþ®[ @ V�©Z[O�×^¨@û �*±å�Íp(h�À ùO¿Û’ÿÖ ­ @`I Kb³Ú' о1Õ£n Hþ»=þzO€�ùr(ÌÎ˜× @ z�²°1=Ü=ª·×"�a Hþ‡©i_šÀÜÐö´ÄÕ^èEL,1v› @€ÀfoT«]¨L@ò_µ† °(�”ûŽ/jƒ¬\{`}²KX¦€"À2mN &�2ù/gñ¸æ¿¦Ð,2XYw|ý(ú½Hµ :*ÐOýNODÉn™Ù>ààÏžc�üŽìâ» ìLþÓïnŽKù^g©V Ç¿-Õ h�@n…KRò¿9·alžû‚èo¸  äžügL'4T(Ðs @/ 7¬ð�Ó+ °X1ë¨V ,Ð ¦ýgúɵZ#@€@¾E3uG—Á=znX÷Q }ìC@`@~L &�AòŸf锿£È[`,z“uGXû=ÒµI©à ¥ºí P§@ù˜ÿûàÌ�7ÆÆOŽƒÏ=Û=ê<\´M`»À¶OþO‰™›njˆIþïs �\D˜Ì�eU#H¿‘µø]û €4 bëÈ¥5@€C˜¹ùæAÀ=†Âi'–,мäÉ]µ!Z#�Cî[{ ¢þ!´æˆÒT  P²&<ˆÀ ùO³qšóÉÿƒtÆ� Ð)�úsßÚ © Rûu�:æt–CP¢]X‚ÀÎä?ÍÆ± @€@³rÈ}k/ô"\ЬãV´ì,Ü~*�üW€¬ ŒP ‡Ü·ö@½Í#4¶k¡À pÒ)ÑW¡²]ˆ�ü;  Ð|�rßÚ cQL5(õ€ÝPèîØëy5e�­|Gù»f!@€�æ ä�ûÖ^H�¾r @s�a‘ @`  à@ 0�AòŸfÙHþGãk¯¨V þÜweµ~`kEŒmJ×BXÈI ðÜàJ‡£%܃"@ú”òàsÏŠ±G>¢RB�h£@Cúäÿ¤´'ù/ßëü}i㡪O,P Ì}¸êÈV«}À\[FÖ;;&@€�Jfn¹%MUN÷H‰‹…�¥ ´.ù_:…-  Ð�~³ßk/ô¢¨½ Òš#JG ��€"@ƒ „F ’ÿTH3í¿ÑÃ(xÌ#PÜ7Ï‹•¾”A î­´Ç#@€�‘ ì(Ìݾaämi€@›v&ÿi6�…Ú%�.}¯=÷­½�.»§]ê7 P ”E€»ÒõËŠŽ �ü/ÌÉZh°€ÀtU�@B'@€@ÖŠY�à2( eåý3Êß ´SÀ €4®kâ¾Ú« í<¼ôŠy(ä1¢ÈW LþËÙ2’ÿ|ÇHd†ÀXôkÏ}k¿àÝf ãX²d- �õð®FÉ�øš&@€@Å_ŠÍµVVÜç4wzDÿFlZqà~ètD |²íÝÕ?ûLû÷Éÿ>�¬°t�.ümYºŽ- T+0—rÞÓ"Òõ.µÏ(»?…Ö{h�•Ì|ó›ƒëœËÄÇB Ëƒäß5ÿ]>ô��Ž ä’ófR¨ÿq;þt—µ (ÔF¯áLv&ÿ© f!@€�n¤Ä»öéÿ¥t�ìÆA¯—Ø!0(œpŠGîñg$ÿ�j%@€Àn)çUØE$ Œ]âñ%ŒX`æÖt9€"Àˆ•í>'ÉN£!T.�EÎ›Ë €,0*?4H€�Ž (tüèP÷É*x•³_, Ð=3vót+Ä»wùÖ— Ð!E€ vG»º3ùO³^, ÐM�”óÞ•Cϳ˜�îˆx{b @€�zÊ"À'œìžõðku„’ÿâÚ5$�KΛI wgƒÆN¨ 0�¹[oU�«]Ö' ù¯Ï^ËÈM`,òÈy³(ÌEÿ¶ÜH< P½€"@õæZ�@™ü—³ZÊÙ- �rÞ,f½gQèeR qX @€@ýŠõ��–'°#ù/�e (ÌØí8˜1`7ß @ Ûƒ"ÀsÜ ÛGA3{/ùo渉š£‹i3v oŒÉ�;¾ö?(æ¾•î  à`h�À ù/�YŸü7hÔ„J€�j6ÅT÷½Ëâ€ã"f" E€jŽ=­ @ 1Š�ªÎº3ùO…+ Ø] ØxhÄôî¯Õó]€²ës õZ%@ �"ƒò aPxöócö6W‹å;JÝŽl�ü§c´HþSa©<¶, @`)¹å¸YÒ�JnY ªm @€@) à8–€äX’öC€�n ¤7ç$�U ¢¸)'± @€@óE€òÆ€î мÁË$bÉ&! ´@ =E`oãØ‹Â €½áx�,0{û¶Çµ),˜ÌŠÛ$ÿ¦@n9nV3Ò%YUG†9ðöE€Õ (Të݆ÖÉš=âšÿ6Œ¦> @ �Ürܬ é€<ŽSQ @ ;‹ßò¤ÙV è;±3ùO³G, @`xy帙æn´= @€�tcÀòr€ò�Ї½Hþ÷ãeX¶@/f³ú�;«Àccâö4 `bÙÊv@€vPØ×» ”…¡;Êiÿ>ùßÍÅ7 0 �bò11™ÕÔ²¬ Ûˆ{7ƒÚ> @€À®Š»jøº$ÿivˆäßñ@€£èÝ0šý.}¯ÙÒ]³CZ:¯-  @ 'E€œF£ÞX$ÿõúk�]H¹mvngWHÏI¼¾ ƒ> @€@=ƒ"À î P�~­JþóQ @ ýýìrÛì ùM“hÿ�©‡è–Àì†tc@E€n úöÞn»æß´ÿN¾N @ b�"V(ìÛ|Î%ûF²,S@`™€ Ü|gòŸ @ 0z�ürÛìfÌF\3ú�ÐH�Ü1àÖoáh¹€ä¿å¬{ÈP ÇÜ6»À7cÓME3ŽŸ� @ …ƒ"@ºüœ"@ Gw[—$ÿ­Z#@€@¶eN[æ¶¹˜]à¤ô�Lx@nljx ÐjE€öoYØ)ï÷Pޱ…T'Pܰ-·­®Å…´´r!+U½ÎXô®MOxRÕíj��íEú ´T(À»Bì½6µ£ðˆÏž+¾÷»÷ºž4G`î›)ùî©’ÿl†,½×ùû’Íh„�Ñ ”9íh[XÚÞ³,ÌEÿš^d79ai¶"@€ÀÒ4±¬e•Q Ìløvl8éñÈÏ�©0jìï¿Lþ7 ’ÿo�¸%»'�¯€¿-ùŽ�ÈÚ/ÐO9m޽Ì2ËîeZ-ÉqÅD€Ã˜½ã¶A L -Í�ü7sÜDM€�6 äšÓfY˜‰¹o´iðõ…š% ЬñÚ5ÚAòŸfq̦Ù P—@®9m–€ÔUu ”v  P¹@¿ò5¸�AàÄSÂL€`e²Ê ùOcVŽ�%CïuŠ�•@®9m–€'Äøé.1w�j0ì—,D`öÎÛcCY¸å› YÝ:5 ìLþÓ˜Y @€@½ÅÝÛrÚz£˜¯õ, e é¦%fÌ7b^#@€�JE€“NU¨T}q�•š²PSŽ•…Ô-�rÙ+ëŽaoíg[ˆèe‹¶7L¯ @€@;ò×AòŸ 4’ÿ|ÇHdèž@¾¹l¶€ôÜD€îý¦è1²PÈoh$ÿù�‰ˆ @ ÒíóÍe³-ô£¸ÜÁC€rNx�Ë2Ƀ ˜W ç\6ÛÀXÌ|}^M/ @€�fïÚj�`6˜ö_ëhœö.°_LgûXûl �‰Éô Ÿâî½³ú ¨G@ ÷²ÕÁ'ÿ©ãšÿúÆ@Ë ð`ÅÝßSßz°5êüY¶€m(=—Ôyth›ö*°³pó-{]dž+°3ùO³0, @ O�¼sج éñ Wä9¨¢"@€ƒ"À‰é�Š#?$ÿ#'Ö A ]ÿŸíôÿ²{Yz— a 삌L@`d´;w\XÊû.”Ö �³@J°³Îa³.¤êÉ%9®Ø @€@) 0ºã`�ü§Y’ÿÑÛ3 O ÍbÏ:‡Íº°!6}=Îo8쉌F@`ø®’ÿá›Ú#ŒN Ì]o�MYßÇ.ëÀ3"¦Òð\5º!²g 0<�A |D {,Uò¿lB; @€�ŠzQ\½=‡­¸å…7—u`[7z/¼;Ö$@€õ ÌÞ}ÇàzuE€¥�à ùwÍÿÒmI€µ1–}îš} ˆ¸´–ÑÓ(X¢€"ÀáÒf;“ÿTH± @€�& ¤Ü5ëëÿKËfštÔ‹•;‹7ÝLd�’ÿBY�²("ÿÜue–r»µ9Æ/9(²Ë+¾$@€@ûRÅØÒB�™ô)öí'��üܱò1�na‡×¥2ù¿ýÄô¨?ŸüÕž:/àoKç• E™»VÚäË~ÀÑ÷F7,¡o6!@€µ ÌÞ•î �гfìu,J›AòŸ¬, @ ¡7nË]óŽ>û@É—ª—.Èû8<ˆ€"ÀÞqÊäP ‘üïÉO @  Ùú_"6¤P4³ G¥  @ �Aà3vÕ—üïªákh²@?ŠF|h݈@¯wSlòÁ*v¨F`öžò�Š¥¶ä¿šcN+ P�@ÊY³`)‘ýMË ûÑÿÊŠfLV(õh¾@Ño~šÔƒžÛ45i¸–ëŽ"À#?÷ñXùØG-ww�Ü~öÆ[Ò´ÿFiaé�@ù^çïK‡\W tK å¬_mB�1à‰1~gÅuM#Ø—À P&À)îÚ"ùïÚˆë/Ú/PæªeÎÚ„ž6¢° ²¸°  b$@€ NL—t¨ ù_È‘ah ÀWšsc )Ðó›‚*N °�Ù{ïŒ ) ’ÿ²¯¦ý/äа4H`, €a�WºjìËÃÞ§ý @€�ººPØ™ü§‚‡…´M I¹jcf\›Òcú[Úv°èØY¸áæÖaHþ[7¤:D€» ô·lËUw{1ÛoS8-b:Ý—¼�VÈv´F€Ù Šå�[T�üg{¸ Œ†$Pæ¨e®:¤Ý�|7�)”+".¹ˆ @€@Mm*”…ŒÁý Lû¯éhÒ,T!�rÔÆ\ÿ_z¬¬eXmÌ%Ütƒ…aíÎ~ �‡@*§‡cç‹(j˜½÷ŽAâüÈsψ•�{tíñ,%€�Éÿ}®ù_Š_k·¼×µ¶w™vÌß–LFX-H9j£>¤nÔ €™˜ö$€ý²è Ì/0›ç ÏIwÌoàå’ÿùÇÔ« ÐN�¦å¨�*<9¶Ü”>%»½�‡Ž^ @€�ûf77¯ ù¿ü|E€](nß–£6§¯�*”¬½èy`sŽ/‘ @€À2v®»~{©fÓÙã`Ö‚iÿÕ€k…jhbnÚ¸ÀlŸ¯}¤@€*(‹·{rL_xIE-.¾™2¶2Æ2V èŠ@sÓÆ"fÏëÊ¥Ÿ @ èǦ¸ý~:¦>ñ©ì@Ê˜ÊØÊ- @ [ÍËMW¸$&/K÷3½¯[–Þ @€@׊˜Š;~ö•qÏÞ13S?GŠ¡Œ¥Œ©ŒÍB€º$�l²©ÌM›ÖçÆN‹HOZ(¾Ø4hñ @€�å ±é]ï�Ûžñ#1}Ñ¥ËßÝ÷Pz>©X@IDAT¶]ÆPÆâ–KD´4Z Å¶å¦ÍêÆÊf…»-Ú~ôþ;U.~¬‰±‹™{ ”Oiö¤æ=U|ÿ`[¯¹&¾ýÜĺŸz~<ôOÿO¬8øa¶úÐ~6·ñî¸çwO�ñŸ�ö™êñ‹ð>·¬!­Ê|H�vC`�2'�çåì_jÜ €Rteî�ý¡%@­À\Œä̸õñO‹»_óº(Á7ª¥Ü÷Ý¿ôúA[ã>#5#ù•µý @€@3f£ßÈ@#gÜ›.zh4‘�šqxˆ’ŒF ˆ-±éMÿΈ5ÇëN{A¬=í…Ñ[¿nY ›ÇcòÃOŸöŸSç_œö%é_¨�  @ M“±ùÂ&v¨‘€ãÒí�®�ørÿÁ&¢‹™ _`.%ê_üë½þôXuècÿg~¬~æÓbÕ!‡ÄÊ'<.M¡[1³³s1{ý 1}åU±õ‹Ä–/~5¦¯¸6]š’ÁÍç�Ø« @ N�/•9i�,µíFÊÎé2€^ô–:ò¶#@€�Ö ”‰ûÖ+¾1øÿðσ~öbEŒ­}hŒ¸:zkW^+&·FSú7yOú»êþÖ:F€CH¹h#§ÿ—�-ôÓ5+ÒÉŒ…Ø·@™àÏMnLÿö½®5 @€�½  ½þ¿ìQ#oXþ­ÿJš°¥üÚB€ @€F/Pl¹5Æ/};£i¡±€“"¶ÑûÒhXì• @€ì.�rÐóË\t÷W›ó]c %q/â3Í¡) @€4Y ˆøt“ãot Ýxñ?›Œ/v @€hŽÀXÌ4úCèFÞ“§;0ÞÕœÃE¤ @€ ÐD�2÷,sÐ&ƾ#æFN�觘°c4ýO€ @€#(sÏÓS:’�W´ÓFJ£¹(=£¢qÖ  @€,C  ¹çÊeô?‹MÇb6Ve‹ ´F H·7±T(À»BlM P›@z¯ó÷¥6}  °|�™܃®ñ3S·¤¿&W/8í� @€Ì'P\ó”Øró|?iÒk�/”Ø©žì2€&ub%@€ @€@ƒÒ…ÿ­È9[R(ý,Æ÷B%@€ @€@Ú‘s¶¢±ù¼ôH†™…ºL€ @€#Ø–kn>w„MT¶ëVž±©qAej"@€ @€�N”¹f™s¶¡³­(lˆÞ'Û0 ú@€ @€9 ´'×lM sçätˆˆ… @€Ú 0Ûš›W¶a8Ê><1Ư¸6¼¾½Ç·¥OúA€@wÒÓL, @`¨þ¶ •ÓÎ:*0qÓbâò¶t¿53ÊI×f´¦2Ó–L? @€ ÐT�Q|¢©±Ïw« EÌ)Ì7Ê^#@ oÑä=>¢#@`8Þë†ãh/T*ж³U€kc¢|àx¥G„Æ @€ @ uenYæ˜mêX« ?±5¢øÏ6 �¾ @€ @€@ÅnË1ëh{4m¶ªP¥Ùeg�†Ê^  @€ @ C­ºþ¿·ÖÆ¢ø·Tèwè ÔU @€ª@ÑïEѺGÍ·®ð„¿#ÍøêPÇÞÎ @€ @ 3eNYæ–mëpë åÑ÷4€¶©úC€ @€�ŠÚšS¶²�:uFEÇ…f @€ @ emÍ)[YHS5¾ž®×¸¦eÇ î @€ @€ÀˆÊ\²Ì)GÜL-»oe ”œ�⣵ˆj” @€+Ðæ\²µ€1öñÆq'@€ @€�ZÚœK¶¶ð„¸ï¢"Šk9b4J€ @€�˜‹â¦2—l\à ¸µ€²ÿéÚ ³x X� @€]XÙò²Õ€™ˆ�uýÖ @€X˜ÀtD«ï%×êÀ“cóùéù�ßZØP[‹ @€º*PæŽÿ›/hsÿ[]HWÑs@›�`}#@€ @€ÀPzgœÑÊ®2ÝIÛ é>}—dzð ‹ @€¹Ìv wl}à’ÿBšpG.•8 @€ @ 7�âŽËcüó¹E5ìxZ_8-b®p3Àa7öG€ @€�Ö”9c™;¶¦C{éÈʽ¼Þª—Ç¢øÀ\ô^ÓªNé ­HpÚ}±YkFJGXŽ@ù^g©V Õ2WK©µ¬H9cº­ŸPâãcó‹(nî€ê# @€,\ ÌËœqá[4wÍNÒðiÀ›;L"'@€ @€�QlÏ;1Q©+€HwtìÄ”ŽQüBØ' @€Ú*Ð¥\±3€'ÇÄåcÑ¿¼­­~ @€ @€Àâʱ̷Us×îL ¢tKG³š{¬Šœ @€CèZŽØ‰§ì8Bæbæƒ+cÕÿ�èõv¼ææèwâ¨y:^×K¼ë’×.U ¤÷:_ª×û(Š2GÜçj-Z¡S3ž[nNwxìÄÝ[tŒê  @€†.�Ê’_.sÄ¡ï8ãvªPŽCºÃ£Ë2> …F€ @€�*VD¿SŸþ—¦�+ô£÷‘^3UPÚ @€ @€�üÒÌðÙÕ‡ó‹l´u®ð¤Ø¼1 öŒ–ÕÞ  @€ @ c�O=!ÆïÈ8¾‘„Ö¹@©Ø�â_F¢i§ @€ �½@zü_'sÂN=`ÇQøµ?ûÈ8ðîô(€‡íxÍÿ¨M`ðO¨Í_ÃT#àm®çÝZ�¾‡olH¿w_ãgu¤“3N‹˜îGtî†]<Àõ™ @€{|èÇ"¶îñZ'¾íd Ù¹˜ýçNŒ°N @€ @€ÀN�Ù˜él.ØÙÀa1ùÕô4€+v¾ @à~�ʸ£‚¯úiN’…mð^WíÏ•78· °§@º!ü•‡ÆÔWö|½+ßw¶Pp:å~OWZ? ,F`îÞû³ºu—)0wïeÚœ�x¯«v�æî¾·ÚµF !+:žvº0Å{Ó,€é†«Â$P™Àìõ7TÖ–†"f¿ù- h½Àì-·¶¾�9uÐßòœFC,¹lËýºýD¸Nžãw¦ƒñœ\HqÈE`ë%_Ë%”NÄ1sÅ5�è§N ÐmïuÕŽ¿¿åÕzk­iø'žãw4#ÚÑDÙé@IÚ�žËFslÙkƒ¦þóÜG߬Ðç6ÞÓ7ÜØ¬ EK€�%l¹ñ¦(ßó,ÕL}ö¿«iH+%Ð{w£ÂA°�/|06ýGDaNÚ.»l®Àäç.ˆb|¼¹hPäãïýP*D¦z´…­èGùžg½@ù7|ò¿¾<ú†´@ QÅ­—ŦO5*äÛùÀéiÀ\¨�àØ²Ë ôÓcQ7½£óÒÑ�`QĦxÿèÛÑ2¼ç¥÷>ËhÊ¿áåßr ÷ iæ÷iåÓà;¾ô:ÞÿA÷/‹5ß³:VÞØ‹ÞJlXÅ£oþbôÖˆdD›ÿñ½±á oÑÞí–y <âÏþ0|ÅÿÌ3¸DUlÞ7?ú™1ž0Ó‚áÔ…! ¤GÿÍ®ŒÙÇ=!¦¾9¤]6v7�ŸPŽÜ‘1U^ð‰ÆŽ¢À Œ@ Ý¦-§/+–³q›¶=7ý zm¬Ú?Ýà‡ÚÔ/}!°|�~lþð'bõ£¿;Vö”åï®Ã{(¦¦âöŸù…ÿÔuXA×  °M`úúbëW/Žu'ÿhôöÛË2&>ôѸíe¿Eš[f!@`w�týÿ›_Ó_ØýÕî~ç&€»ŒýÕ±þàômº@oõ./û’��@/úÉ“ãà·ý±.áˆØzþWbÃ/üzLo(o9b!@€�«¾ó{â‘ïy{¬>þ©;^òÿÊþm|ý›â¾���¶0›b�lVë”@Q^kôÝOŠÍ;Õíé¬À8WÅ�ïK(?»Ç˾%@`»@ùt€ƒ~çåñ�×¼B!`GÅôe—Ç=o~{lþ�ÿLk;9[™Uè¤@/ÖÿÈÆCë×bÕQGtR`1�.ÿMïxOÜó§ïv?™ÅÀY·séÌëý‡Ä¦Ÿë\Ǥà {à\럵2zŸßãeß °‡@/VǺçkNzV¬~êq±òÑ�Š?,ÝZ´»W““1·ñâÊØòù/Æäg΋-×»µÈ‡Žo  ð û?þñ±ö‡NˆýŸýÌXuè“[zk×>è6­þanð·eöæ[bëW.Œ©Ï}!Æ?{~*)omu·uŽÀ0f£xö¡±Ùôÿ]0vÁØñåU±þké^‡ïøÞÿ @€ Ð�tíÿ׉Írº=†ÌSö)¿íGá‘€ó¸x‰ @€MH9Ý;šgÕ1š0�øëVÆ�ßL?zÈFäê8ðâ´ÊÑûXÍ�  @€ @ ^�Kž›Ž©7„¼[7`ß㣂´o#k @€ @ n¹Û>F@`@—Ŧ¥KnÛÇj~L€ @€5 ”9[™»ÕÔ|cšUØÇP�1QüÝ>Vóc @€¨M ø»m¹[m4¢a÷XÀ0]ëN«ÝÑ[³€Õ­B€ @€• S©©G=)6o¬¬É†6dÀnû�ô¾¬j @€¨Và}’ÿ…�+,Ì©\ëméR€þÂW·& @€ŒV (f=úoÁÄ.X0UÄ•±þã½è�ºˆM¬J€ @€#(Î9$6Ÿ<²Ý·lÇf,b@ûÑ{ó"V·* @€ŒP ÅŸ�p÷­ÛµÀ"†ôÐØtAz¼Ä¹‹ØÄª @€ 0�”›�ÿ”ÿï캵»TXôÐöÿtћ؀ @€†,PüÙ�wØúÝ),rˆŸŸN7N¸d‘›Y� @€†$�>ý¿ú_cüÌ!í®3»QXüPsÑËâ7³ @€ C }(ûæÓ#<¥m‘˜ ‹+WßãM�¼~ ›Ú„ @€–!PDÿ–óbóû–±‹Înª°„¡?)b6Ýmò­KØÔ& @€ °<�?{UÄÌòvÑÍ­–8î÷Æø?¥ëN6,qs› @€ @€À"zQÜqOŒ¿{‘›Y}»€À…gDL¥Mß¾ÄÍmF€ @€‹HýÿÅö\l‘[Z½H÷N°,UàŠˆuc±þÆ^ô^ê>lG€ @€ûH3°ïêÇæÇ1¾ïµ­1Ÿ€ó©,ðµíž{,ÐËj @€X†À[%ÿËÐK›š°<¿¸*b}±mÀ×¹+› @€ @€À<éÓÿ»{éÓÿC"6Ïóc/-PÀ €BímµíàÛöös¯ @€ @€ÀòÒÍÿÞ&ù_ža¹µË7Ü1 à¦t/€‡ awvA€ @€ÛÊOÿï‹Í�=>b”å ˜°<¿ÁÖe%ª¬H aWvA€ @€»¤\ë/$ÿ»€,ãK3–�·ë¦çGxP¬/gý?.â¾¥íÁV» ˜°«Æ2¾.+Reej»°) @€ì"0ÅÛ%ÿ»€,óK3– ¸ëæFtÀ¶'˜°+Œ¯  @€ °h�âÞ©ôéÿÑ÷.zSÌ+`À¼,K{±¬L™°4;[ @€ @`W�”[½]ò¿«Èò¿6`ù†»í᪈õ½X]½Gìöß @€ @€À‚ÒµÿÓ�ÿïæ âZðJf,˜ja+–OèG¼yak[‹ @€æøÉÿ<*Ë|I`™€óm~{lþ»Tøæ|?ó @€ì] Ì¥ÊœjïkøÉR\°T¹}l÷�XÿŠôHÀwíc5?&@€ @€�]Òôÿ_|Jl~÷./ùrHf rÏÝlˆÍÿQ¤[X @€ @`aÅUÛr©…­m­Å (,ÎkÁkŸ1Û�â/x+ @€ @ ã)‡úÿÊ\ªã #ë¾KFF;ØqïÊXÿ•ˆ^zB … @€Dà’'ǦcÓÏ‹YÇ�–!`À2ð°i:pû¿·€õ¬B€ @€�N ôbî� @ò?£À €âîØuº!à¹é†€'ìøÞÿ @€ p¿@ºñßyéÆ'ÞÿНF!`À(T÷Øgº€åw÷xÉ· @€ °]@ÎTÍ¡ P�ó±ùËi&ËÇ*hJ @€h˜@ñ±m9SÃÂn`¸  ÚlLÿv*LWÔœf @€ Ð�bºÓ¿Ó€@[¢@EÃxxl½>ÝÍâo+jN3 @€È^ Ì‘�­×ehKtÀ òkqÐCWFÿÚtCÀ‡Wج¦ @€ ��@ºñßÝEl~â¡wg\KZÑÒ~eÙ­wÄÖ-¿ûM§À�d   @€ P™@ÿ�‡ÆÌç*kNCည‚ÏÇÄߦi.×Vܬæ @€ ��@ʉ®+s£lêH .¨a /�u/\=O¨Á^“ @€Ô/0ÅOã¯?’nE PÓx#Ö�—.xNMÍk– @€µ¤kÿ?ÿ”— Õ ï€ÐË&ûÑÿ�ôXÀ4óÅB€ @€�®EÊ…ÞÐ•ÞæÖO€šFä°˜üjšðþšš×, @€êø@™ ÕѰ6ÃMë<VÆìÓô—É:cÐ6 @€ª(sŸ‰˜{cmic~3æw©äÕ'ÄÔ7SCZIc!@€ @€@½z\LÝRoÝnÝMkÿôÐËý¿3Ö#…ñØšCÑ< @€F%pãí±ù)'ElUö»o3öm4Ò5Ê_€4¯i#vN€ @€�ÊœGò_ãloºW"(Òc?“n øƒ4 @€ Ð.�â³OŽñhWŸšÙ32·¹ˆ_M�œÉ$a @€ @`ÅL?âW†°#»‚€À‡±‹ÃcüʈÞ_c_öA€ @€�<zuhŒ—÷<³d à€ aGWD¬ëź«R!à»w¼æ @€4S øVã‡1ÞÌøÛµ�iù‹‘¦ÇüFF! … @€KèGñ›’ÿ%Ñ�l#3FF»ô_ë>›n˜n’i!@€ @€@óŠ(>—¦þ?·y‘·;b32ß¹èýRº!àÖ C @€ö!PlM3›y+ùq  5 ï«É#bsº@¼e_ëù9 @€2x˶›œgYÇCr @¦Àç"öd¬¿,…÷}™†(, @€ì&�>ù¿öÎØ|DºžyËn?ðMfd1  ¢ü…)¢_^ P<ð§^!@€ @€@nEÑ‹þk$ÿ¹�Ëýñ(Üo‘ÝW‡ÆÄÑ{_v� ˆ @€{¤Üåýe³Ç˾ÍH@ £Á˜/”­Q¼!M£¹k¾Ÿy� @€9”9KÊ]^ŸC,bØ»€ÀÞm²øÉ11~g¤ßÎ"A @€ @`�2g)s—y~䥌Ü0£Áx�Pz߈uçFôžó ëø @€*èGñùÃbü„Ô°û—U®¿¸ÍXœW]ks¯.¢˜®+í @€ @`O�2GIYÿ«Òë’ÿ=q2ü^ ÃA™/¤ò9šé7ê-óýÌk @€¨C ÌQÊ\¥Ž¶µ¹x€Å›Õ¶Å-1þG©ÂvUmh˜ @€ÛÊÜäÎÿc ÍPhÎXÅ�ElíGïivMºÉ¦… @€u ýôØ¿_<)bK]hwñ ‹7«u‹Ãcó—Òýþ¦Ö 4N€ @€@§Êœä°ØüÅN#4°óžÐÀA»"b]/Ö-…þ؆/d @€š-pc›�84b¼ÙÝè^ôf4pÌË_´¹è¿:] àN› ?! @€h®@‘žPֵ俙#¨ÐÌq‹ÃcâÓ)ôw74|a @€ Ð@�tã¿÷lÏE½�| Üã¯O³nip„N€ @€@cŠ[×5&\�>@@à$ÍyáY›ç¢x¥Kš3f"%@€ ÐL�rêñÊ2ifü¢.~lŸ~ó®†wCø @€ä-ðnSÿó …D§°¥Ì×I—¼!Ý ðæÌà @€ (s�m—70x!ï& °G3¿)§áô£xYº ß̈š @€�<Š~™k˜úŸçè,6ªÞb7°~¾—ÇÞ‹±7ä¡È @€h’@ý·¦©ÿ¿Ñ¤˜Åºw3önÓ¸Ÿ|3&Þ4ý¯7.p @€ ��@™[”9Fv� hÉf,™.Ï ¿ÑûJú·*ÏEE€ @€@þÅtºÄø©‡ÅÄeùÇ*Â… ˜°P©†¬Wþ‚¦kt~¿!á “ @€� ÊœBòŸáÀ,3$€eæ¸ùU1‘îP|!ÇØÄD€ @€@Þe.QæyG)º¥¸`)j Øæk±ÿãÆbå¥éR€õ Wˆ @€d!P¤'ŒÍuDl¹!‹p1T3†Ê™ÏÎÊ_ØtÓŽ×å‘H @€È] Ì!$ÿ¹�ÒÒã3`év�ØòŠXVqr#‚$ @€µ ¤äðìCcó)µ á‘ ˜0râz˜ŠxEÅmõF¡u @€ò(nŸ�â•yÇ(ºå (,W0óí�‹ÍÓ ÿ\*Ìeªð @€¨E (R¾ðóGÆøµ4¯ÑÊ*£®¯¡Ccü³éžo©/- @€ �«@/zo=<&>“k|➀Àð,³ÞÓÇbâ÷Ó½¾œu�‚#@€ @ R�”#\tEl~S¥�j¬67¬�¾ú†/‰ý³2V^’*|©¾u- @€ �—@1>½c�ŠÍ×ä—hF%`À¨d3Üïѱå¦Táû_†&$ @€*H7ýû%ÉÅè57§PóTÝü1þ‘^ÿPu»Ú#@€ @ �4ü½GÅÄ{ó‰H$U(T¡œYS1þºt—Ï+3 K8 @€T �r�«fcók*hJ™ (d6 U„s\Ädú¥ÿéôoªŠö´A€ @€@.Å–4#øgŽŒ˜È%"qT' P�uV-—Gô_ŸUP‚!@€ @`¤)|ýa1qÙH±ól< Û¡©&°¯Çï�{I5­i… @€�ºŠèèð˜xq]ík·~3êƒZ#¸3&^U^Tk'@€ @`¤å9ÿ}1á‰`#UÎçfä?F#�ð²XwXª]ЋÞÚ‘7¦ @€*HÉÿd?âiGÆø×+mXcÙ ˜�Ý�TPùF�Þ~¹ú–µH€ @€À¨Ês}Éÿ¨•›±€fŒÓÈ£L7ü§tMлGÞ� @€¨L ˆxOy®_YƒÊZ@ ëá©6¸�1ñÚT¼¸ÚVµF€ @€À(Êsû�±ÙLßQà6tŸîÐÐ�UØ—Äþ�Ù/V^Ñ{بڰ_ @€F-PÜ=³Ç[nuKöß3š3V•DZ¾AÌEñ³EºOˆ… @€�æ ý^ôNòß¼‘uÄ+FÝ€ý7OàïcæºWŪ±ôT€›½ˆ  @€t[ }’÷‡ÇÄ»º­ ÷ó ¸`>¯•½ËcýYéÿçã @€ @ 1Ÿ<<6—çðéþ» ¸`wßÝ/Pl�Í/M7¹æþ—|E€ @€@®å¹{:‡O—óJþs£ºãR¨{2nÿ¸ˆûÒ5"§¦÷�͇)4 @€Ò9{yî^žÃà °7€½Éx} phŒ#]Cô ©` ‘c‚ @€@–Eyï_(Ïݳ OPÙ(d3ùrdŒ,eÿ”o„"#@€ Ð]�ò\½�ÎÁ­Ú6µÖ&—´i4kèË…­Žu_NM?¹†æ5I€ @ +Wn�ñ§q_W:¬ŸÃ0`ø¦�Úcù43'§NßÙ©Žë, @€�êî,Ϲ%ÿÕ�·µ%€¶Žl…ý*ï>Ú�¹ç§G‘LUج¦ @€t@ ØZžk»ã†º‚.*T€Ü…&ŽŒ© R?_™î �žHb!@€ @`ùEyrýŠíçÚËß�=t^@ ó‡ÀðŽˆ‰÷ÏE¼qx{´' @€Ý(Ï­Ësìî èù°ÜpØ¢ö—Ǻÿ—~ @€K(þåð˜øŸKÝÚvæ0`>¯-KàÊušªtö²vbc @€(Ï¥¯Œ‰—w´ûº=B3FˆÛå]§Ç®]|¶½§uÙAß  @€,F ÝXû‚é˜xnºãÿäb¶³.�…˜°%ë,Z |Ú�ÞóS…éºEol @€(Ï�ËshÉ¿¢.›PtW›¹(V?aUì÷¥Ôÿïèª�~ @€X€À�Ó1ó �û[€”U–,`À’él¸�ò ¬|nišÊd ÓBÀ¬C€ Ð9�ò\¹xÿK¾"@€ Ð�ôÉÿ‡Ò9ñkS�%ÿÝö,zj@Ãн >±ê�8àÌ4ñéG»×{=&@€è®@ñïWÅÄ N‹˜î®�ž×% P—¼v㈵ûźO§ƒð™8 @€´] }ÜÿÅ™Þq‘ÝöÁδ ™LWÂJE€ƒVÅÿ�fÑ•>ë' @€@НMÇÄsRò_{¯Ïy¸@ãÐÙ(Ê7ÀÙèý`¸®³:N€ Ðv�ëÊs^ÉÛ‡9ÿþ™�ÿu" cÍ£ö‹±/ö¢÷=�è°N @€tB ÝüúÖ¹˜{Ö1±åæNtX'³0 ëáéNpÇÅÔ-cÑ{^êñ�Ý鵞 @€´\àιèý°ä¿å£Ü î)4h°Úêá1~åLô4ÝÅuQmlý#@€´\ <§��þ�ãßhyWu¯A ¬.„zlL^”¦H•�ïBõ‘ @ •ãå9í11™îym!��€@>c!’íÇÄÔ—#f"]/åñ(Ž  @€�F ”ç°sÏßvNÛ¨ÐÛ€ r»xDl9/œ§F[›¿˜  @€º(PL—ç°GÇø¹]ì½>ç/ �ÿu6ÂÃcâÓsQüd*LwAÇ  @€"PL§s×–ç° X˜Pèà 7©ËGÇä'ÓéiŠM5± @€º&0Hþºˆ›Àƒ ¸àÁtü¬ñ—D<¤ëÎIú³ß @€™@úäÿ‹EŒÿÄÑn*=2c;®_À €úÇ@#(ßÀgcü‡#úÿ6Âfìš @ ÑýOçŒÏ“ü7z¿€ Y¥ÙÇEL^“§¦›¹|¨Ù== @€À°ÊsÄt®ø‚òœqØû¶?¹ (ä6"â‰ÀiÓ×ÄÄÏÑÿû‘4`§ @€�Hç†ï,ÏËsÅÆ/`Kp€% Ù¤Ñ½Kcݤÿ÷Ý Á @€,K ]óÿGGÅøï§�¤/-º! Ð�qÖË=.�µ¯ŽèýM/z+öø‘o  @€Z,�¦üÏ¥œÿµGŤ™¡-g]›_@`~¯v@àâX{òXô>˜Šk;Ð]]$@€t^ %ÿ“ý(^|LLžÝy �Pèä°ëô� cÍÓVÆØ'Ràà¯ùŸ @ })ùß8ýŸ8.¦.h_ïôˆÀÂæd­ \«Ÿ8ûýGêâãZÜM]#@€tYà†~ÌüÈѱõÚ.#è;Op t^ üC0Å3Ò]`¿Úy  @€�Ö ô/,Ïõ$ÿ­XZ‚€ÀÐlÒ>�ÃcbÃ=1ù܈þ¿µ¯wzD€èª@ÿßïŽÉ“Ês½® è7�]vÕðu§NŠ?#&OIׇ½§Ó:O€h�@yN—ÎíN.ÏñZÐ] 0÷ £�´Mà’8àwSuì�Ó£ýŽ´mpõ‡h¹@Qô#ÞttLüIË;ª{- ¹Y4™ º"pq¬yÑXŒýKzBÀš®ôY?  @€MHŸúOõ£ÿóÇÄÔG›Ü±•€À¨dí·—Æš§¦ÀcßÕŠé @ ¥)ñ¿­Å ŽŠ©¯´´‹ºE`Ùî°lB;h³@ùd*Ч¥'\Úæ~ê @ Éå¹ÚÖ(ž*ùoò(н €*”µÑh�ãcêÖô„€g§'œÓ莞 ÐJ�þ9å¹ZyÎÖÊîé�! ( Ó®Ú+pRº{ìÕ1yjšVö¶ööRÏ @€ÍH×üÿEyŽVž«5+rѨGÀ=êq×jƒ.‰µ¿8½¿KOدÁÝ: @ ÁÅL?Š_>:&ÿ_ƒ;!t• (TN®Á6\ûÿ@+>œnø°6ôG @€MHŸúßÝ‹¹ÓŽŒ-ÿÕ”˜ÅI €\FB�¸0V?~e¬<3k\ð&@€4P %ÿWÌÆì)ÇÅÖë¾� Ô.àµ�š*Pþá�‰g¤›žÕÔ>ˆ› Ð�þYéÜëé’ÿ挘Hó0 ¿1Qóz—ƺÿ“nø{é¾~§š7~"&@€²(Š"z|TŒÿ~ ³È:TÁÈ\@²’ù ¯9—ÆšöbÅ?¥ˆ×7'j‘ @€²Hw÷Ÿ{Ù‘1õ±¬£�†(4d „Ù �‹cÕSÆbÕéëûš±(  @€y ¤�ú¯éÇô©ÇÄô7òŒPTš'àÍ3g,Pþ�š�ñ§¦ûœ“q˜B#@€d.Ð?§<§’üg>LÂkœ€�27D wY¬MשõÊ m 4a @€u ý~ôþðèÿ?)×û×=Úo�€@ë†T‡r¸4V?¯+?�ŠÏ).± @€ò(îš�øÙccâSùÅ&"íPhÇ8êEÆÆšGí½�;>ã0…F€¨Q þL?}\LÝRcš&ÐzS“[?Ä:X·@ù‡ìü˜|Ný¿©;í @€r(Ï‘®ŽÉ$ÿ¹�ŒxÚ(`@GUŸ²¸$ÖýTªº½'¸.Û F€¨F`¼ˆ¹WS®¦9­  à P±À…±ê�•±ßGÒ}«¸iÍ @€2(¾>3?u\L_•I@ Р—tb˜u2'�òÝlL<­ˆâý9Å% @€@å9І˜8^ò_…¶6ì.`Àî¾#P©À¥±ö¥™™þí_iÃ#@€T.PlIOöûµ£bò*oZƒ jøZpø\zJ@úe|rÍ¡hž 0*�«¦£xñScâÒQ5`¿ì[À%û6²�‘ —ÏÅøqé¸ïiCvN€¨A Mùÿ—{büû%ÿ5àk’Àfìâ[u \kN+bì�½è=¤Î8´M€‚@ºËñÚ£c⟇°/» @` C@´ Ãørìÿ˜ýcåÒ/çÓ‡¹_û"@€T'пx&æ^òý±õêêÚÔûp À¾„üœ@ÅO�-7�ãÏ)"þoºQN¿âæ5G€X†@QÌEñç×ÄäÓ%ÿË`´)� ˜0"X»%0 �Ëbÿç¦KÞ1ö]ÃØŸ} @€F%0ýÛû1÷ó)ñÿ̨ڰ_–'`ÀòülM`¤GÆ–Ïöcì¨tƒÀ³GÚ�� @€–%ÐÿD/ÆŽ�ü/ ÑÆF.`Àȉ5@`8—ÆÚÿÑ{[úwÀpöh/ @€�å iÊÿŽ�Éw.wO¶'@`ô £7Ö�¡ \«Ÿ˜ªëïK—coI� |XÓ‚/ °X�âî~ôë˜Øòž´ešýo!@ k ]qý%°‡Àűî;Æbî­©ðséŸ÷„=||K€š/P¤d¿x_?V¼á˜¿³ùýÑ–*àd©r¶#Ð2�ËbÿH'ïHo OlY×t‡tV eþצBÿkŽŒ-ÿÕY'@`§€›î¤ð�n ”'÷ÆÄé‚?HÿÜ$°Û‡ƒÞ @€@ã7ùûƒòo»ä¿ñƒ©†&`ÀÐ(íˆ@{.ŒU‡¬ˆýÊÙ'¶§WzB€º!�>õÿÜ\ÌüÒq1}U7z¬—,T@`¡RÖ#ÐA�KcÍié$âÏz1ö¨v_—  @€@£Šèß’Nîó¨˜úp£,• ¸ 2j hž@yqGL=e.Š?N—lm^DL€º Pl-ÿV—³%ÿ]o}$°t3–ngK�¸(V?aE¬ø‹ô¤€ŸèTÇu–d-P|b.æ^wll½.ë0G€@ Y ƒ 4GàâXý£½XñW½è=¡9Q‹”´K ˆ"%üs¿vtlý·võLo¥€KF©kßZ(pLlý÷kcòÐto€7¦ËÆ[ØE]"@€ ãåßàòo±ä?ãa�LÌÈt`„E  çÇšïYñ–"z?“. ð~Ò„A#4T (zQ|h*â·Ž�©[Ú a P³€öš@óÚ ðÕXóÔ1öæÔ—ÛÐ} @€™ œÛ�þïSd—ph˜€@ÃL¸r¸(Öœšf¼Åýr%± @€@S¶]ç_üÖ±1uFSb'y ¸@Þã#:�(OP®O×$¦O)~#�´llTð‚%@€™¤¿¡w•KË¿©’ÿLEZ"`@KR7ä&pIÄCz±æ÷úÑû•4+`Unñ‰‡ä'PL�Eñ×ELýÑÑ÷柈hº€@ÓGPü2¸(V§ÇŽ¥ËÆÒå @`>�"úiš?M÷ßšïg!@€ÀhFãj¯ì!pq¬yzzéOR1à„=~ä[ Ða�þyé„ü�GÇÔ—:Œ ëT$ P´fØ&�füpÄŠ?N7 <– èª@ºÎÿ∹7¦Oü?ÕUý&@ z€ê͵H€@º)À%±îEý(þ0½ = èŠ@qõXôþ÷Ñ1þÑÔçô­…Õ x @uÖZ"@à~�"�ø|䜘8¬s¯L×=Þrÿ�|E€Ú'Pþ­+ÿæ•ûÊ¿�©‡’ÿö ³È^À €ì‡H€Ú/ð¹ˆý¼f.Š7¦Kn�õ�º"P>wEôþï=1ñŽ“"¶t¥ßúI€@ž yŽ‹¨tR Ö=$Ö¾!}$òké*�‡vA§  @ %ŽéDûí1ù¶gElnI§tƒ�† (4|…O �F4kS ~]! �#¬Oh³@qOêÝÛû1ù—ÇEÜ׿žêÍPhÞ˜‰˜@gÎ�8pU¬ýÕÔá×¥BÀÃ:Óq%@€� w§ ß>�ÿã#65°B&@  d]$Ðt�²°_¬ý•Ô�×¥{<¼éý?´G ]ãWêÍ_ÌÄä_KüÛ3®zB ­ mYý"ÐB�/D¬ß?xm/Š7(´p€u‰ Øžø¿m*%þ®ñoÐÀ •@Ç:~è>�& ”7 <(Ò”ÊKÑÄ>ˆ™š*PÜ‘þöüÅ}1ñ7'EŒ7µâ&@ › Ýw½&Ð �/E¬Yk¡QÎx\+:¥ �¥@úÄÿ†±ˆ·¦OüÿñSY)(ìC@`@~L€@þ§G¬üñXóSé9Ë¿•>•9*ÿˆEH€Í(.�‹â-ŸŒ©�œ1Ûœ¸EJ€� (<ÐÄ+4W wY¬þá¹XùÛ© '6·"'@€� Î]³o>2¶~*ÅRd� °l€eÚ9 \kž–Þà~;]pJš�fmZ @€À¾Š~šêVÊöß|\L]°¯µýœMPhÚˆ‰—�E \«‹•¿‘6ú¹TX½¨�­L€(¶¦Ž¾¯³~\L_Õ‘Në&Pèà ë2�. \ë1ý_N}u*xr@}&@€ÀŠ;ÓKïØ/zwxLlxÀ�½@€�– (´l@u‡�H�ÜÿÀØÿ¥½Xñëiͧ<øÚ~J€-øFšêÿ—›bò_NŠØÒÒ>ê¶¿ ùIDAT  ð/ Ð�Þ¥±ú‡æbů¦7ÂuŸ€ŽŒºn Ða�òúþø÷1÷WGÅÖÏ$7öëðÑ ëº* ÐÕ‘×ov \«ŸØ�•åå¿�ÞÜù_ @€@ãR–¿)uâÇböo�Ž­×6¾C:@€�e(,Ϧ´Kà 눵/�‹ÞkÒckWïô†ÝèG|}EÉ÷>+bs·z¯·˜_@`~¯ Ðq�ôÁg¥"ÀkÒ¥?éé?tŸ� [ÓµýMŸúÿ}zŒ_ªëZ @`W€]5|M€�=.Žuß‘N&_–.}U/z�ßãǾ%@€� Òûôõ©XûÎô>ýOÇÄxyg Ì# 0Š— °§ÀécÏO7 Lÿ½*�džœN2W칎ï  @ :�”ôÏ¥âìÙýwž“nêwzú¢ºÖµD€�f (4sÜDM€@�_Š5ß�žýʱ(ÒMÇUc(š&@€@çŠèßÒ�Þ?ÎEñ®ãcêÖÎè0–! ° <› Ðm�ÓÓt€ScõóæbìåIâd÷ èöñ ÷ŒR Øšö~ö\ôÿñ“±õS§û´”ØöM€@‹Z<¸ºF€@u_ŠxØ~±æ%cÑ{Yzc=¶º–µD€�ö ¤›ù]Ô�âŸfbêψ¸»½=Õ3T# P�³Vè�À…±êð^¬H—ô~6uû꺮 @`w¤ëûß_ÄÜ?Ó—c‡öA€Û ‘À;#ö;6Öþxº[à+Ó�ªžWDo刚²[4Z ÅlºŒêÓ©ÿð•˜ü·t·Õ™FwHðÈT@ Ó�íØö8ÁþiéÆ�/NSZÓLÖž÷ßv ±Þ °h�¢Ho„_J7ôû`º¡ê‡=¾oÑ€6 @€À¢œ€.šÌXžÀ—cÿǬŠxIc/‹8ly{³5š%�žÕ÷õ^ô?8ñ�§Ç–›š½h  Ðl€f�Ÿè h¸Àù±êˆ•±âÅéÍ8ýë=ºáÝ>æH×ôßœf?}p6æ>x|LmÞ•¼H€#P9± ° �Þ…±æ™iÍ4+ ÷¢ô¿›.ˆÍJd,pGºƒÿGS|<.¦¾˜þO5 Ô) P§¾¶  0�À‡#Vv|L^4ÒÆìœ†& 04J;"@€@µ_�U‡­ˆ±Ñ;9µ|l:OÂY 0 �¢üTÿ¢”øŸSDÿŒï�é¯�¢û$@€�Ñ (ŒÖ×Þ  P‰Àçâ€ï\s?žf¤ñC©°®’†5B€@‹Šñ4­ÿ3)éÿäx¬øäI1q{‹;«kè„€@'†Y' è’À¿E¬þ®X}Â\Œ=?õû'Ü7 K£¯¯–+PÜ”öð‰Ñ?çÛ±õ¼‹ØºÜ=ÚžòPÈg,DB€�‘\«��?‘ÞðÓ¹|<ãÿoï^£8¯8Ÿ]ÛØ.L"S¢‚ˆR¤¦¤)RHB’^"ÔÛ‡~ïßã¿'_{‘J©P£B¸¨…Ò¦’…ÆURPÊ%›ØÞéoœò!•b2x=û¬´š�ÝÙÙ÷<ï¬fÏ™wfSÈeÜ Ð 49�¿NåHÿo›Zý�¡ý¶ t[@ Ûý+:|Ià\Õ®~Mÿ$CzÛÓ~ntÀ—xÌ�ö(ïx¯šãƒZ<ñbÕÍ \˜y€‘ß 0ÊçjÛ³ýûiŽþ¥(Ð{=;…]£ì!v]È÷ûf’ý?æû}bP«¿±>·‹qЉî/ p#K @`$Þ¨ûVM¿”!Á?ÎÅS¨Ws”pr$‚$�N 4wóïtFúœÈwø¿ªÅssUíP7q€ß„O€�¯8U5½­¦^iªÿz¿šcYÀWiyžÀf 4í…úÎ ªw²_ƒ7ïÖÒé\ìcq3[ä³  @`8†³_´ŠC'Ð&k*£ê‡)ä^¯dº}èªA:/ÐÜIˆo'áÿ“„¿ó�-@l¨€À†rZFG`®jü5ñB¯Æ�¨”bÀÑìTöŽŽ€H <�œŽóóv>íÍÜßúu-žŸ3¤ÿñàûtL@ c*l¦ÀÙšz&ÉÊký꽚ë|?IËs) øÛÁÍ쟽¥rÞþj¾;Íô­A5§óCíÔKµôþ– Bc  @`h†¶k4Œ[_àwUÛgkêH†*çâ‚õrv:íulýÈD@`£š+)š�ÉÚÎæZï\«¥óùÎvˆ¿Øp€ 'µBXOà/µcÏr-§ Ð;’#�G’üä4‚Þ¾õÞã5]ÈQý…üðº�éùŒŽ9?Qg×í«]ˆM  °5¶F?i%:-p©¶c©V^È©m1àp‚=œÂÀÁ ú�\phù�5Ÿà.&Ùÿs†ò_˜ªñ Ï×�œËïF€6O@`óì}2¬#p²jÇΚþnŠ)4ßK%àPS½\S f×y›—É}ÿjS+Iô-×øÕ…Z¼&±ÆžÔ&Øj [­Ç´—:#0—JÁÏR˜¨©™Õêïî×`&Iñî$Â3ýêMgèú×R0Ø•ùéLó¸Éãêç|õ,W½vfù±LÛëL´0y~2ÏeÙ/ny-ϯw�ƒf%Ëzoù{Óüwýõ{�ÿ7]Îr9¾YÍôV’ø&çÑ'q¯4³w3³Ÿåq.¢W72Üþ³¼1IýZ‚ŸØ®�Õàúr-Ý8ž×çÖÞók7K€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ÀÐüSEOg§ÇIEND®B`‚ic11Ô‰PNG  IHDR szzôðiCCPICC Profile8��UÝoÛT?‰o\¤? ±Ž‹¯US[¹­ÆI“¥éB¹ÍØ*¤ÉunS×6¶ÓmUŸöo ø€²�xB Äö²í´ISAÕ$¤=tÚ@h“ö‚ªp®¯S»]Ƹ‘¯9çw>ïÑ5@ÇWšã˜I`Þò]5Ÿ‘�Ÿ˜–;V! ÏA'ô@§¦{Nº\..Æ…GÖÃ_!ÁÞ7ÚëÿsuV©§$žBlW=}ñi€”©;® ÞFùð)ßAÜñ<â.&ˆXax–ã,Ã38Sê(b–‹¤×µ*â%Äý31ùl ó‚µ#O-êºÌzQvíšaÒXºOPÿÏ5o6Zñzñéòæ&�â»�Õ^wÇÔ®k¹IÄ/#¾æø&ñ½Æ\%�x/@ò™š{¤ÂùÉ7ëSï Þ‰¸jø…©P¾hÍ”&¸mryÎ>ª†œkº7Š=ƒߪÓB‘ç#@•fs¬_ˆ{ë�±Ð¿0î-LæZ~ë£%îGpßÓÆËˆ{èÚêÏYX¦f^åþ…+Ž_sÖ-³Tä>‰D½ Æ@îקƸ-9àã!r[2]3ŽBþ’c³ˆ¹‘ónC­„œš›Ës?ä>µ*¡ÏÔ®ª–e½D|Ž%4 `à î:X°2¨�‡ ¾pQSL”PÔR”‰§aeíyå€ÃqĘ ¬×™5FiÏáî„›t…ìÇç )’Cd˜Œ€LÞ$o‘Ã$‹ÒrpÓ¶‹ÏbÝÙôó>4Ð+ãƒÌ¹žF_ï¬{ÒЯô÷kû‘œi+ŸxÀô˜ñú¯.ý°+ò±B.¼{³ëêL<©¿©Û©õÔ î«©µˆ‘ú=µ†¿UHcnf�Ñ<>F�‡Ë ^Ãe||ÐpÿyvŒ·%bÍ:×iX'襇%8ÛI•ß”?•å å¼rw[—ÛvIøTøVøQøNø^ødá’pYøI¸"|#\Œ�Õãçcóìƒz[Õ2M»^S0¥Œ´[zIÊJ/H¯HÅÈŸÔ- IcÒÔìÞ<·x¼x-œÀ½ÕÕö±8¯‚ZNxA‡-8³mþCkÒK†HaÛÔ³Yn1Äœ˜Ó ‹{ÅqHg¸•Ÿ¸u#¸ç¶L�þ˜ hŒ¯s ˜:6«Ìz!Ðy@}zÚgí¨íœq�Ùº/ïS”×å4~ª¨\°ôÁ~Y3M9Py²K=ê.Ðê °ï ¿¢¨Á÷-±óz$óß8ôÞY7"Ùtàk ûµHÖ‡wⳟ\8 7Ü…ðÎO$~ðjû÷ñ]¼›n5›ð¾êø`ããfóŸåfsãKô¿pÉüYqxµá†—IDATX ÍWML\UþÞ@� La´ÐZ7¦FŒ‰ÑØØ�;âÆt¡I%‘.J£‹òÓj7âÆÖUK�ãB«Fv%uí¦þDã6mµ�b:02ü¼ë÷Ý7÷ñæÍÀ Ñûrß=÷ÜsÎ÷Ý¿3o€ÿ¸xÅÿØv/n4ÿÀÛçÁìaÛø›ï2`.øH�ÿcŸ=,m$öº¦ÑÔT‡ô±*˜.îØHP™Z�7¸€|33kù¬I ��í)¤^ó൬¤Ò˜�™ðáMãúÙJ6©¤��€ªì:S…ÔdHpC³^嫊¥˜IXe+ ÃýØÅÆ{<ÉáæufèSü~à°�QF`;_'xwÔhód°%±KäÐü¤‡TÅýÚ "~{“ºX!�öjÔŽpজ ¸�vb…»Ýía 5Çxj[XÃç/J³¬3¬ó¬K¬ë=²‘­|䫱§EXލ%ðPãÝ:Ѻ@×–_¾ÀîÉQ?ðnÀC!fµ×˜lêûOZù*FÔF2±Ž“"­YþDö1 úœähÑ î0“¡jîÝ÷1ÕyõÔW‡Ú@Xf3Ïp;Þy �ÃÑ_½f40¡.Ìþ[0uήÓgÛŠe*¶«Õ§- ‡:ð rT.Fì$K§±(¸|#ÓÉÔ·iÜN„isox¥-–Rø@ÙÐÙÁ�‡�#ÍV%϶XðŽÀ(òvé+¢²"·a¯K€lZ“ˆmRÉ—xüðsvø6‚;]Ü^1VVù.)�Æ$Qx?—Cî½³h<ò´ f½àe=Ìžy™ƒíHe2V§ñ­Ôõ�j.b9…¨£YZµ®>z6uID€læô[ïy­íO¨k‹bø ±µ�*–;³ì6[MäߟÇi´ûyºd»ž‰XÓëé#Té‚WÚ®Á¬o�wQnñp\ÅQ?M«Ñî>¾H%¸Æ’|âqƒ¾wQÜ|Eù¡0bQˆ‡S_[UG «,Œ�[Ëë§ì�Ð&&ù0^¨ûZ:K`+Ÿóã'Á¨D¥Ùiùõî+8}ªßާù–.·ªð%p·ß¡Òêüóê[£È ïÆö?8»[K� /¡*ÛˆÅ+Wíì˜3Bë\ì)Ūh¯ü†m>OÌ´r©Ѫ�l¨›ºFLÉáÈOØ~‚âE)]Qn_,vd¨ämxQ—ÔÈ^Õ�Ùׯ ¹*'ïÁ�R‡¾áíªCf„ª-ý9æì' ȵ>À[+A&¡ Å2L¯–l+nQ¯�pÔQùéÓ)Tñ|ó OÅà}È—|’…+àà~Fþ(W`h VaH±ŽkË>•?æùy‹ŸdQ£Ì¸Ï]­Óò†¼1‚¹Îø±H”m�c¦ö[4´óÄШ,MGí*É$=É%î½s?t×$ ÀºÒÏ2vѸ$O¬Ìœb ò¯F\’ýºœÿ©Ô܉Ú6ï':ñÏ©·‡ç$«qÊÓ”/sÆøc4| …a.·K!.Äÿ³ý¿^b¤Ô§–IEND®B`‚ic12 ý‰PNG  IHDR@@ªiqÞðiCCPICC Profile8��UÝoÛT?‰o\¤? ±Ž‹¯US[¹­ÆI“¥éB¹ÍØ*¤ÉunS×6¶ÓmUŸöo ø€²�xB Äö²í´ISAÕ$¤=tÚ@h“ö‚ªp®¯S»]Ƹ‘¯9çw>ïÑ5@ÇWšã˜I`Þò]5Ÿ‘�Ÿ˜–;V! ÏA'ô@§¦{Nº\..Æ…GÖÃ_!ÁÞ7ÚëÿsuV©§$žBlW=}ñi€”©;® ÞFùð)ßAÜñ<â.&ˆXax–ã,Ã38Sê(b–‹¤×µ*â%Äý31ùl ó‚µ#O-êºÌzQvíšaÒXºOPÿÏ5o6Zñzñéòæ&�â»�Õ^wÇÔ®k¹IÄ/#¾æø&ñ½Æ\%�x/@ò™š{¤ÂùÉ7ëSï Þ‰¸jø…©P¾hÍ”&¸mryÎ>ª†œkº7Š=ƒߪÓB‘ç#@•fs¬_ˆ{ë�±Ð¿0î-LæZ~ë£%îGpßÓÆËˆ{èÚêÏYX¦f^åþ…+Ž_sÖ-³Tä>‰D½ Æ@îקƸ-9àã!r[2]3ŽBþ’c³ˆ¹‘ónC­„œš›Ës?ä>µ*¡ÏÔ®ª–e½D|Ž%4 `à î:X°2¨�‡ ¾pQSL”PÔR”‰§aeíyå€ÃqĘ ¬×™5FiÏáî„›t…ìÇç )’Cd˜Œ€LÞ$o‘Ã$‹ÒrpÓ¶‹ÏbÝÙôó>4Ð+ãƒÌ¹žF_ï¬{ÒЯô÷kû‘œi+ŸxÀô˜ñú¯.ý°+ò±B.¼{³ëêL<©¿©Û©õÔ î«©µˆ‘ú=µ†¿UHcnf�Ñ<>F�‡Ë ^Ãe||ÐpÿyvŒ·%bÍ:×iX'襇%8ÛI•ß”?•å å¼rw[—ÛvIøTøVøQøNø^ødá’pYøI¸"|#\Œ�Õãçcóìƒz[Õ2M»^S0¥Œ´[zIÊJ/H¯HÅÈŸÔ- IcÒÔìÞ<·x¼x-œÀ½ÕÕö±8¯‚ZNxA‡-8³mþCkÒK†HaÛÔ³Yn1Äœ˜Ó ‹{ÅqHg¸•Ÿ¸u#¸ç¶L�þ˜ hŒ¯s ˜:6«Ìz!Ðy@}zÚgí¨íœq�Ùº/ïS”×å4~ª¨\°ôÁ~Y3M9Py²K=ê.Ðê °ï ¿¢¨Á÷-±óz$óß8ôÞY7"Ùtàk ûµHÖ‡wⳟ\8 7Ü…ðÎO$~ðjû÷ñ]¼›n5›ð¾êø`ããfóŸåfsãKô¿pÉüYqxµá† ÀIDATxí[[l×þv}÷Ú±] ‚:ŠDŒ(4B‚šp3±šHM*%@KQÛ§ÐT•Ò—¾ðЇ¶iûЇô©Qɪª>ZP êC¨Ó±ê¶¢EˆC«4J¨¾-¶±wwú}3;ëÙÙ™Ý9ã&gufÎ忟ÿÿçÌe�OË'Û‰…VÿÚZQ¿µ Øb!ñù­&ÓÀjM+Íö¨ë:ÏÿIÀºœÎObzà3[Hē踿Ùý’{©Ì£TŠúÇ)V–Fû[¹$�7àúµ8TÊáÌ«f±ª+‡ÄA*ýT|¥Ãĵ�q*‰ÜÏk0Ôe:>/˜ÂÊÇ«�ø •Þi*@îê˜í—n±�ÛߌáPB pË:êPõ63>oZ–ná•at™ Ëpëý -Bs@-ª^¦ë·šÄÞ½+jPý‹ å5è#hï®BÕ™0¤¥8žCæ‰VÜ<í—=ÐãXÞOÛìð/í¾õÖ}.¹Y+1À–w1î{£({‡@inƒïØ[aÇ�¸YB«ñž´C—× y)ÔTê ysW†ûlçXíí¨M ƒ!‘áÅrh;ô3¤º»œ¹l“çðÁw^D+¦mC” Å�‘GQ�ŽW~„Æ�Û€*Þ†±Ü>Û‡‘¾Ï‹}h*+âæè†"yÀšVÔ¢á Ä0E”ò�kÈb£u£dj²ÿÞíúú¼ÁU¾³ï(•ß^Âëb¢À1HÉdÉ€•™ÁTÇJ¤?r§ŠLWƒúop‚ÊGÍç„¶ë«�;¶¡³÷(W­Ž!’P¬*\Ñèì=Ñôó±û¤�>ªó:ÚX:€îðQ¥ZX‘«>Øû[ŒÐuÇX4©Âîƒ4dÐÊ»|MÍ+]\� xhác¦­92ŽZ¥r!¤¦¶?†Î³ò!™®`…ÓyöRÛ·†Ò_ÉU^ÁIGé*ÑU hDÛ6>�­2Y%Û�ÐcjçV¬¡FÐÀ¤YÙ#Ø5R^ ¯B1•W:JW—lÁ $cÜê’½/þƒú©�aí™#öª*©…7á 6µƒ+�¶XaƒÇ“Hlqg  ¡ ¦Öt‰D9ËÖžqÂAŠúyÍ)”+Oå ŠŸV„þC.ù‚ˆ´Zb™ýH&Ê*åalO8}ÄNnÊð./µ•ðÖrN0&4e]JQÏX]b¦²Ï*£šT17V°Rðs§_µã\«®ª˜×˜©ò¢'LdÎÃvHt•‚ðòÀÛ^Çžfg‡�÷˜›šÂxOÉ}GDñ½Ž +Ó«ªmÇ|¢¸!Z¢\Ìe¦®÷¹´  ™&SR²fÐ%КœÄ¿žyãüSà¼pRÛÅúþãvU;ˆŽÆDC´D3F2˜ÊMøæ Ä D$µ’J©²¼EºúìŒqõJæó8 �l†jؼp¯>û-›–Eš�p”ÚÔÌ>3°ÒQSˆ.Hª%Õ¯3¸²›žÐóçéƒ¬çŒ çÊ{Mnε÷JbÔæëx§xC€ïçÍÝÉ%ä?‹VoW[1‹Á=0úFxNðã V8­4 hˆVX‰#3q&\z0Àøq‚y±r´¼¯Ú^‘'ÕHÚh„«{žÃ(WÕëï F°Ân¡È«||Ô�ShÒ]¼‚ø1Ã{J(&Õf蚺ÆÏѪ·=!ƒ+{•˜q,{N0­ÈðÚÀwà’+ ã}²&Ìž+žý%?0cC6ðXϵ›<ùº­î*ö•îÂàm$7oØ�âCY¼bPõ6�Ð|)„@¾ÿšˆE¯á¬�[�pZâ§O©ÁRާ“R8ÿщùòø^ÚÄÍK£ÈÜnᓌâ*JµÕWlú+WKsQhD�±ùÈü|Ø7á#ݤ£×…Ðà>-½Šæ6¿ì kk“2tø×hÙUü´öæ^çÊVtê0²%ã¢5ô«ß`Ù3OÍ�õž³7JÎúM…t¬éè�ôì4œáwÐÔU…d¯(¬­ µng ë<  #÷® C4Ÿ%ïÑ5@ÇWšã˜I`Þò]5Ÿ‘�Ÿ˜–;V! ÏA'ô@§¦{Nº\..Æ…GÖÃ_!ÁÞ7ÚëÿsuV©§$žBlW=}ñi€”©;® ÞFùð)ßAÜñ<â.&ˆXax–ã,Ã38Sê(b–‹¤×µ*â%Äý31ùl ó‚µ#O-êºÌzQvíšaÒXºOPÿÏ5o6Zñzñéòæ&�â»�Õ^wÇÔ®k¹IÄ/#¾æø&ñ½Æ\%�x/@ò™š{¤ÂùÉ7ëSï Þ‰¸jø…©P¾hÍ”&¸mryÎ>ª†œkº7Š=ƒߪÓB‘ç#@•fs¬_ˆ{ë�±Ð¿0î-LæZ~ë£%îGpßÓÆËˆ{èÚêÏYX¦f^åþ…+Ž_sÖ-³Tä>‰D½ Æ@îקƸ-9àã!r[2]3ŽBþ’c³ˆ¹‘ónC­„œš›Ës?ä>µ*¡ÏÔ®ª–e½D|Ž%4 `à î:X°2¨�‡ ¾pQSL”PÔR”‰§aeíyå€ÃqĘ ¬×™5FiÏáî„›t…ìÇç )’Cd˜Œ€LÞ$o‘Ã$‹ÒrpÓ¶‹ÏbÝÙôó>4Ð+ãƒÌ¹žF_ï¬{ÒЯô÷kû‘œi+ŸxÀô˜ñú¯.ý°+ò±B.¼{³ëêL<©¿©Û©õÔ î«©µˆ‘ú=µ†¿UHcnf�Ñ<>F�‡Ë ^Ãe||ÐpÿyvŒ·%bÍ:×iX'襇%8ÛI•ß”?•å å¼rw[—ÛvIøTøVøQøNø^ødá’pYøI¸"|#\Œ�Õãçcóìƒz[Õ2M»^S0¥Œ´[zIÊJ/H¯HÅÈŸÔ- IcÒÔìÞ<·x¼x-œÀ½ÕÕö±8¯‚ZNxA‡-8³mþCkÒK†HaÛÔ³Yn1Äœ˜Ó ‹{ÅqHg¸•Ÿ¸u#¸ç¶L�þ˜ hŒ¯s ˜:6«Ìz!Ðy@}zÚgí¨íœq�Ùº/ïS”×å4~ª¨\°ôÁ~Y3M9Py²K=ê.Ðê °ï ¿¢¨Á÷-±óz$óß8ôÞY7"Ùtàk ûµHÖ‡wⳟ\8 7Ü…ðÎO$~ðjû÷ñ]¼›n5›ð¾êø`ããfóŸåfsãKô¿pÉüYqxµá†'™IDATxí} ¸Õqî?s÷Uë½’‚ 2’�žAH2;ˆ¼Çâ-Ï6!Û08v ÆIœÄ0ÏNâÝþüÌ"DŒlã„°ØïÅ ˆEH2I‰UÒ½BBw_§ó׌æ.Òhº{ºOoSçûî�žéÓuªþ:U§NõéÓ€E@PE@PE@PE@PE@PE@PE@PE@H ©¤RÎrtcêŒj¤gfP93kº…Ô *¶•“,X�Ô$Àjà÷FW«zþÕ„Y?¿÷°Þ t±^7�÷¥�z—ß÷ñ¯- kW©]i m@fGöì<ˆ†~�êb¢°6´4NDúX ½€†9Ÿ†9‹Fy4?gR„Zþ…Qúè`v°½ÊÏmt›€ÌÆw‘y±ít"Z¢Ž€:€jhÐ0Ó—V§Ñ¨qD_È‘ý}õ‡ýlœì™h²ì¥Cø£ƒ{Û°ó¡÷½É/šÒ¨0¨—­Ì´‰ß;—óà?"Ðá(Ï,¼{¬.:ƒˆ×Ï^ÇÛ�Ìä…¨0ê ZObxÁý8ÉO0ÐD‘´:8Mø9§ 7W¡íÉ2<QÕøó~4O®CÝÅÒ—3Ìçí:-~#ÀéÁ‹ì°·ö¢ûŽ èØë7ýr¤§À£Ö0}G¨«s£}êàÅ5©ëå…°ú9Eø9¨?¨Æ®u…ëè¯NˆÉ}e'¢Wç®Æéô�`Æc<|š#þEœ¯ªñ¦‚TMóôӢхè$°æÔ�F.”)I½£0ãO8ú\Ã8×Å¥ZÕ0œlfgþÞ[عò}@ŸáæC^€U¾TÏÁŒKiø×Òðßãà­to²Sc+vÞÆD ×i)†€:€"è¬*OÁôOsŽ f‘ªz*bÐð…Ìÿy»W.¸YK!ÔB…ú~L»�ÓʯÑðyZK\ #àÌ-s} vÿ”20ˆÓ2ucÑàñZ¸¿ò‡ô|GKr°g ðÅj´¯OŽLÞ%QpCy¦¾Õ_ç q �_3ÊÞûV)XêvŮս rê)ûŽ.óü≯¦•[Éejü´[ßXÊ:öËD×¢sѽo¤cJ¨¬#€´.Fú–4ÒKbª?eÛdž­@æòj´qß‚ò,eÈ“yý˜ñ÷\¶û¬yv|‘Zt/}@ú‚ô‰rD¢ì">¨sò0*ngvÿ˜rT¸Ê\Þ-ØR�áKùÀÑo ×Hæ¯eÈ|¯Ó¿–AúQ5þdvf/RIŸ�¾!}¤œrep­øÑ*“-·´(Eà­‚'SþT-v¿Z´bN&Þô¢õâ4R?⌯9úRC Ó‘�uUÚVÖd %v °�[e÷£õö4*îPã¡gžÉt³ôéCoçÞ£{‰ �È ­³8§»—ÞE…„Öß7𙂘$<¿mÛÜ\‡º‰s\àqŽÜEÁtÓÍ8ôÀøð¸�¬^T‹�¿ŒËöœ&j «»¸”÷A5~{Åk ×L’¾•ëc®¯�ì‰p²Ï~¦ÿQþ.—òVDme,ædûÖw¥¯IŸ‹¹0Yöc?hã /›1��z¦>”…¨ qAÀz°».l;H5.<Êg¬€<ÁW�ªÿ¤XÇ*šþ¢˜E€Æ³~ƒæ“…¼QÏ[Ї©ÇX¨ü³ýGÅzå: ðîÀë) �]‹=›ã(O,sÝÜ´ƒ+ûSã�c—KÏìƒGJ_d4Ë(4v@ߺS�Š‡ÈøÄdu%•&ÎXÈì†u^sÌÞ^+Ð�–Ó*‘~� ¿¦8wå=©X�CÈ|¨íkã"alÀã˜Æßp•ϲD ‡NàlFOÄAúX8 û™¬à{äõ�ž8tªr瑉ÁýÀðïóîÀsQÇ"ò  -‹RH¯a²Eß²õÞ¤ü� Àåèít¿ßˆÝ›F~ŒàA¤À~´Ì®DÅoÈdK±S–�¢pÏÁ]L ž6í¯­âÉÈ:€L~�…j1þ÷†ˆ�6­xB€‘À) œ\�½oz"dèâH:€½˜4¡Õ̤¦æ’[É*�!À[„ë;Ðvêï=�5ê°¡È-’qV£úçjü5¨Õ"�sX‹'`Úª(>@¹ Óo¢F?y­*ƒŠ€{njÀ®?s™¹+"taú—)ª¿9}+åpø|Zÿ"\Æ·™€Ûx�= <ÄÐ?ÏY�‡Y¿)y¬avðq{±Hì, ð.÷ð«Dj™Ñm¼òýD?‹ï ìFfYn†>�Wù†Æ{ÕøÛßU°ƒ`_ŸT�Ô=QØm8ô  Ón%>—„‘~UÊ�Û¹R0Ô¾ª`BäÓœó¯,M«ŒŠ@a2—6¢}Eásæ Ít`ê\Þ}–küÍ‹©-(ÑD€Ï tq¡Ð’æ�v % ‹}ødß*5þhvJå*8ÄÄÄ&‚ku´¥PÀQ˜vCÿÅ£lè‘"PΤÓ&n �À§ÜØãT¾¬s�ÞïCÝÚft°†ù2Ò3¹›ÐãAò¨ØÎvNAë†=Ç)¤¶¥Äæ¶¾ƒ¶ïú‚â7Ð)ÀL»N�?(Õj;qC€¶1‡6r}�|ð–ßBz¸gøªîª Ô¶�x!` ¥`-å­Á‚à;�@ƒäÎ(·¨ñ¡Rm#Þ¤*¹Tø– Äœ‹Ö«y«cI¼£Ü+A!�>�6ó¥ Z3>؃)GT¡âefþuÁOÕ6�ït bxÞT¼ó–I�øŽÙRƒŠoY4~†5ZEÀ!²@Hl‡Õ?éð’’ª�ö¢õzÙÛÏh;%I®)‘GÀ²†€Ó&|ɈÉ@ŠÏøO�?ò½LŒ,©6c¨1Âû1õB>ì³*²Ø*cŠ@Làú“°û.쉞x¯?õu +ME üÈܘ³)ÿ%7âæ¢õr&1fùÏ®RTʱ%±)’û>x¨kDË+dšïAТ(~ ÀU´;»Ð>‹¯Éêõƒ^ž†ï�ÿ 5þ<¼ú©øƒmjmë³þP¥âk £ÿ(°z¤ø�£€·Ìö3 ð5h@ë%:úû­v¥§äÛóßÀj ’O1É›}´(Š€!ÄÆÄÖü"ï›XŒ–�ÓCiæß/Í(E bcbkN•ô“o9€½hy’Ì�Xz‘" 8F€¹€§&£ý$Ç©èKð&Ÿ¨Æ_e=¥øˆ€ØšØœ$}™KT òª$<í× �üäŸyÄ‹Öp¹v#ÿêÌ-ÛöCß±§ÑKÍtñ¯ŸÒH¨[EÝ4ñ¯!:ªü"EzÊ«zž¼‰¦) ¨å3Ë©š‚-ÄäÇ}ìN™eó1ãÛ7¢nÙ2¤j�oÓ>ôæ[èZýöþø ­}.ëêÑÉ¢£¼ž†_yê ˜üÙ?AãYg òçkͬ¾ô®[‡�yÒë6a| ~CÈêïFßïAç;^˜ðìöaêÕÜêëû^˜ûZùûN\ˆYkf~Õ[PÔqß/ðúÿ9& ôfG›°eKBû•í¯®Ã‘?ù!šÏÿßÞD¶ÓÎCíS d¾4 {~àÏà´n"‘ã¼0öµ»8úùëûаüt_XéÛô"¶�þh|·Í x´CFþI0ëÑ_ vþ±žhå/îf´öúYŸÀôØGx‘{x²=OqÐnnøwã—N!sþú“|É©dû˜tÔY�ý;º&6C:°–ÒÈ?1ôÓø…ѵè<åX±A/rxr•°.óÒxT®•®àfÎï„ouNP:|�ã§#õkäÏ·&ºN„ùS ¯6X²Ø*‰oXçó�lÄý/ß5üýÌ:�GŽ®  HÎ:î8ÿ`%˜ÍZã_Ø_X³ÁÈcXïççl±°„v¿–ì¦bÊy¼Ùl×@lÎ[ì þjçÏgG'0A§:Cvä'V‚YíÎù è$KÓ/q¨"6(¶X*¯%;€ R”Úh¹]W»0ç:›4'PL÷㌟˜iq†€[,ɼÍ< ÷)ûH"(bìfA‰3•ZKœÀìÇîGGs3ös*�ìü’C0l²#ÆŸ¬ Yê#ò(þ¡½Îþ—’@ &�ÙÿF{òZc,âæ]mN»¨« 5g&Íø�eº^.¸� M‰ŒFŒÿÑûB7~Óº �~*U…ê3Ý´ïÊ !åÏó²n8,£º#Ó�„9�qƯ ?£=š6z†›\9ÎPO—YjÿÜ€f²nÞ tpqÇZ²ý"Ëù#düqǵÿ®iÇ`0�•ßo²ó+íY'°ú¾¬áÈþwq-¹‘¿ Ç0É%ã�+žNø[uRWê8v�˜¼ŒóÇõ�2�zÑ3²úãbŽ8�ú¦ì&˜ÑÀÉ9â¸:É{t�?z:wŽn±š©tÎV‹Õ=çÆ }Ù‡|´i=²C ëÖÐ Ô6ÆÊ ˆñ‹ãšCÞuä·Ó²‘óŽmÕ±àJ£EFXU¢EÈ:Þ6‹‹È?–¿ð®%xÜØªcÀ�’ý˜–©�'| [¿X Ýy'0büäUx6¶™‡˜o–ÁµèÆV9€ àʰŽ.’y̦ªâz>8Õ”ÞRýñ‹8ªÞ“u’\‹Ö“D)⨄×8”¨aè?´ÕY/ƒ+ËG`:&Ó�'5襈T©?aqÖ tF,'�MøeÃþ{bcüQ©!6R©I˜ìh»pG€\&;ü7¤d£æÆ?”–È àÈf9>5åˆXdDO8#Y'°ún„ ¨ñG·£9µYG Íw’'sý_~Ö]E޳ú%Çs��@Uo¿Ã�´)m â�âYòúOÞ'mö':q´á™é„X\ëˆúã¸Ut.ø6/ÿ#Xƒ]Ù—’¡ƒl¶¿ªs×0~ÉÊǬäM>fl;f—iâ9N*;ŠHh¦bZ'xê—�€¹«†¤¦é2bül³~éñ¦›Sú%"À[�ïu²E˜­xõ|sª¤-‡Kä]/s‰@PN`œñÓñh‰2©Ê#0ñ;m@jgÚÑóá#�u¿^e,Pã_Çn9àŠÀ÷Ú]cëR°fÚÑóÑ@ þK1×€1~ÒG£%6Ø:IÀT«ä˜“\ÌÏœƒCOœÀ14ÔÍg^ˆÌp·çÄ g5~ÿEã'í¤ÑyÒû5§î­vúrà0%w ÐŽTœÏ³;Ä0“}8Ä–-ab�N`ùE@Ö ®fñß»xº³¢sÿÿ]šIÂ(ù}:«ÛÉÅ5ì`?N¦ÚÑóÑC A¦tbÀbÈnˈñ“†ÐÒ?h»-v\ÛæF¨°C1¢ç³N€Ó·N@�?¢ uÍVŠÑ{ñbë†Û0¢xz6LNÌ%�:�ã§ãБ?LÍyo›¶ëÝp®4E&Iþ3� êûÝïÚô@!ï:PÏ-ǯK9×QÉ9¿?G˜Å4f¢ó$÷i‘�ÚÞ¶ß21KKÿ•„ÀpG6-:mÿ|sI×ûu‘ô¼GJP_0'�ùyn³ýaûM?Îb&Øiñ„€­íÚÞàb‚jW¯òÄoˆg Ńƒ*ƒí_º)ºå–Ï_š� ¼‡?ïÑUxù Þ@oæÊˆñóœÔ�),HÞ~Ó-xõš¸[-õ!Ø…È‹v#]…Ë�kí´�FÔÛÑóöLcÀ)[:x˜EnçÍ[}×H$0Þø—„ÉZÁH°Òâ>d»„ßÖЋØÖñÎjØLw8 Õ1ç®ß d§«0´`.†æ“� ²÷ùCTCû¿ÞJy}#Á*7C7É�i�›äÝmFî¶¾mÂäho1g,E³–É® ´ó §*ËÒ,éèV:…Ö?ýLh€ˆÁ¿ÿé_‡Öþ؆ÛhüÛ¯¾.‹�`4³±õü<–6LêÝO^K§•â^žÅKŒîÅú¬Œnâ¤ÃKÇ/÷Òö¯·�nä/wD‚•ß6–�ðZ3¶¸@n1ï^¥àB+´|ö²ð±åö›oëWÿÃ~d§H‡°BìŒéå�ÆÊó�BÒ»8éøbbåVl�¿Ü1"¯%9ޢʼn�õ!Z 0Î üøv-D“d;e-:òG“íØqÅ/¶Sî.šá�€âTb~Öd2HfBÿpmHÒKžØxõϯå_qiö3©ÿ²ÆOYEæ|¯�¬‚—`WQ褿Ӊä#A‚·ûì±u$ÐËîëøuÃv FóüáÌÓ/n‹w·6“s_Í6˜T'�3þ¯fe™‹—puRœ·xœåÀÝoÇ©í€^Ä–ˆ]#zÞ�±N@ %iÅ�ñ'Múpä¡íÙµlÐC¼K"GÙŠýySéftÇ:™4´\žŒé@û-œóûíGþ1=I°s�ߘ+õ�pânû0…m@:ï(šÁ!0ê®Eû­+‚kØPK"CIÆoˆŸ2#»×N^Û€‰˜½ÉN>AgžÓó2›•?§EîLáß¶/È |æ~‹_㦒u‘É nê–‚Œ[�”ÒFØ×PF[`0‘°'lAʱ}yŒK G ¨ý¶•±ƒ@xοí#i±“. ;±][@¿­ $}�8�«þ&VN küäY˜H�'Û¬Õn׺­`¡9; ž�›Pã7Ø\’v2°Ípc†6ËØr —¬nedVh ø�ÅÎ9 Û8ªÊDz꥟6À¨w’{n¿“a¿ŒüG~2GÄΘ^¼‹y b»vLÚ:€~X;l+Ùµñó†LDj¡/«Ú¼”jÔÖ+40¤R˜zɧ¼�óýZ1~áMŒ_xõ*otâ;ˆ>LÃzÃŽ¤í Ã;ìˆèù`¨¡a‰�½rÕ_cÏŠ ¦Q­/yãµD� ¾ilj­8=;wr9°–( 5'�5~:$qLjüQè!y¬á.ôyw$gñ #;òdõ3|Æ9�;~Cjü¡Aï¤á×—p[U»Š¶€È ½ÃŽ�ž�'påW°'' mÊTDGþ`õî´5¦O·:©ë(¿GbÛœ‹k�lÂɇl}Aù->PÍİài/?æV ZØJ' -L½ø“^È9¾vÏÊŸ°ÍœñçVøù/[N'L%Ò‹)�8ÑpEnçïèm4Ž"N6æ7dòþwàñ™£/ÏLeŒ&D$ mˆÃ‘6]=Ø3ßÌa–kÜ4}"¬âÔf:€L€AM@:7 �»§Yã×°?�zo‚7bÙ¬#Ð�Nc,«%²Œs+ïò�ÏQã—‘_oõù°¯-nÔù['$9€c�.L¯:!¨uÂC`Ä HbÐG' ´$ºÈ…ýjüáiØYË´Õmó�}¬íŽ’€B…jßD³m)ư‚éÐFf›òDÉ­Ì`K61ÈüÀÅì©Y1~¡%Æ/´ƒ’Ãt;¢sÓmxÞÃÅb«N/wì˜Ë~��~Ì)áØÕ35Ã1õŒA€ó‘@Î ðîÀ§/*Rûð§öܹЯâÈ/Ø™ÒËáÅŽý±U§B8š1ÿ“N‰j½ðuL þÛO]3ºñ»æX/È#àÆV; ûש;ÎC�Ï'ðæ\8©êÈx#ʥŕb«ÎŠã)À,`?W½ÄYàqÎHk­ñ„3ã̯Øò…¿Â`[;f\sÕx¶ú¶ó{?Âö¯}›s~YÛ/%¾bËÐ×äÉÆg/‰­:Ìq�#h­uJXëE1äVòî¯} ?pö¬º™îîåX~“sRGêæŒ¤ŠÄ�Çܰê8¢2�ò]-ŸwÓ€ÖÍ!öX#ŠžÈ¿þ—·âµÏ]ƒ-Ÿû2*«so~è¤Á[häù¼á‡Ío5³ÿ“(cÎF�ãæÊpƒ�5 1ˆw¤ÐKÄÀsFnax ·m|E,%Q¦EÀ²ÄFýý𿸚�îÝÌ0n<<9='ÄðÕøã¤±â¼ŠmŠ�¯5þ¬«@.åŠ_qø_8žL¾zêÌÔÓl @Ü^щ)½Ø·»b›n™väˆ?ì¶­¯(A àÞ6]Gÿ…®Çÿ'š÷óyãļ1ØÄ³úcÕ-;¯±?é± ¹]l*y8-I’Nx{~¿Ø¦[H\GÊm†jüÒmCZ_PÌ! 6)¶é¶×@Fæ· i}E@0‡@©6Y’èB×C  ºÌ‰£”EÀ)b‹b“Në�­W’àn£=œÑ>0–�+Š@8ˆ-ŠM–Òºë$àh#ÖݤJ{Ît”H$ŽL¯úœ£iq�€êÄ9X\üs·óÚãk–ì¶ óáYhîàâƒæñ$cúÍÔsûz»ô!Ø™ÒKé\EêJ†ÿo ó‘R™*i �}�ËÊyëá¾RÖëEÀ¬û—}¥R*9�ÖÞÊðãÒR�ÊuœCÁê@ªFv¹÷¹ X`:¨õ™ï�ɉN@ìL”¬®³„ã¯Jðc/•H£óÐùC�—¼0…k«ÈDçÓŽ÷PpÅr׳ÏCèkq‡€`Öõüzw9¬ÝñÔӉЉ؞ؠC± Vóä„"WSyò@¹ øÇŽÑ;®ÿXÃC¾¶,#Íö¿ ¡¯Å‚Ùöþ1™¹»²xmÑñk¤Û˜�¤n).­ýY€u'=Q¿Sqý«#ïƒ6aÃYAÇÚ'ŒÌæ­¨�16aéT0ìCÁR0õRäzÑ­èXt�Xý\.½Ò &r­/CÓf4Ë›(bKPöÈé¡“õ”ÒñK-ª„°2ʈsÑR:ò^ú.uRO�4”ÎN”®\5Þö|§4¾8€—Ð|"Ÿ+2Jè(/Š@’`zô¤÷£ã)¯2ú℉Íh¢H�è•!½^Pì°žš‹Î“ìj99ï9�o„·¿Ÿ?ÖOE@0‡€Ÿ¶æ[°¨œ�¦—Ì2'ºRVÊ&Ü_Û…ÎÙ˹JÂ$|‹„!f%¿ëSJCP #ÀÑÿÛ~¿´à›b»Ñu;óçoɱE@ðë­wÐu›ŸT}uôL}ŒþÞO•–" äÛ:�;£¾_€põ[tÝÂyÊß8TBŠ€"À•Ökb[~CỸ ÑoøÍ¨ÒSÊÚÔ×ŶüÆ å7A¡'w¦¡éwÜ+`¶ úJS('8úoÛ�Îy~&ÿòøùaa”ï(»>߈~*Š@éЖ®3aü‘‘à€¨©—Ðô£€e¥‹®W*å�GÿuïG§¬°µL áiC†,nrM2kégL:6ô´"W,nŠ–ú2¹7bü‚Š‘)@îãr›¬Ê×OE@p…ÀªcÑù¸«+\V6ê„—~ ÿ#}‡€KÅhõòF@lFlÇ4 Æßý/êüªøˆ}êlÓÂ(}E 9d¾º=Æ_Ág<…¼ˆnyRð¹ä(G%QŒ"ðÜ›1Úˆ,9· ‹ª‘z†wL&�¦ (&`ÖhÖÒÅè~Ád;yÚ�DÒXN ë;ù†õSP !`}'(ã—Ö‹¤1®¬mAÓFz�9ò]‹" Œ"ÀÄßÖvt.XîáE£Ôœ;"=Îe¼­iæ�ÎdÖZŠ@°†iŸ Òø¶|ù-þ‘K¾|ËÚ¢"U2ß<Ý4w�Fyá^B÷uŒ̼ö%߈~*±AÀZŸ³‰à%17 in¬g„4/¶¶¨DÎûåuK “ûi_B‰DÌ…èÜ< ëÊàEÖ�(!�¹2,ãBsÒøBtßÁ§n—c-Š@"°bºW„)w¨@ïGç•\ü°!L´mE h¤Ï÷�«äC.¡åÆÊýjfW¡jW Nû»+ID€Æÿî —ž€þW–/ô@ ¸ßùEFׄÝ#´}£Hg_¿0 Æ/‚FÂ#¼úK‚ø}Pi[‹")X#}=¨öìÚ‰Ä`,“Ñx3™ºbìoz¬$ëÖùè¾9€Ìr†ZmE%Ó“Š@@H_Dæ,ŽürÇ*V%69€ƒQÝ€š¹@å¯x'óȃÏéwE 8¬×S4ˆî“’hü‚A"#€±ÊÝ€†‹3Hýˆ‚6�ý]��bpe_7*ï®XY¬^ÜÏ%Þˆ‚žAíÑUHÿ„w=OŒ»Â”ÿ È<Å%矒H2ˆÖÂl#‘S€ƒ]оW�>MˆùRRær´(…Èö�¥¯”ƒñ eŒUõzÔ�Ìäàíü혱¿ëqÙ#°… Ê.�ãz~/š+‹`,@¢àt/brç4‹L¹[CÒ¤O”›ñ‹ÆË.ÛÍŸFÕÂJTÞR�4÷lÔRn #ó,oï]þ n(7Ùóò–]�\>Eñ ÷$.íü2£�Ø/ë+›CÀê�‹îËÙø¡²ŽÆv‘ÇP?ƒ÷ ¿Îß.!,eíÇâ’¬c+CyVt×žŽž�É’­4iÔ„Û3¨_\ ëÿ2QxòA§ôkŒ`‚ïÉ!¤¾ ›ÌÆX ßYWPÒÔ3¨»0�Ô�|°hvá*úk`‚o[Öß-EïOÉ/×÷h‹€†ºcÑ=¶ØaV=€žÿÁM/g¿Ù1zJ�â€Gü×DwÔá<Ñ%yVã/ 8� €rðOwÕ³Qÿö¡¿åjÂ÷|^¿G �Ì[Ìá|ãôÜz0%΢ȋ:ZY Ô6£þbv°kÜ\—jUÃpxßÌ7ðþ°=+˜¼é5Ü\bÈ«(A•70 ø(ê?Ìùå_0Y(KŒµ„„CýµÌÓ|ç?ÐóŸ7p·Ž�؈m³ê<ªŽÉÂeL¤|‰�ðcŒ j<’ÓË!`õÓùÞOkÿ>ç÷ë]¢• "   ,î|MSj�¹˜{F]AP™<Ôâ7 ó_æ^o7!}çtîñ›~9ÒS`@ëŒ Ná-DÞ=ÀÇ °îCàcŽô|ÝVê>~Þº½�{ ¥—@@@Püú)—4¬“7_@ ?ÌŽÜèídÓ±º9Ú?@ïî@ïÃË�¾dËžtêž«E݇˜/8Ÿ;ý/6;9 ¦ãÒÌ^îÀóÿ8¯¿·½j&?µ©çq­p]AÅl&œÇÐVÞx|�ËlQVv]þsLž>Âõ¿ÂdïÛ3…¢%HÔ‰öaÚz�- ŸÉÓ§Ò N¡A,¤C¨ÇD_–EÞ·“ï�tfëÉôã{Ð÷ô9@wá.k–bÒ¡ÊZGYáW�ͨ;ŽN`nYÀ» ³8šÎäÉ™ŒjÃ@ˆíKrnÛßAž¶‘'1ø�LÜývy^›¦A·© hÄ ´'{4ÒpMg€}§Ó([¹4v2�'òx"�µ�Ÿ�<_%Çt$Õ£¬XÝ<—]7OCÞ'¿ó;3ñÖ»¬ÿ®…Ô>ïæñ.žÚÅdÅö.½>S?Š )Š€" (Š€" (Š€" (Š€" (Š€" (Š€" (Š€" (Š€"6ÿ “k¬ž˜jIEND®B`‚ic14\k‰PNG  IHDRôxÔúðiCCPICC Profile8��UÝoÛT?‰o\¤? ±Ž‹¯US[¹­ÆI“¥éB¹ÍØ*¤ÉunS×6¶ÓmUŸöo ø€²�xB Äö²í´ISAÕ$¤=tÚ@h“ö‚ªp®¯S»]Ƹ‘¯9çw>ïÑ5@ÇWšã˜I`Þò]5Ÿ‘�Ÿ˜–;V! ÏA'ô@§¦{Nº\..Æ…GÖÃ_!ÁÞ7ÚëÿsuV©§$žBlW=}ñi€”©;® ÞFùð)ßAÜñ<â.&ˆXax–ã,Ã38Sê(b–‹¤×µ*â%Äý31ùl ó‚µ#O-êºÌzQvíšaÒXºOPÿÏ5o6Zñzñéòæ&�â»�Õ^wÇÔ®k¹IÄ/#¾æø&ñ½Æ\%�x/@ò™š{¤ÂùÉ7ëSï Þ‰¸jø…©P¾hÍ”&¸mryÎ>ª†œkº7Š=ƒߪÓB‘ç#@•fs¬_ˆ{ë�±Ð¿0î-LæZ~ë£%îGpßÓÆËˆ{èÚêÏYX¦f^åþ…+Ž_sÖ-³Tä>‰D½ Æ@îקƸ-9àã!r[2]3ŽBþ’c³ˆ¹‘ónC­„œš›Ës?ä>µ*¡ÏÔ®ª–e½D|Ž%4 `à î:X°2¨�‡ ¾pQSL”PÔR”‰§aeíyå€ÃqĘ ¬×™5FiÏáî„›t…ìÇç )’Cd˜Œ€LÞ$o‘Ã$‹ÒrpÓ¶‹ÏbÝÙôó>4Ð+ãƒÌ¹žF_ï¬{ÒЯô÷kû‘œi+ŸxÀô˜ñú¯.ý°+ò±B.¼{³ëêL<©¿©Û©õÔ î«©µˆ‘ú=µ†¿UHcnf�Ñ<>F�‡Ë ^Ãe||ÐpÿyvŒ·%bÍ:×iX'襇%8ÛI•ß”?•å å¼rw[—ÛvIøTøVøQøNø^ødá’pYøI¸"|#\Œ�Õãçcóìƒz[Õ2M»^S0¥Œ´[zIÊJ/H¯HÅÈŸÔ- IcÒÔìÞ<·x¼x-œÀ½ÕÕö±8¯‚ZNxA‡-8³mþCkÒK†HaÛÔ³Yn1Äœ˜Ó ‹{ÅqHg¸•Ÿ¸u#¸ç¶L�þ˜ hŒ¯s ˜:6«Ìz!Ðy@}zÚgí¨íœq�Ùº/ïS”×å4~ª¨\°ôÁ~Y3M9Py²K=ê.Ðê °ï ¿¢¨Á÷-±óz$óß8ôÞY7"Ùtàk ûµHÖ‡wⳟ\8 7Ü…ðÎO$~ðjû÷ñ]¼›n5›ð¾êø`ããfóŸåfsãKô¿pÉüYqxµá†@IDATxí�˜eU•¨×¹·ªºRWWÇž€t CÓä$Øä$ˆ FÄeÆq†q|Ψ£ã“y3̨㎈ˆ’iÉ  $u“iš&t•ººªî=oí{«ª«º+ÜpÂÞçüçûîwï=aïµþµÏYkÇ#Â@€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ÀÖ¼­wð°�Àë"õm²ÃÌÉo—™å‰×ªŸ©žø­¾þýÖÿ-æ[Ä«ñÅ×ßR¯Ÿ½É›u_í0­ û‡ý7?7é§gË>¿Ïéܯitèï>Mgƒ¦Ýn¾5oý]øoö­Ïˆ¬ê—ÌŠ•òöê]F¤µ%U~Aö °ÇH’Rí2yz½Ô̎ÉîìK~GuæïR;©£�©Žv{ý6Ý¡Ío×àà HV«Ðoj€ðgO2ÎKî�Œäßꑞ·Z¤c­C !*G€ q&E! 'ß “÷ÐZõÜO¨ågG=‘�(ðs <¢AâíyñM’wt"’I€ ™vMµV½2s�/5ÐÂýA}�ë<|6TF@Ç—4 ¸Ñ“þ›êdµ™~È�Ä HŒ)Ó­H¯l@^¼k¿®qú:Ÿ ÁÐ`à5/rcFü_×É;O›:©A zÑ3'Ç€ôÈÌyYÉž§k蟫y·€’%LH@[^Öw\““ÜÕõ²Z—‰`ƒ€{ܳYª%î�¶Y“DÎÉèÇ;(Õ0PÞþ"ù«uå¡«'ËÊU–…˜�À„ˆ8!nOŠÔî#;œ¢ó¸Ï׿}ý–᯶�[<ò‡À ]€È¿CÓ+ž“·ï8°ðúäÁC|CÀ>öÙ‰ôÈŒ]Ej>¥¯‘ý¸T}%.\!à¯Ò1)WŠô^^/k^vEjäL€tÙÛzm‹µýíÎP§ÿ9­ñ/ÔÚeÔz«!àØôýEâ=àKþÇÏÉŠ[h›G¢'ÀÃ5zæä8 �nÙaGÁ¡ÎÙ×?µýQ±ËqÚ=°"/r¹Î$¸¬QÞ~Ëqu?`D—Uè“Y‡ë(þ¿Ñ‚x¦ìc)^—�‰ì%È›¥ˆoÖYß«•U—x§A p�#%Á‰›ùÛÎÒ}£NŸ‘üãx‚ äŸÐ–�ÿ|NV^O÷@‚Íl©j–&‰b­–“[¥æB­ñÿ­¼’¨#:A Ú"ð¶¶|wƒô_6SÖtT’×@ \åãü² ˜¹û5’ùBV¼‹ôâֲइÀ†œø?ì×îÖH�ÑãÒ” .ò)Èw“l÷nÍÿ¥ŒÈùªn} TFEE G ^¡³.m�o•(é@`8€á4ø�MÒ¶‹:þÔ5Ó?¡}ü,ÚUI'�|Ÿ®'ð .i�•¯§“Z‡E€ ,²)L×8þŒd¿êIþc8þT‘@^WÌ\åKî’zYùZˆ‘tŠ¤ÈØa©ºIvØIçðMküŸd*_X”I†@¾ß¬0¨k |³AÞ~&¨†@5ôR~m»ì0£^ü¯èJgŸUôñ§¼< ~”|}÷�ü¨G¼KZäí5QæL^É!@�[F¦ÉZ™ÖÒ(ugEþNküÍ‘eLF€ÀVò�:…ð;�Òûíé²®}«ƒü…À¸ÆÅÃÁáÐ7ó!Û}Fküÿ¬ŸÃ�ñˆ“€¯­þ×–?Y(Ò§$äíwl«¤=²ýIZX¾­«÷í« dŒI@W|Q?_¬—wŽy 0@€€¢0.�^™¹@¤ö?ô¤cÆ=‘ƒ€€Eüµ!àâ:Y½Ä"¡Å2–Äq6È”©õÒô-�Ò§Mþ¼¤Ç» J'àçÌ›7KçצHûºÒ¯ãÌ´ÐEÚØ °…À7ÔÛksÿ…õÒ¸L£C]ºç¿…¿ à/kîáIÒô²¹§¿¡7³KÒ#køhŸ±39ôJÛ¡¾d¨k³? �0K2Òÿ—ú âG¦êTH€ BpIºl½´¶6ɤÕ•ÆþBG÷SKH’qÑ#øyíÖûï.Ùü婲aÈCüI€Ô™|¤ÂÝÒvNF2ßÕÑýÛ�<Â?@ ©t¦Àмäÿ¶QV^›TÑkb3Jä=Ò6[_Ø£ÍýÞ‰‰T¥ �øw닆.âý% Jà)4÷&Шã©ô� ¿þZ�ÿ³8ÿñHq i à�hž:Hð ß`�` >BGZFàHöŸ™±›Îé¿\›û�H¶¦h”K@»é» ^Ö¼\ï&ZÜ´[YR›%|{d»¿÷¤n ο,tœ �Ô0ÏóŒ0Ï óÌH�â)V”€„¿GfÎõ¥öé–pUQˆ@^äQOú>^/«—”$ÉXH€ ��Hžöë}Æ“š§qþ%¤„€yf˜g‡Y@HU¦¢˜P»cضSfnW+µ?UÕNM z¨DJÀ¿£Oú/h–Õ+"Í–ÌB'@:âh3è’¶Ó³’1ýx]o´èÉ ‰% ×ä$A“¬\”X%S¨@BŒþºHýö²Ý¥jпÒ;ìš»¢ì!àû¾È÷ß‘_ÚE¤Ç¹�¤R8ŠJÉYtÝf™¾»Ú½F§ñîg‘Xˆ$’@þ}Õð9“díÒDª—"¥踱7ÉvŸÔ¹ýOâü7$âCÀ™ù"uOŸ=Î� £ Š »ÞiÜ,³®Èˆw…6ù7¹ 32B‰!Ðhž=ædžE‰Ñ*eŠÐà Áunÿ<]¾ó:jý‘!�8ùgô}g隯$Nµ„+Dà˜�»eÖ}ñ~¦#ý[q!�„ÐížøŸj”U7&TÅDªE€#fÕê~¶[Gùë«{¯Çù;b4Ä„@J˜g’y6™g”yV¥DmçÕ¤Àn”–i“¤ÁŒò?ÁqH5�ü=›eÓ¹S¤}]ª18 <€åFê”¶}t°ÍÍú™c¹¨ˆ@ @ /þ«ú9³YV>{ Ð`¯mÄô÷׈÷Îßb#! ° óÌ2Ï.ó Ûæ ;¬!@`�)Fâm–í¿búÔtŠ_óˆ#ü� à¯Ù<Ã6KÛWU\Z›-´F±Ì(:�fÒ»¤í§:Í‰†8€*" ÓùgYùéy"›+J€‹B!@ ÖÊm—É3ê¤ùf½úÈÊRà*@Öx¨W:Ïl‘Ž5ÖJ˜2Á,1x�ÌØ-/5·Óßo‰Aœ€¾UðõŒô�Â{G[Q‚Œ¨[°µË¬Ã}©}ç,WRƒì" ¯)ß%/uë3ï»$K§41Û½Kf½¿N²÷iSÌô˜E!{@¡ÐgÝ4}æÝ«3Î =32—À¸xÂ=Ø#Ûý¥® uƒæÒnN¤@À* f†€>ÿÊ*©R& @Lï’¶oé̘ïë‡e3c²ÙBq0Ï>ï¿ôYxIœR¤9o€ˆ­oÖÉÖ÷hÿHkþ_‰8k²ƒ `}þ£y&ò�èMÃ,€™¿ R7[Ú~®süÏ�0[²‚ `=]+àš×då'÷éµ^Ø„H‘!ßiœ"Û]¯£`O‰(K²� à�&xÇFYqÖ¢+¡³…N€ tÄ"«eÆä&©¹Mû»ŽŠ ;²€ à2�?tIß©3eM‡ËJ¸ ;@ÈVZ'S§ÔKÝ�êü 9+’‡ �þ£=Ò{ò4Y¿1! Y©@ˆfÙ S¦ÖJÃ= ùÀ³!i@‰#à‹<Ù'›Nh•�ë§œ% 1 $C˜uýë¥á·8ÿ�“, �hæÙiž¡æYšhEcTŽ€àwHóÌŒ4éê~Þ¾!$O’€RC@>›—®ã&KçêÔ(‘¢´ ÚD«µÒt/Î?`°$¤’€y–šg*-Á›Ÿ€™®—ÖÖ:™ô€ØýL–¤ ¤ž€¶<Ý+›N• R# ´ÒŒöWçÎ?  $@`ól­—Iw›gí°Ýü¬‚@ð/5‹ü4Ȥ۴€2¸�o@–€/ÞÁæYkž¹Á¦œÎÔª´»YÞ׬ð§SVެ2).‡ � ˜g­>so0ÏÞ Nåð&4ÞaóòŠ� kû ËûŽŠc€$ ƒ×NÞEÚ®4Ïà“M]R ¬Üäž¾Áê�~®ò$¸€*% ìÇ ²â"½^Ålå  \bçwKÛ¿àü+„Çe€  ÏàÏšgqI¥2 Z*0{—ÌÒZæ‡\Ê%€ 8�üEM²êG�'›ð Ê4p»´�®�N7éË}è{*“§C‡€ŸË‰| EV. 'ýd¦JP†]»eú!¾ÔÞ¯—4–q§B€@øº=é;¦QÖ>~VÉÈ� D;n”™s³’}D�Í,ñNƒ � 蘀Õ9É>EV/�0[g³b` ¦3/÷©•Ì�8ÿ`q  �˜˜g´yV›gvL"8•-Àæ2‹Mè›ýnÖ¨æNp*‡!@ fæY�‘Æ[X(hbCŒÏÈÛYfýLü1þi… {d/>»…nîqŒB0œNiû²'™�Œs ‡ @ÀBæÙÝ%mÿ`¡hÖˆDt4†):dÖ3â]¯µ�ÁˆÝ€ì&àûyÉŸ=YVß`·œñH‡s…»Öü÷Q0�ꡦQ³ €Ü!Ð¥³k–•Ϲ#r4’Ò°ç 2eªBÑ…~pþ[¡á/  4™gúFi™æ¢ðaÊL0Œ®y³T�LºV£EFüãÂO@.0Ïô¬Ô_ÃÛGZ‘.€a<:eÖ¥žx?l?!@ !|ñ¿Ý,«¾˜uªVƒ`aqП0è¯ê"E€l%`ÊY“eÕ�¶J¥\J»]fìªSF×Úÿ”(á“ DK@[6ú’?¸EÖ,‹6gûrKý€·õÅ>É\‡ó·¯p" �  ˜g½yæ›gÐi»–^ꀙõ�ë?ß5Ã!/ TJÀ›¯ÏþVzuR®KuÐ%3?¥Îÿ“I1&z@€@©¼O}@©ç'ï¼ÔŽh—é»g¤æI5)‹ý$¯\£ �Rtç¥ÿ€Y»´”““vN*[^©ÏHöZ5&Î?i%} ”N@Ç€e¯5>¡ôK’sf*€YÒöïôû'§£  �Ê xógɬÿ¨üzw¯L]@»´�‘ÿf^òãn¡Er@Á0ëxg¶ÈÊ[ƒM×îÔR¬’™ÛÕKæymö˜n·Y�€¢$  ­í‘üÞ³dõŠ(ó�3¯4ux�’¹çgq#o@v0¾Áø•.5ãÔºÔïgÔ°§ØYô� €, pÊ€¯°@”ðEHE¤³Qfê› 2O+NFý‡_¦È€€Ëºr’_0EV¿â²¥ÈžøóúÇŒxW) œ)%‚s ¤›@“V¯JëƒßÐ.³¾¤k?ÿ[ºË3ÚC€@9ô¥Aÿ»EV]ZÎ5®�›èÀ¬öçIv‰ŽéHå"®Fä… `¿Ç—Ü‚$¯˜Ø.€oˆdÔùÿçoÏí„$€Ü!`*ŽÙŸ}C}‰;2—'ib[tàßô•�ÿYΆ l!�—üßè€ÀïmÙ“œ_‰ 6Ȭ9:ðïUŽ�É)«h@ r¾HW^üù­²êÕÈ39ÃD6mdÅÿÎ?ä’Cò€R@Àøõ)?L¢ª‰ :dÆ9Úesb�…N€ �Ì �Òvn9‡™g¢ºÖKkk�Ôé{�½¶0¡‘6 ¤�€¿²_zwŸ*6$EóDµ¨óÿWœRŠ&z@°‰€×Vô16ÉT�,‰iX+Ó­“š‡5HTPS�y¹€‚#àû½ÒøtY÷ÇàÒŒ/¥D8Ëoh§�dÿ ç_A"g@É'àyÆ×|#!k$¢@þé›þ²—%¿ð¡! ÄOÀ¿h²¬úQürT'�óÀŸeòôÉÒø²*2½:\ @˜˜€® °¶Cºw{—t¬�øl{Ïp¾  Y&ýœ¿½ É $�€ñ9Æ÷¸®—Ó-�2k~^ä)íûϺnä‡ —ø9­AÐ,«žqIêá²:Ý�ù6θ9ù @Ñð²EMnaäâl°Qfœê‰wlPH€ 0ãƒÚeÆi�gëq'€Djü¿Û ¹ @ -¼K�OrQ['ÇtȬ‹tæ\ŽÌ€ �,¾ø¥¯ vÎ'9蜋–Z™µ\‹ÏÌd!´� G ¬î“Usu.z»Kò;×P#³þNãü]*eÈ @ Ùfø&§´tª`…4Ïš$ ˳âMvŠ2ÂB€@¢ äÄïØ,›æn'�«\QÔ©€Fiü2Îß•¢…œ€ÒCÀø¦iøG—4v¦@ßö·c­Ô,S¸õ.FV@H �Í}Ò?Oßø– ;3u¡V²ÿ¤«þáü](UÈ@ �&e$ûuUýÓ.¨ïD Ài›-’YWýs&`qÁøÈ@AðûõmÁ»µÊÊׂN9èôœàKþ+8ÿ MOz€ <¯¦è³‚O9è­oØ Sv©Ó¾jÿAŸô @ n´Xß�‘:U‰ó£ˆ’& „A Ð `ýŒ«[jÿ¦ï¿6 ‘& @ ~ŸH¯ŽØøz8éWŸªå-µ�ó¯ÞȤ@Qðj=™ô¥¨s-'?k[VJS[�4½®6”£çB€,!ÐÓ'ùÙ3eÍ;–È3B k[&Iã_ãüGØŠ?€ à�ú¬ÈŶŠle Àj‘Éu2óM_¼V[Á! @`"yñÛ7JßλȆ �õq+[ôu¿âü£. ä@AȈ×2Uê>tºA¤g] À :é{™ñ†'™íƒP�4 @qÐ…�ÞyGÖ¼{/�§[çm] €:ÿáü·6ÿ!@ÀUƧµÉôÛ&¿u€Nûû¼m��€ P �Œd.ªæú0®µ*ÐWþê‰whŠ’& @ .Æ·Wþ£åkU oPúÛÑ„d @À}vù8k®“©;yRó*ëþ»_ÄÑ€F#à÷ûÒ?gš¬s´£Q韛:ñòó$ûiœÿXtâÙïk¶]â>½úmþ‡±™(Ô4EÕˆ.œ©ß�ú]§6$…€¹ºõ³Yê×ï¼~‡y?™û§iàÃ�dS)òjt@à_¨D_³A*+ÊÆ“"µ³eÆŸýoC‘(ÊС�§ ê–[Ï9EZ?~®4r€d§M E@¿»[úV®–ÍÏ¿(]¿X:ïº_úžE&묙@ æ$ �N½�̽T»÷éi:ê™´÷žRÛ6S¼ÆÆP„È­['Ý�=%~q�l¸öiÕpÃÜKlv0S_“5;(¢/ Šw³¢Tl�™Ò…®�¹X¯ŒÞy;É»oú…>¬tæj Û¦ÅOËêoý»l¸ù^1a�@ F ËŠ Ç¿N¯n=óx™ùÕ¿—†ý÷«8­j.4Aõg~Tê–¿%S ílդƵAðÄ?«UVßTz•¦cE°^fܧ�ÀÇVª×GÀÔV6í5[æ0NÝc æËŒ“µ9ª-Nä½…€™ªÔtDü}–[$Úê—öítÍ϶ÂÂßx œ¿¦çoqOfÓ‘‡é›hL=—ÍÆ÷§,±yÉœ§òä=’€©Wg§O¹Ó¶¶Y$Õò 9 LmÆdîmÚÎì*®qûÀØ€w¤yfFò§Úe¤q‚À`pö©t8a°d é’óO¦Ü×J}ài+¤yV\šÄÖÿP' ç©ÒuÅáq©O¾Î0AÀµWÈ›òIYwÝíÌpÖ�n ^pþ€š.)ÛkþÛ¦`[&qíñjk¥î#šûwã� ¶uü&`ƒ@å AÀÏ¥ö¬Sh ¨œ"W–I`Èù_ûs�™Êrzèt ¼ bÙb VÉ̹újăcјL“EÀ¿¾’ YVµV›‚ó×€s'œ¿µ6rO0ï³NrÇÔJŽÚÖ.%O_›]û¨^;]s…Ô~ðdZJ±1çTD àü?¤Î_ËZasí>1ò²YI@׈Å'ÆèÂ?±(k¥å*™Œ¶hwA@0LCT´F.5·DÌ6A€>¨ÿtÎù²æÆ;e:ï(Õüœ7 ³¼o�qþÚº”çoîqž¿£ÚŽ]ç¨OE)Jä-:lÖÒµf£ÄN^¡Ð¥XwÖ À<¸Íœ •tþ;'ÄùW€k¢#�ïÑåVÌ)Ò@Gÿ/ÐlgG­$ù¥�ÀPpA@ Í_­ÊCΟfÿjQr}éføÈÒ¯¨òÌH€ÉSû¯Ò`\^�Bðsm (ƒZêO-:ÿ“ ­H¶¾Ø'õFJ(€¨}d¤€6Æ$´àZ«Ö° `=ÝÖšÉÁ¶8ÿŸ[ûV?[X!Gð¢ö‘‘keÚžºâÑîÁ##EL@À:w»F[&`•âæl˜Ö¢�Í"?ZfØ 5ã#�¯Œ*ßÈ�æpzTJ‘¶!PSC° v 0Î߈&PÄùRá;QúÊÈáÈ›ÿâ(Mä¹…À`ð�i ØB%õ¿F8-#lˆ“@”¾2’à-i™¦sO‹*yC @ÀÚÄ[C@�Pç¯e¡PóÇùS&, `|¥ñ™QˆIÐ$u'éü:Õ¢°(yLL€ `bF)8cÈù›>œ ,^¶^êNŽBÚHÚ»òâŸêE¡ y@ TAÀŸÎþ„¬¿å™*”ÐRÑ%á¼õº^Í™ZóO¥óg-@Û˰ÖÌÏP¶œ¡?õ®Ó!5 eújm˜¶2¤_�7õ¡¸^M•¦­¿_ÞÐ  � 5V7οöý'È»¯»2u5ÿÅ™™²Á®eÝßð€¬�q¶H.LaCï8J¦„óÓ„¤]m 0Ž æŒ´?˜šQU,¸8ÍÎßó â¯õh™vðÐß�~„Ôˆw\H²“,‚! AÀ.×ÓÞT Íþ襱æo¯U�l,Ú?üXÇ‚Úz�ï„ „%„F€ 4´6$<èüM Ç€?,‚ ÈI&ô Ô1KE&O—ékµ  v"e9?�€þ•ñ §¹œ¼~ÖÇ¥Ñ} ŒÓæ]tþÇË.¦Ï?å+ü-®ic @€e+ܤü¾ :`žH{Xù„ÚÐ*3Þ‹óËt¤ u»\ÿ ©9ý8Æ„8ÚD Î_m‰ó�–;¹AÀ«�,3Ž"¥±Ò5ЉÿÇŒ•1û!`-�Á à}ÇXk¤‰rþÐ¥½æ?1-ΰ‘@Ø>4Ô@ÇTe#Td‚À„LpÃURC0!*O(8µ�iÍÁùÛh!d*…€úP7[^™â‰?¿%9V °Ò, 5äü5€ÃùOD‹ã6PºïëÒÚ–Œ¡µ´ÈÔ#µÿŸåòéFC`08íº¢!^U.8ÿªðq±u¼l³xG„%VhKû’yOXB“n8´¹‰m4&¸ñ—òÚ>*ën¿ŸÙ£1²`_Áùk fºn¨ù�ns�sŸ�ÎÆÖ½úz`Ó p{ò…Ö …ÌÍ�dÐ `öM¿”šSi °Ñ ƒÎ¶j8-„L•ðBKJðºH½*»å s%,$@`¡QÌ+}õÅ>˜áü­4BUO`Á€O­>¥­R%h”iû{âÕm•!à>�Á à”…Œ °ÀšCÎ_[g¨ù[`Dœ€ñ¥Æ§ž°&J Íÿú 6÷¨åØ&&`‚€›%5'¿— `bZ¡�Qpþˆ™®œ©˜¹ÇK%eÓyê¨ CžP€°„ iB "&¸åjÉžt4A@E«»¨àü53�ο:–\m? Û CÊP6”h% ¤ �Š h0çÖk*XÙ…Æù›ÀË`8ÿÊr•[Ô§†òjàÀ€UÒ´�'™w»…i!P!‚€ ÁUvÙ ó7�ο2†\åãS�o ZòÀ€œÔ-ZHÒƒ€Õ†‚€£èÑP8ÿá’´&í´��/¤‘J(£ƒVœôÆ à3Hh 2ãïÎddÎÍWË«ï?OÖßý{ ŸVÙG ÎÿÄ£”±öù+k¡œ–Í� Ü& ‹ëí£Ü¤�·h‚´i!Òr‡@M�Ì1O % H£ 9Ó篌٠�N¾ Ý¿›tÙÂÀ›)Õ˜Ä &ܪ-gœ'ëî¡% ZÔÆù×h@e+œµ4‹×ÓÆ ÇèSñmxE¤EÛæfG†!`�� À8.ãÀØ*#0äü5 ÂùWÆ�«’CÀ—üžOŠÔ©Q @“´jíßó‚�´ à$�Á àø÷T`@œи$Ñt|]]›LÝ=H% ²âí¤p¤§ ˜ `Ñ5RCP– Î_™™®jþe¡ãä„Ðê Ý�yÉ$¼¢^™Ê6äü5pÂù—…Ž“SA 0 0M ´íÏÀ$#!$…€³µ6KKÀøÅù�χ£Ð1vö¶hÿ?e£ðjk Fá2¸kÐù›@‰šÿ ¾!0’€V²ç�ÜSÝ¿ÀZþ,“§«pmÕ‰ÃÕH.�¡ à¸#8ÌÌÃ�¿aÄŒE ó®·¤eÚXGËÝØ:©ÑÚ?SžÊ5ç§‹@!Ðþí×N?GÖß÷PêW ,8 ˆLÍçÕ½Às:*Òaä“•¬k÷‡ Ò¬Àn‘’N \+5)o rþ‹®Åù'½Ð£_`2âÏ *±ÀZ<ñæWe–xÒÁ~Ñq/úF»WÏ8WÖ¥°%ç]Yž“¹Ç¹Ï‡qñ·Xe;°@ ÕVr±0m%3/YÙ Hx A€¾@è5ó¡ß¦§; àü�ÕfÕÝÓ¼Ø'¼2FÊÉ# ¾vvPZÖ ¯è ¬Y"(åH¶ÈLª“ÙºÎ}Í1G¤b`à�óW��îl€@¹2»–{ÅXçè€9ceÂ~@`l… @»’œ¿:&àÁù�]8�ñék Ì@]`ÊxBs ›@Òƒ€!ç¯�ÎìrÀLLÀky[&Ϙø¼‰Ï$ÈHf牳â @`<… à–äµàüdz:Ç P �ÌN•\µõ5�¾xïÚ:aþCåÈÔ›1&8<c†œ¿êDÍ¿üòÀ�€úÜGÛ_î¾@€Œx�D#å ÏùH"�b ë8ŒpþذAÁPŸkO 3&4¤÷ ¸�ÿá…Ö £  �|@•î@Z<Ég[R‚@�ÀP°ð0§º¶8ÿkçOa†@ð²âÒíÈB@�ü¯àU$Ũ °BXÔÄ'ίÜúk]1ðòî�G¥Uì^nkƒ®3W£Ëì[pþ[7ú3Ì=ž�>[r ˜@Pãîjð¶ X?’ƒ˜ `Ž5ï=TŒƒµutþFVjþ¶Z ¹’@@€@|n €/>¯NB©Bk ‚€E×Yœ¿(8k‹‚%ˆ€¾(Ÿ[uÀ"õÊU²·f’ »‡¬ŠÚ�w„̸òä3“jÕÁ^+ËOÿ°løÝcÚ`ǶAÅÈ}HA6##eÈ»Œ.Ïéѹ8··ÅøÞ…"=ÕH^u ÀnÒH$R�\ �´ÈÔO’¹‹~-Ù£Ñî€ø·Açod2²±AÑÂ÷VôK~V4ê’  `‚€ßÄœ¿"8Ê%¢'„ï­:ð$;3zÕÉé&0¼çàXZ†œ¿"ÔüÓ]Ñ>ÉV]ù®:ÈŠL‹G}r…@º ‚€Û®“lÄA@Áùkžsqþé.€h+Xµï­:ÐYÉ­±R s¤˜@ÔAÀ�ó×ÀƒšŠ ªÇN@�wÕ¾·ê@‡üN��@ Ń€Ì{ µ;çŸâB†êÖÐùUUOÌ©v¯Mf�ݬˆ¬5Í„‚™ `Þm×Ë+§�%ëþð„•¯W j4À˜KÍB[Ø|‚¹Ç™h³…J—MmYuPu €/™ª…(]e΄Æ"0Ôy ¾; ¸mÐù›ƒfÿฒª!„ï­:` @5&äÚ ¬þÉÒñà‚JÎÙt AÀí7HPA@Áùk@�ó/ SÆV_v…³åÁ“C ß[u  Jf%@6ÄF ×Þ.o|þäå?"o¿369lÉ8¨ `Èùk@AÍ_ eË”±7þúÄ”96ÄK zß[õ�BZâ…@î�È;8 ¯¯€`ªôÉ+¸PæÝt™L9ùÄ@±¸–X¦®¶Pk_vʇdý#O•=& àü�¨ùkZâb¹Ðho¿K^ùÐg•cŸ¬3éš2—r&â%© á{hðh¨Àx\<�Mr0ØxçÝÁgàXŠ™Iu²ë7HöðÊ`œ¿¹fÞíÚç¯i¤}3eiÐù›2Æ;Tï{«ôM€,nGi@ %@0²” :8àüµÙß8mU2�%ÎdÙâ_¼‚ð½UÚ 1%^ ä�‘FwÝ;ò` ÿ•àüGœÿHü³‹@¾·ê@Ò`W¹¨B—g�”½ôÊ+g~Z6jóÅî€ýµ;`$+S`̾ìáûº ¨ùkÍ_ËÌ+øŒÖü{G©ùoË¯Š›.âK]–=bTÖgW½ï­:ð¥ú~ë9# “Ä+Ž Ð  ý®ûœÔ!H¡‹-7êÁƒt ›/›>æwÍ‘«ó¿‘f^pþZfŠÍþZÏbƒ€…‚ð½UÏ ž´°dT(’«¶4r�µÂY½S´ÿöå3/�]o¾\¦œt\…t’q™ æÝy“¬ùé:­­Ø=2ëÔãeƧϗL�¾Ú+åÛF —©óoÕ2cÊÎh÷ÄXeÍtFŸÑtrAvdI ;VŒ‰°�@£>ÈuÞ–>Ø ŒuŒ£ŸõÙO>öY+>‰ŠÎÿ‚‚ó/–™ød!gDA ê.}´ê$a6ØMÀ<ÐM­ÎíwÿÖna‘.r8ÿÈ‘“a•‚ð½U"^c•zp9"!0¼üþODBÜ�LL@hC RówÃfHiTï{0Ü!°% %À«…'©qþ& Äù‡Ç˜”í%À{m‹d~#K¢–¼ÌÕ‹‹µ¼^}ð똀[.—–Ž�Zbò³€@û=Zó¯Ôùk™sò^±€;"ØC€{l�$(¶ôªЖ€{ï�0g²²�@ÑùÓìoƒ-�!>~w|â“3*'0œ¡c*騕[œ/}þŽÙq‡¨Þ÷Vh‹qñUlÃåâ7!@àˆ¡Óz¦Õ§UWø+v”0É@ bAøÞª€ˆu&;N€ p¤V&XpþÚÚƒó·Ò<€ “¥}ì³I�áüƒ¤IZI!Põ,}%a�ÎGä�€ (.N0Ø—f­V~óî_›†—j-q÷[¯�–ã&Àª¨`œ¿±iñÅ>£/ï[%SÎL™sqád#{µ÷I9¬87<Eß[]úU·xâm®N®†€=LK€qKÏ8_>`�`HRcÃAçOŸE¹ÈRAøÞª[”ÍFbJKKHÙb¹\7®nS\Úr³:ŽO´S6I.ˆŸ@±æ~! +:ÿ ÊwPéÄÁ(¸û$éÉsõ½ÕmU·h3-ÕÙ€«-$°¥%€)‚šgB‘¶uþ^ pŠ@¾·ê #žŽ`ƒ@òƒÓ@à’u‡÷ùÓìï’å�µAøÞªmPj/GhÎ…€KF÷=à’è©”u‹óßÌ<ÿT–€ô(„ï­z €‰¨ƒÒC=隺¸ÀyÈ2› Àm 8ýü☀ãÞ›ôRà¤~í÷=80à/çoÊ\ÈåÎI# td,™ "Ó˜Œ �& ZM`f¨£a³‹@ÑùŸ_°ÍþvÙiÂ! Õîª}o]U R…@°¶:&€ X¸U¤6Üù±A ´ ªjß[u  «" ÆBÇd(=Å��±µèüÍò¾›ç»9 ZUûÞÆDkóðrÓˆÒÙÍÈ•üÅ1=ò’ÎØcÑϤåØ÷:ËÍeÁ�ó76h•žÂ€¿¨ìU>aØ&Êû$ ùIs µeÕ@Õ-9ñÖo‰_H�Á–€—N×î€ß>˜¥-ÒÒ0tþÔü-2 ¢DF gC ĺÈ4&#XD€ cœ¿^¦æ�ó�Çä?�l•ïª[2’[? $€@<ƒ€¥´Dbœ$˜ÉÄžäVV+fÕ@§ô®ªV®‡€ËL0Ek£áZÑ8Øš¸œIÝ AøÞª€•ÒSuân¤„ÀØF÷ÿnì9R�Aço-šý+BÈE #„ï­:X(Ò££«~+QÂlƒ:)$0¼O "¬–¦æ�ó ) 9N@¶ß[­UO4x’×V€Ì”j…áúø øy'9Y´$k±vªÝì®S'/<:~£:,AÇ–:-sNÞ+—DßB [ð¹[þWú«ê€bÆÞŠJà:$�ÀPK€ÖZ;ü}ÒÔ‹Lk�dÈ£ð%H×{ €®ð?£‹É^¤“ÀP -å—ÃŒfÿò¹qE:äEÞ BÓ@ºT�·T 6Ç 8Øø?DÜÈn[lÐÎ1_»é^Ò `�Û¯”ÉG9$/?Æ&`œ¿afúü CÛìÊ}2¶í8 OäÏAäH € H4„B¤›˜eƒ�#{éÔOHÇï²I4+e1Œ�?oõ³ÒDe�7ƒ#� /~ ¡i@À6¥Y¤àü5P2ο4fœ•N:5�Jw @Fü@š#ÒiJ´N�AÀNƒÊeéˆó/ '§œ€v.Úl’üŸRnÔ‡À„†‚€S>.C¼ ÓEBÍ ? 0.�Í’¤Õ=�€=¤c­v´�+1!�BÓvaL€�=’z"ç¯,pþ©/ (‘€ñµ»IÇšO÷´@“ƒv,7'Bƒ-/žü±T&z çÏ]�²è ûW˺`œ“ <ɼ2N>‚†H{`œ¿ €¨ù+ü„@ 2â-+á´’N ,ÈKþµ’rä$@ @`Dð𣩡‚óO�©Q4AúÚ R5=ZB0väIZ´®~ɺû¶-S²äÓÝzäÅ“>*{Þy•4qXé;xf§:‰¨ù›2çâ½â`™Aä‘<ñën,è•Üò:ÉŽ””Np}…3�ëïAaôG^羿 Mâ{%80ÎßèØRXáOý§£ör³”K›‘ÝUîƒ÷KÚ¿Õ×VÙ¬ @�òRÚ ƒþ¨”@“^h£q�ÆQ&mîü�®l€@eú¥ã…Ê®ÜöªÀ3-Áè…ÛŠÉžh¸^·‰†RX¹ƒ€M|T:ùcXÙDžnÑùTœM’ çÏ}y!"Ãþÿì%².(�F í›x1(ÁHi$`Þ"Xh 8é#‰¶8ÿuþ:�‰ ¨˜€úا+¾x” F�Â.ÄI )A€iÅ0­& ÁùÇY¢È;)tüÆsAêh ‹Ö7¤’¤×l Üì(8mÅÀù»Vò�×fú{€ÉØ\z�Í)Å @ÇèA—Æàü�*fë�œäì ²Òù “c*Mˆj=�AÀ£�Y/oÑùÓìo½¡Ð9Úüß·^º–)x ]sD6ªp¬¤…H+õ†‚€u` ÅAÀçoFû3à/õ�Ð;ê…Eú‚L4ÐÀ¦d¥¤²¤W ؘÀÄtU§úáü]-gÈm/_¼@›ÿ�¦�­8ˆMÈ\¢QÅÿóíwÔ-žŽ®+Wzù0ïðu.ýóÚ°÷Ý¿’æÃ)ýâÏ4ÎßÈdœQÆ3³ i—W0÷¸Ëò[`þØDÐ×Þ Åkql„È '0Ø`® ÝÃ�?Íþ /|¨3�à€À[²’[âKqEÌèS“½‹/Öɧ«NSt´ÃZ=(–âÙùèãò|Z›ýM™sñ^‰¥¤�iÔ·Þ½¸§ÞEºVè�ñF “ 0:Lèèü㣟â^“gj�ˆ\I£ðß(úÖÑ�Vº7ðÀ¢Ó’³�y¥d¹!hŽ)(8í‚0Íþ!™ä! ´½éÉ0@„ä%óxÂ’& 0’À`ð‰ºXP-Ã�¿É› Ÿ@^¼P^JàIÎþK·9@ Æ7K·„çoò05œ$¦%¨O ¥U=ðA€FÚ·¤cñÎÒÒ«ï¬Ã~ˆŽ@ºçÚ\øc‚€�È^÷^-Íë’!nEçÿuüÆù›-½¬ÄSRØ.&ðfë÷ŸZáÅã^J ÀBÑ׉„"ð¸Úp)&`³qÐÏ®l¼÷ÁÀH˜´ž?ñ¼aÎ?°¤I˜˜À’Ÿ:ñ™ežJ`dÐU‹~W¦,œTIÀS4þ~áCŸ�·/ý®ÞˆUÔöôZ“†IˤY¬ùW) —Ceð~_æ%ŸZ Ož?”,'B�hÔ”fI^V]òyöÐc¥ý�òŸæs­IäeÒdƒ¢' ³êB«L‡2 ˆ¨ý!_Zr: =2rL#�*꺉ÃenìVýt/}E–¾ÿ<©ßužÌ<çL™zÚ)R¿ÛÜQõízêiY·è6Y{Ç}Ò»l¹Öø½!ÇÛQ‘9¹[ºd6?×.í‡%qh€y3àkâ=«…mAX“. 0>Ss7ëó‡¾â›ÿ.úæ¥ú¯IvÝA2ÍÅz}¾³[6-{[Ïì’ú§ßªßl€@¼<õ¡ê@7„%Eh€8§Mñ²éB Df:NqJŽN(Ò)ƒ9 k‚ÆÕ7é'‹Ó/‘&§A Úü_~ÿ]¢…8ÀHáß_†,œ D@ÀôÉ™``ÒÀÇü¦ŸN!°AÀ2úÀP}h¨@N:Ô¦Ï2¦ˆ@°š@Ñwv<¦�¡»‹thób(+… …´!@qPßùØ<‘ö0eu €\ûïQEÞ¦¤ �jæ�(FYI¹(sY r²uL™£ÜYg–„ toØú„Ú`„×¾ÅûÂV‚ô!@I"Ð+¾ûÀÒn^V¾>I†A@€@ˆ6>'�‡˜~!éÐ[ÎÖÙ€žø÷„­éC€Bàã;ÃÖ%ô1Fí-[¤Ÿ‡­ éWG@mäì–WÉ]–ßYð)Ü”5W7s�pŸØo=]Cç¶(¤ ½À(Ñ#íwi± =š‰X²ópùÑà²ìÉ.UÉÓÎ岿²ìÉ+I£käçú¥=9À^"ë4xtteÙ @€@‘€ÿhÑg†Ï#’£†N¼=|uÈ€ à.�(}ed€.i¸È]“ 9 @ |ê+~.Å" æI狺´áÒ¨#@€€[ü—ÕW¾•Ì‘F!mÚ¸1*ÅÈ€ à�¢”7ÒÀ—~€(­K^€ à õ‘7E)l¤À<é^¢s_‹RAò‚ ØN@»È_W¹8J9# ŒbYÉÓ ¥…É €¬' @ä¾1ò@$ókë-�€€ � ôIÿõfWÈ*’¥€‡+5W6>µLZ^Ñ!�úªc6›¸¼F˜‘Ýå%Zm*È2>î“ñùp´þò½dSè/ÿÙZ²Z kQ_³µ ü‡ ¤‘€•WÇ¡wä-FIíë¸ÚïŸâP˜<' �w°~ã;(ófà°åL™sñ^±kZÅ3>1ÝciØ]:^VeŸŠCaò„ XD੟¹H±FK�x~¹¶d@°ˆ@œ¾0¶@§þÊ¿Ï";  @ 2Æ_Y†[eË#Ã\é\µT&ß®Èû·’‰¿(�@Î,3­cÊÇÙ•(”5-sînÜ'¶ØN_üsÇnê ã’'¶£pVägq)N¾Û0¶þuë·=`ùžÞ+LYbƒ@$LY3eεÍÜÛÅ@Ù5É“+¯:àËãÔ.ÖàÏÒq§ÖÚVÆ €¼·¨ÓŸ�üqËG~u=ó<€#¶J‚˜&0eε­ãáGÅÜãl¶ðW}`|òÄ,Ô §.Þò‹øÔ'çáµ~°úº›‡ïrâ÷ªëo#;¢ `Êš)s®m«o\Ä}b‘ÑÔ÷]e|`œ"Å (®M L䎳 æÝ¨?VÞv�lzÉÌÒtcëxèYû‡G¥Á q‘2LY3eΔ=W¶M˖ɪEwsŸXc°‚ÏûiÜâXQmÒÁ€¿Õ…�މù‹t*„Ü»ß- ~w›d&·X�¤oåJY|øÉR¿~�4Y-)Â%�@—*Ô3u†ìÿÈ�RÛÖfµzùŽvYrôi’}ã i¶ZÒô§Sÿî×¹ÿÇÆ­± -ÊÀÿQÜ È¿HÀ< <}P,>üDÙôâRk±t>µ¸àükqþÖÚ(É‚™€Ó”=€š²hëfîas/›{ço“•2?¶A+Z.Ó{éh™ü'mØÞ(ÈPl h—Œ´�q’´�û!iÜ{O©Ûa‡øÐh‹YïÛoKçã‹eå5×Ëêû~'StÚ5ÿøLBÎ:P!lÔ13OX(Û}ì™|Ø!R3mj¬hÌ}Òýü‹zŸÜ +o½KZô5Y8ÿXM2"s­ý¿ó;éØùB‘Ø×Á±"0t–JËÿQa¾:‚b%`f wëg“:ZSRuÐJ¬›i®ªÕO“>péó�Õd¾�Mú¿Kï“^ýŽ{–ýà}Ò ÷‰×cÍC~+fiý«åã’Ý¥Ý _gMÙxUvꓚWµ ¶Å‰ÒZ Ñ€Â' µÿþZéŸ3G6½~nç`É‘"黎Eæ @€€‹¼›lqþ†ž5€F›˜¿k¾Ù @I#`›�³¦ `ÐÐ/ËäGµ×êÐÁÿ|C€\' }ÿOhßÿÁ6¾L«)"IDATéaU @Œ÷C›!  @ ZZÛþ~µi}½uÀ3Òþk3M"hEI€ ãÓÔ·]GÞãåi]p¶¾hKf,ÀxVã 8D ó½ßf•ÌÖ�0tô}t-­º0�ŽhµŠÂ@€Ê  µÿŽéØi�Ȇ2.‹äTëZŒÖ:°]#–ޤ�  „Hà2�¿Ñ×ÊÀ¶QòÿO×Ô2 l±A€$àoö%÷[·68XºVhÀ•¶‚C.@€À~¾§t[;¨ÝÚÀ@Ý,½—š¥'Ìa@€€UŒïÚ,}ÿf•P[ cu0_z^×±´le4þB€€ÝtáŸ_f³”V\¯dþ…V›‹²A€ÀpÆgõKæ’áûlüm}°¯l|MÁ]e#g­úœÝ´ï­Ëz8Ý`À àÍe# ; ¸DÀÿšëÎßÐv¾À(q�Hv/i~Rîgþ³A€  ëý?ý‚tx¶ˆóãÏ#?#-‡ÖJþ�i£S…—4!@ R¾Ÿï={KÇÕ¦`ÓuÎw œ/íTÏÏ€ÀA |C€@ ´ïÿ¿“âü ˜DÕ–Ÿ•)S³’{I»Úµ:‰A€@ª hÓÿÊœd÷ØW6®O ˆÄ´ƒ ã_œã  ØBÀ¿8IÎßPMT À`1ÑïVÕNüÏ7 @ rþ½{Jgâ|J¢Z�›“¾‹´¯¦kð?߀ �J_¢>ås•\kû5‰ ö‘ͯz’ÿŠíð‘€l'�ÿ'ãSl—²ùÏK×÷õëÑJ p  @@ <ú‚t}/©$9`ÐXÏÊäÝkÄ_¢ãê÷ñ @˜˜€ßÓ/Þ‚}¥céÄçºyFb[Œ9Іó¾î¦i�€â#à}=ÉÎßpMt`|^:¾­ƒ83¿Ù @0>ÃøŽ‰Îsýx¢»�³DZæeµ+@£�¦Á}|C€¶& ¯ùÕQÿÞ‚ÒþÊÖÇ’ö?ñ-Æ`Æ�žä¾˜4ã¡ KÀøŠ48C--ÅÃ{^&ß®¿OøÏ @`8�;u­ÿSu‡ö$KE À€ýnÉJ×s^›|³¢! ”CÀø†Œä.ÐkRáü ›4r°t­ð%¯öScàrnÎ… �N¾:…ü{J÷;iÒ?U€1ì¾Ò}k^ò?L“‘Ñ€Æ& 5Âß0öÉ<’ºÀ˜q­tQ›{žI¦IÑ €J% ¾àÙ5Òùw¥žŸ¤óÒ4p„Ýž“æ=tÇ“žx�#ð€RA@�·*zà>ÒùR*ÞJÉT¶ÆàÉ~+ü… �”ÈJþ¯Óêü�‰Så÷’îŸéוæ7 ¤ŠÀ•:èïòTi¼•²© ‹é¸H[žÛŠ !@ ¡Ì3ß<ûª^Éj¥>8P¤»W2Ò©�í%SãD@p”€ßnžùæÙï¨�‰�úÀ�ÜO:–åDX °bEB€l$àûæYožù6JµL©�0èg¥éÛžd.íû @ÀmºØÏwö•®TNùÍr´ £²Tº¾¤ÓBî¶‹Ÿ€ �æÙnžñ P%0hØ å "ÓòÒü¸¾'iÎV‡ø @Nð_­ï�=¤ƒwÁ ³-Ã`˜Ÿ{‰¬ÓHñLóNè­ñ€#`û1Ïtœÿ¶†#Ø–‰¾/ K§úŸä¥A£Àa g˜—üÈ'ŠÏtg„ŽLPºÆAýŒ4~%#™o�s ‡ @ÀRúⷯΗîK,/v±Æ7�§3®Ò÷|düÓ8 @6Ðfÿ_iÍÿc*¯Ã0tŒf`·¯£F?¥¿ÿ4ŽB€€-Ôã?:ðìÆù�cZÆ�3xh±4Ï¬Ó @KÒÜÁ}|C€€}Ô©-ï9|é\mŸtvIDP¢=^ü;=}f‰—p DH@+i:ÍÏ_È ¿Ò ”Æ©pÖ3Òpˆ®x¿Ž h,ã2N… �� §ûå�™/› 9«Ä$Ï€2Li –²sõ£ËI³A€€ Ì3Ù<›qþåYƒ <^¢SJiAû|™—q: „DÀ<“ͳ9¤ä›,@¦Õ‚ö#Oü­àR.� � ˜g±y&˜dj’b @å¦Ö5šM¡»°ò$¸€ª pÙ¾Òù9½žé~@¤ h—è�©Ñç¯+O‚+!@ æÙkžÁz-ο€z -‚¼ì:‘ºÝ¥éVEyÒà>¾!@ <Úç÷ËÒuúÙ":埭R•’vÝ“"�µÒ|�Âÿp @¸| ©›)‚ºNÀm ûȲ# @ÎÐyþé<ÿÓí¾ éŸ±˜‚¬úD‘ü]dG€%�¿Ë<+qþј� Î&è^*Ýgð€“  àíó¿Î<#ͳÒ)Á6ë°ìΉ~½Hn¡ôÝÉlÁˆ&Gr� }¶=¬œCqþÑ1Ÿ('€‰Exü@éXó¶t§kü2ÂlÉ €@¨Ì3MŸmÇꀿU¡fDâe   ,\‘�¬Ó¿ªcþY#flv2‚‚%àûÚçÿõý¤û[š.Óü‚…[uj8—ª†—Ài>K›h~¦94‡— )C…@g^äS ¤S×@c³‘€�V&ÓsÒ´o^¼›u×ìa»ù @Àf¯eÄ?sézÖf!Ó.c,/æêOú÷Z.*âAPþ}æ™…ó·¿0Øo#9D:Ö.“®“u Íw!�”0Ϩ—¥ë$óÌJ)§Ô¦ À)s‰˜qj´Ÿê§Å1ÑH(Ý×®ŸOÓßï–� ܲWAÚ%2iž'57é,�½‘!�ÐîÉçõ%~ÜO6/K�Z©P…ÀQ3?)ÒX#M?Ði‚ŸtTĆ'�ÿʼt]¤ï6ïv\•TŠOà¸Ù—Hã§5øž¶4:® âCŽÐZ¿:|ÿ ¤û§ŽˆŒ˜£ Šk»ž’º=Dj¯ÍŠ·¯k²#/ à�œø:µ¯ï–ôuËn£IË,€Ñ¨8¶Ï܈íÒuˆ/yíÐ…·Ø NÀ¬ê—ÿ�yÖàü‡K‚´Ä‚=¼LµKà íÐYÞŒðr!e@ M´É_§õùh“ÿ­iÒ;éºÒ�0 ›´Cü}5R×W ³A¨Ž€>KîÔgÊ>8ÿê8Úx5-6Z%™¼ÅÒx¡Fxÿ¡-MÁ$I*€@zø]º–ÿ÷—îËTgºhx€u¸JÅ52¿É:|?¿!ŒM ÿG­ù|�l~eìs8â:º\·àò›øÙôžœÈÿÖ ¾g‚Ó9 ¤š@áñeóÌÀù'¿ Ð�|iø„LÚ­F2?ó$søÐN~@PZã$'¹ ”Þ¥IZÒaç‚–Éæ—oÕÈ^ÿ\\\È#EÊ£* 0*��gÁÅæÙ€óQbwÒ�XÓŽ¯ØR?»V²?Ö³ŽÿLŽB &poŸä>{�ô¼–`Qm c€IËî'¥á¼ñô5Ã^[ZtFO@À_Ù/þÅʦ«a‘^éµý�æKDZõÝBÿ¦…Á¼W€n¡!2ü€@Ò˜Õü俳Rûå}eãú¤i‡>å (�W¢Ï^" ‡ë ‚ß× `A¢E9¤’€¿Dûûÿj�lz$•ê£ô6¨ímƒ$½;̃áé>P_ñy‘>(Ö¤—šC 9̽lîisoãü“c× 4¡ Š LãI™<#+¹oj¹�n�•R@À×…üä'ý’ýÚ�ÒA@Ÿ‹—«"@¹ÄRvþÒ¸À Ô‚òÞ”©Žºp–€öó?hù$Ý:ć £ � {·" ï8][þ¯îÞs«Cü…ì!ð¢6÷å@é¾Å‘�ÄVŒ°Õ2–É¥/Y´Hºæ{âÿ%ã,3⤞€¹'ͽiîQœê‹CÉh('xRdJF/Öÿúñš÷ó DMÀïÔ¿›—îo(²1êÜÉÏmnÛ/VéKóL­y|EkŸÓ@ .VaÈ©"à÷úâýHÇçüË|é\•*ÕQ60�¡LoBºšàNº~À×µ?éãúPªI/ 4‡@¸4Øîסý¿ÔÀû뺊ߛáæFêI'@�t G¨ß“2iŽ'Ù¯h ð1�Á“Uâ :~‘Ü%Èæå‰W#!@ æteb^4”‘Ì` P›.íÑÁPÇß§5þ«ò’¿„öÇ•”Š( ¡xLêwÉJæKZÈ>©]õ¡eDÂHmâïѹü?ÏIþÒC¤çõ„©‡:– °ÄIã9ijÓEI¾ 43XP_<ÄŒNÀß e3¸ï{ûH×ÊÑÏa/‚!@ GR)�ÀEZj¥I—Îÿ�'™J¸„S � ¾äßÉügŸt]v¨H{*”FÉØ Än‚ô p™HíÒp–¾¿Õ@@§/³A �Ôñ?™ÿ?—žë42îK'´Ž‹@\äÉ·@à i8"+ò#p&3(i `FôkÿÍ9‘ï$›NƒÎèh';í’:©—†³â]¨ã.Ȉ·]ê pâ èý+ô�{yNüË–Mo%^a´ž€õ&J—€¦{à`i~¿>,?«5¥…:h�2š®"�0m}}'¯÷ ·?z\:o¡™?aæu\®Ž0Éâ?!“vÓõ.Ôî��h 0+ɺ¢[Òø«´™ÿW:ÿ²ƒdóËIÓ}’A€ vL´ÅV�ÆS´éô|/pŠŽ`q¡D[ÜMåÌ¢=Ú¯‡Öö¯x\ºï ¶ï¦Ó$5@š¬�]Ÿ‘æY¾ä>¢Úó´e€ °©ë*hMÿI L¯Öe°Å‹y\·fºä'H—½¥íc2i׌dÏ«ÿ\ígÝ5QÊ¡ŒÕtêÞ²>ñ®ÉKîêCdó2«…E8ŒA€` 0ìv‹ÀãR{PVjÎR©?¨-³Ý’i]  5ý×TÎsÒýÁÒ÷„ 2##Æ#@0Ž9Ià ©]àIí´pk0 {8©B[A@�þRsrƒ/}7$}K¬ ! €€@’Œ�KÝžyÉž®Ò�ªŸÃ´u@»kÙ 0:uø:¼DtÕj¹­Fr¿ÙOz_ýLöBÀ}îÛ J$ð˜LžîIßÉ:Jû4­Õ�¤…J‰—rZ‚ èâSuÿ]:Ëä6_jï©}�>ûñÈq Á †#©@ bOÊäÚe½“ÎAWVü�Õ1¾Ë|4A3ÆÀ´ì ­“+Î † µöÞ¡Ù¾­ŸÕúyS46ŸœxÒµþ¬C*Þ%@@ (PfR`` (´Ž¢€€ (@¶Vߤ#Þ–(  ÚÚÚÚÚ+Ú�ÚØÚúÚôÚÔÚ�Ú,ÚÚÚÚ Ü Ü” Üý Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üý ܘ Ü Þ Þ¼ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þ¾ Þ á– áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ á–ã,ãüãÿ Üÿ ×ÿ Üÿâÿãÿãÿâÿ Üÿ ×ÿ Üÿãÿãüã, æ� æÿ æÿ Úÿúúþÿ|yëÿ áÿ ßÿ ßÿ áÿ|yëÿúúþÿ Úÿ æÿ æÿ æ� é× éÿ éÿ Ýÿÿÿÿÿ�}íÿ Ýÿ–’ðÿ–’ðÿ Ýÿ�}íÿÿÿÿÿ Ýÿ éÿ éÿ éÔ ìù ìÿ ìÿ àÿÿÿÿÿƒïÿš—òÿÿÿÿÿÿÿÿÿš—òÿƒïÿÿÿÿÿ àÿ ìÿ ìÿ ìóïùïÿïÿãÿÿÿÿÿæåüÿÿÿÿÿŸœóÿŸœóÿÿÿÿÿæåüÿÿÿÿÿãÿïÿïÿïùò×òÿòÿæÿÿÿÿÿÿÿÿÿ£ õÿæÿæÿ¡žõÿÿÿÿÿÿÿÿÿæÿòÿòÿò×õ�õÿõÿéÿúúÿÿ£ öÿéÿóÿóÿéÿ£ öÿúúÿÿéÿõÿõÿõ�÷,÷ü÷ÿðÿêÿïÿõÿ÷ÿ÷ÿõÿïÿêÿðÿ÷ÿ÷ü÷,ú•úÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿú•üü»üÿüÿüÿüÿüÿüÿüÿüÿüÿüÿü½ü þ þ” þý þÿ þÿ þÿ þÿ þÿ þÿ þý þ˜ þ !ÿ!ÿ!ÿ!ÿ!ÿ*!ÿŽ!ÿ×!ÿø!ÿø!ÿÖ!ÿŽ!ÿ*!ÿ!ÿ!ÿ!ÿ(0 @ ÿÕ×4Ù>Ù>×4ÕÿÿÿÔÙYÙ£ØÖÙø áÿ áÿÙøØÖÙ£ÙYÔÿÿÿÖ?Ú½ Ûÿ!æÿ ßÿ ÜÿÙþÙþ Üÿ ßÿ!æÿ ÛÿÚ½Ù>ÿÿ ÝdÜñ !åÿ ÜÿÛûÛýÛþ Üÿ ÜÿÛþÛýÛû Üÿ !åÿÜñ Ûdÿÿ Ýd Þÿ ãÿÞûÞþ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿÞþÞû ãÿ Þþ ÝdÿÿÞ> ßð äÿ ßü"!áÿ$"áÿ àÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ àÿ$"áÿ"!áÿ ßü äÿ ßðÞ>ÿÔ ß½ "êÿàû àÿÛÿÛÿßÿ áÿ áÿ áÿ áÿ áÿ áÿßÿÛÿÛÿ àÿàû "êÿ á½Ô ßZ!äÿ!äÿãþ)&Þÿ¤£çÿ«ªêÿMLßÿ âÿ!äÿ!äÿ!äÿ!äÿ âÿMLßÿ««ëÿ¤£çÿ)&Þÿãþ!äÿ!äÿ âY ä¤#ñÿ äû äÿFEÞÿúúþÿÿÿÿÿ}}äÿ ãÿ!!åÿ àÿ àÿ!!åÿ ãÿ}}äÿÿÿÿÿúúþÿFEÞÿ äÿ äû#ñÿ 㤠æ çÕ"íÿ!çý!çÿIGáÿøøüÿÿÿÿÿ€åÿ ãÿßÿ¥¢îÿ¥¢îÿßÿ ãÿ€åÿÿÿÿÿøøüÿIGáÿ!çÿ!çý"ìÿ åÖ æ æ4!èø"êÿ!èþ!éÿIGãÿøøüÿÿÿÿÿ||æÿÞÿ°¯ñÿÿÿÿÿÿÿÿÿ°¯ñÿÞÿ||æÿÿÿÿÿøøüÿIGãÿ!éÿ!èþ"êÿ!èø æ4 ê>#òÿ!êþ"ëÿ"ëÿIGäÿùùýÿÿÿÿÿyxçÿ¦£ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¦£ðÿyxçÿÿÿÿÿùùýÿIGäÿ"ëÿ"ëÿ!êþ#òÿ ê> ê>$õÿ!íþ!#îÿ"îÿJIçÿùùýÿÿÿÿÿÐÐùÿûúþÿÿÿÿÿ³±óÿ³±óÿÿÿÿÿûúþÿÐÐùÿÿÿÿÿùøýÿJIçÿ"îÿ!#îÿ!íþ$õÿ ê>ë4"îø#ñÿ "ïþ"ïÿKIèÿ÷÷ýÿÿÿÿÿÿÿÿÿÿÿÿÿµ³ôÿ!çÿ!çÿµ³ôÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷ýÿKIèÿ"ïÿ "ïþ#ñÿ"îø"ð4 î"ñÕ$÷ÿ!#ñý#òÿLJëÿ÷÷ýÿÿÿÿÿþþÿÿµ³ôÿ!éÿ#ñÿ#ñÿ!éÿµ³ôÿþþÿÿÿÿÿÿ÷÷ýÿLJëÿ#òÿ!#ñý$÷ÿ"ñÖ î#ò£&ÿÿ"#óû#ôÿIGíÿúúþÿÿÿÿÿ´²ôÿ"ëÿ#òÿ"$ôÿ"$ôÿ#òÿ"ëÿ³±ôÿÿÿÿÿúúýÿIGíÿ#ôÿ!#óû&ÿÿ#ò£"öY$÷ÿ$÷ÿ#õþ,(ðÿ§¦òÿš˜óÿ"îÿ#ôÿ#$÷ÿ$öÿ$öÿ#$÷ÿ#ôÿ"îÿš˜óÿ§¦òÿ,(ðÿ#õþ$÷ÿ$÷ÿ"öX*ÿ#ö½&ÿÿ#öü$÷ÿ#óÿ#óÿ$÷ÿ!%øÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ!%øÿ$÷ÿ#óÿ#óÿ$÷ÿ#öü&ÿÿ#ö½*ÿÿ ö>$øð&þÿ$øü,(úÿ+&úÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ+&úÿ,(úÿ$øü&þÿ$øð ö>ÿÿ$ùc%ûÿ&ÿÿ$úü$úþ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ$úþ$úü&ÿÿ$úþ$ùcÿÿ#üd%üñ 'ÿÿ&ýÿ%üû%üý%üþ%üþ%üþ%üþ%üý%üû&ýÿ 'ÿÿ%üñ#üdÿÿ%ÿ>%ú½ &þÿ"'ÿÿ"'ÿÿ &þÿ%üþ%üþ &þÿ"'ÿÿ"'ÿÿ &þÿ%ú½%ÿ>ÿÿÿ*ÿ%ÿX!%ý¢%ýÕ!%ýø"'ÿÿ"'ÿÿ!%ýø%ýÕ!%ý¢%ÿX*ÿÿÿÿ ÿ"ú4%ÿ>%ÿ>"ú4 ÿÿ( @ ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÚÚÚÚÚÚÚÚÚÚÚÚLÚ’ÚÇÚéÚúÚúÚéÚÇÚ’ÚLÚÚÚÚÚÚÚÚÚÚÚÛÛÛÛÛÛÛÛÛÛ�ÛìÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛìÛ�ÛÛÛÛÛÛÛÛÛ Û Û Û Û Û Û Û ÛX Ûê Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûê ÛX Û Û Û Û Û Û Û Ü Ü Ü Ü Ü Ü Ü– Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Ü– Ü Ü Ü Ü Ü Ü Þ Þ Þ Þ Þ Þ­ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þ­ Þ Þ Þ Þ Þ ß ß ß ß ß” ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ß” ß ß ß ß à à à àW àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àX à à à á á á áé áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áê á á áããã€ãÿãÿãÿãÿÝÿ Øÿ Øÿ ÙÿÞÿãÿãÿãÿãÿãÿãÿãÿãÿÞÿ Ùÿ Øÿ ØÿÝÿãÿãÿãÿãÿã€ããäääìäÿäÿäÿäÿÙÿãâúÿïïüÿÖÕøÿÚÿäÿäÿäÿäÿäÿäÿäÿäÿÚÿ×ÖùÿïïüÿãâúÿÙÿäÿäÿäÿäÿäëää æ æN æÿ æÿ æÿ æÿ æÿ Úÿÿÿÿÿÿÿÿÿññýÿ Ûÿ æÿ æÿ äÿ àÿ àÿ äÿ æÿ æÿ Ûÿññýÿÿÿÿÿÿÿÿÿ Úÿ æÿ æÿ æÿ æÿ æÿ æN æ ç ç’ çÿ çÿ çÿ çÿ çÿ Ûÿÿÿÿÿÿÿÿÿññýÿ Üÿ çÿ äÿ Ûÿ‘Žîÿ‘Žîÿ Ûÿ äÿ çÿ Üÿññýÿÿÿÿÿÿÿÿÿ Ûÿ çÿ çÿ çÿ çÿ çÿ ç“ ç é éÅ éÿ éÿ éÿ éÿ éÿ Ýÿÿÿÿÿÿÿÿÿññýÿ Þÿ æÿ Ýÿ¨¦óÿÿÿÿÿÿÿÿÿ¨¦óÿ Ýÿ æÿ Þÿññýÿÿÿÿÿÿÿÿÿ Ýÿ éÿ éÿ éÿ éÿ éÿ éÅ é ê êê êÿ êÿ êÿ êÿ êÿ Þÿÿÿÿÿÿÿÿÿññýÿ ßÿÞÿ©§óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©¦óÿÞÿ ßÿññýÿÿÿÿÿÿÿÿÿ Þÿ êÿ êÿ êÿ êÿ êÿ êê ê ì ìù ìÿ ìÿ ìÿ ìÿ ìÿ àÿÿÿÿÿÿÿÿÿññýÿàÿª§ôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ©¦ôÿàÿññýÿÿÿÿÿÿÿÿÿ àÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìù ìîîùîÿîÿîÿîÿîÿ âÿÿÿÿÿÿÿÿÿõõþÿª¨õÿÿÿÿÿÿÿÿÿÿÿÿÿ³°öÿ³°öÿÿÿÿÿÿÿÿÿÿÿÿÿª¨õÿõõþÿÿÿÿÿÿÿÿÿ âÿîÿîÿîÿîÿîÿîùîïïêïÿïÿïÿïÿïÿãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±¯öÿãÿãÿ±¯öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÿïÿïÿïÿïÿïÿïêïññÄñÿñÿñÿñÿñÿåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±¯öÿåÿîÿîÿåÿ±¯öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåÿñÿñÿñÿñÿñÿñÅñòò’òÿòÿòÿòÿòÿæÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ²¯÷ÿæÿïÿòÿòÿïÿæÿ²¯÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿæÿòÿòÿòÿòÿòÿò“òôôLôÿôÿôÿôÿôÿèÿÿÿÿÿÿÿÿÿÿÿÿÿ²°÷ÿèÿñÿôÿôÿôÿôÿñÿèÿ±¯÷ÿÿÿÿÿÿÿÿÿÿÿÿÿèÿôÿôÿôÿôÿôÿôMôõõõìõÿõÿõÿõÿêÿãâüÿðïþÿ¨¥÷ÿéÿòÿõÿõÿõÿõÿõÿõÿòÿéÿ§¤÷ÿðïþÿãâüÿêÿõÿõÿõÿõÿõêõõ÷÷÷€÷ÿ÷ÿ÷ÿ÷ÿñÿìÿëÿïÿôÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿôÿïÿëÿìÿñÿ÷ÿ÷ÿ÷ÿ÷ÿ÷€÷÷øøøøéøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøéøøøùùùùWùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùWùùùúúúúú“úÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿú”úúúúüüüüüü­üÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿü­üüüüüýýýýýýý–ýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿý–ýýýýýý ý ý ý ý ý ý ý ýX ýé ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýé ýX ý ý ý ý ý ý ý!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ€!þë!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þë!þ€!þ!þ!þ!þ!þ!þ!þ!þ!þ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿL!ÿ‘!ÿÆ!ÿè!ÿø!ÿø!ÿè!ÿÆ!ÿ‘!ÿL!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ(0` -ÿÿÿÿÿÓ)ÖLÖdØrÙ|Ù|ØrØdÖLÓ)ÿÿªÆ ×@Ù�ÙÅÙàÙõÝÿ âÿ!æÿ!æÿ âÿÝÿÙõÙàÙÅÙ�×@Æ ªÿÿÆÚaÙÆÙû ßÿ äÿ ßÿÜÿÙþÙüÙûÙûÙüÙþÜÿ ßÿ äÿ ßÿÙúÙÆÚaÔÿÿÙYÚÌ áÿ áÿÝÿÚþÙüÚýÙþÚþÚÿÚÿÚÿÚÿÚþÙþÚýÙüÚþÝÿ áÿ áÿÚÌ×ZÿÿÞÚ§ Ûÿ ãÿÚýÚýÙþÚþ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ ÚÿÚþÙþÚýÚý âÿ ÛÿÚ¨ÞÿÿÿÿØBÛ× !äÿ ÝÿÚü Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ ÛÿÚü Üÿ !äÿÛרCÿÿÿÿÛWÛð ãÿÛüÛþ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÛþÛü ãÿÜòÝZÿÿÿÝZÝø áÿÜü Ýÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ ÝÿÜü áÿÜùÝZÿÿÜB Þñ âÿ Ýü Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Ýü âÿ ÞñØCÿÿ× ÝØ !åÿ Ýü ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ Ýü !åÿ ÝØ× ÿÿ ߨ "éÿ ßü ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßü "éÿ ߨÿª Þ] ãÿ áÿ àþ áÿ àÿ áÿ àÿ áÿ áÿ áÿ áÿ àÿ àÿ áÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ áÿ áÿ áÿ áÿ àÿ àÿ àÿ áÿ ßþ áÿ ãÿ à]ªÿÔ ßÍ "éÿ àü áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ âÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ âÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ àü "éÿ ßÍÖÿ ßa"éÿ âý ãÿ ãÿ ãÿ ãÿ ãÿ ßÿ×ÿ20Öÿ31Öÿ%#ÖÿÜÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿÜÿ%#Öÿ31Öÿ20Öÿ×ÿ ßÿ ãÿ ãÿ ãÿ ãÿ ãÿ âý"éÿ ßaÿ¿ ãÅ"êÿ ãý!äÿ!äÿ !äÿ!äÿ äÿ&#Ùÿº¸îÿÙØöÿ×ÖõÿÑÐõÿwußÿÞÿ!åÿ !äÿ!äÿ!äÿ !äÿ!äÿ!äÿ !äÿ!äÿ!äÿ !äÿ!åÿÞÿwußÿÑÐõÿ×ÖõÿÙØöÿº¸îÿ&#Ùÿ äÿ!äÿ !äÿ!äÿ!äÿ ãý"êÿ ãÅÚÿÿà; ãù!çÿ ãþ!äÿ!äÿ!äÿ!äÿ äÿHFÖÿñïûÿùùÿÿõôþÿüúÿÿ«ªåÿÚÿ%#æÿ !äÿ!äÿ !äÿ!äÿ!åÿ!åÿ!äÿ !äÿ!äÿ !äÿ%#æÿÚÿ«ªåÿüúÿÿõôþÿùùÿÿñïûÿHFÖÿ äÿ!äÿ!äÿ!äÿ!äÿ ãþ!çÿ ãùà;ÿÿ å�"êÿ åþ åþ!åÿ!åÿ!åÿ!æÿ!åÿEDØÿíëúÿöõþÿññýÿøöÿÿ§¦åÿÜÿ%"èÿ!åÿ !åÿ!æÿ äÿÞÿÝÿ äÿ!æÿ !åÿ!åÿ%"èÿÜÿ§¦åÿøöÿÿññýÿöõþÿíëúÿEDØÿ!åÿ!æÿ!åÿ!åÿ!åÿ åþ åþ"êÿ å�ÿ åÅ#ñÿ æü!çÿ!çÿ!çÿ!çÿ"çÿ!æÿFDÙÿííúÿ÷öÿÿóòýÿùøÿÿ¨§åÿÝÿ%"éÿ !æÿ"èÿ ãÿ×ÿ”’æÿ•“æÿ×ÿ ãÿ"èÿ !æÿ%"éÿÝÿ¨§åÿùøÿÿóòýÿ÷öÿÿííúÿFDÙÿ!æÿ"çÿ!çÿ!çÿ!çÿ!çÿ æü#ðÿ çÅæ)åà"íÿ æý!çÿ!çÿ!çÿ!çÿ"çÿ!çÿFEÙÿîîúÿø÷ÿÿôóýÿúùÿÿ©¨æÿÞÿ$"éÿ"èÿ äÿ×ÿº¸îÿùøÿÿùøÿÿº¸îÿ×ÿ äÿ"èÿ$"éÿÞÿ©¨æÿùùÿÿôóýÿø÷ÿÿîîúÿFEÙÿ!çÿ"çÿ!çÿ!çÿ!çÿ!çÿ æý"íÿåàæ)!çL!èô"ëÿ!èþ"éÿ"éÿ"éÿ"éÿ"éÿ!éÿFFÚÿïîúÿùøÿÿõóýÿúúÿÿ©¨æÿßÿ.+ìÿ äÿØÿ»¹îÿù÷ÿÿöõþÿöõþÿù÷ÿÿ»¹îÿØÿ äÿ.+ìÿßÿ©¨æÿúúÿÿõóýÿùøÿÿïîúÿFFÚÿ!éÿ"éÿ"éÿ"éÿ"éÿ"éÿ!èþ"ëÿ!èõ!çL!êd"îÿ!éþ!éþ"éÿ"éÿ"éÿ"éÿ"êÿ!éÿHFÛÿðïúÿùùÿÿõôýÿüúÿÿª©çÿ âÿ"éÿÙÿ¼»ïÿùøÿÿø÷þÿöõþÿöõþÿø÷þÿùøÿÿ¼»ïÿÙÿ"éÿ âÿª©çÿüúÿÿõôýÿùùÿÿðïúÿHFÛÿ!éÿ"êÿ"éÿ"éÿ"éÿ"éÿ!éþ!éþ"îÿ!èd éu$õÿ!êü"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿHGÜÿñðúÿúúÿÿöõýÿýûÿÿ­¬çÿÝÿÜÿ½»ïÿúùÿÿùøþÿ÷öþÿøöþÿøöþÿ÷öþÿùøþÿúúÿÿ½»ïÿÜÿÝÿ­¬çÿýûÿÿöõýÿúúÿÿñðúÿHFÜÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ!êü$ôÿ!èr ê%ûÿ!ëû"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ëÿIGÝÿññúÿûúÿÿ÷öýÿýýÿÿ§§çÿÔÿ¿¾ñÿûúÿÿùøþÿ÷öþÿùøþÿûúÿÿûúÿÿùøþÿ÷öþÿùøþÿûúÿÿ¿¾ñÿÔÿ§§çÿýýÿÿ÷öýÿûúÿÿññúÿHGÝÿ"ëÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ!ëû%úÿ!ê{ ì%üÿ!íû"íÿ"íÿ"íÿ"íÿ"íÿ#îÿ"íÿIGÞÿòòûÿüüÿÿøøþÿþýÿÿ°¯ìÿ±°îÿýýÿÿúúþÿøøþÿùúþÿüüÿÿÆÆòÿÆÆòÿüüÿÿùúþÿøøþÿúúþÿýýÿÿ±°îÿ°¯ìÿþýÿÿøøþÿüüÿÿòòûÿIGÞÿ"íÿ#îÿ"íÿ"íÿ"íÿ"íÿ"íÿ!íû%üÿ ì~"íu%ùÿ"íü"îÿ"îÿ"îÿ"îÿ"îÿ!#îÿ"îÿIHßÿóòûÿýýÿÿùùþÿúúÿÿíëüÿööþÿüüÿÿøøþÿúúþÿýýÿÿÅÄòÿÜÿÜÿÅÄòÿýýÿÿúúþÿøøþÿüüÿÿööþÿíëüÿúúÿÿùùþÿýýÿÿóòûÿIGßÿ"îÿ!#îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"íü%ùÿ"íu!íd#òÿ"îþ"îþ#îÿ#îÿ#îÿ#îÿ!#îÿ"îÿJHßÿôóûÿýýÿÿùúþÿúúÿÿýýÿÿûûÿÿùúþÿûûÿÿýýÿÿÅÃòÿÞÿ"ëÿ"ëÿÞÿÅÃòÿýýÿÿûûÿÿùúþÿûûÿÿýýÿÿúúÿÿùúþÿýýÿÿôóûÿJHßÿ"îÿ!#îÿ#îÿ#îÿ#îÿ#îÿ"îþ"îþ#òÿ!íd!îL"ïô#òÿ"ïþ#ðÿ#ðÿ#ðÿ#ðÿ!#ðÿ"ðÿJHáÿõõûÿÿþÿÿûûþÿüüÿÿûûÿÿûúþÿüüþÿÿÿÿÿÆÅòÿ ßÿ"ìÿ##ñÿ##ñÿ"ìÿ ßÿÆÅòÿÿÿÿÿüüþÿûúþÿûûÿÿüüÿÿûûþÿÿÿÿÿõõûÿJHáÿ"ðÿ!#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ"ïþ#òÿ"ðô!îLì)"ïà$÷ÿ"ðý#ñÿ#ñÿ#ñÿ#ñÿ"#ñÿ#ñÿJHáÿõõûÿÿÿÿÿüûþÿýýÿÿüüÿÿýýÿÿÿÿÿÿÆÅòÿ ßÿ"ìÿ%$òÿ#ðÿ#ðÿ%$òÿ"ìÿ ßÿÆÅòÿÿÿÿÿýýÿÿüüÿÿýýÿÿüûþÿÿÿÿÿõõûÿJHáÿ#ñÿ"#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ"ðý$÷ÿ"ñàì)"ðÅ%üÿ"ñü#òÿ#òÿ#òÿ#òÿ"$òÿ#òÿKIâÿõöûÿÿÿÿÿüüþÿýüÿÿýýÿÿÿÿÿÿÇÆòÿ ßÿ"îÿ%$òÿ#ñÿ#òÿ#òÿ#ñÿ%$òÿ"îÿ ßÿÆÆòÿÿÿÿÿýýÿÿýüÿÿüüþÿÿÿÿÿõöûÿKIâÿ#òÿ"$òÿ#òÿ#òÿ#òÿ#òÿ"ñü%ûÿ"ðÅÿ"ò�$øÿ#òþ#òþ$óÿ$óÿ$óÿ#$óÿ#óÿKIãÿõöûÿÿÿÿÿüüþÿýýÿÿÿÿÿÿÈÆòÿ áÿ"îÿ&$ôÿ#òÿ$óÿ$óÿ$óÿ$óÿ#òÿ&$ôÿ"îÿ áÿÇÆòÿÿÿÿÿþýþÿüüþÿÿÿÿÿõöûÿKIãÿ#óÿ#$óÿ$óÿ$óÿ$óÿ#òþ#òþ$øÿ"ò�ÿÿ"ò;#óù$÷ÿ#òþ$ôÿ$ôÿ$ôÿ#$ôÿ#ôÿMKãÿüûýÿÿÿÿÿÿÿÿÿÿÿÿÿÈÆóÿ âÿ"ïÿ&$õÿ$óÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$óÿ&$õÿ"ïÿ âÿÈÆóÿÿÿÿÿÿÿÿÿÿÿÿÿüûýÿMKãÿ#ôÿ#$ôÿ$ôÿ$ôÿ$ôÿ#òþ$÷ÿ#óù"ò;ÿÿ$$ÿ"óÅ%ûÿ#ôý$õÿ$õÿ$ôÿ$ôÿ$õÿ/+èÿÅÄòÿæåùÿâáøÿ¶µðÿ(#äÿ"ðÿ&$öÿ$ôÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$ôÿ&$öÿ"ðÿ)$äÿµ´ðÿâáøÿæåùÿÅÄòÿ/+èÿ$õÿ$ôÿ$ôÿ$õÿ$õÿ#ôý%ûÿ"óÅ$$ÿÿ"ôa&ýÿ#öý$öÿ$öÿ$öÿ$öÿ$÷ÿ#òÿ"éÿ:7çÿ73èÿ"êÿ#óÿ#%÷ÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ#%÷ÿ#óÿ"êÿ73èÿ:7çÿ"éÿ#òÿ$÷ÿ$öÿ$öÿ$öÿ$öÿ#öý%üÿ"ôaÿð#öÌ&ÿÿ#öü$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ"$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ"$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ#öü&ÿÿ#÷Ìðÿÿ#ö]%úÿ$øÿ#öþ$÷ÿ$÷ÿ$÷ÿ$÷ÿ!$÷ÿ#%÷ÿ#%÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ#%÷ÿ#%÷ÿ!$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ#öþ$øÿ%úÿ#ö]ÿÿ$ø§&ÿÿ$øü%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ$øü&ÿÿ$ø¨ÿÿ ö$÷×&ÿÿ$øü%úÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%úÿ$øü&ÿÿ$÷×ï ÿÿ#÷A$ùï&ÿÿ$ùü%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ$ùü&ÿÿ$ùï#÷Aÿÿ#ùV$ú÷&ÿÿ$úü%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ$úü&ÿÿ$ú÷#ùWÿÿÿ$üU$ûï 'ÿÿ$ûü$úþ%üÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%üÿ$úþ$ûü 'ÿÿ%üñ"ùYÿÿÿÿ#÷A$û× 'ÿÿ&þÿ$ûü%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ$ûü&þÿ 'ÿÿ$üÖ"ÿBÿÿÿÿ ÿ$û§ &ýÿ"'ÿÿ%üý%üý%ûþ%üþ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ%üþ%ûþ%üý%üý"'ÿÿ &ýÿ$û§ ÿÿÿÿ%üY%ýË"'ÿÿ"'ÿÿ &ÿÿ%üþ%üü%üý%üþ%ýþ &ýÿ &ýÿ &ýÿ &ýÿ%ýþ%üþ%üý%üü%üþ &ÿÿ"'ÿÿ"'ÿÿ%ýË%üYÿÿð%ÿ`%ÿÅ!%ýú"'ÿÿ#'ÿÿ"'ÿÿ"&ÿÿ%ÿþ%ýü%ýû%ýû%ýü%ÿþ &ÿÿ"'ÿÿ#'ÿÿ"'ÿÿ!%ýú%ÿÅ$üaðÿÿÿâ $ÿ?!%ÿ�%ÿÅ%ýà%ÿô"'ÿÿ#'ÿÿ$'ÿÿ$'ÿÿ#'ÿÿ"'ÿÿ%ÿô%ýà%ÿÅ %ÿŽ $ÿ?ÿ ÿÿÿÿ%ø)"%ÿK#üd%þu$ÿ~$ÿ~%þu#þd"%ÿK%ø)ÿÿÿÿÿÿÿÿ(@€ PÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙÙÙÙÙÙÙÙHÙ|Ù©ÙÊÙÞÙîÙúÙúÙîÙÞÙÊÙ©Ù|ÙHÙÙÙÙÙÙÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚÚÚÚÚtÚÆÚüÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚüÚÆÚtÚÚÚÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚÚ?Ú´ÚýÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚýÚ´Ú?ÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛ@ÛÃÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÄÛAÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛ¥ÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛ¦Ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ÛU Ûð Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûñ ÛUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ü Ü” Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Ü• Üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ü ܾ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Ü Üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ý ÝÏ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÝÒ Ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Þ ÞÒ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ ÞÒ Þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Þ Þ¿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ ÞÁ Þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ß– ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ß–ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ßV ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ à àï àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àï àÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ á® áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ á®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ áC áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ âà âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿã>ãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿÞÿ Ôÿ Ïÿ Ïÿ Ïÿ Ïÿ Öÿßÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿßÿ Öÿ Ïÿ Ïÿ Ïÿ Ïÿ ÔÿÞÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿã>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿä´äÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ Õÿ �ìÿÔÓ÷ÿÔÓ÷ÿÔÓ÷ÿÔÓ÷ÿ’�éÿ ×ÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ ×ÿ’�éÿÔÓ÷ÿÔÓ÷ÿÔÓ÷ÿÔÓ÷ÿ �ìÿ Õÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿä´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿääûäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ Íÿóòþÿóòþÿóòþÿóòþÿóòþÿåäûÿ Îÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ Îÿåäûÿóòþÿóòþÿóòþÿóòþÿóòþÿ Íÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäûäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿåpåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿ Îÿôóþÿôóþÿôóþÿôóþÿôóþÿæåûÿ Ïÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿ Ïÿæåûÿôóþÿôóþÿôóþÿôóþÿôóþÿ Îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ æÃ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿÏÿôóþÿôóþÿôóþÿôóþÿôóþÿæåûÿÐÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ åÿ Ýÿ Üÿ åÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿÐÿæåûÿôóþÿôóþÿôóþÿôóþÿôóþÿÏÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ç çü çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿÏÿõôþÿõôþÿõôþÿõôþÿõôþÿçæûÿÐÿ çÿ çÿ çÿ çÿ çÿ çÿ ßÿÐÿlhâÿnjãÿÐÿ ßÿ çÿ çÿ çÿ çÿ çÿ çÿÐÿçæûÿõôþÿõôþÿõôþÿõôþÿõôþÿÏÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çü çÿÿÿÿÿÿÿÿÿÿÿÿ çI çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ Ïÿõôþÿõôþÿõôþÿõôþÿõôþÿçæûÿ Ðÿ çÿ çÿ çÿ çÿ çÿ ßÿÑÿ½»óÿõôþÿõôþÿ½»óÿÑÿ ßÿ çÿ çÿ çÿ çÿ çÿ Ðÿçæûÿõôþÿõôþÿõôþÿõôþÿõôþÿ Ïÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çIÿÿÿÿÿÿÿÿÿÿÿÿ è| èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ Ðÿöõþÿöõþÿöõþÿöõþÿöõþÿèçûÿ Ñÿ èÿ èÿ èÿ èÿ àÿÒÿ¾¼óÿöõþÿöõþÿöõþÿöõþÿ¾¼óÿÒÿ àÿ èÿ èÿ èÿ èÿ Ñÿèçûÿöõþÿöõþÿöõþÿöõþÿöõþÿ Ðÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ è}ÿÿÿÿÿÿÿÿÿÿÿÿ é¨ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ Ñÿöõþÿöõþÿöõþÿöõþÿöõþÿèçûÿ Òÿ éÿ éÿ éÿ áÿÓÿ¾¼óÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ¾¼óÿÓÿ áÿ éÿ éÿ éÿ Òÿèçûÿöõþÿöõþÿöõþÿöõþÿöõþÿ Ñÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ é¨ÿÿÿÿÿÿÿÿÿÿÿÿ êÉ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ Òÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿéèûÿ Óÿ êÿ êÿ âÿÔÿ¿½óÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ¿½óÿÔÿ âÿ êÿ êÿ Óÿéèûÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ Òÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÉÿÿÿÿÿÿÿÿÿÿÿÿ êã êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ Òÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿêéûÿ Óÿ êÿ âÿÔÿÀ¾óÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿÀ¾óÿÔÿ âÿ êÿ Óÿêéûÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ Òÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êàÿÿÿÿÿÿÿÿÿÿÿÿ ëó ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ Óÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿêéûÿ Ôÿ ãÿÕÿÀ¾ôÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿÀ¾ôÿÕÿ ãÿ Ôÿêéûÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ Óÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëíÿÿÿÿÿÿÿÿÿÿÿÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ Ôÿùøþÿùøþÿùøþÿùøþÿùøþÿëêüÿ ÕÿÖÿÁ¿ôÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿÁ¿ôÿÖÿ Õÿëêüÿùøþÿùøþÿùøþÿùøþÿùøþÿ Ôÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìùÿÿÿÿÿÿÿÿÿÿÿÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿ Õÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿëëýÿ×ÿÁÀõÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿÐÏøÿÐÏøÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿÁÀõÿ×ÿëëýÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿ Õÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿÿÿÿÿÿÿÿÿÿÿÿÿîóîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ ÖÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿóóþÿÃÁõÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿËÊ÷ÿ!Øÿ!ØÿËÊ÷ÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿÃÁõÿóóþÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿ Öÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîòÿÿÿÿÿÿÿÿÿÿÿÿîãîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ ÖÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿËÊ÷ÿ"Øÿåÿåÿ"ØÿËÊ÷ÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿ ÖÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîäÿÿÿÿÿÿÿÿÿÿÿÿïÉïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿ ×ÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿÌÊ÷ÿ"Ùÿæÿïÿïÿæÿ"ÙÿÌÊ÷ÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿ ×ÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÉÿÿÿÿÿÿÿÿÿÿÿÿð¨ðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿØÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿÍË÷ÿ#Úÿçÿðÿðÿðÿðÿçÿ#ÚÿÍË÷ÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿØÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿð¨ÿÿÿÿÿÿÿÿÿÿÿÿñ{ñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿØÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿÍË÷ÿ#Úÿçÿñÿñÿñÿñÿñÿñÿçÿ#ÚÿÍË÷ÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿØÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñ}ÿÿÿÿÿÿÿÿÿÿÿÿñIñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿØÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿÎÌ÷ÿ$Úÿçÿñÿñÿñÿñÿñÿñÿñÿñÿçÿ$ÚÿÍÌ÷ÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿØÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñIÿÿÿÿÿÿÿÿÿÿÿÿòòüòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿÙÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿÎÌ÷ÿ$Ûÿèÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿèÿ$ÛÿÍÌ÷ÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿÙÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòüòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóÃóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿÚÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÏÍ÷ÿ$Üÿéÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿéÿ$ÜÿÎÍ÷ÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÚÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÃÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôpôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÛÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÏÍøÿ$Ýÿêÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿêÿ$ÝÿÎÍøÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÛÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôpÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôûôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏÎøÿ%Ýÿêÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿêÿ%ÝÿÏÎøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôûôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ³õÿõÿõÿõÿõÿõÿõÿõÿõÿõÿåÿ«©òÿàßúÿàßúÿÞÝúÿ­«óÿ%Þÿëÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿëÿ%Þÿ¬ªóÿÞÝúÿàßúÿàßúÿ«©òÿåÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõ³ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿö>öÿöÿöÿöÿöÿöÿöÿöÿöÿöÿðÿæÿàÿàÿáÿæÿðÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿðÿæÿáÿàÿàÿæÿðÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿö>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷Ã÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷Ãÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷A÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷Cÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿø®øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿø®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùïùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùïùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùUùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùVÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿú•úÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿú•ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúú½úÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿú½úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûÍûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÎûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÌüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÐüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü ü¼üÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÁüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýý“ýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿý“ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ýU ýð ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýð ýUÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ý ý¤ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ý¤ ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ þ þ@ þ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þ þ@ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þ!þ!þ!þ>!þ³!þü!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þü!þ³!þ?!þ!þ!þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿs!ÿÅ!ÿü!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿü!ÿÅ!ÿs!ÿ!ÿ!ÿ!ÿ!ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿH!ÿ|!ÿ§!ÿÈ!ÿã!ÿó!ÿÿ!ÿÿ!ÿó!ÿã!ÿÉ!ÿ§!ÿ|!ÿH!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(`À ´ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿªªÿÔÌ Ä ÚÏÏÚÄ Ì ÔÿªªÿÿÿÚÙ"Ó:Ø\Ù�ØŸ׺×ÎØÝØåÙíÙíÙåØÝ×Î׺ØŸÙ�Ø\Ó:Ù"ÚÿÿªÿÔÖLÙ�Ù¯ÙÛÚÿ ãÿ àÿ àÿ ßÿßÿßÿÞÿÞÿÞÿÞÿßÿßÿ ßÿ àÿ àÿ ãÿÚÿÙÛٯـÖLÔÿªÿÿÐ ØIÙœÙÓÙõ !äÿ äÿÞÿÚÿÙýÙýÙýÙýÙýÙýÙýÙýÙýÙýÙýÙýÙýÙýÙýÙýÚÿÞÿ äÿ !äÿÙõÙÓÙœØIÐ ÿÿÿÕ%ØrØÏÙû àÿ âÿÛÿÙüÙüÙýÙþÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙþÙýÙüÙüÛÿ âÿ àÿÙûØÏØrÕ%ÿÿÔ*Ø‹Ùã âÿ ßÿÜÿÙýÙüÙþÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙþÙüÙýÜÿ ßÿ âÿÙãØ‹Õ+ÿªÙØŠÚå äÿ ßÿÙýÚýÙþÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙþÚýÙý ßÿ äÿÙæØŠÙªÿªÌÚbÙÜ âÿ ßÿÙüÚýÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚýÙü ßÿ âÿÙÜØc̪ÿÿ×-Ù° ßÿ àÿÙþÙýÚÿ ÚÿÚÿ ÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿ ÚÿÚÿÙýÙþ àÿ ßÿÚ°×-ÿª ÚbÚè äÿÚþÚýÚþ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ Úÿ ÚÿÚþÚýÚþ äÿÚè ÚcªªÄ Ù– Ýÿ áÿÚüÛþ Üÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ ÜÿÛþÛû áÿ ÝÿÛ–Ô ªÿ× Ú¾ äÿ ÝÿÛü Üÿ Üÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Üÿ ÜÿÛü Ýÿ äÿÛ½× ÿÿ×3ÚÔ !äÿÚüÛþ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÛþÚü !äÿÚÔ×3ÿÿ×: Ûà !åÿÜû Üÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÜÿÛü !äÿ ÛàÛ:ÿÿÛ9Üå !äÿÜû Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÝÿÜû !äÿÜåÛ:ÿªÜ3 Ýà !åÿÜû Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ ÞÿÜû !åÿ ÝàÜ3ªªÝÝÓ !æÿÝû Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ ÞÿÝû !æÿÝÓݪÿÔ Û½ !æÿ Üü Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Üü !æÿÛ½Ô ÿÿ Þ– !æÿ Þü ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ Þü !æÿ Þ–ÿª Ýc àÿ ßÿ Þþ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ Þþ ßÿ àÿ ÝcªªÜ, Þç !äÿ ßü ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßü !äÿ ÞèÝ-ªÿÌ ݰ "éÿ ßü ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßü "éÿ ß°Ìÿ Ýb !äÿ ßþ ßþ àÿ ßÿ àÿ àÿ àÿ àÿ àÿ àÿ ßÿ àÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ àÿ ßÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ ßÿ àÿ ßþ ßþ !äÿ ßbá ßÛ !æÿ àý áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ àý !æÿ àÛáÿ ሠ!èÿ àþ àþ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ àþ àþ !èÿ ߉ÿÿà* àå !çÿ áý âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ áý !çÿ àåà*ÿÿ áŠ"ëÿ áü âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ!ãÿ$!ãÿ"!ãÿ"!ãÿ"!ãÿ"!ãÿ$!ãÿ!ãÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ!ãÿ$!ãÿ"!ãÿ"!ãÿ"!ãÿ"!ãÿ$!ãÿ!ãÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ áü"ëÿ áŠÿªã%âã!çÿ âý ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ âÿ ãÿ!ãÿßÿÞÿÞÿÞÿÞÿÞÿÞÿßÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿßÿÞÿÞÿÞÿÞÿÞÿÞÿßÿ!ãÿ ãÿ âÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ âý!çÿâãã%ªÿár"ìÿ âý ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ!äÿÞÿRPÙÿ‡†Ûÿ„ƒÛÿ„ƒÛÿ„ƒÛÿ„ƒÛÿ‡†Ûÿ_]ÙÿÚÿ!äÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ!äÿÚÿ_]Ùÿ‡†Ûÿ„ƒÛÿ„ƒÛÿ„ƒÛÿ„ƒÛÿ‡†ÛÿSQÙÿÞÿ!äÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ ãÿ âý"ìÿárÿÿç  ãÏ"éÿ ãý !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ!äÿ áÿQNÙÿÙ×÷ÿûúÿÿø÷ÿÿù÷ÿÿù÷ÿÿøöÿÿüúÿÿÞÜøÿQMÚÿ áÿ!äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ!äÿ áÿQMÚÿÞÜøÿüúÿÿøöÿÿù÷ÿÿù÷ÿÿø÷ÿÿûúÿÿØÖ÷ÿOLÙÿ áÿ!äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ !äÿ ãý"éÿ ãÏç ÿÿ ãI ãü!æÿ ãþ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ !äÿ$!åÿßÿ††ÜÿúúÿÿñðþÿòñþÿòñþÿòñþÿññþÿôóþÿñðþÿywâÿÝÿ!åÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!åÿÝÿywâÿñðþÿôóþÿññþÿòñþÿòñþÿòñþÿñðþÿúùÿÿ†…Üÿßÿ$!åÿ !äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ ãþ!æÿ ãü ßIÿ ãœ"ëÿ äý!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ$"æÿ àÿ„ƒÜÿùøÿÿóòþÿôóþÿôóþÿôóþÿóòþÿõõþÿïîýÿyvâÿÞÿ!æÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!æÿÞÿyvâÿïîýÿõõþÿóòþÿôóþÿôóþÿôóþÿóòþÿùøÿÿ„ƒÜÿ àÿ$"æÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ äý"ëÿ ãœÿÖ ãÔ"íÿ äü!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ !äÿ$"æÿ àÿ„ƒÝÿùøÿÿóòþÿôóþÿôóþÿôóþÿóòþÿõõþÿðïýÿyvãÿÞÿ!æÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!åÿ!åÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!æÿÞÿyvãÿðïýÿõõþÿóòþÿôóþÿôóþÿôóþÿóòþÿùøÿÿ„ƒÝÿ àÿ$"æÿ !äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ!äÿ äü"íÿ äÓâÿÿáM äö!èÿ äþ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ$"çÿ áÿ…„Ýÿùùÿÿóòþÿôóþÿôóþÿôóþÿóòþÿõõþÿðïýÿyvãÿßÿ!æÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ"çÿ!äÿ!äÿ!"çÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!æÿßÿyvãÿðïýÿõõþÿóòþÿôóþÿôóþÿôóþÿóòþÿùùÿÿ…„Ýÿ áÿ$"çÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ!åÿ äþ!çÿ äöáMÿÿå�#òÿ åü!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ%"çÿ áÿ…„Ýÿúúÿÿôóþÿõóþÿõôþÿõôþÿôóþÿ÷öþÿñïýÿzwãÿßÿ"çÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!çÿ!æÿßÿÛÿÛÿßÿ!æÿ!çÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ"çÿßÿzwãÿñïýÿ÷öþÿôóþÿõôþÿõôþÿõóþÿôóþÿúúÿÿ…„Ýÿ áÿ%"çÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ!æÿ åü#òÿå�ÿÿÚ ç¯#ñÿ æü!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!æÿ%"èÿ âÿ…„Ýÿúúÿÿôóþÿõôþÿõôþÿõôþÿôóþÿ÷öþÿñïýÿzwãÿ àÿ"èÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!æÿ"èÿ !äÿÙÿ”“åÿÊÈòÿÊÉóÿ”“åÿÙÿ !äÿ"èÿ!æÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ"èÿ àÿzwãÿñïýÿ÷öþÿôóþÿõôþÿõôþÿõôþÿôóþÿúúÿÿ…„Ýÿ âÿ%"èÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ æü#ñÿæ°Úÿÿè" åÛ"ëÿ æý!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ%"èÿ âÿ…„Ýÿúúÿÿôóþÿõôþÿõôþÿõôþÿõóþÿ÷öþÿñðýÿzwãÿ àÿ"èÿ!çÿ!çÿ!çÿ!çÿ!çÿ!æÿ"èÿ !åÿÖÿ¢ èÿõôÿÿýüÿÿýüÿÿõôÿÿ¢ èÿÖÿ!åÿ"èÿ!æÿ!çÿ!çÿ!çÿ!çÿ!çÿ"èÿ àÿzxãÿñðýÿ÷öþÿõóþÿõôþÿõôþÿõôþÿôóþÿúúÿÿ…„Ýÿ âÿ%"èÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ!çÿ æý"ëÿ æÚè"ÿÿä:"éÿ!èÿ çþ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ%"éÿ ãÿ†…Þÿüúÿÿõôþÿõõþÿõõþÿõõþÿõôþÿøöþÿññýÿ{wäÿ áÿ"éÿ!èÿ!èÿ!èÿ!èÿ!èÿ"éÿ!æÿ×ÿ¤¡èÿõôþÿø÷þÿôóýÿôóýÿø÷þÿõôþÿ£¡èÿ×ÿ!æÿ"éÿ!çÿ!èÿ!èÿ!èÿ!èÿ"éÿ áÿ{wäÿòñýÿøöþÿõôþÿõõþÿõõþÿõõþÿõôþÿûúÿÿ†…Þÿ ãÿ%"éÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ çþ!èÿ"éÿä:ÿÿæ\#òÿ çý!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ%"éÿ ãÿ†…Þÿüúÿÿõôþÿõõþÿõõþÿõõþÿõôþÿøöþÿññýÿ{xäÿ áÿ"éÿ!èÿ!èÿ!èÿ!èÿ"éÿ!æÿ×ÿ£¡èÿõõÿÿø÷þÿõóþÿöõþÿöõþÿõóþÿø÷þÿõôÿÿ£ èÿ×ÿ!æÿ"éÿ!èÿ!èÿ!èÿ!èÿ"éÿ áÿ{xäÿòñýÿøöþÿõôþÿõõþÿõõþÿõõþÿõôþÿûúÿÿ†…Þÿ ãÿ%"éÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ!èÿ çý#òÿæ\ÿÿ!ç€#ðÿ!èý"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ!èÿ&#éÿ äÿ†…ßÿýûÿÿõõþÿööþÿööþÿööþÿöõþÿù÷þÿòòýÿ{xäÿ âÿ"éÿ!èÿ"éÿ!èÿ"éÿ!çÿØÿ¤¡èÿöõÿÿùøþÿõôþÿ÷öþÿööþÿööþÿ÷öþÿõôþÿùøþÿöõÿÿ£¡èÿØÿ!çÿ"éÿ!èÿ"éÿ!èÿ"éÿ âÿ{xäÿóòýÿù÷þÿöõþÿööþÿööþÿööþÿõõþÿüûÿÿ†…ßÿ äÿ&#éÿ!èÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ!èý#ðÿç�ÿÿÿ!èŸ#ðÿ!èý"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ%#êÿ äÿ†…ßÿýûÿÿöõþÿööþÿ÷öþÿ÷öþÿöõþÿùøþÿóòýÿ{xåÿ âÿ"êÿ"éÿ"éÿ"êÿ"èÿÙÿ¤¡èÿöõþÿùøþÿõõþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿõõþÿùøþÿöõþÿ£¡èÿØÿ"èÿ"êÿ"éÿ"éÿ"êÿ âÿ{xåÿóòýÿùøþÿöõþÿ÷öþÿ÷öþÿööþÿöõþÿýûÿÿ†…ßÿ äÿ&#êÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ!èý#ðÿ!èŸÿÿÿÿ çº#ðÿ!éý"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ&#ëÿ!åÿ‡†àÿýüÿÿööþÿ÷öþÿ÷öþÿ÷öþÿööþÿùøþÿóòýÿ|yæÿ ãÿ"ëÿ"éÿ"ëÿ"éÿÙÿ¤¡éÿ÷öÿÿùùþÿöõþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿöõþÿùùþÿ÷öÿÿ¤¡éÿÙÿ"éÿ"ëÿ"éÿ"ëÿ ãÿ|yæÿóòýÿùøþÿööþÿ÷öþÿ÷öþÿ÷öþÿööþÿýüÿÿ‡†àÿ!åÿ&#ëÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ"éÿ!éý#ðÿ!è¹Ôÿÿå !éÌ#ðÿ!éý"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"éÿ&$ëÿ!åÿ‡†àÿýýÿÿ÷öþÿøöþÿøöþÿøöþÿ÷öþÿùùþÿôóýÿ|yæÿ äÿ"êÿ"êÿ"éÿÙÿ¤¢éÿøöÿÿúùþÿööþÿø÷þÿøöþÿøöþÿøöþÿøöþÿøöþÿøöþÿøöþÿøöþÿø÷þÿööþÿúùþÿøöÿÿ¤¡èÿÙÿ"éÿ"êÿ"êÿ ãÿ|yæÿôóýÿùùþÿ÷öþÿøöþÿøöþÿøöþÿ÷öþÿýýÿÿ‡†àÿ!åÿ&$ëÿ"éÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ!éý#ðÿ!éÌå ÿë !êÞ#ðÿ!êý"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ&#ìÿ!æÿ‡†àÿýýÿÿ÷öþÿø÷þÿø÷þÿø÷þÿ÷öþÿúùþÿôóýÿ|yæÿ äÿ##íÿ"éÿÚÿ¤¢éÿ÷öþÿúúþÿ÷öþÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ÷öþÿúúþÿ÷öþÿ¤¡éÿÚÿ"éÿ##íÿ äÿ|zæÿôóýÿúùþÿ÷öþÿø÷þÿø÷þÿø÷þÿ÷öþÿýýÿÿ‡†àÿ!æÿ&#ìÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ"êÿ!êý#ðÿ!éÞë ÿì!êå#ñÿ!ëý"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ&$íÿ!çÿˆ‡àÿþýÿÿø÷þÿùøþÿùøþÿùøþÿù÷þÿûúþÿõôýÿ}zæÿ!åÿ"ëÿÚÿ¤¢éÿù÷ÿÿûúþÿøöþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿøöþÿøöþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿøöþÿûúþÿù÷ÿÿ¤¡éÿÚÿ"ëÿ!åÿ}zæÿõôýÿûúþÿù÷þÿùøþÿùøþÿùøþÿø÷þÿþýÿÿˆ‡àÿ!çÿ&$íÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ"ëÿ!ëý#ñÿ!êåìÿÿß!ëí#ñÿ!ëý"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ&$íÿ!èÿˆ‡áÿþýÿÿø÷þÿùøþÿùøþÿùøþÿù÷þÿûúþÿõôýÿ|çÿ äÿÜÿ¤¢éÿù÷ÿÿûúþÿøöþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿøöþÿýýÿÿýýÿÿøöþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿøöþÿûúþÿù÷ÿÿ¤¢éÿÜÿ äÿ|çÿõôýÿûúþÿù÷þÿùøþÿùøþÿùøþÿø÷þÿþýÿÿˆ‡áÿ!èÿ($íÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ!ëý#ñÿ!ëíßÿÿß!ëí#ñÿ!ëý"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ($îÿ!èÿˆ‡áÿþþÿÿøøþÿùùþÿùùþÿùùþÿøøþÿûúÿÿõõþÿ}{çÿ×ÿ¦¤ëÿøøÿÿûûÿÿø÷þÿùùÿÿùùþÿùùþÿùùþÿùùþÿùùþÿø÷þÿýýÿÿååúÿååùÿýýÿÿø÷þÿùùþÿùùþÿùùþÿùùþÿùùþÿùùÿÿø÷þÿûûÿÿøøÿÿ¥£ëÿ×ÿ}{çÿõõþÿúúÿÿøøþÿùùþÿùùþÿùùþÿøøþÿþþÿÿˆ‡áÿ!èÿ($îÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ"ìÿ!ëý#ñÿ!ëíßÿÿì!ìå#òÿ!ìý"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ(%îÿ!éÿˆˆâÿÿÿÿÿùùþÿùúÿÿùúÿÿùúÿÿùùþÿüüÿÿõõþÿsoåÿž�êÿúúÿÿüüÿÿøøþÿùúÿÿùúÿÿùúÿÿùúÿÿùúÿÿùúÿÿøøþÿÿÿÿÿßÞøÿC?ßÿC?ßÿßÞøÿÿÿÿÿøøþÿùúÿÿùúÿÿùúÿÿùúÿÿùúÿÿùúÿÿøøþÿüüÿÿùúÿÿ�œêÿsoåÿõõþÿüüÿÿùùþÿùúÿÿùúÿÿùúÿÿùùþÿÿÿÿÿˆˆâÿ!éÿ(%îÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ"íÿ!ìý#òÿ!ìåìÿÿë !íÞ$óÿ!íý"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ($îÿ!éÿˆˆâÿÿÿÿÿùùÿÿùúÿÿùúÿÿùúÿÿùúÿÿûúÿÿøøþÿààùÿõõþÿýýÿÿùùþÿúúÿÿùúÿÿùúÿÿùúÿÿùúÿÿùúÿÿùøþÿÿÿÿÿßÞøÿIFàÿ!èÿ!èÿJGàÿßÞøÿÿÿÿÿùøþÿùúÿÿùúÿÿùúÿÿùúÿÿùúÿÿúúÿÿùùþÿýýÿÿõõþÿààùÿøøþÿûúÿÿùúÿÿùúÿÿùúÿÿùúÿÿùùÿÿÿÿÿÿˆˆâÿ!éÿ(%îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ!íý$óÿ!íÞë ÿÿå !íÌ$ôÿ"íý"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ(%ïÿ!éÿ‰ˆãÿÿÿÿÿùúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿþÿÿÿüüÿÿùùþÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿùøþÿÿÿÿÿßÞøÿLIáÿ!çÿ&#ïÿ&#ïÿ!çÿLJáÿßÞøÿÿÿÿÿùøþÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿùùþÿüüÿÿþÿÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿùúÿÿÿÿÿÿ‰ˆãÿ!éÿ(%ïÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"îÿ"íý$ôÿ!íÌå ÿÿÿ íº$õÿ"íý#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ(%ïÿ"êÿ‰‰ãÿÿÿÿÿúúþÿûúÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿùúþÿúúþÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûúÿÿùúþÿÿÿÿÿààøÿKGáÿ!èÿ(%ðÿ"îÿ"îÿ(%ðÿ!èÿKHáÿààøÿÿÿÿÿùúþÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿúúþÿùúþÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿúúþÿÿÿÿÿ‰‰ãÿ"êÿ)%ïÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ#îÿ"íý$õÿ íºÿÿÿÿ!îž$÷ÿ"îý#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#îÿ(%ðÿ"ëÿ‰‰äÿÿÿÿÿúúÿÿûúÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿùúþÿÿÿÿÿßßøÿKGâÿ!éÿ(%ñÿ"îÿ#ïÿ#ïÿ"îÿ(%ñÿ!éÿKHâÿààøÿÿÿÿÿùúþÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿúúÿÿÿÿÿÿ‰‰äÿ"êÿ(%ðÿ#îÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ#ïÿ"îý$öÿ"ï¡ÿÿÿ!ï€$÷ÿ"ïý#ïÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ïÿ)&ñÿ"ìÿЉäÿÿÿÿÿûûÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿúúþÿÿÿÿÿááøÿNKâÿ!éÿ(%ñÿ#ïÿ#ïÿ#ðÿ#ðÿ#ïÿ#ïÿ)%ñÿ!éÿNKâÿááøÿÿÿÿÿúúþÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿûûÿÿÿÿÿÿЉäÿ"ìÿ)&ñÿ#ïÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ïÿ"ïý$÷ÿ!ï‚ÿÿ!î[%úÿ"ïý#ïÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ïÿ)&ñÿ"ìÿЉäÿÿÿÿÿûûÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿúúþÿÿÿÿÿââøÿLIâÿ!éÿ)&òÿ#ïÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ïÿ)&òÿ!éÿMIâÿââøÿÿÿÿÿúúþÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿûûÿÿÿÿÿÿЉäÿ"ìÿ)&ñÿ#ïÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ðÿ#ïÿ"ïý%úÿ!î[ÿÿí:#ñÿ#ñÿ"ðþ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ðÿ)&òÿ"íÿŠŠåÿÿÿÿÿüüÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿûûþÿÿÿÿÿââøÿLIâÿ"êÿ)&òÿ#ðÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ðÿ)&òÿ"êÿMIãÿââøÿÿÿÿÿûûþÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿüüÿÿÿÿÿÿŠŠåÿ"íÿ)&òÿ#ðÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ"ðþ#ñÿ#ñÿí:ÿÿð"!ðÚ$öÿ"ðý#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ)&òÿ"íÿŠŠäÿÿÿÿÿüüÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿûûþÿÿÿÿÿãâøÿQMãÿ"êÿ)&òÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ)&òÿ"êÿQMãÿãâøÿÿÿÿÿûûþÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿüüÿÿÿÿÿÿŠŠäÿ"íÿ)&òÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ"ðý$öÿ!ðÚð"ÿÿ$$ÿ"ñ¯%üÿ"ñü#òÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#òÿ#ñÿ)&òÿ"íÿŠŠåÿÿÿÿÿüüÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿûûþÿÿÿÿÿãâøÿNJãÿ"êÿ)&óÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#òÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ)&óÿ"êÿNJãÿãâøÿÿÿÿÿûûþÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿüüÿÿÿÿÿÿŠŠåÿ"íÿ+&òÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#ñÿ#òÿ"ñü%üÿ"ñ¯$$ÿÿÿ#ñ€&þÿ"ñü#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ+&óÿ"îÿ‹ŠåÿÿÿÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿüüþÿÿÿÿÿãâùÿNKãÿ"ëÿ)&óÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ)&óÿ"ëÿNKãÿãâùÿÿÿÿÿüüþÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿÿÿÿÿ‹Šåÿ"îÿ+&óÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ"ñü&ÿÿ!ñ�ÿÿ!ñM"ñö$õÿ"ñþ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ+'ôÿ"îÿ‹‹åÿÿÿÿÿýýÿÿýýÿÿþþÿÿþýÿÿþýÿÿþþÿÿþýÿÿüüþÿÿÿÿÿäãøÿRPäÿ"ìÿ+&ôÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ+&ôÿ"ìÿRPäÿäãùÿÿÿÿÿüüþÿþýÿÿþþÿÿþýÿÿþýÿÿþþÿÿýýÿÿýýÿÿÿÿÿÿ‹Šåÿ"îÿ+'ôÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ"ñþ$õÿ"ñö!ñMÿÿð#òÓ%ûÿ#òü#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ+'ôÿ"îÿ‹ŠåÿÿÿÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýüþÿÿÿÿÿäãùÿPMäÿ"ìÿ+&ôÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ+&ôÿ"ìÿPMãÿäãøÿÿÿÿÿýüþÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿÿÿÿÿ‹Šåÿ"îÿ+'ôÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òÿ#òü%ûÿ#òÓðÿÿ"ñ›%ûÿ#óý$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ+'õÿ"ïÿ‹ŠæÿÿÿÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿüüþÿÿÿÿÿäãùÿPMåÿ"îÿ+'õÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ+'õÿ"íÿPMäÿäãùÿÿÿÿÿüüþÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿÿÿÿÿ‹Šæÿ"ïÿ+'õÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ$óÿ#óý%ûÿ#ñœÿÿ"ñI#óû$öÿ#òþ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$óÿ,(õÿ"ðÿ��æÿÿÿÿÿýýÿÿþýÿÿþþÿÿýýÿÿÿÿÿÿÿÿÿÿääùÿTQåÿ"îÿ+'öÿ$óÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$óÿ+'öÿ"îÿSQåÿääùÿÿÿÿÿÿÿÿÿýýÿÿþþÿÿþýÿÿýýÿÿÿÿÿÿ�Œæÿ"ðÿ,(õÿ$óÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ#òþ$öÿ#óû"ñIÿÿç #óÎ%ûÿ#óý$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ#$õÿ#òÿYWæÿäãùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýÿÿÓÓõÿWVåÿ"îÿ+'öÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ+'öÿ"îÿWVåÿÔÓõÿýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãâøÿWTæÿ#òÿ#$õÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ$ôÿ#óý%ûÿ#óÎç ÿÿ#ór&ÿÿ#ôý$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ"$öÿ"ðÿYWæÿ��çÿ‹‹çÿ‹‹çÿŒŒçÿ�€çÿ"èÿ"ðÿ(%÷ÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ(%÷ÿ"ðÿ"èÿ�€çÿŒŒçÿ‹‹çÿ‹‹çÿ��çÿYWçÿ"ðÿ"$öÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ$õÿ#ôý&ÿÿ#órÿª"ñ%"õâ%ûÿ#õý$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ"$÷ÿ#ôÿ#òÿ#òÿ#òÿ#òÿ#òÿ$õÿ%$÷ÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ%$÷ÿ$õÿ#òÿ#òÿ#òÿ#òÿ#òÿ#ôÿ"$÷ÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ#õý%ûÿ"õâ"ñ%ªÿ#õŠ&ÿÿ#õü$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ%$÷ÿ,(÷ÿ,(÷ÿ,(÷ÿ,(÷ÿ+&÷ÿ!$÷ÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ!$÷ÿ+&÷ÿ,(÷ÿ,(÷ÿ,(÷ÿ,(÷ÿ%$÷ÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ$öÿ#õü&ÿÿ#õŠÿÿ$ò*#öå%üÿ#öý$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ#öý%üÿ#öå$ò*ÿÿ#õˆ&ÿÿ#öþ#öþ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ#öþ#öþ&ÿÿ#õˆÿÿõ"öÛ&ýÿ#öý$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ#öý&þÿ"öÛõÿ$ùb&ýÿ#÷þ#÷þ$øÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$÷ÿ$øÿ#÷þ#÷þ&ýÿ!ôbÿÿÌ"÷°&ÿÿ#÷ü$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ$øÿ#÷ü&ÿÿ"ö°Ìÿÿ"ó,$øç&ÿÿ$øü%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ$øü&ÿÿ$øç"ó,ÿÿ$ùb%ûÿ%úÿ$øþ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ%ùÿ$øþ%úÿ%ûÿ$ùbÿÿ#ù–&ÿÿ$ùü%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ$ùü&ÿÿ#ù–ÿÿé $ø½&ÿÿ$ùü%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ$ùü&ÿÿ$ø½ÿ ÿÿ"ö$øÒ 'ÿÿ$úû%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ%úÿ$úû 'ÿÿ$øÓ"öÿÿ#ú3$úà&ÿÿ$úû%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ$úû&ÿÿ$úà#ú3ÿÿ#ú9$úå&ÿÿ$úû%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ$úû&ÿÿ$úå#ú:ÿÿ#ú9$úß 'ÿÿ$úü%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ$úü 'ÿÿ$ûß#ÿ9ÿÿ#ù2$ûÔ 'ÿÿ$ûü$úþ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%üÿ%ûÿ%ûÿ%üÿ$úþ$ûü 'ÿÿ$ûÔ#ù2ÿÿ ö%ú½ 'ÿÿ&ýÿ$ûü%üÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ%ûÿ$ûü&ýÿ 'ÿÿ%ú½ öÿÿÿ %û•&þÿ 'ÿÿ$ûü%üþ&ýÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üÿ%üþ$ûü 'ÿÿ&þÿ%û•ÿ ÿÿ$üb%üç"'ÿÿ%üþ%üý%üþ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ%üþ%üý%üþ"'ÿÿ%üç$übÿÿ"ù,%ü° 'ÿÿ 'ÿÿ%ûþ%üý &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ%üý%ûþ 'ÿÿ 'ÿÿ%ü°"ù,ÿÿÿÿ$ùa%üÚ"'ÿÿ 'ÿÿ%üü%üý &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ &ýÿ%üý%üü 'ÿÿ"'ÿÿ%üÚ$üaÿÿÿÿõ%û‰%ÿå"'ÿÿ 'ÿÿ%ýý%ýý%ýþ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ%ýþ%ýý%ýý 'ÿÿ"'ÿÿ%ÿå%û‰õÿÿÿ$ø*$û‹%ÿã"'ÿÿ 'ÿÿ &ÿÿ%ÿý%ýü%ýþ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ%ýþ%ýü%ÿý &ÿÿ 'ÿÿ"'ÿÿ%üã$û‹$ø*ÿÿÿÿ""ÿ%!$üq$ýÏ%ýû"'ÿÿ"'ÿÿ &ÿÿ%ýü%ýü%ýý%ýþ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ &þÿ%ýþ%ýý%ýü%ýü &ÿÿ"'ÿÿ"'ÿÿ%ýû$ýÏ!$üq""ø%ÿÿÿÿÿ #ÿH%ý›!%ýÓ%ÿõ#'ÿÿ#'ÿÿ"'ÿÿ &þÿ%ýý%ÿý%ýý%ýý%ýý%ýý%ýý%ýý%ýý%ýý%ýý%ýý%ýý%ýý%ÿý%ýý &þÿ"'ÿÿ#'ÿÿ#'ÿÿ%ÿõ!%ýÓ%ý›#ÿHÿ ÿÿÿÿÿ!$ÿL%ÿ�%ÿ¯!%ÿÛ &ÿÿ#'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ"'ÿÿ#'ÿÿ &ÿÿ!%ÿÛ%ÿ¯%ÿ€"%ÿKÿÿÿÿÿÿ$$ÿ%%ÿ"#þ:$þ[%ÿ€%ÿž%þ¹%ÿÍ!$þÝ!$ÿä!%ÿí!%ÿí!$ÿä!$þÝ%ÿÍ%þ¹%ÿž%ÿ€$þ[#þ:%%ÿ"$$ÿÿÿÿÿÿÿÿ*ÿÿ ÿ $ÿÿÿ$ÿÿ ÿ *ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(€ @ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙ?Ùdل٤پÙÑÙäÙîÙôÙÿÙÿÙõÙîÙäÙÑپ٤لÙdÙ?ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙ:ÙsÙ°ÙâÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙâÙ°ÙsÙ:ÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÙÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚdÚ¬ÚòÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚðÚ¬ÚdÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚeÚ¾ÚüÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚüÚ¾ÚeÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚ8ÚŸÚõÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚõÚŸÚ7ÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚRÚÅÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÅÚRÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚRÚÓÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÓÚSÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ@ÛÍÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÍÛ@ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ«ÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛ¬ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛmÛòÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛòÛmÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Û Û Û Û Û Û Û Û Û Û Û Û Û Û" ÛÄ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ ÛÅ Û" Û Û Û Û Û Û Û Û Û Û Û Û Ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Û Û Û Û Û Û Û Û Û Û Û Û Û\ Ûñ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûñ Û^ Û Û Û Û Û Û Û Û Û Û Û Ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü› Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üœ Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü ÜË Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜË Ü Ü Ü Ü Ü Ü Ü Ü Ü Üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ü Ü Ü Ü Ü Ü Ü Ü Ü1 Üå Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üå Ü1 Ü Ü Ü Ü Ü Ü Ü Üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ü Ü Ü Ü Ü Ü Ü ÜH Üó Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üó ÜH Ü Ü Ü Ü Ü Ü Üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ý Ý Ý Ý Ý Ý ÝR Ýù Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýù ÝS Ý Ý Ý Ý Ý Ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ý Ý Ý Ý Ý ÝZ Ýü Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýü ÝZ Ý Ý Ý Ý Ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Ý Ý Ý Ý ÝR Ýü Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýü ÝS Ý Ý Ý Ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Þ Þ Þ ÞI Þù Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þù ÞI Þ Þ Þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Þ Þ Þ- Þó Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þô Þ- Þ Þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Þ Þ Þã Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þã Þ Þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ Þ ÞË Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ ÞË Þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ßœ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ß�ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ß] ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ß]ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ß! ßñ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßñ ß"ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ à àÄ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÅ àÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ àl àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àmÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ à àò àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àó àÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ᪠áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ á= áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ á>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ á áÌ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÍ áÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ âR âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âRÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ â âÓ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÓ âÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ âO âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿãÆãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿã8ãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿ ×ÿ Íÿ Ìÿ Ìÿ Ìÿ Ìÿ Ìÿ Ìÿ Ìÿ Ìÿ ÒÿÜÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿÜÿ Òÿ Ìÿ Ìÿ Ìÿ Ìÿ Ìÿ Ìÿ Ìÿ Ìÿ Íÿ ×ÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿã8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäžäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ Øÿb]ßÿçæüÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿ¶³ñÿÏÿãÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿãÿÏÿ¶³ñÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿçæüÿc^ßÿ Øÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿääõäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ ÎÿåäûÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿjeáÿÛÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿÛÿjeáÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿãáûÿ Ïÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäõäÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäfäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ ÍÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿyväÿÙÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿÙÿyväÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿóòþÿ Íÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäfÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿå½åÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿ ÎÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿzvåÿÚÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿÚÿzvåÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿ Îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿå½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿååüåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿ ÎÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿzvåÿÚÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿÚÿzvåÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿ Îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåüåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿådåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿ ÎÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿzvåÿÚÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿÚÿzvåÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿ Îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿådÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ æ¯ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿÏÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿzwåÿ Ûÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ ÛÿzwåÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿôóþÿÏÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æ¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ æ æñ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿÏÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿ{wåÿ Ûÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ áÿÚÿÚÿ áÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ Ûÿ{wåÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿÏÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æò æÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ç9 çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿÏÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿ{wåÿ Üÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ ãÿÙÿC>Úÿ†‚çÿ†ƒèÿC>ÚÿÙÿ ãÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ Üÿ{wåÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿÏÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ ç:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ çt çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ Ïÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿ{xåÿ Üÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ ãÿ Ïÿ‘Žêÿõôþÿõôþÿõôþÿõôþÿ‘Žêÿ Ïÿ ãÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ Üÿ{xåÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿ Ïÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çtÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ç® çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ Ïÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿ{xåÿ Üÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ ãÿ Ïÿ–“ëÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿ–“ëÿ Ïÿ ãÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ Üÿ{xåÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿõôþÿ Ïÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ ç®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ èâ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ Ðÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ|xæÿ Ýÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ äÿ Ðÿ—”ëÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ—”ëÿ Ðÿ äÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ Ýÿ|xæÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ Ðÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ è èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ Ðÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ|xæÿ Ýÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ äÿ Ðÿ—”ëÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ–“ëÿ Ðÿ äÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ Ýÿ|xæÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ Ðÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ è> èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ Ðÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ|yæÿ Ýÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ äÿ Ðÿ–“ëÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ–“ëÿ Ðÿ äÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ Ýÿ|yæÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿöõþÿ Ðÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ è>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ éc éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ Ñÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ}yæÿ Þÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ åÿ Ñÿ—”ëÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ–“ëÿ Ñÿ åÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ Þÿ}yæÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ Ñÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ édÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ é„ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ Ñÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ}yæÿ Þÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ åÿ Ñÿ—”ëÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ–“ëÿ Ñÿ åÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ Þÿ}yæÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ Ñÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ é…ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ê¥ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ Òÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ}yçÿ ßÿ êÿ êÿ êÿ êÿ êÿ êÿ æÿ Òÿ–“ìÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ–“ìÿ Òÿ æÿ êÿ êÿ êÿ êÿ êÿ êÿ ßÿ}yçÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ÷öþÿ Òÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ ê¥ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ê¼ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ Òÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ~zçÿ ßÿ êÿ êÿ êÿ êÿ êÿ æÿ Òÿ—”ìÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ—”ìÿ Òÿ æÿ êÿ êÿ êÿ êÿ êÿ ßÿ~zçÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ Òÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ ê¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ êÏ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ Òÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ~zçÿ ßÿ êÿ êÿ êÿ êÿ æÿ Òÿ—”ìÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ–“ëÿ Òÿ æÿ êÿ êÿ êÿ êÿ ßÿ~zçÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ Òÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ëå ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ Óÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ~zçÿ àÿ ëÿ ëÿ ëÿ çÿ Óÿ–“ìÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ–“ìÿ Óÿ çÿ ëÿ ëÿ ëÿ àÿ~zçÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿø÷þÿ Óÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ëð ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ Óÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ~{çÿ àÿ ëÿ ëÿ çÿ Óÿ—”ìÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ–“ìÿ Óÿ çÿ ëÿ ëÿ àÿ~{çÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ Óÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ìò ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ Ôÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ{èÿ áÿ ìÿ èÿ Ôÿ–“ìÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ–“ìÿ Ôÿ èÿ ìÿ áÿ{èÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ Ôÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ Ôÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ{èÿ áÿ èÿ Ôÿ–“ìÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ–“ìÿ Ôÿ èÿ áÿ{èÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿùøþÿ Ôÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ Ôÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿ|èÿ áÿ Ôÿ–”íÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿ•“ìÿ Ôÿ áÿ|èÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿ Ôÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíòíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿ Õÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿ|éÿÕÿ—”íÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿîîýÿUQáÿUQáÿîîýÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿ–“íÿÕÿ|éÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿùùÿÿ Õÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíðíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿ Õÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿ‚~éÿ–”íÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿïïýÿJFßÿ àÿ àÿJFßÿððýÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿ–”íÿ‚~éÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿ Õÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîäîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ ÖÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿóóþÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿððýÿJFàÿ áÿîÿîÿ áÿJFàÿððýÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿóóþÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿ ÖÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîåÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîÎîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ ÖÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿððýÿJFàÿ áÿîÿîÿîÿîÿ áÿJFàÿððýÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿúúÿÿ ÖÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÏÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿî¼îÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ ÖÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿññýÿKFàÿáÿîÿîÿîÿîÿîÿîÿáÿLGàÿññýÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿ Öÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿî¼ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿï¥ïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿ ×ÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿññýÿLGáÿâÿïÿïÿïÿïÿïÿïÿïÿïÿâÿLGáÿññýÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿ ×ÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿï¦ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïƒïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿ ×ÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿññýÿLGáÿâÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿâÿLGáÿòòýÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿûûÿÿ ×ÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðcðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿ ØÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿóóýÿLGáÿãÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿãÿLGáÿóóýÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿ Øÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðfÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿð>ðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿØÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿóóýÿMHáÿãÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿãÿMHáÿóóýÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿØÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿð>ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿØÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿóóýÿMHáÿãÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿãÿNIâÿóóýÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿüüÿÿØÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñáñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿØÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿôôýÿNIâÿãÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿãÿNIâÿôôýÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿØÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñáÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñ®ñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿØÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿôôýÿNIâÿãÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿãÿNIâÿôôýÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿØÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñ®ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñtñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿØÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿôôýÿPKâÿãÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿãÿOJâÿôôýÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿØÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñtÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿò9òÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿÙÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿôôþÿPKãÿäÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿäÿPKãÿôôþÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿýýÿÿÙÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿò:ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòòðòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿÙÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿõõþÿQLãÿäÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿäÿPKãÿõõþÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÙÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòñòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿó¯óÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿÚÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿõõþÿQMãÿåÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿåÿQMãÿõõþÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÚÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿó¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿódóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿÚÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿõõþÿQMãÿåÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿåÿQMãÿõõþÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÚÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿódÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóüóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿÚÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿõõþÿRNäÿåÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿåÿQMãÿõõþÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÚÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóüóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿô¼ôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÛÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿõõþÿRNäÿæÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿæÿRNäÿõõþÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿþþÿÿÛÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿô½ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôfôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÛÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööþÿTPäÿæÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿæÿSOäÿööþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôfÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿôôôôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿÜÿññýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööþÿTPäÿæÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿæÿTPäÿööþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïîüÿÝÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôôôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõžõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿèÿmiéÿññýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøþÿÁÀöÿD?ãÿçÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿçÿD?ãÿÁÀöÿøøþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññýÿmiéÿèÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõžÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿõ8õÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿèÿÝÿÜÿÜÿÜÿÜÿÜÿÝÿãÿíÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿíÿãÿÝÿÜÿÜÿÜÿÜÿÜÿÝÿèÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõ8ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöÄöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÄÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿöOöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöOÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿööÒöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÓöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷R÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷Rÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷÷Ì÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷Ì÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ÷=÷þ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷=ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøªøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøøòøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøòøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøløÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿølÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿùùÄùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÄùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù ùñùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùñù!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿù\ùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿù\ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúœúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúœÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúÊúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÊúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúúãúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúãúúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿúúú-úòúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúóú-úúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûûIûùûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûùûIûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûûûRûüûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûüûSûûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûûûûûZûüûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûüûZûûûûûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüQüùüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüùüRüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüGüóüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüóüGüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüü0üåüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüåü0üüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüüüüüüüüüüÊüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÊüüüüüüüüüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿýýýýýýýýýýýý›ýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿý›ýýýýýýýýýýýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ý ý ý ý ý ý ý ý ý ý ý ý ý\ ýñ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýñ ý\ ý ý ý ý ý ý ý ý ý ý ý ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ý ý ý ý ý ý ý ý ý ý ý ý ý ý ýÄ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÄ ý! ý ý ý ý ý ý ý ý ý ý ý ý ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ýl ýò ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýò ýl ý ý ý ý ý ý ý ý ý ý ý ý ý ý ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý¦ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ý§ ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ý ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ@ þÌ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÌ þ@ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þR þÒ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÒ þR þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þR þÅ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÄ þR þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þ þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ6!þŸ!þô!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þô!þŸ!þ6!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þd!þ¼!þü!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þü!þ¼!þe!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þ!þÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿd!ÿ¬!ÿò!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿð!ÿ¬!ÿd!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ:!ÿs!ÿ°!ÿâ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿâ!ÿ°!ÿs!ÿ:!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ>!ÿb!ÿ„!ÿ£!ÿ½!ÿÐ!ÿã!ÿî!ÿò!ÿÿ!ÿÿ!ÿò!ÿî!ÿã!ÿÐ!ÿ½!ÿ£!ÿ„!ÿb!ÿ>!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‰PNG  IHDR\r¨fgAMA[^\ÿ&x#[IDATxí] ´E™îGàe²'$!‹’²+‚ˆè™AP cØÄ™qÙ·q;£Î8:8 Ž»sœÑÑEœã’ ð¨#;¢l#$Ñì��„¼�÷²¿7ß×ïÞ›û^î»]ÕËíªîïç{÷Þî꪿¾¿þ¿«ª«»Ûzzz‰åd`ŸrV[µb€ (¨ˆ�3 Pbã«êb@@m@ ”˜€_U jb Ä 웸î“_›8 e Ä@LVÿ)æ�½‡%‰Š×Á)10ùL¯à |ò÷x`0²ò9ŸûûÀÁ@½lÇ�.`'°è^6U>×áóÅ þŒÏeÀZ@â1 þ�Î{$p p4pÀî×t`�TªA�ÁÃD¶!Ñ2€§¡¥ÀÓÀSÀ³ƒˆÄqÜ4ÏÖoÞ ¼pmΆ�çð ðQ“n|c/áÀï�ß�ìUHb -ñR`ͤaÎqÈätààÍÀë�¢ç]¨ƒÁ"àAààe@’„�„s IÈ�ì z"pp&p<àÚÙ*e*ì%<Ü ü xØ HlP°a+×´CQ:þ|à `4 ÙÃÀF|½˜ Ül$Q äz4hf"Nªñ !p6À‰ðl_½Ž^jBZPy Ø+ø*ÀÉÃÒJÛ^m�/e›yŽÏTß#ÉÛ,`!ðp ç -rMÎÉ=m@[¨-ƒ[ivŒ±á]<Ü p¡Ž$_hÚ‚6¡m¸8IbÈ€€QíHv%°ø&p q‹Ú„¶Y \Ðf’šÄÕx—Ïÿ  HÜf€6ú@›] mE%ª”ž(4æ² ›/Ø­ü0�øÅÀt¨Ë+´!mI›Jú1 Ð�üä:ü_?f¿  iË…m+©c q÷¨@o˜^n.ABÁäTÔçqàVà“ÀZÀ{IÚ­QCï#~-áàR@œxïV€¶¥�ikÚ<ñ yx-eoì¼Ïþ!àK€Öé{Ý”­”§­isÚžm ´RÖ0¿`—ð„ÒZ_§íÙØØ&J'e §ÀÊ|0Å'€ÒwK×â÷®0ÛÛÛÛF©¤L€†¾à ÿ¡¥²²*kÂÛÛÛHiN e ¯­÷Se2.ê*±c€ŽÏ6²`›)¼$�tî¿^œ·è~ 8°ðÖTÓbàddô$p=p[Z™º˜Ï>.*•’N¼)ä»À÷9J¤–(¶¶¶!¾G¡�’¸àèB >3.p\!­¦Jµ’�‹QÛÑyÀR PRÄÀ;`!>$BÎ_¨¦škeØ–ø^¶­BIÑWwý](+©2.00 J°m±�FŠøœýÿ¸º‹ß%b Ø¶ØÆØÖ ÑΊ¸¬“O„¹�ˆ�V0À¶Æ6Ç¶çµøxo¼Ëk+Hy`›[LòQùªÎ>®ÜâÍo¨VFŸb Å ðùlƒ‡µ¸ÜÔŠó5�xFßi©1¡ŒÄ@<¦â0¶E/OD>®à*­{€‘€D ¸ÀÀx(ñKà,€=o$qZ»˜�€æ¥˜¼aXŠ–…¾î>€s¿ñ¥Ò> èü|�´œß—ÖU>=Ù6ù2Ó7ûRu_»ýwÃ}!Vz––Þ7À^êñ>0àCà2LžùuC�-J:’Øf�æ—Åõ0äÝ�P‰ð‰�qP–m—mØYq9ð /œY%‘1à#Ai¶a¶e'%ñU€Œn柗ú¦8Éš”æ ° ßð½]懵&¥‹=€vT}>àüø©5&R)`€ ×~8w‘‹à?@ÔÛ `tUA Ô30 ?øh:§Äµð°ÃW;KÄ@¸•ú¨KkëI¸’oç.…NEÎ@.÷;×MJ¥vÊD ô2°\-ÈUƒ‰e¿—V$ÊÕÀ!¨…“c¤Dìê`1°7<Á±­;qyÐ…À•S|€çh@"ÊÀÀ(Tòv€m?Wqá2 'FôÏ\›� Ï�¶ùÿ.Í¡ìZ‘y÷þ6ojLè‹h=— È‹[_ìžó ‡A�¯ïQEßÄ@)`˜¾�‹ä¸Ø‡!Þ?T1«©Ð"1@ /Ð'Z.y€AM¹:J"Ä@¯/|&"ò\ýyTVeЇà!úFK¥ÕWøÂÎ[-öi©™U˜ Ð'¾lk•¾‰€å3?…Šڪʩ1à3¡ï§�O´JïVŽE¥œZÝ*’Uް`€>Ò²u1­ ìÞ|ØÏ‚%ed€½rúJK†É­ D…N(£5Ug1ƒ�ãq̇bg}Hâ»·�çOšÊdìý# kþMiÒN1Ї�-øu8°ºÏÖ~?¯[Ùo‹ÝÏÄ“€�û‡¡/¯ªÿiý=‹ÀåÐBÎom  š20{¯hš"ÆÎ´Ïþ‹¡‡b šÞFOKMÒC3�ýS3�2} o]ÜgKÂi€}¡ ßì#b ;ècôµT$Í0iæ?³(10 ô1úZ*’8’Ô½Z¬%w/¥Rke"üf€¾6'�*¤Õx”!$b@ dÏ@jþ–¸P©ëõÙ×9û¶âE©�À® æÂ(ÚÞÖ†÷<µƒñ)ÉŽ�í°O¬³ŸÝÅÐ*ûÂ>ÃaŸ¡Å°Ñ ¨ÒÃ4Lšx!PרÉc�3ïYܰO6nîéºO=%óéOíG´µ›¯¼Ü½n]°íÑǃͷýo°û¿ Á�b42g¬·­âøƒÞþ¶àÀ¿û›`ÈIo �g¬_ÏŽ�ÁŽgž 6ÜxS°Ï¢ƒÛÒêü«�vÂíÈpò°õ«7$É8�À§ý|%‰yË3ÿöÓN &ÍÅû J¤N×/~¼tÅ5Áþ›6‡g›D™éà�öʶŒ<0˜ðͯÃþâíÉXÙ½;XsÞEÁà…‹ŠÐøÀW“’8tŽ�ü48*‰y»¾»;˜pÿÝÁ�ŽOE•K–kΞ [÷²‚@BFéü]ƓÏHç"Ó¶ÇŸ^:ãÝÁØ}¼ï<;|ýêD¾—ˆ8?V�H�„í#•Ã9æ| ÇžŽ°¡NZ0?è?.œSH'×òå:?8LÓùÉ"mM›@ެø`ìª$ (õÒØ%;t ›‚͘ßDu–NSs~Ò´ÎüÕÒhëB¸o…ù`ì!@ç˜Iœô[X%Ö×ϵݻƒ¯¼”‰ú;/Æpà\ ,Øíãü3gXižtɨ ÁÄ}’Í÷˜—–iÊÍÈ}üð k8)h-Izg¡4ï�¿ÆÆšáÓ�RþlŸ1#ìÂj8Pcºé—šóWÇü)Û£fã¦Zxµ“>H_Œ%IÀ±J,áAí8‹qÛ9n¬æšØ¿�ógtæoR¼Ï»bûb¬!À–1“†�-ö™ùèbï…C€™_̼;/ VáêÀð—×ëê@?¶éü �sÌßç_<ú ¢ È$ß!0~ÿ kú<,¤Å Æí¼¹Âù²’ÑF6l6põúÜjçï[z!~Ñé“Ö7œo]’ƒ€†µÖ ç¯Q‘ôK,Ÿ´èþs�ì;’j[æãÛ�¬ ·„Ý~Nøµ Û_ð6wfÅ7­ªi�û©À«R”x/jA`ì˜RN ÖÎüt~DIbè“ôM+±¾÷ÿǾä`¥Y óJSÌ ¬ÄÄ`O‰&«Î?%Gçコ˜“á³klôÍ_Ùd§p†MJÛœ:BY&kÎÏÙ~�ù›7û½Ö¾i^=qtJoѼ}³;"«'ù†AàιAçØb¯�u Ïüóp“YšìZRž9o£€U@Ƨzâ… Ã†iÛ;ŽÁ PÌ9�=Î?Wg~Ã6#}ót›ãlÀi6™+­½AÃ�‚�>Î�@'É”�·Úän0er§MŠÒ²L[ [*AÀw®· ›Ïº°wú¹"¾óÚD«“´qØÈù=6z_Õ#{ï& ²Ñ·Lýr‰�!GcbÐ"ÔœÇèÌï’%cé’< ó8†È¢#½†íX¶Ü0e6ɪA`˨‘A',9�-¹�“‡ <&OÉš³�8(ØöÈ“·I`dž Á÷²»;;ƒ¥'�lúÑœ\«B‡ž67!4šÏüØ7Íçïøñí!gäN’ˆ�Hß�¾ í‰TðåମìÚÀš>ÎÅ�¸0Ö[œSaqÈQG Ì –óêÀ+›jWjÎNøå;ÛOç_M®vïy+Ö•‡TÌh“É�¨Ä&=€aQ™h4cº{†Íž§p\?mV Vz}�?ßnÕùÉ•$"—ðG÷zzL‚D*Úæ–IVgÿj…�ÿ~_�Ù� pý‡Â­¹öŽ>*ì ¼øñ ¯…OûÜ͹OøuÌ™rCçï`i�Mzg¶ªF*äg¤G&@,6z¶˜Ïôey¾©ŸT"Ù£Ù@èÁsþG^€{ùsö¦ßý“œJï[ì&8ÿšë>rCŽê9ë›2½_Õ2ÒËÑÉœ†GiUü³{-Þϳƒ<~ÙeÓœy5ç�¼wµìdePÿÈ@e:™ef=ÎÝ‹jX� À—-�8oÿ)¡tÜ>/X}ÝßµnÀ]fvé_VI«�“á‰A8¡léüe#$›ún‰ÊÖ$¼•‰öÇc O˜;?^&Õ�º6=ó{X'GUÆµÔæ9@/¬»yþïmÐKO­RÌ»ŠF™Ò£81xí áîçÍn”¬0ÛBçG]Yçê„_£Ê5ã¬QzÛmYço«OFé·Eå0ÛŠLøjðâJÖÍ06¹ÆÂ•V£x‰ðšëÃE ¡ó£ŽtþÈÕe9Û¤±¥¼Ûº=Jc“!@d&Q…h4a`OBG)šX9Ñ*Ÿ_}° µ¹D÷‚`²˜Ö<›ìÍêŒc‘o}àÀaĹÅtÌØÿšÞn䙿¾)‘; þêÕ÷��ÍQ<˜ô6De¢ýé1°'ÜtÌ¿#½Œsʉuˆåü9é[°b7FÕ'²€™IT!®ïxtžŽæÌߦ ^‰áÀª«+s³ß“Ž"-Î…ÎÏ:pÌÏ:Ùp`“6Nµlm§ މô]“Àz*R:ª=:PÇn,Ùµ1u®:¿U·ß¦¥�b Òw¢(Ìq-\u�WA t~èl4ÛŸ#¿%(úå¨:šÍD±˜á~ß‚€œ?ÃÆ`Ÿuä r³°ëìËõìˆ,g›kyÇÕ†AëV]ym8�ñžsœ$¸ãŽ;ƒUW]›Î™¿Ê[VWÂ|ãÛÄIì­T¤ïFP´lï|‹µ%ëfÀü“–Q�\  p+ñˆ¿šå”èüÔ-΄_£Š$å«QžõÛÒ°I}~Ž~_¥—É`YT&Úßz‡ÝÁÊ+¯ :~rWk 5(…ºT�Ÿ:Jœa`U”&&`-2ár`‰ ´ãöáQÝî�Ðù�¨“œß�²GÞ”<Œß²�½¥e{òÕ·¼èî\�›:}�¿-7=TpCVÀww6ÜS·Ñ¤ÀäËêŽÑW¨�+®:r,“C‘Þ3¿œß�&Ñ_…Åý74ú9 ȃÐXÚèà¢l 'œ2œmÎjÂi? F¢ë½A`*¬4bÖÙ-1IÇ] Pf¯óS‡�¿”K®Ù$#»de“”iH’Ý &\ |Ú$3oÓdÔÈj|dxÉ©÷áîÐ!§¢U�8'Û À3?Ξ3îæ<¶IÍîù~1òYÓ!€QfùÖ·¼¥‡Ã¼Hc¯d8�_Ý~_š‘ÏÚ€Â?ÈË6Ò³O¸ëîFIm«9? Ë’8Í»eϘhh&tnäÃÿd’¡ÒäÇ@-pb0Å À¼Ø»%çÏϸv%/…ϾjrˆÙrBHa—b†I¦¾¥Éh[£�ùg]Fµ°pbŽºA`6Ž˜õîê®XŸt~æEçÏj¯‘bYóÕJ›4ª_ÆÛŒºÿÔÁ8 íï?oLgM£$«I§¬òmRŸjO`9ÎÚÓxuàìxA c�?Ç3?¹Ë�¿&Ôú²‹¾j$FC€JNå¨DN0¼•x9n ê¸û§Ö:…Î�cÕí·¦Î…Œ}Õ&<Šši"ÐóêP 8‹Û¦eà…Â<$^1ÀÑ }ÕHŒÀA�;Ð{.ì’U»fEú4¢+f¢yjGsµsg°ü²«‚ ·ÞY¦aZÃcsµw¤¶ äh“Œ9}.ôUCjŒ@%¿ßæ«d1À³ø˜ÝÝÁÆ�~7܃Úða‰ù3@_¤OZK¬€®FJZ`]šb T|Ò:oëIÀj ˜ÒšƒïUûü™õôóϺ Ÿùo¤{Ö|Ì&ôÅX; 4^rØ «d×ÊêJ@VùºÆ_ú�;ñÅ,}ðÞ¨Dí�5`f“·nÚŽ�ye¬íb@ ´„�;à‹Ûâ–”¤Àè| ¾$ná®ׯÍŽ�A[;_Á™²`Í=ó× ÀŽ×�3p—…„¶.ŽMþ' G±{,tò¶Žßâã¹$ ¸p,£`×ÓÆ�Q³Ryë³ÏZ=wÍ*ó'¦M¶>—MÓêzê©¢Øä¹ŠÆn ‰@¥ÔD(¶æ)8w­ýìçƒ<ø2Má™f òeþ;ÈÙš›?öÌìŽlžš6^ûï_À­Ï…°É·›×6zo„Ô÷�íìQùŠ!Ð}× ƒ%ç_tþîÉÄ�ŽŽßùØÁâs/ ºy,ì17yÙ”œ‘;rH.Éi mÛÒÆ´ulBŸ»- '<¶-éšëUCÂ[~€¼¼¿$ÈgälŬó.|²áÇž[Ø…åY†ÁEŸÎnu¥hö,†ÆWÇ¥#eÞwð6Þ_Ò o‚ ÅWCGŠ1`ÉÀÉHÿpÒ�xPQúa*cY%b ©ù[Z€ÕøJ¼ºè(1 ,HÍ×V®-ä°÷�À!–•Qr1 ÌXޤ3NUS¶s!`|I³@…¾_)Ä€_@šÐù ÒF&I³ÀÂ8齘Ì1 Re`5r› ð‚U(.õ¨¯ÚÜj¦b@ ¤Í}«æüidžv€:µÏÓ‰é0À±ÿ¡ÀŽúì\ëP7*øoõJ껉¸ 9ôqþÄ9"ƒÄ=€{®ÔëÃ+ÿp¶R"Ä@2–âðÃ�½&ÿ¦:t ¾ŠTôÓõô] ˆ�Ø | Gîåü±s«;0ÍË€uÙ†_¹VÙø=åýÖo1 BèCô¥L„]õd2ð#›x?͇¾Rœ÷ÇHÄ€°c€>ô ɽiMK̲À‚ùÀ�Ì¢WÓši§ðŸú΢,«‘|°ý€(ý¸(ˆK„÷�J¨ýb@ Ôà³þ9ñÇÅ?ÊÔ¯¸ÏdGâ!€Aß„¸àF‰f Ðgš:¿Y6ÍS%î,�îPƒAÀ#Àñü!b )O`ïI@ä3ê¦%ìd=P­%+r�É¥Œj!ú`€>B_‰tþ4êÚª@]|1 ¥•‡(0ôúJK¤UC€jex·àSÀÌê}Š1Pc`1¾ð¦:#I:H< hùê&VìRà€ó1 z`—ÿ€±ó§A\â`p ¿ž‹°�Ýœ�õß¡ßb Ä Ð'¸h®¥’x°l¿ýã(Ì[†^ç`# ÆÀ“¨Ï›ë»ý¦ïär�øÒÊIÀz-YQ¾G ™öõ9ê»ð“�N¨ý>ÀÚùÓ¨n^€ºó¡!×¥Q å!ðǼôÏ3°Îß¾›WåU®È™�[Q>‘›äXqFÀ?䯀 ù0À6m>Eï)5�«{JïýÖ…�óÞ÷<ªw“þ‹�B3° µc›gÛÏU\è�€%'[²ü‘JÄ@N °�¿`›Ï]\ $â>àã¹3"Ä@¶ |Ù³­;!‰‡–+£*ýE$à£�/�J¨ýbÀCn�ÎNÝïR jON þ²úCŸb  °M_ãZ]\ \1xÚ5²¤�ˆÉÛ2Ût.‹}šéìb ¾À;�Uü!3À6̶Ì6íœ$žˆq3�) $îmÀƒÀ8Óƒ”N 8ÄÀ‹Ð…mØÙ™«=€ª y©ä€“ѳª¤>Å@^ƶ3'.÷5Ð/Üäz ’¼Sê, ÙãO™“D ´†�êÖùy,Möð. ÷•STF"š0À6ʶúx“4Îìò%�0>,áL@=²!q‘¶M¶Ñߺ¨\#�| ÔŸA@s�,©my3Àn?�¿åOõIRñÄWR^ hR8³z/0Þä¥3°ùsžêw—“zö‰@†—›U–ƒ§÷S›%Ô>1�1+�?{¥¹=Ô#Iý|Ô×õyü8ð.êÖWBß½f€'"¶A/�ŸÌû¨ÿà­ÀOùC"ZÈÀ=(‹½P¶AoÅ÷@âù`Ñs€¯ó‡D ´€�o ŒY€÷µ-B ½ù�…k��T¾ãC"Rg€íì£ïêãwï¥( jˆ/ã a¼RÝ O1�lSl[_J)?'²)Z ©|ÚÊ�–½`‘…J Íßgy"À¶U()b �–on$b ·â`Îô;}SOÜ úºÀ¤¾]Ht ð+àkÀ�€D ˜2° ¯n3=ÀÇtEíÔÛ‚|=ðpýF}M`[yPhçgý÷‚œ–Ry ùÒ¾øgà�äõF&’Â1° 5ºøW€ß /‰ß¼dŸ¡¾‘t þ.p¨oŠKßLx¹sÈø`¦¥¤œùŒî­‰r,à?A4ðqÀg�RDùþèwØØØ&¼rþ>µˆù£Œ€T1lr(pàŃ §$}h{¶¶…d§ÒôukIŽe Urÿ€/¼ÄÄÞ/ë¬VJŸ‘ ÐÖ´9mÏ6PZ){ áÙä BÎ |è$Åd€¶¥�ikÚ¼ôC@´‚ЬÅçv K7¬pPä�‡*¶¥�ik H|`±WL ߆Dï>Ì09@iœe€«Byù÷G€­-¨œ©«l™'eCù!ð:à2` ñ‹�åP—¶; - çü¨SbÑ 9…#ÞðÐU€ÄmVC=ÚŠã|Ú®ôã|p0 ( HMŸ;ð‹�˜ \ <HÜb€6¡ãÓF´m&‰`@ ‚ ~»·á÷·€#>…È«G@Cß" m@[Ð&tüR^ÏG½c‰@,ÚÂK…wáÐÓ€“N0m$­a€\“srOмÄ'±d@W, k’| ö½¸àä¡$}øô]öÀ¾¬O?{ÿrLz yhâkÙk̇‘pz6 ç$ãûU>à„Þ¢dYïè™=•Æ€øÜ™ÉèÈ7Æ\¼Ø�D3Љ$ €9ÀÏ€d­Uü±,ï›æC%Ïþ Hö0°_ÌøžMæ�„(É=¼ !@”�í„�|È${gÇe›�å¤ÝÀ½Ïò�»‰‡æ=P°°ÖÀIÇa×éÀ©çŽöŠ$\�Ã;ï~ p,ÿð2 IÀ€@ò>t8tã%.>Ïðà5ïQðA¸ìöÏÀSÀ“þ€c{IŠ (¤H¦ãYqñ(€Á€8˜^A^—b89·¬‚¥ø¤Ãϼç^’1 ìIö¡çô øý `<À‰Æ‘°WÁ ²Àïí@Uxf®.�}¥²‘Û6UÀm//VÀ³û2`- É‘€ÉWÑb ory òÅ€ˆÏ@Ù.=ÅgJGŠ�2 P@£ªJbÀ”S¦”N �€UU¦ (˜2¥tb € (Шª’0eàÿ�l ÃŒ"9%IEND®B`‚MEGAcmd-2.5.2_Linux/build/installer/left_banner.bmp000066400000000000000000004556601516543156300222000ustar00rootroot00000000000000BM°[6(¤:z[ÃÃïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿððððððððððððññññññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøááõ·µð–“ëwtçZVäE?á2-ß!ÜÛ ÚÙÙ ÚÛ!Ü3,ßD>á[Wäxué—”í¸·ñâá÷úúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷êéõ³²ï~zèHCáÛÙÙÙÚÙÙÙÚÚÚÚÚÚÙÙÙÙÙÙÙÙÚÝIDâ|éµ³ñíìøúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷ÊÉñ…‚éB<á ÚÚÚÙÚÙÙÚÙÙÙÚÚÚÙÙÙÚÚÚÚÚÙÙÚÙÙÙÚÚÚ ÚB=ᇄëÍÌõûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööÐÎñ{xè+$ÝÚÚÙÚÚÚÚÚÚÙÙÚÙÚÚÙÚÚÚÙÙÚÚÙÚÙÙÙÚÙÚÚÚÙÙÙÚÙ*$Þ}yêÓÒöûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööíìõœšë>8àÚÚÚÚÚÚÚÚÚÙÚÚÚÚÚÚÚÚÙÚÚÚÚÚÙÚÚÚÚÚÚÚÚÙÚÙÚÙÚÚÙÚÚÙ>9á �ïññúûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööáàó~zèÜÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÛÚÚÚÚÛÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÜ{wêåäùüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööàßóokçÛÛÚÚÚÚÚÚÚÛÚÚÚÚÚÚÚÛÚÚÚÚÚÚÚÚÛÛÚÚÛÛÚÚÚÛÚÛÛÛÚÚÚÚÚÚÚÚÚÚÚÚÚÛqméäãùüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõççôuqç ÜÚÚÚÚÛÛÚÚÛÛÚÚÚÛÚÚÚÛÛÚÚÚÚÛÛÚÚÚÚÚÚÛÚÚÚÛÛÚÛÚÚÛÚÚÚÚÚÛÛÛÛÛÚÚÛÚ Üxtêíìúüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõóóõ–“ëÝÚÛÛÛÚÚÚÚÛÛÚÛ ÚÚÛÛÛÛÛÛÚ ÛÛÛ ÛÛÛÛÚÛÛÚÛÛÛ ÛÛÚ ÛÛÛÚÛÛÚÛÛ ÛÚÛÛÚÛÛÛÚ ÚÛÚÛݘ–ïúúüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõÊÉð:4àÛÛ ÛÛ ÛÚÚ ÛÛÛ ÛÛÛ ÛÛÛÛÛÛÚÚÛÛÚÛ ÛÛÛ ÛÚÚ ÛÛ ÚÛÛÛÛÛ ÛÛ ÛÛÛÛÛÛ ÛÛÚÛÛÛÛÛÛ Û ÛÛÚÛÛÛÛ<5áÐÏöüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõððôzwè Û Û Û ÛÛÛ ÛÛ ÛÛÛÛÛ Û ÛÛ ÛÛÛ Û Û ÛÛÛÛÛ ÛÜÛÛÛÛÛÛ Û ÛÛÛÛÛÛ ÛÛ Û ÜÛ ÛÛÛÛ ÛÛÛÛÛÛ ÛÛ Û ÛÛÛÛÜÛ Û Û Ü~{ëøøüýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõÑÐñ83à Ü Û ÜÛÛ Û Û Û Û Ü ÛÛÛ ÛÛ ÜÛÜÛ ÛÛÜÛ Û Û Û ÛÛÜÜ Ü Û Û ÜÜÛ ÛÜ ÛÜ ÛÛ Ü ÛÛÛÜ ÜÜ Û ÜÜ ÜÛ ÜÛÜ Û ÜÛ ÛÛÜ ÛÛ Ü Ü Ü Û Û94ãØ×øýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõŸœì Ý Û Û Û ÛÜ Ü Ü Ü Ü Û Û Ü ÜÛ ÜÜ ÜÜÛ ÜÛ ÛÛÛ Û Ü Û Ü Ü Ü Ü Ü Û Ü Ü Ü Ü Ü ÜÜ Û Ü Û ÛÛ Ü Ü Ü Û Ü ÜÜÜ Ü ÜÜ Û ÛÜ ÜÛÛÛ ÛÜ Û ÛÛ Ü ÜÜ Ü Ü£ ñýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôððôlhæ ÜÜ Ü Ü Ü Ü Ü Ü Ü Ü Û Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Û Ü Ü Ü Ü Û Ü Ü Ü Ü Ü Û Ü Ü Ü Ü Ü ÛÜ Û Ü Ü Ü Û Ü Ü Û Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Û Ü Ü Ü Ü Ü ÜnjêøøüýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôããòA<â Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ý Ü Ü Ü Ü Ü Ü Ý Ü Ü Ý Ü Ü Ü Ü Ü Ý Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ý Ü Ü Ü Ü Ý Ü Ü Ü Ü Ü Ü Ü Ü Ü Ý Ü Ü Ü Ü Ü Ü Ü Ü Ü Ý Ü Ü Ü Ý Ü Ü Ü Ü Ü Ü Ü Ü ÜB=äìëûýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôÔÓñ+&ß Ü Ý Ý Ü Ý Ü Ü Ü Ü Ü Ý Ü Ý Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ý Ü Ý Ü Ü Ý Ü Ý Ý Ü Ü Ý Ü Ü Ü Ý Ý Ü Ü Ý Ü Ý Ü Ü Ü Ý Ü Ý Ý Ü Ý Ý Ü Ü Ý Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ü Ý Ý Ý Ý,&áÜÛøýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôÇÅðÞ Ü Ý Ü Ý Ü Ý Ý Ý Ý Ý Ý Ü Ý Ý Ý Ü Ü Ý Ý Ý Ü Ý Ý Ý Ý Ü Ü Ü Ü Ý Ý Ü Ü Ý Ý Ü Ý Ý Ý Ý Ý Ý Ý Ý Ü Ý Ý Ü Ý Ý Ü Ü Ü Ü Ý Ý Ý Ý Ü Ý Ý Ü Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ü Ý Ý Ý Ü Ü Ü Ý Ý ÝàÎÍ÷ýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôÁ¿ïß Ý Ý Ý Ý Ý Ü Ý Ý Ý Ý Ý Ý Ü Ý Ý Ü Ü Ý Ý Ý Ü Ý Ý Ý Ý Ü Ý Ý Ý Ü Ý Ý Ý Ý Ý Ý Ü Ü Ý Ü Ý Ü Ý Ý Ý Ü Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ü Ý Ý Ý Ý Ü Ý Ü Ý Ý Ý Ý Ý Ü Ý Ý Ý Ý Ü Ü Ý Ý Ý Ý Ü Ü ÝßÇÆöþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôÂÀïÞ Þ Ý Ý Þ Ý Ý Ý Ý Ý Ý Þ Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Þ Ý Ý Ý Ý Ý Ý Ý Þ Ý Ý Ý Ý Ý Ý Ý Þ Ý Ý Ý Ý Ý Ý Þ Ý Ý Ý Ý Þ Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Þ Ý ÝßÉÈ÷þþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôÉÈðÞ Ý Ý Ý Ý Þ Ý Ý Ý Þ Þ Ý Ý Þ Ý Ý Þ Þ Ý Ý Þ Ý Ý Ý Ý Ý Þ Ý Ý Þ Ý Þ Ý Ý Þ Ý Ý Ý Ý Ý Ý Ý Ý Ý Ý Þ Þ Ý Þ Þ Ý Þ Ý Ý Ý Þ Ý Þ Þ Þ Ý Ý Þ Ý Ý Ý Þ Þ Ý Ý Þ Ý Ý Ý Ý Þ Þ Ý Ý Ý Ý Ý Ý Þ Ý Ý Þ Ý ÞßÑÐøþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôÓÒñà Þ Þ Ý Ý Ý Þ Ý Þ Þ Þ Ý Ý Þ Þ Þ Ý Ý Þ Ý Þ Ý Þ Ý Þ Þ Þ Ý Þ Þ Ý Þ Ý Ý Ý Ý Ý Þ Ý Þ Þ Þ Ý Þ Þ Þ Þ Þ Ý Þ Ý Ý Ý Þ Þ Ý Þ Þ Þ Ý Þ Ý Þ Þ Þ Þ Þ Ý Þ Ý Þ Ý Þ Þ Þ Þ Þ Þ Þ Þ Ý Þ Ý Þ Ý Þ Þ Þ Þ Ý ÞáÜÛùþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôáàò+&á Þ Þ Þ Þ Þ Þ Þ Þ Þ Ý Þ Þ Þ Þ Ý Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ Þ,&ãêéûþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôïîóD?ã Þ ß Þ Þ ß Þ ß Þ Þ ß Þ Þ Þ Þ Þ Þ Þ ß Þ Þ ß Þ ß ß Þ Þ Þ Þ ß Þ Þ Þ Þ Þ Þ Þ ß Þ Þ ß Þ Þ Þ ß ß ß Þ Þ Þ Þ Þ Þ Þ Þ Þ ß Þ ß ß Þ ß Þ Þ Þ ß ß Þ Þ Þ Þ Þ Þ Þ Þ ß Þ Þ ß ß Þ Þ ß ß Þ Þ Þ Þ Þ Þ Þ ß Þ Þ ÞD@æøøýþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôômhè Þ ß ß ß ß ß ß Þ Þ ß ß ß Þ Þ ß ß ß ß ß ß Þ ß ß Þ ß ß ß ß Þ ß Þ ß ß Þ ß Þ ß ß ß Þ ß ß Þ ß Þ ß ß ß ß ß Þ ß Þ Þ ß Þ Þ Þ Þ ß ß ß ß ß Þ Þ ß Þ ß ß Þ ß Þ ß ß Þ Þ ß Þ ß ß ß ß Þ ß ß ß ß ß Þ Þ Þ ß Þ ß ßqmëþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóžœì ß Þ ß Þ ß ß ß ß ß ß Þ Þ ß ß Þ ß ß ß ß Þ ß Þ ß Þ ß ß ß Þ ß ß ß ß ß ß ß Þ Þ ß ß Þ Þ ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß Þ ß Þ ß Þ ß ß ß ß ß ß ß ß Þ ß ß ß ß ß ß ß ß ß Þ ß ß ß ß Þ ß ß ß ß ß ß ß ß ß Þ ß ß ߤ¢óþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóÐÏðà ß ß ß ß ß ß ß ß ß ß ß à ß ß ß ß ß ß à ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß à ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß à ß ß ß ß à à ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß ß à ß ß ß ß ß ß ß ß ß ß ß ß ß ßàÙØùþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóîíó:5ã ß ß ß ß ß à ß ß ß ß à à ß à à ß ß ß à à ß à ß à ß ß ß ß à à à à ß ß à ß ß ß ß ß ß à ß à ß à ß à ß ß à à ß à à à ß à ß à ß ß ß ß à ß à ß à à ß ß à à ß à à ß ß à à à ß ß ß à ß ß à à ß ß ß à à ß ß à ß ß<6æøøýþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóó|yé à à à à à à à ß à ß à à à à ß ß à à ß à à ß à à ß à à ß à ß à à à à à à ß à à à à ß ß à à ß ß ß à à ß à à à à à ß ß à à à à à à à ß à à à à à à à ß à ß ß à à à à à à à à à à à à à à à ß à ß à ß à ß à à à‚~îþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóÉÈð à à à à à à á à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à à á à à à à à à à à à à à à à à à à á à à à à à à à à à à âÒÑùþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóððó=6å à à à à à à à à à à á á à à á á à à á à à à à á á á á à à à á à à à á á à á à à à á à à à à á á à à á á à á à á à à à à à á á á à à à á à à à á à á à à à à à á á á á á à à à à à à à à à à à à à á à á á à à á>9çûûþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóó˜•ë á á á à á à á á à à à á á à á à à à á á á á á à á á á à à à á á á á á á á à á á á á à á á á à á á á á á à á á à à á á á à á à á á á á à à á á á à á á á á à á á à á á á à á á á á á á á à á á á á á á á à á à á á áž›óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóååò â á á á á á á á á á á á á â á á á á á á á á á á á á á á á á á á á á â á á á á á â á á á á á á á á á á á á á á á á â á á á á á á á â á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á ãðïýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóxué á â á á á á á á á á á á á á á â á á â â â á á á â á â â â â á á á â â á á á â â á â á á á á â â â á â á â á á á á á â á á á á â á á â á á á á á á á á á â â á á â á á â á á â á â á â á á â â â â á â á â á á â â â â á}yïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóâáòã á â â â â â á á á á â â á á â â â â â á á â â â â â â â â á â â á á á á á á â â â â â â á â â â â â â á á â â á â â â â â â â â â â á â á â á â â â â â â â â â â â â á â á á â â â â á á â â á á â â á â â â â á á â áâèèüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóó{ê â â â â âã â â â â ââ ââ â â ââ ãâ ââ ââ âââ â â â â ââ âã â â â â â â ââ â â â â â ã â â ââ â â â ã â â â â ââ â â â ã â â â ã ââ â â â â â â âââ â â â â ââ â â â â â â â â â â ââ â â â ââ ââ â â âtpîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóææòãã â âââââãâ â â â ã ã â â ââ â ãã â ã â ãâ â ãâ â ã ãâ â â â â ã â â ã âââ â ã â ã â â âã â âââ âââ ãã â â ââã â âââ âã ââã ââ â âââãâ ãâ â ã ã ã ââ ãâ âã ã â ã ââ â â ã âã âã â ââãèèüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóó‡„ëãâ ãââ ã ãã ã ã ã ãâã ããã â ãâã ãã âã ãã ã âãã ãããã ã ãã ã ããããâãã ã ãããããããã ããããâããããâãã ãããã ããã ãããããâã ââã ã ãã âã ãâ â âãã â ãâãâãããã ã â â âã ã ã⃀ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóëëò"äãã ããããã äãããããããããããããããäãããã ãããããäããããäããããã ä ããããã ãã ããã ããã ãäããã ãããä ããäãã ããããäããäãã ãããããä ããããäãããããäãããããã ããããã ãã åööþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóó›˜íãããäãääãääãäããäãããääããããäåeaîspïspïspïspïspïtpïspïspïa\í åäããããäãäãããäããäãäãããäãäãäããääãääãããããããã åa\íspïtpïspïspïtpïspïspïspïeaîääääãããääããããããääãääääããã㤡õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóó?9æääääääãääääääããääääääääãä�›ôççüççüççüççüççüççüççüççüççüççü��òäãääãääääääãääãääääãääääääãäããäããäääääää��òççüççüççüççüççüççüççüççüççüççü�›ôääããäãäãäääääääääääääääääE?êÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññÍÌñåäääääåäääääääääääääääåäääÙØúèèüèèüèèüèèüèèüèèüèèüèèüèèüèèüËÊùääääääåäääääääåääääääääååäääääääääääääääËÊùèèüèèüèèüèèüèèüèèüèèüèèüèèüèèüÙØúäåäääåääääåäääääääääääääåäÖÕúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññ{ëäåäååääåäååääåååååäååäååååÛÛüèèýèèüèèýèèüèèüèèüèèýèèüèèýèèýÎÎùäååääåääåäääåääääååååäåäåääääääääåääåääåÎÎúèèýèèüèèüèèüèèýèèýèèýèèýèèýèèüÛÛûåäååååäåååäåäåäääåååääåäåå„€ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññ1+æååååååååääååååååäååååååååäÛÛüèèýéèýèèýèèýèèýèèýèèýèèýéèýèèýÎÎúåå åäåååååååååååååååååå ååå ååååå ååäåå ääåååÎÎúèèýèèýèèýéèýèèýèèýèèýèèýèèýéèüÛÛüååå ååååååååå ää åäåä ååäååäåå2,éÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññññññññÆÄïåæå å åæå å å åæ ååååå åå å åæå ååå ååÜÜüééýééýééýééýééýééýééýééýééýééýÏÏúå ååååæææå åååååååæååå åæ åååæ ååååååååååæ åååÏÏúééýééýééýééýééýééýééýééýééýééýÜÜüååæåååååå ååæ æå å åå åååæåæå å ææÑÐúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññññññññ†ƒëåå å ææ å æ å åæ åææ ææå æ æåæ æ æ æ å ææ åÜÜüééýééýééýééýééýééýééýééýééýééýÏÏú å æ å æ å æ æ å æ æ æå å æå æ å ææå å å å æææ æ å å å æååå åæ æ æ æ æÏÏúééýééýééýééýééýééýééýééýééýééýÜÜüå æ æ æ æå ååææ æ æåæå åå å æ æ ææ å æ æ å æ�‰óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññññññññE?é æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ æ åæ æ æ æ ææ æ æ æ åÝÝüêêýêêýêêýêêýêêýêêýêêýêêýêêýêêýÐÐú æ æ æ ææ æ æ ææ æ æ ææåæ æ æ ææ æ æ æ ææ æ æ æ æ æ æææ æ æ æ æå æ æ æÐÐúêêýêêýêêýêêýêêýêêýêêýêêýêêýêêýÝÝüæ æ æ ææ æ æ å æ æ æ æ æ æ ææ æ æ æ æ æ æ æ æ æ æ æHCìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññåäð ç æ æ æ æ æ æ æ ç ç æ æ æ æ æ æ æ ç ç æ ç ç ç ç ç ç æ æÝÝüêêýêêýêêýêêýêêýêêýêêýêêýêêýêêýÐÐú æ æ ç æ ç æ æ æ æ æ æ ç æ ç æ ç ç ç ç æ æ æ æ ç æ æ æ æ æ æ æ ç ç ç æ æ æ ç æ æÐÐúêêýêêýêêýêêýêêýêêýêêýêêýêêýêêýÝÝü æ ç ç æ ç æ æ ç æ æ æ æ æ æ æ ç æ æ æ æ ç æ æ æ ç æ ç æññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññ²°î ç ç æ ç æ æ ç ç ç ç ç ç ç ç ç æ ç æ ç æ ç æ ç ç æ æ æ çÞÞüëëýëëýëëýëëýëëýëëýëëýëëýëëýëëýÑÑú ç ç æ ç ç ç ç ç æ æ æ æ æ æ ç ç ç芆óÄÃùÄÃù‰†óè ç æ ç æ ç æ ç ç æ æ ç ç ç ç ç ç æÑÑúëëýëëýëëýëëýëëýëëýëëýëëýëëýëëýÞÞü ç ç æ æ ç ç ç ç æ ç ç ç æ ç ç æ ç ç æ æ ç æ ç ç ç ç ç ç¼»øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññ~{ì ç è ç ç ç ç ç ç ç ç ç ç ç ç è ç ç ç ç ç ç ç ç ç ç ç ç çÞÞüëëýëëýëëýëëýëëýëëýëëýëëýëëýëëýÑÑú ç ç ç ç è ç ç ç ç ç ç ç ç ç ç ç("éÊÉúëëýëëýëëýëëýÊÉú("é ç ç ç ç ç ç ç ç ç ç ç ç ç ç ç çÑÑúëëýëëýëëýëëýëëýëëýëëýëëýëëýëëýÞÞü ç ç ç ç è ç ç ç ç ç ç ç ç ç ç ç è ç ç ç ç ç ç ç ç ç ç 燃óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññLGê ç è è è è ç è ç ç è è è ç ç ç è ç ç è ç ç ç è ç ç ç ç èßßüììýììýììýììýììýììýììýììýììýììýÒÑú ç è è ç ç ç è è ç ç è ç ç ç è)#êÌËúììýììýììýììýììýììýÌËú)#ê è è ç ç ç è è ç ç ç ç è è ç èÒÑûììýììýììýììýììýììýììýììýììýììýßßü ç è ç è ç ç ç ç è ç ç è è ç è ç è ç ç ç è ç è ç ç ç ç çPJîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññ è ç è ç è è è ç è è ç è è è è è è è è ç è è è è è è ç è èßßüììýììýììýììýììýììýììýììýììýììýÒÑû è è è è è ç è è è è è è è è*$êÎÍúììýììýììýììýììýììýììýììýÎÍú*$ê è è è è è è è è è è è è è èÒÑûììýììýììýììýììýììýììýììýììýììýßßü è è è è è è è è ç è è è ç è è è è è ç è è è ç è è ç è è!êÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññØ×ð è è è è è è è è è è è è é è è é è é é è è é è è è é è è èààüííýííýííýííýííýííýííýííýííýííýÓÒû é è è è è è è è è è è è è,&êÐÏúííýííýííýííýííýííýííýííýííýííýÐÏú+%ê è è é è è è é è è é è è éÓÒûííýííýííýííýííýííýííýííýííýííýààü è è è è é è è é è è è è è è è è è è è é è é è è è è è è èäãüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ´²ï é è è é é é è é é é é è è è è é é è è é é è é é é é é é éààüííýííýííýííýííýííýííýííýííýííýÓÒû é é é è é é è é é é é é-&ëÑÐúííýííýííýííýííýííýííýííýííýííýííýííýÑÐú,&ë é é é é è é è é è é è èÓÒûííýííýííýííýííýííýííýííýííýííýààü é é è é è é é è é è é é é è è è è è è è è é é è é é é é è¾¼ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ—”î é é é é é é é é é é é é é é é é é é é é é è è é é é è é éááüîîýîîýîîýîîýîîýîîýîîýîîýîîýîîýÔÓû é è é é é é é é è é é.'ìÒÒúîîýîîýîîýîîýîîýîîýîîýîîýîîýîîýîîýîîýîîýîîýÒÒú.'ì é é é é é é é é é é éÔÓûîîýîîýîîýîîýîîýîîýîîýîîýîîýîîýááü é é é é é é é é é é é é é é é é é é é é é é é è é é é é 韜öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ{wí é é é é é é é é ê é ê ê é é é é ê é é ê é é ê é é é é ê éââýïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþÕÔü é é ê é é é ê é ê é/)íÔÓüïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþÔÓû/)ì é ê é ê é é é é é éÕÔüïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþââý ê é é é é é é é é é é é é é é é é é é é ê ê ê é ê é é é é€|óÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ_Zì é ê ê é ê é ê é ê é ê ê é ê é é ê é é ê ê é ê é é é é ê êââýïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþÕÔü ê é ê ê ê ê é ê ê/)ìÕÔüïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþÕÔü/)ì é ê ê ê é é ê ê êÕÔüïïþïïþïïþïïþïïþïïþïïþïïþïïþïïþââý é ê ê ê ê ê ê é ê é ê ê ê ê ê é é ê é é ê é ê ê ê é é ê êc]ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññLGì ê ê ê ê ê ê ê ë ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê êããýððþððþððþððþððþððþððþððþððþððþÖÕü ê ê ê ë ê ê ê ê1+î×Öüððþððþððþððþððþððþððþððþððþððþððþððþððþððþððþððþððþððþððþððþ×Öü1+í ê ê ê ê ê ë ê êÖÕüððþððþððþððþððþððþððþððþððþððþããý ê ë ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ê ëOKïÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ<6ë ë ë ë ê ë ë ë ë ê ë ê ë ë ê ê ê ê ë ë ê ë ë ë ë ê ê ë ë êääýññþññþññþññþññþññþññþññþññþññþ×Öü ë ë ë ë ê ë ë3-íÙØüññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþÙØü3-î ê ê ê ë ê ê ê×Öüññþññþññþññþññþññþññþññþññþññþääý ë ê ê ê ê ê ê ê ê ê ë ë ê ê ë ê ê ê ê ê ë ê ë ë ë ê ê ë ê>8îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ*#ì ë ë ë ë ë ê ë ë ë ë ë ë ê ë ê ë ë ë ë ë ë ë ë ë ë ë ë ë ëääýññþññþññþññþññþññþññþññþññþññþ×Öü ë ë ë ë ë ê5.îÙÙüññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþññþÙÙü4.í ë ë ë ë ë ë×Öüññþññþññþññþññþññþññþññþññþññþääý ë ê ë ê ë ë ë ë ë ê ë ê ë ê ë ê ë ë ë ë ë ë ë ê ë ë ë ë ê*$íÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ ë ë ì ë ë ì ë ë ë ë ë ë ì ë ë ë ë ë ë ë ì ì ë ì ë ë ë ë ë ìåäýòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþØ×ü ë ì ë ë ì5/îÛÛüòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþÛÛü60î ë ë ë ë ëØ×üòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþåäý ë ì ë ì ì ë ë ë ì ë ë ë ë ë ì ë ë ì ë ì ë ë ì ë ë ë ë ë ë"ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññë ë ë ì ì ì ë ì ì ë ë ì ì ì ë ë ì ì ë ë ì ì ì ì ì ë ì ì ë ìååýòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþØ×ü ì ì ì ì71ïÜÜüòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþÜÛü61î ì ë ì ìØ×üòòþòòþòòþòòþòòþòòþòòþòòþòòþòòþååý ë ì ì ì ë ì ë ë ì ì ì ì ë ì ì ì ì ì ì ë ë ì ì ì ë ë ì ì ìíÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ìæåýóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþÙØü ì ì ì82ïÞÝüóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþÞÝü82ï ì ì ìÙØüóóþóóþóóþóóþóóþóóþóóþóóþóóþóóþæåý ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ì ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ ì í íì ì í í ì íìì ì ì ìì ì ííí ìì ì í ì ì ìíì íìçæýôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþÚÙüì ì:3ïàßüôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþàßü:3ïì íÚÙüôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþçæýììí í ìì í ìíí í ì ì ì ì í ì ì ìí ì ìí í í í ìì í íÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ íí íìíì íìí ìí íí í ì ííí í ìí ìíì ìíí í í íçæýôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþÚÙüí;5ðáàüôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþêêýXSòXSòêêýôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþáàý:3ð ìÚÙüôôþôôþôôþôôþôôþôôþôôþôôþôôþôôþçæýí íí ííí í íí ì í í í íí ííí í ìí í íí íí ìì íîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ"îííîíííí ííí ííí íí ííí ííí í íííí íí íèçýõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþÛÚü=7ðââýõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþêêýKDòííKEñêêýõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþâáý:5ðÛÚüõõþõõþõõþõõþõõþõõþõõþõõþõõþõõþèçýííí îí ííí îíííííí ííííííí íîíííîí"îÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ+%îîîîîíîííîíîîíîíîîíîíîííííííîíéèýööþööþööþööþööþööþööþööþööþööþôôþëêýööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþëêýJEñîíîîJEòëêýööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþëêýôôþööþööþööþööþööþööþööþööþööþööþéèýíîîîííííííîíîíîíííîîíîîíííîîî,&ðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ>9ïîîíîîîîîîîîîîîîîîîîîîîîîîîîîîéèýööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþêéýIDòîîîîîîIDòêéýööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþööþéèýîíîîîíîííîîíîíîîîîîîîîîîîîîîî@9ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññOIïîîïîîîîïîïîîîïîîîîîïîîîîïïîîîêèý÷÷þ÷öþ÷öþ÷÷þ÷÷þ÷öþ÷öþ÷÷þ÷÷þ÷öþ÷÷þ÷÷þ÷öþ÷öþ÷÷þ÷öþ÷÷þ÷öþ÷÷þ÷÷þ÷öþ÷÷þ÷÷þ÷÷þ÷÷þêèýICòïïîïîîîïHCòêèý÷öþ÷öþ÷÷þ÷÷þ÷öþ÷÷þ÷÷þ÷÷þ÷öþ÷öþ÷÷þ÷÷þ÷÷þ÷÷þ÷öþ÷öþ÷÷þ÷öþ÷öþ÷÷þ÷÷þ÷÷þ÷÷þ÷÷þ÷öþêéýîîïîîïîîîîîîîïïîîîîîîïîîîïîîîRLòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññb]ðïïïîîîïïîîïïïïïïïîïïïïîïïïîîîëéýø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þëéýHBòïîîïïïïïîïHBòëéýø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þëéýïîïîïïîîîïïïïîîîîïïïïïïîïîïîîe`ôÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ}yðïïïïðïïïïïïïïïïïïïïïïïïðïïïïïëéýø÷þø÷þø÷þø÷ÿø÷þø÷þøøþø÷þø÷þøøþø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þëéýF@òðïïïïïïïïïïïF@òëéýø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷þø÷ÿø÷þø÷ÿø÷þø÷þø÷þø÷þø÷þøøþø÷þëéýïïðïïïïðïïïïïïïïïïïïïïïïïïïïïƒöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ™–ðïïïïïððïïïïïïðððïïðððïððïïïððìêþùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿëéþE?òððïðïðïððððïïðD?òëéþùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿùøÿìêþïðïðïðïïððððïïïïððïïðïðïðïïïùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññ·µñððððððððððððððïïïððððïððððïðïíëþúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿëéþD?òðïððððððïðððððððD>óëéþúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿíëþðððïððððïðððððððððïððððððððïðÀ¾ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññÜÜññðñðððððððððñððñðððððððððððñðíëþúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿêéþD>óðððñðñððñðððððððððD>óêéþúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿúùÿíëþðððððñððððððððððððñððððððñðñðéèþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññ)#ððñññððñðññðñðññððñññðñððññðñíìþúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿééþC=ôññññðñðñððññññððñðñðC=óééþúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿíìþðññññððððññññðññðññññðñððññð+$ñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññPLñññðñññññðñññðñðñññññññññññññíìþúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿèèþC<ôññññññññññññññññññññðñC<ôèèþúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿúúÿíìþññññññññðñññññññññññññññññññUPõÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññƒññòññññññññññòññòñññòññññññòñîíþûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿèèþB;ôñòññòñòòñññññññññññññòòñA;ôèèþûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿîíþòñòñññòññòñòòñòññññññòòññññòЇøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññµ´ñòòññòñòñòòññòñññòòññòñòññòòòîíþûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿèèþ@9ôòññòñòòññòññòñòñòñòòòòòòòñ@:óèèþûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿûûÿîíþñòññòòñòòñòòòòòòññòñòòñòòòññ¿¼ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññååñòòòòòòòòòòòòòòòòòòóòòòòòòòóòïîþüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿèèþ>9ôòòòòòòòòòòòòòòòòòòòóòòòòòòòò?9ôèèþüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿïîþòòóòòòòòóòòòòòòòòòòòòòòòóòòòòòþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññññññññKFòòóóòóòóòóòóóòòòòòòòóóóòóòóóïîþüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿççþ>8ôóóóóòòóòóòóóóòòòòóóóòóòóòóòòòò>8ôççþüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿüüÿïîþòòóòòòóóòóóóóòòóòòóòòòòòóòóOJöÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññññññññ‹‡òòòóóóóòòóòóóóóòóóóóóóóóóóóóðïþýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿèçþ>7õóòóóóòóóòóóóóòóòóóòóóóóóóòóóòóóò=8ôççþýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿðïþóóóóòóóóóóóóóóóòóòóòóóòóòòò‘�ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððññññññññññññññññññññññññÈÇñóóóôóóôóóóóôóóóóôóóóóóóóóóôðïþýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿçæþ<7öôóóóóóóóóôóóóôôóóóóóóôóóóóóóóóóóóó=7öçæþýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿýýÿðïþóôóôóóóóóóóóôóóóôóóóóóóôôóóÓÑýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññ94ôôôôôóôôóóóóóóóôôóóôóôóôóóôñðþþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿçæþ<6öôôôóóóóôóóôôôôôóôóóôôôôôóóôóôôôóóóóô<6õçæþþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿñðþóôôóôôôóóóôôóôóôôóóôôóôôóô:4õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññ„€ôôôôôôôôôôôóôóôôôôôôôôôôôôóñðþþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿæåþ;5õôóôóôôôôôôôôôôôóôôôôôôôôôôôôôôóóôôôôôô;5öæåþþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿñðþóóôóóôôôôôôôôôôôôôôôóôôôôô‰†ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññÐÏóõõôôôõôõõôõõôôôôôôôõôôõôôôîíþþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿåäþ;4öôôôôôôõôôôôôôôôôõôõôôôõôôôôõôôôôõôôôôôõô;4öåäþþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿþþÿîíþõôôôôôôôõõôôôôôôôõõôôõôõôõØ×ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóLGõõõõõõôõõõõõõõõôôõõôôõôôõô´±ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÛÚý92õõôõôõõõõôõõõôõõõôôõôõôõõôôôôôôôõôôõõõõõôôõ92öÚÙýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ´±üõõôõôôõõõõõõôôõôõôõôõôõõôOJ÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóó¢Ÿôôõõõõõõõõõõõõõõõôõõõõõõôô"õvqù…�ú…�ú…�ú…�ú…�ú…€ùb]øõõõôõõõõõõõõôõôõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõõb]ø„€ú…�ù…�ú…�ú…�ú…�úupù#õõõõõõõõõõõõõõõõõõõõõõõõõõ¨¥ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóëëó+%õõöõööööõõöõõõöõõööõõõõöõöõöõöõõõõöõõõõöõöõõõõõõöõööõöõöõõöõõööõõöõõöõõöõõõõöõõöõõõöõöõõõõõõööõõõõöööõõõöõõõõõõõõ,&ö÷÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóó„€õöööõõöõöõöõõõõööõõõõöõõõööööõõöööõõöõõöõöööõöõöööõõõöööõõõööööõõööööõöööõöööööõõöõööõöõõõöõöööõööõöõöööõööõöööõö‰†úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóààó#öööööõööööööööööööööööööõõööööööööööõöööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööööö#öêêþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóxtõö÷öö÷÷öööö÷÷öööööö÷ööööööööööööööööö÷÷÷ö÷÷öö÷öööö÷öö÷ööööööööööö÷öööööööö÷öööööö÷÷÷ö÷÷÷öööö÷öö÷÷ööööö÷ööö÷÷ö÷÷|xúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóßÞó#÷÷÷÷÷öö÷ö÷÷÷÷÷÷÷ö÷÷ö÷÷÷÷ö÷ö÷÷ööö÷ö÷ö÷öööö÷÷÷÷÷÷ö÷÷ö÷÷÷ö÷öö÷÷÷÷÷öö÷ö÷öö÷öö÷÷÷ö÷öö÷ö÷ö÷÷öö÷÷÷ö÷÷÷÷ö÷÷÷ö÷÷÷÷ö÷öö$öêéþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóó|õ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷…�ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóççó.'÷÷÷øø÷÷÷ø÷÷÷ø÷÷ø÷÷÷ø÷ø÷ø÷÷÷÷ø÷ø÷÷÷÷÷÷ø÷ø÷øø÷÷÷÷÷÷÷÷÷÷ø÷ø÷÷÷÷÷÷øø÷÷÷÷÷÷÷÷÷÷÷÷øø÷÷ø÷÷÷ø÷÷÷÷÷÷÷÷ø÷÷ø÷÷÷÷ø÷÷÷÷÷/(øòñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóŸœõøøø÷øø÷øøøø÷÷øøøøøø÷÷ø÷÷øøøøøøøø÷÷øø÷÷ø÷÷÷øø÷øøøøø÷ø÷÷÷ø÷÷÷ø÷øø÷÷øøø÷÷÷ø÷øøø÷÷ø÷÷÷÷÷÷ø÷ø÷øøø÷øø÷ø÷÷÷÷÷ø÷øø¥£üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóððóIC÷øøøøøøø÷øøøøøøøøøøøøøø÷øøøø÷øøøøøøøøø÷øøøøøøøøøøøø÷÷øø÷øøøøøøøø÷øøøøøøøøøøøø÷øøø÷øøøøøøøøøøøøøøøøø÷øøøøøMGùüüþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóÍÌô øøùøøøøøøøùøøùøøøøøøùøøøøøøøùøøøøøùøøøøøøøøøøøøøøøøùøøøøøøùøøøøøøøøøøøøøøùùøøøøùøøøøøøøøøøøøøøøøøùøøùøù!øÕÔýþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóó†‚öùøøøùøùøùøøùùøùùùùùùùùùùùùøøøùøùùùøøùøøùøøøùøøøøùùøùùøøøùùùùøùøøøùùùùùøøùøøùøøøùùùøùøùøùùùøùùùøùøùøøùøŠ‡ûþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóîîóICøøùùùùùøùùùùùùøùùùùùùùùùùùùøùùùùùøùùùùùùùùùùøùùùùùùùùùùøùùøùùùùùøùøùùùùùùøùùùùùøùùùøøùùùùùùùùùøùùùùùùKEúùùþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóÓÒô& ùùùùùùùùúúùùùúùùùùùùúùùùúùùùùùùùùùùùùùùùùúùúùùúùùùúùùùúùúùùùùùùùùùùúùùúùùúùùùúùúùùùùùùùùùùúùùùùùùùù' ùÜÛýþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóó¥¢öùùùúùúùúùùùúúùùùúúúùúúúùúùùúùúùùùúùúùùúùúùúúúúùùúúùùúùùùùúúúúùùùúùùúúúùúúùùúùùùùúúùùúúúúùúùùùùùúúú«¨üþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôyu÷úúùúúúúùúúúùúúúúúúúúúúúúúúúúúúúúúúúúúùúúúùúúùúúùúúùùúùúúúúúúúùùùúúúùúúúúúúùúùùúúúùúùúùúùúúúúùúúú|xüþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôïïôUPøúúúúúúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúúúúúúûúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûúúúúúúúúúúúúúWRûùùþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôââõ<5ùúúúúûúûúúúúûúúúûúúúúûûúûúúúúúûûûûûúûúûúúúúûúúúûúúúúúúûúúûúúûûúûûúúúúúúúúûúûûûûûûûúúúúúúûûúûú>7ûëëþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôÖÕõ0)úúúûûûûûûûúûûúúûûúúúûúúûûúúúúúûúûûûûúûúûúûûûúûûûûûúûûûúûúûûúúúúúúûúúúûûúûúúûúûúúúûûûûûúûúûû0*ûÞÝþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôÍÌõ+%ûûûûûúûûûûûûûûúûûûûûúûûûúûûûûûûûûûúûúûûûûûûûûûúûûúûûûûûûûûûûûûûûûûûûúûûúûúûûûûûúûûûûûûûúû,%ûÖÔýþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôÆÄö*#ûûüûüûûûûûûûüûûûûûûûûûûûûûûûûûûüûüûûûûûûûûûûüûûûûüûûûûûûûûûûûûûûûûûûüûûûüûûüüüûûûûüûûûû+$ûÎÌýþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôÆÅö-&ûûüüûüûüûüüüüûûüûûüûûüüûûüûûûûüüûûûüüûüûûûüûüûüûûüüüûûûûûüüûûüûüûüûûûûüûûüûûûüüûûûûûû-'ûÎÍýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôÍËõ2,ûûüüüüüüûüüûûüüüüûüûûüüüüüûüûüüüûüüüûüüüüüüûüüüûûüüüüüüüüüûüüüüüüüüûûüûüüüûûûüüüûüü1,ûÔÓýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôô×Öõ@:ûüüüûüüûûüüüüüüüûüüüüüûûûüüüüüüüüüüüüûüüüüüüüüüüûüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüüü@:üßÞýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôåäõSNúüüýüüüüýüüüüüýüüüýüýüüüýüüüüüüüýüü üüüüýýüüüüü üüüüüüüüüýýü üüü üüüüüüü üüüýüýüüüüüUPüííýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôññõzvùüýüýüüüý ý ü ý ü ü ýýýüüýü üüýüýü üý ýý üüüýýýü ýýüýüüüýýýüý ü üý ýý ü ý ü üýü ýü üüýüü üý ýý ý üý ýü|yýùùýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõ§¤ø("ü ýüý üýýýüýýýý üü ü ü ýü üý ý üý ýýü ýýý ý ý ü ü ýý ý üýý ýý ýüýüý ü üüýý ý ý ýý üý ýýýý ýý ýýýüý ýüýý*"ý¬ªýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõÕÔöKFû ýýýýý ý ý ýý ýýýý ý ü ý ý üý ý ý ý ýý ý ý ýý ýýü ý ýý ýý ý ýýýý ý ýýý ýüýýýýý ý ý ý ý ýýý ü ý ý ý ý ý ýý ýýýLGýÜÛýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõññõˆ„ù$ýþý ýý ý ý ý ý ý þý ý þýý þ ý ý ý ý ý ýþ ý ý ý ý ý ý ý ýýýý ý ý þýý ý þ ýý ý ý ý ý ýýýýþ ýý ý þ ýþ ý ýý ý ý þ ý ý$ý‹‡ýùùýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõÏÎöMHû þ ý ý ý þ ýþ ý þ ý ýýýýý þ þ ý ý þ þý ý þ þ ý ý ýý ý ý ý þ ý ý ý þ þ ý þ þ þ þý ý þ ý ý ý ý ý ý ý ý þ ý þ þ ý ýþ þ ý ýOIýÔÓüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõóóõ£ ø2+ý þ ý þ þ þ ý ý ý ý þ ý ý ý þ ý ý þ ý þ þ ý ý þ ý ý ý ý þ þ þ!ý þ ý þ þ ý ý ý þ þ!þ þ þ ý þ ý þ ý ý þ ý þ ý ý ý ý þ ý ý þ1+ý§¤ýúúüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõéèöƒú("þ þ þ ý ý þ þ þ þ þ þ þ þ þ þ ý þ þ!ý þ ý þ ý þ þ þ þ ý þ þ þ þ þ!ý þ þ þ þ ý þ ý þ ý þ!þ þ þ þ þ ý þ þ ý þ þ þ þ)#þ…�ýîîüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööâá÷~yû(!ý!þ þ þ þ þ ý þ!þ þ þ!þ þ þ!þ ý þ þ þ þ þ þ!þ!þ þ þ!þ þ þ þ!þ!þ þ þ þ!þ þ þ þ þ þ!þ!þ þ þ!þ þ þ þ ý þ þ þ' þ{ýççüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööäã÷Іú2+ý!þ þ þ!ÿ þ!þ!þ þ ÿ þ þ!þ þ þ þ!þ þ ÿ!ÿ þ þ!þ!þ þ!ÿ þ!þ!þ þ þ þ!ÿ þ!þ þ!þ!ÿ þ!þ þ!þ þ!þ!þ!þ!þ!ÿ!þ1,þ�‰ýéèüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööîíö¥£ùRMü!ÿ!þ þ þ!þ þ!ÿ þ!þ þ!ÿ ÿ!þ þ þ!ÿ þ!þ!þ ÿ ÿ!þ þ!þ þ!þ þ þ!ÿ!ÿ þ!þ!þ!þ þ!þ þ!ÿ!ÿ þ!ÿ!ÿ!ÿ ÿRLþ©¦ýòòûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööÕÓ÷‰†û@;þ ÿ!ÿ ÿ þ!þ!ÿ!ÿ!ÿ!ÿ ÿ!ÿ!ÿ ÿ ÿ!ÿ ÿ!ÿ ÿ!ÿ þ!ÿ þ!þ!ÿ ÿ!ÿ ÿ ÿ!ÿ þ þ ÿ!þ!ÿ!þ þ!þ!ÿA<þ‹‡ýØ×üûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷ÐÎø‘ŽûTOý$ÿ!ÿ ÿ þ!ÿ!ÿ!ÿ þ ÿ!ÿ ÿ!ÿ!þ þ!þ!ÿ!ÿ!ÿ!þ!þ!ÿ!ÿ!ÿ ÿ þ!ÿ!ÿ!ÿ!ÿ!ÿ!þ$ÿVPþ”�ýÓÑüûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ëë÷»¹ù‹‡û[Vý2+þ!þ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!ÿ!þ!ÿ!ÿ!ÿ!ÿ2+þ\WþŒˆý½»ûîîúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøäãù¾¼ú �û…‚ülgýXSýHBþ82þ/)ÿ,%ÿ!ÿ!ÿ,%ÿ/)ÿ82þHBþXSýlhý†ƒý¡Ÿü¿½ûåäúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïïïïïïïððððððððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿíííííííííîîîîîîîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððððððððññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìììììììììíííííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððððððððññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿìììììììììíííííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððððððððññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿëëëëëëëëëìììììììììììììììììììììììììììííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïïïïïïïððððððððððððððððððððððððñññññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëëëëììììììììììììììììììììììììííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððððððððñññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëëëëììììììììììììììììììììììììííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððððððððñññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿéééééééééêêêêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëìììììììììììììììììììììíííííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèèèèèèèéééééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëëëëìììììììììììììììììììììííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððñññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿèèèèèèèèèéééééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëëëëìììììììììììììììììììììííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððñññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿçççççççççèèèèèèèèèèèèèèèèèèèèèéééééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëìììììììììììììììììììììííííííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþÿÿÿÿÿÿÿÿÿÿÿÿæææææææææçççççççççççççççççççççèèèèèèèèèèèèèèèèèèéééééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëëëëììììììììììììììììììíííííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïðððððððððððððððððððððñññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþþþþþþþÿÿÿåååååååååææææææææææææææææææçççççççççççççççççççççèèèèèèèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëììììììììììììììììììííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïððððððððððððððððððññññññññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþþþþþþþäääääääääååååååååååååååååååæææææææææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëììììììììììììììììììíííííííííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïððððððððððððððððððñññññññññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþäääääääääååååååååååååååååååæææææææææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëëëëììììììììììììììììììíííííííííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïððððððððððððððððððñññññññññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýþþþþþþþþþþþþãããããããããääääääääääääääääääåååååååååååååååååååååææææææææææææææææææçççççççççççççççççççççèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëìììììììììììììììììììììííííííííííííííííííîîîîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïðððððððððððððððððððððñññññññññññññññóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýýýýþþþþþþâââââââââããããããããããããããããããäääääääääääääääåååååååååååååååååååååææææææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëììììììììììììììììììíííííííííííííííííííííîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïïïïððððððððððððððððððñññññññññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõõõõööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýýýýýýýáááááááááâââââââââââââââããããããããããããããããããääääääääääääääääääåååååååååååååååååååååæææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëììììììììììììììììììííííííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïððððððððððððððððððññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýáááááááááâââââââââââââââããããããããããããããããããääääääääääääääääääåååååååååååååååååååååæææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëììììììììììììììììììííííííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïððððððððððððððððððññññññññññññññññññóóóóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõööööööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýýýýýýýàààààààààáááááááááááááááââââââââââââââââââããããããããããããããããããäääääääääääääääåååååååååååååååååååååææææææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèéééééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëììììììììììììììììììííííííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïððððððððððððððððððñññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýàààààààààáááááááááááááááââââââââââââââââââããããããããããããããããããäääääääääääääääåååååååååååååååååååååææææææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèéééééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëììììììììììììììììììííííííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïððððððððððððððððððñññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüüüüýýýýýýßßßßßßßßßàààààààààààààààááááááááááááááááááâââââââââââââââããããããããããããããããããääääääääääääääääääååååååååååååååååååæææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèèèèéééééééééééééééêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëìììììììììììììììíííííííííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïððððððððððððððððððññññññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüüüüüüüÞÞÞÞÞÞÞÞÞßßßßßßßßßßßßßßßààààààààààààààààààáááááááááááááááââââââââââââââââââãããããããããããããããääääääääääääääääääååååååååååååååååååæææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëììììììììììììììììììííííííííííííííííííîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïððððððððððððððððððñññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûûûûüüüüüüüüüüüüÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞßßßßßßßßßßßßßßßààààààààààààààààààáááááááááááááááââââââââââââââââââããããããããããããããããããäääääääääääääääååååååååååååååååååæææææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèèèèéééééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëìììììììììììììììíííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïððððððððððððððððððññññññññññññññññññóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûüüüüüüüüüÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞßßßßßßßßßßßßßßßßßßàààààààààààààààááááááááááááááááááâââââââââââââââããããããããããããããããããäääääääääääääääååååååååååååååååååææææææææææææççççççççççççççççççèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëììììììììììììììììììíííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïðððððððððððððððññññññññññññññññññóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõöööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùùùùúúúúúúúúúúúúûûûûûûûûûûûûûûûûûûüüüÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞßßßßßßßßßßßßßßßßßßààààààààààààààààààááááááááááááâââââââââââââââããããããããããããããããããäääääääääääääääååååååååååååååååååæææææææææææææææççççççççççççèèèèèèèèèèèèèèèèèèééééééééééééééééééêêêêêêêêêêêêëëëëëëëëëëëëëëëëëëìììììììììììììììíííííííííííííííîîîîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïðððððððððððððððñññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøøøøùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúûûûûûûûûûûûûûûûÚÚÚÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞßßßßßßßßßßßßßßßààààààààààààààààààáááááááááááááááââââââââââââââââââããããããããããããäääääääääääääääåååååååååååååååææææææææææææææææææççççççççççççèèèèèèèèèèèèèèèèèèééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëìììììììììììììììííííííííííííííííííîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïðððððððððððððððñññññññññññññññóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúûûûûûûûûûÚÚÚÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞßßßßßßßßßßßßßßßààààààààààààààààààáááááááááááááááââââââââââââââââââããããããããããããäääääääääääääääåååååååååååååååææææææææææææææææææççççççççççççèèèèèèèèèèèèèèèèèèééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëìììììììììììììììííííííííííííííííííîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïðððððððððððððððñññññññññññññññóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõöööööööööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúûûûûûûûûûØØØÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞÞÞÞßßßßßßßßßßßßßßßàààààààààààààààáááááááááááááááâââââââââââââââããããããããããããääääääääääääääääääåååååååååååååååæææææææææææææææçççççççççççççççèèèèèèèèèèèèèèèèèèééééééééééééêêêêêêêêêêêêêêêëëëëëëëëëëëëëëëìììììììììììììììíííííííííííííííîîîîîîîîîîîîîîîïïïïïïïïïïïïïïïïïïððððððððððððñññññññññññññññóóóóóóóóóóóóóóóóóóôôôôôôôôôôôôõõõõõõõõõõõõõõõõõõöööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøøøøùùùùùùùùùùùùúúúúúúúúúúúúúúúúúúûûû×××ØØØØØØØØØØØØØØØÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÚÛÛÛÛÛÛÛÛÛÛÛÛÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÝÞÞÞÞÞÞÞÞÞÞÞÞßßßßßßßßßßßßßßßààààààààààààààààààááááááááááááâââââââââââââââãããããããããããããããäääääääääääääääååååååååååååææææææææææææææææææçççççççççççççççèèèèèèèèèèèèéééééééééééééééêêêêêêêêêêêêêêêêêêëëëëëëëëëëëëìììììììììììììììííííííííííííííííííîîîîîîîîîîîîïïïïïïïïïïïïïïïðððððððððððððððñññññññññññññññóóóóóóóóóóóóóóóôôôôôôôôôôôôôôôõõõõõõõõõõõõõõõöööööööööööö÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷øøøøøøøøøøøøùùùùùùùùùùùùùùùúúúúúúúúúúúúúúúMEGAcmd-2.5.2_Linux/build/installer/resourcesDMG.zip000066400000000000000000035565451516543156300223160ustar00rootroot00000000000000PKZ`›W‚?ö( .DS_StoreUT [ŒeOŒeux öímlUpÞõ ­½-WÈ%%w{mz‰Ü]ËÑ&�– –ûX®—îí^v·”��TãWÔDLÔðC�Ÿ�h¢‰&Dˆ!� Ô`”Ñ&bbÔFœ·;¯Ý[kMT¢;ÍÜÌÛ›y;ïÍ›×–›(wD •ZaVþD 2Ô½ˆÜÙb]­šÖìsùàƒ>øàƒÿ20‡„Zþ]3|ðÁ‡»x}ˆÍ�r(£ïDƒ.‰h”h†è”CɈ‰†ˆJD£D3D§JE‹ÑåƒÑ›ÝP˜D4J4ó§\öÁ‡ÿ8w÷xqÒ¬U÷ý=‘ø”š‚Íóæ#´Ìß;4¦OYkÂÌŒÝ|4¬ëjQð…âHU™•:útÍ*T5ŰªeEö]Õ�œ:¡ìU EEݪåtËÒk»+Fµ¯ÙÙY ­(ÏóWE) ógÂfhú1/öÝ2Ù-s¬×dÛnyÚn™ì–…ÝòvG€É‹12mK ˜N7;³55q7 :œã„6,¤±{ãµÐ3wmi£gÞÍË[O6Ï¡è$ÀùçyßùIʱCŒEãˆg,j°˜÷ Òç�s_HŽ;”ýèäò[SKÀé‹ÅÂφ1x€S<ø÷WU%-˳ÙÖå>zK¼° ×¶ ¾BV’^Oª«·§·'ëË®KÄzºó©X¶7¿.Ö—Ê&³ërÙÄÃk“Â^…lþ.2c;MkçêTØ^¸ö¼ö.E^äŽö+4‰Ü! ¾^›Ñ³72P¿ƒãé-í™KøÈÇb“¯:s”Ó•”§ó({ñ:â7ˆ?ð µqb*0“ãËž5ñösÍ ã3Ìk_SV5ŒwœÛÜ0ÎÕ¶5Œóžñ^Ïø{ Û_BÛÞ@| ñ<âÄëˆß"þÂÏž&OÎOH·Ä\ó=yû‘9²îµÖJ±taÓkêØS¯ݰ¦^~f‡kM%òùÞD*Ÿ‹u¥Ö&cɇ»pMå»S±îµÝ©d>ߟʊ5õ$̾¦Í…U® òÊxŠ6 ßgve¤�É+ã²&úÎSè9¯†AW5´„<òOÏ«áYây5ãr�ÛÚB¹ÈJ™á:®’ù–íÜÚ¿Aç9ó�Wðø}d:jþ8O—þ@¿«ñ8L~©�+Z”ñ¢\ÿ éÆ-<‡r ³· Æz[ÿ)½_Šõ"k&W|Ãç¢ßmUz®áß½ïð#ü�þþ|Œí NzÚ„þ>>°©p&û/¹þü�]¯àR¦ñ ½Gsu§/n“¹©×›ÂdÙåò[~G›zØ�hÿ;ÙÑw˜_.ìñeï-î^Ý;Gï߇D9³îØòÄ€~bL�'Ê¢“�U21ðéƒ"2·Q©3š#ÂðR¨ ïX- ªö Ýõâvhêó¡Š„BëËÍ)ÿµÞ�²M,�>kŽ„çiž­E 1æ[¢ý*ûknô¯õ‘ñûLðG…—Â?/fÊ_fLó±œá3Ž£a°�Ïj�<ˆÆõÅÞ/¤÷Ðyð[B¬¾ Þq­ hx 'CëíâBnó?Ê�o«Ëß8—¢nnÏ)Èx‡òóBƒ9,„×Â6XšWµa¸÷…= qc]S û‹®bâ­èeÁ’hHK^ ô0@ÚŒÏÕ—Ê¢Xg<�¾â¸Ã`¸GÓUipáÿhsX¼.}3Ÿ(ê7ù°éFŽl¤}l‚5L}èë$`õÐB$ú¤à«ÐÃÄiÀ� ުí®0¬lP  óªòŒZ�Z!ÿ"IÅ+Ä›î³ÝC¹,mÂD¯cw'k�}úÿR’tµÄ7÷Bo¿³]º«÷O¥ŸKìß÷o×ÿ üÿ�åö[>tòôÿKwüù#ýÿ¦N|ïêU³� E�?Ö˜P‡ÙHöw˜¬Ynsƒ�Žv9Ðá6›fýÂ7D$™–�ÿï|ÄVƒ[:~|ëÿ ŸÌXvã+aìüÿÓ…¯»˜Á`áo„�Û–|Mø¶‹ zl»df\7}–g–)Ήì……—±n=õ§R]¦É!d‘Ìy†@íÅ(q LÛ‰MŠC\ŒÍ$€ñ¦2û3óì‰,éHÈ:¯¸æCƽŸ�3¿Ó”ÁFÿqþ@Â?§*´¿³Š¹^ÒåbÞ;»ÃáêõðÇNÔ¬<Û@æm;_pN¸ú.0 ˆÉ§õKœîT%”¾¢�¸¹Ÿ²†¬¹ ÿ]7º�D òÓõ‹«<¼†I3Xè|Ëâ>påázÈ”V¢»¹ŸHQgI(sóÂáÚ%^ì{V/Aý,¬Ó\Õƒ¯JÕÿשÿ\wûå]t£Å1ôge5MR¯û#.mf˜­F']¤ðô utÇÛJ)�Sl; v·@eüuÈxº’–®‡ÑW›Q¢eI—â¸.z�}¬Sñ„ê~–‹a@ßOì Å¡ysíÉ&ðOè°å­x_õŽË‰×žx@Î)ÛñvüZ ¬«†üV‚Ž á_ô+Ýbü §¥ÜIÏÒäù$¬“©¡ÊÏó—N.¬Ý©Ì{A?€Ðüˆ zÔ1:eÃv ß9K«¾£‡»2¨ ¨¯{£Ëv6È£šÐ]°r‰Ù"zž‚ÎÀNÞíöÒ€‹²E¸¶Þ@èŠ�ˆ=Ýä"O*Rp¿ø§S&Ÿ)í aýÏ�k0ñ„ðM/&Gh‰ž$ŽtÜ–±Z§çùQ¥DÏ·>ÛºK ‘ñËŸ %ßoêT)ó=dñÂÛ[|7ò¹ô�þMG–Ç»$7þ?êT]Û[üìq OÂD´�Ê–�ph•¬ùA$Íä^ßé¨ÌqúË0y ³×ÿ³tã�õ´%�ð™u7ü¹ ùÏóõró+¶VhãXMK×Fìcõä¹77þVÒuÀžmþîTëB?N¸‚³˜¥¬ 2ÕÓÊ~ôQý# -¿vîv�y:Æ™(Ÿ3ó.Xi©ÙÛÚŽiº *¬|>™Â' ’œHXT‘bgâM]{Riïäg†ôžNðÿñŒŠïßάkœìá¿ ѳ®kÂ�t-c,ñu<+·³kŒ/rX=ÝI&GkÐb¾1RwjêÎÌk‡ÞçÇ+ÒäøE×Èa©Ûë]~ÚÖÐÇ’õ3]ô' [z•j=kPþâû0¢óðƒÌC´x ãÓ˜|ÊN•‹¼ o;U] ´ÝÛΤL;Y)=SsAí T; ýì“ÅÒÙ¾›#ÙΘÇ;]“åÑ¡^bïH–�O¼.ÎÚTù‰ô]úvGT{dUbÐ:ä^é>õQÔ«;{EÇï8j=Ï®â'òÐòß:>&Þþœ^V;6ðpì°¼g_°¿và²@·BÜîèJ;™ºñÏ åóºoä�(ÇñÌ3_"°»þ\}.ͬg)£¤y‹¶žôô.d€©ÞÃdþ8ïîvZ>E#_Ú‹?Mwìé:3Íx6–‘Õ|Cá¬6ì{v^?¥Ÿö²×êÒ+íŒYêXcÙ�U5YM±às‡M�ÈM‚újõ5Nõjûczüð!Ï·•½£;2ý¼ÌxlÐÙøOÛyy~»s”UÎΚv ÍU¾ÑIßØÝœ…ØñùÇzú@Î:Ût'“U›|–òšBs8Œ+,Di^F¼“KìÛŽ�Øæaòa—rüæùö _FŒ,°ãï¢v.à�øŸœöQWç�·ÌîÏv™%—s2œ4ÈõŒë¢ Ð?Û!}��:Þø2óØClÅ¢ÿ9yp’Æ.ôgvZT¯øäuLÎW\¾±ÕåÆìÌà‡˜³òø[y¢ùö¦×ÜA$Z-nI²³ÆòÜí9(y£ÚCl98õké(ÄV¶Œß¬Vµ”GØ2è›ï&³ûVõ`·ŸÒd;ew‚‘ážÚ�ƒA>!uºð­¶º.ÿ–oG‹JG{û9y&*]õß\ÍÕîäÕÔŠÕÕîù‘ùd÷ò¯¿_¢² uô_p¾å/.¼¡!¤Cåö­~wãÉ·iŽ_ÝîÇá.‚ÂqHe¬ã”·--UÃYðZŸµ=ŒçñdÇÖÏô�ÓN3æÐVBŸê]wywâÇÅ;¬ƒ+ù¸xÇ—OnÜÚN ßÜò¾ÐGk?xiO¿ó'µíî™ùVz|7câÝR�dY„#¹eN6<�Q¶ "q v‹#² ¤ò²pV‘‹Ìëk�Ožüd½Ãk‰svÞ;O 9ç¡8ìþ×#õoè©L}�éÏ­é)Ö­ÒF¾'ç  ]ÁKŠWȘè.`¾³kKÊv ÷ì'šK<¹¬°¿>Á€#¦?HO[?©wg�ž´ûio*Üw°¾ Ö¶xý“ô-Œ¿çŸÀücýw?^�x Éí•IæQ ìŸÈÖÔ*±ìz¾¥!Û ‘µ%.>l`q{Á#u“ÿ¿É�ÔòiבV¢'±TNu‹ï¤�‹6#‹kš~âÿsûÊ/T8ð¥GýÈÏ©ó‡;?ÙÍ ªXÇÃÐ$Óe\Dû”ñ帧¬C=}#3Z|îaUùßð¯ãæM«ÿgÉŸ¶0ï ™ æ‡?–y�vjÈ_½”ÇQ/ò)59°Â`¯¥Ž>Z�ÄóƧ­Ö†ýêD¨ÈKËe~‡±(–¡Ü"¬ǚüÄ›·† ¬¸­�œÊÚìÓ2ÿ‡ü8ZÌ}\Hì7†£¶¨â¿yÖoô8÷ÂŇzúsÚÅí½úËD¦,;êjh›:ÿ�‰jͯÄjH£¥š?Å~Q®Ïé:qMýG¾qÆ­´ãº“ɼvt§· ”"ï; ðM*ÏD¡íZR~¾Ù1 U ïÏ€—Ð��nòû_£ò�‚ô1î¯1ª¿l'ÚkØ®÷›ÊWí«Âú�”v7Žœ–s(°]3ÝN³eÇÙù{ðVÏš¥a©ëèô ß{¢«Þ¿þuU9?;Ö¨H¯c†ßóì±Ñ>�´~½Ï?Î á20e\÷]àÝ�´ó#ÛƯÕ]ØY v–>QÒ6A«mÇ¢îÜK_^Æå´'‚6†ëÙAf(ËxüÚa_®bØiÆqa¹Ú}˜õË š�‰r*Œž÷;k†Å¤¯ª`1Šž¶õ¯Ù×c9:†HºŒ˜¼%ç¬_iýjóâä_údém�XŽžf£çR’XVkm¬ÀD$_Ú×5(9W:GE tRq†žÄ‡‰¼šþäU³Îžúû ÆÀcá|�ò#GtÌXþ8­žèO<Šý9™ý¸R>“Ð+i¹‹SÚ YÕf?““ÿ©ÇÕÇ4éͽþÊ «bºçËUg9s/ÝcezÀo4ì×5툵²#Ãkì—ÙÚã>Ž)ÓªF™ÐHcGAÿøµ_SÃà´_§“Ú'%s6óóŽå¦~ v˜åÊ0É×ø¢=«Ð¶œÐlsýœöt+‹ßøbô/}!è¿+_Úñ '‹úqúòë‚î�é!ì”ß�u—0ž±y„ílZä»U„Þ“´¨�é幇a3åCõ:Û‡…�±¾IUìQÖ£F§žŒGÃÇC+g5Á³ƒ}‰vìŠÿqÜ\Ìm'`Äv¢ £øª-ž¥wÝÛ¼ê(t^(u:òó³Ǿ:v¨íùp»xžŠþˆuTo>py�C´¾Ñ2ð·n0ë£ñYõYÆx¢£Úå¸YE�Ò8œK3) �”ò?Üx©y±ù?œ ™`ø°Gì㢻_¼7’h²�mÂT¹HÂùW6€{’X!ÀòÌš¹áljÚzÖ'uá¥ï•ƒžØãŽØW³OI2/,”ɇM£!ÿh=ƒXòd†~|VŽÂå˜Ìsâ÷…Jzpbr5ö%Ý`÷/À+ê…ìœ}½Y¿5áÌ:¾i§uU‡·�Cî}}íÔ¿Ï2äK§E>|Ú›¼¶|m‚åªVä;JÄb ¦rgž)™Ì§=+b,£P@ ãë»y·ØòTwк°’v•Å…1¸7œÁf¤ßX7Ð22qÕy§�ÃÙðcÙÍãÊUyÖ.‡ù±4,`">é›xŒï™·¬v½y~Ì@�åïjñ¯¤)µó?ï¸ósmÏ78|A¬Õz&Çþ§òvÜsðõMÊÊ?ZÖ‡†n‚Íõ“¾ÂDŠ >t–«£â+ßY´­ ùº7ð#ó ê ÖýÚV’¢M³+çr»Jwd³»¯ÿpʶê"ñÍ}—ä‹6ßjæßÉ“X…?Nòe~Hü..˜Èß ÿ›²x§>Ñe’Å#Lù{�x;×ÜÕi|çéÿB»ÔÛÉgÓ¤ã ?¬‡|¯üZþ�í`î¿@ôYt#g‰¾e|*œE»Giçÿ[~6ALE×70ªünwŸøìyWÝÔæOýÔÓö¶ !›òÌwãj‹…�%S=y`]w2µC[òµ38¿j':wY¨´×a�¡BsMÎb§„ÎøË+5²Ìb�HÆEt®ÍŽ„pT•Þ¤Û�Ñäÿóº¾DùT½*ml Ú"ü4F%@îò.àyÏ ßòê—Ö«][¯-aÿ[!Ç3ò¼]óuK�‘lÃÚyã¬á+«Åç8cï³t_ÒgÍ—¥ít¶�í˜{gïÑ´§c€ñÌE¢¹¤Ž2£†ù/x×ý>W»ê´þäýµà®ºÄÉÆó{h»¼t'¤=©8šàå’·Ï“©_D;<Åï¥Ò•棌a€Ôaá¢\%~um:û¡¿Þª'þµëcº€Xþ›¾š |ûÑHgLÚYõ¡ëSö†mW=¡20o“hs=ëî¥H+G�? ‡èõÅ-øáD,Šû‚W_¦åÈì!FÏCüÌ‘nK‹À(^·“ÒÂÉZˆ�\Á4ƒÅ³ÙÑ€ã{Ù¥)Ð3}@ø ­0¥àÖúérFü0vJvœ)Ä(eðx]^iβ²:ú5Þ6ýï·2&´‰·’¨ÿäîŒAàg€�ƒ–ê«ç(ÿ®3¹-¢Üõ!èñ¶zÊ�Ä�×èiîPŸ­š:ëbëD#¼¶YúŸôŸçΔ ÿö5H–ig�í´ØèIÈ·z�QlFfßòýiÝ,Pí瘾J]+Zò8X²8á-“ž…GDl~»�—K½NÞ»´€R»„ã«Xƒ¢¾_qƒÂ¿; 1ïоò˜ÂYg8S7]=²™~rÜÓš¡Ÿ#ÐWíKJyR>ù¼i“óˤžøÊ‘Ÿí§÷˜Ø.?<oJO±#L»Ëˆþ°cŒ¢Ý#ud@³�¾¶£·H«}û›2œú—Ôéfð ćýÇ8žý�7;’yâóÍË_J¢¦TEcÌø}*SÓ2åüjð¿~_õ>óÊ–7x=´ìœ4^õ8ý,úµ+ EçŸ|yñG•^.¶cm'XlQ#‡a¯2عX�QÕùLݱxüb¸·®©g/»ô¡mX+Ž‹î|=Unض:ºœ)~?«Òü3�žŒò ?4ÅŠ�nܹé„\ò8l¤�IÈ‚@(ðì"ïÐþÛƒÁˆ�L×4MeÚd¶ «¯õî_éPl'øW¹[•cÜJ0ÿÁ$Sž¹Ò‰6Ôò<fëõœã´˜+²{_!Î&!¯ö|0aå~Ùb®š[™Ä¨üÀÕÔäÁedkðãGi¼{w†!\ 8*¼4�Y`Ti'N{ Sãí f—) iCZü²ºÝ™x• „2‰òæ8 |ÖòY�X.ÑáL‰¹OØoã“Áœ»7)äqc%|ýWR5÷¥¬È�%ˆ�FÓóðþg»ð~)ñ‡×êDK––ÝÁŒr—<^¥ zè;¼KB:*ý“ý¿C^3U;)è’�Œþ“éO±Äàý;¼Á64u~JËãºÿ$Ÿ+Ýü6�)yÔ?ð)aʾ!Cà÷ŸÕDö¦]ÆÃU¾Æ 5�…þgŸë q¼tèñ oW)ë”÷U~©ÿ¼ê^XÕö©²—ξyÄ[ñ9¤ÎÞý8aô!+ÛÉ[//�èãìoÞÓ”ÇpG{5ÞUºëOG$?Ê;xÀ†g ½…|TºÌU$[´«è»‹Ñýÿ¡l>éo§ÿîøººÄÿnÇñ¡©–éqñOçyí¬n¶á!´ž…+G.xH­¥›aæàçÃÖjö%`¬/2­Ãl;!gØáÝ®¯õßV´=€¢e–¯ÄɈe9à�/XÍÅÙ„<ÜÕ» fìÞ.�-m%V;6„>n’¤úE‘lšÍû)›U~‹[V¹ •])Äs…ñ{={ÀCE»¤€�ý‡"¯q€Ó[÷ U5 znyÞ”c³ˆ6Úz`1…o.Ü !âÚ?ÅJô%5ß×­xÜÙ„ 0y¼ì* º­œªý½¾ü¹ëWë~Á0už×o¡d&Œ}ÅíTó³LÖßÿ×¿à‡ØOWÚý`Z¨Â³ø.<2ˬ>¾V< ;À°~¿†AÂâYÖ·ìnür9ƒ_ÃPïÐw\äs8�À[0>JÇÙˆÇù¿‡Ž³¡ƒ¢#ËÒæ$7Ñ>Ú•ƒÛ©oÍsÄïW>Tîf¿%÷7ÔWÖèÎ4·?zFÆŒ‰5èÛSO«qÂ:´{KQ†#$kR;¬pöÊÝ¥ðXfÅc–z rë��‘�e÷*¥ökÓê´W‡cT|õ�^ëWzC5.ÜòÉt‚ä¼Cá.h‚ðƒÔ�’A‰v{ò¹µ¯ãÙž\õЧì;0ƒ¼ëÎ/9nFø)_ðG"Â'–èè¸Ñƒ§z²ð:(ÕWJË…ÙØ|æƒ- ÕV,öªv…¼7øè¦í ;„™×XáVÆ­?wgkM4~ÛÁÆ>/_+6<¸#¤G¸L~ 'ø:ÉÝ‘¦Þ}_ÈÈ7¸éкCļßI¾Ð_•]8Aþw wã�u/$¼¥a©oµ©ü“T>ö#�ãÚÇ›ö]êàaþþAÿŒÎ0B~»ó�zÖ�邏·¥rì/»ý�u¶RVrUÁÂû3�yèýæÆXfذƒ¬´Û2û™Ç7ÿî``]”ûë^é?ãYÚsç xõ¿Jnè¶{Ný½æsÿ÷ïþ�”‡^o|ÐõFÐx“kÈÑ<7Ïè6|èG(|e¼Š'íÕQïÊ qH¤Š,°lñÏÈ^0Îߣœ�ª üf;lŒd´å¸wñ‹™pǼ——ü)@‘v²TÈtµ�%j‡m®Aühs<°O¸7s€L‹d<ôXô�Àkç¡áD>4¶èAò¸ÈÖüÌȺ~»£, Sñ˜‰£ógÌ#D ªd:"¥ÙÇÈÏCíðùf¨K÷¼XÅ�I }˜•ϳ¬¶Þ£.æ2˧±�ýо|!h4Xü`l«¥>ÊzŽ9Û·(Þ ‰€Ý�ºÿŠ Žç†k²v¬í’�mÇåiŠß%p»§ëöFˆÚC—GØéRdÀNkšÓ¾4rI0YÁëR�Œ�3)þŒæòî6Üã„wÝy™À—à0Y]²ÂÞ f˜mâØÎ®ýAXK_ m^â•ÔÏ+Ç^ÙB(¶ízƒ¯¯âù‹²i/‰‰·—€—á >­sŠÜêP–AÚÈ$dK¾gˤkˆÊÈ4Row‹RÍGÙÑ.é«XÀ$”“�²Õó*¿O�P`-ÏðÓ&í›��¬gù›|ÃL›ñ’'ž( l´7|yÊö¥?l™h[Šæ ÕU{¦m�ùI'w`SðwG"ý½©µQ›ûÊ^þ yô�®‡úN�ÔFp“–Ìtß®|ƒè|”r[ëo'çÑI?†ËÍï ÿìËÓ�Ë$ݦ¶?íÄÝbÚú¯Ð �‹¡€=Ûâ*5ã°cAà³a½[°Èy6• $¿¿—3ªñÜ¥‡ú个ßÕ}…ã‰mFžbû�Ÿ|mׇ`Cˆr|PÖBã²Q”ÝÁ+d·¬ûÔN„6ÔèÿfÌ‚þK¤ý‘OÕðN¾‚Ië£�©äó¬b…—iÏßÖØÌãV¶qÞ„oUùk¾8?a/µóž‰âaþRÄ­v–<•2Id ïÉï¹m3KsÏ aZ2|$R6kÑÿç|¼æ”eÁÿ°#æ5þ¿Äc©‰½ ô;FO]ëR�Ï\ ý2–²�›¾äoÛ´¢„ŸºÿÝ�ß”);WÒl�”f¬ÜdãHÙ•PRÃþë+ÀT˜ŒSÏ:{ýŠ”èJª ePFBö•…ðÒ'I”ŸtGBÝÀ˜ÓL;Ixi`9ú„ŠçW†(®ëΜ»ê°ôÝ¿µÏ¹ÚäG ö¤ ÍÐgÔ^®žU!ö.¿ò—¨Eár>*�µccˆ6 óˆ2ot\>;ÑêÙ“‡tä^÷Šg‰£¨³ÊcÚí˜~�*\�WI—ø¸9Ò@Ø<3)ÓUñp¶E®">02Lo!êŠí +Ç3ƒ²'Þ¬}¥ëÉðë<n¢{Ó6øj;RUþ¸ñÊf ýJ®}Ý7}•9ûŒïb­¨ ê15ågŸXöE²3„гYl§ï(oÝRIG›nî¯Ó‘>—UMÌ÷‚Ww@“ßпÖhù£EÂuÆ|ÇáߎSó5ê¿=ž=ßÏÓgçòÂÝC?Î%„î9ÔßÈSï¡Ò0n\P°“�Oò£³Z Lü‹ù¹×RžM 夾QPM YºwÒamÖŸ—òÀåzÒ±ìp¨Ò—êßòw9 ì x ¿^‘ÿ“~tòxÊ€÷:îiËt]<8ú6ו©‹±',µu¯9#§’Ëö“íÄúý[í Éÿ†/ð…ÙÏÖ×鵜@<ð“WÛÊÞûáÕ±nU—2Ž–^3ð6.ã^ÓO«&ý¿ùÍ;ò™w¼ƒ_Õ·ñ}ÃŽÂ0¶äÝü n�•Mûoi>�õŸ3ì›C¥=&SØæggÙ™d/2…³¯E>ûj.[ÄvŒ|û ¥¾áÅZ_ôŒ->÷Œf�{Æ™²;†uѺ-BŽëÑÆô²�Qß´?×�›¼ÆN&´ñ¼FaçÄ«¶M#‚@=)è13j;›ðŒ]¢07 døÍâˆÞS+™ŸÖ�b¢öažUgÍ"má(Y”u%Xô¬ü㈛Hœ´tÖ Çõ7¨�z ºXË,^:LLÀÖ_Ãuê" ƒ> +lgÙ;ñ§ýÌî„�·ö•Þc~¶uLÏT~_§”îÀÇÅ4Óh�láÅ1Ò.ýßùTS?éæ;�£òTtǸÏ˾a”Iž£ò¬ýß–”�®ñÎW^Æìú _ ‡Ü°6a™*‰þÞµ3|áˆ:¤Ïä+½°¦1i(ǽLóK¡¾*¤ùëPWRc1B§Í«ÞIÇg²¡!à׺‹ ápÅüªÍ83‚`u6~^Ú¯|L]ß”ç¾e—é<âÙ¡Ñ�”·ðš€9hX†o— HÁW³ ×2ÝØòìù²K.;¡d´¸¹zûϵš͹ÍÝ}Ë“D'ò#Ë%î\œ=“™Õ9?¨‹–§`î šÎÍŒÂJ%ýv»ýœ"½ hh[òR€£™«Åíþþ§RÆÍÅ^fÓ-ý£b"\.ÔVÉå!YI×Læ¾øÏ’‘r3�te�-ñÚÀìeóQm'†7UVX\ç¡.ßôki—ɺicRâ¬Í °©/X†å"ÏüO°áÑ¢úšç×›:Xô?›{Úä—ue½_ôŸžãþ6ídït½öˆ"žeQ²�¥P[×==‡™a¯ÁΔµ T£›[Û�iû¡þ¯pR›ëJ_è?Àó~KMOÕæI�W¿òÿëÎ÷çö—Neÿ}§7ú_ÅÎáC˜O¶#nü³:�˜eâ›K¤þ¢ŠÊoÌz%¡™ïqP¾Öôsã›Àcý_“õH43,Î,ýMo&�oyL³š�ÜÄL07“¢u h æøc¬s3¦ü°^4eOf-C†r±P¢Rýù%Ø�ö%ÐåCÂDùါ�в�€�…é âýÅ´$ÙæóObµª}™û…­øQ}ZÕdQwŽ*k�ê]ãò0O$·6—û_ÂÛXu\hÏÊ\n÷וšs%N¥iºšOà«iŒ�D"‰ZïsÖûªö¬Çöu¥_°–j·û­ì«äóâÇÚ�l@3òëÓÏë÷y–x$µñ¶þȶòýÖþþÒãKtçf7eÅ �Óù‰P¶ëSî¿?;H‡ä5~¶× ŽÐï ®çuHŒÎfqH/»Ç³h¢ü:B½·ˆÂúuì¼�“Öñr�^¢ZŽšø»ã‘=1z«N-~kyð´Ô|Åñ.åt‰,¼À³dëw5Ñk>¤ 5®œ®§.FªÓç�ò«ÖÓ<�üƒ%ÈÁ|RnOæéïIÞ�|F˜Yÿsuêaò;d¾C"}Ʊá±3Ôw¼¥�7(ãJ¨^,÷@cŸgRx¬OžÍ "Ã#IëBàCmÊTn©îx[Ø�²Í ÊcîSF�iöõï³9/óÁ# ·N^RCÜ)ºã…7ç…þG©ªÛÉDUï!že ÈK�#É^·Ãu�ß Ð÷'rÅïsŸ6†Ýª ÿ®9e9šAWlç|±�êðy:”Ǽ4À êU¶w$úäZ¨ÿª1à¶Î¯Å?Ô£ w´Í€em×%,ÇßO¿»è=M;Šþä·%ç §·;¢\Vcyѱ�ó@ÿE϶ó7x(ÁÛésö›»$�|æx¦ÄA³žŸýw>—£ ÿE‡vº›ä9ʘ;ó܆Ðfgf ³¡4—Kñc³ZÌí®†˜¨Pn½àø4uˆ ßšÐ8ôeìL|�ë)-�؇˜ t6_©gÝ™-y'˜¿Ž]ÈöɆGç¿c£4;¿ä@‘»ã½-ëÏ\çÁ_H}#Ið¬J¡-ŒmÊrÔ$¹‡MRͺUP‡Kô«»vv8�û±7°Œv»©„¤ŒžÑ‰¥qÑŸª{3,—9ý[n²à¢u¤ÎCÏéߪÛ”eVs¼ˆ×]eCÔuÓŠ�áî{~jÜxø™Ÿ`‡HÏèû+ë­Ëv¦x›^Êð·­è¸hÿìÛ×`FWã6UUb};ûÔîÍýþìú‰f™]gcžD7ls÷¥äåÓ¬›­£%4`íÏðÄ:H›‹ËSÁ•\¿pbN#M^9Ï‚Í�žÕµ‰yr°‹‰3A$¢°{ &>=ñ¶².èá5çW»õG ÇqÍ/¸.C½¥-Qéš²¬ ü­™ÆM¾Þ¥L}Ð)Šã$µàéÂßÇbŒhÅÏM¾]Gß&`3ôb7‰ÎŽ.ºÃ�u�Çyçã“s‰ê1éÜ÷­.wA{ˆoA%*8㘜°óå5ýJèû$Íïµâä½�ÓhÒ\;Ç?¡ð§ ÆÈ³ ÝÊ÷Ø·®i&p`3†ü@Æž¤'ÕÑ^y>!sGó,‰Äê 2 ¼§-ù«¥ú ú2á˜Àýø�êÞéî“ñ©@$¸¼ƒ�i¨"’ª^U·Ë¯pum ýÙ�õ6•8ÒØï@6v¯…¿¯Î[Ôø$u 3“–u}ÐÅ…„*=é/Ó�Ý£/êfÕ®‹/ì~Öÿ¤ë“¾/ÆËï|sgw¤¸¯hÛáí7:[µs›ÌÏáYÝ;»€3çúßù¾ªÍnܺqÉrÐÙ¿ î�œ<öÿDa¢O)þ÷+Ï0ƒlk´-䱚êM«Êó}ä”·@Ìy²ÂYÚÄ·#p×a^°ÔFÛ¶÷p¢ÿ�'/u5²<žSxý,8�"Š$ ž+eü,˜ü‰L0H?—àg¦´…©&»©zÒ«@Óò{ͲE,}3i@¾� ~˜P®K–‡Ì‡�ä:U])Úé߯¬´þ0‡¿Ó—?H_º—¡Ÿ#FÛšŠß‚ÓÝ'êox~æþåÆýÃØÈZ'¸¤k Ï÷ê;¹(åF!Z޸ΚK;¤Òƒ9.qyÉkî4¨¦þ¶•h=ÓïúúÙ§ð-±çˆKŠÝoü[éú…Å?[â?�Æ•¯�b{ÒD .rð×å·î\|%üvVßKwÈé×<å׬óã,aœzñù}ÀN�Yro³V~¼lëøí^ûêOøOú[ÓݤÁ’óÆ3fûr²*x!)­*ÀYèâÇhðpP(ŽS51ÂßVï°Hç•ð©-D¡µ+êy炉£ç¥�=v¦›L}¹•™L?¦Æ–÷m��T·»�4jßó×nS»p x¥ð»�v2w}OmãôÃ3ãòïL…“…âBX˜¨HçK‡€}¤ôwFŸÀ"]žŸÎ|HÛ­ÙN�æë™®Ÿél?7ýº|»³òÉ8íäÜé¼*F<¡�þ>+|È䬸ièôt—P®}GiÃ�}”�•lR\Ð[-ò|£ÿ’q‚^ØÖ‚£ëÝŒð>÷×ð¹}‘êÿ¶]U–wÊ'žψ|JKŽC–r¢0]üœ–-MÓ™xî…ÂD"ÓB´§»•©#È©}5uÒnþÄâ+ËOòŠiË¿©¿áÍ:5î²3ýôŒ¾dc}ѯTð¼aE‘Ý�ÈaŠHeÜs¨³GãÍ2Ñ7hÑ¿ùÚ1ôéó[wú™…/µ~Li­ƒãG3Äð3ÊIBg/÷ðÉzÕ`�f�@3̨+Þ†|�ϢퟤôqÀlÆ×Î36ßê´6c‡‘åî�Õõ,HßAç_ݦ ¡ß¸Ö¯;‹phoð$ÁÅÞï–èô†õŠN�+:<êË6À M¹½™å—Í/‘Pý}¹qmÐí¾è/�9ýdœúfÓk|%üôy@|£1Ò¶¾èå'�?à•í¾7\ê©ôqŽìÙè)FµqÃõ¦;³�d“I'}1S²Û@‘Ϫœå£}ç2o_Ô¡µÍÞå|Ǩ(!ûÊ£Õ¸ƒ¾L Pÿ6)E¢8sYÈ«ÉîÚH…ñ"½2WJåÓü\ê¥IÍ\-ïGÉÏy+y‘S4Ú�@û›Ç SåZ‘ÓbFÙÆˆoúQ=!iÇÁÑq�—`àkÖåù�¹A¢�á÷Õ®h”dÞx x{$2a§>t¶ª� ë¹ï€?·�cUÿ(][ú%âS¤–I)jkû»GTëœ?uE¸²ãÒߟv;PSEZ"¢0YÑû�}úã„v:Ðı¼r²ËD äÜÁ§>J±½È‡lé$º±Ñ±5­–‡¿7‰s[¡º]žÔcÝP�¨[ ºîü§ïž¹¶×ݤTd «ü]�ÉNÿ3Ì�žŠ;Œ5?ãôú²§Ÿ©®Ó)X#ŠeÝ'Ò—Ë*ýïà.Qì Î G®ó$UúŸuõ‚6ýNr^âêÆñn:«àe޳ƒ'|É‘p‡õ?÷§Â¹ãKùõ;8˜ÿ�þW0w~¬ªï0³þ_Fñ9]vU_fåÈ ýßèen(©Úl�üßéáÿ½]Nm³l>Ñÿf\c—ÔŸs<ÓüºäE1l8œ áŒÌÎþ«bP†ò)ÃÔPÔñ{í —†ä"õðjr“Ö…4"{H'”{à g¤,\óø!�þ¾ ÏUÌãa_U¦–'âwKâŽ1Ú&ÅãN'ª�åù¤’)އ HŠNx—&Ýwóÿû”úY ]†Ÿ†ƒq ­ãßÑа.·Ù”pªêRϬÀï%.ÇááÐŒH¢„/ ¼l’Yw�[B”ÔØ£‡ÃÓbß:À`—ì>»=nÔ¢˜�[õçÆÕ™=³AJe\ˆÒßçþu±ñ÷ý—¬&~pý:tR«;ÓDt§¿W$W«ñdk®Ìk'Eô•ÿùËàòú­B¬_qò¯ÙêÎ5É“ntt˜?Ô‘GE0?´›;C_ÅvÌüü8_Á1ÌÅT½ØÑ±“-íx£ÄY?¤Ÿ Í-í‘�ù9-ø�Ø÷j×:�ã_ïÁŽwúœpÇw@—Ç#$ßéÙ-Õ›ã_qfÛùvž5Íñ£ÊeòÑèú¦OHÏtÁ#„ �=Ê;ì  À˜|ÉôGû}¨¾¼›3ÉdYe–üqw¿ôÉñ»xòŽ�ÉO“éE5‰T½±V¹Ä´RòOª¾–®Úà€³ðhµ.Ý’ ?eƒŸ�ht-‡gi½ðÔ~’Ú!Nã_Œ…Ñùюlj1’YñÙ½�ÕöjÀT^ën2X-"`tUâ¡}ù7©ë+ X'@ÔÌ#ã0ç áKÉ»·¯¿ó¾þ·Œ°'ÒvVÖqý`õ‹c‡I¡›ùëΙ.Û1Píö$G9ÝÂ~]¼“YL9ŠÊý‘DK; 0:¡ÎApˆV-¡¼š¨wg|U4îøPÙâja ƒh™eà€¾d82#Þ Gï–†”�ä„�”DåV� ßµÀ På»Ê¤�éÕ r$*�Îb|°~ÎÛÒ!+� v¶ÁUzêÿ+ùéêe|·õó€&~!Œëj[wÓY�òß®|çÇžÖåûá:Ñ´³³uÙÀ„¸ÎâçÅîeù:¢^(ŒùV�‘ô& ¼àúä·þÆ* ~–ųµð¨¾êJ“_!N�Ùl>»é½ò'~¤/÷÷1]èõÌ?>Ö˜lÖߌ?ö!añ¸ú“㘶N 3ɤÎ`�À•Lø8äD« ´²TeØ šMʲb'ÿz3Gú h¼Ä£óÛúŸôrŸå†7e+x¦¸Gí Plâ‡ü‹‡¸7™PÙ©f€J-5=¥šÂÖ¹8è•ëv�Ù/7(O•1��(ô…‹ßk)¯xƒŠTÜdž}›òidÅžj›‚�±öò{Fþ™õ£UÿÉðÊExøéæ)Öy€Öq¯¢1óÂ^;;ñs–"6�«@¤¦¨Ý“ꈦ¯Ø¼_dü(åMÄëäúVÎÐ>ËoŽ¡ª°�h­C ÛÄé€WFc6Ë—‰ÍÁªú_íF x¨ w!m…A›:óUÔuT*¾µ6ÃûÊ0ìã–wÙN¸@¯Ôgz³ =wûW%ÀŸÏ1ŒµN~Ý%ÙäÙn¿êɪï\6 —ˆn)¨úšäÏw"2Ó6Håøåî%™». æí¸Œ†bÒ]“É N¿ÞŒ™Ô‰þ Ëß$ç/Ã¥NFŠ0RB¹úû Krˆã†¿‰‚Œ,g€VÞ?Ë]Âz c¹pà‹nóî>Ә9Ûž{ËP´C<«1_|Í�,¯È:»×ÔèÜ4hh¬"’-wõ’ŸhëWã…×§ú lzšßàAûSUß‘÷…þ·molº_ƒ¯nêaÊA°ßÜà“de¹À�ð«´Øz>ÎØæ �OlVG›®¡n#Aÿ%Ê|…ëÎ_?Mï�ÔBæZyþ�þgYëä=뿵uý§�Þtø¾I�^ ”W2Ôññ }?ÕÿJæìЧ47ñÍ2ïÇÛ,ú;ð˜æ=S¸–±´Ú üª®coE<éØ2PÅ»p=W-Jý!ûZ±A§7cµ¼C cg²þG¡ÏAI¬*[—dñÀI” =Óÿ µÌ·ÏnUÉèl¿EzRZk#kd‹%ËPU'ÝW,šÄÔ×.U~âq2­±Ø;â´!w¢yÜÑÅ©®D˜fÂgŸ9üökŸÇéÑ<ï©uõŸ·÷´ÜVX �*>™±Uÿ"ýÔý»”j„c9ÜXèäN³{¶þ`?æW€ "íwªáÎ4€sóóÜAÏv!ZÇ1Ó&ê|ÎÚ»ž ˆÉòÔú~¤;ΰޅÀΘŸ2ãºôMŠsÝ~k•®yt‘.òùѹД_¡ô¼Ëê×i‹5Ý-àÌÁ®Ýuô Ò¯<ƒ'áŒ|²—ï_ºcÐÎÎpúžñãóÛ¿(n ;þšagÇ7®‹ñ† ø2à�ë+Dc96«ÆßÀ}úk;÷ä¿Gý×kö -JÖ~å£=:§CwÀ-gòÈìH¸¯Ó²ƒ(Ó‘ŒŒ—Ù³.€cýŒÓÎTªñ2é!—£y6áód2ý¨.‹Í YPŒz=uËÝ·_åõáÏsS±eø!„ÄÃð›_�ìèÉQðÐ.²!¶å5Û×6ÅmwgåÝòq*bÌXø–ê 5 ¯iqâC¶s·ôI-ÏK³tæì­˜wüarYKüá´'œmu)Z×oi ™ðm›{£ç•Ã�œ&×Yþ3ü«^CG'ÇH—õ犯v.#»*:v´-}£�þåߺe'ë}¥ÿO=y2Ó¿¦Úé)Þ£¾ã*»’Îbî ,hÅ{ƒ`àÛèc¯:®¢·ãÁ"oþoüв ·‚‹�\Þá¬âpÌŽò�8ŒtFaö+ß$›}_`Í;…3íOåóÖïRÇ‚—Ÿ8ãçÐ$“õ‰µÏxæf~E¶Z”!Š;þFn½û‘f¹‘Ú^væ$z¸ÒQ½í„Ò'©ö\¨¼ƒþ@ÿ âß ÿh7iÆ\@И댸HÎxf¬-]Ž7ÁèAº¡jÔ<Õ×°ÎМ䮀¶ôÅ•7>NÚQ¹‹¿þ½S|°Lƒìì´t–¹¹Ðã_ìð>ɦù~Vå ¸à5B=Î0üÌi�Ž�\ÚE/í¿¿±¤2è/2É ËK¿H«:Õö›Á+Ü' ÑXãÐ~œbº=ÚØôÅ^\;T^OŽüÿ*ÆúAZФ�„²kÈÔ»-‡*�çîç�®)·ÙdÛý.$ðõ¬ß¯áÞ ;gË-ÓÝ�…¾CâC ^(ë*§Ø«Áf—•|ûª¹�¹i´ðP”Úi…Æ?"Z j×® CdƒÓoÛùôg+´Ó…´àHvñÈ4~îœÞ‡”FºûJh8_ò¸’¤�z�Êg–¡ã޶;ÓÐ#½�¶‡gÉ(ë®TÀÌãpÎ1±1Ê‹1Œ,cç¯:¹«’ÑhcÍ@¿�?øI;c³áÕ¨ àŽH‚¬F~ìzü,uýqË—ÿþ†ûÀÞ ÎV×~#M™ÆpO5>zî·²¼ÉbékýoyxW玎ròWÈ’ÁÏžŠ´ïYת&r´ÀZŸð¡Ç½é«/”<‰MÝ¿I÷x9Ú©JwÛ¾ÂÊéo¤ÿNOžê/ÓÚæúM5\og2C=]m¬k‘ëSÍû ƒ©î÷“ô�lv0»>®‘Ýsú*ÿØé}…c«ªœùPÉ}†¹,àt4ý€Ç§åò0ö|7ûœ]Zf£ô<Ëu¦ï)m߬¬³³•Ï4þ=Òÿ¦îŽ6l—Ç÷Nÿ±®ý¶¿'8+X¬ÿê~­ÿæãD{ºˆ(o˜1)ÑYJ¡WÂKVÎò3=óðÏ´!Òžù‚ãAârz]í,Á³‹,nìÝm9ÕãÔ5[&DZYí§ÕÕ„’ðPhxÉ¥•� ÿDþÕÜÌGãñ}·ú„ãd|Í?0š#*ƒõ&mevµYë«bj—ŠsZ¾*/ ßÐ�¾j‰ˆ¯ñC×õÏoR^süLv ߣ”ôÍå!÷7Ë3F_Ñ·-ýÀúw;I­#¼»{#Óä^hÂ"q=M³�:ñwÕý*r»“çõPšºùwÆ“ÛbǃÝ3X†ÿjú(“®O:þ¬'�Þ&7_ÚNó©ï ìEîÓ†Ÿ³úž·¨aÎp�'\äwõC[8Û²òk>Çw°½?Ч®^·*7ºº32MãÙ¿�&´÷fçèn6V§ßf‚?¡XßÙy&Û¶ u;Ë}¶g˜‡̯±lõ?CCÞ¸ MûŠ‹gy ×-âÿ8Ú‹pFºSy¡Ù v3V¨ ÁIÄw,]ìÿôéˆošÅ¥° Ïœ.ú’y1«ÈÆ?Nú†Ü@3>L™p§_BLã+¹rÍ»§/¡é[ôŒt{Sfýzœè|StûúFy{©l­©€Í§yÿê�í„㬶Ãe6s kýžo:9¸mør_æ9pñÌ3Ï/Üù=ºµoºx2Åëäiö;HC2G¨&u=�‹ŠÍ’ÙÏÜ âRPìqý]Óø<~�ÃÞl{Õë>ìoþq¸2Æ`w©%Ÿé}Ž7 üLñ§þëž�͘ã[HÏêß…Ý´�ÚåçÐõ€ó\P„ «šÅSçbn÷|<†üœùXéÖñk´Ÿ6šÿZÝ\H…KGÑ©8EÁ­Š²ï…¿§É›s³Xu–pÏ–¥.W=32Œ î4c¸Ï;ó Úð‰�µË_h²§EF?¾FŒ}©ÖªÝ“¹N¨´ÅŠ3°qÂï¼ ÉXèÜá¯øäB«ö”„±Ïçø…×9‘Æð{~߬â¡×Íã‘à>QAëUPËâd¬§ÝC9FZ\fØvLR s—d#·Nò9÷i›�»Ú¼â6Y´¾"­���ÛSƒ‘;iÊ$ÈJSnßÀ*íÓ§G«Žµô|“p1§ÐñE›*@Ò‚I©¯³Å'+�:>w6at4Td@ÿÊàd7v�GÏÇØqAR䩟¡®G»Žlp®]poú%›Ì2¸ƒ7m\9Þw:Œã’ëV÷¹~Ï XwôìdmÒ}§W·’],ÏuŸÒ¼KÕ‡Ëk£Ë®JÿÍ�´ L•þS̟ͫJwŸèÿî÷N>«XkPk÷´x‘Ô�j!ªÂWÁ®ò³Ü?Ó×./àT¹(á%Ýèô'X/Ãq4¼^Ÿè¿‰ô�ÿç =³<Ôÿÿ“>;ýÎÞJšçurýÔ °Bœ¤+ýÖ…™ú!eò‰IB¸‡­¦ÙZEªd�C�2Ir<ÇvÎ!îõ_ìÞïdéC �#­Qt¢^ÌÛıù ÊÆ„�g†‡ù.Ô ]ªXôÔ�-I¶¹vdUŸºX·®»|ìÁñMý�!iMß³$Ô®Út¦ i¥U½–îJU¶¾Ê>DWÂ=A3wÿ”îÓbK˜÷ãõÔ�ïÚ”¾‚²:QOƬL(­f{–3¨¿,u~âþ×üê?˜gI²iÜØÄNFÐÔ2€çX¶ =Н¯¸.cDv„-,èŽ@Å_ÿv´]œ]w„™];Ôà«ûfð¯r$ºÓæ“=˜zøE€õZŸ(bùçÉÊŨbIô¢áHKÉç;–¢Ü)��”Ÿ'T'åWål ö…WNubq� 'ä¹ÿWýs>!á¨é±�MùßîôL8{æÊ¿¾vKókYö¥ów¬ÏG1¶:&\˜ 7X�9‰r”òxàHý>ßþgG$Jœ¨4QWßéoò\ž˜oÛÍB•#Ý1ºØ;žgÎ1E>�È´ô!8í4_ÇW=ÛÎÑãWêÅÔqœoõ>õëÃÆòsÀkãF°ÿXàÉ¦È aà}N8y¸Û¡Ñî(üßíÞÎf8í(‚oð‚�•ŽO–�ÝŠìùB¬�Õ§µß²ñ:^‡fû�ÊGõ÷Ê™êø!,= wô1Ý·] ÀÍxÞ%ñÿðûâsÚ9ã_ñýçnq!ô¥jÇä €wcLM½»1@ºîÚ{_^ƒhN;CV‡‹’eË#2{³µ©%miÜÜ~ð‘ïag9¬¢Òª]þº³·³Ï)žaú®Ÿ3ÿ^:@®�?IØïŒÏèGø;ÙùV.­+;›€òfy§¬ööª# Žb\w~ý–æÊ†#Í&#Z¯1¿ �É�ßÒg} gôvãL�_³J&o†«ùª3¶íäwÄ /ž¥ç ³žáJÏuF¼#Ø!ßáø¸3¾®X-úáÀIRý¥\Ñ;{ÓÄÞÄÂü«öùDG•/T ”UõÅô4V�;Ÿ¥Sk陂l;ép‚MDÒé¿}õö•ô»ÑÙ ð‰ãŽSWòXì–òܨ;•|üI{öÖ³ nMQ€¨;pC\Ä€vñ«7 ܤÝ34?ó2ÎÔ—êëît‡óÃÅSY>Æ¿ú@Ñpߦ$r˜íöàÍÖ)Á\ê–nè¶©�³ÕìšvkÂú:¯oHöΖ'pF•êÒø5ë¾”ÿ oç³4û8§–�+GÞ§±x«\}Þ{c�ßpç§·<ñ³ô&Ýî>ä­#àDsŸe¾4pD­r$6?|ÏWs¥ÏWŽ?°õÛüùÁG¥IŽC¯fóðèxn�ØX3êÕ|ªT-ãH¡!œ�HTuI¿™’=ŠMµœ�ÛYïw÷D+àv2Ì]G¥ñE±Í "°³�™–-ÚÚw6ú.6¸ÇöT´Ÿ4¥2ª“�\òqyœ¤hwÑaê\±i¥öYbƒ�÷…Üæ]’þ[隯ipéiÃ>£\¯_ü íŸ:PÊ.¿—cAØÌA¦ŒïŒC™ 2xNi‘,ȶßž¬Ã_Ámg?qÆ•bÿ©¸/`îƒÿ:1ò¸‚m<)"2—Å4Nûô#$á—4Ò¤SžÈ¹œQƒKêú9Ýñº”#zÐñS+�-;—ñ¤Ôo®yù”Æ'©’cĽðŽ÷âñDtv}Â<›ˆ ÕcØñ»‚“åëcy×>Ãÿ©þ[‡MT÷á‰�ØéPEW·¨ƒºVÉ ÁèÆ¡£#÷Ç¡êge/f7N�þag·íºq­úYÑÜ�KNÕXTp»ö»ü®n'ÇÕÌá'¶ÓÒ§¢ŽÙVÓ1kWÖ+àçòNÿÍ®üDÿýwæ["bçÿïüU;¾¼Üv�7aŽØ>ÒˆoÅ·XæÑ@†<›­n~kÁ=�+̵¾À_/·©êæzÏÓÚNTHª)¡Ôÿÿ#ý�c+¥/!wÉ’Š:ެ0’ã Ôo çHeò¥G3+ÑŸ$IWZîùžžmâÐn‚È"Û„jVþIâå‡ßùØ2•á¿ÏµlîÉ\H`ê%d®Mý—qǺ‚øÄŒëßŨ íÕ?ÉF”³ùSnÕa•Q©þðv� <Å2I äAH±,(² n&dÍu/¿)âéÿþ�ÿ|´$ù=˜yür$—ƒ&ÜÞ̺Óì|ý[k½_úýÛ1hdg Êγ†ûÃÆUwÔ½í I,£v%£�<Î žüø$|Ô42T®ââ°¿.NDøZ9Éz®ä€—ä%ÔS> G‹wØ=S¸ß¦¼�AøˆæN(à« h�G  Í«×ßœ%¹$ô®¯p(N(ª Lèæ¨Ãg®’¾jè<,v2<¡ÓÃWeÑIšÚSüꤼÆa|æhLí¿ëèGaêx;{BiŸ%K8ó™WÛ€¢Ü4Zq'½Y´è'tu´¸¬u*þd¯bƒ÷w¥�ó¯Ê8[ZŠt›çBÚóöÉëÒÚ„mŠWŽÒLûÔÉY5AÍ¿ó}å^ÐZ)�ÿn ʉ3ß·ëúà2D+:9¿“ÿ;ú+<(ßYÆ[º…n'Ò™G»„‘ÛÏ_*YÍp3�ø»ã–�Ú¦ /æµã´áU «ëgªë²¯¶ ì}—îÆÞêT¿ñþ©þWò˜mW5f·úðƒmã¾Þ#Þ�¬W2�ÿ­úŸøÊÐö©þoíû�þ[[ïõÉ¹Ææ|«ÿضºæôPÿEËâ8oFTÄá3>ðgëd;Z$ä;¼Î$LB÷lYGJ™O(»¹%B¡óMk¾HS i‘=Ô­tì©þ‹Âkd'­ŒØ�ëUŸ¹èSJR¼á%ävYÚeû½€äž�7irûù~Óo’Ãg*]Ü.ößÞHàÚRô eh§õ¿ŒAÑT Åùg.‹«¹´¼ÜÍ«ëî¢ÿ„ûOÓß“*½…$Ío¸¯¦–oõ¢k]àrê² •ÕüWógnäÕÚq+›¹n Ç‹8°î.ñû¿þKár~™Ä•Èù[—ÿõ¯¡þÿþm”Å«Tf�ô ]_#Ã2ÛhaO`ø°¯ªêÚ0ÐQÂm’׳�mÞë¸C mG΋ðØ�SéCw€�¯¥­hùuÿïÑÑ뫺Ÿ¾\+¶îêÉvâ¥�“²¾V<êß×q¼îÝ'sgQ¶“W —±‹{�v™é7FÚ×oõLÃIE \¸;Kr¯¯P}è}5;ýŒ‚_z¦Å{¶¿ ÛMÝ™Æ\Ë·#ôÚŽãG6Ês?é­;_i)þÔ€G<³«“×>?=K<Ž8NTÉæä»s<ëMÅ‹]nɶ„ÚWŸðëvw“–OþòõÓ‡©°ìcçl±ã¨šX9�T0ìA¿ó×üÌ–6·ép³~¾J^uù]ÊŠÔá—΋¦�t¶C‰Á{¶9¢u¡€‹€S&>¯;‹GÒq}+î£ÚQÂSŽL.w²Wñ2ç&…¨�hñàe´á…QÉ“¸»q]údýÌå'Ø7�~4°]–Ó7òY¥Œ·«,{»ñØá¨úWMÚš¬B¢s‡Ë›ðŒ`d|X—<ÞÅÆ}îÓ¡3;ž: .ä¦K†3íHÞѾK¶sô»÷ù{)\8óØ'â•�_úi_�•zÌn>м@CñÈo6†¥£¡µááÒNóŽFFvc³Ë“¬ÿ6ç³1ÎgèŠþ×É;îì.éz˜[v/|t:š¯¯ºRÆJ¯…ÝétÆÀ$*|ÀÍÈ·zbdò\Ü;GKyôåÓê.?Ærñ³qǺ� ÖÜ/;]:~[;ó3A‡¨•;Îè›F¬Üøe;ìª>ÓxéSîöÂü�(mãÎf çÛcØuë3Mªw¾¡rþÜäëª�ßœI× ìv)iŒ•vßêôš¹.úfÓqÄ3üñãá"+…Þ¾Œu S!< ¸¸\Àüçv¸uIÀÿcB²á f‡ã#�—¹9^~‹Ö›_ Ñi;Bwo լߦeƒx«ÿU=êÈ*Ä¿u×–î uÿ4däÅú nÞáÎñ,ùiƒ§ª »¢ç­ã ßœ8Žˆ÷ë”Ç"Ý›¹°3Y�å (ðÃ7h®ê)ÿH¤vrD„_© ¿õ•þO–ßå8"Ó�†X!¸&£±úÒî|Þ²î†K®¬ä¹vlq�¡<'4@Ì+¼\Ý˦Á¶~¡äâ_÷zv>KLØZÏÏmLãËÍïÑ�¶×[�_`º5_9žwéqÎãùå$éè c–AôžsY†•(´]|áëÃð»£IŠß·J9?èÉR¯µÃ(Ã"­Þ ŒÉMpö(¡L²˜ Z££š=ôÏ,þå1¸¯/ÎÁ%8hÅI—syýǬr¶0Ý€}PðO¥U3<ÛRãÆ*÷ï6ì‘û¿_¦5Daê—þi…,“¹7û�hç?RÝ2Ƥ–…©1}ûFÿþO;Pwð‰~5Ödô­_�ûu肈.$è ½tGÛgÇÓ&�8ëo~ˆaž}gÛÙÍàygPå'myW–ñ­:,vº>m{u\wèéY¡Œ”Øž¼(_ ×é9Ð�ˆóªfgøÙpú;8‚£ _î"”rÍýì(üðê÷1ùA°o,ñiôí��ø“pglmä•?"ŠÿœOòã‚®|Î; Ê‹�‹œžõq܉¸$cÛ²AòDÁÌq‰x=oCDó×Æë©¨íP�tVÙKœœIû:&¨„±¹êåd�cîÆ /òÞÃP˜¼$œ·éIý ®‘ÿ–T.�¾Û„gVÝÑp]iFgm˜ò„¹9ÉùähþnrÐåwicW'N0ÚFѾ„6¢æ¶ŽV/lõ–~ò„Y�7SòÒzogIâøåºWýzœ¼Þ!NÚÑLœÎpÄþTé‰ ÝÕ«¶ëÚ"_á+ÄûœüÌPر\Ò§¸ÏÍ‹Oúֵ鮻:9™HU2˜iÈö€š>T÷Ÿ”íÎOt±Ô‹ ÝØ®«sÇ#ïªÆÃy¬uó×`:füc;óÏÇKFÒÔÇqª`fªL¸s»£ñ‚—w'ú8é×I?×�â¹פ3³ÿ’Æßt4¹Ý·­�wrSój„p?´mØ&_}§¹}¥ú€ñ'ظ%ób~âÿ¥¿•¾ÝkÌyê=ôàõ1tqS@™åPß|Rû:ãÜ)2.DEе®…2¶9%ûf_ŵŵ‡ã…bÉHG¥‡|á™ñ?ëÆ”�œbÜ*—>^}4¹†7BpÞâ}Óü§÷–„ã·ÕöîùyÙÌ¡ë*ðÜLG.10TZ?Yâf%lÜßý¶p‡êÇûˆtçn's%Js-núpÃ5\)ýöû»¸#$ü+¨(G³OùJD·ö¾IþÆZ>£8‹´Ÿý\#ZL‰î ¾çÎGÎ FÛu¯ø}<³3ԌôY½À¤Éþ{fñ±›Ã¦Xpuz¼ÍK¿êöÛ¾Öƒ¹üŠïâíÉËò¸Ø¸ˆBFä'üöÕ¶·—�qÇ3L"Ü‹‰ˆÄLEx¢šèW>\÷Çàƒüþ·ÒÿR ù-üÉm²Ú¾Ãú1Fzùð-€û³iÂûe:ð«vøª«åç‰Þû×$ÿ�.Ä•ñæëE¦Þ¿À‘^vÚèú*åñÈôì '?ëinäv‡­Ž`âùÔ³�ø5½¤ó5 L-å•S[&«<éËãzÛ6á¸ì•þ®Ûîh+q}rCì°ÚÑý$ï²3ÖϦ®~5r~¶ ×ø‹�EÏMn)Ñ’®L÷ýêÆOˆnfê@Ï_U?ß»,ò\RÛÄï|@û"Ïa/©r47é‚Í:Ù½Êð+Øeñ=C�С¼Jù 79W6œ�ô?ổ¿Œ#ûÁ™5ªKÅÞ9¿³[9ÎÖv¹Eý'Ò8[oÞ ç×Õôü¨ñ"×¼¶¤úg;KØvØdvøŽ?0œ†¯Ë™‚'ÆOBs‡]ÛþÆîŒyÈá¿‘lÙèoŠÝIìÃäó;»:)ê$Ÿ;³ñÄ XC\Æç"çâÕù7Mþ™¡/ßÈ‘ƒ/%´,°]5U%ý$qÆ€ƒÈ_6y{ŸÃ'¶]ÈOgU œ�}Í}l7âRÖxï<uþZ2ú<2cÂCÑÚñý2‰ûYà‘«²ÊsÖO³�>��æÍÓ~£êÀO/ÃÎwI•lçé¸WÝÓZQÝ&glWå°4�ŠÌòlMp¾ø¹¼ÇºÃÁ'¢%\\Î}1pøÃ¥ºØÑÿ�ŒGÕ™ù¬ÌÄW)Û½Ð_°ñÛ¬áÈ2»søüOH[¿#,ésn—ÌÁùhÚªç{Ø™_6-ó³ cKy§nàׇ'î¼Æ�­¶¨¡/ycº2ÕïpnSL ¸–ñÄÍ Ž[p¸žr½ù¥Ÿ"ømz©í_oCÀ‡dzqño•v«;xlÙŠ)>ÉÀ×|Ðs0hÞ‡¾‹^Ì[w­ñCfUx¥@­Á‹÷T”ßÛ-8àÈÔúÙs3c²�ã1Ÿ¢-FO¤7¬OŽ”·å]§ª©D™7\ƒXìê3>E(7í(òŽ ¹KaÑ+´5Y¶2�]G*ãð2­Ë¼J[Ë  í·â¤km¸Ð•e±¤±‚ƒù"®ó‘OµþÜ�JÕÈúIhÕç5õí‡Xfêä9ãái§J´™&ùCºfÿª^¶¿ÿDÊüÀ”'‹É4|n “Qlj‘Õµ«áð‰vý -Io–ñFX톬å�Ë£>!Žj2¾ÃÛ•Utu¸3¬ª 7¬Ò ¦gø+9édGvz“dÅÚídiÍyþ ÆBF£‡.³TÛ©Žæ¼ w¥çwã`í¾Á…é)Ð�>«¥ Û`^†�6£’émÚèðߦÿôàýï|E‡;¿øê¿Çe^$@—ú²VêÎl®’¤ØëÊK÷\èŽ!1¦²«…<÷W›¥?Ó‡:nô­�4"§¸ÛGš%¶n(-®ÿüo1úz–„{U$1 ‘Zê“~‰‰¼@Ç_;ý§#ÈÛ‚ÙÎNCð9‰Ç-”(#¥Üú¹RYâmÊðÜ¿&\mnåOâï+R5 s‰|ÎßÚ¶³sùç:®Y¤nÄ'�ù:Ù®Ùdvhºg}r}kèù€@ìËføò›^ó7ŽÇN§0ñ‚îê=MB1Î×Ü·wµ@Y Zæõ–ï+YXNìGõ¦it�ƒfΆ†ŽiÕ ‡Òz�^›veß�Pâß'~ÿçŽ!³u‰_ÿ™ðÌDãù|4ëÚ£ËáñdiùJ‰Áÿ÷1úú+-u¾Ôÿ>)÷~È—Òñ¦¼{ëòcoí‡î°[žl‰#m/óÉÞ³ÿ­tÙŽ·— ¤�%8ÏÌ<x§Rþ�ÿ4¼~‡zŸWã÷ïQþ¯_³2Ïd‘·öÔΞ³þüÒWzæ!}v~*¾QC½æ)Á;ô+¥ïÆ��<§þZºã®·U¼ƒ,. Ò–·ƒ^å‡?˜Îòj²g¾„@4É-4ö3B´|8Œ—Ư« |S¿¢9àTîÁËÜšq‰gÓ¸œú,Uw’áð«h� ôƒjxR¿J]¦«NÚqWÖ! “Ìo ¯Sx¼/ÎxÌ£\ùùëƒcG–íÈ;»~&:–öºóƒÒYªù7ßÀ7oÝéÊ� lŸÝ/Ѐ^.ijš·’Òtyâ'H‹$úáNvì·Ý¿ßñÞÁI°sË WOÌ+<;ùÅE+·«yç¬(l‡·~]^±ý¥ÈÄ{*_Y&¾�®ÞéOî{ŃoR×&�[^èÀ¾Yn.ò³NGÿ´œEzG�—\ã«¡4¸­f…E;YHòbýêxŠu�°7až�æõ ß zTàÿ6½Þ‘xæãA/ÖœRÛkÕ’ß1~Ð玖Z]¦µíRf;—Þ‘OOX³Ó“K�Tÿ” ? ܼS×¶žìÑE‹YgˆÅ_9h÷$ó|·áŸùŒ›žÇήncó‹r‚,éÂÉeÛvðžÏEO²¶Ãõ` .dIxóÕA ý5~ûÙ‘ç´M¹=àW�Cå÷T#”÷çÉÝÝ|Á3šÂ4ö®CÑfLÎS?zcz„;ÌZÖñª|Ç®>Er§†7ó¾yV2Ó.!*ËAMþËõоOŸþÙ‹žD a™Ps&a,=�¥d9Õ IIÃF§U‰$îîCÇ‹ås÷P+‘ùÝ™jOPAs‘Ä^7^Ýveߪ2¢DTúá¿%.`™vÜžÉ"©Ÿ!F€‰ Ða°*Þ#õLëæ>oºQж–;dDŠš‰VÌ£Zav¼ O ¹–™…Ê{V„Ö¬êg‰;(Ûä§3TÄó–3&ŠÄ›ü<Õ¤ÙÏ«Ñ{Ö«ÑâúϦ"pY§«wÓçÛäãÉ5‡¿òÃËgeú[é+'¶\ób Ô-hÙÁÿ*! RààI¯Ý—¿=M’¬@“Ä„ƒzk×Nž:ÜÁIOW·ð�dž›¾W¿wõZ›rnB‡râ_U•gò\õó‰ŽwpnÛIßé­&úY×KøS˜&üY&óäm::Þååß‹þó|,àæ²|¿kçtyØÖxÃ? m'÷UÙSý7ºåÇÿWôÿS%1˜¡mß ý¦_túd1JºæßUê&Yt£~]üŸË=þDzT¿Œõï>$–pMº§>#~�%è¤7/þÑò[BžÎ9F�vo~›(».0�}»H-õplÿªz ð �þKšÓÌ" ~‹ÆÕp/æêD¤s�{ðJEý®|Òè˜%µ—ç²j™}¬“w�Öùÿ7i¿È1çÿAÂù!«Îª¢,ÖnM–¼Gý]ÔXÊò.•ãÀQ¬îº(¾yãñYÒ‘*x¶Ô¼q�îþ#åõôÏ ±·¯(ç)H�ã™TïÿÑ„ó¸‡(ï;½L®ui‹>õý_ÿ%á¬9-œ¼­Ñ#ï§³}Rüó¿FËã7!hƒÆú¤ãzR'Ó™ù‘.øµµO:âG?äP±W'>ŸL-ÞßÙóæöPtØÚN¿²$úD׿ÆÊñ‰çØi(׎EÌÀ#¦¸ðüHx>ÓÄ–ô�ušñÃîËER§Ñê¥'ó£Ù£?[¢àQhb}¾ÙøûY)0qJÂ�€ª?»v`ù¸ð< ñõrÝÎÇy†–Ù± '”*WÞÌ`ºcNñyÿòÙM5­F¤ãßÀäèy{)œísõœø‘ÓA¯òüüîI�Ës•×E–¼§Zö£9óÒÚ�ɸBŸw;$JZ¾ îE‡ê‚{qÛ™H&oY.‹`rÉËÞóv© bs²`/ipÓ4¬Ÿ„_+ÝÑóôè*Çs\Ǧ�Ð<³Å30ñzkÊYñ9´éÆW�ìfA(¯Ÿ³`/¹åêV<Ë“º€[øÛØá;yÙáD¹sÞ h¥/¡Ïž¹é«D½©h<ÁŸ^rc|Ñ}Äû,£ËhY;ރå°xwÙ›f<(ÕCxF¿•{;èØV€þÐâë“?áæÍNêÊ�|mG%¶'ÚÛ¾jÌ>×#ñ¥‚‹÷!þa°gw„ËDMU?ÓY»†³ìÕö>ĺƒÓY·ÎlÛ~TÙå>÷@ØÃ7ë_òÃîŸìÃi|¯;7©Œó<¾+ìÅEÆÜ©WÆ J Î-ÆïCãDZcð†¤i€â¶kûCã¨sÿÉ›ÊnÇE¦Q6ŽÎñŒ §n-¤Èó Ó£BfÉÌK²q^¡éׂ„âÙ‘I†1òÂ9ë4w(æÅ|™1 U9—ò,\À{wæqg_„}Mwl�Ÿgv[Ä{}cX‚ ÂÅŒ«®£�~œ†®{y+D ‡—¯k©žÕwIÇ�õ·ÇIµñ°³êíßÜQwc×’¨ºCóÔXÅI´ô}~úYòxÁ TÚ�>ÿ?+nî¯úš_UžuGƒe舞ß�û×Ç%ít¶÷Ó~k¼„8v+š3³æ®ÕÔ|çhÏ×ÎiRݳü¹¯Ù0 ½sÛÈÅÓ÷ðǧúã_ÿz…/6:L*Øi¾Ã>¦SÇÝûoóq?‹‘A˜'ŒSߌ|Ù·t�Ëά|ŸºÃY·trw§²ñønXŠñÅûjg`õ;÷ÉËAÖ˜&–ñ¼ë¸1u»³®•I2Ç&½å“o bn .´ýÜ�üŒND%®%ÿaª"…*ÿa`RÖÏg;(£Ôí�7f;ø\¸ëNX3îB¶ šÐÙe­œ±²õ%þa„{Ko*w›-T.Ràߎ/�üÙoÛ�’ûDµbüé¸ä~ýdÌQv³|ÝÂÒ�¾Ã›y†ãÀÉÐW°*Ý`úþ%€ø:{�gc•þÛ}g·­°óëäú?Ñÿ.^ªÚp§s´óLSåŸ; ^c‹›Äþø<ÇÝ?©rœÚçÃEj“íž—¥O™à}ßî¤;ûÿ…^yÈ8€å #�Ì=%·;-fRqá¯yAd· ƒéž®†XâM|Ÿqårû]îÄ>¨ÑÅùØ›« ‚ÿ,ŽÄè,@*/‹nŠ ™eÄìÌÛÒ�éÿUlË M¼™ÄzÇ� Õc…¡‹âv ë†)yî·2Lÿ$—åTŒ[¦‹¦Ì[�4O”‹i”<�ÞX&é/Cj=H(cQ†²iÒéÉú' ÌoÓÒõ8¦ÚPúÇõÃý"ÕIö÷Èsìî{ùšã·i‰Eªßß8Wò6CUæøJ‚X»^C/wÿâh¦� eLÆBY2•B¥ßÿÚ?<õ—K=.Ë�¥[ÄŠ[|}6v߬qd‡” *qõ3Ûô¯-ACáæõ++VèÏ„Àù8±Lżƒƒcž_q�;á®öN—8õÉâK¥ ¤éŒ�ëÝñqö‡}…Ø^ÞQ�2Û)w�©‚ð¢Rͧ`Ñ ´ØŠkf‹Ï×Y?ÙÇ8óÐv¤q†SLFÆNµô:'–a[àQ�]gB~Øi;íŒÂ߯¬i�åG[õÆ�áÿÉ7 ¹“H{Ôõò>D``u,pc3(÷°ÃC_ä+ly�vð„ºÈssè­Ì_ç<üÖ@ð ˜ß¾\0ÎÕK Ñh“�UDG-Ï&óö•ÞãMw)ô©ú*e5yw=¡»\±ÉdƒTwÖúÙŸ‹]eZ%0/ÓÓvNfÈ £åëŸÔ®|Æó­gò½t^>2µ Gº•´e ç”0‘~å©=�Qîû·ŽðïHˆS¿¢·ýÚí#˜&× Ožh;;£-įâ…|¯Ëky•|¡ â·þ—Ç.Ȳþ>Šþ]õ»�{…ù»Æ÷8ÆÇ_4õ¡ÐQíÓá Gèozšõÿª–ìIG7æwz¾¨�á¢ïìŠÕÍõïvÞ]ãýéó+Â1»›íдî»áCe#°l—ïæÞ±ë%²'q%Ùqr UܾäQZƑ־Øo§[–¸ç±ü·ueü]ãvh7Åýͨ²õº3Ö ˜òç2RŽÂšOù{¿‡=x%½G·æ«lÈÁ+‰mèL@,Ï�ÒjtV@¢Ç€øñ¹ �‹v0ÄHgà‰h}ú8þDjÎŒ�‚{ÚdÕ:Þ%Ù ¿Å1Ǻkƒ$@… Á3Yg D)hÓ&Ô ãŠ9؆ûÝnù¯Jh'¤gT@'ÿ'½è̬yÕ— §@ì>ÀÉpð ô¨É:aët*§²^î‡É3NSK)~[¿˜ ½> Â*Èáê¿ùo8�¢2ÌR8çÃÖ¿à}(Ád ÞËp˜‡våŸH"«@ìxP9¸’>Ä!|^+î¹)û q=Ý�lé„A jq剹‘+z>»zßÈ¿~4赬eX'àMø»>ïhÍö¤ãSlÔÃÌtWmîte·ªo¯:{`zQáŸ2ë&Ôô0ñ|Õ­…÷P†¸W¦u.Ú�½ÿQ�³ð¡k�QVúÿ”ℤ‹åd¼€ƒ8NI–ú œÅN~ ÿò0ÏwºVÑ×ð+/âU׎†Îÿ—1`Êó‘oÞÝn>b(nHèa¯ñ‚k÷rn}™±g Q”†˜Ey ðÛícƒ2õ%Þ¢ýŒ‚ž[^êîvÿå<ñ©j|K*Pƒ±V«ÿ«�—Ro%]óøÚ—'ι±ò!+œµNâÑ�þ³6óáÆnIƒ¢+Û& s/ì¥Ü�ºÇÇP99 î·XüÓzÉ·‰oòeÁ¯4Qꯠk`ŠÌ’YLû6EDá/Õ_ç?’L‡(\=�ûö¬5 \Du}âX?‡ß–‡®¸Tß$[DôÜ|U)uòÇã€r’²Yñd2ŸŠ|M¡úLZYb"Õ| åX@óÿÿÿÃýÚ•^°å©2ÆðY— ñqˆ”ø$‰»ØW–Žy[�I;¶xžÝfp—ý¦ÔÆ{ÿú¥ußCqÏx¢½ï_•axíû&õY"Ë“E{’ùï÷Àûë¥ôëÎ>]É•ã˜ÆhÇK½úõo™<¡È‡+ÙY‰~v¢>‚x5ï g¼©Ÿbôÿ·}}ø½ÐÚ¿ô»GïcíÐu±3Iϧð³7òáZ*‡./ÅO–…– 6a|¨P(RZ³„géªàñâ�'#òNg26Ÿñ)i!Z­Ä1Çš¸xoOFªå6õa·¼“pZyêv‘Ò“’ëI?�Ñv$�qe;öÞñ«›ÚɈ³Â]&ßÔíLËãn= ¶èbŒ2àëàו‘Nÿjø‰Œx̳mÊ %O2C(ޛdž³Y·Í~šÐó#mþ5-šå8©ã¤qfOÝmÄ1]äUô÷iôzÅÎO«o :7•7Ÿ…gi9ÛÆá’w»ßÈG±ˆ‘}f«öµV8cÉØ¦-Ü]}ý5Èœ‹_pACõ‘ÿñJùÚÆwVíž–�»Þÿ¢mÕß`pܤ�µÜCµÈF‡m x©Ï�Œ¯á}wb…“è¹Í>õ ôÑ&ÿè×ìá 7x[RʽŸÝöT,ÝèÏŸ½æ×Œ8´‹ú“Ï®âûé*©Ñ?†úÑØ«u—§~5Vãl?3èÌ»‹ì çÃñ<ëqí¤o4}ðÅ™üUÈ �æÇ÷ ¬ž¶;4n$ñ¸ØÊG¿¨•É.ÆîvñaLto�íg=iœ"°hJ¦bR|…ÛX¡ú¬þÏp–™ú‰ëz 0öÞ•�F4¹Ž©Œ¥^ÑÔQ¦¹•,•/ðmÞ—â0–ÐÎUÛúO ;^Óä�æÑ'Õx úuÅË SÒ¸,Æ'oã8ånųΗñ!Ng…§pBô<ôÓõ¦Ö¨grgý9ôN®eeѽY¶Ðè°³Bißàs†ÞeŽ1ÓÙV¡µÓî^õÕ÷Hå# ÇÅ΀öŽh¾ññ‹ïlûcn“¨w…‘ýÆÝÊ`SÇ»qhúOp‹üÍþ¢†™·Hbóº»7k5ßU§¤/Åé˜~úÀÌÐAs·ÙçrèNÖ·½A˜è}é:ÀûuF^þVùû5Ú›­é¦-msy²gyè^FŸî¬<“¿|¿‡]~½’­SÙ:g†}éûiˆH†'7ô%‚Cç¿ß¶á-õ‡h ÿybéFpÒ<åoÄ,žäzR D¥{ýYjë8¦ ×Jhgôñ—ýÃ%²*˜+:‡,6ªPf�R³5Ý+öd�p„ö¼¬’/Q¯3Œ74�,} h  ûùyå•9ÖsÜœ�@â+»òÛ!+3Eˆ–'ƒ®$@#ôƒZ&RÄe»Ü^1û‰„`zŽíÊ·ê©|—øAÒq7:Lî]R@ìp¡Þªÿé^3óŽˆ@›À¹+›”åžëJ“ˆÍ™¼>p˜1I_?XR̯h‘UH— (§$hÄù'©[ ¨xsË«oxùƒ4�*EM/ðJe½¨çÙ“Åû�ëWc‡móoœðaŸ°Çá Ì]zRg‡³’í܇;Y©t±»_tÈè =}V§ãO%ë.ÄóTÇ*Ø�nݵ·û�þƒÿ:�cUÙÒ&îMîõŸw3%ƒQ$Îcg¿qvùÎí(”v!ÆN]Z|tñ;ßw;¿)ÚFR{÷³èÿs9GØ?õÿô ÿ?àbĽâÂ…³ŠÇÝ}•Ÿù¿Œ}âAw5b;þt‹.ûÍõ¿‚M§˜nM�ÕàõlŒªì¡¬U°¿ Ääô³@‚)›òœ_ý^ñrÈaêwþ­ó3¦ õÉîÍìgò?ÚL“Yoñùüß(ë­UÅë™öHå"ê¿Ùi;+ú‡©±ÈAR¾I’®e¬T¸ãYpÕúßWô´ú¹×Û»ð_ 4ç”Y¡kø$;ƒ)ürç—Úô•œß¤Ný·håvzÄQm|˜‚=Dõá[c�+�|b’nRhÆ«-ª~ï`Ä�©}ê~þÝZ”;÷ßÖaïSpŽŠFÃ]ž(t§~ÕÑ;üŽŸ·¹Vn?·ÿÖ{Žæv…mg‚�­¢+Àþ¤àPãlGïý²'rgI§›hI9ÌëÂRÑÞ?¯ôÙIƼÎ?Ýþðר©'ç›âN¿ùÄðjô~Ï@™0¸ˆ_Ë»žL}²Ï_J” Ó$ÆÚ½tA ^R¼Öºþu9«ö/…÷VÚNÛ‰VõâÙ9L½-M‹jý¡Æ�ÞEÏ{¸&{Ò™žäI7 ùφËcƒöäÊ·œ¿õ³?lOæŽ�Q÷5a40%<Ôà¶àÔ~Oç˜úAñ%Æ£¬óPQ8¢Nç–EG+°ñ~­Á3'ψr@â…–¢­÷éÐGB*GHïà;ˆ¶Áó>¦g™‹%³Œ£î�í{ÑŸ%QJÝ‚Ç.ì0Áàuª>Ïnu(8NïŸï4Þ|e’€ë»=YæôUcIòñ~6ö¡�wtlÛëõ¨x“*Í»þ`IÈ�.2ô<ëW#?U¿?yùëʹ�ãN;),¿ ‚jåË?nÞðËëƒ%{¨÷!ùE$0á¹À'¸yßc92})ä$ðñ�‚iU]½¶ÉÊžÐu]LßSÛ<>;wÕQ{™è~ñpº:~õ«¾Cn=ëx·Ã©$Ml·ý”ãìOä€3t“?%Ú°TíTþ+áLªZ„™ ÊÙ¦€ÞÈãD¿{âÿs<#c«ÃDy–mžñÉâ^^wê—;0ÝŽ[¾Â9Sì�gÚZßýÂ¥)øë¯W马XÿB¾î\µ7ƒf= Wå`P¬õHwaÙW7nqíbÉŽ®±³Sæ×8‹öK¨¡tÍ;4QSÿmWà´GÓ.}v´](ÎÀZSVøMBóNºc0ìx\§¶x3 ‰Ÿ6.&¯z†ö8{ ô û«3S)a�ëÜcp‘Vã/öv±iî7xAtП8–Dyœ<ù›<Á�$›ÃÁægyœ²@„±È\Ìä9>‡@Ú 0§¿Ø„}$ŸèsÖ…¦G5ïçÿ²Žãðùé;Ž'W ›FsÖ¦/Ä»jkv�u‡6¥�ÿ^5³=»Ƹ‹”¯‹ü{mæs/]Ôú}ž·;õ|‡Ö€p6x“ÜÃøµ§'Â1¦9iM×¼€|çæØéLW|ÕŽ+Óæ ×Ë9øqrúLu¡ói×ëÆ*¼].šX³Ïý/Ýé÷~s væÍžJ÷ðÞÃER9þd¶/ЪÅ2=ü˯^î똦 ñv¦äo Äû”Ç*ÃfÛiQƒí¥ØÙœº¢àŠÂ€H/·ÏyƒS¥NÆ�Á’‚öY�—ú ÿˆÿvåL“«~Û=ÕJÐõµ²äEhÆjm>SšÄ°Ãá!–Ái|îO8Ý�H¯FëTŠ[õ“«†Pàc×rr¤÷•üZDÂo‹ÊÌÁ£ãd4ØÉ>÷}™ôV}—êûjˆ89p—¹•¤%è#Çö¤Óxg;âîþI¢q?JØGN…ˆCèƒeœ ºÚ EÍßFK7)�eÀ»»G>ý“ q?³7OcrÊýªú'«íŽcs.¶o©‡í3ývíð”Ç�êTâ–#ù“mÿó}' Ò´­dNqO;Ám�[ü•`^aÛLîed¸vŽvP¤ôGs§3Õc³óowÙu¶p!“ŽŽT«—}aƒ$ð°ê‹@Yðÿ;Z�7+¿ã˜/ 3æk3=0!­ÒX¸ˆôt‹£îŸ8ïRð=<+þ”‡|Xð²!;û�°7r5i9*Nu±2`;¼fœ8FÒÈîþå:S�m|Ö81÷“SÁ ?|A¨H‚:ÊÍ9êît±ë–’MùÆc_²7b°ÿ*ÔL=KRTçµ|¡Ñ2vQ_�:~²—±OŒcÅëQø•£KË^õuw>Hfp%ìàFü™Õhöy]P¢ev*Dûe +H;ÏÅ~^ü?/Y@æØ@Ö]”»$ Å”f°wïb­!”C]tÿXâúèTM ‘ÙzÈcìÇ7*Çëf¡ XÕ²ùÏhÚq¾J?dÜ#†'*¹¹$מâ:òƒ»åžw*-E›ŽÄ¡0D¼çÖ·©²xO´?çÍv`]2G1e î%®ÒÄ+«3­rùD¶“Áó8ùýŸÿ%e«ôH"ã;Êì(,‰ÏÊV#”RÚÑ�O„F‰­eWOv'žÏY9CÙJ>A¯Ø>¾÷NõL±Xüûd¼Cqã$Bé&†32”׎/ »{Zï‰ÇÐ�³Å f:K>0­Â}•ÙÙmgÜ åul\õL¤'±º¢l_K¶]"M}G¤O&a RN'ëJ£‡£²@E2þXïGÿƒ…"€un݇×uÙYSÀÏm/� }îí«Ù¯ƒÂBPƒg­óIwø™D Çõñ—šÆžðcÀNQæœ>ß¡ts†§YNòegø™Cãl:~ðï#A†­ Ž»=¥l;8’#»·A'4»ÆA ?:“»Iè”ÎóA}J:Ñò¢]™gÜ0=¢k¸A›egêÎÚJÃêÛ¸`{£ £”°ÈB ¯À±ßy��R{”ZA9 áùÎÎÄc.îó5à8Sÿ(ÁÝŒó“1 “nùùøw}³ßÇœ³Û8Àû$k+úõâóƒÛA£¢õËí>:7òq0:N°©£À}bà‹X<` ¢®ÉÆZ¦�*ú×ípêêQ )Öñ®cÿ ÷Æ8W™žiwçÿ³¿ø5~½§ûÝgK[ïM8ÍBÕ˜¸ |%Ÿ�^Ý1–ϸ;Õ㛣àü+¤•¿žÐÛY¯&�¶0vø5ªu'Ÿ•–|ܲEHéó›‹| ïv�v;­QŽÜxôI–ƒG¸®Ê Ï_ˆà8NEx >'üpfðåg ™@�’íÙç€æVçÞëù_á“§äÑ®Tüþ¤(CmDÏ?7ñ™ÂæÁ‹é3Ϥh—Ë9Õ³}³îu–µ-²,³Y`ç� U�‘½ñ+Eµè&pÌ ÜÇ�N+4š«1 X)�—¨;5~�{‰pÚµ„箿�ÉÎ�9ƒ *°ÄÝH�Кì=šv åÑùFs*€#Ö/Ê”<©ÍÕ¤õHuÒ¬ jtx´;ಯhœs@´#Eß4ð¡Ö7ÒæQâœSª_>s’ ¸©Ãv6ŸçÒ³ËlK„Ø×”2ÿx�ZÉõñ™|ò„²O×:Ë¢cD¥ª/;x_ÿ–T î¶>Cx'Ý�‡{ûû¥rp;™Ðïå²ñwê™{Çzã+ÉÅ¿Çz ëh¦Æô_}Í)Îw¬wè|i.çèNMÓ×פõƒïÔ-~×WŠ ÷câègâ*v•ø‹²NyºdÛæAʰ¹Ä?�qvÁNŽ /ø‰¸©¡�D–~¸(ÅIÑ  \¹Ð™D¼ä4Šÿ¦¢ö¯ÒQBž:]óçäûıO<Õ¨ Î3]Uª”ËnrVöc1U A«¡ "/À’¸» Ç8?±öo\¤q 4Ý0i 4JqþŽæcÿ½àUm—ê6ANÊŠÑ‘wjHªãˆÒ—ô¿M™ÆŽfŸ„Ó½`=ŵ¯¼/ÆÅnˆzŠï®žë�ü¬ý?�*üy<ª¿©'…Å”¢neÄ@—‰ "Ît7‘Á|ìcÆ1 Ý&l›qæ¾çˆ®'uÛ ç¦ÌíQÅÛl,ó ào*ïv¡/#˜Ô[ÿòŽ+Éce«ïüÿFÿÛEÝ”×%)bäï®|ÁŸl-ÊÆ\yÑo�qàX9v¢Ý @ˆh?Ø”9¢vêÚÕ³ß<.Ê“]K¿G+�+ÍI@9qyÍô%{^úX*a¯2Ç¢ŠÿkþKQFP¶–ûö›¨3‡¸×ùfk½f(sX�¤<òH‘h;Üm¹Ž¸4ÒÒë¯w#‹rJÉÜÌv´º…’»¢ P$¡S ‘¿G]%NxŸ$ùÇß’nªÞ �]Ôoú4hÌ«LlÕ†bÛÅݶáÐGNWÕžh•*�‚B¼ÐÊ2¤ ,¢ù žmÌd¹kõ¿0÷‹�ôp‚Ë_gVÇ ‘ï@²IIóøw ÇRäÜ![î0½õÌ¿_v¦L èÙ9­ìòË–'ÑfÀ¥‡g]DE¡Q�þì¦çGL %ž"ÐsâŒ|LmðL˜&8Ï8®þÕß´¥ôÐ�†øDÙð:Þì t0¥ye¢É†ý´ L�Œ�Ý_Ý˸[^]°ó36ªÃ;ûì¿õŒÀ×|2›lg§îXƒ'`W8Ã,ò¯áÏKÝ¿”zzÎñ5Å©Œ¢gŠ1«Rûë‘?v ²ã½g;ã��_R?uÏÏx½LRl¬|õ^Þÿ2™>áç¸De =µ½�ã69<ÎD­Ý¦¯Ói{O¶ãò�—&Yó·2Êtê½°ɵ ²Ò™o¹Ž˜ ©¼ÀO44üÄÚíèÕ«?pO}‡ñ�´! z�üC89U¼}’\9eýʯüµ8¤³j—Žÿu?v‘Z68Áã”ý#¦n!l™ô P*·3ž’²GáÃëã üűÂq.ÛMqGƒó;÷‡k~v¶(´#°‡]û»¯!«óô�Ó¡¯Ð/ôÿm`�ÍþâämÝE¥>DÀo‰„3_C;ìg³`R."ÁWS#~ZïqÜØ8Ãsí·,Ê€Û1CœŸ8ï/^�׎o~"Ä$òlw˜ó�{~ ’ßÁ¯äxqîû0/V{\�íWö»�§Gõ1ïj?ù3n»…º9>ל‘÷©ˆí —Þÿ'¸™¿O/gZívÛϲ´=³jÏó+ÈFE++Ÿ<#3Ÿ)u§6_…�O€XÍ'èÚ¤`þöy@‡z¬y6D¼f£-_m?�ºNømKÇiqGAƒß¡}_ïsšT½~¬yÕ0^£¾ˆ´6Ð~Ûüä�W •vº÷dgž7o¶„åßE²7³ükÂ5˜qÆ)ÿ™ª°Ñò2%jbŸOgWûÒ�z·/¨)ö¦ËþyÇÄì ùÜNDèIò¾ø™É€œîaÌïÁ/MÉt[6É](T뇑îD˜š!këo}•Ì$°ˆ&™ˆ6Ä’¤¨[‡}sv5\6�i�’E6<r<Êv˹&ÎlágɆrk¿s˜�¨‰Éòü#×ùcé¡þÚÞ¾ia_ö¯ôêx^T¥±sqŒ—`k²7Y¥1YævlkŸïÐD:s;sžoÊ!hƒÉŸ’&¸ c‹öÁ˜èïåÉ¥ÿHŽ¢�(Iå²)ÏôRƒ’�Vn`áo†¿PÆ\¡™írPx-?9!p$š‚â"P�S€�÷"ë¸a‡<8T¿îz)k ôì+O­°¤~PEEÙèø_Ø|>¯Uð�u(,p5Å¡4èi5!^¹áÍΔ¢¾2YÑÍËÆÂ¯6�Å|ºÑJr$ó@¤ÍÆÜ�Š:ô*ü:íÚä…€Ìß¶¿Êo3Lö>–V¦šÐHãÁÿ‰”£¦j1ç*ñ ¿–1¼IeÝZÿW™Ÿêlá'üÕD²N4ÈÆƒ1Ç…$ÄCMÊ}˶¥‘ ܱ–i ;s ŸÕ‚Fn_ézµs©J¹ž¤<¤An`ßÙܹ•óª{¬ÏÜìRÚL|+ßÐÕE¸8Õâ î^AøÄuâ�ŠG r‡ø+ºw<¬ü⎞ª^Eó“…§°ðñЮäE²]Z4ol�r‰Ÿ Xÿ é�,ÞÉÝ®¿Y׫!¤k*•xµš(uYÊL”ä{tÖ¼¨ÂÛfLO¥ä»$rBÑâ³ïò sbu¬mÆêú.= ;÷ÊÐú6µ+ê1ÜßùÛܶÆÉZTÉÚÀm°N“•§¥®Ù½Ôø­ÜmÃS¡äÙÎï Öû¿þcÐÛ>I�­âP úúÓŒÿ¥õÞqái>YW¸þ„À–(µöëEÕI§¢Z¼¡èÐz×îñü÷¸ÿ å¹½íTôd æ$TE9W�Nà¢Y úG±¿êêWn¯s¦Ý ÁÆçÊ~�¥y_ùnx±ênmsO–˜Ç3£/Ú;!&½hÜÇ] Vø{¿JäóÉ_¤¦>©¯ÐmÛAi+ð¿á !§ó£ìZM*ÒN«š§Tï ‚ÀG^öí_ ߌ„á�VÚv>Œ¯šo;›�´Ÿ3‹=¯À=t|wζ¯”úvõKo_Y\lüãW°²}æ Ͼ ÁV¢`9©¸ÖÖõPeólàþÓ &Ñž‚gÞëeþÚd› ‡ãƒ3y0Z°G{íƒó‚Ÿ‘¢X¯—ÜÌä¦Ùùy×ö.8­¢�œÂ^-ã”á‡Å5Ë§Ž èÃB›Ö·¯„î”°¢òº…¥IÇaNðêÅ•U.†-�gyåƉa€“ÊÙ¢_úÖþjs*®Wìó¡ü=íì6ýÚék~*ws�BįýÌ_7•~wTwëgûìÆ¬Zlªxm–v=�j›Ç=ËmêS±ƒ¯Å�ýFu£iת6د%ßý‡ÁšA÷�kósgÇv�ê–šcÊuŒƒ«¾¨½t¬³‰ÕÎÄx(—«�W¿?w@6´¤3Mw²Q÷£ÏËó�.¡\~ønze²8 ñk¯Õg½ H»ïZv§Óï3ù „ë>³&1õ‰oÆOåc" yL7¹Ìî7;ÌEÿãgnù8þü[“�õvFª(´€—øeu5>·3 Kù¸ÄaŒïÁéÍ#Šã6d†üÍ©äÎ|TÎw¨4c)ðã2wÎŽnUòoî_&=p¶ž@%ȲÙœû‹÷Ø¡'iŒÔÛd?ªúòÙ˜8¿?~ÛQâì©B‡q-ìyÇvM‡îÐ=}GRlçt»¿2eŠ»›ÍâÝ—n>©„õów³é`ÄŸÊQk+ŽêüKþ†Þƒñ¯Òùãs¤7_DùÈÌ[h~™W%¿;è!ëYÍŽ1šÉæh#€YYžI«·Ò7O\¶Ze5*’~¹ÞíìGéáèû`Ñ„\ƒqZé; U×´šWóì¡zêçB`6ßÔ°?�Ñ¡þñ´xF§o’ÍìÕ9„å£?Ÿöö)�cú+^ñe#ßEAÈààüeÒÌð´R¹#Z¿z‚, ¯ý Ú$é=S÷D¤2´•í�¦Mn›ó¸ÁQáÉ0œâÁ  &>$ëÌuŒSÁÆíð³’V øö @ôui–Ô|±äÅ•ƒkœ‰BŸ"¦<ùÍ j1G~ÃÇF½2bÓû-užÊŠÐÊÏü4Í�k’yã›ýÆÀÈÚ¡ô:'-Òð·T†Í;!=èÐI©h‰q5֜ȈF°>è2¼ã×aüeÛñ{Ê@ÞÀ“úüR{ ¯ÈSô6—œëNWýôèP(|å8ðÅðO9®ëøb�ããŠÞñÉ$¹D�ž�/zö•Ò"ÌŒl²>? i9ƒ°h�÷öµÓ™ òM+>†¶W÷’ã3ðþ$½s6ÚGô/4Åyqpt Y:Ôd¼6ñ”¸Gxùªø­e\°Ž$û€ü8"¶Ã¨?[ 'Ä�eªdúý–žU©^9ÑqÌ�¸™žúÉ?IßA�ÿ_# ;Îöz½Bw(ókãD5‡Yåñ¼ÎZ§•¾ÄV6@ˆ›h cüë¨:.Gñ5׫¿¯«Stþ–ØÛð}FØç½{åyÃíÔwHæ4ÃM•¿´3ð|Ÿ�¯W�˜)̱’ª-c¾%ï¾Å×/ˆó/õ®^äþ…ä8â8t‰1ÙúÉMCããëd_Ÿ\å ñѤÇV ÆF>Ö¯�_cVªÒâHÆÅÆãÔy¨-Sä¶×ô@@îÓ„þ‚¬Dt&Æ×w89°>…xÃO±#cS¬á@‚-Ÿæž™<€±Æá)^ãà«# “èÒ–à«HÕ7©ò‚ú†­JêÀ}ÆW·‘E®&:ÉÊG�xŠý?*i�iŽAt€˜®{×¹¸dù¬yX^ä¡§YT»1˜|N<�NЦ<é3˜èÿ‰Tèuè�Yc_`â¾íi‘×ÿª…I¨ß= ~<"…�àûª1-‹@Ü·Û™ín®7ÇAj9ÃòœÇõnuÚÒyçÖ'åï.Iç´oê·¶õæ'lÕ.*ÙØHËßùNõÿn¨Š‚fß’ë2ÚêÇÉú¾›Xgñ-„5תž¼Ž?þ¯ñ¥»qQL[?\á½òÏ^V+ÚñÚñw'£ÕøY½,“ëUr°£¿Ã]ÕÉtüLÿé6ÙâÜù³úx%ú™þó?¤ÿ¹â¢ÿ \XÄ rXÙv�{Lÿ‹:aP¼};àʯ;,øÍ}´HmdK›Z'� ^§|Ûdñ½,Ë:…Ï»‹)Ýçªÿ6>=è¦Ðÿ‡~Ø½Ø ýp éÏë2tQª¦Ïô¯£&ç?NOŒ„U% ñ¹‰»ã-ÂM®‚¦[”ý[cÊkˆ¹Tˆì÷•zåêiΔÁUÝ|j_ÿžTùŠq]BT(Ã…#ëÌÔ¥ +Ï�#þN%\Šr¡»54¶©Z’Ö$xY/À² |ʹDóƒ�§^¡ íúDu'vuw&ý®í.}S'Û,àÇõà!0'8*Š?j‡Ád{Rû{´ïœÿuýõMlYXkE8‡*üy ÛJ³¿£=9Y�A~–Ç0,óɾñ äwþ*ðK¹õžp/~É&)¤÷¶îFDPø8–]ðÇN+zëÊ_듌AËÔz[Ê´|ßaRåe˜ŒŽÞ'ý_í;_z\³£já—?ɳ�g¶TûÚ~¥> -íäéÔ]ZGóU> "Þc)ß¿&œ-%­}ò ¹’ÊÏø¤Ò-ìËÎ"]·l°vvåÍ!@Wu�X¬{Ë;‘XßÚlh ŠNkŸ§Ê{ÿªPæUÿ“¼ºñÁñ¯è°~y�îäS±ØVÒîкüÅÛ)RlcÚ~µüiÊg†fFû�÷Ä—ƒ9ë_¦óùî‘#|ݺ«‚ãQÉSˆÖŒ?R—ç´ôÛÈJp6 viùê»L¿aô-úO º•b>êèà¨Zí ñÆzY{»¬Ï¢r¢_^ðÚ¾wÚcá’�CÒ;†ÙÞvq®çºïìgâ™_»$§ù³fœiìƒ% ö�³�´q+ìB9n©_–L¿Ìūއ†‘ï¹c9Ó’8rY\`3»JŸË—ñ%Ý[·m‡¤ùí·™“ýø´þùaù]ZÛO;d-ïð�êM�S^1nÛíxýW«ÛÄ*ŠëÅr�ÕaNO]áqÿ{Ã7„‹¸v‹sŒþ—©­Ÿû²¥ÃÎÌz+›¸áÞ߈[Ç%ùPÖ�ª×+AŠÏl,ú�ݦ³çYßub¶ÙvÞåCÈÌØ |ýÕ1ð’ÇìùÅ63Ÿ [Db7 ýO0r™Ý�yÍ|ÃÈ©ôp>Ó8¦<0{Om²xXÎxæ§/Òò JˆÏ¡rÇ“@Ú�ê÷ù�^tí½|-l%”°M'êMäQ_œðf7x4!ªŸ¦¿¯a9×y¯`Æ�ñx´@‘sW¼˜² è±9Æåg Ävö|ßY°ÐÆî+=ÚLw;öò 0�SuVû‡;SPÒ®FçyŠ«Û…O¯ç14ã°7ARø G¿óD±<ÈÛ•€Û³ ÝÉ)IéPßñö�°Þ¼®¯ef~ÐÊKÂïf‘h†×êï¯õ�vbêÔ!ûlë¡`s¿M¢gøÉgüΖ®Ñíàû »~„2“G¥ÛÃ^õ·‡/w耻àC`4')Ü;\?Iõ]]B 7d™üÛSL*§¶Ü™uÍ�p[¦•—qÕœ'3�§¸‡ß~]ŸögWZÁ ÆZÖm°�0I·(©yT>U¥•�ïÕs�¸ùk9ìù„Ïv(N£LÊ`[;pý9ßò‚¼�5�Njkâ’sà ~ÊÌ<¿�É1àJ(Ëü”ÓL÷xx×&Î jhóS=´/d£ÿ²îj’4étš›Ò塿ƼëJ}�¦H{ðÿMêüe£:üwxÊÉZ0úËR›Ð'ªSµP±,~¬„|7í2]w‹ª8ÝbJöñ¡Œ:ÿ?ihý¿¬‹•UêðKãoâ˪ÞïÆÄÊ· „4�ys»@•ÚÝ-þ!¼{ýïÛ?¡ñ©þwýA8™7ªÿü…þÓOôŸz;’ÛÌÅÿyA¿#JÃ'Ió b‚¼ªŸ¼”¯e©<:ý‘ÏHa-ÆÆë^½¤ÿó²_³Ÿ‡„ø`¦.2¶ÓÿègƒÌH‚Á8¶.´XðŠÇ˜&î�þ m¸+i¼ik«È±ÂÿÝÆ-ûT´^&²4TéûœP‹"Ø�Ƙ)°�‹ž¯}܆c¥®ª¬M—z³NòC@ãWìélW\Y‰%¥°[\'V4¦:Ò´7]ÙRŽu2@n~K**ĵ¢…ëj[Er¼\YõNRÿI¿HIõ°ý·F!gh6rÀïÿø?5kî¤ S¥¯ *¼Îo}Jýk8ÏÏξ«Ÿç9±�¥_ãì/ùý¢|žÀuo+Ÿ¿ÞÎòÑ¥v;KîsöÙðãì�Å€¥8�/~v›=¶�>/Öw¸ ðìì'Ë×ë¿\þ_ï‘7?;¨í8ÈÍ”�Õ_9¿ÕZþ2';ûG åßÇéÔò_zÖàÛvÀטu¢5 ¶iâ©üK;�liÙ®ÿ­ü}Í�)ŽÃ(x’«²1xl; u©í\8ׯ÷…q‹¤6“¼,#NM�YW‰‹ófÂ5í$´°v´�=’ }¦¹³î¨i ¤‹Ëxcó¨Ø{û:©ô(À“¸@GsÆ^�ÏýÏÂÃþÔ|žNìì©ÊN„àB÷,OŸáY`´é_w† “Ã*ÿƒ®k/ž¾¨¨ýÔ³‹³è¼zl+Úµ¾|¾â|éâ/+–ˆçiBüÎg åÕÄrczÕ¯`-_ûͲYᜟ3D¯;c$Ö,åU°sݪÞÔ«üDvöoÐ.­þG}|Myq$²ÙÙ%ßð±·]ù~ýªg¤´Múäî�„£¬‘Z”åÍ;ín«h }ÐÀüPØ0.ÕC—ì㪠,Ã#3]L>aåÂ�ò�~E¼Ÿßû³ð–~Ka¬—ξMýu8Ìî by”©–¶ìÿ—3<“U?â±ák˜—ýZýwÙ?€ê¬¤ªŸÊ§bGF%«[ÿŸd(×)õÍÎB´3Œ¯ü¿|À‘ü'~ICÃÌŒ¸LNÁ¾níòÓTT»QÓr¶œ­Ë±¹É Äkœl¥‡&[ýOcmý~«\¿^K;'!éÿ$ôk´ê2ý¡žéi_#žñ„}5VåøD8±öNáS u4?‰šÀ¨(±lySG<‡<;�œÇRëf’Aù¼[…'E’iê­gŸÆZ=óü°³q)tÛøp8n—鹟5®Ÿ½¬ý’ø°y{æÅã"¶½$jçä5xÇÆ�¯ŒDdœ ˆ¸(½¡o–%Nn“Ã51÷3…mo­Ã 3/„— ðÙçÃÂf¡¤Ÿã#šœ ͯÐÜUasL-çMnüï(³“ë?vçªi;ŠSÿ ÔWZ¾æ+£ÎØY'KXk;ôØÞ|ÔòSçã/?Sj ?xíœ Ýú‰‚qfz”S7Adz¡En}?¢UÂøŒ29A„=±fÀ²Ÿ$èOlBD·hųKª_ƒR1 ï³�Ä"ZG(Óµ·Œu2ÝèÊž´_ïÍn‘_‘V†qóv²ô> u„?Jq]Ö 3߉ö–ŒRí+”¶ÖP¦§êÏ7×,¬�™¯é¨î³¨FE{¼v4w‰ š?5x?UÞÿñY�È|ëz´×¯Û¿⿇ðœól¿¡ØciTtM‘m ƒÙÕm"_Ô ìïœIüGBï¿ÆÒôµrÎõk•c§õø×œ¸žÅpe”öÕ"9—À±"ï& 㪾µ_¯ž=FðÕC;"í«…à«‡ß㉴CJ�Ϋ§>º8~�>ôo•'rqNÌ‘�Ç{VÿäÙ“•(83¿úúÙˆ7,ˆO²™™ä�{=+QÞïY/)Vöa8¡Ì´äT:΋\Õ#xò®!Õ¬ÿáß/åÝïù$2Ôæõü©@‡>¢s¶½"�<õ¤ÏV/Û­:&? _Ÿ¸]ãûÉ�úŸ3*{šyEö$뜹Cì¼Û9ÀÞs‘Ð!?AŽPžNý�WyH‰NÇ“ø5ôâ|£¹cí}oK‚=]`²tic­õ™Ih‰ à^Ôòå„£rf0’Ä3ž36åÙ‰Zdúˆ*¿¦jµ¤wGf…ı¸©Ÿ}`ÕÿJÿËAæ9µ m�Dò.Áõ,?ïÇ%—‘?ÕQä¿@/m¢iÇ�FêÏÓ™LHÏì&ôž<®ûD£!.ú™õ ñxI~»dáâA{›‹øËþuðÞ:]åV¦ã®nH�½êpŒ&/2_ åˆã’åÖ®Qq¶—“|ß¿RÎË”äž fØÀÆ1¯ýïéþÆÚ`ÝûñUÂc[¿õÿžÂß(qÆ1³3ônôéÖÿg¼­þcw+ýŸöhæ|Þè?»œExkòØ ƒñžÖ õ;?Šòú?iľ,É»/4ßléäaÀ¸ß¾™M�N^ 8ÍE~Ö³ü”ÏÄküUu%ÀnúlýÍøÏ·âÕq�–“_r@5Žm’Û6‹Íר1â't(’´ÚƒƒR5%úA7“^%*ØÇÀ†©Ï«Œ;ÂríXáÐ<Ó8Ÿ0?YÌ0Tµ}‹‹úíhù”úŠ�í̲¯üÚY|+ªì]—Û:¦qüyó9_v»[ùZ6|/u�éÌåù:i ¸Ã�Tgü…ÓÄ ?qÁvÊ¥ù%Yò7eÄY/‡ÞtºDKùx1?ï˜|+ä—ŸI,³òéTþmGKR8��Œþ]ù§D;`í)ÕÇûÏe¾@:.jïÞÐf¨jô¯‡–›hW2@‹Éß[õÿÀúUÚÚ4äŸM µ^XSiµ-å¬Õí:ƒ‡Ñ.÷ñÇj‰–§s>þsšd‘üÔ?Ў̯if~zÉ™·‹Ixô…6øšF euýݸaYWgiSèÒxz/^!Üc�XÙK¤ ^¸ ™FE£5Tƒ5P±˜Hã¤;  ãn¢6»)„ÁʳÜ0“)ö Ç+Á^Å ÿ–žT7øh‚ WîhãddE–:.ãbrkp§ ‹ëõŠ#àù©tÍemB« 'FÓI"p6æhç¤Û°Ê î>Æ2Œ­Ë4Èsæ/ö[Rÿ­¯Sä¦Ì9;èy’µ×3GêúK¼PT?¹ÀÕ¶¥QV[eúg¼¬›MYðÅXÐÃGúŸoʺ´Ó›Ì¦ÂÞV42/þ ê?{Y§ÿVîúO´×ÿfQ ,ëüüv¿–~=ØŒúÇj#×YÊU.»EÂÅÿxžÜl†1«\2/ÿŸu¨Á‡ð\ÞÓu§¢c׿ Ï]êþR¥¶]µøSTŽuRûNνy¡åyëI«>æ+Êð¿n%£[9iäì‘ÿÿBÿùoÐþ‡õÛVtþTÿÍŽ£=G›Œ1ž6^ü¿_íÏ‚Ñ@*øÅÐ)Hž¦ä§¬÷!ˆ\¶©:É:rç˜j…©ÚP�Ÿ :‚ãK°*8Øÿ®šíœÊ¦;wämœ ðKíé¿u~ É<Ž%� N•õë³ö•Í·º¤ƒU)½×3¯¾Ú¦ôºèW`ýÝtT0\$Ðwæý«kǯq.[ßÂVì+E&TO3?_ÿ¼îíl=‰ PÐ<€s¬;éø�z'ìñI¦ûÜ0¶R�ë¸ÎôD’åN&Fáy|¿ôްžü ‘ñÿ¢õà@ÃYcÞjdtç’=�ÐCä|EÚ>;/ÄöUØÆoíÅ\¨Irp�ÕCã«¶‡lXƒ£*ŸMžÙè4zˆì w†K€/�©Ýd»"vɇŸ¹¨&tKå³`é@r`çùúhãxOT,f8®û—|ÉLÌVú4ùi ÑNBçòDƒ•ö+ï=~�³¦'õ60qXx\µkvkðìÌ7kpèŽå×Óvúwê©QNÞÝ#ê™ÛŸÔÊ'Ón¬úér,¡½×ƒD Þ%w«� ¶J#Æ�c4ﳌ:NnX‡Û•š/zj­OÆû©GJ+ÍÀ‹IÆ<ó¬ã3a»Å®(ïθÃjÚ/­ _5ÉA­;+Âí Þœ-—)6z°~ÛVí ”=X¸ôí8–6%‘S¬î9dT¸lÏœä”쯫…�*¿L¢jP G¹@|ÃÃ@'ç°×*�XÜãˆWrý=J\( ™_ãíÒ-½D Ñ.ϯîj|įV‡³J»:~vå1$š sû„ôã¾ÝÉÆ½ßʜŠ•/H�Ýx¶ôOx}öõ”]ûŠîå¨Ã3aå²Ô?{mâ£`WÌ_žëbžCÑqõ¼Tý¿·B�KÞú*Ê_«�½õ—| ”–:U}¢Â R嵿Î>!C‚™âCùh’õÔ9•̳ìÎ͘pˆîüþœ=f«3¶•awlކ~Çø<JÏš‹ýÕDéѼ:òìs ªÿ..pŽùϯ®ZGÃó�õ šá½êéW;yûU†¯ß'ÚBàÖÛ�×¼ÙÞf^oæ\t*O Ž}Õø_zþïsª�STìÿaï_×,Çy5A Њüzìû¿FvO·ýwKp-_€¥ÈªÝãÇVE.‰"AĉDκBó0lvéYt‰@¿|�Ø[ý–Ú¿ïúÕ=£3™í¹(að³oÛ bìA‡xû]|ñ˜Û—ZBH#v+ZÿÔB�Ͼÿ”Ž"Â.Ôm:˜O ÎÅ}ü�¶QâÂFÝ]—ºGw{ÓAû%<À?¹Ck×dŽ;Sü•Zu¶ôaŽe¤*‡jüfú Ê#¹¢�"<úË¡û²b6q®í}Ì£ú‡ïWí{'¾$ªm㥶Àò¿œÜêð,%ú;òÙ�ÖY.‘ÄÓÙg­»pƒFÌIAiëÕJ| ›�‡ó@rÐì/÷°‚3› UaÑÊ35½%^L¦’^ À©ÊIñÌú2Ë¡2_ÇÅ!ì¹ÓšÖ¾ñÖKz�þæDè¢Ò|;,hÚU�ãXóO\iõ1’•ëh‹t«tw¦kÅ›.oæ°KŒ®4ž mó¬'ŠoÕ^Æ‘4ÃÄZŸµàœlW`Âóßì€QŒí˜‘©X†ê”ù³.ÁaBçåQþÓµËg#ÿ˜¤‚çV8ÛÉÕ¼Ûîå>”•]æŽn¡�¬ ¶ŸÛ\ùFàßÙÖ˲•ÿ¬Â›kl½’§|Í?x–Ûäâzi ø‰ 8²Áw�uÝòc†¶&L‚7)êŵ쓉~Ƈ™ï9’n툮¿ã¸í‡—Ï÷%ÿ÷ímíêÃbÿK{^Ø_Ô¢²üŽæy‘l×O—ÃÔ—Ì3<¼FšTåª>b»�v‹Jya°ªßÁΰ2.¯ ïŒÃ§®/Ý}Åwwc^•ÏðþXþé¿Jþë:¸h÷Xþ™ŸËâÝÿä´……¾ù'÷® pø� vV†á¬Á‚zÙªtDë –ží[/þaóa‚­]®ŽtjVb9û9"ýIa/þ�å]ãB N(åÛÞx"ÿ6�Xú@†'7íP ¤ÝG_¨òÖþ$ôF!^Çð²*†Ò�p óÙ2øl¢ÿ0”‹þ"ö•\‰¡ëÿ�#º¤»&˜ïá: ,Y,€öL2˜@Á9Ìlû7’dŠçÕ3i®Kµ)Å}#â;x¨BÛös=yðŒ‹gÕõSµ\µý´lAl3]¦Š-I.+å à>+PÍVéù‰œzg`SŽßÍ º`LúöºÖ¥Jy%æVeû­§†Ù©¡/�¼ùþp?§_€8T:D‹£yËC�à9�˜;6ÉXç&ÑÑ)© º‡Ÿ¼›SC¿4ÿ?ÿ=`[Ä S|Ù˜—î)�—Ø�‰ÒÓ‘aIÜö•s®‘1^!Ûizç„sÁ:“2òn)Þßßn.=­?¶·ÎŠ{Æ@ˆ¶i´‰�Ï(�’S•ò¡lm &º$)Þvš,žªÊ\º!‘bó]ëhN# �:É"‰Ó¦g¿u ÿ+¾‰�m™³WÐÌeVOÁ¢ê´>¤‘E zñ Þäkt¬gmíß~×…™>‘›ŸöN�”“Céÿ¦;ë†|âÃÝLzçéåÆhQJÆe¢\Ó~=nñ·™!ÝöÉ‹RæuÓ/I¦o†uÏK9(Sàr}æ˜U‹ßÖŒû#|7 Ýu¼·½T_}E~[î÷…vMù©7“M ©r®{;µ8Eˆ¬z"á°¡_L³Ön¡¡‚3&‡ + Oª&ŠÝDþI õ-ÂÓO/å€O×”펇îp𰈹†'iݳ+ößpÁ²öè=)ND—Þˆý8êr¬/]rDIèÏÓÔŽAò‹Düؤ=ÒÕʦH½'ãü~Èå+þªÊ_ž%>g<ÕÖz<ì »m©Û÷'yt”�›ú¯¤ò¸•Õ—¾÷¬ìûj_º,›ÊFù„:VIþ9E"/è±ãSò®v�e~ysåŸï½üèSóüøEk·‘0¤Ë…wŠ@ËÚ?ûa×> ?µ>D¥ž`Ý$*™C>e]_’tê_JeÿM¬ží¡Ÿ�Ð,²}™#QÙ}‘ègqX€ÛYB¢Õ:ÓRÆ#¹Øúv8À0æ�À§;À#OY°Æd_,ùÞeFÇ£–Kv»+ô3íìFö2¬{ì­#Üç\½JF¹·Oý“׺DÆâü‰¾ÂçcøàæQ ªM è[#Šý´^lÿS7-$èêfì>�^º§Þ™öÔ{ŸÆ¿3Y ¶÷)Ï×%}Õd#™Ö‚¥?š.>{/^c«ôÊ�‚ù”gë§Øžzn7xI4‡?¡8¨=ƒ«¾ší5¨¸òm§¶+ø³ikÇLÅóÀ¾çЇÀ¬Ì**ÿ¯ß£æ·ás0mÀ¾@ÁÞ‹ŸG‡Ú¦ùrqÒHfUŸž§®°iGŽ@t¢‹NçûÀdn¹ÉLýÎ4ÝHÍ9% NÀB 2¹Å%ýè1ÀwÇšÆÅ?Ìó7ÅZw³7’âøJ ‚(œ´¿âZ" F–†’’,ÁP?›H»±Å!�oËæÎr$¢Hâ]¸¡dðiN’bá„[eú±Ý@GåBa»M*„æg?†sä“É3?óJƧʼn֔yÝå˜õ^ :ùð6þ’ÔíË �…aHcä× Fϰø'B«¹¬ÚbŸäa{†ÈäíŽ3{¾­¢(z0bÁ3‚ñ^hòOÔ÷ùÇLfG…£d8éYÄi ¡ŒÃ€ ®»D_< YƧŷ’ÿÀ»‡î>L6)Êÿ.U¼!7ås¾©hÛÁâú–Ãz¡Næ;zÆÓ³J]g·0’mŠP”ÿuQ�¨Zìpèêãsl«Jýl÷±ýOü–açÅ!„ïz¬„×�ÙVþÁ— ‚ž9ª¥^üã¥oØ¿Ioº¥ã.EX¼äUm/|Ïk9¼î^ìRÕ§'<�‡wu�–?c�\,ÓkÖû,@Ÿð 5^¬û$ý-ù/áПË?íäŸ\ßüLþñÀ†c;ò@û "£¿èH† ‰@9N¢Óø9ÿªò�Ë^|æq²|‡ÃÉ0ùð ±Is¦SµÙ…BþÉt[0ÿºBwN÷ÛÀ&ýmíI˜k¶“—ˆLÙ^… §¿‘×ËÚŠss��â�㣫û8È|Ö�/swž½.þ#ÍùŠlàb……ĵªk“‰d%ØÖ ‡ÿkå?ßzWt5fÀ7²XyÛSzžŠ_Ð÷úÛü?_vÔ¶ÏÕ`/&Û;ªÀ XÃæpb³ßG°^k]·Û'´W”•Æ®aGEˆòØ©¨Ë †ýóOç¿åU GsÐã´SãÁ_à€V²ÒGñâWUÜ/´O½„V&Âñièã§±ÆÇ«–É´â,7­Júu5siÐ鳜2jnUIÅšçp˜âÇ,}†»ä{ìÁ^Ë]ŸÈû²–ÀëšÏèO“MÝë~U<«>håïJ� Ò:rÉßIo —ÍU¯üJ&>o@*ã¦èú%˜è^ú–DËÝ€•xücGœÿlÇôó\A!˜,Ž¡ /âC{œ>y‡ì­ŸØåÀóã<ߢ6€¦tâ_´u(qO´w N3‚î4?FÝ¥+PuHÕñÀ÷@¹‚‘}ïGSë*76>†Ö[åëå§"çmLm›ÞãÜÔ•Þ_ãþæ®å,ÁP/Uó¶Z±¸•Æ ˜�‚ˆ¿ £ÃiΩ°#,Ê,Î88qä+¡ã�¢Æ_NeýMºÂè¯2rñ}¸JϪ~MçÅÚ"JõV™Ç_¼.ä.<ã¦LUG §‘+"åsŽ…CÛƒþÜâ$.7Ü›`šB‘BG&ž2œŒ‡ò˜šaÍíæ”i¾Ã3×[úXò0™¥  3=K>mtÊfWö«°�ð’âó pF+:vôz–8Ž3ÈÝDIÛçÑúà±ØÁ² 7‡�佤óŠ]+�ó^ʺV?/ú!!ÿw8d=)pí8f™É Æp ¹!DÿÏ-ñÀ¼ ߟ$IœÚ]`fy  hâåÌ3BÕÜ,Ôí žÝ¥­;U„ÖÙ/ˆòÓÀ·ö»ˆ5ÄëT8Um!ì\¦ƒoõò/^/rÞÙóÍ3Ì+;b!šþ‚´m[ý¾Eï3uº}hˆL'Ç1Œ1ý(må¿á½j±©[˜úi²>Ù_Æçf÷¼“·…©îÿoÈ?µð;ù¯ø.ËÖ­æ+H|* xõÞò“ç9ñÁß`ñ(¦Îþ €iž-yÑs\fýìV÷ŒŽ,¾·ÓÈ}šä«-úF³Tæçøóê÷ êhÒ(ºŽw¼æ/”Úy?ºi¿Ê¬=m¦ÕjÛy4Þ)q“·IèòÁÓ ö%ᮎóƒ×•~8�HÕ¼EÊú¬L Y›ùÇÓ"\ˆH#þÉå/ÙzWgI¼CŽn“Ü<«èˆyÃ'¥EuþØäÞ‰ÎË�‘hÌÜ™\AfXTЊiÅ)ÁZžå¼|_™’TvW„‹:•å²nÐCþÍc9÷;¥5žþ{-�~2>pLÓ¾ZúÒ7soÒçöf¡Ø[ÉùMø0M‡x#ìôÓNσoüù¦îuoD,˜äz¤§×úÚ)“/H¡ö7Ê/]‹×¤�3w9Ay£c‹C{ñéÓœ˜3—Fl×÷ {}ÞÖ…7€™:£œ¸E^}Çcv‡×^ÚcÛ;ñ•öŠýœ× ’ñ¡†rútÜ"—ŠG¤Yä™}?ú †ÅYË×Þ J¾Ê¹òÇ^7|ŒFÛÛ�¿ÏFAÜéRŒ¦”Þ*άïv,2k‰àLBe{zdŒ1¸¿a¶¼™ ÐÿÙßÂ@�¤±‘¹‡¡F4¼éscÂioŵej?rè¤Ã·–™>%Ó˜ÆÁ9taBŸD›,NmÃAËøE™R¼l¯MèG9˧ãÑú‡�2KK=Æz�`‘†äJzÀµñœ‘‡Ö± ¯/�è†W†Y |è¢Ëgï›Ð=PÞ”ú8Úõx�—ÒAàSí`Ôw¶oÑzjv­Ë¦œd—D"ögy>s·¶Â"Œ½üÅ—EtZ¹º=´gÄ�VÎXÃSã>éYZá]ô‡öQ/{dƒE¢û^ZVW«!ÿ^õ•ÿe]Èc”{–dÂùÕ ÊÆñ†Éû¸·^ª£yš+¶ïuÑ—(pÚ<3ÛÏ©^ ²üoÏMýà²ìnᯂ‹~LÝ.ð¹Ô‘v%>YxÒ]Äæ!΃¿Tþ{n DSßípêµví�&³«�Ï�,[zŒ7óâÈ ‘1£_ÜâU☶þqÊÊl¯>T-‹Ó�y¥mGã¶RGoz“AÎ�Îio¯|™óˆœc÷æ%L»:½×êÔ[‹œ7ògkë“zƒˆn@(ô#ÐÒjé¡�õìržj?[Û·kú^•™£Š}ðk{ì{ekÆ!¡�Vï4?ñ°Sqsä%êÈn\f‹”ªø/×CX=|)ꈢƒ!àäsa{ŒY{¹©üÊÚÜÚ5ËÃ~hâ?IÖÔ ó‹\€ƒ-£´P¢/‘u=`F\*Ïéé#YoÙžpÖœ�^û¶==F-’àev žƒò17ÿ}#O´ç|ñþ'R@ò¦ßJÁ—ÐVÇL~š8w{D*ÝY#¿ÎW:ÝØèH”G0¨?c�ª\•í¼ÍJux‡-³ö/÷U(¬C9š çs}&_øÐ=Õ�».Ä:6�2´ÑÝ|¬úOÇ{ÿ¬ ªÁJô¨TH¶n¾œR|ÁyÝ[z=ÖaÎê6´/™¬·By‰u`JêLîDË´èH¤GÁ„0|êÕiMw⸄•ûƹ„B‘SL©ºñ°<ºk‡Ñ8A!‡?�\üCü+yü“š‘Î"cbŸ~­©;G˜]‰Ç7üEC£±9ž€OXÓI}Ù¢�ðЏpN‹_©ž ÀËYé¾K''ñ‰²)"4⬕ø Ìî9ò¢] h9Á|3Ä4ËÙ'÷"ÉŸ4ù´©cyÏeø ýX'ÍÆ8Æw¦ÖöÖ±•…;¶µ2¸[{•üc�꺆Ä’UÜé£@׌ÃÀ«Ö«eêÆBŠE ¥e]å÷DTEÉT“Ì¥›ð—ŸcÞ®o¥ž£™YêÝá®E‚.4>©ø¶â„'f% Ó{xOTN°rsb2á!,»¶1Ïåó"Á“¾,<ÁñãnÑâ)¬*¯¬K}[•¬ßÊ1OñþIÙ¯§ýÞÁÌ<ƒãÜÊ?÷Ñ¡w8e™©xönL«çUÛá9�EÌ®½*/_çqø‰üWÏw©“ÿ£“¹“^àvü»“›ùVº,û¤�(ßÚó\D©#˜Ê2l¬ß•µ'AC{ƒóUØêI¢ÙÒAP`Û¡5FL¡ÉäÓùÇ~.þ‘v©f·Îú ­ÞS´°5ÍEdÉ¿“ú¿L U9ó]|¼uBA¢ìˆÓѾÖÀ¼û�x—¸$î+ng*è�^*¬ÌÜ iíràŠ'`~ÐLß.Q4üÎyMvω3³ºÁüN5íU¦µ¶q®+Ìuv y/Ÿðw˲ä‡UŒÀéºR/2§;lù eŠÄð ×qôn¶X¬å|œu�³Ãx=¾Ú™mUôø+ÏôDw:wî+'‹VŒq®'"«¾ º``9†tà7"¡L®O�>““]}Bˆ++:¶Ó‡Y¶ÆÑ"î.½ш˜I\ž‘?†Ç™&ž\¶YÓ —¤¶þ}šïòæXÑ|µf§ÈëXÑ{y5Eá ´ì´ôWÐubï蛽_« yµ@‘!æÂÜJב—¸RUq×U*ÚÙ/ xòêùbŸ@G—´1|Ž}d›é•0Ö´ÒÍ'˜éj7]{óÚð>6ežõGr¼®çŽgì‹�êj§WãBo·€µ[ÛGä€|Ÿ&/(óñº[ôÃ6ý¹On-ÖŠ3¯öé¶N‡Ã¦læOLOxæ).K9kã)Îù9ë‡ß%Ù»¯•Ÿ»ä¸Q-õÙ³¹1ĵ°ÓZVª=öª“UUcÆ>vÑ.�5ùË\BÄ=¶ðÿÎ9Vü`Ìx¾ r3pšÿ¯ôøBƒš.Às' ê-èê0¿™ ~*·†Ù"ýŒŸßî,òÂ�ðŒ©ðH´$Ì�„HŠrôÖ§»†SÂA‡ÿÚc÷Ošt¹ŠKÂn•ƒ¥ UW“= ·³+à{Åê‚lñIç,·°S‘NŸïY¤¥¡=iôIÇi_ú¼m_©×öÅÜ¡¼]hÐj ú¥—¨ücä(Aß-îïMìR1ú©òÕìõ=÷ì³/r”S|:©t?ùVÚ/6×ùÕñ -u4V=lOÌ#~ŠVc¤ôÌvÇ?°x¯ø^¿ÇüÂóIï‹HUú\fVË_ù¢ãxŒ¢tÝ86hj«ìÂN½65rf›¦ÓL „ 0]¼Úu~à@çSÇá°y/C󲈴QÈ«º$Q__0æôßu/æ|‡ƒ1tƒü~žë¡òZ°˜4 5qR™"µ˜!ŒÀÃoÕÙG³Neóc‹¨Õ¿t¾r¦=8�ªáNö/Ò�P¯þ»ºˆxWÐyà$¬ðv¿UÛ\üšP,ø8�ØCgÍ8 LøÜ$F¶Ù‚Ò”@Š›e %‡ŠØ—+�¹¥§©×Å´g\²S(w—¸­,± JµYºÂIÍ"Î<ÄORýx&x×um^œAÓš¼k›3¦ü¶d˜ÎA?žŒNB †;óе¸×9ñ0f“vÒÊhË.t2ô�Ù;¹½¡&ý$…(ÀmÉäXüC˜4uD”ÿéôf¸ÉVÜÒr§'§‹Žƒ�ß-pnpó±�IÊyÖáý"Uä‡1ñ¡Ûtgoò½ü ÎZ@BÙÊ–!Íóع^“9æ~/ ’ž¢´h’SŽfZÇ™–g]b®÷íú`šÛÎþ?+keB_ÿ u4‹^Pî'  ±�În¡&/|ÝåçþTÏwí#VQûôtñ'Ó:Ó¹ƒ�°É·àQôq)VðªýVuºüŽ;^³zyìr•¼ìdâÿ8ùïp×ó;ü¬®Û ‘i'¤Ò¶¯€(êFËãl•(ýÞY5-�U*3?s]ªº— ° Ý€øf˱-\,ÅÙqÙÞxl‹õ¤]´—ìÚ'�ÔŒ/OR/KÒ•äeï'ÞG­Üÿž´²na÷¢ ,m·ã¬˜J[¯HûHsÏk�<ÝÀ<]³ Ïv)Ë ÓCù±g²y8ÝúA¹Ç1³M¦=þþ$íÐîà Š¶¬õ@L&¿Q#R¹S!ú:ØI/ožßi´Eå$±tµÅ€j×|.´ªÚŽ;j@/p2¾©¬×ÑLS 8=v”%ö3È­uˆ¡-Àƒ€G2nsa‡¿R/ÉÚ׬:R>a9çñïÿøïZ~,�úÊ4Q9¡½V ?¿ìT©[L|òRï‘/#ôX¢åߪ°Þ „¼uï¯ã—–³�±=sÆd¬…ò1öhó-ÑÅÿYïûs=I |~*™Õ³¯dØíZWº Þ@ §i”óåX,˜÷Ã0ˆ Yù­¬òkZ+¬wG8^'²p6÷‹•iç>Ô,n¼ñwÜ <ðMtàsØó^5©‰¡—V䨵Ÿ´¡¿ª«ö¦<ŽÜ…ña{÷/«¬ïÖ¾_�¯é¼Œ«¥/}ò¦XOæý@Ià1Ór¼”ÔmLºÛÞ£ò;-qeW¬¾ÉäwÃù”>ó´|oD(FþPü?í¿áô^tÆM>ÅxËÀÿØ;O�ÄÚ¢GæK}^DPb2vòS¸�16Þ`±®Ê.gý5�×”¯<©]&‚~ª´qô[ñ;1GOûI¹Scâ$zö8,2€Æjiƒ8éó´’XKÀ;æiÈ;­’Pϳá5øøTþgñã;ÇÏË"@GD²äÈ{åvÜk ^#Ñ,ÒÀN+¯q¥v˾°È;fr~r‰?e;aw~ZmŠ/úVÉðÚ÷ûˆ;«[¥^;.]{$öP–ä™ÔžÖkm-êð·6v}»ãÝÝó°—Z.ç TÓ öêžËå\è�šmAþHþà� ø²¦Qg;%Üör_õíøÒ#["*g-»{*àÜÔ0+©î8>¯ú]ìË�Ðæ¨ëû®+[¨3ñx]t#Zhâv‰§û&n�Æ=O˜«î X.´ñã;:NG)æâe˜1Ùž£î—•©Öq‰%8´ûg);¤7Ï]™]yMç8Ì:"H+Û@ …í4ð|Únfu»u?ýч‡,í®Â£t'™ã¿Ž�ñÁ©ÃE2¯ì”·N³ìË k+ò™}xæÝÕˆÁ—FÄ�æ e1J‰a,—ŽþIòyÞ¸=ßÓ¾óèˆ7·~_º·á5ϳl˜q«çO¹³¯àS|Þ‘À¶`kƒ‡�Rm§ï«Þý2 6óTD�b¯òlKò1ä¿ßãæÀȽÕ,/jŠ“Ú ®~Q6®{‰�9ÑíTù7\Ž×œÀ”baÉÎÍé>xðCØõ÷Àœ(‘õN&´ík‘ÿ¨ø%Š òT^ü­asâB:·O„¦•w#Nòý×èàŠ‚c{†÷ÈØ93Sé±MÌm�ÂÛZA‡�6ê4]^.Ÿºàqh4뢵þŸè@†…ž ü} ?—sjŠÔ2ÝÕá½¶2¦�Ë—VV«köI`ØÉ H’<´^—O¢,©MK(ÁP®kc¡Ý2A˜ÐÌû Ÿ–òe ãXk"©´«ñ'Êp˜ÐPXëä z*�8ý)O;Šá¹,òÉEý…ÖŠßm¤‹�¨ƒ­~ŽÌëÚÉóF¼ŒŠ±è“€5øSÔ…9¹ÈZ·ƒ—ŸqS¦*‹“zäëOߎM[nG%½D`Nö °/Mª"©òBÃÒ—${»6lÌžDUÝÁ´º†cƽ+[åSZ@Úõóòïg†ÔZ]tW¦sw½Ë«'5—ç…�¼€¶ö«×Eþiç\®«‡uwíÚâG+ÿЗ Îvx3çíèQ�YG³nÑ?�KüZµ…4¾ãÿ;|b½‰Ã?.ÿD?’ÿ©· Ë̶–b…Õþãç©-[@ÚÜc^þEK‘¶…].êÄ|¢ùq+–pš'X„VÍŸQ—4)<ÑçnîMfÓÍ^åßK9)ýaPˆ=‡šŸÔ¹Ìû†Ò¤ªõ™ª¶c.Úà\ [”:QྫྷSNïóB�OÒo%%èè_P�^. ¬Ð¦\FR]K¼! œ¤jRÔ¡´îʇve3T< ²kô¦­¼(r×—'e2 wý_D¡*Pˆ¥dÕ†ƒÕ©Aià ¯xLÊ˃M«ß|MSݱ'òÆ‚OYÌf§”GxŽÓ§®¼·KI3JAZYP[ìå?�|À¹^¿ t’šr×õÈø«Ì׸þ¥wßàtmÚÙ~¾P§{1‘îeóYʽ˜à|Gec8q‘p®yÙÞÈYží1øÕêŠ2u§BmR©$³`ÆNúÞtyïDO©ßqiX|¯G±=ÙhŽ [1h×Ñy[$РÏgo‰12ù¥õjÈ©tý׿¯ü~S|ó8ѶçàoÍÖñ_úš"8–qûÒñüþÎO¢Îi¯¿LO’©‰®òïA$Ý{p¼¸ø‹2¿µîýÁ ž¬^{�üõä_óTes†ÑZë|òátA“Á€:­t‰”«hqÁÀã›TjŒ~ÍC$àtYžÊ0`ê/Žë¤£E]ÄÈÜR¶B3Èp<^}òžÏ7EÁ>kyÔ§SŸD\|!í…üÔ;¯ú”’1ùÜŸ“_±€¤²mß�߯ö br´_ë— Ÿ€W×ÖEÞ?HõY†ØìÑ—àeZãž·t0\ƒíERþPÅj=„Kˆ3 ;Åù Z†ÛÃ4�æ�öÊ�¼¡üa‘séÕðÜk‘ht· REw…TÈIäyÔ–)ñô=«âióÙÛ §‘‡…ºzI6÷ÑèåÞ�çŸ%ݱëXéž #¼ÜV Híœ�‚ì§êê³[hÏSD�ógÏŸ ¯%Ù©óE¤ç_„çЯuì&nOxmFÿÛô«H{z«¼5{à™þ4y¶fîpåÝÅñ˧&b§M¹l§]õSù_Ø7~j|HfénL$Û5½?)È[2aPU“× ?Fäñˆ<¥éäçX/kùa» 9 ñÐz¶ß¶ÈbùaXh™m*tÿñ(��&IýAÿt"§fVeýd ãèˤiA/Ñû^èpì}¢e•Xõö©z|ìÕGW$×E£nÞÄ ^�v¥èŽç7v&±×Z€jÖÑ{`K³@çg/ï¿2�)}m/9ÐÎü[[oõ[ŽDÞ^�³ÛŒ ¾@™Œ7Þ&Ù©Êw$@|Eý?Ey“z)Ü—iuWÊw|U”L >÷/�û­Ÿpøé¶J€C䦵ÏK •!Þ2#ŸÙÿía´—ÛFó´ç#QÝNyý­_V¾¾òÀST[z}êÞfGþÂ31ª©ñ3.NÝ›3•íÌ?mŒ.ÖÍÊÐ"àÏ£ÇÃ`…/².ºè<ŒóÜm£†üª¿w2.m™WÁùqã]çúzÛÞ“£,¿éGiœ!A…?£úằLx(z/[øus*éí:«èô@;Ùø ´ëuµÖR�æ¸;Û›†Q(;ÿšù¶öf8>t)Ý[^—ª·Èwez[fYÝöð�ÉE­©p®%¶ûi41?““¢íMªÞFK%eÓžÃoæOž@½�Nac~²†‹£Š´^3€ˆ–×`Ø_ÆM„¢4œ%ðÀ°�›¤âÓ¶t�&r7®³�)²@§·p§¤cò¦üƒýI�+‰÷Ư¿Ì·8ñ ¿™�ó5¯‘^Æ2vÓGò†åñ—t‚êœv4­Êã¯]W4èêF×ýwxUxæûÜ~×/ƒ%Pën8žžìp ¶ûPõ=Ãèx û¹´÷iò}Ð¤Ž¿ª1Eøÿ•òÏ…ÿϱBÝFðÝCÃ�§ŠÍñ¨:¯ç}¶ D«ÅÜ).î-ôu­ŒÞš–W;…Q€�qÌ¢¾_ÇþçGLÞ&-²±ò&®£97mÔupJ«¥Ê?áäsβþ"¶‘Ë6~0 ^B„ëŒO»YàíèIB6ÊÍ‚«[U»]›õ4f±¹Å¯¢°C•¿Å)7,åmŸ’úi¹…$’|1IÒ½á‚z‘):—?J0~îal•|Ÿ½ôŸ©êq“�uQeŠÍoj8�Oõï(¿ urûY‹ùçŸo‹;SõÎ]~Ê,?Hw8ð÷ÿüŸƒÖï¡È¯ˆ·ŒÉ%-ïñûú »Ã�Œ4Û)§Ÿ7L¢F�Ö½¿¾ÇI oUúr¬f½¨(ôëk´ù­{êžhô›;pœD]LqBFÒð“�>ˆÛé»ZæÉ®ôUJBâP¥ñ„d‘AïÄ)çΟÃB­äWT ‘eW;ÇÑžžs5 ‘‚º×bNÕžl‘uÓ[wÀÆiŸ=€f„[ÿˆ¢ó£ÏÃâEÚ;gnv�[Ž$qÌ>Õ!Âñ’‡#ò%jœÐŸ»7a@‘ŠþM�¦½"<ÏXèžµé|qƒmrxXÆ©¦CL>™v<Ò¯qo{…š\¾^kg.€ô0iÝÍ_¡fÄì÷8ž�µöMÞNÍL²æ°BÀ«¬0É�ÅR/™àü˶Hl€,bÆ4Ô~WL_ /r¡°`«y×ü؜־DœYqˆ„ö¾rŒ¡bBiåæ8Æv$á±ÐÍ&Ïïቬ4ŠŒW�ÝÜ_5m¯ÚS–rhÚ�b'3âo©WLæñzÐoì‡ìã©÷¹âõ ·[øJ{M=l{¸åÈ¢UðqRš)•Ûîž•8*ì`ØZ^¯9žhOlRo§íì¤_bšx¹^~©-Ó½·Òý8zîÕÙT©O™¬™ööç5 8ÖC;ð¹<EÖ�9cÿGÕ~œf}Ýödù¢aê?»|KÞNŧyºÔã6"÷|ïÎ#EŠÂ>€×´Ñ=÷Þ6tƒÌñce�/_ÇÇ"BÍŠpÛnh“æ ˆ¨WØÈø³¢·ÉÇ•sZD{Ôs¨‡¨ð»fó¿õR0"ºÐÞù˃?JÖÅ‘‡.ë�ÊŸÄîÑ‘ó>Hô¿ÎÉ·òËæwé�WÜ59È R˜Õîh6›¬hý1ìígx)F»ŠßP^å$XP¶çÖ5ëÿÓVˆâW[„°¢§@˜–†(f§°ž„•õ©ó¿ÏÞòØÜÂú:ï9ߣ¢Ÿ*íÒL‘@¯é'uÏ~iqX¤O1�ÍV>õOÅø­cùjÎ�´GZÖ!.f ò°¨‰¿ÒK?�zsš/5©Ð0‰Ãëy^Û{`§èºß­�¥®h40µwM®âº—áË|5û‚‡–3•cE2"7Çå¡*Lb«—èåì­2>OI×/âdø£¾w£ÚÛrݾO¹·FÞ½ü”gQ¼£|!RÃM‰|hêë-±Ž{vñmvm/§`õ×òŸ%?5ø‡‘|^ß¾hcãsË¿©gå“^=–‹0ÌPyÉŸv(r,.D‰J¨½­• ;/¾@ûŒxåz"A2ó›ZX‘í-Ÿi„ÈÍ’ØŒ)IÙ?�P¡t)øõ¡ÑØä7á¶fô’jCûpà'Æß$HO’€r”¢.§²Õµ÷#ñ…�78Ä�øgãf“=@bæ楼ÀJˆ‹“ä€(ðbÝ0ýר4¯ðr»(?ÙaùÓ¶:¦æìŽÑ2†?j�@d%ŽC-hý,M0iòÕjÚˆ‹iŒlc3•S�:Ïîy#›;Y”¦|�Cä‹‹"]~ºæÔ¶�²*kê¤ð³-ƒôÌ´E:eºIú¥¢ϰ^Õv#×Ûp�ÃÛñ%ûœ#ÊîªÔEå…�Ý¢J拉‡N˜üŠ�º2ºø÷³¤# 1¢Ì£¥(¶Q-4bFŸá=æY~7G²ý4bK—åEd_/T¢ÐϺ ר׼(„åJ> Þ¶QÑÔîñËt0°\—ïjŒw0r½ýºqÎr§7ÿåòþMù7Ÿí"Úœ¡ç ^RÐpãz�RB�Œ×)=&‰@yÝe³…fñO²ýŸ/TÜž%_ÕûpÿÀAŸLóœ ³“�gªLñ Íʤ¾È¸3b}¶ùƒFF'÷ÿ¹Šì5ù@(O‹¡�‹mz\�‚áÆéAéþƒËÂÖΚ$¹Í\à:”Å_¡Õ�Y/CqºËãö÷R…ƒý¢je‘×AM0mÍ[¶s™J?‹UÕ+°Kó€lÒ¦‘ŒæW}•nÆ'wDŠç�lBSBqÚ™y&øPWÖº^�÷èýŸéYâïÿý—erîO�óm‰÷×kD쉷‰[7Šo­x˜ÑTgæ­†"Ÿjë\¡°õ�¤¾šœ§eÚiB/}ùÖ½7Ì©Píâ‘Z†vøöœãé}„Ì«{ÈÉØóŽ5Òe®$ßhÿ´[«4<&E¾Ø^:Ç{ÐÌ÷¾;¢´ÑDóê��BÌ AY„ÔtÄ ë‘ïu#¤ß%Iì_óhŒÛ_ékF_\éÛÆ×Nƒ*ê— DÖž]¬§«f_mÒG‰e0CDé"¶éDb�€Ö’Aíqe'œRëH#^“Á.¹t˨4;~¨ M÷·ÉSŠà«86hd…é‘€c�—éA¤Gp iNš¶Ý¼LTîhî]Y:ØþædDTYdœ¿!ùÞ§å�UH14ôg¶vµÓÀˆ¯M?·‡EvX«�–l•áa{ÅYĘEþ¤6|/¼.02é Ñ>Yˆª@kÛÓŽ§³ÕºÓ÷öæö®øÛCZN÷Ð >®ül²;ð›rtõR÷ âcžÂDSËóãcçèÊ’CNì‹@)öˆ?¥g˜ Ò”ÿ´päHË,w={­]-šyDÇ…¬é¬)–Í"Çn.?78yÑ«ZTûébÁ„r[×É$´[¸aœQLð-~>Á¦¸à³ÐGL gºN®)é’÷l¥•îáÊYD}I—î´lƒu²º Z?ûa)Íû”ícN¬´–•FwüàºHáìÒå—]ò@:>ï¨ùu™å ý4 {dãÍ%ï{9Ãs#]OÇ»üª­R†}7îgúdÔñAïiGAg¹SD>�ê׺—ÔôÕ &DÔ‘ÉQ �)èÂe˜u�¿¼G’û¹ú¥èÿ B¦¿xžóYî£]-üÚ*�¾øˆX'"9õØ�±Hy€ÌmnÅÙ:Õ‰Õß1k%ŠkÞSk´„‹£¤tU/Ïý8ø7ûÊ6ÆÅØåH$ÛCן+>‡G,fÙRD²<ëp¡-™pDörï }6Ù»KƒN“�4ò àáÏ,a7–•†P§Ö‘îµo~hÂÓNy=Í®©_-ga'µµÄ¡}YÅ~vMáƒÜºš(ç‘[а�Æ,MÄW·'äç´àÏ£L/y¦C¿,Ìp‘¦NvÈdØC:V’ÉXÅAh,d>øäC䨧O{ø…Œõ—µ¿¹SÀŸ~]<ýæ’?;úg5¶+’.¯ð¯$k çmÓ_ªSÇÌãký=´±Ûùà³dÚøLœüÒÈÃ÷Wö»ÆoVWlãõ¥rfzO Êwߺçã‘"å•ñ²Öì�ÀÅ|sú>&9aebx› °CÿK£6ÄÝáÊ)¹©\žByoK,ŠŒ–²þ�`ÿä4`™–y¨Vžk¡BP M})4ex£g'>,¬d—zd¢�)«iÆ™«ö8½Ã/Ææ§i1öÆ�\— ¼…¯ðÝᎩ[„ëÒÝ‚@†�Ç¢ê[767ÙØª,"ÿ&Öûùw}ר•¹à“èíÆ�½Úð[ÊBö8¥f wþ̪glÙ|õ1jî¼!kþO(þ¨Ó —è“ý;5Ó÷QÜM—ó¬{Ò¤–í1Ž�K("Ñ’yôŸöUëºþö¼ÄgÍï#M†NHeP‹îð†u�ÔVÖò ÌŒ =…#M^AÚð<õ9gñ”PôSþÕ ¯,dìgÓPÀ§)Ç5ÛÖ8rÿìÌŽÓÏ%z4دê6üìå©yF´2@*T�ôèWjówr²“�0Õùw“<)p×Î?€ÇÒìè‘?­7"¯+�ê"°rÒuJÌáo¢ù=–jåë³G 4ÔQE§àJ°YÔXb·okX÷|éñ¯jáfä_NId=ÔG÷2´E _€¡øk xâ¢ã” ¯§×_{~žAd˜w¤itBDâ'ïØ7Â:®â{òÝ;Î"Ìôaúϱk€¼ ç·ôªÍŸ½µµ¯1.çà~ý+òÉ2ƹ�¬Æ]ëd¹èö ÀH²€—½šù=î+±4Yø5º¼ë29ÙÞnïýx;=ºÍl/š»-ó �ø$‚îã˜Ú�¯�Š{ï;�Žõu'½âÛÑ-ïe×EXÆJ®æ‹:¦­×Qõ‡VUS¥Êñr¸K¹¸‘¿=ìÕGÕ–"Û‚úcÛ"�<"ÏNëòSBÓÞ@ë›îÐyrµ“O·%›ˆRL6Iº"º'âB� µFü1‘nJ-�=;…¸9ÝÜÆ·[¬1ð´šœÅô4Ïðy©»6©[<éHª ~X4°E€›½6ŸÀÏù¹­P yÝÛw/ºMÙ‘.®}� #FCÙâÚÑo¨ IR»¶Ÿá·¬öš¨z±³ÐÔ`(çT‹o%Þ’ê˜ãx§…¥œ¼.èƒgq(7:Uýá·Ó¤r“"eWNüšÇqéCްÏ}=b?|ïÃ0{¥Pw •imüOÆHÒÀ4#I’fû–ÓðŒ�+Q#ÿól_Øê ×ú m<¢Nµ·ù„L¾¡ùx.(Ñ#¸O³3¢mÜ?óÿU¾l|Îdÿ½%ß@ÿÂáä­@8aZeÌîâXŒˆ×ÑtŒ ÝLŒ�agGd$Ñð�â¤øÙBnÁÇÖ/(JÞý«´Ê7ßîÅõ,�ºrqXh�Ž�E´Šö©ô_ÌŒÙð«¦\胺á ?¶6½pl�·/5ogzî)™N[ Š­Xç¦=m„š‹ìÊÿ©ÚÍ|¾¬¹Hv›vù|uï×QëØ.eÕnͺØÅa Ï3iùÁ—9J“ö€wÊ$Qç¬'T†_ü H“ ¤Wj†Ü±l˹3Â ìø¶tP¦0RitQyJ‚> væÛµÞsÀŸâ虓$’£ö¢–pý�;P’3슶’&é:ù€5•)ç£f!Ú2´ÜÁ*›‹fœTäãÅ)M“�•·ž�Räq�ö(ÊVþ5k“qºsloP{$'2ñD¿¯ÑÑ¿K•\Ç1·ÒùHå[ÛÒ‚š·¶½íô‡°�Ç€}–8P‹‚ÇäŸѱҠ9²Ç ë$î[ÊdƒîeÞR�ï÷>«¢@0áž©Oµµ "èoXŒpÕ, ¯Vâú }éè–ñÙ•CZåºFgnð©ø¡{æ÷8!Ùñ¹£µŽ�åï"Œì:×Ïeò³�Þé�r[ù·MÀƒU»W¾:ä˜×ƒãòÚî«è¨ê7—ÛÑm‡ƒù;×_ò}*\ó0èSĹŠBëðü±ü§|ƒ‹c$I÷#ìœ:œ2>eýËöSÙï ×á3ômWítcŠtÚñJö‹:Þç´ªÒ…ü»ÜE„‚­+Úÿ�OÉÿgh¿11œ [=£Øb^—æ—@ãߨ¯þ?”¶£0‡€y‚ß× w7d}3ʱ٘ôòúç@°Óæ)ï]�î%¶‚ J!K£×ÚÂÔ£šR)-ø5P[¦5öMÚ©öÄ)þÎèRå¤H_Ž7E«ªL½ïñ„²¹GÙÍš§i6ßÁ+‘ý!~þ.m ŒßTÖkF@7¸Z¿wã¹ð/\géÏxéç„@Y„É;ØMº3O?­ge%Û£z<+òyßdYÞ—øp_—ë"“ß‹¼œdc·z’c�˜“íôž{#emú`ý¶%ðü¬z5A«ñæS9ß"XΗ:)^�þ8©¾à�I3~ßÿåŽß£Ü[Ùå•Ê�hÔçÏý9ßà†6ßcI÷ZѾàkDâ÷kté‹£3l§§ˆ¦‰r5ý­ˆý²ÉDø/ ¹²,[¢72¾4ÄçµÔæGw¼´ïzj©ã“‚õ”ï˜NÝŒì�£´•KzBÂ]:Õ{ç·x ˬú‡©âr©p±B¶§Þ׸·ˆ2ÃÁ#_¼Å+�8÷!qä_¾;•¹ ·žûÊæ·è—J¾—.¢k}4…Z„¬È©‘ï¢þ©s»jëiçë3±¦4Nomékì�(eÐм÷­õ“ˆ�ªp]Yc­#§48¦,ÇU¡yðûL¾§âæÓ˜tʲíóm{f>©x ñ\äŠÓó 0á~*Ÿ¯XpÙÓ/ÙÐÙ¼òÕßXœ:¿zŸòß ç%:ÞÇ´¼˜l'x˜<Øó‚ió„ƒB;†—}ÁöMCþE6.L8WóºÆW@4%ø%^`Mý¢Ñøï¥ë{{-ü å·‚£1#VÅ6Õ=§êCùï�ç§ãÚenà/ÈüÚ·¦Bu9Ñx_ü«*Þ—úšAc´4,QüÛ‰³”˜UJÎ w�né‚årÃTw± íîm-ßÔ§8þ¹O® NÚ{àû´`_-I–^ZºÁ€sô³’bÌÏþ”12ž¿”Àf¬ ÚJ+O¡ŽÍúÛ3±Ì‡Û¤:= ñq¦¿'HOä¼É¸GQè4'# ä_OM³´ú ¼\¤¶dî÷³£eÕÓ\s®—ô*N�ëA@„¢1,à׸¦ûôk0:†Ï,2biƒz<†hD4‘Êhà kKùc¡ÀÊ‘_9’)GQÆ'Ýç¶—n¡… 8KxÖÂá{-ð'‹]Dæ�ûé—d:"ínqP>Ïmuô¯ò:¿Ç¢‹FëÒ.²­ºîÒ.ª/_W¼…×ÓTíéÚñà“Ãê¾ߪ_ø,ó ÂÜñtµHÈÔÓÉÊÊFWVmßÉ?�¯�z�A'-úÙò$i9®~wcÁÍõ¦>(e�>…Çú™P¿#¾àwâø‰¬÷î§@>ú5Y¨G´f­VqK( ;òdBï=å½Ð%)ž£ãv× í‡‘„Ô:6 †'¹«Ê��Ö×àÚPâ³ÎÄ#š}¼[•‰mãpQV´I´G7Iå?š¶CÎÐ7c#»F±â�³ôS%âÚዸf6|tË#/fæH��¶ B }”×ø] Þ%Ç”´÷ÍþcBýžiÈM¹,§�îé·ƒG”üêåߦ¥9 ˜³UØ cC”øT¦�›)6ô)ÓF–o©èöôœg{iá)»è|È/� ù¶= £1e�`;}7�΃öb¾V<«áŠú FÞ%]ð�Ü•¾�g¿þ7-“èaô=FŽl;Ó©´�ös†òSNå™pÚ)À_Ö�ìùе¢©{L#’…ß×qzUKýúR|ÿýoí£í§ãõõ߯ïû½öä"·¬’‡(ø�qø5?ö³JÎ÷”3ÆoÀÇ·T±½‡l¯¢Ñ–fï½»ä|‚a!óº˜{ñÝy™o-IÒ"/Zyîsý~¯y˜l•³–ÿɯâõGDŒíUÇYñTÙKñçª_?à‰ Á¹Ø+Ä~Ïtÿ“dF^j$¦OÂû<ÝNõV=èÍé˜�—õ•O­¸Ö—üæKõ·GÞ‘ƒ·F Sà~Ã?çW°–nüf�̹ .`“ÂB†?Cp miÓ#ÅDøи×ò©‰Cè›D‘¤†9UÏ û<ñ°qæùù(o§‘F‰^OÓnA"—³d‘ô\y2†÷yÆçÛóˆ@!ª"�ºö}K0áo4î±5y”½øuox}Ô£%¤ÏB`;Íï[Û;V:T ;9Ú,_W)/v¿w°p ªkĵóª6·xÃ)ŠX÷Ž&OÚ,Ç÷·–ßÈ;¿à�ë¡ýh_à$yƒÖR�/m‹R$H^äjWM¬¼î‰Mª’žJ=Ä¥³&³‰©Úºv4�—{?®Y†§‡è@/«VJí¦ c\«T)æùm[~[ hHÐgñ®ëž]2#ÛÃÉœÀiâæ_Í= …fD×@dFàa,K¤y q8/8[täúEŸ0ó®Êþ×£eýeàóˆB‡ e“9qRº®†mÔó­F%À^“ÕT®JHðÎ]áÀÞaü+`‘kÊ–»/®v8*uöô/±;”®íáðV€Â!mXݺòògŸtaá-Zâs÷3æ—HoN€íÈ‚×Yu:¶W!Rž>\¨×—®g¼eîe{õã‹zUó‰Ï3jÄ�Š·ñP³ûX/~kÑ/"ÿžåh$=ó®�ÿ÷+Ö³Óqm¯Ä3ïQžî:{éâ÷=nª-¥?e^Ú¯·D>çcªï�¤/ðNEÒØæ…üåÊ—àuÑrk^ŸWXgQc�„ǹ LT£¬Ôæ— ®mÑ uÑ´ò2x�“ì@_^Š®ôãúyE댎À:Uy�²wrʹý´ˆh®|r§³v QUäS®×ÁßE9Íß5Òm//ágµ]Êx[w‹U»taVæ'Z.ú Õ{d;,¨íúšµðºÂ+Ãëð­êc�ê:׫è“Ûy’vøJòµº¶òóŠÖ»EÄÜ6–ïÆ¿Jy~¾ÞåU0|iêN§B´ûQa™ûsóá‚¢·ÁlE¢–•ÒÎgÍ[j]Š“(;¡³Çº½žÑÞ¯F?´Ëé—ŒxÉ_ƒ“�´Ÿ ú[ÓP^dYî=€âùl[œ aˆ‹õƒg¿*X6§¹U¦ŒÁ&eã+´gNùœÀ4¸qF ›@óšŸMo»/é7æT•kZÉŸ›¡xœŒÝ8¢³t¯Í›ÅýŸªÄûêÃÛ°ØOR7µü?HïU×TäËVàÏNœè÷Q7¤f6}Î]ù?ež¿ÅtÙ¾Þ×àöuäH £âü­†æ'òoúeuZŠ?Ï_s+VúIbŸbàeÔuϳn¯0]òåëi®__ô£d{Ü¥€(yÛlÃE÷ÈÈ«`s_¥lº2xƒÆ:Ãqj“·ÍïáÉÑE<ã8ö´±·ú­‡Y™¤ŽiY~ÏÈØi®ag�vö±9çH­ñg°~ëø½42镚>ìt»#â“én{.¼›ñ`XFûÔµH…ßcs�ãë‡ 6&‰ve21oÞt ‘'‹ üŠý‘�¬x w ßÊInž¾a[Ê­ç9 ù´þ¼Æýo½�+¿£sÖÉ‹5ó—<_ÝúzpЦárýZÄß»~n‘©Ö¯—MêŠþ¥úC¡ýw‹‹>)ðQO§�@öý3Oψ<±çD ýdì²AñH‹&.–˜Ï��¼8)ÌO¡¯½â®>Ù8­|¶)ùšK~w�ù­®§N$_u½Ð‡Úø†D0‘1Î7ëé�¶àì°uì;gkà! cn°ŽÅ,2Þ»%«ƒÐšÈó=ó©Í¾çÙ„PÁ¥Ü†Ê‹ïè‹6ÞyÚ§¨ˆs¤ßª_c$«—±WÏ;· ™ɡ­©u$üTßë箾¬_ûÅ—L7¢Ý"OÛ7[¨qBØ¢—<ƒc{®ñ~ÜÚˆAàÊn1J{ñmäÛæÞˆÚ!.dÕï½Ý /"4#IÓ¸§Si;<®SÀ7‹p]~Å+ã—¶ãgð¼ü|¸Ð´æï ÍØ|J¦ÊÍ� F¤ä'[¥ifÁ7)²²‹†L÷¹]-sްªŸ²Ôµh9ȳÅU° —�ÐþÏE|+_Ÿf½F¾HÑWžFðåîYh s]›’ˆGæœÐÞ�Ž “;lÃ^²™ÿetx«?òŠ~|ðóÖA<^#âð|½%ê¦Á‰¶ðÐHéNù4÷ BNåâˆå—ö<LËÖ>ýå߃ž/mðÜ�4øoŠÛi�?‘9<ûýÖéíë÷xƒ/ö#¶ö¡’`,s›ºiP—ÌWõ­ü¥•]ÇÜ}/^‰uCu‚–1Vr–Ó.±¢L3’ÒÄVó¥[9qÎ�õ(›¿-B׿Ü ®é"öœœxX£Þë)Â<÷8Ä©�£Ã€ô9Ÿã¢�÷Ëm†@_È—!ºä/�Œ¾iðìÎ×­ÿŠ�mUi¨¾5ríõý”󵞮Ù^v¦Š¬K‡˜¬r{HÒŸ¥ñÅ¢‡®oœï ©‡H޶l•ãmv4ÉÁuZù_ÿÿ{(Êã—¸õ æÕ™‰³N¤òà§פÇô‘D˦ìOÐûOI À-,EœÊ×?¼�›±¼P0¦8r.Á’Ú”•>È›y|Cø„¾›B‹ã “‘BèTÃIíÁÒ%W>?±\ƒ1…Ç<©U¢šÇâg¸ß½íw˜bŸ3‚!A¡Ä³X‚U€§$ã?ƶt’·8ÿxû¼•%‚)·?.¦Œ,úë  àM¦ß õ¹4´]Âร�(LL(MTºÉ-^#×Wí[èWôRYÃ9ä)OT6ç'’Úö·˜@Ûož¸Ï~ÇñÞ­…`¿2Î{v|’9ÔéD¥�ž×À¢aL8…÷›Îd–謂žÊfÍ•ÿ°lX°…z;øœë6uJ¾�ÝÕëyü©Ç9/"ã¹å9­´ë"µ*>Æçò;ÜÑ)·‘ëtsù¾«�í´òÏü˜÷º6+>ÙÊÑï<öl«ƒ°2,“óô"ÀîÆ£»Fœvã‡ð2}äò¿÷Tkíì?øµ"-Ô¥�¸ø·Öö m¢¨üLß1ΰæ“Y?Ñ$ëUœ8 í¯ù#è§„{‚¶„"à�Ïü$ø8ôuç³wÖ‡(~Öºêf«=£ ¡¿TÛz÷=¹js´ƒ~ÇÒVºÿqbÊÃçƒ-€† ›ùÆœñ˜>$IסéÒIˆ¿Ž’éIZìÁ†k•&…*Žj|3 ãÄÿFåß™Ãaßñ‘�m¥1f*ĕҽ4HéŠ?–e„ˆ9ûbt,ÌFÈÇLôIÖ:~ÝÐö¡ž}@|Rf¥s=nÊbù;x^Çv¡=S¤sÚ 'Ö�¢nÅÚž[ iÚà‡J$Þ¼ÃiÌ í—Û¼.¯ÀL”G©xu°…“#~¾z°7bGSN~�‘~�Óoåüuý2îñöÁKO•¡¯pøÕî/Åã÷ÌûPÓ>ö?6{»eNüÜ[ÄÝﺼªû³Ü~häÙ·¶÷õKïíUÌ;¶ií"1Ü?üe�´F—»4&í%ºÊË"GÏ×ÇIëXÀÝ÷hÅ÷¼±Ó ¿àx�]Š÷åÍ)æ�'ŸÊOvª¯î¹7ö^â¹Òï§¿r3ž~sï¼’žas€Wæ}?ì4ïéž„'mxâé´ÓöÎÐÞ”WµB ¡QO’*:y)#éA]u$Ñ!E ¬£þØ‹ò#¿¿ÔȦˆRiöꔹ—��¥Ù:=‘¡eP×"5<ÖˆS‘‰ÓÕ8 •S5—l†=Ú`¬£äsÂkMÙ†fͱh’«ÝYúÑ_8‘ÍjÄÆp}�0�/í‚|…<üáûnò¼ôÅOÝ-Ô¸Ejð‘ß¡aÄMÑFîƒMòXåÞ"–…#ã;‹Õq·½Ošˆhç¦Å+Š{PÎçöêxE¾�Bš÷—޶Ù@*×-ŠÔãÑËÕu…mZêp¸ƒQ&äËÔÖvqó#×,éHð•�…Ò$˜·Òþl鞯«ç-½7ürÇ;ªh7¼÷Yæñ§|ĉ.Oä¿XسTŽâøµíù“ö ìxgynnåü¨ ]ÿ0íú\ö×"U–HqWŒ *p_àâq/ õ–ͳ«á©PƒCîÿÊ´=ž,‚géI´·¢ö÷°9=]ÖöÆK¡B×çºHvy½CáHº;t¤.J¸!J+¶èŠkG™`,ô—Õ_‘lüø+�mâ×qÕBVàaÝK°-“}vM_v† ‡B싦ãܱʔ£Ä^§úŒîpxä�Ô°¸tÚ«¯Æ©+S|þ�ß°W>VÒ¾Øó—öóL§ü.Ý@üaÚ½PÊmWôÎ[³vh•ŸÔÖkè‹|Q¸›®Ú¸Ú,ó�pyÐïZv B¾2‚Ÿ!}�qe�Ü+;�u)¸NþŒ'† 7<•ë»)¹ôƒVÙ�ïÖš§}ÑþDYVµ&¦ÿõIà»Q¨ÿemZ¹°_ÔC§½„+S×Í(¼yµvw‹B’¹Qá8ÌçIž>ðŽö{ÀUóp�`æç{7-ßãòƒÄwO­FSœtÒÏÓUh«t>±Ì…ÀƒJ›<øã>\<••5ŒjÿÍ“0A~êðòÿCÏø vï§rÒÉ¿�ƒ1CžªÆ˜g?F÷¹=uJŒGÄP‡g}ÏÍo[Wñ½fè×Á¤¸,“zºq:>þZ>Ȉ¤6ꈙù+^FF³ èícýT”(kMì[îWcÖªáËR‚Ã1ÇED¶r‘Ôˆ"»*|Žuv‹$Õ5â]%i䱊~’²{‡[©+7ü…0êÅSÚÒo³•ÿ¯ªý¾¡.êì–>)/ã“M«E½Ý.òQ÷›÷ò?û…V]™*í(ñ:.¼æÏŠe©SÝïà?á§Ð¦ÁÝã¶eVXx>PÉì ‡Øbʬ4¡æ{S«ý u$â²¥Xž›²e*}ŠFþÑ¿}†Š¯WÊÒt,8xäˆÊç~WÝx-ð§¶Ð~ fÊÄM ™ÐWjSæ#´K¼C—R…ê^âïÄ¿þý» G,³¸‘©�kbåŽí±l‘•Ù AÉ®ú®­¢ *~ ޳UÈÛâîy |S®nbÒü.)�®”|�£"’^/}*&4­‚€ª.£x•åz\�îêWx?ÿ»Ô‰g&cÆ3Ë¿]WõC„–)�O…h6$FûN8(5šŸa‡°c˜ÉTÿbw|]áÒ¤[=¢¿Œ°¤À‡©&,´ÍßÿýŒª,%¶¢›Ë1ç=¾RÄÌÝ‚Ã÷¬s„ýMá·¢aí>Ý” ¥,ÐwIì4a}eÑW“Ûx ?§å˜ h§â¾ÒÞ‡×c¸¯"•®çé”R›Ô}"í>NžïÑ‘˜îp"FDÝ(=y³=LýPº½ö¯–ŸQSö%zÛsîû�ðÑÇÏøøBˆÒïÿ¥›(¼›%r[�_N­¶È¯¯p;ùòÁ+ãÿ uÁš´�§­%z>å#“ßœ$–f¾µ]]{9;6ËÊ@}TPÍ)Ùü¥Ñh¿‹HØ,zõ4-{Ô�¹þÞ knNy�sZ­s*o¼¬/¼Â|â5ø±V&¯ß@†C�¥×yerBÃ-G}“p¼èfü}0e|ÐCjÙ*/°5Bâ31NhÕ†^¶ö�ýg‰±}Ï-ñ¾\zIë Èç6ÌË­6ÏkÙ„ªÙ…½Xç×�Èjy�G;åþ5N×=š½;w (£@mGîÈÔ íS.³Ž\§€ûÀ ßöMëåEäP¯‹¨¥z�ô>­”3¾ÚE¾•�`¡enë ‹b¶§ÌÛöÄ}%˜‘¿‡:à"2¯YN–÷´6è¤*Ú#jX¹¾¤|­äMµRJ!»eô؃EENmy�¯Ž[aåÅÃülêg��"¦]\‡s;6f¨°[˜8ê�±Ë?’céÛ� æ…Äq?O¡Ž|6ƒV~Êp/›à�ÃS2-/Ù¯°™K]QM�Ù‚Ú¿g�P�cc£ÕŸºJØ)¹@ÿkqËíjäx�ZZ4hé»ñú Ÿdï{§…ëtfûðÄû�¶ßäÙ|jÄÂM·Ã¾d0~T]þù’àêªí¶5Hü €ò—} MšHJGȹú€ÔvÍ"�/Xˆ)¼øÃøé`nPõÃõîkÌ!í¨ o„€'+’¯Fຶe‘ׯÁPüýšý�¬äøAÛÒ¹ê7—Í)ã¨òêŒÆ? Ó–É·ðO;%9ŸÉ�hZ²‚ö4ïÿÏÒ?F‚f$;ÇêªÒX­ÖQ•øÜÏ–r4ßKå(QYgŸ¤�O”ý�‚Yý5”±‰˜yXïOÇFúŠÜåf厯3NbŒ–;ä¹.›yÆÚv`\q–šiZߣjV-ÜI«g:82é&ÑQZðpÅ�<È*[�Çñ½²þN•:ùW§&pq"¥Ô®¥¸öÒºø&šÉè=ÐÏÅÛÍšBˆÜ‘aŠücщŒÏ¤�Ìšâ?�í™ÆEfcÊדžÆ�ö™˜ØîäÈjèÄ'´8·Ap—nòíš‹r­ mêægT´™M–…,ߌI.×-°äkþÇ䆨ŠèÊ}«žWx]„Ú.¢ë޲³µ€KE§ÉVö!µ½‹CxþrkƒbÊ‹U?¬\¦/æWãXáUéÂ=ÎYoÖtíðîÁ®mï`<¡w­çŸÉ_Å¿]ªx_ bº-S‡k µœ"¯e±J�þ(!ª>ñ6Ý?óB>áæy¦¦@±?jŸZŸ¡íËNïùó3e 8�ædÞ÷Së�·î‰Ûq›,ÐOÀÈecEu2Dè:ÒŒ¨ªVåqD;¨HŠ®¸ÿÁ�NÀe‡@¾n²+¿ªM`‡çðW¹Æ¹[]ÞSŽëž#;@lG¿fltî÷?•º¡åM¯“]èì8íEvÛ�Ÿj¶«¹<î‰~8�Ë3ZêKü)pý;Ãpgiƒ m}×’o À .æõÙ6U &~-EÙ§‚õ´lõ×Á¬êZâͳ.iþýÿþŽ �ï#²�á…z«ë Í@þëú•ÿf€sD×CÑ85ÒÆ� b* °¾™÷ȹ®Ÿï¸×œ\§¥8a.qÎ)¦{Sü²½míV¸Có)E˜Ù©Éßß´ÅÛö4|ÿš`+A÷…°‚cÍB柫O‰»Æ4î�²Ò ðˆ�äôñwÖ= N[É^"É‚ªx–‚†iø"ƒõHÒÌ'_1ß"-ÒÕ–üÿ;Þ/^Ž�7E'Ú"]][Ù«÷‹/™|o¹驾ÿþ7µo�«ôR:è^EŽƒÑêKïû˜ùjá' ô2ê$ï"š4’Ð÷Êq‡ Ë®ÇùGK$1ì}ú,s"tMX€¾I˜yžÑSTdÐBE{-+š‰î‹È]ÏàÕXǃÓðò‰�E¤X¿e…«%&æö\h‰´¾%±:l�LÜC‹ Ëiâ¾¢nÛ ÄºèŒ zÙ3D:£æð³e 7øbÐÒ¯w¸x}°¬?ñÙ\@9œ¿¼M`š¹H§*ã°›ùƒª¡vMß™]8&öÁ®)÷Ie‡;ô:6ëô­c™L¦øüEô [E_U SÃ,1tõ¿€Üƒ¾"jÛ/>ˆàµ‡—#÷>ù%ïY¤Qz¾Žæµ_G9"_|‚š7ü^áßÊìú¨Þ­üÓÄ÷IdZæ…�^‘•/ê¢Ûð~ÐlîõºÃí–^ ›ó"šËý+.¤^‘‰ö4z|è3ôÇ<ŵÄ)«s‰‘“F¯œ¿Ð)é+’Ô>ÀФ¸‰Î¼X_åUÌ@Òµ÷ÚÿëK’‹ÿMÎ8*@SˆØY»ìE’„¤œÜŽˆoñÈÀ{Xʯ´.óM•vÙOå<cá~FŠß•4-øÌÈv�¼3òøžÑØï[‹F©'3M^ì댓£ 2ò1âW M÷«’Xèݬ‘V™&:®a/F’tªéuZp6�ÚÆ†Íhéhá¿0Àñ/ÒXÍÙÒfáž=M[Ûõ¡S’ŽUuÿéÏOaL!·û ©W¼ÅǬ§”Šna/©Ã¦–¯ØN%Õ½ê‘Íœmã�q˳ºÏé¬~¯½üØi°Ç™Û�Ã郹?­oâ©òhŸ2YWvpû�ÏÆ½�{6„ zî*¯ÅÞÀ˜aË�šƒ2«ü~~ÎÃø8ñ£^ ƒ*ÆÝŸ½UüÂÖ‹r‹Òfl c~›N�/~é8�Ró=䄆s îùD͇ô¥D÷‹À\à°&û`ó­[á ¾K£Ñ¸ÞÇ à1µµs}¸ÃÌ«z¹>–­†=gÄÑõ£o:ćé¡çSµl�ãE?Jnñ“é·ˆ>|•ƒ �­…´ç± EÜ�þæàXå,Ë,tLm«oŽ-ŠlïÌᔺ·: ¶ù̹à߸ëÕKOG}×ôeJ#g{òéÞ¬¯F?{ÛL¦B,ë.¢E†vm2Ñì�åÞ©^{3Y¡{ln÷�Þåcs—W»j í ?N(¨Œ¸Ú)½¢;–O*ãd°xË‚Ü\çö±Ìx># 9ñ»-ÒUm];J—Ð&ë»åó[‡à˜Ï¾lú€ôë#–ð~DâL�yÑíàèÔ”mÏTýЮlÚkf–‹ü-¾gÇzv¸"NŠAwûiÈÆgh¯¯;þÅþ<ŒÚºõ8lö¦·ª÷oÚˆ¿q¯ðNƒD§!…Õœr~�—‹�h¡|„Qiuý¸>·üñkϬ¯6ŽvPÎQò÷ÔÏOhº^C!çµÌqAmòoŒxã¢oE›†§üŒ÷*x�¼×tNòÏ&[äùœ �q*8­‘…[%Œô¡mËíƒíë·Úåáÿ›üµ’' *gÀZ£^“••ü݉¡µb¶‚•ˆëª ãüþóƒ§ Óò8ºk^¦×äb€áã{a�.oW~ª.ðENûÇz?ý>}~Ú ­á�Ht #T÷©M)…®"VY†«pØæ„§Ù—ú…š¡u(†=ߘÊ)GÅBYþŒn'ÿÒöX˲X�S‘: ïÌ÷©Ó¶žkhÑ�$`ÿÐíKݨ9µéÕÛ"÷PP2!¥ê`jDŸß�nÓ§ìt»î=ÀqðÕ¡[—N“elð-U�êßSõ‚EÊŸ »{(oѽ2iÎSú*Eý…Œ’*0Üêý©Ë"ÇËù)í¨_¹iР^ U–+�E�ÎúwÖõ_ã3­vȬNô\_zJøùJúü†±–-,r*öîÕjw{®:üt‘;B �šùÞòœ� p$q3ÜKÓ1_º•¨¹Eêr^X[H)`A‰WÛ&îçtªÓšžÊ%þ"�N5ý·8ÝxšÆrr3Ö컲wuÃË#Š<¾‹p«Ò²X†ÏšyÚç —ÿ“û]†y;Út4Ê0×½=>Ön¡W¥®\nsׯ;¸Þ¹Ýnæ©N–*^˜8Çû\·h4gj l rç³ìd í0"PH¨0Ù `YÛ*€¼¿Ý“4Ñ*ìžC‹%8y Có²éº:£ ¥ù£ž4ò_XÔH]³wö˜iñ÷2f ã8nÚD²< °˜^l~±ëHo†a*¦*¡|“òðUvuÉã 0¡²O]Ñ]~WæG‰ë6ò£@¤]êÏBctL*Q¾A «¤¡-û¿äUò—UK@Ò€—ŸtÇx®iÅ'óO�¡E¥üS©¢->«|b,ðÈÇÊЈóÑ!‚$uÎHf¸œþ8ÜÂ&¡U:¹þ_žþ ˜¡m#þò÷ÿïûÖ-Bª p:uéûëØ÷ÃöBª"ãp1ÎöÆûúšy¾ÉhÛ֕‹ˆÚ… <‘Í’h�ÿí_ìçž­ýϯִˆ�³=äòT5ôvÚÖWó±yå|”åòR°}Äní§½M0žnNñéǧèuê)¶£7ŸH¬)þ·Q%ïïh¹u[¹"ýÜÂ'X(�¶W£î�èô|½C�]šÑN™G>÷IéøŠÒóÃ#º—Ý·FfY$hØÄàSåf³€?N~þÏÄx>ö è¦Prü¡6³=¯½²Œù?«>ýÒ'ßTËiévÌ4#0%YÐ$·�g¨78Vïæ4K<…’–žñäÛdÂq¡Ô¯œöýu8†ÿl¼|³p£‹oI©{G¾ßuŸ™[Ù¹0ð½9µß D‘ ï¨N6¯±Ïuíåß êU%'¾Ÿpô^TÎ�¤D£FðŠ_¸`�ë8è8Çý¨Òž[(î]8ñåfhA~‹áwV%ûRôjñc²�£ÑmvÐè4óíßB'[h¥SØ„°æÛ5E†ÓM9Fü›rUÚµ'”vÔ‚É2º‹ˆPBª2¡¼ÑqÔ÷ן³c”’Ñ{ÖNRQø5.xÊ<–#Zd -Òí"éÁë}Žt‹úœÎžãO©õî&;æ‘oç¯<�·fÞÊ�ôëˆsu5³ˆËAžé­~’ïM¨þ1ë2À·M³S}kF˜Õ=�–vRdÕÝ\µ ú”µh(˜çtãÔ‚µ÷F4+¨•N(?•hNIÅæº”äßý61žãE‰F¤³ÍϹèœ1Ô§}�Г¯*ÄwÅ­ÒM˜ü´å®@—n7k¬:3÷t?™ë1ÏþÀ1›SEÃÿýÕ I¿w©Òyy<çåráZVXÙ�Y™Äq¹ ­ÅáIF2<,p&é¹èŸL6É`¸GªòUÂ~gKxå1•³W¤k;f45˜IP�j�årI ÆÝ5#âµ60yMø.¿¥‡7ÝØíïò´M‰–‚8kμú©öí¹’;œ(ÊăT–Ì2O;¼nR%ÿ´“še—â‘Â8Žn`åtË*¬8†¨Ÿ4Ô�ðWŠJ€e‹\�ž\Øí$®Iû•×Þ>sP[ئ—‡‰F"_ä8åtßÙæì¿«B,4‘*yÕæ•DÕ¸BR¥{åòƒ9Hù¹ý™!a,ÂoZt³ë»È³2_`µ(—i—4º„|Í»ö½ÌVW^p³û¼¹,JŠ” 2>™iêßE¿q1U9KÝ¢P.[-pVp;|3ìÚ·ëªÍ]ÛVgYØÚ¤nñ6Gá=Y̾Ü!úïœWœˆzþÂ2XÎTQÕÞlKi42B~Ûà®Hµ)Ã`³™V¸JŒŠ~S– Ÿmê‘ð(ÝfÇ�$¢­->êúD�´ª€‹’+{R•hÓç€hs íå':!<³©h-+0A Iª›j˜ÅìÖD%T ®®£JEyè‚ìÉ–»V>—ªÐ†�ý·Vá÷¿:¡‹2½$ W‹ÿ!³î2%ƒ5~˜òÐU¿ˆ×R8‰ òI Qpÿ�&™Ç;Âx}[?êðQÊZƒÓ³ü<ˆ?%ñ' Cq)ȃ˜è¾ÌùsÚèɰ2T·o�©ª�NGäüÚ<ý0ý„)ž�b:íΔNü�5‚òÈŒLÜ`…ì´Ÿ_ô<}À|kˆ�Gü¥=„ìMo¶…C†´u[ß¹U(¸ëY„šIo~S‘#Yߤ{¤_Zº7fcÐ*éX vþ&œÀÎd‘Jzªšî!Ä~ rN©‘CñÌoÄÂ1/�¾•_J˜/mç{é h˜Ê±hî-/§/Íû6vÔûH_O›%|SY%Û«æ½YÛFœ�ÿ.‰q#[in‹PtîÅ&ãù—>ùm‘ŒéÍíë=ê¿{BÙãF9ØåWÓ÷R,šÀ„¦Õ“S:KÙýŸ{ñ8N†ðµˆåÛ^5—1ùÞ~WœR^T8ÝXRä�FœŽˆÔgÊñšô¼S?‹œpüÔn®ñ yXÐ6£¹�Mô×ÈØÁc³ s™_N¯*”�€=�c×Ïâø™ãdΣìkj#WRZTårú±µ¯íÙ¼ƒC;·3E[~ϰøÐ¸’l op³ÓÐ=�S覠‡\kÓô�Nñ„öHËL\¼&åi„¿ˆ4 €O*;þÎ÷E{E}L…v«b™,rîäìç¬éÂÆ÷ú,ìwöÑ´0ú2 ðXnÐ_‚Æ?ULï'ü¼ý<Î^d\eÎÀ¯•†µÕù�¬6å“ó­|ÿR%xd€K2Aj…¥yüDx¶‘¦�㟟‰Ü×¹Cªš6E£µáø‹8…•ò»¾æü¬™ÿ�ÒÌ@9_VÜ‚å&x^¤ÜÿªlÀ�W-¸I±+íýšôÀb0¯E¥ÑÌ›4!þ�1[h¿† ud¾'øYs€­�™�sµ@&7ò'ƒY&�¼Hó œ.D‚0]%…CøCýΈ:Y5åC½2 ;Ю’ÿMrŒžzÞ°™ ¼ ¹7¨“µkÛsH´‹’YÉ*Ä»çðë†Oh™üc{�h‘&àˆ޲>„_o^øÄ&ËxÕj‰¸(âÉ•SLÙqÁf99þLÔú¸ˆäÖ5‰Â\úK@ë.âqÕøä0˜…±Xa³o‹2º6¨Þ%¹‘lã§pvÑUü5Õ¥j�¯ãÓ�'‹W¹\/ÁXÈ«"ýªÅÅ*£îžâ½ëGG> }ùSùü3œ)êu¸ââZŽLäÂVVí—‹Á#Ãm°Øã¢¾@ûA¯SÒSPŸ,ÏìG;>QG½Ä€ AK`W×�W�ÙÔ=kg÷�„ò†œ°˜¸R(GOüS/�(…Å´ŸÑ„Yd£ÎúUv4.þkVúiÙÊgëÀÏô(Ó5£ÊÔ � ¹Äì\,€áfH±'iS L;­ó¥ÁrX±‹\4�6•RÙJ*vIšë�!Ð/.ÊÎÅxmM)Òˆ€�h%Ñ"ý në—t™ò'nh"+ªÒ %©®ÈÚ·vjü“Ä Šá>™Ï$ªŸP°b¹äøÔâO¥àµzŸêì–¶’!7Ï—Fª,Ô¡¬~y|æÍI ålT'ÿv7̉>¼òŽH€…æçàa>®~»¯ü'Ù�„¦—SgQmýçÛq>¿^z3äíXD€üA˜,‚ì—õúo~弓̬ÍQSœ²–«¬›•ÿÖˆ·¯Wlë³7Þ§Œí�wá„F]áÙñ;'D`Uídƒ§Çà2×›XÈ{D2òË" ““ñÒˆ-‹d`°`M“Å=&ÉNgµÓo¿ÿ5ê~}Çò³‚W¤eh?ùz—…M!Ì6ó³ÛéûV¼´ÿ9¢ÉŽÎôõÓ´ß(i["{¾³GŒ8Ç7þ¶‹…ø›ºÓÁ]ŠÇñµ=, yU ‘nžDŽ�¿É~Åþ:6 Î2‚Z­heÑ6ùzºopÎ7iFP8¾'„EÌb½•_�xZäà «Co‘ÓHð=úÎö†è†tqu¨u�L;Õ9Àºú7^Õ-êùÑôOáͰ$ƒ!B%+¦‰|˜\çç©®(:2ÀG÷´£† ·H¼Ô¾S´_×5Ϭ™·k¯BÉYÃÚ÷S'/:ȬgmsŠäùàì|s8üAæ¸+¿ ßk=Õ¹£œP°7†ð±F?.]¦b¬ßTã|¥eoã‹fO8ˆøë"¶F„Gø©LÄÞÐåU�Z³g‘WöéJú®Ùô�ÄörÊ ˆÝ⃼ƒ³˜Ñ¹[À t˧çÚxÜã#ü„v‹|ޤ—¦ž®í¢øæ¸MFã à/C?·ED1¶cý¨Uë¾Mþ¼RÚcìCà/î)lñ%¿CŽ…@‡ÐÊ" _/À;– tÂ6œW„$‘¨#É]’Øy‡tÜB3Ç@P¾¹¨TìÕÖ46Í©ŽÓÉ%ªÞíøaM‡åò3?}øÔÓ\7ò?uÎèþð*âC“™¥-ã»·ÎÜ=ÕJ OˆŠþKìÿœÎ¼?_>!ÂÀZŸû[ž©+ûàÀ¿«âªãP—¶Ú©ô9+Z²Ef'ÇzÚ+ÝûN×Mlºçö¡æN—áÌê‡ï* ž^N(È–áûùç%ƒ9ߺg¦"nj×™�Þo¤:µ ˜ŸÝ�F\vbïÿa_˜ØÁ+õí´î7)m¾T'Ú¢òT·½YõÜ)üH×`›³Ûyí¢¯¥ìTs÷W†Í¾ôêÇÀ/I?ýûÖö_éFšõµã[2f¹´dÓôîƒÛÃ_䉂ßpj¢j&å;‡æ²rSÿÿ¨ÄôGIšûJ°Ðñ²û«¬:¢‚&k=ÏöžŒÍ?”BS`ÄÝ�ÊeM‘%ëãzQÖùˆ"­d¢Iºþ.ÔMC�±o¢¢ðVøhÞ°\ž8îRÆY½¦þÿ“‡¨plh�C¶_“óEtðÆ¸²]{}jÓ®÷ã“п9Þ¯õ³>ÄEÔo8Y–eÚ°âÜÓËnúÓóÅŽ€ÌU4v».EÇÚ °É…ëjâµ�—J¿-ä-je»Ñ ²£=ÕÖ Û§bð}ò<ô˜G÷l(Oæœð¤8Zq1ŠýûÚFGù$ï&årÁIšt3:öñм ?‚ÌÚçž+/û™§ÓLÕO,ƒåvzð^GÒÒ–4²Å¨Ó)×»×Å9*Ìþvjk]ÄËmR»øWEûáslóΦ îÕóª�·ÛÜÆ®ØÖ]T\;~46å–µS¾ s0÷!Ê.µ#øü¯ß3�¯-p2Ø8\ôìt¢ÑÍÛ™ô¡Ðï “´Ñö‰^/èL“Ý«]ª²ž}µµê“ù ±¼ù€y‘o–˜ yBXŽ[›°L˜TV=Jÿ˜‚7¥ έ`´ ­t‰Q‰ˆ%{ßbšÏª¸l¡¹DÇ\’¿Â…?Å Žq#ŸDÑ¥¼²pþƒÇ¹©Lú™u ˜wiÁ¹`]ÆÂ€L„p-á’)P×Û§å÷�HèTcÏð×ë$6šö{Þ”ªs'ÊEC†Ó†?ò%SM¤<@0 ª×†8Õ©›/‡4?¯Àw4þyʶ;8åÞÙ.”isω9œæ²vº¢y¶][’+æ‚»Fî¨/e7Í_å?¾×ö­ø‰‘³B\®åI¾Ýò=Qt/.ù­§Çþ뛦†�n.»Åçˆ@“CC–ô>DÄU)/ 䈛©p*¼#mv˜B¥DûµîÙ¥Kÿçƒã .8Ñóþ^quüyÅ×è…äZ4dáäŸé{ÙtTߦüƳUÄ@wä�°ˆBuß0:¢±ÉÍ™øïm‘¤¯Áغ§€¼›*XìTÒF=˜dåa=¯¬Ô%dê�ÙéÇ‹¶Æ= ¡¹94SP#ðæVó­}ßÓ!½bÌ Wœàéµ½¹à£Q#¶×ÈÇ�µ?âúBûMIî®BiÌž¶w£Éw>ý¹2“äãèúê[j~óv¿µ›Näò”x\áÊf§)�…>ãÄÓôD1+›ö›½ò¼qÏÉ02ø&,¼ŸD|Y±±iŸ@y�¤P|«Ñ ú§Šˆ„rn^}øbT‰ZÝËEÏaËÖEv8TùöfÛöÖññe2Ocî"E[ Ç0™¼¾f‹t»~¥Ž�šÎŒ”}X®!‚²,§Ý`£ʼn'î%ˆü#RÎíônš|4ùp#Rí(Ë/ O‡òë;EpyˆoQfZD$-Æjµë´Y9¢mZ"Èüôì(§ŸÈÖ•1®sG¯úhyž£m´[4óÒ#ün_4!£Àe–§.59z1ÀÇä3Y£›QCŽâBàtðÑ©«ã‹póôî1YFKZD®@óÌ.‡a/‚×p**ؘ¼x9qõNPÔÍÖ�#äÛÞaý\úÝ]Wö?_‡‘U}îXkbŠ»×’ÑŸÞªW_CoQˆrC”";¬ 1Xª¥L?›ßòVûÿ: Æeÿ2Š WrðIçIΉ+šgº� ºòH©œ,¬^ô›€*¼i=A]»a…;†DÐ^à +FôÙ„œ4M‘$ìY’¼qœØ³ãn‚®å�ìê–ùtÎÔ9Dº]ÏÕo|›ßL7ô ¢²4ÚÝ—RäL5Ý„vl$EsRüê3¦Ø/Ÿ_•¾Ì "´óù{�‡ebɺ‡üùº¡’Í³Þ ÿ„G~vê<èsZêEž$Æo¨>¯. H¶óÑASç4ùUû÷R„,À¡~Ò[9ûp� âËuºòG€Î³ØÍM6÷‰oÜ>ÚÞˆú…Ô×WôËpëû«jÐ×EG3*¥ñ$Ŷ‘£À͇dlcFŽË52ââÂ}ŽsÓ&ÎèóÖy÷‹eâ@ro‹SúÖÓ‹ù5ýEh§iœÊ~­cD8ïcä1 ¨ÆöO=3àPx¢g-X$üá+¿6IíT^Ü3=¥Že.ƲØFU§•Ä?e˜¿™äOTÃÃ:Ü´W1 ÁußYC™ãf÷Sõ­cQ¡òG}Æú]¾ìóD¨th ¨w[Ù®¾@ý÷g-Ï»±Z<Ye†7üû�ò÷y"±nÀ}ò ?€8íNÒþVxÑ©²-j/€“…§övIŒ0^â]½'Éä){Ñ%ÔÄ›ü°¥Š=ï µêTdýÍ +ðÇL¦è8Y�*ªÊu<�u'Ì̉Òô+�3[©m_Д�S\ƒf)ýfü7¸Žè|húwâ¥oÍ1Iô"èÏÞþb�×yÝùUžÏƒ9íÆ9EúÛŸáÙz„ãy×E�í¢æªÏL«züPþF1sï´N 7/¬åŦ|�‹Rñ·¸53·8Ф�¤rÁ&ofØð›å>DС‘ùéé§­ÓÚÒ¼P¿Á¡ì+Çh¹\>Dm2DûÁuŒº‹4b´iP¿‰qq�Q¯I¶Ç_™€O˜ƒlfÊH®o×rcƒÒ$�LO1Œ0-’í_oÊÄ M9ýfHøÙ¯×f^èÌÞ�ä—äëÜ@º:¯8H Ú/ºÕ¾ùzî£ymAp‘”C¹PÕæi�d›cí¥‹·£È­ùËÈ“ÓÖgø… „J©EÁWEšjóá=«>+C++=©Öù9ïI�Å1ë*jgO¤XŒ ‰ û~×ÎU�vÎ ëã3®ù âuÏç®é‡Di:±'/5ë/&–jR©2è<Áó�ü»ÿÊÝóÔÎ-3ß1VPN”G*GÖeªM½šmé´+íækìX’Î2ÖŒdaöõ‚�Ê~CNÓXŸuóé;– ð÷Ð*uÎ÷ÿýÿ5ò?{®¥‰Ôè•î�Eß:ì×B‚1JÜÚ.–|µ�â‡oFF­†¾z¤ÇBÏ"í–ŸãÍêŒXÒþâ~DüÙ©¤~ªì¿á>8—XqL{8¿+�_6doAó^3ü¥ïÑFo�P|ýÂêÉrƒ�MŽ„ûDÓ\?TŸã¦ a M c“ñ 1`i;�×NÍÉÊ«KÆ�Tñ¨¡,{áëÒ ;]÷)y]~5xh¾E†.¯¬2΄râ뉎Ÿ*oGsг¾‚á³þÔ©T,8@‹%,pE¢Úfï .ÅWBe?i7Qù½ÊçÓ_M.ï”^-oví1s] `khâ’ñ­’•;ŽzLݤ¥Ñ ÿ[Ûý²=QS?*yÎ:eÓ"EÈ¢©’ñ6®¯Ó¯>° öEØßqν$ '£Ã˜Ï¶·Ýs}-Ú.kß3Es ‘\¢ò�›]à…Ñ"U¬ý§èU#:#ß¿z‘3¢zß&Òž§Ç’�á‚Ù)Áyo)ɧ°âxRg9Ëg�Õˆêþ†…‚9®S×Ê>öØ–ÌÓÂ-2ë§)D eüÎH‡]øás^tð[*³”ÏÏñÃêyªï§DÂÂyŽí¢Øvý¨ÚDZœ|ªŸ¢{ÇìÙ8��VˆÎwºÏ8Jò%²,‡6R;~�›)Ÿ!~¾w.��wm\×§ˆÔl×Çâ8¢›“�zC¢¸©¾ôýsVä¢ýÜ_ƒÇ ¿Ì�âý—ëv¶lñé’}B†º5eNØ ¯*ãvÈrŒŸã^I½x ^UæbqÙ·‡þ‚šHòH.ŽÚ+úMÈDÓO<6Γ<>§ƒ+¶‹ )¹ŽËçF‹% ÊZpiÿÕ·bÝܾxaÝsPNnÈ”IÄìÔÓ2Ðw B2ý ÿ½u;iÊ }uèôíÔÖ_—® ¢× = ?.Ðk+ÑàÓ ÃÛøOfÊAü_ütóIZÜËF…!•qúíeþ³|)R¬{);Çô1ñ/$âÞà�4‡›áÖ�8}¯: O%§²SZ?ȳS¥Å×âx,§¾ÚÈ—�³½öÞùáh¾€â×h}l]¿‰\§•^O„IÑ|4Å‚�}én߯XgWÑ…\G\ø›¾xiÞ5Ž\Ï:Z’d $ÿ"M5™í=zÚgª“¾,zëžœ¯—€¼­žÂµwûÝÏéÍŒ8Qð3Õ¡)6oÊF¦]=°™¿¼Tý’íý:hgS½Ûì,o{WË·îå­x\~!tQÜÖË@çm‚¦íXDà!´{©]ù‚�ñ¥š@¤è§¬-{AI¦ ýFÑÞ HÝ´²ó>LV±n–\ŽyV76–êÞ¤Ö*ñ³:’”ë®~Óoµ²Üël€+kõ"C¢¦4Áîúœ�ü”qÈ b½¤\ÒÆŸ×}\ÄžgG´K&$ÁÙ%Š“:xV%koãu<ä®ÅŠn"5±æÝe±¶ì0W�ƪlZrÆÏS×Oÿ¬gb½Ðªò.w(Þ¢"q¬³âŸ�ÜÂÊcê OœäÊù“V^]¤G©*—i×É0äÍ*œždùIí¼êªÅ ¥ÉD7G"mµ»Ôe‚Õ@xÙð5ôÅH£Î™®âô,":( `»l5ãV�ì%€ùù#+›Ì§9â)DQÂÂME?Ä¿¢�ä²´öo'ý6Þ+)m)Ž7¾�µOawÑ{3﹈ü$u‘sUZpß\?)ë2Ãë�^^ao(á»|VʼŒòÀR¦ëK‚i×öÌ#iŽ5厑y ùÆËJzç¿Ì–ieð%3œ…¯(ê*‡çÌÅ%\ÃÕû²Ñ¯çÙ?JcJàY9Ê~qi,ý^pɾ7&Óç¹l¥ZÙËu²]�tÍÑ´“ò8I µs«+™M~8yG¼0î0_¯Ú˜›kÌ›’åAÞ0Øf"Z}NL­ðk1ˆILrKzd/‘åq¨jl`Q¬Û%)ðÍœçeþ&“LûI{û¿IOÊæ>]õp¸8á#7uʧT¿j;À¦=ÎU;�Ö¥øO¦¯"«è1EU“^vJ#Rޤ_‚º7ìµMÒÈtµ–mx¯F»ÏBº•ÿ\§’ÿN'ñ*ßéf>f¨"MóÓVz=Uíwý‚ý·ñž4á 8ØL [òE¶©´ÿ®ÑþÓS¸ˆ(ÚÙ KË-ú*ødñ^ÀþGÿ_°UÊ/]¿ši±ÇcÀOÅ/ÝËëûTÐãtÓ+bîSóøS•«Ãаïͧ>¾WšF®}öÚC'Å0s…²k2³= éô�+ç¿€/–Ç�_ÚÕ<±ÓZE‹ÈZ6·W(ŽÑ‹BÒ ŽEàä7!¤oöÂ^0�ï‘-Ð<êb¢_úìwlß÷N¡˜Œ ÝÈçýlìÓ·IW!j�‰üÖˆ¶__MÛ+ÌöÔ0z¢a.Æ*_…1šÕ[ѼÞÙÞ”ù'3RËölóÓ~¿'Lºw}¥M:#,±=óº=(�òÄ3£9þV7�‚ØïYÛ¼X®/ÖSo#yEÙö©¾K‹x*`‹`´vL^IoX]ÝkK¸ÓY�õMNTä�Îñgí«=ڤܽù ï±Wè¢];&ÿ‡ím6#b VרߑÏm³¢JËùÛö°{çãùnð¶ ¼�ê­Bþ¯{;K%K÷äøëÕŸêO‰íš=´^‚óý'qø†zÖà•)�¨ç‚A'Û÷ä»0ªØ€K�ˆ‚ƒ�y‚Ó…H­Er¾À›KÓ®¬%ÕZÃI%±�(2h±®~¤òLk;H/M˜ÅC”¹"Pä.óžnkCW_%™Î@_ñ‚iÄ‘>‰V ¼Á­d…&¿A�Ða y°�‡Ÿ1à¤NR]ÁzÙyZØ_¨•‰'ʤIlm�}¢–iБÞƒ¼.åÏ¥æ…TM2jH»F"-ÃØ�QƒmÀ%-àé‘4ñzmo¤¦>)p|�$ë šä cм—tÐiÔ�AWRë—=I‹>Mr3TGý^TškÃ7׫ÞP‰$°�†/*Éà³JþpÒ¬èÌý‰mŒ–§–ÁþšÓ9ôÔ¬F³ŽqЯÛßSÔon7žÊwZHä¦}®±™ÎêX_ŒŸ!þsAk8âGúw¿VÇóÔ>XäßìOŒès¬Œí1äÂÚ§É×Ô-R»»§ˆ8š¢= Ü1«\êö*f{ïêžJÌÒiŽÈc9bù&9Ÿås¢ÅpYMãVjµ´¸ââq¾ÝŽGXÚß·í‰cã(Ñî9øô²qGÓÅfM}Ž÷-øq—Ê~#¬ªý¬góýa×G�s‚{�ÛQ·ëy€èPE>ÑÜÃÙðÍ…t¬�ߟ¥Y·JÊÞ!’u£y’ã·Œb-ÆNÔOXN4$Z?ÔåØAG#hZP¤ÑÝP|Ó°vô0ùÿ4§{ª 1W;E�³9U‘“’‡3ÊÚF+N’Ú’µî'�Ö¨F€_{®!NI,¾ŸÈ¯‹îêßr*{žco«#�¿ ÔATÎ�díº‹6d—¶çáÝÞÔ9Ùi›ê¿¿SîNž2yùm™É{C;t>d{t'7O |ì®íY)?_g*E¸aÑò¶ä©î;EK|±V%ìÒŽGãÓCŸ…æV¡€ƒ5Y\nß*ÿò:Õn�þÚB’›•Š˜±Ðè ß jK$�-)‚ãf^M‡ ñ'Òðâ(á4ãêýãy¼¢g+Mó‡ÿŽ%CÓácù')GVkïl¼µ„E„¨ä æU©„J&ºy<Ðú56S¤N·F=<ò6¢å~ï1èñ¡ø ð°/kl^¥ÈSÙË©2Jt=Ÿ§Ýµý’?¿GÑ«‰L•²Å3�FæÞaÚ%ƒ % ™ÏE¹ØXU×rkôŠDÜàw�ââF2ý�RÂÛ”äÁ¬žñØ´-JWNK{&€ºŠ<É*ðÇ GËWp¢â5¡�Z¿áâ›Z¾#rcFçñÛan4giu~:B›ÔM@r~Wîo¦?…ˆò¶$ù!}r¿pRÞæPàÈ ô¼í5«�(yš|¬œse!“š?ç'®x:,°ý½”£Ÿl�.˧Ýgíyõ^Ö²<ˆºÑq¯ô%Qö]¢›F”©Î€÷²Ø“ä¿jOh•öZ‹“ãM¡m)!«ºÔ"ÅÌ!Œ‘…˜­ö'=ǼêëÓ—¨±+¾Ye�ËçθxSá*i¡·ÑœÆÅ`;}ìTjÇlUís'Y÷£3ØÄEÔ+\ú9OM;ÅùYÂA�7•€ÙRågèÇþ2Žîšp,‹r€‹*@×¼·àv3Á[hp[Út¼Íék¸F{±Fnîá—ºh/]¹ÊǨxºªÆžç_˜RMãª$uæ'¡ ?Ôm×8Ø3Üÿ/æ5šÚ5¨Ëo¦âÓÒW"àil•c+s:8ùí–Á9í¬ƒ„\þ?ì3)µÍˆY²‚§ºiI�¸ÊLõ†ÌÒÖ5uѸó‘ ôs{»ªKãXeGnd«Ì÷š'4‹âÿXšöŸVœmª†“¨>ÁI°-šã?Àäí¨¨Œ…ôyöG”§Ú“@ÚA€ÄÝ3ôCb~¶±L¦¯ &Èfˆ®—¨ ŽW¢Nþ¡šói¨‘+Ú HR™v:}*Xó˜3ìéçg`³Ñ ű¦ /بYgøx<¡B×#X°aÙß™µ‚ÌUË×i¾jrE‚û-ÇfæKc°bø"…øOum ãÃa'ç=¢í|+óë+d_üþ¿ýÏ‘õ•Ný¥¯&~§H”ÒPQbÌ>qqè%c†åV‘7H̯ ÈßßQ!¹†ý5n>§ _L¡ÖKOù¥Ï)¿’–ðì tõXòS/y�^°f‚PIþJO�åFв¹Ïù&SÔ�Œ”×ù¶ç1'…1Öü™1Ô´ˆ–y)½>opÓDèz.*$~¯Ïßúéhzã7�šíUÇç‘p•ûúš¢�wÁ jpòţޢOýðÔû—УdŸÄ4ÇcšCì‘a!šÊØæ—¶›ßX:ŸcD_#Ó î¼ž"[$ñûHòcã+÷ð©†=ú^™ÎôާOµð•βÐYùÅ#d6òÿ�c§0çHBÛ”ã%uŒx¶¡§+‹�—ĈWm׸ÿuõN­çÐ’'è Žé%58‡>³HA¢ÒöÍwÃ\¶g}™ÑB‡ÞGýréh¢pj_йu «qÝ#’?{$}2�Í‚�Á ­„N´±Œí1(d]NÅé¥xÈk¡©É¾Ò¡yçªC¢n…î”щ,ºù C¦öÅ!IýYmUvKÌçñéúÞÐÛ¦q²;…M#¿–±OvD–úšwv�ü ýNužÞž¦zÉÆ#¬Eþw[”ò½kü´¶^…Ÿ,zFÿQ�p¸KX~x€A?M™LðK=E‘!Šþ_öÈmèO€¯�½G¥n zëd8w}Ç1Ù”�ã¢ÿd¿oÇ @©î ߋũñH‹®ÝŒ——ÁÖH#AiÚ�WƒTK*RUhÕb{ÂÒÔq§}Ñ!îÛŨ¤Ÿ¦ô%ƒµ;¶ÌjqƽD˨(K¬ÿè޽¾"$ƒT™ž·Èk�`Ëýƒ½ËTÅ ÷iØ òò— PÀ>˜ð@…ƒ×!†æÃ‹†]ÒúYDmÏÄCýÒ·EÂå/oð¦ÔUÄÏÚªžÁ¯-ªps†½‹/<Ôï:¿Ì!Þ4ÝÔæ”i_Äe ¶¡&s$àãÉX˜è§›\súR…�©{*ÒL¼Ó½ÑÝõ6º¼ò€(]�^ß6àZÞ#­´FÙ—(6:l/Æ×üöSù3oµš÷üÍÉ¿ KéKùEÛ“Xåš�wìßïû‡G/ZÔ�d•iÀ«Úþq꺅¼'ܺM‡ÊÛŸ( ”Ým¥m�/Ëž•ž4û­_¼" ¨§*…¢pO£¿~ÑfÓ÷/ÕÛ¿u>v±Ó_Ïß_ÖýV›þEÑžœhÖ\Ôþ|ž}ýŠòý­ãrœ“Sñê¢!k:%¯addúZä±/´ ‡ŽÅG™~Ãø}¡Såü¥õWT³ OâÀvvÚú‘¤Ã²ëÕ†" öøL Û™�‚vÅ JÑ|â7¯„°$©@°Cþ903F_d‡4¾µg ³=@}ƒ1ÇI†žˆò¡U”‡t‘"ëÃâ'%­£qÁ:XÖJ9zÙñÄçy’.ã…Î1 à×(¥"qª+ݤ!å#ë@›¿LÇ)À–ØNðGrÂ7§S¢årêpèA^‹†Æá†ñó±[à?íŸ4úsÒS˜œUm¤‰üEù!¼Š&&$�=éô«•G?Sð�8ö ëWx»Ó@+ý6}óþ¥1á¢\–Ìe èm)l‚¤:Áç@ú`¹L àνA¼2<,'ˆ³Á–b ‰ ! Ú*s(ïëŠ.]0y¢¬$Éðþ-h®·´–¢ÏØ"Óüð¸YüÓ’ç¬K,Ï~ÙaOhLåâfÅ{ücþV£Š ­:4_£’–ùlèdzèºI0tunj®qAˆsY½ŽŠ�&Cz¹ª­š¦^Ëõ½HÔ¯û‡Jß ô4‹ç̺õ5Òv$Ö{›¯Ø/‚+»d<åÍŠ†ž�ލ> ^—ãbÑ®×ý8LÙ�-X~ÅW¡E�ËÛC²›dÿ­± {é7Ð1°kÞ0¹yÆ J±¯~ær¿Åù´€É¹ñ¥/D¥ý—BUèhZÁ¼éÿóÊ'‰lsÍÁÆ3�…T•�~<¯]ŸM~2ßo²€úÀÍÉ�ït”§Ð/Ñûg}ᾌݲ)êØ“å_[séä_TÎ÷ü?ôQ³h½°ôÑ„+²ŸôÖÈ==E¾ôtÒï›Ó> :®�YÒ§ÿŸÓ'?NûùïQôõšJèÓ±ïÑ;þe›?X¤Ðeg8Ðû¥{ÏÝ:®ÁÑÈ>nq2ú a›ŸÎ®E12ƒ]橉³Ë1j0Ò…"|j:òmKëù´Ï#ÞY‚ýÌÎlÑo�ØÀ2¦ }_ðŽï_®ØÞpãþó&àzëê:ä Êuéçkì.ÁÊ_}«\§S…í͘F°^{�UxB£5eb^úm¿íi,êõL\Ï-­ü•בÇŠQ­�Cñ3ÁµË¯qº³Ø^šyO?>Iïí?½Ûòƒo}Åò•Çaž’‘·þ¿’!´ˆ¸ß£wyoKÝ“Ï�åMß ¯íí5#ήz�…¬ìk•$ªÁë4å�Ìákæ’_¶`õMÓõú⃗ÎÓ¾)/,…‰c¹wväˆíŸòð©0E#mÙ?iܱ›�_ù¡X Ñj4›Í®�4×X×÷trëj²v–rë)œÖKSO©c@o÷jù7Ck{‰Ú=5o)Ff—ëìúmz$DÁ~hôŠ74ÊYDÂQDD\ò•ê^?-Z bšPH¥Lo¹Eñ`Ý .8%(O»™ççÙ1øýüKŸW?�¨g�XÒ‡?œ&$Õ¢�9X˜gêÏøi°|®òÁHv¶Èü"PÞ’CÎQþcQ:"È<œË0ÃMˆRÔf×-bm!ZÇ%a;ûÍ5­­·‹ÅXxLjf„¡�3G… :M~Kº{¿ðu̾4_’íáˆöËŸZcÏ¢~÷ˆtšû®ƒÆj¿?4Wû«‘ûŒžýå§€^Ž €)ö}ÑT�3�ù<.úéø¢Ñ/C°Q7æÛFù±r:~sï.Š2샭þ¢‰¶Žq­Ó¢–žf˜!—\Ïz¾èdû5ý¬‰†(5jØ÷ H⟢0ã©®V\CUâåÙÐ1>±½tMß\҉ሆâSýC[¡îÝ:H‘´-誋3#'O�hš)ÔFÖÛ  ãI ý‹ôÒßZ3KÆÔß1:ضò>¿£B2SòÒÓÎôÁ�è¼Â"Ò¦:-™·÷¦¡ôÖÎ]gK3‡-Á#�é?A·ðàƒ�ΩCƒ/ Ìh #e½—ñû¥ºàŒúÃq>ƃ)ô9u<|I§¦Œ;¬íóØíú×ɹ4Y±ÏµŸšûž29ÊI`äOäØçòümr2è“y'�ÓìIÁ`ö� |B4§…çk`óR{a–6ýúÖ/ó¾ìK=¬‘½/e˜÷ïÉì¹ïM~+A¾Lc¬lÏÍãäRV¾tºnÓ¹Rþƒïù‹Ø¾´1d "‘Äñ¿"­ DùÙúÒufû©¿¢í¼¾íÔõ87‰îtÔKLyMF ;FÛ' ã~è^Ÿï×xð¢¹(¸¨+¹`äÿ>½Í`þÏ©Ç'_ð_gÛCý×וÿ­ñ‡òÙãÀŸ$N×Y”ï’l˜�ðk«�Ëx�Œ# Ïß!Ëâ÷ì0:PæŸ"1ñ™m…ˆŒOýS ƒâiŸ˜vQ`Õâ_XåNíx+—'ñ»ÈÀ ϦÀße¤)µãÿLgÉoíä¸×?ÿÌÎh åï"í÷–·¤¢à+:ŽÞØü.=�i—š–�a¬_?HOd#ìÍdœ°ø=ÑÎ+»G …iW‰‚îÎ:Ó¢!ÿ Ùdq‰D,þ|jÌ9]�¯ò�†´‡CQ'Ñäóuñ~Ë~ðzVOc`ú+Ý;œ o„·†M¹œ_E§uv¸µ”¢ ÿB ¼Rþ¡‹Ñ¸®zŠ(š :Ê;e‰zî•â> {*ƒýFÓ5p�Ñc,²Ø.‘¤ü¸è.žmjK|ƒ©,ÊTcÇ ¬Ü·ÜŽgޤºÕÙè¼ñpzL·„b\âA”>/˜.N¿‰Ú¬)²´Á&ôýË[é®T’m…UÙÿÜtb®Zþ©öŒÎð|‰|3?†byäSx�7�å´Ø…81¯ú áào®_‘ûe8hm5ŽK±K‹w|Æ\ç«m×ÿÀY®“€6ø+©ÝÐ)úåIêgµv‚§+­8L¤Ý$\� ׈�5›ðƾ¢oüRžZAÄåkãó*: ž¨Wêñ—PKKº–ȇÖN°ÿÒ³]ZmÑ!8.9é1‰ô ×åÊ~_¾*K%¿]C¾ï ›Ždxè¤*ˆ%+·ÝHp�éîqa[k&9½ŠZ9!ZÛ3.µe·­jhÌüJ>}Nâ"]Œ€¤6kr:ü¨1xy>ðOM>Æ8Ûè‘â¯$ÔxÞK–èeŒÐ׳{§ ͹µÍ­\]ƒ\ ­|™¯3–4iÆ[ sd¡Zîÿì{|^ú^<õö´ÿØ€) ©Y•½�híó]9R#%/+‘9LONÛ«6[ÚÏB¸öçz[í]�¥Â´Šd½Î³ÀçÚ^éØ]¯o*ù�Î q¼¯òB¡!ÑÓw.º~òék¿ŸŽ…) ôÊ9Ÿ½Æ®·†G?®²ˆÔ&±Fä‰Fäè›gÛ£nîpb×›¦k§o²?+ù—2ÐÈžñm>pvÑm`¼ÚïìXÛÿìíq ùw23z*¬¼^©ïÜÓÙ¾€`Îk_ ÖÓIM1z½Åá·½ö~Ï{"ª&v9¶¯cÅð*àúä²oOO6mjz2ë™gÉöûœî6 RqJo˜§½� _;åÔ"²ÏnïH5ØVŽÎ)6ù¡¨|/Ñamñ<%�盬 2Ö¬î'®s� Æ»AöÆ÷�E­.ë1Øž÷?ò?ê[Àoù°E®ÞØ/»·= mïH‰:.&v'ßzbù 7)Ãñˆß3AîY–OR<X¦à,rÂÐáU¯¬­›Ï>-´×ˆ*ΧŸ™®ÕWã×^œRh„ .Bµ¢y-‹›SÞ¦<ª¹_BwL¸ô3—?àÚ›ä—0 ¬Ó–>$Á/»·ãɘfd êÑî´ñ~žŒU}™W¾9¸‹tºžëÞ:è<èÇDMéU* ~ Á¤E‚÷O°W˜Ñß9 ¸„qf/¿Ž#QÄ<ÃÈ[ª¨A/Óל КPhLÏ\ô¥ŸnQ¦`²˜}]0(Ék¢CˆÇq¶½–Œ®VE#�˜$¬õªÐMië®Z¥ñ¯(m ñ1’Ç“nææjö½žZnma–·ü²ÈuÓã@Cìv0NƒODpyÉݤ4r2·«¸šW<ΟªZ·F{‚ãzý$]�“ñ Ûk«ûQŸöŠx¬c‹´&÷†\¼4ÿÌtU8o�×[�®lœ5oId|Â/e®’ïØ�SûõB¿8ƒÿw~ô>p³HªCûGFþ*\_zÏú�C´‘‡›ôÒ~½_�œ�ü_Úƒ7I©O–_å3q©¥uxÌ]r3Ø{¶†¥+Cù{Zö†·2ƒ?äú°*ôCùÈÝj B”ÿB¨‰jŸ(É2xT‚$6æ“OÍN™¼ê޽3Å÷<6ùüÒ/uÞÅþHøÅÐë�CÜYÅ]|äT†:äóƒzèÑô53Çü„•ÙCYôÅsZem§‹9·"Ùø ú'ãÔ, ›·ÅAZίôâ³|’ç2?,{ÕÆÝo…ÇÈýºn‰Â‚ßKg›Î�qD;žD­m¿JŽÕõEÈ|™L×g¸dù`óB§Ðä+± -‹å“åpxÐ`DÈÆrü­2[;+iT+O äÍû™a oíòô×Þ’ïtPömgùˆÆ§]ÿÒYð;9Jc¾v8­¢ ϨÙÙpg‡iއ9>( •ŽG¸Iþ'ŽV–ha³ÿ9y{=$×/ê.ùå#Æßì™Js/•Rç“„üpL5S Œ|Yñ½ÃËÒð¾ÈÄßõ¸§lut oÖ£T'ÃåÆÄÓðZÈžà®0›/£ºK��“hˆ?oøô6q{WuSrigKnXQû_øLFÿ1ÎÓs9F•Lìûb +Ο<£Ùæu‚¹ô¡ k;öL3VT‹žkµ¯:¿;‰¿•žM*{òÅÈ©4éYªðâæºÒ%˜?)PEÝÏÖ©4C6^¥:$Ô¹œˆ*RZ­à 6u0‰™i/Gë0"ÏÔ×Éf¬¬û/Ïò¿T¦2å]}iž·í}ÿÇxJÕßœÞ)¿F¨ÿþ�RGò´oµí�bqüÐÀˆøI„žEs¥wyJBObØf�{¦úÁ•_þ5ö˜“ßág¿¿`/³‹{UˆÞ±ÐH¹ƒ�„Í:WY$”î)d{Š022 d)^Û·ðŽ‹$ø ¹À81ì­V÷²—5”>ém‘eû=�ÞP?€2T€ÍL…]uuï%¾Nå$XÅOýc¼,ŸwtŸ2_ÿ92~¿zܨ‘ƒjRçe�ol"N&˜4ÃÀA6vú¦g)ŸþÛ%Œ‹G>Š ;eEÉ MèD„µ\'p/“2m7íÑDTì™U%Ûƒñ—EÏGc/;ø›VGRqÏöõ2:©œéèÇ$%¼òiÏ4 O¬Ÿhkp¤Ú|k—8ñ/Ý ø`é®vhÝ"gV¦–öÀĬðy]ñZÑ¢í óÙC溷7Ýl‘“a`§�Ã[P÷†ây¼‰hÈ‘�*W¬{l…远š> ZeúM‡mOÒÚª×S� ' jGkݬ…_ëóRþ_ŽtŸÏÁ†ÍP®Ó†=ïøìx)ðf«ÓRþyºêÚ&-N7¦ý¢´t~s]¥«]�·/6ô8Û8˜NolU‡ÓB;ƒc’4OçÓ‡&pDȚm,˜tÚ2Ùp`#Õ¯ò«â+ôŠú¾“ÿÂÆ™h±R �}Ò‡¬å�¸¡»Tô‰)aXÉAÄ+"—`‡/g„(œzŸéy‹>$Õ»pOècG¢àd4¾<±=m¼Fûa °Š™:ù_xiâjú<{;èá'4Œë‘‘3ÿêçK#B4ÇöúÃ8N}w™ƒèÍ"Î)S‚½ éËŠuÉNM’…_tœ6êbŸj>=ÔO;í /Nº1œª+`vo__ì0©›ÄE«³þ¥ŽÂVÁâó/Ÿ�Tz®€ú:GùoÖ=¿©*¨ãöO›¼Úù&ÀèrŽ/ÕNÛKVÙòŠ4JýlÇî_¯aŸÎ³˜wIÔ yN¢GÍ̈öÓ#j•¢|è´ýTùŠõÈ®m«ý£Ð)eÏšŽ¹{12NåÑÜ=+wèÃSdÕ9€ãHLÑÖ¹�HøMƒN5¾ŸÈ•ÏIÊÁÊ:òÐÍ!Ïsîý?ÐH´:t‚dò¡P,2ó×µN ô­_üÝ?_À`¿=’1¨ýk6|]úéÃgä0_°È]û�ä©’hH&¥$ª’\ÀÙ.ü…ýq� ä‰føÒ¶âü’©Ó¯¢úeåñâ[ýW[ø�ë¡‘ó­_~¥½ó³;7÷ƵÁ?RÒ· ¾‹EîMÑ6¦ `y1ïm7ñí­�Pà: †b»……Ú.ðÝÐi¾¡”²[Í‘5-œJ†QAæ2]Ý“RÚ?Ñ­}CwrZ´Áë„i�ÊS”¥NþÿÈz¿à?(£DõµH¨7?­'Ѧƒ} ’ôºñHÛ/CPN�1j¸Z ô„eFœS{‹©ÐB’úæeA¢ït Læc_s›Ø‡hçfd³L@BA'—|’}]ΰ œ<ŠtË}£4¦œòÖÎPÔz³?±\�0Š�ÿ?ìý;Ìuͳ'U­½Ÿ÷ÌœÉgìImÙ2#�C$„ä ¡#„"³ÈŒK–@@‚4È’AÂ`"[‚™s›„¹çü¿gïU¼ku]~U]½ö~Þïýþ¾Èý}Ï»×¥»ºººn«W­j�‹ìÿ‰OpYŒ‡,>™ð.u/SÒ ˆã¸…úY&Ø�å ;dN!&nýºŒÒ€³Î•Â/èë¤iÙì½oh’h›t'µeŠ|Lü$ï¸'mqÜ×DÞèí?·‡cñ¡�帓d'; ýÒ5¶.Ý*W&vfó'}ëòݺ.XШ™v޳_‰`�¦má„_^ü#¿‘Õ‘dµÝP,«6û2k~öí�3ù¨/¦bñùK¬ôøµTÁ6KÄpMh­7Ë5É8HøuHè«4¿^·C4Ž¥ïµ(†¥pYþ»çùyŸšÖðZÔËÄ7ÖÅgs2;êUCΣ[[ƒ`P÷¶@hAUaßì FÆË”‡ÌjÛ»@‡wôŸHå¸GéÙ¯ÃÿÑ2"‹ŸÃõ75Ê_b‘øfêû¿Zïs´eúE':ÞÈz[ÁÈ3 æÕ]Iwù´%lÏÙÐ9XW š{áŒZ´‰7!¸˜¡†‘ ͸öVd¡~ÃM¶«¦b;rŠVh¡ø›A4Æ®«Ç¯½éQöaø›KێdžñPZ—ñoE© Â;rx=Æ8 Þ‡å6Ô�HQ›¢îìÀr²Ž×rKRfj^œ³o×´‚õ F�ÛӕèӫÕàA}sb¯ž7ÝEXsØ.ÃÞÚvé³qÄ+ï&ìñ÷“çc ¸}PçœÉ\5§õ�9¼á›Ÿ¦œ¯ �ÉÒy©IÑŠQ<ö 4¹ëí!ÈÓ›NXîò+¾ZÙÅwEo‚Ë'{Ží‡ä¡ò¸�¦÷Õ‡§u^¿Ü#^:,��M�!Û¥±°ÿñu*¬�—Ü^,¿Œú{8S‰W ¶‹u§>Óc�¨1üÊ ¦Á–ù±~l—e�PìO(ÆO7g ýmrrU.o”&"ò¯¯ä|7ßmàÍûHÞ!Û–û´c§FJ[$Œ`ʹ/�,úDA�ORÔ –¹º7-màÁS¾B»ß¢¤‡Išvg�é`7Œ?~ÿJ¿=·�¦”Ÿ4¤»ºó3=ÄX»e”¦U1?ÂwI}ËÞG=%Ÿ:ö:±H[�ØKFîÁ#§A û(ú®têøï¼_“‰Ð5DGqé¿Â®|{^3\‘cšy¬HÖiµ_7EFgªç¥pÓÇRO�Áê‹F¾ñ�rœÄk͸d:'ƒzUåH@UôÌçR‡uþÄœNcÆ_¶Ý–á3{ʼnÁÙó>ªÞ¼’M�O)ËL»Ò×Í¢îV\§K,ÜôÅÑìòJæI¢<\kGEïøuo³=)t’É©ªxñtÍw!Vù è:S¾ëò¸Ss ‰æÒµHR¢Ík1²íó]¯·gD!™tÚWúù¸àXï=õù€Õ�ÙÊó¦QpßUž6‹Éj…2ó×w7‹d²Zc;�<âgÕ¨Àˆ?”ölpŠ›ÓEÍô}uz›÷L0™`#3� Ô »q͇·éí¢öÂìºÂ*j×K¨�Õ§ú7Ç{T–m/�sñLØÚ¾‹è¤4>¦CºÈÊSÆv²·î ĬFšÝV…bnômã |†7_Ê–OÎÇ503¶ÇÙ{’C…oÕGœ”S’,E½ÀºNž+[ÿ2Kéêó•OM¨Èí`¸î~ìj³7éåË.ß�VÌzc]¦õ²+Þ›-ŸÜÞÔWSÅÞ”òPDïþ©�\â¸M9ÿÈüqƒÅÐ#?@6Uì0È9$ÿ°-ˆFÜé9BåÂ%¸"�`~O$FS ¶¤{³ùr $RC¨×…º×EEWï×¶_PJº9ùuþÇ€(…²OF8Äb¢ÒD }R©øë*ÈÉèÈ<øª�üU›zdH %B8�è(7E€×:1ª×„fs‡ˆú¼J~Ùçw&²ñ°ÕëÞ(9Š·\«¿¯B¿ªTbÙ5RÈ¿�ßÏ VØtËÓx�®†’ý"iQ–¼gºžY„»:ö×Q¥\=Ìc[<ÿµórÕâüãÀfØIqáu¦·4´Ôi‹\œCowo6�§øÌŒš^õÁ=+A‡»?xIã�9t½Ï ÛõSæù½²ÌŸ[埊´)þuF±ï„¶§ë¯Ó ÝÏ#ˆ¾W4oåŸa,ʤ¹Áh¿dÛˆ3+ËÕi€»Ýq9¯°aqí‘DO:¶¦=QØÔá›4 T”ìm‚RÇÑ™KTùFC” žû²j¡£ 0‚~ ¾¨0x’A&J°S¡„x²ûÇ_Y”û‡©aôøõ>x¾=õ‹) º ß7ÿfœço^`¬ç%βæÇÐçCn]ÄÊÑ_‚,I¯µpe¬i’¨0Cºf=ò 4Ê¿!VmxTNÝÕ…ëªP⑽|Éév­+¨õx×%}åÒh¯ž¦K`.&"L3›¡ô�_ô¡ Ã/ˆ¥8TmYI ‰¥Õ%]×´cÛ8Gn^—Â?(ÿEÜÝ<@!·4É¿týƒ”ø¥q¼W²NÈ‹HJØ Üwû/Pm¼yÆŠéÖBn–tçö7áF‰ü>†¤—ÒlKÒ¶1Ö•bBjLoùmöü¿¨fSŠIõeUM'ÕŒf“§.µb\céåurÿ±�z�ò°Ñþ Qv%…9&úÚW+oÐøWÕÿ­‹¼¼Æ�¿øC‡ÿ¢NÆÇÌlñ Äy!œ"¸æF‘Ën•º›(}{:sLÛ©h»-3øC¯ßoœP#´wøÞ§q®š€ûX’Ý?5bñ¦¹úc�èñËÐ,"ÎrŽYžÄ¸…L�ýxa·Üo“ >Ïïzÿq›ïMÀ€ž¶[ë§ÖÝ>Uèod»[¹’™F~¹�vŸ4Etb—Ïñ(7�°Tü ¬>àoçcîLqg÷Âvóu1Ï"ÏË"ØÎ]‚Œ;q‘P#PnB\’;5!ˆWsýíz>GÄåíüåƒïN,’ÓøLùø®9¦WXjñœy g±KìdLVç/§Ý�ÈÊqúô»¢�úˆ‰ßu||YwžG›Ñ49^ôMH͉)iÖ“U³�T)»ùŽÝ¨¿óÖ±­ò!#7}Q¡zC0×Ü— ˬž¦T;ŠíN¾Õá4�Wg “´½ÈYh|v[½qz³ø¼ ~¾¨Þõ„j¶€tÚo8Ù´‹,ÞJ.¶e_p~‰8�?H!«ztúÔˆ³¬J¶ƒ�üö¶nâeZæŠoâM¶i…_Í/à¶h÷ó°ì›2nÇL²Òé�Iþ�ï�²/tžõ‘v¡¥¢;æ¶\ñ«C¦ É)x§<"«#é”LþÐg™ØÕ‚Œäh€‹õÂ2äþŒ�/"6ñÞiúû]Mc—s‹½–háÿ€þƒqËj¾±MéßÇŽ�€ž˜®\»_Æ}î.±«Ÿ=•LQ¤È�HÉt`ÐË+zV U°Mgôú½>¬së¡Eçß®ÊMí<~™ÐèPiæ+Ý–¢+sÎj||®SŒ£$h¦Ç.—{D²ÚçÍ)-ä³èÃ3òëô77šÁ…1Ü/ªåOšénÁöìmpE‚Õw¿Ÿw¯�œãhË$Q™•PßÌÚu;XS3:¢¢PÏ£¸+)à@¯„Ü¢¦Ï²=eÏ©ú†üŸ§FØ+ù»~žÔ—íz~wDŽÆ¸Õxä¯whÆï¸¼Ïó9s=Ô«»F·e¥ rñ5¨"“p”zkNHÙe]OºnEý"Ôó¢fÓÕŸâÁвò $¸éÛ{ûsè�Û;@ƒJo�”ï Í("çž#k"Ýc`�»î-ðÜG$ßÝø6Œõ©L¿îÈCïî)îºë»ìÍn牧pðoúøõ\DÐÝíÃ&�dÝë^˜kó¬×­L (®Yà^lÍn_„èãÑ*R°�è‹ò¡ôÿ¼ïŠ®(º�¤0�ÏÏ‘F>öHyýþ…"º+ûiEê7öY‰—1«2ÊU$û|ÊŸI`ÜŒÜo‚O„Ë»Ò8)úªs6°/ý¿8pV >s)Rý²þ\¤üVè ½Ø*»á0¯ða0Þ‚¹nìÁaLhÊ7HäÎØÕŠz7·ƒ¼ã­.¬Ò&xƒ'ˆÁ©P\ùHºF6Ç<\¹ÍàL±çç¬7‚þ;ª¦9¸(JU=U¬âü�Úüp:—w5ÑWKÓ7–íUÇí…4�’­Ë¶¼Û»ÓrBø/4á¾ùû%ë‚yù>¹?5F›¯L}¿­�ŠŽvÚTž\ ?TñžäB@‹ªC*8·?bA—�äþ_ÕÌ~»‚ó÷b¬‚sú{õ£yÿò[óý%¼ôOçWa?/Ù t,&Ty—ÿ0˜Œu­"°5`ç1 ræÃ�ó"C³½:�Ôv°1ðv6�jP¡S.Š«ÚEbÊ‹]p]é õZ�òg{ääšœÅrÊ8üˆÒ‚O“û Ìà:ßtøC?Fgj~ÙþAY¢†Ö”å†.ÐdâÕÄSµ=èZ@;úN Ÿæ"ô>ƒ" ðCÈ"Üxª+(_Þ£9ŸáQ*üƒ=ÁóˆýÚâÇ Môg Û¯Vÿ±Ž z€Z:¿{¡±Š¸M gñ™Û‘”9¸,È_îÆ¥ZÞWïU~füFU -šÙËIÉ—,ª³+ìð3§¯T@FRyKÚ¬zH¯ÅE7–e;'pp`"%Ÿ6"çbôî»ËÏÀ0EE»& Oª8}© ü¬i�=tü•;¥‰º»Ö·:²FÏúBÚJ‡?Ô-¸×»µÕWĉd'¬’g­§)»0€’ü‹²glüuê}†èOf)I�b8{“‹Pu[‘ÿwK}G×*·„Hsÿ«¬üFùu çÖïèçwèö®ôz�c.- Ó×¾ÙO»;Ê,"¾ÜkܦwÏœlÇš±¤*Ø× Œ«�ÏûÉœrD–aweàãʹ‚i+Ö'œ37Öq 9ܸàJDÊhÓ—cw�h‹†‘�”|;|fùr4Ç™DÔB-g]Ë÷#ñvS<òDwY~Z¼EnÃËàk®/yæÚ¢)×ìtÏUu_½oŸ[àÈÁ”#õ€h¤î�£ÂÎãÍé&“G3ŠårÜÆÊwÝy˜\Ð6ÞvMˆ7�Ô´IʦçÜÕõì{£úéx]DrwÇú¸‚ŸÛ„CëósÉûØ7¿6yyÒ[5lÞbòêd~ןùÁkõ°oyóÍ$oúðY"[=YÁÖö³Ò·†óCï‹JõNã@Ô±ôМžç›Ë“.úF›1'­s6lš|q_DB_ ³„•œÏ±;Úù ëìÏÚ7¹¦/˜ß~>UÞÛBã ‹CßT¾ž `ý¾Šèscnú�ÂZЂ>€xD[ïžE_ѽãí[Ù[#�Úü|x]ôÓ±åmŒG$ñ•u­öð*Bñ+ÞÍÂYêÄàËåxáñÔT£_�7¥·ËqåÉ×]ÐUrä_U€†ƒ©9~X#q,º[žùáÙpÔ9®|w¼Ý¾Á+ãÒGÈ?“³¢¹€ÂÓMÖ†ü!yÖ®×rÊÏs‹p9@ãoŠ€tòNÀ‹”O0’êT?€7®ó�0 ÇjsU™¡–«Nê1ù¹û“ zé_zë~·Rwžð™{§Ëëõ]åºæBÚÏaÄÃà�áŸï¦ÿ«,"ÿQ‘'GvM+Ÿ®§zß#Y¼piªòbzÂøÓºÃ9ï40²œ[¨£IéªÝ$CŽ7"xº¹‚Yäª+ñsðÇfAú7QÂݰòÖõ^q IϦ8O;År³�x"& 8ìº{ð¶o‰ÏÏ-¾ÃÜöŽïZœ}2écä™C…Û¾D™tSûó”›Ë�€N9÷CbÎÏ(°(&ø<êÂWø\¿é¸þaà‚XÜu:òРã©'UŸV˜û6®ù÷‚ªO>5'÷�oÉ ‘ŒNÒœw¦ñ�’Ô1­aí%‡ä‡ òƒà S÷{üqð ¯;B ¸z\Æ:Ðí²Xäâ¶¿&Î;.w÷x”Š>¾Hó˜>ë:koîèÑ…t_3�B€€ #2˃;b6DÍצ›Bu}2E�…¦ÑZ=0�þ`/îxúBB©{>PLVËik±Ç³U]�·>®‘âc´²ôºsÛ�Π§Ðl®êµÕ|«þT,Žã�ìÍkô-ŽïˆäƒqV¼ÅèZp*äõŽù¡ÄJsó%îÕ¸Ë4Vë!ÆÈÃÇÛ×@ñÊuo¡¹ÍžY±J¥o}·(yP‰?®±ºŽ%¢:§‚2!qM ¿º˜idÙB¡ÿVÙµ¥ò§˜2 ¥–í˜ ÐüÒÄ#Í/é| ‡»z tíÏë/«Ë~꯼ßöÝRaNs!MÔŸõ:8Aм%ÕKçÿ eaKŠ8|�S¹q¦)ƒ�ÝJpþ~?qþgàqxüê©M¸üSR üêãâð—Ïš_«Ÿ[€0£ae.»Žl¸+¾¦"ëU‰˜\Ûeô>õž±¹`=‚¯utàÑ´pŠ9ÄŠ"À1Q#§40duz@éèTí[âc�s†ˆ_àc=–ä'ºjH¤çB£2Ž4FœŠºÉ%šœ¯®ÔëÌi~ç‡ÊÚhÅðÜKÆŸÁ‡1².µ”¤ûÙó¿–x�·^§L¯òS™Le^L5 ÈÔé~}øç¶-Ï òS3¹ŽH=¹†!Ì FDp§”BÖ³T  ú”4ß‹y<Ý1^c®NÊáÞáŒ*Ã!òtËU:Ù‚™õ�¿ 0€Úrêƒe¡“©^[ô4—P½j�w‹4Ï-ñ"ƒŠŽâtÙŸGïŒzy‘Éd1Ÿ7Ø`§ �4‡@¤}† ´>O™ºçÅ©$?–ÂÖ-Ûõ÷òs›$ èðÒHAµ¼N¼C}:$jýúæù?WË Ë>u|'/þÙ5·�&¶L…›!³³ŸšaüŒ"Ws·l„MzäcnîÕÞ&�´¨ƒçk”®õEjSTf½†ç"=~¦ºNþå8¦‚4#Ù 2Ý6Í•£!²¾{ôNä/œ#RMÀ­��¥�÷é7�‹À2Þ³Ýv-RMm‚ƒ"ÿäë×x–Ca‡\�©Øüè|ÞJ¤äC¯ßŸ4«Ý¢ ÏËœ£w)4-"¹<Ùn¢ùU¼ÜÆ«þ¼å>L¿<%+¾ª#I½]*þ0.ÏÍòÜæ6g=�ÈeË]¤¿¾» 캈tÜŒ‡U ŸŒè-¼}7Õ=ÓÞ¦÷Và•Wlñ1?/ÆG4=HbYÈ{ ‹-²hô8ô~ä|:ËnΚ«V-æ‚ /æ[“�`¤ôÑŸíz»[&Ó…>D€+MÓ±ÆÇúãfwøŠ,TY™:]ÈÁxˆ¦{Wó£�å½õpÚ¶ÙŠ{}œGRûÉsdß$WødæuõÇo©gdÛÈum ~Óœ`¿iÑðFý‘†¨üj»ÕïÏ™�±�©OÊpÏðE’¦¾eÒ)b •Ú*^;<ÀŸã†ù9¯Û®¾ãK –2/èÿ àà ŽMñ•;—¹Rü„hŽXÕ\}çFþ^ƒôÒðÑü ˳$m+uN¸„(Ûý™ n_º<_*õÊøÕÇA}ç»0âõyÿ":.÷“(µ©G2¶‘‘™‡ïâ¹2 ª ×eˆ-Ëá‹qÛ4,hEò¼z®¸-ç\²!†Ðp)sÞ÷Uµ!øtBÛq+ç1$š—Z[ÝA¥2½îrØû6Zwôºœ]Aä¤ß°"Í2_ZuMÆ={îÛ "Q‰&T]ìÀøva£vSÿãñ„¯«$¾æÚU¿oº»ª/ÿ¨ÎzNòL1 þešå%®þ*ú…Íí9vwÝoêø»?b¹wÂhfë1}Gq’qó<ðzZ„ªŽe+dŒó*¤LóÕmZ oÐð2c÷bô>c׈À&Þ ä5Yãçö»QÈxorW¿“,¦.f¾Ÿî¡Ý`Zà:÷9xuþNõÍm]—ç8Q…|¿ø´ÝaY²Ùòíµ%g»ŠíÔh‡\�_KÁ×;ͱîùÛ ]ã»õ꼨?oíêãi–­sÕaàc˜u9 ¨½iêžõÙ]Ÿ¯7óË« ÒCª¯Ìý©õ¬Û�øa¹üÐVv*«aáS¾Dò|úsºíRÃ=—�8ÃŒŒ:¯æFß¡ade’‰% J¢^m7ħ,x¸¤õ'D½î�€4>†Ox)«…�»LøÕ:éºÄ�ˆÔå(-þi_g;i ogèr¦ñ ÀT2æPä<_ï•jÄÂÝ9Tò¡rnï2:ï ¦C„æ7q^óü´ó¯gÕ/’¿nzTùÑU öÝ«[€¥Åƒð´[úCåÁÐ_žÍˆ\Hú�ÍÕШXÓ*öÜ § ]àè=įçœ{ù1ø•Ù¨žÕh)ÿS¿«zW¥Å}!1_½ìOfù¿¤¡¬%d:w¥eLfHÿ ä)`þ,ž:JÑu_Be«5^�,/ MºñН:Yhu…éí]€§7Jí·Ó]B3Ï%àk<ò^D Дñx 5šeç¤C ~— ž•.¥¬ƒ”æÚì­,æ¤ò^å@‰™Šá0œt™ø¼UþäIe2â�ãp»a× ½«{X�ÀÑl£7­}Н߳AWD¡ü´ˆôáÌ·ÈÇ[݉o€¶Åê® —EdNM |\8H|jt�¸à‡c„›<€Ì³õá½z}š\SŠÏLÑqÇó$ë½t@�núçh+ïh¸p•ÍaÌiæöy,X7�}=·9š±ÂY�—à+ÃQúª«H(™ê•:xƒ³¸«st­¼¼VÁ+š­Š\œQ r‚¶¯—â2ƒ¾qîà OÖ�_õLñ¬(ËVNB.9Mr‚·ÆgM;žúŽÉš é3]è¹"ÿ'*!sƒløªÐr²ù2*¨qžz5\¤`ÊPƒÒ1·#cBZçgl¤µÔÖ“_ 79 ·võ·õœw·Áˆ,¿hý�Ôg`«N�î:ê»rz�tÀÿ<èôÜxv~Oºè‘¾·È.yf5ìî(‡:Oç�›^{šñ¡…rÛA ˆçN‘Í ›0ìdl6Æ£‘büA]éx%h–뜿;äŒSîN9 óþIrdÚ:pÏ>7>ïydõøZîº�ßë<­rÏéXôUÆ™ªóœ ¿Æå›òÆ3�=ñ²Èº�â-ټ贳]Ç$”–u‹uýšER>4�ÓC.¥sÖ]•Ä"ÙÐdL›±ê€ô7ç^ˆ¶…cëƒw}Õ¸*æC#Tï×ó8áç»+�,"±n?ehûîãUŸ)Z¡É¶‹ðv›' …橊♳ü7sEŽNç¹}U¦¹© N×RÚy�B’áàä}SPýüÂfÍ_+ \-"Fâ_Ð'^p®Ä}±snÚI/ /ÅÆ�ß‚çWçóG‹Ú_ß5Ï"¬pþN´ªî šW¤ÞëÏáµ·k„àŠ‚�&$š&¸ò uìVŒ“Izœ'燂w}™ÏF¿¬óé ÖÆ^½>a÷4®’vÛŠ÷¸Óò…‡ázÃyuÄ þ‰Ÿâ¸9Ƈøžrgx ÍÎ>^CYÂë¶;x£gPøÎyæât¨Ïû�24°;Ö�í#²ÄêìÙ±$Ë?�†f6kÔ*Ò³ ‹ð5B.%Ƕûm'Zß“Qþº2ߟ}Ë9�K 8‰m£�IõµM»ynD#Gù�ETÝ›�ª9#M¾Kó!Õ÷äW‹9ÆJ’5ãÓF�÷ê”è?Ý·!ÿSÎÝÌ0qgA'-Û!'B#" ª;9‹�A½Ï öÑñiÂ7½�erª�ê3§uîz £Þ†00Žh¦Ô˜�Ýk3¯ìeR_xÑ>L³ëWɽ&¤°~O@ãËùeÁ$›ÙNóÏ ô(Ñæì_ÌdþçÓ _�¾;ãçžÙt[ ƒÞ+™c9]qzyá�¨hStÞ4н¤)ÿ@ðEÍ;‘Ú Í_Žßmb—ë"º„Ô°ç³›òÎÃÕÊNὓ÷ÙùëŸE:ÞÆ„m8$� ífðT°ŸåeY2cåZ†G¯\®ÖE2úíº¾ã_h¾YvÕ¿–óÿXw9åoËÊÉ ÖÔÙ¯ òWËgwÈĹËîq _øÙš·­XEÝ�Ù÷H°iÐýЗhĠɹ?æ[dôM&ëœ%÷ß""íK²:¸n°«:ءɓֱˆ`IävM›Ù‡Kš ú~Šiîì͹ëq–ñ¾¢2)âÏoÀ³Ff •kˇ�ô+AëÒׯ8û½E;…NrÞ�3Eð 5Ê úi4«¶ÅOD£±N|Ì©1óZè9·.4k®Á æL¸éõ*ØVq‰ÞÓ¦XÇáȬ0 ­Ö# r}™2Óoª}ˆÏ�™®Ì|ŸÇÒ×ñF}Ô2†j™rÒúeé˜Óú›àHX´öþU?¼®ëã¼¾G”çôªky'ãA|à¦F‰OBûÅ~º~_8¿¯K‡òw»j€hÉÕñ-ÎUa€§ø5ô™FäüGáÔÁJmø£8óäñå_“‡Uù©´¢Ð¿Wãêìó’+~: =XçoÅïfWˆ©ËeÔå‹uO%©�ëêºøç<͹zzú怋‹„ XÔ…2Åÿ¤1íîz¼È^§×P-u„Pq8ürŒ»À7œ¤ÓœÛè=oÍ0ǸP�hXõ\K²�ýb}ÉóÙ< Í¤� V°_Îäv{ÖˆKê·ØÎ÷¤ÞãEý™¿óqgx„Zšq×''(Ñ>àrºÎ¥N÷U¼ßˆXÊw[맦2ã‚þô!†»,ø—›9ãy1‚)ÇâÚ Žêºi ñ< Bz_�§St´¼Ö‘2õ¥Ïûõ…ˆùO|…}Núª S<�Åq)±Ã‘ÀøCÑ�‰{ì´9¯¾Ösð™',PÃç‹K{Š¡ ™s‰æÍá‘?&uº¢-B羚Çô,]P�ùØÄ-�XŒ©²P÷¨[¬ÍmRÝ,ÓŸ,‡ ÀmEˆB=.éŽlŸ¢4€Z‡ÊýÊôx]Ö_#:�?ÿ£éý÷ãÊó[R´u3ËpøôÈsNi›#7rg]ÞºsFÒ¶¬zŒû¢+²žëeKöÇyá©Ç÷¸�r„ôAúÅ$ëî›üHõŽ]{\ma»¾ê+4ÏáöŒ{E~Gõ]¿ÆßrÄ‘¿‹¼�7�DZŠ_Ï”R..î¶ó_Žê¿‹{vT X÷Èx.°[ðyý½ÜgŽ(Ð0à`,L¹ß´þ£àöÔÅd»oo"”·<2ÒrBn¯ñ:1¸ë›ïÇÖŠLå¼–©äï³ÊÛØo‡q®$ÊÓHüò1pú¦p›îj½ë­ú&ÃvgÛ%ásD® Ⱥk±ælÛoÚÏÓèœwkM^yæÈKX…û^)7W`¨¥�㚤Aå€sd?T®îš#Ñ"ñ<ÂO+ZoÈÅ2˜¼Nʈ¾´Èfu· _:ÿ¦<7ª6÷ûN9ëÁ@�y¹©yÚo¯ÛJáÚó®µsÈÐ˜ÞOêÆìà‹8¤¾$쉽ºªmÐ+žKñóvZÜ•qæíîj7iÄ–¹Õ¡Óƒ\gݶVp×ÕÕBŒç�‚‘Õ‹ DÕ³¨‹7©n¹OÈ:_ǯ+‹sUØs©ÂnÒ6oæ4 Cy¸|»cî7‚ä)v­�+óIçxÓE}«‡$+ôMúÉlj€ú6ºYx>ß\Ÿó¿mùYÅdq'qâù³ÂôƒU¦éc|¤÷wˆ?a—ݶ}Î6½l/‰7…Š!”TüÌŽçºyÈsÒ‹d õX’îŸ9‹Nu9ôeÀçÜ¿G´Ñ#õëó±-ú®õCÎZuE¤Œ!0âRMÇC奥æó­-ü½Ú–ªNñk2üÑq±Ñ ÚEÒ¢q]Š•÷Ø#ºf^Ãç»PU9åAU™¸Þ’ÍÖ™&o÷_ÔŒ—¥Ü'Í›N¿]jn\Óªáˆ|ñ6\ÉøŒÇ¿Co�¹Þžc^vÕ—[á3PùIloj‡ŸúVS„�ÇöÆ…‹0Ÿ×ëÆ6`ÎÑfjоïxÿþ©þå] �mÁ{ýõ¸¸§¬�?RžG|—ñ;SœÂº*ß|S½¯×GêO\¡†ãœ§§£ÊºLoK$jáѼ 6»aíûݯõò±\Ük¯-†g°d]`¨r+míDhÆ ÄYÌ„>�í Êí Æ´D-¡ %Ï Î7FïÍc~ ¯Ö¾ptßÃ�Cšp«ç6ìôÐ ¼Å^O¡Stçqp Ç2áoÆ>]³†0{ ‰õU8×|ÅL´Ež­|˜õEÈ—ÿ2%aaèÈ �¥2¾�ª™=21±?"¡¸¼h+(eu¿¨Ï’(£àtþjŸÏzMÃ$ÿ”ôʃY1EÔxļŽw§¨ª~�ÓËŠ¹�ñ•À=ó>œ·^ÑU7’]«¿fÝ6”UíB[YD³hf·W¿Px�Ϥ¿Pï‰Ì¿vßjªž¬ÎíâøGJØú×%éñ�tÜÄÃU�qmß%j@à…Ç\Ï™é(ðº^Ë<ڻꂹq1…úTÆHÒød`‡¬>uü9ã‘W h&²s½�.§ H‹¤[?´å`ñ)É{²�H@¤ÓJ÷‹N¡ù84á‘áÌ\Í“®çRU ¼Â£Ë‚}ÊEežû] üæöï‡/.pœ¢)ŠÎø7óÍ8 I˜äÇÀÍ•Öc¥ù^§ïðžÇ13Åxebê2÷õ!£”̧<³Ã$äsÛȪ˜Ü,ÛÐI³òï:_h²Õ†‹+ƒ×�sÓs%€Úæ|rþåX¢²¶RýíÑ}ɯ=C”u©¡=É1â×Ë?>�:¶Ì¹¦ù h‡(údä X8º±§ {쓽ÖBï'zö¥jûe¼Vžÿ³üç—ùGÀú=˜ î1­ø¢ @ýdÿ"¥gÍ•yë¾f;�l1ÅóÕy÷ÀGI¶ùÔÄ­tWÉ–ºä Ê^úteŽ–¥ër5¿<ÓŠWu/ÊäRû˜CÎ}‘S'3=bI1Ùa¾pºB'Õ‹¶­G�Vâ?É/ÖM_ v¸€ñkzú‘¼ÀÿêýÉÏ"ZÙ2þüó?×(bËy ð£Æ>˜ëöO ÛãTûçS•Æè\|·Ù9çÕÙþCû³7L{ÇR«ÑC±Í,eDìÙ®¢G$ÓPš ì›.™Zn¸#WÚm ´úÖ£=4ÔÍOWÇŽØÿ}kdQü!ãû?O͹µi®¹›Mö�RN¸s`áôæÎ$t‘½qÝ,,Z|ޑ΋Ç<«òÞîùMîvÛ–ÝÝ÷óîC:Ï·±;³<ŸáŠB>.l¶*°c¢ 1}ˆI‘¦¯&é1€¿)~ÏÕHÕÑ—ÑΤú"§Ûï¡oPî{šƒ+rq>>_y�ìÓá}¨KÕ_7�}jhqÍ}©IU<€F„òS#'•/™Þ‹ÝD†w‹´cžÌý›Þ¾myÎýØ,›¡ÈËj¾ëö_oàŽç¾K|]5c¹ƒ!>oƒÝGTøwÅ£\ðöÈFO®¤¿z/ppñÍ΃" Íû°ÓBµ?ŽŸv¬¡_2`y_†¸Â5ô£VwgºÃµdÜO»ØšýìuŸŠy‚©t?ÍSÕ� ¤†*½©íð´¦qkzÓªº×ÛÍ#7–ûR¥)»ßg}[k¿[º±®êD¼] ÈþEŠç˜Ü�î¤s5.o۠ǾÀgsÚúÈ3Ϧö\P'Ùáé¯Ù.¸vY#îTyðý÷¦/�pB½:ÏÍñµy)³–ÙÕ•/§À#¯8�Kòv½71ˆî�mõkç–ëv¤ÀæïjVùÓîS?ÖÔßÊ–#:Þ¤±=+šx{ñ\‰±™sn ú% ?ÌoÒõ‚mÖ[ÈÝV6ÛM¶ì½käë GÄ“÷«[.-Êï¼£N•¤29ÎÝfyÌ®¤ª‡7ýÂm¿Øüº Œñ)ü›Žç™ì$ ð¢Ø_Ïm¥ÅüñÇæó�¤ÄÐå@ç¼/~:î›ù×ù<ŸÑ]°œ„�Æg©9‘ ãrª=~"Ý+© ^˜kÿPÊsõ»ÑUWžš\;ÚJÈò¦9áŸßô¾©¹Á·šÅ:Í‚ø¥¦è÷œ¤ÖN:²WØðÍ�Úýå,ÜÉ!&'ØÅTÚHÓÖ£!\pì°‰u4ÞS!Y\x‡ý+«3¿ÑNÚ×}ÚD™Mâ¦ÍB÷å~ÜèYE «Œ•òíù &ÜLÃÛ1g_Zˆ0J“ë}Z¼ (CWs× iQ¯;ÛÆ BÀ@ÿåˆ\—¸Îå¤JœäkøN& ³��zÉíc³¨×1ÆÐYìsÌ-¦™‡ª>\ît9æÙç[´Œör²ŽÑ³ûõ§êN 2蜾�¼¸¶y¡’ !è0ü;oó|í+u[bn€µg§–êq®pý î+òù¼ÛIéçå¼Pà\�‘Þü޶~§˜ØÇEõvAÅx‚žmåòGP-}Ø_¥ÏO*|qM*ÿWy|5?€+¿Û¦ÅçýÏÚtXÛCAÅ lxñ¡…2•d¯Uô'Á«>~áõKi¬ëíü�ó¯Pc«¯Áð%\׉ÎBT¼©íñPj[òöknèq¥cV´Ñ2ùIµŽ4}ÔsÉý™ýe€'h§ƒît‹´Y•ˆZ:@ûˆ�ÈpŸj(¨>ÇUY].W8µLEYÁÅnDÍý šäÏ#w&¹¨sZi·"~…Së2@ 0QêÓ›é\˜ŸÖñ8aÛLcžê6ö�)fÁŽyî'-Ð|ÿu©¼E¡—¨‰¶mŸ8£æ:äVþß±—¥†Ä5ãM‡�Ó“t€B:¯ñ,>B }Tx‚ˆV‘ª Ú[8£™�¡"[*}ù=ï ~ó ûç’ZxÂ�)è‹cåÔÑd`‘ FgNó—ŒUÕ¦~ºü…Føö|oüòº”öàóHtµËNìÀ…,Ô“n\¿Òs¥ µ—ZhC+2ü&åJ£™¯Ç1Þ’¢ª±NPmM¶…f³Xü¦¥)©æ¡ž 5:£³M©p®ê!î]¹biîOçg¬ƒþûãÏÿ\R�Åb„‡&—uÑÈ9–Ø�´vržêœñ"0¢ËÂg³HÌ•q(»}ÚmDFñ§F4íŠçÝ"×4ÂÁr&C$þqu×~>ôÍósÚëÊ7}ÓþË�:†ö6•9ý¦ÂáüfŒ-òÇrœ�­J)>Y3}{ÖÛt`Íñfx§¨Mè?¯ôQÉaÆKÑ(q9_ŠÆ³:›Fz¤�æìyZN7!Œ´H7ò]tüU„÷>úÓù¸�H)ÑÝ`¹ã«ô°bÉ:JîœþwúüÑàOþ%ç¸`I\’¨@ÇÝ9^§zÏ" ï{ÌÙq~‹Êg;�ªo‹úwøl»¿Ú-"%¸l„óu Ù8437’PwÝ­\uQ¦.ÔÔû¸(òNéäï�9Åc×Ћ�lWð²ëZ�Ì*‘IrSýö´ÈÉÚÀD�¦·mÏömÍ@?R,'WÚå”'º‰Ž›]¾Á8Z›£\ä¶»‚»ZÕ]”>ˆ€¨›Þ-û|#·èÉš#Y ¿Ê‘Tß”1Q¿æVy¼ð*<À ü¨/ELRÊ‚ÞÙF<âäu¤Â°{•W.Už^]G\VxYû®m‰ÜsеJî×äÂ_*/ˆßꘊûB›Ÿʬ�:=uüÙ®½Š ò´‚²7¸«š;l·—r†—&“:F‚˜Ìð"çJzåânU$§Šî/‹ú/ůª÷Ã�yEãŽÞŪ¥—`¯Ž’vGzÚª' ¼צ7õ‹‡1ÍBÝÂñºHt¢¹!ƒüÌ= ¿W…ä¢ÿ”C[vp¢ÆØlRyë ~r»E#†%ƒCÿ¯Ú‹œÙpWëhê¸:�-u-´Ê_Ì`ÿ”ê³îþ(7ógfZ¥"M—S‰¯\Ì¿V©Us.¶«ŽÛd»[ýÿl“¤06úcþû%Q™‘¾D¶`ƒ‹“ç=ÕO˜¸Ž?ÍŽÊ›ì+ù'€4M°$âYo<ÓùÔ’J°DW.1ͳ€®¡¹ßÔS¶Ï³½Ö/'D–}œZWïï[æ©ÈáMÍè„ìiáf»–kñøÀ@âyi_p Í¯ÒÉÝ ­Þ¡Î [Ⱥ;µøKV@¯ ÷(ú ÝíqÌýÔ�о2DèÕÅ»³wû"mß§Î�ÿžJ‡Û“ó]�«šËÑͼ†bµüyŽ×¢GNÚ]õ›°F š<ßUß=vW‘É¢ '±Å¤$Úb‘Š÷ÛÐã¿ü~à~/WæÓŨéÂdòüåÔlâܧ¯í ù¶ËVnDå§MÇÆ±ux1ë‡ßåá 9¹Çë„g»ß Б¿)Åp9~ªÿu/² –ôR#:'½ãŒ1®=Ƨ¶uÈ^—óÉco´k‰1Êæ ‚#Š ç"ð/Œ·x�ðèž…6¢»¶„ª5gÌé� UJ´eŽÜ*WÐßpâÛr03LÄ…*Íh½Ÿè"ïE† QléJ³�O2!p¬ø€ª2ׂ²Ï®ò4ö�Wï�þª8Içœã �LFަ·dY€r£ÒŽ’Ê�KéjŠZc¼uÁœÌ)CwL™¦ôâxB×ðåx£Vñ¯í™hš¯Ú7”™?–©VÅè‡J‰ð ú›18Ãð¼U§«ûÎñ�ÀM…ó$ã¢ä—F'¢P'T¾‚o)]{†ö¿–n\$À�¾¬W}\ÙŒF—|¹„bšqy�›t2�€Zá™.]ŶÍý5øUzPcgWðÊï—jÿ§ŽŠÎµf pò‚¿FÖ²Íî­‡GŽS¥¥€Ö¶Éq`XßÀ~ð›³Bþ�ÔÉ#4�<¦bhb¡%À6Ñ|Ïyi6n’è…ÇÝ5J0"É~×ê8ŽsF·ÞÇÂKH´,õd†“¢ÙÍ�sq�i‘^�Ló3YL¢Î*OºVëÌ3ÿ¤ãjj_õ^çM oPå ›ñˆ«Ê ˆ�"v­WøKhbdµ§‚²° �Üo¥O•çŽVÜ×÷S´éœ}kf.us› âø�Þ™R”ZÁj.y]|�_-ú/L¯޷ëÒô+éH�ú‰w <}H‹Æ±p<‰”·œ}Ñ çé˜@ž9ÁÎÅwî‚$U&¥›2¦„3…Ú‚k+J¶cÀö'Ë›üG]´…ÒŒ$ŽêœÇ¿gíhjogó¹\Œ(ábz_(Ë¿4 ßAMÔ§œ¬AÅñ¤¸Z�YÿA§“ þhãHpîˆóœ¡º0uo$1Õ‚nâÂmJ¬êzÓÛÈkw´ñ ¯yV–u2ýç’ù³ò.¹ tro4áN�ãÔ½Bëx ‚Ÿrµ ÒÀHüð¢.Ï—Hò±—Õ‚žêÕy>iê×øÉûnxèM…•ûhŠG®`V`MauFØ$§Œ§>“©†€Ž•î"—Ü4ßÇ1ÃîªÇL-Å Û%‚­>oÅuü©äŽc�ø�íuÚÜpð �£FƘÂÑó²ûꈤa§Ï±¢|¶¨9 ô�D�œ`íÇvQâÛû5Þ› ,òø§FY©Ã[¤ž¬XlälÙÚŠaw´#hB%"ÄÞÜH}ÓœmŸŒ‰Zå›®Š6§Ì¯×¥j¬‚¿íštÓÝ«-'Ûv;[lû3ѲBt - FçâàÏCÙíq9*f—âjLCžC€†Ãò¡ó¯9äÒC“¸Ìóv›…ª-ŒdYçv»Ê†}XNß�ÛÆ]vï³H„}adõ-מӱj[Ø¥ǻڦ'›Þ˜!ø ³9gð[ðq:Ã.œp.Ó¶{á²u�Žº›âZvm¶\�¶=Y++íÄtƒí‹‹ùLÔZ»wSõIa�EÖ¤¡ ~h+zÇ�¤‹êº3Þd§þûy\nU·(ø6¼žm·hÞž¯è¼^ˆ›á£¿GäÁ%g.qïý…�T}Yhw lÅH0¿åÁÀØãW_ çÏkoÑ}W_ßÛP"PúúvlíjU {6`¶�¯ 3]¾@™[û-öá�÷5÷¤”È2ofó`õw¿™ó ÊŽBòx�?Át•y“2r+ö¥õJWÜU½g²í ^®jÿi~1ÏF ægtó"† cwáWKºA3Ð*8;/‚OyÎ禸ï1ÍÆ¿X,BÜÅï�9Äcí?­±ùX\ì‹Lä¶/2òC‚É#�ïË-ˆ†¨ð¾–5qeBàÿs–K*Å™£Â-8-¦}âEYpç€GÎ+gÙØç.�•�޵¹3ãK�ÒÖŸËDÝ�-õ'è‘™¾Ñ5„¸·S^0r0»^Õˆ0³j–c�j&Ø(Wˆ�30?zÕ˜ñ¬4Îùq<ÏmœÓˆ£Èéôkl0—û)g˜4ºÕÇ£ÿ>¯­Y�fÝ•Çhüq×]|-G[âœcÍm8výU=ßõj:Lû³ÈÑÇ®9b=òõ3 Dñ:`œt>º*¢Le¶€|`¶é½›o=0úzZîQC\s¶KÙ3aWû³YÍâÆ=•Ao‹ç¾Ívû¾…¼�¨"�/áx¬š’Ù—!ª¤Ê¿ã¢ �ÅÎ=ºÇ1 sË÷ùFFžÜrÒ6˧›SýBj—N/¼.}~¹o ¢«A�Å#rwd8Ï¥ÓËkí%<øÐæÕê⤯F8ÁGÔŸ­V¶_¦¹ƒÌì³’•lW�eÑŽ Öò<–Eä�ö—ÖÄY�!l‰_t.‘Ñ0bÊv©Ã�\© -ýÍîzD=Î7RŒ–¹šÆqE»—8P1ú›Ç)ê@i¿JØ4Û¦ñ´¾àÙ0^ Tp ej"+á9Æ©à9àØv ó~]¥Å·Ê §»x-îÅ[÷~™'óæh)i<ˆÇŒU6Î~Mâ³(ËÍY£‘ì³dLÆœ‘�ëó)ï.€¼ëžñ1*‡züÎbÃÔ¦ôoׯ˜É+±´ ì]_IÌõ½\æì|¿3·²Â¥ÐsÕPxYêܸ'&ù>½�÷h�qÞ(ý ü¯ðjÒ�´Öi y~Uºº|…_6г< >œ£&«ó?`ióÀú¥Êãmâ^ˆB•YüÚ1üq¹],Þ[/þ!\ÄiüŽ¡J�Œ¸>FGÕJ]F|Âý9:´ŒïM™Áº?8n™êLú`wŽ#•{8Ö«qc€ƒë»Z·kçÞiéoE—êiw%ÓÄ}Zèo¥ÕÉD®&Á1Z]ê`œp?xUÿØÔcŒ ?ïFJ]Ó….îaÛrÌu¢¼ÊÍçt®»u z-ÓT÷´#o#ÿE"çÒŠñš—íËË'€þn­Ñ.þUû Ï5ƒ "‚‡`¹@ï)²(oØF!"™ü/˜GóŸü„frù ;Ìq…'<ÓL$]_�"¸'¹š$úd^š¾ê-4ä$ÿÍrâðþ¡údïaMt.8N9ᨡ­ÀÜkDã¾Ñ»´MÀݲޘðÚ÷|éâ(Å»(¸œf‡^álZ^48ø+½Pø¯zfÉ›`ºÎ5Yv;˜wœåtß#VÜŸ©tYñâ8Ľñ;H®vXc ØsüYŽºÚNæ~N~Ê—Ç”6uÓy…÷…’Ò &n€ü&Ñ…Ž91N\‹,oÁ÷ ÐÇåZxõ €¨[q¿š—¦h¸}øaÔ�´ð¡ 7ÉÓ€g=íý+ŸTf�¬11Òù³HŒÌ9\¼ìH“)Çóžq¦§My*ÇLŒQ�~nwϽùys¾õ¸WÝDiBw•¡­ð©[ÉŠh=W†°õAß2×òæn».�lÛ úw¾ùUuµk�mð¦vÁ":· £ç'ÀÉe¯šê‡ì•´§ÛOá{äü;Ùî!EGé¸uzÜiäçMwo~¦‹ƒ¨Aº"”4�›zDÈ#=Áe 1àâ¯ÀÙr a"¤)n(¾Ü˜�¼RÎSµ¸Pw^Mü�2³* ûË!ßqgEïKªC¢0BÙ¦^S.= ÃÂÐk}ûbª3¡6ÃøAyx¤,Xõœƒ¿?XmËi’ÆY_H›ÐR©›¿`uêHdb<¸ðû^ç"é/ ©žssîûBþ9¿Ñd¯ À� Íùår ÷—JuMiãÜýˆ¡}§�;�2÷ù Ö|yÑ&+¹ p_zØnúB%9݃ó¢×¾¼hÖ¢ùL\âЦ_ío^pÇ>�Æîuš!,Zô�ýzüjuÐàÊBkÙ¢'÷üöU|ägð„Ó�h%u\¯…Ö«9nÍÎu;Dö>É•…nìsÓ.ÎÙXëæ^e¡3xîGÊøO±Ø/pz…¿ÁbZr¹ ÑKpÞÏ<\Jéiæ¹­�7¯y«Á½ÎË[¼)”ù‰èZ bLæEˆŸ÷�±e/eá�0Ô¿�®€tìÜVí2I2ÑÁZÜ`²¢GÈ\`®|ƒþ|…FõZk»ÅÇ�QX5b)ä?ð«Øf>à„„L3Ä×Ó_a`»ÖÿLjÅq%/i¾1ÛäÃùpתrÑ<¿¾¸†Ï@Å.ôþ¿w™ý bbß+sÌf7×s3›wh¦¿wƒ®øX¨—¾¸¶]ݬú�'+å¼®B'€´Ô.&s#ÖШýC�¯£ß /'M3ê"=f lx ^,pmŒ”‰Ÿž¿ Šd_5EU?GÕðš™)‹ŠmaDG¯ýÚ"‹óy] Jµª“Ç➺ÏrY;f^tuì>Wä°m�x¦Lûz¾ècYV6�Ó‹º²øuycAiW4…æ9J²™î‡¦MЙZüL|/y�/Äÿ¸öù.#W™Eªpr”¨YâfTmz7çî½à°!/œÇ¾ ì�ˆšE“Rß>Bç7ýRJ!—xo¿ëuý¼ö›åxÑ]A?ë_úþ�xŸc©_î{=7Q1¢ uDW¦Ù_aiE|µÅ½pžýÕSz¾]¶H«gQº6o9Ð,WÝ}D®Ñó1ào:®ßë<ÚøÍ6ø.V0‡ ù ÉO�Lüø¦øÈ$ûg½§îþ{ûEù缕 ¾ñÜnÆ'yîØÆõMǯ�4d9Âö[š¯4焜¦„Öµy´d#²lȹ’à®í æ FÏîÛÝÚEmwõFîÍqö›ƒ®x¤³8ŽvýBdë¼m»TRQk©¦ånÎøŠñ·£¢~­òï¨×‰²=¾4z�îS•q||ñÃÚù‡0“�…Üx(g@G)ç>÷Ï(›ïÖ~uœ›KÂßzÔHI©¹V�O4§Ÿv#§ôwi®an’æöºÝ†ÝÝ%ÇÚÌêfô>ó�ËMÿ)ÜH¼ÀcIÇßpn9}-Týʇò¯LjTTçQ,rK¿ðÙnOµ;öœ¸eu¬ºÇve5|¹ŒÑæMªþâ2÷8a´«Þ6{ÑìJK„‘—H¿U�ë™'¨c»‹²=ÿ’ÑU羜Éã)}¬rV/æ³u?™€�âÒh…´WN‹®ýyæs�\·–þ×Óhøã‚æ8„ª5òÑ^ôLÏ?’Ÿ÷ûþÌ˳›â»»<““ícã?²IasV¥ø|hݧEdj•‡»D~ë÷J_…GN³/6(+=éظ¾ ç¿ñ�è÷íöò ©ðï×ú¥èm2y4ºÂÇÚ*­ý¡Ú¶â_ÚYÙtB?÷±`p»åJã�‡æ½ñÞÎ�À‡Š§úS½¼ÝuWhû¢a¾ñ“ßóok?éºó7èUõÏw[ß@3zQ¶øª¬ÿ Yœ….’M;Èê<øUþ²" ß—ŸÕ¹¤6L3ïq×dh8M‚5��©3å<[ ¿fre.OïØgx8¦Žq:Ù¯uq(<#™÷O$JÛ�|&V¡—yër¶ŒëÀ´¾‰Ð2×usÖΧÄêâßÀÝ](7¸iÍ€Ö¼:ÑŒGG³fåmç9ßp8âFº{ÐZÍùªÎ„—ØgÆVä‰ÇÓ›Ýh‡<ý›ïÈ3%^ª˜Ú‹.{>”â…üƒ¼3á~;­ºùÔ&/@ByƒjêL’¤épÍú¿ê8É€ñ—eqìHÇN³ μ èH@[²¢`-l[�_Ù®/Hc ÐjWÐÜtÁ7ÄW^0GEouÝžûe¾^c˜¨sÓãüóÏþLpÅ?ï9Ww‹´\Q aÓˆ®]sv¹ƒ*ÒGó§:/·xKœ›èŠ7kD‘S °“n¯ÃÏÈáU'‹3"c¥T,’隸�7i¶›®+£Ç]¯?n –WªãMîñ-ÿ„‹ÕU¼Òý±mÎw´þ꼸?7ðÙ4Tq×Wðš@¾ã‡áôÓBn'Ç)›ÑжŸš[ëãI•~ÈøÝXÍr8ä§0™~zï+Ú\V?À>1�ödô´ƒ¶Û¥6ýÎÇüö,Tþê`Á§T[鳌;·Ïl`d^l»^DA¿€º…É�·Îƒ­›ÞÏüñ9ÃB#úx*lÛ…š2þ†—ëX}ãÁ]FU¢Û–~Ð7œÒ±…šÊÞ[D{ÎJ“kØ¥5ŸîMC^ÈrñÜè½r‡m•j™¥Š•ªÚö¸{æ|<äÖ·ý÷5—Ç”#OaÈQÿ˜‹{Í�è�³u¹ž”¹ì»ÒÅrj÷÷¡Ó¥ä`d²Ý¬,©FÕ'‚UèB”wŸMobM@äãqßä´Fž �dÜ£½G&,ô €ãÉ64Ç L�k;«Îä¹;m·zïsB:º@xÄ*µÅ™Ó6ÅR®ã¿‘à t×éo’C•Dõ[Ó¸WVÖ©ïæÈ«\wZÏÅ;GåAʥʒfg ã0cîÌÿØÔÍmØæ†¾¸‹´PœNI.«¥dãÃ*öT”Ú¶*Í Àþ¡Ú©8ÕÁÌc ÿ¶äÒt[Ù´ûÞïnt¤òYgåSe0óës„2ûvˆ‡L'œ9>ÉëÊðe%}1…h¨Ì(óâ:H ÉÄñ\±mjþ;ÿ§¡'UTó˜Æ®¾B·½±§u1 xÃrRî8ž4Úƒ(fÆŸŠW@9ÙŽ) fV¦²©žÚ“x££çŠØ¦ »íÊlãÃÐ;!w;ÌùÞáCÇs{fU´â Ó»¨GЮØG{Ûšf�W:zhdÚý– °ßGÇÛö¥Q¯wË�7å迈„2§ÌLï]øcÅ-äªã±û®‹»ß6oW9¶-°¦Ðáadx5¹*OÍñg²É¢g·ËÝ;ÀŽû€éQŸ¯�;ðS|nñò±çnòBªd¨{èP å’ÔaèˆH&5§a{{ÂÐEÿÙJêMúÞüLWÿαLîótÝ}‚¢vJZ˜XÉûÍH� qY+õÍ`/î™p;�Pâ}nš?„yÁ=è Ù = šÕå©Ý «ÂÜ"j�”ç<[ò·72=€�£˜Ã‰w$øðÕÒ•·¡÷Šç÷+<‹ùL²±ž!Wú�zWübHu.8;™�gäi�ÃP–Êè�âNÉ‘œ 5ÐÉéƒ ]Ç|¡ç«º�,5˜þоŠ~¼ê5ø+œë¯Ë¹Ìp¼5ŒÓ”—„s¿_™ / -Ðé |µv¼€±òB¯Î+Œ—íßäŸTÏ$Nÿ¸êkxzÃá�/ýðüüÆ%ñ¥Lºì,Ìñ÷ƒâ_U&þê-—¤{!lb0ÊXò"0\”*\úèp¨‘CÕ�l<)ç¶—‰úSˆÏîË‚Šä ]«}6¶Ñ|3îð¡ Ïì=ô~À £ÂYÕÁz³m•Äâö8êײ-ânüIja×æÈ¾Šbn *^�ûεêõ¬ÛÂ$ø>´â)üíJ§¸ga>—@ÿq_fÖ[+U¯‚s3þy¤C}øO¸–ÑkâhY(ÿ _·øÎ¼[?GžšM‹D ´v:b);³#*ê¼Æ¯`žÕɤ'�‹.Tç?ÓVÖrɵ8O_­l¦Ylê%i3{Ö29<160F%©«ºÝ évêƒÝôgÜê.}K¡ÙÎ"t¸ä¡M®JåŽÀŸš;pî|x±?$¤ëƒÌJA|¾çyý'D 9:S²4/ó/øZ¨]ºç7¸›X.éú"‚I×-¦z)ÛÎÒÜ�±êÍ ÑKf utÎ4²€^¢¯z�A#‰äº„j‚WÜF)úXZîOä~g¨_q½k:˜Ž—ä'ôsUÞ�Ã�ð'rk×\kþ¦ÌVOÓ>;N8Çï±=ÉQŽH<†º¶8òÜnr¢b³z(8&îQ"Òž·s`Ûf‘?Z×v‡-b—j»¸m׺…Z ÜXÔ³Å'Mà“bh8Ñu‘ísPvÿ˜ë:éy,á¿��¬G(P• ÄçW±cSa{nÃÛFJŽ(·NÌþVÓ„> "J$×9„źýÐy|>iY§“B^5 E®5~‘›ÌrâY„V‰œÝ�™ÿJñ½5R• ®´Æž"-ã fæ»3çÇñÿ£k[<�w vxßël7�¬ÃDÉ@mÊW¿ÿËAÇß}#|Ûèm-2éÓv•®}«vu9Ç„`CͶ{Ñ]wÙ6‡ï¡8KŽü}%Ç–ü :ÏÏó:ßîôVA‹MÔÉTsŠé¥óU]Òþc7îãús‘bræp#Ôy$%"ò×\X|k�¦„S2¨È}¹�HÈ7Õ"¤?æRÙ.`Mn=œëí�ˆ·DãAæ÷Šyƒ&Wy=¿!Íï÷!yÈU1t·Ê£/†È7¡×¥²w2Jé€Ûú)²j(åÀ3á/ó¼u÷š¾2ŽJá+)2$æîŒ0:Ù@hZ|Çn—F™óÎåj”ÀÏ“ò–†Ú ¶^™d}m¹i^ÊcÒÅâvùØ�ï¼%8F)  oé¾™˜�V.RùÞšíûL°GάÓÏxΰ§öˆN“«¸«^Í5½&uP«æ-#§Û¬�)ŠzÃùDs“1Q,:Å<9ÛüÛ¹Ü}9ù‘.ß~;R»¤~¨#Ì»D™yh쪛ý­Áݦ—dWb”u樦´6ÿΟ r;Ú YÁ׿Ç"•ž*>YóMC¿5gå¨<éÑQÆ“ÃY…MË—fVHs¯Kcœ ü.ظۥ̋X¦Gö™=™/±Ë ÞÕÔàë¡.²¾pßÐõt8�´½¼²Í]ç{uä'zbþûÓ›ùÚ.58-;ν°æP39zUÞïnK!Ó;Y„å>Ï‹DÄÓ®Xn{æs{ŽÛµ"PtŒOw _¢ðD‹'þ¼8ZÉ+ö¿ìŠ1˜Îõêºî5+ÿËÔåh@FîóÚSŸ¯6�d*—â¹ ‹Y“V•fé8PJÇîæ``)Ó”óØ^8œ�­ß‘9ÍšUÓAü$È;?^<-²ònBvý¾GšñQéûì⿱}ðʸv,'œ}|Žžbù'v�v:PØ®MíÚ£Fpú‡8£Áþ†„÷¥ØðÒ« uU¯óv¯;8hÎÍ×zj« Ø( ¶ –¯±òN„ßáëÒ=Å7Ê%ªÎÞAÁO)½k¿ ‚EW$‹ÌXº“i.«ÇrÝ—Ñ £ÏrÛP¥Mg~¯ F-U`;±ÛMè—R–‹­ÒÕ7wñ¹1áPA)oµ{|…Zr7P�6+msôk]&J þÐa¼e‹K†Qá#çzõF§O'²hÆßšãÅTÕ 7ð;F¥ Žçv]­j@ ú í-/‘?àws# �TjEþ³–Ïcùr‘N(•»{-Œ‹{¯œÍ44ŽLi¡­mÚ\¯J`áœüªráäÿà¹ÄýŠKp‚Šëë8_õWq³òV½¾O÷ÕQ«}¼=‚7u×K0pü##“n‘·q^q®ˆˆ_Ðò'svôû.•%|œ°é(sO¯² L¶sD[‡�´˜÷ç#BG�βÍ ¥¹/ŸÙöÚé•>íÆŽVã�‚†Á`ìôެ­øì:*¯ž‹2³SËþNßKø“â ÜÖ$’%Ì÷¥i_ÇåŽ1üP�4ì»$¶¨¹¶Ö¥³g¼¨b¶RÒu|(òªÆÚ8É!ÁaÛ½çbÎЛbº�ÂŽÛu.x),«>CðŠ;*φG½tª>V}ÑO$4/ç ¿=ËQo᪓/$ù¦æŠÑJÌ�×®:ùsæ>ðì@uôÅžÎÆŠ¨à–nQFAJ/} ×˥w>¯ež*ÏŠ¢Èf}{ÅCÒ1eÛwl}Œß$N”^1P¦Œ}aÿ{_Š ì^Ç8-8X)M9t‰¿l² oºÏ_òIùBÎQ’aN¥™•ʺ•uðz{ ø¡¶•s’‘[®úDù‘æê .Ùš‹¡Ô y‚%3¬Y:iÉöñuà^¬ðãÏþlÎx(ßeÈ–¼3óòýsÔ{j@”.'v¾Å‚S½IÖ-DQL˜ ð€×°øvUz~!Iòüý¨/7è'û?zuô±[Ž´=ßÒˆ´#’ßÊM¥<,_ªjªTXE^˜«öôÔœ#Ù�ï§þÞìÍŽÒ߯I›>@Œë¼YNDÅÿÜ=x5(ºr~îÙÜ>"°NÊØGüî¨PNKã#‹è›¾�7ÑS$¥ñ�­èß*A¢Tþ¢4Îqì»3o1¹iÎGÛMº}=WÊ¿ç5ã«ý–Û–]¬×°íÚC¯}MŽG(:—«óøUl÷çQ)ÊÎg¬ïoÏÁã ÷g�ǧŽÃ"ÿlfã¨Y £Fp¦Âʇéå|yŽAëïú&ý|%c 8Å)䆚BôåÅ£&WÛTª=Šín¶sæ§u÷ßErÛfÊæö©òj³h¿8´„»hÄÇ´ sѯ¾g×Ê¡¼˜¯"ó}ä•WxÿÌ‚s˜·ôþö¢¿2Í-ܳ^‰õÒż‰o½~üh²áU®<›¿Âß/¶‹�N˜"¯ÒËb³¶K±Gö¬·Úíy8ÖB«Üa_-E—¤ˆC™ë\æÌü�‘ì"öáŠÙ?.mʼhÌÅ™bõ„±�HÔ¾Á•öÝnWòÃM»ø}¹Ëò´«÷è7ü³*÷Pš±2þviì�]Ÿ:­‚Šr—aW¢]Ï^ZöÍf_-®e½V[…Þ ?zŠ^ñyžæo&ù3>¥:ÿqÌŠçÞâ&§VL"ÎøBâ IŠ|êêZ¿·�Ÿ¼\—ܲÈx!+º8¸ 6P»ýx�F��û‘'$'ÛîÐS.DÐiGI›Ô‹êшdËâ 2†ý�”¨îcfVÏ�—D(îÏ­==wÅdËÍ—Hõñ¥ÏŽvî/Ø|R÷l£´!¢”îŽë³‰mR¿�ÄâóäÉ4›?;}j„Ý}§ª›Mùb¢˜G ñqg¿ís£ÙÉãKiêâª8ÝtÞëö´¢ÿxŠØ Ó¿(±ÝÙÁž…y­ áK¦-¡)1&Gúº\„»ÊÏó6ü['`Ö/†ô¼FdU÷Ð-Ÿòã]ïý~±�9û\¹×zÝÿ}\¿�òs§XÎB‹8“òå]¡˜[sÅ/‰ã¡÷là§´Æ#¯]ÐA(ëÖ̺9"îyÄcœf‚?�úÐçñ_ %{r›Æz(U ˜§êÞÙ—or纤”л+ÿ>Œ3ø×å‹ ,ýËíh»�—]£ë2ûÝ8é4¹¥¢þÌj©z¤Åes ‚b“´rÍ”fadt¢GE0`a˜L€Î·uZo4CŠ\k9�@ªˆ¦7Õeì”ê ÒE¹˜ÿcáB›™¸õsŒ„naj&jÚ×ë6HG¹;.vШhÌ4x�¡„áoý{$š³Ìò�ÜŒ›7ì[pùK¼(4±‡[ª¼[@Ú5àë¤<Á{áÔ¬§óW抵aô*¥EôÃ¥/‘¯¤s2A–k®L¼mpBvõÏqâIŽœ5p¨2F«ó«�¢ÏŠì2ËfÑmdi�‘øóÅü£¾ÍÏ(U�"]½_ÛŠ1nÕa? ÿ„Áë{W×8¹H”8Õç‘@&K»·󘦅¥ŸY.ÇõƒxÀíàª/zãÞ�ÔkÛ–ß_Qä«93ûa²Ò7^\¿î“¿$ rq�K�Wp‘ÿ3m ­÷¢M‹’žÌ%['n^¬æz]ŸÖæÝÂíµ÷ÄD²½YôË_’¹:?sŸÉþ_z,sL Ú®Ž§æÅ>™0ÊuÄÿ­³ãŠ«ryŸ_Ô@“_¦còÿé/å¿æÓ¢ŸíiÅÎ4LÔÉ‘æ¿ò¬‡·çº§-Ø‚nI¸nË4ó\½Çéê¨]¹AìÅð¬¢ZEM ºND¯4Ö•®L°síDÀAßÜb<ØÍtÅþïøóEPQ.¸Í¾Ué§ÓÊÔOÌÌfóÓI¨Õç‹6DÙë5<ºÚŸÕ�–¦?YðV}i0öøMxvÏ2Rˆ¶â"Ä�ËÄúYÌ'ŽÙ®Åž6W�ÇùºÌç¸\kѧׅÇœ¤‚(“'Éï•’�ØøÀÚâ/*L¹€”kÒ\§ÚwüNÍ®3§z¡ÓqÞ„pÍàÊãKnâ‹ú?µÈ«ëïc!eÚº{]??úÈ(o\Á;üùýGcî>>òÝÝíôó#‘=LÓC.!úå1ºú#ûˆ^ÛY„Õßÿ�v)(;ÚpÊ'0Ñ7 Ÿ#ç”ܧè|&'2ÞÚÕ7¢ðò 3®‡ÁýÔk¿Éw«Ì¯Ìm±#—É›æî’&ÙQï9ãxàŠCé4ÈÑéÇ5] Ö]‘õÕ¨ÀnÇg?¾¿Ö güjNÃín„CDk¯Cä…Ón’`9³NòcÍaç+Ý»¾Ë{Œ]§åþmÌã‡Í»iùéÈ™xŒ“·ù)Ï»¾QÒyÈ+žÇpö}6èsŠuoñþŸz÷ ÚYNÅ32Óx…Ïùt.°öqyŒûä‡�†ÖpÌ÷ÁWò¸V Ønp\#/ù6"¿ø÷#‡ç±«´`o¢ ï\ÈÖ–Ô—™ƒ-¶d‚OpÈ@î„’¬®Š|Žy�ô×eù>–ûØuWÊv^¬¹UÆæw_07ÎW&ç7Ln» ëÀg^áu\·W„Vjò‘›íZZ®÷bןðª-Í•Ôãǵ/F¤¥¶D)"åÄ_ûxšÃ ˆ Õ¿¢½áuò‰¦K/Áß ÊÌØ‹]ÝÖ° Ý6ÛÅú–˜ÒK+‡'ZáØî};Œ‹(íÎÙã·‡Ç;ÉU/Ù;¾[À}·Lö?pÇX�¹_�º�|—=]×?»ßvåË»ãwýc=¼föG³ÃB=ãä{™7à]5¯óÜõ÷ºo¿ZvaÏã£RŸ)çø›áMãòŽŠ|OOtt]ßqºš×qý¸— T—%úëD¥·±Ç|3Ó_Ÿénü5U̘†¹¾B.!﮵¤Ë×¾”˜jÓWÐì!¡%ƒov— Q¹±U¤ó›»&‡Épù~&ˆó¿ævšìéý²Y ö»©·/Z,bdÓE ç†úô‰"ÂõKnaf<õÖã‘Ïc÷e‰:¸jbpw¬GS`¸H¶[•S*P] 9SѰsç(üC³†�2'Ø&Fs¤¹d‘MÏðñyΛ$E T.̳Àî�çÏé‹=yÎÇÀÚ¤>Ó{7�V§¸œl¥_Zl[  Ð/FF¤Ž¯z%ú]Í¿ì#T`›"é-gÞh{Wÿà©�b~ˆÓ¢ò“û€à—1á�M·E‰Àïp”æ¾zú½›ûK†‹‰ÃI7p÷lœ#¢s”›E‚)jþÝš±'PãªØèŽœwç<}B¼>‘…c¾ÎUÀÏɀˬî9buwï›ÞÛ1·Ÿ¬0#ïð©¡®7Õ7 òxv»–[Q³�téÆÞÍðn»(ŽþG„ìuéÞùÊ‚)kÜù¨¬&°nç‹�+®Ò€‡_”}ÓØð½ÎÓ8·h,(¦ø,{ò²�[ÑÒóâÞ¯a¡{wàqòú©¹o¶œ¦=ŽœˆßïhnQå‡Û&Iö¬´4IsÌð›HÓ׈N¦T¹…‹0]P¹ÜŠ—úF£¾<—s±Ë ùjó€ËÓàóË*xD5wY8(­¸f,€£çq§«FÏ~Óø©/¼<‰¾¸ôÃplª¬)ÙÉŒE�ƒ³Yñ ã>µ8­Ô”Ýê‘Ñ3p”„|7'Iü`Î�qž�q4c¡˜£§RìÍV\háÙ9òi}»\ó-0Í4ÌóÜ_–æI®‘fÝÃò3¾õ]•ù:íó´`eBÛÔñÓ ·ÌÁ6¦NÔþ¨è¡5ãƒÏXÌeÜ µ2‹®¦$вg¹ `Œï—ª³–`×SÖµé,Y»IÀ•Ï˵wJmSÙ†æ¾W eÑ‚_Y]—p›J™p•wmì‚>¨Êš |Ѩ£A'Þ—â_ê¢Û Ë-õÑÕæyíóO4ÐvñýÔ\gc v¿�Ýhùù1¿d¦M#øLÕìc×\yhD×}O0ìØà¾óÚññþq}Ó ÷oã\ã~=ZHÊ$ïcmyóWfHÈ©9r Œó#7Â0"úûË_�þï¿SŠi�Ázjû;"ŽX9Hº4¢–üñ—:Þ9’ ™ÃwiºiäÇ®TmOÑõ‹FˆYºçb7Y*˜ïŸJ÷J³õÔyÝV¼A±#òð0(Ÿéø;«“sSɧîêúí±Æé‡ŽÿyÏóaÇ©q#…u·R«ÊágoR47"}Œ]résD"òÍvÙÝO#zä.8çá·_4‡ÞÇÅ.´½Ìù‚7í¶8ÈÄ™� fF«�7~u�{ÔÍ1l»;=¬òóœ ‡c° M¯">³,Û'~Ø=f3u¼cõEÐÝ-˜Ó+À†qË;Äyœªg=0iasüÑ@û Ô�çýÖH_ÃWw¿Þ6ʯx(kèÕbΪXäá¾SÒðÕÔù›HC_ïÛös99œjÄ 5VËîüøM#wŸ¥W}˜�§,Ùhi%Ï·{ÓWwã¶ÈÂy€°œ”{Ø m`ò« qÀ‡òœ|unŒ;º�Å.ò?E êõ1¿RðÕR¦O´-[ÛÚϺ‰²+ÃRúsøEײî·ï*Ï*w¼mn·óø ß«òÕÀÔm%¯ z¢‚m h3—†vÜàõú@tÝÇ\¦G—·}j?"ªôL“ YÎ2L½Ðßý0Õ÷›Ú0D=€½(K‡%—WÑ{voÛ¶¶ÛuT3ðøU~°œX‡~dT"ÜzÌ>fù¢–/“}¦×,þÞ'¦Q¡‰òÁˆd§ Õƒ–ë섬l<|¥µSirev¦ÙÌmrõŸqm1{í#7•Ü6šœ²(@[8jqvqä@÷(›Úe_$ØC]™KøaÞ¿Â+r÷ó_8ÉUÎÕä—Œv›ÚµÝB�DýÂÊß.�ÀáÔ:aÕÏÛ4¤ïi¹2‹��`«‘+Vg÷òt÷û rx]z:Ž]¿ Ûô9ƾ첊bl‚©0¥‡Û §‘IGÄæ¨ñt?|ðA|±£ó¶)ö�‡y-?0%íî¯Tï󩝿yPûÙíªI6œQ¿ž¶°iEOó'_Â_ælÏ1¿Ï‘³Zt÷rÞÁ¯±g ICðrœÿ²=uß4tR¨s/¦rÓ/žûµc`"òs,8Þt½Â¾´sý'¬:kt|S2ÖFÔ ŽÇIpkÎ&�1}¥<ë½QJ©"Õ%QÒí»-«ÀjÒwÅU;Xç`×û–Óroþè.º“Û„r�¸™\Ø|¹þ­U9Íͼ¸âs"TòÈÝÝE*à|?ÿÔÝ—�Ê.–="rû)“KŸÇSàì!$§8ús=ÛåòžÄ웸øâ|ÝžÎÃsXR&>È(Xè�ʬ®>7Ç\S&¤Ù&° Ãáá8ö>¹öcć:SL>.)yñ´êøãå8­·äp:Ŧh/½Ö�YŠB옅š<¼w!Š�±âzm× I¢}LÀð 1ªDd¤/^á p±µ3(D—*ƒ›º‰;Ë€KëÐØÇ"Àá¬s‘PŽ|áhÄÛKûù[šq½,†‹„ÕHÒ«S\dË*Lº\q~@aŸg^×ùJAÞè Ϩ½ÕCÕe?ƒ'¸LX™ïåg“Wð ¿0^3ãõF™zúÊ4¬ð´þÁîùõî¸Aá¤û'yyo°qÕvÒç¶2µY÷Ñ•ü ¯»"r}=xþŠ’WD໼¡<.Ë5¾µÏwŠTÞÿbû³.­ý »‡¼XíP†Sû¯RéýÅ?J˜´—@ôe\]#ê"zÿ@šqÉ&–«™Š"øM`U_ºûé¾»B³ûTq~Cs$û/Þ�¿duP8û2ø¾à×1­,5”ª—â“Ç1••EŸmË«f‘�¥´°*DY"ˆ’?í¶¸×}¨ƒ‚MçÙ#j¸Ê}ÅÏdMJk¾@á²·W€Ú_ß4€8Œpœºð:e®R�ʧåjnø°cHÐNç®øí 9—3 ®Î3'ŠsTËÑ·™I˜V�»¾1—ª7õû±\¹ÎwIâ¹ÞGýDëh©Lå_SÖ�Xw?†m×¢ °GšiĈåüªoòyîó2 N²|{Ù, À+ùùµ”Zó{ÿ¥²Òß¿ÔÁ(çý±.žú���†.��Üç«|<\äý�ÒÙŸFy%×KÈir¨ó´K‘Oåßåâ>ê½k¼Ï’}ôÛF(ì þ¾"…êÉq¨~\ 9ëô["ŒÍףћÁ”s»‰š9ŒÌöÑ9Öœ•±YÝ‹:ÃÿÜžãK“±I(knðÊ7ô²OG²óe‰(rfª¡¹ªÏÝ�Ez9dåžý…]¿0à,6>6 e×ÈämþØ®~ú¦9óvÅs¤J�ûÌ�.ä¹î”JÁ÷ÝÛÁs`3ΈÅãÊm5g™Ž7·Oãü)(/ѯ \$£Ê³*>Î�œ^i²;"\ØÌød Y^{¥† OøI„ìZy& Ð!GgÅÛ`£¹I‡/“L‡yDÖùÅ'�ײ]íÑ%òD´zž/m�‹A^W`k—ƒ�ÆñäæcÿÐð¦òð‹ò³å(L›Ì¯hÐ Ãýý‡í1°¶3EÅ�köeÚ¹×@Ô{èˆî*ØŸ�1�·”kô`ÙMÞŠo­ÊoJp—õ?c?Ûõ÷©_Þ˜«²i ò×Iõn»øêsŒNÀ«~ш½�ÅÀ¬ž@Ùg¹«�ù«‡�s,âm3M‹~¶,`�Qîß‚¿(]D!—J‡»¶{j»ÍÍv"¿çƒ`¤¦pVIŽ3>àNo/hê§Š"/~SGŒ'sE‘|+ž}‚û;”³ÌÃhjN‘6?c‰9ñØ4¯7º÷–�£ŒBÛþr¦2|…ƒó:H¨ŽÛ.çšlç”1¨+½¦†#Á\𠎱ä.Ý9ÒTÈ Á ÿhUs H¥¿Ý²MKàVùéNn" ånλÒg&€K›:O]P~yª#ùºõ¿ƒ„}Äç×埒üøÛ@…í9x`ѵFâÖAÎ2ÔR¾¯#EqØowÛ½*íBò¢®y,~úfÖ6õ[îU¹ZØZwrô«K•ìF¢¥™›‚Žýrm“zYã+¥î\AüO~Ÿ¾6YtUX •ÐÅôð>‡Ç€رȅíëûù¡Ñ–~#/pB6ôÈ¥Îa‰3ÈÝÓÏ*…�ðeeÇÜiÿ ëv½mûz‹x(_øòkäå§x5{VKõ‘ ñ䃨”.}f*ç3Ÿ^è½Ë½¯ö¥1Uݧ² ‹¢ù¸ †sû?]R³—?}÷Ñšn¨ŽžUâŒËô ÏTïiºP¼ÚÌ´¯´Ž…”þˆÖ^6ޫǵECKµýÉõ ñ¬À@¤1"Äå�'÷¡d>/CÌQ•~k^í¬KÌyÕ×¼°×e,Ç­Í´̵Pžk)xpºz=7W&,6}Ü+ì78²çÀld’v!¹´Âý5\ì6žˆÞ;˜öüškòüUÊ:ÀxCyGˆàZ•ïÐ î’¼©É?-CÖk1†¹ØboÇ¥+ ¯8zÖ‡SG³ ª*õô‚Ëþš:|…RF-êðZÄä¢ÝWK×þ•ûn84¨¥{rÑNÊ…ËaX�áÌôÖ—,þùQPç’‹€"ãõN8Ø £M'އŽD³¹ïÜÿ¥VyüÙŸIDØD×ì»ÙΡ-]}ÒÜ2i[’óW#¿,m ~æªÑ¥v`Êä¾Mº`´Ò¶®î”°·Û¸f»oò³i—F�‹m–¹ç6“nÒœGîÄóÞÝv}Us� 8QRÄm„ÒâÓ¹rL ÓÅ"ì,dÈråݶ)¥¦�û–îû´²æ ÜnN´¹l|¾ä?rÆ\݇V“#çž�;)åÛÐ'¢9ùídaúÛí†Y„V‚ïûú62¼\ø–i¡�?ôƃڅÃÂGËâνÖ[í.÷ÕHƘ(�[‹ø5;p/•ùM¸šTƒ5*¾)ÔXÑ¿)'Œ�ß¶ørËí¦õY�df׊‡;šži³½L³Íÿ¦ÿ䛈t¾æücŠÚàú·…=Ç%³+L/4é�®ÊgPõ³p[o ÒÚ¯"O»ºébÍýÈs£ã¶ç¨ât=Þ³–Ж„ÿR¸×Å"Ü=¢ŒòyÛÁfÀÕû}%w+ñU/â·_A¶ßÉFO/#^ÙwÈÙg°2ì×´ïü9¢kŠÉf»Å½aÿ‰>ÑŽH{ƒ'lüÞM‰H7[ñò+;3~)U1 a€sí»„¿©®ß-U×õ£ùï…6[àŸ\2V¾²ˆ,³šo°ÍÙeúm!?ã®ãxæŒ<û{µOª¿üEì�ëïeÁE5æIF"¯r£é¡á'[Ž-±ñ=3'oÁÓ™ƒ¶EøìšRDÞnB#ûìpèæ°¿”è‘‘[ô¨¦)Ú­;ÇóÀ{²‡KÛc`—h›;ÎùnÝÞºfؾ‹²Ù#cPÃÿ ÝA¯ð¼'¹M•¢]ιüÍe¼0þÂMçáÙ+æ§Â¹5¡W—¾y£ký™ºÐT‡nWfOo·,‚]ÎÕ«‚ú+©=S›ð%Å•%°œ‹nÕY¶á+íÏÁH·Õ—é¡…&× Ý|,¶K±Á}hÃ�ey–òÜf÷Ì<|hHê'_ûÁ�}øšwõ{ŸöùÝ}=å>ÏÿñûT{ô¡ëúáÝ$¾®£7nÏ)ú)šK·~e‡ú¡œåú´Ç…£~7Cå��êÆ¨½¼iÿöXôäŒë¦ý<÷<Ö€¯ø[n¾‚/FÐ_©¸Ÿ]üÕ‡»‰™æj�¯yÁàH Œ¨æX±h¬³\�§kÓˆ …Á(:Üì{ç�PVŠLa&¤â×¶ÍxV…ÒöŸb$ßKð«Ó¡?BéÙ­Þw#F¤oá,¼:ßï#e¢á„×…ò.]x»—é%éúð `Ô*d3&’¡‰=àXËxåBgÉד¼ªpfÇXWs°ñáeA{æý\Í­Ù íDM”ŒñO�¥y“ix¿²íœß võòÛ ”-Ð’Jå�Å?¢^&seIVu$^ùFW&Â^ñÊË‚„Ïë<þÃ%&aqƒä¯f«V•¹*.–Jßå; ½P¬f± +”—Wã-óùðQn¿Í—oH(`ãÄtͦ¹}áséî7øðÚU&×7ŽKaâ´@F?Àw€àÈô+åãe·¡\“]%Ðø:sâ¥d9¿ô/Þ¬—áEÍ­0s¯¡®w ~ÑßÊ3¤wq|wôÛð÷„ ½�¬|þn_+|žÎ*oð¢õjëóz&“mëqë¼±‹[HÊfjEçRì¿È¯Óï´å�«œšfÃ?«¤¬ÄPÒ.ؠࣺ†Ã‹±øÎ¤©ÂñO?Ô?ª/K²OƒjÎð3�«0„^ábþÞ0Rh=èá»C$„ â_È€ûQXqž“j?i¤«ÊT…ï>3`?K|=§rF™ÇZÐþó‰  oæä7ä܉AëK”+Ií?<ÿOõÕéªÏ3jóŒú#aSÔÚ«÷:oć2L¡p•pĺ~R§\ÿÅŸz¸›ºZx>o%´y«Ò�(b½/t¯èÇKå:†Iªw®ºÈ\îuõiQϹ¹WÍê†ú8×ñ§@»z-¡YG@¿Õµ}U~K—Ð#ú§çê’¿éÞìÍœFJœ•¿¿oyŽH>~j®¯o¿ Bî›c*n"§QtX>óiÞ–X¾‹³ÜFÎÖÜh&ÄÛÇÑóýü¡»Û±ß} ø¿ÿEgL3—ÈDÜ�å,;„h÷¹§í–÷ËÀa»?eÌ’Ë�m[$ÛVIá|jn£�-Á@¥Eé'i‘íwc\òûèÿ Ï6"…ؖΟ’¸îÀôk;䨧ˆ@}c¹ò�6º$~ìÎVùô¬gð¡xœ9&…F.Åc³ Ý6‰3oð}ä`“‡m§´«qÒ7ï ©˜ÞJÉ0’Âï^æŒÇ~ã!OËHdo®Yåæ¼þÐy6þbEA¢WÈà›½&ñŠ£ ‹óI¦‰]3¹¨ýj éÉç¥wí4 Yd”îªjoòîŠ�ê•wröÕ±Òê< 'ø.G®Ï,Y‹¸Ñ[eš*}îí�¾pßV"�|·¼Ap¾ánÁ «×ÅárݵÒë\ äÄ£±ÂH»FA˵%é-.@žÊ'ßl7òx]3s´9õšòáóp»R^åvèÏm�»•¾¶»â±ÛÞBd±E+Q¡C@iåh;µqkÄU™›¹è«óMfá|U¹!X`�kØÆrî¡þo0ö‹}Û1€u%¼NZÿ«ÃÎðßÄó«Åàîu/êïbDR"×_%Ï™>5Ù=û±SŠ8‹4úÐy{‚!‘>6V(Sq)B‘+ð\zÓÜhçóã÷1�Víf§O€ ¢Iˆo>¹?†~¥ 8r>*Ð=¶¬øÏúµ@­Ç$àlU’m]?fê|j˽ˆ¶ÉÁÊ(÷“)BÔÊ<Î =©Û̳|¸ùƒ°7¹ˆd¾`û¬Ÿ( °ç�cIu,W�E¨î{ƒô�ßsØ“Ï[ ÂÍ-RÒ>pxhÄïm¿�û¦ ‹vÅsk^.nõüi‘�†øÆ‰„&gçwcBáæk=zJrýŽ/Ay㵽ˇ¾»î“9‰å'énÒj?lwoÑú¡¸ynOÕ'ÚçC;ºËµ’™¶Õ¬áüÅ——Ôyq¿VŸÅä,»êÁí&—í7Ãó±aÙxÈe¸*¼7(2Gk(�Í%cî`I�vgÅ…Ü‘eÕ·v€dñº«e¯ Íz@¨WD4AËE5 WÆk8k+Q‘a B1�BSÀö®Æh໦‰4B¾¨Ò(…Ž>ÐnJi!0�¼‚°l¹ý0<ÐwÅÅ!Š”…Òxƒû¦QEÙ„÷ì“‘oaŽDÒ¯/ò //þù–ñÕ7}}qIÔþ,°NÅãwY¾€W�ΰ–¦5F‚]¢ §ùªÖH¨(ôå9½b|øÐhç–œØú ¶Â èù¿ÒHгÑviŒ?eaaP! !h˜ M³Ê]Yx�:öRÀe¥)lcΪúe1;Qé¸òÜÜ…ù‘ÙÕ�"GüZÖÜÜÀF/¢õªóíZ‚_ù  ä-ªQÕ »žŽïÃÜÊy;WUàyêyY¦¹íè|E£¢3 °—ý_á’ïý y}Ñ?_Gâÿ!Ë«¼9EźíÏÓ•üIúýù4¼†' £ªnêZË X_.ìÿ¼áP®'ácÔ“Fu¾EÛ¥oÛ*rvÉ41SÁ¹¶AÉ5ùSjn/yI•¸‚ó<ÙŽR[ª“G1J¡ÙVB̆ó¾"…s]Šu»9ô«8¾ÃÔGŠ¡úBÀG�$D&b[ŸÖ³PþhŽfÊ¿œ/¯ EÔðø|8ÛEi™%! u‰Zî}AV[ôË•ãù Ÿeƒ0êSHAËê(ÊÔ[å˜üòÿ« @û<sacÃà»ùçâ;G“xþ§Ö/IRÈ… éç–Nâ­ßt�)»…Ì<ñ õÈ¢:è¦B^ [@3[i&ëú±Š^jû#E~ q•]¢ïî>ó¬‰s¿'œ¸ˆÌ.­¸8½$ìç´p-g:§þA�NÏ ~žÜjøýºÿ! ?þìO™ì(¦xÆ[>S JÕç·qÿö ÙÚ9Ç®T'ñòg>gN |Xf„GçnZ¸€ãðnûÙÿ¶ß}áb̼&­�èSäY,¢nOþ“Ø•çH Ú?ïy¥šLù§Ü;¡0 ÔTV:"WRö©túf×-‚h,ïÏÏóþöü#í÷/üošSñ®oÆŸ÷èõ …E<í�3è^#¥ºÙb÷èW� K#“ž¶;eixls*c|�Há8ÈlpÏ=bÒ®n“«çã< ñˆÄ”çÈgNÅ‘ åäéÛÈ͸]D¬$ÃX¯S81ƒg÷Y›•…"×lGÙŠ ¸`šzëlYr0ùýˆ¶o#'%??Þ,g¶=¤~¡u׈+ËÙb9LFíM¦™ÒÝäV#BŸ{¢ÛfõšÍEà ¯¶a�“Û' ™ìB÷Â!dúœªÆZ"•,·iÝ-:´Ÿ%Ç)ýú+KË=fí©s]v»ÎìÅûþZW|ƒÕ•i‘Dòøvh/2ïºìF ç1v ¦ûVøØvÿïŒvß´Z`~�Ã<‡£ZÍMùOTm[®°á\b\ÏÑWŠÔ6¯ã”srC>á�kd,*÷Áš‹ÝÄ'x\Эó5íÄû:ùMêÃ�ÖK»Ç.Jòh„.‹oŸi¹æôúN4{ŸµŸžw«zºuû^—«œÃ£B†gojyz^øäG5]ã6säõõ Q2=wÚïí¦/,t—çÕüT¶¯½5¶Ò ¶ƒg4õ½N™ø—Ã~�.þe ÿä·,íS½Å®×ÀOÈ�võ‘0"Õ�Ú<æ\’îæÚ„o¼î¤á�¢=Gްãÿw#GÞÜ®Ql—W_l¢×öŠPøU•ì³ÌµV÷ LÏžaLQ…vr’¡~î¼ãˆËXŸæOá=�ˆFžáóy)=Í´ë1åq[g‹€ÊMìðqâñÝÿeÍqXÀî*3›¬è¨×9üÚsÑNs4nÛ^zì@H²Wæq�­Ô_Ù—Û‰Zíð]­7ôß(ÍEÔŠO¼ÍÓ~7¬‰üÀo”v\éèøùBtlž¸Dè¶‘3Nv˵*@˜Á9ëÜF�sw[9WÎO¦ý¦ù©JC¢½fãÈdãü¤L•!Ь»Yñþ*GÍ0l˜Ëæ<]ZÞì#½i+Î6R˜ŒN ½Þ·±B/9"‘ø¾b+Óô’AtØ3ág C2E®íºœÙ%Žû· §iüŠo™Ë¯¶ßõM»½ÜFÄ£ìŸi$R~cqQ O94Žc ì²lþ†ÅvqÖ}™n÷blì øsÐ-çvôñhD'Ÿ9ã3U`Nˇo¿ ÚüòMyò9~7ÜÅ™òB.âg»yN¹Ÿ™&·‘KòÌEwò±Fìí:�ŸŠÇý£ïΑ>ãÞìÔ‘�ÛØn—¤;XåNŽÝYO|F¤¨%�0ù’ “¹ÿ³XŠÉu“FŽÉ‚ö<"ÿ¼f÷sʼ™Î-©Åƒ¥â¹\FD³ï–;:¿Ð•J�"ïdzJ-4[Äð±ë±ÒgÈVäf¿Æß ì¦÷÷[–ÿd4Qþ)ì7¨¿‘ .Í÷›òïü9jÇ¢D8Ûýs~w}Ý2>W4²u+9ç+]STøg䇞giq­‘öØÇþÔ]ÌëîÖÔG¾,:r³ÝŠ÷‹ª »”*~Ï j¹<Ŷ[SEãô$êü¤!ý²ñÌÒ3ìÀl¼öê�wšH�T§äø¥5{þXyÁ÷5òn8G@Îz.�òâ¾Ã9”#©Á4ç¯Õûon…–è~‰ð´ˆÙ~ÒÄ\�-¬QDø®é D¡M=˜Ý•wåU¼Ýy¶Ô�ÀïèëY‡p®unÑJ¡G¤ø@ /Á2=ïµXC ª$ˆcئÑMk&Œ†Œ†�Bضû0oI<'€°N®m&Ò‹Ôï¦�í¼‘k�›ˆâÓYÔ`¢Nz’mrÌíÊÿÛæuÚˆÁÒ�õqâ%j‡@öŸ tÛðKÂn%’Õ|@í`XC¡Õó1ü™ÞJ©óßpþÈn.‰×š úEö ~Gí¿ÿj}ÎO±¥^½>Ã4y±”C›­Dèb­é'ÿ,‘)�ãWÒÈÓ1öäkäM#¤Åì$Q¦W»ráOήÇöû6¨ÿ¸ö±6õŸvË=l~„²çÃhÿPæþ"é�\rˆÇ43ð�‚¼1uxylǦä5.ÓuÐiÞ¡„þÚH.9ÎnØî¸w�ï›úiÏmkâý=³}´Ë½~»ñÔ'O#‹–¸+-ޱ÷ÿA�(Þ‡¼"KJQ}O_Ý”¿6ˆèMâo}÷ìˆ�æ³Ýõzʦëûƒ/ëÝ,’ðgùrYøéœW�—ý6ÏÂ9?ªš'^ìÍ¿Ïé]#MŸŸfßgf¾Öp£ø‡YAÚVd�T^ËŒ”N†Þ*JŠÌaéGk¬ëHKä"œ€Á˜á¢cDSpå„›·ˆülñ¹(QäÐ+Q÷`ò¤}šÒ<ô®tÄÁ1Uîêçy°þ¤Ô�ŽÇ”è>K­ìA=·³h+;qƒM)œ~’ÂXá˜ù«Ž%Ó?Á¶:°èS¸”Ö”„¾…Ú–Tà/a¸0ëβ…† øY"ZÓùÒê�\ ø#hÚY1Y4‘Ôsnä¼ø³é¾õ³–ˆâÌ�søK3\Ç(Nì»þ‰wØÆ¨ýã>.ÛÀϦ˜�Lªú2qQ«ëŸ ÀJþc¾�M¸t.Ó=^òèË?6æ¬zW¸Ou·D_~Û%ÿí©Ê6 ÌaÁað¨8ú?ñ„öPÇ|­E°bDß]éü*㜫¾îÃk$ÛKóľ‰n6�_#z–Åu€?™¿×îU*Í/çà x¿Šžë»RÅ`ú`.Ö?D™{âòkºåZÿ2Íö?|²÷ÆÃö& ®´b'�à h4“ƒ vô¨ûþ ›rŠ”¬q–‚o]ü›Ž0UßÛâXƒµÅžTA Ä//ÚU&0ø•鎔6¯�¡´õ¸�ú Fp[Û<œ(J΢ÞŸ�Ås €1gê�³C�­¥ãÃàq }híþ�ÍO<ù‰/hmi¢âB帓+^×áé`êe\œ}‚ÔÀ„‚®ô¨´}¶< >ꔚ$Á0P1Çɉóþ€r�™1¹ª�=À<€¿eI²eCfzËŒ3¡ýov¿°’^-ˆcÇ}Øî+ç?\8ãÕi¢4å¥ãj7ìš±¼�µŠO]ôãN¼š’õñuùi4*å§ò³¤ŸÕm'Ê•¥01^™ÿÙjDäÏjn‰zöOm,Ð�k (¶”a–ÛFÄ�NžrÏis‹@±¤QbhDIa@N€ýšÈä øÀ‘8<¯o�(Œ §Õ%J DEsíãüýÞ¶Ó@ØŠ·è‚" bÀÙ>>¶Kï·_FëÇÈ‘wä> ÍrjR«2v_‰¶ð»í–?o:|> #%Òì©ï8ž ÷›Eü7Šˆ£c\y×å•¶dÝvVø>ãñò8¢F—ÑD†¿¾Q–úFÁÚq‰4µ¶MIô9Æ)yS^eTpìZ}Õ›Ž[s²äqñ±ë!oò4éásˆ«-¼Vž²7¯ÒìÚ[é‡ó¬ÂŽ�m¬97í ¡|Ü�Îg�qNšƒ²*Ÿd€Ê¹Y—=¾é\ú.gº ´ÜÈ#Ž¿›E´ÜK¿³RJóùTü1’‚£]‡;QV÷˜_åçm¼3·½¯Ås©ìÞž¦1ƒü“½Áßè/ÇñÚnƒï-BÕpÛ·1Öù»™¶–SV’¶—ÿOÕ?7׉6¬ý‰Î¢EšÚ.½‰¦mëþú&Žãþˆ¨Î»£¯Ž3o!×\\\®µ:ƒÒÈ?å^ð^èÔNæêù; /5'ÑTø�¥î‚ʆZ€Ìz?ÉFŽ*Á;=¤Ôƒ .ѲçÍ"�>Mc–€/#¢L5¤ö°¯Fôë 3膟 »+îP˜ÂªŒ×|0E°?­ÔÈÙ…½ÿaðn+WÛyÿiÒž.WŸJZøDKýçͳê#—ÇÒIíø¦!9²_"°Ò?Á?j¯-\co¨>úýߦWõ›/í|Óœ…I^´�V·«ø�ç|$1ŽÚ1άߑ¬ÿNî©—`C.Tä¹ñ<$žû…WIM0MS>'PÏ0ÿ�S¸kn,K%·{Ž»˜ëšê¼ûÏCÃýûŠ’°q‘q¼šßÇ]y"²>¾�߇æäd÷ƒþOAþ ø2ì™éjâøËcPyÓÜuGN»c~7K¦mãV浜]&O7ccÜÖà4â|@êóJ h8|‹Ð0¨G�UÙÿB9ç]ý›‡~™w¦Š– ÛŽ9¯&eAžQ¶xU‚? ¼]Üt˜Çc5ƒ›Mø)®óˆhr•�øŇ °”CXDàÂþïeWÛ¸Ù-™ 4DuÙrÆíI¿I1<ÑŸ÷ñŸÜkÕÈGÙkGÔ‡Oùo¯;õ�”Û,’TíØ“Äån*ˆ¨4÷H(Ù¥¹B�ˆ¿…â0)Î(Bá`«Ð‘¬ÂÐoƒlC@yBT¬Ž”BÄ5*ɯjçÌÑ�ã+i!p Ï„‘A¹X¥_€(‚øÛežè…8Y_È(bøÂo[¤¿»œo½‹»ñ”]ŽŠFC›³`Ãë7þ> ÍÃT=vÆf4l€àJXùBˆ®¢/ý“\²aDdR±�”ð' ,®ÖâpKñúìaœ‹þqàÊ*˜žoStÂ�°ë5kƒw�øä+Õ¡éZÅA*lò#‰—M–lå9x‰@þÕÐñpy�K7Þì4+GûâŸ]Îú€PÞͱRÃ~åȦž6Ø·ó±�7ú™ªÃ6[¿£mô/m‚ØtFÓ×Jþ‰ê¼²Ï]0¢wõL[Çå4/äÏ|É©HR[.ø6ÑÓú-uÆ\›¡’|ƒÈíX%eaÝÄO\q’w(„øóË2‹»×= õOÌ’% ௰¼èõâfÛyA² 8Œßp�îGùË*ú®~vü³Ë:Š�Þî�WC‹d]ÝÛ“ªÛ^i­ÔÚ°â g(mµ6´Æá¢?_F>Å�°€§Ì°³ý¬Ç‘hF¨9û™ïkø2+U‹\Pu†ù'x™•©X+.ç¸9MLÒMJæ<ö¹Ä < ôkEr»r꾊éLœ�Ö׈ \ž—Œæ«Åg¿ä¸¥9s§@fKEA(KC¶úýuÖ]»*Ùˆ9%Ê«à”‘l€ÌÇU¼¾’ž­04˜ KãÆˆŒü×ñuæ7rsŽ2jÏÛÁJ X~¡+¤ß«2é*ÊÔ‹y˜Y;W(×:@µófjß-¨¯ì¼‚ŸÚÐo[:ºuä9ï£ÙCõëbåšHiÎ�¨¯¹z®|0ÿÓX„zº×kÕ²¬DªÖoÔ¥_gz- Dk~hñüüÓ?½žߎfË¿žªFsòéJ§èJ&é®P /úÏEìgFŽnŸZo cé=åê"°î†»kÄÔ*râXò=nݵCËÕö{�4ºÁ›”�‡R鞟IwûÜ>qчIÎÃY¾idÖ/Õ‹i;N7Uà¿×»ßéõSs‡¯¢ÁúTü>M—ú�T©Æ®¹�¶¼ä½’ùÊÀ†k®oœ<-,„‚ÐVb»ŽY®ÀÅ'w}×ñЈ"’+½9ïl÷Ùý9#qàf¯ê¦­Ô‘Ù`Îî‡âý°üp¥sƒýÔ¶Îw:>n`Öh0ðN'®5 mTBOÑ9sä®»½Fn)‘óóÀç+�ï4~戺„3ÆrªS»!¹dÈ ‡Ø¼Øn»çî×L)YÂQo/ò_§õ9áê=ê¢bXs…j6§¹ÍËmè�‘õfæÃe€¾’*‹Ò ïbI�!G\•Ç„ƒ¾¹Öd‰„‹ŠÆ7^]ùS z*äxKý±½¹bJùû<2Ü"£Tþxw¹Jô)Epìî}yN执¢.1çëÕNi�Ú¦â@%IÂí”/1äîŽß]d/ÔK£28É,u‹†êfà‹W”uLu¬xmœx+ù¼.0Kf\\+½�ÇE£¨H´zÅlçgÿRÐát{YìaËùÖúÑŸW»Óú³}¤ÖÂ~ jÛþÝœƒïÂ{Ï·ú0½m‘T{ßÎ##4Ò›*+¿îr·Zà¸fCOé °hÞMæVpAŸ?.ˬØõÚ@àÿ©¶)ôÎynvð…¾-ÈѾÒ)^Y7GQœT-º*ÐÐ<�¶³È»›�½¬~ c»)>÷-Ñ–U/Å¥Ñ>Ï‹}[èí|…¾*/"Sb�¬}ŸTwí¼kèx„ȸnm``ŠtQº/t/~Å€ n†Ÿ»å0¶ãçù7î*{b(6§)åŽõ—¸Žp‡\¾eþ¢}üYw®wº —‡}º³�LöýØÅ_iºï£?‹üK;_¸ÝmØ[ÓS�Ax6¼ö“; ²Ã)Câ¾Oz&æü Œhô€n:}FvàŸ&…EN«š²]˜í‹¶Í½ŸÌÿÛ"gf#³?tò§Âß>æÆ>l»é†t¤Â9IœO8á‡þ—×k¡à«ý`››Ú_�j ºiŽ;҈ϛ†–=”×|vÎÓ鯹òT�ßt"p÷ÛÄaöüj9á´ÿ{õm ;)ûf×SŠ„U=%…dÀ°»>6mãq’Š×íÖóCjß €vþÔ=n·ù‹=¬gåSë}<¯ ߇æ ü¼ÈØi³PR&ÞÎveŒM¸õœ¤žƒ�N÷_ð¨hå¬ï$¹¿ç©ëH¢‘š7’¤Fn:oŸ¿Œkox³ry¯’“Ë1SVƒÉv¡‚mÚú'ZR"–˜>ÀA&yáù�gO‰? a!ø5¸ùç®Ú‡�ó ½ä7@¤ø;Þú ÇX˜³ç|­ŽF&÷T*êknK­éš”¡@àA^Äò[ÌÙéHPŽøÎæ8>GÍ-’ak®e¼J~95ø>ŽcNó–Çïí#â2nÈ/Bø=Òè•w"·š¤>�Ÿá7ÆTˆ‚ œi™ªá˜€.¨à¦Ïê‰ íb8y[¨ðTVœ6&Êi‹ùÄ"¥ækßuÞöš-¸ Î%QáEøu_Ä’'ªˆš…Íé-á}ìÖtä|;˧FþS5æã¡„ƒÜm)Ì{Ô]ŽA^ë0¤9îÎÏk@êîQÈÃ9ÝÏäÀèê€Í.�³nÂNt7@}§h»ÊSéu»knÇ.Ô§³}{ï�Ýs*ýžš“i»¹œáB`•«ÊãSaͱºã.¢AùпƒöçsD�pž×i—*ÌÝ—æ_ñ‹p˜g,‰±Gˆ+ŸZ“¼�?o÷Ðë÷œäÃGfúN#ÎCwšÜ{:_S£kŠL¡^>i¨Úû³‡�/{\TÿÚ.Î"ewèÚÎJ‘P�' òJ\Ñ9à¼9)`½k¹w@…}šì cì6 ÉÌXçõÀ v/·Ûé .(;])å2&ÓƒÇáº!Éà5yÆ”d.—jz}åí|×ç=ו&Äôg›^}>í]#ßôŠ“|¦ sCÒ†Ú=^W+¿}c\5ø2GJ·¿¶k·|Mþá6yy�~R¡Õfn§x2ÈèjŠ— æ÷_` ”_/ÎNkL&>€‹U îã •ý»¡'xAö¶µÿ¥_k·Ñ$†JÈwøRgw³¡·Š$Ä£á5|(aï¶yh‚*ja¢ìl÷.p2t˜¡×sâ4^íÇlK‰L©ýiÛ6BüÁ/½þ€½Ì’WžFœÒ»�é™�m—]X6”Œÿ`�ÝJÇM)|¶+ú˜R8FàÆTå9¸iää®»;?íü1¢éFj}v96ô½‹ìÜ%™ÉšÂßvCæ æ¡QW�úðì¹þi23*Ù󘥟€U@VŒ]M Ír»;~îê|š2¿k®àç´A6¡V§rÔÙKŽææñÂëžt×ëŸJ��òAÇcóp†œ �]siòS‚6<©ÝÙ�ñç|ÉîµÖÛAw!¼, µðV)´æ ·ÙŽtÕ'):\i²Úþغà¬{_0ÝhΩ¿D„�å‚a¶ìóÈ‘wgÊw ?5NϺŸª�îáOžÝ5?áèº×óÉé:¢iíÇøBœ(½aO­5p&˜)ÑB^¯ÿá§±!ãjœÐ<–>^M€@Ÿ8Ñ`êbÆ\8RaN}d8\ûyHF¶Isͯ+饔gÜ �DC¡^ªÄ9êkMq¼_«ÒçÀÜ|±€ñ~ÙÙÍH�»:çØožÿ€…o3•x㎥¨ÊçÞžXXap™7ìqž"’x�»ä‘Ç0ùyð“Ñ3‰uÑòx¿^ï~ Æ6è2Ú™IÅ®“8¯TYwƒ† cYrŸi/oçâøw^—*/åÔa Ã�ŠO¦«Òé•vŒÕ‚‹ÌÔICîg¶â äÒÈ?sêG cÔ± ýT^‰? Þoõ32ªà›yIv‡V㘨K’fÉ ŠŽŒÙ¦Y�Ã_ÒÁÌÙЬ;\%ѱÈô ‹i~ÈZYp†_¯ÞÂ}Çûó‡ñfq ”éˆ$Lôh@é¢ÚM‚SÈ?!?O‹‹×²úª ]{·îb˯¡…|mt>òó©2Ëÿµ ëÚ¯äÿ]l™Þ¤%Š)ã;4Çb¡ï‹ —®ÇTÞ¡w2ðäNx^á ½ÒGñ+ÍõÔ=g‹P#Ú‡ºÒªhw°Om¦¯N nù+*^ÚDÝÙÈ‘Ý6©réèe§%‡IŸ¿¤ùƤ›kä1®ºÊ�‡v¢3êN¼Ðçã4„n~úYår,U.Ù‹Sθ[‘AKÌ‘X¥·<B ß2?/dŸ!Ûã„Nòé9Í׫¨îa÷Û¨ø–¨Ò#¥Ë·‹Ì§³”aÀþÜÀ�Y ^*Þ÷Z ¯‘N7¡“~.Ë—È…~ åãÔÓ†�ˆ4¨a¾OÔŒgÛužSÐäKå«õ�-å=›\í¯,ºï¤±kSá]õ³’•žîú2µ´ë»Ó0 f:ȸùI¹×\^^G¼øóïÿýñ4»)3H6pVîê÷‘nl»Šè.¡ÇGí9"ꦈ»?@çe�ŒÞˆ¸‘3‡Ý©ÈŸ¬}¶²íGι&¤x{v‚L`^¥N’ß·Hº�½­÷š!X%ÖÞPSzØÆ‡æAÍq³kÄÝýcÔÑ\Š;Ðaô¡œ¦ßp�],é|SS ƒ”»­þíå.jó€ZÌÎ]¤L>¶r…`šäS›ï|1'5לEÚ+ ý‘ž <Š­27tŽ‘Šñ´x¨ûQ#¾”ö›FJíÊ7»Î7ª¹ùý52Nî��Ï/#R”ÿH#-õÓoßå僚>êîÑ5µÁ]éó(‘C6g{äì›ùHqG#·˜7›[W AIÅä9Ý\žr„…§mWšŽóíÈU)Ç&ÂãÝ‚ïåú¯¢År蛿ˆÌÔsMÑy¼Š<ûÿÔù�\?Î÷{ŒEl±~ÂAF÷ç­‹dþ¬ˆ@ƒÅK.{%–ß³6Íñ€/ýh5XÎívƒ‡½× nz8‘%ÉîØ�åZé"´¬˜’žÅð�Þ¾1�³?‹¸¥¹~f}S<£í×SçÍä|–èuÁ^#ãUúxe¬ò`õˆÚz?½°Iì먭³”r9ÖƒtŸ¤NŽ�ª½–mÑM†?ãͧMC4„èú)ç•ÄGùÿüÿ„þÞÿåߥïÿùÒ?úGÿˆþ½ÿÇñû�¿ÿýú‡ÿø{½¿ñ×ÿ:ýñÿ5úÛÿôߤ¿ñÇLçŸÿgé_ú/ý‹ôwþ…îûù_>ƒÚ�°Cù§ÙÞO؇¸\—¹ =ÒɾT„á7ÚCÔ+<ß)ÃÅ…=§‘%):#ì—-n  £wq4T�üêÑUf~Àüc-·¿‹ˆÄÀ+,¥¤Ö»úš¿?ÔÛüY?[Ö­ë{®`µú!Íz•"n%ðÊQmö-[¥]álí9üP ñª©°-×ñã¶ŸýlO‹”Sêèî´þí¨é}¹#¶kó¬ÑGrwæK¯¬-qý%{éÅíéŸPr°�î¾9çv¼ö*¾û3ü/ #/ÕB}æF3¶Û0þ¦‘[!ô€ªº·Üd²²ïÿ+Y•¦~Eߟì“&ì”Àˆ.U‰»± W!Ž�n¶.´¥> èJŽMŒžešïøVBÒ4.4N²:°@–þ SއCŸX_¸P¦¡¡Ôj”`8=M˜t9ë˜Làn C§^É%!là¬l2 ¢)ƒ ’H¢SZ­¯¸‹Lâþ`ó’é*ÚGÐ/h®„<ƒÎ+†ÆÅ©|‘Ü&z‰•mVffg8(Ï0¤d‹ºÇƒžv$œ£²p�·4GÖ¾Ô‹¶+õÓR¹´U†Ûˆ¤Xüd&\œt©+¥ã£‰ßÒMÉc�‰eλG,r,ä0羉ĪÄ3.iÜ8†³/ýdÛÙ e-ÏÌø9§§ÉL ž§ÿ"ý�¿ö>oõð‹“w)<—C.þýÿàÿE÷ßþ?Ñÿîÿx›îÇbàñgõÿî÷¶VŽEÀcœÿµÿêåü�ý’XdùqÌ_”d|_ÕÁj2ý0½Àó»,üÃÿççÿv.”¶ý|/Ç‚é?ó·þÖ©_p‘7¹ÿr�l‡ˆ Ø{…Iø‰i‹t�þKàÅæxg"Ø‘FKžD9aª4�+~ÎU¹Á‹o½Þ>6]Ž�‡ì· û\^ö e.-´Áñ™�¿*ÕG—•Ò‰þð Þ?!þ’ø‡Uå©ÿZ§jÿU,<€‰—8U痸ƕÀW—á·ñ,Í_b[Îü:ž#9¡j´Þ”ÖÁŸrÁÁ‡RFð•Òé;o9EOÏñ�âu¡*€Õ…Þ+ç²¾~^¹o$7ù¤Œÿ4†ŸT:­CåšM÷ôbtHyìnXÉ»‰kðû©EúÓÙÎÆï4w‹º©AéJ%|£ e¾�TC–YjÍÓ&»ù›š½1-¹ î  �¼Z¹,÷°Œ€ÇM]ZÝž#BJ¾}dÎó�³oÂMCzžwZâèhÓ’GìuŽhø�¯:ØîpÃú®{¬&[¾éëßkÓ6 ËÝ÷ F…#)Á®»þl·Å½ìŽ ‘IDh÷‹äQç@ä’Ö&J²…ºnJ`ÐÝŽå6"Ìøñ-+/{ГA OÁSù®»sî÷ô0|¼á=ëý‘ïç>»KjÐp'V\¤œÆ‹Çšñäê„aò5ª6Ðoà-GÇ‘3kÌÃÈ)èåù×o÷V¹P{Þ+ÞšÀu¸¼^ìù—='„ÒQòÛ!°v�Î]e €LùŸ÷ôM„Üž�›FÔzž ùñó‘xr{À"°VÕ…»“•ψÞÛMáçÜ6˵ĞËJùWLáe|ø¡ë‡+ï;•š|äªL¯VÊ1G”cR–˲¡'Þ, ¯~�îwËH:.šüqÆ#1žx:Žg©9Ò8èÞ›H‰Ñ«¶§YÎN<Æì¹)Nö�e´ßb@O~ÑÜ,·jsÕ»¼\L`s<¸E²y®–½�ÈÉNRXÜð° õéì8ê«õ­x]DÔ-jzD”å^µH œüªäŽß[Þ¥øßÿþCú—ÿ•ÿNŠ`zUþ›ÿÊ�þµÿÑÿûBà_ÃAAgM™ gÆžôG¯m œÇòÖv žN×wòÆàEÞ›o˜Wåïý;ÿ.ýOþ§ÿz^ü{QþÕÿî›þµÿñÿ@û¢7øÓrüüÿþá?¡ù¿ñß:¤þ³ZŽˆ¹ÿÍ¿õoÐá_øgájá+¢,Lþî4¾:wÌéßý·ÿ�ô¿ü_ýo¿$_-Çx�EÀÿáï_=�EýMWå¬ç!ëZô®µÅj„é2襫rÐî_ÿ7ÿôoü›ÿó·éøwþùŽþ×ÿÖÿŒþ£¢}Ñ�刔&¢>ÛBõ�¸ÚoÖ? ÙF�ÅÄíèLUµ�%å¦/L™? õvvæÆæ‡kûê_Lø 2qˆ‹tM I)xÖ²;ÞCÎþÿìý]°vÍQ†v¯õ<ûýäX?¹<‘ß W¹ §Ê0UQl~$\……ð9ލ Nb âÄAÂ'9edŸ*ð‰%rÕ‘„±O•AÁ•2J (Wต®Ü‰}ï~žµ:«gº{º{f=ûÙïÞï§ïCÌû®ý¬ŸY3===Ý==½z&Ó7+ञK3öxI©w¦°XOEÏ‹K© '{°å¯N‚²ãЦ󢻺œFš�^·¯XâØlÅ06Çb:RÊ]èŠ-§B7™ƒ6‡#-hÕÁ¨U”¤¡éÌÃXb0¢~ù¢1jU?Wë\h6Å1n ùÐÛ^unhòùlïðßæPïkì³U{TÀœvv¿–| LSF]èê¡»@Î 9�ïñ½S8æÕñ¯Â ÎÖQ%Z‡¿}e¨^c:®õKÈ'µ¯ ½Kâ…™/är…߯¤dŠn~¨ž^§ÛZÀ!á?¨YÐïÖœÓ5ýà’ã€�öòqR‡ñ£|™¤.‡:]ɲÁFx ñmIBÓÃq32s¬=ØpçÙÞ{#6a1Ü�íÌ⩸žÇêüH:~×k é§§õ½�÷¨�@Û+ù™Mº;²š«¦{t¦&‡´±�¯oò&·B=Çf )'±ðˆ°óس`üòì´”_e0x#DÊB)Q(Ö�ŒQ)ã‰�äS cˆ.˜m%½¯O“†’¡/µ$õÌsä1qõFxSýD¬|¤ÌÀä;…Aª=ÜÖ{ç›pß’îmCέ¼¿Öké'Z«Ë?,Õkm}Aê9¯Mä:!¤0eŒ•ÁÎÄ,®¬tT˜£×1„|ÃË-\¤®ôIìR?e`èr“ÏÁä/·­cÉØ ÒjˆD¼n>±¦Ò¥D¥¯¹~J¯ E1–ç« ¿ËY -óaRCÂÀ˜û"ŸO;m–{gÙE ç0uêVeüÍXŸ¯m\Ô†4|ñÛgÏɤŸö&é£íÇu�H}24î±x7ÀûûƒÔ×'ÁšÕг žæÕµ·¯¶3’*ÞÍXä!Iôo G‚šùU�€ÎáµÝ–˜aXš1÷c°I©ƒ”“@ÙÔ§Þ~ ûöi�N­Zd®•Ôá(ùõSÙìƒÖQ¶Daü›”!œµrO5ö,Ü óâ‹Çë¸u£ißì>A­í{ó7üÚ¿¾¿Q‰½?þÑ8ÃEf˜)� €š�OU~Ú˜Rƒ¼f÷ÀŠŸ@ó†p7òðò×Á˜2îË’^üÈÏ»þÓ¿Ï’>º7Þú-ßxu~5þà�üüäfHùÃžØ öñü¢»³CW5N¾ŒšŠQ÷oý佌º�•Þñ�ßZ �_ê �>íI–�¡èsðH ;üÜ/ýß¾éÏ?“Áúõ¯{üüϼX¼/²'ƒÕØ6;k/ 34@¨Þ/çÃ¨Ž©UÛwŒ•Ê^I6{€ÎXK×áh!>K €Î8c¨ÀÁ„Ú-Qøéò©€_…ŽP¾ÑšdA¸¶E®R[0íôô¥†¹D)O.Ô0Ðâÿµvõàõ2£±èz6úr«AáòI%rO×1ÓþU‚ðOSF¸7Ì5€p‹œ�Ÿ/V›‹-¢¦¶èhÔÕ$“#ºiV0î¶-�G¼j×<²pR X¤HÉNB-SÔÏÒNõêº/ëC#²õº. @1né8UÇ5Në}y5ÃWµC–wM_3Ö•¢Ô0ÿDûUž¯ÐÍïËóÄRìžä]¤<û$WôáóŽÐè@Ì(6γ.�W'Íz)âŒgu‹EP“úÅî €™~š�“7ÒM¹xo@`ÑAÐÖ˕ǥOÛ‹�ûí<.å.àíÓz}”y·n¾ §yrú¹Ãﳦ©LL¶Én–E>ØðWŒæ! Û ObűØüûÒ±^8²Ð]6Üv ïËX¸} ôô¥BдQÞlu²73L&–U½.P˜�¥§S=°Ž2<=Ù‰ÃVÞ�óV:̽ǻ3®½¹ìÚ¸´ûfì9@]½áOOK§Ÿ«÷ ·…öddcY�Ý©>ĺê·Ús ôkŒ§Ô·†• {&‚…œqQoþÎ7ƒD‡(µ�æ·1Šiªí)m:aÝYF®+SÚà;l¦ÞñVÚSGáZD; çªBv6c)€'ç«eiíÇòÞÁz£û̦äq¾|B?ë†c>ˆ ç©�]ö@R# Œu$–�Ž[?�(x —úI1dêˆ0…›Ÿ3Îøó·‚l„*éÅ൞´.ýuX¶ÜªˆT¡c®È†¿µílZª[©zþã@KLže @;'Ø–u3ÃáQªžœ0©WßÖŽ9Éq YðOSk§žlÍÄü¡ÂV÷|‚Ÿ®ÎuãØX¸¶”Æ ­7Ž–öS½·Úr€ì’š' íX×H²{Ö×…|5Ë0T)6ä³QQ$N¢Äš po…ó­ÒÕ1µêD“ü'9`-E72�çÌØâ7¹ï‹L4£gãYe§=浞ï»Ù£înNy?ï"mÆãíxã§O}æ·á›Þþ=î³Èv\R>c‰ÚQ› g!PŸ�ÓmóþÓö4¼‹ÅiPjm¼RcnÆ7â8„h*p5xbüã4ÄwhGz´V£?FùÅ�*=yN²CW"¯ëxñ�}GRÁk8¯ßôíï€oú¶w|AŒœ^üðÏ¿ÿµ¾w£­O}ºÿÔ˜î* ÈëÁý5¶u¿ ^ ±¡áäþ5*¦â÷=?ñþgöVýìç>áÿù—%$˜ÙÓ‘¦&oÛýÊ?u FÃùô3-‚8»pws,á鬣Tþ¢ú|õ�Y õ>¤z3ó~¿³¢ÅÉ;Ž­½ÇM†Ïób|‰´»ÌØ‚&3ÁØ—xa ”(kDM Óòû KTÕŠr€øè‰žVzžx¢9û­¡ÑÕŠ8Œ'ÅPåÒXÔ8P:YPÔv¿ªŸÒ¢µÅqŸ©z'–O\§J—µ(J4.° �~9–Ç-dǤ؆ �ùÓák‹òBñ4s|ï¢BVébM0•3l°kö2�˜ë±l�ÇñÚ8æ4(ó"ßgÚ7aTb£ßŠ;¬;áÊü¬âƒŠ?@˜Ž²Îv,[;ØÈ6o† ƒñllW«Ü`C˜÷ÊcC¨CJuëq\ªÅmÚ‡6ŸÑix…½¡�ñ¿º± ï³áoöÕy¾An\B¼¯Ü$ã�ò=_Ôq#¶¶ÂÙð—�¢zIè>2ð|5'&�lüóCÕXƒS� ‰±-ƒÕÎÓ�s+Çáµÿ´LîÛ#Óø¡ö7 yM[YÓìuñ¥løãÃÔNeQÂmšez°\‹¹ÂÔ©Ô&Ž9w:ôtax‘l—­ÉëKdzT84’Nqyø_í³2-p÷Õ‡s™ÆŽT´Z î]ÈÇ_B–ƉcEj¼ÈÒ.™Þ—ñ ÔlòËžë™z”N6úñ.Ï2ž¥ßV1'·º3¶ñ¥ïêQÔpdA,‡bfݦìëM£«•¢¢÷§6­ïpX Æà^~:z«ëJŸMóoó>t£rgô†òF�²æzuP€�“À$1ƘPw=…ØßÓûV¯k‡?OJ -ï”&Ú®­é®öÀ¸göPCéÜžÖ%ɰh×yeS1Qü¢Šc݉lo`Z�#†1¡J’þz¼ç®u|.Ý�pûþËf^�´]Ê Á¿SוwI�¤ñ�ÚRB¯¤T+z‰£ÇTžN®mÚ“S¢ÚðÄ>÷–þ×¶;rä+ŒF®QÝ~ܲâ«m —ØÕåŒaÚ�9ÃA~, ¡¢ÕÑ0ÕÆì¿»#9~be à Ê ÑT´?¯¤æs¤q wÓ+toË*ݶz¼!Дsrxì*�‘šp2"³Kðán†6þIëý"kŸ´š—2ˆµç¸›žGë=Tj-a+‰‹‡&6ÖD#॔*t|=´w4.Û=£žOe´y ; öjü‹u8 ³üø£t�”˜Ó=–ÊýÉÆ¿/”á/§?ü1øò7ÿ™b@»˜:!‹ã<™•d…b$Tý�8RWuJÌ>ô‘�ÁC—ñþ¿ÿA¸oR�,5ÔÑžÚΓ\rl$3ì» Ø“ Ý3Džmú4=R„r÷žñHÀÁ¿ÚN� I—žÏ:˜U……xX¶ B“Rk½lÚþÁ ¢c”ÿ >rx¦`WÉà^7†yÛrÚ£Ö�)7ù'—’Ç=ÁžN«¿~¾ç‰AP—ë�¹cЛ)4õ/ʇZêÔ÷H™y<ê4†ÜoÈì‘¿öùöPreêê<»´Ö¤° ‡É�ïúßœ4ýGyÁH`ÏžÞÊÆ1Œ—`{^ig*ôÜríÆ^¦”1â=Ñ> 7#Jj#îÌ®ÄÛˆ\w†ÿøEÏ^®þ×ʺT¯//gv4äYŸ§E^ŠJs�b „ÓfâÔ�o�­NÏÍM9Ê·Æu­Å×Êa#B{cÍÇâÉD¼êƱÏfg‚æÝTÏk @ÇckÝq3ûù³×¥z ÜœêaÈÀÚ`ÎssjF*:Ô÷´6·ÿÖ1Ò+B�ì�Xᮞ«Ô¥.Åk…ãͱÏ¡áÅ8èKÛùÓíÞ†³ù LüÉóéì°¦eIº½-Gc~~Ø'Þ•¨}¦Í±èàâ·é ù£z\¯+Yò°É<9Wyª©˜÷— 6>èév¼T±æ¼öÌÉJîùqR»i)ÈJ $h¿å(K“­¡xàÐ͹JÜPVDê’S²åH�r›–†;"ç¨ EÉHà#%X1lýŸãgå÷†aYÚX6£Ó{—n´ÉBÏŸgæBóµ€ ¼GjÁ÷„â@¸Ñ%{s1ÈG€—kð$(ïb¡ÇŽï©‡…¦�æÊáðP{y®jÀÝÊY+¼…†ås÷&éø]Y>Ò¤K„«x45ÈÊÑèx†°e.¯’œ6|o´Î ˜·T0JÄ¥&ó‘*šc•ÁXc'ódÆóqwŠl†èµ®´Íl}ÆGc|©½¶Ÿ’×4$î[+€ºæÐäzo=ÊaNXÚ¨�"óD‘~è^Å,¡XÍðäE¦mƒÅŠ“ØÆ¹´c:2M/e—rd¯ÑºÆÞöŒŽ!º8O:ýuÒ¨x¡ÎRŽx4®›Œ°�¢Ác(¶ßÚÅÅ­}{*¦NÞ¶²b™ h)G£•¾.·”»ÝǵyÊRª‡l ½¾Õ}ò�“î46—�H§&÷¨óø¿ZÕΰiuœt7Ë"Cù� #€8ÃЪ¨~.¥rTä{h=ŽñÏÁéû„áÔ8�.Ûg¢Æß;ºÉ)!jo:HdÉüŸüü/—ÿ_¿a3ê>ÌPõ¼Šüå_ûgúq¥ :·s¥1#pú�:¼foþšOË«¾_Æ#MÓbõFÒõùvÿCÛXyŒ�jþîO>û{¿äžz¦µ¶:þ¦:5øûº1�*ó"[™\WýL’u§¹e6ù'^‡ª/Ê�MSLõ�ÑëçòyœªMÔ<Óä¼Þj?{i,ä½+ÌiÜ>•ûäthãÉáÎ;FØ4c%÷y¨øµ™þ^Õ.ìñ^rûÇÒoâ�fÓ• ÷ä@#TX6x9 Ìøå©àqÕsñpÔúñø†ÊæâéÂ#Ž›ÎÊž@ìuÉGñDâ:¥xþ Ž?ÏUßWk¯•+õ±'äLöH:³ç#h0”ÇúECMhÏ9 TD×iéì»Ë1Bu‰ß¯Ó¡2jÙS–cä‘Ûyׯƒ¨_~Ì̇Y¹d4ÿ§õç ÷vÂ{’.Ó¾œ ¬yÄ€÷¥Cß-´·Ö))+v0VRÐñu§ù”_?ÙhüIùúÌE̳ i3UðöÔª¯ô•t<ÊJ·mj>b�`Gýˆî“Á e¯•ŽWÇ"Éç•_6qÌ\NÔŸû=Õ/ ­A)ñ.Ñ|”æð»2·²Ø>pÀH#È,§­ïN{º ®¶um*ªF¼û5Šç! MÌNm×�~Ô3õºYŒ´óòhÁK]éîûÑ¢µ8ÖÝ™ÐÃûØו=$‡öw|ž†c(Ášù&ö£!ﲺøžÊfjœÕ Â·Õ �3@4/­¨Ü¸�¦ñy†0y/ Û¯r Rcˆ\ßµ]$>¨ño¼\Î".}³Ä§TcÐs£×,�”:çÈÇf¡›Y¼IñX–Í\l€Qk—n¶——›H¼˜ñ øM{µkÿЙ‚0QÐl·?A”~Æjã7×,ªìÜèÆh£ôã¹Ã[心{õ%)¦yمؕ²9 {Š×çu§išš\àz'Euâe«ËSÊ÷Ïm›´êY1 Ðv¢‹®­BÑãEw8Îk­o¼+ý¾nà?/«×®Ò¸’-º3 ÊbïäJÚ³-@ôB-©ðãù@ØÑôN-²ô�s·ø®2î4¾Î$n2aŒ8̵¥ïV.ø|î}Ódäœ/—š�¦É²rzÔÏ~µ]à`×ñà—“½qàûèU•l��®CÇùsÿwÏù“ßßÝ ùó¹ïµé¯þ—ïÙ kŸ�ÿmܼÊXÇ÷9!SD}DB†~,pR¿ž0 �z؈Lò“#S>ýĆÛÇ\øGùüð÷_êíå¢åW>§›[´î;¶`»ÏUίËj @ºcoa?ª/ÎÚBáÎÊ;&Xää¶Yy^ÿè¢PŽVÕÃæa7KûÈñ«Þ“ThÎjs�X~ÊÆOFÓŸ ‹}N’Ý?ø&GFjW3Äõ2ž Òúw0ñc�ÅrB«o³iE Œ;#ÓÊWð}Wy‘Îç ‚½EX”ÍeÖÐÍŠœ†ïò—½¤°êËÚìs¸¬æ?ˆ~·êfaK}†~Z@ú»¸�³êJ¢3«f ô³NèúPÄ*5òUŠòáUeÐâ9ÝJ†'2 Y.¨ßZ_)ÃÅ×óõi>ï„ÒÏN\ãÚpÉpMRñ29/*rbÃvs­|Ì6³ V©M5Y¬‹zFVŠÕö…,I�[¤?æ�ÍâTÆ ›É•öëÇ@2ßœtÓJŸ‡·�xWÕ˜–|O· Ä¸»tT¨ÎÞ¹]g�ǪÙbŽxœ%Þür¬7�ÇŠ�£±éÓ«qµ :¾t3—ÃA¿ž%·â{=Q°w+HÇ¥ÜyÆP—§1>¬²¹çt®òê&€Û[NÞ�þ<û@�£Dñ™~dzì"ìóY5Z Ê-Š}Jé‹pƒ�]y¬ßj®¾,9×|¦2cªÓW/¼möóFЗ UÞͽWm�¶�ÆÇNãiÄKiçh‚©KÖ@mñN£$˜¥|o˜7åÑúp�†ù¡”ïûçai ü¸<¢ÜèÈ!åðÆMÐá¢g3{ع„5¼ô cžD“`1ò;ál^€ˆñMobÖ¶©â¢÷=ú mØ¡·÷Æéá¼”F±G÷MZ |ã—&Ñ{Ë7]>_�ŽÊDƒØX³ås’‡Ò¤ ƒß+à18¼áOŸï”K^*våî÷Õ.úvQ¢u¼D½WÒA MÅg£JœÚ¶‡&/Ãð؉ûGãWÁ1‚*t#è® 9Þ ¾‹;åyñ­£¡[E'ïíÑ÷3ÁNßSâ~ügxˆ†d¨°ïáÅê§6q£Áó½÷òuuŽïÙ§o0'Vžk§*åðdæÓ3yí�å�ÏþÔ´·ì8â×~BdŽË“,�oü»2¥IÞ¥+ÒôÃ4ùæoüs¯:ãŸ&Þš?CïÒ5ŠWz�É !L”‚ZÐë,nR©ï¼ç}? �™J<Á�æÏ´Ó$ðvžˆŒò_A”ÜŽ1RÀÑž¤jÈôqÚÞbüåwêŠEÌ:J_^Ë“ô»ß—o¯0â7©jIPü ½b��®ØKé¦säw¯l$YO¾Ž} Äÿ½B&ç.Àd‹»gzNϯUsñú9Ý¡ ÇéŸî­Åy›Ô?2 `+r¨þ§*.«1Àß`Ø}‡Ú;^"_èâ€þ�Bö—ª‚{£Z®ö¾é¾ïá…kåÃY­¦ ïT=v�ó$;›w•Ý„;ç�h¢Í4ySž=24Ü€&©°n( ²Ùïí=!(l0`!Sº¶÷ g" Ÿ ¼®Ú/Ä�Ko>Éïy|'³@ýQz×–q3¹O§óþ›Ãmrüó½k+i:mVìt“Ôl¨á�_ÙËå8롉ãÁ#œ˜'C‚’mp|}šW1¾vAóª'Ð\ãZ/E�¥²eõ£~™Kì(:lí=žêAˆ¢l¢Lm7}ÏsC>8ïA¨�ÉíVÏmÛ%”žn6ÛÛ©XvÑ‚Ëø6évš{b�"Ú̹¤²ÍÌ‘÷]ßàvÞˆ¿*G1ióª Çm,±k ¶¢Ü•UÌÛ ¾[á6ã‹'Xñö�qÆt{2ë‹…÷ÖÎÀ÷‰Nõ-àC‚_X¾dá˜~BGèEPÙ¶§.ƒ”üË‘½Áž2ê]ä ï¤;;ðV‹)N?¢xäܤ nu`Ù\”cîó[ ´â?â—Ùʪ¹ÆÔĦ¤Z�%^ÛRvy.[3és¦O>PTP bN�­Œ×³ã‚iÅá©6i®;Å.kXž¤­®•ëÓmîÒîž§N�â¶q—¥6ÞÔà²Ô· �Ö²C9\A-Ôbê*/·›ónk)´@3‚(ÝA=´B jt¤uoKK–—$˜…µ•ØŽç çw9=R Y àb¶ØG�ôïìi‹·í9¯À- Oà ֙óÓ&D§ò®°Ö‹–5ÚyJiòYæ$1£M]�ybõ•$€zB>Êí x»ó͵¾’À½b�å+pW00ñÑøÀ.6—mò@ÒÆÃpÕ>Uýht39ÃX�i¬J`®u·f3P¥qYvQ6|Õ�k–’°íN,±ÊœÆsbki§‹KÔH-¼�Xõg°{¬•¼Ë®± kÉèèÑCå{LwKµ ñXo8¸ü…î¶ç›Ž]Ž´˜¨x©`S›°¯B²àE¦—Õ—'Û �êDÄ%Øî²‡M�çƒwíåÃ�Œ(¬Ó�5l¾í^Z¶ž·ƒ¿(â£ìª[J~¤3.OTã1rlÃ<ü—m -s‹�=ŸùkÊv]�¾¸…ÅÖ¯ÅC4{o§q“×ø÷@…cXž[¬G(%ô iïÙ¼Æöžó¦.Ï®ê¡YüaxÂv½¿éòOÖtûèÉOç5ŸÒíÉ`,«Š¾!ÛhæFO«£oæ“;®4ކ™ã„—®÷^%ºgöî(Ü Wb&í”K\Z Ý3ÝfÓ2#£¼Þ¾ë &à:*‡ýg#ÀïH£â¯{1þ’kwx¤mM�Ù®š”|ý’�ØÄø}ÂÞƒ¬ð†X‡ž&<2EÒs¾tïJØvI ýCrè’>öŸ®D òŸQ\‰ÅK‹£îž]8š*Ú¹Ü{Žáœ0,»%Ž—�Z{…ÐÞ¹ëléëwþ‡4(2B0fß•B·9â c»¼íõËk×Ý+{°]àžì=Ky¸‘ÿëx›â¨ÒÓeX°}ÒvÐÏ�¸ë°5í*‚â,{_Ç$Œ_QR{Ód^ƒ�vJ³á�80.¤gŽ HÔóé ãÿú´ƒw.>§˜£4’åyÌŒîýQÚO §…¿ý/¾ê�œ¾þ-o†n¶�é<3f‚0Î…SØP %y ÝÁ¯! ïyß;?cÊ» ·féDæ/ ØÈ«ÇRÖ©´V½9þ\´Gy�f)sÖG1òr{¤Giœ¶ôœà ÖXçä6¡^§óg¤8öôáõåXa¸º„o75‰ølå{œG  ?w±ë8Ñ ÁXþïòÝkœ<\éã»$¯÷ú# / Â*ÎMpåQO²ˆ‘M8E+4çzuÍŠÁïUØPäŸò/§‚É“]~§Wφ0W �«Ò5œ�ç>Í]Œ8 ZŒ¿>Ñ=rMþ‘øÈ÷ïzÆ SÞ._j«WGq§ž\<©/^þˆÆåì±Ý]vv©ì½¼Æ›©¸ £!„;¿½Ä’sƒ�›|_úòå\{_«8ècº9ÀˆdÚ·ôj•X%Öګη°Cä(IkyÅÏ+:t:ÁUIW%ô›w«$ü`Á‚�� ù6]­Óʰép[a=?�`R³¾¡¡zár„*E²�bGè¨6JüšB:7n+!ÖÓK’Óí˜ìž[Ì»C‹UUgʼn$QÎÉ5Ò§.f¢¤'ÒÐì,êŠ6`ȼ$‘—±ÊòÔ�€¥ŸTÌR·.?h½É#8™ÄV­fz�!6 áá\WW'�Á1i¬9‰ÙÈJp„Åþíð2G:XnEЯꅎ´?ÖÉÁáä´¾¦zärr{1㈌Ó'²Zª;6*îæ“Щ6TWqd•uÇÕ¥y—ZÅ«ïÚ²±²Z¯Â%ù'ç¥ÈÕīм3ÛNã¥ÅÒmêÍçã‚ϹԌ8ɎƳ—æÕe«ó›¶èbðkLs =E^Gº«™ñ ¦?ö<«ã¹ðÁÒn•Fc3 >ywg#+^Uå]oËåÚðÉå-õ¼|j¾\�é9‰ñkµþ­lò(ЋqjnŸ�¥žñÄž|Û2%º¾k†ÔvLÂÏqi .§‰=0Ë[¢ÜšÑN•Þ65©¿òâaµ|å�yé‘D3%®C�—•J\8'‹äyÉaå ß^$Fá$$;éXÀh§Ç©xA䨱-Š×6"«SZ¬oe‹+ªãzÅPžÉ7¨„,gî½`u�ÔÇô|ߥ|©ãCY‘ÊS�ØjŒ[’{Ѭ|š5f�Ö·ç% •ÔØJZþ‹}ΞL7ì}^ba µú\àÖqÎ)óþ/†¤î)go¨•˜XŒ_ö%o‚·~ËŸqZc ‹•æ.Û˜«rp]®ÏÖ0þP¼€Uv˜»©óUâø~ÊI4“Ȧ³Î�w7›ˆŒ¥A¹–8{i£¯i¶JïQϰ®¼H©¬‹X]…ªŒjòBù¾•õÿg¬rJC¸bò’ÉI7žÓúØ+ˆå¡z³pl®Š�ØþUb%úþ襦µÖ!d€£’Eb¾‰·ëYºd ¼cQ¥¯–Ðk­~dÓpÚìàh#0áÉúMt ©_c«ÍOô!Ù UcX‚ó«s ¡‰é¨÷)ï,^À³7£D‡£†Â|­$Nƒ2ÝPàçñî'Š|‡¼^æÊ˜fj×é×S�MÄKQc Ï2¯žeÚ6 No)tÞnÒlgjr»¨÷ëäÕ[+‹dwïUb®2^<Ù¹ûÂo«Þ®1 ')ç$1¹g‰)IÆb´@ÉotŠ_óYÙW1 ê×#Óª±Àe|/•^L(˜7uÇg�Vh[tšº¨™`i”_�Õ·Ä%…KÓQ§ÙÚýÂ]§«ò‚ÆÎœÊÿªÍúU˜Æ._b¯³Ê·Öpí)1ù©Ñ8eÚs´_¦ãZï™1 ]¬íÜ—§õ,$f~Á£îQŠBQŸ"èõ}Ñ�Õ‘”Þ¡ÇþŃôÓ"ô¶¢Ò¯Ð‘Ð׊4âjVTŽq¨åL¡6¨-GÏx `È,;3¸F¸#X9ÏqNôð´ÇL÷€öB¬[ê¡È™º!—êÐr.J JuøB(å‘ÉHx?[Bû£×BK¤A�åonS¸ö¿”ô8J•é9qDé,´³(ÝI8x6�°-.È‚|wËsí�!tÆ2½;ã—îh4hnà°¾¾&¼ÛIâj¡léÏQµ×0€Áê0‰v~ÁGîFÏïún 8ί©WÏ=>GÆèG¤Ía€B?%C_w‡'Á]£Ÿì} w0( G¹N^|wö¬à’Ü9ʹQ~·cC£ƒa8¦ü1h×�/@`9‡ÞáØCÖîj�äöž?V*FÀ·‰'àÃ*$¥3N~\èæÞeû—Ì(M/ßg¿Ï$C¿ÈÒ]:Í]iCÝ»þ_ÿùãß/üãoxÝëÚMJ‡OI¾ùõCrªL%¯Þ«ø>IùâóòþÓô‰_ùd9*oqI//Ó4ÒÊ, W��8äÈä¨%�ÇQùšwä¿ÜÝÓ‰Y{?‚e§JïÒ(gÖ]TZyÃÞ°ÉM–×2èdr§‚�É*·*ì©a—-3ľ��û`÷Ð�†)qX1©L¹Gv5€‘ño4TÑ9ž €ÏiºŒi"ñÚe'ŠE¡S`ûyú?ä�êIÏlÍÀýR*¢¡›ÚBlâ#|í÷á(ïChꆋ%_ï¡a¦é·{ÇU<�Ðc�±«F·ò’P�î2ºøÝ*·g'õ(ª¦ãmc®OŸÈh8CG¹å})'{*�«‡Jñ4â´¦%é=�¿ëq›$TO"Ò8Ur}>öeí•ï©݇õJNä??USÝ5t‰T¹ïì)ö$”¤–uÝÙ<1¼�²SV®ƒ�Ê›}Ÿ++^¶ò¿æízZª:…´Ã ¼º}•À©žXè<ÇÊ‹5™†`âx�EàJ½êaâàÖU÷)öwõhá]rO‚σ ÞÇÌCÚ>ÎhÏm7RmwòlñÒ¢d••µEw‡•þŸz�±ò–ÞV�&78©g“óXaƒÈYÞ<¸RÈÃ"¿�ñ|�>�8€(»ÓÀ3 Z³!ÅChäTâBâim»sÆ©ò ÒmüdPãBÛùt‰…¡9„âœúËv'°Nn72N‹\ÏßR îf«äã%£o�Ô³ÛMk Šzªš‚ƒÉ%š“'âwåªî]ŸÔ«Žm+U=³üîÖÐv3\4²DrÉ¡µŽÝ5º:öP¡Ã2ž4N_j‡NDLðMOT‡„c~�å5>Eº’)×ìùQxÝä$�ZþëSã¶zž/X”y"ÞRñ\‹§wñ%ÂN);,Ó"E ¿E�¤tš<Ésº•֪DžŽÍ©ÆîR‡[’ø0“íÊ>Ûxž€š>õ™�Ý�»4PoüD ýµ£{¤ð:Ò`iÕç#'‡¸`‰ÇùâÏüÜËöÙ¯yÿ>MÐÉõ/"C`5re=¬ÿÌü¿÷}½<ÿoþÖß�òó¿¯öÄc†�6vü®³-ÑäÄÿÔ†ÑjrTœŠä}ÕrMêÇÎøY) ;R~¾Ýgï¼—ÃÐʱÿÙ[¾¶ðþ6œ•>D¯ðz %�F}ŒØäPZh#¿xÂAƒê‘5™@õú Ccšaeeš…?[˜ST‡q—Ú…†Òv·Í2"lú¿èeÆ~žÒJÄ[‰“V¼:&‹ÔgõyC¡V7¯^úÖØv•ì*^Ð-æDPµcê½eZ…nEÿÁºJõÌ£ ÀË 5L–8ÏÛyõ„j5”¯Cx§h%œEe}Íw>ÔøzÓêû+ñ!/ÿIs™“Ú’5kZ³X¨½@¢—¨G¥ÎCŒ=&qÒ¨‹j¡á»s"Õ3g§gISøÎ"|gš•8li#ø©Tmžv}é¤t/÷o˜ó„\¥È M‡*EÇéŠåkí¯ø™^#Õˆ^¤žG'‰�7U®èø‚«Ò�N«Õ“-O÷…œVovð푺tšr^ëøŸSãíDq S´¤àY¿ü t¥d¶ºÇ”r–ç¶Ûu»‹îE㨺¬¾aüëù* i˜võ^Õ¬á<Ë}Ñ—ù@ñ Ïg™ç-'©H=ÿô0϶A¿o×/œëóS‹¯q> o?;;Gæ÷!ýÅÏO‚€'úÅMbǃé6tëAÔè§záCé`o.ÿ<«–3¸§QÀå{YóüÓþQuâ €«ƒäY\Wå]g ìpβQð€ÊΫÄÛ=H~¼Ô/ö��¿�ЯþSÌoæV`•ó@Àd/ÚÇOàŽIíåÙ{o×äÂõeú×CûwÒ5“ !v£Dî'gÁô ñÜ›½sÈyp�çBzÖ ì%O:¼¾}šÅ]£€†›¾Ð¾.žJÕNqO« ¸ÿnéö+z½OƒúÌ»j4‘ xªø àe®vŸ~yÿø.ñË-¦Ýñ¿—èNXº£±Ð²‡2)^º"”¶”wù2Ó8ñíêú`l¸�0ÛMtPžîA>W£1Qw¿’Bì›!äf”ú:ïA g žJ£Y¡nï�ÏËäbK¤�j¬aŠéó^÷^7ÆE+nÞ'îÙ<[)¡ïÙ—ó#Äab/½L‰�oû�¿þ�Ï~ž9;¹Ÿ|ÞM®˜òÙï÷¿Ì»ý^àÝsz;ë œÞúg¿á:Ú¼0V˜Þ~ôo=_�4Ml°dãÜ×|ÕWÀ×ÿ©¯-{ì=FªÆ¿[yYMu*Šª^Û˜—¼¤øÒ6€«SD¹r–çïý§é¿\½cýNÏÐ4�‡|g¥hÌK­¨ƒÑ@ª@(ån°+C;g}%ÊE_&Åó¬7yÝÙuºÅxÝc3˜Û”>ݲÀýÞ£M�~˜ #ðÇó¶hgpµ' aAâ»=Q6Øú~è%yК� ²ŒÄV†ÍqÀ GÚ/à½üzšríèÿ˜� èÞÍÏÚl4Cdº”•´Ã;Ï#‚ÝD;ï*¤�„ò�Ê×t¡‚Ì×Fi€·QÑÃjh\Þ�éJÑ«C Ó½R�>�£é’®|êË»&Ñ3>»”2GõÝéÏG8ßë�’åF&{íÇ1€wögþ}çèp·³È¸hÒÙAîUãöóìMß®˜\�¬½×dÎüòÒø×ß\ò êiûëŒ$U¹•MÌO뵬ØÐKÕ³ËvÂ\’‡Ô*eÉ’�sª;žÖ ‰ò¼áVLð“[^-õ%O­ÿ,Mʦÿ£ê%Š92*üâÑ8×�_k «º³eŸ¨qJ#ÌÚ?¥û"´ƒ±¡½CÓ®‘TS¹®ªÇÇvÃ)Ž$>?½PËxòTD„ê2;©¦q�Hv1 »O ¤<2�­ƒôƒšÊ…úP=ÅsPá[-8‰À=¹båRÂÃ�„§ä�©/�p¢ÁHEÃ-ê"$¯®^«ššDÈÆÀ"^‡IÊ/ÅŠò£;èJŒ¾;þ’èY=\çS…c©ãŒ$ÞÐ#À(¿ê‘;Õ˜ŠegeÎ#±ç âñk+�;ð[€ç]W�štÉAVJi=[U�9)¨v£.�Óm©GbJt ˜ÝH×hK™B/ºä6„Ü#�šç yklÉsNè¹âƒ½ ®'‰ÑéƒH”rä÷ žr=¥q¯Ë´³”£xEJRr q…ÈÕ—©?¤¹¾oõëøä]uKyg0ű•G)ÆŸöY$}AnªŠ9eÏÞöFÀƒ•/pÉ ¹ìº®&Y*T=œÕ“Fº~,[á¤s]£ÏbpCAcú(|«z(Jì͹á£üŠ|+qgs$îJžîÆüŒ‹Ϙ~ý_ÿ&|³x¾áõîSFÈô¯ÈÙ�n×`†ã÷öÊ|¿ø3ÿ¼ë¯ü|A’òOö>íÊïj?vöéŠö‹mŸ’¬h4X•Œö ÂÁûþ7ÓK5&Báé"f‹a-oÍ¥ô‹êªì·á¥›èÝÑ~_®•g…‹ïpÛ> Îù©ãp˜!VB­,ŸÈO(_ÆÄFÀò9ðG?¸R^ �–öäÆéÅ�üÜËïù×¥Ô¾�°á1Ò[¿åàïÿ�«µ.I1Ëç`»÷J×Íß®N?ú?ù\ Rlìû�¾ùá»þ· 펤ÈÇŸüª//Ç»¿÷�ð©Oÿ6üÒ¯|Þs|öÙï›ÞXøÕžú0â…å|‡ÝÓèÅý[ö¤/å{‘\_.ï?MŸø•_-^€_Ç;" |ÖH6ÛÚ<Í”Å&În›¦ »[ sªŠ«@s9¾\F8:„ó«Ô{ÑÅä•lhåªì :Vë ƒOžÅ0鬶9DÃ&8».�5ë½¼›`Z�—y¦7Ñ~{ã[•s˜añ¼Uº¾ Z/Ë#ÎzrÝ©§­#Ѥ•“qýb!̇)ÒÒµS²K)Œ�F¾uú…]õãsryU{�q¥ç¥>hø|¬4ÖŸRªº¯‘töTò¬>w} $÷À~É @îÎ=Ê39æû£{àÊÉu_Û¦K²'$ÜÏ“q†¶c½@±Fpè—ï#ØK-~¦®–öï¡á^eî± ßy—òfbäSVÙ "Ú)§ÎC¼ û1÷,›xüio=¹•kõ,q½oŸÒ9 ޲„Áד³7zAV€Ø´²Eó8ÍõWãüàâ�ˆÍƒI‹ROÁƒz˜‰é¸xp�QtõhÛÄÄmÍGG·++@£|Ý�ö©À{¸�õí¥=Ê:Ö÷ét«¸±Ä^tÒ6Å”ÌÇ—¤~�[(»Ç–ô’ô—XêQ󜤼 >µ!Ÿ5V£y<Ï¥§µ“I¹‚zP~²e�˜`ü;§m†u¥ãœ¸ŒN¨Ž.v#—=ë.“0NipiŒÍb–̱þ.v^%23 ’ÆÚse�“RV¿à Ρ=t®+x£At\ªÕ3ŽÔ³rdåüê!u–q¶œ 6…§ÆÉù¿íæ+0�¥l[±“6ÌÓñ†ÉfB18NÚ/Ó�ù¡y赺»VŠõ§x×]Ÿuœ/„É|ò ¥I¢"ÌJ§;ÛYkE¶»«ôO ¦ »[¹]Ôùç 'B‰é©xL»`½«ç‘ILyou»²:ÚÂYc†Š§´òa�¡hʺKü¾z’2>ÊxW�]*%¶$å<š S^’˜„µ;Ðú¯ÄVåWgj´Î¹f‰é³4KD�Õø™öƒ‹™äƋե¢À2õ±–¬lp¤G2åtÚv�_I,N‡¹€}Luâã<†V÷�áù¤b|Û;7#à$Þ[šãcj�’64Å~ÍÛÁÞѼW„ñ�ûJc-MÎs×&üC-öS1(­^ R§©?g:1±ŽQv$�MÄL‰NÖçóé/{âýøßø!xë7Cí©suªŒÞ#õ²È6ê½ãK¿Þñ¾Þ³Áø£ë'wê{#|ü¾”= ËD` ñ�l·=R¥y® PêÁîÃÝIñ>›¥×Î}äc_�MVªà×BmtÛ�Xùp§K;oÞZZ¶Ý€»˜YšE¸, Žu»Iœ 1\éh%ÞêôÔ³7ÝÄÂF]”)ʸRæ‡è™^?4t;öšà†Ø¦¤5ôšY3 R¨?Í`¤CGƒ\Æ §©ˆr®Ï��äñ7(ÚºæžôîŠ0ôXuÔ±‘ŽØ>¼+‘va»í úp;þÄ—þ{ð›ŸüçÌ+Ƭ/}Ó›6ƒãwÃ^û†ZåD£E˜‰Úú'…j›Þ õ\Úå{üÄq"§Ô{V�"§~éùäÄûOSõ|1Žw‘"æ›vA‘c†äø 9ŽJSz•<Â?š‡‡ä•NV]mJj"Ëå²»ìäª/2XŒH’² ò{Ã{¥‡E=©z�N3ºrD*Þßul¡ÆÎÓØêI3¡«Š,F:] �%¸Æ˜ª·ÑdmСtLL-OÁ›ÌÖ©�ïê�Ÿ αÆÐ‚û�ä^e'ž§h8jž,ÆRÉõE#ƒ5{4Šñ6Çú[ÖF+ÞòA —§˜Èv¤ªOñoQ5¦ÚI´ 碦}(ÝVª®pj,GõÈZÍ®vð”‚vés› ´ìZßìä&7Y=õ~iVëzýÍ®j#†²ÇÛÝãÑî¸e¸é»1ýÀEnœÔ³ÌáF*FC,¶Ýtu¾[¹‚NÓ56ˆçßy6„”¿G¡ëóì¾P¡¦‹ªþIÎ#mDñf„žò(Pj�±ü&Wº†õxþ�4&à»,wîÜ·¤t"f…“ŒÇCöåÊúkãOL·•¾×¥òR5óœÎÍÈîÞˆK‚x’~MÕZš…ÿ,I½9à@Á/þõŒKÏÕp�ŽGÉwZC¶æÙ™èúœ;`JÊ…ÆÂ”ØøªæžÔL¦fŽ„÷EU�Íâ ª˜)ãöN›NbÉ-µ¡}…fqº±¥¸Š3Þ&Ï4õ|;‹Ç×*krœ/0 š&ý.¸ _ëJ¡l?E‚WÛ-7­ÀtšÔ»µÂ¢Hj¿ºþ)ý/÷1z ÑêX Šê9¾*žæ‘¦.c’¶ë98D¥mh9/�WüPëcðžŽâºF(¡áM`Úm¶zü‘Ä$¬ôSñ�GÕ¯±� ätTÅ÷’ÆðšôÄÃyÌ §™‚n@¢g¬Òþu­»a³þVL°y·Ü‘]Ö§DÇõR™ò1›£¹WÔáiJ~\Éî‡uûT›Y]C-˜_hJ±ë¿½—Ç�b“l¥BŒ¢qXëRã"ºòÈ•™»OËTï t“é\ù¥®m¾�2KôùsÏa"ÀŸßÿB'6~óÛ%& =2d[y¯HÏ¿K)ðz>�åÙB&¦QÚ#¾Ý÷^> ãOãsÔù�ïƒïþÎo3…¶ð¯B8V§*�ÿŒ³¾5@à%q0À+Šñ¢ò¢˜}¤ÖE¾'F׌§[J ~¡½ÿ4}âýdñÔµ�Ë:ZP¿ìýA\Þ KaÀ@±É€0iSÒìØ2¬,ŽûD'A„X¢©¿n4ô}äÄ,$�(Ý-ꄎ.!“ý( -]wO�ªù3_û¥<¨?è<ªÊ\’nmÿÔðhÞ�‰­è¦·@TmZU`¤Ÿ $|]¢ñ¥GÕEuyɽð;xdç4.v˜ž)%µ«v�'‡£é×E±KWpE¢+ŸG~6ΗGÔµïú¼�Çà^¦Ë÷ü´ÖOo5¿ÉÑ�¢î ^Ä#¤Ž´=’ýÞ‰ö„˜ á ÷K½C¿ÊÞ¨+ ‡e6o¼Éë�ºàæ.}m¬)¬~ÝÅË,J°e”Åæ!=-çXöˆÛ¤C9|EÝ;~Þ»ÌÛ"´ó`§Ó9æåE¶€óê[”‹Uù\<ÖcÌQ]Elöî!l©Ÿ/Œ"òB ›;¢xÏpÌ:>ØdÎ[â�ïEŒÏS9|U%ñÊ„‹;ˆ·7€§'Õð¥=Éõœ¦ߌW–Š·Ò`ds‡³g{+Þž¶ãÌA-€½§h½Ù?�»“( 4Cðî`CÝDæÀǻ϶h!qj�ýµ±ìµ:C)kZMa+4j´ÎžËdô¡»E*½—c(ËÕ_Ø™à¯ë3¤§IÉCß›¼ü|$ݸÛD蹓ú˜¦rh2T-u|¾øÑŸ{uÿ4aRjžu‘%§Ud¥w<μ¦ÈÓtm|ÚÇúüûn‘-Lp }È示ó%V=jÒ ýÑôâG>MÿÑŸýFø‘|7x�·:ö£òÜž� ÅÅ@«³÷ä�ÐM J9SÍGîv¹ ¼Ä øâ1j s‰½&:’×3&0V@‡wþr¥}½â“ò7”€ŒÂìŸ8Öâgà—~ùWá•’x#¿{€Dt3h|TÿM¼•]^-�…:ŽªÚ‰ÕƒÉMôbm$ý ÒG.'5AR<ߤ¿Ô p‰(ý ]¬2†YÞ¬ÜDg¬D%îá’�ŠM W"¤ÉþEÅɃ=B¶c•¨ªæÔÁפ~J‚Sö¨¤UoÔƒêuWj–qÃøAãQÙâÀ»ÚNþ#-unX²'ʼø7×­}êi8û£¸ø§S<«’x¿Üöä:ÌØ6“.Ø&ñ(’úä™NO<Ë/ݘ>ªòÉó©­þ|®ª7OÓ¦Ûê¹5‘ 4§íâëµ½WÈiuÍ#ÔÓš3‰Ö.„ø56«EKO{ís°–xªzöÓÁ%ǘ›e.SC¬’}]â�…+%`S%¡ýÔÔúÎ3Öcëóâ•ÆžRÂ×'ÚÙÆ?ÂÇšäƒ5Ú4}�=ÿ¼÷_×õRðqÓ�Žâ�ÈSô_3Þ°Ýció‡§g‚§ÛÁjÞŒò̹¡Áσ‘Ø�Ÿ_IlŽ=vçÉɽÂCz^Èx¦ïä’ìY¼Š,Éî/Œ­bˆÓÇÄO¯˜w€?L$8¨°Œ!ÎS68^jÿ³ÇÔ¨SÕ‘¹‹\Åüî›NBbg �"ŸyÊ:y~fü:Ö£c¹x~Ÿ«1©·!ôc ¯*xÜ”X¡›mè|ª=a>Ä"WNOY6¼¬3ÃÇ^Þd:¦öNAàd”dbÆÚhä@ªa‡âî“úx]¹è~qp�éí�(kLnhi¾nì�*Üî¢Iàòd!,—粟%ÝÅõé³ò<áÔsq½ï…ù¨Í^ûPBW$õuX=�à[_‘\çFwm† ÕS£¹¤8™—U†©¼‹cüø{×öy¾IɘèQ¯±ÁÜí|h—ÏHwÎÔÊu’c(W“ÄPm(â/ÀnãðÙÚƒÑBÇæ«ÖÏNëslâãëHy!u=DN†WÁ…\ eAtöœ-Œ77Þ)Ô3þ´üR¬AO'¾ÍZ¶‡qÌ`¨†<®ŸFR`D)Ô5ü•—ŠðíWì|å0øõý¯Nã§N6Àã${DrQn ò#Ü- x_G­ä³ŸûÜ£|þûã㇬ØKâ?ó* `pû{�ßx1ï2zõãâ¤ëPËQ/§µGðžGеøÿûïÿ.|Ý[Þ MìÈFIN�#Ž�ßÇþ½ U^�„7ÓæI\_]˜uª{9¢š`ÉòkD,èðk Ó ˆ:F¬g {˜¢ùú㈼SÆì®gN­¬¾_Á�#r€ª#ÐÐôØÉ­#2A¯CQ•ÍfüD€ö qM ºAåsÅ㈧^E¬-+]x%�ZÊ„�^ÌùîÁq™AwÕÏøy€r <-ßgTÌú@‡ ¥üî}¼v>uÏ„ƒß=Ž5JÔ_ìëýN€‘£çÔgÃ;ä»—Sú›ßy(:@>w§Kìit?ñ~oZ©ìÁó¦þ×{×Y(£ 4Æ-ºÂï�ž-z[9Ò€ÁXHc©žòeˆuPza4×¢Ø^Èaˆ\¶tߊÒáT+¯¢“®UJòMtÝÅsÝUòMO"2;±„–ØPÐÝ#Ÿ¶2}ù�ˈ·ÐÙ>–z]¯ù_=§³ FÚ¥!dÔ[ífYj“bÅJ?ù²²‚@¿êNn"{€ê5u¼Þ žkìA 2B‚‹½´ÈîÅó:—lÛÁ“XÕ§ãÉÐee¬Kbmo1X$F N|uwæ×ÈïíyÌ Ušú㈞^Ï¡£�=©�IyÕb“hL¿4RÄÒÅjx"ôqÖàrÿ¼º�Ô¸ Éj.òžÅx”>�N®�®<»|"—ºû£¿ƒ[V�Òx‘Dz„Ic£3bÖ (f�QÖ†óLÇSYfðZ*ø…ÞÏà ¶¤±ùŽ®OÚ -F¨1ÖU °¬­™Ÿ4kŒÍØŽJ·Ø¢“vJ�¾¸eRî§m|•GêuyH1ùb-¦’Åæ’'²<�2î ?ž…ùÎ]‘�šÛ˜<‚íÆ­×eUAcè„Æø¤«€çûÔ‚¤œvÝ<9ÁbŸê.ƒe×ëâ çv½ƒ~ت—‘‘ÇQ=f“€e¢¡Ë`;N7è‚•IìzªF^¸2¼,„!UêEB·ŸÄK™=‡F@“˜ÚѲ\­»¦]Å0µ£À<åWwSb^HTcÉöWøï^‰I=?þÑÂ^÷ÚÞð5ŸêåøY½ÿë¿ùðMßù=ðêKB#>V�Û3$Õkš˜0±…�,a¢ñûÊ¿ ÒûÒŽ‡.š­;ðÈ8z ãúûe_ò&+XWÕ½øGgÀ÷FRxÕKƒóXÑ;\ðå7E~x7Þr:É+d¬ÃHÀô�áö”󭥌iž‚úÒx_,“óðgÖúÈÃwZþ¿ù·ã?€×¿îuð-ßñpoÂÛŒ’ÿŸ¿ý7åÊqû-Þ7|-Þ$â()j¦—wY€BÒ °é+RĬ†ºÅd@¦�Oõ M�zXÔ+ñÖ×M ×ÝU—SõÀ$éÛIcdÉôÊbÆ)uÞP¥�ÑwPL‰^0� n0ONÍ5ñ¼8ý‚ÿÏñ!®¹|Ñ#&‘³”€Xmwéúë´û�÷,^rê¥4_ðfôIÕ;OAhÅí÷ás«›ó8Q$mXÈÑ5¸:T]Üá£m7Ô˜ÁàKÈ×Óó,zYšŸùŒ#@žµ"ÅÀŒmàÖü2Ï$éçYéQ¿Œ3¹.ÏÅ�óLa–óã¡h2AÊ ‹Yü/RT¢×ÅÌ!±áºkï ±?â{�Ú×»,LjN—´»îdô²wDU¦Û$ƒ¸ÝÎkR~R½ó°Äœlò½mÞÃ16ëø¯r|>Öª®¢Š֪㠜Ռµnür’z„¯[eå˜@º÷%iÇQˆÐBÆ ¿ÑÝÖ‹(4T3´X¨Â⦊“¶U�W„Pè‚w“ó !²³ð‹ÅèLø™ŒÇUì¡»™í‚ûV•œÂK�ú|ÊVÆÁªê0ÿ]É3�kßÑ„w• ÷OJEwÞ§ý÷qÄŸa”ëûY ÂÁ3l×ÙÓ(’S`k©ž+î�ŠÞ§øÌ•‹Y²“»?‡(‰†Þo9ã•)·«! ÝphË é<”ÓßÇ�‹nef×]wùXlOY5Q˜cξlhü³•Ÿ=“ãè¢R¼+ÿYŸ«{¸|•îy앳s¿òìn°B§„»ñõL-IpÓ4<£=R\·�V/ÔŒédDtƒ@ (xr‚}¡B3Þ ”\®V?üÇMSô±“p§ƒkÎ&”¢ò4`ÁΠ›ƒì_•\[³‡�UáàÓß|~ßj_®Ô>þ\3þ~�úGïOyÿU—|ÓÆ»F ïy¤2¾û e>bú'?ÿ‹ð�Ä»Oó¦C5k Ö~”F ä|·œÍïg¼¾êòÆEºmàžw™°–ãO難ð}!kéØCO~,º¹„�Ü-’4:G½ð×àø‚‡×tr?äŸÇgW)Õ;“ÅÌR$°™WAnÎ@OÎwRÞRõþÃ(M‡mµãXbHÁm» V¾¡FY±ñ±ûˆ£‚��[ì� wóàÉí>÷×�ñ…‚‹–ëgSî!B—Mºgç=£±v:ºæÁØÜìéTËu:”£[>j±Â°Äø8óvSeÑ6*<ÇÝ~žÜ”­h8~!�¶ƒc¢©y™T™XÓ€ub˜-漌•c)‚ØÖ 4æ]é§­¼§·Ûñ´õ›¦LâFx¡Š�#{ÿñjÈ\ PI�„|NžqÑ[a+{¥yZpJ"ï¶EgŽC7Å�šØóO½ÿrùœ4&˜•É m×òÆ-›ñiñÞ¸5XRb_ÚŽ§@;²D„#ðÒ‡z–7jô‰Z_õü3o5) ¨”kp­p•¾¿=[óØó¯RjˆÐkN¼õ™cìüþ¶zóQ:iY^+±x„¢Áwp[Ž\PãÞ9±¬z ¥ßŸ\Ö�À™å”áá8†'ñ¦,7Éż‚⡈Kr?,°bÅ1ÓTØZÊÕcÚµëƒn2TÃAʉÒÍ*1ó´…ì)«FSô”‰—ö™Æ¿˜OgYÑâ¾SO�ñ¿-�—�Í÷ðí~Á—½:z[VÛ1¬ƒ!ó.Žw�ÄŸ PåSÒßel{/ñJ"vÊ1mxDÙÁ¯ÞX°î°ˆ;EaiÏ ¯ô¤F¼ÿãw>çÆ0D¹Íý üRóª1þíiÔ~!c¥}¾ø éw>û»¢ã`¡i쬨—¶0!pxý{wÀŒ(8~®©ñĉ`oá€ûû!é­ßò�ðe_òF@¼0øJw`õ> ãØà7#PÖlEÌsï¶ÃEiŒ¶V4ìê¶•›¡nwÂ`±çõti\Ƕ±G`Ù±–¿žâñ¶¦OÉØ{­ª™¸êÖ'õà)ÓìCÎØly4ׯŒ8¤ýY?š±ÎkǼå9ÌT¦TÖ=Fë`¡»ÑHc*;£M,@ø`d “Äc�K>ÎB·ëög=7,—ö¨wØ€îÖ‰ÊQb%NIyêÞa}ͼ£¶ƒ?ä)ãš½½]$±²x.8à¢V×Í0”ü¡Ëi:9XØõß‘ª×SÖØ­™I|•­‰ŽÌø%ä})‡U"¤räFplmþªŒ=BÏÞ;.´™<Õ†Ôþ'Õ?%̵Ћ¥¹ÖÏEû ¥Eí°Ê4_�©ÙöJ ÖA�IOÆgU­pˆ[­ c3 Í»ÁÀ7ÈÓyÆ„•á¢FH»ôûŽ”d¾¾æýÀ�¨¿ïËuh=÷ÎÃ5ƾâ'åÑþÉ^†]cž!íáÀ? ]åq4€#÷ù¨}Á»Jïe .€<½õ êp4K‚XÀøINÆà|’©œRjç ¿»Úï&`Ñu™\ Æâ13šû%Û�5HW_¬¬{×ËÒ`á‹ÆwŒÞòÀ½;QࡎŽ|¹n8š{ôåËÖH¼%Ž?̺a „½š¬Î¿RŽÕ‡A4ŒÎG%¢œ‘»kùÝXÃÔçf„Øl_v¹7hp&ÓQêa�º�ÂÄáÒè5¤²;ðw~|üÀ7¼þµñ¡Éf0¤Tãß_zõÿžszÿOþéÏÿs¹º†k©á)r±œ×¿þuu#Ž=ƒÐg\â¯ý«ß€‡¤w¼ý[‡Uy6h¿Êf3‰™p ËÏ~VãXf¾-ct$ g‘^% 7 ÿú÷�Ãë_÷Z¸+‘+üäõïœ6`ÞóH;ÿVƒ_«¨ßvó}–ô�6ãäÿû¿úxýkÿ8huG×ìÉMi:9: ëà±§¤}æRG*‰,!)_-ʸ¯+yÒk;ÔŽ ÷ï¶û4šßÝG9‡ßžžáÛ?ÊSŸ�céÊ'ÉÔît7l2(¨À˜jï#º¿žôj˜ÂX WdÐõB´?jmèòQ÷#¨½úßÍßu^FГ-Ų5�ǰçI#ÊPrÊÓÀŽ~ún0—� D´�î9tuyó;õnGx¶äåÒÞ�ÓWƒ.ßÈÜQ‹ÌãjŸv÷RžVÃåÇò †üF5ž<šG<;žæ¦7=Š»±©òú– ŽA íHÏÓ=ò÷s1Ð`ÁíU©³µŽ@4`H ŽðípùA��®=4°á!@?8 gŒc´¬\¯/ÔK±F"Ç–Ó|m”Ö0mǪâGO$jì:‰Ñ4×�£é,XÑXX#c…žˤêóµºåº”'%|ýôÆabûyR¯‹×ZG~¹gaë²Í­ûZšV5§wÕÇí[ŠRoÿñûˆ@A¼¹0yï0é5L˜ÏO§êrŒ7ÔŽ(^ÞÇáõ½ÖaÄ ��·u@Ou[{¶Äá¤ÎŒøR¼¯±åt½b�ó »]NOœšµÑÚÎ9¹�š•ÀOÒ….¦—ä�¤#%[Õ q­›cR”ûº£&�<�5á+1æ ˆk®0V§[¾ù¶ÉõŠG™.W‘n™%«à“ЮÐÓ?´Øst„;QÙI¬ÒÑ"´ ;×zZl½cbp>z ´Ø“Kßì¡o’ö”-Á xRЮô‚ºãs€=]„ªÜ¹ÆŒ!-Ùò2>ÝΨ©öžŽ­²[±,ê2æÊxd>¹Öq]vüæ÷N ü5y»dïiÝY‚�„Ñ%c¡²±(Pñ¦zÓ­g ﹊*¨üÕ>a‡‹ÄŽ��é]¥Ï®Àv Ý”‚ªk)‰A�•*ˆ@¬ACPè¼›xê¸ÊüBƒ÷œDÁ˜kÌÛ�Rûõ\éJ—ïiš"´J®®Q» *|ÆÏÈ_æTŒzlüˆ‚–'ìû×7CÐ7½íÿñêøì×ËíÆ—É)S7LxÅ¥ßúíÒ‡Œ—ùÁïkîê6‚ÔAñbøµzÿ±çß×ý©¯ê¸V™Ì>ÓÃ5FË*·|õ¯¿·Z¿‰Ûòßþ×? _ó•_îî6TOZ,ª¢¾ý‰\1§¦ÖöOo4óhÞoþZu�0ù×þÊ»áo{x,À¿÷÷?°•õ}à{³´³Ü™†zPD"ƒJ,'¬;_²^ÔÞvzŠ‘�˜›N��Wjl.ª±�‚¾-ó¤ÊŒ뱇S�eÒ r¤°Õ]eÛ¸‘· Ž3‰`ÑûÜ"ö$8ZÕcOc‘·–¥¶·5­…O÷š^Y<Ââ-ØŒ�å=7g ¶¹Ïöo�5óšt×l¿C¼§ Ó£tüª—[꟨$šîi¡–3R V�‰…~|ùâ%ÍPc¯óÞ4´¢Kÿ¤ñ-yõ£‹)•õ.è§;’´~Û™X´YöâAO–RÎÑ‹‡¤miû’Ô‹Oñ³¬IkNjšîžÊ1ï|Q·‹�âýŒ_†M=Õá"swÞ©”ï�'ô�·yH�¡9‘šÙSûÈá[µk¢t�‚L]`Þ®¸Ë§ éyðú`•VB_öúTõÊåLÝtÔ†½«Æ£…ÏÕKð0Q€ë¬;�¶´Åogß÷\NŽI«ïªÑ]"áCóQÛ²J;¼~ü d;-ÎÉ-((ÿCvÑ«ùüê;Ö]}K>“…qü‘ãIœŽ7uÜžN2n&tã°Õ;¥iŸNÓT�¨qõ¨ÆÞ,u¬¥š«=kZýÞÐèwR @ðOEΞ$6áÍ 5¿ªQ³ Üü1Ð�òYækÓª×`kR%ßTåä­Æ˜œëòS`0�NƒyœÌ+r"'+h'Cgzv5£{®“_õž±U·TÎ^=w¥n¤ n÷R‘ ÃTWÞ„àÙÝóa‡'Œ÷�6¥ÍbPµCïY(k©� ¤„¿gLèÚÓÁžàðº÷|2:‚¾¢¨ïh�§+pð�~ z0Ñ߸ž½î YGÎ�—úç#£1f.ñ€ê£~*xƒ®»³èë³A¯ômóÉÆ@¯°j½M$¹ÝsÃj‘ÇÛ oF©+z­ÃX0öͽ §œ_Ÿé'FÚÑ-N^ÃIö Ñ9¹¼F;èÚ€­Mòbþ¬Ia7#Ÿ!Øï¬]¯Š ¹lãÌÙçá»°K?üý¹ÄR{^Évf¯*/—å¼ÿ¾ãùÿÞñö?¿V¾%ž÷Gɧï04ù!òéÏü6<$q*ij…Û�3Ì´ �wzIýùÐG>ö3þqúÄ/Þòü9xÏO¼øÜK¤r>P±‚þ+Ìë±bÿ}—y[6¾Ê|ëëÿÔ›%àßýû,»BÃΤûâ¢GÐKb4VÔ ƒ—•;¼WfOUEÐdö%‡‡¡}øëïøúq ùS£|åM~UÖš…QÖ|¹£Yߨ¿… úz²ÃÝjí±(aº»ù´sžàAõ,…~Q ƒ;ºI÷¼”éÇ/å÷F~tïR~y¦.§_Žd=Y½¨‡¤*íTLÏŒ_ y:^)ÏïloSã­ïjü…y ‡˜Îk®h·½ö}øLpIÍ»ãêêäø«p¼ªÝ ýDZ`ÌÊ#îÏ¡X…1¶'ïáâø§®Y#lÉaGWD7FiTN¢Ÿ÷xzÞyX'˜ê<-Þ÷í±×:"ƒ}1äàì €òQ>=]ÊÁž¨;srñ›Êj"¯ŒQÛI“ãÕ•ƒÃž= ìÁqÚ,µ|WáÝpËε’Qƒ€´œ-¯¼³ãrS½ÿØÔ<ÜHxÐ;n2Íž|”Xv²Úc¯å_�ÌUbqlÀ£Ëè ¦àE>Îÿƒ öÏ;·Ÿò‘8[‘ ¼ Çi³Xm>YlÂ�û¥ŒÍêËž+§Ì‰°ÆO›çˆ� ¡›À1^×µk/ïúL‡%à®æ±%©z<Ýêxi®mfï™óíÖ?·=Øóm9؃§zñÈÁ�#ŽÃ­Š[[[�ˆÒlj¿¾-¤­zÚî[ƒ y•ú¥�Wö¸;W�8;ˆ–¹“'7Þ�ù05˜ü¡™‹Áex±®"*ó•` 4ÑâÙ�êíob6 †`œ>ýì1z’à�£:× ·²S5¯¼”¸j3²x®ÁïbÌ]QQv,FÑ3ø-«•<ºäù‚Os§¶@ŽwO¹Xb¹z¨“9‚ ±ñ#t §��&¤õ�rŠguA«ôÀH˜%¸{áŠ%m<…�޶3ü™ òŠÝÂÞm3o•C‡²ë—R;Ç«àx Ì[ áý–ö\‹_OÍ;Qþ˜ccÁã÷áXW'·ƒ±Æ¤¤ƒv*aò.¬”éëèx@ؘà t"Ÿ¼BQ/²Üׇ«©*!©ŸSl%Î%®æT=@l¹~• '{¼ _äI ÖqÁ²‡OxXúîïøóðñÿƒ—Çø»¿Wo�þú¿ü7›ñï�ÏÕø÷ÝoûóðÓûÇà«¿ò߇ÇJTt‰%Ænå´Ë积^É Æ¦�–EzU_¶ñÌqé’Øèä�•‹REä6' â“ø${ý‹_þßà•�Ø`÷ Ù™œÆ®a¦ÑÌG3�Ç‹ýÇÞ–ñíß&1P'‹íÆþl<}|ŒX€lüû{›ûɯ�쌣2±Æžššð*ó”x±»F{Oã/°Äq*¨/ó (ñ¸ØÓŠy4áÃ1ÐØÃcòºš«£bªýóyÚßz¦l¤Å#)CâÕjÌÛz»n:,}S¼†J¬=4y¥1!ÕS+Z¬|öŒGñ$œ¦"¥,¦°ÄàÕP¥u2¾'� °ÌZeR?TIÔ.is° Ì6,ãzÃ5ƒ)³!Çú#—?ös›k0‹Ä€+1AݘñÓuÒ)¬«ÄoeÆ©�™^–MGZ–5»Z«º÷5ʱõ³Ô3¨nø7˜šÂ¨§Ølÿµ‚�‘Wõ¬hNõuô‰1gk:o}·pì¿•Š·QX×Vòt×%´êä¦e Îó±lJ½$Ñ÷X[*Û l…¦Û“=±õ{�Ö^:cù e’ùRñðK ƒäA˜Vʼ9ã¥`ÉÆï²Íå–Cƒæ|Àê}'ïÑZcb3O¯;ܮݵÒÏÀÅÅbäÝ}ý¿"ZaÞæ‡Sû:çLTöØãcâ¶oÇ‘�MÝ~òÒ 7/ívx‰û¹8/?-§´pÈÉv2VJÿ/¢oeÍj?`:aœÈ×VF#ˆ ^Э¨x™‘ò72–gç>Õ¾røAïn‡,Ÿ$/{þ�ÎÕžd½-yŒ#iãQòj{×Ë~ÈžÞS=h�Þ`%0wo3™Á-›7¶9{3òÔ¶íŒÞ¿‚iþ­§<H¼%fãèç7Ø>±¿*:b9ç…½}3o[ebcp½pÔÐòK©á´Ÿ7ä¤]yŽñ÷šåº£’àù’•-jyÜe4¹úX= *@÷ÇçóM{“Ë|¯L%S”¦ö;ª8˜(€/ãRç¿ÌÉ{5ê1ä>ËÇMÙ{Uþëà1æ~§‡‹Ö�;}wÇ»—�HyGôa» Þ§®\' ^Un{G»ðŽj»`×Áƒv ´ö¥ŽSæc#8½–èëÛaM”_ëÊÃá‹•uÑ¥¢ížçŽÃ¡”X`¯xô¬³;§P;Ù_tl¼ž{Å÷êÀ(¸C¿¸Õ|mÂð[½&t>tŸÒîNl{YŒ€ewàê ørløñÝoûsðÓï{nãò8‹Ç™Óܲ þÒÝ$óªíàuTáY¿ÑxÂv� ï5e»ˆ&LÐÕ«ž‡èj+ œ—¶‚Æ×eLæÙmE(_³ë¹ÝvbªL¡ë;„ê…·€î*jøÛV+Iw·ËB¾”0‰BPy<¦ÏŽÈµÉ£”wyÄÂCÔSW<Øã’W$Ë.ÚP½Í¶c]Åã N á£ÿýs7¾ù›¿ÞõW~¾éíé¹öûSÿÝß,ñÕ^Ê«Ä,«¦¹ç“�^Ñhë‹&9=ÕS,}hß¿þ ¯k•e…ÕÆiÒ_Âv‘íqñÈ€WNúÔoý6üÚ¿úÍ‹ƒxREþ,‰Ò¯$þÄú1½ÿªÈÕ ÀZà*•ÂW«‘ða‰�l´˜T«oœö5ºÉH“aù3(ÝZåBu>‘Ý "yD>°xl´ˆXVÞRw_¬r‡Z,3ÙAxbYtžªH2} ÍCLÕO‘*…�/ ,"@*Ÿ)u�Ñgñä³IX•O|,P÷³Ï|*¶e·Wmÿ¼É­šþFâ}Î}º N æE½�Å‘�açøŠê¡£ŽµeûcÆqÁ‰GáÔÚ¢z5 MJ£":6ÓH¡û¢×c�¾yÆâH# =Èéñ„5¼úªµîèÕ¿ ¯x/Q9Ø Ÿ Æ%Dò¹‚¦.Œ’tÚŠ!Õ¯&Ü—YúÁ<-Û±Žy¥:ÌStv»î–ûöå�{{q¦¸;œ©�ž(êÞ6£ƒSÑë}íy=zåx�ŒÍ9 ¨&ùðÁ<¬¦Û (�³Ÿ¶›gZ döXÎåzžÒÙ»¹¿’Ô¨¹•÷q=2o®_føöÖ29&ói…ùv±‚Ÿl}úä¤ÈÆŽuŸ7‡‡ÒC¶ÈnÑþyÁÇÍ´sQuyy`o:tœBì§YŽC�þuI*,»Ü2~Ù néׯ;Ý}ÿu£±ÐûÄãG=¨Þ-óí¹ |öäyûiË\è�øæ3®ËM{7M¸ü«8‡ðë¡=lãõ€íËÒ~ݵÚÔn-c’¸�6m¬}¤»ºŸ±Ò¹Õ�êdÓÉ�«â)7yfá\¦I êm >×�y·l>VùâJ?¸Ä`°�k9|*Ô¶VÙ¥oäC8.÷´¶üáçÍŒ2Ûhh®‡Žˆ"ç6’ª®_Ä\™F\'µJó=KºJó÷¬àzà³´ÝÉ‚�Ý3/ˆ´ oËqg*žDmâ9%Õ+Åâi’x®—¹Ö3¯�LÝë%–&¢©z³ŽÞ”C›xÍVÖs+Gt*GYqãNßÚŒü}5{ ÞòªÙKõ¸ÝÊ;=‘ò\·®4 „$�‚WXf{zˆ8WO]R ­ÍT–SìÍøÔ °ùX f1Ò¶vþZ€¥Á å m%‹ŸAJY‹V²g%VÖ$žeŽyW±º³X…›n±Æë’–¢<-€ìm;¦›z˜§ d,^[§Vo‰iw(»©²'Uõvúñøç%¿æ•€Ò¦ÚÎÖ[ºÁzx¡z¯:®íÄ w|�ñ.ªxjpø¥ gÀÄõP8ÞnðoãÈ‚H»y—êÛ�oÊ*î±ÆMk7c^�œ5&¤2 i¯B,•žpk+4×–'õÐ"Ùƒ÷4;EPÊW~Úµ_tα©æerÌ.�U9jÚ|(GÀ•®ãÍ÷«78eÝ€ªñ.¸�ì}9ù ¦RÊ: ¯0Oâ]G`T²}é£%$ŸÊ •(tvBh[-q ³Fä&t u5È¢üjL¾=#)Öw«ƒY AÍåç:Žö@)‰UÙ®x›|Z¶zë8#õmžrm}x¶…–<Ë*;¦Å&1½—Þy×mt1(i©2kò}ìÚ(ºx,OâyX¼~�ß�ÇÇ^Œ¹ÇIÌ ¾æ+žÿçÀÏ3™ñ/Œe‚ÇK(4æäW›œ³ÆWUr<ý=`œ¬åxŒ]“‘rLÍý¡é$³ò©¬›¤¼RRU5Ö™Ó‘r¦î%Žý÷oáŸþü?‡‡¦/û’7ÙæÞ8£L,°{¬;?4ÕX€¨E–]0©o§¨ˆöé˜C CÉ^xaCÛ ªÇÚäåƒðˆé†Äs¢MÖÛæVu—` ¥\ª+jˆ“ÿéZá`z#·e©ÆÒ›%V¯¬µœ$çYí8-삆µzìq|¯Ù}€;ä2m²rºëîºÕÅž4 ô_®4Se­H§içÌWâß“ë©zŠLS{~Ø^f4§™Õ²P54ê¦fåûz�ìëíå±N»a¡¬@èV½*[‡Â0éc�u¨®xŽcf½Ú‡Fõœ1Nh.‰nŽ ùIØÖTcxž2=ž6Ud¶ÊX‡**�Æd¬Ž¨ ¦âåD�§:=0ÏM׆•wg>hbÝ5öıõ&çµÄÍXØ;‰ó²·•Ós¼ îúj@i%tøö1Û€MµÎóa£S>æc b¦½ñ¸?;t®å Šq?mofóQ�Rætb$è  ‰ÈÌ0Ëéf*Gqv„q{ r؇ˆ®>cXJè}pº±«j ê?h+yÊ5©i@šgžj@žÖ,ûÐMùë)(Ã]‰ù×îù/oôÞêбVÚ®ù£Ã£Ë¼ ìã�æ!¶J5LòO Xø#T‰êXÚ žj쩼H¬r-£tÓR=ëL�öHžÀte5N£÷á¥Ì¸_WxDƒs—5Z6Ù«›v² &þvïž÷Œ2åQ¥R./‹¯GH{Ë#Ã¥å§þ½àYãó»óà–2„‘ÿ€¤ ‚4 œH ¦ñWẶ·w‡Œ7θzÈkAåÇKÏÜ/®8¸²þPž3T^¯Ñ�ìÁ¸Tÿ.~ÂxTÖøÐ±³G Ð�zƺÌ]ùÞ Zµqèø^A—^?þЭâcøé†–>‹rÈݾ­ôwtÑÊÁ�{­þJ/æí‘ûÛç\ÖLˆ  ÔY°ÝŒûâìwÔ›æ½óÇIÔ•]>~‹ñï}ï�åÙŽ~yûþÓø¸ñUïŒÐ@΄îltŸºz3ª §õ¾¡¹try=·Î£Ç�Ëf̨²;¢xÇœy'F¶_oçO6[èÍÂîˆü£»Ã”¸‡VÛT=JŒ¶²+hó Ž ŽIÇGñ,t1¿J\­f’]onÊa�K+ùt:”C[I%ÚÆú](±µÙµ* ïØêcwÉó› Æ›[ #–Ÿl+€¯á¶=ÙŽ ¤¬ˆñÏYáÔuÅ¢ô“ÕÏví`¶Ý~5¥mªÔ3eÃ%‡¯¯YëqWÒ÷âý%±çf[ª×íŸj<,{>iPå¶‘yJýœp¥ÅÙö“’´ÞÖ#oÇ•“z>­O78_OõHƒÆùÄ•½¬J,¸ŽyHl2«_·K:ÔCÓÓÛzdÅ�½2y%PG ÅÌTfX=û*ÿ"ÇÈ^–Ú/-†\ò0š&Ù}TŠ¥—ÊZî‘Ç÷¹öéä–^u‡o?ø˜Äóñ|,ÁOÌq‘ù®ÍÔË=.m(™‡™x,¡Amk±óZwÆÕû²ôTV_gç¤ÁæÔ³—ǦŸ¼äÃùãæÂ‘?ø>áÝjçCPT.&YÂC ’±žëb´ååþ²Ã¯ÄP°ÕñÀ_t…NjÆùXKçº$ÜÅÆd¦Áý�v­ ê‰IjãƒË:ÜÑÆ’ê8.ÞÔg/gOà:Ö–•‡úZ·|]û{ãA®ìòv‘#-¦NݽÒò:­NgÁ+EÒa#K¯ºkµà§xžÎÕË@â;‚«×IÙJc€* *u<ˆË­K9öŒNÏ”|1ÔøÒ×|å«ËÐŒš ?!¡Å Ž3m»N—á‹2ºnø(cHøG�Vcü|Ù—ü{ð�ô©Ïüï`³ON#㿌/l�ž¬ãh‚a\�/`ú_òÆ8!(êÙ/™<3ãË�G|ú·ÿ-|裃‡¦ûïmß9¨?šzT8̳~­÷¾ëmß MÅ ð§ÿ�MJK2kµi;óht1`‹|¦‘C®¤Ö]0*ÒSâû‘4²êA¦Ð¥ÒNÊ£Ä#W¶W±CÌIçoN“ì¢ÌÙWÛ-’ØKŽŸsÍbHw�.‘¯Måe½ WKä§>ñX§ÕÓÚH1¶ àB ÇŽ­tÖÞ¶i@Ø*W£_áç³ðTÍødãI7S7KΕçfž¢'2/cÚx8;û �ÛÛ Ö[jËoy×ñtž‡œéfëÇŽcºÑ`‰Ñ©u•Ø… ž U)¾ÃjFÃÛmŽp"¸Ùèð&Í]z*ié¸{,qCëÚ,=ÀÓݧ¬O /f¾?׳KÛ—šyÊa;̼Õòtâ2BŒságlº8õ\(òóYèÝøòt•F'4%'õWì˜çi«a¨x›'Äà™jÒÆÁÎõýì6±Sä~=W¤]å�v.¦‡u Ê£Z0{î‡ÇŽyÑ…²²9ßžQ¤€‹ðÜqo/ù²éÊr¼ÒçûÓßûÒÔ ~=G…ÑÓNY†®KlÝ—•Árª-5¼Þ'Q¦í•@£ò›’ïóî%ì–j÷ù1yd–w4~GBÉ;Þ÷Ëq¿"‚A©©²½¤æJ¿’ñ ãàr5‘»™Hh‡�bññåøµÕ»Óà�ŽÖ•©ùîb×÷M;;tí«Å°3þáã~ôk)ÍŽiï¹-¼=(^ õ«Üúìõ¤©OýÖgÜ•Œˆ‘è1€WS¢ÈŸò³xMÅû�7yhâØdõÓ@¿òº˜¾…ÅÈŸ?4ý½ÿï?”�×èp¦+> ø3U¾v²¥èÙ]èäÃ�§òF\† çBÁI†6UÌ)HSɱ„›Í›Ð<Œ½”Cm”1å§Æ®Ì'n* N¨…v¥IµÏ?ªÓÐùÉwËhIaß'›xÿ%H�Cê#_ >ЏI"n8êèßò¨Iù÷ôÈë/—¯º`,µ¥»P½+#|=ãùÁÀð7`¿.Ú«=‡ ª£ßñ¥'®Á«;O—Þˆl´Ç�á"•cÃ]0ˆ7. MËöt A“=ž“ † „Uõ�K€ƒ\ù\i� ñ­Ëñ꾜XÃȉ å+ä›#(”d÷ÈIDÐ9X]=}B¨Óÿ�÷{6;˜Z?Mq„b .pšê6G²Œ‘+çãçìDZȼü(‡ì¬ªé 1´$ž`�¹ÁÕFꦺ{+¼eŽÿ5Æ“\./•Ã’…ŸTÏåè’®”¸q7=EÅízÀ‚8´šk[8×êbëÙ�a‚cJ•¸R~@2žËvI¼Úðd;nÄÒ>èö=C‹î:ë |Rbf¹ztIµx,r\<K¹F >�ÚÍqùÎåØlßr¤$»úî&�˜¡1Ï1.m‡Ÿ€ñµnŸ0^Öü ‘ˠ±Ð˲‹ó±Á¿§ràt®»#@·‹°ïË¥â{�Nu—^ÍÆtœ·•7bLôO6øŸôô6ab°¤£.᪻�öLÓÎ˯Щ2æâ�F-³ÆàÓ%¥WóÜ6vÜè•wæp�'L•뽃Pò¼p[�œ÷ì‚›Œ’ì^Œ‡©è¥ GiDã*•%:�7�ûc©«Mxi“mYUuÖ¤£•µ£’hÌ ’í­²'ÞQ¶�âþFö>ÉÑáÂMײE,Xÿl|‡w"oýUá#ñŒ ŸØp²]š]û ~\ÌL« y.Š(^§rüñ3ñ 4:ÑmÝ,ŸÐk¦Çcõ'Hž§V¸¼6ocëÀã$ñsãuÂTcýÀnª»¹NŠ|[›¦µí:ׄ`¨Ôu»áútªqAæ 0ï6^x§ …ô…•ÝJßdçV‰eÂôXŽi.GÃÆ#¤‚¯ºSrñÎ瘉2)fPØð¿ýëÿ¼RÓ;Þ�}+Ásñèâ"‹,¬.AÁ]ÉèN· ¥¼{üò¤†bD/\ÚBEûyÃë_ I¿þ¯¬ߘ<´qf¬^Æ9x&Ômx¼‰Å+)½é�olm2¾­wœV1>4•ØìÉg3½ê1a`˜'žŒ2Õ—D~<^,À:2"ˆ ÙP<Ù¦U¥/Uï�wª]—†/•¾ E ˜%ÆlÇâ‰c_‚`‰Ï�®•U\‘�Ç1ȯGï$Uï%Ú]Ý5t]í�Ê>Øë�Ê��µìâíEõXÙS�$Æ‹Û ¦yi:©:”›ÙPÇ4½E½›J«�-^’ŒGj_x éÿŠWu\%µzŽ�õ[ñN”§�¥q¼óè´6=uÙú„ãÆPž:Õ6ÔbT­˜�Tvõµpªßýô AeÙ~™Bà)“Ûê±\<âøK®u59]ú›EÇ`\`ä8BPUŒ*�_k”ñ£�Š:-øôÞ:Ö'©ešCw U�RBk+ÃFe']}À8)¡Ôr(½a3¾ /I¹Ý˜ÆíF*ø 6…-gŠÀ€˜oÔÞdLŠ‚üÔ-sëâXfkØ:×^òÌŠâàO”Ѳ-¯c€¸s-3�ºŽ ÓN�Xƒj˜vªh0ƒ)C»u纈îY§“$fظ²Þà‡®,ë|„]£áÞýQ¢;o4x®M;ÆÊ}`çƒ:3½yšÍÄÞ÷JJ·©¾³¬ Y¢Fè‹ð7î„Îvà´•UD˜¯×C%.ô4—y= ‰f;:ð«§ùÖ'@#z"×Ög�?¼KqŒP^Ù¦ïùì}Ƨ{-òW—qˆ¯X~t«îX;àShÚ ¼.¦k;wšN çT< ~1 çh¢Ì2l„ÖÜá_%º8Žg«'J)Æ{gPO’�ˆƒÇ•8:OÞ"ÅÈö? ¯´ôÕ_ùåÑóvX$=¶|E‰GÉoÀ§ò×/’ôÖ?û�vîãÛÈ�€‹?ùU_IÿäŸý†Òî} YÞñ�ß ï~×;á•’Ì‹nÄvÒãyÿ‰Ïñj²ëœÛë5çw½íÛÇ �c² 2Û¦Uþ9ÔÕv�E õ2[w»ÜW¨× 84 AtêU–Tëp튲²Éóz;Ãå'æ£A@íP£'¶1™ñÞJ< |ýÒfƒ!Lv²ü�´¢1ve—׃Ôï…h^ÄTk¬ÍI»ÇŠ>Gí4‚G" ‡3k‡„ ž£�öBCMßµÚÐÜwcþÃ?¤.\Щܨtl÷ åÉ5·Ñ3J½vuÉS/¾7�È¥EŠó(%ÀQùD7Âí6üw§éa'é ;6Øüô9¾¯÷® Â<þGúÅ=Šhf“ÆÛ*;'ˆŸ2G9M¹1ÚÀ<¸L×¶bBJk5*aÐ�Q?wîé se#Þ§Wù+O�Ôý¢�ûñø€Á}ÜÚvNޏñ•ûº'Äö»g+AL•æ aÎmöŽö.ŽÊ‚Ôg]§Ö{‡²Ê]2ÎX5ÓûÎ/•K!O“{�pa³9é*­Äõ*;uñ£Eë™<$›u¸îÀK‡ÛXèªÞI§ÚXyL7sì% kT­Oâ‹*sµÒ×s¥#ÝiØ4í`‚a’øÅÓ˜³Ïµk¼²#ª)#']E»xÓ>z =Èjð�Ë7É24§Yø‹ð#Z&PÅ•|ëξê}p<žÎ’gZ«ã�Ô«â |ñ¤Þmn«)ÔGg�·¸„l¥ Ö4Þ!ܨñN&‰›HgOª¾äØ� Øf\¤y®÷ñàsÞ„lx¤LöàÓþópi?Š÷JUˆ@xD˜‚wäCS]ÌNÞå Áù÷{àGà•�Øø÷ ý �³ 'd÷e»ÿxèj‰¼gqz69¹Nðh‰ã²}aS/÷4½ãíß?üƒÕpD˜Ú�îu¹þozX[Ø0ôK¿òIøú?%ž{“« o}7ˆçäõPUãü¿þ!øáø>ø�Ï~NøIÓ“”À%4lpý.ügý=ðK¿üIxÖôÕ_ùŽG ê1}Pø¤ðÑ{ßûá1Òg?û»ðéÏ4C¢ç’ïòþÿÿÂÿßµÑVDø¤ð׿´ úœƒ�Ó,4¡Òc�„�¯ŒóÕ+"ÂÒ�ȱµ�ù¢NL�¤K¼1�'S­Å í뢄îÂúaÿ.³ôiV~¤ƒÎ²ù¬qç0v‘êqjNOO‹ð£9գꖄEoҚ´ÐnNFgï‡úäPÝRMß¡ C‚Óy‰ æÙõTï¢æoÖ˜gÖn”‡ÌB/4WÃÐ"î|³ÿ˜®ó¡äkú±“áŽtS†‚|£xEc»8lARW[”¯©öã*^…8Š;è�çS|¬t·:¹æÛŽ©ˆóYps¨óâ“èrGÉDa OS#Dô|ÉÕà é 6Þ<ٯ΋¬Á·•XåPùØŽ3®B‹‡LªanÒ ‚dk—xåUyÐd: <íM¡w‰“º,Qv”øžev¡ôË÷³B¾¿Ê«(ƒ§�÷j©G_ÕÄž™ 2, ^&oCsé$í?ÊWs” ¹ñqÙƒU[Ú�w0¼gõ¨ðÎ{+|8šÙ´‚Ó²µÂu0’ wß„¯”ˆ.�·€æ÷ô�® _Ï‚T Èt”á ~ PŸexüýû$¯'�z$žƒË ®‹xƒ�B]�ÙPë³Q,×&¹�kÄ“Tþ a{͵RäÕÜ|1À`†»Ô`¢¾SI˰Šë}ìj„Ìõê")hó)Þò“È‚Oj´HM.Z^?¾÷=�\Mšy|_/=ã±JùûÈqDk4Ê­.pc™ �UtÕôgW¤dH »Ñú±ìiû6^¬—RNm�à’BÇÑNɹ1ò3ppöJ­Ú(Q|¦®M‘8Òþê@icÒÓ!Ü#ùñº›T•«÷ƒºãKŽÑx‡}>C0*3ÕIþ¦F§~┹E`‡Žf*VšTš´¾ŒÜ�HzÜ„6&´]7läô…6²ñïã›ñ�� A Êo/'îE�åÐnÚ£ëgHì¡öSûÇL… ×Þ;ê@‘nô˜Ôò4Eúé·x`zß O4d!åÎHù9à×|ÕWÀ¯ý«ß€gMÿô籃|ÀÈG2ç=¼a£©7ˆñJ €6Ù¼’Œê…÷Õ_õåWçU´~èg~îQ¼ÿ8ýçÿÕ{ÊñJHlÔü®ïüva¹ž¿�õ‚H”ØÞ ²°ÞChŸ6÷„2ÒU݈+`x�º’¾€¦„¢ð�‡a4Àît)á= ’Þk4‚nnD­fõ�!×r‚æôóUtÜ* t§—íè[!+f¸„‹©:ÐM=÷KŒ÷²^‘Õ(ÿ¦�¡Ó+f:õ87YÕå¾Ô=“ÿ]Aþ^_ÉUàˆ„tÉ›ÝÔÇ©f×ò<TG"¦û8h!:ñ"¤£Ûk0½k0þ)y=�Ƕ¯µßC[úq¿7Bɽ ]ë ò† 8º2ü\Ï $BìJ­0_a$õs>…CëÎú§òI¥ûÁF;új»çòÛ@rí /µâPï äÁJ;J+à€Vöû†R�=miùÍ'06±AHÚPòÚ½c wºu“i:�ðyìÜ ðÐ$Û: t™Ã@ÅžÏËmeOëíp(G(¬]D }·håãç¼K“Mœ–¹zÿu gœ­îãí¶jp @|ªÛÕmnŠç_ñþ °°RËqôކÚL®T¬ã²K«6ºÃ¨Ûµ˜ïüÞkê1-Õ{LcfÅÔŸOíœ=ÿÔû¯¶³Æò Uú„i÷^!Èõ¥­k^š‹'V²&×:oø[ú˜‡Ä;?q^•~àªÔuõøþeÏL’m¦<ðôô€�Û�å(±tŦ¼€õ� “�=È«”ì‰È˲3R%™2.ëja²XË©,d®åÎ NÞanÅ“ÄÄq­^Vì™zníYy§NŽwÉžOG¿›ï¡ìžLýñQ—'×.ñúyéPíûDp[¡äH?t¨r�û6{àmpj¬˜:Ö6˜yE‚�ÑN[;N‡ îv�çz�Æ$Ù �$VÜ*} 1´¾må9ÖÄÍM9Pb.–<î‡Soíbœ Ðm –Ø"Xã�k›ñ$ôTúKbE*£ÔÃè¢ÆtcÏÁê=(tÅK¤‹ëC‹Õ&uz»iåÉîÆF–† J,EŽìº[b=²—¯�Í�®}ìa6wK0’áX–º[qB bì¼Év�W ÚʤâŸnxxi‹ÅÚ%yoïÈ^Ì%ÖäÔ÷ÍAÆÕ¨ö*TüÏãà ö§¦ób°Ö½¬ãÝx˜7Ô_ ²˜ vý“â®¤ÜøØïy�eWÒÔv $Ùí¼îÆ8œŽwUZ D´q['N[ÿÓ V޳¸´O‘l·d ©(ýQ|6¨ÆOäúK¼j*\ñ€”Ø’ª•anígÏÅ{zï%ïçi–/7Þ‡)¶+ê ø9põüû@1þåñÂqŸpîé áQÖ�ïL+9õÆËÂgO_öÆ7öíU8Õf-nQþÌ¥¾ÐN¼Åbi©Þå@ÝáSEj±¼ÿg�Ôà•z©Íf*<ë¡q÷^üÈÏÂï|î÷ZÁ%–´Ø¤ ›ìÔqL¤±ÞT™¯¸Iî7'Ì”kb¯Ä‡â¾î-o–u1‘ÿ*†AEÇRîóIâ�¾÷o?Ž÷ß+-±'â?úð?õ‹ŠÆžðëŒiòˆJ·õ‡ŠxV&æ§¬ŠŸ="�Îä'r¢cØøRuAéA*®êA£Õ³š§\�•/;çÕ. �=zV Å6³_¶9βL.mP›ªW­€ƒIfkϤ2g˜š^Miaªîö¨íª£¢xû¹Ý5‹çKù×b½™:–ËÐa›3ÈQÂ`¹Ííu·Y–Èg1Ä讯 êh�õ8Ɇá\Ù·´tÎ&iã‚å`™Átc¡ÝeF`4’Ê;lº`ùhaªñÁú[C‹Ça©¯ìœ»•{ª‡}ZêÊ&ª2«á®¶`¾=l‡|MåZ7 O%‘;FÓ2-d<–x…E-¢2æüE%â¸r+Ç[ ÿ5æekõÊS|û\¤¥�ß�B>Pwß-UYl:ˆè)ž“ �RŸÍy¬¢éoS‰iÉc˜Ê‘ËÉ©æ#Žì—NU“ªè¢:÷À&ü®§T=ÜÖµ7ª‰ºÙbJ1!Áá¥�nž:¹Tb KÜFr±ËË6ÆZoÕšÏ@Ñ gŠ!¸·�0°k" u~,»?O•¹NÅ'QÏfPù§‹±AâzŽÐœDñ=?þÕx¹W ·ÿ´!±ÆP‹žÇÓ´©LÕ8¾$N�‡…÷¡ñÏ‹øüÌñôGŸ¢Gi?þ±mîõšy-1Z�F„‚‡ªÎoüc-Þs/lsì'Ûq³Ñ0ì){æ]~åh6 ýô@?Í7Æx9×Cqµž§²û6 L"žÛgÞ¾_t\Õé3{¯%Fa°e9[ Ý®å`SÆì?î4»IÅEõ@Y&7Ž� Ðù”¯»2Óµ+¾{6ä._g•¦ðÞ柑C➊�‘¿Sü%|R]éSF¢|Nù%{)ŒÝP¨f¡¤V>Bnû¨ÜýfÐÎ9ʧÐTžƒÖ/- °»òÒXVŒ*ŸjZ�)KRÕJ”`¹ÜWÖ•>¹×Æ�ßÑ”(²Þ-?tvHäúÂÝ7]—,xcâ´;V)�ÅP­¨oOëÐVHÖîh8@ÓÙIQwÿZª¼£lÿŠu®©=WÞø( ®Ú˜P¥Ž� ÁýìHÔ$¬ò3/eïUÔ^_^ŸZÓýPêh1éŠ#Üx¨÷Ò�>®J†ÉxhRá™ëSå1æH­ex�<¸g•h`yö…2êg¿ox­xh¹g—¨èÙ)ì~iŸv¡Ï0×ÔÝ‹cCMÞ‡�ç‚Üm²O?åßõ&G?qJ÷µÜ6 àNøEg²ÏwŸ1}ö³Ÿƒ¿ûÓh…zäÓ /’¼†˜ÝÀ̬û>é½?ñ“ðÐôõl5Ñ ñ:~ü¡ÍúXޯĤŸ6·�šú¿£d*Š-Ôdž¡Â  'PLùê™Óz»§—õÑ#eòäƒÎû×÷8È~ÊÊ~j�[œÏcÁƃÓ��’êæ�DµûZ‚‘[2�ˆÂs&Dpvx»4ëT"¡µÇC”�¤8 á£�7:v˜çj£z3IÑÎu*¶qmhxÝ{aPiÓ?p§|}Š‚ÓJç¾nË…£ºý˜èßñÉÕF;¥¸.7 Ç%Ž¸Þ…”@Ï}Þν¼Ã ª(ívé(ï¸ Ä6�Hs×nHêÐ1H^W”{2Ÿh]ëêH¿ÅhÔÑ-ż2þ©¸“K„.=|©[0ñÓ /à°\“O±ÕS%Æë¬›ç¾ïøT,±ÿ™§zŠúÜ÷N® ôýç`WOIãÕ;)Ìÿ“h øÂ8þÃ})�¬ò²ÀÆ5XzϧVظµáÇJ:ˆ™‘wUägSŠ)wo¸ÛS_|^Ék §6y±Èœn,­Sã@ÜÆYÊáòøÕãÍ@B0ñJL8 ãMûîIýö~ZŸÈ„îóFóª+kÎꟓ*ç¥#|¬5´ŒÑ»XbT¤ºS(ËÒ$ë–ºSÔI›Ó{ãèwéMKõ‚dïª2(—¹�$´¬r˜×bbÿ75(afþŠ ZÅÛpƒ§®zœšÐJÅÕöÆöá,1Õ›“=‹Ýü…Äá+ ìÒï«z …L&(ðø¤6õöi-÷Ø‚5”<ºÓê¤eD×lŽ*P˜*ž§§RËM�E†7ÎÐÇגּc2ïü Gdʟ¤¤1ä›"ìñt”˜kçDJ§~\%!UWª„~þ¸¬ü�Àk±êÈ]C_–îL§Ëƒ²³ô$±KÌ;rù�!µŸÒ,½/«Ý“L vv–Öe¹Uºâ¹xó½S½¯1H �² ªÃî<àG–°:ærq³âLà”bè(Ñmί©° ÿAñÂ]ÕéN¼þh•�S�Ô{îVúé…×ÔûËI ªb#Ì]´l‹mEOøì,ç¼líy“îíŒâ>;HóLiA�“.ìðÍ© yãIë±áßÊmÒŒf u´êÓÈ8T—»é$üê ô8T�Uð³�[�'è£\›Jt—¾Æ'7©Ö[còõ¢LÎQb>Q^8UUtQ„’l”-vj±œäž*Ê.´§}øcŠýÇék¾ò+àKßôƨ"O(¥Àu­ýûÞ÷=ÜèøJNìø‰_ùÕ�^Þ …Â)õ«^æ˜d“–ÄK̨½*a�~›š$Å®Œ[å\ï‘ 5Šàé}w‰ÉbŸ¯ŽgJ?’öߦ}ª—¡Óëî¿£ñd|lÑçØêáz…@Ñëæ�€@©,ÕË*<íc´ªÙ>óüŸq¸êçÒÚ”¸°°ˆï€Ò†4É6¸W´W½j�«çûD5F÷*±­Lî©n­ê‰v÷¬h¨7Õ~™†i£í/hzg}îÔjbx üÔ¡ZhISõêDÃcÛ‘Zxïêc‡QýMä*æà\ïûSÚ'ú𬱻ŽÉßS3©h{§Vv[ÔD�æ�ϵ�ó·'¬wmF&KegfÑÓíÓy€ƒ‘Ÿ¬è´4É Ðbt®¡ûìw½pRýó°–±·ä˜òÒ «Ò–[hõ¿Z®z[Èpɡӳ“øaà>ɦP*ºRÇÒòOB¯“Ì—sÕïÊÎÇNùXiJÿVºhÀ±W*_ÏâVkámõõÒ<‘56¤Vk†Ö_åÄYáô®.–!ŸM$~%õ0«cËbáÝV{ÉrTû(µKS÷ ¥u§æUÝÚùU½3©¡ZúsÕùªîô½F#è�Ln £ ê<ù²…Ädž³:o¼µÔQtß�nü ާµÑeñØ<ÉžòÞq’ÅVÇK+¡È“Z rªÇnÿ"gæc$Øâ‚­Q—ÎS´¹2¼o”ÆO#½:7<�5¤wÜÞEè|R¹ó ÷\H´Cm½¹{\…çJ^®Ž6xG±c犵FÒ¢m ˜&r‚!V(Áî'`‰)5€[ºæ ¥Ü”]ÜÀ(~f+5Å’Ûj1iÚ*5cBTq±÷BSFÆ \N”û×½¤Â*æ÷PÔ {^7èš)Dnî8#[‰“q[”…Æ ý'+è3>—„q®|Iôc8:¾ïutK¹$’»^7ñ¿ñ˜Ó a{£jÅùñ1¢¸^&÷ùÆÜ…º<ýD¯»ðž'Yf%>[s Ý‹Ú^ÃÛþ8RžÔÞ&Àªò”j‰˜Šð—DöÅñƒ \]×Ó -¾0wϼ±m®�Êñïß‘B·awow>c¼vËÛ©DOäo+[+»7[S}çx—n ®?Òœc§Ïƒ¼B¥ErcùÒø‡z•éñÙxüÛuð¾Sü§|^×s°7™‹ñ=ÏWLÎQCû8Õ‘ŸÛµeCëhüg< ð†ígÏãò2¿ÂT\¦,Ÿwʤ�þÒÎñrþÐ�Ý|ÐóMç=g¿ÿ»6Ì! \Ÿ‚~±ˆ­¯½}boü ™û¡[AOóùLM¯¤ÖFëOŠœXõÆC(a”.þ'‰ e+QêA7‰§Ä%9<‰ç‹¬„®²‚‹²› Æ$°Çoi‘ú8ÞÔûëmÝežÖzIVö,Ž�ì6¬ñçp‘|�xS0NËçkÁº[¤Áƒ¦,èoA4ïnj&Û-ÝŠ‹Ø“'&4C0oÔ¥±æÁc±iùN¶*q¬Í㪂«õõžZåùkç«ûÔˆÞbÒ•6LB<Î’G!d_`æJpݪE-œ·gÓ³ ‹]Ö8lÍÕ1‚}+»z‚â"yˆžÅÃæYÛ¸m*ÍÈæ¤…Ï?wÝ“{TË;ܳªd½Ñs©Bw Z¾³x NóWUíX4eVê 2†œá 7d=J\±SØN©ÆÈ,×ÊPÜ>G¡ˆ,”^ªm~*ãAvUÝ…ûV<êl¡€xñÒK=ñ9Ó[«3âØË‚„st:§*m©J~²`‘ÞÏYª¤*~, ˆ¨p’b”´Û_¸NŽ?suêqã¿[(Þ�)^«ö™î28yÏONç@Ë »ôÁ2…úl “RüA X±Ôx~tL+ÉËâhj’°¬+Ønò^˜‡Ï®Ã�x,0}RUy§7'á„ÙEÁÀ£�eÛ¨xøUö qŸ)©Fw¥USÈSlõ?ï�A‚ñe…û|Šô$à5~¿6ÞX~ +U¾•å·Â0K½2 }Ö$r\ *k8F%ߒݲ�„èõäb�Æ1„*×ÅÄvCu¯óîÁõšã÷ßÿS„w¿ë�àõ¹²Zíò¡;Ñ~óÜÏè'�w¿Ê£¼÷'Þÿ(†¸¿ü¿Ó5AéL¿Ø¨ý³ªgët€÷¾ïg쿜þç_ùÕÒÏú-on|J謌 1hy¾»»:×q’<ÄjŽFœêù³Š€B•ç:–H\sæI=¿§W}‰=újþe!£¹’OÅŸ¼7‹žºø€à6†Ñ<ÿTn’'hÐï�øË wWt k¿éñhÅÃm@8¹³Èn¥³Ê#WW¼Öw¥Ù&Ž®8M²›ärÀˆciÀZvó5Ž�½µB‚b'l‰bm‘²&l;$W°oeë{ˆëØèêH±:™ÔÌú!‚8¶pÒÒl›�9½¯¨3‹aøŽTs˜çŸG¦°û¢Îy2A0ý§:B¸ÿPÆ@AÄZ½gÏçX—zJ®KíÇI8‘x4Ißõc?íAéï ZÚ§qbu·[ÑsJ4n×\ùÙa]¡!^óCó” ñ+Éèê´TÙu�øØêA[`ÀWÝØÐ¸•ºë³–·šzÖølÉŸÆUOûäòa‰ë(èpXHeøù¿Î÷Ci-«÷ä´}p�ù¿î¾Œ²x aÿêh£ô>åEí/1»¨ýÄôqɾ¢çsÛõM?ð vRh›Ç$B»' œfÒlüÔ*õ8É8,d„Ô¿V|Oº0…Ê÷Ñò¢3öM‚ –÷(ñ�==‡EØ áb¼ŽZÊç;x 0ƒ4Iê Uv’BimÆy#X»±}Ž�÷èZ´¥ Šqžï®0R»‡ƒx*òL˵kWبè|ߪèòR‡+ $04æ¡F½Ž{ÖäÊô}éV©ýa V”tÿêi|O±ïÌÇh9Ò¥PMwe¸«œ0þï‘Fù}jŸ8 s Á½êÑÃVÀ Ö™(\�¼aǘ:Ò»®¬!æÐkÿ¾-D÷ lü^¯3_WcMìý÷eoz£]w°SþüÉñ§~ë3ðÅ’~ìÂF'N�”ßQOâÎydªÙó¤÷9i3‹rçÍ£[áóãÐ�OJçpÏyær‡ò(9˜S�;S­S—ô#+põ¸\fQ˜Î}‘ãM�½‘Ì+öô‹ =_óþ…äøš©E¾èŒš®krÝs}e@zŸ.BrÃ.­ªžïõ:m£*�Q¨Û(€uu×2kS£¾è}é2ôþ>&J�˜F£�Þô°v?c*ðDUévÔgßÁ±-wøßé�+R‹]ªdä8Š.ìRÌߘE–§ÜHŒôèf¾A©¿Çž‘�äéÎ3É••é£ÑÎø=¯› =¥�·¯Ä½×çý½ÌÂü"|Š .tã_Ë |Ny€WJ¼LÇl}ë=ýÔ ¯ƒÀ¿ÈɃWN0¶/o,£¡Ôs7|‰ ®\× Ïu×LÙö�ÛqX¼bÏ^|º‹§v;¯4̾CWƒ,˜–JL¾º]Û6ËõØûOʘ°y­ñ�Û'õàXPóÜ“ùï?øýæuUVúN.“n¶Ë;_ºÝ/i>–£5ƒê±|[¥Eþfþ輪x‡Ôó ¾ZY™rVöõ`C>ʶcÒv~ÇoSdEV#gÔàZý}¡ÿÛ©–Ž/mx}©1 m÷Šݶ(ª�“Wx¦sÜžèøg’]›á ñÊñè„iÝš&ÝI÷->b@B…e9[<5€Æÿèæ)ÐñiõÀâÝo }�­¾² mÙ&7@§E›.8;9û·¢¢l÷ÕvM&Ù½Ót"Þ•ùHm¥†ñ±Åóo;ÊNÚn7mmõàÉ®ºïâzºÝV æ²{¯C€0nÃlŒoâ¶r›ÕH¨»Uê¸=Ü–£ÐéÑ�å2žuW\ikÙ=wº�‰i\vÎ+}z:–]…}„¾f�·ƒX’Øó�wè.ï»ñ$;F9•Ç=UÄã¬Ð)ï°u/88Àž™žÜ–£•X¶†ÚÚ3×#¿{>nôu¬uðQ¼ÁÜs!8ö‘){¢Âùú]p ²ûu–‰º[¸ðã¶ø÷i›AJ´&Y =™7�jÅÿÛJãÙôræm6Ë´ ^(ä 7¥å§Jßî«€ú+È]²þoˆŒú˜ØóOÝM�;˜js.Î(„*ä‡O¿÷‡¯ëûòpõÜ{ éßþ÷7üå¿ú×2fŠcÐØô�‘É4V<•¦6¾¯¿ë÷óíï?ƒ·‘>öU_™š—ñLvò$ç”þž?ðvÚý¹’Š`ùÓóo‹GÏd^@<žÊ…®/õ”ǾÚÄ1;±yÄúù“?m±Äüšª—ÕVÇh»é©z:(:1ªzù×ZO�lu±˜§£o]Õ¸¦“­üMõtçæ†2UŸÀMÄ4ZùÆ`¬7Ú©�Á0p �ÑXY2I}2aÕÞÏÆ£_¸› š>6=Ùm.r™b"Õ_‹ÞÓ°�ëBÜè'Õ�ZïÕ¤�Ë­#åo©ÞRSƒXçÄcf-y=�l©V¯Ÿ¾Xª™±¡á³Æ1,3– ÿ‰ÕÈM·i èV‹Ö)¬˜#[�çVd7÷Yê(1ùÔ“¯xR–|.žY yïQiQ½·K+nZÖC Ç©ž†Ü›¢À?U¯Ç)ØkÍôÄ Ë:ÉZäúXL·[�eîRžnsæeY[Ï•|7¶!uPêtd ¨1¨ÜÏ?öJE�@[|ýÌlƒÏ¥wRû+}3©QûÛh×Nƒ†¨+ê ÍÃPk*'Ö^ü)ÚºàG<ÕÊ5-¢W²àtªYäL±•^]Ÿæb·»‰þàÎv§(×£�§ÆÅ׳œ–^͘ÖÂD<&UÚ9Æœ/g»± v¼t/2΋‡îª:8¢ÖÝzIÃO ‘®�¸õ€¶5!i"÷WË·’XhŸŠð­�P3 @›ð[•[«WuÎTOËmB¤xV•½¨÷wæs”eîÙ$ü«üœ�³”€ËEß_oôp]5\ËØòW</þAøžäkUª3'•å a3Ø.<ÝtQù˜¯Ðóêâø+Hç*Ïq�aBfYÏ ’£1W™&ðD;%û'´ŸãÎÖó…ûváPŸÜ6¤0>¬°á§<%NPeoAÀ0ARÆ÷‹ãžAœ„6†G»‚`¹Ç)/„uKÆ@îlÖ±£€ämÜcÜ?ík3à15@p϶§!µè˜Ù/{!÷Wá6ºY'vkÔ‰·$ †ô¤»™] ŒàÄÓ‘*C•uðï%SL‡™(Ò|lúIa¦ú;ƒÊ9AM0n3àwšx°Mk¢’ ¯©ëý´wñï¯úŽ_Èÿ"褠e¿7~îy7.Éâ„£@S»»óHutÿýèo�º�1{^ÿ…8ˆ²ý�ñÍí*ÞÞg×?Xº¯C>ö–<Ëâߟýãÿ­�ö[›�ã¶-�üÈú-â‹FmÜ¿‚‹_•‚Ntü¬ÔÖ›�CD˜ž`;Á‡±ÍEöw²b(ÿž»ß¯ý𝆷‘J<À/þ'üçßòm=àñ¯ßoúwþƒß}[ü{;p”CL>öÏÅØ&”äiéøÎ_±ÿrb/@™ÄPÛDù1õŒ—l/ûÍ×zËÔ§�c/`¨Ât–_@‰õf Íï§lY÷x8¨‡ û6êä™Û|ýœU>Š=M;×èÆ!á·‚ˆÖ†3\!rg戼<”ýsû2õ=^1Áæ»N/x‘[ OÆHí¯X¯~2ªóŒ•(?@ÆÁ΂7ѹ@«šC™Æ1ãѠ؆_N¼h4L’±½G€‹RZü«ÃÃÃã×Ájvš·{a˜èŽýßyûI{¤2€Æ(É -ãŸgÖé^Ào ØëLä7AZú¹9ô ÈF! þ@ãC{)Ê0ôcmídxdAZú:2+\áác´f¨# õ6°t¼Tæ!4ÛHE*:øuüÈw�Z]çîJäDt¿ÖÒt:öû­<ÛЧ_œ&ZECkâÎK[H7Ý�hð,Ù‹e£giÃyÓ”W9�õ§¨nó«1?$§m½Ì`ñ Rpî&[ c€!R6YÍ< Ñ<µnžÌ§«žª ?ð<µk®�Û•S7éé© e·óYâÄí¬ ´·$ÞTcVÕ÷TBÙCÜò—Û�Œ` õêc¬¿fÐë±<ƒG¼IÆüµþâ%éð]<k.›Lc�´U¿Ñzn ¾)eR}§ãgÇi_4Ö£ÄêÓØpè¼éJ>õ‚œ£Ôl‹xsVïQª1&«9e!̤ÿÓlÊŒVŽÐè¥>Ÿ®7ÂôzXª �÷de7 ç üÄÊb Å®‚ŽªéXÔ,FE‰m7/ß“À%øÑ /«è…až9Ø%Zc&¸ÝØ«×þ"ßw_¸�“ÐñùÆÒYN¹^ž–Ì ]´¶N¿< Þ%øŒV(ýFáòëÉô/x}âúêá²^€+ÞéçUb½Ñäx‚’p>å´T%±òH½üF¤öƒâ;;­l�}Ôü°£¥å›kà @ÄQ6<ìv‚:¾—~i=rÚHŒ fÛÔÚ®lmÉÛk'†ZˆEt:î´“†EËO¤&�|±h¡¤|êôš ¥ü(ã°=MÌ�å¶Â­A¾(à%!mɽDw}Õ[nbÜV/ðZ^è E�Æ8•˜v3±û±¢'§§]ÒzuRºv ç,·ïxºSþ>þ~]©¾æë¿ÞOâ˜ÿ�,þ±Õa±NZОPŘaº¥ÈOuqÌÓ¯NE·èqm@úÝ}xWsLÛÛ&_»žbkrkK‘îL—PÓiæ¾¾èåÓMŸUŽ¨Ç‰�eC0©S�±íãáö⣷±þøW}|Çÿü=ð6RY˜ûñOü|Ã×mõ0DåK�= ŽËN¦¿ûc¾æ·ývøþ¿ðÃð¶Ò7|ý×YÈ �1i#–¼aÊó·ñÉñÏÅT<ÿüþ0|ɯøâvú¤M°ô_~ΜÊ÷c t6»TDÙ~ÉùÐÇsÌ€hôE¢Smó|á<¸2<:Î)B�ÄäUõÛ}KÆuãi� Y×o:Y›EÿLâ2´¢ƒÏ×FÐñõì’þ�D^ˆâ_=e5º÷‰^Rkç$Þ0ç‰]øæb—¯¤mðu…¯@N×5ý» ^&÷˜ØSG0mmÖ³=%¯™w]¯bEKP¿èµ£Uµ;í°.1?m~Å8@‘Ï“ê)¥Šô6I=ëÆuê©Ò“à}›¸/u¥“{�´oM®Ó6¢Y`³´¼Ÿ³v’×›œ6+ÓwÌNþ ¯è²þ }í«Ó༱=uÞʪYà—þ%íÝ‚7Ó×†ÐæKÅ›øî9˜›�7Á¿…„ß¾ÐegϹþe´-W~xM§öÖ«ÂgbßmÂìŒÉ'¨ÖÓ°y5/r?Ô{n{rû’ÉãnM¶h¬¿£­¢KçT»ZŒ Ò¾àMåÈ,¿W·hÅü.t:Q%jM2­3‚gv9ÜÛ;ÉËÓ!e‹åÌôt­^ˆe6Á8˜1Ú«ÐÅ27¾Î’"68[>Ãi‘[j'*r†{…"Œ4ku6_ט˜È8‘~>úÄ6ÍZýWr" ÂÆªÄ œ¦F�µîbGkå–ÀÓ¡§­GmFJà“Ï‘×#˜cþ6ñZ¼í¦÷Ë^OˆŒø?þÊçÀ¿ ^›,æß‡?A;¶öâe'|™<˜:ýûP½µa:HÍ*è…Ú^û^„ÚS(åèXå,ùf˜¾÷D ‹G.0”á©©ÿô?úÆ· PSñüåÿ䯯§äRžkþñúÉOþýêñ÷Ë¿ü×½ÕÅ¿âý÷/ï?j‹C^…åô?øáÏÿ…vpÊÏåôM �¼Öéñ°½’÷3 „>>unÕL Fmn \Fˆ_Åè""@oÉRª‡vÞç>RÈn#fòÙÛâØWí²˜ݽth”Ç?9âÚûr†ö9û=Îå0Ñ;ê^tÛU€ÞÞ „ýÑ"˾n¡þ5øùÞ”ÓŒÂh0oEb �¹½Á]Ó.ýŒ:øÉÖ*4»­m¸Zý¸ŒêQ>ºkg U‡9K.ƒûEüî¯ü–G®/õr€sìðZ“qßÕÿj¯™¸ñ?°ÿ %t#´5‹¬ä—¦|ùÆÿ‘ÏâœG§˜a‘�RV]v,a0C+¯ÛZ@óäE70YÅÝòz†ëë§å0#†Ú¥ý${´O`Awn]/K�eUõå§Þý I#µ�=·èô T¼³Ê÷æ5fà¸Ì€/·ò/â-„›"D.ñî[Aζu䟕 ÍïÜþÞŒûUž- {逽¼zï L·"øì…qy9ñ©¼OOk+Ç+ýåw5>ÜYWâþžNü§IbÄY;ò‡ç3ÿ88`öòXO³Ñ픂›ÛXPùn¼®ˆÏ�!·+ÐÊ^'Ç›OF[à‘"¼¹ý=îó�›á1¨Ÿhç�[ƒ±4]C?¦‡Ò�ÕˆÒn�¡Wã†1Çlå”Ó“œðZvYN3ÐÓ"¹µ=_ùVÝ!¬ž6îg‰vÃ5|ßîë ¤p¸à\—Ãr‰cXÿnu×úEIáÏœß=UÏÕ꽪d©ý*t*Þ�×úg±ÓjìB‡ r=M&|Å;0/­ÎŸøO)BÊ[ºñÓT豺È]o;Kõþ›.—o]šü“˜Š5†�Ä bz=ד­ñ†óú§Ï ¯‘ã7RÅCðôÄ4Vh¿ŒÕ,ÛV•Ænu~X坯ÌÛ [hZ¤œH¹²óé½HQÉBÐTa¼žÝû‚ë[†ÓÆ»é-8Mk§ü­,§pYÙ‹Fc,)<Ê ¡˜¥ÚUh§ÆÛ£€‹áµ*�Ý–¿ºEs�bá>­ y|Ê©Í'õj"€nñŽ Mµ^4¼–áʧØ$‹ïw•XªM¼1zãKšRìF…c'¸œfÔí>Å�óðµÇåÃz’a¡‘J'˜÷_Vd½LÇ–$F¦ý�Úµa«{bU�aáµ58 �¯Æâ#ƒ"#nò²óþ+IwÔ^5Ü%†­õïÆ›%®“YåôûÂõT2l8G„° 5Ïì5®±ÙÞFŠÏ#ÔÔŠl[¿ 3ÁÇ~Ã?ûªÏ�Íóï£e( TÓғüÕ˜¶[åEöˆ�¼Õõakúí5�:LL8ÓGápôî’,Dï ,>é"+Jð«âùW½ÿÄçžÚ»y¯¢QÛj#ð´_í L9|§•Á¥ævh§Á䀪1މFÒœ“#ÕS‚=Wôäð�~äÃð[Ëo‚·™Ê'²_óoþvø¼ô‡?ú?}wê¡ö’îÖó“Ÿüd]øûü/úÕ5æ_¹›é~Û×1,ÓÄ'%KLÞ2’ßõÞÎgÇ?WÓüÐÃüð3�q¥ØIC º½£z¾o;aqÓû.Æ—³u­:¬åê)«Eþ¬[=šã)qŒB-‹Õ¾ßL·Öoc½¥“^ÉA«¢‹ÿšºÔo¦H½ø"¯³YAÕóo�Ú¦ÿäêôõfåʱåž4ö¡ÀJ ±øÈ±¿à×é,?ŸÐ¸¥§ëKµí°Æì+û%¦[ñ„[·²Ì*§+ó ËVý çylËûå†�JÅkÞ@;TwO7dLk+WâŽ]©ñMù"M½.KÉšý쾨1×ÂZ/ž”fçëDÍ‹³Ô_Lô¥Ñ±ˆc[”)ëÓ­¯Å“ªüy3¥NW4Þ¶vÜ/~‚†Tf�]õ²-Ù.7¹qQ¹¡Œƒì9Ì'È2 ÎOü×:HÛ}=¦&l‰Áw%rüN¦´åÖ:O˜±«g¾3‹ýiò”Hè&ËÝ¿—?ÒœÏËmOÊ[L‹“L¼|«åY!ã—Ûó³#p°Ù[t h�ÏÑÁ:oæ=J¾/étûŸÍqž-”¿âɹÚ)ÇŸx�nSb$–?jCÌbó†ÓéÖÙây|]Iâ´K¨çz~iº‹c£–v5t#ãÝBk;›nȃ3÷¨Æ_]5æ¹y¿öã»Ýæ¦[‰½ž™"YèM×ٖࢌî'@ D[ÜÓÏNL©!´¹2ºÊÄ�—2è‡`è}7xfÑòIyo2U¾¾X¨—|q óráÙP&íGEp@¬L¶þ¿’iˆÚ§j >o@¼–W_÷[¾ºzì½íØvºXñ¾ôW~1üšúËà ?ÿóàs>û—–ùSöûàO~ï÷ÕƒEÞö¢Ÿ¦rðGÁ�³\ÖÏ_߆÷ßüÒσßQ>‘þðG|õ r6¦_¼…F~zðN jŸ Ðë_¹Ñðoÿ�¿>hú¦?ðÍð§þø·³µ"âK=0¢OË£Ôz7Èëõ"DÙ¯!÷K¾“™ÿ›ý?‚ —̓ùYk×óXÿ%O‚‹p £†B(ô£®RÝŽ oÈ«ž ž)ñBþdžZlo¬²d•úRÞfµŠšý n¬`P¯ö |pߢ1I­6É6¤qý!SÔ õô©DÝF]/³ýàá"¼Ó'˜h“¸Ñy¸ÿmýnýé©å˜Â¥CÆGæ%E2f¾° M£#åm 1ðï ݽƯÛ�e°7ÔNkuû¹Z^è÷lÍ£µåÛX�8ir"LëÍTÓñ};þ}¾ÆÄñ˜®½õ2‚âµ·÷»õ†QY—‡•mò¸›“}ÎoÊ×Ù.71é?ÙwT‹él{š…öJEþ×5ª>Ÿö‚)kÔêÆŸ:8@�ùǹwÖÍ|¾££±ð nÎkÀ‹_É«ý›ÁYJ·ª¸½©Ä®+õo2à~ ”|/;ï=Á‹ÄŽœPê»:ÜŒ‰t×{E€á�f-èð�ØøÒÃ8¨ÇJÉó"G«½B[ȧ�â–˜ Í[2Õ­ô…¼ÕÅ¿’&Gc¾oÆ`µôe5v-¶Ê4oY, {ÿöïü½ðcŸèvþÙ/ÿ'à¿þýÿÉ-χ;}l€˜/D»˜²hùÃXLoÉ[r'éD¼,jÞîX}ÿ§ñgŸßÿƒ~ê§þ~=ÑW?UÃðù�™wUÂO‰×÷GþÐ7Á—ÿs‡OE*‹zßñÇ¿»þ•Tèòs>û3á3>úá�§ôãSµàçSùô·Ä)¤Ì_î” ø/¿õÛàm¤ÿñ[ÿKøìÏùL§ø‘�Nl¼Å~‚—g4aB˨HûU¿ü‹áûsÿÇmóƒ}B]ÊÿÀýEøU% QË?·Ú–ù6è=éÈb¨M2a L¬ê¸I¼&6·PU®®"÷&Ólol®ÅV?8ïioó–´•“3… ¨qñ°Z£€¶ í¬ï¦h�x/¿[=â]ºlÞ®ðyÔå§±Xôh a\]‰ø·‰í¦3uAÒ/~ؤ7-ˆ¬Ìϼï¼-W!6"o:ŸÝÔ¨áAðéc3åšíʰWï[­TÉÀeÛ‰©§1 íùÌ÷Ûùb›û˜ºaÓDèvo÷fGx•5ÆÝ&'GÏÔê HóLCâj˜9²Vøw›’§éÜ€§á @üG%¦šN‹ÔŒæjÃÝfíIžun”]¼)%&ã¦'þêEúeêòýÅÛô'“Óx:ó§ ë‰ß¿#^�«ÆE‘Òζñ‚$JÌ÷murÁÅsôý¬÷«¡Eȃ==Yÿ¥·RÁ"^®ˆ‘/³:X7/‘IbÜ6YíKD*�Ͻ$h‹¿ò~¥T‚ÓFSx޹n¿PyëÜE$_ñW6ˆ‘ÇŽÂbŸ£©ï�ò1¢MWªDh~]M‰Ùçð—6º«÷ïíz™Ö°mbxJÒ¯›7ªüŠ1‡œo%&9x½ð³'YWX¥Ÿêœi„Œ¦NÊÀ×6®5‹ð-J7"?µíûå�"àIëzJ:ÉZ¥ÒÕì4)—¨Õ¯>#vHÜùÑ¢ˆ¿=su€ß×ÁXÚæ¿OHÔྦF7~PТ]Š /}"Ì&ã…­ßN9�v¬ ð¸'Øí49àŒ^bIŒµCïÙÚ¼úž�‹IÐ~ã+©ÛêÁt÷Vr?5·üzeh›ªÈÙ¨c£ÖwR&¦ÑL2HãKWÏ#Mšµè Qk'5Ø%‘®Î.9hú—¾ê+k»yA¡Y›Ð&A#YíïÍxĤŸõY»W{í·ÿ[_û�K*'ÿ©Û‚¢46P?±mþ�}앖É· ‚,d;gsö¥ìÞ›Ê×ÝðÛ�vŸûü—+ßÞžÚe¯±w–Óhwr£Ó[ÞÎ`¢Í(sG+Áxغ—1œRöÁƒ¬ÝÛÎæŒ`‡�R_V»¤à˸éâLô*Eè Ju{8îÈ>i/fÍt;õ4ŠiO^²’£+çé°ë_šçuðŒô²šdØ'�3 î|˾0Ú’¯÷NÄð¬åá©Éº1ÜŒÞô9,âÁÆ-É�c®j܆-ø÷#ZÌ¿Œ›ì¡ÙJaÈ­µCË1 ÚlÍÆ-ójÃg9ÀalÜuc`¯éåàmkÅuí#zÏaš§¾Þž¾Ú—m:$¬Ž’ÎR€°ÁNŽ×ŒÒaÄ1�{2�>ÊÿÇy|ÓäïZ¤�ú«å©ë£�ó`]\aéYb¸ÕúõPÍgÉ"§Ã·@/r*ð*ž rªÌ|ZïT<ÁÀv¾ØXU¯gÃâ DÎîCÎórŠåAûö"Šéds¹Š‹Éõ$˜yi^s²ù¥Ö@ë“tY°¶r¿á¤íœ„ðÄsæù®F=¥t§äôÄDãã˜UÄÁ¢ËINŸÔçâ¢ø¥³Ôs±ðŽ D1ñÊpÓ¢§jz%éTÿe�9í9m©øå& Û¸·õý&Ƕf��àáã ÕsMj õ@¼‘ZØÛ™÷„Ÿ,î=ñi™ÛE<&OrŠî*§«‘žÒ¦‹Q¢Œ»å5Ê‚Iâ¾$F¹0�Àõ¹ %é"ŠT=½Ì ç²|]”…Û-±ÑPv¨+bpg�c Ü«t‡Wõ”Óœ ›Ñ�Ó½¹g¾œ„ŸÐx†©ÒOáom¿Äø4<”òB—³ÄX¢=á•„�AiI<ø.É£N[’Z¹T�À$Øô¾z’–ÏÂ×'³ €´;Zxô�+ÉN©•-Utq;ü€gö Iåßâ‘W…zÄÁ+µ_9•ŸßpÿÔÓ4‡©»&×̹�ª]ë±�#„fð”ß9 Q½^S¿6A:¼ÖÿO`ÆÔhqNÅ@Ú¯;·Hn¼„ßIä�Æá›2N@Ú“Ë5"Ö6”`œÔв÷«¹´þKE,ŸdL�ÛԳUÛ•-aê\0ä�zdLMÞ°‚úz°ù ¾ grÆøñ¸ŽÆfÔy||îçüøøç–ÏD¿¢Ê÷&A¸¿æIšh¤ÛõJø�T.f–f^Å\Ç Ðm¢èÆ"Àžçß¿ ’[X2‘îäð½ôoüæßTºø_¿÷ƒ/v}º¦rêï¯ùò/㛎nÕúöt~[ðzK±ÿ4æ`$Sý296£7´½n¢h3Õ&“8ËÚ>s+�Š×Þ¯º-ôþÀôh-'—¿R7Í€PDÍž6ÁþwÒg”t3–Do¨ZÓïôÔΙ0.,èéÜõ2Ÿ=ÿ¢$jzv[ÄSO@Ñ£W ÑíT¤“2«ý.ò°Úë$Ò¨æ�mN<„úÊ4LCçȱ–ŠÎEõ°†½¶8àü˜Û¦›Øß  m2ž0ÍÕ‰Bž©—“Á|ªæÒVÇWI³ˆuö¼ÓÓ^åE©sµæÁu4^;Ó%¾¡É,ɳ⯛ˆå¤6oP$51š½š. ϧžt™IöLQìv4¼ë©Áš¦ìÑ Q<\ô%©çzÁ6oö`e8…ÁµQð<£ˆ�f+ú™ÅޱY†˜ÇpÞдfã‚V÷6‚·wZ¯Â¬ßí! >#q_æD«Øgz‚ò¹íú_�WäíÕ¡.©§¯B2‰ë$É×ÛneV�;̃ÍG2Ûð9õ‹}>ûhÐ×Ô(Á`–jÏÔ—+i½SãÐ’JΞÑz ­BÑB¹�áRz4 `‹,z›Ú¯ñIoe9FXOÏÖY¿NO ƒnN–é^Oâ9z™Yî\Å~ÕÓ¨—§«=ê7lOañ§áléÊ·ÔðÏžÎÒÝXFF>Ô‘8KüÔ7â±wÕ<Éœ�…7AðEê*ëD‹z@Ïì[¾‰ç¸‚ï¹’„kâ¢5›=Ò… HäÀ4´£}Ï&‘òE&¿‰…¢Ë×1oø6{�aXI|Žy1M0cÈ,ÃLÔ˜œ�•w¦På·}Ûß W`’�Å[`^iWÿXEæ uA¦G©5¹ï}ç@°_ùi’qØr`úRü‰2P¢t;(4 ,’<ù³am“v:šDL×SÇŸ½5ÇÝí¹¥žZm=È 5{¶¨ ãh/«>’DzF6nê’NÐèUq9r=l/4ÝÔ´Á/c§s}�?«S ÑÁ‹”…}Ãû€ÒÞh:æ„Q™ƒ”P'£CGT€Óf_À~ûºxæeƒÈ¡†à¬î2é#Éϲîáç(¹¶£ÐÝ5´¼á"MwðtNË4¶Œõ<’§�A¢G#JÆY¨¤«Õ—ë3xÚ£¦½6’ǵ´K�â¡8V ¿žÍÆm´²ûÃQBÌ›ørW˜°8Ìø>’ê,¸c(íÝýüOÎH2ýóoùC¿>÷³? ~>¦ßú[¾ú¶÷µæfÝP>M.ñ?h*ñ?ç³JìÃlëð'¿MÜtvÊž ÷†‚Ü£ÕB®h³<~Ç¿õuð6Òû®ï�}&÷2á¾ÈFCÓ¥DÎC…˜®÷'â-o„�vÚ‹wº(Á•Ñh¨Z “CèôiƒÃæ9®¿øgÞ5¾Jµ‰"Pí!ØÂö "œjG¶Å?ê;ÛwÊh&/ÖFó+–‰jBð‚ûð}’Ú�ÃD0F†/ÇÕRÙ%:6…ú§]'Ï)ý†æù8žtÿyˆÖ]aó >îZ›:¨N€õžEݳŒi8¼×§ØÝ+õ“_0,¸¶œÝC�=Ý£{ò†¡ÁÝæ”Þ£1�H^$€^L·†¤¹1^zEø/á*HÞ“7@,<=<`Ã3…¾S×m•«-î%8‘†&‹šAWU¯æo„Í~upa†ÏÏÍÒ<ÃËÊý_Gz½C‡�¤ž¾ÑÝ¡ýf ©~ßO2tƒ†d µrÊÓê œ/@åïåÌÞõ]ç¦Rb”¿ë;üg­¿%4^S=mô¤;!rê'•Zß]`{¾µõt¶Bõô¨:ÙæÓT­§ {³‰²„3Ö£„ðù©þQñ,ÛíºxÑ¡*N!´Óì´jP·Ñz:‘œÚW< ±:‡‰Ô¸mM`ñÖ‘Ó7뉵y!)ñ¯0Víj=v§zþmçæE§çíÆ:שþYÉåì¼ÿ\�²ÑŒŽ•z Ð$§>ÙÄ•9†®å$ÜÅÆÕOÊjõ²KPO!žË‰²·<Š,¦^u&ì n8»á¶üu„[O×¼ÞvNåç.‰$9Ýò-×&ÈëøŸŒïñr[ɾȧÀ•Žnyqµ>4]ß„ÃÀxJòãöè©þÙi� Îù‰ÿø(;-«Œ;Éveä'ÜB¿^y×2]¡tÚr9Îzz£ØlæCÝhæ <5öd=éë|#…sS"§µâgþÓ �n„Ž./õ„>KlıÄj¬§BÜ­§#˜XOüWê·ÓV .¯ü§8™y ¨žÆW®+ÿ¬–<\…#·™½ÉôôdEDÝy–¸uuGSèE…·CÊõº†ø‹ ùî’ ,4ú׺ÈöÀ"•XrÅ; lm]£bãqYê_‰íPO3S¸UîXbAƒ§sý³¤ø9Ôõ§´yÙ¬?2Ô«É÷`¬ÿÚ‡Rv[=c3®rÊiͽ¦³SaÇu³˜% ²ˆpgíÆûÁ�Ñ+Éy~>ÀyM"_¨xÐøxsJ_îØ6õ.éÔp•竜îëÆ�¨ç—·™Ðñ‹ýQ3¦l2…*ÔÁu¤—WõáCã/ÑÍ…gÖæ–Qx¶þ‰˜°N7§þ·ÂÈyHá×N‰-ë½(ßrRºÐSDGmx�ðöaøtMè�` Xþ¶@Y�¿÷‘�~¾÷»¾½ÆÉûù”¾à—}üÞÿðêµ_»‰³H'G%ÃÛòþûÕû!6ªmMÕë­ØAì5àxÎÁTNn�BÌY’SѼžX”Äi ¹ItñÚ«ñû>`úcßùÝðw?ñ‰ÚLñ\¨pW/±Íe÷ÜHA™û$òÉÔœlÊOmóµÐåJí«®µ�k_fHÝY�êi¢Y:€ÜM7˜gÚ‚mÇ ¥qŠ3bëWñHœ¡Ée öš«�Lñ$)qβˆ­Ã ;K¿agp9¡UNÿ­EÜjÎu㉭µâÁRxÞ5ZðÝ›‰ûÒŸJÛ�S ­¬^ò¦[d¹ ä½ê3Œ†Cí×à«”S�Û¢ ×yÓìõOübÛÛ‰ÿŠ'Û¼‘œ Ýš· »˜)ˆÍìôh8­,ö5T¯Qù°{ª0s<¼¬1ÜÍ`á­jÚÖCëôàÖ§Ëëío2¸9§š•Z¼ýëzà\)¬ÃÀ±bÔ 6½ÝfÀË Œã›É"‘½�•/ ½ˆ ”dÍæÌõ@ b×lEVÜž^n™.Î=¯ž>¼µÉÅ´|DSNîÞÊüHhåÝ3Á{jd-UÌåç«"`l ƒKô¢¬ƒè¬PéÈN#–ÙaåtÁú§õ–·õ.ù«‡BS×´Ù{ª�Ê‰Ì µÎ”X“+l¶˜»Üð²\Û¸–˜„×5WŒ¢6PN§*S ›ßfìõdòrDÁ¼bõüÕ¸z�nØ&Ô“µÃÇçÎ-—Åóï|j’¶,\¼ûj?*mO‰Á C¡¯‰ÿ*¸î—DÖï&}¥ŒÖ†`˜ÊÔ©üm[œ6j;ëÊ”Fñü›5Þ€I �fvÁT:ÐT§ˆò°â¥xþ]¢ É× /�l•g¬¾q³ ‹:©’Á=¦ß¾> 5cª CÞÞ¼¡”ŸRÍ�ÈåjóFh„C+S�Ô‘ ¦}¢ Šk]Ò†BƒÂ…~�Œ(·çûè”ì§ ô°ï‹ÇëQÿZ<jðB¯ŽÌmN -öW-¤m»àPÔ.Uuã×Ñ8Z@U„SNƒ�²Á"ãVq"t¢öHn7ÃÆ¼Q6.D4¨†ymßÕ÷¨p°”/é÷K± 6 Ì«°QÕ'L=°vd”FüU‹N;σEF §áú°àãmÛÀ!ì®DÑA�"5ïV¾6åñ.©ó\tyÉg|´ r! Ø�`�W¡<,²âk Þ«Öæ•ă žJG´þ©MtDk’¼¼>ȶ󖎽ÛÅ=Éê"¼½Ñ=N\Ä]ž˜À/¼DAÎ ®Ç†©,þ}ïw}ÇÏ›EÀ²ø÷§¿óÛÌÝpTbÿ½ ï?ŽýW¼*içœ~J°PÌèž³ìfæ>]3[ÖëìVO‰ø6Ò7ýÁÿ¼ƒ}Êí;‹Ör…ßl»…¿ ` JÎÒD]Ýý¯ØhoŸœ¾ñ^,®)ìfÍ–õRXóÕ:œ8zý†ÎNÚS«±é³Y�'ƒ c){/Bù‡ÓÏò˜¢ƒe‚ǃ£b�ßž%?h Ö$x´1¡ôl¨½íéë[Ü]è—'B×rõÍ:ĨÞWÈÙ|åÔú¤f—ÿr®ÇJ_YÄ¿ï†~÷c‰©6ÿE]¢u_c›TÅÑîìµÕc-¨ÿ†ñq v6g¾oýE€ ¯F¥õ®•8®Û_ ð®}ò2¥3Í”‡§AO UÿÞh„’ßèjÞ¡òœ`W\˜ž½JÊ×™ðG×>uÂf'=’çÁ¢ô`^Lú~TßkÀ£;Ï÷~= SD(™fèð\v9Ê_ jQ~Ëi©ÛÜ*—�þªsõ©çò_‰]¥ñ«Lú”5ü|—¦ëéVliëP²³„Å amWt9ñŸÖXV�§¦kð|[…¾L-¿'x¿SkKâ'Ž‹VN÷\žRgöª3£œ2Tâ!/Æya±„-ò¹E2 ÔÉü'Â-‰kEýAõ´pŠ)ˆ”÷n°ÝþnÛ·ë‹CðîgÏÊÑ�Ãué»ÄN¼œš4¸mG”¸X=æ×¶Š8àÀå(^|· p½”£v|÷\./…ô—ÂØ1Ý”¿�wÂ4¦Eñž\gƒE«ä�>”-hõœž`;=uøW�<|s®–j=Ì·2S‰YÚÕ¶�Ò´�Wd'Ù"i:XpTè©æÏã|,q³G˜“uDÊxø-"Ù‰ªu”>¯Ø@ä,{…�¯[«¤m¹sF²Ä[&TvkêŽÍ‰ÿž7þӲś´üü_§FGâ Ì|,ø�|F¼@­¼zh)Yhÿ«Ç’‹�·.|B²¯Ã3µ1e<%ϯœ¼‹“á|3OÐÖ?¯\¡Æº«h®Tÿdk˵­¥Àäê+Âkf·®vÞKSygéDõ�æµþu©´ù4Õ˜®TâÕT/³Î*®o0À›á¸\õ2öøj¼Ö L’|˜ê§†ÛbS$²§ˆ†ò§lžSvÕˆº;¯— õ»z�º(^Vý»ò_.vÂY¾qüNXe‹Rëáloqa/­ý½TœÔiu†î½öEO—X±Ø\-n²d®|s“íÅ ºìÞ“FÒò”ÚHdz¥å#ÍWO§ÜB|Y|‹1™QúÃyàA©_H‰Ç!nàá´Ö?Ë…1GÒÖ5ý|Yü’_ùÅðg¾ó;êÉÃJζˆR¼îU<¨œÄ·û¯.¸‘y„ý­ÂN3ËØr àU'Ñ:Áu31öˆrz¿ª öE±IØëÉÙu9Y›_R½¿>húcßù=ðc?ñ‰ãjCñ4©0SõTc�>u·©i]œh·!Køê±"ž}ú…SœÑÁ´›Ä,ðõGÇ'Sm ÍMUS=1¶ôa³‚.£ÝP×(^›Õ>Ä5J½ž¯üÒÂT=Þ0‚�ò�kÛ™Í ‡vħ˜©¾X[\ÜÝd³�f˯K9ÙÔàõó«Z í—ÇQNlÅPmè‡ÖX¼$ƒÙ¨Ú£òe–B­B£ÕÔ—ÛÔ4ѳu%Ûùq‘—äÙtšoÓŸ ¢¦êe¶aþ ´-b0bu¬ÙkîZùBè[Íùt³UÊß,à±Ù”øtv††çðë¡8ÁWyR`‘/àš0dÀå†ëËÖŒ¼ Y'è´T¬Ì¼,<|`{œ/¤á°¹¥�í¨br”þ\ä¯àµÊ ðî �HXÖñô… 'åC¿enrP?o=-'™·yäTº˜=¾âøúÏyɽ/^òe-¤8-Äí>-sEºÃ,[ºÜløò§ ¯ÓIö¤Ä88f·ƒNÜ¡|d´¨'œô¹â|±~]ˆO›-ðÎ7|–?sâq8(©Ê´­µUdbù£7·wÏSqZ™/ç0*î˜ç6б=ãÓ‰@¿ ÄP©ŒÏ­Ãe|Lê­Ðó wÚ8ŒS‰­y½­=Mü'³4K…–gj›)%Ò~ѽÛm ËŸ}ëGŽ>«ž`žÍ-—ؘ§)®ÕRq£ü?@]½ßDþf)XXxJ8®ý€PÉ!¬4¤F£Oùn/Ñ^}émÞA£Á38¬+^ÇLnoH¸OäòŒ&òæÉ^k3fTþÄ (AÄ‚^|h^uA«Ï²ªÏ ‘(zµ¨V~w”�1MÜJù:fäw޹/þð�Qß -`Ç0÷edÀ¹ÅAòŒ ÝØ[¾\åÜÐã9wÇËpn¬ä¼P°µçwkïÅ¿�•8bïp�ûØ5™Ýb÷îàÜnÝ.� ŸßçÿÝä]añb;ÏôºúB�xqü~HjI‚eƒYá6õ ü4¸”o·ë£ª²¼te�ý}_²‰`�“àðá­ÄG’1Z߇×Vª Ò´µåi^éîm&Ý�y4àòáZ耾cÆA Ž�(Áõ³�¼,özrH¿ “`hâ¨.þ/ß_øË>~.¦óïÏ|ç·ÃG?òá㌞ÿ…ÈÞVì¿/ù_ ŸSc*vTkì¯Dr#´ŽáHge«¤½o¾"�W{ó¿œüvbþáÿæÛ¤¥G”j#Ý«÷ʳòD'½½qÙ"»oÑ�ð6~ä×H$;P²ÐßÅ'ª©CIäY?ñöfW�ÙOj7á¦a4áAu…_­ï}5Øl’8TÖŽo-»©Œp™¡Ž �ôSzb›T4êa²�ºÒ F½'»Ë}ˆÎÐqâ@o Ú…!ŒŒWE/…þP(‡‰ºÜ£Þ>ž¨ŸO9�?’6}<ý”ÙUE±ƒáˆtáä^^]¡ýáŒóy/#øO t!ŸÍ'»B;×Ê™=iˆ¢¾‡“{>Ú F{qFü*v=€s/ÝÍ·/b�‰l‡½?U¦Û½z³ø7)Š }îf€VãM­`œŸ^‘?KD_Ÿ�TH¼d«kë­¦ê 7µÊö Á¾&ešä@Åø®ü%!…ÔcdªcOÞ Bå]èau×]§«·á–úåÄá"1Ä®Í3�ËyX›ú›¶óm·â̧ëÊN°®¾‡EC½¬ž…Ïr�âñÀ”KŽi«G%M¶Xnu¿Ž×iªÃ…°’žæúGoNüw¹-Ùßþv‰Ê &/j¼„©+ ýÝnx¢Ë%Ô…‚çº�h‹€>Y¿H6ÝìƒÊ¤~¸qÛt«Tð_¶Ûlù Vü0ŽRçÌNåA¯ü•.¦¦Ð5ÛÖ< ëË•Ÿã:׿\‰ƒ[óTqêÉk)ñè6Yë v"ãƒ.•S¡WÃ3¬;¼ÔzmÐuSB8êÖ1¾�×FØËÆž-“¡ .Ë®é-Þ¶lq�`h„äi ÙKv¢†—n‘:XB¯ ž6'ßꑳvÕÙ4¯N…þªWl¿åi²8{�&b%_rq)1ÉyÆ–S›íäf+O¬Žv)>‰a^œÎµd$úÏJ<Ì�<›h­ŠêÃRû ãËv&:‡h?‹-ô€ÔlU=øƒ¦ÿñ;¿~ò“_&ý²´_æ%¥Ï5vW2C½˜.žBS“1Ðð…Î%Ó3´ß §�ÇuR9 eT�Y´F$q¯Zì±/{œèœÃÞý\nÏ.aœ4æ—Ÿmô)˜ƒÔ÷’Éd­©úkcñîšn¦‚y\’«ÀWcÈ!…T’B�#vuê¡Ö_°¢žH%¾›œ k6 �ó,%;A™Ëˆ>Ê}ÒØÛ +$£Ý¸‚Ò7¿c3ëiº×å¾6n�D޽µ]â¦q{ÅÃþöÌu|ºðg{oXl™¹S�æj;ÅT[]²ªškÓÎõÕÍ#ÕöoᩚýÝúÅøÑù�öyFâÞ �lmòy¹�Uù[n¶Ái"û®BˆËi¨åor�oØà¬½Âø™{�¸6Èb&ò{ýðHñª_RN·ùA�þ­d‚¡Åßš‹³Jë}õ,ñÚd:„>Ë ˆX=6~…·jFÁ1{`NÆ—`—«“B§u½eÃ&­„'[¹\Ïâ+™º-ß\δ%žÇÆ)Š}PÏÓêi)ž¯…žj¿—D‹ùæV¶ây"� ä+¹Ì§µ—¸‡‹üeó8'YFêÌCAË¥·ñ‚vÒµuµ˜ý·¶ŸVoOZQ®J?(‚^‚�%Z‚¯ÐÄmnñrk㼑sЉuèÔìé–§üþŸ/ýF‹š¸nÚ–µJ Ö«´Öëƒ>,2a«z•3µïì)O•W–ö!‚ÉM“ûƒü½½æ_dóÏ^;ŒêµG”�ÊæÕÐL|=–Ð_cxçË�D<æÊ\9Uj‚ƒRékÄZq‡ ? ÚQœ‡ÉäÑ E[Ò|¢ÐŽAƒ±�0†�Úu0ŽòC~Æ]•ˆœÙCŒ±�»”õ‹£ˆG ˜†Oš*çVÁk׊G;ä}…nuÌ´& ÙÔxÛã… k~f;3þ¹¶kFçnxËõ¸éð{–íSJ­½ŠôçÛ »Éþ5ä¶a¨Á3/Y©Ï>˜PÞM¾*|´ <£ÇÊ'Àx¿|—÷¨ÝDyà‡öÛ½ò+Ð5Þ¯š¤ŠÇ‹v13Ñ#Éä2 öm*!»GCX]}Ãg ×rA/ó}Â΂qc†“¦„šjçÝ<4D#¾}¿éµôð›i:ï}È›ŸWi$¯:ó•5–ô�_ÿµðGþÐ7}Ú\àûÓßõíð[óWßÉiFZ‡¶·û¯xÿ}I]dó6Ù¯· m¡ÃË3½‡^÷“Nx¨sÔ.a‰à½•Þ†àO}ò“ð_}ë?àKׯÐU(ø]·ï³ð½þBk/Ï¢g9[Ól–VO‘ÍVÆÃ–ŽÍ¨¦�(¡¦ÏîÀ²:Äáž5Ýrï½S:"/7i¤ÿÁémh3ÛXÆgÙÚ�öùe_P~Õ¤LØÍ#»æuQŠ<_i7ö¬þ 6ÞŠãI–ÇeNޏý ø85ÜùG2"Àí—lç�ïØèz`+QøMñÙ�Ülz¡­ˆx�E¡~��Ε=Mô„wW ó!A#¶�î_m“¤?@À×÷!Q&pÒÉ%„¹„¶XÙ´ü:F7`0‰Frmcê#ÅgcÊ"J(2†JL3¢‘·�hxd¼ ¹ÏŸ¨,6�DX�ÙÔÏS%_Þs�ÓÐ×a*úú:¸ï {4mµ9~ú[,£®*j|¾à¼p¸/W¾šd¹ñI ‚5+j§°רza.ÏҜ˃‘`á²&²,¾žã‡Dàõnaøðêâµù†` ÕEBs+?ŸÎçæ½ƒVz�ì zbxö¢“xÅÑ;œkå‡5æ�y\&á.=•øeU ðïm™›ëyf\l?Í˺ô„…[&0çi'Û9áé½€?ÚîºÍ �9ïÂSâÈ‘üÖ¦– ¼¡—7\æù=‘mž“dÐYlµ.Ä Ôƒ\=ñÙÅ*”G5¾mL¸¸¸�D=³¼¼8úÆF¯çÜQ· ÙÃP€åüI<#<á]ï…îIãX.sË'Â\wâ •6ÔëKv·¨Ñ0Ä k[—Øþ•ïIÇÏúà:ÈÞW^ÚX[®On,õ¤=ÝMÄUñ½‘ÚBêÁö‹8¦Ä¼”öõÝ$ñðB|?à˜ ¥ºíê{ í$Vy|¸N 8Âkíçx:±9rª”דÉágÙ�;ù]‚7PäÊ…óo’oÚÞå×Óœð%ù'€ é“.ªGe;˜•é!�¬Û†#ÅïSC÷Är¯n»¨z:™žµ\…‡å, ¡7` 5þŠî†êQw…Ë+�7´ŽNæ›:ëb¢«“oåù,´UÚ¨§3 ì¼�DŒÐÚwÙâÜ‚¶imm‹ÈŸ«ëbiWÇ_cKΡYöžC� ÷¾SmWÆÏXGú¡ã­Þmt'ž“‚ëHŽ|¹äý‰ÄhR/ù¥µ3Ü<MNàFÇã‚ã•㌡… 2äëS¥5ÖTªËydWƒ¯¦y‚·8B?§ÇâbÁ‚Óš5jco3·=rûØW}E]Ðú]¿ÿ›o dß ŸN©xýýë¿å«o ¿ >òÑ�Šg‹è݈ݼ~q¢aE¨xÿ}3¼�Ô¼ÿÄn å¥ ¼Ã“é!©µ°Nh4ï#–‘ÙÃ"?7ÔF[| ÿØq=œ¤žæûÒþÖo‡í_ù—á£%Îbµ“ùùê½Ætcz OrD 6èQá—{éÀ&™žd<¯æ%m–£äóP¶›l^XYb“±�c³; ±,ª*Aà(9‹×WU›È"qȪÍÜ ·fÛãµàL¢®¹Äº&U—Kl7Bïa�Ðâg|(Øün»ð›åIä€êoµYk°aûºÇ¼ù(ÚÎD¡ ]ÜãxƵ—ꉮ5¼Æe[ɪ¨P“÷âöu¶1¨ßÙ_ì�’X{‡f"2Ÿ3ü“Ä�‡µD'?WðKå:_a8¯ ÛÊ=PsA¤ ÌW¾>‰@½&dšW¡'ÕV«t¨žÊ\¼í¤eVªó©Jž›ê½†?Ò ¥UߟEžŸœ.Rî‰éä™�^6óÚú*vluŽDªñÍ ·5‚Uà™~«Ž÷í˜áué-2Ž×ÚQ¸ˆr2JAèlÐ.5à|�ô‡Ã’îp¤P ˆ×*‰ùt³†EИ8Éñþ”ö'ÆËUŽëžÄžŸ„ÞTÎÎÁ.Ãú]³/óÑ„ºx<µù1³…O¦«ççFÓúq‡?ÔÃ÷7¨x‰÷æý®b(‡OÇ™_lÊŸjþ˲ÑEÌfçìðíÅ|Iå4]Š>W´l/\Ñ$óªâE§f±VxdÉŒ`¨õy/jæ<ÉWuú\‡³Å}Es ¨‰½©ïŸNwPÂü{Ô×çJþòà*mnòàYß5GÆȭΩÁ¬zmM0#ʯFçg?ueˆüç¬V UÀCÐ/>îYŒäqÔVW)‚ìžkê�¡&Ü’­f ׫vhb³å§.OR&à`£¤œ’l0%!8aztˆÞ‚Rºû̺3˜À¯ø1Ú~h™„PK€í€Û< $¡˘D³‡±Ç®�܇vïÅ]Ë?ì›.Ö(˜"0€%´‹9gßfÜ‘‰ùºZ‰m›�›[y£ìÚ÷U4˜ÛsËÛ˜ªÕ L"…Խݶ¾‰`Ïp7�f'Y’z¦qI#:¨ë�d‹s�eÚÃUÒ�G´#ôÝ©[áqã1J‘ Û³½„MæŒy<*׊ôxˆ‚i?……ÈÁóPÿ~Aé8¥ò‡8Ï|Lï�îïáç5Éú™&±aík23Û#Ñav'�±ÞïwŒ�#rV†óv•¿îgÆ@_ú¼—w /9æŸ0thgÀS˜0œWžõSݾuÂG{~ˆF»& OûüßÀ¡#TÑàú(áñë¯�U9À²Õ—ëG÷;åFÏ™2@“áš7Èt„¶¶„-¿¯ݳÎl†FRV?$P0ÊÁáô"å÷°c*ÓÜ-t)reO?^òD>F°UþÙ8h�ù¶É5©ÈšvÖ? µ‹¿–q°SVö•ǾÊá²k» ΕÏdë�®ì<…¨‡íÄ)¾ìh8égÝúto®kI=9ì¥x>à Á› Ŷxè=Ù°y|nÞÂABœÄ)=7OSæñµeoÙ8V£æ«õˆË£x²~áçÿ#ðÿ?ÞoúÜÏúÌÛß?X–²5Cµ\È‘cF7IŸUÏKÄ?‘F �â>–r(òÕ 9Ï?,ts­€©ÍoúHã° ?¨' °ýà�,û‚®>húÜÏú%l`ä 49%í‰<›„v~®Ÿ`ûh*ýœÀÓ€S�0ôFä,»*·y†QuôµÙýüÒσùáÿþèÿø£ßùÝðý?øág;}ém‘í¾þëj,;³€ÇŸõ°0s™ðöTó¸h%~ò§> o#ýŽßöuV'³s“GÂ5‚° ã`—@Ã{‰ U‰ZYè¥@Ÿ<ÿâ?ÿëá¿úoÿ{ø+íGàƒ$ö"T9.=$…ކ êI½ÛLíÕ¨ «÷Ð&;±’?(h6iwrñèª]Å~�Ì›Ù%v€E޽Þ¬Ñ#ÿc‡K ð‹ytMBOþÃòj‰å¬©¸‹Œÿ,^�2È3+Mö0¹*5D[+p¦^#À€‹ý{õä[âxxàp¤N–³mƒúra;jÇ$ûnÊúÄ÷“zÜIÍW©g±¸¤Æõw;æ*ö£�zò�yÖâÑ‘zÏ7O¹z:ªxÖ¯:.É\˜e\M›êû& y„O¨Æ…#[ XHÐ?LÐxÔŒ¤Aõü›¤ß×y ýWù£á†9n‚:*nÔ¾¸B�ã™ÁÕ:$³þê©'Ðs»g¹ŸeÀ†ƒ„ï.âǤÑ{ÊÍàÎfËjÊ|i™"'Í™a`Ÿ•ÓuÅcðr•ÞML�W1Gž6/(oV¸Ì#¯Õií H/UŠ,Wñ([œ\{–aجQ¥ƒn9êNÅNŽî|‡©•aRŸDÚÿÍá§´ÎdA6M$™(=@˜–´5Š‹GžåKG Ð’©CéÏUã^£äЄÏg†1Û_�”Iö¶iÝ–ñ½š‹$chÝš³SÍO©~'îª>Ôðê ¶„Ÿ„½L~k»YM®ŒëéÄטƒT<Ö,Ï-Q� Y¸ŸåÃ6ÅÓ¤Ëp7v(lsû{Gä‘’ñ–>t= ¾ž¥&š%Þ"­ À�•�›×žF ÓØîQ®–£†0?æÙå4zí9C2Á‚N`wI‰[�ÝvÒëØó ¬|'Bß#úö"z 6˜ÈÁ˜à „‰|ir8”{í›>ŸL]SªÌšW¸:�×¥7�ÅuWx/í$9ç˜Ç¥Xë«�•ö“|ÇÉ©¶1m´�å#š…d@¦ Ñð²G³ƒ¶�`Œµÿ Š“d©îàm "ÜKêqÅÊúË×·“:©1íÚòD|ƒœ¾ÿã„p—>ü8ì!íµ‰h|ýªŠ;õ¯És£Ïç²=sx |ãv(ãÝå õÞýH :þBeExÝ{Ù3„u�6²Ì¶ ÃcªwŸÚ|9´²ä?ý�yQê}¤ÏøÈ‡áÿÍu€ï Œ_Ar"ÏèA¯Æƒzº…çû…Æ×Ž??þU¿¾ð—¾ÿEÀRþã·EŠÐ*Ñƒáë~óoúy¿X<Þ¾åþ7vwdgÔh]™=¢÷ùÙÇ~ãWÀŸý®ï¨�ûª¯4¼OU*õ—E¿Ÿø‘¿æÖî—¤Å?¯=Ž©ÝO›Pzù’p8F�ïÿÁo uñH¦­2_§—iç¾�ºTú?|ËÿÌ—|�ô/ü†¯Œ�†6±WëAÎûÇX;¡û÷óGš¦û•vª²�(²õû{¢KuúyéÑ�½ +²ùšvç}ØlX~��oÏwô?u6ˆŸ×É"D�I*‰ÇŽ<–ò<ÓÓ†ª+[¼2BÇÛNÍqñጩ#mÊÀß!�{Ç»ê �?_͉äßÇ0ÛKšvboû2k } ë 4Æ¡d:ÅrZUyº¸ñÂ8ÆÐÓ>Ùs?ß!ؽ'Ù±þÑ8vbµ=8¢Q?Ò-Ù+ÈeÝ¿6ªpv—zü¸Ý#G—ÍÃrÈ5©Î`]Ócœ�>³Š²ÞgA×Çþ#ëļ´Óî#8´¬£z ¢xö"`OeçkíÓ ~¼þ³rÁ†Ïœ÷Y?ò–˜€›~aÞ<‚àÔúËNAØÓÏp¾w—иï`%fÛYíO0¦B˜jèDÅ/ŠAcž OówF�zøéG霮ȿœ¹­§7ò\·Xð N—Ü2Ù-ÌYǪ¶'.3Ÿ­?aa*Påíù,†ÅƒSû^^UOÂòüÄMžÄc³x"X‹´©‡ÆÙ-268I~UEmD`lP7ÍÛúÍ€áGîÓ0­%ï ÐUòL‡0ãr©ul×YjJ‹eD�H£sÛí�¼™a Sœà fªPÜ;Ås gþÝæ_Ì÷ç©æIpó’Ù‡“nÍBOUá9:[Å#Cv®�ðXªŠððK�o×Ñ”Ò^Û-¥`@I‡¸ð=ÔÊŽ -‘+ÎóÕàcÌÞî!]GR?xô}?ÝB$Å÷(_4«‡îEøó™3l9X†`ô¤ž‹ÛnWêß”áÈø�˜w³jeq©ÖÃMЋü^®©Y�‘\ýµÜ¬ÆÆ yz|cŠ�×yØ5êÙÑœK ÷béÙîT*¯†”xv“‹áÇpiì¾i§^hݨòYÛwØNñ ÜÄ“{šD™7¸~ì?ùGþüä'?Ù“?4]–aøµÿÔ¯†ÏøðG}[£‡ò@c…Z¬Sˆèh!¤Z¥(Àµ±AõøÌÁ^F“@/«s{9uÃ,úHñ¦16mñŸàûÿÂ_‚ûñ¿7ĕӎ|/ôñ…¿ì†/¸-˜]ÿÇ)è÷ÛoñNû±Oü=k­“Ë©?Éñ§Õ›Ê5O•ÖI¿Uª±×µû2JqçÚgúŒÏøH]h*‹Ê¡“ÛÊoòf8žM?×+иßöÎ3Ÿþä÷~üÉ?ó}ðçÿ ï?þðASY”û5ÿô—Á¯½-R•þŽT¸Oû°y­ì~ÍŠG³ ì?~ãqŸ{·=‘?Ÿû¹Ÿ}£×χ�üâ_܉È®rcÁ|pœg§íM¿ä˜ßð¯Ø+6ë½ÝÂä&!±xþÝ[ŸËgУ"]’òÿÌ?õeðÑJƒ�ïTB}u]Ö=~4�œûPmQu 0±FÑ®kíŠ\@2}`¶8´žÌ≸Λ7ã-†Ý4±Â7–lÿ;Ýß©ZÌŸzŒ=ËÉìÖ+·¥1»JŒ÷ZËk°´!tŸ9$Q[ºÃøZ=n4>«àu“™ï´ã�nWÒ�QvÚ9zÔÆ`£æ©–œQ¸›2Žr¼2=ƒÖ÷´ë/4� uŠùÁÊ¥çqu†m}õToE4æŽÛm|Ñi¦_¯3{2zOÌÚWs‘Œõ¯²h<ÉB™~¾š—#�ÓS³J†—ÁYŠ?9{ÑóìL“{N¦Wmœtmä¤!OŽMÈp ß83,›ú”~ØvtCMq^Â@Ÿò×bæ©Ù‡ Œ�öÅ“x„žcHò]»äI% +·À2äSý„[*Ãòa/è•OµkÞ§÷o½F›•˜ãp:‡!èæØ7Zº/iXŽË8È?â ñ¸¾lAÿu¡ýµ,¶C$Ò§J(‡eÐ5‚´ÈGÿ@´žãBcX ‹r9Å©ZTåSÝÏÄ¿4ýbæ¿X1ú’Ñ|©p ƒe (Ÿ.�;KÁ+“ÊFn¸2MöãÔ â]þZY#QYà¬pÉŽ\ŽÂ½¸iØI†FÇ÷#ÆÓ›¼Á�‡Ý”åE7Ûz@–hUÛ*ã9Ë=/àï.J½wýÎB÷¶(’ÒµÀq‘O;-ȬàûÑ@¿˜S‰Aë8jUÀ!«s[RU¨gæc €0w¸Ý §¥°Øä(@”LE/ò8 ?éÄîà|.xˆ¾:ÅA“[ltŒ›„äXÜ'þÞ¸-ZÅ­ÏûH¡T&ïÁè�ûãR\8• ²È·ãöH6€ì“Æ•í˜:óòl­ŸFl‰ì É;ré&w%d™ªâÙG$`û©u×·cÏPCTÌqòÞu0»kÉï&ßrbøÞ/’ñ[¿È½jºcÛ Ÿ§…ý(ëåMú�-%§žAÿÑåõ ™$H^|Žö±!®RÁ,úÁÏ~üxvô í•OáëBrF�Xdá‡1Ú ßÞ[Ôt’ÀËuŠÿ¼x¹òˆêàS¢o½µ3"¥+ÉXè´P>y]ø Öà�Õot‡)õÌLÉ‘(‹g€1C ”þrf¤Ûà†!ûæ#庪B·£ò¤[”d‡Í[ìËÒ©­4jk�œÌ?ÖÎ�¾1;¦ËD„�-¥,†Õ1Nâù¹!%›B}» å>ª ã o à�¼«î�HN5/7ñäždÕþÍ"ø6Ò dkgÕs²”?1ž–mô‘áþ‚q†¹gZ™;mze7õ›|ßF &ï¥æÅ¸Ç­–œ_:A½\Øš$èÙ¬ >ÃctÓ Ðç“Ä’Ûv<ðgYAXçXãUúIV@4¶ß$ƒ¶Wà{=ÿ®jG�)¹zOf´\šŒÎV®‘'â=E¼¯”pXEÐʱ۷eîÚ)WyÁ%W¸é†Î…ËÏ'lÛcÖý³[™Õ1pÑuçC�Ë Ù™â�FöG!°Áø;RÖῊ§¹.°°\;åyý¥pÏ"HÜøÀÞ|ysVáµrÝ€¾ª¼�/±hOGçIìOåUžIO…•y�.N�6Œ(04a›6‰Ãp‡'M«2Ùgš[еY côªziž# §½‘ ¬9-Âok“«u(H®y¾fÎP§_$q® ¥SÝ(šã Ky®Ó¹ëΜßà‘>”¾MN±ŸF.¸Ú¹P9tê®Ö“ü(V©oV~ÊöIJ“ÈÕ‰Rú$ø×˜£­¾é@sífCê´ñl"4fÁtoï†Ó “ÅÀ¸"¾§Ø4$——•!3­š„ìHÐlÂ'�tó|ƒ°¸Øí*EPóãÖ¼.‘«„=ƹ(]ÓØã†7íod`×/Žý[m ^hã�é>çèé¢i=‚  ",VUêZfhm*%ã&HðÂì!¶OµZõX%‹¶@ ß�~ZEÔµ>J"tW„nBú/Ї´]ý\ }–2€4¸çê°Ñõ#Øñ¿cOï*¯%èN/Á÷É®·4îZ0KaWÛ½%Ç…âзm‹�ð#?Æ/ñî\Ûò8ðÜèO#E;pùz2Žî ôUÉó*¾ÍŠßojxÃsó9¸ㇻõŽÛ2­ÿŠ„I8õñt¤ ¢WЮ+Ÿûæõë#U€t§îÖÖðkh….RY7©D>c“ G¨ í`íGM ‚±œ‹uîôÝé>ÌÊôS’²|iÂGjјJà·~–\4’Eô; fÏ>¡Qþ¡ðzW²•ôìž ƒˆ‚€oru&ñt ‚^ÝçÖ4(¹½PýK㬻µÆ o;0�9á;D­O;mƉR+ÝK3gÑìL•:Ÿ�<µ|Öù¸ Aÿå?£TZéÀËÉÝŽY&0¨ýçõ)íÈÀÈ3wtƒÍQZîhcD8�Ó1N{O瘬âÑ5 ®ÓãdÂ’«ŸŸcǸ¢]P¨+æww²ÐfúwO®{!Û2Y€´öqO®d¹žZXhz‡’ÞñÐÖtáÒÓ0ìÌÿÕ¼‰ö—–±ž:¢`òù)-úö!Ùx#%õ)�ÒQV|EÞQ¾ ®N§p�wH1Si}æä�'µ®ÐžIÃß‘äHlÒN}y,F$îß÷Bâî xQêŸçk¢ýúFHI»^WÀò6ÇÀ[ä4Üë³´¥K¯×¦˜j­Ø‰mf_ýïTUȧ~¤»T>i{S3áé=×BSZSÛ’g幪«‘|’g.ù›fáz´ÏìEï »N—u–ÆÒSɇWùÄöÄyégät˧“v!ÒÒI<.êÁ¸È;ñ<›Nܯrбƒå›n;Sbø±ÇZÙÒOвq¡±Ö–ø|¸ÐAÕó ´6AX² ^iž�ðΆÄíÉ3JGïÉ©Ži«9«‡œˆž„Æ^x<)ÅG8é,žQ‹œ~¬ŸÐœå÷$Á&oœÀЪÉ�vÚÆ ë§Öu<Ö(Mþj¾I`²­·xê¦�7’×WB7å³äv&™oÅcq’XdÉ£Q oøVq§}q=r�êiŠ»cäëõ ¡¡�MÆ]=(ô”Þ„�VŸì´Þ‹|²¹¤駨SÐK¸Ð€´§¾òsÚJ)W£ž.­rò‹3zNÛÎ'¼{i@Ë—*.Þ“|êˆ'1AKˆ€qRùGã¶Œfwꢨ ܇—šë0>A®”@XœºÅ¼5m§¯âÁ�=…P=ˆá ‡)+ì´k®T¨1ñ™å�Ī´� üÉ‹Š;1¥@c~\1ÔCW¡£ÇpåS{o~Ñùƒ$_�òÆ]< ê(I=ÿæ@ïþ¾Ë'¿”>, wH# ¾|›õ£4¬Ž$Gøfr ìtKmOï l²ñHJíÑ=e1lù÷È¡ôNû¥OÖ„ª¥ã÷ºÇrÄréçêL²)DOž[Œsõâªz[<¼g¢A¾–ñœ´ÈC*7©ÕÙì2h¸¦è¨²È)§gÅk�¿#) àm¾“„Â8¯(ã7”¦6f _¬%ó¶eprÀùÀ}f,úR›v„aNêYê=¶|B.LÔ÷¡á$å½Z¯ôgÍ«H‚sõäËô3‹ô*vì,1ͯè¾\+-É<1:å€7íˆnp›Žq(—©ê»2ê^6KÏ+ëµS²×²´Ðk“Ç0¦ ùPž‡�Úÿ\—HÇ]%áÛÞöî,Ÿ?ÍØáq¤ÿ•Î0ôFdZ’NWž¸²zªvÆc§¤Ü3±Û-ôôÑË…?!Q¼\…ÞíKß�öµßŠßù= ×'Áwµ/bÒé)êQzê¯�äÊ1ФýÆfÔxñù.ÛŽÙ“AJ«å]Â(x3Kû±CW‰*K ï¸>;%ØÕ�}Ã[€—Ì›Jÿ87CƒØ0a}§æýÕ·[Ý{†©Oª3|ß¼@Wµ"÷ÇÁ?†vBoWê⯇RJU8=môŸCøqÃ\Å6’OWݲ¿�,1¦ü§Úa› ´áò}%Ú s(x@-Ž¡×/á�á1�!0è�–GócJ-YÆ@ÃiGÓѺѦMf_lUÅ>u‹w‰eÇ·ñ?Yÿ_½ðЀ‹ f´ „¶õ„{…î´©ôgÿ@ÄKÒ=xé îÌ{´—ù¨"€¶ÐVoÜo’c]?ŽÚƒ¶ �|Û)Ÿâ¾Ë¼“üìù”®_þãt×I'ƒ©íÊúædUøÝk%oºø¦ý³îEÓ¿‡|éi?LÝŃøñûãÉá�è¥=޳LZÐõ F”î‘g tQ�çèåpC;r гž‡ÌFñÛ»~L�_û‰Ü_?VhÞêòMg+äuÔ2jOE�’@s$ÚÀîüvEG<9Z˜§½ öG´>‹½³É&Ä1 YáqhöÖ”°4]y!E_츱{ˆr8öꋎ+\{½?P¥Ò‚ç UÒ IÜi}”·Õ“’i�C2³�rcÐÆgÄûúþf×&¾Ó‡ƒ”Ãü²_?*¯¡Ðˆeýºe^çí?P¨Æõ½Èsû¶Û×p”ê¢L´ÁŠy¥²ú¬yïØÃÔL#4tU4úÀ_®ÛèBïƒÂÀž`�ã)÷´×ŽÐ£·Ie0½Ýc×ákrTŒÇ)ÏXÿ4›(ö¨k¨¿ñ-¹¾R«‹»+ã)ƒH´/GòÞ(Ñ1(iØš‰ãD0âþ¾nµŸ]“�¸:hÜÂa;-J<]ô|-n�óéfîóð…=Ù³%îÊÙn�1~?² 6}0âL—¢=T¹Í“† )l¡ŒTR–ñ¢FCí„f�wƒ�b“D¸È½…Lkµî…w`h%£S½* ¶û¿—ŒÞ¥^9}¶x”V| Ý“�P=V¤™«—$ƒž (pê)x’݌ϘÿÅsbÞl#e"´¦1øf=íó°·Í#yÝÿš4†á‡«Ôü¥ÈIh!ÃÌú FB¶O{1Õ3ÇÆu2H´²0™ö…|¬‡äå´Á°I®5ŸfK0[ͰÉgð0UðåfÏÓ/q i$Á†è*2hrý÷› ‚ õô-åê!°£‡¤±q³‘¼ÉErƒÍX :Öƒ­Ú]�ªîôKl}/°«qkãzÏ›óØÊC{ƒÑ8"°wJå]ôºx^DbOÆaÒh“�%ˆÄ„1Û^R‡ý ‰N¹8Q%ae‘…OÖÓçk–[g®rÚçlü&<«›i……—ñ‘C¢Ô~T”¶|*úGÕĂР·ÌŒX¿„(5Ù&c†Ux,³‰ÎÄ�ô¸W�_¦Ó9μn¡d7ybs&°ëÂÏë™h`ÞÜE;Hì¬m£AoÛu¬ÅÁÕ:ŸåçöÚÉwW¯µ‰ÐæQàcúœ=Ÿç4—>FøIê½h£¢kŒÇÛý,ò�fÑ#rèÖºp˜”/°êx·ûYìÙuäùìIWÒYàÕÃ]BÜrèñ{~:Ÿ™´¿5½]áÔ/^îfûéíOپسIÇ@tæ-ÏÓÄtú®ÌW�óturŸzÙñ˜ŒƒNÖ'ïĞخ¬4êuå/´‰¹'³GñŒ3•'•óòË„N7AÀÁgžŸz:qÎ0àc÷\:t¼=]T®+þ0âb„ (Ë3œÿteÀË!KLn} YþTsD¦±«.C ,WÑÃK°ÅÚû›½Ö³ –Åõ?  {�Mõ¸�&6žêv…CÎø°Ø� k‹¤^Ê,�]Ë13}%)©1¢±úÝ€–ªßÑ�ˆƒ#=õïÒ{¾G#Ú>8æë`O¿ZCžhðSz×€¡Ð^LjħîÍú‰†L®ÜNâ׺4Îë rÜék«+Òh¦YÎGá}ÙÑÞæñ€ÐÍÚ;Å ¤zõ=6¬[¿öÒ1ÖóSû3Z#²bÛ…Qa/„€nÑA…x‚Nö ‹XÂÃòµD·;©ä^{ÐñjûõO0�i3˜Ì0ÁëôÉÉbƒ;ôb àþ§ðK~qáÑä¥Z×5Éò‹îÝ.÷´Oe„Žð¾“×^ŽV]#©Ñ{my: ¾-¯•(×íò=Ò†€ö›Â ”wd ï&G÷`y%¹¾ÿ±Ê-¢‡¨Á6’¤&÷` “³ ïë 5 á¾Hr:Ë ËdÃ{л/îÁòª”òg~y( x\å:]—ä´‡ ·Eü‡X`h²Õƒ`ÒáŠ�êÆýJvڢݧÍÃ…œjUšŒÚÇSªÚ?NФú±{L±ù «²-ó¨¨õ­Óà™þbz¶[¿òOÍdìÊYò‡d ºr­J«Ïwõ;¹Ðr¡§‘~¨PþGè}SKù®É¦×òµ1øÅ}ÖÙïÝXæáðc�îAgꎈÇÝôr_�ûÐŽüÛYôV2÷04¢x×ëo~¯ÅœýTf¦[j"l :!Rc�R¡·‡—ÆÔŒ‡ÕÏ9ÒjÔBG¤dÎÝä[ôøÑà¨Ç §àd%6¯?ÿÎ>�ÕœÕ� tr7¤Á˜B¨ Amd�¡fRÔFÅô•‘oCŸ_\뛦½/ýâŸÚHÎñÂH/z;ÁÞ‘{Îÿ„ÐR#;1×'ϼªÉOÄ^ÿ�Ø^@—ٹʣ:Ð�¢ÝØvt 9ÁF^þ8ñAîÚ.’˜É0Ù g*J§ö}Ýüzxõ!¥ªkUrƒ Ö!NðÎøŒÆZÛÎb ½¼:ÈŸÙ�úÇãñqî·¾ÃË'>ÁÏV‰y—·»Ó+#Ùõà¼îà–}½ò"Ë;²¬vy¬DÐÉþí;‘ég§ÿÜn¹X–˜_bj�ÆÔz�]Iè͉ÛÐ…!Õ�m‰V= e‡Dc5ñHÓºð}‰-å…껌z3;œ×_Ê.²$ýÓˆo$æÛ5B4ÂÁ® ¬.%Çݘ`0†SÎPŠ“{’…w=¤K›|t®9“”sµ¶u’ñ¯±DnOÎGÑ8ÀN_-,¾_{cÏýqD*ž�Û �Fí‹æ•ûà½(±NP·t·ñ©Ÿg©Jb3N|Îm‘ÞÍÑU¿Õß$æâ-?“FêÕU2ŠçL±ï%–$÷Fð~бhZÃ«ŠŽ”¢±õô?êËûúÛÒtâ×Û¸Uù±¼—²Â÷ÏVÁãâOý‘í”a4/BK÷9Všë™jÝB‚qRD =€� CáäÄ,/µ˜ÖsÖûD�êI¬§•Cб5Z<9š¸ªG¢y�B”_CѪœQhhŠ9Ö%-kòuG£†K;M“ŽåHsõ&�WÇsuu¿6yIé7RÏýÔ<8|)l§ùµ/óáâ]=uÛ†pgï»MìÑ)�ªª!�‹šóìÇŽÛhö‰�1AŠÝœÔ釵>¡CròÖwÜƦækƒ'³L³W2~�S(¯±�“«¦zÊL£Ö jy3ϲ¾öüôz ¿’ǸZìL¼’ˆÜé3¦8-â2x%‰ÅmÙãpâ…Š- 7y !’¯Úþ¡¼æç4’.*“(r£zž= }\ïaÒñƒÍCnðVkûö{"–w›T<‰g¤:pOÓÀÖ¡´� ‹òÝ—óDÓz$妿^vxI8ÐÛÕé=³ƒ•Âô³böÎÉ�úf’è…Û JÛÐv–±1~åÿ¶ €§…LþŒJ 4¥xì#]ªöK°3“WyA‹Ô:'{EEï¿Óìô;Ðû'%-rjëõD}]¦ÖˆåùSÜåOè[åÍ© ÷qqÕP’Æ”õ•Iìù³Æ¹«Úob矜^AW]žà†Ñ k¹^%¶á2Q¨¯.¯ü¼°¼8/ص×ì™cvŠ·)YèSÖ¿ÀÓ©òlÖÓç§F‹^l> ^Ä£ùéÂÔør¢ Šg¤4p‘û'YÕö3IRêëhº7â«Mæó=s¹ £/9íË´žìu¶èØJÛ"�2¾L•'jÖŒ®©a2ó¦�Œ ÿ¢Äœ1Œ°Ÿ2�ä¼L ýþfW'6žë„x�ï?Å'È ùV¹Ág…¦ëåµ|Z„0îü €“&Ú·¦ÆIÞ&‚—ô}·g˜@ °{`ÝCÊ;/âQg|†Ž0‚\"Œ”C´Ý ø ©ýúI‹èÁ×zLñj° ý@èpL¼¹?vçû’à ×n'i\­«¯¯cOVÀWzí\Ø’ Øpncý˜`³R”ã "Aáë0ï3)O©ì1z†{èw3¥$x Ã6ÆÛqu‰WTSÄÇm<”pÿúÑIÕÞbl H:hþ '£ñèq”øòƒ$|E¿}ð^ÌFŠýx¼âV§2™Ê#I–÷“­¥7‡µÒ€o_FXÝy=üC/Ïßíé¨qHÚ.æô¼ýã®]ØÑCj‘ú&5ÃXø@K©.Ƙ™ !µ9ÈÛ=§ðžœåå­¦ðäo”FT­h ìÿ î2 ñˆ�GȇÐ6wáRÛ0Ý3„^<ÛØ„/3R–‘]*¢L„-yð!‚Oví¨ÈÓDGÈnÜÀU…;}ic�.oQl´€ÇP!æ°HÞ×OygC*²ØŒn8}³^ä÷ÃN¾Å”©}$r|>ë9¦2öÏ {´±áÂA£°Œ� f³»ùŒþLgbÏ/#}ÒU…íšø™�з�ûíd‘ê»8’Vÿ =3o]½Y…j›Íx<áåG´_Õ«ihŃë™=8¶ŸžXPÍìÑVNÁå’²D}·Ø'd['wšaÛ ‹.èžAT¸5½ðž>/ñÝEà�ØIÛË#ñùg¤[zªÖUŒÒÛ‡“ OO÷Ää�óß:ÈååôUñËD¤Éž‰¢,1 s°ÔúïyaÓØODmµ¾ànVA©ð=Å¥[¨ §Orœè{ŒœzÏË`b#¢PÓÆ —ÓÔbÜåþ2ÃòNUO=âäö'GÍŸ�[�q·h$mÀá.î,éønâa¦§:‘ìàMÅã®âóÒ„xy0‹ç¥.•Oâ1¶ãñgÍ)M_¥Ü¢øi0á"¿ðžxF½yŠê\ÉÐ=ݾ͘>”ã±2þ¦4SÉ›|f³?›Ä£s<DÑãþ¹g;]ïùZì³Í�ÂÉâTÆÙëWBß�[³Í¶Ð¾‰…=9æÒï£|P¦œi½Ž•«˜ð--Ò‘Ï'ôÎ/°½P:&ŽU~7Çøž65öá,|²^D?`JËléTÓl'h>=}ø*§Mbâÿ>¶]¨Ìb3úX†‡#"ñ} •�±Êv7Ýe¢ÇS8ÕWB¯îªú\cvŠþŸ$vç&±é6Ñÿ“ÿ‚­¬`vÚ™_†>ÆTò\]èåJF�˜;áê¾YËVÛÒ˜ï]Í©Uu9KÕpeý2IŒ³­+ŸjžùÔééÌío³#ÔQÇ{A,ò“ñªãLFƒàäT³ãµß±ÚHmí*n2yÌñeƒã$vùYì²EäðµCAì;N,+ÓÖŠ˜`†8¯"Ø1¡EžÛ)ä‡\Ʊoi~a{ï"tyšîð„N×�§Ÿp8§�†Ï“È«K>u]EŸ¯Æ‰�6ƒ´÷’ößé™ÊG'‰ñw�F 5¾È©Õ«®{h�é®Yð¿N‘—çENi¾Š|žš=á§V¹?+°‹ï,ëE*O§ dž†Þ '…·¦X.r�iví5u¶›ÄÓ�E†¸_b%3S0Å�ß­!Σ{*!X£üŽb¤xcÏ'ì„„IÃwv”=Èuî�!9B(2/ºÒsÄa;à„¡�'˜”/Úãz�¡0ÆÊ´.jx‚ò'S€5"Äo*bzF®®/‡gÛèæ�bŠri»R Ì‹±±¯Yñ¢ûÍ`(NÑ]ùe1í³M< gÖØÂh‡ =l£B�ŒhXgýÅþA3HíªŠEWÊZðã@òž¨£ipu4þ ð.æ÷Ufs€ÙÌ�7ÚWƒÔa,îbà`Œû„™é÷¥0úB#8`,xÆGÁ<êOx'co» �b_Ä3­n‰¹z `äYYσ)õZ¬¬äñr}ÿË{®ÜŸ“)|Ó;Ü—ëKÄúºÜ�ï;JŒ¼zsµgÊù5÷&å]П@§/ËQe{F>]»xf¶�AO’EõÑE‰™§,yVKª˜ÃxmÕz8AŠ‚Hò&ç'è<&G6%õ ‚y–QÓÿ±eÑ—«rOïñY¤MÿŽñ ½ÌŠj š­Æ_ÂÔvjd²k7ÞI´÷0ËQ=}trŸ ŠÅ_ß윶�cåMž r¥Ø«ãq;íQÉ”‹ÑC}‘Jf7�³ì7 txY”(¿Sèƒæ_E¾Íó6€!~,¨ æÇ4�9¸w&žÅN¡)[ån†´!.u.zÊ,NÖG€(j/ö,ƒbò¬©‹YEå³#_¿ÚCêY³,ŒóÚ D‹ iž½‰|7©x¢h[Ùé›Sok5ø3�r?[‘ç)Ó†NΑ„ôBiŒòxTgÄÃ&ð.rÿÞÆ>�ó�ÝZËÊôªÆÐ%>+Þ‡¨19$D\bv O§Môºy„yí�_¤]öT$ÑÛëo|I�"w¨ç¨†Œ|ר‰6|ÍÎÈ€NF� Øj‚~…°°ªôéè²j½Yå‘£“[{—™q;ËΖßK4�s#s¶¦¬ç\Z$“ž2Ì–‚v¥Cioæs8mšd™‚šãâ,±õÖ v8Us­>—Óo/ò{òêßë ©Ãbþ©¹¨Ó;׆ïb–L³Ä¼Îqö¸-R¯Œ�†Š¿ž„­GÓ‡ú€õÁú =°IûÓ<Îo! ¥�řջ&¬O.†ux,ë Wå3ôŠÃ&ÜM`ª†k^\ÍȰÃ>({6ÁGN+çÅF›ØÈµ59ÔÖ^’Nmdžc�¸L y´w�üÛ-‡;ù²ü,þuˆ’Q ÖÊ;ÆÔ”‘d¥ §i‘ÇßJÕ8îÿ^ÂA¤�v�.¿ŽojÉKnØfœ9šÊý¹›ï©šÔ°ª²ÄãŽì§„¼œõ®Æ�`€, +9¸ÔèóDL)ª%Ç "J£¬ŠR^zCðü;Z1[08|¿<Œþ޺ȅ£îÍaãß‘÷¡Wàùó‚!?z+›y&ü�tMÝóã˜øî¥¬Å![(r�øÓ?ƒÔhÚàÎí=P¼Çu¼líÀˆÆ^ÑŽ^î”9¬—ƒìÂñ|�ë8ìkæ’@°w÷iœõn~ƒÅ*pœ[ƒc83�(þ^ÃB#zv þ�UáB&>ÂC Ý|Væ1§ýG¢3࿽ÏrÍW°ë…Þ�¿+‰Í�¶×RÌ¢«Úö6Ýbz¥zÊóûvteéHYì¤Ñèå”Ñ24hÿ½ UZ¸z4uíCê+íÀB;�ÿ¿zàY'OÇ„Néí.$¾™þÂBO{´ÞuÍu2,ëß�+|DG8x€Î “‰MD¢ÿÅXÞlNØ�Q#c"ô�zìàæŸ~Ž5ê'u/=²óíT–ûÕeu 64(û´å©÷Û÷tC —ƒˆc"pÙ¯Ñ�ÚÑñ‹§Fçí¾µ sÜ›=Åõ%†u!ÏËb·x�í=:�¤_|u)ó4üÄžPÀrêabãñèIƒ~t<Ѐu¯]óü= Ð7eUuýD€±ø€‰ÍGñ:”Cˆº\ûãÛÈv�,€õÙ`‚XÊu{(]ôÂzÐ,Ivý|d8hçYäõýgV†ú:3jÏ’è-7RcÆO{”!%&Þv óLË�£éT¶�ð±p�ºi<­z+žNŽ 1™n9öÏz6QXŸ�Ù�ü�¾Ú$¨ÁúÂà6¥–Ÿáh Ë­Ë›~©ÁHOÅöo¢ ž=Š èì&æý ]É1ÙhP·ép!O„ÝÓŒ�`Œ@ñ Ø©‡*Ÿ¼>­‹Ï“�ûpAFSèl~.u‘‡‡D�ßw)ØÅ)´S‚7;¥8 ‡ƒ{K£½«‡G]O ž{qíÓ"_Ì\唨֨Î`Ƚ±y&HÃKWKÔ¬ä^l›#2Ï Œëʈ›d#±Íµ8»…¤RCáOõس9•´(H¿ˆù´ðs…ERÎ+×Ã_¨ '#84}ÌÞ9 «ëÄpébáKJåÐñ¨Ù ®ÿC†OSQ?÷”EV�/MÂgk<5ö´2‚/ú¥Ž7Y\—®ÈÝ%f™ßGïÎ!¾ä+ÿ]ÄžÙdÜðA@÷ûº²ŒX’gÙub~_(ârWÿç1Hq•Ós—u¹Úo£½\:=®¡Ðo°,³DÐ%W‰ʱã,Ó¶9ê.kd|lc&"�»˜ÈE§wúAèn¹W»o¹ˆÇ袢\ŽëÍWµ ò=Ð]sÒË ƒZlL5ã/’yvÈ—ËÁÓ:…ô“h�17‹`Y[Î.zŠ¿‹´³¬c‘êû�à;"æ�ØóF¦ŽG²%Ëõ´C¡¿½€®²þ³8y…£¶·£ìzÓõ™š/ z9§†¦UONã_êá¯IcÈŸb~e˓ļ½\c‹ž2-òb–õ§óuŒpõp\E _dò¡wùþ¬x³ïÛµ×àLj⪫üfï ÿ,ÿj=þ7?÷ɼÕT ¢FWSàœ—€ s[üCýÃÖ‰W¢-â@ØI¥ ¶ñÓ�ãÎ&ªЇóŽnõ` ]Å£üK£]™V¦§º˜7úœÕçT�Ž¢gÕxürjØíï J¯RýfaÔKFfŽ©¢p™— ¦J‰°¢û7þ¢}~½7úh†9Z[}+` Öž œŠYtð4v0ìúΈãG~Ÿ�Ú1QWŸn M°î©*sr0(>¼‡gî�§mO^ h&{îÇÝN’M¾ p¼ñÙ÷3àÒ˜’ Ÿá¿" ­a!n3Ü›pí4Ë™%Š­NßÖûJ:‚ÁHÌ÷áƒ|ЄRŽyh·Ü�i}û NÚ%øƒDƒ~~tvÉõ}Œ@�Á§íIY]öÃ>¡¡Å8¥ÈcžqñÎ9š~_¤ ®]“ëcMwïÉî»Nîiª”¨é-à Þm º…?ƒ!µ…ð �ŽtZ®ÃfCÏÞ0·#6’jrÖè0ën"o,ÞýænîѸ+»üž�=P'v?,3Ì�î1ÂG´“ï e{½rÂãöÉé£îhpÚ¶?Š8•îÑT¼ó({˜Å3˜ƒþ†,wu×1ãup�™·�Š$?'?„MUçHý‡ìbÿùM�ü^8XÆF')��ŽÁdçør±nÌ ƒŽÿi¯TF¤¿ÇN梗®DTX»çý¸ìIKÃ�û�|†±ÆŒ­bÐÎßNûËÏÇÒq?qÓþ?g7И ƒnOGí"äŽz™DÐË(råb¿FÌÀχ²û|0ÊÐæ¶¦Ë²8›O�ŲðdÒ¥‘Úèy£Ïópòd–ÌŠ >²lÏúS‡1³ÎÞóT�_HÍõ«)àa¤”5K† ®¶�eÀÈŽÁÁxt">ÝwªïN~ÿ|¯‡éqVþÙM.|ù[ƒoÏá�Äš7f(â˜f0ëÒÅUž/2!ÑQy¼·�§ß(éV”ž¾ª1ÖÄ3×S¬Ã{Æ„ÆôÙùÑXLWÙJÄõ¹R_9Õ¸&ݱ±˜ƒÏ~C¢áð 7ˆï­£†A%誧_Š8\8æJ0ŽuxK×è9‚+”Ø3¶c­1Ì6¿ô΂Ÿ¯$VÕE>é–�È-¶Ã*p‹�X–ðÑ·�F×ò„ÞeºØ>,p]¢|p±~ykß¾ÏÜÞ´õŠ´ôeã˜xZÈ×ÁSL×=Pfhc<  âršmy!§™ÒòÂöÏúÜZÄ�Qqç„5ô›ûM¶6š÷¢À�ÃK<·¡‹Mb)Nì1ȱ4o¥tÅ?Ã0 bô˜¡ëqWU®Ÿ”š¦3ŸÚ OJð²U°±‡¾óN­—.ü�nϹ®°§ðÌ<^rÊ¥áHwêOm'Ðv¯*\Ï’ÿ¥Ó+œWèyUÍ íù~ØÅ< õX]½´s Ë5‰‡OÙÊb>‹„66QÇ!(HíŸCupL—_°‘S­àIc{ò^`ÿòê²F6“�Û*�H±›çHÓ¶åÙi? øÙ—×2JyqŽÄãl>ÁC)Ÿžj–Šgâ¢g4莉‘OÀž°›xFšƒ&½c[iº*tìê$/.Äx“c�øÛx9¼šQ£ s"Ozz4Ü3<- ¶cЖ£`0:& ú–:þg^rMh‡•/è8Ø il°«Ë׋ûºÎüˆ‡õ5&ÆN}p7¤ºs¼�Ñ¡xh`;ï�àÁ„Q.[\ ¯[çÕcnƒ`ÜKn0¢½ãÆ�º¦Ü=\ä~w;à›;ËW�ü¤~İ8T§é"¤½'‘Ƽ 0˜!Ž`ƒØ‹nbp€mÉbÐünó‹¹_�<Ó\UüŒ3ÝTá(9®+·‡ÞëZºwÒÒbæcIl@”_¦êd|ïy°aj[úV�µ¸Š',Ê©‹¥59™›Q¬_ìpýÜŸùS±çÚ)·Þ7]ø5ê06¦µ˜Õ®C+»Lô}¦§Ú’�¨Õ(¼ëWÍŒ)oϵ#ºµ0Ø„ Ñ­²q­Ab(n Õ$ù£§o|,êM¿Š‡ù²»ÑÌ*}âÑÖ>lðXkÏTfu)³O±÷D %SoBÿä!jÚÚd§yhs®iPe �{Õ†_Ýø6¥ð,ÄÖN¥�øÏÞŽ“ðƒ63-�ëssCn)Ïip](Îw¼ñãiâ"%Ÿ$(àÇý:M+v¾Ø×/b¼{v•S˜u~·ŠkÚâû®ü ›ü |6`PÇËÃ.ùwH«H©RdN1Qçâá‰åô]™Ÿ\;îÉåZ�ší¼*é«…£aìy¯ñ·g1ÎËìKíú×GºÁ3¸ñ ¼OÞV�{'Ÿlì•ý]gïÖ„û†uÚ”?®Ãóÿ íã:2qx\Á�4PT#à H÷:Ë•ßá ï�ýGÖsȱW]Ôú‹YÞ tš>êy÷�WŽÞR÷t—,xõ^ 4æŠtÝx€dsvŒÝi/rÆ|? ï vÁUgˆ†q\·B‘DªS4¯iÐ~7ö;¿£žÜ‘Þã™qº¹Š‹U†»zÙ‡æÄ“0ø>­+°Ù»{ÞÉZŠ´C®ê^e‹³õãewÁvnÝD1{º½GÈM`(‘1Öq¥Ôt©Þ»wþ ‡âP[RHàñírî^Nû?Ø}Ô29�ƒ´½È^Ïi¿¸‰rj$)ÿX¬º&•‰Ü8"¥u¡lv´ºGvB˧Æ�dZÉÈ ›ùfܸñ÷t«x«z¾Š§—žî«§¬êéLÒ&]ÅãPƒl�ï�£‰]ArêuñdTvea>Ës�Áé=ÿ“[È ã¬§žªÇ¯ó�„…NJcKêatG½©;iÌ%á¿ìI6Ú<1ÛªÅdÕqØtLK üæq!HP­­ùD롸œ¼Ö­¥¨A/8Ö¨ýÁëIq#³J¬ú*G4¶bò<”S³5FX bÃ�¿<» ß.náâÑxYšEøZÌWþ=‰±$±Uî8Ä¡žJ©Ö•x¢˜G·¦ Çr…åäø„jÌ@öþÏX=eeK’Ô1ž®À;í䮫GŸz²,w,»ŒW¥³)YSzê}¦»{¨·÷AXHŸ†Ð•wWvá±~kÓbûŽøOõìn «"­ª#2jýÞBf� 7Ò³\NžQjÞäA‚åŽøÙ.ÞÒ@Ã#@ˆ=1ÿªNœ¬?4Ò˜?N�°¾ÔòÒ¬ÆêÚD¾¤àÏ-6rl¤|ñÂæi‹í<ì)¶ÓaÞAh¤Šâ8]C›fü‘ß“(†³è}ÜÒ¼PR9·êËm<ö’L+�¡¨ó(óÕ+ˆw*ØKÊx™Qä^Eà&²~}ÎÃÑ篗Io�Öï³hUñ¤§ú–/Âr« £« ÂC/üSˆÂ|]ʃê…Œ!ÔW®G¯´A“{F¦-Ãb»¶=jЉ7¸òÉź“aUÁ¥qÍrÔTïhÐ…ÑŠx¯VÝÒ>µî³�Ü|§Ù%$­ÃSéw­=KL…é�Û-ƒQUÉ[ ‚G‹“Z©ѩyŸñ�ÿì"Īs»�ŒÇ­W@0¢D7 ö< £ôa`€!4ZézM”u´ÐJæÄF‡ÖGÙÒX?ºÐGnÜ0ªJ™BÝX©”ðÖx I„ƒ„Hû¥c}H©=N´”g—F±#ãíÛ‹î™þó=´þÙ"2‘Ý×ä’èzUÒ1K¼9æþ½Ç£‡{ íÑ�díÞS‡>1©”^BíþîÉpÈÒÎñ¶;8:‰6GiÄ>˜®ýx¸2ázDD”H gÅ‘E0&ƒ.k†…†·�t�1˜ãç¿Ú§cÖÛçžMèúDû¥wD¢‘ƒ<÷ð¼Vz¢Ãi£z§ú[Åž§R[ªÿ3§ç¼ÆŠ{ö.öN,Ç| PóÖÀ:Jm® ÷®¿™ |ØW�r¿èGM²ìKÈOüïmóð�ò_ǤÚ�¬-Þ†îZÇ Òì/”þ êûÜ/ I À2@ ôTï˜Å=‡`j0_š]n.€Fç];y©î0€”ï*=*¶S;Á¦ñmìÖ‹+1–½—u¾ŒÖ·O ¯5µI¸“×/æxsÖÈ�Lè €ÈdàŸÝÒ±Xæ,…±ÉFk=ޤ�ª§�8sE2(w‡|/½féçn¢�ëѽîðÓ‘™tzNo6Z~p4ß§U�ç‰aÙÄ–5ïåÇ8 m'ÐŒ´®%Ç€º‚ºM]¡ÜYz¥1iéÜòë©U³xreG8…àI<Î#W‰�DÑoýu‹FO¡£³YR¶­ y}ªõ |t>¹ÓýŒ©k>õ˜;bÐ~ð'ŸiQˆDA©uc^6‚`ÇJØÔ±r•…4õàPDc0L*¢›ŒØQÏ™i(Gš—ìæ�°•|”­aZÙcKc8òj‰Q³H½Soz‘¶:ñhC9…ר.j}w­’u…(ˆX…ÂOâºA·k;àÞS¯�M}%™haÚB4å$p«GÙäÖÔ3œ•h„C‰Ûœ^˜Þé�T•è~K‚�4†…ºž¹ZWž8‚¨‰B~‚†&‡ �«ŒÐ Í«|›†jÄ…ñºµñ¬8~ �Å—Öµ+ñ¤Ì“4 ƒú|ã·â‰Ëýl;Ÿ#òå�ûvv„wíßÊÑŠP=/U�N}¡†G„=m�“zœlƒ|h§ÇYì;õ¤CÞkÜžÄt§©g xH Ú€cþ ­�‚¥§\nO#3†�,ÖäS}†óŽçÓÔ<y|]5Ðh6|b•4©/B/‰ß¢vj /âÙ³0=Ø!×w„^Îü»M¶pCÍçè~ðÖ<1§$'tGZÁ7>)«|Y_ºÊM(ɤU<”Põ•ňÔ*dâd¸Ó`ˆ»–W Hùé^QÐÜN;æ1Ž_€ÀpаŸˆàµ–ßäƒõ �n—'94”‰ƒ¶TŽdBcàoýTÏÊÄ6Ámî ÓC¹€N×µ† Å\nO{£ïšŽË¹^•<�:pkâÉ¡!7Õ…$¦o<Õ—@�YD99„8ÁŸ&kýkd¾É)º(§QcöÐ×/?•´‚ÇŒ�½GjOnN«ùv库oÔäJô�ÏýVù±<�KM›žÆ;Çú²ýq7iŒ?ÝØ»“=ñÃ*툹~c=¦Ð)ö…‰¼7²�Ø ªa&¯ošžG—¥é¡Ns ß¶X/–yÅÌ=7i¨ä«ê°W¨TpRúºÊxNk¶:DŸ©O†ÚSä÷-xÆ`H¦\½Ô Np‘/7&ù2‚® ,u›÷‚/£U\�4—ñ‘È¥)ÉÆòeN5ÏÖÍpPëšPÌa‚>F*@Â>ÜKmAj,BMÇÛHiM=Ån£ _¶9sL羊m—5b?â)í-ÍÄc·N}™£~ÙsYÄž®UÏŒ8è74ÝŒ­O=æÈë ?½w …»qŠG�¨eºÉ)ŒŒÃ�ŠºÀ]’xrž$Ûæ µO¾¿zúé¼Ò.lCÙñ>R�fŠ<°vòüåÄ0žÎB7›ÔdV"OÌ_F ¿$‡Ôól[Õ9œîiygl¿%�¯sò TþP�Ô=®�Ô£pƇp<«|¹cç­Òî̯öbûí÷xùÿ±42ˆ´ ]Ò–|�g‘2Qò<ò^D­™¶ëMšÇ�&y¸µò°L2ìYW”‡6ׂ±j©XÿœÂšÊ º9 [p"’Ú>+BGt€7h½k¼�“1¦º°YyuùÚc®À»’ûÏAFHö …�$„F¾ˆŽý° "``p2’ÉCÚi™Ç?Ñ¥ömK‡GpŽÃñ8ºUÚ5šp÷ñ~½*nÙàýOŸÈjg´f3N£ yW„|Y·‡Ðó<†Óau�DIcÎ_+gÍØdp—:YÓµ‰—1*2}å«Ãý‚çKˆy:¥x�vƺÇÎo2¾§Äÿísè»3€�"Ó—,àû6€]ñÆÆúQÅVwüš@ÚH:±ÍnŽtŠKÁ¨v2Zæ‡W”àïÔ‚è¡NÓ¸_ý�_8ÔžŒè®•Ú—‚Ø  Ç=6„*Ùx“Ö…Î Ùµú]Óì(?HJ~=ÝœSõå±x„½î½óÄ'F;dF®>„~”Úœ‚‚‡c)6ñÓ%�Ìënùâ½â…2ÃѸnÀ(ʼ 5d;h¢ÈÓ‰þ¡W€c|vÓ3jífóLéÏëo³˜™4V‡ä˜¢Tk“j[>ÀpÙ˜ª;.mÖÓÅãk’؃¨6ǧª™k­ìxì––¥a=±Q„|d^¾®GËOGBO%$+F»F–A ž¢§‡>‰'×åÂÙ&>E·ô^˜õ…µoÉqo‰íPËèN–.éì„ôËÐéÚ†ÜK4Ÿ·å3á®ÇY½a¼ yqF T+œóRë¡Ó{\Ÿ|Ú«1&·^jÕW�é6Gû& ҤDzºÓbkÔƒhe_€êÉY%y˜¦Sfoùe‹@]!4æœÛªÙjlÊÛÅò.?[–@[ûŸ·û½ÀBwgf?õ< ÿ<3“ì0n‰Jñ¤Á–Š¢ ·¹œj½Ó5nq�ìôâ¥ãþ€ò¨$°õwQ’à7eçœcïq»°>s'îÙtº2Ú/'nCø¤ÄÆàqÃŽú«ø’S¦é4 .Ÿ„^Χê1ïÉ8=�á(a9¥·Ô‡/\¯z²ÚV�v8�b»«å³Ñã^+‘ŒhEN �i,¹â)@.¯¿ﲆB‹Ùš�ÅÐßüo1›@<î*™SõHÞ£ëÐK�©…â™,±-öÚùÌ:ê$� };�n ,‹È�Eéa }Wy�ÐO¨hT¢k››LÖàG!B7±Ól®BÓEÉc8Ö“!A§&»-iƒÂô30-L‰¦ˆÈǺߒž¢½®B\m)¦Vf€^'å®íòW¢Y_¢èoâØªƒö)Љ«¼É“†1Ôu˜pŸF¸€ø®krkhj™<óÔáƒIEòâ*Æá´#ìÙrTùGÝb�µdúÊ/ÂÇx Íâ8y–8B9ŒØ úŒ¹ÕƧ­½>a‹E8m®Žä"À4¢Êí§ÍEëJu€~‘pS=¤±„¤ÕÏ!”ÔslÚõTW.ŠvÆˬ×Y¾˜'«dͪAc9i¨–6,ÉÃ0Á«bjÕÓw7ìh Õ'WÄ1¤j%–8é‡9¢÷5&àdr0µ? G[Ê&xéSÏcM¥Ä£t›ô³\—›öWí›ÊŸãúÕ3äôÄ%/‚ Ü™Pg]<˜D¬¯¼Íb¬%h F%Ë‹ÌÇN"^$Ë©çuf£Y¾à¼ÎÆE—K–“Ò¿£Ÿ”2™)»ûþÕ²Ðbé- EDÉõ|bÁ¶^Çžu¹]õ ­úYžL 1©y`vڬà ¿ÄÖ,õ,úEç@ÜX?.ìû©¸{3¼Œ5ø_ÞB¿lÚ2™1J´,„t™÷a¤�m?%#vïôao(#jßöÿ4ÏÞ«hˆÏ™0&ÄŠÝAŠVŒš@¥ün tÏr;òÜÇçÀ�c�èàÐÊM0¢üsðhÀ]“É5îc^ /‚LÖvG“HÄLð¨×¨Ùl ›Z��¡cC8h›Ké"29¾ÉÊ×5y${â|9Á¥t”c¤©2õÚÓF0‚�ƒ®¾<~Ÿó·8…!® Ð�~÷:JAÎ`ø •÷tÄ®oÙ�fÌ9æaØ:Ô”*µ][OÏ®ø FÉGq;ü?ò,Ž}HטFLˇE¬ý:¨¬îò:þÏú£>#òý `&�Ùâ9º—¶€˜ùî|ßñ?ŒhàˆÞT èxûš²ü�8õõRªnØÎ@�Ò±¾±\lTh+×O}ÒÌ€PØÏz˜Feô(÷•âóG0±›¨ÿü}ÌýñJËÆë=8a' "÷d…Véuõçuiˆ…•ªÒëàµpÔ>ŒîqÜ�nõîT8‚®OyR¶WÛ°ê;‰^UdlW7`¶^Ѹ¿¦.|8–{ÔK‡ÏîšÊøHÏö ¡quaœóÄjT�ˆ¾S½�íôïË �*ØmÁ ä_T]—a…„ 4àö@h…2}{¤� FûŒ �A?Ž„(î5»ÀoÂÓÜ0¨�;!€Ô¦=,;â ù•¿âç§1O´#2:-2yþkDÒãËx ƒ6Ø�& ôl‡` ‡¦°AlýQ¹‘A1T�¯‡CçqãÝf¨k§ÿ¯ÀÛ’�$Œ:¢±Ñ:‚Ø{LCV4È™Ð�÷p�³ŽÓÃËHS�A†xßÁ†ƒò^yö÷ùSqm¨ôÞãg¶¼8¦$v�›wí?£;å—ýùµ#Ûz3È“žeqß]7 ’ºÓ˜Øa0†è`°,˜è vÆÅ�#>BóaÅóßÀ+¿)§«Ö7+ŸNH‹ìØoëÉS¨cÿ"„¼{AH /•VO’ŠÄ³ƒòhôÅ{*‡Ð²×ò@ß­ïðc|—ÛÓq«œú»<Å>Ü×ÕñåÎ1iôÄžMÅ“¥•¹=—˜ˆ¸¸üÝÒ4î·xúŸó;|ïêc>Õõ›ù3{|á“x±ãLâ V=ž ,—•”v ^}·ñéÐXN3"Ž…TöE\À4VÚUj›Áv«¸kÎC€DŹþšw\’Œ>F…ÿÕcŒÏò0ÍÃÐ![ÈEñ ªmÊ©e·¥~~n±Xf_ø¶3¢[\çPµz4á‰c!O´1w$N4fŸö<‹GÜËì0Дeëi»@3lÀ Ú†÷:Κ_=îVŽÑØ$”ð°öw{Ö]õ—Ø£ç7<~ëÅÁ‡Zèf¤^jboì™0ÜÄÕ€ù”dP�ÆÉ�¦í%sæ/”Ó¡Íó³¯$Õšr4!î !”þJŒK®V=±îèC‚=ˆ”Ev~¯dð1<µÈf[Jr»Èk©ikÒ�€`.WnP�õ—�6=þnÛÜêàJWH6¬.âr¬Ÿ$iD“xð’ÊÁ»Æ>ÒSå6��Äuo«�=”ôôb˜ú%—V©t�zÕ�à@Õ!�§õ¹mÉO}hü˜Ž÷;l‡ó¡á¡¾£k,ô~,Ò’ÄsºÄÚ ä®²7o…¥ú^ƒ¥°<áC‚‘=ÍѰ´c€ÅO¨ºö2�àxœ\¨]ÅÊ9*ï�­|*u%×)‹u¼ ·ê õ\>”Ølp;.’p‡ÇÒÄø…£Ç®ò%�ßäñ 6Ý Ãz±êÖ6™Ò—ê‘–<Ô¼Dg‰3Á(†”OíN7¿Ú©´‰7·Ö‡/FYœ?dzÆÍªî7€/âa¾mc;5ÓŠ–#é³¾ÖãG¬�+çbD©]Ì×µ3´õ!û:hšh�ª‡Ü¶w*½ØN¾Þ «|i1áÎñ棪› ?IªjEøt AØ }ŸŠZÛRŒ=>Ý“øôÑr%4¥§×Ná“]«–ß—v� 3#ø‹y�bºéiâ“ÿbghðµÉQ9Íä4kLr­è³ ÿÌzRº‹|¹AïòñÓë‰í?»,œpD]lVŠ¡Oãä$Øeü<ÉRž.Wñ$[þ"-âàÞ·8Á£Ï46f‰MVþ[ôˬ\s²#Åñí6ï[k§ÂA›ÎzB]Änzøû¾€³ËH?ÔbÏ<³‹šáëuJý€¤Ãùw“/u46¥Ù®Ês’_Ї`åø7œj,·Rú ØÉXé›_œž¦Ë…aR>S3d'ú€˜U“ХšûæÙ'|rÕX´’o‘ñ: ^]o@—±L—«œÙ‚ê‹eK$rH ª¹6G8ÕÓk{bVä´¢©ðÍ’oýZ]R°É¦vE†/¡~¸XߜػÌB-¶*’^85Ö,Ü]«9H‹Ý»¾D»ÁÚV]¨…ÒSïÉ€zÚï23>.Î?I?•?®lªè �ã=9�¬Ÿ™Û¸»!êŸ(Ò7OY:‘è2$)‡Ðé9í_Ië6¨ÀÄ¡Oý`v9ü:ݹH?¯Þ5ºöc´Z(cmF¼²@B#á�„x€ŒÒï a¹ƒ¢‰¨“àèS(ÌĶv�ð—‡LA}›ƒºhðl\�256 Ñ.’ûÌD)”ܽ«ÙNÅUe9è¥ëì½’!©9”rÚK…³¾1�çD޾œa(-—›Amß/SøZ?…J[¡‰L‘2š[ŒFðøC·SFÔcŠoÕ30cÞs™ÿ]»Šó.ƒ† tÂÉÃbUúòŠL+²èmÕF•¬ÆÖHmk]”p@ƒvü“€?L :/;\zšMeû¸riÿG¼™Úò °�ñ ¹¶ÝèµS*iújÁ/Þ1½Ò@€ñâ/¿1šÇmËÝ#vzœ Ôy¾÷¿1Ÿ^ê_��™V×È«IóïárÌÿi1*Á¢ÙFÏÕ(hÆ:L;½˜½^GiD£A>j‘áø‘“~\XØÜw„Î"¦x¬¡·b¯IYÿfÆqÛ�Åv¯Ž# ‘‰{âîäÇH ¤m—z:'³º: ÷åoý¿¬:&öü*1Ðê=]D0ƒOzJÕ3×ZNáôÔ²I+¿Hj¯žJCkÅßßÚ­À›•îILã΀û§.�ºã¸Fõç-U@Øcˆ4² ÇZ³ÓŽ)ni�œV[<àXítÞr\ăëéšaÏrž&’_N,ž…üè A“$‹Øƒ.×ÛË{¬P>ôÌÂÿÒã KYtÏÑÞXCoÀåjïµ”ª>¾×­­3+µM—øÕóL‚(X,5Ùâ¦)µ©-H«zLÑ: ~~!Pˆ‡ Šˆç"¶ËÈ�²dv}‘E¥qëóúÓœL|´‹x\"ï0n;1*ôtß $ö„N¹“{ð/ž§;¯�÷P²ºBÿ¡caüÈNC‹!=Ä03“e“0%ë3ïX㳜֨p¢ƒ£ŽÃ L;Œ¿²ÕQÛØ¢æ~‡’¤ŸåÙ…©‚1vÚ©Úg´û´‰§‰gÀ”cÍzú05-mÀxý¡t¦§K}JÆ«ž²,hÔ±œ&ãwãÿ’-t:‹¤‚5‰vvÇG|Â!µº¤p9|(ãW‹ÄUky}RýqÝZ!�ýr{ÉN;N®N#e°—ŽÚz‰ÉØÔ•t’fikC€,û�ÒQÌÅ —ýv®:ÅZ¾‡@c³–ã+õ\ŠhSÞã:ÛÀÞ„·;øo1𨃠~d¶ßypöþÿÌý�–㺎6’]Õûœ|ßýßZ2™w%¹„$sº«l i‰øe÷>³V½«mK$‚ø �ó: A$Ý5ÿMÎìVåì”éG#7ƒ½>>wç2áÉtª"àåOZ‡¹/Ñ–pjzE*ëMÚÊíÔ¿�ùµ —Píâ\Ú;lc=ûW?á¶Œ©7zãyÙ52fÙ{hÂÁ»«ÂÙÀ¯õÍØaîö¡¤õ¦¿wÈY(C$¬.,YDàM+ØiÑÞH|CRŒ*?ãx�í»GÚ)ÙÄÛrⳬaõQ˜^o+�ÜsR‚p¿4½ˆ°t[Ï-2ìœ+N!!®+To(œžsM¨£7êMI>t‡M‰‡Äÿå0@ ×wõÃO~‡ëƒüLÊn95bë¦öõ©‹×¼Ââ%�¢ÍpÊw£]«%A&$�V œßîz¬èÑV>×û›Ò?cIBz-‹hU÷}3Ï·•ò<>£­ÐzèYߊ¥/jÌÔÏYvT·Ó[ö@±¡Rùkߨÿf^l©ï+¸]ålÙÅ%|'ÄUÛû‹IlvŒh’nšÃnÕç!7û1¿Q}¸}òÓ“ ôQ4Ûã䎂�‘Ÿc±‰?õ1ýþà]ÃaV¦.à÷P‚Ü5 «�>WS°“ôÝVažt]v›GÀÛÉ 4·¤å°\õÔø¥/sS9,§óDñ0Ô‡!á2'uããßi%y„$þ]°V–Ì Îf,z])› eD}^™¡Ñ¹cÖ¸¼gœ`;jne¨\TÕ‡Ù�³Ð«t­!iP\j»WlA¯FãÜÞþr;6Ú0%‹€��¼’Ò#ÝfT.ˆh¤•övÝDNŽC]�~)³¢Ðà¤0t:£)@œÜôh„YÑáĉ{d˜_ç¸xçm9�Y ¥zñú� ÊT‰'ø5Þ-(€£üϨ˜åŸ;½Pǵñ%pá_-þM�gÜq`¿áÅy£ ÆÃΗ³qg~Fa W8&3FSä-*�k&™·^Ì…ù5 Aþ)cÛAº¬ ‘\N�”�à‹c¤é‚÷¯¾KÚi”û"s{€™£ž(1¿Ð`ᢽæt°/=kÀ£ýA?øý�öïô5›„S}+R‰âtÎß)Èàpmæ¢Z�܉£Á½ <œFI–Áøü¿·\IMï».ƒ�îš�­ñf¢°tˤëÁ&Ñ{%LWj$Ò�ÙEûòÛ{ÅvÿT\ H…ÏucѤ&q¢á!êUÿõ÷‚ïê�â‰I.Pm ’¿$„¿bC)€�ôÅ“¯Ì[Á¿õ‹d¦�LV¥·—D¡büà(�ûñ…( ØãîóRâ8u%ÙTÇ©ZüsX>DŽàƒ ¡?õ˜£‰{$q0�AI%+“âm{BŸªkq™Hjš7éc;ìÑhoÒp O«ª‡z }R‡ÅöÉt¥@"W eja<#ÊGGð߬ßlw+¶Þ¥æ…ûnõ._ªE ’¥[\Iuåc¯ù¢¤ HDz¨m¹§xûVâ4Ø~j§žr‡¸6„xQ�,IÖþˆôkd‰‘iíà’£éät§»Ÿvy~~?ÏÙOi¥ 9B¥ÈnãëWúÅv¨VÍa÷ÑB¶äË’,>àüþÐñ®‘ö[;Eµ½\Nç1^g+;5T�}k.Åû/�"‰ŠÔ¦zo9òdùŽ÷Ìèrëoß[D陓ÇýœtnQ7'Fû±ÅÊFs´Ãâßù�Eî– nmod±ùuþö5¼ž~‘‡FÄýÿ­ò÷Çj&ÜÕ=�û¡óù°�~)´ï1Â/jN•Ò[wžìt(�,}Z®¼=ÀaÛ)ÔPÙt>n÷‰%$º~ð. Y›gêô Øú²qüP§ÅwüõTÎm¡w ÞÛ<Ù±XiºCÿ™ó”ÒãënÎh ý)õ+Â%¨&|�ÍÊð›¢úìI ô�hýÔñkNÊl\$E±ÁéÄAíŠ}Î)døË wÞÓ-OÙÕaôß 5<œ°,w¢ÒaÀ×sæyˆ©ÊwÛ—»êÓßú*À0.Í~ˆîpy÷j>Ž-²†“E¬Bd{*>87»Ed¶\‹C޹ìåX¿åpØÇl9)_G¬™]\F›ïïzù›Sx¤Þgí¶¦÷eyô€+•Þ׌è“*³bt[“nñÅÉ?„g0í8¾U^×µ~+OÕîO#þR޼vQ?ÆÑxº%‚ªèÛ\ÑÚæoßÕ Òô© :žõÈ bV4~A÷Ó¿á¾3}Dœ·ÌAcÚ_Çgú:äLäi/¶Ð šsÓôOv~¡IåºÉQv09”0;>íÔøeÓÓÍ¡Å+Z®-žäÚò߯6kâ÷7Ë;ÁUÙ»ÇEÿN9ì¡éùð0ŸüåÏÅÑQîÙæœ£þ‘èä•ârš=e8çðô‚`�ùÒµëÖxv󝨯"guÿ£=Pöèù³l¡¨Éø"¿Ëˆ Ù~·tF¿½}}³eÛ›þ8s iDŸù0¬Mýܵê©G¸!6XSìøU‰)` ‚½×Ä»½¢ª þÑ�úûÛ-3æà€CÆ©.=N6NwÞ[ô‡½§æ§=/œü¯Qô~шâB7e» UŽScÏÍ?^DŸ0]öÀ·`W­o|)è¶XdæÓæÑù=®{ ¥ÛíMyÚ*�¿Zûß^îKZ‰¥¸-Ê„-es÷l4vªê�¥å"~Øs�±‡h„ < k¹7÷¤PB.Úš$í¾Œºýøç|¼ùýõCS¸?Õý„ÇäPì4rVúnÊiÿ°œÈ·öùÜ(¸ÿwMûØÁÇ’ž2p‹ N«žvû|ôyDTìÔÞ^h<é£ßVæ {Ÿ‰/1Ðùü­~â¶öÐä“-Ta?MÎ ág¤ç®v Ò»HÆEÛÙ ¼5Ín9­�¨ûæ�ð¢ÉqýK è_êi�ÅæF>Û‹ct»SÒaä"„å|Qõ9ÍÿçÚøë+½ah¬nñ´Á�8îí±_'ˆ]‚S¾/‹ùúý®ÏóÆvtÄ3ÁùP‚|OOwo —ºÇô½ZòT(A§F­Ó¿K‚ŒOÛ’úF�ʱ£lˆ(ìp=Mœý“�ÂÎ¥ŒE¬/¼&¹ýØ–éºÎø*Z!X¾$=rxÜÕÃyëŸf\ル Ézo³ÝbßãRf Ž2w’cW$îsÑSºcVêýÐw²$Ó…½]¸#ä°ÃP)²�¬Ï˜Ðd@y”;û¡#Õ©Ë b¤c!yaŒÈ³¸sÇŠÓŒWÌ,/ ‡ ó( ø»p„ê’xï„q‘ ðLò„úº8m9õ'zÏ•Æ/ÁIðë½oy92è£#a_âÏ|;ÔRþàγñnïG’NærA+º²Y2Æ9ïðS‡PäI",“É0ØäH:|®æÒ5S×3bº–â(¸¿æhºH ‹™>&¤£LMç}žã�A$£ô¿ÉÅOÄy*{ï@eŠrd³–9ã�¯ü°ˆææ d6ùú{DªáòUc~Ý&3Ò—Â1q^ˆ—‡‹ ÷$±GW™T€ æoø‹I‘É÷Ų¹Û¹¤×½ @(¶ÈЛ¤u¡)^³fxÅžhW}&ƒqf’ºÏÜ×,ÚæUIê¾ã��Ñ5.¿w ~ ÎÅeꩱ˜‰VXP¬Vd‰ßRSÕýubXoà[¡¡PíN ð9Ü��ß©:þ–Žõ74ú�¡Èˆúåýît+%—$<‡7{®¡b^ ¯N‰zœ ?ñº×ü×½[ÉQîÓäÎ@Ù à-õ÷úߨDÊ…ÉR_SÓÐDjí�¹{ ½¹?ÄN,r^°Ñuà!ò‰Á¹’’ù’lØ cxFDç~…f˃[3ÌÂ5ƒÌKê¯ò³a�²÷Í„JbnC±+˜Jîàª@§”¿±m}+ô;Cë·E†/ìì…û_ºVœêøüNÚI¢W¤uÏÃ7Âb¨‹n›Ó\&f‡;,ÃÏáâ|‡NšÐ—àX$õø´J苟/‹L¾>Ã÷Y)Æ¥€ ª–óÈü.ŸzúÝW‹Ä Í}Gë¸fÂÕÇ]a^é§>ÀþèZÑ6Ø‘ fR·j¿ ËO�€úëu:Wó³�ö+·Om×"�ÄŽ·Ôºíl�ƒKâŽ5oš“lÕ/O6¥Íõel¹å$‘ë-·Ÿ<·YÀ:0C°,pén§oNN“D­Õ¶ÚÜ´#Ú4BìÈuGmšSb98 Γò«£>o<,Õ†:ë>5‘{lÎ6ÿþ³Õ0<­W|Çž[순ó�®ã’å~Ù�/z6Ãñ·jä¥å*ÔnÚ†Þ±ƒf¯ªhDO2Š‹ž®,wÆßäG·žnßQ M"Oµ“ž¬g{‚,Xf�ªê|lmKƒ_EÄX±O+�RïzN³›F=Zd”„\<ç@¨koòHàƒž�EžÊŠ ;L9’ñ‘Ñdø[ùòó# Ý#OÉŽ\{GS‹`Õˆ>¶ÓòvÔ+ڻа®wáz%°©¾ò…³©ÎËòløï¿çß¹W¨0 –÷(å°´yØZä3¯šã-ïÅNW�ú Àˆq}Ký^xДŽë�›FŒózS¸¶—»"_Aj2o9†´žE¨zúmÐlìô8Ú?”ý52OçÍXŠ¿52îþè:&ÏmÊ�Ÿ�ÖØzñ�MÅgÿ�Ïy'�ò›s¢U°á©–r±œ=Ü/UÚsQÈɮǀyRš&o]YLoZŽ\…g;ü+&±A̵žéÛÊ´vQœ½B©AÉÝìnÒƒšìèÌÍZ3¾ö«°­ß¾wáÙ$ëñ}"ios�dljšã˜×Éì Ÿ`Gñ²åÞ´­k½¾´=b±S­]² šÝóÑ�2h™½Ùa^7GåÂÙÍ�—d*u”?tRô/DÿÌÜZÉÃQe“¿¶—C·. vs§K/xÑ´ÒrÝ ¡z“¦†'§\»Ý3Ðá;¬©‚a§xrÎ-X=¿«ü«ï³k„;«‘2ºRŒqê¥çë`O³¿i¤ŒæÚ»8l|(Nzª4 èìkšê³’ÙßߌLFìˆáÐl�Õrq²6›ò<ŠåÑÝ Ô3ÔÍ^sgÒ\‚<ÎÃ'Á3õ°Y@¶¤~�±PîávH ¤rJÅé¬(TOÍEÈ÷³î a�PñˆºôF̆[$cä<‰ó»=άʈÏ�¨ZäeÍig9¥LœgiJ,âo÷»í÷z3õÓúÃÓ›cäbƒ{Fjô¸ŸHÐíÑ öS†m¹ÖéxêþÂãÖtëç3}dÂ#%•wáý „ÔL‘ç¥]›©Ò*Çâ‹þtÝ%Óxs‰D Æ]q`øÀ¥]Àƒó’kXNF­À„˳B”†Â tØé‘iƒ(3]•ä?@»Éo¨Ü¯Ìú¯® ŇԘG+ó€O‡?4Ë¼Ú JhjÉx/8ÅŠ—çŽ#œSòùocáø[+‰ãÕÃûÅÇ×A�úÏ.rµ›Í¦íâ Щ?1Õs=a‘ðÚ£ý9 yËéßêñ+í3)ýu…8Ç}¦×ºÓG¡Qä�×ä.8Úå3xh2ô`×[­zœƒï*Å´˜üð•U›cCzUʇ{X„i¼ê'÷âúîüÁ]�D¦¾˜÷.3ñõ Ìch´Í˜uÇ\j¸þƒ]·øk˨Óbý}f{ËEÒį™¶¸Öѧ·ó–Ÿ¼7é#ðìE©`,´¾WR=Nú`N9åm±Ï™À>WÕ“ùS€=�ƒŸÃu¸öJÌÐÃÿï,挣it"‹YŸ•ò¯_D بSÁ.VjvHž^ÐÞÙ/M• õAà3g€ G会‚l�¥¸^ÕU8šLäŽ&í02˜/kÎKsößÂ’]¡X¾×eœÀM”·pÜ…‘ ®}L0FÄ2OdbxõJ_®}‡|kƒ`ƒŠ×‰B{)|]Bß¡,¹ƒh£ðUj½Ò s£¶‘ô9cYáe¤¤Ñ‹ˆÍ!ãÀy¤c&¼yq�𝔢™qŠ~ À¶9Âgm¢Ð™beAóÒsöÀ<Ð}VüÝU1ßÓh'DsíÕ¯_Kbd‹-í�^bœå t6Ôðí{xtìCŒà'ªÇÒ1IãHú’›r=‘säsIl8’l:Ž0ÕE7D¯I�$âÏË ÷¨LÆ>¤˜÷¤ÑÅÈË/T´3zº-H®BîoЕ…: Êþ¤z’…é�ý´l?ªÂTÛ™7'*Ͻ7ÍxS r¹€3ísÈh ìTIYÃÃæ™;îüz§­?+22ÖȧýúF£n! D¸´Ð ­¿PŽÎ"0FáAºüÞë“»)××À4|žÖy*c˹¶ë´ Üû‚n˜çgýSéñËrZ©©Ô�Ú?[“ÏCz*©<ÕH EÉ’vŠç¹ÕèÐúˆ ’³hd¨�޵ûÞÛ0”@*TÇoÍ-CÚΦùÙ"ìt[ßjxh²…þÕà>aþ�ëais½myèïû:êî„[Y¬‘WVZéŽRõ?ª%ø”Å�SÇö -ÇR©¦¡?n«çþ<ùC·úŽH“pzÜý¦÷5ÞçÎòÞOµ¶Ÿ)–øC1’/”,"§þ¹«iÿzÓS ™Å1ë¢ÎV:%ð”âcz02È�jÐxÓ¶‡¨wXsçík<>ìÌ…x|ÚeÈÝfŽ^sÑ̹Ó�{‚Å9tÆ ÉÖ"h¼»á>9Žx£çyòòÔù¼m„ €ç)zÔÕíÈÂÉ€ 9*0×o8hdÉp*2M-¤9ù¡»}Sm§©Ú«VÜq�ñb$óY Â5Ž1Ï…E2ª~^ ;bz‡s3ý�ÆrSýúT~·œ€�®…’y"Bo’€än8è¶·�ËþÕ~çS-‚zˆXn¡(¼·H¹-izŒ)Âñ ôá^¯˜ëéØý´yË[¡3û;ËUæe–0 @‘¦víEÕó·ÂÝT~5ÉŒPΡ¥M=÷¯ñ1Ô8í >û© §w.欣i¨P¶HU=�ó˜©ìÕp-  Ï¢!qfDs)yÄ>çƒkÝÿµÜT–ÛÐr© �“Œº…5r¥©ÿ¾onÛþ)'^÷½E¸î{{WÏS¹:LÃçŠÝÆ;,ÆæCé¼ÊN…„¶*>r9v=wÀ]t!KØ"Âsk=uWÍêvï¸ÿÞÔ?n¦÷tüŠõ"¼%&süÔ�Ñ›榄üÖ7ˆôXp5Ï3 µœn­¾â©Õ|^CÒ¼Lm“ëWm§ø‡¸”ãžùv¼(NäùÚ £&úr0¿Þg‚Ÿ ¤ÜÅÔŽÁ}b_Ö·�Ÿ—)ݵ‰j<õo§¯šûÍÜ(;V,ôŠ(<þkŠXZ—9 PÝX®Îe«I°©ŸyÛ^måÇ2À²Ü�†ÎSk�Fj’Ž·´ÿHÛ]u­ۄ³™Ð NÛ£ó€p‰ÂË^fìŦlîÍŽyì�¸FàE½b~rû]ýÛÕrkšbõ7l"Ý,"Úrcv›ã‡b«h� �¢ú=’ÖÀ˜û}ä¨l4×`µ‹{zž¸}hnÇ/1<+ŠõkáÁH�\YÍš—yAz­ºupüÛ óÄ8&Tã½ü0ç°;—Æ��‚K‰(F£‘;Þ±UEe †Õ‡{o–Ìœ³R[×~OH�`€àCWÞùKÛ9}¯4¬'Ðë_ÉfŸîÍDª78 ­1ÀEüyT^ÒîùN–˜’êmþâÕåq‚›’&çAžDè¸urÿH]ôFoÝAþä]D.i¹b¬øp‚ò/Ú‡xú´œ½†€}IèèR;p®Ä1ÒAJÑ®†ìäMud˜+ójó% ˜\ �=â®ik‡|£èdЏ|ñ9Î3ÛõUo<£sP i;N ¿þ`Â*'ÐŽdøì÷êþü—Ëa“Ó™âÉ÷4ä×äqP+ ìšà!|ã-¾ØÈsò"^ÕNrõgdàü™©“5í øYv‘ AÇË5Œ Çìp½�NÃôo 3úÿb™rn+LW‚¾Ž)rMÖjjŸ‰ÇkA9$�’¾ó¤]è” …±zÄ‘J¿Ë:ÿS©ªh8ÀÀ¾+¶â+ùÿCdì뿨æ<œöP1�­»+T½ ô7µEÈ^⪵GcëEÉxˆh¸#ô~‘éäIì‹û›?½ž¬ ¾/ÓL˜ûÕ‹~/Áô=ÔÑFÝvJ€ žÂE阅(øÂ"’H/n€d‰½WOz¶øgØf 9˜h°#@G�ÕgdcïsÎ @ÍíǘG_SÎoÃdÚ²·DÆïõÇAaOþJ§¼ vÜ0Bü‘¿Gÿ]{aóùÄqϘÍÿ¸…ÿÖR�Á”€ÓlƱΠ$å¢S%º9Ì“zh³ºyÑ ÷§cx£ØLï3;Ãéw"\�pIŸZ�A†¨?JãÊ,Ç“±]ñÑÌŽU÷¼Ž”U8¯�)U�çwă'ß�ç¨æí6y óüýýŸÿ)Äý}~Ñ•ÃsÿÜA7§^wÚX#å^ƒ7®H×Ù ìCs¸ÝÆ*sôЫg@‘Ç�háa§†î-×ÀùòþqiÑH#ýQ� �FXçLÅãGËUvæ” °ÑEñÀ­Šƒ–_-„ŠÏ\eÀÝ¢sðE$hÏA·Ù¹=Zt§óȹ"•án¼+dË�”"CøG ¡’ç_J¥ÉNŸõù¥8ÕÙI8.Xî©û¿”.wmd9ü¾(—R!~¶œbçiÆ'¼U#mKò•(ÙÊttT“D‡#†S{6‡q“¤ßE)q�ß«òeÏ™µ{dwû=Íg×Ñ¿,ƒ=žÕ3=¦9ÁLO ž}§,ê7íÛŸ5È·1õ@à䢘\é5'·þYñÑš’ú1»±¶ÆŸȱ$ÄÎçˆãÎb¡=6íÇsâ2ÜÁÍ‚ߥÑKÈA‰Äýq#ëAkjíTM<õ ®ÏG»°1Q©:€ k[ê8¡»ú�…¿¨_rûØÏêß�:ú© ùFæY4²‰4bª± ;;ãÊ8Èßž9ÛøÈ¨”fqÚSIãþ‰u»ö·`[Ðw‹Ù=ms·ÜßÔç“u^ŽkwÍUû½4?fá%>ZP’'Õƒb}êi¨g¦úÍkPnz"ÂS#þ<çðÎ¥\Ü4rq3¾| ¡Ã²èx7¥ë› çö\²©²ñ�9}MPޝßM£í–c=#åJŸœ�§rääk¿?4¤ïûúˆZ$êÙ½¹íšsðœ/ÖÓQ ½þTüDsÚ®�ö¼£©«uÌÔm°5ÞšnXny0Æy6¸_k8ÏøÔógÕE¦ã>Ç1Í¡¾*¬U–J‹À`;Ó¬ò¢<(º+£‡D�Ù¡�Ù‰Ý#O•/5’qÛz½³Ìx�;nç<™>¶ë W‚¬zßôò¦xX.JM1}žŽ{|}¦ˆ7Ë º>kú?ô¹êî9Tß›ˆÉËôa¹&I=À½ÿ>‹"þ¡�{ùÅ9"˜PW�g“Ì…‰›&³÷PlýJô™|—º7£çÒ<Ê Æ|0/Ë,ê$)÷ÜOyù�‰ÈF”Ãö*üF†ºí»Ã‘~-ôçc‚­¦>¡�];Il3ÕŽõõ€×àKHïòª ÷%i ÃS+ÞÔðvVÇm^ŠÍ½#U0p…ê-¤±äZ}±D猱ëKÿéK@/°¦)~ù•«¿U$ îc>ÅQô^س´Å7„ýÙÍŽ„¿âx”‰’á§„îП÷‹õø¤Ï-Oí@Ñ[ÝQ‰T–˜ËÚÅEè’ŽÓ¥¤ �VF¼jèú?G^ÄE ‡=U ‡ä¬kº¼ç´ëêe.[}ŽÄùÑ®ÛÜâx%Œv‰aüGîQzŽK‡ƒŽŒ4#$Ð ‡ÕÔw£/'ù¯Ö‘8ÑÀuÒD'c›Á Eò}TÚóÆÜš3HNEŠƒ–¤{/øð²‹Ä€æõ½c‹O–°tD:š"»¼W°_Xàï÷‰.í:çOKiK_ÍSU¸¨-A•U°ÒlcËhÎðîÛÃteסe¡(ÌçàνšÛ lBaQ‘8¸K&Â0šQ¯§)áâïeA“‘ƈ°ßá׿ÁU©•>„Iÿ|¿ðõÙ+HŒfÊ"ü÷ð‰šÜøÖ`»™•¢zú ê¿ù²woHwýÂu6\8ò£iâIG` ÿ:`�øï`k"`ÿ-I/ 4íâ„#¯8 žIÛÜ¢`ÇC„Ÿã� ž1ü$áÐÇŽ¹é:fÀpåÔ‹L¡îo½w’Æ;æÌ J‰‚�˜¦ò™À7 ô»Ö2yée—ºSb4÷o˜dÀ–‹qE¹è% É6Єo2fO ƒ ™k.ÊlPùH¯ ˜…"|Äèâ…vBœò4×hÿɨxž6ëŸ%¦B�ù�È;¹¾ ¿Ð­p.›ÄON*Ëæ†¹\†9ƒößðΖ#ã`ã×4Ηt‚ÖÃâßÅDÉ @w†ë”,}�dqþvù‰a‰c5åÙ¸¬~ÿÏÿ[ûz{–¼Zµ7©­˜ÞÛÊd(ß_­ýç�ºÝ×�Æ¿âu3Nv îžN‘)r¶ÄŽ;”üE#õžÿ½¦ýåí”ðãÛýÎk²” ¾·1=Ã�µ,‡&[n:ÝÝ;ËN½z 9³NDõB”¥ÅÇÃýºÑôsÐvÚžøOa�9¢Ú–c„WïZúoÒ\e‹Ù ÍÙ‘#’Ìn¹ŒÎ*yŽ\|mliLlN=ª�™‰xê^À5Ù†Wã %‡Ùð8íÃÖŽ»óÞvï�K•Ï {.¥æ9Oö=ÛdÁ—×Qgç•[P`Y·G±­ÏœsúÈ3-‚ͦ-ã99¿‘3 ï%(�á®É‘ÀpšzÐo;D�¸ b8µz¡¾t�€óÀPùˆF&ðpj®ã€:„Èw¸÷EéˆF’SÓOõºá±ƒ<�h-=ì Ã]|‰®ýžjð˲À¢GpG°{ºïòjÕR®Ùˆ ƒž›ï¦£™¤Åò• ýÉÐÄžžö=ÚãS�ìÞ—Ä æ×H-R"-×›GD¿{¿í—$|¾I°-r]Ú¢ÍCýÐðòŸQú¿C¿ÂÛ=R�¢¿”õG¶IX‡Œ�Å#u­ÒpÊ¢�"l§ˆ>X‚½�ÊU«s¦”eÒH3³ðrFÀßo·B_ãp¤¢þq_s!~7ûaªG$'ºkSßÏ"F“Þ8àÿí¢9`Ug-º¸µÛs�dâö!ä±dÿ1ü„>zó®ß4Ö�,EøÇ‡òΞºÓ61´<³?f9ÍŸxÂéêmZülê§x]÷q>ÿªœ9 ­?ÖÍÆqî[ÐO‹ ÛÚ¼îhPNdcÿ]÷´ Á‘†™·`ò—–ƒÕrìmyejîvOy=´�½È'Q«Ã5´7¥­Fœ=ôñÿ†§ã‚ Jbé4ð=JÌÕgeÒ† ù·ÈÖ'ÅeìEíÉ>ñçL\L�ZnÁ‡½ÙgoúX—:?–ãR>Ûµý_Ïg‹Ð´�9¨ïyinÉþI(ÒOQÞ~¬ÚßæC(¶À›Ÿ­ÏËr¡?{¤ŸùÎ:§7½¿-�ïÚ•Wëbiô7y›ŸHp]|Nñž|˦¹K ?Õë ÞL¶ßûÄ>f\ȦU#{-×NÓnöŒÂÆM©SœïZé³Ã]¡t…¦@²±é÷“Q�•°­œïUýÊ`°/Ÿ›P®… ð™”ü ÐátU¦Ò�=GO(€ŠKê}C»Œ“´&ÔïC”Ãáž�g@ŽPGùGrg6~ûn°}™Ÿ‹Î¯¾#*ûò)J4³¾p•Àî @  !ý® ®ýOêú´ ˜ àåï—ÊÀ ÎÑÕ‰ñ–Ë›ŒsB•üÓÜôV¸èÈ• ~wßE�Ö+º]ÜcDÒ¦~ÆÆ)' UÀàfõWÑ™‰^ê:.uj8"Fh\þ²y¤5Ù´Ë «xÝ7vâìH)ÿTÒ¥š«Ž1§ºèOäe¯#…œYg’êsúm4¹*ÀÉzA|Â}ruü²t‰—°ˆm¢‚6àJ¾”å¿âò— M� nÔ`ò | Ýã'¿‚ÇýwÀëÍ2³ÓüÆd]Áü³éó( ¤(]ÖOsì‚Ò4ªÚ¬ª’'bR›#RÎãD9ÙÅÎâ”ûk­?ò3Æ=N(8´,°š×G È¿Á�©‰“·z+úçHç�Sø¿«v8Ìww¬Ô÷ÓÒ„8‘è²[廊ß*Hi.±rŸ&;È:+ ËÅ%†OŽx4ƒ¬ýfD;ñºGÇTÉæT¯`‘Åë�×�$†f-4³Û接÷EqæD.õa7¬n°ãïoÈÈgþ¶ã¼ŒXŠ>ó·Y¡âLWª§.4z’`�¾MSçKIXÕ…a°Y�3ÀîdŽo#XÿÅó\b‡é£ð›eæòp1Jó}ÖË?Çj*’eSbo�ÍÆ8ã+4-:äû¶1´õåvi6ÿÁ…+¯ŒÜïL­¥9põš‰SŒ¿÷¡Öþf�+M¦×¯%ëµO1âd›j‘%yà& ×ü”EaDzuŸ©ÍEÖ+Úîû?ÿCÚŒÃÖº@5¾HÆ7A§*›kJÈÑ|üV{àzH�0»xÈù9Ÿš+O6ã)…»êç“(Óö|lÖ‹›žüÔ7aV·³0Žã»ž‚=„Àéý§žnü½öS“šy¹+_G驸¨]µ”÷vô@Ž >ôãñyèó^dŸÅ"3Ÿ�Æ[æšû/‰]‡1�ð�ÞGQ/¿ÐGLW&¼×�u¿yé#ñþÒc•¥àþÜ…P^Žg¼ç\ªPà¦Nz?™OÞ˜ ÛÀÈåÎãÐÎ €H;O[Qé�"E¼æÕîq%ÜçÇðÅ{ÓNÿDŽԿ3± u‘¨µìfØÒ±úíZ‰á«,×ïÅ ç™Dw=ÿ–Œ*¬Lä ûÊ>-a�*=p–ŠŽ»B»*rñËû«Zeù£Tl:»ÑwÚc·½«>/oÏ>,¹”ÿ¨‚¸=|«<áÃĬ0tȨ/¤¿Z,�\Œ;Ž%‘MQS'‰ˆ0ªÒZKKAÓk³Wuí2h–r^Â5'Ó{±¨Òá…ϧ8,¢¸•Œî¼}5$’÷C5;(WíÞr_Ñ¢÷”Ì„ÿéOæ á u�A U±½´/ÿ ³úÓ­‡ävL1ªædŠâ=Ó‘×åߥ¹'A�£Š«ôy ¥³ÂúsÌÄEÿ�Äÿ¥äUÓ¢/z߆6`N½prwÜ 3û‚ö«â›^ü¦¿#À·æ¿ ÂE8ªïÍ.˜ vxð)j+kÿFéíý„É-ŸˆFH?AæŸeÅI5Üàh ÍuÎÃå AL&Ó~q3œ§Ðxò�¢!WŒTèÿ€‹Þºß`Òéhz¸u^ÄÄÆ(ÿJ?Ü„óg¹­Â�Œhxâ‡9“žÜ‘¡Žõˆý˜TɳÉHÅJ¦·&Øh»Ùϸ ñõ·ËÕDØÀÞaõ¥¡‰Y¸µž‡yI%oÔRîJÊ 1Šsˆz½œ«}8]Ó/]ÌA�e¤ÆKI�¦… ð¥ç'KÐø‰ÝKq­ª[mjØyч]ÏZ™Ë~ƶTô]Õ“T7ë+P�Äßÿã?›˜ùŽÁž¤O¯Ï6ÄM“g-z.×îÉ-úg¦„.®5£n3gÆé]­òuEwº™ß ib=�rÿ®$×*ý¦ƒEx} ·Î�_í¾|Zn5K ¢§î-¢îˆDćù±µëß\ñù±SÏqœ;ˆ-wã¢K÷ûòÏÃNsN[í§ã»Ý·H¹Ïˆ?žîù޶Ëu×qt†ÂÃ%u ŽO¾#Õw6Ô ø³y×ÓŸYþK/Ü'52“„x-*¶%ç8›˜i„ëo>À ÑÈWþúEW…-óŸß§ñ9#vLBÝ"ß•_>� _Ú¯‹‘ÞODZž|b†í”>?? ó~ø‚™ådÃ\!8wå¿ÇzÉl§#ý¥5¾*O &ëÂ"XQÞ�àCm<{ã{Ácº¼ð�ÒùŒŒš�Ä’…PÝ?ð�ÿN9I�™zKS‹·µkΦ>aÁé«ÑïùCõ¯Â±ä~œ™ºÝ KMvŒï¿•4<ƒN’x¾”×%ôÏõSwúb3ݤž[VòljÎï¹Ø"[oIFæèkÖœT–+%—Êà-ÏßÖÌs‰(ùuý²'Çbk§tËÚ"? ­Å"){’uÖ—� ß­Å ,š<¥ÓÛ“©¤ª~:Þv[ëeöÕˆæó¸á �Þ"lϽNmÇ0ÿ¦t(ÊUY@Ò¯t6&EyU ;1#²hä6[$²Éµ8à49_Í"´T/Š%÷Êùƒg¬üá^Ù1ëÑ}'½Uø¥òÄAŸ¦§a¼¦súhÿl$¸ƒ<=­[_Þ$V¿ïÈÅÓúÓSzI‡¶Ï˜sN G[vÈïº5÷u�xVvÇúÚ�ãt\ªÓÉGQšå1þŒ. ¸±xÕµp?]3u({fãø¦É’"î\}bHT�rY<×%ƒ,ÂBئ‘à‹¦)†¶À‘"]wEÄš/šäh×H6Ëy´r�Ö7~·qž”´@‹HÁœç}”"v‡ÇŠD”M#ÿnÇ©Óè#(ä3²RÚ 8Ç—ýnÉ õ™4'w‹8i94�;OÌEþîÝNù¦Œ�Μû&rÙHåd‚yx˜¯Õ�tBl™Æ}³ s¨{ŽÊã4næ^–“wÊÑæCè;¿aÀª›r²TÎõÑlþþ¡ó«þÒ¦ˆ‹ÙkRû<¨ŸÒðßOÅËSâLÇ¡¿ Їù¬|+m©ÎN?å¯6ÏÏû¾ÌðˆzäŒìc;µ³ÑÁrÝ(ÿ<#÷Ô´Y±HiWÍí¼Ý£væZ>oìÔþà>hY“â$u«õ»¡1KEŸMíCáÝáÕ@ûK«–*†-òÍÔ�Ê�å(Üì�!;[#´×j2•¬ãñ;–êºõ¿O:¸«>{¨»^¥.uˈÖ;á7�þ¸÷ùrÇé)-§ÞyÍNû¥V/ëoëǯµÔ޼Lr=nz}ÕS™Ý]Q]ÿ©ýlmàÏÇÃéÑ{»½ `Ó\Èvʵ¿Én[ž;$ç„]CæÌõ�~Èñ[/ë<ë|¬ö¦‘vþ꽘 ¿%æífÁtÁÈgš2·Ã±H¶(ÿ7¿!±z¤‡¬°@cWÕYˆØHÂAƤŽPØ]³?óì:N�ÔÌŠP„ùVåüÝP”ñ—Õ¯.Æ"t™GE@ÚÜK-p »ˆ<8.‘þ<ÎöñÎâ™ÍÍLû õ/~ã¿|-·‰ãåIÝÔ°Gø½Y´‹NC‰× >Í[U|�¬¥Ö¹ê–£1ÆÍYJ ¬ùƒ±eYUyë lñÏ‘Û5mDa…«¼IëÎÚ*þ—+¸U§91'}¢Á‰Ÿ8¯÷Óÿ æ°÷�²d0‘—Ètž\á^×Rµ˜¦?xâ¸Tmä~¡è+pÉCxɰö…Âd"°^gXñqPÖõuó~ Q¼Y7žÐø:‚dÜÝ&ê¼Gp½uË%ª•ø E¼°ô~Ú ÌçÃ~ƒÓ!#œ×z:Êôûuí#]›¶¡¤àR}y�¿[m _¡qU¤€ÿªàÆ@€Eï\QRj;çÆåÊcD†Ô¤µn঻…eŸ<ù>)Üù:cÊübz ¢ : Ww¤á>ÆÛ ÆŽðA`bŒß*ÆjæÈ“˜ôõ;¢$Ô Zú‚ËÀ;²_é’LÍËÆm²ÁL"_E>›�ÀoÙýñçíQuû­yrk¸~5oRüò….†'ãa“ëä \üÃQ÷˜± ëEhÌm›ø-Ïø8’íl’�ü˜–ñª¾g›‰Ñù’`E4ÅCeø¯¾!D*ˆèG5d‚ücœƒ}/} œç.Í�Åø;‰:P}ÃÙuú%a¹ü- Gé5xÔ}4½.4a„± �0m|>õ¬í%Œ¥èà ]–àKq¼^™ÿ¤Xû'�sª-¥ÑøIã Ñ`~¤nJ³a e¿ ˆÕ¹Ù€“ºS°Y’U‰Õ‘ J¾©àbze˜ š+bš¿— ¥âíß¹hç5J°jè`sß tíÿ#*¦æaÁ,ȇ6ÊöFŒyàà/”'{|¿®c¬ƒ~]¯ø-D®d� ÿ7ác"ÎßÿÛÿÜîXî[Nž?ÛΘÜ[$OÛùç3WT€Ê\vØF F¶Z¤:àýhJ—ÚÎ^;EÖÇÍmvîX�Nn¥Òõ3Âî˜ÜýI#‘×oí÷/‹°¹wx^¿£í²•wX­l˜[ˆÛzáUsKRAgÄÂjm§ ŸÉBEmûÔ—üo�öÉ-çÓ¹Í:ŽÓ€µÜ#¢§ò²žÊ+϶³Ä·-Ъ~°G.Å2¨Ñ—ôå®Éà<ÕÕ½±�h± ºÎÇ®!¾žnj 6¿bðÏêÒs"Ÿú•/ܪ…>õ€œúøìiSüÇ«ý�ã°È9Z.8û‚]�~T¦lÉž¾uÍ. ¸*<Ó§#^.'ùÜb†ù8é£×sÒ“€+ùÅ3‡.7>-û4¾}nŽåäóœ«Ù¿Ñ­ãW‹Ãx&cFW½É¾Ø§§z·sªÉ]IÛ:^¹ô!EõÉÉ'*­©ÉuUdr¯õ© 5Õ¦²Ï´ÌØ�Gpi5Ï=Wö ŦÅü<�ÐÑOËÁ¹KÏf›éû±½ë8`ÄPE_½¸˜�\¼MÏDý⣠9-ÅO›�©²¤‚ÇRÜÀ)YtŽü4P�hn]ñ§†_o�yG%¼z„ªå®K}·S&»?nq‡½9º¸é¢™äˆ©eì”ô3rÚYÝOe•ÔP¿«]ðTÚvS76®u%<ŒM&¼mþ¼ÑÅr}¹œè§Eh­à'¡_`¹ÙÂý³õBA®nê<bÒ˜4Åù»zË%½¯Íß]¶¨×Ï^DB$*ª-{od‘ØÎÊÁOç7ã°GË"¡VL— 'Ùm9÷aY÷˜Ï_tÏsÏý7kDÎfóÆQlœã«·êèRnñ�ÔèhdnõÌÐ7x]` }Îð±8 ±á•Æsv QÓ‡êÃ$#Ë©W*ÝcõB8ßòˆÇ�Fß.B.aaÝìêˆfSƒ k†+*âÚû ’Úô¦ó±¥Ó‘=„ñ�ã Ç�‡ÊÝMça×Ç­ÅrðiÎO¶ˆ5îþà‰�>—Ÿ™ÏÜæG»M\VÎ~¤ÍßÉÇ-RøøzžÎÇ{B†¨ô1Ï(ë=,ZiîL>ËÆIiöOǧù¥nêÝý‡8&'IŽ?u�åùÙn<¹Ë/û©dô€E#çc‰xÝ%ꩯµ}»¹ÕKñ6û &ón÷VÉ"²ÍØ‹°¤9aaO‰^ bª†õÝ<ªÂ°HãûCíú©mõݦ×gËe›ë R!�@-ïе™bᣥ 'D’R)2* v²mÿ^sqOQhð¨J ÷1”EþàêU_VMu‚¶kð™9Áæµí;ýN=Ò,ÚÕý\�G%nøæùBð{©ÍU�vƒƒ €Ùƒ*°T[ðƒ‹H¤­!˜ ã+œC‡éª±¿ÑaúXÑ™çNïgªñ¨ <ç9&}F8¢bø2“ )'°ÃBMý=\Dªyæâ÷”ïçMù4ÓŒIV¡‚F·†<ÌS? · ÕCªl‚]�lè§:)˜)ªkh‡"g¿ÑP½£h&ÿ½W¦ËC3Ä7¶O´6§Ômæp4c¢}r�ÿXÓNR¾.sšÈL^r{žˆvC¦’Àý<Üœ\ ºðŸ³û`¸ O¢×zË–½c/—AHÞœlò óØ$ø+Ôµe�'ûW&Ý%:R¥“±^.5ÁÇEÐ,ùPóŸe/ñol+—í_t?†nèûÃ*°}¿  e¸6­\”ÀLÑ׉Œíî³¼AËz¶ðVAw3©ë~žÈÖLŸ æŸ262ùÞ/I EÕ˜ÛzæY_ùjŽ # ~löÙ9‰™éÆPÉ8� +@ñÁ Çl}Š’íŠ�ú±¯¹$Éh³ŸOë¿Smþ�æËì}WœïÇÖœý/RˆR:Šá�L_–Ž 1ÜÉ×;€'ƒ�ÆÔ[b$Sö‘ºö<±žÏ,¶½ÖòÈRY™ÍÙh"e·xM‰Éö=Éa–ïšcê6’¯ Ï;ï¨pƒx¸çSÍÆf]ª Î"‰Ì効ß"º¾ë´)nT©³i“‹ßØò%Ær£µáPÇï¼�€'¬+Ys(QD™èÊ&Ÿ?'D‘ªclŸWêÏÿÚWTã`Ê¿Uûþ_þG«µJ‡€TêǬ>@ˆk³Ü5RæHÖqõ�[Ây êŒ Ð¥óÛZùŒ°’~ŠkU8 ãïß?ôû—2±ž*�”\ "K&yGäÏ9­÷Ñø–ÃtaQý©§ ÿãZa£w [$ÝO� üÔSÄòáO=¥ön§£~R”nÈùtä¹}5Fø×?ÛõýgûüñA�ƒŒÇ=Ž_tÏ�wŸ�Þ8÷l7ýÇàœŸP-˜±Z�F”Yd„|ÞUïùBNŽ¢¹éq°6 ȹë<<4gÒ9þÃ1¸Î4Z Ö[–3á;™ŸM#†nïåRjQy~~½ôºíì‹ñ‹^ÿÆH½SÐZ¶õj3Ò"lÎ-�£¢EÈj$ªáb;o™Ý¿¿Zµ#’Wi�4§…œ~Ýø�þè"¬ÁÃ"¶Z®Ayþ¥;…ˆhç÷n¾lŸí÷gK$¶Sè¡q4:?$‚~Q:%uþf‹‚«Î½æ¦Ùñ5™º4³cÊT_ï!¨)E·,Ù#^ž±£ƒ†½çÜ­ø‹q3¦q‹óÔr`AAˆÂüaÞ‰¾žå¹[Ï©9E“«°EPRÛ2=sÜ©cm¯7B˜¼ˆ‘¡õëãh9ûýà �hË–ÜDO%?VõÛ÷6�ýE²¹] fí/‰Ÿtvׂ�?Ïköæ’2¼¹«–*ÿUYõ”àVŸé¦G<ÙóPMëv‰á^/bÏz<òúlx>tØŸ÷éiÏÝyn’)¸«�yì{1—]ŽüÅYÍ{â'‡¾æ—`.�‡>FŸËh2ì©¡�ö"ê}i~Þºq9�|oÊJ‡§O¥×#=ž[㜉• ¥A3Ô ½Nœ³YÁ�ó¡p‹ºù�w˜„F¸¸cãý ·kC‰zï• ¡Ø1Ñ[ÍÞ)y,•t1Ó°ÀúÝî1 è׸“ë\3zJAdâ{p8¶¼è]0Œi Çò'ýëwÜA`ÿ$GM=¼X·²0t-íÞ ¼a{HÙA̼[l‘ çú¶ùqYÁ …v™wÓaÑp¢•éh] é²KÅ$ÀÓ[]¶M UúÑu„Œ=¼(…Nùš9RAaw«Ùwqz› 6·I…a7Ÿõõ—�žúÆ)Vrêü¾ôW«£�_G¼­®áå‹k†ãôtCÞr'†K×\(R‰çTü¦ZÏàŒ Dã¥âvÕÓ[¼YÒèÝaáhKK;O/ êë`ãæÉÚÐ'Õ0f…“ŸxP}·}å‹pú|·ˆÎwv *³ŸÈ!ö¨; ¡ºèöŸ­súSää� r<‡äÚG.8z®Ryåš·‚ÖyÅË2E!Tùw‹»¦"ÑU ½ßSC»û4gº)¯W¼¦`K"\çNâ‡lg¿yÞE eNã÷PLþÕ(S±‘GnOE$Þ˜™l×¥™=�ðU´[xG¨/oñd޾¡mŽ÷FÊÔuPŒÂœÉt^üdØÜkwÝU•Â'Q=åz‘cÍqîJ�H#¡ç@†i:×L'‘™’n• 'öÔy»ÛõIû¨ó‰&Èœ<=éý71ú/R2¿]ùƒ;Õ³±ùáB ©ä¥ÐݤI�ó�û�¥û\N‘çúªýÝ’”GÖ!ůë®>—6dß×>Ô¯è|MÎ×°^jÚ>Ù?9·)À$ (s¢$èR€ËÒËéjœ—ìÏÏ=�ùzÍR`*€ÄºÀ·mþ¹`>IÍå¥#v ²ÉQ&�»Ô˜ØÎ´ç´Ó9 ”¨öØ…8„j«F—o�´ø¡‘‹¿¾%I;÷�.²6¾cSð¤:›IwFø×tKF>_{Š1‹DÍ¡Ç_Qþ©�‘‚ç妧,?¿ÈTïy÷i½÷0®#Âl`Ãã–ɧçî²ÓÈ)*F¤ÿÑ즪Ìvà äS�º”K+¾âÊÝÚêwQ>e�ðSbiÎAvDåÑr%ò‡ò·G"Z„šš;�ÔõlŒtŽÊ·}XDï÷®û鿲4jßôÔdÍñi‹ƒÆoÉö{’þ¡Ùˆ¾~6òùÑà�lsð2 >t hŸêñüþ¡ün‘_òÑ  §Íq†¤åԧǽIÇzŠù±#X¾JO»‚`×”’ ¢#ó‚}.±}Þh!Ä_Åð�¬‘´¼ÙN²Œ(è<ªŒxY$¥'Ç–ótOäÐÖ Q\%ÍH#l"*M¶à„ ÔcÔjNZ‡a� ‘œÇ‡&YÓËRÌ5âdÞÿRØD3MßðL$”näqÔ¥dŸ·Ô¡‰³n,·œy]ߤ_Tçzî4�q> ]{´¼S\`YO¯�ŸË>"6{¾ï¦t«{¢¢?�H¹†w�˜ ð˜–]1Xvó·´j6 ‘ç¨r•b·½��·.uˆEŸ¯š/]?ñ®Sd:U+xŽývÀí'Dà=–ù5”®/ö›æäó¥�ú›¢v“ÝœD#dã[Ÿ�GŽ9W×(ÒQc>ˆ)@À×ð?Oqüý}U·róT–qD–3o~hp"Ÿ´Ë’l¼ŽA„Æ”ñ}Ê•êŽsñ�6o[[äåº]šòLt mùÛˆ¶•§h™‚›=ÕÑ$w¸-ý7&ÏÈo¢oné‹çÌ�X09LwKAÿËv�¢?tæ \^»F*nÊ7mÞØ_d<¢‰L¼"ÿ¸E(žP¶†¿¹õ&7�„|ºÛT÷c§gïçÂ"ø[$¢üv›ÚýãTܬ#N¾”ÆS?žíÊ/s §6ÂùQ7ÜÔ¾©>].±:ÿYænÖ7nE .Î’ÒóKŸ–¯ç¾4?q÷7¤D âb,–»rc úhÑç ϸºZhŸ:EžYykziQ^;Ÿƒ™ú^`m ¤!E6ÏŸÁÌ&Ò~[ŽÖE#Æ2/YD©¬ývE—Ç­µ_þÕ*¬·<€üéÖ×ïÔæmSWa}4Cô­dk>‡ˆÓÐ%Ý�vDº5•Øo~Û¹%Ou¨ãß’;õ öt›Êx-—f÷ìôZ¯¥‘¸O7íÃÝ8cW�8;üßW8Úßu½êûžü�üUŸVý½¥g¤›ÒùñlŸ0i‚¸UN�דt]hØ“åWjQôHé/Lµëâ�ÃTÿ¾Þ–á~ÏÇ£ÕÙõ ¥u�ÜÒ¬¹ r;êÇBпK‰ßË×h Ù 0V(ÚË5¬|ßšðˆGêû'_À€ö¸­ðâ$oÆâS"¤öØßäÞ¿÷ªvIª®óœ;‘ãd2ÿò¢_Ù/€¾ЧÀ4ÖJÒw³,È ¶TÊ2 NË•Çq ?jNÎÈopÆE�¼ B£°à-Éúqâí÷ù¨ôû„al$ �``.ú‘ â�`±áºíœ€2”9L7Îê¾hdk•®Éúêw>j/õ÷4¨óev" WȦØ+àÖŽC+Ë?7›‰@VêÂEM²1kjwø-E/ó[Ðo¬cº¥2¹% émúêJm6|û]ˆéLßL÷$‚¨~ E'Lfƒ¢h{ ý¼ ×L.9l>¿�ø¹ò ºÿŸå¿#2›Ë™ü7u òÒoMçV ¸�$þÎí¦dÍ�¸–©€zÇ@«¡²éõØV�ÖéAd]?0 é¹¢xH´É=�ÿÀß­]ö²B.óL(ÿ]÷Sߌ³¡¢¢µËh§^ê’§üÔ-º� 㹡¿�£J÷í4C;6Ì §E zn(m«IĪ¢9$èK‘÷ãW.rR?Í©Û{P–G9r >SDÝ‘¡�"øK?ÿ¤�Û:¾#ç#<쟰Œ~ñ^à”OäͱH�èOŠíœÜí¸"ÛÂÒSª¶oÅÍ"#¥�Û †íÅŽÕ»é18¼ó¦F 試|‹‘T]9é¥�œ¿ga]-Ǥ%7£´…a¸?³òÛö}щôH6�lk§Pr;õkhÂcŸ;œ|U¶[ÃÛ"AK”¸ÉÕùù ׎H×6ÙU~l+%,Âv ?ÕÀ¨œb*Êâ{zÒû:ic§€o6ßMùÈÓ"'5"–{ΘjVÇëÀƒjO`ã­¼’| hG B׎²ä\}8˜_レíTr‹uà<­ä¼&°§EB.`·/`Xrªu�´9Û0!ýÐÏŠc‰TÆ¥wÑIÄ®³ ‹D½™_ƒò9B¹Ly$TÂ;ÛZé²'ª&¤|¬&‘‘µé½"�0øŒx;>—J»cËD@÷ÓìäYs ~jÙ[dÉv>GuÝÙ§‹”V�êIyð½Ì±êÃЖîÆq”ÿUíïÆvº°Î[¡O:L¸¦È‰†P¸œjƒ!%ÛÂûE´l{º£ä/P=LI5ʼn•·UO!´œm–ÊYsm]GÚjÇÇÿ·h�ß+ìbâ¹hÙû?îïÿž|ÊP7}0ÜÕ³Xs«z$+I|ÈWx†�3)Ï]¼¾hý‡«ã¨ÿç“+9þÎ0w }]_÷£ükÌÄá.ª£U$6�Ï%Ûç6îߢœ‰MkÜ‚Ùa�]¶†÷S¡Œ’ôðŒc¬,úü`‘r«½èE&á8Ûº!°(v¹x׉ÛÒS¦´݈ÕœÆQ;1ßœ�Y¬§B„‘“’ôb^˜å.2 o†ñVØ$Ž�­rF$ž�,NŸ%É]#ü–g«tÊ—\¨á¬C”î¦Ú Eš;mÿh|Çßïé�]#h—[­Í7ÝÑòÓ˜³,?žm.>î]!²Fb5ÒCj):"iÕ¤ü’´�w««¬Þ?àøoްMAæ¿™ø]drï�R5Åk8.‚1X¿Fï°òLIÂSÛsÑK¼ ¡Wˆ^›Ÿ�> ›�MþCL<á`"…H>ëßù-]{Õ?‡�%‰ã0øÊ—œëN;i÷¦8åœY¿¨µÔBf^�™?ã\{hup]注¶ë3Yz£8�ãûÊáÚëæºE*ù—+`H`ÐmºŠ‘,r ÷ØràÀø”Ö¢:Ìv½Âƒ,Dr78§”êý#@;”� ^ >+¾Z!‰[´íQ”Z8Š1J|B~Jcä·äŸáÏzäðHÁAþËHÊ€\éA�¥÷'Û¡ìçÉcÒ7 ¥$·/]ÂŒ2â= §ïB‘§ðŠ?ÜTÔ0õ‚ˆCÑ›Â:TÓ~¯hnD]58盽,½‡‹qÎV^í«Ä˂迉Rš¨�x^{)‹:¿)£ü›m'T\“–п~{ÏÕg.ÌDR!އ©´—`Ñ_®íÐuÂFß >\ëmj"Fíîdÿx¨ÊS8aá\Lþ1®¶êW®CDš*ñûÚ*Øð$ÃN¿¸ñy·ÿ XˆË¦ òïRpÄL¡ã+>ÄÖ3q�Fz»8·=*/~gØpÊW|ª×Eâ\ �i�¾%MIoª"ŽïH'8:/^¥k^·ïj0G-ë¢2ÒÏ—´@ÿ'µáøWÅÚó÷ÿú¿Ê•“.úÎ0o5 óTÑWÍi¦+�ü—Öß/¶\Ïúi‘n�?ØÑC⽪`ÔùÖ¥âÏ�åà¡êü|úuû´wÀN¹=ÿ "ÑÇ$­ÞñiíÏ%ö„0ö·ë ·í ÿÒH³÷^§*~úìƒ.)ñKsþ°ËˆŠŸJû©L–i€iã�ö�iÉVœ?k¼™ìTL|ÙÿXÉÖH ÛZ¶ê /øJAÊÙwœ¢úCq³ÈK^³Qé\Û÷§n]­7¢+cc[,¶¿ßO€i¼ =™ˆGÀnýÞ¹4ÿÐÞÚéÊb§dÍWˆEœ…(œrÇDqÁŽÂ0xûq^�õ—â£5טksÿù5¥y+ø§\T^8»·H¼´õ…t»*Ï×ò©�«ö½u¥­éG;õÍvŒÃX~ Éò®¬¿êÎÿÞ#Ë•'ˆ|>wr¾T¹$½÷Ýäšüëü”]å|5§G÷n¶ Ôû¢å¬<#râìeÇÆ§S Íq³‹OÝs¿5}¹S,°]Pt#ð·‘Ì °ê3‹˜øÖÂÆz~ îÈ]òÁqk#˜çxS —㿵ál•eõ™E½³q?X%ïÜ" £µ=e¸Î2Òô•øøY·Â¼nMFuGÚÓ¸øè&?©ä<~!7.o�¯Û¶…` 'ò¢„ãYoŸž£+È¿ôÓÍ-§¥å"±‰4=5ÍõÄ·ú­£ø›à·?­¤úGšä†-2Û’ÝX’T.ú.ÊÀ[*ßvÊgï>þ6°îvìØ?*¤«©G«¿ãŽ°ÊŸF(¹Ê^<©ú…ïz?ÈJ×�yîì´@Ó?•“}ü©¾Z\d@¢:–m­˜†¨VÖcÿ³ª)@¹ƒÍ4º�m@*édgã%òuÐ!Ä~Š#Ë2 íLÏ[;Ï©W¸ ÖãYck|sDXØïs<‰¾Áäs;-ó„oú{Ýô@cû´SjeáWÓÆxF^�êTyO&ò�~¯š õ!É•’?šjXú¤H¬Š»›åÖè¸?0—¯œúïüºi®=Íåg¹Ô–WómèiÄ©qÄhX ´»v*¬ÉãšÇaxîÝ®š~o|iר<1s H£Ú*ìo'Ú"ͪÚð�Ó4Oýž?¥Ÿ¢¬S³†\† ã\bD½-rÏ ¸¶ÕÍùÍšrýÈá'„t3|1Rò¸sÓ\ñÏ-ÎÀ¦¹×g1Ÿ-õ9G,°ôÜáÎNL=õ³É]Á�è{ŒÏýQ³¼]ØœR_S™ "—_û¸yîûö{3½¤Œ±/ØÊûSÔ7}±ËO·ûžÛ”_ 'ÒvV™¸‡Æy¤Zk}WÒ½ñ-`âS£vêìz[šjNDå[_ñ•í÷¾ÜÚtŸ¹Åp÷/±²-–ºã�øÔùÓró= óÈð­ x>k–±Üh~|·ÖÒ­`YzDg(9SÕ\Ü‘{nÑéÁN “ÏÞ@qá `fÅ“ÍØÖ¬Ù×¥T¬Éšd}‘ã3ón²;6\ÙÒiÏW°j•¦PYލ#„Oí±€;é~ê2«ª'�ΜÍ'ßì�7ô̵ò5öÕ>�S:>üf½.…*¼‹é,ªê¼sÊ¥Lß;ÛEÞóy#7:¢& àŠf‹ ¡Ú„¬[KÖ¸[äÎ.�¤ÜX­¸Ož|4ö~ßfœà÷�ò¬ãÝa2NñªõÆÓh{Ͷ€hþ€ÑQ»³ÀX£·�Ni¹üö~úàd$­žŽ{iÇ’Ó”\‰¤SÎ…Ûá󙇩Á7½Ž‘~ÒøäÂ"¹VµWOÍ]ÊvJ°É€>Y.«§ê„`fðÊïKæ§opC E¥-²ñt v�¸%¬<ôÇùem×›Þ;¤þT–õZ]„ðŒ{{PñÍÈãÿû£Éóã¾Xý�WÃŒ%kýÑëZ-sò|Š.¾,ªT{Še.]ón*¢í{êñœëÖúm9¹Zªl s¡íêŸ/þ@Ýéjjäá®ælIì‚KÇꤾݿYßTHD”­¾ä›Ò"žì)»²yÁ[©�óS{2yÐÓ§íÅ, ú=Ù˜?ozj�cšñ’m˜X$™E|ßž&ÿÝÏ:Ê]#º¾¿Û"Œ>6ňê)|ái0L�T¼=5ò®¿ tò¯åš\S„ò®o .Šo™P^Lª~�›Îòés¦vgÍ9G½lù”Þ\L)Iÿ®ì12Xh×þ±Ý¥3Ôµù>æëx>ý ûf¹ÝaâÂvȰÀ7¸{5{4ž�ãé°Mô}Ù»ÿNý�Ñ$ŠèÆÎ´×L§�9þ4â~Õqµ@D¦_Æ—y^¿fzì¦çIÝß9àêS¿LK6àù+½Ò/3�HŠ{ÕÃüÐH•'WñsÒçß-•£6{è¡â’%—7äóÈÃb¿i_ÑBïZJ�§Ãùçኆ6$þ؆çp¯®E éÚa;äoÙǶW¸0П)Á»h¯×9o›c¾¼´£Ã¼7*ËõŽ8Êpwô|‘Ó«‹’ÈpÄ÷ØmûE 2›c*FÎ?S ‡‰þDæ¹4Jp3èÉ¿-MÄÄ4.ŒÓ¨K$·+� SÊCm[ôó�ï ¼àv—s˜5 ­ï¦À"ÜÌT"xø ¸¨œ:™¹Á#õUÏS¡Ñ«¹·ŸØ�ö_뼊ÿ¤¸Þ¯¹ÌvÙ:çtÍÁHì à�SÉðoÆ+šoFS®Gæû• ›e}n×:‚õœs©k´óx#˜î.�û 4aÈ<á\û‰ƒú(Z6ŸÊLë©�+ÈvO \€É0*G‚´¥6÷hh8Ü›é†)ø’èÍEKÇô=UÊ(Ÿ3í킎 Z†ïRϽ`ãC\�Rëꢒü¸’ÁàÎaäÕÿ˜0ç8¡IÂIHcsÙ N0GùŸzé�(ó­XÈç̉&/‘/ͧĺäœÖá™ôXÜ?%ëÒR§K¡@¸hß‰Úø&ÊL‹Ø+Úy/Å5å]£‡unŒ×È|Øù'/ wØ×y<»v±¬l]ûŽ\s²w�P3˨en üiZI'Js)ðG‹<‹h³%×Ö±î¸lîLu,ß�\cÇ×n¹yd”FæÉý;âk¨}êý¯G¼ýÇŠ18•tjž÷o¹ù©FPá|(^ÇKÛÇõOË™§ŸõZ;Ë Ä äj:/pÒ�'p~j½°A¬8òH7*“Š82[xØßðm¡©•B\wåÁUáXÄ£FÌœI *=¹Ù)•+QéLÊ ÜÖµðÏóx#Z¾þ¡Ï"2#áäñÕæñrü…b§_+ŸÉ:>§‚ñTÏHî‡N™ž¾ÄÊ/2D¼Zdª^Ï|n”Ì`kä,·Ssù®9":•yÑ9å°…s�Ë"çt|˜» ³èý¯‡‹ÑhQþùÏä4Ì£ÍmŒö†ÛõÅÇEð°“YsdÊ3mÙÚŽû½õï9ÎLoîºô)Ñõi• Ö ÏYP•Ìì–UÕ~ýÔÎç¢`-D Eй“÷Ð_šC×Ý�Ûi[ø†‘e乎�Ü—mJ Á;ñ´SƒUŸYR"Û¢”ñ�9¥ÛÉ»gÅy"ʉf�ŽX…ø¥rl„‚þC®]ÑÈ#î‘]ºÅ‹TÌFÃꕬ¿óâ¸'vqý^›1ù8sxK;MZÒ ò5Oº"¢W9Ͱ‘àø¯Ú¥ùÄšüVÿ:È0‰çø’ÌŸuáa~‹ˆF†fØ¿�·þ_Óš£ÅëuU¢.ôjL±ºPµ˜Žj «N€Œ—Ì9yÕ¸Ó›a\ÅL–{½A=ÐDj$þö¨¢«y¦‹)"Æk‹&ˆP>•ð�âýe>Ê,M½�Av¬.øÙ§9þÔaeS§€ƒs+ ¾$À•ºÌ%Ó’Ó‚´ý~ x¡9l0ƒü¿¡ ùØg0•÷6+ŽÅO¢kþÃØ&ó&W zmc¯®_Ðt2üîhŠ¢Œ{Úç*LsˆMH3—ÿÀIHÃ$2ÄI%ef®ôUèÖ"½0W\4» „Fz"’‚ ¯øg~¿u1¹?±ÿ6O(>žÀj\5Ÿà‘6¬AâÏГ?¨6|8íO]ÓEžNIä#Ÿº ì7#Q»þv6ÀÅ5‡ÔåŠ<²ýA/x¦ 8àQÎ ¾j�¼™Ÿ5ØðÄx±ž'ÏþCÛ7êÕˆO6v dŸRµÝYXŽö½ßæh�ax}oÐPù#ô;öH嚨oJ`ÿq”ƒPd.)ï ‹ $£+Èqúýû|±þçϪúÇDàcµvÖŠEQþ [‹Â…Š“Î‘‘*X=mÉœÃçj¯Ï“éäAbDæ Šá H¤¡ e¤_¬íV¢Cè<)")|Ò¹(èq)ÿ°|.4™�ïÈÙX‚`1V6ïQþ-‚L&¼ž˜Öï#­0Í€ ¾-èâ89} ©oÓk.ÿ6&"ɺ!cÈç“!â0O±HôÿO˜–f‹‡©¶éÿz=ó?ØEí$.øöÇÿÌ0âðíY%j�HÕ†rÏ:j;É�© `b”�Ȭÿ:¬ ùG=Ìßÿã?ZÏ[TN²µœf–£È"Óè‘áî?Û×Ç_ ³+§³¾E>¬+uN¢ÐWõýÌ•uâ¡=?>ÌŸß­__Q7�Ò~ôYºi$ï*\vj¦FÖ­Éb8M)ËòCûùR\�s¸ÿÆb¹¥~ýlxk$ X°ö¹~«`(|Ý2ç3ƒ}ë) óèQ¿^^S(²ÇDçñ1gÁO�]#¿Ykׯ1¢èÌIqÔZô<¨3Ô+ÉO½=¤ñØ®sh¦×V=mxƒãÉÜu™Có©Æ˜7 ‘�²ˆ²3’Ñdê¶"óƒ‡.íÇãokY˜,'#þœy—ÂÔ5zéuÕ'–ÛåØr?13½àõuÇSOýæ¤÷-ÂL¾ò©·VrÜý޹·SP÷Yè§â�ŽólcaÈUjzä:Gh�?⸄9ÉBWÈ]ˆ,.ë)L“G�´Å‰ , ä)4v®åߊžÚæ!^Çà[ú‡•fæ?«¡xÛ^§‘ÎCî|jLƒËz_«ºõ½·FÆçŽSn§�£;—*ð²˜Þ:õdëÏ݆X'ghuæH:ä€cnYûî|I6µ xÿh—°þ¢mý”i\é‚Yà.땱•Õ‡OóÓvM�/†™ý$ù³¢í,@y_¹Ä>“AÒcÁ‚ óVõÏ W³�€ÓÍ\úx‡þ)ñSˆG}4¼†Ë`®f†ßMQ@¥Jž¬s|ú©i‹ ]_Œ‰<±ªžÙ–�!2æ˜7åOËFTó…ådÆt­€�ó3vx-a¸GN®&ƒë.ôŽÀ[.¹=,\uüúCj»ºé<¯–K;øõÜSÛêóâbÏ?8ýÒ§�ã-:Ôs»ö4¹º %rc;tï$ #u}ø¯Ý°ÈÃÅNGß]Û:–gfãç(#žW•šÛwæ4~³œ�q³óÄØØU3o¢¯­öñÞè9†Ç?nöò9`‰:û¦Z‚í.ºßÊþ\µtð÷J'Žè²Å]sÆ?4wkµ@™#@³¾Ç;V–Þ*út�(2n2 µ¯y韨Vòrõ�GáÁw\‰&À-à …Sgsæ¦B]¤ÅU·y%>z™±jÜuðhœ?NðÎzy^þ€Fg.î%|òˆŒò{§¸,ƒlÓÀrêu^Ó]/û>+ÙV£J•À4ðèðjU‰žtõÎtoÀå˜Èú'H4¨ \¸Ó?œ:oËco=7”t[§ö†Á!äÃæÚ™Ó�œ!ºð¢ ¦�@OØ':vo•B·Þ‘q^ÞSZmXjûŽÌ»n�²‹×hDþ lK×&3JP;æÃò¹Ó•I"�rz !Îð¤°po'á¿Þ¬.3›È]~33éeç´¹¨ãÎzLƒæ_9¶¿B±²ñß+Q1b¾T)¿¿×e×Ef>Ûp‰GpJÃ:9ýä8ý–½®ˆÎ±_I$µ(×Ò6 êÊ6 D A¾µø—Z{¤ñT|$5žΡ`Ô�d˜‚6%Yï3¹Ý金Ҏz£àÀ= ¥j8-[s—‚¨ e7‚fêY®ÅvØ(I¦žOÈ%®RrTQÅYËÕã¢N²øî׀ζ¬ÒBFØzõk½g¼ÖàJÂCü;•ýˆã‘~=ЉÔä¢G¿ë…�Ï«h§™39}F²±_“LסK›T·#-:í$éäܦâõXª\Øc%mí´OG½ð=\÷Uòo?Ëù¼�ªlAoWYïp-!àüû³^QÙ7éÇà_Z�€VЧ¶ÈØ•8¶j…‚—±^‡¯Ÿ$IǴʶIÊðÛÔ—ƒ�u ƒ×l›ZW”@þ“ºCyçÁÏ‘ÉÌIêpG ÝlÞÉñ™‰m9‡Ó¯·€xM&m¾´Â'ƒ¶Þ[þ¡†à¿Nà,ÿPø?£Á[AÄÿ¯ŸgÞþjÊ÷'îIƒ{”£_4XÝjB?LƒQc¦k/£µóœyüiÄ©•EÙ)ŽÆ9EAG5í¶:q¡è—. ÿ¥‘ˆ'Ÿ{8ÅçÃNÖˆ8;fÉs¦i¤âU&?)*÷tÝ>ÍwKôòH·”ìÅrfÜ5Rä9‹ ²Su-9SP–�ïöõ‘g(é†nÖ­•+ë±Ì"�¤Â÷žÑtr0œ,BU„„v òe¼=‘Ÿ‡æDû§æŒüšüo§ý-88è`ƾ^>”í5— EìxŽ/Ëéwï€úØTN–�P¶˜íTD…'-²Qh�¼m⪑ÄüarñTú­îñ•š~­Óétè´w.·Ïvg³œŒÙ*PM³‡å@ûhÖÅ�ë–û8A·ð­EôÊöEuA¾N†õ„©I #ø’U|Ë`Q�sêýÂå ¨oßíÚó3ᡟš£ ü9¤oå»�˜Ãïˆ49j.>ÿ¢‹ˆKBLõ‡³¥Dów…wðùù[sÙéxGDcùœ{³Û9Ü{8óÕ¬º×úÜKgƒL%Ȉc.�ÆÝö�xŠæüãy$_)òÆ�{FHÛø)ë�;B/á"ª÷TR»ç \¢Š»œ‡à÷«Ñý»}Õñì†Ejñ�ã ¦Iü5¯ÓØÕÜ¿ÅHÓî°ªîÑÜŠ´­ã%=´ïRŒ1Ó:0;l‘.¼w¾怒L£[h|W2O/¹ ã–ƒ†1gsÃUéÑ4Á‹„~F´r³}¦RžQ2½‚ßÚüßô9Z¾÷³ž¾pt€:ãix›NTÒgùÍ{èÿ|¡è�<ÚÁþæÃMý÷}nÓÇ�Ó|ÿn÷©ãn9ú„~hîÄ_�ê�B¢xX‰žÎΚã2ñ×9~ÍÁz¼q´=22›ÛƒDÅ©Žœ‰ «£«ŽOªy}©ó²¢½Xüó±À˜ìZ5À¯ˆ”ñS¢ùaû÷5«gúu82ßzh…Æ›y¸”^¸“ÆÛUž½Þ"ÂÃùg‚“ت¾Ó„ºª§Ä“ó‡^âÖÕ`ç)dá+U<ë›ÌŠÆÇkF ÒÈ�þÄï¼~WÙ »Î�§CO øbvƒýg»]žã'“û�mU7œh^KA€ãiÌ%ó@{Bé»ðAüsÃ�wyÞɤ°ážÔ‰Ý}R.]å¸P¡/©ôÈ r\äà?AÒ¦‰º °àn/Á PÆmÞ}¡\çW¥?šêÖBŠÞð/¤>(àó5.0�8=;Vý›-4I…l2á"HQ|†±åòy0ÿ£þtJ…"�9úz'rM¿ÀF]w`î[\ü‹�/¼6&Lÿ†Z§uÉ.�)©@œÇ^8Ý‘À¡œôaj)‚.Ê“�Ôòç‘kÈ^3áXôYf™úâ?BæN³DLj7ÞŸ3œó˜g´_ã‹DÃó®Û&½ÎÆÏh?&¢Žü{É©5ÿ;(÷ï¸d•îwIl”¬žÿÇv¸ÙqžEJ9âQFs?®´T)úšÃï�óÌÿ� á·L¥ª!Ÿm³üÛµöÉýÈçx ~D ¾ãÿK�—»œ+G“;½è#©Áµl\Âuÿ�¤0”BG(šÿŸ%—uRb[“´B4v8Ø ‹ä=át‘¨´h6�ø9ë›§wgoL…\ße)ä_ð^œè0’ïÿão£|Ø’¶ ×�æÿÄgi~߬W‹Ô:¥ÔtÎQV0íTâ-Ë‹ö½ªÿ¶•Žê­þ¸ö¢¥7ó+)�(V¤ÐÉXs6¹Y,w°«xÕúÐÝröüS«Îÿ—rÐm¯úi¸WÑyAÁìŽå¢[$.˰2Ôn§×Þtìæïž?û¢Ânô´ç9ͺjHªÌfò[Òo³!ú7Ð\uB¢§C—Þÿñmß{Ä÷9¢ä§e¬vunÜž/wiZ¼ißkkwÓH#ùnöhÓÜÙažUa4ÿ�(.LŒ¸ØH¡ã°ªžß:𠬱·¢?÷‹Ni+ÆN7½ 2`Š�Æb Au½/b ©?NÍ¿å¯EXmJ¿ì[°è<†çŒªS*ï[ÎÁï[ãÇï3’Ÿé/•›'u¹Cikv¿ŸöŸ­þ/Š.e:$˜^hòÞUÇäîQÛrjŽºé¡ß#[‹¡â.¾ÔÂþóÚæîûg“ë�OõgÌ^k=wÛüM§Eñk|{çØ·µÓÒ»‘"Õ´â¹5Á5ðÅ{N�tö\‚º:k�£|ìíÎ÷Òíói'ZßNëÕyhrç€ Ø»®G,Ïx§û <´‹Z 'Š<§ðÍß8ju6�wÁTàEyjÄæíæ¯„8øƒ†ßÒüƒÛÞÞü\î/üg-«>_-å*Ä8ŽšC ïIÅ瓺öÝg¼wæ+Åh õwÀQÆkxÏþ¬Ÿª�À§tÂuC:Ãó60X¬Cšÿ–ââdLïUjNC±‹PÁq´±dœQ»pjŸ�£ŸE!Õ›–‹z÷èä¸ ðZbV›DËÁW†îUáqZ¸j/tµøºÅPùᦌFˆQ�Áµ .]i¾[ÐxÈЦNWå3K~CM\Œu`¹â:]‰{q#8ÅYþQ¾m\Ð�ý.mÆçõÉKñ§h…Êœ1M²ÂøSh ÆNÒâ¢c–´Åü~E–ž Ãæ®Gÿ…ÈB‘q:9â9æÓJ:ÈÅ ‹ ŸNØe$`3%¹©5»ŽªÃM?ãríz OE—Ž"}²†Š£Ž“„PÌã'qŒXœn ãT|yêó¨Xã@(&a÷‹ï2騗v8,þÙ'ú5½è:î–sP–£J2—b Ð^ˆ@çnÌQÓ ‹ ß¡/ŒW½ø'»#0ˆDÎüìp FÙåŸ�7FºtžD­ÆaQâû" E%…è¿Ä›ÝþË@u†þ:OŸ{–* ”ykrÏ5&êÛØ_쾿äw¤]ÄL.Zôº W§c¶�ÁÇ�ëA!@¿ÀÎ z7Î5Á]fhŒâ„¾mNÊÁq‰¦Í.ñDþ©ûš2¹Ÿå¿ÖÄ5ŸSw¼×븽’Q®]G…ïógõ@Ê�õ$L•oƒÙLWŸhgû| F�:ËT­É0¤Wa";=ˆ®DA†a´žº†�Ñ߉F/;×íº¢š¿þ½Â¶âÕk}U5DÇ"½m|ÒõW«‘ÛÎÓè´_›/Ì17Î6[2‘AFk_ðÂ(]“iËkã^Õa{†G‚l~½ìpœ#R¦‘ç�b´fèc@ÑùÅBÑÀv�àÒ#1Dô6X_ÂU&¨·X4‹Š;¸ ‹™”ËÆeö`S~LöAhNJïG,2“;I—+íœ vf�K˜I‹ðy•Ûî.$Eá’£Óaç�ïžJWüÆL.Ϋ6MÅí9ͤ�Ãõ¼ê7Ý�³ˆ„Ý^ì EéŸétFÒQÏ_4â’-Jw{tÅë×ùrÔ58)w÷‡.Ç•:«:ˆäxZ.Äfæ/�:ÇYxš9Íqº`6"Q5) ƪ7,²Æ#ÀµƒÛ½!»Å¤Pú˜"š2´ã¼hn/iÇ'Ÿ¹\£®CˆÞ§äWð|ÀaÖ#!»^“À‚´ ôì°v¥Ã²hnÐ�»úk¹ˆIKYÊ´i$Ê`ƒïãvƒ\�"ÿX_Ø÷å"šµÕ¯O�ÄYטdN!×{.Íl�10¢�¹á~ßö§c¸Y½ÛÆd Œ'_¬ ïe£@7SŸª�¿¿-·-Χ-ï@# ~±ñ’�ãÜZîâ§)Éè[ßYo‘–»Ãjõî[ýcrš¸ÿöH¼ö{×”ïÖáÁÿ¢Ï×GÛUß0Zõ9æ¹r)ÿ ¸Úf~� ¸— PN’ÂnsºêiטSï:û)ͱ¬š3òù0û'5>ÚpÑúþ{…-ÂÜRsjöÑç~å Zú|ÕvZOÆ:�ÙªµýaÁ‰—º ÖsáǪñ3àkžJ�ËŒ V?\æÔ–ë¶½cú£ÂÐ$=t‡k¹/×~@—ãÍ 0±>¿@”j\°N^ìðiÎó-#ì¬xfh¼Eb´HT÷øŠ’B­›ôk/I1F Z4´›c&µL…~‰Âà=ɸ<uG�tœ5á�s&9�†W×b>ñ²Éá´úBç§�2òð=h9q.ª“ÅÚmžÃ?¸n+oÀ”WL®hR� :õŒm¨žeÆ>u.ØþãæàÌ €Ë:>Aö×øâ ^mct!)öÒñBµR�Iœ½ò|!{q «ç(Áñ‡×’®Íœ<+Žß �W**ɵþ ‘‘À›£–‘áß~F‚Ià?µK'˜ù‚7øBŸÀ¤Q·òƒ ­½@�ûo|F£I—N{Ðdü6ÌëLóX!¿šž)? Ê šÙ·õ—ßÞ-¨Œ�sî9bTa€­G™j*Œ€Ê\“ŽPд™½,:ûƒAÙ!TÂë€Gp?UüÙâbÚ_³”n.4¿—ã^éˆã¶…ØÁ�š íL2"E:'Õ‘Q*ÅèŸqFDºÏþɱ’¤ ô :ªºžÑreÉ`ÓG‰H†…², ‘ÛßÌh<à”‹ÒOéÑ>¸ú dá÷Ï8{Z_ÆÜ�¥ÜIz{!Ùº8‚ñw\>”€‡¬_Ù2£AÔg™wý5GJ¨JËë~®dŠKl�3ÓGvÃTýš76ž—š¾‚ýw?<òYÄu´ ˆ�Ù­ Zdý’üt!ŠþŒŒ‘q~�úðìž«!fŒA]>ƒôt^N¿ËZˆO×7v­µ¬ÜeNX”\â ù”t�š/|+«Þ+§Î�þÖ%'›ÕÛú¢,<KP­èûd‚EÒ)êç C¾lß#VmrŸs�  i{É}"¤zd“n'e&kW€@_J—?˜¿ôÔÑO]jµ•H ˜Yx€w‰â·ž¢øqO ” ÙrÓc¨|mT#-¾õôÆ»F…¨Ëýd;�wÍÕ÷ÐS8�;?u)ôûÁóİø«ü&\XOøSŸ´­‹ã÷ õ¦åÔ‘mÖý©¹ ÿjD¼ê<ýTü?òšò‹b9ýÔפ,üÔH‰2bÓ`F;�K×ñ0í¶ÖüKûÅ\‹XY¯¶H*úR>Ù4×Ô‡æØØªÓƒ©Ï‘ñÙÞr-rÎ9†tF<-™½sŸsÈež{*¾Ç1ZÇ=ŒÊõO´€WˆFôfác�]<Ë%˜Â–D“>XÙÛi¶~Šò#æF‰ÓH&ÚA¹'%Êo(¥Wãµ­ݱd-È‘ôòlã²p›F ®ŸÐ·:#G»•Õg2ôšëÌNyf‚HQî2Ñy8ªÿ–½�š{ätŠcb‡i;pA·Vã@(MÖM�VÖ‰ÂS=pœŽè&î4Ô;áÎ~þ~œ–ÝK—©)8Ge§£~<|œg»3¢s‹“ÖŽãZÀLsâFÐÕG¤ø9ŸkҦߌ>ÅâÞÙÓrÓ�}Þ[Ì.-S\›(¿ù©åKwü�J7ÝüÚt~5"ñö ª¥¨pSÚF‹Ù7›·HTj“ø^ïÀcS‡ÓOiLã´“�“x�-’%öòŽƒÆDìðj»‘ùXñYµÝÞð´S|›¼òiš™ÝAWxèË#ÒÿUÏq·¿,úظk$ª›˜"åDù�ÑΣj#D¬;ÊáÁìÝ‚‹™ |ݬÏÿQw×ðºáóK1:&·áôý5.\líô3g`ÆWýXÊÇrÉR>wV.çqiµÜ«û%€{wUñÈ¡„î!çØ-bz{1‡UüR·[º¸^€˜Oõ›ëÀI“µ=8ž9éàªIY7I AVÜ~NNQ³Vö×a™ µ<Ô´À)é2âm^�1ôõEñE?—>"Hv×Ï'¾v¥ *œ›�v2q‘j£¶;ÑҮ陟ô­`ö…£…nkƒÿÐH2;ua<øë5Ù,˜?Á)»Aä‘û*ØmaTÎÁì”sŒGø»æóT±ÐÑÈöýÎ2`·æú#âçt?<Ç]¯êj¸,|)CÆÍ¬|Ù#Ž”F»„…)ýDqÛÆÕ1s-÷tœòÚêl#†a~ˆCó‡ÊÇ=ŽõÐG5ül•à™ß�²ßi¼>f…³›íöÓÅ¿°½‘$({¿åHs\Þ¥ëm³'¶ˆ×G5\Cýb¸yıŒ‘‰žÃqë9ƒnÒrÓñ?í 3ù†·HpÍ÷{bæß�Ó î÷žÇE�7ê9o§“Ûø�.|´Pú_ßkI'{¬~&wÓ"ÔLp¿Õÿüx(}+ö¦N‚M¿|š? z¬*ùÙáää›ÓÝÚ }©Áý,ß ¬tAäËÚ/fšxÆ”‹ìÙoJý´{ß·¦‡ïš»pÛÏßôù8ÖX[ˆ”8žlÜÂÃ.0ã`g*mVxr•SsÿÓ~.`žN÷™â\û¢J®ÇÓo¤ésï˜Ó'É8'çêÆß }µˆ£^5|Úw\ ò=âË4™nIŸWu°süÉ ÿ¢ *vˆ 0®¾òÉúb`$ÄãM'²Ä yÅÊðDĉ·{›«ˆ™]ȧójŽóê. ª^I}@�àüÑ‹WÔZóÀN(w4òjê.�ñÕë•–#.èæäÉ5/NKÒ7ɉ¸jØ[Çîé0àÈ¹× lÄ…çx!'g³êÑ\áFëeˆÚ�YEô…þÜ1ä k*UfÇÇ€£‰5ææpº¡ã:Á)^åЗ# W²Ô?9ý&ŽyLœ®<æxÅ<�y‰£µÃáÕQñ¦¥a!„5 —óX§¡ÈãŸ]3g�‘˜Æó|¨›±q�î…¼£I Ä'¦Jÿ¨Ã0ö?ýÓ‡"cÅ¿Qú(ðÜë6 ¯—-²À ˆqb‚ó6Œ-ÛI°»ÐAs¹ÄÙ¥r�: „Rºe CøŠnÝk]¤¨jnÚ¥MËäâÒ;ö%á0žÞõˆ6� n(ïõžßÔ¾æh¯Øž(ø’ùcÓ@Fò"T GÔ¾ìlíÌF5·P"Þëp©è§ýa„ôñpò˜£þ®yúØØëD–² ­Ó2èP’°0Jz‰Mî$œZÊ:.#£K* †"77*H�Žwè5ë”Svî ÛMýtŒõƒs½ç¾˜ßRùÝå]&ØŽ:¿IIÃ4öü¬›Ÿcd¢sƒm ÏÜYÝ Qî¢H+"*•¤wmó<òP.’Û®¸(rû:ÆÛâ*eåKÙ3C‰"àhÏ�Õý�½ vCÿµA¤^�pV“”Û!]ÁŠEêï2��à�cj¬Ý@T¼˜'€ƒ,3GýÿÌ{ow%ÿ0 ®öo¼+½©nà[`/10g¯¸vFBœ‘–DÅ"T,G“%%x‘ Îrm¬×§šÈª‘,9"LOÁôg(X±bû÷CsnýÒ\‡KYÇ ÷0âÿ¥yÿÔñ>ÚÎoáöù |Â=2QOumTWq€4 lXlÌ•)6xG~*HúÒù¢Kö²käá�IÉ¿>iÀÉT쉟âðÔ\O …q³æF±ÓJÛüÉj¹²Ò8 ¯å—ÖÿûFƒ�ÇÌúOiQ˜/Š+^…¿ÙÖì‹ä�¶P­‘7Áèo`±·µÀçMþnøÉ]:�+u"·ľl%¹7úóÃr·õ¾Y-·Ûy—é~|ê©€>þ™æGZ<4ræ‘Nµv_"-½¡ÍiÒK)+ßk«Àáö­,Ór:Úiº>ħF+½dÕˆçŸz µå 8rÌ�‘š�÷ ï T/¹ò.NžêòÀ0¾]Gõ0i¤µlôV±c'ñð ÃÁ|ª¾=Nu?ðÚìÔôï³—ýãÞFÏöBŒFVºYÚãðïú[šž‘íéŽvWåÇÕƒ©ôQu¿ÿlÖC�œFЬj”hu|ïí ^Þ…Æû¡žAeÈ}B¬óݨ³<4ÃôßÒéÓÆµ�ß—äT¬ðSè”s²:ÆO›ò³öçîÌÖÎÍÓä$¿§»m©{¦;Ñ{–ÛvQ9°8Ò�b³ËO?–›Êb|·~´v{‹äí¹?-ÒnÕ…Õ§ªMÛQ�þEÌ¿ÔĨðj NTòœ¾DÙŽ8ߵ޴úÚì¿æ,¾ðpcŸIÞEìyFSµͯmòŸ_9æÇCÉXI‘ôHv?<¢†ç)��Ò¦mÌÕáŒx—žŒE0YγœSV?sÜzOÛô“çà öŸÃD“,Þ‡ßz_ý’Y®Aĸçi®ä‘ϳMžEý‹#wS�SÂÁaÉmä–Ûl•®/Út¶ÅIŸ{Dúím±ªX¼ €ßãšµ¨#+�¢'~jsêGlœÐO3·Ü�ÀÇYž$»Ù©­Ð‹cÒf}ØrBMÚ¼Sñ@Æ>®†×øšod¶‘ê‡KÔgp�-õÄo¼Ÿº˜îZ³³ÚNõÉ®…-òˆGbˆD•'âöú�b§Ãw<Ï«+íJ§uï¹~ÏZ[ÔËæÂÙ©Ñ[ø@rá8Œ_¬?¥Ã"«Ú¦öû®ý?,{û‡úi9…¿Ÿj³%F÷ì{³3IÌùàÈß‹jŸ<ÒäêÍl7~~îsÍßý£äó‰EjõÓµYéyW|¦-5®=®[$oêÓhöPM|÷ç–Xó[C«îêÏO_XË|Ù`¬{Ó¦9üŒ7EßÀé S�o�òTs|W.zÏí…Ù<××|�WÇgÑÌGÄà)ª¯yŸ|ô,{$¨n‚û x3­Ÿ}nøÞ⺇½°ø…§¾ó‘‚»­?Üð8]|þÓyß·FuVÛ Ì?ä&tºÎ¸�hT¨ C}/†«ûh„âø”o¾,ÇÞ]õÕûêí¿4´üsb‡Ï2FŒöG¯ZWo(˜ßhº?øÿßMðÇÒ}_ÃWhðÿw¥Ï·¾Pöƒ{/] çÃÿò=$¸o¼€(•ü“Û·¿ŽÌ«Ï±‡úšý ¹3ÆøGÅçÿ ì„k.T©>Ò Û ü–=ÒŽ¤Ó�BøN¹£ö±Oêˆu Þ&+¿¾„܃SkÂpAzÀÇÊb6Žwqt�´Ëó3,À O^àx¢®Rÿ:¼ÑUYøêf–Wê^T˜§h(Ç.øª‡¢C¿ŠÓ7èz[ÜùêBÖzvÛÅèuÉrcsËLá•S…ɹ�à\Ü'Ni€9|¾Ï’Ûgd| oBÍ|­Âm9‰ì¡dh¤â@› ²U]"Q7ˆ1Að µFÕƒŸJ.V}"¦C&7,ûÎ+)®<ôÑÀ õ\D S%É Œ qí_Íq˜4Zĉ ¿`w+âŸÄë¤c™¥S  âåðRˆ °�Ë¢Óoàÿwx�뚎ÛÈÏ•iŒ;«ÑôTõóÅ­Ù*p¿ájE*ÔÅò­"qˆ&_fÔ(Æ2£,L‚¤~¥šs¡ZÁ“YuUä0SÖwoöt‰€Ú u²?b6²Cÿ�J‰û³’ï7È}@ÅEƒè`{¿˜§ó�2¸ë”`‡©�Z�Ä*mðû%XBÁP2>ò°?m¼‚‘QÇÇ—>§v*ì³·ˆ>#ŽÈO²ÓÇdÓDxjÍñ{Ñzf45’‘¾ï䊎{Gü¡ìð=S:(ÌI° ÿ“>úi|²[¤å7…§@gàZ§·�ËCq~)Ý–ÇØßÑfxå{‚›;hØõc–¢nÿ�_Jß�¦¢Û£JIÝÖëzš¥å³× 5×¢hE§žò±åØà|üáñÄ:?ü¼7øwÍ!¹eªýË_Úìg O#?iù®ï{ Õ«aÓȘõÞ”ïÁÅ�Š¢¹7Ù"èÒΤhDãy –õÃäJÕR2æØ´ù´éÇÏ¿S=FµŠy§»F†smzFÚ)±Ï[‚§üè§`Õ‘ÓÇéÉ'*Ò"î"Múx\202õ¸¥§åʱwÜZÙ�á™O,‡�†zY»g‹�”Û³óÞçÞ"þè¡‘Õ �ï,Â@�®�êÈ) Q�òF-ò柧üdzõ³·ú{7æ�EŠ��ãú²kd'ÿ¥×žõN À3 c]4B@8»:ïzz÷"û¸;žmÇy‰‹n–cÔ]ŒÇv˜y�zsÓ{Û…§~Y'6A4òýóy~î¿ùá„ùh¼Ã·Y¤¤Ž+UtkúðŽq.æœÁÜ|Oc _ƒHT2k9@mÇwÏm€Oòp8u‚ Õ¯t¶Å�lfý¸ßò•¢±H° :ìm˜´›Ïù€ƒå÷”\0£š‹S6ìÿ7ÿë@¶E#`ýõÖ÷´Ú÷@åM×zhRd9ãìÅ×W¾H„…(ó˜Övç´æ)‚»ü†Io‹º¥�‡¨?à…ìî›æÂ»Ii¾$÷¦–šyQþa}óFX"CÌNùÔq­êv¨KË�”+�×~[dÑ^ÊCWG¬ò!š+Ó6 <%µÙý-kîÉ~7àÎåp:° ŠÌ:×ï§ÍQú\P¸OSÏU×µi+‘f‘<ô ¹>`åwÙû5|ç±R·(CùC¬ë‹aBçè4§aÎ.¢Ñ8¡üAOótºÜjL�Þ¹Àµã×ÈÂC/ˆ—O�Š)[$«òå‘ÊùÄcµ¤YÆÇ8(qn~ÅSíV;UøÆø;Eµž‘†ÈpXûžd™š�¸é<øé­‹å"[¨Š5ØËSuŒ=—é‚ÁS$aÐ[]�{¡oêvÓ5öÔùh‡„nfeuü¿4Òl]Ú¸,ðÌ"õîž% mºñŒL¼µËûS'ò[ëëãC6)gäåA7}Cà&-¹ä“{ŽÇ°é‡f\ŽLßíÂs×úçôí¿WÚõõÙäqÑÈó_vj®O\%ÿÇéÔíûsër�*ÅÞì9O¿¥#7¨œýêsù—¾ñ¶h¤»å¤4®KÒs¹•›Úß' Ïç¼hÿzêõMŸÿ�¸iXvê·½ÐhÑy½´Š&�‹ÊÐmmuÏTïÑëÇ?t¼)œYiwv}ñÇp|{Oç¡4yïP¡åã{¬è‹`@ã“Oí¹æv“îGR÷å�Âßè�óÿÔHÅÏó˜ßxjÄï®}®hg�ªºom^íÅÐï½§@>ÿÖSÉï[�$>n¯{\Ôkì,îï¸[¨ÏÅR:%#?õ÷]Dh\´‹j»ÍÅ"D£3Œ�j[—bh‡õûD «×\ޤ@±¯²“£¼ FäïÕ±±þ6Îü°ÁÅØ�Öœ'†©{DÕ¤aÕÍþ�~œ`ÚÄã8Û~n5åEèo7´‰o¾ Rb‡ï fuÛçkÚ�)G¾zx<«Í‚ÚùLŒÞ¡-,VpZ$µÃ›ïvždÛ†ÝÐ É…è¾';äS2kÇðéªäÇ’aKŸãH¿¿·”ÿÔÏ»¬W®ûBg*·˜ˆ¿½Ln0™S?°ð—±è¬ÝÍÉ%÷ýjÞˆ°B:âøJ¨ˆ&#˜$JdÖ¶'¨d¢qMDpëNY�ÇK}Ðe¥�ÆW¾$á„°ìžÿIßícÃ'à-�ò"ã ©dŒDÁ>Çv<ʲî¥n‹„>Eá+¿Šb¯Ž«¿âÀƒ–O%(² 7‘Ð%„ –oÙ©ÌxU�±Š8³)ŧöÿÞx+î²OëW OÂôñöáƒ0RVN«–~}®�æÅä yx€� Àe-ã”…8Þ�Øv|›"©–/þaw^¿ÃG)�"R%J%ã1ý@ƒDûé–:ºàóRl*Ô2&ðMRTö´§«*,ÜË‚ŸJTœ ÙH˜8U•Ë$F<|Qq�YEÀƒž2p€”ß)á+}ÝðKáf�ž€û™ ¸÷_ðj>@ÇcQ!\öáJ–Ñ’)c�b§%¾±ÐmxS¤ù�æ2à¤ý:SYò¢Vï¨ÁâܹÏ~ʰؔI-qŒsÌj¼L¯Æ«uMÿÅ™@ Áó¬ûtz«/˜0€Å-™¤ø’ýÇñ$BQ+Ê?òD–•D³ê9¾G›9LD„1}^ìõdhƒÕòøúFBG¢ÛñûŒN±ÄžPö�{²�ŠðÞÑ+¹ÇéÄñŸŽw üí&Ž}dš6óB†¹1Z»©i¨ý×–¸‚s¨W™"'KD¿Ë¿`Ϻ£¸~·ñi®»~¼Ð5(ÛÜSN-?Ňªz:¨ìEÄÛÉ4vÚª%óºû0{=½p|·H¼û×ÉxÜ?"ß!:þØ¡ïÏÆoóaôj‘HG©Ð¥î\ÄQxtäf9ï •»n)=¾ëîÆGmG‰-Rq¹+À­Ÿ*‡�çÞe!+–ËÄrÂè©nvÝr)�nçüh½¿´»uE�<,_ 7þ4d’û¹¯�†ÿÔÓ“ÚÎØGBPaz޾ÁEëSùn }³æ˜Ù-òô¡|x·­{+{DY»B‡¦±«�>«ãÝ'ŽO�d³È4ÏBãx•\>åñh­––+R<’0}Ð$ün½:¿YŽ;Pè­*„,ä{SÞÉó‹CJΔçLµ­¸ú'Ã^5WÛfzùš™ÍÁ•>a#~’p¯œwy¶\Zû}Wì²}´úÛWØ cå3¹iÎÑEõš±ËÖ»:áþÖÍ8þÕ ^>~��•¾[3• ž6Ü**âz£F‚™|Ѻ½ç²X®i¹ëŽv‰’îõïäêÜÛ/ààO ¼ëûdŸ.ƒ>ƒ;å’œ• £Z©dYOÒöVgíö‹¯y­çÀ²çŸJ·åÙ~›\/}ØgžÂU=´“3"í˜ÚUñs}�Ç•R>hޏÊÅ'Q¡J^\êH”ó{¶\vtê�ÆBÁNUýDã® ^¥4÷ç(ö£?sž´˜g.´£¹$ü¼Ÿd½ãŸè‘áõ‘cîzøt3ŒÏµò‚2`25²z7å��‹hªiŠÔö—ø]F¡Ò�Žú…›é>“/±ëzZ_±Ú”ñÁ Y}[ÅÍ÷üuž@\ z„,iޝ|ª¢/ŒXJ·ö"‹F´‘ó±˜ß_š¯ Ò€•ï÷jD‹ì=›޽?¸3Q¹Ø–¯¥y§ší w½MJóamÓÕ©À#ˈ…Ë(è­fîôúÞjmêo¬KË9µ‹µnmì,Û�j½óT?èö óÓ48µHõnŸÏ�dZmþXíÅ¥2�Qy.H�¤ �>8̤FBn9%qòõ¶gƒÅ·Ü#Êæ8ß!*K`ƒƒÎfÚCv ´½'‘Sò”Àu X˜Î‘€ó¢�›Ú{ÑSû-&Å:Ÿ:ë’5J8??Z¤êSÑø§žÂûL6ÙC–›Á‹TdUÆý5xä5¢(¡4Œã¤ã1‘k/(X.Ð�µIÕ—ÒøÌ5Ëã¼[.Y{\è)GuÁ�%ú»úý¦9kŸ[Ÿû³ŠÊ…énI9OwWûéfLΜ‘(¿«úÅÇ)½g‹lÞ–ÆÃç2Óo}ûÑú>9PìK—¡>ôtßöå÷<·þ6 »Ë¼Xj>s ¿ÿñ£Í÷bÌ=>S'Œ…Õiî„& d'ƒôë�b<¶#„ Ne¥6*v¯‡pJØÇ–ûË·”ñú7J�öPA=óØu"Ã€Ï ÁuSu�„¼3Æ ­ÎIÁäº8>±/Dù}ýÐ�ñàŸI?ŸƒyÓÏijçå¿Ñ±dvNsÊDå” 8Þ›w5¹1Þ‰¹í:€‘öI9Oà�•(°]£C#†„9•8·ð1ïÜØ§Ô×òÃÖË),ø”òü8B4-ù^Yõ±à\Îp¹*/ô»Y©šÛެ?Ü$žÁUû@¸±¨3­ç 4Èh« êQ£äRH •GÕ�õ¬®P²ãåh@U§?ìÇQ¥zäH‘Ö–«™Ã½èfÔûëÙÑ!{é¥�j ½Âh,t­�:-Á©bØ�¦’Ãw!I�°ÓÜÏÖ‚'Àðú+”l2¨«¥Jþ¹]ê:g|¦·>(CU‚bNõ’nõ~“(Üjd•þ;Üœ  ‚-Ö¾Ø'{UA”9ágð;Š\UE! cMx™ÌºC‚�ëŸ@Ľ*:x=â¡WL‘@%»”I4+ud޽B”+ÃÇ€(úYE×½E72íŸ&•‰²vC)Ç”ýω£Ú:á�£Ö³?Ú�¦ëŒÑ9\¢xÊ?;³‹¬Bö ]_O`C3¾ˆQ"�*©ådN�`»[÷Ñâô8\q,C K@ѧ$‹…_äJ0 ��0*f>%a‹Ãù6SÅ~)Ř~³ÆÈ ½ï™˜Ésðv*EÕ!°}“4%s)\Ž88æD/E^Ó2bPòÑî¦ö¥7„>’ÎþP®ÍÍϰTÝ'â43(H¼f•!Þ]¿3øË½ÓHóÞ‘ô{¸I€uݤ�¾^~eß—}àÿÚoÓQhœ¿•Æ}Îe�vöɸâPJßcta¬�i�Õvý[ñl4“/;-²ªüNQ8wU:h.:Ñ•`;ò<�Ô ¦d0ÍçG»P•ߪý¦~ �K³?u^ïT–ür¾å~óµvEÂ6Ð<N¯D‡Øš?ÙRýn’íªVÂ=£¼‰ÝÉš›N©”â¡=g�ÀÏ… ‹„݉ø�þ�-Êã&Fë�†çøð¤ÏM¡ë’ÿ£åV”Usl=5'äýUDXêTûÙÏÖv$x]ÂØÙŽ§’{«ë¹&^ð¹å¨{¢>€OŸE´ôA>ýñÑÿÂÈäã¶�ú‰¹:y”wßBÒë¶cô.Ù²± Ž�~w²ð¹3t~]'ǧ¸¿yîÑ<ùXâ8:ó)�·»ž>nüB)$Êv®wNð(ÒõÈ�uêÌ”sõ­r�Æ—-WÙïÿ·iÈ7=5ÙŒÌnάšèu%ܵløì”>5f6íÑL¢íì-û—Ë¥¦¤¿�Í„½-X|ï¦í¸³(�öN;ýæ§¡î{×/‡ ±ß± s×d­m ú£]ÝšIÛ?ü›�¬b§pxßÝ;%z.«@#w:Tï¾:¥á6°Ï#rd®ÓpÐHYÞ'â\pà4¾¾“MÐÂPEûO4 çr®ÆxÖ{ZEŠÎVÌ=Õ;¸.l¤’–Uƒìú@ç­Qä×ôlKÙ–ŸmÖ&Eì \ÅØ�¯ºÀ°°F$ÉÒh¹ä¬nÓ¥A%iê¶Kq—ªzÅ0§›Ø°Ê“„ú#Jõ#wóZê\ŽŽ´Õ?ï‰Û­óŠåuù‰í›êïÕ#þÚõå©ü¸p¦Bk¯æY–8^Q¦·ùêïD¸?e÷Ÿš;ñ®úÛ" 2ZNJbv9 ï€ ý´Óx-ÛüÖoõñ·þÅÁŸŸ›�FlòÓ®ß4¢èÈùˆàƒ^‡>w�0[Ô/³ÃÛ-ð¾w¨ 5ç.Nšž” �±À �(úhû%GvœMÜ¥ˆÌªíÝ~ÿdz1Ûþ{wÍö fºÿª“!ÉîÀ ()ªzxN¤üB‚ ˆ /p°Á³yJ÷¼n@:�;ï756‚Ö먻’ñ]ù|ƒo§HÊÐ=­Ù¨ŸtšZuø¸oŸ&^},pZ53¿zj²=¿¨§¥}XtQ�—m©ë4éXUÎKì†Ã“í4w�‰W5òI’,Šr×× rWü“?3×úËáqvšµk«y(ššak�hù¾é™‡–-‹J‰gí4æO�é÷•b­ï:î°éÐqq埇©õ´Æv´Sd�•5eUOçMvzÀhÓHöú{}½·ž™ž¼ë<ÿ:=-·¥ÇGã¡ËÝø¹A´6ÞÏé¿Ð'À9ß(ÈŸV�Ík�™½û0—£,=ŒA£¼Ž  ëÿ K lÑ/÷:]r;#˜øÂ«ë/ïúÅ×5} ±ª nzŠñUÛyô�çs!ñÑÆ•ëO …¬ºdmdÖ˜�yÄu8¬µû?9½ç.»y6<|»˜¨ûuWýd1ZíTwóì tèƒÊvÜcþ¶Ã iÕµÙ¸¹Ð‡â4ªCŸ;ß_.ú%Â) |KÉŸ_´Ÿþ²Ðì÷®?ZLÄ–³Aµì¢ð·klÖEûò/ý‚öcmzÇb2®0„0¯v¦I‹}óeüJ箞ö×K Æ7¿)?ƒíõ´JG­TêØáÙ9ªIƒ UUù�^ÛÈG�v]Y̼Šiùý9GX¡\;×�k¢BÐsÂŒŒ {’×Ôªïà.­ÖÖÕËô½À{ök¡¸xAcgF¹h’d<»QHÂË4�YÿŒ7º`T‰s%Å;Éï9ï>i ò¦>Ÿ³‰ŒW³6˜üyfì'8ð^oe&yôzîV½Ñy&U“µÓORi8Åë´G^ÏP˜©& òΈ‡Ñš7. ñ&Âc¨\«÷&·oŒ }�CA.…ò‡�PèÕq1ý…ÀG€€¢þ2ð•åîâ”<ÆTWˆâc±Ôí¤‹LkWæ d'ô xô©=å×kPOÙC™íó¿è]ÈÚ†À>L +;£`›F-jW2ÔôYѳå¿÷ñè­Rq ÊXÜ;§•°¤hz¸ô^7ߟ^rÕ*åŸ@Ξ²<Øé‰J2vë1Ïæv†'0‚>˜�Q°Û©_w‘ü‰mÈD‘)‹ÙÔeêIöÜÉ ƒ=¾U:p¬9ªIã/Ï�BIyBÝ€º’ôž%?À‹õ¨ö2’ ²lÅüT@¹Ì;ðR@îµWì÷^Àt«Ž©"Šœ0“¤-± Éþ¿%KB}~ÕZç ;0^khƒ °²ÒÇ"]�µ/úâö4Œ ¨ã�íE}¡Ô!cPâ|&~¡Ñú3—W7kæHB”ÇÜipJ™×üË"X¦`(ZÙÊ0Ѩ¯âõNq45+ÑŸL…£È“i(ÁÞõ"À¯Îƒ‰ß%Õ€cnXÄ Ù¹÷}Ós”ÇŒ)lÒ¤µЦiŽÀ”*Ùç\ˆ:sU›˜ ë"®²‰ý7Â&Êãýpï°†Š–˜àñ@—>Ý%/pØÀ1gì¦ö#Çbkœ+û¯Ö€åÿh°Ö¿E$•_ÎÓ�Æ}­PÏñ�z¢™+ÛqBZŸ{ Œu·žÒüû `R&d=¥å{ µ=ûújŠâó J弸æF·skºr-JåßHVb(ÉÐp�ûóÊ,–!ž �õžéSåóOcHûÆ}­‚Ïí,æÞuŒ¹ÕgÐï–ï¿>Ï ü—Æàú¤Ø¯±’¾óöa ƶЉø£�E_ý´Ù桞–G F[Ð>ê9·ž9Å4fÔˆI2@v«õÒª±×-@ˆûßÏTØå!ñ�aPÏ'?�ùaˆX¿RL«¶gK1ïÌâªAZüX¾¢~ÇC�4Žz‚eâX¯§p¡gU`n#¤¹^Ø)LæZ1ˆ•öÉuíí¨’ò•Ÿªj®¶å«§kŸžªgO<6%õkên§­õ3¯“S“§Hš‘Ò˜—t�|o“õòx ³�=w”Xû� Û´ãø®«¾WÙØÁó7™d6#uUO?-'ýã¬ßö¿É±‹Ã™ãÕ2iuË»\uGU=Q�X ' ïÐZ8 <ž«=ªb½–²Ûý�úÞO<_/æ!£7µoWسº ÏÖ¢�æj ü[Ï{Éê3×ë>õt1¾â}Rͳ gKH˪ƒz‹í¹ô™™T˜dl!áò˜r ßàa EdÕXÓ_&˜*I_y�‹U¶„Ý£é?¥ÑË'\¥brë¯xñA¢PÑ€€E¼ZDÉeq`üjòfôu~±c9íu»è‘¡¤4ïwÖ~Ê1s:_&ûažÃ×ì›Å|³�ûn§æþ‚…M Ú×ñd�‰×é’ÔøØ+¦ƒ ­úƶŸ~Ú¡„<2é³þÞ‹~*’áÅ™×f�"*ûí;y1ë6Ås±þP�£E'Gyˆ™ Œ·C¦Š±Ú³¬Πˆ€‹zðíûï{=M²ËátAÀôó½¦Îfõïí4öEž/™r’'?…áÐá™s^ï(±›|å‰èÛi”›õ‡>ï‹ 2Ô âiÐŽí½%g QOóàêo›ü‰êU~Lø:ÅôÍ“ö¢igº«¤\Õ¾ú)÷Þ¦ÖŸë½¼ýSÛ«§øZlpI§œÚoX`?;V/Õƒ×b£]|Þeú¥•»èøa§��ß]ÊWåÝ-Õ¤4Þ©Ó5Å*Ëâ³$2Ú0®o 4ú,.GHÄVÛiö\ð˜Ñ¢O¥éhó8^îm¼f§7±d�uØO7P\øôtÑá)²L¹íTß-ÅŒ&B¾—óøÙã÷ò·¶¨÷¸w;2ÐEåÖo� N™gýôöÈnçþåÔzª*QZ±o~Àì8ÅxÛZš{ëæ¡¸y RûÀïô8]ß ?æ9Ùpw{H¡¾‡�Škô_e¤Ð—Nüö›ž2mòG°øªº?mÞUÏòµ/Šã× r+×r _¬„¹ŽÂWO¿Eclº'r“k×·8çÃ˨(ɨj›Šð5Ó—®{4=(ô©_²X¬á›žÿaã¢ìùNYÛÒd¾Žo¾aï\—[®MŽ¿a%\Tì—Þeþ «Ýù>)Ôï Ñ0±4ªqUzú= ä<]€Éƒ’eü1Ÿ�G�:kNÇwÖØ:_Õ ¡TEû�I'bý1( ‰dfèZ/ßï;]£�—ÉGó‘Eyà®Ñb?[]8ª•^z¨ŸaÇ XhdoÄÚå°²™hÀÐÈŒ`Ÿª†YúÖéÝÆ;¯‘ãú#Ô8ãµÚ‚Ü·È †ƒUÕ&ÌŸí%\$Õi¼™ùGûŸ-_†S¬óuM® �fÈèôTØÂéɹúI'ÿ°ƺ`ü^Å!%ù/i�ªÉ/£²b�l�»XSí»`;»g—¸ø ¼�ù‡^ŸLF½¶Ú…Ý?b˜R¥ë2{¼Ñùœ2|Þ¿âÿÎóM-ŽÔú*"Gƒ-B/2�X´ëH3Á>-úªn�Pßš~Jsè]™Ôø²Ï~ Ñ£A � Dð‰÷¤hH•ì;\ÔËÔ×JцíßoMÇT(â-ÃEQ´hìÐm6v›Úÿþ3¨ÇÙæQXüC4ºv²v¡_HDZnxŸMØÒû+ä9àpVF¥3x~ÁK¨b?DõÇxé¸ °O؃­@æª2#å†;nrU+UPòjÏ ‚ _zŸËX®Äa’Íî ÚG»ÎÓâÏb¹¾•�÷¬½@‘ç…ËÚçÂÐþ}òÞc§É |ó8S°7`‹œ9ˆUü×jµßQ‡øu`=�j…ü�FÔØÒ¡�maª5{ß "}¼#¯å02ïˆÅרݺ¤p�‚àXŸ=ãÀh ó<̨uoïØæ‘¿D„°~Õ*»ðk/ctÄ�)¸‰5¯¸>+9Œ‘‰Šþ¯ì”ÿõ¢úIP^¬&Áº‘³mó­·ÝCýR�ºsªt�Už .C¾0Ζ”ËåxCúo÷v/Í´î€sJv¼Š{¥o:˜Ïy‘BÓGJqdsy"ÿŒýÅ�·’`Ž&Pª€zB¢ËÁD)ÿå3Ävõ÷€³„„;n7õœZïcÞ“¸vJk;¦IþÞbúñí£?ÀŸ-騜p|¾ÞRÕíùÎzjä—cPϼÍbœéÇÓ Xâ Ÿ ?ÕÃBî­Ü}·j̬bÁ��¡Ïyw\Ûé�dãckÌü—�jš>ï[ÞtzÅ΃V’º²5ü–û6xŸ¿ào6ËÖŸR;P{\b:ro§0äbƒªÕ£ü0 �xó¢A­ÃoµàVVß‹Öz¾N¿íy™'ªõ¼ŸÖ½Ú†7§\ë'‚ŸÊ[ŒÙ螣ûòÌ.nùðñAw;‰¸·ûE=ôöí]»ÅÁ‚‹ /5þa0šLuH&§+Ã@¶qô^âêËìïqžŒtxÖ¶ád´O¬qAϬd2ù�6 óØ=dZZL¾�Á°B¸ÜAÞ ¿�™â' k»t==àÉ:¦æXßâšBßÍãVónêÙÐb®1´3K½Ö«Ï954W‡×îp<¡ƒ±½¨½w»–;DOc5ûuW=~…c˜OXã‹VÑaærþ>&ók¦9&¯!н„6bw›CÈ#ðk§ÏqJ0Ê?JçÙî} "ÒõRü~®ƒ‹TˆK%Aîïc/ÍŽ<ö¡lkokÁ.2•`Z¯šßÜç6¨m9b6]h8aXÍÍ|ŸT¬ö-˜M�ÓNÛýÅø×ú[ß, "툘,1ÖšGP%[Úš¬ð}\‰q"“©±¢ío~ðœ8”ò@Z¶fÓ·~Ò™·éüìWõÁñeÖiM4„öyÇ(ScÿÙX8q¯ ¾- v¸-Öä~mí]¶®[êŸ�öäóådQÑí¾‡¾:O…ÿ†ûµ·/5ֵ铿©Þ lÆäœ0™Ò°{¦p/#ÍMýåçµQœiPŠ2ÖÛ=¢Š>bü‹Ä”OÒ|Å@ÈÿÛ¡Lº÷á¯� Ú(޽ÈèNT4«ÀT'IícŒýÕ”w>‚Â’”_òçõo»‘˜‘)ÒB m—FL¡�}ó*ålÌã 66gʱ@�t𒌰Nž´áÍæÞqš(Ÿ¡.H6àmø­’ñÖècüÉT%<Ë´‘ÎÃ¥ ‚†�çòà§�'MRo'I:"èÖþü•¸‘/þi»\ç·\]ƒwû³”ô/ô‰Œ¯)ÖÚq,¯Ç‚ñ7ÔË %NHÕ°3 Aï#°¡Åî2ü›ËOûÒY¬Û]Œ¡”'ÛϱÞ1[„v5S•©L0MÝW‰GAØà ÞãŒÌAƒ×TVío¥Jöù…œäòÒiMÐÌ|OYM–Òœ`O’ R]çe0ÿõÒ¤†üëüÈ<à�ä¯%·®$ÊwÝBãÕY¿ÄZãô¶ª9*€è} £ NZ‰m(Ð=S)äÍÕ04Íø8>ËòŒ€e-ì -OYÀ£Fâ’‡›O_ÀÜ­Ö‹q hã¾Q�‰×úi˜ÿ'|à†ç8ÏæXÐIâ~ms#[,Ën�,D4ÌÕF\dPž<™OÏ„ G¯�p­cc½ʘ5ûÒ›.�ÐßÞŠ¨[ä ÚÚñ8ö¶š`¦þVO=º9wžeù³õ×þçÖŖϯó½|}P™v‹�¥xèV•fyQ¼vNô3¼ÖÑ€t½¨çè?ÕéCQ¦üj $îwmõ®ÿ ó„Gj§x1ÛÜ«óø_=ÅbGq;Å—=ßëT9:Où¥"ù a!÷ê<þY®í^Ú)¬‘&Ñ€çÌÖ±³-Ȉrài?=›$ŽIÞR×<ÔÛ`ê3€Ã‹¨ÕÓO-^b�”qØ[¯ Iª?Ë™¥|*¡ç·ãR7©Ûeö€F´ˆ^s;ë¸kóXi=F²$ 0ݾ ÒVȼÍá¯�MDÖ¥�.*“PÔs.©ff*‡Ög“K¯š'CŒKotãó¬níµb™Ùœhæy}z|J‹Ùit:ÚãÝâoViž}[bÌU]Ù¶}™¶ñ§ ´�ÃÞ–ÇìÛ½¶ ®õóM¸fîGYѱâ„á­‰"m‰û×OyrÈëY ì©NÏ0=mÚÕ¦™ó½1¯�2lz"¶áàϽãyÒðÎ:ÒEå箞¨S3mò».Ôh?\Tßmv\w>Þ{hµê»·˜j�ý �%Í“ô¨OùoqOo+˜„�ˆÐ“i½µÀýC=ç@¾±ÎÕõÂè8â?•×JãW…Lá‚Ý–µ{‹Í÷{mÏî÷Vø4¿ÌúÑšh ÞôzåP‰ãeÏ:~]Ø>c^žï•>ù=6¬Uµ9­[îMÛ¼¾˜�‹z1•›œqFµÙý‹êmÜÚtš>spoÊm]4æð`cÀ»·[ù%uÈåÞà<®=ZïYZíý§Úˆ/øé|×°Vmaé¢1´ïºØkq½·ßÛuäìÌKhÔoÒ$å×n§â‚±„±¡-j9ï*Ÿ¿˜ïþÒy°2ÒMû{¹´ —-z[ˆCIõùµgŒ²Ç>/Ô˜žº€iý´í©�™gíƒ#­â†Ñ=`g/°ñÇ+/<:_W—–ávk§mÿMc,>ð, øõ‚Í:é寧šAqñüy©WÏ^'¡±9#\ÎÎ_N|¦ŒP�ó…}³ÀçC3àÆÄ2ZýL;‘ú/c@\•ö…Ä¢�“ÅYSÔ�qÌFTÂó�#oÐYO›ÜѤm%AÅPŒxæ�¹ý•Àg~©Ã$¼œ¬2éu�Ÿìȸ»&]€[IßÀŹøç^ª$ à°HÀ³ïœE5Y&åIþ xyýÜyŒáúì.6ý;­É½ACW¦ÎëÛ/ýê„P˜æ-CYý²¡ƒu¾Œ`y®\çÖÐ^˜¿úb÷“þx'Åz�P©1å‹B¿ÐÏ€›Žc�âÄçùïÍÚ�Æ•ºlÏŠ uyÑü&àªå)f¨„ ÞfÈŸà6NN²œy+”û½ÊòV¯]Çb4“¯ /Iz5¦¾ã,z€Yµw‚w‰ÌŽ…ˆä/âŒ3 < ý7 ÐÜN«×>Nªú¢(ÈvÈø:£ôL]V5ñ=¢ÿP5.òÛ=6WðÕxP8R[W™•—ÑÎ vù§uÆ8BÜu‰å2ÞÉýEÝ£Czº˜ËCEÑj~ñ Ïg/ãâ1T#�ÅdŸƒ¬XDÞ±OY”€_]2ý[ ›0QÂ=£Ð\¼‰Ê1ÞûXHYM%æ®o(äçÙ°yo©È¹^�€i­rÉ@jšÂÊä7)�1^��šÛx/Þôm”›¨+vÜ 4^Õ—na{}lú¹ìŽI¥Ð#®«Ö<‰-¨Æä¨D81'iÉØ¡½œ[F:îÛÇæ‹Ë�G˜³ÈÁmº�•,6‹ÕÒŠôÅ)ìCÀSqò®OÆ–C}…+ÇwRÚʬK‡,Î�ÿÞ&ÄhÎÙ2¾ šFÉÁ—<\gŒÝΑ¸LZÏ s(«óTñõ Í••”Ȱ¼ÐiÙÊ Žc­lf|Gˆ{½¡q 06d&ÿ‚eþHp( „*Šcväf*r#Ø™üÛ3�Ưg š`E ;½h&ŒX<Ý¡ô4«ÇËÔó˪ÁÉF8º®ÇÕð%ÅVÒoäå±F¶_ýX£öLc òÃbZµ„/�‡DÐöç;�WîœËþì*´[ˆ¹Qí.\Z}3«ó™j±ÝàÙ–µyFö¥å.€< …Åäz¤  ~úé#H ãik¸nFGEÐNé»þÕdký/­Ü?ÿjïݱâeÇj{‡¥�^,»yœì®H8±ñŧKSß[/awÆwf3ÿ¶ûe×X�ß[L'Ùc'°¿íü\R»7gË&€Gñ‡Æb;<þŽç—eƒU=LÑsƒ$ôÏYõ½á©èŸž&ÍPº •x¨çL[2„»žúkÇ åÄÈÿ¨3¤®g·Ó¼?hhpÒ¯§F9¶úŽÝ|‹á¥=²mɦ™RV€ç¾ø©\gêüÀÑüˆkGÃò[(Ý,ÿ»~ɰhlU¹4]vÜÇ!ªò…Ó¢Õ³ªyx<¬ š£Ô7sŒmqÊfÑ™XÍž"\Œ?¸@úËE?(9ôŽ8岟uçœÅìŸzv]tUïÜ }ÿÿñØÏ1ëÍ¿€‘Ðó¨_jBî ø¬r×-�Ÿµa5ÓM Ãá úÖ/›ÆÖÔq¤‡æVv‰·>ïXZï �™û@~­4–„¥¦ñu?”¿9Þô�ôðæ Z½=?þ…·Êó¬òo…‹ê�ÅGy˜Â>H1fŠï d~–x„&ïAáâ qÊyj•R KÑ•±Ë(¨CÆ¥ì��Ãj¸W¨FËâ$°èŽYbø×wù¤³Ð¬”`F(¯·«¡Ê}UÙ•|„KÐF”æ;)ñ�¤Å4ûµÝ\ó´ô“†”¦5ì‘«Ù‹:‰ÙåÆžÙª{8‰H:d.&Ï2ðlÄ Øù%âî§« N¼©Óä'Éh†2�„Á6˜ŒL«àúÑ0’¤Çe ,ÏquñóbÏhÃ4¯JR¦¼ŒfI®ÞJ(÷ŽÙ‹å_©Ã� }H½fùŸÁJ·¾(I�% Ä�xr�×ø.È“øÏ[œÍÝ£'â@Ž[§´mS:ŬüNŸ˜^°úg?IÌÕ€Ä�°ÆR_>4dOLö›NŠl@Bäãñ×”é0‚=¯5án÷@yN~%›ªH$£H”é ÆDÎ&v)O.,ôh™y–­j‡`ëÛ4´aŽeÊKx(Qi_*4(´ ¿©¼žr¿Ä’9ö˜±¼ýY–gg—KSele¼¸ë5Æ:X‚ò¯ÚS4˜9þ=ˆzáR–Êøû^H.Цã% ¤Mš­AÃŽ¬ˆó(ÿEÝ?ë$ì ?q}’è×z/‘DèµLø¯ò]bf绊§xÒ‚±ŽZFc�`Õ 8Ù&[4 ƒ Íó'â²~ìóLƒ|]ÝG%Û[Ñ×õm,¬õÙf�·±ë3ãÄŽúŒ¡c§H’(_`Õ9ÀÔþ?[ü³¾ç˜—óf!áuÏÓ™�—ŸŽqƒ$J€ßcºé{UDÝ6X;µ>þ ð¼ôjàzÐÚ|Ž%þË™¿ú…{¿”ëQèâ3{îcNév�G‹Å:î@µ�ù£óLÅÝÖ_zîu‚:8>Éyú�ÕCÒvgß�H0n¦$áÞÞ ¥•·].í±¯˜r�JV*EÉœ`9”¡¸é)•’Œ8†gÀ'ŽSgËO)MÁþRO»?¿š yŠ<ÔsÎbðüVÁ”ËŽÿçmu]¾lúÓÞÓßÕChK_»_5FÒ=yü^Äe?{ÛÜ“@B¹\Jî·ÖFó,\Q ;Îþdz#vÒ© Š“óŽÌ™ÿC=þno� äqÝB-µ˜<Ëß® Ô}�$¾"M×ɧõãc¥÷’MØtˉö�Åc¾þYŒÓæhãU[òíßO�ñ•Œ±¥}ùlòª§Ÿ§ 'É9aÛNîšN{è§¹sûä¼þ~~v�¶bù£x­vêó¸¸8šBê§h=®íùòe qeö•~Ö˜€ûm'&œÇú¢ÐNhÒÓãè ÷·<ä¡ÈùïrWE=óÀÕ…ÓÇ¢ôS�,õ ;bÅ1S0–G,¼ãþ=H]Q[µ_4*à#ù±iºEõiž�ຄ3Ÿ]¢²”ó’ÊoT'¥³ÑÒôà}Û´�"n§„»ªôv-¸ ëéMb‹Ia§à±êW�6UØé©šs�6= ÕNwÄÆB?K‚;»_ëPê!`<%ê04†všîeB_ܾƒ{ÖþóT,< δîMv0f£ÚÜv�O¶¾w|ʃšãyæ*å”$Òw½Ý œˆëïÖß;œ88j±.5ö)µÓÇ™áS‰ÿßK]O'-n1™Ì£fÃf$]„´Âû�Óòc,~3C‘èn1õT{~TrxxÜ•N*¦ç4V¤˜~Ððzœ#Å•“A«×}_Ùû�ÏõÔÍ}AOç\3~S~æö)…ÆÌ:þoiì±Wå¡…$´Ãöìuèg;ðÛÖ០<�'òæ<>`Iys#}rM]m@öEk?kÐÛ‡^hö{S½`àƒëÙl;z)q6D·ÚÙÆª{Hr¬ÇE�SÞÚ—ÂàU£m ›› æ1cÌ ê¿ñÅ‹áø´\‘¶áhó$;<~ŠÓR…Fu£„Z’Ç HâÏ>dÅ}Ä9¼¬õÏb±Ë,–)B‡³uD(oì燧ƒºI«µaÞ®ý˜O3Æ4t½—Ž|õ,±v‰{®r k*Ûo,<<­ýIDÍ_£<š‰{l�ƒ®«õ¼s]«æÛl¾P‹¾—ÑYÝyº­d[øl:ù^U¿\ÕsËb–¼ªOðYöÔ5[yµXZ6\PyÙüË-ÇM–ÚðJôðÕ‰°Ñnqú¾¬²±˜3b ª7.J,�ì+I¯xa :Ö§šá£‘Ù=®jšŽ2»Øx]ùx_#<4Æçj‹¥D„óh<»ê“>ß% óQKÙ!dIôÍø~}¶û3Tü@鍊ŽZªO?”Cª�ø‚ ®S桱ø/ 4v*Âs‹QùÐX© 9;à\Hùhï€ãsr¹1ÔS´{h§éc•ƒMñ^y±ýâ¢\ˆY?n€¯Íóa¸uƄՑÄÅðuž'{ŸÇ†Ú~£ú¯†´µyž¡q±õ‡0?˜·í�Öñ©ø]tžðumô:O¯Fiw}©¸ÍË?uÜtÓyÜMcl¦—ZÚMþa8uʧzÄþ?ôý—~Q{Q‡Z÷dgš€>Q½Õ0þ©´XÐhÐ�ÛÄâÛëç«�Õ’Öo � %‰ÃHN‰ DœÌ.CL�,ee,–÷ubª‡ZÖ8{ÂBCÃ�ex„Òágᔀ×f¸»Òà^¡+!w™5F“!—%3¦�»!o[l·¡˜•¢R�UÑú3”ïùü3AZS„&‘�â“S~TáÆÕ Ã�ôy«¸¹¤w·ôîqÔ[•'Æ’«áø|®†"[wÞì�4³ øY³ÈNÏ’ñ—ÿ$æ ó\Qé8ÄÝq£Ï“öW/üe!çyö7ªÒL>“.1M–¯ T¼BrbIJ"ý/äM½.ôšiqÖˆ0KH 2$I¿�òÄCž¢+³rÈT/;°ÀG ~ˆm¥×Ó㨸ÂÉÙ`¿ª¾™áieèY ŸÁr `å,ðÓ»LöúePÚZ—~зµMøŒ¤ @O 6§çš>é£x÷N?…ÄQŽ] B›Í}Ú‡<ŠWA£hïLƒî~ "&IX ¼�ëÚ|ÒûäÝ ÕƒMø¢¸j5ÉdƶŒ©Vÿ1º¥)XæÒû!oTƒÐÈv¥]䨴>–�ç^ —èÖÌ�ŒÕ$qwo› î<ðA/€ç Í\Ù7m :ÎRçý)C>c¯wÚŒ=RUýÌuV0ÿòD4¥€ù¦^å„+Êk_ÍËV_g=lïd$ñ’5ž“Ç÷cߤ!äÓdl›UI.UŸÌ‘.;¸•‘`´ã¨¿ÿGJá}|HÝÓX({Jvyí±ºs ð�ák1Ô'ª“CB£OðèÁÌmÆñ,¼ ‹¤|¨}À•÷&Ó¸�†Ïák£§¼‘¹ªÖ’ž‹?a§—#=¶þ'ǽ/zö>'ÃúÈêÓßÞe½ïÆ©r½¼lgGEª‡ÔÇ> že�zâ%¦vtɾT$ ²Lf²Í=/÷÷f´òÜFø%ZÝ^¦¹ñIJsКÔ{«—íò^ÑÞ×2¸ß'Kž?_üÇñ`’Ô`ÿõsxï#v�Qµ¸ŒFεhÀŽ)Måˆøßsï·¼‹é¦Ÿžß—SϬÛo N\™68ؽô~k[¢í½ž~Dçˆ�v\þRÏ/Ãã£5”o€geÌ…îYÕÚàÒÇgÎZ‚M:Rvè¸j,¦;~Lr�Øývm�~½…2‚zë¸XÔsRÔcˆ×¼Ôt1Ðhëžx° g1˜rbõГ{%LÇ)¾í|þ\]ö¦FF'W°ò¸7œõ¬»¨éýÞòíš{±]?&ÓÕ~Ûá[S—§ GE’³úÖObßÖß?êÛÉ3ßù]Ûã)‘¦>(µUÌõS=V÷Ë( Xƶ²ïkp—/§YÝ‚�VNc‰âƒ›>^²@Fåè�£}Û=Ô"×GëçÛ…@QàiL™¯‰ôÞNQ’}¯…îUF¿Æ u‘嵨v—ç®q|ÓÓ©??k�Æ…q:Søª†_zî�fDä¢ µÓ«O|‰†?¢B'O’yzé©YåØ$èò‰¶œéaó\A�Ø€/Ç_ó´ÐÓqe=»\Ó¯L�·ít/ïó0šy~ZÝos×÷‹K]äñ†‹%ÒÃt¥ï1¹{Á� ÇÝfÉcU¦X÷}0VbÂiðdy©1¡‘¿5P¥Ï3rŸ´ß,†šhì^^»\ìäôø€>öRÕÔºó+C,.£žî•b Q¬ NëŒ}"±¨§±Aê³Ø‚+è´?èÎi£¨ÚÆOeýY2ÏH•�‹A¯�G[•:ÃÞ#Jz¯!ó¾ÅU=Ë÷>®à>€pžvOêõÿÁüÒw;íÕÄ~϶v¬zjã†|‘.ÑÓÅÞ4šëiÊ-V#ƒ�W¼”m,Ü,vØ+m«æa± ½³üoê¡°¦Ø ¡Ó`6ü�æ»Î¤¦¶Ýï³ãv' ?œz;IHo7�‚ôIúpVžÞ�=Â~‰ºdSݸ�ޱ•îe(¼7’}·´û´íä"¢0}£._vê<Úåã^ÅtÁØT'êÇb;í‚/bí‰ý8È5àæ:§‚§·ßîwc|ËOË©y™šñMét‰ú×È{QýòX,_Ãä®yÝ9ö„ƤÛuüb1èò À½ž(«¹ø<8|_/ê¹ëLU”FäÕÓc©á¬§œêôõö ÎQbŽŽ<Öi <”Τ§ÅʵŸ:ëm°ÎföU\×$ýcÄÞ×&7þAV/#•2Å2ÝpQUüÔÞ…:" «ÆØÛ÷ö]b¢®–—‹žÖ* À§yöîÍPÜì˜lBÅ=³x§€wÅ®¹u�4öBÇÛ� x‚M¡ôgVãŸGë¯Oý²-Ž7zY“±6œÐÅ0ÀÊJ™>»ª}Ù¾<�ˆzìÆVåMé·z¬üĨH¾¯OOcÑìP±[-£¢oÅK»!î™ïÓ}sQ�ÇUåýK=C­Å7=›â²4?;-zE[ä¿·|r�ð© 1ʹéùM©ÜaîD¿ÈÕ`]•.÷{ÜÀ�¶¬×ei_µ^ý""È ,v?ôìëp=<Ø[´À–…•[û«&˜ö «û¸L°ðV# T9zÔ{‡•ß åQL^Í´˜kí5CÖNÚa‡fÀö2z!•øËÓüQikcÉm9uy¨ ±ÑD]8!ŽÉoªgL<��åsf»¤†—åë•Q)aʨ,ˆÆ²ùšj•8!úo$ke<€‡ýER a®‹.ÿQ’â^À´ÚCI?I<ùÍ×?M¨k$É?㘻¬­²y\"4›0@2}ú6ozJ¨¾_d}är—_ ÔØó…ψßN().wÚI*Ï ÷Юþù'Á`'ÒªVP–>—Mø ü“ý¢$dÂ*‡eå|ƒíÁ˜ñ2��?ºX|†W4¶‚"]ðÝ €÷\)ù.” ƒlòªé�Š3æ‡KÚã¢=b4Р_«‹“²«x¢Ä&´ެL§\ì´ 0(å�œÂ%]Þ‘ÿŽ#y΂E·x¢éòXžæÒÖVÚo�å_|„åÚêëÿÿ¿ë¹ Á/=eÕuÂi()´º·wgì($9ó ‚K_m‹xÊ0�+»ŒBºüjï4Và�lK`Gdê¬'>º“Î3#Óã÷Ñb/ žB7�Eö¡§Ó´šþþ ßMO¾<ÚSƒ»iûoí”ÉåC£lø©¥‹Æb`Ü•fKTblqå¬âƒŽYcÉïvÿ¡Kúw]z¾«¡ÅÌò¨oí8Òò—ž†ûû^êôýÖγZÌSñShŒ1.¶²)…ë½­Yý‰1&…¯JË¿Zþ™GPNI¿ZЪ;DÛÚûÐpCåô[·Dþiؠóêyƒàú„ð§ñ™|ÆSž` ·=xRÏDÝ"Å…ýógOƒSÐÓžP.xvd¹7ºæ~2”l€ìé¡ù/¦¿S;•bˆõABÂó|ÔpÍî‚E4öäñ`+ÐÛi;ë«îYJªZÑO¿BüÆ™©>6�+Ãÿ¦±ò®z |Û‚þF?ÅltW <}�›þ9³øq¬�O­zódf?¶ÑI:oTí+¤¿:>ÑÓòdgÆÈ&+G˪“] 3Ï­‘ÇÜ\Së·M=AV)'÷~ê­Êe�Y×7�ì!,¿´ßéô9[i1¨Ô“Î<Ö–Óóž|¨YƪÌ÷DanÝôxÛÓ^ôëiÔùÃÊ z8ÍØÚÚ"Û°³½Åd>vÔOû¬=gŒ¸Ó,õN«ú~hÿy¡u'=qrÓ©Ï]NýR¨PªžQžXgªæ‡dè-¢ôœóÖ¿ž¾í¡ÚµÇCc�]X‡¿ �‹ÆNÚ”¾-–£x¹­8øµÌ�Iž¨î®r¾˜GXŠ=�‰kc¬«òû#…œ´t1Ï µÂZ�JC*|éCóvæ‘Äùk±!탕G“ç]OæüAƒÖmmÓ/*~é—·|ªrÂÏCÜ` Oj¸T7÷O??ÕÅ‘Ža�òÇ�Cµ¼ªÞØ;‡ç8t& GŽÕÆ{êŠ8;÷ørå¬cY%|±qGyoÓSù^¶§ŸŠÏíj㞆ƒ{î€@vYm1ßTÝ4ø/=ÇÒ½2²ñá‹}4[¿ë—aÇxñȱé—R‹öûËñhÇã’êĘÓ`’Åx{â׸mr´Ë<àZHzñ›nGiÜf=Í�{DçzbЧ¹bÏôñÝÑ®Ecëí‹ÅÌÑÔúÏb�ß¬í² úô¼~¨·Ö¥Ö±W]/Y~7Â}¥Ç›Vº*Î~jíéÀÕ1W-³`‘¾áˆËw¹+™g¬ÙõöÏ1/9ùîaõ¶q¹LO£OüÆT*Ó‹®ÿ<ü 6µË £��¡ä™JTò¦UÆþHëŸÏµõ¬y� ýz4ÈÛ¢œ¶$ùJ³›Êùʶ˜G>V\샳«Ž›ÙNig]JÎã7õLþ­pªY¿xp}·48×=¶ØNõ~¤Ø„–k]ZLå#–%ê-ÒÜÑÛV"%K´Jw!µZbÞƒ­½JŸ.HÒ‹'#Æúâ4:�Ô (ÄP0|¬�-:º¢I,!ªàlUñÁ_0“+¨V>‹ùýSxÓÈÓÖ~ÏL>\üóv- ðŒ4CÉmQz:x}6ªT¥­ÌSÅ%Å…ÿŒôøV¥·ÞOP�\7õ� •H‹ã J°PˆúÀ‹ÊŠyRmUOÈ/}×¢³‰~&‡ë'¨.ñGd¦qÁ4Æ‹@˜œîi´€Uå‰)gœ†ñV¦7Ée!£BÉÑš�®¨o¨ëœQ1Ôð¦ø"ŒTÞÏ`?M'0èÌIB|g}è(™B§÷S|qÑ`HŸ&ÄÈääC¡¢˜g(WÂWþF=›aÕ·TÙBù53Ô‰ÀæÈ‰7t¦u^§rIB ¼EŠ2YAöAÃc;E^à5q°s\à(Ï¡•¿ÒacU1 Ê?‚d3ÝÚäܳÉ˶S…¿Ùxdü,ÀߨÓÇdoÖ4’2…âW/ bbµ£4ŠòÀ²6tìCÈ¡{ÙÆsyñÜÛHSeÙ²Ž˜É¾‹(y@ó@K¦JøC­‰º˜§|dìÖ7ÅXg�Œi,ÏM:ø'zÿEø×3ML�tšOøÑ�f1ŽJbdUÅ~x"ÈÃEÚ¯¼Â+ð­8=lñ/£0ÓÈï&ó™A^ jt’Û~ 0ÝKœfÑ¿™A.ÛXˆË%¨:‡t‰ÅíI¿{ý‘$L¨R~U8¶Àa_ßDÕ?¶#ÖØŸð4‡ B{ÞÙF  ÆÿÞõiÞÌyS†(ñ&{ûê^Ï4ïñqŒâ=)xP5°µ Wh¿àWjŽØ@ökoÈd`¼ÎÿæÍè0æñµéðœšÌiÔbÿÙ“û>‚Û`zÕí¿E#.UÑ:å²”î‹ñ¿„<½…g£—Ÿ”Õ‹·Zà™„’.òœÓ’Ç^RjgäLنĕÞaçë�×ôGÂà��ä葈¼q^Ýþã?ÔÆ(Bzšé퓊-0â¶Ø|b‡ïý×ÿÑšñׯ>!r…ã“GQ¡jFö­5ߢ4øn²©Ïz~�mìíT\VO˜ì²±Šý>Ð#7°XÞ¤ìQá=~µç—? ¾W£ wÍï!ítéãŸÚοQH_Ÿ ×_àaÉ0¤JT<'hb§ŸOÊøêh‚Á—æ$½å=ÍÙ<šf‰õ4M¹¹Kcl(ŸÚ!KÇàÙ?×Kk߇îtÚqc´×mð�c¦°un:Ã<(·5éíó\‡}KŸÛ)\¿Õ“íÞô“èÖØé1l ×±Õ�žÐïÀùb±à_È×J`§U&óÄJ|š‚|Öà»ivœÌ® ˆ“çßd�u“•MÆ’yBnÀï rœOQ–¦ÿNXì“Gó<ã_šíž<ƒ�‚O–][ ¥¨§¥d r‡Þ[yá1L—ì�YkïðiSx­§žssÉZ̃FDZ£ ù·Ç žÀ™&tì ’Bûó8¶Òñ>Z4ÓàIU äY”â;×¥,V¡¿7Ws�€Ç­õ«��V=Mx«ÜãEvš�ƒo½lôÂ#&DÖá;¾#oZ�³ÌUG0f?|e�FÕc]AcÊŸëç1~ºâ9ì¡-3X§°:‚Ц¶Ãvðׂ¯ iÆõ§¿�Ù›ÞÛöçöÑ:Ùb¢Žº>¥Î–gƒwíÓ%ô¡™Ñ⫨sWOnQþ;cÚ1yì3RÓ´*€›~™³æSia,Ôå§�[Îü›�Z¯õ©±M)ýÜ“œÊöû­Uo mª§¥v´Ÿ&›ÅèwçiÉ'hó Qš‹yl¬í‹Œ‹âÿУf¯Ì#è’<̬».l±äöðü�tä3Ï¿Ë||;ÚóE=‘=f^áq‰ =–²ž|¯3¯õ'Æö-Ô£†Èó¡‚Ë�Ý5¶*@‰*ãgó¶Ø›zòlÜæŸWõô_Í=¸@€­]G|m{¨[¨Öü[ÐS9´¯¥‹2÷Ko½.NHsˆÙUŸ-çîÕ!?Ç£Mé¹WIÕ{Üà·…6C¸åÏ8´§C =à ô)£÷&ÐOú{xàô߸­/,ª�¬«ö—y îIO«¡¯k[HúÛ­={|6\7å«uS\$÷�ø¿ŽVSxí}%È7”½Þ §ëg|®;œ6÷Òr/ ×/›çštZâ€çÁŽGù¿­m\ª¡q¿õqËåNi;óŘÔɾ«'Ý"‘/¼Ç´Xcþ{0`ÅÎÍÚØ�$·þ™8<÷¤’Ü6ßq¶Ñ€¼ÉH¾.ÒïíĆÏÿ½÷ÊîúYÛkã¥Ãfmw j9ÍëOA ã¢[¸ÛxÙ@e 1�Åðõ(V”¶À¼ ¾(O€¬Äæ14ΈïrJ&䃂PC�z“çà�§€îY&Ô»³K‡Ç�ÐVO+;§îªnlÊwœ„Ÿ( ¬‡ ¢ÈH3¡i ;þ^"*‰>y‹�=Þ›+O*w̸2&ÐoÃcM¬õšÓJÆf´E1=cŒÀ½TüV…^õEBÆ �ê#§.Ñìò|@KòØ[ñ·Ðø‹g[�iH1ხRd ¤æ}ü£¢~ç3žÀ|#í�—pžðˆµÕ`<ãOÓmUép9×ñƒ»S¨Z`‰Õ?A8 Àÿl¨êÔ§i8ðp4ÞÈÏÏ`•òÁ1ë+@/@Œ[õóP¸xâ¨sWÅwiß(Ü?Ýu 0³3Vho˜0JDœãTýgd09þ‰bî°9WDµŽàçì ðo|Ñ£ 4H¥äÌh'¤Ìªš•}‚¼¤ß§å,ToNc¸šd¸nƒz™©“¬—^U)�ò}®Qe´ÄÝp¸Yéx~&[\^Â3&ôÍ|ò#0¯’ð`Gx¬Oª‡UªYÈds4Éò\·By4qUÓž—®º|V”x¬¸Ò*0ŠïóCNý=�‚‘6&ú³lOP÷Ôþ¼ƒ�¹Òç¯i* –ò§q‰þúgdô˜»¶Ò7hŒ�ùLO¢ÿ•~‘Gä!ÿ9öYn)Ý#�‹EKÄ2‚ÉòÓp�lÆ9{ÈKlÂþ.x 4²ˆ{ɪ×Ëøÿ9õÖÄaBÇA¬^PÈÞ}³1y¡\òb®=×r(+y¯’OrxqÌ3Öçÿ¸¶ :­2þ£Àû}¸TÕßù�éo�^£Æ)ÛÂYA>‰=.VW€ŸQ}Cþ¥à;••“^‡àPæøgožG¼\kÀ—vš¨Ÿêêe�…OFÚ{þ#=¶�Ÿ.íÔÍ3–×ñðv;¾|ü]ñÖá;œ Þ¾".Ö骒œ·»ÅhÏ¥g ¾(†"r^™�Ý[L¾3ÞñæÖ˜™-öÅE¼­-f›’sW�EÝ9ÇØöþD‹'±Öä³á¿~ÅvQ�˜®Š½ÆªZ›§Ý²ÝóÓv85êÁw»NF»}åÒê=U‰NO°¾¨‡ÏöÏÞNê!x¹„²Dád´/íÜýëW»_%d´6ï§'Û÷Ýÿü?Û èïêv3�‡ÄÆ©¼†(Ô˜•€ÐG‹å1‹°ag m^ÊëÁ2.�ÎMʳ¡ïtôâ|1t0—ð«Ý9o¼ëÞ�¥Š‹uúu‹]y¢ûy§ÁÕ?×{n±i›�ÖŒ±Ò¾ß?tïäòÑ*»™‡\í¹$÷vÌ_“Ù¢Á—ŽÓ¾@¦y?&�©·‡(møW“yJÛ*;=ò`°”“|¨>Ñ"ò©ôúR¿Mùo]‚iüyž]õA%lá½Ö«1ÙZ «Co«åqœÜq¦æÇU xD¸JPþ?M´’õƒÉó#"l>4L—º|–‡n`¢ñSÝ8ï¾g�݃k„öñ·ýi;’/bÖi¥Ë‡dïýtÖ“ý”¯ù£Ž-h1 iì×{ÓÏòùÕÚæ11�.”!F"óÚiÓ-ÛÕŽ/K¼’eN�;§y 0Â2Ò«OF«8n9Ÿ§øIb�ã~é2{Ôµ}4:¯÷![C;S¬²˜…¾ÑzkÕ_˜gh¶+ E†Æz†÷ê’½P�=/o±þÌsÌÚk§FC3ð‹"°¿:VÕF5Ú?ã*‹ë«¤w¢×ÃÉØ4ê·Æ,Y`{þö^q˜†à”NÁòlJùÎ<„f‡w‚ˆ&¤Eú&Þ–…‚§ä©­4VÕyÊ`À«uǾ½ÁÝ'§ O�±Òï<ÕRû÷ìoóds¢B9À«$æëÞ²­“¾•Ôpý�‘D—'|v˜-íÈÕ<‚–ØØG: y•®šZSš.3~^5æ"ËU²…FÆ6b÷ÎÒjuYÌ GÕ7uTž&›Üê�{‚ÊS¼¬=‡ÇÍQÿCc ^”/}C�Ÿ±Ÿ­Õæññê”bÄ{°+šÑè¶hžûúZG æ!·¦Së%Å6“\å—’Í[èvYcaíãÝôBlñšÌ_N¬žS¬1‚÷‹zÌQü iÑSnOÏS°o‹z²Þ5†—9þûY»IŸ·–ß³·u/ùÄ4¸�œÐ^/ú…¶/:~³ÓÓ5B¶ŸRÊ (Ù|dÑØ`ãmó1]£íEc@?ì™Ú‘Ããþ¶> AŠßqmb†w{û€Ž ï~oo?«§Ý­fäõ¼¼=¤3þŸãdõ´oŽmÇw†}œÖ¥¾Ë«¬^»ŽÛqßú‘Û´åÈ?¸RG2y}h{v�5·Ú1îÊ/˵=ßîK Åq:ý‰ïU|ç»…ÿ—ŽS�aöŠÉϰaÌ—òßõÞ =ÔØýz´/¦6�Ý-©¿{壦 Ðpkã¯Û¦:\Åñ ©ŒŠk½®¾"É<„ü¢xª 0;Œ–gUþ¿Ûü^K�í:OÝõ91À½h ÑíÆ½{ˆÜãß5¹ý¨- ã�€Ž›ôŒ‡ÕbD^#Ýò—ÙÞLSê†]=mýtyí']MŠóÌ4öì0¿ùÒN*äÞmá!àƒ€:üþ¯Àû*õ<8�`˜I/‹åí^™3|º¤ˆ9qm'~ ƒPAtÃÑwD2íz<Á¨U˜÷ Ђ)‰Ko®áÏ<¾:q屿�6ämè;]Hš‚⪘¤dѨ�©DÏ3pʛ͇ÑÓŸûng¦;Î鹌/ıâÑÆ#ÿq–Vc9‰“àð+ _%whŸ@½Î€œÕü¯¸àN¢„1WbJè#ã"ñ2ƒürªr"W!Uý‚íÉuÈs4öMï Š¨b="5ìW uA~NßÚÁL?‚`LÂ}þ³…�ºKì ´�øÐqSúþ ùWÄ”$2²Lq/”å‡J ïò…ÉvDåÇmF{t¦I[ã#å/° u°¼‚ž×î­¦úlÊ÷T´%Ô]¼GªÎÓ¶±Úe´ñ![‚TßËä}BÝaÎ,W¯´j‘m$"‡œÐ´ÁXV¨©>©å�§_Ž€Ûn:V“ôèò0§(?½­ MÙCb&!Æ5ò¤˜Lä½é†žgŒëTÕÀUêÞ 6^RñTŸÓ@@?Âá‡'.ÊMÆ/Åâ^ç-µ&?Ë€"ÆçCýe.ß!�l|õ • ŽâtÂÂP�]çÄu o°{ +™ÏÈK#žOdm"TÛ¸NãIÆJ†&°sÑŠßê§tãC„°î 2Ûe[è¹M�¢nû/§èĈDœl&äŽw©W¯ÎöLoÇ#b()^d›çLQ¦û>ˆ¶åa˜Ž Ô»�õJaUbÙ¾XÞ}Å2ô)(½gr;�s±Ö½¤5‚ ²ù}{j¿1ÕÚQ$ç…V)œL•<Î…Q·àžŸÊ–Íé˜ð¥ÄÕ\"¬yïæ6†_³{Ýósr£òÛÈ}äå�îþ¬Ë6æŽíûÑ®Ï?ëó0tœ¯ ô›ÌÏ�˜‹©Ú$oΓØFÞfôTÙð&¸p?“ߘ¯{.ê™g§ijð Y›ïºÄj_Cïí”YZn+‹q"‹îØÚi(Ëmÿµž,³Üÿ³åÛÿFyruBóXs ôüÁ mKâX =ïzêé©zÑÓnÕ“‘ÄÆºÕvœzëô0ï.Óéhh�þ’\�3¹°ÆfÝ2 qÁ½6Ï*ùóhíY;ÕJ² y8ýꫵ¶A;iýF§_Íãrÿº5xõüY›æÃ�žtÕS‹•îhØl×MõPÇ—Gü¶ÃsÛÜ›gÜþùÕpøóáÊ"ls3Ç> ­¯”÷Èkçýãó|Ê—[§%uØ-ÔTk·[OU2\�ÐÅÓbÛ\tcQùùú¯­™ëŸ™ÙèpÎÜñáIûôîîü©â£§D[Ö«î}Ýí”K%§Æä9<,Ìû¡iTë¯ëÑ”¶{ÌÿÐJ¬ýæYü͇gÅ¿>{YoÞ¬äîÉ3ŽLçr¹ä •t�Ü2…SÏ2 qµúuG†”v*·ÜÔSòªõ›5yR£Ì;Ç'Ô·lüðQ�Íøx¬øÅè¡;Dœ¼Eƒ*1ß û¤\øÉ´'zË6æ2Ö ;}Ø‚“àmãÉÚÞ®_U ž‹«ÆöÝð4nê§2É<¾„üÅ:x<ép¾õT{do {¢h8…²ÎT± ÅP;­Ø'€J¤E]Yö'§vOÔjEÇŠÚ1ƒÆR[ÍÃ�wü¼õ¸@õ@�±ãXO1,*©‚B1~’ÓÆ)‘à&fäfŬ¸Ö·“.€ìaøídQ5ÔcfV.R…¾™ˆ/»=N4ölèÉ~Èãq2{µ½+‚ <’^³fí6ÙâN—óöêǘ*…^Áä§[J)š6^âtú ³© yÔST*ÏOÍóLCZ:>PÚìêÑ¿îÏ aqä·žP;TÚ¨?«½ˆŸ›�>i64—¤W,†Û¾J ÔÌirÀ·´YŒaÕ×~Ú«ê•nÞ«'ÏUóÞ\—E�8=XÚ+Á,Òò®ü²ìÍ…,SèNM>?Tþ®êQtWþÄÍÿKÃãðØƾØÆ�*v*¹8=Y û�É£eº("_dô4üTþ…#. �ÑÜ¥.ôo�é×ÞZì«Ý=­{¨ß" ð;¶6n_¼ÛýŒ¯ZHäþ>†èì:0,ä¶!†F’�rQ_¯K³g_ÚϦá鱨²ÝÚó9ì>ûbm;âší‡ç~QÅí”jé1 ó°Õ›!ŒvÛTË?öŸt]œ5€ó±zfÞÚqÕ~ÞŠsÌ„8»ÂÄØ”º+{yö· þ®òÐc™æpÙ²hC%”°«¶ª¡™¡Öu×¶Le%ÕÒøWçŸúáÕ®1ö싟f_8LöÌò2À³çî&›ˆŠ«×m—ša1½åÇÅ!F͈õ§«Þ( _% ퟽nÊ@c»‘² 0¢ÑÜJwR˜’Ãr7däzo-r…Ñ5à Z†§eî‹]¦x¨/àõÚ• �Ö ù¨ÀN>r&Tcǽ¬³i7ÔþHƒNA•w>4%ïPp–‘I"‘ÆÄ�÷AstÙåö|+Ò_9r…Ú²œ)þ½'ïgϨzF¡_¼¬ÀË9Qæðp5ÃÛ%�ž.îdµgÖnëoÄý¼žôàlf�+ ‚)ó|Ø‚¾pæDå…Ò«íÆlË4¹P“÷‡ý!:ÏÚF•qÛ+>A¾3�‡¼u[š¾Bšz‰Äß* %B9Šò�y¦÷EB™Ã‘Ã[ý‡u@^³%6ñ ÎUI@f„-I«ûd€àßÏ•Ûû%Ÿ1U|ñŠEˇLA7±%ù¹*O“¶ë�(à�Ö<Ímvk �D„º�¨K¿H 8‚ýïÝ¢E9c£¿RUÓ—Yò²ýë°h—+~7Sˆâœyl¬t¨Îм�R]2‘+½^lšÍ2\¸÷ölÑñ t‚¹2°o©8OÉ{;¼É7h�¬*9³1•æ $Øï&Î8H|ÊYO�nˆøgûß‹qª'³ô³„ä`êúŠ¡ŸÂ0Ÿh*zK’¢´—ö,aÅ!ÎA@ÄÌ\؞Υ6†Ž^O˜�Q[Ræ˜Q>JIŠIu�5·Ç-ϽÓA¶)6'›*Oªø¯ßcq&”U,•±¡ä$1Y8}LÂiˆ'€“Áf׳îÐA™Oú�¨[äÈÑþG(¹Õ(A‰yâáßQfº®áxoepÁOªʇ¶e´I:?3‡~ísihwNgŠŸçzMAI¡™�+:ö{|“Z€�‹@û;êò?°òŒ·¹xö,¯<ÉûDL§eðñ“çò¤¨$êëR±üðŒIw^ôoÔ;Cèê®$¯§3éNÿËàTxKPšÞ'��tÄ<òùN§ºÈl©! û\[C ¬7vDXÄèÉò»`2 ¶6v�'´¥­ ±¦Îç�}§žTr½)8­û~¡Ñ³”ÂÚèÀ�kËÚ§§nÒMa˜‡R£Ë͹ú"„óßK;U×?JÏÇHím ”?Û¯ÜZL@¶Ø 4À ÿµáOµÓù²`µFþù©wbnÍˠܽÌ1½ üžúF¶yòÌC=@¯wbŽ;;gúRz|ÞiHg;-˜ÂW£ l1˜19jÜ/�¦²O#à­³ŸŽöÈ�‚W¥’°Ä)"ÑÔg ÁYÔ\JÖFP^K“kóÜtOóò˜”ÀK÷ÜK4¼•§ýÝ)ÐÌ¥�jÇK”ÿeW9Y;àjàôÔÀ¬…»'•y¼=ôTäË•ÊÑ{ ú@§Âñw\Zª§§ØÖéO“ëöö¶ûÂ%ð¨ýšAžhö‹�î‹;pÅ`ÄúÖä΂­X?[/€R›Õµ(M0ÚŽ¼øi¦¢;O¬±6ås«-ŽË!·[gzR6î‰QŸ�0þ]öžÿ³«åãôŸ.çU8Æïà+õ0ú²a‡Êîú¡¨5<^í4î�ˆ[@û®jsÓë]Jbs%Áj²·0šž1-‘ú“˜F+LÁFNsl�²ÉíQÏŠžÙ{Ò•‘ìòÔ]ÿ Ÿ†mo²uôXwF¢Ô þtèØnj††ÑwϚ̮eM:°i1#ÞerÔ´¹{…@Žfìd±5&Pÿ¸†À~´ç­@××ÈGѦP‹¡têó¾Iú„cB{Úãiéí:_¿á¸w¤MÌG£i©‹œÌšû¸ÕýhzÓ<ß-¶°„ !GdOÅÐÞ=mü°®Üùíû¿Ç¥é­Ë#êõ¸`ÒÓ¢å,÷E=Ï�ˆ÷]%à¢óÀ]Ç…‹ŸŠMŽóìnušþ3ÏÖ=)Šª_;¾FÕQâèª �÷%ršÙ‘h÷JžtްëüqÙ LÏ­;Còkom¾=‰±‹SM ‘I«Ê¦õã1‹9Þ¯*�Gè|÷ð=<º/÷œÏ•:ó%´w&l£‘–= šÂÑ9ÃN¬eDUUPéè:,€§À‹~ݤ•í¹?“re¸u�ŒmUÆê+Ó½bSRÆ$¸ÛJ îø4Ñ\³8îÁàDd±îé\nJÿ^7ÒÎçò˜lB§ºh œ¢¡ž'îù´º$ # 9×G¸ëáýÐ3 udʲeíJÓ¯±Çñ,ˆ&�7š2ïúš‚ †#ƒS\¨ëñùº¡ÐÆ•A:°ã‘V¤ ™ãcü½¼F±==U~ò>·O�™)ó(.ÿ5OZ¿qõÂ`!CÏ 3†/+ œó²7¤ Hûž—�_§kØCÇHõ�ÞZÀq’àÙ34é£ʤË—�Oáç¾�~ù…ЄI^ÌÊhõa£ÚžuN¬YRSd¬¿ ÷ÎäaŰH†ò Q?OÁ�ŽŠ ™@·ÚË7ø0\’Fgž¶H¼ËŽü*Msþðk¸A;8±A¨^ÆâVíñ„ ‚h$º¡zÂ…±üŒôLÑVÈøZ†¾“�a¨[gRb¬àÌ ¡FV{6P_žrô€F·f]ò¢|¸W+ oÀÃÅZü}£v‚‘bKÀ}\Ü&šº¢± çb¹Óø5–﵇FUÏ}¬€ðÊJÞIEû‘§³I‹^Yó4çc¦¹w©Vœh+É<É;¶ó�Tk+P³:¢’­wúö]ÉL‰ KŒ´ªÊn_Xyž— ì·6m]ƒÌlO‡¶K;n´wyA/1ñ:JR˜WI–`ÿ¹�ÿ§¸©^¥>î·ßà¯ñró$5½÷àèí‚qÁèÁ†)q]07='L�¦Ñ¹¦h‰Ñ¯bÊTo#;ó£œâ� Fz¿J­¡?¼_±2}Éñyÿ¼»ó\þ’Ëw^ƒEµ3dHœùü°šC0JÐâ¥àm¶²>DâA'd¹qÖV!Š£EѶ •º9<‘„Q‡XŽz%‘gúFõçÅŒ§4Û2ÚŠ¼æÿŽùh� Á©a5MªeÀÅ!Ó%”ùO¸._ÿñߺGè‘ë²4pq´_PÊÇ}úöÞp]>­¢ûÅ+>‹þÒÓ=ÿ´˜_».õ.·B±óêÅþ[=­þ‚㤎ô©[b_—ƒã¡{„—‰§\5‘>;,Æð*¿î§°òïvz!KôX$==m¿@†ØP¶â;­Majm‡Òæ^뢧ZÉŠŠZñ—öÓUƒŽ�â“OQýÐk_Ö¼¯Dƒ¤<¬ÃõôP?žÈ’m5XŒ¢Þóíµ®QÇO�»ôE¹%Ñ_“¯{O>4V’Æê#ní:Ëšç™þ1E4æ�Å„I®Èˆ§¿³v,ÊGû¦(‹›˜.h½ìþñW+öõ«½7~Y’çáG;�ÑNÉ5˜Ö-ÌYÑ©‚µÛMOÏ^?É>Eoïlë-íý<¬þ�Ö•ëùʼҕ¡ø¡åÔÓÒ= ™²þoïug“/Ú›j:‹Ù¹è½˧[7üGùíó6…hæïÕÈX¬)¦§‚Ú)¿9ƧžNøÇbFјAüO=ýû¿¨‡ì×'“y< š©LòИa*—Š�ŸÜ3†;þ¸ee�æx¬1Vw:¨Ç€µ]cÆd[~Wóìhò(–*‹zÊ — ÁùN¼Ó1�yËjWý¿\ž$Šœ;¯dJÇ9å‘€ŽÄ„V5ò[Y½ÃSOØSaáâ¤YæÌÊ`¸«MlvúGhO>u¬g©ô²W3êžN½µvÚi÷Ó/�8’uìÉ9Ú²lÍî›gÑéjãƒM>ésŽ4e÷°'ÂÁ8Û3ÃO&ÕNž‰2 úõÉ"—Ä÷zÿ‹Z‡þ§Žó>¼¶’Ò8Ÿ†1ÿUšŒÜí4WµË—Å<åšÜ™çxûÞ |íV¯ò»Åf´ny˜Øb°.íøÝo³ÜÊ=Ô~^UoÞ5†ð%y o<¸È0.'õÈãµ�Ãl|è§œ+œ¥\iiîF±G{þatÐ/ÂøÞÛ}äÿTÛ¯kó„söýà‹Ûxù³²S¢ýÃ…ÎØu¾¸ô˜¬ÔgO‘>‡WøÆ7B–,„¬ÅðÜuºlô�k} fþýæ™u±ÅIøø®�ÁìÛª­ˆÆþ^…èJ¹µ7x¿œÆ\ùN‰ÁGŒÂ–õ÷g«÷ë鸮ŠÏ—oW�?òœ×qÎŽ¼G{·±_FìúißÛ#öƒÑmÑ/(wýÂ+/œ]Upï6½êGIpÀr^o¦4#3û¼ÁbÛ^•_þhþOõ><„å„£ò¶Hö†i$Úý»`ÌQÄT <¤»ÅâÛZ=«~¹¤²�µé�õ!qSSq;<ÿŽë‹zLâÔ“ŽŒ!íøÄ�:“Kž ©P÷U]é?©#Í#Êæ5†´ÿIë¿ �J-¥ÜT{¹ä½•°cMi0w‘Ù5u_­oÄ ü@L£‹´ý àåÔ–þŽuK,œ`]>ûÅê� ;ƒcAóf²þôNÑÖJ‚ â‹Rf„Œ_º‘²¬R =h Ö¥;òVAßãg`ØwF" ¿¸uëýà«í õf‡ ;ýªVwžáð4*娡% &5D8–‚/s›žÝç* ´ŽßTGzó“µ7×!1ß××ÖÉõ¬L£r&ï¨4ý­„ Ÿ“u´÷ø[•?Ò°ee×ôº½˜rûš‚¥ÙdGª23ÂÌ*‹È<;uJ6  ¢Îê¸âu™&�Ç÷J——lTY.@ ."è– Çá¾šæøøIžãÃé™õƒO9Ž«¢¤ºñY˜:Y„ýõßþÛyž®ï>ÿ]µÓ?3{·ç¾Èð©M_wŠ#–Ø(‹ÉÒb¥Ñ×Ú²Z 6~XjkH®Ÿíy>Å”ž§c§º¡¡õªG_¢ç•Xl›[;×N-‹U’™ôˆ!vþüjíÄ÷‡çPûôù¡„6O õŒ¹�B¹ýK{èÿÙ~OÊb'çv;˺GŸµÃȾª+ñÃb®)ü?-fá~ùhù4›Ç|´S�åCû_w>å¢  ·FÿýúA!öbƒòݾæé&ßpÂäá®I9˜›–?=ùøô8;é²ëéƒ�Æða#ºGeD¦H¾Ôãês‰œoézoÏoWÂ�›åˆvÀøÞ:?iïq|¡öKw˜~·ç–*€_ÊW_扤1ÏX5G¿_Ïú–ßËYß¾ÝZ½».˜^-6ží¤éŽ�툙§“oñ7>tݵõØzÞ�Ej×Öºcæ§ÚQØQ`ÑÓ±Ù<«,œÊß#y‚âõ@OPªî°”´VHªhrK°ác© �|’ìT+>·ö¸m1™q@tgÓá–V¥HF/º¾80MÌQ‹{¾±H»o�#ê:ÀKjèEõ²žF—,ðg¥íl!Óp3W™s‹�2Úm™—Çö£±Œõ·Öärm5¦?ÈNÑý +¹rFDÛE_Œcg§C/²†ñ‡<4†ªÅ°å%5MåLùoù2Ï÷–ßc·¹G祴¡¬§pïºÅÚìØ¡×’ç£–ãU[ÃælšíL.2°ZNf낵¼ZL§f^»ÁrÏRžçnúo…Ár•¬³ˆªAY ŸO»v^=¦™Â@6x$��kLÝ3øå‰õ´`×û6ØÜu<¤ò=Ð]wôÙO£�u{,Ý5cW#éåx4¡X÷®vqÑà;»ë‹VhQö%=�Û\ˆîÄßøÑ6±ìž¾Š±Õ±ABsíbžr‹Lú\ºÙ9û^éÜN�d�ɶ«]dõ°´´<šGw‹Y¶»<¥6áqfOhfÖ~&¿³„°gs0‹Í,8#Ä×)fŸyº-ú%�Åj^Ìó,ºB�8YÌK"c _x–¶›ŽkÑ/løÔ@ž('/™‡¤¼IAÕ›Wí¯»ŠåU=>î‚Ø¾ :=¹{Fáì×6öºè鼇Ýkó‡ø‚Løä¢õ~阕=v¨â§ó ?ºêtœŠ{šÿG»¿¨=Ýv„¾ñ¿6>¿Ü¹”8Ãf3ÏO–Ýôtâ_‹ÂmÏÍ:l6K†æø�ÅGhHŸÔbKßA…�yõT\óXÝU>W°]]$¯xõž«~Ad‹¾yÂÿÐq«{ÚÜ5FÝÅ0Êõ™i÷Ÿ×–ãë1³$ã¬yžFýA�ÛK ,ŽQÔÙ�§OÑÑffš(Þ6ް08¶Å’úõÓ‡ºhÝx'sÌ8ÒÊ&—Z`×¾×ñɪžÔ›éK˜Œtùozåœv%W0vIwù$*Y½9ý]=ä®æÃ—Sæ¨G½Š¯}С ÞH½¬íúŒ}*‡zh1?þ´ò÷ÃÛÝ{•´Â·ØŽóí¾gÌZÿý¾6þÿsOc·X�­„Mcm*„õwÌ€‡ô~›Pk¡çzzñP̾©5õX�jÇMî~YYÝÈjH­dã.õijžZfUy1C›îùMÜëÈR�tµûcÜ‚¿¨ž2—ÇrÕ©Gÿ¨¹ŒÞ’'Þæ¹ ê;´7åÇç§=l‹§éqDb ?PcÜ=ßD!¡²0j5•ÜÿìMNÃÜŸâ~‰æ±|¨Í™‡ŸÉô�Y_ƒ±F܇¢"ÕLN]\”î‹÷]@]‘ ¢ÌƒaÄ߃oœ¹·>Àr#Á8˜§Bï‰N$}¡G`ñ’¡�^{ì=ê\x#0|Þ^ÍDZü“û’@Çöî mîýëý7‘G¦’­†½Gy�yÌ,DòŒ‘3Yš9–ý‡Úëu^XŸíPÙeÜS³gØBƒrõöP¬ûUÊ�î“­‚öïÒ:´_"<�„8ÊÏ‘+b»—Š7~˜ Ú˜NËŠÇd%beíiøøÕÚÆðÿÚÄáÊlMâmÇyxî—5Ôº)Àâ,RB‰8f9"3OûÒÙD€a#¯øŠir3«SBÖl^º.@>…<@ Ê@ó e¢ór“�3Ò*Ëö±ÅAj¯¸ÿe8\$塽—…óŒ>©G_ä°|«Ïrâ¬W¡ß×ÅËñ%¿â‰×iÆÚ>©Ugžä„Cš9ÌH{)ò&ŠèíîB„�/ò"ø“;†Ê­Í¯æ ±ð ôh¢2£1v¥†ÉÏ^Ò¼+\Õ“ùG™ô˜5 é㬭fm®p,߃#€Ü™ÉíˆYÌøòkÁ:^É?j¿îí?~$$Íæ4˜VÁ*|Ê–éc˜gáˆ/æÌÏ(Üw¯+¬oª\Ôeþ<,ÂB8åLBK8Õ?kuü›h«N<¨;*;TžŠâ\1uÑX½§v¢ìÖ�‘2qa ZÉ�†1 –<û ¥–KZ,2át¬”K�cˆÿËæTIñ þ#ÊÁ'2.±lùòÿBú_1ýâ¯*”óŸ`E]—áé î(1]ÌšR-æUãÐ0T#³ý?=;P%íA¢@ËIhU÷@Žj/ùŒ…rìÌüÏVæò[k¶gªx*—(ºgì�£>Û©·E·<¸êÇâ7=u•^$Ûi—I0ùÕ²íÿlͽôØMovƒd ,èñ&“_¢$N2}k§Ø *Çû¯¿Îûçïž÷øÑ�þ{ÛúØÿüq±?ÿ½ëÖÈõá… $;Ç—�™u'�îR20qn‹@¶3ç§é©H¾dmÁ –…ÂçVõP|¤ )_­“�Oû: fÚÆ°zþ�í1O ´g|¸©G¡mñH÷ í·X‹÷O×Ú±—Tö»ô|½ì#ór…jüܬä#¨p6?Iâ èՎͺ¶ÖîvŒ²¨ GOÀœ¼þ/½þÄîm4>¯=V[}ú« ÀÜóçñÐìKÑ�Оá2g–,rO©k,z~ý¬úéñè xBÃ#mD¢½Ò­h¾Nð´­!ÖS‰Ï­¯Cß]Úïb§ðZ~‹%–<ºªSƒ�¾ïHrµ¿ý�²k?æ�Æ—þþ¥žmë]ñÕX…›íñq(Nxjä‘ci§´yìœUb‡Û†Æ®[¸k÷„mïíTgÕm[Ã#8œµ­,…ÓÑ�”¥?YýËÈ·lúë(»™ÏÁóA¨ÅŸ³ÆDôñ /ih±õR¹‡h£ßûõ ããY¿2´Ã‚yµ¶4ýçžÄ×øÊô²¶»ÍÛ2�ŽOtºwÓ3p~`êçø=¦G=k;RÀ?D»èQ`¥]¿”ñXñújµ‚kì6>ÜÃHÀ+‡ð#Ùw]¿®�~œSŽœ�ùOÏÃ&Šy®vÊÈlO”¥`¡�Õ `ðšªøÁ@Iz¨Ðí“b¨=g«ÏZ+é9o»—`üs{¾SŽU0O\´ ߉mª!«óÞImT•ó\þwÈš¨«W¦H ¿¯ù ‚$üò¤�ƒ×�Œx# ‘@{yô ¸Hÿ¤¹ãßï‡ÅÝbRô>ƒkëJrà#7¢Î‡ýùù›S2qg.4û¼€>ò~SjµqÏÚ~¹7 Õ•ûnÊšJçô”¬ý‘nÆ+É3Ö££]ô‚i†Ùш¼W%!ybF�ïí§÷R”y• n1¦·X[ådCè¹¶¨S\°¤„âó,™Ð¡¢ÉBaùÞ@ѧåÑbÿ¼úÜ3—§¨(�¿l¶·Wºpœy¬§ù)zfýÙŸ(Ou†×œø„ð’ ÍË”éœòsÎE�DpÍèGQéŠù§xö{6¼±,•GåI))~¥´óÚ {Úß Éwú©å«j|)ðÛí§#ÖßM�Ž|†O²f-“�ŽÑþcu(ÛÃKЩʣÝFP=?, eŒ Ø&ùïc€*76èÏ~ÝÕM²O¯q~Ñã%ÅqÔ„×^° ¢<�õå ¨€÷&›–HÔF¬®RŠ‘šyŽT=ª(�Ô�K™wÍË,ñ‹wOÈ\vœ9üHÊòŽAþ‹üãHâ³ÉK6‹ì  ¯üÎa2ÛÍR8pD Ïzü?Q¬ðZÈÆÜïÌ¿yQ…£C‹$ÂeújüŸYÈ¥uYÿEêJñ]GÆÆà;»¯Æ:R(�îÕÕžWó˜¶i߯ñóÞ@��Áú×b³$™þ½¨�3¸CJ¸Œ:>RpÆ;¯$'CK¡)¬Œ;ý‹7Uü¢øSÊ×çž?O]Þ„Èû ù› Ì;2uêØ5C¾ì!W’µá‹“wðPÆ£¨Ÿ*ûÿ”�y’/ÁÅd’góXoFx´Öù:€Òû´åQ Œå³ øIz³éÿL ùÏÿöÿijøcKuA“jì¼ßéTGâ=UØD†}ãX¤ÅÜâÍbµS屯™‡ÑMa¬ítT^ãíìÓF�*qârÄl1änãÅD%%Wõ8ºÛaéôSÃ÷¡ÆjÕX"[Š]gÍNµ± O™ÿØÊ×HFÇ {R]ôt¹¿ìt_óÔéPÎØrÔò›çíÅ©„*e¸«ÔPw˜:=ìô«[cÞ-y(iÌDÚîQ(—»éˆ‘n?þ®tú§>Qû§Å äß“ðS÷n¿lNÛóum­þûŸÖöG_ŒæS·xÑ˜Ž»žJ{xTø\Ò #k ´M…�êý®Ií�¾Ô �žº$=[–nÔ½4s©DÌ£`‘?-çõwÔŽ¶ƒðØÃ^;äé›.mbQƒ õœn;0*7¼«òL±§Ì“oÛ#ÕNöþ ÁÙ6¶ÅWNôT:$–K‹�Åv:ùb ª:IÔ³ô¨¾ñ›äS±ÕC�ü´@ýõ-ü®Ç:áØõŽè©¦lAiÜCÅbÁ]¡jÙ'’´SÏÓÑÙ<˜TwÏvjú’ª‰:|×Sr—t x�ˆˆÆˆå¢vT¿^¨Ç‹:îÏúŽáSë®ïáÐBìl�4f¡xl8¢Òþ£½ì¨`¦0ͪʋ(ÎÞ6þÜ"ºÞ½ :šéb§ˆîË`á§Ç웹šMR?%tS8K7CÜñµ~�é­Uéluõp¾_Ú8b«“颞e�µf ó´[_ÄXlèé)Ù¡] ‡žk§c·(bîit|Itàµm¦WTó/ëÙ6›Ó©—KªÏQ×Jî—&9/b Ÿ0 6ÞItÁX`¹�¨9.J÷Çö|S顟ÿ_Nr„� ?Uµ…Û#]”_îÌ•e+gìÜ9Ï_$èØÛGÓ?v*íM¿N9n—ÇLKJÐZ6¶µÜ‹aÀmLa×.wöE…åyØñßB:Q[«R¦Ö‡Ã$ÿ\@Õa»Û½ÙÔàåvØ•½ííë9{{1„Pä�‹zª?l^¦ùvo/Z?Î7Åÿí3„LkëÇ?—Vþ×CBó¶µÑó¢ã ó3O'~ô:N|T»g·êA£†f¢«˜¯±±8�ËWë{ŽîúŲ$‰rc× h‹n©¶�Ì­½ß>ÚºÉÅÏŸj+õ|£öAã ao±JñÔòsœ³GÝ—C;ÛòÂÃb.Z ºÍ~Ûƒ_‹ÛâS¶u¼°ø\Wë½j Í[�ÜèÃÌž>×Õ�qZ÷y¬~'3u‡Sþ´Ö?˜Nu ¦¿-ãçÂ8%nœë]Æ6A¨~»«G¡Mû6EúbôKÓ¤ÙsOZ×CO¾^¢žŒZ°'°/A«¾— eø�{/®˜¦Hã�õ›ê!GÚ]Òaá*`ÏÛªî ó«‚zk…úg ¸bŠÛÚ‚ÞLÍ—IÛ:œ7’Œ·BH»øé3çE*Bjp¤{ÖÚ¡pÙ~¥Ómî]YÔ1A_$Õ‰/�'\Úd„Qµ Ú$Eí­_ „\¦f¬Œ;žf¸%""`:5x"AÑ3Ôx'2`÷ Ìe{»bÝÃXŠIIf\$!�)¨@�' Gç¢|ËÇNX¸ÏæDI‚°¯ã¤Aó›VõúL J3A”IÞÀ»ÖpF^¡Àw p=Ìv_ÀEY—:n¯A„”;Ü*±v3ý,•òßõ@Àù]âøˆ(Ú/”M|Ø�'¨ÐÑ‘|‰Üá—ãT²Œ¡© •†a$ª(.ÄÇR¬$á £©lEñ(§ �iÊìÉ Õÿ[�<éýõ¯ÕúóR/)£ÙæcÄÄÌvÓ.ÃN‚YSñ¤Ø³„¬ÊCÉÑ.Q*Õ®×cvÓóú±ìˆÓXnéþHµüK¨�q`8Ø]È7hôèá4¶‚"? žp™‘P${ü¡ªìs× £ÇV‡É‡ bE½†Ž› °P7Œ+FZõ¸Ç„¼ÔûpY{…¡�:²`í¨67¯çQFcN×&z¦�'Âs˜SJ.öÄ�TD@ž„âœôx¨ýUÚ‡|= çp5Âúia~£nF…ŠÄ²3nˆ}ÂTÑaLLo¤'f.O BvóØ}Ô!ýׇu…¶iÚôrÁÏòQäÖ(1QŸE®×R”ÅvMnŠ„bS“LÃJˆž�Ç€”;°¶�ÝMO-4�ªY-Fq?E2.];Ù'1V=Åö±ùâ^Ë`;#ìFél·Æ^Ú·G� ¨&ê+òU7ʈ'\·A¤ž¢ËÍó°Åxû¾¿ý&Üõɧc¡h)°­¸/ºd®Bƒ3 !‘¨ÇŽbP~G».vë‡=ìõi»ÏfOÌwJ@,󽵨r^ûl÷Œí ¿Wõ,¹7HúÐ-˜[ߢtš°tç“5` Ãé9¤ÊìªkÕÆ�·ÇÐ�¾z½Dc‹ô8ãh»Å”X!¡Ï¬\‹Ù�Ã]œ|â;ñJŸo¾?Z¶$.úR�˜ÏuP¦Þ�zvvp#vAŽg¿¨ñëWo%nI éhLçâúS "÷<ÑþÝÿ¡±=¯¿ïgŽHms5Ú<•ºL)Ÿ æCíÒ\:lÇHcºg“ éGé(gIŽƒŒ.�ö«ÆüÝaõžè5OXY¯Ïë2«tU>»¨K_Ø9µÚÕÓAŽžËŸ™Ë<‹ÕCqiú·‡øR|ùîm>ÿ?ô «çöÁ›=¿Ž à¤\ §˧¾x˜9ð…1/Q­P0iL±æA ²‰:ü�>7stKÇúÇéÚµ{4ì§õšì]uð¡±3º‹¹5Üäš¶ðÌ.n“X´ŽP1š9¯íø»ëRcI ƒÇ¿/l§¿¯‰¿M&ÑÖ¯êð�vrŽö:³½V;Ün1ö”Z´°Ð9‡êžÖ‰�s¤ëª¤�¤ª½@k�9KKpÑq@�yÃ-ÉÎ-h‚3µØÈÔb2�Ïm±9‘ãôÜ;»e×qH˰Q‹�»êéûV¶¼Á#'bt‹„¶³¿Oà,ª¯O�`ÿÇn©Ð Êôá^èˆ>>8bñHÖ%EÚ'Ða, Eþ•�mÌ´oÍžá)ØÑ;¨¦‡Ÿ"xáˆÁÒ]À&MÐ÷ú‹!Y+Ѩ;D}¼¨;ø%Eƒ¯sW…³)�ÖwêĤ¶ØŽ‡ž¬&õ–®*0ÛÚº{°%Å'…BPçýð]ù溾§�S&O¹Ù…¦l&Q\� òiüaf×>h¨ßÏïÉÞPä¤>.p_3U?­¼Ñaµ–û’§•_ Â],¦Õ&¥þ³ßíÞøsý[ú"'%‚�Î{U\Ï^‡y_ô:˜C¦©šw=oÚ< CôW¿W¡«±÷½�»nõÈZ~l1Ïlš*� ·ŠÑ—˜I_ <~»§mjGUu¯;+ï‚§ŽñíãsvzŒG56Þ²¼–ÅägqW·þãu~_ÝUOî fû&_ã§+GnÜmÞî¡�µï$¶ †–^Ã\ÇNIþë.ƒ^ˆýÛ¯ªîêáØN‡yÑ¦Ó #Ç$< ÜéI|Ðu9¶Gß-}¾¢$ /†ièÐ×Ç|¢Á²Óž³Ý4Oº‡¶çó£QC,Fè½ãÕè©úÀì�ÅpÆê‡ñMNUèñ#]´a›ÅJNp è4ì·¤‹ãýqÊí‘n¿Æqƒ‚ŶuØé½ìæ²é¼O=îý ‡h±ëzdS=¸n)vŸÓÎd3´ãï•TÞ”ÿ¦ð�4mÄXÏG}6�øK§SʘîJ¨«v,ðéYšâÇD}¤qõž{R(/µö–�CHï%-´ø \'ÉhŠÜ-—ᚢò¸fX¦{—2á¤Ê:­ÞƦ”»ÙµîxÅç�S{›ã3,?�v¸ñ�Þ4Ð{[ ¥°ø':yY:¨(‰&A j÷¤¨”£I {¿“õ@#;>­�mÄúžAÁ¥mƒùбJ<Ç—SlFIKܪPõÿ€ ;ÏE~޶Jb|4(DTzeB”lçoÀ%òdì_ÿä“A)GÌ‹^ªUB´Dç\Ÿó‡òõüQ¢P³æzܲEê¿•œø´–œ…$þOë±2œaäöpjw‘’Œûö“ÑË¿1Éw$ ׬°Bþ7óØÑ3¥1Å�¡g꟥ȇ”x½DGæpª—?ÒTûù:™жÑûPä-<ÐÂëwƒ5~ybÌÙu@´ÿ_„’œÊG½;ô#¢‰¶…úÆCŸ°eÊ�µÇ'’®2Ç�”\¾Ç"Ž|[òêÏÆ0ö+ *p@ àÀÏ¿œø_… vÇì¿@§”â;ëél—7ÂêæñáÚÕ:S]ÈìL¦±WÚ2ÅQ*Q¹øÇX¸Nò2GQ€©fÜ  ·UÉ+L*“>  -ë;:I†ª¹íæŸèß²5’~«"ò¢°™÷Š%eN âÙ³%Ò® lÌ?˜É§%ëû̽2y>O­‡N~üŠI- £üãP®U �ž£Ä?4L€Ðs.!€>rÓ×u¾�óE‚w¥jå7 bÛ½B„’ͬ86ÊšÕCENž\ ðW¤²ö•är2' ó+Ô·¬0pŽÝþ·ù¸.ˆW ïwFYêú'÷‡þÊD� Ê—wH,LÅÀßGêgïÒ`#ÑþSâ ¡À1]þÑ&�vh¤çI^<5Ë@ zZ�ù{‰2ŠÓ²rE}Õ´ËÅšyª÷†)hxÇõó\.á7VÒñÌCŠ÷íîî“N“áŠ>©·{®—&¤�{Ȱü­­¥îÿT�Ž?ºy¹·N»êÖ¶Å€z$BVŠàìÙ›æQOÀ%Å®û}iðWÃÇbÑðçÇÙ"þÇ?ó0Àýþ•KNø/rr¾XJʈz‚,…O>m±JpL“„<ìˆÃ|–Šž‚­§VÉçžoøñwÏ;¨3Ý€£$ѰTáʆ涉—)’€`2¶È…åŒßyoø©'Òá™ä �»ÂãTÎb-A‹™Âæ!e§»î×Ô ÝáÜ?›j¿þÕðÜ/GƒØ�tîØ·~‹§©’SË÷v‚÷îž«‹ÅÎSO Û1[›')­Ê[¦•îèˆÆ˜Ôfœ Ÿ÷�_çïòÝ®ÆãjŠuÁTÖ�–k[òPx—eÒ¥jlÔó„uÇùô;xaopØN�»S(mWüøsÞ§S­¬Év¶åÞ'ØyÑ¿é�1ªrlí0tÏLi§[­:Ÿx§‰a­60O‹Áá ¨"ì•òÀMßÿ2*.cþ'I>Ôs÷8-ú@ñ®ž±÷c/bŒø&ðv:»�NMÝr(z¬•ÆÿÇ9{�$+?K.ÍC™OJ˜ØÚãàçÆßk©#Æ{ô($uøtí×Ú’ÞOÜñ¢DBÙ-šK»þš9Hf�¯jçî�¨?¸²ìE²­fs9Ð\æ»N.™ŽÆ}ÞV¢¾I¥úuÖF;5ýò˜Ã›´¬Èë„xa›ã£±­Ðf „ÌÊ�ÍÕ#EÖ¦oyÛš^ÉA²¶~š6zTPUÛY]óønž¢¡-Ùc¬¾N\N‹ï¬žÞÏ¢ÁÀöe¥²3ºËBÃWOÃöhP‹zÍièHÀãþ4:Ù»G¥úëD¢OP.´Õe©N#WÞ;=iô ‹6kÃH:­ÚÆ¢«|»êëÅè¡.¢ž+Kê—]]Y†6�¿Åé}¢™öiUjì�ñä‰\¶póØÜµ£¦ª˜L3*Ã`-òÓ}ã�µ;$±ºªëó>е{p.{Í‹Æúݶè➤TWäècªšßv�­ég®OÔÖ¢ž‹4½bÝ»¿ô|hµîÄ¥æé©¿qµ…�gÉñ:lÓ¼”îÚÞ«{€`¥c²˜uËùgU¾˜ZfÏ|ú{Q\¶NÈ_±À‰ÑÑ& rç1w�©éÕõÒôÕãNªo-&XË}x>ŽêŠÀí™yÔ›â×I' ½áï§r*ß]¶6î8O ö1£An_ÞÕIê«ÙÚ¯�]ñÖX²R3ÂÅìÿµ•ûz4Î[¾Tc˜Crë»­= •p^€¼”%QY;𜀔ñÐÈz€FOéÎö£ÝÎývRðÚh{¿µþ¿,CœÜàâ­Cƒá»ÜdM‘„+µºc¿Ø r.ñ ¹ei4:ð=êiÔ;à÷ýþª4ü§ÚŸ«FQóaŽD¼ø¦zò#»œ[C W æ´Ý~ãâ€ù™øû´éïÊïé8Æ<‘EO‘_ï¡‚«“»'Ù³4 €ü9¦k.wbÃYÛ¼þ&ñ”î‡~Yt½ðÀÙM^z�'_(û‚ÐØÄ–¡þÒú.“˜§¯kùý…N2ýi£úM?T¸Øvz°Å´µñˆß“ùzknÊ‹Û÷Èé_Ò¤çcÃ÷ª±ÿóÖäî·Æîÿ§ÎK>É^Ÿ•ÈD’ôK3K¿EñÜâgUMñ‘¡lðÀâJ12%D©OtAÑpWæ®”©+Sr(3€HÿÕ¿,3veÉ ØÆ1DDZ?�:‘Þz^Û( mþy2õÅ?!t©ŸÎeʬ˜,t|„ ù:-ÇÝ^¤óX ?÷þJb™¸[¦=´÷¾C/ä ý¹Œøù" Ù`CaqGñœëy@~ÆËp»âÊŸzë¦jà <(‘�&Xgÿt¹Ïø¢«]Ç„0¹�£®(Ù¯£çîîw5ã›ò)�á9öý ù‡ÕBÉXiªDo¤Ë¹×íùáy†“Àô÷é9OÊ ,¡N™áŽíwœ º¯*Ë5¬·£ÓŠÈ¤(òÍñ¤BÎç¬0‡#±j¤‚nÙx@±Æ™Ó¿®÷ŸâÊóG’‘îxÏ=<i´'ÀÓ<)ž1hƒÌs0ȘÖ=‡ÎgFs~-j]<Ó15¿G,P7˜C-˜lu6ðÚ%âÕ½ʘ†“ŽYB‘÷ÆSã�\aáD({�?8Ïí=G�š¡9x”¢úÉë„ö_RyÉzæ9 ÂxÌgZš¾°Óô&ýyÊ· (g;z#qOæi{6^G®�dåIf·!ÐÆWŽ>½ ï[´§8Üdz«"$ïŸÖ%5 xýÊ4¾“æZ=sð)êQ*Q IÔ=?ūÖPÏ;C7…Ïñýý#Kù |.©L“{¶Ò•uý<À?Ÿr_8ðÀrgàæƒ@™ «8€µAüÑ~qÁ!˜I�r\Å+s¯/X ²k«Çprzäñ�³g×Hù äëì}6MÎÄI˜}Üï1Á;CQøU:nò´"¢¸øG4JDƹ¶ÿ œî9˜“.i4n Ó�?Œû9‘[!FÓ–½«1r {ÞlqÑ¿~Ã÷ò´Ç’\Sè‚ê§Š)ë˜ÁFù—©>ꋹ'±ë¬žBŠJÝgí`°GS}XµƒŸçíò?ËXƒ®PÈmÖz .óxÿªÜ ¯æXéªõ̹E�@ÚÔ³`½DP#eÕ5Ñ»zŠlºWjÇy¥Îï�PÏ 1øê¡µí)_b¤­í$Ë/=õñ®…fÈökS¼ëc¤Tà:㪶cÛ5•VÈÖÀ=*/‹Ah;bÄ#‡«ñ9kÿúC§wÛÇÇù|ѵc‹a¶ë©J‹+„îBq”ß¿>œÏÿÔ.k£Gï<+«ÝjMHÄ;•Óåï ßÃcä€ñe±ºòq�]IæX€C}“g絯ˆ[ÿè ¾n5ñMëÿl1÷ßíX�å¢Ý ‹’¾ò½xù3P=ïŠ÷ç_úüƒÂ¤gP mÌ<øèSùè?o­­WU¶_¿K|(¿)-;�(Œ3,Ø_ÿK£êí/7†'&«�MùÊNM6¥tmµh¹®ˆ¿1L|ïÍ\4öä~ ïŽQ­Ý+ÂX=vjØ*„»v^ëÒý™!X|µÅÙ«6ð¶Eó¬[=lži9F�ñ²ƒhÅמáØÂ<øe×SWõTbOCªJ¢Çbñe�ŠGcܵ™§ÊjžUoÒ%UBAµ¼ͳ›[è©æ·Óº×¶eÏGŒÀüyú:=OÜùDˆÝ×:°¶Ö=¸™Þ›Gã^W`0ð>·àÔŸyGã¨Eº|ìl¯zÓ\¤(�ÈiTwŠþUùèàÌ 혮Kv1…‘IY[{̯^¢Ð[?òwïe��é$—‰«ËŒ�¼ÅgW»w5~±cݸn‡Ù¸ì~à -‡žy§Yµ WÍÓ´Ù;v�GÛbÂZŒD¡DïÄ \Oõ·×ßÎÍã}ô„>¯¥ñCcåiHK 1_¤Åž=òß“ÜÚ— F/ÁåG´�:0Î1ƒrâWBi靯ÂåMà <6ŒŽ×nկŊÙéæ o±ˆŸ:¬>"��¼<¦žÌÇb)yÒBË£~_w¢rA�õâ¾-xÖ]ÿ.Û>-O4|?I=Fjz®|kµÙé‰×ÅkC—ä^“(ÁÍÓÆ<¶2›x §s Û¥�«¬ŸéM Ãc"â:µ'YlÉ=1¾¡Ï~¢æ7ó¡zfQóºi,j>¾�¾ÒøTº§w|[óTŒXÅÇ>ï“ÙÚ5fØ*È¿©‡L†dTQ¬§ÿ^î�Oï9faÄêŒ=uZ÷»êAû’bï¿.‡Hë|Á†;WmçC @ĘPo•¤ºyU@¼é‡—K,h+Æå®‡ö\�ýèãò=º*0Ç:ʘXÝÎ’ëh†z×%#|ÑòÇõCÂ^•6Ž‚i ‹ëXàðp=ñ°bzoÏ­¥×òÕàÝ/µ ÍÍ}_†=ÒE?i§l‹{„ïÚžg!‰¥Ó’Íc^åðøï®|û¹éb˜}ù¥ ¹©çIƒËí3ÝÊoªÛÛÝC¦®KëÇæXÌ¡I­=‡0ÖßÊ+{k^ÓO(ßZ—äq‰¦õ[0ÏaÖÚܬŸíF>¶Cu¿‚|×§§ãnͲ½ßt⢠ó´7Cç7ÏÆóý �hÇW=ÐQ�Vúá“…8ö íPbúÐã†ï6žè$tr¶çÆ•ÑN})übOñ1mwWõ¾(ÏüG\”ßHíRË¿çþÒaèíSáé<íC¿»=æ\wæ³#fô´¤^…öV´ ¯ÍOoœô°#&õ\”æÙm‡[W ÆîñCÇ·‡Éo«z ð,9à™ xšQ !~Nߪ,w�íñ%jË• Ø;¥|ªŒÂXQ�¬¸; PNô�`kàVvÊt¨ß1Gõ2’Å>ådB  KÅ]Q‘ÓÍß§%u�¨[v=® w¸TñE½'”…ö0åϳš@X½øN•Þ”<×vµ Ÿl jÞdœp¢€SÄYð.·ÝFz^E©¦�]猵ˆ©ó‚D$T‰f&øõŒæ|ÝKÎ0‰*'ôħŸ÷Q¦¢õ¯É,z—&j—×ö€ø”c |~ÿ†6ËŒ‚š:?ãªÖ+ų¢.l‹�F\X)*ËCéÞþÂ3¨Çð¡éJD^àCìAYWÊÿ4 Ã…HÌ:å™ä•œêx¦&)|n;ÐóEY´7hkžðá C³}6}LÿBâ‚O_ÈD÷Ö´I¼Ç� šeE* Ôíª`¶À Qïf8ªA‡nîÝßm uS7ÉýŒrj9Ǹ[¸zJ9I¥žå�?' Ò(ÃÚçðÂpßø‡jiÉCT{–—sÆÊÆòÏÚú¿:¡F£ e{ û¹†ó¬Ïôù,�2ûçÿ÷ÿmêøfz­‡äö«Ý~~M K…E®·-¸¿´À/Í4,y�HÙY?'µ-Pµáû‡žFyS4Ù ÕvÜ/›ÕP¼óæ«'Ýæ0A… �aÆԌԽáux$Êç›OÎbö±û¦{ëÍë'ŠqÎvªÃ'_ZkNOÍã~³cu)vwoG3ög–/Íü+-­-êa¹ß#µ”/÷5/E’×{â¨}o;÷쟫a±S©yéý~6ÌêR†Ågn ÛéNb»˜Pû�5ˆÖéÚGqè*ôôèPÏ´�T�m)ðJÚþ:Y«a§ÀX2óÛ¹3¤ž1Rm%j=XŽ?4Æç]Oµ¾¨ç±Õa± ¿ôÔZÐG'V‹zš£9Ì>”Î?�îòh[Õëíe2O~C4*².»Þ¸ z3Ô\âȪ1Ûø¡_�æD>˜µX ë�>TÎÌsÖô¨m)®mkÜuª¨ÞÔ€Wð4³ÉƒîØšäGãCó¨�ùé‡â:û+üTYÅïa§Ä+¯Ú�ÑêÄ<Í-¸‡ 06;�®õ œ?S‚øâqQ:>÷ˆõx狹bHÔó:õ“b7¢`ÏÖ˜§ Jo%NtÝùivÑDlâcž—î¸P—ÃëŒÕË�ÎÇïBqÒa±§.äú) »«§V:­�UOÈV´{n:O:ŠâÍ!s³�ö!Ï.&²‹ç*z¥ãƒ¢€ü×[±kiAè¾Ù³m9g‡Ø^äzÐ'‡'›Òq㲞ÆbíµS»Í#°Ç²K±î6�E¸neûyQᣟ`¼å‡Á–f=ˆ$Úƒ*-Óg±³Þ�`z64kU«ý(ù{—Ëò!GVãÇ3t>0ÊW/“vRÏ}ÍgÁJ“÷%ž´Óú}O1‹d¦Ú„†öáõ0ܶætÆ=“Ï£r¼Áé³-¿n úæ/ù·SEÍ�K–h=ã„‹ö냟åR8•zUè uÍžÌsö8_]U?Ý“ËÌä Êk4¹ì ?EÞèsÝÃ}v(έò´Œ#ÿr^E¯½¸©GÉB#i»4�¢ƒ^6¶}Â@ÚÍ Ü¤¡‘„q�ò•êãAh̲†9ǹ¥ÅI¿^:/¬¸yU«Àö¥–,®ïN^^’½RXGhäãú¡žXæY´­Íž®Ú7õíºJÍÿb$Kã:&™ÇŽw_T¯ìOUl|á‹£L¾¹î§ÙãîºÈl1îþ4_áT`‰ �~Ú÷Ôáæû¬ãÑTÑN(Ó…S¨ËÂÍ€½â"ñ(òm6¥ÑE ÇB·PÛ¾° âüNz[Е"/PoJÇ¥ÐÝ�ùù ±Ýá[«Ý )8îªß.—gúržò4@GÂe±’>„9ÍÞnúŽtØáS%¸¿ÝÐ_WñéÅÙný5ϵ?x¶DÑÔumÈliœ1ã'ÛŸ�’kÖœv˜»|ZÊþý¯ÒEû÷[‹ùüy�ÛtÙ–=lv°§/&žÞß7Ô}QÆp³Ã®Íý²›=8sˆþ)€�È+él[¤Ôxu$ñX€Ê“¤{|Á•æ�=Èy�›»ÕHÚC\ñ•åÃÎ Î ÿ,{º'ŒB@í³P-ÏŽÎ( ù‰Ð(ÃMqöösÂ_*�*ã�Bqw „=ÆèCeÚ¯™P�dÚ]0m§Ó¸ðŸÉ ' =®cÃC(â*ca%¦ øzÃhPu–áÄËWØ¿tìeíÆE;‘Àã©»Xg2%V‡ÑÕ2i=ý ŠâC…RMi åÁžòÕÀœï%„ÒÆ—U�˼pó“Ô™°×�/«6<Däán‘á=uþz:ê§T¿ ˜«ž¬¹.ç×ùWм ¨Ð®9Š<^yÿÐÈïðÅ´2ûd´˜ÓÄåJÁ3fš„>Åߟ¦d3Þƒ##V6Èf�@ƒ¦êø½*gõ×™ifÿÇšGÏä"êü }úS=”#=ç,&/^ÛAHò¤Þ‘‘…pŠ4bóYj^«…ûVA0�o%™Ó뤷u�Ãøè_=טƒ Щƭ~šÕò�IŠûÔ\¦Wøy²j¢ÍN<ðfeB¯}àÞ†4U¯ÿZË+½ð²Õº$«­Ÿjæü,|B0Mñ÷T"2Ó¶Þ§œŸËPç«drà_á’è½RÓïu^ÄÏgJSó¨.b’Ãx~NøúG@¡™W¡$½‰u?i9¡Ä Õòo:“Îfv¥O¿CG2��šá`ðá0‰§:0Î3dлÈ\Ôæ?ü¤~.ÊÌúÕëQÆÏútⳡv¿HÖ…:Fü•ö®Dó ™#oyKÆÚ ²Uúù¡»ôw&÷Êó2“è|D3¼‚áÞ¨fùÃT»t}’§Fðë-†/“¼ñŽß1™óË´@O5§¿¨�Œ_k]3S¹ïXMÔVÞµ(’ëöÿþߤMò?›`|ªGØW‹-ÇÓÓLÿ¹v,“'ÐYþÑNßåëuŽ ·Ó¢žbûã#”ó˜szZÉŸölý,¸‹Æ^Ð-µã´ÝóÕìT˜_Ú¾?¶ÇqU†N1µáæqÄz?ºÇ&<æxþw�ÁöŸ×öý‰›&¦®T¹—?%VOzèiˆ÷�ºZ³äž•ýtÏð^ÖÐM¼«kÈõÚ`ééĬ’¿_õTÜ(L˜'‘1þPúÝîíÙqší±côq£ì‘v”8N¹=Ò~ÿL«)Iº©'Ž´Sqéÿ¥§ýÞ> 753h}qÔû[éü×/'uûÑ�E1cÐñϸy÷‚†;<ÜN!S¾bônc¢‘£0„¾€»z*òr‰"´<Úý~møZЕïþò "÷€²þ™´Æt8‚ âxä¿).WéŽZÜc-ÙŽ•z^Ý[Lú0~WeÛšÐÉñRÈ;V«É:ÖM rŽdâ¹&x¶%“=-Œ7¯Êì­÷—žªù�¿µì˨ÄxšÃcrµÓ;¹¬ï¤·ÉÛk�?Þ/¦à@ÙZP¤3&áÉ0úüS='¿’¾Z}+«ÃÁzô´EV=!—•)3�ò«zê=ÀC® Ù·|Ý•O/ÔôŠyö‚~<ÓUñ{DZÙV¢ä§ç&Æ…VcyÞõÔyÝÑSeÝõÖ´æÀ÷ˆµWåýCùSõ¤Ÿj«ûÞ’m.É£íÚbœñ?”Î� ¼D¯ì¦yÖú†ÆziåÍ#›t'Xô”iÑØ&\:ä²²#ŽÊTNºæ�ZLíŠÉ¿§G“ö&g¯Kr·€Ho̾ÙC‹h±JyÔÉ€M8*ñð.É#+¾[{&«Ò‡b»²{D[Ì•¸ Ž «“ÙyÍžÂhƒ–¹rYè�mR�Ì“¯G"*ÍÖÑMö¥ÂÎe5¼-Å"b; Ï<-&§Ë¶„Ç;õT®If§ŒÚ騕GuhHÍLs^ ÉbÒéŽùåŒ`+ØÕÚ×%ø¥ÉËæÇ6À«4{°/ÃN!HÝ¿¶ùh§ ¿1m8M£Òqâ¼XÝ ÷¡1•Vû‚¢ƒ ø�¹ƒ=íæ½x̶ôúÌÿݶ]c–å }Rð*¦Õ´–˜tO k-~z–Q %ݼíôhà£lçŸ0“?.æÈßæ—{ÎsèððˆzeS˜å"¡®Ý,-ÍÕé Y|¶KÍ’™ßõ˜yØ)¿lŸVG8f2gEcV�Á¶¤óée±Øy [ý×¾x¡óT\qõa1§EÇåî˜gÃü›òºÅpUºnjç.)†k—ÿ¤ýu¬iSaóœ³EÁ‡JƧzämR ðø{ZÒ|i¬ØUõ—Ÿºlã6%¨¡·P9Ø#JÏwýÒmQWÀ‹.ÖݹqöýÒè÷ë!n+$˜f=¯³—æi¨ºcÿR;�ú¼uÁöîªNÇ,ôõ9Ó°¯kÍõÐÚR,Ûõ³�϶»¨ü·hekuÊ,ù¬›dhæ³.îôî¡Uõ­ÚÊÇÚ<º×m¡°} ÆôG‡—ŸÅ°¹[\>CCŸòç^­æ/ýb õf…5U€=v¬yº½y6v”ÞÅëµ]§Kî ¼SZ*SùÏÔ˜yÎ!ÍqØît¢÷Óem\rxr° ó{�ͽÿµ6;ögú[ÿñi§…ÈÞk³¥ß[Q~«’œ…Û�M½!LA¤OpSšâáq q÷AÑÀü&0PLhš„^dx‚R™‚6#ò‰µ„q`ïò-D¥1¡H[A$�æí™`dà܆L£Te¨Êêþþ™‡5ÏóqvÔ˜ú®‚´w\ LHÊ|�m&Öºz<CÊ•™b½n1RX8ж&†9+2XóGœ¥¿3Ì’Á§l䥳.vi7ý\Ò¢¿³Ý Ía“cӗ¾9ÅøÐfîôñzƒ#÷ÝLÑ_š0ÕÆ7Uîˆ Ð†µ®X@:¯ÃõUº˜UÃŽt^P÷ ïž¦Î÷ÞY\Éóx«•|u¼ïè ŠÒÿºBžYqz�$Àá' •¹¢gX4Âëg‰ßBJÓ…d– ߃ìT uzÏsHBƒq£²þ— q Çé¯�¥…;ÿ&ð¯ñàþó¢ï¢NŸåXzÜP ò.`h�³†§ �Sæk»†E¬#ÒE¿LLè�Þªîí/"‚4«k®""åÐ>Uå±kKPv1ÛÖ7•HôH+¼%[ØŒáÖ,Þ¾™j;j¶Ïo‚â{RƒŒ†*쩃H¾•ù!«Þ!ñ¤ì´Ä~[j@]"~(ÎÿÀŸ2ˆêܶ!OR µÕ1‘‰$ˆŸÐkÞšë�Aýzm‚��÷ýÅ ]Ó˜u†G±ËÃØ\&’½�í¿V}fæ?æ…§uúÕĆظ“`üŸ@û Ô�x¡Î²ú›üð@÷6 (Ʊc–GA^hRŒ{;m"FØ¦ÐÆ€¸€­.Ç¿pËñÛ5†DhùÐnD•¹�¤º•ïwÿ§Âa±SùÁ¨ˆ6ßk|Áu½�xdD3)gG»ÿWy" �[3HèÉ»Ê��˜¨´Ï’m Íó„á ¢ƒö?5Å«Œ #4â$À„ü^7L�î¿O‡½QÕô¢û¡÷Ó3p˜ßX ¤Û§e‘½ÚT1~EɃ wþÍ0ÿHÓ »¸Må¯ÿöÍðÑ|8@¼0{Ýǖ׉×ÊÝf:o¡ƒÓÉÐ�¼]PyŽ”9Ÿõ<íÝåBÍðmaì·KSÀ¬Jÿ××Ù®åë·v˜R%-õc]ÇõcéÌù¡ÇDnª84V™‡¶Y­–Ûš‚úÇi×'|Ûaº¬%ù7`wÔù×_ç³Æg‡¯šãGÛrÚ-&×¶ÇA¢ÇŒRÏÔûèau&óè±SNõôNÂi[#ËN¨F=EGØÎÊ ®Nví$_¿íB Òƒ7Ô£ˆR°9==\øEö›®‡NXî[ª'r•/†Î¶ÐLO,:=T_”.Q“÷|¾eßôDUѼ€¼ªËóZåÁcÒ™çŒÀÏêlÿÅwÀ.ª¡¹6ä–{kúÜO�‚f™0�² N=!�îÿ«¡á§æ6Oºv {‚ä`ópAÏ�`ø=9m½íê¡|x8’¹á¡‘–ŽÀWº°ÆÎ”M=)ýÔ]«0zž<ƒ7ÀÚî%yd^ÕƒtÂn½ûÕ}¨Gó¢±"Í´§ã!_-¬Â)ÇúÎ�7UOäÀ?T—=ÇЇÅlÁSž�læÙRí¬ãÀ\h@7Hl²Øç-¦“ꣽÇZ|kp· O�®Ç¥zêÈb_´~Ýug½³‰C—RÕþâ0Kêyäúnƒ·½Í¬16ÏìSþÞqÃæH×iãim=ÎåMJõ©zžtÎk ?aOÖ L~*ñ$_ñNµ¯¤úMïÞØWUÈ_ÞmCô�ÑÁŽ�¤˜ùؼ>Õ²dõÝaÃ0uU:lÊ_Ë Ù–±J½Õ‹È<' ÿ"Ý£®áÀú¼M:öKŒ»˜'ˆÊñŸ¥ôXTàÙ[Ò½ ’9о0®~ÁtYFßæ˜Žš.ÊßYžòE>m±£`ßÏžVOŽÅ<ýôÔk‹yU<üôHÜ袹H´X«­’“_ŠaS@«¸/7 bë§�ìhSšC¿M_Š�n”ºô=R�UË¿só`kŽ�rzVå˜|Çóí¢ž‘�>Øñ'°Ãwõi9úw”éD,ø¹,¥C'¦‡ïHWn_È}íítô Ø»·]õÙ…M¯«¾Vê›ùfv=ät{ø¥ˆ¿ÄhÓ]?XðÅ¡”Nž*§7‹1«åK+ó©O¶}hîÉwvúðõ—7=u½ïΧG¿Ö¦7~YìKý,ËÍãt&}-™¨9íÖûnzXåLÔ“ji|q„’?èÿ[>þ´Pà¡ÏÚiÛ>þOúõKéû_t¾øµr Ïï[ëÿ?ŸÍ‡o³ù â{Y´7n­Ü;òø½^̹†'LWÕ#_J÷¥"SbϰX‡ã#¡qø«zrZ@¦>ÍŽßušá¬ÜÆÝëCéRh®§*93—þc,iÌ Žð=b¶™ �e¹-‘ï%vWÝåþšßŽ¿´Ÿ¿´?‘þ(ÿèÙYi<žÀµJ|ï�·‹gª6y,Ûb„梭üÒò´ãÍtYEKÙ˜;°õD‘£ˆâè%�ò¤Z±vî#ã*x�;/ ™T�¶àŸ�“èÙ ¡,Çô, (åÞ¬Þyé##°°C$ÀU@S¥’ô\xÕŽ�j~ôÊBí;¿Pw kˆáÍMg|FWp}¸.¹×Ÿ©>öZËņŸ“Fà—Áû�¡]†“ÐŒÐ9·ß  w¸ð1•ÜÍ]p3‹Š$z.l«>S¹to@Ñ_”W(ƒu¶¢˜†¸Fê ØÇ©ÉŠ,:Öê’Xák®Nf_:éû ±·C+ÌÖçG ÔzX`|†#J €‘âñÊÏÝ@5Nû£ëÛ.ËÀ+/''2ЉÓMŒ«ÉS`CMÙ–P…üÌPPFÖS½�Š2Ý*$ŸÁDÅð6ßÉøûöâ–+p1>útLC-YÿUö‚Ú¡`LØ2öóÐYÓÉ@7M<�`c¢´ø÷³ÄÏ‘,_Éó2�9ȿ݈¾{]éúÊíÃù·þ-û¸ÓNÞèûP=h¯“ÙAµvDOØÔüÒ³aÝó7¨�;½ÊHeßxâ $y¡9Ùpœá:›ÿ>0á’0’ü¬ £Fs4–y/WÖÃø?g. Gù0’T Æ¡N&¸úß+U…ãizžÇ”hÇÚS½îÐó‹8 Õ·Zžû¨;b™9{HÏAxN©4+NQ퀽⿜°2TÒ!–Œ¿ã]_ ��OÜKNéUö¹ ½h¡P‹*ϱ±�;ýòØ(Ü©€ è¥jN—qnS~˜«³‚ÐÀŠYüE)Ì9‡ÝŸòWÞSnÐóÝnnA–%¼®hnòæÏú¶jáô+¦g)ð—„!€· n‚OoœïÓP¿ qؽ>‰åàñs''þÆ·#rO?}fvf”kÌý.•£ÄÅß*/®›<Ó¨•çj5ÿ÷ú}>úN¤¤=NAü$øJÑ39¦>ùúïÿ{Óû5r„-@Ùóí]× ?ö:V"Û©tû§ž²xOªv1Õ%hS�@ƺõ}Ǻ�úx\. �éÄ'«…vßÖGtñO‹Æèib}/¿žf³S+—ÿlžKò;í¸GíÐ7æ/é¹mYê¦}Fv²µÝ ·¡óáý°#§ÊOóÛm‡�†…»¡�Ç;QŽ3ƒ£±ä*�q7œÚWËj¬¤ã–»‘¿š§‹|Þ{ÝÇÅC£ÓØNëž"*-ö#ÂÞ츒~x¾ÍÏ• ¾¿\Ûý¦§Bûtæ.‹½c1 ·H1.v|�VóÐ!Šîöýy!ýö`½6JÝ)£ÒWå€÷ÌD4Ôs>5=¶˜g^j‡þð‡b|›I—¦G "ež˜²ùf¥�Oo”ä¢1?-vÙ^x.Âö �“¾2ÇÏå?�2`á³÷‘bõV9“ûFqœ¡.ªOàoX§§ß™Ñ<¯êAzï†��)3°?ÑÓE2ß‘•Ð`‘uð„Ë oÒhèÇlºg…ò«Å.³SsWð¸xºˆ9ZT~ùØÂÍ›rÇ=Íõ8Uîi{M±ØqƒkïÃó‹ù'#ROƒß•϶-àÕårï°¡ñÓxÍÞSP4GL©³›’‡ËaWOZ_X�K0àM¿ßÚ3¾˜bÓã»Ú•%{@«'Ìéñzn­êi‘Ê×Ç>~› 7:-ãqOpXƒnåSÑÙä‘›'¸Mh‘b„Æ.OuŠbTxYzñyâ®Ïƒ~%ÊÇ ®*ÇÛc eÏÓ½‹�[hœ b[ˆÂ֬ͮÓDïNñ×2¼7^Ü¢XýÞâ®A몄Ã\Tñj¹í”#¦µrÙ€�¾Ë±îRû¯�µSz÷øÙР÷¨wf¤W_m¿l&ÿ†zCÀbWmÒÏ<Ár¨6ññ¼¾|Øï®0O5Dð¡F0©`·y.ji]T¯Œc±ˆW³iæYkuí:œ\Õsi}9vÓ«v†:gååðlxá0G³\¶ÖæuÕvßËSi¥ŸŽžðÏùêâ{¹rE‚ª¨ÝÜb´ «W‡]h±ì÷ðEÉ1¿Ô÷_í~Ý[=ûÂÏ#vÜiWLï©áãä/>C?ŸúËOSoð\6W­W1YÃiê˺�¨ÃéåQ°½d:ièiêÓ �·9Ü•3@§/Úþ­¯l²Ìæ÷{s‰<Ï.`o4ú¹ÖÄ V2ŸÂnËJŸö\Ç [ŠQhéð|m}¸œõþ£3 gnvŠöuÑ(�›Å²mˆïë{ã v¸–‹ýùI—G[¿Ø®�>›D{ ®!(~šúQ \µ¿îË:èì^ó¢Ô'_xs-Oý4@_:îסů¡ì¹ËB²”paøHªŒƒ_k˜áeé€AU j|^wå¿‘Þ«¶/�¢#‰LdýÕÝ—½…í%<Ækè(àâŸP�n–uÑ>¼Ë˜(zuœƒ‡ s\ÏUÕ­s’>Ö¶T$ EÓVÞE׿aÀ˜�Ülpå;|°XαÊF½a/8‰)&rZäfì겦»¶ˆÓs7šBmÆO�G�Šceëæè©ë“E�ÿÈQT~ê’¤ôHOIYÆú6§ªÛ�K£7�â�¢f‚ ÆŽÙûÒw‚@ÍA�³Ã&ÐÓº! Sb?"ÎsÇŸ3¯å¢ˆþ:]Å3Ú®•±H®¤È¡Y{_õ).þu�žìüy?ûI×DÙ“×wÔ’îtðWˆž½J2^Ê;¼•Ù,ÐÊúÓË™aî^hò^’Ö@�Î0Pþ£×B“Ì|%¨¼J­Z'îúј̤©oÄQ€ç~T®ä³Iu+Ó늻 ˜°¥V}�î_vgìsyVˆçe¥‹ÍB ïqîw©ßJ ÿ2@Â?~NLÏÇ€xfÔŒúªè#y�Gž/Ñ$ü»ÉYwxHo‘ïeb~+‹µ©\<œÞå�€:åô;Ôã¦*c)Š“úg÷Î1Ò‡ M”­ªúàÿ-šÔ£ƒQw6Õ…M„ó ñÿˆj¯¦úÚ=t¹ü_¼ýë’+»Ž&.)"Ö9™5fõþïÔ?¦»²Ìæ!Úl2Ï^º8:ÜùüÒ¥X»«›{Ç’äN‚ ˆ›“p0ä¿Î³?+ø.éù³t3µ J·,�ÛJ�¦‡EŽ}¿‘ÒA�Ÿ9Ë83’J0­Ô0&@iÅÑÍ•«ª^’QÕgv|±áZ× L©¾Ù$2TJÕ›>÷þíådèó’D·�’Ƶ“r¥ßAGm&Ùþg>zf[É%S%VçJd#ËDû—¹“]YŽ�AUÈ6Yü,~æÍcª–†|±ß=²ÿ!ÿ2p(ñ—ÉQÿ ˜ˆ˜ý¤^–ÿîT¦ƒ”͸PI;(]ežUÉSùg^µÂõü,¤EÒcqORCÕ.ÿ¿Ñõ¥_ÿóæm%�´kKà}µqÅ©·¿p¬ËçxU‚íô`³kQ†m'¼åÊÑ8­p Åû{ÇÆá /YŸï2u&[l3¾WœÎhõtÆÏ.òVn™» ÕÙÙQº–ü"æ’aô±NY|Œ…'Zl­Éòuf*\!•Á}J4Ÿfɘxê~óÞàcïs½~51~{?ì“=föÕ„Ô�–yƈˆ¸Vpù!#Ó ”>ßÚ}?Mv˜—¬|ÖŠ�QäÕNû^ó"±Há›7ÈÍu¹ë§Br.™Áa,?÷*~L×[˱َϳ¢De?-j‡¤<¹Ÿµ3"T˜Fç¦yNàÙÇîî¼!òbåÓ¸ãŸé´3L–ïl¸Ø´õû:ùÁóÈ~•!7£^íí„\œ×rY^ÙÏýìõJ„Ⲥº}áõÎà‹û)MçOJïÛù¿}ßñ½Ôw ' {®ÀšÛïÇ»žCóïê…w$+ iÄÒ^æDrþE䪞f¹á¤Û×µá­'?øœúp¹±H²~×:É p§Û™sP±™>,¸=t»ËÎ¥¤«D�g¡9!2Åsx™ªÔW½,ƒŸÒ÷gŒ`H¥Øä}-öe�Øèµ¶d›íða%¯}y\[›åL2JãH üÏŠW´'�Ȧ¤6#·zäÉÇðµ�ªóþ–ï}J�3iµ,Ü¡ÏÁS8„ÑÕiœ~ûÐ5Ôáì'½uPtÓÑ�{Õ_IVjIþ­ë·û»¥‰<„½*—Æž+™¥¾Hÿ•nÿ �Ô�E*;C_àê¡õñ�¡[Ë]ÊyÁ¶rG.÷Å#%QÇN~}c>"å­ó¿Íõ‰iã„-a�˜�Nä|Ûü¥­“åÌNˆ ¹/#J´fs*õ—„™B=l™å^d‰ž+†>’ f¼}>Wí¯*ë!çˆpäßv÷ŽÓ˜D¤«G !Âìrotý¯÷F·öø¦dŒHGýÑý±Õ¿ÞÀäª-Âî²6¿Â#eO‘‹3�IÉìt>ð›<’‘/w~àSà­Ïï¡Ä{ä£j–]¢ZðJÏI"]r,èr{4û¿çð§óÆÿÍo9y$¸‡V €Çgãõvgwõfù™ô„ǕǥÝsÙ\¿>Ž4øöÔ6‘Ï=×h5Œ­CÏ¥·^t€µ•Pßõhªùº§˜_±>òv‚ÿ…ûg<\­Eð*Nß"õ®OÞ1°/?85*X¸ÁN}÷Ó X·:!$øó[ÑmõßïÈ -’S�\ÀƒWkrz½°Œ"··Š‡Éìb1J<Ò±Ë�%¾n}V>fó·À@ç8~‘a®=B)®Yù®2ðt7f„JÞx¨õù‡¥Îc€©˜É°ôÏÍf¸vM6ÂJ}Oà‹ä‡‘³Ò½Œ„ê¤ï–éŠ(´fÁ“*JŸ°ãZaþ N¥;(CéZ3;Ä:Öòaª${¾�†i/ÝYJ÷t(üi,š.ñ+Éó×�5ÍéQòÍÀ)·„öœ†1Óatпõ�AŽâdÖH2-#ÇøüH{;£z&yq¾�q*–À¥ %‘Ó$ ¬lŽ¦Ì”É´—r×iÒÇ�ŹJ:I2ßÊ ßÞŽð:[+-UŸâ™�+OJ×Cjc‹'Ò&ì­(>“ü13êÀÑ„í¹+Ë•mÐ{î<7 Õ]¼™ü[Ò_J7U\`dœ3>ÃìEy›ÚXç«5±çp¸áÀ0E‡Îl’Lš=ƒs(ÁÏ sþÌÈŠÈ3ž䔤=ݳc™á:É~—Y4{1¼ó'’W¦[�ì“HîVæc�ï(�Êú¥á®“ÅK=‚:pz„F�µGWÚïyz A�p=ž�­ð9º,3}âÉdUãh/Y$O'äP`g(OïÔ¿)0&ôá†O-Sš2nѬ^´zif´Aô¢,=|é—îb~ëÇ…ÙtP¶^á‡z�§Ô&UÿNéæîõáQÇ6ƃΈ–† šdùŸY» ©lª©�¤N�ìë �H÷[ˆ³‘Öi|‰§Õš�oû›#x£$6É:NîMŒýXùŠ(ÿÅ0fI;Sš#º$‡Eä'~Yñ½Ìxf²˜sÎx/û¸¢ø&¡¢ÉNºcÕN 8¥FÁ÷z–®ø›Eä:¯™Tߥϡ†> ù°ŽW/?¿I§¥çÖªXLžs$??¤Ëé¾Mõ�†ºM×| n×Ós§e *aÿ;g°ÿo‡èëÀS‚ºÍk’+8ÕÏ%¹!BÄ“…iµô¥*ÃoÿÂvžE‰ëäÁ�ÏŸtÕŒ(?“ÿ|¿·Óè¯ËJ—�®—ŽŠ­á¸þ`E¯YÆÍr»ÄR\ÁŸ%zí–Mì¿%¼´·gxzÀ©­$†-êã:`PKÌÒ�n€Ûå-iÃýú‘êÄ„­6:[‰S*sga(BéÑçVVœî¹ ²é„S…Í_¢ÇäN%>8µ5ˆÁm¿OXá½iWºZP¤êÕ$øLS7¾#IbKn-† ?0îOŒûR–€íÓ 3î3\µŒac:œFç¶Ñ}ü7écŠ\hß×Ï‹ ¯¡ZÜýã ?Þ�(ÉÊ¡ÏÉ.¸ÚiÀ»Š}±[CHªPSWÊ~ßs5›´\¾Úµoú²B�Å·/ä,º´Üiòþ»ý¾ÿã ÏN“Î §e>rˆGbí }†Óø–9¼d•ØÇcˆÛðÁVøi-ó�mx|oùííË’a²ó[ûãÖò8 ·Vl¡ßní~lÙ.iø¾ÚB–}ô]¶�¤žSñÔø{£oÚÕž$��‚Àß8OŠÁ)ÌsŽ!ž"¸ïÈ.ñõH¼�êF?:è¬àaÏaê;jÁTIbz$Ôïvj¶]ÞÚ4¿Ã¨}®É�;Mýx]ER ½!2êí ýµSǹ#Wmô]îȹz©è�ÛtýÁLææ!ÉŸ¤F;_^[D·]Þ§ãå1¸.hz� çÊéÑ/LÿÞ>?`òb$�úüT?˜‡À“ë¬"=Pä€"ëÛ,£¡Xù,K¶ <)Ý6˜»|oüv9ˆ0¬×Ч"÷Ž�mÄI0>G ;׺ú8Ñ�çõKˆØ6½Í O²Ð³Ö.Ÿô �¾Œyß?S€Ü+=W^=ÓÆ¾˜}ê…”›ñ]2�àF ½I:Ãs!g¤½áóÖª^àŸ/o�®7D>`CNª‡³+Î'ÛwØ)=za€ µ–çÅðx»@î0ï÷“� <Œ ŸrTq¥Qëàºî¡©ß—~ã\ãÞtmµ}ý%žÑL(woÃß톩̪×g¢`½衽²HÒ¨ó}ËãKúe³ÁIj´Ð±¾/z°ge–ëj†ï8k‘ äµY~ÒŒ?éý�RœzZÄ,Ãü–îU¨>!Î9Ø^•ùªv'þpÿ)PËó¥Z�%ºàþ ÒÀà>“‘ v¨ÛL¬¾ëmñ{ö LZ$ó‡Û�·äx´Ì�FÃvl|O¡ó}„ýZU´ÎËù»ç-TÅ¡Šˆ÷í¼Æ»|F}q^F3®¡cMZvÂÂFf¢ïìóh¤ˆXÑó|N¤ 8¸Ê "�žb}ü}�“L‰Íá‰¶Š¤ç"ÏûØõ@‡ ,þ~�W7̇ Åó*øn`ÔÑŒ·¼÷¹“.+Ì{Bsê¼Ã<Ç<9° \b ¾�eQ#Sds¢¶öÈÍA�ö*’_‰ÏŸÜ‡¦J]¯ÖÝbVÉ©/){Ú&ÁšÍÁäÚ ÿV%Ê¥Ãæ@E²¢dÒ²âщLDš˜¶#,OË›9Ï»÷²T&×ç°ß#Üêœ|‹N£üêQ]£!x6-ÞB-Eàë…?¡ƒ…L%8VaK ,›Þ­€ý¶þh½©¥¶³*ì�üý‚EF‰ý ‚J³‘ØË23Ì™eb™Õžz{…9c ÒsFõ¬ˆY0”¾®*‡¥ï�«&¼<)Ñ¢âúC¦ÔÑF'hdƒ{ kRàf2Fx´šGܤuøÏôß“¡ÖK¿e“ïóÚñ°‘ÞF÷^ÁêºKó}LBO¥º³¹õ¿²‘P,Ѥ5ãÛØ—õjí| ¯µkD|†ðk=ЦòBÕµâ38•1’>«ãy.G •y˜Á,×ò¿û2üPŬøëxª&£×çyo~^á¾áЃŽ}ñ-sy©N¬G ú«Ï±Ñí8HWmÞg«ÊŒŽ�BUÚêÛ"½6£ÍÑÓ7Ýð`�îån&Å kÁµ’m]ûäg³¬3êkÙ2éPƒZ‡;˜ Vä¿�ßF»�ë–ÊQª¥æsyÿRpê?÷Ì">×üº1ËBîw®ÝUfré4­u;ŸX�i©u©>é¨Ïå?ôŸe^oÏë �ñ[{˜‡çòïu1罃þŒ©2®Y9JD{å_Ê3v1&·S™T–0ú¨ŸÿjÕÖ¶ “À§éŽrw‰çòIz¸"bàÍ#ÞÊŒóÙ‚Óvõ¯Öò‘³VØÕš"xS×Ržð"›Œ&žgÆ›`§EïÈ-ö>�ÝÚV�žÿJ©˜4“ ÛOiÜOmLšÉV|§}‘ê¹Î>[Î-=!Ÿ¼5f¼÷ˆˆ]ˆ‚YN ¹_8Åöw‹$²DZü¾aAa¢E�®û¥¯Æ_8ý±ú_E½%Hƒ�ûj¶÷´õÿ;k¿šÂÓí¨íúå,±ÃÈ�®ç†÷æ÷óÚÐ=Ÿ>Î NïÜr±Ò`,•¾ï§ëmß—® vÙZrR;}ì÷—ûW‚©h•~¸pL8d@îH}»·>n-B¯mtm –b”½ çšœEؾ´ùZô½Ý?c ëBÎ`î¿Ûˆ~Ësë47œÚ&¼ñQûäº-Ö”ÚòÖÆaWäšpcïsŠ`º ²[¥z?ö‘ ø`yoãôS†OÈqö/ðÓ·ÞaJZ5X±“ìúÈkŸñõÖ �Ь§—"wоC,ýÔ5+ã0Ï�wùjXm‘`Õ8L!>Â)O‘E=24Žo$]¸¡ßø½ÜSÿ£îô0þ rÂ>~�»n†³Ÿþç‘dgvfD"9šÕ­ÅqôùXq:°öäOûPO>Xˆõß�>ëÕü†¶k�^Iäp>r›Ù-=†áü²”öq <އúì1êùéÔG8:zÃ4$/&ÛÚ¤�½o†~ŽëÛü´ù³t'Ðfs0vÑæ d¶ÈÓ qžg¥Ëx» ¾ÌžAn9ç+c™ðš�;Ü bÛü� ‡ó,©á±W!Þ\‰ �LiþÍê§Dk?=½5hMWÈq¤ õD?ýœûœ È>Þbœc\ø]ë={³Ã'.挙¡ Ä�‹®Gøâö©9å‹ibyµFÏe¹â´Ûêİž°Š’tQêVí·»aç¥4 ?DÒ"eøpÈͲvŠ€Uíx>—`' Lü´†?ElÙ†oûôˆÒ‚ì§³>ÀWÙ‰épÿ´ �kÜ1NŸ¯¶ %"elÎuîî°ô'uânܰîî¿i¾§üà¥Dž¬áxÎ'�üAûŸxËa¹]Z‹Â#�pš±çJS[…1n�QÚN;&Z\1� E²îà ï�6‹'™R=41ޛɱ¨�Úþ\¼&~4鑃r\&�ôW�QYÔRž[<Ó¨½Š0¬¿óõ-²w×Ýð[<ÂùlZ6j'"Õ‡˜,êúY¬¿�”ôÙîª\®íÎM¥ôG}~ãù¸¶7ŠÎoí º÷Kóû¯xcïzž¤-hœN­íx*jÇ$¿i“iÚŸ)yFÓ~§�s}kÑxçë"S¥‚¾r¼›l!o`ìeÀ%ðV‰ç6¡>3ß@N2·PÓÖ‡»¿g›ñT�û|kûº?Ölv/ìÜ k‹§Àÿl¾ÿ}Ÿe†1¦:/WD’^î«p0†yÇõˆwŸWùQ ½¶ÒP©™óÙâé^õ�‘ø)¾ÀÕø|Ö[Ê>Ž4µQéorÀÉöy‡°Û9¢�?>xÿ˵Õ[ß×J¸›Û{Óãç[ó/N©_?]Z¡ úãØäoFœoÙIÙ(KuFVä ÜOwŠ×™¤×We�|^ޤõ{䦨H•Z&‹¢eª:BµÙýèžÕkìºpÏœ²N:8�D¾ ;÷œ¿[U¶Ü+‡ð'Ì;ƒG8 »Ñ”ÆiøíJ°Ã�ZŸnW(ÖA3m&j5@Ùô€Ûì-þ9/z÷}%]£|�Ì2ÉÂo€pì[V;3 Ö1†ªR¾+!DÜo60YŠø¹kb,aê 9œ€¬8µPžpR*AWøŒ¿qô™J�,Ó0¸„ºøÎY¦ímkÖKôkdúùÕ9RÄ¢23^-Ñ4tÝDF�Sg ì\“l²NIt|¢—¢yèÚ™†µ†þEE’1ã(@Ž� X¤Ø•úÃÍÔ�•‡ˆL&î§Ó1ϫ҇J½ÜtLîšû0ªÌz#á ¹æöf3=b“¶–~¹>„ø¾�’uS4ƒ¨:\ž Y2Ú"i±NŸ6<€•õþPŽ”í´ØØöGí+ÊŠàÆ•u{-©:ǧw¡½mâ\ÆòØþC©þ˜n³Z>ÃI Ÿ‘`rO_`"P@ušå?E‘´V½ûÏ£ OìZ|—i=�Øñ>_FöžñÅ…Ô¬�ÏIJ®¤1µ((¶sþº)`XÅ“˜ óýÐâD à?ÌŸ_4zÉ#iLáƒodŽÔÞÅÀdÿéßx8ІGz�R•ú¶‘èT:¥û‰*Ùç°"Ĩ5yþï”ÔôMROZ›õkÚÇÃo4f¶ÈÏa|—%ixnòÑ$YÕ,Ï"å™U2^¢Ä/FpR“òçòo"Iús ‹ïã,¸%,ÙîTÿŸªQ7 È2ôd�‡ù󲕻äE5§zÎÛXŸ  �qß›�½çt! äb»\vûNø6Œ÷!¨Ÿ÷4�zmKóöŽ­ :e©J(?˘ãí§3]p4º§ŠZÚŽ¥"ñBxüôè¹æõôÃ×’X {DƆ÷šs‹ÍÒ4ÅrZCÙ$ôÞ"ÝVä8ÔG‹@l¹‹úøgŠ*`V+œ âïèÿë�•<ç ¨d§©) µ[ßÒøMDºJ�ÛŽˆ¨+rV#ÑVèé“ux#Äg½Iúí‘\ë’—ÉþK„¤`žÏ­¢œáΛiöI„º¦ß+ü½Å“ϵÇÚY~VzÄ¢–ª:ê¼E{íãøó’äß»?„3ýž­Az çþvú®v¢"'¿ ǯöÜÊ3ùwCJâÉQð΋v0L^ñŸør»œnö‘këuIuNð{¶Óv»œLµOúý»û&m3áÍñŸÜ, qþ‘IL¤»Þ±]—KYôsØn‡ëÐÖLù2!Ù×ø‰`á…ÎÞé\þÙwáþ}a·-/™\Á‡ÿ€C±ç¸5×Ýøjš¿°{UÐeizêôPêžè]ºd뫙Ї¥N:·±É5¯ò¬äÛ VÏ�Ç7µüÕÙ å•‹—™65"wL®ôÄ´3dèÑ„§þžàe?^à?[UNÑ�3°ô°›Œ4¼ôÐÒß…o4`¥3ÁÉ 9/NÐ'犩®ÍÈM Žž´«Ž1ji竊²‚Ké&>ÂIÂÈ#™yë˜vn|7M¤'À¦~‹¡�©žbÒ„£>b|´˜„7ª?�”tž�¹óïÓ%65–1)°ØÖx4¡9B°î¶Õ9j£é˜kQìO g§ ¬w_ˆMúKph,ŒŸÒj\èÓ"þ³ï<=Žq£qn<¨¢¢bª*©%¢RiªFÕK|<¡�²‘ ñ×Ôw‘9�¯õ|ÆmuŒ(O04_ó;¼W=“ÿW…çz6O3uþób…Ж…HéúOK˜þ—äÿIÆCˆQí'ýÛñµQ)ŒßÅé\ì¿J×.1Ç3»UÁ)ñ?IãlÊ“âª3NÄÛŒóð} g™×Ã:G% JD†Wî_úZ#T›Ý™N�[¤ú ‰TÃ0«ý—ÄL᧸«Ïõ\ÞÿLÔt€ï4Ê&;ð2RÂ]ür"ÅÉÛ€Õ “‚´Ñ¨k+®¯ÊЬ°ÝSCbsùÖäuq[~pwâ£Nýÿ!aƒ]�¶?ÄKùÿA™�Õ]nöQ^#qÜ{7+ó9›·bdjíN$›åî3€‡­·ä:ÃF6`ùÙlÔݾ'¸¤ûÝsçÜýäv½[›¸ÚƒþoS•W΋Å?±’ú¡p—¹ªó ¶a\¹�J×s�®³_®Ã‹À ñT•€òâîl¦Å€oŸ7ÒN©ž%æSÏ�ûX%+AºÐû)Ï�aO(ßZ‚YCXÖÆTYXOÈ@~.)ý‹e?dP2^UI¦?èÄMù¹/æá@| $žªtð}n㺔÷+êS%9ŠwÖNCÞ»ùïóêŸ6ô1)ô¬²‹Ð¤g¦ºlFö¿Ð!Fé­iÎDæ$¬~\Cýñ'xE ‡Ÿ93ÿîÁ/®'Œø[È­1á !cýÙ0~žÛþÛ#™mbcÇÄ‘À–ãŽzdÞÃOýÄVÐãCÛ«zr�SËÝ3øÀØÁ×+"K¤ä¨º·äë»ç{r%„RN%ºþÓR_b÷TCÖçc› ßÀ5;I Á¾µÈ6½Pä#¯ЩO?*3Ù–ŽW¥k”;´Ä‰"6�¤á�œƒ8}VîˆØ<·H?»àtëÛ{‚åJ§± Gÿd>�5µÇ!£‹‘)ž”"æy\:×<$ÃwD"2èÏB Òâî{÷öûþ.ä‰ynGíó`Œ²ÓÙ?ßß[…ô„‡(ÜÐÙ‘2·uþuo¹#·­¶=.�*ý¤, óÚNN9µs‡!¸+Øàí{‹ÞN%Žñ76�ÎX˜BßQ-�–†îå ‘r�+I;MvÕÏWÐé5oÈñ¥ˆ4¾Ø\ÏÞ�#óò5EØÖ©Ë{¾�Ó—¿ WûIòß:†œœ�ûuÏ¡¸Â.v½©¹ûȧéªçj2ΩÓuZb¶6|^ �DJdF}ê§Î9ÿê p §ŸyŽSêtÉ]zË=²ÞûÎÁƒÈj—Ò #˲›çÃtùàñiŸÌkuùtµý“:˜›ågòd’šdSçÍòH”ÆßÚOÇæ¹¤!µ&LvQÙžQµ]ãö7~žÇ_´=ë¶Î·Úo"�D ´–«nР?�«Ï#sûc®�Á#|_äbŒùD?7Ï´½Û!�m±Ê¼3³‡N×;ìÇùdÏÑõÅ äðuêoF@Ï>pÞã ª�õDx ŠjŸýŸ”ÁþK× >ŠùÆ­;"Ú.ž²û¾<í1î¹?¼f†ì|“|ƒÎ5—hºÙËùÜèò€ßúE–Šøµ~¼}åxqÊÊ—”�:ÛYWÁÝ•[©²X{nX—e”W+¾y‚TóI]ϰ£wøûg4ô\aÍ·8ÍV—n“Z…Nú%ßo�1výóÞôýÛå‘iͺ¾ß�!ïK›Ç/4òÂnVhyD2âȬ$3°£¾� ¦÷Ç ÜsÌ-ð·Ö7¼Ay}ÇóÄöbP,êôä„ñÜð€½ÿ2] øëþ¼ÅQvñ`_K•‡6Éñâô×Sƒ·§vþþ¼]Ú\]Ü/ìÛŠ\˜ç6¾Å2Kå\€NÉQ­BÏ‘¢ñØlHÞv¾¶ë?Ý×#bW¯ƒƒ=bÎX)ù'ìrƒÓqp~ßùãzœ\_–ˆîqÄ@ƒù·äóôp;nWÞî]ÿ�RøL>$ÙqŸË7èùë±¢]w/þ†Û)¦¶¹‹p‹¾ÎˆÀÕÜïv:ôv}=ëàÆµ…WÐÎíͽ±ßGîÌx>òÞ\?xNàxÑ¢ÉÌù«�æönéyW&Ͼ¬|87äÄ»¬¾‰þŠŒÅr«VÊk×.ÎËÚ‡qòËú=÷~gþ¯÷ûÙ^˜”íI,ÊþÐÜ ¾í§oe½‘ü~—7$ ¾Þ-!ÁQÎF×øÕc¾.8m8r×Òúú}õà�öœØ¨Mã§QúŠæQ /âÏ‹3Ö�êZÞ…‰îÕçÖž ¨å·¼~(ž2ƒ÷ià54¡ºöd+Ç}»C­@Ã#Ô�Iˆ—‡ªuµºÕ„Ÿf/(žìmh#WŠÓ ƒŽ ×¾Û×fä70‹¿VݨiWß¡¤*Á²&ø¤L¸Áv[‰d¹ní£©5 ÅCÿ™Zua'+‚·¡w&côÈ<®7m1g"Ip);ö]êFm;--é–†+[ ª?i_u‡ÎaèOq‘ÉE}€:¿Àc6?¥Mn/ Ÿô�e½)¿îó$kó¬¨d-ÕærF½ãö"3zÇý,+2`,è£ÍšÑ˜_v•¾3�Fj•ØòãpQà‹Õ>­*‡CÒ\ùc<’*µA=ox@;=¢ìP™È¬ý7èázÇJ“ùÆk¸Xªkb=-êhÐ8Ý&™oí‰.fûïzoÿŠ¥þ†ÛË¿-õãa}Îóåo‚P³PŠ£K€·.¿™À¥h©geÀÌß}^k=_œ”¿‰Ä[}A,+Ívx”¤Ñ5IÏj}mŒ?3­zéÑÑ{ߨ’‘ôHžó—$c½J–O3©‹#ô`!ëŒã÷\tûÂæ;Èžóî’›û„'Ñ{ä\ƒú/¼“�­Õr±ä™Þ�&vûþp< Í|üAR[9y$Õ))í0\!ùUh =7ÄéEäNQ•ûùy=Ç9_ü^ò¾¶ÏÏs\kU�æ©Ï³½·­Uýê¹£vÌÈýxòˆ™Ö>?Ãÿ·ÿ³]»þª$ûbË÷ßÞNCœR»~"båãB‹q‡Ävº#Nlí×öSµEÂiAnGé×Öâ¯÷Ä?u1¥çþhWœ»Ÿb¸CäŽÒß�výý=ãÉó¤Ú# ßh]£þþ�Ü�ò&³9«ü‚ôEZçO}4¼6zhèÓ oÏáô,Z�hëtÙrOn->o©Þú�š!Gç©�Úkž ôt›ÏÝ"îþø—A|UʾÑú~›â¹"Y…^»ãÐ@´ˆÍU/YÜëøŠXO�oÒúøløŸ>‚¯9jqDj®C'šAFîÍz˜U4¹»`¦¯ˆžÔePñ;¾·–ÜO=§Ÿˆo¨l„Ài×z~¸Ê+ËN¯·mÿºþozUvŸÁIýS޶ý�ßÕKî½Z|ëÿŠÓoÏÉŠß ;úÖžqÀ¦ç<Çù¹‹dµ³HªIæ9nȾ%A©I½"’¿œN¼ƒS‘�’Æ‘±iÚû§â·”ÜyB§…væAÎE¥�nè#ÉŒ�¶j›6° -ð'Ü2åìÔôÇòhö±ç–�Œ)äcÏõÙãÚÖg´§ÔvØÕ2r¿6;BüIª.õ¡ˆ�ry�y<ÈuZÊžuëÆ“Àùújÿ´ÿ~Q1ï«ä!nöoû~Ÿ?¦èl¹ðÜNù1Œè÷ÑðÈg¡næËs0Mrm’-õ5w´kyà”`? Cϧ–º¾ÒSšÅ)ð3Žâµ–/ú™d?Åsù<Ê)ÛD˜,î?<ËÑXMCåµIñȦ‡ëصˋdD³ÂXö¢Ïo’Ø‹HýþV�óü¬¢O&Â6¯÷æÌÜ‘´Ö�ƒí�7cÎwk,î§È/v„Àþ±>,~¦ÇFÃ:Îu!´Ö™^&ßã†ÆùQiÎïˆèùÕÜϦÌsF*Þ Q‰c,1¦‡ëKŒwÁ騧ÏÖÅÃý'¶™î~·m§dk;�sÐ[=¬ÝîH×�„‰ðæîñÈ+W*žµ¿ø@ãÛpê¦G©ŸšîN¯èHPít[Øç²^ç^rÆbÔ y�T›íú ~õýÁÇ­ÔµÉã®y˜ƒl·þãkQaoinEò\oå ôùçW³`7àåÞÆÝá‘ÆÚí®¯!Ä?¦‘ãóÛîêMfœèä/ð Òp]8·s°b 6G"Ôh!u¿«Y1ögšboñy*/@úm_à\#gcN6ê‹ìÿÏA.üÈ%R?Q“}ŽzYñ¹"WçÛÚÆüµ˜ô (Mf~ûëñ[ÔAR¿õÒønA.Õ.�ñí«AøWëHÞ4/¨/`X¨ ñ3ÕsÞáGŠòbÐÞ¯M½Yâ1…QfmÒ®·¦Ç´Ë(ê3z†œA_`rÎ8Møþ.©'÷#+GG’ý'^è\fYž%–N;}ð=N6MËpn¶ÒçuëkI :-S¯Wþô^êÂéðéw)í©“PH&O}&3¡ÿm¢·Ç†Óݳ]a­ý{ú”ñú‘„z}œº›>ÐÅR'sx“[Ç$™à6ÅucŽ¥²ò°Âsí“ÄŒAñ–yˆ¿š%’µ@9·7¦�+ Rôi§Å”tåådU]f�>½ýUY?û%T) Z_ÄÑh3Ûùà�” /‚ÈÑüezÚ5Ô5¥÷iBtó‡� Ç¬�2hé3(JÆi€8/b=á`“4cLýÄÃùVÇZ�ár#g¶*Ö±›K‚'·Ñö]7è'ôá¼|+£‚Ç-t�w‚y–DµÌaúèæI‘Iÿ»Y–Œø‚ùÎy‹°éõÉq½ù$Ø úÉt¨Ž<ªz ‡½­S´Ë•ãác¹˜¢ ƒ.•r^9÷%§@eÛÌ=¹ÿ'ÅŠ ³çuk?Ì#Äs/‹ía�ñ+oÍ©Ö@TŠ;ªÐ�ZQ!î4Æ¡F�è«q6DV±• ig#³òUgwbáôÏÀèØ˜uÉÑÒ¬t�%:æÙ›Á§JD�[éÑdJþ¦(¸rÆú5æ" ¦© ´ù ‘ì§ú‚Õ®]ÚspÁBº]qqÎËÚ°ã¢i¦_S訸ëa‰§ºM ú@­?{{æ™^µ‰ÈèÓ¾uÒxV·SsdÁÉ ´ÜbjcøS ,Ö“±·¾mz}è?µ‰†º}h:¢™”Í�ž˜#ñ7&ªu|•%×&xhéÚdÐie½+Rü%‚ï&¦7+@uÐÉ›¡ïÀʸž‘°Hñ½LÒâ ƒlÛ)“Ùijÿïòž÷1§ÏTÈ^'ÿ¿}ï¼Ìøé5^Üaø}^»TqY„u·uÿ?®°--26Àu_S%�k2�3}ÏÓuœææÃ<ä9êw;]:àNšR#ÅcÌÀ’ŸK*Ù¿TâElnmkVïÓgífèUË(yþIÖl%ié9¥Ëgå¢)‘òìÎóæn—Åïàžƒgž$o•,Ì?&™¦¬˜ˤd#nŒ‡%¶WQ²­]V ×+š¡ÃKéšÿ×iÏO�ʪIœÀIA¾ó’Ë©èëëþGc×k‹ô[/ï¼2F§èÈ!ð{~ÊÞ¿pù×óˆ4}Ã^Öõ&TÖu®8^3œ¾ª¿Îg Ð~aÂ~cò/¨ûGfn·¤¾£þÀËãÈþaÈ¥¢GÇ£)IMk�ËK¢·bgrϱè9%ä )žÈɘ#&õ‚ˆŠÕsç½Ð2û ÞxÈ& r�ÁÕ@�=‚bCË#^so{Ò¶EVípßwð«^÷ß«þxÝp»£¸�‚»!2îâtû’àw% кÀÕÆnÈ•¦:Í�ûÅÅå«);û¥q»í§ÇiÙY6œÆ¹\–ü�Åî8�ùü~m§ª*rjEαµ+ÚZ|LN�]ÄFãZêeõ -Wœîû~ §¡ùöæ§Ö‚Þ7?m·žZ µõxo¸-_Sð~þš¥¤0ýnS2ÊAÄ­üzk×¾é*’ù©Ú§¯ÞÞÃ7Ã6þÂ1ÊB‘&.‡Ö_ÃõœŒê9q ìÆß»"G2<óÇ·vör{'ÜË·�‹ŸþÜÚùoùl1zòФ¬;€Ë¹nÞ; Ãê.ì©Mõ;ryÝúÔOÜ‹ËOC^Zv¢Åî-²êtn9–ÜgZa–eÅ|»ÇYì ƒU�yÄxÌr—“Ó¾SÑ x¤ç�l–)òÌä…Ž.K¬€§H�pò#�_;ÒÓÖÛ[-iæ¹ÄDÆh’¿WºœôS[s�½x2H« ä ô¤û�®~î�¯Ó©Lœ¾€W‹�?wû»bÞN9!ÏàEîV_¢·:•Ï€âúpYHð€ÐöïŠÜ‡[äâ]ÝÔ4’ž3¼ ‹ùl|i”ànØ®¹´�¸û©1[Ë5ÈÜÒ±�•®O¾U\�(O�ÕÃúWD.ˆ\g¦~tØðEŠíK²£eÑJÚãê¹þ3²ÿ)=ÄÒh·G|ª&9â‡x¦ÿn}öè²þú‚ƒ-îˆäÙCàl£ñZø š ûBÒtê 9æw=I²ò…Èá}@�:˜L·øÐ3¯kWžÏôaȧù?Ï¥ÊsB‡ÛÝ%-_hA‘·'p³V´ìø��¦�~~êùêoúͱŒú¾8#í…¦o�®Ú#^ñ¼¿¿¥À¼@în)cgä€ÿQérÔ~�|�åt‹ÄßõàéÀ~hÁ5s¹àù±Î›{æxõÓ‘u8bÁ1b¿«Ñ¥…&ßZG­š��ºz»4Á»B¿…ìe6.ßÛéÇ;¼OØeÏ�zj2ðølürþhÏQ ôùúè�Û?xA r’6Ö´ .™Þë­=o�=§.Ñ ,]ó;|oVÛÄ"ߨCRüð ž¶º�,³õ‰ó,æ¶c@ì•Ãø³°Ã�pöp¥.N}gÅõs‰É%V¦7Óõi´“Í~0@¥Oí}6€íšß‚bHJµÀ‘Bƒ v8 Ô7‘#=7-FJxŒm¦DuÄiŠ¥æ¯™ý%hÃzÓ£ÜhÇ.£À¸íÑcƆ£Î×£/b‘½´÷i´X¤µ\—a³S!ÇÅX‚a•`†â³¾è$*?’±£G–ε}nY=ð�]‰sc}ÍT`ñ^ßù±M$*Uù—ù÷rA¥ L©udd´™%z“äêiaˆwJU õýZ›bMü2c�"þ’åSòâ>¾ûî>GÍZüG°'xò=…‰‡ó>ìh£2Ÿ&Òj}jvšÎ#cgÜÄ;¥clì”0�&ó(e¨o§L7¾¥eµoö 8Ï�ß4yÂÄ` Á®Û}Žù�à ÷ɶGF<Û«Œf½k„¶�7«ÃŸü`ä-å�²VéýZÏ ¥ØßÉ�‡VŒ±N¯¤ß3I±iG&Ut¨&aÚ }•aîftS’!ÝígVu,6Œ†àVJß©‹¤YgÖ¶‡E‡_•êöƒvùúL«q³'²�k‰ ÌžHó–3+ë×uRïI!sÁŸC÷O@ÍLíÌçJ�ÎQI@ÒcųÖ?y&(×íÇ7d˜öjòíÅ”ç»{Ví6®ò|0: &Ru�V;Ô¿‹Šd^p_wæ‹ûø@£Ë�ÆÌo&E £+š§›w5ãiàäô˜?ÍÆú:òHâ1(ƒÙXkžø^¡õc™\“RÚU|«>�>þ´H/írr!ühâ³XŠáãw<ÿ[ —ðñf_Kû8hy¶ø7Ò¬ë3‚Ï·÷¡£cZÕ7 ¥Ð¥ãK’n�÷Æg©Ì#UúDžÙÿV›£VUX³tî‹òóç¶Ã;y¾þã?žl³¬62xdÍýÞ&qi‹K;-'’)"Èî“d6€¯JŠ:=Áo=ÚçZs9¡^œ~ †¸!‚ãtÊ$ó�REŽºË?ÚOäÈ‹d wü>ŸûX ¯XLû»}jºîxë[·ág_ãóa("ÚöÓL÷…²vªè*È�X4©�~AdPpž£o�°d#ý»í¥êB·c·Ñýì‘s¥#7HHNá›ýXìÝ—–ƒ‰äÆp*îò€èës¿¼^ËüñÃ9É@ìð,íµë�Ÿt2þYÙ+-„§f…É¥òµœ>¤wDòiã“Îj?ÃK2:ÝÚi Š\hŠÜm&“ÈÁÔÞi…$5§äÿ-.åþ+ÅÊï¢ãìŒùÜ·†µãïtâ­È½�0:AÑ_±Èqæv¯�S>ÙyäÈ‘·û€›€¼(’iÚØ´ÈÉ©åóÈŽvºŸJÎ-§¬™G±Ëùyiùy„ÞiΈ®DÂÕÓÅ#[„ç@é~é:¥y6No§å³�®*‡�¯[$¬"¹�r®H¨}¼ª•J#4ZЗ8í òóÀý³[VÀ¾ƒ_Ne¾.ÐWlÕ7DˆcÞ<·Û,%a‚�yו’–Lu "âVœr~šåíÔTDDÛ/?&q’Cmïèt¿ñ/æýÔÜŠrÃl9Ù¦óæd;�ï×½·`®@ocÇnW0/"¿*þ�æOHÊ)JØ9ýn�§3ì”T¹rü¤]_ç|Ë-w~y4½òÞK_ðUKʳŸÆ6m㵺A�{$ëªQ@²/]r(˜âZC.4Aî)½´Ó½· º°ïòÂXY{èl§>öö�X±K™úXgÑþà_¥u^[ÈÏ7§;ôÆ¿ç4<,À­y”íŠÍ¸EŠ4>Ê«YŒð å¦þ¢Ðj~Nß¼ÿ¸z]Ûœà �˲â‡+xÇž—~åÜ•¯ÇSf‚ílQM€ì">ïvÄ@¨½» 'Øö†4 ¨¹NEa?U¶=4ñèYÛ¼Ýl™ú™a Z7è�œæý8­½�Ûd8}×¶S²•€Ô ›³¶ç‰›‡†2´¡l¾íþœ` £ÄñÓÝ}b÷l7ç-°i·sÓ1§Gø85ö¿‰‘â9H©†až zlÂ84~?Íü²´ùx<²L,t¾³…•é9Oàû‡Ûy„ê¹,jYÇ}@Gpš®HD6®HF¶ tÉû}‡-ØØk_º3ÐoÐTè7D þoZ¸{õvÁéŸ.¿¼X€º¾øÂ›4ï×%U ÝhyÞü…õˆÆùÕî~íeIT!˜øGÉíý{”WÒÜß™_O ÇÓ0ŸI{gÛý(ÝsÐî}ú)ÂÒrê£/ØlõÞoí÷õò\¯xGŠ3ú›PY�í‘�›ûîQùÇh6öƒžkêá›/mQùú»Ý_°~p~@îN¬4ÁÝÊøûº²è�±òî§0ß&Zªå¡ë�ç�ž‘êWòt¼/Íž_­Ûÿ] •”Ò™Qú²Ôôx@�gÑ1ôÓ�GÖ)ÛºÁî·ãùjAÄަϷú_÷e˜ûùí;w›´u|WŒiç®ô$™wM-¡£@€õ½ÕXn"L=¯+“_[9�®­�»?åÞ�«±X÷Èû­þÝr?B}XÁ—gò�öôÞ">�†Y™<ŒLC¢Ošf‹9{ÐdÃgT×oò¤Yù‚{+ê™{ûÈ”ÐsœÓ@dšë¦r¿VË?¯+Ë„¾•ÚXxâ­®`ǘŒþ&8r{ƻ֗¾\nˆØ1Mj.'—¯;n gåºÌ+©®Ž0¸_y^´Ž%�|â‹kx`Œï·[1©®“þ´Ü‹…‡à‹Ó¸G¡NF9w!w#­Ë_ëcº«¤’úÏ¡þ?,©s‘éâŸT™—?(…OCIã§;‹ÕH£²Î•HþÉÓiOä?€wcñê +qþ3ì®É ž•‰¼‚·›V\†éw7¬±EÆv¶óÏSl„ê°6¦±œäâãí¯Ê´«}jŽôúÉô´‡?\†§i©EÊ8é-®ïsPt˜ìŸeü²îH•Ì~ÄÒe !‘Ÿà¤z—¾â¡ôg¥u‹dð  P³]µQ˾ѿÃ=—ÿAß�^•AÌ+wYæ¡äßDC–èùXª”uužË¼°™·™¨ÅÆX©&3=¡2§S߉šH¾c9û.= ÄG 1ÿ=í+yæ|žtRÖ̳õÊü÷Aò§¥û =îº.lþ¼ÿ½&lMÿJªú™t׿/û? •ÿœXTºM­×]Òü9Þë?ßZÕÏߟ³nÈ諞ƒïÊàk•Qñ:ØÑÁ¢T[EéJpš7D"é%á•CòEº‘ö€Ö…á´á�ß/ðÍÉAïgrBg†·„¼—¢K‹ø2ÏÝçdiŽj5£fž›Td\<%r¼#ô«Eto‘Éûí_ÞO¯¼ïLú^§½7,—‚}¢U…ïbºìL¡)hGu^ðˆ6$í°ÇçÞ×zrýˆ×Eéj‹N!ß qb�KçQò¦ì¸wÚŠÝ~_šþ±kÓ“FÎÑ8‘~lÞ"ãžÝ><¢p.˜‡/œÚ®=�.«Í -Ý4IçÃmžÛ+Ú{šFå`—1×"% Î¥_™ð/[ϤK¦ã!¤Š‰•¥R'½8²�ÒmvÓ‡=Ò¾Úw Þ¯02¾Ž#¹ƒÊp©ÝÖ-vOj\DrÐCù!�G›_ŠˆJv·ë_äj^]�áôhõÜ’šûð5Mg ‡ù\ßîN^—€×lͬÍ,é§¿â”DëÇê…þyVVÌïbÙ =…þ5rc#7~S tÇM$“‚äìã;]þâò|µ@ ûî/�ÏsY­~¿Ï›âtíÜŽÈ8<34Ä"×}M.°s«ì³¸»ü€r œë(:ïqÉ žýw—èÜ÷eißN° wðÿêm¬éù·s£ÜËÁHn‘õÞC?ä�ì ôÞZùô¿à „èÝïI¬—dGF‰OºLâ…@¹""ùÏñWz#‡»¿µå™ïå–�´Ð/Þá;%+�±þ {å/HÕùðÔÉh˜ö&ÈF3¥t³TÚ·Þs½ Ó~oxÓâ}�/�?�Îx³d©„¢±ÈÁfg-)§ô¥çÕ`á¾4˜–r~/ÝŒû‚leh/d´hPVé–¥�¹Vñe):5E1̦¨ :–Ö.½‚S„)Æ&Dó£‰4{ÒדbôêƒÊD¨ >óG²v«·+3:WSñy7ÝÓ¤¹r¥ÁV¸J+nÏ ×XöY-øézÚü•\݉þRå´²¡³i$–‡ÅeJÉ™MeZéÇqç©©òïu–=aú·÷gR� ,55¤zϧ–š˜L½÷]XÖat«r–ó�?§è'2—óA—bñº#èë}ñvKÆeüÝqó�2‚á¼QT“”±vGBdÜ•¶‚7Ó°œÕŒ÷Ô,͆Gm[ÑÃ3ºeÑ ³mÎò �çýû¥Êb¢È´jF²ê|é¼;ƒñ²îƒþpþ8ªkEPú#-xB3š"ìI8]üçÍøQ‹…1H‘LGjBâŸ`‰E%4œÒ·LºÐDƒ:y,Ó‰ à¯ÿŠ~w1¸É¹Pñ输åZ¥˜ > Ôš¹¹#ˆÚÁ¶úžÅ??ðk�Î?Çò\fêCÖ3){M™Zw6¦2¿U-Tâ¿uÂ^¯f�›<÷]æ0’j’Ì]½ÞܪŒðØÇ·‰-:âPº“ŒÁ±ü¿©ÎÑ›W:d ;l8S/òX©RøÈîZg=­~2ÌLÂÓ3ƒôRø’»M~ö )$Z lw¶§m~òŽ=öO~pwxqϦø­N·>*6á ÒA&¡WLòwö• Æ"ÃÕ:�³íõ¹¡Ø´ÍˆWwÄÛ)À•Ùw|q !NÝ"w~Ã)¸×�Æï_íú!¨Ø¢ÜvöÿÙ-%9À»'A@®¼Ø!öÈœJwo§kê™"‡mMÙ# v†Ž %ch‘sNîe\éÞ[D‰~´qµÓñ–ž{GLÇ´€63&•Ôsu,�ø‡r_½¦ÉŠ9ާ’x× 9Öä~)µX=,=/娷"r�‹@¿îÎWÓk€¯—zL˜ïØzä ÿjßí·�{6hÏ}4Žóà§S²fݪ$‚}!²ë¿ùoœÒú�S*ÿóÖ¦ô Kó=9ÑI»®:Ý›b¼ç$qºfŠLü¾wiýÛý�Žë à(w×—2^ÉÃ,zC"„Éêü”²Ò)ž;,Ïew’d½•dsèL¤æz”á;Ñ?œí§{®Íá¸ÁÅ ©ç&<_df@Ö`à€§É§I_ç!_öÑæùl� jïMŸ-Ðg·¶choÈýõðSzÑÏòb_ÍØ\=â‘&Žô�"G㺜0 D>zD›Œbßg„î '¡ž[DózGn·íÔÕ}zß ¾¯ã˜E¤¿,âèièÂ>µºŸB¼_ôœžk“CéÈò=ckÁ–øˆôŽ9\/+r/-kâºlŠ4|‚p¾ÜÈ!'Ùrîòl-®Nç^\?öÓŸ|ô¼ÀY¸áÔR=K²; r.Ú¹ˆÏÄNpŒÄÒåBûˆ=òzA¤�•\²ê¹‘#­Õw^#ºî[Ò°¿4'VõpÖAŠÈ’ˆp*SÚë–H&Cåe…ƒF´—Ž–‹Dô¾åÔè`†§¼‹Î ïÖÕ¿Ú¨f:͆c½MOOã�n~*³çÖÑù."i§ø?Däè)çâ wèº ²·Ó ‘�ЉñxîÈ=RA…#™““¿Ä8Ó¢lM'S t¥µÝNýݧä<æüL<‘ˆd™O¬ª–ôÉ6Óâ …ÙXO�­ž‚}²Ës˜Ç‡.80߯þÝBoãßüÔâ6‹ÚûuÏ9åd!¾í!,r&^ùí¹mÓCÃ^¨•/ôw‚&?Ýš\Ü/MNnpÞî*ÓEnÒ�Ü0?H™ý͇.°÷6oWÐÿ�ÜaÐŒ+NõH`ƒ×›&Z^]©é… Išíx¥v×w¼�“÷ôæñˆ{¥Ýͬ¬6?Rlå9Kn˜Ïf þø<½·%­Ç— oÄ0Æ[Y0ïP‡­q}¦òë½Aýë³!|ª»dnS ó…Nl&ÌR¯}õ;c?ÄiuÇ©ÔgDFäêú‡~_ÎsÚiü¿²çÝôÜESýÁ*aü-Âñ»þµÑ"æ–rJ2VØþþ{s½Ž#Ú‹.Z•H ³ÚµÏ·f·?® Í÷7=`w–s“û¹„×B‘¼h¨‰4Û•¼xs}´>W{=Wû]¶/æx+n¾®íyçäü>½ÜðF„ëÔßèΤ:#¢Ñxcâ„ü´îÓª2<‹ìö vŒÆ²}YÍaõ§%@}¼–~¸qzÈŸ„¡3+ø­‹q‹?¶<5sgârKÊÆ&Æ(ê¨�tOðö‡[*ÔNÇB·Òƒ±Êø�éΚ7ê¨ô]7|¯»yIѺ´ùmÍÞÆ Ñ'C©U§×´|F_ÚÇ0ÅÁÇ~Ĩ&¯‘Ó^Ïäó1ñ‹Ùêäy©ÂC|63pJ<ÊO;$ G†±ÃxqÏ»dUäé‚…�Õ“L…eóB´NpHíPœÇ™ç§R {É ;ÒËòƒ¹Ž©±¼H=©ó´h¶‚ŽãÌeóþ†ëJ°vÝãºÄ¤oöÐè^FÿŸ[û•þÖCûëQ7¥+Ö‡G3è«K“bòL×IÛH(CâÖþˆÑqþ üR§>PÔW’«r̺­Ê>÷ÑL9öyäGúzVuèÃÒ5%ÜRn5à˜\èÚÝ”*ü¦@»ß,±Ú!1È>«Ã›yªá»˜y­G”ñâ_»7çˆ_’ÝìûJŒ}”Å%ùÿîu/¢áfq]ø7ÖL,�žp²95¨g“Q–£?£¨H^Ö'Tú…dÚºN‰Kô ‘‰cæo±÷ÒÅ‹"b ÅŠ¶¤VY Ó3b*Ïçxþü_`ðê"µ Ûkù-°W¼íªk�Œïèµ�œQ'ö§‘;qò6ïëÔ„«�ŽXûÑ–CicÈÓ2u)Ù·¨÷Hœ.z;u#Ì厬ӃÀ › ²ú©£�d¿÷×cÿ¹^üt¼©è9"÷Ý`,:+ŠÌüYÑþ§B‘Ãsª=–q¢›0¹èö܆Lã�ezf†~‚s¹mNŸû2—�HñÈ9à§XÙ·ÈÁÀ ›¾§ÈE‘ÃS}'ÑOÑ[‘Sðô;@í×ßZDªÝ¾òõ÷ë®:·ÿÖ~ÛoyF½µú+"âêðxwb`KüúøéÈñÀ®òá÷ëê¹7Ö™cÒ•|¨ø-çÚÖüz'‡†Ôä"ž>—ãþ·â9à�ÃMnsõ¡7Dª\NY¼<:9Ú=$�°3ðÎóו�å‡ì±ë\ðެ"iG;¥ûIIda=¤y�)äžøÕ=�íûÆýñ˜È¡9RA¾ód˜¿T ׋#Uîv¶Q‰ñYŒíy\Ù(ÂUßÒ5RŸÕcx¼§„¥%�ÒyÛr×/ˤb‚q¨$äãÐñš'é‡ ´óS²;cn gk‰Jßr›uÔ¤ò$ϵ%<òþÀ>ZAÌŠ .Õÿ—ô—rò~ˆô¡ áT¶Aü�¢m&âq0_>‰¾Ñ?ûGÏ:H­ƳÆ3=Îo2yƒÙÓü7Ûø”qÈ"Ï8i‚p³ƒv?“ª±¾ Ûa\ ž•çüã¼&˜_«nMp4c›)4:^,(æYþÆÀÊwæÞ—ùR�9Ñð}s@ÆìàšMØýo”Ê?ö¤¿¡7Ô'@eίC%9¨¤cý4§PÞ}ÁÎJìó奙°±ßêL&Õ3ÖxæÙ¯`lpÿIv5ñ×+–$ûÏ}›ÌGwH·��F:ï)•` RAU9èá\S›#àJ ÏJ´ÂuŽT›½)Rz¿HHîFS ]Ç÷£¯.Ì� ~µ×Fv ˜š ™µ È i¹‡î5yÛöœPeS½ª u®MŸ-ú°Ùo’q"ãÙܳÜ+æS T™“‰n"3$‚MŸèGz´gõNfjO‹«uFUKŒ(Ç–Ý2’Eò¼ �ŒŒ•6#H°ƒGûoKíq¯•´ªY{ì‡pqÚ9.ÛsPŽÜ.*èÚÈ�“HÈ}å9l–"¬g0Äí !¸`‡Ïþ¹¦~#÷”wŒ?¹^$-й\n{ýõ/Dz]„l 9è××U†Å1Áʼj¬“ÙÒ"yÔÎí+»U"C0<ùB‰Dòêkþ˾´‹H CòÏ=#«ï¹xŽ+låø8oˆÌÄ©Æê¹³¾Úøm¡� 6âŸX#þ€PûÊôm¢Ì68wðÉÉ#ápÃw# æÓ~c)ý_ÿ¶Ã±GÄÀŠ­œ÷6¯¶âôfÏ7“=¿ÁÀq߸p¾ L×�aË͈Ļ7µ‹<+†ÙÅ“^p ìúÑán0ý”M$)Q_g-™¶ä"ßò5ÛŠ(óqdl¶®�ãÑÞ'x;]¶þÀ'v<4÷HFìÜÅšÛö´V¢íõñÖ�®m*Ù©C'ýÓP6ùÞÓ­!÷·Üé=¤áQôô]œÚêeÅõåVh`ù»GÜiŽøðšÝŽÂ´ÛÜ݉�Â3~?„)õ¡a(x¡q˜+ßÚ¿Yq%pÔ´ØXÇ4Œ�Æ�õh¯çK™kúx¸\¹Ñé·üžñö¤�÷�K?%¼�Ç#}Aµúäè?ãM‘öy÷i>�.Ð+öÕ ×R"¹kÓÛ RNˆ ¾Ÿu:õp#[¤Ò0(‘j÷þÌÌß=NiÅ<ý¶âôâÈíèv‘8ÎÏçàMxxà°â÷öæâ9¤¡ÿ›_�úm!Daßû©•Óqúñ»žKÑÇ‹*�EŸE²yIü²ù}±øÕíç>OÈí¸BM{ àfrz4•à�† 'ÆéÏ{u~˜çB×SäÖ›+¶æOª¨ôà ë3òß)ž›’RšÎج #£ ÃuC2¹ÝX;}tûÜôíV÷‚??Mx†»òõBG§Ïrz1è'¨}îtt5áÃ>ð5NBH-Üpw3Ö³ëhÙ�™ëÙ Þ.gtš°:ÿÈöØß>ßnZìL&Àpè¼ë!öø úø-pðJ¶¶˜Ô¿ú!åçší zÙaÍçe—{Ôû¼6poÈYØs"KøcSùÀÀ?ˆ::>ŒVwçÃïk·AîòjrÂéÁ<¯)ræ¯÷6÷·æ7œ�Ë’×MÚ{3{ä¤- n/Êôœ¤Ðц‰éséʃ’ÈÝ·Eê÷ Oò%ûS7ÑåQ³j}ñÖÎíÍÅó­…îzó¥ØC;‰*€é³n©3ËUl›>@Ó7Ìý'æíüÆ¢òŽu¹ßˆ,ãàMdXDIåèz�ñ«Ì´iò—Ò4Ñ`|�á¸6Ur8ÓÂ^io„�”艹Q}pïOh÷’xúôg¿>ÁeÖfX¸ .meEy¤ö3CêÙØ©f½©örZAêøbÒå³{ñ¾›t¾x5…öð!8›e•Oû·¿¥¯šFß3EÕ›Ë+Ø Ä¦¥*ø^7û6ÐØO žÓÞç:ï–t<”ùîîbùÞÇmU”ú±“9é+M™öø*�qu\�qŸö22tçcvŠ‹èÀ’šZKàà8æ{–ðUà©2â“`Çê±ÅMãšeq¦¡z¬ŒÿK¼~´¸%s–I£ •^Æj&¯í_åy;–ÿ—b×þ© aµcSÐÅ=¿Å�,øIÆý”L~¤ÏøV4›rgò‰ùSj­©“6V£�VËŒhdù�`†'›åõü“â`ç‘xO`ÿjŸ£ÊJO&íøµ7“cIz^b ?iv‡9€ÁË3[úƒb©�Òº¶Öþ9d-üоªü7…Š,†^Ž ¢ï�öS,†èùÉHf~Ÿ„â÷aVçgÐíÖ!˜JË¿'B©·,×õ.õ¥¹Š<é›Á'÷à5zýSs»À�„çµN)³`U‡ xÎAw?XÙ¤’�ΓוåÌ�5‘—ø€�Œ³Ù¨‰þï>ʾ*Mp‡ò‚©-Ó‡&nczé0×G]ü´Twap=˜Ï‚·uôóÙn}ÈÔSëæÊZ]æŸùM:B K�† ÐÙWQ×A$y�¹\yþ'ƒÇÖûõ{*L–‹,#`-x'¨’:•®‡O,¡—º9¼›ùA ¦×1R îÓgïŸÇÐs*’.V65qs?„¯Õ~d€œ¡(á[“:ON©Ï ºé±%ŒçàŸäì×ëüϦ6}G{Hq ìù�:Ôž++¢2;-Ž5¾+Nÿµëµ_çR’‹è;vü·Ó5Wa¿3çCæjÌj8Ó#vô�"÷ 27N®˜}Ks½çºçß­Î㟬<®m¢ì}²eT…N:½–k‘`ë¿rd ¾áTÙë{iT§z¥öˆ4{¸Óù.M\þ ]ÿ3ƒ¢ÇVØr=ßóýø\…)Ÿ8Åùßg�à3*¥”ôȾwÐÍôʆ¤\”.<Êô€ò¸·ÓwíÄn�f@¯Bûø ‘¥‚ˆ“¼D(žç¹.{WˆÐô)dïÓW9MÒeü¨ r³Ýÿûޝ�/ôî¡7/rÚ¬žSçß›<®ÿÙÚ¿=š’D޼Èñw*‘�8}Òå”E*U»·Ñšç8t=�í”ÝØJ¶SÁ3óqÞ½®Ê�æS‘5[1./-×�7#½$DÚ¹vØçvJlä�Úæs«Ç5Jš§A¨}þ䑜�ã8žÿxk?MP 8�@8_Ú%}H»ïòóngu MŽ)×� ›~½IQ˜Ìñj¯«7Dh_p:e]Ô|¥šŒbš»ÔèÓæÃZ6¥] G5K¿<‚f-°äœßû)ž=ò£÷îßzd$�Ôc](ê³² {УE8~ž{qŸ�óìV!Ò’2Ù£BÔÆì1®F7ØMÅéÔ¶J¢<@šŸî»ÒõiÉô‰×�N ùãIc/è™TõÄ„ëhªwìݹž?�v™XÖÏÂÝ€½:ÏtÍø�£õ¸U”µ$ër}pñ�©Â4¨7æ6×ÛºÌù@8r°îxOêGh§ë'œ³×¸I¿ÂT�0kzΪü[½è×ëOažó ¾/ͿКë¶ Ïy¸à!ïÑ""G«ƒŒÓ—›Þ}寻4ô³P™W¨^É�÷ðÈ%è‘ çúaÓW[Ôáþf‰l¹¥ø4èâŒZZdB«¸Çx|]$NÞ#>™ÏütRD ù©´K�@{4>hÉÖl8¥¸Áؼ^|\‘«º}Ü\Ï<·ˆÄ] ®-÷Üã¶6³{Y†a6µÙƺ†�4a;­uûqÂÃ(ú�È.s´p?Mw¾ŠÜf+øª�Z¬9ÇÜÆfàE‡³GÌlãG+™¡}ÍC©e=Šäšî�ßÝÝÂø=å9¿ñ°•¯[ËÕúv9xŽâ®L`¯mwƒw2úéÚÒèá9 íHu®;ºô½Wíê[¤Ëöýí\äËõ“›»´ãþ�@w9ܯöð|¾äÔ=²{ã£UçÁu…t}ŒJÚúô÷®HI¹<0OF}îß¡¼øç9w¼…&<”³P™`”ô1GÝ$IwÁ²µÍ°=*õ5ûdÊo¥9­³%ò\µæqMå«O¨÷†&u&*Cù×à)MÓØm ·&n© ¨G#³ƒÊ? OØ4!‡0à ÞrÛ•Íp3‚>‡´—¢Ç4ÉæÀÓïì&Ñïyá…ËÊ�ΈÁ�Wð¾Ëu�hŽŽ¦bà¦ü,´i‘§ˆ�?PÆ�ú wðõô!Ô?yžÑîHþSÛ,3z0O?؈¬ðÅŸéÂ]ÍŒLe —sººÜžŒkƵÊ0ïÖqš±§ôƒÏ§• ló{Ü�–&b8µ‹ Â3S7Á¢GêrÆ‚2Î…�=<× J€â·ûlÐ%áfºNð&vÜÉáŽæg6]óàª/'¾ùn2˜oyÑÿO‹ÓÄ{ë*-S¿ªÕª»œáËDU'�{„ÏÄã˜51GDò«œÏì¿÷϶)ì¿9­ë"o —qMûdo³h•ƒ‘©ôuËã#?Ì€‘;À*e •³â/е o%tùùG•ž5 ºx¾3åœXE8b3×ès3e¤7#Îö�­ZPQKžAùk×Ákz¶áüŸU ÇgÃg|T:eå~«ÏŸúïhCu¨áì×�~}9ª_ÿñ?º&Ý*ŸÀi÷"AÞÖ·‚ÎÈц�õ­½³o±!wÙ_ØIþÇIÒ(?[D˜¼#šæ�ň½ñ±6²ø€{Åéž¾³£ÓcZ¨Ð ~z@‚ÐGn²Ú ˆ[’§MQ<.£�ÕÈ‹´ Ó€ê;&ìK{¿‰×™îßô[[ä•êi¢”žXˆ£ªuÁÒò§çÐ0[ò7‡±­$o»=¿Úé¸úõ1Ò":—ŽrÚ'óœw"Í#7�¶7m‘�{.¼�Ž”Ô7êbËå /Ëû*×Zr’4éüp ¼ �óáΗ;l‘ÉcN§÷–»P®¿3¼"Ï-TÕ¾À¿WÐãM%å‹+‚Î,Ö.xDvÈà“Å\¹yÿ2ð·G(¾5>ÇVë²¶Ó¢-Bœrħ.�ÃóiW¨öÉBäix/+}ýBäªë‡�ŽI.ÿ}¯gú)ÆÖ¤.&î9(wEN§ðÎdfñqy䧇(œ&8Oä݇àÇhùiÒ§I{†Sd$v?ÃQñãöÚéãɲGИó-rõlÿk¢Òî¦ç¨;:5ÛÙ�üåÉÎñâ ¹±¾ZD�ž"yZ•xáÉžF‡=õtQ¹©d–©Šôö{ñˆ×s»}’¾ :íU—N£ýÛXùÎ`ÍÍ!K Nñ2äš2ì4/Q[sG>-žÙõÿPÇ©¼"ÙTÉQ·GîtðÈaÌ£‹ÿ;²o=R‘¤o˜§Ù÷,J/?Mù:ÅüOŒŽŒ?Gº=x¼GåMƒ1h�îÅ8@ ]mÞg‚öa8%="¨{[ޏ¤zjŽÆ)sæ[æú�ì«ç Tœîé§t{HÈzÓ äñ2öÛ®­ÐËK�¼>µûF‘\þÀÄEÁW«ç@ý–ûxXˆî vak¬w8ôVe€938yý4×ÓyIõlà©plš˜ÀÏ‹é²b1 [?-è’#¬Q1ùCšY 榇îXF¥Ž'"ü ÀKQÝßÿ��Sñ�ˆ7Ÿç=�~û~n½ØZøËpÝOi~vþjé¹ñOéíNãõÇëÉŸ\_;|4;8ûtrÍÐb—6yæžkÄœŸ®­-±o˜ÿ€Áið²d8ZŒÇŠïy±[‘ö:°nÞ׋r<ân…ZwúoóÇZÒ×’u•?*×ãÜИED&î@#AÅJä±zŽ»âæ¹áγ$¦s•Púé8mU¯§¶ x¹/}0™“öÃùÿäôÝ–Å#‹Ñ¤œ~íš8L4®¯ˆü<]ÛÅ9W�ˆ�g‘ž{N50›»“zé¹*Ÿ½æwöSx¡ÇW‘áQ”I¿`ÿÞ‹]:!Ò—O»Šn9皀¿ßD+v·çûc?ïmýâã”é1•‘*,·¨¿ Ÿß€qYsNàfsz3‰¦ùm˜FÃ2�î�£ •P˜›4::OÃ[—û\‰È º-÷áÖ^<ÂÒO+ï~¢„-•]´ßwÀ«Ñ  rįÚýÍ :x'¿rkö…Êo¢2{ûÊá:žËBÂXúßñ^Û@�ô=�7Öôœö�äÿ«ú0ÒåP1ïŽ^±pY!t©ñïļBiO´—EeþP~¬Üzµ‘¸Ïš–Š«•OïJ©‚í�ð®M¬ÃÎOÔ§�}Ø„v®dªôG£–D^êÃ&ŸÎGmâ¾#¥#Ì ó?GW_ÿ6ÂÅ�Aвhõ(-pââ.>rXX°b4óÁP?~<‘›6wT…Ðõˆ½¢Š“ÙЖ)Ú¨zôúƒþbÑLÃ`i]X#¸¹-® RÒç)ÉŒ¦>ÿ–ŽÈ ð›åÚ›6�•2Æx­ÌUƒ¨,k)+x_£ebøÁ°²Öôw¯ÝÕ<ßÑŽ;n‘V >�t}î}ðU¦ß5áÔ¹mF0™Œ£·‚}#!]�ä|m¼KìA°—2¨&É™‘Íx¡Gæ·0, fÓ–I…HŽâë‘señ/¡ÕæÅŠ}²j¼X$Á¬1ÑÕG•‹¢ß–e"Pâ>�£h6¯šòÓ xú×¹T · Ñ(÷ᆷ& �‰”ãÅ¿ç´cŽ`Z=cÝè <Ÿò‡ê¨^—:úÃvÁyÑ*à0ßçOgSjyCNºÊ•{›¸dž¨£ÑöÑ8Œå°ÍcÏsØjõïãF&¿ÎV£’D+-~PX”,«¦?r7´/XUQÌô/ýNJ·MÞÏ´E�uÄ ¥ ó‹ÆOÊËjE5ñØÌ�~ý›âÔùCé†òEí¶n ‰”½R_ÏŠæŠÌo&ÉO`×0Ìß3y7{)ùÕS‘ùÁž+ç¡�²Ž€Ì‹ý��ñšPuag6wp«'8Gñö¡²Á-UÈßiF}Äé#|Á9M@žØ0~ÞÆ§N7Úûç�3÷ò§ü>Æ¥÷1Ú@“¹™åØèQF“n³øç¹oÑ�Ñø“/ae¨Y>#B,º³Ž½JÌ“û†–®c£Wbgf–)ïºGû˜ø3 Íáû¿œ€ÇØž‘²li’Ó¹/4Øó€5bÒ¦Á£ð*_f\ø÷ðŠº-R5ÃN”GÌžŽè•Ü->¤ë_MÑ¿ÿ“¦g�Ö¾¿: ó \ÿ �Ý?Zw§ß]á;rBÉfoíÞ#'{i§Lßúõþ¤Sâ¾GtEä¸á ch8]TÚ)Í›€­å¸¨{ÉAº¨âtä�_Àó3×ÃN›F„I6v&¾ç|¶âVW Gì‚8½yˆ\ £ñJ©luψ|¼ýÚû"q6yÝêqN»Êð?ÿqSi´÷­í=÷“Jöbe8î-rö- Ï[ÃoϹ(6Ffõ#[ÆãŸUKÎHß¹{XÆÃC<'r"Å1S7ÌÛ7Ÿì5ïw¢-xÀÎxn‘eÍK1CÒ*ÆŠHA� ‰)KÆÈwÆ�ñ‰ˆ9‡¬“ur8ƒß[…û\½A?}žÄ¸6Œs‡èúÝsºSÒ�ƒ½ý™#Ve`ÿ8Æë,]Ž7ú! žþP_….jtY°Ã(oËŸ�‰ÈDöyqgÕõÈz$ Ü;Ú~!2ò᯻rŽÃ©Å¥­Ô¼ˆFÝlå¾¾]©}�DcùÏ@ôä§ãö\wûT®‘Ë?Q ¥¯ŒO¯Óôt‹˜^’`‡!3ãëÙ£çmü/r+ÿÑ©¾Ú"î¶öþfJ’1jaðƒt��ƒír†säœG�Õý,ÔÅ©¥ Ã!ýÐOçó>{îØ­Ü}±µà Oï×Õ!ì¹çhët@ß…ï|ž#e¦G$Àn<�“õ䡇Eƒ_Ú^Òh=-�ù �oxA�lfÍú³V6Õ­YW—Ó²"ß ­žÙ“öÄ!«S¿9“€Ëßįúà±>çð¡�>�çÔf)z§6ÙNÞÝ»Ó\@"• Ž}7»…þŠù_0¿ë�Þ¬x¸Û“/ôOÅ›%¦?£×z­7šÆØŠŸV|ºë!Ñ~>Cc¹!ôŒ%�;ÕÜ™S`éy£0K2ànŒÀl,àk‹ˆQð_‘ÏÕx/fÀM÷Ú¼zÜ �S¾¾·¯EµL eŒT…ïxÎш¨•¬bnXÎ íìY÷³øéÉ_K³;'Þܤ/ä®ôRùý÷~jæ¿3"ïî§úØ0(~Et£Ó»¶SåïgDúÞ¹‘ÈTÑsÇ ¹=²òóÒ&øý«ù&qz55�¡�ûÅ-"s»¶âñÔO¡÷õ‹–Ãîö vì4c|²ø~…ÿðæoFú)÷F„‘î)ñpû"ÏåÔú¿!2|BœÞ¿�“ê©®RÊ–§k‹ù²7›B¬5ï�+Ùýû6í™�254}÷ˆWµ þ2cDôN‹][©¹kÛèqú“çÕI¹"âöí–ý÷:óî6¬ÉÆÛÁ¼oÖùs Gö7·¦ûL 0ó°}/´ ‹‹H _HXÌŸ£4U²ß‘ sIRïBr´smüg2]‰u�ËÌÉu…ûðiî'õ;2j¯V¤\&ן•ÀÉàÿ´ýòí¤ðç^ÏÖlXVqPIsôGù9Žõzp?)}ÖüUõ�îYî£^Ë EØ€ÑÇ*/á!?/þ ÍEeŽ�B}‚+]þ_R`hó¢ñˆæOô`ݱv0TB�÷Ο ¤Êº�‚“¬+ú‰r†®4õËõõ?º6²�v}äüÞ¥�©P¢ó=·CqRÖ�£�+î=Go>¯3ÒM~2lɳëS 4Þ¾;¨¥GÂ]:‹Ö»Y}Yù”Þæ¾Þ&v�Ã윞ÍѰ�ð¼¾É 7›6 «Û»g{¨£|?…i1%06ï¹,lû‚²Mº™uor$ÿÕi³¾#êýö“ç @ âùzrH£ŸQÖf ÇÒq–úPõ¢�;Áþ0”åâ¨h´Ï6®Ë<‰Ê æØËó+:\�°ÿè;ÌñŠK²ÿ£3Zš‚j¯s{“9¿ZÜåÝwëð’ìHžïÒxÕÀLOït=z­xY6ÿ6¡ólþ³«C¿–>'¼,Ï/ÉÚKVœÁ(¤H¾†½h ‰»S“m5ÀÚI¢Ã­ ñ™˜€¶Ìéæ_ê§�CBú8gvQ�]+¬ùj¨öâš–ïÕW&Šï«tySé„5IzòHUË ù²�¿“¤ÙĿΟŽ@«lÑ/å�´ªŒ:èÉÄÿ9<* ­Ü‘_¤ÛwÆcfœjª„ÞIÿSÍ´‘¾ñ–õ| RìF$3¹Ë>É¿ë ÅFMmž§¸ 2/Ž÷Ÿýžù±ÚÑ!+oèË(úËëdÑZ&™XÅ«¸YR¼2³D ¿g¥‘×™ÖÊØ2¾’®ö1ðœø¯­�6)±z/aÄÌêjú­C“™Ë“¥‰ƒåÞ,_àðØ¬³�ç~oÜToünÔ>Ñ€ŸEÒâ_£qæƒéHXÁGÖůoRd§¢Ér¢­§¤ü¶Ü?;bJŠQ½„K?ÝΓ§´È‡=ØÖ~;=x»ÂùJž.´?à=�ûÍ#Ÿ%áâ<ä/ë_—N‡Tp—¶Å›w¨˜ P¶ê¾;Ò´/(™Њ#œö- œÚ´ Ÿ6œ&içž‹k'ñµEÌèvà¿�ƒïréè¹}–’»ÊÊߊ]O2.f:ßý~¶Ó}ퟵKž[­æJ:#âêÖæUŒÌ—m ˜ûóˆ—v:fÇEéôJàÈ´ N�]ÿ ãCdë §¸^ry�Áw7ÐÁw [�.î��¨ÏG?*�ØÎ×]nï—6Ä7� sþ‰t¢­óô`�\™Á‰ÈÁ-ÇÙ>LEä`Ð×å3Ó«åûæëv¸î¨�Cïxä�Âsµ]òìËœvþÔµÞëu˜Ï=‡)OÂÑ<¸ ûéÕÿhrõùÙçû¨m1Îù ê#G$ïúkÇ~õrC`·øéÓk�$uri7⛂÷S ÿ‰~\¿ENK€“œ¼Hù°³ÒG|W-W7r� Ó¼*¹!{Œ\�ç^Ý+uzmöfÿö�äîPÝ[îAÃiôîd­çÖϲ�¿¶�‹ˆD`!âÑÖ%áWw,Õ2öýtÑ}| �ü»ÅåÚp»^„sÏ)Ê (ž$Å�mdŵÛU ]r§uƒ‹Sïì>³;Úäy·3 ÷ÉZ{pÁ4ï踬cŠO®L¿ÕçÝ#¶�PFî;¤ ûþD¶æ½þÚbÏt9+aRÕÆÙáÔ¬£/?e–Cã¶�ÓÀôUžž D–"·Y¸5S°Gôn§Ðî–¹ò?ª­w�$_&p:¼Ì#ºŸ¦¹ßM9è,äL–>Š>x Þq)­~+BëÎØù]‘;p�|<èƒÂYóŽ <Gz\úúß[ð˜8úfOA$w)RP/c¥ç¸ôºIwQÙÇä,$«üÍž*º¿t|y|yäoÀø‹«Zê'üðKœ–ìø!wAÄ«œOO4ïeÝé�Jœï|ߘ½”N¿~°Z|n;¶žæžpÿqÊŒè�·[Ãôt.¯£>{ݯ§vc…~ã@-ÏŸuÎWDD-ˆ¼ãTçwøäÎúòS¡-9⑹öÿÄrmWÚãÝë™ôó3Á ¼Æ †ÓAý�Ó91Q-ÑM¡wu˱Õ:ÿ<·Ž#b2}Æãš ôx+ïçv*ý–;n†²!'Ür-C�Ü] ïóÅü7Ìw;e{ˆ‡ž™tØ>àæÊ/¸™×›t{(ôâJQpwDæ�á¶‹û{Èe½éí�½¾#äI —Š‹ 8x.aŸCâ¯÷öÆÈí«=ç®N^#ÿ¹RÿýÚ&ò¾0…dÏýÖП�ò‹\ƒÒO ï|‚HD�Ô>·~O¡¼áô!gÐí�yö\s{.ÞmÜŒ1ý'ôÄÇÊ Z{ÄýWës}ëÍY.ýPêh�‡ÛKòi�±lµ® ‹¿~ÿwÅ›?oW»W˜Ã®^›ÞˆáÛcÿ}Ûí2hh£¯ûº½?¸�mnˆü»\Ö KñœAyóÔï€wBÝUsŽÀÏ}¡p•_Ë)h×_=Æ!Ö[¿«$þmË[NÂö&ÎzÎ÷ë÷³»ýNœµ`àoÈ›ÛåEtPZ¥¾„.I ¦~¡”k\ꡯê{—„%|¸3ëýö>^¾Ìû O^&…höC¡¯ê4P•˜Ü¦šO-q=Æ>› #|ôg÷êÖeìÒáC?£ž£:¡©ùß·^u¡½´sš§v“6³~s¬ï²‚1TM¢“¦Æ~¬ À-ŠÀú’Q­=â=©A» AÓ¤HÛ5¼(“ywˆ•§fòö²‚n.Jbaô7©§Ç?‡º�€dÂZ6¾`Tï| ~¢·â«%Äô {k…QwËùGœh¶Gø´hß?¼æ¯Åyû`‚i�^•ÀµA‚ÎᔸØ}´<÷G;{1fmðx!�;×ò™¿ÎÒs!%¾V}¦c¬‰d=ñÆ:YÓGG×â³ÓtÐ,Eþ¥Èiî9è9èR+ ûï#Q>¾)OiÐy­\ä/•m‹¤îä¦z,ã•£b_ËIoWÿí¼ÝûãÔð…ΙåäQyÆS4îÌÒÒ£'}ÚD·± t-ÛP¾9ðÍßcì-÷V¦¨¶{*YÓ�NþjýV\Ž*ÏO óÎ!RQW SÛ´=¢Í¨Ší™cqäJ=+L½� zð)Y¯(Ó#X?,,·�‚ýÕÕTf�8N£ø“ìÊÏècÇ—`V„ñ>õ'Ï3ÚÇ›åÙR‹P=‘Ï6=O"/Zµk3 Ýkè�¸ÝÚ:ÂGv|xþÏ(W™mv½­G£›9^Çü‰ï‡ÌÃömnÛGx–ðèwSLç¶®¿Pýnt•¡xF«™Ð‘Þ¬>É>kÚç®r¦’邏þ^£ž%ñ½c3Zæc†äízð�ãØçÕõIz^¢yí¡F�!…T�Ïv°FK6~³i]þm®Oµv’x¾‰"æ„Ä hn¬Œ!KKe‹üs~òR#–Sæ0ZxhàÛ$Û 9õìk„Ɉ¬��˜€µà{D‰$MÕ—ªIQ‘ Ç–6"˜®ˆüy»�x¼| :*£Rˆ]—|ü�"Â*NÙ‹�±2Nm|Ì»XñÖ6rì;åÛ ±ç.z`Éß#gÊŽ£z®¦èÉ8´÷Çõwx§óeÇÏd_ºÞðöU—÷vïîÇX1|²Ž+ý{ò“ír�t»`g¹<âÈ´åd´S‹øÒ;ð}ÇÖÂ~{¤Îw ?=Kæú/Dúýþ³ Ñç›L‡ë¹8´òâ~úán”î­>r.(èd8­WC~µ~µlùùŽû{ �³ß—N;©Þ†ÅÎÓ¾ã<[0F Eû ÷–çâß:¶¼E ¡ß âðÛÉ‚˜ë×'á3é£(4[ZÄÎò¸´Ë‹ˆÞ²K}ÓwwZ>‘3îÝuCV€á¡Hz·kÞl‘µßrñOŒ/Ø´ðó®½;cøi‰ˆtA(°zÈ�ÞÁ7—ÖÏ÷Öà>D"xÛ™¹õ´|"RõŸpQ☳îzííï-â±�ŽÜ¯s©œ08ŒôuY.00àß/è»w?ö ñÓÎÏŽÏÒa¦šñÙð»µùD*§'¤;{ý°"…Z»zNÀe2ZÌíÖþ>B&ÛôØ6/§7œGB[þ;¨2ž¶ÚË‹G>—œ¤9Br1œž¾Gôñ¬ç ¼¸>DŸšÇ$8ÅV¡W-v6!Êbu¿@-Û¹ñ(Wí6O÷ÆŸrþ…aÝyèßp`÷tè<Ò°—]�oÓv÷H]Òs"†¸£ÿyz”wp/Èñ#žÛj"r³ø©Û±Ó<±S ›ç·Ž…úþÑ‹ Eæö I‡<`�õlY(Ør|6 CjvF÷ý¬m«ø[¯�O�ƒ÷ñh;Ø~8$±²Ì$ôàA‘¨=B¶6ëZÁ0>Æç¸±Ø"ŒµG–¦•^àØçÁÕ€ç~Â…»-p¯Ð‰Ë©ò¯Ç7ø©wØù‘0÷ð±¶©ŸI©Rò¼ æÅ·æyà ¦Gˆ)’4í§&ó|Xu2æ ,jÄd2ž‰hù5�˜Û#Lz€Ý:¢Ù*Z°âSÁ©¦µ Æ_ýýƒ[Áã(kÈÉéæ©”o6 c¿Žqœ£Ìµ~Ûý»Lô[Å»² «!ü@œz¼pµç‘/ ÓÐÅÑ\8â…°¹ß?Z$“É×£Ed½¡g`÷/Ï…å�í9&·È¬ ô–ûШoæÁ¬{ §›sóÝæöÑÇ—ßÐþœrn10›~Úõ*Æå/Ä´³Þexl9¢W´£Tô¡ÚÔ퉌fü¬a»ƒw4�.¤?öÇdB¡ÒdïóÒ8a�7ÛD8RÚëâq(—ŸäÓ¡ pzñèã~c)í†7Ù@œn¶4êWºBÖ»�n¸™‹GbjBëÅ €,DG5rTuä ]ò=×k pŒÓ—ƒ¼Ÿƒ>O0xCrÓ\5µÆ„÷Ç1೩D(.ïíôw_Nðœ›ë’q×-c©SŠt üte‰œ« än½Íå: „DNP=ç�Öè½ÍÎï¿‘ÙfÔõÞxèr¶Ôö ¹{£TàÜÚiçò> xé¶B9w/ÝÎí] ÕÇãnšòQua1)70„ ß+ÊâŽK§¤·åÐõ֮啕c�E:LDžÒ‹N.‰J…bþY=‚ª™ù�ÛúÊ^¢•CN÷¸çO…`ég-0­Üc‚ó½:Þiуk:öýDÉ �¼ ø¹qzZ‘EË÷Žà1:ÃÐfc}6~Éx�§Ò?æ^Æ9)à‚i§Ê{‚xíCŽø‹š¿¥Ó9-Vʨ1fÅ=¾_¿'y±±ýɲaô3Éhz˜êŒÍžô§Eþ £“¶·­| òdˆ‹M†'(«##¦4Ž$'>×–y‚‹þw¥ºõ@?Ò~ë´ÍÞ©› …þÏ‹¯Ñd9†aÙz3¸Ôl8X48C³ÁæÏ#>à²;.}÷N§0´´"ho1¶^yÖÛÈÒ=v‡Œµ˜Ø ~X>þ4į16ÖáÏJL`ÿ.Ä«¯Š²žì<᩟:=¹§jˆD¥.ä´ë&£N­PáL)�)Ý"€¬¯mÄefj£Z•ÉŽ%]Ÿ4´Ác\ŸR*`·^Ê8sÇ—ý¡6™¤0Ð\D&r¤ôïÎs´òC^R{“Úi‚Éu¬Ú…$Ï»¼¢qkIC•¹•Ì YNóßУÎàȇµÈXóÿ­2ÆýMG>• **y¡�E µgØLAãsÞ÷ ê&‡îz4åGMÜMä~mûγ>˜ÝuÞdZlòÝÍ…ðïÿ KgýOæ{.ƒøeñføšüˆ˜\4ÇE$?*ú}áG¦¼@¨Vö�·Ú®Wô7)¶Pr÷E†ŠUÿQ±R7= (ÓO3NÚ]·ýƒºä¢?ŃÓ.ÐÂbüMF¦uò$ Šóªõ9ϺU 8Ž<Ö3a}¦ÛŸ·×¢c34â0å÷)”˜Íæ iì ¾æz>ÌÃíº¦ëŽ#ωH÷Gª¯jqýhòë(u‚ó+NÖ¤ ¬ÈXϧ§C³éõ¸Ý¯ç(=ôC`jÞ¾þÛðˆÎ¸ž°:ÄÎåfy®úw¥{.¤4Îp¤F¼;Ö]Sì8úu—mFGd|¶v˜fè¾1Ê$0k[ûW;ÍSÿùK~V”8’®>þÑ0¸þŸíÞúϽ®ýãÖ±cÊ ‡íÕoΙmX º´ï¿®ís�Tѱä/ï¡í?[?±UÚ¤ÐnÀ‘úŽ-¥ë‹ˆ$/!°r$ãÝ"ÓúKû4v82Ž;YÈçšÛ#�ìhkÄ(KNÊÏuóÃôá9¶¤Žvm§/ë¶TóKPoˆŒÙsž‡_°ÕzûñØÛù©‰¾Åˆ\FV< äH¡­švûÝsÕ{’†Ó<2p˜SŸ ß1xÇ©À_Èaè¹\-ˆ\y�<ìø´\ˆöõùº×­�ç*¼�éî1OD„Žhxä–„(, çÚr¯9viŠ "ˆûsŒöÜ‚Òsìø¼øØY·ñÜ’–!˜GÎÍN—Þ@ÕÜzÓÓÿ”vM¦ô•|þý |¸m™nM/­²Ý0ÂØ ©ðœÑJÄ�¶°v?¥P‘«2’ë#WÆò¹6Crê9W‡Y®2g4ÞÚŠG*ã÷ÈÙâ‘1~|¦§v¶5†±=#æúµã¹ ‚|ýÀÚWìÝ#�ÔÄÌz»ïßÿø…îÿë�¾Å|B§’ò`9¸šåÁ Z‚Ï·Óžt¬í¦’ep¤ Öìæ“‚=ðšðùà”aÞbæ‚SÜ‘,DZèüÏÎJâɧ@à ÚyÐzîÂgSá±bÎÓU¸�Þ�‡\y„óÚào¹½ÚÂ*Ú�içû‰âØo™6¹hÑãIzæp�›R~-ÐCnÀ’ºø¼m‘‹¬cÕOu»Á¯8¯øz¤/�¦-àsÂ8qPRæý"×�¬çÕ)È€<§"ÃË�då‘RIê¹zõÛµ\›ZÆG(x“}ˆœ7^;·¯ãðÓuøeѲòy�ì-�‡–óƒ…Gn0÷zz:òëìQ±~«á&�Í­³BÿcÙ칦€r?µ}Ê RÜH®iø]¶þW\_pzãt8{2/�ŒÀg;½P"ÅåÃ8)¹>ßù‹BY¹L\ufSÉhΧ6]nؽtwåQÔiå¸yë¹SÝ?ˆçÍxŒ×ïÕ”–o÷S‚=ê'úÚ¶Óy[û7Ë4¯spÇÂGФK ëɤÉÁð&÷6gÎÍ8iÓ|��“=bfûDÊÚ–ãjRn ‹ç[€vœæ\t¬ Žîò}FÎzcí~_dêšk}=3ߟ–  d�Œ®Lf™m’&yÁ%ê\¡õöš/–4œÒûýåó›Á}A{¿eôI®•ç;Kæ—xs×#’± ÓŸ^‹íÁ�u®ão§†Èžjó ÑÁúXeØ½Ûøù­�ëþ¥e£™Ç8R¥E³‘¦¡}¾ŠÌOsì›ßYó|[qØù’E^´‚Þ¸<&ÏK†6¿'ìUÑ/¤ð¶ïä–mƒ]1¼fe”Ô=ôû¥ù¤'„ÌÛW«“^t± Z2WonW–¢Àç©MKÊÉo8d9ϼjyßü+õÈx•Hi ;øæë�ûCÊìƒâ`œÏdï¯úˆ´K¨ùýeÂG½Ýí½-¾]—qÉiƒ£ÐõÁºÝ÷×ï[±5 ^éî–0¯˜Ûy%¯]k‘èsíóø´z¥?LÕï[ 2¾Áño–ìá^ê4×§K©K%|R}ÍuÕÒxÐ+ZUÑ9*3š´­4ðk ÊÊÌróïÖ?gpê58ŸcmÍk:b‰¸nǰg·QY›ç¶ñùSž´9ÃÑL+ç‘ •IUT?/$…Ì&•_góç÷góÿ³^3œáÆ„Jaî~Y\Œª,…´ŸÁbtêbÙÑɸ\ŽZŸŠiퟚ¯ýù¬Ó|*ÁŒÅ?§êϨ;3˜]áë°³åPcç»JNb›‘N¯6Üãá´N¬ƒ%Ô4p›Ì·IÆw¼]$�t�ã7Ák^òî°_qä�¢øêÕ¹Ñcþ°Œ_›ªY̓}>˜|ÛmVZx$]c/€ªUÇ9|E{Ôªª3î¬pù¯j,€Uh/ìÓСH8<ÐXNí÷_à<�eíøsav/Fú\^"�§~ÇPlRÁ‚¹ÏÅÜœé(d_¥ÓÈŒä×2؈³öWKMÂ!�µ×ƒÁ¤ù™Žñaµ*ó2Zmaþ’œž’bÚkûÌ5Gc} Öþ¼•ŒÜ^©«�áÓBJk´¼®‹có Ó—7�ØÕ ‹Ÿü¯-1¤3Ôiý�Æ»CåÉO•‡gnüžJÛK±MyÕ¸AèIÂÃ!>שˆZf2nÄ/ëuœ~/Ãè­:'囯p¤ŒD-=þ›ñóVæ#…�Øág‘kîtF?ykÇD™ç˜Ó6ü„#È,[“ðä §üªç´›ì¤²øé£%G�WNqš,v€ö-¦ý鹂Î~Ú£ÀñÝÏÐI žž«í³ÓçÉá2‰Ñu¶¿è\»Wg?•sÍp½$‹lýÓùõüWû}ÿ÷FGÈWœ÷hÉûÔO‹<{d ú8ÊåWøÙ0º¼Íçy¯4¹^H÷½—×ø.‡Þÿµ_µë’‡x/ë;ìZ=ßÐKã“ý”À�–ËÁ¤T^®9ßX nøÂÖLì/TŽ­hƯe¹¯a'ð!Š´¹sÎ)ANºoÿ…ˆÈ�_R„ ‡Ûù×Ó¡Q2•Á™:Æ28V/íÞ`x¤; Y~#ÇæäVÚ®Z5X='Œ ú·îÔNĎاiC7í§ÆΖƒ•¯#BïÝ}¯shÿ(›OkÐ7êú»�JÖ Ç¯XôÈÎFº"£û¿-—Òdoè¹@×N rúù–èz‚šŒóÞŽÂw ü6ʧ’Y\Ü3^z‡S1 ±ô¾vûë°Èv¯FÜø"«¹½×c¸{¿4'îþÑ»îys®µÉÜN‘ÞGy_¦}Ù!?˜Ì˜x˜µ'ŠÎÆ7ÕMšwDRÄ¡Ýì»øïÚÞ£Oä ÝsÛ«Û!'ñ¹yaž”¯Õr½–âgd¯ó�‡�V<°œlN¬4òa\nè¤~ºŽy6™<0&Kü÷ ì¯yŽ3?Å8B¥q]ÛxÈí¹,Ëm/7è­Ëé@žצ �6º7à™ÌÓà÷uj¸÷=È¿†‰SA ¸rÕÓ8+ÔHõiý.Ë”¿cH›‹ëžTigË“æ=Z µ}\^0Î얧ƺT\JòA+]x@ˆËÓƒy+¾Á/º®Ï9:è ·ÅÝg�@]óö)F§œÏæWñ·¦kóÅ®­ˆ”Ôç.·Ý&ÌKf£(¸'—�ÆË÷ûØÿ³iT„,>�Ãyñ74ܯð\±ðŽž¯"ƒ� ìpÞÞ–Ô§ËÏoôçB+øÐ­+ï7ín×µâ†S€yð¡ž"·å 7ëwÒ�¬O—š’0-£Fò¿ê½„8ûÀkMxÍÇÄ÷âVkG2"}èpÎÊOê<«§'P3•^áWø.)®M ÞBa+ÄBb•È™þvù“ET£6ìµ$Xšaê³ö’ÇÏ.zoŸ‘Œ¯/Êñ¢AÔ—çl5yІõ/Î.$xwz�ožá8ì²H¿¦Œó�¨éhðPþý¤íKq%…ÙÕ/+4Éó–æð9ÜéEŽªp™™Ï‹êSPq‡az7’åÿõάϯ‘.‘,K }Íæ}Äg–�#öJ¦¿ê…@Ñlìlç—Ƚ«VØRæ‚vnYΣÛÂ4È»ú¾d6Ï«QK‘£�ÃOòa±®jéÛM#Z3=„³À(œM¥MF”T�òoM•bÔ8±vAøø–s%ø .—¨Ÿ%úÑ0ÅÔ uj¹¡³¢ÙÃ'%©cëöžæZ‹nЧÀøWåKë2b³eHr4\Æʆv>t“iÙ¹Lò?©\Ä;ÕÒžÔ{¥�댹˞wQ3ý¤i >ÍʯZ?“-ð‡;.ŸãyDÙŸåQŽyû·ÿ ‡×UÎ>Õ¯ÚÁé~†pÈÞö¦ÄSO`)} ÕñCµ‘àwÈ?Ùå=è:õ'Äž\ªcÿi 1ÕI»§¸;r³f}\šTCª¼ãA:Cu4(v€ë\ûýšËÃm2ž'›ºÉŽZGø‡l›u¬cŠi¨ì&^™?Ex/*ú¯ä{ÅõÑ”€é³€‘yœêyM¸¾œ°þ¨r›ý—¾�՝޸X·É•0Ü)éíÀG5„�‰—œ… öÙ¦ö:I ÍÉX£ÕøÍ+ýP'q�ÄM†õªoÄ0]h³èÙûÌ*Æ¢“L�c™Jë•3«=“3“£’üÜR-›¦>7Æ4Ý×Oúëè÷1Vw5?›ÌàvŸ¨¦ »PÿƒŽ"½:åÕÜ«÷ù¬µrû¢Äy°:â¬_ÿûÿÞ8Ñ�I:!¢ÁO“E·x9û7"°>|«ªh¤KÀË#!c[¾M˜ÿÂi«ˆ`²;N9\tŠ­>N—4ߊO@Àøí´L•¯Üö½Á3?ýÐCî’µ³ÞZ>]‘cê�îÅ ¬o)�‘è�\`çk¡"_–v9µ-”íÔĘƒ÷&aœTÌZYÚÖaïÏÇdX+W=eü£N†å9÷ÜW<î{[ÂÖot4lUÙz=Žrâ9ºï¨ï OòÔ³:�ÁýÔ@¦�jËh¸ˆTçÓ£ã\&r3)%·`«Iv­>¶jk|jÁ¹çL3œÒYPåß® Vët—ÞïžËnCÝpú³o5èp^냛M4)Ývz¬Ñ}›Ó§òy-Û-�ýújpO¥‚ƒg-sñ€Ý7…\Ý÷vëBIŸ~Óã«Eêê[;vÕÖ¯®ù4iý€ºöˆÙóá‘ȸu¿'’ùéÒÁWö¨Ó×�.ËRxö¯ýúíwÃéÜøzãÃo?�79<"Ù“%~À1U~:µjÉa†vË·<55ùµÃPç¿oþÈNÊ9Ã9¿7½€S…½ôðx:8-ûüÕ0Œ�Ô–;Õ쯆÷òÖ%3ñ=í`ÅP)¢„Õ©ÐðŽìZ2ªòœW‰Öpã[w*E^åaJ3­×ÖuDø±íèx=�¢Üdñ³Ù?{kúÚ-w?ýlGó8*øiÇãÞ²¥ôœŒ=’0éo§¹Ÿ²èˆuPl¿¤´U)kvÄOÎ'¼ê¡?ôV�Úõ­z¤ù%3Jœ xAè0<§ßinÿûøqwiúã�\‘ËôÔð @Ù'Êw´Fú<´m;CŸì9¡ 90�ÓÌ­ñÈöû#ñRJ½+yLÜï|Î{Y×–<ÌsØuüYH�ägóe¯¿åÛjŸní÷í£Ev/eÐ8E/ã…Üz‹X׋ëõ“ç¤-ó¦ô@t¨DÆÞÏHcr_ÛCÓ¢MvÜ,>8ç �Ýð�‰jfñBÉÍmb˜?§õ?á¾G®¸œYmWýlô(ÂúNâ{Æg¸Ñsäú›ž ïn¶&l6É•³üÓs=©/,°žÏ�´@/Þ:˜O«(r{D°="àªÛŸ85X(²M ·»×\Z4ð]Öãô [�ç ¾÷\~{.Öö%5‹œÀ„ÆVîà›sœ^ÞäS—l“¤ˆ�Ÿ¢zýÕ`½ß²¾Ó¥ÓboŽq/À*ØÝ(ð¡ÎøVQžŸýñÉsOúáòxqHOçôЗ(‘QÇœï;Cng/zåé˲ÓéÑôçùÔü�ˆMÆ^Ý×Ošæœ�`,38~¶Ñ?Fà²|hÐwÁ)³ºö{[£¯=®Ì÷¥ô¿�Îí÷õœ©¹Þê§¢bœ ÜŒõÚo-úÖÇÉ´Û¾ßñzæ zöŽ7W.Kï#žS¡O‹;áÏ?qz+0óølÅ"ÓŠœþËW·;Õ¾Fî8él°ž°@¹�+- �f=üø&Ëœ3mIξ³!÷æ6®’ƒ7…þ�Ü{[ÓÄÕ£ È à p¯÷~€NçÙo/rmös�ä6 ð÷½}ÿ8±ÿ—éÄå†yx£yØå;ràöóhÓ& ‹ ÄÍ“¥éq§�9QnÿÒï~WÊ)Ø;z[Úø®kŽÜýzotýø2jƒ—B9/�ñÆÔ­Dô�öŠ”œÌ )"¾ì|ú9!}¹øŸáï�3Ã×ô1+_žé.;ž¬:>�êcÕ;<ëýÏÇ #·T'ßjŸWèÏ:7úŸPŸŽêðp¯ãxëÐê÷§¥T![çM%YÉÀׯéÜ-w1ÐÖ™Mÿ =¸À HkÅ¢9™îÇ€©¾ã£�`§F:Ká©T-u¥óޔ߉œÞ6¶O˾òœö,÷¥r@ßáÆ!ÌÖÌ\|qÞW•ä…ŸeÃtˆ8¡ÒwÄŠN`zNΘE$ª>›.�_lʃ2U’;«}·NdXü›=¼cÑU'5íXŠÿΰÇèÕÛð‚Xˆg– ~L ªrŠÌ:’ˆÈ¡rOò?sKÌDHc=Ð ICχøØ¼ >§‘t?aª»Ò8²K”~“Q´R(Sæ+áÖàÚD?ÉÌ4�óyv 0f�·“|‚?¾aàŒÛqqêŸiJE|³u‚ ³žbd]ò?ªoZ×´OÒŒµ:>húX¥Z«ÑžJª'Ñ.ãê80¦¬s¦þlDÎA^)9Ž�s9ºïÝå™üqôÓÎ=‡]àe¡ëŒ†×Wºïmbñ’ý«xûlŽ‘Ó~ϯ¯ ÏÎÆóHmä3þ-Fa`®Y•³Ne¾ÐëÿïÛ±³[‰äZ°5´�VèIî  œ±D�È»>ãEl~š."÷öwài›mÁ |Ç¿l9{öÙ¼a€õ]li[pi5¥o9ùJô'"ôþñÿo¿WD2í§±n§š¶S(×ß^ Q�ó[Û�²ÿlt\.-BÇde«&N“ýô1Ûvœ!±ø0ªà°bÏE+ÕužÓàUÆ“©Veé©B¿]~´ˆ!9{ÖˆQõíU5í7å”Ûè€Ü‰z[rSÏ‹ðwœÖ5×­¸¾#âr;]ÚëÏQ<¦Ù†'Nå]Îÿl`pÜ�ÞgÚÁÇûˆàÔ¥=ÒíûúŠ!†7]×±íZÊwðÔs��reEn@;#I‡gñX- ÇÎ_mÈ÷÷vý Õ]œ‡�¤A7|Þ?Ûçíßp¹ÐÅ#,¯ 2]$Ñvùühó×—´…ŸK¯çüº=ÑÜ,ˆ!DŒ¯¸¾!áË7伬AŸ¶¥í·x$ N÷|û¯VrߣqªðŠS—õ>ç¿;øÒ#F´¼Bà´í¶lá'ÿýwý�‡geüž;Ôù#YÉ{o‡\FrÒ©�Ô·{§{s g¾*)êKÆ#CV©i&áÄìÓòÞøvý\±Øf‰ïƒn�a.Ô<—à¹ÃEûíû‚Óü‚�Td¶#»ÍÏ^ÿ¼nÍ4‡©äæ[|ËÎOÿä×úF:œvJ3dt§Ó‘R–€¯Ð‹-G!vâ‹t—¬ëäõ«�_=)�xN¿Sçï½."³з~|ß¹�Ón~ê»ç�òœO|æS?Uµ×÷¹¾¡æA„tqjê®±ç�5Ï ¯¹ý^ó´"gë~Š{�À½ôP»uäu› ëN\œZ›ˆ¸Óºg4h¯¶{¤ø¶çË‘ÑÆñì 7ý´G´qRÍ}wüu�ÀÛ핇ØLµ›pÃÇ!ÇDªŸà¯Øi_Vvƒ9� N¹tœÔ•�¤,—’ÊQ7$/›pjóy^—¦‡Ò©”-‡arD$ðüÒá*C/«?|–z豋øéáÈæâ&„6#žáß:1×½lö¹ñýê©®ÅyÙ ¾íÚIò�ûå�ß‘–Ûñ{,K:ô9 ŽÐ §«èî§��ÜûU·"F�wÏÇä> ¿öÜ]6"p�:x(Îz÷·ïóô…JùƒÓ }ìþýî9Êf§I ¤tn‘RD»¡ß¹r+‡º°|‹+œT½ç–f�åÐv�ë¨ä~Òí½Xö+zo[&ò6îsÓ&Rµ’M”,­�ìþïnæÛbÃ�c .ž$±ÀãzÔs†í§'ÿw¶ÖƒŸ†~Gˆ™úxÝO7Mó\y<æ7¶ˆ­íëºVd.®öxÀï[¤å¼-=ò®!Š…Ïe,Í/Z¡gý¹#ä+OßP‚fžC|sóSŸ1Ù=‚. Ÿ:=ß×�F{.2§Ÿj'ì„=º­ ºI·ÿ}z-ÙŠ-Rj§§#Ô>‘Sw ½héé­ùQkʵoòöÞî}i¦ úøhõ¯7×»˜gð„wÇŒ}@ÿ‘|‹å:}±R… õ>vûpÛéö[/�µY¥S„úâ¾9 ††ŸäôlÏû‹v²E~.IîN—f¹·ˆÝ½_ÐÑÖ&ù)mà�3ˆ‚ç·úE‘ù„ö�5ë*_ý¸|6¸oÿÖæÿË_(…Ü\JÎT®»ã+üÇ/œ2ý¼¡ÕÞ`&KòtœÓ;ô)nLŠ*ŸRÄ,ÓHc¡+�zÓÒ“3jk‘Ÿ‚­S,8Ï:oô9³¡�1Uoз�¬?hš.`7<¸¯|Ð/ZŒÿHŸ'�Vïr¢hYÏf˜t Ð!Y•ÕZø õÍ2æœ1:�[>¿2»“hPx(ô�äOnØšhRRVgû•9Ôÿòœ¼ÛëG(Vàó¥4 ]1o�{¯žn¹r?í9·ûqê®äa½·2ý�È…S§ñ”5yçß­µ}½"rã’é¶^ZÖrû%/KÚúƒ þ­@O[?Äå`žâ†ís <(´°B€ZÓˆŒyä.ý´Í�ìE~¸¿äÑTcAåäë÷DŽ_—»ÛÛ~ùúÜû´�'9À¶¦ØIrZñvqô»ý@nNìøê¥E4F„ó¹/˜ïuÌ5Õàú."Œüz šã{‚�«çU̱‚Þ†´-ÜTT¿å£‰b×cZ Ç6Î…åT=IË·þ;ˆÜ.[¦Ã÷Ü-î�9Gn]|JË¡Õ"NwýùÞYýzNËHæ ”º¤†C ¼‘ۣ硹´Ïí”[RM}|ËΙG³ç>•ŸŒ›—õ~ojuÏõÖÚ6:(¦´ï6ú¼ì Ý.øÎ æˆÉè'ràÁ�EPµÖßj_Rs ¶/ž³5GôŸÉÑ‘=§ª‡zÐx÷ùoŸqÚ«—ì7"ð´˜È+¡Ž\ ëÓÆF#ô—mÇ{§çF<ê?n‚Iœ†5e�ë&ð»"…ß®>•_�öÓ˜OÞ¬u¡àn§çšÄ½àâŸû窉-=òÄ#=¢bT¬hðh[ëy-$èúl§Ÿ§L]½F.+œü­ÞzÍ OïaUŽˆìCtž}ÀÛ"r%®C߈/žjÒ Šñ7K~@äC;n�iQ ÈÃ/²$Šk­ìÈëÛV¼÷éFûŸtº--òZü:âqqtRŠö! ØÏÁwâ�¸ì‘_]·Ž&ø›„*y*bç²7ðß-¿Z–2¹èÄ?•:]Ûs¡vAîÆÉß”x³§[¡óN¼‚M}&ó*kÏ‘tÁ›+²@Ýßçý<›³YñÌ6Wsßtnúÿ¶.SÅ¡Ioˆ\¡.tº³F= µ×íLW‡ ¯S»á¹Ùöy•¥Ž—Æ´Árµ/A–„ùOðgOKƒ¿¿8¶ñb¤$†ÕÑVïŠI>Yq\ ª,ãÚ"Ëþ»}ŽŠßôcû¼ ë©0†èóûhøøiî_™Šº—kË)|ÇzFMBêãó\¯‘{´õ¹ ~Y¦—ßahÒ,�^oÍß>ýnøÿ‚õÆÌHDâÂ1O±Ê/œn}´{7Ï•‹ö^÷ŽSµÏ×Ì(± (šyæ ˜Ÿ~îo”hÿ.� _¶ïõ×»m,ëv¼ûwÝ墩½ë±ü�5Ñ«‘§S#œóÅÛ­ÁÿºÈù½m:?®NO��Gð\â�—o­¿íÅVÆ`é�ƒJþ×!É •ù¢Ø¨ÿäbm;¬ [io¯û¨4Ó¥À¤6ª2ʼn*ýš?PÌuHhÚÝPA^G:ã‘.31nÎäqaœ=ªJ`<ûÑõ’fÎ:¬XÇÁ¸ãš�É(ÒN«zÊÐ õ…G¨I[ƒË£ë»Ž´ß5“ÕèàhÆÂV¼[é ”‘KI:xê†FFô3ét|'}gÌ”ñ0+ý5,g,ÇÒbÂø3­3¤½?ëNü0Òן–‘rX2=¹Výe#.| ÎhÒ�‘ $=d…h¿Ë¾¾I6i�Í´ï�º f“ÜÇ‘f4A¬rו9®rŸŒc`^:š:·W&©¾Mz:ê¯Oá­¹E•ÿÞ®×:Ò‘f|¥ÆÌ¡_£±L × FƒŒ9JC{m3sTõ1‰C§ªd=E×Ù´ "WˆôD\ Ös}ñŒÖÏË€ßéS]ýÉZO$»DVêÛßÄCŠê÷±¯rèZ›Ì�eÎýA™�•]­ý¯ºBzÐð èA³üš»fPVs[o•ŸpIuWfmº]סݴ¨>QQ£^’ò=�W…ÝNj܈Q»êS}]¯eûlIΓ<>ƒ<Ôûåûq¹-þ›ë6­¬ð¤X‚•oõ�hñÿ{þ½Á‹“¼tKx—ñZ™Ä‘_ !báSºÎž;oYæ–›b{“>îž3�üZÆ×òH“ïêc×õJìÕ²A÷µ³~=ërÎ>Ãá1–žctÄ-VÒý¢/þyýþ]•?�ÅTLæ«·@7]@_>æ™>¸ã0nfÄæÿ/x}6ù¿XûßfÇu^_$ÙkuïçfæN*ßÿóä]*÷œ;oS©J¥’ªIÕÌyv¯e[Ò~ �´ÝϹÜ{µm‰AÿDB`�¨ô+˜]®²Êe. ¯³µñš%ª Iã<ïÝþû—b‹…”zúïÃ'‡p+åˆ {Ü€¦�_çç~KU7h–OwîÈñl9Ô.$öøë½¤\ç¶¶­Éÿ¢9áä"ÝrR£Æ™Z�㎢öÀkÉ>te�Ù;ÛØÉþ"Ú¾�>`ò¹�¶ÅY‰ª lBÖ+¸¤ìãÞ+}CV §Ž! …ØËMO}—Ï‹s\©Šr~XÖR.w…ðø @Fªm™]�Í�Ä>0Ž˜ó±#á$ vTâû‹r¶÷Ç4J‰l£Ë |¦ˆ*Â�!œŸ3rè­Qÿ ô‡åÜ;"rO\#3Å�ëÝf¹½Dóy¶,Hõ2ß¶ -à[j¤IòÚÚ»�B‡ÓÏËéÒ,K9žS/?önÏœŽ«‘õL=ÕëÌKÕ=é^oŒ'ºÈ!<át`�ýãÝáíÙ)“â\-Æ|;wß5VjêØÓ CØé-þʬ¹1ÏœŽÅI¦%ʵ¯?ihÖo>°Ü‚âª3N =v�×0Ø!Fl|gtÙœŸ‚ºfá]o}¸‡j´ 9gQyÊè 7D:2Å •z½,BÙ"€¤T Þ_Ð1•¬?ÂkF…�ÿàrcSFÏËrOÈIUœòn’Ùi°g‹ÝõAÉN‰Ý& ™9“„ ªsæÊ†Ö#çÙio—Jûž ^àïÞ�3tî>t5ê¿ÂÀÍð¸dú'|e�Ó\„Ni@IlçÏô�9&Þë‡Ú;;íž{ ÖXÖ]²œy%‘º;"W'DZYDîd¹Š좞€W‰¬Üí´æ4+wDþ^`'ˆ¹ÄnôñíècJ'fÞ‘cq²œ‹pãÇýÞÕ<Ð�E5HyA)‚!óú{ï!œô¡ÍÎõtåiÿ,âô‰û~\ªqôè-rè8µö¤SÒ žàMŠ3þ¼äbcHé~âMðÝmZ-…qzÌʸ;"Ì.´Ã½äòèÈ~S“S™v‘(؄ӿÆsû¾ö4Tm¼îÈÍú¡þÎå¡õï7ýýy�Ÿ„ç ü$ô…ÓO|àôjŒf™,ðqF$ݹÏÎÇr¶ÓO!sÄîôVz£È™ö(7<_X†uMÿžvúm‡s4ãúŠÈ¯ ölAêaq~v…ÜÙð=ûàïMíõ~ô²T£ÚÚ %cZ¾U.�ò;~mP£¶¦jõȵxÙõs/‘m¢=³ñ#h‚v" §Éó›×‰Ú®ä´åÈ�LQWW›âXô�ŸI#O¿æ÷…å¡1r�K|£ð9-¿ÃÀM~…îî™±âèäüiëJwøQW0ØŠHãeí·Ÿ¡/W³¿G®ÁƒïðXG$å_¿TßÿÓ"ß/ª‡×IýÁyŸÜ¬·€qBµ¡°ïPÔ‹ãëºPOaìG9æù¸¿|!"ûCÈÛóÕ^|û¨üxò{q,%[¥D‘b…*«–­Ò»OÔZqîEòŽL¯ô ÁHþs¿â�ô`dÜ9rö'JmóBÞyY¢ÔÀ+Ÿ=Ô }äE¿OkáŽîùÅ »at Ûž_|?9Ïp&zã ©­ŸyË}�æ»Ý²h•« Q³Ý”á2Gžñý•{OJÞipr4ãn™¿^q´è±¸“ßÝi@šÓ›èýÞŒ9z8Ùãžwmt C”1Ìp)ÍIC+tAoàZÀ$Ü �Üo4ãÑ�]›(ªÒÊ~‘¡'ØKä·UÇUM¹nõg»«[všŠqTyÄÁ0U4wŠ»…®ÑÆÏ'Sx@-‘köÀOýQ‡ë"agÏ/þUêZ %Ò~tᦸ‚jaÜq Ùð²ÿXìéVëg ®§K‹9ÖpóíÑä„W…]# •�ªŽñmù© ¬ xÔQ§çpÍórdŸR>!¡˜Û¯íº_z}Sa ÿðÿ ÂèžçÅF]rFè§ç~”_˜-¡î˜ŸccÀÅ]}¦í<š>0ùÏw;]:û&;+ñg飕éd™j6Ì�û“k?c¹îâßYŸÃ¤IÐÝÔ\ º¢‹O«ÉÞŽüëéKY¬"¡~óieÁ†šœš¾‡aO·�×ûêì9 ÿùf³wŠ7á~?òi?i覇³û?±K½âOQ×å“?bˆ ÖËQË�v#èZ�l§‘tà sòÒ€[L«ùRT<ý¹Vㄇôp}Q Íªº’>þ”õ󠯢.Zu7ÖSï1Þ¬ó–Üegÿ“¹­j¸^£ÁØR§B~ù‰ûÃ.ì4špÝÀiò>tôŸÌGÝ#”ûjaÆR£¢˜¼ ôë* æ %r­*�…2º7FÔSsi@µ­Bu(Æ.J[c\çÚC¨éÍZÈkQ’fª‘xD1z)ãUÞ*soþo ÀyK›~™‘ý·¨mâ8¼A÷ãˆãq�ݵ$¸Y©…šRxÅ.æ ÒÊ÷=ù÷#aŠKt½·ƒ˜Úg²ÖOð^ýÞç¿øÛéʪàûßþ›èDû-9¶ü´å[03®‹'~Ö¢Ô\“`”_&ôÚŽ¿@Øné_w´Û?¨k1Ì‚r‡ã—å*²¤A–ë;i7Dò}¼ˆL³­­ àlØZû…Sgj¤£å&Ò�‡�÷šŸ¸v‹ýM~˘‘+é¨g ŠhJ¯+ï?õúüáY„`AÐás¬€ó·ŸÚÏž¶ðZz7QXÙŠž ðÓ*rûKó°\ÿN8äî¡àíT¢‘|ßÈÉ÷ã»Â÷¸qìTXw¼8�ÆT‹%…DZŠÎ§L– POïµ\^|ÜŽ�·ñ^qÓ">õ:‹ŽS¾uËNnzŒôt]ëÔ¹"r^P§Yn%ùú¥ø/å½§± %'«^Ÿ,ç•>±ÔÀ!äÒ«{NåËY›F(X„™¡}Œû˜‚Íncý68§/½®ôV±Ó«E’^3× ¿7øuó5æEµ ù�g“{Ó`Áï•�âw4Û  'ö9?ë6��¶Œ½ËÛ3¡œ/(ÜÊVYÑ A®âܬn½.%r£ R>ë49y— ê8Iž%à�ñé =æÄÔæi§±ÞK7à Xò^µZù(6wôJo¿ÂÏÉ¿+^}™í”T¡pÇkœkÄ?ÁvY½½Sìl{GâX»bÿÿõôñÉfLÔœÛ� ÷vhI%…éx€’Y “@á‘Ö/÷<.­Ú¬øRüM¾›ŽÑ3m[#�º�šgâî໑€þyÊô)Δr­êGo²}còù ÝoÒ’­ñߥ„‚óÆÞu€ <¾ž>*n¦ÕÓ£ÂÌÓéyéO¸2¯3Rü1 D5Ñž Äæt ¼ £êùZ„2ÄN×½—¯w�uä$_޳¨ýŠ›ïÇÆcúÈÑ"ú¥uQ¨u|kè©ðLÑúAFóëäâÆ&/Ÿÿµâì1àûÿýÿ¡ÓºüŠ5_1”…ñÚŽ N“Ñ¥|>¶ð 3ˆD �H’3ÂïwÇÛGíï0—(ØÇ?ûqFNʵŸzÅ8o^ï�ˆÀ¿�w×­;MS–õüËi¿ô §Åš^Qï~q³Î5iÇ]O½�‘KUQž?"6†´v“ÑFèÇ*øôŒf¥äÕ¸tïñ&×+.xKÆNžÛ^Ç߈¸¼"R2�-w=m—""Ór1Mà‹àôüáø»žê¸Ä~Ë)¢ÆØv,ñƒš-çã'rÁñ÷�î¸ÎÓ��zk:ÞØú¼ÿÔÏë7=-¶0ðÐH¯éÈAw«§“†~?4BHn¶w�2Yä"Ö¾À(Ÿˆ [,‰G/B6ñaO;¶*å˺;Ñc'劜›wúu¨% Ãb¾…Ý«¡Sl»®-fMÏNæa¹å˜ì™¬ˆ4¼l¯ÇFî¾E˜^Ñn�(nÂŽÆço“›"¾h¿ÌÊÿvJ­Ü!/ˆ)ÇÎȸ"¢Ê ˆåü°DJÃ)zÞî«~ÛúD7ÇÖê s©Vºƒ·8g=D�òv¡õ¨}ã”vÝs-8ÿ£Ð+œNæ”KN W¯æ3‡�_´³HOäT+‘ÖÚí–ëg¡`¸³Íšpªo9Å•]]WŒÚÙÎn9Íþªô°ˆ Û¡6õTNµß:ÍW-Pò/âBB• ¨) ·ÈwËÁúÉ9‘�>ú¡ã™Ö-õ¢¯�ì–k°D¤Û\#b”{[ï®;Ev·¨4í%øô'>vêçÔÕ£‚ÒÉ’î€/Ä" ÉGÎÕ"ÉgjP²ë¥e&œöl§“CÿÚ)}¾¾:¡ú�æ*¥rj¦QuÜ>;¾FQ«8äЧrdbÞ•ôÅ€jqwDœ·úúì¹Ì¶åyÛ êôTgÆ)¨Ù†fs\œkø;–ƒiC¨ÏtäÞ9¦‘ñ€²›^Á¿MNdn‘=õðƥͪF6óH‘!¬².fÏý‡’j.wçª*TÑ ëj§×n®¯Å£tY„ETX„u^8²17‹ a†×H–½V«Î6uSKàí”"ó�Ó†³›Õ7ÄbǬA95“ÒCgÔãÖÞ" ˃Ö¿�üeºžƒðÜs¼ÑÒq¾3?Í“Bß�WÆ�ê ¬/nÄ9Ï'Ö­EVïª42üà¿t6ƒøõ’C†Œ?-¡V*‹3ü­ûñ®' ëçyZúïk? ·æh.©r:h[âe¯8’ö/K»Rë»�ðzŸ£óù‰ßý6ŠÅEרã“=ˆÖ“ŠÅã™ SK�AÕa‘Ô@RßžM_Ò~6s”iM­”ÑðIô_-A’ÀÝN÷�7ºóæÈh”ꦯ=ï±ðŒÐsÏòEÉcÿ]œ¶“;†T©¼î;“$нnjarz cÕgÍÌ¡e§Ùd,LÀYÄ8µ(¼c7û2ëwõ Ü]ò¢ìÛóï YâUq|«Ž‹×{å7µÎ†ìñð+|ýb�´$è¯Ó2Ô1®<ÿ¸¹þù*›)îà+6İþ¡lÄݾ š3wÕYòNA¦¤±Ô׌†£(Á’qCø]uXÎã!iG=«\éÃB÷ð¼žñ�·—ˉÓs~Í#MòÓNØw*yÊ÷ÑñóV›Øá’ôúë]s»ÓAž©?/?'`—”ú­Ú.¨ƒmÒwO] ð‚H•“?¿H*y8ìº,µó ´¸gü«ôwÜ·¶ƒp­Êí«<˜oPd2áß—æ~vÐ%à ¨š¬‡zè*“¨+O€‰¹�n�t«Ö¤ÛŽï{œÞïÛlo•mî¸SSÞ‚®íµ{|ðFáwÚ½ ÷?ãîYyKåQªÄ<z·gÃ^�Ïàšyè¨mI÷BczRŸF:‹"ßÚ¥"º2tõ™“^}³d›‘E²¬_¸ø“Ö»®¹#èèñ�©;Ô¶d"§ßE?95¨:Á"iqñ#?Á›_Œ&˜Cñ‹¨Ÿý›_˜bîIo¸vD0qŠ€‹^G rF$Œå~ ”;/ìAèuŸ|r|�>(ètÀDfð?Á¯Ÿ}�æÛzø”î1ÅiKòŠ»ÆÈ!*›…2¤¹¿X„ä鞟: ŽzZôñåªF;@çá°‡>ëEŒvèÍw çÃñßqßB,�°wmˆ›RÄ¢}GNÔ#Gj0)WŒ÷¡|Å8½k·Si�.¢²˜‘ã‹íÄ]öúäD¾Šûà}VŸìÕ×4iö‘?A$.•ê oU;}â´åÙZú!ÏR©¯ÏŒJTÓÞRL–�û;äÿŠˆsD6ØŽ¯ñc ^Ïîª3èQ"Wµn�T_Û�=!âz©Ï‘j2åõ¸‹d°ªÈ Xœ:©=Ã)ñÂÕßû§O—íçÌIJ°oG�8Ÿ~†Ó0; Çp7‹†1Ñ%ªœnÉ´i‹a2³æÞÛBNÙ#òÌN{Þ ¬ R¼ý” `ä37˜V„Üí»±@TI“æü™WÕ»åVBŽ#Sû"È–Ä1aÁvo<‰Ê´“É{podØ©Œíƒw‡·ÏQMuÜ V'~#D¼Lî”çwÊÆØYÛXJP±#‚f2z��7⛟<›]}áÙC­ˆåAr©ôÀä-{,åÔç9NÏÇäªÇU^fŒgç$¯(D¤-KzÒGþçqyÆwKå»-=¼[^7{¢•Oœ�/Ga=·ÿ»Kí}|Yvc('¬¿öq×ï·«×F?Á÷séÄ‚$ÁÍìb<;,ܽľ¯w‹¤W—Ýõ‚›çÝFá”É ýÙÆ5 ·õ/3?� ‰ +û=4ààe-£™Ä¿.†ë„ ð yßžÀˆc¥0Ç>’ÏO^È–¤Ï[^#Â*ÿÒ�«tøàÎëÛ¡-ô÷„Èõßm\ïõÕ{l‘hþÓœ½èØž\×UhrÊåyö+ÁÉóúqS—_àÑ^U°2¨‘lSé!¶§ö9®�`³ù÷ßëP« ] =·×°K|)}Øäº Oí¨ŒTwì?¾ Õ[dy£«ROž!cÅê”\hÇ™ó”UZsÇ^Yÿù{O¢¢”f¬À—<q3ÚÛåé+œø@íTÕ™õzOÍ�˜&+úþlº^K=ñŒè�±9úú¡•ùró¨|Waû»KnMÕ>ûùÔ^Zÿ?µÍc2#YÖeĹ 9–�:¾V…ë±ÏÞ‹ï=RÌ®Å~b‹œßÜÏ^«½W:äü�F©oI½Ôj®^Oa…ç9¦Ô®A&Ëóˆ){cþcnoÿë¿k³½¢Ý]äúB®©ùo%@>ýHÐ醈†åJ«‡FÒÑqêh™X;%ø÷·¯Ï/ŸѰÌnÔÇ•;N(S„gHXÍ[³vë‚H»"‚°Ã×Ì6Ü#Äï�(ËDQ©O©=N´ÎmÆVæŽÈì¼Òì�åâFiŸ;YÇõG¾?U¡Ëb¬Ð$ùHeùK?׿)<½å-Ìóú{'sš¶Mxà»|¸ˆÄ^¹(éÛ’I<‚^=O‡>áÇšèxž>|\úøÛi ¦l;¹ù�ˆ”_ˆÜøáv.]lHßá*›æzäyméŠ)‚ž+NÔØŽ¹ü¶µVè6ì€:¦oV>)9øê*w:ž—A?q‰bÄÁ±ãzþ.;¾~ë[ªÜZ„.èö‹ÒË ›|¨á¿¡w.K2ÆIŸ|C�ü°­ô5��ž1s_ŒMn*¯r�‘V2!Ân¿tápÙY‚â†.bÎ?4¤M~ ¦ty=¯^þ‘œF�ô�×»›¡’¤H1rE”SEí¶W»Î±* ;M“Ûù;çˆg�‹ÌÀ.ZNŒ[\.§¶�žüDΫ;rŽZμ=~M£ó)8C‚cK®¹3òÙñʆÏ)ò.Ûi²/Ž÷Ç×ÍÞ„U²è)Ǭ§’Ÿø Òiž<>ô4"ƒÔ7±Su�ižñII5‹›?£àÑ\¢<�N¥±ÃÇ›ÝÉràUxê åÓuýÎýÁ—˜×eq°EOõ=®\L_Zü úg}“EÙBFy#ï—„‚ë�\Í“k¯pc15ê<îˆÔ��#¬‘‰¢÷gðë–ÑÁ}Ÿc™ ,åk>é}öë"J¤q«íaìàÙ6=¿K@/htö‹¸~¯'“/Ñ0>s:Úè’xë(�UíÆ²¤\³ÔÏÉXoþ DcÇø'Èáftñ‹ðÒbFÄñ>;º„qB?RpÀ­ …†+rS.O땳e¿$8ÂAŠ4Œ¯(i„É9^xÇJ ˜ã!&3æ4¨á”dª,Ó3¹rc°Ü´î”ä0Ür<²6²SÞe{ß¿‘UF@ DÜÇHÛ⺠úÿv›j§V®8µñ7FáԈͨ�ÛœðrÓe.Sƒ¸ç]ÌÙý\ 8N«ý�KpÅsÏ2§dxƒRíW…}6sú´Y‘ö+?ƒMý!e[ýªú.DÊ:Ú” ‚ê/*¹,?t§ÛÔ�w±œ_Ûs‚„Çœt¯À=Åü®Ö FÍõhà_8òôXQõ)Ê+;NÕD�¡`ÅOÊ��SHõúó¾'y�‹H\�ÄrÏã±êë¢~a>µÿ3Uöï¶+ü»e–4²ˆS™£Y#˜jJq´ƒvà¸òy­‘°ä –j„r~ ’Ír®à“�ëô’ɤÐO~»ÓŒþ‰¢iÈܪ-7oߎñççmû䦽ïm“�Ð6m®¿&|³•§šâ#Ç]œÃˆ35vÜ@ŸvíôÃ@ß)Ñ ÌoØÀKzá$F¶#EqáërÄCq ¨ëéI‚?&Çϧ=špx^¦¸w¾õû¿eóË€~µæÇ¤ò¨§ürª“#ö½û �+䪞ËB�Þ7õt¿œçxÓ~2»ö'£Þ˜˜Á«úÃånDßç›")ÇlÕ7Q¹Ûo ŬuRYaaâ‰â³­ ¡Ç[†Æj¹>˜R}ršT*ŒlåýTÁÃ)ßî«T3B EîwõŠ1c÷ÝÎ_Ü^I».¹A€(Dw¼1R«üæ(¯‘k�¥fñJ¤ÿ‰ê/nÛ4x¼�“Œ®9žýDÁÖÚ¼‚ÂÏÒ=À£áK›N÷:u±[Ó;ê˃î¥?ɈKxx Ý$¾-´ò‹EËŒÆ`ÎDî×`æqeYÝÅ.x™’üãFYp²Šìà“SœÞtQÈSx€¦'å™Î¤H¿€¯ÃÏúà× ÛeqjøDúxºþÅÍu¬ÝG¬Ë×E;ý^ú °Ã=�~½ù—’´·€ ‹§Îvô!`î{Gnˆ:înþð›µw97îÀïM­<H�’îêà?á*9[ßßÂp‘kå’XáÏŸû°Jo’©)£ªµŒhRXL*z†ôð`÷«Îû€#;¿ëµ°O–k›¬¤E�wÕ™Q�²ç‘ò“η†xªí* dÛé‰Ñ±‰|î¢"yLTçF(ËŽt¿Žü#?Z¿èÒÃcXéÊóæŸ”F‡&µ2.=T‡0–‚AÓÌ�ÔN�wÿøÇê£Jâõd.�¼væyŽõlÁÎÀ~è ØˆtX‘£jî-Y»qùEþáO~þÐ_ßä½g¦OÅŸoT¹½ Gí q.©Ífôíë$àñøRÁÁ©±rK9Õ²&ZI¸¹—Í�ùY0á+rN.$dè¡D%t^™4Rƒ÷NÄMo�Ä3ìñ§ÕÒMOå»ò‘ØqZë§~.ßÔÒ¹é�"ŽÒÞî åøn/å#‚«Ñ ‘}84WÊ¢L961vñ ¾ù®;n:d( ½éÑÃãÆ†»‹æXš&ä “2[N¹ÃNû4éÖÔN×À·_~þRðwäû…H׿¿9Xšv�Þç/ðÆ2G:XޱÜa“ã£Ç)ÿHb8�žBœfÍe¹‡œ�- „¶\j�ŒºÞ¿«>áKʱ˜SGÅèxÇŽÎþ<ÏÁ¿7Õòñ#²\+טóË"¢Îˆ¯ëžß�)´È[�=#�p‘A¢|POí�»üPü0äÜ�Ž7—K.Ðó:kdïÐ/Èóã#°x8ÕܼߓN6_ÿQÚÜÌÞ œ‘{U¶µ3Wü†”žê8Æ‹æÒ´Ã³…¶÷àáTNBî�ò ?�²U§)ä@59;�|j;ï…ý©+ø ÔÇv&%2Ç"Ò§>टšb!,œOÒ8ÄÁ\%6eûv\²HÄoÍÍ+×X'ì÷QÌyvl…Z.F‹ØË•I)2פá‡ó1Ç�œc~H%w&róU6üNÏÆ;"yÕˆeDŸÅôæ]¯íWJ>¥é_ò¸’Ÿx¹âSßd��z²ùú»­v"œ¹ö›_CUºq9ó¤—èé¾`݆fŽTK o–[vËɆÁ }é�: N8Õ|]�S~ë2»7;:åÈyÀ8N³ ˜™Üf¹ ‹ž–{�hB… !,7ØÇÅä‘Kƒ4.ýÐS¥äŠó%³-½eøl€*G$�W=¹µErÌÜ4wÂRIêcB ,§4œÆÌ›?‘rî™;%Y†JOî¹â©PªqÇ…‹�þ ?kGÄ~9õ˜’ BßEY€ûã�ÞÚ7ip豉 ©P‹¹`Ô±œuë¦zs²ˆ,ªíó//ˆR:¨ß-0pC´Ð?o ¸3]]\¸c|æ¾,ü¢ß\öj'¼«&ÏðµKRS’/{¼ÎO†z|>PaIùG›Ë÷ })lü¡ºéº¨~x¬)eYµþš:üFÄÒ�¹Ú$�kÁ‹8ÒÆä �Ï3BÎ7UŽo{ÕÃnNî7sƒc%–é"'Óðê�üj)µ sCË™zz«zõ}•hﮌ½çª‚Æ·k¬Ü}J }ÒSfe÷ô¬c(¿qyæà=û�`f6¾×vÉ»- Å"׆‘àkøÓ¦ÙÙWªãÏ ½Çü|>t>ï—žœ‰æÆ¤âžþ~.JÚóÈaÙFôæ’ÃUy¦õíìëå®òÿ¸¦»˜ÿ ‘zGNÊcðýeíÏ¿6­Ñ€çcžÔÇO{ yϾÕë~!—¸näù4(6Ÿ3Çyë>~˜¼8¼.ˆ@},DÃgÏÃöÜŒˆó}Ý ®6Ð šüÁ�*'·Û”çT°Ý¥£Mÿ…ÒÓ þZ£9]=3˜öƒ»7(4쬌–Ÿ6Pîô_úàŽ¢wÝãÉ _¹ò`BŸÕaoö_LD 'õ-—¯Ë©�o”�â¶�Юg2]»ìYtvþªG$ýqùkñ_ý:IúÎÔ�ž)|á¾è02/¼i¾‹ï•¢çx¶Ç*v-½Ž:�€“êx¬_n[z¹…Ö)ƒ¹ò·{2� çö2¨@Qþì–<úFq ³Ì·—=?Ž|î  ï§(e!M}4Ì$±ÎˆtÝ®Z™ 4ðVéÝb:"Svò¨ÍvÑÛ¥±á–îÉRšNöx5üE/e·ÀÊêÍé�žVzàÛ�¿®Yó·sÈH1êÖX/÷{ö78óŽ×ƒcLÚ ™GýdK‹CÝ¡~OÛ4ö—ÈÍm®‹Ëf"¼ª%ΚØé¿ì’3æ�c{öv#ð�tú‰S“@ JïÔç Ê ¥³¸ßð™i–Z_zð\÷4 ?xÑG¡„v=¶éÞã‰vwÀŸíkrÒýþ¬ Xé�`x8^¢&ÝÂá###ñç³ð®Hº«€™žo‹S_f›’¯ÅÊÞpþ¤¼§—óü%¯±ß¬‘jžÙŠª¶&#DÝ�žj¹áZÒ}åF§OsͶ|V!üÃ.—‡fvs‹è“ŽSð®It,×#R#áÚPi›çYÞÄ.Ã7÷Èëz™Ê;ö¿S5³YªuÔglR¢HÔZ!¾™ÔätµËãpïÎv5›R>ª..rõ…7Œ›;@ãGJÇ×a"×›¸ÿjÔ¡8óXÇ d¾…4¸õæ)yz§@äovç}çÓ{ÿ†)ú.DÔ>þ™B* , $-TY!ù¹²ÛÁ¦’ßÚï,#¦?Ú÷Œí9â£ðÝŒùjy$ÿæ�é®kQçšS¬,�g¼÷,éä2L®›Èxʶu®õ¼AHkdFú“Þ·ÿ7P¸$¹£Ê U ØrPÝ��­+æAN¶1�Çò�Sb¿§ž–-zÁvFÚh›E�t'ã(nZrO[蜙‚'ïVÞ+þ\•JR(gNžƒ.ó¥ØÚœ8Z2;&ª�^}ßÓ|Ü€/©€yÀNÎtU…)eÇ×}BÿæÐ§Êóѯž ¬;áŽÁî7eÜåêìEÖ&GÅÙÙÁ˜”Añ¹#ÉŽ)j„�¨» kå 9“~ŽsIéïª$ΫØá‘|‹Ó¦yÒœy‚œyìNwó¼¡oÁÚ1_0Ÿ+ê~c«ú_Ü�íä<“×çD<X0¹Aî+Fħl³cGÇßÞk«„¢fa!}2r^¨šàz|Ñ?þ©°n€aþ–æÑÉ‘ý< N‰œ°wl¹±hûÆ'àøcñœbdlÍË•©ë]_@wŸó§è&.|Ï%²k§±—^Ët×È¿ý§L>ˆX+§ðÙ $Ã`ÛùŸ:ÇPŸC@4™£àd‘w–c°KߣÌÑ*‘ªØ §¼Zû YF)'›÷�°S*'ÍÙÇÁwGn¼«ÊÃ)tžfºª4ï‚Ó×�Ó“�+KÖ?@¤eÙ>íÌ\]ý@H# O4‘[ÎädC²%ËIXBår$`ÔÛ̈$“�š¼fµZ‘㢦¾\lgì}#g­€v(¼L®;j§×K‰°E½Ý¾{;G%I—: Gĸ·ÏŒ¥ÚeSï;æñ7?ždGè… Ç^»ƒmèbÒ–ë¹è¿ÕÑ;;FG½e=aï÷ úI¹XGf5à UŽÓÖpú(rõò®|.ˆÈ:íñ`¾ˆ`óð³+1F(G°ùWQûã˜0OëEõß´zúó¦m§Ç¤ýÏ8-;Eîp~Ï ‘Ê'îÐŽ¢{RçT3°J§ÎZÄâdþ‰±{R¿–ól†;às²©ã F$ŒŸ9À"å¶´ 9ÚééåmŽa«g¯ƒÿf¥º¤"/UWù˜0qP¹ñ{ƒ5´SŒ->ÐF{úhÎ.*!K–Òwî˜�žEÀ¤øº0�_kné@…N‰"ªÁ®ZËüÜT:ƒøÀø/ À?kz•SmÀGçéÆLÄûh/¦˜ö²›€C d)vÀæ|…ˆ�«å¨2÷‹8�)“£˜Qܘ˜žºŒ[ágk 0§=ñ•8ø‚Ôà¬jeŽ^©zá€qDØ—îÎ/ðMpX4Ü&½\Drã�x�ö—¬úæŠ7Jî:1úiã§þ®>·zz.+w;{6{á‰DÜ]ö*Yh<Wí ~ÌgÇÏÎr�]ésœP,XÄ�ÿÌà§ECÆ~?�¨]ܲ~7:ÖÌÁc些ðfÒºx‘Y ¹Òç€÷‡Õ37D˜®Ð¹Ó·y±�ÝcD"zOZÄâærìyãr~lÈÕfø«—S5˜×[Yéð}.¼Èë:Îh“Ùé6ç8 wtž·Cøm‘�׫^]Ùµ?‘õX<¾ŒSÑå” ‹ÌÔǪ¨dýM7fˆI¤ªeê üšªÿ² ÐF„îÀ#WîQãóááy;{Ôÿz(ÕþÂ)Ú÷Iá\w›Éj›J¯ù^Ž8ËÖ¦ñóñûs×ç¹ï´)ŠTzð…ôrsÞÙÙ€èl÷a�« ‡Ö]åéâ#i¬óyú˜B{Õ/\züæ‹ïý¤Åò9—õ›ãžEbnsõ7¨¨D9s"Tœ�CÜàϘÇ) 2­Vª@ƒ6F¶ÇåÜñ´ÈÛÒR èù4%T®ßëÄ„úåU‹éG¨#2˜_…Z¤\ïàCÔéƒ;ŸB<ûÉw·2m§ð‘ÈQÆ™¢x9U±93ëË=é«É-í¯žbCQ#‡ââŸÇ‚G(æC¢JAÔG‘‰ö”Òç¥2[à“À›‘zßã‘ d¬ãø�r×»ð4÷´¤*xI£Ïa¯Fk î¸}\OQå’Ƚ/ÓBQô®â5Ò@–:}ä9ñ|Þk󌇊õsߥòR#/=½6„]e*ìr�ÚYK•šzk@Uf†øH­—ÇcNhXÔ;ø 8ii ôT žk[¯£8]ÿ“RôµtQøÉ¯p­Çf­R(øäËõY‹[äiñº“ЮŠõ¼Ã'DhåžËyÅ¢Œ‡¨æº 4åqpªÍ6�üÔšKä“óS*@r¤y*¡C°Çä÷(Uóì…눼ìòÒ;8�ïY›U~Y£ÚzŒö¿ÐÄîùzî3OÜ3Ð)qúdж�;Nµ£JΑŽ=~´¹’P‹«Ø<×W�’fÞÁöó“KßþKÂÅÃo:í�æ~UyïE‘,r�éî™ò€—Œgšòõ‘8sn‰Êo�Ô —%Ó„S7©ËØPR’¿J0ÿ¦ŠjÉþµº¬Tëé@Üfêlv¤ºžOZ“D–¿Ík1��`RÄÖaì‚s×ø·x‚]?cù'ò‘¿Õ&RkJ¥×K]¨È×ÛÆ\~µLéÛ—ÿ’óOÜwÃ|y¹ÇÐìè=¢5 ®ŸÖûïnñÏl�P±S@¾ÖgÇÄÅ/G�Eþ¥ƒŸ³ÿ>*°r&W[†ˆ†Z­×aì:OnL#®ÐÄ?+£RÅ øŠÑÀó€ôQñ¸2S½Nä9ÍÛ˜ì¿ôZù:¾c.¸J_$\¿¨Yy�ßQTiǹ©�²ñ/WŽÏÎ6Nñ9vØý3%W Ô>ÅÍ‹osß“Uí—©®Kh)<]øçüÍe™�7u vû÷?«Ló9¯íßÿ»Þ¼ °Û’˜ÜNí|`KÌN]¼èR&#ÇNÞÑçXAF$ Ûé¾W„fÜSD_Ù!•>Ar„`oKÕO@™�Ìüé~O¢¹évÆ)Æ5é!D…Ø‚wÙKî?pŒvWyÊà'©Päc’òÄWÐû!ÝqT�!½æñ‡_¼HLËó÷ù}_¯úp°.'cM–ÛÌÆÖ³ÈÞS¿jNCz|%ÙèÐã@ÿŽÈ‹ëf¦§ŽqÌÇFl‰å®üZ´WäRôÃoèÐÑ•4!rÕvÒ,òkË€L~l+z‰")ï�×k ¡al¡ÉÖË Ù‘¯G;´œ NŸQìy¡~ÑÓ�錔;é3ÉÀá‰Í³ÓtFv_·wø€(GB½Uý¨÷ýt^4J.G§‡nIXî çlÙx¤¨8Q@ú[Ü)åGïàsËÕ+l™š ÏbÒ¦Y“±–�åÅä4åH{qJ³/�åØE>Û y6ÍÔÞ,ØNU%G²8à»Ãùæ°vYd²)à�€ÍáŸ)Ý·ú]¶Ü„<¡“»QrQñ€ËfÌëvÝÉoøíˆTže«¸3•‡èâß9}‹9+Ûà �¿wV8 ’mAM›C{Œöy‹‘Í^ƒd±<É^ÜRü‘|jl‰ŒFä‰ÝŸ¦I¹of,È�$ˆÑ2—oA.¯‡ñžRÃNñ™(Ø÷ó4ûø|¦Žb9óò¡¹…ûÝC»d¥ê¨Xrº!wà‚S�7D*Yn®OGºÏÔE.›ßK¿Qäï³x{ÀvèÒÿÔûŒ¿-ݲX‚¹›÷ä‡Ö;´ bþ3XõÈÙnj8G:S¿œ§Z "J¨æ ´8mý9]5rñ÷ü!me�¨”};åuúC¿,<>Àm5FÍ÷Žk3ÞD:Õûñ\d¹Ÿ-eïóÇfò‰Üw‹×�~¾3~…RÇìH Þ,tl‡3ßûsbólª¶)Ð'»X®W)í ýЬÙýçàã�ˆô»!Òo�ÖdξáÍÈez±Ü�< P*:-ò›�4bsÅ‘F’KIÉ­›B†…=³åHµ�d˯YÄø|¼,°î³ÊÛŒSW—zû¡µN1òïþñí¶{"– ž á;w#ø b&�3�õ �­\ÀŸwHö«(ë£è| }.ÜÜ�˜êýû‹y¿tâ?}ŽXaÿ/ÎoõkMÃix!@š\èëtO™æ†|µ}]nð�ùÕßsÛSSß “Õ3575(ú ¬7mD§¾c=å×6…[�•ŽOG�F×UŸ'îÈa»ãMÒãäÿuU}~Y¨*�ŒwX¨ÖYýò��±¹™·[®7"’–êo°ÿ“g¨¡®pê&Tòéš{JSd˜. §E¯XïsÕTæQ³:›ñ‘_(Û!:1™²¾USXx;à€Ÿ§É^”®^¶Ü¤—‡åÖTƒýcÓzÿÜ‘ q©‹±'JΑ9¼̶ȓ6™7�>y§ì2æ±ÌŸÖÑÀ‰Š• ’-\ƒEÙzо$Cãú•Ä�¾¿tyÜ�ûmÈ+\½ü׌.Sö)^‰m;òÏÖ€€^çÔFŽƒß/NàË¥é [ü£?(ž.\�x®{¹öyâ”ô�w�Ž„ç{û :u'Ûÿy`ý®Æ(UQ}ÜêŒ:­\§$Û?Nè û³f•¾KîÊ�éîÜòÑü„dð»mÑœLëÇ畸}P ý,N|9Ö“>vKnîIÜ_ò,PØ0ŸT];ãê½âû5üÙ}WŠ+j�wõŠ�{`4g-›µôëa“(#cq ט;pê¤çèƒ?ÒI�>3¦2¬%í’‹(¢·&®ƒ¼ÈSÖý—ŠgÁà^õˆ÷æ›{³t]sàñMÍÆ|Æá¯x–ptÝHgÛ§H4§oæžø7¥<8³™Ýÿ°öÂ\’½õ¼™eÑï¬í KXüsce§ûëIÅÉNIãñc×Ûíëxäç¾Ès]Д„´'^=öc²yÏ:ÅLÀK5‰ßÅ_vš+ÞãÂÔrO§Ï‚_û[Ê'•vþ[òmÛ·ÿ¤™éÑÌä¡.niT•aV¥#â逆¾ŸÑª¶âÆJ׈±€¡ùž¡}ûf8y¨££¤-ö#£Ì/æÅT^ìîÖ8@P$}gr/^ IqüÖAÄ) PR² `ºö•¯kQvª4¨HÚµ(‰eV üªc¸öE†b+kñ1Pœ¾tx6ýQy^é) ÄTEYŒTQ>©*ÆÇúÛp+§K—@ ý:B¯ ᯔþÇ_'Äé¯ÿÀ}Ï}>ª¦«Çý­Uþþé°v fƒ²in4fD†Ñšàµ1”O-ßÂg[|+"¸(žrK85PÖ~¤ÅþyWöþÖS+ "e'b©d¸ºß’ê×,×áõ^ïŸíöúû÷ßþøèÿ“–Ìr/É×/ýýã'àX„E£ Nì4HžìtRäzù©{¼g®š‘·ãŠ¢zD|ƒqÿ×n}¾àôæÇÇà>æ‘4üý L�ÐF é)»Ç;NÐ"ºì¸°Ír…Ý”5/W�’»Î¯f�ˆè±ÞÒd[Ä aN!Ó ²Ð"Î.wòƒŸb¯Ä9·vs¸‘+NþúTAþµW“)ºcªz2¶Ì> '‚bŸèãûbTª2zŽßDùªã+‘xˆ¢u‰d¾•¤ìS±H±û—ãý Ÿù ¸ýЋ–{ì’ø*x~cÎq5?ÎM(€+ì4JŠÔí?¼E@Z’–© ¤¶÷®Œ7Áµã& cìyÄüdìOpŽàÁGv*Õ²6I$/¾[N>¶\&%âÕ�ûø�4ÖPd†¾“ˬ0-âòó£^7¹;‹êó3âòÀs‹r(q.8µÕ"W í?OO9g3’ƒSµ‹`\�ÇMs÷•ä(†>rßZä¯É��Ö~æÐc·,_ðéØDWö‡êËéâõ¥Ÿ?v6†ÆÅB _£ÁŽÓ|'ËÝË ¹D¼Jwzj¡êU�ºå’‚7tIN´Ó÷Ì�uÿÖy¹X®_•�ý¢§±Okßn:à’ó»Ð÷ÕЪ9'ù€ëd°D¾.Q13rØQ'²ÝÆë`¿’+ÉrY„‰�?˜$‹äÚ¡7döä®:V ¯°BêåIûØ�óéNóﳜu "O'$oÛ‘ëYI&Èi+Æ$âu�mCÛñP3ÛØFðúÑó²Ag„zù¨¢– Þsœ0‹ü˜JŽËö�Ý?[”SJbó1-.‚Þ`“úIÇ›)ÇïË‚‡ës]l{" ¼`‹$4:ZŽ¤Ù½R¡=£s§�ß�ÀÿŠH„’? ã)n/K£²CÙTïÚ¡á+ü±yWžz°,Äáp”Þt¹b>Å"ILÎÙÙÇ æÆ/Û`Èû³ÓXi,J'›W"¦fõÃÊéÕBíÞÞ+&OÝt¯CÍRJe^Ä=«”Ä>øïËl|“ôñ ß Úû•ƒÛbÅ"Q§�^¦âî–Ò}¦§t˜à'Ü�ûBSŠÍWÛ`¼åÕëÍúin²ó7üÀ�‡ÊÞ ~µ´!'åñ¹"Òî;cnË·ºõô±'„^”µ“Só("ñ?pº®¹ç»E*®îµZ7‘2™_æðï0°�óLm9Q�Ïà'ùš7]bÚgú°×áö¯‹0“º!· ÝcÕ7»ÔÍ7-^/G<ÖÆ±Cj]o…´Ý¡ç¯6ïzÚêa¼¬ r{¿\#êé×Ó€=:OeeõN=²U¹Tz3ÐÖ"dÏTÌ ë›Üñ vÿCOòœÅæÀ½EˆÅN"7#ìÙ†ëó"Žc"ÆÝ åcÝgè«mNårôžõ?æYߌøÆÞ¸n"¡Ò-Vïä˜—ì¾ ŽmgÏwúIs’›÷‹ãÛ¼ìEZ±/o”¼àCD�÷ô.œÞI_7 €ôáf�Ú=r¤ç><ã᡽MWä9"z¡Z%UJ�Ÿá’EäÅ}/þBÁÎ;ýÆð”–*§BöJEÛo±I¥~¹œ¢^ð¯^ô»õˆuÆG‘mÛyðú±í«ÌN}çx%�C@³OÅ~²Y„™Œ•µ;¼’åÏWa{~áîKf\ô/òäóÔzŠ¿„ßÁí¢Èv=žíw™ÓW{wl±Uåe£Ô;š¨ÍqØ \â<|4ìpþ_wШx¯2ÿ•âçÉû‚ [Ë?Ôw‹ù±èµ0_vÂí/‰óg× N}¦è‰´ëÛç”+'¤ÓŸÉ¡ß»´>¹cÿWÐû �Ò¢Ë]•"f“Ó®ãªU¤©òÙx€ËŸ3eqM(�¥mjM쳨“�kí–�ôŽã+Kea©Øàrb|‚g}Éü„¨£ú¥êq;ŽIÖW€ nŒŠº8”F-η“B÷V\@OŽŠ ÖŸLñmªþ¯TamÆc�äßü*j%΂¡Ä Ÿ(·÷¤‘Â#|û÷“¦¦'ž%98"qŽK"›p:a…ž2Á2–»œÒ‡v¶ãbNGÄððF õ Î× ùë¼i¹Dä�HƒE—XËŽ»á�Hþ'"6>~¡ƒ~„Z)¶#xF¬üž€ÿ‚Ȱ- 0�”Ó�K‘dHùá—„ëL k9Þ¢3Ñ‹ºLˆ¨Û°ÄlKÊy‡Ë¶¾Cr—v"Ë4œ‘5Ç�ž®*È wäþ)6çÀÛ" ç©C5èæøŽS¥÷GÍZpöŒ�,�@èàR8_1“NÕ¼¤ˆO+–;g×µoË…%—µã‰÷7N�ü¼©ð!GÈtÿ³ž6ªãä‚û}ùã¦bñ ðÉ\ìlcÉŸ¿Á·ˆ(¨[ç[ÀƒNºj¤â §Cüâ¹})Ýÿú¯ØI@Ö¤‘rÓ\H–+°)\sœß©yFnž~9#)Í:ˆˆô;=ç– ’×L)Ç © ˜¿qjóç7½T,EÆå@5ò©§�Û©Ü\ÄLaD©§æÞÚé×èÀUõÉ}£§™òq\—Ö[ÿ‚Öya6þÐo3ój9�þ¸E¤ô¾CäoÚûóÅô¡éðaï´ôã ùؤ%ë)_àŸõvòÞnr=³_5òÊ"¤Bº8Û‘FX39}çKéÓøÕÑé¼î‘KMY_@ é8B3èe¹¦,7Í}À'A)¥§ 6š¡w·‰Ö´Ïüô~ɧÝÚ¼=ö1ïhg™*÷.Våà³IgLÿOî è΢L8ýÕíœë|€Ÿ&†Í¿+œU#eæØ_ƒsTYOi8r¼?ÏáXtDñS8ò³ÉÙ|T³ÓâmXf/Æç•fj‡(9¡Iï9æé=™“0 ázGn›�Fw^±uP_Z2G‡ÕÉŽž^{Øù�o`ð>_M¹þ8ÍÆû6÷ñÖÓå÷ø4Õ{¯oÀm6ÿ‡lœxô„{µm.Ò°ë«¢ž�²érë>Giâ÷ôÂÓÂMDU‘fÈõ^“A¹±rª}D¬Îû ?S}¢ýIH�X£MJbáO'Ç7ŒÿŒœs}ß´ÍG9ý”Ôž:Ãohï4Oø]PÚ�\¹rÁ|>*5[n¹E10êl=‚̶@ÂSðgM$?ç¤ÒK)!šäÊ�Ëu_R«Ú {ñÂù<¹ßdòI1‰_hÛô÷ÕRÂn–ƒoàÇ»‹Ï!Ûš�ÇE=ÛåATJäøõ’�Zù¸~}6^Ï,‰�Îø-ÖÈé°ž6-/”Š=&MN uúå±N'],Ò²ÚýÛ=Ãy‘’·‡¢x�ÊÐlönÕÉ(f Íç¦ÇƒVuÛ,R™#’_{ZìTxÎØeŒ�ùqù¢<¸?„üH~ܵÞ7rÝ�Ýg„��>~È«Ôñm$©m?avgç ™¨7¢rímž]«3<6F<ƹh 5eÇâÎäj‰JŽàÉ=V„C€—úSP,g%½ÁE>ˆ²NH‚FuóÆì¸þ¾ÂN¬ü/œöûqñ#b—KR§Å!DZë)»Öù9�H)?Æú3øgïN'æÌófÚÔ,ô±SÝ-Çõ–+PœøYaÊ|AYôŲ3÷ßÑÕ·'¥ rö´³ S.ÔÕÁý€\ï_qÇ7éºÿòBÿXÔ× ±Îïþà<&nÚUñ¯öh2®?œœ.¦:{D}½`Ô`ªZ�’ ª,%vÜå1a�Ê…9Ü„Ü. ÅÞ¡¶ ’".¤}Éæ3.qc0ëÀä"ºÌÉÎí¤Ö§Æ-tkàx0†ÒuŠ„ùòëø†C}/Þ_�0‹ÃÓוµY�z²KoK¢ºscö݉D%åvLâŠ{Ü%ÐÈ>‚~ÄõÙ˜@©»lâd"ê³4·ƒÂèÏ_)=àg¾1Ur?g•Uãs&þáÀ‹uœÖþTè\ç7`ŸY°§¯ùî‰Is•ú‰ °sÛWÏ�äþÅé ¢§r>ºîåÖÉyÑ‹^þõ„Oѣƀýêý>Üd›N•¤«¹×ŽÒÃMµ£!8Dq‡Ur *<òl ùœ”HFwßɽe:¥��ÁI[ßZÀiÔ|D(ÎN—ºYyŽð$5ùOSQí¿«›nšÐ.§ W}Sõ€DQLswêG9‚xQwñÏPg2Ýžé:Š.Q¼áåß:rד±ã¢ØŒ›ÓÔ-’P,;Ó�Õ·-¿ñ_ÿò£4D)ç4xØÍÄi³â®âhñþ¸HÐß edšÆ0ê§Ma€_Aw¿ÍEù¬þK—6…ôDdéZ%A€çOrö©b𛼖ÆÌOàPä•"2#¹|id:êêEÓ¦¢]¡ª{`þ!ƒ�1’ vœÄ?éÃÒ8àYõ§ß¾:wÚV¼)¸+v­Á¸JÇËkËg_{¥q(¹òפ3±:yúØóê-0Ã­à˜€ž'ûHê'~f¼ÌŸwÿÙÝØ�¹G¬bDúHäÜÃÚ_mïê>c’R?€aL÷"/-¿Y¤MÒI�à¶Çx´r—ëf º–c/°—=ú¦Ÿ°©2zNqðj‰¼nÍY*/õ�‘%Ï)NötïÎ…Ô?ï7QÌȃ¥q×)l'-=d‹v¼°¥µ±œ3SfAÉršÊq™uÜGdUïѨ‹ØÛc$Ψ4c.׫ìPLf 7¨Þ¬»Zšiâ¦>e±ÍeyòÖ¢ã]à?�Çܗȹl¯LU˜š÷)ÖO»µK�ÎÍÃ8þy`>.SŸ~ÆÎ>’ñ¨¹ìÏ)n`Ó h§[S¹�3ˆ²cÞY¿\ôúZì¹�‘ÆB� ׈ø+B¿ð&Ô,¦ÿ`ßBå�üÿǺãñ{ º£լЍ=nM9•õ ú¡ãßîQ9^ì™Ý/ Åô¸±ÔâHÅ®µ«:UPÎÜ®9'/»ñý„Õn‰ ‹}Þe“F#Ô²!òyúÒÈw¾ÄçI�Þù•#œËEgíñÀ ‚]vŸŠ™ˆüZ9]Iy³7T$Ñ$}·ˆßyöP¸D4oìg£Þß튥Ú~DúOˆ,Ûap> ?·5¾ir?Ÿ‡„®)wøúç=Ò˜#3®ÛÙ÷þøþ7ôðgŠ-Uû®í¿ñ†ßçU‚Û_ùD¿ÎÈy¼ÁùÆBã�©2–_0³4/ð—¼1´^3?«0U)8j~,F7éo™ÜYD½½±åÉDqæ‹oCi3†uÝE: ÈÖF¦¬JÊ]7�@5oe„R=È/ä•ß«ItÄ ÝÅ3#áà0ç݇úøÐA¾ô™:èÿæjs߯¨9 ìûr QZàžöÔN>@�Æ’.ƺ•R~û‡�Êîí´VìÄÑ�‹ò0/T£ø$9/Þ8픣Öz%ßqƒch{-¸Œ‰[0n�z9O›�"B±h »Yi�ù®v)å3£”9£êæX$Öò;#9ú¢|&XððýPåÏÓ²¸ÜaŒ7‹ä ˆÑÊë‹¡¬Îõf$Xfú³"m›ï=ôÀùwŒ°E'ú¾ùƒØìÚ60ÎCô6ÄqPŽ«[àå±Ô=ÚÜà3*ŽnQñ>�Õ‘¿0®¡~qÝÅÂ}´ÜBÛxÚFºŽ…ãݪKR³¬ �'¹’Ì·ïÊo0�û­ ¢N³é¾^ôBü ‹¼vøØë\0bÓ—/ìðôºT<\¢ÀkO÷£¼ÊL>J#ñ² <¿»>Ä=è7�ɾK¼ô‚_bÛlÿGuk¿ìäEêô³ò¡EÝT´«ŒŒåÿ¦�2p»lPâ.–¾‰ÜkÖÒv$Ô¨i¯ç95ã øÖ3– J‡- ðù÷Ï�.¥ú٩Ȳ.ìÙ<`€O.o³b¯ IÓãÙÞ_uèšy gS•‡ =8#¤Áü†/ñ2R(±Ÿ�Íówxn„“ç÷Î×Vý{†œN·›| öJ¤­Z¾•‡Ô|¯CöL^i÷Ì­Ÿï?-òlî;H{³gQo]:„ßi�]³& Ìkjé"Û@¤ ŸÃóF "ª8-ÿÊPфދe¬˜»Å¿Ôgåo‡sZ(éŠR®ø‰³¯þÙ+F²×ˆÊj¹„"]#\ÿ'©O³ÿ¶ÆÀ^0Å0:¦ò#Aü‘è>dfOÇÞ8˜ê,´€Œ6KÍâ‘«ŒWHPzP6Ôu´wöŸ{JÙ£êÈ qH�Èý›šöüs?ölm¼éƒ‡<5šƒÌkqö½D{Êr”¿Äë£éÎÒèû oƆFɯÍ0�±ÞþíßÌÜ8åî5™8Ä;» Exë@¹÷0‚pj{4éø.I¸1ÚYÄӦǎö¾M…yã;åØ!nÏwÑ�o|¿¢ov¹ÂlÄpcç±—u†£àôÚßKýúùù‰~¾06&O)Þì4\ø¼ºþ¤ž¸5¤iWps�íŽï"�(Ï«#GlšTKüN7ì´þÀ–îs~ÁÎûŒœd�O…Y’ƒ "Êr?zõ#ž¶©í|—€ÑUþ�ã(�Ó„¢ža*‹�Eû¹Zdª�®ü—Ã�*N×/…{û}bìdv,7ޏ$3õQoèN?ú�GÚdǘ¦ŽèÕ *´rýg_«ED œñ¿åìûH¤¶´\gò£hÇÊþRRφv¬Ô’‘åœÛ¿´Ÿéˆûçð/y ÔWHz�WäàZn:BºŸ×xÆi¬9õhÃSÊ­x£åÿÒܦͮ]è¸ßÞjQÑaƒé,àùz¶ãýÖÅ3®{Ø<¨ƒò@çA¾î±Xr|±ñ "l§{ÝÅ?݇›žb�©¦/)[ÆDÍCm¯ØÐšÜ¨m®³Q¤[ìMCØä¹I'=ÝòLÊãŸv,„`ÚŸÂ+ a;«‚\hmÇKØr¥d­ã!¼°µÍT ÆÔ:gìÕà‚^sÿT{¹Ãž^ŒÔ‹â­‘ŸŒÜ|R’ A¯›=�ÌpÔö™=z¤‹?W~ñz'‹«ªÝî ˜¯Ü%Œ�òl£µS\·4ÝajzÍÉ�EZrG'œ¨#Ò�géúíOÇî*ÿß«aÇo*÷®N0I¾rý¼Ã?¾®Oð“(JÔa=�þíÆ*!¯ˆ�ÓÓfé”〒ѹ¼ Ñ_àûþ¶j oOt¶¡<�»n¹{™¡¸8!‡[¦È_ž‰Ž÷§ü³JÁÓÀÙ=%ù(wR½{‡Ÿt]\À�_Îy2¦ü±á´Ô)Ù�7íùû#Û¤Î$�ÇWïíx“eÞ‡|(\?ûû]a±¾(sFhË)étz¦DLןì´Av:ðyZýïú›¸ÚÌ´ÃV5ª_> ŸîMDµ´ý™¨ò¾£¥m‚�óÄêO×ç¹FèÇçAj­|å3òòø~ErÄÛÂ�ÌPgbúÊåV~�Vçë ›pù%ð »ö^©¾¡úd9 wÍɬ/T ]îZ”¯>�£üfgG86;ñ€^�°ôðN>Å)—¤ Ž×©&5>Ý|wJñé·�·ï¤ãXð†Ê„7¶}*.aÑ΋C*þ²é—ë5;•öoCNìmÒÅÖ !³òH‹�"Ì1ŽÖÇñùÏ+ìÞÍž›½Îñƒ®Û–ôÎT˜LiÆi¡üÐÙ[]$s ¸vYØÕ[”“² *Œ„ë”C!GÒVg‰‚¥`¶ÏÚ¯ê† dRᆒĊ~P@Ü}0{³È³6Rþò Ø1=>Ùp⺳ÆvFÇÖyE¾þ†+§Ç¢îF­òIp�èæ›j>…ê|f9«˜œøí®ï\KŒ‹©c­9ýX¤ÀÏcNf!bÄœz«|b|Zw‡¬FG‹¤qÞô´�2Gk*øû¾|>6_m4§º0åëCÜ…ÂNE’÷nÇíM„#pâgyÖGúmmm2 ô-O’ÂMqøÓay>Ÿ¡ÛÜ_xÐ"þŠ£Ñ˜ù)zÝ l¸Óûx… ûõó?ÀCGùú^þÇí»—Ùïˆ{¾—/²î§Ø^b_]‚�ºâ^�cñzC?ÅË”ÿsúÉ÷Ýê�!RelU'R_4E¢ÌØ8²¢`7Æ¡¶®¿Ö÷¸xú¨Ñ¢hTêg!KqzÈ Jè#£Î žUöÈÍeÒQÞ¥w:÷óOn0÷fñÏ÷kz�ñ+'Øœº smyA5ŠŒØÊ ±WgB^쇋˜e3)6§yè`�MòãÞ|Ôè#)[®£¾±O—Âн ðc)÷)¸·ŠƒÁ’sƒûÜäö<œø*< :\E¨Ï³œ+R”[GðÍcþrí×Ð]Únþ3%Ð+É?9ÓXú& f¹|§øé§·á îãQÔ‘T¼Ê5×AvYbïý"®Ÿ,bu#:á×ÀHüŸK½ÃÃÑ3øÿ=¾Mx6‚–lsৈfù.DÃ9Õ�:sÇ¿»H·ëáÜzô^PƒŸ´.xjÅÊ÷’*qh1ó“Uü©hÅÈ]‘÷Œ@ý7¼íæV|,ÛêPÀ*ö"·º“íÉ�1:9…çEïªî’J.Œï„©â¤]Ùb>8AÖÑ®µ;1`Sž@¯©ø„J_ƒ•F� áð ‘ KUÉ:»Ñµ�Àß§ó,„ÏQñóÊ d_§Ö£¡\p@Ã"öSÜœ‘“€}ÃþWŸ‡C§ú¼,ñw­B•®ÔÔÑË\çOœÜkQkeÔº¨ßý§¿/á3ÂÃÃÎèô9Èø¦Ç(-F5ð"穤|F�B¼K×™c*“™ËÔD¸nN"¸Î¥G›�öï•|äàãÛW�r;¦l§‰þ¥‘9òÏò»˜G×9±ß(Ýé?œ.Íõ„ýä £M#‹êj?9!®Þ…¥â¼¢jã´Ô‚_ØáX.h»Åz©ˆ&a #bñ„<ý$]ðù߀Ì�¶¯Œ¨¿�ëâ«)uŒ›¤æÌ³…Fœ‚,?x><¶yþ]pîØºPê8Ãßcî�ˆÄUµÓ;]ýÍè_1È÷*SBúðö_4*Š“�ÞŠHª}Ý€‡E–®®#'´8e÷8¹xZ'Zî·v$� �U�ž¿tÞÙrË™Àp5¦d5!G`MHHÅ"0ø÷oÔr ëEs^ÑÝN•Æ–Õj§dvgèØªÕz{ïôáÄL=åµá4æMçËrà•1=T¾éS5¼�2WàYÄÖ¦¹üj’-;ðž,÷…ÑmÓv‚�¶ä8ýº"€îrÎ;Þ϶èr¨PWFZÂ7ÅÝN †~´bìƒÜ5,)ÒÉÊ]gƒwÍM?Èn»ß|t;Ûñç?€çJ^þ[ïð9_�y��O¶ØŸÇ«˜»¸‚á—ÅwrèèC x lÝ"ÉŽ™ã9tQ-³R1ÉD}õè°»g´ìò"‡ê ½ºoT4N»Ž (�l%jµmC|‰Noê×ígÌËQm‹sUB|ü›Žäß8ˆ]'n;ìÆrZŽ6ië:½ØŸ_*¹„KjIôº!’dÖs_hPÄ=×Én‘¥9·S'É“¥"_�CŒ5Ç]‘ Â<éi{]Q�¨uSd‹Ð.t<ŠH߹Ή‚åJ³Ãk}3fTŠøL°ýO©Ô4÷bÌ}éÃø•˜á^svâà›3’£^Ï.¦Ÿt‡™§fdG¤Í™Ó1!Tñ¤…"-F‡ªo˜ $âÏ&œ}ï�‰áÞa TmwÞí&À”‘l;'ÂÆcþ„Hƒ@*-®#ºe{=0vàŤiH‰×zúÉh�qäºYú" õÓù ÁÇ–~—C=ðBÖàýPÄ�[|l\蟉ZnÝÁ¥sa4/ÏôXRY™µßb+®¤õ~h} ¡´ˆ÷x¾Ð¾¤9–4%þñ¶>!Í‘FŸû'?ÿ„\û ³{2Â�KmB}iu«¢w�]¿†/£mtÿã8ýÆRùmP²ŽM'¹aü|÷l6µÿ(ï\Ôs6%UzÂ7êïØWˆØŒ7ŠÒ`9²F÷*Yõw~ö§ O¨�¢V×4pq/h’÷Ó¼b º¬ÓÆÔÉtôôîJVaQÇ_£±P–jÌ‹W¢þzÁ£¹í øo‘ŸÕîÍim̓ûâø{TžßïêÆï’°�ƒpwʪ‘J4á-f¬¤N�œ­ö¥a5ɯ£]4B¤¬¬nkX :OÓ<¯»H€2>*¦D#Ì ³#’j¹c[†)Òz¢¸³±‹n-M|�ý¡9äø®ãÜå ÁC4j�"Û—œbgãû´œmˆdù‰•û¯½´õ‚H´óÔ q‰P5ÙE÷IžŽRÕÉEMÉ‘ãí¸2Y=[H¾áÁk:FÐ`ñ' }·Š ;’ó8ÙÆ\X±�9å²M(úzÆ6© gØ  PXÙV²ˆ‡“*ˆÛ)�Ã~Ó#žŠl¹yшÎý~S5|ÑäŽNkÚ;;Ô§2±SM·µAÉUD©Ñ,A¡uCù'¶F¿îažÅv&ìô,ÓÓÇLZ¨åRÁÑ+ç$[Áÿ "÷VÍÁ—Qd‚›oì§�û9 ˜‚W[øÈ ˜m5[¤Ž«³�/œ’zAO‹-•ä*ã0¹ÓN{C̺ txÌ"’ú[#˜Ž:Øã^e¯“�¢4ùšpJ:áÔß›F@ï—k„ãûý“§Ÿ&äÊ ~sèI§Þ"¶I+wÈ�ä1E!æ#Bô@÷ró—]�½ë ù¡‘S“¸(Ï7a,4Ž˜;�2vIO ¬[“¡#�i8J¡é »‰\©‚Yž�ï�›ðí ™ÙöÚ)¶ !Jn\ÍüLîæ�‡á…ÓÀÅË¿o†P3ÓÌ40Ó:,Ü�lKxv;ª\if‹tÓEõ¨¬kËùÇh�[�Ý+ŸDéµá4é’˱#>à4 Qd“-ÊÚC}ê;ðaÍðd擉/³�:l9õâ1�‚2“˜#8™áÑúø•O‚ˆÐ©8ͪŸ÷ZWùÚʄ$LÛľy[zžtÒë&âÞ„¹ã/Dzٻ¼#öt£Õ’òà4GŽ*EÌo…Ÿ´Ó‹ñ4c ÅÁ|RyL³³ÚÃ!— ‡±;ÕS�\%3w€¶Ô{Sô+Òn» Jˆ¨|%€�>Ä™Ÿ#å2ÃÞ?¥‹%Ñ,²ÅøÆÆ÷"+ãTV‹$Û¡_-U0ÿòzîVÌÝ*®Å¿é£žsùUÛå˜÷IiU§d}&ãïwD¸/Ü©:*\ruq‹KVY‡™¸"níζN{8çÙâïˆôšSŽK“²m‚èð+*Gê‹þ�Ð?TŸ^MtºöÜOòSr®g8_åäÐå?~ªÝº®iTÓ¦Ú¹ÑúÅ/ ê4ú�É,cxd…öXÔ9ÍNç·Îúƒù²ÇÄOعŸK.3.xx!6 Dî_îz7D|�É]Ê8.iáqw¡A\Bjâšë-¼’Kç jg9_Œø]Ïr®=.H�]rkjÎ6ljÕm­âsÖ7B¦G7K]†:Iß6ã†|üîîm¯öÇšyÿÃîÚ÷yW®°ùY©¼,ƒíñÄæÇ"+Í�ø¡í¦¿•Cv(‚Š`3Å`D±TØÈéÆxŒÑßw{ó�bo‘„ÇÖ{úy°Ô½vº¼Ñø 䢮5=gÌ^×s||¿!²oÖüŒ,ßà‹OIcÞî˜Væÿ@Ï¥üôhã<çµÛÊun®çêᧆœîu.Gxò¤Æ¨•ù68qWÑÒ´·¸jPIL'.b‘|$…ï¶ú<ÄX"mØã&¥«ŽZ•�±9 Rê½ÓbsýLž7 D^¡ Žqõ�q¡;vûŽ@UgxFkññ‹¯ÊS.ühQmù{Å7(3=1^ÏÖ\þÚ�c) ¸ø„9�‘.páX¯:˜@Ëÿ•±Ky�¨¼ÈažÊðBOÜàM4å¨[ÛQª<Ì©žQ¦SxpÁ¼õØsç»ëc¨<:B%麤¾8ß§q1¹"Žð† À÷‘á¸~Íê:НHÃ"�ÅOËÿs;ÈŠÄ?»6É ž�£y°M½ï¯p=~î€?DÇϹ8ô%ÎÁ¨»&=o%?Qy‘ÐC‰ð †á”ìÅó"qüÐ*€‚Ò¢Ä�Rõ’þv¹H_,þ½Ä½ÃOÅ«aÛÑ<²SŸB>^¢³¬cYU=ÞþS!† �>~~á0åùQËñ@i)ÒAªÃ÷Aþ©/ÿõ?eÕ#¹žQNÂX¢-òày<{(rjÄ šéj¤/ Y ·Ã‰8Ë ™bj5b[c ÿäÌ„†þ­ÎŽòÄ¿7¸±¸ÖkNý—h‰ k=‚hÔàWeFè]šfýÒaG’÷šæ6�=ZÕ.)#æ)ÁÍ"ä«5�õA™�ùlüF/sYþ¨ò¶WçÔ¯úvñªÁú0 âqñâßëOž-q¹jTçÀ«­øÌâ¾Tés¹|¯Tm �{ÑÎ57nÜÁ&Ú)þ¿{š, 2-›H­Æ4ëô0Pt\ðש,r0Ï t-ûAPkk¥Œ¥þëàfM+uœÔ´8Š�žIŒ×”1?…gJÊ´“Îó¿ošÙ�Yº]9›ŸÔy‘™¨{zM}#Nú-Ó{D _‡׊ã¡<€–רý×…ïÉâ¦/™ç3Klȹÿ©�bŽú°ŒJª�òà˜ZÊô~÷¤y0œ"DÔ]'ú£2ô÷%u—ç�û†ex­§žZ^îI tÂ÷ÿí¿ëì  ¢_¨[¤óøYv°-ù*¬Ûûû@h²\_·p]îX"=Oå<uK†ÜBNÁ2æ@­àªy'¿–/r‡pã”̳óªúå9÷¾¾ô�M<#Gªïšlº­…±ÏI\¾ÕØÛi¸XÂD:L_Ú¯ü¸È/ä@ú¯WÍq_uHÛ£%=´“eD,í8†ÆËîIì0ìߨo+öóMÇ´}RTܹSÔçjÄ)õŠEÆ,)Ç ".d¾”‹ÊüàÌÐ/0`ûU™Ûr“}hV�#g§¾u~ê’ºŸ[eè ’’„œYT ¨ —‚E¤ÖsÞj§ ;wÞwÊ><Ù©Œñ]°Ò×T"G? `ïNÔ\_¤FW|`ÿ1\<€ÍÌs#̵."c誑aGnÇ&€ÛE)[–ãpÔÕŽ­¸©ÉvÎ3äsª2\­ÂüÝ©gÚ�‹dÒ-=m/…S}G‹?þØGnûÙoù;]¾jâú30Hnc©&Ë)�¶ã½@@¿œxí™(NeÝSDá7÷Së1vüä’mR¾å $Ê€�m§GwÛöœS+–´c{¡èáá{šƒrŠ�Õó‘šC°uLrDNQ´Óâ}gÜtL#ùjµCÀÐrÔÕö`øëÇ8·q¶ÓÈ÷8éìŽ#mTÚi¾`3wß‹‹”G.ªm¯‘ü¡Ø|R¯´#?NóõýRÎÀËÔž*'«·[{ŠDuúÙÿ´8YÆ)Ô–KÕû¤=tÁ–õw ¬§Jëo¶ ¹�æÍðĦðT'¥7ÿ>RQÁ{-%—ÞqJcÑ+Ld^ôÜ1áûˆù6äP›GœI]^·Ó�§šâUoG5ñv)(.úÝr“ ô§h?ã”èm‹b¸!ù×tÍÚÇo,PÉWrìbŽu§[a› NÁæ(³Gã6ðQŽìËEÞ¹ÁO*;~áá4àÙ×Ü4RKJ 7ä'¯¬u…r¹ßµÒ劅•ÂH)R JÊž.®ðWö§ºÕLNâqÑv:ñä’O–  Uõ1墟+ÌÄ~±7 bî2MI,ô5{=˜'_¿û~ðTuFD©Þ³ªQÎ-÷ä´?'æ>4óÝÿúŒ{ÅõGw €P|kÀçsÅñ8ô…9òüüW{k�7<7lUžt  ÀÚ8,EÜü[ßudö€?ÕŠÇ�/V»òƒê©ÂB”ÿ ôß-d–\7€¯føö¼`¹²¿IÏ�yF} í3¼ðÛÆñûúeW¼ÿwYOœ^u1p¿)^÷Ÿj¿>ÔUó�òÂ'Fù¹~oÑRoà‹‰ù¥š>ù§aË`}+§Ì_á¯/[¿~yQïé`´ùúÀ©åÿ±œó´\ŸÛ%û)²WÆ’²õÀ²ÛñÔ¹Ü5ëߺêD=À?úôP£%§ÔÝF ‘ô¼$¬k"ö?k×½.ýºÁÏ̸b‘¤]¬5#IÅÀÔ÷Éce;íÇ$«s˜sèQÜð$|깄єšÁÇ'ji!Ò]„.«é¦Xy@.ÿ„è‚hü$ýG ©¸»Y¥9Dý©/T#G¬>>¹ë¶ëP¦´šî¦WÎÝå:€v̸öQ·[U•‡Üä°ÿãxÍ—eDŽÆ Ö �$á®t•:Š.âû }k�g»c[7«îš£}]ëªy!3Œøù/”¢3¸Ò¨ÜŠžj¯-ù(qš%~¢›ò­"X®3?ù†ß«òt ܬ˜BãІN)x:œ³.~2ô0¶ÒØÒËËh@½-@rxÙXù]œZénh2€ùß�à ?Wä6ÜVôNð“a[§BŸŽg“xÍ]ÉHdq”Š�ǦÞlq2‡¡ê_Ê$lE²õVßÇ[¢ø6ƒh¾?_ýÂÏÛ³ÓyÌÄyKœ=ð�¯}/ˆXÏ–”^/rÿdœJT¦˜ت‚ /ª¿«�¢‡ƒèÉ¢âà£Prî§ Ã;êd%û¯¢10¦ò™ÆÀ}SÛCcà0²X¼KÑ"…G’ìè(5ä¡£~š"ñ¶°nj‚-`݆äÆóúW‹ �Ÿà<úîŸKGê­gyò�À/޾™m�{ú–*ëjVƒ;â�G^’/û„/ñqòÅ®?é©€–ÿ*�ï½òô~_ÀZòþ+ðVÓô@P)¨éE±ðÅ+ü@@.ðͪ{*G€µ\ÚQE["°uõ•zg †1•v½'3î¡nÖ’Ô|ï“¢ØO¼ÐÈ1ZóLÈQí໑߿mæå~\dp�Û{]û™Ÿ©9ʃ~Šª“ËÚÅ®ŸI…âÚ³%À†j$¶<ñê×l_Ë|"x+wÊ­ ‹› ¯Ë¸?GAru“פ@Ë‚��˜ …oš C>ÏìugÚõÆ¥?·3f©ÆÄ]c‡˜aíç¬ §Ÿè8ªþÀs ­;õsM6eÓSz…õq¶ˆCÛZ,– xÌà7Û‚ÉI,‡ÔD®>,røÏ^eG¾UÞøãJÔ“ “·+"Jï–k� %YHеÇeüÞœ=Àç+r·ðÙ�}rVXa£÷FVÜ)?1…æà�’Dd¥ÈËçž(¡.¶“ŽqZN¼mDÓ¦@w“¨y Õ"nŽH¶Æ8"q7­ãq>)ÃÔ*h“åjK{n¶cŽyd䨩9'%È]�·] *�>~vºÜ#ÉQç¿:TU Lä\-¡˜/ųéy)œŽªÝhnû r«‘¨ÝŸU™ v~ùG ¥Šõ üîsèášW·Ô+™sov}¢ž›Ñ‚à*[ÜéÈ·=« ¢²Dìì¯Â˜.J˜§HsâüÚ~Çk¯ pÊ&Yd¸d~ ¨äQ&èÁ‘Ê‘–ÎWÈr–‡�H#=ÅNÎõ3^cžHè þ(ûª²xúíÏ’§YµÊÕy¼ {ͨþ™¡/7;U§�ÒŒón$c3ÊòM:WO€Àed7:΄‹H|X$/õ±>rð×ÿFýŸùêõ 9e?�ç×£Œ¶Ñ5˜*®…¹û;©)âkdëù“Ï=Â×é¦ó½]ãl”�¯Rœ/ha/’¹µ ÇÀP©_šjdå׋7HrYaŸè•ô_¶7íEt #Cm ú¤Ú võÊó©[mC‰pÞ(¸{FÞ§§Zßf·óûÒìëv�@ Y/¸+<ÕÜB Ý ½rqU¤¡]ÿ:ïȳǫÓO¹Ãnß‹€I¡Ã_±‹/±Ã\ïöе¶…¾…¯òPŽÊ¢Sˆ6·ìd‡Ͳ² ]¹fa\]q � —ât>hÅž^ú£MWQ±Õ«8H¢KŸ[¤u: Ñ�¦ýmܲ‰-3bRÚwº¯|XÈ5âk*s}Щ»hgW¿<´IâÆ Ó2îÓ¿jî5{ïš<“É0þ�œ[�æ!ÕóRÔG„Ów©0ýC³…?.Æ»&8Üë×:à†¦ÑGqÖ³ÈjPzô´d>+(8kÐàùf‘òÏ–ŒGþ_à#/¯89íÙ¤.\ip*Jèmž0Ñ‘‰�Þªó�uçî1àô‰Šì“â5.9<ª®3Ö”ù…‚žmí?=ïY¢ú ç”ø±Yqóí¦ÁëHévýZyßÞ䨫¸_ÏÎü©†Q‡‘›cg§Ã•Ñ}<±'ÌW½é'/묬n8þô‘óþßqAkñ㱃µ¢-ç<àüÛɤcµ‚#¹j}´dø»D°¸âù°‰‡õO¸iÐþæ|©ÃÏÔÖÍêª[Ç] s(}¿.ô—YBbÔÒ€ÕŸo.ɉŒ—Y¢ñ¸’*áðDÅPWwR’qø9óþ,‡¦±;èÎZGâ„XE°éç±x‹þ=w3ú�~ÿà•�ú£scÏõJ7%uÙðŠt¾AïŒj÷æ‚û|Q¿rVé­ÖŠÏz=ñ—"øp0ÇÍc á FEE¦j‚Îrß=J»Q\Sâ(«äºñ2·þ‹á`ÆI|Ÿñm_mØæ\‡Ï ‡Z#máRCùj‰©Qöô‚ô¾t°œD²ÇšÍµr]®eƒIÏy=˦øRŸDŽGÈ=²I©äQöŸ^•³]KºUŸ=Sç[òHôŸ-^GúG\Ó�—ÁT|Jñ�Û9ækÅ·Ÿ8žlFþübÉ0Žˆ6·Ô(gΩß�ÜqòÐ%F±ˆ\�œ³i`‰,"�w‹,ÔA»>É?q9Žig§û!šÛi°‚»âú2ÚZÇìˆLCr<þÔOY?Bµó+û×)µÞ„H”3gW�"ûØ4Wݱd~:RSÍaHb§Ë.+˜û yë¬rz9¯™®zjé>!pÿ54tá:×ü Ýw�Ü9Oáã�UÏ\|¿{Þ?0†ã¢9Ó¦I϶ù³k�íþ�Üÿ¼‚¼k 1ãÔ>ú~èxçO7ÐE œ WÚ�§­u#§àd ÊŸg„Çé¼Ld¹£Ò7)ÄŽ†¸ðsçJOE]nzJ°|8œœÉ© ÜÎìðiVÆ\û+ÉcvÍ!À&& »935AÁ·UÐW°Ø½^b¥2¯õ`Öï5—€—�]ù<¯Ml§²fùO Fø,™8}�¦—%bUVô;°ÜCî™ÛíàÏ+N³Ý‘ç8¾íäD¨YØ4°HæÌìM¨—Öý€Þü…ˆÏ©§w5qj°ì7@YšÅíèN Кó˜·¥ÎÈ­w4Ù}dµ“kZ„v¶&¶$s°ìç)^'ý"®²C¯[ÎNëwÖg¹è ¯�m(Øœ?)ŒtºÃÙµ-¼<â)ÏÇi°§<“;=7*û0®3wßMev® ÚÖ/Ú[.FÛßÚ¨¶? vÏSÁO¼ª½ô;~‚A!2÷ ïªvšÇvd¹É}•&u„Ó†5ôÌÕ1ûï‡M5wšìƒ0M)‡Ü ØÚuÉ}µÀNÚ¼ÿÞaß{§,ÓØ�dmFd©©møÇ£�•œnÆïY÷@KN´’i ýz “w‘ë@�OK²ûpd­ôeRÿIÀ8%MQ°S[ŒðŸ‘DnÃ.yì„2å+NÖ1Ø©õvÊû@ß …ŸÊ›à_†> �z�4uB@°ù™àžÚ¶�à‡| ¿e´E¥ ÌGaœR[ü]“ÿ$Öûrøe¿}€5ÒQ¨XÉ6°¾©ñâÖf`D5‚•#}à­Ç9¡�œu›l€Ðû>nc_} Xr„°d^"'ÿzÅx™4‚�jN©’t¯^�4¼Õ{Àš1170Ê\r=VÜýxv€½\ è"Ù³[uÂ[qRGdØ�ÇËÇà{Î/7 é‚v‡®×¼eÚýÍ—å7�a/$¹�%“rAn¨°í.ÜŒ"Ò\kÊ+åžp%êø EçÚýÈl�ùy³Ì8uôÈ5éá¬à×Å"£…¨ä�£ê5Yî ‹™<_ȱg9ÌvgÖOùG½’ó#Xßšøj‡gðéÝr@.Þ¬ð©Ç�O;E|J‘°ÈüZ" |ÂàñûúèËÞT°=µðì»AœLßê¤îxeBHÞñX}Êê=•÷ë½O‹0\:þ`�—F®ã úö‰Þa.{|{ðÏûíŠç^ m¿?µÿ`>Wé+œÛ®–äcÕz–ÃñàéÖ×Þ®~Ì#™îØxC»xAf¯)Ù.—Î7g›äp{Õ¯¿¸Héãóÿô yÚ¿Ñ�‹æ”_á'¯–›p@A#¯}M`9�Ÿ,Eú?P}õ9]©šÝ¯�Ïü�?'˱ x˜÷�‡åû"ÃG’ãÚòsŸ¤Ëw¾ÝSñ9ÿ�/ãà†ŒËÎ ¼â³¸5 {šX€åÜšEoiª„Õ¨»®œ×»+唸J|dP�ë¨ß®q~UŒÙ¨�ÌÃ3³Áé?­å_‘�ÜÜ8¾�Ò¬^¥-ØmÛ×frÞ6­sôGÝU©qnÏð~zµa Ž«õui¹ö]>c({uиé±UYõU¤`–lµÚõiô,ÉQ­“S¬IwÝõTËtí;5»hn`쬠χ§XqwZ]ëÌ @‰÷éÖó.y–Ã*Òõu­Èkþ;§%Jý™ãA N¥;~uôìY�g%À‘v@ü,oL¥–cÚªßJÿ4.]}Ù(“Ê4OnšñÌ}y™LòIÏð•<6ð¿—ƒwŠÉ›ÑУÐ�çNûbI­¡ÇËÏûŸÏsòf‹j8# ‰ºà¼…ßO_5Ëüʑʹ³Z]b«z93„«áŸ€©í®-B¯ùÍÙ+®_}%.˜I0w¾”HNv¸þañ:•©'ÿät%Udý8HZ'}$cD]ºYï½ÈÀgiˆ"¹Tà�v~öÕ‡<½ë{+µáG[#~Î9¢H ¼&¾]²UÔÅÕßs ÛâyªŠþ0Jž›hù ;¼,Önø�Ä+¶ôÿÆù4Ê4ÜËC4~6Ê=‹È‡�ÏËœn 7Sááp̓®³Å/©C JGÐx$|Ôªét†óLöÉÌ¿ŸQÏÆ]ïtŸ7Ì,¦KõÓëp¢gº¢šØ±ô§&}|z…[ño¦Sè圵¨g~T&å¥@A n=tþ³¥'“õ»“y¯¢í~�g:ß;Ö?È ¿¯êK[³¾õ_uéy諒må¶ý׿§ÖßTýœ¬¨mj{î ‘­``…'cyî/Yû$ÿâ¾fšr�ÌÏ�.}F†º©öB±Szî7f:蟔¦†woL]t^±B–ÿä÷Y_aîÄ]—HÇ œÉXêÁÐ?‹ÄûOiÌé Ät #XgMŽŸ‘W©;”êØ<ñu¼Á‚›sâî2Y© ÿ®ò°M¨J˜¿Þ¼Åë#�^¦¿4ÇÙþh-Â)•v¿?j¡°<Ú|õ¥*‰³�;>è¨6%¦¸Ùi¯9× ”Ê`EXV�œãù/zZì´K™é½’ÔÕ]OÍ¥ËG[ÅíøŸ[‹ÇO‹ˆ]jèf\�õÊÜß?¿ºZn»µAí,£-Mo�`q›•a·èÄn}¤ ÿÞò<«Ý4‚J®ÿUÁî_P\3X+ëÈÅvÿ „œšW‚ãâkÄÊò­ýmŸraçHÖ¹,p� ÖUëÍÈÕ¸ý/Zoþr\ä"[HÂôI1t¶¥‹ˆ�…­-¿·’ÎzÈýȈTØ/ÅÇÔ·_«æ>âÅi˜£S,tZ-o¡¡©å~ÿó¡ð&l¡íåT]Ý“æ½Ý…õ,)7Ýy™,—–ÉÓ¦ó;Ï«*^*?rÍ X#É€÷Ä‘f…Ï{å«ãú'rçÝ–Àƒ6»íÌ[²�nò@*´*9Õþ ýôspz«s\T/è©Ó‚ÜZtAûrú«P \Ñüv\öæêù(ê<Šý6‹Ì�¹”«“_¸ä‹FFÊz¡· r¢ò®Åêpñ8oçœ"¸ƒGåQÓȹº1AÏ£É=eÞ>I’vNíbµt´ûé#£\îÔXâß?§ûEóÀ,éØs+)× C ŽyÇ–ÿ´&z�—´‚ü˜XÎ8ÕÞ"!M¿Oœì¦”¤(õ”tÅcœ$ÐÃ^)«¹C2\nzzâÔÏ3'Û!·ëvþÛ–›±f9ûõ9Ίâ¡2 |š \³5é4D¢dÒ WÑß´uäýœg�°·Ü8EÚÄùöáT³�Ú®6Á÷œñé”Þâléßó §~Ÿúž¹ž‚¸kDú¾Ì¡Y›ô¦í¬O?‡ßAí‹ö·?æ¾Î¢Öž¹~Po*>‚¶çW9§Èì–þz\ÕŽÎ2WÞÊ4:>,ðžÔ¾ïÈ6­{±5eL%'§Á±HO‹PÙ&}€·�rt£v€Ï�y:™©uÖ¹Ó¨6×êêñ­ð-çÔ¨}6›Ë\_B<>÷­×Œ©OÝ*óÚ[œç”6Ûiʰç�} Œ¸¡mQ¿q±Í©§�þÉ3ásâõèäT“ãvÅ{]¼}¦:4ñØ×qͦV��˜.ûÈô…âÍ|oÍ`7}I{+ &cQYS±‡ñn§ØŒÐÓmp òq:äI—»v8MUÇd2þ8-vš«žô=O.bª×s57*cf&–Ýü‰@íñìÍÔ\âíŠÃï¡™Ÿ�)\/8a¾ìÅ¡‹E$­Ü•±l½{3Â1�B௟}s˜£Ôø'žÓ¾¡§†‚á¹B-“ÚéÛ¦ÿŸK$Ô ú-ï>Þ¢�±;xÂôåÿbç�þ©ÜØ�ãËãû !e÷4±§—sŒGT®õ—= “åˆ3÷Èžÿm=àû®øÿøP|\¬ª?7³Ð¿>Çp�ŒßÀ?Áx%�Õ^ôx33y“›Ð½à¥`qJìqê÷ñí Å íŠ §,ïyËÏ�*îØ?øâú©íowI:+­Ã@?LézvcFfÎôéÉ̈¸¦šsÖÆ¿Zd!"4³ý¾*Á>}½fe¿L¦ʃoÄï>z¬‘u'¼Y¹rÜÖ›ÒãŸ{ü-0ý†uP©ŠH¹NâuF¼oeÞÔÞùw]µÍo@Ì+ôÌÅé5ñ“�ÏÉÞ rãwº*Åד“Z�;ÖŠÖg"‚kÔXÂdˆ½f;³;O„¢5à†èïž±íZ þEâ7®œW¹SG]øUVÎ@$L~|�Xx(å'-Tñß> ôL`¤¢ˆ%ý†) ÷0¥ý×鮆w¢?‘¥¯ù�¾]Ÿœ«Ÿ×$´ô"à Gû-Ô›ùvâò¬{8å¹¢(ƒ±6¤’B�Ó¬m-÷FG°]¥/‹¾¯}4¯ÜŽ�"Ž5šQº}s’[î~·Ky÷L ?±wüìy‘®ˆ=åUª“áá¼*¬5}xË_Ò3ÑC~ÞKí�{f²7KDíâ— ÚõÜÒüPêôÚèfíK'¸÷’\—Œ[�ŽÖÍSu&™Ù«a”*ï•"ô{Øéžz:ã2ú‚‡e &Al:xA~r ¸ŒÚ3QŽ×«S‘g�=6d»@{ß4ÊFÀÙËjÒ«CýOQÁ7l–tí+½T+†OiÕký4ÿÈo8ñ)`’H¼Óñ�ZYþ%ݳÛÉÍ3¾ðã`¿2*÷±ò–°~/÷{òŸ`øÒjRçP'vLø®.ûv_I|RÒTŸ Ëµ=µÐ�(àáÔOÆ óïñãô;öë‘Áw'S^êý¿í€RÉããÊÏ컵êï�>6ëÉõò$eXL}ÓÅ-[?‹HÊ*Øm�ÿÚ6[ D2ÓžÉQæqjéZtJâ“*'£‰O‡¾"—´S!­Lš‰|ÝÕ•¡øgšËwè×+LyNŒþcùï-þ�:*tÌtpø5ÏŒô“Ò’6Úh‰â¯—û¢Æ_ætÛÑ”s»¢y½þ>õ=4zÏP�¨vÌŠÙ æÎ†MÒMYi&±û—Š'Ÿ¿Éú±QÖN"Ð`”hÜ9Eøú'Ù…®¶-¡g÷ ¤’‰K˜¯kªåOllSFãyZ\*�¤º÷»Çä~û%ïÓx�èù[óÀjíúFž‡É�¦ÁØQ}Ó¯‘ƒ„$JL™_®¿ùûßþ[œ“9C°bë�‡b=ÝV�äÿåÿtŸþùKѲ¨ÍYTö\ÒNõÜ/‘1mƒ?¥ü*Ÿ8­ˆ'DXüÄþÃE–ø©³So?õêå[�ÎÑ\uô÷ÿ¤„½h¤†Ìˆ\Ùz?rlaëOÔ§ pøç9>Á–ÓìHf5 mX‚æoœì¶4œvÖŸYñ}=ÛMW#eœA„ŽÑ±¤D•;otžNt,2rÚëµã6¶ÔY¦ÊüxxQÇ�‹×/ÌÓ�îƒn™jù<۱劣�wÞ>N}>`^n?À ã”Þ¯+ú1æv²ÀÍN¥:1\É·Îelå!ì”àÃßBS”壃á�\V¼ÙÞДÆhë ø"gÚ¥ |y.<€è¼Ñmqôþý÷ãCéóë‹j¤£!u�ˆÕöV·¬*0ë÷½†Í¥zTû†œ|^+L§”˜‘Sï8íY·T´óY¢üw‹„ äo�ƒlvÀÊVòëÕ§Ï\%GáG†XŽ�Žf9ýr¨…%#šL�!ÔâŒ|~6VëÈàS…{´An¸3çÜ!Š?’.Í`fäÜ|îÒF±Tlš“ì<µ¼õÒ`Žãö¥,^¸vŸÐ‹ßIΩº¨~Úqê&ƒ,GÞÏ‹þ~Ø)á žÝïh��Ý©{*t5çéãŸóµµC¥î Qí#‚Lr„•Óÿê);õk6{¤Ÿû7ìÇu£@k;ù|ƒr‚ª¹Lµ=`Yn($«áisSÆÔØ«r •¦tʵ#‰®Åpq’maůS1vêk®À ¡èûhd¹K,Wáeo†êí‘Xdÿv¤Ös?4äÌùHn^²œ„ÄÚ¹æRäfc%sû =°]#Üù¢ôßKL«”Yéø´Ó*íôp©Ñ‡~!bB„Õ~ò™§–éÜ�>@MËY6YÄ!+�ÎqŸò?î>WÎ9õ"¿ÙU"½v•Û}ž¨<éÒ~˜Žg^àßi¶S€3�ÜxŽög¤ÕÓ²Éq¸ózK$¬É¡ñy­@EŸm"χZwTõ±j Á)ŸÏÚ–±Å_,2zò/&zz$Úä‚Ñõ®ÙÆæË4^ÓyY¸øLô»”ˆ×,2ˆ7�ìo6”S‹�™–lŠö³ù°ç†g¹ø vî;|°mרÄB…϶.5.5¸qÐu†ßÙ.Ñp›Lžt¼>DnÍ”¹ ž¬™%N¹uýßîˆ8ÿÇUr˜�"¨>Ö)tÛè ÿ�‘íø ¹Ùgjøôø¹Â½±Ã³©D.Y¤#æŸûý4,mxß•_?Üiïõôiz)_;B²kÄ÷õR[œóšR —þ�G0÷ktWÚœŠ.2øœœF}5»Åßæ>Ôú™'Gλãtôð³tÝÔ;F~È>ã4s¹N‰‘ôÇ~ÛÝ a´\¬«£¯ §çaÏ.<&ºëgŸì)bz‡_<Ù)Ј(û~èï+ø›ëãÑ[ó\B—�ú׿¶÷i·t�¢šçÈ@Ån’“?çW #O•^ôǺÞç\KËÆ‘Ý,’ÝN‹Ý–þH÷öàÇ_{W¨ijŠgÂJSø�KÖCv¹§›¿A¯RõÔ œzÊèf~ù‹ œI¼m±bñëáÿÍ›Êÿ}Þ ÜS?° ÞÝrƒ_‘bú·<©ÿzÃü_™ƒ{±ç˜rÀ^êhüúÃ'ðøšÕÿø^ÔN\ñ ÅuSzM�_¿Õ]~ëп}˜£[X0ήêo}νI”ß÷Uý3­SêŠAsSigû–hÉŽ´íØ2Z•NpÍî—º\«ëW›•ñ‹‡ãîÜ\›€š¤JælUx':�ª—ÑråÓ�×.Ký3KÒ�ǰR�t» +ÆâºG¯¶»œß­vÙ®>ç:[Ì]!¡s¶ÕÊ#§ ,‰ù; §¶¦*l\±óÓ+ÀKY"†ÖV¶S—Ó±¤yƯ9^*Ÿ8ÞË“£¡spÜ 7ò8¾éJo²6e‘˜Èv§Êâ$娺ÍWê^%§Ä1¸qZý³-ë\H¦Iù^Ís¶ï§¶¥*Ã…FLÕêÈ—FÜ¿ÄI«²¯ÐêP›j=½†Ï€ù¢ûDåå¿ýâß˱nÙ<ìDÍÓÓË'; óÚ™@ÛÜxù¬d�ü¸Ð'(J…#E¶ü#©þSü:zŒ«|õdÕ`‡×Ø�‡#�ˆÒ\РHE‹þ`µQ{Íó<7]Q–¬Ï:Bà®±s½á¿7]=-ŽN̉WbñöÀqb Ì{¥Ž¼j`î��ìÍíËbüSíAqªÚŒÕ…œ ’sµ¸°Zp%ºˆ{ï™mêªó+Lg�Jùê´mò¿z ­ôeñ÷Cñó]¯H¸›UowJ¸ùÒ-FG.?(غwÿ\Sg¤�ÎOoúÕ 7GªÉ¿+#²xÚýyá«`K¤­çy9™©]¤'— è>�³$›™­c3Y_Ï~mëM'4cÍ<ê¦UœÎõh[•‰¨/ÃoâÙû^t«3mv= ë®‘Lo.ߺææt¤Ý ìåQòïÒ Ì¿ïÚ«)_QÚù øRû»Çw<ÚôKÙ!ò~Bå‰>#‚h¨hˆž=^¯yþ5S”Э?yÆÏ©o+µJ” ͅƦùÙCÿ>�v“S'’Í®]µÚã.³ú{£Ô1FÈ^åduEÉþËð;¸v¾{ùïÍV½žÿþ�ÿt‰kQ–KyÁ¯Îý�•%�ÉËd¶ÔáàÇo»•Ý„*Ÿqàu[ɨ¿Ý °vÆ'�9ÆãGb¦DÜË}®×ôïwßÿí¿µÖõ¸‰¥T;¥q:"Ý~7ØWŸóŽu§þÀÑ¥*:;ºc©ûÊѺíB½ÅD¹!‚íóRí%ô8 Ô/ÕzgóøºÍãÖ—à`â”Hþ…È«àTYœR{ο÷WDù8Eò àãVph‹´79¤ÎÜXì|‹Ìs§ç¼O®$²9£H6颅œyˆ„$œ>*?ì=ÛšÚ©®LG…pþ¶œ�‹FøÉã«UFwÝ;NÏœJNDÀû¥óºýϺÒ=Y-0ÿìÑ?øtÿøÐ¬E_æŸ{�l:NÁcðÝù9W…¢c(hÊÑ(üÔØ‰ék.sè …rœ†|~�€×b;S×xúÜFÍ=¢$üè×!'W±óøÐßË <Aºï:¿±³`þ×_ZÏ’k\ªZŒ¢[˜tlKÅÙÈ;÷mÈ�îLò?õ·\ÝÖµódwMvï(\�âË‹G�f¸õ©Éå‰^†NúƧ"¾ÿ‡F‚ñõÒ,9ñ<ðC$ÚÔõìpûýñS·ÌùÿP>߯ˆdyà4Ð3’¸«D"&®Fßif‘ŶżíÔ<•øyy}Ý1wJ‰X–\ÃBÈ%QyVÄíœà>TŽö{9^û5 ƒSèâ Iš{²ÕÂÁõ"»kçêð;Hg#"/·vuA¶$äÍ¢yÈàNψÀë]uéò‰:>Çg¥Cüæ`m°«Ë# ˹ȿ�}6!þXÌØj¹%×–fGØ —-E1#ñyj°CÌNÏå°©`äÐÄŽ²E ŒH8‘ú ¨zØ“+ôàs\õàù¹Ã�›Ô^oE<¡1oñ\sÕz<ô´mq›–‚mzIx£„jqu`åÉg†d§ªãTåmÓHÂã6³%ÀZ`ÁR'*ÝÄy o´½×€;¼Ù"DLïü$ʼnüFëîBÅ<#Žo-ç²€ŽvºáòxO?X$­�fX¢žÀßë¬ÈσÀä ò°É¿²l~äàÒVRZO„\\eüj+ŠáVÚ Ë^@¸Bÿ!×¥VZ$à´és’Ï‘Én<4�ƒ¢~·+‡TÇa©--²ÖN1¾sóÉ-ÇcxA0®‘‡Ù�¼Ú 2�2ùŸr.[ÐÉóµöYÙýO›?Žôx·„…Y¢†¯-åøö9+ ’ìí—ôn7>í¼ªl­î1mžœ¾<'ò÷Ô•‡ÌÏ:oLö‚Ί䚦vÌ=° ¶ÀX ÙøG;)oÜ”ãäkñoŽÀÛÔ\½^Q£<ð¦LÍå¶ ÄD™lé\eñõÅQÂqªßÊm$¬­S|èP?³¨Äºœñsx|3s¤§Q’k7õOÚ1t(]ìi1Zõ´¤k3PBinz•Ø�O bûúJ¥w&AeŽ+êeêŠ*+ÖÒ›óÒ™WÜýˆ…ÿí°|¥]ÝC˜ –Õr8… {Ð xÝë~¢ ÔìO¯Å±”év×|{�¿¸ž*KH‘³“=9Š©'“ŸÅzCY›ã€²ÃXæ¯Öó"ñ´¶®CžÉ?ÚЈÍM÷»ñÚ]?s—ž^s°<óûûòF†e`¼ÑÞß ʉ™¤£Ðœâì^ÖÿžTNŽŸ¯ã)ëD®XžÃ¨Ñή½o×Ó»8uþ8]'Š‹ Õ!Ljé&Oø± À×q<\y-%}mD=‰yÌK¶ÏóÜÓ+þz£ £ì{ÝÓmòFW\:|Ÿ{ò¹éj½¢º‘^ =éÎË?Ú« ÓÙ©�•È’hÔÀNJ ØÊb{üȬ�cL?ó¢T ¾SÛ|Æ?e¸›�Ïàû¶dk „S€Oàu'ßZñöƒº%-f•†MO—+Çé"7Ý[<"¶j‘*¼=©]oîq=ÆÉrù wŸ;î\-ó¼©`[VÅZ3Å•ã¹Ëhé2Ùþ§ýÿ÷»ç3’èù�äÕÄï_wПkD–á^Û-§ŠC½å:¾!ÂñãF£rb=ƒ'F8÷¾úŽ×Oœ~ù¸+~ø�­2›Ò×v\™îÚÏü—â�Nu” æaÛ`È@³)Dl~^ÇoÍ]7ݵc¹è¼×\€~näÜi7Ò.‹,EÄæ‹/ñêB�”tBÎ\B¿WÜÝÇ?¿ûÆ£ó \Oq,NÈ ‘ˆãß[k']®;ÐþˆóûñCéøÁi?ÙpØöúö;ä „7çO›Q~F™ºp�ÓPOë�¨1‡�’�iôõ�&8=š¾?Óí¤LŽîåZÓg«W‘kÂ85úaÆÀåTé Áë�p‡»EüŽðö@G�¸º–S2o�iÌämŸ4²ZðZr1zÅSB¨1ùÐÈÉ3Bñ Ju“srŸU�ñ¶zû¢p¡ù!/§üî.^~íâC*ÿ„Hk2~Ô aárÄŸ:_¶ãVrºNaË®öPN;¾ôÇå<ÚÞštÉ÷QfË]KŠÇ‡é�zj®owFì(‘s§½Ãý‘˜všy;‡q˜ÁÛ]Á_®:µpfÃ^5û->7!QóšÿäøŠã}�"Œ[¢û¶S÷�¢È è�ceí缕£ÒG;þ#·(íÊ\z�b¹nlXº•+ö¿+\?²ìò.ô7¢ÒÙ#r|®ø=1µÝ˜®2g¯Ö+j5š,²²kä°¥ü-�Ü{Ê éæ`]Wúÿüÿ7ºÝï¿Ý��þúù“þ/ÿçÿJËrip›!/«lÖn¹Ó鈟ãgäÖÚ'Îh º•5 „\YÄUÓ Žt~ LR§%Òô᥆äi[äHDHÊ>XÕ,M]I&é ¹k..rÒ,©ÓÞïïUD.íWíwÞ$ô3Cö6ﳟ ŽIÅy“ì/Ÿ‘‘Rs¶MèÏ"«ob-¬;½?Á~@ï\r²5Ê2xfãî+’TåÃî�æ¦Öîß¼Lá>!'ß49©Ó_Šå \,'%êZÎBO¡çm�0;"ݦK?”×2Qm =«mŸ¡WwDô^,)W>uÔ:NÅô7ôIògìT\ËáÕË¥ÊõÔÔÕÆ9+¹ÀøžíYžÈx‹Sïâé‚\ö÷™Ãx9-§hŽ”¶Y1s´ã4mã³’úZí§ßÔ˜él‘Àû] ÿãúùŽç7=ƒ<"p>Š"¢qŸ_Ë"‰"¼%{pƒ›u]¢Zõß�r¼op>v:«Ÿ{êi©UÖ¶ÐÄ’ì=(~QõIÏ:ž¿�ãî±cAÏ=,ýy-fÊÜ…]9{F®·žw/{ U˳˭ª¬?9¥»`jÜw³ÓÒ×§%‚sŠêÐXàÝõiVÁÐF*s{� úÉúûãª7ö‡Ù͈؆�·#GÞ©Ggý½ïqqy»ª<Íè)©øž÷Åç|.Ð_—z|˃7Ì‹¾ôoGó�蔚ó¦xãE¨ó´Û£ü\4©äßk̵—üµжÔa¡u ±²à}ø£SªníׇúuË…(ç…=Çþ¾Ú› ž2÷uïðk¯I~Þuíá׌7ÎŒ@ˆö')A.?³ïÙüx|׺Í�7‡m$E2E|ÞŠ‰jëÇÀQÏoEI–‡—=‡ž3Å™»œÇÁ6£FQý.vi=–€? JOåÜ6É}•{܂ⶃfáÏ�«D¤êN7ì"’“g¡©RލKCÆü\èå{’òÝçé³…ÍÄ›�@WA¯ß<þ97F{rqq›ãnTldµ¯úå)RhcgAtçª#2ì»1¶ÇDp©P“ —ˆœÂâ1'HœŸÚm?gåºõ#Ž.¾®ÊIRxÑüIù¦š/Ô•¯4çuñ�i82àØÆt‹ßò1œ†í©ÞÁ+=–ûÎpÂgºÕx;=<’,7bßF'OÜÆ^§ïÒÓïôþ¼Òß8ÁÔ%µü 6Bë~Šãé±�ÐH·{�šÚñ“N½ÐIú*µqcG’¼ç?S`y<ÿC‹ô/s2æ-~ÆE—ã…Êuv÷Œ:4�ò_7–ìº=?Û›nÅa ‚×õËl!9Ø þû�‰›®~&y~uc§‚'¹Å@?Ãú›ó³ ‡Þ uòâßI�¯ÿ7òž¹ª_xF޵ eá´Ç¿‘«Ç"¶6¢'<»AJ/ÓŸ9dŽß«�NWÛý‘Ú˜ž{-çbvü=GçÈ�sNô×w|NBnÿÚÞ¶IvG¤|©:÷ö؇=Ý=öÿÿ)ûmcÝöúãFlx{¦g_bí™>§*3%aKâ!ežk/ï­“™ ‚ ÞDBà'ÆñF•M­ázÿV&ìÓä´Â©KëãŽ=Ž\1õxù^–_Ë�ek‡ùl xÍ}SÆÅò0Üf´0dô°IÖxÜ Ðª[Mä«QoÈ÷9'íÖ8¼�ÿ’y±àYsÛ!ç¤àô]Ýa—€§ÙÏÿºS0TÁl*±ÕªÆRúé%ë��ŠJÝ�;‰57S¨°žæ¶ yÝz1ðtƒ{‡]îõVa¼¹³ÕÓúõø9 áýæ>÷`Ä¿Ð~is°É]ÈuÈÊF†nÌÌXÄ�{«£ÇaéÎ2BE¥ÄÔÓ\åñ7xW‚ Ÿ�K².4×ÓLÍŸ×b&~; |÷š;qÕ oåæv:­-ˆ(Ý’ž8륹îÆxÖïgÉ¥Jo>—jWõ­\[]F�÷©láó„S|Ï%âPô0òË”ãp*õ‹~cþŠÈ«_ÿZÚMØâ­!½V~%Fay?HÖ±ÉvÖ±SVs|í1L-˜G p‘Öûy _Ù‰³Ú®œîÎ%â`ýÿTàcK/à™ë§÷“V#Ná›—Z¥@Úˆ‹¬³ã's½�«åx�óƒœF‹æ.‰IVf=}°×±ä†‰jĽ:-a:9J4Ÿò¿¨s%ÎLUGÇöÝ‘¤§Og [Uä…‚ÝN¿ÝððnUÇ驱á”à�îÜ5©¿õ¸ÎëXA_8mWmÈqLF½!{:¯6AäKwʵâ-;׋"ÿËÿõÒ÷ï?¨'Ê×nò—ïõwø]¯:ÚÓµ õ…‡ç4´Rë>.%²Ps�H#ÿÁfá4àzÚì }'+’l\Œ¤SsB�çê…hlU.¥ŽÓíÕ\>Ø8¤£Òz�A°ó8`³Õ‡¶eàç‘lË I1ÇFUá�'(ª§T×{ð)5—·�P;Ǩ­oT?TG“)s£=!—ìÈ0ÚRi¯6šjÔüΚÓ-ÖHÒš_Ù”i.þÙôh�CúZ¦yÁ[¼ù)~1콑‰¢ìßî¥*”¹ä)_Fÿj¨²ÛR- rmËâ€'C¯ã_ËiÜ×»ºù`œ.µ¯° ‰ÏùužÂo-ƒæv›ßâ¿ÎÐçïÿp¿ÁO|€o¸ãÑRF�ðo…oÖÔè¶Ê ‘Tó¹ñ“½ÿŽ�~ì…L‘�?"¯DÜóJ»ýJÑz:}Ї~àú8æ²7áÔî“—â´~TG¾õ³=&Ã9iWÎõö ½BY>æòœÆçB�3Þ´¹Ÿñ<_Ÿ.5Bî$—Ç­T<_!äÇÉÁÖ �òü2‡Ö½«õúùœS^S’/cÏîbúÔþÕ«�?�¾"ÂîžF¾ï”0f-ö‘ZÙw Kg ~uk�¤qÿÊkãü wP#”õñô¶îb_4JH³§§Típÿ�±æÄ”Uqaj¶„š­ÒA.z]PϾÑJ²EØnüSéè1þD ÄùºÞ‹‡3?pöÀ §€ó<Ø· x×Èf´²ÉnM1¯Ò" •g3NKÇémÏzz»”õ´‰Õï)\ª9Gv=_å8ÜÅJwÖœNåqKÏÚOÆÝr€–Ö\ㆃ‚„k?|ݺãR=PóÊ…ˆï�Íuõëo:°ÖI uø¥È ÓÖ­J›±±ÁÇ(m&Ó¥ÊSЊ²×–¯äÊ=³æÎ6Ž´±±hª ‰®K;W¾pøŒµëuåS¯Ì/¹qëük@Ÿ è ¢¥)�à³ìÌGÌiM];ƒâú¯aÇF™E–ÜÇ?Ì#dE~Èwt×]j=D¾6ß•~w€žˆÃNG ÀžáŠä´úÙR—'dG�tTx« [\ÕÇbC“£¨úÞ¹³#„ã±ß9±ÔD…½™Ðkë�Ÿ1»V]ÛE…øøâ¦Išk)üŸœ´ê»%rTe,+V5¼Ð§<«`E„w\ ý-ý>í;ÖÝQ�ðµfkW%ã3ÿý·ÈY7]ÊÊ�Ôô£Ãq§³º!ï/¦¤�8”ùb7 Çã±w9º[àÇ,.N\]¡c³•(9µ/:—컩 +™Jã½Í³'(8q—w@v¦M2¶Ìðè*9ýU]W;.ÎÕ�m«>ó‘EÙ)I%oOù¸ÂË]ô£ðlÆ•ŽbwäìýÚ=-OsPÝ¿œ¯? u‹sú´,ÈÇSá'–Kës‹+ÖGtg-è"éî˜×wMÒpIǸF2±§ÌZž¾wà€]�tX8¥›Â4Ç“PËe‹ÈÙ�$E�k7. ¯3+ÝZè>ã´kJˆkšíŠ »c×Jòª�ƒoËQF^)Q†ô²¹®;UƒPÊ GÈo|ˆcúD“™$!G˜!Òq‹´NÄ¿F‡”x\6ü�ë ¹ã~‡džŸ·t|-’ óyA®Ë{–3Ö Ú)è#�ô|Š'ä ‡&³nù¿2¿qñt·™!*Ú0N¯•¶D‡% Íl.XÔÞËýŠ6“�ÜåÁ§[áØÚÛô÷võo%“5ç­sXÌ|ÙB«æU+×ac‡Š ·‚‰¾œL+~�oo§ú‚q|� ò¨FJWL¹>”»ž;‘ …û3Þ8åÔY¢ÌùyÑC²kn«à-[ýµ¹R&r~¯4=ˆ>ÖA°¥m9<‘|k‘ù¼F`nõÇ� 5³·œËü ³ìôÝlJªuÔ'Ôܰƒ§¼±£ÝæEý_þ·ÿý¿ÔWká!±ñû×x‡/Ÿî�ûº\.-O§“³×_MŰÃAW,Tü«X"·ŽÌ>§V*‘PRO‡]s¹Ÿ_#ÞîîxZf·Ø½ Uôh^Súw�ŒSñÕÓ§•”¢Tá ù|1"WgØK=esÞ"hÛ|;�ª¥“ä®”–ÓªF¸©Ï­g7¶“’A+ß<·Èfø 3ž.¡«Z&´ „×ȱ“h®Ò ø�Ô=‹ÇÇ„=ºlp¡à§¹¼b$çfÿmiy�5ÇSþ¼•”PoývÖÈûÕ sBDæð(Æçsì²¶©ŸbŸáq[/Š¿¹¯ñË6ú¹×gÐõَ}u¼L;‚ìåßb­¦ª9ûÛÚY3\k x×aÚALE÷m>qHeÑú½ŒºŒ^(»•8¯Äû ‹°(“1Föpp³›… 24¯—K1ˆÔ ø—¿ÐýÞ"]Ûefs¥E¢éiuBä]ž�Ò,‰ç+þlúu|ÁÆ!?¿>§ª*³äÇL^ýTöŽ|Ÿ´Ó‹NE3ç4ÙS_I•â_©üdžA×Gå€k-Ï´TBwÑüU|3y2ä6ñ|Ýæ¶Ï·t³Ó-:ÎWŸÃðâzó¯öS¨cù„�={±ç!IôçËnÏAÿŽWýîG`›H‡(þ*S¯ y Í[Ið±ƒ`�€S§P}ာ úr®#5~Œóãy6úBœöjqdêy6kc°}˜³_,½L÷¦• {-Þ/z�ú²wͪ�D欨aGò-Dz”•#ù¯9ㄬ «õ÷ÑŸéUs¯nHJã§È«±YÄyÀ9 'ß;–I`°ùvL@Eµ'ê4J¼¸.�!œ‹d”>‡ûmÞ¹ÓW-§Õì¢9á0R2­÷£¡hþæÞ鯸~i°½J‹KšéØ>ÿôŸ ›âqÕFgäüÑÀ³av¶S2_îX²¾ÄÓöúú¶èŠûø½ä¤’_~W&°æ63çÎ8«±G( Èåæ[ÛiR«‘ìÃewBÐzZà:Ogäî¢Þa´ 'å7¿›û7Fî,ùØ Ñ±´Oʲ|à\#ÂRô%pÆÊò¢¯PD‹ àæ[·¢×¤›Ü‹à|m}n9g=ÖWC 4$Â+¶TicÞ®}>à·7²t�!<_ó¹õ3~ö›Þkûj‡Ä,îº-=j[ŧ¦�í, Rú_øZéÁ™78á´ÖzꯟˆnZL$–7Æõ ¢%–_Š ºc ‹¯7@¾øÈ5Í(cë7Ee,%òÐ=Y@Àu•,~ˆ8Z–B—zŠÝx2Š¡-ž®§ï®t[®?Ê5ÍÁ3ëÖ"|¾ðÚ‹àì®®õjÄ�Õ§ŒŸôä^�v<ÿÁ´F4û­o™ËéÅšëÔ´ gé¦Ãí®ù½üÖ ¯[xoFp¾ÊpïèãéSŠãª[•½ZBND·…©/6ùËZšlÃ44ާL×I�O:pv㯹]Ør=®öeÔãx7z·ýÖP‡;›WDœÝ&8¬%r°„$5MɰõôÇpújC$þŒGÁ«žÎ[ÇxÇxÏ�ÎbÇaÕk«3ÈNoË¿O‹e«šóðk‹µ€š†¤ƒ"N—ÿ¢ƒ1ÿÕþ·H¹×ì´s VÈi̲¼a¸”ÈE†�Úô°!„Œ ›òÕ Ž>’6tZæ"ŸÃPCÐ þmþ–Š/¿áëúÆÿC=}nz”C@–à¿Í€4Î�ÃÓøåZ�ôwûûÜ€ hN8 SÔvQ‹Ã´ó+Ðï<ªÛŠß&ç�îØÛ) ‰Z#Ž6qCNÅÅf3º×ˆ–U�šâ«E†x=¤di¹Š†T5Ü!'›úÚ-҈Ƥ´ƒ{è¬~Bš4"o°Ã1cqp¿ŠŠÍI#…G+dl)†{BU$�3INUQ#)çÑ÷¯‡§Õ.ôÔõzús�³E@®³‹ÓO÷’Óv9�ýø¾ÚL§ò&Îi©ó´8QNîéCŽrê+·H)%ׄàx�>™dHûÑϨuö"‘Åš€ì;Êj÷�SMëLá°"ƒN;)…½�­‘K8�v obàCÝö‘}ó½i9#Òfš†Zß–å ¾yXaU<À‹ƒ«\r nî?è£�E£PfeŸ«£¹�Þû0 Ú/Nƒ×ã.ÁŠÆ9>Ú­µÜÁoç¥]>{\ dQ=¦›6g¨¡¡µ‘µ]˜¡h²ÛÍQºÔˆíH=ã %¬Yå!a”äñ»³3Øw¤;ìD|ŒÔÓÚ‹ymc!7•Ûc&èqBw„æYý°§÷í¸´¾Ff½…Üȶ/ NÁŸ!—wÈé|-Ônž`¸£ç{Ž‹FBN!ò�Ç•Ö4×ì „^(¸Ôpg&ww»ožk™ß ^€¥µá>“q£x¼Øl—�98ƒcGe—à�äÞî—(À”(t(6—\‡Ã~{¥ZV&·l­¿Ã¶‚DE$¦¯L ã»ùÍ üE:Úv¾Q>œƒ ±íÈî©ÿ�]U¹sÝõFÔ#ƒºþÈärê]æªhWíÙ«Áõ·�3n�ÅÊ|Ú(7×G¶‘zäëH4r—òg—[kï�oœ8én§óy™L-ÃÃ5ÚÎÌ•˜¾­Á'Ê#í3ýeîML +×…�µK_�vdô”£Ê˜ø(47¹äÐêKä+ï¶ïu´wxf8¤°,wëŸ$z•Œ¥§ÊŽqÃáýëyå›f×é\ _#ã>wäõ¦2•eOÙëMìÓš$ôé™”Ò’õUç02iB׊»ô}I€é@äµ[¹ØH í7û.ë4ùoâ©æC±¢‘ªð$Ô”´ºKd(q_»($жêmöé"Y³ög?ý¯È ]„’ÎUD9N±ëæ«�Ñ?)ÒlâN[gÿÍ"`g˜ žíá öŸ¢£=¸žN§3ýÝþv;ð#–¨ –/¯v�ü¼ÝóJÒ¬ds3ØUËòOWªØÍ$Z˜ÓÂÐ93¾Žµe¶ÝžûÖáÇÞjƺQåvlE†{E¬—b[¶_Ä "Œ[̘Ôþ; ™,p£k´÷v…ì|äXñ—¹ñDÅÑÔ­‹ n¡–{º°¿îÌ&¶½é3оUÃ؜ܫ´ñ*勒™†ÎD$fgoŒÏ ¿zÝ›#W,»ujò7âE¦eñ*W ¯G½CD�ùgîçCÈ«zy‚”u$´·8Eó_7ž(gÞï²Ã³“"ÿgu†E2ÊDÔBÉâ~Ïnö=Ÿ§E\CÊF*Ù ‰^1 QŽÑ(:¦gŸn÷äßüNßHÈ“ðC�£Ø{¾w·;Ÿè¥8¬Õ‹�iØçn“µÃ\?‹¬²k ðìâ_ñù¨ÞW_Ðʼ˜u£Ø:LFù+.‹µ‹Ý3©„ëDþY�͘…ö¹Þ �),¢� õRÕGéRkÄ¥wûÙÆÚú‘àÛl¼þùÿ$ùk{fÐ̽ðaË…åœ ‹�†|+~ôñž·À;ÕòXöÁ9Ç”½^°L%ro8‡ˆuxugé´¤÷kADÉp¿Eýö‰:휗­ÙÇ·R}ߊ߂ÓNá�ðb—z x�ÀñD¬9æÓ¥ƒÈÇDþýèÿðŸ€Sv@¹‡XsâèŽèà\e©ü¥,M/À×ÃO·éûÇýVȹzÃð_~%ê¼\+”NÒ…j Á\ÞÁ¯9~È.Õ&Dñ4ZÛ ó,üõyeþ§G„©äô!~·/vÞ\dÌRr6s9ºäÉ�ê 1ãµÞwÔ¹…ÁËÇVa~{«Jnëç³ôOw�\A.§7lE-Ç9ì”S•Æ$ÈI‡½&Ì—ëíÔñò lOU1”Ï òuF¤kLþ²ÄhþÁW Ûéº`ÛfÊÞ×’óSnŸä–à”ózaÑä/p�4G¢‹ôJŠFü^€¿nY×§ÐOs{DfÒY½â´íûM-i›5Jú´éŒi^¶*HÊÄzª÷ˆ\’R"œÖãhSr`¨"Ÿj[]ØŸK²#Ù’™|Ý|ÖçmgËÓ�«Á“ {Åò0êÖªF¶Aÿ>`ÏšóV�‰|@ò°¹/M©!CgkW Çåüfä-ȿ寚RÒÈ“"rÏÑH6ÒK·Ùæ$ãúOÐåëŽm‹ô²õò)µo8o𦿠d×R47kŒäÔ9—†–î4KêÅ€UÇšù–zßêðô�88\3]€«í]nË.¾±¿v»hÍ%*on[†fo×ÿ5Ä wËÔr4·WŒ„¢ƒ™Ÿ¾ºŠÕ�þüÿØçlMI}Ïu±ð�ü½{}xÞ¶ìÛüöpu£cÄê-IúHJã/³P\O 9-®ëÝzøVôôXsW–I_ÎÏ–ǯ’´ú§¥ýÂ%ruT¿u·bB¤RØP=_l§Lòêæ-Û§©à»åø“fŒFÍù§9¡¦¢ †ÓâÖˆ79Ì|·]›OÇ–ª4b Ã×¾ƒåäZÚ|.g—Á±¦ÚÕçJ×SÕ®ÂÁ}ÍÖ‰•¶Q1 †Í¯)´Ñ”—Ѭ6þðè¨5Ø\¥v¾@ÿJh®¹^#�ˆ/€ªïة٠¼ˆ8C*ö¼dJ-ùÝ=¥®Tš8 já ýö0öóÏYdf(Ô@¯8•ö§ÿVüàÈž›kç)ôLhø�?¿Ær›K˜]ÿ%×ßÙ…ü‚çÈÌ+ú½ÝÊ÷+"£¶SSƒlwâ~¯å †šjN·Âoéªõ–}ÞÊ ž&õ‡¼œ ½&m ýàsZ|#>›úDÿOcç—ôEÌ—šüWãǵ’¦ú¿‘WQf�fÓÏ6¿{yÁi3ãúÚÞ#”›K½¦ö| ÉV#*kJðõû7Øg!¬ÍlQlæ9ÜÖ˜t–†¥ÇùYËìkÞ<à­t¹ò¤) ©C2®'ðÈÒÍã⮃ƒÛNF\ükRÈ)†b)‡}JÛ¥6ñ–F .)ÿŠ�€_ÆæZ=¢ù *Ö\öOZ¨?™Úø×ÐÍ<çz4Œœ2F^·…ÒѨ’Á •ÇÅ˘²Ž2™”ˆ!i)èââŸéˆ=]å‘nÛ5z±dVÀðÄîäÁ²8¨Ža£WCU‹÷ Ρó”ì§â{T¢®WÜðKô«|쌪$ð^–Ņ̧¥wòˆ”—PrêHÌ_� {}qÚ�ö¶òGM›µ+M_×ß‹¿ä5–îlE“Nš·à£ü ÉX³á³×5�ä9® xÞ»Ñ�Q‰�þä *ïöItl›ÜÅS1¾Úšãoxëy‡#ñrnu]RÖż½HÀ e]$üûõtàûÝëJÔä\qb#ëI«jS|·ÆKhp�JdúêÃyÀ»Ô8`$+ÃöíŠv-  {°+ÏOÙõ+÷õ[P¶šäöŸKJVTŸµg¦ƒL©8ŸIss?¾'³g})ëKv.Ü …wûhD+òs_éìÜöÕS¥‡k÷‡´�^ÿü�+»¬+e•þÎͧYÚé¿Óylø0VüÉ¢ªÏ¢¯8:wŒÂ…ŽÞS½ÿßøR{k‹ïÏ·–€�'±¢ùÞ*$øZxfžÒÇÊIœZñ½Šñ’6 ŒQÕ°¹eç¥ÊÐï�¬¯ Ž5‹b$ô”e*Þ©m»ÆmŒÒòád!±%dÀí‹¤çøŒ|’ «e.o{ŽKã ß¸#Å)æ¶ýÔnꛄFhoYS¯"O\KtógGä>Áí­F‹,ãÔ·� ·âküÜ:5}/‰ñÕñwóc†Ê]eàv pV ëêíúÏ‚ëº+¹®ôÈmIt­§Ÿ8•÷rèÉD¿©dÇ5™4B§›¾Ý‹2ÆËð‚—ÇùŒßËgo¹@廦.Ò@}é~:âº\صá³Ì6Wm‘:—¡&³‰ô1Ì?|”iYޣȗá|+p>âQNoßùÓ7ø¢“(�ªw!õ[¾†‡¶Y„S(‘Ãh˜ßPï³ð–I²•�s�û/@¿aX†ÉÙ\sÂlÄù[ù.?ÀÑÓPœ@sY%Ô¯{¸þ˜Òm¹º¸»â�HË7DJ±ç߂澶H7È-ô¯�Žos­9|ØKd¹3€§ÊD#6Å¡åð-áFÉiµ&¹`àVa‹4çÃ% žv®C²ÑGfÇÛEbÎ%yk9m�ÉÓ‰jN-&�›['ku=Õñú!]yСšû‰&M†r¦Ã‚ù–Ï+ôÔ­ñÀ¦Ù®TxÌË_ñu Çc]1�3øyBØ`d¸fý ¹í'±”ávœÔ"¢‘‚Èq$—0N£§Ü\ ÆÐÆ.˜#rëǨ[{aœ*À5'r ÎËcä÷�'Wzˆ¢»6Ó¹z þ©¡8�O©€ò…:y“«—�Ý™~Lô¦NÓTú¦b¯ÖHæî¡-z½f;yŒVÐÝâûi>èyßNc�”~¬øªk/—*ÿöÎ }9=´ ?5Çâƒê¦ïKLŒžZ^u¯Ž£Ž !08…œU­-åTïõqŸÜ!/Lv±¿ä6ÛÀP0*NKá3]pä¾e�x‘m‘‰Ò-L)!W寱?? C~¡Le||R=[oÁiÜz:wÍY6+!âîäO?ÖïòP?¤ …¿,Í&:޵6�‘[g壋ÏS3`þÄF8Û(àÃ>ÔÅ®óÜúó×âÞn$ ë:w÷ ¸]l_«ù%v{rëMM…8?(ôJ_�$”*7öTäalóR›&p|ùš?DìÞ碗ÎÍZ‚¸·&�‹t¹Æ]FY,�n¢j+ìUŽ û•ˆ nq¼’¨¸­&i¬§Õ*\ðá08ÕU»–úÕ m ¥ÑÇìÛª�_7"6@­9Ý6-5.�Lì–j/ü W|N°;“ú8\"#·S�?$‹·:€ øã®9ª¨©â:”8,‹lêUSwâÔóiœ{«b¶[B5­Fj�vü¾YÊGý‘ɸ¹�Ÿ5’ úA½ïxQ‡�Ç!ˆn<…”áµ;�•ÚÁÏÚ›ÖYO“½a~ë!é ßÎ0ùÑRsw©>Aζ ò:šÜž ·ÃÜ‹ $^o=™s:xž‡r"œ²Í"%æÀÏõgO2¿aÎf|³Á×á�k#žuG$T· ñ­¾ r:qºX¤ä>!·ç´¼<W>¥Ìý¥(ÇM_¬Ýošv^Ùà&%¢y-––dG c›µ<¸Ìûô¸ú£|S;ÌÀS~b¬êWI;‡gLÜdå›zùÒˆv†¯g'Hþ&ÄÎþ;=‹<��§¥ƒµÿqÍÎ^SønäSñófµ×�ÁsÞý"WT¼íÚx/™/Æ�±þs˜„ã¸áñ÷¼0³iÚb ~WüC×£ØÂ:µ�Z7ÕÕßñutþÇæþ9Ú¼äòyú,vnºr¢þ½?¾¸@Ÿ-‚\‘Åöi½u&j”„�"aNL;?|\ï'ðg »~$ósx}~ŸðÃIFÃæÀkN³m�$Ã�VÂYs=u\æ­{J—ÛûZÇ7Ì2z.ü§^¢@7–“þ‘�C Ïî>I¥‹…ÛòÌÔÝád7½Kœkúµ;mʽM6$$›™³”M_æ!]„·—êX”gÚCŽ´ïÇ*úÍŽ¹�-ˆ û°ô } ÈÆC�ÅuLmÞÄݳœÒN8^ëycëDÅàT¶P2àp©ˆ˜Ð+»¦ùÅ1˜Áì òHT™fÚõæT�FÛøhGs/v^Ç-”MZ$kS?vÞa™ÙËÑ. «*²}c4Œ¼B°scêˆÐ}�Ò'Nõ/0F:�dnÅÜ’0o"©L8XìzØÀú–Ê‹™ÕwûÙâE0ŠfA®g*¹ØrÖÜ>�J»MQ�?‡or¤±ÚþÕ¤wè‡^ðëósi¯ÿ´�F¹e*9؆ËÅbiË‘ø^æW4‡PlƒœEt6XüËçÐæÔÒ_5€mÍ5·‘bñzK èš1°ÂßrCμ룪•¬´.õX@¯(×ïò³á;—ˆÕ5—_‰žO¯€®%N~"„ù>ݶž>¼h$*BJΧ ©\ío(d\Ýò†~"è1ºÚœtFb”¿&ü¾˜kÎØ¡OÝÚýzá3Ï¡ê<“Šøú"§øLqaN¾Ã.\Nù4D¿³ÉÈ©‘àÊ-j7t>(´]¬‰¤ÉÐéR¥-äPjdåN² H˜ê³‘fËàuZÍ�§Í5â’)¢ÐêùÙ@Ï%r�N%"Ÿqú« ˆh Ú|ÐÔž ø$”•IPx.üݦ‰=‰Iº)´ˆË¢‘t8=]8YKq¯`àÑ6±ŠÝ)8¡Ã¡n¦”Ü“ AÞ(ËOÖ­ô”XŠ~b$Õ\TÎ3~´Œ ~\pš;cç5ú"p.!6-p„ŠÝ\–±ªëÚ¿ƒS.,Õü›ŠÚ93†Iý�õ«=4zƒ?@L–ʪk£ûýVr"¢\à±ô¡ [NÀ?üþkñ°å¬/vÀÞ/Öï0ÃX*?‰»­Å©òc±e!4çW͵ìVÄtí}Šº“�œ:™©§ÍNc±Kš“k\ÄÀhßD"�õôT 8ƒ5Ñ×ÈaÅhÐÓƒ¿ôSQÿ�6v�ÄÀ¦ÙBeAí¢æ þ¡¦ÎžGÿ0éäÒê“€ß\­¨欧Ì� •ô BöùDF;, QŸZ¥å¼›;½¨xâ‚F€-ˆü|·†äæeË}&%W` �J=~”±ÍÐW—BVºÀRùDÑQþ„õzœb-m‘j#‹>_€l<Ý'…ã핞ڭ¹×fqqã5Â4-[¤ªÝOq™ŠêÄC‡UÎç<лu¡ÇR_+£”úìÕZ}lQ±ÑÈh -ª§Ú7ÜJ»‚¬¾¸1«©÷uÑ"è 2WQ`Ǧ՛U3³Ñ]]°^ÝÏ3ó#¼M�ÛÎéÍA¼+\¥j'Ì\ñàsÂOÈyšŠÒ{ÀÇ÷¥éµÑž’MÛ h­Æ±]Üøç~þòçW]ô†7Ô­1°§|ó#0Äcuê1ù¾É¾ß1ã©0à"~ÞØçanöÈÙkS#±¸}¿À Ü—å�Π֌ˉº õ[yá¯æft}ÐÑs™Vž¡½òeõÝ ÿ›⪅ë§²õñ³ÈäwfŸÓ/é² ôëÕ‡2¨R‘l�ówä‚ü8 ‚SäÏð#>1O'b§ý@'/‚Å;Õ%Rr ®åz7~…}þÇïÒ+[�á‹ý×\ÓÿŲÖ×\Á"qGÍub@ñ¿›HT&ïk¬ÿž!zÁ†ƒ÷&íw鯋Þ7×­ÖÛê ½Ýn¸fÝUj%âU«F’>Û+Éx§#ézµX©‰»åfÑh?7›=©†<Žq)½Ã7¡b*ÄPf£=@/æjÈ‹e+ÌŸ›wvøi„hù)µ†ô³QÛ»Q© ¥ál†ÈáaŸƒSìGßòšZ ˜™'Kw¶s ´²4J„¿_õ÷¸$³Æ†BÀGßž‰¹öߥ¡NÖ©-l’ɲy½0 ¦Ã¯$"Ï–’u!?ì¼›š�\=ï6Ü£Údw¥vUé-ÍγUÎ7‹£›WIGR¾s~Ëë,¿›RùÌò•o€²é+ѹáÁ÷¨%ó¢“ç°ÇÓ]x~øtrXá‰ø”òævù"~æÛŽÎ Äé*{¥@;:ö¨tò/½Þ}Vdne~}Ùp¹ÊS�×¾{/ÿÒݱ´µ¾(cüñÔøDÚÈ€8Gƃ–62QH¥‡‰^Ñ›²ÇYŠv´ÿÔ)€A£É_›â¤#gÂ-t$¸™[eW¡g£îw²y€cÅÃöÄ¿ÚÓ¤i× {ŠulýÕ׺˜÷G—pS�¼ßï^[wk‘]›r€Ÿe_/lXæ9Åö 'ßPÕJúW@ó9Ç[ªn 5;mU,¹ Rt¿Þê/êíYÔÿ¦¯àFyÜñ' ]Q‚vPPþõ«ý9[j•�ˆúb`øˆ?�ž~VÒ;Ù Í;šÅïâuP¦kŽåÿ¸DÙ{Õìñ ×,KÆïiCk>ñÛ²,™j’µEvºÑñQ«ú!±ñÑÝo ü-»U�à(6³� q¬Ñ½{¡‹}5dµ²{"¤N¬~z±ÈÏ}î¾TÝå©úôöOÈpÔCæ³iêêD•[Ûu�èO?/â>`Ǽý´½:5{ò¿ÿ>^ûÍl V¬Ç€Cd£ÕªIa#ó12åÖ7ÈD;vó.ÆþzUGíŒ`½Ÿ)n˜û‰1÷Íï·¥›x²n¥3Á–^qñÏÞe°ç}Û™ÿ×úH@‹~P&#} ¾ðXŸøm3«ÅÖk8N ‘.4ý(¿OßZý­jð,ôwý$O=å÷‚H¬HÉš+iu?u ö±Á�5×Ú63Èq÷㣠M#“>pÚçïÀh±§KÐe ¶ÍÇ 9ÞÊV×ã\°Ò|úkÁ‡K¤�ü@Íû@‡ZÜŽ-'œÂ+ˆPZ ]*�‰ºQåB�Ía6}+¿õTá*«#´´\D£æ®z‚+œm�X”�ïæï®NÛiÉÛ’8-õ ºþó¹ÜGŽ>+QÜßLÄ߯Ä3Nq³¹€Ì'ý@ŽÁ]Nù¤ÆçºµÇ-G•}•Méj•hB‡È�ú�-¨o8ÕZOÿ½7ºD&ò¸ºkÚ½ÖéÎãéZøvúÄT®d0¿þ;Ïe.æ<'•þDN¢SÉ©Æç{…Së¸TÙ ;6CÉé6PˆT’ó#ÜèŠÒ€²Ï�ìÂb ˆúíš“iÃuý@Àãð¹@©µþֺˑË_–Ÿ æuÄ^uˆ0IgªÊO«³åð\ñ•?7¼PŠM]2@Å÷ÃÈE&óhô› o‘¦Þ¼B�l§s ¡\ N›­aÝÈ1ÈØy\ñÝÆšüô ¹ÐáÌ FëÔ.þ’+"áµ¶§àj®Ë+øâ6WY°*~=5w+Ãä”5×#".E“„\WËc,ò.9+^ú‹}ŽAU\Ǻ4=I t,�gñlË€Á,­®%��§ùâš1"¶„³œ¶+,=m!çÑ+öBÜØÚŽ$#¢JO‰îzDÎÌå}Œã|j¢„-?G=�ÕË‹|«I—Êǀ܌zº³Îç ´CŽ2í!¨·Vô´¿“a¾ƒbã7ù×>0oš»Põý€ÈÏ…™h�%0ð aÁÎòp÷éA€*ä§o/Êóâ«-†®ë¼iŽ_³3ët3v‚kà)ÞŒàñ‘èlYG[çCxy²÷0o ú~hÂmax>²à£Û²¾Þû÷G§«þä øv½<_Ȱ 9AÏ5¯÷™ü¦µˆÞô&DêŸÎ öìu’žªZsëÅM‹�"Ô¥€fóFÊ ~Ù¤‘µà¯í”ÆU?ž5ç,Õþ6»]˳Ps½%~æÊ1êÄ=ßUm¿‰š» ö!µEª)ÙfÀa óŒSï–Çè@/˜‰]ÿ½�7§�.È…[äb›˜2¿<ör¶Öž�·Ü_°�)k©Ï#6’—Ð`ª¡)åfPsséáñKÈ1ÇݹýAt»qjÅU<,A=XñãH>J-D™G|@OŸÝ]¡²X{�O°O'üfkV¹BˆÏhtÚ6ë0xƒÚ|eæ"ÝT¡bj¤Î/|ÓÇFd%.Àû‚Ól¾ú»ˆø].A¿fdøuê(ú¤Ôæ!j^-g¼°ôyŽõU·P”Ps�õÍžGÉÉyRWc÷êˆ8ÀKˆðÖe�;ç|�ÒPâ;·êŽ=ð¦ÈðÐÇlÝ•“FPÑÒñ“–­;ðÃzdÍ‘ëäߢmð8!‡ÝøV„ðÜ̘KYS‡¿� ]çjOÈ}~C$äÇYý/•“„¼F’>ø'\ú¶œñ}‚<ŸBÖþÛH¾¶ð$››¶eNØ Ì÷¨þΩuúPýdô¸áõ)œš»y&ÜopÏÈÕÜ¿_è˽žR^ôôCs–ž ¾ïXú8[A¬b¼½¸¹Ù®9èW sŒÏOÐä O«½/Ö*W™¬Wy£KÌýÇ@­YçÀ‰_p{MY¿^ºŸºš&…½~ÜÖ^ý"͢몮ãL1’HmQ²ªQ3ma¼*|cÐ ±ãDÎ`ÎeßYÐº`;†Ýö÷Ôœ–�NÄÀp@öÁpPËOû¨Šd²7.×�ºˆE�÷£W]á²õCP]æß Ò¸™ˆ²u+ˆ¥+qCå dN�©œ8>ƽºüß>3Nd+X=ÒUz\º™ÓyQER?••X«*ÜÆáŽ³'¿{n禡êû¥¬ðž#q÷�”ŽsC]õ{¸A™Ùݨnüäc¡šüP•[ˉ\¯1Eµ–Žp*O=àóiYe»WÌèDçb¿ªž*]/usÑòBd%Ûñ b°ÛÖ΃ìòd]úó8r#rOE‚üŽhA÷×wZÇ�gú×íÅì‚*júä•ÖM¥îËŠ*«ìÏ€¿et¾x9ë šË±Û¡ìd÷¨y ÕAá„Çðƒ*Oí‘¶ãï´=ï]ÈÒ‚�…Äõ‘é«×K”®´–½ê™ýÛþ ¯ªT±´ž,É«SlÁçõ|y)'àâë!ÿÖœ€·{½¶�ž´i3TòêÝ^àz‘ý¾T”Gô¿Ÿ+Îþ+,K+I*‡¢clÖÖ YÄFMڞɸûUL¢jàØiv­éŸ=þ“ûp§}Zíâ­Òîò6©Íˆ·8àI{4w‡èGâOÛ«X¸†vôºú9,ºE;vÍÕÎõW»Œ³û� *>iÿPò¤eÏ–Ö®=šèüíûš9Ïxö—]ؼSw«Í´¡6Ÿ¿¨Cªù–kO@³{’÷ß4G/ÉÕ4¼X¬‹aa«kÔôûù<�….íÞëyÆ ±w×^ÞöE¹Ìô‚‘kǶkGsöj"Éؽ¢Õ>ù§ÉÖå|uŽå¢Ø‰&"Ÿ¢õË d¤O­ÈÙ�†‡{ËÌÕké¶ØhGk^ÄÊ�8PŸ}Sye§—ÔÖsÀØ\i˜•ˆkó?qEk´{L©â©- Ãòçø_ZðÔFt$±X–H€¯Ã¥,ñŠœûÍø]¹Ü-·›ëÎô”ÑÓŸ†óTˆ¯[HŠÏ ‘hˆ¼yh.À'§�Ö¢Ž)v.V:¬_u'ÿ4xü#ïÕ¤Hˆ¸Ù+vu¤ÈáÆšÛB·®%Ç”ÓQ·Ó}=5'c‹ÄÙºŸõ4T]ú…&Ú�8Á}&Êá÷’#I>|ä™PÉQÇ˯e.N&òÅ>ôM@ç�Ú#ãº#ŠžËC±© qû~}ô]¤Ò¢‘ˆˆÈ© tX �4²Œ+ij��¿ù¥\ÿþƒ:zŽÃï…:¥h”5³¥áWŸßqzì·¡5 gª‹0ÜDÒ�ÕþÆéÌ´|öÊwíBpüZM ¸—ûÆ/Ãý�T¶×ë¬ò6ßÙäåADævj:s¹Ñ_Œ j;6–êzöI@ä\œß¶›ëNᦢîˆà=? NÔNIœêyšŒ†à¯GDò,7bæ||ŠÙeÄ�à×[ 9äÓDö‰q�lØ~šH‹µ ºã†N¶ÜWëo>•^�»\Ëu¾ †FÒ"/Œ2¶b­…oˆ þ—8eõîs¿Uú߯Eý]>KâU¾œ¯åûã="Wäz7DÔV¹/zsÍi¶Õ‡|}j¤×NåXðº~zÏc™ó57™]ÀVz!—’“ÅZÉ D §áÕwõTeòE} �H«ŠÃÀ–ÐiFp õëwò¸3%³îxÇðj„›©gá.šTmj7;Û¹vy†n|x|¸ìØë¼(-Õ"‡¦fk‹­Ð\åvð¸»�G¤M/E®o…ÿ«|iJN{Lê= šKV38æ4ê¦o‰öl‡{‰”�ß0/‹ä(#—ãtò0­­¤ mhÕÍ¥¯$îŽ-zzáhÌxÆ·Útº”ñžaÎ4BEÆ�ûy%„©G€�/«^`¯Û¬È/ëøMóŠ#¥äXõ¶H@¡]Y—|ÞºXøïÿð·ÛkÄ5¢?ž¾¿”CßÊ#õ-åôåá¾ÍC°c°k§'BßÌ‹Ÿc¡ã‰³wdƒ[ìÜzºçV[s�†䪺#âoà:Rù¦ésÕ�V¿.¬Ý\ôr;�šÌôs•õUL®,È%´æÔÜ슨ÅÍN)0ÃþÇz#D¾;\Q4g±Í?ÜÞÐ�9Ãv¾ùbì·t1õôÔjK0Ö�«Z[¶\o”�«‰DûMä]ìuüSs€Aß/ÈQ:†\©Mv •½•mN±D¶T%Ä$I¾ï•L%¿TY|ýõòíZè{¹q O-5ðò„HÕw’uaæ"WW—1».òTõ Nù]N¥î8÷CËÆÇ› —™rñ7ßí\ŒxQn /ÔØS>³¢§‘>†\ßk™T_UÝÜ6òiÏ|×{½`ÐgšŠð `|¾ëÒ¾aE8Wåk4ÝÅÇ6×ë5¼15.Åÿ}à†ú©ËèRz^ ?Óýׇr*úf@ä×?cbþÅdæAõM�q1x8Ú’d»—弄 «†°ü.:ñ‚ÔóÛQ__¼¡³æx[«¿#¤üŽ>Ň¹×7L‰I ;'FfGè`¸qÓ­Œ¼.U7¯0>ïÀÛ…ÜDNð÷Ïš{Óöj༽q³¾øÉ†—<3”Ë{ HaœE߿݋@|^¼_þ9›ó^sÅë»$œ©Wº@�ÜkŽ> ©cÙ"Tiµ›ö™»EO*ä;"ðOï%—í=©êᆾ7vuQaÉ(±¡3^¤ÒôÊóLξêšÒ/Å€ÓÐqFF–hÍn kWì¬u“èC™®ìê§¶Ó��k¥ö+ m—àRûß-ˆ¬t޹Ż·mùŒAU0#-›Áwx�Å]ÇÏý˜Ì¢…ó”"Íù?u2åˆÝÂ%{�Ãgœs‡+×1õó ; ÏÍÉ#r Mt°cÀè»Û!'r}÷ª²C«À‘–ô´ Le�¿]¬ír°½RösådŠ+*m—‚-,;W¶Mõ³‘F#­Ž•TçÝ:´%Ò€zR8|-KŠÁ›Z¦ÅÖpgjòàh�¨Û§¥½Í[¦87UÝp{]ÎÈRøn«‹ÈÔѬ�hýó®"'‰¹§óÓ—T4Á«-’Ñó}|…·Ä“Ùßà} ýh‹Š_ëïÜë’&;q.©QU–Ƶ¢ºzêî}¯%Œ7×7I‰zË~—0€—R³ƒVØ#ü=\ªñòOä�ú9³BV7¨>zÖ½³¡¥%ÑSãÙú­}˜ ïTBÂhk:ùï[üØÍ—DÕ�ëÕÇ<„�—ÃÅ¿½ÒOP½ÎÇ�¡ž}…DzvÙÚe«cù`Ô@èÂ@’ë×TsÍŸDïHr_VU¿ —™=o¦ó¢ìÄ­|H{X‹rþ¬DYZ,ï°ùÛüІ€ûXñsøšiÎÜÿÌG˾¿R¢¶xwJt4çýïÙÙ�Í•ï ©Ã÷Ý"?wý”v*I]CÞ‘­L�½BßX¿>>IrsO‡¤%)ß½Xä€zÖ„(îV|9Ð�)âø2vŸœÖ¯m ùb±8îÊ¿i(’êžÿQ%ø¸ý›’=¦¼\rkß3Eµ+ ³vÏáÎZ$ ‰!–£Ì¡ŽU…0õ*1üjymŸïZÐGo«ÈA ¢'ö¿Z,ŠÏÓ±-Wœ`Ûê'9¿Kápèç(æ]q/Ÿ¡†] Q:Caèm¥š�Ï­íFÞÏ?ýI<.uëÍ ‘Us±„³az|‘Ž _+ë%l™K®½9—äŠqÓ¯¥:"§äŠÌù—ís¹—ö%gÞ×0ÆåE·Êc&àý^"æ”S+Qf! À©à#÷;”Ó¥Œkœƒ�`ÂI5Ð�ís¯Û'#g”0"7ìÖÏ tÞN½\Iù+`+¾:¡Z8Ê[aMþôKŒ•y¹H› 6‚% Õ¹¬è)J—!×8:çö8+{ÝjD±+Óz W²õFùÎôvëZ"Áè6ñ¸1rð¢ÉF9†œxr+‘šš¯‡`ú\ï öé­ì0»öç²#´N㌶S‰[¾HÕ{¾3â¾ %w&/?ŠR¸áÔÓ¿AnÃÏOƒ\S¸¢97ÞõTS YCΨå^ºÕ³T“ž¬9Ýæï�¯q¶×Y�.`•È…vF$Þ ýk.0DxjÎ:Kd#/Ÿ•ÂÖy]gþk.=7/u§\å[iwä½ü0äášûŒ±ÓÒÍñE8,m Ë\¤�@Q™+t(ßu&—-¢nU %rN4é‰\Jÿóh˜ ÿäO¶ÆtÔ™{&ä¾Î‰ì/è‘•D»( ï´ß-J'…}Á¼>Þ=®Šß0ОEs8:�üõù‰¤�o·sþ§£M¥¿Aõþ²ôÜää\`Nzê/øõ~;Gœ W ‘C7œ.÷6{Õ6¹fÈ?9êö4c†ÞÕSЫ@!´ÀDˆ÷|@Eí¬íÇP!Tnš¥ýîô2Ê•²¤ø¦Ä´xÆd8¬‘žh£[Þ‹"<6Ðë"öå¤{ ¥ÏA®eNåþ gD„ùL39¿Ã°ÉZsÝŸÞÄ ã<ñRuåWssºœœ’攀¡^Óœ€×‹Ï·ék©K>ãtåsÈ¡´Xw%Ñu'ìÀNÂ�kèäª(‘¥A¾,Ôü?ñŽ.0í¨¶å¯ú….'DÈm¹ªxÅ«PvœŠ�t¿h®´Mä¶Ó±[1 ¥úÂØ¹­O¼yQ#§3<¹¸‰Äûªmœ œ§Έp§<éWxߦâ¹FB®ÑŽ�“ÑRvó£;r¿GÍ™xnI #šÙ"™–ss‹jqîI5NóÅ╵¦_€Ç€7Ï+j�‚=~V7Í$¼½'$kn¼Â·wü®ê÷ÀænŸ;j¼ŒÀ×u�­NMÚtcÒÇˆÌæB[o�q3ÍL™õ™ëøÑ^¤ŸøÛw�” ’&Œ5íø†7ø9—eñmjNH€{uÂwpó¨ñ—^-vçri§¢újêÒÑŸ ¿¸Çc¦ó£ðïíÄÔ¢™lÀ\†4¯^…/Ï!‡ß€y˜¡.pîMµ;Øü½þé òª�õÐpDÌéÓDÕ?úü0 õci0&oõ˵õ÷–Ãm/" §�òyÕˆlÐy†a¨éÖ|1úùrœÃÄ9)zƒ@}>‰\ÌE��â(Q ìlàúî�*ninúDÈOóüŸSOO‡Vwü;rkþîGaˆû‚H&ã»)ˆ•žL{+µ�ð²3ßê�aï‹ìˆˆòôâ}¢â{5_Q¡dßÍ ²…X:ÐÉø<ßKÛÇÙê2iL†#39%ß…1Í�UæU"D‰£i8Ä i}@e‡`ƒÍùÙ -ô¿s׎üo¶WL[1ýš)­Ý%lš¬Ú×Å4wÑ~á÷¾Rq^¦Ä~ñ§8«v®í¸ôš],ä Í\rÜlcƒO¼¥õÅ|ØSœ}érã(H ¢Â-¶%bÖ^%i5ØÕej9tÎl?MŸ ú þ‚Î!·(£­EªÕ\Œ¶Fl¸°ëÛ ®Y¹¯¹@¬müBFÉûWhôJFù*KŒy&sx·¸‡ _ÄѵõÛàq'ÿ d¯Š!�d3öŒµzœ“~ÌXõ[?æ¦Ï¼ic¬ÕØÂg׿¥­ÞŠ4h ”'r}æq¯@|{¸œÈç£Sñó˜7ÃÄdi[?/–NÊ×U/(_VÄH>߯‘]dÇ­T;ÄÈèæ “öë.™¾È`R­Ó§ò.÷—ú¶ç¿Ò¸ñ®Ë¯ÒéÍöŸ�û®/{ÙÔêòŠÍñ8 ù£\rëŸu>ØA‚–0 Ê©ýê'¨èªÖ˜Å˺düñBaú %Ê¿í:ã-ß´Ü26 ~>E†òº^‰…úÐß5×''`¢7>Ë–ðy$ e‹õ»ž¬‘€ùع8UüwÅP}—6®èjvTIõüê¯sZ'L:˜ÕÏ©;¤xz]&{>4µ�Y¹LÑ`ÓG&Ÿö“{rxÙl`ûŽÊ§„kâ,65œÑAU…ÑSG« öOˆv÷ˆCcö&³b�}F‘p}ÒkxY\”…#ï¾:VBSû¹‡o×�ž�3£+™6ïÕy6¯½Ó“â˜Á–äZ —ØÉŒú¶NUšª”àžÜ~RØÓD.}>™t�>fÚ"ZÖnJm^>½ÞqŸ@êmv%™x›ø|Úñù�™2×ö`äü-Lû©?8SÝäu_toâ#³þÊø]aq€E»øÆÞ rî;øìZrÜl!oO«êeª‹…Ö/¨¶ª2¨‚bÿüŸ¡ªÀµ­GÝ ~ÎÉ›ÿ �ÚQµßV‹ S§ÕÍ¢Æ÷ò�sÅ"Ÿ¥0�ð�»ï†}¾¯¸à_¶`FÒœáö9?b¨—Û)Àõ®jš|ç]ø@JŽ·-‡Ùú{BD߈¡CØâã÷p'r+ňԢ�lA%Y"1¢¯¹áTÆky©˜J$U]ùשK?õt¾o%Çÿׂo;Ý)æð+Z¹ýuû5¾ý‚|JØùÇ¡�òø!·˜l‘Œ__4WG¨ÖSF©ä:Ò-1¾—dk.¸Øn£’æËV#Rf¹h.µü4IKdψPc“¯eƒƒµúS‰°AÄç­Ðwøãš�ˆúú;Ù‘Û¸â¤eç0¬r}Á4�8-ïR^z—ä>'¯c.%·âò½äžã£ã©*¹ƒ¶ï8p£ãJƒi68…\6kù޵o?œ¡¨,?"wŸžîzûV~_NE<4B‰°¨9 ÃòY~¿_J_ðž­ÒÖq�Qîõú·˜Qõ¸�}½š52gšÎáñó%ȥȿüô4Ú‚Ï‚¾�gãÜÑê�œG_ó¼Á?�vÕ¨»~½z*."Åó�œš[Ίµÿåc Ýë0«íª¹&o*ï4†+ó©=åÖ0—%�\ïðü+äóFDíAŒ¯{=óª¹L1žë| …¿ •'Õ,mð¶Ë/¾þ¼—y¿6¾ÙøôZ"è†ï¿øñô[uD¿–^êð5¢s@„òi6žS£oe¢Àǵ÷K©ö}¥bØå*¸?\O ÛTý…Þæíc;møÕN1çÇ�·�Þ§ ‘[Ü!КÅÈüðp”½ÌÆN¹E´f„Íz:²±VÁ™¡½R¢£6±0ö³F^D„kyî:b÷]ñÃu'=;™*FnÒÌçY½É ’3QëÛm¾<)6À¼É äg53˜×o�£©ÛË?.�?ÒHN?ºZæKá�ñ¦öZsÃ4™ð´Ð 7üŒ¿0B#¸EäoÿnZLue³Ûx ¢J½FO?]ƒv9œú¼õ'%¢wËIßl�d~\7VÉ"'à_þ‘æ¥D˜Ì‹æZV?eܺZõáøÕ׿ûãïér½|ý.!iËÀDVšî6]\�Ÿ ~«ÃƒË邲æª<Î:„H"÷›Íeð™FþÄÜ]Õ¤jJ …ç¡ÙÞš¿]mêŸÔŽ.ê–VúÉbP È¿"GÑ5‹h…¯ë1«¥Êý5ù¤ª×�ÓÖâUíE­Ú:ìÈTx½fcRþ Íõ´×ÀæzŠí‘Š5•÷)ÊO|´“^F~þŠÒy_—Øfu›~Œ3üªÓ ®MM}».ޝ$Ј§û¹è¥S<Õ�5gè¯îO¢~k9k5µOÈ�¦9°ÎšÓ|2b²¦s™7}AÆŠýVOuÝ ã�fÒ�AÈ‹Š�挼\Ê—��¢ØGDBw‹q :~£W31ÇÂ�ó¼"ˆ¦ŽiAŸÃBÎ�\4bÖ´q®›Å�ÃÒ¿jhùGOç]O[]»|»—˜Ð3B�xLÌ3ôÜrИë÷IOsÅéÂ5¢‘™g<ÿÎ!ròŒH¢EKÿ.ˆ`{Ãcÿü2"2P'œGvsû†çÆOD>ð¼|¾JŠÿžªŽ¼¾÷}œ‹]™1Þ�ùy}ØÔË0»Å÷/ó:ÍåÂyhºžŒÉÙú[× ÆõÍDÙBwX×õ“ —<÷Þ.ùñí7<ÿÀíßäy œ9±=ƒ’ªyõWuÃV*Î[Y!?"ˆ¾ ÇA¨ý©¢°�§rS¦E —�µ C§�HzµrE¿Ïe[{§)è/ŽY]^F]Ñ›‹¬inI]|]ÄÛÌñ^Þ(›.ÚwèãoxCE:.ô3£/DŒäõžÖ„˜nþÔ"ÔùsšZûÔ“n�§7úað¤ob9 Õ/(SNý˜¨ë~Ë•ú-4¢~!HüýFwŸ9S‰;¨qs-:~« ÄóNš[µæ#Ü7tØ#I»þTìC£FK¶8<1(5ÇŽA?å5â<ÙÅ!Ì{]0 !xœ¨F}�׊Ôn¡ÒÖ«¿ÍX„"ª6ox�²ÎÈ-nÔOüíF|zZ�Ä�«²VzµÊÝS^½+}ÖiqÓn)þ§«c_Ãôõ|2ÓßÑÅ/ÿ>§¡½î°èŠ5ž,íÇ|(#°¹ŸŽ—šø²½cAk¤¥Š q‚‡k uR®[<™<Þ6—ßÙÀÒ}Jå_L;Ü�ó­3'Úy�O!×:â%þ³jié£)UÖ­î°;Ì*«Ý¬«Ü½js^YÖ‰4sQ² ]e¢§:æHG3èGB›À[z•›¼‡ÔÙRñ²«Ó/¸!¶¢û¾3ø=!©Me·YN «!¼îòNÈ^ßÝ+änàóîzÕÖæl%^rÚÙÙ¶HsÞfd?ÞÚ®ƒ�Bi‹e�Â׊ʤÓiÒÈÇÃöSõg¹x½–Ó�׎ŒÍì¡ë"áŸÿb#=óð³®�ÆCaöŒJ­úã'HTAS/iD¨sèãöÆÁ‹ì)¦Gñò.Žöå?íG,$O[N¡"‰~|D2¬ þ Ï=Qo6›ã£X¤ÃŸ_T{ôm¾T¸hþlnžó½®ØvšÈ3n1ew§“„m*�2ø{‚I{èÍŒ…³ã:öøpŸ÷úé&–z|­h&0bQÄ~´8ÈQ¯q@ç�¯:î×å] BݧLÜßÖ¿~éÿµY7`çä}Ÿo«ž2þæÄ+è8÷MúygG"ã¯ö×+†Ž‡vK”Ÿ!kÀ®¿6úlØê”aè&ùÁá»dp�¶“ëúZEà˜ú\ÁГvC«-ŽJbƒZ.×0|¯»ÄÁ�39‘Ë{¦Õçäîž´§~OúžîÞú_î›$FDT YjkàE|Ø+†VÇ•ÕÒ·¬@çªÀ¸åd=õäÔi¥­\°´|¿’%e–¡Üç ‘c˜áô½Ü¯ 3¿EâGi=ì©KäÈ×@Þ®nxü^rBm9Óê–ŒéG©;M·íþšão%Êp+5"%‚P~×3O-uØmüü�[n6¦£YÜP5›FNMOD ®‘G®Ë rÙÝË’0߆ �Q¢#därdýR¶<4 �ÙȉӦ†¦t4ÂÒ?¯‘p+ž¿tŒEH‘úúÓ¹9œBûWðÙ¯WªQr±wnŠn °Z«œ °&mÐþ»Ð‹g‘ü:Î7ÇíôlÔuGð'CÀõC‡óެ.K'MÙß0ÏŸÊ!Ô…l#nÇGN�:>�Lô¬�Eˆì”_#‹5’IùRð*˜*ÿAs|²îB� oSégÂiˆ �æèÄÎ$_ß „û§ç q¸7Ï]áài$üÅ×B¹éí$rM4Ҏꤰ X©]¬·F?îJç8ŒŠ8ªÓäJfÐÝœvGlé øP‡ rV šÓlö‘ŒÈg±òTÃÓ*мû]�_bñø(ßѹ˜¹õ”òí÷rIa×>Y¼Eðª“RÚû©Tã,”¸ôѾ؎u‡É2d ᎠÞzörµû¶¶ƒÑÕSÈô´ó [x—’•†ï'�ìzZè6>È»æÐœc„¸FÒp]€®Ø®_�›m³#Ûð™z­Âøjg!è'w 9^Öú ûM¡º"«rZN�ßôëÚø\rÛÉ#æs£ �Z§Z‹†$Ìiõ¬+œº€v%ef¢I¨×æÌ™jP¹žî‡HèÓ5×ÔÖÅ©†¾DŽÊd§ ÚiZ¦rjùp:õí(Â34Ř̞�+ "¾‡ÙDŒ-phYbÚq ÔÌÁfVËÎóvª·ÁÏ7ú‡üÇ-’pã ˆ†˜rú­§ _´ýãÿ-]/«2AnÎá£;äªW—; ;œ;äâ »ÆT# ¾È5á·u;V5†ÈÈј»bÞ…ü]YàBŽM�h8Ù7JÔÃ)~X˜N°—�aq׵̰+§YÈG„úzÔ]-ðfÈé+µÓNnÎ ŒvBýa.‘k%r˜ëá଑üg=-¹èlÅ~|”y¨§B#ç�3ír¬¶þAÇú‹¦då¾®Óø!©|í—HÑ*è_S€.Á<Å2²ÔÇ–µLáJ1°BºuŸ·7�¨Ç1â§¹•}¯¹K—Á·©¸%¦cû A‘™wû¶…y('Ìó ÛÜ?j]9ÂÇü9D•®cç Ÿ*ìÆpFŽÉûYŒñ@›¯¯ÃKêwvx\q<ïíŒyÛã�ðe| ަáŠ$}wZÔ o†^u¸ýÆHg7w¸?3ž;õtáîõ_ wD?اôõ»ñKËcxùýÀ|^æF÷Mþ5âãÖ"†ò˜ëNk®‹GDÉá™9?EZžÁ_ý‡‘Ø|9[f(ìÞ8ˆn§"¡ò;’Qb_7Ánt!¢£HÑ8ž5çîŠ÷¸ß¤�—Š“ÒÉ G½¨ÏŽ÷©0Äe< 1»g�òâ‚à¹ÆøŽTžÎz4èwC®Ç¼· ða ] ÔÆ™«ÔQŽPø‚¯ô–ÊÐ^Ù2~ÏKå/6D˜ñ<6Ž{ Q0`ä œ1¯ >g�çEœYð†ßPOŠŸ1¹çTÍY¤ ੳ‚ûÝó°¹–[ñdÚåçÈ’Ž$|—î>@’ÕqˆÕªÐ.F9Wq�t&K03Q€”ö».‡W†Úsꊤ¸?“d HÇIÃÍàSÑ’p¿ïÏ‹�†dÚûÜ v2ô“ýÜDÚɈ'åhQHóOê+‘í;9AO‰Ì§…©Û²XNU!Õ &mþÒQ)àÑxUõU5ÆÆc`;ÃvºÉa™�‚�¯ÉÝ%’óe2?Òýw½Ò†ÌBq�…|â�ÿ8(ö8¯f©Õ—ªˆb¤+cüub#·ŒŽ HQjp¤í¼Ô›–õ)£Š­Å»½"Êär®>Q]LÕ¤Jç­44ãï½n4ÏKS–î\û•šU’ê|œ,zž§ÅÐ)HG¾ ~PÙu{‘ƒ¨6%i—*uÿ�­m¬§ ÌﶃËdYÀE¾¹É²î`Üê2÷íØpø—�<çrJöž‘“®ØAWÃ{â¿Ë{Ž.´O7‡/ãðÚQÉ«<8òl’ZÙ¨0›)IØ)~ŠoÄQR[LÉ÷PìC/Ù]ü6wR]ßÖ3¦ÎÛõJøýï·œ€²‹y)ËתMÌ õdVzÚQÓ쿊¤¿Ü#$¸±ñlI¼#Ï=@'ô\îÙûŽ—_¦ Ûüê³qõEÍe3SbžEÌ\8½Ó!Ûlr½Ö´TóÏŠ}êº2רÝ8.{|üLoíÂk*±+¯ 5J}Öï~{m¬ÙÐ{ÏhÅ'ÓH{.fºðGy]÷ØhÇÔ|„v‘;˜²ƒD“Xv¬šñˆ¼B”�báUœ�]¦^]¨ý—†W¤9…ß™ôsŠˆí£ÝˆÃ³yv£¯f×Üã)Jy°C\ÒÛÖµ>²%Î74ô*úI<.˜l[‡Ìõ=t#»åÞ�Þôo e…ÃX2+ØEÑ ‘S§éM©kä|�ÂsÙsYŽ;CKíÙDÈøeÖÿçŠÑØø¤lyîn[œv ‘¯‹‘Hyœ9cw²Þ“Nnû-äŸÌÛu7Õ!ï{HÐÄA z^íØ<;3×k^Û·¼Bÿ~€eìÿÓÿZêÿ²—!Ýgä–úв’D@&䘑SoF“Q“t€1Ô¨–\irý–÷‡�,\"¦ØS¶ÂМeóâµÏ‚�y=4ôבœg樹h´Ûs‰¤[éwA.=¹–ˆ»’”JôLò³ñ�‹#£[Ùu”±Ë×nÇò³œšLï¥Â ºR¿8Z°”Ïítö¸n?5×�¦ÞSRâÔM9Ð+Es±é ·Œ˜/DvlN+NÓäæk8•Üx2]I§äF޳óäý'ŠcEp”'|´WTÍí¥xz2ÔÄÛòËÊFã÷÷ÂÃ3rJ�Ñ„¨ä>ÕBî!¤^º¤ã«‘z÷k¸†ÓUÑ\4‡xº&£$ˆÉ\º[üPÉ÷ÕËíJÞ{�„àÉ„h„Ëò7N/©å7™¾—þÖÓ�-è‘VWDDM ¥ €W9éiâ>W!§ kÚ¤“š‹CzM̸ë=Ð_erМAyã40Òí¹DÀl9+3âľ±“,Ⱥ&Úxõz¯ ¶ý°÷{ÁçöVî¿Э AÁ¯ß‡¸§ ?õ»Ôè~6ÈJãatÜm�£Rs¼M ðÇx¶äÔ‹vý­:s,9#k®ÑÇX~_B®#²¦^¢šköAS#’&œ>,;ú&h€ø,AO»ÁôÆœOžïÔ87úiNÁþYëâ <¸þýÅuJ•Þzz©FæYè«~Bn±íTØ÷›Þ×*c«ÉPU�t[òÎ!Ï…yž‘…B¢6n²În÷„Ñvm·š}y)úxxŒV+Ã¥$'Zxµ;´ rŽrÅðf�ý¹ekg�{„Œ ˆä\–Ž¡ÒvtÿMæ1¡êœW_ ã—¢çæÑ†"·ûѧ¹jO'¸ß“Fl£�LçY,g<øv;à 8l̄ӋG$}*öD{6\�o�ýùkqoÓ­]/pí#ˆ?XyÄn0é©¶’…vEÈ•§]þ9íKéH¹€éé•£ Ý33©§¿žª± "B+ð¹ØôÀ3‘Szhõ€ùPîœ8ø/%·Ùõî_y¬ÏáñV‚ ¨<×îƒÌ%ÖRr]2ÅCÃõuÕ¯báJ�ÿ‚p#ü}áðŒˆÆ%m"®ã䇬â³8¢•Ý£çã]/_l$)—Se·ñG6aËæÁ#Øz)¿q–�hõÁ¿¹4Q¹~Æ 3°¯·q'º9뺣ºloˆno-¥¿Û­Ôú×ožþ•š¼­ŸÈ©äŒSíõôo­7Ö7*ʵ‘Ô—ßí”óòå†u…ë+É3êm)o¼;<\JНï—òÜ8Âo[#z-\�Œ^LŽÄ/¤Ô§OÀÔÙ©b;¸®vBíÆ¦—¿êÞKhhñ7¾Ê÷{†_®…áêãÕ®(ä¸Ü‹"Ð7|ïX‡\W"°?Uö,F¨#éöÛÌLûk&ÖæHuËïæ³#w”ܬ½]�à»UûðÛöW5c´jÉw¡Ô0y)/ÙBMÄ'…‹¶f¡²EXЇŒ­ï‡vú'³èÌ'1¸‡:}˜Ëû�ä‡ß¶vP è¯;˜ Î³Á™‚Bܯçá@;4,JÖDZQàǤ™˜1ؽ ‘ÈwÚ 7#ÅL-çb€É±Y©Çlnî-þ±é‡9Wl´Çª½w'æ{m(9 éfÜ´u<šÈ¿k×:ÉØZÄ׌VÝæ³'3mnÜ,×Å^ò:�Û¸„d�h�Äë4Bµ=¨Æ×v±&Î’Öòò_åÑͧt²XèŸe!ÛS«ÛÏaSG–÷Vz/»*&ïa;­eu½¹Ç¡Ú†�ÞZ¡]¹ˆUëwdzÔ��ü^øŽºJ•þ�ò²À;�[\4â°¯¨éP3ä;èÕ!øŸ�}ý®�•ŸË¯^wuxjÿ-dß,™w%›ÆLþÒ®lw4þj`ÝgÇ"±m>"ׯ÷Ô_�×aôs!t9Ÿé�¿ÿ}MRï84tOÖ]ÿc ,RåSé±›œŸ›Z´ÍíX(°LugަGˆú9¨qÙ9€˜©é÷Wð!vÙ÷W‹Ó¾ÕçÒ{QÉÛceÁøjÑüÙWÍ^ÆI_s¯åh0²?½Y»—å§|û]-ÔzËô¹Ë¯mž¡Õ—ÒöÖF•ºäž{ÉòvE%0Ne(ß¿¤˜Q§4¼ÿop%Mïdàˆ’|Ú:û<ËõþOJÆv¸7 ”–®Î€ËáŽúRPUv}ÁúIRˆ/þzíÍ !Ql¶ON|úàj}éxoÿù?—± WÑš+j›˜{9vDbÊ™ ÈùW;šðût¥¬ˆFÀüø±µá·K�ÿ‰w¢ßðà'%2Iè’ ¾_„¯e(œŠ›i «ý¯ˆÀøÔd!…°òŽœFŸ8æH“ÂlÜÁg*;ó Vây|M”˜Ð­«�\8,Ûã1 ®�7Ú=…»$÷¢Øc°D Õ$(Øé®¹­J·º£‰\.rî#XBç·Òÿ(‘8Ûé´î!½ì1Êg‰@Þ>ýð5—Ž&Éùú½�Å©Ôôø¤ŽÌM OÈ•7�ásÍQBçÁ°¡(z=u‡Zo‘ÎŽ8oƒÚ<ËÐîoøÝ@ÎøÀ²š¬Êå2¤ÊEç[s¾mAÛ5í—ü”/¹ûÀÔXÅÁ¤Ž:ßpzçõD¯,x ”òžÁÃqÉ·2ïô#DžÖSýß‚-úÁÒ¨ñŽõ3QrØÚ…?ã3ŒÃ ‘”“žö™J6 gÌÿ#0—éo#�ÐSÑ—Ã;ú½½µ|é˵î oÅ ‹[<pü \u kÒž¨¾:º6\To¾—–£7zÑ~è–1.oÐ×85+FàVXÓ©Ô?M ®ÓUlz”²»Þß ½¨Š'8`Dž ôrTó�@¥ã!ê’\urRɧJn¹íÄäã< ÐWKÅ_Gjû’¥Ð܆±kØ*ÏŠ³KðÔ7 lÒß“å¹~à û-°ß,o¦H†>_t�êVì_&_ùMsw®9U7µÓŽ%.×kQÔCˆÂ![HFð Î$Qæìm9Z7x!r²²fã+K¥&¸æ ‘iŠ\DŽÊP²hqµËTü£Ù�+77FÕüÚüÞîú‡¯Å½YCBv#7¾pý¢I‰¼º~Žôy=µ˜42•G¼Ùr¥Ö�~LÎÈáx½?Ö6.ÊçÂE.‡S©/³žžYî�È5è_¡Ôˆ�fãíÃùÓ‚ùš4ÇŸNì�¿Ôdñ«g¹,ûz>JÓú[O­=/eÚôröÍ¢aQÓ„'¼A0g ãX ±ä°[ôygð~¸æ�; GZ©¯«©ƒîеšÓ³=v`žïx£äÜ/]O# ˆ(ž�›t„•ÊÕµ˜ùíÖiŒ¼kæèžë‹hxñNOm=“ßÌÔE+IþôŇ›¦Rö©][{üY÷«�+7 2�§‘ßßAßËÜ ›ÃˆÕ?+?ÏÁ*/B%:óÀAyÌx³kÄ€î·Â×åì¦;‰mÊ$øGDd7ý×2à¹T�s¾<® Â�|Åœ*þAsê"M+,xƒ®>¾’T™ñœÄ�fˆìý/àh¤ŸhŽÒ¥@S]çCO‹V4Gø%Aàü“”ÐõþÛ¿(Šîq:|^ÍÔÖõ•£á¸~�Fßé£Û´ òaóϯ0Þ0îOÕÃ0:ŸsÄÁ*c³FpŽkÄ£TŸ…¶ï Ù[ûâ ÜNC6ë+Û òDÙUƒ „e¿ÊËŠ“_ìŸc}Ùë8o[·ˆðçVn…rm¡B‰èéûŒÞœ4«}‹ìÕ¦ý1&ã�X)hÀ@gy6×Ý8èÍ ®»xD0Øð»N›¡—eVû¨+熹CÍØeJ¾)e� ««û²CGƒ°Ø{œ³£t‹¹�0†ºó¤sØÍ-õ ?öS88!6Õ��$"“¼Žî´ŠõO¦J',/Röš�Ç¡�FÂøœ\P/{bðˆßZìeÅéíP5¶kn‡ÑD�~´M þD‰ª«ãñŸ¦Fr÷œÝbûUða�îñMöñ”ŒèIéìíÞÍÈÔ‰ìWùw÷úÎå©�å'¸šƒ„ŒÎáPݳŽýã�Œ^Ÿ;yê3ZWˆ» ¼Ó¦õ§4kW8¹ù}—ÿ_é¾¶]?¢î±îµŽl½D22ÿSŸ8ln %¾°y¥5Ö“=]×lC‹fm“Ûÿ¸øW rýÔÿdg^ɵÎ$f1ÞÓºê­9N`¯T]$_ºX@ݵÝY ºÀG{‚AÂCWÉæá³—ÅœšáÔ�“Û‚Òﺣm�Mß¾jÒ‘;Y¦è"ëØòßάß˱EµnÉeõµ2/×êäV%Ȇ•™ÅwäðÑ-Ü“Ö39.ן8ÎŽÇ HeäpíâQ¶X¶ˆÌêE#Ç•¬;šã9;‘ cù^ä|ø%ž>JïšôEŒQ�íãíó=i·–pJ.Ÿ?·ÞåñÖD髤Eé�Óc‡™º§„µÜ úV"Û‘n¢ÇçÖÜnÈeªÇ�Õ¤˜ƒ‘{Í`øÖjúà:ß*¼�-~\·ÛË·›Cg�üÙ0„²‡(=³¦†Ó‚Èê-gÉ×�… u+®ä@#ª ³C‰T’eÌ¥‘¯8õ¼1ÐÎdˆxÝYù™æÂç§iyA$õãìD\q¡é\º=·ÜŒåÁ³C^Nó&³Ë_Çâ˜]½A{Z4¢�¥�w›0=];&CˆâS‹³*ÓjQ}w{ì]®3Õ­@L8ßßÊ8×�ª~Vºê©Ù³ÝYµjS#Ú†ì¦)�Cо�òTäÖMÅs(z�ÐKõÐ7¸“$r•ãí,è½úg°o‘a“³–Vé.ó4„ܼ±ÔÜž_z}¥ç¢úf ö%Ò ;æ?ÉO­\�Ó§±»T¯ŽF–@H�$àj�¿ ,zê«u›"¯Å§�ul3æg0Yë*+öÎw9­˜¿æ•ÆÁ�ÝÕŽíy·f­¡mõPaO�vÒæç6ÒßÿÃ?~©aÙ_%rÍ øûßoŠÈ1:Ý­¢_¹œöK%2p«£›P»Î¶S‰E#"iÓ§_�Bi´?A #ø?#Wãô¬�vÁÊé2õ×ÈØËX•¾ùMÈ•úÀá56ÒrZÑœdª]cäåùTæCSU ^P‘°�¢‘ºa¹´é,Ÿ¶S¦~¡ãáÏw¢LÄ50Pçÿ|)‹°·»48IÉ.×(Žf~“»Ó©ºÁ·Ñ3ì„æÄY#Eqßó˜:CaüžÒè°èƒ}Ì�ª§c‡yŽeÑÔ¡ˆ|�!��ô=TßÔœt?‹ì–#r¸—!ßêw‡á*Üöúq+ˆ_4"\Ÿ�4]ýÐçy]_¤ZßéÉž–ÕWÕ7=gu¯5ruôãøžïsîp­97y�–îÞZ6Ë!kd`èWšÉ²n¢{ °ü!ÀçZè÷~óþÊ xO³gÄ¥FJ7Ü6{24�Þ"´�Kp%è²¢ç¦É‘2?\¼Áâ@Oç>¯ã‡ð|C–Vfן §øÍࢼü…õ÷Ÿå¤Ë¡ 7'~RàÅE¬Öˆí=ÿë„l•¹Ø‰•È=©ë ƒ¾á!AIb‚ߥҺ—gkÿõþ r¡¹lOsy^qëÔ"ð.àƒ;R#nÿ† ?HÚ?Sf„ô®o¬ø<�“ÿ|]Èì¢u.¤T~(ø´«µ'ó[ÿ‘ÀµD‡Þ€©ŒY§#$ê8ðg‹dèôãáè\SÀ¡{èãÞ:¥mÉŒ�­Ô¥Z’“oiá'Õ PúvaœNøÙÑ\²ñí¥ >�³�Ç-O^ù�À”HWîÇaa¦¸ešz¬[Ü[Nµª 'Lº��%w«uÅá¢ì¡,­MR�ÈÒC’k¯6ýëj´•£W(Çqt#wЩéÈþŽÓ�vþJëMw¤ ?ï¶0ßÍxëÝ8qÝäù(‹>A•öicúµ]Y]ë@0éZQó’°y†ÍŽž3Xµa å:蘱¬9Ý~‹±Cµiöÿ«l‘€¿ÿÛ hä9“�-'à_þBŸ·{ŠN:U¡†êͤ¹o,Íì5¾W½‹9è:úIàµÿsá•ÃÚvîâgùóÕ;¼o:)¢­L+;Uœºäf£,šÙÑ|Vö­ =$¨ñA cnäUš€A�ûK/•¤bÔÏö?z°‘*bÿž‰¿b~WÜâ˜å¢}ÎU7ƒÍpr¿cû÷[ÊËT±` f£_[ÈÉðVÒ!°g±ͨ7ºy²~w(úùŸ/Bù¼2{Ó·<:š¥ÅÜ�¨•}Y OÉO9¢žÁl'q2àÃuõTب.æùJK§aI­«Þ¥Xƒ�øIÚ‚NeÖÒ‡X¼7AóBår²âyÅ=÷ZÅÔ c�IÁÛãjm«Å™ºë±]ƒXÐó4²Üž*z‹»eV¢}ç pþ yG ­ý'à»H{û¯.šk¥bƒï—‹¬ÐF¼¨XÇR®{˜RÑ–Ú¯¾R¬Ók9Û¼©õù§?•ÖuK€<‘ôx–O }R>rKàL¦²£*W‘ƒ�Œ[»ådgĨ¬{Y�ß1è9FUðŽHž�ýTÑ�ÝÚaô}`"ÞÊÅÛTïÙñÔ¥ûe!·¼šI³®íž©_­,B tËalU7ªžtëhô°÷JÔTµK\ §ÑådÆ`Ç&üQèËk$ÕÊÀºz·É+’»Þ÷‹CzÚ±p@Ï�&GR‘ócºKn£µÏ1ÒíP/[âìË„ˆŠ³Úòü´ž^¼éí{çŒÈ˜ÇÌn‘e£óJZ$µã�cQ{ßC°ºöÂzM# ç´Y�DSÿá¡¿ÕíÐy}QÝ>+uÌ�ÇbÏõg£¼i; ƒÚãšNc9õ–Úi•”ð·€ ÕÌ"ÒéŒÈ’ûœ·Ö~ϘàûˆxöeŸuÖª3ãt^a/ßV~ìç‚MÕ‘Ý@4röA¿;²ßRþ;Õ¸xBsíM™ˆœ#QêNîÑVçïŒÈ­ÞðZÐØªUëâ P3‹‰ Ûôù ãý‘Â÷¡Î³ú[»ó¼ÖGÅ ˆ~GäßIõ¿F#§¤š�;N[]ëmxÐ}‹t�–[;½¦‘åÐ Wø÷ËõÊi.ãxŒ\µr6�c¤²ÞìØF½/¾¢²ïý¢§Ek„–F\¶HÀªàrìû_ËrDì¯òCuGHè2êˆý·È¸{ºòÙ7)ŸàÃú~<›äÉÜxÆù¢aìµ^2ŽrÍ\�ß;T?ü ¹×/o¿[ÇËTr€o¹3¿þSïð¼ã‡,˜¹AÚÆoõ‹øަ•Žž™oèðr–й¾ßtYKù¨õRú” Rr`+› ¿î´¸GZ�þ“㯠ž–zËi…×nú[ß(†õú'"¯¯g®,ZGÄ-·e´ç­Ncèúì¾Úc ©-€²#¬)˜·8éRPuU2L�,�žëÅŸª)¾}W$|þ†¢Ü¥+ÎÍ{hv—c[SOÇíVg��Ú†" 0ýô4i+ý¯Ð“|÷;´å8!·�—á‚Ä£nK¶Rïàút �aî+ΦNmÏ9È>l´¨Âr¸Âö¯B=£yíW<8nËg¡v|>Hw‰’1¸~¤C2é‡ßO•û]ç‚úyàp�Ša2û�»C¦Ÿq¶Æ�!?O&N’ïK³ãÂDþ©œM¥ëÍklÖʑֆŽԱÓd܉j_Ø{—«0)^ Åã¤F­“wêFÕ(ËT_¹l* ùù\4J׌n®‹¯|ÈÎùE+ÿû�B1¼MmÞ�XZÛW u[¡I3“ q&#òpƒœ>òÄÎý$ûúpÉêEgæ,ƒ¾"§b:áv©“§÷9Á·ÿ)?£ÒÒf©+âÿØ å8Èù,{€ìwÞÁ"kìS¥Ÿ8Ûб´PàÏÀÃÖç ˜Ó4‘‡äNÁËó—ûbx^Ëõz¡?àt`džþ*ÿën»=x¯HøV¨¿³`@Ô+•0\'R„#\ÕÓ4}ˆckÿ)i›]î×°xÞËf±ó3htµU™›aº’Ü(6PLÆn•ïžvv%¥³›Oªû’�ÜÙö' ^íF+oðzcñS%ã ß_i\%ÌçoÅ#çbk=c:†)ëý�©·½‹²cîNÅIŒ ¬®úQ¯”ú$÷¸*T^ïð�> ¥~yÔ?ÏNqÒíÜÿgE²90?�øÓNæÙ€A®»¸÷cº:M5½¾WêËvë|™Ý_ÅþHhÔÞn)›­6—£ÍCÞвN5«àVBJÓ»ŠD�é\ ŸU)„�¢û* (×q™—‚ÙvÌ Dl¬´´CÇÄ\ó¹ð¤Ž±5ô˜z‰°\fÿB ÌɉªkQz½´‘—UÄ-ö®lPX=fžÅØ÷ÿñ¬©Œü¡CW~йw<`ꛞ*ÜðçÛŸþ´][†’{hXYrÓSqq:ð7¬Ðj.»tþY»ß°yÌ¥?=½ò�ˆL?þ¦ÐîÛ-mØÇV †yVLu…Z©VsÙèR«ž&«É´P晴j;[€7äÔº^înfP¯¦„ÂL¸•^®;¢ITpNGmCži'Drœ¾-¹}7_+Ý~)Ÿ×ïíZX`À–#î�þ:N�¦SÉiØ .{<”ƒô¸ï-o¨÷i#¬5³àÙÌ/%t'æñdÜL�~ñØ –ÎÇvÑ*¸ ¯;Ke¾‡ù—2m\’Çð‚Ó«µ @ôœb;Œ8µ9ˆx‰95ñ9‘§Ó€S@ M ÇsZgÅbR�Lýg(~7Œìm97ð%g])[x›¸# "•ug¦ëøz/ôÞrÎIÍ�'û¤ª8�xµ%d“¶§³eì)'·´FDÈzªr…»v5!—ãPrݵ$4¼[,)›áð§‡ÕϘç§Ró¼�#ê/[$ö×/§mìÚ*Æò˜¾Œ'�ã“ZE[³šÛQp\á–ûÎÊf0d•u'¬æÌÓP޳é¿ZÓæ°¸cjµÝ°é+§6r>¥yÐàÈU÷EØí�¡XÊ "ÏyYˆ•…13Ež¾¯0>Å*Ftµ’1Eã[­bP xRhGdy€|Íwäê4 o �€„Ý¡weð§"W±›0çš« ö¹nÌ ‚�“a­Ÿ·Û�þü—¿l¯ûfE�Óg�Ûrþ¡D¦u)°?E¶Ý‘£X¾�==й3ή©JËx·HµÍ.ªÝ*r"&)žó¡H— Øðcu'_wösªg”T22p³ãш×Ë£ÈõÄ6ÛOÊ劂«9ç49š/È�<ÔYß®DD?ÊêNí‹ZĹ~où•|B¸ÇŸLþ¡~Åôƒ/9•qÜ wˆN0^سEb:�x˜Z†'¼£êÏÐU êwÈûuð‹Lš-àÍšÃp°ðš/Õ+ZªNjNaãÞ­ýÍx3kD¸ð57�æ²›Ò^V~G$L=U=Ñ2fÊíø¶þ±£î»Ò{ÖǦ�ý¾ÖyÓ~ˆz®î067×@ñíE¦‡ñ•DBãªW�}9ßiŽô(]Ôù¦F5W›ZDäìzˆt\Æ„Ÿ¢£Lz�ô›)Šo5ßûµÅtt‚ÿ©9ç~pñ‡¾A?k®[ �—íqŸé®¹]µ{0Å|�eD’�èw=½ŸRŽ7YA?Pçü¥\îo§ü®·�î1 —ê½-âû㣡vË!†špÀiµ¶-a·¾N§bwÏé!-R”+ßQ`îæ‡ëïèØ7Žˆüío.ˆ¼‘CpDÎÁû�q‘>óT=áû¿ì#Þ¬¼}+vòúQîiŽK�莑Ô'À›–„ÿÑóæ§@˜àMP*+Ýñœ3}xïzüuòF¯-§øJ+i/L¹TÏ_ÿÞ–ÙxA„ôÈ¥ù o�ºîƒ7O†¹ÄÖý‚HĿΘ‰¥ÁÜèó( áqÒ ’Â� ·:ª;(Ž2(¼MPAlFî˳ꩩðÊÙ¼yëNnæÛhë¸jn½K õÉ`i1"j딨‘ªL¢Ä;4'±} ¥ËªoW@þt‘ÅjXñŸú]¨¿^/…kºbëÆhèÔ–}}‘Öw5B®�^�ýgcê÷ß%¹/å:üÅ1P‚SŽ»ÅU¨o§ýÅ×øË^K™(ýÚp·íÍ=¦~žwÐÞí2VŽ ±ìa{ÙjŠ›iž½–Ê�´>kß^.-k³�Qrr¯Î»Î�íO,&NwÕ×tt!#/F—¼R*}Øó½dà›Æµ�ÍigwÙ¢Øzê¶9Õo67„’Ø¡J´Œ©>HÕa²Ã-ÎIÓ&QþÅÓLj—.:ZŽŠÒ'¡ûÚsQÙGt?ÐËÒ`Xžßƒ×ð²N#t‰ÓÿÊÃOx«ò£•£f$È“g_îåÀ·ÂgÚ:Ô9ÃW‰Ÿ™msX;ínîx®éô.w`’Í©¡%_ßTÚn&(Nir¨ÚtT/ÿvÇÙ|1bÐó^¡�)âxÁßømÑ‹>LDF¤ƒÌ çÀCdÿyiš"v¿ ,ómØ‘z‹ü»5p|Í„O–yv‘€þ2ÓÅ{ Åù5©x·Q øØ»_Í7éä],x6\n"52d3”¬û’UÈpr79×›VäzÐÿ>R�†?ëfCKrê¤6Sý‡¼çª‘¤òã@rÒG5ÜÔã+¡n¸Õé‡g…÷¯éT[½òJ‘îKPñ’UöíâCeóer¸¯âäØW§Ø˜Ëú§•Q¯âý[è~W0GóÉmô͵•–�ØÈÏágúÏÄÚápåàS÷ú+‡åêp^×¶‰c”ÐG'{™<•dà�,=ùì}�˜ùÝ¡œ�Ù±‹¾tàÉ~W}Ig!¹d쿳É-„áa Ê ¡ÓAqŲV÷>Ž¡ï®w°±ê‘+#pfï”™rT[Gþ¯Ž#¹×ú5c5 \:BÜGEÉ: sk/F· cu"·:%ÅI?Ç�¼rôÿ[”dÑÇMû¨ýS¤™â p[FK‡,uluŒ ÆÍŸÿó*›}8µ·�*«Dܨ±v¬9T� Ž}AÇ8&È=#e+ØZôX=Ýê°õ³”Sƒåòk™¯é{�«9A�[ާ˜ë‘>·Kéo'0ŒqZŠŒ÷‚߈=”²Ô¨×•d zç�’ãMÞ?õFkSeÇ‘NP< œV9ÄÝê ·‰ÊiÀ_å±<èÏ_‹{)œJ÷FÿñKgi$ š©“æÒœ½^ð9ÝŽ'½²uæ•_CÅ`ÂÎûIsÞ‘’¡\_xpDR ã>5íC� ׇܗޕ]ÆÁáwÁ)™zª+ÍKX‹K öõwÆ…Ç È/e°‘…b\Œwâ¢N�è‡ü´¾\#&¶ê‹�X)§»Ê×c��Ũ DXOuôrŽÅ>wŸxýïÀJÞË_ϘÇq'I Âà<ô9©³·n‘ž[ŽôÕíœ9…“‰Ž-øaãÿ4ø¨ž-ÔC¨}ÖC¢Õ\"o©^ãBÉ`RWmî²Vdr~L�yàVom3—Å¢#ž¯lÑ\žxóã¢Ŧ­öŸ�φ~ºÅºúœV*ÌðëÆgÉàPôÅ9Í1øp þÔÒ…+ÚX0`ÔÓy¹ƒ²ZùQ癇�Z�îÖñášÝ§¢¯.gø*QWGðÑ4áþ¢Xzúz8åù ¿õvúéúúrEà­‘†ƒ.äÀÎÏ6"WZäâ'p;k¤-7'ð͇¦jD³¾H¤êtšŠvÒTåÜÕÿE$�,ìüU-§±è¸‡Ú]‰oŒ´·€¶�E•2^çcûÊÀ#›ãÞǰ¥ès�ÄdDö¾�ïEäŸêUµ�íÆôýý1n¸¿_Å�©ç3å-k䊅ÞCªbº�’ò«–Õ_ØüÿSQ,zw„˜i.O ".+8ù¯øøzÂËx3e™ƒ% Þø´ÚÎE@Ÿ�÷‰S»Ïzj·YÓIí÷:j/–Ofð·òÙ9upQ½½M©*# ÐU›+æ•d�Ã_gI,ÕÌïP­c^§`8ùmàKd² ^«…ëVø¸ûBÏ„+ÿ½sËj4KÛ=œm!™vž¥ SŽ ?Ç-KçºÜh¬ÒäæBè¸Hß2ߢ߹�ÍŽ?ëBiè`6EF‡®R€£ð•ö:Þ*; Ìø%ŽÕþŒ}ìàPØCöùØõ¯SÃ�òyaÐLð_ Kžô§<ùÒÖ=â±X*ÎÉnÁÑvûܹµ¾˜JnÇl¿Ô¹`nÊ™ÙľÍ»4D]nOIæ(ÃÅ}úJš�BºkTEBèù´Tciô¿„9u»Ãá3Ez%€³9âûµ\¤e‡¹™»h+b-I™Âëã£Ó¬�7úƒ³»ˆb« îg¬æ|1õ)v#½XhŸ$Úú@¤Œä©N�mïæŸ=¢Ì.#èí'jG½üWµ Z÷ø¨¯Ùæ¢Z ~ÍNzVèõH×YrCÿãŸR�p�F¦dzÓßVXŽü™ÂíÓmxøÏýbm´ùI=‹­—¯Å¼¿ûZÔ†á—2wÛéÀk$àíî'ö°¨f‘ÃT!^Pœ8€ÉìÔ�ŧµÏHöƒp ÿi7V„8ô“ I™î"Ë"qÞ¬ØÊ8e\ÙÐq9tâ8ôºuÍe¢Ÿ—çfH33j¦Œ;ÑÔ©�ǤÀZ÷{·dnæ�ª‹n×Ï”gÍ¢‹U¸™'òëÞ’a3µJ˜8Ÿñ·x[bÃØ¨7~‰Èdû.½hÚÏîÑ“Û_;I”žöó[�s ™�Ï£z­!K9ÀvusÌmztµZòrêˆí¯UÚÂKhûh›mv+Œ×éÝ Z̧z`Óz¸ïgˆ 6| C”Íc6 ŽÁ°àQþ8¹Þr{Û‰Ò?ªÞQókÕ_QÜ¢.ÓÎ÷ï¡Þ…ˆ>}çO©©º@ v\'ˆUf"7]Û–+06'Vþc®7°°(KâhFJµVšißû]q:AJ?ÖMÚ“‹ßRê³Ççø~YtÍ…·v\^ÞÿÚ™)mË‚—¹&·0£"R�Ïæô9µzf�õÔ\…¡[Œ8mM>K20FÝvšãJ]òG¤Å0}n×åGÉ¥&¿Úˆ2!wêÓŠÿ{¹7ü³T–n‡ODš|üïØº_#ìV|Æñ3^þ¹Ôû|#OIÝÊЭD�îÕÛ;ð´t÷Ê êÏ%R‘‡³»î4ôA‘s µàíôÛµ½=fªC´^gäL�3ãó[Ác=ÕvÛÊ,[ƒü70XŸ%¹S�°¼Ì‘Óó~—ñm9lº Þá|àËžfYœÂ+-ü5\Œ’®Ö ‚Oh­J9óxМ^TtÖû·’ �/õøF´‡"òHyTC…ÕCbò|Íûó¾µÅÎ/�ˆ¸ÁV—àÔNOþC´þŒ$8Z1&“Ñ~tî÷šcO ½TÁ|€ÏÿUÉ1%&©‹éÆÁÜú+—üË�"çßÏäôÔý½|=ÐK ¾nÐ/XX¡Îòø9yj¹;qŒWÍ >žÏ±{ØÛ`àÊ�Ê‚H642iñ–’»�‡rJªœÊ�@{.†P�7ðY+¤¼µòë†ÊRr)È{è§ŒóµDª•ÔªÆa>:ðéî|3ëÖ€p��xòÆòìå*Ÿƒ•¾ÿãQáV‡Ù.¨)=-}~r�¦ýéíó3Ƃ܅ºHl¡­—.¸¢9_–ºu\ô&yÚ,RNAeM {)9EøŽ~.grÞØˆ¨{�¨Ü‹ ‹Ç£Z™Êª+óè–øHdí¾Öê`p?é6YÖNõãàtŸžÎ-3Æ=<ª €½â�Å… }g±1o9O C?�‹î݉=ˆÀªã°ºYÑל…È­ºpËZS*ÌÄõ¿rÚöqO¥ Rô³žòie΢҆X.lÝoö¡É×v�àœÁ7šÓLY3#ÉÕx²¯RävVžØ^[êF€‰`U§X’�­¯÷þ½æìºáIµŽs],ü·ÿþo·ÅÃ3rßð¬’Åïcåÿ|U‚55òx²Î|™1Õiå ôÆ5C–Ç*Û�ý>|Ú tœÀM׊�ïEŽ¿Ä§OœÀ¶�â!”µ%Ì‹À;ÔºyKÔŠuOfÈËIsœ-fX•mt Ráêé“U=%r;xåûÑ„š‘TuaŸƒ½ýI.ÆŸA‡ØË@¥9¬ß^sôÝà ªg¼{×Ó(ë�›ªÛ+œ²{†ü.Cëh½~ÃTï°3î…YÝ´B·ó‘c³l¦`ÐÓÑÉÐÄèd Þ"¥ŽŠ(þ—ÂWã¤ó‡¡º‰ ê窾9á9#ž~«´2ï™l—�z‹Î6’Œw¤ÙÀª§ìêéôÔÚ×Þ•z˜ð€V¡ÒˆçˆéüÀÓ÷FpÈn‰ì[ï�)Nàëí´Þ”–ªGtH±XzFGãÅ×<_ áá šz*ðR"¸F®Ôq«�w ?Í¡}e*©ôðjL[ê‰ôüÛ ]Òíܨ1C/¦Æ[U|êH¼¦¼Ì= n0Xsy2FàC&✄Ke†ÚBY}då6V6nKÆ£Ïg3ÊklØô�¸â²áaÕ‰ôí»ÂxÚ�W#‹‘Õ x3ÊÿŽ0°©_Åì˜*ý]1zÍ H²Û(�躻îäß`šr@«Ç3�IÖjG~í¡çFÎFþ…Ú7ɾ­¾f´Ð¡}í±}ïn{Ê�gÛÉ‚ÜTïK¥ñ™ýï'”¾4ö6cY_ë]sH>_¨öb•~ª‘€wät Ø¡Oô"åíèülY{ßÿvn»ä1ÌìžFýW]4�ÊðÈ‘‘I¯²Îõb�x0Wë8#‰½U5]µìñ¡ÇËF¡´ÊªÙcõ¼°m®’{lèçݨ±=è/°s¬c5£�Nt¢ÅçUwշ׸Ž[ßÎþ›yÓ6?)ÍÁÿIº6[ç&ÌIýž©:J‡¾$-[æ�›ìÌC¾OqûH`§»ñ«®…x@ìñp2Aäzþj?Ôù.|ÐO@+¦?]5«Sío[_² ìëÙéŒ�iVÞk=¡CÝÂ9*¼£D(ñÇ o…ˆ›¹U®x±§V¹ÞtcÓñBýzAd`éúöÿÚ�êèÿï%QKï—kcàkúì‰`X ÖÞè_Õeæµi2N]ÖÊ�…}$ÿDšš©Ç«êL…ãÁ¢µÁ5o†,Ïxϯ ô`^yþ�üZ"ËP+o4fØ®Ó�H—ZÁF¬U½aൢ$ZØJí¹äþ£ ¹îæQ¶±îºÚ�­8žKŽ2‘¬B_‡æÒ4B6KƒžŽ{ò÷À`/iÓp™ôtЋód„º#½­ì~õ3°�Zn%²q(‡#Ž6ô[é�ð¶\Vë5}¹|~þY ¹èqiHž py‹—7A.¦rê›-Ú! 7ž7ßMZC®‡[‡§® Yõ’ÊÉÄÇCÓˆÞÉä4tæ¥D(m‘uÀkÓ@±…âŒTýÄ7ÍͦǴW�¥5v0€Hq ‚oÇbïmìY�‡Zrc²”ÜuX Ç€­Èåä WTÈv®;œ´˜Ü„F6²ü„¶ðˆÖùäÆÜhgö,W8rÈœvNͱf#€š~ö§KØ1& ‡ÓeÏXü˜Ïʈ¥{‰_õ<Ãiî\ù7ŠB=EŒNzþbägÕ­Åεu䀭§´œŽÎÞ†8¸Àê¡Á—žs{¸˜O!òɳÝ2,¥N&yf¶g¼æ1#Bö<ô&!ðÝT!Í5!‡ïý,=6É0zpßh‚Ü��ÓPÄØÑ¯2à ùT¹·hÆØÆDÕeçêðV„b®ËL¹1—¿¯ÏÍOîs¥i2¸“ì)Wœª^ùŽú¾Ö2¯\Î%´lAî'19]/쯯÷®‹{KxÐ),Ü�Ÿ¾ä|=@äßÿá�Û�"»zÐä2=C/<�ói=Ýt«¡lª¹ùô´R@Öˆ§ù¸EÝΡõµ}«ú‘vĨØÍÉzüûI:> ¾¸‹ÔÁ5RJuÜNåå–k¶ið�æˆ䩘7¦[_ÌÙbé¦ ´:>Dñ„Ü»Hʤ§O–Í#étaÎe_ü ?fœögt« •VøÂäŽçü?Àhgs¬eÖà ý?ÂÏXÐ~“g.9ÈÖ®.ðÓ5bmav�>‹UQÒÈ{ÿhÎEÒ6õ;î»S Î�:/Fþ©UP½§æÿ4xšßñbƒº-7D^ïž*j4wáÆÖC.wòzxh¤èr/g‘-½ž¦ž'÷x´ÞV¹3t¥æ^êFN•^ÖÍÓR4RßÈ8Yf'Þ yœ!M!5ö2Bó°oP²Qµú~îéŠÈ:õõ–fú¬¾ŠES÷Ïèÿ„ùº­‘k_߇�Çõváç)ú·Ér„^zZ0W¬ÎÛm) 4'Llí#ÈÏ‘²ç‘뽊ã*—³··õôóp:mö†€˜/Û©Ûk¿gˆ\6S«9öiû\O^¿¾é$JA¾Ñ?PÊ {ÕÑÐæ²Îk¹U#˜QuÆ<¬§Ì¯UTÝ Õ›. `Ó‰uŒ�9„i¿Ø9]ôEËð¸?ÔcÉ‹s4æ¼Ãÿà/}W" ÿüôïÅ÷>,_\v›Q¨÷1£¢æ4äÇrô J»ÒÖGâé‹q£;õ¹-¿Š¾à£GRŒšcRßÔP;8(©¤ø7Ãu{m€í„|ljºªœÅ0´Yr‹Ù‚ÑvÉB~E|L1’�mªÇ§Þ³.ïV8#ަnÅ5H¸=ŸÝtÓ@Øú¡Ÿ—µU´LOÊQç¸XÜ…vÅèç˜ìµèX=‰€_݉ÐßÔ¬l î\EB½h]Ø×­Ûš¦#Åç¨ ¿µ/IúrŒ“v±üÄœT¯$8®®Èþï´�Õ B]$ßú|Þí.n–N�WE@UÞÝ…žo$¶ zäÕ"V/´‰†ôjiê�7�O#X�}òcvëÉñÓð“s$ ®Vý²âw«[f€ý�‰Œl»ÔÆÇ65Ù88 |ýÌ)Éf\ ñ…ñ7(í“»Lk Pb1“#ÖÁÙYÈèfÏçE)=ö=í‹RËשîY»ÍˆŽÈ)"zYϸ Îq> á3¹¥@¤ª3z=Ð’`BÌngþ¥1„6€^�¬Þ g}úÂÔSœ»¦_¢NÝê§k[úÅ9s=r7‚CÒŠoMØ1×E ‡ûS œÞû™™õðú¹©d”fÒ׋k$à5'`·hí1\#ÿ¬§ïšK¯±$�óÚ¸$' [™Í›uƒß>Å2½WoÛkUõÇ¿Ø�Ê(™û"9Á=¶�¨[ó{L'¡.\H³‘ ΉAm&^“UobÁt²k±ÇöÞŦNý~òŽ.wxìÑXöñØu©#^Yëžõ í`Þ‡ÁQÚ§n%ý\i Ä­½{T=jëÍ{I£Æ=ÏŠD]úêà½?%QîºJ¶“¾n§¦ Öö$&ÖÃ�'Èv~Ÿ¸6ªo%ëèuÒøûÙ�³ÆWS±ò‡‘¥¸Áe÷^šò!«)=ØÈaQ‰¹ùt „n›Êä”Û7”xk3œ¾àÝ&ºÉ²Ö([qRëdód½ZÞ‘8Dzƒc×Ââdt†3e#Ìα㳑­ú2b(rl\4(¹;`Vé®÷taþYmð {ã €Ó^?!Ÿ-ÐwK|*9ɶ\Rvp–Ùˆ¨ß"8êÍÔ½"—ÞMOË ¡úŽ~]ÂFäΩH× §D"ב¼i®ì¹m§u®³s¯ u‘ëäÏx]ãN5UÖ^w®ç…ÜŸùñ^иh®2#è}ÈÓÕŒ¿žÒ“0iŽÄñ×røAÝ¶ÆÆýØ^Ê)Ï[¡ži5¢ò{=®qU^5§"÷°×‚S<ìЃñ‚ì˜ {.x "«4Ø]çÄ&�IHµÎÓŠ×ã3h¬À�zq‰x“oÈ1ùãƒ:ËiqüÄÍ7À´Þ�©¶%-Y¿�‹›û-ר¦ôqÊô, 0"l§ÄJSÄãMgOë“ò[Pž "�†ÏB4“šÃz|:5D\äd{(˜;¶í8*RÅKO\\R‚²ã±m­��Æ“§ß^1oód:'#³€[÷Ø1GŠ7øµžÂûñQ”éù-•ÿ:(ìŒÉI·p|θU.6z�…ÀËðYdz sy‡óñQw*õAÛv¹ ’pÔÆécCˉSuã)|È™³Ê«_ËÕ( o‹å[þA6¿GÄ«QR@ðñ2iDÄF”gl�XÿJï&45'ré¿—’]iù�Ó|õÔXD\,#"qy8 ¹ %e„¾,ÓDõ$=ŒÇF– àKŒže™�0/9½^«QˆÝ>¦¹œ´y.¹+åÇ÷â,^Nލü ±qóÒæ1VZ�“tXîDÏš›‰_õVQŸÈé ~œ”ùN½5GuDVíé¢÷:&§�ŽÔf†QÓ1±—kD‚ ÔSºkmÇ“âdªï¼ð/Rèi…[ÂU­ŸŠ`�H2'œ.~8p5Wp3šÎ÷‹z󹜚|úQjËE:ü:Ì×ñœŠþçû”ÌKßc�k[�d\ú1š“Ó/°[vñ¤=˜ø¹¹?ô÷ùÇ/óðUxº;ñuo],üã¿ùý èCÚ¸ôtáÿÕFá<ήÿ¡â“ÑBï>²2"¿ª¼^#MfîärÅ� L uzB�.G|�Ÿ«™†~œš4ÑG¦‰VÜÓ�ˆ„™5râVNƒ_NôÒc€Ö9�/ç‡å릟Ox˜ì—©¹£0|_ë?&ò¢7 ¡þ’E3¥/’|·‡ÀÖø.á›{7µ{+L›KÍÂR»¡ø(Z r6´YkjÂýÙ³ó¨yzŒÅ¹ ¢ÿ ÿq2³[Un+n2^"Ò�CÄÞµ¤°¦�âVÓ¤‘‰È�UQ1�õö±¡â«�}ðC‡¡ÄÖ*N��i)@.9sã««fD6 ü9†Þõ�F½×Ó3k@²пÂÛ[J‡BÐ3|“óR>´Þ/ô)økŠÕøn‘R_Ô"«9£=;°_Dôj$ÛšJx�ë_¾Ÿå~#ï“—0q:©½ñtû,|õ~-5k}„B­v%â µ\æˆ/Z8¢²�‹ßç±Ù!“«s\#SuLC¹0ÂïT:|‚á¿�’ç·ò<}ûô|~wc‰6}ªvzt“o^ù9éôh)¸Î8í[Ë(È…©j_yÂ+¹x“e@¨xÕ ÀÌYù þ‚‚ñB‘@.¹žF�nÌãM¯:lDvÎiÎßµ%SÏâñ�&¦ñäRZKÍ1©ã)}7^=Á.>@D¶úÑ”èy�ŠÍ�^t=d)ó¨§AŸñX£§éªÛæ ¸käò­ b¸x>àG¿ßáMÅ®½Aá|œJˆá ¯IxåÅîjßn½¢«Gš"v8›B÷^UA{uaÔÐ37Îp\ÎÇøp …>Ôë º›-9prª$µºö³[18g5™ ì ß;z1yg¡mP•è•ìîÞf UîP³±b?'êÕ.ÖH¼É*êBfÈÆÙÇ>.þÙiÛ{å�Ã÷F#`š<± YÎh=ÚöQVØà¸_2}híN{½®®­éº.{vÖß0 :"¬mz‘”ìÂÎû(2FØ�^ H-/ùJZÝìG¿ŒÌthÿ�ͪZZXÕ�z©=ÎÏtBì HŽvBþ!´›ÃCTjÿ^ûðÎwûINñTY°‚kyÏÚUNâ´M¤ák<è‹ÏG¤|gTVW¶HÀßÿ- £¾J%½»‚Ï-'à_þòõ�{÷dJ€˜#(éú'FÔFÆÙœ<])z¡.Œ ®áSëtæ:ÀKÁÑÞß0ºÏz¯ãé‹r"*Ù+™ÐÒÒ1ïTù‡ž®uà�R惞öÔOTk»jÂwE{c Þ¤õ£ÎðßùdüsôXÀz"ÑBݘ÷ä0Â݇éµJ“¥z¡+þ‹GF#"Šù’ÿ»‹A¨ÚùŒ°ÁTÙë‹JîüHûù³˜o¬ÅñŠéÒöaeÉVÈv£e°ü»‡?ïþðlûÝÇÿúgÆhÛYÐÖ¡F2EícÿUÎ:6ºÚ™Uü#NázœŸHa®“Ȉ§õõÑ vˆò/¤˜õww:6U�0zb�gÚ<¢rE*�· ÕµkÙ!bosævoK ÕÞ$¶¢Ÿz<Ø­ç—ÓZöz”�#èYáp·�TšŒe‰˜uÇT�Mú¹æ°äΟ·r§VR8}p;Ír%°LOPA}ÍÅô@ä¶bä½ Ç�‹ôø ‘ÁiÂÝvÞ¹'Ù³ äY#˩š3O¾a‰‘püÀi¶\Vjy‹$ûª÷@ ´ûI•÷Kÿ$iÀiKô§âTJ~KN–ÈF0ª6-cåóe»°LåÔÔ9óµcðQN3æ_ÿèúÏ Û¥Á®ôÊç¤ÔÇçð[Êüóóô8Ú³—–¸˜¥ÚR‡§ØÓ:í|«…Ý⤋§ôZ/#òTÞÞsPˆ@’I·Ñ¾æÆDàô‘JD<Žf,›²À)Ÿ‹žz§×,¶Q€:Ùaa± ã §;4«ì¹”©e´n¦Ÿ‘N8{9�Ï‘8àúš+΢¬9ø†[�+'ݲ1V’ì\p®÷.…Ÿéq«ãí=>µ¦û=mYs• BaëéÉß°¥ýOê6ü²5`¾•vØÉi¹G-oÕÓ�j�XsÒiÞ%‡Æ§e}"‚y<û1Iþ½Eº!·Ü ~ ]l¦¹ö�êlµ óeJ/ÒH?]°Bd¯FDÊǵ€@D2_ñðÍåx-¾.vðéŽÜ}Øy”{�3\Ï�´#N»ÕE0ü[_“ýÄ·7ñ&s,üµí<¯mÏ�mÜÃãRá¸iÿâßí÷|¯8Ô|„¦D³ÌHn$=õ˜óšLm¾Å°¯©æ�­¥À²§ä}%gœ¶<=jËÂý˜ïÍþ­ý]v0W:ás*H5>P¼5Iµ8H¢–3ø’-õøO¨A*§M³û€>]Y/ëèÒˆ%ɘ¹2YæZ¯vºRôkguß)fš�8%{9!rº+ �B…ë¤Fˆ�¸DÐÌß¿£åîe ‚ì�ß){�éî§@›lŒ§É6Ïзп|×d7Áï2òO™_¡?n´†>”ñ¼•sãŠÞ“ÞEÁÍõ7�ÂéÇø2ÌEï-C=?ó‹_�^LsC¶r¿=¶Å½m>TæÈëXÙØhØ ÿøoÿ ]®—/õPz]Δ vUˆ|e}³/ˆ û€^dÍ §ޤ~Cá×3ñ¡§`?)&˜ÜF ±�Ûå¡äГšä�œIt’®ºÍ5"wÒc. JÏV±[ 6×±ÌÎ"-ߤåã¾Ü²3Æ:ú& è9E‡Ž÷¢ÿ”žËøŒ^v4+ÿkÎíÁõWCkâ« Lþ·IYžqÜ€7/¹¨4’oBdšŠÙ�X€Ä,Åž�NÒ=°V<¨]œ0ç'’é«×‹ Ô×àUXU…š›o(b[rn•ùÔˆ¥¤[�ƒxU%'D€"â˜ùÐýwã¶8êW‰3[Ùþµbêæ®“ÑïÒ^0S/vO oA¼ææõ×ÕýS·ÿŽ\ЧÇsä1३zwæÃñBNã Su¼ú¼ù`r�µ²±óÒ›#g«L1€yQ»X®ÛÔœÛWÍyñ‘Ë'ø³=ËT8#„ó1†¥Pï‚ÇòüýaWµ$—û[Õ¶^8ù�Ð=›)šÌ\êa¿kÅ­� |*u—Éãj}:dTï~•ëgùýùf:ãrú¸P9%×–Ç`šK—:«^>¡N×\»%Wæ �WÓ©èaÃû†ŸÖb_xLKeÈ0ø~ù®«»ÿ€Þº`ÙF_Ïç“æR- >¦Içc•þàéŒ=Ÿ�8[ह—·Ó´ESsÓt÷ü²§¯ä úÜüM¥Ã¯ð�>.øñŒÓƒÛéÝ{„+EOAדêr æi¼ÚÚ^—mvÉÈm¦ÊfDŸ𜸗)ŸŽÍÀ‹…ŸpS/«*AJ<ðü»]v6+¼~ Er<¼½úÔ´¢h]nLŸmÕX°{}ÄqܺacÅ�UëYü,WïÍÅ3Z¼Ô®»é­ C¯[:ÈÎt„ö{låèa4Wý)�/ìßK%Ö ó͉×ñ×áY žôÅW;�æºH†9|ÚÃ}¼g^°ýØy{™6€™ò;·y®òbÚ0k×nC¬]°s¨²@”ð–•…D•”±Ï=:ÚÆäЃ,t‡(›×zú.íj/��¨êjíŸ]ûaÙä™hf¥EþÙ9° €vÏÆQ Mö�ÝÇNûן Ñ<³ÿð�ûpM%ƒ·‡؆ƒQu <¦î®ÎÒß½‰ì`éø\pJá°�6kr±¢ºµCäÛ$}O¼*Ê'Ð _Í=(–_4ÐÉàåŒ"€VyÝFÒˆ˜…ìBšn]óiG¯jò¢ùLÝÄÏ¡Ž…Œ˜Ñw²öÏÛÖùfXOe�s˜Ã»Ùrtð”Äó©À‘ÓêTNå.xïVûRÍS9•Õ˜�È ¢;¬7cÿÖöš“õŒÈ+§ vXË4<ÃAÑÜz&O !Gm¯9m­½4D¬¼¬Ç‡Ú�‰ŽÚbN«#W6:¯ãCN¨­ÎjéÏšƒ‰5ÒI#ü1?ÈÍ(w`ŽH7Q¾Â){îT1Š|&fŒ[¸D–°â'3y}¥4TG58CR"í– ô>EåS@,_úú1Íôÿ?ÿ/Ýî7äæj40GúµœÂœ\×(ÊõS#bšMè0a±{T$Dâ}î¡GiûUÝý¼œå¼isô² “ÍY¼Ò| û=;>“š I»Û;M2Å`¡b?FÍIJ þE·(Õ¿ûã¿Ýà¡zU 9Þ©OaÿT 3j™½ä ävZ}E­Ô^æÂïã©È_áv›@MÐS”z9+!!›üDEd` rZiÄH­:` ZõKèG4w5B 5çÝ u@ÿ ½^Béü(õ6wß¶à�æ²i1@O,ð?Åò­yx®Ó’ÑŠÍ,AP¦âNlfÄ5Óqj£Ø- øTÈΈP©‘$ò“�5²w1Î3ð•¡å¾³Ü©«#"tï·È�ƆP{±d æy«a�j4£~ñ”éb3¥fˆ±8z|ÊÕíõ…�Dõ¥äXûÛðY¿Ê�ü\À‡÷s®€4òGÝ“Is‡•JŽEYOï6pÄúDÈq‰Ç¸Qßy4>[ëž§2÷�Óžc©zL{ÜAÛëeðëô¸!gc Ü×H`äHLdíæ¾aÜ£MÙOQÛõªE#‹Ç¥Ùyض•–{o‚ýt ì†Y4"LÝÇÜ•3rºf)]ìÛ1¯ð+y¹Ö;Í©9Z…¸êläÔ\Âäé|oúËè�7À¹˜©jý½–©mÇQ­Ð1¿ÆK—ÍÔ\häì£æ†öȾ!”øSs´"aÓ»a6m ÙË‘ÎÏj�k Ê‹r‘}V^¨,�ÛðÑÍŸèoÊEHg¬ÕV¹”mbçª]ÝÒrÄå€Kå'¯×›BýÖ ÷øÎðíö:Ù“¦Ýëñ3z²Ó€öykoú³y¶«!œX�‘pý¿³Ä±¡«Æ@¸ÃÉ¡´ÔÅ"c°ÜXR`/q81Qà[ÃO²ÇO\…A¾�z +›6{%Z…º ­`Ä·Ê[ì‡oà�m˜’Vý) ¤QVÕèC¡}�5wÃAÐXfò;�’¶�³ÅõNËHÅÄýxå®^��ªjêP:gCÅ ¾ªZAF9´§áî­ø™È¿¾.·Gýì¦y7„C¿{9Ëc䆿7:ùïv2©SÿK{7Q7|ÄKr^±û¾�|tÜ y†r˜?‘ 1æR,ïýK”Ê?³å…`‡÷»Ü¹íz¹4}ybÿåïÿ�>>?ðÚ²ß#&òÍž—pp ¥ïòî�ßZLßLáål/‰|åœáì�Œ:Ýñ*ÍÙøf5'iß—y�üGz<ðž–X‘Úô§hV™ÄáfÇrdç:TË÷êÓpCW²š¾}µâ†¡ëbtï<õx$|[¥ïu�Hqs2™Ê´ìè_WÔ¦ZzÔ*¾— Iñêµé³áZ—S"êâaÿ–²+ÿ’üâU÷’™3ÎÇÜ•]ðõzT碉‘wˈ)¾i }õOž²Y0Eêf’Ñ7U‹çÿ béì.ZüÌÏg%S[��Òï9fÔ)UK#÷xæà�Žÿ¸½Wþ?Òþ¾Gš]ÇÄȈ̬ªçÜ;³»^£_f Ãð÷ÿ$ãuïƒ 6`LwßžñÌl÷=ç©Ê—nEèG‰¤¨È<·uN=¡�(Šâ‹BbPV–Ìôè˜aÉȇñ~†C³»€~{û+d¦ÁíI ÏIQ£!¢ô6|PTõáH_Œ$ê÷ͨ‘#õ8Ípïýùf|œò¨§ùì+þ–±5v"Nƒáw=eÖ'.H±ýDäwÁû±úÑ®å´@ ±×�ß ZŸ? ÞˆIƈuGz:çW #ï—†ƒ“îdF´•ÇN/ÇSEIë‚~ðXç±¶ ~óçéÖàZÁžêìÐË¥œXbÐÈ®w÷1 êTSó<}e¯Pªoqªý=ÅØÁÚžï±í¶©N•çBµû±}=�VüëéÕn—œ=P%ØO›ç¼l'ªOjE²5Q‰…¸Rà—‹žEˆ‘¶{ ou'ÄP¼—`_ÿø_þ ýöó'Q"“{Z”nO\u�±ú¨d>5ÔÅ�`=½1}z‹ž6»¨gÜê@ïɧ@‹ë�žÒ©®:¶Áec…‹Ät6§¬—–Ü}ÕØQÞ'ÙäO¥µuEO__=DÝé~ôbEj¬�µ7Ëäõ^–Œ~l‡¸¡Ê³´³òññAû7MÔõÃàŽG*w¹C§˜¶b€µÂÕcª!yKþ„—À~Z� ØëÓ �H}™ãɵû§žQ \ªƒ0žß ÇÏN7Ã}¡�W‘ÎNíêùRð™ô‹ݘ¢nÕ"Ò7ÃÏÚMš²÷2($£Šà#ø[â êö£?¦¯Ê©u[B­‘ØÊØÆì3œÝö¶!õ†�FF°¹¼BC·!�/ØHqÅ�úkIÙÁ:Hd Û œØldz&‡6,~Êâñ ç°‰ü¨˜‰ønD€B4òd¶ceF±IYÒðwZ�s˜£¶ÈâL õ—ðµV@šeˆ¼ádì *âiÐqÞ3~ÛIm&¢:i5 e¾x󠱦 î*UYKxl_ËÌç…JÓŽŸS0¾et³‰^Š\‘S;óyuב}Ÿ,{ûÊ[œ,ƒF+’ Š�PFܵëWW±Ékùl·Õ¶]åoÛ'Ë9uŒUí‘çËòR±mJ§óC“ð—Ζ ±ð’nǧ�BazžÆ‚{4Vî �j²à•&™Œ5oW( úÚ<-‹4$<óÐÚ‹ª„É{TÅûcßPEÜ£=‹í-›Çª¡%ň^Ê}±¤ªÛNo9¦LÇÑÉ¿ùÍKÑSë‘M%>|À¼\¯×€UóжCâÑÌ€�äŸHœ&‘§ƒÐ÷«¿z–,ÏO¤é’*lŠG“™HŠW4C†Sž,TNJKj?õÅͽ¼íÅÿþü$Ü[ìëªÈꋗʶ}`çt²2“ŽA@¶{fD3NY»ò!‰E {.íϪ‚tjZŒåH M�Ä‹¤¾§ù`n!þG|’h©Ø®É“ø@Åfç¶Ò½6RϾòn±Fö ^G’jr¤„Ò¬x­ý)ç–g2sé¦ÿD/jÇŒf@�´$rjÇ\TwVùà-ž÷êи¨–Ø\rÃÁúˡٳ¿ÔwÇ߈¯+¶T¤“ô:ÀMa”¢²âž«ðÍÜLãtŽ†Æª|Nõ›kß—˜ßÛ–¾lÙçÇdÕ¡ÍSâð ||æú]Á:lU�Œåßþ•€ö%ú^bÑžV·²ÕÃozº.¹ƒ ò#b1%ó¬ <¦»A�#f‹-¬Ïåô\�'ëVÙn«£±ß.1 sžª'˳ 2ªYô4–sÙ’Y¿4ã„D’úÛ¯æÛµ{‹è¤è¼Ï;úõGùÄž¨/3zúêiê9ÛY%<Ôãi>¾È/Ç­ºO­ì@a’ 0bÖQ š=±tÔC,6QÏ ¥ IŽgÅ!à¦Kð}Ð~ØÓq‰OjZÌñ{G Ó5fEîR=ÐtKÏÍ¿ù\cj rÀÕq\1¾!fо3½‘h‹I¸Ëm9>Jc&-‘ߨ*±çö+§iÖÅ0õßBŸ�|nÃ\ìܤ[øYG»™cÿ¨bÔØ¹•Ïä_c�A­XÏ®Ê ûsxÊUµ¸ºök õŒÂí4©Çdá·ÿ÷ÿ÷ï÷OJõ´×ÐU"'Ά¾±|)UÕ:<¼/ ¤(ó+.Œ/ö3t3-›°³½üÔcpšÊ)ÐÂO¯4Ý`¶·Ë-/SÀ'œŽyÇi¡Ê¯í\Rs¡žmS›#:t3ñß Vîúæõê üàyösÐïñ¤øYØn‘‹ÚtuK3%��þú%�¦Û£ÈÃÛ),é]óëõfôõxJ¼6ƒ÷Ãô�zZ�×íòŒ�º‹Pç|�Fëë»iHÕ¼Y�­»ÅîÛªhìÖ•² ^d"ŠÓûüŽxo¿•ùÌîilð:ë릣ó:—ñð~›sÊ+ÿÏ·Ò“EÜ¡Hv4Þ`f¿®¨…µ`¢™Õº^ð(§º×÷¼Ä 0òBÂú#ñ¯¿œRÜ> ôPWTžÂ£;\ÊÏ®³äú´=ùÜøò÷_î%†óc-ž’³~)ƒq3.µ™ÐÁ8®C]e™7{¾ÁiÔrÉùÁL‹÷¤ž”o:I�«de-7J‡ ¿È0: ¥©çèaÿlþ I(çû»— rPó$×àò2�¯7Ö¢wÅÂø�d¢3-FÖõ—�2m2§ˆ¥I½âÒŽ‰ôë»cH$ÙÖFÝ"/têe —¹¯Ó˜°U¶­côÒëê%‡Oö²½¤º£å�6»^ÀkhOލT7/ˆÑV6Ü^SF~‘´é ¿')Ý8Zv/}k¶¡3˜ÚóP̈ìé°44šK@"2^wì¹”©(ñ-m´'uØPgd:5Ì#AyG’D#ÙlÕÔ;µ£ãŽ…zøî^b)9zèÁwurz4Óªº€ÛŸµ#Ü„j;‚8B/ÒHMOEDÜ8öÂFžl’( Žý¡Ñ0†ôR¡�„† iÁŠEÏÈ»«šëµ®¹ôïIL‘-# _ƒúË/?ªŠo`^¤¡ä˜qÐ�^ƒ+ƒ_ÛB^CŸÓxz$ñBë›NDz¤ x þcéäÃg]‹�^ƒnÜÍèXQ\$©—§´£g¤¯Ù4hhJcWã³gí[æ—ä™FŠ-×áùºÆÅ">x“Ô8>ߎÚ[éÇS¢�ÖËWçúI“NˈéK”‰ß¡Sʼ¯Ý¼¤Å’U/—›VH‹ôy®|70Yñß�[[æì^»–gâoŸA_[½§O© w/’XÅ2?´mJ"¤Þ–t`)�˜Úëè¸Ã¾HFBJÀŦÒ&•yePÁ) /ð2h·lbŠ›OŽD [Ê©ù¤½÷¼¤)’ô—È¿˜Ÿ×OÄÐåÅë�ªryµ[Þ—0^%«[v CÇ�þõ`­z/±”D=‡ûì_Êï~ êVE=Ä&ß�±ï1Ôæ«GjÅýäc»ÕöÿøQêÿù§Ë_þyÏŸ~üA»Ct4ÓyQ¹ <—8Æ:‚±{¦hP„ÉçÛº*`d±Òoƒ8t\’ô­â3²¨ž{ Ã-öÜ[÷¬¶±]žKÐù+ŸÑÆ4…öÛNØvbÔ/`»¯¾! vZø¬ÂŒ˜„Ó€ß�ܶÔ_"›±¯£|7NhÏn7mÿ�ÏÖòQ=ÿñT­iIáOˆ°Þ£&5¢k·$'ÜÿÀ–ðÏ£KƒoÔ“Ù4·)ÚâAYù÷„WË™:-¼£ÚªG+NƒÞw˜Œ–POH(Ù§RÏ¿úîÊ™¡ùô¸Ÿþ¹{Ý:ëià×$N�d+ŽC[5oŒ£ &¿%§­ÖûošÜ~Ezù(÷ˆ}ºëIÓæ~zóÞ¸D¬8 tö8ñRvf4VºHdÖ*ŠçÐæÑ²�bËì;Òº¨'ðàÀ¸DÏ;JÄ_?Iå:Ò]¥Þ ¹œŒ§Ýn–±�¹†ØFõ…ž¬��Ro~$A™´ NñÙ�ðãÐp²išŠ‹ÙºL®®: ®œ³Ðó13èî…¼ž¢P·xvlö§Â/çÕÁÚèûïÿöoé|*r¼â´]†K•††šNœ¶Ã)‚²ïìoeæóä”h¡—üŽE‡F•‚×÷§õ´lâ&³8ÊNÛÑ(ÅzíÚ·&5ô‹x]OµœY~'E¯,Zr*å'ã0CöųÂ.v¦u�Ïô¿Ø¢!Sº)> h~ÄÐq.šá`aFòˆ/1Ïõ¬l ÈÚMu(ãj§]Ò€*'_˜ýÐ Þ}¨^¨„*ù+4 Nk¶˜–r¬\²ó·À¥Ótèís¥YÞ꼚ƒÜkìÌ/¸úÌéçC|¨Ÿ„p¯$È�<ECe©õï‚ðdÿ|¬7˜ÿë¹l¤ªù]pŠ÷Œ/î[0¿œ¹,Ö¥àQz)Í#jã·ãJÍ3J‡A?Œ ÛÁЇšL¹ Ë <$?à‘õ©ž©muÿž†¢?8•VOùÎyê:ü'õì×S²œ¢š¿b6˜¶v¿¯×»÷˜W¿ø¡Z…Ï€­±Ûu¾O­ÿ›R‹äï—²Ù|½ÀˆÝɘohŒØÝsÓtJõ•ê4û:¼=¼œŠ|ÞïÞÞèQ¿ì¯�æ¬L_ÕÓï ùo×¹ÖÝñA,ÊúA YZZʈÉo%W=­ú«´szz®6ôË«-f3b£îŒKå+¢Mn¦c Ÿà£3+ÿ{�5Ê‘Òb6J°úåÊô^Þë¶yhÚ†óúDI¡ñÄk–A·[CæÍ¼üÞÌòÂöþ¼(mßµD£™ÁžÉ‹‡4xfS¦ñ$¿¶pë�Ë:�ú”¨_ H,‰-w¸½gÚå0*õEÌ´£LîF1±ôGG;vtCÅÒ5rG(·V,îÍy4®äñ €<íµ´t¸´vlkÒËðtÞA0ÔRä$¡Å‘ü?QµŒ}§òë$µV8²îq2z¸z½RÂÎö涇‡Oˆâh©®?ŸOôùwK¿üø¨2¤ú£Â²¤?îŒù7ä#ר^ò,ñò‘mVžâÚ®epÝˈOÑ^Q*Ê?…ë¿$IwwL«é{‘êoÿú¯ét:™úbaêóóF‰uñÉh’Ê<�ÖƒqI§¶æŠéØÃ2c/Õ&Q«„–Û÷õG°�’$0ŽK2e¼×`4›Fp’�3°!¶E‰0¨Ñé•~²7ÿ^ÊÐ0�ñŠ�%¶G}!ýÜ8•d^áÆû#9tÓI%u¸³CþqÖ–í§w~F¨€›ŠÖ³ñ{û™ªíhŠùE©Üò28kP�û±ÐÞšuµ§Hoùf n+¢®ðÄØ=9·¶5öꯈ­ôóQò[Ф†ŠÂtE6äTÆoó�ê܇¶®/…?y¶q¥ï;«¬K“^f£à�5urÉ^.u둱ÿì0Í®žu‚Ó~Û)I¦Ÿ¦ù€<íòÎõ¸DÁÖd;\v¶¶rà^ƒ´x\åQNÅåydh”*@Ã}+¦i÷¸ó[O9·±)Øž…-œæ»Ã;�ÇÑéröyíãöÏ¥ìÅLØ Z!¯ÓÆ?b¼›&õ¶ÕÓNœ‹j‘nñ°° w,Ty�&ߤmÚ·©8•Êj&ñÅ&ì÷+Q›�³SsŽ:oÀåZêo14wÒÓ|=©Ç0j¯Úôc�œ�‹ú|,Àë\Äü·2ûzõÈ5žôŪúíÔ÷ý[å O•c”Ôãt§Kƒ"Op¡ZYõ�œ\£ =^OCý&s.ÿsI=0ëÎøê{&빨´ù:[:#§K¯[‘ÿõ\]ä€bêb‹zÌsÑÏõTs:6³£…þÍŒÓçW=æý]JÌGª±‹â¨2Q6£Õ¬ 8º…+^þ椆<­õUÖ€Gí_ˆ©ˆØ|Swº9S÷V#mü·Óù¶Ç+ì•z æIu3í±`öî¬âÆ¿MºUßÕšå_õàÓãÿÖ3Ì æK�ëiµr¸Égñ€dÄfËÐÒk;¾•íÔ#RåûQ§½ûíÏ–ùÞ{þ]o7ú‡üÓËqÖXmÐç pÓO;§}·³�üûv~sx´)–ÃÎõá(I-dOH~¡â!<›�þ@&ð·NG¦Ç¸î>ÝÁu�µ¹àEL¹cËR)| ž|›F�$”­_Ë‹ÏßbdJ÷Þa�.l Ë1Ý×8Ÿ•"SØHE$�:�X.€´½xF 3¹‚U]�î‹ÑO–‚5Ô¹žv«›xhOÑ8ᢞr)ÅCùaÎÿ EyÆ•¥í@†ö2ÏQüøC]œài´ýII� >€Š/2ÄxŒÆÈÅþüÞtÂéÈxŒÅ>+½›”•x¢á€¨'žÕ‡…]vq¬mîÏaWÌ¢J—"’šŒ¨«û0ògíßhôKƒ“tÍn¿gð逵)°¡ê=~ÿòÀà3éFba_Ϲ²9âe›Þ¸À»Huü†½ºCÀ4 ý@!ÊáÆû ´½­=°ZJ|Ï´Žj,ǽb(@q†ÕÊP€Wëe$5eìÖ†P€Ê¿”$ü$vj.T{¡Ýª˜¥ÝÛ¥]K'»¬& · ºÔÊp (T‘PF­›¥/óœiù#>‹üëÕëÊÀ@û�d²Å•/Sšj¹£þdÈ“[½·}²ü’,û‹m׎;'ÖJÇC' o·êÑAžÞ W [Üb¥ÃT p°4zNÌ < ²ÊHÁr¥µ$J”õß”;˜žÅÓ‹ž ö·\o«£¡àÅȇ$l® }Ä܆Žzö·÷¬pë�‹û¥® £ˆÈÅÔp‹Š�™¶-e7MÒÆ=¡.ÊZë�4Ï{âšu60¸Ã£Ìlþš˜±£¥´¡ ¾u¢tlTu…Mmq�¬ Hi ùr†ç㩴ݵX½¡ÿD]Õ£”Š`ÚÒ“„æ¬z”QAÕwµéÐò€³ßЂ¹­Þ‰üWþäqG¬L4àÃâ¶a²ýIwÐ|‰Â5°\Ã|kˆòpÐ¥QÖÒÄ}õúê@  «ï ­Yüó©Çxûìw_ü»\,‡÷´ÑAÎú[‘¾M¿ø°Ïæ½®vžžyÿeõ«Ž¢t’ÒþW Œ™ÚyfJ_â—®íc€låß’–"R¯Ñé5™'‡‚ë°¼>�!ÏbCܬþ °%VHÔ$ÿ%�5}rÓÀXæ@Ö»)Œ{ ëèXµmû÷Ð{Û$~RŽ ü´ysLϰþ“$Ñ ZsÅäæ,µ ^Í!ìãŒ×L•¡z)Nž» Æx¦Ãøèa@-5Ÿf, Ý$1‡ìʸöÝFÛ‹ƒ¦k–uÔú±+¬3×>=³]á8˜Bý²‚ÍãÆ{bþ�¯ªö¯Ãõ/~Ï{^/éBj*Úœœº9‰_n3T•ÿ„ÏõÕ[ßCÜë-êuËxÈF‡[ëô…•ÿˆûJ#ËX=Ç 9 ‚gì±UÒòI²“ÚÁ¶7wËÐXcØ9vž@¦»�ŸåúϾŸ€÷ŽXa«r›8JñT<E6�®muu~‚ÿGñ<¡Ï_w@ü‡BMùU·ÌpšëRbîñàÉu{/xÌ%Ȉ †_°6}Õjèvžd*u+Kþð8+±'©}ä~�gÚ]Omõ±øv-ãóbQÚf ¿Û#xì1<øjµS‰N#óA´–)À%JDyëú88ÅQO·]п" üy /­ÚUÜ+m·z g:e@,غE¬'�•TwòÁ+r-žIüî=]Ôc§žR›54˜¥î¹W¹(”oj c¸û%<‘¶Ó§¿é0ÿ±hãzºw­Ž?«š|5r¢°mÛ¸×Su‡[gzÚæ¤1ò®*/!¨$––ìÑàÔ5©±ÁÚ¸¹ÝzŒBSv$‰/­lú½W¯òxT' T›vž{•ÇRvö4FšzJ/²æt¤}},Cc\+qšeδ[ËÁiº¦I(�˜–›Þß å¾ W޾µêǽ¨¤Oõ$§0áÈN¯æ×Læ.¦ÐWÕÓž}·bù|TŸ‹§áÖ' r�]y\ =à!E»Lñ½Ó�ã銭mxrp=¥Z�„¬1j_…Uî*þëWc¦§„s=ìÚöW]0‚.;¦Dm1:]«ÓŒy€Êù|R‚º¬ ;/æ„d3Kß=-·¬ólØ¨É ãlÕ�N{^ïGAœŒ–)ó››Ki0üd�õ¿­+b‡†Sä}L$îÚ˜OE~ÖÅx¼^QgêÞ"´°Í þ ±ØÆR«Îƒ(ë15 78»çß.‹Ò}�Ph©ug,þ]Ìâ_šTï‰ÕR<쾟ÕgDm‚ž‘0öÁ™YNú÷j*øhˆ²{õàRÉûKR¤ˆ™×=) ‡ºúÏSñµSûÆ<ì~_P= uQ»YÚN Ý®Î{¨q®§ «'±Æä<£½O|è¡|z—Âך;›kÓ:�{û“S âíâ©zÈ–Œ|þ@NË1/0>mû‚àn·yr²®ýZõmnŸžUÛ i§Chq1ÔËð¨§l²zúsò(oÕ³K^²±ê¸¬úÓ:ÂnYú�ÇÅ~gõ™>½ü*¬uüy:�˜ââ�ƒ ÷ ôüm5Z‹ªÇ�†ôct|²s¹­Èé»àðN?ð2ôšœê;{O4±e÷>`¾! ?¡¦[ãBkmBuñ@8+›‚VFÝ^"µ6bˆvÉø]ÚéÄ÷… �z¦ˆúc¤OFüð€:�-à}AŸüÀ'»'üAC×S±ä—ÅÇÖ"ÍAÍŒœønF“¶å¥_ö™vŸÙKõµzgŸ«þäì'ôüÿˆu�ë:¥ÍÅÄ•KYơۛçMkß-ï> oÏ‹t2a3â’� p°…lYµ’qZ¤ëûúFÅ/̳"­¿ïßô ³·"—ðLTP3Z'JŠ– $õ–– Þ9Kh¸Ýd½¨,®Ù"[<2Üž$G û« h–ôùq9Ùá–„ØgܤKñ°ôÏ4µjq;.î7k,âÄÞÊXœ^^­ÏÚgz*í¶ž<#9Þ8 qL«¨) ªšžÉ�AÄ#ƒkûÙñdÂ'{“ìW“Åqob$oâÇ3tg˜$´SÙ^ˆ2M®ãÃct»<»Ð¤õ�<èÓWy¨†j0cɶM:dK¬]oà¶Wå-nˆ˜Èž¾Û× 1~££u‘¢PT?ã5üÛ�­Õñcm#íõq¬WZ‘Ú¶ønøðDÖel”¬*îÞ>7Ü›ädÔj|"q,„š*5èù>(݈2�›V^Ü _Ö!‚-Žg�Jhö�±Ej¶¸IDaÙ­íµƒêµ‘Pª§«­¥ÄÖu@z{%YÝ*í/kŽ(ÌI´3±H}�ýᙵ™¡]õúôEÙ÷-ë1›û–>K­Ž3=º”�†~jzEË<Ë—MþK\€œÜf¶<šÓŽŒ:u¯ô ÿry%«¦|Ë!?÷Q¾²�ç¾�:OHÌ'ë$æ/föÚÊàúyéâÎÄù€!æ:ŸŠMwKäÉÒbÖR•ýH÷ªÌVÆ õ™£˜õ�á�à÷=bÝ•Ó[LïtEž;�+Ö 8ë3í¡‚Œù;ðïêYO‡Ó'š+=”ÇL~{Íw [Ê×—à{éGõPªÇÌ ì[Æ'´Ë?ѯôRzˆñ¡+²Ó¿ ¹üVžÏS^?¼PbÐñ‚˜M3b&ê)°;hò1–jÌ»øÆ�Zé½"¥IO]Õ- .<ùË?#6Ù/s—ͤuL4¶Þâ·è+}þ\NÛå·Üòîž›ÛN/<@e-1åR–êù¼ã;»¥xííÃSç Oluð žbïê�ƒØMüçB–¯ÿs�qùêûz˜‚Õc¢nö°ƒÐS¢!zªÓÛBy mÛÙƒÊï»z¤¢_JÆA³•_çÃé©ÁõtlÈø•5Æ™Õxfk•¯ð4z+ðx v±ë%ÄÖYÃ)ÉðEÌÏýTï�_Þ ×_âº-'=Eùêá2ÇØ\ïèN»�‹¾súho@\̓ÒhõmYúS?±ÚêžÞ÷GëãËIj9ܪþ�¿”¥Lë4ƒz©Ÿ@ìGñ|ªxÕX\Åšo§ÃîÏá�Z<Ѩ÷(Ú«ÇF ;ØÄ˜“grb í4Â)Â2èo%æÿ¶/sŠõ~!õN‡½]Ëÿ®™zm¨å'k½,e÷@ÞÅþí^Åi/¡±šà (z <¿d…~>ÁÓBî 'ÅÇþÖ7 „ŽZõÌÓñy,®[J±�Þ·hŒ¶�Å£“Ïq_ÅC`‡˜‹|b5Òtò&m EôsÕ¤s8O½¶<Æéã'ÄþÃéŸ,ÍÖ™¥Ò—û±Ï6O¾ýI´u!½@�.E€—m~°¡ �äó£p*   ð B¯ØËeÑXˆ‰'`˜Ëd “žzx’¾.I`s®ŽÒêù9k (\ÀO³êq#v³Äì¡ê:3ÄÚ2Z½ÒÁê˜Ò~�;#öðz ó¤õ¬öù‹ÀóMä‰Ö‡úٯƦ´fiM¿¦å‹Ã•ì<;ð‹ÆJ¬ª/±ªãÉj–>N •6¢Ï`„šçª^1>•œZ°N�õTäù1ž/í-™Žõ¶z¤�V=µ¾Ô?E¹„}¹à5綨¾y-ÕÅ,Ä~.Ó3Ia(» µ¿<ï&|©qÇ}ô´XA/õ\cœšz†@©ºHÛ6älð_�ïK�Ú×¾vÊÜT0éÏÔ/xÍáKÖñØß¸qÆhC÷�´Öî_f&.¤ŽMÈÒâbË¿˜"Þ;ñ‚‘zŒèÓTOÿíŸU�¥7RNo߯ådw#M›öÔd­VÍøv³‚ÒS[´ßûs�&æû[ï¾ øÅª™ xúmü^-Ky}�9ÐÛ6i?0;l±ë‚šžà:¹†Ø�•� 7xn�5 ÊÎ P=uÝœ’[ù¿‹u0½UÏÇÓÝÔWÙLªõê›ýœ:¨šGˆ>8Z$ZÎ¥C³9ÅXùIJÜžy'3ߎ*!â_ùmû�g¢Ã¾-˜4žXÌ¢ t�o|à½ëöæ½â‹Çwõ¬ÆãóIéPú¹�~G£à/ óMcÉ\b5o�žþÀfÙ턯r µ·«+ôçã3½¯«T;î7W[~G1¼«ã¡gp«»ÃG Y†ç3£îpO�â©c¬Þ1/»°xbPOœ]ý@é¨ýjß}íj*KV¦~rÏæO˳§DLn7ݶk`èd¸mûÑ`Ö†&ø[\¬dЉ%yE )¾/Âq/©¦�qëÉjf_V›�Ë¿;q‚gh§n ’Ç]̯GzÒäa´Šƒé»å‰Ê+DΪ¾b2ìÂé®vÇŽƒ$0S¨¨IÝ4ÕÂr»/úHzï°Þ&€Ù[LÿÔâYÞ§y™Üpß2CÛ~ÖŒDÆ ÙÖàµ-%å� [_�?˜'�áâß3\’¥;íM#Šk^ N)‡WmÕ—¬¹¥^3•2FKì°IÕ½­ýV0Xc�Ÿ’1˜&�ŒHÅ«rïEÑú/Cƒ&¦Šg“™®§�‡©‘©f j6»É®]°®Ó8–eŠ}$ƒ‘ó ýgÀ;VþGz,ò[ÕâÕhö;S~}±«ÍcvfëX¿(¯ØÓ’ëÑCo&+¬~à=¢šÇŸ¶âìǽµÖí5Ë÷ܧÅâ¶o–2ûß±FÐ¥ê &ç�Ž7ÕPˆ FÆME‡¶û,E¨›J¾¦ˆì}ñïOmñ/Q:kcþeÉ™tR`‰_èê�(ŸÒÈà—È2FÍy0?OÊ›}nFZƒm‹ÑQ¾?¯îÛ ý=Ò¯¤vš}$j& ÍEü9"ú;’Âs¯-G…C�NœŸT‹#›ûTþ}}Íú�] ÈHm—GÈ1±cQ‹E?.áèÕé画ã¤ãÄ¿³ûYŠ–Ã¡çÕ;`Yy§ê'êL�£Í¿‚!R•}ÀlQþÝÉ”s6;ô‘ÙË\J¯"J‡š�©Íݬ¶ç§Òn"ð/˜t-g‹fæ¼àÃøˆa¯wrÀÙ8‹§3I“…]ç³ N§"5ÿ/µWÿú”µSq&�cx]ciuO7g“ÞDk/ÿì~‘�(ðK�GÄ2þ¯ù1÷B­¾‹Mäu3“_Ìâ˜%�Tâ›áÃî()Ålú¥xNÑo,mnžf2ó{Aže›çÅåë-.=|Ÿ¼dÖŽ™¼ý·Äâkñ ÚwÚ·gï—RV=¾tR(ð´;ë©w îŒSsxrÔà áqFˆm„tÆócÃMIÏù1ˆÔ-|‚à.óŒÍ`Z þN?oåþ]wx èâÑ~ãv£»èú²5£¬w% Ê�q± EÖ÷B�éóºgð[‰ù _9ãp.§./_ð¬{汇6ËÆÀ†¿õxlZJw¾ÕãB=qj¬ÀóÍÃ\à™öVè&wãYVû¶ÑLŸÉæhVødúàíÈf´€¨Geô4#OËÈÓz�-|Âùuø,ziïêkû÷ãR Áõî—ï­²‚:趨yË£wÄHûî°VÈ;#ö—pˆ™ˆc­äv2xmž6{pZï—¦ùÌl@~@N!g|sj’*½ÕcùRžñWñÜÓ(êP+çÒ�AÕuQ=v9ÿ.·Ì}[Qö’–ZxŽ�/NgÚS÷ ª^CÍOÈð±wó­Ÿ yÔcµïøLõÔŸ ­e²“Šù±Ê>KPŒIclÞŠ¦P�ÜäÎ(UÜ}¼6ÔÖ¢J(eö½#°œê'ðèjå&JËÖ~yôŒãh—Z-. u²�fœ0u¦2A·åVFåti…öÅ¿Àg¿ìI2ר– úµ-þýM·ø— ë‡;œRË+b)Ï”±N›vbãEù{‘³Ú!k+´úÆÏЗ æ-3—¨<�ÀOê�¨1…Ëé”~!q×s�27[猸ôüTÕ gb—ÕQ>„†lvMO]V; ž�ó=³Æc‹:4WGç· æ®ìæ#*—Š ¼�÷©âYYt—Þkhóp,úðÊkÞàÙr½ýÞD{¿ß§�î ÅW%�UŠ2cneú=HÔù‘‰•VîK[l®IÆ xpÓE=}NÞpÍðô[¢ç©P�È©ïp¬ßC¯&¸Â±‡nÅŒ}ËWaÔ›º¬®A/ =}­àQ§Lþöhý�nƒßù´ç_ Þ ¿®ƒSÞå„SÝ«wÁaŸ·îö°è=u>5ºu"r�NðH»bÞ;GµÙi”�´Ç¤”vúõç)¶Wl§^oW+4夕¯sÏÒl< ï*Î�' ¾»o¥Üù^àÌ0< Îxƒ'›z¶iÒ&®0?o7Jcþ¤ï‘U/@è¦_¨Iу+€žeÿ%e¾ÿ�å‰O]ž¸•�ÁÝÃŒ7Oá"×?ÅþœcxÕ�ª¾5–¨ÑÛGr7U×Ñh}¢^@î¿A¼—ßÂyì´7œ¶~Ð?Õ?!Ó.§è3ýàî'Æ¥N‡�k™ož0¾7œÂîÐô�ÿãøŽùé$‰‚¡Mï—qz€ù5éýAÕñÃ-†vlûµ›&ÿ tûŸà¹;5*(¦Ã-ŽÃÕÏ4Œ–‹Éj÷’dC9ÕÊñ%Ó¡!¦O¦vÖâ–ü_ìƒ-ÿšN:(Ç ÛWû\ûÕ-Ó'8¤î)†>z�}B³ƒ\c†/Sd8\“iWLýP7²WFòÌÐt³Gn}uMÊn–† 8j9ÌŒËÒFŒ.0†mOPVé˜ða§Ä:p–/8ACÂ/9ùiYœcÍ¡·@�6«·Ë«aSЄšgÿ\±ß7““çÆbЀ~V~´üG¿£çv¬õå‘o¹�4žFwʇڿ6�»zÖWÁB™¾B) K>󛽄vxYÙ º7âäÛ()Š«�ÈUžüiÚ¡XdÚ[à~ݩբ.ÔoÒf3œÀrDHô³ùu*·§Jš´ž¡­å”›1÷À¶©$lüô;äÓKTrÉú¥Ì`éb¹q¶edÔCª}ñZ/)oKÄÃ�¦îöþ‹¡wœ¼�Tz?¬­Ae<7z9ãyËìùÎ�ý~ !…~àÈGIaw¯ 4¹½"æß¾ÐIÇ©Åü;§Ø&\v8­Uœ,²B ù”ÒúÕõÁþ&Em­Z"rló x­}ò(“S)…Ž1ÚËKÏ5/q�GHÈ.|kí‘'0=9  ÑSži�d…iBº(òrC ¶Sý#™ôCã Äh† Öå õ$WÇ‘ýµ5_ÑÖ<ƒœ‘ꕊ–Öþ?…íÆ+ø³mÇÆ¾RUÓ(Ô#1hK£gã“™RÇfŠ«±Á]ÂøT|GmEà6ß¶ÇOhÄ4Þ�^ëIzÖ¢¿T—P?¶N' ¹WU;tòx[$òW¾¦s´xûQzIf9‘G!²­F¼¢ŽÖ´ÊXþíµ1b†àïL®ÕÉ -„ם𧰨ÂTûlhW_/qxcDŸ#MʼnÊJŸAI˜€íšEfÒ:£Ãq‡$y¯Dc âT/(!þú°º£ ž±v”ê(Å…‚îÚZj‡¿|”üû�ìPÊWY’ç�²$/¿âTÖ_ÞÜmÒ€ÓRy²FßUÖŸ{=>ÿ[ô[š_XŠ?#Æ×dð²Ú_= þP–ô×ù7å~~ôƒþT[¯trÞ‹¥ÑOÅ–¦¿°¥ ð¬úŸ¯¥ü¯XBgxTž€×#k•Y «T°³Dº3§± ±CµÂ“mÚ\?vxº%üèaoãô6{Y|£8èÖÓªV¿Ä úÞÚ™´_O¼×�¥Ä”ªA@bz”Ø„túµçÛúbãywO8­“¢Ç¬îì�ò-‘ÎSNAê–Ôê©Çé]é\ºa5ÁüÜ‹½–o¬Ñê’fêñ’ÑÌ‚¿D~-¹—w£�…Ríê’j*È×Zåµli­—_ ¡Ó¬1ÕNcX;€N’3½ƒ¿fNàTq¦„ ê ·û'§8««”=Ƶ²S}ù�§kåSýÔMŠgŽ@þ§<ñÔs[ÙÓ±7Э€ñœn]jž²¾1˜®Åˆ`ëOdòôØ= 6¾Ÿú‹ŒÃά Ò.–ÏÀ<éNRÀó§LW�Ce%Ýš\Õãq°Å¸C,+\ â)àX<ªc|‰òd:ékºK�ÌU�QÏ@«ÏÔ»"ÿmé`EãìÒ\ ´z®6Oèæ‚'âAí¿wðÛ÷öþIð vë‘}É­ò í±4ÙÉt8 ±Ñø$ÞΜ€§ê n;¹ÖK§B«;ÞâÔ••™ýg“ëï2+~çÕëó úv}ÄÚüÅ‚m¤0:_i³�6èÆçGÅ¿›«û`ïéiªÜr‡§)ì÷:}5-˰žíÃ.'û8™oÃê y½¿¥Ç¾°Æûg³D^W¼„x(¹{Xíâ=“$0Ü>׆Žzؼtèz½Ñ?þéO»7acÌççøÏ~¹ÃÍJ£oUVÏ . ëdN…¯í²¨z@õ‚k¬´¨Ó©<2VxÈT�Á“P' ¦Ýù�X”§Ù€×xFÛ‚éó±Ú§Wà[ /‹Æ\'¼›dàZs‚}POŒ»žÖ<÷³v¥|@°O#Õ#Õà`ÛuØmÿ_ÊÂßó²M#2E�ÃQό̠z”Íð(]sx™ŸE³Þu�é$8ÒÓÔh=}öÎÎnRì Q)?#ˆ× §–Ÿ<6Ž5“S …‰œ1µ öt�ªB›�¼žàYö…ÐËSQLù ‹üvbåÿ…†b]µiÜçGy¶`°sQ§Ï-t@?opÚÀ¯—¢sÎà=•yÂ-ª^£m4×N/ð=óõç¹ÈÍò¥ìùó£”}ÿB¥‰ÆüÈ ?¥Ã²”Ma•ÃúZq .2\YÛAæ ¥Î:™¬þnôŠ"{¾9¿ß}˜mScpnQ™´_п[x}Ó~-“TZ¨ˆ ÿ‹Ò½¨ßïYæØxxC¿®–]žÍøžúb]š¸,֯‡åJ+Q÷âTLjÖl4lëÄ—·¸xg@&kÉõ¾£y&á÷÷$7v¦_/Éðz©œýõOž¢-ªp-½me#OUlü–0eí.‰¶™ÁšÊu'ÿI³µ_>�)ôÑ<äØXÕM ¼q†2iòÄìØ4VãäÊÏÐ]:ˆëAïõ$FNvÿ¨n<94'”ú‹r ”›ªÔum“Š—´ñ#õ’±Ý�Ø­a*ŸE'/;ChŽ3eª¢Iƒv_$v?Çâ«xŒ�ZÕß³NЧ2jCŒ »-­!NÐwð鹜q ¹ƒ,í\àÃtÐõShÔù!e�,a€$ÔÓ¡öÕØŸCv¥¨‹îa¯Éû‘á3õ‹Ì­C’Ì\ÌŽ‡Ý…·-fS›úËMé¢Ë×õJÿÿFióï©(ïuÑ-mÈš²š4^e%îÇ”³òL ŠC¹�.N ätl¹‡¨O`»aåßC{C4•oÃGzO®ŸQøš¬Å˜†òöªèU®j?ª£41ÑQŒGä—ºf½@ûF»6²Q téòñT8)QeÎö†¦„:Þµøì¾K±ÝDFyúK“—¬–éìi´Ó ÛY¼ââœ-ö4eª;<ÏÿêëÃAC¯à ¡œ˜iA}ýyVQ¸$ ÂÔ�A6ãáæ a{�\-éáhþÞöÚ¡q¬·^±™‚£rZæX¯ d;0­ôS”VšÉ-|ì—{�_v´tãcÍý¥‚'á®éi�?”ñ åLŸíô=N‡ÄÀtb™xÉõ ‘m“Ý#1eÝôwô¢ç#üÀ¨ö+(÷ÜÖÏX%4éÀ×€u‹jPû O, Ë£lñÇ £Á;tËpÞ^ˆñ¶'LhÌžpWHh€Ç=%ðËÕalQÉ;<Û±‡û_qÄáz£:¶‡šÑÈl€wt¡námKëèôµçóTŽí”îcxÔ�›ïeÐqÚ¬îìr ºs/u«¢ý)[ꂽÄé£p†|–ò²OÇi*ž”˵xlM? 6%x(mGÅúÌ.Š�àaµ–-y”u»ÇÆ–6O†­O§Ñ)É€ãv�ØüÄ2R�8þ—?zÓ-åÎðˆ<Ããƒr.Õ³zFÚ Ú¸]�[ b“:~MhïvmÏÔzr“P^r¿Rš”÷�çŸÔ˜t²(aØÉ¼¼á4ëë�2©Ócç©lÊ;<{6OÒmÜ7�Ù]ÞÌ?9y™¬k§bN8%WõÈ~ì’ÀÃ2™ Å,õ ›¯h÷bÊ1Y+¾÷KÙóUõRj6Vxìi°!õh˜ósÆ)Õ·ó¸íÔnxºœL° +A) <”x‚GæÏÞui}ÝŸë8³Sõ¸iªÅëK Q]$›ˆ©1ßÂiîƒc&C÷¸MøNË®Mäë—Òîé :�õŽ!Bÿ~g ÿ1*UŽãÔM=ÛÞ—òbòç_Jñó |àù»âÚäMèp†¬¨N4&§ŸóÓ‰{ü€dã$Á„zŒ¯“›dQ˜Úqõ°TÆxå-©gÝ|þųÊñ€�×bBú«GåΧnCdÐgõ(>A,³çc[ƒm\}¢±ÓÔSH]af÷!±Ýt* ³?A[¨¯Ê ù+øçÒN[¶»¸Ñr í.p]˜+²ÚñÃ-PTq*|9Qñ0W‡ÄN³]«§´W1�î…OçDÁmè@Ïn±ýêØoíNç]nÖU=ô‹^yIáX\l_V)zû ½¾.9ž«ÎA§IZ§vÎ�9\ïö´a[§ÑB‘¯+b=añï?ýéŸö˜:¼Cmõ]ýßýí_}«›�‚Ç\ŠJ¨Øï{ýrcUÏ�ÂË‘ l:l†�ÿ®zá½Äð™N���SúdñDm:º´;cš¶Øá}ª¿<ŽvѯÆZ5ch¡­{ý°EZÑœŒÆ™\ìÇÝž‚PIÁµæúf6ÚL!>­›{ºêb¡{3ÂØ‘×*ûxC¯Í8-^å^ý)k?ô4F&?ͯ-äžË¾;ßíÌųvYÚy‹úôYýÚèV±O÷yAF ?Eª)ÊÌYcÐÍ“iùu5@õ×S)7;Þøä]3G£çéŽ/¾ÎøbfÑÓÁëé£ ˜rû£±î‚‡·zXΪ'ÑŽˆ�4Æälm|¨È}hqë#Pä»qxgÌßosÑ—AŒF¥uª¤x ‹�ëµ<ŸØšÉŠ›NÃÔ�|úâ[<>�¾å¯<¨æ{Éx;ý÷uŸ<�FPãÑL××r*ˆ>¯Å¶þxϹÈ|×䚌‰MŸöû¹tLL,ÑöúNü%ãIŠòo˜¿}I™÷.8Íù¤|¦sCñËOŸ€ûƒÙáûôcýQÇÒ2°/ÒbÆ]p:ø¯1ïKàû_!–áý³ôïz u�%YìÍúàr.ùïðÀûúD¿‡ƒg§¦/Äê{C¬Ô(ÞµK“É=W›gNa1€P²èÙÒ„Ó¼œ cþöÕžE›Ó–¯§h¨|ØÁÇcÂkåêLÖ[s»ÿ ˜—ÙCŽíUôÂ/_ÕŬð~÷–5A'¬Õp‰Ó™“NgŒÜ=OV“8¬%ÿÍÊþÞ�?%–íè~”\¹ˆ·<é‹aW«™íõò-H@Ä4K­Wèç`Û_;ðð—Vש¿Ü?W¸#Û­uÉúDáyÔζ�H›lvÓ%ö}©[<�äa‡^lO‹'4 hyž0kœuÒ¨^3&9ZÒ?­³*î5ܰ» .Ú±<ë¶–xî0YXl*N,GSý‹´¿DÇ4pã˦¼['WY³Í º|¶…�¾à&Æ=ŠÆÓFÚZ¥‘îIÚ›ôÚÊ¿˜ÖÄXÒ¡h»<Ó ºtÀ>~`¨c'gU¿IN÷a’V�‚n�ƒòÙ *MóQ}‹??g×ãLª1ð0SÐnèßã…¥å´ø�|¬û\»’N$Ü\Ë£V“!ùÆ _‚XÂØÅÝ×€P2¦ H³âç’ÉãpÝ!â‹Sפ#«>CõW¸7¶eÑ‘DNí˜õˆZœÛoÝ'"ÿ‘ÜkÞSâøÏÆ`³eâ­kEëº{þ½¶ø·yþm‹í³_å�ç:kÔ�öka„x¨2€Õ+ˆ>æB›‘¾Æ -¦§.F7�¨¼P‹’]ä¤ !>c`~Í8ŽìΜe[.´RÇN‚ p;¸g›ÓèmÓ˜Êý ¶E-æ=×5'þìÆ¨nØà©´ nú4¨ ·h_E]\_Ò!íUï?fü)îÔóÒ“då¿{@” ¢ä(ÆÅ¿î5ì_™9:Õ„½¦ö*< cÂ}±î:Ë8ì¢Ñ×GîÁDü�8~$®ª¯ôÚʨV’¨.q]Ñ_-^gºÝöé•áîÌ¿ÐPýt¦[ÅÍÍ9Û�U=9#ÕülSÀ‹S�húÊ—冧”BUÏ›üfs3|)}£iúKâ;Ç1©B¹ZÖ4ùŽ3,1ûiWj«mU7¦–]£P¸ç‰G9÷´7�ü&Á Ie§Üw¶vEã'Sqþ‘P<ðV8XšÎg‰Á'!T�œJl4~ü(Ä`\ÞáÁö<‹.ð Á±/r+£Á5˜:­±à±:ØN "Õ)å|†Ë–  ßàùs¹˜DŽÒ»tið…Àâ+F¿Ÿ# Ž¥þ Kñ�;�YÁZy ƒÆ”Z¥¸CjSä¼�/°r\Oe<#¶Ñgñ “ÿX¿*ÝËóõ×ÛgúCÐ(êÉTøàÑ9¿yýI¹Æ’�à¡Ä÷Ò¾ È‹lž‹[?Þ>�GYâæ)kò‡;ð14ršmt:o sF_÷\5¯iòH`—.Y~«tiVt:º>îÅ“ñ|×é(Õ+Ïë¤L’>VmÙ®ÝzåÚo0cW 8›YÊŽŸ ô=^￯[‚¯Veêãþhj–ŽyªJ¹K3<íÜ)›²;niÂiÐô êŸà§�W�á²NŘôáÏsi;£»¯šƒëä�Û=.÷IÄì•=ªVš¨Ç¶t·X§ûK“\Q_c¢âø2xV <ÁX·Ð¢G±îLát>¹” ûé’»Þ(žŠ ø Ïm©ÈÐçøq‚'â»u«wy@ÿ³”}ÌÄí4»½Ü#Û›j3B�ñ:a§]ÎÐçzÜ,}€.7W}÷ØärJh© ”.†m§Ì~ÿ7Õã¢O�wüÔ“ãw�þŸ±ÅºNç®Ñ~œJÖ;o¹‡:ð„ǯÍ3µª6½©Í6ùžàj´NC Ó=½òý9Á³~x(S¯Þ68JþI7ÂjÌ¡ ùå4bZ=%d.ö�ª�seÉðdÛ=ÔvzÓ÷úÁÅi‹‘¹ã£§åÖa¶'S)å8ih=Öøo–Ä“Æ~«§óÚ)ÐÚ.0Ÿ±õ^׊€öŒàD�·"׎*ÚÝH‘Ž¿žÚÇætY±ˆ�è¤uZÔÄÒÝÙ_ŠÌâ5s=w Ã<%‡'o~üã÷â߂ſRÎËi=…x[üû›mñz§z¦cáHÛm½.¿p�ÓÈ…¼�¿Ž¶ó¸;®Ò’òÁÜ×P™qGliì W[Ju Mª²@èu™ªèïp°!°ØNˆ<}‘mÅÛ=Ãÿy½Π{2¬â²|6Id¯‹Z‘¾rc?ܛٳ7ñ°Tì,Ù©`Á³fçŠÞë)n@HÄ?êiÛŸ òê‰F¦jO�y°åÚ�¡ÏñÐk}‰0Û}›AþÅBdÊæ¤dIjLé;–¸ê��¬UúÈŠKÌó9ÜådeÙ•èÖ'‰CËÃ4&{Õ÷†õ=¿ÐëI"^äÅOz–ªC¥×åçÀd=ë6Ì�ïl|Ø‹ÿ%xˆç‰´üè�G;~–ÖD½æc¼ä Ÿ%-oØrœÍó ±âë~Š4·¡^½Ù6�ÆAÆ1ÂÒ:aQ‰'÷6ž�ôU$ÇåHføw?èS›þI»§œ'^¹·cZ©Ã±�>�¿Ú)±›;¥`Z{8à Iò»æ’pÃg΂¹5òSü, ¯ª©ÿúÿüÇ=Ÿÿê;Hï¿íTŸþwl-�àÉõg@ù#¤ïòŸ8½÷xШ‹Èà”²³gÑ9ØûÓuœ~ÉöÔ×lâcŸUt¤/«x+ý•Ûd™ôõuÅöŽ_Š×Zå'bþ(Ÿ¥0N÷ä÷ÒðòßàiùG,ÅFôgÄT«Ab¸áfð�×u‡Ó{éwçÈ‘-’íuL�?Wž?÷ÂqrNÆ‘)Еwõ“»®þVšvÄŸœX×éx´ü¶$íã÷UèÊ7G3y}®h[ŸMˆQV=• œð#ÆmÁ8Pùzz2v¤EÔ³ËxšnÅ>{ŒKó1ÇÔ¶»÷gƒûùF”Z%�ÊvpOV#qÝéÖø]Šß~ªn\è’| 'Ã|�Vø]·˜‚¼‘Wct¬ž^ªô¹Â“ìms¯º@OÝ ½ø¼xÜK,úoñÜðÂ)Sûç ±#å·²ÎïE[Ê ¾ÂŽÇ² ÿ�0>=|™÷¢×vÁ­x cñ@ÙÆCcäôTßé–úv*hÿÁPìíàÔW9�ª*nØaÛ<%DÇ ¤(ñ{ƒçà§RÃó—¿åêF õÔ£p?�xKªpÞÞPÍ=°å6•¥ þ_ï¿Nô|CZ‹O ¯«|=¤XùãÄ.ªÕ;Ô.(¨ò7ÁBMÝ™s[·›‡±ò9NãÕSrkÇn øNà‘&7/nÙàf&ëéyZÌ_PÂ^�Çæi õû“pZô‚±“5 ’„ö¤ÎJ@ç¨æ]î™ÄȽâ¼Há'†è´×¹Í;>ðç}%Ûß*bNeÝÚÊïŠXœS==‡ëDb(+üÚL)Ëêq`ÄOyÑ/ ÐÆT3¸óجŸå£ðœjchõvÓÃ;rÁñŽ3<%WfÇ‚/JyÕ'Fi4� {Ñ£WÈ�Æâãªó­Ë ÁÓj?S®Q‘òå‰âù¹�¯z2`çzý*eÖo{Û<ÿþËŸv¯­hþöj"5Æà~àÇ_ÿ5½ŸÊ)æ4‰ï[í#ìè"œ3Ðêü(SæâV‚Êo9e:¶�ê7€æÞîñhìN7.øÝìoÜFŽF '·rª#�ƒÞ<ß¶üKÖ5XWøhY{¬)|KÞÚ�çà¥Ä bœR£Ž„S¨§P•Ó*©îÌÒ¹œÆK“Ÿ„-‡¯)¿ïÞ0h ‹oŒcßv�¾„Þûq6ûöäû…ØP²ÂCéíËÃ?!Ö�Ϙêi4il°Õ#Ç‘ƒ‰ÜÊ‚j·0V ~ã÷ÐíÏ¥0N½k[+u¬ÏA=ìcé�Vr‹LìMµhlÂÁV–à´çùFLŸ+øð×?¼.rSWÑûÇ’Æ–ª‹œ#ŒAoy·=øÎ�ß5–#ž4mÒî1±Dà€–Œ¥øï {_ðtÑ »‡—tAB4–?ÌÖSæý9”¢LØÒ€<¯×¯1ïvO«½Ü¥àû€ÀàôbÖÓÀGú@÷ ðî?‘o,³}ѬžjBÃÔ�£më…dyLc†Ácoº¾õ‡Æ|��„çù¬¡†¶“›®¤ 1î4vÖª1ˆVxN[^"#Ïk³ŠMËeÜ˜Š¾,‡yªÇ§�©b:åV;‹‹•k1¡õ4åÃÄɤµ4*è/k¬Ð®ªê¥Õè "wjwÔ/GIcÌÞƒ‡³z|~Ásá|>†ZîÝû¯ÆnT�@r¨L[lF¡â»%õ4TOgí~ðÔõÞ£jñ!:M4LŒÃx|«•�¨÷m‚§úúÏEßLoÍÓVŒ½cµ‹jyöH!dO˜ây¶.E¿N“z^ãÔpÉ·Ð+4.»á+N©�'&&Ò#d‚¾^=ãO˜ï¬“ŒÛ¬×æªz&%µ¶"8¥^æ[¡×z)ô» ÖËcÆT§Ê²~ªìÈNo„eÙ�É^ŽŠÇÝŽIŸNÅsl]Ês i¬úh?=S¶38Uî·‚?_ pQD4F¨Á2›=•GÙüø^üûÏå³_p"<õüÓÅ¿x/§øÉp©(•ß$Èd¹P‡Ñ+äñ„ñ:Q9õü�óaÙ%.ž7Üvàc»I7ÓÇú¡Kô0¯13yõÄ ßrs‚þXñrྜîêøëî×àvÁ—'ËûcÏÕSœ®N³¦Æü[B°Å;ìåÙÎËÙbœ�k�¹¶¥ÙÍ õ‚AÓÝ6V vuh �ÍúáÑ>Í�ç_h²ÆÍ#&ßbkgÆ{Ìr÷ ˆÆ†^}ùòÐ Šz4/LÝüP¼¬×i´ôÒ5ŸK…Ç=—ÊðÓÓ=·Ói7ιœOE^ÙуœlÓð]}Á<.«ÇŽ_Nn—úÁÅ Óx„"¦?\Êï�(¡»a}?Ü/'u¼¿ëk†ù€Ëâ­°/˜Öhl;¹éØ‹§ùˆyUïPžêiܸ?? ¿=N¾Æe)vàòðè:×ùekWrÑ(ÅNXðº³ëóí½ìÛuèï$ u±ÕsúœA¿;Þx�:ý€Çû æœêÕËohèj<­.Vµÿˆ¯Í¨o_­�TO¿3ì™zRN`˜wèÕÍ.X½8ãË’µòEyöö=oÜP½b¡N[ïEo¬gOÕ÷¯Òþ—oSâSóòÛÒ Ÿð\啽FÞÐþùêíá úé¬1:õ5ã°û¹ó'SÕÓŽ~9†÷šËü(zæa]½Þmè5ÎÊ4ú 1ø.'OW&rÓÔ†dù‰§AßP^í_”÷Ü«'ß⨞´'Ì×XûÉÞÞš«'ã15V¥â§žªâ[û¥bý0¶ å�É{ _ã°fú˜M!£>0¸BïJˆ¹ý†Ó«› hkM!í¯ì˜E͵cV•“—F± Dý [Òü%Öàp‹È™1ÿ›1‡²v€âî¹µ•äãï~õ¢³ÒrпH·_­!‡*'F¸±Nf>tiZoS![ü“^}ü®ñÖ1HyÛ(Ü7ÊÛ1‚űO*#lDW RÍNßÄ“þi{`÷â™`ð!@»ú‹ÿïeú[¹èð <.u}†�tý¾#;JK¶0øw�‹zŽìˉk'ë ×–—Æ0Øefx=ª³ŒÌ¦®ã'˺V†3]5„eiŽ Añ„Á…ý_-À•2˜þ²”€±òkp…g݇6C ˜qáêt‰c;êbtovšÝ±. ž;¼ÊVUø„´Nš¬’+Ïñ Vó~‡=hæ1ôi¨|fó&Š :aç@v\Ìc‹§ÍX;Êž�*ç§,4ÐMBÎë§­(7½#õ¡ `ú§$ÙXó÷¾ø‡Ó~3jÚþÖÅ¿·Kg\ ¤¯}ÀsV ”¥åÞsÌÐ #ü¶ôCd ÿœŸý”CåYƒjfn#lv„ [ÝcŠ9 ˆé޽·øÀ~ †¬\s›Â JTAóŒÝ•õÚs_±¥8?©žL}>ÅOˆã<$KVÏ4̵·ÏC±qzƒm/%He†Šiͬ€Õ“–];”Oùx,zVKÄ|Éð�O 0-æ¦ÔHÿl\jlS%®ë§ÕaÜçuSêeà™$s½ �~bS^L?l٬͎¥ÂÔíP ÙAäÈã s;Sƒyã(•q~Rˆ•§rFK’áfÚ³úIùlDmÜ UƘ–È™BÊQ¢OÃcCkmWÈë Ó©Ö3#_9šéŸ:‡‘ïo�:×kËÃvÙGçBä¢Ó[!ñçßý�c0QÙ•“Ú1§5ô”7Ý™¿¼—Žÿü‰`ó5ñç¸4üómÏßcÑíÕ±ÃOÞ£‹ùsÏxZ5M§žC?<‡ķ¹ìPRçIiòx‹5ÏŸþ7åÑù7¢d²ËSñ¨Y· ‡[Ux,ª?o0¹æ›, èÀœ)»X:iŸ|<¸ó<=­ÛÒ€ìõT^ë!áp•™m;F?Osñ$šá±¢â¡¬~†c±àtÌOœy>×.õôœâËПÓyÙyy?M·Ûoã)v¢=šL̾¨û�“ê,i]nÙµ ›2[j#ÆÖ3׌5øœíR7˜mTVÄ.¡T¹ƒ|Çnz ,°é|¢l((ËëiÈ;2öÃc;ýsÝ‚ËHù°à[«©¼qÁ§Û´�ªGìÚâúEE®ÅÓ4$“ IÄÞ¾^EÉ:G�ÀÔ,ã³èø/%¦Ö<:m›òù3Tºc>1¶6»·ë�Ç1Çj;jW?dRÊ›ý€ÞîוÜbÙIŠ/�÷Ê–Ð]Ó„é·¨|¡­ æ ×sÈ0.ûaL›þ˜§ö†ÃýZôíùWê¾ß³ø— â¦�Ó¤vÍLxÓÅr¤ _ÙOŽŸt¾ ¡œg_Ƽ¦xʉÃë•4!VÝýª1þ~ƒËì¿Å|ïÎŒù‰.ÞmŽ‚ûkdüòKrº®Ðz§¨Bª»äeR�Z8YO¹#@GµGZÞø®mÓ¹ÌK§hOgØ#œ’¾L¾û—jr¯�z_á²Õyãv-=HrrÆk¢^Ýu”u$P£fØ(ǯk?d¼Î¹¥4DÝ´z 6”>6¶(Õ‡’² 'D ?0ye§ÍX>²¸&™Nÿ¥ÕéqýÉEA�ŸÊÕ³TdTêuœúº_Õ"î¾N5 Œ« R]úÕøѶÅ«OB¾Ø_Jd¦#XÓ™‘žœµK‰üúÇUý'U‡)–mV�³Ñ¯°É¯¤Ùcµ…:fj±0¾Ý?QuÙóÖéßîU;–»Þ Ì宿…�A�}5Ÿ Üï%uë.+ï¿ìíL·Ï2п}î÷üÇr*¤~äÏËÚƒ'Çv‚Æãm_Kr¾îøñ¿ÀðÝ{öiL*�‡€¹-ç­|L.Á3…×ÍSpó„û­ô!jéíŒ_¶˜cˆ�ôó½”ÃV‡ØZ<•~ËÚ Sc‰ì7mÍ eè_««£ :z^J¬B®§ùvœ®Ê˱çÜP3iãx^Èc®µîŽ„”ÓE·û;NkÕàj¿öÏ•ž&‹Ëºe²í LuRå'r¥ü:Ͻiý²Ù&¥ž¢©±*u‚wB8Íyú?¼™�×Úw(7FLCÿ˽ìUËéÆã³õÉâÃ…^´bœgsle+@|-í¯SNOã Œ;=‚ö¬|‹q¨1ébì6�Y$¸NòÈùAwlWx žCãÇUO�:ð ’_¾J¿¬'fÔ¬£´É›žR{�Á× ç7Ä{ÙÊ[ßÊ1èüeäеÇígÄöäùœz”±•ÔŒ�àTnVW�tQU¶rk¡ËªçZ±÷@xPîç[êØŠ)§ aº–—˜G‰ý)§Â >«aiÏÐË÷ ½”Ü×ÓKé„S“—SGš½¬vÃÄTÒa²zØÕ“5…ŽÓú®«›ÄHœD`\§U‹žÞ¬é OãégAg…èå­ïŒh?6O:èÕ/Ä„|¿×ö÷Òo¸¹qã-œ§ô¬žE3¶üÍód·7ð$�–àñY=Jž*%�wþ3�P«Nè8­[ÇŒ˜(åPä^05æŽN;îU¯\š§ñN)´ÇîoúæV¾8Mç½½íÔÒÎYYÕÎV¾"ŸÔà ³Fé§råG=�ÏÆÅ*Ø·šÇ\Ճǧ¥úrs/AŸžWÂÞ@OqæG8}¼Æö)Y<Œxêž.…oˆ8óälIáûoúÁSb¾O¯½›ˆù{_×Úäþ\ïgèçêy‰{Úÿ®ôúÏÅólºÌxùì÷¯èmÓÓ#fê-´� ÒJ“NƒvzÕÍ˨ñþÆX(ópU5´y Š««%ôúW‡ÇìwöwÏ/ÑSÌ{F¨°‹Ê'Æ­žÞìÂæq±OËEß°zÔkìJY½~´s¡0W­J�šGÐc Á…8 ÄdÌ:fìvõ>±[xÓЬË\Jb¸nž¾û #–ÆáŽS…Ï.Ƙ¹ÖiëIÒq�Ib_$>‡NÀ4ar!˜aÇÕ;š-“í7×Pè3ÌŒ`už¯§JWìJO§r}‡ ”/m©Ë÷U=J˽zš,˜§éô£mÒK6Ìy_MŸ•çÜÞé†>ÚQmvV�Á3<|kC%?°jÜâ…TèW¼þ¼áþv*vco‡*Kå?ÄÆCЮŸT<µ>B¬³Ë÷wœ¾5q=ïðã¤Ì–>àIô©±¢ÉÓ÷ü¾îEFOúáô÷zgW¡Ò¦Î§É=œjL7À¹ÃóøÄŽ™•?Á“Z‹è)Ï·0÷W9ù‚=»L6xh«ðúl<†�IÝc&ni‹™XòÁ¯þyÇ<ä¿ x]PîÏx�z«„ÑÓSÁŸ Û)2Z@ü¼bŒGýba¾rº`¶LÅR ôÛéá=?ÏTøõžÄ*ß×i0/¦\Q^¼Ã~¥ÓÛ :âôa�Ë|¡œÎòëiŸ?¿}w»šOR !ÞÓ#)ò½ÝŸðzß<§É±À;ø²1–EvýÁÔÅŽGµsø€È†àv¦ ó…jÄ>ëÛ?ÝʺÙvv³». l9<{y‡:Å:àÑX•õ˸†Ì®·p¯‡OìåÇâ²?W/©Ú¨^[‚+R!¯‚Ñéc³Œ­ðÝ ±4BØ Ç«^…Ž,¦l’}œ„òª�v“��úû­ÁÚrLŠŸÑXà¼Á ©ŸáGY{-'f5?NþX+ð3ôÇhWÖ¾¥»8“³WR‡…îøÖ.²›�ÄJÜcNzU/¿@ô8­]y;¿U·…ÜpñŽáK÷&!ý=ÛòNÐKÉ"Zñ4uƒÜwù‡™bþ8D¿®¼ ®‰¼þ¡ úc‘0òó˜Ríkí2çpjsúd…Ÿd™EnþnúË×è«òÏÏä|š«Œf±F/‡Á§NuÚ·S‡Œõ‰³À¹ÍŠì8¸Y½�Tþ0°I Ïª§Jk•(`ÔõÃÀu׆½j›d»Ýhô\K¸’ú_|ž“œÔC·¢Æ>;Ü‹<ïQ¨�`ÅIéÄ ¸QuyÊäÛO�ÌDöèR ]ö4òígö÷œë U™‰ˆÔ^°œö[ÿ„È-4Û¿-Mö´ß#Ý"4|q.óYNd!| ›ÐJê?4,J×R™6êKê�ç¡ –*þ9Œ:Ô(™É7®%äÕ1‹êÈ’$6<"A¦SˆRÞv²ëŠÜ韽u}õÞ6Ô_ €¥È¬Ú‰EÚ€éNk¬²Ê+Iqró#óžDf:!.³üêWXšÛ °–·Hs*7DDÏ”¼„2V�ÙëaâELÿ’©…m?²¡²´›²'2bëu¯l/ŠÄ©˜0lXÀ²DÖæ bRo…‹%Ï">^‡C3é«tª€(/Ÿ=‰:Rœ=mãbkÅ׌2Éÿ=LUzM6D‹ÌO#¿-ŸºW¡†w°S™Ù²í;>6_ˆÐ³ž½Â³^_Çžºnð¡dÌ…¢ê2f `üLPGÇ_òòxæÂ!ÄùFTÿÐûu\LÿúñcßV˜½»§‡·õYÙHÃ8¢­Œ_WÐûžõÄÕ«mýÝ߉i·@å~©V›~û¥0Ø>‹²Ë™f×{Z~”FNW4¶�~˽׹ѶûÈ—…Áô¸”ÿ½Ä¨â?>‚V4u÷û‚›žºX~þÄNÛ³>1‚1ˆžâĈU¹~¸6t+Žâ ¦*&.ÂɧG‘«Ë¿ÝŸO?áq8-Ćè;_ŽÍƒI'„Å+W·¤c|%Äh$ï¹·{ôí´-±ÙžÎÜzó-Ï%÷Ð2ÏQôõ¹—etð^Ùêx¶î1*;úœpÊpw:·ÂYà™;Ï\EQw¬Vy™?à2�1!(:hÃÅrE f~›a>7 v›˜î +è«Ê“åv�‡Ã\éz¯Zxóü»ÓßÿéO5.¤õò~eñïßýõ_ÑÅÆüãÍSqÜB;å›%8èå¼²íüÃÃIåÀN‡™ë¤_wÎg㲕®ž.òܸÑógFŽJ EC‹ÂÔsÒº7%>m^Þžê錓r½—/ôÔëåop•º,Kã©�Ò �ñó�IŠg–ÆRÔá1tîŠyü[’ þV»ìvh*>]Õ~¨|€Ÿ4¶ë¡oOsë{Oïæ!§Ïθ*Ó1ð(èÕý¸Û׿»S¢^^Þl[MGè�É®§/V6;èAü¶6VÜÌ"Nn*dõlBlV=õó>Ô±´ÞÒõV\p/g3ïr§«Fô"<‹‰†:æè0 üÔ~C­9üìø=pjílN­µ¯)]Ò’Ó‰wùÑq<õlî¨$U[u¸1ÕÐyÔc*#¨i­µª ØQ”8™1µSëêùJâú¨úþŒØiÆt¥´p¯Y&Åq¯íž‹I5Æ(›º•G%i'àcz—oO¼ãQ­H=¿) O(º”i$b2‚r‰ÙgUó€_4ò\äÖ>‰Õ�øWq5¡Õ^ä¦ ‡Ii7BÿþvýFNç|=ŠRO¼QÒSoÕsqÔeÍ×é‚sØL˜IQ9i¬Ê[jþk[«ÚàñõU~ßÞ¥WÛõ¢¤Ic*n±r¡§tœç¼žz„þy)�?ÞðéëÚ˵fè�–—,6°¾ÿìC¾X(&õÝ¡7Ä̼}AæñåÈR=êKÉóïõhb�é‹ö÷zìŠ×†—¥Üé3³Šm¦ša·»Ü¯­¦ýmž’p½î¸º‡Ž@mA'."z�ލD[Ž$àε™²°¨ r) X/ãìÙuD»Â¡;9|S¡àj²ÙÖ«ÚX¼åׂ:3íR�Ê,ß>ä0�©ÿ˜Œ¸UëÉ|O_éŠJòLK4ÃáñpЧò@qzê¹ ϲ{8 w:E>*“ÈC«âV‡�mI—w»�Ù2tŒÈÈ ký¶ãá¥ãþüùo<ă"#­`²å÷0‹82 ¶ ãSS‘©7<] ý°¼§³­ÌJ¤’ã§op/ë ñ×\"gêº Ô[~×I}Ë»êö4©ê‘ð`áËZ½eè~0îm'Òð3sÆ�LYdYÕ�çò"]UÐU,mƒÎ´}ê”ÿs¤š¸ëËrɨX˜ sëg”Ë`#¬.á?çfI`ŽÚ‰¹Ò±”m+(Ôó®d™£4–ÿWj{^ô†¥·hÞë3R̾šÛ!:P?ÙnòÖв;ñì{’,6q�Ì#ò¯Ìì?�úÑ&»ç_[üË9MAêg¿—xà‡¤ N‘Åòô ›<:²^Qâ(ûkÞ¶Î#¬zÂÔÓˆ®ÅÅ TçñÕ™xØþal(A´‡ÝÑu¸gŠö¨½ÔPÒ4 ‹F¹ãÞ–Z^«v£Í-hvD¼Iå¬JÌ¿ö©DBÛ±³s|ƒzy%óÈ œ" €„óô�ÍòÖq߇SûÀãV2;‰âkóS�%œ2i?�kÅMú< ŸvP=×é�-†v&ÉëÄãXO>‹—Q«Ï^ì÷j÷L ‡7ù¨z–¿ ¬âôá_ZØøW¶,%eŽ^Ÿ$ããÀSÝ«”å¯zÓòÏRG ޵$DÝ+KÓÕ½€XRwcEœN?†câðŠù’+nHÊ�zŸçqZ¾á“3”è¦ sÐÒþ·é‰V_ž(Þè=.!?ŵ#�WŽV‡ðÏÿíÛ璘¯B[õúøµúúðƒ�òñ[QÖ?ÿ k50;œ=N÷”©q‘Ñòx+Y×ÿZ&ø#VÉ ¤*,\<*¦7ÄFû‚kŽèé‚, “óou7¯ÅÈ *Q[¬•ý²z"Æ•zvLå4äâðÆ•Pºò»ÅÚ)÷çÀ«kQ {§^•-4Ãr—CL¸Lnùcfý\r÷Ú@æk‰®eh~'/aÜÞ*�÷ê'=¥·XÛU4¶š‰-¶ý\s1ˆÔ`Xšì#„Ø@|Y Ý6O®Ý³ó£ÒsO轌ßúõ[d)%$Ù7ŠºÛ$V9K�µ´Ç”ÜF°ž²*�ß®HPÞÔÓö ]·2þÓvL×÷ï"·½ÏÓC=y¬'§dÜMð(ÒSçûn‹™ÖDV�î^3ðp,›çbt]rÏN!Í�Ýí¯ü>—Ⱥ…‡ ‚Øu\O‡¦œ0vkaËᙻàôXl¯8]™l‰èi××sOã}Ë®ð]=�ö\�ØOï܇Á=Þá¹ô+b&ÂH®ˆÁöo€ø•=ƒðìà×Ff{üò¢2ÆFGyY1mÍT>õ´´“¢òÍêqÒÓŒcŒ)·UgfV”´kwF¢Õû#ˆ\û9Õˆ»Óóúè8.ÐS›þp“+èƒkÁ…NêÁqŸÞú^*N_¦O*󒌕öAƒÚ\Á_sÜúkðØ�%Ž‚zª²Â©íN�IŒÏTòÁy„¢!8ß ç*w¬§¬.=Z‰;b™mž•q"È­’j,ûØ%==X=3k%ØÙ€Žzêbn$ªç_mg2òT‹²'Œ%éiÄ+.¯[ç(·âÊo— ´¨"ÕwÉiÐÆ>VªA¾WÄÔ˜Åe¾°Åd-¾\å§Ñ@75í‹F��xæ§Øÿs2ê’ vŠL?zzVµtŠM h>Ž$AV)|C ÝÜmAÛÉa.Ç#~—}€ïj‡û—»Íóïþñ?«ÄµžvîOß-ò·%]ü;¿Oå) ؾ•>ÁSMcЕùg‰Ùgå_Õ]Sƒ…ŸëÉÃêRgèhç•6Õö[  "^v±u„gèÃuZë³Ø'}é-$6ÈlýÄïŒüó„yR^--­fñ<{ÁÖS3gõ$€�ª§1ÂEéô0ˆQó¨e´'á”Ò§ N÷Òö T=õ£hÀ›t‚�]46aHš;Ù¾qó†4 ¹ô¶”yÅu.ƒ;!Vp9¬“I§Å| Ž—„6w Qú§§Ïž¹ÌïW¼ê;Ç :Õ˜€ÖF;ýá¯ù}ymLi»r¾JÞqZóéQ¾zÀ>Ö÷š•>Šý’ÊjM‡Q ¾ÆzU�#uX_€ÏéV<âÔCe{ŸØ~õ-éö0óÕ´ñ5ƒŽEëൃ®Þ¦þÞÁ¿§“éõ*¡ß¾íNÁGåò† _Ÿð¼ºp¯ÎMßSئ¸^Wu>|Ðt.¯¯t×záËKîÌÂÜ0ãŸðDÈë3äWO+‹77º©|ëAÐå¬zØš¢�Ý×Â1zê°5 u:Æœò»¬ù)x<€×i*ºI=î¢ùW½ ¯ ÷³ŸÂDbÛÐÆû´ä�È€�mG§ágõ<Å)ªk�_£?Ð_�–MùÔì<Î#ƃç_ÛÛ`gºM“³=6«½ªœ F?(¸j¬e�®Kà]‹Qb´í¦Km9‹"æ'Ãóº6@AŸlz §-OOŽx»•–¯¿>\ïˆ�{-|û~.í_á’©x~ÍÅáæmÑ/„$•¯Ø¿û£ðéû[Ñ[ËÃÇ·SjË’ìúã½(úéZ𪞙 Ó³Åp›4tÿïÆ{Ò9¸ô*ãðøÓ0ë¨[3�Š^¤�˜*“”†ìP6ƒÁ˜(Û¯¸“Vg^ª<´¼Ð@J=vÆ2š@ÀÙa›UÌʸ5 í¤2®ýi %ƒ­0 œ¨´ _9ÌŹ{b»,!?-ù 8�60PÄêÑ1ZÀ»ã‘ n]HQF�zÍ‘&ìẬ¾SæçÑã0@\Q-8t‹¹1ÆJO|bƒ´Ø¶°ƒmøI¬q× pêÄ”¹&– ]IOe*WMÆZCßI#Wo¢¡òˆ'Ï-Ø>àïå&‘AÅkQ לe:€æ7ŒaUm z+)˜µA¦érqH4߇ªCM§Ÿ4Ùê_N„\(´ëÛ›Ò~׬E :]ù/ÅE?£« ë+�s:ž= òe:™zŽÝÄJl�Y+ÿº _EëS.£›D>šòò�8Vé;i£‚:[Ç”ñ+�`Ïè<š}/•z�íúï5¢êWôAQ^ƒûqë’é{ä[©è^‡0×Êúã•‚¥T¼vu]»QÎzäE¨ƒPYû©|;ðÂ@´/:Øðo�}¢:ïPö3´±=]¿ÚÿáO*‹»´­×úÙïûå2è׫.—{QÇžª³¬ÌS“G¦Nµ†Á3D§ðÀÞ·q²à÷<ç©”Âqˆ‘JŠ•AûÔtõ5‘Lp™@ÏÛ¤WÚŠczD4¯uˆœg,gFÐè£ønat*s¨S‰fìA}nt&ÙÅ?òó/ËsbF!Óå­ò®ï-bŸEpdPÛsv¿é×1â«û‹qâ1÷›VTP#«UÇiÛüûp©Ò(®mß h�ÿ#Øöþi²´�õ8üšüLþ‰~‡,±¯3„Ã1ƒzS,xâÍ`5Ô«_e¹6 +*j’´Ù"Z >O½.µ¿ ©]’A™hJºJ¦¢1“AüÅè�¼?%e÷Lß#í¡™G‰¹úú»ZûºÖ½Òh=émB÷Ê)2‰½æ¿ÈÓúÀÉ5:‘�ãZʵ9u↠Ә?,O4ëtq[»8HÝœ•ò±K¡pÐ Ü�ÄP×~ýÝÄõ½1´•Þ×Oi·ûË©t~)+¥¬§ßMÆ£i#ü�;Õù_®æ�ó—ÿëÏ=ýÀ©À“?ELg>•oŸKl+ÿ¯|n«ÕÓ¯å#õõ—s}f•ît/1¯ÖóGa„m z{øëûÞôú >*×Fs;‚<ý(°–›mÅ1AÓï†AÙgwñÚŠä¸/&.†ž%HY&@5mžczúé×^È®xE~-´:�ûû^Àº’¶*[þÚ&4fH¶­Ó}gç cŽÓx·7N?lA‡à´ ˜Ñ<•ñaL”äý\ú¯ˆ¶n6CÀq‡•74bM8E8ÆLZ/%–å|ÿ…ìËÎôußÛ[ßÎdÁ2×õ¨Ï²üí®ô©u¡àúV`O3à~¥°Ä+,6ÏX «ÜhÀ .Ž™Ó˜’<¾�Ég-’Mj„¤ðã”ãþeyk¨«xéé±xjÌ4•£«z“XƒÒÌf+y»ÚvÄ·Ý' ^Sc5ÅXtä,­žžXO×dœVù�…ãÏ�ç_'—Í#³ä_ ¿üü—"ïoF¨¿b'Iwªå†ñÐãê˜ÝÑè-{ìÐïvæ|k­8µ˜<�+ŽÅ»�0ÂitûâV`NÁÑôù¶—[߯Þ:[Ø.5fЉÕT@^Õ³ºÆÞ|¦óB¿Ôˆ+§çÒÆã$‡üo ¯0ÞõØ95ðº¡0u ½Ÿ.N×e=5§§‹ÆvÕñÇ–út3ˆäQñèzzO÷à(ÿ.<ˆç?½²¼�€½ö§ aT\›Ôk;#ùÏê{¸oY6»-�Lê�X©ÖSÇgu¸—Ÿµ�>Ë_j|ïbNr%Á¼¡¼#5õÃø}½|”öO·s£ïûŒc—uñ“J\O3<…ž”ÃX¦B—ÝŸfÓ v²º˜¨¼ÚƒÀ ìàìN�·cMÆ®'C{$+\ênÿ-¬.š�ê|ë[¿\¯7ú‡²‹[Œ¦eç‰3bÄ®§¢Ççï~ÿÍvÚï%?E|­±ÿ _Íœ{Új¿[â[Qfýb@|'AAìKõ°ó2`Äm%CÛ(Ùµêj‚©í¥ox¢1)Á°ÙS¦©Æº­ôgE§ÄV8-¶þjþzØœf-*|ˆbG¤1Eõ”GÊx*ÊWÅ¦Ìæ9±K%ÈözgÃïž{{·!¶7ãAÖ'3?@?÷ùêF;µwÈ0‘y„î²È>Iu¶ëRFìCãùÛ@7õ‘Ó•ažiXm¿=>^1b]À8^oÖÛÉâÖðR44ä”÷‚ b¡MgéúWêa£P=Ó(ŸžD6dœFû˜Š/ç<{™™2þy!iˆå‡ÂC,VÑPÖ“ÇKOe=ÕØ·Ôã+é¥+²Žb¢ÒõQ¼#–õ;*|'ªG~“ƒ£þk?üæ†k²ô ±6?/ˆivÏ=j£±ºBϼ©žy<—É¡³onSϺ{Zƒ1ò•--ÍØÓÓþùAä¾ ¤Ä~qßM5t›êÊPÙ½‰~]¦¨pá½Á”µv(å)nËõuéQä~;µyGëîíÄt.úAÉ�Cƒ`îÝÜ­å_õ¨}<4´YI?§2G|¯væå4Fä|+cwÇ|h‚"¿ÝÊzÂr)1cÿ;ºÄX{ѤõQo8j¢Œâøj|GY¿ËÒÑ,ëO=ÖÜv�GÞõ>@+¤Úžé�˜|[ Ô½ý¼ûOÓ�Õ ×§B“›·¬‡D)g¶k$Äò#"·[,O©wáºØX9Nö_cÐÀ±0½7š¿æ0áݯWñÊB•H«In1LÄ(Ÿïë©àÛþ‚XŽk¸2¶xê�')7« B,ƒ½U¯…ŠCŸºpç©¢-µþÕü2ØmLC�Ù,ø’Ç£ö§ÓÐR1ðÐjå†úҼǜ­e‡‰Ùѽý—Ö¨ùC¶ác7lêsì¥÷àÑ…M¦òçä„y4ïhèc–_åUq¾ SÝ ùK÷ŠúÅ<òJ@åyT^“gTro8}ᾎ^Gy²ˆUcËfFbÛlE;øöSèQúFºî%;´O¡œd`4Flh&^X»rD£Ù£tôL¼YÙXßgÉÒÛås_¦5Lp�Yeu‡IÊÛ6*M%ç-&#ã£Û|Ƈµ ƒ{Ïl#¡bBGM8~¨A Á�ŠÑ]/úºo?i�RYôªI\»¶I¥M�EŒä!è`ó¦Ji,{j|J =‡N§¢˜Ì{ý�€p^ß·ÙÛj¨ž›R·Câ¨�Ñì£?:Òl¾e"¶K!ûÊÞ¸&8×ð7¶9–6hp4sIËsyÏŽ[UYטoØA±Ïøó?ü/±3¥°Šy¼z,P¿h±3 bŒ­ï·þ¹]LÒÙ‚2‡�hCƺէK÷ç¥T›•1Í«U@!ÈÈ{мÀåtÆ-_ÔÆöa+ï\Z*|ýÜx¿ª 3¦«€&_ð4|Ÿ}&¿´’]8«¼¬ŒnúR (ö¼Å¼([aÓÜ>/žŒJ�ÉU­1¡VvxÖÄÆëÏ^+¸Ç\ð9—�ýiEø��ÆÒÓ�×irŠ�å^ðÅé˜%ÆcÃKà£RU·þ”¹x²L×rú¥Ækúž�á_—}—R~A¯�õ¸šÖh?-u»šÔ³µößÒ�Š§Ù–uÉ…w=•SS§Ç¥ðé?ŸÊ(i,Dðóæ'n{“ÜÞâ“è6Råº?ÿ(ôœ>¿ î�çK!)§Òní^‘‡ÝÑR�¦Œï’['ÅȽ1“Q8uvýï0ï^¡ÔëòÏ„�Ò-æÃž©§,_¡ô”IE�»nÁ V™zP®�ßtÀ¤|´{oe“˜‹–nJgÇãm;‚ÓD¹N7tª1«p:ð¼&e·¿˜¿´guë�JP”�Žå4Bƒ$?Ч4ÿWà§�#ˆJõ¤š²Xkd�”&Ýõ.Hˆé¨ê’×^¨*¨¶sú½õ\~¯zº5Æ[cX®³AÇ,ªèï:y<@÷4²°n0¸E-j„ï&Ö®°4˜ôN]äù ¥Þ(•Vt™OÊß8XcH-Å#s³?�[šü«gèšnÁ7{Q'S°%V¬) ÏÞõt¡öÂÙ<ç§òîõöñ+üÁ›ÎV±WÄRÛO¹Þëa§´žò©zAí´ÕÊTǧòÿbô8S˜(r³7—©eS‹8Á³Ž5…4¼ˆ(²œ¥Èþÿ }Ë+>çÓ�3÷å]í6¶õ×Î3lÓ• 8+ޱ[Oe"3iLT"·¿âôøùd<‘Œ>«ì¸$¨9 Ãç.!6ï0%ö_ûU€¹˜!_òØ=ÿþóÿÿ¿–¸�Á~*’:÷ÚNaüÛ¿þëÝóoçóµxª‚0Í7xV^j0µÖ+æzŠ*+^4fMÚ]õ T Ù¹ö=M"�{ãÁÐèkŽü\­žÒšROA~x�…+zŠoç1¡²>’½«‡�&x> 7§õÈn¨ç�à4^cÏL+VN�Y'Ï×¹“gEøØheÓ%ˆ±ç¾{•/&óŽQʃÁ!×SÑ�§Õ P¯·G ‰ÁÆ�»-žÌ�ÂÜGáܧB‹<¶N§’¿`üõ=õ°ÒØ|›‡°�Ï}ƒ=Ò�™]æw(‡>ž˜OŸµO‡ðQÝêa =Uåå–h>YÚyÀž¢_øFO‹�àɦzð†ôû´˜ÚÔm�Kÿ´¼>Ü=*7{s_>q0Fý߯a·7`�Ùmô’÷´4éãK]æÊûɧ˜}{/u8uö¨¼pÃ8žñóqR�?Ðk’c+t‚þ}¬]?·'ã}Ã8lž¼¥Ÿ¾ÿ‹™Æ2‘ÛÀÙÇ.Á篲ÞrŸýFñ|åÞã{Ê@0ªþ·}ÀåCÏ-ïÍÌœ­"pq?—yé5xDnž¥{Ý;§r©g�Í“Cãûµ²À9Õ/ ÷‚ß«ê¿Rã4—õý@QùÞ¦¨ò·¤«>ú�›õ£�O‚G1+-¸�ÏN/>ë:‘x3§w—¥¬¿\±î±À£sŠ&�É�ñ°6PŸ÷ûÙê�Ö¦µšèUUÀÔŒÑþĬ +!-ƒ Êd¢ùÎKÄlvÊÜB£åX6ÞbÒvt»O?âel_µŽ“tÄy»´Šäcj¾/V½ÝtP´Ÿâ5µ–³+ë‡^rž –^;3c.M;zï 3šÒᚌçA錼j_ÏŽ+™—¶ “½À×.Qäå0æ w„×ø¼Aá*úب _mËðnÝp²rçGA#Ô1O“8îqìŸÜS›ûÙÚS ùÁr¹÷”•Y—ñ\F’”�S¦RÅ¢gMŸ)d§MdÊ�TÛQbó[§`’è× 9ÐÁä¼oªÛß·Ðf�¦q»ŽS^ûû”Êf2¶L±xwébqÏô�ÍØÍ×’µý'Ž5“Œ°s»Î€o†"Õó¶zj-M†�óôl”�6Ïw¾lá78À/üÀô|Ð#Åɳ¨%ºûø€DrŒ›²r$$U­rßW—ÏæP’•#êìÿhØ8ô!QO.qv�Ø$…7JœšKv¿æAšº!â¼ óF}N½�àÏ¿û;éMN85Šl€Û�÷ùKQhï¿U´Ü‹Ù¹ÄÚ�÷!r %•X¬½«‹f&œ&µyäÙ�hšßÊýzmín£ñv*¸-EকR+Àa´UV–eß‘®}wÐÙÏ’'?ØÁõt$x˜µEÄ<» vßMWœÛ1Mµ�j°eÛ){Çë[95yÆG÷¢á«õd£µÎ^Q’ñ³Ó.q£éÎ[ºR­Á^–²–]c®)sœ> íï(W<¬Vxnü�Ñ3KÈ {ëüp a©½ËRb ðvJ©NæwÀóå^h"§R^ÉÊz-–ÈW|›?} •Ÿ¥ëÿO’¯àªä€žêA€XcÕ´Ž_(/ïe<¥œ¦»b+^&f�.rftjù\øÏôôiݺƒ‡æ§Ê ŽÂØèŠXU²â¸³wÕŽ&¿£ŸølN¹¶©òùµÈÞ<ýÎy;ºƒƒóçÏ2®?þÇç‚q¾�(õ¸ÓÄkŒ§4D£c¼øGÙ •Ÿ× ÁU �8=@ºò xÂ~ë·ëƒ¬Wóæ9½ƒ]áÁyàZô_•çªÿ§¡8‚ã›=´)³UÊé¼Sÿz󺸞æMÛ¸™mI|K„žX|eÂíy]ï÷�¤ò¹Å³r;í]åü8c�1õê¬:fÅqw¥yqmÆ.¥ôp8Ñî‘¶—[ÄcúÍ_;)fÄ^1ž û ‰%ÆÒFÏpñxOùž¾³÷ô]t'{*ø©X×þUäÐSü¬ß´¹m‹ÿø§òÙ¯Š#<4–“~¡¡›°ý»¿iži’Í Zôˆ�ÈÎ`Ô/ø@Ä/?óÓ øõ6©ËÉ� ó¦WÁgÁ…XÁžá¹|¿­õüŸÇÇó ›‡3—˜Ë{GÇ 8žçô_ÀXæ´U]Ô\¯‹…Ê-FÝŽÎRæT�)bâ{ÄøÛl–~<àI1!æ•:�ÖéŠ.Ìãtv=åYO¹êy¹xE‹C$éMì—,�Žž¾-Eí&ê9¯žY(`O‹t …È>£àgq‰¦Óºv¦Ãòß„òë")jêm³Šûk[ùð�ôÃ�ÇŠ/Ϧ¥¼>„ÖPOê1ó†öà8?jƒWhÿ£„ ­žhÄÍü8ÝlÌåÞŸàØ¤âªÓC„ò¥_0_¿‚óvÏJÛüÖPaúÁ×B:uv‹§[ížGgع;\¸îˆixÆ>±Æ:•Sÿ ¢íûéQý€¤/lòBßK€‡) :KyuŸ�`^|{ôæå˰Æ7ûüç�}ã\佯 6ꤢ»+ÔXŠŒûØÆîÐiƒë6/.€Ö³x@�;æ^“y„Tº0S&Ž¡¿›ãh¡ÏãX= :½ˆS -ý¸–O~¾¶:¾%ãKcƒÂãòœàt4ý¿áKŽøÙ|øé*±@¹œ†þýìׯ"Çï<žmò�éÌéäŸi ÏÓâµ^`�Öêu_–Ôn«G2bßíúq»¼aÃr>Màˆ~7Ü9Á©Ù¼N4´ÔƒNdã0z�Òü“=uûûÿO¼~@ž&¼Ž¯�n÷2¾“¶ï÷ê£21ŸR›ãJ—’¹Ö£^)‰um6‹…Ì __$��Œ„Å2ö¾ÒPV =€±/U¶Ó¾U/³À¢»Æm‘§µ©ôa"C‡ ,Åö¢MRês´%¶v”'Õmk¡Ñ�½"鈆F]Û,ˆ‰SHÚI+ŒšG®¯è•ÙÍàØ÷mÇk'üvñ• ï)ºARZ,D®uºµ&‹7sºÆT)ÂÞ»°> s6«ÒI? •B|"©ã+¶¿�ßF‹¤þÓõV¿ò�X‰5$&ôzêhÀážÆ ©®ˆ‹~DŠŸà`áH€S·:8Á}ßÖÃËâ$–ÚÂÒQŠÜm­JÄ™Ç`2X<»ö^T Cõ¬LQŽ–gÎiü{[É'ZÿЇêv¬j!Š‹Š�¡}9 t­6âYתœ>!ò œúÇìðÂ"@ ¿k^(È9�û 2KÌ챃7˜>h­- u3ó*ž âNágIò»£*µL󻬕ØA1÷d¯õ8’,æù'œÀ?¨giéfS"ÆB’Œò¨¢Ïc…Œåš·Ýnž¿yþ¹ k³ÛïÆÓû×U=ÿ†Œú‚:Ì&Ù|8æ&„‰™ÏY±q €ÖeªS/ÜdOÕ„xPGò(¡O:çfÕr ¢Ùþ …è%%�‰[�ûBôª.êVêE/Õü›§:·´Ï9Q|dmÓðeËÌÿÿZúc¨ÇÆÿºv·�¿�™û·:Ä¡“né‹ä|a f-¶x©môíŸÓ F•¥I|Ë#þ“µ.q2íUã1:®¼ÍìžIÒ€1;Dä§s^xºQµâ//!6NFMШ æpÚG¾ 2;ÆKY½NMŒnêMVÒ‰ŽØ©<?]²(*_ø[’Knwïÿµè¿LmÕË‘ö”V/t>Ò¦£Q7׫í¹÷[CŸ3�:†ôÅòkÃvãÿA¡rSweH{­öt/kNé–ñ™Ž®cénîNél§éJrvÖõ£¶_X-MÝ~Ô7ÎïãkO™wdrù�Åžéö½Ê×ßý�´ ß+è,ž>ëÏ�b—V>Õmƒ["<Íd×n#?dx¤JDw ûi}L¾¾5èNß%?±øþ ë(å0bšÏ%æÇúÙN;ã8±—ÐÁSѵ cŒ2ë“ÚÓŠAjb;–,e¯zù€çÎõ”k0•ñÔ�¿0¡Æ³ S5a£#sNó/|ñ¶zÚ‡ÓàT(*ðà—9ð è$^àE~)÷§ÿVh÷hŸ%íd9•­Ë§²ÑþeQ[÷Ö°ƒ�|¯AÐÊb N§vŠhK143\ÇÅ€ýî\è½Þ­k»�KDvÁM¨xBNgx\?^J9…Pw;Ôv¯…V:«‡åƒºÅ¸˃䵞œÊ) ¼†t?áŠòqöUצâœÞ@çëA�,[� \!¦Ÿ7_í«Äx¤?þRšxÜ£5òxÄÅR;ë�VF@O~,cv?KlF~¿‡†Aópl™|ïýq#s¯êka·ß¥xNʧya P²‰Õª³Ñ_-6rWOqY Ÿ3Ìõ·~Ü!©g)àõ1üŠÏÀÊÁóÍⶸ#–bÝV�nc)‚ÆE=ïÊ[á¾^Ùšß Ï®'rã <AêX&²Ç*6+ìǤmO¢·" xc÷ôÜá#–£ b» ¹ø¢ûÎù–mc˜´÷ô€üT½p8µ“qº_ .s 1j1ú8?VZfÕCº‡Í½ü$4·žó­X ™íO� \2ªú`|Rª[óð\�ŽÝuð¡cáÐ(ê4-ggò²±óÉ–öÙ;> §³mÓh¨Î5!«�…-»oÄö߃êbmüS‚/Mð`i1{½­Yæ"¯›GŠ˜Í›Óm¢ëýFÿ¿ÿŠÓ~C‡5F™Òùü=?ü÷ó×ßö§|ѱž‹'ëtÐïM�/Æ©.е d+ïÍffu“Ø¿UcgÚVx~L!L‹�§IÚØ@Ñt¸õ.%û<ƒ<ý»jhtA9�5:� mK¡Ñ|*_Òè0MVÝ“¤xo4~[Êó_!§~~†kØzã>¹ ÞZF”�î‚ÝË=%ÛÒªú“¹©ÞµÊÍ2Ø”+á>¥Äd5c¹ÀÓGOu޽ÑXQË¢|Þ{”û·©È÷ýd½@·G%ß/7ܪ>ƒ¡Tž^A÷IcÊ� w¼ñŸ'v*v÷Ä”â�¶•×Pâ78æÏœë6�9x¿I7P–ôõºt*Yàйƒ§Ü„¡ôÔçøž;·¯RþíÌUüÈMýGÛñ�`8/°Óë]ù¢Éý–›"‹êhÒd3¾n8z`ÇæZ¥«§¶6*Qüƒ»kìÇÝó¯§xÔ-+ÆuFÌP‚‡l�ÍGýtUöÇ%ç&¾Q¿YP¤Ê—‰ê?Ããö×óËgaœOð×Iåóٺɠ°@7½Õ˜¾÷{�s²|fëEærü‰÷ÿwu¹ÆTL§ïÀïó³”{ÃX“zší…Ùµ^BH‚ƒ §µSºëFäˆ-¡Nþ’§8˜8¯ú'ýÞë_0ö1 7Ç€äÀ¿}nP> V:ˆ¶.9Þd&ÔÕ àšÉ�¡´æ”ЦùìÙôÉ·*�Ò)ûdȣɔxãáž9Ã"bç-þzÖg½ìv_­×ã0ÞeéùÝÒ f¸ez©¿6ö£Å¾ÆN4Ou׆}#Ù\±¶ÁCûYÏ€ä¦#vYÕ»Ÿ7¹³’£<ëŠè±)«ÞõaCb¯+=…<=ëà­>ßò¹�ÿÈ·SJàžÙ4¢µ ä«âò—$¬ØWE Ê ðåw˜Ü~Ÿ1ŒxÕµ##„3Pb~ÙåyÅD¯�A‡ 7åwTTZ8PAÓZ%JѢϜñbµnU_9Bcí[ ÷m÷iD+1òLcEž¬Gþ«ÜÛlÆXîl+Ô4Å'ð—6#ÆŽÁ‹ŠŽpzÆÄ^ßóˆ×á04Yµ­ˆÑëƒd•µµØÌ}<¢…}*ù#m©ë3§å2<Ù´aE%Ì{ÒÊ!k�ªî@½ëíZ<ÿÖ5«êànŸkÿ{Äüks2"•`×¼v­âeóŸp JSQ¨Y-­Êºhšj�8[ˆÝ<©6"èTÎѰE,H}|©?Ijï)GS5{f.äSˆHd0àlyNÈû‘þåɲFª–¢ò1ó9?W´¿¥R{Ïovx„…Ö-°9±å^�'=¯U¬L{�`ù½«Ü·BõÓe Ï ÖF´ìG1°­IÌ8@Ë.ø)‰³©ÐQÊzåßâŸêÇ„q\–áó‘þ>D3eLêtÛÓ©?o¢Ú-à* [ØðB- Ý”Óª<-CG²ÌC¼l É#¹¥¦=:¦³iSm—…ÓÈИ]†=É6`¥k#ú=uà¡›òR�¿�Æ!$>O1ˆø%µá­°õ‚ËÆ¾Ó©_­§Ïx„L³ö¥–åS[…»{ÎåŸÆ©ÔëFy²ñå!0›êûÿ`¼"}˜ž³Z‡=œ¨ç�Ž7x�?ÿÔ}Ñæñ¹?ÑÝõ­œîºžÓèQ#Ù´ÿ÷ÍÁ(N%–£ÿrÓ‚ð´Ã¯¬¿•ö[qºC«Òw)§5n§Jú+3®µŸ:!ØÆiý(7Ó—¶÷Uè0žÂ7òE4IùHó°ÙŸÌðp‘„‚5† N‘å§arÙúêvø¿í¤™.°Téé©‚zƒÐeicjwîYZx½ �¥ÄªZÏæ”ËÝcê·B‹÷µlÁ.'Œ•î,|Y-]èêxÇœº¶Ã{¨!C§sG—ÐÇo<�‘ù¿•6.ˆý7!¶Ú ùñ“:�É÷ñÃ@£“K•Söôt Õv¡0ÁÎj‹̤¾-½²XÄØ!쬒ò{«p6þ}±âqjÏɰŒžvœ�«1tÕÁK=r¾[æÍ„êWmæQz:äI»­ˆ ?zŠô⩬íÕX½‘}Ýñ�o:Љ¦‚ÿì±\ßîwúû=æŸlA{JñÇܪ™qœ¾çQÿî¯ÿŠÞß.e‚JÉxa©§B—Ÿ[ØgÀ½ÏÅ“4~"©1ܦÉ{HhT8¦Ä³š¸PÕ0g˹×c:©±«¤¤LúÙ"Ñ<Ê¡ÿv�ç`>íg¿’�‰Ñ£˜µšz2üµ÷sÝ &rýkó¬Àg ÛÙfnuܽz«¤<òÎàÛ10Y=‘ïÑ#äÖ�—ox¸tcÐt}ƒÃõ]>Ãã)Äàsˆnåv[Óä[Ë©œ©‡ŠžÆxÓ/—È[\e¬1̼@?Ãsù1i9�®žÐÀC?$É€êøVzu  ¤ ÷]d3UÿÓôŸ×`àa7ݰíØOt¢!�)$�ùµäæx­õÓ‹âv:ì>;;ɱœ&Ì´ýX£,eà4�C½¹ž¢-Cœë½ô}?ßÊBû Z¢A5gïÑK%22z˜°ºêŸ3Øñ±Û‘“…–Þñ^0…¯ÙËA^ÔÓÐêN5ëÒ<Ù'=8�UɇÙ꡹BŽÏØÈ{œÊÈ-zê2ô儘¹[lÙMFf£0.'ìíaCx�‚§¸ lcÙ#Æ`ÃëråŸéqL¿+ú§§û–yÂw_Í)ÄÛ“ÏýýŒ÷Ó…÷+öÓ§¾€9ßñêñZðÞçSßÏß-r¶œæ]Û<æ²ñ·Âópºø~d¢hЩ1¯ðè}¿RšfœÚ\N�ovIQ^à¹<‡ö£âÜ̺˜~éðëìL=ðNðLÿŠÃnuŒ5ÍèÇŽ¤tAض³á‡‹å_'̡܊~Γ—3�ij�Øïu"¯“©yŸd0Úc`ÊÔÿ¨w™|‡,\1JûL}`ÙÀeßLŸ¢´ZAtõ¼ËRQ„Ü$† ü`&«V¬-ër«]ÑVÊëuC¤Øx2ùýßG‘¾û Úi m6;z\ËU’p+[Z—Z¿Ži]°h¶]#©yZ¯öÑ,A+.mAÎàI¯%}o^¦lÚÁ?SÜÀØRîU£q):\ìäIŠGåè@Ž µjÛÁðfÊN pæi2Ú9aò4ˆÁÇÕ»–‡‹wLã™�i øæ‹d/$ /n5†Å‹®b†{ÈŽåæ')<·e„~ËXð‰Ìq4ÛJñLÚdƒ“eðg8Q¨gôJÞ-.}}l¯™|ºÆ©j£ÏÝ4¼Å’o0ÙûŽˆâ‹Ðq‚ÝsãzN`-—(‚jcÚ£æáM�ü3 †TqÌÐáþÚ{üÒA˜"2ªqý$…Ÿ°~?ÎY£-ÿ:Ý”öÈ*xøÊˆd©,¼Lý”b zí¹ÆÁ{ÑcËð¸ Ý=›˜~+„<ÛNeÆ@¸ÍU”³ž¸Ö‚^oÛâ<ÿ(È‘Y”Ýö¤¶?þ ž:¶Ê‹Çr™«˜öñ/ÿ…#Τ4o“Ü쓼Ú"xQëdóÑÁôNˆ¼ýW='j›{øÇòê›lý³£GcZ'¦¤ÍÏ,]ø¸² "ëˆÇùÉ}ªÓ‚¦0S˜ß²—q«;Ü€è|‰“[hfͽƹ ÆÙ~�¤ív2û ‰Ò+3«*€cY3¿ÙudIÉ*ꥑÿ8£0ª}à1N1#·…Fnm3,æ‘¥ìu&‚Ã4 �˜¼*›Fíº}‚dš@ N¶™¤[þ!…ë#š‡zæu®3N£ÍÚ¹)Kà -y„óQKlÚëµ:v ç¿\�Yý ú+Zaœ‹éàCš¿’ÄUl•­üÇ׌”¶™@góŸP¦¾ò�Ú+S–|;L½8îùÜ‹LýB³G#ð· å¿KrxÛ2_8h#ÿ<Ó꟠WéÇ˶{0MóúZüØ–Äöþ‡ÿGùbs Ž·]Ì>¨ o{E[- úáZÝ1˜¨¸@qEƒSå*7ÄȹܛÜÒígù½ü¨“�L"ë7ë·âaV·}G ÂSñ[Ñ §ò¯@ä|¬àÝ¢�ÑDª¤Ïe‹k?…É.,D!ôCvÏ®-ö<á¦{(ð@ 8Ò£aîy×�F«\¨yª}çkÌ·Om—“ѵ E|<½Þjhì ¡æ�TNc*ã¹Ò¿ø4!ÖâÎïúš)�‘]¦‚ÿõŽEC¿Ï?KYùa|v2}¼ä¦yŽÆ¢ÑÎÜ_p/õ¶ ûýc.“½G¹çó\ÚÛZà±�´ï$íÀ˜ÔÊað´¹¶þö“Ä–_ó>KßÍ®ïRNJûòÓ†úE¯å)&jq&É'V¸|K–ßàaûNUz¿ƒ/4F˜ V…ž»…”c#S6G,Ê,–VY \Æ©²[ ¼]_M…ïöÓ[÷ÎZ8ž—›'f ŸÂÌm�çî¿…gÞo4HeœVú@7>©ê�¶–?œµ”"ÕãS�Ù ¼®|Ñb ô2ïšž|-xÊ 5f ‚�I>få­€Qàa|ºPЀ€aÜ-¹õÇz˜4U¦ò¼Ùßr«‚`zÓEOKrLPU;}dTמVxÀM5†�{L¿‡Gövt¼WåÓ®$U¦âá/ë©–µ¶R^kù»Ïéáá×€»Æ@•2ŸYàY;Yöbv1Ì2R'†Ø g òZŒdú¢³³¥��õçïùÞvàÇú§ÿô½ø·Åà 1!¹,«gÆÆçÛâßÿ*~mÖOYrcëU™áš¨c¨zr3<ääç ÓR¸Ì�ª�ÄŽ»¢…X–�¨9óIÈn\.÷2NÓ¹|1s‚'ö}ž]?Ûü$˜;½¦æÃµÇ–ÃÕó”�+Œu®Óè*M–ÏÇ鄯n`¿Íãtï/ú©1aogÄ»¯d=2N÷¢'çr âþÍúj]_“ÏØåJU›õô�'p@“rj°T"frxïÌ\øÐ2ðúºp¯”7ÒðîŠElÁšIR,·c얌ݲ°õ,>Êñ%ÌYW-oOËÓúd’Á)%ž©Î\kèU!­Ç£ h?‰p­s9Ø£Že­e>Nu!@ª÷žg’´¯…"™$´gʳò°� UÒ…æ‘á�v1ø,Qïø"n@éôMª,¤<$bXΪÑò;òÞã-RíÊÛbØŒsc-OÆÙ²7 -þ°rhC’Y�•ÃX?ÅyxÓÚäö+¸sÔT‰Ì?KV¨ªÂÃþò1.•A4Ï>“c²{ °;½t”Øk»(U•-:B¬/ 4·|{„E·ZÀ†F’âÝ ‡<Ë�‘×)©v˜"�©qc�’a=䄬­È»ÎŒI+B#²�ŸPÔ—Bf‚g&i*û–F9@ó›õ3á•:ãòôS[ç¤$ÌOèTª7™�Õ‰)`ûÊblþgÊq°hQê_"§6ÈÖ—Ÿq ó²¡|<îô÷úÓ¾øwˆxd÷ü;{Ï¿�†�cøµù\~RXB!û:«4«¢!žæ±ïÙÃ@N;AƒOœþ‹E UÂedÖž¿Å¶£Åê/›ŒT¡øv{ÁôÏÃmdo;ET;L<¨‘Ê'·9Lýú/0Š‹ù@]9«b H†“aüö¾›ÓÆÕKšƒJ.IʳÄá˜=KQþ_�iU½•™*ƒ ¾;­„z½Amjíò`JçKÿmÿÖ$»®« b€¤¼Ôs­}Ž£Nì°ÿÿ/iG8|Îò‰ð«#üàðõÁ½÷šsTUfJB—„$R™5vwsΙ)‘ âB‘`õó’8<þ¸,ÀûÍ›n-óøÇÎ,Ãtëš½2Hxêð O‘ñFaæS)±ö­Òúâ ³fM,¯Aà$u¸Âs ¿Ù~ßîqÄb›^ Fï¯kσ‡Éoìø…ÛB~>+ž¸¯s,?(nRÌf– 6ͪ÷-˩ؑ¾ßŠÎ«Ÿ¡ôjRÏ2ž/Ôã+^îÚå±Ñ8¹¶4Tg¯-Ìé�ì ˆ1UI’ ‰Æµž”%kgõ ½6Ê<®@ûضÔ÷ÍÉ¿´¿3ð¥úšÏþ±¥†±]¦íý>ÞóDCLDÉoD�@ C?ŠÏæñ“uâ®,ïðÔ#l}»&:r”‹™õ¸àzÿÈKpÄÌ>VÖ~„«f1ÏÌÔb_ +Óú¡Ae†+<7f=ªá²¿Âóˆ>®œ� y&~@O¼Ýfn<~|ö}5—¸üIò„t`úÓúÐ ²Å°Üð¡?ô÷8)~–íV~Bþ?�×+8«\ì¿®§>^Âà÷­¿¦¬I�íÙ°·fó8ö[\Mµá ú?"}ÍÃró\Æ»zu¯·³Ï§ŽwøÍ||‚à6ãV#– {}ÜݘÝAÁd±öÆŠŸ-`w¸Tç–Œž·ˆa¶&QÙ?·X«ûõ ײx‚èš�±CG\iû ϲ¬ïÅ…r´z[EÕ†SºäÀÛ<꯲%[vÃ3bÅŒSYÔî½”à$âè»á �ÄÛ­ËÛás°!‰KoÛ�IójŽð@Y¶WË¿¾Ž7õX¡VŒ³´;éúd·£ŽOø�#ñ³tíq.»Gà8 xÖ�4VñÈϳâjvO©±€��É+ïãÂ:ªxþEzøW�#‚°)‚:°ÿŸÿïÿ�~½¿×†p¹�}Îö1ÿ6Ï?í§Óý&³ö®!`V—Ñ·s,Ý.¤¹�ãÌNÃIçuËz›cä�kÖø�ŽÎ8¢U̳¾6>ŒÑ®V �B'—#ùRÝæ|Uxƒš—VNuãUê´”1­"+ô>Ř–�¼‰·÷Ðt»'"bÑ�Hœ·”¤ÛGÜíâÒæqgí˜~§dÉ•òzñ¡�¼U¥”ìtý:-úpüØ=Cœ§:Šy(Z6ä:w£íÛeP½ó9ëZ6ÒÆkúmb³Î ì£äq+í֢ς�Iu©Ø¦~�2 Ö~—ÜÆ«,{¥ÉßÝ…<Íí1 ÿ«¹ˆ1›‚ÂÂð˜bx®IÃ�¸Ï}>Ynú¬2]}x"§ë€�eC©Å<•\¤_†Aõ΂,šæ¡'Gì�ŠÅà¼C®íis¹WO›ìzÃÆ¿::öÆOÄâÐlpL^™ð¤3K–k T—Ó¦0áa¼®_§eŒÛé �Lu547–Ÿ�Nz^•Yîà‹KÒ+{–_®Y~mè&ÿ«\¡w¾„Ý’?mW°œþzìeê2F¨-ªsïo§Ë¨vg<�þ‰ ÷夳SPû'Ø7Y*”žôûkŸðHû±ttäW¥“eè­wLôu­À”!/&¼ˆ†¬R9á¹øþÀr˜oqB ÂÙÅ^ÜêYÖÞ›üÞ›¡^8száv¢0y™óÿ˜gã'ú¿X2¯Ë¨•á äñæ–ÝÂTbbψ•zû6·Yÿ㺅d¿ZlÐ)ÅLÓ´eëÖÇd]¿Lxƒ)?®Ú÷úx˜”ÑÙ†?}×+;Åë9V×4¿õŠ¿XÕFáúeôÁXrùíP6<\‘ˆ{£´[Ù¯õ‰â‚ \*4ÇW�ÂJâÈJx. mÓë•æð+ÂyR¤sŲÞfãŠ_á»~|œ¾†Ó$ô@ ûR…ÉŸWð0|Ìß?¡}ê®Q yzü¯»x�öPã$P ú�Õ9âŠÌ»0tJ•=K on½= ºðÉ�üft©sR%ÒdѵjФ_|�)ŸT‹×š6MGò“•{läÿ¨îL¢æ‰ïeÛ$O¡M²Š~åèëçºþº�#ËtžÔuÀ–k^‡‘‡õMZQÒ‘‰¿ôï¨-G8žQT;½Ê œ¸V>®/¤+Þp¤ò¶pû;è_j†æ¡éÞéòb§\›¬ ž–Ì+Õ §Ë�ñU~>4Þ^>Å"(0׫¤k- ;n°•{Í»æï‡,�ï›yùò²êô‰�ݰ/ü ‹ž<æ’íî°Àâh�aã$êZÝÚìÉ4�¼‹1Ah6êG¾Ñ¶¹+‡u·Í¿Ða§Øæßù\_mÚ8°Yo±ã~§eƒgvvêµÜÅ.¢6hç\Êä9ò?Í„�áfr)Ùμù‰ò»£·Ùó;5_»¿«ö>ž¿gÅKLC“Î5`ѹ‡¿¾[øà7gZy]ܳÿY÷}áÃTP�Ð#û_¸Åðàºüzfÿ3tk] rŸ’¯×µæ±¾öbÚ¬?ºz¦9}ê˜ /¦ØËñ„¾åQ¿R=Y¢ç¿3Ûdµþ]tÓW}gýH¼ï¯}§Øœx’ ?éa:\*3'±Yî÷)n^âÜsÛB"jDyf£§óÅßË“<çañ­‰èÕš*ÙÿÂß]àß¾üí’—’nöÔ„dù§ÈßœÛzRdÆMul-˜‹7“Éd™øŽÔ{Y²®w cÊý%æôïæ%Kƒ£ïÛó}ªÓØÿíûq<Žìá‘®§OŽƒ³9ÚÛü_þ!5똿£'#å¥úE1TE¡í† <îng î„­OÆ é±²¶Øn[{xè1#h�yŒMzò/�såÔ0"…/ØqæÇڟ࣠ (ë§z” çŸè1ŠÖJ�¥—€ßãÅNdO8±·l�ˆ�6ݤŠ`|ðÐãéº_—åôyÓ‰ÿ»zñ¿éÌ ‚\°%+5VX:²(~3ÎÎbâ­?î‡~j½GM8‰ÊlaEó&w:.N “oRË#ïW½öÅG;OáÈkø<Í6O§�S/‹>è}b æi²ÇêC·JiÐäŒÍ¿ Ë žZë£Ï{ÖÕ·å³Âõ  JÔK5h½Âóìk¢zá8-Ecåèh…Yb uŸ¥áѳâ`¯NgEšd-Ý‚AŠi¸:'�qVhÙ’�ÞËB]í=âHÊgé5¼bYßÖ²"V©lAx6z�‘mö‘=Ü@ô¢¯’5ˆ;±Dß31µ¬ð¸Bv^õ¬úú}ÒlêüøQÇ@ÔÊ&҂히íË.n:Bõ&�æAs‹úØÆ’W$žY·? q4Ds(Yà9rY��Â’a íA-dyÐÓâôtxp/›4A7,†ÞbiàR°=†ì&·��KsU¥òÁÞÜbB¢�rÚNlõúpÒà'r�§å–¦lŸ_õÜà»Ó }¼áµŽ‘Öfw& Î }iAEÖ1ècÁ«m5ýýª¤U�5pž7~a–hևƜU�H×¶æ™+‹e3ÕàNëæ›ùjï@œüW›c1#ÍSœ"Ö�1é�öu}LÎŽ 'ñâæ à×u<:”šÅ£è›zkižH#C镞¢Œmv»»ÍʪvgÁÉý˜ä}õ ]l ÔézbÊ-³òçÈ*Ç+&cõh\à¡´bÝ3Ì}»7 xÚÿíÿþÿ„×�ÞYí� Èóæø¯ÿå¿ÐåR=ÿìáoŸ§ÕÙ/(øº› q¾BÍÃNêÚƒ'ö˜|¬‰G|Y`ަ±v×/]fn~ÍÎî]/�WœüoY2·ãÔ×½U¿º·0H§_“ÛaÜžíp‡y�ô1Ã#nX"-̃iE,1$9/Y­Ì¦Æ8Ó*SÒÏ«ìÙ"wº? Þv1°Ê�3ÍVÐI 7Çaÿmó08¢¾òëµ�§Ô�ök~ôË|·u¡Ï×õQ7cGËJŒé¼ßñó 6QboØØz+¬ÿ©doV:³~ÿúïŒÇœùáu½'B$È zøáø\ˆŠG°Å+Ëo›øU"m:¥'ÿvmÁìš÷rƒ~y³Ï­ž‚gðû_Žû!ÿöbE©âƒXuäÉÊ„{3Åzaþ;c5�¶XÖ¬~sØ•¾Ô>Z àÐ`:zD£7Öç�ŠóÉ\ÉÁoÀ³ õªî¡/YåÈ/!¯�§¿ G° ¢ùíQoýã¿·Í>c\´`ÌsͲÝÏl1�QáÙ÷šÓØ™aèeY& W$òò®o.zñôˆzõ¨äåˆ]ùºû¯}�ªWš5‹û^<Ã>˜ƒ ô-GÕ“¦g­œ°ž¼Ó€ûߘG‡Ü„�Íf/>›õí4ø-­ÿ¸¬î…¦ÏdOØ�²ËÛ‹L¹<ð†Úô¡Ïé¢ýÿÀ¾KÑû0{ÌîÔz‡ÃêòÂ�?.ÐgÀk„¨½´>{˜Ä-4$Q/ØB©a–Äcêïç9'fóJ³?Wõæ×~9±›¥/ÇE¢Âñ™·ø©¢”£Ôxy¥¾ša QXåäíÚwï7®òá¤âÈÌQQ¾í×9Ùo …WN%C”°ÝïÍãÆ÷´ÓÇSù…ŠÐ9Òg“…ö•U’¤·yÕùWlsl>vß¹; ¯øºÌynJ2Mõ^Áo2Ô.¬æ.BnISÇV¡Koÿ á –Ç#³p§ëÚ0ë’ÌC"ôT^=yç^Ž/erq�ÿ�.¢sås¯£Dèé*ÁÃ(uoA&#Nž«<½9Þkô5¥öâû×ïAÝ~KØÛ ­§wp8ÖYZÁÑ•{å«r„#™“íVâ/îWƒé(oïróß–û^åwZ>›ˆ>³–EW1›A4ØtaôîP¡ˆwfz¶þ×JÔÕ@¯t?Sj“àî‹ó nG„TTí •Šìô4÷Q±|@‹Œ°/kª2¡� Þ<ŸëtwXgI­áqºœÏ±…»9|bm›çó)ª\‰½0Öq]G§ŠLí3;¼R)¼zlmq’A!ô�Pwe·Ñíú_ÎQ{YUcŽÁ²ÿÁ³CÄþ!Wè2ßtQ3XÌ¿”lïêÑÄçA=ÚîÒU&]±Þu¾ø\³‡Vˆ1Öž«œ0Œ pwöÜo—u½{&l¿Wׯã)1� w͆œcÝ5côHeEl:¾k¶âžZÃÃmƒ¿j<ËfT4ÓQ6¾ž@“§�(8üøÔ…ÐÇ o æ ]ŒŽžä<¡ª¶;Z€jgä$¹AÌÜ ÓæÑb}M+¤ƒ¸Õ1•¸– ¼ƒ˜ŒšvïëÚÙZOÐ;>8G §ÆR,Ga¦y`](è«óñP|,fÞ¢GÒÃô7í†à9Éo€ùµ¹·;e]–lÏ{G«A5 ?¥Å ²’ç󯀨~bY¬Ï«GËÕï˜�‚ßö �¶a©�ÙW…ÇtNËÆÎ¢z+j`ÏQ_òŒ¬ä[ÚØ´\6@–žO\•‹‹;+Ї¥qÔů#8í·ëaç4\öŸ?êòöîÁJnúK:I «álË~yÿ·f.x%Kì.ÈVËKβNݲaR»¼ÚÑtX¹¶Àmnzk¹DÀþ b+ƦcEV«åðÇÇ>¸QE–ᢴZp�-Ö©ŸÞ0®8 ~Ü™Å,öÕ°D\Yy«ýp 7:|ΪÏcD ÓÂë¿Í¾j´�¯“{Ý,³˜R|k€bò }w²XµÐ/ «Ë®®q‚Ïwù°†"�¨/~ì'Ô÷¯yùü¿þßå(}…ž¾èô¯ûk¿'Å‹ZàA­H—·"ãé¬ò¼X hÜ_à1:7!\¿ãM�+²y»Uqa:V'VÖѦØÎ‘`ó‚XxC�¡¶Õ¸Ý5Kóé ÏÖÂב÷àeY-&¡ydí"T–›SÀÛÕ°eé¤9;*ˆ¹Ò¶aÙ±ÑË;ò3uŸµüµ ŸaÏ–Æ……£øA߬'ÜQ(Ú×™Ÿ3{“zÕ$ºÜçmƒçå}ƒeo¶¬þm‡8W=P ½°{€ï(—WoÖ¯1Å…\UG_L‘Í«”àqºuÇa¢ >áùy:O{Ÿ#²Ò[¬ÒùFÞ¼ö€])½kו&æñwn¡DE¨K²¬Òm™kGó7³@sš¿ K\¿'{á˽epu¶Kž_æÁõ€‡UyQ }™t‰ÐmYƒÇv¼=‘Ë$ÏtùÀç>)Þxÿó¦ë’+b÷‡Yô7kZëâ Ϙ—e�re²óJ]½1#4ñyÌÓ7¬¶[–íö×£-FaÖ ™[A¯3–�6íŸÙÍÚâ3sGf±ýº¨~Y>´åóܰ¼É¿€Oà!Ç o+ŸxŽysë嬓<²«ÍbÞ“2õó¾�ø…¬Øoc$C}^íàÅ›G¤~�—Èÿ?„îßfÄÜÃØ̧ÉÂÅb½8#˜ädï'Åûïð°þœãzÞPðÛ–�xÇóqFhÿôTo{Å^)ë¯û:x£³<Ö½x“sÒe‡>öaÌEµ{<’"Ip™Ç.ôÃ<·oÇmåý¢šW´¬Ýù óô†›xƒ7ãyh¼U…·_y_šÝSÏAaš êº.>tžÍî[,Ïu”Àïù©mï™9QÊŽ%q¶8Mç4aô¸âb™ôr­>lv&7¬à¤Z9fªÐ®ÀÏãL¿ù ÿ'-küÀgíj�&) Ä‚#7Õ^Y­½ÂU"LÓIå|Ñë¨0Œiòx›ò²¸;0©$‡j›êÆhY¦ù‡vüã4¬ñÝ3>(éð·½:˽�éxY°ñª”öD…Íb?ÀO\??û^¼[ò|£ˆÁº d½E¦=ÄY ïÉXª¹Î–†)�ÎÍc™öêhëAöXÐ넼ñc}øë|ã.fû¥¬º>:—É/-˜(lܼpòàžVvõ»üMÒ@ÙEÎÜÝëÊYX±Ø{ú´$Î9yñfìúñs_ÔI¬%Ƨ³ /ÇBçÞËx¸mSºNƒýμz2Kšd¥©×�ç?Ÿu.ß¹Ìß©O«rÏë½$BMá—zJÒ/éÚмfÓ&YâWòß%ñMþYø¼½ç:·_ÿ±RÄÃëSӳޏY÷…&ðiÔI…Öï¿Sl>ýmÉ´hèÂ-ŒôûˆE¦¯�âÿÿþ+ýø¡‚Ã×Âüz½Òÿþ_ÿKðÔƒ¥V…$…ª½w•�ÌQcL‘‘M·ôTgîtÈ1píVüÕJ¡ÖOÈ’Ó¡™þÎìÈSùϱŸ�Á³6SäƒÜ)ì² p°#Jä»xU2-lÛW€s¡qB´}{¢éª}¢vY(5Ý¡sî"˜¸Ð¨7jIŸþ—qJSßuDŽŒÏ »WCÁ‡Š‰Ý§6™Œ‹˜Š•ÐgKÓf²Ý§§B#»AÉD�þwækéáð›Å‹‘§¡W†CaûÞ8s›NU«óLŠjM¬Üt×Nw^N?<ë>— ö·¨Z¦f)VóÑèùعÑÓé+È^^šýNánÿ•×É}fñ/í%Íyg®ø¨#>î¿»œB¸‚®Ã×6];¦çŽ‚î\jä¿ÌK&ŒÓ?�r(þL͸=½ÈxX‚þêô]*ÿ<|îîÙ‘Bf‰ur]oƼ,•þ\½Fgz^åÊsyCÒ¡UÌEŽJ“åî°8Â÷Ƴ÷<Y�’ô l9r[¶¶GaÇrøã×^uýuÝëózÙ ÚJŸµŸÜ¿»¶ÅÜ¿ZöÑu‰Ü›GŸƒ66£2Qõ@V=R«áç¯}¡/êÄ89,G¹ÏʾA£Aû˜ÛoÔè‚—±×íHä«Þø¶Â·˜„;Kñœm³Ç²Šý]=;Öwà‘dWx–¸l™™#ô®ô¸Í'²¤6¤Jö©æaþ,�ìmÈBwJÙ:í¡‰™BFÞÀ[Û¸èý´ÿÞb „Xz?u«ŸÿÿzÅbKFåﬠ=tMêQ%%ÛE²$®«’O5-¤ÉGØ4ü€§Æ�)ZYæ"ÈÔx¶l‹¸aÙ…£ x$�KœaØ$Ú< "ÚO1.ž–ÕA/z·4UÆÞÄ4r hÜ�²¿î!í6>¾i°±4[æ8ó¦žuò�£š£bG¸ƒ÷XûºpFLÍ?U‹‰…Ø{¨g²ÀÓ�ß5�ü@¾–ñìK zâC�m¿-–Ü 1ßNcn�Aê5i±¬®­·è'Ðõñ"‹'ð,¦þ×€ýO¶#º†�è©)u+…�>‹5òî"Äõ¨çÁ°Þàòbž.–…Òôº™ãߨN2j;Î %›ëi2�VëÑǘŠÓâ-äW¹#Ø)b,–"8£?Êlz ÿ <%JÌåx" ]‰-„vÃ1B?}ÿžJ¶à_塺ä¡À|¹Äñž¹«ðæÅTc:ïˆ ;ÂCÙæÇ<g§<†8©‚ǬL¡ £~6+9« ^¼”醧z<9t«È¢Ç•.â<ÊC*ÅWëC÷ô‹¼Ê,+™×ò.Ѱë<{Ù>t~GÌœ` ·¿°Ä± ö0©ý!d­+YÁ6²èı‘ÙÞ8=*<z@v¼åcíû[Ì?ÉfÓ²h&OD¬ã²ÁùTÍ{=•¿ah=·z?ó2n„GÞ tšÆVþêxø‹_ô×8ð/ž<=:|Án9ìMµß ^šžï2ìôŒ$\h=¢l�Ã.E[‡7Äò:MÒ¶'ó8“˜ h{IößÇlöö§Ä^µö°ß|`.·l¬[õÍ£,s>QTéÔW‘mŽíöå<Ð2³5 ?1O$¬wG˪‹å؈jØì³=Ï�’"0tìÅ+ É\†’le‘ºB?Üàáf¯ŸÉ#ÜyͯÅ/“öÏ3ãñEú›Þ±}£ìúžM]b7{“?„Ú]׈÷ ææ?áêÇC¢|àó¾»Mrø˜¾C°ç¿Õé-�P.>{9QÜ�tíæIûgíõôà>üV:È>þTå<›“P w~ò"¼*ÏŒcÒ¯TõÈVî°7Ý”;bç�¡—×’=½�“Ùõ<ئQšå¿ô쀧÷×w …n) ìþÐ<—£ÇÓ™ö&ŠðQW‡%?y´0þb� ‹ô'Ùoó’žÏÅ’ Ûc^‘^÷µ¬ÇûjÒÑwÂ÷?ÑøjûIÍÛµòâ›)€$wV¦“ò<�ÜéAÁ=S ôyÓû6¿þ‰˜W$‰é–[îDì>:[Äøç9¼ÙAy@Ö¾ðPzÓÞÓVxÉ’ºÅðFþ®ipä¼tQµ-ì-›iy…»¶.¿„,Ëlý­yzÄ(ƒ„“®fE0iL·ÍC0xÝ™gËšU._Þö+Óýß÷Këzjq‰Þ;„wÄJÜ<7¶CìJúñ‡.ÈÞ‘?fQ�›ÍÓô�=/NóNú¹gmrcß<Úä+®¬äß–‡B×úúž\Œ$ábÑN®Ÿ.tq}9i7#²d¾k¿|Õ³èáôc‡³Î»’'xÆÍ9ë.äü±ã¼®ðœ*1 oçê°ulÁqþÂí¿ãóar½ð˜JóÒ6›Ôžg}ö;ë´06îËs÷wåÛrRýÐë|‡þ°›«êUæ[…±} æáî °]›‡¢‡ Jý³^àÉï:�ëtô¨’!­½€)^‡…c%?_¹Þ!'£å§(nù#ÛÙœ‘•ž-Ëín�¤¶ËOPv1#MÏ•'Þ4Oœ±Îƒ‘g'Í€ÇŬG­.ðà™lžŽ"£ÌNn¹à¬ ðݱ_ÏC¢c« ¯}ž ødOz‚�ÓÙ"O‡‡ g�¹ºþ¥úÖbÎZÙc¬nד G=„½B <Æ�^Øâv? ÝØ±t–»ÅÌÅ}xT.°›ã'ª]»°½Ñ€y8ò¾›çôŠè;[Œ[UeþÙÑc+bïõÃnG�ãÕÙcß ªD¶õæö"„�xiófÀ!!b¢ £ºÞ-Ë‚õ‰›‹\¼¾Mk¸ aìbq•;`šf„�™×~6MÃb@ÈFu\öükƒ¨�龦1�{).ʳÓ»g[}¦ÇˆL%ºéS�"ÑÙÇc1’:\�dDÔÄ>5D·ž' F´¿ù@^â¡€L*®xê$B$œ.Ç|Ùt96ðáEì ºê•ZÏÔ§áiðK½­²|¬êw©c®^ròµœÐöç={pÅ6�âž:I¤‘Ù²´º¬1Zs|†,�‰0i�›Fà£/j8¾350yªêÞ®šÞ»|¸aÇ5óP™+Ö[Yg‹%¸]Ch0šàñc1¦9§i®}xQ¸Âmtðr[iX¿ïætT�ùµ<µÿèJ4«èö}¸+µl1ñొ,›CÉ.ët ·ø�;ðXˆ g±´æŽzôæfDöÕ¹¤¡�zp€çú:gŽªc %²}i°@nv|¹U³?±nú•ÞØ0ÕéiàwuÛö^L¡ôižL·QùiLŠâ öýó®Ï-x‘„îxQ'¿æèׇn¸—�Ópã=«oõ,+ú:º7²PÙÿ^fÄZ�ô¢Xl·«t· 2½‹'?äiM8…!º{—«ö{ÿ”ÐÇ~ŸÕƒl«0#öÞˆeÛ':œ ,‘Ìš�ü•.–=÷�ÝÌCÿ2rÀã†åë%ÙÃßÌ*÷B�•+øìsŒ1êŠ^Oô –׿±hމöéÑðË›Ûõ¡ãÎÏõ‡±Gy/ÃË;ë¼íŸxsà´P÷ÑÎ>/È¢{?Kw¹yÇ>È ëË\Lþîð€üÛŒ7«Pùã¬úñû^oÓóñYÊ‹íGè)›§ôÍ„y7<Ë*©‚çcUl¯KÅ¥�Ýx-–çt’¨á¤é¢¬ â‚G: ¥Y$I³²!¢#|Ò})¹˜~ÏŠƒÃÝ'ªÈ±S[B�Û«É�ý>�Aȇ¸öŠß®¦z6d }7¾‰u+øRè–ÑëâÏèËz”2×õ5êolIÚF�ŠG�½±•Tÿ54p ½~Ù5g¸œµ¦¿—¯—É¡>{ñµ·*¯ø[~—ùà¸bèöËýëAo¹ºÜƒã”PGgÙ »š‡¯ãáûö¥/î÷ÉÔÚŒ‹]çØ@:õ›Fp.r%Këƒö~áGiÚ‡zÏ`øÎ½oxÄ1¤=…ræ3é‚¿šgzêÊÍñ^�9¨ÄÃ!Š Õoäô7V�å›g`S–Äù†Α‹´c|2ìÆûîÀmð·qÙ"æ˜÷Šrs¶×?ˆ; }c¤ª.É �3>õa,VØË ÈoKæ”=‹ø;�ý¼SòìwzœsÕ—+9jÆz í«¦¸ê2ÕØ±Ñ¹®G\«ºˆx8ù·m†LÓoh,²L×\àPàãá0¦L“NÇÅT7·¥ÚÇFýÛ�Ø¢$Jw{Ë«D:r�ºúŽü—¾ŒüC_64êÀÊzªÑ;urûî÷dì¯gÿ¹§Ô~§µéð^ßæØ=9,-3×S ¤3bçÝÆ°8ãqó hÝc:ÉžåE³^é«\ÔóexÿO WÞ°¤x‡”LˆŽñ°Øf¤p–Îèš�D¦&ûª_¹låC=qä�ÏýsÄËØë�ÏH5{x™ô„›ð´áÏPg½éËüÃ'Áwõ@ãËh-gõ4仦ñ’-–Þ¶°?½pªÍOÚßzOÖŸúÚÅ�mÿ Î;Úº·j#²4o1X¾>‡»¥ÕI[ÿìâÑQ�—Ò뺢¤w{|�÷Ç‹xâ1b ²‚Âbø;e˜Àu<;]q²¨Yx©á3Ò¤!dä:,X¬ N¹Š2Ö†Ï:SØ”¥è•ÀÈv´Xö@Ä:’ó�ö3Í-vÜva˜÷õµI>Êp=‘§W¥_ !V_®ýÎv2�`Ü©ºÿ¸¡ƒKmÁ ’=t“TOC¶J‹’N*xRyBLËeŒxÂó�–3½ÔzþAþ(‚gÃ]é­Š_ØÞà©OÛ= ᶉ|ÿø|ÕLÅcJì1Ù<­pÄ+'à1Ácw¾ ý#ÊçM=K øÛ‘šÀsfó!8ZÜ…bÖŒÓøÅÆ)Bb:½¾ÅäÛXâq�úÙ`-+0![vcyÛŽ ÷cñÖÐ\�]sBìWóµSçæÙ±>á¡‚�Sþ•T "V6½}…”ç«TaÍ¢¾]BöP_Yå óµ",#ö¥(>Æ_vñì¾!øWO@«'”¦Ä+bÖJ+è=8×OO±v¸q°Ã¢r°Âƒ¤QI�•bÃmÙÚwºÈ“ìÖ€b:0˜@{Cà¬AvÄ^‡,Í«mÚÊ„ ÌCƒOªïWßÛc ¦±:”kX�˜‹T‘•µ^ÝÖ¾²,ìfIo”P#Ò5®7è¹”í{…øˆ ^ëjÞÞALaòD-ûºJÞcêøiÕôƒòåÊÚÿ Oža,.XúAùf£ëSß¡·É�%w‰u+”ww{æÐª˜GáPîì‡]©Qñ$ ¤_—;<˜Ì“óÂ%½nm"¥Ÿo+Û:r_�Ôš¿ªŸlý3MÊß«®½Æ¹O—ú�¨r5Àµp�‘¶ÍóÏgxjȲþ¶ÐLƒçOwiÕP¤Qgl%ÞëPŠnÚ?ÝA¦'ƒ™"¶¬ÉЋò„M[µ~ìinŽ æB½Ýqlëgtrá@ná,C†Ö­ŽŽ»G"Þw¢PÖXWéºPcV› ŠÌ Dg?�H_Òí:Ôw‰©UÌbñÁñ’Ì�ÑðZ°|¹";æ§É–yæÁ¸&E�=�s12Œófî ÄnƒÒÜÔO‘;À½ ßO– ÙbrŦ HP¡ç`ÙÊo5+ø¾ü€y>йèC%÷Àçg¦³Âã[–ÉMÀê|AÿæÂΈ jðî‹>_œ] áýÛYíòú¡tšF'o´=^é`wáî2§,«Œ'ñ"Ï ± !›ê9Ä\¦ºYb/ ¡ý*–)ôÕùcÝÛ|ZìW£o­ZuÀÖ­k¯+[•a܈7@–WÓSØo°7V¬;¸ÞEi¥=³Áöû_°oñyZ»ôú¸É>æë9>g6z¶#ÿ¾C‹¡iž¡EÌJlá8êÁbä¦Xì�ôë ñ®y²é Èã«]¾ƒòvÕŠ!›ó˜t™½øó±¨>9;ÝšTqÝÔꘞó¬vóÁûóûý®ÏÿçIçe¸}”öº–=’Î=#Hç‚uô/ðÅzé>CN§Ôhz›§¥9‚Ÿ>ôÂã­¿³\A¿ÏŠ2 j°¿è6ŒRi¶|%~ÚÌ8VböB‡ï’E…âo¡B]v T;Ú�¬iÊ©§Óþ¨»‘ŠÚNm9�ªTܬ?åí¼pf¦¸ GŸfÔÔlC^RýïW_’`¸Œá`i¶Y®—©*Póf?F÷Ì�ÕÍxH;{Š)ŸdÀuÁèø¨5>®Ûô¹¬Ÿ à¼–£tÊ_\ÜÝœsZL2wæÑ ¢Xrß'5QÎà€_`!ƒz±UÈŸœÆN©ßÒŸ›'1þ,?°U¼õ5½žEÒùù»íž#Ÿ÷$)¸¤Ñ½æ/Ò\ï•vçÃõAÉ‚ôà$:w‘f7QD=N=¤�Ý.zÉá忍€å§@¨ÐÙ3A¦·xœ;0Lï‰ÇÉÑá©Î”'´|†·};Áì`IƒÁ•zñu1mÅkŽKÒ_•çÕ:öÒA§ØQÇóö�^àÍ[9Йœ� òè±J¿šþòœqR®‘P±åàâ[òáÛ†W·ôìZWt§ÚËÿ�p±ë"^qÀ݇Îuµ§ú©%o¯«D“£¡Ö™zâC›É›¾g¼´p[_rãX­¶¬ŒõLzÛbí*ÂÜ«âKPcI¦ÝTÕD˜#�cˆÙÁtŸ‰o|X/H{¹Ïvé{~ãaû¹fÔ¹âæ×/©–3Á•0>fq½æšz%š„9ã#iÝk>ñ¬àÚ{ó_9Ó«ªšºüçÈ‘|¤4f´¬yz›“¥m[áªsáÕ+Á?ê× -»µt¥YÑLÃŽíkõ£Qt`׷Ǽ«:äæ7‹$øAU&ÀGö@2¢CuxÔž¨ßX~Gð÷ªtÅß/=ØÆä?? áÌ?õùC¨½Ènî‰úæ¡àÞ&ß`Ä$þN—EØ�Že>¡~£ÆüSE"/½ž=bð‹ß¯òHÕaÝ%<÷¥OGÈf®�ž$ެåë uæ#áÎí¥~‘oÊL‡oø!›­ÇoÒá_ýÑv—aùGBÿØ™ë5`Á¸GD/×§6GÖêè÷ÓGàÜîößÿ�ûµu…gËMOr×Á¦à ±ðäFÏÊ:"ö”h�€r’·&ÏžîC£—¸¨ÙÙyåü¿Ó Ÿ}Xesh¨ÚÈf¬léš ›““²ŒÑ–Þg«S<*"¶A9úæ–�í ,XÄjG`HÿùuÖP_ßñ›IèËÒºœà1´üØïñO¹;²ªù-kyXÌ»©*µ0<aËV©¿±�H|,9r‹5Œë®±÷~ßû['…ø:©ß§à Ÿýð¤é7ÑwP�IáŸ*Ÿ7­¾"ÛcñœD°ýhk£ë»âx3ÏK=J’¯z; ¶ØR[ŀ˯ýs°´« b_ý¼é¸g·Èˆqc4Ûñ‡Âç7ª¯®Ùœmmp%ww}ó4ƒgØt×zƒ× ˜«­;â@,Èð ¶}ÎØ´�IäðŒØYÎO‘-æ"úVø7(ÿ«‚°l½– Ø+Aüë³,³^‡'f)È’Í9xƒ¡‹`=2â¨1Øì(v@öÏu>°»Ãól±OßhæÜ?Û”áéjG�›ÓøØI:ùYÀcêŸÊOtRZšÔ#QîˆÙù6wð3MR5 ÏšS,VÏ0S¬Ž2\»ñÓàZš9Ô÷ù¹þÜFpþšÇ}!vç¦æ S³ÁOF°íš‹eHF½B¡úÍb¯­c‚ûæj‹[Ìxcá4="OËhóèhÏÔY¸ûE¤ƒæl_Œybµ~ŽžslÁßp�='å…~ú<•ÌãÌd…áÁµó¤3‰'蛇¹L¥>Œ�ÆN¨:ó0ù’Õy Õ ¡AàÙJd¡”J,­|Ë"„Ú%³ëÄIbT'Œ³ò¡z"sä*¡"Ë‹KMVh4šº¾Û|KíŸ]HÁµöLÔÊøjóƒl±b1-™¼P¤«¶}Xì±GéW/Œˆ Ö¹·åÀƒöÒbWmžFÛ·Ë�koädYT10ÆiŒòi޶£ª3õŒ£š•¸Q|®Oo¦.xCj†œ¬Xd�°g%Ø$ŠóJ”æhˆ F°ŽQ)Su~¨'ÓO4û˜¢Õ\¡¿J6f×¶§ÿ ÎîE0Ólò»ýôr�õ7a]ähyÆsçý$eƒO:8ü€‡ÖFßíú�ù)žEÏbèƒüæÎѽѲžÿRI:³È÷¿!ß»Ö;}ǃÔu±÷Kí¼*‹÷MüøÄÚÙrõÿzSú¼ý;ÖYæ©N‘ç>ÛòòK¯¾ýÐñ}ÞÍ®h_Ÿß]×ï ø4ÃsmêË}É‚ýà0F Ík1qý½}ùoz±¬ÿŽñÝOî—•X׿Oª™~|ÍV”ÛF)¡öÅy<xø|¿)?þ¼ö9Ñž®nÏ¡Æ5Ëm ûù8kç´ó”þü¡íNÏCÝYü½®ˆºÉ ¤­;_Ï8š#¬¼•‹kÌ®n‘Üc-nxÝX€á˜®öÏïE42NýË]tÜ¢.G�ÎÊfà’ðNU¤��/pçw]Túï>†��=X(ïúãn¿OJØôÊ÷ìC Hâ·ò�ö¬j š‡Úd1¸˜Lø�‡ä˜?\îkoþÁ<ÒO ²áêú« 3,æñ-’ƒö=2Jl}õKÛ8£V&ËÁµ�Œý7ü™†#óYp¯±8ìÇæa‚§‘™xZ^¶¸�`ìºáÚ3eé7ÿ8Ò¨/ÿ] Ô•{›€V¤¨¯:טû´)ý Åês_\;"q|¬xù] ó+aÇœÜð`6ðíM‡KÖu¾-¿ÂÃwÆí«7ặÛa”®th̾M­ã§ÜuÖöi6û`þ˜LIÿæañÊщ'?S‘©$]µØ° ^¯¹6f_¼îälGœïpp€_æXŽ* |·‹a=­·(\˜›[Míš]Úu騕òµ'…Óg¾îX#Þt:“¯k2ÿß¿gßm¬ìpìÔé‘§gî_ª3SÔ‘Iu¿QøÙEy‚�CßR³ì)wâh›çÙý–=)öß,™}y!hü�ùyQþךþüÇ?”þðtúñC õ†˜NïØ:,vH»Ãc‹ÑVåŒóGjguÓi«þl% 3"؉g—•j× Á ÕÙ½ÿÐß§_ßv‘Oõ·ÜàùairF�‰EË5YƒÎ‰ÆÙÑ}(]5iàæQsjǾda¦7xÄY)« GŒ à›~NŸžÑàŽ¬� ëål[Ö�.¯Ìô%ÄŽçCÔEÂg›ªÄî:(6ŒáŠØ�·©CE† Ú©J’ Ù³®nß‹U`i£Dx–ï=Mcë%õHà;øÏÈ ú- Æ£§ÊdeÖÇYáž}lE![„W­†qÉÑ +ŠÐ"ê9ÉCÕRRºýÂír×è牼үÊcá©dYc­Þ¬¨”aæ¸ïcpfxjM9f•ƾW¾­£ }êÑìÀš=|½^£¦.Åy†õV960Ãc¶£@ó ˆø c`7õDaÌ󀘜ë÷ìŒÏ>NÁLšÂíXÝ„V‘‚^,Yž}ÐÇhò$Ö]áó îMcP�ÁÈðÌZO*_Ãúܳ[àyÈ´P´˜ÆÐÑ¤Þøm�ò®FI]ï­ÌƒY»ÍSv�Õ£\³&³Ò©2<½\X"«±ãêt´èK‹EN� Eþ·òPOGúÒç[»ò¸%BÚk\Ìãv.ðB1‡Çe¨úÕñµÅâa Ñn¤–32¡ iÃ1�¤ÆdÜ=B7ú*”®:{ ÕíÎýÚéÁÙXq1í2>Û8êJ'·~ØÚ�ªB Ê&uóÌÊ<™sÓƒÐÛü€~?�ý¹_f˜×©�‰«”Á—-)9bÏ­«“ÓMÞx,¬ÛÓ¥lUࡲˆžDs ^½V=³g§>âËí>àñqBvì‡Åؤ•:ûÖ_ó¨p¦e€š—JÏFx)¨-qø›gǰÆqu ×PVŲËr'6¸¯7Mú jx�M¾×A…ÛI³6ë‹_³f÷AÿÇIõòéû™`·ïÈRnž„jZ4&Õ Á‚»=ØÇs¡±Œ—«¤Ãbޱ#ÔÜÀ–�‹;£S’¬ìY�·åݲ†ûëÊþ>~Èñà |ç�·,¼£gâ“�/z#'³÷Ôêq¿ cÏ2¿|·Œ‘2Ó|ÿŽå éµ3øâßÁo–•tø†uøØ‹/crlij¥ž¿>ÄñlY›ÑÝQòf+ c) &Ë¢úlªÂ <Œç“âuÂsÅû1w==OÀñÑö›Uu°¿F×G\gØrÈbàÍi}l¸ÿ@³wlcĬÛOÊ·„¦V1ÏY:E‚‰ý*?ßu=ð×›Dø¹?´»�t]x…€¯ÛOj³$º¯ôÛ·ñ%g3~5ìžNòý•Øwæ úœÀÏëEíJɪìQb®›o‰!¹/®Èñ@ˆX¬)+N3Þ 8™ÝHû<©ž»Îëòüú¶¬]}[bzbÝ>c>,v¦ï†ë\·,Ùæ)mº9»øíŠ7[Þ�ë±C¾Ö+Ÿze,Ù¯ûí†0&SÂô¤øznû¤~¬c¯ßÊŽòw™ãƒE¨’"nÛ:A³ |oBv¸—û qÞYX´4¸ûúÏä7¶�ÃÕ¼-À?“K\K>R ½Ž8Ö4l›V2&|ž”ü2— d ºoŠGü0œ5Îñ­|’]ƒâh(«Ú•$«çûHÛ×öàF�ó´×_åäÞW¢N@]¯?:2ìG�ÄzZé_UŽüSIUýG¸@®5¹È;þ*bªÚ³Z÷Û˜šM ñ´IÅË`ïSWè\xú òÏNþ©/’i#øùý ‡k•n{î~ox·½§„ð0a|Ì•Cm¾ruÕ©“·¸ÿVÉz·¬‚:p^ÂìT6ås 7�qqüØé8³—uUûVžgS0åß` F‘ÓUc<)N÷DÝ{d;³.q={9áµòÑí(^ í¨‡xÇõã•5*‘’ wß¾¹ùWP‹a-J'=Ù¦[\�µY©ÚÓA^r‹Uá8 ôc•�rõõÚþ³£^©œÛtTè‡ ½ØFuPQz€’n,¨y úŽ<§Ÿf‡³ÈtuŒëGZ€þíÏÇßV{Ôvë7ÿ¾[ʘúƒhD<,œÈÝÃM;l,âïNôšsße%gʹ'Ì^4ÜnL�7LqÊ[¢uða:z68¢¯tkEàAÖ¥fpæ5Ô§—�Ø£têE+íñöSƺ«Z™!z̓G7…ºæèiùF=ãÛ 3™�)êÓr!ÿö?%^–ãªí}Gãgu½è–'„ö\(Ï*%:¨¬{<®½Ç®–ÓÒæ.Z|܇¸ë/ÇaòO-OI¸?…é?{"™xÉ=FÖO:./ec]÷%?þ{YdWÇ· ‚útðÌv¯ž¤ªB­üKä‘úvyE²®LÉñ=»ß˜ Ç�¶¬<ÒQ=ùŽk¾z©÷ý°HÿÒw–¨¾ôöL^é)ÿ›‡Q·úÿí¿é®Ä±Ììea/!ž]ü†È“ÎÖ?ÿ¾ûgƒ©Æ И+å(â%¦ô=NÌÙ~Û§ÄÞbÇþLí8üø¶Ÿ·Ó^{¸Îõ~Á‰5{§l'–«[CÖL`el¶C­iؾÚ�*Y¥*NYáy9Àã"eª'Xüí_ôò_Q�QG%&�z4ìùã t¿§ÍF¤ ó1Ù Î_cž[WN.âø6�˜má¹,ñ¡a‹´y,�ýþàNnýBµÁÖCÆ›.ÐÞ5& l1…vÃhõãÇÔYÖ@xˆ‰c…½ ðv1‰<œ“òÁ³èëÚÞ߆'benw[Õa÷´dZÞ~íp†wd7æã‘@«2â“ÞÝ’Fî]šƒVÙúO)[6Ù �»ò)—´}˜¯±�à�¹LÕ£$°ØD“.Í÷Ù�]¹ù+u|Åwd¿�Ô“�ÎŽâÕ¶×ø´… &$²UCåqvV]�Mj§WB>û ôÜmvøUõ½ûþ{ó@Ü€|~d"Ttzuà¿ùS= éÇŸŠ'²,ËI埗GÒAuL;¹Í‘úªô)Y«S6ïf¾8ã üè]‹1ˆà�\‚EQ[¸³’ óGTƒdH¿�WtGʼÑÅTͲY[Öå�ǵCÌI¶4„Ÿ~Ò縭ç×=ƒUÄAVx‹Éé_�‘%n}G½³túJsá:Þ³—“Æ��oAÙwoçƒÝ¬@žFxº"ß»„ –ö; kÛ�EG”˜,Óò^² ëÕaVyÞcŠ VÉU3¼¸aVWó¨’úq5�_ÈÙýz ?ÈËà+=€Ó(·“R`’�HvOå­\ §ÞS® ¡‰mÚ:dqõÛÊÉìã¨gò2ë¸VLëÄQ12àñ¥èô„w&_—.µoê™vg¯T/p±Ýϧ!ÑÒu'éy}‘vâ¢~ è€]ò†’ë÷YÁ+v¦·Äƒ�ÃzÉ€®r˜d†M�Š÷þDÌ]�[83Ù·Âï—�ûtîÿn‰Þã¹–%’0ú¶/ÖîEÇ~üãOøÛ©SF–Cœ'ÍŠºÜÞŒw¼åQ»Ž4w0});Ú¢?J¬¦XÍbø,wó0üíú[œÂˆíEÑã®V·ÙKÜÞ²yŽ}ö�¿ó�¸ ‡C|V Zìâçø‡t;¹-¨ ñaÔ_‹zúñ¨ž~»GÃÞîªðNôDa¬wõbÄ`z‰÷<Ùì¥uyß 8Ò[e.›3U¹ðž•s_ø]ë"ÑwµeÞ™zžm‡‹ö·~Þ’\‹’ë®?Ic~´ÆôÒ¶À³¶ˆîʧëî�ƶ:µÍl®ˆñ£ž‹=Ö/{öÍ ÆË."¨°‰Ž&#L“ÅŽû©˜ë¯�º�wÊn­�µL®æ‰´vá�îßøv�bc'Èj,𴵘a¼�(ï¤0Ï[Ä2[숞X–ŵ04µs´×‹G< këšW?®½›ƒ=¶æ6Þ5�„ /^ÏilR.1+c{ðËvô¹‰ü¤Ù¤ÄØÜëøeœ"Ré“K6Xð1«]+»B,XP›;xàÈUëªX˜’®ˆ¬H¯< (ê:Á¾ÂÞïnäý¹Ð2 mUØ[k8�úÐ|·XGê ·Nwíý1RõÌù =k1)¹ŒpYÌÃÈ<òÄb˜-À^c¿ÈëâÁ¥Ðcq=IÁØ@³’ Š¤Ü*âïæN×M_8:O{¯w¼˜)'­oú�¯JõŒƒýz¨Ùl‹Å»xJBîçɆYnуÊü‹Ö„›H´d1žqb½Å8}2õáòdÙºÓ´"–Öó--¤ÐGÜ«°›µ—fÖÿ6û]QË®jëÓUà!eÙI×ç|,ƒy‚$‡FWœœ­È;˜}>ë¸×ÛÐ6àȳ۵l׉ã��ú³›3ÖÿSy“Ãììª4BÌkkcÓ° `+tÜ$�Ž[d,;3gó¤Ã„ž�o0}�t™tÃÎÞD�5*¡„'àeÙÂ5‰8Óå¡zµ¦_Òû晹zgIx¯pÙ{Ý·õý×gØý®I3õè�}Tµ@³Ñýó?éJ6þ;+ÜÆaŠž»¼úfÞõ ó^Ũ>¾àcÄsÒ|n74É÷}‡~žÔÓvã@w�ôí‹… G)‰ŽRºÌäšøl±âàÑd�™Y¬F\Û­h-I_ì�5È^z%ȃ ^Ô‚H¯åq÷ô€‡âÉÀjgxq¡ñè±¾‹¨Âcûv×þOpÉ(@µÿváÈ#²¬þ‰˜ÙˆüO+<ÿîPgK—-¯»ÎšÍ™Çú'èÛYªN1ûÚûý/ýOé'Bcï¾}ZH9÷ûždqƸL.¦UõÏc¨ÞÔj‘¡0ásòl4�Ç,dàL7Æ"²nš]]@Ó7×›öüq‘†fû÷¹foß[L}:t_ʈußf§v2âqM,ÛûDÞ¬4� ›½ØÕü�K_»�rY�{�–tÔôØôÄ53oÕì fÓ‹}§‡ÁžsÍÀ~ß,ç�ã�k8¬ïç=°à;+<ˆÍþ ð°å£e=Ï£1×”-ÝÔ¢†äüzÞ³lÙ›'ö×ÀîXÖ�ÁÏ›¼ˆ³CئN'±Dh¹mkUþg‡‰ÂQÉ!óÔÑe‹"V¦‚ôn|£Hú$"Î+ît˜hpvcgÏÙ½ÎòJ‰\×ÞŸô\ŽÍi½Áòô3…]Úù-t¼¢¨~‹¬Q]‹$¯"7¦�Í’â×®ŽkŽ�PÓÑ¥’­Ž‡ñ;ð/;8ÜöYyÞ-H ‹cnK¿uŽÌÛ.ú ˆû—óêø²F bøj­È) ´&BÜ ‰òÚÿÊ3�S£qåû¨Ô}ý"ýò�üÇJ¡x˜TŽbvDÐFþ©,f½Ö*:M¿¤›B•×Ý_ùæeÚðÁ׺¨rT “âñ­½{yk5…Tt6çÂüý–Ðב5z«TI—Ô½–›Î+>¨6%€²#Ý®;†ëçÕ{¼Œô3àÁi£„Ïír�n?<&Ѓ”εôlT¶< AráãKnÓIu)Ó¡ � É8:é5ó´srœ>§²™|Í+±%¤*Ðx­WZñoÕŠ›Ó{å?'ë&’ò¬_ÓßN¶M.y]u0˜ƒ©fW­}1€#ó§'IϪL~öoN +ú¢A§ÛDTÐ 9NÈZƒÒØÉ?}C7>QW¦•›Û˜³á¸Q·£¨ò øh|Ÿôáç¿44»ãçž“æf§nñ»é“3R$Á>¨Ö‡¿f�ñýR�$ÍÞ–¡'“ ¢²al3Qi][Ig(Ugúâ5i³ö²:¹éoÌ»‡C�ßåºc5vöÌëtã…°~ýÆ$„qÐáô³^ndR]Ï›vm«zð\í«G®8<½t•jìKúÓ$®“0ޣžµüü䵸´÷m_• c\é�…^ò^Àÿ>½Iäé(€0GXbõ KN<ð ÒÔ�xî÷“ÿ¬jÐ{Ž)Œµ�Ô¦Ÿß<žH£u"‘WaõâÁÏïL«;$Dµ”•*?Y³v½éÖÕ¹jÖ‡Lý­ûúDg=Cî}Á0Uf¹sÏš(¡\¿[+2MÞ–+5üõ�ÿóÕ®³‡„q´ÖŠì¾Ãù=HÿžÍt¯¢'Vò8Q:´lhÃÒ¥:_tËr‹½W®1»M1¦°¨û¼!Ö�À‡-Ë®Q íÂÙšþÒ-Qù¡Ùmå„£�ûûv¸ý§ÞzÅQÁ€ìÁ?ôþú�, ³ÏŠÈq̶M½�Ó^¶\ž.^sóTÊ;ÝÈÆD ²þ^®Žã9| ãû·ØIÓU?oð2kõ@ì‹Óš4׋±räÉ^j•²WUT¶�--9]ÕÅ—Sö øÅ{‘ë/è\ñ¯óVüG5|¶XŠø}»iŸ×KÉpW^÷áÌí_eþúÁK4ûžÆ¶ùêû„X�²ñý½þ˜x�Œª¢”_•†TÇM©_?´í|-‹ Û¨R±Ö#S6¾œÃp¾aš?ñyuâ†â\_ãù:ÒÐ{ˆ�øº$&²“vË)g,âîmÙ–•^ëOTó +-U7mŸÃ‡ÊÅúã-ô]x ±¥d«á²>7 þèȨPÔEÛWœ�È~=ïzã‹‹÷pàiæf±vº|gïHU\@7sü<Ⱦf€ââ cˆLê&ËŽl¼x´M A_zóaGL÷p°U�Í�΃œÞÞ´?R=»òGG˜ò¸¶¬ìøzvRPìG"vŠÑvçÃíÇ(�ï¶9mž±[¬NÍkžOêÑÉåäß<·1‹vÏ…ÝÀÀãi„½[N]üj6Í!"dã1»°׆þBWXƒµ}á³ö:++„êË‚ Mpa…G¡yÐãúJæQm1T…k …V[¸,ÐSCÅ'Û�îút2-íØ™º‹Ë8.o#y?qÝ(aË•6ª•Cõ-Úë qeÄ<6Ï:«8lY‡¿�[Íö}é¥�/áYÀw§ßŠyä­A‰µôYà‰´ñ§ê [[yûWé±ë1Ù^pÐ,ò'à³ÈCí•yv7]°!HG¥�å©ðÅb0œN™GÑbë'ðØ9^@„‚K >§ó`Y:ÈõæIʨ§ÅuÛ?³eé\Vê�iE˜Ñy º-úÿɼR¾ãì*È£­…ež‡ë�dÉäpPº ˆ…ø€§Â±Þ–¼­'Žƒ—õFQÏ#6ÈSÖÞzxœã&Ø|t[£{BñH°ÉŠþËu³kp-Ѭ’[ö]mfÍú»&�-‹ÕV¦%Ñj@lÅuucÛøž}ó¬|ÁC$ÈpÓO]vÃãr—{£ìºS¯¶$‡ZÐzæÈ��QŒ¬%„8¥éˆÕK,°Nëæ!˜XDñ�Ý”éX¾wúá³F²î÷oCÐ7†¾ê¿i…â!šÚßA¯ ±ÝG¬¯oŠ<Ì,&v]áq´ÇœÜÖgåeE¶wó€}s™°/†%SÖjèµíêŠuóç¤òþ7ó€ý¤@Ç!ª4Äúáùüø]aŒîÏNx&Á´Ìã'–g·,ëÚALÌ϶ÙSGËëÃV˳³gÛ½ÆwZÖH7Æ»tÎùbkùq×hz—“ÒÍÁ© iT²‚©$ å%ú’üë©-,7‰¥Õ!‚M[?W‰^Ò6ð=t�ÊA’åÄøKº`J#nùÀFÇO•ƒ«Ü©V—#nã;¨¡#½¨ ½W—_GtõÅ+!:¢çq‘ÔR¨58…dEaHà÷®÷_«–pù4N°J÷¥?‡}ÁO’"©äw­ßƒûÉ�ë®9w®E,Ÿwa×"¯´¥Îeè<ïqŹžÈ@w>Àíà}玼½jTJK¦´Æ g{% ¯êÃÐ{c7fî‘ÛÛ« §'{ñ÷ͽyÉüEÙÑ�«\~�¢­±.>~ný/Á.²oIÔ¹GÍ=놛A˜‰óË^»îë`ªdòW:Ù:ÅUp¨yuõLÄŽJ+zÒ­SÌZX§Wn»f'ÿÏfµ¹úlmmólú�]?^¯‰ƒœ€áRg=zô†YOºÄøôGW¿ÇóyÞK½W2×�U~wÈÊÙž&d¤079B%¨ˆÜV(¬…}ÿ~ùêRêû7ù—RÛžþñ_ÂÔ˜ƒõª/§§ûÏTYz-ª‹· ¥—¾ðüDÖaWÒŽ•'ÕónaǺ‚ØSN¤ N–%oIßÿ}Çý–•Toø“×½«‹zrÉ .Y²ýâ·eÏ,óº"{1�î!g[Œ~€ ð ƒÇ /æ †1¯éu4Á®¹½N–UÚ{|ˆÆàÚèº(•ÙN¤ žh»GoÁÇèn‘‚\­²êÆ÷²rm1†Þw/>^@‡…£m¸pŠ·"Þû²zûø²²Å°“ÊøžNN÷½9ݪ‡ø~ÕýðÓg\# à_¤ÓXj_?'x¯S3ÀŠzí±™¾¬7ó´ÁFçÁØÿ¬1KeÒ˜¥ò~Õ~Þ>©ÙÔÜÐù ~ý ±Ki”¾Ž*žv}p„HRîhos.d±¦–¯ÄÐéèI|÷ÞQCoË2µÏŸä ªø§,n oè�©êÓ¸85žr7�c†'ôˆ,çæùkxáZ#±ÀL½1Òi ÅyoJ^çù(6ŠÂ@ŒŸÄŽè`]å¬1å¡X°L$®á–Õnþ™#Æ“v"æ¢ãçÛ™žâî¡uðœ,]›[ 5<0lrõ%`ë|¡¸a ø±e}^–D¢vÇåpÅ+ìíP²ûéý'Þ{–x¡@3…åbëÑÂÍUQ[”Ð\Ú¹ÎrJ̶%1?ÆqEìPÀÙ==o´=AêA„£Üù(Ûð rö@ìEbŠÃ~ÌöQewµõ ì÷p§DA)Pt¶\"ܦ£Þec£Aû053,¯Ûìeo<$Ý×ñ�¥ÖQ©è¿Þè²PÏæal—Û±ýzx�gÄúª·ØšÀb†­ÜòƒGn2;5Ì75µ? œd¢O [Ví1Ïh Õ¬ò��…α1ëÌxí„uÐý14µ}«±Ñ–<ÓŽüË͉ÃÖ¦¸pÕµI‘SØ‚°Q/ ðqVg5žKQ‹kêÀÓ,j»ŠO‚Vj*DíÍ�8~Ù[ã¹e4~ BQy23“¬¶ä§ã {³îK SÍ"‰y»À3çfÙÌ)ν¡Ë=ø®Á„uÇ Ï¾ËÃ(­¹eǰ¼H3ŸÅ;žêcÍH-evD=ùöú,�Ÿì²š–…–€'ôQy~pƒcRÏ:ãûÌô2�ê|ëã›ÐdjÝÙĈlúŽbfÃHO¥ÿ 룂ÐÑóð>~Ü~Dzü|¡ò\P|Àñ{,öƒ¿×m•w Ü»ì2×zÛm{ááÄ­j%ê’îyé«Ïr½‡÷þ8O¼!{Úù‰¡czxÖ£9ô >�]÷ç‰Úg¡ÜÖás†‡¹½8ñ ×KNéjÙ=^tõ§ÅÔC6ô.p?ÁÃO¯Š´²˜çê[·YíºÇKíßË‹ ïšuBÁ6�@žé ó¨ïøåyðoxÕµÏOxø]jnÙ*²‰Ú K¡0Oþ¹™÷ìÎ{ùCmÉècælOoˆöPRßû§‘8_Õ£ù}u�uq´¿�´ß= 6µÏôÖæò©QÿîoËÙm±ÚIG•"ñ3Båáƒt¹@fgè©¶/V"qiÙñl%–{–°P‰¢tû*iË8v<| (Œ”¾ÄãkýS…¥‹¼J¿2NNj­ôïàˆ[žøM‚4Žˆl§$º–XVÀ�]sFýÖÒõï W•&`©ºÇ‰+>WÔ�¤7Fn�B³H^?Ö9,SSpvF.ØVƒ³á�­rÄ^â_ê'?�‡»˜�éûæI²½^Ìò¦ýO:.�Õú¦ó¼^\ÖÚ Ÿ›ª„õ²º>¾>~~�An^’¿Æ 2ÂW]T°1®7ÌׄJ¤ �îê9¨Y|¾øc±4…*7AOâhf?!ò²›h.D6íìäAµ <ÀìùÕ(#Æ�ŒNÑvhK_¯јn½ü›ùq£³â\Ó»);µø%Ïš­xÏNô˜þÃïð,ûc­mžj{ÙA©_:ºÇºpô¼ªg’üó¬ór‚§ReZ‡¿De�þwTר©2­üv™Ó Õøw){yÊ󞃫¢'š·F£€5½×ž]9Ûˆ½(?3²’¯óŸ Ó¥Üe]=8ÙbرÅ“HwÓ;R‚n¡Ä”5ÍÁ5*ŠÈï3øå1R;:7Nl�•LŽ‚=ŠWæVDÞE]Óåá} ¶zz¶\²‘O¦ Ÿ·_ðD’óç~iDRe¹]Ü¢Æm†œo çn1qÕ.®%;6è‡nW¡ØbÚð俥2ùîž×ÃNˆ´YHÅ�±àl´ƒ-ˆE9ŒK¥Å“"æQg¬Y²‡GAßc0nvÙí‡Kͪ›å(v@àa;Š_Ê&€Åzü@ì1 • �š“^Õ¾0bëhÌH¦ù ±xá‹0Þ-–2ú³£vÄcÐk�j6ÍòìÞÄØr�ßuÑ<•ÈlÈgÅlù¨ôßñ°uÙà²\mõúP¸»'ãVuT;YñR–Ìdm(“‹±Ê�“±í–qèÌSVékºµËÑEc.�1ò¹Ñê H,» 6ÞuÚã¡ô?�,]¢é*y³òâ9²>Š3g\% ï:t�…~&ní&"{«d¼¤a›ò}Z³�Ç{°b›Ñæ(«žþv¾WBm7‡A-E4,¶ÚBägÊìxÕáC­ôð2ÏvÄ&ÕŠUQ-wý~…z¿½±Õk‚4´+<çÆ SõH„l1×nˆ¨o×´X̾ì»Â“ÓbÛeïDûö8©¾à ’Õeoµ6Åœí?¡E×3û#žƒz˜¬¢ëØš�SyزUþÀøÿ´lÄk¤K¦<¡ÆE]þ¦+ó±Åà’-”õJGÒ¸Ë ôÍ:Äy ³ãèi1êΫ®n¼°Ñ7ÆÆ“Þ?Ø'/*¯w�-ùÃ<á)·šp“ç ,Q³Éh×64¸c,Ë"�âPëÈ€wÆ�cý^á´À/¨IíßèÓÐ Jè?z¿T§|æ‡è û°HûÛÓ�™ºCøÔ¹£ç…¹­”W`&eÜìÈÏÉŠPÀ§0«¦Þ°p&úöפÂU4ØÁ©ój¬ø8õW(Àæm¥›9ØÐ)ʇš…(ƒG½¯;>®^‹ŠW9îðKg6êýÄ£YQÅÄúÀšOe³8YÇâèÐxKqUoGî++«�ºdôRÛ.!bù)=™ê”+ë!ë´<À‰ãá8Vç3˜Æ™çB@·¶›ïCL{²|O·°0¦Th[™sÃ�öLù÷:ñx1õiœás¯­Ó Fg:¨ß`æaù¶ †ï„XCSÓÒÔ—Ô�8–ˆæ5õKÉê—βFávn3¨ÊÔáR‘Q¦çMZû“ôçy8ޝö÷Çڜۦ^G¡8ÍAYøX¥¹kIß[Ú×6Rw ^þ jU¶»Í9þ–‡ž’f¯· Ø5ìóD–ì¢OˆÓ”¼mäjEBš^ñ-¤ƒ«ä/�Sq¶�]IŸåV‡¶¥4Ïœ`üþìKç�èô E/ .6³zâZu úªL¨×Áþ$> Àüo.ãKÖuë�*nFåÀGr8à,ëñ€¦þû’^¦�ÙÉ©·�˜ü¢®v6Ž [ða¤r„Q«ÑÃj_üë¾þ“ó`p[Òor›^䥮•¼ ,Ý“GÏQ&C�†Õƒt=ý¥U‘vkXNÊjgÍfËëï¬'ýr·,E30šjgenêïõSÓê oˆ&.ÑÉ×÷á ÐYm±8rÙNì÷M.=*XÈîû�²-ûôsy(ìõ²÷¾Lÿ±ù©Šä¡Ù`¿:ìg‡é6EìäÚ°]?Ÿb]ûŽú"`0uXÈN&°ø$¢Wú½V2ÑÞOz¥�{]{…�4›ñ&/¥ºÓBÃjÊìmÿܲs—1–>:ò8¼bž&xpš*¾)=årk±Þ{ê<) Ûú©yùøšèÝÙ(àü07ÖNâøö¶#øwóÞä]C2Ã#1' ˆ#?)Ý÷ ,Û7Ìb)“V�˜•ÖIZ¡›:ˆÙvT8-+¤w}'Xw‡@ ô1Ž*KvÙÀá¬ð­©¯?KwNÆL·¹.ž†|UϹ»n÷á” dh5xZ›ž¤µ#üYåpCl(²yª«|p%C IŠÓ×ó$ÚÆx�¯9Xj̸ÁäµÑþÝè¸}G\^‡.m­‚×a€ þ‚Å|}BŠ|ˆ‘Ù‘×õDíÊëKÏÜo:‰gÍ{¸rŒÉôôzWœFÄÄEÌ\™ª¼Pׇ쾸ñ–ýœn�< mîÜøÈ鵟”éöàkÃpo¹ÌË~y@ì–²Tl÷Ne¬üë0;zøsÚÆäx¯a´x›nˆEŒ,ç#øm)Ñ‘ôcœtÂVÄj6Ÿ´/|нÄ0‚¾Ä{ŒU‡„ÅFÌYü¬Æ<ë˜Ö±ô ¾å2ñX¹†wئb�ôsBö=†§‰ –²Æ`ú¢ç²B®†¢æ ßlýÍð€º˜‡”Êÿ*ê!t‡GÆùRiÕ+žô±€§v¹�ù«„$¯?Ï�û{Žù…q›ãÓPx%?Ù5«´<Å-/ù'ðù|4°>…£B*‚ØT¶î[ݵýj8äróÞÐKà©DÕã*ײ‘ïÿM5Ý,+›§!>ø9Û V!»˜ç^œ­Ì°[Ó°Óϕݑx“_Z;9=Õ¾ðôçµÈ›Wy•”‘ËýYûÕØË-’ß=¶%éã¡/6̵èèGÖïCÂj?Ö—*Û�‡®«¦QÐe¸Ðýù)±D­µ6ôŽ~|E®à!>,u Àp{„‚ã]%ʃ ÷�ªë¨||‚|´é| –ðÙ½!PDÌ5<ÁAÿ}=Žä·š½�;šÛ*¾Ô±åcrˆÏe„'íæÙ»}šçÚžœ÷ø Ï»û�Þ^Î�™,U°£ü>Ê€+žåÞ+ÿq‹ îÅâ™?+½v?¯ŠÍ_–éö +#ûñÝø ×ß°Íñxƒ}]�;ÚÚ_ëïcA axJÚþÃÌ.h›§‹®˜š§Ú87�×ó•›Á'Ö üåyN‡ÄEî·{–ýw´—�U™E-’ÅZ–±wPܪ:Æ6›ü¨õD: œíÒm0Ö¡;¸�{R#­G‹]'wJ»‹÷Kó2³^R5é(~.\ûŒ‹'Q]» ±S¸ ¥#¡V Zôš¶Ü}x÷u£M¢5^}*«…Qþ®„g¼˜jìÖL©—~@éó›è˜ä�Ò(ÄÅ…'¡qü¥îö+u63¹Ò3ǰk„�[…è)%ÙÛâÇ¿jà µª�ßTvXF3A¿6®Þƒ#:øæ9ÄËi3ù…JÅ_Üo릌¡;Éi<¶)èï8 âZU:s­'yN¹ûU�%JH;æîª ÀèèI\y)׺6_üP*A–½§§Åê´�(·)íþºÝu.ú5få·*)u\®ãŽc±cavírivM2©óAí­'Ï‹<Á¥·ì) .óhøÍ¿™¨E�àEé9¨D Xù<Öhv%Úùˆ¡u”PžnšHþÞ¬ ˆzK‚Èc‡ÌsX Ï'H~en�{ôpb\8œý ýáË^Šu{ÔhmXÛÞ ®¾V&Í„tø/L`¥‰ßüsÍ;%ÓF:ŒàHO2àW£ì{,¾S¾¥ñ^@ìôÙü¬© ZÖû�¬ºa1D׳sµ¯µó¾¤‰X–Ö^[0â'¥×®z"å zß“·¤Òí5Øôèe v9�92V®þ¤H§N__t[*.R¯qÏ~ ¦x¯|VéŠñs_Ih¿µùÁš<ê y2 }øyÖqùÚ“ãAº ©ˆ¸ìõ¢éØÐ¬Ï½&ÝâÖ_Q!\Ïì…Ô_Ðͺãø]耹¥ÜËHôZ+×®§·-Ž™Þ^ýrÖë|éÖ°ÈÒÜ+ÏÄÉTœ8xeƒº©xN=úJKíWN÷Â5y¦ÿj?^oÛµ¢“‰ï»:GvêÛ-9ÂIšæ®Qý.­øwçÄãì›ìàø%깋ß*Rþéôѱý~9ïÇ6 SÛgj2ˆùt‡%R)ŒƒŽù"óWæÛ:_^¯·¼žåH:ðíwÃ*]Üø©P‹¯GÑ„• Ûx>þÛ“—ÒfÆ„ÝÉDq…8Q+\©ŠlÀûQŸ—pƒóþ¦ßß°W/ðt⑪&pZ\Êð”sʉOþ¼ïÞŒr}«÷ºOp@dE0”qt×·[óÁÒò¼éÃûÛ‡¶J—%y ð ]^*×ÛÎöÐAöÒCýKi<0VzÈ»É?×WÄnX§¨ZåSçg’?vpëÛÍÙ-Žmûý†âOlY‡Þ=vÔ—!2ÞÙ�ˆzÄ ÊÜìpe;Ñ–M5kJ¶#næJkúøi‹�7ÂÈŽüÎØ:¿ŸuÞ>À�×zÚº‹E0:�aë‘�Dúë÷1#ŒAæ·º1(nªm1`2Cu£0Ëîz†<ýÐØ�|G@WØbôøM¹æUùétx£¼©¿Ï¿¼+û ?£Þø>ýy©°ÝíáòKùôóÏD[4.: Ã~"ÆIƪ6ã³e­®G6¡¯ñ´Ï«,ªØUÊqö.F¸jXVYx:”MMo…€‡Øõíã‚X‘–UÚ#E1yƒ<üÛ¹5ê+Ôž 'ƒƒ?tò¦(qa^™Í ó?u,m.a(n^p²;Šš�íàióXË\à× ‘�Ósœð]p"Xb“�¸>ê8ùvJÍÁâô¯§A6^å‹×T•By¨�Ç3ÏJ«‡òÍ‹P«,°øE<×®5Ù4ïÙcÍsÀ㥱ɶ˜gˆE >Q²,Ôµ³ŒÞì(žø2©žÝ³b;ÜÂiÓ´zr.%6,aÂÀ‚qÀ³:¤eó±UÖ¹ƒ ÑÓo2$™Ü²ŸïÝ-K”ÿÌu&¯ç{…Uºr2›MPÙ�’ÍNwì¹y,ð@O–4­$,8+63<Þ(Àzk‚žY3¿Q¯¿�¦ÕktàÁ·É“l1’tÄ‚œãKSú±…lÔ˜¡õD~ï1vö÷mp}û9!æßbë$;Nö½`–²½w}d¹š�ÄzÃbr­C¢®òñ¦À¦7·]û§êAË*Ý¥IÀ ßp俎Ë�Ö~[K]²û¦ï*GþS¯îìåûôvŽu\Œ7dV¬/†ŽG¬xÄ�0õ× ›ÙÐ3ù�Ûª�îguIè÷‹xïøÚþΊáãS¯½a�l« ÕÑ!o@´½6Ë�QG5F]ñØN»Iöë‚ØëbY|zÔ9ÐÇrèÿ‡â9Ÿ”�¦G˜Å€£‡oøëüN良Æw¼øwB6ßý ±˜ŽTœg{åñÐy?Ÿ­‹cŒöþ0€Y»¡ ôÍ-W^^ÝXº“FEõ„:IKBtîˆìÍ;æ×—’l7'Äx|`¾>úz¢°™—Í’�—ÇjY“¸ìSTìËÏ4ëYœžÚbjû7[g—f½†ýyL^þj±ØŸ³�‘�hfeÇÝr)œ$l7ø%æV.ˆõøþ¡�Ã\åáÓÏ–ScqãÃ­Þ 1ö®^¾6þ�°,ã¦P<í­/ý­ôÄDÿ1èzãØÛ�ÝÛ8ÉÈ;Zm°ÏfWs¥¬Úô‚8Ý,qV¸ÇzÒQ”¸–¥Ò¸^Üè½D7ú‡ ví”J@Sˆòµï—¨óI”�;|<7CÅ¿.jµÊ=ZO@vpz8$zz-_¾;ͶýÊ�c©íò0‹£ïŸ2­ÜeÛ®gBÓô™‡+Ñà6ôðsØÞ“.r±t–Üt-®?rsÇaȸæçѾS=qeW7E$ü.0íÁÀàb.ËhWº1ùqì ‰$Q\$ðµTFLSÞ2À‘·‰€¶% =)…†Õ ÎÁs÷¥È*Ç{ćú%k"ÏÉ@õM]plë7Hª^‘`HYb´)-£N|V|<7QAÂ{TtÑ*Ø‘ÿ¨[äÙJ%ÃÐå³øTȳÑÇ­ÛUÖ¯øã¢;íÊM¦ÆRË|ÍÝóº†$Â<Ô7É�„úUÏ�é«s’E{`ðÞAÆSlz‰8,".™÷Ž}ÂÓa‘`ešv•÷$*”ºŠè)Éð)éJ×þK‡XD�Äe‘ɹñó"D�ÞE_d†ãÐײö�4ü¢çHƒjöø¸I^?¹¹©PuL�cYÓõ-ïV[£b!ÕÌuQmõîóâ%eÍÜ�»ýìôe Ïo¢¡¿sئ¡t5NÀòX�u_¯±ÿ•ù' !#Ùë1ð#ù3�ö~ènñ²(Y¿ýFÛ–ž•¢ÒŸ,¢À¡Òêù –jz�4gmŸËöJ&gf}9n^ïsÄÇL†­‡vŽàº}t‰­§3 âƒõþtúFÒ,§õ?‡§A'^ލToè•NúhÐË œl7ò^ššÆ‹²Ê95ÄE×çõ–‡RñãÖfqKMÏS™ï›U�Ç_|Xü'B]’IìØÓ»¹MW—ð ©}ÃcõrÕ‘åÙ¸Õhit­¼>)"O®9šÜsËÆÕÌH¼D�1å¹jêônPì‡<.§z+ªÚgD0[ä~úþš-Žx;(¡n]N}ä J×Ê%7ˆ<�E¤6Qú¹ztÍ•�wÙáx½|rì YþG5Fƾt@K[a~ŵ¥;‰ÔÎ/ScGì{~ËüZt§:(0%=Ä6GÒ𲇞;¤î%ÊFRi¹Xë$žT]‡Kÿø¯ÐsLÝ9kk1ñ̳㡞urú¨£ÜÚÚ âØN&;IÉ’‚_ˆe%ç9â³(#€ÜFÒtŸ=|näû½µ£)¤´å=–á«ðÅy¡APmQ6Ù³ð:|×=²~¼r$Ý™¡¯·Xƒ›±Xßwr¬°ÃÁi�S‡á;êøH=žF~ ô“‹Î_‰ÉôyªZÈKo1ʧý»îH <ÅF¼¤~F´Š;4FÕ5 šÙÍž\~µC¾Ú øÕZ¹qk"Eнiâ ¥Ì�ÿ ú t�·¡£ïqËbÞ™Cz%ŒÒ÷O�ŸW�©Ùb•½²~žNlCÙñû�è*‚ýDHè/:J˜ãüÝŠ±%B�"Öe¿„mÈ¥½©˜ï[±§›R#í ¸I|×WÛ:aÇLq{¨¼^ÎÜh)q`§5Zq«÷JqêÖÛ.ª‹‡?ur?«üï)dÃmX�:¾aÐ>V—ja‡%­·õ驨E!êÈ¥½•føÙúd¶õD"¼‹Ô)Ï5ÇÞ ×¿\5·åVàêÉ×}ÅÊ@T˜GÚŽë=Ïmž³ýæeŽ—>—JçsÿKæÅ:}ý“jÀ/6µfý¾8T“¦¦îÎ;[{‰ô;ªë¯÷pÉÚÄ_cçýW®×>%µkXÏþÄùu±CÆéÞr›,.,`�J‰§ß¹ß̽õFßo°‚— ‰¸ŽÅ† sıëiçú,pmÔ�¨Îqá}ÃEŠì‡�aêH&Úú×�ý¸}]ùñ»Ž4Âß7Ĥ.ÚB¶ñ!)*r9¬QeÜׯ5Š7)gp™‘¢ŽzN]n…hp±ë¸,YRŽÊAŸÁVPD¹È­ùÖöëGôô%ùo%ȽÑ1v§›Ò‚ËD»� Èkß»¢'Íõ.†¾4´�vÒɤ4âwè^�³ª“Ãp'Ì÷&áÊQ“èYål˜¨;•,¯àV­à_³ÄQ×Ö ñ—Ž,º‰w{Kk�eÅÞ·e’¤yb«þv÷ûT‰…é{R}ÿx`’¾·š9°û�z8BN9õ¶ÓÔ#Çî±F¡p õñøÐR©â[õ¹Í 7ëɈ;ª‡Yî5èaÛôÊðš•�UçjNƒüóÓv¹�8£ºø7=¸…€1ò!,*0³ÓoXª ôk_Â[^&ªI^ã�!‘ßüó²dëÿÚÆ) �ùÐ5Ô*'r<&Çjÿ;Ë-ê´):¬§ 5r&‘÷#•R?é³|Ï‚ä–îùG‹†gþW,L‡Ó‹Ç­¤4]Ët�Z8¶sô½"Yñ£/o&¹#ö½Ø…bË*\É'|tãPaïÙ7:Žê)Äæ1“®y.ãÌCQòÀÓÙ•ãj“ê�ˆ�£›Þ<¤Þä=‹3ïž7 ú“÷ˆýY?ƒÅhU=brÌ›¨¼gt÷vЯÃ:E=³ñÏàt¢æˆ[Ôg¸.OæÊlÃ+vã�K‚œ_¤ÍËöÙ.¯àû¡¿^à¹?ÿ3æU^]àá>ÑÌ�ÁìDÜN¸SVß’ý.�˼F»je6W8´ìùåKŸß[Ñ´ &/ª–Ôãs^ÌN„Ž´äÞœa[l5“w‘°îè�>ÉzË»û8G}ؘ’¾;£•ê`ÛL¢b'¶ß3ìä”c‚@§Îš)à%ê=ÂS¨Œ£,:&òÉÕ»ãiT’yœ‚ï«Æôœ,f%\s¶ì’~ÍU¼´9<3�^*ü$©ÿâà[d•¶¬˜Ã øØ gŽ1êJ{Œc#½ þ+Æ2V|@­'óUÖ4[ˆV­÷8‡®_iìßÌßdýx#ʲð—AWç�¥òUæyRO¤­ï1L¬”Œó©Ê‹BA¹éølÓEõÌzÌ<…rÆ.ÿÝèeë%¿²ªf¿,eVÔ±ú'(ª_È ~î„Fö+.,+ö,Í;½ Góø!§¼]Z0ÙjŸpc»6ªäÆÏåÐÇ=é‰& !÷�Ûç4JÃî„> '‰êç%SóÜ7<ä¾Ê;øâO¾ÜE1[Ésÿ tööqƒcJ¿eÇÝ®\®C<Ô£!v†`Þ‡!Øñ2N¼à´àͼ€Fç�_IWí ã¨kw»³ÖëÊŒFÌÃ0„XÎ}CüGèÇ o=,+;î/¿­ì~Û2—ç¯�AíôåSï,çœ9 Ôôõ§É3äÿ„7náöpèmz¸¦IŒÖÃ%ìú¦‡�?÷ÅÔQÈ.¹øÍ©flÞ*9 ìê2}^rÉýÚ|øMTo= ŒbB�:¡ø„ç~ûU·¿†qïµ¥3£*v×ÅÃÁ÷òº*QB1 ·ÿ£ô=z÷ÅR0)ÓÜþ5^»$ õ¶æ¬ã¶ñ»QšÑ !£ºñTØu®²ÐáŸoq”Ÿ;“Y‰4|Š˜oA°ëF¨Ù¬LßÃÜ—žïŽÁVŽhÜBc‡žñ! m Y®óAeêhHfG«H˜3qº'Æ¢ŽNò,ÿÙÃ�©£Q^ù>»/®û¦ß Ý��êÒÒµ x&¸Ì­6Ïc’ý{ß €�5Œ·sýˆW$Áió¦®ëm+;8¾�;7kúŽOÒÔõ<‹Œß|+^±þ”¢ÛØLˆ§wB¬Œ¿Å¤w2Zú÷׼ܤ9­'©­:W%Ë®x#¬c“:´ø =]‘•øD�8ëåe·àHXD�ýàì(mP†”1ÅWÁ™¨k”2Z¿ò•+½œh’.•ä}ÂjxòÂ4x?’�^?mœÕtt£Pgœxãò§òõ^ÄIÈÓC¢ :˜¢Î“вÅ娗'ìB^$^mNàªÒXgP¼Èé,š­5uZcí=“¡Ãqx ]�¢néˆÒ£N®Ø]v¶‡ýêÞ�Í6¸£ãbïéw2�Š…é㦠¾Ç\z ØU®*2V�n 2œ„×>«¾-Ͼߣ’ŸŒ8u'¹¹C:Ù§ÜM.WœºÞ„Þ¤0õMg!ƒT™~6®<?ÒûDMœAǤlÂRôµtÍ?=,&¢Èòî\²Xd^2[Oz´ŽHu¤ñ¹ÃK¤Û]Û�ãEÛÀ0b*…b�/¦p¥oôŽ’£KbñÔbòÈJ�È|𢘌åkž/|Í^?½«Çµ};Îâ§2Úc 0Ìc%´ §¾Èr´m¥Û�@Þþ·ë\ßP gØõ›úsv½Êÿ J•·ê¬÷[¸9KëèÌw¥6Ö›âlfÇá$V][ÇZaKÑÕÏÐ�'¬IÄĵn¤@ƒÆÞh?ò¼•ûtº¢Ðèů‚fju&ÑáRû•„6ª*…ªùièÖ)d¦×ņTc·8—%feëï<þ²¦�ÿþÒªËó_|×­\9Ÿ÷–Åãíüˆõˆ¨{ÒT<�]hú§^žÿ¾·âwd‹µ˜lvrl“öYÒ¿H”øåO5¢o€sËY3ÍÍ[�ȶ¬®žãÙ7ÇÀ}‘w±˜¾‚×l�_hüÒ,«rZé©�µ—²§�âlÇR²ãÞ�ßü‡Þÿ¢°>#ߤA$APÁб²øtºÀƒ­DÈìIÀWùü©íþåŸ:®ÒYÌÂ;blÁ…‡Ù<( ’fÙá‘xSxôž;á„oóüÄÉúŸš]�ÿåPø¿àÁÉàz ¾6x�åµ®¢²ÁÃvtó@¶gúˆšnþ©$�Ô3l½/ âU¬¤^)p¹d3xL¬³Æx¦"’תÀ$ÌÑõ‘…�“ƒv©`x¦OF#ÌcO6Ô~šçìÁ‰l.ÆŸœüK9:?ëÕøæ‚.ot¬£Å“ÝF)+É1ý„ È:é<ûìk{õ“z–nÙÈwÏÆÑ<�Ç�שּׁ¡ÏÆEyÝbåI4!2ªÇÔ –]ò6"Vâ¤yñv¹s=TyÝ€;ÐGƒØëc '²xÎ[vÖ/„¶˜S;bÈÒÌ–½œl‰½ÞÛ<žt<Ë:F}Šy²ùìè¸+²KRåÙœX¹­’_‰Àð0b;†ª=« ëÒ%Í]‡GŒM^‹�gŽ|ô:Põ¿Ë;®ŽÈ¦»yÜ•�p¢V¦Ø…Û<9êfG±"ÍCÏ^ aó¾ÞsÇ/wüv�˜ç b•¬¿ô)1Ëï:?Îüû‡evºnžtsê”< í…šÓhÈÔñ¿’ ï�ƒjo,¦Þˆ¬Â‡OØÈ¾{ÿ<‚L[‚ÏÖ™îq Ê ‡ïV¶Ø�Ê�Óê×ñUêæ·³W#[ŒN}î*1ßM‡/‹áW##)#/|³uhÁî,F§m¸»˜¾[ÙÌÓF¢wdE-NÐ+ëp¤pýŒl§)ÄÏKB�ù«Rwn9>æ–O©ž…­�þfqâëÙÂÓ<×ó½w�á ÒªKúÜÊ8‚¿áÑ4#ûðð†õÑÒö·áǶâYüŽ7ßf]0¿z|ú„'ÕÕ‚ ™k ÁíÒú°õ´Þ¿`as›”!Ëc³½‰´:ƒâÊ‚ ³˜�~³³ÐH¼®�ô’/¾3½¤íÎk?<ňõä‚õä}8"Fë1¯¸¾ ¶ãOdA~¿ICã}½{n™†‘â£6p=o+Ó³%D¶¡–èÓOÐûýùäÁü. 7¼´ã…ŠèóH °ÅÂÜêÞnjo2#4½{®tèaÓY扷�f.¸ä±s+Ò»°ÇɲžÑOSKæ>+£œNªÄ dl‡ñO0*â‚ù™½6üÊ#|OÅeÉžuþú«Ònq#æžöñ¯3ôš÷Ú'Ø®ND¨“´—‡÷TÀ‹«ïú³¶AºKû¢ÚÆeZGè[èöði™è€.úÄiZ˜{‚ö ¼äúï½twìÚr§}¡¿qšý”Nï{wXÀËɺ<�'Žîìpô ˆð-ŸIç{¯en—KŒã戸âÊyLü ØÜÜ·¸€ôä4å\yÐÕQËã±×®½ÒÇØí{à¿£.ª\ô^Ñèy²eÏ[H‡:â`h£B'q}åxUŒº–-.¹àó”d¥'öTZDí)uÌmè@ ?kÂÖ6÷qŽ‚ïÉîÈÆtд-Î6sòXâzýГVŽ9Ež�¡Vªl‘ÇÇ&'Uôâ©Úðêm×i’×Îþå¡kð>U…blæTóÙf‹£ÉI'‰2ü„{/ë â#¯à9½Zׄy­à>¥ó·ßc*‡V�]óCv‹s]ÇÇt°ä¶Í�z4»UraŠ:z/qØÓ"ÍÚ¬íŠN—þòŒÃge)Ï Ï±kíCäõŽõ ?%]òì‘áç"Ïp�ÂJ¨±Ø+ù—æ÷Ê�ü—>ýk©ü¢mûX[ì~³Ê�È”û퟼÷a‘‘`ðZêÊJxü(mI‘»ç®f]ëm¬xÏ—ž ¡'ã¬ö_ý–�Òk㙸Ág÷&EOûQådÿ)ð¢ñ©5¦í™zéâŽâavŠÑ$Ë‚t¦ß‰OV¬õÕ­Ü[gR¶ÿM„[Òévwˆ¿áZàSª˜Å¡ÁŠŸ¿åæ"ÚÿCtãÅ#]¾ý uódQ §G› n»}eÿŸ´÷øÆŽþµ¾Ç¶ŠØ+{ G•èGÕ}Vb B—ùÃÿÍÑ®á ÀbWßo�o—…5³|í@¶ÜoIý×,Àr$õ†tçž_õ°ž€®¬±¾Ø¶zÇkñráhe¶ö1†ßà±pI1\à!Ãï½,ŒN«ŽÈ²·Na,rû›Výi1oa±l¬ë=ÂEû0sÒ›]B{xNòݵ!�Q·•éŸè'Hoê Ç¿®úyFûû½;¥”#¤_˜ðŸ6XŠ\mc�ç„e™õ°ý8‡Ái† ba¡Z6ÈR “c¶ìËÛµñ¤ó1©çÏ�@Ë'/ë¬Ù�ét­ð¶¿¡ÓÇñ…2„—ŸgUoU>ð`‘ñAÇåëÄàž7ˆe�røØû‹µ\ןû§y~ˆ#<ßÑè+ûv|XtOó0 Ûär×j|ŠÙ³Ã2Å=lÑã~ãú :_#ýYbY{¥§3€Óök�gå`Ù¿í$ñ÷×-P(í1ÚvòÇl«¸H¿ÐûnFz+÷ù€Wwcµ¿©§ª¼�kÕ½½mãÁcC°q A°*éJr—�Âf¬å®× \_I¶ ¦øÚ²CNžRÛ›ž]oäOÞ5«é6‡k¥C¡ÇιègmiÂ=áèíFGF%5fßÇg•_¦ÆðU=@å >,©Žâ7ÜÕãp½\"a(Éh7‚Õ#Whà±'#TÆ/½�Ô0<ôíí&•™c•ª›DŸJÚBê—6/©Í¹�&æñ.æá õ6£>²Aª‡ñæ)éõkÒ7®O˜Ý³´RHò4'×)‹™¶šþ]´ƒñ zïn.5ðGXMçéfðæò†˜Ž|º„z%.N¶ÙoÞ—šõ{äìÍÓXçc‚çñB»kÿ7�÷:«ybõõÉ0F†‡Å”´ô­›z‰]ײ ÿ¢x 7òµ ÀQx%9³—Ò1kØ{–r�«“ö+s©8r*R ²Çƒ[2QöÜ‹RÌ{zà �õ<:÷†/V½¤ˆ±S8¾jDm§< –9µ sÝA†*Ô gëä vðóë?£•CÜ|ݬ‡€RBAð¸yŽl—¸yæ�ä`íÆù´øC _ß­Ln̓ž­–L}`õÙ›ñÆ„e­õ1ÍÌWx•¹UÜè�iÉÛ(úë1)ÁNÉcùúžFèM粕;ôÒ™ëýÒ~c?ºâú-yr±-C&߯4LžÙ Žþô™b\Y,B‹Mh1Co_‚¸Mñ…ب!K7O¾!ÈdXÏ4ô5^xPm!ϳ×'…ßñÞÃ?’ê³&v[éÖgÈ%}sI\EÀ“Ø®]ú-Õ¾Õ¡­f»Ozq‚ÇË8*.•=´¡Åb¼ãsði�\É‚X¾“¿¥ž‡]�F^üë&£tGe¿ªAÒëðMéÇ+¿ P–ˆÄÃ<Àà÷÷n…å‘MÇ84C~Z¤Ñ›¢ßK�Ðzy+ØáÛõ°Yý9V/›^¶O–î{èÇW´eÃÛMð´|$ÏßôÙ Yàÿ&  fÏãÝ=ì¾þÿ|èÿâ=m=îv}éx�Qõ\3z˜KÜç§>/ü dþó¤ãÛ<3On×ïXVâÄòFIyS!µYgÝ—aè£Ë]Çñ1q|¼Ojfõþü K÷ž°°z,nåÏI1¸,Q°ßuùE'x¶MCôRÎüñJ� ðÔ=¿é|¿CO`•VÚÛ÷õ0ôaµ�õºyÚx“ù�¸§“»^¶‡" ±}¢õŠW™èÌèü/w]oBèƒòÏ96AóðÏÅþCoù^: Ëv»«/Õ¥úpòV¡ÿP1�fÛÜßã¤nÿ¤€o<Ö°ËRdù(â%mžÖ¦Ð«3¦n‘Š_è'7ÿI�±ÙøÂ8�hdü3ÌüÉn<¾Í«vnXÔ’¼Þ£Í9Í·Ñ’;ΫOµ‡ y“%·Ö=ôžà.òO.U8\_½´Øìâø ðÝ%9þ®Àdþfn¯S¤]hžï{¦èQöýÂE£äX…¾_Î}“Cß×ô2ÕÙpS´ÅõÞöÄT—Ô…«¤zÐ)éšÎL¶ŠE´ýR½ê!¿'�‰[L&^ƒTX®oû”߈Çc‡sÌ›¶8.¸ÌÈéQß!=ÑRõ‹ÑÆV½ÒÈ«».Ñ£B;[&§¨ÓA¢wE:ü`Ž¿{z›{=iSø�¶H˜t€K׿y|¸âsåÿ€BQpœ:oeá…Ækú+óÉõ/ÿðÒ�™›¦£þð̨c©b(-œÔVuñXÿW†Ï ¼£U’�Ë{©E;Z6B—¾‡õ€ï€"Üæ’´ÝR�ÿúpL/å½ ã5Éx6)�íŸ\x+tó”�<ÆöZOým`é ëzÃË¡û�ùɤä ùû×+cÚÚ�kóBPºžMá;•ãö-´I­ûM®Y�£Ë]ß“¼€åŪÓù¬ú´mÔ]"�–G Ñ›~±v“�Ùá&ÎF‡ŠA'@O1ji+VEåý!Bg=æ=Ë«}§]ûgw]ÈϽ[o„ç…ßÛƒÆ6IꕉŸ1¡{Nɇú½ö!TÉâ%({ׯa¹R à`Ÿn ÖÚ‚øÃÛ7ö¸õ§¬-u ù}ÇuºÛvO?é’“‰òÝ|ý¤÷fTR?VíÕouãKš¾rÏO9Å}zx¾%j—D}<qå•ÐíëêD.󒉜¸úÍø=Ïlï!Ôhsÿ{÷ùº4a^î–½±ÛNŸŠÕ«€#�|ê,Ú×pU�Pñ1¬²åÝû‚Ÿ/b'&œ±´v�ÛíöyJUãF OˆI¹V�6ò ¼ÉàÍõ>ÕÙ`V3ù:» úö þÿ“zB¬o:Ï>¦ÌŽËIOÂÙ‚ÝÀÏe ²Æ×{|¿)ž×KÀH¬ )&L[°Ñ1¡vÒ­Â1ÿÀ/zæ‰;ë‰#_€ß—ÝQ¾yÏinÔ¹‘™mCÐbm•X—–f×ë}[%q²ž�’­`æMaýÌãCÆ�µ¨ð\,"»Ø†-6*pBæ#�ìWÌ3ÄÏõ~§Ù낆ÃI¾Ü8œ§V”Œ¿ø)8‹¹¼Å`Þubì c]®©™Ô/ bý™çÚ}âf�ç7õÊþDÝÉ7÷ï6[L·íÖ–å6ï3éuÉÙÖ%ô=Ú}B_¡·?á¹}Õþ_Içy¾¦CÓ½ø¡«tØ›¸”ªvÅ#tTNoË䜮»!Öâi†gã‹óË®sr9>a�dž�N޶²m›lèü|s<æÆÑð,>ÏØN¹Á°±±Œ©Äè¶ØŽÖÎäÍB�[J€^P:Û‹~Ð+3Bû�S쟥¡ &5Q”킾¿Æá…1‡p­{��¿‹Î³ÅŽ,Ù´Qÿ ë¥OØûÄFÿš â‘wžß®ô;�e;Þ›ŽP†Í‰¤ÅÊ='á~"Ã…Ô&ªL¢#…ÐÀÀåýÊå¬SÇŽQ¼A·k�Mí8ýöh•¾@Ïæ:Ur‡Þ†rؾ]|ß/W? ÿL¸û¾ž¶w¸—¶OÚåûòê¾tQlØã¨äÍ,Ò¥”d¾ `À~ï0'RÃçÉãªNw‚ÁîŬf1w<`9è?œÎ¢S6<"Ç¼î ŽäÿW®‹Ðtüâ¸�ó¾£$:ŽÿØõicÔQÅËݶ~öý ¹»L�²=ž,ÄRíÁm`v½$™ú<ž N&=¿µCRúôqpÄÁ3ëÊXDxoÄo•$ú÷‚×QÛ'òmóŸÇxP”b rk—½’ÔQÏk( íY ˜Ž'ìÑVŒ8àÖUsE˜‚Î9ÀËæ²^“j6ú –0b÷�ƒù¯Õ“ˆƒÅ��¶‚’~JÀƺ«<ɶUòø°Ã‹=ü,�¯ ´m�猈äåеéŒRº¨VÑÉwÓWUXhýzdÿ„ò´†ú¦½çVè—´’èU*ŽG›ø›·@;ÓÕæ™� rxP*õ8#HÞëó°aï§Ø<9‚õ¦Á_J0ã]éÎ w`Ôi×vj·jsÿ=6– *!ÝtŸ®´üøJk<»F]Þ’n}îÁwc8¨Èq #]:öP“nßëÿ²ô¨î—jÁ;Oúãï–Ä…šö7q�›ïY¯I°cÿñQé+ƒ…ü÷žÊs…W—õ—|§{ÖäAÝ7<‚-ŠLÃfp{ú˜äÍuqß¼�"³¹B�°„î=47u½eóËb8§F{� Íuƒñ¼·WÙ†ýVéÐÅ`•ûL‡�ßY“zü$‚­0œX D…m¥& vÓVŽû—~ß¡#'öÌËæß/}îE Üwƒ'ÏÖéO˜Qp_€`– pß_+èI°^û;>Î�}ƒÞgF²/Úz‰9lŸdyâÜgý)%Vx=†k« N(0µÓVè(Õ3|¯ÿñ_ÿkŒd±,¼°¨·ó~¯xl-È≘Y{ð�}O³ÒòªqYãgxëS.pÞW9!6Þ=»À™‡šyöÙéÐeŽú ¦dÛ�B%ùüSï¿ý}¿&رÞOŒ`TÎEÒ¸‹V f¼�ÆßNè5FßpÿE½²{dmåïêqÄw¥Çð<�þHÙ˜¯“ÎÃ?[x„Ø.tŠ;ðrÇøSe˜¢dñb½½=(X¤Â;RiPšÙvûv}�ÊGÈü i�R6isìÿÔìÇ2ý]Û�£ð¡ý ^îF}Þbaí1"7~AÏ÷ѪˆÉÈSô`äaÁ}x®ˆêažO)ë`,Gš¨wß‚Š�ô-­Ÿ@ì'},Ë´X¨�âÓ¾Oæ)65ÃF£µœ']Â�bŒÂÂ÷å(¸o�ùüúw�e&甆d„§î ± MïÜq&ñSïëÆ¼æ˜ýÕb“™r+‹½ÙÄQçm‹‘á×|ü9ïãZ¿ä$ª%¸ÄÀ£MX﯀7ž’»"ûëíNÅ3Ä‘b�¶õ{ÙÔ('þ0ÙñK¹íôŒŸ“W·)VÆè7®EèéëJ&p›g–{Yïê!ÈA>¿ Ù°Àßb –Qe] ¹+cíÙ9Ï4ÅžŽìÒiíˆßDÉâ*~ú¿(óžuzãç!€1�`Õ³ªï•kÀ£|-™e˜ÚEÆ‘-ðņ‹Ø‰l± Ïø|$OÌÑdí,[÷wŠë.RþgÖþmIv\Wƒ)UctϽüÿaûýŸÅ¶#Ö¶/쿃Ãööœ=FU$¸$| �TV/›Ý£2S"AÄI$âôìóRœî¨iP”wl=e�ñà½Ô_=�zý£Ú”kGƒ’Än(¢Ÿ“­êïwQ"´iç€3‡¹F@n×®¸žã.Î4$û�š8‹vJ­Ý_ï û¹~À_CÈŸ, ›‚Ø#ìüü¦¹.§�ÎŽfޝðÛΖCx•ÓT�TµìqŸU¯Ÿ—H ‹X¹cœæ¥Ct÷ÈÀ]>.zZ÷jIÜÂÄW{¢¿¸ä´ä©êòÂÁd&az¢¿ùÔ‡�#ÙìTɳ{:6ÐAfÅ¡þõç H':&°_(¸púÔy{^äPÎ1¼’{-=Åx—'rNž ²-޹³š×‘¿>.ð×ïwõ-¡ù¶¢òo„�f}°_ï)·³gL�#ªwÔ]PzXÀÑÉ"ÚM?;údrí6ç¬þ„<œýÙþ\QþÀóÄê ¢ÝPÑÚ\ì�uUƒßPÀ÷lÿ%3§ vã4’NxÃeé¥:¢Öwóû2í¿ß�ͼ„‡�O*4¢ÙnZ<¦@Øû úåÚ±I2²FRûö”3¡Ÿ<¾ß§  Š,…ÉÌbpA£»Qݦß 7>í9�ÚÂíðëc-àݶçâ §B ô§ŸJ÷Ý/º¼�� ?¦�–*‘Šs ÀŠÐß/WÈû§(l§Û{;ñ�÷p§þn/$íx”q§7®@‹ g_n`¬Ë=ê)? >P`{DÜvo®ýl5ß°q»pkAë2O¼½Ð¢ã9ß±AͰ$Iaû¼eœ…áHßäø*÷ŸJï·;�}'ÿLIê2Öí†HÏKåÇý·É�°¼r?5¦l/>âvû\�óïÏ_êŸþ~×ç/ÿXTX”[�t“>ÿO²“ªEØA.„0Š'ÔÃrµ¤úÔÿ]ªñˆ�rÅ×·ø RVØ’ªxÏ×/›Ë¦ƒá5‹Wªr8°>¾ÒÁ7ÌAªË'÷9ÜšO¿óRvÙá’vžƒµ¡–¿£ß¼´…E…4Aan(Ò'ô9Q/’ÃrLí*Äóxé~@¢ÄÒ|rÃÿY(âT¸^lW.qÃÒ| m̾¦x`t¾_ú¢~ið’®Qào1�ÁD öóe(qèZšÂ¯uØÕ嘎^-(¯Õ¢¦-²ICSIúO oƒå ~[„“*my-'ìí�§CD¬ÇYÒ Î0�i®ÄàéxÙ7ÁxÊüöä°L¦´<î|iô& \mn*Húô‡˜•ïÒy“¡N3Yäuc`4ÉXÔ7 Õì9E¬Ï±å³/2âÙÁ§uC�ßåñ½Ã°Y® Б°^œ¼$çÇw¡(3ÞDS‡2eâÚŽtç‘,»>�ðíáPpǸ‹&æ«Ã£Y��p{…û7ÔK-LÍ2†W)î#ôS툗W?ÀŒÄÁ�<Ú"Þ³B‰¬å皘‹ñã¿Poñ�[SCa;²ÃhÙžîw{LÓ³¿R¯IÁ—ùÍCãz8™.Ÿ^ޏ…›ö¼ÊŠòøñŸÿ§üTHSmµÝXä"¦ÞSy€ãž5GLáºÀYgŒ9ôJ¤¶ZäÿR¸Ÿ?ÛQu&£Â6¼Ëžµ*Ü«Eø¥ÈÀ9æ‚[kθé'Žaâ·ˆÿŠœrÀ—mùOD"üoûýõÏϽË…Â"UæÖ+"¯þ…-€QàâŸX›ýç8O°çÇ„œtÈá'ØYæöÒ»¾Œ¾žq}IǕܥsŸ¯Q'·Ÿ}x–òJ9qÒÜ‘ÓÇ?õú�Dn|¹Ïû£ wb¥×ºÎ龯àx^)xÅvº©%�±\v¶e�N�›>4RuýñÙà° ñìùýë«è錒rß1rÛ‰�ÞhâkœÛÏeш¥éùA!äxÖ›ÛiÑ^ÑúÀ¾ŒW‘—�NwÍý·ÌÿE«œ®µþV!ütÇ¡,zÕÜœ2Cnà…8˜x¤,’­˜OÈ›\è¶üL00‹üxv´`ò ݨâà5Â~e¶�Þ›~N'¨äÜd¥³’r;%Î"³@·åÙà!ø»}NÛiÞ¢õ‹¼ñéã¬Ft¾ég9;4d§Ðrãî×iÄîtÅÜœþ¥ðEs–±´%JoÕ§²®U�ú ׳¶»÷OµæM²!?>ÉÏÐ!ŒkÅW .÷rKt÷‘4f”‰ÊÊd¹5/$¸ò¥À>Ì5Tg¿u¶ˆ¸É\úÇ©¿ ÷6�;]O?uŽí5ù Þ{³ãÕtoy}Øið:[[(‹F4YV£5uˆòÀ�s6÷(ÈÓíÞ¯ðµï| Mq­üìGÏC|¿'!¹¥:<ÁQêç¼³œröî–o±'Žö~‹å Ê)Mݬîô:Ï8¥BŒ|„¨x•�%N08’u塹ñæ+ôÀ¢vòyºíŸ'œÞ,g ¼örLúSƒià°ÙuMHëÇÏp�(àöeM«üžÎj™Í ÏŽ�\×j^·ª“?æ“[–é–¯~×çÎ'çùœö�Ó"GÜpA'D>ì‘ÿÐ'zAqbäαS¶Éù„Ýf)ßïzšMµ]Íy^jI�†úz¢à�YhƒE”~1*§qìà »\¡jhy""öt÷~ iÂöuÕ±X DžU¯ìñè¬rRܪ¼e§Vϧx®¨�ñ‹=+lªÑi‹àTûÖ�(*<|cùÓÔ±JÛ²°#æ}.Õnì-V?­Ræí¹*Ÿ\œ½÷�ˆÿ-§¶¼À×WXA|‹¨?�]¦Fã‹Áq@Ï8 ý±j„Ó•TÏݸFžòˆKÒ.qt1½S? &å#ò¥A�a—Ö]þ§íÖS“ë¶‚ûÒ‡xüQùr¸˜º ʦÞB?œfNÁg³ö¬ðêÚ4úõ«Î|t{Bï,$äóÃÎ�¯Íßöi}Vø—ÓÌ l?ðRèòPý¹¹µÛ]sGžS¤³dP$üÿ4­>½Ûc "ÿËÔ75ý¬øärˆ:–ùÒßÀ¹ËV ‚€¶„블Ç+Ô{²rßvÚ¨×WÞü¾ô ;° "×r«ý Üi¼ Âù´8ØL![X×öR«ÆûiÎ\Ù^€‹ô:#âÒ©¤r7ÙƒTßœ·œÁMI6ðòºbFÎÅÅì&øï†7oÞÎì7Âçî�,ªr‹Ëå´aD”³;z‡WüL4ÌŸÍÄ_]Ìmƒ¡îú ¿Ý˜<>#`6†‚˜ŸNm/ž e][h½¹3€’d¥+3î!¡4à/©Ÿ¤�¹{� üª€:t2«›líÙ%?÷ (åO©X®Û¼rD˜j¾5vC–ý!*,ˆNìÙ?ˆQ#O–÷*�°ŒÚË`ùîçÂ\Ú9�ìHR-‹:.F,Þ%–jÕÒ¾xHêyøÙ9�÷+ÜRÁt_Ñ=º¨ààÛWÀA¤ÄK €�ô[éçç:È9%3ØõÄsúœ{½ã^öÒšŽ´ŽE•îàlÎDª öc ŸAál¤Ì}χ6³)ŽNäÉ–'ÝÏ/‘÷# I†‚p¤¼Z3¦ªÃEwøJ�¶l}tí¦ÿ<.yñ¯aãL “wUç¦Ê@fç0¦Ð*uÚP×éí+®z¯uW¼ …ˆéØÞy±h¢½ó�ìÚÕn©êAó#zòêL®Ÿ›"ÿ\å£×97Ýu&Š ðB‡ðʇZ¶°±”¼fYEäé÷° ÿ&bUß™žâ.BÒ�éÕm8ßÓ⪦¡w§Þãå;ïµ�íyÜÛYéLg�Þ Æj7uWøª Äã! í�¨+ûõ9‹Û·)b”IÆ2�€HܾªtË~÷ÆZ£r'E·•rö¼î`7°*]ØaÇÖrT‘O¯+0Öj+œîå<�B¢™™4òï$ý-ïfnAç¨ç›©�M"᳃y€KÒΘÍGÄ•º%ÏJ¨~¬fÁ]èL_Õ¯-Loï)�eÐ}” ‡úðKC[ú:ij®gÙ2¬¤WûœËÈ,òà¢ç›O3‹Ý:”ÆÍñÞ V8,W¯ê:ÝEZpš'‰=Ü› ‘êûòL-Pw-Lõ7Ñc�.¥s�reß{ý'>3 ½æ±FYÿÿþïRÀƒ2†¢¼h¤Œ·2½¨(}¾Ó°lòøqÞëMïÈ�ùvQ:üþ y=E¾ùêG1D^½c«è¾RÝUöˆ0ùEÍÍ$eKDì™Ë:ido9.7<‘ÃŒ-‡ß“täƒ]^•íó†ù¹JФ|V~Ý#7‡oÖHŸ•UoÌ8MÚ"ðÈ"Mÿ‘S®Þ!èaÕ"‘AFÔ¥ùŽ�-¦2Q}€ò`+¾íL¶òPN­–°ÌáÚjZÕN®ŒHÞ=‡�Ëa9(bI;�ã0ï<—ÓßyÎ(ØûÅ Hi â~ï®A¼[ß‹Òó� œ˜Æž¹¹vÈûõSkÝh�çoôw&*ù§ˆªÏħ2­å|dœ6»žÙdQ ?/�÷}\ŒH½Î €]:ƒnO„„µs§}•Ó2‘ÃÊRHÿcQÿñ§¹‹=g�,©%ƒŸu%êÙõ¢wSÏu¡^ìTLËñ5aóÖrÛ¦gR˽7a‘r|Ó*Íc•£¹ýÎþ„—�'V›Î«êMÓæÌQÿf$?ÂΘ“o|œíÍ#<<žNVœ®Ó¾À_žÜF\º^UÞ>¸û8i8!5ý’p‹¤óý°¤)´7HS…ÓrÀ½�ã<ÜRG7¼iq}ð°›íû oª\í\Âý?O‘~¦;©¯» `²Ó±]Τº ¥ë›üm¿-â‘[܃ž§‰ÒÆ–Îïã® ¯W�µ·÷‰ºóùýøPÎþyV¦øà¦[µw¸>ÓqéÉEá;wó úáÓrë£ÍŒù^2 î?¸îï¹ßö¸ýsÕþÿz‡}z®Õ åíLŒÏ·£U$“ÃÓIyÎr²Ã[A;·z/·õå ÷ÿó!ð3«ÞÞð~àȇÓ ç£�äÜå”ÊYP^”�‡Ç¨(d”²dNŸœ¥ý¶<üÌ�¿Ä4[í£Û�²þã€n›û]m˜êgÜöAþÌžót§ìv¡]¨3À¹ôŸûêX;‡3}£È¯ÂO^ƒ`NÚL^ö$ª7WEÃÐ߃ S³ìæŽíZÀ«Gb›qň¿Ð±1åÚFŠ %~厕*Íd€‚/µ4� NìW¬R›Iº@ß8£^ïdrN~‘5jçÇsœÕ(3#.ƒ èÉÔ+êŒ%Éù¯è) w#µo× îŽGRQE¤(bÛꕺ˜ëLÏ7Å!´2™ë˜=›yx=¸&66_&GAõÚ·xk_ˆè#{]GŠÇó®$�¥‚ª{„þê™_õÐûˆE(ŠUí([ ñ­Û¥¾²Ø37^Éôd±[¼KD‹UÉÝœwùÄÛO�TÑäT‚úC[Žm½KíºÖâ� tìXçn‰ØÑLÜ¿¤›üðÂÔty83w«pà*âp^‡x=ë´j—MÚi•@ë6Ú®£\9#aÝ3ÐîLd—�¤µÉ:’Îv§�2¹øuÃc¿ixÇm;¿½XÙ¯º¶áeÀy>bĪ]"ªÊ#³[zÓqDj°©¶¸lôæ'?/Hºç±åd›<~^Ou±¡äôYôå<æ ÅìIÑceñ/øþDÑWÖ‹>0!s“÷�ö;¼HpÉ{ò›ç]3÷F\3ƒÛÃ3íËÉ®Qr]¢ñ®¦ûÕá‰Añ¯W 57®úYÔ*⮚å:_V� 9›å=9¯|ˆ]]kZsa��Ëry®]}Õj²8ÆÅrꜜœo]Ù-Àý”µ ÌÈž¢^1W~x¡��Âηæ&ýòoá6Ï~‡q •3E6€�ìiàX.9Ûì䞃os+qc¡©Y[ÙÕ"»Nø¿W$Íš¡gM-‰å=M_æ÷­_À›Ë ž%ü«�6XÜK§“'Íæ�æî™yª]îfKë?q(ýü˜¨ñË=ÎèðÁ7ýté5’-$‹cŸC‹(¸ˆFã׺Ä�oóÊ&\‚-™qe³Æñ·x{ݪa—ìNz(4×’ù/7îЃç¥MѲ¼WãHÚ·›Fè\ßÖá|Ž<âç¼ÊXZÄérÕçË£=E<p…�'ž†O¬ø=,"r]K¥íïJ¡Ùî®n°¶ˆ\ã_¿yY_ûÍ“£2}Ʊª÷EqR7]èó‡F:^:ÊA Ó°øEqúï?r=Oå¾§OÉY‹”÷Ÿª—߯ÕOÛj_oŠ× o,ØâŒ˜û�œbÛißû|O:WŒû&¦Öü€Ÿxþ�ǵþÈŒœ½9Ç˜åÆµ'ƒ ŠhÐTè@Ý)ØéÏ›{mÇusäÿŽŽ¶qzõ§Q·“AYl �Ý xŽjËÆ÷ñP¹ø�7~ì1ô�ç¹öí{xÆïŒ“RE×ÇWËQ‰7ÒLŸ4¢…S• råRîê8Iû€­äYçwAn»;–þmÕEçûsrÄi‹é‘'øfB;ïûÅ;qÇÉú{3Æ·†Ep ôÞ/{š»:™ef0Þ’r¸¹î•‹Ë½êŒ Þ'4ÇÏ¥C¿(x¾käÝí\ýö­Ý~ùƒñ”FHÙˆ\Êõþ§‹ÇÿëÏ„.þµLðS '–¢¿Ø]D|—7�¨-¬ýn ²ûïûÝÍÎE?ç”òû�ÓÐOçä§.mü[îÊ}\o ëgŸo¨�î ºõû{�ó›2mKüä„N^ž·ºa;©c`#¯Ä><ìfáŒL©v\^ôSÚQ§­±ã÷‰Ûþ�ï$�kéÞþßC,| áîCwÚ K¢îÀU´¥pv0‡mÒüxµ‘Ô,· üãQåA߯ó:§V×C ÖŒÆ8fdMk ®ûù sTbáð-ÉB~@%ÝÃM »x‰³,E$ü†iîÒÏd‡Ý½¶�')\É4/�¥T�Ï£® úäYº§ÝuâšG¬q–Œ×èwÏ“ø”ƒQP&×|pƧŠËD9òÍÚ�à×1Ç^eð[§µöÏ®“}™õBŽ8–Öiðó[e&ÛêŒÆu¾“WòßÑQRþéž&Ì=Ù 5Z¸R(æ:�4Áž�¥eªÒ“¥”GÒË™Uî²{¼aãt È8Ô3“J=Ý�GvsPì5)ßáÄ¿?Ž$ÿJZ!ö’€IïSë•üzŒ …'ǽØxò•ˆh{Ùû.>ÿUv5ÒÏÔ»F¹@ÝÔ·2˜|%À�Öh‹Ÿ1>¬5d⨼$˜®jo9Kà½XšÊô*Ã�‰<ÌŒ[4ûôâC[‘+ »NRÍp®—΂ßÁËÑÈ7S<²}ÈsåÓkÈ#Ök‹m‚ªXrÒYáô³ûìwŒó 9`xÏõÕ-9 -•¯BíöŠhÞöù/DÈ]{…jÓÚ~c(ÙÇ·Gì¯D¸Y²ƒãHË Iä¦ãÒS–÷ˆ¯Í¤?žu|û<ØØÑŸ`é›×V*ÓÃf¸>M‘‡.ÁÆÏ«:«æöÛ~ïxþÔvës61rBòÇ¿ôêûŸ Ç'¾ßÊ {˹:"Þ ^qêóþ·�±ó‰ß�+Y©»ó_æÊíŒ*¡õÚY#5åóŒ%N§šñ „ídL çä­W¸E{�þOÛj1D¨K{y‡üýÖº[䕚"ŽZÜèo§"äº6†¿µ™xÉxîcXÉÇK¬;éNR9åÓä“Î*ÆoŠ÷t»ëC�í(Y®·µF´–…ŸBJ. ð)98僀ÈÌwè³O7h±êÜΗÊ—Owªµ�£5¸Úûoäž;M5J‚ï ‹¨1BÁ˜ùqº¾ºò·7ÆN`9íW#«åó®ý_/i,-^ÕÈW¥§.“£íŠû“ƒåÌJI¾hã òQ‚�f;ÝŒØ"&\N\G?ÆéØv r)O<ôœ0ß–ó¹Ç¤h³k¿îã)9饱D퓉ñ„E^ª·öUk¿3¾â¿>êLzöJâÄ_p ÜöÝGÜq9µt•%Ê‚›?2¥ß-B‘¹°ßó]s¾.ç6bu‡Ö¶ÓÝÙÅ OÐyJ9M'äVYß(â;A¿Û©ÆO¥Çzš)8žÇôP}²E< é©•[×'æž­=Y®Y˽ ZZî¡mü»¼ÏØ)ž\nLшž¾±)êäÓCõØã‚Ð Ež^•Æ”"’Rð&ƒåØZÄbyÌ4øhŒSÛ—ùIMtø†>vö‹Òu²|ìt#%g½ž´oþÔ »¼8ùÔ±T]b¯‹O³Î×öf…4ˆ�Ëómð cþ!Ú^ ßî—,p«RÄ­ÏeZìí]ÿ¦¶·©/ªÀÉŠQ êQè̶Ûï_ñ}†öL‘Ÿ“wG·  GyÁ½-|V脈*ó+Ö‰#%DžÈõ8O¯y×—eÖvÓ3¶;’M_îwõ7Îç5èï"Dº»M¿]ïgÙ÷×Nue¼X ‡²¹ûÄ¡ý‚œióƒ©F"ÃæÕÅÀòfPF¤=í¶ß}à´Ý©ÖÚ€�QwZuîöœÉ ¤äQUsëÅ~ŸˆpžŸ+õ˜ý>©¸,~�RÆ5Ð’ÀNÐGkGxìµä}¾&ÐÑü©+r1Þ´Íi2~Ó¶3. WxG¶ˆLèm;m|ë"�Blêh¾iDÞgÊU*è—¯âð­CØúÝõMò ŠOÁ¸ëK{ ƒ–À4Èïrg/œY¯'ðì:eùKŒÀ[Öþ÷:xÜ~CÅÿFÙ×¥3ôáf‡ŽFíT];Í™Knj ºÌ¼Å;à^äuUºXŸ7Ëé¹Ä:¥™�Úºm¾{ý«;Õ×±ò|ùm`ë˱´¹�’èiôÅ (TüÌSq‡ìôèdÿ­¯gŽ‘ÆŒã6e‰÷%R?gË]¨žÙžo>d tþyÕHØßÈù½¯òþtâ‚ã¦ç‚´Ö[úÜŽ£N¥,ÿ Ù§&Ÿ/4,Ê¿�·<·è÷cRžý¹:ÝíXË»¡¾XN`AÁÀýi9ß9²Ý'ôËËÅko*Jkwlû­bæp›í{ò)Jnoɰ©ï~w”i€)βû½{jRû+p¼õìôŸ`ŽÈ1Z<ºæÛ:Á2¾Æ Ž}7©.ß{x8Q,tã·Û¯W¦\áf<.äúÿ†Ãßv‰14mÝ<ÖA’ó0¬-=¿”:™_lã)v}�àöJ÷:”ƒÛ{Í㑲ð+þuꋼof‡‡/QÔPþæ)BÏ})NâdRBTá¾âé͇áW¹÷ƒ#’Csî Y¿W0ÁN³X1’ _L}¼˜:y{åN"ò¯Õ5sêÅÄ÷ÙãqÌ7{{x(†ìçÉõm ýš�kLuÇÞéàĽG X°›#_ûˆo:I DeW_Îqâp%ª‘pªqG>Ê2É|€ºñdG'PŸÍÝL‡ú1wÑQÆÍÆÅ‡ ¨«£¥¢ÇfTðY,¹¹Ÿ¿VŒØñ�T[Ñ-’ÐüÆX0�‚¾=]ÝåÀ+¯íi­÷ªÊ¸);^•ÀŸE\‰¾3Òª;,h¼Ý™>ß5p¯!"~I—!ƒÅÛ�ÌÆ ©¾›àÜ`‰T74*ö³ò(øÓcÏ#´iPÎößþñÔĶÒ*×gj|oÔë‰@žUû•pEþÙ�C}ɰ|‘vœ®[„–Æg³ëÇM$“›3IÊœ*"2è7™µa‡cýª‘«[Á ?¼–øÛ^ÕËú“á¾ãW¸¤ f¿Å^'¬¯çzR�µ…©M¸Þ5´¹2Ùå,ÿáakä8…’û•‘�­8•Wª Od�ÉcµÃh¨;rÃ- ªDp=½””€Ͷ�ÔfPr·}:Å~{í{Õí‡td·©7’ÿŒ�»�ßæÆO§¼À±‡/ÝLu¸îø)÷‘<êªß±«Xè8ÒáA7ºÛwSy^_ E=çÇ,˜ùÚ7†[ÛPÛFÒ<¼²ø;8ì~ôk}›,þÍü½àkÒOo›2ºþñŸ{ðxü;× |î®õe�ŽrÿU)cùøßþ7íã—F(Ù)qLØÊà©Åv»óëýòßüßÚîלÁ�µ…Å/2lÐÖ_·ÐÙ׫ߧû?ößëùŸÔ×Ú¨k[s«ð %7Ã8!‘n®ŠPã=ˆôÇcM8íî©‘b{ä—£ãô§†¬ÿz¤¶Žv¾ŸäñM8Eqå˜#‘WD ù—ηVQÃ8Eîªã“›‹°Ì ¶ëgl=úN»ýë^ÑEß¡¿éâ¨ÇLTç`5­�º³æp”ç­sF„ÛÝr;þDÛß:îz!%˜ÿ;NŸµ\Q–³j�§L—œX §.\ŠÏáX$µÎgêU¯ËÝñ•“ìòóãª×þ¡‘y˧žæ:Ù鹈ȱÓ~ÖÙr?.QÆlGÐ'éà MÝÁ]ž½œ69v0÷K9DNeË—bþ lÚOßA?�#Aåxü�Ó}·ˆ°­á»jâýôê�ž rå!b“œòbUÊé©÷�¿ kv9Ò6l8jÆŽzI%§ü{î¸�_âK.Óo�0^ßÁy~ÝšÓïÐûÏ!�¨æ®Øv�¼¡0ç_Ì)&C]Øa7Ïvz×ù\?ïµÿ�ÔܰvÀcÏE²}^Ôe6™Ÿ4Dñ ?lÍmò²Ýž¨~È} P.¸ò·¬èŽ?†);î¶•:!ÒÑr‹aGs;&l÷c > �'>vJ͆­ˆœ…(?¤º²EìŽÂµê­H1¢¸(È�½V^­+*\N§än$ ·_³Ç��Èõþ€Ý¸R`k†ÓÌ¡átgË‘+8ŸäŒB(J©Œ•Pâ'ôÝÙå`j�úÆ8,çðÓ-T8©pEkW�6¯¤ G–3szÄy6ñ1JZ¤÷¯äº=Kœ·b'ZN¾à¯,È9µÓãœÚ¹¢ñ{‡JDÔ“•Ž3"f§É0ª}ùM?ÓgÝË¿Ý1þ?(˜_¢­Oàï§<.³Ùà_®:`©žê;»%T©6S}†iÐÔv¦²z"�\x%ÄÆŒ««\ŸjϹ¢�–ȉHÈùõõo„Ù¾/ª£®W•ó"éö•n¯Ú6ôi~+žêOõ0l½Ÿù«àm?Hu®©$e[Y¨‡ÚÉóbþb6E-Á˜¾Ꮁk:Ì1¦)$3tÀ4E™àÔrãF%ú¾™¨.P§y·±æÉì^ê¼PO£ö¶­’ÌR|Û©¥9 Q•Ù­œ‘CùñXë´t”òoüþ‘ð~¢âLíGœ—öüÎsº�Ït5}3õ�¾_U?|N¿ Bî>%qCÀÙòÀç䜻՜rä¦*°ùQ1™½–�Øeò òRGOÄ}YàGÐCäUTÃ/^û9>) ¦u¸¿º  üÊè�ó3âŽÃ½¿üµ‰ìéŒúË#Žó¿` ‘ì�Üqh}͹hþë÷“wc=Ñ2pÜ;=Ôþ=N‚¹ÔJŸˆ|½À^{Â÷–W X¼!¹�"¿ÛYŒw¹Ôzû¸Ïú¹úÔúÔ—…íûÏXŸgõ˦{´!¿Ø‹fs„wÁãÒ o|N¿¶rDz�¥¼À�ÿ�眛=¸7Ë’®wv`Ÿ”"×V#bRm×lwp/\spòò·ÁÒëŒo(�Ùê�'^èÔq¸e¹Ó.ã}ôà �*ßKš«²%S/…þš¡äНº9¨W–Ó;H{©•ÞõÔYÑò¯æÜ_Ò°¸…‘fÑZ$67ö,ó�6/—2†‘è ծѱ¹ç¢ûÇñ®æ�ûý8¹-b8Àõu$‘ ç¢ÃÆâä?ka“ß0'RIêJrâÉ�lgæ$Ó@¼D’H‹‡ÚˆÒ3s÷zš[tãòÏhÅÃâ ƒÝÍ2&‘>.ݶûsR_ë”NµôøÆé»—•.Ë R£×í«8Ìêý|ÕþÚŒCÃP¤°—#XD‘�ü0èt¡|\ßD"E{²áû Hú}¡Ã~)Û±©¯'<,Εˆ^‰·.:k?½Ú2LÃxÀ´LÔ SCÜÀ˜ÇGxï×dP5�×ò›ùÓʼnf#$^r¨‚t$j<ž‚;XÀ*öŸËmîNø±Œ ùÅ?Ì�gÎ`3˜Z�ÀæŠ-ö_ÿ&_¬7ŸgÙ¿ñ`ö§Ø¡“JÁ*–¼àXE­Nh`Q¡á$~ì°ïÑflSTûC>ü¶ËI?äê#­¦ÚÓ Ó°ÐʱŽé3i§¥-ŽÝ(�ÏnWOþ¥�àøÝT&û¹®ÃÉÏNÜë7}~§ä)1z“-NĬR†3˜[߬׷ȸQÛesg>šúÜ~喝¶Ó‚µêÑ™ƒ|-è‰Þ}Šm96 |ÃÔÚÚ ÓÁ_èõü÷Ì×w‡§²ÆÖÛOÞÊC·è×è–Ãtûì3×olIüåj9°$¹Óý¶ó¦‘BÓÇÏrm¼ÚQaÈ;r} —•¶?u6ä_�Œ;ÚÙ na6ô1ãåðõJa�ѳࡠùYsòó'• §}®È·Úé�@dŒó¢§/Óí­âËŽ7ƒÃˆXzÇïï5ÖMBÃÓ;À~¶ô.uÝø-òí‚ÁåIGEÎ:|_Û±me‘1Wîu,ÉÄÃ�aƒy¤¶l%ˆ�Vk8!÷Ü2S\,æ¤]í7Åþ=�lä"<ÁÀ鑼 ’Ìr.ˆÀ›õÔÀõó×þ9áÔáõç[?P²œ�‚\l9a³çß Ÿ·OÅ»~ÕH7FåÔÛ‘»³'(ÈIÇ—G‡ÞŽîÈqË Æ{Òˆ&¶Tª�³ý1gî‹�[.½}¦®È�÷Ðq­7DÈ^�^ÌN×Vo>íð¦e‰7R)9øvO42{¹Ú‚§FxN%$§#"sr9OªjvrHI^.È1º®¤÷“Ù‘lÿ�cÅ"÷8¨¥ŽýGYÑÏt?•9ò�ˆ6ï%pÇvdÍ9ðäZ…_L§ŽÝ7Ô@’-qIk|ÛÉN³�{»Û¢ÓQgvÀ >†]á'<ìMEî�ù;‹&2T·S/w|’þ-î-øb±äFhø Õ'„Ê󉺩xÖCV*…"Y ‹y"ç´hË©÷†�@üÿ ô\a(ùzKaÇ]èJø¹ê­Û\mmù" åZ©¤áNåßÊ ‘3W;�û¡‹Éœ6kÆ…¾èå‰^"êºø“m.î ÷eQ»`‘=×§b¾°_FÉhùw+ï.೉½× ýìz÷fòÊ ­v9¥L ÕWµ�ýú}#=à/说+ZÕÜ ½aÖd•8Ï«F þ�ðÏcK§vÚ©§Ûéž»%Í�©ÎoRùËÕŸ¸=”n—“Ÿ 7M°¥yš»f¼—:½˜Ÿ “ª=yƒ?q·Ó€9¶à9ë ½zº¸H^ñ欼4Òßß(CÕï~ ‡æií ʱRyÔb>þ[?&�KÖL�nÂuoÛÌï»~j.Æ�SWÕ•ÓæûîöÛR¸žó‹+DÝ SÛ-9Òsyhn¿rj,:¸8Zž ÷8-–Ïô­²EŽmCø©nÝ®‘$F?¿pFD$yB2Qf„Þ.å9WëñHïA~(»ŸëUTõüñ8Kíã8ã¹Æüÿ�7DŽ"bÏÄÖÌ×S� bæ¼4PéàŠ�²½"ÔÒr¤ÚãÆŠ‰>§ÁOή{¾¶ë¶ÜsNõ›‚Ç!1¾´e{Q±Œ Ïè:�Ê^G½¥¦�õaÿFm¹…-ÒÿÍuôKýí=‚<’@»OÉ{ êÎüaHCpdýŒwÆÂô=Ú!9,¹ÿ¼ æáËÁœ¥‡¦P<Éà [^çÎ xж�IüÈѶÓníYèßõàà·„-‘*SæäߢÛ�¤Oaô Úß½ïâàš’›Wt”Ë*-<Î} q�K&J×øE"¡&ï›×’$]™`‡M0šhoÓVUŠ”~%ñ™E÷e5Žà ^¸TÊùæ|Û./oøˆ´>IÂ%ãàë±Çƒ� ÑÓÄ{»âé Ö×ߥ 8Á�ÅhÄ™U8ë™:«à¢ƒ*;a¯€ãÜØeË3•»Q˜µÈRÝÑ®·Z¶¥,ô½hÅ*Š-ßÖˆ˜Ôªw­Uþֽ݂à*¦ñáœtªqSë–°q,_±G•ü¹¾½ÛàÔS-U@hT"�èчë×Ï8A z‚^õ΃»óÐ é.¶¶öÌ–oRt|¤¥_6>NUj$t‹yéC^�wмŶìç6(›Eìd‰;°ÝøüÂs~à‘N’€”¿ÇÒSˆD•ŽI ç\¼ ê™»RA¿—#Õ�‘Ä}÷È�ü%CYZ=ìâHÏ”ïQšù•ÿ_sü@unw}Ñ™«¸Às€Sºxš o#z“ãE³±Þ®ò¨.;;ØÇÃyîJÆTWÞÒz˜ý§ÀSÑO±¶–*�݈+'׿ì\aBÎ@¢Uõ�)ŒŠÉ²?ÔJuÿWÅ<ÊÇ8JSÊŠ˜fzGñž�ó‘¤a]�:®r�øN(}áÎ=ê_knæËÒ¶ãN�ò9"QnèØ0ÿ‹3CQ}‘«ä¿'äœëôêQÉ`¸æ:%º„úüBü{jÆ?nÏêG¤=*<ø^ú§–§Â¤Ïo�rHKx3»Ø�ÄkUüÊ2wthÈî»ÇÃ÷+£‰õv=Áºµ3–RUª™ÉŸHWÂ×ÿôc6ø#;œéõw‹ ¾ÿGaä‹5pTlaÈ’y¬§8z+g,o§àmŸv:hÎá7Ä0—ûþ¹^�+ÇðȬ‘OòOÀû¯� ì�ȧ�?ÆvʰŸ™ KÌ–[Î÷U(ᾟ4¢‹î�>‡ý…tÿöO%Ï /kOˆD¢Gå8×pý‰Sø~e hŽœ(?ÿ©ãßr,š!öœuÅxo—ÖØRì3Œï„­÷§åîã¨�ý@ƒ–Æ÷Iwº›…²ÎX÷_ë_;L™þt¹/%ûõ‹ÂàýSœõñ‹›f qó[ÆO÷{?…z›i§ðn‘:»¢ÄéÙ<§óu‰Ë…¯-Í·º¾¨>¸Øç*í qz§H>‹0ZXåuþü7E}‹èò6ˆ0’¹¿3Ï[.LÐI¼… ´aªang|Ï4õ^°å5]®ªH—[_ŸàôÈ= Åû‚ˆÈ;ö,nŸ{ŸëÅ"°”^òS#öø7²™,Èezz¨£ø�y9#R÷ª§êNÿBDÒʧâ´EJG}„zAƒˆqIyüÎûzW½ÄçqÝ�úÅ"¼&ÛÑwŽ(Ÿ Á,ãxúMæ[Å#ðÞ�zy‹\C®MœæºéÇhü´v�]r ŽEôò¹#W_ÿ?4MNKDÂ"�¢ÄÐã«m™žõ4î IJ§3’éÈ×|ïx.§Æ³î­ã¥ î>ˆ�[4çf|xá.µšb›ä�’þ¤¹§;"gÝ:ßO¿Þ+Ø©õk2æf¿ìr¼:|F*7!�akƒˆmA"w š«o¹Hײ㿆Ž%ôcøí–0èEAî%.§Ûã@€‡F„nÐnô ÷4/öqyª“ú[/¬g;…8éüžžÚï2«š�æñ©rvºh_âõ¶Ç ¹“×Çr:žèqìù>ÜŽ>¹!X²-Ë™ù¬‘£A>ÃÕ hFDݲœmª^ÑÜ«ë‹ç )ÎoÃâ}÷'ˆ†ñ¯ 1>Iþß+<ÜèaÎæ„:c§Z¯Ôq2zƼ=ß§S迾žS÷HÊó(ò=öyƼÞ; 5ªÞõ7^”z·vXÞ)/Ij“æb2?�zÅ�ì…cPŠ ³×šøg¨¼(aËâà>â)I éw8–:^;Ï¡pM¡Œ� èï�Sjs0þ™á’ãÜ ¢ç¸uÉ6èW’H¶o_hF�º½>:x�ú�Ô¿tÌ\o±³+€ÆF7ŽóYæë€×òµÞï0×^É 9ߌ¯¿ÔCðàl°‡4�C5\·ñ3¿TÎ;E{xrs^�Üú®Ð?÷º¨–ù»º¦t]ç°ÂsûÕ^¾mÑ.¡–ì `+'þ9ôüÜgÙy·úID²Ûù€ì"1ñw¸\½ö0‡%²�¸~¸´£Þ4QKGÍKk©¢PÛÏ�-€ Qÿ0‰ß8%A—È2\þPT›“9F:ªú`tŸ#…ÚÈßh DÅ“rý@ž+oD9`硈éÿ`dÀ$¥ŸNšÒ²¥»"ÊBä£?‚•‹¼¸”ð Â¥³r£üu+‡=8€>JÿF¡27Þ.8D‹ü“g)/­½þSa÷‘t˜×=åvâ¹X;þŠ˜Éaÿ£:nˆžìÅíè‚m„º®ÓK€Ó›&×ÉHš<Ù8ðžDþAà W&ÿeAнþëõ˜t‰^t’UƒlÉÐ…3ÕòÛ/þIG–õïˆËz.G°3¨Ä$Q+8€=W/tPC‚M ,"Ngx8=:eÜ¥^Ðè=qö q…„É®ú© #qz;}öpk¦’¢=Y‚0W¾+¿}]n‡U'¡2Ð+.KŸÔ¦æt�݇dd•¿«ük[SC#c+ŽÜuªnõÛ@Îú:8’Ðæ‚�ÕàîDÄ1{þ¬oø×ÿnF V\ÿ¶±ÀŽ%øÿÔð€�§ÜW˲˜9¿‘çˆfîªÀ)uòW+·—è…L8uêaÚž`a)¦æQ¹‡Þ+”�ê:uÒ èåU"R—–>‚ÄÅÖLŽS\›cMÒõ�™âãV°‡b0gÿ/Kãæ¹¹ z8r‡ßË¡þÒ §¹òm^|‡ª/Ÿ¹žÉÑðñßÁÉ2ÄGvcÎå�-’òUñ4à|‘¿×vx_zÄñþÿÓÞõ�ÁßèM©"ïs„dKíC ¦Ð¿4§~ šÞu)“/îåõ½¾q‚§Mñ¸%w3:h³ wÕvåtZÇQ½ê"–=výÜ�¹¢é-F¸èi¥ÛN•‹xkFF8™d}}}Ú©«‘¸òÿoÿœpªë¤“�­_N·��sF�ô÷‘±5›¼Ø-œ–ôÅ/Wå4 ìCÛíÿ¿ôSþÄ’µ�,ýúœþ¡hë¿>»Ýì‘_Û8oJ?~€Û'=�Úr66íÞ÷$‘4}â´äŸšÓ‘¹úÝùMRÉÉš±»Þ+¡9×­�QÉörþó¢ô9·ü<�íæ”rUšõ�5)Ï>©þÄéÉAKiÌÍ– j!r†5‡ÚN†ðö§:V±HI™‚^Úo�*! :nìY%;¡e—V³ÇSh”ïP¹P ``1P§[!O÷w…sùðâtÇ(v� Žåâç‰Äµôê)P@4’Q\R�T<ž¯¡��aºh޾õŽSˆŸ*ÓéÞ°}ì“´|8Ú~}Eäž`Þ­ýú@dÆO�À\ï5BGÇ­¹17}½‹Ò"®_µ5J§´‘‚�&I^Š=èOg�ü”‡ß*5¼¢Òß¿!$Á䬨A 18-QåÙÚP¸ó)ÚÅàUÝ*Dõa útµœuÐ_|êÙ¯¤sý­ýtì-’UáÏs {ûg¹ŸVðûb§3®ú) ñ-Bnûï™ýqËa‰\˜F·ˆXùüCçYnkЫ%"馻[.ïݯy …(Œ¡`—u+ÓN>éqÄ»Ý×Û�uIÍâ¾D˜™Ü!Ÿç‡¶{»*ìÇR#É#bZ&ÈÓºx¿ÑèRs >à·Øc¨�U�#[g“ݬÓQ"yN'dÂ}¶º!à… Ÿà‡7D:û5¦ _O9wC€^ ¶ïðŸßE7?S²0Kéòlóáî{Üì1@œÝÕäŸÉÓ…Šž)�ª¿O¤ê¶ˆ¶¢ø5ßm¥äh}êbìlòÓŸîê×… õçþÅÇÖ.n§¦�©r“yÓ`[¤ìù,䕞�æ|Ã)Íë/%è6OÁvJ„{Ǹ.yÿè9ã÷’ðø�½Ðo–ãö%§öðçôLóoîÈ �Íó‚ ÂÓúþ¦þKý‰~Ÿ±æð´7M¹Â#¾—\¢Nv½l§ÌŸ),ôõJÏ$Ý ƒð§¹s©ê‡+"ü?qæÅîŸQ}Cà'–/î/’kzéµíÚoäzüãR ¾ë74XàΙ�ï-Uì~ÜSå}½§ÁüUo3/u$»×ÃØfºÌ^¢Ì`•ðúþÖ"ŠáÔ¹g}o~^Úò2µÿî—Û¹,ÍÆ`Nçš/~Nš115‹�ê¨Iü+µÅ/•—>ÜxåEûŒc©+õ»‡ÅTù$Ðõ€xaÛŒ*Ñ»'%õÇqÝE>|+¾¸q{-ßtßý‚¬Ñ¿×, Ì-_2Í íÉÍÁ -ùûB~>Åd²Çƒ=2zC†±–üt�~ô=óp{òoÞåOŸ.ázËþ0*¶ûkàÒ!$DA¡WÒF¶äÈ£¤ÆÜÔ2IÀ)œœxÒO]/? q�*lp½Öì:&>¨…zöS’r{¹qHÀÍð3~q¼Cíξ҆ûšCjüž-èíÿû”õ‚S_…RTúîÚ9Üÿ¬#M˜‡ÎIlÏ¡mœ ãÚhDäÊ7öçu—KÁ„q…®0“.”öˆ˜Ÿ<“U~/è¿îÇÖÀyžò�©ß6Mpcþ9áÔ�èVýêrÄÒ6Œ1B5΀_RǨfÜÂï#]f{6F»•-iáP«·†bÖéÁ7bÏZäØšóø$².�ä„C�1?ýy^9Ë-u¹¥3 êÊzá]nºP½îº&ö†£�a.]ã®ü©C³Ü±ÚÇF2{S^ @CÃàæ9ù'ÊôJF[$\.QáBäóÁ½”Ð×BSÊ”qè1jš>î}wc•C{bcÐŽ¼¬û®j]iAXE‘Ô€�=Ž|ºß}A8½°å,ã`$óË HþM$yhÄ«?Nw%1O�@4Ö˘`4ÐÇ·H]AßäŒûò”ôňm2vL¯?ü£9�ôQ»øå>¸açŒBÀ¥|áØŸ”ì™SYÌý¾^•Jã)þ 7�Y êOµÕ(ÀçbÛúÍ{EÑÛE§y¼&êúa{‰×ŠˆÉ�n?F¡`ë‰ïùB\ßÒkŸñ³Æ©²§H¯Ç®¯Ãõçë†ö†–«—9á»|– ¿øýª~�S‚>M z�æ™ Ì}ž4kÿñïÿ¾K âô¾ÿú¿Ý¡¬ý«¤…®‘_;!oºu·�:¸+EÛ�±eœW" ræ]~C™^"’ìGú%n[¤ÊVïú©¿Ïš… œ6[Ž“2mƒˆ $9™®¶Þþª©tÁeL² ’®œâÓ‰}ä,$¥ï´ål”máþÜr;o§uâtCÑéû›]ÁÆ^ì[˜7;­òòI½E1ADžætÝXäÐsNmÌbàsFr5w&8͘×�4~3' Kó–‹oYûã´ïV,9 N—eä|‘wjëzz4¿…‚ežaUmÇã¬óÏ�K„g§ è–_žÿ�,§ù°¾é÷õ§FT²;½Y#ǯíÔÅ­Ùú8uxKfÇ„³Æ! ÛåL•_ËBìæ0!"lEÿ3Sßâ¢å€=¶œoæÜ‡&[ÄÚvá|�PØåiëXQù¡9ÄJnÀÚsP9{Äîöõj²zZð$÷B‹íï–;k¿~Ê aÀcF®¯e }\­>¨¸Ø«®Õùè�r׌O�5g‚~•µkh¬å'Ù·&Áq:ãÈ¥âs¶úÐ’Súa‹T°Ìö�§Ë¢jØNƒ¶SQ9Åß‘Stº)ò9"tc,þñã]wLÏw½þ¼+ÍÎ5"rWHµ<æêcèÀ€B°f౬•J÷=†èa«?ZA�Êœ£à¾–H¤aËU¹cÿ/ŒóOÍ™º,zŠÝô ½2·¼5.�+õ�›�æâ]aNÄjm¿Ì¾#¢ƒ�s;¡ë:;Êe/ì«5rû®×±º£{E–¡ûJÍ«[½²Z2(D꣯^â„H]B*Ð’ä ±]ä §IOý]Àç%×àZò0y·Ü¤&‡¨3 ÔÝ^™ ¼NðüWN™C½àK|ýY¿æiçsœNXèðªLx-n,�{þ—-þÊS##fÑ7EVDª�Âñ@’¢bNÑîÎ�·ǸNOÍ^{ºžFZI Îõt½i¥VÁodÕ�~1yÜOOÞü¥Ys‡ÍÅY¤Ÿ%‡}NrvÒuèp†¼Ð_µ{B‹ÄBÄ£?Ì‘{êzhÅDLR.’x0Ñ^��ê=uš^š¹¹µ_”ñÙ‡8<çÅrŸJP·¾®ù$Ò±ëªKÌÉ6ë8ºŸ#å×äþC­’CéþÝyê—Û /[ÄØÚªW÷ݸê‰È‰5¢Ü"už¬ön¦©ðÑ· ޹}<•Ó|‰;æë¼¸ƒ>:%χÉeånà‚ [äÔöõò´G.®›~j›F·ŸO¼4¿ÁÏsWs^¡ oÑr ^K)Ù¥·Ó¥ÈôįfÞ®ˆ\EŽÏ™M_‹¸¼Ìfö£DŠCDD–Üsâø”6ùÀ©²S e4]¹·‡*:a¹à�øLÿŸñ¸­§4;fO¾Þ‚H2Ás'{Þõn€Póø_ô(RF?~iÄØ|:Î5g异ðWó[~@ÒN¯ãOXÆÀï0ìÕçöê.±¢ýoå6E€ã»mc¼}ÈnbÞߢ\œÒãƒ<ãŸ: êÙÓã“—¥â«ãf|—Ú?U~7¹z‚/EúËY.½>ép]¯:Ÿ÷»Fd?ßîåÓù›üÚžŽ¶Y9és˜Þ*ïq<•Ï!éS׋èþ|½V@Ï‹^µ ¤Þï.<¤ï¥ôO‘ëo¢SÇnÏEƳUÆG•CúžWì¯w+dwLíŽ�±†Ý4&,98eŒÒÂiðâ¾% ýJÇrû½·H¦þ}‘d£ÙI$ÑÐké–ý ^V�Ï�®�&â.ß¡¦¼cskî4_}rÊÄì‡Pù,ßIÊ­Ÿþ HƒQ�Ó;• þͧk˜[K=à8ïfÄ€úüí~a¹jßQ~Ò¹�4`ôƒ¨Õ k;…�5󮾟n*ûäô;ŠSž…/äð� ëIñêm¯æ›{ Ý0gBäOÇÖ¶ýgy‰¿'2QÃtâ$ÙóÇ+Útì›üM¾ñSσë�•ÙɖИŸý=¯ó¤²…䬧»ó¾�§8|ØOn쀖‡ÿzî¼P+½¶¯ §>�öážtÔ`xÖJ|m4j`p�Oþø÷ÿ\³¿:çÎbP¶\6ûõö‘óÂê¯Í56�þŠÔ],'"½ú©_+‘V;é«?=µâÄýsÇGþ“ž*k9Ãö ä½VD¯XñÿÌ´Bdã”ÞUOkÝO-³€Êûw,±ï‘€\®óªKÿ²u°]žfÀ3:¡îcužIåb™�C ¹Þd±\jçˆ0héÞÛl‘~ˆ|[´ß~ƒ.IIWÐáC#èd޹² üÌm–å| †÷µôÍðœ“T¦ö/ñ9áÎh·@Âg;ÆæÜ—ÖwùàŠ«ÑÀù�Ü€?0_o¡È·wêŽ×`¤Í’Ûìô¤nI‹¶û©§ÛPætÊävêìÆ?�_¸ >¿ŸûGþ:Lz:vÙyn*¡§ÖC9½ó^-üž+mO8eû$/ƯÛiÄ“�‚-H2XøÀ"«  Àß>ÅiwDô@ïè)˜ÛŠE–�¾o7—EÀ9ævN}·ÛwjoÅ4ÔÜiÙiHé©­»±-JQÆNÿÜNí9ðež³|L&:­ ³%OYãxÈÔ¶´þ@®ËÛ’j¡×E�åu¢²à°‹ã×§ŽãžàÇ\~Ó¢úoÙ#JmŸ•rò7*žºåN;Çܪj‚DO=tj$«åB¨ A¤ÁvJìþû±ÂÑ�ܧ×Ïëð'×n£‹¶Ÿè ~CÓ¯ýúòDn¶Ó›bbḑڗë Yãgða=PÄ»9¯J[w½êüðý¦××캕—Éô vÂWËYU WÞÔW]Á¥kík»þÄéʳEöã4tB®E; S¦ƒ…�ƒ"è¯<,­L?$zinBÙýŒ�Jëòº:)ö8PõD:Ó¬‘Å‚SÇ÷Hëý÷hÕ>„w9´ ^>Ù{eû +0�ÿ‘º7”×Þ^6“ïí›=8 5¦sá Ó�òjz‡ƒBÈ‘»6cËÝvÞMÍÕÓAM;#‡™�BŠˆó;}*ÕþÍ@ò†‰›>0(þÒ‚VÄR_=´p+ç)Õ۞ϪϵË!|W¹yâØ¾‰¢ýÙNÑÝþ[Ïýó9ÿ¡èñDŽË¹„³òVz”º]Ÿ‹ÙܪVÚ6câø·ÓS÷!/:nÿF@Y(•ªÞWƒkl }( U5»;¹]¾Ý XÕ·KIy9›ÜPéd7#þ w£¤^�ª�{Uü=ï h¾F¿ÅN©œMí–>Ýܱ\~l!F 7²³)šë±òñRS…î‘Ì|Š~@GcQÐ�¡-7Ö¾¸Nµ¦W”Á¹¹Jp+Bñž•�‹ÒåÇÝ"Åôú„þfD-ˆ„fT\'[äц÷sžB?Ÿ‹ÊÙu®oœøbàfMé^NS. �`�ðÁûù¥¸Ÿˆ¸;µ5¹Gƒá—b©Í,Û{,Œä`Ó]#o/àóûÄÁm·ëóã/oÎÞCG>Ÿ�-\W…;šÏx±â ÒÚÖš#l±È©•Oïgê‚…4›3–rÔø!˜wg� _ ÒWîÔâO™'kD¢¾çROµ·bz[ o‹>5tÏþDwÓ“S� ÇŸ¡äG²_ˆüiÇl[(¼åºDĵ�š�Ev�8Ý× »3¿öÂÚùoþ†¹±Ó¨}ª]kK®ÿÅGȲ>ì}~êýÓÙi„ŽZ²±o§Ào—\ÓOìÔb‡^£Pþf›¦lv vïaú ó±Î:î �?rŠªò{~1{€9Zqêü°¿ŸuÅ@wÜ`‡®f—\õ¯0 ’¸oÿdj%¿¬˜²óµÿ%Ý‚äŽBXœÉp¿ _’áô[:¡?v^ .JÒ~_IÜŽµ´åþ˜jeÒ÷h "íX8õãçÇ®5%;Å+4IZÓ9†ÝÒ}×Äáçiîaå±~—�„"KÍÉçõ{õv˜èTÜÏ^_¡þÁïØqK߯’öä@Ümq²ìëzÞ�1ªŒè)·®�D]^k ¹…Oøˆ}=ôÃm# YWõhå¾g©ÊQÊ8G¬�óÎù¡ŠƒX ص³Ç<îëð4Š€º”1ûˆ¼8¦¦ú-±ˆl˜1¦JªÃÜ!_…Sÿ,'ŽáDG‹¬‹ÈÇb5D0ÅŸ?¥�جã/T¤Ì4û¹ÕnºëãhßGsê z½ÀCpqÐÜ5¬Nި̻X½þJU¡—%óHV³Î zk©sžÛ7y"u*KGMx}éO3½½=öæ­Èf¿áãñ dô÷ïë÷`ö`7´êšìþåemN܇ÇÇÏC§o«WsÚÎÓ•êÎ •O‹Z8öúÀ)¶s\"T�cìŠHºçFWvð'[S윟°¹E0v"3Ö“æ°›ž:^xìIO�žqZ,"/ëV3¸ë§jÍéšÆ}ÕUùøår§æö«LýÚQZÿø÷ɸ îCù\ž Ï;r ‰n}é ÿW�?•Ïø÷9kðÉô‰ÿA=¯ØNÍä(*¸–ó 9˜¶\ gcC=>Ѱìò‡�œ"½ÌùRŽ]B®¹lV¬ûœÎà÷ç¹TÑOw¬X©â-@_4²Ë£÷ùÜ�ñ›E«ž‘ôÅé·ÎOÙaD»ßwíâý²éuAŠïÉrX9§ƒ¹’¡eñZ�¨ïl¸;Ýè!枆�åK>wUvý� �?ç„û�Êíx¯ývšåŽHØëø¹%OÈUj¹.0бƒǹE`îã¹<�XZßN}Ïrƒœ¬šœKJ$Ä×–µB~ âÊ"EOG¦e)}S�†¡pÝz{Ú齆Çë•Ñ…QÑ„Èäõ|n«ù¶+¶–Vþ»Êi»{YsÖ霟�£±D’Àÿ3’hDø¶ow Óe½Š}3½jziP÷cËù§ó3óÜÿº*ý¶S[÷†ï;=ó?TNæ=â·j?ÏvÚHWðã–›´5§‰’Œ;~,ãèöVuìßO_¾Ÿ4‡åž�Uûìî�åºýTº2üRWy´Ú ãÐÁ©Í%'fÔܯÚ[))M~m¡%/òOºÈ²ÞõXB™q<éxOø|¦ÓÑ-���èéÏý:ÓÍrOåÓLI¢Œ§Ì}8O4'†)Å�8h)ÇÏÐl±¶wd§›þ@N¾üû3N�¿=gjŸ 7ÆÐkvý3©�éªò»�ê[Ÿ=jóR‹�˪ó5™­Ÿt�ïnè�-Rp7Ãx£Éµ„Óô¤æû~ÿü3’­=Ë›(¨n§T—ˆ>-çIûû�¤\oˆ¸|æÓs¥nD\¿~?ï:Îó5F›ÁŠÆ]ô¦ ŽagË"£Dþ0E±ÓEÒ‹(â–^™ÂÚhéùŽë |ÿ†çµÏë4F¯Ì'RŒKyñ«‡ÿý§~þøŒü8!’~E®@¼CpwÚÀ�¦1š @›¹Ì[Œ¬|°n>Ïk•›]¯ž1æ{ì6wQî™<@°¾xG§‹Fä?¬DìÎùÔó<.ãsã[×Ahn8õÛšØü0N=¦ªïð¢É×s†4‹}Ûo‹ð¾_£Or½ã´jðõÇ»æ |{Ë’_žJðK¢•�·ŽÛ.yM±˜Éõ"µÎh+¢y°à8z?E*Í⸶œ>C£4zë§w}Ø\ê8 õ„Ê­$b4ã•ñ ¯|+áÖì(Hq3JÝÛÇÂøa®Ò}?OgvsNÔ:"iþ{…©­ã‡Zèíë%ü^•ÂGÒj[s ü½׃þ=%ÀU#ùâ½;÷Âîq­�•ê•ÿ{Ç1Ó䨑r�^^¬Š¸Ê#t'ØîŸÀ$ÿõ±—¨·SI”Õ‰ô?Ér)qÁ'‹19¸õ ôܲ¨�¹§‡]l$ž1š·Åé%noÅ.‚B!Ç@NÝ­€*W^örÜifa ÊŸ,—ÒxL¹=�JbVnsƒCæÑt ÇM¿Üa‚ÎµŽžñO�‘¿rVõž¤?· @•€E%¢ô�Ñ«VÏ+"qºÃÀú#ôU8}6è{Øþ�ÃõåP£¸HääðÅó[£»‚ì¹Eɘv‹¯`y¶Œ �øš) ¾±eCä;�=¸ÃÏy‘sI¢«×ó'ÝîòMŽFHéNíºX•÷Çt0ÓÒ‡"åï`>ø›×p½nU€£SVÁ>F“Ö¶÷ÂãŸSLxýìÒÿðÕØ¯×.› ¢–°žæB5u…´Õ‡EZ¦ð¾…ýe?؆®ÜÂtº£š)¶§è>ëeàïUñç�y'ÿÒ º¡Öoª°¬F{µ!6ÁN04 ¯€�Á¹ƒ›W ^*U9Cç¤W¥Qù’Ÿu¶k<²`þ‚´îr¹5bÚ¶d p÷ú2ÜÚÿ˜|Ô3¿Žš7ÊûÐ:­™B‹Öþ�`xg£LÉü‘uSpALFïšq÷ܾr�ú%p…ôÑî=ŽÓF/ì�ÿ—/wä2LÃÁØ JxQô&Ê\µbÕ碾]íÉV\×xÄ ;í=6äy•¦ž¤~(ñ”—E¢F® Ïýþ_ÿçýé–oO"/fÜÁ”¡þཡöŸ¥÷ä€ÉA›íó·ö?!’a½` ß¶â,§ÞçO�ðš>qÊà[Žl:ˆì*‹!â¸È8ßvêòV–tÆõµ³}Cn–«Î†¤H,ùó]»ù+ç~³)ZÓoŠ´,I$¦Èñ%ҹ �$À`ì” /Ô]�5:4}ƒ“8ú ˜¡ãÙ•ƒ(¦96AN¤õN üDŽ)ïMqÒr¹Ë�ž)pîGîu‹‡ÓãÁý²kÅ¿4bsýù#ð¯ÈU7?OO{î¿-Rä#À³ïòÄéÛ§÷oàÉ]¡Êòð°–)‘Æëx5”‘F:!éÍóB‡‘Dûéν¬ºE$ZÄäj‘¥ØÉ�,w%ø‘1ÿP¦hFDÓóâäÎÌ1Fð�,Ù‚Ë�´Õ©Êü\ˆƒ aM{€�h`ó6ß‹EøàtæáÓè™È¬~ÑÒ/Ä”ZS ©!׈‚åÙ�@DÎ ä Ž`úÚS¾�/xº§´ê{׎9“ç ‚¬‘CÍë+ൗ©^ÛÇõR SæmJ€Ûx¡ß¶\mû­“EžÛéÓàs‰ºÃÔù©Vš‘Ceï†ÇüNÞü•Hé·+ÑØ òÈêpDèž4R’í�fÛªOeý´ÓÙÑ%rQdb¤K%›Øiµ{RÝ/®üÔÆÉNËy�!ÛñüÞ{òã—ÔÆÌͧÒmy›«LmøŸafM=û8Þ²(¾{N¾ÏhžtGý‰SÎ;¹òÐH¤õ¢úx²žéhΪ¾³Ÿ‹åk­Wå¼É"õÙµs0$ñÆ5ιG[p2“EN"âÝr(ï=ÜÎï�w¼!P"R¾Q;ÒiIù˜†š9ßn�D#N×Ócíúp�t;O;.+ôÝ´F}h9p9½ž‹O WóU-ˆèœJsB$Ðc6;loˆ@nŸÃ")�Êâ ×4|Æ�‡ÅéП“Ú¡9Í{C@;mq™Âõꄻפ7z€ÿ¦S„w¶‚‹Â»?/Ë5uBN³¥D¬Å¨@; ÓNÇ$Ë=–Ó–àñæåFC*'}a…D|B¼Ï þ‚ù˜±D6¥ux™ÌzVýŒ½Ç#½žC|v<‹ÐÒû÷³æLü Â=:ÃÞ§ÑðÇç„ȳeu”òúÏc!ÕœøG“çmŸ¦è0ð½#7ïl/z€ÐóDaî±S§€ç‚ÕT±©ï3Ž÷¾/D5°ê‹L<Á�\OÔŒdëg‹(Þ>ϳç'.ZÜê_l±|à ¹ÓÜ™†íó¡§xžÞ4x‘HÏ2 8ýõ7äë½,ÚuôŽïspÅiÏ·35’x¯WΠ“?Ü~·Î8%ä4Ŧˆ¤z¿{¾ôC‡_âG:}ã…%º;7`×w˜¯û¹Ï{¥.BP×rj+‡º5Í ê�þ7ü¾wa›°q�‘ ù‘æOîú _56òq?Ø)Óñ ;÷×Dzã4»Ðcë«Î©ƒo9K¡@BÕ=(tÛªÀ]ðâ�½X¸€n—¤œ&×~»ÿèöÅ÷«8áÓæaÊ‘Ñ äâx‹ �ù7“´‹’|ÀÛ Y}/öøsбûXíÅRgÚ †kPŒ”e¹T¯ø~Æ`Ëå»LцßðxÊðñ¿|º®&DR>—¸A7ãÍÅõ¤þÉT²å–’0O†¼`½ßó'rĦh×^\¶wð¢Vºr¿DC‹áËpÜLG›¡ù>³l¸›ëçó }¯¿Ð8þÎ)"/šJý×Дþæ†$<o½­×ýKƒ1r„Ñ}àJú wQÏd]2@Kʆ8špesê‹ðxV#í,ÒÎnå^#ú>ÊRÇÂDľ«’kNmŸ/Â.1w+а4|çd>Ó8tÓáaÿÝÚ£vƒR÷‚› î‹bÓ¦;I©¡tîqè¸Õ驟:.¶A£-s#|Z}°ÌæÖìŦ]õÙí/V®"Ø!l–£0 /ä’;8ÕŒ 2æ_ß§êcˈIílbbÇŠƒ¿ÅÎÖÉx©‡\ú§–�3w懾ÿjgÆN^5t Z«ÕÝ;ª¯Xºa·˜ýÝ�8ôJmoÓ2fñV† v9ÏœRø¨7½N¾¼›U؆C·Î½ÖxYdê¸éaÿK¾‰£[P¿äÛøµs›ýàœ©Ø/ µ¾†×i¥!¹9ÄœaÑ̇?Ê úßàË€&›…z]:8¤WZƒ.ëÉz¶§Æˆ–4õµ§¾¼9¹vþH= µ‚/â&�ÝÄ[(DÆÛBut•dzap~Xcvò?°Iþ·ß@ó4­1f®¡H’0}ô^¦µœa×ü¸ð7îÄgîJ~)ý&Eݵ— Íñ›øï«e›Íf¨]ÌIÍò,ÛMNõ‡X²É„6Ö²þål®¼ì¿ûÖr×:åfÔ\æ£nùÎó㮵v¤Œ©a½Ø0ÿ–¾¤Gˆx3ƒ‘(¾atõßüæê’zþ÷2åûÈc”ÞØ?Ó”wËýØñlWN¥ #ûßAH\=kÃla 85sG•¦î±¢¸Ê’ÆÃ ×ìRk@¢Øª^ ~·SPuétý—Dì'œ¾²Fê”S"ÿ’}÷|}OðOx¨-dž …'šOœæ¸çâûº¼\ƒƒ¶~êÅôŽ%Y$9�ÿÔ:ë[À‡ÎXú}XĈni2vœiÕS ùO=ýQ~#wa‰ °ÜR ‹Grr;¢YAÆ/m½×!¿("Q“Žçáó=ÒÑÕér°YMÛ‚Y°¥d;½ÓÔÅCa3Í¢+/Ñr¢ì¹a¾è´\:ýF˜ä·B(�9ó—åÂéÑg䈺+_¬+"AŸˆÁ¸üˆí‘$Bzz-¿�>n-ý¶òû·¢ñã½;ol[Èa)W�ÐÎ>�#�T«¯¿4âmý§Þ2މ[þ/m?ý¼‘÷¢Wœ:=_5rÐr½½,iÕ€-WÜÅrá�kÌI&¬§ßN’rù l[Lsí§¶¦Òè†ÓXßžAX®¡ ¹=eA?C׿'7Øi”_§åR@¤Aþk�ÓÔ¼E0iÄ£<®ê49º÷êlƒ€ÏLµ}NH•©I_„ ŸR.³Îã.Oõ*ÉyÖjûéÝ¢9I�ƒ'IQA–S&°Ekaù‚ùÆi¿ÍƒÆ óy5=iÇ»¹HÊ]\ Oï­¸n$>Ý•V– 2 ºèŽ9ãTòuÒñM«æ‚å øäÎi°žÝwÆC†é”Å"qZðã½jr‘颻~"¢rQøÆ"š¦ÅY^*}N—õbÕ4ççZrÕRu7vÞôÌ´õ{NóõuÜOa"òdÉ„4B‘WäxÄνر|Ý²Ñ QNöeÏ»O� X�çÀô²�Žy²ßZg¹j$î|Æ¡a8ös&Íù$§÷vQ…_ÐÉ©·Ó;å .’Y2«Šöœ‘UB‡Øö²-$"y}¶ ‘Ì2Åa}u³Â·CdüŠzÊ*ì‚å|}*]gä&Ýsñ�`Fïl*}±Ã¶ç§×™µý¼Gò½9ê› ^¬ìÑr›½ñ”æ>~gßËʲhíö�¨“gÑ•ÕrŠšŸ†|ÃzjjE´‘ æ…z™@C9i$##}5¿‚§ Z¦E߸Ø#“ký(G�2ä†jåݽÔÏ™*Ý�¥J#yömráqÛÎ$¾Æï'üdj¥Çcé±L]k¯RÿhŸŸG¼—Oy¦°È‚¯eÑ§Ž£º��ÖI±^Ö©Üßñ©ÉAS1Qʇk”ïŒlpw˜é3rÔ=p,i‰ˆ9bn?ðNÉ<Ý3a‚Öp•…‡MÏlãZæÂ˜ú°Šc(÷7f¸jÓ‡¦^.‘{úP)»¶Gü1;¹J ëçÌ= ”\kjë"‰hàK™¿Ì¯+ìˆæ2ÿ[‹@G�ºÆÍã¬8o 5B$­$;[éí�“Dûà×â{ñ´ù ¿âç›þ^À˜óopü"“=}©Îgé#Ñ8�µŒ¸¼‰þ�_¦ôºq—M=YÒs‘ái‘êb‘ke®céã9(ŒÓÉ Çlüç²8îóiÉ$'AñXöp¯Ne­øöÿã<¥û~ìÕÿ�Eè„�³ç%å.—HÂ6Á^¨+zäÔ"½Õ³Ç—§å|»ög˜Þ>À3'Õ¬?ÿDûOÎSÙ°tùÞ¹Qrªr¼—Ñ­Éú¡ßÓ›ÛP­ÐÎ?þŸ1™Oð|Nåý�ºÞ;/”ظ<Ê3r nÉ÷û†g&ÆzÆ �Yº°;ª)”ˤýÜÑÁ|�AYÔ3ÚršDèÎ?À•¿cÒÊ'Èí½ºma>O¥ÛádN—¹JJò¢fup¦M(}Ú,»¼ENŠÙÿ‡•ùò`/ˆxHÊ‹ÎãÒWÙEX#‡æ\_‚σ¾«Y¨�´2ž©­Ð,Vù~¥­g÷EúõhÔ÷‹Ò,1; Ê}Ù$CÇá9¯Ó‡È77_¡~ •I"GØ=¥)N»d˜Ä}\Êoi5×n=„¾Ïìú–Žüâ52«æ1M’¦ðô‡†ã)ö4enÛö(ýx|]å`¾¥{Eú�c㮎Lñbn²…ê.*ö ·Ÿœ.7üÒöa "Ü›?ðHKi¾‰w†2_|Ë#²ù±ïÜê—öNjÇØx T—ŽL;ÜCGàÍtÉW‘îIà°+ }Š· êÞò€¸~dE¼#¿D­ m«ûÑäEbñžŽÉ? ‘rßÁml6׆Ûá!ƒíñ÷·�Ù,Ñ’¸9ÈK²×³ùF">S‰¿;D Mù§f Î ºj5Æã•d`dº”û7AÔ“þN}<86Jß³y®Q&:ßÍ|“îÀƒ”æ*±‘Ñ7ˆV©ŠyO•C¤Z’’v¦ìï·ç‰lBѧî^B¢2ÀbW%Ž•˜·&Ȯ٠ßEŸ9Xa�‰Š'‡‡r°<];Ä}å‘ÌZO—øQGçÕÏ@W¢ÖöÅLWH‚]ÚQ¡IϤ†2²mB”O ®¶1!>( Ä©x&§?:ú�8˜a»ÔA–éƒ"]/¢.VÕ1fáÌ:¿Î#ƒoª©ItÏ•±tx@ cÊ“c{¦+*¬È?yŠ[.Â6éå6ò1n¿ à|œü—EÊ8•žå)@îñL|ó£'ÿv)ºÿ'›…>GJ£cDj{�n‘ZÕé,j]Hn¾dóÿ-6å00«ÃMEŸë°Dæu俎븈³w!JÓ¯+ä³ü�Ÿ¥ÚŽü!&çUqhsí²Ç§ŸS ÅFS™€«Ì®Ž¯WaÓ·K#1EP±ëžw½Kj·ŠŠi‡Ùåñ8sý�y´]nÈ�ßÐÿ<Àû„H®g:MÔrc­ˆØdåo‘ @Ôšì þAY—_Àûg©¯y¿h$?Nô�ÂHζàØ8þ¡p¦û/…G>²×ë";Å÷LÞ¢È~Jív5N ¶Ó¥pš±,§g½�öœš{EDÕ¶ƒÃ5· ǺE–‰æäÛ¯öGrªåIþ53S°uƒš´ÇÛ[yà4Î BúÖ¹µ®#¥¬ç8¶#žÞ@\,—Ú ‡f²6|ß"ûäKÿâôðÆ‹¡{ÿ‡œCl‘a»™à—CÐ9˜¢i;]sûïyr–Œ«ü[eßïv¹¿…@¹�+g·Ãß¾@ÑÞæ]…OHj#�G€`K"Êär¹>È‹j\;¬Ê'‡Sý°¶ëZg»$'5ϱEnóñTA—EJ£‹?vÒè¼Õ·çûáŠȆ"ªùÓ‡øl[dï“:¯Žv˜qzÜ'OÅÙ2|"Üzeʧ�#"Usôl9›îû‚ý|ÖÈÀç'àÎ5gÜ>?%BÞá÷+‘õ9½â;´@�Ì8}ÙzJ€­@Îg�¼\‹r Ôç¾Þ@JÅ=sof§ýÎ8õx%j<ÿ2 K»Œ:¬< •9ò-Ìæm‘sºe¿ŸMm7+kyúÓù²H© QAÜi#Ç÷E}|³Øëù1‡ŸÁ`À|`ŒçÚ,|‘dëÜFOÅX³'ôÃ4ÅCžšh0è³ þ€¥ŒµÔ§ŒS•-ÂçÉíx‡Èlí0‹hä‚à´ÂîX9Õ°˜Uð!2×›&§¹q ÚZƒå`E„eàø·Ë'—©‡Ò–Î �{nR;ºX<v‰Ÿ‘ŸÍKxÚißÀûòTºÜ-©�>ˆÐ¹Ÿ%êlg;[¼¸>cQ#~{ÙSº~Áyœð®>µÝɽµ_œ@Ä…™Ç”òÏq]?\¶È^�ÈZê*ÎS#¿î—§b½Ãç%½A&8&” ý_Výü€ƒp6þG.¿„uR W»Hä�ËtRùúD?'<—UZIÒ�fg¡¿Ùkü�[_òˆÓMqªªÉÉÛMùöÓrÖ™8É¢EP•ïæÈÄa9G†Áï§ Gõ‘ç�*Ožó�çwý¼¼i�ÕEy9£d’ _ÁÜó�W¢°˜ {9ßôóùd—ãœí wo}*-Nøý\’ÿQ¦¶òrŒ@…F5¼KÐJ�ª–:¹¹©%u!ÉfO-…¹S@[ÝvwBN¶ítâ •âÍ‹k|!êKŽ´ý²Äž—¸¾ÑcQø[¤ì·wË-[áöfÍñ¸Õÿéø£Q¤zu“eLÙ{}vjïRrz;¼(ŠÏN¼™°â”ír$n§�û1ž,÷:z 7î¸ÖÝ ¥v,™GòíŽZËêÃRÓÛã—eÐ+Ë +/QPÿ¾¥DÏí·Â{5ÈÍ ¿`‚Þñ8îôyØf,2èûŽà {áÅÊTIÀÀ™XT+ÔW?¼“P­˜.ÓRRáù~vçSªâ!g0ÄQ,D%á;œ¨/‰ þ<®×+üâš¼fK¸"ýºé¡¥½Æã>¼¦«Õæ²ÔlUüïh¨=LÚ™œ:è¿ñÔÖî[Û "KU³XÀýïÆÃð®w[¨šwfß�P´V-F’(Xž ¹Ú¾ðék?Âzªsfv¦•Nÿ€‰ƒçç+‘ žÃ|¯#Aq¶¶Í0ŠùÊQ™Lá™§|JàóÌâë×Q Ì{ìé›K¡i¹b•‚ øJ•˸é­Ê¿#ç³Ü�þ”þ(˜:|ÜhêŒ0´Ê‘ÞÊ×nsÍM³ù-WǼ‰ÔÁ"s‡Ñ'Ì%:ltº£µÄ¥“2ÎDÁ¥:|\âßí#1®µvŸŠÞ,.ŽPãþ‹çiiá$œ*iæ[Zýã/�Ü«|MbwM]é«¢Œ þÔâç?ű'êx3XõeÎóòÇG¿T@žêÔ¥*¢¾™é´ †ÿÇþw)\à€3Qä[`Šôúç»hÎÿúÛ±‚cl9Z„‹<4rf;^H<"vxV€e‰T˜èsÿ¾ò;e-gÔnÊÖ§¶-ðž0AOMÖÁ§ûþÛrÉèx�\ªeÊV« ¿5§!Bn?Ni'�Þ:¹¹Œ³8²¿>”?qÚ¤õW¸Ã"tö¤Š_;;ÿrz|Ñæn9ðb®©Ê1n~ ÷Æ/›ËEë­�ß:?gœÖ¸XÒ?\‹ôDfö"ÀŠ×»årÔªõÃBLSM}-�ûëãÇþ{ÏÙÖª\óÄg$¡y@2þ‰ùûóL�÷ë¶…rÓ­™ãòíõ¢CžèðÁ|"ˆV™«@ ÛòIëÉb¡#ØJÈ;«hËel¶‡¼m"8.©Dî�0Où³ëÀñýlzш¹=Rn£"ùùAý‚zK†ŒÓ‘aúwþS‹£‡¤nš ú€ïôíâŸÒ�ƒ±\ÏU¯N£Öqî›jó5ŒQ�LnË©ç£nVJêÞ°(Ã!.¾ÈYëò³ÅÇdÏn{±Ð‚çÒè†ÀÛ¶f)ó®šCMnKSµé¥g!íi¹Ì&$CY×¹Â+ú™Ü€;hn_ú$e媡¦øy)ò �£6l§-Ÿÿµ×XŸç8ZÏÛ®�9ö&‹í@?²H®ùã~+ކ4¸V>Ý#®¾¾OKŒäŽÎM^ð¨7÷HðmZo§ÀÿÓ ¹V-7$×S±{eºë©¯«åZœu^§Åì¦v+§‹â²…Þíòs°ña·Á¸ÝšYh�;šK´�eÅÔž™ƃ Pxüh„Â(fž%ǘ~n¹ãÂâMb�“åð™Ý wýˆêKíºªÀšeF¬É"OÐGﯫFÞóÜÏrgèLÐÓëä� kDü6TÉ×ÈNò6þþvŠ]ácä4œÉô ì.ôÎ:¹€:ÐÆž0è+ÓÚŒe+—Uùê1Íͽ×Å"®ô4ÛÝŸÅé³ûéâzlòüj„"ErähÅœLƒ¥ÍÄ‹ù©ï û½�¾I3­‹â8Åœ‡gè…Ç=örFòÇÏù©r‘dÛì~Ô{Õ�� ÓìŸ(¢ª¬à#A#-»Ov –•Y*?úëf_‰Däu8\«KBmÀMˆŒ8çÛÔ©xPÊÓjÿâ�¨ØCK}{JÑOÈÕ,ã,z94Oºº7´„qÚ£òÉ!ØPy/æ6Îs4ž1ÊÑÎ?y:»=#7¢�w‚iKÔnÔßg£›�žé¾øt!(´Ùã;Þ\Ø#Šx“ pü¡ðÑzs ðF§­›§�Ö�;¼™¢�Õß02ØãÄié¢�apw=^+"K3¢ø‡?g¬<»"A&ìû"ç®Oí��û©Ê¨Pö#ç›ú»�¼he‘Ââ°÷ã¿ãN9eû¡xNÐ{öbךÃW<—Nà{Qg~z4-Ý|Ç "§_'䔉¼ž „ÿp3tA?î±i#Õý‡ÖÿT·…þX™z‹>æ®zÿ;<ÞÛc§ûvú¬Er!’)ã¿è¥|b/Ô�}älš£5eï/:Mxq¥�2‘¡ãMä]"8�c€Àù®`Õ”á{Ž¿­üÄ›jwÖÀçÒ�¾ õÜòôêó§¶zûÀ|€¯Þ&mŒà{¤Ýë«ñ•rm;˜&"”£ÙÊu^>lçYñ×ÁUâpÅäF<f™Ò}f">™),){üÙ³öZçàˆ™×,!% ÐæØoÖv•âOß·5ñc²ºÿ‘y”Áý‚_§øë¾Ši•Þ"øÏü½\KŸ…_RY{ y³ƒ‡ý sÒCäÌQäð~U{}öÚ¯ðßG×óý‹TÞÏ9 9?hÕnNL¦„†pÌ�ŠrWDIúMAwHK‘1ÎBC‘§™ô}slðê´ç¬ \î«ùeêå™ñ£u˜$±|!ÿÜB�ÿpM:0Kuie�R7Æ6dü%õ%xéRÃCÌ�Êï‹E¦s½jC¯ç ²4,<¸Æt°ø7À,<<¤ÞøûD)×¾Ûgm*íO‡JÉ£ìýæ$ DyÀ#,Õ{s=2Aâø¤g/mžFú§á'ÃC y Xåµ¢þ:´JS}ÍÖ?$K¿³FUŽ ¼l›}»ÛE׆⨾Ïɵ›ãû‰:�«{^‘´ “{"®í<ëŒ\ ¯"ºÃçf«†§;…{ŸIæB…žLŒädpï¸d»!aLu1±Ö ùÇ îõ°kWtGNO䬋£ðò! {¼üŠ Ø@œÎb×"ÛOn {ŒjïU†G—D'Ÿ/¯c�ø+Ÿb²‹¾ºè�[û¯òÈ2®¦‡*á»çÉrGââ_ãþ{Æ×lË$À�¯™›^/”:ÐÇ]µÆÍêÔr¼5öþ~©:»BÆ3B7ÚìÕØq‡E¥z¸¯ñÌî\n‘ç�Ú†6ÜÂhÚfxÔÎOáÉÊ�•s¿M_^÷ð<5Ï“¾¯PŸÇ,&é»Üg4ê•=½Ê ²+Ýfå7wúf¯À¦1^†Í.Ê+;ÓiKDÍ‚ áqäVÿ¿ä¼~ê no;2Óéc¯%Ï÷ªÔi[Ä»`ä^e*&{U‰cê;«Ic²Ëï2ÛÎñO…7ÿŸûïé‘/8m•Þ–8¢oÛ½Ú'ò§F®ýŽ‹‰EÉWÅqXØ%yê”éò¹ã½ÜW�äÝ7n9èp”l½Zp"…/ç뀟X2O‘�¥ê‡&{á7l1XdOÎh[7'äXz"w⺕!¿5‚“Vð rlì§Ý~wμT]þÒKç?h?9ôÃE•úß¡moqǶl&�4à»nq¬Ë_»mvZï¾¥¸ñ.v å<õaƒ§øôyCÉÍåÆÚ®ï§1“& CC„"§é=Ží¦íämLjؓßz:+ÿDäÍo�ßõ=æˆc �¥r­�Òmñ­¨;øçzí�Ó¾ >ãÔY9_Âè ž’Vã‘1ž!O:?Æò�¬÷[½¼Ÿø§;ÌÙʦω:üPçÐ"-÷ÈŒíº�>н•Ïl7}j§ª?Ãu=N‹4„iÇÃà#·cO¯ô,¸×aT#:†m‹¤ª†<l–�#_O7ÝJ[¯g� _a R½"–{Ç"©ÏoÁîpÉÊ‚þŸHfq±ûà§õ¯8.l~vÆ/{®š½Ý�‚�ìô[-Ù# ™â±˜æ:ÖœAoQò¼{7͈°ûÔ­ùrØkS<àèPf˜e§ûíæèPnˆ|F}I‹ûÝÚϳå<|XÆ<ŰKˆ|—ÑJÝñÝr ú®Ø"ºd ãh6üìtØuMÄÁárÛÚ[.ž\lô�ÛÏÅE õÔ™EΈ(õì±]±‡ñCÛÃ-l‹¨ÆîzVøÓ“ð,ÿþZf¼x[RÜÓMçõ‰ˆÏ‚™;e4²": =a~˼- eoXº® Õéë—^ñ¼ëdÿàEÛ _±Ém‘(Æ+†÷º õrí¡j;ïî·Ž«ÍxPò,m–/{²;ï]ˆà4ω€rMNÝZ)¹"M}Šö3�µ?¨‘G–kÐÏÿÇr§YDL°™ÜÅ�qk«vBÝ'�h®6ä¹hÎÊ3^°ñ�ÆY­¾*2ºè€(Ër‰HµÀÚe¡ÆmêÀÐO�äSÂýí8ò¾½²'ÕX{«‡&@û5?Ñ~Dü‹Úq:#Û`/%×x‡ÿ„È/hµùX+~Q‰=>”–ªKk½âK"²lÏq)uÁÌ"¤-·÷h뱎ØEŠæ–ÜZ>íó„yXH•=Ú)Äö†�Dû_l3[®²GF†«Yòª%Úå€vª½É×óª×àôúÇ'Þàá‹o!ü¼Ø˜k©b$š4rÃ97ø[¹<"þö öŠ–,%Y³þfl6{ËM†n0ÏoðsoçÈGwø —©íÓ@2Õ.WÇÆÛ×_ˆàþ¯÷fZζÇÈáj{öÿ·ö†70ÄpHÓÚJdÉê,ò^ì´Ûô¢D�ïNá x 9Ÿ?‘cô¹$¼(1¯¦•©Èí~élh":ùëTíH0=®;#�¯& Zî3ìØÑ'Û鯱ß3ü²Ç¯›Üýß�㟢ô^<óÅøÇNÉ5–üþþã*äÕ¡±×²â´b\øë]þñ—êš_ÈÙü.Ò>Beá:˜PsKçt]Êuð Çʿ챸œ˜z‹Ì >�˜ï½+N7´w Pü§µ��Ößn�}M©�e˜NIÔ.@T‡½Ø?àb†®àç‹ÀiŒ¼æ+js¢±ô3KÇ‚9tÆ{õ =�‚ �Y댕Ó59xÑÓŠ3Wº{7z=ž½õqµ›6æ¦wàPÙsµýó‹ å>y›šÐáÞ¨«ß«œéã8‚mxKj“ûÑ"8C ®¯Ä}çŒ8µ¥<^I>uü�ÒÐátÏøôäÀèæuRU!4Ö¸B�¿+¥Ñ t<}¨ƒS§ÞKeÑ“ÿ½„Ç�ø Çþ Iü'U-{ºއ[�§ÌÅqÞ½ì¶'?#ÔÁÀCj œµoT­ƒÉ Êó2\þ.º"±ñêêÊn/{yó¶à@æòëW½¯tÄÚÐÅ–ªˆHCoÏ÷t€�ñÈ…s'%ˆ/ w°9vè¸ AHþF¯µ/‘MBVuÁßùAr¦‰Ô™“4fÓœîU¹êñ"ÕÐ ÑÄ™‡ø Ü)Féñt@qNlí¥7)µ^ ³oPuà>¢ä;7}Á¥�7UƒJƒ’§¤½ç( þÎG¯ýÆ�ñÙWÁê™ôœtdŽj+ß›&žv z–¢K3ñ´O•É]v0³z•FL|ûfD¸Zl´#œôñ³�ö<´W)ó’±  »£â‚RXÑŽA²ýD§:{SÎN™Ç±õ YcŒÝž7CÀ ûú‘ß#ºÕxX?{ï&b†ýµ á7ê •±+ô#&ˆ4©r—ës(UD!ÿѰӱ}½Z·=<U<�F2�A›:f÷‚¦ |Ð…ðäAß`ádÝF’J¯¸^Œ½â¼¹Ú=”9ãÕþ.�QÕXO7|G÷úñm=[f½TDGwe@Ùç/#ï•:ér6ÿÔij:·J{ûwÊwLmYrèèyÿX>t™ŸõËw@ÿ�yï=þ÷–¯z}5mÿ÷ÿƒŠìéÇœX,ȹóŸpÞ?ÿÜ ‰”ËO½qÿ]„”�’–’ËfŠÔwuöb[C–SŒ5·ÓúùŽÜHoäwžêθqϵõÕþñ©÷ÐN>,rMëO}ƒ«v¼PïÄc‚°ÿ�z¶$òKÔ\Nw“)í„ÿFÄà�˜C�± ØX/8•õŽSY{í ¿)JòAtèd¦kvª²Ø¾�Üwˆ°u‚œYÓéwìŸ^ô÷N©ýkk—UÌו“Fðb9Â�sn}S¡ž‘Œ¡IöÔ/+rŠMËܯ`I¦‘‚c®êÖúQñÊÁNIN[óòT:ñôVáë|hwDK? Rù1¹¶S9ù¤§ìÒS#DÅŽ]š8ÒTèkºßö¾×‹Ê×úKÇ1ýü¡í¥ê„~Ó]ç{½ ÝYçwÉ'"ç®K4dˆæ÷tª«õõDäÖl¯iGÞßЈ$½¶çþÚ+ÏÑÙ“<ÂV÷)³·G$îJšc’~N¢‡ypšrZ|ÕÜiÒ?í{«rÕi%·Û|“Ÿ+äçÆÄˆø’ó©ŒG»”vœ[;£óêô;Z‰DºXÙ"K·z—‚xfÂÖé*Sj‰_ÅëJ!GïˆÈµˆW0Ê}zcC(88^ ø*=5w"rñúúÍô]ªØ¢€H×ù ‘ò{ä®ö_/£ÆçùQ;…,G0"µ6}¸]YJ Ø…‚ÇöФCûéÑûO:“ºõ–KhyND£)")ªo�ñŠØwÃù†”këSßꩬ‹>_±ÄåÔ‹”ØÛA¼|N¤Ý9¿ÿb `;휗Â&¦žö^,§·¶t+ ’ÀÍ'�˜�‰ª§.†ï¸O�ë"DN—¹)¹:ûwwÊë>+äÅì&ž‘¢™—¦/{¾G$QœïE³ÚЩÃ}y šqÿû„¾;™¾K ý³¹Š–;µÔsô0èîtÏ€›sŸäé�¡Yáž¡µ>c´ÏŒÜQš"Œé1€Óti)8×xOGg‰guW¤òÎ ?ÙNŸÁ?Kò›Ì�<{õ´ñÛ /h^JšþFÀjMÅÜÊ|ol3’ÀY£a>»ˆP?4ÇÛYµÊý¡9#·L‹Û½ "5nÏ›¬ÍÃôÖÐÜËë�÷”HëÉãÆ-¶%ÔÅEZ™\WõCk5ýå3ðeW(=rTŸ—<`Ô´S'Wèø‰­åÄá‘§¯œ£.ð³a¹z¿»bó=ñ1w|¤ŽÚOîx¹þû¡ õ“>7šœÜb<ÛiÁ€Uö„Í~§76ýµ]9ã´×ßð§~>#}Ì…”(¦�J8ÁŒ?×xýy /ÊPq5Šþ)4 D®b„«ùï"] ”Ë9—Rñé”à>Eõ¯ÿÍÉw;2όܥ2Óá#õç]ûy»Ö…ê^}+¾N¸`?};ªt´aÖw?w¿ýrÇéÈϧÊãõÜ“…-òRø˜#RöB”¥PVÔÛ}‹f’Lq¿b³Så � ¸ˆÒH¯5÷D(ã"¾-�ö‹›!�³×kìÓ Åß*¾‘į¶Äl´7v〆[¾Óå DGËÙž[<}­Úö#tŒgñD:×ÅבñÊuçÕø¾?NýøûôÿmmOß+Yp$ñ·`$Þ)8t4ÜŒ#ØÒÑ’¡Þ m†S*»yôON#X{UÀêô×"“îK‹k ·u2ž&Ÿ^^$74Æ }³¸(eÓ /§�»•Øë½¬yÁYÿFþ¾4BMh”+çp(ÜÖ¯·0FyÙ(µt¿ þIÿìCåâχ?ãe¥_\ü«T•ovåyTŸ)óhèÃÆ–uiÇ&vñ’oa^`ÆWÌ8•c(u:Úå9Iý”‹`â:lL ýÍ(ÐOÅU «9ïQú¹ï‰÷oxV g—íµ~Å¿u×ÌžJÅŸbRº:þ¸(Çuã5Âç¨m +9®�¦­ªÍ*ÿµ=GýÓ1C=ño` 0í•bŽZHƒP¼ÂÍ�ú=NëhpÇóù­‘¤…%9ÿÀš]š bô5ŽR—òCœïÏUOøH#"õ(@?1qˆ3Çá_#ó�ïÔ2¢=‹±Ù}¦ôëøØ6¾$Ëš³F¥~ÍT8WŠÍË08º1óß‘ÃÔ·tÀsî—¤ú#ܾ:[kÅ×®Ûñ(\“ Ç¢ÁeNÍß V8?çø9n¾w$'qŠñ}VåqŽ"‚S?gD|¬Þ*qÅãXÇÑì9ñÊ :: Qu[å<}hDæúã Kês/[dÂrI‘ SBŸõ7v–®ŠïzB¤ NÁ$²¤QB¦¿nûçºå¤s¸MgÍñ·,ç'–="l›·w'½û¢î' Õ›Ò§Lò¬¹ñx�HÛrþrã 2ë6­ÚßÊõú†ß#Et¾xzÒ�fýÇøïøÜ€ÿÛ�ê’V­Ëˆô•�…k‘�OŒ÷lIû}ÕÓaÁW󞎂ä:Ì�çßà›Ëz •ˆ„]�=[îÆ0^r4Áç Ú`Ç™íOn”jnÌw„¶ ã4÷õ¬ôaÔ³aO%’zHœnj?ž€.Ïv:$LW¥S€ÓFD¼}ÉõVs½i�æOüñ£žŸíÒÑ´¡3)=ç/?EÕüœÊk‘'rqÑá­eŸŸN47åæŸ¤,2Ù±.ú�n9î¤Ûå\¨fJÀoìNƒ�N®òK¾ØÂÛQª„v>" ˜2÷„´"·át¡a‘Î5Ÿ·Ïë¯9K§«…T®]ŽX±u~è Ï9bgðÁ*VwÜ0ÅÑ!˜wæ>÷õtcºE…>S˜oÅG�–{ Ã%/‹t,Lß-Òi«¹EO—'ÓOzoÿ»B/¤È•tºF,QÍ‘™¤�‡‹¿|*ýùz“Ó™T{;Øë+"Ùîö¦*<QsÅñ®OJ&*™uã“öæ½�4<++käê$}=áù<Іkçö¼Ó..Ö_¦†Ö’ R˜&©oKù94=jnÝÄÀO6[Þ+è¸å0mø1ÈE¼{Cn¾ËþâE½n§•ZdàŒœÍ’êÍUüä˜+O»–#tÖˆ°•óbƒs†º} ¿;xxpÛ¤ŽÞ—e¶Ï™Z�æ¿;Çîêì–§Ô¯÷Þ6Aå‹äZ?ÈRû¿Ã�ϹS­™½wp0Tm‡œ|S}÷À8¯Ž?½ûoúnž¨»À6AŸ-O>ìÜøÊ�¿]<]\ÿå^ —ü\ÝaoÏ)T³M‰-~ÊCbê•Ê^ÝôKÀÛ1K}â¬RàKu¨ð½´‘DÕ° ª¡éË"铎ÛKâÚ€«Ãó}²“ŽÐ—C5ÄM$i¸ÔÝߢ¿Uç«PútcH<êå6V_’ÑêÑu„«ç»âÙ&mtо½Yñ²'‘\ŽIèÌø~cbc—ñ¸úþ_3Ï/hï­D‘Ód�JÝÎ5êÉ¿4ãà…4OÉÒ³oäçPjþ�:?)~ï·äø‹Ó½õ�éSnq¬O-=Š bj<®²èpåJÿÌ"#½"a3LT:ìè�j˜:È}¯}ï`’¼±Î±}W§zû5´äêö_P÷ö¹­ÒiÚÁÿ¨td”i vvR .þ5� ­WÆ~.ü E™.$«o4ˆ¿áùï°ø¶QdªèHäÏrSšñÐHü›I Œ×Ô ¨‹ñNæ ¤Os?ÒÓeõ‹Ñ¾ ”Û'Œã§?D×åFZ’í ·˜•æ¼¢m '^'$:$vLäq½QÑ»Ò4~A”TÃ\ÇúÛÏ›×U}¸2øÞÖ’ðý•öóS}4²W£/jý`¾—vç>ó”ùÀ‰\qIĩٞ>rý½º& îɶEí`•Ч^ã´)Wu~îè™H™ªs%L‚”ÏÈÓ}) ã ò/--™‚m/nqým ^¡kßÞŠï4˜¬¦°_ LSŸ¡ãìq˜Ý©aÑÕU�úÈ¿¤DÂÓ¦lµiÑWbÇMÁbU<mö±[µM]¸ôMFZ€i8nÊýKš�JAó7Âv„;.þÕJá1¯Ð¥ƒeðŸêg ²S¥~#»èyÚšÒ*€xKÆUdô›PïÞc§xàþ·EÜü\0ulÚAážHø.;÷8Ág¢o=¦Ø#=íÆé‘ï¹6~‰†£˜{‘Û}Áø)=ƒ1º‡þ i…†�‚¸1ƒ-ó‚Fs�í*Yß ¼”nƒÇS• Û™–õhÿWÕ®nºµÃt Ê­Ûgàë^#b„çÈáå;Œ¥ÜÐßµŒJ«hýõ×ç^sþù¦ ã4ï÷ø9ˆøÿŠØxi4�+Iççý§âýñ—¡›$°$ш2¶S1›ún¾z‘+ëícßö›f;~M´­E6Ìšã‘>ßpz©ðùÜf_xMÿЭ»å‘ew¢ÞÃ^S:<³— ¸YçMç•ßÿR~ØO'®ð÷�ë¯ïëó¹ÌPFun7B r¢�ïè§ôŠ‹¼|FU+t{yA{äâ#ì6|: … òCø:lù+Ôß²‘ìàVÍ©i§0O?.¸¯[Óª‘�ëdí#ž6–zêç#â³"Gãô»Áq¯g‘m{D¥h„£ñOw޳Yœ-biÛ‚$ïÈù÷ùražÙ·`ÜSâ·†®5d@?/šÃ�o¯ò¯Í{ÄSšOÙ"�ö¼"ïq AîÜø-'©pŸ~MÙxrRý¸ý25$A¨ó´ò›²Ÿ|D8ÉKœ¶Ëá´b§á‹gpÇ|ÆÈO˽©eÒâžúËÅ"¾VDnZDãÁçðØOóܦës76Ŭ÷ª|N“¸Pã•|ý™.zZÜz³qšbËÏ’_íMÝC~yú+ÀÈç<5Š ôËôq®óîùpÕHlËñ6r->gßE ‰Ä�§§ÎËrBnÝ/{èíZ!rÊ2a\½¾B·é»ï~ö�‘ón:rìZç¼S¼Nô¿X_ã~hdðrqv* @Ûï~Uþϰöã“÷áÄHËa6�û8t��ŠÑâùЇšÓÙ´–ÔV\i þ|Q"rh•ãò.r‚>EÒŸü·�ÐdMêR™¢òÆÏ™[¥Dk„Œðy¾*ÿ>nSÔ·àû?Xùä/D6öüµ Ƹ7Ÿ´—;^Ü8_‘ÑH\&œ’~:iNâ-2Ð˳Ÿ»˜†ýÑF;‹Ä„̧§ÿ¾h…w£ƒâuÁq¸·ó”]¢†n¡€-ìEÐÌÑÆ{ùºý¾àË!ÄâññóË)^RÌ}^$úG3Ö=L¾�¼€b/ŒyÐ}·òþàÏ)ñkRîæ¶Ÿji‰ºöQ¹ÀŸ¸?9À0Ø«E´š| 7z'U|¯_esQîå#(?,þehaÕ^ôõ¶Tb{¢Æ‘IŠ—’£ã#U˜¨·xœÅá_2KÇŠcgi7Ÿ$¬+¼IsP¬ß½NhÇÕÀä1ˆuP;ªß)Tª¿{?—ŒoøÍõ³×·/·m¼¸ûm�¤]�yÜqñßÒ„®~Ñè7ÇåaÝ�Ññœç…2tq‘¢œÚ9<ëItD}GÜÕµzÅ»—ŠŸÇ•¤?aè2¾Vpæv¾Åõa×z0³£#¹rŒc ?göiáÔÉ©×�4hG/Moí8Yæü-v_³LØÏ)²cªÂž{4É ùSÌl?¯æ¤4òïê·Hí×ü°T:p�8èj½ƒxÜÚ J£§¸Õï=|ÂwÅžoù'>¥ayùÑ{••Læ$ªæWršëݲ:KˆIÿ ¤~–¶Üíº/²Òç «/ñ»’BÂÂgwJ%ß`Ç7-Êmû,ÿõ²tÔDéã•^Ê(¦æ%�q`:¦Q#ø�ªNÀ²˜dì†!…HYws+kÔª¦þ‰ÙÚ©jY‘“Œ‰«Uä+áÔ!²ô®¦ÍßvZ˜b„KÓE•îÃé¢ÖÝõ*M-§Ú´â»¶y’eW€ÇˆÅv:¸Òé‹d]MíON=�§dt·^Ï[ùÓjòAЇ+ò³£Ò‘ìx“¨Ë›Ì.×^•0æ´€!©{ØT�ÊâŒ)_'o’ð/ù:éHr�#©„njظM‡D½Â•Ï#ƒqöëŒ.Žèâé¸Ó�òØ9\“†é¤qy�ˆ^ôú\©%Á˜÷”"<qslóǵÛý01g·Úƒ£Ä=ÇØ¼q3<©†°9ŽÅV·¼¬´«T¼+§âØ�3Œ‰zt{!8lí+€Q…ß¶¢^þñ‘±¯—çGjîðxnov7�°ÈP"oÀÙ>;¤)ð¤s/Ë UY%r6Å÷A^vªJñí²=`˵ñâßãôf ÔÎç·‹åG/›ÿ–6Ú7.¸·A#p)�8˜YÄ;øç>^ß(Í£mùC‡’e¢ßh!Í›îŽýãS¯í9‹¸ÿ 1n`7æã:ÛÂÓþ{•—ÛïÙµåÆZçØæó]k¾#rh…›«R{þ'÷IsýÉ {²€»uÂbÞ{ F\�]Ø–?÷ï2ÿÓÝŒk37�à“3"G°c²ÇÓhÆz ²üÆé¿9ç�½ìþÉýN9Ã…aCŽ8^5"s�(Üm…EFa‡þª‘SÛim* ª mõUþЈ-y¿UÚù‡è_JçIÅØ!Ø#ö:ÈÝ×äÎ ¼÷?#G×ò¦`n8-ñ‚bb§³"õ/D8ý›žŽ[NÅÎJɳ£]øµhìðê”g¥q@qŸßŸzïúÛÝuùÜ›‡ÁƬezscŸ>Œžn2–²q—SÌ©ŽíëÞd§´þ]î3œœL8&Ô€žj—÷_è~°ƒn8`ÇŠî)KÒŒ-RKRcIp4á øÉGîìý¯Õ!Ϭ_×~l9õ“ï)W¢×Q¥}tÊÃî¿9 ˆH ›`�'Q¯¯[ÄöWÝi~�â¿Øé÷g²HƒýöÄh‡HUQý_CH(âOUWí¹mEõÙ„vl‘‡{nÐ$SŽåöÈî­ß‹FÐOàçµIvU›ZßÄþû`>ó)©^æXOÝ~®\“åd±l¼Õ OðùŠÓ7„÷jÎNº-¹]æ+Uï©™4òp’UíF%‚ëô¡r³þ@Îãç³ôÅ®?ßîfÇ›ëâÞlðœW½³Íé¼W;/ˆ�`§}޳Pô⌜KKMŠÄgzª¾^Osÿ 0MIK­‹”~>(6ñW:=°e?Í­þ’Š®£™^x‚ÿOvêg¡­ éë_!6|ÎÈÊ*gŸH&6ih–ÓmT|›]®Öü€ÈÚSê�’*¡xý<+¦OÐS°Ã©¢ËHÐR™fDˆ,‘~¶°T]½6_áÖeQDÉâP÷J¸µ7äÒŸÂT|ÎfWàÏiy¸'ÿ¯D,½_Ó6gÑaR`™¾iy±ê#ä æ¹º=ìÆY£æ’ʨð�žß;&­õÄãÁÛE[Ú©Ê%w£¹×Bt™HAvìÔgÓËõð `78Õ˜“®cä ÜÝlj߆cŒ�œŸNé°NÐØÆî�%}.Õ*=4øçYO‰?}êó×9ÆðeŽsõ„𜸯O,ðÿaôD*Y-‘m'D0Úáñ÷%ÒD€ò'ìÚÛ bÍ�NåpöSj žÕÙì/R¶ÿÀsÍñ½“í‚7MïJ”}K‰¾.Ô>þ£“ì²îÍaÞÊóOeK÷Sû½B®ítã=Wð××ìØu^»ã=¢I‡¿¸¯òp—Nÿ®ÓZ…¬èõ‘�v48Ý5Xèa~$èðyÖy»`ÕZ¿Š�Ã�wHÞì†ñ‘2ä}6}¨÷-Ç_ tu8lS8"^Ä)`ÆC,×ÞbßÅXr�Õ¯,ÔmÍ�ߺhÐ)åAïˆ](8õ¶sV÷�óÉOxš„å∇�‰Ó…¼šã)âM}�j›‡iÿûóõª„]3Td [Æ@"ã~ † °rcósÔ8U¹Í¸C*sì9œ0w¬Ÿ#Rɰð¢Î3ÂÑ™ƒóÀ ¼z…GÊ·ðÈúÌoƵÔíô‘œÆ8Dà!}¾y¡ÄjâÚº±Œh0âMS(Á8–ÿ å©_Rݦ^Ï&ë`ΉøèQ BÎY_y9q oEß�d€¤Õy ίK{«i[džÛù…üxêgýîw§íßÅ¡ƒ_Á…_ͱá‚“9 ¡¿;Õ¶Dq<ø�y7 “.äÊ9~˜ºBÒy@ˆè›� ÊçåD×Fþ)ʆý–ª«ý"enî‘r´n=¯HK>¡ºªã¿3£AÆÙõÍ‘…ªî¦4×=DºT`•OqsBQü©Êl‰�È‹y,”)¹ÇpïbÞ³Îc×Eâz»�Á£ c:y®Ž9î:sôt¬êUhXüË P‘!v¯kyð¹•_lm4“W&bU(¢+Ý9/„q±›6IÝVoÕ®‰^HMV±A’1?þáß4eV=´yØ“ïÑ×�ž6ýžÜ'ˆÇê›�ûþ¥¥QÓfÐ.<˜…ã`Ow೟tw_zu‹¡ñ•lo�˜c�þ¯4–¸O/ 8‰#EeöÌKEÊõªÇFð�ú†*¥ðZ:®ÛïvŸ+<^}N*>Ï¥ƒáåÛûÿ5YŠmóPyˆ']ésÜù܆A�þÉŸ“,\=QñÏ–Fù)Ì+ 5Ï„I tS«3 PsJ<1ù×£#v¨Á1%Að™“RboW~ð7#溕ÿ‘Ã&ÙóóôÇ7J#þîz¦�PæçQ]oÓ$*ƒhÿ)Š~P¦ë�BÈ*„‰Ž}B›0v§£ó2MV½½Ç8’ˆK°ÑÒiïY% Aþ,£— ž×˜õfsóàw™ŸÌ£ÿ˧ãù¼îQ!Ï� <ÆW&ì�!Â!ñLÎ%¿ë)jI]N7…ƒ—ªeB–ŽÔ€c?Öÿvý­õ@Ää_)°b_k§ÄÙ=8˜¬Òÿ VÏû~mú‰Ü9¿±ãþ~Õz¿?ƒo¹b‡Í"(,¢Žä³�têhïEŸ±ô\©]`©R"x÷Ÿ[Î3D¾]þ ×ã)‚¶z䨲—ÜyAû“E  G>äs,•9É6—?¨�YŽ‘õ®¼‚c{<¦×�7tâóM»\õôÔU4’s=ã”é;";FS9m '�p­÷P£2!ÂR>Zãr�:Ár¾Ù)�Ÿ˜ïË�Jƒàiv>{üŠ»Ú}}�oª$×kl1kÄ�,1¢�oˆ¤}‹9$[Mb‘C“åDû)ÍÊEOe–þCaü‰œu‹;ÎÓjË­Fz~Òx¸®¯ó³¤¥r>q:õ‡Ÿè÷”]º}µ;cœ÷p½´[€—råMˆÌ[m Oºã(‘‘’`§$+Õã’-"Zñ‰xðå¡òp?wÆ•dÕû‚ž·km³õú„©9Mä鳟nýõc½Þ)¼Þ´jˆ ƒŸèŒä8mz:ëéí{JÇ K¦’æjúPþ[ßÁä'!¿µ» ‚øöáÌo{…åþ—â5Ï$NÈ›få™nU¿íÓ?khÂd‘Ú³ÑÓ" §€ÇúDÎ?Û*.ººŽ­�¿´âÀÊ;ô.r¨v==x*BrØÅ.q"Í­º+Ïd9Q\Œ‹k²œqª*"ßT¾y?MoWërt:®ï˜¨‰\ÉG[ùo¥ª½2¡ý:¨8?4‚ü‰Èò=²nãÓ“ò¹åÒ{jèÖ¿`¾giÀåW¢8Ðrê5ÓCTç1ŒðÒ<ÛÔXdwÚét·œU^ç^.ä½¢ñ¹Ž÷IJðD„Âú\‚ºÒ)ÖHs§óJ„¸Hf7�¿æ^“rº¯Ý™)|»«ß:S\™-ô 4ÒÎó�Þ|š;4;9r¸ˆåD„€XδY"ó­–­Î"äõῤ26€SX õòvÇN;]í þ†rQ—�0CûM iG„èc$|V¸aÓ¿SVŸÜÕƒ ¾ô÷lÂ|Vúnö&Øo\¼L"%ùtÕ:ïWÍú™Þ4ú…�Ο%ÚÇ—~Úà¿Ýûö…k¹sÑ êó]#ž§*§\1¿?�ŒõwÒfox Ú¤»>’´4xöìMþ½@EM{ÒPHwU¹ä¬% 'vøm°„«Q®¿Âÿ�>”W¹âê, ôÚ‰WÜ™{¨­!Nõ—öp愇¤ze¡‰£S°ÿ“Ús;�€úKÚUYâðwã•fÛˆÂJ~�ÛôåþÕ¦t”ïÁU‹ãõ SÐ\5ïBsCoïè6(Õ�ñ$õg|C¥] a†�oìðˆÛ ²¿zàaj—ìZ¦9rthzëίC²õ< 'âyî‡ ý qçë÷E4¡À-H㬠ÅRý›ûp=M8ÉóÞÍ�°6p¥vѶ=”rõ½â”A]�F÷àÍSK‘¡ž,‹yÅy“îýæ{¹$}”ù{ÓÞð^Ò©ƒ–0ˆß}]¡"ÇM—½ævS>LcKXêgÀ\Ú•HnnÙD§ßË;Q+GDc[Ò‘1CÇHˆÎ…^Áò`ûz9ª!éŒ[""©­8ØE }uö‰FÈJ ~\Ê4Â` S[fcÓé›Ó·ÈÜGTF@>ìÓ÷æ†(™ÒC:B‡›°d¼ s".úª§“à’# ¤Û˵8Ø^Z¿TA†Þ$Ý/øI‹«P�½ˆ¥¿¤Î;ÓwXŽ¿u½×[5Qê†Ì¡Næ!|ŽI¸Ó1--æÿko£äº®«’lw÷ZûœdfÞÿef*•œ›ÊLÕ<ÆTåÞ{öZÝm[¦%| �²{'áÞ½lK$‚ø#�ÞQLzbLÍTô¡�t[„?§õqÉ�ëuØz«Rêp« Gð“>Ä¢Þ^{Â. u:&I»t¨¡êWÆy5Q´õ‡ùÒ•åÜ|§.Ôe� Bìpå†`좮›Yl$õÉyhÿÅ5.—%¸¿ÁU¢o”κ¶åM¦®��èLJàÇn>üFEÃh—½Ö÷ëa‡—­s(÷Ýë‡Ó| µRbÿ‚à¦xʘ9’„%l2«NæÂ(­ÞË£õxzίŸþNõ+²Œë ®éÀx«Péµ…kÖÈ'!ýðr«_)ÐÄ~—¯ü¶áÚ̵ð»'ƒÍ‘P°ÿY6 ¿"£’úOørÂ�:ø�¬O³Î÷£ö†EŸÛál(™Nó|Ù¡{OÇJ¿ßX‰‚R+¼äÄlèÍ·ôÁôЧw�ÞoËóŽñQÛ®ôñþ�qcÀ‰SÛïá®»üÈ1d­Eí•~ò½ÍÀ@h÷é‡3ü›F’¬#"ŠÆxl› Ò‚'�ÜrND•¦e½Þ§’z.0­EÎxX¤Ð48Ë�^÷uŸ5çƒF¤l‘O!)y;W:nð‘w—[GÀ‘šIå3rÞ.dO[J(Oß3ÍÝ�ó­$P=Ð4…°ƺ–ñíÂ3käÊú5z·\~ƒ£Á×¥»EüÝ…±··aÉ}o> §>¦äë)³ËD-o:VàïˆH›;‚c´çu4!Ääupü¤Qpbíw’Y„Æ/�à‡¥Í‹åƲöÀûC#'Å"ù@'^�§È.ù\º2÷u¾Oœp ö 9£�‹Êr¶LÃq|fø½åÛ²ˆZà¿W|6›íôÛ;ù•Ûi¥g_â”i(˜¨7Nû~ÖÍi^-GšÓî½ÒYñÝøp­Íy‹ôp‘W<„> ã¿�±dÓCW²-š£�gÚ-á´0ÊŽ£BŽD.çœ�ÔUTè§ë›¶;)érwRœ`³+r—q«÷ö¶ß˜>µÂºÞ¡êÖÚˆÜkŸHF…ˆ^�„t4@¤‘òÛWÿ‹~®Á„@¿õJ�²éD²,v¬ß…š Š�ŽˆÈ\S$¥¹Â€£§Ér¬²·Sk¾�³¨v«P¼±V÷Éýªü��ÈH-;dY!qº‘íJé—íÂ6~éÝrµmу�6m€ÓBùÈ{¯>—�Á¢p lÄSC,BI�»“Ë1±øÈºÇÿv,²ÊOÜ|Êb§zÀ=|-§ k$Ű""wœ‚IÒS®7- {‚ØÐ;+Ï•èzWdäÜÚ//ÿ=úôh4ÀGX»›¯´GÞìþÅ] ù¶&ëª~ãÈ:˜�Sm¾­k˧•ÊéÄÙ¶µ|°ó+x®Àk¿ ©|âÿ¹¾~úr_v‹4ZD&æøÑö`ÏlÚu ãèÔ±Ü�IŸØ©¼¦[Ó!ë’:¿Ã¾`þ,‡’Ó¬•ÆL‡î‹w}¶bü;ˆê‹-RÔòˆ›Ñ¯"Ñáö1 ·Öt�¾‚›£ìÁ4ÛfÊló�ÓªO÷ªe¸Âͦ[3FT7~O›#ç#ñ!mˆ:ü³ÑˆÜÁï©7p·uS·æo‘T{«±ÓÎ'õç×%ú2 øk´œ  ‘¦¼ÍéÜî®Ô==ÝÞãî+çWmw½ú à=²kû=¤œ ~ ¿;][s–%ÉÚÆ9ØOÕvm¹Â>Æxºîi]U/¯­”ÖÙèI°·gŽñ¨3ƒ?#—™àôøß`Ä—ƒcÝÛÜÁ°4ß’>Gû8uõ=é/Ç^Ñ5§å}ÁaF×Ĺ¹-Û·vb{ån˂ܓã…Cßjåpº¶Óñ?.úùqMc•6¶Æúå:)œó­n¨îvûeMÎmß9 ßÁþ1¬�¥Ðé†}ü¨9<Ðÿ6æÝ°�Ûæç×̰—ñ¾_Þ´Þçoè;Ø»/ƒ®êÿÎxÇ"ûO© þ›>ãû9á›r_âòr ðwŠ—’R*ß–#íÛt£ýÅ"H§)yÔÕaH�hõ,ÀÍSQˆ5b."µ ›Så)œ¡£ˆ¿^ôX‰óÛ¸�§Åúö�¶(= ',’žK1…þÙáí?ýX)ôBuçYZ×ÅG»EÃZó{ØM? ~öXÂÐű-Þ wîiô¦TÚHtr{£­åË_Õ~:ľê%âåá;O„‡hÜbûßw™–2Ï…ªâ©›¸ÇkfòF¢åPC(ÏÑ£—À<`Š„íàßáî¶­ô«„Š… %È?5ÜHýqÅ�¿%±¥•ÿ‡®|σì©?ªs˜�øªáaFºÞŽ0ž­$ÑM:sÛ6&Š¦Ú© µÄÍ\œ;ejùC²þ¡ÐKøtHØý¦îX|S~p¿ÒVr�á@uÀtQnÆÄu¼6TÖñuø"�Ã?#`¹ÀŒw�,¿IÌeó´‘ Ž$Gõ/ÄQ†×v³”t«§­¯iÉG· ´0› Ô*¼gÅ1„õ†ê’ð¾ÑeŒ“®zÔ—9Û8æ¡z®“P?¿áOE}æ¿§¶tÜ¡ 'CâùÓë�ž=4ž`÷Ý�©§Û½ùc§"¤Úè8–ãù>䈬×Ýu~ËÿŽèÌC2çTź�24W›Ý†Jß3ÿíX½®rú-¡˜k»ˆqµþð[}5’ú¡PdöqW+œ‡þj@=`0ËÔò�SÇå÷_*�®§tá@»%Ä]›Ò»&‡pŽú“¾.ic¾]oŠw}bãÏ ”GzŠœü»ñþ�Ð\Ü÷¦„õ\+^>å DŠ�eêhò~Q|¨ÀeÍ�Éõ�qúë„tW})“WÉš¬Lgm~§aˆx߯յâ&‘˽Ä@Ü‘_[w¹jy‘–Ubù<â‰l+3�Hÿ»ç;î\³ß½ë¹_ŒÚyl$6“šëœf‘ÉõÊ'?Àå@~ ÇbÞ]�c­Ò¢ÂùDyÞ�‰Úe��ÃÄC"¼¢�ìâfø~õÍ·^iíÿã’YW:׋¸‘“~yÒ?7âÓôQ®}üË?TÕáÎ𪹺–ÏB)!gNó‹ ±ÔC?AvCäÐr§°MN¾‡ Bê1îÛi&WÍU°E"î^ÿ9Ù®úÄ—Ö%¶ËJk�s=U…šTR!X�ü«h“•ôI°¼¾ìØBaX#ðøzÒû3r­m9¦6œ�3dϹãÚ‚�f^ôÝz:G뉻3ÌŸzmÞO/üš�ÿ€­f˽F3Fv*ôÞ�¯rüKˆrz�ÆmÀ±Erާ¡Z„ »þýª†ý®§BÒ£¶ ‰pFLÛªÁÄÙ²è¸ ³?‘¤õŠ»‹žV½÷»�ØN•¤"ÅŽ-›"Ó ³â=#÷¢�þw»).—‹ÃTÚš ù]ÍîohÊ?’ö°D±ãËQvÕ\hëV7�ÌÊý{éËÙr-îls,ò¤§Eó»Êß: Ñ##4+? " †ÈÛg²zFÇË"v‡ùÔíG&Õ¼,}]`Ç–M�L‚Ösms®¿ŽŽ å?9´äãÊð�µg<ŠY—c˜¥-G^µ".÷ÛÃbøÄSlCÙ¦Ší´VDÄÎÊÛ2yg­F7:øY±‡%‡N}œ—â­O9„±˜%ý�'à»þv}ŒÈD’ÚƒÜ-uâÞ†N1¦„#=-r7yÇxÎúÛr gÓLj(^TŽQ}.'ŸäÈÉ}ÿ/ý�H0Ë‘ZŒ™Ù6ØCºÅ!@ÍÐ/ã±ÄTÛ(Êd0Z®Ð툘*ã¹ù�QÃÝÁ·g7•NE6íÁ}õr «‡Yû™ÔÛD¾; 8+rˆZÄX7Q8kÄÞÛgö�r©nú¶è¢@®$ê Ái}NKŸe‰ˆ? g«¾äÍÑú‘øEò×h@_ðÄÛNñ+÷�,Ž�ÏoúH_.‹“ÿM�!—æ”ìÅng¤¼aaþ�Gxÿ¶"® sXËØÉñ“"%QnÊ[D¾Ê r–‡QÌ�ãr&hË)¥|° ;“Ñ{²œÊCâ?¥´™y½ð‰H  |4Úiу£³T>(¨®ö¦LVR(þøM¢Fp”†¾žÛØã\‰JDèÿf½ÕM«»»Í£ÆVÜDfXŽ;ä<š-Ô�rôiâ¯4•'䎽¯É^Cǘÿº€ž'àqEn¹WDž½"D§ÆÄ¯æÈôô†­ó:9•ÖEá�«nÌÒXÙ¼_:¢¾ó+¦oX[ýçÍ?¥kü0$œì×"p½ù¦cÜD†)Ö]Õ+Ù²AsIŠoú}ÐECs½¶ÏøoD¤¬-êGvïvô†ExŸ1¯·t*õ zùÎÕ>låmóa�ò~�b±j+Æ¥O߆–i}Që+½îèøTŽËUdæAßä8átïý0\7^M-ý…ÇßTZn_‹´|‡}¿PÍu§ ÕWsâOáu]ôo/’ÜÙüv×›Ÿ8ÅÖ^ä0ÞNÞ>-—\1ÿaÔÛûÙ8Z?æÿ¡2ÃÏÈ�ùæ«üb<Žy‘©Ÿ>g]ç Xç–Ó�E#Mºzb¶ÍJàrFJá[à/Ï žšuü<ÆœyѸd7½_¸“‹X¶œ±²7¿œ¹’éëóå¢`??CõC�`nþbúD¢¸aµGçØ})¿A¿ˆ Çö­صº! �KwT«à>�mÎnŽ•Q—W4#ghÏmßÊ�®¿h×Ú/í=_ßNŸVãÔ�!Ÿ“¸�±ŠåÜ[ ÏçˆpéýXäñ zv…¿=ܾ“»º–ú7ÿåÂ*7¶Ü²”«? '»œ�…Ç( Ti�O; ø“?è#¿üÝå˜8=•ä°�äv@jœ&ô7 ŽyöÄõ\6”¤…ëG\Z¸•¾ ¿Mq9ü•¤!–U1TB¥‹ÀÔå‡4æŒcN!BY²8üq…åú ãääzZFÂמ¤ö/>w»vÉ©³zé»'?g'ªÀ%ª'CKnT�+Nû�3&iœ’¥›*íºjD¤�'hä¶ÝBFjM7U6 óÚö}Š.@)ñYBŸ|“h|¥…mF ô*ô÷¸—þ#Ì )ø{Üë5÷å Y™…ò_ªuÕ½ë#oôÚ§î]4o;:‹Á¡g›è¹ð�Ü:óÆÏXQÄѹmß�*ób8]{ˆœ}—öw¯ë<ß]<\5I‘t¾ î™ê£ßT€Ô¨± ‹Ýw‘¢ÜãÇH~ÔáT|é.(î^9œ«Ü„.ä9Öéþï”>vàíiã)‰»¸�•ñT<cSCñÁ¹wdð¨[§�=z�‹—©bK�N)«0ð’×yµÝK°oÚ½!‡µºêÞã“ôGf#ïš6<Ô³qO¨÷8/è,MÁÒVá'½•ƒrIªÃ³Œ‘ó@þ9ùL=$ú²Z¿”7Uß™¸|‹Nt¨4w¾)ÿÕô_¦Ï¸’¬™˜äo9ñç^µëfÓÌT§åhâûk:k˓۱CJjÕÔ{ÀÅóèSèaøYþë%úD3Ä…—ã¿ßÁÀá"šÛ¼yS&Ù7½õ®§é]4á$®ü-IþßsÜz½Ž«Ö‹tÍ�?ZÌkÖ[O4tφHDFáF$ª°¿yâÿÂé…#Q–ƒ+ʯ•¾qxÑF{s™ƒ�±àÎÌr¹îÖYÔ›¯ƒ‚jÍæg™£ÆhÒÊðÙöÓ@»‹eº¼ùcÇÏs\e‡¨·¬ô:Ò±}p%šÍM¢ï {™Ä–&¡ÏÎ=¿Lkþ^¶S‰Íš¼/}´ ß¾ÓTž\÷d2Ãô˜|Y,éè{ˆ$îNÛ�ÿö_•wf<Ùíx³ÛNµíÍæ}uÝ žXºÜHeÁiÊr„#:.gäD[ï'òÆ"ä$Y '—Þ7Â!G‘\b6~ÿ›Âû7\O9`eõyyݯËõÃ*îý ¤�*÷ˆ§­vfý$ìí_´�|¼(œÕ‡cÇÊ›ˆ¢kCIþè÷Cyƒ®w}+¯>RˆöÓKƒRAä—åP }9|jv\+õy´úü6ÿ§´ú�1*Ð-çÔV{‘ëNŸÁNË”çÑ;œë/Åãü3ÜÃF? çQÃm!vÖ”�xØr©BIóó¨lsµâX Q*ŒÈT�n„½<Úf;ÍOp:}jd+ý¸:+í+ìŽüó—‚ÿõ³ÁÕ‹iD†â½Gc¿àQ)?ï¹á¦Œõ3Ôqnä”Ê·'Ï'R¿à%¡žmö žD–ãç&D �5¢Œo'´K�ŽF$‹Dΰü¾:~ßê¯x„:|Ë�™Žï^ ·>Ï�ñ¸z¯ïJš_¨`„F\Á—šPõ"zÏE�3t8Ó÷ G+ýǦù d©­ƒ±×œê5Ÿȇ‹L­Ñ�D�á52[$žé�u­V¿áå<&K–h¹á¹îTNk§+"õD šõe²Sì‘ãs•ß>@Þ-`AüXìQ¬å‚ÄOÞ$%±ù”U“y®'�@ØÃÙN“žÊð#>J�!wƒ¸Sº7òAïŽ3rüñ½4r4,sâ&$ˤ»[BUŒ>Þxí\�n.ìR?xEd³Êm9]œÍv€ÜˆèY-àÑçäÚ1¯3äoLcw¤C˼;³‹óJ�ß2º†¿éBë\Ö$?Ô×ßˆàœ‰ñßl˜W™Ù>ðDØNG·×¯ëyÐŽ9÷ûˆLã–s¶3ü�ñÔº‘Ù/!J*…¨9ô`•eÇጚ™·?a߆?Q•@Ìo8!$‚ÁW|Q¿q½.¡£É¹�xá@…àHÙˆxÙ�o�=Oñ‰þ¼–^®°€SôWWèÆêdÁ|$Mf ßÞ1OjμRÁìaÙô@ŒÍKq”c”“EÄF5g)]ýR£ ¥EœÂ“§ö£“¯f¢Vj«$^é“©�ÝŠãÁ{AtB¨ªÍƒÇg‡—Žó´³˜K†fIØeõ†È·òeòdfÞRäøþ­=Q«Ê8M�Ø´Û©»@hÂiÐþpÖý7B:Ê›F�ÈäÊpoÎF:!·×›,g;†7u`ø—SW³/æ²iè/ÉA¦›`3 5ôÉ¥ZAuh\®g~b±žY�Sw‘—µßÏÀº^¶º6Êöh<ÈiòÆ;½[ÙÛHloKƳÖZ:9z ¿~Õ?£ÿ+øõ7ÖÁo¤¡u¦^>ñðè²ç„O�¥¾ ó‰NXÿÞ�Ö¡K6þo¤,–{þö©ØUÈËärw›>Úl�Ù =2‹uG z‘n±kZŒªrÊ�§xBO,NNñè‘+]RßJm³/W@§³Ëͺ•ÇdŸƒ;áðX-2ŠÙyI§î¾Á-ÿ}ª8ôŠÏ-¬n—ÒvÀ nëÒ­iï”wg^ ž/˜ï�ù{Чl&vdß÷“ËùúêµcÓŸÚ‹e‚cn{úܪ±²j±Ü«ƒ[„qãÓü ãßr³nßîé:J¨ð¥èWm×~Z &Þ@ú=§\Œ(–kð>¶cR¼ v»öçyj²øŽ!‡ZÁG»%qb× SQF~­¾ÃSdñi�þÛÿÒLÔh(¢lô A ¾ûn¿�K½*þi‹ @më¹»ÐE|䜎IwÒ³£wæ‚—Xé”-¿ù¸�òI¿ ž©oéÖî52C*‡ð �6̃«!nWP‡#}iõ—¶¹v}VŸäH�‚ã�£Anîc»È‹ì7›Ü'»~:>Ÿ¿[¯cÜbÅ®^ay.óȽ‰ �#lå.š†3_–€ UM%NŽ¥j‘鯓߽ÿ~ä}ùɸ¸{^.  ¤¾ÃwÓMaE€ëQhäð íXzãqãòºÒãú¶Ë�¾‚ìÐ!M¹‹˜uÍG·:ðzzÃ;‚ü¨æÃRuêwÇ@䌑Ó7FÜŽùG³pÚ|�ò#�ëu~ »pêO|ŸB�L>+Nþ‹øfV-ýeÇ÷1\Xžb›ʲÂ}¸~D>Ò¾| UÝsDÒÃK>zc÷ºËº ãà„‹)b»&Žãméaçç’œ¼Wðâ«yÀ±ÏF¹”· þ²dQ¢“‡Üç ‹"@ɺ`—.ÿ)Ž]VåăÞþw:g•ƒBrªo‘D¿ŽéQ^Éù¨fFáxž2iŸŠ'à’y&èƒZÛûЙk›ŽÄu :©�~ˆ²h÷ ?¸nröÈ6E„¸�ë?Ýh¸Ù`5#�º˜Êê¦ÛÄ׊®�ÿÝ#ÆyOà)˜~P1ó.ñÛ£È/��Ë8ªÆª6Á5ðz•£­ºä Àæ4îSãÆÉÑØÂœq¨ÃLj¥Eär#A ??AŒvNXš#Pñ˜þ1g|]+šÎ é[ˆ¢M‰È¥kUV«@0¤ÔÔY­OãÆÌEµôH*�åPÎ%^-NS¦œ­9Ë 9Èš³S6¾°þ�ÙâÙ Z«i2ÆŽ¹³ÌxP–ªø ´yR²mì긬Ê(âéëpÓ8�`jÌéRßæ9ãû@µ/¿Ôâ@Dí2NºÍÃý »\û§t€N§ÏG¥·LËå»°¼^²O¦ŽÖ�ž„·°|»†¶ÇÓJb]þøÇ?ö•Á²œö‹Ã€$o%¢£ · ¨�/X&¯w�ðÚNék NBì�e^Ò ‚~KRê±tkìzÛ﯑±ŸB¹Óåï¤æõ£ñ9¼šlÝ(Œ×e P\Ñ·\íó-ú²�mÅFì×Ö¹ì';á‘�=ÒÖ¶�aZ�ýjûC¿žÿÔ:óUÑ9¿`NÀ$É(DzŽz:êvú¯ö"Ž÷èЩ‘wäºyÓ܈òY~_(ZðÑÏ:pšîž[’•¾žfüúsoµ~þ®t,VA*‘g28º¾;„2Þ½ù‡=Ó½îW‡ÿøwmsų¡+Ú¾ J±e�¿íŸÃË×N¦7¥Ò’e€²rÖœfl¹!í È„$k÷;5å‘Õr‘¥nh¬oÇ2•SŸc$ã ‡Ü{9·ÜW{RÈ)·céÛþA½"~î��aÎ*?ëíº“²�x¿?ÞN­õ‰ŠX­¿?˜ÀñI‘Ñï8Õö4|„>Qý•ˆZ� +õ\ä†HÛ3à°Ï µágIç>#,Dñ€gíÑ =².Ÿ{íazs°¾`#—Ôð�HÌ“EŒc 8U+ðÙF£ÕÆä,ÐŽ"4ÄpX®¸i¥=JYÐÏsß“³àxÄtª<#äÅ"[Ä"W -[Nuî%[ •è^qÓ ‡}]+_îÒ>hÎP^ï�žÝRèBÁ9 âØU{QÇëG*§µë£?ËMl³ß¼KÚ)£ö$µDé�NÜ@ØihƒÚÑ�þ¾Ûwä ^/q—¤¥BhÔ^Žë¥?n|·ˆžvqÙý—-‚òV\ÈUlsµé;üSôwìZ^t¢¶Ã�ëÛ hƒÊl9Š'g¨òŒå�\']À¬DAq Âb@DÜz=D0¯óìý~*ñFG¼Á d¹÷4€ê$bîeî÷v.§g Œñɪü" a¤èir$Ü?ñ$žò“øâg$»âèco˜ˆ¿MäüQÖÜÊ[ƒD>6¿lÂéêÈ‘i‘‘Ƨ9R+—qUßeE$ã‚È‹Ñ\€’*Y*�tXK# dÏ�ºßFêÜ©£.#S¹ëžáÚÆ>êg WÐkä”âfv5ÁG%I¿s9²G’sóÖ×n­:çH9‹xÁïOM©MçS„rÇ<žšP‡oFDã–óq»s#�L=ùÓÏݘ§dZîKÀ¡–×ÕN3–îæ=R+½*)äIíßî÷8•ÊÈõé÷ê‹»Ïø&7˜‡:/Ú ä´²²M§†”~`”i•î8LäΈH�-÷ï˜ÏÚŸ� ë!©5ªRƹU¥¬ˆpê¾QšÖuª˜ü_7½T=âåj�îÜ\¡Ç¦•~ð‹?ÑŸññ²Ø6T¡Ðþ¹«9ÙÞ@¨i §dÏ•ºÝÛO�ýªwü {nÍ­Ü—–Ñö±ƒþ³¾ ³çþÜ››Ÿ@‰ÿlÒ‹¥:d¹ñjÚsô”æ­NI™‡»Ç�è!ɬO⑨ëÞ-¥íöõÇM;gõ'>¦~NmHa™M/8E÷tÕõç¿®*÷o/Ýæ_ãCŽÚÁç*î×õr8XÊû9º 3ΰS«}®¾r�À§œæåë‹¥˜³†úæáé¹¢îîVcö/lnp³¤VÕqc¬e™÷À†í·)ÿû¥pï,2t†^ùDg/$Y‚Þð§÷ú~ÙÕUz¡=W8aY±F�ñhI›H¦õñåýS÷^^‡ ‡¼$L{Ÿ�K¼}›Íø‚y—$�¦ût¥~ƒê�ìÚ—aReñ�>±açåÁñ³Ã©žeý7O¸Ø�&Ë.§CâÒöiºâ[�¿ïÏ�½bdÿè^9ÕhZñsxRËÌv� …Û›«£"¹®q×íÃúÝj‰ ^´ïu õU5ã Q¸ËH+6©,‘š¶w(�1�áày˜Àè@*ún޳´R´\žz“�{T:ðì÷ÿhñ8>,Éb¸yŸÁº=sî;lþI¤á qô>²šœúä¸ã$M,P±]¼Ö<íu4;”ÃÌ‘Ô&¸ÁŒ�ÓnƼíð=íã|‹ÕªÌ뫘¾]�'lÇKLéµ’¢ç(áL•¾Ùûˆ³ûÐáì¶{Vê<ÚBG²¢ƒ#g;¥Ë{Å^ˆëÃ`Xe¦ãùÊÓœ+JcuP�«ýåãæƱ®zÌJÚ:ž­â.ÉQso@ôÊáåê[pˈ  Ú ›¥ú¶es€ ‡qyï¦+¥µÂM[?†þ |¼î7<8èL®G�“(qï³3¾–/(øÉ~ÙóÐM”ú¥’¦EºN¯‹Þ “PE µEutY#³ƒ.õ»qZ±UÁ/¤²®okÝ¿{/ÑÐÆ‰ÚÏÃw×êtt$õy§³ñzÁ &´¨W<½ëØ#:X^‰ÛX qã5¢»±WæªýIÒµ’PÈ=Gz–|:è3Œ€ªœ÷®Sk6ÃQ ù½ŒH2¹ùöÿ\ Š.~öÎ͸mÏY÷q‹oÑï\çéPo$Gs‚ߣS¡5ÊšØð]E9¨pšëˆïùÌ‹Cžb>À›¨e�Ü. rïëQM²mà|üÒF/?t�ôç.R#i®=^4›„X¤“�Ž‹÷ùý½¾mŠf¥ñþc¯?ü»>:•¿!’Dðôz?ui•åPÒ'&{δmR¶'3_Û±ÃÏû^oùóD!$¸¨.Ê~W4ö„m­Oþ¸cмP¥o&S…™¨ÍQº†�³¾×ã‚¢BêmØÔþ Î{¨3¼¿ïu–éïzmüPšsŠD»#äq�Õ÷¬74¸pØÑú–{IÖ«ÎÅùMÛÜôø�¹ ÃÂØ€ã=Rs›ß[Cã@“ÓIçbžã¬,“ÂÛžt¸-=)PYÇP�·—ÄCL'ù…˜  1·ŸˆH‘áZa‡Ïª¬vþ˜>õ÷ý lᨆûzž•»mÍ«  ¥•¦â*ÊOÂ/T�ÝÇ`‘¯…] ðlÉÁqʪ§–Îjû-bÖ:/W…µ�úkóÅ^Ž5sÈn··œq[�¿��>òqOöÍŽ‡uÇïm·G� ýôbo�mÜ•!PÆN¤£/>§ß��º +²ºSDw½¦ß‡­Áv›4ÇdW©¤â#XôQçWÕsçôô\6x3øöÄA~·D¥¾á4cCìŒùY!Õ8n�K¿6¼jÄj“Ënwr×¢/âæeÓúò¢}\?Ë-Îú3õ°ËǬǃ‰%¿0øÜÖmÛS}D[6H©)à�µ?YÄÄœÿ½›h‰ßz¾�Œ–ËQç�rNHÓ8­[†›Òèž"Û3΃žŽ'W�è•iò*¬„@H �p:Š0ïÎ+ae9d„Ó9oÐ L6î5Þâß"œ9P…Æ/LŠ—QÔbµãªN6nUû¿"„�Á_ež]Ù!c}·9ÌE—’)nûéO†w¤O·¡çG}BºZ®§»£ßW½û§ŽÓ¦‡‹Î¯©³µR-F`ä‚�ç ®MÈðÙ8¨>˜WÃf-t‹ºßõ`ë犈»é¢íæÅNïENpøª‘.C¡39²Z ôà8¸ÜŠ�;NÉ›n–[¹W‘eg¤±?»„S†ÇYsù®0c6¯{ÿöû¶8äô%©ÚÛÆ5�ý‡‘ƒE<Ë1Œ,kþª§�¯kW,ç1±.d/Ð÷·ó¿xŒ*ÿ7Ðwâ1td~�¸UÆ�lzJ¸e JEj€Þ0x²áÔͯÏ_/zqB„7Û)óôˆ>‰ÒV·M”ü0YHJjÛ`h §7TøŠ��np|4T”ÔõÄ/—dVu~ì·ñ7¸÷‰[Zl“›†¸Œ�,Õñ9pÁä A›Îœ²k�‰ÜÝ,®›³6oXÖ½^ WÞóýñ!ŽÈ»çÆÛøÐE슱@ïlòº»;ˆ¨±Sº­\`�®üä4Îm,«Ù:9l“{¨OÝ( L»‚™´”³+;xA#‚[«”×öÍ¿pzmšUþ×I_½Þõ¬³)äm–vB4RiäÁáÅšÃP*¿ ÂúUÒØ’ŸÉ–3öyÅ=ƒžðûŽß7øÙÇ:⃪<ï9'ý½�ú¼Û�eØùåŒÓƒÍǸ[$à§Òi¸ƒ.¶ 9à:À·XW*4¯Ë¡ðéõ¢ýÚ b¹ÓÔZÙsr•O¦[Káú úy;m½Âêé…;¶ð¢Re9DDn§Ñnp.gíâó–ì.xpâºùlýîËFDÔšŸtþ\»ãô—8멯ïŸÓ~.,]î®Ôº!«#É|o#òòúäæhÓhiÞÝ1?êÙiµ[„›§á¹ ¯°ÿ×?U _O–ƒW´ùß 7ÞO5rwŸ_¬oØçz”Ó…Éh|ôy1j+÷=Ü­3ß%7¤{qÍmF¸×3û|Gdà ",_áWÝñæÜ,ÉŸ û55"vÄþŧO*Àt?nþK1¥®O-œóŽ1&³íyŠÁØ#¿œáUF…‚ñÜ€…Y~jUþ$ÉœÏÁ! UƒBž0Ô‘Ž}å:ÍÆçˆ;ÃQ¹¾ï?ý…~Æ�ò(᳠ጕ¿WÙKÈûø´¼)Du® ¥J�å?ƒÏnÖ3L©¯#Eî bý+K{‡‡¤…�]ŸéÝQ­ï¥t_ˆrqt˜3vÔ…ß_hx¸&"â„¡tšÛö¥ø QŒ<’à$yx”ñbÿ½‘fJƒ<KºßðW§©WÿÎVl>½P;º5gM‘07£Ó¶ +ãæ¾|©—T~$È±È üŒ«u'á³��ŸÝã V/IèÊ åIþÕõÜ¥kŽë¼>N2]õieh‰Š3ò¹éˆÈüUl!óø$Þ5ÝϽºE\{I¼d†žÜê­DÿÈÜTâˆyªÛ›�­7ãôÉ^+ó+nupR­AvªX<¢¦OOO¢@gñkiú >…ÑT"Þ©J”Hq(0õèÍm'®H¼Á®2uizp‚ÍiaLj;¿ˆì Q~K�ï´êðÑ ”ÉÜÕ‹•o¥À ªÒúh§Fsn:1‘-?ÊEò ï“ÍœÜpƒÎ0’ÿÔ+LÇo"ÐA‹ø×^õEž@Ò:Òåèw; sÞ-<;ó/È }$×_U[2Ûçë>j©mÑnfÛC»Y5ôe3ùQ­Ê¬ðœ?o¦ÁÌjv‘.�%è{;ˆQ§(«G=# §µPŽÖ7›®.zNúmDš¥ƒ wíù�þBU›Ùœü!²»l¹Ž3Ñ÷ܨò…ë" .Žg¯“Ö:Å^šOÅî-.ªÛ QÙU[–å­¤J &>R®nü{?›\q®Ôr.2wæ$Áv”2Ú~O�™òš´b,I`¸ý^FKE\{kɬAKj†9§¢_›%Hd6C‰b\ÅÁ}Jn‹›Aøk=äî÷Fî]9 Ó�I ò)ÍÑÔÛðC{EI5ø9qt7ѱ�%VÄÃÿ Ø×á…æf¼VæÁÙI}»AÔ×ca³¿Ö«çªû~žw›P´ÿø´@»Z6¾~àò»>¹ç7ô;îúΔú{Ç ò±§Ìc=®««gâSh.‘ ˆ[‘ÓqD„Ù|:Ä%òa¸ñÇr¥žèQa;5W�“Í" ‘›Ïà4í ¿ë‘££æ´lsÞeI%ÐW9 ‡OÀÓù.a¤s²ô;ø}ʹ¦’CYØ*Q§„è•eY!ãi¨útX¹†‹Fww†·÷i|5ôsÖ[çyÁưëCcµAçyu�[ñüÛߎ[âYn>%v†~™¢Ö,¾xæc ÀBdn;ÑA°_Æiªãù¦j}aˆ¯=SVŠ˜Ïu>8ÞÌI¤—¬hƒ‹Sƒ‡u6c®õVðµÏE¸Í'’òðÙB âÌÊÊ ®¸9¢� ϧ‹xo¿Ï–äÍæÉ¢OæÁBVÞ rð¬WÕ Ï¦Ï—g›¥ëPóe «Ž`‘~Î@ñ!�”çZ–œ±ƒÍâ8M¡ "Îrô rÎ1B�Î3N�<©^º-ª—.ƒ¶+�÷  /iÆÖ:à�-Áw÷2ÕOñå|W­z?e¿ó‹‚�íõ¾ÌG‘{ ŠIùLý ÈõA¥BÐ’Ë“âÆ9ÛC¦®ÿ¯î�‹ÙmqÐJçÅr8Aî¹Ö¤â“]–|*¤•ÉNñ5û‚œMã·ù-€m‚®Ìˆ\ ÷mÃÃûà{} 2± Æó‰ù³þ,÷äö¢ÍVc;ízƒ9!‚x…^%Dì�ÀÏ‹ÏÙ)²ÿÞ®\ÐoŽ,\oŠÿ™t½x»(|Í=eD àve·iûmfî F×ÔÑ}RZœ]`°�ö¿õZ«ÍÞVíôÝŽÅtª{äê¥rò©†P£uÖõÁÿGñKÀ±Æ”e8™�·â÷|×PÃil™»·íôV!Oº‡ßýï<3Q*vØ`q×&kŸk|?`7Ì"¾M·½žÔ¯ú¸ ä£$ó,b|®m_ßt>ðFN¡*»Î:¯£FºßáN'îŽ? Õ¦b³‹æ¿ ýÊ•3}ÄÁõöÈ/ž•°E@Þ�„_dTíËrÜ•ÔÚõ» Ë vÁ6R07„`¸ÕâäσÈÕäZü þc`Û¸&wí=69þ,c�ª£K“£{ùz3®tÿàŒí¤Ï¡Â zÉÆ€{gñ›ß§Øà€Q¯`+Ó³gDT¾§õ€8àÞF�é´Þ$v{nÅÝ.ãÍ€Å=°Êøúëw\¼ÂO+z8¾Æâ$OÔèâ™'GËe†)ðÃÀÝŒƒ>ߟï?9Ûî…ÀØ+…�ÝŸmØdœÚ§~Ò"<ù`!.iúëÒâU¥‘’´´“Na ކ®}ˆ¬+øB)Z×èEûnLÃGã ¿uóÆòÖ•ˆP£C+«ïÔ^1(øuh‘ñŽJÅ6ìÚÍ¿:÷zE /q‘h[qÌc¥ßgOáG)|`†¡Èˆtž–f�^aS§,zóˆ¯-;üAFƒ£¶†xnÛ­ûW ÷Û\)ÐÌ)€8&’öþQùŽGYž��Û6žóŠ—q9Žb.ì¸Ø[‡&’2°ö࣡ÓÿqIøú�ÏKÏ`<ºæÇw¤lzÖƒ}yŒ0Ìt�ÅÑ’sU'×Û^ 2 Ö͈.keãÒÒêé 2{-Q�ÿ÷ä®F} åb>Ä¿Š˜ä–G=uQ*ÚŠÝoŽ$ úøù'-þ]±7 çμ÷¦ëÇcõOY�ZÛÊËM´Dþ ˆó3jÄêŽ÷mZ‹_ÀœÍÏ[æ{5"òmDª0sùïŽ7cž�;†¸ÛÛIÊ#(诬úŽÄÿq1BÕM¾iCß´ÈRç§[Òäô&Azפ©zíµ±žL±”ï}“¬#yýf”ëé•^WþZ¿Mhšxª>X˜9š@ç¾ÜvÜéZ˜úŽcç’<º˜æ^$ªkñ×�ŸØk®8s]f-ƒÙ0õá÷ú£'ž]]’é„ß&㙾\~8Žžÿ³k#•±#ƒQ�âý&?c^˜Ú�ÄžÀRÑǹ^±&æ÷Å5ÐêÚ‡±ºq�§Ä16¿P?)Çâ_8S—Ü­#vË$R­‚×ÉN4o–�ëÏσP`¯‘õ– høˆã¥XÂÆYf^6}A C{·A|›YRñË©^u3ö½´é±=®‹´¸Ûu¯7|û.Öï‰Ø7†ŠGéËî%çŽü7nS_Äzí¸‡X§m¸�¯K�o»mnWOU6�s»t§£n üPOZ¨ò¤×#>³ÎŠ|~þËÿ™Cä\¢f@ì`«¶‰2Ü5ÒOp ŸÒzGÄÇ~ú%ï¹wøœ[NaZDÕúñNáIûŒœx§åD¬½¿_yÆ?–Þ¸¢ô£h6`¶Œœj¿þП?ÿlÚïOnÖYñÆ(�”h–‹Ôg¡UdŽ®˜oO†Ëëß�N=uŽ'Dò,v*àŠî*½=Ú2iΑïÌÓÏóN§ñׯ½†�v$$Í�/+ë³^–úì)�©\ÃÕIO‘fðÑi·w…”HŒ.[®¸YO]¦ÿð¢÷ÿ ‘‘—?Àìzº5�È¥u׊uT#2Ú“w‘ÖÙØà,Ún˜qšæéxà‰×�›¶û=¡)9ùJ&.c¯‘?µŸÃr@×"8áqÃ/NG$W²ˆÚWð׿!RîRsyj=ÍÙUò#òœ`›ÖBƒYý½~ ԫΆ”HÒSÐ�ò‚ÓyY¦ÇÆ‘Fönó�r„r¢�|Nú}@n1DÌ=©ï>bb.þ¡©‡Åä‘Z8¥Ê„SwñHhýÄ©àxb,i;Fbú’1'¢ž&[_´Þðù™‘Ûÿ_·'ÊÛ)sgN¨÷£·HÍMß[!Yõ8Fû§,3ѯˆ´âœs.™RyÑSJùv¡( <»‰( CêDFåAÞoÜ~ ˆ˜!DšË’eÛ·s¯ËŒ<‡7äº� pz뺸'z;½,·áYc²êÖ%�€Sû,×cÇ`¹ñöu‚§ÜøË.khÊzžò”Põ>ØÑ5ÙkŸÇ‘Ã+ìîù4Wë:/*ŽãÐÛwP¬ø¸þF^,r|!ʺÇÂI;ʈŽmB`s §ˆðÎHŒÈU´Ì8ERܪíèÊÿ¡îÎsT™q…¤ãin2[N#EÎHx“ãIõì2OÝþÊPÀ·Ã—ß±oNšcWpŒ X 4i76쌜Œ_œý¤vŒf§eH\~ñéD\EžkߺŠáír²/Š{u>͉ŸŠ^¹¿3ð»¯J¿3knVIr`gZ²)*¨/.¹µüB£îü¸Ârªs À¡Ôª\û”ˆåÍ3o“;ŠòצiVS·ÀLnB2œÆ.J8|ÚRîVœüpÛg>7kypJúvç~Óz§³<$É ‘+¯'}Ãd^W'§‘RE¯:ÃÜ�ù´vJQmþÖN�ÚÐË¿ßÜþÝ"·K/'å7‹¤šó±Ï¤üYd? ZWÆwED×$T×8¶îûúøœU¼žª¾¯ô×¾·ß7Œû‚H&Ë)Ô|Ï)û¢oο…ó ?ó`uM ØrÎܾ02¦zš²³§Û¥wÈÉÛs‹Ž¸¾dyhÕr¸.�?F«ô1Q×%«/4Án?-WùÚÆ zœ�Û—; y‘ÄÇ~’ýï¯ò�7û^¯œ‡ª¾^UÚ?IÛl5 X`ät×N¥NÉ\jG0¶7vö\xÉuYó~Ræç¿kÿòû{èTùÞlYè[Ù¹žx¤K,²pM6¸øþ^&x‘Vo¶n9Ó·zåê,­¾ÙºGõ�E#}ù=moü,1bÐÁΧ<`Þß.‘å…¹¡ö©ú—`ÿ%"DÉ�3GMpu%ÑñõãÇÌï #Td©\™,œØ5ôoVT<sÍ Ðö–¿PwñÛmüà¶x\ G¢^ؾ•ú|®íƒÅ{Ä�ú57_}%(Ì•…0\?‚ðSÕâŸà¸:˜;{Ê"Ý ÒŸ—PݵÝù-Àª+nÜQ™§$Å]ú;œ¥¯PU ™ÚŸa[ ±3…R SØ6t,a_£ààÇ“ سâ½Ã®—ú]9¥d)²6•ÛïM_\áp§YVWþ…Ž6ݾU<¼L§,¥Md²À¡ïÏS¦ÑÓ±t™É�«|IÙ‹•ž.IxX«Ž®*øÉNG¸ÿzY?Ÿ³™çw0‰'r³Ð77 ŽÐ´'á^ ìC]+ßóC|Ó¥¤#{�–WJñÛt†¸6øP*¿=àui�áäQ$sjݵŠQ¹Vf�„R?ÏÌÙ³Iñ RÔPfÛ$á6§ˆ´gÓRî|O=íU¸Qiã~Ú¨«dr0ýîº:ÜÃhøÅÿ®†ÚŒ.»ÜÎß-ÒþÈ’ûpv=?²ÙÑúoA/“§ôÍí@KjzÆiÇE$rÕwáE¹haG±Ä¼ùûƒ9QÿÁü­|“ªšà8u¬ú�<Ó…O¯–;rÓQæñïßJÖ:Žô\äß‹gæ3ª¼Ó[$ó�[ò¨ãG}Âm{Å¥ÚÂU�Ö_Þ$U®“p?¨Ÿ$ßþ²ÀÏ=‡5†ÿNÔÊuÁ¿¶}D÷ˆU§ï‚“åž“ƒšTí¿A-&Mœ_�í@ 'È¿“!�Ov÷È­k –t$Æþy^ò:…ƒÑÁš�è€>$¶ˆ¾b=@Ž”U—?倿ÚjGö¸qc_<í9¢p ›:(8Þãj–Â2%Ãý+ò$7½~¡ÜcjmwÚ±«Ê™?Üo‰ 2¾áÞƒAz½Ò½ÎIPÄ“=²©m(ùÏ}{³e¢ó�9’‚TÒÕBíµ„Rž+Óµ’`4¼ç6Âò–ªmå.¢Tç5�‹ÃÇ� ý»åôŽëÿÒ’9–¨±¨û:pˆìpÅ U&DŠ|=’ßérÃðDú¬|¬O¶ œ«nÉÊåæ®Wô,RHf—[ÈÓc@ÕÑŽiñ[ª[ăFŒoˆ@ú§%Έ ´œj6äÅŽEdÓ„>ï€yb š= ‘eLñìzQ:�7<Ù?iöËÑ5\áE³¾Ðˆˆ«årWú¯škp¸ÿ]éj§‡â óþ¹oÑk™U47ýF„äÏ?öñl9wy}¿¶°·è êé³`Í Ú"nH’Fa1•¿xø­ô�ÈCn^Úh{{²ÊNw*öN+¯VcÎ[Ò­sÇ@çYážG@FøYÛUžÔHƯž—KÛ&h]�ë\”ÖO¥ípFDdÉ5÷+‹¼Xý©’uÒ*ªˆ àACuÊïOèÎ�€~·ò`É·zÄ�Õáð@`‘kœr¦ñtÆø¯e„NpΗ@ÿrz•F˜±¬TV==Šþí4]æ›Ç‚9‚÷?ß‹È<(‚Ó×y¾(<Ã¥(8ë§_ÖÍ™8¼j®Rš-¡Zérjêb§`#TÖþxïÀÿ#ä¶úšÓs¤Ç¥1çÆVÒ“»ãv�lÚ†#ð\ÄH™ÂªU„1ЏAþ�<«éMKiè’ÙT˜5�•œ�Sñ~  ×- Ï×F¤Eª­øsÉeªü»Hº]ØÝy=’¹úñ�U ŒH\=Í—÷kûïrÎCqÚ«¸:Jz½Ñ™²šãÔç€ýßb³öPɬxjf*9¾†WDh_züÈ_O¬‘ÃTÎ�vB©›ì�w¼ÍÖÅú²Þ{¨!‰›%;RdKÑ31‹íÔ]ä®[ýi©Y@³w$ýƒ4ÃãŽÈ×9\‘‘Ë 9õ†µæ ¶¸”ïÔ Œ>?¾"iTØ>.ØÕa^3dêéÿðYÛ±ª‡õRyU“×èõÑæfm)þ‰~£Æ .ëì긿³h$7<¿µ¦‹¨ß9±?¥¾¶)"†F% O±êàÕ¶^…N�·û;ç\­jñ÷uŽF‹<´i£ù øxѱ‘N™^Æþ¼{äâ3®>ðƹk$˜¸Ü‡]±6ü�R½ZÛúÞrÔ}MqR9 ^ÜŸÕ†‰”Ìz Q~Tc¶åÍë®þ7¥îòÜûq–Ó1×(¯ª¶Û„rÃA(Û}ÑÚ'áª77ú÷ }ÌÞ…¡Š�a?Îr·Èb]¨½bÞnkÕJJÌwˆ<­0Šæª“-"n£õ¨ã[;3ó.ÕÜ»ƒÖ€ÿxk²Ñ[NÆ�§›×pÃì…6›Æ‘¬ÓÌAG”—}÷õ!'N‡wµÌ.¬'ÙŒSÄO˜´²†¢J£˜ë˜‚AT¿«2à;ð}]*mw²�Þ%ºG´@ŒÈ}7+úõ”Ó.q) €“CsKšm ¼`ÿáfovxý| žƒ^ð&Îï[}]ÚóCO°ÿWälý}äÇ¡Üošsó|âÙ�3@>-gs70J\sôõyW¿î2E}VHY§˜Ò’Þ ´žò=›¿G¿ f½Ê϶ÎúJèŸ�ßmö<©öPí'…ëF+›Ó+üŽË½æôj;ã|‚™¬ÃÚÑ2z~§>ÿ‘Ó¿xÓâå¢2¼Iz’8qô&÷Ö(ú°ñVkÀ\û?]0¡Ü�]÷\ÁL’­1»·Y ´­xØùÏ£®Éñ�;‹Zy0Æ&:ÑãCÆP‰Ð2ÎÅ –©]û6^º¸Ã’ÅnÇùõ ÌÉë�5%ØO,T¥š=Ö: �Ò¸¹óDŠ>ª€Ä�«?%�:KÕ�>WÈ•(‰Wýæ_âÅÒ#WÜk4¢ë¯E·goÊŸw¢}”cP®15i^eúñy‹æ?%ÝkŠk4 惶ÒÖ¥(ïE.Ã\Ðãqܽ<;]r,¬Ï ;nd Ã�’p¨ü¬»ò#A~:nñžÈàGÅëGß´77=ä[@ÆØÒÓ‘}$ˆª¤FøÝ_þJP ^@—#øÂ’ìÚÆÍ¿‡ýgºÉãLNîCƒm$�CúXùØË_êõÈ.™:Íò�yò£¡BO.ó]ÅÚ6ëx’¼'T8Ø‚ƒ—…„‚èU9þêšÿïŒK(Öo(_ú ^nê�³jè"�yÖ]îÕeg�¹ª«Fþ™Žù‘)Ø´ïÎx‘uÀ1„fa‘æ=¾© EDõîeµÀìvî`ux­Û€lžIêÈ?bhí žxF=j|KR—ÕŸâV^�ˆ%7ïX²ŸÊ¡tM¼XsÓ�é£8Gu›8‚m܈î%Ê™Í|°2¶l?ÄÓü€˜(ûÄDô}UH”­NÓ[A›OúÆäú„ xóééÅå¯7ÙýÒÔôª¿UïF=jèd‚|K¤œõýSìqè°^i@žï#|qÐ-§Ô§·=Î(fÄÑÚlOÌÿ*"*Yéz(l¬ÿ` +ÇÆþS"OÖ�´è[®$Ç½ÏÆo6ðGö&RäT)r•9¥Ã¨I3ú'Æ—áÁôŠÙ«B[xüåRõ²�×1D~=qÍÛ]áäîׇò/Y)wî™øäÙ~Xز¬Úr›0¤4eßê;�NSS®…>ù �#Å m|1ááw� m<›ˆà‘�òÍüõ*ÿ]òvû8ªÃg¡¸ù—ñ.¾c½ÞUNGÙ½5ó7;=É-Âüû¿ý¿ZoþH7¥Ký’¬ÇÒÈ-žÉ«æF£Aá v\Çõ®xï§;!]52�å® §·É#HöÜoyCi°=Ø9Q÷«ŽaÂËçëXêï Þ4W›ü‰Ó6‡¡ÏmLµ.q3 ?Po¦:£Dæí¯¯:ÛãuìnäønöÛ6\Ke�7±¾[ ­+ÿÖ�®¹¡1¸ÈApˆ@>Ÿu$×6òÈëÌu:«ŠžAÇ-reë{:Q8Üc�Œ£ƒ•a‹o[:—(�gäöºŸÿEŸÜîO﬽dÓFe~È�Ý�¯™!`²"‡Â–ÊrŸ68‚Óμƒ+všðÚÐ2à”‹Û„4þW�iZÖ[«:¦.¿8MÁvZ—=DÎ<Z V\ þ*GîYÌV¥œv ÕYÐ1þ¿í§ðn‹Ð %Så“Y“^ ?�#ÏŽ—º÷#ßä†ÓÃ-¢Òrœœ¾Øœ3àßʵ‚§£#2ÏN�\GåãñSå[.éBN"²ÓÞìs×/¬ôÚäÉqöÓM;Ê^#è¶–g½a¹OHþQôq±ˆ�)ä@]GÍM*HÊTS3"§êø×s…³ýc¹ó!¿åTS¡Æ:]ÄQHØ"‡§ò[-×™(oþÖFÆÍ" mžt Ã+ܺp:¬PõFˆúÎE"¸•tØ"š60ˆ}CîÉaT—ÕN�µ%@Î9Èj϶ÓËk—èS¨â—=‡¬Î}mGÙKÇf$ø`l�®„žÔÍ—ñ¤týÔGé<žÂušSD$nOŽU½pF :/eÚ¾°B¤ãî?xZÙ#Ó©>iÕæª_ÄŽy¼ ý±xY£hC¼>NÕJk¯M/O]ã;Á®o—qX±±·Ži£‡(]Jh±ÝE$ôþ&QãT? ‘ C'´¾7Pg"ªÙà/{ŽÛ7gäМF{CB?H3쀤HÍêÐD&g8Ûñ†°M§/}¾µ»_—r½… W‹`›MÏ­ÑþY? �Eæ @&ùgDF•ôs%ëÈ•–œ]N-õäwBäÙ<é„�èpËѧ›Nÿ´Àðc¹´ñ¢ >§”ßfjø{vr¯éox‘ò˼&ÇýeUzŽˆ¹¸âóŒ$Ô�:[DªÑßí�/Ž fxôcÙ¾Ø1¤“´ Éq×1>/•LÜ*9]þcS_ÿß/zÏR1_Ñ}9­AÝ2úYBüÉÅN—_¨ããG<¤ƒ:#‡›L}6<à¾í§'ûM²3Þ¨Z1/3rT3rÚÉÀh¤§f+ÁH­©FÂYj®¡É¨¿Ïxóáv«£¿éåê6¾…#[2E¤W¹­%¯Xç\\v®íÓ–�‡ìá'Áý6ý³¬ aô¹^Àù?"¢évÇ)Æ0?þ°So7ís†‚�bdboJfðË þ ›}Ë/0¯úõåæß…°»ï�¶¯ûæsfع?: \—:«6%Z>¹ž7�è{Åoä42î®ûÇ™|0jãIJ}ë>Íax¸Qè¹Ï,* —Ä{œšz´ý„=%ÏC\;}§6åÉ×pþ²)BuDA?;#Æe1*AiÇ1Jlkä�*}6°EZH5Û8…ÚkÜ>½?ÚüËãÎ׈pü)–ˆ¼§�£Úû+wÜü0êÕ¾àZ%gA¸×Žâgh“àÛý¢ë!³ÊÁ}�ë–g2i²ïÛ¶ñtòzö]Rý€³›÷ò)4l�¬¿ÇÜë«cUÛ¦Ç4/<šz°OhY£SRçF®ý“÷n;kKü|>K] ëØF¨6Ÿîgšº Ö¤³ZÚ¬«Ú)qt~ÆwTÕ¼}+± žö Ž\=šèÑ|0=fi5ÎeÜÍ8;ÅúóQwöÚ¼G£F¤É ú¨#qÆíÛ…ÏI§;å4î‚}X²Î?xSE±r’Íýa»ÜOøé"$èÈß¡cp (_çkš@ýA±M„Ç~³È!Ü@éá�èwœÈmþU?Âé/wV’|y“#Aþ…Z•Ácˆn@�® ,ë×k…Ü#À!�¶ÄÚv’ËìÇdß„#¯r¸±•Þ4LkäkÓY·¢E¿Á�Bñq^ѤžMœz ~´4À¢ÿOÑ–5rÒ(rª®;·øÓC”ü"ŠÏ[°éº”±X4zdzŠ„÷€œ>Žê¦Ý¼k*µÂÓàix韶)kFŽ jËbi›®}<\K�P‘ˆ�æ€Ôˆ§ó87ìK g_ÍàRÕSaH&DOöJ�Ìa]x¬éùùõèâJ$Xæ3§�Ïîóþ³.°î¤W9_KøõˆÐÛŒ;䃃’–Ñ](~{Hjìë¤3çZtHT>[À$Ù5I·¤'¢®Kÿé%Í\¬%êR/®$ßä“u“7hܧPÅ�pŸÖgóG ñ\ ÿüñ/ÿ"»’´ˆ¾{>ÝS­’LšCŽgDè�¬eÝö"eËp©Ý7|ÑW’Ú$…a a�Ü¢“èêæðã×þ{ý§F¶m§SŠ£ˆL�²á»+§-××6ŽÅ…¼ÜHs íO°uìtWæ7½¾þ.õµ‹üùCö®3BÅ,@„ïiË×a,9˜~”Snì´Ë…€hù¡ã/a¾×¥;Û#»7Dl§‰~῾]ö1Œv éF¦bXÄr–Sä ù¤§7ó¬ðD`�·9ŽÃNm\VòS~½¶ÐSâ¡2�8ð«Î}‚¾Î€ˆ‹œõ”)>Ÿ´Ý+NóúÌwå~ýQÇB §­Ý‹Žg±Üb N+uu‚¾*ZfðÖ��úŽÖ—j[YϘŸûUû¿¾ê½óùÍ4±À˜ÑÎà-›5'$�)–“'§á¤në}qãÞ>-ÂÍ�š½ÓãàÊ,ËVpj½Õxè ß«Â0ü‘@b¹Ö<|'¯<+ r–0B6d™(¬bŠa7·î{ h‰8–ÜUvzÓ#ÏÜ ‘‘Prs7©ÒóhC§y÷j¹ %×Mø{ùsðV(ª�SD·@϶úW䀻ôŸ%ÉŒStíôV²P ùCú({û~^#}Œ kÏžëh–=‘–àåéúJ”u�Tr¿Êò¹~àô \n6ûxš²Kä¿ôuÄìr®mrE°¯ärÍÙ§ëÂ.îzuçã1t²çbý‚=à ò:"BÚÆ±ÍóvkÒãæÆ«>z^‘çe°FP¨žÑ!âÔðUíëÂ?ÑÎ"Ô$èr‚½•¡Úó>_|êü /¤‘fk·zÅm9'zHû=8wìàHÌoWIÊåTà8añ‘Nè×µ»§k²-h¶[ Dø”Lˆü½#ò•í8ÖƒR",FåÍŽÜ(všq’{Cd @+Æ“öõTõåN3ûô§ÈÒvš¢þžg;ýv¿è‹ˆsëƒZDçïb’ì5;�¾Ñ”S΀ü¯©n!þFÅA#óœ 9pºîpçè¾O`†Ub·Ÿñ§ÒnëŒDÀ�‹Ôþx‹ŒU¸gþ“»·#Eª^¾þÞ°îšA0;Ex5;ŒÈWÛðrë÷/méŽÈ¿ÐGV¯ã�¾øúgœ’,‰úrá°ÐN Ë#Ò”ÜÛ÷{8„3¨ä–ª`*ý �œŽê –Îõíçç¨o཮C+-_~c½ô§æž1ÿW;í¼×Åﮄ½ã¬†y4è€~~Bÿ_Ó›VÅ~;¾ëFcf9Fï&·ºl ¶›­wÓ#¾öAˆ¼_ìOß× òhv‰ÜÌ$ç%ÌX�ÑâTü�²®S¥^°~lCÉoL¹ÝÔ„£#E#–NdÊìa$'°VSø™9�åÙXÃE/ɦír]éä9hhÎî�è¡'±•~â�Ä�p�DˆKÖis^q§�¨8*ñU`‡ù{åUd‡žøzÎéñüæót´â,‘£}ä]ˆÂ“~„`ëžÀ×Át*~£ØæŸXôd…—¹*•܇Ó-žÇS».op‚%tÀ�N®è{òŸ�®CÞ¯ Úß¾ž<è£ü–~¥/«Kî‹Ã˪]‰pÃxèAIcÍcÎðR³7oi¼ÌL�uxO’Iì�éY)VŽû쳕¡éÚ ÏñÁ@vëæïÒÞÊó\¦‹¹ëx?ÀñòßbùÄá)ý˜8÷ ³ØÀÉÆq¿/'Gaañ-]f<Õ±‰Éë=�ÌÆïæ,TMtó�Ëý°ùçXB‚L&<ÂPø€‰±L¶$Z†âpFœ‡Žnëv™x»Wl°‘Þง‚'m{è ù¸öCÄ»À<ß–¼ÐTç®üùaRB^�8½»”*=ùG_5Ñ·˜?â~ó7+ö/ùá[•¼`Ò9Gz»ÈcÞDélª~Âý¾ ¹KÜá%ï�–y¦ŽþqM<îÂôÍ”ìîùÊ’íÕßJ..:¢ÎHûškEBý˜ä Qê@Ò¤gí(Yfèqqj‡âøj�[&#¢£õa÷²t¿†~òW�œ¹5îÓ±”†˜5b×Eñað^Ü £ø5 äÆôwçô�Óg,Ü@9.Ìt¯esºKW^?øµ«#.wÖ‹^Ž©é‘ã•bÄ}y½Tæ§ÒÚÏX§³p-Óœ+S#›Ð„qëB;óRt–k+î‚I÷€´—Òåæ^×~QÂ/éòx ud˜Šûg Ye?P¢.cÚÆ´ôðrøqpÏ&HÕËν,³({þ9”™L?Ц¯‹V‡·9Õa÷C0PnHÅnÆ·¤ÝZ¹10µŠª+þ±]�óµÞóoäD÷X–S€IsWÑ‚¬.çëÞBi‚d/$ïxR=�ÄÂÃæôâ çœ ÿÄï¿Ù# ò¢õ5‡ÊkA¤\95§ÚÚKè{„É6é'K²cÃqÝðø‰ˆ·ß/¿1è?ힸf â[¼fFÄÿ ø¸H¿^?ì$;o*pµ^å‰ß>Öí:ú´\dsŒÄY#§ä>ÙO§nJGJì’%›É�-ÇœFºÑ¨‘é´¾$¾ÜUŸèm¹Äö)\Õ{ ÷Ñ«–#j°Sç-™›á�'„Œ'â«É)"‚ú§¢±Ý(¹_)²g:ý| ½°"Òn-+êáÉ}ãô¥Â9'ÉE™¾|ÚSvõkÕKì$c¡ýôÖmžï:ÀÂ'vŒã� h¸)2-a9Ý{­Éy@qÕïæ ˆ,güD¾.8¶y\Ý)íB5ÕêÀ‘ KòÐÈ"Ø»�ʂδ‹{Bš¯Èù7LIO€ä|ÕîÞ@Çà7dZJÉ9³EâJ¶áûøVå÷eˆjˆ¾S8÷FôTñ[Ý$Ý“Åo§ønßöÓç¿ó@."lçã.‹|îàUjÎB}ÕÑ^ÕƯñ4ì}¬sRàÉ-aÏ–tjºáº¢Áˆh{ D­:g½Ü-žø�ñ*n¢9Ûd[vpò ;€}s‰c´ÈþaæàÊO¢¹·—¡¡éÜèryEŽÂY>ÞÇëå”�û‘©ä„Ë4àMöïÐ_%‚ßdÎÔu"‚Ù‘zÌàÜQl<“�¶ >;Ý5vl>a­¸�fº»ÿÅŽi¿Ÿðs·a4w¸v´ ‹@YqêêŠSWWDÔíðD—i{¿é…1ûfxLPysÔ·‡ržÄ»¿än?"Égæ0RZ›Ý2 ÂtÁÆàuZ4üÉÐÖ7‘N–+v^ÕjÝLœªkvD#ˆY#FyK­úxKÁ¾á¡ïy‰&ûÚæ9Èm�fc{ƒ?ø¾HÄ1ûÂ�Oy%=åè¾ßÎFçt*ï #ìð–Sv7“>§ÝvBNEK¹Œuÿ8§Z¹*’/èoEäÖmˆzc—}ØÐ­ÛíH}=hd:AñÞàŸ¬H�>ù)ojÜé¾?·êϳ¶}¿ÌJé›?†6+A7Og]ÞÒõBÔÛŽ¸"‡ïÙrã ô¡®�Mú¥Ès»áX �\±|:ß+øï”-÷ê&§U#·ÿ@$á§½Y {ov–¢ø…:%¿ÍP·Ü–Ëï•_BQo¤u±ÉÖé¤|mË ?þ¦Sqö€ØÑuû1AaÎÅñÓ (Ž« Evý7`ÐuÌ–¬qû\>)ðSÒjn"¹%KS×n‹*(}xMóBEb/A«DØæˆX¸=�Ä~[_T>}yÌ¢Ü$»îˆÓÑøì:þ„‡ý��(FDjïGTæÄ4ųpŒ-`vò½KûÊ«Ÿ"v&Òv)0Ùj`~}4]g£yÜÙ‰M�Î\ipx?+Gÿ2Ÿ~®µý=\6&ýu\ª5õ²+NÛQ}�/í< uõ‘…ï>eD½¥|moAU�bŽüæ# QzìD[òÑ\ìTÁ$øÀ‰†l÷Þäß~`74¦–k+^žjÒ0KŒþ2¹80)¶UJŒÙZ”XÂPò�= }rú«Èv¬ÄÛ‡å·Ô¾{å�Š(÷‹|Jç&§JRÿ“<¢Œç!:œ©N£ÇÅéðšË’še—Ñ··<*]5òqdñ¼ÓêèG#)¬ä`Ö{&ÿùÍ};"�ù4{Éñ2Èx>¯é<ž�5|ë̯ñ�·î-X=Ue‹äŸÿçÿ[»AˆÓ~ðvs|mt‹Ã÷Q©Ov©tCêýŸÚø §Y~jD’¼é“ýaýS?ý\×?b÷‘ø†— ÿ9êÄŒ8.èÍU$ËÏŒP�f|Þà�K“ä7ÏäLC.œ’œ¢TE.)îŸbºb {@Ÿ3²eXn£ùàœO"% ~÷y •‘ÿ®ÕÞÉõã�RCq’¢4übÆNÓ\ç[•…�d"•&åWþt(ÛßÇ}Gqø8/î¶w½ó‹(ùJJ®`¯e“çö{ßÚ©Ûx&`9›öG+Œs¢ã3‘K¶8eÉxÊýõ‚Üv·å1¸Ùä&å’ãŽÂÜ"rpøèA£¨ÈÄá Ekôã£v=°®?Xµn|ÓG‡òúÒ‡c�0—>á‘Ò²¤HãÏÆ–SφÖó|úNú'Ín²Ÿö-޶;m}@hDÉa2©Ü[².O‡—êKõ ±­þÔ]êÚŸ=<á£tz™FˆnvÄrfZR«>‘kk6¹HèvFÃa,s©øD#ÏI?©<ß‘ûfÀ)ºûqjÞé²Ìv!Ž9é�£~2ØvÚI ˆT”UO«×S··¯í©ä¥Ÿø¥SÜ=ä¾Ü"ì|—¥��QòThc§×Žˆ�_§±ÅåYß¾LšDKæ%Ô­Os}d.ÅÜa”Nç,èò3Io‹EºXn‰ÌÍœ$ök%¿hgðÞpªì¿í0½\©q4¢ŽÇ–£o¦™{t{ß*¾wø¯gË…>±ƒòd¾Í÷ðõ¥bQ1s´ÏjÕny?õA±Àò’Ó:-ã¸ÅëØÇy}�žøl;ò¸§f•ÉØgî³k–Â|Œæ›n8ýmÕ7>Vôoêæ¶u%_úOý�‹,Î÷ª}].ª_n×ñ?áTíÙñ#wŒ™¸‰Øj|‚°;~T7³­Úf·Š½ôp=øÓv ‘¤¤)3Õþâ&Ü6Ó™€·YØëßdÿ\,Ç%�9ß”÷nSœ�°ñ·éÝ«Òq¹ôf~ζorÈ;:– ßR¼¾©/`Ž=®²ÒRpÒêqz ñÀIçÛÂhè!fœöÍkÓÙ¤)LÆDa£‘›ŠÔÅ‘©£¥:m圣ґ¶%†�£X™ÂÄ–ßþÓÿ è8$šqt£×(ÒÜçÚóííÕä©ÞÂu?B;i¬äÝ0>q}ç!‰SÜö{_lz¥–Æ$ÒSunü‰WbΓÈ’qÁ§ÇÙU ðô±éšÅ–ÙŽÉÓX¢â¡c6õ84�b…ïÙÁÈm¬Ý#~ôÕ{×­ ÏoG²™…k‚S®÷曊WÆ’ø‚®íš8]‚Ra‹’œÉ²]ù€}ãž<䚃â¸-(éL÷1ìðÎQ·¥ŸÕý& Þ5`Os¿DœÎìÊ¿ôj“_æn]L:ä¸#¡¥kÎŒŽŠG7mþÙgq�LþÅ×àðQt¦¯Á‡ ßAÆÿÕ˦ݪŠ�Ї¸¹1™xÊ“\ÿ<�ýíÒµ�B[×þ@ö¼¸~_bÚ5n­b¬ã'Ðî -‚¥gE:ß �Ê-o#dy ¾K†ø¥™ ®+ ]ìôõ¸”Û×ËFG”}´ö¹GÏ1ÈË¿8 ®~ŠL€—Îv“åžÛi‡øP½Cëo2 'TE`š¨J÷ð#˜_ô�ç@}#—’ÅÁ/Ÿ½9w¸†‘a• Þ}niêáä­Ê½çBß×wK¶8Å-�ê7UÂ×o õ­Øwðâ¿r�û¿ýÒÇú7µïA—õÄ¿Øj\ÇÞæß!N�Ûu�üS�N Ä ›g¯û(K•”&í[M !ª`D†E.ŽŸã¤pU" ³¶"ë"ŠÒÝ·Ü”û×ÓH>ù)Q¥�WNž‡." ×zÜ¥¢¥O6ö\dŽ–{„åæò¢Ó{½…y°‰¾m‡*{onk·ß¿~D j­çè&Àµ�à ÖgÑ'=ð1~*Þ+r ðá—˜ËJè†T™´G(mðF•CwlÒÑ�Gžp*ëfP=–ê¸qiå‡?”öb‘uvê¶h¤)!â†GËu÷c³.ïô¸À±±eSÆCq´×~ûEMš�âÊ% ¡Ÿ6~ÈK>…›T.ØrÂÍt@ ½ès7îåÆ/½ÈCÇ»ë‹Fè Ÿ§4=¥VH#ÏJes,Á2`ôÇ£SAŽWéÿŒ·åVÜõ‘À&ãšÇk×,Â"EdÅB­¦9°6Þáö � /‰Üw ýGóÆ² bò‚Hã[Lª3¬z}?àô±s YØ�Ö-@‘q¼�¯Qì’?½:lŠºNh›äÊ›4ö‚ñ¨X– ·±2^yíýâ¾=ñµœ>8­ÐˆT\HßHùmž5r|š®]°3|L\‡£ˆ\«�þ= Ù"¡÷H{Ö7 ¸¨#ZžE’‡ÁêDì´·gª§Ž{¿m?e“ˆ$¯B:Età ýîü¢i¢‡;»9›A¿IõÆÊÒÂl†pŒƒ�¿ŠOeÁ»¾ÛÇaðÌîZ"Ù�ûé6ïs?ž`×ÀÀRÜAÅe}Q~¸Êѧk`tÈVÍ¡µ g ƒßÅŠ"I”d&ŸWæðæÆnþ0‹œw¡tÒ§ û.)2²O÷ª%¶œjJç3ú•·Ær½Ú)íâuÛ@qš*ñkäAÈÃ9œÄé=ÂòñúâíßfW8u»,ÑCª'�ý>ȳ"äq8×ñû–GjÌøÜRE³­§&¥óP$æ7qÉyh©ôLÄ(*ƒr6ÎðÛ¦-‡é×·zLóÞÁÂq��¤¹LÈ�~[\îOâ.µ‚ý·HdÐ÷oȼÞ5”‹ÅEÁ“Ù#)ŠGÂæ$ä@"%}äbŽô«>QŽª¿áú ÇN™­Uâ[hF6áÍ›z„µä ×ìxWÈݹ›G„¼N\_Û¬Ë ØÃ .Ng•A(0=SbQm£fúK¯#'gˆðýêàóCúr¶œØÚrcø¢ æçò íOkÐ;œôJÙNÄNóÚ÷Fè‹ûᕽáÛIZ5É­ðf¥‰ù…¿ôEFúßFÍ…÷q1ý«×g˜L/Šï ¿DÒÚ)Ɔ@å¨Åù¸âœÙíÃ"E-‡*ÁîüFäà~Éu2>£*›]‡í«ê†jÄiSå…_èïÇûâ6Ü«lÜ ÿg¡{¬pnЧ;·ÊËäÃùùgÈy¶w†ÛÉ»çæÅrFs£JÉ•j›w¼"§ïˆùƒž˜�Ûo<ßC޾þ;AÏmþP~èá§±¤Ö}‡Uõ¤E¤ÂkÊŽyÙ¡4Ç99âþ}Z²u·§&ìö;…s>‡¦µ‹¯z+Ã*7<ÍÊ8%ö!ÒG”=ÈN…›nWß·‘ç¢N—n` ¯ÄëS:ì7>)•dýαþa‰´«¹ª qÙQ�Ñ�Œ6ÅDpew1~ž_�ŸW:üJ�§ K�GÍß!¾”*'Z$àn#’‚¡å„£6*õ\Û×ú4§�Ú×þ*]ˆâZ=Y~v€ /;žf¦CIŠü¾Óÿ‚Â6ÑJ8SbÄ\‘¢Õ rÓA2é³²ÙÍÉ+ÈžA÷ #\‡"·òÞÈ‘¸�#™írJ„ac09iïù1<šÇfî;ã0ØGøNu†ô¨:uð³öâ~ 96¯so ƒ-}SÀÝ÷$­tp�ÃÝDëƒÍMæ©Õx‡´È}™mŽýK’ }PäM².¥�(éÉvØÇ<Ø­êÉ‘½îÜB|×ü ßÑŒœ‰½2?$%›.ÈŠ“’äßôµÝ �ò°2m:~C¦Öáô½~[ÿ�Eÿ5>H§T\˜äÛÌ›‘Ä·µú+RdÜÙÞ,þDA�~ñ×Ë*cÊl�§ØËå4ÿöÉAÛ ¢¹]Û÷²1=§§ÚÜÜMw 5ö׃Š2�âÛz[ƒûü Ë†,Y±¦ÅcY¯r__©ÊèõªyùúMbSÞo`êh¶oòwƉ9 ?i{Е™¸0¥ÌÇ•à,ÖËÑ&á»ó[£Û·GEú:8çk£E©Å=‚í�5UCø1T$¸ØCNÁå�‹Nír¯R±É~zY?`³2[Íå× ˜bŸíV SÞ¥•¬[ì„�nJqãÉ4“‡^jJm/ÆÀ¥�åáý4ò1O�B ší-P¥‹Q÷Rvo¥sýyá®=.ScHOoU‚•Òã…¢«�nËvŽ¢¯#éw½ê¿sãët£æ� ðö°ÚÊ:Ÿ~9Yæ^ª¦(üOž*JR<ØŒk¯P]¥‡µ¶ÔˆÓ:Rðåd, Ôd£\•:ö`+Òdšî²}ª¼ÏpÔûñ­F¡FÑslu”Μ8­PT¿›ôÂcžÙLß½ÿËÒZ«ËÅå‰qÆ#¬ÛÝ!/®ÞêþB`²S'G^Ù£Ö¹˜öH?˜={‚UrªÙé�ȱGçø2ýú¦�"†÷ µO3h�,Ûû¸Ü‚T¬÷Ÿû†ËïZ×+V{)1t†1è²ð½*×A#ˆ†õ-V±'ëŸÛ«ç?«ÐlãxÅd¾[¤Ýãi¨D5µ�m§…*ÍÔÕ|Ðùª¹¼rŽ»§å„È ;MR ¨„¹%Ê*ˆ²»¼ýZ=­xÏ©å<,¯b´!ÆÍ)WDT�SD€Iä§x‰Á¿k¤¿þS«ï¹·ñXäª!ˆS(�Œ·¥hÁ},ˆ´YoâòO½¿ç0d‡ªinÿjE-^ …ƒ¯¸ö•9kÎ6Z¯û'[rœÆIwg!ŠUqríðØ?®ˆ{¹×zÁñ�>߸Ér4ñ-;<¨‘§ý”µm^RÖ "&y˷ͳŒÙñ]ÃÒ﯋ŠÇѸŽðoà@ã‰Y¥ä> ©¬¿ä‰X[G@8GEw7‹¼mš‘³Tú9Kk„6žX]ôn~·G¿�#¤Jàr·È©±á}c�ú�ààø\žq:ýp£Ý¹¾Üñ³ˆ´ê™ "€/¯Õ,ì¤ôÇòô„ÇËêâzHº‘l©»j®-0¢‘oÛ·±O‡ü< wªE%iŽ¿¯ëŒœj·ó®WÖ‹Ê?}X;µÜ9d‘üÈIµ÷ÿH®Ë0 \OªÇ.)ù¤o‰Šœ%Ð+Ûé‡;‹¸¾ORá 5r.èÇ4�唿-Äd3׳êïB#˹41+V*³R_­R;´â49Y¼ù²Ù§pFuÏœŠ)APŽýì ç] Ðó·t]NJ·1GØcÜ=¶ÝF&óm‘Òü:ÓÃöŠ�L™¨Y%4ð[,ò–(ØÁšCÔ')« ¹ð"’¶ó&¿êÌ_„߆°Ž:s{ÄQg< ìÐ8�Eó›Me^•¢˜‹Ñ‘ÜÌ�Md¹%·xè5ÐFsr'—/;¤rŠíˆ›7õªÝ¬K ŽS�x½˜}(»z×rá-–«ð„ßVªi³T–H%HØc§)e`Ö ðÑK‚œ«£¬e�ÈÜã&­³Sn¹aT_É£[s-@€ãÓà µ#M“ѧú?™|[±U‡¹{å!2xm¶na×Gï¸|Ý[�ÓkùÐúgvöeˆ—‹¶Èd8aÞ-‡!Rޱ ü÷Q@ç2¼¢o›A}‘-¨ø ©„ùȸUGŠÏ=bjº-# ƒÉÑ-u·È�¼¹�-w9Ý>ê'Œ–CüÁ}ã4kÎáˆLˆ%Gè½6»œbþÍŸê;ãæ¨x.¢vq�…ìöbû|ƒ<ýû%nŠ½Ì¦³`¹QcI3"Ϧ“bú:™|#)ëK3’n*þŽh.÷™§¸ñ¹½Àb›Z/r¬£„“»È7×É^DT:\±Ss‚Ý–’K¸Ž=ö}êæãˆ¥K w“ñÏ8é Ÿˆ¨U7ˆ©·æ×¨¯ª/_>”Öîlë,ç§]°N»~$ûŸõ3†w‚ü4ûëC¹·ß‹F.ÓZt:¦~ý1+½49[ûšEÌ.ýÚïÈñÿnYI_�çËÌEÝ·�ˆ²6Áòƒlù¡/f|ño¥õOð׿c|¼Äûºï×îK¤åìaÙ"ì7 ÓÔA[”?¶¯ësû=âµ=WßÙEF2S l¯Ê–�øµúìtrå«Þ YVªõÝZ:<ˆr¤Ê–¨ßøË |G€2J©Œ7%�žÂã+Œ§¢yÃÑ×óݯklç‹yDéÞ¡ð÷Á~\Gm2Ô²YB¾n#ÀKOÑ�)JÌîe\Ë5¡o•®G!ó(‡­ÝF\¯.¬”nÞurNpø€f\p3Ú»y/SêÚæÍŠ$¬¨I1Ð~#1ŒÇ+;ß¶À–Ц¾î¡÷½Œ'¨�Î|Ø™û,Ëß‘ÿ£ÂÉ€³ÓLAcѦqÚVô–ôëúþèÉ-ù¦ý´) s™x-ûL–�DÓÛcNå4xéÛ2N_ƒA:î!ÓVÂ÷™Çåyš“Œsàü¹oê>¡žÆ8âç~û #<ÓÜÈwUÆ£í,ÚNï35ÜèøŸÜí$®‰].}H&9¼Òããc@ü ¦é�¾ê«C&†[rsŽƒe2Æ”h ѳ¢¿è?våø“ú…©•¡Ø áÔåÞ|ÀZõ»|ü¬pï‡t*%u[6Žœ Iêåiévs@lÎ:ã|Ãè�¤öÛÁ^5&óûj'ámHȯ�è >~—²ÿâÚˆÓ_”¾4û0•¾QWõð8âxÛÍÁ� Åú• Ýo0U= aéÙ.Õ8\læÈI¡�Žê2Îv• vc�SÐ÷½š¦‰O{aεp|I²°nBÒ^F}P—ä:Á¿¾ÝV“DûI½žÜgb9£�%Ÿ`XÀíý¿ü—öŽ¥>�¤3N×ýïQÇoº³Ù²[ÁHüTA¼ÿÒú£ÇNô”Ëíûè&eû}G¤ÌE#«†å¥�è~Ÿº•,ï gøCqXgD ñ�‹¨à-Yƒ_„ÛÌ 8-Xþ-¦:Ôò)Ôl@• 7‚ÔÓvý¢Mf=®kR¾µC®«Õ@̇ãØð×úØ@™Áü§!Œ‹G;%RÇÁˆ”“ó 8+~Ë›öº2*#ÖGDAéŒîªIÞÖÛ¤lì�s›eC‰ ÊÜ#Á 1ž¤ZÄ×ð‡Ò�ÿmp¿…ÖíñM˜?§v�)öúUg™q ït¢Y8 ÒfMÏ8gÍV(«æ$àS<å–°t§Ã˾øý¯ÄøKîöü"ó… ø¯W­ø~¡nñ–Îx³Þtr·¶|ëq<ãôëâóY“d­³&Î8ÅòÇ/ Ÿ’iRbäð’Ó•¼SV5ZÄEnˆÈÄéÙâý¬'À¹k.CÓb�¹Ø#å!Ý|Ó]ù'ämº¤Ér‘²[½ ‘Mó�¾SJnÉ!-÷·½>!t²SžÖù}gP~Åiºx2¸Ëë>u) %½š.ZÕïcA’£±g§Öª~ã!é¨òë]/Û©¾)å+_pª±Ïiéq½Ù)Ò–dÉ9E´=¹µÓ~•?Q~[YŸ¨û§º^4öSÉ·�Í})Ñx´€Ÿ—HÈá¢ãYoˆÖ¾“M‡ß ³ï~³(Ò­æj²[h³�ʺ]:/ª¦e$‹·P­~Dþ‚zƒÅ´XÞ¡0�Çv¦¨•MOnßç‚bzx‹ÌÛj\4’³$u) øÇlà 8œ’¾ ½¦_ìÇæ¨ÿW›Î3Q£|3_í^‰@AÎ#Ûít^KþƒÈr‘4ÅiŸf_Á�¯—ªý’4j)öжp+râìèy²¬IƒßB5i׃9v9Á÷Õwæ0µœƒ#Þ0Yp:óp *-l¬ùIx¹â4àÉrG[¨äqE$â"šp:á “ÅG`Uùç’û“›±y2®Èa7 )€4e$Uw•pÝ")êø,š´x<ú;å^³œ¶‚S O¯Š÷|;šGs·òZgwº¬šEBÒ–ê3‘ã)wßñ°`t¥áö{Vs�V¿Ùa÷ñÕ=N¾c*9š¶¯àPģȿw%‹Óˆ,áU’è´:Æ·\ —Æ{ÛÓ.FšWÙÔ;É tÅ—YõøÀ1úÈüÿ|2˜?‘rô·W2…ÕŠ¶»¬íXØé »fêÛ"Á^€Ç±”•§ß‰‡:.yÉ8Ûq¿®îÎky¼÷OxãåvaÈq�R{£Ôø@Ò¼òÊ;r¿¢#K{9iýÛ¬½õ6�L^<ílòmg𹞶ܟ'_FDò­wK¢XÛŇ~\�p�>zãmÒIy/oætŒÕ�9{c`� ëmÀ Æðtø_tUÇ[J<É¡ŸAúœü±mÈ`3d×·¢«7wh¢|µ×q êÌ‘AgËEWìè:ÄÙ¸Á>�1°÷k\ªÿ^‰<è‹‚ßVÿSÂù%ÒyAÊoKµ~Åãl§#²ZS°­¸è?¿1Ô“‘7D&¿cýZrtâþ =h9gäŠå³~®W)|lÃ4v©ûgÞÏîOˆ¹#3~V³M— ð»ÕS†�¡Ô$ÂÛ4º­Š×ËØßÌÇ)Üo¨?lû_<±ç>uúD·e°ÙiúCÌ “"ÿwÓ?"9‰ �¡o7½dv²|†|~ŒšÍoºä·i‹Ž1Ô<;;zØõWD¶~Œ>rOž¿ÎYI¦�ùQÃïšb(M±vâ~ûD‹×B  ´Ã³?®ŸÛœéfz¬Ñ»V<Ðc£6˜âŠÂ†^àk}bP3N ó$=ÜK)—Œ§³Ò³Îè?ðW‡­ØÕy$†‰Ê’Cx¦l´üéM®}Sã(gRGë7ƒŸ…6zùU®Ñ¿Ç§Gëê±»f²ñ­"?z,µ¯î�x©ÐMèÐK$W·|²ÃÎqúFážÿ{T„‚�©×�.ÜaL:ÀKZ¼Š¬P«/Žè“ñö0èQÛg§6+Û‚£âØ#/"¨AË/ $è‚�ªJ‚Ývú5Â;F*}e‡¤›º\-ê+?€<ÉÜ¢b›ˆI=<Àµ½kMuªsß®ÍS� múôK`í‹ÓCù)·ôêbÆ9 ¿Äj&>,Í%‚iú±[â>ÓD>, �Ó¯™esÕ0 qß]µÜ¬-¦ß‰Z9m5 U]f¿è�©Š-J¸vhyTâ4dXI¾z"äßõ·öÁøæ�ÐãÞ¯Gà«·ªªMiòLO2µ\ß険 &vèçU•w/¸qØÜÏâ»Ôûœ™ÌLÄÞ±�š©úŽõça‰ûîáI4• öøåAPäí  ¸Õ³‡ŒÿýÒ¨Tz ÿNümVýRG'IßÝÿÄ¥3¢â›;�£>çQgìEEIÛ.,u¨ÓÑAïU%`Þ÷NptãO"ý‹„ºÂðy$…þ­XžÂ[Rx�ý„¶£�ý1Sü/·ò¸1ùñ[ÿä"þÊ=Ã#nÖÿv;þhaíWxªøµß ÂƒüW\$ôA}•&®÷´n•\Ñæi-͸£Þ=&yüBV"PÎò·{_Zñ“Ç2©Ã‘Di1[Rñ.‘e€mþ¡ÿÞ q{yÎÄñƒ�HL\J!Ÿ«Ô¶æ2˜©jë™Ä»1øíÝúדC©Jf„&f°‡7gå»ÒP*/™1ô‚k¶«»Î»[¶/GIþuÄ~ýÏŽîZ#Ι�~õsÈïÿø‡ÔÍ&¢²"ìQ¦{Ú3*Ù;àI°<Œ A<¹Ü" /i/øþi°mÓ ¹ÚæWEãôIA*ŽJ†o§cŽű<ÚRÃÛÏýs}ÿ…q(îòKO™¥)ÒÐîßðèæÇå_sÛ÷v½ätÂõÕqNÞþ•:#³'{Qwc;Ï{ò•}¯ûœÈòÆ­‘IÃl§³Þ"ŒU #GÙY¶�ï®>¼GÒѶÃùz¤¹+ú)cÚÁ~›ÿMÛÒ¹Üôôöü¬ýmAŽv%Çãø©íìÕ¸x"£ì�”‹ÔáÙ³îí Ó£ n“O&DŽ‘F.ÊJêfcl;…ï‘`'Ëq¥ÿ†ÍÜ ‹¯'|šãq[qJñ×£a¿Î2¡Š�Òµà·jè×: ¢ÒøÈØô†È׊AÚÙ'dä~n©ã8Þ>Ñ2¿³#¤…@ÄdËé²_îר®PÀÿ&§—è[EUg"–Ïœ BœúŠG/2"–a6;zQ+ßm«ñ…>AÖH^jõÃl‘„–|H\ßtB‡�kû Æ#jÓ©®ÆþI/µô]aR‡¡ßÁ€�éçr´ÈÆÑ`¹¼<Þ’úí̯ GÍé¹�Áç(¥†Rb�†â�ƒdÉÉñöÛé�‰·OEëü²×b‹üº"Òó|žIçáÔK}tì•pªÛ³}®{$ÓÖ§‘~@˜½:uƒ(…ƒ”�-j`ífc°ˆµEé¶�>¼}"³Ù~¢CKk<}´—­�¿Õ_u>¶1ÈrgN?õêšèn9�†S�<Ü ¯ƒÎ‡Fj3N#¥à m(ì‡ý¸^”^#Çq0žÐ¯·'¹�Ao¹[–ö+85ž ôXíTç‹ Éˆëë'ìÌ9uc‘ñ¦GìÈ­-ÿTîÜ"Û±,µˆOo¯¾Ê4*ólú-Cs›ÉììÊ.ß_÷Iè"ËÊëZìu!®7/ý^Uîý#2b�ýçIé{Fî+ìµâ`⮟q¼ôÊšËønžLðÉT.„ªúmX뾿ê<­iŒõ5(½rCгôõƒG¹\�Í ”’/no}j�ÚËF ^År¾iÛ‘i3øÐän1Ü�{ù 3wǼ6~@¨œþk)ÂqûîWg7û-"”��òa¼vjçi‘J÷DŸíÚ‚;#=Óϱí~}ö`ôPúŒ–K4�¾èáèAíàf5cþñÕ^!•¿-Çì~gÔ‡t#úG€‘ò%iªÖ­h ³í”N…wÆñÐu¹ÜÑ'^þ 1è‘ü÷yÓÏ$ô)½ˆŽÔf3ÊÐçÞü¬ þ&;/¯6Ϙ½²Þs°Üœ¿"æ'èäýÕÝžq•é=‚öeÆzj•©TßXª£ZÑxÀ)Åeˆ¼âDr~b¨ümûf-9œ½a¥æû„ä˜óÀŒ££© †]S¹üDnÂ×!ƒd~×ß[Û™‚àí¹{™£›ë�E7Iïõ'¸�7è³ÓçRe‡ "~È9 Q¨œ‚k‘­ÇñÌ7àsr¯„J&SÐãv:üiT>{Çé¸o-çÒ<œ’ºv-ÏÑ$ò®wå=[#Uw™—_8=úç‰(¦šàÒ×.ÿ¨oÛ$õÐdÅe¼*}׳³#ÅžÖr½ÃN�´;´úÇ]×ÿ¿¦~ìûŒƒp§’Ó×yžc¨§›öz‘¶œŒh7*n öoFœæ;aB|ƒŽoYT§!~•.Û¼}�ãó‡ž1q†}¿ÎM¼ç^l•…£ è4i-{Ç_¿J�¬’’Æ?9°Â5¹n~§ÛסüÔ!0Qê÷Ëýëù„¡9 hihÖÅàgœM9¸Eηž¶žyqô�¦¥}hÂOëÅ~£2ðåR¼ŸçÇÍ%OAñ«Š¡4F©Ê»ƒ3û>J[Ç ‰æâ¿»ÊRàz¦ÈÄçû›ÂâÚþ¨pа ½ú(•:¯ä}‹òÀilNƃ]7¯Â¢ÞÑ1ü˜¼.Z%šûqû¹v÷jv|Üçžò¤Îêù÷rL‘g“('¨T™�œ4j~;îôòÝð‰ƒ«æ`Ô&x4%:7Ö¢n©šKé©�f�”×$™˜Iþ}´•µ«ŽŸ““HN=1T¥DsèûÚ‘÷Í„·{$áGùOR¯tp²e´ 6¤^ÖÏ:Ïßøs¸S¦@�\Ò¹•0þ¢7<12;üÆ t?/ÇÜ^;ÖJÇ-bëÃ,¡îI0 µg üïfÙcñÂgrºp¼ñx”dc†oä̬9¤i[¿×¾ÊÛ|~ìäÉó 8&ckßO:x]_òÏJ[Ûp–ÕñŸÔï U[<ýzÝqŒCI»%Uãgš£Íkto•Z«s´/Á†³Tøìø‡ƒñÖë…ˆªÿhz5ÈpÕvüû¿þ?;§óš"==p½~îŸÃÛ9N¯ìd‰ÝÊëI öQŸDGÆ"p žX”cÕ*¼�†£ßR¢'J‹-7MájV)Ã'rÃl§šö`ŽJ«œ4×Ùžîëúp�ã1A™,'è:Bbì´¦úäY~¥\I©æÇ“aÑg}–{h½\šþ½")åôø´ñ¦2¨1âû¬ãSîºB–zšU8½§Êúï¨÷GèeEÎÅa UÏ’€[; niŸ¨7"‚ §î " /‘r~‡ÒÔÓüÎx”Éx$#³Fjì9é¶ë÷K4Ky“×r ýÖœòj‘+7xäh ·oï†âñ6cdÓ˜ çù�� ¹cl~2Ò¹à6Ûýwëi#ùé®ýÜNÚ�=ªl¿£²vxÏ×Ë›‚ì…�pÊ6k²„ÿ^ýŠœg—¥%L€II¯8ƒàé½B±r«‚we:dÇ�s5í93‘&%ËR–Ÿ‚¦ÑWO³åÛA˜EÒ âŒR.+ë€HΕ,’uì‘Ô2Qð¶-Âëó–æÊµýÍ‚„ÃB~Ãx¸iäÈzy! cUöähµ)àºÜ ùŠ­’›Ìèaöå°U?—ˆ†µ2ˆ>5„ô )·þ)6}‹ÌÛ>Ï÷ŠwÆ nŠc3rIGWpd¿Ìq ›Ã¢,®uÖ‘e£FZ·Kè¯?ŸxDÔIEUéx‘Ÿ{n\ßM°»¼ç�a&jdÊ^`:Uy…½ß"¤µÛXßNÉû[$”ÚŸaŒ‘©Ã zyYíÔwÇj¹3�çŠP�a¬ãöò.i´™DI¯ó±ËÃZ#m7¾[œúm�þ+ë� Ô߈S "nÇµŽ«èüòÒÃq¿®M.ÇžÔ¹¼`Á–C�—«ÚÅé¤ö_9yÄ>ÌQÕ½_´þ–€em§O°WF¤æºvùßrêÞOq1-ýȰÏÊʇCÕ™ äô�g3ª'€)2€H¹Ü°/îu‚œ&>$\ä,¼#bnâÃΧN/C× ÒCÙvŠF QH9`Q³GÊ2•”¡þÔXb‹âb^E Ñ»†1õmt8¯ª‡?^”¦»é5,d9�Ñ1h*Þu±q7ßýò¸(ûY1WìÆrRáTÇ~Ã$Üú”<À'•íò¾õ„ÎítæM®{ ‘ °Ð‰2-(‰9–öCf,âÕr€­4AnÑê·»ÎÓéöÛi¸«ÃÇHŸñÙŠE0Ú)§Ös’_I¸–v:�7ÿ�r»ŽP"FNµýTÑÒ–öS¸w9Xަ&ŽÃNHùbÂ+¶÷Õ/æe�8Ý~šúêé‡:÷gJ¿v=yNjgè]ÓþƒOÝ»µ@³¢œÆUtwÒ À÷Žûiä°þ¼k¿—S´ˆÍF3»¨çÞµ$‹7œ¾zòîU=mƒ°ÓšM‡]ñ{Ä<ŒÔ(á½Ü™}:Çö¥Dœ†qDùï¥q`(ÙµÏ.Û¦Ú€cZ-WçLv–�ŽÔÀ–>@Ÿ_ŸjO\tÝ3Ø †�å"%髎 �@ÜàÿG¼ðøû¥ÌÊ«J/Àß ô¹R`†D`¿"‘Z'3rèÎ:V›ï¼¹; ¢ÔÞ�xAÿ¦‡@÷Ù­Û¶+Ÿpו?YSN•íÅ�í¤êóYñ½A/¬WU†ÃE…AO±äü­vü"šÃ�Ù]¾ÙŸ¾mr"º|Øà�€Ï©œr»JºÁ†mæ2^Ë¥Úr;K&wÚ$Q)uM�ú}ÄÝnzئÚò^–ý½Œ¼ù—Çñ�ßå;¼-å»GÊø¡æç†Õ\rwLz+Û?c,ô‰NËÚ°2Ë‹÷ƒÜÕÖõés{I¿rÒ]öa¦Ïôlÿ£ˆÀæ­¢Hi´µ>¸ØÍT¥øÑ=YÜîù´­¶~L½}j ä�“0W¶PA{zÀ´a󋸣qýt ÃþÉè‡Cã0EEþ�!áj/Jd2èÇLuC•=¾€Æ9–2Ö‡$¼¥ì{ô«ËkÇ)§èçHTä¨"ñ¡€‹óÇIºz%JY+™íóµbŽDTª‡f8ÃãP¤Œv¼Ðºv² 9¬½J6"Iþýà8áë—ß±;Q·T}Ó žZ�mÓ§§o=ÚËÂo¨r�š›È¿¶œ7©zT&FÓFzaèI)SpP·rÿs¯ËËß´é%mþ½ ò冭Ù5âc§°Ñr«Ø–ò>?ìÔI¨Ñ�Ü^S/‘è�†É£iÕYö,Gt˜#­¤&…Ïb¢ 4dœž'¶5m�GçN¿LD2î¹¶kï³Â³'ÕÈÅ#–ÛoËE…0XR‡W¥¿|"÷Ñé}ïC>õ�ú¤„~éõáD¼ÉYI‰Ãr÷ƒ‰•r á`áÇPRÆjïïûøÖ—Å‘DÜõŒë…h’í»�fl9üÎx‰\ò6¨z|�‘:5\d¢•FÔ^/�Þ¿[ÄÈé·óѧâýŠKä¢+úOdñ˜‘æÞØú>qŸï‘ósý×�öŸßUÛíÏÒ¶ß‹Ž±TØûÿ5']iÛÄ�»Ë‹6¿k„ {F.=™õtâ¯ÏÕž¤�N_6J7u龈儳P‹Kª§�Öï&ok½¾Wœ“ÉÑ>±å¢„]jN{ÅØ�‰÷ÓM™›ÓDs^Ô΀*.äü’IùpúÔ;Ë´Pãeuæde;U §ÎÛ©´Í±ž§w»�Èüa4-úiQc»À_§S@­bä»0¿b³ +’ÃT=–ý…³&<« ,À9_ (àãOÈ—|ZüáÜxÇ´�«¡DÖÈAûÒ8^F5rnáAç](ñãuŠr?�¨¼ÂNó„Æ#B�ÜœÅaLêh=kNÆ©“Ùj–ï*ñ�Ý\9 y9Ì9›ÿƒÀa¶\fuA°bq:átÐ)¤å¾¨^?¥ÜžŒù¿"‡ò…<ŸzÜ-Rx¥H­ ¹%ïæ¯JË"b×¹£²Ø[ËY=w=Á¾|ùó[·§óÚ%çQ6¯(bcb�”¹4YîDDH å&õ bA‚*«Y ÄÝÝktŽû 6ÑœªihÌUU‹ˆ˜)A5Šj·âϵæ]~¿SVD¸ ³‹¼%�LÞå ò_ÜüY ïcP[¶ºSÀ�"y“ePNȱù‘"÷Ìï[%ŠôŠHc>õû—“&…cŒçóû.Øâwj*—�Ïïà¿ ëK-l£1ï>ì‰0µ Xü1ŽÅé½m'3¼`óæ =žÀøÜr¼mÕNW.æúáŒçõy~ÖÈ¿í×é„ÍèÁ+è"Ö¶¤dFŽØ$_ïƒÊÜëÕ&úŸµ¯û¨§Ó³{¡kÿm§¶ÎþUÀZ¶S£wý|œ®Üô2`äÖÜk\r�–\�k¢¿éÝzw‰ÌzF$ÕÍrÇž´á¼jÛ¼1®:¾e@}y!#®±ózWü:xŸçv,>ê× œ1OU.+wy}ezA¶E”ùÚäè²]Ý")÷qM\tw·Hçƒh›Þ>)¾Û¼Š#øMÍ)]–ô ý¬ˆT®›x[Õ~i*ió½È F+ ÓȑަZcÞô¤Úÿu;#€k½¦ýå¥F})\ó}´öJk—öÅ_©{—«ÊÁ'ø÷sÐ6/kµ7»½j?~ï~ÊëIö�W…óÏ�Õ§Î+0CIOŽÆìt·¯Þ+ó =}K/eT'lÔζÁ™à™]ZSÄ¡`÷�Ò}jê­.3É#X~SÂ9þ üî–)šx«qe²�ÊÜL|ˆÇ_.¶ÝÚßþ½ Òœò»ûõA}°O†Ë5ü´A¡d—û—íGbHtpŒ‰½™§ŒZfД#/aên ›J¯Ìu3®mOŒ8CÙ˜Ò)÷¹v$QØUi…ÄU´…†êuEË-n§Jë€KšÉŸDÔlF;8å{¸)OCFÚö~†�»•ÂÇýäE­ãoŸ_ð@r»8�ÂuÏÇŽùÄŒ\‡©C3N}ù‡ºñï¨Ò‘¿�P,[™Ñï•#}ÑóîžÂuV(L°<Ç¡W¯ð¡Ã©ÝÆÂäÿÛz²dbWÉ <É]¿£µGú²àÃL‘Ï”2Çìø £€¨'Zm¥#/¸Ðù�1ðÑoIl"`j"îw¯.sìÄäŠ(éøÜ0ÊM‰Vkî8]íír�)ñ�Ó(¢Îj¼.ÛXÜx¬~dë$3G÷Òjø�ô 2Y¶©è:‡)Ñ-³I×þ§ÞÄÙ5gÜŒõÆæ»¡*j6ìv˜tüL9ü}hS”Hf*ŒQêßnBÜš¡2¥Wøuã'•±JXwD\&vð‘0…u‚}f@/ˆÔÄHã«êœT“}¬XÊŒs ©rX7‹ãr®ŽHkS§Vr´âÈ/ÒØpð·øÍ?q\Æ�¶”ö¨Ôq<Åuuž{®k vüæàåHÑȸnþ¥ø¡z%"q<9¢¶èvø%1ïºfá:Eîe:âæ¯ß¿ÿÏÿ´[u> ”�Î^‘ß±Ãv:îQ›B݃!ŽzʬæHã¦ÍðS#]Ö_?ë=6Fû)�{ÕóK üðCs!­ï?´��>l§÷Ù“ Cëñ)n6 �¯'‚vNŠ,u÷G&qÌrF¤Îí¦Î^¶^‡ ‹BꀜMòƒünùº(]yø~›>Mt¥wÀ·~ÏJ7¹ݨ[ÖQse Ëk¼ÑÛ^.ÊüÉœÚx7¸ë'Q2Õ·àð”À¾u¶ý¾k6ÞsÃl§Vá‰Ñ'r^]î¥M…¾Íã§*¹—:ŠŽS±#Ž$Ã~ºg?i FîA¸þü½_®Y˜çí„4âÔ^r,®Â½ºzµ/%/;zPu0¸Ý`ì ñ@-_ŸòÇt'!rNÌÀÈI‡ul†ùé°ÁoöJ"i6¹Ù˘+ž”òz‚œÞ²n<øäç€MS«u[ ’Òñ ,rnNK/¹i‘ôDÀ/5À‘ÖN z•¯Àë�Õ"Ú(ŸþlQ”@ÚNkú§D—ÓRÑ1�æ¸[9Ö?0[t4qÇõÉÙ¯MUƵær‹ Ù‘¡‘Ññ©~Ç:=ìÉw¼T¯® #Íô±M¶E^Ú©à ä*”oË+ê¹Ã³=æ«?œ·"[�‘ó~q™^GJ"Oˆ YÍb‰Ê%‡Ýh§ß-‚_õðŒˆŠñ,�qH9í^Ö>_ÅÞàC`joA†E‘Ÿ’ÉIO§9\r =C� N�5µ0Bÿ-“Nôj§³¹þ¦þA8A¤Õ*­?Òmø�âÜdº éÕ‘B¦ì–Slñª"\=,r:c¿ `’3"Àn£D¤Å^õ@.9ä8Gæ`d3[¯Úþ~wÃõæàäžµ\´“Ñ8#p¸SâBÓ–�°�â÷ 2&Ó�Ü¢¶Ã[#diMø>v—›Fl}žÌ¾F@tÉ‘…þWCÂ"[gnhé� ä„¡ïF{°�H칈×oòŸåX»#rþó<ï¤ÝüWæ±Z°Eä|Õ7nͩÕ6¾Ø©š+Þ >ãÆ§ˆxDJrD²• 2’ËÖçjtžëUý>ÕSï÷uìµµ{¼›Ý5¼ œÄì|BeM”ˆÊäwXκ))‰H®iÓ¦÷‡M!½÷‚œyŸ—>ÿ˜¨u‰›§¬[>Mîñú‚H4‹\OqèeR{²ç¢�ê ÁÁ%¡GÞ?RçójãúÀ‹&¯xsŽ4÷ÆÁ âÚž+ÎNÿFná«e+ÏÑrdB,ï˜/‹¶HÍ ìê;hî\ƒ3>~ŒTzäÝØïÝ3¯ú¨Æ çzÜÜ€©1Ÿ±ONŸ$ñ͵ˆ5²íu¡/ö\°Á\°#ø£BËyØÇ4®zgÏýÍ-ÜéŒPÈëicø/˜Ûé¼ÛuËÁgüoz.ößÕô`Éõ ÿçû3/Þ’Ùc¦°×LÔ.Ť’a·[ïª?—zÃü­?´zGäì g®¿7xöâÍ€çmèÌ E²è+vx®}šÐ^Oñ[åÿ3åÈIÍ NÛiõX6ˤâd·È¢Ü¼¥tø6Âü7SŠÝ{~ Öãb³˜KÊkZ&8¥žÇÏÕßź‹ëŽ"ÞýºYUD–ðNÌÁ¬Ä’Ǹïxö!=dc½d›@Ë`Xón�moV«È¾Q–ÉÇT^{Uü¡ã‡¬-í¯°\ùÁ?ÚÙ†›Ý5âuþ�o½Ý¨ò¼Â/u >ÜòD|ϧkŒJ­.•Þ™'Cáî¥Âõi#WËO>€VäWCT …8HŠó$ û5¹G’L—\F�®yú± CÏŒ"…O�ÛnöØG{:«A‡ û%èEnÉñHç’tî§ßû›è„�?”«£öuhÖ§VGZ®-RÆn¾ËGÕ«\EPè›zÐú4�%ú†mI¿ËnEÃË0 ¿ö¿^7‰Æ ‡û8•AzÚá.M_…ìÄoñ�J™ƒÂÜ­#rÔœsÏÐY=ØÚ17æ‚;u [çø;Lîìþ‹ .§ =�hŒ±ºçsUÑ $ðÁß3g|8É]Ë“¥Is«±öîûì{óñ�pµÔ¾%È–d<–7J÷zþ—Õ驯 +>Z¤ÃÇ”ãIÚšý±>§ë³Z}‰ísËáAR“<í»Âbò^Ï6|. ¦t¦ä¨>]O>AÇT?„¾]zä(ÑÓ 5®€o¹ý®u@ãz}PÆÞøäÏÌdaìß*~¼ÔŸãšg’Û®xO€ºæ>¬·ÿ~\ Frœ þÐù@:É-£¿ (°ó«‰‚àô{ðróš·ÖnzW¯EMJ¥­H;õ†Ã_ax_¤�züONþÓ5³éunªF×@ g·^hìsÂÁNØÙÿDÑïd*â§±ò)çJdó甚ķˆÈC¢²žt}×ô^À�b›@\‡n_‹ûb¼ª4ô¼°÷Òø/=ÅA…f¡ˆñ¥“®rŠ�»¶yÑHR«\-b€Ìµ}Ö�—¹çoU`…öFk&Š#ôhvø�ý·þýÒXRé´“\7‚¾Á‘ìq‚‘ ¿ÿ㎿Êѳ3r;} bH_Ö§á% ì `¦Žô}]Ñöi²Aî,žî-2œv°ý$–AÙéš>äékg}ÕSŠ×ñWªŸ„ÏÊ‘AgK‚a`õ”­uPüœF*ˆTúßÿUë½o„`/škp¹þw%ø¬FëIOA^ozêíp¹îpÖ_šûŽüÐ!âån>ãÑëö¨sÃù| 4`Ëíõ‰'Î\Jˆ *!0ã¬4¿*Œ)„Ò/ö„bõŽnƒÄº(zÕE>î·>4²‘_ÀiÎ@�,gUpë•v•¹`Þ°òO~N\O»rÐ<¶/þs‡ïs›lŸ·³âüóï'¹`<‘¶P:˵žªSR| §W’L¿»ýß_ã®PùœÞl9b¹ï4rtåú¨Ségr9��xÔ¾«Ûì÷o8õx�„£k+'ð…%°ÓRg�„ã�œ•åªÓŽÈ�"/ª‚lˆ@jh•f0.§Ÿèï}�jÙrßíòpÓœ_–ˬäP²§OÈ5ÉÓØï9ÞdX)*íúzÐ’Ek‹Ã“U¯ìÄ]a€tîW<$š�jÓ­…•M5ã;œ�Ø^®/"CRd‹àôY¾ur§™ðEæ×b¹‘K�-pÅ)­–KPŸ=ÑðŠœ ³FZ::™¼HgLTtO�Õï|z|ªy·‹Ê}á6Ás:®È@†µ_3;ÚKÌÍÔâà’·!÷ã?4µí<â2º3%¡-eû¹§dÙþ’¹ÌÛ`�ô\?:ör™ÕžŒ'äò¼ê£wy±ÞÆÖéùº0ÞÁ„œa N]—{F|Ýb MJ´Ò‰ºƒîÇÏr\I¡™>6;áNá³ÞÊ0¼NB.—õb§Ð¢Ã¤·ÆIõò‚Sê´J~ÐÒŽgż3ràÚ‹`9É8¶Ñ“8NÑ{¯R+”ÂAíÓ¸F>D¸²´þ”ïÌžÀgú NµeDlŠh¨Ä‚ФI�¬c7ü¹‰änZNû�!4� £tXEí÷‘¤ó¤<½ÌmÎé½;ŸKŒõô_ê b95ïwå¿©äB­8ífÖ'Ë£VÄÁw8åyÀéÈÃMõÜ|êG:{XÝ‚äk#øÂ"cÌï ¦Š¨™»~ðZüàÇú©öKqñŧ”‘™%•Øk:kÎHAĵEþÙi½bf iË•-Ðeª® Á9Ñ«cÛŠ;Šˆ£!#iÛ]] ¦ks3>5‚Js—m‘pÜ'F¥c<ÚéQ8û�­Ž~P)×AÍ2ÛÒ¹ƒu±ÕµƒЇŠ5,§ôÚÆH~³ çÜôy]âÆÆ„œ�~’¬Ð~•ÇG4ts½âÅ*~¶=ò9rÕùeDBAž>Éø:ˆÓã•1m½s»"à‰�ç°m=½x„¸å¨Û.]O*·Aùû„\x "ÊÆ£d:æ/ѵ4jVÙü@Fè÷ôÙ´îÖÌæmËå¹ÿ.ANˆ7ú\Ô>Þ¯ÐWˆØnܧ•Pؓŭ-WìFŸÉN�_4ÖmxÑ~×dÖV¸E®/ðÆ{Ÿž[¤ê6ïû< Õ}¦—L÷ ºžõE0š-÷�å@]”.㤲³À�\o:’Ë™ƒY/}ø·6ýe×ÁõÿÞ3r!ŽƒƒÏ•–™WÏÈAyծܲ®«à¯1˜=ƒ¢]íM øŸ Æ9M LV}»žÊzóHÉù_~r^`7&èë�Dn"'ú§q§Ã�ãFy=…Yÿ>ñBã ^ˆñömûjG[LfÏW×^¨*¦rú¸þóû¦õœ¨™+?ö‘ì§Uºó¥)vM�ëƻ͓õõ�¶vjøöåVLïäyš–yG5ߦ£ 4DÂí':ÞíæGå³8£뱿O gî‹Úf«•Ãù�ãÎ8 V½Ö3ZÇáŸhœ]NŠÂÉ©”E,Eë˜7ÐG]Jßš>³®†Ï“âó&4‘˜Z¡ù©ò¤øúÝ|¯ä¨ ¯]á»¶· ¤Š�7M^~†.nÇ?Ýè êØÂo¦ú RhàwòûÅœ·8>s0÷AdqĸQ™âÿJÿN‘p½gèŠ[u°ûËã°¾í~  ¬‹Ðã0Ißµ/ß77òÃQ $T~ØßI—ôYe/GŠéìäÚR)Ïù¨«�ëÌ™aj¬#äU|»ï/ÿGÌÿ°=9½ ñFO·õJÓÑ÷¦ï¤»Ý?_툚׵L%Ö*e2!"‹ž”° õý;�ûÖ&@ÄÍž€J‡kE×€’É(´“„{nïærZuêA¥Y’¡òÚ�Ò×k©izÄèňx\pìÕ–‚XÏôøÞl •õ¹þ(`¸Á¤Ê>Qy冎ž€?("ÁRÝ_ôJBZ2µx�Ð�ÒÁ9ÆÚšÙÇGIßeÙ’ˆz[Ñù%îó@$ÚÓÜÿ£úd¶~QA"�<ºª}:1òüpŒr¥¬[á×¹# Q+âOÅ‘à­BA§RE¨ß€�Zrõ{¼(OÆi5bôÕq=Åq‘ƒï^ü%•ÆaU»rab�uŸõ0ó›ÙaAÔÎ[_m4P%ô™.ÒúH­ã»•ï‰Sé*¶ïë§òÛ5(QA�~JSæÐ´_¯/c=dý¸j=þ òÿ°Ûlß"@k_}Y" jPuyû»a�Ìˉ-¹£ëŒ«$ê {ÿ)Ÿ¢!ãûµšXO.¾ZÓ ;éö(�Êú”€ax0^ÞŒÑ�sGlºAÑ•tdo%ôÞzŠøÆÏ8aììÓ.pbEqã…�È]‰•Vݱ‡N¬%�e›3lýç—”~k�Ú¥”ù«æßM¨Px¾ðf^ÁO,®  qˆy*MÅd]E©YÙ¢~ñì¸>€“¿Óƒë™|üþŸÿE/…G€_$@äã‰?ɽrøêSCNøåR{ÝêÙñ`ȵ%9·êñ'Nó}ù“< Ør¤Ø$Z’ˆó-ö�6œ¼=ÙžÀn�oF¬ Wœ ‰Ÿ:ô([ó±¯�™?Ðî•�¶üz2qÕï+NG¥�´ÓŠ×é²c>,7*y¶ˆÌâaŽ}<¬¸t‹oïËŠÜbÛü<¾ð�ª’ãJíÕÍæ*è�6 …@Ñìp_×·ʽærwቕžÊ»ÜÛÝoJçéD5á+ÉrR¶Cä©MAŠá­D+2~~Õïÿiå�3åêDŠ"âB,’‹> H_r€4#·†„'Ÿ_ã¹"Wçëí±^Èòœ“~Ói+[Ï®¨æîX˜-—#.Œ£câ-wˆ‹\´�W s(C”ðà‰{�Wˆk¹ö,ÒIá1·ÏÀ"â9ýWNµ…!¢V‹c"ïñ^°ÓX-ò¹l—³Ã—ˆz+1ñ$÷a8l²•]Ï|ÝŸþ†ßŸšs�ì´Ê §ºƒƒíbŸOóf‚IÎViÅîa–î8ê³[š÷޸ʵ8XCm_.ñü¿]ZÐÚ³«X"¼ õ”[�¯öoA®S±ˆµnÕf‡0/ËZLÔwøZ£–nÄ[ËodœìMDì”\ŸZ»äP]5g޽RVì^ñ@ÅÙpµ³»| ZÙRÙz¶ßÓªÞõ,ç ;Ö-B�ЧÓó ¿}…X�“Fv,3Sô�úýo§\n×fDŒËP@·ø¸±YÎ[:3SãRý­÷-òoûm‘�kb~±^îk4 ²q†º;ÍÇ4Ú®N8Öt–`…šq'ó0ÞjwÕ_[ÄÏŽG‚qä>FPf©D0É]íã|Ò‘N‹å¤0,¾‚>ˆHæ¤#–»¦�9�ªï—S°7`qããæZ'’í›62s»�âËÝãHëGp©Ým˱6Mxä;tv¥ç®{¹­è§JùoOý>+×OmuI9äΰ 7DÄÙ]¤`®Q©œÌ��áWy;ÿàöÛ¨‘ÀŸˆP³äg[®19à�âJ¥ ¢Xâëœæwâ”d¼9ðÙ9WÓ«Ø1÷ù…<¼/zåÅÉŠŸ¯"–Þ°þœ—ÿ%ØIixmE„ÒzçŸÐ_47ÿ‘Í‹˜=­ôñcbT’ Ùíê[êí¦vñŒÓÎï“2eY" šFöŠÓ»��ÎFwÈÜbÿ©ˆ}¾H˜`Ók›'b[vk…/Ð3‰YįѾڟ>”^·—Zgö}bëÝOä¸ýu– xÆS?áÎÿùR5’·×çQaÍâ7m±{Åݪyí^TÙà®�°ûx3A&p·ýËÅ—r!O–Ã9}÷…6äòÌS’3ÌkÑKb>¥ ½KÅäJÎõ�½žu¾À¿Ü#ë¿Ú~"—ü×¶ŠÖ½›�E? ¿@]§{?oªg^a�>`(^—v2^J'¥Ò˜ îÝ ñ‡ÚûËyx|B?¾L-lÅ_q\Gø­ëе'ðòP< û"ñUѬå* };€× åRÒ–¡žÇ¤Ǿ۟+&F/ìØª}sÝâeúÝ~oU°ð, Ÿ¦´UF¥Ò¹çŒØVؤKu90aîå~ËØ ¼y·Þƒòr’`ÙbŒÍGØ5ë]Ïx6yRcqÊ-§Ü{ì ìåzÜWî|p’—YØÅažãb¬MéÃÆìÚZW}ºõø«Fà„܆ÁGbQóƒ^ÔNWÞÈp«­¯ŠÞóBUªŒ‰—9®rpá¦õÇUáeZË“ö5ç#7s {üÔv'd\cržWºŠç7N€ÜOþlÔ ÿ¾Ë‡àa»6‡8êƒNÌbÿŠ_©ˆï²Î{Ž np£·‚°ËZõîut§¿Dõ¡CÛ±“¿C&=Rn¹!SÖLõ‰§ëîˆLg#5„ÇÇ`˜K¨¶±.¬€sPrÉ“y?U!ßQ¥Q˜Ë8–|9äÔç1ˆ�J,â4F+<¤Ò3qN6¡mkÄ9R*œÁÕªa¬‘ƒŒ¹î˜"û™þnj99ôw<ÆD»žL—ØC²|fÜZ6­cz(kD]ŒÿÒþmMvGIfæîkefUï‹~ÿ'™o¾™oOÕÍž‹yŒ™é®Œˆåîf& í~�H™ùÊb„/Ó�A �xÇ2žu$ãEÑó!KVû¤ï™’¹ ïP2C¿Ζõ8ì‘ùñëÆK-èë)ÞºñòžÁŠi!znòˆÈo÷öÉëžþ†�Ì}×mb#ÎÏ©G_ë‡T¦-÷¯%_8œr‘N–§U59á(®®o2§vTÊrAÄ[²þºW‚$—ˆ¢¾÷/�|ê-ê ¼%©*vL^pÏmI×^Ïg™Î}QòH¬¿Ï¡íó¬çü4‹ˆ(/ ñûþg䜞–.�öROŽ-OÞº±üÆÒ±Ð™¦ §Û±_ÞÚ3·¨Úý¤ sGDÄü»ýÔλ|†6ñ¨Y²�Rµm{³›:Q ÅÁèC±ðX=ц_ꑵâô:zéXwpé.pb³‰î쯳Òk˜2½Pð µoC}hENÏx­Ð�ÝÄes`·0Ìܱ~le ¯µÈe½âßóŒ…:œhŠÝ-âùñ¶_ôÙ›¶ÀCp¬A"ÄáWxDZoÀ�Ù&¢F›nýËYƒì±ç¶þ(ÊŠTÁ©#'i­/¦¯— k=ãú‰öKÁ·×?à bï\3òÛñAÀĺà8!¾�ïí;fò�”1mËÎN]Þ]eS#jï{xb ç!Ð5§-fÕîÅc®eè¿¿�ÛfO1ÐÏ×óõcºãúœ­{Y‹Ïñô¸7ZÞëçáê•ÚõO�ÙÈo‘?CrÂ| Ë\<ºb}¢�»çðÖ�“z®ížÞeÑôëÿx¤}¾¸rÖœQõ#¦«ÁˆQ^ õ‘â;<ªN'Ǹ(ëF vØ–ÅÓ•K›¢÷Yûd½�Ï'Í7 ¿lã¾¢�ô1… ‚j^ '=¸¬Beâ{r1)…Ê)�EMÛ`wLÇ’…¡$ ÅzJ'•¾ }uC,Ó³¾yå8S*tÛA˜'m þ½4Ï{»øEõîl±Cïºã+�ˆþ÷yÚk˜õTm¹œÀW‘�Ä^1ϼRÖéwµ�K²|eš2p´ 8s�µ«SÄü¤ìaÙo“Å\YG vhD ›å:ì Л’Ý™t%\106‡fñg_…ðýx†‡àªÞË0»\[,½å§uûd¸™§ñÚý¡r2àôN‹-”ˆWžL¢öáΧE»q@�æ=îRºXÌD¢pº%2˜#ÃÚ°WyRO2¹§�ðEù§Ä¨…àrº£æ[VΪþ8¡o}kVœ²ºó¿TOVó¸ÎÚaAŒªQüÓ¶þâi£zñ˜MžÝŒ/Œ½fÄÈåi;ŒRé5Áq xüxõåÆZñsz¡ÛI}rÎûéŽÀ¸¬( «(9‚Ñ8ÀƒpQ|;Mvôž…Û0±ê%ùIvÕZ’ôÞ¢¯ó¬X†‡*ÎkÁGi†çØ$ÑÓc�íû‚úç4j;祙ó07�R¥›uÛ •Àá²uå|�¶l·³ú¨žnÃóÌ´y˜éïu¨ìî§srP·XÐÇ!.)Øa¡œØÄnÆié#�¶XéÅ“hÇÂÃûmÖ/dx"Έ}÷ì¸ûgâ>@ÐaÑ—0n¢Z¢37Ë_ÎÙÕ§:â•Ó¤Oˆ+Gˆ$^ôÓïíñbýåtùNc]Úb°nE—UébÄSkõm˜´yøm—gÈß1&o—ËõÇ÷¾Ü1~ºƒAOC—æVŽš�U‡É×óOÄn/ a’|ª->œñeáÈþb¸8¯ó¶…ðz™tÐw�Ý;ª(~Âaþ2�ÓG¶œu%'�’k®©Šòذè¦PÖ“Tr�û¥�EcÕŸqÄÀ_°oC_Þ1›ßO£VyÓç#bñÛô ð†£§§•ò�Sî]i/”Èå¤^oô—ÿúÏày§�°€Ú0T¿[þøÒí× ïkx@þ zäÏ›«‹ZØÍ‚܈Wî0w/ç–ݪ0ѳ"æaöð¸Æ$0~¨Ôvƒg\Ê®­k«Q?`³ÿÌÔñŠ{Ø©I>­]»¬rpÁ§áqƒáF®ª‚n P‡Þ¦ÜÀ?t eš{E\ä½i_[ê—ˆB©Gó{�+×Ü’qjKQó�­�eÉø&ëÁ¦™(Z%êÈhKßF'?MuPD–Ëð(õôn�ª¦:{Í4Þ,| Pb£xÚ±SßVÂ-NÚ¥‡â�hE½*]¼Ù)¦bÆÍVÕ‡ÝA�4²þ äHþ;Å‚ Zÿׂ8ºÛÁ¡ÝÆ*ädàñâßa#ª•—™èˆ�Ê�¼„¾]KÍi:Ê=Štt´ }.ô�1Mý”„ݳ´¼2$Ó›5Óô$yªˆ¹Béáà‘d< rN�NÅ^¶u7�Ÿ£îöOÝÿ;‰ûó&š8dë5•6™ ªÇ'/G:(ˆ•7cG.yÐ.öUHxÄ�꽟Ét·Ú§©v;wËvéå3–$(é0Ö)e8Ò[´{dA˜èPþŸ‰ '*÷—>—óˆ�^ –þZ"èÐ}LÍú³65ÕpâŸï«å,&ÍsKü¨°Ë`ªn¿þv­H¯{(�´œÙkô—Se�üUѦǩ—§J»Iꘀ;´Ïs�|ƒäß2úûX ØoÂzC¯£$®ŒÕÍAK[œm}4d)¸¹NÍž*-ý¼Íë oÃÁ1ìú¶U7/´ŽšßãxÌÕZÖÛ°ÈÄM·ºöûúØçò*¤ Íξ}�ó•߃°@3êXep4’ Àš^NPÙƒ?”©2³K´sÈT£âíxƒsÉÇåy}Õ~bŒ±”HY´-ùËœŒJûýâ_Æ/UÕ½¶zÓòGiZÅ+Âì&é\öäý¸X“nxÿ�ÿ «<œ<ŸxN;Ôy�uºïÄæè±6üóûrôúo„ÚÍsÄbz=FÛ ùSf¢fÕxï=Í“g�9%§ý6¦¸hÌ�á–Xÿ�QŸ§¶®Câç� Ó3K§üçð<²ˆØ9YÝ).1ßú׿iøUþ ž‡ô` Noæ[SÛ)¤Û»¿éRöúC=�†?p:)«çÛ*êIÅ'ì(Z ÄD[ëg(Á•@ª¿[ñü©hLºÓÏÿøCÙæŸïS-�$×Y=ÌÆ< -è b… ¯ê9g§3ç…è1¬Öá¬È}KB¶c Ï„ƒ®üOx‚½b ƒ†¾”&^ã“zÂÊ}nìr±5[¾³ÒMÞáixùS±¿Ÿút±�E?ÄÔ’‰cî€Ïökr«Á5ŠÇ™¯dû¹�ONi8ŒŒr»ãGé)ÏòãGñ~ˆôP%_ŒôÂ~íVÏ\•ÿVrÔc´¾vÖí“_Å›Îê'ˆ}ÄbÇÅE�1ÐÍ#<¤óþ@ÿZ'š8UsX‡`&™ß÷ëõôïj nÊgÃvÔß±£l§Eó÷N×f‚‡ïä2©©G¶~XÞµÞñ�¢‰!í_œö+cžc÷S*c·^·•7íá‹°¾ÔÚ/�Y‚‚ *Gƒò«?.*‡r½P¿ÑNrØôÏWþ;bæíAB7�Mó(‡ù²ÊUع¾a9}2ù¸ÂCñbžŽ�6ÓA‚ùöwðP03+4¼(Öë5AŠøfüÍ#{�™8\‘§¶Ž]?ªÊžÁÛåÎbÛm|¶{ÿ`«ÓN'–dw°CLnÀHòÏÃúg÷pܲÍ�sÄV�8.§wÛ)u¼F:Y=õÔ:¿Co-¡'£׎A \o†'Äš¯vj¯Ž —[é�­îÔ?àTìõOóÞOqï)¥;º+Bcž÷/„–íÔûžë¶/qbå&\%Ò-êÞ­'å. F7NU¡ßØ7È£þ|i¿Ïe/;žUŽ,ê hÓtR}lž¼%ÝN]¥¸¨ª¾>Ï»¾1®ÔS¿æ[RCI=ìvz ÷æ!™tè2 ,^5��¤[:#FèíEƒ)ز_Ó+l§O.�Z7Ïc‹5‡R««¿§›{‚‘¦Ÿì]+3žtR4Û)›9l§­Š¯??­wµ›»§Ô×ïæy¨CÞïOð°¾C?.¬ý£1Ec*ã ;¥s²zá7¿9ágzCà¹1Îpµ‰ß }7xQɺèXŽz¬âÐûê_èÇ•XJàN¤±›fÓópè~²¶|I ­ÌN½Ý=Ç(Kߎ¦o�l ´ôîñ#¾`äc�.»ç7xàžÝ¸Uëõ^öU6ëFT«Ï¯7_ÆHqÆ—&Kì ZôÝ?àbu²Ø±v:èÝãJô‰³.Ä�G´ŸPëŒÖT-G¡|‰É:uxKlúRN›ïÑÈ¡czÓøˆZõíËS×ì·ÖOðØ]C¬´Þ&b¨�¬Ç»d³J¿y_©·Ñø¬3N7…^1^ú€ZQv?…U$¶uÉ ë/Ÿa_ðÅ…=±óMíÒ½¨ôçQ)üJÁP[[óÏoûoz×/«î¯ÎÓt _PPB4Ñî/1E¼ÄMǪ’…š±Èvý�Sj_>•Noˆú_ÿ¥ã‹‹M7ŽÖS ,$÷Šå¤Õy‚wÌ¿+ß×u%¦à™.Ò�îÔv^pºµ�g-MÐÿ³ãÿ_¿`~ÿ9?00ôÆ o£•Ó÷/c,ö'¾¬ù ½GWBq°ÔŒ|Ç‘µ»ž¹œ»Þê<õœj)/¿2ì™"ŒÖŽâð`Þ·¡HÞ¶|©·Â.¦_½¶{‰ô5üÅÞ—|äòZ;]Ýù>àîŒ q·âõ,åü•wÁÏÝúG•²®½lÁÈ™z^{6È’TM�Mù¾îlõÂ[K�Çy5ÃáP•ôñ ·­4y«5p|¿K­+(<{p¨Ó×”ä�éqoù؃„ëBK� b#çN†ÌÛRÑãˆcg÷'옅•±ZÞã@m‹yaÿNG‰õ5Qx/Ò>óOŒOó'-=.2_èBN==ë�5G˜ßN^×üw’”Ühˆ™ŽGiNV¼þ*ï%wy`EuŽ´Áˈ´šâ�0µÙ¼Û‘àĸ”p«w%\VÅùBj{be©j:À“}û¥Ó<[t�\í?+…|ÿúJœY•&ë!ñ“L:Qþýg½ZŸNqõÛ\í@Q MñÈskß›=úÂøÏ‹†„shÿwR$zõì{ôs–Y¯ª/€¾öã2Ï,aUÞK]K�šrÜîJ íQÜzº#kHG^ˆ{Œ_oÊs›¸ß¨÷¶ïe—œ3 $åÛ2"±¼þVžõ[)�b�• ½…ØÆÞ7âMúuýVûˆŠ¶»ºx$/WA±3Ü.4åVÉóÊ5¯7ŸÛÒõ}œ:biÏ3°ƒÞ hËÕU ôÄ_(,¢p¯‚g‰c}fú*�Z6vù¤�ý�ª¾›w(ãC*´¶{É,õµuUÌú “‰ ô>úɃ»Æ 5 *ÆAUKÄ'âË©FÿÙfO—qÉW�G(Ϲ„ƒÈÕºøäß°(sUJøSšKH|ITÛöV”ñ¿Ùä6¦a_WÖçnÍ�$¶€™¿À‚®-ö]ÿá–ÑPj¾P·PÝHÑ®>ªrÊŽâìðlÇÚ¤š<´¬ºm§®í”ž~¢ˆ§]K‡ÕÂ=·å‰�uøšßÏБ/ZÎ܆¢-7ãï×þ/ÑNFŒ¬e‰Ø7³|è+½!ÖÖû uÇ^5Þ_·Ã²³Ãº,§Ñö«3bÞæ$pð@¹Áƒé‚ӱĨs|јŒË/¡¼ø¶+ C�y F¢è"x~°C)xvŠÝÒ7‚j‡GÞ0FÃÅo�“xè"¦o137y>#æÛ t¹ù¾+ê7؉~(Gçô\‰ ul—d º¬˜bÛYž-»ÒïôC¬«=ÖÒöàŽÓbÿ�S”Ó³»Ã¿Ñu¼îÔ’Ù<ç¬�á 4z<�.êëv/k‰qzjõ,ãÆ&·Vý Þ�jæÒ:í÷b|ar cà†ó ‚KV&7g¿p ªhÌ:;mSc"ªòèÆö´@…¢RÒ¨5–Ö ÏEó8óðÉý–ãU%´ŽàÙ)ë¤Ý;+Õ\BíÔ9ãCĪ¢Õ{hÇN’ðŒjñæymv^=ç/ûg^ž¯É©JÇZgN5þ– Ç«ÊÝ|F,]8"Œ/8Õó6Æòh/O¥ònM唸›DdíôÄi-ãÉÌJ¥ï·„ØE‚SêyèÇΛIûi âO¯áÀÎ÷˜Ç½ÐîànÛŽSîcÚ‡ ;øÝðJŽyÚ±¹’x~/ÃDÚå.˜DS+ô𤞹6.¬âz¬W|³í4ïÕN£.þ†=wH�Pí§¡ë¨ïxý~?éõd±¿®*¿Æï#\–ØVoKÉçcÛkå£<úΪÖJLVž¹nÕ…Ñvk9÷éô˜8ä÷OGà±þBŒiŒë_Tœ~©ý°x ÆO¬y·ÿÜÑí�“XLÃe­fò»ÿŽ’05zÂæÂþ�v<-Ìùbzcè{h芪n,¦¡P˜?Š‹KÇô¼:¥º¤N(sšôþ6;eä2˜‡ÌËۈ<«¶ë }v¡ŠŸ3ÓÏ&“ŒXy›­°­ÇC›EÛêß1<œ’çÊò[w™çîz€Ø§y¸€Ÿ^ owŒ�&u\¯“qà=$½ÍgÇï}ÄJ{|Þíž�Ä\ý¼ªýXm3z¨=¹ÒXf*3Xã3MÌÓ?¤òÀ‡4m‰kLcóÏZHºm•ÌWàvr´³bxî1Ú6µ zúAEY|º¢]ç52Äòr3~JˆXq]�u〠)ó°.z3YVï}K®ÜŒ’âq‹hâþvU½ý˾”CÑ+«Ô¾àÝOxX½ 8â ª{öl˜û¨xèô_ Ü:°þ‘ØX3P¸›gÛ=<äÙè ”!.{,Ð݈Œˆe<ž4÷rÇ—"a±3œø›Ô¶næaÓ LU6.W½¶PÅSèÐN?x¤y' Ž ÷ïh×YŠž½ãËœ%2X…°Kà¶4Uý-´ ÏöÌ$ÔìýËϯë_)�~œÜO¿û‰K‘íŸû¢ÏÇ¡m¯§‚}xtÅ“ æÜYVðéô¢ùïŸò »^“�û‡õ§€Ÿ÷ŒÜž›G ôfõFNŠý ¢‡Uùd8š™–ýq+°ý9f]üh›äë¨pÅÕ믋§‘3òUƒ;œlëÍf3X½«I߉D,Ù‘ß”œýù<â~ ‡fÑ4Wý]ö8ÀN˜÷èò¤÷u/o®¿W�ï� ‹½Ï}åª"¢öÉÎdVò-¯ÒÁbvßûKºz‘ÈÊäxµ0«€žÀrÆ1kyN•·[ŒûÏ,˜ø'5¯W4Š–é)™¼qæŸq§Þ?O�R/žh�õ¡Å)f*,ruuc16÷ÛÁÕË'zPÕºÔàr¹áÔ./~ßJâ©ÍU¿X}þ·›?4«c| Çù†ã=ø•2‡:!™(víÉ uБhßZGß[•=ÞèQŸ;÷Q$ˆ„l\@$}Ï`ê æeµ‡wÂÇì"‡·M7y˜ÁS:÷iÓ^*ðëB ³EÉ”Tü%Ý…Â$�ä0Qâ!³�•gù2w¶]œ�åÈìx0ªÌ¯ÈKÈbŽ8Έê§/þÇû;ÈÓú:�^®ã¯ý ¡vLPŸùp Mÿd<ÏI)owr€ñãj´hËA™À;.ŽVÒ5¹OBg=èiUA„aÖ¡ˆ×ÜÍ“¢N¤&„2œrDèIÛàâ’´0ŒÜ<’ÌdhQ™Ðvf'jNž”úËnÒgº'«»MéôQýt�CÞÊÒÒƒ”®’üK ãŸ=üz`Òa/¢ÞTãaz$’A­z¾ÿ�ô j^ððN‰õúaþ£á/8 ¯ßÁ� ‚®�˜Û©É!ÜV8›!ž7Iwwp•ƒÖœÉqÛÊR®ô·˜]iñ)º«ÇÛâÚí«éO’º h#p*m§¨_ Í%Ú"£l†óœ”t;| ^"ù÷6Ö]Kú%SòX[ÄÀl~óµÎˆ[]k‘‚»âP?•µ©vÉÓQÒëä¢[�)Tçsµ%\l‹nV0ŒïŒÏ¹0™ç‹³>Öº<ëS/³YV…åÿ™®azžšåJ¸ý7SjÊã¼ïÿùý­�âAJ…�¸¥mŶ.ÿŽNò±Ýhj¸!ÛåFÍgÃaч#.£–ú1¸†O�!·¾ÀÃ?ïSÀG=h6�,óL3qÃñ¢1ñhzÛï×��6œÿV˱b}š©;1À3Ñcé¾vÎàÑa <ŸÝ3‹¤\ƒŠ¢›ktÅ'Us…`\RL™¿ý¡Ïÿú·úp«çú§Ösù‚Éÿ;árxâôfáÊ�`#½GÔ7!6ãmnò4©á»,¦L¼¼‚«ðø¯�=Ûú,þ©ïíÔ¿SU¤{™AcÑѬKúëzB?Þ".«âÆ¿À÷x,œ>¦»GÈÖÞqì¶u?MzcëåO”¿P"̉ÍSBÿ-¶Âã…‚¿ÿ¼k¶ÓT îÏ;€¦jܬWþÙ”:«–eسxÛ5¶^Þ>ÕpÚ¡ÛÃ+UT}Ý©º#ß©`ÑVË…ŸY@Ïõo`È kìÆÁ{Ôr]øìèóipŠÑ&ì²9J°Å¾[ÖDªzt+»ñ#¿«>åÄø[†€j£âñl�7OÈ¿þ¦�ΟTu87òêÜ~à�'«Óÿ{» �”™~+žÙäXß�ræpN§(úÆ�úñ‡;Ã}©o÷~už¡xlcˆîn2;×eß‘¶toˆ¥Å¡‹§vûa_TÊ-Å‚#õ<ßcù…l„j°Æ•ÛõzrÈ:<’gÜ:i°½a�]~Iø%v|âZSÙ¥_¦÷Ô±¨ŽåTÆÌsKÖTÖÔÉ =Z<ÇáÑ?!Ãîa)!ì‚OCò,cÀ‘e¢®÷AºTÈ¥|>Œ:^�ÅúÅ5 ù=ŸJ&M_éÎý *W블n÷·aU¾Xnê‰É¯NíÝàÜ´àpVý0/÷Ö4F¾3jÝ¿ìÍöþÄÐ76žuQ ±í$¶L°¾l\¶ FåÏu Å ÔŒüÃ2hUL^«½Ž±ŠéÛ;bú�nB$â�ƒ§õ‡‹E?Ù)â£¨Ž¿[=µ�ÝòvÚêP×Sîwã‡òr 3¨Ç”µÎ¡1®ây~¾ü£ßøø ¢t0­:ŸÕ“u¼Ç~ûWR¨Ÿ«×ÓÖ«_A¿Âåð̘̓Ážs_Û÷ vÊéÜ'í~¨ìÐØ8Tµã Ãs–ÒõÃ$É^¸‚ò;pZ°ôzVùù¼®Aç–OtÓ_+òŒñò%éQÃÇaóŽ{û ÇÏOø’è6¨ççP6MWôÝÐí¿•,6UÔ+b£^–ÈÃ`=ÝØ¥@C©¼2œqzæmmÚH”T÷ƒyLÚéï¿0¬¹L®³^´ù•T3³�×l­ÍxI´ =$Ë©ËcmXØãuž€rhœj�>Å|îÓ]_¬/ˆ¥ Oñ;�ì4òMN«üofb£Ä@5”ukW“ÔìéCCkÓÛ‰ a6Ý2Óm:âÛBo E¸ëû¼°ëÏšk�þ]¿–¾“í‹m÷r‘І"Gæáà[}Ú/õYðCˆ&™ã¢ú(c÷ ·1ÍO¿:�:!é{Õ�\’~5¿üuQ„-$öu�!²S„µ¤÷Ñòv}‡ œp¼·M‹—ä)»Añ…Є²™Θ&ÏX†ú5Ïó7›Ž øPîŽ>±ü@æ¸=áCª <?&¬6®6ÏFpÌkòì ÓÃÚП¯ÒÕwöÅ× Œ§S_ã ˆEÈ®={ Ï&ï”ì<äoßvˆ:,*ß�ÙàÅAõvÏzxmãøgn2RXŽÅ=;|²aÊ ;”“‡×kOºçNòbJ˜4·°8O®¹Wg‡v™¹þ£Yg,ôà9÷‹ä÷LßK‰NÝ,^©ôêýN5uç ÑJž'íÞ×AD]ÏÒ‡us#ççü>á[·ÇB­¤;àp¾ä> ÛëÆýØ‹u~Å}>=HQ$ñ™¯—Aûp¥ƒEmY5W HÛnˆØáR[®—cÍ%[‚SM;x†ë3×y¥?|yEß ¤ó6N‹†O�«Î}µäUý»I\Kƒn£Ž¸I¼ô³yûóúÜëÁcÜ‹ô´¸+/®\.+‘ßýð"ëˆÿ�,H{�G&á·§3rÔ–ZDð–¢Èz¹Hù³}1õÇ�F;µÒ Ä‘jB�‚ _5�Çazð2Ûÿ©ΦރŽo"E^vË ”£ê4âTcrã¢ïèÖ:„ï˜'¦Þêò¿)uÓÓ$E^8VI­®t؃TQ9PžsЭ!ušÖ‘À^ɪÃ>¥z¡0lŒòßé/nk�„'÷� „r”“="Ç·\ûá]è‹Ñ÷ÅŒ³x8=ú³tõuñ%~§ µòß´ð{ÐåHu} ל¤Eÿ²wQ¥†‡$‡5´×wêë9zÿÍtNÑsXE¯Ð!ƒeËõ»É›w/S&·ßþ§ßüŽÕïËJ{ÝÀà~ÝO‘ËõZû‚¾7þ¯©Ww1åÍø·c%а‚Žtùóøÿ¨µ.ÛyÄ7Ò{X!*øˆBgª1�£LÖ²= ë!.dÕÏb+œ¨ë±lä&u�¬8 p(áÇäF{læ+‰qðšé(h‚Ä- NŸîÌQÏÅkvÃÿ¾þ•žmëÑ‹M‡Æ™”¤v”{qj'ÙȾ<¹ù¿Ã¯—¿Aèf™ñÓÓ,ÿQiú§[6Õ�X޳ɷÓÑR•]7¼Ãá§þ6üWùý?þc—‹…&÷KiÄžpÒçðµæ¹ý.wÄÌ;#&Üýµ`éu’ª!¶šãNþ©K¡üO ®­A…Wl¡œí#eyœßZ ¬&½k &þñÈ”¸´hLC¾þ»æ~y§0i6.1Ï+Àt\ œ÷˜+_×Ã/…¹þ€Ö}‰íz2Ñ�%¸N§~}d­µÓ<ñ|¾j'ô›}c/�êëH[ÀµæNzêg>õ0'ÝqgÝIË l웞~*§×¶Þý…ñ¶´íÆ©‹Û‹+™¼ kyì~ƒwÿˆxä>Ÿ8íñ;å˧øùwUbWõðÌ1K¥n ž% ÎïðÌ@÷vªÖIùv¸�+œío|cÒµEà±È×%eaÊq-<} �âæÍî³~x"mq{IxôÐ`±ö†*äõc�²ûTú—Ññ@ųŠÝ¬1·»•üK;™çzH ‘Ftã€Òæ1´µÉ<…WÐw‚‡Òd±I‘ÿP úƒÓ¯ßÞ©Z„í”á;øÖŸ:NA¦¨7IáYk[ï…&ˆ9uU‘œö}BPŠñï{ÝãŸZ¿y ÇFÃÓ‰g�íUN…¥^Îòœ€ü]_¯›Ább” (ÔêÕ�~ÛµžŸE"â§I{n¶X¬1†#†ª�NvŒè£d{=öN;²­ÛM�%•AÆ»»~cÅe×û[±5Écîë S½ ØP¹ìŒ( ŒVÄÀnâªq»µU@:x|]"véÆŸ¶¨T¤kcëAíê zx £¬­¬k²úÜB?bçU�‰Û;Hó�,fÚ˜ØKé6Þ5ÿü¥ï¶×žKÒ“ýä´ bOlêI×n騿 )lÖxOÓJ³ÐžŽ9Ýë�ššÕ¡ë ú×øö`æ5bkz;½ž(|lãê|€Fy:/“ßfõt_ÎÎÃÌ1üh§éâôd¹»•>‰Ìµ×iÁÜ?¡-Ö*;”¬û­ofÓ‘Ý6ÖŸ�e‹U»u׌/ü©Ù ~Øúˆ%Ú9G›½Å ¢ëÀ³Ãì3pÀ8`ÆŽÿWˆ öè6AÚ0çkäíí<ÍãÓ[ÏíjÝ'×çýþn“Ïû²á¿iÿ±L‰ÂIx˜DÔæºé|ƒëЄQpá¹#6pÉo1ùl8a§ð”ÇWÏ�O–«¯ñbÑ•Ø\‚w6Æ�ÈÕG25^†,&ÛÜœÒÛgW‹8'Ošðz׋Ó·gè‘O}¾ñ�P‹ìŠ›ÒéðI{}ñ�ÒõPcmÅé›™XcO%ϳ^›³®jurGo>ƒêq© WWêËÿAú°r‹z.^nð°ÄB <©ì”OÃi$èñÔNI!ÝM|¾j¦“:| ‡4ã_áþeè0ØfçUÇ/' ´óC¬f:äïOˆe|×ö­¤íyíÇp?NZåéÎ”Ç ½Ž²áÎ|ÕÀÉNó.�¥&�»Ÿ%t½-ˆEÊ›ÝÑûôà ã�]º†ùMz…"7(gxTÝÆj39é.ÕK!è몌ü9B/zÃèhr_ÚÎ[ñµÊãvuÅqÎç�ÃøìŽqòéá˜Fê©Þkï-…áGynã¹B&Üwÿì¼è<à60eO>ÍÑÒ‹Hüh±Ã&_í“Ùác™Ù±Öæñ¶ý·échdí7ÒñùMÖÒ¦­¯/X0¼a>6ÏîfŠivZ,Rxž^ÞÔÎÜÞ#Aßáyü6>ÐÅ7µÙ©šrJ8aº×¶dX6 Úabøo±\mXøŠi“Å"œo–.X/øü¨mßÒjxc Ž¿ÏZ˜÷@ã6V!K¤£iL“&¼ËÀ=ÿõ`õ&FoQŒûµ&뽜Í`ešûçß±JMÊ¢–ê í ß¨£g¡óëÒñ¿[Z‹DP¾Ÿ<�Þ±l8—‰bì®ð †Ñ¸y{n®.ùŸ°ò\LyKA¢îXú]µ²€‡Ì|D–D³¢�ñ glr’öVÜcé³öKíãïêܧ ºÃË:®Œ«XÃßÇ’jmž�ý 2>îèeßùìÚÒèKnŠÄâuèS7B™¹Zäê 2_‡”õŸPÈñuõ<íøŸ=�º[ý-ûo JJœP ìÑ¡kl¡�]ü0{¸õøÔ~Kó¼. DGÀð2øö(I)Ê ŸuÊZÛÀ¸¦;UÉ7é^�I¥ •ω„ÊóÜDdtOQ øDOФž2 <–‰%ȉóaŠÞ¡¹^‰¢û´:µõtÕ®}ĸE¿Tï†<Ô3¶1ñœj¥Ñî=¦U-›õµ>˺é»\!‹ÓD¥~ †ÝÉìfÿæ@‡HÌý$$ÕÆ!�RŠÝ�ǸZJoR=ÔUy‘y–ñ�É[žv‰Ð·î‡ËþÚ*•Œ,Sàýžˆõùæ5âŸðôÃo‘~‡z#†mjdšû,Tôedõùüt¤Œ/¨š?U´vØ8U¾#4�úoÓ?ž èSv L—§¥8É*ï|mõ�¯Ëƒ‚™è Î m|æJ—hÁû;ˆ¨^•ÈÃ&hnà=%ü[§òÙÆD�eÔUƘ¦ÔËøß3…«Ê=öM¨'SéXÆ¿uË—GÉ ‘ØÏO0†Ð÷Rž×>òº/L |'aÎÕúqD¤W^ü#O‰-óºØ` ÊÆ,LD�[†^Úät¬É wð]åtàQ>o×Ã{ê'Ïq�so+õç/õW:|æØ³•ÿ$žüþŸÿ)]íÄž\-vúèvÚiy-}­d¶b¶£|sž9¹Ìv¹êGþ2=ö(+§G.ÜoKi‰®h¯¯ûïú—zš­gÅwLÊÖ©wÏžaú¡å÷�÷ÍCHá-ˆ¡5È[(Çã§¶gAŒ¼Yñ ñm7.æXo¦c¡=¢HLðDÄVÓúㇶS÷ƒbm*ÃqgÏ“ï÷­]'ìœÏS?_.n;–3ö: xh 86m”Îü©Á6äªB|™|ùÄ)’¯w²Su=r{ÓË—w´3â#؉R‡ŠMù`‡¡w¼ñVç[bãý{’þŠ%ü«�Öªý<Ì猪O?(hÏÁñÃþ›¶ �ý� ‰Ô˜†HÃÛ¯èúŽ˜‡Á�xp1 vMD,ö‚UOUÑÙµþZ¦ƒ¢è%aIÖŸ@ýÏ’�È«D®±Bzô5ÏoPb¶T®ðjͨ—˜l—×ê9¸ŸVë &¶�-Œy¨ÈuÚAo>Ö!h Êí“ÅíëäÀÛ5‹9Œ�ùÉb�!–ƒÅ†(é �=óE›í´ÛãÏøIàyµë©œªlž…eËÚÚïävkç�ËfKË{®mùáù|…çùKŠQö´OÄ&ƒ'áúaÆ]£=­paœ¹{¦oÏo … }9%™*å·ÚٗذÌvj¦ï,?p±f‚>Í–,‡ŸRnÒ˜¢|W—I¥/ïôîÆ¨³d±)_pв ¦çªÝÕÈ«6~ýÐÕê<ñ¾—ÀoØq?>ðÛ ª•žð7�Õ¸£uª†v™þ6éÌÓa�Š&àS—¹Ó¨1+×ÏIíÉääßá1ð ó �6xM7õ8–Ÿ�c[;ž^m×fqF@<÷˜À{})Æ;ùÜòGëgF¦£TÜcÁxaE”µ�{ÄýÒ~8t†gò„~¸»S²wnÏ[|ÂpæèÐò¢_8Í21Ááq9S^œP÷=IϦ1K'VzÌ«E9ByÄ.›åÁ8¨#ÿ#Æ3wÄŽ%e`rõ¡š]Á°‹C‘^Z ¸'ÄdÝcm�Îû¿8%Rî°O§á0"øÙb0Nij<çSZOÐs÷!}i²Ø¤ó¤õŽíñ§=¶© £‰Qsšgß„öÍ!Hg…u~§Eº0�èì1³¶gƒóަ#/G÷9`Gç”…÷ÖÌ¢�|]LŸqwH¼àK–1}ùd§Q.kŸZ Æoð¤¾é¥\Üè4Æü¯hÁ?á¡{9`Ɖ•±¬?¶Øk[ÖÓu,#FÛ¦~zÓMkÖP†¹fôÅÍb…!ö•é­u­v5·�ýMNnȼ·Yw«—©nTÛjáb¤ 9=>'Ø�å1iïo[­ð¸^1¹œ£¡²ÃmmzµàC ÿưWJX¦ÿ©ŸÊóöòÿr[w®~*ÿþ×;ð8¹öqÒ¦¥œ¢¬LÏÐêï+%öë‚Ø¸û0ÁÆ"�pHîÖ¶@â}ñ©gë>ÍFý#lÔ"½#øß“þCt£cÀ‡ˆÛ©ìµy¢Óª¯?g¥Ïõló||:|VF´þ{�üzeѵÔÚ�wQÏñW^È×lvÈ–7~l>š»=¶q™>ç¤ßóiÝoXéûÏC«øŒc¾ogqÚÑqTã¶Ö ¡j“‡;Æ °¯£�’»ê2ÓtÆ¥�Þûé…é‹^W-ðyY}¥%�q3OJ}½Àãx²ç8Za¸¡�Çâæ¯Û?Wðá/~~èïûßp÷ÔnGñ7 ×ýf§t[¬Òs"í`–ax|Ãøa‹Í»g�1Žœ$BÕ7,òj P¦�v§�.­9v:s;ºiì¼rÂ…UçòZ:åÿÚ:ê÷ •ÚÅ/Ñúgö‡%Ñê5Ô�鵺H§­ß?mˆáŸêÈõäv0µtëÑ1¹õ¯·…õGÜ"—F8&OÄÔ‡³Œ¯õE–W˜ƒ�N4ïÉzH5ƒø"b"Âô¸-^§¡Ï™b—dÖáô<©…ÆÆõÚú›V&(7d¨@¹ÚBvˆe%í6ž©Ï§8¦~ ϾARý¿�AIÚÒ–°Oå/åËùE¾Á€üN€é‹òá›jÿË“¶ÜsŠIàDiàV敆lüqY¢‰0¼¼êõ<‘E›¿C¬ßHAö©#{YfÀy’¥ÑeøŸôAQ«TÅòoHÒÕ‰l!¯¯_Å_ZsÄÑ·³;f;ªÃ©ß^�g(ÿˆ!sÅ9�<ʾHþ£âî�xHÏ”m©1^qæ}Ž×‘�¿ÏÀ~ÁÝÐÀ]ýw[)/V_:?õ÷SÊdþ)Ü•±Dõ /äõz/õiaï†1¤ð†¯IY²~�”õYKýz'”¶(2­3¦vêÖ‹ÊÿŒäVY!‡‡ßø ÿ2~6\j 5Žs)aé­Ù8L%?à:‡cª:Èi½ž=ÝðôQ’o>;ª¢)Û4¨µsm[ZK¥íïo0Ucòññ¿þ×¾dh§·–R[ŠÌž$¶S´®5o®iïT;�§u¾áþýN“ÁóÁ/ÂÂ�Ð#EVb�x¬} ªˆáe1åà©S–Ò-ÖšyÐqב™*¹ÂCír3v8OFÌ.��äêÀ鑌XoÒ¸n Nlñ²‹™úiÄÜzΤb�–z÷ Úë�§¥vövüÑÏð þükÏ»þãï•wrúz6ü€§Ú¯7<4>ãž\b*ì[Rž8-QpÜ/GKøœ¤°gM;éü²ç–O(¨±Jݦo(Jž í¹ÇzÙ,Dô=CMä Öû-Æã.?oÚ~xˆm“‘#�oÏüÅ‹G˜,Æ¥ÅP³vÈ`žD;ĶXØp2(Øéi<Ô(JÉpR‚XìȲ{;kŒ�a²Óãäp�a$†- ¼ÌIGé;\®‹ÖÉ)F ³…)x¹ìȯA —Ù ^\:k¬Mùü‡Bšpê9¶jYœg¤tª,7Žî[šáI8Àãx<ëï'èc§O÷䕜^µ–]´]|»xØiºÂQoïžj¶“àr=�y5='xo½¼q©Sà3ßx„&Ï×jÍ+ã²—YÞÍ3ýxžc5Æ;‹ÑÃdÎv�Þ}ýX=ìóòVf5!8ÛNqÞŽ± ö²dvŒëun%OO#­fG~~hÿÍV�eâ3Ž9[×0hl«M§‰/jtŶ(K ¬ÑÐqÄØÈ¨ÐãêøcÓãæ¡‘ôv®?$?sDó1� †'�ùe�wõ€ZN±¿ú±ùò[so7,�Ô‹S"›nU„VlÕ¶õÌqUе{,¬í ž!lÁ°ÜP_=œ©ßÁˆu*ˆ}jÞvzîÓ ãŠ@ Ó�IÕ)Í#52ãóÙ)Ϋó?R ½äa =¬÷Ó=¾Èõ¹Ã±[`®‹]:¤n7õh!“Oð [×~}9½Ïêõ2­0gˆõ–ôúµ³¤0¬‚úõ|NüCÔ›R> ~�ºŸàf‹Rg�‘;[,ÛÍ 1‰O‰!Û|e?½uÕöŽRív"aøösÅ<é¨xô³ñ^(ʬžj:ƒÊÕÉN½üòÁQ4ÕœY%y½fmÚî½Â(ïìkóÛ¾è0�0ßXX0óök±îóAóü zJÜ�É¥à‹›�¾ñ|Ññ1ÕE¿Þ¦Éˆa±ÙõE?ÐÁi×F$Ùc@nim\ ä<ëæ ‚ä=3«=l’Ñ^B ëËÐz=½|ƒ½pTQ^즑Éëˆ�¾ÅŽ�†XGîÀCqYæ½¾ëàbØ?.®Šì=üEOMÖ˜˜GJ }'µö}8�ãyMÏÛ§µ�*ŽWÈfYœD{$yPŒøØéðÏ’Õe1�1Mj<êî·/Ð8-œ�Lliîmªí¶JÐMfO6yáž�ŸCÌê¡«G°³‹ÇódŸ†cîãÈ%=`Yê÷<ܾ;¢hÈ#ή ápqÏüò÷£äÛëˉ�¥Æw]?©ÏOî ¦×Àéä³þ‘$%G¥}[¬žÜ–€Ã“~ç×òeKpH ÆÝ<Žv"Ô,ü>¢ýL®bÅ; }ð\<ºH£Tðâã¶”*µFø‘$_®M—ctø§Ciî:u°+ÿ„@â³wäQz<æÊÔßgà _€Ç±Ì.'ãnÊqa1«ÂŸú[ÿ„r<*‹BÞ¸tjå—-³ñ#ð(@ÐE»×?-= ²Ü¶²í^‰VÅt[¦s·AG”Oeá 8DÐѬˆ'g!WøJKq}ïùËÑ;üýF*úÍ5Gzd^%È”ª¸êi9@ÁñÆ3™)©yÇŒGf¸ÝW�ô’áEÐê4êsC·þ¬ï9rºIoýÃÃu“É·ç Î2®ýx ?бL5ÄŠûé$Ç¿æP¥xFïÙI¿é�÷n ÞÜ’ðLÚ”}?÷~½Œ¡™,–¡¸2]UÑÅ¥µ\L?}Ë^ÉW=É4ÿŽZp«¶Ñ3\ H'þ ªÖýûhñ¯_ZËÖ�â=œ6÷3²{\ r[¯W†tˆnÄ0öè�Ú_è꺳¼ø�ä?]cÎÓÿ޾³RŽ·|[ŠùËj“¨%‚¸üþy§è!þN%q‡fÞ½.)äòÍãˆB&c·k;¸6í‘„+CÜ]Q9À… �7/‚>ª¦Ì}‰’ì•©U~Æ;œi¬% oÅ®È?'“Þ·¥ôŒzE:ü¥<\uLw!ò}ùç>SiW¦É+=Ô™lT®}œ�Óñ÷ïJþÈhFs‘ÃJ´ÿú¸þG$”=�% LA$I�Ïmÿ•¾ç¤U]ÆÚ\A_£Úä¯òïiÅî½”|ÿÏê1ï:Õ‘åÜr­e(OÜ(ãŽFÌŠ’ "�ç†aÀ/Ô4_ÂOczzCf/Ûa(à@3Ŷ}'õꊢu”Ç¡…%”—Œ&בžœô„öË/Íai�¹Õ^GÐ.¦£IˆÇrøç?÷Ëõêé²onåN`Ęàrú�Õ×Jw©1ä~7Ù©]CŽý�klžEÿ+È8�Ç '‹sþé±*[,¹ý~²ãŒ°PåƒÇ…h¬BŽã)tů�¾ù‰ãžà�5\Ô£cþóßëÎêë7Ð;õ“-ñOîTО¶À�ü SG¾í|ÇþbœÚÊvºóðKåþ=y`X̰Á<’ókzì¹0\á öâN³µöÄ ôÙŸ�”Ÿé}^l4eøªôæ� •\A}3.8¢?åÒ{YìÆz=N¶‹-œ‚YŽ2ëQäž?Ó/{ i�§Ö'NÇ\5†ßj1*.gò“ñ°£ž™ä…/Õ3¯üzþºƒïœü %EÔS~x¼~Ñm»Ý FL4q1Ä6ýO/ rÏÎfJà…=öÝŽÇRú?ÔwCìÂó¸÷–Œ:©špxï:áý0–ª4™Ü'� ©žjZ<<OrD§] bKé'NY5O;Ë~DZO9ö¤gUN?N-´­wÛ2/Šl�ñ(I,¦G\ñór¥~sUÁ}9ÝV•dñô8ëŽÿð~Q2ýÐSäqè(ñr |FÌIŽìÍØÒ®-Fl1�bâù6n¬t¿Oè ®¥Ñ ®R÷Žáq.뮸Zè?Óo£G°h%xÕ˜êp ÜøôSË —´Ó{Èbð@þ)éY±ØŽÖ?¾¶¯aV�ÖÇ”Zì/q1Óbœô›ÖH¶ç\ஸëyìîTÍõ‚-ù-6ãCè;.ÄTɺªàSëZgÅkœ¼ç<þñ~[µÊžh µiBŒày<Óï$!xº6®á¿#`.¯˜\•ƸñµñŠô‹ÃÃa÷Ly&ÜAÿà‘Å,ƒg×�‚Ïõ&Î=À+<û†¹ê‰àɊžŒ^Ž ÃÔ �¤Ú¥\»©Ävœ°Ÿ>ºAÍ!vQí®øš#íŒñ¯#™æäïù‡¨zT|O)«çÂ^�ó�®òõ%Às](Ê]z«*ý¢þ›aôRëžM£áñ�˺1—ØŸ¦é®zw9ÃCq�ô!§ŸÊݦ˹¾S9@îYÇ ÏDó¬�ñ…Ð ¾ Þ�ñ§¦®É¾Hú.&5øx9àÇë ±÷pZì„ùÅêWþ:/ˆe6MQO ìi‰ùÜ™ÖD[¦©ïöòú°xt¢=>—XXLgäkWývô±\'5vº®hPó›ù.Íp…³˜bæwÃüiÄü¦áGÜܧwjb“o‰úÈ×ãɹx½÷õÿÃ93ç~­$GŒƒîSx\Ú< c—´0v…^ºLñ¹;Œ}QuÂáØjœ¹ÕbëKf›\¸Ç¨àM¿ÐuÂBüŒqàÞ0L>�¦Ž\‚—Âç’,¢¯Qp*¶zÔmÿ]>”!¯¯kÅI¨Î¥zóTËöõ»Þüuq•¸xsFþ›xM[1»o_Z}á0n_”8ØŸ˜'ŒðÍžÒÙÆ ãþ¾ª¯ãÔù‚Ñ�NNx™Š!ºÜÁw˜6r˜&p™fÐíñìÌ+ôßõªx^’GõŒÓɧ—j鶺�ïnîC´Èâ¨Äô·»âý�v´nÚÞåb1íCõ4¾‚>Êv}HBÿ”ÌByÒt ¿.ðøûÄ©Út`·�–òsñÿ—5 ü¬ƒ^ظ·Ä$œÀm| Ýà‰Ü÷Ì‹'œÞer±}6Ë.`ØŸ5¤,m:ÄÊóN™ÃÔ¡à£"�ÏBÃãUîw`}…¾“ÇÕ‘Ÿ÷¿ ïBÃTYk�š‘÷Q½‡¬à.MøfxϺ3§B_Ž@rŸ$Ò°/ïÊ5»I&HîúaêõA^`}ÚF)“�Š­ï':¬û¹;¯µ‡Ë Ö—wYÜ+ ÏC~[0ÍÏ]Ñžâ¬üZ+Se%äcéù’8 W¯oKú¤Iú;„’ÿõüêt7c–ÒW‡PTºBuàRv¥çeØbƪ81¸¢ÏÎ0IW*èNGÈ!µ&'G­¥í§®üËq5Ç€RÆÈ‹�TfD“�º„¼ÍÚªÂ>c®íªF#è¡ þÝBFcÃ3 S'>DáK©vÙ7˶_É{Ú=Àœ DDµ Ž÷޹,Ñw‹4™�¨ÍXTe1–¿ÁfÜåÏøyd«‹ð¢ÊšáÖÁ3 è>éš# A^Çy}J�È´°ëgnÚÚ+&Oê"®± hI[}³à*íï˜Ü#©ò<ÔTßëW¡–�4éêš#£à`æxTâúÆ‹27å;œÏÆ“=˜¾C® UœÄÕÖËÓ¦µ÷òàíSŽý~,ÿ½µžÑ‘»o€è.þˆ-EdŒëÁdYþ³In*%jä?›Ó†mé8=2ÿ¦ºJ¹:ù3z½Ä½|Q¦vøï‡ò]ù�¦ÚÃÊÕ×6=–ÿ’‹+°o¢ê÷æ$ÿ’X(°�tùÑàáb›Á¦:ä°lFá¹äeÜ sz“ú’A°q×ñ4 VÍä) ©fްí­ÿg”¸\˃)y¥J–vcœ²áTºm»àÒÙ‚66ë’Z%°;žVµ5®êU _¸|$éæU–VgŸürŽ„q«8F’('N¨ê×±×VxúU±’Às1UÞˆ�8«Ú “+}*ß�c™ÚÖ úHßÉÚóä½û<òWyë²MŸòsöÐØd(שƒŠ—ÄøÈÊ}üþÿeü—„üáÙ°è1*òv Xò°%Ç6jÝ[þªÇ�ü}¨¶ �[Zö#é¿ÿÚóðÿذ¼ýÔ†\ÿÿ ï6º:QáYeÁ ýÖcâö�¨~%ô“Q°SùÞÔ�oN³K‡£¼îj^ÐÑËOÊi–K}¾•ºý¡·ç¿;8ÜVl1œì«óþ\®—ØÖÍSl»7O­÷ùöá4@²K2¡ú¹iÞ>õ´^zu®Še«cb};WÂÓ±å&©¼;=×ãlo_áIù�S€AGJŒ+ä?9ܶœv¸ŸÆ¹¡ø2ô›ï×_?®¥þ½Ü¤zƒïS¨ƒÉbÀ-5ÿ^¡~Ú_Ä1{ø=Jž?‡ª¿öÛó b«çxê)¼R쎳S«;‰«óD®< ��H÷)øÏ‘^7ج.5ý¥—ÇdÏß3µ°ƒŽãðP\ֽ˧#ó”pb¨ I TN¶Óêwù4–éŠîÎ�hä°ÔƒÖÛ=I·á“$!cX®8ì�†¢¿‘ïvyæ»Íb߇ÈÏwÈé©DƒÔ´ÀƒeœtÔ»Ž:®L/IR6w¤ªMÓ<«üà ‡¬BYõÿ>|¼¯eÁeÇcQ=nŒ“?Ô±“ê�Ë3àîÛê2Ñ·ôª³¸NÅÔÂ{=àû;ba� 0âT”œº¹gç •ìÛž_Ô3g…NºP4éûi‚}›K0¹Vú´œT¾†»}q‚Ö®Ï µñþ‚ØÅ#bë\øÍþ]1X9[LR —ìË£ûx7núh׈w~`æu™"ÿíã²­=sÐE>~Üž§·žàšRÿkÕÁØ—~Öù× §ž{�\¦<à;�‘â6íº˜ ÍÒv¿ï,gŸM�’g{;y8ˆí:âýb±Ü›4ó´@�ã~A;ltþK¡ü:ÇO|pòoí[€¯áwUÏ]æê‘º¥¤ÃMÂsr;­ž�‹4´ÜÒæQ¸•4�0/3Eì¿2Ï‹âˤpÇ¥ïå+�ðí¥�½¥fæñxRûtûDØ„1bjUœ`æ®'­Øǽ-3q?%•‰ŠN—>…N�¾™>Ó÷£�?& à¸ð 㬟õ¼Oe 3<ÅŒb?²Ÿ ¾×7{\=Öhb—X÷¨ÃNq}_mvf‡\a¨›/NCE=M7V²r¬15IÍ%ô”Ð ¡»';þ.¬² '0ù…qÆðùüÐz^ñ%¢À3¯~!¢eWÌçš¾¿0Lø@ØRó¾B>­?:©;)wäñs¬v•Ðýíg븳iÓœ`txf»·Ó‰?awNh¿fÆ|îíªsßû95Ì)€@ËüL¢Ü ^ ÝÆ[Îò›³Hÿ>/&Ù_ÓÒöN^T³¨²¾×�2~°Ú3Œ½g’ðÍK­ö—Ÿeœsžü€‡Ô—½ÙE3𦶃Cs’È4}AéÞ”R§�Žèøh°‘_åE¢ü¬WÆç±|k‡GÏ#Ô¾?�ð¯¡ß¶C¯:v�÷r‰8p'oæ¡üÌáßâÓéŸå­ }¬b$»�©0žÒ…ÈÔ¸Ôë²àÝñê|f+mðû(UÅò»ßТ_UDîo߉^ú¬#Ý+¥‹ø§©l7? ¨^j\þ¨)C�å¯A¶¶% Í‰»H{ù§„IÊZ20…Ì~ôïí…<±Ê´¡Ž¬ÛV2S¸â„ü€GËöü�*þO½jó‚�A•̉•)"ê°=ê«RG¢íƒ‰o�p•+t"½òÏà“JtPõ`ikå“®lúû#ŠÝ*�ü@~[V:uIþëˆF,Ÿuª¦gý#Ï-¨ÔGx�lT#Ÿð¤8€Ž ¿á1I™q¨âj¨q'»]›þJrãµGêÖØ ÇÄ$Êåž¥ÞØ ,H:Ïn�`ÃÛ�ÀKe�»±Š‡÷ UcTfO­g㨌“ƒRmŽ$¼s‰xÅé÷qbêªXª¬��;À#§Š·¤ßRÍ�X<Ã[J.ïÇŸ)‘é¦Èû¯Žê5ž¨½žÀLeñÏìˆ7£ßíƒÌE�eUÝ6² xQÛú#|8ó¹S“=>ðSƒCõïÕL�±ÁÇêŒ�PÁ!ºüÜ,vÔ:ÔúýïÝè¬tøZÃ�m2O‰G!9qµ{n§JòµsH�߬­ÅG]UVÄBàÓé¸îŠBå:³nýuÞ=Òäõ–p@f;v(Ä~’ˆ«Ÿ¸a¯`…Çwv¤³Û.ìðÓ?õ¸ ïÂ_Ç>ߟP˜ûmñ`°~ÝN÷>ÝÈù]ø6íõÌ8å�Ç¥*&ŠìèÍ»ØìæñáHØ[^6 ´/ôýP%ùã}oë`ƒöJÙ†UqóïnRá»´¼ÿÜëü¢^âWèµ?'…ó·Yi}=QýŒ™; r²ºaµ«ùÚÉU�Y–¢S•T™¸fñp¡~bêw£Z¡ÃÔ“óä»}Šñ ~GìÚβí”Ú©\8u{}Ù�£¢á󃺋ïàOÁÎ7O�؃®\ŸWª'Ø€Soe;eypÆìÖ”I•€V¦@/ÊÑ�ô¬õ„aóR布gÐ ®ú Cq©òh9yô”i³3Ýz\?ZlÁ• oðØû�}EÔàÔ}¾k{o#ôŒïZ»ü'e*£ü²yÀíYàIÎé˜Èucñdän#MvÇÏi§Íò2÷Û“ñ·ñ1û¦²zvýºê x¹Pw°”Àu•I²?Ã3oZ/¨/¹Ž- <ý NUí²Ò„»ÅñëÃ&G>×?áÈEê¼Å<ôj ÚÒÅU|É�mEËʨÕké0RÛ!#b/Zl6¡žì·ë„-ô™ª‡ÏãWCi}iYŽ7�öÛ/bðòmˆ2‰d§Ý.#Žu�yOŠ,ò½´yÐíâ½Fþ°P˜ìç'òj¯oðØ8—S‘mÜú�–B/#”M£?•¶Æ^Z€ÛPæ'’ù>ê>èèê¡ÚóŠØrÁ–ŠÌT;¢on˜×�¯¸‡Ý8s4fq[ªÞ™Çëé‡(-î8xoÈ׸ü¤:k¾®uì.Õ»ýó¢ vAý¶PsƒÞº|*#©G¯ìœJGv4÷mbêÒÆøõð]Kpǘ—’ÌÍðø;aýÄø¿Ôy€‹§xƄ邳æ°¤X�wÄ:Übûíú§ÊžG�g\ayVþDõƒÉ/ø“*¦OÐqÓÙ©½ªn¾ôñ?¶SˆÍ£r•·Ggv˜‡Ú)½5V³ëqžÑµËã8Ä膇{A¾+b^Š> {äè£dÙÍ|–@ó@¶/¿VåËó]G¾'~ÙÄâ§Ûiìÿ†éÊ !£y5Ïj…ô‚/Îæ_ª¨ç jX*_š~-k <‹eÈZ¹·{»}�è•Ö:Œ]S¤ó¾fŒùü(¬ÜU»· AèéT¯>>À‰HÏ܇Õm EëUR3q¶¿^ù^{Žž<ÎáZRžNßîsÿ®i‹T‰_Šä|B-Í]y3Lm=Ï’Mò�Ì…½•GôiØÉ”¡tžSäY¢VvrÊò:gÓdh©_iSãè9T|V×N& ;)噯#´AB�~ˆÁîÚê1£rÔ­G='þ©Ÿ"›‡cK€ŠuÙ…*‹…BÕ3MŽkþ&}?G?7òOQÏ<¬„ëo#ÿaZ>Éíå*ƒÕÚOñ5xÊ•÷ÜX"¨M?#¿ôä9Õöø>×DMš ÛóœŸävKˆjúRSª$¶b0…*ïg€Ü‡œëð²Ù(€œßÍŠ$@é@gGÌŽË×O›™šF?i‡ ~„$±bõ1*?žç�\Ÿ2SWüÉ·<+�¤ó,·¨…�èßMñe¥îï?¯ò»l†<‚*hu+sÐÇarÄß™üg“†){|¢9 ÊG* Óu¡â2þ@[�±êMæ8¼‚¬²Á ö¿ç(Õæˆûe:R�šíc…'.Ô_ÿzµo©¥ƒ×èü¤�ñzJ’Â…‘6=È=ˆþö¿½/ÕX :Bå¡S�²Çé±L$³žå–Zù?â–°»™üT,Àëðýw’¯7à…î¾Äs74ÉÀ¼Ê*/¥_éÃ)q;Õ‘>NÆl Ù9¶¥ƒV›'å÷öºÓÝŒcËæ¹çA):SZá ]Ê¥T^c7…Zø²¯!~J£ÑyGÞZ~m Gu>æ´t´Âá.–Tè+DQ˜Êü?ª}ÎDþ+óf³gG¸Ôl@Pé*™/9ù+œÅû—]X¥š™²¾­¶,ί ’é?[@ -scãÂîa|ÛÑ2‚:¤µcqŠÍ]™ß:ºÙ½k*&j–“jS¸«òø?¥j�ZÇ¡Ý3=ây5̉U¦‚\Ч$;ù§X_ìV}þñÿª<Û±Kæ´ªÇ^ñ1®_ðPùimˆ ƒìqÖÓ%ןÉUlÆRå„ÓI7Ï8ÙvÊþú·0 Ry¾¦ aÉôgòøHJrýT ¯ #ë.Ûf°_—b,ÝÞôùIñ°¤½.ÜðîþþúpÕÐ}_;—ˆa8ýóÚ©¥9öÄ ±ÞÊÇ乊AÛ+ëÝõº£›-¨ÂÃhXci¼6¸v'Þ>ÆÞv?êRõú1�þ‹µbÙÐoɳcß"Þžcç’oðÔ¹dÏêJ#ö™Ì�Xƒ…/¾„òŠ�ÏKòXû©®Ÿò×'ŠªÂ®ZÞbm”ÉÜ~MÜž[YÄ®¢bˆzÖ•ÓjË©¾£+Æ{¬µô} ý(ˆáÀvJ4™‡Ñèðñ‚a |�­ ÆéH{ ½-M'z˜Ì1tóÜÊ�Ñÿ·k”IÒj¹D‹4Û†ïp{_Ô$ü;NM3>0Å,Ö—¸`|eAkÓLj=czp„r´ èF gÀ+Sé€vÛ±Q vä÷óÙð»·gMå —Õìú€Žë ±/srì÷à›§� îy”Òï�êbÚ‡ „§¨… %‹%t_êÂË×wØÝé4>‡Oö‰˜>»Ÿ•h§{í^ê˜Õ£´b<Ëc�9«tYƒÍ(zÚêÙÆEnÁkÇqˆ1eOð4°X}†ãÚâÑ›J²M'Œ´žŠË±¡t¸/åÔtC" ¯è˜qúUù]ÂÓ€2®õjÄ8zY8”!ëDÒ ¾ 7Z¬ßO'xÝ'/£L·“z*_îó­2½l§Ó ŽNÛïuJ!¤vÖ ~<�oóˆts¢zšÆ‚ÝÝ!W#6­ÿW«¡�wötM(1êJFMÛ)èûðÛë!�"k£÷b{í[UÌã©¶¾ èÛá ×žò�Ô!K£ó0«­3l±ÇÊäÜñ9QŸ�L�Ñ«–è|óK?pPOO++aèÔ�Z…Ä®f¯ƒ©m¿¢[½©{m ´€OÄx?¿#æëDaà'úù¯ÙNÇ^,ü ºÆB±[Hø3N3_ÑÉ!žwš/x;—[WµŸÞ©¾ÛNI�±]ëX&-Š£\郯ÙòØ4»§Ãº¸½î‚I‚õ‚ Ë¹ÆºÞõÔ¶Ž1tjÊònž¶Î{}ãËÐ¥Kå-X½á:_0v��îù0>Ër³ø¸ÝÞ"°ýôì¯ë¡Ä¦ ßs|žÔÃ"a!‘Qæã®8¼�¹¦C—_¨ì_Hh–Â71dÐ_JÞp 2M䊦†´Ü1jwÔl‡´V!A·wÅy8á‹äì×Nð¼ÊŠû¶¬4D~ÅáÇ„�åôìï<&ýtZôÊþl÷ðÝbµ«à•Èì�9_çÚm»·SÒS®xýH‹éˆªbØ›l² ÃÞ[+¦¨,|žÒjн@ŽqkðÈx&+уåŸ{ê‡E#®{O¿—òÄ=Ó×5¥ÜÓÚçg=\«•lóøþ9bßoþ�ðè•ôÜK�ár”x"î,µV—ûZá8žajF~™ÎåÚÅ‘U\™ÌÿB.¯ƒOþ—R@ÙõC9.)yÅ„Å.�cÍò ™Q(òÓšxL�Pä­‡ †š".y""¸àTó5‚ý/�!ÞsØ62™ZP-›)aë£Jcã ñÁô{ø5²y¤Žä®Ó�^þ}›ˆ:íòw•^KGõg%¾®}N‘¶\eX\9_vØ}CþKýN¦驞¸9¶4HB‰\�ΖPm•M‡‡#œHü=FÌË—GðA™ ﻺ®=¾ž�Z:v½dÈúÍóCG�ª¸„EТ�Po€Ô:M••wœs¹d̾åC¬»u·oâ;m£$³‘dÝWø€eë �²A¨;A ¤K‹Šè±Ls_$9Kz‡ 4 ¢•æÌ­nT}~[wæ /,"‹S©=q”8zðW61líÛ3^e踵;&máp#–ÕöfëØ[âëN5}zǃ¥Âúï&Ïr�4Ö÷áy+ÒãýüËá*„ÿ ê]\øº÷e4øÂØ&”1='ÿ½Rÿ7êêÊ’kÇwªOux]�ÇtŤ£‘œ‡ôÒ³4§{—5xætlvc¡²~ìÐB€XBŠ ˆþÚòV©×þ´óâ­ž¨'çÞ@d=ÁSòŽ%ÿ_/ ëMc2–NHŠn|ÿc¼üüGõ¾lÉOë?Õ3iøÇK䟜âú¢§0oiþÏŸÀ§ðþ æ¾ô\ˆøðvø±ìx­ïع¸ëéª|©Ä3v2¡™êɬÅ`ár ò‰2£†;°ëßôöò'Ù‚O_áx(f`¥x°”¾0}7 *ÄëR”ìž ;®ñ´Ë„`cñ¿ž>@—$3bMI Ùx„Ç¢�² ö#x€ðbpºóh§rúH ¾žMàt§ÙuI﫾PÏ9“SxV­ð仂_5†åzÓ·ÝÓv»—«šœýTpr‡>éìš_Ô“‘®Ø†§gÁýrÕú?ÁÇa„V+ÙUßó[>8¥;êƒ^]�uÅ)¦¤Üà‰y9WþÈੇX\|ÂÖÛˆeË òŒSgy?�Uê–a9TÈ5·YÈzHj­Ï<>çU=bø®«ÆF²Ó‡·¸[‰é¢ü¾Žð\,–âYµÂ“’§Ä\NHËì¯îüîqI·+cq!Ù¥�¸åg§Úãà7ð2OEiù«;˜k·}v†›>L7¸*Øñ w øKñ´;ž�ã£x*Ã¥hóTS}€,« ¦b»Wx( %f.Å™2O…ºc¾—#÷.øt‚k½‰�Oœþ·ÜÁ–/‰��Îj±ÖV-FÌ‘× z&è l÷e‰yž˜¬z¯xXõ&«¨(õãTl‚*v‹ºÍ¡îË­»>Õp¾(¾·»zO$³Ø‡§ö*ÀêÎ~1Ÿ¸Ÿ¡¯Æ úgM¸í™7O´‡mò¦pè‡=¶¡à´\Â)¬ÛD�ªÌî[”Ÿ×!XÀ…L®ôX?Õõk—ÐþZ"^—'9&*rì§ìnjì<$X^|jà´ïÈŒÅćíÔÌËë ˜¢R­<†76̾ÁîvdåÈ|û—>›�ãäüŽ~< b�¢óŠƒ¼Gƒ«ÞÁH æÞ3w«ÉôÁ 1 ó³¦Ýî@¾v©ÈÝK­¹@ó§œá´;°;3PZÌðÔð3è4€~{ /Ùñ¡HJ‡ŸºÊˆ7OIÄ�“‡èc|ó9é|ød½ "Ä^.ß?YlP¿/î7#<3·Ó‹÷Xl8f눉÷e�p¯1Ì™Æô�bõt“Ú,qa~¬^¤7Èï» <ˆ4 =ë©Vûµ�ý¿Ú0Ÿµ&ÍÇõK:òìÑ×§¾ýu¸UÑ+¿{èmóíFoDûÿתmþÆ'‹;I¤ sñnÛ–x"ßÝƬö~³Ëúi)÷ª}xíÇ-bï§`'špÒïr@·íÉŸ´Ÿ6/¹¨g/Æu˜wÔýF檅âÙøJöAãõ›­UA±Ùvªü‚þ’Ùó×6²Ç�ÊfaÔ/uSó(íÓίüo³êñþ*”_v”ìOô|4ÏÀ˜ÉO~ËöAY†öTá>löœ‘µuò´ã;‰¹…cÏŒØÃ|4·<�ˆ$”}æƒÔàîèH¹®NÿèëK}’5xõÐW¾îïàÞã•nŸtÚ*J†´gÚ8—1L9JBCbõíe‚ùRÜu·MülñÏÁ}µiN.$âk†é�^ö.+Ü„×S\þ“œË×ßBfvcÁ‘o9k²¶5/þÕÕx¿IÞ H‚/m¾D›ÊÚ\»Ãî¹~zæ‹{þñíjjõù¬2Àì H  GÉË™Uл®ˆ>Ðܯ¿kUdÕó­H‡Õj¾ÊË€·ñ7+-½©ðhóz¤}ÕT'TG;OûWß 0×¶ÅýâÉKÇ¢Vû@âè 4Ƶßl&µ«ïi?@HxØgÆÏ”- úÝZü¥kþM¯”¾«º¡|þE’�¥ÒßÔmC•û—»�ì%› ab”Ûz þu˜Rÿ»KmsšŽ(ð€¹ÉP‚Ó»nò4ößôõIÑ3n’aš<¢…¢m!júõY2OùÀ^ACÒß!úG:ÛçæI¨Ë?ð62Iº²æŠÊ/å~–福.˜Žv‰×©‘ÑŠ{F¬1ÿö;È�jª|j/]En_'Tîü—z¨ÿö³‚-'ñq*Ÿäôü�Þ®û³ Sçôu¶CBQ­æÄé�\þ!ÿë „|Qþ‹•u¶»¼§+­}¥]ÎÖò3ô„i/ö(Wywø}MI¹ÔѢ؆Ìy4ü?CÄ9ê ?žöã´Ö.r= c­º¨è™šÝpVZü©ÖßÀ¯@ˆ‹aÎò.¤�fªv]¢r)|"…÷ïå°—\';:K›Å7òn6ÓÿÕgäŒZ›øÎ4¹°÷\^ÛGŽ#!I<ý=£Z]V•Ç]¨ŒsJlUðs¯ßªw›�½[Kϧ)Íóĕ׾Îöª6«ürKaNX±[’£8zÚ˜£ÿESí¹Øf—<2Û•yÖ>AL¤'Aœ†I=VÖ±©ÌíM=¯èS=‹ä ¦½¦Fã0¼²õòC=Aøÿ÷ÇÎ¥òúÒ¯x%lgÞ’-¹Ïûvšüø»Â[£GÞúÇŸŠÿæÑ¶_`‡ç<Ò.ðÜ8­Ô³N,êá%ü'´,§p°pÚ9µÕ§å¤§eŽæ‰…�ŠõO�½6¼œ©™„„Å5:ÐêhÞY=—UñåýÔÌÒÛõ7/Ìä{S:v*èûMŸ�(âDˆ™ÄÁb8„TSÉ'b¸�àóã‡Õý©|zvÁ%6züÒv¬o«Jd‡�­ax d;íkÄÁ-´í«ù¢ž;;lï^à1x}§ï¤õý׎Çðö3õK¤áŠ­¬!m=m±¶Äð*Iö˜xû{Û‘]Öõ p°ÕÄwJ¬­ÏÜñÍ’<½•L±ŸŒ¶‚ã1y"þuÍ]“yLÂQ[Ö*�yÄÎMÚŽ=:ß J›dœ­Ú¾ñ®í^_ßÑo'ªŸ“ ]){<«Ç'Ëò¼Â+-Ôɨ§ŠŽk:•“bû Í@ßជ¶õÓ)³¥uј†ŒXšu·ÎÉT—�xd±ãn�»´²c&o9©Ü K«³öò8]𝠣0B¾Bh¸D''3 ;=¶o{ñžs"´ 1%Ëž¾m�Þc~Ô+N6{ôa;Åsµòc¡B‘ãíf’µ�¦7ôiE€è@™î§•Šîäni…¢Æ °T�È{ãw>;ÌÀ_Ƴ«Û'¦\Òç`è“ÕbiÊËÜ•|ÉO4ÙŸ{è’Ð.3²FÚ0\pÑX´ nËþâUd@ñ�?W•óy‹eÛ�ú »N“¾Ÿr°V‘jŸ®è—.“ÖN‹µ8ÀCy¹ƒ_²‡StÝOQÞËAŸ™çøð¢¼)Ÿ8ž\[ì¶5ó�ö±k¿,ð´gô“ÊÆG: ZõÜÄX¢Ùéìbÿ75…1�±Ö¬åËn—#%W‡ßL}½©¯ŸGòêk@»óðuêØúÜ{|÷RéÒ­]ˆå;]�>ÿ=ƒ³—CžY¼gÖêêѵ«=0üZÔªÞir²@¯Žc»©W>õÙºÇN›Å1ž7tˆ9´.ClÃzVáѽO76GlÍÝ~}•½¢¾ËEª^O6ÃÓ¡žÚM±¾¢Ø”öçÄ\ý\ ¼=§}Y3øYLݺBÏ]°ð6+ìwèÑ+Èò’NÐætÑqûýöŠ9ôwf[µs¼û©m8˜žMñkî¸*Ýf³ûF—0]¾2ÞÌó_C^ h®K£œÃ\FÛr‚®¹%¾7ô,¶äŒÓ­öµ¬uk÷½6”˜¹°Ã£òG‰‰ì•|ñÆG¸·QV×øx…M®cb*T/“¸ªtÃNYiÓ·4ÒQòe-ú"V“#jüF&wÊyœ-ß!îI;yØùúÈâäë8z«Ö³ä£c\JNÉ8£Z;œc»2n%ŸÔ{�§ßzh rjK®Ç nÐf¡)ýzé ý©=âlSƒH,GÔÞsR �—“ðJÀ?çÎãpÏÔ,Xgù½æ#ÒîHú÷½²µ¨}"w£·ø¦#×*ê5C\ØáÐz�uÛœ0ü*}¡¨*²²µ�ñ9§XOõ(§ßô¼ŒÂ¹^Ó#z×…¥ÒF:¨¢AÅ-jHý|γ{VµÜ´¢Úï#Â�ºŠžÑûT:FÚ³•©7q ~ \¿Ôp.á[ôpÏâZœL\°åCÕªÇï�� |wÞ¢á�Ü£ÙžpS÷0-¶Hªöä€�7±öŒU‹~tz,L0<ÜâéÇ�¼—rM£4öŸ»ŒðÝ¡ÓÓv”áÌ[‰Úîr{ñìµDeA~X>Ýsä�ßkGaªZB¼*èÑž ^å…úY•zª¼%l$þ¶UpÌàâQ?‡‰z“Ç}òL^ž™ˆ¾!ÿt”$ÝU}uÔ?ßî·NC¿ÉâuØÞWÈEûÉw ;ý]‡1vÍ…·óX™TNòRå?ký·´r99ΆÔvÝ“3‰:¶‡ƒôn¤÷’š!¥ôð Ïê”M„{žu=Â'Wễʽ Ë÷8+ +�*‹}sÓÂI¿¾ó„ª®­@:…q­J.à]ßK•‘ƒ”ÍŽ7¯ì5–oAPº<É—�¸…QÚ•ÞŠ×1µluæuN½~TcÊ1âö·h »ùlKU}š{00w§ºà\qñ:: iðÀJ¶†üP½¢€Ýè”zÍ~íTÃŽ…êÆ×:è‰e׃ £JÕ�Tù‹ƒÍ¬c¬Úª"¿]sçTiFôx!\·è vñû˼«jK%­ ßStmqÙˆR�K1&,xÚZA3e(}HÍxÝbJ3näÆ |p{e1þ=å—|gµ²ƒˆü©{mü�S(kdzpc†ÓE™KÚ²Â#p¼;ÍËÕâYƒï8Íñ4ylr`™Ãã¾óîöÓt7 ãѤåð�9OL~H~©2äŸê[;p¸ÅS=e¼wjëO=îVx˜ 8UÔ` N}*§Êæ´ÖS­ötüð*§€F�*ïŠÏËk,¿úS"]z‡'£y‚‚ŽÃßÔcoÝøÁ3�¸Ê¶ú‡F»ìïvºnŠpާ:–%ñlý¢æ.)Ž�½;ƒþ÷èqʈ‘'ŸÚn~³˜_ÑSnÕ£eØvð=ßXý+økˆF¦‚Ð|ë]%s÷€ÙZ¿€â1å�Ñòª}ÃçÔ‡i|ýŽv¼¡ÿî¶³‚ÓC'å›õU÷$¦_º¼Ž¯­ül|†XaÙÊß×Ý›Î<3Lí¶S6?ôØ?;}{_vœ1ÏÌÃ�(8ó¸x2ñrï€ ]†LÆ^V?D«Ðƒü:³-¸vTNðœ½PwûùpxPvþЭÞaqe[Èw•wÕóÆ<Âøœƒ…™^fþØñ3Õ~¬ƒ±#/E+ÿ¢o÷þ©^2KŠÂ!¾&‡„SUj-o ÐëæéåF–;½óJ‰§¯‹H�¹å´eèq†=ÑÓ³…Â$b{ROËõ>C,é—KÙ¿ňac±W†Uå`µXÆæA-5–iÝÝu°ÒéØ<<×áÚi[¶"É3Ú~W=EÖª�ñ¥Kô»qYÇ`r–›UÇSêÖâeŒbÇìúB˯ð”ôžŸ=~Üb|îü�“Ñ?S=äå­�p¡g‹1¼ÄÔäYqÈ!êym¯W æBd§]’—?BŒØ�–G;{–u×b§{Óø×ÒrSþ:!–ájw‹zêLS‰>ñ0öáôeƒ´C޽™b0 í4z ÜFgxD}À¾žM¿Ú0¯Lþº„¨pàáq+ÇnšâÐçgÄ–ºN±Ãf ?5ò\­®÷˜É¸d•dŽ|ÓfóEV;�yñ¼šÆjeR—ëä¯údo#Šh†z�‚kXj<¿î #íÞø…qúð8êäp@ÆtÜ„qÔ`þ¦¦àpnôež‰Û3æ1×S´?#äbñ±H©žêkÃÖ«Å$ŠCGz¢fÈÓûú††Ÿm̾ôÆwpÂÃMΧ›òÖÕ§�ÎÎ#Ì÷ÀG~”jÞ_Xcâýý<ñØ¿‹�‰®oÎã‡S‰Y øƒãjÉ€Ð×…^óÌÔKÀ¿šË]¯ù £¥�`ÊÄ®mšñnjý}9ǼÅÃŒ+9w$lK–ýí¹Í¦ÏÐC?0íùõ©ð”=ú¦zZzGÌÀ×‰Âøi�¼Œˆ¹?Ú¸fU[‡€\Áí¨K�=á!�‹ÐƶþxQOðÍC}G§ÒÒœ2»HYÄ‘4�ð|hãÎ tµÓå§12Ü�8Õùì_=9Z­bf¬_“^¾ÏJÇÁÅrÝcüÞuÉítÊ"]êøðŒAçû¤ã#� Yß{oÐ�ßm·yæ[ècÓcú ÎúñlçO4dpJ�ç­ˆ:¯Ÿ:ž;_8ÒÅ÷ÙáÓBŸæ9jÝÑÐï`÷Oøâr>�ï–•üü¿ ¥ˆ2l¥N2/™Ú8 JÆ3×B…ë-WÀ{ÿÑ�±?LAÃIªOÚ² rTë}PMSŸG�îÿ|ï(Z÷ïÖ__ôq°•sûë¥Gÿ.=ãTWCs¼ö×P®—û÷œóuwHl£Ç“`YŽßîÞ‘¨¸žöMHâøÚ ]‡Ïzž†e�¬àcm•4²ˆ¸‰»î£%ñZÒóÜfR¥$I’\yžv¬Ý“\!§ ‹â}LÙî×¥«Åù�ˆ±žT=Õ”ôæˆk[Àìåm÷lÕì s»›S'ÿRJf2g\âŽWÔ±%°ŽÉ5 ˆòú…û8“/ÔKÕX–ÛŽJ5V ¸ œ¸§Òè… %òœW9ìÐgJ¤-÷Q›|£…¥’ºèw‡…ºIò¥ç7¨àbàè0yô ¬³MþÙøÚ# G@;Ø u¸— áŒyšÑ@gI÷Õ˜'œì®Þ?®­3èô=QG?õÈsD2ö Z|l~¤E',fÙä¡£G§>bAÀÜ…ÚiqOê upœ¿•V“³³IòHV;Öul ãÅoÓ©‡ªÈq¿>UúÜÙŽ‚v5 µ¾=¬Ÿq1qo|Ãþ=F.tkÒÃK Gú°‚yotw~ûéQ5mNî<ú8üvÞ¬ùXÀUÄ]ŒSRðÐÅo—Ù�ÇÄ™ikŠäÁ•�)ðÑF‰™D�ŸbVð»�y’CôB•'åÁ;ròBÏS3dïá&ývwm«Ë/å9øR¤A��M}{Èë7-×, [f¦8æ�Œdë‘Úðz�ù½ âOÉ{Ø&ÉÓ„†§{°Ñ=²"ø“€G[�±‹7‚²Óáø ”±¿‘x5ެ“x‰Ù’väG CNº¡¯=PUDu|×nø—zÞÔÑüùÍq¼hϼÇ2ÚÀIª¤ã�ÒAˆ�^‹ëî0Ǥ ø¥ŸÅtŒ`#JÌ-î¶@”øERÎpåÚ]d±ÓF;²<ÚfP–/½Ç\�9ÌìÀ´JžHØÒ|¦¸ mEaž`x6Âî0LŠÈ†îÁÕøùý?þS ˉ_-EL¹•™Sà ]Äj†'Ìd[+Ö±Rñ…Ýá.øz8SìJ\3býùÓD«$QÕÆë£ÕINóûJó?4†ßðçUx;Ä*§ðv¶èø�¢œ–ì·ÀÙY;ÞÊF }jž;…µ·ScÍ_N·=ÿpmvt3e°/ÍËÞû›ir F)¿¤w\è»N�~×gÛ’9Ǹ|ÝAª=ßbn×Ó5ÒÅÍ“v‰�"Œª‡yÝË-?mïMc| ô0ŸÎS'C{wëù]‡dwx¾Þ´¼œoÀñ¤'UC¯´z°ûqÀŽ÷ª•´Â³yó4ªÞx‚ KÜ÷´æx©ã ïäh6ªGø~êëö±ÒÌ3OpJ²á¼Nðà�c,GÓ›ÃvZ4U9¨rHUŸGVxŒÞÚmÒ ¯zº~ñ˧öËøR=Í·~0#ãM[ì\—•j¸ƒ¯ç/*;[ìòj©2›ƒ›Òöà KÓ–FvÆ®ý­¹ Ï»ƒþöøl9ð¬0þÑÎ%ò½`ç•ÍSžŒ<Ðèò—öÿü9�wîmtr£�ãx‚ƒÌ¾8(§Á²}jrÐ÷Iï[Œ¡uÕØ”æaZÄÑ<åBl!G“›º(í1ýZÅû=á4Ô=h•³oÂŒíXeÛâ_ê©™ºùõÎσy²qê1né­®By(w)�îtp)þÚ¹¹!FïÁ W†‡ïÊANZÚ&]`çÛmg4:¿,eF;1O¹$ÿ&;Éf(#£«+6Pñ87‡ÃbrWŒÉÇ–ŽG„ë=-vuÑñú€àM·w…£_fH�±RÕí|m§FšÇΟ]{>��ò^÷Oï1˜ãîé¬ùæÅ,VÍ � Ú2Š„!­¡fŽ"æø3HG¸´‚ƒ÷üÞøÀyBG¼¾ŸÞ@hZÝr½7ψ¶Üíkd+÷É‘ó1“¸d±ro_r³¡dFùû¯¤›d§Ü]siÌÈz\öçÚw´srže½/qéÞQ5[ñ“�*»Pþ c z×ôôžÒw›Ç‚oápNÓ¬ýµ�ÍDnίz—ͳ•í£bÆF]‹Qº¬N¿tR�™Ë€§i æ{‹Á¾«—wÌc°›)e%…ÚeÄh[ÓÔ5ó¯w%ìÇ9yÖÚ'ð|!��Ë„S†ï6þ—ĤZ.Fž–ëí ùøDÞõ¢±’ßîÑÊT=¬m]á¹FÐ'…Wè7xZÞíÇðÀ›ñ¥‹yX_7û,Iâ¿~Þ¡ßV´Êɾwf]›¹'¿^¿øgå ¥”çH¼¯øòírY£~ Ž<…õI÷ì� †â ü-Ýw»+û"ÌN-îVð•^1ï°ØŒGuLЛóíÃŒ˜�Ûéå¾Ý¿p¬ýO,¤Ž�“yû¢’Ecù}=YÐQö�%� ÅÄ׫ÊõåEÊZ`@ÚìÆ‚�‡¡átk¯ˆ!ø1¥žœ¡@"ÎÊ1Ê ~>{ŽzÒueaQëáò’*sÈÆelª“/¡°p•·+85ö;‰ ‚ýç=Ö)ø»ri6L½ù�äógé6 Q]½�Ê�ÄwaÞÕ™õª7À"}‰Êý!öÌ+6Žøµ´ï¥ÒG& éð$·Ÿvhùƒü~a³>¤.Bñ8ô²‡Ž¢°Ðæñ CT 2êö¿½~O‹6wëe'ßœ˜RzÌ�¨cþ:¾TÄu`Ošê5;.çTG �gÀÜ¿þÞý_öøÜôr壎uÊ e^Sä©iÖQ\°Ô—w{ø,ógïk)òã?Vî™èP¿DR3çx~�:%!™°¤pÕ—®f¾#ñóa}$UǶM–V’’ª"3ÖSÊBÔ©“D6N©Ìr;93khAùÙyæãÿóÿVÑù…Ø{8uÎ6téÿüc¿_ÿñ“|àëÊ@Úy+bP¹�Í}§§ØlžÌÉ�˜¶ƒ·Ä®á”¯år¤¶ ä'A»ÌV÷ùúXk3…˜S¥3Y·üD{F̰Ó-ÖÙ«{{fVÑ0Öƒ�Pä—wxxüƒ$ò‚âXâ¾Ãóåtïk„Ec‡­wàû¿ý©ù·XwC˜£åŒvü§£þ2ODê&ùÔÓŒùõ-Ö+*ðÌÐg°4¿Ä=A!xÆŽs[пCôáå¦ý<áTcÔeu#‡§-è®Í;L¯-<& rqwÖ6hIìHæS�³öÌ|pWÏ’uüµ?xrÅÝç³äÊo4ÃN™jµûöè<ñ¶˜Œû`1"ù f &2².Ý÷<+=d€çꨱ÷[üŽö¼Ýáé²ÜUA±îmH»Â|Ó0ùȆWÛ]$Z ˆÀ˜l±®U[ï¹q ¸ ÷DÇB$RƒÂ {Zã°Î"ÂÚNÿ½î×ËbSÙ`ÂN½³rÆ.À¯~6VñÙ«4¶Ù2ë)Ö>4LÙ …¢W†@O yJ¼‘û ò¢¸8ñ޶¾¹æ£Œä ÄõR*éú*ÔxµÄ8®eÑý¾‚oo Ú«Æx\ïŸ{Ãá}pô.U„ÁøóÄ5VÉ(™%:¶YpkëÎtµ7z|(•ÓÛíµ�Ò+èQ‡ÒŽ_íþŒ´æÝ£lkçTø¥Œ(Ÿµu§�ÊÙ@ðØDÌ¦á¢øÙ€Våò‹ç�ý—¡‡ÙN']Ö–T¡ÝÇhä�Êv[ÃC¬)LLUz*�è›aÅ+'¯›<¹s�­nìŒÛ)4¢= 5­|–Šnb&ÛxžF• 7ìŽy6EŽ/«ö¢Œ2šþÖr+Æ<ÕVĬµO‚¥x@&¤L6l<1rÖþ³.ŠmuÔ iÆã°¶ö’©§zI>슦Ã0…½Ê1 Õ[a³ñ Oí_�Ï èmHæ‘D£Ìbs&ºÎæhêäwŸÈXŒºr*:¥v™…“Ô;Ý]/ðà™@.ñ‡¦ÃÌqo™:c¹ƒ¯F ä^WÝÜyHøœ¿NÕìù2ÿ ø: ±×;ô¢?××ãÑáÎ3K ãU‡‘tžÄLM à;Qªž5R˜cJ3štc iúˆ Á7}éyñî<û‚êà€}í~‡ëËi­ýéÁ.å”^í2ZyQÚ§sàËÑ<Àpúòƒy£Gò ²´ÅtÜ-Ê�G…|ëÞ.ñºL3¼îÅ3ë÷ñIŒÔ˜üF05íNY÷Cf|êŸowøB£|1+Èõ�°Ë öøõ¦ +¿&_Ǧç¡_†`rêf»¡w&àñ §ION­íýlò¿¶álÈÑéŽå�©è[¯Ï(xà‘ÒhäÕË|u;ËÃN¯-†&ô4 ¾WÜ›üeá4¨ ÜS0ÝÒÿ(wŸ-W¡2‡ƒnF?ðÅØ<&'àw‚$@’Ú®W[?é5Ì=ÝNJµ3¦{êYþ5®Æüÿ±m?Ïú¼Q ö…°RþL˜;%øªm\Nšÿ2«�¸ž¼'g!†)³¤¸9Â,< Ë¢¶Ã‹{'?Ò°?ª&±VÒ·GúâÖ6â Ë¿³`gxøû^:œ|>€'ÒÂ7\òs~PGXðƒWO¨[¨gTÚähÜœ år’ê3Ä™Úç~TÚÆ�‘8Lݺè�×K]½ûG]—ÛÌñÝa—XY·ÀÞÅý€[Èì¾+tkÑòå]¹m”«§B9üQرOøH–i'?³‰v@ÇÃ-ïâçA¾þ|"ƒ�±-8öRë±çpð•–•Ýð¥Àq‘(I²|'$ÄMªàFG;ØAŽt8Lu~Á™�è›H2åñgÁ›ñÛã­ †K›ò‚’“oô¢x‰¾¡2Ù×ø8ß7Huž�“ñ¥ïÁ+õFÃÞ><°[G)É¿Q±‚¯2U&¥ž¤Ý*؃3¨ê0fg§3d 5PÀØ-²â‘t�Ë^7ÝÔÈ’o›nyÈœ° 8PûÕÑazÌ$=Ù’f+ý"‡h9|œ|ÐÉ×elâéæz²#ÿ wÀv´³ËtðÆãDòPþñVôê‘V“ü£6ZÜwSM…+Q+JâHúv˜HrERµçÔÇ-”Ò…IÔ•�¤3B“ˆša¥Ð5ã›x€7é¥#Wï5?(šõ°×Ý„L—ÈS]Çwï(íô«f-Œ¡zmŒÏÜX*wr{YX�Ÿ’ºxÖk³5™�P7ÚôHßIÈXq®íŒ5‡LTÿcAU_*/sjH=UêTgxXGd¾mBGS-_<¨n76;£ÅÓñ�«£�¤£²w~S?� ãûV×yCéë8øª´ÌÁ:�èÚŠßámI¸åç|˜ÛMnY»Æ�—ºd/c!gXjk`?0Ï«2 u\ÉŸÞ—TÒ ¤ÁiN?}>ÃßžøS€K°CX…à+8äC�¬¬1݆õ#'U¤{Ù üR8']¢þÒ˜uëõSËüoúÍtñÔHVA~a äï ߢ;‰Ã]c¼ÉéGàÝ•Þö»ž.ëM�m.1&Ÿ�Éø¸‹mµã·è©§bý߯ŠçÅ<ßþÚ»^5Öœy6®oˆô>jfx¬�ˆIôãWh#¡«1ÒòXz¬¦æºÅ&¢ÐÎýtߣ/voˆÁuZœU’rêé°�¢Ùlw}ñÅeÞ—YË ë[ß$�αù†Eé°Ç$ÚP3O'I1ðžw8¦L~¢¿lkÿ§>�8¥úíÅóýG—~ãˆSm×±¥Ÿ_-«ø¸7�¿Q(NŒpª#ß#œ¸t”¡¯’fÐmŠr øú¢|zq§CçQÚFO�ÝÐSÓ[àϸ<ʳG;¶œ<"–åŠc°l'ÒB§A¥1äjœþÜxÚicl11®ê[!}>”�/©/˜ä³Î=vÕ¦øm×Ö2Åc›ÆPæyÅk\í$‹Ë�B€˜D’E²Ôã&¿–;ƒ¯áTÊrºr *�Æ©¼Ñ+Œ4?*å§©JŒÍ%·”[ô>²j 1ª,–\ñPž…ü‰µ�3cÀé²›Ghõâ¬ô^?µÍæGá´¯ç_rµÓr¼ësÄâ*.žlÛ%N‹çË%PÃ{ù2�M~¹‘#\9Õ›/é´Ô;ÏúzQ¾*©=ÙöžñM¤šê£}çv¬1ÚTÙÁB�A^éuíòµ{–Üà³ÛéâÃFºø;®ÜÛ½_›~1}�n±ÓAÍCi÷Þ@ozg‡?ª~B¬Çq¹ Žmª6Ï�Õ<Ï›Ñb´ÍÓ( zÆ{FûäOkÏž…á“wrŸ©š¹ £Â¢4*ß�÷èíÑ·­ioÍJ€ƒP•�çRS*ïÇ|ûkc§Á·“‹½ÅbóõKÀW<½à~)§«#1îïp¡:!Æ%ÃcçŠaÊßð%��ÒÄ{³?®âß6Æ=½P5ŽZ¿¬ƒjÕG©Y¬Ë÷@›t„o?ýóëùë¤ãÐ.Ñv8Ÿ‘ñÆ�!„úõ˜ôxY2}6€_V;ݳ 0¢¹e±¹p-‡a¶Â5{�Ã`^RÆ&Ï®õ†S”á9õO)LWé±à–Ê�ïÀúÍÓ×O#JûMÜmsz xz-�xv3Ô‹'_C3® )-)Âãê _?“‡W* ™§©ÃC�˜ÉAÓëæf !˜i9·‹þÒà|ì[›8ùßHâ/œü—6ddšÆµ2Yš„gwôÿ)éW+·`Þ\ÏŒ/^¦b_¸«˜~⋇¿(}¹�hWxž³~õÒ` ŒÑÍ™ÆçÑë±Äslر6WÛgž½$…'ýï2ã‹8(¶‹è¢ïmUÄMÇ_Dó}ÊäÿõSiòñR›­ï@WæØÆˆ.¥†«gðW™¦…�íAF ñ¿µOgÚ3fÜá|þ3b)ª«œËì(ƒü½4î°k¼*´ ÂåòQäöðñ'†‹3%Ä’BéàžçN°3Ù›‰÷Ao‰Äßœ:“. «È�ç’`÷+Ö÷YùI¹@ª÷e¿_Û‚¹9¾~[Òæ¿W·oƒå}†³[œ4žx”Ý`ÆÅa¯™¨í—‡ôWÈe'Ñãc<ïÓЗ³RŸ$¾íMÖÿëñH ˜¼GXʼnªvz†È „«×&Õ{yԞРÄ[rVÄ·$ô kBõøª6Dqjâ¹åFP‹›Ÿp™{™õWl³ÓÚÆ'ÙØq˽Å?÷’ì?…YáMôC{c‡sPO^üó´7­_&4è'ò¢£J�꿺ԧîŸQyÔ io »šÎzÀû¥`~ĉ۸««ZöVÎ=ÏÖãT—|ÃgëPþÃ�»½È!çž}@3&׫‡¨N„=o÷pnéèŸ3E5¤leú(K¿Ë Iø¥€S¶»Ô·kí%õ&,±ì?øª8`UÞ噽ø\ IT?1=P½Ôð°··IG5eñÂX¢�²è§ ´  ›¥x…>‰G©ê›Ž-ýVùX´ àNnbë Pî\&âÌzþבè"ô`8Òé#ì™üK-9,Ñ³ÕÆ?ÒŠ–¤òUïÔß¶¶,&�ROL»”p]W‡­ÜÀ�žà>÷ó#£ÏÑâsî"é<óS3™‡æíHõrbjï÷ß.’ñ×›Ø"ÿî]˜H�öÞýÛS÷N®4Ù2Œo©”<´èáï+ÉŒ*ñQŸs÷ñÁ‹àA}lúº‰¼Põ�ì»ß‚¶ÀO#êDº&RÆ{œêçÔV?Î _uðé§XÆ×gU'4²½|64k!IO¶Ùц:‹=þ�´•¸÷ôˆ'¸‚Õ¿¼ÉŸÆNâ r@¾„ò Ï] ŽkŸÕ�‡*§1„'S# G©£'šMÓÕ6— ÚwV©‹{®ùn^% oÄ=%�2ðD»¤­«áÁ`þã¼Åú×�×ù×ü?Dë8…íâû§"zzÑŽ=a%ø^·oi�~©ÐÌðp{ùKß_ÿ4<;-;¿[Lª�ÃGe#\Hî÷ϬQæ9°:q;â qİ 1s'FZ.cõT8åñ ì”Ôªïí[ý²’N¡xpϳy€¢¿ß~ù,‚ú¥ÄT{û¡°ááD/_ªpøÏÕ«�Þl a'(3Ô×âaqÛÏAõèå\>M²XðÔNoI¡w9Ùø÷h¾Ûh¨;½Ùöß{� (® ÃmT¶:UµÏ^ôÔÞe„G‚Y0v6ùå½å<Æ6tÜ)Qå32Ìr$ÉNOÃ4 ´®7U¨ˆÉXWœÊ»ô}éíÂúb‹uºëoœF>ß[ÄzS¥ŒëÇÝ“éëwû@Ì#~/±¾µÐ$nË�-v2ÕSØÙÁ!”&{l¡×múŽv B ¯ZÙáº�S¤ž=Aޝ0צWÄ"Þ<„7L'ÈÃé2èø±ùd_ÌéøfDû–¤_¬þˆu)úTßM(7ãtçìëÂl¬Ó ðaâŠi|ñœ`#½º‘ÊùÆï&ˆwŽ,[¾Àà8~h \sX„¬:Æo…vÎØ9¹1�ÈÞû2…á…/ì6}¾ç»#ïÙ`Àîˆ.ˆr+æLèœñ¦vx¹(A…9Ø»ãÕÁÎfps`o“§Aû{'‚jvÚúêÉfÞ†úÊÔüªEÈçàh§_Ðà  îŠ:,¶¨òW]òóïNi%oPeÆ®�6òÀµN¦0ò][Ub’[ æ%ò“ïrïËÃu•†‘A.“ú¤½ /Jƒ=X䑘™ºÖ,çqí©P¸˜µí#Ø>¯Ÿ”:%ÖÝéwÝY¤*ðúˆàgpåèq²Qié Žõ7µÏÃ|´ ›îãóVr¼Võåc˜=œ:“6’ç;úm_Q³øGû�=õp=â§.ÿ|'q"ZgÑ)Õ==ÔÊ»…€†mÉtK’+Íß«¿É/Ø…¡ü9­ë{yÎÖÇÔg¨ãa¹ªèˆâŒ >gêökІ"U׉3á¡{¥A+x ZÀÿâåŸÛº�™.ªWcí¼+sSl¿Í†8¾ ž–ž•ò$SS±ÕÓ«›â£œLG°ãÝ.óvªï2U _QÔÑAt8é!.ÿæIsxÂÁt‹ç¬nÁ¾L„6xùÚó‡2¹¥Ê•ÄÁüçþóà"/ì¥ê-ë¥TG÷¾T!Uþ06z,õm5Iú¾®¢Ÿ‚̶ø±+bïLœž÷A®ÀŒÅ¤/fÒ¿­žÀúÔ Ïé¡ýw" ®ß$ãðDOÕß4øŽükÆÂÛ5j‹·)YL=ì$ÿR‘)pý„ÅÏ="îõ·cÒ"ŸgYµ‰—ÿ÷‘ÚaÚ'ÊmÍÕÃá(yÜ–ÿˆ#°þö@%“´hd5_ø²2ºÆIÓÔÍ�]¨c�=aHSÅÜ_÷2»�ÿ^’$gþUîàGG�ݬì^æ=“‚+óaxÎ|›“c_½6–R|T˜úm04!ÑZzp]ŸûΪTg¬tóéŽ;;UJ=Ôøô÷Ú;LÌ­&b<_�9ÕóŒoˆíwnOŸÛsž5† zÞ|­€þåwZ[i*“G ‘ÂnÝô—’fù;ðÁ’û`±±à™bÇ ý˜�Ûd 3íd÷öãû§“‰0ÔÊ«'S†ŽS2é¤[R‚­¾1óF¸â ¶üùCc¾ˆ�²€µa#NU­Á¡ÝÊF)”Cì¹%¼ê†¼h¿.õ̓ ±Üì4åZu}€ó׳;´ƒíØn;zû¥�}Ƶƒ–cIJ~£‡ 1ËÕœ¬e F¤³âjÇIáôÏkjŠtÚcQnïO·Ê»Ûà¯wÄpädhp2Ï& �/(Ô,TñѤ#G´Bôc;¦LåXO´|¶¤ÓxKžZ/»Gtœ‹Ù�¤a©eÒ" —°ÕŽ}UúñíFljKååôÓU¨;#(âËØH. ®q ©ƒìÚJ-L¿¨Kþçyîà} 7²J1ÃîY�ù¨?Í H¬bÄûäþÆvWÄÜ.šw÷ßmGjgµÏu‡W<ƒØbWE{QȺฎzŠ÷ p^T¨íSkXOÇÚꟗH�»zâÑt¯}+ÄlµÓæŸX4Ùb‰~á;|áWN}ÝÑðž™#6�º(ÅcZÑõ¯â ød€þ]¡�](À—²{LR˜”Xh²53Ó/½yÅ©¬ãûþ{þ¡ýº\³ýѲ ÏÍ=b`<ý]áÑÎ <Ú¯àÓ‹í¤Vá ¸€ÄSÌ|õ[“–«òåîAÕIbt�ø‡È{�]xÂË}Žz»ÔïFpÝf¥±Ål+±…Ë1ǽ…äDm½‡KïøÇ­»á‰`žâqHæ˜hìì}BÏ“-–S››¤¥¸>Á›û¹-–Üêëá#“‡‹Òi½aÇd³Ó ïgxzîã üzpÁñ„ãÉôøìàaw²ØfÔê ò8È?ða2zÚÃ8Y²\ %ð@d‚Çê|_»ò_6Ù­Ÿ­cÀ—§I;ì6s0ûê¨Uõp°G®‰ tì(˜;5¶Ëð-¦ÂaøÃ4=V›%M·ÞOýcIW©:£oƒzÊ×ÑÚW/ð8¼Ž‘Ä è4JßÖHí¢µ£w³ÊgrÀÆ ×»öÏ˦æÊl}ó Óëóœ\**fÝåè[lMwØå ÆÙÆE¶7T«„'舠£³¨~¶Ó·G„§˹I€çúzÃÉ£éÑ–,¦™¤2 BÈN“˸=?iµÓ½3|b˜•ÜæåŠ7,�á‚öÄ üz•/°+bÛMðȹ�×®¹x–Êz<~Öpêõ×tó¦üþ·³“_ÚbUj½€¿.î¼`ü1S*?˜â•Ô› fW ÂÔÕiì† \²Øk¼óçv2w®¡"œZ«ßJ2{ßm£?í÷Q²ªÞ?¯—W ÌÁάW¦“jâ ´œy"Ûtñ|G ãSÔ÷+àãN€Lþ£þläþ@Ò¥‘çæç뻎Ãâ ²à!nÈ|ýž6Eóu}_VêŽÙmœ…wkê3��+!¦!äïh8+©/ó²Š- é¼{@¶qøÈµ/³6Ø"òˆÓv|Éeå”[©×~Õ¾³ñZþ`ìŠ/¢.åË@rý%•¯Åõç§Âýó¢møDl× 、ñ/¾€Áli÷ð?;£d«¹l1·¨4@mhÚ“i5€´*â߹玵j›ÇχjUÉR³a‰GÌeèÈG‡¹óˆ©»HÒlÖ:#!¸Ë�)¥gôHÂ]}‰.ÝôH[4øã÷‘¦)£"jË=ËÚº—ŸÔh$-üý9uAÆ›„ƒ-hRZÐöüœx¸[IÑ¢ìøÂ[�d]�’_˜öä e<�ýo�^Òî�¸—Î-î^ƾ›BŸF¼žq¹íÓ_œ.Ve¤w Ãþ±±GO|É û/¸ûð¦''yë'�bz"Ý/7±w ªû¯ør}*W�›ãQ2Å‘²×bžÖærN”9ÄUböCR?I¦ƒuSn«PÔ�E6âÖ_&¼vz˜ýH阧۞êÛ»ƒk�ÿK½ËªÂtI¿Ë¼j£ËufÏ †\{…ú2ØNú“fL´Êm†~�T÷qs’žÌï;ŸÞgìÇDØA¥ï,úôžÕºzqò"$?þyâúop ¹¾âP™tôD”D¢çZ¶S]÷©Ã8#Ü3Å\=Ëì3T-j…]ß?‚%Dþt >¤WÆ…"]Œ'ÊîºÏpPþÈnÔ™¢PsÌÔÈe’/k=vïUîÍ¿å ž®AþQ(Ë?·í(òïûºaÔž¢©÷ÿ ïUõäõ’ÿ,-Ú¨ƒê»ŽyH ›‡œYµÈ?ÅÌ"ѲJ îÖ¾Gâ[Iäí)šN7y+è1L¬Ë;ž;ZõûäÑÔ¢W"˜Zy›û <}Kó¹Ón>örçÎ3݈؃Ôë9ÊyÔ¿Îô³ïø×m�û¢> SŠýÊ^=fù¢§zwr�çˆÅé™ùNÞG^œßè–žøScª}ƒUªF¥^SŸTšAGÕ÷ÆÅÍ´,_F“†Ù¤“¿þúF»Êüš»qOnDšV”¹;š•ßjpœ�ò5Q0?ORñèpöcw­¹˜¥“GUèÿÖ“˜"�üóýUOâ=�ãc¡<Šlw±/“JÁÚæF�»µ;x�Ž%Æé¢W�©5^&’f"X.~ÜîWœ¶8<òÀÉ)2œWÚ¥> °µ~Odœâ$Ú?Hï){U’RîKÝˤNg?ÔcD>é_JòŠòO òâ°é-¼í…¾ž`-ü1–ì×;¥6{ÃÏëþný §-®º5ÄÓ˜†–Jð•ƒ:|§dœ�”ïjQÏ.žj\Ëä__ôŠS™_>ÐD‹i1µ$ÐÃØmµÓÜ,˜‰m9¬vJí¾ì-*Ú£9üüì–QÙ—ÚÆÆ:âÚ<<®ÛýдÂ4Éî%zÚÞÖ¿Ûé×[ÿî§*KtÕ8 ¿ÇQàñ4 ðx´ �ˆù‡ãYîþ·…ná)°Ÿ¾¹Õ7k›öSªEÜ1lŒyŠ–Sçp*÷×ÖjÈ7àôÖõú…Ý‚}¯ý‹žj;«NÓ]?Q–±eÚV�‰¶Ÿ‚Ü^G ë³ñ¤í¼«§¢ÅÆ´U8†þ£.:‚­¿Ýcm/wRØÈëò �O9݉; }7Y6Q*zšk,®„û ñ¦<ês·_p†“òÉú¡ýÉÓ%fÅäºÜ•L_zf�¡2¨§õ¶µ¹£•=c)r•¬:4°*wœò:¡ÿÍӌ׮ž7;2·ë¿zhŒù'è.fÐ(Pën§ ÂCé|uj±Â‘§�UGäÑš±îý¶Bg ûÎÝ%x@ÇM/ýÖxú&ÃóUƉjlI®[Ï�4õs‰ÅÚg±oi=�tðÖ ‹‹î ï|-�¬¸Ën†çâ*ð=0G—?qÎçéLîƒÑ’FÈÍv¨ð¾HpŸ¨gö˜8_Ï·ñËöv…§˜Ü1p;5Hk9ð¡Õf¬©o¾ ñ¼G1õPsº�� j:¡w©ïJ(Ð5ò¹áS’Ñs�òöÁiqmš¿öéú¹—º¿Á#f>QWÆ =‹)tSÏï=VÒWãÏ�_ÛÐ- xJÄf°¤y 1NI^jt8*\ܵL{Z%œÆxâûÌAi—Óam‡¾Æ"…¾;(9¢=¯d³/6Ò-ÖôÓ]ésáʃØC¼ŒTBgøþ…‡äù¦˜ÌÓP²(L7® ²eþ•{,Dr †œ[8áåÜ›¥Õsôʬå¨Ç^¥†ÖÞi(3¡ë¨ó€|jæ3˜+bòü�ºrè|ì—è|I«_oõ”Éž¾ŒÅÊš†× Ž�•�ž´‡Ë/b •PkR3äáœKB[¨«ió)ÒÇô¶8�¿wy"=ó× ÌørÕßÝ.~ýÞ]LÈ-í§.ÝÜïr,Ĥ<ªs\èÍìéç�Ú#dzÙ*[ Ôa¡Ç)Å~4�ES»ãlËÐ{#‡iÞ|0ÌZQæO8tïž‹Ûï'Æc‹ýOÃ;¾@»L¾ïNK#­á›îØpÚèbã‹{îôÌ„XŠó(í+_#Yl^A @CsœœÑæY þ¤ôãþº„ù5ü¼Bge2˜öݱØd{El`õ�*,Mð¸|Å„øÃ:u™CôÏS8“öüýÂå¬zê¿XÛýú—~Ò:ž•¾Þ,ítGÿÏ'¥Ëôª|?$††�:½ªÝ˜ïëñŒšÿyQD_oZÏH^@¿:=Ι>%usÚ}uý>…ç÷{™õù/*¿gý€ˆ>1yñ…eÄ3¬æUuäXÆ+)/[Gù =ù„ý{Ñ/VJlǑݘe¨çªÊM³·ã ìæÕÉ£#.È÷º(ýoƒk˜«Ó6ºŒÌ b4…Sì&¥5­hœæ/ûR¢¸æšÞ� –Ð2�‡xYÐ#˜t§3“_ñ-x&òMm—~ :�9w°æùN¬ÓõÄÐò4ÑF•gqg¹Ò£Á÷_i§ÑŽr›2êLá¬Guø®Œ°€Hi…¿²ÎõÓ”i˜êûP¡þ ‘é�KGôâ*TäøºÍGÏhN屿ÃdôíðS,ø�‹2`ðëú�~÷ëêËt:”Ô|«¾ûå耥óº-Öj>ÂÇxã(eù.…(U+áQ³_Vx�:J*€ #�Ѝ{¹vÊšá*ÝbxïdÖ«ÔÃÎ2q2“¾&k/ljI´síe§%Ái_whÛÇ®SÞ�^‹ŽãoÉFË®�ÊIçÞµ�A'oßuµ4VÆ=^¡'xpî$GiéÐ\Åj¸y‚{OÎHÖñ�Oß—x>Pk^þhäòz¾ AytäÞ~;°%è{ }HÙ(ÒÚ´BÓ¥Ò-B½>‹Ùû6Á<—µÛ…žéÝ »M�IƸÿ›Gve€_t Gûoéˆ?SÑ\De+M=ݶˆÇ¢M‘·ë€^·ØgÍFãX©´ “È„¬ì¸¾�‰é‹)¶_¦v²ëï³P{"Kü¬+ÈJUëµlÓ–CFI÷ÿŠüÇIËCÉÉ«¿ð°÷[êŠyC÷Šÿe%÷‰¸ŽU=M¡Ò)Ó˜ðÂ�ë=’Œ£iAƒSx‡î�½Š“r#iðQŽð¸“õ[¦Nò´éYÑ®éàY埂Ýòï^gð[S´„P–ÿßé�š±¦`R;üÔ·®è¥c«Û®Î3³‡êWœô9¹Ÿ‘É/=t`8P="(‡OÇ~ÚíQ¿9þêæñ�Ö}G…§ZºKè/I6–œ]Êç&ô×i8e»*Q¨¨òPàAÀÌáFœž2µÜ•¼ù-·¸ÑŒ�*?³›ÒÆÅ?/W–ÕåÿTŸ¦1ŽkA“ _7páó*ƒ’vÆýge÷ÿœ§d1 ¢ßL÷Œ?ÿçÿMÛ°CRòWòÓýÞ¹q϶ÅúÙ@ó9, –´ÞU�)Ä·œË©±ŸŽ1¨^/?÷-~]c¹œ7-Hì§ÒmÄÂ)1ãËŸûóå×ßö«çÅb§³àØ/Î Ë{NˆÓ@Y¾Œèð,ài¤°8ò§ ÿú+`ΟˆÉ÷:5°~;mŒ+º-Û)ÎwÚ’Or…'ÝËkWkñ«žN+ðCì=A¬Aúë¦t=¿Õò;mV/Õºµ°Ý[õ¯W}÷y©´ù*·¾k†ñßU»ÉŒ­¹sdø¥ýº^Ì#ê§‚y½VxÁŒÚ­ôéjÏJˆ*blž-:ÉÓ­FÁ–jü¬’ŽáNÞM à”Ôë Q6O,Äú³­Ýuíó£}äÏc„‹4,z\æ:¾ÐÔp‘§ÀŽ ÷lyày„˜ ,®=ï(wFŒÅƒ@¿•<Žv ´9x­Qñ2Ž÷Û=QÍðo|Ž#² QÕß8fkøHõî/›þ.§ñ†+õõ†d‹^ùv‹±§ßé½^[;>|œµzø®–‹ŽrR1›Ìn‚cí|®«,Ì‚7øëb§Á.À³õ~@a­ÇN�Ó€©‡`F±pý1òºµËWxfØ©ße‡ÛÓE Î×@Ãõ¤§=�÷s¨rÐ1¼\�wŠaj醴ðò¦ÅJƒDôt×�rßqx*…Î h„kÇJ¹Á3ý<ë`ÀÖƒk<רŽ[–¸u9\vWô=vàöh™õwaG½:Þ‹Y,¼¦§;é .«½`9Q3 «Ùʆý‘YƒD­P3›Geí£‘À‡�F»n€\YSì³A=a7ý+~ñ$ªíR`Âi’óœÆ=ÄÇ2êÒ �üÀØé=ÆuÌw7fkÒ&¿p�Iò»Â¨/—·aó7óô[¾)ÏS':š O¨ñIâȆÇtRo¢õŸy ma‡×u­²K‰¸ži§Gšxªvªß<®Qþ}e'¤=öà×»‹:žÓÜ‘+3 ¾Ü€îÚœâª6ä‚qã í�oµrgĨ„gºÁžá±¢1ÛØá Ï_0þ¿®ê¼yªìúbê� µÛY]Ó.8ÆIt†Gç�áºxa›vè³-6ã†úí¢xX¬¼¬ž,�ðT[à3^Áç Õ¬˜ô�vê<è³`<¼Ë½ÔØ^³�Ž:&—[èwùnEGŸ/Ì_ìt_k×WçÇîɉý~ˆë×ó—¬·$Ò„ÁŽ6Ÿ@¿ûÅì/<‚ /¨ùqíÓw†ÔI†¦Þ�\Ð/É gjO+î ò×;Cóz0ëË•çæ¹uµw%Û²ÁeÓ<²-ú4ƒgQ©¬— nt³Ø]îÑ-m†*J×…Üqü”¶PÙ[ž‹} 5+Ýï£òñ= ôÂÚw¿ Cne\®pOˆÝ¨Ó슑9Iž'eu¯¥5ƒM²¢%ÆooLøõßç»ìòºØ5ä@?ü÷ŒTPí=³G.ôqŸ6ÏfÍð™ô„ñïÅøÃÄõA�|É�Ú‰åÉ8k<+í×{_ïŒàãy' nI0Þîì4ái×?ŒÓˆëŸ½é¶Â�~<–ÏÚ{ÿOë3;U½ä¶ùîg(þ ãßI=//jGnŸù¯Z©;¦ð ß—/®€ø¯Q;úǺ¦²©±�Ǥ̯z_§>£Úý׸ úç1E/±<~€°É]¾Î8vAÏŒúj¹â×2Œ¦5ÉO™Ò’“?‰¼ûP†8긂ŸãÿHW÷L ¼·®Ò«O±�P—¯,9ŽÿýšŠu®Ñ�ùQ½Òèë¶!îËŽ2ßñïcö�)MÍë¯ uÍ˺Øá˜VV¯€sû²Ô*JéäÉ'< ÷[‘jOm1[±+Ï¿þçÿÔ6ÛŽßõ¬Lòr×á±¶L ˜“W'™*L‰Kݽ�z*Obp”ü£nMÈ’b·}íÐn�V1°oÉ ^xмcÅwù7íäÓÚÁ¶s6¨v.ˆUôi§[›âÖ‹Ð/´ÿÞÄ(§¯ýC=íÖ¿ÔSrý©+Î^/•6‡íq¸› ¶Kò@™fEÒb%Á³‰ô`÷ðÛè†�zù‰ö8ܶ¿â�f¸º‘P•ȯMx ˜â„9YÐ%Çýž/Võ NÇâädlèw”¶Ÿë›ârùPC0Ú¤þ‹>Šßj1Úl³,¸i{ëé°JÆ‚àßn¥ þ~ÏFÇ+µ {.™Õq´ ¼�ËN(¶ïÿû~?œÀ‡ ·X,¯nëó¢6D%ݶ!{ɸxœª ¬¶ù]Oõ–·×j0š\´—Òß{Ô/[Ì»½Ì|¦0z4þÛvš¶¶ŒfY(n¿É=áŒò>¶–çEx­8Åt˜ß)5\ÿ]Õ£RÆ—Çò[NŸÕu<êinõ6b:Qwç•qZcçWúƒ3¢bøÅ‚˜œÆª«·wØyÚä"ÃØqµŠ7õàãÑŸB¬x››úžÆ“vÇ#p{§ÇS~ÉUõ4ò;ŒtÂïL�N ýžS¥»Åƃ"æ=¦e2„…W ƒz/fÙ�âþ/Öþ6Ö¾¥ÉƒªÖÚ/çüÿ÷ÞçyÆJðÄΓÈI…1‰M”`�ãÄ3žd) øÀ'$_ù‚ !ˆ ‰!!”„„ !ã™Ç“›Œ�Dzg°3!Ñr·߈¬Ô“Ū3[»|€‹ám@ Pѹ3z.Ч%–Q§×$ýázÆiÿ?\á€lö‚¬¨ô¹>¹£±ã…»”*`™Á²³TS»Ú÷«QÇ?YÌXÌã3wýºÜ†ÖDoŒû»ÁaîhêÀb]κ.5ü,{³à!AfÄÜ–L²dÿµãºAÆéÁD«[Vèã9p_?0<,vœÅ8aw4Ä(Ó žË×óPðYq8u7è• l4ƒÞ'{HEŒÆ%¿™�™„ëåmèæ¹7I]Ëå"-–ª;òr†gäžÃ–õõz©žãk9ŒÊc·IÂÆÈ2Æb£[ðn0ÛòzÍBïÉò€+k¬ªíñpÖÏÕõžü7/À ñõd1Fu<“Ålž¼­%'q,bšGÓ4Öö;SØÅ﨡m7¾ÊêÜ/AÊo”öjÖPÎð¨�)º£�'…w½VœÖßg<¯¼Œ©qúiŽÒ3G’ÜÐþàóafu�¢Ò2½å•-oÂfÍ�±x2Ç/X¾ò+Š×zõpZ6�1ݸ è;¸.ãÆ2_Žô.<­‹ÞÝM¿z=¹q¸žàéýQ<ˆËÆ”6=Aï\†úŠízÛBCλƒr±Y“¢Ãlu¹Ã›å-'0Ê»ÖÏÇ‹6¼<´1ÿ¶ØÔý‹õðê¹[g®¾dŸËûlË&Öª'17êçë³Ú­/^–B ÿš*—7Ž´þëÖi©8¬åˆõö =A�­Y±½Óšydü#γÐyÐ7.Ö�³× ¼!sšê Ààú·Πûeˆ » ^™o¬û¸^O°«Æ÷U6•Nˬ¿ô9¬®ÿe1¦�?C>…<ÝÐwcW�H®ï-Šã¸êñáŠß$*°ðÛ¢BJÏÁ¯I¬ØU 9! [Cq™M(uÁ®mgCCÊ„y÷߬€¥ýÞ�¯s~§n†#;÷3{}8µÁ���Ýûyœ¹ÿí“Úk´ƒ¿­|3AnC-ñ{Žãs‡f’úí�¡±ðÔÖµ{]ÚPçš$ËÜ˃½Çmý¾ôéÚÑ™h‡¼»¥Ð�œ tJ–û=Úø‡Ï[}b$<(é…�ºÍ­ŽÜë_Õ"eVÙƒ•åF }»¢<Ì™Oä=m¡¬ºîÌ/;3ô©ñ?>½Žk0µ!F±áíúîúÆp…Úãc]”S)Þ]7¹% ä¹Ô÷òŸ‡0è�Ö »AÜÒ>(¯ð½«£/÷¦ ‹K‚-hUD?L»q'^íéAª0›ûÝ¡FÈqrm=`ÍÃâ°÷éH^T¥Ð¾<Ü•‘è�æÁ5)XÍè9d—ÙmPwhÊ ®tà Þ�©|`òó�&†›Ü«EÜ’0¾ ¦%«•r¹Ø%¦oSä^œèÖ‘uŸi¯âNíwWñç¢cüܽg$\Á•_­¸úôå‹Ý—(  d“×t᪔别[ô´=„ú5SÃfL~Ó°ÊïÛÄ©�d%µÒÝSMQ—øbðZÑo༳4º \uü¾GÖò*Ð/Ïü½»Å™ ›cÓÙA–›ç×8ƒsùi‡VN�û)0~i–Hy�á„kN5ä~»ô1vô´Þ“Juw`­eàØ*˜¦h[˜Âò¿ùt�2Bô®ÇIô)¤ê.“3ÃËsIB•ÿ„søÞ»™Ôè^û{×|{Þß•ÿ^‘X¥7-ú'Ýe�^cÊwüÚÈÛ¯/CÇo¬ã»�ê¡•äÇ2êáÂÜÇ<}Ùëþ^Ñù©2aò�y´ÛYê·½¢ƒâԡׯÊûȿ³íf¯ç¯@//Leô¦�pê›0þÍ$v¸úO*ðûGõ›vÈ®žÿÊ ÛjoñCö¤JŠÌ1{m\ázùg×®Ô§ÄwUÑÏÖ.•º6ª3åkgïÀV&·,ÀJå®-–×ö ØX[s‚}l9§™å2i'ÈJnSÍÉ•5›éúû¬žjÃ�>n·–�/;£ÐNÀð²õòp¥5~Ìð|üï‹�c^.¼¥ó;+¾ÂêÁã‹õ"N(,+é-yÖK`5ÍãÍÚ9‹ãË#Ž(žáêb¾£z"ÈtÞ›ínx*ñ¨xʧ£ÂüžxôŽ4ÆÍ¦H�×PÃ#î/ Çƒ©€çž�ä�>F•¬vžù{ý%až*#èŽHêLóxÚ}c[ûsWGÔ¾ìYMÍ“ Yv›•‚˜ICˆÜ€b_~<¦U,¿ž�oPY^(JºPؤ‡ó¡í‡‡ Ý-ÆìW [¶Í•¿sËvÇÜ„Òx¤ŽÃæÒ×5¹Ú<Å^é;M‘N…&6ß�´rk5dW³ìª oÚà@Vu´I¸} ù©Ú¼@¦¦ÄbXš‡ÙAùF†¥çêqö®Õ˜»Ø¥­Pw!cª¦qÄ0WxJ/Y8ƒ.FJz\f“Qc¤®1ÐÔü¬bòüc­z|(èhщX³ÑnjGâæI(Á¶¥Xß< ”D ­Ísó°ãYÆ´Ó‘Þ“+ð:ììNÄ–Æw})Æ´a7/2"èät óÅŒX€–uôœà±f¡‡×Ecð_ &Íõq·Ä�ô�j4OŽ£Ù_4Ÿ ?;‘áYfãžÙ<É w§œnÖÔÓkñó†ê‰äOrwù9ã¿!>h,¿µ'‹‰EÒŒßCòè¶ÕSõBUt‹ª�·ív­¤Ñ½Î × púü“tá2€�'ówôO™ðï2r l.<48`=1]}gíÂñO²[ŽÕiopŒ�´�ë/æ¢ûî‰PYØ27Èo-fÕX礶«•oG]_.úfc�–;b®ž›‡æïÀË]< >n|×/þŠô …©<\ Å+'x(æ ¹zœ­êòE{5�{#¤ÐÁ@‹%ÂF2<Þ6�C{2"nØ1k±åÏŠc*rY<“Sæ„5Küzë$êÓ½ÂÙæóÐñe6Ú²Æ~ÛèÓ�íÛ´p±$#7Ïpk þb8Ëåÿ0�öPs7×ÉK¿ÄPÇ<’2àó³*${ñë¸è†Î4 ]|÷ÄåŒû0·Üu�ïr1�Ró0µ6ôæŠ6V8mNx<²\7ý=zýú òr÷tIã:ÀŽNqPöëfýáM‰ÃÁ)°UÏNÊÇ#ÖqXVjÞ΀ͳú Àù!²OŸwbvW9¯þˆ›g™­û·N;zÌìò8„õŸA±ÛÏW¢>¨˜µ_è­1p¬ÿó4+úõ %+]ž·1IôN¤Î5¯S¶aÆP`è}ó¨¶ç¡ž�!¯ßÐBì Kñ¾u´¨#ç9Û¶m6@qÝÆš{9:gkõ­îa½i’é:w|Åz Y© •Á¼rzÞ}!¦‰¡QŒ^¼Ï�Yv¿ÉÚ{¸^‹I…ï�Ÿõ¶ƒÓ+\?·q•MIý+¿3.nÁ²¹±úë§w<ÔP$ªýõV[yæïÁÜ·[äêÑûÊÞxò¼•ÏÞvà–ñJ‹«ô•˰ØÖãàû¨Zà(×Î�;ðC§®ÍQÀ¥—Ž¥N³hñÈ<æyâ·Ãoù^^ g^䤴’ì5s(;t �ú ½ÛI õ6ÿòS'ѹq41ØìþÒ|{wžUîÉN±ܶ-2a0­ÞœgÞ½Œ]‡Ä»T";�«^Ô\Ðñâ›´¸ ª]©à¡ŸµnU˰ye÷3ݪð$Þ,«ŒÄ›a�/˜ŠZ§ë…¾ýö¯XÁû+àТÐö¢o—†ÄÖ ßsþÂÍMö4lPèðºϰ§£ºŸøž.—/£QO¯e0a âd§Nã>ßîß Ãa£M¤Yë Hû�ùuÚK‘ÿÜqnyl{P’~ðÜ�eóMXé—оv©�`Ê]Ô¨žôK[Éo¨Qo*´­¿%�ÖØ+y,ñÄ?!¾Ûyüº/âðVéè5›bïIÝ “«]æh¢³ÚkÅYÒÏ*ÿÜ›¿¨.ñ¶‹)¬ûË'�|“¯v‘Þ“.<ñ”bîó5º£ŠˆÂòÕøÉ«aóRñÝ�®ïŒEÞ#ÿ²‹VзÍò†â´ô– ½>üÃð{Š_6ZC~£n�·äÙ?¨Çiœ‘cý4ÿò–â ÄóyÁ`6íîÉ^¿›P]ö*xÆsßÙ]ºËv}ÜxxˆòÏ´#ÿìÛKólŠÕ垦 zð½åŽùß…ïFœñÙe ê(ê.☹™:¡¨O(õ_t�ÿîdíubèžû~†Þ¦¦~ìÊs$7öŸ�âòŸâ]í@³œ-ƪRGHv´oÔQ‡šý�{NîÕc·î�"ÓùÓ3=aãOòúß°­Ô)3/=šKd6¶ªNa¸ëa!û­m©®ÿ¯'‘Ÿ]0¡×/5¸C‰IàNàÉ=üFÁIÁš½q»>!fÖIƒ=,ŸÔ“ñpP‚yÐO>vbØùÅ®}žlcõ ƒ3.àVÙ¬¿g…·Ào¸¦þËʪž�ŽžzËÔºz`j¬µá)zž° ª Kð°�ÓÖ¸Wçi7Ûm~´ßð¸¸J…¹ÎkƒÛ:ÁaQåjÃÛbÎ=f±l£“ë�‰º» Àg�gûákÄìƒãè‚ÅÁÀchRPÃâ…�ExÓs°Ã¾ kZ¸•Îðøu),1M,ì=yÖ`C[–õ•”Ç¥Øîì)º}‡X,�W]`|ƒ§#ÚØŽ¥‰æ¢z/QkÃJ'DÔ¹¬*1;š•ÁMþá)T÷ÃYK} Ü Ÿ·šÉÎN¢Ëu÷½7�CÁŸûxª�Ò¨4±¿¾SoC‡kÿ{íi‡Ï¬ '¾ìÝó€»¼ÇÔîÓŠ›/o—àÍbóì7$lê2]§µ—ÚÖdÝÄ߯îŒÂôæÉƤveFÜ�$ÿ Óm‚O76vçb±4ô£hy}Ú¤³'!FgL²ÌSièU¿héÂ_ÝüXõÌkqP‹¡á¹ª¢;ztÏÆ,¦*ï÷Gœø­?¼PÝ[öÖS*ó1×; I>…î}í•zÊYåh×de=$ ò»¿ îWP|ÜZÅêÐ.aëæ_ìÂ>ã´gûÖáíÎ\2þéÓí®ˆ›9½ ¼óÃMAD[Èó‰Ü³ÿ;¨F³PåÕÿû&ªî÷þœ/mË D"/eÉè{4S£ÊÂð¥Î™÷<©ž¼™¥igF$õK¤w&»ˆ•]÷,ݦr�ý|ïÏí.jRÀø ­&$÷ù:šÕ7�Ø¿ç—-%œ�é‚lÑl�ˆãùƒ=zõûµïëx\JW�.É÷Š& ·'÷HÔé´gOöÇÚw~÷åß�}€[cÙ¢·ÇÓE­(f :Îðê*�ˆ0n¾r3›w`6ýrl³Câ¨þõ4gošÿ|Äï H=+Vè"Ôò*%}ée0™ÿ ¾Ü}¿H¶$¼#*Žïz9zãâÐÏÛó ;Ý%}HŸhuâÝk^—2\}&Øè*.jtößߪZL³Ã�ò¦#ïYlÓV½ëQ�g”Ôñà‘嫌–íx&?Þå¨í‡‰û« £Á3<ÜÎ_ëeÄóu˼Â}TéX0¼zÀ¬t{�çÜ`Šb °ÑæáxÝ‰×Ø~ðãÎbcÌCÀ+ /> Ÿ¯ð=ÃÞ¢2 ø1·C'<ž,{&Á# ¾Z÷¼&þC�MO“7 èk±9–E�Þ,©çüA=‡—õŠçÅ<Ÿ½O0úBû§—)à5ó—Ûõñö´]�s>Á“m>Exv²z€65~¸ã˜¹–eÖ˜–²\—lš8©·ùT%ZÓâ%:'«§ otœ¨ÊšÑä•?n/zéü�è=@kRa?÷ÜÊ­XLSÀs±,· „ÓGÕÏ—O”uÔÛ%õíxÑt–N›Ѧg·Zˆtà†oñ!Ãb`Þà Óª þ ñ4HœÉ¶Ã"/ô zà¤Y„åÂ;cÁ· b�ž�íÐwi²â¥VZ€èE=ŒÍ3ÛbÌ•à47 îROÌÎr�n3Ø|½|PcožÈF�5féÚÔì{Š­5kjm�`†G4²‘ÛüŒ¢ž|3]ã˜!Ór�o<‰à±ÌÁ®æj%ù}ÉÞ‡š&3æ¡jžØWdg¥#Ø©ð-Ýl1ÿÔÅ . =ºIJ²Â3dÄ¢Ê<pâ9?!{÷i"ÎãcN N/;±”¶Å£°Ê‰úM­žQãÁż]ñ3O–¬oàZ¡žœ„˜Œ„£n꘯«Hcá®ß‹£ <%�-t¹ÍÍX¶æ£]=Úø®Ž‘0 ƒ£æøuœÁCWq ç Ú<™=Õß£×•Ž¿-;å€þ&Dç³`´X;àz èícÖ‘èI÷J#»¼z8­WÀºQÍBªöµÃìLgnvHoÓìfó˜dÝ«n¤Í³jýnž¥µŠ‚G=aüÇIc/Í–-ÁÛ¦'ÕS§“zd^Õ<·q5Ckq4dzj3ÔQ¼ÂRÎMiLÒØÊé`¹Çƒ.;òàú÷ŒÖyÔv%ñ0‚M_ÝàA{|ÂsÃr‹ÇÖÕ Y>/Ë�7&®c�Ñ øál1±®°XqxªÒ,µÌón3 ¦gÌdNJlç�ç ]þèõ5ë±{œ+ –üÝn /æëR®o”5ó“ú¿‚!Nˆ‰eë &º+ÿÙÆÙ2Ð̘y2Í€*§eÚ9nÍ¢çã6Ä8U5±z¹éaÜ9g.iÅcÍ£ Õ±ß+ö¢„wPÍãñ8>Bï-˜„Ĥ˜ø óþË:¶\Y:Yr;âÓ<*ÎeÉ ³oŽÄâ4x§‹Â¼bù;Ø›�17øKÂ�ÝX3^Ò‡çD`+#˜<²Äz¯*ƒOy‚�Gm­—.ð =C¯=`¾ž—´ž²q‹êø<º¦9¶~7ºw“˸íÅ£ Bý?œ¹aJßæŠXï§±zž®Ä⻚žºé+_°ÊÉRl—ÂþxPý÷´,A×¾ˆÂy4:¼(ŸD3Ëä.ÏâÍ6z®ovnkP�ÏUÆ9½É•7O‰¢>òü6"«ù¤ÅJ€¹~5Oj ý»@Oè[m¸ñÆÝ-�Û¯}\‹ 쀘ǫÇs~®ŠZ­£ÛH× ›§ WªýFI_¿ yûÓnQƒ/ 'Õõ¸€ mÛ·´L…ËiÓ ]ï6Pª÷8"lijø%áz"9¬¬][±.ˆ}ã¼HjñѶ%½´‹‰µ©ÄtU-º0$`³Sœ¥’Ô§á6 %~z<{u2î¹Î.Z²ÿ[ä¾q÷8yjàeúae¿ßÆonþ¹FeUÌ-ܽÒO¸vgÎîÑË×ó×î>¦bVȾ{ ð^86w6OòζN^B|@Ï‹o<ÐÚ§ìÈ?婽‹ŽÍ+ÆQV¾Y~:(à†�\Eùç(³w‹¤ïuN{¯'–)wÖ_ˆ×¦¹«�éuÍfLœn—Žô¯'maGü=1Þ�f×¶ÙàÉEî\i¿qæ›Ì#\þ‰óy§g¯• ¨ÎfY´5îV°õ5�¦øŽØ],¶&ÚÏ}Ös˜öô,»õÀ=Y¼;u#¹™êL8�í�Í˼wCßï/�§ƒNëÉ�ÿk¨‚ü&E§3ŠtßÑ÷™&ÝûÖ:¹xõÞ®|d855’ÐGi�ì Q;w”Hjæ”xw¶z¼[µ˜—kÙiÕJ¨¶§~úøÜ§±WõacÑÓ0ÛG‡^ÑÙΔš îÊ QÔ¥A¤çªâàÂ�øT>7o‡;â°_¤iqcï]"‰x©ôä·/Ow2Qé�¤š•ºþ®“ANDØ™…Èg5ÞìòŸŠr‹U^H Í(±÷mó..ŽCÿ†µx96£7À¶s•Ä3ãža„e õynoÃh)�BGß5q5'SŸ†¹ÁÞ’(ˆ"Çë ÎôvÉ´0Þ.¿½é‘}ùVžWîÜó×%ë.¦¸ñÅÜà•ÍÿÝ"Òå5ý-zH`cÝ#œÛëX¿ �å‡ä�ùæTÃÁtoJƒrù´y�FP: XCÝ?îhõ;õ©Ž5‚æFWû·=½¾^/§tSû:¹;‹:ÉÙòÛs§g\•I.ŸÙ^øé­|-DEÅæÃìš·m\ñàRÕæ•Ó…²5Úóî#×m}›(h5+öâl å_'À]�¶ëÏßÿ�à³Þ´“„öÒ—”u¶I¾ Kâù%ЉòBÏý¶ÁPAÖ úõÄW O ¹‘_)/“Ywt‡ƒ1Т§a<†‡ÞåƒÆ¾ž/�°uaÒ<‡›õižDÇC‹Ÿ ù¤1¡7‹ÝÃ×[‡Ã�~§‚üÎyÉúFS̵Ên/FðÀ`ýâ-z•ïk¶áõëåªueˆ÷¯�J§›Æø“�ð�)ž‰^FƒƒÆRž›óCEé^AvW2O»=’”¿¿«'«l¦ñLáâ�/Ùr¢îbÚÍ{ê¹j'�­%×KmGDÑŠ¸ïŒlØbÁˆøì)-ëV�=yNq\£yÌÁæÃWzýé›$©øj±hRl›R‚gSÂuE鄬׷ 5+Ã{ëüzE¶âñ;*Ÿ‡[v«‡Xg–­jü ô›?ÿí¿ p­/‘Šº»p­>a‘]²„ž”$ñhV«!«p–•íóªß-½×m T̃mìãG¹G¿ñî8íÁU§–¹…'4!V›½,jÙ\M~–³Žcx™k~LÈ^mÖsO<‹^3ZŒO¬g1y@Ä ¡ñA¡¯ž’�wtn'ýlÙ×ìõÐAhÅaº©o�²e'„ÌbÇÉ"¤ó<Û?Pñ ¼¥lòYu|¼m—ç#5¯žõp›÷¬ãà¹�� 9,ëùœ=�WPÛÿˆØló°Ó¿-›­e¶õÅÈÜàYö€Í)¦äŒÐ£~¶é:LQ~íÅÃë :^JúT8 Ù�Æ�ñúbëçƒÊÍ<!´'¼1󸍲~½öµmù�çw�\ñÎ<,�›yQy:Žq¼E×KíÇëSÀ&7£?<­‡Qy¹Æ8¤ûÅxý»w•ø˜ÐùÜÊ—‡öFÄ zø�¶ßž‘Æúá¼ÝZã;M`в¸úêüŒ ø`´·9ÑÄÞ”¢O™Ñí#<Ž?]fòÔ|BŒÐn^ËøÜD¬ë™íñFœ- h/·oöFà\ë¨1}«[ÓTcŒV#6ÎÒœm�g¨gã¹\U0ˆÅw:ñ�#†=û’.è(âµþ ž£ψ­ ÏulЗ7åç˱ǩéšÔ7·†0:T÷°�ÝzjAW˜iOÛˆÉé×ü=)õ)wJ…+q=�ÊI35 äÈÞ›Qkã7ÿˆ !LB?~\vÝúYéÐÒÎ3*u¦ý˜…Z®“}0Vøîé ä�¯ŸåûÎ&RîÏÏßöá”Da¡7‹_ qç³ôáqæ¶½ÿÜë÷.>qÞß¹‘×5âyÝø¹Þ.`À ²@¿Íq:˜I¶â*î= ?µü(©~¡_+ÿœçò­®›â4€£g¨Ú{ø¤„O¸N]}Ùv�ù˜ãœvteÆ£èÄ·ä¿×}‚QK²IÔÍ\êºy*–‰nEâ{Þû²s¯â• x²C‡ÖÇ+ÆW­Câ\-^xJýä¦ÃDÛr!Œ"ó6w€HO—çÊÜ| ð9ß Mz)ß/Ðî ßN±*8Ô+æÏ¡#»ªIÒgºÛ3qöã]jF±È‹£{F6$éNWž˜Þ'è”.üZêèý¶Q6z;p÷÷$5,­[œ™:³ÑR`8×¾#çÁG`ƒs\zíðt­P{éÐͪêéÝT2—zÊE:Gù3†Tå}©ÛçÅP+©¯_Åãìu�ängÔÝ¡+TõÁ+vß¨É xÓŽÍ{bþswv@b·Rå-­)zÅÛ ]u*ÔGÜÝjÅ\Í�Ó†¬oä&À³y]þ$Y¢û¥k6rw”L]jh2‘uÓžü7ÒŸûmø‹¾ÕÒ’ÚæF µ'5%$CCêÚ£`ý¥�ö®šãØ•ÜW»%ؑε òy)“ÇÃ_ýÛ�<Ø|“ JÑdƒïÁ»cÿ½TËÙÁÖ!q¹Ó9ç~¥® Å�ßèÔâo·²ÂÔò•ÜeŽ=}åd3ÉSoº×¨×—†Þâ²Y…{=ÅGT7ú¶ËÉŽœüÃfáÏë–£<óRÑ3]ÝY± B�Baó�ò¼—‰Ô?¿)óääL£4úÀÙF?‚š&âæ?[¯À–Îö¯ò�Ôv˜+!ï_hr_ ¡í:Å(et³è[ Àí‡íY!;eèɱH«ÔÖ: ˆáca¸¶‚ìµü¼ãñCLs\>9?ë"üòHï.k}¼ó.²ú~õýýõ—… [?õ,Z^ž•øÃ—Š·ÅÞaqĘ= ÞÂcVnÓFÜ®JÀ¸šÍõµ�Ñyr€&[)±Bœ¶òssÖñO|WûýúsíÇ„cýúQ�Zø³å/¤Ù4ù¤ÕKK^ó|6Ï®W¸_<¶¸uÆ]bj@�·l§kÿÒj%� žwóWuh?À�ÓK¬5*ì ãÒì´¯øA‡CŠÑeµ¯³pæncŽâ\°�(ƲoÙˆý¸g™V¸ÃëÉÐ'��<œŽÓ>Íz4õjý‰`˜, NÈÆ ïÍÏÙAÕu�?)!—GsåsG¦+>ùdr.æ!=¢�Ô4Y8±à YŒÏðˆÜbf­ú‚…¡Ýp¼Ð%šlpŽÛåáöB=ë¹ÆðÙšŸÒlâV¾¹¦±”´uè̲lž†8^ŠøŽüÍCrx â©8Dùï*?N·ÇÒéINY–mª,V+ã�Â@'å£ù:QõŽY7;œ§ºÀ†ˆHݸá0'ÆÂÅ»Xˆ[Y�¥v¹h¬ž:Uo¿NúK1ðÌX"ã,—ë í>8oÆ<¤obÁÄËBÍ$ÝU!‡�`™;s·ÅÄ|…µ ò¯ÉôŒž‹³ùxÈÐM³òòãÇ…îz0ÌÈé6³ÍýFTd|Õ� —yô¬)Œ’ÍZëŽp-˜'d¯EÌ»¡È�<‘[â$±õüžíæª_-yö\á@²îPdõ¤…gçÃH=Ú à«²«Dc’.–�Ü<±‘…Þ\+,ùô‹Ã©WŸ®ùñªžØW¬ãRå.Ënb™–1¶Åf]GèÝëÀá¨öh¾Fý{ֆǛ½iæÅøgı<¢ç ¯[bytDÌåžBW˜«3z¼`dërw½rAÖ^£³‰ºe½ÌêÙµ ÝPÒäÆ2+ žf8j_SåxüR@ôòØbz<„e"�XO_àZwºBšüŽ é›$øé—ØùñÄ~[6á56¬¿îÕ/u¾€ç“p;.ªÏ|�×Má<)‡Ì‡Ã6Ô¡¾©!Վ׃ێ°1u7yëw½Ní¨Åh>Â~=Ã~m—×õE’Œbï|vj÷ysÙ…)àPí¶/ž¦›º1ó©•HNk9cb/TÜÐßw®jÀŸ�»y`Ëš=ZåÉsÕ““5Öi€�/>¤zÐq¨s�KñšezûúV`·^°{"âhìM¶z~>+ܗ˰QËb•ñyY¼ý¥Ÿè:(-Ì`wÔжc+a n�'l;½^9rš„"e®�_ Rù£ú»2b¢ )›W$ šmÔ»çúðß[$¢—Ÿ§Kïô<Ð0›Žlµ³UlVó�ñp_©½M£Ü‹ë¦;?¡�ýOi•�P&D«eI\ÿ;¸¼ß¸É ¶ï»ðYnÆ¿ÞÓ”Ýû6¥76¢¥ù–½6ܺsóÎþýöxî}sÿùs·q�7ïç?jejw¬âîI‚Ýk™ûõ…�Wïni j·ç¯"©®ìPé®üw ï ä¸D:t=ÖLøDoíм|šÁÖ¿¨+̃ÅG[ ™Ý;½s3ty‡®# Orœ¡w;ì�W æõ—S‹Aî$#P¿Þ5$L¸¡^ ½%ÿÞ´{Tã~ˆ_ÕÞ+î)Ò¿F!û j»Îõ¨ÙzüL”MH[ê\•Óå¬Ç÷ìI±wÒÖCÙÉoŸ®ÜA0±£²š“{[ÏÚFð¶™n”ÊŽù{‹ŸçJ´•X£Àéó8SW/ÄÍ ½Ñ8Uþ+½T±¤ž QÕ“Íú�"ºž•»2e=ú϶V_ïµÞû°èÍ;÷J�3/JÁüí²_ð® ¨§ FCó¨2:ÃS×xÛ?�u3æD&›Bo¾¼n²ñ¾�±8lf|]g•¯B ­²[ꆚJ|ç>QRÑÀÓ=�Pxˆâ£Y¬í¯¿Ež½eJ^ʆñd½Eýá[Û÷É­ïX³™‚½�Ê÷”0%yÌ’*R;…v±gYaþºàB]ùíÊ|Û§ï(Ï5ï6èÐØ�’¤O¬é]œ¥ýêu†ç`v,Ý<~H,wnï‰_;7í„õÆómù©é?Ù–[�³ýÆgùpfß÷óÚÓ~1}ik1J¼ÁAeWSÒ£�g jÜÓ½OW�ù>yÝij·ÿÎᛄúD{ž�ŒïÝÕ¯-5‹]ô-ŠÂá �£f0[¬ ›„.Ë=yGwEÿ*µÙOšìÉ¿¸úÇÙX�,Au%Æw `Ù~ÖÓ÷¿¿ý^è;ÛÅaþZÚN.N²†'�øåQwPùBã�É×i}¦€×Ûõúò5Ü¿ä0àåüI óòA‡dq“døB=¿–ÏŸ,�/*°ÓwõÂUƒ\ð¨íÖð ¿j¸z®yÒ\A~VOÀåÃ'LRÈíóxRø7ÍŽ¼f-ÞœNšM‘ÓÉø²}Žˆ‘ÇÈŽ*ü�€w·˜…’~<»­ Ü£ï1f).›Ã3„L=)åE]@6þ_á^õHÌbø•,“�Wù›¾Æ8?@ŽƒÒaoôR×Çͳ°÷ài r™ÕÓŠ-V⬞nd1‡#æE=Oíh“?éÑ0ŸŸ¶ßËËo%ñð²Ñ´¾^ �²‡JÕ'�Çq‚§ç 1>gõÈÛbM®r³ÅD$¥/QM‚J—ò ørÐy²l¶VR<Þ¨[–I=`‡ÃG½OÂ5vŠ>`™§YÊâižrùäÛd”ZY «µÁ�!”¨œ ÛΠÓA=ºÌÓnÙ׿IµÍ#ŒžßØ¡5{²Îï, kr‰XF‹Æ„ ìãô„XÖPœáZ$ N?‘•›_õc0ø‡ƒâÏ[)Ùu§ÒGí³b!/*‡k–âíZ0%¶—óôÞ~!GÈù3ôÜ)+‰TÐ_‰õ�Îõ(-.ãr­¶—M×Oå‚“Ç'¨ƒ(Föix"Jq4 ÐmÉñïÊÏkTçk˜ègª¶Á˜Í-ä´w¦ò€�WËY�‡ËPiÂêG…ök™¸á[ÏfvW5goèÔÛÄ2›†8·ƒ¸G¦âñ¹Ù˜µ*²oFÏ{*ºÁ¾nÚÐ’¹0N#÷“pãï©VaR„œÇ+‘É׳¶ëóÐIÀòäŠuæ©ì†µ:Ÿ¨=8!{ímÉჴ\°n<–@?ko¼=àû ÁÐG“e1†z°ÐÖ`8Á3Íe­\‹%)—«Å’«±³¶çÀ«nžÀüoó°Ýƒ½K6¿39»êí¢ø"N=Äbø#[ÉŠ |ϧ%È¿½€ñÁæ žoæÐýP<îðŒ¶ŒéÌzdO¯„X¥®,˜³ÁÄÕLèÒ£hlºµLs¹Tb2j»4ªMêz žfãQåÒb'–>’�˜:4O°‡�ÃZ󄬧 ºÕGŒáa¹`~Š#·÷à²çæ��f øÊɬHj�t—7(XŽ,ÿG¸ Þàa8Y–VËV З'xÌŸc?rT¾n}Æ·å¤=¦ŸʸŸo�SB,Cg7ù„Gïòž¤�ð°3ò=Aî> ±}$‹×A‘ë›ë¥o„NP„“n¼Íc¥�£åRnYë75V ï{ xÔ¾±L§iG_—�꫾w²÷Ú›ŽS\¹pD¸\Ç{Pô]ÄvÿÏ bt>0O/“‹Á„‚°¨ÎeÝ̺vFDÈ›\ÏYˆÇõ5ت”ZmȾ-…ì-Ƴ¸Vøï©413lAºõô)[eÈO‡S€ëˆÅîı¼íñ‹ZábŠ÷Kß͆A.¬x¸¬<˜\òJ ôÃiÌܶ+&¤W¼Ä¶GL¨Á/<áˆÊø¦9º ƦCŸ½âë±Å%h‘ésƒÃ- Mí ä-â¤öy9ÃÏõ=ž…·½r[ôn9 v²VñéиC»ö>E^Û³Ì!·JIýï°cƒ…ÑÂk&OSã¥Ü¬ó-lpÙoNü¿Ë‚\ëK‡é=|Þƒi›Ú4²r¯8‹§_«~-wTY5´kõZÐY×Rlî/F_ 7Çn‘øÆ JÅ6xpÙöÚ vßãÍøÓñî»°¹WÏó±ï‡{8U¾ª1=_†§L¹ƒ“Ä®ìG– )ãëí–ù­ßûÒŸt¾Ã5ÚòÌÜN ÷!·¯�0ÝûY.z-õ’7WwçûÎM�zc‘êÏ]˜N0݉0µMce`oƒéÙnyù �:º¿c�îîøÏ‰C1õ+½'æÌR@7Ë3öõü�.ný²/VokƒîÔÐ{Pˆ’n¢Ê©{aÎsìñhvVs÷Ù1wÑfV™l¶»Û�$eÒ&Mß’ávñK7B‡U—²ûtQÑGøìLz¦nƒ—ûíùÐø»Š¿çëüéÙQcÜèzÓÌKF¾G&¦v9I×…»K“;%«½Ý%*í�í®}¥ˆz€qÁ½¾¾-MK_^[¸Ìo£–87ªB/MŠx‚tªí±Ç½ûþš3¡ûbè>ßZ׬ÀcÜÍ©ûO*²Ø´ç¨.›åx œZ6B-7!ìúlY¦z–£ž¬Ç»ÌŠ,I³¡ÙÙm ÈÆ]i¹¢ËpËZ ŠF+wYnI‹ Öüq¿H ÐïÜ#¼ƒï½%k+¯ó+-½y‹”¼vÝ~pl'r"{œ¿Ú“mCIu*奌&n"J|¢…/¥*|T_)®2¥WŠ ],¯�¡³º;IAnß*”átÛ¾/?ÂŽöêÑLjm·2„¶÷£ùåƒ2íð¬;ËÈB4³ÎÒË+¸Å'gµÅŒ¬ï>?n¿—ž�‹ž©.¤é †ùE‰vDVØ×£»­<\xF”„Q³¤Ê#n½?ýHëü€vŠÏòÍA•ÓS¡áFÄÌ+1Æì€¼œÄ 5ÛYƒdâÝ×úðøÑ,²Rb¨…’7Üjlt²?W¾! v¬Aø‚ú<�Ú~7üRƒ&ÈI©d�=$PØÕ? È&ž'xà!&å NÄžE–‹zèÑá…w1ßêÙÃg•n1 ×~ÔÕå¤ þ#<ìʉ»zÕ“n˜?ÐþjÁ[£ü¯ˆc1èfxt 3äžVóç žzx®×÷OÆ·vÈ¢Ìvô òƒf³ž¿ßÀ³jxÑ,œË‡[µ Vãp5¾TϽq¸nõ'à Ð"ÓÝùº_œöa5eæV<¶,;ôlÁ–Ò2dñ¶U´ñëG” æù |÷p tëÊÙZ,+“—)±é"_ÔïiHÀWм2¹>ýУyZ=¸×82Û©X5N¡ÞÑbíi,N~þÎk~Ô~¤yã3<µ.“ÚO`¶@FÝ3\ª.À(ŠyîLŽ[A>˜YÄää#bR" ;ÊO3båpŠAx`ÅÛbxaå¸ ¨ ãDVŽÕ•§Ø—õ1`×lÓž¢bíç1ÈÅ3L\¶Ôvxäå™qR¾LIZ™à©g¿A÷»b1(áÑÆêi¼L¦P?):ãPé&�lóó‰h‹Á¸z|nðK÷Úzf—9öÓÓ{dÚNâá‘ñfÁðôó=GJWÃ÷@E®£l ï1ßø@ ¯Wz�γÒ=XL°ñ¨óô2«'Ĉ,Àk¶ïÀ±ÅÃ�Íûƒ‡ßÂå×ü¥ùâì&gýzDÌØ.ðb±n,6[Œ°ø„y ÍH{9ŽÒ,M¢ ¬‹×°¹ë+6¨È~¿ ˆEÌVP�¦Ç‘½o<˜¡ŽžSã æPvXjÌÓ~�üƒ�̃ê0ÆX©]^¿SxšI¥×½XÌÉ5ÆäB÷Áb@]Nª§Ï×CỂŸCöúܨºØ« c¢�ñmëfÈðÞƒì~] ·r¶ߺNái=ÏÜ¥Û‚yoê ¸½¯ ƒé�ǓŦSúŽxqaà(ËKoA-X¿»K�‡œ­œ[éÊU¶38Ï#<4,Äé vêà\øµv?À^ɦ¾wþÔ•ÿ1Û]-ȇÀõí³l>%ô°,]|Â\þ‰HÇg³+ø^<~$T/9ÎxP ääxQ~²ʳ¹ ‘×"V¿ÚåúmHügÍh¡7U•ß,Á˜OÐ _“Êáôõ|û€åð<ä~c7’ûîUêÐÙ;ÒùÆEÞA¸ÁbnÃSÌïð ž—»Í`_UÄP]³#¯•˜èI¤‹¾ù÷/ ÃŒåë—ášMW¨ÆÞYY¹áùçxjŸgbÌYÀqÕ"ß2žÿµ¯¬7ÙÛ"j§æ0êºé �·ý ™÷íD¾¾ÂŸaw¿Dšê+ôæuVúÏ#øõEíÂù¬|wõžÍsøñ#ót”Ú—�é}!Ýž�-äZN ²Ìb GåpÖm¨Ûu êhU_,€Ó�Þ–�¯À�öŒXñ+!Ÿ‰Üc’çþÈàdz"ºy¿Þ8êøŸ¯ºî°åƒ½Ï9  à÷o.ÊP�*é3<ìmòŸ'ý|48·‡´Í'�í쪠_ÄJ\q)†{ØÔï¢ýßÅ´ (r»Ñ¬¯¶æù(|E…/v5|AÁÍUç¾x-]ê$u�m¼k‡gL)3 º×…v ö«3/}©ôq— ^o7µñ^n�ižÂCmá¿À0X…ì ÚÆÐk�TwžúkæÍN½r J¼CT%_šã|Íà -w±ª¸pbˆL§ÒÑÕÚäKÒçöx_ž°8©öÐ]c˜î±&GÈBAžÂåÒ‡795]ÕLÎ;¢§%õ-Òç7§‰†NÀ†w†'Ô’Žœ·d ‡®t¼çW¤K£Òܪ{cç¶G0É¿ !›…ýæ´t/´§ÓúRÃôV­*p�Ù.?ûñi_ùÀ±Sµ£‹¹;ö?(c.½šm·B;j‰£Ng¦Èdú�Ÿ¯ÚcoŒ²/Ÿ€å×fAô=g6s½€{ÚmGƒR�Š=¾ xúÚŸ ï{óÇù"S³ë°Sø.æ¹Vÿ7TD™?ÿùvá»—öÍzhÖæD9ž"wàOðŽœÛºÎóƒ—ñò’õç>¹]ÄnÝù`§½S­Iš*ì‚>“-qèßýx;Ko±@eÕŒ”!ͽþ%|Æ{ÔÕÛoñ”—3¢*ÿrWþ÷áõ†“ïwëq?5ÏžÄöPó²Ú˜zr½p÷Ø¡Ó_ä§7ꚉwõ�òx(ÁíýþÓRëwd:›Ñ� Îüv†33èSöabr€Wáß—ÿ®ZJ&´àÈþY»ÓΣÖY»†ïìçYÂoåjÇêï)r}¢Èš½ÒS!�wÏÏ}™›ø¹W¼žiy^¯X�=™PúHhe“ZåßǪó¡!$Žƒ¨£³ó ‰kW)/°ÿõ±RÐ�çúØ^Û‰ã?EDyM(/ØÕ‰k»(eú|%©G 2ëûW~ <Ãæ”§ný¹±uä¿O?ªö=ËKÁ„«`sªüDw²”^‘¥ì{ˆ±ðd7ìLGß¹1ÑÎZõPq·luG%ö’»IR]<Áʦ I<:®ÚßêqgŒlÄšMWÖØ‚?Þ®-_#˜y(�ÔÓ�p²OÈb¸ðEÇñ¬péñCÄÉpíÈçØâýzÚÆgʱ{³óP¡Šðp±“T¡ð ™­Ñê)²›Óõˆ�7œŒ7GD{]¨ÕÀnsL\IJžñ‡Çí÷|ýÑVo˜¢ÐX·Ç£Ò± \ ‡4QºY̵X¸5F� O=0–§2˜a‚€!–è^7�àÃkÄ•„ã¬ýÑs{˜tÃg�GË&[Ê1ê>#æÞê 'ÖÈÉNdYø‚Çd¡‘³>¹„4“®><d†gèxhhp)®.g¯ÙÁÿR<ßø¢ãZ¾B–ÞçžÕ"ã Žc‹Ñ¹=ÀŽ‘Ÿs{‹6g¼îá,ðl°ôUÔY%¬xœTYÔCxáïjMÄÒÄ&£Û!Á‘ð{x=�Y3øÊa,x•øMצ·:øÛüæÛöýO�eè´É°¨nøÝ”jV7Iôžaf†‚_Я€#ó£ê¿ñ9­ù˜º›„ÓƒÂB6çr�躞±ÕæåÄêÛÉæQ]ä ügz±âÈb>åùÏ$+øj>%é©–²h[‚Èp«¬Î4O¤-b)K&xv nµ÷=bÓRŒ*ïµÌc‘8£z€ ðpYžoÛF¾êGBL]JY*l“Ô³®<Àsóòû ôãêÑ�¶œDíïÈÑž‰ecú±±¸Z,/š™µ�õYVM?§_wÄS2ªu‰HÞsØøq"Õ+ãmt]ÔVyXçÄb:ް÷¶0Çed=ŸÙ<:ÕgCC½±Fqóm±+·Þΰg³ž>æy-6–˜WUbî³ö?lYøVéÕÅÿÏAáñ¦ë°ù„Ø¢6þ°QÏŠ�¬Åð;Ä`EbŽæ 6©ç­yV.×0v%Õ©›${ì_ÝÌ 7¶ô¿ö´w© F–ø-†ÒÊÏ[h'ç 3€ Ðϲ7—¬íhgüuÀ:wJë£bþ@ë aÖiCp´1{þa4¶ Ý<¤bÓP¼§_3vY=Ž�E•´?{è:/jo'èô!ëÇýÒ«1ÓÎ<…8á³€ŸŒ®ÖÕˆîûZ¤óXš<÷8©½uøÈ¯Ñý(œ=3Ócúx_ŒÈš:�[ =G†e¨TüL®ðHÚb%ÞaXóœµlæã¨ÉGK2Ï!Ë.=À3hGnÚÜkk1ËrR[Ã-/×=®Û?fî�±��QT_®±õü¸gðÀGxÐÙãÈrqÄxΘ· m7„:i~ÊOBàeÛT1½—é�ìÇ#ø†]wÈ_€Ö/£öó°p ¿©Aó¬�Ü5a}s8°ËrÓ߇ì‰x›îðˆ(U&ÿÏĺÝyX–ÎOI‹ù>XµÌ3èÆñMˆÀîLÛ,®Ý·ÎZ¡È)<³§Gè„¶ß¶ ÖõÄ øMÈ¢|x´7@ô÷³(>×g?©›X6?Ï2oí1ðXŸ¿-iƽ^‰åK¼!õã½ÿš¾"=°úŽ=,:Wú˜Æd¡ð ^àéúáYû¾XÖÝIíìšÝxÝ8¼™G1bJÛ ;óRµ4;¥(;«…:¾ žøc°¾†Ùåob=¿Áèûëñ»÷Ìôž—±ïBhr%7‚éi3‘RÇ×/±ó„|ËTò‰w\t…oRqFÁá\˜Íõí¾÷°Z†{Nº¤P$ÐBܧt®ÅX!®_Àk¶ÅÙ�ÌúOœ4J|›¢0=ëTXL»¬NV­ïiãaæEt%~é7•9à šMâ™�‡º¥âTYM»‰ä�¢~ì éÏs‘¿ß+ž›�Wø[nþuû’ô]ö‘êáϹÎîÍR¥ÎÝ`^@ÙMÒzRÀõN##×»æFºW‚NècSkJºLžqlo C#_YâeŠŸ vPTRS YGQ娕À ©ÂªhB¹Û�šE= Ã$Qþm¨Ü™ûšåRÚ1Ú_‡®V­®`q§Hê¥zžKé@Çßn’Ü¡@§+ žçyõ©âÞ‘ÿ»›öK‰#ï”§‚Îúa›½¾Owÿ·SÖ�ÌÖ~Ñîx÷”eQ…GoõØýºw¹ö)ñ§ûÌ¢]ÅLèm¡t%ôò›XÅK·×.ÛTgCÊfþŽPH—‘u$ïçN@çuµÖ‹:åž—eŸÏ²ZòKò›¨ ‘§=uá×m‰|HÝ_û×ú2os�ÿr·'ÿÔ“—}^Ûe?©z™’Ziè“Á{1y'ßÔõ?SóôúN½" ^¸èÒë{ûîï[“{jgoŽ1”Òí[,”Fåß<<Þ�ÿ!vâmÇ]^èï;jªùÝL¿W™a ;‚õ]YvXxo¬]ó¹ÇîiÜX~½‹E¿•�$ú�dù_ÚQ\Òxxž•™]ƒ{@Åé:éWÉ×vù�“¾M÷�=Uœª7ý¾wŽœößîuusgr8µêñä23¾SaEÕ$Z³ƒ�›ÛõÒ¼§Çþu“Æ™|Ò}�Úÿ]>ÎëþÚ;Ù¾ »kÒ“»ƒuyµ­¼»Îa|\GjŽB¶‘IõwŸB�kÖ7¹D®…ê™IÚS²$pùÕ(;{r°™RHפA©ø‹Ó›{›í @î~÷tl¶ìÓë²§_üEÝSë ì†Ì�ˆq";é®°zØF ‹]²b0�_ꉰð« ½|mÙ.‘î Ù@y1†¿ÌЧ ‘öYÓØõb|>KœÃá¢Ù�iùw·Eèòá«Ò[x(`¢,MJxl<;{ %oômð“'YÝŒ¨!ÞŽ© kÖPP¢|$¡é~V~ÔìÀN+Yö.A¬µÃ^ >ÓúŽ'Öú–m !˃zà˦ºÀc•ùì Qé\b’Á×NRì a¢Ë˜­šÖ8ò„y.ZÎ+üuÒ <|=Q¸Þ²Øˆ·SGH:2Oγný5€ß—”ÆÎ?Õx¹µ,µ¡¬|:k¶]9Œ¡ÿYTgxH™ÎÚÉYZá±%çˆNÁ¡¦¯tÝrÑ©$ÞÔvËI=)øùâH¯E]répÖ£ßå6†gd9"«ò ãž5Æ�Œ–�H–ôruãfÃÈŽªû²è!áË0™¦,Ãu\ 8õŠ 6&7?Qõk°êÅ23u�»Í›Ä®+Yø�u˜�-mÍJ¶6[&ÍâNƒÚ‹a¼ª¸¦Xª­z82–Q]®Öر¾,*ž¤¡ ë2É/¶«�wF Kƒ6"kçŒXŠË€tÁ³>Gxª^5¦\ Í—åuÊ ÙæÈKÊÖ©D£;*¤ŸæÍ3x³÷Ó¡êÎõ1p6< ÷¶zêõª`®ðüäªßɨ#D>vÜF-©±ï´>01¼Ī„ëñ\ô{V¡9Bµ NŽ—£ÊÑp“¾š72ß-Ûí+-çìjpø®ž:¾iË^\{žáò2ȱpCà ë'Òn.–ÕÚ/ܰøÖ ðm‰z‹Ž®<ƒy"ÎðTíͬÏ�5ZJð%&i¨V‹”…½ nÄߣ!M}«À;ºÞ�µÿÝ×�°=.3ëø!Å®œ0þCI‡a/ð9±zÌÌ6Ô£ÊÛ¥.é‡J'¦¸Qº�Eíï‚4¡G0òBÈ omƒµ,£À�[ö_ðõY;-ûáñ•ì@µÒ¹s�^þ!j#~º 4™ý&¹‹ðœ¦ï�§ §“V°˜™ŒJ¦Ï‹©×�éØË¶\izÅ:zDúÛm5ɹvýâç¦W°|²l‹ù@K¸#ŒD%ärR׺ñY€íO—YzýÏç�]@wv¼Žæ)tA¬¼ÃœÞe[ï/Xg�.íf˜OÑ?qº[}|Îiý"x\Z=™å‚rD¶Þ+<·vÛÀÝü¬|�Â+ì– *ÃÓÌb˜ãE+º”ùQx‹…¨FŒ1óµ,Ćê ÏÁÓí ºœ�ÞdîøœŒ—°¾è‰Œ'Ã4é|Æ·fß–ÕKÜ\¸AŽ�³Y÷÷‡G…3?ï0ìN¹²Â;‰ó¬Ë|âôÓhë¸8Jâ—âÙ»HW®¬¹§áZŒ]Ï‹öcž|Ñ_ˆmuû“]½$^9mô†Ñ¡–YËÇsªž'äú�JDƒ˜"”¸ùçð/òq}º¸ñØñbÞ ¯;œƒŒ²Kq¶¥Ž„ žˆ{Ö9mL€h×Ôž±­Uë/[¸×±Z Nñý _E/pðMü§¸ÓTðSŒCůŒU#àÇZ$ÈK°¸zÒÂw ÚÛÄîU÷íBñ2æx»ÀL8wAÊž—:í|Ý.Ÿð~ýÚÐ}b âÇ@�!÷DZ§Oê|…'— –ƒ®òÿâ…½‡‹4ÈÄkU)%Üö‹äy)‚‡ŸöÀ�æ/s+FЗ”m"”©Æš`§C3ú½©2ø�¬úMD¯ »óã0,_=¯[}Gé´7�È{ M&à–Åí‰Pnoc±¾¸J¡1QÀ�S'~¸E&jg”™g¥vëh’iÔ b_·„ñË>ˆÐ¬ƒ[é‚«§c1ž`šÃ²áÄþá‡wê§Û6÷ž¿¼¸g¶ ´ŠŽäçP£áO?¬,ûìÆ~¨—¥ÑŒ{òE ; ¯^õÜê"¢þ5ŠzgßΰÝ#º[C5ªÓ«0ꌡY[$Ý)�ôú÷ôÇg‰{ÊÙ‚¨»þ¢Üw\e~'¼@vß’üKG4{¶5l²T�åéø[Òg[Tkà¥Z¿«F%ËPÄ8«ÙÕù´Ëì¼£&d�=³¤{uCÕÍ•WÙr‡OLoª»ó•ׯ ‚÷äpj¡Ü/|ºG"g×Óœ1'5”€X?Ed¼œU¼BuêÈpO`Ä�Y$,}ß[äåG¯²»�é[L}ïþo£”å™[žðvrÇêV˜T– å³ièá—DYîy§�{%?£Ý—ʬ�“Ú¶ô±ó-'=j*§˜åV‡©«|Ë5ÿ mxmÙn_wäÏ_n·X¯÷–5{+µ›Tô€¬Z‡ƒ2ݧ ÑNŸ�.Öç‚ìºãddþaºÌãë‘é¦,æ) \ù 0œ8®Ùض‡zòkôã6™ã.¾ÛwxH Çä=I¦ á‘ùºÕ¿Ý»-´tÜ�;Ãjú¥«ö» ö"<Õlób@z›åùYa~óaƒ·|ñ¹,žÔ#[ïó p¶~¥Q¶døõÂo=yd× k¥¼‘æS0Žg©5´ÚŒðl*é®ï+¯nÉ|½Ê<Òø�¥GÐsÑZ#NzË 1óLi`Û÷¸›çíC±�ZVåé²x¸?†<ž ¹U>ÏØåv…`á(œæ.8A¬NÞŽª¼õ:<@åÆ sàoAº$f…–«ê£-Æ`oª ÞQÒðü¦�+�Æ/Ùs¿¿€�1*dªðÖª§¶é˜¨nÆtôÕ“Ï 0ù¦Æh©ÁhØðÙªBf]ì¥~õ"b 2RÀ <[øj5ƒ1OçÅÅš”ÕsEyóò:k“5ÛëÖN".uý£å€ù¾ÙúÐbÇN*#óƒI›§Ú0ª'ðBêZ;”u8b�¥W7J¬J‹åyXR=‹M8šG˜#OÇÍLáL²Zsy¡áP²ñ¢Øa9H˜«å‚q�{ë�J3…Ü3G�âŽ6µvyÐ:‚õR1#¨Z»ð2&QW›¹ßì¤(î„lî"¾"…§Ç¶‡Wù�ç¥4»â?3<»µÆVÆóÖýRž®+IÇJ‹—G!TKúíÏ©ËÔÊæZe† Ër‰ZL?.K¼‘—¢ Ó›h÷ð~ý¨ý¿Ì1ŒU‰˜op±ì)ÓÀø}|ËÂ>Ã#m<Áž³)Á]·�äk’�‰pãë-¹÷Ê3b­�1N˦kóc¿ò×M_¢<‹A€†ÞñL@�‰ÿ±JŸJlÊ>^™gz÷¼å,Ÿž_ˆì,ïÊÆ^ëí“Pï2ÔrÂÊg‘"bNx!è2ÞŸ—u>Ö/õÜj¡™>ÀÃýÇ7]/G K EWmý qìȺ{µÆ,¶ž�/–e{Hw.÷ˆç¾ÃM¨RCßÄe¶ÓÅŒq½þø{ò­Öâõ‚9B^@�/¡Ëæ‹bø W^ËJ?$Ï tàù;¨+~�™:6j‘z^}p¶3x4�“ÙS}ž› ß‹~ƒ«éª{­ù€çl …~żÍkúæW$®J:-Kdp{¾M }Åqº8"²}*lüörК¯èØTÖ+Åœ‡CÏêÖñ§×\ûðq¤²*ߓĈ‡Ù\‡^õõà8Žð]\#Nî+]“Ì5¥ZÒ<�R6ýÐW¡§¸÷üö Š{Ú£Ô¯x–_\çÅh^=ªˆhgÓ¯�‰þ›MBi•H MÚ:ÐÞáD»?6)ßÝ1í¯î©jÂ]ú¥ë ­ß¢;f1h=~_Ó0V7q¿Eî´‘t ÿG•V¡2ïÀ÷2’º»7® ÒµFFªFÙ-ç°™¸ßDº¤ÒFÒ@ä�þ=§äe¯žìc•”#©qìPP­nZÒëEJ‘v›ï¤š$ôäfÜ뵨*v@ºP D½ÖeÍ<Ç™ç:ã–|Ë…°0DyBo D}¢tIÞáK'âm5I2G�­"�Ø?™ài¿ó}-뫵õbô(꫉µ]¨°S”í??F[7tˆÛ£·[WôúˆÄÛ™TîáFí\å ÁþSÕ·nnê’%2u^3ÕÎ{z”“ýäÊ=5@,Ž_N ÍÞS¤?3áw±ÒÈ@æ·~á}< —ðûdÞÏô›+éßéQëË'ò<¬0ŒÛÛ>"àlÿ"EñFnb?ç\y·ÂÔ;t *6cï�èþúŸÞ(;SWùÜ×óòEa¬F²Þ¼xù/8½ŸÑImj+bþ™#[šÁ÷=n+Ü–Ç8ô¯ÖCöŸÀG¼ž ÌÆÝ:ҙД†hæAä´2þï11Ù\4rÖû„ZÛ-}ü&ýÒ›º]>»SxFæ«÷ôcªú¶òÒ·-͆{Vj ï˸Ñ\—ÞI§1e:g[úv <Þ± åÓ4wº# ëE¿Ó/Óýù�ÐqjßY‹´m©Ñ÷Å4¤–þxNœŽ(zÌÕ È£RÜ€ËôŒö$¼¡pÇ’{xö»YU¤ùw¦OogÅL­ju¯Ô¶”T›ý( _É/| Ò˜ã /Ô¹ßÒµ u­�Ÿá¤üËqxwöH¦zNÎõj`«óI�ܱû2 à îÞa…“úÎWטP[L“ãœð|Ñ_©'Kà¶>-+ëåÐZcÐ}©ø?}³«°J}¿’’¥ˆŽ—Iã5 |xTú,/d‹¸Ðß K"ê!8ž56Þ|ùš<•Øb†‰fßdÄÐÄðáËãV{ÍZº¶^Oø×zËéPèíwü㊪¾NTŽPJ–Ñ,˜à›YO¤ù»š=—¿Ñ¬°ü s±{«—³žšÃ±SŽÖXXz ñrÕõÄñAñšàID–…ø&wå~ô 7ðßq'Ûõá¢ÊóCßSrõlZAÜ ß>ÞRm¶^»"¶Ý‘9˜[ºÙ #±VçÊê&Ø–øÔf·øØ„6VC4ë„m~VOÆ•îÍ;ªzà6U–ÜÆw¤}=“'x�G öj1ÓÕuŠá©kíØ«%Ù«ð§éÿBIGMö—ήšr˺`~�'iy¬£§>þ<â Žùª¶øö•üRÕÉÐÑó¨·^»Ýérýn‘ǧtïzU©=�ü»´ÅLÝÆãè¹ök/Ѥ/`B[ɘŠ_¼‘c1˵d®õ>rZŠG¯éÞYÛ¸¥�^—¸\~>+ß<\؃wÝé�+ë1W>^¿]oqb¾á‰ÎµåWˆÿÙÉ„�dýu›@G<ÿ¶Ç¥ú{ºé¡úóxúñ­o0­ß?(“=GÃ~N�ÊØ—èêgRògðw×-*œÆv-c²M•=/5?Ô:\ ÷òjh‹“,oq/²×]yí7 –]ßâàz|ˆúFAò=¶Ø2Úº�GÜ8ÜzW×�»ŽÉ~‡¶AÁLÞ›-�=fáéè®Á»•%Æ�H—¥ª}Â\Ië‰ÞMçÈÌ®¡oPÇTVVÒÁ«õ•�p'+àà¾G†Š¢Ä¿^éÌos|Vä(ÕßÙ…WpÈòguh^s|Äñ{ÿÉ”æ®Ç,I¨�^®¡ìq§ûIÚßb¾½RÆ�Ær�Æ�vUþ*û쌣¡UPE—u„™ºx;^“Ž,˜Œ–•^·H4j²ãõç†Ù�þ 8%‡Žo—uûïo¦Ž­o¿ QÃ…bœëEaèɧÿ®uk°3y�½Rèëí¥.3%ÉÙ$nðòSd„ý,é5¢dO9ýíáM]ù/$•=.qÂÏ^pꦱ®Nß.ÖÏ{vhGŽŠ¼¸Ëœ(ÑÚï)IõNïõ„×��Giwó�ÝûcöÛœE?5�ÈÍÕ=ùF .ð�ñÁ~;ß"éçtU:÷²Êh¦a»èõµP€;8–­=èpœ{ÎÚמ ÌÞš.RÎ]ýòÏ)¢òV”k—>6½Òô­ç;òŸQ¥±Vû,¼#÷JÏü7<#­9¸×EPñî3,G23í/·é¾È%pÝ¥ÇZi  x omO…ùìÝt*°÷(tgøÝâåÎ_,CÛ›œÂ×ûp÷å†î¦¢Û}ñÔô}§ï÷- žvÕωŸÛ°IåyίE{P‹a”™ëIOvÿÖ%ƒ­Õ¥˜Å j™â¦`À›‚ú“æßÚq%5á+f¶˜cÙ6<ËgÅù>ÃJPý™WË“k?]ýUþxŸ÷¸./¶ŸŸé—Ä^p‚9àÄÇÇ+cÙ¨b±UÔCn8¿(NxDôÆí„Z�ºÙc‹ `Ùz…üƒå‚Ø]ã#Š<Œú¥Ý郎iþ¬Ý.¹q¿ž ©çø¤nK�HŽž†”`=ÓÅ‚kë†îK¡ àñÙDø|:ë|È×[��¾ íg:)ÙäIÇkÙr pÙ’·ëÚ×nÓÊ}‡zÒ­G£f™eóÄÐ�cͪ¹à$¼Ìݲ…¾@+å›�¶ß ›çʵŧ‡‡£§Wd¶¡i'Ðë‰T æSo~^,øm|8Rð$�6þg.±þZ `G3�‘²1χ:– ¹�x¨x¬�?j…—›âaG ö`±üÌSðºã(iùâ …÷éSmçÇ‘7Ëé=" UàyÊê±a·v‹×º6ö¬™Ó¸Ïzv±\�O Ù�·£¯Ù3þi›Ç3í½kÊ‘�é&à»á1,×X¦ìà “ÀœA—k²@ú‡Ãår‡6~,Ãx�Oð<4}š‡cÁ<Ëà¹W²yrFŸ .ž³R!åözvÒ*A,HΛÞÖ©ûªŸv²å=B&ÔQ±õÖ(áòæYºª¡á15‰|&G þ§Y�½6Ý»qU;AȮݠc±k�ïÅËrlg\Ë‹"‹yƒ/ÎX\äRQz ÍСc\ØXý›ê:";°“U­Ž,áôŒ8�5{iYãd ¦0¼»¯ÊЦj¿ñCc@®^=<ßb ž|3<ŽŸTö¦“Æ JQ¢¸°PJɶ®tÖõŠGtõD]Ù Ý�Ç�¡a,ýrí†ìæÇë) Äð,ËB\2Ï&›z¸Mp(1a&nÍQ¦–¦Pÿl>̓m:ãdù¢ðG¤ܲÙöô/<ì„-Ʈ龂8ú�ë4­[‡;œÿùêèëtIJ Öåx¤=T:²bƒ¾BÁ“�_å(lh-êÓs[³ž¯èØà· �Sê r\cšê&í„uÊêAºök±qëµrÙ½¼Æ®\¶>˜ë!)t˦:†¹Yí®Îù—óÌ�á":ás,Y©Ñ±1‡:b£á�ƒ#žkfÄ´á)6ÃEf ½XL¾™W»KÄ%*c&­aË?+ö"À¡°½d¾(àðgq`ö¢Â�B0GÛ]û7:ož¹ë8,›p‰Õe•|Ûã#³ŸµD³ª¶+ü—J ³½ù³#†7æ‹Mžà Ȉ%w€‡¹ÅÈ¢hþé�Áã­*e¯«K–VÃbPMv…Gž­nƒÇvÆÑaÿˆq>[^Òñ1΋ÍÏÎf؉ÔãôbÙé‹ñë†>ýÈK_§H„k/0M;/0�‘%û3øÛb ^ Ø ¡÷ô…Æ ý޽ •½ÒˆµÉ%óAT=…-y$<βš9ÀÃrzÁ›¶L°öæáo߉O{xíé”|aÅe‚Çá8K\àctž‡=‰½À¹¿š¾4=yÆÀEâzE¨ûø›—ÛxÿãUÞÓqôÃA¸××kÎzï ø.ðƶ‹ò ¯|Œìˈ=zïÝþ.v‰ã¡ìû×{;Aþë­gÄú|ˆß]îl#4óÊùÞä`:*–§Û@oUûi_ô9f:§`•�ÐÔËky¾ ‹ñy 7xÌëã:ÓyR}ñ4ªÜì AÒ1/àÓY„ <á‡�Q Û®…–½ô ¾ ¨y¢õ&>Òš…SoÀ§¥À¡ÜÇ_ÙP’Ð@qMNÁä ¤ÝwŸ~\Ln�NµRC±,½µrñ˜d*xö¼ÌÚ®DåAšÝ½°�Ñ[ U%˘Γ§ñF”ÞæE:ui@yœ$+&ïy—…Ë 6{¡íH¨,{¡¸/0ï;:ºõ}1NÊOÀÉêÿsS ®�qb 2¦¤a‚;ðÁå»ßlÙ-‘øßøÜ³$» 8â]´¡ûs2ÚéÃ÷›º^±�ïFb¿’*5 Þíº…#Lß5ÊØ?ýïÂv¸žA©S¤{×BíŽýû>MŸÞ�)®Ž%ÃÙŒ¯é±Ëô¥ lŠž:6|u‰Uæ© ×iŸ;á;÷ÝU§оº+^^Yùkn¬aÉ–R!Sc8ÅÁen®›ýŒ7²RÉó‘�ã»ÙêΰÌã´03’7ÿŠ^jLOµûì®HSc§tøÁ7ö°™·@} ^¤HÇFäú´ƒ)æÊB 5ë3Œ @ò@Ÿ5ÛõÆ·ˆ±t8ARºLÀbxpÌÁ/ÿ><on™°Žv°ù>ÿ—%ðu‰Ñu„ÇÞt¤nYô¨ižËðE¸=pô¤-1Í^~Åc¹|³}Ç�Š×„`ßUü–ËwµßÛ¥iëç‰Ïªäj„÷± Œ^¯ÁCÀ<6ʉ/ôöA鵯Œ?¯ƒÆF±˜lÃÐŽ¥3¼Í“~Ó/<‡©&Äd;¤¬ËȺª±Y{„C=ÁCÿ€˜¨«§ï¿|³FæÙ„šcÉN™O¢µþí¤ósDŒPãnóè;"8çõ¬|Ê¿¦óàTÿ‘ýîvâЗX Åñ@½/ 8/í†HY¯­óV²HU-Z^ߤú‚¶jõcO)P�é6ÉžÇ(>á±Æ*&ßM9ørWHöûHxzs•럎ZïjË“[xü‹›ý$jžXÓ¢žo‡ƒÉ;Ö¤ž“æAX<˜:2Ú-†ÁDÇ»DQï6“™K'}æžl´¥¸tÏQÓp .±ˆ‹þÀ¼[ 1$§[^VIø K¾l±/��óŲc¾Š§Q�˺f{{jbJÞÎo—"mÄèvàä)µïàæ†Tãõ <9‡1®¯Áµ–Èé 7óׯeßÑ)wq©}Þ•ÓÇ*„¯ò „S<#¯šõìÑ ò�/=ài(»w²­¿3KÖ~�-’å�èbýyÊ:‡ÍØ_ëÈZ VoŠh¯›˜rÑ«y®�4ÝÜÓ•;åÛȆ·æ}V(mâÁßf¾ä";Õ¬îÿ¬Ññ^÷oíôÖÜÐ-?Ër¦<ý}Ÿ=JJÀ¢pBù7ÈðÌ`~ÇWúø�D÷Ú¥·Á#^|¸ƒ¨ûî«ÝëçMÔL.8šè ë KëÞãƒ-i{šå 7Uv¿ï•žœ™ˆõÑ®$|Ë�4AU7-^LÍœŠ[?æ%²_¦öŠŸWš¥_‡(šÊ²¸!×�ûÛk›Ë›ú‹Ó'Q0åöÛÌ·_c•ÇïÐai”¾÷,“¿ ƒô‡ß½þ³ç¼âú.¤†æ{òÏ€YùŒUÞ3Æ_Ö_™xÚ/k?wÕ Ñý9°~ŒîYYç:NÝ6õÏ,D]E’iBQ6ýÄo_?ÿ[¿ x~}&Ïÿ‚Öv`¼yx3ÑíOË ,å@Ç1N 7ëFße3�«G’�;²ÈÖžB?üåMë}sª£ô›@kú£õ7²CÑ[¹ÈÖh€øðY¿.¿CÇ%¨7‹�¯…²…²¾‡ðÈIÑž¶IJæ/ðG%·§@]4†Õ–Uxû¦ý,kl‰µÏkÍåoÁ–öeªh®Ã¹i ¨íDê—áOͯ4¶’Ìðü‚ç“ØQϧŽÿzY«æå¨Ãëjýª±žxõÀ„}ÜÅŽÄ÷£„táåÂGè,CÌ#Ìb�úó—= @^p? {àbãvˆÕ)©ò_aº¬"µ›·Aéz牞‚­÷6œ‹tت´:à¬öI©=i̲µ\i FTj÷åsYc"1b Ô·˜2oY¾CóŒ£OSIkhBK|1C¯ ¥ý&�†Öá,¢z| �|È ó7O[n^wb§zl hÀÇçê¹µ^·,¥¡8û› 6ACFK° Û¸½’ã_å\ÇbYGà½ÊƒÅÜÛàÌÎæ—ž¥x �¯Ü>T›àS¸ ‰ôu”9!LxÐÖØ–Ðó÷䬠nÅÁ²Â�=¹©|cL¼$xþ”·»�KJ¢z°B=€?_à±·2ø6ÿð„ͱý#ôØó8ÜÅ'—Ï/ºøp mÞ[zKŽ<5¹Á–mYªGÓÖ‰aY.U´N'•¿[ÊÖjž†„äëñÅoAS€'û\?7ærã�´ûÄãØ–M¸¬)\5 Iy4´)®ÄÒ´ÏŽÝÚ¶Y°nƇR¶yWþ{IYï^+NÖnÐÎo¨ï—y|o²ðû»gèÁ#*øð®½boúðÔçà ö“ã}‘¡Äº,�:ßHOPy^¶ºƒ=ï�ÐÈ þaÂ:jˆý[�’%¼Øm)k).¹ñð=š¬å=kozœàkÌÏ“eåFlÔà =y„ºûò#/à2™LùúŒû i¡®ž :ÃÍÕ‹+—â]ŽF•K'"u�ý©‘�OU0-c”Œ@û›“1´ßnà­b‚×à T·g©Z$·1RNJŸohϼ‰è,}ROÒ¹§e&yoJ¿!d½ó´U�¢—ˆºñåO#KìÃHºÒGq7÷� ’4»¼z¤ ^š®“1{8²ûì�_µL¯ÃNÝÞ4çvwç:]oÚRäeÿy·pè"¨¥b!~¹-·óã~ЮRÈZ&ÈT‡^®öƱ7\qãqÕ÷AE=hD= èð(¿))¢¾ à7äKzqÃw+{í¡ÕØÇý«sÚ'wÒÇNçïöIM"Õ‡Bñ KÛ–îAKöÔÆ.žég§nûj³Ã%ˆ¶7“’ü޾ðºË‹iÑΣÜë G[Æ}}P¯w7âŠh…•‰±VÎËç¾µ§Î„ìŒ'Âðíê�då#©rÙ,ˆâšÅ¾VŒî£Ð'¾�ö³cNÃg^²Ó+ïšÇ¢Þ¨¶½Û›$éÁr\×xü;Õï¢t¯Ø”dÏ(ÊÝKnEÔØ[×°ÙüK0{ühçp‚ÊoÊ?5 ¸„w¹”ÛY… "’û—[yõ¦¿[Ij7”P2óÈ}žhy—�ú’]äâM¦ŸH¹'ÇøìÓÌ=÷¡Ä XÛJš D…`bœF qËi‡‚e¼\m “; éñj§¼qK:o 5s/¾1S³¤êñB�§zKq¸xô¦î˜ Y 2˜tŸŽÁ pÞðú8õÄÐów±ëüN �ª•Ç;È>na‰-Éü½Aï­ÚÎ2È�mW eùöxá‹cµnÓÜï½"=Õ¸ƒ?í¬5öèì/”®’ÕdƒCOä{|YL»7šþä°4 ÈoGÞ�+I YMoQ]ãè¼?iP5£ýÚ»¤ üFƒ–&¿Îxº�ÿá 3q½Ñ)ëµ§ïß ­–áõ P•úâ¼(Y[¥“Mn­÷„×—¾@¬’Ïón™5Ë'}¥"¯é±veÛ¸Ÿ|F¬§Ë-Ö1ΣŒ_bÌ3K(Á98†ÁÎÝ.F2=PØÐlÑôD»ôz8½ÍŸ½þüoÓꌓÂfÖ×qÝ _N¿¥Â·|$Ì5+øãu»>L �/Š÷rž)ÇÏÛ>fõh“ñm‡£‚å¬ó8|ú¸õ4³F�רrk[Kst€Gɧáev›èÉê&ñ÷ƒ•,_�·jÃ77®·¬‰Û‰èM7þŽvò GB£ Æ$gk=}ü‘ŽçG ‹eQŽs8|¸nß——‡¹L¿æ{�Ϭ5ÆQ�R¶“ë�`¸mYÒà‘*ã¹ö´Ø;Êk¿ã&¯'¾¤ª�8ÔñãmÆæ?×j bXñÔò±ƒÇðl†œ>Ôî?>Å~Lûô6 ƒÖÏeAÌ?ƒ GOËá=<žªx˜ºãÒl¡ëOÍn-«gäŠÆˆ˜„ÒõYð Šl ÏÆïÇpü¬¿/æy<¤±odY�ˆ�eyèKà!e®æ13à¤|ž�íU]Ó"ü¼{³8ZÃïøŽ úMnöÁ—V„û}åËTAÛô-8içrš²QÛ“]Zý3C�¯ÑkʆªnCD;<ØälªCÉR޹Ë�ÚU“9ìðLWç~8û“`ä)!(m O7ÅÓ\V�ÍPƒáX½¸=5‰˜N›‡×Šûúyšvöà-gdI½‚^&ÿ†—yNC.Ø�ñER_3ð‘_Äbн`>†‘Ú•1ìü†Ø[A° '¶�)\=í¨Õ:äD|8éxo‹æfoýßbκvåw©ÉÅ#‘�µÜ< Ú3‚(Ù›0�ËÖ~XØ mŸ_nJ·‘T?.§NÐ$n_i±2á¤ù0Žu\«½GlÊQ_ AŸjYׇۺõuÐ\ÕüªáqX<+„xM&wôWx€â–à[ògQ‡éíÒÀ¡ayȘt¼CrÁZÌCv´7/•Æ}Éi'+Ö:.ËÖ;¸˜ÙëÝQõ”ÉÍ�×A=ÛZ`T]" ×á;‹ºœÑž+7‹Í:ZNvR/âod¹•„b©û þá”uڲܞÞé¹ix˜ãMr)Ø LЀù–qg\3dYóÒ--{ʘ1¿lo®ô„ŠZ�²$y�ɵ+�Ú ©G?ñê¡£4�Ìú¾«†¡iNóT'Ä£.7m7 _,ç׺¶JÓAñxV Gxr46éaÊk 8‘ õv¢.½ð_³L¯c4OÒÁÛpòc¤Ý¥l§ûRF( yŒ žùaõTZ¿O¬ꯂ¿Á¼‚ '¸¦Võm [?n–¶¬;ôsAl:ó+Hx‘­KƒYc„n�ÛðpÊ/N<Ÿ¿‡ ôðœíÍ&àaNkvçõ÷Ù²Œ»lк.ÖÍ£eŽt2ý6Ãõ úù̓Êÿ‡‹òÕš]z½>ÙZ <7cHè×ôáž~[¶îuþG�×zGÔ»¥ç†ÁeçÝ+^�±9’{áÌŸ`›0ÓzëùYùñ|r¡]èí2�5‡ÁÞv€t潬‹­�ÅP´Pé�Î+œçGÌ/<ÃFÙ9ü“ÔWQ„E="ׯ:Úøü�—“Lj¯Ìê©­ëÞŠ›Kb#6s…6‰½…Èöt3öB¤b:ÒªýÎs¸@.ÖØ�=z…ùŠnßl›êdz~¤À_XÑzè =tÁ~ʱo;<Ú¸•Ù…øöø\]�žV[·H)pÁã­ÆRÅCLpÓkâ¬að&³Þ~;Åï¸:äB1�·¸Â³/¾".$rJÆu¯#'}ñ[œÎr±•aíÃßýí^3Xd™Æc‹€.·w׬¯Ím×o:r«,cÜ<ãS\á&îWƒ±O. oÉVK—mÿ¬¡ŽS�WôZ/d.ªë8uʱŸ¦ÑYð›Í=jç¾Ê*AöÛÝ•?¦¸‚—>�žœx¹§¥ÊªÈµíñ}Ú<ø{qëÑ·ð™ë3ÔócÚájõ‰$rU›Ï0õ³C×]N3XŽ>Ü—ïßVÙ¥e{‘÷Ú\ÒæŸ$�Ø+žGî‘ 0‚›K[ó�& ÎÕjõW4^)é0×nOÎMÿ€†‡{}¶R×�„;caWKœÞí‹iW$~ml¿qz+^†kÌ]+ Ñ®™mä+«{jG±KêT.@ªÎ¿PÝS�*nåßs•à[£ÙCÞU«¹¯ß!·k[ò®¸øJ|‡P™qŠMëg£}‘8X®ÒÓUï­ú”VÿRý)ÔŠ¿ìéÃpz‰Ñì63ÝçsÏ}ãÎ÷2J0óoÆ ®Q�Üåw¬ÞæQ×|uqIÈ Å„~­ K2QncJ%u(oð÷;ŠÓÚåw¿8d‹:ˆ¶ªXT“= I¤vØ•î¢Ò)6–¬ž¯�‘%ÚÕöÞ–²Ì¬U]EŸqN¿=>¦£R»¼þ³uK©_?›";¿ß°Q’‰æ˜Â›ÿž�äôy¯Ü³GÝ¥#ß“ÿöRO‡ø)ã�¶]ý'íTPÿÞLô'¤s½¨ž4?Ýrgì¼W傽÷øß| ìÍãûtÆîˆ.Ïê‰Å?ë'b¬mÙ.‹¥"Äöd?~ýJrê-†–_nÍW<Å´I¡§Ð‚l¯[ÖG^c%~µÕžþÿÚþQ³¡Ê±Äž_TˆŽ‡*¨fÎØåiÑá1Z.ú.ýø0Ryl­»fÃ]q´lÅDTO%ë¦[—œÛQb.êAÈÇçXy¯uO{xÔìÄË×:¿ü±Ç> ºƒÍ �‹“üƒÎŸLmäU·ÍQ=zÓl¥UJA%>iŒI¹:õ°ÉbHŠ­æcºR䄜uëðAø ÄDy€<>Ãóî±3?RPÿczdÉzOs·oó´â1Yc|ËgÈÃWˆ…8Íï¾9" ó“æÛÒã­YP7|2ÑÖŽºÄŽœÞáR°áÍnótx‡Æn<² ÚðÜ×C͸àI{‚ÇßgÈëõÐ\®�ãõp¤à³9ÃUm¿é‘’¥ÏưŞÍ>»s�05�{9¹`&Ûx4kí0^+ d‹X(À8ú«r¬õÙW%Yå?xlñœSK·žJ/]¦ˆ)¬  I Âj‹ç1¸¶¡'—i¢6WßP’_™^ƒk"#Û²'ÁZÆÄ<»ÌûƒYÁÄbÙumÏSõpñ`­kÇvkÔÅ]q[ ‚_­ž„!$ô—C-óüš©˜ ŽÙ]ÊÞè[ꕯÎZi¹¦qq¥Ãf‰KðýØbÇñê âä»èB÷›�·lœXl:Åd@Œ¼¥Ìg,l1q2¾ ïßz´dåð•-†žÅ�+éÚPÁ<ñZ<ó gó`·ìѰGÞâOG�¡z˜Ã]Èàtž"ò³òÀaÐØ–7d‹/Ù–w äÊðæ¹á¦¤+KthZhÏÆ¯í×ùYG~ðóÛT¤-öÙ†‡¸X­½õ•XŒËû±-0£e�\=Ç·1,ÇÒ©7�·¶dX–ºýF�bBê ÏWß*0¦»ÌÓI”i†½¼GÓë¥Ë L§ÅÁX¿°�k|ëp1&µ²L´U>\48Ùô0´^\‘nótJræÒ…ª<êüàr;ïÆˆŽëOcÓìaHkÌÓ�^Ù¼ÞtSmAL&{³`¤¨×®ˆæ™ŽP—¯æzÄ<ëP•ŒN½oã˜UF ¢ŽMá1E¶’Wµ¢ôºùX“e™˜ÖJëúý¦„Ðo,ޤOµ‡æ<V{>¡zuHAºŠÇóP3{–±P‹1güÛ¥À0ý�óì:{àÄ_Ú¥Ëú· {§ey®v¯Õí’x�“ù‡9ÞÊ˨ruž…öìïzé6IÐC‡±ßÿž©gŸ^TÜ3}ðûµz¸£3ý˜Š‡ìЯú}rx�è>œÕz¾ÄX�‹šŸÍ#‹¬ÝòzóóðìtRÞ€ïmÊ]À¯úÏ+3�Ñ.çç\@ïatôvë“Ædǯ¯zUõÈ)é£÷†²Ïóbã�aoަg€GÖÉ9ÛoYT@ŒGj6ÌhxC ßÃÃBe]í„èñª­?³êÃï,º¸øtÂ<Ø÷—Ùh‘M|ºÅ£†ùÇ>)Öç“ “kôL& ¥¾Y[m?@ñ¼\]Å4÷›\ÂNžœ!X¿]1Žó2ôV‹t¹êzîÜxfk�"�x̲ZFŒÿâ=Æ©âVB…d%ÆÔ ){Ý™4ï •Ûäm¶–�$€·:…?³Þ\?ž~€–]«·iágäŠØz§oÈ/—OðPûxµ‘8òñ+�¨O_;¤_MÎê‰%ߨ'}õ¬†èë‡:²D±òã7¿®«ox¸éuË’™² Gda½}ÝÀn{z½†,�r:PT�øn[üˆÍÄŸŠ|©Ô¯¸¢‰mÙ#öaÙªÜÒ±0áás…ƒl¾¥›|¥œ¾ÖJÃÇÇ­êòùYÆmfž °ëwž5ö�DzXh0†Ê8{…_àÑð0“_ôðI³#.<gŒÿ†à4‹17 nàLÁ³ðñ£¢óü9 ÝÄØT íYˆ®ðwh¾[Кë[èë ›Åh³`fÓ;›ê¼WaŽŸq’û9‘EöA=häÙ…•(´Æ¦9á’#C•zÊ_ê™É3bøaø b܉�¸¶û �’/q²oÙ2? M—ÅÆ{¸D:ß-n¢;Ì:^F:*ag�ò¦|忨ÿ~«àmÙ­6¾Af­cY6ùÈÆ�Dw—Bܪ•`}h/S,~’påoóð¬žÌe~†d²Ç#ïÁ#ЯZ?óT“ëUáÔSn¸Zl²#*ZÖÚüÎäi(ímõH•4?î«[l(ÿÆÈeë‰Ù‹dã‚:l†v-ƒ^¾àèûv±€,‹ø2k¬ÔátjñKà®�GË>9,õÐõV9YfxÜ/ã,-�µŠñ®õo o>jÌÛêð…Ž‘å{ͺ¶™5ï º¢oŽÆeåQ‘¨Ó˜8‡m„ðHzéè[^³ßZl×9èÈbk‰¨g®½ÇçZó$3�Œ[ÛŸŸ:™ç´ê×¢oFØü¢ü}@LÏ2&‹Ñ2¨ç¬ä4€Îã ¡</:ô…êmž¦¸®È²‘KXÏU}{O3u€P&®%1زٺš–µt#„iÍZýÚ÷ž¸æ5Ä‚¸X0MÄf ½º1ZÖããQ=~o·¡»Y齵Ϟy>;yé¥j3ø‚•,¿ÉÓk¯ÌðIHíÔ‰u�smbþuDᕎšõóº¹Zöc[w“”Å}¦‘/ÞHY4}tYKm1¶Ö&`ë0‹;°öÊÖ¿e£.:Œ‚df…ú*±£D1¸Ê@X±«ìË‘œ‡ìë�›!|›‰ïðx7Î<Æoô8Ö` <½±íJ´›àq4BsÚ-#‡#¼øØ¡º4±mü I�ågs�˜~Á®üé2΃A´—j'<�ë±üÆ‹®¯Ô3SJ,+CsÄfô‹†È^_ÌÙº¸ÂPœ3kÙy1ÞGÖ˜´Ûx³{�þ­úÇBȆ{Ô“ñ4GÀk{µCCX*Øçå@Ë&îɺÃçÛcdYïêïG´>èÜÏ`€�Ú´/�ï‘£gm‰U�/m÷±9í…– ÏV ÐuBxíu¼ýëA!@ŸÁÇ‘¥¾x¸ß`#s(ôÖO†¹y9(ß<˜‡ÔŽ�™1Ÿ+p~Ñßϸ?îx<‚�èŠñʤ¦ånx¬Á W:V³‚Xh+]àÉ•–„ˆ%öâ3ôýWÉGÐgî¬í”2¯ør:#&b#7Íwxíá¢YÚ¿9é¸ÎcôìÍåùQùù«Ïþ Ò,Õ¤ÒìÚ]^àYz†‹ù ¹oRë¹qöf„é%Çë×¼éðå:ï·«Z¤xˆ>@Ÿ¿›§¢î¾0=lzš¶§~˜Ÿ/ÚÉ'íM²C�á½pÄzõö¸Ð½eû„åúÁ6ÚຑaÕÓàãéUNÖ·/JŒë9‚2ò+ôÍt—ÅçðÙzË›Ü}Ä|œµý3Þ`›0íæ98�Õþ/dQñ°˜°ƒWvDÍAE`7¦²©jr4Ø6jŒù†»ìZØ5ß¶ª»ð~!!]¦ïr6ÕµYåÆÜ #Ë@Ëv'·øõ{ºók¯¾´xYn¹Ø…YðnK%_P�Ž—)€æ‘Éñ¸™åmýðù—~IVc¹Üú0k¶XyÔ£^ÔCHƇgÖØ_4~¬L³B< wóHH›9• `á»õJý“Ž\.éäÇpžqòö�¨·19Õ#NnÏ-ð¼á䎮8"8�©j£§"‹�]P\Áðã|Ñl£ò%bELG…bž#_ÃsrüB}Ô4ZËô� Æá+tÉE`68'õœ£éXúßPz1Ì„kÍv»-ÔOž<àeöÙb*:� (=è‘¿¸“ý×ßÃ<?ÌU·ø g˶fãJ£oa-"·Ô¨pòÓ#æÌò0PyÕ�+Ù—b*Ãì9f;”ד„­ÿãL�Ÿ+æùöÒ¹ç¤-\vˆXÿ?Àü~ ¾ôéàüøFõYì¾²óº#3ÍfêƒOùž(�–U'G­/“Ó&[ox>^¡ÌÓôðý¼lô�dz�“�rôx¼ÀE�-�Ñœ=)9|ÈU³âòYc™©Ö«¼\ÆV;2¹<©‡êðùc¸)Ýdç,±Ÿ¾Tzž>Xoè‘%š^Ó«Ã|ÙºX,Båæõþ“ïÐ…ì¤ÑÅ�ó4¾`þ�—û|Ãð dûÄÿEŽ¥Û»ƒá³ÓnxilD69AЙ�®ko�)Ë+\…Šç®Å²Èã�U¾ùh±â’†ÀWóˆw75ú.ÕWžÜ8&�FG§*ÏuÓʲÐJWIõŸsS%Öù�Ïà9Hâbï¹�š‚�y¨ºË�Ò�s#ÆS²J«žŽðµ –U|3�z†/|ó{{Ôj龌yÑST£éâ–YY}p›ÚÉî˜2¯Jñhð�#Ž>¤Ý¶1uûÉ:5Œ“vx�¤ú²Ü½êPÖ¬ê²eÙm^Õó+òL#†G<+BÓMeú`Ù7ýF;Sõ¤6Ì^N^?Ϩó¢<·X TÜ7ëœc,š¾?ÂkJŠú„9ä”-öH=x})ö_ËÖi'èÙ#äßðKì£Ùxyõdâ¸üsÊÿ‡Þî~¶ep ˆi�ã䮫žÂ<ŒQ‡7�1<_¯_Ãydao‚žCôãÙt‰šÃ�á;’”—k3w:¡ÚÑΙ�ð]çy£7îç¬ÅÛhnYˆ>[-טnç#õ‹É)�$í0O(Nºb� ~ÌëW˪ìcRm[²›`t–mÛã³á‹˜ª77¿Ý²6]@SãËíñWV�5È�îâŠþ#b>¯žµ¬o:ôDm†�Å´|/ºÃ ÇØ'õp3»uzQOþËyvÍÊæY¹âÖu �ß_À¾ß4Ö÷Ó¬zöKÄ\¿ÍÊGæ8¬/b¼ê[¸ _ w3Bº#‡©4:Íö8˜¦»”jo‰³¼£Â,à @| ÅG}!§ø›!(b¯js‹kÅq;Š.IbéÀM°ß`kVÊéÝÍ“ŠHýÁî+Çkw`4Ьßô½(Ž/õQîä¬Ó[£~>¡·û=©†•)wÒŽ´-ö|Ç_œÁ® Cýž+®�û¤6Çá„‹�0õ¯åÖ6„MTê–ÆÛÔñP“¨%}Ú÷‡Tq©´VÅME�Ãä­n\œú1>Þ›¯»Å¤1ý¾�]^ ¾ eþÎ÷s½‚ÏNñbøØ…'N£|Ú”UFG.z¸qoö‰¢uf's¡RúîÚ¤Ã�î€9ƒqêS:ø�ùíô¿¥½]t>÷ÀíÁ4ÍÞÀ¼3ß”ùÓéLîmþeâøŽÜÜÊR«ù·¿,á鯖Óï}½Š½Œ€wÉèïwç/ñ¾ì‡Q±¡lÿv0ñ¦å²QWúOÉÚÂ;w狼N‚p6¢^ëÂáûƒŠñõïùr¡ç——7'-°”³I]’4ú«¼Î}mç9\º=;ÝìÇé†ëÕ{Ê{9’º“V^é³¾³>êð'ùgÀ6¦$½¡û«n¨ÝE[¾Ã…}x-ɪ £„ ÷¾»‰–ûüßè’оVþÑXî4rÇ{üÐï¶J>^�ƹ'”=ùd·ÜÑB/ÏÏôƒþ .¿³*è™?r3XhŸ•-QY í 4›ÿF~ˆ¨¶‘_/ìλÿm© t#@TÜ'ü»ÅãÍ•V¦ö}•]¼ÜôöLEÃ[DQ®Ãº€÷Qdªëlè°zwr�¦×]÷|J¥Îý3_oÔF×�5Ooœo¯a>Ø“ê,Ó¬.<º?�{ËÿØ›'XöÁµ�‡DoëÙ¹$Uö¼,gàn•ïyÏgÄZøô͆óò¥ÿFý½ ûìÀO´¿ #Õ°[ö@—]3ñ|XTÈÇ“.&>#;/ãT±6ïäËâ ‘ñmKÚÐèk Ìšõ ¬Ewäi�`àJ¦å¤AŒÁ—QO±nLéi–õäNðHÉðé¸lZ0”ÁˆyóË%Þºä 4CòÇßÕÊ_>é]{ØJ®j2)ÿ �Û}™¼ä»ù÷Åo¼ZV2‹�fiʆ®Š“œ‹·êÍwÈÚœd©xåÕ@€ùˆ//3i<¥ùG!k̬•ý~ˆÿ“ÅvDð‘gxô} ÏÑYƒ~0q\ˆaDsÿò¤1·†�ˆi²Y:Úíšp�ÌQÊ@ÊwKI—ÇÊÈn94{ïðÒó¥&Æ—\àø:�œÔ†V×Ätpè¬0¼ÕBl2óLæùŇê&7zD¸Ð¹ÏkFBè3™S¥›ž­8j[¥¶+¨¯ž�[ˆgø¬± 7ý¨è[6Ò•ˆe´ê—€�9€˜ZsÍ}´­o·À�Þà\)I¯¤·»ªýâÔÖ-P*FÑ[K™J¨3x¾-rr¾¶B¬PË<#FÊx»§ êµâÕæÌø†EI"|Ûòá¿ó›¿I?øÑ�¶ï�ôwýîß§x {g±áóòFº»™•ÏF™ºµ4búá~‹þÙÿÅŸ¢çë ý‰Ÿÿãô‡þÀ?b•vı¯Œn´Âð£3ÕCF®˜¨;FÖCË*>Àsg±,¶� xóàUÜt—éVÆê—U b�7mŸ“îˆ÷Ìq㵬Õç:žézÀCZ~ôf*©ø˜ á•n']WŒ7Ù'1­±s�­õ¦±;® xmƒH¾[L«màCz:  ø•‹�Í\wôúþ�ôÃ× ´ŸüÛ~ýç~þ?_ý¿þßþ/ôç~éÏÒ÷¾÷ôßúoü3¯rðXytBÕY wø~€ÇÎrÅzf•ÖÙÕb§ ú"ˆ‚ÝIÁþÿðG?¤ÿÕÿú¾áÿGÿèÏÒùÇÿ˜Ö¿©gÄ}±e“^¯OÎP:U|:i·›÷¬L´fÞæu¼§K©&]·{AÏ;Ùjkõ„G䓱ý­ÿ€~ñ�~ã×ÿÚÖÇßñS¿—~þŸø“ÔGbåGmx1òì¡ñŠÐ?ÿ§ÿÔöý§~Ï寧û#l»5c}½ôÖàX®?¿<Óÿîÿ§7ø?ýÓÿ ý§~ú¨X‰K€²8ÏÏó%f>DÔo_`N†b†àP´kâ«AeL[ïn/­ò =dasÄÖßèÃZ?b-ôÌÑVØü-~7¤X{ö¬ðÁ<9�¹59�,Û4>¹·™aäð‚Ë2FVÑNW�/ÌóN îÑbw-íó�ïÞ–CÏð€:#â <6àé~ÀîÐm¶äa6~ Kú žEˆ˜N%ù¼6X�›Ñ_}³&–ò|äåj«¯�'é›|”^gÄ*;^ö‰¾áó|à�êCÒúnÖX«^G—Â61)qû è~�fų•Ãfl+ŒpÉ<Á³ôò"qùoxYÈü7ÒJ†½þ0A’àl/ªÌ¤|k1�?>¨Çا¼yòÞ7“ÞºÉÔeÄ<ö<ã±Þbò=ª—°·yûâhYÑŸk𼼫ûÓE�ÜΦçµY�c‹AI>wk¬ÅMo£Ót…™'O?Ôì�2¦µ<Õò ~´”F,s^·±@ÿ«´�"_ Vç§Kß.EùÕûxÁj~QúÝ‹ðŒ˜ƒ7´;!†¸Å¼^F�o�îÞ¦]³µŸU©µúmòÆ@oÛ¹ÜÊYcÇûÁ—…J¦ƒë;† C’.°7JZ°‡q•£!î’+tè€ÊncT¼õƒ11ï8)`´kM׆Êî}ñ Ï F+ª0zbxœ*‡Æ½^qxI¯¸þ §vŰôß°§yO8ÙGÁ'+\ñ}H¯¹Ò©ôg@<âKRè r|ŸºZ,àSÝÒ?%¦–O÷䎜V/ó8Dx~S8òyáKðb.ÓÞ& ççПH!íÝv� §:¹ì §1"BÝC�w—4·n†Míœí�%‹^o0¥íî@#Ž7Ûðèš½„nOORj¶‡ƒpKc×öWþʯѿøgþL1Ìls3êÆô÷¾ú úÛòwÒÏü�~Ç÷¾[ÇÍ )lä¯T|‹BvÓYž¦_îñ�T”ŸŒ—©�òõ÷¯üê_¡é_ù—·;¿ë?ö;é¿þOý—zˆÅá½–ñµÍJ¯µÎßó÷ü>ú“?ÿsê¯üê¯Ò¿ô/ÿ+ô¦íz½ÿ'öçèïû»~Ÿ“Eøéu³úÏ~ÿÿM¿ðý_R�»0Ü�þÀßÿûégÿÈ¢ŸøÞ÷¨Ð|¿úý/ÿT�ó_þÿ$ýÞŸú=±F"»ís×óëaͺ¬øKùWë`Ç–n¯²Qâ ¿!FÔNFC¯öbËI¸Îó2–ÀIºl_ÒG¤E«éßø>'¨¡h—Ò@ÊÆ·ã³rüåt²ìêbß9uù?ýŸýOèùùy³ÁÿÅòŸ¢ßóSÿ ꎋëÚ¡íÓ}pšv2ÖW¹·6E'S˜ˆ¿þ}Û@“ÔáŸûÅ?»}]ï­›?ë`˜?Ùç�\<¾åmœ¼ÑItƒ¤àn:‡Š÷ß éßø7þUÝ”^Çõ»‰jr=ÃØP݈ïâtÇüÓŽ+¼Îiíá+ác¥ûŸþçÿ¹íÓÊÃù±Á!0�ç‡ $ÿsk‡__7_¿®»½¾÷ÊJëßø�¿¶}ÿ©×�HÞiÇL”×›Õ½î².á.BNöÌ®ºyªo̸ ð̛ŮmAZªFß8@ÚC±æ·›¿ðÈ–P.œõa‰MËgáP®üòýðö~¿Õ¸tçØ×/«M&Þ#›"r`<¡ýr;‚ÂvD4”µÉ"–é{KçÐ�Ó÷ä¤Ãö^·AúíEØëüb»ä~¿´S'óR¾úô îÍ'µòaý¿É[~Žýe77ö;ôçæmg¨]ý|ÖµK~û®â&^¹úäXØé38…/ïôÝ+]Õß«}Z_½G5iÑnÇ‘/e·Ž§Wih^õk^þ¿ ×ïåÙ…S‡ ©}à3] öºµ>Èöf<ï™>}­p(›/ˆõ¬ÁNj}dñDŒ(z”mkq †êÈÆ2ü­_oõ—é+Eé›XÍSmó Ô³‚gõ€*1_¬Žž<=Ï?oeŠÇB½²Û"ìñs$´S÷Œ¤ÙBÈ69 fч/{i5èÚÿ“‰ÚP=`0µÇ妞_ÃÑbª�•i 1å�Çaј€ò„ë <5ÆY3™‘mBVßQÛ²ec=X6Xih(3둯�]´é¼L^^GfoL,&‰Ö©¯ Ñv„$�ðk(ÃÃ7ÛK…Qz]œ,Ï—íþðø ¿os€Wá»™–56Üqƒ4žqû+c<ÔÆ‰’L³ÈWú�ÅzÒß[vÂ×E¨eÑ\Ò‘„ Üæ´Ã8ÄÏÌ„‹f¡–²¹œ'xè4Æžn±1›ðÇ“"~ÐWìä¹—Å÷•~g]„/ç‰hZÏ&ÊøÜOš�Ë‚ŸX6,x¾b0²|Ðv�ˆ1ú�zYRa‹MI?ÀIØ#<‡�g‹®÷¡¿~Âb:-ﺧ,Íò´ê™¥oYR™àá‘c51!fç3<ÞϬôBÑÌu¾pd„,ÙÜgó`êÃ3•áEçgy̱MÑp–Ë<ÿÂîY¥ÃB§HO£õ4¾ê³�R,FÄÜX6WÁÑ÷ùòB¿µzš±S¾&¯å·~ð ýµÿïßxÝ”úeú™?ðé�ÿ#ÿYz¶#Vákùñ§ÐÿŸýïm—ÿè+>ë_U|Dß}ÝÄú{ÿî¿—þú¯ÿuúéW<-»ôãÒ¡´Ì3ù?I$Ã˳®cÆžŠuÐ5ý£Mz¤r¶ickd'\N}OÛ  ÓQL˜ÁõùõèÏ}ÿÊæßæþÃôýC¨¬2[O�æ ~W¬Ë6¾}å‡YtM0�Ôîœç²TØ .¶vÆ8nx#æp[*­HÌ'kH…üêA–³þ>�¯&õbÃÓr‚GÖõ¬t�á)kò?Àƒq¡ºâЬ'¬UŸÔø¶öLp=ª\Åbjy=eH3pzÂeÛt\›Ö Ö¿r3—Fê–§�,¥óˆ%,cÊ}ü2¾°å¤ÀóoÄu¼§Pê\,–±Å|w/Féo¬­�Å ´P¾Ð§XŽn±Å50Ï?+–[>/u¯�û#î[ì³ü>Åå8ܪì–åÿ†�^6‡Æ£ ý»þ]1°^ÂuÏ�^ÿ`oŸpñȲqþ/ª—®ÅçTËH³y •Ð6u l€×ú²þÂ3Ì<­>rÜL~±7ÆìqÈ’Ö‚p¶Iy�œI³â±ÎxÂz¯ëù'íÏ/ Ú]À6Ë«‡çÚß„Çù§—%dÚZ¬Ë‹òË•ôpäÌn�Dh¿ä9ƒÇÚö^™»~CìÔ#hß_ãùéËU€†õq‡«Ý#ªë×g&ƒ/ãzar¡ÐR².x�Š:®‚aã]\6kè�5Fî:Æ�x\3¹` •K_†>>Ö¾Ù#Ë1XÄêj«Ïa ÷t…FÇè{x>úú@qM:©*=ØbãQ5² �~ ^²ˆ…"â säZv×÷J9FÛé+txo ÑÎY%ñx9”Ã6³TãèiRAb£*ÿÐ~ßéÁ¹ZC �Ø®�b{«—à•“¼´:aÀf×�RZDzȎߋï7|ѱoB®Æœ)‰íÄ´ãAtr¡AÂÕàP"?G”�©(pÀµ$-à¾~3’™”zºTïªVS68åÒO¹î;§ü»ƒ[Û“�ÂkÜòfÞttÝwãûÏ}X#¾K… '·³ëéÁ²iÓ…—ð`NüÙ‘m_2=ÿqS£§¸Â·Õ*$¨)ë=ÿÊVƒKOÀwôHÓv§Hþžæ¾ÁÃæ"5Ì<äd±ÛmÃë‰a½Þ+«ª!Tùã?ó‡éw|ù~-›×Í_ýÿöë¦Ó¯mWþŸ¿üçéßùÍ—þ›ÿ•ÿjKÐE¦ —¨MþAŽ4ö ^7@�îG£íú͆½æ¾þK寔 @]ê‚ÿ~ù/þÅm㪃åYù¹Ÿùú›—^ r}Òø½¯}Ùiàªë‡?¤nÝü{Ý\\¯÷îgþý®ŸüÛèñá¼mäýŸÿ>ý«ñ/l}ÿ‡ÿó¿@ÿÌïþÛé'^7‚‡•ëïWþò¯úAÓŸýþ/ÒûÃÿXDȉ~GeÒõõãÿîû¿SÌD÷ T“'(u»$;Í¥A/{çÛì?QXýgÛíY]üз%9½Ydï¢÷ÒòÎ÷ÛÙ‡|$¾dÚ“uIŸf뫜ÙÕý/üë¡å¿öúûçöO¸N˜º6ÒÝVØ´»ÌL-(»û‡ÍDº«]3ô× À|ûÛì}j˜×6oÃ-¦ï•W8£ÀwPĽU>þéú¿æ¤õÂ�Ú%ûG Ë0qXŸ4ã{Ãüsçwì6w*Ô[�ÿæoþÍíëOþäï¢?þO(ß {üÜgKýÊûsTœ<’½Ê~P³¶[ÜrÁdŸ:èæïT¤º3ATùºñ˜M¸emëÚ@VãÉ­¾3QJeOmv–¹šQN&¿×þ ÁqÜÉ¿þ°'i£ï¨Ðv‡W…¾¥üš÷êfnsÝñ�Ÿµ)í8~oæÆ¿ƒ7wÊÖ•S#Ý\?{2ÓWêÇ›Í,³–3«ù‘á 6 ýôxÊh,Ž$}6ô´¹—v|{cí%êÙ¶.O9<ˆÞϯ»j‘ãoéô#]Õ _y z'³éüÙj>U¶+bëi‡t"ö®^’}5ó˜i³ÃÎ]ܵÜ×€;0KŸþïñ{&…Ž{üê‡î·4¼þòSp“þõhÝÖt‹ZžÔŠ?¨Ç‡¬/߯�Ÿ´å�°uÿ‘ãÐÎÚãòCÄØ£¹b“ËŠÌüˆÖу…Ÿá‰b¡w.Øú?:W'Š|Döâéñ1®ý¾Öû¨m9mÅËõóÖrùî ýÉš$³f‹Ld�äGõ<£Ë9<4,0ÚüxpM¹ÄH›á‘4àÄm8i‡|Öl¢òüÃÑþ†ÏŠÿò;MFk�ˆˆãˆ€rÞê,È*lsÏ >Æ#•ÂÆ1æz�yE@Öl¨_n›‡Ã©>Ðø…·e[Kfõ`“Åî2²Û/›Gí¸Ã)´| ú|cÙJ×z¢Ù31®õßñoEŒ®¯rž‚�ا=À˜ä§›’rzQ�ÅV�µ�&=Ü zŒ´tŒ£“ŲagÍ[DÔ‚qÙI«³vyn«~Ck\·tppÐÄè\†O[ƒA¾¯Iá%ùôQuÊàc­8#ö<ÿøªò)g�(£ò1/s$ªÇuÃÿ�."{ët‚¦º’_u°yã�^^ôÞò·|¡äù¤ó"G�¾ÂóÃè¶f^?€Ï%É«Q'Š NІ1W‰Zyžã}|ÄÂÚ²&3¸vÏ’µ>æ·k¸j#tÈ‹ý ˆuºü¤ýi¸mGq ˆF®µ§sî•t%¹Ê°An$FbÆ€ÀŒ¶±±ËU—Á<�íî¯]¯_Õ�zÝý£]¯«ŸÛvù=Ûå±=‚-À6HHÌ„H6°AƒËFã½çœ=¬•oEFDfDf®}.î”ÎÝ{¯•Cddddddd„ø€DËÌ0‘øh~"GqbaDKYT|«2lš5ê¤øS\h±/2³j ±(¥g3¥ùÚoh]ØìMOxˆ óŠ¢>;ŽšÞO‰nšÀç ó'Û· а'у E9}ѳ7ð�G�_ýƒ?Vs_ùÚ½pÍM†W=ï*Õ™C>øä"héL>øˆeŸXXE×�ž}t´š”Náç½3í5liEG¬iµÇè¹�'¬É¢°ƒ<:u¶ö é¦A¹÷ÊïzqØÌGöÀ¾–ü„¢}Þü¹ÏÅ~¸:ëæÔËIê?<ù¼ó%Þ“Âóm¿ÐüjyýÞìñüà»öc„‡}4ð1Tü½âE/ùh?(φy턱ùãw¿+(ÿì{Ó›ë€&)ĵü¢Uãí_¾#´�õ]û‘Ãþrîýû¿…ï¸ð|¢ á;® $ÕŠ¡«(ÊÄÒ’MúdýذÐZCî!Ekop<úOGùÍ„ 8öŒvð³�lj%g˜öQ¸Tëx$M;ÿ×ÃüÇ'˜Qgì›q¥ŽTuuÌÖÛ5åÛ°ÅZ´å6â��XFpû›DLz½.£e“õ¶ƒô‹e6ìkÓ"'={#Gå…œn4¼Nu“d¡Jü)nlþÔd¾ë<› �Îè;lH{ð¥;¾ž}Ï«¾Þ{Í{aïià+p¾\÷�”n4x¦÷Ž}Ñ€\û¬Ë�†×Ë>Ê8^¡ßG“ ׈�c² �°%\/Γ 0›‹I"Õ,XéÛd)àbômØ‚r:·4BÏìN䆆—½ ËSæX[-BGë!çGäe’Mòm˜\ ½Ž-Ÿš©å÷ùî$øL‹}÷�NЫ§ÜÑhù •÷Õä§V ì3x§,“�8–>,>Lö›Î± ÃPËbg7ùzfËÈ^äå�Xê±Å<ïhdÓ×rŸÄ'^´ V‰Ð†í [ܯ2tËʼnh¸ßÐX6ÖPŒa@ƒ %·…1¡u]øÁz®ð4<ŸpýŽå™®´Ì»äL|‘B²øÃñšŠÏ;¦�i@sI3å–¥¶¡_}œµÔãW\­wô´)4¯–×íÉàK™o<�6mZMƒØÂl+ â™-.åc ó.Øp�ž1»ÜˆœòE‰ønÆÎQ˜¼øs'ëGîÒ² YNZ™Êž¶Ÿ�t¶ìÈôˆQ}[Æô¦!οäq=¥gú7²Ñ7ûVL@0ülÙÐ9oαe-�°å_®Àj%Ê©ˆÇ½Í·X‘Oßh(m6ªŸiùI¢ÜæÏ+Y¿�~¿ÄèÞ …—äëG™àÿSKN2�ì[‹jS÷–Ôñ¸ð<‹Î#´Nnf4�²@ ýàòGxÿp<«wî*VoÌñòUloÝÛ}ì†Ç/â‹õ4Í“Pž}$ŠïO±ü“1Äu†Ø´ ”ð%rZøã›}f8;NÇ%OòFHz- ˜'ð:¶á}MËô*ã{°¡Ž¢X•ÿªZI+ÆëŒ'þš-‹grÑ�Û_ïÛ›„ðcÂí-Ùuôl—~¯ö ¯²îî2ÝHò}¶œÜe€üF|:—[�?q˜ä}Þ7NíŽø]Æü”%)à›Q}+^0lÁé¹€™CêûlEFP+æ)N¶¸m^½ôÓ!ß¡úW<�ç¶euŽOÔo`u jÇóº(¯Å•µgÚ¸‚ñqSÓÈ;S6›÷™Ð­ËÈ¢—0!M�™M’·Wèò(¾º|`$ÜGgúêÁø¨ÓIíÎp°d‘hæ\TÖy£”e@!áF`‘1Oybÿ k;Ñu…£P`8¦F!þÔ‡.ys¾œG¦&Ÿµv÷*ïaÎ.ò¾ˆ$¤ëýfR î­õùÊw§8¤àö0@4ŽÀSë7ÈKe„Ë;]V½; 79�kºPÝ4àç}qêE�ÿVû“Š˜^eäl2r= ¨Øç qʼn™(Ú ¿ô‡…Û3O;?÷o ~é7öWûð‘?/¾ây°˜“Âì¾€«¯»>”ü�W½,(¨Þ÷‘྄'œõ­ð o|S¼ž€Vn¹ùæ`u‡ ETpaž'œu.¼ê»È¿]­o7 8TÂÝ÷àƒá÷¹g�¯{Å+†rgÁ¾çÝ¡^T�½òª«"ŸÈQWKg;=(ÌnúÜmðâg?G¡,Í×o ʹ¯Ü{oø‰JÂÂ?_ä9faʲø4åÕ+„-ûðùÇŽÁ+…]5 e®¼ô²à“ïö/ß w ð ‹Å"‡$¼“ô]Ïy.|å«÷„gXö;.8¿à[Û¦+¶ñ»ú‡a9ø®ç<.~ÚÅñùïüÉrσsÎú6¸îÃ`ûbxwî·žM–Œ/y9ìììÀB™?úƒ¿ÏÜv Ü}ï=áûk_õ8÷œs]–Køø�Ÿ`¿g ¥ûC¹³Ï>khë,xÕU/‡ÓÑÊÒ¬ÿ`ç;ÿ¾îÄ»ï&ßaoèxg¾Èø½‡�òðÅAiŠEü ?F´Í }Ô}ðׄ+ÞôË_pÞpÉÅO…g^~El_NíÿìêwÂ? ãzÎÙçÀ¼ò5NÑïæÛn¾ý�?"×àóϰÕÞOÿÄO Ÿ¼>~Ó'àᇆç?ç…ð½¯üÞT‰>N.%øâ_ ¼ø¯¨ÞyçÏ×èzø©7ÿTYϰQºûž»àý¹.<þáüס® ùïº÷.X kÄ÷óŸÿ¸â²gZÞ1¤>uCP8.†±~ãÞêúÀ@_�® ŸsÖ9pùeW³¾ó2;VEJŒï¯ß÷—øß|ÿýØ�¼ œ•tÂgô»w÷ßÃ=<Ì…8ë[Ï…Ë/½®|ÖE­4–wÁ-·~&ø¡Ãë­óùn§K¯¸.Å~©¿õÛ¿>(Î÷â£PnhÓk^ý}C¹sÃ÷ßú¯ÿßðyÞ@/½ê±B–÷|õ.øðGÞ÷}9Æá<ÿü áùÏ{á Œ½05É2ÎûÞ÷¸ÿÁû‚åÝ˾çûá£|?|þ³ŸðbÙ‹ŸzIh§ð¡êG߉w|ùvx衇ÂïsÎ9Îø+)Á«Ôåúbe°¿~ï»àk÷} ¸Ÿ,ñów“w\ð¤ á%W½2Áú?5´wïWïù|!܈›—¼ô•pú±3@ˆ15®¢)ÊøÏ>p-|å+w Dä,䪫^ ù€:WŠÿ·Þróð÷éPaCXÎ:û ,/‡c $k»x¯¹æ]¡®W¼æBþ�~ðÚPö[Ïz¼éM?ÖÔ 4Ò Ù=¡Ñjd‹lÝeH\üÐJü¼½TÄAö ýòö³HÙ¼5" Œ/•…˜š�46Ÿsp·Ë-•w ”,WN=sùR«ÄÿB¤KöŽš˜ë³¥¼¶-ÏeåbÔ4޶u, ç2¡–eÔÖÈ6è«_Çq­`Ûv˜²Üî!Ý€mÍaªê‰³þzUÀçSFhAýÎÝãy-ŽAEÌ�qÆ^2xÍç�íVÊï²óqte¹Úô�/X¦l²*¿™ã rVI*:‡Ú\ÒH•9>¦.CÎ #ì ùKÙ˜Sóßä5ƒoûTà8'‚8n¾¬ÆÛñÕc«óyŸ]D†á•±[õ š5;èEÛÆÎ47€ÈÖ,;¶$ˆ�zVÝŠj÷”«aB ˜Í±ˆRxªÑP7ìî—e5˜¢šg8Þµ”½7a@Á°/£‰¶4qéÈgcW*±ìËg`3=BHßó$Èò+\…$Ñ‘�æŽ|Vv<~)i Ê·¬Rö-$�z »šÐ„’ÒloD½fßy ÆÛùxA|hzÓÉ„èS¸±mùì„�‚[ ýžL8‚Ò&->Ž¢.Òðô†:ñ©ÕЇãšx•`C'¦}¿ÏŠ,)eâ4Ç� |DÖC–n}@ðŸ�æȇ¢›ãþpÔËNL4xìNáßì£Òµ;V ê|…‘{ûéѧû®lކòMwÜ"˜Ç«ç£Ö¦YEd‡GøÈçDgg»szx!Xê ¾Öì«“-4=�{³!‹¹ž-¼šU¯ Ç:]ÓGµ\Ïqû™ø¬¤£² S+ ÷¿ $1­ëÅânæ²±(Ñ}ŸO2>ÜD{| δà³å]OÑ6}þÔÄ0‘OˆüQ²øè%:iæl Ó‡ØÉÀ-ÙÂg.–·lù&ºâƒjÖ+†ëA_±ÁŸMOJ‡¾Q–±ÏÃÿ»lé‹gUH?[òÉ êDø.÷µÓN£ð÷’sd9§7Ö‚‘fÝ’¾+Œ=Cèo-‹(j{ZùÎxèáäñ¾x€þþÛƒð³?ñ–À÷öVð•{HÙ'z,#åPaå×d9ýðã�Ãï FTü�D´ Jeü»å¶ÏÿyÝÁ3/»,<÷�:^Ÿ”!ž_pþyA ˆé‹wÜϼôò4>@ÛïÏÜrÛ@Ÿ÷ ȳHAÈé½ï½:(ÓnÌ�_¼óKƒÂðKƒRæðò—¼”£ÄÑÜC�<44½‰ôÑtfºhõŸ¢ÒS,-|ÀÅCAÙˆéú�}®ÿàõQ>ZŠdáGûnŧ¦Š®®×ÉÏ Ê*L^p!œyæ™ðTôS7´yP¤R@ L <ýÇG¿1ŒéÝ¡„å÷ÿè÷I‰ÈiÿÁ}xç_¼>{Ëgá§ÞòÓ$WpŸQ¹…°£R •Œ¨8$ø¨ì½Ã;ü{dhãeÁ�µ9YO¢Êг¸»p_¸/(ܰΠ˧›5Qü?t]ðØøt…ô`¹_ýû»èïk_�õƒ)¸FÛÃ2øGú4îý»»ƒës·Þo}óÏ )~‰MÑàãX‹O< H!4�ÊDürl8(É7BW¿çOÅá§ÕaDÍ}¸ãŽÛÃ*åЯ ^²—¡Îwø«wÃ'?ù±X•T¨àºãK·ÃO¼õmð„AÁ…͵Ã:ýð@s¿ù;¿j‚v„ú<âÐxó[Þ”r²ñ ¾�|Š¿䃯Ê¿{ï¹Kµ¹_eúÇXéè!´÷;ÿõ×L¬åÁ�ÆðïΡ¯û¡�‹.¾$*É:í;:ßµYþËoü*|ƒ„0}cæþb]²ýpžX­ÍþâÏÿn»åÓ  kÌøwï½_�ŸxËÛ‡1:#ŠêH/ÒÏøÚ×á]ïþc²þt ÓÉ´&ñSO=;£ IþrJ–Ò›ÿi¦løŽLcñ¥-iÚªÎTRÖŽÇÙ‚T¤¯×%á]À>K1+oÝÊ"l§Díû…|ÍQ¶›Ž}–Æ0ÊQt ÿt,S´™E¦c‹Ÿ…Xv± uqU,GAR,º^åù>YZãŒï�W>Øó~ Åçèã‹£•ŠEfǦÁK>œ°<·æ‘{ó%GQæÎMØâÕ±EÏjã \bÚ8²@êç [�)üZÞ–v+›¡ayPÒrn-ÿi¥Ti£;hªâ&ð³Í†ä®)GwÍ•r1nŸ£0ï3ßåß}KrUË[… ¬XDý³`w¬úyü(�ç”]ÙNy,0G�Å4w±p G½�Iâ-ä,¥ï“’Lƒ8aýƒXÂmú&�ö¤#ù«›:Ñ �‘¥J,ÿDU#76&lQ¢Yþé”+zÙ°r8Ø¡r'6ìx¡:âÐçÑÙ[ÆuêìÔ[œ×ÉÎÁ,‹v=[IõÒRôÍÙ'Þqo´„ÄßËFé)<[þ!<,¿HÀ"¾©à™Î¾¥¡þˆ¼2±¦BŽ’-!DÜeÃà“³FÏŽa|Æ#Ç�zµf:žn*y_SÕµ¬Ø‚_ö«SoÊ3ý{HÇ<ñǽàNÍÁœ-4ƒ…(ãßϕ廀úÏê(ñm9)ŽpŒâÁ§’¥ ’ë^é�dÄN¥¼SC¾öಅËbI/RÞj䥽À³>È÷Z}æg:1¬tFìcÜö°û>2u| Xâ¡Òù]ÇÄjÀ£¶žž:&Bzïb ñ œ(†b�iåcÁá*Ž=Õ•ÚÞ2]¥%©ö$«SïÊ.'—,J¢¿&HxÁ¶*è Þ¯�4iá.R@®Ç g6^æ(ñ�$ÇIEË ‘º³‚kCÎŽ�àÁ5f !ééTæ¿)ÄÏÌ|Þ’¢Ó•|$ÇW½‚«WuæÉk*Êñ¨êÐ8P,kkòò·að5‚Ój=>'X¨R¨æÜÕúdœ4Xª«×–䋺ó¾l›?~yæTfšW¶êü÷°C=ázð Äô•¯þÝ | KePAˆŠ¸ç\úŒáót¾"HÿÖ;Þ{ûƒ2ñüÀ÷¼ žpÖÙpðP_ø›;ášO~(XýoPôýè Ô“tÓç>•Xî%Ï~vˆÜ‹ëÜGnú\ýþ÷ Fª«M• sÏ~Æ¥píG>2ôçÞðg}Ò@ÞuïßqÞgÀM_¸-V(\ÞF¬Š4 ‰õ‹…¾8wÀ‡¡—JµˆSüs|ÀЯÀþ¢?A±¼ä)O ŸÏºôRxÿG>,è°�O¿èbÓÅœL%šoѯi Y>öÉO„?þú×…#ZÉa{Xî�ÛeÙÓ/zjP<¢2•J¿ûÇŠ?óÒËàÊË®�ËÊ læOßõçQù÷Âç>.ùï. uß÷ß¾”yè�ñ=ïûë ” –€Qn*=çì³£åæíw|É(±�tw?�à †¶$a;h�Hcs|ß«¿N?ó[‚rìþgÁ"ðº((ÓžÿüÎ{#ûv ÿu7ÜpC°2|ÚS.†ÅÎbÀÝ.˜ÕºX—Ò@’"‘ŒÁBqHW 8þ«÷ýUÀýgE—î§…�*ÿp¼¾÷Õ߯ëD‹¾‡YI‰ >òÏg*ÆðF~Áó^G‡ƒ‹ûþá~¸þ£m㻠λÎ?ÿ‚¢ìɲI´Äû+òP™õò—|7|û……Ôg¾Ç?Tв­(Eù‡q¯yÕkáŒ3†~=ö0|â†�Ó=ƒâË]Ζ€o}ËÏÀÁÞ>üáý^ø�Ï/¿üJªƒ­ÿœf0¢ÜŠcŒ0Þ:(ÿ0K°”}g;3(øþú}ï¸üàß"ëúÉ*®0ïUW½bPb_†-±NTŒ]óÞw0¾-²í~øÚ¨ü{Ík¾.`E‹ATĽ÷½ÔÞÕñ'ƒðíQÚ,iÖÁ«^ýýCýpÍûÞ‡XÇ~ôÍ„ïÓψ%Ê?LÏ{þ‹àÒË® Ë Âý¾¡½ýAqˆJ¹·ýÜ¿ ÖwZ¾ŒIñŸèÚ ü“vžóÜ…±Â6ðÝÕC]¦¨šøþ6T´Ïžûœ–+¯ Ö¨X¾Ã:ÞŸyÛ¿ ýÉYë5×¾;ÐÒeÏz6;ýLV,‰_ÍŠì"ó…÷Iԇ̟§Ëó c¶Q†qœÅ³?À¼½CÒ¹/*.ôCo¿ÚÑoÂdò•å©&Âögz=tÛÚ­™É‹FÔ©€¦Å2—á ¯.<÷6_ †Ú¶Ü<Ͼ�&WùªEc—‰v15’�Ê¢“ôý°ä+�j«ªb8¬N°Ã¦S�‘þo“…„�w¨¯àÑÀ”ý>l,GçLÃöéÏýñ©_ªgÆô|NÉ™‘¦•.¥–ôvG�ƒf'z+Cy©@N�é¶¡’Å\}Ü àŽ8ë6¾�ÀöYû[úÊÿ5�Ë_” åÛÿ1UO¤ ÐãæãXèLË2<ÓD”5ÍdNtËMÎͳ�µf†béF£ê÷9ªï|Êy­Àìkgz•›{Ã7Ù¨_¼¦rù]¢»è¯€,ó8œG�u¬z÷S6½k9:aCÞÜ[ªLêÓËÇÓuö1'–HÆ7…£èOÃ7ødhÇRôÍש¼žÏÈ¢C¢KÝ"´hÕú·òmzЏéZò¨¯·Ò Å>î¢Ï"7�RÞžñµ¡¨ÂnÂjÃi&žÂµ§.èù’ñqâ8Õ?l Œ¾Çõ<á ý„,¶ÜYæùå>•„%·uÕH×t]õ+jc«gO*ü¦c§ø|ô1Ï'ŒŽñ�€ñÊïŒ|„¡¥køäKóÍ ŽV;çi`æC³Ã¾íö�'Φ9pCó(Zþ©± yör‹(>JC?¡þrÔhß°¯+¶˜s윦ç¨Hí)ÇyÞ!ž¨î¼1ÿ’½Ãœ¾õº½.>¶s›M‚-¼(VÿÈy2ΞO t 9¸gŸwÀK®ÉÏÌ>¶rìCCð(×E½D±œ1lÁGEŸ|¸Ч›wv±šê™OÑ#Y ©Ðk‰ÊtŒëçèXl‚3à›ßsw‚%#ÒSs*£‘}²��¨�Kö­ˆ†Añ¡9Ù»&Ö�Š–ÿé'vÌ߆ù€¬ú�ãÝ'ÂOø¶MøÛ¿í\Z¯¶ú„o|ý÷Á¾üå`‰G¨#ø®ùøGügžvº²DþÒv¿ùG0”ûÛØ/?þw>»ƒ¥Á'ÂãTÄÐÅ|žõŒËá£7ß·ÿíß�Ð¥¥ü37úÆ£pæéÇàY—]F¾{%zÈAÕ€\S±î«ÿêºAyrŒ¥Ÿ{Ó�Gþöõ¯ßçô¹ßúm QSÓ>ÓZÖËœ—t=?k”›o½5–¿„}¨À¹ð¼óƒbðcŸºž>(•|+'¼lI+'åì"£ï6¦=I}%º *À~öÇß<Œ¹X›Òþ×ç·Â÷Ûï¸3(#ñZ-ÂA”-ŠBPÇ><‡y†pÞÅ ,´®Ã?éý9ç~kP”þç_ÿÕ PzÏûÞ ozÿ…iKóuL\’ï9Äëîbž9(ÀP™w7^�hc'^�vẬX…^ÈŠ)¬[®ã¢ÂõgÞü“±Ì™§ž ÿÃÛ~þ?ÿåÿ J@Tv^>(ÚvTÿ?Ö¾¾&¹©W¾V Är@c÷¯_÷ÃÑWyØ-}/z±ÄhhÎ4›î¹ëžøþÂo¿ <Æ1Bßwß}7Ü~ûí…£ž6ê‚*ÿ~ê'~zÇcÎ †ÿžöÔ§Á/ÿÚ/e ^O~þó^0àvǰ-Ä^þáüáˆß'>åÉpÞ“Ÿ ¿ü_þ�ÐÏ~ä:øÉ ~&¼Ý ëd¯ýâr™œîÄ7‘øù'nüxøŽ4ö–·ü4]3 ¿O”‹çøÐrð“ŸüxT>ðà}¬ØsÁâçR<*¦.ø‘ à?þ/ÿ!(ÕÐòîŠËéŠ3**~è¡Óéƒb¯îFÜ{ˆp‡éwë®ß~ðCï�p¾õ­o‹]:vÆç“χ_ù•ÿ#äûÐ�ï¹Ïz1�ƒŠ~Џü¡|}PäIÂ+Ã� ŠN„S®è†ågÀãý~=üD‹»ç<ïEDSü¾xø� •œ¸û ´Âÿö pCEâ�7~ ^=(C éâHÄ•|EËFT€aÙ7ø:}PСv`ÉOÚÓàWõÿÆHªÁ©…08FpˆÕ>ýŠgÁ˾çu? AíØ3΄ÓN;~÷w~èâ¶[o†ç¸ÉÓîî¼ííÿ¦l[&Ë÷œNóE‡ ›Àµb–Ø4js�zX½ò±ðÝ(ù9¢E_†¸©ŽÆ’†zÅ·ù›óÌzÚ|­3 $ νd‹ _L’¹¿fË¿[0ùŽ÷#�@FùÅw�x€÷Âç8Côá6a‹¼ž}tqŸ–j܃xާìóMÎô—›X®Ž>dYþì²uiãåê"[f%– Z?{Ü?ޒܱ¸ÓñÁÚ&· b$ô±¢ÊlEbO=Yüd½ü.[4ölá±Xâ¦Ô!‰~¼Wò#0CBâê$Ñ™¯´y°±b®© îoö™_ìvjú¥–yúÞ>áb¾c;>ç ÅÒóøµJ<Åvw4°ë<.'ÖDO§s4Ý=-wCñU.E•HÃõöì#sÆúƒµ\d×´öíØ³ü(d¾”¨ÉŒHÙN81�åöXz‡G4/�øÄ€n†…mêÓ+_äiÄ÷5Ï×Ex8äãýƮȼM“y½f1Ãñ Ê -±\ŒQ›gÎ*^ù·ø,Üwä½.å¡ èã5ÈJìãø`C{õVJó¬�}»/ØBrß÷†´Ú%­›{ØÿiGÄ‘-“[¦½8�¢©0ØÔD‰ýÊT§Ñšð°¤úlaËú(�4lµêÌ7�uÛ—*¹r0oC•÷cm3Ø4$D�‚³ha¡(#êÏ==�»ìiŠ�(Ë‚RR£Z©(Ž�Á{0³Óüò�."qsSÍ¡øò©| g9¥gíºÊ3ðé M™š¯ƒ£ §“áÈ5Qßó|E~3uÓœð:/œ\ŠŠH€šò¯è””ñt‡L^§¾ˆbpË|NýŠ´ù ¸˜¯x}6Ã�S°Ue#oʸ„ò“é¤�Sp¥xˆô_ŠxœmÇ|÷`WI•ÁiºÐ+ÜÕhjlÜszÓtú;ݷϽ@>øŸÊ|Ì€�‚þœSJ“¼Ï)¡¿]å—NÞ¢âî ß÷Zº*Âã¨~œåèÓïóƒò¯{~þõŒ‘wÑú0(ÿœÆ F.~!+u‹#ó2-Z&ÿ%OyJPÞtëmðʾÈôóæÛ(ø*©ò:…ßF>ΉüºJ»`–a-±ïh_~ª��ÞtcðùW$OþýžzÑSMŸþÜmá'Zùaa?„Ÿk¤[ìîx¹UæÒ! •UaÌå0Û;ÿüàÏ•}¨(¯.á@ÕŸ¹õ–øöÊK//Ї>ÛD¡IŠÂ|»‚=m€ñcƒƒ¡ eá“Ï» æF«@LæctP…tr5ù»_ò2;>CÚÝYËD´BÜßßWk/8ïF.\ÒsùUÃï~Ii]wXkù�Š”ÏÏéØ^hÑ *ïùêÝæp‚.áñeCŸQ¡æx„ì4X:>÷ðWïûËPþ�ûï¯Zò}w´ Lþ…Î>çœ`ˆWmñŠtl¿ÆÃdð*ï�–îgÅÖ‡ 䜬СX@ŠÏ½‹/zÚ0Wžk×máo¤)T†ë¬Þ µM^¹ú+T8JzÍ«_këò¤TCEãõ¸.àâž{ïb€©ÄZxEåE`¸;À+¾‘1áµVTâsa—]t ]Åmƺ�×Hbõ®äìÙš…×—åñóŸÿ] ¸°v :»óŸþTì½êUßÏïªòa_ð-úû }Rm"¾ž7´óWõ[Ðã•û¯ÄŸ/zÉ«¼4 Ÿ8à˜ØÆ—¸Q˜C�m"�tÑ /qÙä2™ WΉßqÇo“üå±M1륯(ÉsýéßÔ¦•·�Yç…×D1H‹[RÎùµT£Ÿëw„ B{Z«c+\ÔWŠÕzkï!ƒ¨£eŒØe ©Nh»‚î!uWsãð;ÈÞ×¾g �e¯¬’Åøå[€²/zm¶$•vÂólŒ«[—±�hÔÔQÀ¸Jƒ'…sg>ìcÕïâKÚòãô # W»©û¡÷úYÖW]v ·qž\kî•ô™èaÅ¥|ìã»ä‹_ÊQ[ ÌE‡3xkß½m¹§iÓe}’çÛXF”c3‚w©9ó=ÂãÀZsó18 l>ñh©ÇÌ1E·f;®ÀÆ4HBôÜ 9ŽZéÛŽ|²Œ‹/N, t0£|vá×~m1SoáØ§šgèº5ËÔä4zÞ=Æ\nÍí±…àt ½èS€—à9狾n:5D¡¨îq‹`3á05�Ó•wY¸Õ‘’hÔ&Ýs´¾àƒñ!`‰’*(™L ÿl!á×»“í¸KgªkvâðÙ¬Ô�%[T’ÍK8Äù„ß³¥Ü°!¿Ö¼5hÂ¥mhrJ˜®%G;“ƒåŸ Giá÷FLû샤Yu‰Ž�‹EjMpU’dü³¯¶nBm‡z•š^Â�îÑ™•X.ÅIâ£2ŠÃOÞI”ááóQR2»]>ºä»óŽO �î » ·w‘–› ù~ë»]¨¥ÆÑDëûÇèÏ«`‹õ¬’/¹ÀfYùcLÇ¢ÛçY"ƒ2ßø„¯9¾çä(ÁR­›²o7�8 –ž}‡µ-Äåo}ÿ5ËÍhÈÑR‹�:gª<ÒŸôubQ«K>ñÕ½N44>É�— u«ŠP™¼! {8ÉëÖáU£NõÄB/e>É}ÀhÄè¯ï®¯’¯3¼²Š• õ_La÷Ä€j~úSžÂmó¸²"ñ g=qØ(ï2lŽ,˜ˆB‡óBeb Ö5Tp|ÇyO„'?ñIázl 2d Q�Ù·á+_ô¢b.êõ}ð9–žñÊ­(’,ò�ù�8Ùa…¨˜ ¦ZQ€!x1ÀŠê¡�W^v%û¬õÁ"•ah‘†é’§\ Z:|Ö¥—Áû?òáðîæAÁö¢ç>Ï0ôŽù'M|ÂúÇÏœ<¡ÆYßþ/bWe}Ö¸Š~¬WÃ’µ†dòLÞÄWp<zôá n ¥*±|çZbg¾ ü û'�PPQwìÔ3 + 9™ê;Ú94ŽhóÂ'^¬ÕÏw|ùŽà^WF¼až+.M�#î”[3^ÿ�I¹�_`�’ç�Aé{áOÆA"ÝFj1 ÛL)jž;ý(CUpPã -Íчæxä±oÀýÿphäÊËž}‹áo¹ŒéŸü¼ìª—Åè¢xU¿Wcv._qí9ʦcÒDEÒ_ @|†ŠÔ Tp¢Ò*\ÉV|&|ëqÌ.‰A4þÆC°8ç\0‡ÑMBp!ÀOhz(ù·{*[¶é„xÄ+œ—�AôzöE†>GQ9÷À7î 3ä1A‘Æó&XÈ <ßóz‰QC=œÏüʬUDïá?QRbÂë»9è‡ñºhÀÇõד•àã{ÿÓÝ  ?H0£¢ýºÔvça1[ØYÉÓôyÏû®põ} þïÿé–Ø6^£}"ñ]âZtp�òbKvš4K@öÓIt™ŸuËÈáÇyC½Óé.·— @Ðí ü¨tÃká� øE¥‰v°FɃ_û:mš†zÎÊ9>`š\øúާ|'ø¿~O„çÇjhïkÿp_¬ëöÏ}Šò;±„£7¬}ìÑoÀl˜3ëÞÊ-§�NBö¨ß÷‘“>¿`ŸÃÁÔ&mª›Ö§Áu.•õ‘¡\jÿ…ãÚò¡G´ âƒ-¤æIʯÓ>ß„ÙÙX-b³D·�ÏE^c Ó9[‚í3Ü;�%æã|ãkÚøBªI»¸ôpª·ŠèÌûâkï€òI4؉ø"t ~L}veë¨'ßæKÖ!¾ãF^‰|U…¢ƒŽ +|Z¢}ÇàÄ+UÄ™ª)/ŽOÿYžv Ú“n-ï·Än¶6ÕÃRÆO|r‹E#÷¡[1gM(”ãh£l1·âzf¶›ÛÛ°¿a‹½n‡,:›}±F’ý6Ã/⼌o£¥ãñ,;T2ŒãʸÄ%¶ø2“p×3ÞV±xYpvŠ~>¤ö )¡ ¼,¥Di�󸉇Z'_ñýËééî1ê2Õ+™6Üï`Pê-÷`�—z~éŸË œ½…g�å¸Ýö¡¸9Xsû,¯êô0Ä't´K.Øi[4¼_ð°ï˶ÞÓ2ºÏëÅ"Ÿ¨ ŽàíÍmsç±½‹€¤„°?#¹Žß²/NqöØñø·Œ×=¦ç#|)�×Î܃⚱ÝÈFø�°í)ó¯uæÛPp/˜)ùsÎY¯³Z;�=\Ãïë6Õ‡][óM‘#5�ÁßûiµóÙÝy¦/‹²�éNü-ÍNòŽD¡P6>ÚHq;bXÙ*_øyQíÓmù=štwÔ#ÝžsÙ;W‡E«Ý• ™üð�bLIhÚ}*§&W±:Ès°ðæ Uþ‰Þ)y[áH×|SSÀp7ª} Àa«*ð–ƒ*†ž8ªÿ:9õ�¿È÷ˆ¢PéŸyV’…©×ç–ŠZ(ñWz®> mD©¥¯3êhÁ¹e…ª!) #î~Ô+?Í{“EC}ÁÀ!W_‡‘A€Cy¨¸Œ¶«™P¢¹Ý��˜·æS-Û å …ºÐ •}_¸ƒ�<7´�¾1]xÞ“àÌÓO(¡ál{¨$‹A¢�xâ9yû ”’‡¨È:#kçYϸ žÌÊ*Lˆ;¼Æ›Ðεz¶þâî_øò—Xy™Z‹~ð¾|')]Žû;ÿ66dÑ׬?<¯”Ø–ÄòN"§Õ-¥È„úð @354B/xöóáú�}>}Ë-𽯠è¼rÕ­.¹øb "×sÆå؆|{,cd®ivdÅŒ4c ÊÜÉLpÕ§ë?ü�øä³·~v˜sw™öPA‡J/ôã÷²á¿D?¾Þ7¨%Ö)Q†u‹XŽ^+¦5y¡êÜ“¹]]9Kt¶¨¨cá"¦ü'>uCðA®‘jÁ+4§^åÏ2žê|É’°¯b͆i!––Ù’BÏéað¥çóaW8”‚c�R.öàƒ$_‡h¥w'[ê\¨D‚zÒN�宊Ü(�è$Ö†ºý¼À¢r�ÖÅÙt êÛ1ðAÄ÷bäz®†åÃ$…ª(Ï›»ßòÝœëC�J'5ÿdü9úFHyDV.Œà^äX—ía¶ðŸDT#†˜�}¥™øµ¾^©V³‡fêŽT�ó¸“�»P•ùkâguŠx[4‡!Y÷ÑgóÞ©«„µ "Þ3K¹˜é ë×áGÚ5ÀWÚ˨o 6£Wò%ÉmŸã´Sirk\‰ù2’Óu (W“äcpÝÕ†&æWk„¶/.æ�^+²Š½+ç¨i OÀâÕyÓ¿P·³õQ²Q�z©Ñ¦¶²Ülz�ÈjšWXÀm��Ì ÇïcÝ9]»úxƒª2{ÃܸL£•Öpe“ÅšÏ`&¶q+¶d™W0í”i¦$ñÙ €í�å‰ëù(wÍ-sx’fJÁ²H¥öT©{\E6Ä|lùçØ'—?bÛGË? c›ÍHoR¾wbBÅ>Ô_AeUör´ÌmóxÀ¦X¬¤†éR}3c žÕQ…tgG@+¢Ä'k°½„¥§÷F,p:¾îܦz-üv¹üA¬_{�ð6ýÑÍ%Z¯µ´ñK³�õ, ¡cø=?Aåp|û*óÒ†’(”¬]AÑ4±¬ÿïV@öƒ³4—ªŒ^ 6ø9Ëü�Ñø¢eBøoz‚êŸòøÈ‰ß©×'ÓàhN¡£œ£Þî’�6˜ïN3%�ºtAõ­):«›Î Íõ3*× ô!‹%‰–KóÂÉ Ï÷ˆ¾Ý| ERœÔ³p,ñÕÞš`ìÅ"–»ÝÚ(-—ÜëS“œ?a9Ùtv •U�»¾Ê͹dÁ|•!þÙâ&ºú—“GGG"=�9ÆK³YÐsØÄ¶ !üÙŠ“D~­#s#-Nä: Dg%_Š òµ‹äw†îâ<ïè]ïOM7|Ö˜C†Ëu* «®O, g“Ζ›QþæYdŠ�¨[çÒá@|"úuêk »#³ð=ùødpWv3cÙ˜ùŽiÍ�¦Fˆ�¼Nœ„ñ·?NóÍ-ô¸0øÿtàC™Ÿ PâEtdß7;ð…¿ýðl1‰þüâ†'þëÈ"ýî±ò¦çpmßxì!ø•?øý� •‡ÏzÆ3à ßú­áݧƒ›oû<ÜôùÏ1ÐH �²¢Ê?ô(Yi¶Š>xçñ }V,×û0jød¼ç“ô~à¿}לazö ´»ö£�»0È B_€i8¼{Æ¥P&ñ“ÛC=y0k d˜åÓsįâðð®¯ÞW»œ‡†,`‚"11u8}€ €Hð;²ÏÑòz×ßßËmx¸ýNº6£ãöÉùÖ]|½5X׉àÁ'÷-�WÃëé5éßóºËü£ç­¦ê ‚ç�kMYñÙ“YðivV‘£êèjhûl–} ;ãmW$Gì©è´;³ VisÚÐ<‘\äŸO»ä"¸î£€½�'ß=àýÅÉuã§]|qqÍWÀÛ_íÃ)sâW–ޝ{Ë=5 H³}Œ^j’fKPO-ÈÙ»M ˽K–ûRg˜ñ¹¼ nEÄÂ_*Œ4ˆ @¼&‹8©sÚ¯xpÛŒM§¹Á0½¼‹´ÐÀH‡œcËB]°¬vAÎøð‡u¿Öœ¦SNsÜmØ’{RÁ#Ò5Zû 4¨ø¸Ä�;–ê=Êð÷¡�]Ï�CœÁ!*²(Âðñ__ó—Áj/Xòn6Q‚hÑÒ'.ç¾”Þõ×(ÚúA<Ù�ÏQá(J-­J?îæb ánàUr„[ 7)tP‰à»M”‚r²Dai/¹ê•ÁÿZÞ?�÷Ý®c—O|òã!@Ç›ßü6^æP>cK¯–Ö^œ§öâ«7�ÍGe5ŒÁ|�–S²ÌÊ}T&ê¡ïz“9QÚ¨ùÑs;8XàÙ¢AI˜ûòÆèΞqTþ+qaÚZP0Zÿ¡�C¯dl» |’áäÞvf“ňƒuæSXâ4K6î³Ä² )ì<¬WDSö‘ÜeýY·d±ÞòÞ³³½¦õ¦þ�ÌòeÍ�±ìb¾3cyò€ù°cœa‹•¾Iò7æ˜z}}ÏÑ÷½²9oÅ·dD±UÆ-ŠW+ö±Ç7µŽr}K¨§†×…®M¾üâAš¢¡lÓ>[ˆÍÁ;K¼Þ¶ù‡*댬†©e¾ßyÅ^˜‘uÓÖG2_‚­Ï¶ sÆŸÜ�PS!|oçM²?q�WNQ�ñs•É<¾-?^¯»ðj*²š³×Êó%‡/l�ÁÒ�ñµb¹ëȆä’5‹Í‚a”åx�j syÑ*äÛ~É|ZO1…y§¡hÃfìKŽÎ�½Ìº µç ~ðÉ¢Ò†/0Mx>ÙÝž…)Ò°æõü]¶}�îS>miçTq™Ç ;yCË?=œ=¨[-ûhà&la).Æ%ª­n˜î–ÌSw¥ûÔŽäÞS˜‡gŸì‹‰p4WÐ6Éuô\n>z°c…T„<®ešŒ.–¹Š~nM5ۉŇø(\©µ¿mXnl´Î z`ßðœ˜0]…›¯C™5÷K| 6‘)Ї\°\³�Ê)[\®6JJÕë çwÞŽw¿Ç°.e+2rŒÑì[KÌ»[ˆ¸½âH"~w¶�,%´¸¸²Ð3gZN–;úÀöàJ˜Óp©1Ð(«ÉéO=~L׉F:-A‹ˆ*ôÁœ-¶e�\W‹]8dž@�D�âsFB1õ ®�a´tuI±Bzc›T–|.³þË`S2göu{z¢ËœÜ>Þª¡p7"#Ö8‡ÝÈ`+`4p*Ï*sÊÌmŸ&LüíÕeü„³Ty†�Jú0s¶À¤ú(ߥOº'ƒâXUš‡FŒ,Ì—eLÛr¥¿ÁÏxÃy…á:¬\Ó=sPÌ…ˆÀfb—s)65|¹æ# Ï$H^¦á¢ Ðò.£þŠÕÚþæËðâg= ŒÃÇM·Ý¦X™7 kt$_º%œZî}ôS7…~>ôÈ£Áÿ €Ï5\cý5ãÇÜUð"Yðjî»ßmøŽFÐç]bÜy3^Yùá5ͳb…_~b9÷¢çUg\ÏËÒ��˹ŽJQ¼úŒøÇ A1g¦¿ïQAQœÏUWÂyî9g³ïÀ{àö;î~ßÄðÊË.7Àiå3^;ý—§³Ë]pÌßú–Ÿ…\͵¨)Ç*(X$ÉY‰ÏãÀ$çDC/[Ñ7&àu_ê×É­Á%8:¡=øüþpC�í¼óÝ÷ÞËJÁž³þÕš4&ÇfÉGx):¯D.q X^ˆŸÂ² j_[%ÞsÏWà²ËŸV8Äú¾naavöYçÂmð™ hE¸‚¥ Ø&#dâ©!?*µ”Ú˜TÔ�¯‹>®�Îæ2lÕÇv ™êëÇaÉÕæ‚Z· ³†4'uý½À¡‡Å�ñÄ‘¶ó<.㟵:«ídsS‹c W–ÜúœÏÅF7ÿÆ%Ë•ú¡l�Ž­˜ß„y2üõóa¾Íyc—–þ0´@Âc–ÉZc £X�C£ ÝjMÓR¦œ#Ë¿¾ïØ)C(>›NÃ_£L­ŸÖÊh®A+÷` ›„¹f�[×ZÄøòG³nà ÿò �.ö÷÷àÓ·ÞB&XO?œ°þã‰â nP¬œ;§î ãÚЩ8�SçÛAІ“÷púΗ\tQ¨ç‹w~)Ô�ßÑòBàÑ r.÷=ù©¬ë>ôA@{ý`ýÇGöø ¯ ø¨À±àtVÞÿÀ©{*}éÎ/%”ºÜ‚ˆùËtƒá¯]®Ã_Ž·¨aXW†¿ÉÀnýt žò¾žyåsCDÞ+.}&\>(šñï™ÃïóY金|úÿô¾g›YJx]Ö³#Ãà/ˆÇñmWÛ³Îþö(/étÃ'>¬lÑz©whÕÖEÑÝl�xΠ¤ÙÖ€hý§:‡–dýGŽýë\1� c…Ê:´Æ»ñS#ß™[Gsl>´û®w¾þÿþ€ÿ×ÿòbÍ�<ò�ÀZÑg�g¿Çá¿a.>òè#ƒÒI,']°ÊAd}vô@)n©ÑhðBe}’¬0êµ ó–[>3,MMø“a^­Z¸á†ÂwTØ¡rº…>øŒ4FÅ�³<­·¾…ÜÔ¿Xˆß[nù4ÜüÙOÃ?<ô0´½VBÈšŽ�qFÔḺn½Ó–é”BÑ™CU1Aé©Û�˜öüî®/eÂ)‚åúqÀ¹sÑ—³ÌçNjyŒTüôXüÖ[?�êSp„çœ&Ã\ž cÝ üû_~û·ÅçH(›8ô]©” –¿çî»Âüm1Fêåù&ëÄÐÓvàvMâNÛ‚*ÞžÀ¿�¨Ÿ¬ÓC_›|‹–(Þg.Ã&Q#¦Ù°~O£B;s‹9m^{e±ÈâmL;l‹F`‰ÕËPü[ ¼qÙºHNŽç5Ò¸¡sfŒ%ðRÕþ#Ïâ �>ZÿaBKMüËYøç™Õ6R68qfoƒÿ¢È2ˆ!«Dd­‘^òýƒ%_Ú7‚ƒ ýåËóÎÐîŽ#‹ø‡Ñ­qÿ€H+á-Ë�”zX’Xƒhš o†úðïø06'.øþ[oÊNÈO,ªïÄy½V0ˆw!› ÎTòí…•Æ?´àšÒ¼Gø‘Ö¦S‹_åÒ+Óï¡ÿÌ£Ã\8ÚEÏ´0Öeä­ý0ðO¶ha¬¬8ã†á>:ÐùÑYyÒl?§ƒìˆKïa©�·ææ†#Íb_Ñòo®­$øo9<_õvïWc]8>ø×sÿö‡µgoøÛ:²ŸE�ƾ¡¡c‡<„eµ÷H +´¬hMñ™C��“Ç9òGþ/jjÒþnÀÝV¤G“µ ÖG-[ç*b%þéÂ%0�çØAÇØ ¾Ç­2»¡å_°þ½Fï¬òOêD„b%è ÊsÏo\)Z­ÿvÛ�Z€÷¶ZÿIõDZ|£3™Ã\ŸÑî”W*Z˜£¿K±˜D„ã¹èr±‘Û8iŒ$¡Êÿ°ÿMoÛvÌ÷g|ø R/öehEØÙ o·?Up¹êg¹ëdëWçÈgåFm#§»>ü!é´ù²ü£??С:0ô™fŒŒl%姄ΰ2ÈPÌ=5–,¾ä"²*�­ú:�n†òç¾|.‹@®ìÊÞ�4`¡ójº|e ¬Ïvv&Úä\II.Âæ«0º¸ŠXë²#ƒDê^Óµ—§îNãx*Ø5üN-2 †Ýé‹Gz<ÄâäJØööT v2®Ñ¹¹†Ë'äh²3íêc>%0¿UÇœsÛ©Ö1Æ= ýYù,k?MNŠ+záŽ:ù’.ÒØ'(F4úwÒ@¹¨'ß’òbY(æŽÏÚÎiP-*jžo�ny…º¯"©x½œ€²üÙËœ'é…]~oTU§Ïæ¤5góˇÏë¶ÔhàmÞÛïy_„€"=ÃÉ%¯¾Dú€‚_'‚¦q _C q˳T)FÝýÊWÿnP¶}uøû;¸ù󟃿¸î:øO¿ù›Ã»yžpÖY!ÒojÛ§ùešH>X„sÏúÖð- ?òéOÅ61"íÕï¿.pm¬éáÚ÷¿+F ~Þó^#2—>yO‚>]m}ï{ß ï¾úOàÏþè· N–ƒ’•ƒ±OÊ:1õÕÖ„ -ôÄ'ß_üùʵ›chù÷Ç ÂC^ýš`ù‡åS'Íyä _DA]ðúòÕWÿq¼"}0Àÿ¾÷¾+*shŸ"“BòÆO~n»åæøq}ÍûÞày×_P�ΖõudÑU�Ó’ŸÉ­qoÃ9EFžä@µ<EõME¾Ì¡6òêÉðêíµ™ò‡‰eZ¼Óâ—¬ÿºOÿl˜œååz«P/ãÉ[8|å½ùd‹¸bpâ¸f" ³¢Ÿ…1“ÕÕSµÍˆâ•¼¬ö×ÕûïF¾­»ìYŽÕ¦Ïhê¤÷YsfþçÓ#Ôé•«�[+ÏB�ZÉž« Æú+bGL½FÑ�-™ ³: :ð¥œZþIîäÚsª3fŠt#r8¦ÑÍç°†£¼ìܰuÚN¹¼)��y+#Vا©3ò2_oËà,›—5´×žM ˆþãÀn¶;»÷\‘#dÇ>Í<[³¸Mk qC¾¬|;±=âïŽã5��uZ×ï†öÜÌziðë Tû 6÷>Y�x ïƒ u±‡”=JírT*a­œmŽ}oøi†—å.Ô�~�Âå¸]²fDŸX¦Ag8ˆÚ„ÁæÛŽ'+9±Ò >ÞPéÔq¿Ž¡¶þÇð¾=•"²õÇ#F¾#ï†÷-ùøiÚ©%´v’ƈ§-˜8æjO�/¼~—nKŽ �í_ ßqhåä±õ§ð‰ù#äûN¢÷R�A™ALrÛ3g6Árð´œv—¢ä6 Ÿs¬O£*&û§ø²q3ž(K=Zü™ê%«GNˆBÃìó£ã«ÍDÁ™Ró8ûJ<ò8‘Èn£ye8 B¨D»[R¸+×r´ån¡úéCtë ´SVbAØôn,ݼ”}kIw+F›ùŒÛ'—~Æ>NÖÖrÆï¨ùà#ÊÛIÎäùzþTYâ3ñ=¡%5iGÏ5> 8|Ë›õ^Vj>.áû~NÑu›å ¢}§˜­+�ñ¸µ¢? †ì;’´BÀPÞ[Ž,>ø¦ÜÛùjvy"qݪ°l ØOØ ××O©]¿Oøv;luÝh ÄuáÐ_v ÈQØ€OÅqš"+µ°î%OÂ9ç—ß³l5a¼ôŽÇoo7V†ŸÃŠºžé<ãÇÙ|ˆ§r-­É:Ñ3Â{w,tÐ èêAÙ§–„Ô.Ð0<ù‰ßoyýëA¯ÒͼƒfÚ§E¸'ßJ�ŒëfÞ¼øYφ›>÷ùàÇé]×_ ×ÞðÑx½?ŸqÑÅðù/ß x8ÖŽž}ÑœqÚiðóoü± ìC%¡üaÂkÈoxí÷Ã/ýæo¤þêÅáëÙcC–3>‹Zí;‰:OôzÉEO‰¾ÿBð�3þ˜]~ôØ¢¯[X}׵צ2.¿âJMmQa»ž¢Yl }¿g§ŠZôH)¹K‘ƒîŽ„þ`y‰o6<7¢ÒDD|³ƒÖ2ᕦ¹‡M”ˆoN8úD”. Ϧ'HÅ*°gñBm7M�%Í3"~%÷­–ÈoªwH†>±Ãô%>¼3«ºŽ÷ ÍŠ��E¶™�ñ*NŒ¿W¸äß=Ó³&ƒ˜¯ƒ.ms¹{xko�pLŠÙ>eØøÜ¥¥¶±t¸?¡|‹å„éƒî µ$öiÕ±€ÀûÀ©ø(e—S¾¼´7eßÐ<Ñ×òžåA-7!ž¦-Õ¿îÈŠu©|w PÛ¹�eð÷cìðÌ5ãü€Æ±ãKgì7ª¹r³·h�SkGbNð»ÈÖåDÉÉ÷|dY5îªÇ Šü·Y‘¼Íç³|ÿœÓÈlq+W›Ð}‘¿XÖeõ�´c´¡ª>fQ[ž—‹íŒ'wR+f¥*}Qö0$ 0NÙTý$ÿ)œ+%�µzó9_9Uu f±0#TxӶ˾§š¹-üslÖíëå|„D·/¾LRìm'}Qã�ž2Pzá•ë9ùôIPÒ,)¿lŠföN×Sf¼é¾¥S j¬°ÆËh§ \=/Õø€éÓVâ5Â!›Û>-êÉ‚ÐAíÄIúQ[ é�v–ë³w•Úrú޹…ÄA-qŽ¥|¾Ç¾@úŒõ× óe[c| `ž��»Ã¦X—Wu«�ήÓa¼Nª¯ æø©qìïK¥‘àï;¿þû7üü÷¯C¸Â›e)J?¢@´†>ÿ~þÇ~ Î<�|©aPT䡯º·þë=|ž Õ.9eÿç_øøŸ~ê§àGåþáïŸã›¥Ð¼(§—1ž-¶Îâhø!Á žýŒg˜ùZ#ÇQ”ºÃ2ß"Ú8÷ì³áí?þã᪮$TüéHÈxí÷í?þðÂç<"Çêë?L—\tq œ‚}Û]ÈQ…u9�½Þ›ÃW²i.¼Õ—ÙðêßüÀ˹ÚKü}êý�?ûsÑGâ�üÏù0>ßÿêï�W¼ô¥`ø@œÿ¶Æ|Z½àyÏ0‚Bî¾þk²üù_x\qÅe‘&Dù‡¿_~ÕËàgÞü“Êâ’Ê!ŽñyÑùŒA9öÆù1ã_0ùù…f"|}ñÎ/Æ'<é‚­%°_çsŸQ¹Ÿ_mÒ %Û¿zݘuB«¶ŸùÉŸ&Úmß«_„;*j+Z‹½ìª—ÃO¾õ§�,RéÔ�=ÿöGßê =¹¢{ùeÏ„·¾ù§“¥ÛP•†?ôƒÿÆäÇ?ÄÃÏ¿ý´>³5Ëa�6y+ÂæÅ†—ØÖ[ßú³pùåÏŒ]z„•ˆ�—ð¿å'~&õÙÕ—çFÖáìFþÁ|}ì£øüC¼àµk|wÕ $Œ}L€í™ßÊÜc:P¨ýâ/þÇáóÉá7¶óðÃßßÏ>û ð:loPÚÅð@Ε#+óÕÑUå7¿åípÙeWšfW¯”ƒ—]~åHÏ)Êñ�¿ùíp)—%X ŸXþE/y%¼ñ'~Ît¥&êKz"ÏŽ§$§ê=šçÊ“(á“ÖkdZc¤eÛÇœ‘çIËQü-ûLpž*ËFüÌ•Oyócõå²èɈUáS0˜}ˆ÷¥˜çë?l>WmMög£¹ ùFÅã( ûL4<„É ‰ÏÝø3çê°äxÃù¨HäA/iôØ+öö µ•!§‹Ê2ùôÅï{_º…ÞÿÓš€š*Ï,AÍBF[”^•2}wd¼¨ºó¤•ZX?û½hwÉÒ¤så�-–šY¨õk%SRsÀQwšz{á(Ê¥¨Äûä7Ëc{sššTâ6Í Ïä´Z]àι�!‚,Èܼ#§®T0Öïvè¬Ôï-¨¾5ESŒŒ›Â]ކü(oÔflKíÑS©¾æ±ÐNÿ8Áb‚£@zÆà[¦6ü5;$œôâvmB–6Íüî>E¡‹þWËê'Š F�̦ë»%‘‹–ÜO)Š1†'Ò¾P|V»c ¼oõ4%?£“á#Iê7BN+6:…7ú�Á…ø•ê}‰÷€¿é”ú²ZñbÃåÅ µÄ¾:ÆGKѳґ+Ç%ÚB7¡ÜŒàôëÔœ€Ré$ÔP•8oÙPN,nÇ×çƒ}”h¥÷l9êºzÛLgˆ÷Pf5‰ÂÊö$ѹù¨WæZ£ü‘âãÍ·?·+K>øÂ‡Da=áøG�Ç~M¸&–�ü¾ç¨Í.E;5xÚð|ötdütÜPØ_Ër5¬¬òŽýÔùY:cèXŠ¥ÃšßóÕ.æ ý‰†Ù ×Ùf4Õ‹éƒ I�ãèºþ ƒˆ-ÅBP ×èUUÙ÷D¯MÃëIÇêy9ê—| _»!:ðláž7IÜ„—“ô&-Î0Qïí/á¾ûÿ!(öÎ<�•!š‡+|ã!²öÛÝ]°ßAËëñºî/þÒÿ¾¿øÙφ׽â•4mIRÿø¨ÎO$úu•ñ+pS�™7‚;%_Ì ó;äv McÏtê%×WšWÈ?PÙõõûî×t‘NÐb¯'‹@æ ±]1!“_¢c§x•‰ùT¦føž=õÙœšòÉí¦c\ûÊæÅEËÅbiæzÑ»Œ( Š«ËÜ:âã�¯Ý¾Ÿù/N ´ÞðÐŒ¸•O)w‚&¥¸|»É ,»~÷�þ¯ðüû¾ï{ƒB� áqÌ;SŸ_St=ôz߃÷Ãþ‰ØÙYÀ¹çž£úä‚E6Hg©üýÿðµÿ§} àŽÑÂ{:ñ÷½ 5scájkL›˲9S´(g§ ¬çÄæÇéA?ëá3·|Þyõ;Âïÿ‹ÿ�àu®½bÂk­cÁ2Þñ”‰¨|ú÷¿øïɧÐðü�¿§«ìg;3(/#ý¦àU¸Íz I™/'ý“iàÛÛ;Š´N\,v`,a9¼ÆŒQAÏ8ƒòºô)ƒ5¤ ²AÐbu”WÃÁa•@ Ë£b2(é²Nã×vBL«ë¬üWÃKÞ~|áðÚìñ€—vè/*ÇN=ãÌ8}‹3zHA&usêM[ÒÎFðÞz#˜â5Ýî¿/Ð?öí”3Î0�ˆ%ÕœçæÊDçMkÔ†-"6{{¡>ÄÕ1©Ë£:>Ìž83¿c5@c„e±>컹ò¬òbÑuK3 ñ”VÛ„÷ ó…I´TcX9º$Fç ð\Ô›M¥}‡r3ÆY—Ñ8çb™ŽÅ–`ɇϗl²²˜%Kô¼_†Ïs ^<ɶi+Î3Sû/]ëšÇc*ÑU¥|é¾Óг*YÜðGCÞa?~SÛ§); âV¶' ô,î¡“ûE¢ñ +Ù9�›“)Z¿i XäŽAÃQ »†:“bÉØ&dló³ÙØ �”5�ì�éy�Dÿ‘�Þ˜.&3ki�²�f;_.Ø*µ¼MÉ Àcv ~_J´d±øse!™gšÏ„ÝòÙ'œ�ùdÕÊTìâ‡nMøìØiåtÅz±ìä�™NjuÛæ7[ìm–[üoâ~?¡™½> cšI~1“ÓŒ.BÁ¾Ü"°ƒÅ$f“(¶½ˆýgš/óûuOô;1rÄ1ò,o9oWÿ–Ø4þ¤û˜ð± ùlôsŸ,17|L÷ád‰`lŒL=YÚð žIvƒGn”îìS­ûÓ’êµÑ±e ?· æƒSÙzÉ» _deuEpÓÆ·ƒŠÜ›êZ2½ŠY6,�–Ù2LB3Úò¨H>õJ‚¬B£ò×6µcMTU÷,äPÌù¦ÄžF„!ÐOôÍI.Ý6¿Wmƹ öXŽ„Z_“¦F©-'ÑLz.èÜ×úc3�‹8�E'¡Ù™Å?_P¤Ýܸ[¬þrTÊúGWuK¸½ôÍ[kCû‰Yp7ßCòí"Ýçˆ�È4 ¾T"OQšž˜w©Sˆ¯)»ê|‘y”ü¦zËS~ÛVª ùhV•r<2>¤\pæÓÒŠp =jŠõ˜›9bJß#­æÝ©LûÈÅq45ÜêÓÉ3ÆâEN{tæ>.oVÉìS~:��Zgrúа©ºäû¡4+°qŸ˜c}•®×W@é›ê|Øa¸z38jµŠ<ÕÙ|£¼¨Êžc9…ÿÆ–¥Ú-øâªÑj/DŽði|ÙòW_÷þ••.ÿÏŸú)¶ªJy>rSò'ˆþût;æ{µÿ¢�LVY! /‹ÖzJ}qŸ)(Ï%>«¥?T„]È}E±ë�‚ÚCa�RkоžWa^©ðœâ{IV7¾ÌW©"d܉J¥4ŸãtƇD«�ääu:»þ寇·ß‘‚p<íâ§Ú—Y)Í2Î=ëRØüéqÀO+ žs.ù �<¼‹µ¼ÏàÝ&7Ô“R òü/=9"r v×lãœsÎÑKNd1Ûà¨ðŠk¨§w;cdj“_2‡ü(oAøz¾ó¨çI^¿ÔŒ[¦ Õé놷¿ƒâÏ«¡Ìð"c¡£;ËW´Â«Õ›5ÁËŽËdÚ Ÿ …=Ô,Q±‰W”[Þ0u^µåŠ/`¡qÕ¦ŠfT¿C{ç_(ûwÈ%¹L…­UÌ ,æ;ѯŸn4Ž#âÈgS…»#°– ù›ß'Mö¶Vd9ñ‹ïeüXþÔL€�Îîžðc+ÿûQè5üÌÙñ÷Ï`)–Ï~[=!çQ3�ù•=ñª Î§•BÎÕýrªfµ¤:ý"ƒÄt_�í„Wû´ <(§^¬»vë+/l!°uilÚ®TXÙj˜ºýxÑâ…´)?Ì4U•¾çÇè4å“¢BGR·îwŸÜ6�8}ͺ“œý犟\u`ê3M‹ ¿J‹R¯Êi�|dú‰IG\�ØUYö™ö½µ± ‡�ßAÑ›ì÷óõ?Ö[#²“i4Ë¿»‘b'[ÊÃHÙ±Œ†,T£ú ?q>�Ïgô Çg,ÕÞO¼X’MóÜÜÊê’ÒO-¬,CË?#,Ù[ê�EJIÇÊ~I–/q,§d1ѯìRî0(\ê?ã’‰úµ@Ÿ4¸}²Pƒù*ø/‘©yF&”¸g7> ñ“£Ïæ8·CG%bIÕà‘ÒçÑÕr‚-T&ËÐLß§…¹?•ð΂~|–Ž¥ƒpæ ͇$,cßÂóÙ‚ð!’b=²™ :ÕÌpm½ë…ëI“Há„}ˆ9ŒŽš”’$ô@þºÎ‰4q!–v�(aYÒd‹¢È°\šGš/ǹäÖ Ò3æÛ°¥#Ò¾¬ÈÔ +€œn<Üo4Üq6ñ˜òNÙ;¿e%åÊzze‘~�¡]í2ÞÙ‡'Zäzô1Ö(îì)l¦®w*xêÌ´oØÇi0˜ÎWü)>JÖÙÉ1[þuÏP®õ'ÂïMˆ >ÌÇukóóoá�÷—èÇ'Â0xyž�¿~ÃëƒIM{ÐÒùsrÖ©ñúá|BMs‚3ˆ©A«2†…i‡"s÷æN„•_|u¸T6¼>ÐiËDˆßC”pÌ;aúeÀ_üœgÃþæËp°¿„ÿøË¿—\ôß…kÉx…øöA1¸ÇWd_tÅ à’óž1ÐË�Ki?„‘œi>5ìÓ®¢ÿÂ�þ­VñäÀ®K û’ì–„Gß}6nQ±…e[²˜'¸±´®43¶,gçF. &>KŧcϾº0Ú7eXé†"~öíÕïðz²é@KµbyàÝãŠëá�}KHq`�ÚýÞ†¦ÿœúè�+Y þÝœêmWlAZ2¦¥ß°œâu^ŸÚ"zVk™Ú8"-~ùÞ»áö;ï„ûüoÁÿ¦—_õR8óèi!”«Ï5 Âw39Ì59ÄDdMXP~`>3åùÄt-xh:YGì,›¬É¢~¥M�.Øçj-6íJ×8¶X –¸iÎ7+ÂãrtÀ>:Ù‡ úÈtâ§Q )Ô¶báé²�M�µ{ŒŠIøÜmÈ"{4ÿºÒXˆ®ûØôÞˆà>#¾&7¼Âóx­øfÀ®uÍ–�3¶ìwëið'ص�BL ŠØ½¯4‰1^þžoŽðñ†->ÚVëõ„Ïèk‹SÀ›ÐVýP9ÌIŠQþ–w�ot̸O€|Àn YÚ¶ÐbnÎÈ'RÍ„MW„žzOq-~‚6_�á3âjízH±E>ˆÞ\ˆ Ir Ø÷ÜZit´ž}î±ìÒˆ…iå”ZUãÖ¤O|EdG= “‰hüs~LûŠƒUº`>é!÷ p(µG äÍv©ƒ« ¨º5ÿ¢rÁ2Ë�“A¶üKygìlµ"¼P@Q|¥¹Ô;êYžkD^s¥I_ ›ž Ÿ�Ÿ÷чلÅÏõ˜A÷wÎrÓûzï˜gL˜>Ùf‹P?'œo=M0…|qÜÙÄ™vt»QÞ^c}¸‰7hæì1ííð^fÓØõdâeéÙFˆo£¼ QkSÏ>ËØÂq97ä|}"þZ†ŽM#ýM‡ñÕÊ2i-ÿ eƒú¾Çû–Ù ’Û)ñ…Ž´¾ß65T%Ë?…dF=µ'ìQäqÆïÚñÃ>þ»<ÎÚÂÎAŒ,ßuT¹Ðaã„?R{¿áùÍô…>5ñ}—�·±üó†ÅÅ®à÷%óá™YÛˆo¸d<÷ÙR{JZÍÉömÂ|„/Bâ‰ÐÃJ|áñ8„ÕéG…‰Ç7 f<«Þ›zDѶdËùùF’˜ûp%ÿ–ÿ÷ƒ%¶òÔì¼ÙÆDœðöm9'>y„åÉncñvOøG—>™PnÕîˆÃ<þ_­-ua‰7o/Ä'é”ñÎ÷a¾ >upࢬæ ~é7ZþéèäkŽ1]…°åߺ¡úšÌÿ84úŠ}GÎ9<½aÿ€Œ£ŽðøM˜Õoz02”ø„”íâ³>®û�Ö-÷Šå߉Ñ×î4Í��_Ÿ/dR¶NæXƒZðµ 9@¦Êê ;[¿s•F]QM=_­¨Ûþ\s¯¼ rCsıä}þŒ¾VHþž° óe[>éäUýH„+ÿúîª%$äżÀÄÏm�oDhékÐc×|†! O„d£«é'õ0Z­™öÕÊTIÛ‡PÑg¶"E�}oÇ,�mt&YD)s¹â'§59sOõ§+=µöÓBͰ{þî“��à2öÎ[áZ×iñäÕ‡‹å¢?Ò€¶Ðý.0Êóß3œôÞöÉCÖMÏP¹¼ç¾øZ$Ó!g_h>à+õŒ–ue&_°Š/ §Óe!•Ï Æë<#Ékº/ùôI×¥ëÉË9ȾoƒÉ—uêzó¬®V>#¯2V`°3Ö™!óµq(Ç¢²¾ ¥ ú|×µ×Ã7y8Xê´»XÀ‹žýlxås^Y€O]ÐV¿Jgû`pìu_\BA�ýÔ;¤g¼”¯ @¯#E=c­8¬-žcrzàÃoW©ê4àŠÉb_«ª�áÁ™U’÷‡N! �¶žPÍ•¬Gælm>GþHOî¾÷^¸áS7‚©c4à—¿ø¥qm™À¶¶5@£m¯x‘FŸ¯Õ—Ö[C�•õ¿LÞü룩À(qêbã¿c-Ùz ºµ½,¯¨ÒÅNšF*÷##!¸óþ°Þ+ˆœÈ/þpظR§hMO�Ä®•Õ—Þ€üËné™9$ÐúdÑ©XŠ©KË5¦Ž’™¾$|àXÉõýT€šq&§”�ÕåÈÖHtjvøô®¾ÍðiMGR›w†ez¨‹& e£ÀÌÑ‘÷´´ì-sF%Ÿg*Rãç39Møb±þ¦Ú �Gâ�‰•8†$Ÿª'>ͳ˜ÆCÖ_ù�ÍuZ½G�Ô%+ Ì.»²¥òW*P‡BüðšuJ@mÚ1‰4hpI¿?KŒ`™Nl,î5�z¦ûB7‘RAÍcóå+öO‘P>Çk¢œþâkï Ä°¥“ôRó–‚ßÃáÀ(@`¤�q¼VQô1o¿ZyöØÌï|`Äõ»Ö¯ñ~Pc©_°²j]Òoþ)6ãr&ÄNÕêw�ßgkdË„³MåðÖ¶:å ë­Qm85Î+ÍQ_©Ê1ŠÙ\奿G>µ+ù‹ì ù_³5/ ºñýI’;qã�ÄÆò1âû=„;Gqõ�ék3Ü‚†¸%Ë¿ÿ�"7;’z‘�æ[¥|ó"É'wr'1*$ä:ŒŠµÊ6laËÛ¯Àº²âh¬sö˜ÙÂú9[’-�ZxgG6§R®_„’èJpÁïö•b–}¶Ì[HRByÆCÓ¥…ÄÀçŽ+R‡hʸ!ñÊ+®Â]±z¶l¦px²S)2[¤øÍÚ.ùbñ×óI (Ýä±�£YŸ GòuÍðL3x"È,„ê÷ÁGßð`G|ˆñXLزè0-Ý)îézöRÒ®¸„GôyáG¸Q~"kjÉÃ'S^,lŒ©[,&K›}oW!D¾¹Ä€<¿+`zîè·-4Y”Íe`r ®z"à»í(:õf�çIÇpìîEpÈ‘ª=©äÃü™’àó(ÿ^,Ó”‰¹ ®ñ [¸Y€6ëŽ"¶,rŠCŽîÈP�Ap6.�â™HV„óøŠT’ó¾ ç[“ÎØ“…´cø¬t2VÞÓÑfiû¬^©Ã`µ¨ÆOØw"ûä GC…âÇÝd7”sbaɾ9r§ëº¬n½ªûE}ÁgLùj¤�“¸ÍÇ0 }î�…�÷ä®]Ъë—+[CÇùØ¢2²D‹�&õñÏëM°|d~ePâ|ýÁcä`´Äk¿;;)0‰´Ù±…_ã×<.²Ro§ 'Ñ­›¦àŨɄ18ç™Â¾†š)á¡ç…ÒW×%;V#»d*¿ÑΜ†ÓØ¢‡fmªJ°m«Óv%|r�õ†}3õ¼î6l!¯«z[-²±‰®eËê¾·Šˆ|>VȪÚßñW†DÉ‚xøŸo.hf†0ßuÏ=ƒðž@7`ä‚óÏçª’Û »ÛÊÚãù"ø˜4dQÑut×ÈEÊU¦"¦†é¨g?Ñ—æJœY“±�i;Ž.Èpˆ…(·"Á†|­�MÖp'ËN2ÜM´ˆA1zä¡ðâ;žü¤€‡ [ðÄi#å­«D¸ÿ¾¯‡ˆ«;»Gµ_ L*ž\²ùôõ_éSëÉ‚¾ŸK´j¶hÒ–AŒ`ø{R™·Œß®g>c»+aƒb1Ò5$5¦šT&=4­Äb¼otJš•~ðÕèÎùR‘Ú¡‡ý”¢=·<ÿ7<ÝYÜ‹¾Ÿ:–óZ þ¼ßÎk²|l$Ò³˜Z€�È›–ú¢Ùfphy@ܹ,x]Ùïɲp6c˜7d™¾áó·Ž- [±¤`Ù@‚¬Åõ¨q%ŸPøw OÇõ¶ ø�L=DŸ}âj²aË‹~ÝTW6ù¾aŸ_ÍF»!P7¥6½--–Q<�;æužçy£dØÔXÂy´jùÐÈŸ–\ÿœƒ«÷l¡Öó„œd%‡r=:Oâ‰[\áÍÙBŒ¢‹}ßçPlYر%¯ôxÑRÁ5ãaÍMw$ÂöYX±Å]²ä¥ßzØu‰ä{�òŠ/DQ²C-ä»Ü¾àCįƒ–Ôzv²êXËå�å#ù´®¦|ý�4Œ×W¸\c„í74¢;ràÛ&šk¾1çœF”JòóqÆßQ¹xÓ§å,Сܼ‡‘µ�lˆ H¼HKƒ¸R¤åIñ>&÷a¼(ã¤eK:¶X6èzËÕG¦CB¿œ³¥×AfjzbÝ0½õjž¦¾E»]^{^åÇ7Pe³)ñaŒÚ‹¿—2UÕÉÞ„ÆõHg;1çuã µû¹pΣ% û�ÔÝrh‘ϺÜ?Ižç“›Y^2å/Ç—ÔÎtæb]˜mÃ7§ z~Àø¾-¢ózÍ>{{ô·»¢|'¦��S £—ìÛßmhæÌw¸á÷ ßÒë˜Ôx°~¾aZ�*¾€ŸÞþìï¼r5Zr2>Ñâ<¨sÄ2“/Îb¤w¬hÁŒkÎtqÐf&0<ÎÈ_}ä»`EK¦|°æ}v°T„Ô9�}ƲRý—l:MR+Þ,„æJTÕ¥¹j2?&ˆ³Ù×ËÔàÃ6ÀòJ¯ÙÞ�0½*îdú“µ_[@ã{W�%›¥'£(g6Øþˆ^ÑHáY¿›2¶òø°ôUèM]"'_Yq§¨oÉ·*…qÏßsH]¶!’†Lç|´¬2yE è2¿`α¤Û34ËPû<»O,£gßç^>Òi°ÓâsXŒxuRçÉ¢O,ýÜÈ|q s¤sHJ§áÇš›ÒW„ÀÛ å{H†j\²¹y_¥›Þ+zJ>ÄÈ¿c…©¥î”|ÀÒp  K�¦«å«¼¨2ÿM.£¹Œnç'•Ìî�ëR_SŸôŒ¬•[Hh pâQ©C§/Òv„¡( êô•gŒ6¢èW­¾CR¤kÝ®µ£5Íè>Œuߌ”ð ïÑ�|fýZpv®'ÂÎÚÅeêŽ×ü™é/Í)EëZ AjÈÞg0˜ Yf€ ÝÛßÂÆà¯¶“ËyÓ�_ÓðÀÖ$¨°-, ä�5÷;„P Ã’¶,-H•øõÂAáw!+ýtÞma~¦-0S(Ns=Oã (ñ¥ºQ°Ô“Mnû# æèpåìJÍ;Œì+Á)Íúì2”É^­%º`¿KË9‹u¹äÐÈÿþp8AmøÍ`Hʦ–V<9Å%Lª±q�>Eeú žõü1y�K¼ >í½Å?(EÇvÂ7]0 pÌóD1Öw¥Zç¼�tJ°ù´­ñª3!\컯¶h¡u¦Ž‚ÉZ¨EÁUàÁGÓo­K+ÝË”)±"ŒŠ(•‡^õmÐÕ8È\1c¥æb*î*3ݶ£ç¿å1j" Mƶ´�+— 5ŸÂ§üî’|lSÃfËÇ^sý¹ïE·m-ð©¬#Ÿ¾Ú6t�Ù�÷ÈrœmDê¯%_™‡®«/3-lÝšWåŸ\Ȫ#=lzEÃ-©&R�æ…²>!©¤DRåå¨ÊkëFþ½ ›æýº>õÞ�O³ýCÚÔ!튔÷ *C�Á“Óª/AØž\=�Ϧ¶üÐßÃ;Ÿòj E+~d^šíl§öÞ�7–yõ¢eÍð[¨ O¿ê¦A®K’�¸ §BEkˆÍ†d›4£«V}üs’ç£;'Gxc˜¡“TßÑåu7•Èn5±æ3@ój×XNÂ>§úY@6ëG™©Sý„œ:·1ë?UGÍ8ŽÂs é¸Ýã‹*.üŠÚmÄbjªðæ}Ñ‚•øÍ4 ñ�Æ&�¾%Š'S¬¸>Ö<A‚¢1†\N’£ÿ².õ3üdï zÞ¬çI8ÚBC~µ”c09Úr Ü·d)Ñ.øDwŸ¹à¦´tÓÊÌvJ=¼}êCߊ/=Î?]«ÅÏA!—09øž|v9—èEñ0nÚs°ëv//Ï06Z¸(QÒœrœàÜp?1º³BœXæô|4ÒH-½¹vC› ±0㕾w|�£Rª¶û ž3;?�lH"R˜n;²tâë�-Fƒ)6Ë'd [.%JÈ(–o6:¯Æ™™¿ �·ìóÏOØ·aÓY^UXæÉå�q÷Äéƒ>ùç¯"™É{lû�Ï»hê�òº\TÉÛOÏú%[vÍ×%ˆ˜¦lr½n‹²©Ï¼n¸˜n¿|$›GÕZóÑç”�»1=ù<~§R9Ͼç|e(黳 ¥Ô?›Ó³õRõIñY9D˜Sÿ‡‹ôìã£!ç*<�Óøú%­ÜŽO:£€3!‘°§´\¤%1Ãw™e9h:>耀ÇDóªãÕqTõ‰åBgY‰×;–XMb=ûŒ¾-%ûÙ|4³�mÒWš)Gï�\ ch�ç{· qi{ŠŠÝte½ezk¢3.Ó ˜¦Äê+Q„c�ó©\.(õ3Z'ñ ËŸ½#KktÂ# “XÃü•�G9^_ƒE7¶ïØM[¸KÙ7ž*Ht­ð7¢ûiO–Tׂ(fjø4)C½ŽF®1ÃØ³oŸ&ZÆÖšq1ÈWͲ©�˶²Å­ðÁÔ„¾6_ï�ÔµžùBÓ¨ó ¹Ê ·»Ò­|9ånæ´nlÖlQÑÛyÛ²üÑ2ŸX­:8¼e{œœ$|V—³8À>/ƒ¼…¾ÚØ’*s’èY^r± <çfœ…-8¥4“ÌÓmÙÇQ§|‡Êk�} )mOŒâÓj,yзeoó1Ú7>�2‚�ÿ¨þymQ%\•”) [|÷]£:0Ì;–“–̇ƒEI˜ê>ÑZZ¢oBg]ñQ˜&*ê/åc¬wú¹¢IŸ­OŒ§öÅ}°hC¿&¬<]÷ºã©ÆùŠö=Kñ9Å8؈•Ù’Û¥ ¦j�Œ¿HyEÑ™=ì0?ì„ãƒ% |ËíÉp‰ä‚çËÁš&m°4Âü;4ˆâ»-à(êqØo� Ä¡]ÒÀN"DÓœ�¸­˜ñÅ Çd�Ö-‡pˆDû-rûÑÂJ=X^JpÒwÏùly¿l{S6w}$ïÄER#°M…/ÕxBh׺ YÔ�©®“Xj ~¥/â"¹í2ìp?÷=ñמxï×ZÙ?²x½áú§ëÃ32,°Ë`Øaßnkæ+™ÝkÜ&jñ ᛳ/·ƒ…7è²”;ž–3Zg+²”k9Úw'p™Ï4‘#œ#}ú~ëÑJù¬­û5¤{0­ô‰Ù=[r9¤gÊ,|±ñ‰iI€>儾 ¿r³ÃñÍB¿¤ÚÌ­Oņ -öø1î¦ áq'r©ñPñ9¹¹Ð)“¯´©‰eÃ’“µ¸>Ø2¦ªìœ]—‹ËêNÍ�HßÃçñ)�㑎å!¦cϦùlð+8‰~êùçDÞÊú§À4|„qq¢£ùvæ©D�ûªœ^ÿÁΩVnht–ïÊ|ŸITà9˜d-‰]bô&å­%‰+}׿õg^¿¦JoësÒ–5+œ*îÊúÆRNY‡Á%æ¼^FwÜàzU¼FŽÎöÓô×Ûv*(Š/âÊ’ž¥£#ñKÆa<Ãd|fH�œ«B O‡>Àö³RÜÂæ²ïŠ¢�ióIÈ8dt •‘žÔ8ÕÚI^]St5hzu•™ Bº®('vΩ<,¼E›­$s•¾àÆ×Áò\&ZÃf´V)jž]”YÒ՝и¢ÉžhÔUò¹‘qp¦}5wrºÊé¶ŒiBÏ_ò«Q`²ò¦C-Ær®ÄáÝÉ€K�Õl¥¿g<ÉðÓ®¯;çU‘ÿ–Y!_z\eœ2~c@ØÆïjùs8b“q6©ïP*ÿòš#»ñ–o¹ C.¤2E\z¨Çší–<”�)»Ió,Íc0uú ª,ñûø™åÐü$§£"Y|¸¼ÆœTyãMÛjÊ>VÄGBÚBÔd….]¥1_kÝ�6)¤’È©bÂØí<“l œ‚¡èçýû_æ©%¯–EfY¥OW¯fl �C-<Ý›,ª©Ã“iÂÅz-jŒ-zÓ¸¶K|�ýûÍ&�Ë59øç$¯8•â]5Õß5‚!±­B¾Ð|ÁgóRÓ]–…¾û´1‚ÕÔR„ƒt;eÝñ¨Ë– ýéôGê¤SÏ@u)ªâ>cÓ±¬Ký‹Ÿ7Êw"dýÉR±´êåÿd?ªÊkKYùÀ�yî2ºOË¿¾±¥€öš8È;šè‘ë‹osä$>ës�¢Iï³åß=�Ïã ûQÜh¿ãiê{C É 6U�öJ9é%jJx¯R–)EþôÀˆ<¡½|¸mµØÙêS›Y§K T&^,2(ºÞF”'‘4½oKùuÊ­•óc\"YCº†wŒW^ãQìW¿5~dþ›J]YÞ©:j0ºr™ñÔ⻆ÕI‰Œ Ռ٠dÍš~j˜+¸Î—–@UüKº\ãH}ZÅ ùliË�?Ö"¡Ï³»²¸«Ur’|>çE†]iºÎ‹z0ê)Ëk@­ÿ%(^ým£ãb{z⧺šL•Û²E‹D©å»Ùͼ…òZ©ª�î}kÑíOÐYsÆ"í¤ŽÀªwú_/“Õ3{,ÑÑDÇG¤‰wÞU+¡ÂÚ옱…`æK"¨R|cX¥ç ûÒëOeßv'ö©\´`ÈÂKåµÈeìxÔÉ%,Õ´bB7¶Ù®ÂÈýŠ"¼°ñ«&¨Ì1 3Y(¢êšÐUã°.Y^íñ�ˆY–-`ð9ZHáÈI„âÓÍÃ|†wGãí]âÂØ°qð‰GÃ}ÏèðMgà�åud®|Obê¼­/Oì£0úþy ýèϹ3gÕþ†·|’ÜDaª¥SÛ®‹ÅH8B Uev†ëð‹£Ùb{‡&‡–Tla7¥#óf�¸}´â€�’èßž£oG˜F�U:o-r5liœ!k_ñ�|”‹zqµb>*Na²äÅ9ŒøÐêíIy (ܵoÖæµ“yÏìзé2€·ر׸Ëñ¨áŸfñ¤Üå5×ËÅÜöªQ‘¿ì«•œX!ÝÍÃÌjÚ5 óÌ7Üb‡°Å'’¾YY¤+ì¼ÉÍ9zs´ ¤Ô.©\7Ÿ¯“pzî°#\V¬°¯+˜f$ ý÷심ËžGÀQPcøN¶œ­´“q�TwøWœú0ÝðaÒ‘®Ð/×ðz-–ÀÑP¢ævD‡�Ì‹ ÛªR) á×]I[YÂW=&5 mùÄ dÊòT×n ¾ªéØqÛý𢷳)óõÒH‰ªŸýF¶ÂërEv3ÿéNÎn7zȈÏÏÖæÎÙSKã$6í†,åû›i¢³œ‘s9mšâj+ò˜ª+þ#›¨Tdž3L\iÉê- RMª»Î¢ZdÝ$‰¡b�5–ò±@z`ßz]o£üIv9è|°€p ”H>© 76ì£ô�ï˜Ìø‰œÂ|‰,n%Ê2ZúÒ €´.MÀg|9â^/�9 #ä!�Ä7açµÅkN Îà%ÀÉë@Ó‰/5Õ¾«·7š†þ4Kª-Z\ÎWé«$öıôÕXá•>»àjI´ú×ówÎ2cú\kú,y”Ãvž�AL‘Ú�¼DÃÙ,y~Škkñ�½QH E-=èk6{)Я]Ž2*Qq]†7דmŸìžvg´Ità®ûæ†2w�Ul…P/–Zl‹Ó7©Ÿ§âêlµ&¾8ß%³ZQÔÕCqLbбdþ´;'|ˆ¯Všhaè«Õ�Mï9oÖ�ÆÒ0͉oD§ Éuê½2è¨ðµÈò}Y^ãÙ³�æùfF/kÛcñ»å‹+3¶\]±¼Å†ñѢݳÏDьѧö)²ïB6û½é¯fEF¬ûn±"%/Z,bêI<¹˜±`ùæË� �{ǾæÖ¼0m¤ßÀXð�œÕ¤7x™1^ײÿfpû‘>Ëîz-¥™ë}s±)Kfq¥âËuÁÏ��ó–ÄY@.²äpúŽÖ¹)ã¸c>´Ç|t—åŠl:Ç´`=ÁREs¯¦Œm¢IìÇÑ9ûªºíët4aË¿nǾÜcËÉ#|#Å4©èF†s]¡¯�…ñj´"E$=È~‹Ð-¬%#�úò�“EÔUʸÔ=@%Õ·Upr#ìL«Wå™ú¨ ÃÛ¨®ÂÁì9Þ Ž�±6-§³0X) N.ÙòE‹.ûB«8QŸ�i$R”}…ÊsȬ3¥‹VB¸|Æ�¥š*}tFlK‚_Ÿh\ž«,±~§êŽ}ñU…^™\öÈ#Rué\Õ«‡Áî ܪöô4§©JM òç\Y| j¨}Q‡‚ÚI0)ã úªS4¾ÏÇÖe<â0¼ŒÌã-ý+f;éÏ_Kf^ð? nûœò™´ ù<¤¾©,[S^®DH/-|ñs®šb2~qÙ‹J�~Ûk—ýYÚ+ÈC󽛓’#ÝIè5ËiVa«/`¬ÔåÕ;ó5Žé¤š ¤6GÈ[�±·ùËï¶+õÅÒY[*5ú&G“pÀÈÚjÉ µü3/Á�kt¦„ÕC§AÔÖ(ãÜÓU¾iKåc_ôñ¸þAn"Iùä“‹e}…/ŒVu|^Y¬C‰R£73(.–µV6¾^t �zõw¦†Ãk9¬…y‚÷›ªÀëe€ä3ý'k€¯ÌÍ\ä*Ø­Z«A­õéÓ�£ÀYÖÏ�²/ú�{­Z*bØ–ê1ŸŽy|daê Œ‚Ïá‚rêžìø)ÙNŠykÞ°¦<ŸU•jŠ734 Ä:u½®øtfÝtêYj·¦¢ÔkAGM#•ö‰4+DÉŸµåºÈå+ñÙ:î²£6û}›ùæ* G,ò¥ò8Õx^‘R0Õ^KqÃ'8 Uf3˜§Ž}ò5}ÓOÖ¡9×MEò ©y„œ�õGwÁ, Y„xö-æDíÁ¥™P€¢Ìæñ&w¨gOaCÁ'ªæé&ë(/lf“¬à@ß|Øþþ‰þÞa � ¹V|×e>‘ÖlÉ8Í,i²Dñìû©Ù?…~=N„½äè¶³)Œj¹”Â¥w{¡\ã)Új°ñx‚V™I•Ívƒ¾µ0ÿb'åÃzvB½ý‚-ô<ûþ[3EJ4º1‹GYœ�:—3†~IRÍÜZHù–Â>¶›9ÝÔml?¨úáû.aïoÌ� �;G3ôù*t“ãU†S7KícZNC&7_Á¨âw«„ž�!‡’ŽïZ¨E–²z£#‚W|ë¬nó}Ãóð:Úw'f–Xûô”Ø~\{´Hè'Lë\²Í·¯dRÍ7q9¡që[Ò4%~&ü4«3Ù¿:S¥×¼?­òyÕÑ&ºe˜›¾Ú™!‰�úìéfŠo9íŒèwº"ˆDœY‹4²ƒþÐ ¿;tB÷raF,ÄWÏëpÇ’4o|°ÔÀ7ë‰msÅç³Öú�â ´gšo=‘VæwÛNxSÒ—üWuÀDePJ É*ãÆòØœ³ØÐ+‹¯ÈÖàÈ'ßC-[X›ËÌè«°'âx€Åò:´ã(ª0¦)[CƾÃôðh ËÑb…n8oôÅÄÍa4Y¼…1¡p¯<^,`Å™¸@o-'ÒtwRiE3w³C5L6Ì>õa«InKe>DK ó�}ðy5/pìz¶¨lœŽ:íaÅã·8Êõo.à›9±u —f >¾WÀib~Æìö˳å¯gËý”^?z—Â¥z½'°hˆÌ_.4È "¦"ö73\6é‘WO‡ÇË)KÆË’ÛZdLnMÒØz˜Èü²7:ŽÜBcÖÿ®§ï1Û¯•'‚˜³O:]gÂ[êGÏ–mnšúˆc´î©?3¹1#ù¡cKKAÑnË vD<�ô%ÖJ*JiÊük�ÉC‘·deä"ÁâóÏe}tó9ÛÓE³p!ô—çßrE´{¤í�¼hö³¾^¿þ”þOG|òå"¤ülYžè—«*¨˜¯ãm,µ<.¹+SR¢é®ø7ù† ¯7b±;Äa®#>�6>dÈGý=ਸ-_dªöÓ‘…hÈ×o›ñv—]ŸFƒÿu\¯¶pLg-cì÷«ëšjù“æÞ¶§ù�«§Ò¶ ÝoU0Ìz5áS\2ˆ/\r-,%P§¨KN¬lEFÔdâLýn‘c*; 1èÊå¹–ˆ‰Ë¢Y®Ò¥œB¤‡¹jR×Q{öÍ&?6”€ò•+ïë¸<Äïª^¨’ÚWÚ[¾Ö–<ÿ~¤n~£Úl˲ø!.Ý•vFf¹;™ £%Z é‹Wõóë¬O†’òþºÊ÷mdbÆ�i W¥çÃS­Ö'œ¸DGQ—]²¼p–t¸."‘„#ã×ÌÙNzó=Á-þãöY;�÷ �¿É£ædez� êÌK ‘váð•U½˜äêkÆÆvÛxñ#{^ã1y9?F .û¾C#j·Åp¨&}­± hÙ¼±Ù]žÙ–×ùœ®ÃÙì*ûÞåáp\˜z¼m[¿ve–œJ­W VU7j6Æ9 #IÑa´bøœú+pYíL=QŽ4çã/?ž» 4ÿ“’'+*kCœœ•ù–(”«šnM ¹Ø†µ,ʲA>š°M&¯WýÓ(Z�ÃØW¬Ëןo³4³O½Fy³`@¹AQÆïÔØk¥«X*ÖPw8�¿çàœlª¬6‘_Áèj\–·²?‹â¤²“Zé|œþ[IoÛÚ£šq`6„±h ¥Õ6F°ë2¶]ÉR{.}ñÎW xPZŠH3® 5Á‘ó©®8}r¶éÆ{˜Æ^Õ ]ªÅŸ¶î‹(å·ð9¼Zi&¡SeNŽ¯Ê â3ŽŸ*ð†wqi©okÔÊ?‹�œ!”™pP8Ô¼Xþxеò/á,µc©-ǵÅC iɧ$Xñ #ÆrT�ÿϬ¯Z“ëAúBÏ]|)¯¦A/tŸ˜Èbëä3°gÃfÞ;=Ÿ¥=ÈèÞ•ô\]>uÝ0N–•¶rŠñòµçn<£^ôöÙäScáröuѶ‡Rü÷ê{ÆoäSÿ¿•Š)¨RägòÃ�äsyeö¹? µªÈ¨’Š%Ë,c¾lÏÀ?–|™Ç•¯+L?ÍÐ�±Ê$4Q…e�ºŸ?È«ò ToŠï<Ñ„,ÉÝrvwâÆé·DƒÁ#ŒÐµ9 …À±Å”£Ï®ÈWœÝaQÕøÜmX�žRžÕŽ-Úå‰ðÙíž–zã3©;Õ�åšó– ÷ØBé[Ø¢k¯­a%�uœ£ô]¤| Kä›Ûk§¦1És>zh&Ôn/Q%WÔŸ†£öî"‚}:‰õ;¬Â‹Ÿ,J›ã#ÙŽ£I6�ïQ>¶ðñŽ£Â)‹ð䨧 ñ…§úUô5'Q‚WÜߌb݆,õüå�#…MÖÔ µcŸ|-ùä£è±žë‘q†øÝõKî; É}æãªœÛÅ+µXûªì��åh³:rR ´?Bå'��ÔíNB¿š%Óe :Ì'«­S9ßZ0ƒ-ø‘W,Ä#RùˆªA£r½T�Ê´B¬XŠ•8þðЧñè�ž°°¸Ž²ÏÈOÛ }éýþV8b÷¢Éˆ *£)ŸòÒ©Qò³`‘ÆÙUW‡;v^ÁôÞ{öèò(ÚTQæE›žæM#Ñ–õ TS~ÔvÛfÕ ^43öµ¶TQ†CßxüÅ"dBãÙt<¯»6ÕY[L¾Jî=Ô³&¾ØO÷-¼µ>é¢â£‘}6Š,‹a¶§Êgp ÿbŸ�®8Úäþ²o''Î7ØÒö+³ÎôI#}*r=M õÔ–êŠgÿÝŒrMÈwZ|^rÙØ>Z¶Qôæ>˜Ö€ã¥9äØÞ(&@¢Eù—S^ר¢;FÙ¬ ZB¿®±`�è» Ÿt+âgͬaö(ëW-Ѽ•¥¦û 8o§ ­ÉÊÀ³¯E×Ô-S¦ ±8¥ù,²óÌÿäãR0UF@Ïí”-âs� ó ´œ2£º¦ÖzöyÚ8»¾5èûç�X�(º�cÛI|{,ê«öåí« •¶lf¯òè«V~ ïi ~m:âÇ]Û*vè`Í7¦r4žM ÁKƒÑƒ«ƒ5YŠà7Ê./ …hÃCžŽ£|ú>³œ±„�ùt<_Zñ�7‘#q¶àäqi:ò)Hä)>·ÐB’ðÖÏjü%œê²aÝd¶Ž-Óå>F9å/}cÙÜ„- Å Bª†ØŽ'ûÊ[Ï3çI Á!Z¬‘xàìœÑC’…²$>íæ pÃQS'¼^¯Ù‚ÈDÍÅñáÊ‚emm‘eŸÙk b.ó!F\ÀöÂZ_÷ þØ;Æ_Ç–õ.Î{/㊭+}"¬BÃ>‘§ 9-_õìS‘û¸Ã¾´VMµ]OÙ¢³$“�ò…ß6ÜÏ WØp»V\?/çÄ·wx¬ˆÌwÉYºãñôL"U¬%€ ÏÏ.3(¨vǬcÙÛŒŽAÁOËUå@%1f£D¢Æ' ïq‰ë8³](€u\�⣲|õæ¢×¥¾Çµƒo¨AWÎ-ûn&d9Ù¬›rÍË�øü«»gjtôV5Ï3ꈃW"kGtä1j.A.vyŒVëLÿZGxïø¢HkÇ\ý ˜½]6�ñ<{\–íÜoÙ§e7¯Ð…·<0<Þa¾Éˆkº`¹Ì;ÙYÏûˆÓPŽûß{¡ÜctVÊ0ëˆFNð|Ø�UxØ>ê-势œÂ7–⣖£;¾ Óó¾¯ßØõO@Š©!8çÑËñ¾aúö)¯¯d8=ª\snüÝ.×ÿÏà ßܘ³:g¹Oí®9šïdNî/ö)Š-×Û›õÇ‘œ¾¢v?…»Ï!$<›°¹eSÝzÉ÷í�.˜ÂŒáYŠ…­žÿ˜�“¨ñš×;âûnÍü•£C‹�Ó¿_E ®‡×ÕàÃRÑïñ³Jˆ.æ½S–‰L¶-Ë#ØÃiYò¶Ì;1È#ˆÓÓYÓ'–KEœF)ÌŠ?Œu‘î{¥õ;âŒË¬=ÉEèÛ1¬?ÒoÈ�H•®Dø­¦D8V*ðÙªYI‚¡ü3«»úS¿˜¶ø™†]+ GªN°Wª©*\K¥¿2ê#“µhÈŽ4+žsÛ«‰x8$ßh=.}hZPùÝX»éGþ²’7-¬.—¼Í*§£2Þp–²«ŒSôb>)s<á”U¢:v ;Øþ2O¥8ÁQÈH¹«ÁJ§úàÇ•nÅ/§ ¿g’ôÕö‹™é3ß$±zÁÁá´§ý„J?<Ô˜UéÈ Ìºq3þНÔ‡Øw†:>5ÿcc'™ ~£ç"œÜ|”ÏÈ#à›O9_Ðý‰°Á!u»úw¡yóú0ù”ÏCloZ—�ã¬ùNÃX…V‰k×(7Å3 ¤Æ0ŠVÒLÏ»)óÎ�¥Ûø¡m/åÖó¶ŒA¹.ä–>Ÿ3ð†²~š¯©~Pk!¤q*$"õÛ[ ðv ¥Þ›A¯@’=àìÎtÃÛâšo� ßmkC2äó?¢•ÖŸœGJŸµ¨i±ÞzÊêk«—eY{c3ŽPüHOõ²ÿ\µ¾‘Œ§(¤jwjþëÊO¢®4i�¡WÞ,õê,ßå€�ï¾¹S–áñŠÚè'—*¬_OgåZß–QôŸ³g-ž'JÔ}w1W’³Ù<@Éöò?ÉŸÑ  ®�²–s(›Oš×óð�/µj¾”£¡š(æmV^ͱm)‚:KȪÎ(¤È#óÚºwæ¹ßJX®ÚŠ3oinþ½eÏ�­5Ü0ÁÃÕ½@Þ‚� É1ËX�aëxh99V­Ö/—³ó$/äåò& ÷=¾œF„Á‡U÷iþk0S®È×—wÙ—€rÛz ô£‹Zý‰^6å嘈9Z�¯Oÿj� ŸÌ+ÿ*óoÉ{?² ×ÈNó*(aÌÅ]EQLы׌R!_Ëõßù»­ü§ÒGÅ.²Ê ˜ž…Hž­Ë5Z˦ŸÇÙϸmçg…à ºý«¥Zwâ§™.P’\>N3mHÏGv•é %ýi<¹‘ç~¬MÐë-¯bŒ(mõl˧Ž7}’Öì#tIÞ_@äfcÔ—o¤·�¶·3•¢>:Žçc4N·³±uG¬°ÊÚ‰ï1Žò*Q§Ɖ¾DUÉ£eTçW|">©[Ðù Y_Y±�Šj3û±a˽ Y–¸)ùól1èŸÜ‰E`2QHõf8‹mk.cãøxH4/Q�Q† šá„•,ÂZ8•áÜ€™�ż¯ «ÒƒO 쟠‘Oð£eWS§�è ¤Éf½tU|Mv|âß‘o È¢ÿº9ßðì£.¯'â�9�ߣñqG–*sªOúçgÜö­äe£§£J3ÞC©†_ñ5g„\¤‹ùqªgs”Þ¯E!Ë×Nd�ˆÑ3}C·öG ƒýiÁ‰Œ€é�œô'Ø2d—OÌ[ö­Øq½B73žO› Œ­0I(’vì{Õ~ÖGý ¿þHÚìI4ä¢5ß‚e¶7±ðxôUˆ¸œùûPòÁ7�ãèƒÃçù¼ó»û–. =×ûiá3·Ü[Ð�vœ3ÍBå~•ñæ0Ñ–fjþ°åœç“E×É|�SþGižÄ(Z“•�Ëó‰'ùÂq$|*~¨2ó§–>J^Ö°Ó~:µ¥1Š,ÎN¨Ÿq•s:ÞY–4ËrœR¹ž}Þ¸ Ó‚8%áð\N¢­NÈ׳ó+'>N¦›0WšUG”ï8*óÀ¯±X·™—]ÎÓP_þ1úµønãu„Oj‰�yÂ+ö¹Só¤ûèWã}Ÿ’¥s¿Ü˜ç’zÆ[ã'MÎU÷Üâ»§e¾äcœ¹„\}m)Fß@ì[‹¢/ºqš�áèÓ=‘“Xâ²…FÃzž£4³Ï.Ǧ^ò¯È-ÕÃüÆ) ²áMªAKf9)Ë`èÉ÷�£�¦öZžgì3¯ºVê$Nôšd2F&jp`³¢þOfÖbnúéÉi ¾w-œ\²ÀulÉÔrtúΓ¯Ë2¾ÂK6EÛDçn�P˜‰ ’½9S$|çñ•ñÓ®Úœ©Ã™rýZ|³ ’ø´Ëá¢F mÐé]ÏQí[n¥çð‰N|07ìüŒ'^�žÄ"Cø‹—±äQ9sÄ7SÃëuðÁÄ€jë?”'i}÷g9Sqs–:±!KË�D�†i¨sÂ'ý-ÓwÇð5|Ï´ë%j.ÕφÆäÃÇ'qjÅ<>Ê`ŽA"¼·l1ß6d9ëÈ"}¯â0L7dÉ»\¼m'ÑÃsÆÝq�•§¢3AgDφ£‡Eù’ƒãÚñüŸ�ÅO-G)[Ãü} FÒ›Ëò²v²Ç´íMbyN¯h±�Y˜ ÃLê÷–´ÇR¯¨K§<:fQ—ÂoÈÇè�b5ʼAK6|ßù1DÕÐèâ…1¸Þ4üÉêø‚ÎŒ-ÏZvεž´ÌlK˜Z¸&3¢w¿È9‹”ÇõboMtºhiýðü’HÞÅõ:Z´ˆ�3f¿ä{3Í‹˜â�,Û®D±m²~äŠ&—-¡b€*ц…<ÉR8ŽSG…{ŽÂ ly$ã0ã«uS6lAV?Óáf½¬û­ÀÂ|ꊺê@gÜO1´Í\•’Å©§ ØÒz"ØfߦìôYÑû ût`Ø0ì ~-ªÕ8`ŽÙ„¾ ÏB£˜”ùÁõ´|E¢EO®4 Q’+äa’cºulÙ…IYN ëÝÆžbê³Lé"ñcºx.À¹ê\²©a‹U‘WÌzW°]ï^ñ>úTÝô¥¸èK”My,–”ž-ÁwX<Üãíyáø"cTüí2Ÿ]±³ÞÕ>µÛrºÎ•ª&ÿ‰/fLKöÁ»iè&ͤKDփ̽ݷ¸Ð)Q´9š2²Âž¬|1sÉê)G¡�”k¶÷8/ G˜ ›¬OùXh>ò±ee3¥C‰^ðÊíoö_§SEóUI‘zeO\ JHje+Š)¨b9_>¯Q®Viº±ÞAÉYHÕ4¦Î�-ò]•™„M¢ÄÑ62@<”ý‹Ïu&·}C¿ÏÚøeÖ ÷Õ�êFÎÙ<ÞCuÓçë'Ó6i×ûJsÛ¹T•üâsª?ÚÈ¡ñ8 8|[hÁUž«?§ë¬¤Ò§áDN\‰Ì¼6/áÈË‹¬ óùˆn©» VE2I[˜<%ˆõ³@hú=$Åk:ŒÐ‘6ëÜÏMo K YÚú£E'øÇOõŒÂªÊF_J¶ñg›ù¿—œç³:3ž¥a«~ú"»­ËC•ÿU³g�“§ X Sž_5U¶5‚8u¸b]¾ÈVR|Ž<Ë6^_kÜåýÍH�¥¿´U5ƒªÊVÆÇÙù­öØ5³W&†Õ¬ Åï¨iPgˆµù¢~;óFG�3XšŒVŒ`*Jµ»±ÊüöñaP¨úÌÚEM3H>¯ }в'g ¬¼>ù�}×£_”×|íeV¬öJ¯eq …êИýmQ_1£É™o#ë×¶‚9_Óë–ZÊÜ™A•„+Äå+�ëvå,æQö¹¥š¢V?E))V[NUj1X#ð– 㜼7_ÊzjÌôТ^Þ`¬;û^C±SKsm2¨±³ÖWŠy_ÿdžÑ2*0[—�›«–‰ë¬Ñ<«Í§Ãèâ°÷£«WÆ^*"_!äÏO®=_[¥ê,³2ÿÁ% ¹\ñgh}”Ê5³Øbºü&RΡ £CÆá/º¶'•~mãÍ F—Ì Y÷%ÎGÕOÓ”KÝÊÛ5k¨³ë‡K�l¥Amûš/êÈ“êŽÌûÚ¨ Â(¸qÞfM¤ΊGc"’Ïë»Æëï#sIñÈàÒâÊÖ9^±ýÚœ–¼'9ßdž¦ f_A¹¯Ã[,×:¯«ãؘÕXmxž³Øž|9µË<‡g±ëXœÈ¸Ôúç·À•¯ ¡ÏO‘kFy¸ÊŸ¯u¹ê)®95]ˆJÃ᪯ùžøä'½VØõkŠjÙÌwëõ²%žó ¨müÜY’ù£Çè]/'‡¾ŠUñMаÏ(?q†RúÇ©½æ”…DÂÜ4›*pœ-¼ŽÎ !�_’eI8±Å"�’ø `‹# ·5œÐ§hÆÍ){ô¼sPUVfíû š8G)úcumq ~''lqØð¢Ñ ž£·ÛŸù² >¾relP8ñ™ÔÑ3èñ‰ãv&fL-ødÂrQ5ÌÓbÆôðøCôl‘�G¨+áÂMçá³{üqÂßîN[ú‡Ïþ¢-¶PrÊG`„X® ?N°ïÁ#[|‹Å<�0ú5ÍV7ã°;qò˜#WѦg /7Þ½°I�š¹$”ðãvx ,}õk>�Ò_|’õ›‰ÁC!«qTh@¾<=û\CË\jÄ·¡XŒ’¥�Ÿ‘å™[rÔáuüõyý4,øŽ,šZ9ªP¼E�‘gËJ7�dß,r,àLÏ|ò쎰O¿Õ´>ÿ‹4²Úæ«’$ôUŠ�gG©\±#©” üŽ�~&ýV8ÈRxø¾KüǯRÝÌ’Bn±€�ÔûçØr.Xž`ó;lÙÌN/<´©ÞØw¤kŠî÷Ù‚±Í,øX)>Kz�ƒOè\§¤L [R@;ŽÓz âRW)δšdIÚŸ²¥ û‚ñìÓ®øÑ/óÍX%ÕïÙ‡GðIø.7ÅìÃOU¿1ísö!Òxñ…{‚—µ™]° «YÅ֜ޤd濦Õ]”-x��JŸŽ”]¬Ç$ÇüP·Dˆ¢z7tôÜ´Î<—«úÁ%)ò¹}jÇM´ä¢Öu9£3qÂä›ÌµäÇNμ³Á`„*j·ï]ä÷v=¶…äF@¸!€|~Î}\RÛ¾ 6­éΤ4\þ§Ä×ÚÍ$kOøgc70Ù�G Žb,&]ZVRÏÖ@Ñ0Á®x>¶Ñ “ùGßC.u#-GwËyß|Ý”L1Z±XW–ëPg5Åz¥+Û­ œzQ(JZ³æ?}4í“þJô¼Òç›Î|åá~¤;^øÓû¤�tƒt1uíxã{SoÃ|O¢¸F>"ò’Xw¾i™òæÃbaÖPßŬB� g�þé;Â]´”È…ŒZ×A Ã;aøÖq—âjì%.®Ab‡ =ììÒVJŒÅ—ò|=Q>!Œ–r‚¿ì¦O1ý3zkÙÉYçšTwÆ #~2ZΗ³ª¨12`µÇº¸øDß’ÒÁµ'ËÉi&GˆoÍ[¦O‘®%ó±Ý¦±8ÐK $š±ïÙ=^ç<ÖÙÍ�…':>`yQ|¶l*·\ÓAÌbÖ‚¾!">7Îb@j_óÉâl�Rלù×At²éRg°<ûŽ]MÓç–‹æì´Ì±O2¿lbk>o[‡ò¦p‡Ð‡ÀY›p-ËÕ½òÕE9é@ YV ²~:òå…i ´¯Îý~çÇv½¸ÈÌ/¦p½-[Ì;îWËðtbŠ«–Sƒ&=ϲdØ>[üAW_;fìFæß}Öçl‚¯ó€^Ž*«�¶j^(®SûÞ²÷,ÿJYÍ«‰ÿÐ'»Ð-P•ã g7“)Q¤öUòª9äæ_§°oÂp1T7Ti'ÿ“boŸæÿÎŽµx•‹RŽ-%½«Øö×Y’iX¤´ ó�•ødí³¼PÇdßóÄâ*Gu‡(§J >�|0ÃØÛ¶ÇM¡ŒÑ%crõÒÞ×ó¸šØ’>,�rPÔ¯Ÿy©Û�c)W|�¬šÙI~(ÛÏ�’ê5Á•?ÓœÉÔ•Õ¯©¶¶QÖõ壗ãPK)Er —Q°+³èç1âVÁý\ªo„LÿµêÚWúçÔ˜3ï�úógš;â¢í“Ù²ž‰¹‹Ëh?ú Òýp£� p¼ ëuõɨ/É\÷A=üë(:骜<àzÔH�‘g²)(߯z—“$‘9–Àv*;ói“;d|5¶ÌáHÇÞ>3y+eÇæÛØøê~;5ò¹ÿ|}þ�¥*-C6 9„¬}iS͵œ¿U�[ç(Œc?\D€|'ÑίçÈjŸñ‚±ðj°´Ÿ£L‘×<Ú)þ5šüøS@½b‡>Ô2ïÆëN°ÙŸNóþ‚_ ú3ò ïëuiúqµ×®àégÆTrú÷Š4M<Fz®:…ófi”òï‘5�Òþ7« P§oEh4ÿÓ¼]5ç+mdð˜Î6mÖ«Hb®,ž ƒs£M”½­#‡X¾9óÍ�Wë³ïЇ’‘½¦A­N=$_Òþ“Eh}íOJ?95óM$giS·¥?�^¬Õ›8g ñ@µ×á-Ño±”¬Ì³|éùStÍL’:»TãY,½…ˆèaìG=¹?¬Õ¡è:µmçbûz2$$Ôd•¼½±åÿdR>Ž'�ªs[íT£&-•…i)X&bÛ Wš†%=Öe —;€š{oPÔ¦1SαDóé`ÀH·šœ³j¾ìŸ×\B·žê,åíâFßôÉYqÍŽ“¹ç¨e…qþÛR­ökŒu:_gê… Ïò[(Ï€íFÞç)¡·Z³Ë'7ª"º&[Õ¾‡jÙìG­îˆ1—•‹k,dŒ8õGj®î ƒÝ�dÌË9û½†K7ò=O…8•”÷I­ ¦�³ãàFªûÌ›òÖ¼[`uÅFÚv¹+Vd¦Žƒrfä¤_ð©Œîªc•ʼ…A³«¼Kµº\F§FTíP°·Lº˜£ÍbÜŸšJ ž!lØ2©Ÿ“å‡c_&! æ™d½Ù_t jdzÏ)§}Nɤ+ ­Ìö‘ßž�U¸vY¾ÆŽ �£é†ËéE'=‡5; ¶U,¬Þ´ç=÷ÓMÇ* 2|"ì8º]°ÌÁj:1Ÿ2|‚Å'p>Ñs¼–‘*ÝáxFàGam²Xì�}ÊÑŠ†-â×QØü½éJjÓGÞÍØrlI–Š®a_‰~iá13©‚¥þqʳZP[»|v8g ÿ²‡“Jù ÉZKTÂZÔL�W Þf£åH`h=ùüëš`#ôˆÂ‘úÛÏfD“�‘Ó·`ÁaÉ'šÓž†eBôÜt ;NB÷ Bˆîˆ¯UtÇ´–%› å K 2Ô/¯àŒ\…£Y¡oÂPƒŠÆúÓNÄ—ŸPJ86×zñìÄÀ5:š¯§þã·î¿X&Æ(ÃìL‚}Ϲ œ+ïm�iã_æNkLý>[ï,b¿R6´@$:v±<Õ¥5íf»\E©vlq–­|ˆæfÅý¾äS¿k|˜-|LS=á…øŸ¤›4Š/ž`æ®7}o<�ÏFN¬ÛÜB¢?}Üi¢æK¹h¹˜Í²©–Aéìô\R-ÍÜ.w^7ƒ_IJ�}îÄÖyøÚñÙ%t¬Æ­@·:q—öø²Û�C?ß@”tDr_K_mÄwÉçiˆz:ÜF0bC­ñ ìWWõ›åQÖ;ŸUëø]'™�K°¾E=ûptk‹œ~C>I›™µüpl¹Ù¯(Úy7eßvë.ëO%9ò¡êñäãÊ;öá’Yhõ ùmú‘°‡æ'|”ïáð¶C½ì«³™ð�Á û²rû>äC‘ˆÿ¶b¹:a:e‹«F|×uâ;‹!©øî ÜT¢ÀòøR{QÄŸÞçSÚ©ÍkÚTû¬Ž ‡«Ý4¼®Ë8J.å³H7ª9_¨‡é|ãz—TVÌçxCI–K�^'4ˆÚ÷’j_’Dlû’WV“X’±%Šg Š ûÆÝˆ¯\øæS9eµ’Ñe9Ô¥›ñx/ûÖnX„]:ò£»f‹C‰MºŽ–}U•-²”%y`‹ì´h2È™D+#–w¹Xe€áúÍUÇ¢x bÈà@NÃX„/À‚£;®Á›MiÇ–Üí¦/`üè1k™ý²ËÖÈפVž¦À®[ƒ%eÀWëL½yr|sÈó�Œ\�׆s3• ”ՇјÍ1iùB©D™ÎùºÏŠê…5>BOÝlqì3œÓÍ¿[Ê>Ð2�¼ÈwMróDÓzBšÆ üê –Ù°�óTù� åŲ–G¨MüP°hž·ápÔbI)Çâ3O\GY>[ÿy²xOô8•zÝ<²a¿-`ÆÒ5®¶u:H.‰�CšsKŽŠ>ËÖÓ\ mØWk?mŠ64Î{GòF5>™í/ptbñq¸Þ¥ÏņæÅ²ïy~4†5T“ÏøŽYÇèû®§õÿœä~RY½=�®�ù™XÀ.E2p`øaž’û b0ä‘@PnMs™%ãYàh9îc,ÿ/x}œ­ˆ/­YMÓŒøúÔuégÒ'ô!‡¯;Öß4;´(w+—ð­ÊjñR¯\zöæ} óU¢ÎóüÃËŽ§Æ†£I£Otló”õsŸÄ¸àëk˜ñuÒèy t# ÿ'�¾FÓ5dp Ïöü¼uõ|µÊb3Š^'=U¶Ç7Afk^æ¶Ž9[<®z½f@Ľ\¬ëä‘ð͸îC”£‚† ±eþ%!5ö¹ü”ñ¿ÞØ^5©¶Ê§tX§ZóNcÞ§OÝK]§¯|J¯êñY9‘4FWf•/W€åßsXä}lêýÕõXüv˗Ø“gÕë˜5 ² *ýÿ©Ö ™[RÆÞóúê� `tjf¥©}ïãÚ«‡kl¤Çg~ªÃÎz(r&ÚåÝöýå¹a벊å)*\…'§.x5)%…p*fX�ÀeϳWsutËT̨U‚ w‚¹TÕ,8—œíK­ÿFVðu8“L™Üö¥X›|Z?¤H>ct�¾2nRÐé¾é>è|P¯Ã_ì;§ê“ߺ�ŽÇæ„æÉá3úŒawšZ)²LÀÄQ(}71ï-Ù4ˆ Õà÷ŠÍvŽ4à%q99q3ixÕŸJ¾]þêþ‘¢Øº‡“c߃¿6†ê\ôU”]’/ú³%i‰AR»ÊûÇÉòÑív'W�Ô±Ëðï­íLY³ÅÏTœX�šµjyb‹"×Ï &Å8>AñÑbËFÃŒcÇQy¡ÓÎ[ Âã[‰‚·)ûªÙ#<8ñ-™è¡ŠÝŒ#ô-ù®kúƒÈ•ƒà*QHû¶ìæKÔ©åîøãôóèQÛvV‡Xdx¶k„w¿ä¨�҉ιZCÕŠ£9J˜5Ç'v~Ñp£! Ûç5ìðÏ6Gl�ç›ÞÀ,– ä*@­f ÃÀ–8Ž¢ £E)á¯3L¼™pôÒá$1�@<!K¬àK Éa¡OÞ$rb‚' ‡U“‘H¾§Œm»Ï‹èŒò�%×›ó‹Ú²ëÙb‡}G¹0o†vgS¾ß!ºlØ'^²tmý"1`À$†Íã¾úBˆq?lA|ºa½í~ª3Äè·5Ÿ•Ž �£“sµêxn'=Ÿ¬õÓ%wƒ,öšŽøI?“°U⤅ùKÃó¥«X*#½¬Øbsz@Ånw2'¼n–Ô¶8‰ÑçD˜iÙB®[‡â=u5GÁvêµôHºÎóŒNÖ»ƒIx+¾¸¶”i§dÉг…šŸSôgwÀ>†?Æëc˜¥½Ëñ™µ—áéÙW—ós~¶‚Z –^ÍGW—Nš)!¦ãj_U]ñ¢†}Üô³š)·‡ãËïžœ÷ÅiÓtDo}£¢ÇyZ® Åä_ž-ÄÜdËÉ»ªO,Û6²¤š¬yœ;ò‰­7my>Ju½ —§…*ŸKkb®á(»`R Ó5YºLvÙ2wU³øFüqT<^çÚ`ÑŸxÍf˜¯ÁG)Žms»MCs³=#x×Ô¡9YÏëF#-d&]2â…^LZöùÇQý KŒ¼bd=Ò¼hg]ÁÇt1ÇüÛG… ŒKJ 'Sæ_«ž]]pFEIþì%(ðĶfÃÃ�éšøÄzÚVñ,¿Â¾ýFÖåiè£D{ö»ÔÎt³3où{?ÒÛ5G—^0Ý;ðÑòM|§Iâ^¯ÛYòú•Ïpì©Ï ‡iîØb¤á$=Gî%j¦˜ò52ý]ÜXP\΢¨všä´e¥K|]ŽÍ5Ý Ùáõ*ÈsÈÄtÚn(ç¦Ë!UA�•‚•w,- «Ëyƒ\ í!Í«¨+w)ŸHIM¡E�ùìJÚ Ï™Ž8ú²ˆSoÀƉÇ�-Z¼X¶µÎô1)Ö¼é£/¤MÆ·›Š)V°ÍŸjQÖ[¶D 97sEËx]îS—¨àž] ·À¯X3gše DËòôÚ'þ¤!XÐ|˜-Ó{‘ûçìóð±}’Ó%ú»SÈÂæÖâ˓Ūv"ö¥ô\øÑÓwÓ$¼$7�ÖÓ×ÊwîwÏ“×õÉ^÷‘cq³e�Khb•ά�ágÖ­“©«*Ž:Þ�·å뻌fT]š¾:öáܲïµè2UÍíH1®>§Cÿ§jÞ¨´f¹sÂQÄe»Ôñ0 'ÜàF,¨ÅWžlÓeÝŽlS­ß@–q³j{úÕU�é’�ÎSæ<¯Ù×ÿ’ë9‚6”×DZDœƒ³äÁu®�s਷,÷¶JORîp¿½ôÛá'ÑßDƒŒOj²ÔõDß‹tØÕÒ¿ó* àõ’©ƒæ#õ2Õ¤ä:Üð9Ÿw[ƵZ=ó76à‡%ÍÏ@€Ä_¡+xƒÛVUñ=ÕÅhh\6À΢ػ¦1ÍîcoÝÈœ­ Â©1óµ2µdæ¿O•;í"%Mï¸\êök󜫫‰ßIlLÖZÑ �4¨úAõ–Õl£†­Û$�êä-cinL6Éäƒò|zÛðÔàó9¿Q´–“T*Ç|6lO.ÊÉÞ�ä—¹îø½Kn�L=)»@–ÖÆ¢SÛF70´åýHŸœn=‡ÈEZЇ*jñ'te­ 1£}ïu[5>œÚŒOÆÙ¼)exve®Aö(§óZ�[IT±/AI¡ÿTuåu矵¾Wp2>[`.§dº39È-”Àà~-£hýôŽæ}ß)~áÑççkíøÉü�|Hä-Ñ·TâÉæ°±'o¥ÎtÒE:˜iY9¿øv\ìô¬!¹lÅ–nË™åÃsö…�¬˜s‹Íl¾çò¼aa–9׳¾8VŠVCÝ× _£ÝR]»mcY’^,�mWã™|Ħ¨â~%‡éž[d_slY6åHí!.ôùùd¹:cSº=æ^_WLdzÞYy&öYê#K¨iÓTYºBR|‰_Ö„ÏSÅ—/êíqt×#+öUØ�V¶Ã,‹JÜñ8µMæ|§e_tâS5òc] Zt­x0 E¹©Åy[¶ÐƨÚQ¹™‘`À[Ž­%Z8wJ¶ûž²œ&>†×\™Xº¯ÙÒpÊä¼R¼QU+†ØÖÅ¿‚Ë<’i8|=>#˜â=¿ú8Î�G¢œFÏ'L_�oªü,·Ü—4]RÿWba;©¬#À¾S=Ëê…žýz¼ó$ï÷v1§®éÆÒÁ†éšçu´Øs¶rYÿôhh‡Ÿ‰¢PØoÎjNíH¿óyñ&üª­Î2¨{¤Ý– õ³}é]z™òļ`GõÿÏÙß.ÉŽãl‚ ùGDœÌªîÞ™û¿“±5[Û·ÍÖl®clïô[•çœw—ˆ H¤<"›UyÂ%‘ âK$z§å•ìlÕ¥Ñ<eTµ=*¾îèúhìõ~zvà$v}�úÎx÷Iv”¼2j‡„4y©âç—66kGø&¨v ‰† ¦¿Õ‚+VÏÄ?Àò‰`t­ã“g€¤ý+î7Q§±Å5í#®8þò:×=èÔê³’uï¨ðÑm÷’íù'ÈÐIW9µM™©bŸ§*JŒIWýË=¶QÑHM’Žá(+æa>„˜£Õuý®oõó`Œ©ƒ4E‡ªÃ%Þ;@­eAr3Ò™À 3ul‹c" V­šôI7¾ÉÄw‡8´{‡ƒiƒJà,òšSeêUn¥]#,;Ûö%K I},Ïå×ÐwÌîoî¦S'.×Ó—lêAu¸v ñEɼùUÝ<¶Êè.+˜$ œ�ág°C«Fˆ¸=a¢"ôU$lÇ'wp‚ˇèu�%’#|fi:.è À/Õ¾ÙÉŽ88�ŒS§7« žåj Nõ¹—¥ àÝóAÀô|;økþ�¯ôgú4:…>¥§]îþYÕãÑ5?`¨ˆ8ýÉ\þJo AÉ8¬h$²Htµ¹¹ÉìŸ?Ó 2øÍÎO꾬É(¦‰‘4"˾TM|´/ d@ý\¡~÷°s%ë©ê.vy<}c‘`Z^Ë(¨íKˆÖßß*^¶©‡Ð@m¦:^]H¾/é¯{æûïÐò:Ëx�Æ<˜qñÇœæ~à¿ìþ“ë×s¯¾º~‡EÒsî§iº�ÝB|~ ÷ý–Í·$ÚÈ€ÎÜëÄÑï\‚xIÿ¬>’þ^žT³cuÜÏ-S|n°ëôrÂ}D[i|;b¨ÉÏ“$Þquó²H(B�»SñuÿuÝ'8�M>(íàÚg[n£Ú»Ã–2ˆ!TMà°¿}è½,�¿ã"½ê0Ú3NK´ˆÃ=Ra‡·ö8ñ–3JÇwB®¤òkÕþ[ÿ>ƹ¯z‰¤D Ûz@N©§ãÔVËùFwÍUh‘F6s¼"’‚Ý1;”¬h� ¢g6]ïu–Çÿ¶×›‘n[>ÞrÆü>r‰s<­*½&Ð…íÔÏ;…·¸,)Àkϱ¶ý|èé�årøýz¯FÍ #=Ðô”Ç¡x–Û�A%‹gDnÜÕ!X_@÷#rëG<ͺ¼(œIþ·ÆôïûÞ¹¼”Æçû˜�sæãª÷¯7�-€Éq·�JšN“¶@Ë�H÷‚­é7½žnvª#Qð@¹±‚²�ö›¸ñsKý©§ —r BßDÍÙµ�Ò›Û£åUàÛí#Éɤÿðj‘_€·çÀúl{=Q<ålÌ®ý3DÖ,šKQ�3Δt.|V9ßNélÆêsü«FÞMÓ|Ì«|›< ¤Ej:Œy£€F(•¥ë*h¿²þÖº×*wwðr–-rK¶�Øûµ0ß. Õ–UOûžÖ?€ÓªÃE¤V�§­þ9*O.â¹³8[Î9ý[.™ýA³\ºp§[Š|ƒ~=¯ê†"7 ß¹ŒÜ{¾“}_z?íxã«G{ºu±"ÇÆã}¯]®*�å¢I@*A—gF®Zïð³‰nt{”ª÷%Ð zIb "PZ޼‘·Bä=à Ë/J�r_á€!F;xàK:ý¶:~�·Ø½ýzT¨Ò°LºÀuõ”Єõ7¾À&B�\B„Á.ˆFT Ç\¢¡¸þ2ÉWÖ¾Ù"M͘ gÖd¡wD(á”lA„x�Kô`¶ˆs;�—mÚ½ò$ÖPgzæçý-‚p«û8uz,ÓPð\ñO‡9š“�ÈFa¤ò4gï)}÷SêY#gVåÕþvðSi6€¶*=þ¼'Mêqgä0µÜzÕÆº…ËÀWÃN•·œ|˜¨əޥÕÈ19qå �?/Ÿt±S�OÊœêý¸XDôZÃ.&§«é8ƒ¬t›Á”sþU¹³äI8ÍóŒœÁw‰±)vº²EÒO5g¨ã%÷³LêçðÏýÛ«9Õ`¹¨®7 Ù"ŠT¼´A=…Ñܱgã�[ïb»Y}&�·y]“.¥ðzPa�E¤V°œN5šl9[w~·ÓDÍܧA8ݶÂêvÖ8bþJFýeIî�Cêûú;½ž"¿YãÄØ}ñAQ¶ÅÑ!ËMwv7#Ù�zXÓ篖“9Ý>ÎSO{óK½~™ôb¾éÃÅΗœÅ›É„â§Ÿ3?�Ï�VëïÉÖ,ÂùÞx…>.ŠÇËNgîl› â ;ú°U”+r(ß®|D¼ Âîö}?ê þÒ¯ôD^¬,˜NÉOö¥Zзæ,ƒÙtB×ü!¡3"3?eZıf#[ºð¨3øo-LbÖ/ŒVèá-'Ÿ¯VÄrÄÅÈ¿ §—‡×ßÑ$xú×g(äö¿á´ê‹&Ó-ø½Ô v¹‚Mîwþ¤z²,SGýfäÞþû�ñþ‚]~GdÖõC*¿(a ·§ˆÈŠñÍÝ6rÙì÷9Bï§ØðHM¶rEçQ_Ë?ý•)èëJÜ+G~%�ß:ÐþR.Å_ˆøüÃ'?0UaiÁõ¾˜’müŒñ�¤fØn@28.¬[ÆiöÕø�ûý�~!îý0ÿÛã[ó¦÷TÏÎsÿž<Üÿªˆ;~ÙËÖ4~Ñ!‡…ÿôެ¤Õyº¼‰ö³ÝõÍñ·I  `�Jîû¨?´MÏEÆãÈõFíÇ�>˜ÍIÿ7A´v2®'r ÒØoÒˆ#ÚøêyÁRÚïÈ yv£õgNØÐ{B¿°¥ú¹46Î%;ñDß!¢Mr”wíƒ^pÕÄÃßõŠT&2Ö’“³J5¡0É�üÜAfXë3£çÎ6¶ã)™2ž„ö—yðY’ ®H�= ¶¡p—DVxÂvÝb½t5Âcoà».¼îqsBoN0*¥ñÐÓ† ¦ÀGˆ9Xìá²W‘Au8T ŸŠ‰›=ϘGÅ hu4©H8ä+SV5ê�}ÞÇ„*÷¿«üSÛíNîã›×öUñ^&�«)e/f¨ŒpôÕkìæá® xt;˜N³ñ�"Uye>NWÐGÓ³®ïDŸ§3áí 7î÷Îw°GUqPì€G€óHŸ0þÑXÅWiÑ*ü5DêäI‘aÛä¯ð}'ÿ(%ØñÔƒŒ{ô<‘Çöõ(Ș©ëÆ¢¨ë¨Žˆöt[C‹ eþV| ²DT­ëw׫ØžöhE½x›SmÔ©& /ƒ“õ�3U¶Jã4lqhTªH»!ˆïã¹P�ø„˜7!æ/N#wµòÄR5ÞÚ�$QH¿ŸkÔÆwéþËѱ]÷uEzIVt0Åñ†Ÿß £’v€h]ðdÛïMƒ)•Ê+ú¨OX�AvŸK½…yÍ81aÅBý ªúÿ#\’#ÅIÆŒÏõ/7|Åß�̋Ĺô~š{/0?ËúLÏ3þmÙ{�%Grt¬FÒmªfýÈ–»i“ÁOå™Ú¼†krÐyŽõ¼žÿªxTe„C±O:¾é—møôðü—Ý'I|l²=b2Ní)Õõ"›™ÝÆüŒ_3½:{}pß·%:–3ö6Þª§sܽz Δê€C‘ãj�8Ù^ö-Ù…õøKòoKÏÕ£ß@²í¸}›ˆ…#¯ç1¾©Èò§V9áôWœØY&½žÊŸ4zAšþÔ~Ê¿tk§à˜'>k)ù©¡kÓ›í #âȾõ½ªñúý#†Ór-’ª&éQbÉ_¡Çÿü¥·ŠŒ¹€ØÈÓ2Ôœ3"KÞ‘³éÄÃq׌[ƒ'ó¤f]ñ|aßšcÅ›¯ù'7ŸS­ÁbDÂÉ#Ê‹�Êú›š|é/ÿi@‡ßHÂv€-È^{r§~ymí íÚvÚe&¸÷Ö¶œ~ì×Óò«âHçnìãϧ_û�iþ#(bAŽGþõ3 Ñhs.Wì\-F*î,ÔS˜å·Åg�›æÐäWä>“Hg¿¨çñç»ò�\cÆç^%Øz8]u;¥Ô«…r¿ëïË¥âÒàÖ,‘œǾ=^DO è?+dÝÙæ�†� ºÂÌã^ÐßÁÎSsR”Ÿ§-‚ä³í‚Ó–§ó=Êèªõ¶Ür{8‹©\>nŠÇÕñ+Ë«0"�ßï;ÞӟлKÍfFaÜ•'ãÀúKæ¡k£§Bî?ïûõv*®6 ÞèíUßèN—@7ù¿ïóQÎg¼Hb ×å. oCŸ¶\¬ªOøöJ¡ãᮩY®¹Ñ¢Wõ¤Tš@ޏ5³æ¾å‚²Óõ WÜN\3æ�ÇøCOc.?`°Ók§ÐËEÔÍ!~.zÚxA¤ÉŒ©ÂîtvOôß`AÓ>ô”ðµ& ÚC÷©ž »hŸ3rõÎ[¤óV]žÛ¢äü!²ªèéÜ<´qMF3¶ç(ÝPº¯4ô°8ö�?SýÞ"½(ø9.ím ¹Ÿø‰ÂQù-EÁ ‘�ËZºz1[P¯OÍŒõsèR'%šeY ž=…1�psñ8Qõ�Âç|ƒ¿f; ï–‹“¦ˆ§¸|2¶å¶)f‘~œ€RHån’žQ$3‰{³«êù€ #ÁÚNõÛùó5Ï�'D®Ì2NšÕ6ëz}sŽk‘ð,azó¸¶AÕq"¢|A„íi³�ý ¾}ì§ÐrÇ›~ÙYéÔç y#»új‡¬èq­9åŠú¥bþñIõ©E˜ÖˆSÀ.p/gšNЇ+©>>#ìþ†ùÂ!×3뜉cXç ;~²Ó½·þ7{iv !!†‡÷ÉFê¥ÂÇûÊ)åŠÉ¥ò“>XG¯ð¡ˆ’,I_Ìðw%)TÆé«§‡Òý1Í bêx,ÀóT¿)”&kH¾A8�~›—š“j<@ÝXd÷¨MBÛXfU”Â8][êY8ÊnŒ66ýT¢lÚ—#ø¢Œ»÷¥jB¿Víÿ•)è­B¦Þ1®ó}8iÝgèýµÚã9épŒ�Ø}fMxË£Ú¾ð)CÒr¶sè¦Ø{§‰™9FÌòì¾{¶÷Ã<9·i¸—åÆãäº;]uáùq‹ú9çèùøâû£xÓ™�ýï ú¬3Çy4ô¯ÊÉßqØü鬋æË#Ú† "R.ÂR„ÖíãÔÛ†ã„×xV¡Óqøñ ¿õ}M¹ Ѽ #Ó/s‰Hu9 sgÑ÷rÖ/ð,Ÿ»IÒú70ÊÅõ3Ö$ñY�`GÎÄmü{÷·ƒ–žh[�}˜Ýr×Óy¬ï÷¦²å°Ôz¯g®I¨îy vî�Tå�=ñ]9X–ËrªÒs»[]ëzzú"4º7Zvmoy®φ¯ë%käIpê7OÆèeÏ3C»Lm'!¹íßÁýªI%ÁâH‡Ð§5lj¸Ã‰1Àju‰†Û0ášÇ8³ï瀶B=ž™.Y‚ƒrž ºçÄÏQ¢ùÑŽUñ:%ÌMf7…£…½ªÁp#ÐË£Ì=�¿¤ŸÂÎ)s1c)æOÖÓ(Sç¬Á¶úÌ‘s¸EêiRû]UE•m»ˆ1û§c1[” ÷" �ò,î�DܱU«¹ßwÆìè/†�‡áž‡nÌš�ÊþuŸ“Œ%˜ä`zëé»ð‹¸& Îp6öôüÄxL¤©{.2T�2ºò�S±©š¦>¬¼]y½èdƒ\é±{Pù[lH­Y’ Sßm¡ƒ),zH¬GNM†aÊ�«íºÿ� 1½‹Ÿ'ƒG�ŒJ�Ö¼Ç*žîÈÇ8ùYM<ÚMWhGÝÄä}߸è2¢íhH^º§@?´`ˆúÛN‡E½Gƒþi¨s<{G® �ŸS¨™�`E$:v‡trŒí*xýö-ŒFlåúdÇM·�àå)Îs—@êIÿìYr�NFÂü¹I­?Ï ÜÀâcFø­ p8h;Wç{EQo4Ê‹Q¶œ¢‹~œT5ÿ™ª]¨öËÚ‚FzÙcËîaó³£qv¾Ã“’�>q5%ÁöRRmYd<îAÏ厨¹’ê&9E¯ûªA_sa(ÝòHúŸÐŒ{ú6»ë*±WñB_qjÖºCò…ך6wÖ¯ãöd›G½ãYy½ú•ÑNÙ\ùEm#n¶ÏÆ[&��×GÎWÕAL9²XÉ ­~ÿ”<HÏäýrKo$6–´BÀI©{¾âOQp½l�øqXÐ}��gõG<;ä{ÀvÓÄš"7ùG~V3»>w6Ó³CÀ—GCGó1 djý5¾Jü}ÿØ 8,; e3â?sÅÃ3¹“$ Ç`¢¤§ÿß)éõ¿ÑŸ©{Ííh¬ûG¬éÇßñþ Îèï¨t’i—߉ ÷º âpËËhø‘Šb>z ØáÚ×€2’@ÒhÛ³ûKz�•x†ìFùÕâš{T^47Ûô®åÕrÇ!bÉN¹ÍÇ».Ø�>_)Œçl;ÑwEñvýnƉiÇW.ˆ8|WºX®þãeo#ÿDö„hmƒV¯ù 9:nÆ%¯;¼ýTÖŒŸIßvßN=éc{— þë�ÈÞâ8·JúÚw=�‹BWÉ›æ6@ähÛr¶íÏ'5þ+v Ím¨§ -¿5ùÀl‘�7¥—ü™rÍËãº>%p-;Ó=iOCü<–xqM5·[N‡Ù4ˆ’øTs5à4âârsnâR4BËNq%œf]í¹7q»˜Þÿ²T^ÑúøpË�¾ 4ŒNS”¯P<�ï�˜¼Gœnî8Õú‚÷ ~˜}å·­T÷ 99©Xd¤Žï�‹Â{‡à®à|(Iø ¡–Ó~AJy¿ó`ií¬[Ç 1VûŠÎ^gÆÑ¸­g|P2#"»¦n…èͰë5RrP2­= +NÑ�_•/&¼W?`¯N$�ÿ™Æev çžoø¯X¶¸¼`\wµG| 4Ÿ'ØSŒw2ûŒ\£°+/gåÃÓEe¹OÎfzY5‚òwúòb6»dörÖÞîŽVŽ9�ž¾×ÞsD]„’^¿ÔÙ´W¾ßÕ9¾æ¸sl/NŒÅÕ§Q<îãÛ/<�òp�¿¶ä>XÄh8P?îás‰÷ >»>™Æcá�jõžb·”¬ÿ™°ˆÕ©m¼åfGw—n|ë#4„Ñ%Þµö&�‹Œn´�?éðkü&î‘Èœ’[Ú‚‚ÄOÚ À‘Kl6³²{qÌÎCÂdØ´Û(â'K:¾L·¦ùtP†�t#¢ k¸Czð·QÐAÄÀãç¾  =ãÓ6?òTþs{¯·ý·¨žº;ús ½:à~âxXè;:5äw£—8° qÏw\ûlΘC•b”™Ä‡­ócù6µ1oÃõ;Þ9²ÌTrUÃ#ý–…âHyŒlGÕÛô÷ �oy~û‘:ŠÒ:Öp°qÖ�»þžÒ^úkƒqÔ·ÙÄ@G µ�¦ü{æ?Úˆ¯šôý$ºEå OyܤJ¬¯C¶ &W«EÌý|Q“«< ^;F€¸¤®Žj“‡—;© 9Ø S_µ[|ð¤øn<ž£žwÆ�£iòíLW¸!üÜ&Ú“»TÕÁA¿|=¦óíÊ duô-yèàú+‹Ø÷÷ã>`ÿŠøK’ø3bbãRžîò Óñ^—<6O›&Ý7TçLuQ‚här |9Ùÿæ_dy„¸¯Û ‚;X-‚\ê *�{èÚ=auÄé\ʃÆ>Œ¯«­ ^½D@DùýdøNÁ÷¯X"FE¶6Õÿ·÷‚Ô*Øœ MÆ)½Ú¸ ‰jG8ò@�F¯åAÿ ÒWËbž¥CYŠC¨Œš»÷ª¤ëãz”í|Ÿ–K½Ï…šSìï§çöä¤9Íkä~Úý@«K�×gu ¾ŠÓc™Fytùõ?»Ï›ÇñX_ô¤ üŒMüu’÷#ìç³¶§ƒy¦±^N¢�ÕÁq1:9RçÐ~;˜Þ ÖúÔÓ™ÜóüDxxÜ.¡k€rÒÓ+íôZ [š¶-ò©„¿lK÷@ý¥§®Î?~¤�é„c —7 ¦àuùÌÊQÝék[Ý©áÈv¼Öž K¡ÅN‚(JÈå8\^°âþ·N§ÅÉ5ç@²zOf({—~ñ/ÿ=•ªðŠHÍw„ÞÌø|)OÚ¶KË19ã)ƒºY 9”,Òå°®ÿç"Ò„.ËΖ‹ §�ZŽ¿DZ½€?-g£¼îõ§T M�gÈ3áôRÆV]‘—¾ÿ½‚b„Óõ[C&&Ò~׈ܓ¥g)n»‰‚SCõ”>®]lBÛU¹Î;ŽN[ÝR®õJÛå… _¤®€æü“�LU\6ü?pJ´ü×þ<ÿ¥ÎÈ‘–)Ux¨0]>ÛMØQ*÷)ÊŸÑÍ",r¹Ôø¿`ž¿�ík=�Z©sÑœžåSp’“½«Y½é‹=êÎ[ÐÝ ´Óå X@¦ÀÝfÎAȰ*ŠW¤ÆT”n«�z:kŽ¡}'F4‚gÄùÞ`TUÈÜé§ü»�>½GܹӧýT³�.¸àIeBÐá�œ¬9ç æa:#Òy‚¥­‘‘vz°åŠ\ªÃ¹‘nz…¼üž‡¢]®8Å÷vox2‘Ï9é�$E m;œ6žPáIéx9'ùÑwâ¨=`§Q,`¶ ícœòó>rœÊ †ž´¾åÂʸn§io}l¹Çöî¦ä™c_”Š“ßñÛÚ�1?¿µ¿é4",uú·±‡99,È‘:¡Ráù½Âjÿ¦2%øC`íN­ÔÜm‡r: š9�)Ps²w•õ-¹—ö5aG\ÖƒäƒÞбžö]íÇf^ N¯F{™°»&È…<Å{ÙíØ1ßÖaXàæƒz[[$ª?½Ò@yXHØåÉr÷86‚á¢#ŸK«8^#õ |„�Á9ã4ùÇ=aš"ý`F¼fUfD,þ†?w¦9¶Ç_[ ÙÎ^ÞÆ·¤ÅèJ*b¸Š?.B³ çèl96e­žPëØE¸ÔS £Ü٠싃rRø-çpƒµ£·šŸb‘ï€_Žy#ع0TÆ#\oê¦æU jÌÆWö1�Oêo¬9÷.²ÿ¦ ²·{! ¼á”xCööèc•0�3B:,Bt}à4N€Ÿ„¢Þ5Çñt™z]¼õ�ïgåÔ;ÄîzÖ/ ,ÕJÕ€QœÙ7Xû”[dðÉ'�ÁP”)êELM‘ëCCùÜr�mxXNÅ%ñ·K±<42å }Ò¦9±e”Û”ªŽ�/{ãð{Æü/÷•"›À»nÜûÒÿyýBî~qK/¢´”·Ú» cr¤t>€�þ÷Á˜¸””›p¨ã}\1xr¤‡MÆêx9à'Ž~.ź[ÄÖnN,·­É¡N ½mxXwvè¼�³„×»YÊÂh‘Ì‹å`E­÷‹jä—ûÀî:ÒÙSu“òQÍÑM\½ïynë±ý,ˆ¤;!Uú¿gµ›ÿxך‹%™4ú^õ¹Í/¼~¤ï†=’o¸èûk»�gW÷ïsƒi�A„ªGqëïï·ÒÜB§zÜ¡µ�ŽEfÏ>`ÿ_ïˆ`9Nöžg×h±äø‰¡&Úwø /ˆ´?̉ü »‰yòZÉÔ¼_\Ë¢6Ú^ÞðáoØs³�?àçÿðï•¥.CYÿ0‡Á–ü~/»)yÅ:Ò‘o}F„ê§¿@>¨Pé?*~©~ÐF9u’¾P¿”9zÞyòÆIü¼žWà$”TšCû„Ó·bTJÔ4˜;5Nع¡…�ûf¡~À?]˽܌óøwíØõ÷ÍÂDC:Ùœe<ƒ“LÏÑÊõÍ( ¿àÃÚ‰_Ö·>¿;FÎüÔrç}ÏñaJ+|A+t»ãV×êT<Q Ÿ)˜ÝqCÏÿ›# ãne›ÿ>W%�½á¯ê_IóÞ =ëR�ûkð�¿õ'íÁOvtà*ÎG;Ö"0ä yd7ÍÅñ‘zŸ¥}jÍu:Ù‰f<¥Ôþ�âß:N/:~ÚÒ#÷Û�êçÓËäH‰7i¼@ƒ_¾m·;íp©óV‘%Ê´Öʉ‘G¿ýuÆŸ}¿’×#<€Ú ~Â,š¼*ŒbïÚú›2¨ã®¹v‚{<Àg0F¢Ê¿FÈšPý¹œc†'Ó€Ýv:’ñ3(‰ÖqÊ$âÇÿ£¾[v@¾ò3h ÿ>’¨å9¥'txצŽÚeW¯ÊÔQ% ‚ࣟ%T8hçñq}ÈsÖ9ÀG~Ǫ‘Cù £ÄÏ‰Ææ¹÷äÖÔªŽ; ýøaˆÓ”_±Æ°ûÄUÛ§zè2¯ Ä!ÑÇjc¹ŽuQCJ|GµT†õLýãQæ œ–×ç7J­5²ÿ¸ß!“WÒ5ÕkØ�Om ””ÀVšÓ€u8¨êö÷H.ÓïF³‘¼§v6'ßÕ½£ž½+ �i70wÞ—“ÔÇáx¤G‘é˜Û|TèÕl¥3�}*œ®¯¤Úü#ÉQNµÛ[�ªÁÐøà7U;»Vú7;Þl_C’ÈUL½0šy]Óx!Ç•e�^~7–&Ï™û<&Le®2ã`צvT½ÞrÎ2 �4r\"|^üZcîºQ(rIä=?;=˜j‰Ñ*ø›Tõ“—%v:ßcÁ?ÇØB#~óséR£²Ý;G•wv2æy­öÑæT¼Î”ÌSIß�;UÍu¾*q\ƒy º£wX°kÿl—#ˆÿ¥’ݸj§<]ܳ§°|U7Ÿõš¢é°6]7IŒù@˜êØÙÙÀ„÷ö{ò,/OÔ}ê×—/ÿʨUËø7 Ÿt‰Z¿%�¬dרÑDšÛ¯ RÉ0å)1ÿõO…™wôáøœ¾;½#rÈ^dgäÀy׺|zDü’ñŸþ¡[#Ë_wàõ‡Ó`|` ½Ô`é¾îŒ)~šÌ£Õãß¿÷ßòö#Œ£þ&‡ßvû’¯Ê=e¼#ËôC�ÿnøìã�\ýøË¢‘mÓé#À›8�9ÐöÈ› Ä4æÊõ¡ãáÿ©íqú)Õ.ô}{èâËË9JÜ;Æõj‘y¶WáUý¶£ÎÀõoXĵÃ@ß#^|Bκ»EÞz7U+Ø1?£S©Õý°Ó§¡s½9¶×�mÕÚÎ LŇæâ“k< Ö;»â˜çdoô³Wèä¡möƒÏ¿ópq@Ós¹À¶,È©9ÿ&"£ÜßužÎ/t°¦§Ô°Óå>·5BOsÜñ¬|$åC+.z:¬ÏÉÉÙÐmÃÃæõ¬í¶Ðâ�Ÿá™w½Åó1iNH ¨n€-²bš9³| w32�%œ"γóÃ\• þ¨¶¹È®Gaâ C° ·Í?xìãäGŒÐ,˜Ç©LUQêi«ªFNð}ÇÒ‰ŒˆJ9ȱ´Â«ž,·›ÙMü#5‡ü ¹«ž‚Êwwš½±w>ôm‰ü»_ºEædÁ~—U#îæS‹´Ú¯W�Ð(óÔÁÞåϯPí*•ξ‹š«nÞ ‘Ô–ë�‘O`7ÙŸûÙÇrx£u`ëZî..Ný'FÞP´ï8꙳vjç|ŒHåòˆç€lí7{íZ,âøŠóUïÜT¦ƒUf½".� ´Ør{i®Ö;ìç\˜�Þ{�]-"ý?S(]´Þ㤹šf;�¸=$Úr î‘â[�‡Žg¹Øéµ -}ç½pBîF³ëÆí䨽,qÁÿŽ®HµàÁ Ö}®Ç Y-NxS¿�e· *]šCÍH� é2$ûw è"§<,òÏhOÕ3kîÉr1OÙlöøÊЙ¬v|þ‰ù=)'ß^´ëßwµ'?�Óò‚\]÷û8Â|Ëa¶�w�êØ›ÄXx0¾‘ ˆé¬vã„/çì”óÍ\¥ÃÈ0£]ê\èu~¶ÈÛr;Ž®(ã/?y^í�Ç Ñ¯c‹8õ&m>¿b};-ö>õ‹ƒœÇ¢¹ÔÎ'i,$ê¾m=¬«tÒ–w¾ºè½í´è õÿvWÂýº*¥çµ³œ�??/n8`¾¨=8Ï%ÌÁýC5ÈéŠÿÉì˜âm¹«-©É�¹ñkµÿãᜱ›|ŸÜ¬mÿO+~WÀÿ@<”ó~Ù:ç~èúC©ôò[§´JÃx_tÏЖú2óÌ‘ÒËA(`µGxìRYöóNúZ¼óŸû@Á?·1_ððfË*V‘ûÎG>ÕŠH>ËYx?ÞL�ùvÔàX¾Áz®Xç¸Ü£?ñŠîã*NÓ�¶l4[Nø›Ò}¬•¾]$ŽrçäLf¦áŠÂ‘µ²æfÑò<ÛÒhn/®¿|¯Z¯Í$Âä�áañ^}qd «"_´u¸U¯E¨{%÷;ãÜÁñc!g’—ÀcáqÀ+.1ÿFêïp%]¶k1ÓÜŒl.ŽÈöþüô¹¸?éUÇ$ôåœ!ImEµÂÛ1 ï·—U…Éuá�ªƒÑzt‘†ŒŒäa”¯±7©çgCh ^@ëÖS Þ“g0Zms…c„‡í`ÒÐ=àJ³|2_�*‡+‘¿ç*~"¡sj>:¦6~r03ùO?¬÷3,jÄ‘ äwóg$œÚ� w:m˜ŸÔ§Nê•ïƒý‚(¥Fy0#&J<’K؉Εc±þ½Úuà¦3ü÷ŒZÜ!Ôî{FYjñ Z=®ãÚ@>›=yz©/ðÔñ±c@¢C¨x È‹üÀ‰kïGÑX s”<�éî%ûj2\ûß6ã•ç‚‚ TPIò‘!I¨Õ*&MQ~i+ºˆq¶Ú= &»5“0ü6ü¾*œÕ¥ï,Š5§[6=‡Ò;.Ð=N_56º›þu"e‘¢âÛŒä¿�y‚‰1W}[ÛQ˜ÊZ»”iüÛÝ}"þ™ßr‚þr‰ú•ªoß¼"Í÷h,nÉ<6ÿ!4 &Ϧ«ü#àa´¢êèä¿êZ }Öùx&6þÞè·«.Ô~@Ú!�¡˜úMßøGžŒßr¥ÄÌkÔC°W¦à–=ç/D‘‡Ø´ù‹š‰GU«ú“a‘zÓÃOkú!¼¸�ù¯Fý›~³yÇ0û¦AœZŸÖB [ˆ­d„Mìwü,ÂvÀ(9E½»Kó#ºù’6·]ñb—›ITÛ2šl¡/n4yŽºÈòêQï÷0E…ܦ@aùgÔìMD�]«#‰þÆsaö½œ ü'W) »ý[¨5“„ETÂTÇ(ç"ÚÇÐÝáë'®û??�7óqøúO‘»¿Sø„ä@­?þUm(Ù‚Že³ˆ·;"4êqP _~ü¡Õ)œ|</zÚ²œb$£/aäd«‘gFgsÚ{»ˆà;r%]A×bDZ!à4ž·2ÿØò$ÿÖ~sn&Ák„¢ØÎñrf�/;|G.D¬ÀÓy É¶?/È9uC;Ëݳ¤v5òJÂü³Eºm¹Í¶{@èyy åVkIÑðs5ä2ðhåEùŠ?0?Ÿ[c{-D`Õ©#M{SC7í‡âz³…¾^à=½Xé— ÔÅBÆÖÂç|íÇSn9¿Éû�c�Î9g—S“âNS>QÅcwˆ~!Âøm¡ã]ËçBNÆñd½ïíʤ!Cr>«>[Ý•†º)8ExÃs‡0»ãÈü¼›“ö†\@Ÿü·Ý)ÿÖ\w¶sj§Àn;ºªI§Ðž®+ÿù?wÜç"ró�� `$Y+a[8�/ؽHk„­ÒA*ªQ£<…MOg“ì4ÙÏÿ_5’˜ïé´í „59ZB{±WýÿÉg.rå´e:4Ò]»gæ.Œ ×v,{ùhu*f®s+6ÿÓÚæ~ƒYsšI0ó>í‘2ι\4B¶œu~-‡eÀukQ�ÿZièÁp¢N•dlaV©b Et>kβ‚Ӏɿeü¹¶ñÙ®¿·+DV/“&:¯°39ç«§•]½)‹›&¿É8–RÀÇŽŸ+HFS¶úm<ˆXlùihH³8F/G‡ ¨#Êèxlë t¿¬©W͈\^N¡o£Ç 9+Ã[âøÕ�Ÿƒ�$çùD~”Œÿ"V¤¸írU䛿’ðòJíp*=/a,G•N÷:kEøÏð»ª×-"`ÊÇM¦b‡žZÄ_íª "/äÂøÛ©é{]§À¾¦ ` ”žÀlœ±RÖ¸Œq½j6%Y4Æì±z?ñ9/{–�'Da=MŸpz?·6Ö[g;­Õ…ìì~*—~¨ §´êM"j¨Û�òÏÃç2‹ðR¹G°˜>o:jÂ{Hqþ©H›#Ë93ÕÆÐW%E¦=aDFRé®âŠûgÀy°$ZiÛå¤4º®J‡ÕÑ”GðQ,É"ZVŠÓ!8ý³æÚMf¾¢[¿È0Ý ;$XxCî4|`€Ó\�3büî–l‘޹ä‹Ô>á,0p3—E¿ºÃÎ_¬¹—sG�䦾áË!a¼:1Ííüm‘Ãõ5üZOýeGûÖxFî¶ïö�à ý¡ˆ]�Ël-ù½À¡ÆÞnËñµ*?Ïè?ËŸåè}'¾Ãn/ø¢aË%¹U¹ ÞþP|~쑳\#w_nÚý¯‡Fô[îWo;ýžÝÝDÎÊ£fü[ÝïákᱫçÙÃä�RÄ)�O6+ó§6¸ýV{¿BŸNN[¼�}²Ã’é©·ÛõY;zÜásáµ¼ Ç÷å‡"Èp7ÍÜØ²Éý¤x^¦0Æ_l¬WÓ~~Gî[Áâ�>| 2÷b§Üë„`èb§Ì‚OÞYýÐÉÍ�ålœÙä\ËäTý…ˆ¿¹µÈF/I~ªíºñÏ]UýÓ…´Üîy÷ûçîÌËäî�›F<P_¦øÀä뾨¾üÇ]ßÃo%lN°¼Ý;ëÆaè¡ËµDÖv*¿Bï¤Æ‚Pivr·óÇiL´l"•9�x‡%ÏŒ[ØR ⦰Öïä?nò1WŒ¬hÆ'�Ø÷Ÿëú¿£çœ4Q^‚')C¯÷Н:óµ®ô;Ív¶%ã´àØÕÇÅgrÔÑÀ›Jm­‹ÞrZÚãøD¨kî7zÖG¾ÐÎ_?ã5Ï£#˜¶’Ÿy¸Foj²ôKýO¦¶ÄÄ£žÝØÝ�½7�ípNsN”[BT×RÛWÃpÄ žÇXñ1ñç'¢t$kÒÀâY¿Ç××w€©Q¹Ýëhɱu0†§H«Ô•ï²ÖÏÏ#HÿºhŒÏ¬†d²…ú ¡½,r~# ¡¤º÷«1åóqÃv¬9·±9´o²F`�™•8c&j]î­gòž¯³žûJþ ¥\$ꪜ|×ÌÜs`GB@d/_�{Âx£åÉä£jì&(ÐEž`ìeæ Ý2�«â°¼M<ì¯fãÜ2�e‡\EÜÅ™o�ú߇·½Ýüü켿-ãúPe>¬|È´Uߟ›6�©.„ÈÀ7ùbԡζ‡¢õ Ö©Ÿ½ù4Íä’ø¬M ø‚£ž ð¾8ÓIþß¾ñ7ÀP]hMw›O0æ%:`¥Ì±Ùþ³o›ü šò#¡SÝ-4nz…çPD’.l w�½;û@Q_8<µY³gìëutúý8·æ($þÑ�á—ô\¾ƒˆ+FïïÈ^ày§N+OTú±]"W™œ} Ê;~ª:õìÿóò;?�³ô™ ¾B2uä_ûãn<�^î†æŸýÏ<(OHg·¼ý—˜3›ý€ï�q\ÜäfŸÙXÖù‰ýצz¡ël�C·ùðìÍzÄ.ØÝãù¬&›Ü\úóû9QäûÚa,ñ6T᮹å÷:g¤7²©Ñæv£’�G¨F}Ä# ±>¥ª£rðUzúwmñ»2Ó úœð`jäûœhCÜnSQÃñ3u<`AòŽü ÷3Ï«§—¤þØ!Ç@EÇ®y܉IP›£ñyÝ~P¾Òõ¹ënÉ®æ´-þmkE¤Sšò§¨þx� q:=&ê �›!¯Y…ˆ]èOOñ¥-nk²¤$FïØ:ý<°óû¶*žÈ¡Õ œTç{[µ»¶_ß4Õ´¾�uZzãßNwÝé5�Ã3Ûù㯼äš^í}•_WG£Ï•�yÇcz+4²dòï*#þó_zcÕ1Ë•T�« r"ÙiŠæ#‡¥NAÚ;¸` ü!Ó‚³GŠÔ”~2át]9 ç¡öjkÞ2P|÷s‰kع¦[!ÏŒÈSzAnÈû»þýøSñ{}§è æ�{cÅeƸ@Gà3½)þåvrÕãÂ^N và´µåšüë¬[;ü�Ü�çYa½!‚äýë\ÃbJf?Myë[#>Ö NE|®E¢LÐh5©ÚÃ#XóˆOl‡÷Ä•žCº0[®Cœ®¼Z.0t|¿iDŸ‚ŒW§Ódà™Ý*Íà—Õ¢ uŸvÜÎ ‘)vªô;6Ë­h¹|4Ò«Ì¿ëøwÅ{R½É‹žnÌÈ 'ka¹ãnh¶E^Å£æh+\qÜÿΈ½(ÐÏr­CóS §«~¶*³»«YÊöb¹"eI²ˆ±BC‡ß)uo#ȉôÐÝ•�+tÒÈÎ2­ä?é© mC4ìªt…©ç?, °�¾9»œ­µNŸ:!N·×i>p¨³þ<ºè<ÉãòÞó6\I°xêB¡ÈÛHäÏr*m¿1jÇG‹íþÀ!)énm…H^,וÖ,ðx„]Ès=¥˜^¾=¨'Èg=DÊ™¶—™Rìä•ü¾FÁéÍ"Â÷ÈKn‘˜G"ozAÀ«&Ÿ³€¼ZÖ“åì)i:èüÐØ™õ|j6vƒƒÈ‡õ$GV„"#ðŽéo`ÉÏà4êšóÅN[DˆC“+ÿTÊ'_Ž´·�æ§€úev€ÍÏYí´aMÚZsKNzÝdÊ Vx˵¾á3ã´W„*í§.ÊÖß”�‘Áe#Z*¶é"ƒÓm½Í0@OŸñIËŒ½ÿûª‘ÙÓœô~×Ó‚�ŽÛ9�8¯ÃSK9k©‰Å\…ÕrŽöò¥åLL�øŒÈ£nõæ˜üo'èZ4Bî‘�—¥a½÷€n'û€gG^]OZáf9+‘»Bõ7›]ýRô0K‘üŽ"Ÿy¤ãIsñmÏ&DnF‰óÑ¿ "Ôh�¿5‚Ï­¨ìæÕíôé3æc•˜£wž-rtjª»âs¤'>ææZäRÅ ô¹"é!ÊGDæœ×1ä3"À2Ǿ‘#�kGÔ+$‡WDÅ«ù=Y�]|$ÜÆÃ=•y=Ññð¸l~ØÙ"\wqýËR#˜äg^èrSž¸#"ɦy;Ýs“³»;0R¯V$‰äšÅé�_ó7[u“ðÁûëGÑH£×yЦ$ÑÝ÷oz¦Þ¢-÷Ÿêë;&�ÏLH ÙY,;Ì€1ŸËIõøŒ/‚ÌÝÜïõXõÌl‡ƒ/>ï«›c?¬"û4G»ž_¡§\`º'‘ÓæµïíïvlYžð†üë¤óÿ/(â7ilV?3ï茔¤¬CŠì uööÛûý¢„èOÓ÷`wú�ˆÃÛµéŒ<¦½¸¬4ÀÈü´ «&ûHX=�Ëo�L‚ü® _(A�]ÌLÞoDÆ›XÚ3‚St ô7/¤|s¾i»õùÌêv%«íÄû_«÷rVY¾=8ƒ •�·äHœjjófô_¯ÚòtçÐþŒS¸ïØ èåósÖ¾Ó‡§¯êfb¡¼ÁNþ®ïs­�/½×PÙø~ÆÛߤœºþ¹VŠ#•NBZóÉ}n™ëdŸ½àµÒâͰdËÜ=?ø;x)î`<°Í£ ´ô³Çã6öŸ×DýüÁ ¸â9»94 0îZå4¬c—Ø¥çŸv³N¹�ôφNõ¨mh”êgz�h-ã{LDßP;!aw^È Ž¥ÑR¤¿wT½–CiF·æúÈÃÏ‘OÇAx>9ÂË^";¹Ôÿìßš?1+=ë?|^Cs ¦š¡!�Œ³Ë H_—§3U‘•zïèsf¯â¸Uºƒ©ñN]ü3)Áò…ƒ¼{¤çrܯG8èÌnI‡ƒTÞðº-å 4ØÿÈLÅOê·~<�;„Æ ªî�| IЇwX¤ÿɵ¼þá/`ŠqVã-ÁÙq0›©.×+õQ‘‡‡ÅÙÎ÷Fö*ë®#ÂT°\ƒ/¾bb­ãÅ?{~€ß¨Ñ“�'’¾”§0²þOy³( Éûþ©ï·²:í܈ª[‡¨bÊ%�ŸÍñ7Šç]þÚüÕÎ3íô_Ó!œçbÜù|ÓãÈ=y "M'5-i=S7ÿBÇz!]4Û’xWÆ X«à¿‘üW¾ª7%ÙêÄû®}ÇžiZ'íð;ÛˆÓ_ý_¼Y²[ÎtˆF?Ìmo("þîÔK/Ô�A9£‹ 9ãô·%Á‚ÜeÓoêĶ[¨£‚^/ÊGbŸEþ¾Žq²ù»èø§»`Üš“‚YV~â4çç�Áþ|¾Üv|æ×3ŒŒ-áE‰÷|é">·c5=-ïˆD¹hÎÅBî…E<Ò ôy rµ’ïMÇñë=S\Á!oƒù¤—í¨/vA'9!âsÍÇ€rÓøÝ,—à’àÔ-þQ.*jr ¹œNº½Bí4Òé�ù}yÓ¨ 4ŸXOç.â#v·Š…8¼½ñÝ#ðör³qºÏi½ü''Šqúý¼f=MXîwçªäs“WÝ �¸YÚøt‡h9²à4ðí¶ÿ-×+�NÖNñ±�A9/Z½j{‹l]°»"GÑvX~q1t6X'KB‚­&)�Àow�nЛ×ׄüO£îåãâBåæn¶È™(nŒc kW{vÖ�ypÃ-ƒßºG•‰í4]‹ˆkÊ$˜±S0}h ‹ô# �²Žº¿è8öHO�¼Ü‹KÕ¶ÏÛå´7Ÿ,‚:;žv uýÌ;õs§=¨FýªB „|X¹ [\œë'ÿ^tHç;u…c„¥§]&�AüÖ'À[~hD©å‚)ooêàß°ÇŒHb‹¸4•SàM¤®Á¶îzÚnR}~þvóŽBä°¬%WyÍ»|CÃTÇH•0Ü뛟úa™È»>†ó„H²õŽøà×ðçη抜Þí4TD#»Z“·G¦í/\ÑÅpk‘á0�ŽŠ?»²=[�äé<­Ð=ÆŸàWø/ò˜# :yvÊ-NÕ¦ôÉiÅz0Û½0[=䨴7™ ×ܬqmf¦¦4 À»[SÑvÆHþv¼V`æ™âÛ6k‘+>ƒ·=…÷ýÓ_ÙÝütšî‚ëè÷Â~XRtž4zì¤@d̺Fel�g[Ší —GÍ5\55£ÄgTÇôª±Éª %<�³C�oªßÈ¥·å’Þì©u¹å�|…`|HŒ@±Sí÷㎡»ó+Çp8­}ËÉ-еß"sØì ·Ï` µðíÿ>`·\–µú¨ ÁiÑ<>l½Vµ'{Nfö�½òuö×ó¨PЉµ§o0ï¯oJ´÷m·¥–úQäí �^púùí §ûâK/aøË…ëk­7}gpþƒ,7vœË ÷ b ÷ïú>+ÜQy¾¨¾]ïüÑÏ"&«)®3ËU”w½ ;àÍ­¥+ð×jCàÏ~^ÿ|(_ü8›6ãžOŸ™<iuûÑ~ÚøVã¸ïøR�OãX¬ð¸ÚéðηØú°Äü‡UGEò…cGóßë—hõ�c¸|P…Ÿ7­•LlÏhsk,¯íM_ººêÿì$…÷€rµÜ¢@¢8úyù]¡·§Áˆ/ºü»PDYíœÃ«!ûyý~¼qåÅÝžaOðGÍ~Ý^Qùáý„~ÜÏÊ^ç®}áÃÄÊ÷–aÐΔ0»2ñ‹�öëé²#',…5ëhaè«Ñy̬ý3ªØýà¨;íÅÏð"=€9hK<†Sq8?¡ä”økjÛ×ý úä'‚bÕŽN+ÓNF�)ÒËk ú½ÓóÀ_<‡ÏÏ"ºþÅIþ1­@±: ]X›óaÕJåûÓÁñ'ðñ†¨ã¤!o¹±ù….ÏG^>‹™Çs™�|“x1è7ðä„È-¯åôº³=â‡Õúô9Pº®aÍç'=Y*8jQ{ÿW?ãB¡s¥ ?/Žç¤ñ”íÐvâe¿ Fm£S(˜6¿Ûqà0Ž£Â±AíÙ7ȵ—ª¼.åYÒh8ZÜã�žd�GáN½…’ôH2 éuqý; �ŒûiêT"É?¢^÷újö©…k÷•nF=û_Í I~h.ºkdã’p›Èy^¼çúíõ;%˜Mþ�|_µt\<©l#’¿ãe8U_ôRû�Æí¯·ÿydÀ OJ /Ç^¯ õ¥éoÃ<NX!ËëÿY©Òñ¢f/iR5Ú!»y1dŠ¥gD“rr/c»ÄG(ûh>¨s\šˆç¥§–SËð :ï síÊà™º5ÿsGï2Aþ�­Â|ˆ3g¦§9¨TïV=åéԦƢŠ*7´º®žñ@PoÓÔ¢�$ºyþí‘[Œñn‰¶�¨ÈséxmD›Ð³<Ä3vçø19þJ¦ƒòL_ ÈùN�SL ýÜV [Р±›êñ!ŸgRÙÙEdUýKé5C’%DAž›ÝtÜNaÂýûC°1–ã2ú4ã»?b’Æglq³’ߣ[g俈iýR S˜·!C4º†;ÞÆ†{ôÙpÖ鿨Þy8ŒiÔ0Ê¿8µÆwéø�‚Í“št6«EŒ{^6>’ªG¥óçÛs7‹YOpŠ$þ¥—íŠóZóQŸî‘Gò‰¾H*¨W_è™ÜfØDâ³ ÏN ‰(ê\¡ž�<¡ÔŽ’Î¥¿‡GíÓ¼™dv©tfƒ)«Ð'•/]-¨„©�û²hÀ#nâ¦ÈŒÛi…»ÀLKs8± BgZ;Iž°õïˆÒŸw "?n¨ñùφ›ÍÔh¤u¬$ë蓪øŽD·Yíf‹HÛûãÅÍ”´ñÚéÃ+uj¸mí·HÅM±Ÿ_ó3[ÝGÀ³Xn@ËÅÅzú+•[ ¡üÔ±òÚ7(¹º\‚†—¿>, ÷@\Þrxýþ•´T*6§wôévRökÛ} 2í²F0Þ{h„#ç[yÕñO¿/ž” ˆ@¾8�öà‡ žÝ"ږ˦„ä^{pä9sP.ºä^ô?ƒNÿÆ)Ï·×½ÑüG¡@ãä`\ÿúµ?Ÿ^-26Ê&oƒŸÖ�ÿ±?Ÿ×?öëb|5%¾¶q}, ß9ɺílY^ÌýFk�¾IÞ¦‹&c)˵³;jÇÀÍ-÷¤Ï±ar5ݯê`\ï /l—jk5!—])–3Œœ«e΋´ëĦ¼jN±BxA˜Oû nÝ\p˜�¯Ê[@åƒ;vð;¿BŽé×i‡S~,¤;†…ìÓÞ Jà³à$îd¸À Òê-áH+N6ä^Ñ-°¤€·ÿŸueOR!-Ä¢!¤ÿÚí-2rÝ€ûkß}䨫‡ Ḵ‘'DHOSÞBjözØÚœ�hÝöŒ7<'˺¤0ض@gî�7~B¤!‹â»çþÎ"h ÌsãÓý5ü6Yd·‘Òð°™–CiUdŒoÖ«ž®=#«`Á.n^`£yý8+?¼hÄyÛ½¦ƒñOn\Ü<ÎÞG%…ÅCÜN߸™þ4¸Ž�>á.:áó+ôoeDI¨MÉÏ«»êyÕPË…U¿Ï�%´¯9î8}&�Â�ꎹ´Þ3&[YOš4w^’þóe‹äü»©žµ”»Äv*)äÑÜ ì£úb}�¸ÐÆJ&uéT%Gÿb¾N¾S6Íâ̪4å@3ü •çó[ý”€í@ßÚißkŸ[Ï— v®”µ'Æ"aàz÷ÈZÙrˆÅHO㇦ ü¼Îš»¨ú#^i»b§Q—¢z÷tÑŃåÞû±�ƒ°•~»k„]4Ôé‚qcÝ-X½:Êÿ×ê·þî«ÊúiJ¹s+o &îÏȉ¼Þ[Ïܶ úwϽ™f9.ÚFGïÀÑ5õ´²†dÎ8¶ñDjßš�Zˆ‹ìž°§E¿Ðy }]lCDÌöeÉþŠ ÑzZ9¡“G�HÕûË Zö†÷¡“ŽF…4� or/4b_2Ôaa êN¨M¿¹¨ö¬ÑÕá ~] (b9;o€…œ�2Ô¬ƒY} L”�>Š€ç¬•VÐc9óÏg�矈œ:Ïæ–“ÔþN7Õ7÷«æ„<ãTûÛô µ¦ê¼€†_ÍÜ!5§¥4¼< ˆêBžHóDDxî|æ¨b±lŒÜlRbÈ)»>¨ªÿfÞ:žß)‡¢¤‹ÛCmýËÅCãX.?Á)ňôÜNMnQÚÔüqŠ~G‹„†?k‘M@ütrr#îÀ ä@›Ý)ç‡úsœúô÷Éåïܧˬ9l;tC�\pìëý£ç«¶IÀ§­<�›p˸=ÛÉüù÷<�s­VýE-:Ñžy»þýÏzluŸéä? ‡?íTiÒûH­¨§ÏoÍÒ>#òufÍ ¹¦ˆVËQk‘ÅuæØéë<Œž=bÚìšâü1 A5u:Ñ_¯xí�§1lûpå‘>T›õõŸÖ9t àí4¼ëuyÑ›¿ñ¥ÂŸ�‰ìݨ:,ë÷Þ� |ùŽÈÿÒúÜÊǪ†ázâζz³¼à”Þ3æå2ôBBGKpùþk¹ª?3Ý"?š^·÷‘íß®zÿý&�7­6)‚Ñ9~ñ�œñÏ£'À™r~Æž7m€‹4ÊÁ‹ø>(Û¨ ZÜ:µgÞ2Žf£þöcPº.0a¿øãÇR9Ðõþ:|Å�¡ �ºâio¿MêÚu6Íå±£N ™aôêå{ä8ŸÈ›†%¾™ôåè–I&þ^Â!Ã!:Ôp ¨w°ó[væÁC�ìŒf¢CæO£?GC+Hǃì`}•Qá“ÌkäP•Ãf­¾Ç%×a3Îrú~8vdÆGpÓš±×_캊t®ÑP‰òpªAôsKì¦Hçá(çU.Ÿë¸ýõxíú´‘kU)m 5æË“ºÎµëÜM]ÐÏ^¿vü¤Q�aÿÃÓGÿfïU¡Äލ¿r]»vCÑé2?£Óò/�Lï|3s°ir¤s´%zqÿ´ÎÖÕñÚ/Gû*­i¬CQ_Ѧ™9ÅKcðãà8?Þ®UÁ“eÀ¢”¸4ñ#çʵ+ö4óvÔhötZÛ§:_+¶ôhäàaˆDLäirí@V�¦Ç¼ìPïjtþJpÐ1ým7Mí‰×÷Ùw‰ 鈓žÒü 1kã䡹qìïeyrô×µ—&sÝ ±"Š‘€ ­á<Çßês…éŸrÖ#þobíúX¢½ªÏÍ&x8côC òßñU¥\e�¼-”ˆÒôpí6¦7|Ÿâô,hïÄÚÞ;’øµ’ø"«R ¸6að=Á²ÖÍ}¬ý䊪 HoÔJ‰}Åæ€¢¨æªÖGxø„‚ØUý%J&´G»D”úòÿUiæÖŇ'ïlPšmÐÎtœ*€Ñ$úUæ ²¿˜lêbQÓû�°L."˜¦ÆÄ•½ Úžõ¶�½>÷W1wž„Ç6ÜڷŲ ß øpº9ÁvkþÝÃë ?Ÿm,âphø´¶L³y;4iQ;Œ�™O±]À€kî Í)û)Ö•~ž¹Â›æ>rý)}D¦ªe˵¶*íäV³œxvzsͪzojÛ/ÿ¹Ï´å¶Úîòc8±œž+üƒø†Ýæî»v<Àwüh§—YD^¬Û©ÙÞ›óåÈÎî A§“Ò£çö·€þ³´Ütã½�yž1‚u}îhØiš8Ýxþ«ì¼¿\ÏaÌŒ/$äTzŒ…-—ðT’NJõfÍaŠ€¹ÏQ�O«›„ˆ9ärÛýN�¬¤§×m·ŽxˆÆ>·Ói‹Ó5uaÆÍçŠH˜‰[n©ZcžÊ¬fc^]�¯ë=ÓÁf.ÃM?Z§ÎOó)tši`zËrÆMèÀrÂÍÈ y*JÈ�7µŸóc̰b‘hIî/Ð_tÚû;›¯€`ËCåû>Y Ä|ÿAŒ#û„S¢9C€ã l2áÐh;ÿ¬E_ºOБÈÅã„SîOkgf(ÐM�Ÿ¡gï¢r5×’Q•£ã-ÓïšS‘w–n¸ Áç$ê}娇mÁnBˆS1{®æ=¾Ðf|œ½?A¬.™d}=¡±¬ûb¹£&n@÷ñ±çönMôÔÜÝ%Q>ÝÚ¯ˆØ|½ëûÅÿEúEËÛ5E$&Ús^~ö1WêhBÜ“Ùthûq†¿g€Õ¬}n� Æt:×_ ívbûKeô_†˜Юýäq==uEäÕ–KÖ¿Z¶!j[ûàíï þ ¹-WëB°ë•<Ű˜'ˆ@¾á”Þ Þ',•íùU;úx/ƒíÿóCãìç•Gï_�wä²~vúûËYióøPF_‘«^ÅTç[¿Qxê—möôrr!Aú¢x¼ÃŒ½MT7õüt�1¯_2NoþX·9Çx³?¬¢gÅ/fzÊ”0ÉøÒdûÿIÇ0/v­Ï÷M?á†_ß•~gû" vì>�Ç�Cü²®ä磦j‡?ÊkgDö½ßqúöUß�ÏЃ�Iõ‚¥(ŸGœÏò‘š¯à]ËQ8�0çy S¶G&JÏ·‡F ÿ¶Ó†¹=ßñý…ˆP|€³ä])Òxâz�&ËÕD±�ApÀÄcm�…â‚“Ç$qÐÑ¢ÕÓ ³zÀfÄ!©z“&ÇáñG¼Î; 6&ßÄ Dþ;]=)éñáÜÑà`|3sRèú=1q×u¬Üª|YÜ|‹Dš6ñÄtÅÓ3ÌßQ¿éº#�O†5ôT_úqøåO¯/_|Mƒã·ýÉt†cÕ7‡¡õrÆ‘Ÿ„¾Kkk:@¾Ck9Fð7>’Ø^ºêØ€ qu:z±óý™z·x¹F Ýçf®�’:f‚¿Ž¹Í…í‘Åð01bü�²b,võ =wk�ˆŠð,Üd„G柡:P: ÅÆb4†ÑLr6–§—±c±‘ƒÂ_\ï <ŸÊÓª•‡Yç°±3;^ä'x�i;ŒÐÍC;jN-Gg¶ÝM5É.Tküìe$3‡…ÓE%+(ò�ß ÖéC÷Ÿ—ÿÐ툿ºmf$-ìÿÍb´1�™iåÔXÒþŸôˆ:DÜo_ë j¼IcZWÄÀÛ�§�µÇ~¶ÆO¾QF¾ t¾AI@sþ=N-êF‘³ý½XÕþÓséÁSó›GõGXy?¼=ÀÄ=Ôr®ÌoxXµ}ƒ™æs¿´¯…¢K5RåÕ¦™<±ÃÕEÊ š7ˆž”©OK™0’·:?Õ‡nÃz?ˆ[ÒµŽO3]í7;<¿JW2 MüÉÁôþÅ!pé6ž÷z©oZÉèY¥T…Õ¢¼¤éAI@Ž€»êÝê«Òñø*( 0Í7d"j~¢Á÷ÌÚóõÈýï#{©ú”}rW©©ôh×âÐã3”¡š£ÚdžÆ¥RÓñùaqþ'UxÈ&³õ»ª>05¼üW„5§"gߦõ§ìãéÑÐçì‹ û·=–Nè8>­«ªÌÒ&¾â2,±?v£Ï}Öô-ÏÁ9¹ü¢È×ÚyÃ…»G+ú×ÜÌ®ò߯ôXh"cqÎpƒ›ÃÔwô�Nƒ®+‘“E<÷´1V ÑDX»¡4;að]GüMâ<ócŸ½BçœyÉ3N-ÿ¸ENfzâèXçB5ñˆp…(ö~¡_¶’È)8�seò"¢_uæîÝàÔLét®ë©ÃLôÄ`Õ$äleËÙú­¢ƒñ±J3"Šål2YZ4WN''ƒT'Ç" Vn¼*A+Öu‚,רåDìäß"Q¾ùXI“ÂÌvZì9ÖÛ# 6�wŽ”GË¢�¶_+’¸Ì|�j‘-eöRÈDú­b/|�¼¡˜_€#ù¥EHÖ\•nQÉŸê]ùmú§¶Ÿ>d8æÊÓDýf O¢§š¯rL"5ë„Ô…3ä´r±Õ…7ÅÓ^ZÈquv§îOÖ)¶Ã©§ç!Bÿ3r¶2ôÊ‚\Æ&_l¬QOéÄs‹žKŠÄì”4»)çbrפ¾Ø;>bäXfë7é:© Pœ1�IýÝ;Toüþ@®ªóÙr\iŸ§ø0ÓÈ5ޔܷ X1ÔÙNUµCÉ—p¬iÍQ;aþJxãhõ&äÒ\žš±«ÒKžè_Ðî‚/îh¹ $å„Âvj²tíw4bæÝÓ½-§Ï ­ó´ZÉä\=»��?‹µ,V. ×Rãþ‚ãœ_íKØóÇܾ´Ñ)Â2pÅÚÒá­ðôâ4ðêáÞvm¹g$| Òð„8C{Y`ÓÅ=ŸÐ|q>•HS4°·º9½‡ØU>5]ô.ÖŽ†ƒ²ù¾3rgÒü&%™Ð¹ÔÖ¹^/O¾hreû¢fÏv:­§wAêRCt¾MaBÚçäÚƒ™«ymsú¡&¦>®gµqä:¼ê)1ÈA©|0Ù"ƳŒeÒøöÄ% þUOiù[,‡¢ÞßSå}âùq`¯ "Žx…}D=öl˜IDµ ' á ·à“:ŸÍ6^ßWðäö¯A"Cè¡lOßáè¼Ýõý®¸=Bþ¿ô®|Ús»}ò©1¾³9Y·¶ñFc¥>•¶…‘w]Öàÿ?Ðõù¢pDŠýã¬}½?@ëUª[K‹ Ì©ñ½®Ìmv=^s{Cþ‰z²6ƒZ#¢'øo7ãWË ;Ãb¶Jëì øå�¹æ°ÂöÚr§8îDÿ̇–qÿŠï‘>Ô±º¿ñÅÕÿŽ/e~¿Ã¿=q`I3C™.¦_ìµd¹jý Nå%û2é_Xä Å´Bq|6¦¼¶_?èï•4ÙwÌËzkÇ·Kp¬ˆÙž‹åáHëÚ6ÏiD‘ë2躪ž®‰¨ÛrÉD�Ûù 9ÒŠ2†E­i«ÂT#�ê|Ü}Iõ 3QzW-¢ï y:mÔêä>2Ýìwôt¢¦ ¢c+ó™Ÿ×Ýa âÑýhåJ<áÚ!Ô"禶“~ΚGròå ]»<,…ž´p2‡öü¬.·¿bÔÉMU>N†)ާö“ï_{ÚmÖæKh0wvíŒpU+Í'À8Ák=äÃ:…J±Ä/_/|®2â}‹B…Qå®AÏ'Ž™ƒÓ·ç‹b”#?õ!cLJ6çFC¯#" Õ¶Í�–XŸÔ2á&­éwD3wf¸G í¯“‹è“}ÑI� j/¤èZ|?]ljómt’<·‡B;$ŸÔÙû«½\² &GâL>�Œc:['ÿ’åXlî¢Äe�Ö—_ÏÐ?þ„ôóA%>|z@ßïÏøÐô�ïk£‘šiÏœ�TeèñŠ0ì6Ø9Ȧø j»¿[ä`B‚iðŽu(ƒ¶µ}“½ü+íºžã`#[;ðŸ æÏZwвoø]?‚{s:*Ãt<¾¿Úïà>Qp‘»2£7;YôTŒã¶É?§±è‡;&nM䨟»1‘ ‘a >‘…½È³ç/‰*u䆓�ý ³!uN톿ÝE§ú„:÷ú™êõø MÔqÉ66µ5¨•Šât}ývQB‹¯º©â’šHÆ¡ÓÒ�Ñi`Є$hÑZ¡ÒÐ8Cªiç®ÛÄŒüõ?s÷`8�™±0À‰ŸYï#Æq//FûzYAÝ ÄÁ�®§ö×¥£±»•ŠEAZnoïCG�€uìÓ�­ê_7Ó¶iaã¬ý£ÎÄ”_á*ÚÄG‘w6Žb!ÏpÄ•¡¨§ÍºÑAÉŠë:7¼Ë·FX|Ô:í¤H‚‘Üx5�1ñ/WšÛêsËU�æ¤;¶\“j@¯¡YTÞ5'çö4ñi%qÔ1b¹gˉqjÍp!Í¿b;ÇH®Vs³Щ ¢dB:Ù)ÖZµ,Ç¢Y7ˆl˜î��žß§ ÎX=®�hè™­–ãõä³q G·}µSÔ±9%‚â´_þq=}ÖÞ-ô_Ùô_'÷ÜŽ¹335ïÌ¿CÅfIïððöøŒÈ¼eÒœÆË]OÓžÏw'SÅõW«æ=nË~Ñ-"BÕ·8#·êãò¨ív07Õ[„œ«âư?7=c!c–ä ÉÝçõ¤ó¶>¦J/æÐŸúÃN'Upk—±ž‡õæ>ˆO©»¿ëË“åÂña¥•ÿ¨‚È�I¨S�ûmeôb‘Z˜ûÀV—io&SÓƒÜ>³²ñÊÙrYj®®uj¹´¼|�Esu.°cËC{¼œ�c,ù ¼À^ž×ŠKü1û€Võ0¿A{•wÔ›Ó¢iÇx`ÆÙô˜òËíªøŸßOJJÐ}Áfã ür‹(Þs9oîÛEq^|+À‹T�4Ü·6gÃÃåªcèéº�'Û‡@z½ýD”™±æv úXíÇ+ÈQ5�Z>³½cKz5uoc•y­'LЌӡ—s‰/j‰D˜œŠ…åêÙsV Ö0hÅ{„/¼,R´æÞ›õ´×ÇÚ>ø¬oâ{¾«ô lo÷öŒ�É¥úµZ±å<4¿AÇuFíb¡±PjuAn¢ 7ìçyÖñ?ŠvT^pÊæûÍN‘U‚^Þâæô‚ÈËýõkûN{Þr�6:(�%Æù%E#°k*n¡ëê,ª´¹*0�SsȇE5.N~òº}zƒq…¿arñ]Eï�ŠêÓÅÚÍí„�Ír�{ÏÒŽl_ú1ÞgöHú“Tûº�gÅûÊ4E €OdÕ…À锸¬z3^6Z{Â0®-g»Ú-}¾¥2ÜõÓªu&¼{¬ÁˆýÂkã�WôçæZrÿ´å8T¾øm_˜‘“Y¡êWv¹ýœ^ÝÊ)1ïšUâ7×z�¸UP ‘ÿbBåÉ Î4˜°€ ð~,Õµ©nŽçÓ3^Ë×߰דt4ÊÓä—,'í ¹K¯�%¦PT¼œžûqUýµ�îÇÏæg”¦G=mª,ûy,�­ô9C¯?Ü{s¥m ¹N¨V×K´{LªZ½Wœÿ~±Ho}¶ –‡¶2›Ä<ÔEƒÔ‰)€uç ®NTÞù Î~~)ö Â×É’²ÿÆ…8™BU“í$B=nÏy6²ŠÃ×#Ì�Iò,y”ï“Ý=n4 ý|£ _ ­PÄ÷Œ:/AJ‡o3¤¿ôš(Œ—úqºR£'ÜSèQ_$¤ÄÊÐýB‡#næeuó%Õ‘éa÷süt¶e€©íqe%8ŒÐÁìd–š\pëË÷Ûæ#ÒnÔç("¡m§‘¾‘Pe,ýʯY‰\ÎÃËã黯·³�hS§�8µàÎ ±¼|<­�_k¹#¼¦>µÃm]ëeù‰¨f®mXQlçsEvP$]I³ÐÈŽTñ¨× C'QÕˆDõ_fúB:|wÇ÷ŒLÞÝÃ.’ݺƿÖÔç~“XiÜw•ÂV˜t  ë$>°�po^<¹ºHàJƒ¦ƒCž¾ãƒÂѤøqzÚBOò„tœÞàUn‰U{óÏtlßûª¾“˜ƒ‡¾²G†-B@¨†q2ZSê籎�Çø¤.Ç¢˜e×Ñ`„rÿä\,´>C–õþo#‡¿›u?õÅôWíNÜ_ÈÿÁßÃ’�ÜÆ©ÙƒCÆâƒéìÄ_¢¾ SBÓÙ‹! 2à 77Ô}x û%ñ‹ø¹=TZûõ¡Z‘—^Q%ˆÍüóQµPØýKhßÜwµd}Šö/ܧ|8K™Lyˆ“‹ÉûЦÍñEM3Së·1ùûuÁ®2¡ï ùÿ8�‘«âÉ s\q¢*s‡€µJ2)Ý¿ÄÜéa±q)�"9z™ò1Ýy˜1zµ;Z�›£Pé_åÁO5Ù­¯¬]ãçNå|ÁÔ#dl›— Ü@B#ôèû0Ø#\òý,²Ùçר²~VŒGòO�޹�¤–š|e ø+�£~~Í„4pB=mùÈ^FBîw~Ð?à þõÿõûMwN§‹Ë-�ð 8 ^ Ökì´þÖ�éò¢‘8{ÄàVí:Gà{çŸm±ƒJ÷Á©|^ñÙµ�ÒªK¢ö“„ãÂT“´ÌSßçvù†ï÷åý8ñá¦}»‚\wûÊzzaóãžÞt ¶¼#Rck°UµÏEG¸äþü"•i•„«<´[DÔÙNO½¢r®YäMÂÓÆ*—ŸÚÕãÔ£„Ÿ3"Ì.vÖá8*8õËŽ»áÉøJs®é©xìs~qçIT è7ãTU™°Õ7[d–Jé�´�ë"rå‘…oÈ1ùñL.ew°ê~†]ˆš)ŠZÀéÊ[²:Ò61¡¿ÛI÷Å"�»­è–Í»\ný�‰²b=(þ$𩿨�Ç/ÐíL�3€U6$¥áÇ Ö‰sXæËnÖy½}DКÎü³Öd0J³z˜ªî”Nó|ø¢*é�ЧS O~‰bò�Ù%×@n2!C¾�¶däòÛrûUeCƒ5àtÒñÈÝ"ž#/ð ¹Ç–ãÈãfäø¹Îƒß,1߯Ú?r\ЬhÞó¥6_”OVäª WìtgÛR‡hXΙù?ÉûÇÝÿ¬Èq8•{•#=ÂDxÞªÿ ‡kÉajŽ;䚬Vè—÷�ýöt}Qœg…++Q`�íX·}âî‘.ì�¯MŽ,—âÞéçpÆŸýóTžó‹öµ¾kΧB.2ÙÉ?ÏWà÷1н�FùäwäÊ9ÓA�ý°Ós-‚cjŸð)‚€\8tÄE#¤ez4xN¿f„Ö‡ÊÏtÒSÊ "ø\({p~x�ƒT#g<_ûßvŒðZzÔz�-“ê…‰ÖŽ–®QUèöð@$ÚÉ· µÈh9èÚúߊ�Ú8ÕS9!7HvV#·IÙAŒñ rœN¶uïiÑ—l¢5ã »–ûªÁëæHkq³c¾�ahfË¡sÆ«ÕRÆ/S‹þûª˜ÎK|©„—ÆNßâ‹€;rù‚ÞEævh‡ˆFËm[ë´Ó©÷ÈÌÄæŒH–ÅrUZª½˜ˆ€=)ZŽ·=òóï‘•~“†"a(2dô[Š›‡;rz_-ÔÉÁØþ˜;yÚNkß#{V…m§æDè̈à´Sy0¯Ùmöý ËN ²ZR9ý/ Ü©àì7ècW‹4·œÒ6Þ3"jטcóHÆNå“lj+ŸV{.I–„ꩤRs úŠFóí9ð9á”ÉQ.1Ï0샕/ïèïl6ôÙr‰î§D#—VÍñ}rú€F†ËE5/v*üEùÙràP hVDà—_Ú�¹&ïWÀÿ룄ç ôÏ™T^šٿæ´HDA;÷aTËíF®ºê¿úâdÓû㯢 Ü?Aç?aŸ‡ïƒNv~W>;áË�Búe×<é€VäB¶œ£Æo?ðöëõ!’R®+ùå8#ËîÆ|Âú`eï[|à·�ô+TOQ•Ý/dº<”÷sîúb�›8¤ÇÁõ"û67¯æŒFOí=Nk^©9áÁþÎeJj“b‘w¼×¼BϘ‘)ʵݷëWR"½;¾!z.•Ušzë¼ !WÑÄU*�Û�sËñ»]/Ó3Ì:0UßÚn@¼&;3ANóë@€ùùϹžø@„瑎÷eÂõ³t[[D°êËëÅ¢Uõ>ÜpzÇ¢ô„ã”/èw‹ØÛÍ=Q(ôˆåÀ~D¿Ï^××.÷*ävë¯Uñ¹""ñ¶pû8„Z÷Ë>�?'ÑE…hôbÈé~Ì ­�-qzàGš­“ŠçÌÒ·Š‹Z_‡†|=Z”"¦Nú�ÓÙݳ&‡øgúP¤‰Ý+ñ3—ð›DÝK]ðžÀ.ÓcP¦m:\ÚÙt°\}NøÂ9 š­ÖOxÔê®�™óÍšØX²Õö@;ŒxÁáQá°Ó âj»þl6äyñ0eD_Œ±�/ŽJJÕÚÁ60£+Qfòb®ý¿ò¿ÔyL Õp�â'ÂÕÁà¯Hsú¹ŠúPO*k7ô·ûÌÃ&rcÄëBÌ¿õaFÊZÚîa„Øð3:Š£ëª×–C%ë“Aq8µ¿Y⪎¯6Ôq¾©íÂf4¤C¢�áËø¯÷@Ì\Z^[“ÿ˜ð­²ë@yª²â³ÑEŽî¿�;éã†|¼.„sPA~µù˜C†—RÉçô)�È.ÔÃÿÃ+éZó€±ss_K˜Oÿ×_…àIð ­}µ‚.š/É4èedßLW Y:Ò›&ƒ¦­¶÷`ü¿=>}ñ_v¤ÎÜSNtÒç:tõÅ�¶¸öˆAç±…âys5SÀÔñy0ÿ ÀH’²/d÷ލRù¹Aªã—t$ &èîÇtTÂÒ@§ô¾’ûð} ô=ùÛÒªU’:¼­]æšgóÄŽ.ÃÊyî?yiÉ¡þ~U$²çÓ9®¿ý?ÿ�½Ù¼åNûÕú–9ëpznùõgãÞN�ÕÜ{ó�WŽW,QÞˆ¼†åÓëWÿÆý“Ãð¹pV*nõjŠˆ×‡Äç­3ÇÈù¡É-ø}uÅœæ /Ë ·G$åîYwö·rþ—ö÷ñêú±ŠÛ™qš;�·Óü6Ð/˜´ˆž6{~×%ëGÑH±óÿ®¹ ×Ûoà6…q¶,r‘"Øá�‘ç6yÓHþ­+Úb§7ÝÝ©q;-,Ò9û�Ë�ÊèÃb¹ˆNi¾‡K ¡jÏÍJfz�¦½F /êv|!v ºO^ž›ï¶Js,Æ`+ÆYsÞq�,é¢ýßaÛ)¢üîChÍNÊ'´EÚœT™põ¬kË…a9l:qJŸý±V¨ãà0NýÙNgª ÎY0ZÒHÃÙrPÝpZëÆ×YÞ^µáb|¡[/]TI—¦Í‡Îø�Ä"8%›'� ¦[]�çéý}‡!¯/ûÜÛi“eΟ/_èÖ™˜ãwý—%Ìer3Ï‘5¸cñ]ŽoºƒDo8mù®{ìl¹p.-WV›†M� ‚t-�-§õE�Á|‡#ÑFã»·ÝÝ}ü{Cœþk{ŽÆÞÅt¦æª^Ãhµ‘…¶ÈÄ%c¯UnmwÅx ¶ò'�p;—؉eÊ;³µ°•ÓBý§�ÀÎTÅþ�mR‡ÓþóÑàù"�O^‘ì¦ÒrŸþŠÙœ´”Jëo=ÃØ‰JÏ‹f�AbŠ6öÃ"g�Ò"±åŒóÃ>ì¾Óï¾Ë ç4Ô™�×,òzʺ>]&q[ ¹ÙVúN ÈÕ¿è[,—i¶³ÿæ‡ ðtÞ#ö¶È„¡«ìƒÈ&È�E¼@[|^+ë©°_Œsùшò-ÑkÏ1–øÖ†ãÌù úyy¬”'Æ"|W9r,r²®©Zî.Øõóªã*ÈÅ»EXìðnvÚµ¶Ÿ×¦÷ÏÕdÀØB·Ü[Õ2v¹ß–½Ù|¶L5ut£¹Vp*`¹ÌÖã€÷Íü¢Ý&wˆt�敺jÍŸðº�Zi¹]»b9|f òßë¨ï„M[1ñš§Ñ'‚NþkNOÐOÓ)jK»¬�æ‰_=Qvwo-Ì"êMΤC)ø5Òl‘w�B šÀ;ÚË„{õd¯`j'rê¢MÁ¼l9l{]Öð²H$ËIµäþcº~’|$[ª9öêá´ò”ž†Ìý¡÷_0¾ƒhŸæS[}¬<Ô|dkª4ÙÊŒˆ‘u‘°P�ÜUܤý”xe½µºˆ\°DhЖ>¢9±HBâK rr½Þ"„õ®úh:� !ÐKÆÁü¸*á§ôp™¹§Ïp¬-e©Žz`‘èßÙüX®:¾*}55w7UYDNq¹#<ª¾önÕ ¬³Rú´ª>¸@�ïçƒy ƒ†Œã}ƯÙb�&z÷²GÔ^7që à·*;Ðö&ŸW•—uQi^?y|X‡�êèò ´lPÁGYuÞ.EççvÒœ­3"K—)û˜Šé�¢w;?Æ£6Šúó_P� i ü0©@‡ úxQCÿö¢Šç×£(Å«Xºå=yLXOCövçêÏÈÙÜ»“F޽"ÂÝRw¹W|šùÈ�šÉ.`f#7Lº�~×Uh¤°¬�E”#E>ÝlÞæEH=Û?/çö~·ËôÀ/Òë ‘tÓG©¯Ý[1³n‡Sg¹ûñ¦1p?ã”wè%ËY{¾§È;¼&œñz~ó©Å…Z$ð�áFÉ€ˆ½9öÏE'•o¹NïK¯‡·ò/äRüç[§B¹‚þ¶¬óàh·'Ãlgãr¼JÍõ/·k{Éö/-¹qðÒý¯Š_¬£Q[¾¶dMQ#³SJNÕÐÜrÿaYÙ9,Þê&ÔÙ=¦Ç)ãûÝÆç;s¸%.t¿ýøëu‚mu:Üä ܨµ«ÿÑ1=2hÓ@iÁ¶ï,"÷8vxð“8Ãv©Ïo™ÇŽ 'N¬èð¨mÞú0*�F]Éw18˜[N²ÐõŸ§šã�º èıÕÌS÷[(­úTð;oy7Ûž°õCä)xJòÿsÞGjâ’%Ï75§IÝ—(êudL”óé8No¿mþœÎb÷Ããà¡x­Î^åˆ~úŸ‡äc,z-³¢�غ²Ð$àíéäñu—�ï�ßìVœÏÄx4´±‡Ô_²!ø-¹M' ‰A…6`OÕ`Ö9AÎ’üSÌÅ3lç§q¤ÐÇO¿xd ÇdŒÓâŸ<“4¡‘ÔØ“ªS|·�m¢nî%µQÔ¤ÉK½Û¢¦Ó3º¡`QP®�oëïÕ~„²”1G¸~Ò o‹R‹¬sMOEÙ{>ë_•<‚/‹÷‘(’4Ô¡,ÿ4hÄ}[r9q«üþÝñ9¾Ê|ø¿@«!ÏLiŒÍ•Ç8h$BcÅ1¬½¬VûIOVÉ .­ï›ã`à«,Øæ­çl«ÎÀÒW$¥Ñ(çjnoZÛ$2¨ZŒ=Hˆ:ÝR«²‹¨5Û{\†¬>´ÑójÇ*e�ùŒ.?A.¿éWCÈæ“ýøœVöŠØ"‡N¡:•7òÚ•ÉQ§[¨àý´!U¿Q?Fžn§ î‘‹E¶Xóô‰ %ñª‘•:¿ÜB(F°À�"ù‹žžç õUC|×éeo3}(þm÷ |EéÂ8eµ< úH¹AŒv�¬)“žÊ9O/ÝTíôxS½Ä¿¯†wwêÎ8¦«¼bªšŽRX8ÍiÒÈ–í4æàÿU1ŠÆZZ'ÚŸÁ”Þ�4\öÁõ²÷¸ËCoí×�1!G¥¬§Ô>ŽQF9ñ>[?„æ‚°«°õ³Ów^t RÄQ׿ 'átv]oXªÏ6úí;tv y DEÏ•©êZqfšêio¬‡�n|´�â¼õwU9`D™Þ:“}ª5”yGÃágQvºœíئÔc5êE¬’»œ¡·Þ¡ÿΚ#ñhÔ2iNÄ-t­ÊèÈû˜�’`VšÍcË%>)†þ ¼6ÀÅîõÑN;%ï£ }2ûiÎpµ;¦�ÔŠåDn=ÆV䄈£ý¢9?ÛYDÚš�_ÓnPíÓÎëiÑË]ùoš¤á:¦ñÿŠ\ªÓ ?;ò‰R]‹ô0;û°ãî 7Ÿ[oÇ |Uœ^w¸ÕÐtýŠ\Ÿ§9&[,È9wFdî >÷Ó«72d�ÁŽƒœŽ±S=³ÑaŽ&ºMÐÿEZ.èä2¤»nš:¾Ç)­°×!:Æ{ÓªØéƒÝâž�¾Z’?dð&ἕ}Fޝ‡%S²St ^Ò¹ rmžq.eVý¹<#èa¡@ÅÉËv ú]ï*ïð—f‹L¦ä"qú�ŸÙ©³«ê½§Ûj—nSÈpð»LÔàL«?ÍwÃŽ )TÕ²Îù¹FñeG85ÖþœNÝÜÛ�~¬tfäˆ{lzUpЬ¸ñrÔUÍæ·—èP¼íõ·K»ßþ‰sº«]s{NŠßíÃN;ÖZzª«Tý¦A³¦úõŸ^î�üûª§ö2—÷£ñãYWý{¹�õïrÿœ§8¦›FƬo:Oç‡ÎÓ:5Ó›#§·nûäV•K”/s;)ÿ\—qNʉuÞ–š³1É)ÐRu�øÖàlãÁ s)𳀺gq¢Âªß ôO½Âìç³�lÇwô!A²©õº�ãºîMõ¾�.NÈÝ6�äš¶Sß¡�î­ÏíwÚ\¥Aq}˜š~;)„«üäðrÕÑæ îñiâêÿÐ�Ÿd¸reØæw8ÿßOÎÎàzZôï»Z†ëiÞÿòEý—7Ü¿³}É"tü~&¤�îüùZ¬uî »º -rØx¥pÃ}¿:=¸`Rïã­›þrlþߊç« ¼ü‹³‹ o;½Z8‰¾'øSÒ÷a"G*ã Ê‚~Ϥr¶¾ÃOz+‘ß]�p?ƒѻ“§êã´³_n,›H²Gµ»…ܵ뒤©W-t4¥»�0}lzß~#CæöHG³Ôãó‚œ|3ôÞÏ÷Æîiçq1ÙÊjèüªþýã½´ ótvˆx\ÎoŒvàvÍDÝcˆÅ^ð!�  p²³«¾Ó40(†òDIÅ3}á«QÇ4Úa!/üþE*tÒf£;ÕÌê³k7BÈ„“S»/ Œt�•ˆ»ÆË—„ ÷øÙ_O-sP<ÜZG,qœ5ã@™#þÒWÿzæRÉŽùq¥ºyNõ&u¥Ã×õõl~Ââ#�énσÔI£©áäŸåù9*ùå?Ô?Ó?oc�ü|æ‡â¦Ã�Í9ÍG²¥¦ƒâ ø°9¡\}ºÆ†Ïx(Ò¦ÿ£Vö<)‘3²Ä윬v¯Ví`QO«_*¨+žâUúØVìÝHÂ&Ü•F ‡MW§Ò$æÊ@vƒ9èý)ßgƒ`ô¬¸¹…+sb%.¶±¹ñôo<âsšx^t…Ý¿¾‘�œ+²D5Tw+Û‚f[Nô Ôh4ËEFòŸìKŽVH®û Z2žö—WW!ôïÆ.xø-›gЛüÛ�ÿŸiÖMBÜdô'زóW››m²[{¢ Oñ¬ÞÓ&²K£­$:¤RÕ^ ÝÀ˜ÌºiÚ úT%˦§Â €4>¤'†ŽÚ‚d£EbÒïõoГÔ^™¨¯_±pòß‘†‡äj886 r.ŽÔ¸g$ȼëAy|ˆƘP°þ»WxnSÐèžÆ&Ž{ÔHéÔt'F®~­;z@QìFtöu»´6ž�’•Õ¸ðnEíïÄ_ÿ;eû¯ÿþß%XN½ú·Å:B~÷Æï¬0"yäœ"}¬|3¯�e$Àß˶C½-äáô&þ7"dþá"»Üˆ§?Þ÷¿å÷�8ÈWäøû8Çv¶C¶_Ö-‘Iþ¡íx‰4¨ýÙ)akÄáŒ%ÜGLöÀØÊ“û5ÒÁ�³FR쑎)Þ޵ʣŒég¹Œì”d䀛�;MNØ¢­‘8'êœ}Çx®ÅÍ7§6ƒ{¯ýg«Pø¦tGRþ©°eÕH>þS÷\øŽ\OrÁ�V ’˜üë/÷Ûûó鬑yåãOÐJ{M ¿�Ó8L"›gÔ>þ/™ýx]±Ü|EO¥éµöv8Íû½€¯DÄ wÀŠ�¬Iæ_v2·E¬ítµÈÇù™§¦ |ÿ5—�îxì8ì;f�¯¿(+öf#œÒL.yUOq5Ü;ªiēԜ>1'_T@M¿ŒHP…šé�Zßñø$�½ß—Ž}›Áٞ༶Z&×§GÔ9nlû­ [órq<|P6'tÑÍI«z}oµÍs0Ñ ÛCí RÍÒôSsl²;�¯Ëƒ³‘ñª¹<ËíN‡B€qx�mFÄßò)G-˜z{“ƵۄPEÛN“æzY0¢šŽQŧxÈ•Âð#ª“ÍJ3½éQ;MÚ>5yÕú'ÖÓÐ~¸14|ý~`~ºÃ¬r@§Þ��üU¨îè]u¼?íÜ÷�* øñ4©žZÁÃz˜#GÄwùgå*L^CIZIvRYÚwKÍÔ×± Š — Ÿ¡,ÄÆ":ŠfQœÃiƒÀt7�º£¿Úê¸~ŠÓÓ„ÜiÄPW=nIü©ÅÁ3�"œò=µŒÜ­­ìðLˆ„˜ìKŒ§%ò@?;ùÏ>ûösÑ:'ѵǥtºÞÏ-!"\^¶p;ÕÜ—¿¼ó_ú’Úü3!ÏNeGÐð~@3æ=sµ½{ Ì©´›~œE›Z�ãUü Ky½èÃÛCCºÎH¶øŽm3%A·Þ0_3Ôg9ô_ è/„| ³+™·RÒü¼9éM£ë îå::½Ýé�àÞDD=ÐoA:¨Ùð@}3Ó²P¯Ó˜Â¿Ùh§šz<¼ìœaú°ç¸/ÈJ÷5t!r<¶ýŠe†žÇãäø¼-Q� r9á}à±ÎÊ׎~ªBÛf�Áò‹ÙW¼¿~ ²rÂÛ}Ç÷Ào^r"Ç·m¡Lüdù†ZMs_o?‹8ÝÜð©¯#Eò4Ö·G¥ÀÏÞµ?ÿ¾='¾NDÖÎeQ[µ�½“�5Òm—Ê�J@M‰/tyëCŸúü}›~À<\¢;aÀ èhÍ~b^ß–©ù+"QQ²uè»§ã½ìST±ŸXÍÉJ9»Ó'©”°ø“~uléDÍïÙ>dØíÿY× îö†z˶èUáfsŠ{[¤ðvùû¢2þâu¾ëßÚßWåÛˉ‘ òˆ1âC²ª®óø@}ÖÇûBç<�6à“—›>»\y“1@¸S5Rø¹|éëÍÒô)·9+$4Ed¹`bÙà|Q8öº!îôhrpò¸ƒ¾IèúgYeX™Ìy¨yª°4¹_UŽ3 \GÚ*û¸xòKò¨]ó Ù³\‰eÄ?#:r*ã3ã|N”sðŸÔÕñýXßÏ‘Žøûqdò@Ëg.ðou‚¸ÝÏóÂDa;ú¤11Ì÷xI†ë4O0h¬=Â=?n žß?ÇF� Ý88áÄŽ/ÈIÛ~™�ðν `šLñ Ép\¼Jæg¡Æ�ÏúÂ5jÆæ·ãóñ8Zg~¬(ð¡œUÇÅÝ©}dÙ°A&Å^…uÄiºª»ªôŠÅFÃY·Uu'A ¼ª±zÖ¬á˜hŸøÕ;Ä”Ç$Š'»E‘îíÌ�À‰už)¿"±ûŒuB$˜uþ1äÔž§¨w@ê�€½ù8n'ßQYž)ºÙ€S0tÖ¶‹'8T¬Ì,Uú[ó Žÿá1˜‚#|’½j/Ù± ùžR1�þéú¥'0üXxUàIÞiŸ*cI8íÑ4Ä=™ÐNáÔɳi³?û_"‰|‹;C‡L©ûnÀD4òs]îX/<ë"¢Âó#^ÕiW[r4Ï–ÿÖ¶^…po s©D–áà &ó#ÿr>òa$ê¨ù¡¸áaUÕ䵉9ô™=‘%ÝKö#,&å_†íGæ?«ßñØ\ôŒc#>ò9u�™ÈñÆÈv aêç:UéÞÓ�ä‘Á9Õ'ãvÏ_ŠÙ2ö0¾¤ ¢þò™èñõž±pv[+Lþ&qM*åyÅ t¶=>#WçÒÙ‚c…Þ·Ecv_Wkã@CË�.²Î4|�3ÈéVЉY&|îg�K€칄¾$ø£Yã_yê“°Ó•†«Óe�þõxÙ’”Aà`“†|–hÌ®S|×ɱŽÇ ÏÞoáÝÞà:ñ¯{w’Ô»tSÓtq–,n< ¯åIµ|¿9v�e Ÿ»Î¸ÑÇ»±™M›� ã’äDêû%˜ge4ûìÊß©ÏtÈFr×AR¢«·�AÈþH_æ÷É£ú™µêýü�ÿPMý@dÖA6RlDˆ�' ;t'ädZÞ3èø�Ó€qz°åþÛvâwGiF®µÕEÊ™ä×Óx¹<¼†�¸ò¶“·'g¨eÆIŒcad:8Ž©"ÊôÔ2ÙLVܨ·pÛ£».-óYñ([.AÙvNß`€Lñ@=}Vøñ…¤ uÑvr;%‰¾ô|�ðûË7D^þž¿–`ß©§É6Þ媿�þÿÃ^Ú¶ D#墧9òòU¿Ør­}Îû#žî¼_Ó¶ã�ÓA¯+õÄÝùÞù’ÒX2‘P&Ó~ØqØsÂlã@NÄÛuoÃow­VìX¡¸(*ˆœR~=кu¨�ç¦Uá—ùƒº’Ñ <Îc>Á0Oõô<‹G^ŸÈNC¼ýà’N‹ªWØyµˆ¶º´ÅÐCäô.ûhä"ý܊æ'á9i±-:LÑŠ�êg§ÿx(œ_ç‹¶Sò�3äR½0úà~0µx“�æD?¥y³Ümˆü§~ökƒß.-·ÛõMïþà÷ ¾l¼‹Ný]#”çå÷þ÷qýSõä \÷�lªr"�¿á§E‰µ¢ÇpNÓÀ¿o ã<‡1FÆ3hm§.K/6{]¦‘I¢§–)Tg¶&ä8ʹ̾WTÞv<-uª9¬ôb“+t*Òò©—î­3É|£Š�Â;#¢“Loi$Ñ=Ù?I¶ðùPìë�X�4áÃ:Oe^+Ëíþà <ŒO¹ÃTY.Ôy� Õ˜–ýßæÑN.§œ«´ûQÇ꣕*UÑ8CÍéiÃbç®A~&„Ô:¸Á¦oïw ·æ¼jÄß ¹•fFDb—Ê„žƒãJO¸¿ ¢nB®Ÿõdž‹Žc�ñ‰“h¤� w™�þÉÑ,&¼·0”�·Ü=\_(~×/Òàm�mz$ÍA–2 ÃŽ7u…Qœz*gÚô^Ck²üÇüþaÉÞÖ’÷ Bv¾¢¡}á÷€~)_Ëiîõü� †ö Zâ"Âð×Ni�gÕÛ;e•FŠã˜Ãã&<‹F/Ó ¼¯-7O—³òÁúàꢨÁ¤Ø™Ã!«‹¦� ‹b¬ãªýl‘žÛ­ŽÏ¼\âøfDœY%zÀ=AŽ=;Ý=Ÿk)�ó^µ©ÓÉ9"ƒÁ”N ]ü‚íÖbAÄÛyý–ûd)'¹Œ{<Ϫ@î8Ó°j¤Ÿ?X$9ì+ó¼/+"zæ™Ç ׳ì8œ–8? øøtð¡�Õ.Ô[RÉ—Øçá_ÂéŤ¯!»Z™U¶·SÒwVµH£±Ú Ÿë3 ·ÚíkèÌ|ÿ7ÊæíîóLÆÌ�ç7ðá¿,×"°±CfW´yXjb¨�ä¼ãK©õì¿Ðh¤¬zn€[LµÂ�ÎvZ÷‚ÜŸ¹+Ÿ|�m†E.ªQ\AÇÕ™÷úÈ?IíK©Ì�Íÿm…a˜,òÚâKÛ+Ú"r¼.ˆv¾àXþ}$`øº5§6W‡ÁÝuèŸXqz¸ÉQy rí|�¡bþ ~X&u¬ÿ+"Õ>&'gÛ|"·ûiRÿ¹,ªç-%ÈMÝ0ººÓr“è…â—p<¢“�¢¾¸ñò–CWgùÇ¢t¼èë5Ý/4,#•äÇ»E8o8œ˜Ã«ý3¼ë½QðÑ»?�À‹é†-Ь¢âBܲ·þ±ú…HÆü\‘djËëK|f«_–viÚ'PòŽHºæ–à3Ò x^±€¡î,Óð…�ÛÝ3JÜ‘à„Õw4؉ëà졉K¤Üßó0|›Ê%¾¯Á•A_Gìq>,|ÜÖ+dO¿33j—ñÑ:ÿ–�4ä1͵áñ`ë[ÅÓø‹v^˲—æA?w†“‘µ’WOd8ݸåûüÐ#S»¯ct"0†åá%ºT9“p_äHuÊ=#á—s%]³˜ä (fkµ¶�àYß‹ÿ3Æš$uŸaTñ—È ¶øAN·›AíSŒÀJ<A›RqššãŽ&•ôµoq4`à(µ½±kO£ßž�AU&òÑCL\E'³T�!Q—+-Oˆp¯‡xTyÀY„ë5«å¼U¾q~ÂI­´ I¦itŸSrÀèò2(÷"çéűn«@•©Çâõ\bq2ûÏô·ŠÏcX{õóéëf=“uŸƒ1"{$Ö€i¥C.M³é�ÓÌBYawÌNœ9M¢,weDבo‚ÛÂiXò5¸£X)=É´Å+Äà/ùqJ%@—�ô€hˆ‡ué;ýûåØòÊÿTv˜ª͆úkð<ÈsßWW¹Ú éû¡ž7F¼âÛxQóbXÅRâ0hä+¸qt¾DÂK\»f[iL#/ÿûÈJGï jÜ›h%;ÞšÁ™Nt ΃6GÏ�LJçzú{žyŒæ�†ì›¬a½ ÞÜûÂ�¾]ªYI7Glžù:ÊSïÔGô=”$M;Ñj¾ÕqÂ9øm׿qUÏ$�Ç ð}ÇTB=CH?Öp-ᯇ‘O µÙµâÄI! hnLƒ?­õ‹gNõùpnãë¿�ò”:¹ªœâøÚîøËãæü§rϦ�çòõÝÂ_<Ù É2ñC#÷Û�‡‰Ò| ¬È‘¥§Ó¦qNm%Dnñ&>GéD´}‹Î~>·÷«òÙ •„ªÀkäÜZ¤ŽkQ’Ëd‘%Žž»ýD¤ôr7§Æèv�ú9Ýç3ÝÞO¯ÞÝ¥ûŠœ‚“S¿Û�üŠbþ"™&äêÞ":6Ð "-fD�Eòù¨Hr¬Ì·a×K»�,-hÀà43(6íDNÎ#Á"rïЄÃÄ«8Û‡ŒRªõS·vU=|™5„®Ô‘és‹ÈyAë]Ür²“3ñ“[1Ãþ�‰:3ÂÛô>ÔA{!e£wä“Úû�{h%½Ú 'Á.Ÿaj§T.£Sr ju»FSy‚Ó³bü�Éô»ˆ‚_èx^ª*…" <)üïb¯‡˜—:º¬Ò©” î ~š-Ç$üéðÝåwëõOwnCÿŠŒçw4rü`¹ÄpÿýC¿½àËè°©în¦¡S3—6ï5 ÙÉdm.-Òð�×HEíGçÇj¿ØÑgªæ“û¾>¯'ó¹M?Ãß¿bÀ+dò¹ƒ?fj @šSUsƒc‘l´FR õ(á�á*s”åßÝó rïMì^ÌÎÃîÌ÷BÒ“…2�,’·ò»$Ù¶ê€qÃkþ‹ÿÒÕ+úa]ñ:b‘Ôr�£oŸœd4w� ‹¸Ã)¶ûУ7à{zŒB�šÄÇCžwõ†Â¼éø™Ó=â;_UY¬w¯×·|0&"4)âº÷{¿¦‹ü¢Õ¾d ±¾-öaÀØ‘»ÚeËymÅ"ÅÓ‡su‘µ,ã 7 ú_ÏvæÀ>‚0œh˜Ã"DL*Jõ^͹•¹˜»¾W†KœnöeP§«G† ÑѤ¤êXùWï‚\¢Ž3—8œÍAp44šmÝ•Ñòq½UÍ¢ƒö–Gõª¸qÒtm¼ w=âtqíìï¾HÂñ^§oÓ=  à{)2÷HáfxäÚuå .ù9ç—†�ÍdÊð-häÅ 9·¿‚x�ÏŒ«&”®m5r’àZßG2J8'gžý]í°;0ŠÌÕ>%”¬<ÁM1Bô ø~§·þâ' ¦¬�êû—ƒ,æÖo¤†:5ÂîYõ\Arò”Ì–§ÈàUËêù©!ìÿ8×±µ§v�"8ZõÔ†B[uœ\}Ó56¥œë®eô×t7¥±:†`ëŸk³’ºÝi/ø�ÞYþ%=cñË·‹Œ`sèaX¥ntpDc`ÿB³ÝlA×-̇¨üOß-Ú«Œ`ûn\m›¿¡Ž?è\¾ÄAúÎ_GÀìåÛéæCry^òØ P瀟à<ØøyR¹¡O�tãòœ;9ñp3µ<îVŽ12•æõ {ßaÀ«¡Ó!\ÏKœìØóbèr¸NÌW%ñ©îÙGŽlîˆiFf’žñÊ ú±õ#Â(_ÉHÿÖT}ÂÑÿçDKޏIî,Ýo(²C‚�¥c�äúÏ·C¹�0tZ0‘D˜ÀÔ?ž†wŸƒIÊÝ�žQBãYi²×èSON”FsÏqŽ<ìüß Z¬�éUUblÅC߀É�K˜:7fæÄÏ¡C"¸’ø‘¨³Ÿòeç9¸1[e�Ìg XñLá6EðþØÁÎp¹áí_D"D Úÿ<qXß?¼}§ÍÞÕÎ÷Vsʵ_ý×_S£‰4ztTv¼Q}üª¼niÂi�æ }´ ³±>—–¤KùÓAÉ¿Õe?f_U¸ðÜÑC¡øZ|ÐØæ¾ÓalÖÏiHC0~GˆrĹ�A[¿4àq¦¤³²Š—÷Léñ’ŠŸË¿¤†~àÙ=–ñ5ÿú�ÿ.•³6A³ÓSPqz×ȃå¼ì‹3Yî€Ùç`U™îBê ÓS)ÆÇãvÊäžËŒ·\Wº„-/qH[Äá¶`;ÅÛG໯ý(Ý L8¾eËõõ¼XΫþDQÝbxìã–»‹$ú¼_ŠFÒM“%™8:Möœý¦øÙJ­[yßéˆSÖ¦7ÌÇï)�Kâ'$;Á§›”ýGýÈ/€%.nÏåCsö±E ^ÑàævüwЙÝ8J^�”C!B§ÖyD¶\�z3Ÿßè°lM�ã&lnð-2êtwp·šˆpzà£üÓÚãMO4ª ãõe¯{úKe¦Ìï­}]€l°¦Ó/50Es›ÉYéÀ÷ÒæÇ½4ó95_~*üÕ膜…õ´J ²à”ëóÑþÊíz06ÇßÏV,òbNÇ2Y#…æôœ~ wÝï …È v‘\Ò2#w"ÎÁ«õï@÷G2M�ýº” %µZ‡º³ôé¶_lK{­õC­z¬�ç¸"óCdð±ÄÈ—�ï÷yÆi­§°ü‚Ág5ÈWùyV�ƒ­vÙ²BìzàJ‰u;%xÿþuS@ËåEÁ´�æ8ã´«‚\]e¾A?êi´šKrË­v§u°ê©Áeš(š1Èí "ün£«I¶:‚n׿õ9S£Þdìô2"Éü¤P€[N h9;ÏÃ<é�œ�R4vÌt^ rLñM‚©cœr—'D4byk"k®y�—S]†p=½«Þª‘Ó8ÝСiØRˆ~²H1<·a“EÈà´Óób§xjßånIš|Û ø1Ø{¡ÔdT©½;õ,¾,´ÏË÷{¦Z'‹ºÓ¾õ½C:ZVδ¡[°Ã«È¤Ô²H-ñ6¾£=ktABh^ÔNÛ¡ìÕì`�}\{.¡,½®,âÌIÀH¼ A$SpUö‹UoÚéärÚ³Çiä ÔúÔXq}àôeËÉ35sµ×¿#—á%ER¢?J‘„¶³-Hn³�®+P oCkäöWT:=Tî—§�Ÿ!/÷™h@ç\f luüS±rºÆxsAN³“å´ãcç¨Cl÷ˆEÙr©ÝW÷˜±•ÏÁ¥ÛÅó)I›Wû8{àΗæ7˜�ºö…ÁI*H£ûdúÒ𩞢¯ÓòïÒ@ü}ÍüIçwZ,"Q+OÈí§î"WÁd?Ø­ër&^gçsÔCèéñPšÎȉj™žç$Ëæ‘œ�uG$L@Øé™©žÎß ÂS`–£…ø1Pºç~¯‹rÚù "çyºrÌ µ˜Ur-£{¾ßÙNCžQÜ ÿýÜpƒ‰€v2ó±"gÆü^V�—y.×–)Õr�²�h“öýA9©ln9ƒ«íóR0ûé£Û­å�/`HížEÀ‰¨^œ¡w,r� p�í_oª_›Ò5›¾×®úÔ/Q{]‚,•bt­ÅýâTäßwõ'MK}-ÓÖ’Ü”+`ê¯Á{M(c; Ðkø\gœ~úPay±SÈ£cø÷9°ˆ>‹¨~Ìqþo8&õ•4ùœ¼é8ÿ†[x.ŽÎF§¤“zÁý´SŠÇô‡ècUÿñº�ËQ6”=üÏëõ¤r==4Âóù¸h2C” žÖ[ñ)Ïcö|Ãt;i=ùôK7 Þ8Ä×òÀ©²‘æÎ4ëÜt :ø»‚!N‹Ë™íºXà>Ÿ’ÁÎ.öî—¨· ½ëEkÞp:ðvÑrÞ O.Éž r2"ó„ú¾+<Þ^ë¹ÃSë¨^¹£Õ!rökuö…Þ§'vŸ\ÿgÈÁ_Rd·ýü¹.²½š,¯Jÿ;rè_'ºøã¢x¾ ×{Yšu¯…d СÚÖ,(Dë~ ô}‚Ÿ~E$¬§Ý³2ꊣ4a5tÜÝVD¥ÕîÅ/úFùV¥Øiòü¸áã­TÃÖ]r¸ÍžÃ¼wuâ. É7Æ %áÞÚy£a Ð\g* \âÙ„?™¥/dTŸç·2Žx4.vu –Æ©Ÿ\ù †õó±–4ºò 7Ö‘‘¥ˆWë”=˜¦wüMÉp|4U¯ï”ÜÒæ‘©Ž½çD¥ps~#Nµ"� CƒX'¢)N׎ƒÎ 3ï�ÌZP+Òd5<§pæ_Ä× €%0õýÛ"î?¦ìA�@Å2¾[‘6Ì@úªúÜCôÙÙLGJ ÿù1 æ¦±â4À“‡ãøJ�Œò‘süpb"ðlG"ªö·Ÿq•Œ®Ÿ ý•Æ6:磻S¥a@n>½,'$¼¸2��N¸‡8î7$<êPKÞ+¬&„ú2’1:¸'8ú‡¶¬Ó½FKÔÜŒõÂØcU<Žè·=í—ÊÑ`·Û¿þûŸP3‹ æ'o²¤ck¨ ekè4¼-fḹX޼—6�ëø¡;˜eËÁ·ã§9æjûòÿûoÚæò 0º0O}Ü–ÁäoÂþ°ÜkK”¼zZ[M~ Ï¯¸�Cé�³Ò᯶ºäû±€@¹jdÛéÆ}½&¡èï9Óþ8[GZ«ü¥Æ†¨ÑÞsÛŠ•çÓˆ[8ÖÍËàÙQœÒËkƒáa‡—ÂG÷ 'Y4"‚Ï8[S|º4„¸á\°ƒÞ"|N(â•¬í¾£´¡ò�È ;…ó'"—^o±­E°ŠFV–Ýú�>Üê!{…oš©D�Y�I¥�Óöó‚�ú»£硸Ýu¢ ÙÊŸØ+ý?w-įÿ@�x+çî—Ó‘•lFk¦ábz�ª–«pÛYçCw�Ykø†S¼?þÔ¿¶µY>vܧù zk`„½ÁGî¬zúè9 9²,EÜæ€�Â)¾aιȓê˜-0èè_NБ1·ïø{³f‘ L:«ljõ‚HÞùs…Y?[n­Ý‰3}ëâdSÞÁ·/:´à¾côÒÉ5vb-ÇDØøÈ Iâņ—¬À94劇·Avdáæ tw7©îLk„]»/ïíúå1ö„Óéåö—þ=ÅÜ�›}Ù!�[Ä;;´*ÅløÁ"¼ˆÄ;'y`È™"N&Þ50‡'œõdË È ­�+ü¾_Or©ƒÛuv§I£»÷šmܶ³nž†DþÛ=Ù TÅßÏæ {±®SkïY)—Ê�Bâ· #Gë騴E¶(�J¹$k…m¹3™{Þ~"©¦O9íÒõNC'O böTÈ/¦.ع�NTÇMâO3¤±.G– W¥¤Š&_l»Œn·:vÌ#|,ËÙˆwäNÒˆž<¾vÍ]ªÂ‚Ü�ÓÔϹ›«Ué÷˜—Ñ» :>�ˆ`äü™à™¨µ¹hÄÞvŠóöä„ÓÞ\À×DÆFÛË-¸p ±ÕŸé-|ĸ=Xvã±Ùu?�™«M%âô@$ä‘�ìÈßqt"µÿ+r‡ì>ƼQÝÕ?9#TæõÎ| ªv…ß2¯¥É¯GÈ-�KÕ«]Í>:q z cÀ¿ Ng?�=×ß>¡àeDvÚ¼d0y6ìônãózmÅKø¨Í>Ë¥tF' ¾T9/ܹžäÆg©+Wqòàô¤ÑGª*3@°¿•öÝ‚^lô‚_p²H`D¦œÀ_8XS×’S1€rB¤ÐrÓ¾!òÌ>ð<Ü÷ñ÷’ö‰¨÷‰ÚŸƒi«ÿõì Vœò0Þà/ÿFŽèv䄈מ»@ø]æ7l9·ëË9Î�éšõý¤ÖÑ;"ó^ XSGCOýÂúÉ?—¡ÜuKè÷Š£ nçù¦i׌þåâf�cýí'©®_6Ü¡�kê+3·ðïÞq¤Ä¿@BjŽoŒé%¤Î%sŸÊê‰×ôÇ]b©?�ìãþ̵Ãë0½à˜á¿^Z OCûÀã2ዯ"Ý’Ìv2§Õwí×ú-ügkû@Èò~Ø7üI Ö’¤~X€ÍQv¹«ŸgYb½zÏ“ ßQNFp‚ÞiR÷ˆ®¹Nm¥þ˾ŽÈR¹9Î\=8‚c"Õ¡°Un¤D÷ÁxÅáF£ßÔ¼$Ã\ÇyÌ�õw}ú-Ó†ì®=±žòS­ڇŒ÷“6ž[<ïçvY! ÆØEÖ1y ù’ë£\}S¡ÎË̓×fP„²,xB<Ç­?ý*U¨�ô“¡,íqOXe:×þư‹¸@,5n‘%¾R›'‹âPGôèúaŠSítÛ3ÈhbRÃKÚe×ý~ÃÇ�¹ÈÆ\9{ÑSµÇ ÓÕdY"ûxŒ‚l°«'žvšú;*2l¢4h‘×G¢Ú•*ÿøëàÕ*6$‘ïé־ܨí`¡B”¥¦ár¾oêÉðL0upèÃ[éQáúÇÏDèÝô%'ryØcRXy|ÍÚK5_²`ØÜúÍŠúˆƒ®Ê䎀hÐQk×ôå vi³�‘Î>¸.bP”B­ò3÷¥òË ©7Ùß$þ¦{¼"fs‰ý çÂ]SR%ôœeG•øèQ°3ß‚Kqþì“uÏ¿’ýˬcœYélE›æºv4‰úÅÿº9òÝ�p Ô7F&#Ýíx�8¢ _LN§*8þä'm;ù—b›]»�Ö‰¼hëtìq¥ÕU²ÅèîñW¯K²Û“¯H20ÿþºþMåGÉ×߇�¼ÌJŸ«øØ$ðàNÓÒ¦§™{ôË1nuÒèï•ÄPév¸•uEý‘UÚ�:‹âŸ˜Bià˜‰}_t8l—`©ùöH²�¢Æ™ÇMGo§xÎWÝ:«¹edA­mž·œg›"~y¡FD§5juô_é¦õ¬Öüç}¯S~#ÂKÿÓ¿�#òK”Ð< g‘@vª_CýÜ47%3Æ)—¨Íª¤[¤×2û6}š PöS`·r�¸œ�í`ú÷U¼ü¥Ã±Ó5‘CnblÁ€nEô”^zhè*“O5]4¢Šzª·æÔ#ÝâÙ·|0œ–8ýÐP)š”�Ïà§å<žw+5‡à�Seô±-úR¼6ç9¿Ê>® I.�C®¼hNÈéÝø‘ Ø‘Û*·U^JÃgÏݸ�s}?ÞãVù|Þ’NÛq“èI„,Vû¤øNèË�@œ6Ý5G ð¥!³�ßNSÞäÿù±ãêÊ`g“‘ÂA�«ÈP¥N}ÆCêtaÇQxt±!O«âWNwzF› ;˖ˇ'�‘äPUŠÊ¿àÆ]·æÄ"OBèFEu�(ÚôSñ˜^qj8æÙ–-R®€ËŒS|±³Ïïw �‰@å¡ò4�?ãLôI�‚z\à¯x*zÁ±{{n�lƒa—üÞÆÑ»Ác;Ý׌q~h.Âù¬Íó‡Â_^p:5BÔ¹îù˜úÒŒn¨Lº0Ï2ÞaÏ@dŸÛ©�óÚøÑ;SäÐñÞ&rÊÕ©Wì0ߦÐÖ¦aEާùqCÿ§TC‹å{\‘Ô‹�~=#²ÍH³"àìNÁöÑ¡ “\ ø{’àDO¹©9©Si¸ÊwÀ/¦& ?Á…4§ª··ˆQÿƒÈ^k®·«úÅN…y‹á‹c~çb9Œà�!Bú¾êõù¬±'Q9/ŒÈJœîxæÓß"w»°Û? 7ôö{Ýiu™õ4z±g&}ß�ô·EJ SùPoŒwƒøoôDN7Ëí”�yž÷ 7!"° ㎠ËÕÔãâ#i ›�C6T`§'Ðsu©¶Øƒò©ái�KëJcÁ�>ÀáÉ5‚d‚Ÿië"ÖÍ®åEä ~5E6þÚ‡WóœéÿŽ ;»“Ä= àñYgÓLÈ1µ$`¾Œ”WÆ«ö£úâÿ®ìJ�$Çu+@ef-Ýßñíû_ÇžÓ8ÂþÓ]•‹$¸$<�HeµÓS)‰A¬\ ð9ß8í½ž2k‘½©™L�ª›¶aâÆ3äü"_°ƒÜ½3E‰µ\…/§ÖÎ&{§O-5ÛF–l¯ÒP[hz£¸Xj83}�,æ)îA»=y 5ðD+ê G«‹\öc4£eA{ÖïùUëŸ?KgØõ?OKfwõÏó¼vçÛMõëö&C=7pÂøc^­÷Þ×õQAœ1šm÷d§è’ÚÏˤãz‹X¯6CDpÈQ±½3®¾¬ì¦¬Rùt{Q¿Þœ€I¤[ëþÀèºüõпÿxi‘¨Õ4'ÚßMfgø[}�í7˜;H‰ïD ¾áÁ‘n3ê¤T�½äàa¹÷,µžr^z{ç@¬‘Y"#?ìóºÐÁœ%‚5pÝ3ü°i˜Ámå- )ô Ü1ï¸#òåÅá.ɇJû²bš£îÄÈáêŸÛ‡F[$ä>�ÁƒÕY ùn_˜ý¯FÿƲÉ!Š¿ùS€™Ûš$±•$ÞѪ9êQµzœ& ÖÆ7òÉP`ZÝ"”~W%œìó�PžˆFïÊE´úgpsÿ�—4±ý†HßÿÔcl”ƾ^³q\6¾lå7ƒÛš“ԘʞDÄ0k'Œ2ЧrBckáñ`Ç,òå�Y{r ÃÓP\�èŸ_û‘4¾‚zÒÇ‘öZ2Ž2—uªÃuìÞô6ózÏ­Ïpðü´–¹G³¾ räËð ‚›SùÄIüTóá%#A3¼£ðÕç¡Ñ€Kˉ¦cì†c¨Ã4ÖWj°~|€OgW~Kd‚ÿr Zš?ç£&xðîèJC…ëò9Óe`öB=z‚‡¤BN/Ð8ë?Á?t?m"—l¨{/Ê�LtnUÆèçvžº-vO‘·àƒkdÒ8•ðÏu‘³¯¢ÅñŠ©îYμ-(¬µ“ß�ƒZ¨cW˜² <�¶Áç¡Ê¿ðe�7Fž·6÷wóÙ ËÞQZü3T]š-wøQob¾CïèÍ b¦­dÃWûO½`qŽÄ¤(BßOËòs�zNPzÿÔ¾;à}¹zf;Øœž99 �Gv©'SÀÑ˹/sd_…¨s�þsÿŽh ¯(ðlZœM�ïâH—ÃT…¢dÿu4þn)Á¦gu¶€V«­{ n�¶gŒBRúÉ©7†ØÁ䃀yXÄÅ FUŽä/*²^œ³\�ãŒÿÕàØ¤ihÀ¢Ô"¸xÛ‰Ýê Qix/Â[D‘r¿¸FŸy ­ŒÓj;…rùÔ]ùYèŸ.eóÅíìoåÖâúQ¡…?Foú{ú©§÷®¿ï•^Apè·¶'ïÔY™`€Ç_® s~¾î8+Ú"™>v¸ëãGÄÝG䜭Æ~êí¶“¥¹ÌX.‘öÙ‘šû±Üt)[ìØ«´5XÞ~èãëG’xv´µûäÇùpo·ààä‚¢›ÀPëR<;•/çH‚¦�ðÛ"Ë�i?•x§+–ôY‚ŒÚA:GÇØ«\‘„‘ƒ�¾‹¬ÉÖZòKCWe†±µl¹öÆ»_±&ë',׊FCáÚŽ• b£L—ž{;Þ×B¯É´å‚ÛHd§àIʹ—uÙø»®À ‘SغþPk6CïflÉØ–:à-o:}(¾…5÷ÛjŸ³F>Kù¥8È ¹gãó¼×Ü¡ˆX VŽ(z‚;F® Q�k�K3cQÎöh+õ‰S¬ÿ K÷ Ô§iæˆGDØ0r”roì§„;º¼•¸nj�íͳ>_‹Ê#ÈN£ã¤v‘ÄëÍèíh–GD”wŸÃõUf¹ªüD`î[—›Ý?kWyĈèõEaM¿4 •œ-W¶®�`,ç9LDk¹œjäQÔeQ{ Óà0[äÔÚÃÜô’AÏõeÇcšZDGµ‹ K>..ëYJÍtÇKÊÙ½mŸ¾bgÒìrAívtãƒ�âv‡¸Mj/ üк(¿¶SB7Ò-_~•Â[½‚\5ëÝΓäq¿ª;ŽBÕ×WzõS\#Yñ6sÓå ˆ(k$ S83¬½cWmü,=Ì0^À)ÏÛ–y3�4Ä©[ïìˆ5ÙäjwC«ò¬XÈÔ«žòj§n¦rQõ¥Ååa§–Ã-½ Tçþ2ö–ëh¢‰ÂÏB ‹ÁÓP’ëoÅÀr÷ ¹”ðë£ ©Ó~ bb’è_-× Û鯙jÏi|Õê¬K6l@ŽÒëUõá”r:[²û?´´G¶°³ÇTÍ­µá]KA_,µ2š¥E¾Õ>Ãf™9^Üãj~jwu£ôrp(³åd¶¤žšÓ´ÙqÓ·Æ+ó)FØzzìz�±§iÖ³øô@$ÚŒi͋咚Z¤Mã‹vªF†;Èä0½"¤ÄNÏR¡Ó+Þo§ý™›gQ®x‡‹·SDþéøßrM]ŠÊ„E.Þ�|ðeVz®.br»¦ÄGn]--2S‡·B>PSþ “'œmrlšË3é]¾.—Ü¿^¿~Lk×n¢¬9ÕdÏM¸�º‘³Ïæk"^—%ûÒ ?ä8š¨g6M8ƒž`Y`ìÅNa¿ê—^+ÆeR္þ‰M'ѹ ’ùB ’¥¼K4ØäÀû†àUl¾+�>„ ¾ühŒ•£ÞO Ì–�k¹!·ˆn|„ý[ÞVò]·1æ‘�÷)JëŠÜœÓ�ÅÖ%f¿™¿ô¨úèìO˽ºSSOÞîgg1úµÒH4ƒ”Êt:?$+ §8îÏþîíUùóy�~qù?àGÿFŠê©æ¢VzÎ3r8®Šß'æo3Ø}vJS‡3NLN��/·oôÝÁMqì™YÙÅåXéþOäþûý@d<Ç10œÝ—+¼Ø ‘/K´qu>‚ñfgÎÛ:Áw¶ˆc‹(žÜ]ÐQðà~èææ5[¹O|ú@ÄÞ? ¢�¨§ñCcéå ºMc=´ºÅ÷¨îšÖE¢6èUIÚ;g«Þxfõ�òj}ßÃtÙÀ!?«ý6–áhTµäÊÚ�5% ·'!DqÏ` ´Î•ýê.v=áfV+fÆfå8ÂÓh±Ýu¶y—ÄÊ8î .éñüÏå-“dXÎRðšXYvõ+�›# 0²ò{ºÒ‘±0|[Ckë­Er¸Ý•`eyÍW÷̬¿ƒã) @ ñJú'Â3Õ¯2�áÒî¡þ{¹‡*ú"±�€O.6Ðÿ,£y´æñªƒ�ì4G\R�áqèD¤•<¨ç‹Žì�·ÏXh{v{Ož^ú»î¼Úä'Ë#ǶûÜ2Dz£»œñÌ´=�#Îø$ý¯–žIHÔW}ànO=\2^<øí:#ƒb’Í·~?»’¬Ôœ9òLZâ–NøÕ1 }ŸWuæž}¾D´CO®�þð(º^«.ùe±GÝøÎG =×�ŒÖ\Qb±ðìpñ/Ž•²ëˆè áí··/Iå ¸Ð÷ÜF*/îiо4„[ûË‘?OA'Û ]SþÆ·ôLYœéðQ8Ú[îz™J›Š{Þpf:ùÂÔè5�Ç`Î…¢}j@Iÿ$"C Kë\W-¸“^MÝK‡ q[xpMÓ鄇‡0�ù7ú3 Á¾x^é?ûÆÓe8ŒD@(¹—ª^온/êb�äQ§ƒõÙQ›¾ØÙÌõ(Õ 2–eÄ*™ýå(Btl;¸sG4«ÕM’?Wês8sý¿�òÓ>;ÛŒM?$ʲ¢Ôõ-ŒqDÂß·ôÀ›?&⤟|y!ó,Aý%!Oîy`nò�MŒ–aÐßçÏÍSsÿSU:†ë—õëÀ¨8áÿ 9»`÷–ƒ3–¬”˜o×^4¼êW�^P`˜lvö(28^�9H ÙDoØi4u¨Ý¯Ý“¤×®Œ¿ª˜¸û#›Yqûk¤òö;±›ˆˆŽTûÙôr‡Åöú†øÎ¶?:Káü�§z­Ê½]ó¢çÿŽð7º†¾8úÙ½Ç5O[|ÿêÔ|Tà®ïŠgÚòïÿúKÌ<ìÊ„-›5'©ØŒä®¥ µ[;ÿúÿ†!Òå‚•òûÅ‚ÙõÇH’·Æ[¬Ìx�Ä=�=Øñ¿#Bìåªåwjb—¿rAÚ©¾w“tDÌÈuvFäÚ”Û›¢qþŒù&qF¿p êDÝà'™ÕýMa� Zå­)‹õ£Gg|Ðrý±’åU#ábh³nýÞÞ}Üö«׳n>ÛûË=J§%áÀÖ@ù‘„?¯.¹‘æ‰ãéÈöÉåx‚À èÞ¶Ež!§Ù]·®øeà(!³ŠÛC¿ó½÷¹Ñ¦{´0öÛ–ü—Räe$hª�î‰ò'Dä!—^�„ìè¤Ï;hl´Ö'¼‚ä|ݽ)ý—ë?÷Ç…oß[×�wœ¢{AÖ‹ª«%ÑM/‰§©®ŸDÙyw8l9¡?×s}Ê"¤¥í¼E†D I +áôaŠív.Vºœ{¨],´~Yî�·Œ�]y”€ŸQ½iDj9Ÿ{+½×Ã@â‚Ø‡õ ‚ÒrZ¤/"®æ»ÂÝ":tQßèD‰®�q‹l4YÄÛO„B¾qO/Ž·¾¯*‚d;̰ïn’³ÛüËEÝ¡?!Þ²‚ÿ«Ê/Ÿâi–º%Ç-)ˆ÷xÁºç¡Iþ€sF.¸b‘o{ù‰nnä�fb=Á>+ž+vËùx1ÙáØé¥…âNóŠcËä#âÛda±H®½¢æÝ"÷nµ™´£Á™å¦+_þz‹ŽdðmbØ9$M¹¿>ö.LKqäá×¹„æËš;`‚þ[$¯C¿I*¼Ø·]T^ 7‹ôñ6Š¢¸ì‡YZzAnºiu¹w+¡Ds‹n�Ó(Õ‹Ön×ñS¶SwÉEþå\ˆ³ÚOeWlÆÎrM�…çKA®IJ¹qƒÌS7wò< _6]�ê#YU^¹¤P¦TG.Sèn¹EÇwZõ4Èú½LŠÛyRNÎãØøp¿k.ærjåêoäïa¬ïÓ¤vj]zc½Ë5ìÔBzÚú ‘Ú�R¢mÁõ£Î�Òè/†o�ò‘C1]v°IÎÊf¿ÎwÕŽ‡?•‘Ú0�YqÂ)Ê�“Tk�úƒý]i‰vÕSBëXЪ#’Œ¹3Û�]ÙÆU óZOñ�…góxºS˜‡\púú­(AgÄDž(úÅjž�h+^ˆH¦¸˜}BhÖãõy>#¦üfÑ~‰êrÇøäld¢ð'Éé ›Éêú5ÜÐ[„äö«Ê?rK�ì4M„@É)6r‡¼ÜEíñ›yˆ`‡Ÿ_’nvŠ-r7JM5-°Ÿè?€w„ŽýÕžŸ�ûk6ÆQ´­[$Öv½•nø¿Cræ5Óvû{2;k~‘T?ÝM+œ†¼ëÙo'4>sÿùïöþ ·‹ÔÔµ¦�&¿âôS�p¤�ø–tQû8ÕcšÍq¡ÖõóaþÃ'éìÆAÎkŠåÊ“VÔUëù§�1 Ž¥Ð¶”íqÑ©-Zô Ó=ñD÷sà Dõïý¢Ï?ðEÁý~=a<�ñ{µ��‡ÔÉÔ+ìõç£M)ŸêÌ róz®TÓþWòhäßöË^òƒëýv•»Ð¡á´{„ÊúŠõ„«¶|°�‚9î—‘~Ad[yá&*®üŒÆÉ­íýr}9Òv}|j¹7ý@ñk©—"�3ûDø³"*‡;»~š(M…ôÞ"vKm"Ò�ƸÛéòSá§Ã&ªöîwvT�ö´±�ÓòåáÓXãëç©{ù¶åP!‘§áŽmÅXæ‘ü©½…kø„5ƒ+~gÙá;’4„vPKµ:ÃAG¹ë‡ÿk4Œ†®Ùퟄ–CÀµ ‘öK¼ó]²E¢¼«Œêõ«¾÷}ótÌ´êè;(—᪴çƒE¦ö\z|* jt–¬’àfÁñr&B4"GóNùA„›é�-B'´‘ö~TÞð{z ,w 7�û×›h‡êÊà=qÿÌä!ðb  C6Þ†ËÝo´á1,g£ÄëOWDÆ]—n4¾²Læ‚j$(in{%ÍÞ ½ÑŸˆlÒG_—hЩƒiN÷Z•ÛD‘)òóÉÕ¼$âb(ú>J–¡=ÉS’%¦#_Bü\äUm]äO@çÈdÆxúSlX(öåÙex•—Þ�´ö¤áïäß³ð Q: Pl¬ªwfÄè’Á½Ù8"Og h0šEDîö>ô×ÓÞÜ‹{S#ÄÄ÷=õ'ˤg«��ˆ³Æ’·;ÏYÚhÛkÿ íQ¡ì_Ã;êL½WÛöü”÷v0†`’ùñ•ƒû_äÿ<ùs°WßÕy>¦0°ê?§Y”Ê‘iÛÅÁLÓ8’4˜Ó‘ù±F‡ã\Àƒl„ºxwÌ—ßMš>9°ú{„ï‡N牨ۖÀç‚N"x]dKrVñ©c;#ó]@÷Ù��hèÑ /þäz&ÂÖ§:ÔJ6 इýÏN}óûÖ uxT¹'ë0ø@�/¿ê?n}åürh·3í¢ÃÓu Ô&«2àéѰ â1ÈaÕ6tdŠi5¤Ó½^�ÌÇDFÇ÷baA¬Íÿ#‹§jŸj½êOC¶~> “‡dù!,N„Äc©mø~NL ¾ÃHÑ`Øú±k‡]ËÙpì×x�$.j‰ÓêÍúŸ\Õ´–�ïneêß�ò5°A6è\(Ùc÷7/íø¿’:àůòSt-U׎ÍsïW6š¹s:èÏéÝ¡Ý{‚ÇóR†¿ddÿ ÜNŸ_ý¥±'oÿЪŸ¿b©ÇE Ït£(FPwî?Ã0$ö^þ¡÷·¿—R8õª;ÒôŽÓù¨�v¨À ®{$ÒÁóºÿ•;¹g¨Ý­[;Ewf;œ¥Øá*D”Èìd¡‚oþ%åÄZÞþÞÿNן€£‘ULzÚÝ–#¨ÂÝîO7à-2e2Ýif[�(zJVyGn®ÿQÌäü¢ô}…éü@®»Šxy\Þ½°ô‚5¥|êÒóZ4Ò‘öé5‘${²#¦±%²�íö~” Åô¼UÛ’äÚû¼YYí2œ.Uö¿æÙËN¹ýøŒmX;3B3/Î[�”Í46×ïîu§§¼éiÂë"Öü)«Òðk0\ÒÂ#v/·¶ºA">f´yhIšfʧk¿ëñEŒÓ³,wZy}^®?hù]^�³sº¥f,Öá¥x1"Ãdz‹fÅfí”WË•HƒÜOý½_×Ë^ *s#°cvrËÛ9aËt¾Åz†ÐÉŽä<+¦7zº[E}Ï)(àCãÕzÕÜšåLJ ü¶j¹d«¯ƒ–u2¸�s£·‚ÚNl;æ3:PÛ1œ ù\.š>áëÝ¢§”ï§oÏÙ"NÌcÛf äÞsÅé´[äVµMk-⪞ºèhéh[�«p}‡Ý ¢ó§Ù¯Ø §°'øE–N1^Î]iHÔ>·Ó�sD%‡fÖ³â¾ï0ÂÈþ\íqÁiÉÉ`|ù‡×½žœï.¹—ØÒ¯hÎ%F®9×·~ÐNuõ£¶:àqm—‚Èȧ`›ý»àtúôE! �XY'ü+Né³�|Õ#ª‘ Õ–.Ör: 8òú‹~ø`¹G=i6WoÙr-ìà#²U¬_¨¹<4äe:Ïä¶ñ92Ž;%˜z±•ô¬»¼ž �鄈°e©ÄÉÜÁ¹«½EdÚñ–Üéfá¾üëyjò¸›µUc°¦r®Ï²ìw�èô2æÕÂS©õ8nUì´ðÙÐVþͰƒgØÙ{oׅƹ}ߢ+á4aåÃ.Åö€B N¼„!…Ù½QÍðsH7àšÅt(H©ÑO.? ¶Š¶€VD#wîùá^wüÜ` Ç¢”§íÎWíÐ _~(꼟ö¾ëÓQ.#àµÏöa“>(–Û1Ѧ›D™ú#âöñªHžoLýŒ©á&¬ÜšÐ€Å“V}Ã)�˜j¹§l!)³pžÔ~�V‹ì¥ãîäÁOçƒz¡A4ºƒY�cíl¹C{qÝíÝäü€ëÀ„Pĸÿ-2f/ BeÁ<­<"ÔWDpêõ«-+LÔ-– žv™çgØÝG²oï6ŽgjPLp� l¬mY–`Ž÷CksAxK_ÂÊø_eŽ=”Ö™ܘ,k$�þ­H‡É^Û‘àŒ�MªkNõ}«r˜‚wÄ`äÅG/Ë•ä}"ÒºÝ�>4O@N;)j*nqWžž�hĤïÑèg­Û�V 'Ÿ_Þpª‹Zìê$å9J|”Wp¡út¦€úës·>ZTný꤮p@[ùÚl½´¡_’ç͹/ø_V‰6|KÎ Ù*7Ì Ï=þþèÊúìŸ{|½‹åš"éµ»©^¼Ëp�ìT}'ý3kÌß�`EÖXcCí7êKz0zïùô êÿSÿO=~yªŸ§îàþ‰HŒÛþõתEûÄi¸ïØ©ÇN�Ïw·7P°³¾Œ¥p½*Æåe�å†Ï†/3yÓâu)®Ü›[ÖÄqu#:Ù¨n¿—_ºeY~žc»ˆp*¯šËO°£_£×ßûïÓ/œ6øØ ±EͧsŒðâ›F"’Öß'Åéý±Ã]_´�rK9sŒ¶–Œ�Ï�Rl6¤ ^oºsÏç«â]téX_µ÷©Kâ§WD0üPüÖ�×fèÚ;Ô÷,hG>yIu¹ [—nàÇk´<œ´ÆN»›!-Óuü+N1~èé±vºd‡‡áâµp×&Û‰†ecÎ,NÜåldÉ2mFWè ð²nvY¤Õ/=�–/§¾~7$ÛNÕ`¼€Ž[N0V~ï×*ÑKÔªŠ‡üzÓö,Â,"Nc³Ê½"¿šÛ°ŒsÁE0NP­‹mÃÌ*çå„S¿ÿ½ÿ-g�`ä‡FÉO t»GÜkJ"†ªXjäx£˜ó±Ìy´¢=Æé�r.�¡oÞÄ[ðꬿ4kî¯rQ}^oF»ÉÁ kÝô{ß’Úßã´bJòc§/1wUÍæåÍô,MªvgË8ôò®bóEO?|²Ï½&tLƒL¸¾¶Â·|²vZwÞ-rGû—g=kÄ]y¤HÓW$ºbk¬FÈö9¨òî™D¯_Þõ”çåúCÄj)MD¡–{¤æöl�Èë ×Sú`§N°÷É�Us°brqBHæû� iꄜ">syÙq´�L¶œ^ç5Ø&ѤeˆÀÛj$f‘©7èÝ Æ:5Ö÷ÜÓ‚À=B¤X á$ô+;á|Yä^8UÑÆ ©¯oö ÉùöS�·ûOÛ"]È�ò¼ªúB•ÃSÙñ§ ?òñÒ Ä þ, øÅB!n®Í&oUBÂ}´ÛýŒsJ Îw{œôï4OÝIJUãcß”^ír°½°È-Dl­ç'h@Fe¼ÐgÁœvg�´b=}v»ìtßU¸�ØÇYóšäÄ"­j2¿†€¸ŽW]6s=3†‘Ú¾¥Ö™pº÷r²ñ»Ú!Û~Z ¹©Ðü0޳gw}Ü¤Ó Ë­iÝ{ÀŽŸð�н‹ö²ßÚ¹z*­€¯«hÄüé�†YtÁðô½[Üðlÿ „VŽŸ†>îJ/;…¶›Lº®ú¡x¥“ôî?»˜íÙ™-r¦T a²‹×gÏ`ÖWÎNÔ¹�ÉͤzZà7×W-÷ÒçÁl¹ë³“ó-WæYxr›­®L?ŒSa8ÒcK‰e׌äÓàbs?Áî »8Áï-˜Ï¬«ÉY\~| Çè”N¶Bûå~eõo›™æ Óº²À@Š ‰„ñ�è)½Ô,¢Pªoo,—áGQš"â\RYËyÂéé¿@ç—³å.EŽÓsLŽf˜c>?€ú¤½å4.' ^ãŒ*oЇßÈõ¾["Nc›${­çR#:ë‡ÉÁÔñ%Ý"ü¾(ð9| CNNÒ–6zÀŽ^!O?ñAÒãõ~†µOànéþ©óFd´ $ݯ_o€÷É¡_DZ^®J7A[(ëMÀtÜ{ߘ¤F:ÉG›0Ó雄Ï0ùKïæ*¶ ¦ŒV%\½(Õ!£kNß_2¼‹ã©Ì�ot¬âÒ`ÅÜ»ªgpè 90}î*ŠøÀeÕÍìcšUu¶"óÄ£3êè¯è0=>5¦¡ÙÎÃ'F ³›$"=¬#öó�ië.´]5ZÚ鿆[ûTz‰<ð‰þg–Ì‘þ]ÁFSYÒÙ:T1S?O"9*7@Üܽ·hM %ð ó¯O®Q8!·�_¥å:üwò\M”ô‹!BlÐóœ+•jû|D{‰u­­,†ßª?Ç6ë3•õ‘ƒYÚžé”9c-×åŒßpë,Ö @TG„¿[Ç0íYýÍÜÎ0Wémhþ‚®]÷TâpÅÃçî �ÅSzmCÂå”e$+’žJgˆJµ1GWþ“÷M¡K¬=ç¡ÑÏqgòž¸r�Ý’&¹®•wf àKFþ+ÝØ�ÄbæXý£nÐø 4¦¾ð³é¿ø†ÈÑ�0ý#³kÏ´³«ÇãûRè�®ÿû ¤Wö -|IEND®B`‚PKS`›WË÷¬�ÞLÄ©.VolumeIcon.icnsUT MŒeMŒeux öÌý…[Óÿ÷?Ž?6Œ”în¤CBj4Jƒt·Jw³Ñ Ò (Ò�‘PJAºénøâóù|}Þ¿?á·ëÚÅØµûιŸ¼�{œ½²rrÀ¥Ý¯¬xEà­s´†š"&&8Ï”ä´ ü}BÑþœøŒ]ÊÁ+YY�g²²tnζ¯l@$.NgÎyæ‘T´³q!‰T~U<.qL…޶Q%Å—´g)E[2Mƒ“� û=�(´'„êGuòÎÀÎØ(ˆjtšD ìî³ê]Pí3miâßL…Ó°—)g!Ÿ\Ê+´[Lz“*à¢Þ’û?ŸÀzõ2W2ž‘›Ï™<ÉKJÈËHӥǖf=�ôWk6æs÷„+Ž5£ïœFŸÞ¾w÷Ô--FaÊ•qГ¤9|…H-+D7¯pyÀ¾ ={(¾LÍÍ¥oá“¶ÂùU€Šö‘ˆö6Ë´˜Â‰ºÇËÌÝ·|—ØÇT!uŒê\(šü4½v3-~é7«kÜ?q2<ô;Ü:ZgIXnIømêÝ;†/·ozÖÍÃØ¾~AÎ'>lë1fŽóá�½Ëô/ìºì&ÙÖÞ§›�n|}^ªÑþr0•¥ÑÑÍwHòSD¶}³ð‰PRü…O£2IŒ°·¶îefQþÛqU#¼{\*ë†A$ÛÌ{Š. £=?¢üñà›Ó ÃúmM×îÂ9âÍpÝñƹj^¬JF˵å÷Àö&Š{¹DWèÝŒøMâ‰dî’­Ðj¢š’Ž�d¿„eSffýp—Z•¬{ü~x¬üSšMµ\Y<³`¾ùWì½§ú• þ’ÄHìvjMm•T�1­T²èb \›]ß5ÄW×î œ²‰wO^ /áï…Qey†ïônб'ËZgÄ"T晜“¾2ÅüÂws­§Š¶œ›:9–áX¡hÊU0#Ú/óÿ5R?9'±¿NÊ~ő烎üŠ[›�rxUÁ}[ÉqT%ÃÝê_³ý‡@E¼´£t¦ôt sïsi]TÒ•D]D‡Ž’•“mâOqI…ÄHÒt¦_mF\îQ|½b˜-ŸN¾ÒgÝD/Šd™¡}öv!Uê-ñÖZ«›·QúŒ×³‹ºšj¦äÖKÉ.Ï�cs~¯lXï„úýæWm1Õæ-Š­5ò{öý9�R…Ò·¾¼1.œgV¿hÆvæÅ|Z}¸Ð²‘m¿ŸU‰T„¢¨¡ûHGr‰Ô8ÞÉÚÿRŽP²˜í1pâëÎÎ ¥‹ñÿ†ïªDe×ø6¯Ý“±q£^%ç.óe,q…;]ÆS¡Ï~ô#¾°@¿i;ÒÝ’Ýl׸©fž}íÔ‰5Á O%Æ•'�Aª¢¾ÕʸGþÐUîÓu| -é<çª:öc:^@9!�7f˜ò@Y´”]§4é½\“2Éž ?Rg ¼¾>?„›�·f9=ÉztÐþçb¾²b{œ·fë¾¢|Ò�æÒCj¸úÔ-E<„ýg¶ªªÀã‡×Pù €<¼=<)€¿p>øï€�|”ÿ{ý÷ÁÆ›Þ0à™œô ÐNF>•¢'w€ßúÞ4§Q=󧇳GÄ<-ƒKËÁÄä›;[,8,†‡)!ôq•yc@”5á‚´0®ƒ T:8“ž®l¬#/š‰Q×Tu¹‡çÄ» ½¹' û,sb£s£?ô~Íîmm•?=ý]z¥–c8­" …‚èé a<<° ìÿ_ÿÙÄÎ/.>­|x7\ŽNP¹Î‰‘_®ôÿ>·D‹¾Zl%‡£¹P]¤MÑ%>¹Ë}|È*ÐßxxÈÏ4z¶¥-Ä*àl[Í´ö«éaÔ}>æ4µ“ßsèI,ð,9É8d囦ÃÍÞ¶5%ëîæÑô}�«ðÀPïFüÇ)ªYŽ; ^.Õá±ÓÅ„ŠóÐóÐu¯‰(�þ-Öº�òØ­ä -X>xü��ÍÅ—˜/Ü]©ìx\dPØo–5×d1az  ~‹¬ Ò‰'‹ogU¸fð3¯Ü,Áq¢¨<{&kËZï°Ç$ç.C™÷1<Ëe–L¿‘ÆÕ¹Û.–V¼w*ŒúuqZ:û8”Æ�7êzÊÈ;¼dˆ5aëú¼«—/‡+»ç’Hªqƒ-þN þ:A�“ÊÙÀÚÛ‚÷ÕD•²ÑªggHÔ~–϶&ràlh±ITÜ{%!ƒ¦ÓUÇvÖ˜v[IVІ?È4Æ÷—ñ_0Àam›#nƒ‰ïäƒîûÉ7Fjïjñ.½y%#Ô+q ­Ô?³Cì‹éœð#ô,¬�¨·ËjYb�ãºjkÓä¸5�Y ]»‰ç^}m¤¾MÄKd;á�•ÞÈ.#ÞÌà§\cvÓ^�S9ýåMq†(±Ý>vTz 1H¼Þg{ô(~Nˆn(@åÉziP¥H;mðU[¨Êâ¿, ±CŒ #�ÏaDvËQ4�"Ø–½Ã±üä å+fAÓøç¢´AìPéò€ÔÙšÅlÒ”yoêkž=ïèf©ŸÇ9ûý °�F5ÍM q¡ÄÌ–‘g! Éôaò�$®|ï%\q8a¼*‹Æ—[mñ@ÂØPÚÌ/3¤“ >ÃɈȶ^ XM×+-¿KfñÊYžÓ —ñ†_ÑÃ>ZH\ÛôÓœc«Loã^SÍú5>ï°[¹ „9ÌŒ¼-›—'º�¶\[ȘœúúÍTåuáñ3¥¿"ZäÚÓâÃÝå†ÚÊvãX £³3›Ü¯!;Ôlí²Å?�®q|#�µ{cá× ÛÊĉˆaµÜµ¯‰xÌÍù^1ÀÈkv¼^±¥£Uë`ÏÂ%þ¬Aí\¦÷¼ÎAö91óÛ(#Rñ!î{ѹ7“–X ÊÇ7"�AÒÃSÌJ ¿.PPšc¤h�-uÞÈÞE<ôrF9¸/ 9ý:D¼m�X=wiõÊœÀž†Gˆ‰Â-¤aaRK±ÀÇÎÉ€j¬½QRz =Ⱥ½¾ ¾F{8€G‡²Tɰ”0óŠ5.d‘/èÖ|öšï×e>{b›EHN…Ba)îÏáo²(!;ëÆÇâ˜~#2$•6bð\„\ÿ5™ˆs§ F¤&žq¸;ŠOG}˜=¸õ+ÊŠyÀň,² ¯ä øuìk“›ÓAqCøŸ»7a´Óg-ƒú.‰ý²|¢ûK�—Á·Ÿb’Uõ`Ÿ3 ä{Ç.¯£É{|¾;‹NMQ( »mYl�ÄÌ£¾‡Ë²_ìÒI.„W�yª”߬ãÅïÞ^ZÒ»$`‡|Ëßôÿ‚õZõKuÙÀ81HðbÌ{è±Ý£‘¦p ’÷sVF? €@q‚ P»(iÊYeê�^Þ 0¾�‚§‡ÒÑH»âøâéz€D?ÙKÀ\>¥Rª™ül4Ót¢zÚˆfvG˜R!ø%zEÝyíV²RÜuèQœ(iŽª"½†$€«ôõ]j#¡€gÀ³¯4ÓýúÂR7‰¢öûvq´n¸d”•¬U9iÿ¼„¦ ÉfëR ù ;Ì2m6*©0du�Å"ù6‡Çˆ Y@z ÜX¿Á�u7ÞïµX9¬kÜ3¤a�$ vŸ/“ÿZÂ÷YëÕcžø|©x…{ö—Sïg±XöUüȰ’�÷“-ˆz/8¼Q ~q‘ƒ†²ñV£ >–µâ‚üüUcÕ°8ãÔvW»IМ¹®±Î=\<‡©½Úƒ�å¤Ó€Ì°žçáÛä·Cóƒ?ÒˆýêyyR°=CqëJÖ çœv‰Ý—W’ßþéúȤ½<2aûÓ£S F©D¯­Û=ªOK>šYïM0ì½dB[L{¨>‹&2zLJ׃Süúà¹YØé @a•,9×Býk!í*ÉkZÖeãe¥#ý—·ÍùQ“í\·ªi÷ÏÛíp D×y V}ÔxS¾�€M†mÞésÃy²jÖnÙ`o'3á׃L¾dz¦iÀÍ~}óÜÐÅ“˜2n�à×F�èLˆ÷’KeôÚ³ìP¢5+ˆö�Ø3‡´è�¶�‡äs;…°µ¡ä`„s‡Ð»pyl×\Üæ¡;ìëúÛ1°Ó$óU2^½/yPçë~¥r\ðKãÒâøŸ)q{±9^4«¬Ëç¬�qþ¦µr<Ýñ¼_©·ü»Òs½GÆú)ðòe?Ð"oð©À®_õVfŠÍ]‚üúœš(¤YmC¯Úèò½] ùU•òŒ�“{�vv]»O_Íìý¬íI�ݨ÷ì“b»©‘R¬2mÉ–ÎõˆÉh@ Ã�7²¨#duBq¡2k’ žÎb…Ýñ¼+Aï¯/'ƒ¯zµᣚP"hócÛß¡dy Iú qª¾=¼bׇïŸä¾q½1CÝ:þݰ¹\ÃCrzò¾�!0äC¢(x¤.žáŽMX9:Ü5£È _\Xd¼€Škå}]— ä÷ôˆV;nÁÛ�˜¡Ò�À!#JÕÄ&¼ï¸ƒðî´–H’ïw¶±Nk*^æ:Õ(Ï­ üZº#5ËaFÆÝKÒOy¦×v ˆ°x8"ë¾ê˜;H¨z6ƒuñö—QH‘† „ו×AZ‘’Wß"íSî�^�²>ƒ˜£ú™ÕÆ*åúÑåGÔÒ¬—÷´y !rõdÅvwÈí¥¨1/_$Jú]Ÿìº/™F‘ß8µxŸ�‡Á ð��phÁ“(=‚Fz°ê#Ù÷«Å¨97�jc6e4f»KüD�Æ?§*n€zÑvÙL^Ý—Ž0´Cc¯uJ‹è²"Ï›Nü�ZAfNétià“Š,b²Õ†Y² Ýxñ ûe›ÿÈYàO©P{*šM²owÍñ2t�±FÛð²å]:D„c§Ã݈mNÕø~¾÷‰LãsÚo ø)7"íóAèOr^à�6ˆ�AíÓ={eSéKk~ÉO¤È'SŽ�¾Ð”˜ÿ$PæÞp¿M|Ó�ë¢$ÜŸT“°éÎî:ݰR=5`JÛ¿tÕŽÛ%Ä J7òÓw e­€æÊ —°ùòÈ¡rƉZÂZF8›¨ôº�OØW Ý.Yø™‰#i¹üÈq›\`¼úýÌAЇUQ"o„µòÑd;48“ï7Ê–°8 k.õ§ÿ½ì¶yv–߇WRúz5Ñ‘E§3‘Þ×:vðí0÷Ý�þDZì¶S.lH%޶7³E5aBfŃ…Ö1Ìi½GaŠ#èšzÜ´õm`rðg„fCˆ°Qæ‰Dj-/xIźÞñݤ ‡�z�ŠÝÌœîÖ€±'ô¼ À'íI™[WL$^F�:/¤ëGÄîøþ±9øØ|«Lb œD˜}É‹�î¨ñ®ulƒ›Ç¥ƒˆÎ." ¯ånêÆ‰lÚ± Ùô‹¬Ø]xÈ32AÈ4/ä,0áp ­œbD÷+Dö=ÇÃwx µÑÊ|•m[Úö˜s“ø#…E™Û žÈÅX¦U)[ =œ0ÒI½žÇw‰@,¨ îä‚EE¬rÕëEÅXI!Hm@¥w™=i(6bšØ÷œÜTåFq÷díË)k%ºiTÕ>|øùäŸgô.TJpʤçÁ\ÍxÀ�Œ¹¬¼·ß==&x`ƒ3XŽ4MÖ\x6Nl…æž^ì¶ß¾ƒ¨æÂ{y�SïÞ-j+¯²ƒ^¼‘Í¡óM¬¿a·o L™ `ÕVÿ­Â¤QøV†³yß›_÷ž2o%Öeú2´Æ‹Ã{÷ZïÞËi,M)åº:Ø´ 3ØŠ~TN�<¶—L�}¾æ;ú{›ë .g;ŠmltÿpL ~ô™ü‚•¾¤Ã:ì„t°¼o"³Jx”_ƒo•ÄpÇ\²‚×GýÀ•ù^œ‘d”žµYŒŽpºù‡EV6Œ BPÅ`˜OšJ>ÕZjVªëð{�ÎýÇ@2¥ûºÍWâi2ùÁ�OƒÚ²YÀš22æžÐFÇM½&~M0�¹åÞç‡á êÓ̉'š‰ælx‰ ‘`Ö.Ÿtz¯}1ßq Ò•iZÜά(áÓªC˜ì‡œëBv™ü¨\£eµ‚{DÝï�ïÒöf!&¨çÚëÖÔ<¯i˜ô‚ }@ߣí®�a Á-ðïj-%ŽÍ×ê6Œ!¶(+Q w]$ùB°2^ÔÎ8o°“½Ñ AkÈ…IkœðèåÍi|0sãïíl„ßÛóäÙ|H&l|[Ç«i’Vü¸ž¯¢�ê+7Ê‹¿Ð: D£í+ɺ˺ØË « ä=E�QG· ÓvÐ;~fƒQÙ�ùé§=fytvµÅà`ŘGøSÙ‡«uóRq/èFfÎå<õ±�îC�ô êë³9ýˆË ›â§gÁø^,e¹yÒvõ0«’ rž>úÇâ?Zú�§ë%pÒ¹å+îOðÜ£zdöîPó·bðJ `'ýüàfšür«ãübŸdä»'/T ÊäÈ+¸ù�ñ½Ò}fÖC÷Yžn‘û© ^rŠPÖÊ«é‘êv­ôò0Rðg„BÖé<¥\Û=öGÌvìc'ä((hlô9¤ŠB¸(Q¥ -Ãò»¨ß…øÕ�‡$³;_±¸)Ÿ8¦!”»eƒ<$×#PÍ!Tòv‹oe½¶g2äkI�Ð^|*ÓŠÅF¼­*íæ)È) œØ RAóC·=ß_~®M¥ 2G0‡Æ¿²§…1ºÑG@$û�™g²mT÷�ãñ¥¶hâoõR^•EÞýXlöǰw¬�«0öbæ1�æ�¼A,P71‹zŽ€¦‘õtT¯¹Xgÿ7tùÖ…390·4~^¬q9{ƒCdžõãz¤ÿ^LÿÏFÁÄ>럗AŠ ÊÏÀÐàït‹Óĵ|8µ|zS¾W•s^ªÕÔŸTÔìSñ“ä0°(ßín*åUí£\±Vn™àÍ7¯ÆJ�•õË  Dd zöI™F‰ÈúuqA¾…îËa;ÊîG3…àÜ?uaë÷ �Ÿ–é÷¢²£^bKGpnÖ«Nñ ^„íVZ 'ó'<6v0We À´8ÛM–´Ø¡<›Ý³ïÛ³¦àY]§4©´õYôQ—;á-MX¿(×ÍâÙ÷3]¦�xx`fEÀ×ÿ–~:Ÿ¥¼ð®~±”Òqÿ´ñ£˜ù±9ÀÌÆùâ1Ae¨Øëx…ÅÒõȱ™ÔšÐ©fEDž ?¦ƒŸAÙ ‘v ò€PÆK8Ož¥’«Öè úU-‡¤3~æÝ-â9áN¼ß�{ÆÚ}>»} 7<n—ÖÑ×_+H Gàe(Ò9ÅÌ>Õk’øÌ&ÖU=7¿5§¨âú*ñÇaHV7C€ø¹Åq81{PÒðÙÂ×mÑ{ÜU©�à ¢4÷ÒoÄåæÉÊTý‰E°Öª™"×QÅSŽÁ–(0¢Ç!^”–f>ܾþúlæìq|©…CÜêð»»Ú¢M ÿ,Ùiˆ@®»ëß8’Ìp×[8üpìЀ¦¿ AO¿aPw\ƒ­]¡iן:+–rª”z~¢_®øòšmE&ßÚÝÝå ‰gÌÂ6Qdë÷E!FzÍ*:æä*Û 3úåþ ¼n¹Lê ¥¯¦”z„—¤ù‰L!ê·—¡c!%¢¤¦hý\Øf×C¡>¾Š|Ò™±5Èð‡Ÿ_$ùõÆì‘À#÷Ö&Îk\äîz{5¼ÿ2­!pÔçAQé_dù|^<œÑSéߦ»œTe¢"ɦ¬\îòro4_Íf5ÈÝrR1s=(nZ‰S€�Š£¦¬wuØž\_ʬçÙ'_šgxH•”A&q˜xœ™‘—äÄKR!q„7ë’e‚7lÿ¬!~�G8¿„TÆYõ ýM͘q@}¸á�Üaþï<#îÜOØžÆq7 þgÚ¯Ãa*’wÓ‡öáR±¿Ap^²£íX¿h̓²Ðf9øãQRêOó¾\fé¯ KÜ>9d¶Ú!n{Pó7E€IŽ1?<Ÿ£¾’ÈoÁy…BêñTíÛ°¼(s*(ѢɵMª eüj§ä‰—ŠÂjÅ„µmT˰L~*tà}œœbi:u‘Ù£�õg iüÂÌx†h0…ðZJ‰»œ¡7sÕ¿Ð$Ñ¿µ÷l'æ Ïþ㥥øý`!/”qñs�Ðù—êÌñU©€®ÆÒ“þÐ�CLÊirV•)$<êF0ÐÄ|®(dRÚR‘ýµú]¨#›˜–ƒ6GúØZ‰‘ŠÕ™òД¶¿½.A}¤5,e“Hœó0Å· æó„xAvã™ÕýNí£ _Þù ½K%2,šJ[)K‰¨¯æ1 ßü]¹�¦Kä—Gàüàÿâñ#Ø-(zt·ª3k_%wøÝ±[|~†À+ac0.ŠÝü¾]å^'LòpçB¡Co“‰¨·Aé½á‹^£ÿsY ”}À{Õt€´û™—Ï…•íJ¨álñŠ`�Aóõº_–. 7äî$ÀŸzÃÿ®tc@Fz®¢ƒ7Üå‰g ÉP¹êÛ¢g<¦QÁü@30(F]�¿{!Wf’³òÎuz¼¸Éöw�\ #8 !äµWãà¾R¯G5ŽÒ®P>°<òö7°ŠìP¾ñîÛ]`ÎðSùk¦H½àáz1sÅ>�ËãÁ{ŠëÔ{e€†¬1Xj_íØ•¥»_XÄ…¿!¦ùióß=>¨¾ÊÁ~j�¦Î‘Öփ܌®ƒ†¤¨ Ë,ÌÎÿö«7µì9Þ˜¿›.±ŒÓÿãõ�®I¡Ø•ƒßž.®Æ‰Ï{´Rß³ùç: Q÷V¢_ ™—¸_A|Å _ð9�¥  GqŽëj¨Á,3¦õ�„õ»§)øïìóü£k�† xÃuœ•‚ú[æ[g©×ŽC Ä__¤æXþ‘>(9HÄ6®§pJ¹×a­=N�/î¹"3ŠùÛoÛÄÛ•qÁX�6+¢ã@dóöbKè.§¡B>d_ Ã;Z:Ïg~¿*Öùvaý Âm2�»÷›õá-Y$‚F$Õçô©:‹ÅFÿìL�3Œ(dͲf_ëWº�9Ýv´ñ>—ãBYù¶Iüê{ý:æÙoúšA Añ�®÷+æÅyÿhZ”~„B¦×¡g‡.6ë!Ø< ˜ÉѾ*RQ�˜´"¢$*ÁÀzå4[ïüÊèZÀŠîÞKtÅlŽ={’òw?„Î’é�5¥PóÅ6k°>ËÑgÈ-õ±(9ÀADJÔ»4AUy�Ç;sbªøÞ¼ö±ž�\ú?$eòÕ¡•޶”ƒõ™ŽBý´ €÷kâá/,`[ró|^*ŠÎNleIÄ3xBOrŠAñ%!Ñ¿Y•Y¿³;U28¬/·‹_)cÐè£eH$­‘©MŽwèÛuÒÂÞ×þXàÙJþ‡ÐKhþÉ> Ù hÆåd½K‚S¿>crTG‰Xsµ¿}4SÚyZt/b#Hc‚§‹‘íñø¯òØüo®GíKgmÝ}oÆÜ™æB=©þú¬!UŸ‰Ò®Q e´lwÓv²ÅU0°�½ø±¨R¿ u”˜¹ÉDY©æA¡ûŽD™ç‹ñ7Í‘üÉðÉ®_H‹›“Îí*aZUÕê8¦YÉ[ÂÍã2°$çŠ$ñ>Tt�öû©™Å©îø?¢à Çl’"ÀCb_÷9Û?ëfëSÚ£§åíÃÇêo…TÚÕÝÚ¤úòAÄÿnOæG@¤#k�ffi+�:M�‘ÔVÓ\—±�{�|§žû0Ç)šiäïP[£J’TÊ»±ïÓŸCe8þn×ÑãÕW¡cŸ¡W¢æ4 áîœfWÕû|÷öþòଃÞ�§êG~÷G[Ÿ˜þ¹51C•u’¸É¡a }ÿN T‰¡+ßÕ›†áÐÅü�9®XKNèzýò®9!~ùʼ߈'ľ•D…Cy+ßõ8^f�·cŽ‘MÒ¦o?­©8}�õ– †EÙ,�z"êË\ïfüÛ6Ý¢:¼Ø9f:›˜áa�ý� ž4ÿØWã÷ÓÄrêÿB‘B¢ñ1ÂøÐtõ’o“¾Á’Û¢·Êí}5 �š–u ï®o[‰9‹,×_Õ?O³\Ó"'øz%ÀT¢Ì�H ûûK…–]œ\å£t–k"ŽW@>2{›öú&/æøsb¿4Õ¡YùýŽÎsö>�ƒA‡9–ì\Å;¾·@t� @ø¸ë­UνØDðM‚y/+‘u "ä¿�æà·xt—V40û6ÔPBÛýîÀ„žºç¸¨/\‰�u× ê*mÓúùMB²QüËŠÂ?ÍÜÿî=?ƒX깦ÌJã’7hß1Ý͹*ÍWç…R~&Ôpqúšç:ãæe>¸ap_»9v]¡&ÊÁú-N|:¾�§ŸÁ2ö/ ¨;ÝUÒ^m�{KÈ _òYa+—•Êsž£aí‚Ô´lhZùUi�.2Q¹��yøWõ²^ v‡S–ß¿Gæ"]á¦VÒ�ÿ·a®�^Åuƒ61-§jç*Ä/ÕÕuk¯úsX;oŒïÝ#wNù÷µv¶�ýÌÿm´7ËЭ'"²eœè{§gË/«Mä ó#w&UöÍVw|­?ÍɨuÅçÚ9­˜‡Ÿ¨|øWÐÑ0•d*L„0r¾®ó¬­Ï]�] ¯ù Áõµ~—orï<æP·Ãc.UÒ9ÚíWé¿?Á%b°¡J¨`ÖcÜáxm§‹ŸŸ<+|‘ÌõäYòj`§ùh^E‚áAeYEôwvâ¢èÿ� `éJ;|†Õ<L3„õ wù¼:¼špjY�­?MÊ4‘ž�Â,ä'üþQ%Yïôm�e8±™Ïî|ËrXënÕO€§A)ÛÛ¼éúEŠÊ»~6Ô¡‘²îîžêÇ©ÿ†°Ä <[JãQ`bÇYßgϯåVhXÞfÀý]ÿ/r²„©ºNp²Ô—Jþ�âØ+ÆwÿäQOĪ”âýy79�£bsjÈ×e·š»¥+8›‚E;¾C÷©Öz±Z�¢/ñ_©ä D•û�H ¶Å¬Ü”ïiÕgÁ XÁÌ=Ñd{ò86(fG˜ÿhÖ„%–Éåö¨ËÞrK‚õíc�"Áï¿ë*vÚ‘�)qW>ù%é³Ñÿ‹€¥ÌÊâ>}Y,ž”-çô�y�ˆ�ý-ö VÓ žÏC�{_ñÿÔ$‹tW 1Y-ÌÈraSg›I%¸ŸmÌ XRÀspäºæH(¦õ+6xt[ê[—höÙÞ�ì°p�ƒ{|Á÷äþ_úÀŒãáî7q÷Á|Ô»¥�ÎS-_¾ïÈ’µÿ¥@kq¸_#bÎ"„<öXZ.Õ†uzƒªÉ:Ò¢Åç.žµ5ÇĬÏÃß­ò(D+cþkÒJ¨ 7¼¦¨lˆ“ß+ªÒ•O/úD’µ|(?ׯ_¯B…�ªp¡á¦·d†géUAl~ÿ/Tc“´‹‹eƒ9-ßö¿¹�WÑnßWmJïGû_ÉŽßÆÞ:;u.ƒ=ŠxM¯Ìº“ÿ¿ÀÅÜèS ¿ÐþXSÌ4¿Õ•RÒPˆ;ÕoýlQ[÷ûzX#�¸î_q—áW‚x€y9arýëVÕúûÈÜ–q2õò†t b„€–Œ}«e ªÕJæeÞç6¾ÿØãaUöSD"u¯}/ˆÚCM^‚ÚP=#Ûà£Ó÷¨è®8÷1�v\Ë ÿëݰ·xÐNÍÕ±©ˆ'A¡»×¹•l«7Ý�ìà_µ6•eh =w1Ÿž%+ÿcúÎ�>½ ¬²îlDú7 \ŽÇœáÄCFjè3·hÆûRTZû%¯™šþµÚmŠ0g9Ï^ÛÈË÷ÑvÙØ× |gR�ƒ±kžhÏXþeþàŸÏ–Øìvùƒ0·@$£�ŽÎ/¹bo#¿ú¬<â¶ßY°ÿ¯}i(A*�!#![ÈÌŽÊŸg¦û¢_^þ"ù�²ˆ�R?ØFfÏ Êõ»—¥êgü7¶þ Ž6Œ·‰Ù˜JÌ©)îl�y­ÌÚ]ï¼ú&ûƒ�EqÁ?þÜò¿jfùwD¸,ÄÛõÕ¢ÏËAt§z#øŸ¦/JÉ$C(•¬óÒ¯¦ yºîã&OÛî^ÅZãÿöWèñ[ú,&É6Q[}ÕAÞ蜩èI²ÿ mÏ]òÎ5_íñØ´6þþð…jÖ¿øù  E˜�‘9Ê#¤1%wå ÃË÷â€ÿovʾû©Êl5T—?·¤òÚL‘ÿ*(YêUämvúy7UCšRuk/ àL~;«Fkâ,°@-$fOá È­cÙZ�½1ú× ‡Ã(�Ç�ôÛÍ(‰'¯ãÂ�f†ÕjÞÕfÖúØñ©�ý²`•v¹ “áž�-Úú¿lVŽ\Fr¹Q4Åñí°'’æó¢!q$‹¯Ìú¤á¨ÿ;b¥Cd+8Y™zu÷EÊ�@1†KWh½ ºÐ |5,ë‚Tð'þ釱F(ÁÒ)#Ä^y'o÷ù¶}{74îC}Ð»Ò ÷édÛ)µo¨ŒÑ¢·VF_¯î‘¹ÆûVéÝ·€™iëd¬ÕŠ.¤¨Ñ­¢€¡˜oe˜Ã~aÃl~óÆ;Íi£‘çÈKdfHw—ée?/Q‡Tf9Ú�Q ,ÖoÈÆÏå_±Ž~T8{’_ê ‹:ktmqŒûì*ùÁ~mȤ¹jåSʼ£;“÷™78-eÔ–…%‰;„J¯á��l+¼%é7rT1gýêcÙ 8áñv’²¼ìøÉb÷Xh:˜Rüœ«I +pßf?šåªnƒÓgƒ$–Š?ûÓy^&SŠåp–Dª–¼íŠ#¹Û4°ú•Sçk¡…0×YÐz¥†í¾ãxóºÿxûÙõø]�ëËwNöÆoopHýy_Nõ#ÔÂ`=ÐJîÎP!°¬ßÀãJ·¸s0r·¶eÏnÐ}ß¹óL{É\–0{Z—UEsi÷úËé[çÉÙH©ˆæVÚW ÔRæÜÍ´b5öÐ;ø¢ˆÏS-øinƵ[:S’¹™Ñï p×Ìîêé$ï…Hæ0bôÍ—@úu&—O�ì”�’¥¨®.tÒ'Žsm[¸^Ÿ+GÀ§'…íýz ¥;m;Nl²šNLÆçý¹(Ê•R½K€µb°•ašÅ@ïÉÅRУ]]{8§m™�2`  Ì7¯¦JVܰY·ûë‡Ó𼙓kIóÑŠ6‘rå²�“²Óº-Å«:lÇ4q‘½B‡ÅYäÍ)Õ$�àÕ'Ô–ŸÕûr\¢ÖÅ’Ä^G‘ æ;´oÈ«4:ðJ›_„³P”µ �ªO¤ä‰$@ú§2(O‘/I%_¡0þ4ú^åü¦Qµã‚¡/,/rX}�wÈí¥¡Ûæ h(ñþ�¬FXô uû�‰Ð͵zUOZ ‰BèÑSbðxqXßm´úÔÏâ!ë.¼¬,R¤aQ¢08‹×6nýt&¤8Ü+J ¯sEª;[|Þ®X÷ÃlfçEßM¶ÊYµ²V!7nýæyN÷?ÏÛr¯Ëú¸žýRdø!‘6ýÄÙüÂ*{o¶n¡¦€Ç§´®ýjŸ¤¬£x*É•‰�‘îÉ,±æ(bdÂ1¬å^ÁÞô€Cèl¾Á eòZñпú<¢\êcÆUµ&ŸÉÇðá1ÿ»ž4ýaN¾(èÇòÛKù=  ÝÍl´×u…î€ø1ÁföZzy7Ôëˆ&VàðÛÕ ½”øûã¯?d�;[Ê‹¸âÉø/ ŽÌ4nÌM´€~¤§xªò`(TèpYªj*¡u!DÕîu3–zTWÈd›L7­Êªï³©(t1f7ÓÌ1oÙ�µäØëYïq[®¬÷ǽ?uØ3“ŒW8ó¾é€1EEqßX<šwh0‹ÃŠÇrOûÊ<1ü 1t�të(vªÎß¿e»ÄÉ8Aß¿©É#I‚c1ò J&tWv.ïá%†ãl5Ÿ;)Ò�î /Øubð‚÷’ñGã4aáÁŒ‚À}÷܉÷£yvÛó—º>ŸÇÅævý%>d—)—�òîôÚYdZ©Ó@•ùdÇ—!].ÎT�?º¤`Éz5aGÏü^=ÜRè\v}L>]ªŸg©þ.öé]`’ ;“g xN, û•ùqûy4ÿð/öçùô`aʱÓý€,{ó©‘êθõy�~MuI²”çX’”Éþ­Ð‡T‚‰Wã®z-š×}bÏú_ûÐöù²E²ºƒÅã'Ï?J)À:”&Šü‹ëàŽà�›G[;»éœO^ ­Ó–,f†$2‹ÝCðd’°�ï_/�!¨>)9hØ'wÛ±J'‚y+k.z¤˜±š71ûî·í<%à-KÝ1,ûái‹wÝf‘mS|¶âžìùúÄrßu<ð9v§öÖËžôJX «ÁÜä+Ù9mWq ý+ˆ1†:R —‡1¿ÄF«‰`õQ¨àŸKÒÔ›”µ`‹‡ÌžÇØñÌâ�/�»‰Òž½þÁ5&ëz̳=4$÷*9`~´0.�ø»×µ¢ pŽ뵌B`fcÎÑD½í•H¨ÏçX„UA‘™€,ݳ»á†S^¥ÐSf:x‚"ùŸæôºêÞ|é=YMq§¼?QWÒÝàlÙ= S*»jGwõé0y®ói³§@ÉÛ«Õé!Š {·˜8@¥ÙÍÌ‹Bé©ô´ðij.¬WdF*÷ áî¹Úþ%O)üµû±³;õ:¨É™QÄeÄPÝºÊØP‘"Ý2?ïôF¥¯‚$+¬hn"À�ŠI^Å·¾Ž?·œè+ŸBF\®‹‚Ô‡T/8.+¸'š9(!}�øäh_‰Ö›ø²NÒbžLtҽț¼…÷u 2v;Õ=òöçD+�:0u*å’âS©½^&�>i7ó}çªv¼³pïi™¼K“ç¬?úžJ�¿ìX©.Ù^óTŠ15?°Iýa´kJ•öìám*uéû L6‰lZÖžI‚R?cÿ/NuÓKSÁá1eYMƒ~�NÃOÔºäÈ”‡2õÓJÀ“ïÑÊŽ#÷šŠ‚lJyä�æj kA6<6¸Æ"ˆ[UQl—Ó\ßøÔøÙ>R�¨?ŠÝyUÕ�¤1¶€AÉU$m'eèç0“�°L>_b É[|sâ%»$|¤(Èq£Ä¡j#���´ç¦Ty¬´Hâ^ÿþˆP‰]äF×”˜­äd}&®·žô{VðÉŸ£†î.týÀÛÁ«—•[GŸ â8¡ÅÿHåÖ((�Ýpòƒ/æ‘ä/ç@ïý½aeA�åuEÐckuDk}Cþ ã÷ã&Ýõ ‘Íø2|æà’�Ê$î}ã—Šw›qö�1Åkª9o±®GA��¿§ûÝO¥;Ÿjà00š£D Dä‚'ü­dsS¿\ùL0Dbõç5׺ H¡un›rñj²ÈåK«Éžm¯*¹1¹ÿ,7Všl¤yY, iòC¦nW¯¥tbc©j’¢‚ÌtH(AúÔ¼'*ä yö�n}ItðÍ!´Íľ*f=Kv7/TñHªþŸ¡�§êMdÀ1wÜ¡PÈùOÓ Û%kœüe(ø9HŸaSÄÆÔR’'µÂ¿¬Ùn¸ò´½î=ò7áðób2cÇ3wÎ{f7Þ%!Û‰¸�mVø`ëd§r!—\ÑL¹¯æÏìÙ£\/d…)ÀTßZ|™2�¿™ˆ¾™À,ØÛÇ 8=2+Y™Dk>÷�h¬£Ö®ƒGô3GtÙ7`j‘f{ûDíÌàßô‹O>[Aä²PEÕ‘5¦%¢ Ï²U¶ÞÑ7öº‹á?¸E“f£l·Iq'ÓÐ{ÁW㜾Ǽ€1…~é­ˆƒ»ÿ6ÏÀõ±e$¢BhЏü¦€$v®¢'i%£B™úh›—Xn\�á›*µýê5¥¨Ãbð”ÐAgWø„¨àgh qVƒÙyê¹´ª%”†r׿lygûá\i±Ætob4“»ãÅ›‹ ¤º,xU¸Çëcò¦}«¯3˜.H!ä{ñyÛ¾5îù¼úMG¸”S»þh#êKF=Eÿ1ãG(¹Ñ’Z<à–B´ —©íÔ&C)w×D_¦+‡tÄ”+g²[æÞ[Ø4ª"¦ý³YÖOv]kiZ0¸GUcN-”ÿÒ&ç½)²d¥FC(}W¥®,yË%ž^BØÙ«Á¤b>Â_õJÀ[¥?Õ>:×隸½{ª¥ÆsbRT0m¸t}yÔ.8\3�‘˜¥F–@� eÇÅŸ‘#=m •°êá1\¹Ã/ …x6 e_âÎU£ÕâÉõB(5ʾͺv¡ª±gbËÚcp&“ö﮳ö¯¹7ï±< ÿô–ÚSHÂuÍÚØÔ†4)è›ÐqQn¨%ù"m­lÑ~™søµ—˜¯Ä˜c¯\¡Ç;C�)Ø‹}ŽìƧáÕÖ ©©U…‘n“ ÔjðÞ*·JKsu0¼�oc¹¹lÞKøÍ±¡µQBëfg~��Ÿ=«áGÒô}¸ð_�鸿ùˆZ<øaíÔÑ…„\3›�Qcm<Ø×]ÿˆ„º®O¹@›��Éc9� ®¥rº§Ý&çJÙ|©Þ#ýÀÉÔýšÈØÿvu€¤‘Ьc³É£Èί)wŠ Q< nzQ„“d­òãÞ�½´5¯ˆE÷RVüü^W�ªòÓ�ò&«J™0§lÞ öå0NÛbî¿—±;xȱSbÔæ¿tÆ=×UßA»ÛnEÝXú.ùˆžv•nÐ <<†x,|Œ­µ”q´yÚSO´oøÖ6±È©sì'ÿ<Ѷ¥\xÀZŠó¢Ttê0zåÏXï“Wïef|.³6üïp«<zæ©ÃwÀÏ$’)Áú¸dn÷é‰ËöÆ™ÍÀ;2 Š˜ÐÛŠ# áǨråp–ýS2öDF·=ø ÷©¹4£¹×ø«tì׫\ßû–3mßIYMȽ_s~3~YPöEmuÿŸAÇíj¬H )9;ú@Ãm“½ž·1¶éæ¯a°!å™w:‰²y1CâÆR l½5RàûÝ¥}€ûQ–›S¸}Jýno¼D�zcÅ/7˜ä“K]©yL-ʘðÓP"vñ±„dbhÉR1ôì¶r3v–º}VÙ|hDZp€‡²ËBBrÏFX¦�ó^Ò¢PݾCúÞ­�ì¥B–÷úKPrÂA‹ówŠï5qx2Xnܪc}GÀz¡È?ÀÆH7’ŸÈP«ri¥ULy¼Áh¿p¬nYxL@‡h@qëˆXo&xë¢4˜Ò ZܤIÞkàšùy.•^q/¯drÀfxK &§£c¤CÑ8ŽrÿüŠp÷¿Ž¹9Ì^ÆÀð\í|¸›R5ý�TÞ�áÐ�eÈ¥öÊývUZ’Û@©fŒHï Úí£Yy¡�wYŒY̰- 5¹C©žsÇ…?Ë©¨ÑG]ìkwŒ3[%C›wXCŽîƒµ®tÍ“ð] WâÇ û¿âƒÃ9¼Oø*ÛxÎ]Èü†äÉš g:\ŽÎôèÎúª7UÏ„õÞª´¡âRg€Ó¼ózXOã=þ� 2Å.\QÞ1ôòHx¾ç0ûþ‚_‰ ”ãd"sbVîÒ0 cˆé[pÜ�©¶ ïß5 sKÂnc€íÅ®�„ J…| gÇ7Ç¥@É›ø�ÞÝÚ—#$ya¨}éG>žæ¡0˜”SœËÁHǺš�¢r£ÉÂp¿‚,ÊSšR¦È\¬å3\õʆIÇ-þœ³þU–$iÖ½Óº“ƒ’²á7FÈU8ìÔ‡òoZºÒ!pmŽé£µù� Ï‹‘ë/~4 ,�˜ ˆ¾Mò�WåxÿÑ�ûíÑ<€‘Ú½ÏÓ}fCòˆB+ü7}¢ X„ŠŽÑܳ±(h‚á(}¦C9Lç¼Â�Þ«ñÔ©ÀÍ�½+ô’µ³êfÚ]é7€túJ{ãÚõ:¶vãH"/‹¤ù¤dg>hyƒÀ0âæRWŠëôGUª±$TNaZ¼øcK©ék4˜Ã—Ú¡¨ÜûP¾ë< ô[Þ£ÉçòÐ2p0³2F�Ï…¸ò4H9ùÆŒ(î2æÆ?R‡�ˆäÆÖ”šMánŸeœ•†,Å?a®Òð®ÑÞÃ]Ú‹žpä-dyI”s‡B÷ñ2F XC¬�øcúïã~ÝŽ“x}›w†„d(ïû¦åø c®4 átj Üñýí¯¾¸GD,UÃâÞ‚è×Еcö–ÛUkùn³¾z“cÅŽ„ ÄG µíj‘ƒÞ±?>ÁÿÁ=§%EfØý6œ7Ù¢©µµùý韪­±­F›¡²2"×ïÐÅo°œ`Ÿ¡uš¾Fµ$=m€.}{× %ß}¼I»¤ñ]Ÿ­9ú¹ò1ìÎÆGÜ®Û@Ê0«ŸÌ×b_¢ØGжñb~–ƒyú½…ÔWÊ«17ôt­¨»GJ’=æÕá·ãÞ»P^Ã,Q截Õ( 2ZÂ7‰Ç×w€Ä®\�-´ŽRdí…›n›\°ˆ·h“ÄöˆÝÄåot$IÀ“àÞÜ¿¤ëMº&#{'ý\ÐéÜì³[W¦åž} ‹àwm’ño˜9Jç~A�‚˜¬"“d%Ò›8»…ø°Aó1eEÔ(þ1ÆkD·ÖêJj �N D©³Ã�Á¼•q±©¥³jÕ0ÕâqÛ›Ø@ÂB“ׯÒDeB@‚îé8fp!~åÖçZ|<Òóâ‰úN{�Ш›hj>¦´?—IJsfô�åhD§c¼*�Ý+r€›¦µm“*;öpW S&?þïY�IV„òø^C™ID/}‡äf¸ÙE[¥ƒö”CdO{ÌN“£)ñ`X»ïAïµÐg�|£�yaLäÉé°Ö4 åäs·¼P@~ŠqÇ¿DsÚÿŒÿŒ¦!¬Kr(!re ²||“™BdnÏ_¹ 1z˜Y²{þ%S@*›¬vèv{Àñ芓�:¯Î£Ýs0?Z0¶�ÓH¹ó¥™:ÛÇãϲ5©Ã`ìø‰ø•Ó–„—$ìszzpýÈ”Ýúl®o½  3�áš’ÃnÚl •?:̧ƒü‰C‚¿PàêÂypg²þÝ"f“R 0/@Õ0/¶>ýB|W‚HïFCF©:~Û*¥ºQÜœâ�þðsáŽn‘è‹Ô3=Þßñøˆ¹m¡~¨Rêÿ*íþ�âѯ“zª*x�§‡çjïòº»nËcÖ�«E„å:bp–’�Xazˆû}õ–6.vk]š�uG‘I§ž X(QØX¡8÷ë(¶µ¥(È©þþæ¬�á¾¶.á�y[ðc²grIÖü[áŽU]7Φ´oÞ‡]2»©›†j¿&1F¶´~PØ-e{uÏ’ õ«ò5L!úÏÖ³¢ŽÖ ô“yxÁ¼_s,þTTt;yŸó‹yà-ü =±µmh�Jæ´ì?½É‘´>�ô|Š)žu¿^ñGß2)R«Àõ2ÞÈÅ–Ó~G� ‘‚šÖÿ.Ô)ײÏä�5@dœE£¨Šy¸œˆì·>ĹÊŃÌè%pº(QÛ:Ÿt ‚?8†n›C`½3‰¿YX¬tÉÙU¿ÕV¢ n4­‰€®�Ð=U¨ý¹+MàØû£äo0�ò7bÀÐ !à/¤ì7”Æ �~�=¢»Î"bEBgÀ Œ‹¹�—s AÅ;áæ6ü ïÓÿ‰b'+ ±9.·@Üc q0h‘»€12J¼°;ÇEl’ÍJøY?‘c ÔÆc6&ø'oûʶŒÄ%ÙÏê%[[[VK˜×È7À¯5TîújúàÄ‹[$ô‹ާ?PŸ…´(fÏ\‹�üø�€þÙ×3Š®A�:À°´"EEúJ~05#Ð2W%¼Ó€ƒ Kå³)¿qyýÅã:妪Ajö®|£‚úî¹VA Ú�MQ©ôïΞ©y)A¤{ØrQK�ëÜȵbå �fø)˜âCAt#|`^Œ!rÏ£bª/8-Qꈥ¡cÌê Ħ0¾³Ùk“ÚSʲ¸,2ø6 zC˜ÿÙò,#öe4Póùa6¥„‹°é§õ]YUÜÝíÐÅùy+C'C·<‰—µ‡3§'Žî£®ŽxæF� ©ÑF«iû«»6�ÿr—É�}È0È2T«5a°.|•+[š¦®_�\çÿ99hŒãÈ1Ëx¦rüU•H|h ñ— €ÛÕAÃ…â”ï%ø“ é¤\ðhø´P"0±áû³§¨nêòeþ:~ˆ ó»RZKj]½AÊÿŽ ¾®ºjÆF['Íd`ö*†xhºW»_pN¤°åÙz¹%nCâÑŒÀ¶ÃÇy÷pð÷*<¶o)÷Xf¬­ïV¥Ié¾??®›„t´~ETí-¶oçe+ha&�?^P4 ¯1Ý­p3plþtýYþÛù{±E!† ÜI“mÿ·ŸIQèövY�"]”>�ÙknúÒW€y€Uå$”¬éºbzö<ÁÎ-g5a7�^¶x£Ã¼¾Ã0LÅ\¯°Nñ„cyv‰‹�ÌľE�ÄÝg"¤­ìIC‚É×g›t�ji:!ð¬$Cf‹°J|°I§7BllºôÞ�—{)îýmÝ]î®Â�Ž€8³šãд/‚C1¾¥^®ßtìG�÷ý!û™.û-]ú‚ "•‹¯ûpk»(þ»ãTŽŠ2bÕØ�õÀx6Ž×„ð·¬F_q޵#ø¾1¡Š±IN_É!!9Qø’ƒ –gÆ©óã‘™6û[ú0½(élK´ëÎÖû•¹:Pe(;#â”�¼Óóf ˆ¢ûiFŸÈÆ` ­¢¤ŒtÒw¤ÕJ/N÷‰×<žŽ€ñïC Œ˜M�3t”ôÌÃ+!ÿ ÑÙª}W†‹˜ã_v<[5ã³ÑòúÛAsБr0Øô£E¯¼“4¿�;¹½V–Ù|wLj<â°C0SÉ`5µ½Œ˜/9Z·u´©ìƒ|îyˆ‚ýöÙ̬Fu ÃÓq¥÷â!6ÞϾ§tŒ•€w åã½Þ8KðàX�G›Ì{_v©gÔVo¨Ûݲ2_ øpï) •ãLë†/¢ã~É�¨pD‡àõ¡—HãFDš„:Lòö¯¨üúüÿÀ/ýø‡ ô+¬ù xdqcÄß$Ì^1¦ÓÌÒ � OÌÿ–Ÿ8*}¾2 •«UFAÔ¥œ[Ã&0' =L>\¬ˆ­tG # Ùx‹Í)�ÒYwgÞ;×÷4£–o–[Ž¡cßñTýÀ ;r'¿¦ŒœCŸ-Îí"×Q·o¬Žì²�";2ÏnrÔ¤J¬Æžü¡ò$‹–¶$ãƒs­^ˆVa<ü2ðfð÷)‹;¡n¾û5€Ÿß388Õýw¬Ò²ÍsÿÝÁk($8øŠ4Ë 5:<³…p2ÃÝg®ÇGwÕ�ŠÕ4ÿ~{]4Ƕ‡úÓvÓRÑú^åó¾ËNýXÅ 4Ø„,àÅçšxÏvE[NãÁ%Ÿ�E}‰˜ùÖ¹KO°æãw/gø�,Ò³-¨Ñ&Ëçõò¯ }aû,3w>Š–! ìƒÜiˆXƒ¯øp‘d!vWá)º‘�èéñÏŒ«°UúòÄn.s¥V`ÆÜChŒv ’ôÏîÐÍ£©Pf— P(&hÞòú}À¤a³@VËR{{¶-=o}‹oÓsÄt~Ä=þœ¦cŽ0Eûˆ�‚Œ¼€Ë+Ò'²ƒÇºõï)�öí _æ“30¹ˆirÐK<ØØƒZ¬ W`�×|—VÌ�“á<ßj*¤w×çïxÙf!Ê莎w"²p<‰þ¼æßañuç&´Ií‘_Æ¢|¨ÙTtî_,j1¿îþÔ9‡*MW޳Ôî*|8Hj¬¿¬;�Œý†F-P`©1ÈþÆÞÙl™oii^ÝÎÒwÏ�x_´yéßÐÑ·�$Ū£Õû‰8ù©Æ—l�'ÂKæP„Ãvcz�è•S‹åB96Ry^@FÃó�Ëu-3øA³LÜäPÂÊ#ªobDm@Gð×ã€öç"ø7aÌ«ûÛ^Ëóoò¸7/;0%à›ZµB2˜ÅLtG/re>Š(wY€ê6¶Ý+ ÛÜ“6ÈÒn@ ç3YõÌÙÕ©ë¼K (ƒŸ+ ¥=–Q¶'&å¿‚jÊ…‡MoÉ ¹+×�ÏX¥‹E#_ä´ð=5‚÷ßZnI¥6ÔySÍ"?iNü*Y1K3Äॊiô'ò;°'�ó÷.—ŸåÎݵþ×oé?)uAÍ=KÏ]�­¬æ,ÏÑde…Ï„?ïQÛn›^¹‰-=©Pk¼ÝV$ä8¿yv÷»³ÀÐ3Ð4nÛ£‡_®�Ò’½ýŒÏŸØ«�B»ÂWÅD¡•S+=x“¦—f¦^ž/iÇ6Þ!ï‹xÚ…òR¹¬V+ÏÉíšémˆ‚xÁ�pën¡Ž tœûj¡Ó"ž–dJß�ì…9ÌÖÈ‚7O°ŽW¥ì¼›sbˆv?6â=º2*u·ÁioçÐ1p×–jÒ rÂNðÄ4ÎÆ<έ‡/Äe'J’؇ Ô÷T¤Ô A×yƒqåœÊEñâ�|yóRÈqG>×CsÏ¡ êb4­3æ“Hï9øÖ™D÷Ü|þ}œ€iÿŒâDÆl9eÏ­{O­9X„„�öÚû>hT)-~†´=þµ@q®¾~O8Ûý�YÛ™J”þ%k�ìÆš ²-¶€5ÉŸa_vü5’€¼ðÉ jˆ?;ÆWÆÅ!½½ç;dú껞a Õ–®qR¿kÕVÍÚž”9›ç§fB?‘Qtž\™ËÅ ¶É—ûÞ($𢀤äj±ÿ‹Ñ^ÆÑ$sBdR›æÓÑ,œîë¶-®| Tcí?s|ŽÖû£ŒáÅUž'yÆ×{œà0Ï=‚(Aÿ`<(ý´úgZ~öÁY¼¨þ<›ù'—,e`ÆD4ßs¢^{7Ìe‡Ÿq oéÇxNåúAÕÙn»[z,â)[—Ûêp:“E‘ÒªÚ'èw+b<º�®CAeÜ=f©®Ù5‰¥$ MŽ o¥NpîÏòi‰Eü"^0DUK––Ü8Ûo¥×4ɨë*½ŽAÀö+Öwú�Æß�PºGŽ ‹úîäfn¸Á{kߎ /ª¸9YàdÇŠåÅg¿5�Òhm«k§ ò°žz  ^+ýâ‹A+Ñ êO’©§I``õ*zÛvتïÆ2Ÿzâq<+Ý4Íy÷Ä^KV褨:!J† y�J¢ޏSð¬Ü°”Ü;ïQãK¿j/ }›ôý—ë8‰ß"Û°¯½pÏVƒ÷û�Œš`<÷WÅIlI©�Í䕟½ÔaË‹ÜóÀc�.Aš%D=ùÁ¿F*Ú{–úi�åV«ÕÓ¸~dÌ\8«{9·¥?Ñ_t—_ÁѾWœ‹`@9l„{r ŸÆ?ÈÎnRÝPx&Z[SÇòíŸv­µ� ´àÜ»wWþ¥þ8Ý)³Bî`î PE þȯúS¦Ë‚Õ~O§{Ÿ.³s¿_¡*áþµ¤%.ïJ“`¹ö¡¥­èíŸo<�NžERÔìÝ'yúO‘W˜Ö~ò†IkÔòÀ$º„Ñ(÷d‚œœP$I|¨¶Ò;DiŽ;-«êþh*¯ÿŠ*¨`û­ÇL+�ä—"·Ê‘{óÀ´‰*ø$,�ñ“!™? UªsI_’†¬†Â>ßfx‘YdPR~áøŸ’ `ݲ˜^æ{ËhŽWït4[îyºâ¬OÊ˱¦d^ÊÐ0tó/ýÛAô#Ì`Ó•Ûª/Óà± €ˆ �ÐÁ#”‚_)þB¾9SøÒÁ‚Þàq¬Ð $H2‰L™=½«Ú¦ { ¢|ˆÍE¢Ï£¨¥˜ç4 �ñ_Kñäy´_ÓÑ ¼ƒÈíÅ!8æw´DO3Â.ŠŸQšërðu“êg’ÒmmÑÐ({n4mjIíŸ  {ÑžáOõC®dø>ó�/~fÓ“C|yÔ”.œ¯OMZásÌ´9 À²Ë/¿²©$½¦FÙt»!¶-böËú²ŸéiØA\Ô�Üxƒx^q¦ÅYÓï¬Kü’ªé/aw)£Á™û﹜hÐp¿þÈßW?!6N\Œ²§Ž†QD̼V+Ÿ.ðåFW˜Æ�ë7 hÿÄ+جåñd9"¡÷ V)ÍÇ'¿tþ$\‘AòÕjnªxC¸ˆ™„ÃQHœÔ´ý’­,Q>ÞWηjzG2È”ûË£}§ø„e‹ßèéè””Òw~“‘�÷lþ˜W–C­x‘ÅÌäš/�ßÙ�öM$àfŸÜÒ_’k€n‡Þº>[¢̤f\äo[´ÄF�kSÃKÄ S©´©À~–ý€Ý UƒžJÜg÷K]'†è©ÁUèŸËÿä�ðžìa7É-®úr›Öˆ›øåo¿©t»~|\g(pæGÇ iÝ»´zþ“û ?̉/îöÍf(Ëoy›ÔÌHý±æêâ.ªhGDïu 4ݶÌ-9!ðÓ¿2NÚ«�¡yf7_í³77"3Zr ¸Ôø [óòÔeg:+QØå¹3;ØÆ›MÊ—~&@N1úH�.Šgáü]¤R~b¢r§ÿž/¸ÚüݪôÝÔ¶>Ë&WTª†ŸéM>O xJÖ�½-䯴à·Û£˜¼Ž¬´zвñT òÞúýó¸`í.•CEÌ ˜죒7Ã9æ÷.Õ³ÂÕaþŸj…ÔݺžÉ�&oÉš_á@»{ŒB³¤E%ì-åqËN´�QS?‚¹‹¿<Ø#iÁEÒHÇü̇d¬Ž µÛœvëdfkh$,¹ö™eM“Tî0iéB!I µ„ˆGó`¾þ ÇžÂfÈXö¡¬¼ýÒ½c;¯„œô¡ ã/¸ä‚õ•¬Y¾ íH¯ …ûäÍ— (l˜º× £³m,;1íM£ t€r¿åÀntþÌIœ¿�ePF:Q*—HqÐq±½ uðøˆ®¢=f=»«cÛb.˃UáG5yÙ³ÊÏ$H½='hê�O›‰ƒ;y5Ò€¬Ócsa­ÍwËt‹”¦pÎxëð¦WA>ŒÝ—â¬H_pD¥Þü¸#Îäd·–OyÛ�.ÜÒDäˆGö2Mº§ÎþÙnî¢1)³ˆ÷49ÐVËÝFà^¤9fòf‰Œ  OT =N%¥ærÀàœ.’ÆV ®ËÖË.\’ %‰‡.°^袭ôW Æ|¤‰®àÙMÓ)¿×…ÕpÞdòͭýZÕFf°~ïÓhE ÞŠÐ&Ìš«îZü‘?U�rÆÚY¦Ew$CúÏY©ø¾ÞÓÈ £!vÖ§vÃP&3_ : M•RHô)ºËäkë;)k§æJ­§©÷W q&§§_> Ðæö‰VV@Û‹‚ºðšÑtJËñkS‚0oÄè¨W/ÇÖ||dçu¥9ž£uâ×ËȼÉkÏ®Íʲ+uX#OêÏePöµmDÊl jݽ†cïí>~¨€‰Â¢÷³®K§î>®ÜŽìkÎ~6ökç�Vºšw‰â¦+ ü‰1›TÛ¡ÅèéžuA¾uF�˜‡’åÒân*}J!Æ?�€'?”ëûY_S'IìKi=<Ã{ï^Ï¿Ñ÷ ÊϾY¾ó('1ùŸÿôÆ7A3‰±·&ŸºÔ%sê]¾`kH6õCV>Ųû·*ÚI¶ºã�ʸçùö³nïØ4\Ü#ïÚM2š?ù„½¡Gô€jV'Bk+>¢#AÈlsËì6‘.Ž|«JåÉ$„� Xã)&¡óiC¼œ.Hòꣲ7Ïï¾ýª’'ûc¿†O׫ðEq´ùäk0Õ�gôÑdÃìnÐKnØ;vè'ÈÖÕɌ闢9>¯¹Õ#VT&VïuûÞ˜ÌK‡+Å¡þyƬÍL“Ìó?ûz• y ýN - CZ2.ò¬b(11©¿ùâNŸ( ækê«[�¹Í½¨gEYLÖ ºJõnA^à�eÌ1ÀUø•Á_AÎ (p\F@`vΰm�⤻ïp‘e–§>®p$g_ —¡[Ÿ,ýå>èîÒ sf S�Ÿ):8HAZr³G¾pú©A_��È@‘Ur‰ ÈsÈÍþ$© <û§Þ+XùVdéQ…B÷Ç(§ûé·qüÆJ�É߬½Éö8ÙÊôèÇ­Y#) EÂY[V×»QŸgÒêÜ´Åñ2ù~¸ÝÅæùÑ.œ N&#EuùöK|ùÏ«6·T 0½( äº&ÃÝ?¾‘HSjä0ŒTúu?8 º>Ù:1Æ}“/›…â]N(Œ¾ýé�O× @e/eÒÝfÂ:–B¾X 9p�%2b=W&+¢N<¨*ÁèOonG_Çö‡¡•ÎÆxï?4¯Çåâ™s1‡èTLm‰ŒS4¦=Ç?kÅ×`°d™Nüc˜[Ëæ´¬˜CB z�<ÊR¡%žVvðÔ—�{@B)¢ ��gŽs‹�Çé�-¾†SQgnÝÝeà€;�N�B¯rã܋Πo?kôÀ¬�øuøÛ'áä^—G0þw9ÇmäSGŒ›n¿Ô™:×ÙxûQ%VUd)YPžøçû¾<’é÷aÂQùAÉÁysØ+³Ñ]jôÌZE‰èÍ9äæô­—Ø$[,‚ÜR˜4ôx…îòø›ääÌý™”ÿ[UØG?Õ‹ãÓÇq÷Z­þz�–ïbX?2FÁÞ;a™§æRÞ÷R»®4Ì;µÙÆXOì–ž$:Q°|çåL׿s’hbDSÝ÷K:¶ Ýn±„$K„²˜WáèUT!þVj 14QÈÞsIè‘ÔÓWåfbG¬=U{MWðaÐÕ^J~ëañµÒ‰õ4¿'²ä7èõ¹Çh×>¿ïpÝ«¨dÃW×YLÚjY©ÐÖLh†ÂÖ*5út¤Ú×u¥·¤˜W‡8< u˜Qî¤ýYw'`Ê<»Ž4êY  9<~t/Ðxkÿ쮪‹k¤3Öu¿ÎØäI'­w™N8»¿íWé�d§YçÈ ¡ãlKö�¶ÀˆV°ÓK4+æ›3%H 8Íä– ú{rfߟÕoi’Ï…@I÷Ó•DMä*€³q¶Á"µÿ9kFŠÃœ¸O?ø¬òšýF¨é-•r¹ÉáÞ“»ÄL^ñör¨Ç‚iU³ üäï¡^VÄ5D„‘‹›Žô�¦ºtÈs‚'Ý‹ó>%O1&.޽ûÝw³'‡w&¦ÈÀîŽÍÿ2®½5ˆ=µ1ãéoµ×Zy›Æ¿�à¾ôe¤“ßÈÊÛÝï£u‚ŸÝ$±l0v×ðÚ‡×�oë—ê|ëšPšÈ®ÆIT®ÂñÎp®zœø ´èÍJQ5î=CB³º'¯žÔU¤cþFÊ)( ñ[Ÿ?ͦX=6z­/OÑh<ü�(x©.¯’îeVOU¡Ö‘€è(¾”ÐÆ#\„ö»´�ÉÚ_ª¿�+Ââ™%±‘€t+ÒÆ](üï­æ>(èÅJ!þÁ‘TÃÙ{W¬žÆ|Êë¬áÄ|ô•fj×_È ÖûYñ±.šµ2ùeÐÆ¢“à øÁ\”6uŠ—v–„þÔ°•’‡ËüµóÈDìÆüþª)ë•4tŒ"xJÖ©°ØV¿/J:½ó(è2M = leS"§�ãN&|íHsååî™‚Í ò>*Wâ8–¡{éËYÕpc�¡v·Ï|U\ÿAúZq¶U�ó‚bÁ4lQrÔ±­¯1~F¬]»ò\~êv£QXï ïxUÚ^pßVûþìÕ̵³Y-áü¹îÌA˜YÍú3VC‘H“§K¸Aã†/–³�b©Q›²ÜzSÕ¶H^a´lûÂcM$ Dd»¹Žx:Ê/“Ï{ŸëE»Ù•û¦ž8wN¼‹£ækøø®èï³ÈqÔ2g”…Œú&FU¬q+leJJ¡�û·o2‡«ãhôìÞGâÌQÏIT¿v�ÓŸPÖ7öî"�smV:.~Ô/M©×x&´"Ñê�kzðÐ6" ¾Éç ¨ªùÛNÛÂÏܳ.¾ëí\K9˜]?ê®úö[!›áþ²s úùÚ­Ù¹ØÓü”.:D�”€Â~1k8~£À™±2.®2p½Å*Ïë·2-°¸3†–šïÙU/‰õÞ@SëÉn¬ÃÚa­5ÊɈ� yƒBX Rˆa¯dɳ$¡›¨È)¤Á¹\¤TæÇ™žuIw©öŸ;Žp²n»ô†ö\Ôî"râ}4üMŒÝ®Yßæ—ùÕëï}[Hñó5ÃG\/„¼Ú)óO›sÅbîÿP¦% ÐÙ5RZ‹Ž3¨X]<îáåFPà,ý9ÑÉ‹Ïó1ðÒ;l@½oîÞ™JÈ_™ÊüZ0žÛ>ú±ý`X(úQ¨³F@Ó±¿ù¶ëþ\Õ![ô=ÔYöÀ[aᤡzQÍíŒû‡^ô;!ÚS;¥÷neޝøcÎ5'6bUÿ›ÞGÎòÌ4bõA¥éoÅaÈ×x‹jË5%ðl-LØ‚%µß}.Ž>ëKÎ�ÅPQðèŠÈß«×#� –å±Ë})ö¯ñ—Ó™Ÿ”Þ‘‰#q:‚gRÅ.TÇ€�  L¥$y „`{iÄïd¦„ánÃÜѶ¿7vÃaâw�P�Èw³èQÕÀ›¼CÛå4ôbŒë*Y“‘Úû¨}Êž©ñÿ^*L¥ M™}†»öj ´ÔŽƒãÐË™)Và ˜QU.vt¾íŒF`†Ë"ê)À�<~5Ö-‹ô¤Ï9‡ßÊŠ²¿dãâ|CPF ±œûú9© yT•JTª¦Ðéóüª1øóóøLÔ¡Õ6³å¼9¾ô#ñÝÄht„Ì^‚‘M,g» f%K‘î…aK�÷†�PŸ¸o“üi404È£ Üp/¥òƒçHs¸È>ÆÖÓÛθ�ˆžZÔá;uŠ}Ç+ ûÌ‘´Àl¦Ú¡ Û öÀ×ÈQ#.³ÄŠ3~6ÄäÍO<\dP˜ñx¸×»¾Ù• 9–( ú5Îl“ôèÛ»Ç`þ1­pí$ŒàvÆü§sç úáÀjŸæl$ý1O²ØaŽ¿‡­®Ï»A�¹é¹\ ¶èÑ ªƒÌ• 1f%BŠ�:ÃÒg°á&æ�{pº«a~ "°’‡|za–ñŒ[P› ‚§cœÃ¹)7Ö,/þ׆×.®•æ‚ØB§©­ÿòžø쪞·?¹šÉ³ìÝ¥À¸Ñ ý›¬Bw\#÷u‡?‚³™‰6.5ÞÊ”<—<šŠu!Ÿ>Øëô÷þ¨@œG®Êí$¹Ï z]d¥»ÛŽW¯[>é=jçnt×â�`_ƒô½ÇËŠS/^0Ó¾e‹}c÷áq³îÛ€T“9ó¨ÎÛ„·÷$^¬"nÞñ4GÆØI¢÷«°ñ »æ§‰[ ƒü[=“4é©�ïw.7;„”BVè5ˆMŽ/ELƒNýë¡Ýk‹³÷“'û÷V¯s9jTEßHŒ~A¤�_Ìù�5ô&ðü2 íY¤Q9/q·^Í/*<_oâÄ~ÌdÖA‘ŽÈ£Xfˆœdëc,xne!iÏ¥£êéUîwp¦º/5´c±‚G!µ¨�üŠ2¦"²14 ‹¿5HjÕõ‡¯Ê¥>ó÷V«¹—hõ¥êYnêŸHJ8Ñcƒ¾  jF1.,lJ9™#ω1}NÜŽʉ«`$˜šÓœúÙøjõ gQè oæ&ÒXImu_Ìm�hã50ÒeÁ²oåm‚³ñ9@ž7„… \"h¯¾b•4Sk½B‚a…0Ë™àé¿% 4ù�{{—ÖDûý–�ýeUÜŒ‘U‹w8ÉãÝgRe7Þ˜JÄ>€?Hfê«óô­’<éíÀ;~H¡¿<Ï{†Š)œó×÷)©î¹”Ç)O½Qc\hkI…ÿöˆ;ûÊkT�Ôk¾�¿ÉÇôÕ7äoÖb‚|Ê·Òé“Mò°Ü­Fz¬~†‹^Ã?„Â{›\w«<ïåœ>­Q-æì–"xî4…Òatcâ�� �PÄMÎÓõÀ_à&•�iMwE·‡€3oàYGÊIÌvÓe©ç�J& FÄcÓWç&pçˆ\-ï¾.5ù–•&»�y µ°l¾¨ÞŽä¤ŽÆR"¶ÈkȾëdHÉ8¡Ò'2‚é·1=*^{ú{‘œRÑ’ÊÝñáÝŠ@Æhð3.h¼¿×Èv`zîB“}4O®1Ò¤‘Œ‰§)iÍ*¾Ö IBfµaÍúôåKì“'0±$Y¯C,öÌjC‡cÃݸ@N{¾o¨u�¥¶Yø‹å:"‚åÚÝžÿ�€ÃunÂôæå£j—×&ddœÜÌó¶±p’€SkHræÜé#Ú1ªË¼XgÞ½ʈ ‘—½èlÈÜ ßù˜ï r ìÔíZE:.gÒ×ø…8º´™Ï µK§ºwy´WZ´Œ µí×_’ÃÍe½ÅæB–,ñ®_s|M˜ºê3Òs¿{ìÕcºxuœƒùn*ÿTç­;7+ó¢t`UÂÑð¾ s‡é¤\ønz¥¬É×ý…Yf S—í†qà»ËËA¯ƒ})ëHî–T-[ ž“4öÕ8À°äŒ®ŒßCÇÉØy{hÎÉ?ÁwÀˆ$ÏtÁhpî h·[,‘û ‡¤ÓŠÑ¯|Øae©t%I ÍŒ6šÓØÜÿtø~\<\"RR_S&JH(t�cïpdÆ{ùg|ûç¦Á(™dÊEeÕZ¦ dÒ#YE4ÇžÀNÑÁe;ÐñDþ �Ö£üɸEdо÷q2Û;µí³[¡ã:çéUV©åÍv‹™ìì¤�~1Ï\F°;åÒ×îváŠðëûß¹×n*ðgZ�€†â,’v&¢†¯ƒdZ‰ÿ4›þÕ‚�QˆîîDsÖ‘JêÇØuZô†_‰XUäI�›¾ofûÛ ÷ Y±àÝ<ÀYõÕ@³6éדÙ?dã6q—(aAh{7¤0á�™$¹Þ-“Ïé{µ*$ÙZ £žérùÒð&ÈIèé+ÊŽ˜¤ÚšÊOi£XV…•ÿ¯‘NAðoÚÝ þE�&%|q®ÒºÛ}îqÞðI}×ÁL°×Ó-ö�èyÆ·G&�J|uÈáö/"êõ^ôRh“´&Ì*Ä£L¸V+ÑËXˆr_�¤*qŒÞdÚ£ª¡j5îŒûƒy1èÿcÒœ¶i�¾Xy‹2„4ðZõvýì#”n„¹fznЏž\BÁÁºG#d…‚‹?pü¯ó!˜Kåedk'ºÒ�ë~õtW˜ 9 ·s¨«ÃeßNz Š•…ájaÖv¥æBþk‚ÂÀ€Œƒ_ŒK9upc6 fxI†€IÔDäÙàõŒ‰ª-m×:†H ï?‘äA]Vh1¯:¯§ßgõ½ºèu Ç ,=Œh+Šš–+ëŠAÙ­@¸%Æí\8èð’k;ѼÃÓ{ω~Ř(¡ Ò¸XPi]ÚZŽÍwÜÿÁÎN¼—òÙÄA‰TºcóR|… <Ò�5¼äüúZG`"•oÌÿ•@œ Èó;»>“Äð�[íú. `Ë¥žúRrøŽU©?xbò/î}+>Wß{ì¶Ÿ‡$¢”¨ù.Ûd¨ŠrðÀ~z˜ý×]'±;¼LüÚùtâM¬Ú{`µ±�ú’f–^ÜÈë2÷ÿcE%OÀíç÷ç“IÛoæ¯ížOQ:ý¾ C’V|0 }¥.d¬9žýøùvÑ/Žß¦TÆìUyÄ·`²¾’¡K~õ¥ h‘¾:o8¤ jG7EÜG/!tÅ©4^N1gÿ;½´ ^ ÿûÉ‹ÞyÙr»àÌš�ûçÌh�`vÞÈ�ƒíä«p<ݘá½-)ÿOx¹P—aøÞ•7©è x"ëŽ]‰aREº()ä‹Uö‰£±ƒŸ«|�¿Ðþÿõ~’Aí^:ë%L^/è †ñ@" ”ÒÔŽR½; i�Æ5)IlŒÉø‘ŠMùù]ÆPÀŽ­uõ|öK¦±·yþñq [M¯q\OvÇ%²ö祃œô®–^z#»v¿Ì6$¿èúø ƒw£bB:„“ út|±~:ú¼¡óÕ]U¾mŽ�¯»CŽ?òÑóÖæOq~jÿý Ò óÀZ]È®>h9¯ûúí]H ƒú©áÊŸ‰Ûp3ÔDH�?È%û:wŠûæŒLÓ%Èö–9e uè¿ö–/ o2ªÝÅËìZ/Ŷû®á›¹„»4[(«�pµËŠû¼ák^.ÿ5•iÓ$ÝÅ�7uøþo ˆFÎÊâ2�î‚Y“²ªUb•í¼°ëÞ4Ràæ›œàl=b’í˜åûþ‹¤‡•¿Jöï“n]í¿5ü Åký�\¬jh1IµiB9ÈÝM1 Àó;QA4)}ì;¹böÞÍ�9^;9\¹'m|àgÐzþngÚ;Œo†T`I"l‚™à_0Ù HžÛþ£mQæU"7,ÑcÙ!úó"W w†Íó®¡Ë4ºŸ¼û•Œ9è…2ÿm’‚aYÙ2N�þ/M¿Q1‹�‘—…�*? Ð»Ü ¥¡ÂI*PÃ’>þÿ|ùE³™(Dª%�ºÝÊ»ŸõŽ9©$ „ÄÞ�õ†ŠOôH…E#ò:¹U³)‘m ÿKÁbë}ÌŠ\7œ¦gÇïM˜ç�‹bõÞÐþ\Û¨Gîî?¤o×;³J'>%YuXÑQ“–ÅŸæÇFÀ¢L­uk)>§7¡C5_¥¨R 1ãKøi€e¥£œsìYAáü|S ’à-Ö×'Š©­ÿ0­í£_%H–j §Òf¦{ðçöüÎÒ:�!6ó5ZÆëœ÷ˆý©‹¬EEu¹}ûqJ”Ï«ßßþ3=ïö’Ø,bûþg,g?s›‚ií‡r„ÇĈ£ìœá¶Å¨p½'\d¡ä‘G±Æ`yìÿ5 ”EÔÜ¡#‰gHÄó´ºËݽëxŽ âµÂb[ öºð ¼d»CÜr<‰I¹|ñßìæñè„ñLÕ†&M,&੃o(��Õ!ŸÐ|ôÉ$ï®/ÇÓÃSŽx« Í£Íë$US0•tù¤N\÷ñÜ÷!�’-YZΠݦåÌ|õúo²óÉ�8êMŒ’Zt¦èàÿ¢Œ9;˜®SHä}ðûeUûo3±æ ÷ž_-Ÿ=‹H }à�b¬�'dš�×—/”õÞRþãÂ,ÐDB^X¾hˆ±ôPÓûyCš0� Ó%Ÿ¸/)OLÅ�èc%?ïÈõ…levÿ“´‰p‚›â|Fë0&îiýâÙ2 úµ…Q�\8…áÞo¾Ü_• >êÉPÇ¢“C3×eãøß ˜ÎçÌn�«BHì¨Ò}ÀÖåKM@«F—-“ÊlÀr“«õ³ã-ÊÈé½í×ü ¿éFÓ˜¥ÄØ¥Ÿÿ´!| DUÄ©3Öº4;.}m|•½ñËšUÚ^Ñ�Í£AyÑ×kÕ°uá’™?ŠÍÿ¿Fc%`‹ÚUŸg*wTç;~÷o¿ù–Û™'оs6³§œOàË·{% “8…5ýíîí^¹[B§1�ÌÛmÊ÷b£ûZw \È´3IN9Gòt¦ùl’†—™|ÿ†[#òqÙõw|B5ç":á¹úp2:@àá�L>Íÿk;¬‰¯ï’‹’Kµî’«’ëŽQ®l–Å΄èÅýâ)ÂöS£òÉ'*Â"+«V@†”ì¼ú+Úü’'× ÏÓž|^ÿ¼‡Û+ nD¢~¬œF½§ŒC`^êÜê �ið³Pþ1Péüù�áƒO†—¤úºpgóÓw �lÊG’%Ò'fsËì!ªÀ®Q&Ã2xZüþ†¤èÃÔ“ûu&÷ñ왫r†Ä [ô^ËER>d_pŸbÞNæ¯ÜÌÁî�ÄtÎ/óŠ[ܯLj—Íée7d._>Á˜ôU3±f?÷!w®ÏzYûËÈÈøÁß/Þ݃vlb /äªrx‡—?ó—mT©²BRRøÎ5�ýýÇòh¡w¢ïüëë ‰Cõ>rÏÓÊÒZä ~ð‚oˆ;YjÎwâÅt"^t¥#õû¦b†B»B#Öž´à6+;à Á ¬_sꌾÉBÒã‡%¶æeK²:ØýeZB:ÿ£Oò�,IZbøþÏÞß'GqÕÕ¬æµÌŽ@ýMOlþÁx¾óSýÀvÌtër à ͇q\̉Ö4ü¼dL·õîVTߨÄ:¼Úñ[]Ò}jŸ1¢oô–�Hâ�ø×é@�ï÷§W.@4�”°÷—ÿ¡§3`}Ç:ÅJζÆóN$"ÏÚÚÞòw–º' ë—É»œÞ?׿‰{ ­aÇ šdÏÄa1Æ>Æ X¿º �,Ð×,im‚zy^ÍÅç+q¤Nü3Ûww<aŒ'{í|ßœîa‡>¨´èhf‘¢ÌH“::Õ¥‡ˆ±N�è�+Fqˆ7˜3p˜×jÊ_™9ؼߎšœ©KÂePÍ×ÏÈžfÕW c+ˆ'�øJ™‘Ñ£ßSkä¬ ð«9Etjã/¼÷=\Ïh­I ü�wÛ@ ™�`þÁN=Ò“ÖÖ'�ò=‰Þ�ï•dÉ×õ¢à>xÿ×Ö=pAý•ý‚©÷éL+e73¬‡@­´a”¬‘MM(Ulà�zYyßù�lÍpLœí#ί>Í¿þ%ÌÔÂôƒi”ìBœ�œõA~ ;-—!:¬æ(æ¿“Êw" ˆ \A�¿Ec,nðÇ�¾ØåÓa¬’ƒ9dÿ|~%†rˆ×pŠ-òžvÎI*Œ�›¬³­Mb>¬õ1jŒñoø^×CÊ‹±ïªWª\O”+Þxzë0À—"ú®Øù %'ÑŒ8z†ÿ*€” §Ø&¼ü9Õǽ@’2±Xl ^4ᓹ�,Z.ûÕ]>-©Üùdð½á[Ï®¯uÞ¢¬ŒÑ]»Zƒ—²`oïCvkÿ(¥zwn�dÖüw¯HfTX&�Áúi;¡)Sšf²þ-üWòÕ÷½Ø%Eõµ3 ëábsb+ð,oBºúƒ òÇòªÊœƒ¬àÖ饉\1oi[Ù@Iò‡µgŠe5=�Á¤jrkÔ\?� <Ü¥ íSzÕ…A„%I*Éɱ–tÇá4;ä_¹êD5ýŸ§Ìü<‹ç¶Œ÷‹=}hïøÙa_ ^ÿ„þ��×»—e Þ¼G¥œÕR6…÷½DÑ ïê>&}M“G6[4’f€‹j“éy[¤"òº‘ No(†u ¯¾xV§<ðí C}—Êú½/?°¨Ï´�™¥=.-Íþ�îît‚(ÒŸ¬wš¦hýþK”ç(ß�!øî‚÷°…»­qÌSÃòé'– H!o"_ÍËK~Õ»€Öûó»Œæ£ì¨‚p‡?•z¶6§�Mäj1�ö¬ñäidu¡cðâîmiÈö# È¢Ùºw±=úÇÏ`j˜¹-âyýÇ‹·'cWRù"Âß q}Ы�¡€/‡ÒeÂOjØ{ŽePá¾cïRßùxÞxdÄÄîŸðÁª«.dÑ~,xYpc%ůžr”ŽMñÙS5÷ 4 ô «¹DÕzŸÞyðJ7hWýÍ{oËœ]U”^OŒ²½Ñá�¤aJ”\ú<ØLYa@šâì’÷^S&‰ñúK§ÜÁm|ìÑW¦í­ž˜?0¶ee¯¸¬œÿ¡­Ì@÷ 1 a¿¼C÷«]ã“èmÅûœsï÷þÆ/—Vºß7¿{f¥]%€&9¤›ÞŨYÍ�¾À�J�«1½dïwQ~F6¥ó+“wl—‹ÁJU›S#ÎÊe+V,¶)ŽÜ0 H/¾ºAÂhß–x�\XIW †T’tfþîh™ƒÆT&lÈ^øBIØòÍ¥=| 1æ˜ínX*wjúáÜCí‡$_<…´FN ¿ù™ŸDÎ8²¥Ëà <{nÛ­;è8dï’‚Û-¦NƒÙJ(U²ùf¿—ïh¦C4pä&ïSÇÊ¿ §ý½ðlz^é¼2˜\ˆöŽ5Ð`¸oKD‡âÒÏÌÄä^•ÿdøXƒ´HÒÅa<¿ª´�nÏÜ‹xºŸÆ¾*¥²§ÝsýŽùT&ª~˜y¯XnGÕÓžÞákB±ÊHæÆJɪâ À¥…æO~º"†[ Ë­Ð$5¢\õŠ?¾¯­`¼†Ø‚ôÞC¹ìùà£OÞ“2=Óo½pú�ø|Q\þ5³­‰àZV¡÷­£¼VÜ/ùÚÅwà/ƒ­vH‡1kŒ•(sý¦)˜ÒhÕ!Пh–‘Pô€¿âÇÍ.ȯ}eökŸéÓõÃóWt𳥄{¬ëJSÔ‹Ÿµ½$áÌ3q5ѳ¼ŽWkåÚ™Öå1Í¡²%¶Gä4¶anuæ ;D°I¸n�/Ÿ’ž°ÇTFd7À_¬‘¼aw?Y‘©lTyÚ®ù·7ý0÷�ïyYžKmò ý´[ zhâ~Z8+xÅ—&¿]¬2>w­H—r‚/Ó¼MN=K ¯YÔ±nÉb•ÙRP99PM<Ž£–Ko«ÙŠ¡O³¦Ý}ïòÿ*übuþˆX×7Eˆ‚ñé‘6kTcõÔI³¡ h*¶® B%ĬUÆ(…´ØP­k$qð\ät˜ìÝ•à"Åú«Úfûþ>JØÙ;þvRÕnÇWe�M€ëŽbÔc{êWŠ,7:ÿ2„´ûâÈM¦ ø%w>ÉwÝÁ׎Ӿ’¯–ãBä�€¾ƒâGÁJ¥âf+ mѺâñ{.Ä»s —ä×OE¸)„bM¾ÆÇ€dÜ ˜�'ލ�úUÄnìã‰üYqc[Œ]‘¦�ÚýyCTË óù2#iú-rF¤ºž*‰@ OÀ5Ý+¸™ì©|‡À>¼³É«} �§(án€&†ûýAB‰ƒF5›ÖdUö¶}ˆè4ØQ¥“M仓F1è5ÿt�¶«úÁàîPçvâöpY—Ú¼‚ÿ¦Ñ±óxÛ§¤£ü:Á�a¼ÜßõªÏï`¬~LR&qŸOhÂQcú_Ñü�Fuèy�f@NN…òu=ƒÀY3‘Èa"áf"G ‹�v|ý|av$Ô×c¶S&v£Bvo´ö«…O"™î/:p©ü.lP˜Ÿ¸ÑH¹÷µ@5n* D2�åKË—5t,Á}1þ°S ZÈygþ=�=¼|^ç1ƒàC}„H_»+"�ùéG²ƒ˜i‰H7ÈZ¹‚ÅþZ äðç‘?‹ñ&ÞO´Ñ1ñyLÀâ^¿©í[z÷êw•ßöyr�PIàš •Ñß  t…aƒ_ö|¨~ÎEWQÿ™\g'#è…!r6Áä¬Um[¥Ö¹•ÅÍ^c;ÞKë¡[¥oü¯öZŒ'èFSõDyÞ©x vô  |u@&I5‚0 £,U?ÍÇ7‡�áÚ‡å’EªleSÖñô£¶ïC$ˆÁ·øƒá?IÇÌ0ŽöåÈj÷ûñßúè|º%�¹§âå³Z‚Ú[ÁKz¹„{ŠÇžuæg#�6eиß9 í a¯Ì„øª&Rpìz�ÏaèÕÂqTT!õNv’ìžÖ¼¤)ŠI�!Q<§ ”‚Û�"�õ °×v^­£‚(¶Õ¥t¦¨Æ|¹%iÑP»mT_iÎü{k÷3ÄŸgÀõâZÀƒÒÏU–$Ù­2*v¸É`ö;«bu?@êšU4ãÕ¢*Em!ØŸ–à ˜Ä2+W”ûN„QÍëÞ6C6:Þæ¨$´eiæíòD#zrs)V£c÷9?w¹è9¢¦?Plºˆ-hœ=hÓ›·óµke¯·Lg¿Ä7¦µµ)æX ©”¾&Ö¦XñZ˜ �éu÷)³ ¡ÍVFyÂf·›b�&š¹ÈŠK¨¨§Ÿi•Ÿ¹X;H<Í/µ‰æ:ï,P¥–Æ,35dv´‘Ÿ+v3èÝÁ«DšÂ&XkD,×¹ËÄ~¨ 5Zpëî~"£Üè-λvU®X½f@" N†ÿ,ØAñêizcKgr$Ú4bE‚+Ò?J^ôåe ðí'&ª3OQIjÁÕòí¯«˜)§#�ý„ËšÃÝŠKa»ß»Úï¤Yœï–¨½ç•U º¬™§  Y'Å2Nåñ¤} ™álÍLNµŸÈ{÷ ëUcîk83Áoó›äù§û_À^«µVÁÈtA9»ÜD¿¦©¬ï}ŽG½Ç5ž¸N‰z±…=ªª‘Üz;¾3ý®f²Œé¢šÍÙ3ÿôåÞ0’ XKÄ« îÉ‘dfIéeÏ\M!Îÿ>ÄùÞäTJ9ÌìæiÅJ`2!÷˜¿ù×§\ÔÛwWÞ„½&Ÿå…3ÀÜÜlèÎïÖ±ä·âÊËâž¼>CøéúkJ¥ú^«v‚¨{ZD‚Ò?BFÓ�«KlÎÝ ƒçS(Œ noÞÔ-í–rí•Á“‘؇{ ÃLü‘xÝ2(éûÇ]L�ôÓý�†±Ó·ð+YYëI×¾ Á¬¸´“«f¼'r�jGJ¿ªWÙ- €ƒ©™È©�¤üJx¡??™„§2s‚âèI�Pšc%�Û¤XF1™¸$š ‰)rÄs)—æScö“º>– çGbÇ|Ëþl™‹›ÉzYX¨†û±·» lUö÷{½7B CØÝÿ¨³yjpE[lzŒçß%ó4eñ�ißµ±U+‹¯JR¾ûñ“Ýlé2­zýS70�†5«´?êÔ'2ŠéËÉy‚$L³Qããm9r 9�`›B‹œÁð¹LCá‚)üoÓr{Žý¿‹Ñÿ¯ýeg<}1½›÷¼þÈK+I•IZ™pòLâá*J²è($(¯—Ðåå¤>½þ…þóBBx}ï5àN­$%Uä%%©TœìÍ­lÌ�¨(µ%û…Ïxbáöºùb9•Ñøåjª:�¤$¥½ò {$�#³,ù®v$ª3|u“¶jÙ× {´[8h"E¬‡ Z÷uÕ°F^Uÿ/]¾ˆË<Ä2á:ð·CY¹j³^oC\¹¿àŽ»èÉŸ·�>�´�TybÃås½·Ùq1Ù©ÉBêÔÈc⌗�ŸÞJMºo@ozƒe§» ¨;–ùç^œ]ÕÂÑeIØhˆøRœYA •aR-ËÜ�2¯ˆ/ž ¯“¿aÓ4òHÞ`ëâ!£ÄPÝg2NŽÈŸ©eY§ï~âẳA» ¬¥Ufß'iöúèv”f4¡Ù¤¬ò2öÖžOûÌëlï|›!f½9毾{ß–™u£|7mÛö-1ƒ?þYk¯.}”äü{šw~çÝ?Á�ê Õrx×Ûà_*m–#‰ ¶Nž£¢¿C2¬›ø¿‰b¯üž”ˆÛ¡…$™;—„yDUŽ·s³+nkûäÑË:¬Lö…ycùïÎïƒÇ´4šëo=³F`8cM³WÞ —jÍé…Ïö6° ®nP;épëñDãI<Ç› T‡5Æ]ØI–~Í MKrÛ­eÉ›*û�lÖJ.åCMÏ›cØ…vüN³È]ŠÖFîðQN1QeêS"Qx¡†Ù‘ç´Ë±;½dæû[«±5ìã¯dé.¸Á‡};TÌñ’¦©‘PÅe:û¸.ºˆ l'‡É:²ˆ1ã¥¹Ë QÞqÖ ò áÆ,¼“ï‰ñrÿË뇸 +ÖlDXFM*ÜÙ}ù›§ ÖóJ‰7-ÞÕû8ŠÂ¿Ú-üºšB9.þUw/RÒ®&gbgûGXT&6”pˆJ¿ËÌÇgÜáÎÓ-²žÞxäÝ ®•&ã.bA(½À¥|ÒJ¢XþêV‹“»NÊ‚›üíç[õÛ�·J·ú·Ä¦kñZ·ò 4>´º‘™7vL.ƒ¼tþrhÖWå,ˆ¬Ññ’|Ï!W.×ÓŸ=ÅŽ.o2A1u¸,\ïÑâÁŽ�kýû÷ºR HÄBPN°ÅcÍLKµk4¤U($Å}Øí¬þN«7j~Õža±žSŸUcŽ 5Ì-*Ñ­+Jÿj¦†Ç± — >o[ì´¸~x>ÎâÙÙÉøîl?9�qüýøùáååä¤ÝÛËüþ[M×ÇRà‰eü2a8JîîlæM‡OÒH›x·nç[±ýiw+D1H¾N‹MDv1Ë“ù³­bþ†�ªÌ¸|SÌ—6Wa´*Á-*‘]TÓŒ æIŽ5*úHvŒà¨IAúŠó$œè%c¿¸2Ë—Ž†·£H”�÷P^vëDzÎ@.ûDƒ_RªS¥–ÎC°Od[�ÃëyÉÉןôMOé•)$ç|ŠzÚ¦?�ó!¤4.uhTq}�¨h' ènÔu…áú´A«ÛpRlLz.¹�VF"DàÇv1à¼P\5yŸ½Sü½k¨‹ÈÚ€sW4Ò¹VåWÙ1 ùªPü÷#�"é«CÜ—‡Ñ¨€a¯Í삘V¡þž·xÛQ=AÖ7"•Ð>Êts?qHVy­f^Wã˜MŸ j>L1Ûö°gŽomDn{Gä|Â9í×]�OsK#©Õ6ެŒçfÄ·Â E­&™w+p=í„Ä;nr_ÚŒRˆUéºÞ3 {©ð]ýx‰�5Ú´iÊ›œMÄ”³%_sF®=Lr?–·T¥3éÐ(\&'pÈoo†vN²ìñT=ê´D5\ÛEvõÅj]Û1é„‚t–™›Ìª ”oQÎßǹîÓ‡ñGQ–‰ì†¿Œ(Í]T˜üÖäs÷å39ã—Ðü¼[ÃÖŽÔº‡KNs°ç³çÄUY"îk=–F:LúV‡ÙŒ�ÛF>Æ ^¶?ŠYÉûÃ)ÆÆ:fÁ£WM’9õ”«Ÿ—D˜7#6Oÿ뤳§l bÀ?ĉ°�Šyšê¼ª ›9%Üþέ’ŒfúæÎ0™[Õ-kÌ<õ-&„—Z`Iä2¸ÙIëŽp—9;¨s”oGpfÁ§ß:Ô‚S¿Xõ â6k{ÿ·›9ϪêA8Øþò\ͧQ-.€õÝ»ÉíH?í‰ì>ô»—ôI§|€ZØîÒGIwkA/þ)’‘ã¨"3Wƒ\â›5ƒç²\NO³¾;k™$%¤\ùJÙH)ø#.Š avþpµâB_þ× xɤÍÖ6·‰Ÿ�MVø ì<ë-fÞÔÌD“õmk2JÁ¼¾¸€O–D²ÒÐ7«�hÓïÚ FFH¨ 3×ýcvò»×üVÁ5R;X µéÉèX/æ×^ ÞËÍ…±b ¹ùøzÑ¢¦;i]ˆ.\(y e ×ËUF™IŤ3µÝè€À¢! aú!û ƒNos¿ŒGGÐÆ8<^î2@ríh©jÇ€ Ï%¦ËP�/…Cæ¤f�ùñ²ôæl4�;A¸n(kc € i'Mè–ÙWØ÷½0›‰P •gfá‚sˆ4ßq¹¼}Ù�›úƼxd„°8 ³°J(±ï(”ûÝN¸à+öaïãjy%ô2uÒÌ(Êc‡Ø;´ä -±£=Pë%¸²s¨<ÍìðÐÛûú®“36w4§Y¶Hr—Y2³Jq1€¨›Ä°ôÝZz,~JÇÑŠ*ܹî”à0¡‹±š*ž±Õè_‰Ý±fŸ¶Ã¶±=¾÷[EfÆoœE¸m’Üø½BwÛ`]QÊ䚎˜orEd°µ�CÞíï�_²ö>—ü2µAX%2;‘ë "}cíhœÐÏ9™8ª±E¦o'ÿçE9â%à®êƯð@ ;¬@&¹Qu(!\øBMÜÕ]ŽîG†DL"¨ˆtU†ìÕêpøT9éYý�ׇ¬åFðî�ïöþ çœÛÃ�ª¶XDÒ$oÈ_ænÿ�­�¾Ìc…™ö‰D (´¦ãÉFàBy„m—ïi¾Bq‘g¢¢<Àæé ò¯gÜ«>|'^1¨�I­Q·vF¼z±‡ïý.¤ðÐ}‡õV°ì¸¶Ã}>Jl›æ#B“~Æ ô Ð�³½XôéS:^½·OÅoCèò$7”!ôœwäöʉþeMÔñݤêpÅÒ#Bæ°”z¨29…8¡# µ»Ù„l¨Ù#MVc ƒ} DHAfFh8ç¡ûˆy5¸,DÆpÅgP�XQnoÆ`¶%xd%Šé�n Ö±ß8:�²‚¹ðŽåǵõÇQó]}*)ž}a�¡ôÿŒêÕ£º\>v~`Û ×æ‰~š òÀð`?=ÊÐÀY®¼Ð!÷2fs®€—m.ß8Úïo÷‹@dG[CM—Ȱ—z¸ó‰‘+ ø8tÀ×;>åc¬åµ®Ï/õ§oŸ|š‚¬ã¬ÈŽ é©ÅÎI·�ÙˆË3-–¹>—ü¨Ñ¸!¨>qÀÖ‘DŸQÅ¿ŒÝ[|Dì†j^†ÏÈÚ8èk„My«Þð‘%ø‡÷%Šu¥ñ˜ý^ðØ_/Ñkxƒ>.´ÔE9²%¦øsK#ú‚€5ã~p»�qéNÐk¿~LKZ€Ç™�õ�¡pRxóÓÜ7v•¨o¼õæb— 1›+Ðô åQÒÛé»rK¥%¡"èŸ5ܪ7Š÷cÖržU3™$Q¾£¡‚=xû�÷Ї&ú …äU*m2û6_ ­ÅU{ÈgÙD±)Êî³\eÝì˜9w]U›Æ%·ôH¢šŸe%Õ}Æ�\/¨¥)á"Y䉚Ø<Å•¿‰fÒàN¿‹÷=�âjpÑ/h?akTŸF*œÆE’±©f~Æ6ŒÁø.åUF”êõ¢JìéaEmº×爴gºY™ºÆ%~56ÂR§d-a~ eÄ̲ï) Á€ÇgU)k‚Kú.¿e÷}_H|³[¼¦ÿŽAg G¯ôAþ3¦KÊa!N”B™¼7Vak´Bû¡À‹>Å[ÿÃ[ïó=š%=¬à§þÁ¯zàÍ¹Ö ‘û —¹ðtþ‘YŠ{¯Ó„Ç ÂÖ²ä-í¢- ¦œ. C€`[6A�O£Û þ…)Ì_œûÅ!ˆíiбç /„?utPî{Zò£?#âËÁÞó²ïĤ÷Ó>•n|…¦-»‹&wC_VÒ¯ˆ7 ÁÙmJ^Ë—2-’pTlH‘R1QCmËlçÊü�H»K»sëÈ2¬÷9E&š�è9M¥$[UÚtàþSƒdú Ý§ö Š ?ùë¡äòiH�°Ï-Ô?Ô´æ„H«icfÂwxý½ô•—›�„›ïþIþÃA½üXçÛxa‹HH‡Ò)¦(­*åsCÉ㺘‚WÇãïsÅ£Žr¿â˨ã ØTiSaÙûbÅŸ˜Ã†u˜'æmŽÌuÅŽ©)¥› ‚�.ÃÞüê©Q1ÛéòFÇ$7¬>q�Nkúž¬1XÖ§íS-µÝAŽ:ÕEüÌ�ΫÚIM+]Šsˆ>¶Ï© ²¨çƈ S rËö/¡Ü1…ðÜýéá*[nJ5n€ÃØj{Êt¦"§Ë1oÁ†h:ëJrŠÒ/‰É‹í�AŽ%º„tÑß(ʘÜjmJÜ„ŸþfaR =_2@1—ûi;ÇÌ‚°¹‹µ™ˆ‰#ío´EÙ~ë&94Î _žaVá¦5us¾©fôv{ª˜Šì" ¬6`™®J0‘½f* ž ߆¯YÐÁ<ü±íÿXaI.l |?¹»� Z õà�¤vž-”±æy‡`)jV)D¨Yò4Ò°�æî8LjCI~EýŽÙ›æµ3üö3 é¸äx ²A€T/÷¾±FÒOQ°2°‹ÙÛ…¯hÒÙ—S7çÉe—½jrIw‹-¡íÃ"Q+']ôÆX-`KHkÀˆ”AÅÀOB+Iür”HËL¨Ðâ—Jžÿ+â=buŽ!åqŠ�«ó2Ò,i%Ó æCàíªx¢2ŠèBq·Xyh`‚39œˆÐê­½E5?Âìöw¦†R8I—ÞF¸*êㇱŽxñªg6æQ¼$¬È';Ÿ’?ÈE¥}* �A�cUt¡}Ãz‚ÇáÇfHcêçü=’ˤõå«OØ‚oROsw ‹’~¾Ô@plpYÓrÅùè,ž=Ôi³“ñTeiXIí߯ûÃt ðŠ~¾"à¶kÈHe!‡#Qe¦î±œ×+Æ*Æ^]öB¡Œ ÷ÚßÉüÔ½Ãðccvº¡c|³É�1u¾§9öRê«ÕR܃½]šÒ,‡ݱš8ª:€‹@\¼ñ28Fwýû"Yÿ½¼?Cú²€ ßÖ^$>}Ô™Ç�wd©¢Òª–׫t ¼ò PÌú>|ŸëÇ�Àýz«åßæ•¬&‰«¶É# MØSTQœwÊR¬áGV­BYdÍoÚ+‰“‚< È¾INÐøél‘&~ˆ×2ŽÁjr¼êÜ9c™3›¹Þlð¡÷±Ë<ŒÞï/Ü&:¼3ïÏ¥ãëzæ·(š¥0ˆñöH¼$«K8Z䀴Ðu WQH&Ü]¼sÝÛë«:ëÎj˜ïÒ(¿Ð|'Þ’ŠÚ,Šz‹Îs×{%Ÿ¼»û»Îâ wu`…jöG⛦Deáz ©‹aJò£0'@Ö½�M?T|*ò®øoxHÞ'!„#a¶Ï!B_4Øu:7Hxë2O6ìÚäŸÁ^Ïzõü6`ŒGIðËoëÍÚùyÚó¯åd…JJ½H�ÁÅJJ¨l+…íêÙz'6ž3mf‚fÆyÍ_ÊCM6žü䶘%µ“$ao [‚Ÿh]@¨Éɇ<Âçˆ]ØL–ò©}Àâà±-‰]ƒÅd/© Ÿ´MŽ x,|y­Ê¸©@¬ðÉ�ÞÉÓh¹+èb@\øœ†žæ‡’5\¬J$}S«–¸¾CòÈ@jĶ8AËè{Û‹–‰:RÃלkAkú�×>PÌ4Šú‡Z‘zTµj¦,Âý'6)»O§ƒ¥ŸF´ZF’zy¦Þʽ0Fö;rè�,6ëa5mwéE@Süfµ (ÿVá3¥cj� tùAx!ÜLà#\œ}·ºéáú ¬!¡¸PW@$ÕÛ[?}â.C·ÄÀ n�=sìáíBÈѧ& íÃc›aÃ鱕Šù¥¦Ç·�PÞ�îs8Ö)ÿFx”G]ÍX÷Ãg_m¬²[Õ XX­NŠWµwšÃÓúÌßjà”Xÿ§]õØàéÜ@ A–‚LLê.ŒØW2â„»ÈSHvñ䇮+M]ˆˆ�9ô`Í»]ºP¤g|�¡/×�@èX¥k0æÍ™ ±Vl ç/D\ôG°í�‚ «xЀ@žR’ÿcnºt‹}w»ÀakÝg›$q“|¸éá­uòÐ¥èóžïf£QØŠ,9ÅkÈn±Ï­œ�ËãIyN¨~z9fSBc²ÊW•§Eûe¶K!æ}.èz•Æ*ÛAÔ^PiE¡âP€¼{çG¶A1¥Q¦²o‡iHMµÍ·N`ÁÒjZÚ&,I.ÅÓan›]+mˆÕÁ=dõ®ÚCÜiÜñS†>·Ù,J·‡ŒÓ¤ –Ð;ŸE ŽŽp=·Ä–+£îÚý7L‡J�©�Áû†aÚ9�ÅZ!{þVé°Ã2g9jÊ"FoSx÷Û]£ª½Tó ÷3O§HŸ?¥2ÌNÌ1{·ßÀÍyh¼-åý<l¦`É$ÇI´Lî [ê¸Ü"ý»E º�Ô°™²6.\Ð0e=_ßeU6ù´z,h˜�À‰�×4ê022¨•žpÔÛ90Bó힥±ÿ3 ˆâ=ã¾ç"~1 Žø>†Ò¶L"}Š@eõðå’±ÀùŒ†¸åe1Ý$sÈ3�¤¤i-'( ªŒ}×ÉйŸ.ÊѲ­,ãþpŸƒ/2w°‰prÓl™ºO[h7p J¯î4ø†-#Ú_J廢8õ¾éÝ¥òö¶>Œó9ùÍ4 i˜ŒÊ€iàsÀ¬Ëˆ™Dƒ"ÆûÙïkQë"[%% ÷,GsûßÙ¨ÊAÄ ˆî#ð™%¸%mG ói3G(#÷EØÐ•%öæ“~ÛÏYý鍸{›x—v¿f�ç¥#»lñˆ yIVG‹ãDÙåWRmûåQÎ_É5½âÉk°™•Õm \EŒ†Ô&à~&R$´ƒ[ž†™?í¢¡•ØV¥ÜQ´,:B˜~¿VWØiÓù%N�v·Äc©±úU£CŒþDºm�ã6É,‰Û7K7_Á ùΪñŽ®ô½=´ß –,çÅÕŠ0 %I—ëPw¥óYмEžýžSQ.‘K ù!—+•xN—¿ufù uuų¾N@Ñ�0”.øë™4¹ùÍ]qBiê5Œùå“—èkoü%È/z¬à'lÎÔ'¿¾»üIdÙºÇf^ÇóŒHÊØBóå'Ù­Ë Û–åv•úmÔRœ8lNõƒ6Óªé´×•{Ó°Ù8AÚ篋SœæßcfD0§¹LÏ�ö3LAl»·.[&porÞ^KE%ñöw£.”9õÞèq’å’Оšõ¨aLáæ8Leé)°l¡ŠPf{µ]¼!÷šýyWÑ%ðü¬ß¡uÛÄ8´µÉ®1¥NËwÙêhLöSÃпZ½—A¯M÷�ÆÁË’v åÍgT>ƒƒ]Q¾s� +Ú2ïªóߘڴf ê kd1.t…½ù¸‰�½Üw�» ŸB¤«ç¬~?䃇ÒN ¯ÍÔÆMÞ­ûL·!>NL­öU±˜Åö›�i6 Ü@Uß#›Ô‹^v æ `œEÏ™ÕÁwM*AYçû6&/µzWâÕfÕŒâÜÃëYÖ©ö+BPÉ«|õ§„>Ã~iâ3“�{‡ïœ ‘US•Ò¨?�b8•¬û¼†/g%úˆc¬Ü.PÛƒŒ2 W¥{mâc”BªœC™1ͱRsPÖü·™ |”áFåöãQJKïÝÒ™¦�ÃÏ-�Câçëø€\ÕšÛo¶²•æï„ÁE;}½¨iœ-sçRx¿OלÊôoӮݠ]wQ«ÐL"ˆ­l&®¥Û;£Îúƒco|Ÿ‰áý^K„G㨯žFï¾5Vfï¬79fLNUh~(sÓñ"X—€欚 ³|†ˆ“¡u‹Ó~“ÈÄvxž¨ÀN„ŽÍ½†í’­Žd’òžÚxá›O›^ž¹ I08CVä·‹º"b²`MÁuluòž¿ëü|åí6=äâÙL6]KôîC^‡�Ä"À›U¢©5hІßiÕ�µœ;}íå�“¦�¢fìUÌý£Ÿé§ZoáÙ¿ž›˜�w¨ò;4JW²†y ~»cþ=¹ú+ …Tî¬Cù˜8ÞQ“çƒFN€y2ò"ã3…Ý%O¼‘|:êSƒº.Ù ‹Üô S$ù¥6¨_°£ÌûX5¥,+€'°‡u;}$tz!ÒžêW{¡ÝÒäC¨‘÷W—B‡*¹ïäƒØ‡/Ö?áàV‘»Â«²Ó‘[ a¿ÓÄÑaðå@b‚"F´z 4JÞ)gäÿÁ5�Â=D% ¨+¸¶›¯hUëó!l³n¨˲?~#@\6�_ÜoûQ&ÕÓúë_KþôÐé³aƒJŸ€YÇ~ÀuÀ'R7Ñî#£'np¯¤6KÙü¢§>g¾¡ùý�|רŸÑ¹–´üs‚ Š�0諵ª€ `iÛ˜‰"ãtÁM6šóÓØR³�¨²¤²�î3^–ÜQRÇ0*!�ª7]�ì�ë˜ð�Ÿµã#Bü@à%-‘�ÅšvĨ锾%A—*ú¨Tš]F|8R«xm;ÏÄáwñÆwŽzi!Âõl ÏòŒÄ[th7»Î\¬B¤Fu„f¶æÍN96G÷�ÁH½$Cœ~T;'èŽm;‰4þ,c}há,Oº‚ÓÉG-êþŒÿo‚Úï¦+Šh¦¿"}.Iˆý-#ØNÉÓÄžó²ß_ Ý ] —Rì —˜|Ÿü”äÿY5©ZÁ ô[Ž33‘²bÖ5òúm“Av(×$<Â*â-©kL^§BØ™³V$¥tñˆÊÛ¡¢«q*E²ÉFúI§ÀéG2%d=¯bþpÕ|õtIø 7.Û‰˜?Ò RƒX…F@É@e¶¿p‘zg eLŠ mŒu[ù“8ÏŸŸ%.¿GCNg¸j&Öz?ªOîS“D«'¥ÂœøËÈܺþÞ°y”R(^�\œ¯jPŽ…§ #�nÿØ|÷.â@]&5j¸+"¡ÈOõb“ƒ;í¼3§€¦”8a®}¸‹èOsü8ÅO4o”Öò©”‘HÉ2®ÌΤ¥’ÀëAÀÛG4ÖœbäñJ›yÚYøo™½6õH šâNùÌŽ/¢o­<†DºßíèØt]¡ xêH´Tþ<0‹b¦°õ°P4Þ¿ÑC÷©Ófý¡ZÖcRú¸Ë®Æ®.ðþg8u¥é\)Á‚C+fÅœ€á"ºØ�?÷)gs3 ùØɋâð%àqÂõ‹¡îñ»ª²�R�â�°ˆAì µÕ�í¼’;�\Í„”?ï£Wà@͡ʠd��„Øøµ–nÀì1ß3Iªe!¡fòw|ÿUÔî Jo›’KÛØr¨sžûØÄ†EðÛª�«”V?­gi>o+†suBACÞg#\KŒ“ß;\ìeÜà Ø;=ÁÍ(Õí®�£ $wæU N·³CžåË/‘[ Ý ›”ofL~zªÇrðËË#­Mc·a’*NŠ>¼[ŠÐƒøÏåô‡ ËÄeúßZ9ñ+ÄŽ•t¹íQö›u}/ƒn˜Ùƒ…ÿµÊîIo�’Z—ƒ'oöüvž¦pÍUÁ† Ó@�-g†¼Dipzý´Ä�|œ|W˜Á&hS‘ÚsL:§¸7´múÒõÂþ ú¬µ7:ÏŽùÙ�—ÂÿP!m#F˜þÏ2SæPE'� b]Õ@çäˆaö*¡ý“{œÁ3ø*YÅJB«ÌYÈ–\ÿ)çþè-·GewÝßC.ú\ãæ’K?¬û¼Ë¬”øKõE… EÖdŽ\²=PTéz; yß7÷A§f^�ŸÜÚ7Y| ½Þ�Q�š<) —´ ¿¥›1ø…³ÄI<³]Öõ%Å^÷BŠÞ9É”ø ‹NóÜ)Blè °z'›Î䟕#¦d&Y¿�°— 4›L'ýGÿ7!#“¾�}H‹…oÚFRäÙ:-û/jZªü{ ‡”·Ízût¿þ-=sÅš‘qÉMG1BX¯ÇzûëÌn}B�è÷Ír;7£uzüàû|Žz/TNOâ` çl\0›k¤_Ffµyšxùr¨_S&_“©;‚§a-{ Ïuílox·u`¶yXôaúð>TŠ¼Ø± Ùü^òEý§âC½4I…æ. ;läÝð—J¬98(Õ Áà“þýIŸËQüÇÅŠµ–iº*õ‡£G"^€Ím_žPïiË+÷¹_¨Þ„+)l’»‚Ä´°†S‘ ‡c ÷qÖ.őݰ[è…ÙcûãâC¹ˆtˆû” .À×2¾1P*ïÓ…vD#mç?-x¡l„/ÿ8ˆTRËt³°0Ɖ@éw”åW°²øJ»¾ÕaÀæ“kAÀL‹S~r!hÇ4ÿî;]”ÓðÁ÷¦˜†È÷7 ;@Ë=Z�ia Т深³K¿<òzEL‡§@G®†ä[M$ñM•r R6&ZîÚÌÀ.¥xÆÈ1,·LæCÒµ}Éé/o¦ç„îÀT¬t/«i[€�¡ˆ.f ;z½3¢zµ}Zb}¸OL¹v^ñ~F“˜šL»8[˜<í‡<\~CÏûœ°ä’=opŒó(XÒô‡¯õlêû¼é΢›­?f—d “а÷TºeÔ˜PÙ(bÉ–Ù›^)SŽ6H‡¤þ;fý¥¾|à~ò»Ÿe=àl"¬™tÈÒ6H@<÷æÉ¢€¾ÝDœpÐG£'bíÕì&§Õ¶×cì]2åim¶©¡t“ËíʘΨCºØhµØ–ßkÆZà|ŽÝ#ýCVV�jÚûÍ‘½ý«câÞåÞª%ã¿é²,`¦Z½FMµÈÙAˆm(qNëãí,¨ž/ …õØ�Šcäuä¢7Eí*Ÿû è(,ûuáó«Wµ’�n`eX¹ÂÏÞˆþHGÜ-ß~¬“ÐÛ#¸þÅÉ`æ3£K¸Æ¾ “\Ÿýwoä�äÎ4™é玪V¹=½ç;à°çÀwŸÑEöScˆì¦Ú×?pû•OÚ’›~!ˆ�kHFzÆ*IÌœœè…Qáðh+.àg–Õmì{å”ñìÚ±Ð6ºcûì'6¹zE³F/úg½� !ÊIá”Qíb}é>ÍgHßàêÈY,aûæ!M?Fsš�—Ùpßm«âÿ~ëJ,“¤ …¼Óš{sÝúóRa{qèÇǺô°3zÆë‰wÂ='}(+a›=)ƒ':¬¡ú.ï_I‰÷‘™ú�Äbˆq‹Ñjl~�7ÜÊÝ|¼$Î%4W‰%Ù)|W>S!•x[Æ} Ù†n©&KV,<©C‚ÇÐ?�¨(0ᄘìO£–¬Ï8ëÎ÷4ûÌæ/´c8 ýª¯Í HÓ1˜’z­Çy¿öåû£«£·‡TÚ‰€û†{ ùad‡9›Øä â?­.àÇ$uâÎýåÚ¡~ð3ŽóÉ ŽtÍ0€ì§$À«Õõ¥=iù€jkç^ê~힉“0:úrAztSÕ#mÇè$ àð”nvH°ÏXBšUOS³`‹ÝFý ^\‰vG«tÛ©tpaKMëS\÷êÄÆfb \î…»ê‰.FÈ3šÊ[߆˜È0sH/�ò+‰# '廨–GEÀ0Jû•‚DûXÇ–Ú<ÏÍà}/Ĥà™�÷*Ò#øæƒgâîvѰ˹1dâ½À >biV((HSñã‘S;z9+–VO³V]ÂLñWÝ"ÅgpBÏ_3p¶Á‚~™í¡ô6 ½@’[Ì;AQt§(icak¤ !ƒfÇÈè\¡M«ÀUøÑF T°?Zyàî)"9# ³£™à‹¦¤õ-XìiZ~ 2$Üì<†|Ðx`ÙJ“qج%c^r{Ð Q´áz.|¼áŸ�\e*gP#†Ä•g†ÎwÏwŒ¿c6WeƘdÓ„Ya=k¬ÈgÔãù�ž]q~ýë�äÊi‚#–Ê5¡r[‡8éø¹KM«ßv¡˜ÕGÚM\@�u_ÏE£è÷zGóñrH:üÌËd ÚÿY·:‹¢ÏGúP%*ë¢IѬ@RRS¨ÊàA÷È�Ÿ\Ž=«èÞ~Ën/ˆcÉÖaãØÊCO¾rA˜áeðíìy,3b6ðâÔßÌ…x†ñøÎ’B*¹-±ZBÒ�ð¢÷\5$Elªd–l:§MpéVãâÓq¸ŸÅe£ÞÒÿ‘þþ¥ D"š)¶x`aThðíé ‡ ý#B‹÷ÿ½€�‹ÀøÿV@ùçõoáo+Çåÿ- üßÂÿ- üßÂÿ? !ÿ—œÀì»á7ù¿ utlðfˆŸÝ|oæ+õÐß}“Šd╦9ðT¦É}`¡‡(|\(ÿœ4‘Òv:Zgõ0zùëãÜïߢ`m•œ}É¢IP%ù~Ýé0,Éb^œ÷E¸pmìu•îî÷¾`ø³Ž\Á¼{‘‡5eÀ�*{­òëÈvvÚæžâ½ ç}þvßǬž,ó jÄ%¦‹á_½¯ø<¸6\ 4¯üÍÚ-ÎòôÙ§ «»6Ê‘%|qÌšsŠÁì�(Bjç`_qì-rÒ² DØ£X õ �È‹‡â™lº�f[Sþ[fDáócº3݉ù�×Û ¹ æÅ[{ݲJtÎð¤¢ÙÐSÝí‹ R“ÎG7Ú�è¾Ü^é&´)%“­!—;]Oû¸nãi©Ó8Å„}Å+®s¨Q ?î½)(œ#�»‰ô´%òzÄÐIµ×^z‹p€«ÙØB®ª{ ûÇM@Ÿ›c”êÌ”'$$ï4Æ`k¾¯âKÏÃÒ³!ê½ –_Ü‹® ÿ� ‡wQ[$"^ÀÇažŸ~jþi‘î;½wAOÑ.°¾r=EÑ�ã3�‹ý¨Nè§ÛÝæ-SVk@ï“èñ~êQŠ]eìÂJäš ¹ºÜл}•+>Q{íd»µ$#„ïèCOTìÎößú?êÓº—[‘XÉ¿¨ï£yb;k�†<�Ùìh}È ¢Ž[Cì;Y ]òä75g4Ú$ì œv¸ëK±þ´•L¤ê!Š�“ý­á÷µ7sʲR¹(ºGØ6ákɺ¾½B‡ç ÃJSŸú±G’ÓÍ)�xžiÝoœçšgú¥ê…lùèþ¾…¨C­­ú„)iE¿óÀø9&ŒKnÀtšô½ãsßû|1§ÂoŠA÷ö�ƒ²#;_ë�Š£„êr«o˜4J£©ãqUJXtÿ슀þ\^T>ä“eŠþ¾x7¯ù�z|Š�û±@[3®XtöA'rܵ_Ìû«û8ˆ×t|°ÙçÃ+¹žn&*‚¡åšÉÏRAîhí,'<êüŸub!£Õç`bjÂïe†Á“ž×HŸêC& °Ôô;äe÷Xþ¨¡ XJ-ð‰”rkÑ/02ÇM¾ì¨—äbËŒÃòµæpÁ´³o?é#—Kp%i¼{¯‘bÓ@¦3YÜ�oåxºÿEctô�öú7˯`|þ5d¾Ú VÊ€:\M#¼ ¾9G ª\ôŸÓ.áR‚C¸ÓYŽ�âßî=G˜ýY•·Ð¿e«}–|s «Ñ6þþ$Ç0Ȳed£,àÛ­d7xú†£6étÚI‰“�—ÜLïýÇ1M=cÀϪ1–¼´Ï\üØêŸN� j7t‹Ë~§Î¤þ:ÿÁH¬h:Úå&ç’ˆxz[ÐïË2·�½IMOëôPð•J�µF£°Nÿ¶íóþh ÖþA¬;lö³ì¦±æUÔï ªŸªÌÇéÇÓ2ºÛ³<16üUW[>-PôÜ?o¸© …E÷JIÖHñ Ép§~¸Ý¦‚릒"¤«�ÿ«ªEºéþéxõ~ûB=Æ&äËl‹C¹è{z²tZ€Câü`X”ˆP1ñQ5Œð�Üo2ú¿åð< UéYã;X{A%;‘È;ƒÇpù¹ÞìFAµ7ï�§¶< =$¡';#Kô›bêpö:\"ˆœ÷2J§(ꥼ9–aêšá´<Ž º^ðpœ°[Ç@ÏJ§š–òyý8Æ¿rðó–_‹½³º˜4þbœ ÊTtbÛåöûøLŨZN`êµo¹º¼ß31ü5§ÜMkêûó»^„:ˆÕ; 7•ΑÍ[‰³´ÿtæ.ìI‚‘½J·ºµÑ©ñNaÎ4Îw�éÛa�´³~æS; uh—Fvß,é0rÛ�JñQd™ ?J�܃Ј‰Â2‹õÄ@Äñ//±ïÔ’$«7~°—~AÅ÷‘•©éèPÓ1IÃUÄzSmÈLyžŒ&~ºÕæ¬ÿ£/둎ó™ð³Ê‡ïêì›dîáGc¼™f¡ˆ¡ Þ,ê8¹õ.ÜB¢ ­Þ–÷ÌÑ"º×†�&fŒœ¢«ñ¬D9¸D¾U ÃY¬YOôbœ&’|§šcµéÂwM¥Ç,×IÇ�«¶tüö³™ë’Z-Æ*W|¤ã>Ì_!m/iaÒåk%™:™Úë…øÊ¿:>E&|"xù~w~«?ßí?¢�×X´#[ÃMˆ\gy_ûWÃæžUCÁù£¥T@å]?Ü£Ï,ÿíR~Þ k|•D”½õÛ6_û!<еu·ËíŒåœÚcÍõ6¥þΠºË>gýÆ�·—Å+†s<Ê„#QWYÕüïGï ?»”Pìíf^òf¬¹�O©›–2•”¢×ÚY ’ç ÑÞ”!Kò’eÓ Ûsš•ß�Ué?ÐGŽ~|OШ—-Û4†ªc ø /î,6¯Å}ù©•qaZ瀳r’Cû#†£Õ/B|�å$¡Êæ{ϱ *¨8ïYuj7Çé„­ã m+¿Ü³ œ®T×Óߢ6)(ýsX†çbLûs™Ÿ åÈݳöQ}l¦ê.àîEÝzF—£DMàçDl€IÐh,>R¸vTÈ®BÀ‚QM¬ll¯�$c5z&Näê"�õóÅy9†¨Ü“åƒÜ—muR~ÇêÇ„§'™Fš°ûíw?‰ø”^:ÐÿˆT&æpÌÍšÝ]8 À›Мj,sÌÐ^y3ôsFŽr•‹{ñ¯xK?k6cœ²t§¨oÌ8>0oƒýD¼Ê“säĬ~´ðržÊ Çkb¼{º.C:›ÝN—¾8ÿí8¸û GÓ5ÙׂÖ{r>ûu´µ®KÛÿÀ$6¥M¨á¹‡»×ÒÛ½ïÛCÛR»*[„p�ÇÎÖ0)zyË)ˇ#€ºØÏá÷z>›Ãí#âþéGzoZ׫ŸVñ(“Ûkˆ'[{œÏ¼/¾4"/,= ¶vy¹¤±ãBÆ"–[ôQ˜Vgî©Ïå6¨?Ë΄ËÍÄÑV“bDzuœŠ´GÆ>Ý¢›öcr��>I±º[_XÌ)U‹ 6’fxs X{"LßÑ£�ê$Ã?”hL+/dK¡>bòݨ¥w™þ $/�dÿÿ™@‚þ�…€ÈK�©ûÿM ÿ7�üßòÈÿß $ð? $èß‹Lœ)íÿä’ÿI [‘sÈd]ßøxmϳéÔÑÏAÑ{Ùz “SÙ?éCéèÿÒëÈ?<Ú·ýsŽìGºía½›CUpä|!®ì2ÒMЊ²Û£H˜ËÀcípÙ´â•fT,îLZCá5ú[gG2 G‰Ý$iø‘v\�îµ¥«Ø€§Ž>H/w.¦ñ2¬óÝ-B·#©¸–—4g¬³9¦“r– Íþœî°H¤Ù@áhßmI)Ü·�$ßµ:/žqDáÅö0§ãZÓF�1w|ßÙÇ•ŠÎžÑ{‡'Ö°ÃýÌýÃËFf¯å€Ô׌ե÷�´Á¤÷pTÐz‘˼:tøztµQPØ} H@„”BUqÖQ­ßm"ZNü:ÖÀ)®Ÿ€l¶p‘£vè¸.h`äfŠ~ÓQú^½Ê‹uçË)¢\�n!ÿ“h]Heëa"¦£†%­+¥ ùN«+•oÝÎcT7¤ËtÅÞ¸õ·z6âã¬wT¸Ã:u8ÓVì²t™eôûxNõ¥4×w…iÂ„Ž†¹˜á©U„ÀÑÅÖˆaÜlÿãð‹Õ«„ íÒîäÇîáMb.2OV ‡ J4…ùbÓšÇåWâ©¿JƒãØsÜ×0„ýq£ÅàÄ�KŸT…}q#ƒ(ÓJgc<Æâ¡¡­}€B%uOÔäœ|T‰Õ[$¶²Ì> w¤€{jÈO“S‘³Š4Åù½B í²E¾¦â›^‹�{_ˆÍÂxR�в4ÞS¸ñÖJêì\W�°ÒíÖåOÂ@y¸Àƒ3ŠÑ�aª»Qd¥�ƒ†©�Z{{&©‰Q ø^4=ÕK¢Õ}ÌÓt�ÕPÀVˆ–µ.ÿþ•�…üXh¿RÖVW,}SNû묦å4¸Ø.ßSDš"V©¡äƒEö·�,æ�Ýn€Ö™ËpãyíbÑ;�ÎÇáY�³Æ?qÿHG7Àì�·6âcsô©rõ·ppM]˜`…9yöx)ç*b­”¿'1õ6˜t` ݼqhqM›A[óô7‡|M[‹üì˜õ©B=ž$¤VÑo[kêa«´°¨àÖ*hÖb¬£W¹üž ¨°&îr˜c[�3Ëeòaü뱑„ <ÜÖ½F9}�7£a1_ÇµÞ k~!°ïàU ýˆ¥ìÝçÑEýÕÔ ß…Š ·aès;. Ë ü‡“åKä½Ç«amÿýço_)篛G4Ob$¹OÖînm~¼C!ªìEÖ½¡ÃÎq�\߸@�v)~¾Žœ^éÑ€�R[Ó™0‡… Ã%™o�¨DW‚+¯]Ë·±¢ŽžîŒ©bÐ{rv½K±Â¾|(­*žÆòÞN¹�²X`Ž7‹ä.™è iÇ|…qf(€m‚„ ׉£qX€Ñà“8, ¸öÊ ßÏï¶¿`ˆ—Ç1<(ëÀDR%½? íÈÞ5 <ãf–ó–†o(Ûo=‰V;ŽbF –¿|�¥VQû°ÿúòœXNB‹…Ëãê#ßE1? É/ö+h}fFèö 3‘”"+#XñNã%Øíd\K þl�R¢ÊD&öV•g4M�%erè�Có¨ƒNêvÞ¤?O¸­VŒ©ëöŽª˜Æñ(½¤GKä¼G*â*þdÅÂ�#-óÂl9—»ˆÊpòáu€1µ+p9ŸP˜ü‘^xÇvò}”oo3àBö!Eª€ I“7|H>&ªMêWì¾>û+N=Æ|\x¨6Í:[¸°|U²:†àe¦P Pßgc›å´!åü¤šè•½Ì;X üòäHÔçÏ6ï¹Ç?--'}ðÇS¯­,4æà7æ• ­X ´ÏÜéÞã+C‚Aßc$W4¦5¢-È;‡á#,|݃ӅMôåô½Á׫‰I¼èR3ùÄJÂ}œÛ¼¤Ã²e½?\{6â„»ÅÍy#åR÷ýî?O!ªÁ$4ÐΛÔLê°5Юt>'‚Ó¬‡Ç#Ûå¦A›q½�µ…ÄŒCT/,þŽîí×�Zo˜A_ßk;¸â“FãLìÔ .ø9ïØ'\K0ýr”yáÞ¯crÍ$,¸ˆIƒsÞØ2µÂe"³ëR;°»Tß>e#Úœhœy[Ð0SÄsUÐäß罪�íË€\ÈR÷WaôŸ„¨ãÈL7 ’MÆõÆŽ(oý)ŽîhN›.ò=ïΔ¬×Dy€+‡æLò%ì› äãØ%«±±PhèàçÕo×H"ÖMoµjƒ"J÷uÒä„TVHÓv̦wXXt½³Z8þSÓ›yTî=!DsR"$Ù¤Û“üµÔ+$¡‚” pù& Û>N”ZËT.±% äè(”9šÎ¾çuﲜ x8³éS]õŸüˆ„îþ Äbz•Û(H„({%N3&êƒg/§ÐÃYîÛ¬oŽ�ð{ëw׫9®.sûi|Ä ‚Æk£¹ Îh¸“c­a ²œþ«+«´·HŸ²»¶%}|¹]]•.š±vùAãðÔãþàq¹*|=Îܘ7~XϪŠD‰O:Zç?ÊÞåøÚU+,mñL¬=dÒCYd†à¸Ào9ÅÐÌø%ÜÅ€KOý?¨A#øEÕuxl'_„QÕ©\qKùu©#œÝD½ú̇ýp ÇBÒ_*/ÞøñU-¦2®>Mè¨ð‚99mÄeI95�2.QT,Úâ+b¦×þ8úð^5‘rY^T9!5[ºEº½­î|ÐL[ I¡£Cbk1r”»Ï±¢^—GÎkúaÄ�vÍî××ø_!ZX°¤¼·a8 Ô øCZ¢ÁûÕ°%'8ž*]=&z‹;ìX Ê37Û Ä‚ƒ’…ìÚÒö¯gºÞ4nÛ¤F Hë²ß:°Û]jxéÙÄSÄ¿%¡à½V”¢Õ†[+4ËVïñkß?bAÖd»D=ÏMÑT¬à©óà’õ#*hˆm‡Íó¸efåôIŽû¥DÃ{Êì„G�¶òe?Ä·™Ÿ±€;ø«ºÀ¶ùÔÞã’¹”µ-¯±Ø·bij# Ãv¥E†y¸ß´Þ$Å~뎉tPöãoóŸU1ëNë¼Ú1ùp¥5L—|rç¨u„‹üŽjü�çÜ BÅ#£¿ˆY)¦MÅ‚#Rc îb¬ÜÒA¾ožj›h~1k$ÌxÓö€˜gºiðچ׃QV${œ¾s¶Ÿ) �ë/Ü*¿0@ÒPlà±ä© výô5§«è×—ÍX[b€ T7…Ž÷¥Æ¶�ï�¾ÿeòÌè¨�teGt4v:¿­‰)ä¼¼(À·�lHÐÀü*{:ŽøQã e]ë ˆT ýX_‚ $X*ðs„Â>­¯¸‰E:>s=&�Î0ût �| ìž·So©9c¿Ug%ž½Q`X©½ÊœàΡ�£é“ >bÐ…á^ ?ØpbPšÞ^í9VcÛêo•Ä»¾ ÅÁ}�z¬�Æ3kCgP¯2¢ubÁ®‰xÁóœàkߘ³5„2’qõ.°d.ëëw¸Àë´RJtI¶®¸,9‰ï‹¡’fµ€f²�×)KVÏftÔ–±B +Ê€ÆìŠQy¤Bå—UÙHQ>p�O…{‰5atßó†X_ñQöèr¡ôбQ?¬rˆ Ûÿfv_žÚ� L@ J˜u=]ªžöJ]òAÍNúçìÕΫlR„É’†ü‹QB/ÔBOÝØÖíxÕ·úhë+l/Na{iXý` Òm.�h ‘kfû³u‹oÂ’£ªâô_E:•ü$qÄìwzdNm.iöF¤Üü]Pµ«ûÑÖ‹›ÝT‚\ÂCU€~%J€ õ*°Œv 8XÓ×õèʱõv7ÔYϰÚÙé²�ÁOò+f}Æ�§®y©PùÎ:ÀíŒy¹�D&1˜9ÕØ&q4ÏôE{�Xýä¯RG鈆i˜D¨ñ§þXedBöË–�|uâHv¢c‚Ë!ÛJLOtËåé8)²õ%’{©ÝµN–È èxçךÁXú(!aèŠÔ`òQ£‘JÀah|\Ük³ÂK~•6óöc¬!“ V,p<@‚ñ�Ý#…ÚíDÈsš„pcž£#=Œÿªò "ù#ó!ŸY"§Iªœ–�´JÆ9¤öïá ¸µA ü�ê¶)9Ç : ?¤~@?æAçϯ2FÍþƒJÍEF¶MÊf´�æpa4Ï�9`\�VØ>[”»ÈÎZg§%ðV¯%J€iùx@ßð÷  ê•t¿øƒ FGã�†mn»`2OЂÕÛ%Ø¡¼ñ¨°:ñŠÖÀ*­];ˆ?¨"ïÊMü`/$µ:íÝŠt~ß¹éµ&%_u楙ÌÂðÙïú~�ÆÆ„6÷�‚{üî�ì±ß£Ä’ÃM"‹ ŽúkŽÔƒäàé7Ú Ee~]~k¥aD›+”p[½l½íU‘1G?5‹ðP Ï€ý|�zÊéòÞK¬Sç°^‰ãgøœ½¬"0ÈN3' ‰"§Ìä"çߣúýígŸ8%RÄåì¸Ü€é�_'2ôŒg΋Ý/s©œ.Ä$AŒ÷yâãUmŸRʾ‚Š% 2~¨WËì¤R­/h?QÚÐ.àì`“@¿©e`q`% ÿ HF�‚‡°h Õ뉧îÈÿÇD;FŒÈâfÃè±læ‚Wê‰ Ì ñÝ�7“I[¬&Iº,¤Jמ#|þ]¢1‰MªüÕÍQ4œYà;;¼C¦ˆà…h~s²zÝz[136Xö);6ÒÎí¾‘Oƒ¶!&ÃË36vS´ ÝB´¶„j�¢u¼F0ê÷da6ázüÝÛƒÓc=ésÙr ³êþöΞòä5*,´ vÃtX]€­Ô”º@½a„m? Ívzi4ž`±²[¦ À¨Ïµ�šán ³õùÆ�y<¯RˆˆP4ãÏvx™ŽUÄZ#3àþª'f;ßÉa¢¹ ŸJwë{�EN�wœ…äJ õéävšª[VVÿˆ,´yˆøhßþá¼08f~¨‰-¢Íجì)À aV¦¢”¨nõ£�ÐxHËW[ä¼:ö½ü<Ío�€Aµ\¤nõ¦ôï)%±R«#w“ø{Ë’v”‚báXN5WÑoÑÜp|Öþq/óßGÄ/’åö b hÐK®õ÷x¦ÂÓíGò·Ïú6—•ÁÉÂ_�‚ÕwôYÞ« %RyéC胢¬¬)!´NÔ!`Ñ]ú…Œ‰�ª^b,®Ä–Ó�Ø{ç}¤÷%ágÏC«MÞÈÖ¶5QåºnôúáàoP’“�Q«Oãøv ¼ÛR¤½÷7ªÓ×Ä™°´6}S¨r·øˆŽg˜>ô0>ð"¤¹¿“7s¸oé'»¢ B ¤Z�ǯáB¯áÒÈ›ó¼¯XrûPEþ[QÉ:;N •4iôhWö<»òh îÎuã‰Î¿éÑjê—®‚fްŽyV¢A$´n[˜—k¥;ÄxÌ‚´s!4ôæ�:jš«BVùcœò"(9é¶#´vîÿ†ñ¾Cx‡j¾—\ÄFÿ‹‰Ä^áË3/Ìô˜..t&M‚Ãd!?`’o XÔR·KKÞ^Dœtxâ>Q|d\½>}#¯N÷ D/ °Åð~¢žÏah­|¯[ýEj{rÕðS DÏ¢C  gbûÌ‚ÓN$ôeÁ¿ÜhíaüÂ@l‹ïêcy;Xš ;¢†�JÚ·!s“F‹ØÏ^û%¨ÓRñÀ?/¨\L¡a‰_˜ 5þ±óòócµÿ×ðV |; ™Ýgx±pFðïHÀU�´MBÈ8_e”±ßœ‘Ñ‚ÚV‹µ=cð¬±Þke1ÇymÊ€æ£3‡;wó» ÷» Øaòݵ –y$ªÓÏ�%o9é†ÈÛЊ¡ï}¤Á›@Mì´ç'è{ÜÃh¯gçÔ­—fk_Ô7þñþÉíýíþ[y‰ÁP¬TY*»ˆE`ÝG"�ÅØÚÊ÷†A†dÕì]"û6£’ê©<øï�¾Ñà€ñƒñ™ýâÆ®Wº_06ņÏüð’�õà—Æ+�½J´ eÄ­QöÓ‡ñnà '\€Œá x,©�¯³($NvðÐ%¿pÍýËÈ&jsìûsÍÁF™—ìTÀ>Ýußl ÞÔÙ 9Œ´« ¥à „òÏ£Q¶Ý‚l�éÜ#¨Ö]ÙË–œ±)–�¹þ¦^//ý´!‘ã‚ÔÝÝé  §.Bvá$ëNyÁ>:MŠj*†Äx¦ÏÔë~ÙÝRiä©r]úí¤¸w„9±tÿ°ZKP1âø‘’“´ç·Zô’(OoÂÞv¤î�p¸ƒonã¼Ïû"|Ž µOýCFŽ·fnª¤žûúTÜÿZŒc«)Ìó#Ó¼M÷(^½ñ]ÐP8 NÚ\VføÂÈæLž³³?Z-¦×K=û²‘ѳ¿*n ©=ÆENZçhs0»½–VÇqB¼¶Ló*IýôD¢P°|ØÒNùCùïDˆñ×ÄN£p·EKx™þ]CŒ†Ú�Y‚+¢Ltúøþ Í(Q€º`Ü¡¬1îAŽqç7o™ÞE½©Æl6o%ª6åØòÑî})£Ùd‹‹Çýw…1¢(ÀÎ8txŽœS�±9Á¯æ˜ÞáI2â{Þ©˜úKœË¯ð4Ÿ¸:„ê‰Â�÷‹f°+°jþGaZàu¾²ðe }3 ’È?�ÏñUE•Øl£¦r–Å"‚²¿x=kHœ€ÝSë®Fà| ¨_ûž‹θ,*`©˜ÞŠ›Ë�¨«R‘ÐP!z«x,xi¤�ã=önb_é¹”»â‰ü k‡4îXþC[ Qµyž?³‹ü ô‡`ÅÛš—B«_•…°ÈÊ —Pw•-Sz—®¹1&òôöŒÞä¿õUÍ=²:)Úœàhläº <¯û  $—wJ=cÒ‚ô‰ÀX£FOø^±¼„éûâ·nŠ2›å3¦æaÍ?þ¡ìKDÎ�’’ýÕŠH^`€y¸-¿’ÌÍO�¥�‘ ®!yÎý¶Te4� ŠØÓyÑbº4”‘gÑþw–þÂP�târ"Ñ®çñÝÜÂ0È®m­~ñ¨«¬½Ýà ¢¼® xVÜX–ù âs�-“Ð'UÖ”9�©4µ#á_ )nýôP�ùiLÌ,?óµ‹I2†Ë¸X~ÓiíUvm“õ¥I££ß€±4«úâ&ç²cbÊ›Ù4°oÿ¬ÜÎSÅr‚ÊB°O‡¸A^Äf#’^õ½ª´«øv¯gf£bË8AÈ´«By|�CO›oV¦§qã\œÙá¨à…[%BêÌàú¹Â·¨÷ï %?þ¡¼F&sr902"ÜóÕ_¯^"A€×H9Ý–¿V`;RÏ" ß}ÿÒI"ƒÇ{ïÃvœ¥ñ´‰àÙëZÃ\æáAÜ€&Àˆ~sùù³T‰^æÆ;ö«‹Õ]¦Èå�¾bCùÜŽ«mœ7ê4ȦázAå §ÆçîÞZ&¡íÊ�îýG+ô©^Šÿ˜é+RoÁp°ò}^¸g^Æ …p`½Ã°ë»×B€UŽk­Õo¶IR½¬¬bøǧøcö_ ôØÀºJë¹mŠZ[JsnP¢Œ¤2$±²¸ü×mªN_иcrübgùy¾È8Jsßí_]"¡UŒô¼/.¬B�ÎÆÜ¨kŒØÝCƒÖ&‰ ˆÁ²cO*Bðïi4ó|гòJÐe—Øÿm >€aA¿®·îèÊ&û»u¶wx�Ýg° }£;¡1¯î‰>ÏÜ^ì‹í(0v¢Glé_²[9l`¼Ÿ€yToþœBŸÍÉV[”WÔ{Yz8äžüƒŠW¿ «L™Ò�|Ê 4KºÝãûWÊy¤[>¢Ò³üàöæŽkßÅú¿V…j=·¦¯*üÜ*Ñqô²[ÜœNÀ«CPuSN�¨¶Z¨óïÎ1͸Lú"$}ñ‹f…ó”ÝS{ÛÈ(çÈ{)v¸U�ž]|«ÁºD”ë¿ÔÕ#<*¼Â?_6 ³ÿÕ´ õ8‰DŸMï!UdꫳÁôYÈT½/P”™5Á#Å+BFµ²[¬³·Òyà1¡zÑBÜ0ØôG[¼Lø—†Õœf“>'S]jž>R—në1ê”È"H `Å#Äë;9Ÿ!«8Íæ\¸Ô—Í5¬aÑð�Jù/Fde¤ [sÒ‘º4[¾J€ûü±R�9±a'IGš‚¢(TÞ?¦7>AËÿï?Q• Vwx4W4²| )u„]!¡5ÐDH‰Û"Rš�n×´è „äÖ ­p ìÅÿÛ�%RÎÁ Ñ#pÁár»S„E³.uvRMŽ °åhý„¹ð«=ôªàEÀŒ—BK9Ã…å_ªÒ×ù·Ô«TÚQSûÒ—ºtýq¥ŽPs{Q÷=Õ ·É%¯ÅQy§7û ê&³üj¾ê¿ò�a#-�CJf²0JÏÂ\ënÚ¢8Úï䘌#CŒ&(ͳÝ&JjÅqâÄ’Â/>JÐük.¸–ö€º­€Z±ŽºL[á…{^Ufg]¨1xõùùøoÛk_�á@žÊb¼äxm‰OæGɇ¯ÑbŠ,p‚¶:]U¬;ÙŠ,<¦ÁmTqÀQM€Bá–Ù®db_6*ûÄ xžÕ$ÿµ•Y*Ø9ŒïÉp¡íꃣ[·/àǵ:[Çh~»kêe(ñË)ÀÖ=1ãeöïÆØ*àO®<¦ä!öx*,†ž†·ëø«<B»(ƒ½¸í>­½BRcø”±°a°ñ|õeK÷Õ‰}¡ÁªCä,DB  ®Ù–\? $GüÌÓÞ7¦f»DÕ¼í~OÚùâ¯i�/¦÷RÛ³y»ÿCè_é̤©,+¢bæï¯Åt-øÀck�(Føi7$@«ÿè½=e¥ê âÌ‹óÁDƒ¿ÖAí&Á¿üÈ$¶Ï€ùÇv=ûz‘çŽß”åãQµ‡G?`‚Ç+YªÙ„ b)VÁx:ZÿòزÅ@ çö¹Gþ£ ™÷>N@A£;ïbßZ7 ^ é… �Θøv{°«íüaáüû²EäÂÁk·H‰Ž·ÄSÉnU<@eg‹§m_ü‹“ðÃWÏ¥Kqˆ«'•c/r:ϧ¶þåMøãýg;'`F�—‡dü”P²ÊÍiƒ¢$ ÔÉåη(óž ö%Hð˜rðÊÀèJ}ú?ÄõÔX¼�b€ШP×q[[±z†&©5br¦Î‰ÿTÝŸb›²S«X6.ð¿ùhC� „ã[˜ ‹” 2EµŽØ^ã ‡©À•»Þ—¯¶só°¿Aæ:‰¤ÏSƒóÅA¬1ÿ×RcÕU"¢]#VÀŒdÖ�b^eTÖy º»—¾NÖ÷Ž+åó¯—ó½ßtÿ¹)º@†$ ì p’B@Æã$T !*<×éE§ò‹¿(ߊ�éü’ þ×\âXZvcëpZ·(À±Š€çî Ͻ¶¾éÓm(Ó£D³”)o'«Ë¯Þ‡ÿË(? 3[ö†ÄÔ•8>Ë,x·îÄ:…µ»1³.àÊt4ÒûŸúq${GZM¿ÌãK)ÿŠB "F ,PÝ3ýÍ;®]êzã7F}•N¹U€Ääô+ÿîº6�‰�½ÀzÝ}mÀûdã­©OÄ8ÿB¯ˆb˜� fdýr'Ó|„ž¥pžÂð€ÇjÈ�eP>xáÿ]@3Þ™|>"�Ú0@1Š*�±~S\E °k^‘¬»ŠáKÓŸCÉçÆåü©¯ñ/ú6CRí˜ {ÒmV„úù[Ô§…S¦€S»1ó§ìùºU’Šç&øÑñ’îîÞ*–Äÿ¸°Ïø@,sRÝIÀÌ¡½¦Ç±Wóߘ´Ù°ó÷� b¢˜¹ÚP¼Xi÷Naä=í÷㨫tSLv”ú¦›˜ÃV¶)1°kÝ©úyíÞŸIƨ Û‚¦ûêÓv¡R­¬'þ? $c­C�˜VÓ³“Ë«®SêQËè{Ã‰Ž¥ÑÍà ÎÿeÚþ iÄ JcwÂì´6ÞaLbá)à@¹½_Ž…®ÚcÒDž+‚gKãŠyðþ§,’°(‰ñβP8.CÊn�~ —9 B…T×+çpPcÜF—ÿŸê?—„9+Oêm槦;0)3-Ä â¼,6dú¬É Ž ÙØ²?°Æ”ÉúW3,ª=e£½;ë wpÆ×` �stÞ`üÀ„&+`Áö÷¨GØy$~Áb-°ãê“'×à¢xÕÿ´@ªAóqÂçrÌÐ|§4¦ÖçWEÔž.¼tû¾Ë\±9¶ìÿ}“C&\å?&-tÂj ËÛyY‘ýÚøý§_ þ“‰›½ÎmÂ*ˆöÁŸo¬1‰Hû:¥Ò�Éë?· ð�ÖdS³”««%#™Í=Ç =ÎÓ•”/å»â'áÞ÷’Ó�¸‘Oövë —Ný{ƒîøÿn)ÊNÿ‡ é[ÕŸÕ…tË{� EõùsÀÉb£ÊÈÚ¿c*)øµÿîì€ `YŠŸXó¡åCÝKhVó4‘rY}Š>”ç“„u‹q¼ÉFÚ]vq ׉÷4ŠZ1@’ Skxð¼Åk Ò³¶Â»†Ú¶úOοÀ!:¢¿D`:þ•æÿÏì†$a!u|Üœš yëgtô�µSñüj×�0QsjVQ‚üÑûñ[>^á_Ó·÷k¤¢Žug@SzT0XYØ‚ñGu”mžtOÄÈ>�´}¡kü�Õ�ºõ¡† ç Å{ß13i©Â~ €EšÖC ×µøtê�ã‚<Ä?ý÷³EfG�Þ@”=à)Ádƒm»½%{äSh—ÇæëÃëïÑÿ±/9p ,p!k{€Ô6ªY¾©Ñ7¤ÿb�‡�êNRžvÃÐENíÜ.òwšh6«87›ë"§ç†OJê›”ë­(4/4Lá¦ÿÍʰw¡ìN$�Q\‡Ì±„9œ0 ÑÂ{ƒ~qøÿ.±Rƒ@3dìLôݺuû.üB%ˆ€Bd‡Î :3D¾Gÿͯ鷄¼èÑ„ÿUŒ5N Ox½CÈRÇ=þ ß³µçûèd°ùißF xÚ£ƒé0_к¾"⵩âvU¯ÄVO…Ò‰Ñ0Äà#®®Zê¶N�àJ‚•ß& %IŠ2æõuŒiÿ/g´Ý’*q¦´HZªxw‰FÆû‚qepEº­õ ÜjÝŽdôRÖÅ=3îäO™ë·9¿ì!a× ¶‚ͶQÅŽ¢?lý´é>®™xü¢?T_È.æ ÈD‚›4g`ˆ{„§VqC.dr'‰ÐëtœF »< B›|xg\’fqÀëG¶¿�Ž.øæH…oØyúP}OÌNÂîkwØ<¶‘ "ɸ3~ßdç¡Ð%�¥‹$¡Zøƒ‚ÐE�§}6»ØàÑåó�øiدý¶+TÌOl§›¶½§Û®¦Ÿ{íP-¿ÛA™zl¾¡zsZåÏ @•¾Bz‘*Þtñ�$½ö.÷ê…#¡G5½pÇ#Î'öתk†’¸óꌊ<(kG¥WIö³‹¡b!M-”V+äb†ošö?Eª#¶s½z�wŸü¯²RœRèâ tþ¦‚:Ž6¯f9×HÒÆ “ßJ}©·è~w0“bÆ‹‘Ÿ>ØÜª¥Ìž^d™�4¯°Ó|¹QñŸŸå·öêÕkè0o¿4Ko¼Ô›^öf')³•Ktc}Š@S€|, ¤s^Þ®ùa©[ÛøCÑ[×iH}†óJ<³«+%…µ›d0šÐº~\Ug/\>ˆN–· ”)”ì\–\ÕîÉÞ×¢Ù& ÷âÚ¬.®)®Èf9xïÃ7ÿ©:‘b4-Åw;�1<¤üF\©ÒŽõ˶és0II+ßõ™òÜiB¶@ x`î5‚rxTpåóSaÏ#Wìù?6|h¿¥éÿš:&…¸Í9êd)€ë´û©ûrŠ@TÍ/ø�¼íQ�ïñA¹²79�@&è>hºðk×S¸òÜŸÂG>ÓN¬ôtB˜vA,?(•Ó‡ÄÏ@:uuâ“nm87^ÕµA ­2ðQL/æ:'¦wòÄ÷#gÆjÚQ£ùãÎC¿�üÀ Þ~O¦PFg�pôìÍO1H»ÜL�wa­¿í0høsïð(…ííg˜iòšqýÂð¨èJZ¡s –D`°ë0ФIH óÈ:°@¢@y’4<—ÍÙÌžYüþ×|™à.IÞ>&ùã]9ƒ{ín�ect†ì±äÍöÌzÿC§¿¯<1Z‡êžeoJÄW‰QkéÜEtCÙYXDmÖEV†ñdqÐæ™©¡6âlbñîß&>&l½FölÚvy£}O g=¹ckÍÓ..ÆíùcØ›Mb€áùÊ4Oìß>ÇòF€3à|¤î“N Ä`Ê>¯¯­†äQ 5É+0à‘¤’«¿â” º¢§ò�‘%ÞoJ©­êË?–ü(l—�éÅ èHx�!yŒ¬OfQeë¬<ÿUš‡ýfÞà (é~3F|”dÆÚ)"  Øää â„#u•{—ÿ.±Ò'° –uZÿü^é–ûŽã—ÿç {gòm`£=­€Ã¸¶²i¥®."@QŒpÏðTH¸Ãžº‚/`Dp •ÏrÊ&yÚþÙ³£®xwx(ðS–[ùpËÊsWþf¦‰•Üï‹MŒÐÞ…·ÝÈ•~™ñv¦ƒêsöì“ÿ §ƒŸ®ÃÔ•ú¹»7â×2 °³C.‹›LéË:ŽøeÛ´�çwG¥‹Ã•WãlÀ÷di¶ºóÁD*ÿè»ö�ª¢�±-W^¹}áS³¸É!�#“ ²°ä}�Mˆ»¾Ø5¸ÿ/`·Q`·Ð׸æZ,˜XŒöwº0ÑI#Y&�CŸa3é‡x2vì§;Ö4i$ºJÿø„’‹ÐãÆ?³_Ò:KÕH[$~ffºЧ‚hWYžÑÃðÑ‹ý„jaûü²0qÔl^rÁçì XÔßjrùlQð3Ú“H� á-~b¹œ§Æ�ê÷TR³4˽�©•"-¹Gw6øƒ÷‡á¸)&ŸÑMe iPñˆÎ‹‚_"‡+Ö— I ÛÍ"&´A.²©ÜIáb"ì}ü¥0õ«@äEóåWŽY èDÕ›!ggz-¬±÷wQà‘.¼DŽt´Ò9„uˆU')µ�8ëÇzI ŒJ|£’WydãÝ.ȇ‘-W—€¹Þî�¿†²×¼"ÐknrN©þH,�ü—¥Q}ûV`7ºŠ2²fæ7‹ñÒN[Z>ìl6ͼ3'û@v(Åà.Ô‰éçË2˜âõ2—b¥zŠ~JCk’ušñ6‘ÌJ�-½÷˜¡ EÈnªqCè8ÐgçüÈÀ#•#®$…{}°)çD?êü§LWn¶™—²PÜèK<¨ÚJè@Cýð‘h F@ Ô$ç¼T$J3ÿtê�£òßEØ�ío'£×0f†s¢qƒ%ðñ~§ÜH¸xu�ËxóGÇ|Í=g� 4D Ô¤ÙrƒP>ÉIš`ßUïŒÕß»š?ô�{ë±z¹Ñ0cÚg¿f7Ö.Ó¥°…yzð0:ÀÜÎBñVÀ_‚wãcÂKûtZï1év>#Dò!ɨtN?úq&üq%ïøÈ«e÷�VÁH'X]Ü?}ª²�0u9§^8§Êxé‘ 4Y[Ǫ֣ü¥^}[l–J‡T†Uë ‹%+ÍÝíÕWƒ‡ÞÆ-†™bÌ&#ö�î§Ùxÿ–‰”w*üç7j�3OÏIAŸ”h vt²2º‚Í<Ï#Ž–çm¼cÕËȱéJÔ_cÈ¡ÔAÌØ R„Wõ¤ Èåàˆö¬1K\>ŽpI׫߹o0Y½|X "‡;1ÛvCËÿ kÄÛ|�ÀJ£³AûÛyÝÖ•õ˜‹êª½ß÷Ëü‚DÔ_Ý •Iiô# u#"Ü#¹(W¨9­‰9€[âÆÿÁMÈSdʶO*ßå»6ÏäsŒ&ë Zûà*S™×ÐÔ GKµKlÑÊõB’Ú¤¤¸?ó[‰óoex¼k:Žù˺ói§ˆØy ÃÉÂð!&'cQÅ‹ qppëÁ;½"Ñþòø¾päÇÖ•­ñÇ fZ•­éOgÀôO(€¯:ãøŽšh¢2Óc‘rñë|U*›sòS|–˜YiÕ1á6ºî÷H±´I›Ã ¸í»�.^�YsdÐÂaeýÛô?SÅ¡/æ_-Ù êw’Âw \u^²Š3ÒÇ ÔJeXÌ’‚a7È“U7y�~àEÂâô5ÆÎ ‘N¨M»nÈÅCên}tbè¿ãÂ{×Qðk‡šà2Êaä1¬kúI]•£-‘öR•÷‘kk•˜<Ózvÿ­&¿9éÊ+Ö’]$£R†P+£æÆo¾H,xÜ¥ïx?£óVºþqÍVö?ɋē‚41ˆœN_Rb×­qtӚ߉•ø¸Æh&¬! näJGv{Éý¢©·|m§}ï Åi ݦK�Œâ‘]÷Yž/ͯfÚv˜°“õ²eÿmú.¯¤TiódˆK«ýé-9j( 1>#üTÅi—¹Î?{gj×ÉË¿šÆŒ�cÙî2ÌHàó�Cž0`/IG†ëoC˜Ò+ì8 3Þ�#Áè—púæ&xÞá+|·C'}ÿË‘œCߨ„;.ä•O"‚’x%YÃg/+õp­Ûc“ɃrðšvÙ€ ˆ€öÓPã”i®|Ü;J8²§Ï pÿ÷ÍQ µXàúñ@\f0puùY6÷#:G*ÃÓГ2Þ Ò‡Û #�wøñ´?õ‚ïL>’^ì°úZ¯\(ç_àPAëáœÚCVAƒM¸P+-ãfL‚bàãGš— XA¶B0 1ᵋô…Ÿ<Æ*­ÌèÔœ¢oØê¬ÒE Ó_ì¶ídFiä´{hÁ÷Á� $ÒÂÒ½ŽcSD?¥Ù�,ÿì©�Âo€FžõqCÁ¤8ï謹ŸÑ¡ÝY=˜Ëä8àÑK¶º¼&ɧà¿Ô±¼ 2*ZC׆¿šó”…v…¯j7Íà7)}*ïìòœœ˜;ƒî;*ç�åþ ¼v]”�Ž�_"kvÎ?‚¥%a¤@�„ŒtÜW-ïàh‡<Þ©‹±_ 5’%êŠ"IÉÌ þlþ¥ÿbSZÓnÆ–õÄõ� øÕ“�9û^©@/‹àårÀ¯¸òSˆ4À‹º‹xôUãÂ#:15&f�8[§ë¦'Ã~a_ÒWª¸W«c¬‡ÏØræ3Xâe>£RýƒxiCàLÁ¦:Ü/Qtž¦.ÆÜz–íÁ�© 'žÉ™^ü(�|èŸxo¢Ú¬J�C‡CÖª QIÀXê-D…ˆ›õ¶5\Oé].ºÄ¨‘ãÁ<<Ña|­GŸˆ�ß™Y.±‡Þ,}#Òî~ËžmþøiowðÝ~åÞÔ^ƒÙhI žã Òj$=ÀÆct›¢¿�C)NC•@•rpd—ã<ݨZTÔdjòÁ‚W°€A  lèÓ¶¸¥êír Úœu¨`+'J±ÄÕ+ ‚ZW!­D_ßÛY°­¥ì*JÄ©Æ&lñæøVa ¥H�5¬F%�ÀOg [/[Ó¹q?µÒ2I’~¬ wË Ü¬JéÛ+ô•³Ó'âçï®òfB¼vD¯s6´oÖË‘ÊÉ:£ecžWJ¾çk·c£„wýÂy ` ãEa,˜%*ßE?Êdžü ñ[Ž() ‡óà“ Ÿ3†tÚ\�KŒ Pó5Ëu´;ѶЮ66wTnj'±´~ûŒˆYit›ø«€ ¡z7���]±Wj_ƒ�ExS8S×a­öNÎE—¼WŽ/¹d@ ^‡vˆÐFà°°"¼¡hiÝ%ˈ<;C‘ȉþ§Vc–*»xQ‘�¥áQ‹?ÃÞмXvRVªa�\¥ ó.‹óÄrÜù8ȦÎÇH ,ÇÍ…©=ÔŸuñ\Ùl¶‘Ø8Aoš?ËÀ~G8cßÁ Ù�#û#¨ð«ãmŠpGi¨ùF�YÓ’�дƒå{g>Zcfך€ÈÀ´ô6ÛÕ»]ü}±¨ ãu:îoÂ�3QF~ L;W¡R7k Tæ,ÓòÉ¿B˜±c±+æ�qïÊ ˜—44À vêñ9)ªíÅ,Ï: 8€Ú ²cB&¨ñx¤žPúü,‡ ¼Ñ®–’`hþF�ÎDGíxôz¿D@œ²úe¡íùÏÂG"¤€”nXØÛž½_d�²»sÜá?þ¬ ‘X¬d¸u/À4+sTôÁšòÛéaçÛyšñœ ήL£ýòòn;÷n!¬•ý@ÁKëIóúz±y»uÿ«ÇLQÓ›P×w(Âé/ÛåûšàY�vËhs6ë1th|òÀ÷ »,ã~½o¦<Ýt‚Ù(gë±°vaÓ3ôû,ЀŠW½“ãm7/è‡mÐ�!Ò÷Ú“èÇ•Õ ‡Ôñ#å'U9Ê€ýêh¤­KêÑw25ŽÄ‰èÖÞp9;t“œ€G!Àè%.À›OÁk4™Fôm:Pýä†AÈCZ]ÑЮf�‚?ß-ÇyeŸù›Z±Sݯ½g íLT„–Ø�|½1. #~»èЬäñI2Àg‹ è.Ñ¢ˆ—QÀ[)&_U,z]œã¶§d‹ÖxTœõ¢Úy¼©)¾q•ˆaµt½ÿƒŠâsu¿?þêõê~ÌÅ<ïòëÀfÙŒ…! 7Àg`ñË‚¬£f;’\ +#K]Á "§4/UòÖ£c@¹ÌÊäýÂßÁ¹<$—픓?¿ÿˆS�„Ô�AR®ðîÎX¨¶!¤¸˜³“‹«=Jµ æðM¦zÉèc#©Æ¹@œÈ£Ä@Ž[ZÙD5NPr¬Ø9C}û”>’K( ðj Ó‡»‘fYAÍÕŒp«ë#¯`3¯/�þß-ÏüOZÃa%�!ƒ99øH¨Ù¥çƦìÑQ»:úŸ' * ªõY¬ôcôå( aD÷eeŽkVø8‚e¸’ª·²c=ñ„³DNäk„�•À›lñƒÔéü7Ù3Ä)j”‰Õ>sß§XÏmÓu*¦­*¢ƒšñKgÔomTHn€YÑn¼è`v y˜cWù"¾±õƒòï^QÝ2’C1ÜòCô(NÇ9Z…ø'±måz1ïg:ÿí›LøÑ‘µátFÑQ4€µ¢v·Ö꨽þR Mš©ï�È 8:†C 8°ù¹ì̬ÔÂbêIxA5°alù¾)Ær.¦ž{sÆ_;ã noÎïB|°6:xZ–,§ðÓ½ýÓWà f'Áñh_çRÞ®Vìœ HÎ(.)Ð(×MñòQú¹˜õPt¥àºi ¾¢wó�~s+Àa–@l~rª9 €´�Ó—]zFÀûE?¿³àëyg’Ýóñœ t!+:�vŽ�œ 3ýÄÆŠó�Px’zž6™v}a®ÉÁ±/~‚¤ˆyaè÷þÕ=ð¡Âëw¥pOïCR �|fq·}‹|@ñÏ^b€·wh©APw7} ™ªÒ‰½Õ€Æ#²Ðù9|“²}‘ûÓ4¼�ÿ¦´8RÀ2¶a5¤¬ÇhÈ®¯µõÌN™ðÍ19SÔ’¯±€Ü± øiæÛÙM»ÌßR2W¹Xrä㎄ϣ­»ûP^ï© 9ãΤ±!= zŒ{¤¦5;b»²î£x¿)�;†tÛ´dÁ•裌þ…¢Ýp³íñÒz¼~8·š`=Ÿëjøôáä÷EÊ9™šyðV"q€2 eì�„?Ê? % ä×÷LrhwT¯´Nð‹?gœÊjQWëN–;iÙ6ý~(–þÍt“+´ÊG³ƒ1«wà�TLGu|„iDs�û=eýqדºÄù ¬*f‘ˆ ±a¶Aú×ïc,œ27cŽ|©% wÚ ëÚµ¿*jä×ÊBß²®/®±séy/7óD1Nèp)+z“a b€£ü.¸JœŠ´( DV†DBMb_mÒ:µŠ;Øò8Áy µ»ÓÙ‘¿ÁÅ L¯d;:¯Ã‰ %@–�n®“jÂÖC ð¢ÆÂD|�~úë^kwž ×„Gñ¶+µýänDÚ#I‘‘†lê:qÀŸê.Fqꑼ�«7ì#-pwf> ïSW0€ ˆ�ö~产žÄÀW¨åšzJhN{n Ê¼oN=¢$\lw<ÜËÝXªV1ÓB¯¸ˆ;\·aT ¨c¹@È´p‹ !-•ø3aÕÇùXC,~+–&Pà…k/4µs©ŸÔ�Íyæ ‡«-@÷ïà+'`1ÅoXJÛVÔ5«ˆ4D¤2WTð0ľk—ß4à2ûä6 9"e"Â^Çáÿ`ï/ã¢èþ?`|vY�”î)i¤$W@@IA:¥SJrwAº%¤A‘R¤KrUJT@�NAº;ö?xù½.ÿg÷³ûÁíK™aΜs>ñþÔ™™£Ñ/?fäî|ºœåyìÞù©–„¯ô vô¯-’ƒA�à�io‹]Øtñ΢�ó£Šn\@Ø#™¿Ù:™‘Ù ´y9Ïw½D‚¾3ù‚Þ9FÑÖ›»Kâ°tïÉ»0�3šû¢ôØÀ¤¥ÎX¿½i~ºnx"°¡Ü[F\[46ºû­WiO}‹Œ72˜¤ U|ëjX¸YˆÓ¨P—é¼úÀ›7¤[~ÏwïÐ@ˆh ßž6ŠAû¿ ÏLØ¿È3%f!ìI»L“LW¾KŒLÝÙ)¼;?Š«T£†…¬M:´¢„�à�:F{š½<š—šYvâµûg²Hf“Þßʼ8ðYÛ:Å0 Z=ˆškÚÅýÞC¢áU^SÚ3q i¸3;µNŽ^Ä^=³Þ±Ír oË88ËÖ¼U_lý]l…Áë+-ôfIÓ3Rh޵=€l– !-…þÊ…þOJc÷XQ�}¤y�_¿Žµ§ œ¯äîª7­ bzœ¼{ƒQ¨:È$®Éö� Œ�á1q:<¸®µS¤yïrôÚHÞ™UO­·æ­zæ%7ëºÔ»�ßƨŒàÀGÏa÷ ÷ s“'ÿí,Æ“päDÇûuÊ8²ŸOü0JF�=4á^-A �2Ÿ8Ì ŒJJ8fZxÓ­qö> ÜʇùAµ…‹¶7�‰¤·c˽n.e!;;ý3bËm4�î\é³ãùy¸©@/»íL¾ë�‹+�‘Œ�Ÿé³ÊŒ°èTâuÉÏ…ü^â3q?@W)2úxµÌîÜmN!µŒîܹv¸#0|—© oŠ0Ç)ÄÃB‡ß@ÜVaMà�~o7ÄЛl:’ÛåѲ±9ÈqZˆ ü;¨VåxkØÑÉ æ |lÍñ~4T°£ºüÖúâô…÷$L튳ó…¤bš,‚DöSnãÐÓ¸ÚC3æÄÖð·ß#ž0r{q:p˜:ô7rôæ¿¥@Ðíóßéê_–¿ß<šÕáphý~0ûKÑ�Vw‰í¯´�†ºãÚ=Ø÷!܈F*ŠAqˆpíWÓt«�•eU+g7†-SðëØ¿¾­{&QžKO§ë5å3)í·Yzb[?,q‘N« σnž¸4YÍ”"a[!¡ù4¬Ñ‚üîs8Ùø¨3$Óå;§b.�hYH­8ô^Ä,¡Ÿt1h½+Izö´�casÕ{n:*Wà×q¾,â—NÍËà4i3=@ÁÙ›VM˜.ÂC`8�iõN$%´ôb²²í�Wò®YwNÙÖîhéç§ÇÓß(E*£o‰ÎzþP&ÇZ½ýR]&Ñg~Nƒ›3úþ×­¢›áv_²›„Á¢FÓÑtN� ¿¤%”lþúÞHþ@ñ¼Eª…(žC¤dƒ?…ß@8jŠœÆ¸¿Q:ô~rHa}­ú×Ò«äÐ ÝÌeyƒó.Ž¢¢øö�Ä×7Œ6«æ'�¥ˆ•k6œ¯ª�óžÝ¹zŸoìh»êÙ)¢TOï ËZ½#ì/lÔŒáœ�jàc1+i/ÙŠJ5HµÐ*Ë“³ån»í‹”ú€‹+Äà¶P¥6¥´Nna°t"mCœª½‘Çï±¥_a¿` f„ˆºO“o «eW€Š"íe'î¼&�˜êdÂðÞƒ|`·¬5¾P%`x…‰Í";ÏÞ íÆã› Þ �XÉï6| ·»öJð0Y#=nŸ/ºq»qUSã&¨!«ÃóU¦êê6$²<Ò-ZÔ#´I�¹j—~* [bò¹ýÙ6‡Ðd´¯Ä^j3ÂüDxð>*°ÏölÜ]£1ÔZ÷z_ee4â+?T£¹`Ñ"õ•¬ÔÕòM¨ãµ+‡Á ZćÏ*rø �ò”zÄo&)£é…{›/s4»h¦g|�0…äw3ÓÏqÔ»`jWœøiÄ8¾á}yïp�U6rÁÓz€ËBš©© øˆz1Ûéî `™ˆö4ÒÄÆ$™MÞ{ÈÚʾ¦!·z’R –ãü/ÓoJã*ºÍ9»šž¦É¯â¯â}›÷½³¢†çÍ_–+w ܵì‘pLÃÈ”º 2¤?Š—u\ë ³Ï×I’ˆO¹�¦ÅŽ—8KÉÈ ¼ì 8¾‡]œŽ�ñ眾ÅΤ°~ÜWúV0ÃÁÅÕÖÇÏc�RÜ/ô=¿ö @uAó5n�5% ËÒ‡mQµ«ò`~ïÃ(�ê-Üä«�û¬ÍŒñ®Ÿ2Ÿ4Å (gŒ±5ŸÉÊ-l6³Þ3K«ýPr�„o–/®}†pYÖœy_²ÍzЮLœñ‹B7~vìÀîW ðq"hvËUÊŠFnŒ ÝsIe¶©ªSå>­$@«æÖý·FÍؽ‚‰æ^T��U_°¯´¬>]ð]šÖJØ�ãbg:lÙøÀ™2zS‹+ÏŒ6H=AžHÆ5©Ô'¯”î3hzìWå-ËKeøèy›¡Ý"/‘gBG¸s á©÷ÕƒÔæ' ­Eâa_d”È�˜|Ýâ¶*»˜¸�·tnø†' w?î¬ ì�ŠÛÍm/è@ykç�OÌ®J UZ©üŸÓ&N_~¯µ›Z6ùTp‘WÎÛºQ”ƒdû‚ qZ õâ“8|ÊÎvTËXb"R÷žžUÊJ«ÎÏà42#TΞmúщ‰?Q{Ò¤xšT ^RžDÚ?3°Æºí¸�l!^ÄËóäƒÅ¡ß@ˆz¨ õ�b·ô’DxŽcHÉ�/ÍWZßœ�–Çr›Sî¦EúëÛœf¬¯ÃO�p�ÍgKf"A\s_Fqqà5(}„˜¡GGT¨ÀjëyÛM¦Ý6r«ÊÚ•{*¦‹ùå̷ܑÑ"ò´V½ÙJQ Ñfн§ñì¯�iü�½cÖâä§è*\ø›ó,€$<“—ZD"î›ä3T¿4º‹cÉkùMGC`‘Õ†— ÃU.VVF\{&DòôŠåÛO«A¬ýPóùóÊÏv©ˆe@ÂpIºÕ&(žDZ!sÿvc†Ä±ÿÔnÛV£ë±ðW�!²€Ü5É1 ©‹ÊUVàU§QÄJKÉÈÃFyŽ©{°†¸�%¤ñ·uXX ¾¤Ã”6b‘¼Ók:’ÛûiäH 7•7X�µÙ7Hõë&ŸÛØààÐwžÝ³ù¦#¿yаÕoDz…JŸ(ßx#H;û†Û@ ù–øÝs‰ 8Št×�HSamháàPrü|sûù�·gúL�ù‡˜ ›{Þ(‹¦ë£eDÈø.1‚¦B±½•Ä­XžŠfõY¥P0?å5‰P,*M€'ذx9ó¦°�=Œ/EÓ`G�„Y³ÚÙtÉFŒX5ù îŽÉ«ö¸‰P™õ¯½àöÇw:±ê•ýÒ æ‹œf§Â¹"®ÆÌQáÀcÇgMŸŠsŒˆ ­¸çîb}ß0‰f0²ÏŠ4KÏZb}QjÑ$I xª^ñ¨œðN˜»5hIÉb²>ÉŸš%h"ÔYïÞþ&ÚÛ |§H1»à+`^-cæ”E‘w¨·»^¯5¾qàÇÂkÞ8¶¾ûM ŠS å#•yÜñ¨7Óon•ÚÊ È¯<äÿ PPÞŠŒÜ$Ûiûòî¼iê‡ë[2¿{Ã'¦‰å LQOm§«žlLõ+FÖBÜ‚¾k¿T¬¶Ûw[ÏL�p»ëÊ}äJÈ-ïË: ¤Œœàše|~“äŒo¨@½ì(ØLýÂð…0ªÊ2}áÖÅØª!ç/þˆdm?Iê³<Á8 EÓžµ*äD7‘¶:bYö8„WXKa­†IÉÃ^<|q7¥ûA}[?H® /Tõa;Äïù qpF¾Ð'òMóc»¾×³@3£šF{"ÜöN“�¬Ï©ñ?rGZ‰á2ö€'O89´àÚ9/ ÆZèà›�ÖGûízY”ÚÚñ?Ü»-2Ç©*Ö®éèãÂ!ýžLHFYIÏÆÀrñ‘#3:˜Û˜½ôeiYë±GÛjì^#L`½ñúWÂ×µÜê[t€¢ËuK �_és,³ô澸‡¡I×ìa¢Âxëv2\h_hX…Éô°3Ñèh»Î“²–3}„•™äŽ âqê­ÎZÇ;ë9³¦Ô’>ã´@K�@ põ(Õ9C(Sò»¨IßYeïõdJHr/Áç&gj­üÀ}îaaéq½["¬8aÛ Þ…;ksë#{Z›J_ôàìݾˆ÷‘u_îè³³s'ŒfåRʰK*R…N¨<ä~õI{ iÿJåõ­ìï­œã7×ä‚?r1Ä0)ôá ã×Çn¬?ÅM›½�í">VB'Û] â¡�§k袦›œ#¿˜¤õ©BœïÙóç'ä`ÚXÌ3ÒÌèzÓ1¾:e7Óqþø.^B(lpл‹wù± ݱõ>¹7œ­³ç×Åα.äÈ£ËÅù3F~»ú6µ?¿QéÇ–~y'èCHóú)‚pc]¬¬€)žFnŠfž–Œ]Ο÷oÞ›|cê×*ˆ[ánùAæåSF–|òox“‰5m:ì^O “nèWì°i\šæ«¿T_'Q’nÉ"ž�åúf@æÇäQ*Çf¯x¯Ð® ‡é(Cï ¼¬³¹ Ï2*³•¸<©mܧÂ#L£x?o'ÿø °ïS67Z A7$^?ÛR†�¾{Êú:ø¾eõ •ƒÖÝ÷Ã,¥ý,8¥é9‹Àø=óÃçTnš€ …§ìfݦê\ró@~«'âlw|Á¶ö8³œ÷§Ój”®�~tÃÆ..º�Æ‹am^,ùÑ—÷qµŒ`N›@arÃ%,ˆwØzØê2ÛtYÅBÊ=/ÒT2º4ÙE “q(ƒÖ¯CQüå]YHÖ'Ї°RBF0*ïØÆ.ÈCÖžY_ðʧa;¾Õn욇Êxæž>–‹ ¹‚ã©ï¼¹Å0©¦³—7Ò¯d´<Îh7»U¯LÌ ‡Có¹fÓ±kâ‡ãÆ$ÙØ`ψK£î^t TÞ¦YqüIÊÒ¥üVeòKìc ÐÑžkRh¶dqñÕœ@©Ï'¾í'*Õ×ˈþ$Ï´{X}n@©¢)A©Õõ¸§á.ôVˆ©Zo,öÊ]a`œjZ„òÎÇíˆØuÜ2EÜWOÑV쳂 xªl&l;ZQo=X$ Âõâݵ “’ç9Gu\X³Ï ¡¢îò]˰û$PK4¬ô¬Ë�k3êzÍ‚§Ñ1ÀÍØÓîØ­ ^'úµi¶nj\a•²‡T2ze‚v8 ÇórIƒu¹Ö›ï&×·F:S?=râ,vtá¨+äËI­kjðòD'ÀýsÁü˜šš&G½&ü›ñpk$�߯:Ç~r³£ñé7 óK+õŸèÞÓu˜?¨~Ç6›Q¥¥][•æ’œ”‹½R7«ÆfÑ!KÔµYƒcpICËÆÎ²ŒÇm‘ÃVsO²u)‘s–n°è›þ!š‰÷£Õ§ªí<Ž/­Tæv]�¼ÞäIÚ^£RÃs�|¤råóz³m_K˵1�¢å¹8œ©ÐçäOëß÷eÜyãÇ“’•ëå¬Èõõ¥Ù§öutó,ŒÃ-MMÛ‹;ŠY*¯ssèùšŸŠ+À÷;žê€àáÁB|óÚ’Ž<�äöÝŒkùl~< NÑ<\ÄÈWf,—|}&ÝC0�ákÛ¿ñØyS  UéÃA¼º‘‹ ê6ŠÂÝÍètÅU½{«ÿ:Û�îÝ—|J‰¤|!Ñ1H^S×wÍÊÀγk˜ÑuæDÄÍ© ^ʱª‘èá2Ál)‹‡F&dÀô‘­¼ ¹égæ¹—êÓÕ‹»9DÀ«îD¡ -ôVë*SáäçlîÒâäÂw¹b�²«ÜÙ\€¯¡Â…A»,?Qž²I§ñ¹¯†T–®Û Ö€úvù(§ð ÍdÏ g±ÛtÁî,f�9DÂ?à>”�ˆ@©Ûhsjå(ß+žâ¹ž«¨«›oôº¯.”Y+¿8ŠDmògp!ke‚*ãMVºrÚºÛV_öοoˆóY `²¿›CbÉÏ^¬W>¶,9L×�z—ô ™T›ÍV”ssí" åB´4xâׄ l=$ŠßÃè ŠÆ •ñž‡K9ã�µû%OÔºOÆ9ªri`¡Kh€²LÀ?Ï×nGáÓ“kDêŸéÃyùζ»–ÚKLî<ÔÀR¥ˆ:„�í§xK¿ôTFsÇ i]a¯{¯Ï³ïvÈ�N`äýS4à…~G»ûíó?¯Çbtšóý Þ[¥Gs^3Ž€yáB`™œC�ébtŸ¯ßšvi-°LÉÄlˆ%¸Ðqöñ=7¼pQ¼ñŽ�bÀ|’Ýv!{ÕÐ{¾ÌüL6„Ó²’tË ¼yY©A¤qnÂ6îÊáîÈKÙ—-YHïpuVn¼;!CôAN6’òš·‹NU÷öâæu†A=?lŠøöÕÚG<3ŽvwŸÄg®R”iÎÀMS^^`¼2®ùqQ5…ÿd›H0¾ôr{­wÚßæ“‹h“Ο¡¢Á§»ww07Îï\T~àïã¾Ykj&öžÙ§T/”Çßæã­¥gD.“®áA½_L³¬x m€~”‹“Ž5ÇÙ�*¬‰šjv~ ¹|sfÓŸËïǨ°™2š¥ß�JSâ~ƒhé`‰S~óMæ„<¯%e9‰!)ê â”çLü] ƒZ™Ùö†ØEB„¤hu.ÄsÆ<Ÿ¡Ñ %vùÒŠò&ÉŽÌA~÷�d8öø’ë‚HÄÈI‘CÇØf¿ß¿)=Ô}¶¡Dr ­ÂÆêA(b[u¥9ˆ'¹!Mê¥�¦ƒN·™\I_qǾì,·—2s×7»™]g‰œKìíÕBŽÁÕ´«†%zo¿Qɪ"JP«$í÷Isï«´G%¼†ÌúpÑUûLP1-lܾšø¡@Ï2J—O PF“6ß�æÌµ$+á•!(‰ ²Á´ B¢ Çì_O1 û¸Ã�›ƒ¤òâßñˆ¯"uÓS—Fk4†€-kò¢‰Òý’Ï­©Âôq—_5wãBîÏ¿"ÝÚ‘¯?xáNÐÙÉÆžGšÙ—pFze¾‘Ñ}�Æ…¹Ÿãv¯F!¯·¡`oû±5¡Ë˜ä­›icÝ7n¦ä·txÂÑ??³ÄÜÇ6æ:¹…û�5ŠKÓ®0ÛR·y“z|�8ø`Ïxs‹¾’E�o0�Ýñ%Þì¸�ê.$Ð9Ÿ".VåÝU`!†ug/h?æœ`ôp̰/ª#FR;¨L6‹òÑ͘?�‡í´­ªÃLïPêÖÌß½=v¾Ô ap‚C²»pËQtÓFs`?qêjQC>}¨?±õÔ¢zñ—±d¸™ÔÖ�«AÃÆ÷ç²Lb±ße%|>3öa¨i’;ÁkZõEÄ˜ÉæK*¶óï¶•?;ìºkùضÌ7yÏõýHz,£p}azÁå fáÃØ¥®X3iuïØ5†­ ±Ô`X±X¯Œótt(l/ ã°òøìÈpDÜ¥Òøøa˜u�¾ÕеŽÞÍy4ßvô¹îǘVµW|3§Îµº“g),¿ãvö -›qÄ�GæQ�ÁúÖ©¼Ó ‹SâöêÞŽ!å,6Ìñû/U+´?˜-¥¥ò’>° ƒäÅü`ž£Iãá3e¾´ùaÑPõ)`‹á#]q¨R·œñ€@ íiï�F �Æ1¥Anr-òÙc®>ݧ…ï}»�  t�å~'`“Gö™y?#’;H?‹C*…ËgNt.ÊyÈ·~+lÛ!Ê<ÿ`àÔ»á¦y–÷DÛßÌôñ)WJ^©_�áFÇL’ïw_ RäéL°ýZ©ê”;ǧ—¥:‹m½5¥ôö0›ºõÑõN!$}>Ñ�¡à=½Ü¸Ü'Fþb]}FŒ›–ï³!ñy?$Ç2>æç´¶nõ‰G‡¸j¼Ûõ·\ußœªÜæŽÄàº*nù(ÏìÕ7ãU ¸^]a½ÙƒG„tÖŒ¤ÏO fŸò" ; ùh3âq(µ¾ªŽw=E;�ÌjÎU#²t<ñ™à3VŒ~˜"Ca.;¾/³!7¡ƒó’—Ÿ^÷ìʜ�ÒÇ›ò<ãŽÇ3^«¦Ó ý±z¢NòENn »€øc&@J¨rÙÈ¡Ž·�CÏ®Å÷µç ¶\~± —¹ ÆB£³=,"5Ïr·mæR¯|–f_TÏ ÿ »‰Ý­æ•÷ÏG…É (ñ›I“w®þ´ÿRRbËËK tñeHçû ³mïSÞG"ñC‘utPbÏ�†Ú9ÉÎçS®¡çŠ7yìxžòóE‘•Òì¦>¾IÌoÔ`¸)_ýÊåÍô‚)ôÍݸ ìÞ…‹¹Ü)áç;2ë ‘W� ñ&�bø‚xüápkEºçÞx6d¹Q<䆔%$¿è¡¯C‚œñòó õyõÏ‚;÷ú £m¼|lm€#Ùh‰±Y=!¨Ë{é’WOßð¦ÍpXh´©Á— Pž¤ÚÙšÔ}¥V±¦wz¯ùˆPö½JK‡^ùuîQëòÁ»²ù ß"†9%w¤_‡Š|× ÕMÄCµ²çIM²† Ý÷&ÃYwŸIogû{Úè?Iÿ ±4?TJ"¼¹³‡í¤p"jŠ_A‡”ç¡€A Ù P "<ù<4ñ_R�Y߆½¾o‘vG@T—û*´¿ pÿfvUN«ä �¡g—OÁ† Àobߨf¿Ñ´mŽÄ»6üe ã4ïu—QäJ¼ú}6f=ƒº¨…¾eclŠ2¨Qq„òí1‰g—o%«›O%VŽ0,?¢¶ª"Þxt¶[îa­óT}ø†Íóh‡®µ»¯ F¥wå®kS¤ô)èy¾½~\œðáÁq.oŠkÂ�Äò/©ß/"b@îšú’¥_·`*gÿm�/]èüµÎ°8‰i²ÞØk³uÿ2 Œ’= øáVC�zÁÞˈúóõõ]ÐÏ“æB_Ó‡HbYª\�ÞùBhV)Î(—œQ›»±—¿ëBÿ|éª�[q¨å¢tTî?úbs«Ýƒ«¯?� ™laêQßJ?â_ȸ’ yÝüŸoJ¹é¡ONsWw©¦x‡ú¥ŸOoãÓnî–¢„ÚâûÉÍÿО u×ÊÝ@ì�Lä>€m\<ÿÀAÎ|úÅ%~Áß�©ÝþŒÊâH P^:f×NQ(¾+·34èÃ^¿tÔûÔeü¹y¾ ´–è1õÕû(3¹ÏÃf¸jÑ xò¼Sóð1Ë©“ 1ü#`ô|ãúœÊØ}¶ûÌ)Ü1Q¶/¯7ê§$›MYF¼?�OÁPxsI>ö‰cÚ1%¨|ìŸÙ6J%,CŒòÎ ÌRo�}~¿ôbíøW›¸jð<«6¥ÙyоnûÏÙIÌèÞ&ÆÚ!‡·Zãf”ìà[díÑÔ“;Xâ’G+Ä΃Cn¾Y¡Ž‹û5žøÞ%ÒbkíP™/Ï#z£b¯·_nyh„E”BšO¦g•ï.¾!æÙ½fÑF—ŠÌ¥›c åîfÏ¿kýFÕ�zŽm T±ÙÆ—ìñ£¾•€ r=­ÃhâW�6–…w�¼¨ƒ¢^N§öSè‚RòÍjŒl³/PÇÎyV'&'ëÂJy‹³…}/‚}fæ—¼‹%ú�ÿÉÞã°œ8A¡¡Œ|–Œw†`W`ñ¼£�låNœ…›ªj.lJ?Þ Xrú?<àÜ´ö1#Š^zp[(˜‹,T&j§5o�8Qópž Ï Æ¡dFbxÿ&U ÙËœó‹lè=œ¡6»L†„;—ŽP_¢/^úZ}=ΔAÒ1@$Hnî«'•¢„¦MLù’.¢ç {å[ðÛg•$¾éSLR²Gýn’”Öl´{ùµ f*2“ƒÖÏÃZÎˈq'¡ ;¸æûdJÂÞ˜=_‚$LaÃbùä¯Õj ë°æ�ÊwRPÝ=¥€Šþ°ýP‚¦ÚŠ÷NÑ^¡ÖJç|Q’ΚŠ›3r�‚ôm¨¬+D˧†ê/T©’ÞMKÛÿØÄª�«Ö€|/ aÓ–K°LgñqÒ¾\¿Æ†Ùºí‘Yoêf<¬‡ªzµN.X­boò“áŠë.½€ï»“C–ôm1¨ø§¬H¹\B”ïSÏ?;f¦G$_n‘‘ß§«·Ä:Jž$‹öõyPúÌwûw+äñºíÄåš‹àŒÜÞÖG¹ˆKÙÓ·E'ÖTW¼Nt"°~U±õïF:¥d¨¡Ô‹¯†Gù÷è³SÛ=¦®çöíÕ}øAr�mt¶ËC=e;ïÅ.ÆÒÜH„$Øoó>þ'#ê&�4uÑéR5ÇO*Ça�¸W©²*<�”>š(ËW™lEe8^ùª‰­Ó°6ìG ÂcýC¤%%îÓ_®ÌVœc ¡�¼¼ûÜß<n‚ÿÓüÐy:ú‹ˆƒCÎ… -zÉû¿�Ÿ¸É¡üêváÍﯨ^¸oæ2Žxª@ (ýŒÞÖ×ãwl¥>…Ä(¯êRà×|HÎ�ýÙ…� ‹8–wù°%€ß��œ¢êF±Ð_O'Ìä±m˜?,âIvÀIþˆ$�×mžÿäýéø‹Ìnû£Î›Î¡ø¡7+OÓxæò‚wsµE�¬f T‡ïÏv.¼,$Ϫgßãø„>ï:¤ˆ6SÅB¦’ñs~Án`š tkix¥ üI;ß“ØÝ΢ J`Ðÿ>-/Ìû BB]X�&D»%b¨scJ¡ÞÁñ§âSF^Øv›mLJ®�ëÖ} ¦ Üê�å�‚ ï{fÿä½Qað¢C­�ë�7sÑ”Ã@„Ú�‘æ“À¹Gi7yáß<Ívþ쮃Ü<tp݉ŠÑ|Alb7Ô33Mò ŠÞ·õ9>ýFQ±´õs¸4š¸5}j{‡rˆÐûä 1¦j&å…r²Vèþ7Æñìþ–ïÖÙáó¤üŠèõ‚Jϸ&|.{–gö/°Z€¦['‡õÛÌA}â­WÌ‘˜ÈH}m»1ެØ»Ï ’õÇŒuM+–±Ù¢òñ«—0w9´qˆá¶>语´ ýhPx)Åe„—ƒëÖ‡Ø8ñ¡¾…‡¨Df^ð]Qå!DšURÏʉû”¾æmhá/û)òÊñß½Ÿ�¦ëÇ® ù£§3zdX@€q�€…KonK¯ÕþíˆÃ?*G�2Åg/dàV»ûg—1,¨ssm�°ãó˜ó\ÿ¸Ø™åwDî{ëà \ŸrS)!.†['?ì|ÐÖßNÖ?»ÿáOâ/]�ˆnc“HÌïÖó%øæìW° …LW}¨ômqnphÞ-fªÉãü4ÿü7`hcR4Ü“`a&«j«é°ö#1Nzp4›Ö¾ñüÊÈy¨v¬Óâ–uš3&pvÀeú Ê�‘ô%¹÷Ïö–÷q‘>4 ë³gVY5Þ*-˜}gñJñ©6¸h‚ò…6k�Ãú�¹9"§ æïFYŽ.|CÿØÿÃHàfø¤âU6êu(Wbf•ú�è5[€äéiW*5'pÖ¡$:ù�9ÊýÊÙÁóÇ~Ѭð2ûgþÝ·šçn~:7~)/ô°‡Vªaü`”á—ýW�vº/7‡”o&>ÿþ''lÀFú�óÉ®‹Ó‰GâÒK6�»ÄªõÚÆvøp#¬œ@ùu ñŸ;Ÿê®Íomß$AWµY"³7^tçD÷°^(ð¨9kQW¤º8(Í ª¼ ø¶žüqˬýq œGj�û\ždû¤4Ìã•ûúb™ ºx°,ô°ÀÀ/k’ 3Påg…ÿû?ÖòlaV/�b­Æf^�IÌž $Ù5k÷Eî±ø”øJ�YêØÀ Mð%èþ*ÿ³Ñ[p³€Ô]ýôgL(ÂÙ•‹m,dÅ  áXa÷Â{AÍ0d{ƒÈ Vz†ªøß ¹`Ý � n†™*ö²îQ¸C˜Z pBÁôú摟hë í,!÷ÕØþÙ& ÏÌRpyïogÞÁÀ!Yô�¶ô)¤âÍ V·³ÞTlU9öÓÄ¿?j´x –oÊelµöùÄuÁ‘Xü‚&\�ñÁ•锉Ì}/ ‘E�n�üðPiÒ‹Ý*üg|æ»/Ì8¦¶] b ¢˜¿ý\ªC¯o‚áÛý¢ÂEYXUQ ^°óNçÁJã?}_…Á#Ì"k&=Ù? é­þ(¿Å�dŒW,ÂÌ©îÌNŠJäå™ËRm-s9ì©$7ÿ&6·¦›u�ì™ü»P]–ë#7”pàŒn=jpeÂ;Œ=À)~6|]ð7‚bH"î$.ô�_´=Žc ¢HºûXMùΓspˆC©ƒø¦éóœ×©_¶î±ôX?ÚþÛþ�”Å áF7£†îæµ¢ý ×Ym÷{Ká3�aÛ�°¦EÓÌ#�Ö‹?"ìd]iŽß{ž± `ÆÂ¶g�ïAúß½°z˜Ë“ဓæ�ý¹9&ø sVEKiÓq˜ë�ÑBOÊo~ `B«38hJ‹°UÌ·¾O-Êæ5K¼jaž#ýΊŸ‰š$Zf#B ÄøiBhÃwbL¡·y ÿ·)X "²úâ šRe‚J&W§½ s÷à"½íîUˆ�5a÷,ÊûÈ/ ð˜ûyÎ+�t|ÿwÓ$, ì$æš½£fFÉ_£è�/ ½OBò®Œ&ú|x»Û7Ú7æL²é¿÷�·qˆG3¼C1Ü*Õ«$Bè_Ÿêé…¨ÚФfO°üò£Ÿ˜®Z¢9 Žeü…W\såZ$ê�—±ä�²¼—|�z1‡¥á˜íc!Ý8âÑ9ÐôÆ«€ Ö -”æº>º¥Ð8<8¾¯f�BÿÛ„9qÈ…à¤7ƒMoõv_{|Û˜—é©Þ’ù�'±oÛ’ÄÌe\XcäÞ¬)u/g´ÿÚD¨w±OgjgðF0Ì~qÜ FŸt%°ÐüD¯B}¢ÞbNб‰;Ó´X”p,õ¹yÿ·@Ceñ_;°ýÊCP..½SáñÅÆímu@³ö›kêo «_üÍoœÏ±ú÷16ƒI�üÆÌ£$Äì©~û½ áÝ ¢ÖîG ­×äÆ\Ã¥œ~ˆUàܤMH‚þoƒÕ Ü/•om3ûêr�öLµ¿®1IÔî$Tò‹Ùoå¯ì­7-ß/b1˜<Ø{ó»G nÿ|4“àðix’¤Üƒôãì%¤È"Qºã*„å‰v…%2ŠÄðhòÍ=Ó®Gÿã mÕ°¥ï«“ãÄÇ�r}&oà~»E7±ÅùåÊ‘î×+ š¶lC2"vßyýlýZ~ÿjSw !€Äyô«ô¼�óVîǦÙÝÛü[¡¸Ò7N3Ò'ŽÏûZ—6„¤¿|éÍ>=É�ÊÙ�;ô<\ž¹¹tÚº»Fù𺅔Ӻ®÷Ja–y.qŸ(Ë•Óg¶�nËø5äe‹¬"JVï%‘Ÿµ/…d+ˆÛr2©t„¶§aêh˜T6òaÃÃw6M«T™‹´ Î8‹Í¹bå)'&¶R»y«ŸÉĨ±¯´éã®Eн0`¿qÌÎÊÙ¯ ÛKÌ­úÝûT²ù0�¾£²à*ÔŒòEáQ­>~­6b¯;«ÀN?6/Àé7±j,C[%ç¶WØ7 ÚKÖ×éÖÆ§Ÿ6, ?ßyžRLøñ ²úHy�ÆCùü[žoV€Ãe7guKª±·ÇÖÏ~>[~¶îÌ0“ªôµv»Âš‡Sàì“0´ì‘ š7�VH£ÿ;xâó%sêy�¸êìÕ§‰cÌúg~Æî4¾eÞ¦AbÜŠbÞ|›¤MB¨*7F¦CΟŒ›"Ÿ·üîÆˆ«ª¬¦¯»Ûv§ª‰ªè„¯Ü;ÂZºã=Ú]kÝâX'¡9ùÞ«U¶¦§÷^͹|rû´CÕYò–9Ûá�3ãG*—¬Öü{ÉfÂg×”“¦Õ;¥|¥k'„H“ AÈ…PÃäi·ÅŸ'~%08]�°Þ‰Sð®—sX§Ç¢ÔTé3Rn`…åêF0|µè„&è-S%sly�\öµcCዼ{ªžóVI¼QŒ³Õ´{�S®š×Å»îéÃö»c´q§Ÿï;)–@Í'xÏ¥#ðÒ�xipr\–LÝÛê"´}žm‘‚júj6?ÜÍ|ÔÀ)ÕItÆÉ’F)·NÞ;„ -Hÿ¡UŒ3�ÒT±ÊPĨÊHĸÊ/vþ[e¼5zç™ûG{%ûŸ4g]/¸Ï‰ò5lo ~BøÖ?¶û§g |ôî±AÚªENLÏ„x×÷LIÁÔ£Ÿý.<°ÒšT…Võ¿R Fü[t‹™æË¡ÁtÀqÿ¥J3´�Ägvíˆ ¦Å‹!î癘_¾ÁM@jzªÎ™´cm ~Z#þOD¶m æç‡Ë³—H­0…>«­Õ»(KÚÙöéÙ×Ï-åááéSwqWB×ø}„·ÏÄ;‘¦xêÖ—ˆScŠÝÙ´-ÃØJtµw4¾ºG%¸NuU�Ä�~Ë*ÝŸ¯¨F;AÀÿ®º©‚îw�Gêš²À£t>ÆÉK*Sá,<ˆëÆM”Óç|¨q¶[Nt)1ÈÁÐÞaQUÝü©ž_tê‹)zH<¬¯-ÔzO]­Ž)â¨ç[Z„²"ݪ`¸`æë¹5:€�W²ïîg�Þ ¦Z{kuDâ²h€mvIY±ÇqÉ£P<\çâ~E«»Ð‰àe·¼„w»Ž=ÓaàÌä£ÛÁÔ´�Yž�™ªi cu<ô�®��—º0ÄGÙ/.ån~~ð>õÉ/êÐR³žŽ«Õ’_¯í§¶×Ø–2ü{ý‚'/÷&C¾�yú ŸmßÌ»Äή‡‹gÏJt.žU>«ÝÅ: xNX3l; X@è§Éð$�¢€€¦´ªO\¼f)ÚhÒb±Ó¥ú»©w ïÖÝíðND˜0Aè�Ïóû/èc‘øÇzçúâP&ÒL¬ß½•7½Ô·õzÉø˜ÚPáŠe¹Ÿ®ü–EO,W|‹wÏbjŽ'XX7É@âyÒ£Æe0gTŸz_ŽÍˆa¯y gMœ”±%ŒØ\9²š¥öÄRFw£ºm‘Ó¶ —r³„zÀžßà{;­2²,PxbVÃ>gɪ¸¤pl'†7 jdL¾éF¯�tÍr}š-¥¡�ö¥c _Ö�>PF|RÑ·&$ò À–9¢DM911tm�‘ÌSX)ž~3Ý¿®Î˜2Ä P`šY‘ùA6ò³ôŒò=gõá:è/Æ3‘Ɉ‚=ù¡³ò :ÝríG‘Áüó̬€­z¨aõ¾ë•_¼Á4xBsn–—“í%Ѳ·ò Ÿ<;S¤JMÝüÖ5´·[UÅeY³Åá ”²žuÆÄ’n Ç’ºJ¶â_yXöÀøèØ�Ÿ#á!“ˆ͵ó:ë�(�ü'û5¿…úRŽiý†&)²é2Çoô`öOÜ€Hy Ÿ·:¿ee1âJçã¢åþ)˜.–ûð¡£ÕP¦–œ`À,=»kåtˆ²Öüt7þÍÝx´éSe‚�öxQhäÐÝ�rͰ�«ø…}ew´(¿ey\]~†4†Ÿy¯õüïäÁ½0Äë°0M¢or yÍjY4ÎTA�±H–à”#M·Mò5ûËvn³¹HEBø×ÀÆÍVÈèDí3 TÛrñ€F*³®¼�PY&"\Â�ŽìIޮ嬈hº„½ Ô%�y1컽˜Ö\�8”{^O ›„öã¯õ%ïÜÒFR�ùîE®O·ß¼%Ê™§ïM'°õâëžW!Ÿ*Œ>‰&cž_›/=›àÚvjnwãÒ!³É勌œ’�+0ï_Òü4þ.Ã]H4Ð}ïÒ¾ÄQך®}¾6Hs$ÃFËʯ~­é8X�ËËr(±l-,Ÿ—?èýÐÍèg¤Ã;3omóXðh¡¼Š+o@Wb¬„t@Ð- Òv¾´uMTg¿þîaÖC³è—?»zÙµ¿‹,ùžÖPÂÊŠ�1/¶*æ+Ý÷ÔÊ£¼|ôØ?ºOx„�åFqLxÉ:û. IFЭI�똡J™-2Ò*y’1óìfÙmø@{ÙnqÅÚk£žúŽÎu߇¹³Š ¶3$,­šõÞj¢]]`tk-”׸8|˜hÑ(vu£@aPB!P øf3¢ +Uç[ìxvÒ³óCE«Zó@ûa_‘%¥5t’N(þ¹¨cå¼á™ÜÊR× kÄÃç%mm ø£S˜›¹!¼‰··kTJ«;ߣ¨5•~2~Éçÿæšïé!oì˜Ô¥%!/&KKTæô,ÆŠe7”im„Öè#?À˜ iømŸCÄHpöІ3ÛÙ�“.ÂÍ óþíú aëÇ7J—f|„vJøªä½ÂtQD*§×&î|L½�n´6j0¦NƒÔb2†^ ma Ôâ4|÷Ò¶’zÍÙÿöJ(A¸ÚîXDã"à æð"­q'+"?Ôi¥Â`eù×8ð ½P¤ÞiØÛG›XéÝ¿H) ^%~›µXô)r¼Rø&ß Ê·´AÞíf-a¡LoÅ1oÄfOï熱KBÇ�nÚ¹…'—’ñ¤† ­¨%ïÇT –+[`¾×úÝ~Ü*üÒ÷<h2g�½…ly6à±™®v¬Û3H–C¨¼¬ñ îé?¡å‡f\/¹dº¾¨pö'¸»è>æé?2ydú¨E¾ÇäþAWÖ3ìü!|TŠ|žß'Äè¾jûõÏrsä(³bÛû—·0_F‘»qnrë.(¦^Ú }M.¤›Ö×ósÑÃò¥G¿V1×£OφRÓΞM¿­\ó9i’ºàeŸ¥B¦¸¯f¼yx¯çy„‡ã€Ýg©Ô¯Ç�É]ùÈ|ïá5¿O}ewÜÛTãIÒôÆôhs^ð½Qãô&fÞ‚)óÍþ!îÕ¶E0rU�¤0í'Y²(^{„ð!Ìî±b±æÃó£Ô§ã{e£ü$oCÜæmK¢}¬g`)ò¹m�ÎÁWÚèëfQT�5íf̈;_æ4üƲ÷bËé”Ð6Ûï[¡=|¥ÌÚ¹â£éåK†™p2ÕÁ“´¾òt™Œ¡]߯‹™'çƒqþ œ'‘­ÉDHrŽÑ‚‘øûå…œ÷jp'é> Z�Ïj.¹òt^ÙZÉàŸ•ù^à‹."…½Ú´� Þµxñk#"R‹çàÌpú“K©‰¶¹7§6—å3•!¡¸væ[Œb�—ó7¬ ‰òµ¦—(Åë’³¯ÇÒÁí-YŸÜ@-’ªFå?Þ�'9Ž?rë31êØlïšÍ�q¿Ð‰Ÿ±7Ç÷|Ÿí xÞb+ëà-æd}ÿÒ6�W\ÖAêzyÉ~~(×*»"!É–‚‚c"I�²yaaâùÞ*WG_ÀÅÚ1ÌÆ÷ùç›î³�÷ö|od‰> b"À$W†�í 7.‹á"?�Œ›SA[;߆c”¼Uɪ ìNÃô#á/ŽÆx^‰Â�t�ùõÎÕ“ãÚb­•%æ÷ª£z~¥®ƒ?aݼޜ2Ð]"”‰õ`º'NsbÓ$ ÞF„ú¹íiG.ÉáñèÉLö{qT„wšk”<äÂÐ`2»;AÙ¦=ÊŸ„$B>‚zlÝ„ZïÝÈé7f¼BâoáÒu&Ø}¿M‹ÿ‘Ù714%»PøWÎ è¯ó4þŒá×ñ:er¦‘kÙ'êå.,m™ï­™f¹¼yYà9U7PäìÈWÁ:û´X3/ª?Ò@ߢö;,o�Ý­­à:€[8CÍî"E^.Pm žÐs_°ù‰ Ú pPŸ.Y4Äñ*«0‹z_^« ëVY”‚9ô´¸à®ÅÿàªÄ[í~øœø6au²�Ð.I„ºµÑä‰òÊÔÚ?ÒeD�Pw rfÆ:«ko¯ßÏÐ?3{6ê¼G'Œs 7r\åÕRùcÛhmMËŽôIÌ0©å‹g¢ùHÅ!›5õ<¼W�Ñ &�ÞŽhÅb¸D It�Ï'æ·±;¢Ú ª•wg&pà»´‡kä‹ôP«£äÇ÷Íï$-R†�jÝ?åx …©…dÕ§ïZ÷-¦Nûº‹øÒ�vÑ?/Y·]‘ÏŒ:ºjf³™;nؾô­b޻Ɇ¬íÌi6#MJ“ÿ P÷mÜò½,)½šð‘ÕÞyÊ9iŸöW•y˜ƒ#^ƒ?ú¸��ÅI÷FÎA ¢­ñ¥Mvfz,­1(< â2rÚ(r>±]æ—Ö¯=í³îœ¹ý¶H¶—áo½å[jyp]Ÿäˆ±�¤Ìu�‰Å£‡Æ�i}ଟ üö¢ž³<Ñ0oÆqúGÄSŒýÎÙ•º®ïÔøWuÎØsz f·‚ˆp Ê åç ¡´P‹øÕ=‰šaÍN,s)Âo,nìæ½·^>.%ÇM@è:ç¾^OZZÞˆÚ¬js¯rÌ¥"÷¡Ü|Ða‘°ôOµw<þ÷×)TðEê5T‰êZä øA*š7±�¬mæ•^ž' ‡hå?ˆ‰—EÛÛYÙl´·þ¼xý¹8‰¢Ã©ìâùO?yQòL¹jö µ¯gG)eE^Ÿ÷ëÍDî?í®öæì÷ƒ’E4Ñuâq+{;q„´¤¾¡9‹§ù:ž­5H4u˜Ÿ][÷DDs÷¥knIùÊ †)ˆ™ËñÔæb" 7Î óøQ7gHýÖá4Ìø2Àκ® Ò;ñbD÷Bƒä¬¶„…·ôo5Ť]P½…*žÀ^ãà–$£½9XË0‘×ÅKøtp á�¸¢«‘{|úzýF üEű—|¤¢„yÎa’øó Q©äh'_2Ih;ò©¬Mè­ÐÁ èÔ´§{yæöŒ|’öÝÁn+Z¬†šnz,¼pL)„'pC�ð—ÚÝ6fÿ$ßÓï »&iã'3£¥¹Ü‹«ïLg)Oõy!¹…$�~ŠÒÖe2xÂõÜšâxÊþó¡ÛhÕ5š{çlA“QÂðAG‡ ¡>Zì&Jò„®Í;Ûo޵ƻZè�ì4Ä6òìLsÑgáeÅè›éÞ “¬¹�:¸&7²ƒ•RWQ°µc§üZ1l u ByòôSMA6Ý\vk$*ľL¬í3ÍVä}•I22Yüø6¾E§�Î á/] ‹ã5“£¸÷é^]ZCè ¥À;÷‹¥ïË’|8ûë`ÝA}¦ÃHº‰é%¹oèÊÄö˜?%D@ÔåŸ=‚ ©‘™¨•Ï™Y�>hd×’©’k®[?«/Ê�A>™A/•Éj3œœØ…ü(iWHeÃ"‚Lu÷¤B‘¡E¯’çßÑ b–Ÿè&~�…Ò}Ê dÏù¼¡ r²ÛºT �È“²IOâ�,7';Ë¢Ò¨�–íjóºá9™jÁ)ÿ°T6Qê¨UqÝõ@€úv&‘C}åð™…Ü;÷ä‹>IÛóÆÖK,I%‚~WS]¬ËWJ@‡Õh©Exv—ª€@²�&‚†YHb)‹«bý68ÇÏ@Õ‰ü|E¨}å¨ëÜ¢4'¢%üÌÛ(0-kÞ•�(ì’¶ö«çÈùÆê�òü­[ÏI+�«U°ýUE–¯8£¡hæ·ú[¯`Ïš"ûÈ]#^0ÇhÏKç2×Ýè&h[�+ÐÂŽ(qP=‘…t=}�p®®¯¨2Ô®tSŠ˜èÑ¡}Ò(^ñÚAÛZ`Sf/¨—ÝÔ7|ël¶¿¾sÊ*C&¾~Ÿ71är“ &@D0î+ šèa skáû±±E¬K¹)*ËFãŠoà[çB‰8“oåµB³ÂÈ»ñU£IJ€åÖ�j(\«§µîù‡ç«ºÔñGtÍzGïôgš²‡Ž\ Ã7>yíH>aòR¡Kõ®ŒMøÒh1š'&©˜]A)ðÊe�ˆR«”sš„“êLapËgWÎhumÊà÷ØÔ%‰5Áçß‹åi§Æ*=lc8g.ùÍW· 3Õ±çö½}'Oò  sÆsi0-xÊOlŸsØ´‰·åÎX5çbž½Ëhm^WϳÅÕ.[ ë‡$ð[µhk2ª‡í[<žÔN?³ÊëpV‰Û½ÕQ7 mdg<» ÅudÝܳ¶´½\°CRÔM²á :ÞŽä)´$ȆVdÞSZÛíÊÏÂ_±JNÖçù΢h„U+¾2§ýH+‡¡+gŒügâs¾“åý•l“ãí µ'¢*º!{5ãLÌasô$Vi7|ÙOåÂF$n¶d§¦¹¼ê“:U Bêq~éjض¦l ¼qɾÌOaV²Vc†w-$ï—MÉ0‹ãIÀF¯¿Á¹ðM'©Œ/gU5®7gçûtî×ÕÜvñYFó–mtN,cø µ4¢†°Ž~Ëü…ÇÛמ—Êz@õìÕÂP@¹œà¯;Öü5¯nàc„PXS“¥�„÷û©ÀÄ/Ñë>©sýñÔ:OŸWêP´'ÉùdD'i^Çѯ¯°0Z|ü6þÀçšøä-6!P7õë­ðr6�Ó¹’Ó¾×WCXäC8WnôkŒ3Å?ó‡ÞÝø¶6¢;ÿõûó·‹Î^<ÝBÜ1XS†ô})ƒe’o}‡ˆ‚;EøCM|`N2oO%˜Hò,vʲEO(»:Ì¿sfçä…X%=.wòÅùÿØ9è©ÏÅÍÍ Y�S¹ Ùf²ÚӘݱ¦ðù­ø¾Ò²©vÊ®Fa„Ü®ÄH=i÷ÇËšÔvßmäAÐq§…¥By8—·æ™• ÏøÄÏÈøqŠªý~Ø?•'2K=`��óÏé¹ 8Óœ;X¹0/2ö¨üd˜ {Ã÷)…¿}»•. ãgÊÓ#þ�Ú¤•©×\R.“ϺÊ_O¾a}T\L™?*™dû™iîæ!ùŠí¢Ý›9èÐ}=ð†°?³Ø‰¿VìGùóŸ+ê¦uó�;|ø²Ûu`E'y:¤ðÒg{¬Ì»8�uwßbkÙ ,HÙ9áçzî¿ta0ëÓé\½+,Ú¨ù¢ä,9=í= w¶’³¯.ÇuûxÍdTEd&Q•ó«‚È>.â-B:ÊÇu|^%çS}-÷…'E/>i¿·Hñ4ÕÌõëš$?,9 ·ÞŠæzÍ›S뱃uÜGœü2ù ¹G1ð›�¼½ÎÉ¡�Õã¨È}ÇAN¯®ù›9‰›ûMçŒNÕîÌAU ívT�ž´l¼4x4î«Jléo…Ü2ï¾gç…$rÐáâ7%(z¼vznËmí™übI›Ì”wëóÔøóµø•”�÷ʾ¼¢�!��ʽo—’@™�ûWTdA~¯³½ lVåõ]3�Ã÷ÒjŸ>“¶_ªó-Þ÷žcù᾿—Ì3Ø´nÝËH7&Õî©|ózV‘Yêe!ÿ£©½Œê9�vH>oÎÛîØ­€˜Xn‡Í�$E´á;ƒ{Gåx5ŒzÀùùµ¸¼,!Ôý2µ]qÜȡƟxmy®¿£ÿ_û—Ÿk ó OîH~!€îÜÖT*S° ¶·œã[:* E¶zb篣£_�‰êØñ”¹Ž�®"Ibˆár4²l @°Rã1�T¬0ðìm"ò+’’0@òS0HÁÁ„d9¼›Èç‰ 8kÏ1°POÇ`iÀ3ð�íà¡VÀà ƒ‡ã.vüsËŸšé˜&à‚ÃAVq‘&@ý™r…$ø" Ab’/‰ ý—̰I™0\ÙY1Œ™D­�L®¡Hâõg]Ë''Ë]ÏÔqŠ€"  1áH ( &úüyyyvy–xþ%€I:0घ”c|Ù’rþ%€A¶×V7÷Ba{›«kÛ¨Cƒ¼¼µ�½rvq¸¼²�½³|xq¶‚Ú‡a0`—à=à=üµ�Úƒnÿ:Db€_Á{X¿›v€EæÊáâæÎÎæâ! ,ïüÓ² ü Æ`üÜØøyŒÙþçú&0‚Á:˜Ÿ?ÁóÁ›—Wwƒ7`sÌÅ>98@b`ûÌ\ðÖ.l¯aÏb0ç³{!ì½Ùs f6x kûr¨œi°afz…ÁÙ�ž›¦ƒWþ™e™t lš^œÚÅ`v§§Á¶©àåÚ–H'À¶É¥…‰��‰…¥I°m"x韶EÒq°mbqqavvaqql^„]¶í£`c'gGã¡ °ñ㳓1Ôä”(ÓyØÔèèØtè]›ksjj…¹&à¶Èu.®ë"·À6(F�'œÊ£~‰—ëÑœ�ë.Q Ï ÈG€d"' rI€8·m `{‰î÷%TQ×°ØÙØØÃÿ9 ®ª—HàB]Ãf›Û,`c¹†ÍÎöjsŽ u ÆŠ øÀ"¡âòf(;[9ˆ¶àkX> ̰¢0�rV;„µk0;–,\6€@(gecc-þç:?p^^�PÎÊZòÏUN`fƒ±`0ûÅ **@ ïc0,ÁlXì¿Û°Á¶m–"…,Ûÿ6p³á0_6°�@(d¹lb›8€/˜�ô²‰™•¹ƒ)Úø@*˜õO+s\ÜåÏßm¬X7À)˜ö» É aaA‚¿üÓs•ÈŽb…1Ím1‡‚ׇ7ç˜P¬¶K ÀQ,3’ `ýs‡_�=…Â~ óÀ T†X *G ‘•%Ï ˆE3¶hf›Ù%äYÙ¡¬ò ¢ 0�D9ؘ™Ù8D�@(ðKò°±²²ñH>N…³@Ùà—0¸ÏÍa»Â@Q™œ�œI8‰àgVOaÔ/aÀœÂa¾„�äsz@<2¢èa´ó[Å ¡ô0†¢­yZ=Àru3˜ õQEB ¡¯uNL‹¥ÜÁÔ¨ó*Z5„¶ Ô9U0570]6€:¯¤¥¦¦­ þç:ÐS” Î+ih*A�SSAi „F ªü58Eu5¨ò× Ê)C( @L�Mj�ê5¨ñ*PäÁXd@L†C 6�R–€/¡$›ÀkX¤Héï&Êb ¦˜’ämÔÀLBJ ¶“�’'&’“’ƒmÄÁ$XŒˆEbÐð¶Ã‰¡àµb€äü*ŠF4¿9L G6ç‰PÄà5pœçDàX@˜B†] @Ê/‰ÀeMœˆƒ²'�ÇHA­ÒDãCèb!Nøa"à#±!0À/ì­……` 'R[S…ŸŒ‰DwT•t\þÃ#€`ä§ÂÚ²WTÔ¾£¨È¢ýØÕÆÞ騿ØX½)׉ûò‘®¦¯¨äó*ã®RF—ëéš¼£§{Û‰s'©`Y�îÝ×Ñë¯>y¹ÐéŽˆ× :ëå@] �°�UW˜ž(жT­CjîèÞ¢ºöJÖsn—tüÚ­¬\·É¬³!±qsÉGnó›¼Ë c>í­åôŽ™Xnb|nZª´>+^ß-®=xQ¡¿f£©T 3Teø£ëûi‰+ã«/ý’"¬k9 N²�LÛöÈäé2b–iåã-ž™[“Û2sŒœ†ž¤Îó}¼ÁÀL,©»Âm•ýj¤öúGûù ác'Â]†àZv-þºÆ/~÷¼×3 6jicúÄ\Å�·ý¶—w9ãçšâ‡Ì}º¾“ ÊßÝido]<¢åDPn·tšrÄ>„ï¤gø¿úpüI‚jUw“e:²Áá(´D»Õîk2gƒócß^¹×aYŽ�Q²!Ô¤3¯—Øá)6¥þ«±•ýmBüê‹ÆAT«ù*n3ƒ�Ÿ#üI¿ÆW`}F†…6æ?/Byã,®z� óWß_�‹TjÉë„oŒu6ðßœ�g}l"bv#ŽBáâ™5NuÄ»Ä]Å·O³è32?{È/ÈÕ^Ñ÷½ìuê£F¥š8Ñ<Ë�„R†‘â„pÂVF·{ºXXêÉÚßu’i"‹\}´îûùѽ=�¨t$]LÙ¾ïéÆS†LOòе®%žgŠÓb�êÓ×\?^‹ }ì6XÇÝg55¶·+'ÚÏ;Ïòå]޲Åf©ÿ@9bï�Êñ41Ëž7÷ÉôÇ«5iXÛ'åç¼;• ÍþÕ«+dê2%m%%ûßñ7Þ”ÔF$žÈÖ†µé©Z»Ø$|“‘SN§þÌbþñQ@@¿Ë×;¦žÃê«Ô¹½!ׯ+á’ÌwRf’åS(ül~ìcò|ÂûÎÑý#ý£{GšGæG´¹Î/Yí|¡è8 ¦ú`âûÕj#áö¬4ÊA–hÿRwUÛ†”܆+^ì KuêÙiøv1”å,iRâo¾ø±öûÂýÆm©×‹×³ÜcÇ7u“G~н.6­Ø{dtC㦶o•šìŠ@ÿ KÅ&KÛKæâ÷‡ü•»~×vgp$÷¨§�$ØÆ<±f‰óNkU‡Ã}æªs!¦’y“¡[½Zׂ [§‡Û3ÚæL±Lâ­Ö•#˜åü¼ÍnîO�yµ½6·OgÔF€û²Ú [$Þ±ÑЮƒç¸$Üþ·€€ÿè.óhšýß�‡õßùåŸ-Ên®ÿí-þ²6…—õÈÖˆeãpÒD¯eSoˆ@� ÷Z ïÚìQÒíq!Qô!ÅBQù½si´Ï�d»‡°—…TáÁnAHɱ¡°\:*<ék-EƒÙ{æ‡gmº)ž\Cz^o6§.�Ý1˜òï­—™)y½Ûz(=YAʳ ( —äÿ;ùÿNþŸœX>€Ž}ð®¦þç×~GÔ:é›áö£qïöqý˜Òu¥V�h'Eª·µ%e”Ëñ{¯÷ÆÇ÷6wöÎWöf2ö.T_�°Uyç´jYmVï™Ë×¶´ñ�WWùÙ|ÖÝ6º7 ­ @Œû¬$3/&2§ËI§®4ȶ dj—à'RëÏ×µ6™µ6‹6ç¾ç||»<2·wþBFªã´¾pÄeµ}û|y~Åêð‚_øüB½òBë² ÕáPKËï×Ù@6PRk1‘C<=ÓãqN×ÏG¢Òº_ʦCg#)¸]ï"Ü$ Ë%8C(fUN$x[™ÞTb”Î Ãõ×ý`é:¾4œ\Ó°» uâgÀ¤+-MÚ4ž¸™sSPÚΟTÉËÁìô�°Ð:°k@êË%ÃK!· cyTÛ,œZGTk6²ƒªŠÆ5s�\ÕP+ÃèBâêê¯F ‡w19;%þëFaýïe¾*w·&‘]‘èø|�¬þŽãkrÃͯ GÞwëæŸx¶ž�ng°é<~¯ü‡_8Y B™Q#—³ç Cë»ÚS+í²³ƒ?ûÁ/¦IßV0wQ,PÏtñÌò yÝ•x¸’ àì±?ëÛfâ~ý>‹ÞŒW^Z}cmиûáŸÁ3xfƒ ÓçËF@^ìžÁ½…ê ,[=\2r.øø›Ïå„516K…y[“BT‡Ãtì EµøU™£3É6ž¯óo–ÅC2wì¦jD\4ñBT‹"b“ü]ÍË™mp9lºÕ°þ�^i³ÐmWâ»Ùò‚ß´nµÍÍìVFäÄ¢ áƒ7wS<{8ÎýuÇ�Õ–– ®ÌÇÑ�t\Xµ@éñ¸ ƒ„kÍã�È”A�WÚ FÞÂßcÎ’+ tk$–™:È.*¯Õ›Qγ€ú6z±œcXù åÌà�Ú“Aóã’Ebןÿ&rÏ$räeû%rrpøå£~®¯ýà™õ³; ñ Âß<{¨u]¼aAzðæq9ë~‡gP�8å±ÖL¤ÉÅ~Öžj{E9É?&£ÁC2Y]�ºœ€ŠËͱԢM&UžOö`ý�=i+ÅVWÇ bû‹?=ê5ÞB—-t;½÷‡|A—ÂÅîɳ>z«™Ö×ûJþx—º6‡’ûtZ-¬p$|ûj{jä·•Bìc� fb5ÔÇrÎêª$Þ‚=еP£6ÏÕl9[ªÙš•gŽ>úž1ÚúfºeXú’0î$PxéÊŠ& �Ú7PôlÊÌd&š¹+©…*E˜ªÏƒÌ9§#¥™�Š–ß <�ƒ”½êíO{Õî�ünçKV§¶±ªï ÿ(âW 8Ö¦F X¢:ñ¢œ�osa�ýäÉ{ÇwžÈS¸k‚j«´}'¨À"ÉrÁÃ�]¦EpÕ|&ò€K¿ý댩ÒÍ«¬¿}Î!IÐp%’ú·ëa…Ž(ÇÈØœ ž¯U.Çš�Ò:t7¡~\N©œ÷z+€�G.ƒ ‹¹Ià+YÛÜ ŽÑ4I ªë’8ÃôÈ×±‰ÕçŸöz­]E<ç<³}Ì)1¥Æýï½ÙàyáÐcÆeÛMòåTT|!ZÅ»ë`u“ܽ8œ’û·Ò®³@´QCüàh|z³J虨aòêîrÕÁæôÑlDIEW¿?ŠÝõÞó3ÜÛ™K Ñ&[‡Øaˆg]k©"§�‚€Žð¥À¥©¡›vò\â·W›Š¢g²{Ôs·Žü¼!„bQIf­¨Ý€íyÁ.6d+çè•Õ‰ˆ^ÿÆ$¾*�ì¦- B&É0OìÔ1ª;Àuv»qûµÏTÞŠ>1ŠEÞÀÏ�U¦qvQF®"_#ã�™@;è“^ &ù.ñû__ê­==Zá¢#Ç} «£¡¥6xÒ§‰-4Þh6»ZÒĬ�±Îè~´)Þù–ç–åo*8qUÑÉû‰J™€!2–Ø¥cǶ0úÂö•ÅI¼fî^‘×Ù¥gä†íÌó�nm'ž­j2\¼yTy¸kúÛeµ^˜ÑD–ž÷*¡3%_'[I™m[h)�}>vNw÷Å ד'�,Ôþ¼ï¬\êÛÉ›òö¯Ä­öoÑÒ¿ù0ùhÉ·¿Tq1z]ø�¯“Ô¨k –Ôb Ï–EK¿õº HêöÎÄà*"‰Š,ó­ãçµ6)|dÎqÉÆk��û�^Õ$�Âô!—$ËT�ÿ寙ÑzZº÷ùl€b¯~£.ÚõÒ¹°£š“‚F&‚Fše¶d?[uµ[vüvþö5'âíõàaçÔrÍì)èÑV.'ØAÓ:Ÿ=d.-Ÿ=!ˆ8�gJ`kcÏÿ—™µûç"jÝ0ëß8ߥ"aÀÞÖHÚ×¹øyÇ®)/EîúäÛZ@a'Ú2z,²V[‚Ui~‡†k rzi;Xâ¿í8´=Z•Û™ ÒjÐÒlã�©]šˆ�™F‘ó—­>ù·Úå“Bd =cû;ac�ôS뇂7ˆ¢&¬Ö;)+¥46û,Rƒ/Ô2†ç 6áØŽVÑL â1· âsãh[½¼w HÏWÒÀ®×p••¥j¸Î?ƒ!¨<¾ctR#¯±�0¿dÿF›á7q¸ wêq›yµª¡æôÒeï®Ëj„— ž‚àì-éì \ÐïG=˿ќ«‰Â¡1­DKý�— Ô}hkzÛ–J×Ü(siŒì ­ÝÏë íÃ;@°_—Cfh!Ñ–°²Œ‹Ä„�mbÛùa鞳߳ÜßÁ>Œ«ÿfŽÊAëÞÌf‹¸ËÅ–ž 6¡+÷wu$ü˜(]¿qŸî.-‹ê:|ÑûyÀt‘[x’+#^|iаE*ÕzœÉd*óó¶ð—û\L\’õ)>x$vu Ò«»,6ñH$CЕiês¹rë®-,üðŸÓ7$}ÓÁÞ?ɺ�!Ùmªõ¸gÓvkÍe¦Îƒt—�ÂzxÝøêdëȳ ŠRÎÊÕÏ&~:—¤^–fèì�’=ê�É·“· yY« já]N›N»ß©�GbŒŽ%µ^ê\ ¨²ÃxâŸ)Ü»úÛ‹õà/äöZ¯ f(¤1sÁù)ëaaä �U­Zàýš&.†m£¿Ûg‘Huàÿ褣¾6£¥ßáwØ.€ïþL­±œ¥¿Z ‚çç|”r 7Iî‘Oµ`qí…»»4þ¼UÏ ¡Ï_i‡^Š >»êƩ拻è¬ÝíhôÒD€vইÎ>}ŠÀ#)NA±>3–¾±‰°ÉXÉe"vfÿáwñ²k4ѵ/w¥âI³úzNAïr}Û�RE#�$MoöuÄpbZ@ï·Qo3&vfµøÿºY„þuA²KI•B�ÞMÜ;#â¹H}ÕÆc`žrQ÷¥ñ õe�½¹\—´ËPG¢—¡J1r×ꚯů- r]Ë�›Íü®‚Q¯h!Ýlˆu0‹1Œ•¬;zÆplø:2Ba xz?€×ªcqô€Ý×3H<ÐÊc˜-Ú�æw®“fÀrþöXùÄd÷„Ñ}—yšk®¿ùÊ( 䌃"àþ‘gG�zü.:è­öR–­ÖÄìm&ýýÿ¤˜:yÕ78 AóÃ’aŸF½üÕô©.½?h—®~’³ôß@¥£Ûö“|ktfscK-±ÿ!¼ {gÊÈ3hwø×Yœ|äÉUÐEª‚¡C1Ø€% ¥œwV9-ڱèK9 ~ˆ¯áú';kBçðyX¨Ÿ÷*­ÉõŽß¿ŽŒ~|�¾ I–ZN¦Mâ©hy^(&öü­Æò?Åߨÿ ªí�|ÜYoáhâÇÍ4�‹@2Ðû’—Z�°lþ�Ahðùëe¬`˜ux ˜]©g—œâ&�A²1,qg� ûuï Ê•Ar²Œ@ˆ|Ÿf…[¢¡7�êRØòÙ¯§…fWôT~W ~[¦$íò·¹LÜ„Ú�0ô™ò8ü!t,qt§yÏ#ºÊ³iêr¥ß ¾¶&*÷ÈJé"ú³Õi“Áîã:�7 í¾m×LE¿ 7ùþ¬›“ÿ]^�PõÁsA~{r±èÊT8 Æ“« Ó,ãrÑ\×Å/‚¦—… ¶)�‰Dk3ùº…ãíWéñâÿãy$¿”L'¢J02TÒrwž‚£œS�š¨¯ØÁ5�uSÏÊìè^Ì\zŃ Z= øíÍIÒÌX¦èܼ˜º.¾k�ö²ÍwAý4ÐX4¾ Ûo["œè™£{kÙü}ñϺlÆ:ÔþT¶öÐãož&èÌ8eÓZqM-â˵¤¼zP¨-û÷éP�—†’:z¶"3.Ÿ+4,Áûgåà—¹¥•nù“ôE_ ÛU/Dûe¬nŹ&¦_yþ¨š*Ì"uQǹùjbÐÔüÍ41i–÷ÄÓÒ˜c–:µ#®¾àPFxvÞÊÏsÝYÙ'�¤)ì(ì ¶qŒtKÎEퟕ-Y*U˜æyM(Ô¿ôµ$”4E»Ù¼U”9CŒÆ¡C×hy‘ŵå$ÁÙ~�ÞÍßÌÍæ@}s �fçëq])•KÒ‡3¼—⺌Aìþ ;“@ѳwöÆ~•O ¾À<+<+o�˜håøgu䄳ÿ�ìÑ։ޏ™f¶·Ôv ‡C5HåòH {†þ1zRãùc[Ú¨¦[áÏÚ„ K¼¦Ÿ©å�îçùTâ«EØ ,¢@qê1ˆ9s ÁP…Ý]¨ÖgTs�äýq‡Þ<ûGœizy»Ó2…æÕ2ÞO‘—AÖƒ f1h¢ †+ J¬tæÅè ¯QL�æÖÌ^õ-ÌïZ1úÖ–‘Ý6Ô1³¶S«ý»è£Ñ9³j‹ B*b¿í6߬ â §ùúOýU�KO´¦t‘‘Ryž]ݼÎNþ†Lñâ�Ë·½; …pUoc)kèÊ4ÿ³Lt—?á"Èb02¿Ü”©©íþJ˜˜�`Q» ÑŸôTóš¡цAÜu¦zêgÏ}²jbþYÃàH`¢>z•>­3ÝÿñÈc}U ËàH(Ûv9Ž�$ÉÌ¥{»W‚8€3ýƒF¸,lÀ‚ñæ“’oåô6Õ�gZ�F ̉ £r¬ñ¾ÃgáNé4ÑOý’û‹0gšÅïÓV ¿(iÆ¢•Ý‘`Ž=« YÞ<Ž ¼†Q×»U^Ô v•èæÑ[»s??ßÁeW°õŸ5†èMõóɨÑí®W°Ê³Õ¥Aï~Αð;:J Ÿ t·0OXþY “úv¬Êw~ú¨r)úëÊ»i2KRø€ÂÁ£ €h�cTŒ`ªƒ18DÍed¿}».̦ Ò)gbJnxm‹‚Æ‚Ì jŠˆæ¡Ù5m\†Xþø/ì§ùž¹l¥ÿ­ÎÝ€Ç-ÈËPMÈß~  NÒ Úáá�a¿-òÇèN#ÅÂtkf+éÖ!ÞoS–…UD9>�3~Ñ`ÓÐ5ª/Oj|w�ô f—ÕŽ°î· öøé©Ÿ?æ/‹¥‚Sg½®b½äu0ÚÇ÷[hB¤TÌK9’†LôA„^¸õª«×ËsÒ÷˜)·µ?ëS×µMoPŒ\íSrç^Õ4¿Ïçºïw$šzµ=•+Nù |9þè|ã¸ÌàLí¼,40ç¿¢FƒÖÏü'B.«4�³”ÄMè.îZÔ¶˜Šõ*}[“ò–³òÙ&´âÚŸµHš øÅs¶Óoµî»ƒR)°Œ½,Ï ŸË`8üB»OÚÖúˆWZpÌêOþ§è)ÜWû‘.qÝ7ßµ#7‰®±çê=^¶¥Û°[…%Êê^¶båñó.69¾# ¡LÆ?ô±â¿Â†Ö`.Ýœ|§ˆHó�¢^_– ±Ø"·EPð.WŸ¾²!ÔN~|©Ï3‡þ»D+•8“б�¨¿\ Ñéqç«HJP õ9wÙ+®¡B„�›õr)Ï#¿½ÿÓ'Û8Ñ,ƒ ÷lïEZÀrBæK?(Lô6’ØŸÃÂ8\ÒL|EÅ1æÒã›êΆò¥ÞÅÏÿ¬›÷K£œ¼xÇ]åÈ’ͲVz›=z`ZM :E«Ÿ *y*P«ÝPûP ÈŒÀ¯{‰QÿÃdò]~’£>)Ac*iyƒ×aö„¨0¼4Hddê1CÜWÁx»óüÙ6Óù—bŽ+öÀrI¥¦<÷ÝÁ²óØ]v¸åÐEÔWq¡rð(t/âÛSå?½ÜGè¾øì¯_ü?%ü¤447=}å˜'Ï_Ú3¡ÎÏ®m©¾û8í—¾‚†[Ÿ5×pk6ŽÈ«ébœÿ<@qâ/`2º¶—ŠŠ`%‘-#¶Ð�dBX–†;+ίÀrr'˜o<—ìLâñ‘WÆ?¢�äI034%§Qæ²Ø½u 5(óÍöë,$î`ÕZ¹?’ÔñÆ÷ßG“n2sõm4õgk¤]~C –áÐ߸u‹§ðÎõVoa�þYÔ¼¦ö¿§(iìr¨ÜXäAôå‚âS$sù=°¼ yÄÇÊužeâñ"lŒ&Îÿà�ŽmS–"%A1¢i;ýYúrå ú%Áq\BMpïkœž—»¨½ÑÌÈ1Ÿíëÿ{&‚ÆC¥;ö^±){ñAý'¹ÐG¿"DÞP¶ý>Jáw }½s:‹êÄ_œô_º:p6[Øã‚0—é³°ŠtØå’Ô5Àu�!ò-q{›6f‰ÿ5påßÇt“< ž¯ø ��&w°¯�PFó-î÷ñQ 윹2ü–ìG>"ÿškBös•¥“9º7Ô< ËÄÅl!`‚÷Ч=õÍø7?Ÿ×õ�h]迌ÄÀ5Üc½¸ëÎ÷ZÆ>k€.hK±F .abiÛ¾R[yŒ)0OùšÚïÿ§¼ [Ê`3žQ^ˆÖÝ¿ÍQGÕˆ¯ |÷z¸ÿfÄÊîù@ ýæ'ö¦âÍ”’Ÿ±h@º1oë÷²~Vο‘¼L AF¦2oÃ"¾jÝí{sž<;óé�›h²àîëz¦!”#V!oô4`+ì,íÜÊïIЬ¿ÊKÑm¿ ´D¾¾Oô/+ÙÐ1Cw~}Ó¤[`¶/ f‰ÍkS–¨7±W¬?¯VÙµð¦_lŒþûX+Œ½ŸŽ¿ìS”cõ>'¹,VmGìRˆö§ƒ¿n®¹öÏ­°ÿ¡ˆï~Þîs{wôsc·æŽU`NŸ¤b1C}ÍMH|º‰1Sí0SÖéÖ•ÑȘåA�Z;?€óêÓ¢¢ðT�ûNhQŸ ¨OûÇ[_WãuÄ„¥£>ýÿø€K@—— Ÿ¹£jƒŽ -�¬@<Ñ;h:@ƒÎ9pýºùX\"‚äÌ§ÃÆö¼kâëæÆ×-�7´éòt ” ß-F³ØÏÍbǵ/b¾G K³Wé…”›ÅþûT/š¼[¿– aëÎ_ß0Ïx;oúr)–É¢eUg–‘t ËA µ÷m¹ñçkšÿÓL+<•räq‡ØT-)ûG×x*îx¤ÐsƒÊXäáïg‚]©õ`YD«èµ‚÷/0Ù0û­£/ùI}ö^I†’7€츢½ëÏîÆ"®w›‚÷\¾J‚ãzèÿÄ—G5ZÀ<ݱ-‹d\þÔ+ý –8vG«�d’ äK‹ß.àÆ’‹¦,ÿ2´OþKé"E_]Ö,nJ‚ZÙÁZØ-~÷ÃÛ5#ÅË$7‘çÓ0ÛòFí?oaœ8ÕÖ°(M“)¢�÷é2¡c:;<�=û²‡å¦�ÁE§ùâô÷�PŒð�nù,ÓmÕn–^%C MkÙlê †Òã®ñÄ–.ë‹Ù^?•?N“”2H¹@¶bÊ–Á Ö÷1îßuaW;R1‰·Wu·fä~>² ûŸÕ‹*°8R�wˆ=`o|“ôo¤Ù§j¸þ2%è[«æ¤Ãïðþæ¿P^$ç.Ëvüøf@l.àÔ/n“ÁÎ`/aöÀŸ$ö»åt1˜¼ø)KÚ/é_ ߃úzNŸ �nW°Å‰¿ž—šP­FùªµT G{OlåOFûÌ�Œ!�ŽÿY¦aübÄßú” þ6ƒéèÅ›¶ØÇ!.S_PÛÒÕɰž-µEBcÛï J\ù¦±°w"♢>ö�ÓÔO£7V+®t"ýk‹¨Q™›To‰ -©%*1'êÿóýÙpü89¾ÂœV)ï�_ªþäÅa jÄ:ïð6QHR˜ôõ°a25.yùOý‹4:¾þ¨35߇Zf¤õùï Íu!¼æÃž–™“oÏ+—Ï4˜)Ï$Žùú}þg;s ítÏW5ššâűi›ƒÉX�´¸q.JÚêì);³úá™ßœ[ø�ÃÓ¨~)­õÎ�ê‚&ŠPPÈqãE{ç\U­Î¥•Oëð¬(ÉOöêOÐÕ(Uï¬~¹»—R9Ÿ¤ÆÿyÖú´°{ýakñ‘]±J«åƒùÃ|ï„°ÿ›Œ™Ì’LÙ¶¥±f̲ÇÏqïß=%£ä×V5°Ì—ó½6ÎLq6óhŽ÷ß8cŽ÷Ð1Êñë\FµÇõptì @“ÚìçÏæ¦âäë'9“�o2�¥Tøïɾ7êãr*rémÔúfî¹s9w˜Eýdfç— A3Vñ!´üL¶8ì‚äÿ#mOÝÒ·ñ ¹±gÝ(ŸMÈD$äM™èØ<îb6Õ b÷ • þš�ei˜æÞ^š¼ »Ë òÿáÖ·Wï°¯v.ì‚ÞYv�ã(7³§é_©µP«ÞAOD;LS¿U‚žS‚¹dyù€?Ÿ›P]3 ÿÁáðýÒÙ¶®º(öÑYo¤ú:-åáÜ8k½¦jù Ja8!±C+`ÛT•ÞÞÊ�Ø£9ýï%˜_¹ð >6ħžÑ㲋¡¡-äàÙÏN¸‚1¼ìÆ®jzG mñ½Qœÿv1žµcʦ~•Ý1÷]Z:%îý-;SV¡êñ6lLÑ¿äP‚äŸa¿±êòW›P bO!Ÿ…S@ÕÀ^ %u§\3vï¢Dåîüÿ:Ä^òÛðXÏ �˜ç’õÁd§F1ÿA¸õΧl;J£ï?Eÿ{#ã>|Ö�WªÏœISujÇc°¨[ÿ›þŸXÂÛGÞ5ò ã�UøëCÊÿ�П!+ª¤¨<ÒŒ™U!Ï „ì#zÒõÈ�Êã�ö­žá=t ÿ½òñš+�YÕ9¨§gtûÓJ­Yô*¨®¥oo-g6"¶ÃÁó›‰ÁûEG‘ßAÙ£j¸g�Iugj¯{#èðPU¸ª@ò£k5ì]…»Â'‰ž:š³ÿ½Q¢íuyY‰äÁQ-XëmFŒ\æwLó†Çæ 1±‡½ÖkäËO›}~JçcýGØ($W[÷½o¼Ö›õy$4upÇQ"myV¥[ô7GlL/ö¿$5‚ESòñaÆ\F½Kà`îÊeüuýâ04×RùÀŒW?�;~mÒØKÝö?ÁNòh›®Æu¾nã/ |ABSzw¡}zóïˤˆÏÖc§ÁbGÉÐ�-á»iù˜b´ãÌ]âÙP Èö·•ÉzöÎáŽEŸWrre½çß%þÓD®LYŽ@Y¨–ï×ç0œËÇGB”Ù$ª÷§¥igù{Ÿ074›-þë¡AÂ]†ê‹üŠ05%—xÑvb(Ñ‚p�<})nõ™~À¡X~:¢wåÚÚ0‚é°tRVž§T7ÿ䀒ƒÙ¶k ~ŽÆ¬¶Ó…Ø{Œ“ˆù¿fc÷ î®ajJ/QÒw"ú¿0yœXû÷ŒÂérû®-/„‡ïýGÊ.¾§ù»ëÞ­îÓSkð¼+ Œdá÷ÛÏ §Ö»Õƒš›qÝ“«¢òÏeÿ){‚–Æmçµ'®Ö�¥ùŠ �ÑÐz\—£Éøl½—ñ}>åërmοá4cô{¾8YûGkï‚Þ«Œ&¢Ù@Ó¡B-&„LR‘/ÕåŸo{¾Ôà;ãöÿ¯�]*ܘÜr侺¬Ÿþ�dG&náÂÜƉެÂKshb‡¯À0DôO¦8þ3å¼�²ìhÇ_eÄÞ ´!>’—)¼É¬ÂÓz«¡Ó�îÞõËÀóß,…`bjjªH=2ð•¢5ÔõžIêgûËñ61þ##¬¦òÏÿá5•%ÁLßT�zä»wû ˜ eº”ÏÜ4 t­O¾[ø-üó¨ì�Únã7»ƒà'[¼ Êû �–ÒMÙ +ŽQ�Òßj3„wýç¾ÒH�¶¥Ëßú’üJ=¶lþý~ ¬6ïèb² 4¯ü€¨ºw÷<‘ˆz)ïWŽÎ°Tm“ÆdÏ.Ÿü1å�¼ä7œ‹ùÏ:Áº5ĈÁ gÔ#p3꾎.X«dHíÈ®: »»H�3kq%©¤îõëÝû�U|”(Á¿ˆÄEàbYòøÅÅ^›´±ÁE6áwŸ°k›:Æ+­ÊvÔú ´tAgˆ þ²Ý¶{VixPÇWEpªÝ̆÷¡™¶©¿¿Ìì >°‚ˆ†{tÇÀ�Söêu¶0×™þze�P™%þ¬~ð%²œIÝÙ¡$̦”=áçïØ9-H¿ùÍ#_ëþ[;€¸°¥ä[¯{_Lr ¼e‰º¬šŸVM˜A¯Xí& ´°3«ÆŸÒ7­êYüõ¥ êÌŽknÙÑJe›B€… ‚�/­'.ÝšÖŒQ}˜«ÊG‰É&û�¨°k d@S[[@àÚYOBFÞ8>ÑŠàñRÎÍCYºtJL¸°ò/BYÜŠàø �ÑŽ»stŒø¨ÐK€Þï {=z†!ûx›û¯7ô¸CÑ·—éο–pØx?·’ì™ÁÅCîÄßã1~±b =:¢ÊìÝ/ɺ•åù6h(ÒõLÍR’þò�g³…Oé¼¥ÿÇï~6ó©ãë¼�^k~,¡»ú7»`ÖvøHؘoÒ¹°^×JL?ŒŒšŸ¨¨_Xé™ÿ%sÜûwXü½S1®z•uW5á6vnÃ)%Ë`öôèúÜ9�{ÚðEõ_ZÕæG\7ë–·ö];Ët¨5q<ýý<îGTJ—ø´-Ÿ²|¶fLd”˜™Ç_ÀlÐe‰õ�3«â9"ÀG‘C] ’¬?f„­œø”§9ÿªÑqIŠë@oka:A=r4´9|¨½ç”‚«¥iOÌŒ%¾Qn†-þçrX@VOçè˜qþ ûm AÜÞ¾[mw~û#­gî¿Î¾Ûé6oà¬k.Ÿêöža+à¯>í4Zñ'Ž�¯ŸxÛ­K)þ':�þÈ„ÒR¢£õás:ÍoGMØy?ŠÐ_Iy£µ.°1Dò¤ÿ ŸWí¨ ¢Z÷¡¹¨]ǯ ‡ZÞRߟ²wVož¢÷¼è_lû—Ü_•ÌP:bfØ¿9�ÊÁ‰Ç€©äO{ûf;!TÙ_5~p~CÒXú¦ÏkV4n1ÀƒEÜ4­c´H'Þ@´hÄïî˜Ú††³Å™·J¹œ›ÎsÐáZâÀ±®.NçVÖ”\ÐK^4þW@Ø¡(}cZýÛ_+óŠÖì’D GbÂÇôö+]ØDk�Ñ �Âîµ`Lj›x�mÀÎ{Ä™cQz2Sá²*ð—£8$é¶h”ò¾8–5?Pp½¢ƒtÍáÚèÛÊýÒÄ_œD'aþ­«”ÿÝ˸– äϵ^mfá¢Ó–9iPˆ>Ü›!ýÆYR�{A/2Ûxç¿lœ µ'¹5´n×ò³3¢Ò×{ß[tŒ" »^óËÂÛ3ƒÄGùK}§IZôîì@µÕÎsú¡yŸa~€ˆæÌÄú,ê›Ý¹³Ò° ÜÇ+ñ¯SÛ9{òPˈYZnrè�wY膕6álƋͯn�ÉT9O1Ú»þÍ{Â̳®÷áe‘>bE}_WKL¹E£Ò#¬÷ˆ¯WŒÿ#…ψe‚®rGCM@ò'5æ{ëîÓÞN\tzÑæc_ ™ñ-œ¸•ФТ/Ê5ÖóÁ1¥vN­vo¾í–ŸˆrÒÐh*6ù‹É=CYª-8WUxá>Ð:<ÿ’Ò f*w…p[\¶»Û(Î0%³m#U=ìÿ™²+Š-ŒÛ*’­°ØG+sLIw:hµ#¶|åÐ]l-Cà/³ï·E±¥r[EÉä±â6`[âþ:/Ý9ÝJˆ¨D¨{ÅìW3=úË&µQù¤*Ì•—8|ë?Vћѷ`·WÉ(cø¼îlYä»ý…E^«h¶N…©×k—/\æZ†ß[N;K©y¼tûc±Iö_¬~WË‹à�¢É7oqðv�„j'mË“Ìku¿ôÒPâ,ÑM"úoà�ÔÝÒ¾ž95œÞ˜�[/±ÕÀ"Éðµ%^Ü e¥�‘Ó…)Ý—jµ~�¿ÞäÎS†ú¶KĵÇEs²]ý^l»¥í(´öÙzg#F£jöŸ ( Ǭ«¸‘çöß àtj&)Ø IƒXRN�s‰T=&Ug®ÿ:8 dr£žŒŸŒ¿Ð‘Ð�_¤ íý¤»!]‚ùl½ÛV¨?]?É?$õ¼X¶¾~¬œW¨‡Þ÷¹6ÕžªŒ¶ZA8´Î¶}°.^þï¾ë×Ü,À{ìjlì_ÓÕy÷V.7�»0Ñż2Wý�EhÇ[@D¹¿œés&±fà¾[M½J©ÃíS�` þÕÎÿ´Y\OÍ‘ž¾8Ï&}Ã;&nÍ Æj»Î$½–…/n–ô—«/n€“F—FDZ”<‘  ¨î;�¶wªÄvt« aì·ôy Xk‚O\çv—KTK.�òúŠi˜©E{Ð÷ܳˆ3§cG°1ã·Ýý¿IN­rþyøí˜Ç;Éæ`tØSô4Àâ²Þi{µ,N z—¿³¸¥$Ô¨†I”–ã%YûÆKŒ†1ã$qsúÞráÉ™Þ.‰v‚'Ft8Î¥ ~9(éáýè»Îyõ·w"3æ])Îr#»VÿÎ¥TòŽ�UzÂ?¤E–9¤¿¢%¥7ã#Ÿß®ÉÊúÏCƒfýf¬¥*ü™økmøa+‹šnœ»¤5¯Käù«!긳Լæô_ Ñ$Ø;²>íŒÄãtõ›tV7îËÆƒbÚˆN×Å*wöƒ1âƒOþ’Qh!F:k;ôëó-?Ò BgÂ’Ö…\µùç?<¥cÝ¥òŸIü�/„Ãs´:¾û”ÇËŽ$çË»û€ÎcC@çÙfô’}ÝK3¾3®#ÁOiv8)Ïï¡éÇ~«cS_×'`Nø±:·zñSÚYŸÑCâ,.W²¿ÍJ z›°Z˜£™ñЧ÷Èó˜"¦*à�|gßç—ûFñ缟#ì®ü5<uwü‚ð~ÅeõK ß™B"„eIÒc6œøUý\«o°æo-ç9@ǪÀTB»V_âE ÀAYè¿üþŠ÷î0ßWÖ¿„ —€0DlSûx Og©�ô‚ a ´ Úfp&M9¾¿2öW@s;Šî6nïyZwžÌ´2èË^Þ²`Jjã>ü†´Ãÿë^5’î�Z™N̾›]E3 8,¶ð¾kQlå±muwï²Ñ]οA膕fk­~Ñõ£Na� Â0w³BZ|ê ãº`»‰l»MqÆßR ¤îfß�¤êê£�—�Yöt=MMæ 8»sv5˜¢Y„аÃ_D[6@——ônŠNê‹6yƒ%¶èE“ÕÙÀ£o'÷•lÃDq^süuw?Ô7èšT|VÄ”a£Í~ÁRï-š8tU·¹às\‹ñ_¦@“ O-0ü%¦ç?¸šÐ| M`B¹?êi‘y€«÷¿·Fþ!*;Ù NNºÇ7è [`häÙ¯´¿ÊÝj_³ÿ-_{˜Žú^[Ôh±(‘ƒªâ5G¦Ÿ8"Ò PÅRÆ =ô:îÿ ‡TUøÖó¼ü½ ±W¬Tyô³pû°³!ó綬~ ¢ c½ÿdOèr%Òÿ ãÇ•,Êú)ãÆÎ¡š[ìbëë³ö^{m‘x³4×ãÖ»F�óV›;õ“G]G´’óѲt“ŸþÈ"Lñ]NX’ ¯÷Ý…vYàjƒ\þã¨1$bäÓ©™ÁPš—ƒ£ø:ú>IvžGAƒÇ’ûv³:¬Lè"Ö˜Qe|§@$+[xãxVµp‡ªû¹ë–¾Í9,¤A€WË·Ë)>ód"0îØ’óŠq¡‚2dÓ»]ßÀ�9†ù…Ç©¡?ÖeõþÛNtï7©;†R52»"’~·d²à@ó€ûôœ0Á×MîW;º°ø?‚aÂÊÌÆ=õžÆl’ÊS�9-L~ñq�FɬÊ})6h{&ºBÂìêŸã)�:§Mã9·F�†¼€VUhTÚ]Jˆïå€ óq¢®Å¨�ƒÇ_ÍN)«Æ]ôâaœî§7Fü·c†L:üoï<@ÁGË|¾TÏFÇJh~pàzFú¶°Îì{Kßß��ͦñE±„½Õ™äÝUÇõŸ™'~ô¢ì‚ùaE²èó÷Eé|ö)]˾ç\OõÔ¼õüKÇ’*êô'ÜIei¥V$)œPJ+ðh»TóÜ»³ñî9²oÈ0#šSøƒH…74šʉj$˜Ía€ÈÜ¡*t»ÊU“¬XúÁ¿þä,Î˯T?ØGˤBS|qå[¥ ®5êLÿÞ]dÔX­?&ðtl[ã-Õ—c^Ò¹N‹¹Ä$I€Q̪ÏÄ-ÅêóÙ›‡>>ZÖ—Ã- C^ÒnIÕ¼fÈT6¯ßžb/xèÛy’cïÉlúÓ:A-–£™³¥yÕ‹pË—W ÷jw7å83lá§…×~]­Y¸ÁX‰z~ÛyÁÜeº ù yI€æöi®"±ýêܰ5l¼mW³€¸ð»•¹+ä0ýÌÏŒá„,[Lœþø¦’i[¡8™)û8"¬É橨DÀ©¯Ñg¿öÞmÿÓŠfjŒVµžÞRo©Šaš¦<—ZrÅè×�.Üøn­bgótÌÄMw:€V¯�osFwõ}o…èþÝž©Ž :9†$ys‘ó4ÃVÑÕØá%·/ý»RKSh¦ªâs�}ðË©Œ“œUŸk+¬\½îC:MWK*Ðødy~à õ¡0eÛ“ÓRÓMÄNk‰î}©gšç!AÉ'ô*³{·²_t%>ÛáÛ¬A‡×åUJÿb¿ì�Dz¿9�õ0ÞßÄ É3ΓÃÎ4úAÛÄÂ<Ñfr‡"Dæ1Ì”ân ­Úîž<ãôÙ'gß"¶�³ém\­y¡íœ}ɱ>Ï™ûë�˜-ÜÏ>� xŸÞ·È+×'Z¯q¹ù;÷‡ïþhzÜðiËl·AS'ÝÉoÎñöÌPqý»Ê¼‹Cñ£¯/�_Ôi Á÷¯:Jg±„ɘîÇC YfenÅ>û£¯cŒÎ´¨Žv+®·2‚$Ïä‰úsiËt庪Jke!yFOtXWŠ?:èÛ¨?îÑ ë”‘rBOxHëçßï§ü†ƒUŸ™$ô1ÙÓ܉Žã¸ÇmÍ&:[6€Â@Í=œsL˜›kã’%+Ì Uƒ¯Ïôù8Ï:2Ö¬”Þ(ðFhi—^N±6�Õ®[×!>¦ƒ<£;ݟ󺘀îÀX;l·ö—[b�i†Ò+ ¥ »½EVvI–:§u œðõÙ¡Ê‹²/RïfÕ\ÓŠ‡Š´iØý¤#;ž¹½.q†ÃóhÔÙÊ/JÔq=þøœåéÏ‹»´±lFtfÊè¿ úìj á�Ø»³=º¸¿6ûjƒfúê ÎØ¬)zqÜHô¸î‘xzZð¬¹é-Ñõ¦›#Û´g´/RÉôª~¾ÐCç½ÔA�ä'JÛ o,D×£Ä L'ÏWyÄ�ÔÎp–¶‰Ý#ɆÜQ­¢�ôb�_7È—R(S(¯œîÏÄÔž¢¹ß‚ ˜Ú(€*šPäný“ãyêÑ\„åhaŸoÊÏ€AåÁ:¶ë-½S4['‚㊰oOw!�Î*7åí܃Ñv´¤ÌÔm=%öèYþivŒBô~ùaòp[âbª¯=´<Ák­/ øÅd‰»wœx让^°ôÄCÑýIþ�¾{œ·­ìÈEºŠí¬„ýJ6HÝq¨ÿ=SKŸ$|d â»ïìtXyE3,l$µŸ€Šæ#®ÿa.°Íyém�ç¥àíWma=z;q{R%nv4·u®„±¤ìImmå7þæ–cj”=Üq:Ì—M‘{Ñ+[ÃŽ0ÕFK‡Ê žÛ-Ôµ� ¢„¸_Ù•=ÞÖ.6ö(‹ñUsLú÷· åj¤£�&Ãä/±Jx(í%Š;Rœ˜•Ê 5w82�$Úqw.öÍÊ ëÿä*ºÿ1³®/(ù ‡º�a]ß,Ê@;ÿh]@ëÀéßZû?Vjx/âöWkF!üÚ4è&’ý7}{�M%•a¢!7%}÷k¯ûºí…¸à�!8³ÄÎ'&”³�LŸµEÕn xÅ¥©›„ÖlOüXÀÕŠKabNŽé}!.®`�>ZT¯ëÛ¨-ó*j�Œ¥„™‘9mª�”ü~ǨŽÉb»N»#ƒãØåx·‚{=‚1ê/Ô‡™aℸÌðÝwÀèS ×[kiøq»ZÉŽÉÐ.ßû‚Rèlì˹´‘³v5›w,ñÔy= ñaÐèÏú•éqw—)ûÛ ¯MâßêÚïYÖ&=ØØÓVŠz(‰¶í_×]»ëºÐýhßü6ÉK'ý€çø‹ÑtÔ­hÄ\¡‹°'Áüêð‚C•&kÛÄ�„ã«q‹¸àC¬�.Þ ¡`ýñ®…‡[8Þ裾fök1_¸gÃp­þÛ™éDzõ¿ßÆ*£”+irhÌ#2¦é€¾ó³»KÑwe¢­åã–,3œ8QHÃg]n»“.åøãJá-ïí†ot8%Fœc!ý{üî̾ ÈúpXh”ÃÑ+«‡yw­(Ü�•c?Æýl“œ§ƒ×ãr„·œ³ÌVü÷õµšÜȰF[++û�:àTs¹CØ7c曮ݣ2�Æ@“ƒ½â“Lg Oð€2µ•*.Ïèèƒ;?á†Ûï…Ã̪™¯@a™dÅf“�êÈôŠÑ8hxƒŸºíWuþe*ö�VšÍD쬿r«p9××â}¬ž©ÛîÞ8²ƒ¾±»¨“fmáOW\›„Ó˜ž@XÔÊQ5½oO�¢kçÁˆÛ¨â=¿„Lñ£Çí8MÂõ‰¤Ø[Ü­°Ýíì|‰5=Õ0¯E8NUúhËS=%—ÂUÿ{OéìêG±BC—ñYv¿ÇŤ»Ižq ïçbU1»Iú‡ö4‡mÎoz;G—§jWžÎ=ƒ©ÒüèôZÉe±{¾¢¾ä>a 1ŒúõWJàZ~ænÅ™/8ŸD\�5èY¡Òkh8þºª…îãÑ0亦ÓAªq¤ŒÑð÷ÚEü1~4û®ÉÑÛ²ÆSa÷:s±h‚B‡%Â9‡Žû°b9ôédÇÞöJÝrQÞó]3TH tõSßêãoH;ä/WÛG›Oñ²ÐmîNI¹ië­ �ox‚Àºk2~3œr· Ù£ü�ä÷}ÖzŸ?-é\5_}“Ë)�f“þt3ô0WZzßù÷óCÕ5;¹»ÅÏ·G¹HÚÝ­i|W„~C:(t�®�ÜàK7†Yï{O˜×*pCÀÅ�¹Šð¶¼^ë\Ix´P{Í.›²pÚN%˜ø!<�A˩ђ|m ùÐeçFÖѪÿÈÄuar«JDàQ²VJÕÍÊf*]+.除BŒ’´pµ{a+ŠªK„¯B+áER…¥�½xܵȻs¸3-n•ä�¡N£†•PZ…¤Ó¯=ïN’êš…#*/]Í=và@Œ-Ãr/,,¿[¡ãI‚paÙ·PM8WÍ2×Ó°U-üø-ü9k¸–åÓmIÚá× \·ú]ÎûK/å›o†#’†ªÐ;v“_uéÇæù®"0|°—8Ù�ßJ^óq!t?\¨�)áò�Gðò@Äõ[bƒê/{Áì ÔUÎ6J…p%Ú0.ìzÓ¢µ’ÿ\X¿ O¶7ÚÁ�󥨡[ð«ÐO’ú*`J§Ú9œut$h›¯h~˜¬O<{•[ÄXrý´€SB–Ÿ}ðq([;)¸úîx�D¤²òþp� ¢‰\¬»r!ß%ˆ2Ä”8™«¤Åxp8\lb?øðÕ35·ð¾wLo‘¬^rdÙøøccP¹ƒ+$ ø[לšå¥‡‡BÅ[Ø-ûÚ×Q&Fh�ujª©Ïƒ¯êK¾:‰AìC¯OÌuá2C›ÁÍÑÙì�ÔοQs°òròRðÐ /ŒûnSª]Ld&“vå’`|ÁÎÐw‚b.ºý2RP·‡Rï¦`uT‡ÞGyÇ{¼† ÷I‰�¤J½0ñ°þY[ÝÖáÒîeH1ûAM½ÙM0(¯¦�UƒùŒ3YÀ6/k{â�x¯š|úÓN¦MX™ÙöD6·ð8G¼'Ì©<¨ãˆ1ºü™Ú$~uà q‰Ž³XÁ¦ì«`+<>››Ó 0µ¿kUŸc[Åe–�ä4Ÿ^�ðKkõK•qÒé‹Ó«Ä�‚3óœX öØ<±øÝEhñWFr¬n¹Æ’�ØPš+…Ú†”)ó»ú{rüÉÐÑ‚‡Z¡'‡Z”ä‡RˆÉ³òn=*-ºÃÌÅS!J�à{ƒãH2ŽEE"n ûo”=O7Ö 3Iˆ�Õ'V/@a4ÔVZt¬/‚x¹jÞߪ¬x9ó�‹Š>Ûð+ôÃïÏ�bdŒ¸ß™ØÔ.˜ѯ¯ïÝAqÀÑ9%\=>_ËgpïØ~ç5UÀ·K �MMÈÀ2IÓˆ¢–¿r¹Ùy?©û��ß»´0Ð)gï‘Ó^5)ëÒF‹«cÊ „„ ‚ÈìÀ5ì&vÖ]áf%pÍR™FItb’Fô¸<=Zs{ÂÃ�G_¿\z¹M�/ÏðBöðË%°ùá¥ú2€y=` úº]h>L©¼ØÆô›$•Œ @Óz[+B…moâF˜ªA¿á¥GШ„éddЉ>µ+Ó熸Õ54Y .MÍ4‡‹?2�¤ k¼|¥Z­FÅó 벚âGT1S{>õÃüQʦ ú/1Ï¢ss€·>jð2>“úPìAæñ|ƒž èæ¯íª¿U7Ï£±Cÿ¥‡%p­ ·°«™­'V!S‚Ý $ Pªð�y€êÂ\ÃØl }4—ÔÃ^ܰÔåõ�£ç®b¹sIDˆm\É­¾ Æj¦æ¯Àã95êÂy£s–œU�·¬—»pG9ó‚èÒ`Ãø@­wn ýÈTˆpsî*Žà*/†æÊ ¼0{Oº–„;S–Ü=‡;2Ù%ôûoÈâ`tF�–þ2Ðð®D²ø6„.�†±Í¦‰äS ~?<ã=¤·P†¤‹àÙHÄê(•ÂkÀ#ÝG/¢½Í¿¿Ž²Ý—É{cÝêßÄyž+±˜N¾ó¯Äêu1Ϙ‚ Õ÷‰�‰„YÓb£Òmû(¯h5Ã̹–õÀu­²Ÿù«}'Af�™vh·ª4Y6*zUpì¶®Lœ¼ôÇlîO~TÿE=8ŠxÕ§ ™¼' Œý ¸`¡<¯$àí•&eº ¡±°:{B5.hC�›wÖ ¹УZô«¼f8q [x‰~áG7±æzä cê¬ ~çP'Ça“{€ÎrêÕƒ “R×rnÝ eÀ•Œ¥°’Ÿéw-ÊÒ‚�§EÙõÕóYçM…G³³’PË4RfÕ‚ÚDùú%n?¬„™’µ=±PeiÖbÆ¿r\òb¢®´óÃ^�ï.-wÌn¡øÃ èiRn¨ìšZ�øu»ó)3‡[Ðdë/Ä CE¬äaà‰ý`ÃÃv]Í«Ðkd·¸‰Åõ0»L‡B"Kµ?-Ñ5T¬"h¯úXkí»2¥Ã…s·õž¦ä+:l¾Ä:J¸¹],ƒ>_©Â®µùH\”÷ŒpßÞ©©‰:'ê%é£CMrÛ šp»ôù¼ÈëRìH”6kPv�DC.Nàœ[GA„жàAÞè ¯7YI0µœ±É$á0Ô/ x¡ÎÏ,«s@8_ b¡‡òB”ÅéãY£ôÛT˜²äa‰2ˆ ûAòƒ­ËêÀŒBɨï£J€w/HŽÅk)âü�ÕîÆíüĉlvßG!¢åè%´ÚD@vÍêâÖ›?û<²–Âïž´Diª ;×$ ~Ž[ã0˜ì˜h&— °`Îp³ÖæÎ ˆM!ê‘ %dÁüð-E¿UµšXk `ñ¹‰ZØwJ€â†6ärØ4„¡°(º ½uûÜÚ5W² J@L>޼uþ�,H“uÁÉ}§#Œ>ÜíÁÂgp÷[„r‰»÷Cðè$E }ð­D�}HY‹K)æB¸*j4“$ Äbø;x\N7adö« }¡vT»pmM¦·¢Á(®À¼®ËO2æÂªá‰÷” Û&{~ƒQ–€ðõÈ]Æ™èíÚŸûY¾„Ýì‚^…6]cè0=™·Ê™ÚoÜ`"‹5šýœÓ‚ð•S2YÅ_HPÚÅ,£¯Žùñç˜+©ÚAÙ² ÷œ�0ó–%>"G“=íðÂò/=|¥ I;À¥´sà«È b4zÙŸ„F%ó¿’ͪ1¥[üŽu…]¡ë¦ÿwìÍH°ùh€Þ<¦T~q #£°JO))©/F¦ ÿÕ, ÎPB*W^§.Í÷3&ŒPçÔq¥Ïã~厙‹5~]�Œ$�â‚çyH ‚UàI~pªzภI0¡Ô‹3\1GÀ¬Ó8JòÇ ¾8ˆ•¼Å>޵�ÒDËA½éøUCp~fV>pÐ2´YÏUô¨öâa¿<�—Ï/ÈNÓ_ÀS/buïÀ2¯3>6bw+x¹r'?nZsù–”ºß+ÎPõ^ÿ1䢟û¡k€”D…qÔøCÏóçqðP\sHáJa[Èaè`Óo;6À± ë�ã„é]®¶yª¬ÿ‘ þœ;\Þo°¤Ð²‹Œ£3ÕÝÏ'I0V(z¬ñ éª&"ȉÀèÁ8èŒÈä¶—y`t¢ƒ¦¶wÞÇt³J IÑÄÜê+NqÝL]lâ„t> ŠJ|ÞöM“ ´ V�†‡|$‰ç�5ï´â×9§hèCÔ¦z2>ÂLù^� Ö�Ï[1@ñçø¡‰ÄÌÄ„T�£�Gg“æ©êTÀ´ý©oDËçÁ£šèe8àøzrV–ÞTVYˆh?í@«À&|6A¤ &°Ð:�RV·_Ôõéµ¶/®í%-`f¦ú ¡Šp—§èë#&¿Qtbfpœ¥ÄúE°³\uòÁú¥n­ÝÉ8!_¬Œ$t,¿â·H¦óá�µzX(ÚÔåK¹løÍcÀóO /Ê-ú~ކxL|û�/¦7 p#‡é bâãÑ_^lû~±’ûø úóc+{þc·ôÜ/KAæ2 ëº� 3^¢@½Ñö{Ï ;T–£Ê8Ò±ø!jmñc~…\ØXC@aÚѪ^]õ=ð4ô«· �+wâýô«xÖõ ¹¯ÇãÇuRžÈí?ÊðYû#UÔ}À+«^RÞÑÈÿ듾 è_J!oˆÁŒªöJ ƒð@ú’­Ï�ýMW!_~ÈçóYF¹�Bc´ÖõÕÈ×íüµ‰É­ Qfݤœ�kd‰]ÿ½$äY)ØŸWQŠðÇ-+mô!Nå ¥»!¤A_ñ„q¯!üï!á�¬õK¯K¶c*°BD¡æ*ÖVÚøs0&»3ɸË!Ÿòãû ¡ר­ÃuTÎIþÁþKæÛ>É;+ <߆Gêtä‡mËãZ`�<&@+(¶„ô(ûÌôª�÷§�ç·tÓPW±ìµ½€îÏù+œT¦êx0tN¤3ud»$6ÛÊÈ𭊼 µš) æ)‹mz,oª`:ùrÃÜ7ž½zÅIGÁÏ”…p…73�¥�s=æA@™¦üñQKúËñ‘ó’æ›> �LcÃsv'‹ø¤‰J0jôûÀe«‘¢Àgþ  IÒbK(Ã`9÷`¬a9”±d·ÄñSêLªkù9ÑJ L ¿ˆRX ,�”ý{ ì«Ô¶ÌqEG?ÒFÞûC¿*¹UúXí Bœ*ýÒüfÇ»šn~Á\EUFò¡oœ·æþ�Ê¥cܵ¹0B¬!Siƒ+¡µ(Lû‰#bnHö’7߸<éc67A_ë3¡ F^ü™CÌ7Ù/0¾s7Z5Y‡vJƒ ¥ÒB›l*K˜n„ý±;Ç0D¿_ŽÉÁ‘‘B�( ½@ÔMë$‘I �¢]pˆšNÄ ùõV•.ƒ¢\«vÛZAó.h-Îè¢$ºNèsÙ¦îÙ‘ŸcrIïOʇˆp„‡´ÔLmñ¸Â04žœÉéº#º¯�:§Ž Äø™ë—0“–0PF�§±#eÞºÂX}÷qíß.DÅãÇÂvoad õé¼nÈÀM&@�òo�K†éyûz–=딡¦‹ŒQkƯBÆÂ8fäDz:çL|Ygì“÷?}J@>a‘\xæ™û›¥6IEø@ ÿ)@lSWÞW–*­šôFt ƒ­�Yµµ¦‚T™Mõè_ñ–b|€÷«•$J°ßv÷š{Y¾!÷î�‚ÐF³¿9²ÈÒîÙŽ’€¶¿�š#�üóÑZÀ±·<'öJ;BüIšõ¹\õ7-N’!È(ti›•½ù½�ïhRdà„'ÁŒB¨»ÁáuUúƒÕQ ÐcØ`ÏBŸ)±ŸüÂá›D–“ÌNJ€P¤™ePÝ_ Äý‚ãw ÿB>c)ø~î…ðë­ºÎ�ž>}Œ?˜¼ K�ðJ�bõ'Ž—¾ï"ò››£% áŠŠ0Ì‚f+�ŠÄ½¾Ð[Á„ío¯FPÒÍ„Zã†Oª¨XÀ  ô/¦«@lúßßPUcŽ@½íùTb3ïÄý7>TøOQ$RêB[Š.¡í]?f�&8‚{jø ßŸúˆ(u¼è¯êYÀJè›ðÏSÁž…X+ª‰¨àJ9¼ïgpY“ác¬ªXònqþX„t ìˆÚ*wPÜ7tw²6¥©‰9µ0÷§üs¢NEå o‚<¯%$m }öª“�ŠyØÍ¿QszËòKÇOØ·c£2¸ÌO»ø<œh!�_±¥‘$(ék’£‚GÁ'‡šÙÁ€A àj€!ìÆ¼Ä½I�T‚Qˆ,iäõ Á)Aˆgq dvb@ˆÐ»G9ÖÓhÄ�äëß„½�)‘U=Àeu'�ߢu$@T7ê¬4 jôÄJÈ|,0,™›S½BÄñ¥ãE‰Š ±¸¢éF‡A|—žŒ]vMøÈ`h¿|æLüŦåKÜ_÷`Ý¥Ú–çÊjs[ç[Ÿ3á¸ÃYî,yÊ×­]»žëR1$·i£=Œ™£î Å› †øP"M¤Ž¶k¥äiøJïý YÔ`Öñ@Ûºp•2ù´:wëV±VU8dÅ3~GöžéäW"%Øæ½/·^ÑVuÜJÍHÇ Á`>Ø 0™�ð�ÏËä67ñ3t0ö©%Å¥¤Ç1Ó3VxBoŒ .´›£„è=¥„ §„â'Y€qʼ;þ%‰±Û+ïq¤2@O¿ã-­FößzX GÜ3¾•öåBü6žÄ:€aü#ŒÕçÀâ"Æ“‘ß�Õ Ú Â¢¿º°ØÇˆ@Ég?á)Áç¢Ís‚ó†6£˜gcÝÍo¼1VAúÄÎ\Ï ›²‡Æ†ýÀg=·sÞ[öÛźßpäí'y�îT<£KKéñ€KÑ-áæ.œ·þO}€æÐÓ»ŽòQî„hã+:´¿FÚéøÉhÛ/�‡×¬è‚c­¤ªVd´¡'é…Š€îÚÎz] Ódz‰3[ =IÈC?! ®[/z3üFsAX †arÕ¼2cs(èm‚¶(8=í1û‚ `Œæ–'XòŒ\)  ¹±�˜´LÙ“Y9ÙÿÈõ|�7o ÉqÌ?EƒgcÌplœ“�$‘¡Q ß*0Æ]ï™ÍÄî¦í…”CwK|Â= Qa6ôhþšBpƒ@ ŸùaDš¨KCti �¡ŠLÍÃU“<§ŽË'ë!?>šŸÃÆ©¿:�›ðð?Ù߯ ß‚Âq  ¾pã +PøÄ-¼¬PG‹äEYK¿6©³Ø€øxK®Äí.ûr ˜>‡^'�äol„¤„èÒDä ¯`­ðR ˜Ëž¾Ò §ŸÏ!Rñ(n[î÷ ¼ê (± ïÖ5.ÝB%=x飵Y¾Ž:þtRúI@ˆ¤ˆá‹O›òÈŠ"7vlIJ9‘ñyt‘YkµÿÃ[×h.¨�`Îò [>žððB†yHDÚ )/E<û'¹ðZ}eú}ÈdD´=•JEß= Õo7èJˆ�‰,Á@ø¹ˆ@We1Ó´2#ky«ÉáŸÐ“J*w)nDÀû6vgê~'ßµ¾;Ìo¦^×€T Û[ª]¾›‹”¡�Ý,—®§±ÕÍZvQ¨ë>柟€úS`HœTɈU仿éðîÁ ?v=Ö h�\áõZXÍÍçâñ•×LÑÛ;AªHÜr߯_3סnÊ·½÷ޏÌãž2ø±t›kl�sr�–G3Ç žBÁ$¹|x÷˜œõÛ™sCQÿ¨¤b(¹w‹�c£'iÏÙ4’u%ù_Í\ H4›è¸V,…˜\‰ìc!àÉc+ç>‹n¸@Ä ´ߤ:̬§&Ä‘ýùr íIh¯gñré«’«+:Á|¥/�¢ñÜãa†Ï¼õçQkºs]8±‹øÜ^Ì'XWµ:‘•é›­C|¢ç»—cHc~)<mÁ¹ÌŸñfF³CEhS;ßwKù—€Uëà´¬¬$"r�*«¸ÃGÛx9" ޼:-(óø‹¢%ó¾$χiÊùIDn®Ô¨Þ^-¦èùº¸¦)ß`Ÿôû?J“vjOrÂBab÷QfO÷QTü»rlN¸}VÉ¥4òCXz,@>r¨ûï��ÀwЈY–/|ÃÑÖà77÷É"9Á>¬Œ÷ Û–ÜÒf8Þ@YIÈ»ŠX%|…s·åß?<Âk°úKÝ×t%ˆËÇ'Óu>ö²<�xžêHà@{€7r[R2Ëîåw0äðãõOãŸMR\¡%µ”;ÉyáFs]…#·— †B?KSo—…=ýùŽ3aaOšdê( Õ´{ÿ×c[•*¥œäBáá°´;ö~£‘ [T8YšÆ]çWW07+‰r³`ïzÓæè—@—¦dd«váU½ÌE™"‹é¤™ŽTçí¸¸­\÷Ö~ˇü8†«¸É¥ZÕÆÜ|ÆÏ8üѯ„zÿ=jÈ‹ì7öĹ'Y…o8 ŠˆÃe9Ù÷æñ O@ž5&Q2†¸×v•Î(_ ŠÝC|>2•9)ÈS:6pö˜Ç§Œ °†%–mðsÏÎ v]<ÉwùN8ð~(yhJ-‹½Á¶«lªæûÈÊÇí ößU>bãOÌ× ªæCîö´È·jdà0¸e`BŪQˆº Yß`™Bé|e%«|ê�¸ŽùgQw­Oñ’¥ÿöö¼¦z)`-u…‚Uä2šÝââqrŸ¡Í²ÁÁy”–“­ä]úVòAþ“µ¯ˆ›T¦áÉÕ�Ÿ¸ñÆAZ<0^@™ål�½Ìå~w±�-3~²Ñ°Þµ‘A½ŠS½YY‡w±®Ä¶?Ywr«!×þºuÎ$áÄ#˜ÀTù`9‡¡ŠñÛµùÐ-g<ŽV¢ sžÉ�ö-‚#nëÇѰ ß8šˆx‘Iâ–§Ì0ø½™›¾|Z®—íÓõ¼oÞ^aE j-ÀæºÜ Q…³ž0D/’j3ÑH¸¿3tÅ]z*®ð�Scƒ‘:Òxs¥¦l‚½²6§Câ*Œ*9uê€ 6å­·—¬]Sµâ4å�f”Ñ*U¬ÜvÝ©ÝV†Î.™H¾Ü‹„fb£Ã’Š$GĉŸ,ÔÇ4q'åkÌ žÍ¡¢ÂvÕR-½¾þfêaÝS_y6å­_¹âd ûBaø‰5x,®„4mÈÝ5šÖ`# I›!�‡jì<ÄøØGó\íP¶m™W)±|km/R•½›Aý#›XDéw Òủ¼/â0fåY•P½o‚ÛQXd6q±Â¡’ÈdX9âëÛ¿ï ²°¼î7�@ÉH™è¸ÏùW¨¡ÌÇýEf‹OJL„J]jr5MëSk%™“)WªÔn\·X)¯ŽÖ8÷çiy�AÙGJ†f‚½šÄ“{sá^¥Ä¬¸†Æ0=>æF`ÞÞ-¬<”Åo³ç·2Ƙ¹I^˜ôµt�1Y?U-V±þ»&̘k\KXê=ŽúÕklМ\µekÂáJåÇ|påá!šñÅ脵ÅÄ„HV–�º}ÿw?Í<`*RÞåKEÀûâÞ?ñÑÍÙdøA�1$ y¹îðû¸Ü1É|º\Ô”ùU„µ-ôÜO¤gk­ú±˜éü%Åu}`‚Ä¿S,4 ³¹vMŽoÁR&®$-†ÎÕ™¿_§xV½bG}šoóã�ÔUúÞÒË´ÂïP`oH¢™$Ï1ÊS Ök%]ó/½Ã‰Ke'¦?e;Y×ø�|0­É:R »ÌÇxdV¨<êü9¶.r…‡pݽ+ŒÒN¦Že8•Á/¸ÎÚí>�‘V@Ã{9á.t E謇縥­ðk{ÉÇt=PX‘ 0-_]Zk­q——÷ÉÞáòX ûê(ì5øó6_@£¨þ-†ó‚Þ”"¶bûÍ&£‡Üõ[(ÀûL™˜PEqzÁ¾¥_“r4Ì‚xÜGSÛÃú‚ŒÏɤ_Àäþ ‹!Ϙܦ�¾ Í1£§†Ö8º-îø†�ZNݺ¤¾=¨ €ëÞ¨ÖwPûuCõ/J™JKÔk…ßt�€(úаiçÛT �Z¦ú”D;öÛL2“ù%¤Õ«ëÉÚ¢iF†×V7ä˜&�ë=±»E; r+=uº9a~é…Ëî£äæ6Û£K–5l´´Í;Ñ_ÚˇžU¬87ÛÕ Š­Œg-ˆ¡‰è~|€8"V¾™ojâ±…ð|™G\ɺ˜÷ˆk›èø[Â8v—{ÜI(ê<¥Eðú(ÙG)Ç«¡‹]»ç}�H‘'tIl¯­¶ŒT´YÂGó¬fàê4£ý‘• ¨n4 ÷˜ã2"Jq�ƒÐxHæ½�œÍ÷ú%vw™® ÅO~¨Ó”+ ƒWrhx×oí ßìÛŒ„ C‰[ ‘æ¶,³É&§á«"†€V;Ê,�û®7Ix “â—ÍÀ-¯p85ô ÜZ~‹ šfÅ£ âq¡s`*öe6 o(«Îä ˆüŠè£—`GÙ+¥%±p…1ÑõÅfêÝ£ÅÕ·ØøˆEW )êÉ; ª„¾¶W»�ø·i<³¢\v¥ƒŠµ¬v/÷Æ æ’´ 9j¹Žo S™>|®ÍÕΌևÛ^�#Á'ñc í³¨À"þÑ\âqI «J,à]Ç ²ïƹÁ ÞpjHô´X�GÜØÔ’b,´êò(Ð÷Q�d?ð8LýÑPq{o b¨F-`,«C›yÔ>Ñ]8\�‡u�…-Ï\TFÃä©»È ]Ÿ~î6†(í¼ŠcÐ[YÄóØm^ êìüäVŽ1þ•ƒ‡Çyx~¦�ÎÖ7Pé5†d]Aà£æp¾Â©h+Ü‘‡Ü* ìtíà;\Ï…Ü‹øòΤe³"ð^ˆn q{�hwª=™Òq•̱{ð<�–_t±'Íx¡¿ˆÊ\’�~*ëeG?!U:ö϶6µ';Ô¾]\ÇôuV^E@Ô-_ØœnáðNýlD™¥‚X7a(y:ò Tøù+ŠCo¨)Ü÷ ¾�ŸnŠ{ j§†á&MØr­|º6Úž_¹F§«çîsij_­TB.4ÝâkW?RS¿÷Ó>®_–jl¬-™Á<ì0tqœŠ «"[T9îZ±UÞ3¶ÌÖfm¬ì&µ AØÃ^+C­×Þ,{B�'|¶T€¶&¼œu(§&›�l2ùÐR…[\&áiw&A“JBsVû¨AhçÄ®+º@•¥�h¿�qd¹ÿYrYÌm¨&KÌU1æ› Ä˦{Bˆï"(LY~*À€@ž‹¬MÅÛS¯÷®Šº2�Î’ûÙ�1ÒôÊK ðjd"ö˜cqc-!’ TꡯÚde ó҆Ū¦UØRõcõ·q öÏî¯8_@Þ‹m¡C?Ó‚qÐ)ÕF” w�Ç.~ÁláGúõâרнéÛX蛿­¹áÑí_'‘?�JØ€és„ß]6âãñ¶âé€N°nácÀè4 _¸ˆ¥@})rŠßø‰{åÒ'/zßtúÙ¤�\É“nM»€;ÜwÉ5àô°�F`•zÀ=´6â©püÅÐ¥m²ÂÚs&´‹AE!^€ ù_â A•–›Ö`õé(‚¢º•C¼¿ªBÿ0ÇNÞ8ý‡/FTá‡R¤`|þ!æU®#y¶ðfE£Ÿ]î[ð¼{†Îõ�)îUYà]ù4é åP «yA‚p{Aõ¬äœ”~À±MØäƒ!›6æxÈýY “Ÿ©�|°ÝƒÞ;ºÀTÝǬ�=ðOåhÆ~äú˜s[`¡¢ìÇGwB(¬RÈ»û“¸4ºbî=áÑ…C_뉟Ô�è@ÓâKW>ÿCû³ï9¬!µ�B�”~Ýä¡…}§ª–Ú\émÐk°w±ÐžÉ­×‚ ©ºŒö;W4 ÊìcV5ig<ÇEЈÑ(vĹW¬)��|·’ØRmÇwð@Y ‡Æ�d[PTMäm(ërnqãeüzx@·[†kžLÚY£ x‚"‚'(œáB¾ù2 £"ªÊ4úþIòäŒB¤<ªªs«9J#p^¸å§>Ü"CÁ°.ç´Âϱ îP‡è�Bô.…�]£ä!{6u$Ö4Ê€_ú-Öĺ—g3^3ð™uIúë&xÌÊ“˜6)zñãŒÊqsÿµw8ŸF¥§àô¾ÁênÚ”§>6l9?¡ûåÐÈSA€>l­ç)@"Cvã¹À;'`&�­%tmí¡"qw¯{8¤‚­>…Ó�ß,XôÉåÆGÚm0fn)ŒXzw¨È¬Þ]öËÒp·쀚^å`ç'N6)§À-th§W*Hò˜_$æÅH{'rK¨¤ ÂS%Gûú ´Ç›Ñ* èqq‹ÏF«…ÄæºÆ;˜f€÷Ž^ÇÉÂ7“§L2ùnÃâ$ çDÌ$uì–{-!á�ýVÈÿ£J9›õDïì‰Óꪶçpé.´„�0ØbÃí|0ÂêÙn¢c "|²†´„_Å%1�ªþã‘tÛŠx”6–ðÂb[1]$üg�Ûþ¦½¶¤“¢§¥øææê6þ’¦nRØã…á7=@P/3�“ÎÓíX/¡‡^ å�Bæ(!„(éP͇ QÑ€çèzZ¿öùYb©B›ÿ¦Ìsª<Ž2m™¹Xæd�ÜÅ»þµN�„\ô¯&V:Þ�M<óÈR„°EÑ~¸ÔgÖÜ||[œÌÔ¬¿ÉíäLš…¼�ð{LIäëRMÖ8Ù½ÑÖzÉ6ÌÖEE㺺6à-yñÕ€ìɹÁ<À૞ïVRÓ_"ý€ÉÑ5|s©³Ã"ñG€?íæÀˆ²è®þ­|Ð�#X¹�MTHѽŠÛÚ·ÅgD®TaçÆbo©Qj»ÿµ†Œè•,Ûd@Ì"Y&ÑócÎ}p¼AO„—ÇìhñÅà")„bOõ½�í®Ec߸˜ñ‚ý…ýíûªéÑbœÚÅ50d7C³kó@}~qB¾à�d h4uaÈÇr=…q‚°"^èC i À¦ ÅöÑí'…¡•ˆ‡D©ÆzþXU &k§r¼AðÖ`m’¨‚a%Í»T’ËšŽ�^ƒ€PIu˜ÈŽ St7ˆ¹ŠËeÒgÍ£öLÍ`º´‚0Ö:–¶‰Vñ DØ7¾õýÌs@.ÛôúxWv4B OŽ~>æÖ*,ËÍ«]\ü‚�_«ú—îfžª:�Ç£î¥çaôL~ÿBñclÕ�Åj‰’TâÕ€¶d þš�ª�ÊdqEÓåÞ=ärö;œí�êÞ½ƒw­VÄAФ‘7—¬ tFŠ@çoüTòæë¿KAl0O¼�0çYÔC²Û]7Ûs„k?Ú’²‰Ež/R¬ÔªKdË!¬œ³Š;<U+¸òc@¸]ý¦]hu˵æågú‚?� õøŒ—ï4±Õ¥·)0*¬‚­ÔᇒÎC÷€x-A2ße¡‰}[áPl½º…o<'kå¬ \ù§SKF?ãɼhÄ ònÚE¢¨k¹^ˆtCÄ Dí:íõrˆ§uš« MŸ}iˆ¹¹vhç]èŠ+ÃÅ@`Fè£þy—»n—iNHÔ=ä¹ÈâI9z�{¦Û¿ÍïêÁ˧Èô†o]'ÝG¬Þ \TÃê‡_ x¥Ææo �Ažaæ28- -’føJ‘aP⽚<뱯SHaü ÍШ“‰û-þ¢Ÿ!ô‰Ã’¥$`öYP©¤J>>k@ €¬u¦^`„¤âÿ‘¾ÙdDM…m)!jsè!jù(cVhæ ÀÞ8X]Åí…¼ ûÄÚI°´Ñú¬H²™Z>ôí.Þt_P±ššºz�žú' Ãø|ŠXÖC‰AV·ÅÇ×XUøä>�Ë„+äW¨¡ÏÑôÔ¦±Û& ôV‰øèY¨ÀDÅò@÷À– ööçæù”ñåê¢}¼ d)"(0Ì;_º¿qã²!ñ¸ý¾ªãª) ¥Ñ+š£^×çõ€!ØñÈÄ@{ºXá7Œ¶ù Šˆ7½�/½á/ÑKä½XÕÑ_�ûrÈ sk$:“7³>žì×PFÿv„/9Æ«8îž“�šÛ¬F¸”¥MÜo=:ˆEÌ…'çOöGƒUS~Z,ånH«Ût Ùó]*B<((úõ¤H’6ÿ“󿥼¾ÿÜ€Hå„)À1ôhßá:ÅðPgm5k»åßZ )`“ð•�þºèpcñäXo°ð…ݼw¸? ø¿Pô9„©ê�6 -À°bì�«†×+Ù¾œ” ‘´ãsã ¸¢µ^k{G /ý@B¯‡†Õ2þ¹åS¯%c\¡¦’^tÂ_¥zNöT·H[F|Ǽ\åQéaßY÷Ü[q�P;ünC 1µh´ïr¼/P^ÝÑÅs²�ñ`Á”:-¤ÞáOáÉ6:IÚÐõ…œró9jˆ $Þåwþøû9ГH«®J{`’òr³ß9lÅŽµ¤À‰NVBÖ2PËð@H‘lÑUàA` 9'Þyißl´*{CüŒù#Dðãà%8Té`¤#NM“H ֈæŸêø7H`ýÈ}v‰4ˆ†8¬ˆD1�Å3ˆ p1¨[wÌáʧ?ø¸Ùê B.PÁÇj8†È‡ºkÚ®ãsÃë¶‚év2Þa¦—NÖÆ›«á7ï4BMzEH¸)oÄ‘*¤™õ ×h¡¢Íó½„ܪÑáàÇÿûUò øuëòè+ ¡ìX¹�5ݽ>EAw÷�!¿íƒÎb�‚õ“¹pďĿÎP‡ÄE™u*ÇÄîNØQ‚±·¢~–õ®ªŽª„ö\X^Šåö½•�€a02Ö˜þôì×À_É!¾”�`Ì®þ““Ú¾J �K1ëžÉ�ˆ'Lø¡b°:ñ”Îæ¤Þö�„—|j'Ûáäè~ï•à L¼0À¿ä4k²½à">9PÉT€”õ$L§òùbó÷‘Ì£2QIX ð‚¸ÃÌ—þ'ÀV¬Š¹_ñÜÜbHŸÐiN³o0àV0{é¤óŒþ™îy¢tl ™v �þU$›e¶ÍZîÞ¢ƒ—5!7Ín Ç|¥ÓþáVLˆßï'÷C àÞ ¥w9 þ¤7W5¦³žåÝJñ‘ á…DRò³ ÑWœ;1`U˜,òuð·£ *ùsV�øJ.�ÙÂ_ün0Ä™xåäÀžéÚµp¹¼zýdé—þ>¦LóŠ žçt±Õ;¡·Ç8·D…y»,­ p¢’~â|óöLMlʾö–”ºÇ¹µŒF«)è R*Ý|ž*›fÿû<*.vû*ŠöèË,¾ T‹°HåÌ…¶ûî-cS�w¸½ÆßŸña£:c*+„"}³t(R–³ª:É?ÔøD¦„’’ùÀtÕ"}ð|ЈœÇ~4:U"3x#2§zÖ“ÑÔ9T8ŸÈ{ äÔyU~ ÞÙ]ýÔ¦=/­qÝ(ü|<§³2³(‡am©Sò}Óÿ© GÉ)cò~¡bâq_^P¨&îZ鵆kÚ'ñØl ‚ʹ«�ÂnѶÐMO9±=êÙÆŒò#"¿[²kÙ‹ˆ¦Ø¦¾&zÁ“3€µ6«^Ñ�”_åVÞ«Î7 ŠÁs´^ÂÀØ@)¿í(§¶+#ô¢bšrŠ�‚Óƒ³ƒ[O*ªW^ g¶ý’Ý¢šÐ3|S-HI]Ÿ§¦OÜjíÄ!M‘Qέ„ &¯qˆúv¤7�SîhxÉfëþ[  Ô¨A£aœ"Zù^1>‘F\CWOW:•Ñ:ßÐdñºJpÀoóXJKÈ/çmaX ›4RÝz;mZFËg 3ȯàª9¢««Lñò“ÞTÇ©çÜØ}r©t¿ÝO¢lm¹|Æ]=líRJÒvÜü-,ˆ|U¶Œ8‡-·ÉG)Üí®)3úwÒÌÔ¢Éó¡ó¨G.Ϩ— Â�>p"ðô>kŒœl)ßZSª2Ù¨äaù&ù)}hg¸vsÿ¶Á‹,ÇuŽ=–¨’#Ê“tA‹ÔÑ0‡%dˆ&AÈËŠQ<âbA¼“GÀ»¼ &@°pŽ€E÷+àz# Õ‚š÷홥׵özhÍ׿³¨§l§0hΘ$nsΙÐf…àñNöžªpïo.·¬BÔDçRX^Øî î×Ç “ÚçML…8çM˜ª�7u]g©Ìq–~È¿é.³n6ÿº&ni!բȢ"gQï£ ¢¾SZ…[AtuÑÂ~×3òË%Œâß}k=7Ö÷ùD#ÔÐÂQ7­“ %K ´�¦_´s×PÆ›Ô�è[ë¥xvÔCùö ‡¿Ft—·ÚöÊoÛL>8××*˜©ü–—�Î%c~®2¤æ¾¤§ú~Õ<Õq3ù-< Ü¥Qª°âÈÄŇ,§ë:çÏà ¡ô•!âÆÚTíUpÛÕy×ÿ©¤RMF}¡ú¸vñ!‡L÷Üq.=îA�éPÜåa+gœ�D‰@‡ºÃ™‘fê{º!Vîe™ÈÜÁÒ”wmøþ :ÉB|c O½VIδWAÜâÆênë {G�»Oì¨(Du㌨Y%Ñã¡Íæ‡ò×=ôM@r–ç(†}Â"¹}¦beqäMó8©ÒŒ»Þs?šª¿Ž|Šiü¸‹5Ü4îú¤6O.…ÒqÀ·PÏFÜ”Ñ Eà71Ýt×t”³K.ç(Ý4'ªdÈM�j\Ÿ0ß  â±_þ5Ïq´ 1-4͉N ÄÝ[Õ¨!�«ÔÖ´X¢)ö³s÷�ض�FJôa6?!JÉÝe±.2ôáá�>î3ÍמnX(ý�uSæµ_s‰rý(ÎèÑ8¼‰±°…†®L˹wYŠaü袬X‰÷Î L<-Ë»4³ú¡}o3!‹7îL›M¿â7ïÆ…Ìn¹}�&zšbÖ}œ2Ëó–q¯ò×…w½BP˜iÚÎ-¤É'x/-v@ÍxMqhæ¹ þM1H2¥�½š»ÇbÝ0“�KðüéJ¢ð7BáMïL„œë>¬Ü˜`rL6ônå÷ÔfÈ5YÖ×gj‡ñÁµïÕj¦Çd$ñC6Sw"Œ©Å´5XψéÞÙ²ÚOÝí¿d[Lá XnZßWÑ ÛÈàèî‘3 ÀjŽV—akXùq£&⯞ "»/lÜDá£uæG^�ð:4ávþ[M†Ð´ñán ½ÜÁ�«Ë›<(ÿ%�VI©š®’CÔaY­&ß(ã³Ë»<3¬�®¹âï@lK§TËànB7aéJ‘ö^  ‚±ËŠ.Ëo.Ic·ÎTðò&ö™md/]^Óç®Yz LMEìÑŒZp�Ú™ZX5t윭P_? ûDt¯{SÅïÆLXÊóC3\j*gI}™¿o­†O@²£[5ÖY"n‹’¼Q„B™ˆJ¶Ã(ÿ†ß:Û>Õü£î¥�‹Ž·¦üÔuÎéË‘(˜.�ÐUºÆðЏ³¬<£H„ Ï{äv Ÿ^®)8W¢€aƒñßJ&p«„ˆÐÖ{w  æÞ0~þûªFvqKòqOôv‹Ú=Áóøµ}ì¢`YiMØM×öÑõD…»ĶÍG•G÷ÊÕè¿6ážñj-Ñð¢’ùyÓN“fÎHµ:QçúëI³™À˜Ûí +®Ý¡µµSÝ^6¹ 0ës»ÜÉäîâ÷úç`ˆûaÉÍgÛ~›W„ÇCçGsÚg$Fhº$‡úr0òÊø{­m+Ö2xF7º‰U|·k?[+ñÃ/s¶{»§þÍt» Iâ#"q¤xï‰ÚñE¡*Û<ìäŒP€™Ï× &+�ɉ•# ¾{^Å 0séf÷’-ª{’>ëµ5ÒûoŠÁû³êscê3Ô¯óMRÀ÷`Ø9kJ¬aëð¡úºÉÅXvû{iÀñ¨ä1-?`ºË?â ÷Xò>fÛ—ˆJ^¹b¼NÊm5|ÙµšaZ…Ð3­Y"1ûÌ-zéÓy<ºÓ!æ_mpÀÑCK´¿ýàrj*5QÛPgÙÓ{I¾[ $vRÆU…SE3¥Š%îW�¼›‘7¹„+Ó¶5àøH^jè«5´öE'ó@¤Š[Ð`ÚŒô“Xöéb¹`ã¾}!z‘<\²Ã3…ù£‹œJe$�H¼ìr䆉Æü~ û²,ÑÏöx•Ûl+µVJ›i;rj%ï»7OFÆøvÊÞkzÜo¤«îí^] TM÷÷¯˜-臺rã¬6·/5_ƒsÉnv”/=«½,o`Á†0uG»áL¨»LúŽº—ýf¸PUÁGÝ…Çc›v•,‡-!áƒw4!|qÿçû‰±²£Â+Bú¼Žu̾ z©8ð8Ü4ÃoT1Á>×lx�G¬xzçÈgK¯ã`„MWŽí|ŽÆkÂ’’JEÌÐ¶Ú ‘ˆ‡Æ6›Ãê�­W¤º—ˆær`Xæ:õèe¹ªÆæü4ì¹ ^ùÍL­…÷~½Ãf U¬ß|Ó(ãàçm{†S±‘ºi‰ÓBé4„pîÇ¥†»È…^³î‡Š.�LE“„¨pª+êC™+nrqõX½2gØ\Ë‘]FÊ‚a#KÚwRˆ÷˜!ÅBJÉ5¯”щg£”¬þaíÆÊf5/í¿y§Âõް@"9�aýâ*Zš÷ïE�p5¶f¼©o}O¸aÒòW�`oUÉfÿPð(Ô*v w¼V¸í¯p”rÔÄxï‰�^6½²³¹ÇO�ö«e϶§ €) Înóek�óöããu°s-s ÅŠ±©Çö‡ÂþMœ‘ Äí[ßÛÌCüWvGpg#F´Ë®÷ÒÛÖ•2oZ4!ÛÞÚ%Å?¨�ò³uUÉ•nKÅ“[v‹ÆCEÂvi(´У*r^?¤å¶)ÏøÿI~Ç[Ûý‘»  “´@b«¥5:##Ü[78„Ï8oDì™÷^ E ™v{d¶�ß…žxòÉ{míÚéFשxö�b÷Ç›8Ø QÕÁß'Ìç£7S‹¶×Í…ÏTÀDøÁf¤9K‡Mt=ï¥AVY'Â- YŒ2a,§¿ÌÊ�vÙ¨-›¡V·/,'“U˜œ¿±:^ÜÔq Ûv–Y£•“©B³%ÿúj I`::‘ú²Ø�ÃæÌ3öЊAYÔ”ç¥te¨ý`ãs¿³qÐu’È›qUÝ¿}Ìãµ }�I´¢L‡eµ7ÌÏPÍ,UÌn•]…�Tü㓈.VĈiá’Úçaʃ"TwîÙ€8Š„Z3;[Q†WÂ!'ç牧簰söèÍœç4gÖó}‡{�懴d.ØÍ=Bÿ­SÆufþ‚µ1<2ûßê„ º"ZuQ…ÇÕ³I•ª9g™5ϯ›W%R¤¿ —Ù6Z@ÌÞìÚe|gÔÀ°Ô§„9îä–À°ìo6Ûû\n{}­«ê«ûtF!E`èÈ„$\$=n…b±²¤ê1Dw³}çÒ‘Ðwv à�€Æa¸{ßþ0/DàE@ #UŠš¤ZùÓˆ½¤³^ —=ªÝ71?la[Ê«zÑ=Ô sî@6�Kžéæù»¬¾<Ó]Òév±¤� 8¿Î(ù‹jü«IÂÀ_gŽfÓ¸‡‹Þ0Û8ˆ. úeÿ Rð×9^3‰a»õ\å¾ß\gÆU �–óÖªkYwëhÍ¥�DßXÞiØ•K_P“prN8KgÙ ½9©×zƒñ­BÁ°”—^[ÞSIW­©kµ;[!8ˆZ‰îW¿mha _M­´£V  5àj^xÜ`¼yÑx^ÖVñÌ´Jb+ó�Ó�Œ—EkVJrESÀÒÔÙ«%KDÉÞP�öæçgž7XN\s»rB<´@º¶œÏÌ·ÐŽû=¦‚?áléYiØ\®Êøß]v‰¶ saA ìyá�%; å±Áímçü³/¬Ã;[q#\{&ÉO*J Í’C¢dc.Â(ÿ OÜÝnŸéö a“:n%¨5LFÖŒ*rŠ$ìÌ·žgœŸr”.<Ñù?OW§._ÅU¡&”Å Ñè²…ŒEF�aK¨´Ko¯ïÙÊÛÊTJ)Ç£b²GrBã5éKß´«H�/|n¸V#ÄÿèÙ³ç Ug׌Ù®8È ~aüIùÂ4�£ ¶”KXÀœD ¬Ðã#Ù›s¸Š!/Í+-ü¦ç°_”½ sTâ Ä¥ Î\|¡ƒŽ4¨6Z¯ýüc½V‚ÀtïMÕÒŸO[ÕºH#ŠjÅÅm‚ѳ‘ôKxg îJWŽeeI6®¿ú0ÆØçOø£Õ᳊_=ŸØüŸ(ušb—ê'Nš¯Ùç>Ô4µaúêÇðÝi¹�Ëgj„iIoJ|¾b³ûó¡!¬àq…¯íNˆ..pS ë¾d~]îô]´¼sgâóÀÖoGHxï…ÌržäEÛ°m@+ŽñašL÷LôjúV¯5ø"ûu®]n= Dà—Í7›jÑÁ°q¤°ÿ™‹(&`¼þû¸&ÃOç9j”! R}N+Mº¸¨c¯;˜³kAÌ÷ÆÞq7f˜wµé5†E³"¿¶J[`}Ëñ ¶ µ•sEÑjd›fË!$ˆu¹¿S­¥_îs­d«˜{ƒâ^ü¿~Ó±Q¹6ê9×€äÁæ+€Mó<Þ鳬DM¹ïxü,;küFˆ_�[?` è ŠÂ½fk®æF>«TgVck…v75¿ÿmoZN ¡¹0`«‚sラèüN<³²ÒA›U²tÕv¡aùï¶Õ²Ã­ãüÏÕÄN·ùÃÓq1$·÷‹•2Ì… KJ´nãÔ~WG7àrë¯Ó—“q&,LG5,oë7þ�ÂÝ’ÎP™@¿£ÓïY®{]�`-ã�j& ö”ƒ9ý–FâßÐ2Ãg£v÷%*ðÒË¶ÆºÑ k¡^í¡œé3A4½ÍãwNµ…Í+± A³ž`„Ã\… dÔ ³¾¿?ÕùßÂ"WêÕ™™'XòåÞÙ˲ëò@rô$Åz¨©¶ÚDŸžêâ4œà5bȺ1+”¨ËíÍ\¸�M]¬øFý™iÎ#¦–oz=Ò52Ý£NˆŠW˜,ˆ=|]=Ž�ï=s�À<ù."ެ»£@â»*dAšX»añJ×fÌÏ[æígjh"çqNyëmNcgmîhLöd7wÝoIÍ»Hýûæ—Ï\ðQ Czª ?r ¶V…Ø0ã6Û›�jÅz�¯×úâïvHŸYéætœX*Üãå–·eÐ"Ø®ršß¶ï¼Þd‚'Îg±æpS;=ºË„M‰Šë&[‡J$1;a§9Tî½=éî+ñ3J$„/R]c±ÒI‰ï¿"¹ÆPV`¢F˜øó*ã“3öI «W‘×ySÀQEÿpFääþ…AßÍ›FL.š›lŸ)É/ ÷BºZÇìH=e£D�?÷D‘Xç^ÎB}åçGlcUîøµ–S+]mŠ À�´ìÒ^€!Äz/("£ñPA��äŒE+SÎ*®%¼Ãqv„ØrˆÆ_µÉdB± ›`OkÿÎúŒœ7à�<²1ÇrežeRfÀG+f�&Ýsþ.Õºͦa«*–€ôdáßsº#…\Ǭ|þÉaæ\y ñõ™ÉÂÞÍÓO_£öh.MH´¤×k¼û‚‘A„�aßF>Í©x½ã÷†Gà xr…ËîÕnÿêó¹W™ìÙl/·ªJ âSÑó—Î<|ÍûÑĘTCz5ÓøLçíaòAÇ6Wq!ÍGk<�!‡ˆaÿ†:$M‡·‰š$àìKÚÐÔѳ‹E@ÄÓª„€²¦~‹ŽÌ}ø•M5µÂ¦&ÅóÌçMâÈ›ÊMFÆ)wÌú@n1b÷e÷§¨¨Ÿåå´Ñ_ìô·ÏÌ=3úš%¯sŒ§ßdz0|.’úÍ#\Ãk4ÀuFa3yƒua—â´døè€ùÙûnvø×­¼Úòs­ÝD#:gŠ|¡�±yü�¥ÓxnªŽ¾¦x_÷¹sáNÆéÚ¡1”õûí8á´õ›ñs’ó‚G-6gØë]LËÃ&ÃôÐÒ’ (!ª>¡»´^PôX1ûo7-;¨Uìÿ! C“¿èq欭«_ºõaò¶KŠ+4Önª•?3Îh–+ õÑf_­‰4¯™²…•û A’Ÿ]=߈é<‚gô°ŠŸ²4D&`h“}‡õjâɰvìí*v3#á¤àëã¾so„Ÿž’K¼ £9EBØ q³¯ýóƛqÇ–f“âŠÙÚ[F¤cj åØN]Ù—‡ˆHÖèA–LÖÆqdAÚ[œ€nŒwñnºKŠû<9Å Úh—‰ÚÛ6ùËôÕá4�Ë>燘&òÕ‹ öÖŽt�î¯9<Ð`ùíÛÞë\†hY:½ÚêùG�"a棫ċY°ÿoO§]ýb¹Öt�ÈÚâð£!5ä²£mŠßFÞ÷»»§=ÁU{MÜ3æõ½LHyzKïýØW¶á «Ó-ß©™O ø5�sˆ] ‹¤ˆÛ RpEQ¬–7óÏfª‡^%5f´…9àôõyÒ„�~q6±û)3³ŸFÌ$ üj`1�PäHP¡ää•?N{ÎwŠ£²Œl\mGZl}%x¯Æ¶}WyŠ�׈8íQ¾¤�#ôô�“Iˆ8ƒÈ› €YýLQ N¨íB-3#CÇÁƒý2¾6byùS‚;†Õ»TÖífû××=Ûkäûû5H 5²ßäè¿Ì°qñ«eûCúþTÏÏŠqg=åV@ì*!êlº|OK4b™PÇ­±¯îÞ©–G€À÷á4µ§"oe:q9Ü”÷ù…¾i›BÜDƒÙT:—m] Ö 8%ì§liÜÁ­Ì®÷l+Ø‚á¢�Á댛âÚ~5™ô¹t…öNQE(�öþoc $¬³sBŒÀtÎ-¤o=P©Máô‚ã%ÍÕS“SB’6¹ºx×|ƒ·„ó'¼tìŸוØ@yŠz»-…®§qZû”�ñ(ÏFžÊ)R€¯éˆl,…µ^ébÅòÁZž1Z=m²òžG5«Š »L%âùMpj_j^þ‡»æ‡Es ÉÙÂ0ÁÓÓó!ìå #Í%ûÞÆgür2€P«E#]�fã;]Õ�šD×ð—§öQ0�Б†.eÑLyž#•„æ„Ôì¿~{ÄRtMÛøŸÏ¥ìWÁS¨ƒ•½RmØÚ;Ic¥À �·¬§bC+…S�ÿ˜0¼áºzÖh•$�8"ëg¯KfB46 �‡)D�#Œ©q®U§ºÃÊ‚§9¬V¬¯óÞx«tU‹˜òøC¢ÞMÑãJ—˜6~12姦ô1kø ôg ó �Æì÷©«Ö_ΆuO÷Óqs›Ÿ·‹OùW„¬>Zœc×248ö'»Ócn€%¹j 2QPÅ(nš¤hi¼<}3WŒêsôDÔ©_éJá†-¡4!ëà‡l®‚üFèJ½÷ýë¹Ö§`] œEήÆz8-Ù”�Tfžå•>G¹—±–1ÁcòËÜgŸº‰óýóÖ”CërÆ2)§À¶úE×]÷ܨ=hd B2ãŒ{ Qú‰{*7n èB/¿�®y?Ä…‡?fÑØS¡ö«Ø�.ùßM‡(la“³ïO\VTB!’eÜõ#UE’ð0ÓEµ½Jq$üÜi5SÁx¨{æ™è½ºÜ¤8Á…?Ùå!¢k�™¾–h—œŠš±<ð&çƒ�Â~•чc.)ËÐövô­¾˜ºã°~amcêᆲ�‚Sw”Ã5†d¨Š™™ ì/»*o�2‚‡+Å´£îé×Ün‘_+¢�¯T?½�ž<Šñ&Rm}ôkÄ×:~…aÔ‘¤úØŠùt¥Ný§ÂÍÇ(ªºê€ÿň.¬¾ïvˆüëª*s1;$$ÈÒäGÁª›Í�ôæp3§!QXŠ´´DÌÌêÜ1’VE<ì~itXXÃ6¤UXUòbÅôqŒÏi˃MUxßòW�ÙxpìÌ”Z9ñ’å ¿f�+8è¼Îž™±ÖÊàÏ+~jÐ�7½=—�“¿g-�œmõO_VG«`$‡ÑÝM²lbSÒó—ÿû@4LÞ“hÅ„§m¸è¼ºF? ùOŨ÷νxŒx†CF:üÅþ?Ci7B¯VK[®ä¡’…cU!t|ϪGz͆æ~B21§—é.¡]†qzŠu•¶½®8Ï`¥‘‡€ÖììNRò6˜\ÎÄÔý�ãcª`GÍÜæ‡3š8£¼ÁáW¦e$ Lj×ðhË=©í[9§ûsš g)²ú®#{UZ‘¶¶ÕyÉÄÅ÷Àé½ñüzƒaÍ·´õqëì74Íéãÿè¶?A›•JsǺï’ëšõ4‡Ý°W²J §ÆB á8oáâþÿ2>0ÏÑ~›È¹±>ŠÝKÏó÷§#Žd-“…ÎÉDçVNÊw:ÓÝŒ¤ó½sâLbÜ™j£ýÙ¡ ÿ ‚Ðóðe�¶ N\7º¬„“UjûúˆoEv ¬b&S1BEëLüè‚Àôé'ÛTM ‰ÞT¾âƒë¥EòY#Ú…c &�üþµ—¸Sx§Š Ø=à0?ŒyTÛC ëd¨R¤½LÇ“ºfr_3IÖ§\ó¿¡v&ôæOœçÍ5Í0NÜ0ö€×ósÚïíÕ¬²Œ…óá7ÆZÄ׿«z½eþ3ÔÙ<ÄÚŠN}¸E�‡Nîå:óÕmâƒúJõÌW«q§²)Š�X}‡põqôÈ' æˆáío¿Š‘¤�¸‹*:?�G½Ò®‡â’,`ŒQ² ÿe) èóU뜭#Mè¼óÛ<‰Ë‰Ìíý僩¸ÓÞnüï…Ëì*™Î½tÑ3Htc™¨5 ³cÉìfÅÆIî®+sÖ�ÕË× ÿ•R%XMY)í¾¤ß¶U¦ ¸õr¾šBˆRÛ¼"®>’Äè—ô¯.=;ói.q«¥…€†=+ j6k òÝþ0Ò”Q' ößX%Ȩ‹ä7‘Ó?b÷u¼³–(D02æýûÉi’=a“8Nk.¬í‚ÔçWÿOYäLZuŒÒ± ן%.Àâík¬_b·ã ,Jå×ÙŒEÿ7¿ª˜Xµ”CÜb饬�É#ë"@ü Šeõ¾Uâ=‰·hÍY}Õ\ÎÈûoaù)·Hù4Î240[ì ™*¾ÍÄa—Xå~錽Óõn œõÕ¥`¥døw~�`¯ªŽR´GÒ*�Ž:ò—îò,Í` í1|wí1\IÒh.×ÞšÎõ¿•eV2´™�\ Íû”쌷ÉuÁõ"ÊvÛw1Ø)'ìÆ>…åæÇ2‰ü÷þ[çÐì�?]v65/…½U/û ·ßnhÅr¨ïg¯ã’>Ü_Q3ij¹Z�.oþÓ;{t+EQ›{i¢Ž;ëw�!4 j˜‡Y*"ç ·4_ö ð."V"ÿO²!tJ3Ñ;Q3±ïp —Ò/ÚŽû¡�Mf¾$z ¿¢9÷õÊ [4é?ÀËz̪z0zƒªþ Ý{:��‚â` Ôô¯r7£0l¯Y7›üâN ‡d/ööÿöºï °¶ð› ˆ­ùôóˆ\ -®˜g¬\Ö¨yØV?TÔ™ksy”�éôã1FÚ_ �“õÅ&‡} æºf.´õBžä®°ãôîÒœëÿiViäLèÔͧžBý¿e°¯¦8öÍå0g sO:�ná×}¢ý¢3Ÿ �CìOâ‚äƒquö|2×Ì¥òL°çQû�85Ï(ÖÒüПc'ñ·ÅâQ8¦v„TŸ n{(éENX :FȪ—Þk”W1fzŸ™‘Pá“Õ/CñߵĨ€¯×¹äí¾\Otê;(•ƒU€%\$ØÇÞb­)ºzëêÚh:pâ¦ÿKG ¡Ršy³"ÐFÑì\ß@(l S&w¼„âÄô§uÀª•͇YÒp;—‡É¾ýç”Y�6pŠŠõ»+™Ii‚ðJ@�ÛCœzšeàB!%ù¡³GªÂ^üÛ»ÿႾ@xÆa[z"®D±>-îƒ ³¥Q‚ 0Ÿ~tùnˆ±q]ïuÝMÙØ@ˆ�T»‘ÑÕqט•÷þˆÇØGE%yØó<$ „“É‚…Í‹€æ´vi7ôq?¢cÊßKùOj¾0Þ½ÑWŽRneY™¬l`ÿB^Úé§¹´d†”ŸSnÐ)Î�Oè©ý ¾.zcoüZtn qÌJAÕ¡Žç]Œ1‡wEhëÅ:�Lk€Ïÿ«=$›Âm[Wq¹Wt™ôÿ1±NYôws³ï2¢{Cǵ%ùî^ÿ®5Ì~BàFWB¾or®Î#�•DRCܺW]3 Õéå8¸Ôï÷úWgv‘ßú—²Z¡žj1¿–Ô„ÚÖôÛ™ŒXE¨¡;zÒÔ¤bÕ±w7ÆÜ5]úRaG¡ÅvŽ[þÿ¼T�x¸É1ââ¢rx¿Yê“7œV�µBO<îB%»£SŽg‡nð‘²×l|Þ¦žÜ¿ó¢J«”²¯¾•ŠÛ\†bÂÐ¥B*ú(`ªô^ìõ|¯½]º½ý¨í_]n¥Tê=ÄÉ{†j'¾Îÿ¢ƒ2K+™wê}þŠPèmIí ÚêZeuâ¾üoÃä·þíØ7py=ÐDöÎä•› ,ŠŒòX-ï›±!íAÁ/›hO¾[ ±©Èòï‡T)¹�Ut… âº#cëï³Ò#2T¸ÃBU.¢-ç÷,GZŒzÑÆpö¯×ôY§¥a‘·±¾gá }M8Éo¡1fHÉ%4$žOãøCØ[Ë´‚änWþ#úXonhaîn:8ViàÓ¬µ¢7à^1 •¸÷@×¼çj ~™ñ’~ìÿ|é -O »Òçq0Î�´èÇ­Çß(~"¾¼Ûƒ�äß§•nÛ¬^.= W’ûyÄ¿í ­’ûNŠw„èVaN*5#ú àoÄŸbþê?�2ïÖl0ëf˜£[8ˆ§(äùWd·ßÜ|\s¯ž‹¶D®±j¼1/ߣkˆW\¢«F†ÐKÉNˆü—šõƒ/Z?XýkŸ"|èÏ©kšæã�¯›Ö‰ °œ�‰/çФŒT1mõ»NsËW.[ßýo—,ë6«ê.ÆÛìð€w}Ìæ–Ç¡ã0WRÃË6jüf‹IÕ³2i¿nÿ›!@ÿQÙŒ\H5Oñ/®ÂBî"ŠÉ`ß©w_,âb�̧ˆ:…gºü+Lþ�Xs·×zpM¯nÍÏü¦„Â(I°5&"êaêa‚’I4m¼ìÇ•Õjǧ¯ÿ›§¡ûñ°E~m¦·n²‹×lZÌ‹¦ ‰…аëVqŠœ('n&C6rEtÛè{_Šïÿ6 EèŽDw6x×p-'+XÑÜ€ð×mUMÓ`Š ÑmÛæ‹Y.¯°EŠáIÿ*Q4g;îžpChø¡0YG\œ¯o¯ƒGbp4ÞûîXÇmðLÉš"¥¦²nÂ] ùé.ä®^Ê�0Ý$’*ÙC ½\짅帴«•T Ç¿üà|ßäílífVŸWë;‰2 (€uåpÌ‹(u+± ó3Ÿ�››F!Ã�[…|ÕKÿõÄZi"ÞãiîˆCáîv7ø<Ȧ™Ýs)uKÍ�¶æ7_Lé ½¨·ýkñ_fY ‚þl‘Šû2a6ÿòu®½ xºÀ®Ìr2´³­…+Ò˜ )A˜N¦&`Þê•rØTőؖÑj$i™ÃÒ´õÍÍ™T®Ÿ&n)c^:Uì¨áší ›b™Ìu½O¾Œµ‘@ì„Bþ NSÉyÚxÝ£gèßáîp£ç [ Y#†Ap>GëEä#¯ت® ‹Tç›ÅÒØ­ Næ•-«tœÇ‚ÌfF ix%1º%ÙaN9_1[_íç9¾¥µt`·ü¹æþN˳?uóž§ÛKiîEÖ¿Ô®Àåøp·HS8n”�^¹¢ÇáöOºZ±üX|EìA½¹yóÌ`'Û ñà¶ŠÛÎ*Z›$‰íö œ­- 0ËÓJêbøgQ�6ø‹bßA°�á*î.[ ¬Ÿ4¾ÔNŒu$ ¾®n@a>wºùg¹ä?6›Vuèk.´/¼cU›Š)'PúWï©—€0'l’[,K·Ü üðɾäp_(qâ6é)¤qøÐÓžu�–iDnÈâÏJú ¬|áüϹÈ\Ú¼�yÚoéŸÅê%·1§�ÓaºÒ¥#Á¦DS"Ò€Ûü£7@…Î Ù =2‘¥5w¸vÞG·ë%�ð?š¤‹_öÛD.Äö­'?‹?r`C`l}7ºâtÄYà�­/\–j0[ÎÍ&^užKÙùKÆÇGùdãOX#íi­‡‰œö×?±ôµE{G€½ñ�=Ef¿(åh¿Ú2‹÷¹%Ru[½^—2å¢Íúì¸7ãÎïßõàL€…e¢ Ëi«„h{²Hîs; usT/å”pCW ý_�à+Lž“Ü;xµîP5Y»ö*›þ #Ûy–Þp¡`-ÿœ€£¦~wi¦Ž×?‡:ÙÂe·pC†-‡�N¢¾Z’^91€½=¸ñ‡G=í·ÑÊæ­ÖsWÇÛ€ 7ë¢þŠàC©ðÀÙÑwjËÈ�¬Ø}ÇT�˜†óµç(¬’ž0'E™gB�rj1„¶vÆ—î�¨V%«†­ N;Yĉ3¢wð½Zà(V´½¥2,‰²\ “ÏÙ ÚLC¥Ì>nt=Iòx*¨ác&4mìnk[-´ B¨ˆBÐÒ×;ÿŠ•X\`ïG©Õºk:j¸ù0èäðP±2&€�óйÖÍÅö¨ÌmKÅЙt”2D!Ûf®Ïã¨b{´cc¾Þî‒Ìh†5ôÉ� 7õÄÔèØºCá¤ÜÄÊËhÀ0¸˜þ%�!�Í4ƯèQ­E³{ɽº°ê×ù×m*üáñǯ‡>V|ãe¡aÙWHžP±j¡¨¶ã‰ðÖÕnÝ�ß4¢ÛÓ¿c¨ÛY|ÿ‰ùIÃŽWé4éžÒÆ8‚y@µø~N¥þ‚¶œ§'1Þöµþú‚™�B^j4crØS(ꪠiFË � ²r"ÄÈÇ-X%�ºFžzïÕ u^?ޤb[ÛÇ«/O¶uãˆÓj?¸G!•›k³ßáTÎÉÓÃõÙ² |î‘$ñ$—ãýº»^…Ó;ûQâü¦ZökoO4q’[C%L~­W^娣ƒbgš.%èc%ÐÇ.E�Cø5:`Î2 CÓvNAÿ�QSY4û¾u“‰±7rXœóUzeF^àÂþÙJàÖ8ÎåÇMG!šjÑÙþïpÛŠ˜)~ˆµè¯„‚¯V±\&új!(™¡LpѶ…¯t^É®!Kë.¿y¼"#ºúž½Ô%}tÿ> ‘ ¨²ghP±Ë#VX�ÌÕž6ß«ë6s|h7ÊÛ™øCÁœ°úê¹{KT¢{¥–ò¶ö÷3]^AÐo€HAÜòZ£S`§µÑ¤`õ3bÄp䨃xW„pRŸ(Á^L£üPït2µRDt$öm,Âþ+솣VÎQ÷ï?½éw°ßou9�•Ú ès¤ÔQÙ$J܇Äõ‚;€d €ž2Ñ?5ºÚî‚þB^`’sõ;¬7Ý.ýuîˆ_n¬X‘Õh©3ßjÒR7i¢|8(–çu“ ¼hǤwÄÞ~-|/gT�p $¼Øå f™_ ìKÞ­µãã<Î[shÇ’D!�õ–dVÍE)I&ÍC뤊lR&` À1B–¡ˆãíÃz_Ñ5Inù`ɺq — ÀdžÝ«¹ÚIÑÂò9zT6È,{òßJǧ܅§#öëpo ʵÁ­1Phê�ãå�ákYBñµ,ÁmÿLÅœÃ5Ý Í¹›ÍµQ²Q7ùpòøÍÉV ¡¤ qÁ”àì°DfÑÁÄry°–J·×ñP †Ç*t÷³É¸%Ê®à�½¡ÏÃQ9È^+õã«ô”<Œt.¶€¾>£€Ba7I ém’£GÆü¤Œ.;>ˆ§ ·°Ó?a%5ð@¿øy¤vÓö¨�¡ŠQA~ÉèUÁ©xVx5¤ÿ|‘!(ª6Bb¿â1±nuVH.s™(xJ3BkòYŠ�~‰ïŽP[à÷#ðK£ ×ÐB¤†´ Ì¢tG&j¾HW>¸Ç Ý%˜/Xìš(Õ¥¼Ò'ì…t÷P±õÀ†Uƒ‰&á�Û"\ý�QÓ)…‘á°}¸tƒ¬[3¥wüðYâ‚4» ñ󸘳uµÀ¾ÎNÙyXi-!ra¬@ L!3~¬B(…ã§@�¤îûO›ÕçgHþÍâš‚ ®´§Qa}ÿxw‡FtGG±¾§í*±äöÂj€•|H{wD¯ îF rξ°¨©)hmøõ¥¡=ò‡ø(º–×uœ¥ÑlÛ!,4·W¢æî-p Ï€èR€ -tcd —J„“‚Fl:Í .Úè¬l‚«�Ô³Š>¾òÔ+±?wdù͜˼òÁÌÎØ–Ž(Á}‘Múo–éìX›Ît¨ÜÜ”IŽÞ%0 jƒ®’#Õ”}œ¯W°É§üLšê³mt¬#Œ–� …ºŽF¨q™D Ñøj {…�N4âov4¥ó`s+[÷àצì‘zc�‡§%_ñ¡…¹*N&vŽÂ¼M]ò‚ ®š/éir¢Ú5�ÅŠÐ<`ÜBGn¶¥�/öS¹'¿·Ÿw÷ÚÿXÙSÞße(ª8¾v"fx}4)™á¨©�§S• ‘YËœ_�rôï�a#r¿ä×òÀ%’_ÐY0V׌ÏK'€'ÙÐ]].(Mó­�i³Å©ûãOwHg·×0;pâàG˜¾øm¿mÃMÜÚûÂ-Í̃bddß6ðÁ À¬õ¥Ë+PWàÛ}~…ÓœæÞz^æ2¥•Ñøþm“¦%ìýO±0›'h (¯ª–é*`ðàâá`¼ºjœ£C´é'áz@Á4_™VS¦‡¹§-ŒšÔ É1ÓuÅ\2÷?ÉOÃI�8F`¥8¶¥$zŽ=* Æø»B>%ëÜs˜ ˆÿz!|A ÛÊàù®l*ÜjTìa™KYwœ‚»Ò*˜P°"Ö.4 ¹K”}Û7¾[Ï5 …Õ4õ»Tz’wFÝ.Žà3½?*9üeò@róÀ´òü¿L�CJ´â�„‰(¡ø–s`ˆ—Œ�1Ç5æzܧ0fºaëé]–œŒç OîÞÙ2Þ”»Á´†ÎlŒNˆ§©¶"Á—“&<)'MnUŽÝ+œˆ*¯Ÿk½q´ Sùg˜¼‰ašF©ws4ÑBÎ×QbZÖÃGi7õ�Ztú›…`ÐRÀŠ‚¦8ëVq~ÌÎÇÍÚ"¡€ÖÑpT¬|…SÔôa‘ʨ‰=V¿Á«Ýo^@ò™5¥à=MaXmi¶m¤v¥:6¨³�¬«µoy<×Ã*…Þ¼�+ëJWµL3Ä¥ög ­hŒQ8 àVÔ¥w+ÕNð58‰Ò&TÝ¡G../Á÷ ©4x0ÿÇL9/ç‹:asX�æL sÄHþÄ~x*@;BSÙÁ måÇu½m½¢ÇÔ3Ô{›â êÍÏ�AÌR"ìä>ÒÉ|9ÙØUt ëæ£b,ÞÙp@½á¬Gü�Ø—˜Iˆ–n@!u‡ÔÍÛ[ ê,ƒåÂDHÑã>Fî¦hÞï„Íå‡}¤9ÀßSÖØNpO/xèVã-vfµbHç,—lA˜†\»›M_�÷îÍõ; š®‰çâÄxçp“9»“÷E�¼ƒ¤>ƒ¹Œ³ƒà~£ÇMB>û[+Ÿsœ§ëû·a°ŒÜÖ÷�$F95?ͯ1¹½ú–¦Cnf°pë+KP_å�Ì~éc�BòÃRàÞ°.±áåÏ“Bhä"FV»*|¤'p+ÆÈÔù7 )Fƒ}BÔ*ìš_XttùÀ:ô8�§Ý[FêµQê"›̈úÇÎ�Å»#¹é_3�ϵÈBYdY�S þ°Ú²0âˆäP‘ö*|$ëò�¶jm$Û7¹_õpMò,çHÇW_Ò]bvq÷ ‚…ýÄî»—j?Õ;;k-i %ñ±¥ÐŠQÈ_`}ð|ÊZ׫s3Œ­?á¼jãÍõ–³^bu¬=“±¤âK¯÷�ÿäþÅä•äJOçœá¢¹“˜ÁdˆÀ¦7eSdR V¾ËÝN ç²áK…ÍûóÂ'�óŸVúÎ^þt~K¸}è~€÷Üû¿j7’Áb4¶Y(öÍ }pNAÑ4ïù!Ýõµ;ù Èð,d¤¶cññvh(J‰Dš�º±’¿á&»Ô:4ºï*˜œ"–†[; gB˜ s&>F°É l¼×Ï&›£ùêøb¹ûÍμçw¿µ.R§T§Ã_Œ?¯‘B¶næÞ¾ž¹qwé·rÉæq4ésüP¬À¡”Úˆƒ� LÆÜµ-mæ•ÞðÍŒ¿ÜzávkÉ~ÑöèÇ=„i*<žŸ7>éçÀ¯iý++†ŸÓ7ö�¿ÜjOVáû¹^à.¹ƒ_ãR.1o{!˜ÉÚ.õŽ#IñÝá¤øË‘š­‘‰ë0#ò�^®V†Ïí‡Þ”{Hey©wé³Q€êy|@~@óR9k°†ð-AÇìR¤y¶¶ñ�l;Ñ1Ç—2‰c¿Q“ì']4td¢±:·‡¾ž2&ÄÕ�s~³nûi�¬­7)±yådITBð勾øÃ†9Ž_ž7þŠ?¶„ðžUæÓЬ6ÔÄXôz&ÄKÛ£mªŸ ]út=Þ]/]ãQD+Ìô¹ò¨üÊøÆ O;:¶Ì=‰Ï—¤çC‹mmq•>ÝJQ}2VL}#’ýÛ‡ÅöC‚o[�Ë.¿_Zœ8?¨þ®6zÖ¤Æà•ûÁu§9+ßýûeì4Nö…€9l®æït Çf┈¾?zÿÉØ`ÿ7¦–´å»b¦–ˆþlŠ�äówIŸVé=�«f¬G “à|J��/û•E Õjo¥øæ–�”­ú@}|^;9ØM�{°j÷ç^&yÉw°tòèD5GœJø^Fõ/l¨âf…¶T$¬u‰úÍt‘L‹eŸß»Ãé#‰þ¶mÜ A¡´Ÿq®'k¸Ã �´¨ µά1öÔn´ªèœ:7ƒJfÉq#üàø)ú@“±/.šI»¹(ÌÒîìLgugIãèR×»k¸¶¡ü4ºÎ2²²O¸o…•ï{‡OdjEº{[,þH˜-ù©”)+Û!4ó†HVaæAIü8ÂÁÁ ãý%0óc¬j¡©útŠVK‘ nvx?x#ƳµäëQj‹‰ªÓôÄæOÿ¹÷—´ß�™d§#�¾ÌoøëV—�¬DE�RykO‹ÏŒ•~Ž.Õ(Èϰä~Îù}¬Y}9e©Û4W)üå7ªûÚî™Äxé[& 7J¬Ýþ–bq­zãttÄ�3¢6ÂyÑ¡¸«xM!8¯1K¦Mö§/î¹&ÿýM"ÁÞÝî×ú_¹ Y’ã/eë{Ä*¹�Åø–·8Db|k{D›•×=¿²ÜkÊumùêßbGóª–³û½�Dú¢öæT6ÊNÌÏøl èTSSºYìª .Ы‹xú]k{Ö/lï)Ø–ïžôÊ‚³éå°çÝuè~´å†“4úõâ&²F¯uSûÝ.×L·S¾x‘»XQÊ”“ÐGÉkCÇE_‘¢÷�ô_¦ôå…u�í¿¾‘Ü;Ó3²�´‘Tþ_*áÿÿËÿÿËÿ‡_°íćtšò„Ìê–™�àÏ}yµ{ywL_Z›‹Ü€@.¿ÕPS¼@z™ø§ ÷•î=‚@ ð?âsÀÃYÁªõÝ»÷ïÞeÕxá`amû ¹¢5ì0ø˜Zî­ƒa­¦0ô"MP¾–¦Aŕ˹ çî¿OŸ»s¹¢µ�/í§«ýeÍ^‰Ò.;­”m˜Ãù]Ô"æp�;—Ï×mY‚ß×¼MÓ}5MÆeaõ~ûå'Ǽ|Í*£†òˆ|äÍwÙ•ŽëˆF�ø‰Øû ¦#ëF×S"ÂRb£¥´ÙHÚnso"23¼Õ* …`B ¯{¾›°}‘$XÀ9»jgg\M¾c«#ã˼f�ŠÌ–Ê»Ä:¢°·Ê;z{hMzœIˆ+@÷‰Gô„Àw1F–K74çyÌ¢ƒÒzKøÆ9ëŽÄD÷lÏo0¾,áPœ¿\ÙâõÐm)þI§n¥º®íºƒ„þš×ÚÜú4WØxUX·±{ãordžMÅý:aŽšé].$ÍZuƒ!gˆ‡0b=.Þ;í⦅’´ š+¬#oËŸï¾ÎÖ¨±j�ä*·{áùKöÓ›D›JÉ@™Wt£ŸºîDÌp ¢,œsL¼B ÛkE–U¦õýhR9—G»š¼É‘³óð6=Ý ã©ã×ü¡&�É{‹Oʾ½W�i@,÷f6” Þ›`{apÍH,”úÎñ;ósEöwsÿJ¼ŸÐì,7)[Â÷¡íwÞ§ègÕL÷|èC9Å1¦ßÏ/ßÒ-€^Ë ÷?_ÃäøP“€@%Rã÷£Hú·™O.>[òœB}wª‹½�Ów]ÁºíÅò_Œ .T¯gXyßÝ}ŒR¹êñýjP'Å Ç®RÆ 6³áþÍ Yñvþ ¦W-É &Ô+9Þ�íùÈÍZ›ƒˆDkþ"ì÷‹Å±kûùBGüë…w„¾z-ÌSªHg×ffoý&]þœ]±/Sò¦VKÉÜÞ"¼CZV!ÜŸ®™Õøû3ŸvG�§[p§Yë­^*k]îY¢t΃,÷£F#å¢h¦È¦¾¾p7ˆt»¿ûxW{÷á®Ú®ñ.ÃÓ?ïõvï—³ûp'uO̘o,¾ò2辦Ze¬)’\làu¿é�°R¾Rý�”ß‚î›w2ÿ^‘.óøê!x.[Ýݽ]x#ÿ¥>�!�ÇmÁEvÇwm:•ß(=ü}±HÏ^´.1–¦‹5È»žÂI‰Ñ²<*¥œÈ•£|¦T%é8–Ô*˜&ß™5ö–Äç/¶vO„¯×€%ÝRÖR¢SH¥ðŠfdߧ,ÂÍo~zbª75<¿(ËÌ µÏ³¬°Ö~dÉú¶#X¸áuucôÜ�Mº=Iö~‚1›K˜ƒ¥÷ñ¢¨á ŒäÐëÕ_êWý «ÏvÖ�F _ì¯'\Z­™ß…›NLXl¤LY8O(oÖžsüyH§qò ,ùó€€Ïtï[¨ªBø€ß‰!Pkr‚—A8�À0°ÿ ÁüïwðÏ=öÎw¸òä]ò%)gìvZ–sÞÑZ¨~÷òµwáÉ·¯(]“ øÚ8.Ø&ÁF>¹ávþbÃýÄ:¸H›Úøðñ!%e û½`[Ú‰¿ úVê)‰ÏÈ+]£¿OüV«³úÎw“Ì�Þài¡N«JïJuÍ™ƒå¤ä¹.×OÇ·´2Õ¶æºP´ò 85ôÿÕ%RXvñ£_/\Ì烟§YZhÜ#´©|ýû<_iò½€.ú÷Uìó±fŠÏ^ÇÝŒéÉÕîŒ`] �%ÃvÒýbFwÖò/ØèœË6²>oÇ‚°P$Ø^”x㛇˜},�(W»·¯ËZ�zs3åÍÍ Oq9ËGé¿~¸?kêV@UÝÔfçr9ÕÒàáYH³ä®ÿ1u EüÜŠ®]Ú£ ËìÈ¢uºgò#âÈWZM1|& Ç°þ5IÚSäõ„X·Š¥*9î¢È§vJNøoè=Ä•¤Ø‘Gv>ýâLõ%¶Aí@ýQáú¯ˆ·Ì–Å« PSU*·îûßhúx‘ž;|á±ÏùÜæ–ra©“�ÿ&Yc>‚©|„K7*ý¡˜¦f®a±[‚¼9ú˜ç’Ȇ¹ˆePK¶©†þ.1;wAvË~dK™¸gõ…x1ýî.Mê+ïÁ‚�;°êŸ”Âñ�Y"Y1¹-Å,oG¥b6ÆäØÛYþð´ |¥õ†çÝzEÐÛfÜ8Ö�¼øš–€x2Ϫ¯næ�$üvt㧺Hû=†ˆâ[7Twof’Hê|Xúy�Ršüa7t¾á'®žww¸ž¶3F¬efé– vî[ÐbAÙöǃP’پɣi™±©=D"¾ ŠYŸ�S}çÇê¯3g/L½¦(Ø¿)¿{“*K.«!ÏõõÂl¾yÀOßgÜá:3çò澇]4m0—ö‰ç8–OÌÿ´F”ñò±êÅ�Í®�¯g¯LSýW€EòÞ¯N™P¿±oøýâ�ÞútýnX"³­…åñˆA_ź/"åÏ4å]c&�V ñã¶oÁÊÖ»½�«£c”¹””0¸ÃM¤9¿ÛHýó½W¬yßóÏ>›sŽOýÛ¦ºs(’éÒ"ⓟq;Å*Ãëœ'¬JGˆ¨ü²ž20åÔw^Síû©T…w5åw¬z^ÑW6¤ÀpŒµ:û^pÃE^ èºF u…˜wŒ­AôË/Ö®ûoB}È•_�0[²®Ö?/ÎWUá|Hä¹ë™QCÙm2ÃêDb"Ö4r  çÕe˜w«'?—×]}þÅ<ïA¨ÐÆ¡lKye”ñÏÿ§}÷Šêé}÷`@Â�sΔ  QADD%IFÉ9K˜!ç,AÉ AÉ PÉ’A@ CÎ9Iž;úÿνç{çU�zUïÖ­[Ôf÷Ú«gõêµ»{¯ÞüÆÊöœ´Î­×-sô]y,ßmð³S¡Å�’2v$¨NˆAõ4UlHÃü�‚ÕLk™]ŽXÚ³­sAí XÑ‚:“}.ÒwÕŸ•Ñúxú%¸ û#Nƒ"]•ó7Øù·=>Çgž˜tWÝÝF4 iÁqÔ¬ÆIó Á˜úR¥9¨Ó¯’y¸)Uñô¾ø¥¥çSa�Û9 _Xý 3]!V¤ çòãA*¾­Â÷É‚ïëxÀ*¤3åAÜh.u=› êÌÁZ\Ó ƒüÃ91…¹˜JiЩ)X‰e8åñ�ñ×#ÜQK§'AU–¡Õï‚Ã#1¾-íy’¼gm_ºÜkW•œ–§ àÏ# ð:a¹$åµRÅ i´Ó*¡!£h �$l'#ˆ:�C®‰ÊabÒˆ:üS¤`4ã‡3©òÕ}¸Wê ùxçC|™±ntVS É÷£L.[–· R~+мŸÌo ¼´C¯äœ²öB­�ÜwQ¶³Õ¼ÎK˜õ$úæ«yž{nÀÔd]0ÿÓƒùx‹4 ªþ�`µ;&–btßyÄɰ‹Œbm6 Y—ð\ÛÝD‰¯Uåu B“¨]œ.Ûž‹—ü`‹Üô¢¹M½á‘GP|„åÒ;å«*Pû”óG!ŸCm›+Ü3>ò³Q‚ÜÍNÓxßÐ5Iûó/:“ûQ`ØŒ¨Úß3eÀ�ÞY7 åZHûõãÃõ›xÁ>Ð23Ï—çÕêøx;B¿wÞ*Û2f :4î](+�GÛ„ôªOõ)IÂäqŸ„µ?ÿqL>�~X 75ÉÑE�ܼ?î u˽6ìÈ)ŸÆ’ðÚ BM|ÔùÂübzka8s¿RïîÛ˜(„ôzšD¾¿Ê¬ÛR Q/ÈÝtÍhšÙ?Õ7ºT�<¨Œì¿æî’7�´”àIAÀ‰Çíl‰æ¿´ö¼³È'mÅm¥jå ²ó¨{­ÍÐ|?Ý¢„i+°_IdÓîƒR s9BPÍÅÀäø¼î—2·Øém¥©_OÝI«ÂN®Ýøøj`^q�¦2ÞGí©¥¸Žv³Ê[XÿÖ -Aê¿×ãlCNƒæ$x›)4´bx~ØÊº(!ëEÃ%\ýüð¨@;©è[¾ž¿ÙzÂ3RO�òf5%zm*¸Xþ•:hF6†` ^èãy_²‹—§ãÀ> +äû¨{œšËÄHÜ ÊŒ}ëóÖâv#eÁ$?X‘5A%±ÿšÅà†<Îx0¯šnÞœÕÓK�¯÷àt?$ÈPÀ6Ì�ÈÜ{Z·q?õ6ê˜!î§Np”“¾X@˜¸63if× ÔíÃ(¬î$%½¡�Žò)|i~Nô[ËrÞ® æ'ª5ׄ!‡¹èýº"ºQýÇ�÷bö>kÒÆ€K!P H‰hË™èá-ù�Z¾šq>‹(„&|†â4™¼êLˆ|ƒ.ÈÆñ®T8ô 'ä¿«’{ïœL¯åÅpJÎKù‡®\¢OOú+tt¡Ý$ jÎj^ò¤3yoH‰�òw~Ë—ÛŠù0pKóÃ:Ù†ùèÊ®µÃ`ãì°mR C ~)×xZ ;lqÖk/µé_ÏÙAs 0%|·"ZÔ«Vvõv^T íyëV¼¨˜yÚ·âäÖÒ–ñË"�/f?´[èÏõI+ääK¥„^ dœ/ÒIoy?Þ¾õB-~~Ñ#ƒR Œ«À'ÃWï“Ù’ÂùÖdÊ™Þk0o2n¢WûµÓBo{yÙ¾º*ij)u(2ïöidþi?†°ï3Ü Ä½´]î¦FÅ-¢X !–Qò\à~¤¿ î;!ZáÐ »”°IðÔëñUrÊ" u¨S~Y|ò¸Ad*óJŒ[[ó÷|LNº�K’ÚP  ÔØ+Gð›÷L� Ìc¾ñT1òÆ �Ìæ�Ž-55·Gn| çIJ"¤ö5ì�@{N¾þûÏeÞç¾Ë´$W`ÂOŒêó= ðtIÎWAæç UÝp’¢ ® ¥ÿª- m¥Z·IÞªèþ!ÔržígNJ7þö»@ƒ£ù¤\eä¤=ÿû;ß�ÚÛcÄOî×ÒÂõßµ¦òqÖ %Ç�»ÑJ#‰èWœ\ý”îmï Rî-žM„Õ]zCU3ôµðÚéšLóÚèÁæÉæ¯KSªvnºs]jðtÌRŒÚË­CÓi&}O;Žù:ãj|<£G^®}ý‰ óÔYû8™ó§ŠçM– ž3¶’®â�Â~Ïaä¨`’¦™AˆŠ,þMÝ—V4@æKUŒB)Mšù«L)á†AÁØ_Y·Ÿ£Ñëb�óáž²x-ˆÞij óuÚÄ/WvTÙ®¤óB` {`çÏËeþâÙÎÖ›%VúßVräŸ8h5”¼…å’‰?ãê=Î[}2"û@’Et72ªƒ<»%0ü‰0>€ïaèÚ�©ºín!ëbÿ~�£”@Á'öaTˆ4Ê¥½_¡àæK ß°W¸FÒ@Ÿö½4}[2Ì$òi�ã4¾;ƒ3إàæ‚í;í »å¹KÇ;¦צƒØ”^õíT³Ï¿ÉÖç®:ýR6Ûyéå"ø1± ¿C¤‹–s>ž?[똊žÒÐCçñš”'›Þ³Øq˜uë;x£ætžÚØÜ%M=÷A¦ë¹{¬‚¯ŒWœcõËR÷¾GÑ?ho.·çúÿ ÷«³¹Y£Ä²À‘hïÆ�Ø�ž©4í±ð~¸&q?ÎáG5dæN�ŠªÞÃ|ÒNдDt49vþ1¦Ò4íTpzC'ÇßXà5Çâ%]¤§–Ærûå6éQ]›¢÷á1?_xè-QŸN’Žë”úõÝJû#Fi$Ñ qwUœP’OOÑ›9_y©)Ó:»ÑRo¦“=ÀIFÑt£-Éʼs%!cR)%f+Ô u?ô…ƒù¿3R¨›Êp gq‹ƒV€×º¥ f.£øîªÜ w�­¾]>7·8'½_Ê*¡Sz;}úÁY�iÄ%{.YˆKnY°m§U`LIíd™é|Ê( È‹/FèY*ß“bÿgÇFü’]µ÷ÒïôÕˆYz½’¸Ý.LF)Ÿ¨0ÅÕžrv¸eYˆ‡'RܦoYu¼×Hææô÷NïMs;Ñp˸Ô1³«!zFë§óº ‘ÓJcØõ‚ŸüLKÂÍ ¶¯ozCê6Æ ÐÕÝQ¶pWþ©½ìÓ4›9i->Ù(@ݺˆÜÜ€Ûº––…üø60Œ˜®�¦hõºù¹}mÀênÑ«§œl͆¨m�•ôrˆ7㡞ۛBÁp�…'Ân‘m-ÓÌÝá]ëÈëàÒnv‘]˜,±#ÇöÙ/ÒÁýYöp“±•vGbÒá(=Õüû׋u@§êéŸ ƒˆÜKˆ†è’œF4`ˆJ­€S6.àÝnÖ}»�žlÔÓŸ¬t/³YTl¤÷™qD�óûåÖ\šÀgâä•yîÍBŠAŸ¡3ñâ­rÏS×@„ÓëÚ@œnf­l«H²¿T+}ª ™y‚–é‰ bŸ¡âé.ºÁûSm>È ƒyy»…çÄ_æíDW›ø†© *úë“R®bÄlÞlÞéø=b79l`ˆLjÝ èi4±Ш–@ª”Dó—kµ�à÷ZˆX…|�ÞGQƒÏwÍ×�0ЄH¾7¹¯„&”N«‡7K…}Ì$*höú8½ª_Ÿ9Wˆ©�qݾ¼‘E¸v6EµýëÁº •Ñîì ©Ô�»ß%ÝD£À¨–Þ&ö4Ÿã·Mb,Ù/âézRÍp]TCó"¤ÙY OBP†Üãçv{ìÌ#‘æ Q-𞶉wã‰�#Sí…}àÙ]…>s®q›Ýdùæ¯iœó ÛÇ•${­NÔÏÛ@ÁÁ|Á›&Ÿ@¼ŸSûM˜^&5†+l>ô>!œfD�8‘.uGìîgŽ xÔ§†½_Ò0~1Ó÷!�Õ•G2¡£ šÖȈ¯M˜U“ðÑËñ° ëó‰Ê/Bѱ¦bTµÕ‡çr©škS÷Œ5Š_Ìg·iÐÆlµ�`§e1ŽsÐÂo¿‡Ž*ßÇÒ:.{)½@K€a©Y;7êÉ> E·¡Æ¯Égnñ×ùÕì@Iª�^9}{ûÃø-À²X=¼êÖFÌêbB{÷>^,pk¨A ´zl˜ÃÙÇ6M¢l•œÒÓùm‘�„CVB‘>üócOˆ r²¥¬• ÌžZòæ¸K5„J¸þ°%ôr6 9§k0jy]ý)p ãì >¤‘=î}Ø_¹Èdâbst£SÓ~O_eɯ¥2¡,(Íôñý•B’&ÊáH’vÅ ÷ ³ šj€càûÖú±Ç7O"ÕýóÙžaaÇh¯÷tÉn`“^‰t]î„—•O­(3¢Óœ=t2ß{g.6O9u”nR �[S#ž°ûN3¡ªµ„œ6mY»ÜwO�ò6‰¾³§ (5j°©ý$�ºðy°ú”Ú½C”!Vg”³Š8ÌÜg†�mª]ŠÞ¼]å†B§ó&ÀœçÏDB ™mž—_YEÖ *gåüAvãÚlJ·Û�"r®³7ŒiOÀ�‘韻´@LòŠÏð²‡÷¯¿z¡P¬²E¬9‹®fêÄ÷[" ˆ6!�§¦-JòHì"Âu\K Š1ÌJRÓV5Ä3¥‰$VqÛ+vWûûÄhª–\Ô¿¨Fx÷Ñ7m²ÛT' 1ÊV?1ÄC4•³pøÇK¡Þ^r=Òb±;_ÐgH§ TÏâž(ûá8ö©bJ“' ÈReÇ¿"מ—§5Jò¼ŽSÕ r¶“ø>îJ˜FF[æheùÈ:÷8¡­OtmBêM·²ïÚë‰æ¯¤çŽMÉfM1çTjÌ×ÕZûÒ�£é}Ì<5É ôdíù¾#ÛÝÓ T¶Í~û«1Å–n„‚n”_L¤P'Ý·«¸1aÿÂ@4`önŒ‰÷!Ÿƒûœl„<¹æ7ßoq…›¹tßd7"VNLá%yf‘¨Ï®?L,ú£¯ÝÇ+‡ ûÌS3½S† ˜¿ØtD–C¤ÈnÊÒz¹JW¥ò°ÀŹÄd8\4mÏﯰú0•Í øxÏv‰Øe÷,oøAÛ¥Q²dtJ¶çyŠÛ…³ciΆ¢êI‘ðN–Ïßâ²I¨P¤Ü΋�«¸¡Ü,ݺÊj—¦‡[uâE÷ÞË”®ó4©™Od£í²ì[ºÂíýOåµ{É[«fl„–ŒßáfÔü|œlÜ)ýų¿;§ª7swùÑñ‰°¡·&'ÝP4o–î 3v‘Ù^q‹cÃ.ß´K’–{—^3»àŒá~bM«.\Ze‡ˆo‰OnŽß`‚ã¡{ÌRí&ÅüñØèÊæFž2Ê 5[‘Šw±ãO’1—<¡‚[ ÑŸ«Rb}�‚$Í–±ã Äj‘Y¼å¬�Ÿ�ù·÷²úïϧ%š8žWUBqFN ¹9°Y†JW³R†µÄ£EÉ´_Ý|@�›¥ŽãSgè…íù¬Í¸þ÷ºû þ$e›8qIÈ[¡¶hå–ZÞöª ÕÕ§¯ö¨•»ÊizL5$D;Ï›Û7JõEò8Û…ë‚“¾¹Ëæ» ;xƒ§¿µ™¿ÕöÚÒ¿ â©zxgÇÜÿ&z£HŠÜODôáïl5 óéœíM~ŒjgžëÏú>ÛwA[ý°ø–ÔK0L”“¬iûy‡”ƬIx9qïÉ ŠO» KzÂ�ì3جI¸v6V*Û§ÄßOʽƒ³5’•Ò¯u2“x³w¿n{Anþ¶/jž·YÀTá1äs«þŒKŸº]ù.,äÆ|O%ùø^hS‹©¡ìS#·ÞõħõûÏZŽ*ý_¹èOs2|!1ÿ>0¶ÐÕŽóL8²\§ÇšÀn]îqGo]$ºðˆno«Òÿ½‚3ÕQÙ'¼Œ­-RÜE½€d7µµ¥˜ÀÂ(¦VÕ¬ù¥n�s0JœP4‚Þ«p€LÚÚì¦êhæÍòÞÁOE€ó~‰JsM«*ÉÅÅNÓ‡—`†Ø­©G99é›äÜÐÖ�Çó…Õs�QQ±T•â—eoa¡Ep”‰Ë±‰T¶&ø ­ïZÏȰ=>bÒ:Éûyü=Svs’áI Zˆ Qب'-¯„ñ€Yf¦%ž¨˜ÐŠ ÷Ëßû>ó­�¢ã­µ§?eÁðÊj…Õj"ðÇ'ö|>R‚t·“´¼Ÿ4�ª©�Ýa4¶çCJ&¤ÚÐV ÞúÕzìnŠŽFu‰é=‘�¿ ‚T$Q*¡ŸY¹5¦D˜û©'² …¤ÒÌ 6�6OÖZ�/œ™q,¸™9(/’šÀÄŽBHÁ"£î¦}Z瘱f�¢-¼ó¼Ï=E�#N³F~šY`ã‚B®µJë�»½ßÿ5o‡Ý®ÖçîÏê[oÍÌ/írXœöޏ�ù27³b¢Æª‘ÊÚ�0 £Sî~¢NŸ K¬Â÷nŸõÙ/:ô£ë^2‘@ËÎÒ þ¯uø¤Á ¸´£ÓÝ;óC:ôñÝ™J_טoT=?þþHHĬ2•)9ÌØNèŠÔBlh¦”UÔ†ÌW’ßÙ±¦yÁR/Ø8�*%¤5ŠÀCíÞv*/ÇýÖvns«íWZ±s GšŽžûzQK—MíŽ GDŽg�ç*U_{´¿„°=~ೇÀùHpÜ�7([�ÁÓû¦ô¥^€½÷ˆ¾ ?¯²�ôóˆþR”>ãcC�·Ãà®]áD:,«Ð‘W¨üBŸ™éÁ}ó~ô�ËÅ[öí`z ³oúÌŠ¿¸å¼dDÏ/ìFçBkåcz–ÊKbE%ÌVuEÈ7 J_uDu|ËWôܳô.Œ„>]ãr-V~*öý�y †öQçj}òaÊЮ† øMHÕõî·Aðžñ©³‡Î½,±”>­” #qjÆé#¿b±/RÈ´?¶þÀëwVx„£I¤¦¾…¿ æy+¯ŸÎ!‘½Öùõ¬•¬Ÿ�±Ãg^•ý2º/yÃVZz[/Á)ä=¤)GaôÞß!„Ì©_2„VÑ•d¢ŠÒhqz®sÒyí¦qMšL„öýüþñN ‡_4Âú”³iïÁ%¬MöæAÌDmSÝÌ+ܼaÐCvÙ©«úÏ¿GwèAëå^¯rtý=€Mÿðåô=Ü©l¹ß»ÉÐ&È|¡4aD:ºOµøt£¥toE!Ùš_ÀGíÌ ”f –A§ãÞ’¡ÐnZЯ‘±¶úóv–EIÅŸ.ÌÞñ ff–²ÍÓ �ŽàÃŽúUØ@jÅ ³ó–ÄDØ ²¤4mà€¢iõ:ºâ1x1PÃxl«—U½Ód™µQ‚Ó‡ 8Ò¸ÞŹn·úLS†Ž^â Ž þ*à•zzý£¤ùyPT"/‚ikÞõeYwàØŸ@:‡6¿±<ùð–ßè‘Ä’@ˆ¡dù‡#5Ú¬÷Töªöbíhâ ašµsð›ãÿ5ûái˜å—OÀÍv“¯ÏäÀðÐÆG��� €u%¯3[jÍÜ­�ã÷Pi…¿V¦?W}¢¨�!72' &Ü7Y2v’$aõ_&sßÚ} =ôϱC 5+¨<}³¹¿jKidwà7õhM>`úôsüs–×iT#¤}~Ê›&V–,Io‚ÈU艛\¡Þ´®þ$ýKA»½…ØþöõÅò;}¶ûnÉÞŽyóVe*<]X*G–âBXBV:·h~¨Çx«y#UÙôžä3‰-—Í»R wÙ¥Üù‰b›= -ifÇÀ£io?püwûû�<Ÿ\ºifË·R’4µX2mOÜÍçT‡Ž€ ‘Gf¿|™bi sº†‹‡X´ò •Jä4Ó/6 %fo*‚˜î˜÷î®ØÆ—ŠDš2" O4rÍølš}vJÅ^¶Yº€(å™:”MRU¦ß'oǺ?]ï:˜>ðû@á�²K5Êë6PÓŸ} ‰í-‘�Ó21;ê77ÖJ½ì[èʈ¡³ý†ˆØÔpuÄ›@+f×'r‹ÇjN^xú€�_Qâ)¾/%f±n%ªã~N+6Dë ¾û IËà_<ÌcøQÌóz<÷ž7[ì;TN¬œ g‡;Ç�‚2½)¹´'’÷”¦¹›öeoìŽ6”a*BGä™¶—v…²µY¶ Ñ}– •ËÄ Æfb¹0žÿo'¸C”lW– €Òmÿ� ½qE_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdð|E_‘ÁWdðÿýd°ˆ@HuÔna ÀdèëkÈ„-"( Î:@a貨±* 8�Á\œ�]`0ó‚X‘zsr‰Âà_ž`æ© sŠÁ;Áḋ˜ËP î%æ€ÙsŽÁ¹Àùbΰ…3Œïÿ,ýQábU,«ãa«³ücÿ�‘ÿ0Oÿ�ùµ~zú­ÿqî…�þq a}g6zþ܈ùo7 €€` {F Ž�b¯`$çôôüüô‰ÕýAçG¨ÐÑ9ƒ‹­‹9ÚØDínna°µ�w×Nv—··—wOÖvO0˜ƒÍÅ Ìöüü6æbqóƒ9Þ˜;?ÃlmaÎÎç6ޱúå©ËÕ feõrj«_™ý…YZ_ZÃüšÅ^_œ;^D�Ó/�M-bí/O �Œÿü9>2<±Œu³…žCýà›@oýñ³13<2::2<³ñWĺ76†F��ýñ €ÿöðŸž~ÅÆ+{„`Öå×(üz™5À<Ã@æL+ð/còó1ËÇüX�ó2ƒIx‰aÇ ˜ °(Áp`†õTìçÓÖB€k“î+àLiIIiM…ø|ôô ôô|A$ˆ�‘E ¡cdBîô´$Œt44tŒ$´ôÀICË ÐÐÒÒ¼´4œ@- ¼R 01%+ÂmŸ- yŠ)€RÌ™$@+ÎCˆ¯`^¿Æ¬‹4<Ô€0&+ƒIÉÂÔ”Xù P\ ¼ÁÊ”ÂH €w#ÐglðH€†„˜›žˆ––ˆž›˜„|Iˆ\1 &ñEy"Rb!„˜”H>û’]C‚¯‘ù†8·˜()™n6¢¢€—ò_Ay€åÏñ”wóõ=ø¾ºaç PÑǰú~ýoÈYH.èϨÄ^Á^û_-Àò¿(Ú¿-eaæû€{ô‡¢ÕÃÏz|×^÷!Ååô« Ï;ÏŠÞ1 ²ÌàÞˆ”}Œ+ÆDÏ>+\¢L]õM¼]P6!ëS0|‘[Nt¼”?Ùœ�ƒë|¸¨îEý�‹ŒŒßh¯­çôüŠz³¼Ð—ýÐÒËÙ^ÛHn1<¨.þ ù»72eý�™i”k GÁº~öo¿Ó=C¼ý¾Ë|[âäj-TUÓä�R‰¾(ž…½ó@<«€Œ0ýuÿÄ~ph‹{òtù’´^¤Þ—ð³�]�þ4ŒÏ§9gÜÌ#²¥M¸±�¨j¿ù(ïä™éZRgO®—0ôK›ÓÌ%Ç»c‚}'–…]ùå·õ[Éú,¬™㓼y@©FOÐçÔð·;<�”û‡2k÷:-©àY[-ãÆyu®ïÀ¯n¸Å-¸EÐ×û{õœÕº;)Ä—d«}P¿MÓÛ쀈¿Î LI¸±®ê]c›h8B�Wø(C_¤Îé—&€'²Sò6_¨—gQÔJ0¸ý^Q&/õ”–ðDyÌö¨Ú»õi(Ý.›És)sÞqÏ)nåì¼¼Tc3<‡Ë.Ò·RëÎijdLš†µõ„ıÁ8InSôç�·TÍP"¢Eß!%3ÄfÇŠl‘T…ýßkŠØ§V÷öŸòšá?Ÿƒ§É™_s§ïè¾ýÍúàžJ©¿kIþudK'eYãåµtæ7´·ºO¬£{Ÿ¾�îk:�"éUõÇ5”aUr\·\"42 <£³mkÉ¿þR)ÊÒ; ®�À;«2Öè<ü�¸üœÇøô �…“Ü&ÄÆf/¸@Ó­-:Mó)8fÑJFs…‰÷nú>�ë&@¨Ù¢éIçpw“F×W&.%îP %Zgt+÷}jO²©p:“~kZ�Ây–¤w�ª…ÞOŒq¼ì…Îýcƒ÷ÕÓ/ßþh² ÷òs*Õâ~áÙ%Æ�5ÊEˆVqœG1iįç<ó®Ú{’™¡„ ÍØäZƒ;8žê[FGól{ã}F?±)OÕtJ¬°·ä¢ønÑ€0ê9½6GÌí]èšÿøPoáEoáýœÌ–…×̤ ®ÎûûgbÅgW-ÿWKVœz݈D¤jfVi~©ãÌݰ¯ù�8¿tÔ¿~rˆëˆMÞˆžŒh÷ú?xãY¢þ Ã llW 6á‚mú-ZFÊ�üŽ ¤ƒ¯I‰�->¹Ûì�v‚¤éñcnl¸|þšòôþ\ý¹ó¶�ò°‰õDLjÏú2Ã{ÚµÂÓJÕ5å Må;åv~ðØX…þoŒ…�ÏùF¿‡4>q6yf.½åîï`'˜‡hɈ'I¯o'íG"Üjò*~ŒNèµFœÎ6ŠÎpN‡Dw>‰»ß ñæÝžI\úû‚äô‹}™G„Äù¾ë“½·eThïgé F™A_h-ž}8\‘”!P#´B,´ÆÜ¦é½ðp7J-——•�rÊ=°Áÿšh#ušû½$¿\„+ûÚ¢8Œk+ø]ÿ{Ç[ø:wßœ4ú¼²5¯})ñ›ìÕ-Ûá•Y­]ØVíÝtióÉóêùcÜ(«–_.=ÇRºå+šÔ?ž'²ÈRØÜØ{½T`äháýh ¥5÷¿Ó툪sG½ öáÂáÛÊûº+$û&uO¦¡žºè²ëɧšÄr‘¢­ºþáÌ£ò ”n3­!ÁgLÜ–¿®”Á‚ש§OL³Ý%´©C™ x&G¢ÒßA¿8¿Ã_’=÷àÎ]ûÏoñ-õ òQûÜ—DmŽŠçÅ-›Ëþ±Mšé7R‰hù8Þ½-q„LÆmíjœDIæX¼9sǼÄqxÑðÃóîÌãƒ2Úóâ|Ó·0ÃyïüR+æ)¥>hü„M}4˜çÚç+rTåsÀ\ôÖ½áø©½¦›ÐëIÞ‰VËÈ‘øÀ¬5"ɳ“ªÚ€9Ü>Q¸ÅE®M”ýo)ªãS'ìRÞÜÙÞÆÍ]Dd†@qpñô8<­\Ýlœõ9Ì\-¬m°’.‡»“³‡“¹­•…» Ë5�“h=аò±²TüW¥A¾®«““;T|��š†–Žé!‡£‡½ý01 œœê±Ö!;+7ìù_†qXØ›¹¹å“’!ÁHH>%ŠÄAâê:š9X™À©°*+w 3w3{§g‚®VO­\­-¬tm,œÿؤg ÊÍEâ1³°²ücéÏõþ)Z¹i=P¶±pÇvÄÌÕ'Ÿ•]OëÁ½¿íÂHé8x¯KÞÖ¼ÿÀÐÌÚùyPhxdL\BRZÕ»ÆÏ_šÛ~.­þÍ.Ð?_ÁàßöÜÌÝ�€  ›Ù\ÇfÅEÿ/™ âÏñ7³ycã2ýÿWfƒøO™ÍŸÕû·ª°Àþõý ƒh‡ øÝ(â\ÒŠu¨�вA%’°Š“ø)DCD™šÚN,Ï‚¼!¿?ë ò&žŠwãÉí»ËM32ó²âøz<Ô¦à! À‰« ò÷sy´)Ž…)?ôÕ­xØîЗø¾’O’Buøµ��[S=û=Ãï­Å1VÇzæ>°âMRä(CÑoD`Ä Ñnz?#1° 0v‰+Φ™ÖžŒ¢O¨'‘•ÚFT|–âqA= oìÆ-kÖã�Jä 3û4òì´NþÎìŸÀùdŸð�2¨¿Ì‡tÇá’4ëá5Ïâ„u�Ü5�jÅ<üßî„~v_Yªùƒ ÞŽëg;÷õNò‚ŸëíÕÿ”)˜ÿ<Aû¤Ú°»M:®ñˆG7™¨Nÿ-F°};fCqyÃL8Ê«êaßœ¿ ñóX9lƒ÷Úñâ;i ý7§Ñö³©Ÿ­Çk¦Qlªêð÷$?È«J`jÄiÈk~½dùõ)Ké×Ì›Yè*+‹¯zÕë>C¬4šãRG©:Ü)7VÆÒ«Û¤øD Áø´ôüA >K¦páõíÜ~LÛ2ÃŽ�¨ÒŸ¢ßâi,òfg˜Ò ƒ }49˜„í¸¡J­W$Á6_[eq×1†ž�Õc_"~CEÿYO:‚3‰)4Ë\'d´)ßw÷«¢À'Ò£’ >$­ÕýÙ¸ëôÊ·I­‡%)¹««Èþ\G踟fíOΜ�8LÇz¤~yž)ÐÜ ÉwcIðP½Œ´ÚH‰f ‚$6†u¡Ñg?$P¬ÈÒOj(ãög�Û ‰÷O™= �Ljû TH"Úî–ÌÞ1ÍÉyëØtчÈ`u¾h¯8§Jz­•îùj¢;ä˯‡‰óѰçQ6U+ãÂ~+¥Á‹>¶IétŠ{ˆ®km J¼îŒšUÀ)¸,ˈqNσ|Úê¿~¾×NÒ›=ı“�\~ØÃXcÐvRYÉÊ£i@Üv²ô¦ó㜽B¹ðà�¼ AÍŽç*ÿ„®õW¯[ùhÁTtK#Ž\ù¤6Ï8êp”BD÷ÂÞ,î·åCŸ±Ü³Ç¿ž†«Àè�D’»Í�ÿM\V;ø­ÙêcÓ’û±·]!�r×Ô1—ã “x–Mr½ÿ2Oy*›™aòÈÈ£Lïþ¯#ıKÆû?¯#0@ €#bŠDšŠ¤`xà6v3�v‚'D4¦ ‰`aA8£1hD1Álk‡S4Æ$€ 0h–pÂ‚Æ ¢�f‰ÄJÛhx$vƘF`m 2¡ÑHdê €œM±¥¦í,‚qÆî«›09Øp¶ŒÄˆ„`S  à7a0ñ�ù«@`LÃÿ¨Yþ*ИÀ@ ú¯‚ƒüO ¬Xþ“â?L,XÏ€ÿdJƒüG°À�Α´ÝôÇQ$ÖQäGÑèÈ?æµ£ÿØrŽüÓÅí¿]D£áQÿÖ}l0L1hSlh´·1¦q#‡vþ¹@¬ÇˆlX�ÑØ°n#á)ÿë?aÇüÛïö+ÿ³m[üŸÞ6ƒÚþÙ6o&£î~�«¶Œ_ÙCˆzp§'„d‰¤)T•—Ý2Ø2ÎrÎÝg»ÞÊv›�µÐou½³õ…±aÊþQ™äN‡dUÖÇÀé{yÞzÕäTY}¦¶{Õow.zÝ÷þhÖ×Î-e쮺œþ<Â:zFE(«3m[M ÷p!Xä9ucÑO%î¸Ðò!̲ºG»qéšSrgRœ“tûµä�6ܸ.BÞ×åæ ZÄ•¤u3¦âÚ×Tv Å%Eñc?Iû|¤}º²mŽ/f[œ¿ÛQž½Ç¾°T¯C2„®°]°V:}>} 7]&tí™Í'uIÚSÅóë/ä"µ5�­P›€Òç±_µTFb¢¼ùY7eF²Y2‚ßJݦÄÖóqˆ)“·ôq¢¶,®7Àº³®°³ý›Q,eͳòÊâý1ÞÀAE »¾�üÎZÍ:¹üñÈç.BA¸»R=¢ã6ÉnäZ™Å %VãÚñ6jÓ¹Öjg[Ë0}áéÐÜU?غ9ÙÅ®êBêýqA˜m¯ÈºO=€âž9÷Ð|›ÊWÙÑ%ûëÊ_ä¢âZ§2Û:Ž�`'ÀÙÿ<þ•«Þú¿-WÕs·rp¶7s·úß”¯~lþÚÒÚ52µ¶ùßä«GÿPKZ`›W‚?ö( ¤�.DS_StoreUT[Œeux öPK``›Wª…³¼•‡ ‡ ¤�9.background/background.pngUTdŒeux öPKS`›WË÷¬�ÞLÄ©¤�"� .VolumeIcon.icnsUTMŒeux öPKJÜMEGAcmd-2.5.2_Linux/build/installer/terms.txt000066400000000000000000001107071516543156300211020ustar00rootroot00000000000000MEGA LIMITED TERMS OF SERVICE ("TERMS") Scope of these terms 1. Welcome to Mega. Mega Limited ("Mega", "we", "us") provides cloud storage and communication services with user-controlled encryption. We provide services ourselves and via our related or affiliated entities, payment processors and resellers who act on our behalf, at our website at https://mega.nz, subdomains and related sites ("website"), using our mobile apps ("mobile apps"), and our application programming interface ("API"). Using Mega, you and other users can encrypt your files and data by way of user-controlled encryption ("UCE"), upload, access, store, manage, share, communicate, download and decrypt files, information, material, text chats, voice chats, video chats and other data (all of which we call "data" in these terms) and give access to that data to others (all together, "services" and each, a "service"). If you have questions about how to use our services or the great things you can do with Mega, check our Help Centre or, if you can't find the answer there, check our contacts page for details of who to contact. 2. These terms are binding and apply to any use of the services, website and our mobile apps by you and anyone who you allow to access your data or our services. By using our services, the website or our mobile apps, you and they irrevocably agree to these terms. If you do not like these terms or don't want to be bound, you can't use our services, the website or our mobile apps. In particular, OUR SERVICES ARE PROVIDED SUBJECT TO CERTAIN DISCLAIMERS BY US AND UNDERTAKINGS BY YOU, INCLUDING AN INDEMNITY FROM YOU IF YOU BREACH THESE TERMS - see clauses 37-48. NEW ZEALAND LAW AND ARBITRATION OF ANY DISPUTES APPLIES EXCLUSIVELY - see clauses 49 and 50. 3. We can change these terms at any time by providing you at least 30 days' prior notice of the change, whether via our website, via our mobile apps, by sending you an email or via any messaging service we provide. Your continued use after that notice means that you agree to the changed terms. If you have paid for a subscription that is due to expire after that 30 day notice period and you do not wish to continue to use our services under the new terms, you may terminate your subscription before the new terms come into force. We will then (but not otherwise) refund the unexpired portion of your subscription payment within 30 days and close your account. For more information about refunds, recurring paid subscriptions and their termination, see clauses 55-57. 4. If you comply with these terms, then we grant you a non-exclusive, non-transferable, worldwide licence to access and use our services via the website, our mobile apps and our API if applicable, in accordance with these terms and any plan you have subscribed for. Your data 5. If you allow others to access your data (e.g. by giving them a link to, and a key to decrypt, that data), in addition to them accepting these terms, you are responsible for their actions and omissions while they are using our services and you agree to fully indemnify us for any claim, loss, damage, fine, costs (including our legal fees) and other liability if they breach any of these terms. This is particularly the case where you are the administrator of a business account (see clauses 51-54 below). 6. UCE is fundamental to our services. This means that you, not us, have encrypted control of who has access to your data. You should keep your password and Recovery Key safe and confidential. You must not share your password with anyone else and should not release encryption keys to anyone else unless you wish them to have access to your data. If you lose or misplace your password, you will lose access to your data. Encryption won't help though if someone has full access to your system or device. We strongly urge you to use best practices for ensuring the safety and security of your system and devices (e.g. via unique passwords, security upgrades, firewall protection, anti-virus software, securing and encrypting your devices). Mega will never send you emails asking for your password or suggesting that you click a link to login to your account, so do not be fooled by any such email since it will not be from us. 7. You must maintain copies of all data stored by you on our services. We do not make any guarantees that there will be no loss of data or the services will be bug free. You should download all data prior to termination of services. 8. Our service may automatically (without us viewing the file content) delete a file you upload, store, access or share where it determines that the file is an exact duplicate of a file already on our service (a process usually referred to as deduplication). In that case, the original file will be accessed by you and any other user and that file will be retained as long as any user has a right to access it under these terms. Any right of deletion that you exercise will not apply to a deduplicated file that is associated with another user. 9. We will store your data on our service subject to these terms and any plan you subscribe to. If you choose to stop using our services, you must download your data first because after that we may, if we wish, delete it. If we suspend or terminate our services to you because you have breached these terms, or someone you have given access to has breached these terms, during the term of that suspension we may, if we wish, delete your data immediately or deny you access to your data but keep it for evidential purposes. See also clauses 51-54 below which set out details of what happens to users within a business account when the business account is suspended or terminated. In circumstances where we cease providing our services for other reasons, we will, if we consider it appropriate, it is reasonably practicable and we are not prevented by law or likely to incur any liability in doing so, give you 30 days' notice to retrieve your data. Your obligations 10. Once you have subscribed to a plan for our services (with payment having been made via the website, one of our mobile apps or one of our related or affiliated entities, payment processors and resellers), you need to pay the fees (if any) for that plan (and any other taxes or duties). No matter which reseller or related or affiliated entity of Mega you make payment to, your contract for services is with Mega Limited and is governed exclusively by these terms and our policies referenced in these terms. We can also change the fees for our services (other than those you have already contracted and paid for) at any time if we give you notice. In the absence of manifest error or other lawful error, you can't withhold payment or claim any set-off without getting our written agreement. 11. If at any time you do not make a payment to us when you are supposed to (including on termination), we can (and this doesn't affect any other rights we may have against you): 11.1. suspend or terminate your use of the service and/or; 11.2. make you pay, on demand, default interest on any amount you owe us at 10% per annum calculated on a daily basis, from the date when payment was due until the date when payment is actually made by you. You will also need to pay all expenses and costs (including our full legal costs) in connection with us trying to recover any unpaid amount from you. 12. You must: 12.1. where you have subscribed for a service, always give us and keep up to date, your correct contact and any billing details and those of any users within a business account; 12.2. comply with these terms and any other agreements you have with us and ensure that users within a business account, of which you are administrator, do likewise; 12.3. comply with all applicable laws, regulations and rules when using the website, our services and with respect to any data you upload, access or share using our services and ensure that users within a business account, of which you are administrator, do likewise. What you can't do 13. You can't, and will ensure that no users within a business account, of which you are administrator: 13.1. assign or transfer any rights you have under these terms to any other person (including by sharing your password with someone else) without our prior written consent; 13.2. do anything that would damage, disrupt or place an unreasonable burden on our website or service or anyone else's use of our website, our mobile apps or a service including but not limited to denial of service attacks or similar; 13.3. infringe anyone else's intellectual property (including but not limited to copyright) or other rights in any data; 13.4. resell or otherwise supply our services to anyone else without our prior written consent; 13.5. open multiple free accounts; 13.6. use our website, mobile apps, API, or any service, including, without limitation, any communication tools available through the website, our mobile apps, or our API, or any forum, chat facility or message centre that we provide: 13.6.1. to store, use, download, upload, share, access, transmit, or otherwise make available, data in violation of any law in any country (including to breach copyright or other intellectual property rights held by us or anyone else); 13.6.2. to send unwelcome communications of any kind (including but not limited to unlawful unsolicited commercial communications) to anyone (e.g. spam or chain letters); 13.6.3. to abuse, defame, threaten, stalk or harass anyone, or to harm them as defined in the Harmful Digital Communications Act 2015 (NZ) or any similar law in any jurisdiction; 13.6.4. to store, use, download, upload, share, access, transmit, or otherwise make available, unsuitable, offensive, obscene or discriminatory information of any kind; 13.6.5. to run any network scanning software, spiders, spyware, robots, open relay software or similar software; 13.6.6. to upload anything or otherwise introduce any spyware, viruses, worms, trojan horses, time bombs or bots or any other damaging items which could interfere with our, or anyone else's, network, device or computer system; 13.6.7. to use any software or device which may hinder the services (like mail bombs, war dialing, automated multiple pinging etc.); 13.6.8. to attempt to gain unauthorised access to any services other than those to which you have been given express permission to access; or 13.6.9. to impersonate anyone or to try to trick or defraud anyone for any reason (e.g. by claiming to be someone you are not). 14. If you register with us, you will need to use a password in conjunction with your specific account email address. You need to make sure your password is secure, not used by you on other sites and confidential. Make sure you tell us straight away if you think or know someone else has used your password or there has been any other security breach. We will hold you responsible for anything done using your account and password. MAKE YOUR PASSWORD A STRONG ONE AND KEEP IT SECURE. We are not responsible if someone else gains access to your computer or other device and/or your Mega password and/or encryption keys for any files. Intellectual Property Our IP 15. You are not allowed to, and you can't let anyone else (including in particular any user within a business account of which you are administrator), use, copy, alter, distribute, display, licence, modify or reproduce, reverse assemble, reverse compile, communicate, share, transmit or otherwise make available, (whether digitally, electronically, by linking, or in hard copy or by any means whatsoever), any of our code, content, copyright materials, intellectual property or other rights without getting our permission in writing, other than in order to use our services as intended or as allowed under any open source licences under which we use intellectual property provided by others. The open source code that we use, where we obtained it, and licences for that code, are all referenced on our website and via our mobile apps. 16. Without limiting any other provision of these terms, you are only permitted to directly and specifically use the API if you register at the developer registration page and agree that you may only publish or make available your application after we have approved it pursuant to our application approval process and licence agreement available on request at api@mega.nz Your IP 17. You own, or undertake that you are authorised to use, any intellectual property in any data you store on, use, download, upload, share, access, transmit or otherwise make available to or from, our systems or using our services. You grant us a worldwide, royalty-free licence to use, store, back-up, copy, transmit, distribute, communicate, modify and otherwise make available, your data, solely for the purposes of enabling you and those you give access to, to use our services and for any other purpose related to provision of the services to you and them. Copyright Infringement Notices 18. We respect the copyright of others and require that users of our services comply with copyright laws. You are strictly prohibited from using our services to infringe copyright. You may not upload, download, store, share, access, display, stream, distribute, e-mail, link to, communicate, transmit, or otherwise make available any files, data, or content that infringes any copyright or other proprietary rights of any person or entity. 19. We will respond to notices of alleged copyright infringement that comply with applicable law and are properly provided to us. If you believe that your content has been copied or used in a way that constitutes copyright infringement, please provide us with the following information: i. a physical or electronic signature of the copyright owner or a person authorised to act on their behalf; ii. identification of the copyrighted work claimed to have been infringed; iii. identification of the material that is claimed to be infringing or to be the subject of infringing activity and that is to be removed or access to which is to be disabled, and information reasonably sufficient to permit us to locate the material including the exact URL link (with decryption key) to that material on Mega; iv. your contact information, including your address, telephone number, and an email address; a statement by you that you have a good faith belief that use of the material in the manner complained of is not authorised by the copyright owner, its agent, or the law; and v. a statement that the information in the notification is accurate, and, under penalty of perjury (unless applicable law says otherwise), that you are authorised to act on behalf of the copyright owner. 20. We reserve the right to remove data alleged to be infringing without prior notice, at our sole discretion, and without liability to you. In appropriate circumstances, we will also terminate your account if we consider you to be a repeat infringer. Details of our designated copyright agent for notice of alleged copyright infringement are on our contacts page. Copyright Counter-Notices 21. We process all takedown notices based on good faith acceptance of the representations from the party submitting the takedown notice. We do not review the material before processing the takedown notice. 22. You may file a counter-notice if you believe that access to a file you have uploaded has been wrongly disabled because it was the subject of an incorrect takedown notice. You should only do so if you are confident that no other party owns copyright in the material, or you have rights to store the material and, if you are sharing it, that you have the right to do so. 23. Please understand that: 23.1. When we receive your counter-notice, we pass it, including your address and other contact information, to the party who issued the original takedown notice. By submitting your counter-notice you authorise us to do so. 23.2. Filing a counter-notification may lead to legal proceedings between you and the complaining party. 23.3. There may be adverse legal consequences in New Zealand and/or your jurisdiction if you make a false or bad faith allegation by using this process. 23.4. If, when using this counter-notice process, you make a false or bad faith allegation or otherwise breach these terms or any of our policies and that causes us any loss, costs (including legal costs), damages or other liability, we reserve the right to claim for and recover from you that loss, those costs (including full legal costs on a solicitor-client basis), damages and other liability, by deduction from any balance in our account and/or by proceedings in New Zealand and/or the jurisdiction of the address in your counter-notice. 23.5. We provide this counter-notice process voluntarily for the purposes of all applicable copyright takedown and counter-notice regimes in New Zealand and other jurisdictions, but, in doing so, we do not submit to any jurisdiction, law, tribunal or court other than those of New Zealand, as set out in these terms. We may amend, suspend or withdraw this counter-notice process at any time, provided that any counter-notices in train at that time shall continue to be processed. 24. By filing a counter-notice, you are deemed to have accepted the above terms. If you do not accept the above terms, do not file a counter-notice. 25. To file a counter-notice with us, you must provide a written communication at https://mega.nz/copyright or by email to copyright@mega.nz that includes substantially the following: 25.1. Identification of the specific URL(s) of material that has been removed or to which access has been disabled. 25.2. Your full name, address, telephone number, email address and the username of your Mega account. 25.3. The statement: "I have a good faith belief that the material was removed or disabled as a result of a mistake or misidentification of the material to be removed or disabled." 25.4. The reasons for that good faith belief, sufficient to explain the mistake or misidentification to the person who filed the original takedown notice. 25.5. The statement "I will accept service of proceedings in New Zealand or in the jurisdiction where my address in this counter-notice is located, from the person who provided Mega Limited with the original copyright takedown notice or an agent of such person." 25.6. Signature. A scanned physical signature or usual signoff in an email or using our webform will be accepted. 25.7. You may also provide comments. 26. We will only accept a counter-notification directly from the user from whose account a folder or file has been disabled. Counter-notifications must be submitted from the email address associated with the Mega account. 27. If we do not receive any further communication from or on behalf of the person who originally submitted the takedown notice, or any communication we do receive does not in our sole opinion adequately justify the original takedown notice, we may, but shall not be obliged to, reinstate the material in approximately 10-14 days provided we have no reason to believe that the material infringes copyright. 28. Nothing in this counter-notice section prejudices our right to remove or disable access to any material at any time, for any reason or no reason. Other Infringement Notices 29. If you consider there has been some other infringement or breach of law, or of these terms, and wish to file a complaint, contact us at the relevant address on our contacts page. We will generally require the same amount of detail as set out above for copyright infringement notices. See also our Takedown Guidance Policy. Suspension and Termination 30. You can terminate your access to our services at any time by following the 'Cancel your account' link in the Account section of the website or the Settings section of our mobile apps. However, we will not provide any part-refund for any allowance not used on any subscription you may have, other than under clause 3 above. If you are a business account administrator you may also terminate access to any user within the business account. 31. We can immediately suspend or terminate your, and that of other users within a business account, , access, to the website and our services without notice to you: 31.1. if you or they breach any of these terms or any other agreement you or they have with us; 31.2. at any time if you are not a registered user; 31.3. if you are using a free account and that account has been inactive for over 3 months or we have been unable to contact you using the email address in your account details. 32. We may also terminate or suspend our services or any part of our services, for all users or for groups of users, without notice, at any time, for any reason or no reason. 33. All charges outstanding on your account must be paid at termination. Export Control 34. You may not use, export, re-export, import, or transfer any software or code supplied as part of your use of our services: (a) into any United States or New Zealand embargoed countries; or (b) to anyone listed as a specifically prohibited recipient by the United States Government or the New Zealand Government. By using the website and our services, you represent and warrant that you are not located in any such country or on any such list. You also will not use the website or our services for any purpose prohibited by United States, New Zealand or any other law, including, without limitation, the development, design, manufacture or production of missiles, nuclear, chemical or biological weapons. Severability and Waiver 35. If any provision of these terms is held to be invalid or unenforceable, the remaining provisions will remain in full force and effect. If we do not enforce any right or provision of these terms or if we in any instance grant any concession or indulgence, that will not be deemed a waiver of such right or provision or obligate us to grant any concession or indulgence to anyone else. Force Majeure 36. We will not be liable by reason of any failure or delay in the performance of our obligations because of events beyond our reasonable control, which may include, without limitation, denial-of-service attacks, strikes, shortages, riots, insurrection, fires, flood, storm, explosions, acts of God, war, terrorism, governmental action, labour conditions, earthquakes, material shortages, extraordinary internet congestion or extraordinary connectivity issues or failure of a third party host, (each a "Force Majeure Event"). Upon the occurrence of a Force Majeure Event, we will be excused from any further performance of the obligations which are affected by that Force Majeure Event for so long as the event continues. DISCLAIMERS 37. WE DON'T GIVE YOU ANY WARRANTY OR UNDERTAKING ABOUT THE SERVICES OR THE WEBSITE WHICH ARE PROVIDED "AS IS". TO AVOID DOUBT, ALL IMPLIED CONDITIONS OR WARRANTIES ARE EXCLUDED AS MUCH AS IS PERMITTED BY LAW, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR PURPOSE, SAFETY, RELIABILITY, DURABILITY, TITLE AND NON-INFRINGEMENT. 38. We will try to give you access to our website and our mobile apps all the time, but we do not make any promises or provide you with a warranty that our website or the services will be without any faults, bugs or interruptions. 39. Whilst we intend that the services should be available 24 hours a day, seven days a week, it is possible that on occasions the website or services may be unavailable to permit maintenance or other development activity to take place or be periodically interrupted for reasons outside our control. 40. Information on our website will change regularly. We will try to keep our website up to date and correct, but again, we do not make any promises or guarantees about the accuracy of the information on our website. 41. We do not warrant that the services will meet your requirements or that they will be suitable for any particular purpose. 42. You are the controller in respect of some data Mega holds about you and Mega is the processor, for General Data Protection Regulation ("GDPR") purposes. Mega is the controller in respect of some other data. See our Privacy & Data Policy for more details. These terms, our Privacy & Data Policy and our Takedown Guidance Policy are the contract between us that governs our processing of that data. It is your sole responsibility to determine that the services meet the needs of you, your business or otherwise and are suitable for the purposes for which they are used. 43. We also aren't legally responsible for: 43.1. any corruption or loss of data or other content which you or anyone else may experience after using our website or our mobile apps, or any problems you may have when you view or navigate our website or use any of our mobile apps; 43.2. devices or equipment that we do not own or have not given you; 43.3. any loss or damage if you do not follow our reasonable instructions, these terms, our Privacy & Data Policy and our Takedown Guidance Policy; 43.4. any actions or non-actions of other people which disrupt access to our website, our mobile apps, or our API, including the 43.4.1. content and nature of any data that you upload, access or share; 43.4.2. content of ads appearing on our website or our mobile apps (including links to advertisers' own websites) as the advertisers are responsible for the ads and we don't endorse the advertisers' products; 43.4.3. content of other people's websites even if a link to their website is included on our website or our mobile apps. 44. You warrant that if you are accessing and using the services for the purposes of a business then, to the maximum extent permitted by law, any statutory consumer guarantees or legislation intended to protect non-business consumers in any jurisdiction (such as the Consumer Guarantees Act 1993 in New Zealand) do not apply to the supply of the services, the website, our mobile apps or these terms. LIMITATION OF LIABILITY AND INDEMNITY BY YOU 45. TO THE MAXIMUM EXTENT PERMITTED BY LAW, WE (THIS INCLUDES OUR EMPLOYEES, OFFICERS, AGENTS AND AUTHORISED RESELLERS) ARE NOT LIABLE WHETHER IN CONTRACT, TORT (INCLUDING NEGLIGENCE), EQUITY OR ON ANY OTHER GROUNDS TO YOU OR ANYONE ELSE FOR ANY DIRECT, INDIRECT OR CONSEQUENTIAL DAMAGE, LOSS, COST OR EXPENSE, DAMAGE TO PROPERTY, INJURY TO PERSONS, LOSS OF PROFITS, LOSS OF DATA OR REVENUE, LOSS OF USE, LOST BUSINESS OR MISSED OPPORTUNITIES, WASTED EXPENDITURE OR SAVINGS WHICH YOU MIGHT HAVE HAD, DENIAL OF SERVICE OR ACCESS TO OUR WEBSITE, OUR MOBILE APPS OR OUR API, OCCURRING DIRECTLY OR INDIRECTLY FROM THE USE OR ABILITY OR INABILITY TO USE, OR RELIANCE ON, OUR WEBSITE, OUR MOBILE APPS OR OUR API, OR THE SERVICES, AND BASED ON ANY TYPE OF LIABILITY INCLUDING BREACH OF CONTRACT, BREACH OF WARRANTY, TORT (INCLUDING NEGLIGENCE), STATUTORY OR PRODUCT LIABILITY, OR OTHERWISE. 46. YOU SHALL INDEMNIFY US AGAINST ALL CLAIMS, COSTS (INCLUDING ALL OUR LEGAL COSTS), EXPENSES, DEMANDS OR LIABILITY, DAMAGES AND LOSSES WHETHER DIRECT, INDIRECT, CONSEQUENTIAL, OR OTHERWISE, AND WHETHER ARISING IN CONTRACT, TORT (INCLUDING IN EACH CASE NEGLIGENCE), OR EQUITY OR OTHERWISE, ARISING DIRECTLY OR INDIRECTLY FROM BREACH BY YOU OR ANYONE YOU GIVE ACCESS TO YOUR DATA, OF ANY OF THESE TERMS OR ANY POLICY REFERENCED IN THESE TERMS. 47. IF YOU ARE NOT SATISFIED WITH THE SERVICES, THEN YOUR SOLE AND EXCLUSIVE REMEDY IS TO TERMINATE YOUR USE OF OUR SERVICES AND THE CONTRACT YOU HAVE WITH US. 48. DESPITE THE ABOVE, IF ANY COURT OR OTHER COMPETENT AUTHORITY HOLDS US (THIS INCLUDES OUR OFFICERS, STAFF AND AGENTS) LIABLE FOR ANY MATTER RELATED TO THESE TERMS OR OUR SERVICES, OUR TOTAL COMBINED LIABILITY WILL BE LIMITED TO THE MOST RECENT SUBSCRIPTION AMOUNT YOU HAVE PAID TO US. Disputes and Choice of Law 49. Any and all disputes arising out of this agreement, its termination, or our relationship with you shall be determined by binding arbitration under the Arbitration Act 1996 in Auckland, New Zealand, by one arbitrator who shall be a lawyer knowledgeable in relevant technology matters appointed by the President for the time being of the Arbitrators and Mediators Institute of New Zealand Incorporated (AMINZ) on a request by either you or us. The following terms apply to the arbitration in addition to those implied by New Zealand law: 49.1. Notice must be given to apply for any interim measure in the arbitration proceeding; 49.2. The arbitration proceeding will commence when a request is made to AMINZ to appoint an arbitrator; 49.3. The arbitration shall be in English. The Arbitrator shall permit the parties and witnesses to appear by videoconference that we will organise and pay for; 49.4. We will pay the arbitrator's fees and expenses unless the arbitrator determines that you should meet some or all of those fees and expenses because your dispute is frivolous or vexatious. 50. The relationship we have with you under these terms and their interpretation and construction together with any dispute, suspension or termination arising out of or in connection with them, is governed exclusively by New Zealand law. Mega does not submit to any other jurisdiction other than New Zealand and New Zealand law. You and we submit to the exclusive jurisdiction of the New Zealand arbitral tribunals (and courts for the purposes of the enforcement of any arbitral award or appeal on question of law).The parties agree to enforcement of the arbitral award and orders and any judgement in New Zealand and in any other country. Business Accounts 51. For business accounts, the administrator of that account can see and deal with the files and data associated with all users within that account (including any data and any personal information). In addition: 51.1. if the business account is suspended or terminated, the action will affect the data and personal information of every user within that account; 51.2. the administrator of the business account will be able to see and deal with, change or delete the files and data associated with every user within that account (including any of data and personal information); 51.3. the administrator of the business account will be able to terminate any user's account within the business account, restrict or disable usage of the account, change any user's password and otherwise deny access to the account and all data and personal information and such users will then lose access to all their data and all personal information associated their account. 52. We will charge the credit card associated with the business account with the applicable fees per user (for a minimum of three users) at the monthly billing date, on a recurring basis. 53. Where a business account recurring payment fails for any reason, after 30 days we may suspend the account and all users within that account until payment is made. If no payment is made within a reasonable period of time, we will be entitled to terminate the business account and all users within that account, in which case all data and personal information associated with those users and the account will be subject to deletion in accordance with these terms. 54. Since business accounts and the users within them are entitled to unlimited storage, they are subject to a fair use policy as follows: 54.1. Business accounts are only to be used for business purposes; 54.2. Business accounts are intended for multiple users and are not to be held or used by one person; 54.3. Each user must comply with these terms. Any breach of these terms by one user will be treated as a breach of these terms in respect of the whole account; 54.4. Mega will not be liable to any business account user should the actions of another user within the account, including the administrator of the business account, cause any loss or damage to another user within the business account (including by way of deletion, amendment, sharing or any other dealing with data or personal information); 54.5. Each user's use of the business service must be fair, reasonable and not excessive, as reasonably determined by us by reference to average and/or estimated typical per business user usage of the business service. We will consider usage to be excessive and unreasonable where it materially exceeds the average and/or estimated use patterns over any day, week or month (or other period of time as determined by us) ("excessive usage"). If we identify excessive usage or consider that usage patterns on any business account indicate that any of the usage is not for business purposes we may suspend, and after 30 days' notice terminate, any or all of the users or the whole business account, in which case data and personal information associated with those users and the account will be subject to deletion in accordance with these terms. Examples of such unreasonable usage patterns also include: making non-business data publicly available, adding users who do not appear to Mega to be associated with the business, and uploading or sharing files from non-business related third party sites. Refunds 55. Unless otherwise provided by New Zealand law or by a particular service offer, all purchases are final and non-refundable. If you believe that Mega has charged you in error, you must contact us within 90 days of such charge. No refunds will be given for any charges more than 90 days old. We reserve the right to issue refunds or credits at our sole discretion. If we issue a refund or credit, we are under no obligation to issue the same or similar refund in the future. This refund policy does not affect any statutory rights that may apply. If you have made a payment by mistake and have not used the subscription plan services, you must contact support@mega.nz within 24 hours. This will be acknowledged promptly and answered within 7 days. Recurring Paid Subscriptions 56. Recurring subscriptions will renew indefinitely, either monthly or annually, based upon your chosen subscription period, unless the subscription is cancelled prior to a renewal date. For recurring subscriptions established via mobile apps using in-app-purchase platforms, you should refer to your app store account for details of the dates and terms of the subscription. Any other recurring subscription will renew on the same day of month as it was established, except in cases where the day is not available due to a short month, in which case the renewal date will be moved to the first day of the following month. Cancellation of Recurring Paid Subscriptions 57. Recurring subscriptions established through the mobile app using in-app-purchase platforms should be cancelled through the relevant app store account directly. Any other recurring subscription should be cancelled by navigating to https://mega.nz/account in your browser and selecting the option to cancel your subscription. Any payments processed after an effective subscription cancellation will be promptly refunded by us. If you cancel a paid subscription, but you maintain your Mega account as a free account, access to your account may be restricted or blocked if the level of use is above the limits applying to free accounts at that time. Information and Privacy 58. We reserve the right to disclose data and other information as required by law or any competent authority. Our approach is referenced in our Privacy & Data Policy and Takedown Guidance Policy, both of which are subject to these terms. 59. You and anyone else you give access to are also bound by our Privacy & Data Policy and Takedown Guidance Policy. By accepting these terms, you also accept our Privacy & Data Policy and Takedown Guidance Policy. Notices 60. You can contact us by sending an email to support@mega.nz. If we need to contact you or provide you with notice we will email you at the email address you have recorded in your account details and such notices will be valid and deemed to be received by you whether or not you are using that address. We may also send notices via any chat facility or internal messaging system we may provide. Rights to Third Parties 61. Mega Limited employees, officers, agents, related companies and affiliates together with authorised suppliers of services to and authorised resellers of, our services, are entitled to the benefit of all indemnities and other provisions of these terms which are for the benefit of Mega in these terms. Entire Agreement 62. These terms, our Privacy & Data Policy, and Takedown Guidance Policy, the terms of any plan you purchase and any other terms and policies expressly referenced in these terms, together constitute the entire agreement between us relating to your use of the website, our mobile apps, our API and our services. From the date they come into force, in respect of any use of any of our services after that, they supersede and replace any prior agreement, arrangement or understanding between you and us regarding the use of our services. No agreement, arrangement or understanding alleged to be made between us, or representation alleged to be made, by us or on our behalf, to you, if inconsistent with these terms, shall be valid unless agreed to in writing by an executive officer of Mega Limited. Last updated 15 November 2018, effective 17 December 2018. MEGAcmd-2.5.2_Linux/build/installer/uninstall_ico.ico000066400000000000000000005362121516543156300225510ustar00rootroot00000000000000 († h ®  (00 (->%@@ (PfR`` (´Ž¢€€ (@¶V߬%Þ–(   ØÚ†ÚÓÛúÛôÛÎÛƒ Ø ÝT Ýò Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýò ÝS àS Þþ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ Þþ àS Ü âñ âÿÆÄøÿÎÌùÿ!äÿ âÿ âÿ!äÿÎÌùÿÆÄøÿ âÿ âñ Üå‚åÿåÿÏÎúÿÿÿÿÿ×Õûÿ#çÿ#çÿ×ÕûÿÿÿÿÿÏÎúÿåÿåÿä† èÐ éÿ éÿ& ëÿ×Öûÿÿÿÿÿ×Öûÿ×Öûÿÿÿÿÿ×Öûÿ&ëÿ éÿ éÿ éÑ ìø ìÿ ìÿ ìÿ'!îÿ×Öüÿÿÿÿÿÿÿÿÿ×Öüÿ'!îÿ ìÿ ìÿ ìÿ ìóîøïÿïÿïÿ)#ðÿØ×üÿÿÿÿÿÿÿÿÿØ×üÿ)#ðÿïÿïÿïÿîùòÐóÿóÿ-&ôÿØ×ýÿÿÿÿÿØ×ýÿØ×ýÿÿÿÿÿØ×ýÿ,&ôÿóÿóÿòÒõ‚öÿöÿÑÐýÿÿÿÿÿÙ×ýÿ.'÷ÿ.'÷ÿÙ×ýÿÿÿÿÿÑÐýÿöÿöÿõ†ÿøñùÿÊÈþÿÑÏþÿ0)ùÿùÿùÿ0)ùÿÑÏþÿÊÈþÿùÿøñ"óûSúþûÿûÿûÿûÿûÿûÿûÿûÿúþûSûSüð ýÿ ýÿ ýÿ ýÿ ýÿ ýÿüñûS&ÿ ÿ† þÒ ÿø ÿø!ÿÐ!ÿ‚&ÿ(0 @ ÔÚ[Ù¬ÚßÚúÚúÚßÙ¬Ú[Ô ÚS ÚÛ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ ÚÛ ÚTÿ Ü“ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ü”ÿ ß‹ ßÿ2,äÿáÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿáÿ2,äÿ ßÿ ߊ áV áÿ3-æÿþþÿÿÖÕúÿ ãÿ áÿ áÿ áÿ áÿ áÿ áÿ ãÿÖÕúÿþþÿÿ3-æÿ áÿ áUÔ âããÿäÿÖÕúÿÿÿÿÿÖÕúÿ"åÿãÿãÿãÿãÿ"åÿÖÕúÿÿÿÿÿÖÕúÿäÿãÿãäÚå[åÿåÿåÿ$çÿ×Õûÿÿÿÿÿ×Õûÿ#çÿåÿåÿ#çÿ×Õûÿÿÿÿÿ×Õûÿ#çÿåÿåÿåÿ æ\ ç« çÿ çÿ çÿ çÿ%éÿ×Öûÿÿÿÿÿ×Öûÿ%éÿ%éÿ×Öûÿÿÿÿÿ×Öûÿ%éÿ çÿ çÿ çÿ çÿ ç¬ éÙ êÿ êÿ êÿ êÿ êÿ&ìÿ×Öûÿÿÿÿÿ×Öûÿ×Öûÿÿÿÿÿ×Öûÿ&ìÿ êÿ êÿ êÿ êÿ êÿ êà ìò ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ'!îÿ×Öüÿÿÿÿÿÿÿÿÿ×Öüÿ'!îÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ëùíøîÿîÿîÿîÿîÿîÿ)#ïÿØ×üÿÿÿÿÿÿÿÿÿØ×üÿ)#ïÿîÿîÿîÿîÿîÿîÿíùñàñÿñÿñÿñÿñÿ*$òÿØ×ýÿÿÿÿÿØ×ýÿØ×ýÿÿÿÿÿØ×ýÿ*$òÿñÿñÿñÿñÿñÿñàó«óÿóÿóÿóÿ,&ôÿØ×ýÿÿÿÿÿØ×ýÿ,&ôÿ,&ôÿØ×ýÿÿÿÿÿØ×ýÿ,&ôÿóÿóÿóÿóÿó¬ó[õÿõÿõÿ.'öÿØ×ýÿÿÿÿÿØ×ýÿ-&öÿõÿõÿ-&öÿØ×ýÿÿÿÿÿØ×ýÿ-&öÿõÿõÿõÿó\*ÿ÷ã÷ÿ' ÷ÿÙØþÿÿÿÿÿÙØþÿ/(øÿ÷ÿ÷ÿ÷ÿ÷ÿ/(øÿÙØþÿÿÿÿÿÙØþÿ' ÷ÿ÷ÿ÷ä*ÿùUùÿA;úÿþþÿÿÙØþÿ0)ùÿùÿùÿùÿùÿùÿùÿ0)ùÿÙØþÿþþÿÿA;úÿùÿøTûŠûÿB<üÿ)"ûÿûÿûÿûÿûÿûÿûÿûÿûÿ)"ûÿB<üÿûÿû‰ÿý‰ýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿý‰ÿÿQýÛ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿýÛÿR**ÿ ÿV ÿ¦!ÿß ÿù ÿó!ÿ× ÿ¦!ÿU**ÿ( @ ÿÙ>Ú‹ÙÅÙèÚùÚùÙèÙÅÚ‹Ù>ÿÿÚbÛÜÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÜÚbÿß(ÜÌ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÜÌß( ÜI Ýó Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýó ÜI ßI Þù Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þù ßI ß( ßó ßÿ ßÿeaëÿeaëÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿeaëÿeaëÿ ßÿ ßÿ ßó ß(ÿ àË áÿ áÿc^ìÿÿÿÿÿÿÿÿÿ¢Ÿóÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ¢Ÿóÿÿÿÿÿÿÿÿÿd_ìÿ áÿ áÿ áÌÿ âc âÿ âÿ âÿc_ìÿÿÿÿÿÿÿÿÿÿÿÿÿ¢Ÿôÿâÿ âÿ âÿ âÿ âÿ âÿ âÿâÿ¢Ÿôÿÿÿÿÿÿÿÿÿÿÿÿÿd`ìÿ âÿ âÿ âÿ âcÿ äÛäÿäÿäÿäÿ¢ õÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ õÿäÿäÿäÿäÿäÿäÿ¢ õÿÿÿÿÿÿÿÿÿÿÿÿÿ¢ õÿäÿäÿäÿäÿ äÛÿæ?åÿåÿåÿåÿåÿ åÿ£ õÿÿÿÿÿÿÿÿÿÿÿÿÿ£ õÿ åÿåÿåÿ åÿ£ õÿÿÿÿÿÿÿÿÿÿÿÿÿ£ õÿ åÿåÿåÿåÿåÿåÿæ? æŠ çÿ çÿ çÿ çÿ çÿ çÿ çÿ¤¡öÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¡öÿ çÿ çÿ¤¡öÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¡öÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ æ‰ èà éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ¤¡÷ÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¡÷ÿ¤¡÷ÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¡÷ÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ è êè êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿêÿ¤¢÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¤¢÷ÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êè ëù ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿìÿ¥¢øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥¢øÿìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ëùíùîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ¥¢øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥¢øÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿíùîèïÿïÿïÿïÿïÿïÿïÿïÿïÿ¥£ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¥£ùÿïÿïÿïÿïÿïÿïÿïÿïÿïÿîèðÃñÿñÿñÿñÿñÿñÿñÿñÿ¦£úÿÿÿÿÿÿÿÿÿÿÿÿÿ¦£úÿ¦£úÿÿÿÿÿÿÿÿÿÿÿÿÿ¦£úÿñÿñÿñÿñÿñÿñÿñÿñÿðÂó‰óÿóÿóÿóÿóÿóÿóÿ§¤úÿÿÿÿÿÿÿÿÿÿÿÿÿ§¤úÿóÿóÿ§¤úÿÿÿÿÿÿÿÿÿÿÿÿÿ§¤úÿóÿóÿóÿóÿóÿóÿóÿó‰ò?ôÿôÿôÿôÿôÿôÿ§¤ûÿÿÿÿÿÿÿÿÿÿÿÿÿ§¤ûÿôÿôÿôÿôÿ§¤ûÿÿÿÿÿÿÿÿÿÿÿÿÿ§¤ûÿôÿôÿôÿôÿôÿôÿò?ÿõÛöÿöÿöÿöÿ§¥üÿÿÿÿÿÿÿÿÿÿÿÿÿ§¥üÿöÿöÿöÿöÿöÿöÿ§¥üÿÿÿÿÿÿÿÿÿÿÿÿÿ§¥üÿöÿöÿöÿöÿõÛÿ÷b÷ÿ÷ÿ÷ÿmiúÿÿÿÿÿÿÿÿÿÿÿÿÿ¨¥üÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ¨¥üÿÿÿÿÿÿÿÿÿÿÿÿÿniúÿ÷ÿ÷ÿ÷ÿ÷cÿøÊùÿùÿniûÿÿÿÿÿÿÿÿÿ¨¥ýÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿ¨¥ýÿÿÿÿÿÿÿÿÿojûÿùÿùÿøËÿ ø'ùóúÿúÿnjüÿoküÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿnjüÿoküÿúÿúÿùóø(ûHúùûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿúùûHû@ûëüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿûë ú>ÿ!üÊ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿüÊÿ!ÿÿbýÛ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿýÛÿbÿÿ ÿ>!ÿ‰ ÿÄ þè ÿù ÿù þè ÿÄ!ÿŠ ÿ>ÿ(0` -ÔÚ?ـخØÕÙîÙúÙúÙîØÕخـÚ?Ô Û2Ú™ÙîÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙîÚ™ Û2Ù/Ú¶ÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÚ¶Ù/ßÛ� Ûû Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ ÛûÛ�ßÜ%ÜÏ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÜÏÝ& Ý6 Ýì Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýì Þ7 Þ7 Þó Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þó Þ7Û$ Þê Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ ÞêÛ$ß ÞÏ ßÿ ßÿ ßÿ ßÿ:4åÿzvîÿ93åÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ:4åÿzvîÿ93åÿ ßÿ ßÿ ßÿ ßÿ ÞÏß àŽ àÿ àÿ àÿ àÿ?9æÿûûÿÿÿÿÿÿûûÿÿ^Yêÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ_Zëÿûûÿÿÿÿÿÿúúþÿ;5æÿ àÿ àÿ àÿ àÿ à� Þ/ àû áÿ áÿ áÿ áÿ}yïÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ_Zëÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ`[ëÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿzvïÿ áÿ áÿ áÿ áÿ àû Þ/ â¹ âÿ âÿ âÿ âÿ âÿ>9èÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ_Zìÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ`[ìÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûÿÿ;5çÿ âÿ âÿ âÿ âÿ âÿ â¹ä1ãÿãÿãÿãÿãÿãÿãÿ`\íÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ_[ìÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿ`\íÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ`\íÿãÿãÿãÿãÿãÿãÿãÿå2ãœäÿäÿäÿäÿäÿäÿäÿäÿa\íÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ`[íÿäÿäÿäÿäÿäÿäÿäÿäÿa\íÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa\íÿäÿäÿäÿäÿäÿäÿäÿäÿãœÚåðåÿåÿåÿåÿåÿåÿåÿåÿåÿa\îÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ`[îÿåÿåÿåÿåÿåÿåÿa\îÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa\îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåðÚæ> æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿb]ïÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa\îÿ æÿ æÿ æÿ æÿb]ïÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿb]ïÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿæ> ç€ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿb^ðÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa]ðÿ èÿ èÿb^ðÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿb^ðÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ ç€ é¯ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿc^ñÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿb]ðÿc^ñÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿc^ñÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ é¯ éÕ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿc^ñÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿc^ñÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ éÕ êì ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿd_òÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿd_òÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ êì ëù ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿd`òÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿd`òÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ëùìùíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿe`óÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿe`óÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿìùíìîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿeaôÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿeaôÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿíìïÕïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿeaôÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿeaôÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÕð¯ðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿfbõÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿeaõÿfbõÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿfbõÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿð¯ñ€òÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿgböÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿfaöÿòÿòÿgböÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgböÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿñ€ò>óÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿgc÷ÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgb÷ÿóÿóÿóÿóÿgc÷ÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgc÷ÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿò>$ÿôðôÿôÿôÿôÿôÿôÿôÿôÿôÿgcøÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgbøÿôÿôÿôÿôÿôÿôÿgcøÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgcøÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôð$ÿõœõÿõÿõÿõÿõÿõÿõÿõÿhdøÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgcøÿõÿõÿõÿõÿõÿõÿõÿõÿhdøÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿhdøÿõÿõÿõÿõÿõÿõÿõÿõÿõœô1öÿöÿöÿöÿöÿöÿöÿidùÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿhcùÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿidùÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿidùÿöÿöÿöÿöÿöÿöÿöÿô2ö¹÷ÿ÷ÿ÷ÿ÷ÿ÷ÿJEùÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿhcúÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿidúÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿûûÿÿGAùÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿö¹ù/÷ûøÿøÿøÿøÿ…�ûÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿidúÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿieúÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿ‚ûÿøÿøÿøÿøÿ÷ûù/ùŽùÿùÿùÿùÿKFúÿûûÿÿÿÿÿÿûûÿÿieûÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿjeûÿûûÿÿÿÿÿÿûúÿÿHBúÿùÿùÿùÿùÿù�ÿúÏúÿúÿúÿúÿHCûÿ�}üÿHBûÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿHCûÿ�}üÿHBûÿúÿúÿúÿúÿúÏÿ÷$ùêúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿùê÷$ú7úóûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿúóú7ú5ûêüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿûì ú7ÿ$üÏýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿüÏÿ$ÿ ýŽüû ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿüû ý�ÿ ÿ/ ý¶ ýþ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ ýþ ý¶ ÿ/ÿ1!ÿ™!ÿí!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿî!ÿ™ÿ1**ÿ ÿ?!ÿ€!ÿ® þÔ!ÿí ÿù ÿù!ÿí þÔ!ÿ®!ÿ€ ÿ?**ÿ(@€ PÿÙ6ÙsÙ¢ØÆØâÙôÙÿÙúÙîØÝØÆÙ¢Ùt Ù7ÿÔÛOÚ­ÙñÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙñÚ­ÛOÔ ÖÚƒÚíÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚíÚƒ Öå Ú…ÛóÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛóÚ…Ð ÚMÚáÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÚáÚMßÜ“ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÜ”ß àÜÎ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÜÎ àÝ& Üß Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÜßÝ&Û$ Ýé Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÝéÛ$ Ú Þá Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þá Úå ÞÏ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ÞÏå Þœ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ Þœ ßQ àÿ àÿ àÿ àÿ àÿ àÿ àÿRMéÿèçüÿääüÿWRêÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿXSêÿèçüÿääüÿRMéÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ ßPÚ àå áÿ áÿ áÿ áÿ áÿ áÿ áÿçæüÿÿÿÿÿÿÿÿÿüüÿÿ^Yëÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ_Zëÿüüÿÿÿÿÿÿÿÿÿÿääüÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ àåÚ à† áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿççüÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ_Zëÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ`[ëÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿääüÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ à… ä áó âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿYTëÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ_Zìÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ`[ìÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿYTëÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ áó ä ã‚ãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿ`\íÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ_[ìÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿ`\íÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ`\íÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿ ã�Ôãëäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ`\íÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ_[íÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿ`\íÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ`\íÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿãëÔåOåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿa\îÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ`[îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿa\îÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa\îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåOä¬åÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿa\îÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿ`[îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿa\îÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa\îÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿä¬Ú åó æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿb]ïÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa\îÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿb]ïÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿb]ïÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ åóÚå< çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿb^ïÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa]ïÿ çÿ çÿ çÿ çÿ çÿ çÿb^ïÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿb^ïÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿå; ès èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿb^ðÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿa]ðÿ èÿ èÿ èÿ èÿb^ðÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿb^ðÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ ès éš éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿc^ñÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿb]ðÿ éÿ éÿc^ñÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿc^ñÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éš è éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿc^ñÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿb]ðÿc^ñÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿc^ñÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ è éá êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿd_ñÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿd_ñÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êà êò ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿd_òÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿd_òÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ êí ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿd`òÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿc_òÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ëùíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿe`óÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿd_óÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿ îñîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿe`ôÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿe`ôÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ îòïáïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿeaôÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿeaôÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïáïÂïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿeaôÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿe`ôÿeaôÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿeaôÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÂðšðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿfbõÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿeaõÿðÿðÿfbõÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿfbõÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðšñsñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿfböÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿeaöÿñÿñÿñÿñÿfböÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿfböÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñsò<òÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿgböÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿfaöÿòÿòÿòÿòÿòÿòÿgböÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgböÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿò;$ÿóóóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿgc÷ÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgb÷ÿóÿóÿóÿóÿóÿóÿóÿóÿgc÷ÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgc÷ÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóó$ÿó¬óÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿgc÷ÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgb÷ÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿgc÷ÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgc÷ÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿó¬õOôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿhdøÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgcøÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿhdøÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿhdøÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿõO*ÿõëõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿhdøÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿgcøÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿhdøÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿhdøÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõë*ÿõ‚öÿöÿöÿöÿöÿöÿöÿöÿöÿöÿidùÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿhcùÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿidùÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿidùÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿõ� ñöó÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿc^úÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿhcúÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿidúÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿc^úÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿöó ñ÷…÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿéèþÿÿÿÿÿÿÿÿÿÿÿÿÿüüÿÿidúÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿieúÿüüÿÿÿÿÿÿÿÿÿÿÿÿÿÿæåþÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷…$ÿøåøÿøÿøÿøÿøÿøÿøÿéèþÿÿÿÿÿÿÿÿÿüüÿÿidúÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿieúÿüüÿÿÿÿÿÿÿÿÿÿæåþÿøÿøÿøÿøÿøÿøÿøÿøå$ÿøOùÿùÿùÿùÿùÿùÿùÿ^Yûÿéèþÿéèþÿc^ûÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿd_ûÿéèþÿéèþÿ^YûÿùÿùÿùÿùÿùÿùÿùÿøOø–ùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿø•$$ÿúÎúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÎ$$ÿÿúáûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿúáÿ÷$úéûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿúé÷$!ÿ&ûßüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿûß!ÿ&þüÎüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÎþÿý“ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ý”ÿ!ûMüà ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿüá!ûMÿ ý„ýó þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿýó ý„ÿ ÿý� ýì þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ ýìý�ÿ$$ÿ ÿW ÿ­ ÿð!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ ÿð ÿ­ ÿW$$ÿÿ!ÿ6!ÿs!ÿ¡!ÿÆ ÿâ ÿñ!ÿÿ!ÿÿ ÿñ ÿâ!ÿÆ!ÿ¡!ÿs!ÿ6ÿ(`À ´Ø!ÙRØ}Ø¡ØÁÙרêØõÙÿÙÿØõØêÙ×ØÂØ¡Ø~ÙRØ! ÙØdÙ«ÙçÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙçÙ«Ød ÙÔÙlÚÄÙþÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙþÚÄÙlÔ Ù0Ú ÙöÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙöÚŸ Ù0 ×4Ú´ÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚµ ×4ÝÛ¦ÚþÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÚþۦݿÛtÚõÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÚöÛt¿Ý&ÚÊ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ ÛÿÚÊÝ&Û] Üô Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜôÛ]ÿÜ’ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÜ’ÿßÛ® Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÛ®ßß ÜÀ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÜÀßá ÜÏ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ÜÏáÝ ÝÈ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ ÝÈÝÿ Þ² Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þ´ÿ Ý’ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Ý’ Þ^ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ Þ^ Ý& Þô ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ Þô Ý&ÿ ßÊ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ áÿ–“òÿïîýÿïîýÿ–“òÿ áÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ áÿ–“òÿïîýÿïîýÿ–“òÿ áÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ ßÊÿ àl àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ•’òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸öÿ áÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ áÿ¹·öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ•’òÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àl ß áï áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿçæüÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸÷ÿ âÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ âÿ¹·öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïîýÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áï ß ᣠáÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿîíýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹÷ÿ âÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ âÿº¸öÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿïîýÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ á¤à2 áþ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ–“òÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹÷ÿ ãÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ ãÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ–“òÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ áþá3 áµ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ ãÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹÷ÿ ãÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ ãÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸÷ÿ ãÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ â´ä0âþãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿäÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹÷ÿäÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿäÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸÷ÿäÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿâþã/â¡ãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿäÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹÷ÿäÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿäÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸÷ÿäÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿâ¡áäöäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿåÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹÷ÿåÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿåÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸÷ÿåÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäöáåläÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿåÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹÷ÿåÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿåÿº¸÷ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸÷ÿåÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿâmäÄåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿæÿº¸øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹øÿæÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿæÿº¸øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸øÿæÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿäÄ âäþåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿæÿº¸øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹øÿæÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿæÿº¸øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿº¸øÿæÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿäþ á åd æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿçÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºøÿçÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿçÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹øÿçÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ ådå¬ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿçÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºøÿçÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿçÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹øÿçÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿå¬ æç çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿèÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºøÿèÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿèÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹øÿèÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ æçé# èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿéÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºùÿéÿ èÿ èÿ èÿ èÿ èÿ èÿéÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹øÿéÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿé# èQ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿéÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºùÿéÿ èÿ èÿ èÿ èÿéÿ»¹øÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹øÿéÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èQ è} éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿêÿ»¹ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºùÿêÿ éÿ éÿêÿ»¹ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹ùÿêÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ è} è¡ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿêÿ»¹ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºùÿêÿêÿ¼ºùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹ùÿêÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ è¡ é¿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿëÿ»¹ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºùÿ¼ºùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹ùÿëÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ éÀ êÒ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿëÿ»¹ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹ùÿëÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ éØ ëß ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿìÿ»¹ùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ»¹ùÿìÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëê êì ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿìÿ¼ºùÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºùÿìÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëó ëù ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿíÿ¼ºúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºúÿíÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿíÿ½»úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»úÿíÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íÿ íòíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿ½»úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»úÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿ íóíêîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ½»úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»úÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿíêî×îÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ½»úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»úÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîØïÀïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿ½»úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºúÿ¼ºúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»úÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÀï¡ïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿ½»úÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¼ºúÿïÿïÿ¼ºúÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»úÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿï¡ð}ðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿ½¼ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»ûÿðÿðÿðÿðÿ½»ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½¼ûÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿð}ïQðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿ½¼ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»ûÿðÿðÿðÿðÿðÿðÿ½»ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½¼ûÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿïQð#ñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿ½¼ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»ûÿñÿñÿñÿñÿñÿñÿñÿñÿ½»ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½¼ûÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿð#ñçòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿ¾¼ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»ûÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿ½»ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼ûÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿñçñ¬òÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿ¾¼ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»ûÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿ½»ûÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼ûÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿñ¬òdóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿ¾¼üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»üÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿ½»üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼üÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿòdõòþóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿ¾¼üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»üÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿ½»üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼üÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿòþõôÄôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿ¾¼üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»üÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿ½»üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼üÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÄókôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿ ôÿ¾¼üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»üÿ ôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿ½»üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼üÿ ôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿólðôöõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿ õÿ¾¼üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»üÿ õÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿ½»üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼üÿ õÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿôöðõ¡õÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿ õÿ¾¼üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ½»üÿ õÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿ½»üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼üÿ õÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõ¡ô0õþöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿ!öÿ¿½üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼üÿ!öÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿ öÿ¾¼üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿½üÿ!öÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿõþó.ö´öÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿ öÿ¿½üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼üÿ!öÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿ öÿ¾¼üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿½üÿ öÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿö´ô2öþ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿœ™üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼ýÿ!÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ ÷ÿ¾¼ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿœ™üÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿöþô2÷£÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿéèþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼ýÿ"÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ!÷ÿ¾¼ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðïþÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷£ô÷ïøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿïîÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼ýÿ"øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ!øÿ¾¼ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðïÿÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ÷ïô÷køÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿœ™üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¾¼ýÿ"øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ!øÿ¾¼ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿœ™üÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ÷lÿøÊùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿ"ùÿœ™üÿðïÿÿéèþÿžšüÿ#ùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿ"ùÿœ™üÿðïÿÿéèþÿžšüÿ"ùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿøÊÿø&øôùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿøóø&ù]úÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿù\ù‘úÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿù‘ÿú±úÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿù³ÿ"ÿûÈûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÈ"ÿÿûÏûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÏÿÿüÀüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÀÿÿü®üÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿü®ÿÿû’üÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿû’ÿü]üôýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿüôü]!ÿ&üÊ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿüÊ!ÿ&?ÿ üt üõ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ üö üt?ÿ"ÿ ý¦ ýþ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ ýþ ý¦"ÿ"ÿ4 ý´ ýþ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ ýþ ý´"ÿ4"ÿ- ýŸ ýö þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ ýö ýŸ"ÿ-ÿ!ÿl ÿÄ!ÿþ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿþ ÿÄ!ÿlÿÿ þ]!ÿŸ!ÿà!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿà!ÿŸ þ]ÿÿ ÿQ ÿ|!ÿ¡!ÿÁ!ÿÖ þé þò!ÿÿ ÿù!ÿí!þÝ!ÿÐ!ÿÁ!ÿ¡ ÿ|ÿQÿ (€ @ÔÙ/ÚZØ}Ù�غÙÒØâÙîÙôÙÿÙÿÙôÙîØáØÎÙ¸Ù�Ø}ÚZÙ/Ô ÔØ\Ø™ØÐÙúÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙÿÙúØÏØ™Ø\ ÔÛ2Ú†ÙÎÙþÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙþÙÎÚ†Û2ÝÙ‚ÙÚÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙÚÙ‚ÝÿÛGÙ·ÙýÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙýÙ·ÛGÿÿÙ^ÙÓÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÙÔÙ^ÿÿØWÚ×ÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚÿÚ×ÛVÿ Ú8ÛÇÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÇ Ú8ÝÛ˜ÚýÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÚþÛ˜ÝÚMÛåÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛÿÛåÚLå Û— Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ Ûÿ ÚþÛ–å Þ'ÜÔ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÜÔÞ' ÛO Üñ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üñ ÛPÛs Ûý Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÛýÛsÿÜ” Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ Üÿ ÜÿÜ”ÿÿ Ü£ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ü¢ÿÿ ܬ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ ܬÿÿ Ü¢ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ýÿ Ü¢ÿ Þ– Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þ– Ýx Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Ýx ÞO Ýþ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Þÿ Ýþ ÜR Ý& ßð ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßð Þ'å ÞÕ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ÞÕå Þ– ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ ßÿ Þ– áM ßþ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ2,åÿ´²õÿóòýÿóòýÿ±¯õÿ2,åÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ2,åÿ´²õÿóòýÿóòýÿ±¯õÿ2,åÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ ßþ àLÝ ßå àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ1+åÿðïýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðïýÿ@;çÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿA<çÿðïýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿðïýÿ1+åÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ ßåÝ ß™ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ°®õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿ@;çÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿA<çÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ±¯õÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ àÿ ß™ á4 àþ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿóòýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿ@;çÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿA<èÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóòýÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ àþ â5ÿ áÆ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿòñýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿA<çÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿB=èÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóòýÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÆÿ áV áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ±¯õÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿA<çÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿB=èÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ°®õÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áÿ áUÿ âÖ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ1+æÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿA<èÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿB=èÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿ1+æÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÖÿâ[ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿA<èÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿA<èÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿB=èÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿA<èÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿ âÿâ[ÿãÔãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿB<éÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿB<éÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿC=éÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿB<éÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÕÿâGãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿB<éÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿB<éÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿC=éÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿB<éÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿâGâ¶ãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿB<éÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿB<éÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿC=éÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿB<éÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿãÿâ¶æãýäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿB<êÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿB<êÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿC=êÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿB<êÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿãýæã�äÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿC=êÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿD>êÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿD>êÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿC=êÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿäÿã‚åÚåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿC=ëÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿD>ëÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿD>ëÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿC=ëÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÛ å2åÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿC=ëÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿD>ëÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿD>ëÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿC=ëÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿ å2ä†åÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿC=ëÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿD>ëÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿD>ëÿñðýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðýÿC=ëÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿåÿä†æÍ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿD>ëÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD?ëÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿD?ëÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD>ëÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿæÎ á åþ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿD>ëÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD?ëÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿD?ëÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD>ëÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ æÿ åþ áèZ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿD>ìÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD?ìÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿD?ìÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD>ìÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿèZ æ” çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿD?ìÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿE@ìÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿE@ìÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD?ìÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ æ” çÏ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿD?ìÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿE@ìÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿE@ìÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD?ìÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÿ çÏÿ çú èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿD?íÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿE@íÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿE@íÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD?íÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ çúÿ é/ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿD?íÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿE@íÿ èÿ èÿ èÿ èÿ èÿ èÿE@íÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿD?íÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ èÿ è- è[ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿE@îÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿFAîÿ éÿ éÿ éÿ éÿFAîÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿE@îÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ èZ è| éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿE@îÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿFAîÿ éÿ éÿFAîÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿE@îÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ è| éœ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿE@îÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿFAîÿFAîÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿE@îÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éÿ éœ êº êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿF@ïÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿF@ïÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êº éÌ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿF@ïÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿF@ïÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ êÿ éÌ êà ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿF@ïÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿF@ïÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ êà êð ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿF@ïÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿF@ïÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ ëÿ êð ìò ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿGAðÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿGAðÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìó ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿGAðÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿGAðÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿHBðÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿHBðÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ ìÿ íòíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿHCñÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿHCñÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿ íó ìðíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿHCñÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿHCñÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿíÿ ìð íàîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿHCòÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿHCòÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ íà íÌîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿHCòÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿHCòÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿîÿ íÌîºïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿIDóÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿIDóÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿîºîœïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿIDóÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿHCòÿHCòÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿIDóÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿîœî|ïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿIDóÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿHCòÿïÿïÿHCòÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿIDóÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿïÿî|ð[ðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿJDóÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿIDóÿðÿðÿðÿðÿIDóÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿJDóÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðZî/ðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿJDóÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿIDóÿðÿðÿðÿðÿðÿðÿIDóÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿJDóÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿðÿî-ÿðúñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿJDôÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿIDôÿñÿñÿñÿñÿñÿñÿñÿñÿIDôÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿJDôÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿðúÿñÏñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿJDôÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿIDôÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿIDôÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿJDôÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÏñ”ñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿKEôÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿICôÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿJDôÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿKEôÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñÿñ”ðYòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿKEõÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿICõÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿJDõÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿKEõÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿðZõñþòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿKEõÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿICõÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿJDõÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿKEõÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿòÿñþõòÍóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿLFöÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿJDöÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿKEöÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿLFöÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿòÎó†óÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿLFöÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿJDöÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿKEöÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿLFöÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿó†ô2óÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿLFöÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿJDöÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿKEöÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿLFöÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿóÿô2ôÚôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿLFöÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿJDöÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿKEöÿññþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿññþÿLFöÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÚôôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿLGöÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿJEöÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿKFöÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿLGöÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿôÿó�öôýõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿLG÷ÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿJE÷ÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿKF÷ÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿLG÷ÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿôýöõµõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿLG÷ÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿJE÷ÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿKF÷ÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿLG÷ÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõ¶ôGõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿLG÷ÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿJE÷ÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿKF÷ÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿLG÷ÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿõÿôGÿöÔöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿMHøÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿKFøÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿLGøÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿMHøÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿõÕÿö[öÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿMHøÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿKFøÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿLGøÿòñþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñþÿMHøÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿöÿö[ÿöÖ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ>8øÿòñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñÿÿKFùÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿLGùÿòñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñÿÿ>8øÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿöÖÿöV÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿµ³üÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñÿÿKFùÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿLGùÿòñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¶³üÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿöUÿ÷Æ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿóóÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñÿÿLGùÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿMGùÿòñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóÿÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷ÿ÷Æÿú4÷ýøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿóòÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñÿÿLGùÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿMGúÿòñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóóÿÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ÷þú4ø—øÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ¶´ýÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿòñÿÿLGùÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿMGúÿòñÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿµ³ýÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿø™"ÿøåøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿ>8ùÿñðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðÿÿLGùÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿMGúÿñðÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿñðÿÿ>8ùÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøÿøä"ÿøMøþùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿ?9úÿ¸¶ýÿóòÿÿòñÿÿ¶´ýÿ?9úÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿ?9úÿ¸¶ýÿóòÿÿòñÿÿ¶´ýÿ?9úÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿøþøLø–ùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿø–ÿ øÔùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÿùÕÿ ø&ùðúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿùðø&øMùüúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿùþøMúxúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúÿúxû–ûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿû–ÿú¢ûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿú¢ÿÿú¬ûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿûÿú¬ÿÿû£üÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿû¢ÿÿû”üÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿû”ÿüsûýüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿûýüsûNûñüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿüÿûñ ûO!ÿ&üÓýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿýÿüÓ!ÿ&ÿ ý– üþ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ üþ ý–ÿ !ûM üå ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ üå!ûL"ÿý˜ üý ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ ýÿ üýý˜"ÿ ÿ7 ýÇ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ ýÇÿ8ÿ ÿV ý× þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ ý× ÿVÿÿ!ÿ\ýÒ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿýÒ!ÿ\ÿÿ ÿG ý¶ ýý þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ þÿ ýý ý¶ ÿGÿ"ÿ!ý� ýÚ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ!þÿ ýÚ!ý�"ÿþ2 ÿ†!þÎ!ÿþ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿþ!þÎ ÿ…þ2ÿ!þ[!ÿ—!þÏ ÿú!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ!ÿÿ ÿú!þÏ!ÿ—!þ[ÿ33ÿ!ÿ."ÿY!ÿ{ ÿœ þº þÒ ÿâ!ÿî ÿó!ÿÿ!ÿÿ ÿó!ÿî ÿá!þÎ!ÿ¸ ÿœ!ÿ{"ÿY!ÿ.33ÿ‰PNG  IHDR\r¨fsRGBÙÉ,%fIDATxí] tÕyþïìJ»zù!ÙB~H²M0! ·ÁÆ„`0 í¡ ¶!æÑ$„†$ä´iB MÛ“„“ò:IL�¤áÀ& ÍI‹llÓ˜@À€°%?„,ù­Ç®´»sûÿ+�½–W«Ù�{çµÿ=g5£™ûøï÷ßïŸÿ¾f80Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ#À0Œ€O>•‹Å*9cF¤�VˆF[@B3þ¦e†9�Œ‰ äD<�c¶Uø‹á¯zTøÿ þ R0àù0�n<îùu@:ÝQs›Ø¹31*þ7`°�Âäñ­ÍHÂSÄ‘Ð'#¡ç ø­økô¨ïc¹í(Ó{h0Þ�o¢L¯‹÷·ux$[$lŠÌ­è²qn™…HôH®�a¹Åßd·ÊwXÎ>Lÿ{”ý”}#˜‘ ¢«­Çažœ\l4€ZJ–röì:t¾—`Ú%øD= Ÿ¦'áyXô#±*o¡wð"Öi-vBÖŠ­[–‚§Q‹@X˜ZT\È�Mͧ‚Œœ�OÊó±È3ðu¡h?‘F!^Fïà× 2¿†ÎŽ×°!"$ÜF€ €‹ˆgI?½y@d9Hy)=ÃÅâý\ÔNÄc øÛÕ±‘��{ªbàÖ²©ù4ŒËìeX\³ E¹ˆ4”k 0�¯¹"A�� €&-eûôIy6æk°ˆS5öl©kpÄÅC9§ Ø”ÐdÃɵPÑÿe)�žøSJÈ‚“¨C`¯p;¤j~,zÞèS—myäÄ =g×Üg"×IßÀdS‹HÊQõ#Ð��ùˆ¤ïæ= öÁf`+ gG¡qÛµHü¢å;6’p¯�Љ�úfèj¹WÀ ´àˆC؇nɦÙK¤4€§'*ßöo S^/vw<ç/±ü% €1ô!gÌ™+3™Ûp„ÿâ1¢ðå € üI‰Ü v¾×q]‘ À(Èåܹ1³?õM½oUŽºÍÿ�!ôån3j*nmmôÎ#°Èi èîŸiJó>¼tbÎe> o¸Ftn]ž*9« ÄONš]gV™ÿ†ûѾ€ÿ2&ÎÚ”ßSãX.Üm$Œ›Ä~Þ’\ö�=ÕØ¼Øâ~lµ3ýÞrY>¥ì0¥¼º¢«ãy¥¹,3#`ò*Wž|re¦±åV$ÿZ̔ɯ ÙÀd4“t�mà ó+#µbAËÒ�M­'š¦ù0b9_1žœ]0ØlÆJѹíí`Š_ºÔeç¤�Ÿu%’Ÿö™3ùKo7aK9ŸÚ¶�+ÂV±ñêS6¹y™Æ=ßG@¾4(|¿¬¸3ÒUÿ6§Ê…²0¸†z&Y�£üôÞ=Œ@a$¬�dÌåbώ΃7ô Õ4ëLaŠ5¨*¯Þ�üVRž5è’&,­èîØæê‡z =­e’ÿY&˜›°¶º5 žK7ÎZ®­dZ�™Ör#¾nûĘ>‡Å�(l;âÑLã,Úþʺ.nÞ‰fŽo^…ý}z'F@ RÜÙÝþ%$LZM†þÈ%T@¶´Ä3I|·<Àþ€—¥â™H–‹öödXê@ïçˈøS¨˜s⮇°6b&/ Ë{Cah3O:žùOóù�0ái]t0rA6ÞȦ¦út:ú?¸Ãë´p¶5®•/�ðj´"óI±k×^_ÊgS¨@€ì“¿2ý¬+/뵩pަ�ßE‡¢K‚ì Öà“¿:�‰Ò?¯îSÚ¦9³"X�¤?):;ŠLç‹è�\@£ýHþgA&¿/šQY ±ÛâÓô*¹ ¢8@ŸáJ'ÌÇìs‚8ËJÎM÷­¦¶´Ú® 0ÔØ|~Kþº Íò–B¬ªìêøb�j( 5mÖ�Lþ 5¯2“LÙ6 jƜڼRù b™ÔXTuà·bÅ•±îzã”ïC È”šÚ¼?½ý¢Éïé÷}“bü�yVåî�›üކï @ý̦¨›QPÞÏï÷ÖÄòF»Ò&̯ñùKE|=@oî­0ä&ÿávÅ'A€Úl…«© ûYd_€TÏ¡ïa—ŸçúýÜ‚X¶B,Jíé½£P¯ïù¶ 04uÖUäý^Äå3N ®®ìÞþ€Ó|t¤÷¥œÒ2"™ßa…ktTšód\F _š™ùñ=�¾ûî€ïºÙ>S4ó*ˆÉïr+åâ´!PƒŸ(Ø�ã¾3C{~÷õóî>mm‘3ölÓØ¶¿åIÙ õU Ñ8}±aô­>Ï “øÀ `\µŒ³ÏÑÒœ…N¶o¹þeÈüäg ßy7{�ÿøŸëÏ4 sIU×®çý‚žo ííЦþˆëü¼ùPgED¾õÏùÌUh~ư?¦ ™ÿ|2ÿú€TY|8Æ/ít|9‚¢? ;*3±‰}m‡Æ¯”þ¾1Éúéw�Þlò©¬€ŠŸßÆY·…¸¹a¤Vþ @_Ÿ­øI355Ãú[xº­‚Ì—ÖAêr4ôCq)WÅ÷ìòŦ¡1u¶pT)Ñ0ëL$ÿ”eXdFÑoý‹mòSÖ6´ŠG¨­-²$Ž®"ÿ£fub7oããgBôÛÿj7ºúxØÖ³m^}ÎEçè¹@/R<˜| %ŸW´ô ˆO€ÊðÅB‘â·r››þoøIž€M”�…EþÓÿ¼øÄ™ �}È·=ÓÙ«‹Ÿ*ÚÚ‹^] Ï=€äÁÄ7±:ž�Ÿ`Œ\…_„.�ü”ÖÀ†Çž!áApB~užÕ½¢�9o¤í{'–ì©H6Ì8WI}ÝKh´ßI`#à½Ó:%ÿH±Nu_¢ô‡“QÛ'¾àÁ‰§çûoÃ]S1üá©7?ÑÜìvËHðªeS®"ò“ÒI÷ã#8n€2ðÌ$§5-‘.r »¯’’¨ä�A½:AòWÒ€_)}þ|’¥=šÈ‘…8@\ȹäê©'­nTšÆ÷]­é…ÉŽŽ1î™�@ñ˜ÙN¡šüX°Ü±Ëvñ:#ˆ:Ë+oO À`ýôkðÝ~ÂjÁÛŸù‹caSÒõa#p?îdÀ­ ×-4åWWã“ÿuOþÍš/¾ä}hpÊôÏ—Ôà&r}PΘQ•LÊ6”»É¡ìJ’‹?±ß–6 XHsÓ+0t.6á)ÂB0��žü�‘Ûÿ±ñãWu~b È-ï“JgÜÎx\Ì;w&t2:o×=€D2ûJo_�ŸÀ�o¿™ŸÑ»FÕj°ôÔâÅBpÕE~‰tî#òHMÈ ×WºêÐ'¼™èV¬ìTª±o.Ž=ú_¤\$òÙ(W$LÇ“%1×½ ƒ+Vz·xl4º«ÄÐÑÓãÚsW=€d:ú¬»¿ÈOÊÀ5áƒW}ˆ¬ªy1öŠƒU'ùÉ _ùY?’Ÿ0šš4+¯/,g±]ódCCmBVv ¸“�‰¬15ÎãY•÷7QdölêM7ùýï�íC/ Ù-/À5 ±Ï`ð/ù©}‹ëì Ø$«êhL~BtòWT£›7?W @vŽSÂßç•ÀoÙx£&ÿÜMùU·Ö¸Ò˜<}9~Ù‡¾è˜ ²Ýœ~Z xú 07ÒÀà• yŠp¸= ùã�á ,c}˜BŠÕûv­>|AÓ‰;€�Áxúç€Lä$’YUjè1\ÒJF¦ì“?oÀæWóÞP|Q»HLj:e^ XnW²c# f&!€OáN¡8Žïi7¦×8–Òà ØhŸÉ?.°npGëÀþ‰-+#C´ã¢zÜÚú<� (T“ß.˜‰¡LeÓ¤íì&(6žV ú4ŽfVãÏë}׎Ë7qL ‰cMc´Í•– ‡«Bu MR1M~¤Òéª� ºWE*–ÔÅÄ×j„Ov8@1q­î€#)ƒ�A1B~ª«ê@: ãÌ rèZÕXåæ§Íô×7�†ïø?5·°0œ³(M‹LþÒpC�’åR‰ÉÇK¦ÍH.Í~ôQûúeo/n&¹BKwà°'€O˰à'p??¹ýÚžü¨ ÒIXð]�,—Æcr‰÷µìcáà¢\V¢L�H–õt$LÖ dŸü«ÖKþÐ/¨’ˆ9¥žZfNž¶Àcƒzqý—#‘”V±ézº%ééÐNä�k$�±)¶%›`.¬Û·{c±éÆ‹¯Å@ò¯¯à°Ü'rRCÔ50HÆ%ˆž“_m ×Å)å`ÄU¹Tmõý��£õÃä?Eÿié(7õMÅ ÏPTéÀdÃF`XUL~mMvú·” Üd2ðI¥(³r7L~½�5#å§T— |ðФF|×2Р² Ôg¯Ò8ø•X¾ÒwƒDþª5?×6êÇ:{ÐÀ×·¿ËÞ7ìm §Ôì›4©. ±,»Âfù¡�VNF€ÉïZ3N§a°~òþýU•¨´ P!bäþ—=ùI9Ô §–®Ùò0ü0;ÀäWEE[ùDG8f+²�HJ €)ál;…–Kœ°&¿û-9¶Xe©J ~îXý‹õUÖÖƒ¼Âj˜ü4&,9v†Ê’•�Pÿ?±}(œR£¢²²^æEîzµÆ�Á‰üÕüܬ‹—m¢Ä²Í NV5 Œ¬§×~)˯Dp|›Œ<jغÆȸ¸1&Àä÷¼‰ȵ…ª¤PGXS.½‹‰ÿÇu‘9; iÇÚÀ²O£ؤJ‡ó¡½Õ«qÙ°Æ]„´«¯z�®�=›²Ø„yW_n[ptnJeÝuÔ u¸U‡ð$ë ,#O@‡8=KPž@öÉÿ8ÍóŸ®\+„ÅbBØp°ƒ€:®)4ð;¢sœá)BjðA1L~ßµZe\S2Ø×ÐИNïû&Ÿ ”D—:ªá©šVôTµÈïg}®f-âE+Ìãk{zºœf®ÄH‰;¤Ó[Ý"«ê@„¥þº“î“_µVÔå§ŠsJ €À DÝúÕ0ùKT¨KÉ�sJºJ ¾¬à—êÊbüf˜üAhfj8§d à@ÝTzýW ?ÿå'UgÇp¤][ûÒO�;Òž%ÿ/ñT?éÄDzlœx°ÛñzUà}œñnô1X��Œ@�F#Ð_Àùk4’¿PÙ�Q�OEâv¡8Þ©8Ž»;f̨bò;UÑôÔ ¢è$ã’o`�ÉDA8#Î÷œÊêØTÈ´8‚Ó�€ÛF€É4þAùO÷ÃH·° É™5—\®Ý`ò©U-«a¤f}¥øÿ¢¥øb9…d?ôk6Üç·£ ŸÆÆ,§’E�f€/lÀ9Iš #ЇF VÃàœŽÙ‚�Æ/ú 6j‚ªì²EîMuZiÇÀ9á êô-½ �À£]¨~3ŽJÑÓˆüøYHÞØ£Ö¼y™“óÞ(â¢ã.¾¡dJåqÔö."˜_“ß]Í ÷ê�–èØàÞ¶§Bpz{øÙ0ùíéPm,éØ8î ÷ïØ Q J¸s##Ð{Ée0ÁGÝ"/»ý^4<ÇÜSà°p[ó–ðCw€Éï¶ö�*Ïq÷Û¹;J$þÇü`˜ü®¨º@!"Rভ[Î €„Z[%q$åxi˜üÊÕYB†ÒñÃ×ñ þÞ õ½(9�Ô§* ­æ›ðÄc®MfÉ�ã<Õ§Jƒ%çspJ%§Æ„Ž Àž õ¼ À‰¥%#pœ F€ÈˆÉ¯Hk޳é«ïÝ3ÁI.λNJç´Ê îÀ¡¥+´®`ò+S—ªŒ{ÞlT©‚óaˆ€*-ŸÈnthòq¸þ ßûòÉÄ×´#àøC * €c!´ÃòÜ ¿! _3N¥p<Ø3¡þ QçTN_ù+\Þ$”âÁÀÒ¦6Õî†Þ=Ž^ÅçÜÔNÙ‰uš®¶^œ›²äò1¨XèÍûXS6âÀ#OÚÑ•¦8Ûúö6;É[A@:€Ó–†€×ä'©Éð÷� ”¦A©¤pÜpn„ا *œEø�ü–¸l,$<8r¯ÓRüú5§Z("½ŸÈo‰ÍFÀBÂÝ£ î97=´�ú1ZíçaŸ¿Pó¶Œàw ¸-èo #ï)¤;÷Etì†Ø´ÜãГ¿Î§ä·tCF ŽÇ,8´‘{~0Îû!Ú‘ xA ¿1 ýGÒq÷Ûñ�ð¥ =üRP}ÊÖI~šÆ£@¤U,#pðâ¼cP%°£ò2…ìu©è�wLhç>Ÿž>õùë~¹Z9A©•ù A\´<{^tË'AÖ`—…Çô´ âœaÂöqÔ0îmÇ míã–ŠF€ÖÛOÔL~ÚÏO»u�‰hxï@Ñê·• e[mE,ɱÈôUµÈŸo•€@–üšü¬'îË<Ø” $$QÁ=Ç`&ìL ]>À#"¸M~ 46�9v�pÏ‘ÀŽ @¶t펤àÄÃ0’Ûïâ“4ìlF#âãÿqN‰0¥|‡� öÐ`™NòïÇ?“úüئ ýLدq`�êȃ…uPH?Ö=äÜ»*Ì“`˜âuÀu‰ü+ šê›„ïóS=G $õòÆ,¡e/¾»Õ¦Žh|`ÿE˲iU4²Ü<¨ŽTWª³]y8Þ±íÊ䜂 Ä€T KYfA}þIOâTßjçâ Ì,ù/^^Ò\¼ìCOàbMFëJuæÙGMþŽR�$VbDØ”  ¿’ߪ  ÿUqÎñ A,hºª'Ѫ$þP¨È8G¿“?W|Q‹]”'×øÎKÉ•±ÌÎ{öOUQg% "¥øƒ5@ÁGă0ã7<à§ÇíÂ>ÿ>tûí ø�%ßèë&vöaw€òV¨ë3»<08v{­âš*=(3ø‰‘—U æ|¬'¥†>?t‰}þñ0·º:ŒaÁcãi ç¾B®)3RÀúù4A%¿U6Þ‘kÊ¶ÊÆöMšT7˜ÌnOTfT¼…Yméb�ö¯}Oþe {ÝyC{vLà—�‡¢.jµìJnf,.&OÞ¿ÿ ŠÒ”‘•¾ ÏäÑJ˜ÈOÕËz]ªeL`¸;°3Ç"@SE~Ê]™ Ì$ÈõÇ Xd¯1À²ø ùÉOƒs&>ùÝÆ=;0¨Ùvn×Ëïå!“”¹ÿÄY¥3{�2å0Œ=Å&ktû‰ün¹ýùtJžÀ>�F€°cOàhä±ÏþüÑWœý§ÔÄâÆÿ¢8)g"…#uØÉoi‰�€…„+ÇôÇ”¦ÔŒôM6)“. • ù-õ°°�Ð~ܨ²ÿOÒ*5ÃÕÿ­Pnä·TÁFÀBBãQŠ_©Î]Ù4 %XguÝiÒ„ÍÖÿåt$òOÑ8=¶ûÛ^öùíè’¦§<õ mS„AÀÀN¥ÄÌo8øj)iÇJ£Üà(ªèŒ×mÇgŒUh¯3ù�h•�À,žíjJœ‰„¥‰ eAy€Äð¸2 �“ÿh%Qw`ï__¢m�yY„y9äÔÕä'ü”€¬R À×¾”G`òç×3�ü¸”|U§”w¨‚#Ý€mxÚ\r…��É?¾’¸;0>F6bt û߀5%¬¡ÎJX´JMç€ßðób…Ÿj}ÑŠÁ=š»a_1H\ÒA~2Ù¿}?ÂÏp÷©Ë¶ªV›¦¸w$øõï […`æfõ@]bW a\ƒ+ŒOɽÇçv¯KiÞ…Áçúvkìv<6. Þó%—ãÖ³KðfŠ lØ�êÀå©� 0™ )þì›fM²Ð pnöظŽ,�`®Àë—àoFîý2>߉uGÒ«±o¿%BÅÁ ظ�rž2†�AÅ©&ˆóÑ.à/û•ãhž¨a¼D tð�ò×þðIÿ“Þ5³ð÷cJ¥1ƒ T.Aƒp*å,ŒpÒ1‘‚}á-4z/"áŸ�ÀÐZîÓûC™lü¡‡c¤hƒÚ©iH-ÀÍH§ã“â£x È¢#±eý=ʼ 7ãlŠBÅÆ¹Ð×}L%ù‚ç°ð\öx â-äGðG“páÌE’µâqšý\”ÆÜ�D߆9¶áï |ÓÆ›øûÃI�lWZ g¦ 6Ú u/cÚ£�„ÊVì>´`©øÓðÉ; •;ÿŸ8ò«Ãc5z1¼W‹çøËtÍ ƒôÞ;�= O»Ñù¼ß�éˆìøƒvtãÛã0´�×Ü#F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€P…ÀÿÆGP únIEND®B`‚MEGAcmd-2.5.2_Linux/build/installer/web_ico.ico000066400000000000000000005440051516543156300213140ustar00rootroot00000000000000 G¤†€€ (ͤ`` ¨”õ¬@@ (B�A00 ¨%Ń  ¨m© ˆ º h�ÉPNG  IHDR\r¨f¤IDATxÚì½xÇ‘(\3›±È9'‚Áœ“dåì Y¶,+Ÿ-Ëö»_~þÞýç³}çpò�}Áw¾Óù9ÊI’•­œ¨œ(Š)f‚$H$A"ç°yw^WÍôlï`6 � E?b'ôÌôôtUW. fafáœi¦;0 ³0 3³`fá†Y0 ³pÃ,˜…Y8‡a–ÌÂ,œÃ0KfaÎa˜%³0 ç0Ì€Y˜…sf À,ÌÂ9 ³`fá†Y0 ³pÃ,˜…Y8‡a–ÌÂ,œÃ0KfaÎa˜%#ø¡¢È öí³¸Ýr`Èi ¸‚ÙA°f„2,Š”>êóºÙ¯3¬D\á`Pf_ßN*°Øl‹${Ã’âKwºÆØï(€uÄ¡a»×6hÏò…{ÆÆ"û,Ý#I‘™~×Y˜˜%g!øTMQçL�ý¹³`†à�›ô÷\ðùÎøÆæÙ¬ÎR«ÃžcA–—xá­l?ÌVÙ;¶²²P{ç „a,è0 µù9P–“©²ü <~?t �AïÈô{ý0âñ'a$ÈpÙ ÍnO È®Ñó3" ª…óú–Q@N�„0û ùÁ�¯Ýép´ºœïåä¼~ûêù{gú›œ‹0KN#üáƒ}sdžú®ø½W�z‡Õ–ka˜/Y¬ª¬ÎÚ¸.,/†t‡œv+ 3ÞÝÖÃ>Cʬ�S Õ¹t?ɰ‹\B÷ðé„�¼>?k)Ñ?Cô »��=Ý倜4ä¤;Á¦�P^Þ}ˆ~Ç�qµ×ˆ€a0# ж¯„¡a”À öÛíöf»ÍµÁ�“÷Ô—×-84Óßê\�YpŠá�oíÈö|!äßûɲ#Óf·8$«U|D\DŠ¢Ì X[[6vn`Ô[Ž´A÷ˆ ÒÓ!Íi#Ø6Çí„ú¢°Ú,1Ï’4V¿µ»^Þ× Nv‡Ã 5¹9ÐX–Ù.7È&+º´õÃ;[ÁNÏ4œ4“s㈂ AàþUB!ÂþHÄ?l±8÷X–Ç2]9�éâeƒ3ý ?Î0KN¼ÔÜì8~l`¹×3|W0¾ŠaP¾Ýf³É¤ç€ˆ‹ÈŒ«qÿ¨F ?â 0ÄOƒKæÏ�üŒ´qí9DõŒŽA7ûßËV}¼¾Ûã»_Mn.,©,¤ûê ”„â 0ùå}‡™ÁîÃúÌOaSDlE¸,fÕW’‹ãŽKãÏG1ƒAˆDºmë«v‡ýw5µ%]S_ïŸéoûqƒY0�ððî–¢Þã­×±É{›ÙçÉŒ…·Zm:{ÏWzY‰*ð,‰”t~&e¸ f2r$ åÙY°˜ÉûVI]åR?ºu±ýa�t„ñ3ÝÂö­Œ…ÏfœAyNTæe±ßLFl{I5¢^áþv2QÁFúq•Wð}¸‰�£ë…}N”ø¢€~Ü„ðãaF Â� ž{ßa³=˜_YóÌÍ‹çtÍô·þ¸À,˜¸KS}OGû J8pCø¹+Cmµ·rkÄz™.;¬¨,…·#VýÚ% úê.iÈ@Dƒý—µ9ÐÙMl½vÇòÝ.˜“Ÿ åy��+½�ÃWbžoÎþKãv$xn×AðB ›] $±ˆ„Á rK0^ˆÙ ?‡"B­ ÁC’Å~AIéw¬™ß|Z?ôÇf Àà÷ì\Ó×Ñu[³o¶Y%ÆvKÚŠ)kˆ‡­H2!{ŽËÉdë!BÞʼlXQU £¼sà8µm(ʃ9…¹¤ü£kY»!�^ÙÛý^/d¦9ÀÆÖ{Ôö#Z¬`Â\v�ŽN±?ú=R ÷‰ èdâÄ›û[Á"�¿žsãüâéâº9 ÛZ[$�耮€, ŒÃþÆ÷<œWRôÄ�ë–n™Ñ‰pÃ,˜<¸uÏE';o�°ÿZ«ÃY€l¾¤yÜñ©.kˆŸí¶Ccqg¤ÃKM‡!ÀVUD`D²ÚÂXTR@ £Þ=t”„ ”eg¼’<"ï:vFTÒ¶úGýB ! ØêßPZ•Œí‡ü\«O˜–àeˆMQÛꂤ~§ù8t �’â0¢Hã8ˆxÜEŒ1 Ý‹YåÕ‹ÔöJT¤0ÚÇsR¬È@~¡ ü¾«Åþ\VQáŸ!Ø8ÓsãlƒY�:Hïh½ªùø‰Û{‡†.t¸œ%²M�¥‘„Õ^%cÇí°¸¼г3bÎêý¾cpÞn>Æ&?@6ã üá8¢ã÷C` 3$vÚ¬$ËÛÐÇWŠ"Zˆýx~ð±¶_½pØÙyBÛ9QHÀÐýLt‚x§Q_žÙÝÌPô|Dh£Ð�X×ðã|%‡Ø_<Ç•‹êý…c ­üÚ}©_x½ÞV‹`‚o‡Íåx)7¿øþjÝâÝ3=YΘ%ÉAznÛ¶†WÆï\vûJ—ÃîØÛÑ'F{ÌWN)FÑG±lr–³•|iEcÿ]$ÓsBàcòì³;ÑÆÒ}ìÁm¤7P@u·G¤aL.»F¶J1šwÜÀ¹ +PW”k«Ëè°Ú&*a§fðã÷ÿªïÑ7ê…çp @ƒ@ØæÄAn$J|$‰uÑ!b*”�¢Qä"œÈh„@îa„À;:vÌåv?éJÏþ—¯]¼²w&&ÌÙ³ üßÇO_²`ñŸ2lÎOº�6çî“]°¿³Ÿ±â2Øív I]C|2–kÛ8!-l5ïóÐ ]Çäôõµå�›žF¬û[÷�Ÿ!?#(ŒˆXT6y´©Ž9ŸôÆÅIŽ¢­óavÙµË M0ÕÑ5S!\ `Þ}²v´uF € ¹7r*âGŸÈ•‡aE8/à»ÎhJA�ýçme �p>Ƈ@kǯAòù&4;23·Ðvþ_|±:­ç,‚Y`òë;÷ÿŸ‚t×l²œÑÜÝ'íbÈ€è�ò:²êˆà²&÷ëŠ66ù ³2 ¾8Jëß3ê�íÇÚ¡µw�ÌuµŒâ÷�y!Ãë}‡HÏWÏñ»³²òíÊÜlXW[¦­´¼m|ä—â|nÂ3Yk¡ xaÄËïiƒQo69æ¹f ˜Zº­hÔYûH‚{˜˜±c#W Z‚A¢g¿?ìW¬‘&—3ý»ß¸â¼WNÅD9Ûa–Ä‚ô⦭ s33.ÌN_`³Y¥ »Cûи6†°ÊVB|Y–õÕÊÊVàªÜ,˜[”ËØ}GTæg¿èÊûüîCb²?Úúm2#"6´¯³ûÈÜÔ§>œ“ƒˆá³H’4ùBliý䢹�å²k–~±2áØ‘ xòFÓQ8ÜÓ§º ;mQQRç*D¢`äÔóÚob`4*)]� ‚×ï:ì¶?çå|çöó–vOu’|œ`–hðÇ·ÞÊ®+(þi–Ëu[–Ûé`k<´ô À[�1¤¶�M²€›±ìùÙ y%ÒÚã²ívZá²úZp:¬1Ü€¤ÙéŸÚÖÄ�* v‹¬NjY&\“c¼xãDúżOYN|¢®R¼&Eôçà=äh?� Œ0yº¥{zƒNHe"¨¿ß†#Â9í7çW��ˆâƒv.@À<âÎMÿI~}ÕóaÉ*Ì?ñíEóËó®+*X(1¤…"ÐÔÞÈö;ì2¤¥ÃÒªb(ÎÊ„cýƒŒ5>vÉ n†ô—Í›n\…ÄçƒúaëI8Ò=y™i0ÀXê© =œÐå ùQ§@ }öŸn#¤" v�¿I„ñÞo:ÝÃ#ª•c&‰AØu¬FCA2éUdgÂ.¶bf²6w]°L`T®ÂVvMK_¿i��g€“6—Ýeu)ä¤9á™!Â&ðu ë©ï“]ý¥˜ ƒ�ÐÐ�×ÙûwŽŒ�KòdA$" …ñ)Ʊ81!Gؽ•D"èxGD%!y2' �ßëïugºÿëî+.øÉ¤_ò,„s…H¿|òÉ‚ nÌMs×±UŸqéš ¼C¹rp²Y5»¾"«vy¶�.»Ïì:9Œý­`Á¢òbÈs9é¦ï1–þxß¹îbª+ »gVš nX1?ÆhOῚXÐÃd÷Wö»U# 8Y ¦æªÊË…ù%ùÄúodœÊåóæ1 …Ý&ÎêÏqGŽ=¦ËñÔ/óh@/ãTÞj: mŒøa #~b_#š¶QÜ7nÛAuÞ‰c[mK5\H*Ò‹DÂhàq¢~ FI¨Ôý!¿Í"=ã,Îúò×V®ôœúi9óp.éå>útQnî¹Y®,4ïqä¦'›EÒÓgKÚ>?ÿAKô3¶{uM9”0œæš¶¶ö Á–£'õ‰Ž×¡ßþµ‹æªÖÝ`A'OîÜO+‚ˆ(f“ À°7Ì�QeÇ?½¸jó²i›&5¹ r0?&‚vLâçÔxdµo¼ ¿Fëó®¶.x«ù88Ø»f8D°­‘ØßT]|W³ã‰“q²Æ¾«Û»¯ë¢ýž\”‘0( É2ÀÏi"AÐëcôAÙVZ˜óµ›Ï[½&&U�uðq'ò«Ûv¿"/ë{i.§UfË%9ßP4ž5ÙiŽ=´/«¸ªn[ wØ.Õß_Cža&ƒ¿~ zÆ<�åt‘£ êÆYÓ²|jáÜñ͉•#'áxÿéÌ&¼ˆT8IÃáÝ{ai!¬¨.6Dþ™¬þ"ˆhYDpm•5úAvÿQ_�\—ß8Ø ]#Ȱ;ÀÍ(€M#ˆfÄÊŒD;d"âfv‰ÍÚ‹÷Œ UÞG'¬L§N2®Œ¿¯.€F ¢¡Ì8¶ �oˆÐ¸ «öœüL¨ÎÉ ïøþ5k–ýb?Vð±%÷Þ{¯cÉE—ÿ®8+óæ4'c^5o6úUÔ™¨­—,’ÅGœ�ŒTÑ€Í<Ï'Ý–cm°åp;¸œ6pÛlä'Ï•}ˆ¤™®4¸fAmì 2õ–£í€1èT„ˆ•h%åÛ8Ñó3Òá’ú*­#ë¯Îf:dºLÅA~‰_˹/ì>û:º!³’ r2«LÄ-�ÏÅ#"$cóÅs\qh$(Æ6VöB Ë ¡®8‡¾z_îïì†ÖÞa­M”ˆÜ@D‰õÀ6è­9·0—åƒÇŒœzðñ_Þ{×oûÛ | ácI~ø›ß¤]rÞ…/Væf]$“ç�¬¯ìjÐ ÄTÍ!×<ôpÕÇ]m»Ø O¹íÙLñáC†¼h#Ow0äwÙÔû Èb³c.ª¯0ØÖ%"�~´Ø=31Àª3d'9.Tèî{ic ¹›­þ|_tÕEDP¸¿pžŽhç¸ê�>¾½‰�ÞÂÆÇfQ\ ’AöçÇâ‰ñÞK<—ŒcPÇ@‰û쪼†¬ä§ ŽCÔtèe߬©³Žô ¨¬¿€ô2Q@' \$°ïá +ÐÁïÖÚÝÿÖýO?~Íý÷Ü㛡)}ÊàcGî{ì±ÜƋުÈÏ]LÊ<)V¦�½—%Ùt‘ÿ@g?¼ÙÜ ^_dMY‡áºN‡º2ºlD1b&+rõùŒMÏ×ÇÙ6uô�f'gà˜~'8ös Ôåç0¢’NÇÈÇ@ÑÅwSÇ£v_N@úãã/5.©ÿ $+³:.òkÙxè~|Y˲Ãþí€ÍGÚ™l?i;¥Äæì=þ¢"L%âF (+–W”@†Ã¦%ƒ`b‡øHïã$:®®¸-+/†yŹúyŰڛÉþ‰�70cpžæ¹ˆà †áÃcí°·½²œ°NÀÉg¦€L¦zÃ’yúq!͈.°Kšt¯S:±îQ´õ ÁÉÁQðC㜇¡ ¬¯.‡²¼ 2ŠD £wèè[6®þ‡;ïì™éq˜.ø¸éÏ/¼P9·®aKQvF‘,"?WöY¢Z~‘0`\þ¾ö^ØÞÖEf¶‹™œ=·0—­A&«÷’@–͇ µ�µ]^Y³rr/üvcK%‰çˆÅ8ÖT—A}QNôžñ²ëòÐGBp56¶ï‚WšŽÀ�ç-%“ú<43ÖØÅXgÔò£§ß$kˆžvÀq/ÉtÃEu•ÂÊ?ÞÇ@' <‡!D}ð2LxÒ68ÇQö0b€—úØË8¹ååEše ¢•9S‰@ÏàH׿íû–ãæëÚgz¦Î’Ožø~ýÔSµ«-ù0/Ã�Kš~Žì&È�ç:‡Æ`SË ZéÇüa øA�÷ók˜L™¥ ŒOn?A’?Õa"ŘÍC¿j2bˆ„A9s rL;6àñQì¿ñü�×/ì=L©¼ÍW&Ìò唨©‹ÿUÌ�?ºMØ¡À«MǘøÑC}G,÷ê»Xlà´É´òËg öƒê™¸ª²Øøˆ.¾D, cšw ‡}�·…QOˆ8€&V\Îæ‚VL‰@ßÈXßk›7-ýÎm·�˜é±˜*œ=_=NÿûسÕË—6~”Ÿ•™“ùQaR°ñPì9ÙCá»vŒï—,d¸b^Õ×ã«6*ûÞ¶Ò]vB”9××”CMNúŽ1vÚ=Œ;(cì–Ë1®cÏîA­z[©2àKkÅœkg«ÎÆ#'Mëî!`–61Ó˜X1¯(×Àî›ä÷†CðÔ΃”Ü=mV‰”›HLp[ÕðŸ}SÇçú% dò#–?2áÕmE „Ú¯U¤êž�ì˜Ï„÷#…( +§�ÖESªÉU‘à÷ïxýÃ-‹Ïv"pö}}~ø¿Éÿäg.Û_˜éÎ7"¿è܃È� .Þa8ľc[ý0ØW`\„ƒìX�±Ý1ö?‹M*ÛÆ �¦Î>H×¢ùBl²`AÎÂŒ4¨ÍË�ú’<Š ˆ¯h¥èA„¯ž¯º·3¹óÝÃÇ¡st ²�NŠä�Db2ÍëäX0£lR–g¥Ã4ÏB#ˆýŠãeþýðæ¡£ ùí¤¿˜hÒ™Æ$£ôjL$»ai£6ѱ0ËY� àû¾‹J  ˆ}S<ÖÞ?DaϘÂýÊùs( šû ÀS˜kD gx´÷©§^­ÿ×ïþõÀL�Ódáì›Z¿÷Ì«%�óª>*ËÎ*æÈÏmüùñ}xcÿ1裂›hã¶c=Y3ƒKjÞº1_�Xc8B2?Úé±½C³ Óˆ+¦öòƒ°¦ªΟS·ƒ;Ûº`og7E^ÖXM&ÄcýÃ�nW‹~:÷/°eôËæÕR82öÕ¢Ùñâ€ñÈOn2ìÅþhŸîÈ“ t6Ùé&S½>Þ½-ª²8ƒÉÿs«L£±:€a_@ç„‘Ó~%xv×8ÔÕÙŒƒ+ÊtÃIö}2]N¸~YqFjíñŨBr<Òˆ@ûÐP禷,ùÖí·Ÿ•™†ÎF ýáé å� ÕKr³+ã­üøÑPÎßÕÞKlt:¦Ö¶YAÃgÍ2ôå†�X=‰JmI1ˆÃCzÑñ3ü¸ì¸iÅ‚¸�l`«Ióqšp¸’ão{¾Ãj!¯A^ñÇ Q°4×¥ 5QóŸÉD7ÑÄöÀ´â/ïQ ЏµB#"˜={²`2Ÿìc6a=:{/¬¦„ÊW3…{î{o;¬ª.… ê+Á&XgxÛ1žÞy€€ŒZRñUœK+ aQYÍ¡ˆF#7 é�t {cûGkþáæ›Ïº’egø¯?þ1{Ūõ›+ó³$ùÉ)GCþæ®^&Ï� ”Ž5âaOòôSù±p‡¤¥é'�«f¬þÉárÅ�™„ìwØ„;Ö,¢¼è;€;%Y*Ò¢ãГ;�§`X�ED|Ì߸ïa\ÿ¬®*1]ÙŒyþc zHÆ‹ÏF§–¬4»^ß�·‘+ÄCPãµÆzÜ8@¼zñP¢çá;^·d9E‰M�c‚«ô#îecáe„Ü —7Ö@M^V¬‚�]ƒ%Ô·;©ffÇì6†<¸iµJ܉íˆ@Œ8ÀM„ì_[ßàÁ7Þ~}å=wß=:ý³þÔÁÙF¬oíÜ÷NMqÞúxÈ�YkTÙݦºÛZ­ J’!ÞEŠ93‘Ù/–侤¡Š¦ ®&­=ýÐ:8¬w³å.«(†åE´ÿ6“í79KÊ á“ ê`Gl>ÖÎú`1-Ì‘¹0_@¶ËŸZX§×þ&[dq,0lùù½‡À!YÈ—Áf�:8™í€Xd6î¯3nóö©Þ˸mñ ™ Ò-g«}ANB‚ÈáäÀ¼¾ÿÕ_ÀyðWš2ÖHð[îïì…£½ý°²ªŒŠ«FÈMPCpÆ(Z"®4#G:º7^º|ñÅì¶gMò³‰XÞܹ÷‰Êüìël»¤Úò�sHÙ'«©<š»{aëÑ&ë;t� ke»È^‰²õâ@èÊa¶r^>#®˜Œ0–qÃ�š˜=wÄçg²h5,,Ƀ#}ƒðʾ£Ôî¦U�ðèÖýàrZcÊk§ ÈæúBøÒª±1ÿñˆ€�¿ï›v“˜‚ÊK‹àØcT„™½wªmŒÛÆëÄIï½Íž%Åi¯¥:¤jÅW/¨U¹7.ÅA~òîcw{v×aòïh(Ê…U•ÅâHF·µ¹áñáPW]Iòs¤×‘]V÷•°¢¥*�¨ÊGR$”–ξǯ\µäªïrÆÃÙBäW¶íþIe^η\.›LŽ>šÒ�{ôm™Llïi#y[WŽñß8È/)™ñÜJÓóö·2¶Ò§N&«£Mÿ"Ö6Ûeƒwµ‘BÑÊn`“$ÝnÓ‹kÆ›Üf€jÔb+Q\9¯Zí—îÞ¦Œ7(Ñ÷{ô£$rœJ¯>ñÍÃtÞ7Ïí"߈tö]É|IŒü´BLj‡D/äÊr\öñ÷Ö¸]Ôâ F%EóÐV~¾âó}ô «½ãÖôðy‘æ®Îfíꄳ Šðl ò3·Ü4·¼øþ4§ÃbáȲчjr ÛïöÀ‹l…¦(=[´ÂnL HœŒ•@×,˜C @ 2~…ÚÙÑ{úè"*�Q¿ÃGaÀë£@ B´Ê“GB´6 2c=›ôè›N� Î'_±ùh¿Ûp6|Z“÷£- ±(—h ¢éÀ€÷�ž„�'»!Ûi'Qðº%jˆ¶YžÂˆð,½ Ï å ‰€š&1¢ õJNÂŒx|þðöí7ÜvÙEÏÀ©£‹Ó6Þg2HÿóÀÕŸX{^Sv¦ÛÉ‘Ÿ<úP�§Å×ãvˆÉink"åæíÕw"+¿v°‰¶ˆM¸D¬+F ¾qð=‰"+~|»ÕBH/²Å“¼/Ææùð™Es( ˆ—›–ÞAJG^“�5.ñÇGmÝì'Å$œ­@Œð[_[F¾œøñÕâêVŽ�ÀÓ»›ò;ÈêR‘“ çÕ–émE£ÑÕZ GõAê•D}4"€mP$P´\ƒa• �ùžyù…¹÷|ó›g´£Ð=KPã¿vÝúýÅYYÅ< GæJ?I]ùõP_†Œè¨³ëdt° ÀãÿSE~+fù­*%óD$ïðôîZõqr!ðtÓ’ð ªW7ÑýàF³¡>9¼?²Ãw®[Óv˜É¯ÞÒD…J\6ë$Ÿxæùûg¹áÂ:Í×B·„*qåÎúû’>¶m?q�ømF!¸f~-”²ûñ›EL‰€¶­(zô˜ -œ˜ûp.�D�Ÿ-9‰ú¿sh¤ã©gŸjøé·¿=2ÓãÎd`}o×¾·‹s³ÖÛm6‰#?·÷ƒE šТåêzrçÍÔGiÔ�'ó�#È'æV€Ûb5„•<ÐØ?\�_;p4iôÜt„0)Ô±³⻢CÒ5‹k™Ø¡fF¥áóŒ(õ�y!Ýi?ëV³±Â÷2þúöU*¡‹ÆB˜ùD¨ ÞaSëIŠøCcã …àÆU “qGü>¦�C<`HÓ ˆ¶:O‰ƒ„ä¢<!¬×+cda0¨´õo¼dÙüKà µ œ©3E~éÃíÿR�—û·in—L,¿¬fó‘¸ ¦áÒÂx-‚Ë/"ýÍÇaЃ«¥J­üø±‹óaiy�é$çè#6‘€Ën‹)¥��)ûÛ{ÕÜ{Ó€ø1Ï%“Z*ð‚äÿŽú äDп}ýÓÓ¬`—Oíê?]„-DÈן]R\ànü‰ò h;}c~xý@+Å; 1A‹ r7¯šOIOÔë•q¬?mó|�B=Ý�û(†ÿØ0¬q‚‘gÌiîêþñuëÏL¥à™H¤G_û¢†êš ÙnŒÓã,¾àæK„ô<~2�ô“Õøþ]Ç;á`ÏÉã‰�Ïaèíâ²BJä�ù½~Æ]4³UÖJADØ,“qkkJa‡Çw˜rð  ñÚDˆF\ ‚˜²LF«ƒš«À"D=Æ»O¢û&CîTï•ê3øv¼öcLôYT’¯æAHJ £ß•þB¿ÇÛŽwÀ�ÇG\Òˆ7HÞ•ŸZ4Go‹rüž“½äÿ_ž›¥f�R¢b]Œb0ˆh&A¶¹Ù¹‚A�?°m×þOÜuýU[Î,¥à™F¤ûŸ{­¢¶®üýŠÜœr€(›¯»ùR§£DAÒL�²–Ïkûu�›��Ãfæ«è90¥÷ª͹Dd/ã(˜ö¶÷Á�®^&8ÉsÇñ|Ïï9ÂØó€ÎˆÑ~ñ…Ÿ3C cŸcÚs®@{3$2>?ò‰ý‹wM²w1»6¤B ð7Àˆ†i_»´N;)²êqˆ€àAíØ8ílë†C½T¡yÀïƒUå%°ºººFÆà•}­Ð56[õÑoâòyµÐX’G×FŒŠÁ8D€#;_à#aƒ>€ýkï8ñö»—ÿÃ�7žQÉDÎ4`}eÛîGk‹r¯·Qî~Ch¯ º k¡¬:1ÐÄ™4ó@ñï-ôÑ#ãWŽ l£ÿ.m¬&íA2ç0r0QW]}µæïn£Râƒù/¢ÅCØxHjÏ_”ËѸzf1¹ùâ†* ëÕ?´ˆübUJMn4úÝ«}RíjïaB7Ø0îÀ0±'ý�¦é>Óñœ©ô‘ùêùµ4æÏïk¡ÈK£Ü�4øŒm¿¤±ŠrôEO¨ˆÿüîfŠø»}í"R�ÆôUØ@1]³v«j^eDݭ˲3)ïB–˦ÿh¾ÅX Š)WnfÐç‘ à¢À˜ÇÞvðà uÍ•gŒÀ™B¤ÇÞzkNUIé–¢¬¬\S¹_(âc”T�‚¬ùp$ 2Và±�öS€ç&¨`•Ý4XWUFa¹ã�_‰£«1.kr.àøÀ0㎛Šç: ¢ösK u`š˜f߯ '- ŠÙ‘†½lÅÎÍ$OÀÂtôŽyàé]Íà «ŠõÆ‚|¸¼¡Z¿F̆ô‡ö€ŸµËÂÊF–¨Ù Rif\PW©ÕVBŽ W’Ñô—P E {p¨ÿ­­{—|ç¶Ï�þg °nزã/ •Å×òÕÜ(÷ƒÈðÜ~œõ—£E>Ôÿ ¡å–ãí°¯£—ƒð<ºøV1ª_ÊþÛD /ŒGþøwF"åZû‡àÝ–¶�…~:¤Š­àëªJcŽï`²ùÁÞ¾„fKRx²-c¡ Tdg@÷¨œ v²’¸‡îØÏ­‚EÅùÑ µ[¾Ñ| ÚFbê7ðûŽ2î!Ûí‚kÕÿbŠ0/b,Ó¥`'÷m{æSëVÎQàL ÒC/½zõòù�/86I2°þ²Eë¦Àúsä眀Ä9í†è‹f×Ü¿y[ý­zºëÏ.®Wƒ‡4o6³þ› VTÍDšvÏg;Ú68 9iè}6KD@=LæÙ›W£e+ûãÛ÷S8µ%‰Ë4UGbˆåEˆs@L§v~CäF2߸¬‘qiú‡ÂŸÎ#­úêÏ �b"Ô–¾XSYË´¨NqD !" f"�@bDÜöúƒÊ›[·]~÷ Ÿ}fX8€sóþÇŠr² yQN‘õç)»u¶¢…;�¯ú"{¯½Ñ&‹o=Ú™ij!O,¥½¶º\=IÅ bTÉ�?vÀbÕMøìCÝý°ñH¸§è†«hù Îf0¾²Û‘wÇšÅzµæžRšf8S/Î~óoŽÛÕ9Ùpbh˜°â‰/­] ûfÿ1`› "WFnÛŒ\ÇVþC£�Ƹ ¿æÏÿ*j)¡˜kžhu" : �A,ˆæˆ@Wÿ`×ÚùóªØÕþ™üV3=Ó,ÏoÙö›ewª%¹4 )ýhÜ•¨Ö_dý9àr?öûçm{é¦Ã,²—׫E$ŒE´£¬j¤XÔúëb¦ßbÇ� O1ÖÇ…X´Ä'\FFvS�‹l:²ç½ϤÞ7�­Þ++K(=Ø;˜f�´ó£R·>_Õä#WðÈö&"Êv«%¦˜¥éÚu�Ë ‹@¬(ht ¯Õ·!¾( (Rüà@7å“G‡qvþ8¾åqL¸\$xØÏö›»úàPï >±éÞÂ$’ “QDœTÀ8!ã]ÃÛÅ»‡±�±oñ8á1 :®ª‰‡ ;»;{á}Æòç0¢Œ^ŒXó‘¯�±àï¶¶�â5®œña)ã&0çßž®^ØÙÖIŽÑÕ_•±¥Ö߸ú‘„ýI½�”p7ñ¥ûÝŽz `zî Ç-òq„kÕëÈ�ÿpß ì>Ù ýc>*±~Q}%Tçf›^{bp„‰N²ÙïÔˆ'Dòåå%P�Ÿ¥f}P¸m›€‘PLvRá?�¸VžR¢\:ET[#V*êú�¿ÿ»¹Ï=÷ÜiMrºg¦åÅ­;Y“—w—+Í&�[ý5Ť ø£_1«¯‘LrÌ®3eK%Ù¼�Vc¡Ÿ­jÏïm>g<1#†EbNìíPíï~&scN>,΂“k)ÖdCYN–î�iŒáxDSâ" ˆ°¨´æó‰¢Òs’bód‘_¿d¢@  E+ ‰\€×Töoÿï/\´æoá4r§“Hÿü³Ÿ_té»J ó b�9YÓ£K‚â4ß~žÞ+Éê?á—–Í�ã‡ìƒ¼t7ÅØ'½Ÿ¨"à�íÝq¢“MÎjîµcŒíÆlIèi‡r:å*�Ô‚*xmð!% ‹‹ášÆñæÙ^&§¿À'æ>DÄÁ¢­ë«ËÇ#þ06nÓH’óñî—Œ Ъ �žxDÑŠª¹µ<‚À•†èèéïyøágñ¯ßwº¾Ùé$–§ßûðgó+J¾aç.¿zrOÊÑòûËrùSdý'õÒòøcÝ ñ1õw×È(i¥sÒ\PèNƒâ,·ú?3ÝtåêñÀëÍ­äŒâ ) Ó‚cµ û$\ƒ)鬜üØdïï|*ψ׆ÙC •VC¥¯±‡íqåÃ*EÔVPyr„t�; ±•q˜‰ Lhë‚ÖþF,�ɸ,“¦b%SáwÒjóI"¾ñ}Íölj:ÒGTÿbY3 FͨºüAeó¡ÃÿrÇåNpº€ôøCùêåk·–æé>üBÀ­œRÔî/\�ÅÎ&bý'ôÒÂ}C¡¼ä8±­iV›¼VJ/†æ¢ûBX±= ñûaÊð‚ • ¥§ÃÑÞ!¶Òw€Ó¦VF·ã±€|ÁØlr £¡†)¥6í¸»²4Ni½‡Ùý�OåùñÚÄëO*aÄ#òÖV•Á�ßGyúF½TuiÈï�?Dú «l¡Z†h£Ÿ[œË¸„B]0šmÍzç…Rm9aH$ ˆ®Àº. ¬Iq¡­»¿ë¡g[øÛ{îé�¦.&„ÓE,�½ùî·ÕTÿ³Ëi—¸ŒæŸ;™ûÀ4®þúK ×ë¢R~†à9.å e“'-²f€‚‡ ˆ’7ÌäÔ¥ÇÏm·YÀ)ÛÈîÜP”+*‹à`W?#&]1ÁGê³Å‚Õñ�ω-žãÀÛÄ;/‚Ùó�÷ÛÅÛ73Ûæû8ïQ$è$DRñû[eî㡊�È1 —µ²ª²Ó¢6ú¸ˆo\…'<¦ ­bÎ@±¾ h"$â )ÙU^oPyo÷¾ÿýµk¯úÅéx�ÓA¤ßw_áê«·Ì).¬âÑ~’êåCN?¨Ð’üB[�Ë}Ѻ~Ó´úËjη�î!/4”ä@m~÷ÄIˆ•c÷wöÀQFDà¶Û°¢vÌfU=—W–ÀÜÕåá§µìÄô\9ª¨·'Ü“k'r¿É\oÄßdÏá׆ÃX}Y3rÍWT„w0Ω‘­öè;‘Ÿî‚ =ùGl)´l˜~ºÀŒ ˆrŠ\@$MÀÅ] GÛµtt}áù7–Ý{Ïÿ<Õ}?@þãó/}aí¢;uõGÇ%ÖîO¬ÿ)^ýEÖ€±Ÿ˜ÀÝUó2Ób¼úЫl_W7¸,v*ž,\ÃSÏ«©€"Ì^+À‡mÐÚ;8ãiºqi3 b¡•5+ÎH'ÝÈ 'Ã>yjòÂz0ŽþLjä±É:Îˆá º=:P\ùùx ç &"D´b¿7 ¼ôÁÖOÿÍÍŸ{ Nñ«žò™yë­·ºoúæß¾ßXV´d&e£Ü{_íW³éï9¡†»Ð�\Sd™~DÌswÞœ =ß¼ÃlE{aÏ!ªÐ;“pª‘{"€º–å•ÅÐP˜«‰§ÿ1g÷Ï$ä×-G)˜u]hFµÄ!: Î@=wàè‰mÿó£ïŸ¿aÆSêxªg…ô£ÿúżÏ~úª=n·Û¢gñÑ’|’Û¯Ev²HÉWÿI!¿P!H<ëϯ:ñ`ž¹gv7ˆøQ 3Ü„ü¶ýyíàQðxÏoÀd€™~QOÒXRn›¢+)B±"/:Ó� Æ’Ä“¡Æ!F‹€ê¬"ºÑ¢£^^ŒíŒ�yÿxðOõ¿ºçžäî‘Óñ§¬Ï¼¿åÑ…•Ÿ“y�z‰Gþ©È­ @Ve}üÇkúM—ìoTø‰NŠi#æùxjg3¹¶Æ²ã²…ééPW”9YãóPϼÇÄ ÔjϤp&¹#Âa"°è€UŒæçÁ…s+5[¹Ö_£|†­üf ŠØOuSÝæñ \Öæ }-N`€�E––°Tᙄٹ÷w¼ÿö«/¾Naê°S:+ Ò_|oSW^fzšÌY{ˆq¥7®þX•…¯“A~".†*=¦È¯­ü<š�ÃÉ¡QØ}²›|ÔÍœ�xvYO0@ÙnЮ]_˜óKò¡,+Žô3ö¿2�NrŠ×o¼Ïd‰ÃT®�®çL´ØÅ€€Vî �†¾¸bgº@áö“ÕŸDfýĈÍx=Pâ\7Y0"ÿ¸{Lj¡Ÿq"­‹Ü/@Qóí€×ö·Â-«‚ƒRœE¶«D wxÔóé Ï/ìêê›B—“¿Ï)ùO/¼r×ê�¿r:í ·´ò^û¯(j,hŽ?¸ÍÅ…ˆ‚x‡“L¶¸ì¾vܸê«?Z/&¯ðû 4+CÍhÃŽ¡`÷É.Z¹Dàa©aœÌáMf_(D}±n šÑÖe“Éù%•P^¾ªvL¦½ÙõÉŽ¥r w‘EKL–Ó ×/kÔfÀ”ÄÙ€â⪬͟˜}íþ|_IÖÞDläÏ1›WŠV6~{[ll9NQˆëjË4/@)Æ;Wù0—äÐ0¦¹pN•J´PbŸ/¨lø`ó-ÿçæ…SÄ�Jà|{Ǿ½åù9sH‹®™û8òË Åõ#Õ31ý鬿8à’ÉÇ1¡H�ÝgøJž~]CcÐÁ~1Ël¿ÇA¶*e¸ðõó—Çð rod¬|ÏèhÜ 58©üìÆ!ÍÝED~|÷d«¤xÞØ–W§™Ê ÌÛŸ£ÏWp9Þ÷J•3@ç*tºvÑ\(ÏÉŒùÄÚf…Œˆk<�hÏ¢ÛšuN¸žæ—qå—ÕHT/.+"Në¼{øøÙb€sûÂÚ XPV0Î"QWxxšq‰NÙå¹™p~U9¥³�ð% ‡;{^¹bñbvy å�48U@úÎ2熛nhÊÊʰQ-OÁ¥WÖjûñt_œ;0€qò»rGOê›2ÿ ‚\ÏW|dÛý¨ zâ[­°aÊ0‹U³Gcš©:r@éaD¡µãû‡ wÄCN,iN[J¦²{œË™Âm–‰'^â ãv²ûê}NðÜéãýHážIM^6\0·bœ�¿1‰KÊÏ1\/Áx$Ý™¹Gñ>–íÇ*ÍOï:� ‘ÓÙܸqÅ|8Ò;[�µƒÛæ /Òóê*`N~6Dø ŽAo: 'ú‡hîÕ²÷G2òÔòâŸ�¡Ñàýñ¾ºÿíߎOÛG˜ä˜N,O¿·ùWu%Å_Is;¤åŸò‹µny1K$ú¶ üKÆúK±b^&&rP�1¢ôÑ�nÛÏ&\€Øs$>¨g@g$\©ë ò �Élºú`ÔçCzôîsj¿6‹tÆ(Ó¦ 8g0“ÏÃd*Ï-g@ÖxÏ:í×tÔ%ñg¼¤�׳ïøÑ±NcßþS LòBÆì˜+Å…H´Jm?Þ =i6;Ø-2e'Â4ö¨;Úw²|Œ#¼l^)Óuý`D0 aòÿæ#'H÷T_œKJóé8O†m=^?Æüì+W^úwp âNÉl.**r?ñÚ;‡‹ó2‹­ ±ÿ ņýêá½²éêÏL¶�%öÃD÷DäÇñpó^ ¨~0ÑK7B>L²>²ÿ“Ž¿h•°~ "0"�­‹ò(/ß ×CÞ 1dÄ´aãÛ*ðù¥�ɹ ƒ¥&ØÁ�ômÆ’Û¬6øëO,Ó²F�÷$2ãÄ玟S¼×r‚­ø”jÌËæÎÒ²BXÆVqDèWàê>LYŠ+s³t+GLIq†Î/ï;DYŠ0}ÝÕ jbWaÆ ®žöK–-Fêå›îo{*fµtï�¬[½jÅ[™™v¹Uö_R]µTßñغ§º �?ÙªO›˜¨³g^ÙßJU}�È�@Úé°úå­œHÍ„'5úG,b«YAº+öS úðziÒ£…ÿg¹°®k6ĺþHãWxɰ�œÝ3T¶ÝË–sWbv¯Ž¡x¹©•̶6ÆÅ]5¿†ú§žŽ/nè1á0ù<{µ©…‰Š>šO¾0¾—jÙ³Qg„É`pyƒ~¸|Þ¨ebwòÑ­L‚2ï6‡ÑPV”Ãbä”h¹1lÛ=4xòÅ7Vþûÿÿõ=Óý½NÅ,·>ûÁÖ?Õäßìv;DZÿêjeùÅÿ©¬þæì˜ºÇ¿ƒó“c…°Ð=â¥u&ŠœÇ<3óÒ,¨J±¼´4¸²±Z?ãá'lŒ—É…¼ Â_\›{úȺ²°¤€qhêGôj:�!FT@S¸Þ¶bdFݲ÷´÷PºvŒ5@ÓjåWW• z‚Ä:€˜žh«?î?¹óøƒaòô$³0eðþÈ9:Ñ÷ƒµòQžD/\P_ËÊ‹Çüÿ #$Ý#£Tõ†¥ó +Í®Õ8êñ)Ûùõ—®¼än˜f1`Úç0²ÿ¿ôÊþªÂ �Uö'×ö+‚2�:‘¢çŸ¬ý!®�ŸÓ44bÀʽï~¨&Ñ®ÃRÞi685­¼yÅýDˆ}*‘~ºï=S ¦ìþʺ¥$s·^±Ì<úŒ‚MLoÇ;ýØGûH$Ãd«(^ Ù£ qõMgr8¶óTã–Õ Àm·écñþ‘68Ú3LÚù¡@€r<\5¯rÜiÂc£&GËdaƒ[›p¾=¸e`ª›�ÍØh A®‰Š?H¸.d"�¤eâž�'ðÞáãàa}CîóFF¸™”ë tv´~råòù0ÍbÀtÏé_~ù»¥ç]°þýÒœ\á¦æïÕþ«</öAƒÅƒm¤h©/ý†) ?TSGŸVK ´¶ƒ Kt¡ÝUVç—[Ï‘$Ud™ RÅsDµÒR’ëSùP‰ˆÚTúŸÊûqÀ{sóß–7Æ"¿Á¶o*fSûX3?þî¡ãp°»Ÿt3h:ôk•��¥\³ibæmÀ¼‚™;|qå|"èÆñú�#”¦ÝRHŒ‰[––•Ày5eÑÚ�’båÈû¢Ùÿ‘Í`ËÈpÙâÎ+ÚÖäx̘Œâ*?µ`.å�}^;ØýÃ^ øà²új¨ÈÌ$6,©„'ú¼=õÜ’ßüàÛ‡¦óûM÷|°>±qËOë‹ó¿™––&qÛ>h®¿!ë�™7`²Õ?ÆB ¬üo<ÛÚÚ‰cö� ô¾³ E@Á|…OI&ÂLôÞ‰ âï\"ÓY<âïy퀷.�W5Þ±‡#¾ ‚I&6vüíñÀáž~†üäPå´J´"†¸¹Ss.“bác>âóA5“Ç?)T„BýÃF‚l¥ âÊÌÄÃQF�C¼„±èó óM‰”qBo½çö"¯F‘P�7^;EÖ9�eŒXWS&Ü=< o5¥¬Ò%.¸ˆœ‚¢ CF<åý¦ÃßûëO_ñ¯0�bÀ´€òòrׯŸ~îý†Ò¢eèÈËÙîû?Qö?òsV � køì¾fJ%[dr)ÆXód™x�“:‘½ØìºTîmd%Åë�ý›Hû©¶Iõ}â�zE®«.…º‚�è¾ýñ¼ú «+î£UæÏÛö‘ÃV[ͳЫõ7º9þûD4§¬!FJ3ÒrWCž¦�ìñ‘þFHìÄ4w÷‘Ø€5 0ħæÏ%ËE¢±à,hÿ¨—‚½PÓöâÅY™àfœ šú¸X@D€¡eeE0¿´@p R�Þ9t:†FI�p3ãöqs1E«ÿæ‹Ö^ ÓXEh: €ô�Ÿý¬æÊ /ÛZV˜Ÿ«Æ÷k>”€ÉßÈ® …>9b+ýê7Úã®çÄß?oÙK‰&(t÷ ÕÜÇ›¨“EÈ3p"»˜Üý™Åuj�½Õƒ|8ññàžÚ~€¼4ÝL¶GöYfËоàªcP?!*àΟS�3DbõÌÎ$§ãö0.ž[ Jó’jùru°³Ÿ2Jù"!Št¬ÈÉ€yEù”þ aÐãƒím�Ð3<N&–"·�¥È ÒÓ¢@ó|lîì…Ç»ÀÂyµ%P››£s˜P¥­»»ï=0ÿÏÿùŸÝÓõͦcä_{ç¶9eÅ÷dgÚHY¢ÙÿùŠ�@±˜³ÿ¼3" „Ɖ’)ò#üaÓ.rÔáZáY˜9@7hD´FD H‘¼5ñ»¢H×ÔÕG1hGžH±'-…›?†‘P€dõ‹ëª`ay¾>ñ3Ñbw{7ƒØ†EìÜŠŠõzá/Aš�WœGZþ¤ÏçÉK4=€Eós0f kùƼ°ao Å 7ê• 5:Àkº‡†‚oîØwí÷nº~LÓÚ1�Àþø[ïüjQmÝ—­¨mçì¾fò#‹@t Šfì"äç“&ÁŸ6íƒ,—íœvÔ‰amÒ�.𳉜™f‡O/¬#¤å€+ÍpÆûnHðßÙFQ”N‹<-ß•r9²¾!'€aȘ�èÊù5Pš�­½C”¶¼oÔG|yi.¸zQmŒåâIÆ�43BaGî!¢Êÿë™ ~]…éótí�ð£b�Ç¿J@³ðta�oÝOU��sùâªF°K²ž? ŒÀëÛwÿÇÝ×]ým˜&=À´ÍŽ’’’´ûž|vSCeÙIRëá!²[x�ÀösùߌèVk3Î)ˆËÿì·kØ/î=Ìd6[Êýœ œn„:Sž�* (†²´�­’_^¿˜ŽE“aªmÁ䪭}W4í=ÆΦYm¦ó�‘CA±eT¶}}ý2ŠÚÛÎÿ¼ê2ª*¼õX,-/bâB¹~ÝŽR\ˆU³ )ÿo[³`*†@#1+Oö¡‡7Žáïk['à£>®¨(†yªšYpó¾–M·^ñ ÔLKpÐt�®ôãßü¦aÝêµË ò¸V–»ùÊZPSóbÑ=*ÿómú�á½ÃmpˆQæé&"²M'â%ºW²gN¤ƶÉö'ûãuøY� À(Ÿ[Ö@Ç9H”ÑGôáxfÏA†~RÄM–õO4–¨§ _†`óQ_U�lobbBPÏý8ÄV_–VÒ~s×la„Á¡å…@B2èóÃ]ë—¨DA Šr,¾/Gbjc�å'‚À®Ýv¬“‰%ýTZý>¹ &ª+EàhWoÏï{ré£?½§}r£cûé¸ `ìÿK¯\[WUõXQNVTþWTgòäY€Œ²¿ û¯ÛU5„�Ñü˪M÷Å}‡áØàd:«˜$ç^²„1Ï„ØðYã9³kÌBx“…Å&º&•¶üùfץЛJè±1 Þ3y[d_+³³à‚:uåVEHìs?áÛ¾¸ï„ ‡#î7�7¶ ‹FðS‡04å{�ˆŒ.bxÏ ú|pûªE�Ÿî¤ö[ÚX߆ÁÊ& fõA“â ª©Äø˜½+¯@ÛñR‡£ßÿà0lbÏB¬ÀTrèË€c¡hz‚®�¡à+î¼øŸ¾ôÅM0 z€é"¶?½ðê÷W4ÖÏérH\¾çHÏY~òP’ÛÿU¥¡àô# ¿Ç„Çw¤(¯,6Q¬V^cH˜TI�ÝØ&¥r¯T®‹‡hFH«o†ŒfÏ5CŒDñÿfùâ�›ø ³> Y<ÄV/ô~CgTä]·h.“éæf@ Ïßo9 1v<Û¥ÅjHÒ¸ç$#Pñˆ8þbmÂ\voÕä¦Ð*�Y‰}l>¡BÏ!Œ@oÆ%å°¶¦”Ž!‚c€O¬€Þˆx^gó�bŽ@R%(=Åæ7VYF_†%ŒKYP–Oœr3>¯_yaãæo~÷Ž/þ¦A0]Àùèï<µtnÝÕ6!÷~]$”åÇ$úO�Š ýåÁA¼sü8N¦-­°õx;…éòË�TId†Tâ¹dQnfmÌ*ÙJi†ˆ©@¢k’õ-âÇCøTÇ"Ñû#€6|ŒÁÑv˜Xî«j`~i>t�‘¾­”ìç¨ìC®Ý'{((ÈN•”¤„ÏûŠûVÍ %t,G†^}¨YïÓÍ‘¨…¯Ì΀uLÖÇJC{Ú{Áéb+:hsPŠyô(DåàÍ+çëÏ~·åù�Ød‰œzÆùôÂ9Z´Ÿ ã�[?쓤e!"–^ËüCõ4\Æ6hŽ´ZTñ€¢i%UžÀD6˜cà­{ý_×^uk>>´r‚0-àºÛnË»ókwožWS^G@µæ±ÿ<×?¾�Xó &@a"ÊšÛàÇØÆV†Mlðqˆ¨Ò¬]µ§NGPÏ,L?¨,?Ðú„ˆç ØjÐÙk\m¹B eo¬£è°YIîÇE£8Ý 9n'{\ mäI*S‰q4û"ç‡Ç¹Ü>Î�ÝwÃ�VrÖÁy «ù!¯n¬…n¶’cö—ÍB+«�Íd}¾}y#d¹]0êõÃÛöB:#XVYÕ%`pæ„üÜâ"ž`�\“u/HÁ Q¢Š�0'ÚÊ/izU!Ñ­-,8¬¡¾`çÁ–½¿üõÏ×½óÄ£SýVÓA¤ÿâ¾E«×¬}§º$7[$ˆÔ�œ„ý]}pÙ¼˜ËX&)"±s.˜S.U¾â€BÊÀ(Vïíè‚·âc 9*D0 W ù ,¶;™œ Ñ ÒÜÐ36FIT%™u @­IF:T0™KˆÛ-©䘴qø«í£¸øò�J@Џ‡>¨]G-~nz2"b5ÿjØÙ|Ô`ñ;[’{†=�æŒ*'ñ½FµÃÏ-�Gú€ßlÜAȽ¼¼ÊÑÌØ7BÞ€ªü™õº2PT�üÐ3KJ4}¸Î)„ñÒ0ïèxè™–üéÇßo›ê·™Ž9+ÿüáÇ.]¶déKE9™V2û±�‰5Þ7ìk…ãC#Œâ[iÐñ_>üiónÒ ,(Í…ók*‰Ò‹œ€¤}€ÿ|ksñ­ó›NH¹g‚œ D¿c~zœ_[N+7y ¡íóBï¨FÙªŒ«=zÐÙm“£ìFs¢úÔ®ƒ„È"Ò¢çîZ“,&ØÝ„1Ú9 ä>m† Ñ:áÂÚJx§å8q*AÒ�(*ç®m(̃Ëjbä}u�BnPG@Õ&­pˆV' ¢GÕì <þ솵?ÿî7wLõûLÇü±þ÷Ÿ»ãÒµkîs¦9$‹¬¦øÆl)û:úÉ£ @ŒÝ€ÂÃi±2{ØJàa,á<Æ`0Fã8À¤ok"%ÒL!¾L”L…x$ Lšh ÐD£'úþÆsÈ&×ägÁªêRÕ 4N¸íTAÖÿÄš‰Q^ßÐÔBl»ÅX`LÑלÄï«ÄêÌ® ¡8Àæv˜‰¸X¡xƒ«87AâõuÙä<æ¶ÿ°@ØhHáh`�j9á"€Æ@DxýÊýϽøÙÿø›»Ÿƒ)Z¦³ì÷=ûÒ½ŸXºäë˜d“³ÿÙqì%\Xf[VÓtòÁ´ ÉEVÍ)˜àÁë÷“ãÏM+æCQV:Ým¡ïj#ÿT¢ê&‹h‰¢ß&;@ÓŠ;ÄŸh¿ŒÇ§‹ÛÁ6KJ Iñ—È (IÉço$ÞŽ€ôú.�Ù—1aG3 {|Lü°Æõ)˜®Pð°¢)-qÅ7à$:ÕæÀêêÝí´ôájtdD×ò«»bñP� ÐDTþå�wüý/ßü˜"-�2ÀÀûýC/­l¬»ˆÛ‚/ ðà‡M�íFe�USö%éP¿TTÒÇ F9G~ò$»uõB ”ø õ$)iPv4fvN”1šï›µ�yq%þ5âuñæ§ñœYÛD×ǃDï�è^fã‘ì|¢÷�7ÖÉÞ·‘í]_]eL&F͵$©/t?¿¤É¿&ÎAf‘“f\Ë8„’uàz3ìñé$åt4c¿SýVñÆ:Þ‚XTVËÊ uK@D+7O )ýt½€A • ;`ÇÞøh׳ÿßg¯ù™�»±iV\TW YnMr>Ù­QªeÌ'B7ÅîòùônK´ô €= ‘û4™ñæP¢q7^›ì  IqYE1ã†òTnˆ³óÑ()±¹N ¢µÑójŠ@*$ÊpeKÓ��O>ñÐÏýá#ª„c7©ë?û•o”}ý+wl¯./)@?À;‡Û �!/ÊC1^0~0 »M‚/,k¤ý'v`¢�š"i:!a˜Êý¦ë^©öóT=s*€¶mÔ¬_4·’R¯¥‚ü ‘ÜXÅÇp]ÌësDjŠ@T<£ÃV|f2:zï |4˜èø£Òs-“ÿçf§NI8Þ€nÂ{ÛÚ:~ÿ»‡–løãÏ{¦ô.S vý—¿ù­ú[î¸m[EQ~:Å0Ü~tûAb÷A�H‹™eûEg‘ºülX¯Õ‰ÿ #Æ:Ípeíäp"ãéD~·ÃJEU$MÙÇcÜ5êe|ÁO&UzLÛ%þq‰bcãGt‡3¶}¸ovQ¹·iO³o ˜¸ô¹P•›Ct§!IÑsò՞Ƌj¨D�'á×íêýÕï=ÿÙ_ýjJ¦À)€¯}ïG‹o½éÆ‹²3ìHÆ‚Ax|×!ÈvÙÑ# JÕ„` ‘„Ð/»8VW©±ØOî8žPÎô0ÕµyZB³ÏZÀ,Ïù.'\ÙXE~®Í6Vöé9Ýþ/ÔìM‚¢~¿ú–l?Ñ GûGL¿¾ÓÚêrP´dè8„NE¡Te<��Mq¦;šìÓHó ?"RD/•FUƒ´âî‘‘ÀOÿç—‹Ÿûõ½§:ÑÃÞ` !@pãò=ã¯zL!ß…î‘1*׋õ$ÃÉßÈëÂ'w„¹ôÕ\$êÝõb!ÉQ/A”1†³AS~úëß®~ô¿ºmÊc6�¿ûŸ?ÿ­Ÿ¿þ›UõÉÞpðôyÆÀe³ëÙ€)=·þ»²lÀ`~a\Ìäȇ>ÚOb�Ež8 0]’¨âm¼s©ö;™þ&k›¨2¯YŸS¹Ÿø>FÀï–ɸ½å…Pœ‘¡³¯1ÈŸ$x:a\rQ1�·a_–UÖÔÙ MݽDpÞaÜÀ'æT&ù@Ee1æ sÄK‡ññ—€â/šÑÓýæäéîÏ\³/ p¨»xrט[�k+JHÍ%�PH�Ÿßÿµ¿þÁß?SÚ©b‰åŸÿôðß]Ñ?!6IÙ¾ŸjíÙQ¨…M€ô`AÀGÐpçš%jÆÕˆB^U1c®(SF.cQMÞŸd׉çÄëR-¡=‘>Nô�'Ò_³107ñÝâ�OQFÌgb[QFº�ý–ÎF³©»q ~ãzk8/îOÀ#‚XO™\õ”cRô$móª¿Úù¿¶ï„ö¡Q¸¢¡ 33â –bˆb�-3®ü¨% ©×F"Ñ›*š5L5FôöͽýðòÞ#Ä�ܱf!úaÕ0ŒÀ_xùo~z÷]ÿ 3Hlÿùð“÷^½~Íÿâày†¸~ö"ˆ¸Xz“×b“´Ø£@œ`Èú kèÜülèa2R9Y&ZÁ6QEÝD÷3»¯Ù5ɪñ&ZuÅ{Š“Áx}²ãf\I<oÕŸhõ_—ÝÔV@nZšžóOÏý'i . ù´ƒ†;˜=OHèqΉç ^’ÙR,!à× œÃѾ!¨ÎÏLlóÔÍ뙿gÔ¢¶Q9#þmB©ºÿéû_ðrÁá0Ì-B—ùÒg [,{ííŸÞs×­ß�)8M•Øï}ìéû/_³ê‹œ¼qè øj& IÖ5°˜&Œr   ¦¸'û …ÀÇÂÅÚ[¦)'œé‹O€¤Òn"ÏM†Ð©–õžHŸ’ÉTÃT¯n¨Õãû£Ú~m‚‹r¾éÊOO…ñ>—§]¢{˜�3¹·€Ü ©¦h:'ˆÉŸ¿Ÿ¢¨a$Cž«hšq]4âò¿6^j‚PÍ쇴“‰%OíjO(#cA¸}Í|Š¢TðÔ{ïþñ{·ÝüU˜‚3ÐT±Ëùó'_xö²•Ë®PsòK°õD´ö Rô±ùbNÀ€ªU´dArJþÚÓ ÉVösP»¬¾J]ùYßhê#ˆQp�‡Dèv* ºè'˜PB ÕE7ÉM…zñ`ÓÑvX]YLú1µ©JÀ@btÚœÃÀ¢öÁŠ™©ÊÉ„‹ê+!Ò<ÃxnãÏ~û–ÏßS¨0%ôB7àïþü¾×.Y¾ø<$˜ñ§©svutQä—�€ÌÀ,œ™€¢ØÅuåP˜ž>eäŸI·ZOë �'-ýƒp¨»V–Á 7uš3Ð8 �›jïW À¾Î^ØÅT<6ìõCMN6¸™øµ¦ª”À ›7¿þ­?÷I˜B‚Ð)�fþá¯ï÷‚¥óWXd ™ìÚGÆà­æc”´ƒ+ú08¤%6�­>*? sÉe J´ S’ϨóP0:JJ˜J›É€¢)mðÞÓñŒD÷ÏMôYÉÚÇ;Ÿì:$ܲ•¿$3]/hÍ÷o(éÍeÛi _šÔè¦ô,iÜN¢k’é mu¡:_~±qxaª–tý’Uæ�˜(¾}/¼¸÷e&òz‚0@ºÝ7/o$oÀ ›·oú›?s »Ò?ÙÑšÒWÁJÀŒlºhùÂÅœŒBðôîfp;U€/ÓX\KK ¡ßëc/åƒãÐ;0aY�9¹ÐÁØœ‚t7\Ì&Ùážø°­ƒü�'�6À�êýŶ©\7‘{ŸŽöS¹žMÄOÌ)‡ŠÌxÃÖ¢ˆ£ø‹‘ócÝTûMU³* ˆRRä—âª'£;ãï!iÇ_mn…cÃdÏÿòš%Zš2îê«hªBi@/ÀGv6�5¬zÊFóŒeï?ÙXCýÚ´»éÿ¿é³Â*OY¸öÛÿøú]Ÿºl=ÖZ³¨9ÀáÏ[›ÀíP FB­¬*�…¥jŠe´ýofrQKï½6:I �ŸM®u•å°~Nô�y) +¦\R/2é&7¥L‰Íޥм]¢öÉúf¼6YßR}îDÞ?…ûDB ¬«)…Ú¢l]ù$²ý§ÓÉçL3'$.f €iÅ=¡ \:·æäg«œ’¤÷è7‰æ àñ¯îo¥¬D8è™v'¤9,ðá‘Áé~ãÞ¿¾ó˜)€�õî_üþ�ºÚ9\µ°ž:ý¼Ý|œØDvo0 —°—®Á—UÖÿãæÝ”¸Û“iƒõ 5 Œøàây•°ª²”¬ï±Å$’ú'0Ç�È,‚r‰×Ńd÷5ë“Y“=_ìÇD‰†ñºxÄÄØ_³÷öñ»¬ª,†ú’¼YäO80LIöøŽfƒ‡®nXÚ«�E ùHg�íǺ ¹§ŸD‰B· –UÁ“Û÷£™$ÏÈk?ù«/^3h”¾óû‡Þ–œ}vŨfHŽ Ô¯< yn7ä¦9`ye éN ŒÀ‹Z5sÄxùá`BE¬Šríâzª¿†°ódìkïM­£‰u:!‚ïÜdú6Ùë& ˆüKÊ aqIƨh,Tæ�­ðeÐLÌ„™ Ëd‚¾’{€H$uï÷rS ‰¿#?|qÙ<Èqºøè ºE Ò#íC#ðfó1²"4äÀâ²BxëÀQhïÅ?òÚ=·ÞpÅt ó¤á{<þšßâ¼L²ZàKë—Sü¾Œ¡˜lºm60VzýÀ&�P~5c%`rbD`ˆ�[V-„Š\µèÂI6ï>AN³pj¿A#[õW0.,š¿Î`·æß�²Õ̬õF§pœÁ¾p3·nBV{ˆ°«½ ö¶÷€7„ªÜl¸|^5¨º@q<ÃjH°$kn¿aʪÜ=4™iª•’í·0‘bcs+X‚ž™'ßð‰—Áî¾j”u¼±¨.™_EAÐ$(ó¼ÿœ°Îÿæý]ª�´Å:Ž ð²M£¾ ܱv!ÕlGÀ´Òï>Œ»˜5žÀɈ¾çë´ ž'‚óÊ,ÛŒzqžb‚gv¢c˜ùÎuKH»O~¼Éýa]PÓ(Iäú«ÇW°ã´œ„ý';Áònø§[o¸zÊ}ž |ÿþ§žµ¤¹>fT “.,-/†õu•TÎÈHZ{‡á¥}-�ívRœ Çk¯aÒt Îem‹ÒÓ ˜‚üŒ4ÊØ=ì9+‰Àé4†M¸olbU2ŽëÂúJ=?=Må +=­ý,ò›B"@9 w‚ãpq1[^QDÊq²üëåƒ4šµ@@ �ok‚1¯,¾àsÿtÇõ×N¹ÏS�<ðÄS²+ý³’ÍN™O°äIøâÊÆq०#p‚±3é6U %pÂJ@žP‚lÀA…Â"�V‰ü\V[4}øt¼Ä4C*}ÛœŠwHåþâqïâ,7\3¿6áêoZÞËx_rS’¶AHÖ.é{¦ð¬T¯÷Ý7Ñ9±Ü¹ã‚,Á{-mÐÖ?L‰p‘ÕG.@ ¦+ã‚Ä:\aÕ¥ßoÜ.̾í÷<ý£Ûo¸~*ã7åy÷ÃûÿògÅ•v‹Õî —Ä4LCÞ\0·VW—juþdz©ßlÜI™c0\R�|ãëꃬ ÒÃ�–#� ƒ°‘-Ï΄ — BZ!Çžï8¢�ÌÂl†$©X¡Y±ãA²v%ÉÎOÔšŽVÌ {ÃÊùP’áÖh«=ÏI/�rÿ™ ’šùF%è•°p }\Þom#|f¢ìՌآu,«œh®ÀJ$­3V†G{áÕý‡! çzÀûÐ=·}þÖ©õwŠð½þò[ÙéºËjwêÙ}ÖËØœ[V2>;�^mûè „ò?ÆE‹SÎ.Å ë0v4Àˆê®šW«Ž #/ï; ƒl‹,X*�¥ÉBQ“íxçµO6èJ‚sf}�wÏd.6æD'ܰ?9iN¸qE£¹p6.")Ä(cà Æ!?²}/8-6ð0q9Óá€Ï/›§€h0}œQ)h ï:FfAÃ�ˆÇóûþ«¾2¥þNõ…ðàÿ¦ØÓþÎêЊzH*‡ˆ®�_918¬v=¨¦sÔ'GàäÀ ½#XU‚ìåÇ—q×ùKÉÍèyAxnÏaJ-Æ_,šKD0RÄÉ¢…Ù³Ré»ñ\<0À 8eÙpeCmÔôĬœÂ±0ãØLæ9©㉎qÜû!׫!²,œ@bðÄ®ƒZÕ 0)´o_·HÍžM­> h‘¡DðŽªor_�2ù+[”ã<ÿþ£Ûnøöt�ó¤àžGžþÛ dû©ÍîÒ²ÿ¨ÈŒe‘P‰Wž•×3*Gz€h†`ö¿sh ^=p„lœÒ3�-¦ÀЍ/Ì…\· 2]J#þ »Ÿå\ÏÒ9IðGBT³qNA¶î¢:Q0 =×hàÝÃmpl`ˆ*ºk rà’†jBnJQ e R¸8¦ß[Tï{oãì ùÁ ~û‡7öß§Ôש¾ì�}æv¿"ßow¦éAþ+«J…" *ñàñ�šH±§v&õîàj…~ÑX’)ÀV}‡Å ¥ÙnÆØH_pA]Õ¨?>4D„a"÷>WkÓß¾z±š‡‘‹‚ü?Ëþ§¢€ë¥88ÌØ÷÷�´QÕc?›Ÿ¸H~õ¼¥€õ¯"z,€š6ŒÖ~Í=¡¥«Þhn…t»‚~/8¤È?øâuL­¯S„zøÙK¼oØ]ijü¾,é±üÞ`†ü>øÒšÅPœáŽ!Ã~?<ºu¸�­3æÝAE ÅpŽ”ƒ ñCZÉd$˜è{€Ue]6\ÑX Ù쾺ú`Ëñ°Ÿ‰%…§ÌÆ)U@DÇñúô¢¹ºPäþ_{ß(GQ>þíîõöj )¤'„„„4 •Á Ò‘PD¤IS4€�" ?@¤I øQC‘!ÒHHï½½¼vïzÙÝÿÌìÌîÜ^}ïî•$÷ÁËÝm™��òõ,H¥ y�×0 @F²s—¬BDÏF*á0ßIýŽ‚1}zЂ ªŽX!v {n«o"¡öñHì¢zÊœïŸ7¿¨¾û²½ý¿AõÁæõ.¯ÏbFÌ»/K’ íÉ£‰Ìή˜ò—E+ÀK~åb0kƒ”uGI�ÎÆâA,S¾rÓÅlž\íÉ´_¥l»Ô}Ā̀£Hùªžz J™ýoð1:7@£ñÒcùzH –8! Êé„�¹¢™¼Y¹0 ª¦&„ׯ!éÌm¹„-ÉZOå1w|÷Ô-E÷µxnõÎêMKítVT¹™@³û‹ºUSilì_SA!ˆ%exá‹•àuR [æYD}D¡ðìÀxããŒ$’�°ÉÑ&h%ËÌmb`í¶ömí[¦ûÚÚF¶>dj/×óðo\$ãÂã‡B%ZŒ™€f†Í¾\TSX­ùwkŽgj �CÌÖVkÚ(X[…¾£9(Hèµè,·ëÐ>ÁD“‰ËO8Îp¾¢cO½°Hm€x\�g‘üïµ[H MÄß2aÒѳGÝØê2÷µxuãFßš…+6ÙÜÞî¢dÕ^\ ÅhBOŒÈ0…Á…Î:n()’¨#€…+ˆ� VZ9˜Ïç»>×5™Ž³cæÏÖO[îÏ÷¾ Šiö¼¬v:àÜÑCÓa™h¤)9° ûlÞIˆñzEÄñú)c¸qW�|Ø XX±{?|¹ux­XÇ•„h xà¸É£‡^:thKQý,öE_Y±Ï½fù‚%’Ç3Ü"Zõ\ÿÄ‚¹nNˆÆe!ö|öäÑPãv‘jÀO#¬Vá´±QÓÒˆW7­@é3J…öÃüÜÖö£Ðë³õ'Ûý…ö/4�Ýç�VI,#€�.û� 4$M$àÕÅ«À‰ÆǾ4‡¢põÉ£À‰+ Â;a Eà%L(‘8ë�Ð5JâÁæµ#ÇN?á²ã� ÕÏb_ôñ�í{?_ö¾èöN³HV#ðG·З§TÔM@ßJ/\4~„vÿü¥PåÒ@Ùìã‹KçŒJÜ€ çŸ  ½Â~SH˜C�.2¨ðÆòuD!ˆÉ%6i{Ô`è‹S®QQ»cÓx‘ÿg.9¡€Çf!w'å(¡À§½&�;ó¦¡CÛœLïg10GUÅÄ_^Iqû.µb‡ì£Lø#¯Ë ˆÿ°´?ƒ›¦O»Õútxš°Œ:°©tTïpÒÀ>)@ef)~ã—¹€‚!³ÀÈ2ýÉæí°£ÁlGDñÄ�½Iþ-˜1ï¬Ü@Â+‘˜l¡9)É8--¯ÚfÿðŠû¡¨ §%Ùqw¿ðÚ¯d‡÷>›ÕNË€áfY!�T€õ™ãM|4Œë× Ö×5À[vÉAÊH CÇnÄB3V·ý+:åçÜ�ñÅeÐ*H´ï,!öÀi¿‰F?–$ p¦ êc¡¿å»öÃû«7A—íT‰�}â‰HÑÀœßÿèâû‹îc)^ôç/¾ñ­¸hy×î†�º@r¥ÀEÃDã qÞùÉ´±DòŶ=°n=-#–¿K…D·u&td?Š�*Äuñp²Ö+N8z 1@·ðˆ€Oó]FC&1€!,¿¿v+Ô‚ +ÐÝã‚ï 1€Ô@ìÿ�@^øœÊýh�ˆ‚ÁÄÂ!Õ¦$ÏùÝ•ý§$},]ðÍÀëW¯öTV;I}x) Í2€“M6Å0´[œ?z(YpóÖmƒýþ€æ@Qàss-øŽFÅnÄ|Ñ{íõ>xìÈzT5œ5|�¡à6¿N•XORR‚•!¤‹4µÁZÒyë¶Àþ– 8% .ž0‚Œkǧ?[F̳$V‹,@Öƒ‚Í�‘~ÇŒyë”Q[KÒÇbáO+6wß°ä«åN_eoœs¯DàGA$º‚a¸dÂq0 ¦‚Ø¡ÿµj#Yx¸&{CD+½œ-X¦£ ½6^>ä•í=Û~œ ™�—”I¤Ú¹ˆõ«¬ E@“.€)Ë\@ëÀ̇ðg\NÂ?¿Ùu \rÂH¨°ÛHÑHDð¹�`Àð$ƒh®Zü»‡L8aÜ��\W’þ Ï,ÝãZ¿|þÇÖŠŠ‰ÑB”€*EE4_¢á Œ ŒS‚#,wíäqà¥ñ@lk}3üoó� s¨-ƒLQs¹"ãZ¦›-œÖ|}¶Í–/Är\“ëÙBž{³='Û30%¡À!ãEvË©¡ײ׹H©PF…�ÌEY™{ð²�ûà³-;‘hœ€=j`õ¾ƒHîw‚]Ô<1 ~h¯$•$$››wÊŒkÇ÷—¤Åz1áöçæ¾ nߥ› 4ßg‘Pí;ûãtè Nxˆ=q&à~Õ>øþ„c¡Âa‡—¯‚�5•àFØpÅ®º4/>ÒqnÉgpéJÀúו ×Xášs8<Wa?ôO N§É9h’£½BTÐX½«døžé·ùx¶ó�mí‹ÇEb`³°fo|²iñ\Å n\6 m~æºÎò(dd4?jyõáÙ—\.BÑ8¸d+ô®ç^ùIÂîyÂâ yT1Eû¯ÿi£¡ß‡ …qTT,Fb¤ûUU�¬Áv$]qòhØ€°á¶ÿ!™ðPì™ÖŽ‘Åvý´qÄó,“>€f«Ó2Ûvv§»8h™Á´1dØF¢¶66ë¶‚­y!lòÙ»,Ú²›¼iIB´Ø€d4 R$xãC×^öd)úV²]õð{ 'ìÚ¹ý3GU•CÛ왆M”GXÞÇ5Ñqä#²I"\6é8b.ÁYP-ÖÃ?š¯Ô�ËW>$24Gc`Asðã)cÁi‘ 1€ãÊH p0s4x^°fÏÎ>$ÿÿýë ÐÛç"õpÌÌæºføpíV´$½FþŒ65E{õî3í®s¦-.E¿J†ž\½­çúOç/uTvï-²ÒàúŸ”bÐ#¤¨�4=¡ÉHè¿)CûÂÐî5¤6~¸n8mZ„¬´ãRcuÝhëûàä“ àBãúö„³F 2”‚PtkÀál(•8UcCf+C.J†ûóý.´OPÀ}­5I«)wy «•�ßqéνð醊±ˆÑÀ¹æòÛ[ùjY¡¤`ÎÛó¾ÝT_ÿ–ÕWagéÀtÍ¿ÈåDIÓ”‹ZEÉ›³Æ�Љד¦áÇØð=„.sŒ6Tx00þ@çC‰q—܈+ ˲³m¼\j w¦ïæë3]Ç·eþn¾/_;™îÏöüB¯)ä�r½W6 [CQR�òìckŠ,�Ñ‚ $@ŠVº>@Ñ×E»lY„²�7ç†VMý×ߊf(RS¶mk½wp>_ÛÙ ­ÆXƒ>CbÊÊ!hZ‚W­„–h„Dþa�M˜hñÇjºuûÞœóÏ|J%EÏ,]_»bá+�Ýj{a‡ m£3¯@£> ÙÀ h^4â‰ûÀhZB\á'VÍ0\t£¬8 yc(�áìhl�†P(ÕæšeC¥Fî��­�Ölò¶OTvÔš6Ìý4ç¿«4›S=âÂzWøàÊG‘´î©Ù‚9¡vÔ¨¦†§ÁFW˜+5á�hÆ`�ª$Ö_�hÞYK¤ûäü%PᶃEsÔ“…†Ü{üÉ'�¾vü1õ¥ê[É5^·<õÒ|Åë›n±Z¹$¡h�™ DÐó¦Eõ>y@_×ï(P(žd‹,Sª9ÏÛçšRQÛŸoÞ‰D„zSÕTGž�H,þˆVxåÊ“Ž‡¾•¾ç m~Ú'\˜qÝÿ:§aÐ࿵¥ ™¼MK z2UZ)ˆ‰2Ä €¹)Qoð÷/·ì„/¶îI“§ê^€IÄíŠ�–O»áŠ¥ì[ÉÀ�/þõÞhR¸ÇâqKi&@³>€Š9 C»ÕÂL¢mŒ(4ž…2 hºâD³4Y0èûƃ ðÙÆ%Mr$FÄ8ÅZK$ �H Î;&öëeT°a@û(jÒ&R~©ÜA•ÛüÙAWšm¶ù5ï_fþÖì¦L)¨‹èŸç?[J"4q–k^ç’ †d§¿}àªïÏ)eÿJŽY°|ô¦•+ºªkÝ|R²ÙÍ€þÆ~èÝ<øÁø‘:`f'|�’aFEÚ{â�ÊàvqÆÕ|³^˻օ­{D�ÖAý+æY8ƒS0ŽD­@ÆÝ.3\sûÖY3=†ÜØ@Ⱦq¢’½Mè[S‘ₜò,•)MÔ¿ ¹)ëKª”úk{€�ˆ;‘è:÷«UPåv€Äò(Z† àÁ†à°±£'ß6eìÊRö¯äËîÍ7UiAýKëÁ]1˜˜yÀ\wYÒPÒ�x;á¡ë§N ŸŸÈÜ,fžRA·§òˆ@¤sÛúÁ‹€?/È›?[ä®ã›Ïµ¶­R][lÅ< Gªá”V¸ªMBÚWŸ4–x®a`µð.Çø>‹(¦Ío6Ä!â«v ¦^,¾aJ8ep_¸`ÌâV΋:" fH–´\Õ5 næ�ÖZZk]Ð|[R©¿¨°¶èZEÈýxü‹À‚v¾Ón#z-†4JпyJíÇÌš%È­x|^hºsë3/¿——Z�N!ÝX r¥DužØ¹G!Á(Q¸ãô“3”TõÄH:õ7”>éoÀˆ‰—1Ç�JÄÐŒÀÛ+Ö·yS»A³ÝŸ«ÝLçrµCÆ OÙý¹]¾¾à®x"IDÌ`NÀn•H¡\ëÁŽî WŠÆÕoð÷H2Aˆ}*+ _u)Љ«âX,"¬ÜuVîØ›É3\6úӂÂÑt÷¸á†ÐÚ�d™LL¤ßµ]ap‚I'ÑÚ­löƒ|÷¤cÔ_ÐT•TïGŸo¤ú€7—®#…?*=vm sì<Qm›ûØ5—]V`w †vAsÞzjݾ]ïÛ«»9Œœ¢î„K ¥øø£Q˜=S‡Æ�Þá‚L+ @£QhÏuë0g`ÖÆb^X[`ÞÚm`$R–Y$Hˆ¦§†…Ó'³ó"d¶•óçr]—í¼ùÙ™®Ëö;ßóÌíçk·�ãü¸�…‰(v �` —p�*�óBb䎸,´FFò’$‘H¶xBÑÒ¶£{qVhŒ  …2\ˆòYÑ}V܆¤™�q„\}Kî=g:©¦Ã6ZÂ�dݽ.J$”Ô¨E¶\2ný\ÁÑ…QóçÍmr×Q–7 \s"]³«|{ÅZ¨q¹@´Ðĸˆ(bó¾'Öx0Ú먾gþòÂ3?ƒC»Iž7>3w7Ø�½E\ XÔD=e¸ÀRYKÄæ�T(ŠS†ƒa=jÈ&1fTµ0È4y’›O�Ä ^0â $ý·öL¼@—íØ‹·íѳó�+ó.ƒlT™¿6Ûý<õÍ™îÉÕN¦¾ó÷eËœ�#àÛÊÕgâŸ.'ôúõx\%Aó U¬,5<ŽD2:‹]�™[7F¸b4LÏÂ=jŽ„abÿÞ°»)A8Ð"Å`qwo?c2t÷¹  +ŽUž`™H¾ZÀufü’åZ�šÿ5Ud „¢ð/¯Ã6Äõ¬i´ùeYÑ’ƒF‚{¿î²Þ…¿Lë^»]àæçæ¾W„K-.—`p†À,@7h$†k„Ñ}�"“©—LfFælƒœò&¦,¬‚ÁHÌJ€þ>Z·6×7–$Â�ç":ºÊsyîÂÌ•¢ß„8$bd£`=‚! ›ÕBêưòØí‚+§ŒMõIàR™·ÌD=ÓyÈpŽ]Ï# >N5DULüž�ÿ©Ÿés9ˆ(«§`£•�‘ˆêP’s»®ôì?ÿ%‡{^ÿ爺Æúå_•ÍHÎs”¢ÊÀh,WO�Ø@+;YMÅè dy�SbÅʪ=`�?û5a%ÅËÐ5ëˆÄ#tѯ\͸)�Ÿ�yáäR"€bÀ¼Véæ©øKü×ÐÇü5[aáæPév’hW•Õ@ÔŸ%h�¶4Å»W׎ýÍ¿³¦=ºÚ®Æ§žza¸|ýEɈò�Qcƒ ÇÅ).™8Js-O€žŒR¥ÿ䡨º¸•2ö´J‘*pJBNQˆ`_sv5ùa·ßõhAuRræ­hV¯š<†ŠŠœù˜BGã€4E£¶óAâŽáµ¸»ÁÏ/XB6¿Ýf1úŠûOs(˜0…[¶?uÃ�´gÛ nüãs¿N8\¿à­ˆwKs ²à¨^=aʰ~:ö–UC‹kTI�¼l{6$À>GÀ²´ˆ\¾vü‡­o,[•F[ª¨Ðöj¯£Ûïý�U×TÁi#Ñõbd/~ítdÜüTÑǬQø_ì—òäû AF?ÜN]ŸqÉŠ.`öß ÿö‰›gÿ²=ûÜnpûóïxý‘†:«¯ÊÁDþiáB…EbRš5~ô¬ðé¦ÀUt 0�òRܠ넌 Ÿ†•€"tÍâ{á«í»Ó vò:)ò7+ð}*´Ù®kK[ýŽ€7RN6†UKÖ CŒa€n =Á¬ÔשÀQºæÞ\´6Õ7A’û±H£s¸Š±ù±²0ÑÒ­pÖtøêóíÝïvƒëÿøÌ|ÕS9Ýb±iq4€ÀìtŠæuÝ)'�ÁQhyd&Ãiá¾Fì¹ÿÃÌ,FÞürLæbã83JœH Rg¥ÿ·l Ô‡"ºËqºDbq¸nÚp�ŒE&@‹«¼i±>fKGîÉO&¥¦8¦iÔŸ4�Öÿ—ëvÀ¼5¡Òã&¾Z»\EsdHâê?ÁæOž¾ùÚ’úþ›¡ÝW÷M�=?5â¶jµºµªA úJa±v÷œQÃa@Ï*2qŠÊÉÿ,™"wLÈäËšÇ ‘7rçR8‘"&Œ°3ËkK¾éˆ!*CoøéƒûÁˆ^=ˆ’ÐŒˆ' C…˜þ³yàAd#ZD]üוÑ[ö7ÀËŸ/ƒ · œN«ÁæÊ ÿ¢­÷D4ÎplÚã·\]rÛZßÛÞ\½Úöß>_o¯¨ Y¬©åÂèÄ…)šƒA¸éÌÉP� $rV"%Å€‹þn… /£H`üÔ’¤»k¹ ¾F¢Àg[wÖ2tÀý”!ýá¸Þ=4‘mò$6.2 Ê‚Ú_`›Ÿ¹üÖ­TêߌÊÿ}°Q};x°Ü/Št=+zÄ#r²œ€XsÓ¶™gL>fÖÈ‘ñvï{Ã5=~+TÔ>b±:8 ª{b Ž}¡zÖÉkSoAÅÐèVÀ6"€´—å�¡ Š ˆÔ�å­%«`0\º¬Äùü%Èg o'Àr®š2ÜV‹@•˜�é¢áS–µëë³u¡ù5y²"®ÀS|Ô9ŸÛ¡9¡™ìýªjø$QýmÏÞqÓ£í7ŠÜ;´7<³tiÅ¢ùK¶Û«ª+E‹…èà½^ †­‡ô¬�3ŽBSPÉ‚JÆ lκ$ ¿´ 0¬-Re¡H �ÁÜE«@)>{JÁP†t«‚ Nšâ\!\AzâRh×È@–—‚ßüF¤«¡ùå³%°³1ñxÔº¥eúÕ‘ùª�ÀŸXScó¤ú_;~¼¿½Ç²ÃÜýöÑÇ„Úî7[,â'ΑF—Ðë_}ÊD’\fì›b„y’?�¦‚âÜ~‹zyÎqȘ@ŽÀ'èsùö=ð9IJ(Ð% C"c × õÒ·ºJã �ÐèÀ+’µt^©y/%Šæ­Ü_lÚ•^�®ôÓ~ø>»?¢þIDý<öüÏo»µ#ƲÃÀœw>èµcãÖuöšjKÊœtð†"6{P÷j¸èÄ1 S…ŠÊMž.Óá{¥h.L÷ T ¨ûmã²fØÛ,‘„W¿X‘¤ 8¼9`Ÿ ©KtôóºÊ»jN›*„#QpY$6N£f3Ê(Zš-ULÍTDbñ[ÁÅå»^Hcý¹ÌT„X¬Ù¹Þøj%Tz<à´[¸¶9ê¯1 êx¬©>4xØÐa÷œsÚžŽÛC¸|ØÕ¿ü%¡ºö2A²ƒÅ"Ð|€š>�Ý:[Âpþø‘0f@=(… àeË<¢_6,ç¤q'€'çÙ¾€æd“¡%„™£†ÁÄAG“r…r‡™R—3(t]ð×càïá"¥ú"·v0÷x ÉO}ô%¸�p;l!è~þŒåGFNâ*•è5’ɨ�õ¯<÷MW”¢ìW!С6®ûßùß°ÍÖ/µ×ÔxD,esqøm#±D"¸qæt’E¡~ûº ª43-èYaµ¹hûkè J&Cx{ÑjX·ÿ’ÝÜaY2>‡YøSì·!ªdödæ�™¯åÛÏü=™~ xYg½'W_³µ›i|Z x„£qˆE£pÛ·g€ ±×LPTƒªêf䟌–Y�HÖkjú‹Ç“ðØ»Ÿ‚ŠÖŒÏe'Üd’2R5þø¸H¤$û74 ?vÂ}çÎX_Òç|—ÌÌ~è©¹Š¯â‡¢Õ®)Ûˆ�^™¨U"àµÚà†™“Éä) Ј¬Çü„²„BÚæ,$-5ËǦybòñÌeX+ܸz÷hŠÄÈ9NÚšõY¶S+΂5ÏUȦ@·LÇùcÙ¾ó×10·‘ïw¾{øcü³²ýæû•ë»ùÞlï�mܲõÓÜ}i „aäQµpþÄQĈÙâLÆ¥”ã¹ÅÔdêÆg¶µÂ§)WéÅ–*¼0Eê�Â,F,ÐçÙB]Gø9£u\ÂÔ÷K!Að4,š+û�ˆ� ¾þÜm×]ÒQÔ_{¿†_¿÷ù  ߬Xn¯¬ñ  kZŽ:4¨$Ä'Ÿl ÁÉCކ3Æ£¤Ð&žN”¨MKA¥³i»f®€›«Z/ŽÓÆmŠ”41.@¤& ›÷7�RM' é «UsŠÆàÓõÛaËÁâB‹3-ø¶\“ïú¶´¡�{îvrmØLψ ÚòNXGãoÀu§O‚U>m3需š¶F2A®õb®¨¬# Ê1ê¬?N†‚Îÿ{éX²uTVº‰B;IûÂ*)ën¿ª¢%2ÁE?Ñš�77´7áø±wœ:yKá#RÙ°B%ô(!´vã—꙲=·T}›=„köë §�fl|=0HSæ¨%ZêE(¼Í_¤¾#ø�üÇ|\Ýhó3#ªÕ ø‚¡vÿpDµÅï=wû�/mÿ™1½OG?Ü¿¿ß}Ëú5ë­Õ=«€… ƒ‘0OÖ n9g’ï¬ (œc�hˆ‚jTØj+`9Ûñ=PH“õˆÓ'ð §ÐŠÃ_.ƒ¾µU`G+as]iŽ”!?D£ ˜1¼ŒÐGK¢©#ê\í�b€÷(68D‘м|ýñýÏ¡ÂãÒÜÕS¬`X¶˜ qb�!Ѹ¿iÐ1#޹ï‚3ë:zì:m…Î~èÉb¢ã‹Ï£‡ k¦íç� …B0°¦.ž11¨š,¦#�"•‚“QÿnÔàƒ;R ‘°óŒK±áÊÈèûÎúføxÝvh¢5ÊÐ~€Àã‡CÿÕ4–„¹IeJÂÐZеûƒhP¬øfÛnxï›ÍàvÙ¹¬ÅŒਿÀåûo ªv%úÐswüä®Î»N]™W<øÄ^ÕS}”HØ%�Ëß§m¶¸œ€–æ|gÜH7äh{rH€çJá*lŠ`Ü€vŠDQŽ@»Jà¸àC‘aÊ€õËwîƒ]�þ#!´ÖôÖZÀÖ€ÙSÇC¥Ç¡)õ¸�˜“…pjšhH7¿ êz€w—¬‚uˆósØ­úæ“Ö_Ƚþ„`ã¾—î¼±WGÎ�º¯~àñ £Ï›’Ç-°Ad9‰^°½7Fd¼›¿5*}î;/…æVciæøTÌÚðç æJ¹Ž\CÅ�”ë9�,(<ù,ác® Õ·@ ”éÃU›aíþ†Œ!öæ�’Q UàF*æÞL}i ´æÞ\׿,ˆóºþŒIÚ¦çD¢t£š7ÜvàlšLùÇX†ðŸþïDO²Sç’Ï’e¶X¢ŽúªCÏzþ®›Þ*¦kÅ@§“¢Ë÷Ç%²§z¼ˆä|%#oExâÂÁ0ø,VøÉw¦iFÕ0ÿéõéùb­H’sP2!z\ç 2éSdp¹Ðß—wÀ[wë®Å¹Ò´&¡¿5„<× ­8ÞÞ×µæÝÌía7àaµÕ0sì0ÝüÇ,G u¸)Ö˜P6ç"‡T•VÀÆ?Ixà_ƒËë!Ö,}モo|=Á-¡þ ÂMK^¹ó§'”hˆÚ�Žnxð‰^ͪm+âìéIC52šLÊ„aâ >0sÂÈTo/†tN H m€Òü Øaã¸�Â%©ÊCŠ X·«lÞIJœ›©i‹£Þ™ÎëÏ4QùLÇy“]6ÁÌ=d¢ÂÙ¨q¶~d:ŸË4›é¼ù=ð'N/~Îèa0¤w­�0ƒ¸µÐ`a¾¼yX³©ºýOûÆ=à­E«Àåv±ÎêYŠu_¦ýWdH†qo<<ð™{në—߬cÜ™gpÕo½/ê®þ•d·ÔŸ† 3E\<–€€?W�6öìFëÐH@Ñ,‡À�ÝJ:`y�Aú‚ámÆ P-1Q®ßžÓ„˜+ºÖÌ-äºßÜN¦ß|[Ù®Ïןv ¾�tn)‘HÂ-gœD¨®lÞüE†óâ¤.û‹šßˆH¬C†ßÿ‹} ûCQp8í©f?ÐB~yÖ_‰ÇÁÚrð�—~uûÝí0Tm×N…ços|¸ð�•ª·f(®,Ã6?°4 �Œµ½P«uÛyÓÁépp¦YSBªÍU/'–‡Ò´4‚/¤üf_žyÊA Cà`#šiãžzøûòõ`µvL´!ïg¦¶rXؽ™î+¦Ý¶žãî.'\À ºüÈQ’)†pZà)•Žïÿ–­…O×m·Ï6‡½MÏc"N±¢N{ŠJ|ÛÙ¾ç²ùG Í�(?¦ô8˜NýùäÐ:êÏÆŽ§úgî…Tó.FàÍÁ<ò÷OÀ[á‰8ÿ0vR•~Jâáæh­Í1é™Û®_Ù.ƒÛFèrÕ¿{ô—ÍŠeŽ«²BÒ+§X4v_Fœ@(�h0 3F‡3&K6S2q€É„ �‰¦mdAÍz¾�sLá§i�’�˜ŽÈæ û¿q×>xóÓeÐ�ƒÛã§×…ÎeϘ‘iÓ˜7O[7V!PŠöŠéŸFùÀØþ}´B Šj(þdUŸgEßõŠ>O™æŒ£Á¥é›_Ð8N’ÂNU�*R¢–·òoŸ.†uuMà$‰>Á°ý3êš@¨©Y®’Ôû^üùÍ¿.Ùd”º$xóMUúçÚG?Iøª&ã4\üæ×²4 L6sR†h!ÄBc�ð¥gžµ^=ÒŒ-=ƒd"Aqò6 Ûæ–Ê-jŠ?šUdQ£þXsüðóÀ]é§ÇIÒ�áÍŸ‹’·ý ¦ÀÙ~g:ž­ý¶B¶÷Ƨ ë­Ëù2VªÑìÑfÓ›csj/3BÐ�ÉÖZ€ùÍ%ý`rÿÎýá­K¡!GÔß V‹ÄEú)†A2‘KKýç{ûÔY³„.W…¶K" s^}Ï·fëÚ�‚§º‡„6˺‚�¤W € …„&bIC`G¿ïºè,ÀI&¬ë2(‡ÚƒÝM11埔ŠþòÞBØÑ·×­ÕKLA"é›,ÛNs}6mJrÝŸéú\`î—2µ�A˜Ûá¯Å•rf�Czw'óM23ÖßDý eýù*oºœÏ”ÏÔÔÇìüø3‰Á;Ÿ/‡e[wƒËíD”ß 6;ÕUÑ�¯0­?º^F›_mi80bðˆ¡÷]zvKÛVSûB—Ef?øÄØæxâ Á]i—hBN¾°(P3û'�E‚–Ì8vL?þ�cH@É, m– ÿpƒ•Ä +ÿê›ðáÒÕ°¾®|UXsl-¨Móf϶Y2Ï¥Ëw_>î"_û…ö?ß½ÑHN6NøÛ'K 9·Ï v»‰k’¾VÌ¡¾äOFbi8 t—”›^¸ëæ';{ìrÁ!±ú.žóÐܘ·òbQb®ÂœiPS�^áPŽëY çO› s (•ÈÅv¶}T£,”ÄbÆEbX±yü{Åzpy]åÍß H y»³ËN›¤#™šÿpF]9R7oJÉîdÚüM�üãÓ%°~ÏA2WØÉÇj±Dž²vRlýÌä{‹ÿõ×î¿ýâη|pȬÀïýü�¥rUÍ8‰"f Єª1©q, 4à§ß™ݪ}ú†gI"´êQÚ„ �./[ØXPšÉO¤‰#°ì¿bónø÷ª àp::{H)H&“àF“wÓwf€,+¤–±(¦¢ ¹Ä.1HÚæ™Psñ}pîÀŸŒƒÃã»Í ¢E$®ÎFÑZNÛÏ™e´ùņºåo=ð‹q�=f…À¡ƒæÌ±ÉŠs«ê«éÍŠŒšý´¬=D+ˆ¸€(ôñ8áê³§¢¢Éqõ7äD>+lÉ�ÇZJÌã�n~¼°VlÚÿ^½É�eÐP’ ÄCa˜3k&šOE3ªªžtS§Â€yóëZ4Âoóîýð—��×çÉF­P)Ö¶ù!ÅÞ/#Ö_ðÜ#‰‘�»ï¾v-êY*8d†kyºw]s`x«ª$â)h%º~=ˆ]†cˆ höÃå§œCŽî ØþÂ'Œ$“Iw=A21 F´˜ƒ‚̲?Sbûÿ×wÀ¿¾^N¯S¿ž”F“ÒŸ%Sg&vŽ¿.Ó=ÙÚ)%äz†ù\)ûƒç,Ú†»g�¡‰zØ Ôÿ6ô°¹á]{yç,¦¤ih1+ÚùØ›ïCH’Àî´eÞü M?Çö$A>�¦¦î•Þãž¹íúN ñm RÃu�?;i_]ó|±²Ê�9¼¡%QLãH6¡p<èüÍžNŽãÚªbø‹cPuÇm1‘A1‡ûrˆ€! âÝâß9r�¨ÉþÌü·|Ãx‰máÈ"§IDøïù®mO(ô9Åö§Ï:¦[5œ‡•€*õdJ@Ê‚›Íº­ŸþÖ7?•÷�nz=²Z€�ó¿ÙžJH8U]Ê�=QyK†œL€ÜÜíÕ½rÆŸoºfQ»z á�C®~àÉ †CsEOµ{e‰’ŨðÃq˜% 46Ã9FÂ$\yXe風— `Ä h›^Í*B¦ÒŒ›DPÅÓþ3ï¿·>Y«ëÁîr�aäVœé7ûž ¹¦˜ûØuæ¾ÒÞ|mkïMÆpéIc /BDîÍ ³ìºšs‡‘: 7/2sÌ;S4æ’öH”x„¢Qxè¯ó@DÜ™ç¦ Ó(’(>–\Q9E"áBdˆûýñžöK^¸ãÆ¿µz":I€áÊ?¯Å‚¸25T`TXN* „ Âê³Ï=�$á9€$c IÇ F5×OP…ÌzÐÜAÙÀ‰ª¨�"“û…Ùô2ã Wm„½œÒâlBÿ½µ r\J¦6ZÓ¶ùZQȾTÌ×)Ô†Î>³õ'Û3ÍÏÆÕ OئŽLæ ³ÿ8AL’p%,åVj ?ùÊ%d!æYÐ’ÍDãqX±n,^» vl‡Ïv¯lv‹Æá)¬lu'ç’zb®@“µNõö—~ÛÛ4a]i€áÒ{ÿð‹ºxâ>»¯J$Žà8bö1ØäG¢À(8qÔ0Ý"@�¬¦8iyžh8³�þ‡æýÓÃ{�æÉƒT­¿(&@Ö§Gþú4¡ïö6Fü•òQâB®omm�x4·~{2øœ.Í€šÿæ~ šK0ãûÕ×2øˆia¼øsËîýð§7çÏ>»ËNt2vò±ˆ)yÍt3Ÿ`ØþU9±–&¹Öf�óÚ½?ûmÇÌVûÀ!�0\rÿÃw×#îÚæòJv­@O-4Ò+‹AÌß?½àt¨­®¤ÖZNT¢  °Oó`qf>fç'²?sø¡�J1´hwì­Ó7!¡7¾ø\•>M¹T†‚! #0 |—áDEf`À'aŽê“ù"bžVÈcáÊ ðŸekÀ�(¾€¸GÉ”ǚˆ& ›_/ô‘Ä¡½¹Æ*ÌyíW‡öæ'CÔÙ(\vÿ÷Œ"qÀãµèH€qX!ˆ†A¨”$¸ñ¢³_h6 òyä`™…SØJ‘zùéŠ%Qßø~ôŒù_­†/Wo€„¢-8Ü›Ë ®j‰÷/{¶bÁüô[Ó Æç!v#ý—’þ›ÎKɸHSÊN>¬ßºþùå׳YA²Ù´�NSÊ1o>�mzàR|¡ÍŸ ’ݯüêöÇ:{\J‡ÕJ¼ü÷�^sÀŸxÂêóÙ®Ú�ö¢X‘“„`c LÒfNC‚ƒfÄáS“/¹žFRR~3YŸ™”öÕ7Â'‹WÁÊÍ»@B›Ýîv€Å¦‰$ÄÙHIæ"QjÓÜá\úÉг¶’ ò¤,å¿1˜2•¦ÄbËá'ÀA$¾óñ"X·§<ˆ ´¹]„ò³ÍOÂ(åÏ´ù--ñÖ_¾ûÖCRá— +€á²_?öƒúHèEÑ]mÇiÅ@Ôj²7•cq5øáºs¦Ãѽjµ8ÆP€! pùþ µgJ%fçGߟ~ëCØÙÔÛ�äIÑ"iþ ”²PF[ +=¿5}‰ÂpÍé¡6ª4 ˜ó¿×M~Bj 6 x bÉ$¼?|òÍz°xÜàò:ADò>¶Îèy;Œ-¯·«‰Z:/%Ø«qÚ¯zõWw¼Þ‰CXr8ì†=üôô½õÿ%z«½¢n"¤nÂhEqÞ€¤ ·~ÿ°ZD£’ FÔŸ\0ôÀ–¶¸,˜­$f$æè#Â'Ëׂm;Á‚íÇYÌbí±‹iÓ|og#ˆlFàÊ©c¡¯ž„àE73èT_3þÃ"$ë¿ûùRˆ¡9qz=Hs€€ ¸ªFI9¼ÑµÒaz"A`ˆ@I ÍßÒØÒ£ªòü—îþéÇ�=¥†®8ß%�ÿüÒ -[¶-_íQ"I´iTR n À¨^Ýá{gN¦ž�,·¤!ƒ¤ûPöŸ$ôd~š§ß¦=ோ¾‹ÃHê™oC»árÝßÞ›95ÏôìBú“íš(B×Θ}qA˜,Ut³,�«í{Àß?úöùƒ`÷y gF¬D’`hõ©ó â"úð\ÀCñ×è][9ã…»nY׎ÃÙipØ" 8«Ð×+¿ú,QQ3Z´Úˆc�Jµ÷I$ ë›áâS&ÁˆÁ}‰.€…–êbnD倆_?úÁ’$Á??[ _ï¯'¦X`t­­È#ßý…²â…\ךgúîüõXÑ7±ÏQ0süò[f‘w‚6W¨£ž'?âîÞùh!¬Ü¶¬>8¼.°`€kM(jÚÆgH„Q–ÖKIÄAò7¬4¢ÿÔǯ¼²¹¯pHÁa�0ÌQUqå�÷¾²ºÎ³¹<‚À™àbH¶Â¸åß�ËNc¨MX#§Ó(K´ª�HÅìvÿËÿk•H‘S Yo 7%dß3¹Èð×@çÍ8Û=j†ß™>³µ�2µ¶›vÚŒ«}pñ” )^˜ŠÂ%þ b.¦ÀG‹–ÁG‹×€€æÒ�Ø};.Ó…5Öá¨Ü¦×žÍr÷kå;f Bs™Tw"üÎèï½ð>Aèè² ‡=`páÏó‹EºWôø,8_ KõnÀD)®<ÿT´H=^ÀÐãýµ ¯{ùimXÐ÷E«6Á»Ëׂ£ÂGÌL|a›+«šR›}šÏ‘î•hö2•ô2?×ìYȳ³• ãß-Ó9 xSV9ìˆõŸ;M›¦ðÉ= -ý×ë6ÃÛó—@PN"vßC,0"Ÿj�¯É* Ú¦ê¢%ò�A ¶$}¢|ï[¿»ç�·ñG Àpɯ>å ¿åï‚·G¥H³ Ë8l¸Ñ߯Cc‡‰Cõür†ìÏ‚IˆÜ/HDöÇß}ý¿ÐŒ†ÒŠ(O®´b¥.RÚ6‡áüÜE±í·¶=s4‹Œ ™Þ|Þi´ê#@8�p$‘X "Ñùüà‹¯aGƒ•^`¥˜˜B/%À‹“ó!UöWp¿À�æn¾ æþòöÃNÙ— Ž(€áG�ÿ4èÓ£–QdJ¸�©öïÞz²ˆj{B"Ä“ï~ ®š •¨Csg;eâ*º¤hõ‘| AE!„>cñ8ÙØ$eÅðx[½Np¸\Dù*h¥–ŒÈ@£:¬!P +[Ž©~2R‘À²½�>ó…Ûf7vö8t$tÁeÐ10kÎCԇ÷ZÜ5Vì¤ F@õáÚ N‡^ hAF-zé�„Âðç¿þêZhñ¡XS 6¬efY‰xÈ7³ߥ!K{9‘€D8J¸ΊC¼¶iZxœ-ZK ‹‘™êëtŸ*ýpæÞd¨!Qër=úæ}wÜÕÙCÑpÄ" ×ýé/S¶mØ2W©î~4^$q¢ŒÂõž=ºUËZ)h°F�h ^œ÷4'bˆúØS©?dÉ&$æîÎæ : ò¦îâe}!Ûµ©›<%x‡;¦rŸ:Õ'Ñ„2ˆõûw >äâ?ÿøª�=&�GÆŠËO®^í™÷Üܧƒß%«KL„Ã`A›ûúY3¡¶¦RKA«ø Œ  ùý–¬ßóÖl!^†Ç ™7uþa?Ô‘Ÿ�CaùúÒ¯I»ÏÄÚ³@)æ=Îί;ù0�¿œD"_PñD[^?kö%×ÿdäÈ`g�Ug¡½ÊJ?üåƒ3C-sãŽÊ^ $wÚ{xÃ÷φªª ržeJ&dxö¯ÿ·×a„šd >ÿ\Þ)¸ï °V[ʘ§°)è „`ÞÄ­¹¶ðÂ…mzr¼­4Yÿ‰�ƒ{kݾK^ÿõ�ó;|@» ”Ï,Ýãš÷æ3�4EÕ«“ŠÅâDk纋fBU¥W÷ýÇJÀ{ž|Àn Ö:Ûì`Áå¡ô¬ ìCàF—~¡;$k²ÑVè°-\ê"ús)Ü71—¸“Mî7l€zËìCå¾ëÏ4‰,a9¢r÷âœ}¡`Ò'F_˜yÑu·^;¾w¸³Ç¬«@d€oýôö!²`{ÏòHá†Kί×MH ðÜ¿çÃÁx‹HóÒ�(š67ýM6„ÅÐ'°srfα‰H5Û\–†«ù³Ë‒ýÞ´Moú�}ÿùaP9êŸBõÁ ö*ÇîËÑ�ꔓ›Ädø[ï>öÀæ’Êae�„ïÞrÏ­šš~% Vßùgœ£ŽLNàe¶vÏ~ølí6ðcó”‰ÚkÜz*" G02¶qEÍ£ ´ütÜÝäS?ǯþ÷œÿwÿOä�í#Ê 7ƒöö=ùÔg›Z¾{ì±£­ÌœU>M$¨óà…O–�ê¾äbO Ò$ *Ë5ÏqKM´ú’š…�U;Å &EHß|äw+s dÚì™ÚMév¦ O7>S;‚È×›¥îÖ ¯>QM›ž%þÿ¢`°üX‹¯%êTiyoªÙÇÇ�û£µNÇ+£œsýáîÊ[,”@~ÀcdŸrþÅÇ&@ùc\”Nœyêé–)ãÇ€Õj�ÏVo€›w£)¥PrMg¨!–l"%k/+QÅ?LÈ@G(l£Ii| ÛÀ¤m)ýÞ”óì~Ý\¦¦ŸË<�I6_žgç¯cÙ†Á`ñõx5å:¦ôd÷×M«‹¤*O±û�uq·(0`ø°?}ÃU»Úa-vPF…ƒTSSã}Þ¬é- �s@´?}ê4é¤FÃG+6ºýõÄC #ìE¨K)l»ÀýLÕ°/LŽ%‰kõ�/²*ÔÚ))]�VH)3¾�B¯ÉöÛ¬ø#ÇeC/¡é(¸M�¤lºž¨ƒr E.4Ak ›O¾Q™$Å—¤ezÖÆJK žô7&}‚òñ�1î|üÊóW´ÏôžPF­<^VŸÏçÁ%§´<ø3ÕW9nò¤“,ýz÷‚åÛöÂn GéHU\3�Ž ôÓ&dÀŸƒÔkÒz× júÉBUҮѿ²ÕË1¥^¤š~ë2}ê?FI €Xý憤C~w£±ñ‰MCÔ™¿}ìIÓ~óøåß=,ut”@q€Ç‹Îq?¸¼w"¾9jw]äêÖ« $±ƒ —¨Ò¸r"íú\!íGî‰,&gXÁ§Ô,'ù oüæ¿æÚôä;É"ƒÐÜÐè•—&œsîƒ÷�yr]ߪ ”@éowËä^ïªê^qnDo�‹Òp°»D°:izp³GŸÁú›‰ŒK˜…AM;fn¦€ƒE@~êÏ‹*iÇø{ÒyØ7žÚ'" DŠUIn¨vJ¿›zÍe»ièÐX‰_숆2(=Ðx5P/èÉõ{ü> Âw"²P%z¼¤…^g€\Í6¾i£³M.dz€�ú´´Ççé].Èëï“�çWs! ŠÒ'ïkUw‹ €SR›ì·ª¶û]¯Ýsë¾¶MEòAt\òÀ§7×¼- +'Æà³TT“Mž�ïY‚v0#ÙO´ Ôl‡Õü×gÛðä{ê¦Çç’þ&°YÕ¯$~YUQù‡WyëG¥÷2ä†2è¸òá§/Ü»}Ûìˆ*Ž�$å*GE•6‡æRœÑj�ú;§ôßÞ3ªf?`pôf.!U«OÂtâQˆ¢Mï´H�NAYÚ«ÿ€ç^¼ýú·Ú¹÷e0At2\ÿÔK3¶¬Ysq"‘œ¥Ÿ`¯´Y°¨@³Þ@NvÒ„Ln¸Bƒ†Ôt§ÕŒ”29¨©?Tšv=‰X{5Ò’p‹°Ýjµ|6hĈמ¾áŠrT^'Bt!x`ÑÆ>Ëß{‰ u3ƒ a’†{ƒÍk·z½ •9Ë€ ŸÅB£ ­ö›�`iµ1ÕOˆÒb÷8­ê²šÚîÿ{öw?¼kÒÐÝ�7Êeࡌº(ÌY½Úæ Úº¯ýìÃc÷oÛtZ,!OTipBjU‹Çfu{´²g,U–ž2+ƒ•¡h0yæq•sZX/ ‚� Æ­ŠZ/ªòf»Uúªç€!;õôµO¼î¾‘#ã�=¦eH‡28„àÁÏ×yí’͵nÅž;¾Y9QVÁ>TQÕ^²(T'ð$Ä\[�‚€³ãÒJÆ|mÄŒ„Lš|RËcÇâ�LDT‹šHXTJŠÚ( Â^Q�m”Dë’>#F.9n꾘ß9yx ³Çª …Aâðæ›ª´¦Ûv«§Ê/ÉI¯EûmËç}Ø/m Èjÿ„,÷ŠËÉnj\®‹è@ØÀ#Z,H–�¥DL&eŒ,v)*¨’¬$“Š$A9©D›Ôh“,­’´W”„íV‡oÛØ³Nß!¹*â’%� 6UÈ#öOÌš%È�=eh;”@ÊpC”¡ G0”@ÊpC”¡ G0”@ÊpC”¡ G0”@ÊpC”¡ G0”@ÊpC”¡ G0”@ÊpC”¡ G0”@ÊpC”¡ G0”@ÊpC”¡ G0ü›iºƒ€õÑZIEND®B`‚(€ ?ugD%vi>Rxi=ywj7œm8º†u;Òˆv:âŠv:îˆx:ôŠx<ÿŠx<ÿˆx:ôŠv:îŠt<áˆu;Îm:¸wj7œxi=yvi>RugD%?ii<qh=S{l7—„o9Єu<úŒx<ÿ�z<ÿ�{=ÿ�|=ÿ’~=ÿ’~=ÿ‘}>ÿ‘}>ÿ‘}>ÿ‘}>ÿ‘}>ÿ‘}>ÿ‘}>ÿ‘}>ÿ’~=ÿ’~=ÿ�|=ÿ�{=ÿ�z<ÿŒx<ÿ„u<ú…r;Ï{l7—qh=Sii<rlF(ui:‚ƒp;Έw>þ�{=ÿ�?ÿ”?ÿ“@ÿ•€@ÿ•€@ÿ•�@ÿ•�@ÿ•�@ÿ•�@ÿ–�Aÿ–�Aÿ–�Aÿ–�Aÿ–�Aÿ–�Aÿ–�Aÿ–�Aÿ•�@ÿ•�@ÿ•�@ÿ•�@ÿ•€@ÿ•€@ÿ“@ÿ”?ÿ�?ÿ�{=ÿˆw>þƒp;Îui:‚ylF(ynMsg:~ƒq<Ú‹x?ÿ�|@ÿ“~@ÿ“@ÿ”Aÿ”€Aÿ”€Aÿ–�Aÿ•�Bÿ•�Bÿ—‚Bÿ—‚Bÿ—ƒBÿ—ƒBÿ—ƒBÿ—ƒBÿ˜ƒBÿ˜ƒBÿ˜ƒBÿ˜ƒBÿ—ƒBÿ—ƒBÿ—ƒBÿ—ƒBÿ—‚Bÿ—‚Bÿ•�Bÿ•�Bÿ–�Aÿ”€Aÿ”€Aÿ”Aÿ“@ÿ“~@ÿ�|@ÿ‹x?ÿƒq<Úsg:~ynM}qH?~n?¶ˆv>ý�}?ÿ“@ÿ“�@ÿ”‚Aÿ”‚Aÿ–‚Aÿ•ƒBÿ—ƒBÿ—„Bÿ—„Bÿ˜„Bÿ˜„Cÿ˜„Cÿ˜…Cÿ˜…Cÿ˜…Cÿ˜…Cÿ™…Cÿ™…Cÿ™…Cÿ™…Cÿ™…Cÿ™…Cÿ˜…Cÿ˜…Cÿ˜…Cÿ˜…Cÿ˜„Cÿ˜„Cÿ˜„Bÿ—„Bÿ—„Bÿ—ƒBÿ•ƒBÿ–‚Aÿ”‚Aÿ”‚Aÿ“�@ÿ“@ÿ�}?ÿˆv>ýxj8¶{oA>xoMY”‰bÒ“„Nÿ“ƒEÿ•„Dÿ•‚Cÿ•‚Cÿ–‚Cÿ—ƒDÿ—…Dÿ™…Dÿ˜„Eÿ™†Gÿ™ˆGÿš†Eÿš†Eÿš†Eÿš‡Eÿš‡Eÿš‡Eÿ›‡Fÿ›‡Fÿ›‰Hÿ›‰Hÿ›‰Hÿ›‡Fÿ›‡Fÿ›‰Hÿ›‡Fÿ›‡Fÿš‰Gÿš‡Eÿš‰GÿšˆGÿš†EÿšˆGÿ™ˆGÿ™†Gÿ˜„Eÿ™…Dÿ—…Dÿ—ƒDÿ–‚Cÿ•‚Cÿ–ƒEÿ”�Bÿ’�Bÿ�|@ÿ�q<Ó~rCWÿe_CS®¨�×Ç¿¦ÿ–�Fÿ—„Eÿ˜„Fÿ™…Fÿ™†Gÿš†EÿšˆGÿ›†Fÿ›‰Hÿ�‰Hÿ�‰HÿœˆFÿžŠIÿžŠIÿžŠIÿžŠIÿžŠIÿ�ˆGÿž‰GÿŸ‹IÿŸ‹IÿŸ‹IÿŸ‹IÿŸ‹Iÿž‰GÿŸ‹IÿŸ‹IÿŸ‹Iÿž‰GÿŸ‹IÿžŠIÿžŠIÿžŠIÿžŠIÿžŠIÿžŠIÿœˆFÿ�‰Hÿ�‰Hÿ›‰Hÿ›‡HÿšˆGÿš†Gÿ™†Gÿ™…Fÿ˜„Fÿ—„Eÿ–ƒEÿ‘€Cÿ…s?Ö}pCO]X91‹ƒiÆÐË·ÿ¸¬‘ÿ”ƒOÿ•„Gÿ™†Hÿš‡Iÿš‡Iÿ›ˆJÿ›ŠJÿ›‡Hÿœ‹Jÿœ‹Jÿ�ŠKÿ�ŠKÿ�ŠKÿžŒKÿžŒKÿžŒKÿžŠIÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿŸ‹LÿŸ‹JÿŸ‹LÿŸ‹LÿŸ‹LÿŸ‹LÿžŒKÿžŒKÿžŒKÿžŒKÿžŠIÿžŒKÿžŒKÿžŒKÿžŒKÿ�ŠKÿ�ŠKÿ�ŠKÿœ‹Jÿœ‹Jÿœ‰Jÿ›ŠJÿ›ˆJÿš‡Iÿš‡Iÿ™†Hÿ˜‡Hÿ—†Gÿ–…Hÿ�Dÿƒu@Æ|qF/ffL fZ1•˜ŒpýØÓ¿ÿÙÔÀÿ•ƒaÿŽyFÿ–�Eÿ›ˆIÿœˆJÿœ‰Jÿ�‰Jÿ�‹JÿžŠKÿžŠKÿžŠKÿ ŒKÿ ŒKÿ ŒKÿ ŒKÿ ŒKÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ¡ŒLÿ ŒKÿ ŒKÿ ŒKÿ ŒKÿ ŒKÿžŠKÿžŠKÿžŠKÿ�‹Jÿ�‰Jÿœ‰JÿœˆJÿ›ˆIÿ›‡Iÿš†Hÿ™†Hÿ˜…Gÿ—„Gÿ�|Cþn?”�qT rgBEl`3ä��rÿÖÑ¿ÿ×Ó½ÿÙÔ¿ÿÚÖÃÿ¨™vÿ�}Dÿ›ŠJÿ�ŒKÿž‹Lÿž‹Lÿž‹LÿŸ�LÿŸ�LÿŸ�LÿŸ�Lÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿŸ�LÿŸ�LÿŸ�LÿŸ�Lÿž‹Lÿ›ŠJÿ•ƒGÿ‘~Dÿ‘}Dÿ‘€Eÿ•‚Eÿ˜‡Hÿš‰Iÿ™ˆIÿ˜‡Hÿ•„Gÿˆw>ä{pGD™ffyk@“~j;ÿ �pÿÙÒ¿ÿØÑ»ÿÙÒ»ÿÚÓ½ÿȼ£ÿ¡�oÿ�zIÿš†Iÿ ŒMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ ŽMÿ ŽMÿš†IÿŠs>ÿ~e6ÿ{c6ÿ~f8ÿ„m<ÿ�{Cÿ—„Gÿ›ˆKÿ›ŠKÿš‰Jÿ™ˆKÿ�GþoB’™ffwLtAÒˆtBÿ�~XÿÙÒ¿ÿÙÒ¾ÿØÐºÿÙÑ»ÿÚÓ¼ÿÝØÃÿàÙÇÿ¬œ|ÿ—‚Gÿ¡�Nÿ¡�Nÿ¢�Pÿ¢�Pÿ¢�Pÿ¢�Pÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Pÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Pÿ¢�Oÿ¢�Oÿ¢�Pÿ¢�Pÿ¢�Pÿ¢�Pÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Pÿ¢�Oÿ¢�Pÿ¢�Pÿ¢�Oÿ¢�Pÿ¢�Pÿ¢�PÿžŠMÿÙлÿÝÖÄÿÖ͹ÿÎðÿ°¡†ÿ‚j?ÿ‡q>ÿ‘~Gÿ™†Lÿœ‰Kÿœ‰Lÿ›‰Mÿ—†JÿƒuAÒwL}oGG�}Hð�{FÿƒoBÿÍȲÿÚÕÀÿÙÒ¼ÿÙÒºÿØÑºÿÚÕ¼ÿÜ×ÂÿàÛÆÿÔ̶ÿ’~Hÿ¡�Pÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Pÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Pÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Pÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¢‘Qÿ¡�Pÿ®ŸqÿäÞÍÿäßÍÿáÝËÿáÜÊÿÙÔ¿ÿ£“qÿj;ÿ‹vAÿ•ƒGÿ›ŠNÿœŒNÿ›‹Nÿ™ˆMÿŽ~Ið{qFH~rFm’‚Jý–ƒJÿ‡q>ÿ·ª�ÿÚÕÃÿÚÕ¿ÿÚÒ»ÿÙÑ»ÿÚÒ»ÿÚÓ¼ÿÜ×ÁÿàÙÅÿãÜÊÿ•�PÿšˆLÿŸ‹Nÿ �Pÿ¢‘Qÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿš‡MÿǼ¢ÿâÝËÿáÚÈÿáÚÇÿàÙÇÿáÚÈÿÌÄ®ÿ’€[ÿ‚l=ÿ�{Eÿ˜‡Lÿ�ŒMÿ�ŒMÿ›‹Nÿ’‚Jý~rFmÿÿ~uE�–†Mÿš‡MÿŽzDÿ�‹hÿÜ×ÅÿÜ×ÁÿÚÕ¿ÿÛÔ½ÿÚÓ¼ÿÚÓ½ÿÜÕ¾ÿÝØÂÿߨÄÿÜÕÁÿŠrIÿˆo>ÿ�yDÿ•Hÿ�‰Mÿ£�Rÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ�ˆMÿÊ¿¥ÿãÜÊÿàÙÆÿߨÄÿߨÄÿàÙÆÿáÚÈÿáÜÊÿ¿³™ÿŠtIÿ�xCÿš†NÿŸ‹OÿžŒPÿ�ŒOÿ–†Mÿ~uE�ÿÿÿÿ�wHžš‰Nÿ�‹Oÿ”€JÿŽyKÿ×нÿÝØÄÿÜ×ÁÿÛÖ½ÿÚÕ¼ÿÚÕ½ÿÛÖ½ÿÛ×¾ÿÜ׿ÿÞÙÁÿáÚÄÿáÜÇÿ¿³˜ÿ›‡bÿ�‰bÿ•~Mÿ ŒPÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“UÿŸ‹OÿÌĪÿäÝÊÿáÚÄÿÞÙÃÿÝØÂÿÞÙÃÿßÚÄÿàÛÆÿáÜÈÿàØÅÿ¥”qÿ�xCÿ˜„Kÿ�‹Oÿ ŒPÿžŒPÿš‰Nÿ€vG�ÿÿÿÿƒxI§›‹Nÿ �Sÿœ‹Nÿ‹wBÿŹ ÿÞÙÅÿÞÙÄÿÜØÁÿÜ׿ÿÜ׿ÿÜ×¾ÿÜ×¾ÿÜ׿ÿÞÙÀÿߨÂÿàÙÃÿáÜÆÿãÞÊÿåàÎÿèãÒÿ¶§ƒÿœŠNÿ¦•Uÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ¨—Xÿ¨—Xÿ¨—Xÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ¨—Xÿ¨—Xÿ§–Vÿ¨—Xÿ§–Vÿ§–Vÿ§–Vÿ¨—Xÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ§–Vÿ£�RÿÌÃ¥ÿåàÌÿáÜÆÿßÚÄÿÞÙÁÿÞ×ÁÿߨÂÿßÚÄÿáÜÆÿâÝÉÿÎÆ¯ÿ“‚Xÿ†p=ÿ•�HÿŸŒOÿ �RÿŸŽQÿ›‹Nÿ€wF§ÿÿÿÿ†xL�œ‹RÿŸ�Uÿ �Tÿ•�Lÿ«›xÿàÜÊÿߨÅÿÝØÃÿÝÙÂÿÝÙÂÿÝØÀÿÝØÀÿÜ׿ÿÞÙÁÿÞÙÁÿߨÂÿßÚÄÿàÛÅÿâÛÇÿäßËÿåàÏÿÚÕÀÿœ‡Nÿ¥•Xÿ©˜[ÿ©˜[ÿ§—Yÿ©˜[ÿ§—Yÿ©˜[ÿ©˜[ÿ§—Yÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ§—Yÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ§—Yÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ©˜[ÿ¨—Zÿ´¥yÿåàÎÿãÜÉÿßÚÄÿߨÂÿÞÙÁÿÞÙÁÿÞÙÃÿàÙÃÿáÜÇÿáÜÈÿâÝËÿÓ̸ÿ˜„Uÿš‰Nÿ¢’Vÿ¢‘VÿŸ�Uÿœ‹Rÿ†xL�ÿÿ†zO�œ‹Sÿ �Vÿ£’Wÿ�ŒQÿ“�NÿÚÖÃÿáÜÈÿßÚÅÿߨÄÿߨÂÿÝØÀÿÞÙÁÿÞÙÁÿߨÂÿߨÂÿߨÂÿߨÂÿàÙÃÿàÙÃÿáÚÆÿãÜÈÿæáÍÿèãÒÿ§—dÿ¨–Zÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿ©–Yÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿ©–Yÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿ¡�UÿÝØÄÿäßÊÿáÜÆÿàÙÃÿߨÂÿߨÂÿߨÂÿÞÙÃÿàÙÃÿáÜÇÿãÜÉÿãÞÌÿȽ£ÿ’}Hÿ �Sÿ£“Wÿ£’Wÿ �Vÿœ‹Sÿ†zO�‡yRo�ŠSÿ£’Wÿ¥’Xÿ£�Vÿ˜ƒKÿ¼®�ÿâÜËÿáÚÇÿàÙÅÿàØÃÿߨÂÿߨÂÿàØÃÿàØÃÿàØÃÿàØÃÿàØÃÿàØÃÿàØÃÿàØÃÿáÙÄÿãÛÆÿåÞËÿçáÐÿ¨•dÿ©•Yÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ ‹PÿØÎ¶ÿåÞÌÿãÛÆÿáÙÄÿàØÃÿàØÃÿàØÃÿàØÃÿàØÃÿáÙÄÿâÛÈÿãÜÊÿäÞÍÿ¡�bÿ•~IÿŸ‹Qÿ£�Vÿ¥’Xÿ£’Wÿ�ŠSÿ‡yRo…yQEš‰Tþ¢‘Xÿ¥”Yÿ¤“Xÿ�ŠPÿ›‡XÿáÛÊÿâÝÉÿáÚÆÿàÛÃÿߨÄÿߨÂÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿáÚÃÿâÛÅÿäÝÉÿçâÎÿ Œ_ÿ¢�Uÿ«š]ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ­œ]ÿ­œ]ÿ­œ]ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ¬›^ÿ«š]ÿ ‹PÿãÞÌÿæáÍÿãÞÉÿáÚÆÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿàÙÃÿáÚÄÿâÝÈÿãÞÊÿÖÍ·ÿ¡�dÿŽyBÿ˜„Lÿ �Sÿ£’Wÿ¢‘Xÿš‰Tþ„zRGˆ[—ŠTZÿ¤”Zÿ£“Yÿž‹Rÿ‘|EÿǼ¡ÿãÞÌÿãÜÉÿâÛÇÿáÚÄÿàÙÃÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÆÿâÝÇÿäÝÊÿåàÎÿÀ´’ÿ—ƒJÿ£’Wÿªš]ÿ­œ_ÿ­œ_ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ­œ_ÿ®�`ÿ­œ_ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ­œ_ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ­œ_ÿ­œ_ÿ«šcÿéåÔÿæáÐÿåÞËÿãÜÈÿâÛÅÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿâÛÇÿãÞÉÿäßËÿäßÎÿÇ»¡ÿ•�Rÿ“Gÿ �Tÿ£•Yÿ£”Zÿ—‰Tïˆ[™™f�ƒPÒ£”Zÿ¤•[ÿ¢’Xÿ›ˆNÿ�|Fÿ¸¬‰ÿäßÍÿãßÊÿâÞÈÿáÜÆÿàÛÅÿáÜÄÿáÜÄÿáÜÄÿáÜÄÿáÜÄÿáÜÄÿáÜÄÿáÚÄÿáÜÄÿáÜÄÿáÜÄÿáÜÄÿâÝÇÿãÞÉÿåáÌÿçãÑÿ®�sÿ—ƒJÿ¦•Yÿ®�`ÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯ŸfÿáÜÇÿèäÒÿæáÍÿãßÉÿâÝÇÿáÚÆÿáÚÄÿáÜÄÿáÜÄÿáÜÄÿáÜÆÿáÜÆÿâÝÇÿãÞÉÿäßËÿäßÍÿâÞËÿ¸«‰ÿš†Nÿ¢‘Xÿ¥–\ÿ£”Zÿ�ƒPÒ™™f�S�¢’Zÿ¦—]ÿ£•Yÿš‡Nÿ›ŠWÿÒʳÿåßÎÿäßËÿäÝÉÿâÝÇÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿãÜÆÿäÝÉÿæßÌÿçâÐÿéæÕÿË£ÿ«šaÿ¯žaÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ°Ÿbÿ³¤nÿáÚÄÿçâÐÿåàÌÿäÝÉÿãÜÆÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÇÿâÛÅÿâÝÇÿäÝÉÿäßËÿäßÎÿæáÐÿ°¢xÿ �Tÿ§—]ÿ¦—]ÿ¢’Zÿ�S�‹XB �Yþ©˜]ÿ¦–\ÿŸ‹Qÿ§•fÿåÞÌÿåàÏÿåàÌÿäßÊÿãÜÈÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÈÿäÝÉÿåÞÊÿçàÍÿèãÑÿêæÕÿêæÖÿ³¢nÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ´£nÿàÙÃÿèáÏÿåàËÿäÝÉÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÈÿäßÊÿåàÌÿåàÏÿÚÒ¼ÿ�ˆMÿ¨•[ÿªš^ÿ©˜]ÿ �Yþ��VAŸ_™‰X⨗^ÿª–]ÿ¤�Wÿ�…PÿÝÖÃÿåàÏÿæáÍÿåàËÿäÝÉÿäÝÇÿäÝÇÿäÝÇÿäÝÇÿäÝÇÿäÝÇÿäÝÇÿäÝÇÿäÝÉÿäÝÉÿäÝÉÿäÝÇÿäÝÉÿåÞÈÿåÞÊÿåàÊÿæßËÿçâÍÿéâÐÿéåÔÿìè×ÿ×̱ÿ°žbÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ²Ÿeÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ²Ÿeÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ² dÿ²Ÿeÿ² dÿ°žbÿÀ²‡ÿéäÒÿçâÎÿæßËÿåÞÈÿäÝÇÿäÝÇÿäÝÇÿäÝÇÿäÝÇÿäÝÉÿäÝÇÿãÜÈÿäÝÊÿæßËÿçàÎÿæâÑÿ±¡vÿ¦’Yÿ­š`ÿ«˜^ÿ¨—^ÿ™‰XâŸ_“‡X“¦–^ÿ©™`ÿ§–[ÿ›‡NÿËÀ¤ÿåàÐÿäßÍÿåàËÿäÝÊÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÊÿåÞÊÿåÞÊÿåÞËÿæßÌÿæáÍÿçàÎÿçâÐÿèãÒÿéåÔÿæÞÌÿÁ´†ÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢fÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢fÿ³¢gÿ³¢fÿ³¢gÿ³¢gÿ³¢gÿ³¢fÿ³¢fÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢fÿ³¢fÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ°ŸjÿéåÓÿçâÐÿæßÌÿåÞÊÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿåÞËÿæáÍÿæáÐÿÕ̳ÿ¤�Wÿ®›bÿ¬›bÿªšaÿ¦–^ÿ‘…X“•ˆc)¢‘_þ«šbÿ©˜_ÿ ŒTÿµ¦~ÿçâÑÿåàÏÿäßÍÿåÞËÿäßËÿäÝÊÿåÞËÿåÞËÿåÞËÿåÞËÿåÞËÿåÞËÿåÞËÿåàÌÿæßÌÿæßÍÿçàÎÿæáÏÿçáÐÿèâÑÿèãÒÿéäÔÿéåÕÿëç×ÿáÚÆÿ¹©tÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ®œ`ÿÛÓ¼ÿèãÓÿæáÏÿæßÌÿåÞËÿåÞËÿåÞËÿåÞËÿåÞËÿåÞËÿåÞËÿåÞËÿäÝÊÿåÞÌÿçàÍÿçâÑÿçâÒÿ£�Yÿ­šcÿ®�eÿ¬›cÿ«šbÿ¢‘_þ‘‹a*—Š[ê›bÿ«›bÿ¥’Yÿ¥”`ÿãßÍÿæßÐÿæàÏÿæáÌÿæßÌÿåÞËÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿçàÍÿçàÎÿèáÏÿçâÐÿèãÑÿéäÓÿéåÔÿêæÕÿÞÖ¿ÿãÛÆÿŹŽÿ¼¬xÿµ¥lÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¦nÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ´¤jÿ®›aÿÎŤÿéäÔÿçâÐÿçàÎÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿçàÎÿéâÐÿéäÔÿ° oÿ«›_ÿ¯ gÿ®žeÿ­œdÿª›bÿ—Š[Ô‰`J¦™cÿ¬›cÿ§–^ÿŸŠOÿ×йÿçâÑÿåàÏÿçàÍÿæáÍÿåÞËÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÍÿçàÍÿèáÏÿèâÑÿéåÔÿèâÑÿêçÖÿëç×ÿÖˬÿ·¨nÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ§oÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ§oÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ§oÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ§oÿµ¥kÿµ¥kÿµ¥kÿµ§oÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿµ¥kÿ´¤hÿª™^ÿƺ”ÿéäÓÿçâÐÿçàÍÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÌÿæßÍÿæáÍÿçáÐÿéåÔÿ¿³�ÿ¥‘Wÿ°�dÿ¯Ÿgÿ¯žfÿ¬œdÿ¦—bÿ’ˆ^Iÿÿš�_Ó­�hÿ«›cÿŸ�Uÿĸ•ÿèãÒÿçáÐÿæàÏÿçâÎÿåàÎÿçàÍÿçàÍÿçâÎÿçàÍÿçàÍÿçàÍÿçàÍÿçâÎÿæâÏÿèãÏÿêãÑÿÛÓ¹ÿ¾±‚ÿ¶¥nÿÑɦÿ¿²‚ÿµ§oÿ¶§nÿ¶§nÿ¶¦mÿ¶¦mÿ¶¦mÿ¶§nÿ¶§nÿ¶§nÿ¶¦mÿ¶¦mÿ¶¦mÿ¶§nÿ¶§nÿ¶¦mÿ¶¦mÿ¶¦mÿ¶§nÿ¶¦mÿ¶§nÿ¶§nÿ¶¦mÿ¶¦mÿ¶¦mÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶¦mÿ¶§nÿ¶¦mÿ¶¦mÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶¦mÿ¶¦mÿ¶§nÿ¶¦mÿ¶¦mÿ¶§nÿµ¥lÿ°Ÿdÿ§”[ÿåàÌÿéäÓÿéâÐÿèãÏÿçâÎÿçâÎÿçâÎÿçâÎÿçâÎÿçâÎÿçàÍÿçàÍÿçâÎÿçâÎÿèáÏÿçâÐÿéäÓÿâÝËÿ¦•^ÿ©–]ÿ¯Ÿgÿ° hÿ®Ÿiÿ­œeÿ™‰^Óÿÿ”Š`O¥˜fþ­žiÿ§—_ÿ°¡tÿçãÕÿçâÓÿçâÑÿæáÏÿåáÏÿåàÎÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿçâÐÿèãÑÿéåÔÿÚÒ¸ÿ¬›bÿ³¤kÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶§nÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶§nÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶§nÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ³¦mÿ¨—[ÿÊÀžÿëç×ÿéåÔÿçãÑÿæâÐÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿæáÏÿçâÐÿæâÐÿèãÒÿéæÔÿÚÕ½ÿ �Vÿªšaÿ° hÿ¯¢kÿ®žhÿ¥˜fþ”Š`Oš�^ЮŸjÿ¯Ÿjÿ«œfÿàÛÉÿéäÔÿçãÓÿçâÑÿçâÐÿæáÏÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçãÑÿèãÒÿéåÔÿêçÖÿíéÛÿÊÁšÿ¶§nÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·¨nÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ²¥lÿ³¤pÿíéÛÿëè×ÿéåÔÿèãÒÿçâÑÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿèãÑÿèãÒÿéåÔÿéæÕÿÏÇ©ÿ¡�Uÿ¬žfÿ°£lÿ¯¢lÿ®Ÿjÿœ�`Ñ›Žg;¦™hþ¯¢lÿ¯ jÿ¨˜_ÿåáÐÿèäÔÿèäÓÿçãÑÿæâÐÿæâÐÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÒÿèäÒÿèäÓÿéåÔÿêçÖÿìèÛÿâÞËÿ¶ªrÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸¬sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿµ¨oÿÚÓ¸ÿíêÝÿëè×ÿéæÔÿèäÓÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÒÿçãÒÿèäÔÿéæÔÿêéÙÿ·�ÿ¥•Yÿ¯Ÿiÿ®¢mÿ¯¢lÿ¦™hþ›Žg;›Œb°¯¢lÿ±¤nÿ±¢lÿ½°‚ÿéäÓÿéåÔÿèãÓÿèãÑÿçâÐÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿéäÒÿéäÒÿéåÔÿéæÔÿëçÖÿìèÚÿíêÜÿÁ´„ÿ¹«sÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿ¹«sÿ¾±ÿéåÔÿëè×ÿéæÔÿéäÒÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿèãÑÿéäÒÿèãÒÿéåÔÿéæÕÿêçØÿ¶©wÿ¨—^ÿ±¡kÿ±¤nÿ¯¢lÿ›�b°�‘m¦›gû¯£nÿ²§oÿ²¦oÿÁ¹�ÿéèÙÿéæÕÿéåÓÿèäÒÿçãÑÿèäÒÿèäÒÿèäÒÿèäÒÿèäÓÿéåÓÿéåÔÿéæÔÿêçÖÿëèÙÿíéÛÿîëÞÿÒʧÿ¸¬sÿº­uÿº­uÿº­uÿº­uÿº­uÿº«uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº«uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº«uÿº­uÿº­uÿº­uÿº«uÿº­uÿº­uÿº­uÿº­uÿº­uÿº«uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº«uÿº­uÿº­uÿº«uÿº«uÿº­uÿº­uÿº«uÿº­uÿº­uÿµ©oÿÔɪÿëèÙÿéæÕÿéåÓÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèåÓÿéæÔÿêçØÿçäÓÿ¬œdÿª›bÿ¯¤nÿ¯£nÿ¦›gû�‘m›�ev¬ nþ±¥pÿ´¨qÿ¶ªsÿ³§pÿêéÙÿêçÖÿéæÔÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÔÿéæÔÿéæÔÿêéÖÿëèÙÿíéÛÿéæÔÿÛ×¹ÿÌÄ�ÿ¼¯xÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿ»®wÿº­vÿº­vÿ»®wÿ»®wÿ»®wÿ¹¬tÿµ©oÿ³¦mÿ°£gÿÀ¶‡ÿìèØÿêçÕÿéæÔÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéæÔÿéæÕÿêçØÿÛÖ¾ÿ§—Zÿ®Ÿiÿ°¤oÿ¬ nþš�fw¤˜fÖ°¥oÿ´¨pÿ¶ªrÿ¸¬sÿ°£gÿÞÙÀÿìè×ÿêæÕÿéåÔÿéåÔÿéåÔÿéåÔÿéåÔÿêæÔÿêçÕÿëè×ÿíèÙÿîêÝÿÍÅ�ÿ¼¯vÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¹¬sÿµ¨lÿ²¥iÿ¶¦jÿ´¦jÿ´¨lÿ´¨lÿ³¦jÿ±¤gÿ±¤gÿ´¦jÿ·ªoÿ¹¬qÿ³¦jÿª›Zÿ©—Sÿ§–Qÿ¾²�ÿìèØÿëçÖÿêæÔÿéåÔÿéåÔÿéåÔÿéåÔÿéåÔÿéåÔÿéåÔÿéåÔÿéåÔÿéåÔÿéåÔÿéæÔÿéæÔÿéåÔÿéåÔÿéäÔÿéåÔÿêçÔÿéè×ÿêæØÿÈ¿™ÿ¨™[ÿ°£lÿ°¥oÿ¢—hמ�n%¬žmþµ¨rÿµ©rÿ¹¬vÿº«vÿ±£gÿåàËÿìèØÿëçÖÿêçÕÿéæÔÿéæÕÿëçÕÿëçÖÿëè×ÿíèÙÿíêÜÿïëßÿØÐ±ÿ»®vÿ½°xÿ¿°zÿ¿°zÿ½°xÿ½°xÿ¿°zÿ¿°zÿ¿°zÿ¿°zÿ¿°zÿ½°xÿ¿°zÿ¿°zÿ½°xÿ½°xÿ¿°zÿ¿°zÿ½°xÿ¿°zÿ½°xÿ¿°zÿ¿°zÿ¿°zÿ¿°zÿ¿°zÿ¿°zÿ½°xÿ½°xÿ¿°zÿ½°xÿ¿°zÿ½°xÿ¿°zÿ¿°zÿ¿°zÿ¿°zÿ¿°zÿ¿°zÿ¼¯wÿ¹¬qÿ´¤fÿ«šXÿ¥–Rÿ¦”Mÿ¨–Qÿ§—Rÿª™Tÿ¨–Qÿª™Uÿ¬œ\ÿ¦–Qÿ«œZÿ° `ÿ­šXÿÛÒ¶ÿàØÁÿÔʨÿçâÎÿìèØÿêçÖÿêçÕÿêæÔÿêæÔÿéæÔÿêæÔÿêæÔÿêæÔÿêæÔÿêæÔÿêæÔÿêæÔÿêæÔÿêæÔÿêæÔÿéæÔÿéæÔÿêæÔÿéåÔÿêæÔÿêæÕÿêæÖÿëè×ÿ·ªvÿ¯žcÿ³¦oÿ¬žmþž—n%ž’jz¯£rþµ©uÿ·«wÿ¹¬xÿº­wÿ³¦kÿïëÝÿíéÛÿëèÙÿëè×ÿëèÖÿëè×ÿìèØÿìéÚÿíéÛÿîëÝÿÞÙ¿ÿÎÅœÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¾±zÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¿²|ÿ¾±zÿ¹¬sÿ±¢cÿ° `ÿߨÀÿðíâÿëè×ÿãÞÈÿÜÕºÿÕÍ­ÿâÝÇÿîëàÿïìáÿàÙÂÿȽ“ÿ°¡bÿúŠÿîëÝÿîëÝÿíêÛÿìéÚÿëè×ÿëèÖÿêçÖÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿéæÔÿéèÕÿêçÕÿêçÖÿêçØÿâÝËÿ­�cÿ±¥mÿ¯£rþž’jz£™mÉ´©tÿ·«vÿ¹¬xÿº®yÿ»®wÿ¾±}ÿîêàÿíêÝÿíéÜÿìéÛÿìèÚÿìéÛÿíêÜÿîëÞÿïìßÿïìâÿÖάÿ¿²{ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¿°{ÿ¹¬pÿ°Ÿ^ÿ¹¬sÿéåÔÿîëàÿïëßÿîëÞÿîêÝÿîêÝÿîêÝÿîêÝÿîêÝÿîêÞÿîëÞÿîëÞÿîêÞÿîêÝÿíéÜÿìéÛÿìèÚÿëèÙÿëè×ÿêéØÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿéæÕÿêçÕÿéæ×ÿ鿨ÿéèÙÿËßÿ¯ gÿ³¨sÿ¥šlÊŸŸo®¢oý¶ªvÿ¹«xÿº­yÿ¼¯{ÿ¼¯{ÿÅ»ŒÿïìáÿîëàÿïëßÿîêÜÿïëÞÿïìßÿïìáÿçãÐÿßÚ¾ÿÏÆ�ÿ¾²}ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ¿³~ÿ½¯wÿ²¢bÿȽ�ÿðìßÿïìßÿîëÝÿíêÜÿíéÜÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÜÿíéÜÿíéÜÿíéÛÿíéÛÿìèÚÿìèØÿëèÙÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿëè×ÿêçÖÿêéÖÿêçØÿêçÙÿëèÚÿäàÏÿ®žbÿ´¨qÿ®¢oýŸŸo¡—qJ°¤uþ·«wÿ»­zÿ¼®{ÿ¾°}ÿ¿²~ÿ¿¯{ÿÞÙ¼ÿðíâÿñîáÿ×Ï­ÿðíâÿäßÇÿËÀ“ÿ¿³~ÿÀ´ÿÀ´ÿµÿµÿÀ´ÿµÿµÿÀ´ÿµÿÀ´ÿµÿµÿÀ´ÿÀ´ÿÀ´ÿµÿµÿÀ´ÿµÿÀ´ÿÀ´ÿÀ´ÿÀ´ÿÀ´ÿÀ´ÿµÿÀ´ÿÀ´ÿÀ´ÿµÿµÿµÿµÿÀ´ÿÀ´ÿµÿÀ´ÿÀ´ÿÀ´ÿµÿµÿÀ³ÿ¹¬oÿÑÈ¡ÿòîâÿðìßÿïëÝÿîêÚÿíéÛÿíéÙÿíéØÿíéØÿíéÙÿíéÙÿíéØÿíéØÿíéÙÿíéÙÿíéØÿíéØÿíéØÿìèÚÿìèØÿìè×ÿìè×ÿìè×ÿìèØÿìèØÿìèØÿìèØÿìè×ÿìè×ÿìèØÿìèØÿìèØÿìè×ÿìèØÿìè×ÿìè×ÿìè×ÿìèØÿìèØÿìèØÿìèØÿëè×ÿëèÙÿëè×ÿëèÙÿëèÙÿéèÜÿ¾²�ÿ´§pÿ¯¥tþ¡—qJ£˜o‹·ªwÿº¬yÿ¼®{ÿ¾°}ÿ¿²~ÿ¿²|ÿ½­tÿ½­tÿä߯ÿîêÚÿÈ»Œÿ͘ÿµÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿ¶ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿ¶ÿö€ÿö€ÿö€ÿö€ÿö€ÿµÿ¾®vÿ´£bÿÞ×¹ÿñíàÿïëÝÿîêÚÿîéÙÿíèÙÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿìèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿíèØÿìèÚÿáÚÃÿêçÚÿÖαÿ·¨sÿ·ªwÿ£˜o‹¬�p̸«yÿº­{ÿ½®}ÿ¾±~ÿ¿°|ÿº«rÿ´¤fÿ¾±}ÿ¸¨kÿÝÖºÿÀ³ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿÀ³ÿ½­uÿ´£dÿÇ»‹ÿñîàÿðìßÿîëÝÿîêÚÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÙÿíéÛÿíéÛÿîéÚÿîêÝÿƺŽÿ»®wÿÒʨÿ¹ªyÿ¸«yÿ¬�p̪ªU®£tøº­zÿ¼¯|ÿ¾±ÿ¾²ÿ¼­xÿ¸«oÿÜ×¹ÿîêÞÿåÞÈÿÇ»Šÿ÷‚ÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷‚ÿ÷ƒÿ÷‚ÿ÷‚ÿ÷‚ÿ÷‚ÿ÷‚ÿ÷‚ÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷‚ÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷‚ÿ÷ƒÿ÷ƒÿ÷‚ÿ÷ƒÿ÷‚ÿ÷ƒÿ÷ƒÿ÷‚ÿ÷‚ÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷‚ÿ¿²yÿµ¦dÿŹ…ÿñíáÿðìàÿïëÞÿîêÜÿíéÜÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿîêÜÿíêÜÿîêÝÿíêßÿ¸…ÿ¿°|ÿ° dÿ¸«uÿ¹¬zÿ®£uøªªU¢š{!³§vý»¬~ÿ½°€ÿ¾±ÿ¾¯~ÿ¸¨oÿÙбÿæáÌÿö‚ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·ƒÿÄ·ƒÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·ƒÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿö‚ÿ¼¬sÿÜÔ·ÿòïåÿðíâÿðìßÿïëÞÿîêÝÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÝÿïëÞÿðìßÿðìàÿß×½ÿ½­xÿïìßÿɽ”ÿ±¡hÿ·«wÿ³§vý¤œ{¦œvK´§{þ¼­ÿ¾±ÿ¿²€ÿ½­xÿõ‚ÿëèÖÿö„ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿö‚ÿ¿±yÿñíãÿñîãÿñíáÿïìÞÿïëÝÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿïëÝÿïìÞÿðìàÿéåÐÿ¿±yÿŸ†ÿíêßÿëèÝÿ»¬xÿ´¤nÿ²¥xþ¥žuJ©œuo¶ª}þ½°€ÿ¾²�ÿ¾°}ÿ¶©mÿØÏ®ÿ×Ϋÿ¿³ÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿʆÿĸ…ÿÑÈžÿôðæÿòîäÿñíáÿðìßÿïëÞÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿðìÞÿñíàÿñîáÿÚѲÿ¾¯yÿÌÁ—ÿîêàÿìéÞÿäàÍÿ±¤iÿ±¤sþ©œuoªžu”º®ÿ¾¯�ÿ¾¯ÿ»«uÿ¾±}ÿïìâÿ×̬ÿÁ³€ÿǺŠÿǺŠÿǺŠÿǺŠÿǺŠÿƹ‡ÿƹ‡ÿŸ†ÿŶ…ÿĵ�ÿô€ÿÄ·„ÿǺŠÿƹ‡ÿƹ‡ÿƹ‡ÿǺŠÿǺŠÿǺŠÿǺŠÿǺŠÿƹ‡ÿǺŠÿǺŠÿǺŠÿǺŠÿƹ‡ÿǺŠÿƹ‡ÿǺŠÿǺŠÿǺŠÿƹ‡ÿƹ‡ÿƹ‡ÿƹ‡ÿǺŠÿǺŠÿǺŠÿƹ‡ÿƹ‡ÿƹ‡ÿǺŠÿƹ‡ÿƹ‡ÿƹ‡ÿǺŠÿŸ…ÿæßÉÿòîäÿñíáÿðìàÿïëßÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëßÿðìàÿñíáÿñíãÿÏÄœÿÀ±}ÿÒʦÿíéàÿìéÞÿêçÝÿ×дÿ²£nÿªžs”¯¢x¶¾±�ÿ¾²�ÿ½®zÿ¸ªnÿèãÒÿòïåÿÖͪÿÄ·„ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿƺ‡ÿÄ·€ÿµÿÄ·€ÿöÿƹƒÿŸ…ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÇ»ˆÿÐÇžÿóïåÿñíãÿñíáÿðìàÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðíàÿñíáÿñíãÿòîäÿŶ…ÿ¿±yÿÛÔµÿíêßÿìéÞÿëçÝÿêçÚÿ·ªsÿ¬¡q¶²§}˽°�ÿ»¯~ÿ´¥lÿÛÓ¶ÿðíæÿòïåÿÙЯÿŹˆÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»Œÿö‚ÿ¼¬rÿ¼¬sÿŹˆÿÓÈ£ÿåÞÈÿƺ‰ÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÈ»ŒÿÄ·„ÿñîãÿñîäÿðìâÿïëáÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿðìàÿñíáÿðíâÿñîäÿéäÒÿ¿±~ÿ¼­tÿëèÙÿîêàÿëèÝÿêçÜÿèåÚÿÁ¸�ÿ®£s˳¨{ß¼¯}ÿ·¨rÿɽ”ÿïìâÿëèÙÿàÙ¾ÿÍĘÿÇ»ŠÿɼŒÿɼŒÿÈ»‰ÿÇ»ˆÿÇ»ˆÿĸ�ÿèãÎÿôñèÿÓÈ ÿÈ»ŒÿɼŒÿɼ�ÿɼ�ÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼ�ÿɼ�ÿɼŒÿɼ�ÿɼ�ÿɼ�ÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼ�ÿɼ�ÿÈ»ŒÿôÿãÜÄÿóïåÿòïâÿòîáÿñíáÿñíàÿñíàÿñíáÿñíáÿñíàÿñíàÿñíàÿñíáÿñíáÿñíàÿñíàÿñíàÿñíáÿñíàÿñíàÿñíàÿñíáÿñíáÿñíáÿñíàÿñíàÿñíàÿñíàÿñíàÿñíáÿñíáÿñíáÿñíáÿñíàÿñíáÿñíáÿñíáÿñíàÿñíáÿñíàÿñíàÿòîáÿñîãÿòïäÿÜÕ¶ÿ¿²zÿÎÙÿòîâÿîêàÿíéÝÿêçÜÿèçÚÿÐȨÿ¬¢mß²§xï¶§sÿ¼¬yÿëçÝÿíéßÿ¼­yÿĸ‡ÿÈ»�ÿÈ»�ÿÈ»�ÿƹ‰ÿÁ´€ÿÀ³ÿÄ·„ÿ˾�ÿæßËÿÙбÿÈ»ŒÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼ�ÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿɼŽÿÈ»�ÿµÿçàÌÿóðåÿòîäÿòîâÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿðìâÿñíãÿòîäÿòïåÿÐÇžÿ¼¬wÿçßÌÿðíâÿîêàÿîêÞÿêçÜÿèçÛÿÞÙÇÿ«›kï­ qñº¬yÿâßÍÿíìãÿðïæÿʾ’ÿö„ÿɼŽÿʽ�ÿǺˆÿÀ³}ÿÁ´~ÿÍÁ–ÿÒÉ¢ÿɼ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿɼŽÿÍ–ÿõôëÿôñçÿòïåÿñîäÿðïãÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíãÿñîäÿòïåÿòñåÿö‚ÿȼŒÿñðåÿðíâÿíìáÿìëßÿêçÞÿèèÜÿèçÛÿ²¦yòª›iþãÞÎÿéæÛÿîëâÿñîåÿÝÖ»ÿÀ³ÿÈ»ŒÿÇ»Šÿ³ÿÈ»‰ÿòîäÿçâÌÿʾ‘ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿɼ�ÿÙбÿõòéÿôðæÿóïåÿóïãÿñíãÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿóïãÿòîäÿóïåÿèãÎÿ¾®uÿÞ×¹ÿòîåÿòîâÿîëàÿïëßÿêçÝÿæáÒÿèçÛÿ¾¶�þʤÿèçÛÿɾ–ÿƺ�ÿìèÛÿïëáÿĵ…ÿǺˆÿÄ·ƒÿɺŒÿñîáÿÝÕ·ÿË¿�ÿÌÀ�ÿ˾�ÿ˾�ÿ˾�ÿÌÀ�ÿ˾�ÿ˾�ÿÌÀ�ÿÌÀ�ÿ˾�ÿÌÀ�ÿ˾�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿ˾�ÿÌÀ�ÿ˾�ÿ˾�ÿÌÀ�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿ˾�ÿ˾�ÿ˾�ÿ˾�ÿ˾�ÿ˾�ÿÌÀ�ÿÌÀ�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿ˾�ÿË¿�ÿÜÕ¶ÿõòèÿóòæÿòñåÿòïäÿñîäÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿòïäÿòïåÿóðåÿØÎ¬ÿ¶ÿòïäÿòïåÿðïãÿîíáÿîëàÿåàÌÿ½¯|ÿØÑ¹ÿ°¥zþááÓòæãÖÿ¾²ÿʼnÿæáÏÿéæÕÿÏÆœÿÎÁ“ÿÎ×ÿëçÔÿÕÊ¥ÿɼ�ÿÌÀ�ÿÌÀ�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿ˾�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿË¿�ÿàÙ½ÿõòèÿóòæÿóðåÿòïäÿñîäÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîäÿòïäÿòïåÿóðåÿŹ‚ÿÖͧÿóðåÿñîäÿðíâÿîíáÿîëàÿÙѳÿ½°}ÿ¾²�ÿ¾¹’òãâÔðáÜÈÿÀ´�ÿÅ»Œÿʾ�ÿʾ�ÿË¿�ÿÎÅ—ÿØÏ¬ÿÏÆ˜ÿË¿ŽÿÌÀ�ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÌÀ�ÿâÛÃÿõôéÿôóçÿóòæÿóðåÿòïåÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóòæÿëèÕÿÌÀ�ÿéâÌÿòïåÿòïåÿñîãÿïìâÿïìáÿÍÅ�ÿº¬tÿÀ´„ÿãâÔðââÓàÚÓ¹ÿÀµ�ÿÅ»ŒÿÇ»Žÿʾ�ÿË¿�ÿÌÀ�ÿË¿�ÿɼ‰ÿȼ‡ÿʾ�ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÎÂ’ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÍÀ�ÿæßÇÿõôéÿôóçÿóòçÿóðåÿòïåÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïåÿòïåÿóðåÿóðåÿóðåÿóòæÿôñæÿôñæÿóòæÿóòæÿóòæÿóòæÿôñæÿôñæÿôñçÿôñçÿêçÔÿôñæÿóòæÿòïåÿñîãÿñîãÿïìâÿîëàÿÀ´ÿź�ÿèèÜÿââÓàãâÔÌÑɪÿ¿µ‚ÿƺŽÿȼ�ÿË¿�ÿÌÀ‘ÿÍÁ’ÿʾŽÿŹ‚ÿÙÑ®ÿʽ‹ÿΓÿΓÿΓÿΓÿΓÿΓÿÍÁ’ÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿÍÁ’ÿΓÿΓÿΓÿΓÿΓÿÍÁ’ÿÍÁ’ÿΓÿΓÿΓÿΓÿΓÿΓÿÍÁ’ÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿÍÁ’ÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿàÙ½ÿóïãÿôóèÿôñçÿõñåÿóïåÿòïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿóïåÿõñåÿôðæÿôñæÿõñçÿõòèÿõòèÿèáËÿèáËÿöòéÿõòèÿõòèÿöòéÿöòéÿöóéÿöóêÿöòéÿöòéÿõñèÿôñçÿóïåÿòîäÿóïãÿðìãÿéæÕÿµ¥hÿâÝÉÿèåÜÿãâÔÌàÜÔ¹ÚÓ¼ÿ¾²ÿźŽÿȽ�ÿÊÀ‘ÿËÁ’ÿÌ“ÿɽ�ÿÓË¡ÿãÞÄÿɽŒÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÌÑÿéäÏÿõôéÿôóçÿôñæÿóðæÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóòæÿôñæÿôñçÿõòèÿõôéÿöóêÿðíâÿÙÑ®ÿÍÂ’ÿÕͦÿ÷ôíÿ÷ôíÿôðæÿêåÐÿÞÙ¹ÿÔÌ¥ÿÎÆ™ÿÒÊ ÿÒÊ¢ÿâÛÁÿõòèÿóðæÿòïåÿñðäÿðíãÿíêÝÿØÑ³ÿêçÝÿèçÛÿàÜÔ¹ÜÚËšçã×ÿ¾°}ÿÆ»‹ÿɽ�ÿʾ‘ÿÍÁ’ÿΓÿʽ‹ÿçâÌÿæßÈÿɽŠÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÎÂ’ÿáÙ¾ÿöõìÿõôéÿôóèÿôñçÿôñæÿóòæÿóðæÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðæÿôñæÿôóçÿõòéÿöóêÿöóêÿãÜÄÿÏ×ÿÍÔÿÍÔÿΓÿÞ׸ÿÕÌ£ÿÏÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÌÀ�ÿÚÑ®ÿõòéÿóðæÿòïåÿðíäÿîëâÿîëàÿëèÞÿêçÜÿéåÙÿÜ×ËšØÔÃxèåÜÿźŽÿĸ‰ÿȼ�ÿɽ�ÿÌÀ�ÿÌ¿�ÿƹ…ÿÛÓ°ÿèãÍÿɼˆÿÍÔÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍ•ÿÍÔÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍ•ÿÍ•ÿÍ•ÿÍÔÿÍÔÿÍ•ÿÍ•ÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍ•ÿÍÔÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍÄ•ÿêåÏÿ÷ôëÿöóêÿõôéÿõòèÿõòèÿõòçÿõòçÿõòçÿõòçÿôóçÿôñçÿôñçÿôñçÿôóçÿõòçÿõòèÿéäÏÿÜѱÿØÏ©ÿÒÇ�ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿΓÿÍÔÿÌÀ�ÿØÏ©ÿöóêÿôñçÿóðåÿñîåÿïìâÿíêàÿìéßÿêçÜÿçãÚÿÔϼwÒ̽UçäÚÿÐȨÿ½±}ÿ÷„ÿø„ÿŸ„ÿ÷ÿ¾®uÿàÙ½ÿðìßÿƹƒÿÍÁ‘ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍÔÿÍÔÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍÔÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍÔÿÍÔÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍ•ÿÍÁ”ÿãÛÂÿ÷ôëÿöóìÿöóêÿõôéÿõôéÿõòéÿõòéÿõòéÿõòèÿõòéÿõòéÿõòéÿõòéÿõôëÿöóìÿêæÔÿǺ„ÿÎÁ’ÿÍÁ”ÿΓÿÍÁ”ÿÍ•ÿÍ•ÿÍÁ”ÿÍÁ‘ÿÌÀ�ÿÎÂ’ÿÍ•ÿÎÁ“ÿ˾Žÿɼ‰ÿɽŠÿÈ»‰ÿÓË¡ÿöóìÿôñèÿóðæÿñîåÿïìãÿíìáÿëèßÿêçÜÿæãØÿÊDZRÌŲ(æåÙÿáÚËÿ¸¬rÿ¸¬pÿƼ‰ÿ»¬nÿǼ‹ÿæáËÿ÷öîÿ÷ôíÿ¿´zÿŹ„ÿʾŽÿÍÁ”ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÔÿÛÓ±ÿõòéÿöõìÿñíàÿêçÔÿõòéÿöóìÿöóìÿöóìÿöóìÿöóêÿöóêÿöóìÿöõìÿ÷ôíÿøõîÿÔË¢ÿÌÁ‘ÿÊ¿�ÿʾŽÿÌ“ÿÍÄ–ÿÍÄ–ÿËÁ’ÿÆ»‡ÿŹ„ÿËÀ�ÿÍÁ”ÿȼ‹ÿ÷ÿĹƒÿ¿²vÿ¿°vÿÌ“ÿöóêÿôñèÿóðåÿñîåÿïìãÿíêàÿëèßÿéèÜÿåä×ÿÀºž%¿¿¿åäØúéèßÿâÞÌÿÚÕ¸ÿòïæÿãßÉÿôôêÿôôëÿõôìÿ÷öíÿáÝÃÿŹ�ÿÀ´{ÿÇ»ˆÿÍÁ’ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÁ’ÿɽŒÿĸ�ÿȾ‹ÿŹ‚ÿ¿²wÿÁµ|ÿ˾�ÿÛÔ´ÿêçÕÿñîáÿóòæÿöõìÿ÷öîÿ÷öîÿø÷ïÿø÷ðÿöóìÿÔË¡ÿÌÀ�ÿË¿�ÿÔË¢ÿËÀ�ÿÍÔÿÍ•ÿɽŒÿÎÆšÿÜÕµÿɽŒÿʾŽÿ¶ÿãÜÄÿäßÇÿáÜÂÿèãËÿÞÙ»ÿôóêÿóòéÿóòæÿñðåÿðïäÿíìãÿëêáÿèèÞÿåâ×úªªªâáÖÎéèÝÿëèáÿïëâÿñîåÿóðçÿôóèÿôñèÿõòéÿ÷ôëÿ÷ôíÿ÷ôëÿߨºÿöÿÈ»ˆÿΓÿÎÖÿÎÖÿÏĘÿÏĘÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÏĘÿÏĘÿÏĘÿÎÖÿÎÖÿÏĘÿÏĘÿÎÖÿÎÖÿÏĘÿÏĘÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÏĘÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÏĘÿÏĘÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÏĘÿÎÖÿÎÖÿÍ•ÿɼŠÿÀ±wÿŸ�ÿëçÕÿêçÔÿÝÖ¶ÿäÝÃÿ˾ŽÿÇ»‡ÿΓÿÎÖÿÎÖÿÎÖÿÐĘÿÑÈžÿÔË¡ÿÖ˦ÿÕÊ¢ÿΕÿÑÈ�ÿçàÉÿÝÖ¶ÿÈ»‡ÿ˾ŽÿÌ¿�ÿŸ€ÿîéÙÿøõîÿΕÿÈ»ˆÿäÝÃÿø÷ïÿøõîÿ÷öíÿ÷ôëÿöõìÿõòéÿôñèÿôñæÿòïåÿïìãÿØÐ²ÿÚÓ»ÿèèÞÿââÖÎÝÚÊ‘èçÛÿëèßÿíêáÿïìãÿñîåÿóðæÿôñçÿõòèÿöóêÿöóêÿ÷ôíÿøõîÿïêÛÿÌ¿�ÿÎÁ’ÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÎ×ÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÍÔÿ˾Žÿø÷ðÿøõîÿ÷öíÿ÷ôëÿ÷ôëÿ÷ôíÿñíàÿÈ»‰ÿÌÀ�ÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÍ•ÿ˾�ÿƹƒÿÝÕ¶ÿÈ»ˆÿǺ†ÿÍÀ�ÿø÷ðÿÜѱÿɼŠÿƹ…ÿ÷öíÿøõîÿøõîÿ÷ôíÿ÷ôëÿöõìÿõòéÿôñèÿóðçÿñîåÿæâÐÿ¿²ÿÒʪÿèçÜÿÛØÍ‘×оSçäÚÿéèÝÿìéàÿîëäÿðíäÿòïæÿóðçÿôñèÿôñêÿöóêÿöóìÿ÷ôíÿøõïÿÞ×¹ÿË¿�ÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÍÁ”ÿÐÅ›ÿöõíÿ÷öîÿ÷ôíÿöóìÿöõìÿ÷ôíÿ÷öîÿåÞÇÿƺ†ÿÎÁ“ÿÎÙÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÎ×ÿÍÀ’ÿÈ»‰ÿĵ€ÿÕÊ¥ÿèáÍÿÞÖ·ÿÍÁ‘ÿóïåÿ÷öîÿÀ²zÿ¿°wÿÌÀ“ÿøõïÿøõïÿøõïÿ÷öîÿ÷ôíÿöóìÿõôëÿôóêÿóòéÿñîçÿÜ×»ÿ½°}ÿäßÐÿèåÜÿÐʸSζãâÖýèèÜÿëêßÿíìáÿðïäÿñðåÿóòæÿóòçÿôóèÿõôëÿöõêÿöõìÿ÷öîÿãÞÄÿŹ„ÿÌ¿�ÿÍ–ÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÍ–ÿåàÇÿø÷ðÿ÷öîÿööíÿöõìÿöõìÿöõìÿ÷öíÿòïäÿƺ†ÿŹ„ÿÌÀ‘ÿÎ×ÿÏÚÿÏÄ›ÿÏÄšÿÎ×ÿÌ¿�ÿŸ‚ÿɼŒÿèáËÿøøðÿäÝÃÿŹ…ÿØÏ¬ÿø÷ïÿ÷÷ïÿïìÞÿåàÇÿõôëÿóðåÿéäÐÿëèÕÿø÷ïÿööìÿçâÍÿçâÍÿóòçÿóòéÿòïæÿÑɦÿźŽÿêéàÿåâØý¿¿¥ãÞ×ÌéèÝÿëèßÿîêâÿðíäÿñîåÿôñçÿôñèÿõòéÿöóêÿöóìÿ÷ôëÿ÷öíÿôóçÿŹ…ÿöÿɼŒÿÍÁ‘ÿÍ•ÿÎÅ™ÿÏÆšÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆšÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆšÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆšÿÏÆšÿÏÆšÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÄšÿÒÉ ÿøøðÿøõïÿ÷öîÿ÷ôíÿ÷ôíÿ÷ôíÿ÷öîÿøõïÿíèØÿÎÅ™ÿŹ„ÿɽ�ÿʾŽÿËÀ�ÿÍ•ÿÌÀ‘ÿŹ‚ÿÚÒ²ÿ÷öîÿçâÌÿÙѯÿƺ†ÿȼŒÿìèØÿøõîÿ÷öîÿøõîÿøõîÿ÷öîÿÓʤÿÎÅ™ÿÎÅšÿÖΪÿÔ̤ÿË¿�ÿ¶�ÿëç×ÿóðéÿðìãÿĸˆÿÖϳÿêçàÿãâØÍÚÖȃèåÜÿëçßÿíêãÿïìãÿñîåÿóðçÿôñèÿõòéÿõòéÿöóêÿöõìÿ÷ôíÿ÷öîÿîëÜÿèãÎÿĸ€ÿ¶ÿŹ…ÿÌÀ‘ÿÎÅšÿÏÆ›ÿÏÆ›ÿÏÄšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿË¿�ÿõôéÿø÷ðÿøõïÿøõîÿ÷öíÿ÷öíÿ÷öíÿøõîÿøõïÿø÷ïÿÙÑ®ÿ¿°wÿĸ�ÿöÿŹ…ÿĸ�ÿÙЭÿøøñÿëèÖÿÅ»ˆÿ÷ÿÞ×¹ÿ÷ôíÿ÷öîÿ÷ôíÿ÷ôíÿ÷ôíÿøõîÿñîáÿɽŽÿÍ–ÿÍÁ’ÿÌÀ“ÿɽ�ÿ¶‚ÿÐÈ ÿóðéÿóðêÿÛÔ¹ÿ½°|ÿçäÖÿèèÞÿÛÖȃÐʹ,äáØþêéàÿíìãÿîíäÿñîåÿòñèÿôóèÿôóêÿõôëÿöõìÿöõìÿ÷öíÿ÷öîÿ÷÷îÿø÷ïÿä߯ÿßÚ½ÿÚÓ²ÿŹ‚ÿÌÀ‘ÿÎÙÿÎÅ™ÿÍÁ”ÿÌÀ‘ÿÍÁ’ÿÍ–ÿÎÅšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÐÇ�ÿ÷öîÿ÷÷òÿøøñÿøøðÿòïåÿêçÔÿ÷÷ïÿ÷öîÿ÷÷îÿø÷ïÿñîãÿçâÌÿøøðÿîêÜÿÁµ~ÿÏÆœÿø÷ïÿòïâÿŹ…ÿÍÄ–ÿñîáÿø÷ïÿ÷öîÿ÷öíÿ÷öíÿ÷öíÿ÷öíÿ÷öîÿ÷öîÿÇ»ˆÿɽ�ÿɽŒÿǼ‹ÿĸ…ÿÚÒ²ÿööìÿôóìÿðïäÿøˆÿÔͯÿìéâÿåäÙþÉë+âáÔÙèèßÿëêáÿîëäÿðïæÿñðçÿôóèÿôóêÿõôëÿöõìÿöõìÿöõìÿ÷öíÿ÷öíÿ÷öîÿø÷ïÿø÷ðÿøøñÿÔˤÿ÷€ÿÇ»ŠÿɽŒÿÌÀ“ÿ¶ÿŹ‚ÿʾ�ÿÍĘÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÎÅ™ÿÍĘÿÎÅ™ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÄšÿÕ̧ÿàÙ¿ÿÙѯÿÒÉ ÿÏÄšÿË¿�ÿïëÝÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷÷îÿø÷ïÿø÷ïÿø÷îÿø÷ïÿø÷ïÿâÛÃÿË¿�ÿ÷÷íÿ÷öîÿ÷öîÿ÷öíÿöõíÿöõìÿöõíÿ÷öíÿ÷öîÿø÷ïÿÇ»ŠÿÇ»‡ÿñíáÿÛÓ±ÿØÏ­ÿööîÿöõíÿóòêÿÚÓ´ÿÇ»�ÿëêãÿêéàÿåâØÙÙÕÇ|èçÞÿëèáÿíìäÿïîåÿñðçÿóòéÿôóêÿõôìÿõôìÿöõìÿöõìÿöõìÿöõíÿ÷öíÿ÷öïÿ÷öïÿø÷ïÿ÷÷ïÿ×άÿƺ‰ÿ¿°zÿËÀ“ÿðïâÿäàÉÿÛÓ³ÿÎÅšÿÐÅ�ÿÎÅ›ÿË¿’ÿɽŽÿÇ»‹ÿË¿“ÿÎÅ›ÿÐÇžÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÐÇžÿÏÆœÿÐÇžÿÏÆœÿÐÇžÿÏÆœÿÏÆœÿÐÇžÿÐÇžÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÐÇžÿÐÇžÿÐÇžÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÐÇžÿÏÆœÿÐÇžÿÎÅ›ÿÍ–ÿÇ»‹ÿáÚÂÿ÷öïÿ÷öíÿ÷öîÿ÷öîÿ÷öíÿ÷öîÿ÷öïÿ÷öïÿ÷öïÿ÷öîÿ÷öïÿöõíÿ÷öîÿ÷öíÿ÷öíÿöõíÿöõíÿöõíÿöõìÿöõîÿ÷öíÿ÷öîÿÞ×»ÿÎÆœÿçãÐÿ¾±}ÿÕ̪ÿöõíÿõôëÿóòêÿɽ•ÿɽ•ÿìéãÿèèßÿÚÖÉ}ÏϼåäÙýêçàÿíêãÿïìåÿòîæÿóðéÿõòéÿõòëÿöóìÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôîÿøõîÿøõïÿø÷ïÿø÷ðÿøøñÿ÷óëÿíéØÿöóéÿìèØÿ×Ï­ÿÐÅ�ÿÏÆœÿÌÀ”ÿʆÿ÷‚ÿÓʤÿÆ»ŠÿÍÁ–ÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÏÆœÿÐÇžÿÐÅ�ÿ͘ÿȼ�ÿǺŠÿõòëÿø÷ïÿøõîÿ÷öîÿ÷ôíÿ÷ôíÿ÷ôîÿ÷ôîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷ôîÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷öîÿøõîÿøõïÿø÷ïÿø÷ðÿåàËÿØÏ°ÿöóìÿôñëÿóïéÿÜÕ¾ÿÇ»”ÿëèâÿæãÚýÍİßÛѳéèàÿìéâÿîëåÿðíæÿòïèÿôñêÿõòëÿöóìÿöóìÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷öîÿøõîÿøõïÿø÷ðÿø÷ñÿùøòÿíèØÿÎÁ“ÿÑÅœÿÑÆ�ÿÐÅœÿ×̨ÿéåÒÿø÷ðÿùøòÿêæÑÿÍÁ”ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÐÅœÿΗÿÖ˧ÿéäÏÿøøñÿø÷ðÿøõïÿøõîÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôîÿøõîÿøõîÿ÷ôíÿ÷ôíÿöóìÿõòëÿóðéÿñîåÿîëäÿéåÙÿêçáÿÞÞÓ´ØÔÅBèåÞÿëèâÿîíåÿïîæÿòïèÿóòêÿõôëÿõôìÿöõíÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öïÿ÷öíÿõòéÿøøñÿ÷÷òÿßÚ¾ÿÌÁ•ÿÏÆœÿÏÄœÿÍÄ™ÿÍ™ÿèãÏÿø÷óÿø÷óÿëçÖÿÎÚÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÏÇŸÿÐÇžÿÏÇŸÿÐÇžÿÐÇžÿÐÇžÿÐÇžÿÏÇŸÿÐÇžÿÎÅ›ÿÒÉ¢ÿôóèÿìèØÿ÷÷òÿøøñÿø÷ðÿø÷ïÿø÷ïÿ÷öïÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öïÿöõîÿõôíÿõôìÿóòëÿòïéÿðïæÿîíæÿëêâÿèçßÿ×ÓÀAÿÿÿãßÔÒééàÿìëãÿîëåÿñðçÿòñéÿôóëÿõôìÿöõíÿöõíÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öïÿêçÔÿÖάÿàÛÁÿçäÐÿÒÊ£ÿɽ�ÿǽŽÿżŠÿĺ‡ÿÄ»ˆÿÝØºÿùøòÿØÐ®ÿÎÆœÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÐÈžÿÐÈžÿÐÅ�ÿÎÚÿʾ‘ÿÇ»ŒÿżŠÿÛÔ´ÿãÞÆÿø÷ïÿø÷ðÿø÷ðÿø÷ïÿ÷öïÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿöõíÿöõíÿõôìÿôóëÿòñéÿñðçÿïìåÿìëäÿêéáÿãßÓÓÿÿÿØÕÍWéèßÿìèãÿîíæÿðíæÿóïéÿôñëÿöóìÿöóíÿ÷ôîÿ÷ôîÿøõïÿøõïÿøõïÿøõïÿøõïÿøõïÿøõðÿø÷ðÿ÷ôîÿÛÓ´ÿÀ´ÿ¿´~ÿ¾µ~ÿɽ�ÿÓË¥ÿßÚ¾ÿÜ×¹ÿ¿´ÿÏÆ�ÿǼŒÿÍÅšÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÎÆœÿÌÁ•ÿËÀ“ÿ͘ÿÏÆ�ÿâÚÃÿߨÀÿÖΫÿÎÆœÿËÀ”ÿÑÈ¡ÿîêÜÿ÷÷òÿø÷ñÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿøõðÿøõðÿøõïÿøõïÿøõïÿøõïÿøõïÿøõïÿøõïÿøõïÿøõïÿ÷ôîÿ÷ôîÿöóíÿöóìÿôñëÿóïéÿðíæÿîíæÿìèãÿéèßÿØÕÊWÿÿäãØÔêéáÿíêäÿïëæÿñîçÿóðêÿõòëÿöóìÿöóíÿ÷ôîÿøõïÿøõïÿøõïÿøõïÿøõïÿøõïÿøõðÿø÷ðÿø÷ðÿø÷ñÿïìßÿìè×ÿøõïÿùøòÿùøòÿùøòÿùøòÿõòéÿðìàÿߨÀÿÍÄ™ÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÍÄ™ÿË–ÿú†ÿÄ»ˆÿÉ¿�ÿËÀ“ÿÚÒ²ÿø÷óÿùöôÿùöôÿÐÉ¡ÿÐÉ¡ÿòñåÿùøòÿøøñÿø÷ñÿø÷ñÿø÷ñÿø÷ñÿø÷ñÿø÷ðÿø÷ðÿø÷ðÿøõðÿøõïÿøõïÿøõïÿøõïÿøõïÿøõïÿøõïÿ÷ôîÿöóíÿöóìÿõòëÿóðêÿñîçÿïëæÿíêäÿêéáÿääØÔÿÜÙÍRéèàÿìéãÿîîæÿðïæÿóðéÿôóëÿöõìÿöõíÿ÷öîÿ÷öîÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿøøðÿøøðÿøøñÿøøñÿøøñÿøøñÿøøñÿøøñÿùøòÿø÷óÿùøôÿèãÎÿÏÆ›ÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÎ×ÿìèØÿ÷öíÿâÛÁÿÎÙÿêçÔÿùøôÿùøôÿôñçÿåÞÄÿÔË¥ÿÐÇ�ÿ×ΩÿïëÝÿø÷óÿùøòÿùøòÿ÷÷òÿ÷÷òÿ÷÷òÿøøñÿøøñÿøøñÿøøðÿø÷ðÿø÷ïÿø÷ïÿø÷ïÿø÷ïÿø÷ïÿ÷öîÿ÷öîÿöõíÿöõìÿôóëÿóðéÿðïæÿîîæÿìéãÿéèàÿÜÙÉQÿÿÿããÚÄêéâÿíêäÿïìæÿñðèÿóðêÿõôìÿöõíÿöõîÿ÷öïÿ÷öðÿ÷öíÿø÷ïÿøøñÿøøñÿøøñÿø÷ñÿø÷ñÿø÷ñÿøøñÿøøñÿøøñÿøøñÿøøñÿ÷÷òÿøøñÿïìßÿáÚÂÿÑÊ£ÿÐÈžÿÏÇŸÿÏÇŸÿÏÇŸÿÑÉŸÿÑÉŸÿÑÉŸÿÏÇŸÿÑÉŸÿÏÇŸÿÑÉŸÿÑÉŸÿÑÉŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÑÉŸÿÑÉŸÿÏÇŸÿÏÇŸÿÏÇŸÿÑÉŸÿÑÉŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÎÆœÿØÑ±ÿùøõÿùøõÿÍÅ�ÿÍÅ›ÿæáËÿø÷ôÿÙѯÿÑÉžÿÏÇŸÿÑÉŸÿÏÇŸÿÏÇ�ÿÏÇŸÿìéÛÿéåÓÿÜ×¹ÿÕ̧ÿÑÊ£ÿéåÒÿéæÓÿçâÌÿ÷÷òÿøøñÿø÷ñÿø÷ðÿø÷ðÿø÷ðÿ÷öïÿ÷öïÿöõîÿöõíÿõôìÿóðêÿñðèÿïìæÿíêäÿêêâÿããÚÄÿÿÿÙÙÉ0æåÝýëêãÿîíæÿïîæÿòñéÿóòëÿõôìÿöõîÿöõïÿø÷ðÿæáËÿÍ•ÿéäÐÿ÷÷òÿøøñÿøøñÿø÷ñÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿø÷ñÿøøñÿ÷÷òÿöõíÿãÞÅÿÓÊ£ÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈžÿߨ¼ÿñíáÿùøõÿÙЮÿ×Ï«ÿëèÖÿäÝÆÿÐÈ�ÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈ�ÿÑÉžÿø÷ðÿÌ“ÿËÁ’ÿȼ‹ÿÊ¿�ÿÏÇœÿÐÈžÿÌ“ÿóðåÿ÷÷òÿøøñÿø÷ðÿø÷ðÿø÷ðÿ÷öïÿöõîÿöõîÿõôìÿóòëÿòñéÿïîæÿîíæÿëêãÿæåÝþÙÓÃ/ààÔ•ééáÿîëäÿïîæÿñðçÿôñêÿõôìÿ÷öíÿ÷öïÿøøðÿéåÐÿɽ�ÿ×ΩÿøøóÿùøòÿùøòÿøøñÿøøðÿøøðÿøøðÿøøðÿøøðÿøøñÿùøñÿøøóÿÙÑ®ÿÏÆ›ÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈžÿÑÉŸÿÑÉŸÿÐÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÕÍ©ÿÒÊ£ÿÐÈ�ÿùùõÿïìÞÿÎÅšÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈ�ÿÎÆšÿÍÄ–ÿ×ЬÿðïâÿÇ»ŠÿáÜÂÿ÷öíÿÒÊ¢ÿÍÅ™ÿÐÈžÿÒÊ ÿùøòÿùøòÿùøñÿøøñÿøøðÿø÷ïÿ÷öïÿöõîÿ÷öíÿõôìÿóðêÿñðçÿïîæÿîëäÿêéâÿâÝÔ—ÔÔ¿ ææÜåëêâÿîíåÿðíæÿòñèÿôñêÿõôìÿø÷îÿø÷ðÿ÷÷òÿÎÇœÿÍÄ–ÿóðåÿúùóÿùøòÿùøñÿøøñÿøøðÿøøðÿøøðÿøøñÿùøñÿùøòÿø÷îÿÍÆ™ÿÎÅ™ÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÎÆšÿâÝÃÿùùõÿèäÏÿÏÇ›ÿÑÉŸÿÑÉŸÿÐÈžÿÍÄ–ÿǽŠÿĹ„ÿǼ‹ÿɽŒÿÍÄ–ÿøøñÿùùôÿæâËÿÍ–ÿÐÈ�ÿÓË¡ÿÑÊ¡ÿøøñÿùøñÿøøñÿø÷ïÿø÷ïÿ÷öîÿ÷öíÿõôìÿôñêÿòñèÿðíæÿîíåÿëêâÿççÝäÐй ØØÊIçæÞþìëäÿîîæÿðïçÿóòêÿôóìÿ÷öîÿø÷ðÿ÷÷òÿèãÎÿÎÅ›ÿÐÇ ÿÚÓ²ÿðíàÿø÷óÿùøòÿ÷÷òÿ÷÷òÿ÷÷òÿùøòÿø÷óÿøøôÿùøõÿéäÐÿÎÙÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÒÇ ÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÒÇ ÿÑÈŸÿÐÇ�ÿàÙÁÿìèØÿÛÔ³ÿÐÇžÿÑÈŸÿÑÈŸÿÏÆ›ÿ˾�ÿÚÒ²ÿîëÝÿÎÅ›ÿ÷‚ÿòïåÿùøôÿùøõÿàÙ¾ÿÍÀ”ÿÍ–ÿɽ�ÿíéÙÿø÷óÿùøòÿø÷ñÿø÷ðÿ÷öïÿ÷öîÿöõíÿôóìÿóòêÿðïçÿïîæÿìëäÿçæÞþ××ÅGÞÜГêéâÿíêäÿïîæÿñðèÿóòëÿõôíÿ÷÷ïÿîêàÿ×Ï­ÿÑÆžÿÑÆŸÿÒÇ ÿÒÇ ÿóïåÿø÷óÿùøòÿùøòÿùøòÿùøòÿðíàÿøøðÿùùõÿáÚÂÿÏÆœÿÑÈŸÿÑÈŸÿÒÇ ÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÏÆœÿÎÙÿΙÿÐÅ�ÿÒÇ ÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÒÇ ÿÒÇ ÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÑÈŸÿÔÉ¥ÿàÙÁÿÒÇ ÿÑÈŸÿÑÈŸÿÑÈŸÿÎÙÿÕʧÿùùõÿùøõÿø÷óÿðíßÿøøóÿùøôÿùøôÿùøõÿÑÈŸÿÈ»‹ÿÓÈ¡ÿÍÀ•ÿÞÖ¹ÿïìÞÿø÷ñÿ÷öïÿ÷öîÿöõíÿôóìÿóòêÿñðèÿïîæÿíêäÿêêâÿÞÜГÚÚ¶äãÙÓëêãÿîëåÿïïæÿòñéÿõòíÿ÷öðÿÛÔ¸ÿÐÅ�ÿÑÆŸÿÑÆŸÿÑÆŸÿÐÅœÿæâÌÿùøôÿø÷óÿø÷óÿø÷óÿìè×ÿ˾�ÿÑÉ¡ÿíéÛÿÜÕ·ÿÑÆŸÿÑÈŸÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÑÆŸÿÏÄ›ÿΗÿË¿�ÿƹ†ÿƹ†ÿÍÀ’ÿÐÅ�ÿÒÇ ÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÑÈŸÿÒÇ ÿÑÈŸÿÑÈŸÿÒÇ ÿÍÁ–ÿâÛÃÿùùõÿùøôÿø÷óÿø÷óÿø÷óÿø÷óÿ÷öîÿÝÖ·ÿɼ�ÿÖ˧ÿùøôÿðíßÿߨ¾ÿðíâÿ÷öðÿ÷öïÿöõíÿõôíÿôñëÿñðèÿïîæÿîëåÿëêãÿäãØÔÚÚ¶ÙÙÊ"çåàðëêãÿîíæÿñîçÿóòëÿõòíÿÒÇ¢ÿÏÆœÿÑÆžÿÑÆžÿÑÆžÿÐÅ�ÿÝÖ·ÿø÷óÿùøôÿøøóÿø÷óÿø÷ðÿÏØÿÏÄšÿÐÅœÿÓÇŸÿÑÆžÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÑÆžÿΖÿɺŒÿÆ·ƒÿŸ�ÿëèÖÿéåÐÿÌ¿‘ÿÍ•ÿÒÇŸÿÒÇŸÿÑÈžÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿΗÿñîãÿùøõÿøøóÿø÷óÿùøòÿùøòÿø÷óÿßÚ½ÿÌ¿�ÿÑÅœÿø÷ðÿøøôÿ÷÷òÿøøñÿø÷ðÿ÷öðÿöõíÿõôíÿôñëÿòñéÿðíçÿîíæÿëêãÿçåàðØÐÁ!ÛØÉHèåßüíêåÿïìçÿòîéÿÏÄ ÿʽ‘ÿÏÄœÿÐÅ�ÿÑÆžÿÑÆžÿÑÆžÿÑÆ�ÿÙÏ­ÿøõïÿú÷õÿú÷õÿú÷õÿâÚÃÿÍÀ”ÿÌ¿�ÿÎÁ“ÿΖÿÐÅ›ÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÐÄ›ÿÊ»�ÿÛÒ°ÿêãÐÿåÝÆÿúùöÿúùöÿéäÒÿÌ¿�ÿÑÆžÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÑÆžÿîéÚÿú÷õÿùøôÿú÷óÿú÷óÿú÷óÿùöôÿÐÄœÿÊ»�ÿñîäÿùøôÿø÷óÿø÷óÿø÷ñÿø÷ñÿøõðÿöóîÿõñìÿóðêÿñíçÿîíæÿíêåÿèåßþÛØÉHÛÙÎtëèâÿíìåÿðïçÿëçÝÿƺ‹ÿÌÀ•ÿÎÛÿÏÆ�ÿÑÆžÿÑÆžÿÑÆžÿÐÅœÿäÜÃÿúùöÿúùöÿöóêÿÍÁ•ÿÈ»‰ÿÝÖ¸ÿÍÀ’ÿÎÁ’ÿÎÁ“ÿÑÆ�ÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÍÁ•ÿÕÊ£ÿùøôÿú÷õÿùøõÿùøôÿú÷õÿúùöÿɺŠÿÍ–ÿÑÆ�ÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇ ÿÑÆžÿáÚÂÿùøõÿùöôÿú÷óÿú÷óÿú÷óÿñíáÿ˼ŽÿèáÍÿø÷óÿø÷óÿ÷öòÿø÷ñÿ÷ôîÿöõïÿõñíÿóðëÿñîéÿïîæÿíêåÿëèâÿÞÙÎtÞÚГëèãÿïìæÿéèÜÿ¾±ÿ¶†ÿȼ‘ÿÍšÿÎÆœÿÏÆ�ÿÏÆ�ÿÍÄšÿÎÅœÿöóêÿíéÙÿÚѰÿË¿�ÿÛÓ³ÿùøôÿŸ…ÿñíáÿÏÄœÿÍ–ÿÍÄ™ÿÏÆœÿÐÇ ÿÐÇ ÿÑÈŸÿÌÁ”ÿíéÙÿúùõÿùøôÿùøôÿúùóÿùøôÿùùõÿÑÈ¡ÿÇ»‹ÿÎÙÿÐÇ ÿÐÇ ÿÑÈŸÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÑÈŸÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÏÆ�ÿéäÏÿùøôÿùøôÿúùóÿúùóÿùøòÿÍÁ–ÿÓʤÿø÷óÿ÷÷òÿ÷ôíÿáÜÄÿÞ×¼ÿñîåÿôóëÿññéÿðïæÿîëæÿêéâÿÞÚГÿÿÿàÝÕŸìëäÿïìçÿéèÜÿÌÞÿ¾±~ÿĺ‹ÿÊ¿•ÿÍÄ›ÿÌÁ—ÿÇ»ŽÿÇ»ŒÿÍÁ˜ÿÎÅœÿÍ™ÿȼ�ÿðìâÿù÷öÿùøõÿúùöÿÎÅœÿÈ»‹ÿƺ‡ÿË¿’ÿÏÆ�ÿÐÇ ÿÐÇ ÿÍÄšÿø÷óÿùùöÿùøõÿùøôÿøøôÿùøôÿùøõÿúùõÿÝÖ»ÿʾ‘ÿÐÇžÿÑÈŸÿÑÈŸÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÑÈ¡ÿùùöÿùøõÿùøôÿùøôÿéæÔÿÓʤÿõòëÿ÷÷óÿ÷÷òÿÒʧÿĸˆÿÄ»‹ÿíêàÿòñêÿðïçÿîëæÿëêãÿàÝÕŸÿÿÿÿÿâßÖ©ìëäÿïìçÿñðéÿâÝÍÿĹŒÿÀ´ƒÿĸ‹ÿÇ»�ÿÝÖ¼ÿáÚÃÿÍÁ–ÿÎÛÿÓÊ¥ÿáÚÃÿúùöÿúùöÿúùöÿùøôÿµÿçâÐÿâÛÄÿÌÀ•ÿÎÚÿÐÇ ÿÐÇ ÿÍ™ÿÕ̪ÿðíâÿùøôÿøøôÿø÷óÿø÷ôÿùøôÿùøõÿòîäÿĸ…ÿʾ‘ÿË¿“ÿÍÁ–ÿÏÆ�ÿÑÈŸÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÍ™ÿóðæÿùøõÿùøõÿø÷óÿø÷óÿø÷óÿ÷÷óÿ÷÷òÿíêßÿÜ×½ÿìèÛÿÌÄ ÿéèØÿðïèÿîëæÿëëäÿâßÖ©ÿÿÿÿÿâßÕ ëêäÿïìçÿðïèÿñîèÿ×βÿƹŽÿÁ´„ÿéäÔÿø÷ôÿÖÍ«ÿÍÀ•ÿÙбÿÝÕ¸ÿÕË©ÿúùöÿúùöÿú÷óÿáÚÃÿõòéÿúùöÿðìàÿÏÛÿÑÆŸÿÑÆŸÿÍÀ–ÿõòëÿùøôÿùøõÿøøôÿø÷óÿø÷óÿøøôÿùøôÿùøõÿÞ×»ÿÁ²}ÿƹ‰ÿõ‚ÿɼ�ÿÏÛÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÏÛÿçàÍÿùøõÿø÷ôÿø÷ôÿ÷÷óÿ÷÷óÿ÷÷òÿ÷÷òÿöõñÿöõïÿÛÖ½ÿĸ�ÿæâÔÿïìçÿëêäÿâÝÕŸÿÿÿÿÿßÝÔ‘ëêäÿîëæÿïïçÿòñêÿôóíÿïëâÿØÐ²ÿÐÄ ÿƹ‹ÿÄ·‡ÿɺŽÿÌÀ•ÿΚÿãÜÆÿø÷óÿùùõÿùùõÿúùöÿø÷ôÿÖÍ«ÿÐÄ�ÿÑÆŸÿÑÆŸÿÏÄœÿöóìÿúùöÿùøõÿùøôÿø÷ôÿø÷óÿø÷ôÿøøôÿùøôÿùøõÿéåÓÿø÷óÿéäÓÿΚÿ˾�ÿÎÚÿÐÅ�ÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÐÅ�ÿÜÔ·ÿù÷öÿùøõÿ÷÷óÿ÷÷òÿ÷÷òÿ÷öðÿëçÙÿÛÔ½ÿÏÆ£ÿʾ—ÿĹ�ÿíìæÿêéåÿßÝÖ‘ÿÿÿÜÚÏpéèâýíìæÿíìèÿñðéÿòòëÿõôîÿðìãÿÛÔ¹ÿÛÒµÿÍÁ˜ÿŸ†ÿ˾’ÿÎÛÿÑÅ¡ÿöõíÿùùõÿúùöÿߨ½ÿɺŽÿÏÄœÿÑÆŸÿÑÆŸÿÑÆŸÿÒÆ ÿߨ½ÿøøõÿùøõÿùøôÿø÷óÿø÷óÿø÷óÿø÷ôÿùøôÿùøõÿùøõÿúùöÿñíáÿ´�ÿǺ‹ÿÌ¿“ÿÏÄœÿÑÅžÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÐÅžÿÐÅžÿÑÅ¡ÿèáÍÿ÷÷óÿø÷óÿ÷öïÿæßÌÿÐÈ¥ÿÌÀšÿË¿™ÿʾ—ÿȼ–ÿĸ�ÿÞÚÎýßÚÑpÜÜÎJèåáñíìæÿïìèÿñîéÿóðëÿóòîÿôñìÿôðëÿøõñÿâÛÅÿʽ“ÿÌ¿”ÿȼ�ÿðíãÿùøõÿùøõÿûøöÿÝÖºÿÎÅžÿÑÆŸÿÑÆŸÿÑÆŸÿÐÅ�ÿÍÁ™ÿß×¼ÿú÷öÿú÷õÿùöõÿùøôÿùøôÿùøôÿùöõÿùøõÿúùõÿúùöÿúùöÿæßËÿ×άÿĶƒÿʾ’ÿÎÅžÿÑÆŸÿÑÆŸÿÐÇ¡ÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÅžÿÐÅžÿÏÆ ÿÐÅžÿÐÅžÿÏÜÿÔʨÿáÜÄÿÐȤÿÌÁœÿÌÀ™ÿÉÀšÿȽ™ÿǼ˜ÿź–ÿ¾´’íØÕÃIÚÚË#ååÞÒëêæÿïîçÿððèÿòïëÿóòìÿʾ˜ÿߨÂÿöõîÿáÙÀÿ÷‡ÿÀ³ƒÿîéÜÿø÷ôÿùùöÿú÷öÿØÏ°ÿÏÆ ÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÏÆ ÿØÏ®ÿâÙÃÿèäÒÿúùöÿùùõÿùøôÿùøôÿùöôÿùöôÿùøôÿùöõÿùøõÿúùõÿúùöÿûúöÿïëÞÿÎÅžÿÍÁ–ÿÏÆ ÿÐÇ¡ÿÐÇ¡ÿÑÆŸÿÐÇ¡ÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÏÆ ÿÏÆ ÿÐÅžÿÏÆ ÿÐÅžÿÏÄ�ÿÍÅŸÿÍÄžÿÌÃ�ÿÌÃ�ÿËÀœÿË¿™ÿʾ—ÿȽ˜ÿÇ»•ÿÄ»’ÿ¼²ŒË¿­ˆßß¿áÞÕ“âßÔþĹ”ÿÌàÿÝØÃÿãßÍÿĹ�ÿÏÇ¡ÿȼ‘ÿåÞÊÿÛÖ¹ÿëèÚÿøøóÿùøõÿõôìÿÏÄ�ÿÏÆŸÿÏÆŸÿÏÆŸÿÐÇ ÿÐÇ ÿÒÉ¢ÿãÜÅÿÌÀ”ÿùøòÿúùõÿùøõÿùøôÿùøôÿùøôÿùøôÿùøôÿùøôÿùùõÿúùöÿúùöÿôñèÿëèÖÿÍÄ™ÿÐÇžÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÑÆžÿÏÆŸÿÏÆŸÿÏÆŸÿÏÆŸÿÏÆŸÿÏÆŸÿÎÅžÿÍÅžÿÍÄ�ÿÌÜÿÌÜÿÍ›ÿÌÁšÿÉÀ™ÿȽ˜ÿǼ—ÿź•ÿ¿µ�ýµ­ˆŠÔª³«‡@Ĺšá¾³Šÿ½±…ÿÕ̳ÿÚÒ»ÿĹ‘ÿæâÑÿ÷öðÿöõñÿööòÿóòêÿöõíÿÓË«ÿÌÃ�ÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿ×ϰÿîëàÿúùöÿùùõÿùøôÿùøôÿùøôÿùøôÿùøôÿùøôÿùøõÿúùõÿùøõÿ×έÿÝÖ»ÿØÏ±ÿÎÅŸÿÏÆ ÿÏÆ ÿÏÆ ÿÏÆ ÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÍÄžÿÍÄžÿÌÄžÿÌÃ�ÿÌÁœÿÌÁœÿËÀ›ÿÊ¿šÿɾšÿȽ˜ÿǼ—ÿź–ÿú”ÿ»³�ß¶®…?××Ä âàÖ—ÌǨüÁ¸�ÿÕζÿÏÈ©ÿÊ¿œÿëçßÿôóïÿöõñÿëèÚÿĹ�ÿƺ�ÿʾ•ÿÍ›ÿÍÄžÿÍÄžÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÐÅ¡ÿóðæÿù÷öÿùøõÿø÷ôÿùøõÿùøõÿùøõÿùøõÿùøõÿùøõÿúùöÿúùöÿïëßÿâÛÅÿÑÈ¢ÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÍÄžÿÍÄžÿÌÄžÿÌÄžÿÌÃ�ÿÌÁœÿÌÁœÿËÀ›ÿÊ¿šÿɾšÿȽ˜ÿǼ—ÿź–ÿĹ•ÿ¿¶�ü¶­Š�²²™ Ü×Í4ļžÃ»°‡ÿ·�ÿź–ÿǼ™ÿÕͳÿéåØÿêçÞÿƺ‘ÿʾ—ÿĸŒÿȼ”ÿËÀ˜ÿÍ›ÿÌÁ�ÿÍ›ÿÌÃ�ÿÍÄžÿÍÄ�ÿÛÓ¶ÿøöõÿø÷ôÿøöõÿø÷ôÿø÷ôÿø÷ôÿø÷ôÿø÷ôÿø÷ôÿùøõÿîëàÿÕÌ«ÿË¿–ÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÍÄžÿÍÄžÿÍÄžÿÌÄ ÿÌÄžÿÌÃ�ÿÌÁœÿÌÁœÿËÀ›ÿÊ¿›ÿÊ¿šÿɾšÿȽ˜ÿǼ—ÿÆ»—ÿź•ÿÁ¸’ÿ»³‹Àµ¯�-ÿÿÿÙÖÇRº�Óú‘ÿź•ÿź–ÿÆ»”ÿÏǤÿäàÐÿóòîÿåàÐÿĹ�ÿøŒÿź�ÿĹ�ÿĹ�ÿȼ“ÿÍ›ÿÌÜÿɽ’ÿòñåÿø÷óÿ÷÷óÿ÷÷òÿ÷÷òÿ÷÷òÿ÷÷óÿ÷÷óÿ÷÷óÿø÷ôÿø÷ôÿõòëÿʾ“ÿÍÄ�ÿÍÄžÿÍÄžÿÌÄžÿÌÄ�ÿÌÄ�ÿÌÜÿÌÜÿÌÁœÿÍ›ÿÌÁšÿËÀ›ÿÊ¿›ÿɾšÿÈ¿˜ÿɾ—ÿȽ–ÿź•ÿÆ»”ÿÄ»’ÿº³�Ñ·­‡Kÿÿÿ¶­ŠQ¼²ŒË¿¸’ýú“ÿÐÉ«ÿæâÕÿáÜÊÿÕ̰ÿÔ˯ÿÞÙÄÿƺ‘ÿÆ»’ÿÐȤÿÀ³„ÿĹŒÿÇ»“ÿÍÁ›ÿéæÕÿ÷öòÿø÷ñÿööñÿöõñÿ÷öòÿø÷ñÿ÷öòÿ÷÷òÿ÷÷òÿ÷÷óÿíéßÿËÀ˜ÿÌÃ�ÿÌÃ�ÿÍ›ÿÍ›ÿÌÁœÿÌÁœÿÌÁœÿËÀ›ÿÊ¿›ÿÊ¿šÿɾšÿÈ¿™ÿȽ˜ÿǼ˜ÿǼ—ÿź–ÿĹ”ÿ¿¸“ý¼²‹Ë¶­ŠQÿÿÿÿÿÿµ¬Š;¹²Œ°¿·‘ùú”ÿÉÀžÿÄ»”ÿÙѺÿÑÉ«ÿàÛÉÿòñíÿóòîÿèãÖÿ¶‹ÿ¿³„ÿÆ»“ÿâÝËÿòñêÿõôñÿõôðÿõôðÿõôðÿõôðÿõôðÿõôðÿõôñÿõõñÿÏȤÿËÀ™ÿÌÁœÿËÀ›ÿËÀ›ÿÊ¿›ÿÊ¿›ÿÊ¿šÿÊ¿šÿɾšÿÈ¿™ÿȽ˜ÿǼ˜ÿǼ—ÿź•ÿź•ÿú”ÿ¿·’ù¹²Œ°µ¬Š;ÿÿÿ¹­‹µ¬ˆv¼±�ÖÁ¸�üĹ•ÿź•ÿÌÅ¢ÿÈ¿œÿÕͳÿðïçÿäàÒÿÝØÂÿÜ׿ÿÕͲÿÌÁžÿÍÅ¢ÿÚÖ¿ÿñîèÿóòîÿóòîÿóòîÿóòîÿóóîÿóòîÿÊ¿˜ÿɾ—ÿɾšÿɾšÿɾšÿÈ¿™ÿÈ¿™ÿȽ˜ÿǼ˜ÿǼ—ÿÆ»—ÿź–ÿź•ÿĹ•ÿÁ¸�ü¼±�Öµ¬ˆv¹­‹µ®Œ&´¬‰~¼³ŽÊ¹—úàÝÐÿÝÙÉÿËäÿȽ�ÿãàÕÿïïêÿððëÿññìÿíìæÿÑɬÿË¡ÿØÑºÿÞÙÇÿåáÔÿíìåÿòñíÿòñíÿÙÔ¾ÿź—ÿÆ»˜ÿÆ»˜ÿÆ»—ÿÆ»—ÿź—ÿÄ»–ÿĹ•ÿú•ÿÀ·‘þ½´�ú¼³ŽÊµ«Š}µ®Œ&¿¯�µ¬‰Pº¯‹”»±ŽÌ»´‘öÊŨþǾŸþÌĦÿÝÙÈÿÖϸÿËÄ¥ÿź–ÿÄ»•ÿÄ»•ÿÄ»•ÿÄ»•ÿɽ�ÿÆ»˜ÿÄ»•ÿĹ”ÿĹ”ÿú”ÿú”ÿÀ·�þ¿·‘ý¼µ’ö»±ŽÌº¯‹”µ¬‰P¿¯�ªªª¸±†$´«‡O¸¯‰w¹¯Žš»°�¸»±�л²�ུ�ì½²�ñ¼³Žþ¼³Žþ½²�ñ½´�컳�ß»±ŽÌº°�¶¹¯Žš¸¯‰w´®ŠO¸±†$ªªªÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿü?ÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿü?ÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿü?ÿÿÿÿÿÿøÿÿÿÿÿÿðÿÿÿÿÿÿàÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿøÿÿÿÿðÿÿÿÿàÿÿÿÿÀÿÿÿÿÀÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿþÿÿþÿÿü?ÿÿøÿÿøÿÿøÿÿðÿÿðÿÿàÿÿàÿÿàÿÿÀÿÿÀÿÿÀÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿ€ÿÿ€ÿÿÀÿÿÀÿÿÀÿÿàÿÿàÿÿàÿÿðÿÿðÿÿðÿÿøÿÿøÿÿü?ÿÿü?ÿÿþÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÀÿÿÿÿÀÿÿÿÿàÿÿÿÿðÿÿÿÿøÿÿÿÿü?ÿÿÿÿü?ÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿàÿÿÿÿÿÿðÿÿÿÿÿÿøÿÿÿÿÿÿü?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿðÿÿÿÿÿÿÿÿü?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿÿÿü?ÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(`À €”ÌÌ™ÙÆ�ÝÌŒ<ÚÊ�\ÚË‹qÚÊ�~ÚËŠ†ÛÊŒƒÚËŠvÛËŒdÜÉŒCØÈ‹!ÔÔÌÌ™ßÉŠ¢”e7tPr}rK©zoEÎ|oBç„yEðˆvCõ„u?ù€r?ú„u?ùˆvCõ„yEð|oBçylBÒwjD¯vmJ{˜�a7×͉ÚÚ‘åÌ™  •eA|pJ–wjDÕwl:÷l6ÿŠy=ÿ�y<ÿŽz=ÿ�{=ÿ�{=ÿ�{=ÿ�|=ÿ�|=ÿ�|=ÿ�{=ÿ�{=ÿ�{=ÿ�z=ÿ�y<ÿ‹y=ÿl7ÿwl:÷wjDÕ|pJ– •eA×ĉ ž’h=xnI²sg=ê{k8ÿ�z=ÿ�{>ÿ‘}?ÿ’~@ÿ“~@ÿ“@ÿ“@ÿ“@ÿ”€Aÿ”€Aÿ”€Aÿ”€Aÿ”€Aÿ”€Aÿ”€Aÿ“@ÿ“@ÿ“@ÿ“~@ÿ’~@ÿ‘}?ÿ�{>ÿ�z=ÿ{k8ÿsg>êxnI²§šl=|rN{yoHÞxh:ý�{>ÿ�|?ÿ“@ÿ”€Aÿ”€Aÿ–�Aÿ•�Bÿ—‚Bÿ—ƒBÿ—ƒBÿ˜ƒBÿ˜ƒBÿ˜ƒBÿ˜ƒCÿ˜ƒCÿ˜ƒCÿ˜ƒBÿ˜ƒBÿ˜ƒBÿ—ƒBÿ—ƒBÿ—‚Bÿ•�Bÿ–�Aÿ”€Aÿ”€Aÿ“@ÿ�|?ÿ�{>ÿwh9ýwiBÜŒ�YrVR;‘€wXï‘„\ÿ’�Eÿ•‚Dÿ•�Cÿ•�Cÿ–‚Dÿ—‚Dÿ—ƒDÿ™…Fÿ˜ƒEÿ˜„Eÿš…Eÿš…Eÿš…Eÿš†Eÿš†EÿšˆGÿšˆGÿšˆGÿš†Eÿš†Eÿš†Gÿš…Eÿš†Gÿ™†Gÿ™…Gÿ™…Gÿ—ƒDÿ—‚Dÿ–‚Dÿ•�Cÿ•�Cÿ•‚Dÿ�}@ÿ�q>ÿvi>è…yRsQL8qj`Hð´­—ÿ­ {ÿ“€Cÿ˜…Fÿ™†Gÿš†GÿšˆGÿ›‡Hÿ›‰Hÿ�‰Hÿ�ŠHÿžŠIÿžŠIÿžŠIÿžŠIÿžŠIÿŸ‹IÿŸ‹IÿŸ‹IÿŸ‹IÿŸ‹IÿŸ‹IÿŸ‹IÿžŠIÿžŠIÿžŠIÿžŠIÿžŠIÿ�ŠHÿ�‰Hÿ›‰Hÿ›‡HÿšˆGÿš†Gÿ™†Gÿ˜…Fÿ—„Eÿ“‚Cÿƒw?þ|mDä‡}YS``F_Y>Ð{sUþÔÌ»ÿ²¦Œÿ…q@ÿ’�Fÿš‡Iÿ›ˆJÿ›ŠJÿœ‰Jÿœ‹Jÿ�ŠKÿ�ŠKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿŸ‹LÿŸ‹LÿŸ‹LÿŸ‹LÿŸ‹LÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿ�ŠKÿ�ŠKÿœ‹Jÿœ‰Jÿš‰Iÿ—ƒGÿ”‚Fÿ”‚Fÿ•„Gÿ–…Fÿ“‚Eÿ…v?ý{rKÄ¢–hskK_ib<öŠyXÿÔͺÿØÓ¾ÿÚÖÁÿž�lÿŽzBÿš‡Iÿ�ŠKÿž‹Lÿž‹LÿŸ‹LÿŸ‹LÿŸ‹LÿŸ‹Lÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿ ŒMÿŸ‹LÿŸ‹LÿŸ‹LÿŸ‹Lÿž‹Lÿš‡Iÿ�{Cÿ…p=ÿ…m<ÿ‹v?ÿ�}Dÿ–„Hÿ–…Iÿ’�Fÿ�tCõ‚yS\ÔÔxmJ¬}m=þ‰uPÿÔͺÿØÑ»ÿÙÑ»ÿÖθÿÌëÿ�|Kÿš†Jÿ ŽMÿ ŽMÿ ŽMÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ ŽMÿ�ŠKÿ¯¢zÿ¬›|ÿ ŽqÿŒwPÿ�i;ÿŽyAÿ•�Gÿ˜‡Jÿ–…HÿŠ|Fþ|sM¬åÌ™ ¥¥r|uKÙŒyCÿ‚m?ÿÊ­ÿÙÒ¾ÿØÑºÿÙÒ»ÿÛÖ¾ÿߨÅÿ±¢‚ÿ–�FÿŸ‹Mÿ¡ŽOÿ¢�Pÿ¢�Pÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Pÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Oÿ¢�Pÿ¢�Oÿ¢�Oÿ¢�Pÿ¢�Pÿ¢�Pÿ¢�Oÿ¢�Oÿ¢�Pÿ¢�Pÿ¢�Pÿ¢�Pÿ¢�Pÿ¡ŽOÿ°¢wÿåàÎÿãÞÌÿßÛÉÿ·©�ÿ„lCÿ…o?ÿ�|Dÿ—„Jÿ˜‡Jÿ•„Iÿ|uLÙ¯žršŒd&tJì�Gÿ‡s>ÿ²¥ŠÿÚÕÀÿÚÒ¼ÿÙѺÿÚÒ»ÿÛÔ½ÿߨÄÿ¾³—ÿˆr>ÿ’~Fÿš†Jÿ �Nÿ£’Pÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Pÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Qÿ£’Pÿ£’Qÿ£’Qÿ£’Qÿ˜†JÿÖÍ·ÿâÝÉÿàÙÅÿߨÅÿÛÔÀÿ¦–vÿ�k<ÿ�yAÿ˜†Jÿ›ŠMÿ–†JÿtJ워d3–Œb1‚wKð•‚Lÿ�zEÿ™‡`ÿÛÖÄÿÛÔÀÿÚÓ½ÿÚÓ¼ÿÚÕ½ÿÜ׿ÿÞÙÄÿÕ̶ÿ©™wÿ‡oDÿ�vEÿš†Mÿ¤‘Sÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’TÿœˆNÿÚÒ½ÿáÚÇÿߨÄÿߨÄÿߨÅÿáÚÇÿÒÉ´ÿ™‡`ÿŒvBÿ—‚JÿœŠNÿ—†Nÿ‚wKð”ˆa<š�j0‰xMõ—‡Nÿ˜„LÿŽxIÿÖ͹ÿÞ×ÄÿÝÖ¿ÿÛÔ¾ÿÜÕ¾ÿÜÕ¾ÿÝÖ¿ÿÞ×ÁÿáÙÄÿãÜÉÿåàÎÿÜ×Âÿ•€Iÿ£�Rÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¨•Wÿ¨•Wÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¨•Wÿ¦“Uÿ¨•Wÿ¦“Uÿ¨•Wÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ ŒPÿÙθÿãÜÉÿߨÄÿÞ×ÁÿߨÂÿàÙÅÿàÙÆÿÒɳÿ”Yÿˆs@ÿ˜„KÿžŒPÿ˜ˆNÿˆwJõž’h=¢šl!…zLðœŒPÿž‹Qÿ�|Fÿ¾³—ÿàÛÇÿÞÙÃÿÝØÂÿÝØÀÿÝØÀÿÝØÀÿÞÙÁÿߨÂÿàÙÃÿáÜÆÿäßËÿçâÑÿ­œpÿ¤“Tÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ§–Vÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ©˜Xÿ¥’Uÿ½±‹ÿäßËÿáÚÆÿߨÂÿÞÙÁÿÞÙÃÿàÙÅÿáÜÈÿáÜËÿ¹�ÿ‘|Dÿž‹Nÿ �SÿœŒPÿ…zLð¢—l/»ªw†zO看Rÿ¡�Uÿš‡NÿœŠ_ÿáÛÊÿàÙÆÿߨÄÿÞÙÄÿÞÙÃÿÞÙÃÿߨÄÿߨÄÿߨÄÿߨÄÿàÛÅÿãÜÉÿåàÏÿµ§�ÿ£‘Uÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿª™\ÿ¦”Xÿ§—gÿåàÎÿâÛÈÿàÙÃÿߨÄÿÞÙÄÿߨÄÿáÚÆÿâÝÉÿâÝÌÿž‹bÿ‘|Gÿ›ˆOÿ ŒTÿœ‹Rÿ†zO约ÿÿÿ†zSÓœ‹Sÿ¢ŽUÿž‰Pÿ�zEÿÎÆ¬ÿáÚÈÿáÙÄÿàØÃÿߨÂÿߨÂÿàØÃÿàØÃÿàØÃÿàØÃÿàØÃÿáÙÃÿâÛÇÿåÞÌÿ± |ÿœ‡Nÿ§•Yÿ«˜[ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¨•Xÿµ¤yÿæáÏÿäÜÉÿáÙÄÿàØÃÿàØÃÿߨÂÿàØÃÿáÚÆÿãÛÉÿÖÍ·ÿŸŠ`ÿŽuAÿ˜ƒLÿ ŒTÿœ‹Sÿ†zSÓ¿¿ˆ€Y�ž�Vÿ¡’Xÿ�ŠQÿ‘}Eÿ«œtÿâÝËÿâÝÈÿáÜÆÿàÙÃÿàÙÃÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿáÚÄÿãÜÈÿåÞËÿÝØÃÿ•�Oÿ ŒRÿªš]ÿ®�`ÿ®�`ÿ­œ_ÿ®�`ÿ®�`ÿ­œ_ÿ­œ_ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ¬œ^ÿ¶ŽÿéäÓÿæßÍÿãÜÈÿâÛÅÿáÚÄÿáÚÄÿàÙÃÿáÚÆÿâÝÈÿãÞÊÿãÞÍÿŹ ÿ—„Tÿ›ˆOÿ¢’Yÿ��Wÿ‡[¤Œ…bC•‡Tû¢‘Xÿœ‹Rÿ‘}Iÿ¾²’ÿãÝÌÿäÝÊÿãÜÈÿâÛÅÿáÚÄÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿãÜÈÿåàËÿçâÑÿÚÓ¼ÿ¯ oÿ«š^ÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žcÿ×βÿçâÐÿåÞËÿãÜÈÿáÜÆÿâÛÅÿâÛÅÿáÚÆÿâÛÇÿãÜÈÿäÝÊÿãÞÍÿáÜÊÿš‰UÿŸ�Uÿ£”Zÿ•‡Tû�„cU¶‘mŽ€Wð¢’Zÿ �Vÿ–�MÿÓË´ÿäßÎÿåÞËÿäÝÉÿãÜÆÿâÛÅÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿãÜÈÿäÝÇÿåÞÊÿæáÍÿèãÒÿëç×ÿË¿œÿ¯›aÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿdÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿcÿ°Ÿdÿ°œcÿØÍ²ÿçâÎÿåÞÊÿäÝÇÿãÜÆÿãÜÆÿãÜÆÿâÛÇÿãÜÆÿäÝÉÿåÞÌÿåàÎÿ¾±’ÿŸ‹Rÿ¨•\ÿ£“[ÿŽ€WðŸŸo�…`®¢‘Zÿ¤‘Zÿ›†Mÿµ”ÿåàÏÿåÞÌÿåÞËÿäÝÉÿãÜÈÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÉÿäÝÊÿåÞÈÿåÞËÿæßÌÿæáÌÿèáÏÿèãÒÿêæÕÿÖÊ®ÿµ¢mÿ²Ÿeÿ²Ÿeÿ² dÿ²Ÿeÿ²Ÿeÿ²Ÿeÿ² dÿ²Ÿeÿ²Ÿeÿ²Ÿeÿ² dÿ²Ÿeÿ²Ÿeÿ²Ÿeÿ²Ÿeÿ² dÿ²Ÿeÿ²Ÿeÿ² dÿ²Ÿeÿ²Ÿeÿ²Ÿeÿ²Ÿeÿ² dÿ² dÿ²Ÿeÿ²Ÿeÿ±�cÿ¼«€ÿèãÒÿçàÍÿåÞÊÿäÝÉÿäÝÉÿäÝÇÿäÝÇÿãÜÆÿäÝÇÿåÞËÿåßÎÿãÜÊÿ¡‹Wÿ§–]ÿ©˜_ÿ¢‘\ÿ�„`¹˜“k-˜‹Yû¥•]ÿ ŒSÿ¬šoÿæáÏÿæßÍÿæßËÿåÞÊÿäÝÉÿåÞÊÿåÞÊÿåÞÊÿåÞÊÿåàËÿæßËÿæáÌÿçâÎÿèáÏÿèãÑÿéäÓÿéåÔÿéæÕÿŹ�ÿ²¡fÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ®šbÿèãÒÿèáÏÿæßÌÿåÞÊÿåÞÊÿåÞÊÿåÞÊÿåÞÊÿäÝÉÿåÞËÿçâÍÿçâÒÿ²¢vÿ§”]ÿ¬›bÿ¨˜_ÿ˜‹Yûš�kG”ŠaÚ¤”_ÿ¢’Yÿ�ŒUÿßÚÆÿäàÏÿäßÍÿåàËÿäßËÿåàÌÿåàÌÿåàÌÿåàÌÿäßÍÿåàÎÿæáÏÿçãÑÿéäÔÿéæÕÿàÙÅÿÐȦÿ¾¯ÿ´¤lÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³¥mÿ³¥mÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ³£jÿ±¡hÿ§”ZÿÜ×ÁÿçãÑÿåàÎÿåàÌÿåàÌÿåàÌÿåàÌÿåàÌÿåàÌÿåàÌÿåàÎÿçâÒÿ÷”ÿ¢�Xÿ¬›bÿ¬›dÿ¥–aÿ•Š_Û¢˜qH�Œ^û§—aÿžŠNÿÏÇ­ÿæâÑÿäàÎÿåàÎÿåàÌÿåàÎÿåàÎÿæáÍÿæáÍÿæáÍÿæáÏÿçâÐÿæßÍÿÌ ÿ×αÿÓʬÿ·ªrÿµ§oÿµ¥kÿµ¥kÿµ§oÿµ§oÿµ¥kÿµ¥kÿµ§oÿµ§oÿµ¥kÿµ¥kÿµ§oÿµ§oÿµ§oÿµ¥kÿµ¥kÿµ§oÿµ§oÿµ§oÿµ§oÿµ§oÿµ§oÿµ¥kÿµ¥kÿµ§oÿµ¥kÿµ§oÿµ§oÿµ§oÿµ¥kÿµ¥kÿµ¥kÿ´¦nÿ°�cÿ¤“ZÿãÞÊÿèãÒÿæáÏÿåàÎÿæáÍÿåàÎÿåàÎÿæáÍÿæáÍÿåàÎÿåàÎÿçãÒÿÜ×Âÿ ‹Rÿ©˜]ÿ®�dÿ¬�hÿ›Œ^û¡—oeÿÿÿ™ŒcÚ¨›eÿ¥•_ÿ¼¯ˆÿçãÒÿåàÏÿåàÎÿåàÎÿæáÍÿçâÎÿçâÎÿçâÎÿçâÎÿçâÎÿçâÐÿéäÓÿÛÓ¹ÿ°œdÿµ¥mÿ¶§nÿ¶§nÿ¶§nÿ¶¦mÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶¦mÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ¶§nÿ´¦nÿ¬š^ÿÊ¿œÿêçÕÿèäÒÿèãÏÿçâÎÿçâÎÿçâÎÿçâÎÿçâÎÿçâÎÿçâÎÿçâÎÿçâÑÿéäÔÿÎŦÿ ŒSÿªš`ÿ®žiÿ©šdÿ˜ŠdÛÌÌ™ª¡w<ž�_û¬Ÿiÿ¨œcÿæáÒÿçãÒÿçâÑÿèãÏÿæáÏÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿèãÑÿéäÔÿêçÖÿìèÚÿ½°€ÿ¶©pÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿ·ªqÿµ¨oÿ¶ªvÿìèÛÿêçÖÿéäÓÿçãÑÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÐÿçâÑÿçâÑÿéäÓÿéæ×ÿ¿¶�ÿ£’Wÿ¬žfÿ­ jÿž�_û«¡v_˜�fÇ©›hÿ®¡jÿ®¢mÿæáÑÿçãÓÿçãÑÿæâÐÿæâÐÿçãÑÿçãÑÿçãÑÿèäÒÿèäÓÿéåÔÿêçÖÿìéÛÿÏÇ£ÿ¶ªqÿ¸«sÿ¸«sÿ¸«sÿ¸¬sÿ¸«sÿ¸«sÿ¸«sÿ¸¬sÿ¸«sÿ¸«sÿ¸¬sÿ¸«sÿ¸¬sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸¬sÿ¸«sÿ¸«sÿ¸¬sÿ¸«sÿ¸«sÿ¸¬sÿ¸«sÿ¸¬sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ¸«sÿ·ªrÿ¾²ƒÿéæÕÿêçÖÿéåÔÿçãÒÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿçãÑÿèäÓÿéæÔÿéæÕÿ³¦wÿ¥•\ÿ®žiÿ©›hÿ™�fÎÿÿ¹­™�cô¯£nÿ°¥oÿ¼¯€ÿéæ×ÿéåÔÿèäÒÿçãÑÿèäÒÿèäÒÿèäÒÿéåÓÿéæÔÿêçÕÿëèÙÿíêÜÿãßÊÿ¹¬tÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿ¸¬sÿµ©oÿ°£gÿÏÈ¥ÿêéØÿéæÔÿèäÓÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿéåÓÿéæÕÿæãÒÿª�eÿª›aÿ¯£lÿ™�cô¾¯‚3œ“mw§œjþ²¦oÿ´©qÿ¯¢gÿæáÐÿéæÕÿéåÔÿéåÓÿéåÓÿéåÔÿéæÔÿêçÕÿëè×ÿëè×ÿÔ̪ÿǼ�ÿ½°yÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ»®vÿ¹¬sÿµ¨mÿ²¥iÿ³¦jÿ³¦jÿ³¦jÿ±¤hÿ±¤gÿ³¦jÿµ©oÿ±¤hÿ«œ]ÿ§—Vÿ¾±�ÿëè×ÿéæÔÿéåÔÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÔÿéæ×ÿÚÕ½ÿ¤•Xÿ­Ÿgÿ§›iþ›“mœÿÿÿ›�hÙ°£oÿµ¨qÿ¶ªuÿ¯¢fÿäßËÿìè×ÿêæÕÿéæÕÿëçÕÿëçÖÿìè×ÿíéÛÿîëÞÿÍšÿ¼­wÿ¾¯zÿ½®xÿ½®xÿ¾¯zÿ¾¯zÿ¾¯zÿ½®xÿ¾¯zÿ¾¯zÿ½®xÿ¾¯zÿ½®xÿ¾¯zÿ½®xÿ¾¯zÿ¾¯zÿ¾¯zÿ¾¯zÿ½®xÿ¾¯zÿ¾¯zÿ½®xÿ½®xÿ¾¯zÿ¾¯zÿ¾¯zÿ¾¯zÿ»­uÿ²¤hÿ«šYÿ¥”Pÿ¥”Oÿ¦”Pÿ§–Rÿ¥”Oÿª˜Wÿ§”Rÿª™Xÿ¨—UÿÑȦÿǺ�ÿÝÕºÿëè×ÿëçÕÿêæÔÿéæÔÿêæÔÿêæÔÿêæÔÿéæÔÿêæÔÿêæÔÿêæÔÿêæÔÿêæÔÿéåÔÿêæÔÿéæÕÿêæÖÿɽšÿ¨š^ÿ®Ÿjÿœ‘hÛ×ל ¹­ ’h÷´§sÿ¸«uÿ¹¬uÿ´¤lÿîëÝÿìéÛÿëè×ÿëè×ÿìèØÿíéÛÿîëÝÿèäÏÿɼ�ÿ¾¯zÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¿°{ÿ¾¯zÿ»­uÿ³£fÿ¬›YÿÖͬÿðíàÿèäÒÿàÙÂÿÛÖ¸ÿéæÔÿðíßÿÞÙ¿ÿƺ�ÿÌÀ˜ÿïëÝÿíêÜÿìèÚÿëè×ÿêéÖÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿéæÔÿéæÕÿéæÕÿéæÕÿéæ×ÿ·©vÿ¯¡iÿ ’h÷»²†9¤˜tZ®¡oÿ·ªwÿ¸«wÿ»®xÿÀ´ƒÿðìàÿîëÝÿîëÝÿîêÜÿïëÞÿðíàÿìèØÿÍÅ�ÿ¿²|ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾±zÿµ¨kÿ´¥hÿâÝÅÿðìßÿïëÝÿîëÝÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿíêÛÿíéÙÿìèØÿëè×ÿëèÖÿëèÖÿëèÖÿëèÖÿëèÖÿëè×ÿëèÖÿëèÖÿëèÖÿëèÖÿëèÖÿëèÖÿëèÖÿêçÕÿëèÕÿéæ×ÿéè×ÿÙÒ·ÿ­ždÿ¬ mÿ¤™t…¥™r°²¦sÿ¸¬xÿ»®zÿ¼¯{ÿ¼®vÿåàÈÿñíáÿàÛÁÿïëÞÿØÑ±ÿÄ»‡ÿ¿´~ÿ¿´~ÿÀ´ÿ¿´~ÿÀ´ÿÀ´ÿÀ´ÿÀ´ÿ¿´~ÿ¿´~ÿ¿´~ÿÀ´ÿ¿´~ÿÀ´ÿ¿´~ÿ¿´~ÿ¿´~ÿ¿´~ÿÀ´ÿ¿´~ÿ¿´~ÿÀ´ÿÀ´ÿÀ´ÿ¿´~ÿ¿´~ÿÀ´ÿ¿´~ÿÀ´ÿ¿³~ÿ»®sÿ»¯uÿëêÙÿïìßÿîëÜÿíêÛÿíéÙÿìéÚÿíéÙÿíéÙÿìéÚÿíéÙÿìéÚÿìéÚÿìéØÿíéØÿëè×ÿëè×ÿìè×ÿìè×ÿìè×ÿìè×ÿìè×ÿìè×ÿëè×ÿëè×ÿìè×ÿëè×ÿëè×ÿìè×ÿìè×ÿëèÖÿìèÖÿêéØÿêéØÿéèÙÿ·ªsÿ®£oÿ¥˜rÂÌÌ™ÿªª£šo絩vÿº¬yÿ»­zÿ¼­wÿ·§nÿ¾¯yÿäßÇÿʾ‘ÿƹ‡ÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿµÿÁ´~ÿ½­uÿ´¤cÿË¿“ÿðíàÿîëÝÿíéÛÿìèÚÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿëè×ÿìè×ÿìèÚÿãÜÈÿÛÔºÿÌÃ�ÿ³¦rÿ£šoçÝÒ›¿¯§™nù¹ªyÿ¼­}ÿ»¬{ÿ¸¨oÿ÷‡ÿÝØ¾ÿÔÉ¥ÿö€ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ�ÿµ‚ÿµ�ÿµ�ÿµ‚ÿµ‚ÿµ�ÿµ‚ÿµ�ÿµ‚ÿµ�ÿµ‚ÿµ�ÿµ�ÿµ‚ÿµ�ÿµ�ÿµ‚ÿµ‚ÿµ�ÿµ‚ÿ¿°{ÿµ¥gÿ¿²|ÿïìÞÿïìßÿîêÝÿíéÜÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíêÜÿíéÜÿíêÝÿÚÒµÿ°¡dÿ·©qÿµ§tÿ§™nùÀ¶‡1ª x3±¥vÿº­}ÿ¼¯}ÿ»­uÿ¿²ÿçãÎÿÈ»ŒÿŹˆÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ÷ƒÿ¾°xÿÏÆ�ÿðíâÿñíáÿïëÞÿîëÝÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿïëÝÿïëÞÿîéÜÿźŠÿãÜÉÿº¬yÿ±£kÿ¯¢rÿ©�yi§Ÿz`µ¨yÿ½®~ÿ½¯|ÿ¶¦lÿߨ½ÿŸ…ÿÄ·…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿÄ·„ÿÄ·„ÿÄ·„ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿŸ…ÿÀ±|ÿëæÔÿòîäÿñìàÿðëÞÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÝÿïêÞÿðëßÿðëàÿØÏ®ÿºªnÿíéßÿæáÐÿ±¢hÿ®¡nÿ§œv›ÔÔª« zŒ·«{ÿ»¯~ÿ¸«sÿ¼®{ÿêçØÿ¾¯yÿŹˆÿƺ‰ÿƺ‰ÿŹˆÿ÷ƒÿ¶�ÿö€ÿÁµ€ÿ÷ƒÿƺ‰ÿʆÿƺ‰ÿʆÿƺ‰ÿƺ‰ÿƺ‰ÿʆÿƺ‰ÿƺ‰ÿʆÿʆÿƺ‰ÿƺ‰ÿʆÿʆÿʆÿʆÿƺ‰ÿʆÿʆÿƺ‰ÿƺ‰ÿʆÿʆÿĸ„ÿåàÈÿòîäÿñíáÿðìßÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿðìßÿïìáÿñíáÿË¿“ÿÀ³ÿíêßÿëçÞÿÛÓºÿ­ iÿ¨œx½ßÏŸ ­£z¯¸¬}ÿ»«xÿ·¨nÿèãÑÿêæÖÿôÿÈ»‰ÿÈ»‰ÿÈ»‰ÿƹ†ÿóÿÁ±{ÿôÿÍÁ•ÿƹ…ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿǺˆÿÍÁ•ÿòïåÿòîâÿðíàÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿñíàÿòîâÿòîâÿÀ²zÿɺŒÿíêàÿëçÝÿêæÚÿ·«{ÿ§šrØàÔžB®¨{ȶªwÿ²¥jÿØÑ³ÿïîåÿèäÒÿŹˆÿÈ»‹ÿÇ»ˆÿƹ†ÿĸƒÿÊ»�ÿØÏ­ÿË¿�ÿÖͪÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿµÿðìßÿñîãÿñîáÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíàÿðíâÿñîãÿèáÍÿº¬pÿÙѲÿíêßÿêçÝÿèçÚÿÆ»—ÿ¨ oçßÒœb­¡vÚ±¤nÿÆ»’ÿîëâÿƺ�ÿÄ·„ÿÈ»‹ÿƺ†ÿöÿµ~ÿÄ·„ÿÜÕ·ÿàÙ¾ÿÈ»‰ÿɼ�ÿɼŒÿɼ�ÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼ�ÿɼŒÿɼ�ÿɼ�ÿɼ�ÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼŒÿɼ�ÿÈ»ŒÿöÿéåÓÿòïåÿñíãÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿðìâÿñíãÿòîäÿÛбÿ¾¯vÿðìàÿíéàÿëçÝÿèçÛÿÕжÿ¨�míÞÏœu¦™k꿳ˆÿèçÚÿîíäÿÌÀ—ÿ¶‚ÿƺ‰ÿö€ÿƺ†ÿ×ϬÿÎÅšÿɼ�ÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿË¿’ÿòñåÿóðæÿñðåÿñîãÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðïãÿñîäÿòïåÿÍÁ’ÿÒÊ¢ÿðíãÿíêàÿëèÝÿèèÛÿæáÕÿ« rïßΛƒ­žoôæâÕÿÕͰÿèäÔÿߨÁÿµƒÿÄ·…ÿǸˆÿìèÖÿ×Ì©ÿʾ�ÿʽ�ÿʽ�ÿË¿�ÿʽ�ÿʽ�ÿË¿�ÿË¿�ÿʽ�ÿʽ�ÿË¿�ÿË¿�ÿË¿�ÿË¿�ÿË¿�ÿË¿�ÿʽ�ÿË¿�ÿʽ�ÿË¿�ÿʽ�ÿË¿�ÿË¿�ÿË¿�ÿʽ�ÿʽ�ÿʽ�ÿË¿�ÿË¿�ÿʽ�ÿË¿�ÿË¿�ÿʾ�ÿÓÊ£ÿóðåÿóðåÿòîäÿñîäÿñîãÿòîâÿñîãÿñîãÿòîâÿòîâÿñîãÿòîâÿòîâÿòîâÿñîãÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿòîâÿóïãÿòïåÿñíáÿ½¯sÿìè×ÿñîãÿîêàÿìèÞÿÕͰÿÝØÆÿ±¥yòÚË™ŠÈ¿£éàÜËÿ¾±~ÿÚÒ´ÿèäÑÿȼŒÿÎÆšÿçàÉÿÐÇœÿË¿�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿË¿�ÿ×ΨÿôñçÿóðæÿòïåÿòïäÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîäÿñîãÿñîãÿñîãÿñîäÿòïäÿòïåÿàÙ¾ÿËÀ�ÿòïåÿðïâÿîëáÿìéßÿ¿³€ÿ¾²…ÿµ«„óÒÅ‘…Ï̲ãÙÒ¼ÿ¿³‚ÿƺ�ÿÇ»�ÿʽ�ÿÐÈ ÿË¿�ÿɼŒÿË¿�ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿË¿�ÿÚѯÿõôéÿôñçÿóðåÿòñåÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿôñæÿôñæÿßÚ¼ÿæáÉÿòïåÿñîãÿîëáÿèäÔÿ³§kÿËĤÿËÇ®÷ÑÄ�zÎ˳ÎÒÊ­ÿÁµ�ÿÇ»Žÿȼ�ÿÌÀ�ÿɼŠÿÇ»†ÿΑÿÌÀ�ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÎÂ’ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÎÂ’ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÎÂ’ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÎÂ’ÿÍÁ‘ÿÎÂ’ÿÍÁ‘ÿÍÁ‘ÿÌÀ�ÿÛÔ´ÿôðæÿõñèÿóðæÿòñåÿòïåÿòïåÿòïåÿóïåÿòïåÿòïåÿòïåÿòïåÿòïåÿóïåÿóïåÿõñåÿóðæÿôñçÿôñçÿóòæÿíéÙÿõòèÿõòèÿôóèÿõòèÿöòéÿõòéÿóðåÿôñçÿòïåÿñîäÿïëâÿÚÒ´ÿúŠÿèçÜÿÉçóÑÄ�eÉé°Õδÿ¿³ÿǺŽÿɽ�ÿÌÀ‘ÿÈ»‰ÿÜÔ²ÿÑÈ�ÿÌÀ�ÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿΓÿÍ•ÿêæÑÿõòéÿôñçÿóòæÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðåÿóðæÿôñæÿôóçÿõòéÿöóêÿêçÔÿÒÉŸÿ×̧ÿ÷ôíÿóïåÿéäÏÿÝÖ·ÿÕÊ¥ÿ×ΩÿÚÑ®ÿõòèÿòïåÿñîäÿïìâÿâÛÅÿâÞÌÿèäÚÿþ¡èÎÓEž¢ŠãßÒÿ¼¯{ÿƺ‹ÿʽ�ÿ˾�ÿǺ„ÿéäÐÿÐÅ›ÿÌÀ�ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÎÂ’ÿÛÔ´ÿöõìÿõòéÿôñçÿôñæÿôñæÿóòæÿóòæÿóðæÿóðåÿóðåÿóòæÿôñæÿôóèÿñðãÿìèÖÿÜÕµÿÎÂ’ÿÍÔÿÏÔÿÕÊ£ÿΓÿÍÔÿΓÿΓÿΓÿʽ‹ÿôóèÿòïåÿñîäÿîëáÿìèÞÿêçÜÿçäÚÿ¼µ™ÓÊ»Ž"Á¹§`èäÜÿ¾µ…ÿ¿²~ÿö€ÿµ~ÿ¿°sÿàÙ¾ÿÓÊŸÿɼˆÿÎÁ’ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍ•ÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍ•ÿÍ•ÿÍÔÿÍÔÿÍ•ÿÍÔÿÍ•ÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿΓÿÛÔ³ÿöóéÿöóéÿõôéÿõòèÿõòèÿõòèÿõòèÿõòéÿõòéÿõòèÿöóêÿëèÕÿÇ»„ÿÍÀ�ÿÍÁ�ÿÎÂ’ÿÍÔÿÎÁ’ÿÌ¿�ÿÌÀ�ÿÎÁ’ÿ˾ŽÿÈ»‡ÿÈ»‡ÿÄ·ÿõòèÿóðçÿòïåÿïìáÿíéßÿêçÜÿæåÙÿ´®’µŸŸ¹´Ÿ0çæÛÿÒÉ«ÿ³¦kÿĺ‹ÿÀ³ÿàÙ½ÿöõíÿÙЮÿÀ²zÿƺ‡ÿÌÀ‘ÿÍÁ•ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ•ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ•ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍÁ•ÿÌÀ‘ÿÓÊ¡ÿòïåÿíéÛÿæßÈÿòîäÿöóìÿöóìÿöóìÿöóìÿöõìÿ÷ôíÿøõîÿÔË¢ÿ˾�ÿʽŽÿÌÀ‘ÿÍÁ•ÿʽŽÿŸ„ÿÈ»‰ÿɽ�ÿöÿƺ†ÿ¾­rÿ»¬nÿòîâÿóðçÿñîåÿîëâÿìéàÿéèÜÿæåÚÿ¨¢„‡°œ‰ àÝÒþéèßÿæãÒÿííãÿñðèÿôóêÿõôìÿõôéÿÛÖ´ÿ¶~ÿŹ„ÿËÁ’ÿÍÄ–ÿÍÄ–ÿÎÅ™ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÎÅ™ÿÎÅ™ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÎÅ™ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿËÁ’ÿƺ…ÿ¿²wÿÍĘÿÈ»‰ÿź…ÿĸ�ÿÕͧÿßÚ½ÿâÝÃÿåÞÆÿçâÍÿêåÑÿéåÓÿÎÅ™ÿÒÉŸÿÝØ¸ÿɽŒÿʾŽÿŹ‚ÿçâÌÿÔˤÿŹ„ÿÙÑ®ÿòïåÿðíâÿïìÞÿòñåÿóòçÿñðåÿîíâÿèèÛÿèèÞÿàÜÒþœ–uN×ÕÅâèèÜÿìéàÿïìãÿñîåÿôñçÿõòéÿöõìÿ÷öíÿóðåÿÏĘÿÌ¿�ÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÎÖÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÍÀ�ÿÕÊ¢ÿéäÏÿ÷öíÿ÷ôëÿ÷ôíÿߨºÿƺ…ÿÍÁ”ÿÏĘÿÏĘÿÏĘÿÏĘÿÏ×ÿÍÁ”ÿΖÿÌÀ�ÿÓÈ ÿƺ…ÿʾ�ÿõòèÿΓÿÊ»Šÿø÷ïÿøõîÿ÷öíÿ÷ôëÿõôéÿôñçÿñîåÿæâÑÿ¼­xÿæáÔÿÕÒÂ÷˜‘m#Ð͹šèåÜÿêçàÿîëâÿðíäÿòïæÿóðéÿõòéÿöóìÿ÷öîÿìèØÿƺ†ÿÍÁ”ÿÎÙÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÍÀ‘ÿåÞÆÿøõïÿ÷ôíÿöõìÿ÷ôíÿ÷öîÿÍÀ”ÿÈ»‰ÿÍÁ”ÿÎÙÿÏÄšÿÏØÿÎÁ“ÿÈ»‰ÿŸ‚ÿÚЮÿäÝÅÿÎÙÿïëÞÿèãÎÿ¿®uÿØÍªÿø÷ïÿøõïÿ÷öîÿöóìÿõòëÿóòéÿñîçÿÜÕ»ÿÇ»�ÿèèÞÿÆÀ¨Ýj ÇîIææÜÿëçßÿíêãÿðíäÿòïæÿôñèÿõòéÿ÷ôëÿ÷ôíÿõòèÿöÿŸ„ÿʽŽÿÎÁ“ÿÎ×ÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄ›ÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÎÁ“ÿêæÔÿø÷ðÿøõîÿ÷ôíÿ÷öíÿøõîÿéâÏÿÁ²|ÿŸ„ÿɼ�ÿ˾�ÿÌ¿�ÿƺ†ÿÌÀ“ÿëèÕÿìè×ÿÍÀ‘ÿÍÁ’ÿøõïÿøõîÿ÷ôîÿø÷ïÿÝÔ¶ÿÙЮÿêãÐÿÛÔ´ÿÑÆŸÿðìãÿòïæÿÐÇ¡ÿØÑ¶ÿèåÞÿ¸±–ª¹¹¢ ßÜÒûéèÝÿìëâÿïìãÿòïæÿôñçÿõòéÿöóêÿ÷ôëÿ÷öîÿèãÎÿÓË¡ÿ¿³zÿĸƒÿËÀ�ÿÎÅ™ÿÎÅ™ÿÍ–ÿÍÄ–ÿÎÅšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆšÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÍÄ–ÿÛÔ³ÿø÷ðÿøõïÿøõîÿ÷öîÿøõîÿøõïÿõòéÿɽŽÿÁ´~ÿµ~ÿµ~ÿÍÁ’ÿ÷öîÿÚÒ²ÿ¶ÿÛÔ³ÿöóêÿ÷ôíÿ÷ôíÿøõîÿëèÕÿɼŒÿÍÁ’ÿË¿�ÿĺ‡ÿɽŽÿñíåÿëèÛÿ½°}ÿèåÚÿßÛÓü«¥„UÕÑ¿¹éèÝÿìëâÿîíäÿñîåÿóòéÿôóêÿõôëÿöõíÿ÷öíÿ÷öîÿôñçÿèãÎÿÞÙ»ÿ÷ÿɼŒÿɽ�ÿÇ»ŠÿɼŒÿÌÁ”ÿÎÅšÿÏÆ›ÿÎÅšÿÎÙÿÎÅ™ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÎÅšÿÛÔ´ÿøøðÿóðåÿéèÔÿâÛÁÿ÷öîÿ÷÷îÿø÷ïÿðíßÿôôèÿïëÛÿÏÆ›ÿóðåÿä߯ÿʽŽÿïëÝÿ÷öîÿ÷öîÿ÷öíÿ÷öíÿ÷öîÿñíàÿ¶ÿÍÁ’ÿË¿�ÿÑÉŸÿòòèÿóòêÿÑʧÿÖϳÿêçàÿÐ˻rÎ˹TèåÞÿëèáÿíìäÿðïæÿòñèÿôóèÿõôëÿöõìÿöõíÿ÷öíÿ÷öîÿø÷ïÿøøðÿÙÑ®ÿ¿±uÿ¿²zÿÙÑ®ÿÔË¥ÿÍ–ÿÎÙÿÍ–ÿʾ�ÿȼ‹ÿË¿�ÿÍĘÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÐÈ�ÿÎÅšÿÍ•ÿƼ‰ÿêæÔÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷÷îÿ÷÷ïÿ÷÷îÿêçÕÿîêÜÿ÷öîÿ÷öíÿööíÿöõìÿöõíÿ÷öíÿööìÿ¶ÿæáÉÿƼ‰ÿêçÔÿôóëÿíêßÿ»¬wÿìéãÿèèÞÿ¿»¢¹¶¶‘ßÜÏóêçàÿíìäÿðíæÿòïèÿõòéÿõòëÿöóìÿ÷ôíÿ÷ôíÿ÷ôîÿøõîÿøõïÿø÷ðÿöõìÿìè×ÿíéÙÿíéÙÿ×ΫÿÏÆ›ÿÌÀ“ÿź†ÿÒÉŸÿʾ�ÿÍ–ÿÐÇ�ÿÏÆ›ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÐÇ�ÿÎÅšÿÌÀ‘ÿɼ�ÿõòèÿøõïÿ÷öîÿ÷ôîÿ÷öîÿ÷öîÿøõîÿøõîÿøõîÿøõîÿ÷ôîÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôîÿøõîÿöõìÿöóìÿÝÖ¸ÿèäÑÿóðêÿñîçÿøŒÿéèßÿßÚÓü²¨ŒPÖÑÁ’éèßÿìéâÿïëãÿòîæÿôñêÿõòëÿöóìÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷öîÿøõîÿø÷ïÿø÷ñÿ÷ôîÿÎÁ“ÿÏØÿΗÿÔɤÿöóéÿùøòÿéäÏÿÎ×ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÏØÿÜѱÿîêÜÿø÷ñÿø÷ïÿøõîÿ÷ôîÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôíÿ÷ôîÿøõîÿ÷ôíÿöóìÿõòëÿóïçÿïìåÿêéÞÿéèàÿÐÉ·äqqT Ìòáá×üëèâÿíìåÿðïæÿòñéÿõôëÿõôìÿöõíÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öïÿïëÝÿãßÈÿîêÝÿÐÈ¡ÿÈ»�ÿÆ»Šÿĺ‡ÿÕÌ©ÿ÷öîÿÜÕ·ÿÎÆœÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇ�ÿÎÆ›ÿÎÆœÿÍÁ–ÿÑÆ¡ÿÐÇžÿèäÑÿöõìÿø÷ðÿø÷ïÿ÷÷ïÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿöõíÿõôìÿõôëÿòñéÿðïçÿîíåÿëêâÿâáÖý½¹›ˆÜØÉ«éèàÿíêäÿïìæÿóïéÿõòëÿöóíÿ÷ôîÿ÷ôîÿøõïÿøõïÿøõïÿøõïÿø÷ðÿñíáÿÎÅ›ÿ¿´|ÿȾ�ÿÓʤÿßÚ½ÿÕÌ©ÿÍÄšÿɾ‘ÿÍÅšÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÐÇžÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÍÅšÿÉ¿�ÿÉ¿�ÿÎÅ›ÿàÙ¾ÿÙѲÿǪ̂ÿÑÉ¢ÿéåÓÿ÷÷òÿø÷ñÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿøõðÿøõïÿøõïÿøõïÿøõïÿøõïÿ÷ôîÿ÷ôîÿöóíÿõòëÿóïéÿïìæÿíêäÿéèàÿ×ÒÂñjjU ÏÇ· âáÖýëêâÿîíæÿñðçÿóòêÿöõìÿöõíÿ÷öîÿø÷ïÿø÷ðÿø÷ðÿø÷ðÿø÷ðÿøøðÿøøñÿ÷öíÿùøòÿùøòÿùøòÿø÷óÿùøôÿçâÌÿÎÆœÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÍÄ™ÿÞÙ¼ÿÍĘÿÆ»ŠÿáÚÂÿöóêÿùøòÿäàÉÿÏÇ�ÿïìßÿùøòÿ÷÷òÿøøñÿøøñÿøøñÿøøñÿøøðÿøøðÿø÷ïÿø÷ïÿø÷ïÿø÷ïÿ÷öîÿöõíÿöõìÿóòêÿñðçÿîíæÿìéãÿâáÖþÁºŸ�ÚØÉ™éèáÿíìäÿïîæÿòñèÿôóëÿöõíÿöõîÿ÷öïÿø÷ðÿøøñÿøøðÿøøðÿøøðÿøøðÿøøðÿøøðÿøøñÿøøñÿ÷öîÿëèÕÿÕ̦ÿÐÇ�ÿÑÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÈžÿÑÉŸÿÑÈžÿÑÈžÿÑÉŸÿÑÉŸÿÑÈžÿÑÈžÿÎÅ™ÿëçÕÿùøôÿÐÇœÿâÛÁÿùøõÿÚÓ²ÿÐÈžÿÑÈžÿÑÈžÿÚÒ²ÿðíàÿëçÔÿâÛÀÿàÙ½ÿóïãÿìéØÿøøñÿøøñÿø÷ðÿø÷ïÿ÷öîÿöõíÿöõìÿôóëÿòñéÿïîæÿíìäÿêçáÿ×ÕÄïй¹ äãÙîëêãÿííæÿðïçÿóðêÿõôìÿöõïÿø÷ðÿËÁ’ÿèãÎÿ÷÷òÿøøñÿøøñÿø÷ñÿø÷ðÿø÷ðÿøøñÿ÷÷òÿø÷óÿäÝÆÿÒÊ£ÿÑÉŸÿÐÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈ�ÿâÛÃÿöóìÿØÐ­ÿãÞÅÿæáÉÿÏÇœÿÑÉŸÿÐÈ�ÿÎÆšÿÏÇœÿðìßÿż†ÿÓÊ£ÿɾ�ÿÍÅ™ÿÍ•ÿõõìÿøøñÿø÷ñÿ÷öïÿ÷öïÿöõîÿõôìÿóðêÿðïçÿííæÿëêãÿââØþ½·œ]ÙÖÆ^êçáÿíêãÿðíæÿòñèÿôóëÿ÷öíÿø÷ðÿÓˤÿÕͧÿúùóÿùøòÿùøñÿøøñÿøøðÿøøðÿøøñÿùøòÿêæÑÿËÁ’ÿÑÉžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÎÆšÿàÛ¿ÿ÷÷îÿÎÆšÿÑÉžÿÐÈ�ÿÍÄ–ÿɽ�ÿȽ�ÿÖΨÿÒÊ ÿùùôÿÛÔ´ÿÍÄ–ÿÓË¡ÿìèÖÿùøòÿø÷ðÿø÷ïÿ÷öîÿöõìÿôóëÿñðèÿðíæÿíêãÿêçáÿÔ˸ÖÿÿÿÝÝÓÆéèáÿîíæÿðïçÿóòêÿöõîÿø÷ðÿìèØÿÍÅ™ÿÛÖ¶ÿîêÚÿø÷óÿùøòÿ÷÷òÿ÷÷òÿùøòÿøøôÿ÷÷òÿÐÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈ�ÿÐÇ�ÿÐÈ�ÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÒÉ ÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÏÇœÿèäÎÿèäÏÿÓË¡ÿÑÉŸÿÏÆ›ÿÌ¿�ÿÙÒ±ÿÖΨÿĹ„ÿõòèÿùøõÿÝÖ¸ÿËÀ�ÿʾŽÿêæÔÿ÷÷òÿø÷ñÿ÷öïÿ÷öîÿõôíÿóòêÿðïçÿîíæÿééáÿÝÜÎù±©‹!ζèãÝôìëäÿïîæÿññéÿõòíÿöõïÿØÍ®ÿÑÆžÿÑÆŸÿÐÅ�ÿñîãÿø÷óÿùøòÿùøòÿêçÕÿîêÜÿøøðÿÏÄœÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÑÈŸÿÑÆžÿÏÚÿÍÀ”ÿ˾�ÿÌ¿“ÿÐÅ�ÿÒÇ ÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÑÈŸÿÒÇ ÿÒÇ ÿÑÈŸÿÒÇ ÿÒÇ ÿÒÇ ÿÕʧÿ×ΩÿÒÇ ÿÑÈŸÿÎÙÿÙÏ­ÿùùõÿùøôÿõôëÿøøôÿùøôÿðìàÿǺˆÿ×άÿÓÈ¡ÿÞ×¼ÿ÷öðÿ÷öîÿõôíÿôñëÿñðèÿîîæÿìëäÿèçßÿÀº¡sÕÒÀJêçáÿíêæÿðïçÿòñëÿìèÛÿÍÁ˜ÿÐÅžÿÑÆŸÿÐÅ�ÿèãÑÿùøôÿø÷ôÿø÷ôÿ×Í«ÿÍÁ–ÿÛÒ³ÿÐÅœÿÒÇŸÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÑÆžÿÍÀ”ÿȹ‰ÿÅ·„ÿ×Í«ÿÍÀ”ÿÍÁ•ÿÒÇŸÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÏÚÿçâÍÿùøõÿøøôÿø÷ôÿø÷ôÿðíàÿÌ¿‘ÿÖ˨ÿø÷óÿ÷öðÿø÷ðÿ÷öðÿöõîÿôñìÿñðéÿïîçÿíêåÿêçáÿÏǵÁÚ×ɆëèâÿîêæÿðïæÿÍ›ÿʾ’ÿÏÆœÿÐÅ�ÿÑÆžÿÑÆŸÿêæÔÿú÷õÿú÷õÿìè×ÿ̽�ÿʽŽÿ̽�ÿÏØÿÒÇžÿÒÇŸÿÒÇŸÿÒÇŸÿΗÿÈ»‰ÿäÜÃÿâÚÃÿúùöÿðìßÿ˼�ÿÐÅ›ÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÑÆ�ÿêåÑÿú÷õÿùöôÿú÷óÿú÷óÿÞÖ¹ÿ˾�ÿ÷öîÿø÷óÿ÷öòÿø÷ðÿ÷ôïÿõñìÿóðêÿðíçÿîêåÿëèâÿØÓÂ裣ÿÿÿÜÙΩëêäÿîîçÿÚÒ¸ÿö‡ÿʽ’ÿÎÚÿÐÅœÿÏÄ›ÿÑÅ�ÿø÷ðÿùøôÿØÌ©ÿ;‘ÿáÙ¿ÿÏÄ›ÿ;�ÿΗÿÐÄ›ÿÑÆžÿÒÇŸÿÍÁ”ÿèáËÿúùõÿùùõÿùùôÿúùõÿ˾�ÿÍÀ’ÿÑÆ�ÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇ ÿÒÇŸÿÒÇŸÿÑÆ�ÿâÛÃÿùøôÿùøôÿúùóÿø÷ïÿ̽�ÿòïåÿ÷÷òÿøøñÿðíâÿõôíÿóòëÿñðèÿîíæÿêêãÿÜØÉô½·–'ÔÔªßÞÒÃëêäÿçãÖÿǼ“ÿ¾²�ÿÅ»Œÿʾ“ÿʾ’ÿȼ�ÿ×άÿÑÉ¡ÿʾ‘ÿçâÎÿðíãÿôñèÿÏÆŸÿƺ‡ÿɽ�ÿÏÄœÿÐÇ ÿ͘ÿ÷÷òÿùùõÿùøôÿùøôÿùøõÿíéÙÿʾ‘ÿÍÁ•ÿÏÆœÿÐÇ�ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÑÈŸÿÍÄ›ÿòîâÿùøõÿùøôÿôñçÿË¿”ÿðíãÿ÷÷òÿÛÔ¸ÿÈ»�ÿçãÕÿòïéÿîíæÿêêãÿßÞÐùÀ·ž=Ú¶¶ßÝÕËêéåÿïîèÿÝØÂÿÀ´…ÿ¿³€ÿɽ‘ÿáÚÃÿÏÆŸÿÍ™ÿÞ×¼ÿöóíÿúùöÿúùöÿ÷†ÿìèØÿÕÌ©ÿÎÚÿÐÇ ÿÎÚÿàÙÂÿùøõÿùøôÿø÷ôÿùøôÿùøõÿÛÔ¶ÿĸ…ÿÈ»�ÿË¿“ÿÏÆœÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÏÆ�ÿâÛÃÿøøôÿø÷ôÿ÷÷òÿ÷öòÿ÷÷òÿñðçÿáÜÇÿÖαÿãßÏÿîíçÿëêäÿàÝÔøÄ½¡JÚ¶¶ßÞÓ»ëêäÿïìçÿîëåÿÛÔºÿÍÅŸÿãÞÈÿÔʨÿÇ»‹ÿÓÊ¡ÿÑÈ¡ÿ÷÷òÿúùöÿòîäÿúùöÿíéÛÿÎÅšÿÑÈŸÿÎÅšÿúùöÿùùõÿùøôÿø÷ôÿø÷ôÿùøôÿø÷ðÿÓÊ¡ÿ×ϬÿÇ»Šÿʾ�ÿÎÅšÿÐÇ�ÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÐÇžÿ×ϯÿùøõÿ÷÷óÿ÷÷òÿøøñÿöõñÿòñèÿãÞÊÿƽ’ÿàÛËÿêêåÿáÞÒùü¢EªªªßÜÑ©ëêäÿïìçÿððéÿóòìÿëèÚÿÒɧÿÏÄ ÿƹ‰ÿʾ“ÿÐÇ¢ÿïëßÿùøõÿøõîÿÍÁ–ÿÎÅœÿÑÆŸÿÐÅžÿÞ×»ÿôñêÿùøõÿøøôÿø÷ôÿøöõÿùøõÿùøõÿùùõÿøõïÿƺ‹ÿǺŠÿÌ¿”ÿÎÅžÿÑÆŸÿÑÆŸÿÑÆŸÿÐÇ¡ÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÐÅžÿÏÆ ÿÏÄŸÿïèÞÿø÷ôÿ÷öòÿêæØÿ×αÿË¿™ÿȽ™ÿÄ»’ÿÞÙÊÿÞÚÐõÊÀ£5ÿÿÿßÛΉëèãÿîëæÿðïèÿóðìÿóòêÿðìãÿíéÝÿÏÆ¡ÿĸ‹ÿߨ¾ÿø÷ôÿú÷öÿäÝÇÿÏÛÿÐÇ¡ÿÐÇ¡ÿÏÆ�ÿÒÉ£ÿø÷ðÿúùõÿùøõÿùøôÿùøôÿùøõÿúùõÿú÷öÿìèØÿØÏ®ÿÇ»ŒÿÍ™ÿÏÆ ÿÐÇ¡ÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÏÆ ÿÏÆ ÿÐÅžÿÏÆ ÿÏÄ�ÿÌÄžÿÛÓ¸ÿÔˬÿËÀ›ÿÊ¿˜ÿȽ˜ÿÇ»”ÿ½´�ÿÌÉ´ÞÈÁ¢!ÚÓÃMêåáôèçÞÿÞÙÄÿíêáÿÎÅ¢ÿÛÔ¼ÿÓÊ©ÿÌÃ�ÿÙѳÿøøôÿùøõÿÜÕºÿÎÅŸÿÏÆ ÿÏÆ ÿÏÆ ÿçàÌÿߨ½ÿúùöÿùøõÿùøôÿùøôÿùøôÿùøõÿúùõÿúùöÿûúöÿïëÞÿÎÅœÿÏÆŸÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÅžÿÏÆ ÿÏÆ ÿÏÆ ÿÏÆ ÿÎÅŸÿÍÅŸÿÍÄžÿÌÃ�ÿËÀœÿÊ¿šÿɾ™ÿǼ˜ÿ·’ÿº±�þ»³�›ß¿ŸÆÆ©¾³”½Á¸•ÿ¾µ‡ÿÜ×ÂÿÇ»”ÿÞÙÃÿ÷öðÿõòíÿõôíÿìèÚÿÍšÿÍÄ�ÿÏÆŸÿÏÆŸÿÏÆŸÿÎÅžÿÒʤÿøõïÿúùõÿùøôÿùøôÿùøôÿùøôÿùøõÿúùõÿóòæÿÛÔµÿÙЯÿÏÆŸÿÏÆŸÿÏÆŸÿÏÆŸÿÏÆŸÿÏÆŸÿÏÆŸÿÎÅžÿÎÅžÿÍÅžÿÌÜÿÌÜÿÍ›ÿÌÁšÿÊ¿˜ÿɾ—ÿǼ•ÿ¿¶‘ÿº¯ŒéÀ¶�QÿÿÿÿÿÿßÚÍhÑκñÁ¸‘ÿÐȪÿȽšÿéåØÿôóïÿéå×ÿ¶‰ÿĹ�ÿʾ–ÿÍ›ÿÍ›ÿÌÜÿÍÄžÿÎÅŸÿôóêÿø÷ôÿøöõÿø÷ôÿø÷ôÿø÷ôÿø÷ôÿùøõÿîêàÿÜÕ»ÿÏÇ¡ÿÎÅŸÿÎÅŸÿÎÅŸÿÎÅŸÿÍÄžÿÌÄžÿÌÄžÿÌÃ�ÿÌÁœÿÌÁœÿÊ¿›ÿÊ¿šÿÈ¿™ÿǼ—ÿź–ÿÁ¸‘ÿ¹¬‰ø»³�²É»¡ÏÏ¿ÔÑ¿œÀ¹˜ùÁ¸‘ÿź–ÿÌÄ¥ÿÔ̱ÿÙѺÿÚÓ¼ÿĹ‘ÿÇ»’ÿƺ‘ÿź‘ÿʾ—ÿÌÀšÿÚÕ»ÿø÷ôÿ÷÷óÿ÷÷òÿ÷÷òÿ÷÷òÿ÷÷òÿø÷óÿ÷ôïÿÔ˪ÿÍ›ÿÍÄŸÿÌÄ ÿÌÄ ÿÌÃ�ÿÌÁœÿÌÁ�ÿÌÁœÿËÀ›ÿÊ¿œÿɾšÿȽ˜ÿǼ—ÿź–ÿ¹“ÿº²Žú¹®�ÛŽ”>ÊÁ§¸¬Œ—º±�ûÀ·‘ÿÓ̲ÿéåØÿÙÒ»ÿÖγÿÐǦÿÇ»”ÿÊ¿œÿÁµˆÿŹ�ÿÐȨÿöõòÿöõñÿõõñÿöõñÿöõñÿööñÿø÷ñÿ÷÷òÿÖ˯ÿËÀ›ÿÌÁœÿÍ›ÿÍ›ÿËÀ›ÿÊ¿›ÿÊ¿šÿɾšÿÈ¿™ÿǼ˜ÿǼ—ÿź–ÿÁ¸‘ÿ¼³Žü¸­�Õ¶�XÿªªŹ–¶¬ˆ{¹°‹êÀ·”ÿ¹”ÿÒÊ­ÿÌÄ¢ÿäàÒÿñîèÿØÐ·ÿ¿³ƒÿȼ”ÿÛÖ¾ÿêçÝÿôóïÿõôîÿõôîÿôóïÿôóïÿéèÛÿÆ»’ÿÊ¿›ÿÊ¿šÿÊ¿šÿɾšÿÈ¿™ÿȽ˜ÿǼ˜ÿǼ—ÿź–ÿú“ÿ¿¶‘ÿ·°‹óµ¬ˆ¿Ã¹•Mÿ¿¿ÌÌ™»°ŠD²ªˆ£¼²�ýÁ¶“ÿÚÓÀÿÖϸÿÖϸÿçãÖÿñðêÿéèßÿÛ×ÂÿÍÅ¥ÿâÛÌÿêçÝÿñðéÿóðìÿïîæÿɽ—ÿǼ˜ÿǼ˜ÿǼ—ÿÆ»—ÿź–ÿź•ÿ¹“ÿ¾µ’ÿº°Žþ´ªˆÓº­ŒzĽ˜#ÿÿÿÆ©� ¶²‹5·ª‰|¹°ŽÐ»²�ÿʧÿÉÁ£ÿØÓ¾ÿÕηÿÊ¢ÿø“ÿĹ”ÿŹ•ÿÊÁ¢ÿÉÀŸÿĹ”ÿÁ¸“ÿÀ·’ÿ¿¶‘ÿ¼³�ÿ»±�ÿ´«†ë·ª‡¯¸°Œ[½´”ÿªª̲™ ¸²’(¸®‰L¸¯ˆt²«ˆ™µ«‰´·¬ŠÒµ¬‰á³¬ˆñµ¬‡çµ®‰×¸ªˆ»³«†¥·®‰‹¸®‰b½´�>ĺ“ÌÌ™ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿø?ÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿÿüÿÿÿÿÿÿÿðÿÿÿÿÿÿÀÿÿÿÿÿÿ€ÿÿÿÿÿÿÿÿÿÿÿþÿÿÿÿÿø?ÿÿÿÿðÿÿÿÿàÿÿÿÿÀÿÿÿÿ€ÿÿÿÿÿÿÿþÿÿÿüÿÿüÿÿø?ÿÿðÿÿðÿÿàÿÿàÿÿÀÿÿ€ÿÿ€ÿÿ€ÿÿÿÿÿþÿþÿþÿþüüüü?ü?ü?ü?ü?ü?ü?ü?ü?ü?ü?ü?ü?ü?üþþþþÿÿÿÿÿÿÿÿ€ÿÿ€ÿÿÀÿÿÀÿÿàÿÿàÿÿðÿÿðÿÿø?ÿÿü?ÿÿþÿÿþÿÿÿÿÿÿÿÿ€ÿÿÿÿÀÿÿÿÿàÿÿÿÿðÿÿÿÿü?ÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÀÿÿÿÿÿÿðÿÿÿÿÿÿü?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿàÿÿÿÿÿÿÿÿþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(@€ Bÿ|oG'vj@gzj>œ}k6Å…t9âˆx:ôŠx<ÿˆx<úŠv:îƒs8Ý}k6Åzj>œuiBhylF(ÿªUUskC@xk9©…t=ñ‹x>ÿ�|?ÿ“Aÿ•�Bÿ•�Bÿ—‚Bÿ—‚Bÿ—‚Bÿ—‚Bÿ•�Bÿ•�Bÿ“Aÿ�|?ÿ‹x>ÿ…t=ñxk9©skC@ªUUjj? ~vL{ƒt?ìŽ{Aÿ”€Cÿ—ƒDÿ™…Dÿ˜„Eÿ˜†Eÿš†Eÿš‡Eÿš‡Eÿš‰Gÿš‡Eÿš‡Eÿš‡Eÿš†Eÿ™ˆGÿ™†Gÿ™…Dÿ—ƒDÿ”€CÿŽ{Aÿ�r<ì{n@zL UU*|v^Ÿ™yó‹xBÿ™ˆHÿš‰Iÿ›ŠJÿœ‹Jÿ�ŠKÿ�ŠKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿ�ŠKÿ�ŠKÿœ‹Jÿ›ŠJÿ™†Hÿ”‚Fÿ�|Cÿ�v?òzmB{™™f`X9B�‰qàÖÑ¿ÿ¦—wÿ�zAÿš‰Iÿž‹LÿŸ�LÿŸ�LÿŸ�Lÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿ ŽMÿŸ�LÿŸ�LÿŸ�Lÿ™†Hÿ�yAÿ†q=ÿˆu>ÿŠyAÿt=àsJ>ªªUh^;�—ŠrþÙÔÀÿÚÕÀÿ˪ÿ“|Pÿš„Iÿ ‹Nÿ¢ŽPÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽPÿ¢ŽOÿ¢ŽOÿ¢ŽPÿ¢ŽPÿ¢ŽOÿœ‡Kÿ´¦„ÿ¬˜|ÿ�wQÿ�i<ÿŒwBÿ‰xCþ{oEŒªªU‘[si=Ë‹yTÿÚÓÀÿÚÓ½ÿÛÔ¾ÿߨÄÿ®¡ÿŒwBÿ—„Jÿ �Oÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Qÿ£’Rÿ£’Qÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’Rÿ£’RÿŸŒNÿ´§„ÿäßÍÿáÛÊÿ¸ª‘ÿƒmBÿ‡s?ÿ�|Fÿt@Ê‘[ŠtU~pC܆rCÿÎǰÿÜØÂÿÚÕ½ÿÜ׿ÿÞÙÃÿËÀ¨ÿ™…`ÿ–�Qÿ�‰Mÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ£�Sÿ±¡xÿäßËÿàÙÅÿàÛÆÿÚÕÁÿ§–sÿˆr?ÿ’~Iÿ†xEÜ…yX‹\†xEæ�yEÿ¹¬�ÿߨÅÿÝØÂÿÜ׿ÿÜ׿ÿÞÙÃÿàÛÅÿãÞÌÿØÏºÿ˜‡Nÿ¦–Xÿ§—Yÿ§—Yÿ§—Yÿ©˜[ÿ§—Yÿ§—Yÿ§—Yÿ§—Yÿ§—Yÿ§—Yÿ©˜[ÿ§—Yÿ©˜[ÿ§—Yÿ§—Yÿ§—Yÿ¦–Xÿ«›kÿäßËÿàÙÃÿÞÙÃÿàÙÅÿÞÙÄÿ·©ŒÿŽ|Iÿ“ƒMÿ‡{Hæ‹\™ˆfŠ{NÝ–‚Mÿ�‰\ÿàÛÉÿàÙÅÿߨÂÿߨÂÿߨÂÿߨÂÿàÙÃÿâÝÈÿæáÏÿœ‡Rÿ§“Wÿ«˜[ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¬™\ÿ¡ŒSÿÞ×ÃÿâÛÅÿߨÄÿàÙÃÿáÚÆÿãÞÊÿ¹¨Šÿ�xCÿ–‚Mÿˆ{MÝ™ˆf‰zNÊ—‡Nÿ�{DÿÍŪÿäÝÉÿáÚÄÿàÙÃÿáÚÃÿáÚÃÿáÚÃÿáÚÃÿãÜÆÿæáÍÿ �]ÿ �Sÿ«›^ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ®�`ÿ§–[ÿçâÐÿäßÊÿáÚÄÿáÚÃÿâÛÄÿâÝÇÿäÜÉÿº­‹ÿ‘}Kÿ–†Nÿ‰zOÊ¿Œ~T‘˜‡Pÿ•€Lÿ÷›ÿåÞÌÿãÜÈÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿâÛÅÿãÜÈÿæßÌÿÛÔ¾ÿ¯žnÿ­›_ÿ°žbÿ°žbÿ°žbÿ°žbÿ°�cÿ°žbÿ°žbÿ°žbÿ°žbÿ°žbÿ°žbÿ°žbÿ°žbÿ°žbÿ°žbÿ°žbÿ¯›aÿÔË­ÿçâÎÿãÞÈÿâÛÅÿâÛÅÿãÜÆÿãÜÉÿåàÌÿÜ×ÃÿŸ‹Zÿ�ŠTÿŽ€V‘�…Y?š‡Rþš„MÿØÍ·ÿçßÎÿåÝÊÿåÝÈÿäÜÇÿäÜÇÿäÜÇÿäÜÇÿäÜÉÿåÝÊÿæßÌÿéâÐÿëæÖÿǺ’ÿ±�cÿ² dÿ²Ÿeÿ²Ÿeÿ² dÿ²Ÿeÿ² dÿ²Ÿeÿ²Ÿeÿ²Ÿeÿ²Ÿeÿ² dÿ² dÿ²Ÿeÿ²Ÿeÿ² dÿ² dÿ²Ÿeÿ¯›aÿÛиÿçßÍÿåÝÈÿäÜÇÿäÜÇÿåÝÈÿåÝÊÿæàÏÿŸ™ÿ¡�Uÿ¡�[þŽ…[=ªª��Uà�ˆPÿ¶–ÿæáÏÿæßÌÿåàËÿåÞÊÿåÞÊÿåÞÊÿæßËÿæáÌÿçâÎÿéâÐÿéäÓÿèáÒÿÁ´ˆÿ²¡hÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ³¢iÿ°�dÿö�ÿéâÐÿæßËÿåÞÊÿåÞÊÿåÞÊÿåàËÿçàÎÿåßÎÿ¡�Uÿª—`ÿ•‹Y᪪Œ�[x�ŠUÿ®�oÿçàÑÿçàÎÿåàÌÿæßÌÿæßÌÿæßÌÿçàÍÿèáÏÿèãÑÿêæÕÿÓÊ©ÿÁ´ˆÿµ¥mÿ´¤kÿ´¤kÿ´¤kÿ´¤kÿ´¤kÿ´¤kÿ´¦nÿ´¤kÿ´¤kÿ´¤kÿ´¤kÿ´¤kÿ´¤kÿ´¤kÿ´¦nÿ´¤kÿ´¤kÿ´¤kÿ´¤kÿ³£jÿ®›aÿ²¢sÿéäÓÿçàÎÿæßÌÿæßÌÿæßÌÿæßÌÿçàÎÿéãÒÿªšiÿ¥’[ÿ§—bÿ�ˆ\v™™f šŠ[]ÿáÜÈÿçâÑÿçàÍÿçâÎÿçâÎÿçàÍÿçâÎÿèãÑÿáÚÄÿ²£mÿ¾±ÿµ¥lÿ¶©pÿ¶©pÿ¶©pÿ¶¦mÿ¶¦mÿ¶©pÿ¶¦mÿ¶©pÿ¶©pÿ¶©pÿ¶¦mÿ¶©pÿ¶©pÿ¶©pÿ¶©pÿ¶¦mÿ¶©pÿ¶©pÿ¶©pÿ¶¦mÿ¶¦mÿµ§oÿ«›aÿÎÆ¤ÿéåÓÿèãÏÿçâÎÿçâÎÿçâÎÿçàÍÿèáÎÿèãÒÿÖ˳ÿ ‹Rÿª—^ÿ�Ž`î™™f ™Œbt¥˜bþƽšÿéäÔÿçãÐÿçãÐÿçâÐÿçâÐÿçâÑÿèãÒÿéèÕÿéæÔÿº«wÿ¸«rÿ¸¬rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸¬rÿ¸«rÿ¸¬rÿ¸«rÿ¸«rÿ¸«rÿ¸¬rÿ¸«rÿ¸©oÿ¸«rÿ¸«rÿ¸«rÿ·ªqÿ¼¯ÿíéÙÿéåÔÿçãÑÿçâÐÿçãÐÿçâÐÿçãÐÿçâÐÿèäÒÿéæÔÿËŸÿ£’Vÿ¦™cþ˜‹cs¢—e管iÿÕγÿéæÕÿèãÒÿèäÒÿèäÒÿéåÓÿéåÔÿêçØÿíêÜÿÌÚÿ¹¬tÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº«uÿº­uÿ¸¬sÿ¶ªnÿµ©oÿµ¨oÿµ©oÿµ©oÿ¶©pÿ´¨nÿ¯¡eÿãÜÈÿéæÕÿèäÓÿèäÒÿèäÒÿèãÒÿèäÒÿèäÒÿèäÓÿéåÔÿêçØÿ¼°„ÿ¦˜\ÿ�‘cç›’l;­ ký±¥lÿɾ™ÿêéÖÿéæÔÿéåÓÿéæÔÿêçÖÿìéÚÿÖάÿÆ»Žÿ»®vÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¼¯wÿ¹¬sÿ³¥iÿ°Ÿ_ÿ«œ[ÿ«œ[ÿ«›[ÿ«œ[ÿ­�]ÿ©šXÿ£’MÿÒʨÿêçÕÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéåÓÿéæÔÿéèÔÿçäÕÿ¯Ÿgÿ¤—^ý—Žl;ž‘j¡³§tþ¶ªpÿÎÆ ÿìèÚÿìè×ÿìèØÿíéÛÿéäÓÿÑÉ£ÿ½°wÿ¾±yÿ¾±yÿ¿²{ÿ¿²{ÿ¿²{ÿ¾±yÿ¿²{ÿ¾±yÿ¿²{ÿ¿²{ÿ¿²{ÿ¿²{ÿ¿²{ÿ¿²{ÿ¾±yÿ¿²{ÿ¿²{ÿ¼¯wÿµ¦iÿ«›Xÿȼ�ÿƺŽÿ¾³ÿȼ�ÿɽ’ÿ°¡cÿÊ¿–ÿæßËÿêçÔÿëè×ÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿêçÕÿëèÙÿÝØÂÿ©™_þ˜�d¢«Ÿnð¹¬xÿ¹­tÿÚÓ´ÿïìßÿíêÜÿîíÞÿèäÑÿÒʤÿ¿³{ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¾³}ÿ¿³{ÿ·«nÿ´§gÿàÛÂÿïìßÿïëÝÿíìÝÿíìÝÿíìÝÿíìÝÿíêÜÿìéÚÿëèÙÿêéØÿêéÖÿêéÖÿêéÖÿëèÖÿëèÖÿêéÖÿêéÖÿêéÖÿêéÖÿëè×ÿëèÚÿÄ»�ÿ¤™ið©œu'²£sü½­yÿ¼«tÿÄ·„ÿìèÖÿÙЮÿÍÀ’ÿÁ´~ÿµÿôÿôÿôÿôÿôÿµÿµÿôÿµÿµÿµÿôÿµÿµÿôÿµÿµÿÁ´}ÿ¾­tÿ³¢^ÿãÜÄÿïìßÿîêÜÿíéÛÿíéÙÿíéÙÿíéÙÿíéØÿíéØÿìèØÿìè×ÿìèØÿìèØÿìèØÿìè×ÿìèØÿìè×ÿìè×ÿìè×ÿìèØÿìèØÿìèØÿéåÔÿÝØ¿ÿ®�kü§šr&¥šq^·ªxý¼¬xÿ¼¬sÿÔ˨ÿÑÈ¡ÿµ�ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿö‚ÿÁ²~ÿ¸¨kÿÌ¿“ÿïìáÿîêÝÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿíéÛÿîêÜÿîêÝÿÛÓµÿ½®zÿ¯Ÿgý¢šq^©œtŒ¸ªyþ¹ªqÿÑÈ¡ÿɼ�ÿö‚ÿÄ·ƒÿÄ·ƒÿöƒÿĵ�ÿö‚ÿÄ·ƒÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·ƒÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·„ÿÄ·ƒÿÄ·„ÿÄ·ƒÿÄ·„ÿÄ·„ÿÁ´~ÿÑÆŸÿñîäÿðìßÿîêÝÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿîêÜÿïëÞÿîêÜÿµ…ÿæâÑÿ­žfþŸ”j�¨Ÿpºº«uÿ»«uÿÜÕ¶ÿô€ÿǺˆÿƹ†ÿÄ·�ÿôÿĵ€ÿŸ„ÿƹ†ÿƹ†ÿǺˆÿǺˆÿƹ†ÿǺˆÿǺˆÿƹ†ÿǺˆÿƹ†ÿƹ†ÿƹ†ÿǺˆÿƹ†ÿǺˆÿƹ†ÿŸ…ÿÛÒ±ÿñîãÿðìßÿïëÝÿïëÞÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÞÿïëÞÿïëÝÿïëÝÿïëÝÿïëÞÿïëÝÿïëÞÿïëßÿðíàÿãÜÄÿÀ±}ÿïëßÿÙѶÿœ“b½®¡rݵ¦mÿÞÙ¿ÿãÞÆÿŹ…ÿƺ†ÿĸƒÿö€ÿÄ·ƒÿÐÈ ÿÇ»ŠÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿÈ»‹ÿŹ…ÿñîäÿñíáÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿñíàÿòîâÿÖ˨ÿÌ¿‘ÿíêàÿéèÜÿ®¡sݧžmðÌÁ�ÿÞÙÀÿʽ‘ÿŸ†ÿÄ·�ÿ÷ƒÿÙбÿÙЯÿÈ»�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼŽÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼ�ÿɼŽÿöƒÿìè×ÿñîäÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿñíáÿòîâÿòîäÿÇ»ŒÿäÜÃÿíêàÿêçÝÿ¿¶�ì¹°‰þêéÝÿáÚÄÿµ�ÿĸ„ÿÔ˦ÿÔ˦ÿɼŽÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿʽ�ÿȼ�ÿíêÛÿòñåÿñîãÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿðíâÿñîãÿñíáÿö‚ÿðíäÿíêàÿèèÛÿÏȰ÷Ú×ÈþÁ´„ÿìèÚÿʽ�ÿÔÉ¥ÿÚѰÿ˾Žÿ˾�ÿ˾�ÿ˾�ÿÌÀ�ÿÌÀ�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿ˾�ÿÌÀ�ÿ˾�ÿÌÀ�ÿÌÀ�ÿ˾�ÿ˾�ÿÌÀ�ÿ˾�ÿÌÀ�ÿÌÀ�ÿÍÁ•ÿïëÞÿóðåÿòïäÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîäÿòïåÿâÚÀÿÚѲÿñîäÿîëáÿËÀ˜ÿ»²‰þÛÕÂñÀ´€ÿȼ�ÿÍÀ�ÿÍÁ”ÿɼŠÿË¿�ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÐÇ›ÿòîáÿôñæÿóðåÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïäÿòïåÿóðåÿóðåÿóòæÿóòåÿóòæÿôñæÿôñæÿçâÊÿðíßÿñîäÿîíâÿ¿³ÿÙÓ¾òÓл߾²ÿÇ»ŽÿɼŒÿË¿�ÿÓÊ¡ÿË¿�ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿΓÿΓÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿΓÿΓÿÍÁ’ÿΓÿΓÿÍÁ’ÿÍÁ’ÿΓÿÍÁ’ÿÍÁ’ÿÍÁ’ÿΓÿÍÁ’ÿÍÁ’ÿÑÆœÿåàÈÿôñçÿóðåÿòïåÿòïåÿóïåÿòïåÿòïåÿóïåÿõñåÿóòæÿôóèÿìèØÿÛÒ±ÿöóêÿóïãÿçâÍÿáÚÀÿçßÉÿôñçÿñîåÿîêáÿÔÌ­ÿáÜÑàÜØÈÀ¼°{þ¶‚ÿ÷€ÿÓÊ¡ÿÓÊ ÿʽŠÿÎÂ’ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍ•ÿÍÔÿÍ•ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÒÉžÿñðäÿõòèÿôñèÿôñæÿôñæÿôñçÿóòçÿôñçÿòïâÿæáÉÿÝÖ·ÿÎÂ’ÿÍÁ‘ÿÒÊŸÿÌÀ�ÿË¿ŽÿÈ»ˆÿÌ¿�ÿõòèÿòïäÿïìáÿëèÝÿÜØÌÀÙÔŖ¹�þº«rÿ½¯wÿÞ×»ÿÕ̦ÿµÿɽ�ÿÍÁ”ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍ–ÿÍÀ”ÿÎÙÿíéÙÿõñèÿòïåÿöóêÿöóêÿöóêÿöóìÿôñçÿÍÀ‘ÿ˾�ÿÌ¿�ÿɽ�ÿÇ»ˆÿÇ»ˆÿöÿ¿±yÿÁµ~ÿõòéÿóðåÿïìâÿêçÞÿÒϼ•Öξjçä×ÿèèÚÿïìâÿõôìÿñîáÿÔË¡ÿ÷ÿÌÀ�ÿÏĘÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÏĘÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÎÖÿÏĘÿÏĘÿÎÖÿÎÖÿÎÖÿÍÀ�ÿĸ€ÿÍÔÿÒÉŸÿÌ¿�ÿÓÊ¡ÿߨ¹ÿâÛÁÿäÝÅÿåÞÇÿÍÁ”ÿÙЫÿÇ»‡ÿŸ€ÿãÜÄÿÄ·ÿÝÖ¸ÿíéÙÿëèÖÿõòéÿòñèÿ鿨ÿåâÔÿÈÀªfÉį0æâØþîëäÿòïæÿõòéÿöóìÿ÷öîÿàÙ¾ÿÇ»ˆÿÍÁ”ÿÎ×ÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÍÀ‘ÿàÙ½ÿøõîÿ÷ôíÿõôëÿÍÀ’ÿÈ»‰ÿÍÁ’ÿÍÁ•ÿÍÀ‘ÿÈ»‰ÿɼ�ÿÙЮÿÐÅœÿäÜÃÿÁ´|ÿ÷öïÿøõïÿ÷ôíÿöóìÿòñèÿÏÇ¡ÿÚÖÄý¿¹œ,¿¿äáØòíìáÿðïæÿóòçÿõôëÿöõìÿïîÞÿÀ²zÿĸƒÿʽŽÿÍÁ•ÿΗÿÍ–ÿÎ×ÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄ›ÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÎÁ“ÿêåÐÿ÷÷îÿ÷öíÿ÷öíÿèáËÿöÿĵ€ÿŸ„ÿÄ·�ÿÖ˦ÿæáÉÿÌ¿�ÿêæÔÿõòëÿòïâÿÝØ¸ÿßÚ½ÿÝÖ·ÿߨÀÿòñéÿÊÁ—ÿåáÚòªªªÚ×ɧëèáÿðíäÿôñçÿõòéÿöóìÿ÷ôíÿñîáÿÍ•ÿÇ»ˆÿƺ†ÿȼŒÿʾŽÿÍÁ”ÿÎÙÿÍ•ÿÍ•ÿÎÅ™ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÎÅ™ÿâÛÁÿø÷ðÿ÷ôíÿôñçÿøõîÿîêÚÿÕ̧ÿË¿�ÿÔË¥ÿçâÌÿÍÁ”ÿðìÞÿ÷ôíÿ÷ôíÿ÷ôëÿöÿø‚ÿĹ…ÿêçÕÿàÙÅÿÖγÿ×ÔȧÎÊ·DçæÚþîíåÿòñèÿõôëÿöõìÿöõíÿ÷öîÿø÷ïÿìèØÿŹ…ÿź…ÿØÏ­ÿÏÆ›ÿÍÁ”ÿɼŒÿȼŒÿÍÁ•ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÑÈžÿÖͨÿËÁ’ÿÔ˦ÿ÷÷îÿ÷öîÿ÷öîÿø÷ïÿø÷ïÿåàÇÿ÷öíÿ÷öíÿöõíÿ÷öíÿ÷öîÿËÁ’ÿÛÓ³ÿáÜÃÿôóëÿɾ’ÿçæÝþÄÀ¨AªªªãâÖéïëåÿòïèÿõòéÿöóìÿ÷ôíÿ÷ôíÿøõîÿøõïÿø÷ðÿõòéÿåÞÇÿΖÿÍÁ•ÿÛÔ´ÿàÙ»ÿÍÁ•ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÏÄšÿÍ–ÿçàÊÿø÷ïÿøõîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷ôîÿ÷ôíÿ÷ôíÿ÷ôíÿøõîÿøõïÿòïåÿíèÛÿóðêÿߨÄÿçà×ꪪªÛ×É{ëçâÿðïçÿôóëÿöõíÿ÷öîÿ÷öîÿ÷öîÿ÷öïÿóðåÿêæÔÿÔ˦ÿĸ„ÿ÷‚ÿâÚÁÿìèØÿÍÄ™ÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÆžÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÏÆœÿÍÄ™ÿÌÀ“ÿÕÉ¥ÿáÚÂÿóðæÿø÷ðÿø÷ïÿ÷öïÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öïÿöõîÿôóëÿñðçÿìèãÿÔпyÄİ åã×ððìæÿóðêÿöóìÿ÷ôîÿøõïÿøõïÿøõïÿø÷ðÿïëÞÿÕÊ¥ÿÜÕ¶ÿéäÐÿâÚÃÿÛÓ³ÿÎÅšÿÑÈŸÿÑÈŸÿÑÉŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÎÙÿË¿’ÿÈ»‹ÿÚϯÿèáÎÿÛÓ³ÿêæÔÿ÷÷òÿø÷ñÿø÷ðÿø÷ðÿø÷ðÿøõðÿøõïÿø÷ïÿøõïÿ÷ôîÿöóìÿóðêÿðìæÿåãØð¹¹¢ ØØÉ}ëèãÿñðèÿôóëÿöõíÿ÷öïÿø÷ïÿøøðÿøøðÿøøðÿøøñÿøøñÿøøñÿöóìÿä߯ÿÏÇœÿÐÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÍÅ™ÿíéÙÿÞÚ¼ÿçâÌÿñíàÿÖΨÿÑÈžÿáÜÃÿòïäÿéåÐÿêçÔÿðíàÿøøðÿø÷ðÿø÷ïÿ÷öîÿöõíÿõôëÿñðèÿëèãÿÕÑÁ|¿¿ŸáàÖâïîæÿóðêÿöõíÿø÷ðÿÕÍ©ÿìèØÿ÷÷òÿøøñÿø÷ñÿøøñÿ÷÷òÿðìßÿÔˤÿÑÉžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉŸÿÐÈžÿÝØ¸ÿÞÙ¼ÿëèÖÿÔË¥ÿÏÇœÿÌÁ”ÿÌÀ“ÿÝØ¸ÿÚÒ°ÿÌÀ“ÿÊÀ‘ÿööíÿøøñÿø÷ðÿ÷öïÿöõíÿóðêÿïîæÿâà×â¶¶‘ÖÒÀEêêâÿðïçÿôóìÿø÷ïÿèäÏÿØÑ®ÿñíßÿùøòÿøøñÿøøñÿùøòÿéæÒÿÎÅ™ÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉžÿÏÇœÿÎÅ™ÿÎÆšÿÐÈ�ÿÑÉŸÿÑÉŸÿÒÉ ÿÑÉŸÿÑÉŸÿÑÉŸÿÒÉ ÿÑÉžÿÙÒ¯ÿëè×ÿÏÇœÿÍĘÿÊÀ‘ÿÎÆšÿÍÅ™ÿø÷óÿÕͧÿȼŒÿéæÓÿùøñÿø÷ïÿ÷öíÿôóëÿððçÿêêâÿÑɶCÝÚÏ‘íêæÿòñéÿööïÿÛÒ´ÿÏÆœÿÑÅžÿôóèÿø÷óÿöóìÿáÙ¿ÿêæÑÿÎÅšÿÒÇŸÿÑÈŸÿÒÇŸÿÏÚÿ˼�ÿʆÿɺŒÿ͘ÿÑÈŸÿÑÈŸÿÒÇ ÿÑÈŸÿÒÇ ÿÑÈŸÿÒÇ ÿÒÇ ÿÒÉ ÿÖͧÿÑÈŸÿÍ–ÿéåÓÿúùóÿ÷öîÿø÷óÿÛÒ³ÿ×̨ÿÝÕ·ÿôñçÿ÷öïÿõôíÿñðéÿíêæÿÜÙÌŽ¿¿¿ßÛÑÊïîæÿ鿨ÿÊ»�ÿÏÄšÿÐÅœÿáÙ¾ÿú÷óÿùøòÿÐÄ›ÿ̽�ÿÍÀ’ÿÏÄšÿÑÆžÿÑÅœÿ̽�ÿÑÆœÿáÙ¿ÿäÝÃÿʽ�ÿÏÆ›ÿÒÇŸÿÒÇŸÿÑÈžÿÒÇŸÿÒÇŸÿÒÇŸÿÑÈžÿÑÈžÿÒÇŸÿÒÇŸÿÏÆ›ÿôóèÿùøôÿø÷óÿèãÏÿÏĘÿ÷÷óÿ÷÷òÿø÷ðÿõôíÿòñêÿïîæÿßÛÑʪªªÖÉ»ããÛßêçÞÿ¿°ÿǺŠÿÍÀ’ÿÍÀ’ÿéåÓÿíéÙÿÍÁ•ÿÚϯÿÒÇŸÿʽŽÿÎÙÿÏÄšÿÖʦÿú÷öÿùøõÿú÷õÿǺˆÿÍÀ‘ÿÏÄšÿÑÆ�ÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÔɤÿõòëÿùöôÿøõîÿÑÆžÿø÷óÿóïçÿïëßÿõòìÿïîçÿåãÚÞÒÃ¥ÍͺåäÜçäàÐÿÆ»‘ÿ¿³€ÿɽ‘ÿÍÄšÿË¿”ÿåàËÿù÷öÿߨ½ÿÓʤÿË¿”ÿÎÚÿÚѲÿøøðÿùøôÿùøõÿðìàÿµ‚ÿÈ»�ÿÌÀ•ÿÏÆ�ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÏÆ�ÿáÙÂÿùøõÿöõíÿíéÛÿ÷öîÿÙѳÿØÑµÿðïèÿåãÛæËÁ­ÏϳäãÜÝðïçÿߨÁÿÜÔºÿØÏ®ÿʽ‘ÿÑÆ¡ÿöóêÿóðåÿø÷ôÿ×Ë«ÿÏÄœÿáÙÀÿøøõÿùøôÿøøôÿùøôÿÞÖ¹ÿØÏ®ÿƹ‰ÿ˼�ÿÎÚÿÑÅžÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÆŸÿÑÅžÿÙήÿùøõÿ÷÷óÿø÷óÿîëâÿÜÕ»ÿÕͳÿåäÝÜÍİÒÒ´äߨËïîèÿóòìÿìèÛÿåÞÌÿÎÛÿƺŽÿø÷ñÿóðæÿÐÅ�ÿÑÅžÿÐÄ�ÿâÚÃÿùøõÿøøõÿø÷ôÿùøôÿùøõÿãÜÅÿÈ»Œÿ̽‘ÿÏÆŸÿÑÆŸÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÏÆ ÿÐÅ�ÿáÚÃÿéæ×ÿÔÌ®ÿÊ¿šÿĹ’ÿÆÂ©ÂÏϯ¿¿¿ÞÞÑ�ßÚÍüåáÑÿÕͯÿÜÔ¹ÿÏÆ¡ÿôóêÿùøôÿÏÄŸÿÑÈŸÿÏÆŸÿÛÔµÿéæÔÿúùõÿùøôÿùøôÿùøõÿúùöÿ÷ôíÿÕʧÿÏÆ�ÿÐÇ ÿÐÇ ÿÐÇ ÿÐÇ ÿÏÆŸÿÏÆŸÿÏÆŸÿÍÅžÿÌÜÿËÀ›ÿÊ¿˜ÿÁ¸�ø·¯ˆ}ªªªƾ¤;Æ¿¡ØÐȯþÑɪÿöóîÿóòêÿÔˬÿɽ”ÿÌÁ™ÿÍÁšÿÍÁšÿâÛÃÿúùõÿùøôÿùøôÿùøôÿúùõÿîëÞÿÙвÿÎÅŸÿÏÆ ÿÎÅŸÿÎÅŸÿÎÅŸÿÍÄžÿÌÄžÿÌÁœÿËÀ›ÿÈ¿™ÿ·“þº³�Ô¶²‹5ÔÔªÈĬv¾´�éÇ¿ŸýÛÖ¾ÿÜ×¾ÿÌàÿƺ‘ÿƺŽÿÇ»�ÿËÀ˜ÿ÷öòÿ÷÷ôÿ÷÷óÿ÷÷óÿø÷ôÿìèØÿË¿–ÿÎÅŸÿÍÄžÿÍÄžÿÌÄžÿÌÁœÿÌÁ�ÿÊ¿›ÿÈ¿™ÿú–ý½³�鸮ˆl¿¿²²™ ¸®‹lÀ¸•ãÔδüÓ˰ÿ×Ï´ÿáÚÆÿÌÃ�ÿƺ‘ÿïìåÿöõñÿø÷ñÿø÷ñÿ÷öòÿëçÝÿɾ—ÿÌÁœÿÌÁœÿËÀ›ÿÊ¿›ÿɾšÿǼ˜ÿÁ¸‘ú¼´�⸮‹l²²™ ªªª»®Œ<³¬Š›¿¶”éØÔÁüØÐ»þâÝÍÿãÞÍÿÜ×ÁÿãÞÍÿíéáÿôñíÿãÞÍÿɽ—ÿÈ¿™ÿÆ»–þź“üÀ·�ú½´�è³¬Š›»®Œ<ªªªÿÿÿ½®Š#¸­‰[»´•“Ž¢¾Ä¼žÞ½²‘í½´�ü¿·’ü¾´’í¼°ŒÝ¹®‹»µ¬‰‘¸¬‡Z½®Š#ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿøÿÿÿÿàÿÿÿÿ€ÿÿÿÿÿÿÿü?ÿÿøÿÿðÿÿàÿÿÀÿÿ€ÿÿ€ÿÿÿþþü?ü?øøøððððððððððððððððøøøü?ü?þþÿÿÿ€ÿÿ€ÿÿÀÿÿàÿÿðÿÿøÿÿü?ÿÿÿÿÿÿÿ€ÿÿÿÿàÿÿÿÿøÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ(0` €%ªªj vO:‹€S‡™�\¼—ŒXϘ‰WÌ–‰X­†zSh‘Š^#ˆ|W)thB­yl@ë€r=þ�z=ÿ�{>ÿ�{>ÿ�{>ÿ�{>ÿ�{>ÿŽz>ÿ‹z>ÿn?úxkEÚxoJ{™™f\W@c}pKê�|Bÿ‘~Aÿ”€Cÿ—ƒDÿ˜ƒEÿ˜„Eÿ˜„Eÿš†Gÿ˜„Eÿ˜„Eÿ˜ƒEÿ™„Dÿ–�Cÿ“€Aÿ�{?ÿo?útiE¿mmHGG2=upW줙zÿŠv@ÿš‡Hÿ›ŠJÿœ‹Jÿ�ŠKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿžŒKÿ�ŠKÿ�ŠKÿœ‰Jÿ—…IÿŽ{Bÿ†q>ÿ}n<üvkJ¤aZ?���cÿÖÏ»ÿÅ»£ÿŠtAÿ—ƒIÿŸ‹Mÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ¡�Nÿ ŽMÿ›‡Jÿ�‰^ÿŒwOÿg9ÿ…q?ÿznGíysQ,qhFÈ…tNÿÖϸÿØÑºÿÝÖÂÿšˆaÿŒwBÿœ‰Lÿ¢‘Pÿ£’Rÿ£’Rÿ£’Rÿ£’Qÿ£’Qÿ£’Qÿ£’Rÿ£’Qÿ£’Rÿ£’Rÿ£’RÿŸ‹Nÿ¼°�ÿâÛÈÿ¼°–ÿ‡rHÿ‚o?ÿ†uFûxsR]zqLÚ‚mAÿËÁ©ÿÚÕ½ÿÚÕ¼ÿÝØÀÿÏÇ®ÿ´§…ÿ—‚Kÿ¤�Sÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¨•Wÿ¦“Uÿ¦“Uÿ£�Rÿ·ªƒÿßÚÄÿÝÙÂÿÜ×ÁÿžŒiÿ…o?ÿŽzIÿ|uQq„yQÌ�{Gÿ±¢~ÿߨÄÿÞÙÁÿÞÙÁÿߨÂÿàÙÃÿåàÌÿ¡Ž]ÿ¤’Vÿª™Zÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ©˜Yÿ«šfÿãÞÉÿߨÂÿߨÄÿâÛÈÿ±¤�ÿŠvAÿ’�Mÿ{oSY„wVš�Kÿ•LÿÝÖÂÿáÙÃÿàÙÃÿáÚÃÿáÙÃÿáÙÃÿäÝÉÿ²¢wÿ£�Uÿ­œ]ÿ¯œ_ÿ®›^ÿ®›^ÿ¯œ_ÿ¯œ_ÿ¯œ_ÿ¯œ_ÿ¯œ_ÿ¯œ_ÿ¯œ_ÿ­œ]ÿ´¤pÿæáÍÿâÚÄÿáÙÃÿáÙÃÿàÙÃÿµ¦‚ÿ�{Iÿ‘ƒPû{sT!}uW=“�Nÿ¡�`ÿÛÔ½ÿãÞÈÿâÛÅÿãÜÆÿãÜÆÿãÜÆÿãÜÆÿåÞÊÿçàÎÿ·§sÿ°Ÿbÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ± cÿ°�`ÿÐÅ¥ÿåÞËÿãÜÆÿãÜÆÿãÜÆÿäßËÿȼžÿ™†Oÿ’†YèUUU“‚Uõ—ƒRÿÛÖÁÿäßËÿãÜÉÿäÝÊÿäÝÊÿåÞËÿåàÌÿæàÏÿèãÓÿÍÁŸÿ±¡hÿ²¡hÿ²¡hÿ²¡hÿ²¡hÿ²¡hÿ²¡hÿ²¡hÿ³¢gÿ²¡hÿ²¡hÿ²¡hÿ²¡hÿ°Ÿfÿ­šeÿçâÐÿäÝÊÿäÝÊÿäÝÉÿäÝÊÿäßÍÿ¢Ž\ÿŸŽ[ÿ�…`—‹�_€˜‡PÿˤÿæßÍÿåàÌÿæáÍÿæßÌÿçàÍÿÞÙÁÿÞ×Àÿȼ”ÿ¸¨pÿµ¥lÿµ¥lÿµ¥lÿµ¥lÿµ§oÿµ§oÿµ¥lÿµ§oÿµ§oÿµ¥lÿµ§oÿµ§oÿµ§oÿµ¥lÿ±¡gÿ¦“YÿäÝÊÿæßÌÿæáÍÿæßÌÿæßÌÿèáÎÿ´¦{ÿŸŽVÿž‘_ûwwfªªUŸ‘_û¹­‚ÿæáÐÿæáÏÿèãÏÿèãÏÿèãÏÿéåÓÿÍÅ¡ÿ¶©nÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸«rÿ¸¨nÿ¸«rÿ·ªqÿ³¤kÿź‘ÿéåÔÿèãÏÿèãÏÿèãÏÿèãÏÿçâÐÿãÜÈÿ¦–^ÿ �Zÿ”ˆe®š�j`§œcÿÌÅ¢ÿèäÓÿçãÑÿèäÒÿéåÓÿéæÕÿêçÕÿ¾²ÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿº­uÿ¸¬rÿ´¨nÿ±¤hÿ°£gÿ°¡gÿ°£gÿ®žaÿź‘ÿéèÕÿèäÒÿèäÒÿèäÒÿèäÒÿèäÒÿèåÓÿÛ×½ÿ¡“WÿœŽ_øU¡•jÚ¯¢nÿȽ˜ÿêçÖÿéæÔÿêçÕÿìèØÿÒɤÿ¾²~ÿ½®xÿ¾¯zÿ½®xÿ¾¯zÿ¾¯zÿ¾¯zÿ¾¯zÿ¾¯zÿ¾¯zÿ¾¯zÿ¾¯zÿ¼­wÿµ¦lÿ«šYÿ¦”Pÿ¥“Nÿ¦•Pÿ¤“Nÿ° dÿÀ´…ÿëçÖÿéåÔÿéæÔÿéæÔÿéæÔÿéåÔÿéåÔÿéæÕÿÌÀ ÿŸ’[ÿ”‹jq°œu ªžpþ¶«sÿÓʨÿìèÛÿìéÛÿíêÜÿÎÆžÿ¿²|ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¾²}ÿ¿²{ÿ¹¬pÿ° _ÿÔ̪ÿíéÛÿæâÍÿíéÜÿߨÁÿæßÌÿìèÚÿêéØÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿêçÖÿéæÕÿéæ×ÿµ«|ÿ��iË£œxF³¦rÿ»«sÿÇ»‹ÿáÙÀÿÓÊ£ÿ÷€ÿ¶ÿö€ÿö€ÿö€ÿ¶ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿö€ÿ¶ÿ¿°zÿµ¤dÿØÏ­ÿîêÝÿìèÚÿìèØÿìèØÿìèÚÿìèÚÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿìèØÿëè×ÿèåÔÿÐÉ¥ÿ£–jð¤œu„µ¦rÿ»«uÿÖ˨ÿɼŒÿö‚ÿÄ·�ÿÄ·�ÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿÄ·ƒÿ¿±yÿÎÙÿðìÞÿîéÜÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿïêÝÿÝÖ¼ÿÁ´„ÿ¦–_þ�Žp"©¡t¼³£nÿÑÆ¡ÿÁ´€ÿÆ·†ÿŶ‚ÿÄ·�ÿŸ‚ÿƹ‡ÿƹ†ÿǺˆÿƹ†ÿǺˆÿƹ†ÿǺˆÿƹ†ÿƹ†ÿƹ†ÿǺˆÿǺˆÿ³~ÿíèØÿðìßÿïëÝÿïëÝÿïëÝÿïëÝÿïëÝÿïëÞÿïëÝÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÞÿïëÝÿñíàÿö„ÿëèÛÿ±¥xÿŸ”oe® ræ¾±�ÿêæØÿõ‚ÿŸ„ÿÇ»ŠÿÍÀ”ÿÍÁ–ÿɺŒÿɺŒÿɺŒÿɺŒÿɺŒÿɺŒÿɺŒÿɺŒÿɺŒÿɺŒÿɺŒÿɺŒÿƸ…ÿÜÓ²ÿñíáÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìßÿðìàÿîëÜÿÄ·�ÿíéÝÿÑʯÿ±¥x¥²¤uùåàÏÿɺ�ÿöƒÿÍÀ’ÿÎÅšÿÎÅšÿʽ�ÿʽ�ÿʽŽÿʽ�ÿʽ�ÿʽ�ÿʽŽÿʽ�ÿʽ�ÿʽ�ÿʽŽÿʽŽÿʽŽÿɼ�ÿÛÒ³ÿòïäÿðíâÿðíâÿðíâÿðíâÿðíâÿñîáÿðíâÿðíâÿñîáÿðíâÿðíâÿðíâÿñîáÿñîãÿáÚÀÿÛÒ³ÿìéÞÿãßÒÿ¸¬€ÃÌÇ«ùÕͯÿÖΫÿÓÊ ÿØÍ©ÿË¿�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿÌÀ�ÿΓÿìèÕÿòïåÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñîãÿñíãÿñîãÿòïäÿÖͧÿðíàÿíìàÿǼ™ÿº­ƒÈÔεìÀ´ƒÿɼ�ÿʽŽÿÌ¿�ÿÍÁ‘ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿΓÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿÍÁ’ÿΓÿÍÁ’ÿÎÅ—ÿíêÛÿóðæÿòïåÿòïåÿòïåÿòïåÿòïåÿòïåÿòïåÿóðæÿòîäÿóòçÿôñçÿôñçÿëèÕÿñîäÿçâÒÿÉÀ�ÿ½µ�»Òͷμ¯xÿÁµ~ÿÑÈžÿÌ¿�ÿ˾ŽÿΓÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÎÂ’ÿëèÖÿôñçÿóðåÿóðåÿóðåÿóðåÿôñæÿñîãÿâÛÀÿÏĘÿáÚ¿ÿÕÌ¥ÿÍÀ�ÿáÙ¼ÿòïåÿìèÚÿåâ×ÿµ¬„‹Ò̹¡¾²ÿ¾±uÿÛÔ´ÿɾŠÿŹ�ÿÌÁ‘ÿÍÄ•ÿÍÄ•ÿÍÄ•ÿÍÄ•ÿÍÄ•ÿÍÄ–ÿÍÄ–ÿÍÄ•ÿÍÄ•ÿÍÄ•ÿÍÄ–ÿÍÄ•ÿÍÄ–ÿÍÄ•ÿÍÄ•ÿÍÄ•ÿÎÓÿÎÃ’ÿêæÔÿîëÝÿôóèÿõôëÿõôëÿóòæÿÌÁ�ÿʾŽÿȼ‰ÿƺ‚ÿ¶}ÿÀ´zÿ×Ï«ÿóðæÿíêáÿæåÚÿŸ˜yCÅÀ§féèÛÿðïæÿôñèÿïìÝÿÑÆ�ÿÈ»ˆÿΓÿÎ×ÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÏĘÿÍ•ÿÌÀ�ÿÛÔ³ÿÞÙ¹ÿÍÁ‘ÿÔË¡ÿÙÏ­ÿÛÒ°ÿÍÀ‘ÿÎ×ÿŶ€ÿÝÕ¶ÿ×̨ÿõòèÿóòæÿóðçÿÝØÀÿßÞÓüqcT±©’!èçÜÿîëâÿóðæÿõôëÿóðåÿÀ³xÿź„ÿË¿�ÿÌ“ÿÍ•ÿÎÅ—ÿÏĘÿÏÆšÿÏÆšÿÏÆšÿÏÆšÿÏÆšÿÏÆšÿÏÆšÿÏÆšÿÏÆšÿÏÆšÿÎ×ÿÙÑ®ÿ÷ôîÿöõìÿéäÏÿÀ³xÿ÷ÿĸ€ÿÏĘÿÜÓ±ÿߨºÿåÞÇÿéâÏÿéäÒÿåÞÇÿñîåÿÏȨÿÒÍ»íãâÕîîêâÿóðéÿõòëÿ÷ôíÿéæÔÿÏÆœÿÁ´~ÿʆÿʾ‘ÿÍÁ•ÿÌÀ”ÿÍ–ÿÎÅ›ÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÏÄ›ÿÕ̧ÿ÷ôîÿíéÛÿ÷öïÿèäÑÿØÏ­ÿÐÇ ÿߨ¼ÿߨ½ÿ÷ôíÿ÷ôîÿÖͪÿö‚ÿÒʤÿèãÓÿØÑºÿ¾¸›®ÕϽŒëèáÿñîçÿôóëÿöõíÿööíÿ÷÷ïÿàÙÁÿÝØºÿ×Ï­ÿȼŒÿË¿’ÿË¿“ÿÎÚÿÏÆœÿÐÇžÿÏÆœÿÐÇžÿÐÇžÿÏÆœÿÏÆœÿÏÆœÿÏÆœÿÎÅ›ÿÍÄšÿÇ»‹ÿòñåÿ÷öíÿ÷öíÿ÷öîÿñîãÿ÷öíÿöõíÿöõíÿêåÑÿÞ×½ÿîëÞÿÖϱÿèçßÿž˜‚-¹­–éèßÿïìæÿôñëÿöõíÿ÷öîÿ÷ôîÿõôëÿðìßÿĹ…ÿʆÿîëÝÿØÏ¬ÿÐÇ�ÿÑÈŸÿÑÆžÿÑÈŸÿÑÈŸÿÑÆžÿÑÈŸÿÑÈŸÿÑÈŸÿÐÇ�ÿÎÙÿʾ‘ÿÙбÿôñçÿøõïÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öîÿ÷öïÿõôíÿòñêÿìéãÿÕͼíÜÜαíìäÿóðêÿöóíÿøõïÿøõïÿøõðÿëçÖÿÜÕ·ÿéäÒÿçâÍÿÒÊ£ÿÎÆžÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇŸÿÏÇ�ÿÑÉ¡ÿÊ¿’ÿåàÊÿâÝÃÿèãÏÿø÷ñÿø÷ðÿø÷ðÿø÷ðÿøõïÿøõïÿ÷ôîÿõòëÿðíæÿéèáÿ°­�Q²²™çæßûðïæÿõôìÿ÷öðÿçãÐÿøøðÿø÷ñÿøøñÿøøðÿîêÝÿÐÈžÿÑÉŸÿÑÉŸÿÑÉŸÿÑÉžÿÐÈ�ÿÑÉŸÿÑÉŸÿÐÈžÿÑÉŸÿÐÈžÿÛÓ³ÿèäÏÿëèÖÿÏÇ�ÿËÁ’ÿàÙ¾ÿÙѯÿÖÏ«ÿéäÏÿø÷ñÿ÷öîÿöõíÿóðêÿîëåÿ×ÑÀçØÔÃ}íêäÿóðéÿøõïÿÙЮÿïêÛÿùøñÿø÷ðÿùøòÿßÚ½ÿÏÆ›ÿÑÈŸÿÐÇ�ÿÍĘÿÌÀ”ÿÍĘÿÐÇ�ÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÐÇžÿÛÓ³ÿáÙÀÿÍ–ÿÌÀ•ÿË¿“ÿïëÝÿÏÆœÿÙЮÿùøñÿ÷ôîÿõòìÿïìæÿèèàÿ©¢†$ÿçãÙÌïîæÿòîèÿÍÀ–ÿÎÚÿóðåÿø÷óÿÞ×¹ÿÛаÿÎÙÿÑÆŸÿÎÚÿÈ»‹ÿʽ�ÿÊ»ŽÿÍĘÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÒÇ ÿÓÈ¡ÿÔÉ¢ÿÏÚÿìèØÿø÷ñÿ÷öîÿÓÈ¡ÿèáÍÿðíãÿöõíÿñðèÿëêãÿÆ¿¦ˆ°°œ ëèáêàÙÊÿ÷†ÿɼŽÿÕÊ£ÿú÷óÿÕʦÿÐÄœÿÊ»�ÿÎ×ÿÎÁ“ÿäÜÃÿõðçÿÝÕ·ÿɼŒÿΗÿÑÆ�ÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÒÇŸÿÑÆ�ÿäÝÅÿú÷óÿóîãÿÞÖ¹ÿ÷öòÿõôëÿóðëÿîëåÿÔ˸ËÊÁ§ææßóÔͲÿ¿²ÿËÀ”ÿÍÄ™ÿáÚÀÿøõîÿÑÈ¡ÿÍĘÿÍÁ•ÿôñçÿøøôÿ÷ôîÿɽŽÿʆÿË¿’ÿÏÆ›ÿÑÈžÿÑÈŸÿÑÈŸÿÑÈŸÿÑÈŸÿÎÙÿñðäÿø÷ðÿíèÙÿéæÕÿÛÔºÿîëæÿÙÔÄÞÈ¿­ìëãêéæÜÿåàÏÿÎÅŸÿɾ’ÿêæÕÿø÷ðÿÓÊ¥ÿΙÿòîâÿøøôÿø÷ôÿïëßÿâÛÅÿÄ·‡ÿ˾’ÿÐÄ�ÿÑÆŸÿÐÇ¡ÿÐÇ¡ÿÐÇ¡ÿÐÅ�ÿäÝÉÿ÷÷óÿëçÚÿÙÒ¸ÿÐɯÿÙÓÂÓUUUȶ£äãÚËêçÞÿèãÔÿÜÕ¹ÿÕÌ©ÿøøôÿÖͪÿÏÆ�ÿÕÌ©ÿòïåÿùøôÿùøôÿúùõÿïëÞÿÓʤÿÏÆ�ÿÐÇ ÿÐÇ ÿÏÆŸÿÏÆŸÿÎÅžÿÍÄ�ÿÒʦÿÆ»–ÿ¾¶’ÿÀ·–ŽÿÿÿË©rËħûÍÅ¥ÿòïèÿåàËÿɽ”ÿÊ¿–ÿʾ•ÿàÙÃÿø÷ôÿùøôÿùøôÿ÷ôíÿÕÍ­ÿÍÄ�ÿÎÅŸÿÎÅŸÿÍÄžÿÌÃ�ÿËÀ›ÿɾšÿÁ¸“ÿ»±�é½´‘:Ì¿¥º³“˜¾´’þÚÖÁÿÕͲÿËÀ›ÿɼ”ÿÌÄžÿ÷÷òÿø÷ñÿø÷ñÿø÷ñÿÎÆ¢ÿÌÁœÿÌÁœÿÌÁœÿÊ¿šÿȽ˜ÿÁ¸“ÿ¼¯‹ø¼³�sÌÌ™ô–º±�p¼²‘æÐɯÿÛ×ÄÿÚÕ¿ÿäàÐÿåáÓÿñðéÿñîèÿź–ÿÆ»–ÿú”ÿ¿¶“ÿ¼³Žÿ·®‹Ëº±ŽV¿¿Ÿÿÿÿ¿´”¼³‘TÁ¸–�þ Å½²’íº°Žù¾¶“ùº±‹ä¹±�´¹°‹|¾²�C¿¿�ÿÿÿÿÿÿvÿÿÿÿÿÿvÿÿÿÿÿÿvÿÿàÿÿvÿþÿÿvÿø?ÿvÿàÿvÿÀÿvÿ€ÿvÿÿvÿÿvþvü?vø?vøvðvðvðvàvàvàvàvàvàvàvàvàvàvàvàvàvðvðvøvøvü?vüvþvÿÿvÿ€ÿvÿÀÿvÿàÿvÿøÿvÿþÿvÿÿ€ÿÿvÿÿÿÿÿÿvÿÿÿÿÿÿvÿÿÿÿÿÿv( @ €xkI&{oC|‚r>ÀŒ{<è�y>ù�y>ùŒ{<è‚r>À{oC|rkC&lfMR|n?Ù‘€Cÿ™†Hÿš‰Iÿœ‹Jÿœ‹Jÿœ‹Jÿœ‹Jÿš‰Iÿ™†Hÿ�}Cÿzi=ÙicBMQQ9‘‰pÊÈ¿ªÿˆoBÿ—‚Iÿ ‹Mÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¢ŽOÿ¡�Oÿš…Jÿ�‰`ÿ~f>ÿmc9Èff?idF3Ž{^óÚÕÀÿÞ×Ãÿ¤’pÿ�zGÿ ‹Oÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’Tÿ¥’TÿŸ‹Nÿɾ¢ÿØÐ»ÿ�Šjÿzf:ópeG2niK3‰sCùÕηÿÞÙÁÿߨÁÿäÝÉÿºª‡ÿ¡�Sÿª™Zÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ«š[ÿ§”Wÿö“ÿâÚÅÿáÙÆÿ´¨ˆÿ…o?ùpkL2kkP‰tFó½±’ÿãÜÈÿáÚÄÿáÚÄÿãÜÈÿÕ̲ÿª™^ÿ®�`ÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ¯žaÿ®›^ÿÁµŒÿåàÌÿâÛÅÿäÝÉÿÀ´–ÿ�zJóxkPˆzNÆÁ¶—ÿåàÌÿåÞÊÿåÞÈÿæßÌÿçâÐÿÞÙÁÿ¶¦pÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿª—]ÿÛÒ¸ÿåÞÊÿåÞÊÿåßÎÿ±£}ÿ’�TLj}ZI­ uÿæáÐÿäàÍÿæáÍÿçàÍÿÏÆ¤ÿÀ³�ÿµ¥lÿ¶¦mÿ¶¦mÿ¶¦mÿ¶¦mÿ¶¦mÿµ§oÿ´¤jÿ´£jÿ³£jÿ«š^ÿÔ˯ÿçâÎÿæáÍÿåàÎÿÓʰÿ–…Nÿˆ}ZI�“]×ÚÕ¼ÿèäÑÿéäÒÿéæÔÿäÝÇÿ¹«sÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿº¬tÿ¸«pÿ³¤jÿ¯�aÿ­œ_ÿ­œ_ÿ«˜^ÿéåÔÿèãÒÿèãÑÿèãÑÿéåÓÿÀ´�ÿ™ŠRØ ‘m#¬œgÿÚÖ»ÿìèØÿëè×ÿÓʧÿ¾±}ÿ¿°zÿ¿°zÿ½°xÿ½°xÿ¿°zÿ½°xÿ¾°xÿµ¨kÿ­œZÿ·§nÿ²£jÿ¯Ÿbÿ¼¯|ÿåáËÿêæÔÿéæÔÿêæÔÿêçÕÿéæÕÿ­¤tÿ�‚`%¤›qs³¤oÿÞÙ¿ÿÞÙ¿ÿÏÆœÿ¿³~ÿÀ´ÿµÿÀ´ÿÀ´ÿÀ´ÿÀ´ÿÀ´ÿ¾±yÿ³¤cÿÛÒ³ÿïëÞÿîêÝÿîêÝÿíéÛÿìèØÿëè×ÿìè×ÿìè×ÿëè×ÿëè×ÿÚÓ¼ÿ™Žet£˜m¸¾±}ÿÎÁ“ÿôÿöÿÄ·�ÿÄ·ƒÿŸ‚ÿŸ‚ÿÄ·ƒÿŸ‚ÿŸ‚ÿŸ‚ÿÀ±{ÿÓÈ ÿðìßÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîéÚÿîêÜÿÍ›ÿž’`¹«šhç×ίÿôÿŸ„ÿʽŽÿƹ†ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿÈ»‰ÿǺ‡ÿÈ»‰ÿÆ·ƒÿáÙ¾ÿñíàÿïëÞÿïëÞÿïëÞÿðìÞÿðìÞÿðìÞÿðìÞÿðìÞÿðíßÿæßÈÿÚϰÿÁ¸‘çž�ùÒÊ£ÿʽŽÿÏÄ›ÿÍÁ•ÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿʽŽÿɼŒÿÚÒ°ÿòïäÿñîáÿñîáÿñîáÿñîáÿñîáÿñîáÿñîáÿñîáÿòïâÿÛÓ±ÿêçØÿÙоùÇ¿ ùÌÀ˜ÿÐÅ›ÿɼŒÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿÌÀ‘ÿ˾�ÿÌÀ‘ÿ˾�ÿÌÀ‘ÿË¿�ÿéäÏÿòïåÿñîãÿñîãÿñîãÿñîäÿòïåÿòïåÿòñåÿóðæÿåàÈÿîëáÿÀº•ùƽœç½¯sÿÍÔÿÇ»„ÿÍÁ�ÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÍÔÿÎÓÿèáÊÿôóèÿôñæÿôñæÿóðåÿêæÔÿÖͦÿߨºÿÑÈ�ÿåàÇÿïìãÿàÙËèÕѾ¾ÒʦÿçàÊÿĸ�ÿÆ»‡ÿÌÁ‘ÿÍÔÿÍ•ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÍÄ–ÿÎÅ™ÿÎÅ™ÿÍÁ”ÿȼ‹ÿâÛÁÿàÙ¾ÿéäÐÿëè×ÿË¿�ÿ¶ÿʾ�ÿÔË¡ÿæâËÿíìàÿÙÕýÒι}îíäÿôñêÿïêÝÿ¿°wÿŸ„ÿ˾�ÿÍÁ”ÿÍÁ•ÿÎ×ÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÏÄšÿÎ×ÿÙЭÿøõïÿçâÍÿÀ²zÿÀ³{ÿÏÄ›ÿÖ˧ÿáÚÃÿéäÐÿéåÐÿÝÙÀÿÊìy¸¸Ÿ(ëêâÿóòéÿ÷öíÿëèÖÿÍ•ÿʽŽÿȼ‹ÿɽ�ÿÍÁ•ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÏÆ›ÿÎÅšÿÓÊ¡ÿáÜÃÿíêÛÿíéÙÿâÝÃÿãÞÅÿôóèÿ÷öîÿÇ»ˆÿÞÙÀÿ×Òºÿ»µ“&æåÞÚñîåÿöóìÿ÷öîÿ÷ôíÿåÝÆÿöÿâÛÃÿÍÁ•ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÑÆ�ÿÐÅ›ÿÍÁ•ÿÍ–ÿíèØÿøõïÿøõîÿø÷ïÿ÷ôíÿ÷ôîÿöóêÿðíæÿâàÓÙÎȱOîíæÿõôëÿ÷öïÿøøðÿíéÙÿîëÜÿçâÌÿÍÅšÿÑÉžÿÐÈ�ÿÐÈ�ÿÑÉŸÿÑÉŸÿÐÈžÿÕͪÿÛÖµÿâÛÃÿâÝÄÿòñåÿòïåÿø÷ðÿ÷öîÿõôëÿîíæÿÅ¿§LèåÛÉòñéÿêçÔÿéæÔÿùøòÿùøòÿÝØ¸ÿÎÆšÿÎÅ™ÿËÁ’ÿÌ“ÿÏÇœÿÑÉŸÿÑÉŸÿÓË£ÿåáÊÿÎÅšÿËÂ’ÿßÚ½ÿȼ‹ÿõòèÿ÷öîÿñðéÿåàÖÉ»»¡íêãóÞÙÁÿɼ�ÿñíãÿèãÎÿÏÇœÿË¿’ÿÌ¿‘ÿÏÆœÿËÀ“ÿÌÀ‘ÿÐÅ�ÿÒÇŸÿÑÈŸÿÓÊ¡ÿÎÅšÿõòéÿõòèÿÝÖ¸ÿïìâÿôñìÿíêã󸸛Ðʰ1ÝØÅùÄ·‰ÿÑÆŸÿÚѰÿâÛÃÿÍÁ–ÿÒÇ ÿùøõÿêæÔÿĵ�ÿ˾�ÿÏÄ›ÿÒÇŸÿÒÇŸÿÑÆŸÿÞÖ¹ÿø÷ñÿìèÛÿäßÍÿìëçùÈè/Ïɱ+èèßëäßÏÿÑÈ¥ÿéåÔÿäÜÆÿÑÆŸÿóðçÿùøôÿéåÔÿÍÀ–ÿÌÀ—ÿÐÅžÿÐÇ¡ÿÐÇ¡ÿÐÈ¢ÿîêáÿÞÙÁÿÉèëÌ̲(Ì»ªÒηÁÒʰÿìéÜÿÚѳÿÌÀ•ÿÛÓ´ÿúùõÿùøõÿ÷÷ïÿÒÉ£ÿÏÆŸÿÏÆŸÿÍÅžÿÌÜÿĹ•ÿº¯Žº¿¿” Á¹šBø�ÖÏȰÿÏȪÿʾšÿõôîÿø÷ñÿñðèÿɽ™ÿËÀœÿǼ™ÿ¹–ÿº³�Ôº²‘?½´”ú™lÊ©¹ÏɳèÍÆ°ùÐɵùº³Žèº²�³º±Œi»²�ÿÿÿÿÿÿÿÿÿàÿÿÿþü?øððààÀÀÀÀÀÀÀÀÀÀààððøü?þÿ€ÿÿàÿÿÿÿÿÿÿÿÿ(0 ` ÐЋ ´¥n3¯¡kZ±¢lU¹­s,ÌÌ aY@?wkD¾‡wAû‘}@ÿ‘~Aÿ‘~Aÿ�|@ÿ‚vAøvjD¯hbG'BB,}waÏ™ˆfÿŽxAÿ�‰Kÿ¢ŽMÿ¢ŽMÿ¢ŽMÿ¢ŽMÿ�‰Jÿ’|Iÿ~i?ÿcZ;´TN:'‚uVýÞÙÅÿÌëÿ˜ƒSÿŸ‹Oÿ¦“Uÿ¦“Uÿ¦“Uÿ¦“Uÿ¤‘Tÿ¬›mÿÞÙÄÿœ‹lÿla<ó<<-TF8}m@ýÓ˵ÿâÛÅÿãÜÈÿË¿ ÿ¥’Uÿ­œ]ÿ­œ]ÿ­œ]ÿ­œ]ÿ­œ]ÿª™`ÿçâÎÿäßÊÿ°£�ÿxmFóƒtIÝÐÇ®ÿæáÍÿåàËÿçáÐÿãÜÈÿ³¢iÿ³¢fÿ³¢gÿ³¢gÿ³¢gÿ³¢gÿ¬š^ÿÐÇ©ÿæßÌÿæáÏÿ´¥�ÿ{mP¸�vYG¾´’ÿèäÓÿèäÒÿàÛÃÿø‹ÿ·ªqÿ·§nÿ·ªqÿ¶©pÿ´¦nÿ¯ fÿ¯žcÿ©™]ÿÌÄ¢ÿçãÐÿçâÐÿÚÕ¼ÿ•„PÿmeP#ž“eÖÛÔ¼ÿëèÙÿæâÍÿȽ�ÿ»®vÿ¼¯wÿ¾¯yÿ¼¯wÿ¹¬qÿ°¡cÿ¦•Sÿ¢‘Mÿ¤“OÿÖΰÿéæÔÿéåÓÿëçÖÿÌâÿ‹}[µ¢‹s ­�lÿÜÔ·ÿÛÖ¸ÿ÷ƒÿÀ´ÿµÿÀ´ÿµÿµÿ½­uÿ¼¬rÿéåÓÿíè×ÿêãÑÿìéÚÿìè×ÿìè×ÿíèØÿíèÜÿ¥šq÷²™f ¡™r<¼¯€ÿɽŽÿ÷‚ÿĸ…ÿʆÿʆÿʆÿʆÿʆÿÀ³}ÿèãÑÿïëßÿîêÝÿîêÝÿîêÝÿîêÝÿîêÝÿïëÞÿߨÀÿ¾³‹ÿ¶«|1¹¬fÔͱÿƹ‡ÿÍÁ”ÿɼ�ÿɼŽÿɼŽÿɼŽÿɼŽÿɼ�ÿƺ‰ÿèáÎÿñíãÿñíáÿñíáÿñíáÿñíáÿñíáÿòîâÿÛÔµÿåáÓÿ¾¯~Wž”nÄ»‘ÿÍÀ�ÿȼ‰ÿÌÀ�ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÁ‘ÿÍÀ�ÿÕÊ¢ÿòîäÿóïåÿòîäÿòîåÿóïåÿõðåÿôðçÿéåÒÿÙÔ»ÿĸ‰[¿¸”H¶©uÿÎÅ–ÿö~ÿʽ‹ÿÍÁ‘ÿΓÿÍ•ÿÍÔÿÍÔÿÍÔÿÎÂ’ÿÓÊ ÿðìâÿôóçÿõòéÿÖͨÿ˾ŒÿǺƒÿéäÏÿëèßÿúˆ8¥™ìëäÿõôéÿÐÄ›ÿöÿɺŠÿÍÀ‘ÿÍ–ÿÏÄšÿÏÄšÿÏÄšÿÏØÿÑÅœÿìè×ÿÐÇ�ÿɺŠÿÌÀ‘ÿÙÏ­ÿæßÈÿðíàÿÚÖÃûȶçáÖâõòéÿóòæÿÙѱÿÍ•ÿƼ‰ÿÍÁ’ÿÏÄšÿÏÆ›ÿÏÆ›ÿÏÄšÿÎÅ™ÿÝØ·ÿóòæÿçâÍÿéæÔÿø÷ïÿ×ΫÿàÙÃÿÊÂ¬ÆÆÁª[òïéÿ÷öïÿ÷öïÿàÙ¿ÿáÜÃÿÐÇ ÿÎÆœÿÎÆœÿÎÆžÿÐÈžÿÏÇ�ÿ×Ï­ÿìéÚÿøøñÿø÷ðÿø÷ïÿ÷öîÿïîçÿ°¦Œ1ææÜç÷öîÿèäÑÿ÷÷òÿñíàÿÍ•ÿÌ“ÿËÀ�ÿÍÄ–ÿÐÈ�ÿÔË¢ÿãÞÆÿÌÁ”ÿÜ×·ÿ×Эÿøøñÿôóìÿ×ѿռ¼ ìèàÿÇ»ŒÿîêÝÿ×Ϋÿ˼ŽÿÐÄ›ÿÙЮÿȹˆÿÍÁ•ÿÑÆ�ÿÒÇŸÿÜÔ²ÿøõîÿæáÉÿôñëÿæåÙý©�q ÌÈ­8ÙÖÃÿÔˬÿäÝÇÿÛÓµÿÝÖºÿùøõÿØÍ­ÿÈ»‹ÿÎÚÿÐÇ¡ÿÏÄœÿòîåÿæáÒÿÜØÅúº°“ÊÁ§ÕоÑÜØÂÿàÙÂÿ͘ÿòïåÿùùöÿäßÇÿÍÅ›ÿÎÆŸÿÌÜÿƽšÿ¼²�´ÄÄœ ÿÿÿ½²‘FƼ¢ËÎÇ«ÿßÛÉÿòïèÿÞÙÄÿĹ”ÿÀ·’ÿ¼±�¸¾´�7»»™Žœ>Æ¿˜dÇ¿˜aÀ¶�5й¢ ÿÿÿÿ�ÿüøðààÀÀ€€€€€€ÀÀÀàðøüÿ�ÿÿÿÿ(  @??/`X4yŠ{DÉ‘~Aò‘~Aò‰|CÉujBs\\E \X?HÊÀ«ñ‘�Lÿš‡Iÿ¥’Tÿ¥’Tÿž‹Mÿ�Œ^ÿ›Œdñh`ABmeD?¹›ÿåÞËÿÛÓºÿ™‰Mÿ¯žaÿ¯žaÿ©™\ÿ«›kÿçãÐÿ»²�ÿaZ?D__?¸®ŒýèãÒÿáÚÆÿȼ˜ÿ¡‘Wÿ´¤jÿµ§oÿ²¢hÿ£’VÿáÚÆÿçãÑÿ§›nýTT8 ƒyRvãßÍÿæáÍÿ¹­}ÿ±¤kÿº­tÿ¹¬tÿ¯¢iÿ¯£nÿ²¦rÿéåÔÿêæÕÿáÚÈÿ‚zUwœ�aÏÊ¿˜ÿ·¨rÿ¼¬vÿÄ·�ÿ÷€ÿº¬tÿÔˬÿñíáÿïëßÿîêÜÿíéÛÿïêÛÿ±¦�ϼ²Žô¼®{ÿ¼¬yÿÈ»‹ÿɼŒÿɼŒÿ¼­yÿèáÎÿñíãÿñíáÿñíáÿòîâÿéåÔÿÕλô¼±�ô÷‡ÿɽ�ÿΓÿΓÿÍÁ’ÿÈ»‹ÿɽ‘ÿñîáÿôñçÿòïâÿäßÉÿäßÉÿÝÛËôÙÕÃÑåÞËÿÄ·‡ÿ˾�ÿÍÁ•ÿÏĘÿÏĘÿÈ»�ÿÛÓ¶ÿÝÖ»ÿÏÆ¡ÿÑÈ£ÿäÝÉÿÖÐÀп·¤yóòëÿéæÕÿÌÜÿÈ¿”ÿÍÄšÿÐÇ�ÿ͘ÿÌÁšÿñíãÿïëßÿ÷öïÿáÜÊÿ¶­•wUU? ììäýïìâÿõòéÿÑÈ£ÿÌ×ÿÍÅšÿ͘ÿÓʨÿÓ˨ÿâÞÇÿöõîÿëëäý\EE ¡�‡Dɾ¢ÿÜÕ¾ÿÍŸÿÖÌ®ÿÎàÿʽ’ÿÄ·‰ÿÕÊ«ÿíèÜÿëçßÿœ˜�C¢šƒBÍÆ²ðÝÙÄÿÔÌ®ÿø÷ðÿÓÊ«ÿÊ¿˜ÿ»®ƒÿû¡ð‘‰q?_O?™“uo¸«’ÇÝØËòÁº¡ò·­‰Áº²�Zf ÿÿ&ð&à&À&€&€&€&€&€&€&€&€&À&à&ð&ÿÿ&MEGAcmd-2.5.2_Linux/build/installer/winversion.rc.in000066400000000000000000000022571516543156300223450ustar00rootroot00000000000000#include VS_VERSION_INFO VERSIONINFO FILEVERSION @MEGACMD_MAJOR_VERSION@, @MEGACMD_MINOR_VERSION@, @MEGACMD_MICRO_VERSION@, 0 PRODUCTVERSION @MEGACMD_MAJOR_VERSION@, @MEGACMD_MINOR_VERSION@, @MEGACMD_MICRO_VERSION@, 0 FILEFLAGSMASK 0x3fL FILEFLAGS 0 FILEOS VOS_NT_WINDOWS32 FILETYPE VFT_APP FILESUBTYPE VFT2_UNKNOWN BEGIN BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END BLOCK "StringFileInfo" BEGIN BLOCK "040904b0" BEGIN VALUE "CompanyName", "Mega Limited\0" VALUE "FileDescription", "@MEGACMD_RESOURCE_NAME@\0" VALUE "InternalName", "@MEGACMD_RESOURCE_NAME@.exe\0" VALUE "LegalCopyright", "Mega Limited 2019\0" VALUE "OriginalFilename", "@MEGACMD_RESOURCE_NAME@.exe\0" VALUE "ProductName", "@MEGACMD_RESOURCE_NAME@\0" VALUE "ProductVersion", "@MEGACMD_MAJOR_VERSION@.@MEGACMD_MINOR_VERSION@.@MEGACMD_MICRO_VERSION@.0\0" END END END IDI_ICON1 ICON DISCARDABLE ".\\app_ico.ico" IDI_ICON2 ICON DISCARDABLE ".\\web_ico.ico" MEGAcmd-2.5.2_Linux/build/installer_mac.sh000077500000000000000000000220211516543156300203550ustar00rootroot00000000000000#!/bin/zsh -e Usage () { echo "Usage: installer_mac.sh [--arch [arm64|x86_64|universal]] [--build] | [--sign] | [--create-dmg] | [--notarize] | [--full-pkg]" echo " --build : Builds the app and creates the bundle using cmake" echo " --sign : Sign the app" echo " --create-dmg : Create the dmg package" echo " --notarize : Notarize package against Apple systems." echo " --full-pkg : Implies and overrides all the above" echo " --arch [arm64|x86_64|universal] : Arch target. It will use the host arch if none specified." echo "" } if [ $# -eq 0 ]; then Usage exit 1 fi APP_NAME=MEGAcmd VOLUME_NAME="Install MEGAcmd" MOUNTDIR=tmp RESOURCES=installer/resourcesDMG SERVER_PREFIX=MEGAcmdServer/ CLIENT_PREFIX=MEGAcmdClient/ SHELL_PREFIX=MEGAcmdShell/ LOADER_PREFIX=MEGAcmdLoader/ UPDATER_PREFIX=MEGAcmdUpdater/ host_arch=`uname -m` target_arch=${host_arch} full_pkg=0 build=0 sign=0 createdmg=0 notarize=0 sign_time=0 dmg_time=0 notarize_time=0 total_time=0 while [ "$1" != "" ]; do case $1 in --arch ) shift target_arch="${1}" if [ "${target_arch}" != "arm64" ] && [ "${target_arch}" != "x86_64" ] && [ "${target_arch}" != "universal" ]; then Usage; echo "Error: Invalid arch value."; exit 1; fi ;; --build ) build=1 ;; --sign ) sign=1 ;; --create-dmg ) createdmg=1 ;; --notarize ) notarize=1 ;; --full-pkg ) full_pkg=1 ;; -h | --help ) Usage exit ;; * ) Usage echo "Unknown parameter: ${1}" exit 1 esac shift done if [ ${full_pkg} -eq 1 ]; then build=1 sign=1 createdmg=1 notarize=1 fi if [ ${build} -ne 1 -a ${sign} -ne 1 -a ${createdmg} -ne 1 -a ${notarize} -ne 1 ]; then Usage echo "Error: No action selected. Nothing to do." exit 1 fi build_archs=${target_arch} if [ "$target_arch" = "universal" ]; then build_archs=(arm64 x86_64) fi for build_arch in $build_archs; do eval build_time_${build_arch}=0 done if [ ${build} -eq 1 ]; then for build_arch in $build_archs; do build_time_start=`date +%s` # Clean previous build [ -z "${SKIP_REMOVAL}" ] && rm -rf Release_${build_arch} mkdir Release_${build_arch} || true cd Release_${build_arch} # Build binaries # Detect crosscompilation and set CMAKE_OSX_ARCHITECTURES. if [ "${build_arch}" != "${host_arch}" ]; then CMAKE_EXTRA="-DCMAKE_OSX_ARCHITECTURES=${build_arch}" fi # If VCPKGPATH environment variable set if [ -n "${VCPKGPATH}" ]; then VCPKG_ROOT_ARGUMENT="-DVCPKG_ROOT=${VCPKGPATH}" fi cmake -B build-cmake-Release_${build_arch} -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_VERBOSE_MAKEFILE=ON ${VCPKG_ROOT_ARGUMENT} ${CMAKE_EXTRA} -S ../../ cmake --build build-cmake-Release_${build_arch} -j $(sysctl -n hw.ncpu) cmake --install build-cmake-Release_${build_arch} --prefix ./ SERVER_PREFIX="" CLIENT_PREFIX="" SHELL_PREFIX="" LOADER_PREFIX="" UPDATER_PREFIX="" # main bundle: # place (and strip) executables typeset -A execOriginTarget execOriginTarget[mega-exec]=mega-exec execOriginTarget[mega-cmd]=MEGAcmdShell execOriginTarget[mega-cmd-updater]=MEGAcmdUpdater execOriginTarget[MEGAcmd]=mega-cmd for k in "${(@k)execOriginTarget}"; do #Place it in ${APP_NAME} with its final name mv $k.app/Contents/MacOS/$k ${APP_NAME}.app/Contents/MacOS/$execOriginTarget[$k] #get symbols out: dsymutil ${APP_NAME}.app/Contents/MacOS/$execOriginTarget[$k] -o $execOriginTarget[$k].dSYM #strip executable strip ${APP_NAME}.app/Contents/MacOS/$execOriginTarget[$k] # have dylibs use relative paths: done # copy initialize script (it will simple launch MEGAcmdLoader in a terminal) as the new main executable: MEGAcmd cp ../installer/MEGAcmd.sh ${APP_NAME}.app/Contents/MacOS/MEGAcmd # place commands and completion scripts cp ../../src/client/mega-* ${APP_NAME}.app/Contents/MacOS/ cp ../../src/client/megacmd_completion.sh ${APP_NAME}.app/Contents/MacOS/ otool -L ${APP_NAME}.app/Contents/MacOS/mega-cmd otool -L ${APP_NAME}.app/Contents/MacOS/mega-exec otool -L ${APP_NAME}.app/Contents/MacOS/MEGAcmdLoader || true otool -L ${APP_NAME}.app/Contents/MacOS/MEGAcmdUpdater otool -L ${APP_NAME}.app/Contents/MacOS/MEGAcmdShell cd .. #popd Release_${build_arch} eval build_time_${build_arch}=`expr $(date +%s) - $build_time_start` unset build_time_start done fi if [ "$target_arch" = "universal" ]; then # Remove Release_universal folder (despite SKIP_REMOVAL, since it does not contain previous compilation results) rm -rf Release_${target_arch} || true for i in `find Release_arm64/MEGAcmd.app -type d`; do mkdir -p $i ${i/Release_arm64/Release_universal}; done # copy x86_64 files for i in `find Release_x86_64/MEGAcmd.app -type f`; do cp $i ${i/Release_x86_64/Release_universal} done # replace them by arm64 for i in `find Release_arm64/MEGAcmd.app -type f`; do cp $i ${i/Release_arm64/Release_universal}; done # merge binaries: for i in `find Release_arm64/MEGAcmd.app -type f ! -size 0 ! -name app.icns | perl -lne 'print if -B'`; do lipo -create $i ${i/Release_arm64/Release_x86_64} -output ${i/Release_arm64/Release_universal} || true; done fi if [ "$sign" = "1" ]; then sign_time_start=`date +%s` cd Release_${target_arch} cp -R $APP_NAME.app ${APP_NAME}_unsigned.app echo "Signing 'APPBUNDLE'" codesign --force --verify --verbose --preserve-metadata=entitlements --options runtime --sign "Developer ID Application: Mega Limited" --deep $APP_NAME.app echo "Checking signature" spctl -vv -a $APP_NAME.app cd .. sign_time=`expr $(date +%s) - $sign_time_start` fi if [ "$createdmg" = "1" ]; then dmg_time_start=`date +%s` cd Release_${target_arch} [ -f $APP_NAME.dmg ] && rm $APP_NAME.dmg echo "DMG CREATION PROCESS..." echo "Creating temporary Disk Image (1/7)" #Create a temporary Disk Image /usr/bin/hdiutil create -srcfolder $APP_NAME.app/ -volname $VOLUME_NAME -ov $APP_NAME-tmp.dmg -fs HFS+ -format UDRW >/dev/null echo "Attaching the temporary image (2/7)" #Attach the temporary image mkdir $MOUNTDIR /usr/bin/hdiutil attach $APP_NAME-tmp.dmg -mountroot $MOUNTDIR >/dev/null echo "Copying resources (3/7)" #Copy the background, the volume icon and DS_Store files unzip -d $MOUNTDIR/$VOLUME_NAME ../$RESOURCES.zip /usr/bin/SetFile -a C $MOUNTDIR/$VOLUME_NAME echo "Adding symlinks (4/7)" #Add a symbolic link to the Applications directory ln -s /Applications/ $MOUNTDIR/$VOLUME_NAME/Applications # Delete unnecessary file system events log if possible echo "Deleting .fseventsd" rm -rf $MOUNTDIR/$VOLUME_NAME/.fseventsd || true echo "Detaching temporary Disk Image (5/7)" #Detach the temporary image /usr/bin/hdiutil detach $MOUNTDIR/$VOLUME_NAME >/dev/null echo "Compressing Image (6/7)" #Compress it to a new image /usr/bin/hdiutil convert $APP_NAME-tmp.dmg -format UDZO -o $APP_NAME.dmg >/dev/null echo "Deleting temporary image (7/7)" #Delete the temporary image rm $APP_NAME-tmp.dmg rmdir $MOUNTDIR cd .. dmg_time=`expr $(date +%s) - $dmg_time_start` fi if [ "$notarize" = "1" ]; then notarize_time_start=`date +%s` cd Release_${target_arch} if [ ! -f $APP_NAME.dmg ];then echo "" echo "There is no dmg to be notarized." echo "" exit 1 fi echo "Sending dmg for notarization (1/3)" xcrun notarytool submit $APP_NAME.dmg --keychain-profile "AC_PASSWORD" --wait 2>&1 | tee notarylog.txt echo >> notarylog.txt xcrun stapler staple -v $APP_NAME.dmg 2>&1 | tee -a notarylog.txt echo "Stapling ok (2/3)" #Mount dmg volume to check if app bundle is notarized echo "Checking signature and notarization (3/3)" mkdir $MOUNTDIR || : hdiutil attach $APP_NAME.dmg -mountroot $MOUNTDIR >/dev/null spctl --assess -vv -a $MOUNTDIR/$VOLUME_NAME/$APP_NAME.app hdiutil detach $MOUNTDIR/$VOLUME_NAME >/dev/null rmdir $MOUNTDIR cd .. notarize_time=`expr $(date +%s) - $notarize_time_start` fi echo "" if [ ${build} -eq 1 ]; then for build_arch in $build_archs; do echo "Build ${build_arch}: ${(P)$(echo build_time_${build_arch})} s"; done; fi if [ ${sign} -eq 1 ]; then echo "Sign: ${sign_time} s"; fi if [ ${createdmg} -eq 1 ]; then echo "dmg: ${dmg_time} s"; fi if [ ${notarize} -eq 1 ]; then echo "Notarization: ${notarize_time} s"; fi echo "" echo "DONE in "`expr $(for build_arch in $build_archs; do echo "${(P)$(echo build_time_${build_arch})} + "; done) ${sign_time} + ${dmg_time} + ${notarize_time}`" s" MEGAcmd-2.5.2_Linux/build/installer_win.nsi000066400000000000000000001372431516543156300206030ustar00rootroot00000000000000 ManifestDPIAware true RequestExecutionLevel user Unicode true #!define BUILD_UNINSTALLER #!define BUILD_X64_VERSION #!define ENABLE_DEBUG_MESSAGES #!define WINKITVER "${WINKITVER}" !macro DEBUG_MSG message !ifdef ENABLE_DEBUG_MESSAGES MessageBox MB_OK "${message}" !endif !macroend ; HM NIS Edit Wizard helper defines BrandingText "MEGA Limited" !define PRODUCT_NAME "MEGAcmd" VIAddVersionKey "CompanyName" "MEGA Limited" VIAddVersionKey "FileDescription" "MEGAcmd" VIAddVersionKey "LegalCopyright" "MEGA Limited 2019" VIAddVersionKey "ProductName" "MEGAcmd" !define PRODUCT_PUBLISHER "Mega Limited" !define PRODUCT_WEB_SITE "http://www.mega.nz" !define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\MEGAcmdShell.exe" !define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" !define PRODUCT_UNINST_ROOT_KEY "HKLM" !define PRODUCT_STARTMENU_REGVAL "NSIS:StartMenuDir" !define CSIDL_STARTUP '0x7' ;Startup path !define CSIDL_LOCALAPPDATA '0x1C' ;Local Application Data path !define CSIDL_COMMON_APPDATA '0x23' ; To be defined depending on your working environment !define BUILDPATH_X64 "built64" !ifndef BUILD_X64_VERSION !define BUILDPATH_X86 "built32" !endif !ifdef BUILD_X64_VERSION !define SRCDIR_MEGACMD "${BUILDPATH_X64}" !else !define SRCDIR_MEGACMD "${BUILDPATH_X86}" !endif !define SRCDIR_BATFILES "..\src\client\win" ; Version info: get version directly from the binary !getdllversion "${SRCDIR_MEGACMD}/MEGAcmdServer.exe" Expv_ VIAddVersionKey "FileVersion" "${Expv_1}.${Expv_2}.${Expv_3}.${Expv_4}" !ifdef VERSION_SUFFIX VIProductVersion "${Expv_1}.${Expv_2}.${Expv_3}.${Expv_4}-${VERSION_SUFFIX}" VIAddVersionKey "ProductVersion" "${Expv_1}.${Expv_2}.${Expv_3}.${Expv_4}-${VERSION_SUFFIX}" !define PRODUCT_VERSION "${Expv_1}.${Expv_2}.${Expv_3}-${VERSION_SUFFIX}" !else VIProductVersion "${Expv_1}.${Expv_2}.${Expv_3}.${Expv_4}" VIAddVersionKey "ProductVersion" "${Expv_1}.${Expv_2}.${Expv_3}.${Expv_4}" !define PRODUCT_VERSION "${Expv_1}.${Expv_2}.${Expv_3}" !endif !define VcRedistBasePath "C:\Program Files\Microsoft Visual Studio\2022\Professional\VC\Redist\MSVC\14.42.34433" !define VcRedist32BasePath "${VcRedistBasePath}\x86" !define VcRedist32Path "${VcRedist32BasePath}\Microsoft.VC143.CRT" !define VcRedist64BasePath "${VcRedistBasePath}\x64" !define VcRedist64Path "${VcRedist64BasePath}\Microsoft.VC143.CRT" !define WinRedistBasePath "C:\Program Files (x86)\Windows Kits\10\Redist\${WINKITVER}\ucrt\DLLs" !define WinRedist32BasePath "${winRedistBasePath}\x86" !define WinRedist64BasePath "${winRedistBasePath}\x64" !define MULTIUSER_MUI !define MULTIUSER_INSTALLMODE_COMMANDLINE !define MULTIUSER_EXECUTIONLEVEL Standard !define MULTIUSER_EXECUTIONLEVEL_ALLUSERS !define MULTIUSER_INSTALLMODE_DEFAULT_CURRENTUSER !define WinFspInstaller "winfsp-installer.msi" !define MEGA_DATA "mega.ini" !define UNINSTALLER_NAME "uninst.exe" !include "MUI2.nsh" !include "Library.nsh" !include "UAC.nsh" !include "MultiUser.nsh" !include "x64.nsh" !include "WinVer.nsh" ; MUI Settings !define MUI_ABORTWARNING !define MUI_ICON "installer\app_ico.ico" !define MUI_UNICON "installer\uninstall_ico.ico" ; Language Selection Dialog Settings !define MUI_LANGDLL_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_LANGDLL_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_LANGDLL_REGISTRY_VALUENAME "NSIS:Language" ; Settings !define MUI_STARTMENUPAGE_NODISABLE !define MUI_STARTMENUPAGE_DEFAULTFOLDER "MEGAcmd" !define MUI_STARTMENUPAGE_REGISTRY_ROOT "${PRODUCT_UNINST_ROOT_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_KEY "${PRODUCT_UNINST_KEY}" !define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "${PRODUCT_STARTMENU_REGVAL}" !define MUI_FINISHPAGE_RUN ;"$INSTDIR\MEGAcmdShell.exe" !define MUI_FINISHPAGE_RUN_FUNCTION RunFunction !define MUI_WELCOMEFINISHPAGE_BITMAP "installer\left_banner.bmp" ;!define MUI_FINISHPAGE_NOAUTOCLOSE var APP_NAME var ICONS_GROUP var USERNAME var CURRENT_USER_INSTDIR var ALL_USERS_INSTDIR ; Installer pages !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "installer\terms.txt" !insertmacro MUI_PAGE_STARTMENU Application $ICONS_GROUP !insertmacro MUI_PAGE_INSTFILES Page Custom WinFspPage WinFspPageLeave !insertmacro MUI_PAGE_FINISH ; Uninstaller pages !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES UninstPage Custom un.WinFspUninstall un.WinFspUninstallLeave !insertmacro MUI_UNPAGE_FINISH ; Language files (the ones available in MEGAsync (not MEGAcmd), with locale code) !insertmacro MUI_LANGUAGE "Afrikaans" ;af !insertmacro MUI_LANGUAGE "Albanian" !insertmacro MUI_LANGUAGE "Arabic" ;ar !insertmacro MUI_LANGUAGE "Armenian" !insertmacro MUI_LANGUAGE "Basque" ;eu !insertmacro MUI_LANGUAGE "Belarusian" !insertmacro MUI_LANGUAGE "Bosnian" ;bs !insertmacro MUI_LANGUAGE "Breton" !insertmacro MUI_LANGUAGE "Bulgarian" ;bg !insertmacro MUI_LANGUAGE "Catalan" ;ca #!insertmacro MUI_LANGUAGE "Cibemba" !insertmacro MUI_LANGUAGE "Croatian" ;hr !insertmacro MUI_LANGUAGE "Czech" ;cs !insertmacro MUI_LANGUAGE "Danish" ;da !insertmacro MUI_LANGUAGE "Dutch" ;nl #!insertmacro MUI_LANGUAGE "Efik" ;locale code not found !insertmacro MUI_LANGUAGE "English" !insertmacro MUI_LANGUAGE "Esperanto" !insertmacro MUI_LANGUAGE "Estonian" !insertmacro MUI_LANGUAGE "Farsi" ;locale code not found !insertmacro MUI_LANGUAGE "Finnish" ;fi !insertmacro MUI_LANGUAGE "French" ;fr !insertmacro MUI_LANGUAGE "Galician" !insertmacro MUI_LANGUAGE "Georgian" !insertmacro MUI_LANGUAGE "German" ;de !insertmacro MUI_LANGUAGE "Greek" ;el !insertmacro MUI_LANGUAGE "Hebrew" ;he #!insertmacro MUI_LANGUAGE "Hindi" ;hi !insertmacro MUI_LANGUAGE "Hungarian" ;hu !insertmacro MUI_LANGUAGE "Icelandic" #!insertmacro MUI_LANGUAGE "Igbo" !insertmacro MUI_LANGUAGE "Indonesian" ;in !insertmacro MUI_LANGUAGE "Irish" !insertmacro MUI_LANGUAGE "Italian" ;it !insertmacro MUI_LANGUAGE "Japanese" ;ja #!insertmacro MUI_LANGUAGE "Khmer" !insertmacro MUI_LANGUAGE "Korean" ;ko !insertmacro MUI_LANGUAGE "Kurdish" !insertmacro MUI_LANGUAGE "Latvian" ;lv !insertmacro MUI_LANGUAGE "Lithuanian" ;lt !insertmacro MUI_LANGUAGE "Luxembourgish" !insertmacro MUI_LANGUAGE "Macedonian" ;mk #!insertmacro MUI_LANGUAGE "Malagasy" !insertmacro MUI_LANGUAGE "Malay" ;ms !insertmacro MUI_LANGUAGE "Mongolian" !insertmacro MUI_LANGUAGE "Norwegian" ;no !insertmacro MUI_LANGUAGE "NorwegianNynorsk" !insertmacro MUI_LANGUAGE "Polish" ;pl !insertmacro MUI_LANGUAGE "Portuguese" ;pt !insertmacro MUI_LANGUAGE "PortugueseBR" ;pt_BR !insertmacro MUI_LANGUAGE "Romanian" ;ro !insertmacro MUI_LANGUAGE "Russian" ;ru !insertmacro MUI_LANGUAGE "Serbian" !insertmacro MUI_LANGUAGE "SerbianLatin" #!insertmacro MUI_LANGUAGE "Sesotho" !insertmacro MUI_LANGUAGE "SimpChinese" ;zh_CN !insertmacro MUI_LANGUAGE "Slovak" ;sk !insertmacro MUI_LANGUAGE "Slovenian" ;sl !insertmacro MUI_LANGUAGE "Spanish" ;es !insertmacro MUI_LANGUAGE "SpanishInternational" #!insertmacro MUI_LANGUAGE "Swahili" !insertmacro MUI_LANGUAGE "Swedish" ;sv #!insertmacro MUI_LANGUAGE "Tamil" !insertmacro MUI_LANGUAGE "Thai" ;th !insertmacro MUI_LANGUAGE "TradChinese" ;zh_TW !insertmacro MUI_LANGUAGE "Turkish" ;tr #!insertmacro MUI_LANGUAGE "Twi" !insertmacro MUI_LANGUAGE "Ukrainian" ;uk #!insertmacro MUI_LANGUAGE "Uyghur" !insertmacro MUI_LANGUAGE "Uzbek" !insertmacro MUI_LANGUAGE "Vietnamese" ;vn !insertmacro MUI_LANGUAGE "Welsh" ;cy #!insertmacro MUI_LANGUAGE "Yoruba" #!insertmacro MUI_LANGUAGE "Zulu" ; MUI end ------ Name $APP_NAME !ifdef BUILD_UNINSTALLER OutFile "UninstallerGenerator.exe" !else !pragma warning disable 6020 ; Disable warning: Uninstaller script code found but WriteUninstaller never used - no uninstaller will be created !ifdef BUILD_X64_VERSION OutFile "MEGAcmdSetup64.exe" !else OutFile "MEGAcmdSetup32.exe" !endif !endif InstallDir "$PROGRAMFILES\MEGAcmd" InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" ShowInstDetails nevershow ShowUnInstDetails nevershow Function RunFunction ${UAC.CallFunctionAsUser} RunMegaCmd FunctionEnd Function RunMegaCmd Exec "$INSTDIR\MEGAcmdShell.exe" Sleep 2000 FunctionEnd Var Dialog Var WinFspCheckbox Var WinFspCheckboxState Var UninstallWinFspCheckbox Var WinFspAlreadyInstalled Var KeepWinFspAtUninstall Var WinFspGuid Var WinFspVer Function WinFspPage ${If} $WinFspAlreadyInstalled == "True" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "KeepWinFspAtUninstall" "True" Abort ${EndIf} nsDialogs::Create 1018 Pop $Dialog ${If} $Dialog == error Abort ${EndIf} ${NSD_CreateLabel} 0 10u 100% 12u "${PRODUCT_NAME} includes a feature feature called FUSE." ${NSD_CreateLabel} 0 22u 100% 24u "FUSE allows you to view the content of your MEGA folders on your computer without the need to download them. In order for FUSE to work, you need to install WinFSP." ${NSD_CreateCheckbox} 0 54u 100% 12u "Install WinFSP" Pop $WinFspCheckbox ${NSD_CreateLabel} 0 74u 100% 24u "If you don't install WinFSP now, you won't be able to establish FUSE mounts." ${NSD_CreateLabel} 0 98u 100% 24u "Please, tick above checkbox to install it in your system." ${NSD_SetState} $WinFspCheckbox $WinFspCheckboxState nsDialogs::Show FunctionEnd Var PREVIOUS_OUTPATH Function WinFspPageLeave ${NSD_GetState} $WinFspCheckbox $WinFspCheckboxState ReadRegStr $0 ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "KeepWinFspAtUninstall" ${If} $0 == "" ${If} $WinFspCheckboxState == ${BST_CHECKED} StrCpy $KeepWinFspAtUninstall "False" ${Else} StrCpy $KeepWinFspAtUninstall "True" ${EndIf} ${Else} ; In case MEGAcmd was already installed, don't override WinFSP initial installation value StrCpy $KeepWinFspAtUninstall "$0" ${EndIf} WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "KeepWinFspAtUninstall" "$KeepWinFspAtUninstall" ${If} $WinFspCheckboxState == ${BST_CHECKED} strCpy $PREVIOUS_OUTPATH GetOutPath SetOutPath "$TEMP" File "${WinFspInstaller}" SetOutPath $PREVIOUS_OUTPATH ExecWait 'msiexec /i "$TEMP\\${WinFspInstaller}" /qb' Delete "$TEMP\\${WinFspInstaller}" ${EndIf} FunctionEnd Function .onInit !insertmacro MULTIUSER_INIT StrCpy $APP_NAME "${PRODUCT_NAME} ${PRODUCT_VERSION}" !ifdef BUILD_UNINSTALLER WriteUninstaller "$EXEDIR\${UNINSTALLER_NAME}" Quit !endif ;!insertmacro MUI_UNGETLANGUAGE !insertmacro MUI_LANGDLL_DISPLAY ${NSD_SetState} $WinFspCheckbox ${BST_CHECKED} StrCpy $WinFspCheckboxState ${BST_CHECKED} ReadRegStr $0 HKLM "SOFTWARE\Classes\Installer\Dependencies\WinFsp" "" ${If} $0 == "" StrCpy $WinFspAlreadyInstalled "False" ${Else} StrCpy $WinFspAlreadyInstalled "True" ${EndIf} !ifdef BUILD_X64_VERSION ${If} ${RunningX64} ${Else} MessageBox MB_OK "This is an installer for 64-bit MEGAcmd, but you are using a 32-bit Windows. Please, download the 32-bit MEGAcmd version from https://mega.nz/cmd." Quit ${EndIf} !endif ${IfNot} ${AtLeastWin8} MessageBox MB_OK "This MEGAcmd installer is for Windows 8 or above" Quit ${EndIf} UserInfo::GetAccountType pop $0 ${If} $0 != "admin" ;Require admin rights at least in win10; TODO: only ask for this if that's the case MessageBox MB_YESNO "If you would like ${PRODUCT_NAME} to be listed in the installed applications, Admin Privileges are needed. Press Yes to grant that, or No for a plain install." /SD IDNO IDYES elevate IDNO next ${EndIf} elevate: UAC::RunElevated ${Switch} $0 ${Case} 0 ${IfThen} $1 = 1 ${|} Quit ${|} ;User process. The installer has finished. Quit. ${IfThen} $3 <> 0 ${|} ${Break} ${|} ;Admin process, continue the installation ${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user ;MessageBox mb_YesNo|mb_IconExclamation|mb_TopMost|mb_SetForeground "This requires admin privileges, try again" /SD IDNO IDYES uac_tryagain IDNO 0 Quit ${EndIf} ${Case} 1223 ;MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "This requires admin privileges, aborting!" Quit ${Default} MessageBox mb_IconStop|mb_TopMost|mb_SetForeground "This installer requires Administrator privileges. Error $0" Quit ${EndSwitch} Goto next next: !insertmacro DEBUG_MSG "exiting oninit" FunctionEnd Function GetPaths System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_COMMON_APPDATA}, i0)i.r0' strCpy $ALL_USERS_INSTDIR $1 System::Call "advapi32::GetUserName(t .r0, *i ${NSIS_MAX_STRLEN} r1) i.r2" strCpy $USERNAME $0 System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_LOCALAPPDATA}, i0)i.r0' strCpy $CURRENT_USER_INSTDIR $1 ClearErrors FileOpen $0 "$ALL_USERS_INSTDIR\megatmp.M1.txt" w IfErrors done FileWriteUTF16LE $0 "$CURRENT_USER_INSTDIR" FileClose $0 FileOpen $0 "$ALL_USERS_INSTDIR\megatmp.M2.txt" w IfErrors done FileWriteUTF16LE $0 "$USERNAME" FileClose $0 done: FunctionEnd !macro Install3264DLL source target File "${source}" AccessControl::SetFileOwner ${target} "$USERNAME" AccessControl::GrantOnFile ${target} "$USERNAME" "GenericRead + GenericWrite" !macroend Section "Principal" SEC01 !insertmacro DEBUG_MSG "Getting needed information" System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_COMMON_APPDATA}, i0)i.r0' strCpy $ALL_USERS_INSTDIR $1 ${UAC.CallFunctionAsUser} GetPaths readpaths: Sleep 1000 FileOpen $R0 "$ALL_USERS_INSTDIR\megatmp.M1.txt" r IfErrors done FileReadUTF16LE $R0 "$CURRENT_USER_INSTDIR" FileOpen $R1 "$ALL_USERS_INSTDIR\megatmp.M2.txt" r IfErrors done FileReadUTF16LE $R1 "$USERNAME" IfErrors done done: FileClose $R0 FileClose $R1 StrCmp $CURRENT_USER_INSTDIR "" readpaths 0 StrCmp $USERNAME "" readpaths 0 !insertmacro DEBUG_MSG "Checking install mode" Delete "$ALL_USERS_INSTDIR\megatmp.M1.txt" Delete "$ALL_USERS_INSTDIR\megatmp.M2.txt" StrCmp "CurrentUser" $MultiUser.InstallMode currentuser !insertmacro DEBUG_MSG "Install for all" SetShellVarContext all StrCpy $INSTDIR "$ALL_USERS_INSTDIR\MEGAcmd" goto modeselected currentuser: !insertmacro DEBUG_MSG "Install for current user" SetShellVarContext current StrCpy $INSTDIR "$CURRENT_USER_INSTDIR\MEGAcmd" modeselected: !insertmacro DEBUG_MSG "Closing MEGAcmd" ExecDos::exec /DETAILED /DISABLEFSR "taskkill /f /IM MEGAcmdShell.exe" ExecDos::exec /DETAILED /DISABLEFSR "taskkill /f /IM MEGAcmd.exe" ExecDos::exec /DETAILED /DISABLEFSR "taskkill /f /IM MEGAcmdServer.exe" ExecDos::exec /DETAILED /DISABLEFSR "taskkill /f /IM MEGAclient.exe" ExecDos::exec /DETAILED /DISABLEFSR "taskkill /f /IM MEGAcmdUpdater.exe" Sleep 1000 !insertmacro DEBUG_MSG "Installing files" ;SetRebootFlag true SetOverwrite on SetOutPath "$INSTDIR" !ifdef BUILD_X64_VERSION !insertmacro Install3264DLL "${VcRedist64Path}\vcruntime140.dll" "$INSTDIR\vcruntime140.dll" !insertmacro Install3264DLL "${VcRedist64Path}\vcruntime140_1.dll" "$INSTDIR\vcruntime140_1.dll" !insertmacro Install3264DLL "${VcRedist64Path}\msvcp140.dll" "$INSTDIR\msvcp140.dll" !insertmacro Install3264DLL "${VcRedist64Path}\msvcp140_1.dll" "$INSTDIR\msvcp140_1.dll" !insertmacro Install3264DLL "${VcRedist64Path}\msvcp140_2.dll" "$INSTDIR\msvcp140_2.dll" !insertmacro Install3264DLL "${VcRedist64Path}\msvcp140_atomic_wait.dll" "$INSTDIR\msvcp140_atomic_wait.dll" !insertmacro Install3264DLL "${VcRedist64Path}\msvcp140_codecvt_ids.dll" "$INSTDIR\msvcp140_codecvt_ids.dll" !insertmacro Install3264DLL "${VcRedist64Path}\concrt140.dll" "$INSTDIR\concrt140.dll" !insertmacro Install3264DLL "${VcRedist64Path}\vccorlib140.dll" "$INSTDIR\vccorlib140.dll" !insertmacro Install3264DLL "${VcRedist64BasePath}\Microsoft.VC143.OpenMP\vcomp140.dll" "$INSTDIR\vcomp140.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\ucrtbase.dll" "$INSTDIR\ucrtbase.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-utility-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-utility-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-time-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-time-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-string-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-string-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-stdio-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-stdio-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-runtime-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-runtime-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-process-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-process-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-private-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-private-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-multibyte-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-multibyte-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-math-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-math-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-locale-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-locale-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-heap-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-heap-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-filesystem-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-filesystem-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-environment-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-environment-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-convert-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-convert-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-crt-conio-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-conio-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-util-l1-1-0.dll" "$INSTDIR\api-ms-win-core-util-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-timezone-l1-1-0.dll" "$INSTDIR\api-ms-win-core-timezone-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-sysinfo-l1-1-0.dll" "$INSTDIR\api-ms-win-core-sysinfo-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-synch-l1-2-0.dll" "$INSTDIR\api-ms-win-core-synch-l1-2-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-synch-l1-1-0.dll" "$INSTDIR\api-ms-win-core-synch-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-string-l1-1-0.dll" "$INSTDIR\api-ms-win-core-string-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-rtlsupport-l1-1-0.dll" "$INSTDIR\api-ms-win-core-rtlsupport-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-profile-l1-1-0.dll" "$INSTDIR\api-ms-win-core-profile-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-processthreads-l1-1-1.dll" "$INSTDIR\api-ms-win-core-processthreads-l1-1-1.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-processthreads-l1-1-0.dll" "$INSTDIR\api-ms-win-core-processthreads-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-processenvironment-l1-1-0.dll" "$INSTDIR\api-ms-win-core-processenvironment-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-namedpipe-l1-1-0.dll" "$INSTDIR\api-ms-win-core-namedpipe-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-memory-l1-1-0.dll" "$INSTDIR\api-ms-win-core-memory-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-localization-l1-2-0.dll" "$INSTDIR\api-ms-win-core-localization-l1-2-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-libraryloader-l1-1-0.dll" "$INSTDIR\api-ms-win-core-libraryloader-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-interlocked-l1-1-0.dll" "$INSTDIR\api-ms-win-core-interlocked-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-heap-l1-1-0.dll" "$INSTDIR\api-ms-win-core-heap-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-handle-l1-1-0.dll" "$INSTDIR\api-ms-win-core-handle-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-file-l2-1-0.dll" "$INSTDIR\api-ms-win-core-file-l2-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-file-l1-2-0.dll" "$INSTDIR\api-ms-win-core-file-l1-2-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-file-l1-1-0.dll" "$INSTDIR\api-ms-win-core-file-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-errorhandling-l1-1-0.dll" "$INSTDIR\api-ms-win-core-errorhandling-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-debug-l1-1-0.dll" "$INSTDIR\api-ms-win-core-debug-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-datetime-l1-1-0.dll" "$INSTDIR\api-ms-win-core-datetime-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist64BasePath}\api-ms-win-core-console-l1-1-0.dll" "$INSTDIR\api-ms-win-core-console-l1-1-0.dll" !else !insertmacro Install3264DLL "${VcRedist32Path}\vcruntime140.dll" "$INSTDIR\vcruntime140.dll" !insertmacro Install3264DLL "${VcRedist32Path}\msvcp140.dll" "$INSTDIR\msvcp140.dll" !insertmacro Install3264DLL "${VcRedist32Path}\msvcp140_1.dll" "$INSTDIR\msvcp140_1.dll" !insertmacro Install3264DLL "${VcRedist32Path}\msvcp140_2.dll" "$INSTDIR\msvcp140_2.dll" !insertmacro Install3264DLL "${VcRedist32Path}\msvcp140_atomic_wait.dll" "$INSTDIR\msvcp140_atomic_wait.dll" !insertmacro Install3264DLL "${VcRedist32Path}\msvcp140_codecvt_ids.dll" "$INSTDIR\msvcp140_codecvt_ids.dll" !insertmacro Install3264DLL "${VcRedist32Path}\concrt140.dll" "$INSTDIR\concrt140.dll" !insertmacro Install3264DLL "${VcRedist32Path}\vccorlib140.dll" "$INSTDIR\vccorlib140.dll" !insertmacro Install3264DLL "${VcRedist32BasePath}\Microsoft.VC143.OpenMP\vcomp140.dll" "$INSTDIR\vcomp140.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\ucrtbase.dll" "$INSTDIR\ucrtbase.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-utility-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-utility-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-time-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-time-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-string-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-string-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-stdio-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-stdio-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-runtime-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-runtime-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-process-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-process-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-private-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-private-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-multibyte-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-multibyte-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-math-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-math-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-locale-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-locale-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-heap-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-heap-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-filesystem-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-filesystem-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-environment-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-environment-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-convert-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-convert-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-crt-conio-l1-1-0.dll" "$INSTDIR\api-ms-win-crt-conio-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-util-l1-1-0.dll" "$INSTDIR\api-ms-win-core-util-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-timezone-l1-1-0.dll" "$INSTDIR\api-ms-win-core-timezone-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-sysinfo-l1-1-0.dll" "$INSTDIR\api-ms-win-core-sysinfo-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-synch-l1-2-0.dll" "$INSTDIR\api-ms-win-core-synch-l1-2-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-synch-l1-1-0.dll" "$INSTDIR\api-ms-win-core-synch-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-string-l1-1-0.dll" "$INSTDIR\api-ms-win-core-string-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-rtlsupport-l1-1-0.dll" "$INSTDIR\api-ms-win-core-rtlsupport-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-profile-l1-1-0.dll" "$INSTDIR\api-ms-win-core-profile-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-processthreads-l1-1-1.dll" "$INSTDIR\api-ms-win-core-processthreads-l1-1-1.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-processthreads-l1-1-0.dll" "$INSTDIR\api-ms-win-core-processthreads-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-processenvironment-l1-1-0.dll" "$INSTDIR\api-ms-win-core-processenvironment-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-namedpipe-l1-1-0.dll" "$INSTDIR\api-ms-win-core-namedpipe-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-memory-l1-1-0.dll" "$INSTDIR\api-ms-win-core-memory-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-localization-l1-2-0.dll" "$INSTDIR\api-ms-win-core-localization-l1-2-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-libraryloader-l1-1-0.dll" "$INSTDIR\api-ms-win-core-libraryloader-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-interlocked-l1-1-0.dll" "$INSTDIR\api-ms-win-core-interlocked-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-heap-l1-1-0.dll" "$INSTDIR\api-ms-win-core-heap-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-handle-l1-1-0.dll" "$INSTDIR\api-ms-win-core-handle-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-file-l2-1-0.dll" "$INSTDIR\api-ms-win-core-file-l2-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-file-l1-2-0.dll" "$INSTDIR\api-ms-win-core-file-l1-2-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-file-l1-1-0.dll" "$INSTDIR\api-ms-win-core-file-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-errorhandling-l1-1-0.dll" "$INSTDIR\api-ms-win-core-errorhandling-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-debug-l1-1-0.dll" "$INSTDIR\api-ms-win-core-debug-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-datetime-l1-1-0.dll" "$INSTDIR\api-ms-win-core-datetime-l1-1-0.dll" !insertmacro Install3264DLL "${WinRedist32BasePath}\api-ms-win-core-console-l1-1-0.dll" "$INSTDIR\api-ms-win-core-console-l1-1-0.dll" !endif !ifndef BUILD_UNINSTALLER ; if building uninstaller, skip files below ;x86_32 files Delete "$INSTDIR\MEGAcmd.exe" ; delete older name of server Delete "$INSTDIR\mega-history.bat" ; delete older bat SetOutPath "$INSTDIR" SetOverwrite on AllowSkipFiles off !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\MEGAcmdServer.exe" "$INSTDIR\MEGAcmdServer.exe" !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\MEGAclient.exe" "$INSTDIR\MEGAclient.exe" !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\MEGAcmdShell.exe" "$INSTDIR\MEGAcmdShell.exe" !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\MEGAcmdUpdater.exe" "$INSTDIR\MEGAcmdUpdater.exe" !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\avcodec-61.dll" "$INSTDIR\avcodec-61.dll" !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\avformat-61.dll" "$INSTDIR\avformat-61.dll" !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\avutil-59.dll" "$INSTDIR\avutil-59.dll" !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\swscale-8.dll" "$INSTDIR\swscale-8.dll" !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\swresample-5.dll" "$INSTDIR\swresample-5.dll" ;remove old DLLs that we no longer use (some became static; some have later version number) Delete "$INSTDIR\avcodec-57.dll" Delete "$INSTDIR\avcodec-59.dll" Delete "$INSTDIR\avformat-57.dll" Delete "$INSTDIR\avformat-59.dll" Delete "$INSTDIR\avutil-55.dll" Delete "$INSTDIR\avutil-57.dll" Delete "$INSTDIR\swscale-4.dll" Delete "$INSTDIR\swscale-6.dll" Delete "$INSTDIR\swresample-2.dll" Delete "$INSTDIR\swresample-4.dll" Delete "$INSTDIR\libsodium.dll" Delete "$INSTDIR\pdfium.dll" Delete "$INSTDIR\FreeImage.dll" Delete "$INSTDIR\avcodec-58.dll" Delete "$INSTDIR\avformat-58.dll" Delete "$INSTDIR\avutil-56.dll" Delete "$INSTDIR\swscale-5.dll" Delete "$INSTDIR\swresample-3.dll" Delete "$INSTDIR\libcrypto-1_1-x64.dll" Delete "$INSTDIR\libssl-1_1-x64.dll" Delete "$INSTDIR\libcrypto-1_1.dll" Delete "$INSTDIR\libssl-1_1.dll" ; BAT files !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-attr.bat" "$INSTDIR\mega-attr.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-cd.bat" "$INSTDIR\mega-cd.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-confirm.bat" "$INSTDIR\mega-confirm.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-cp.bat" "$INSTDIR\mega-cp.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-debug.bat" "$INSTDIR\mega-debug.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-du.bat" "$INSTDIR\mega-du.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-df.bat" "$INSTDIR\mega-df.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-proxy.bat" "$INSTDIR\mega-proxy.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-export.bat" "$INSTDIR\mega-export.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-find.bat" "$INSTDIR\mega-find.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-get.bat" "$INSTDIR\mega-get.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-help.bat" "$INSTDIR\mega-help.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-https.bat" "$INSTDIR\mega-https.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-webdav.bat" "$INSTDIR\mega-webdav.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-deleteversions.bat" "$INSTDIR\mega-deleteversions.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-transfers.bat" "$INSTDIR\mega-transfers.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-import.bat" "$INSTDIR\mega-import.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-invite.bat" "$INSTDIR\mega-invite.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-ipc.bat" "$INSTDIR\mega-ipc.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-killsession.bat" "$INSTDIR\mega-killsession.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-lcd.bat" "$INSTDIR\mega-lcd.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-log.bat" "$INSTDIR\mega-log.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-login.bat" "$INSTDIR\mega-login.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-logout.bat" "$INSTDIR\mega-logout.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-lpwd.bat" "$INSTDIR\mega-lpwd.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-ls.bat" "$INSTDIR\mega-ls.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-backup.bat" "$INSTDIR\mega-backup.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-mkdir.bat" "$INSTDIR\mega-mkdir.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-mount.bat" "$INSTDIR\mega-mount.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-mv.bat" "$INSTDIR\mega-mv.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-passwd.bat" "$INSTDIR\mega-passwd.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-preview.bat" "$INSTDIR\mega-preview.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-put.bat" "$INSTDIR\mega-put.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-pwd.bat" "$INSTDIR\mega-pwd.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-quit.bat" "$INSTDIR\mega-quit.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-reload.bat" "$INSTDIR\mega-reload.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-rm.bat" "$INSTDIR\mega-rm.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-session.bat" "$INSTDIR\mega-session.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-share.bat" "$INSTDIR\mega-share.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-showpcr.bat" "$INSTDIR\mega-showpcr.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-signup.bat" "$INSTDIR\mega-signup.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-speedlimit.bat" "$INSTDIR\mega-speedlimit.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-sync.bat" "$INSTDIR\mega-sync.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-exclude.bat" "$INSTDIR\mega-exclude.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-thumbnail.bat" "$INSTDIR\mega-thumbnail.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-userattr.bat" "$INSTDIR\mega-userattr.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-users.bat" "$INSTDIR\mega-users.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-version.bat" "$INSTDIR\mega-version.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-whoami.bat" "$INSTDIR\mega-whoami.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-cat.bat" "$INSTDIR\mega-cat.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-tree.bat" "$INSTDIR\mega-tree.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-mediainfo.bat" "$INSTDIR\mega-mediainfo.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-graphics.bat" "$INSTDIR\mega-graphics.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-ftp.bat" "$INSTDIR\mega-ftp.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-cancel.bat" "$INSTDIR\mega-cancel.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-confirmcancel.bat" "$INSTDIR\mega-confirmcancel.bat" !insertmacro Install3264DLL "${SRCDIR_BATFILES}\mega-errorcode.bat" "$INSTDIR\mega-errorcode.bat" ; Uninstaller ;!ifndef BUILD_UNINSTALLER ; if building uninstaller, skip this check !insertmacro Install3264DLL "${SRCDIR_MEGACMD}\${UNINSTALLER_NAME}" "$INSTDIR\${UNINSTALLER_NAME}" !endif !insertmacro DEBUG_MSG "Creating shortcuts" SetRebootFlag false StrCmp "CurrentUser" $MultiUser.InstallMode currentuser2 SetShellVarContext all !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MEGAcmd.lnk" "$INSTDIR\MEGAcmdShell.exe" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MEGAcmdServer.lnk" "$INSTDIR\MEGAcmdServer.exe" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Update MEGAcmd.lnk" "$INSTDIR\MEGAcmdUpdater.exe" CreateShortCut "$DESKTOP\MEGAcmd.lnk" "$INSTDIR\MEGAcmdShell.exe" WriteIniStr "$INSTDIR\MEGA Website.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MEGA Website.lnk" "$INSTDIR\MEGA Website.url" "" "$INSTDIR\MEGAcmdShell.exe" 1 CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall MEGAcmd.lnk" "$INSTDIR\${UNINSTALLER_NAME}" !insertmacro MUI_STARTMENU_WRITE_END goto modeselected2 currentuser2: SetShellVarContext current !insertmacro MUI_STARTMENU_WRITE_BEGIN Application CreateDirectory "$SMPROGRAMS\$ICONS_GROUP" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MEGAcmd.lnk" "$INSTDIR\MEGAcmdShell.exe" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MEGAcmdServer.lnk" "$INSTDIR\MEGAcmdServer.exe" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Update MEGAcmd.lnk" "$INSTDIR\MEGAcmdUpdater.exe" CreateShortCut "$DESKTOP\MEGAcmd.lnk" "$INSTDIR\MEGAcmdShell.exe" WriteIniStr "$INSTDIR\MEGA Website.url" "InternetShortcut" "URL" "${PRODUCT_WEB_SITE}" CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\MEGA Website.lnk" "$INSTDIR\MEGA Website.url" "" "$INSTDIR\MEGAcmdShell.exe" 1 CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\Uninstall MEGAcmd.lnk" "$INSTDIR\${UNINSTALLER_NAME}" !insertmacro MUI_STARTMENU_WRITE_END modeselected2: SectionEnd Section -AdditionalIcons SectionEnd Section -Post WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\MEGAcmdShell.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "${PRODUCT_NAME}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\${UNINSTALLER_NAME}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\MEGAcmdShell.exe" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}" WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}" AccessControl::SetFileOwner "$INSTDIR\MEGA Website.url" "$USERNAME" AccessControl::GrantOnFile "$INSTDIR\MEGA Website.url" "$USERNAME" "GenericRead + GenericWrite" SectionEnd Function un.onInit !insertmacro MULTIUSER_UNINIT StrCpy $APP_NAME "${PRODUCT_NAME}" ReadIniStr $0 "$ExeDir\${MEGA_DATA}" UAC first ${IF} $0 <> 1 ;SetSilent silent InitPluginsDir WriteIniStr "$PluginsDir\${MEGA_DATA}" UAC first 1 CopyFiles /SILENT "$EXEPATH" "$PluginsDir\${UNINSTALLER_NAME}" ExecWait '"$PluginsDir\${UNINSTALLER_NAME}" _?=$INSTDIR' $0 SetErrorLevel $0 Quit ${EndIf} !insertmacro MUI_UNGETLANGUAGE FunctionEnd Function un.UninstallCmd ExecDos::exec "$INSTDIR\MEGAcmdServer.exe --uninstall" FunctionEnd Function un.WinFspUninstall !insertmacro MUI_HEADER_TEXT "Uninstallation complete" "${PRODUCT_NAME} was uninstalled successfully" ${If} $KeepWinFspAtUninstall == "True" Abort ${EndIf} ReadRegStr $WinFspGuid HKLM "SOFTWARE\Classes\Installer\Dependencies\WinFsp" "" ${If} $WinFspGuid == "" Abort ${EndIf} ReadRegStr $WinFspVer HKLM "SOFTWARE\Classes\Installer\Dependencies\WinFsp" "Version" ; TODO: improvement abort in case Version differs from the one installed by MEGAcmd nsDialogs::Create 1018 Pop $Dialog ${If} $Dialog == error Abort ${EndIf} ${NSD_CreateLabel} 0 10u 100% 12u "WinFsp $WinFspVer was installed by ${PRODUCT_NAME} to support some features." ${NSD_CreateLabel} 0 22u 100% 24u "Do you also want to uninstall WinFsp?" ${NSD_CreateCheckbox} 0 54u 100% 12u "Uninstall WinFsp" Pop $UninstallWinFspCheckbox ${NSD_SetState} $UninstallWinFspCheckbox ${BST_CHECKED} nsDialogs::Show FunctionEnd Function un.WinFspUninstallLeave ${NSD_GetState} $UninstallWinFspCheckbox $WinFspCheckboxState ${If} $WinFspCheckboxState == ${BST_CHECKED} ExecWait 'msiexec /uninstall $WinFspGuid /qb' ${EndIf} FunctionEnd Section Uninstall ExecDos::exec /DETAILED "taskkill /f /IM MEGAcmdShell.exe" ExecDos::exec /DETAILED "taskkill /f /IM MEGAclient.exe" ExecDos::exec /DETAILED "taskkill /f /IM MEGAcmd.exe" ExecDos::exec /DETAILED "taskkill /f /IM MEGAcmdServer.exe" ExecDos::exec /DETAILED "taskkill /f /IM MEGAcmdUpdater.exe" Sleep 1000 ${UAC.CallFunctionAsUser} un.UninstallCmd Sleep 1000 !insertmacro MUI_STARTMENU_GETFOLDER "Application" $ICONS_GROUP Delete "$INSTDIR\${PRODUCT_NAME}.url" Delete "$INSTDIR\${UNINSTALLER_NAME}" ;VC++ Redistributable Delete "$INSTDIR\vcruntime140.dll" Delete "$INSTDIR\vcruntime140_1.dll" Delete "$INSTDIR\msvcp140.dll" Delete "$INSTDIR\msvcp140_1.dll" Delete "$INSTDIR\msvcp140_2.dll" Delete "$INSTDIR\msvcp140_codecvt_ids.dll" Delete "$INSTDIR\msvcp140_atomic_wait.dll" Delete "$INSTDIR\concrt140.dll" Delete "$INSTDIR\vccorlib140.dll" Delete "$INSTDIR\vcomp140.dll" Delete "$INSTDIR\ucrtbase.dll" Delete "$INSTDIR\api-ms-win-crt-utility-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-time-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-string-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-stdio-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-runtime-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-process-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-private-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-multibyte-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-math-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-locale-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-heap-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-filesystem-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-environment-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-convert-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-crt-conio-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-util-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-timezone-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-sysinfo-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-synch-l1-2-0.dll" Delete "$INSTDIR\api-ms-win-core-synch-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-string-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-rtlsupport-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-profile-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-processthreads-l1-1-1.dll" Delete "$INSTDIR\api-ms-win-core-processthreads-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-processenvironment-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-namedpipe-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-memory-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-localization-l1-2-0.dll" Delete "$INSTDIR\api-ms-win-core-libraryloader-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-interlocked-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-heap-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-handle-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-file-l2-1-0.dll" Delete "$INSTDIR\api-ms-win-core-file-l1-2-0.dll" Delete "$INSTDIR\api-ms-win-core-file-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-errorhandling-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-debug-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-datetime-l1-1-0.dll" Delete "$INSTDIR\api-ms-win-core-console-l1-1-0.dll" ;Common files Delete "$INSTDIR\MEGAcmdUpdater.exe" Delete "$INSTDIR\MEGAcmdServer.exe" Delete "$INSTDIR\MEGAcmd.exe" Delete "$INSTDIR\MEGAcmdShell.exe" Delete "$INSTDIR\MEGAclient.exe" Delete "$INSTDIR\libeay32.dll" Delete "$INSTDIR\ssleay32.dll" Delete "$INSTDIR\libcurl.dll" Delete "$INSTDIR\cares.dll" Delete "$INSTDIR\libuv.dll" Delete "$INSTDIR\NSIS.Library.RegTool*.exe" Delete "$INSTDIR\avcodec-61.dll" Delete "$INSTDIR\avformat-61.dll" Delete "$INSTDIR\avutil-59.dll" Delete "$INSTDIR\swscale-8.dll" Delete "$INSTDIR\swresample-5.dll" ;!ifdef BUILD_X64_VERSION Delete "$INSTDIR\libssl-3-x64.dll" Delete "$INSTDIR\libcrypto-3-x64.dll" ;!else Delete "$INSTDIR\libcrypto-3.dll" Delete "$INSTDIR\libssl-3.dll" ;!endif ;Still remove old DLLs though we no longer produce them (non-VCPKG may still produce them) Delete "$INSTDIR\avcodec-57.dll" Delete "$INSTDIR\avformat-57.dll" Delete "$INSTDIR\avutil-55.dll" Delete "$INSTDIR\swscale-4.dll" Delete "$INSTDIR\swresample-2.dll" Delete "$INSTDIR\libsodium.dll" Delete "$INSTDIR\pdfium.dll" Delete "$INSTDIR\FreeImage.dll" Delete "$INSTDIR\libcrypto-1_1-x64.dll" Delete "$INSTDIR\libssl-1_1-x64.dll" Delete "$INSTDIR\libcrypto-1_1.dll" Delete "$INSTDIR\libssl-1_1.dll" Delete "$INSTDIR\avcodec-58.dll" Delete "$INSTDIR\avformat-58.dll" Delete "$INSTDIR\avutil-56.dll" Delete "$INSTDIR\swscale-5.dll" Delete "$INSTDIR\swresample-3.dll" Delete "$INSTDIR\avcodec-59.dll" Delete "$INSTDIR\avformat-59.dll" Delete "$INSTDIR\avutil-57.dll" Delete "$INSTDIR\swscale-6.dll" Delete "$INSTDIR\swresample-4.dll" ; BAT files Delete "$INSTDIR\mega-attr.bat" Delete "$INSTDIR\mega-cd.bat" Delete "$INSTDIR\mega-confirm.bat" Delete "$INSTDIR\mega-cp.bat" Delete "$INSTDIR\mega-debug.bat" Delete "$INSTDIR\mega-du.bat" Delete "$INSTDIR\mega-df.bat" Delete "$INSTDIR\mega-proxy.bat" Delete "$INSTDIR\mega-export.bat" Delete "$INSTDIR\mega-find.bat" Delete "$INSTDIR\mega-get.bat" Delete "$INSTDIR\mega-help.bat" Delete "$INSTDIR\mega-history.bat" Delete "$INSTDIR\mega-https.bat" Delete "$INSTDIR\mega-webdav.bat" Delete "$INSTDIR\mega-deleteversions.bat" Delete "$INSTDIR\mega-transfers.bat" Delete "$INSTDIR\mega-import.bat" Delete "$INSTDIR\mega-invite.bat" Delete "$INSTDIR\mega-ipc.bat" Delete "$INSTDIR\mega-killsession.bat" Delete "$INSTDIR\mega-lcd.bat" Delete "$INSTDIR\mega-log.bat" Delete "$INSTDIR\mega-login.bat" Delete "$INSTDIR\mega-logout.bat" Delete "$INSTDIR\mega-lpwd.bat" Delete "$INSTDIR\mega-ls.bat" Delete "$INSTDIR\mega-backup.bat" Delete "$INSTDIR\mega-mkdir.bat" Delete "$INSTDIR\mega-mount.bat" Delete "$INSTDIR\mega-mv.bat" Delete "$INSTDIR\mega-passwd.bat" Delete "$INSTDIR\mega-preview.bat" Delete "$INSTDIR\mega-put.bat" Delete "$INSTDIR\mega-pwd.bat" Delete "$INSTDIR\mega-quit.bat" Delete "$INSTDIR\mega-reload.bat" Delete "$INSTDIR\mega-rm.bat" Delete "$INSTDIR\mega-session.bat" Delete "$INSTDIR\mega-share.bat" Delete "$INSTDIR\mega-showpcr.bat" Delete "$INSTDIR\mega-signup.bat" Delete "$INSTDIR\mega-speedlimit.bat" Delete "$INSTDIR\mega-sync.bat" Delete "$INSTDIR\mega-exclude.bat" Delete "$INSTDIR\mega-thumbnail.bat" Delete "$INSTDIR\mega-userattr.bat" Delete "$INSTDIR\mega-users.bat" Delete "$INSTDIR\mega-version.bat" Delete "$INSTDIR\mega-whoami.bat" Delete "$INSTDIR\mega-cat.bat" Delete "$INSTDIR\mega-tree.bat" Delete "$INSTDIR\mega-mediainfo.bat" Delete "$INSTDIR\mega-graphics.bat" Delete "$INSTDIR\mega-ftp.bat" Delete "$INSTDIR\mega-cancel.bat" Delete "$INSTDIR\mega-confirmcancel.bat" Delete "$INSTDIR\mega-errorcode.bat" ; Cache RMDir /r "$INSTDIR\.megaCmd" ReadRegStr $KeepWinFspAtUninstall ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "KeepWinFspAtUninstall" SetShellVarContext current Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall MEGAcmd.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\MEGA Website.lnk" Delete "$INSTDIR\MEGA Website.url" Delete "$DESKTOP\MEGAcmd.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\MEGAcmd.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\MEGAcmdServer.lnk" System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_STARTUP}, i0)i.r0' Delete "$1\MEGAcmd.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP" RMDir "$INSTDIR" SetShellVarContext all Delete "$SMPROGRAMS\$ICONS_GROUP\Uninstall MEGAcmd.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\MEGA Website.lnk" Delete "$INSTDIR\MEGA Website.url" Delete "$DESKTOP\MEGAcmd.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\MEGAcmd.lnk" Delete "$SMPROGRAMS\$ICONS_GROUP\MEGAcmdServer.lnk" System::Call 'shell32::SHGetSpecialFolderPath(i $HWNDPARENT, t .r1, i ${CSIDL_STARTUP}, i0)i.r0' Delete "$1\MEGAcmd.lnk" RMDir "$SMPROGRAMS\$ICONS_GROUP" RMDir "$INSTDIR" DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" SetAutoClose true SetRebootFlag false SectionEnd MEGAcmd-2.5.2_Linux/build/make_installers.cmd000066400000000000000000000033661516543156300210560ustar00rootroot00000000000000IF "%1%" EQU "-help" ( goto Usage ) SET SUFFIX_DEF= if not "%MEGA_VERSION_SUFFIX%" == "" ( SET SUFFIX_DEF=/DVERSION_SUFFIX=%MEGA_VERSION_SUFFIX% ) SET MEGA_SIGN=%1 :: DOUBLE CHECK SIGN IF "%MEGA_SIGN%" EQU "sign" ( echo "Info: Signed installer(s) will be generated. Checking if sources are signed" "C:\Program Files (x86)\Windows Kits\10\bin\%MEGA_WIN_KITVER%\x64\signtool.exe" verify /pa built64/*.exe || exit 1 /b "C:\Program Files (x86)\Windows Kits\10\bin\%MEGA_WIN_KITVER%\x64\signtool.exe" verify /pa built64/*.dll || exit 1 /b IF NOT "%MEGA_SKIP_32_BIT_BUILD%" == "true" ( "C:\Program Files (x86)\Windows Kits\10\bin\%MEGA_WIN_KITVER%\x64\signtool.exe" verify /pa built32/*.exe || exit 1 /b "C:\Program Files (x86)\Windows Kits\10\bin\%MEGA_WIN_KITVER%\x64\signtool.exe" verify /pa built32/*.dll || exit 1 /b ) ) ELSE ( IF "%MEGA_SIGN%" EQU "nosign" ( echo "Info: Unsigned installer(s) will be generated" ) ELSE ( echo "Please add a correct sign argument: sign or nosign" goto Usage ) ) erase MEGAcmdSetup64.exe 2>nul erase MEGAcmdSetup64_unsigned.exe 2>nul "C:\Program Files (x86)\NSIS\makensis.exe" /DWINKITVER=%MEGA_WIN_KITVER% /DBUILD_X64_VERSION %SUFFIX_DEF% installer_win.nsi || exit 1 /b IF "%MEGA_SIGN%" EQU "nosign" ( ren MEGAcmdSetup64.exe MEGAcmdSetup64_unsigned.exe ) IF "%MEGA_SKIP_32_BIT_BUILD%" == "true" ( GOTO :EOF ) erase MEGAcmdSetup32.exe >nul erase MEGAcmdSetup32_unsigned.exe >nul "C:\Program Files (x86)\NSIS\makensis.exe" /DWINKITVER=%MEGA_WIN_KITVER% %SUFFIX_DEF% installer_win.nsi || exit 1 /b IF "%MEGA_SIGN%" EQU "nosign" ( ren MEGAcmdSetup32.exe MEGAcmdSetup32_unsigned.exe ) exit /B :Usage echo "Usage: %~0 [-help] [sign|nosign]" echo Script for making the installer, expecting files in built folders" exit 2 /b MEGAcmd-2.5.2_Linux/build/make_uninstallers.cmd000066400000000000000000000012361516543156300214130ustar00rootroot00000000000000SET SUFFIX_DEF= if not "%MEGA_VERSION_SUFFIX%" == "" ( SET SUFFIX_DEF=/DVERSION_SUFFIX=%MEGA_VERSION_SUFFIX% ) "C:\Program Files (x86)\NSIS\makensis.exe" /DWINKITVER=%MEGA_WIN_KITVER% /DBUILD_UNINSTALLER /DBUILD_X64_VERSION %SUFFIX_DEF% installer_win.nsi || exit 1 /b UninstallerGenerator.exe erase UninstallerGenerator.exe copy uninst.exe built64 move uninst.exe sign64 IF "%MEGA_SKIP_32_BIT_BUILD%" == "true" ( GOTO :EOF ) "C:\Program Files (x86)\NSIS\makensis.exe" /DWINKITVER=%MEGA_WIN_KITVER% /DBUILD_UNINSTALLER %SUFFIX_DEF% installer_win.nsi || exit 1 /b UninstallerGenerator.exe erase UninstallerGenerator.exe copy uninst.exe built32 move uninst.exe sign32 MEGAcmd-2.5.2_Linux/build/megacmd/000077500000000000000000000000001516543156300166015ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/megacmd/debian.changelog000066400000000000000000000354241516543156300217040ustar00rootroot00000000000000megacmd (2.5.2) stable; urgency=low * Fix: address potential loop in sync engine with mtime changes within 2 seconds -- MEGA Team Wed, 08 Apr 2026 12:00:00 +0200 megacmd (2.5.1) stable; urgency=low * Fixed syncrhonizing updated empty files * WSL bash completion speedup -- MEGA Team Tue, 24 Mar 2026 09:36:34 +0100 megacmd (2.5.0) stable; urgency=low * Shell UX improvements: empty Enter shows a new prompt; no duplicate prompt while command is executing * Sync engine improvements: prevent re-uploading data when local drive fingerprint has changed * put: Fixed -c (autocreate) not working when destination is an absolute path * mediainfo: Fixed audio file duration not being displayed * Transfers: prevent failures on resumption * thumbnail/preview: Print error when the requested file does not exist * share: Return success (exit code 0) when no shares exist below the current folder * passwd: fixes issues when 2FA is enabled * Path and string handling fixes (trailing separators, trimming) * Expanded unit test coverage * Fix: Improved restart-after-update reliability on POSIX (server PID changes after update) * Stability, memory, typos and other improvements -- MEGA Team Wed, 11 Mar 2026 10:36:46 +0000 megacmd (2.4.0) stable; urgency=low * Improvements in uploads UX/UI: put now supports printing tag. Fixes in transfers table * Stability improvements: crashes fixes, FUSE deadlocks, ... * Performance boosts: lockless download URL retrievals, removed CPU bottlenecks for large accounts processing, db operations improvements, transfers improvements ... * Typos and other improvements -- MEGA Team Tue, 16 Dec 2025 17:14:03 +0100 megacmd (2.3.0) stable; urgency=low * FUSE (beta): Added fuse commands on Windows to allow your MEGA folders to be directly mounted to your local drive * Other fixes and improvements to enhance reliability and performance -- MEGA Team Tue, 02 Sep 2025 16:43:10 +0200 megacmd (2.2.0) stable; urgency=low * Support building for ARM64 in linux * New command "configure" to allow configuring some settings * Support setting max number of nodes in memory * Support setting number of SDK instances used for login in folders to download/import * Other fixes and improvements to enhance reliability and performance -- MEGA Team Tue, 03 Jun 2025 23:20:12 +0200 megacmd (2.1.1) stable; urgency=low * FUSE (beta): Added fuse commands on Linux to allow your MEGA folders to be directly mounted to your local drive * Delayed sync uploads: Introduced a mechanism to delay to frequently changed sync uploads, and the sync-config command * Logging: Messages are now printed in standard error, the rotating logger is now configurable and more verbose by default, passwords are now redacted from the logs, and other fixes and refinements * Fixed a crash when auto-completing a local folder that doesn't exist * Fixed the confirmcancel command incorrectly reporting failure on success * Extended speedlimit command to allow increasing max connections * Other fixes and improvements to enhance reliability and performance -- MEGA Team Wed, 02 Apr 2025 11:08:20 +0200 megacmd (2.0.0) stable; urgency=low * New Sync Engine: See sync-issues and sync-ignore commands * Rotating Logger: Introduced a robust rotating logging system across all platforms for better performance and debugging * Platform-specific enhancements: Addressed various file descriptor issues on Linux and macOS, and improved non-ascii support on Windows * Improved overall reliability: Fixed memory leaks, resolved potential data races, and eliminated deadlock scenarios * Fixed an issue when handling double-quoted arguments * Various fixes and refinements to enhance usability and performance -- MEGA Team Fri, 24 Jan 2025 13:20:06 +0100 megacmd (1.7.0) stable; urgency=low * Improved startup time * Reduced memory consumption: cached metadata is no longer loaded at startup * Fixes and improvements in whoami, ls, backup and export commands * Fixed several memory leaks and improved overall memory consumption * Fixed file permissions on Unix * Added support for the Apple silicon (M1) * Many other fixes and improvements -- MEGA Team Mon, 20 May 2024 14:07:19 +0200 megacmd (1.6.3) stable; urgency=low * Improvements in session resumption * Fixes for undecryptable nodes * Stability and preformance fixes -- MEGA Team Thu, 04 May 2023 16:18:29 +0200 megacmd (1.6.1) stable; urgency=low * Support login into a password protected link * Ease establishing shares * Fixes in tranfer resumption * Fixes in password protected links * Improvements shares management -- MEGA Team Fri, 24 Mar 2023 13:02:52 +0100 megacmd (1.6.0) stable; urgency=low * Improvements in "find" to search by type, or print only handles (to ease automation) * Improved state management and reporting in synchronizations * Improved information on shares * Improvements in "attr" * Security adjustments * Other fixes and adjustments -- MEGA Team Wed, 01 Mar 2023 13:26:37 +0100 megacmd (1.5.1) stable; urgency=low * Security adjustments -- MEGA Team Wed, 15 Jun 2022 17:55:34 +0200 megacmd (1.5.0) stable; urgency=low * Add support for pdfs (uploading them will create thumbnails/previews) * Improve communications with server in POSIX: no longer create multiple sockets * Support resuming session when logged into a folder * Renew and improve sync management and improve status reporting * Commands sync and transfers now allow for selecting --output-cols * Add creation time to ls * Fix issue running from php (due to a dangling file descriptor) * Fix several crashes, leaks and major performance improvements * Other fixes & adjustments -- MEGA Team Fri, 3 Dec 2021 13:44:32 +0100 megacmd (1.4.1) stable; urgency=low * Fix issues with backups timestamps in Raspbian and other OS * Allow uploads when reached bandwidth overquota * Fix for syncing mounted drives in Windows * Fix issues in sync resumption for MacOS * Improvements in filename escaping * Improvements in transfers cancellation * Improve uploads stalling in Windows * Fix crash in MEGAcmd shell when typing CTRL+D while inserting 2FA code * Warn incoming Windows XP deprecation * Improvements in information messages * Fix issues with too long paths in MEGAcmd server * Prepare for over storage quota announcements * Other fixes & adjustments -- MEGA Team Thu, 22 Oct 2020 13:21:02 +0200 megacmd (1.4.0) stable; urgency=low * Fix issues with backups timestamps in Raspbian and other OS * Allow uploads when reached bandwidth overquota * Fix for syncing mounted drives in Windows * Fix issues in sync resumption for MacOS * Improvements in filename escaping * Improvements in transfers cancellation * Improve uploads stalling in Windows * Fix crash in MEGAcmd shell when typing CTRL+D while inserting 2FA code * Warn incoming Windows XP deprecation * Improvements in information messages * Fix issues with too long paths in MEGAcmd server * Prepare for over storage quota announcements * Other fixes & adjustments -- MEGA Team Fri, 21 Aug 2020 17:54:49 +0200 megacmd (1.3.0) stable; urgency=low * Fix --path-display-size for commands that use it and improve display for "transfer" & "sync" * Support for blocked accounts with instructions to unblock them * Fix crash in libcryptopp for Ubuntu 19.10 and onwards * Fix issues with failed transfers * Fix trailing separator issue for local path in "put" * Speed up sync engine startup for windows * Other fixes & adjustments -- MEGA Team Mon, 22 Jun 2020 19:08:17 +0200 megacmd (1.2.0) stable; urgency=low * "put" now supports wildcard expressions * support setting a proxy with "proxy" command * add support for addressing inshares with //from/ * support for files/folders within public links * minor fix for ls --tree autocompletion * discard flags/options after "--" * --show-handles option added in ls & find * files/folders can be addressed using their handle H:XXXXXXX * support new links format * fixes in reported used storage * fix crash in find command * do not consider inshares for version storage used * win installer: do not ask for elevate permissions when running in silent mode * improved columned outputs to maximize screen use (syncs & transfers) * improve responsiveness at startup in interactive mode, to avoid hangs when session does not resumeAdded mode while logging in that allows certain actions (like setting a proxy) * non-interactive mode will not wait for commands that can be addressed before the session is resumed * speedup cancellation/startup of a huge number of transfers * cloud raid support * speedup improvements in cache and other CPU bottlenecks * many more fixes & adjustments -- MEGA Team Mon, 22 Jun 2020 19:06:13 +0200 megacmd (1.1.0) stable; urgency=low * added "cat" command to read text files (and potentially stream any file) * added update capabilities for Windows & MacOS (automatic updates are enabled by default) * added "media-info" command to show some information of multimedia files * added "df" command to show storage info * added tree-like listing command: "tree" or "ls --tree" * shown progress in non-interactive mode * improvements in progress and transfers results information * width output adjustments in non-interactive mode * output streamed partially from server to clients * added --time-format option to commands displaying times, to allow other formats * 2FA login auth code can be passed as parameter now * transfer now differentiate backup transfers * backup command completion for local paths now only looks for folders * backup transfers are no longer cached (no reason to: backups are considered failed in such case) * backup fix some halts and output improvements * added Public Service Announcements (PSA) support * killsession now allows multiple parameters * fix "clear" in some linuxes * add support for spaces in password prompts * many more minor fixes & adjustments -- MEGA Team Tue, 26 Mar 2019 10:52:57 +0100 megacmd (1.0.0) stable; urgency=low * added FTP beta support (See "ftp") * renew path parsing & improved completion with special characters * fix truncated redirected output in MacOS * added support for account cancellation. (See "cancel") * cp now allows multiple source paths and regular expressions * du path display size variable now * output error code always positive now * new command "errorcode" to translate error code into string * allow password protected links for PRO users * password changing no longer requires old one * webdav now allows stopping serving all locations * added "graphics" command to turn off thumbnails/previews generation * support login and password change using 2FA * limit one instance of server * many more minor fixes & adjustments -- MEGA Team Fri, 07 Sep 2018 14:00:51 +0200 megacmd (0.9.9) stable; urgency=low * Webdav: Serve a MEGA location as a WEBDAV server. * Streaming: Webdav command can also be used for HTTP(S) streaming. * Added thumbnails for video files. * Listing -l now list unix-like columned summary (extended info is now -a) * du & ls -v is now --versions * Fixed --mtime restrictions in find * Added support for compiling in NAS systems * Minor fixes & adjustements -- MEGA Team Tue, 27 Mar 2018 18:37:30 +0200 megacmd (0.9.8) stable; urgency=low * Backups: added the possibility to configure periodic backups * Full version support: listing, see space ocupied, accessing, copying, removing, ... * Added "deleteversions" command to remove versions (all or by path) * Permissions: you can change default permission for files and folders * Persistence of settings: speedlimit, permissions, https * Speedlimit takes units and allows human-readable output * Support for video metadata * Minor fixes and doc improvements -- MEGA Team Thu, 18 Jan 2018 19:15:35 +0100 megacmd (0.9.7) stable; urgency=low * Faster scanning of files * Improved the management of deleted files * Bug fixes and other minor improvements -- MEGA Team Mon, 11 Dec 2017 18:43:46 +0100 megacmd (0.9.6) stable; urgency=low * Added transfer resumption * Added file versioning for modified files(webclient can browse them) * Added time and size constrains for find * Reformated sync output * Added exclusions to syncs. Default: .* ~* desktop.ini Thumbs.db * Fixed detection of invalid TIMEVAL when no unit specified * Improved sync display format * Fix some "get" cases with "/" involved in Windows * Fix in email validation * Fix segfault in userattr * Added "--in" & "--out" to showpcr * Added masterkey command to show master key * All/None options in confirmation for deletion * Added multi-transfer progress (one single progress bar) * Fix mkdir loop * Minor fixes and improvements in error management * beautify whoami -l and added storage used by versions * Changed name for server in windows to MEGAcmdServer.exe -- MEGA Team Fri, 10 Nov 2017 14:36:44 +0100 megacmd (0.9.4) stable; urgency=low * Separated MEGAcmd into interactive shell (MEGAcmdShell) and server(MEGAcmdServer) * Added transfers management with "transfer" command * Uploads and downloads now support background mode with "-q" * Added confirmation on folder removal (interactive & non-interactive modes) * PCRE are now optional if available in all the commands with "--use-pcre" * Server initiated automatically in interactive and non-interactive mode * Added unicode support for Windows * Refurbished communications and secured non-interactive mode in Windows * Implemented copy (cp) to user's inbox * Several fixes and commands improvements -- MEGA Team Mon, 28 Aug 2017 18:06:34 +0200 megacmd (0.9.3) stable; urgency=low * fixed mkdir in MacOS * added command "https" to force HTTPS for file transfers * added -n to "users" to show users names * modified greeting * fixed "clear" for Windows * fixed download >4GB files * fixed bug in asynchronous transfers -- MEGA Team Thu, 02 Feb 2017 11:32:38 +0100 megacmd (0.9.1) stable; urgency=low * Initial version of megacmd * Features: * Interactive shell * Non interactive mode * Regular expresions * Contacts management * Public folders management * Files management * Synching -- MEGA Team Tue, 17 Jan 2017 14:22:10 +0100 MEGAcmd-2.5.2_Linux/build/megacmd/debian.compat000066400000000000000000000000021516543156300212200ustar00rootroot000000000000009 MEGAcmd-2.5.2_Linux/build/megacmd/debian.control000066400000000000000000000016511516543156300214300ustar00rootroot00000000000000Source: megacmd Section: Tools Priority: normal Maintainer: MEGA Linux Team Build-Depends: debhelper, wget, libtool, dh-autoreconf, cdbs, libfuse-dev | libfuse3-dev, autoconf, autoconf-archive, nasm, cmake Package: megacmd Architecture: any Depends: ${shlibs:Depends}, apt-transport-https, gpg, procps, fuse Description: MEGA Command Line Interactive and Scriptable Application MEGAcmd provides non UI access to MEGA services. It intends to offer all the functionality with your MEGA account via shell interaction. It features 2 modes of interaction - interactive. A shell to query your actions - scriptable. A way to execute commands from a shell/a script/another program. Package: megacmd-dbg Architecture: any Section: debug Priority: extra Depends: megacmd Description: debugging symbols for megacmd MEGAcmd-2.5.2_Linux/build/megacmd/debian.copyright000066400000000000000000000035411516543156300217600ustar00rootroot00000000000000Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: megacmd Upstream-Contact: Source: https://github.com/meganz/MEGAsync Files: * Copyright: 2013, Mega Limited License: Simplified (2-clause) BSD License ================================ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. The previous applies to all sources and binaries within the SDK save those explicitly distributed under the terms of the GNU General Public License (see http://www.gnu.org/copyleft/gpl.txt for details), and the interactive MEGAcmdShell executables (mega-cmd and MEGAcmdShell.exe), distributed under the aforementioned GNU General Public License. MEGAcmd-2.5.2_Linux/build/megacmd/debian.postinst000066400000000000000000000132741516543156300216370ustar00rootroot00000000000000#!/bin/bash #distro=$(lsb_release -ds) distro="@DISTRO@" #ver=$(lsb_release -rs) ver="@VERSION@" if [[ $distro = "Raspbian GNU/Linux 13"* ]]; then str="Debian_13" elif [[ $distro = "Raspbian GNU/Linux 12"* ]]; then str="Raspbian_12" elif [[ $distro = "Raspbian GNU/Linux 11"* ]]; then str="Raspbian_11" # Ubuntu elif [[ $ver = "26.04" ]]; then str="xUbuntu_26.04" elif [[ $ver = "25.10" ]]; then str="xUbuntu_25.10" elif [[ $ver = "25.04" ]]; then str="xUbuntu_25.04" elif [[ $ver = "24.10" ]]; then str="xUbuntu_24.10" elif [[ $ver = "24.04" ]]; then str="xUbuntu_24.04" elif [[ $ver = "23.10" ]]; then str="xUbuntu_23.10" elif [[ $ver = "23.04" ]]; then str="xUbuntu_23.04" elif [[ $ver = "22.10" ]]; then str="xUbuntu_22.10" elif [[ $ver = "22.04" ]]; then str="xUbuntu_22.04" # Debian elif [[ $ver = 11* ]]; then str="Debian_11" elif [[ $ver = 12* ]]; then str="Debian_12" elif [[ $ver = 13* ]]; then str="Debian_13" elif [[ $ver = "testing" ]]; then str="Debian_testing" # Elementary OS Freya Ubuntu 14.04 LTS elif [[ $distro = "elementary OS Odin" ]]; then str="xUbuntu_20.04" elif [[ $distro = "elementary OS Horus" ]]; then str="xUbuntu_22.04" elif [[ $distro = "elementary OS Circe" ]]; then str="xUbuntu_24.04" elif [[ $distro = "Linux Mint 21 Vanessa" ]]; then str="xUbuntu_22.04" elif [[ $distro = "Linux Mint 21.1 Vera" ]]; then str="xUbuntu_22.04" elif [[ $distro = "Linux Mint 21.2 Victoria" ]]; then str="xUbuntu_22.04" elif [[ $distro = "Linux Mint 21.3 Virginia" ]]; then str="xUbuntu_22.04" elif [[ $distro = "Linux Mint 22 Wilma" ]]; then str="xUbuntu_24.04" elif [[ $distro = "Linux Mint 22.1 Xia" ]]; then str="xUbuntu_24.04" elif [[ $distro = "Linux Mint 22.2 Zara" ]]; then str="xUbuntu_24.04" elif [[ $distro = "Linux Mint 22.3 Zena" ]]; then str="xUbuntu_24.04" # fallback to LTS version, unsupported else str="xUbuntu_22.04" fi ## Remove keys from main keyring apt-key del 03C3AD3A7F068E5D &>/dev/null || : apt-key del 1A664B787094A482 &>/dev/null || : mkdir -m 0755 -p /etc/apt/keyrings echo " -----BEGIN PGP PUBLIC KEY BLOCK----- mQINBGHe0SkBEADd5u7XBExxSg6stILhfNTNfhtTQ3ZSTLW0JZrni1inMS+P8aEM /GxtoK4+4LkLvbAiGkj7f6HEfKVuKUGN+RsHzpClEgyEZ4IY/Na37vJa+XE/zmNZ MbcyHGl5wV8flKHEl/tMAjPV/TUKfePqiyabHjNaZm3AGRGi0oxH2IL3vTOl5DbV sl1oMkfr0h5w4mZkAJqszGxt1nPVA8mn4a57kFJrxwDQX2LnyZWPG+0xIikg91Rz effa+VNh58bi5WPtHwBv9c8bHNjKi66CxK6DWISqLAO/IPpvyG0RRuju18tFQ1dU 2ZPI6R9+u6I4aEP2epfZI7b5n7MBLrSrDY95X3NxWhDdJeYaLwllQNi9NdBlGwrE i2q/NWvmkcHzByY7XfAuOzX08x0Z+fmghCh17dcZAtSzcihZKLDov+gyrbEJfT8G mfKS3NVU28giPa1mZat8JzDem44j2YXBJMxevz0/smTxJmx/69sH9lMRN0QCfnBE vFUGN2NJVbfoiuKzAdwz3FPJZP9n7iSXt4onab16J2i2GalRkL11SY8NbfbAAnhb uiBOQXt103yGh9NMxoyblV+d9dX+m/r5K/uby55rx3KiRxzVFNPNRjkU5kdOvc6H TSKKFD8jqoOIc3/q50Ty3Ga4Ny3Ke4CsYwnVVfJcI+VLt3ebdPuc4yneDwARAQAB tCBNZWdhTGltaXRlZCA8c3VwcG9ydEBtZWdhLmNvLm56PokCVAQTAQoAPhYhBLAc gRiASAyFTHPsfhpmS3hwlKSCBQJh3tEpAhsDBQkSzAMABQsJCAcCBhUKCQgLAgQW AgMBAh4BAheAAAoJEBpmS3hwlKSC2RIP/2/gBmdhW7MGiANE04kVKQBxKpsoFct+ qlr5Hzf3cuHVjtuSm7gv0swYXIr/WVxxpjFK7ipBV1XJIo5QJADTYIJQIFq0j31N 6NTPQpPPrA2vxAuFlSBn6MIfKZUZmSddCuv10rA8g1e8V7VnY+Q3VYOVo+aBToXI sDl8zXHlPElm067CnEbfrMlu1YHQghjPGlB3GHfdxeI/WwdAq00It5101KLqhqIL scsqWHUYFA2kUJGGY74uLKXnfnfzcsU4RMgTFBGqVwPBWLz7wPdxmq/jP7eVdHrN U882Csn5ZJZKHp/zznBAIUVCcTMs5l7FdPGu6dSgzj7QRx+bBNtc+4HSpdKL8ky2 3BsLMpBaRP71LPXajtJzb32rhzqDP2LKIIKytKsK2S/t8fyeZhp/xlKJ0QYgxnsK OYBZ3hmaYmIDmaxKvvc6UwPKqJiCvumPyTBwLLo0hz++pBAw4qh9ZaJL0+ReJjut X35E+uIsJqOcMGOKT03XMtRa0ByfG5gV7SjsHkxf3Z75BMAJE0gmYOQUqq8zLUhV 5ukiHfsWoVhZuTmv4pQJCxC4D3cnJlKKOAM0vZgL9ir0esyd5tvCchtjSphzRi/O DMB+T4GF1w1QUjRsKiJROMY9lWG48JYim7ZeAtOYEsA90zP6KDIs104++KrzGUj7 Nwy724hPw18ZuQINBGHe0SkBEAC7MvXFkM08aI0zSSLyB1ABEEJ+PbvGhLFLhieK f8a7uD4Q6Ddd+ctVNVEZzB90DuhU9RppUry6xlm3yCnSNIdxGBmHzyYL9Ic1HNGf zot/zpAs4Gbddqikfrn+zjkrYCKoIogjmyV1GF5Hx1A2JG4E3wyLRQ6I2OnHacGv P2OilUQx9MY1rcfsCw3Tyc4pRIRQqGN9cuUTM1TQk86SECTfTdYT+vbBTHWI48Ft udVlm11/Hbc8p25fqR8ogky2F9o8a0KZzCVlAFnSj+JGsP15OEx+Vz4ZXjckXARQ T91DfwsnPyfUe6K47ZJNWEiNNevCnE0v+0LgCJWBP2yeB/47D1graJIw/tbDZs18 XLbxJuRNQJX/nhuVWF/Ickfv07HySMThBQH4yEudc/ZIH+hMjZdqj2MuYbHlO412 bX0rj5HuKZ0SAr00IhdF9RX1K/wKXY3apYOPi1mr/VAB6Mx1zt8V4wXzQAXgr1N4 Gz83YLWWv/48XRbjuBCqQkRfs48lW15BKDaJaly3VyymrYVVXTSdKNkX3+BXP25T G2/RppYhAftHVb7ptU+CiycmCuT9OvG+xv+YGliqiEjE0Qy0hdgHngqt42UzHSd/ xqrOFTPMTAl1BDgFiMwwIH+JeYbpJ1ohKBaDMMG7IU4sp6YlIRj6iFeZCkwWjU7W zIqtvwARAQABiQI8BBgBCgAmFiEEsByBGIBIDIVMc+x+GmZLeHCUpIIFAmHe0SkC GwwFCRLMAwAACgkQGmZLeHCUpIIdohAA3c2/oLlrPTKEPCSlHvQYDpvTBQjdQ9GY 20pPHDom/T26qO5v36+vFfI47Z3uz8RX2vn83CEE467IjvGE3AyMp4cBODWgJJgG Wx8yH8ueR1Qk9AAZ/VZ8zD0rQ34Sk0uVl7voosJ5cH2hwdy6xXjR2dfFb1+wLjpi +Bdy3RU69Y2D7H8Okut8PpRgbd+u9JnK0+U0rzMJUICRIFC1NI8zaAw+ZpSTlTpY 622vp8ynkTk6TZ2D9e8yM70L/lwza5rloHi7NdCxEjly/O0JAON6if1kPbnteOUc 8pll57bPWxhUOnpcawDZa7i7E6WaN84gabnGE6l3DIGTp8Iatq+oT4mKDWLKotjA ZsdccUmxLqfMKHl8gjkxjyGlD85QdCKms5zZIzUXnO/0HKs7+vSmRaK5xaD62M2L h6q3it344NjV37v9Ofs2KroNovwfRBcjImblNv0DLERFeEIfzNJ4P9NsAW7Pvnem mTa7cc5kmtaxBYi5ZPR9l3A5kWv2BlhFV8jZF328eh+KgLKdRJPRIK6z7NU7yHAB cqHV7UnrSsJ2fzCOSOWULzW1ZhAGCP1I/kldxm1t5uzr0msZ9VFGlHYSkIAwBcys /xZLk+MVzXxJfRv+9viXL/SoNitOsh8ZUs3SjvJTVhxFDpAmGvNb3+jv3pNVU77S sAdVa6xer/c= =F8S0 -----END PGP PUBLIC KEY BLOCK----- " | gpg --dearmor > /etc/apt/keyrings/meganz-archive-keyring.gpg chmod 0644 /etc/apt/keyrings/meganz-archive-keyring.gpg if [ -d /etc/apt/sources.list.d ]; then cat >/etc/apt/sources.list.d/megaio.sources </dev/null || true fi sysctl -p /etc/sysctl.d/99-megacmd-inotify-limit.conf || true pkill --signal SIGUSR2 mega-cmd-server 2> /dev/null || true MEGAcmd-2.5.2_Linux/build/megacmd/debian.postrm000066400000000000000000000002731516543156300212730ustar00rootroot00000000000000#!/bin/bash # kill running megacmd instance (when removing) [ "$1" == "remove" ] && pkill mega-cmd 2> /dev/null || true [ "$1" == "remove" ] && pkill mega-cmd-server 2> /dev/null || true MEGAcmd-2.5.2_Linux/build/megacmd/debian.prerm000066400000000000000000000001421516543156300210670ustar00rootroot00000000000000#!/bin/bash [ "$1" == "upgrade" ] && pkill --signal SIGUSR1 mega-cmd-server 2> /dev/null || true MEGAcmd-2.5.2_Linux/build/megacmd/debian.rules000066400000000000000000000107101516543156300210760ustar00rootroot00000000000000#!/usr/bin/make -f NJOBS := $(shell echo ${DEB_BUILD_OPTIONS} | sed -rn 's/.*parallel=([0-9]*).*/\1/p') VCPKG_ROOT := $(shell [ -f /opt/vcpkg.tar.gz ] && echo "-DVCPKG_ROOT=vcpkg" || echo "") #TODO: pass deprecation to cmake (probably better not via ccpflags) EXTRADEFINES := $(shell cat /etc/issue | grep "Ubuntu 1[2345789]\|Ubuntu 20\|Ubuntu 21\|Ubuntu 22.10\|Ubuntu 23\|Ubuntu.24.10\|Ubuntu.25.04\|Debian.* [789]" >/dev/null && echo "$$CPPFLAGS -DMEGACMD_DEPRECATED_OS" || echo "") DPKGXZ := $(shell cat /etc/issue | grep "Ubuntu 26\|Resolute Raccoon\|Ubuntu 26\|Resolute Raccoon\|Ubuntu 26\|Resolute Raccoon\|Ubuntu 26\|Resolute Raccoon\|Ubuntu 25\|Questing Quokka\|Plucky Puffin\|Ubuntu 24\|Ubuntu 23\|Ubuntu 22" >/dev/null && echo "-- -Zxz" || echo "") #LDFLAGS := $(shell dpkg --print-architecture | grep -i "i386\|arm" >/dev/null && echo "" || echo "$$LDFLAGS -Wl,-rpath,/opt/megacmd/lib") EXPORT_VCPKG_FORCE_SYSTEM_BINARIES := $(shell uname -m | grep "armv7l" >/dev/null && echo "VCPKG_FORCE_SYSTEM_BINARIES=1" || echo "") DEB_TESTING := $(shell cat /etc/issue | grep "Debian" > /dev/null && cat /etc/apt/sources.list.d/debian.sources | grep -v "^\#" | grep testing > /dev/null && echo "testing") #TODO: Ensure raspbian builds with that export EXPORTCCMFPU := $(shell cat /etc/issue | grep "Raspbian GNU/Linux 12" >/dev/null && echo "export CC='cc -mfpu=vfp'" || echo ":") DISTRO := $(shell lsb_release -ds) VER := $(shell lsb_release -rs) export VCPKG_DEFAULT_BINARY_CACHE := $(shell [ -f /opt/vcpkg.tar.gz ] && echo "/opt/persistent/vcpkg_cache" || echo "") export PATH := $(shell [ -f /opt/cmake.tar.gz ] && echo "`pwd`/cmake_inst/bin:${PATH}" || echo "${PATH}") export CXXFLAGS := $(shell [ -n "${EXTRADEFINES}" ] && echo "${EXTRADEFINES} ${CXXFLAGS}" || echo "${CXXFLAGS}") MEGA_BUILD_ID := $(shell cat MEGA_BUILD_ID || echo "1") build: build-stamp build-stamp: sed -i -E "s/(^#define MEGACMD_BUILD_ID )[0-9]*/\1$(MEGA_BUILD_ID)/g" src/megacmdversion.h.in sed -i -E "0,/megacmd \(([0-9.]*)[^\)]*\)/s//megacmd \(\1-$(MEGA_BUILD_ID).1)/" debian.changelog || : if [ -f /opt/vcpkg.tar.gz ]; then \ tar xzf /opt/vcpkg.tar.gz; \ mkdir -p $(VCPKG_DEFAULT_BINARY_CACHE); \ fi if [ -f /opt/cmake.tar.gz ]; then \ HASH=$$(md5sum /opt/cmake.tar.gz | awk '{print $$1}'); \ if [ "$$HASH" = "ebc26503469f12bf1e956c564fcfa82a" ] || [ "$$HASH" = "2e278820bb4ec6fb71dbef1704fb5359" ]; then \ echo "Valid cmake.tar.gz (hash: $$HASH)"; \ else \ echo "Invalid cmake.tar.gz hash: $$HASH" >&2; \ exit 1; \ fi; \ fi if [ -f /opt/cmake.tar.gz ]; then \ tar xzf /opt/cmake.tar.gz; \ ln -s cmake-*-linux* cmake_inst; \ fi cmake --version $(EXPORT_VCPKG_FORCE_SYSTEM_BINARIES) cmake $(VCPKG_ROOT) -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -S $(CURDIR) -B $(CURDIR)/build_dir cmake --build $(CURDIR)/build_dir -j$(NJOBS) cmake --install $(CURDIR)/build_dir --prefix $(CURDIR)/install_dir #generate file that would increase inotify limit: echo "fs.inotify.max_user_watches = 524288" > 99-megacmd-inotify-limit.conf if [ -n "$(DEB_TESTING)" ]; then \ sed -i "s#@VERSION@#$(DEB_TESTING)#g" debian/postinst; \ else \ sed -i "s#@VERSION@#$(VER)#g" debian/postinst; \ fi sed -i "s#@DISTRO@#$(DISTRO)#g" debian/postinst touch build-stamp clean: dh_testdir dh_testroot rm -f build-stamp install: build ###dh_auto_install --destdir=megacmd/megacmd dh_install install_dir/* / # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot # dh_installdebconf dh_installdocs dh_installexamples dh_installmenu # dh_installlogrotate # dh_installemacsen # dh_installpam # dh_installmime # dh_installinit dh_installcron dh_installman dh_installinfo # dh_undocumented dh_installchangelogs dh_link dh_strip --dbg-package=megacmd-dbg dh_compress dh_fixperms # dh_makeshlibs dh_installdeb # dh_perl dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info -l$(CURDIR)/deps/lib dh_gencontrol dh_md5sums dh_builddeb $(DPKGXZ) binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install MEGAcmd-2.5.2_Linux/build/megacmd/megacmd.changes000066400000000000000000000326501516543156300215360ustar00rootroot00000000000000Wed Apr 08 12:00:00 CEST 2026 - linux@mega.co.nz - Update to version 2.5.2: * Fix: address potential loop in sync engine with mtime changes within 2 seconds ------------------------------------------------------------------- Tue Mar 24 09:36:34 CET 2026 - linux@mega.co.nz - Update to version 2.5.1: * Fixed syncrhonizing updated empty files * WSL bash completion speedup ------------------------------------------------------------------- Wed Mar 11 10:36:46 AM UTC 2026 - linux@mega.co.nz - Update to version 2.5.0: * Shell UX improvements: empty Enter shows a new prompt; no duplicate prompt while command is executing * Sync engine improvements: prevent re-uploading data when local drive fingerprint has changed * put: Fixed -c (autocreate) not working when destination is an absolute path * mediainfo: Fixed audio file duration not being displayed * Transfers: prevent failures on resumption * thumbnail/preview: Print error when the requested file does not exist * share: Return success (exit code 0) when no shares exist below the current folder * passwd: fixes issues when 2FA is enabled * Path and string handling fixes (trailing separators, trimming) * Expanded unit test coverage * Fix: Improved restart-after-update reliability on POSIX (server PID changes after update) * Stability, memory, typos and other improvements ------------------------------------------------------------------- Tue Dec 16 17:14:02 CET 2025 - linux@mega.co.nz - Update to version 2.4.0: * Improvements in uploads UX/UI: put now supports printing tag. Fixes in transfers table * Stability improvements: crashes fixes, FUSE deadlocks, ... * Performance boosts: lockless download URL retrievals, removed CPU bottlenecks for large accounts processing, db operations improvements, transfers improvements ... * Typos and other improvements ------------------------------------------------------------------- Tue Sep 2 16:43:10 CEST 2025 - linux@mega.co.nz - Update to version 2.3.0: * FUSE (beta): Added fuse commands on Windows to allow your MEGA folders to be directly mounted to your local drive * Other fixes and improvements to enhance reliability and performance ------------------------------------------------------------------- Tue Jun 3 23:20:12 CEST 2025 - linux@mega.co.nz - Update to version 2.2.0: * Support building for ARM64 in linux * New command "configure" to allow configuring some settings * Support setting max number of nodes in memory * Support setting number of SDK instances used for login in folders to download/import * Other fixes and improvements to enhance reliability and performance ------------------------------------------------------------------- Wed Apr 2 11:08:20 CEST 2025 - linux@mega.co.nz - Update to version 2.1.1: * FUSE (beta): Added fuse commands on Linux to allow your MEGA folders to be directly mounted to your local drive * Delayed sync uploads: Introduced a mechanism to delay to frequently changed sync uploads, and the sync-config command * Logging: Messages are now printed in standard error, the rotating logger is now configurable and more verbose by default, passwords are now redacted from the logs, and other fixes and refinements * Fixed a crash when auto-completing a local folder that doesn't exist * Fixed the confirmcancel command incorrectly reporting failure on success * Extended speedlimit command to allow increasing max connections * Other fixes and improvements to enhance reliability and performance ------------------------------------------------------------------- Fri Jan 24 01:20:16 PM CET 2025 - linux@mega.co.nz - Update to version 2.0.0: * New Sync Engine: See sync-issues and sync-ignore commands * Rotating Logger: Introduced a robust rotating logging system across all platforms for better performance and debugging * Platform-specific enhancements: Addressed various file descriptor issues on Linux and macOS, and improved non-ascii support on Windows * Improved overall reliability: Fixed memory leaks, resolved potential data races, and eliminated deadlock scenarios * Fixed an issue when handling double-quoted arguments * Various fixes and refinements to enhance usability and performance ------------------------------------------------------------------- Mon May 20 02:06:31 PM CEST 2024 - linux@mega.co.nz - Update to version 1.7.0: * Improved startup time * Reduced memory consumption: cached metadata is no longer loaded at startup * Fixes and improvements in whoami, ls, backup and export commands * Fixed several memory leaks and improved overall memory consumption * Fixed file permissions on Unix * Added support for the Apple silicon (M1) * Many other fixes and improvements ------------------------------------------------------------------- Thu May 4 16:18:29 CEST 2023 - linux@mega.co.nz - Update to version 1.6.3: * Improvements in session resumption * Fixes for undecryptable nodes * Stability and preformance fixes ------------------------------------------------------------------- Fri Mar 24 13:02:52 CET 2023 - linux@mega.co.nz - Update to version 1.6.1: * Support login into a password protected link * Ease establishing shares * Fixes in tranfer resumption * Fixes in password protected links * Improvements shares management ------------------------------------------------------------------- Wed Mar 1 13:26:37 CET 2023 - linux@mega.co.nz - Update to version 1.6.0: * Improvements in "find" to search by type, or print only handles (to ease automation) * Improved state management and reporting in synchronizations * Improved information on shares * Improvements in "attr" * Security adjustments * Other fixes and adjustments ------------------------------------------------------------------- Mon Jun 22 19:08:17 CEST 2020 - linux@mega.co.nz - Update to version 1.3.0: * Fix --path-display-size for commands that use it and improve display for "transfer" & "sync" * Support for blocked accounts with instructions to unblock them * Fix crash in libcryptopp for Ubuntu 19.10 and onwards * Fix issues with failed transfers * Fix trailing separator issue for local path in "put" * Speed up sync engine startup for windows * Other fixes & adjustments ------------------------------------------------------------------- Mon Jun 22 19:06:13 CEST 2020 - linux@mega.co.nz - Update to version 1.2.0: * "put" now supports wildcard expressions * support setting a proxy with "proxy" command * add support for addressing inshares with //from/ * support for files/folders within public links * minor fix for ls --tree autocompletion * discard flags/options after "--" * --show-handles option added in ls & find * files/folders can be addressed using their handle H:XXXXXXX * support new links format * fixes in reported used storage * fix crash in find command * do not consider inshares for version storage used * win installer: do not ask for elevate permissions when running in silent mode * improved columned outputs to maximize screen use (syncs & transfers) * improve responsiveness at startup in interactive mode, to avoid hangs when session does not resumeAdded mode while logging in that allows certain actions (like setting a proxy) * non-interactive mode will not wait for commands that can be addressed before the session is resumed * speedup cancellation/startup of a huge number of transfers * cloud raid support * speedup improvements in cache and other CPU bottlenecks * many more fixes & adjustments ------------------------------------------------------------------- Tue Mar 26 10:52:56 CET 2019 - linux@mega.co.nz - Update to version 1.1.0: * added "cat" command to read text files (and potentially stream any file) * added update capabilities for Windows & MacOS (automatic updates are enabled by default) * added "media-info" command to show some information of multimedia files * added "df" command to show storage info * added tree-like listing command: "tree" or "ls --tree" * shown progress in non-interactive mode * improvements in progress and transfers results information * width output adjustments in non-interactive mode * output streamed partially from server to clients * added --time-format option to commands displaying times, to allow other formats * 2FA login auth code can be passed as parameter now * transfer now differentiate backup transfers * backup command completion for local paths now only looks for folders * backup transfers are no longer cached (no reason to: backups are considered failed in such case) * backup fix some halts and output improvements * added Public Service Announcements (PSA) support * killsession now allows multiple parameters * fix "clear" in some linuxes * add support for spaces in password prompts * many more minor fixes & adjustments ------------------------------------------------------------------- Fri Sep 7 14:00:51 CEST 2018 - linux@mega.co.nz - Update to version 1.0.0: * added FTP beta support (See "ftp") * renew path parsing & improved completion with special characters * fix truncated redirected output in MacOS * added support for account cancellation. (See "cancel") * cp now allows multiple source paths and regular expressions * du path display size variable now * output error code always positive now * new command "errorcode" to translate error code into string * allow password protected links for PRO users * password changing no longer requires old one * webdav now allows stopping serving all locations * added "graphics" command to turn off thumbnails/previews generation * support login and password change using 2FA * limit one instance of server * many more minor fixes & adjustments ------------------------------------------------------------------- Tue Mar 27 18:37:30 CEST 2018 - linux@mega.co.nz - Update to version 0.9.9: * Webdav: Serve a MEGA location as a WEBDAV server. * Streaming: Webdav command can also be used for HTTP(S) streaming. * Added thumbnails for video files. * Listing -l now list unix-like columned summary (extended info is now -a) * du & ls -v is now --versions * Fixed --mtime restrictions in find * Added support for compiling in NAS systems * Minor fixes & adjustements ------------------------------------------------------------------- Thu Jan 18 19:15:35 CET 2018 - linux@mega.co.nz - Update to version 0.9.8: * Backups: added the possibility to configure periodic backups * Full version support: listing, see space ocupied, accessing, copying, removing, ... * Added "deleteversions" command to remove versions (all or by path) * Permissions: you can change default permission for files and folders * Persistence of settings: speedlimit, permissions, https * Speedlimit takes units and allows human-readable output * Support for video metadata * Minor fixes and doc improvements ------------------------------------------------------------------- Mon Dec 11 18:43:46 CET 2017 - linux@mega.co.nz - Update to version 0.9.7: * Faster scanning of files * Improved the management of deleted files * Bug fixes and other minor improvements ------------------------------------------------------------------- Fri Nov 10 14:36:44 CET 2017 - linux@mega.co.nz - Update to version 0.9.6: * Added transfer resumption * Added file versioning for modified files(webclient can browse them) * Added time and size constrains for find * Reformated sync output * Added exclusions to syncs. Default: .* ~* desktop.ini Thumbs.db * Fixed detection of invalid TIMEVAL when no unit specified * Improved sync display format * Fix some "get" cases with "/" involved in Windows * Fix in email validation * Fix segfault in userattr * Added "--in" & "--out" to showpcr * Added masterkey command to show master key * All/None options in confirmation for deletion * Added multi-transfer progress (one single progress bar) * Fix mkdir loop * Minor fixes and improvements in error management * beautify whoami -l and added storage used by versions * Changed name for server in windows to MEGAcmdServer.exe ------------------------------------------------------------------- Mon Aug 28 18:06:34 CEST 2017 - linux@mega.co.nz - Update to version 0.9.4: * Separated MEGAcmd into interactive shell (MEGAcmdShell) and server(MEGAcmdServer) * Added transfers management with "transfer" command * Uploads and downloads now support background mode with "-q" * Added confirmation on folder removal (interactive & non-interactive modes) * PCRE are now optional if available in all the commands with "--use-pcre" * Server initiated automatically in interactive and non-interactive mode * Added unicode support for Windows * Refurbished communications and secured non-interactive mode in Windows * Implemented copy (cp) to user's inbox * Several fixes and commands improvements ------------------------------------------------------------------- Thu Feb 2 11:32:38 CET 2017 - linux@mega.co.nz - Update to version 0.9.3: * fixed mkdir in MacOS * added command \ * added -n to \ * modified greeting * fixed \ * fixed download >4GB files * fixed bug in asynchronous transfers ------------------------------------------------------------------- Tue Jan 17 14:22:10 CET 2017 - linux@mega.co.nz - Update to version 0.9.1: * Initial version of megacmd * Features: * Interactive shell * Non interactive mode * Regular expresions * Contacts management * Public folders management * Files management * Synching ------------------------------------------------------------------- MEGAcmd-2.5.2_Linux/build/megacmd/megacmd.install000066400000000000000000000176501516543156300215770ustar00rootroot00000000000000post_install() { #remove repo if existing sed -n '1h;1!H;${g;s/\n###REPO for MEGA###\n.*###END REPO for MEGA###//;p;}' -i /etc/pacman.conf #include repo #Add a new line if required lastC=`tail -c1 /etc/pacman.conf || echo -n "x"` if [ "$lastC" != "" ]; then echo >> /etc/pacman.conf; fi cat >> /etc/pacman.conf <<-EOF ###REPO for MEGA### [DEB_Arch_Extra] SigLevel = Required TrustedOnly Server = https://mega.nz/linux/repo/Arch_Extra/\$arch ###END REPO for MEGA### EOF # Remove old key pacman-key -d 8F208FBF12FEE766AA32AEAF03C3AD3A7F068E5D 2>/dev/null || : #Add public key used for signing pacman-key --add - < /dev/null || true } post_upgrade() { # Remove old key pacman-key -d 8F208FBF12FEE766AA32AEAF03C3AD3A7F068E5D 2>/dev/null || : # Check if new key has been added if ! (pacman-key -l B01C811880480C854C73EC7E1A664B787094A482 &> /dev/null); then #remove repo if existing sed -n '1h;1!H;${g;s/\n###REPO for MEGA###\n.*###END REPO for MEGA###//;p;}' -i /etc/pacman.conf #include repo #Add a new line if required lastC=`tail -c1 /etc/pacman.conf || echo -n "x"` if [ "$lastC" != "" ]; then echo >> /etc/pacman.conf; fi cat >> /etc/pacman.conf <<-EOF ###REPO for MEGA### [DEB_Arch_Extra] SigLevel = Required TrustedOnly Server = https://mega.nz/linux/repo/Arch_Extra/\$arch ###END REPO for MEGA### EOF #Add public key used for signing pacman-key --add - < /dev/null || true } MEGAcmd-2.5.2_Linux/build/production_build.cmd000066400000000000000000000026631516543156300212450ustar00rootroot00000000000000IF NOT [%MEGA_VCPKGPATH%]==[] ( SET "VCPKG_ROOT_ARG=-DVCPKG_ROOT=%MEGA_VCPKGPATH%" ) IF [%MEGA_CORES%]==[] ( FOR /f "tokens=2 delims==" %%f IN ('wmic cpu get NumberOfLogicalProcessors /value ^| find "="') DO SET MEGA_CORES=%%f ) REM Clean up any previous leftovers IF EXIST build-x64-windows-mega ( rmdir /s /q build-x64-windows-mega ) REM download winsfp call get_winfsp.cmd || exit 1 /b mkdir build-x64-windows-mega cd build-x64-windows-mega cmake -G "Visual Studio 17 2022" -A x64 -DCMAKE_VERBOSE_MAKEFILE="ON" -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="/Zi /O2 /Ob2 /DNDEBUG" %VCPKG_ROOT_ARG% -DCMAKE_C_FLAGS_RELWITHDEBINFO="/Zi /O2 /Ob2 /DNDEBUG" -S "..\.." -B . || exit 1 /b cmake --build . --config RelWithDebInfo --target mega-exec --target mega-cmd-server --target mega-cmd --target mega-cmd-updater -j%MEGA_CORES% || exit 1 /b cd .. IF "%MEGA_SKIP_32_BIT_BUILD%" == "true" ( GOTO :EOF ) REM Clean up any previous leftovers IF EXIST build-x86-windows-mega ( rmdir /s /q build-x86-windows-mega ) mkdir build-x86-windows-mega cd build-x86-windows-mega cmake -G "Visual Studio 17 2022" -A Win32 -DCMAKE_VERBOSE_MAKEFILE="ON" -DCMAKE_CXX_FLAGS_RELWITHDEBINFO="/Zi /O2 /Ob2 /DNDEBUG" %VCPKG_ROOT_ARG% -DCMAKE_C_FLAGS_RELWITHDEBINFO="/Zi /O2 /Ob2 /DNDEBUG" -S "..\.." -B . || exit 1 /b cmake --build . --config RelWithDebInfo --target mega-exec --target mega-cmd-server --target mega-cmd --target mega-cmd-updater -j%MEGA_CORES% || exit 1 /b cd .. MEGAcmd-2.5.2_Linux/build/templates/000077500000000000000000000000001516543156300172025ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/templates/megacmd/000077500000000000000000000000001516543156300205775ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/build/templates/megacmd/PKGBUILD000066400000000000000000000042541516543156300217300ustar00rootroot00000000000000## # @file build/megacmd/megacmd/PKGBUILD # @brief script to generate package megacmd for ArchLinux # # (c) 2013-2016 by Mega Limited, Auckland, New Zealand # # This file is part of the MEGAcmd. # # MEGAcmd is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. # # @copyright Simplified (2-clause) BSD License. # # You should have received a copy of the license along with this # program. ## # Maintainer: Pablo Martin pkgname=megacmd pkgver=megacmd_VERSION pkgrel=`cat MEGA_BUILD_ID || echo "1"` epoch= pkgdesc="MEGA Command Line Interactive and Scriptable Application" arch=('i686' 'x86_64') url="http://mega.nz/cmd" license=("https://github.com/meganz/megacmd/blob/master/LICENSE") groups=() depends=('glibc>=2.37' 'bash-completion' 'fuse2') makedepends=('unzip' 'wget' 'ca-certificates' 'cmake' 'zip' 'python3' 'autoconf-archive' 'nasm' 'fuse2') checkdepends=() optdepends=() provides=("megacmd=${pkgver}" 'ffmpeg-mega') replaces=() backup=() options=(!lto) # ffmpeg is not relocatable install=megacmd.install changelog= #TODO source=("./${pkgname}_$pkgver.tar.gz" ) noextract=() md5sums=('MD5SUM') # generated with makepkg -g validpgpkeys=() prepare() { cd "$pkgname-$pkgver" sed -i -E "s/(^#define MEGACMD_BUILD_ID )[0-9]*/\1${pkgrel}/g" src/megacmdversion.h.in if [ -f /opt/vcpkg.tar.gz ]; then tar xzf /opt/vcpkg.tar.gz fi } build() { set -x cd "$pkgname-$pkgver" megasrcdir="${PWD}" megabuilddir="${megasrcdir}/build_dir" if [ -d "${megasrcdir}/vcpkg" ]; then export VCPKG_DEFAULT_BINARY_CACHE=/opt/persistent/vcpkg_cache mkdir -p ${VCPKG_DEFAULT_BINARY_CACHE} vcpkg_root="-DVCPKG_ROOT=${megasrcdir}/vcpkg" fi cmake --version cmake ${vcpkg_root} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -S "${megasrcdir}" -B "${megabuilddir}" cmake --build "${megabuilddir}" ${BUILD_PARALLEL_JOBS} touch build-stamp } check() { cd "$pkgname-$pkgver" } package() { cd "$pkgname-$pkgver" megasrcdir="${srcdir}/${pkgname}-${pkgver}" megabuilddir="${megasrcdir}/build_dir" cmake --install "${megabuilddir}" --prefix $pkgdir } MEGAcmd-2.5.2_Linux/build/templates/megacmd/megacmd-Debian_testing.dsc000066400000000000000000000010121516543156300255760ustar00rootroot00000000000000Format: 1.0 Source: megacmd Binary: megacmd Standards-Version: 3.6.1 Architecture: any Version: megacmd_VERSION DEBTRANSFORM-RELEASE: 1 Maintainer: MEGA Linux Team Homepage: https://mega.nz/cmd Build-Depends: pkg-config, debhelper, wget, dh-autoreconf, cdbs, unzip, pkg-config, autoconf, autoconf-archive, nasm, cmake, libtool-bin (>= 2.4.2-1.10) | libtool (<< 2.4.2-1.10), libfuse3-dev Package-List: megacmd deb gnome optional Files: 00000000000000000000000000000000 0 megacmd_megacmd_VERSION.tar.gz MEGAcmd-2.5.2_Linux/build/templates/megacmd/megacmd.dsc000066400000000000000000000010111516543156300226600ustar00rootroot00000000000000Format: 1.0 Source: megacmd Binary: megacmd Standards-Version: 3.6.1 Architecture: any Version: megacmd_VERSION DEBTRANSFORM-RELEASE: 1 Maintainer: MEGA Linux Team Homepage: https://mega.nz/cmd Build-Depends: pkg-config, debhelper, wget, dh-autoreconf, cdbs, unzip, pkg-config, autoconf, autoconf-archive, nasm, cmake, libtool-bin (>= 2.4.2-1.10) | libtool (<< 2.4.2-1.10), libfuse-dev Package-List: megacmd deb gnome optional Files: 00000000000000000000000000000000 0 megacmd_megacmd_VERSION.tar.gz MEGAcmd-2.5.2_Linux/build/templates/megacmd/megacmd.spec000066400000000000000000000264341516543156300230610ustar00rootroot00000000000000Name: megacmd Version: megacmd_VERSION Release: %(cat MEGA_BUILD_ID || echo "1").1 Summary: MEGA Command Line Interactive and Scriptable Application License: https://github.com/meganz/megacmd/blob/master/LICENSE Group: Applications/Others Url: https://mega.nz Source0: megacmd_%{version}.tar.gz Vendor: MEGA Limited Packager: MEGA Linux Team %if 0%{?suse_version} Requires: procps %else Requires: procps-ng %endif %global __requires_exclude ^lib(avcodec|avformat|avutil|swresample|swscale)\\.so\\. BuildRequires: autoconf, autoconf-archive, automake, libtool, gcc-c++ BuildRequires: hicolor-icon-theme, zip, unzip, nasm, cmake, perl BuildRequires: fuse-devel Requires: fuse %if 0%{?fedora_version} >= 40 BuildRequires: wget2, wget2-wget %else BuildRequires: wget %endif %if 0%{?suse_version} || 0%{?sle_version} %if 0%{?suse_version} > 1500 BuildRequires: pkgconf-pkg-config %else BuildRequires: pkg-config %endif %endif %if 0%{?fedora} BuildRequires: pkgconf-pkg-config %endif #OpenSUSE %if 0%{?suse_version} || 0%{?sle_version} # disabling post-build-checks that ocassionally prevent opensuse rpms from being generated # plus it speeds up building process #!BuildIgnore: post-build-checks # OpenSUSE leap features too old compiler and python 3.10 by default: %if 0%{?suse_version} && 0%{?suse_version} <= 1500 BuildRequires: gcc13 gcc13-c++ BuildRequires: python311 %endif %endif #Fedora specific %if 0%{?fedora} # allowing for rpaths (taken as invalid, as if they were not absolute paths when they are) %if 0%{?fedora_version} >= 35 %define __brp_check_rpaths QA_RPATHS=0x0002 /usr/lib/rpm/check-rpaths %endif %endif # RHEL/CentOS/Alma/Rocky/Oracle >= 9: allow $ORIGIN %if (0%{?rhel} >= 9) || (0%{?rhel_version} >= 900) || (0%{?centos_version} >= 900) %define __brp_check_rpaths QA_RPATHS=$(( 0x0002|0x0008 )) /usr/lib/rpm/check-rpaths %endif %description MEGAcmd provides non UI access to MEGA services. It intends to offer all the functionality with your MEGA account via shell interaction. It features 2 modes of interaction: - interactive. A shell to query your actions - scriptable. A way to execute commands from a shell/a script/another program. %prep %setup -q mega_build_id=`echo %{release} | cut -d'.' -f 1` sed -i -E "s/(^#define MEGACMD_BUILD_ID )[0-9]*/\1${mega_build_id}/g" src/megacmdversion.h.in %define fullreqs -DREQUIRE_HAVE_PDFIUM -DREQUIRE_HAVE_FFMPEG -DREQUIRE_HAVE_LIBUV -DREQUIRE_USE_MEDIAINFO -DREQUIRE_USE_PCRE %if ( 0%{?fedora_version} && 0%{?fedora_version}<=42 ) || ( 0%{?centos_version} == 600 ) || ( 0%{?centos_version} == 800 ) || ( 0%{?sle_version} && 0%{?sle_version} <= 150600 ) %define extradefines -DMEGACMD_DEPRECATED_OS %else %define extradefines %{nil} %endif if [ -f /opt/vcpkg.tar.gz ]; then export VCPKG_DEFAULT_BINARY_CACHE=/opt/persistent/vcpkg_cache mkdir -p ${VCPKG_DEFAULT_BINARY_CACHE} tar xzf /opt/vcpkg.tar.gz vcpkg_root="-DVCPKG_ROOT=vcpkg" fi # use a custom cmake if required/available: if [ -f /opt/cmake.tar.gz ]; then echo "8dc99be7ba94ad6e14256b049e396b40 /opt/cmake.tar.gz" | md5sum -c - tar xzf /opt/cmake.tar.gz ln -s cmake-*-Linux* cmake_inst export PATH="${PWD}/cmake_inst/bin:${PATH}" fi # OpenSuse Leap 15.x defaults to gcc7. # Python>=10 needed for VCPKG pkgconf %if 0%{?suse_version} && 0%{?suse_version} <= 1500 export CC=gcc-13 export CXX=g++-13 mkdir python311 ln -sf /usr/bin/python3.11 python311/python3 export PATH=$PWD/python311:$PATH %endif if [ -n "%{extradefines}" ]; then export CXXFLAGS="%{extradefines} ${CXXFLAGS}" fi cmake --version cmake ${vcpkg_root} -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B %{_builddir}/build_dir %build if [ -f /opt/cmake.tar.gz ]; then export PATH="${PWD}/cmake_inst/bin:${PATH}" fi cmake --build %{_builddir}/build_dir %{?_smp_mflags} %install if [ -f /opt/cmake.tar.gz ]; then export PATH="${PWD}/cmake_inst/bin:${PATH}" fi cmake --install %{_builddir}/build_dir --prefix %{buildroot} %post #TODO: source bash_completion? ## Configure repository ## %if 0%{?fedora} YUM_FILE="/etc/yum.repos.d/megasync.repo" cat > "$YUM_FILE" << DATA [MEGAsync] name=MEGAsync baseurl=https://mega.nz/linux/repo/Fedora_\$releasever/ gpgkey=https://mega.nz/linux/repo/Fedora_\$releasever/repodata/repomd.xml.key gpgcheck=1 enabled=1 DATA %endif %if 0%{?rhel_version} || 0%{?centos_version} %if 0%{?rhel_version} == 900 && 0%{?almalinux} %define reponame AlmaLinux_9 %endif %if 0%{?rhel_version} == 1000 && 0%{?almalinux} %define reponame AlmaLinux_10 %endif %if 0%{?centos_version} == 900 && ! 0%{?almalinux} %define reponame CentOS_Stream_9 %endif %if 0%{?centos_version} == 1000 && ! 0%{?almalinux} %define reponame CentOS_Stream_10 %endif YUM_FILE="/etc/yum.repos.d/megasync.repo" cat > "$YUM_FILE" << DATA [MEGAsync] name=MEGAsync baseurl=https://mega.nz/linux/repo/%{reponame}/ gpgkey=https://mega.nz/linux/repo/%{reponame}/repodata/repomd.xml.key gpgcheck=1 enabled=1 DATA %endif %if 0%{?sle_version} || 0%{?suse_version} %if 0%{?sle_version} == 150000 || 0%{?sle_version} == 150100 || 0%{?sle_version} == 150200 %define reponame openSUSE_Leap_15.0 %endif %if 0%{?sle_version} == 150300 %define reponame openSUSE_Leap_15.3 %endif %if 0%{?sle_version} == 150400 %define reponame openSUSE_Leap_15.4 %endif %if 0%{?sle_version} == 150500 %define reponame openSUSE_Leap_15.5 %endif %if 0%{?sle_version} == 150600 %define reponame openSUSE_Leap_15.6 %endif %if 0%{?sle_version} == 0 && 0%{?suse_version} >= 1550 %define reponame openSUSE_Tumbleweed %endif if [ -d "/etc/zypp/repos.d/" ]; then ZYPP_FILE="/etc/zypp/repos.d/megasync.repo" cat > "$ZYPP_FILE" << DATA [MEGAsync] name=MEGAsync type=rpm-md baseurl=https://mega.nz/linux/repo/%{reponame}/ gpgcheck=1 autorefresh=1 gpgkey=https://mega.nz/linux/repo/%{reponame}/repodata/repomd.xml.key enabled=1 DATA fi %endif ### include public signing key ##### # Install new key if it's not present # Notice, for openSuse, postinst is checked (and therefore executed) when creating the rpm # we need to ensure no command results in fail (returns !=0) # Remove old key if present. if (rpm -q gpg-pubkey-7f068e5d-563dc081 &> /dev/null); then mv /var/lib/rpm/.rpm.lock /var/lib/rpm/.rpm.lock_moved || : #to allow key management. %if 0%{?suse_version} #Key management would fail due to lock in /var/lib/rpm/Packages. We create a copy cp /var/lib/rpm/Packages{,_moved} mv /var/lib/rpm/Packages{_moved,} %endif rpm -e gpg-pubkey-7f068e5d-563dc081 mv /var/lib/rpm/.rpm.lock_moved /var/lib/rpm/.rpm.lock || : #take it back fi rpm -q gpg-pubkey-7094a482-61ded129 > /dev/null 2>&1 || KEY_NOT_FOUND=1 if [ ! -z "$KEY_NOT_FOUND" ]; then KEYFILE=$(mktemp /tmp/megasync.XXXXXX || :) if [ -n "$KEYFILE" ]; then cat > "$KEYFILE" <&1 || FAILED_IMPORT=1 mv /var/lib/rpm/.rpm.lock_moved /var/lib/rpm/.rpm.lock || : #take it back rm $KEYFILE || : fi fi sysctl -p /etc/sysctl.d/99-megacmd-inotify-limit.conf ### END of POSTINST %preun [ "$1" == "1" ] && pkill --signal SIGUSR1 mega-cmd-server 2> /dev/null || true %postun # kill running MEGAcmd instance when uninstall (!upgrade) [ "$1" == "0" ] && pkill mega-cmd 2> /dev/null || true [ "$1" == "0" ] && pkill mega-cmd-server 2> /dev/null || true %posttrans # to restore dormant MEGAcmd upon updates pkill --signal SIGUSR2 mega-cmd-server 2> /dev/null || true %clean %{?buildroot:%__rm -rf "%{buildroot}"} %files %defattr(-,root,root) %{_bindir}/* /opt/* /etc/bash_completion.d/megacmd_completion.sh /etc/sysctl.d/99-megacmd-inotify-limit.conf %changelog MEGAcmd-2.5.2_Linux/build/update_changelogs.sh000077500000000000000000000035131516543156300212210ustar00rootroot00000000000000#!/bin/bash ## # @file build/update_changelogs.sh # @brief Updates debian.changelog and megacmd.changes for the current version. # Run from the build/ directory before a release. # ## set -euo pipefail SCRIPT_DIR=$(cd "$(dirname "$0")" && pwd) cd "$SCRIPT_DIR" BASEPATH=$SCRIPT_DIR/../ # Get current version from CMakeLists.txt megacmd_VERSION=$(grep -Po "MEGACMD_.*_VERSION [0-9]*" "$BASEPATH/CMakeLists.txt" | awk '{print $2}' | paste -sd '.') echo "MEGAcmd version: $megacmd_VERSION" # Read the last version for which changelogs were generated version_file="version" if [ -s "$version_file" ]; then last_version=$(cat "$version_file") else last_version="none" fi if [ "$last_version" = "$megacmd_VERSION" ]; then echo "Changelogs already up to date for version $megacmd_VERSION (see build/version). Nothing to do." exit 0 fi # Update RPM changelog (megacmd.changes) changelog="megacmd/megacmd.changes" changelogold="megacmd/megacmd.changes.old" if [ -f "$changelog" ]; then mv "$changelog" "$changelogold" fi ./generate_rpm_changelog_entry.sh "$megacmd_VERSION" "$BASEPATH/src/megacmdversion.h" > "$changelog" if [ -f "$changelogold" ]; then cat "$changelogold" >> "$changelog" rm "$changelogold" fi echo "Updated $changelog" # Update DEB changelog (debian.changelog) changelog="megacmd/debian.changelog" changelogold="megacmd/debian.changelog.old" if [ -f "$changelog" ]; then mv "$changelog" "$changelogold" fi ./generate_deb_changelog_entry.sh "$megacmd_VERSION" "$BASEPATH/src/megacmdversion.h" > "$changelog" if [ -f "$changelogold" ]; then cat "$changelogold" >> "$changelog" rm "$changelogold" fi echo "Updated $changelog" # Record the version so we don't regenerate on subsequent runs echo "$megacmd_VERSION" > "$version_file" echo "Done. Version recorded as $megacmd_VERSION in build/version." MEGAcmd-2.5.2_Linux/build/version000066400000000000000000000000061516543156300166100ustar00rootroot000000000000002.5.2 MEGAcmd-2.5.2_Linux/contrib/000077500000000000000000000000001516543156300155455ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/contrib/docs/000077500000000000000000000000001516543156300164755ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/contrib/docs/BACKUPS.md000066400000000000000000000065631516543156300201210ustar00rootroot00000000000000# MEGA-BACKUPS - Backing up folders with MEGAcmd This is a brief tutorial on how to configure backups. Notice: the commands listed here assume you are using the interactive interaction mode: they are supposed to be executed within MEGAcmdShell. ## Creation Example: backup /path/mega/folder /remote/path --period="0 0 4 * * *" --num-backups=10 This will configure a backup of "myfolder" into /remote/path that will be carried out at 4:00 A.M. (UTC) every day. It will store the last 10 copies. Notice a first backup will be carried out immediately. In this example we are using cron-time expresions. You can find extra info on those using "backup --help". Backups will be stored as: ``` /remote/path/myfolder_bk_TIME1 /remote/path/myfolder_bk_TIME2 /remote/path/myfolder_bk_TIME3 ... ``` ## Listing You can list the backups configured typing `backup`: ``` TAG LOCALPATH REMOTEPARENTPATH STATUS 4 /path/mega/folder /remote/path ACTIVE ``` Notice the TAG. You can use it to refer to the backup if you wan to change its configuration or delete/abort it. ### Extra info If you type "backup -l" you will see extra information concerning the backup. Here, you will see when the next backup is scheduled for: ``` TAG LOCALPATH REMOTEPARENTPATH STATUS 4 /path/mega/folder /remote/path ONGOING Max Backups: 4 Period: "0 0 4 * * *" Next backup scheduled for: Fri, 19 Jan 2018 04:00:00 +0000 -- CURRENT/LAST BACKUP -- FILES UP/TOT FOLDERS CREATED PROGRESS 22/33 0 57.86/57.86 KB 1.27% ``` Also, you can see the progress of the current backup (or the last one is there is no backup being performed a the moment) ### Backup history: With "backup -h" you will be able to see the existing backups with their state and start time: ``` TAG LOCALPATH REMOTEPARENTPATH STATUS 4 /path/mega/folder /remote/path ONGOING -- SAVED BACKUPS -- NAME DATE STATUS FILES FOLDERS myfolder_bk_20180115175811 15Jan2018 17:58:11 COMPLETE 33 10 myfolder_bk_20180116182611 16Jan2018 18:26:11 COMPLETE 33 10 myfolder_bk_20180117182711 17Jan2018 18:27:11 ABORTED 13 10 myfolder_bk_20180118182911 18Jan2018 18:29:11 ONGOING 23 10 ``` Tip: If you are using linux/mac you can monitor the status actively in non-interactive mode with: ``` watch mega-backup -lh ``` # Control: ## Abort You can abort an ONGOING backup using its tag or it's local path. e.g.: ``` backup -a 4 ``` This will cancel all transfers and set the backup as ABORTED ## Delete Similarly you can remove a backup, to no longer backup that folder with: ``` backup -d /path/mega/folder ``` This will not remove the existing backups wich will be available in MEGA. ## Change configuration Similarly you can change the period or the number of backups to keep with: ``` backup 4 --period=2h ``` This will set our backup with TAG=4 to have a period of 2 hours. ``` backup /path/mega/folder --num-backups=1 ``` This will configure the backup to only keep one instance. Notice that in order not to lose data, older instances will not be deleted until the max number of backups is passed. MEGAcmd-2.5.2_Linux/contrib/docs/DEBUG.md000066400000000000000000000140341516543156300176470ustar00rootroot00000000000000# Debugging MEGAcmd There are two different kinds of logging messages: - MEGAcmd: these messages are reported by MEGAcmd itself. These messages will show information regarding the processing of user commands. They will be labeled with `cmd`. - SDK: these messages are reported by the sdk and its dependent libraries. These messages will show information regarding requests, transfers, network, etc. They will be labeled with `sdk`. The MEGAcmd server logs messages depending on the level of log adjusted to those two categories. You can adjust the level of logging for those kinds with `log` command. Log levels range from FATAL (the lowest) to VERBOSE (the highest). The log level of each message is displayed after the cmd/sdk prefix. Here's an example of some random log messages: ``` 2025-02-07_16-47-56.662269 cmd DBG Registering state listener petition with socket: 85 [comunicationsmanagerfilesockets.cpp:189] 2025-02-07_16-47-56.662366 cmd DTL Unregistering no longer listening client. Original petition: registerstatelistener [comunicationsmanagerfilesockets.cpp:346] 2025-02-07_16-47-56.662671 sdk INFO Request (RETRY_PENDING_CONNECTIONS) starting [megaapi_impl.cpp:16964] ``` The source file and line the message was logged from is appended at the end of the log message, to help developers quickly find out where they came from. ## How to access the logs Logs coming from MEGAcmd are written to the `megacmdserver.log` file. This file is not removed across restarts, so when it gets too large it is automatically compressed and renamed to include a timestamp (without stopping the logging). The log file is located in `$HOME/.megaCmd` for Linux and macOS, and `%LOCALAPPDATA%\MEGAcmd\.megaCmd` for Windows. ## Verbosity on startup You can start the server with higher level of verbosity in order to have log levels increased at startup, regardless of the log level configured by the `log` command mentioned above. You will need to pass `--debug-full` as an argument to the executable (e.g: `MEGAcmdServer.exe --debug-full`). Alternatively, you can set the `MEGACMD_LOGLEVEL` environment variable to `FULLVERBOSE` before starting the server. If you want other startup level of logging, you can use the following: * `--debug` or `MEGACMD_LOGLEVEL=DEBUG` will set ``` MEGAcmd log level = DEBUG SDK log level = DEFAULT ``` * `--debug-full` or `MEGACMD_LOGLEVEL=DEBUG` will set ``` MEGAcmd log level = DEBUG SDK log level = DEBUG ``` * `--verbose` or `MEGACMD_LOGLEVEL=VERBOSE` will set ``` MEGAcmd log level = VERBOSE SDK log level = DEFAULT ``` * `--verbose-full` or `MEGACMD_LOGLEVEL=FULLVERBOSE` will set ``` MEGAcmd log level = VERBOSE SDK log level = VERBOSE ``` ## Controlling verbosity of a single command In general, as we've mentioned before, lower verbosity log messages are not printed directly to the console. Only errors are. You can pass `-v`, `-vv`, and `-vvv` when running a command to ensure warning, debug, and verbose messages are printed (respectively). Note that this is only for the console; log level of `megacmdserver.log` will follow the rules explained above. ## JSON logs When the log level of the SDK is `VERBOSE`, the entire JSON payload of the HTTP requests sent and received from the API will be logged. This takes up a bit more space but provides more valuable info. Full JSON logging can be overwritten independently by setting the environment variable `MEGACMD_JSON_LOGS` to `0` or `1`. ## Configuring the Rotating Logger The MEGAcmd logger rotates and compresses log files to avoid taking up too much space. Some of its values can be configured to fit the needs of specific systems. These are: * `RotationType`: The type of rotation to use. Possible values are _Timestamp_ and _Numbered_. Defaults to _Timestamp_. * Numbered rotation will add a "file number" suffix when rotating files, keeping track of the total number and removing them if there are more than `MaxFilesToKeep`. * Timestamp rotation will keep track of the total number (similarly to above), while also keeping track of the creation date of files, removing them if they're older than `MaxFileAge`. * `CompressionType`: The type of compression to use. Possible values are _Gzip_ and _None_ (which disables compression). Defaults to _Gzip_. * `MaxFileMB`: The maximum size the `megacmdserver.log` file can be, in megabytes. If it gets over this size, it'll be renamed and compressed according to the rules stated above. Default is usually 50 MB, but will be less for disks with limited space. * `MaxFilesToKeep`: The maximum amount of rotated files allowed. When the total file count exceeds this value, older files will be removed. Default depends on `MaxFileMB`, the compression used, and the system specs. * `MaxFileAgeSeconds`: The maximum age the rotated files can be before being deleted, in seconds. Defaults to 1 month. _Note_: Only used by timestamp-based rotation. * `MaxMessageBusMB`: The maximum memory allowed by the logger's internal bus, in megabytes. Defaults to 512 MB. In most cases, the logger will use way less RAM; it is recommended to check memory usage before changing this value. To configure them we must manually edit the `megacmd.cfg` file. This file must be present in the same directory as the `megacmdserver.log` file; if not, we can manually create it. The following is an example of the syntax of this file: ``` RotatingLogger:RotationType=Timestamp RotatingLogger:CompressionType=None RotatingLogger:MaxFileMB=40.25 RotatingLogger:MaxFilesToKeep=20 RotatingLogger:MaxFileAgeSeconds=3600 RotatingLogger:MaxMessageBusMB=64.0 ``` Values not present in it will be set to their default. Invalid values (such as negative sizes) will be silently discarded. Note that this configuration is only loaded at the start, so the MEGAcmd server must be restarted after adding or changing any of the values. Configuring the Rotating Logger might result in previous log files not being rotated or deleted properly. It is recommended to delete them manually (or moving them somewhere else, if we want to preserve them) before changing the configuration. MEGAcmd-2.5.2_Linux/contrib/docs/FTP.md000066400000000000000000000152131516543156300174520ustar00rootroot00000000000000# MEGA-FTP - Serve you files as a FTP server with MEGAcmd This is a brief tutorial on how to configure [ftp](https://en.wikipedia.org/wiki/File_Transfer_Protocol) server. Configuring a FTP server will let you access your MEGA files as if they were located in your computer. All major platforms support access to FTP server. See [`Platform`](#platforms) usage. Notice: the commands listed here assume you are using the interactive interaction mode: they are supposed to be executed within MEGAcmdShell. ## Serving a folder Example: ``` ftp /path/mega/folder ``` This will configure a FTP server that will serve "myfolder". It'll show you the URL to access that path. You just use that location to configure access [according to your specific OS](#platforms). Once you have it configured, you can browse, edit, copy and delete your files using your favourite FTP client or add mount the network location and browse your files as if they were local file in your computer.. Caveat: They are not local, MEGAcmd transparently download/upload decrypt/encrypt those files. Hence, throughput will be decreased as compared to accessing to local files. Be patient. ## Streaming You can "ftp" a file, so as to offer streaming access to it: ``` ftp /path/to/myfile.mp4 ``` You will receive an URL that you can use in your preferred video player. ## Issues We have detected some issues with different software, when trying to save a file into a ftp served locations. Typically with software that creates temporary files. We will keep on trying to circumvent those. In FileZilla, default 20 seconds timeout (Edit -> Preferences -> Connection) will likely stop uploads before they are completed: once a upload is started, it begins to populate a temporary file. Once completed, the actual upload begins (the file gets transfered to MEGA), but no extra traffic is perceived by FileZilla during this time. If the upload takes longer than 20 seconds, it times out. You might want to increase that number for a correct behaviour. In Linux, using gvfsd-dav (Gnome's default ftp client), we have seen problems when trying to reproduce videos within an FTP served location. Recommended alternative: Use VLC. Open it, and drag & drop the file into VLC window. This will open the FTP URL and start streaming you video. If you find any more issues, don't hesitate to write to support@mega.nz, explaining what the problem is and how to reproduce it. ## Listing You can list the ftp served locations typing `ftp`: ``` FTP SERVED LOCATIONS: /path/mega/folder: ftp://127.0.0.1:4990/XXXXXXX/myfolder /path/to/myfile.mp4: ftp://127.0.0.1:4990/YYYYYYY/myfile.mp4 ``` These locations will be available as long as MEGAcmd is running. The configuration is persisted, and will be restored every time you restart MEGAcmd # Additional features/configurations ## Port & public server When you serve your first location, a FTP server is configured in port `4990`. You can change the port passing `--port=PORT` to your ftp command. Currently *only passive mode* is available. If your client does not work with passive FTP mode, it won't work. Data connections will work in the range of ports 1500 to 1600 by default. You can change those passing `--data-port=BEGIN-END` By default, the server is only accessible from the local machine. You can pass `--public` to your ftp command so as to allow remote access. In that case, use the IP of your server to access to it. ## FTPS Files in MEGA are encrypted, but you should bear in mind that the bare FTP server offers your files unencrypted. \ If you wish to add authenticity to your ftp server and integrity & privacy of the data transfered to/from the clients, you can secure it with [TLS](https://wikipedia.org/wiki/Transport_Layer_Security). Notice that FTPs is not the same as [SFTP](https://es.wikipedia.org/wiki/SSH_File_Transfer_Protocol), which is a complete different yet unsupported protocol. To serve via FTPS, you just need to pass `--tls` and the paths* to your certificate and key files (in PEM format): ``` ftp /path/mega/folder --tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key ``` *Those paths are local paths in your machine, not in MEGA. Currently, MEGAcmd only supports one server: although you can serve different locations, only one configuration is possible. The configuration used will be the one on your first served location. If you want to change that configuration you will need to stop serving each and every path and start over. ## Stop serving You can stop serving a MEGA location with: ``` ftp -d /path/mega/folder ``` If successfully, it will show a message indicating that the path is no longer served: ``` /path/mega/folder no longer served via ftp ``` ## Platforms All major platforms support accessing/mounting a ftp location. Here are some instructions to do that in Windows, Linux & Mac. ### Windows This instructions refer to Windows 10, but they are similar in other windows. Open an Explorer window, and then do right click on "This PC", and then "Add a network location...". ![ftpMenuWin.png](pics/ftpMenuWin.png?raw=true "ftpMenuWin.png") Then enter the URL MEGAcmd gave you ![ftpConnectToServerWin.png](pics/ftpConnectToServerWin.png?raw=true "ftpConnectToServerWin.png") And select "Log on Anonymously" ![ftpConnectToServerWin2.png](pics/ftpConnectToServerWin2.png?raw=true "ftpConnectToServerWin2.png") Then, you should see the new location in the navigation panel now. Windows FTP client does not allow writing, if you wish to modify your files you should either use an alternative client (like FileZilla), or perhaps serve your files using WEBDAV instead of FTP. ### Mac Open Find and in the Menu "Go", select "Connect to Server", or type **⌘ - k**: ![webdavMenuMac.png](pics/webdavMenuMac.png?raw=true "webdavMenuMac.png") Then enter the URL MEGAcmd gave you ![ftpConnectToServerMac.png](pics/ftpConnectToServerMac.png?raw=true "ftpConnectToServerMac.png") At the moment of writing this tutorial, there is no authentication mechanisms, hence you don't need to worry about providing a user name/password. Just proceed if you are prompted with default options. You should see the new location in the navigation panel now. ### Linux This instructions are for Nautilus, it should be similar using another file browser. Notice that `gvfs` currently does not support FTPs Click on File -> Connect to Server: ![webdavMenuLinux.png](pics/webdavMenuLinux.png?raw=true "webdavMenuLinux.png") Then enter the URL MEGAcmd gave you ![ftpConnectToServerLinux.png](pics/ftpConnectToServerLinux.png?raw=true "ftpConnectToServerLinux.png") You should see the new location in the navigation panel now. MEGAcmd-2.5.2_Linux/contrib/docs/FUSE.md000066400000000000000000000107511516543156300175650ustar00rootroot00000000000000# MEGA-FUSE — Serve your files as a "Filesystem in Userspace" (FUSE) with MEGAcmd This is a brief tutorial on how to configure and manage [FUSE](https://en.wikipedia.org/wiki/Filesystem_in_Userspace) with MEGAcmd. Configuring a FUSE mount will let you access your MEGA files as if they were located in your computer. After enabling a FUSE mount, you can use your favourite tools to browse, play, and edit your MEGA files. Note: this functionality is in beta, and not supported on macOS. ## Local cache MEGAcmd will use a cache to place files while working with mount points. This cache will be used to store both files downloaded from MEGA, and files being uploaded to MEGA. It will be created automatically in `$HOME/.megaCmd/fuse-cache` (`%LOCALAPPDATA%\MEGAcmd\.megaCmd\fuse-cache` in Windows). Bear in mind that this cache is fundamental to be able to work with FUSE mounts. Cache files are removed automatically. Restarting the MEGAcmd Server may help reduce the space used by the cache. ### Important caveats Files and folders created locally may not be immediately available in your MEGA cloud: the mount engine will transfer them transparently in the background. Note that the MEGAcmd Server needs to be running in order for these actions to complete. ## Streaming Currently, streaming is not directly supported. In order to open files in a FUSE mount point, they need to be downloaded completely to the local cache folder. You will need space in your hard drive to accomodate for these files. ## Usage ### Creating a new mount You can create a new FUSE mount with: ``` $ fuse-add /local/path/to/fuse/mountpoint /cloud/dir ``` After creating the mount, MEGAcmd will try to enable it; if it fails, the mount will remain disabled. See [`fuse-add`](commands/fuse-add.md) for all the possible options and arguments. The mount will have an associated name that we can use to refer to it when managing it. The name must be unique. A custom name can be chosen on creation with the `--name=custom_name` argument. We might also refer to a mount by its local path, but this is not necessarily unique: if multiple mounts share the same local path, we *must* use the name so we can distinguish between them. ### Displaying mounts The list of existing mounts can be displayed with: ``` $ fuse-show NAME LOCAL_PATH REMOTE_PATH PERSISTENT ENABLED dir /local/path/to/fuse/mountpoint /cloud/dir YES YES ``` Use `fuse-show ` to get further details on a specific mount. See [`fuse-show`](commands/fuse-show.md) for the list of all possible options and arguments. ### Enabling/disabling mounts To make your cloud files available in your local filesystem, the mount must be enabled. We can do so with: ``` $ fuse-enable ``` Note: mounts are enabled when created by default (unless `--disabled` is used). Similarly, we can stop exposing our cloud files locally with: ``` $ fuse-disable ``` Note: disabled mounts still exist and are shown in `fuse-show`. See [`fuse-enable`](commands/fuse-enable.md) and [`fuse-disable`](commands/fuse-disable.md) for more information on these commands. ### Adjusting configuration As we've mentioned before, the full details of a mount can be displayed with: ``` $ fuse-show dir Showing details of mount "dir" Local path: /local/path/to/fuse/mountpoint Remote path: /cloud/dir Name: dir Persistent: YES Enabled: YES Enable at startup: YES Read-only: NO ``` To configure these flags, we can use the [`fuse-config`](commands/fuse-config.md) command. For example, to make the mount read-only, we would do: ``` $ fuse-config --read-only=yes dir Mount "dir" now has the following flags Name: dir Enable at startup: YES Persistent: YES Read-only: YES ``` ### Removing mounts A mount can be removed with: ``` $ fuse-remove ``` Note: mounts must be disabled before they can be removed. ## Issues Occasionally, you may encounter issues in FUSE mounts that cannot be directly resolved within MEGAcmd (for example, if the MEGAcmd server was closed abruptly). The most common one is: "Error: cannot access '/local/path/to/fuse/mountpoint': Transport endpoint is not connected". To fix them, in Linux, you might need to use the `fusermount` command like so: ``` fusermount -u /local/path/to/fuse/mountpoint ``` Adding `-z` may help if the above fails. See the [fusermount man page](https://www.man7.org/linux/man-pages/man1/fusermount3.1.html). MEGAcmd-2.5.2_Linux/contrib/docs/WEBDAV.md000066400000000000000000000131231516543156300177670ustar00rootroot00000000000000# MEGA-WEBDAV - Serve you files as a WEBDAV server with MEGAcmd This is a brief tutorial on how to configure [webdav](https://wikipedia.org/wiki/WebDAV) server. Configuring a WEBDAV server will let you access your MEGA files as if they were located in your computer. All major platforms support access to WEBDAV server. See [`Platform`](#platforms) usage. Notice: the commands listed here assume you are using the interactive interaction mode: they are supposed to be executed within MEGAcmdShell. ## Serving a folder Example: ``` webdav /path/mega/folder ``` This will configure a WEBDAV server that will serve "myfolder". It'll show you the URL to access that path. You just use that location to configure access [according to your specific OS](#platforms). Once you have it configured, you can browse, edit, copy and delete your files as if they were local file in your computer. Caveat: They are not local, MEGAcmd transparently download/upload decrypt/encrypt those files. Hence, throughput will be decreased as compared to accessing to local files. Be patient. ## Streaming You can "webdav" a file, so as to offer streaming access to it: ``` webdav /path/to/myfile.mp4 ``` You will receive an URL that you can use in your favourite video player. ## Issues We have detected some issues with different software, when trying to save a file into a webdav served locations. Typically with software that creates temporary files. We will keep on trying to circumvent those. In Linux, using gvfsd-dav (Gnome's default webdav client), we have occasionally seen problems trying to open text files that have already been modified using some graphic editors. This is due to that gvfsd-dav tries to retrieve a URL different to the actual URL of the files. Reading the files through the console works just fine. This has been detected in Ubuntu 16.04. In Windows XP, copying a file from a MEGA webdav location, and pasting in a local folder does nothing. If you find any more issues, don't hesitate to write to support@mega.nz, explaining what the problem is and how to reproduce it. ## Listing You can list the webdav served locations typing `webdav`: ``` WEBDAV SERVED LOCATIONS: /path/mega/folder: http://127.0.0.1:4443/XXXXXXX/myfolder /path/to/myfile.mp4: http://127.0.0.1:4443/YYYYYYY/myfile.mp4 ``` These locations will be available as long as MEGAcmd is running. The configuration is persisted, and will be restored everytime you restart MEGAcmd # Additional features/configurations ## Port & public server When you serve your first location, a WEBDAV server is configured in port `4443`. You can change the port passing `--port=PORT` to your webdav command. By default, the server is only accessible from the local machine. You can pass `--public` to your webdav command so as to allow remote access. In that case, use the IP of your server to access to it. ## HTTPS Files in MEGA are encrypted, but you should bear in mind that the HTTP webdav server offers your files unencrypted. \ If you wish to add authenticity to your webdav server and integrity & privacy of the data transfered to/from the clients, you can secure it with [TLS](https://wikipedia.org/wiki/Transport_Layer_Security). You just need to pass `--tls` and the paths* to your certificate and key files (in PEM format): ``` webdav /path/mega/folder --tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key ``` *Those paths are local paths in your machine, not in MEGA. Currently, MEGAcmd only supports one server: although you can serve different locations, only one configuration is possible. The configuration used will be the one on your first served location. If you want to change that configuration you will need to stop serving each and every path and start over. ## Stop serving You can stop serving a MEGA location with: ``` webdav -d /path/mega/folder ``` If successfully, it will show a message indicating that the path is no longer served: ``` /path/mega/folder no longer served via webdav ``` ## Platforms All major platforms support accesing/mounting a webdav location. Here are some instructions to do that in Windows, Linux & Mac. ### Windows This instructions refer to Windows 10, but they are similar in other windows. Open an Explorer window, and then do right click on "This PC", and then "Map network drive...". ![webdavMenuWin.png](pics/webdavMenuWin.png?raw=true "webdavMenuWin.png") Then enter the URL MEGAcmd gave you ![webdavConnectToServerWin.png](pics/webdavConnectToServerWin.png?raw=true "webdavConnectToServerWin.png") Then, you should see the new location in the navigation panel now. ### Mac Open Find and in the Menu "Go", select "Connect to Server", or type **⌘ - k**: ![webdavMenuMac.png](pics/webdavMenuMac.png?raw=true "webdavMenuMac.png") Then enter the URL MEGAcmd gave you ![webdavConnectToServerMac.png](pics/webdavConnectToServerMac.png?raw=true "webdavConnectToServerMac.png") At the moment of writing this tutorial, there is no authentication mechanisms, hence you don't need to worry about providing a user name/password. Just proceed if you are prompted with default options. You should see the new location in the navigation panel now. ### Linux This instructions are for Nautilus, it should be similar using another file browser. Click on File -> Connect to Server: ![webdavMenuLinux.png](pics/webdavMenuLinux.png?raw=true "webdavMenuLinux.png") Then enter the URL MEGAcmd gave you ![webdavConnectToServerLinux.png](pics/webdavConnectToServerLinux.png?raw=true "webdavConnectToServerLinux.png") You should see the new location in the navigation panel now. MEGAcmd-2.5.2_Linux/contrib/docs/commands/000077500000000000000000000000001516543156300202765ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/contrib/docs/commands/attr.md000066400000000000000000000012771516543156300216010ustar00rootroot00000000000000### attr Lists/updates node attributes. Usage: `attr remotepath [--force-non-officialficial] [-s attribute value|-d attribute [--print-only-value]`
Options:
 -s     attribute value         Sets an attribute to a value
 -d     attribute               Removes the attribute
 --print-only-value     When listing attributes, print only the values, not the attribute names.
 --force-non-official   Forces using the custom attribute version for officially recognized attributes.
                        Note that custom attributes are internally stored with a `_` prefix.
                        Use this option to show, modify or delete a custom attribute with the same name as one official.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/autocomplete.md000066400000000000000000000006731516543156300233270ustar00rootroot00000000000000### autocomplete Modifies how tab completion operates. Usage: `autocomplete [dos | unix]`
The default is to operate like the native platform. However
you can switch it between mode 'dos' and 'unix' as you prefer.
Options:
 dos	Each press of tab places the next option into the command line
 unix	Options are listed in a table, or put in-line if there is only one

Note: this command is only available on some versions of Windows
MEGAcmd-2.5.2_Linux/contrib/docs/commands/backup.md000066400000000000000000000117511516543156300220720ustar00rootroot00000000000000### backup Controls backups Usage: `backup (localpath remotepath --period="PERIODSTRING" --num-backups=N | [-lhda] [TAG|localpath] [--period="PERIODSTRING"] [--num-backups=N]) [--time-format=FORMAT]`
This command can be used to configure and control backups.
A tutorial can be found here: https://github.com/meganz/MEGAcmd/blob/master/contrib/docs/BACKUPS.md

If no argument is given it will list the configured backups
 To get extra info on backups use -l or -h (see Options below)

When a backup of a folder (localfolder) is established in a remote folder (remotepath)
 MEGAcmd will create subfolder within the remote path with names like: "localfoldername_bk_TIME"
 which shall contain a backup of the local folder at that specific time
In order to configure a backup you need to specify the local and remote paths,
the period and max number of backups to store (see Configuration Options below).
Once configured, you can see extended info asociated to the backup (See Display Options)
Notice that MEGAcmd server need to be running for backups to be created.

Display Options:
-l	Show extended info: period, max number, next scheduled backup
  	 or the status of current/last backup
-h	Show history of created backups
  	Backup states:
  	While a backup is being performed, the backup will be considered and labeled as ONGOING
  	If a transfer is cancelled or fails, the backup will be considered INCOMPLETE
  	If a backup is aborted (see -a), all the transfers will be canceled and the backup be ABORTED
  	If MEGAcmd server stops during a transfer, it will be considered MISCARRIED
  	  Notice that currently when MEGAcmd server is restarted, ongoing and scheduled transfers
  	  will be carried out nevertheless.
  	If MEGAcmd server is not running when a backup is scheduled and the time for the next one has already arrived,
  	 an empty BACKUP will be created with state SKIPPED
  	If a backup(1) is ONGOING and the time for the next backup(2) arrives, it won't start until the previous one(1)
  	 is completed, and if by the time the first one(1) ends the time for the next one(3) has already arrived,
  	 an empty BACKUP(2) will be created with state SKIPPED
 --path-display-size=N	Use a fixed size of N characters for paths
 --time-format=FORMAT	show time in available formats. Examples:
               RFC2822:  Example: Fri, 06 Apr 2018 13:05:37 +0200
               ISO6081:  Example: 2018-04-06
               ISO6081_WITH_TIME:  Example: 2018-04-06T13:05:37
               SHORT:  Example: 06Apr2018 13:05:37
               SHORT_UTC:  Example: 06Apr2018 13:05:37
               CUSTOM. e.g: --time-format="%Y %b":  Example: 2018 Apr
                 You can use any strftime compliant format: http://www.cplusplus.com/reference/ctime/strftime/

Configuration Options:
--period="PERIODSTRING"	Period: either time in TIMEFORMAT (see below) or a cron like expression
                       	 Cron like period is formatted as follows
                       	  - - - - - -
                       	  | | | | | |
                       	  | | | | | |
                       	  | | | | | +---- Day of the Week   (range: 1-7, 1 standing for Monday)
                       	  | | | | +------ Month of the Year (range: 1-12)
                       	  | | | +-------- Day of the Month  (range: 1-31)
                       	  | | +---------- Hour              (range: 0-23)
                       	  | +------------ Minute            (range: 0-59)
                       	  +-------------- Second            (range: 0-59)
                       	 examples:
                       	  - daily at 04:00:00 (UTC): "0 0 4 * * *"
                       	  - every 15th day at 00:00:00 (UTC) "0 0 0 15 * *"
                       	  - mondays at 04.30.00 (UTC): "0 30 4 * * 1"
                       	 TIMEFORMAT can be expressed in hours(h), days(d),
                       	   minutes(M), seconds(s), months(m) or years(y)
                       	   e.g. "1m12d3h" indicates 1 month, 12 days and 3 hours
                       	  Notice that this is an uncertain measure since not all months
                       	  last the same and Daylight saving time changes are not considered
                       	  If possible use a cron like expression
                       	Notice: regardless of the period expression, the first time you establish a backup,
                       	 it will be created immediately
--num-backups=N	Maximum number of backups to store
                 	 After creating the backup (N+1) the oldest one will be deleted
                 	  That might not be true in case there are incomplete backups:
                 	   in order not to lose data, at least one COMPLETE backup will be kept
Use backup TAG|localpath --option=VALUE to modify existing backups

Management Options:
-d TAG|localpath	Removes a backup by its TAG or local path
                	 Folders created by backup won't be deleted
-a TAG|localpath	Aborts ongoing backup

Caveat: This functionality is in BETA state. If you experience any issue with this, please contact: support@mega.nz
MEGAcmd-2.5.2_Linux/contrib/docs/commands/cancel.md000066400000000000000000000005471516543156300220530ustar00rootroot00000000000000### cancel Cancels your MEGA account Usage: `cancel`
Caution: The account under this email address will be permanently closed
 and your data deleted. This can not be undone.

The cancellation will not take place immediately. You will need to confirm the cancellation
using a link that will be delivered to your email. See "confirmcancel --help"
MEGAcmd-2.5.2_Linux/contrib/docs/commands/cat.md000066400000000000000000000004501516543156300213660ustar00rootroot00000000000000### cat Prints the contents of remote files Usage: `cat remotepath1 remotepath2 ...`
To avoid issues with encoding on Windows, if you want to cat the exact binary contents of a remote file into a local one,
use non-interactive mode with -o /path/to/file. See help "non-interactive"
MEGAcmd-2.5.2_Linux/contrib/docs/commands/cd.md000066400000000000000000000002201516543156300212000ustar00rootroot00000000000000### cd Changes the current remote folder Usage: `cd [remotepath]`
If no folder is provided, it will be changed to the root folder
MEGAcmd-2.5.2_Linux/contrib/docs/commands/clear.md000066400000000000000000000000471516543156300217070ustar00rootroot00000000000000### clear Clear screen Usage: `clear` MEGAcmd-2.5.2_Linux/contrib/docs/commands/codepage.md000066400000000000000000000012641516543156300223720ustar00rootroot00000000000000### codepage Switches the codepage used to decide which characters show on-screen. Usage: `codepage [N [M]]`
MEGAcmd supports unicode or specific code pages.  For european countries you may need
to select a suitable codepage or secondary codepage for the character set you use.
Of course a font containing the glyphs you need must have been selected for the terminal first.
Options:
 (no option)	Outputs the selected code page and secondary codepage (if configured).
 N	Sets the main codepage to N. 65001 is Unicode.
 M	Sets the secondary codepage to M, which is used if the primary can't translate a character.

Note: this command is only available on some versions of Windows
MEGAcmd-2.5.2_Linux/contrib/docs/commands/configure.md000066400000000000000000000016261516543156300226060ustar00rootroot00000000000000### configure Shows and modifies global configurations. Usage: `configure [key [value]]`
If no keys are provided, it will list all configuration keys and values.
If a key is provided, but no value given, it will only show the value of such key.
If a key and value are provided, it will set the value of that key.

Possible keys:
 - max_nodes_in_cache      Max nodes loaded in memory.
                           This controls the number of nodes that the SDK stores in memory.
 - exported_folders_sdks   Number of additional SDK instances loaded at startup.
                           This controls the number of SDK instances that are created at
                           startup in order to download or import contents from exported
                           folder links. Default 5. Min 0. Max 20. If set to 0, you will not
                           be able to download or import from folder links.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/confirm.md000066400000000000000000000003061516543156300222540ustar00rootroot00000000000000### confirm Confirm an account using the link provided after the "signup" process. Usage: `confirm link email password`
It requires the email and the password used to obtain the link.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/confirmcancel.md000066400000000000000000000003551516543156300234260ustar00rootroot00000000000000### confirmcancel Confirms the cancellation of your MEGA account Usage: `confirmcancel link password`
Caution: The account under this email address will be permanently closed
 and your data deleted. This can not be undone.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/cp.md000066400000000000000000000012141516543156300212200ustar00rootroot00000000000000### cp Copies files/folders into a new location (all remotes) Usage: `cp [--use-pcre] srcremotepath [srcremotepath2 srcremotepath3 ..] dstremotepath|dstemail:`
If the location exists and is a folder, the source will be copied there
If the location doesn't exist, and only one source is provided,
 the file/folder will be copied and renamed to the destination name given.

If "dstemail:" provided, the file/folder will be sent to that user's inbox (//in)
 e.g: cp /path/to/file user@doma.in:
 Remember the trailing ":", otherwise a file with the name of that user ("user@doma.in") will be created
Options:
 --use-pcre	use PCRE expressions
MEGAcmd-2.5.2_Linux/contrib/docs/commands/debug.md000066400000000000000000000002001516543156300216760ustar00rootroot00000000000000### debug Enters debugging mode (HIGHLY VERBOSE) Usage: `debug`
For a finer control of log level see "log --help"
MEGAcmd-2.5.2_Linux/contrib/docs/commands/deleteversions.md000066400000000000000000000011551516543156300236550ustar00rootroot00000000000000### deleteversions Deletes previous versions. Usage: `deleteversions [-f] (--all | remotepath1 remotepath2 ...) [--use-pcre]`
This will permanently delete all historical versions of a file.
The current version of the file will remain.
Note: any file version shared to you from a contact will need to be deleted by them.

Options:
 -f   	Force (no asking)
 --all	Delete versions of all nodes. This will delete the version histories of all files (not current files).
 --use-pcre	use PCRE expressions

To see versions of a file use "ls --versions".
To see space occupied by file versions use "du --versions".
MEGAcmd-2.5.2_Linux/contrib/docs/commands/df.md000066400000000000000000000003251516543156300212110ustar00rootroot00000000000000### df Shows storage info Usage: `df [-h]`
Shows total storage used in the account, storage per main folder (see mount)

Options:
 -h	Human readable sizes. Otherwise, size will be expressed in Bytes
MEGAcmd-2.5.2_Linux/contrib/docs/commands/du.md000066400000000000000000000010441516543156300212270ustar00rootroot00000000000000### du Prints size used by files/folders Usage: `du [-h] [--versions] [remotepath remotepath2 remotepath3 ... ] [--use-pcre]`
remotepath can be a pattern (Perl Compatible Regular Expressions with "--use-pcre"
   or wildcarded expressions with ? or * like f*00?.txt)

Options:
 -h	Human readable
 --versions	Calculate size including all versions.
   	You can remove all versions with "deleteversions" and list them with "ls --versions"
 --path-display-size=N	Use a fixed size of N characters for paths
 --use-pcre	use PCRE expressions
MEGAcmd-2.5.2_Linux/contrib/docs/commands/errorcode.md000066400000000000000000000001121516543156300225760ustar00rootroot00000000000000### errorcode Translate error code into string Usage: `errorcode number` MEGAcmd-2.5.2_Linux/contrib/docs/commands/exclude.md000066400000000000000000000010421516543156300222460ustar00rootroot00000000000000### exclude Manages default exclusion rules in syncs. Usage: `exclude [(-a|-d) pattern1 pattern2 pattern3]`
These default rules will be used when creating new syncs. Existing syncs won't be affected. To modify the exclusion rules of existing syncs, use mega-sync-ignore.

Options:
 -a pattern1 pattern2 ...	adds pattern(s) to the exclusion list
                         	          (* and ? wildcards allowed)
 -d pattern1 pattern2 ...	deletes pattern(s) from the exclusion list

This command is DEPRECATED. Use sync-ignore instead.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/exit.md000066400000000000000000000003051516543156300215670ustar00rootroot00000000000000### exit Quits MEGAcmd Usage: `exit [--only-shell]`
Notice that the session will still be active, and local caches available
The session will be resumed when the service is restarted
MEGAcmd-2.5.2_Linux/contrib/docs/commands/export.md000066400000000000000000000067271516543156300221550ustar00rootroot00000000000000### export Prints/Modifies the status of current exports Usage: `export [-d|-a [--writable] [--mega-hosted] [--password=PASSWORD] [--expire=TIMEDELAY] [-f]] [remotepath] [--use-pcre] [--time-format=FORMAT]`
Options:
 --use-pcre	The provided path will use Perl Compatible Regular Expressions (PCRE)
 -a	Adds an export.
   	Returns an error if the export already exists.
   	To modify an existing export (e.g. to change expiration time, password, etc.), it must be deleted and then re-added.
 --writable	Turn an export folder into a writable folder link. You can use writable folder links to share and receive files from anyone; including people who don’t have a MEGA account. 
           	This type of link is the same as a "file request" link that can be created through the webclient, except that writable folder links are not write-only. Writable folder links and file requests cannot be mixed, as they use different encryption schemes.
           	The auth-key shown has the following format #:. The auth-key must be provided at login, otherwise you will log into this link with read-only privileges. See "mega-login --help" for more details about logging into links.
 --mega-hosted	The share key of this specific folder will be shared with MEGA.
              	This is intended to be used for folders accessible through MEGA's S4 service.
              	Encryption will occur nonetheless within MEGA's S4 service.
 --password=PASSWORD	Protects the export with a password. Passwords cannot contain " or '.
                    	A password-protected link will be printed only after exporting it.
                    	If "mega-export" is used to print it again, it will be shown unencrypted.
                    	Note: only PRO users can protect an export with a password.
 --expire=TIMEDELAY	Sets the expiration time of the export.
                   	The time format can contain hours(h), days(d), minutes(M), seconds(s), months(m) or years(y).
                   	E.g., "1m12d3h" will set an expiration time of 1 month, 12 days and 3 hours (relative to the current time).
                   	Note: only PRO users can set an expiration time for an export.
 -f	Implicitly accepts copyright terms (only shown the first time an export is made).
   	MEGA respects the copyrights of others and requires that users of the MEGA cloud service comply with the laws of copyright.
   	You are strictly prohibited from using the MEGA cloud service to infringe copyright.
   	You may not upload, download, store, share, display, stream, distribute, email, link to, transmit or otherwise make available any files, data or content that infringes any copyright or other proprietary rights of any person or entity.
 -d	Deletes an export.
   	The file/folder itself is not deleted, only the export link.
 --time-format=FORMAT	show time in available formats. Examples:
               RFC2822:  Example: Fri, 06 Apr 2018 13:05:37 +0200
               ISO6081:  Example: 2018-04-06
               ISO6081_WITH_TIME:  Example: 2018-04-06T13:05:37
               SHORT:  Example: 06Apr2018 13:05:37
               SHORT_UTC:  Example: 06Apr2018 13:05:37
               CUSTOM. e.g: --time-format="%Y %b":  Example: 2018 Apr
                 You can use any strftime compliant format: http://www.cplusplus.com/reference/ctime/strftime/

If a remote path is provided without the add/delete options, all existing exports within its tree will be displayed.
If no remote path is given, the current working directory will be used.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/find.md000066400000000000000000000044001516543156300215360ustar00rootroot00000000000000### find Find nodes matching a pattern Usage: `find [remotepath] [-l] [--pattern=PATTERN] [--type=d|f] [--mtime=TIMECONSTRAIN] [--size=SIZECONSTRAIN] [--use-pcre] [--time-format=FORMAT] [--show-handles|--print-only-handles]`
Options:
 --pattern=PATTERN	Pattern to match (Perl Compatible Regular Expressions with "--use-pcre"
   or wildcarded expressions with ? or * like f*00?.txt)
 --type=d|f           	Determines type. (d) for folder, f for files
 --mtime=TIMECONSTRAIN	Determines time constrains, in the form: [+-]TIMEVALUE
                      	  TIMEVALUE may include hours(h), days(d), minutes(M),
                      	   seconds(s), months(m) or years(y)
                      	  Examples:
                      	   "+1m12d3h" shows files modified before 1 month,
                      	    12 days and 3 hours the current moment
                      	   "-3h" shows files modified within the last 3 hours
                      	   "-3d+1h" shows files modified in the last 3 days prior to the last hour
 --size=SIZECONSTRAIN	Determines size constrains, in the form: [+-]TIMEVALUE
                      	  TIMEVALUE may include (B)ytes, (K)ilobytes, (M)egabytes, (G)igabytes & (T)erabytes
                      	  Examples:
                      	   "+1m12k3B" shows files bigger than 1 Mega, 12 Kbytes and 3Bytes
                      	   "-3M" shows files smaller than 3 Megabytes
                      	   "-4M+100K" shows files smaller than 4 Mbytes and bigger than 100 Kbytes
 --show-handles	Prints files/folders handles (H:XXXXXXXX). You can address a file/folder by its handle
 --print-only-handles	Prints only files/folders handles (H:XXXXXXXX). You can address a file/folder by its handle
 --use-pcre	use PCRE expressions
 -l	Prints file info
 --time-format=FORMAT	show time in available formats. Examples:
               RFC2822:  Example: Fri, 06 Apr 2018 13:05:37 +0200
               ISO6081:  Example: 2018-04-06
               ISO6081_WITH_TIME:  Example: 2018-04-06T13:05:37
               SHORT:  Example: 06Apr2018 13:05:37
               SHORT_UTC:  Example: 06Apr2018 13:05:37
               CUSTOM. e.g: --time-format="%Y %b":  Example: 2018 Apr
                 You can use any strftime compliant format: http://www.cplusplus.com/reference/ctime/strftime/
MEGAcmd-2.5.2_Linux/contrib/docs/commands/ftp.md000066400000000000000000000026671516543156300214240ustar00rootroot00000000000000### ftp Configures a FTP server to serve a location in MEGA Usage: `ftp [-d ( --all | remotepath ) ] [ remotepath [--port=PORT] [--data-ports=BEGIN-END] [--public] [--tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key]] [--use-pcre]`
This can also be used for streaming files. The server will be running as long as MEGAcmd Server is.
If no argument is given, it will list the ftp enabled locations.

Options:
 --d        	Stops serving that location
 --all      	When used with -d, stops serving all locations (and stops the server)
 --public   	*Allow access from outside localhost
 --port=PORT	*Port to serve. DEFAULT=4990
 --data-ports=BEGIN-END	*Ports range used for data channel (in passive mode). DEFAULT=1500-1600
 --tls      	*Serve with TLS (FTPs)
 --certificate=/path/to/certificate.pem	*Path to PEM formatted certificate
 --key=/path/to/certificate.key	*Path to PEM formatted key
 --use-pcre	use PCRE expressions

*If you serve more than one location, these parameters will be ignored and used those of the first location served.
 If you want to change those parameters, you need to stop serving all locations and configure them again.
Note: FTP settings and locations will be saved for the next time you open MEGAcmd, but will be removed if you logout.

Caveat: This functionality is in BETA state. It might not be available on all platforms. If you experience any issue with this, please contact: support@mega.nz
MEGAcmd-2.5.2_Linux/contrib/docs/commands/fuse-add.md000066400000000000000000000044271516543156300223170ustar00rootroot00000000000000### fuse-add Creates a new FUSE mount. Usage: `fuse-add [--name=name] [--disabled] [--transient] [--read-only] localPath remotePath`
Mounts are automatically enabled after being added, making the chosen MEGA folder accessible within the local filesystem.
When a mount is disabled, its configuration will be saved, but the cloud folder will not be mounted locally (see fuse-disable).
Mounts are persisted after restarts and writable by default. You may change these and other options of a FUSE mount with fuse-config.
Use fuse-show to display the list of mounts.

Parameters:
 localPath    [unix only] Specifies where the files contained by remotePath should be visible on the local filesystem.
 remotePath   Specifies what directory (or share) should be exposed on the local filesystem.

Options:
 --name=name  A user friendly name which the mount can be identified by. If not provided, the display name
              of the entity specified by remotePath will be used. If remotePath specifies the entire cloud
              drive, the mount's name will be "MEGA". If remotePath specifies the rubbish bin, the mount's
              name will be "MEGA Rubbish".
 --read-only  Specifies that the mount should be read-only. Otherwise, the mount is writable.
 --transient  Specifies that the mount should be transient, meaning it will be lost on restart.
              Otherwise, the mount is persistent, meaning it will remain across on restarts.
 --disabled   Specifies that the mount should not enabled after being added, and must be enabled manually. See fuse-enable.
              If this option is passed, the mount will not be automatically enabled at startup.

Disclaimer:
    - Streaming is not supported; entire files need to be downloaded completely before being opened.
    - FUSE uses a local cache located in the MEGAcmd configuration folder. Make sure you have enough available space in your hard drive to accommodate new files. Restarting MEGAcmd server can help discard old files.
    - File writes might be deferred. When files are updated in the local mount point, a transfer will be initiated. Your files will be available in MEGA only after pending transfers finish.

FUSE commands are in early BETA. They are not available in macOS. If you experience any issues, please contact support@mega.nz.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/fuse-config.md000066400000000000000000000017611516543156300230320ustar00rootroot00000000000000### fuse-config Modifies the specified FUSE mount configuration. Usage: `fuse-config [--name=name] [--enable-at-startup=yes|no] [--persistent=yes|no] [--read-only=yes|no] (name|localPath)`
Parameters:
 name|localPath   The identifier of the mount we want to remove. It can be one of the following:
                   Name: the user-friendly name of the mount, specified when it was added or by fuse-config.
                   Local path: The local mount point in the filesystem.

Options:
 --name=name                  Sets the friendly name used to uniquely identify the mount.
 --enable-at-startup=yes|no   Controls whether or not the mount should be enabled automatically on startup.
 --persistent=yes|no          Controls whether or not the mount is saved across restarts.
 --read-only=yes|no           Controls whether the mount is read-only or writable.

Note: FUSE commands are in early BETA. They are not available in macOS. If you experience any issues, please contact support@mega.nz.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/fuse-disable.md000066400000000000000000000016061516543156300231660ustar00rootroot00000000000000### fuse-disable Disables a specified FUSE mount. Usage: `fuse-disable [--temporarily] (name|localPath)`
After a mount has been disabled, its cloud entities will no longer be accessible via the mount's local path. You may enable it again via fuse-enable.

Parameters:
 name|localPath   The identifier of the mount we want to remove. It can be one of the following:
                   Name: the user-friendly name of the mount, specified when it was added or by fuse-config.
                   Local path: The local mount point in the filesystem.
Options:
 --temporarily   Specifies whether the mount should be disabled only until the server is restarted.
                 Has no effect on transient mounts, since any action on them is always temporary.

Note: FUSE commands are in early BETA. They are not available in macOS. If you experience any issues, please contact support@mega.nz.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/fuse-enable.md000066400000000000000000000015171516543156300230120ustar00rootroot00000000000000### fuse-enable Enables a specified FUSE mount. Usage: `fuse-enable [--temporarily] (name|localPath)`
After a mount has been enabled, its cloud entities will be accessible via the mount's local path.

Parameters:
 name|localPath   The identifier of the mount we want to remove. It can be one of the following:
                   Name: the user-friendly name of the mount, specified when it was added or by fuse-config.
                   Local path: The local mount point in the filesystem.

Options:
 --temporarily   Specifies whether the mount should be enabled only until the server is restarted.
                 Has no effect on transient mounts, since any action on them is always temporary.

Note: FUSE commands are in early BETA. They are not available in macOS. If you experience any issues, please contact support@mega.nz.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/fuse-remove.md000066400000000000000000000010151516543156300230520ustar00rootroot00000000000000### fuse-remove Deletes a specified FUSE mount. Usage: `fuse-remove (name|localPath)`
Parameters:
 name|localPath   The identifier of the mount we want to remove. It can be one of the following:
                   Name: the user-friendly name of the mount, specified when it was added or by fuse-config.
                   Local path: The local mount point in the filesystem.

Note: FUSE commands are in early BETA. They are not available in macOS. If you experience any issues, please contact support@mega.nz.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/fuse-show.md000066400000000000000000000032741516543156300225460ustar00rootroot00000000000000### fuse-show Displays the list of FUSE mounts and their information. If a name or local path provided, displays information of that mount instead. Usage: `fuse-show [--only-enabled] [--disable-path-collapse] [[--limit=rowcount] | [name|localPath]]`
When all mounts are shown, the following columns are displayed:
   NAME: The user-friendly name of the mount, specified when it was added or by fuse-config.
   LOCAL_PATH: The local mount point in the filesystem.
   REMOTE_PATH: The cloud directory or share that is exposed locally.
   PERSISTENT: If the mount is saved across restarts, "YES". Otherwise, "NO".
   ENABLED: If the mount is currently enabled, "YES". Otherwise, "NO".

Parameters:
 name|localPath   The identifier of the mount we want to remove. It can be one of the following:
                   Name: the user-friendly name of the mount, specified when it was added or by fuse-config.
                   Local path: The local mount point in the filesystem.
                    If not provided, the list of mounts will be shown instead.

Options:
 --only-enabled           Only shows mounts that are enabled.
 --disable-path-collapse  Ensures all paths are fully shown. By default long paths are truncated for readability.
 --limit=rowcount         Limits the amount of rows displayed. Set to 0 to display unlimited rows. Default is unlimited.
 --col-separator=X	Uses the string "X" as column separator. Otherwise, spaces will be added between columns to align them.
 --output-cols=COLUMN_NAME_1,COLUMN_NAME2,...	Selects which columns to show and their order.

Note: FUSE commands are in early BETA. They are not available in macOS. If you experience any issues, please contact support@mega.nz.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/get.md000066400000000000000000000025011516543156300213750ustar00rootroot00000000000000### get Downloads a remote file/folder or a public link Usage: `get [-m] [-q] [--ignore-quota-warn] [--use-pcre] [--password=PASSWORD] exportedlink|remotepath [localpath]`
In case it is a file, the file will be downloaded at the specified folder
                             (or at the current folder if none specified).
  If the localpath (destination) already exists and is the same (same contents)
  nothing will be done. If differs, it will create a new file appending " (NUM)"

For folders, the entire contents (and the root folder itself) will be
                    by default downloaded into the destination folder

Exported links: Exported links are usually formed as publiclink#key.
 Alternativelly you can provide a password-protected link and
 provide the password with --password. Please, avoid using passwords containing " or '


Options:
 -q	queue download: execute in the background. Don't wait for it to end
 -m	if the folder already exists, the contents will be merged with the
                     downloaded one (preserving the existing files)
 --ignore-quota-warn	ignore quota surpassing warning.
                    	  The download will be attempted anyway.
 --password=PASSWORD	Password to decrypt the password-protected link. Please, avoid using passwords containing " or '
 --use-pcre	use PCRE expressions
MEGAcmd-2.5.2_Linux/contrib/docs/commands/graphics.md000066400000000000000000000011171516543156300224200ustar00rootroot00000000000000### graphics Shows if special features related to images and videos are enabled. Usage: `graphics [on|off]`
Use "graphics on/off" to enable/disable it.

Disabling these features will avoid the upload of previews and thumbnails
for images and videos.

It's only recommended to disable these features before uploading files
with image or video extensions that are not really images or videos,
or that are encrypted in the local drive so they can't be analyzed anyway.

Notice that this setting will be saved for the next time you open MEGAcmd, but will be removed if you logout.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/help.md000066400000000000000000000007431516543156300215540ustar00rootroot00000000000000### help Prints list of commands Usage: `help [-f|-ff|--non-interactive|--upgrade|--paths] [--show-all-options]`
Options:
 -f 	Include a brief description of the commands
 -ff	Get a complete description of all commands
 --non-interactive  Display information on how to use MEGAcmd with scripts
 --upgrade          Display information on PRO plans
 --paths            Show caveats of local and remote paths
 --show-all-options Display all options regardless of platform
MEGAcmd-2.5.2_Linux/contrib/docs/commands/https.md000066400000000000000000000005531516543156300217650ustar00rootroot00000000000000### https Shows if HTTPS is used for transfers. Use "https on" to enable it. Usage: `https [on|off]`
HTTPS is not necessary since all data is stored and transferred encrypted.
Enabling it will increase CPU usage and add network overhead.

Notice that this setting will be saved for the next time you open MEGAcmd, but will be removed if you logout.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/import.md000066400000000000000000000006601516543156300221340ustar00rootroot00000000000000### import Imports the contents of a remote link into user's cloud Usage: `import exportedlink [--password=PASSWORD] [remotepath]`
If no remote path is provided, the current local folder will be used
Exported links: Exported links are usually formed as publiclink#key.
 Alternativelly you can provide a password-protected link and
 provide the password with --password. Please, avoid using passwords containing " or '
MEGAcmd-2.5.2_Linux/contrib/docs/commands/invite.md000066400000000000000000000005171516543156300221210ustar00rootroot00000000000000### invite Invites a contact / deletes an invitation Usage: `invite [-d|-r] dstemail [--message="MESSAGE"]`
Options:
 -d	Deletes invitation
 -r	Sends the invitation again
 --message="MESSAGE"	Sends inviting message

Use "showpcr" to browse invitations
Use "ipc" to manage invitations received
Use "users" to see contacts
MEGAcmd-2.5.2_Linux/contrib/docs/commands/ipc.md000066400000000000000000000005771516543156300214040ustar00rootroot00000000000000### ipc Manages contact incoming invitations. Usage: `ipc email|handle -a|-d|-i`
Options:
 -a	Accepts invitation
 -d	Rejects invitation
 -i	Ignores invitation [WARNING: do not use unless you know what you are doing]

Use "mega-invite" to send/remove invitations to other users
Use "mega-showpcr" to browse incoming/outgoing invitations
Use "mega-users" to see contacts
MEGAcmd-2.5.2_Linux/contrib/docs/commands/killsession.md000066400000000000000000000003221516543156300231540ustar00rootroot00000000000000### killsession Kills a session of current user. Usage: `killsession [-a | sessionid1 sessionid2 ... ]`
Options:
 -a	kills all sessions except the current one

To see all sessions use "whoami -l"
MEGAcmd-2.5.2_Linux/contrib/docs/commands/lcd.md000066400000000000000000000004041516543156300213600ustar00rootroot00000000000000### lcd Changes the current local folder for the interactive console Usage: `lcd [localpath]`
It will be used for uploads and downloads

If not using interactive console, the current local folder will be
 that of the shell executing mega comands
MEGAcmd-2.5.2_Linux/contrib/docs/commands/log.md000066400000000000000000000010131516543156300213740ustar00rootroot00000000000000### log Prints/Modifies the log level Usage: `log [-sc] level`
Options:
 -c	CMD log level (higher level messages).
   	 Messages captured by MEGAcmd server.
 -s	SDK log level (lower level messages).
   	 Messages captured by the engine and libs
Note: this setting will be saved for the next time you open MEGAcmd, but will be removed if you logout.

Regardless of the log level of the
 interactive shell, you can increase the amount of information given
   by any command by passing "-v" ("-vv", "-vvv", ...)
MEGAcmd-2.5.2_Linux/contrib/docs/commands/login.md000066400000000000000000000037141516543156300217350ustar00rootroot00000000000000### login Logs into a MEGA account, folder link or a previous session. You can only log into one entity at a time. Usage: `login [--auth-code=XXXX] email password | exportedfolderurl#key [--auth-key=XXXX] [--resume] | passwordprotectedlink [--password=PASSWORD] | session`
Logging into a MEGA account:
	You can log into a MEGA account by providing either a session ID or a username and password. A session ID simply identifies a session that you have previously logged in with using a username and password; logging in with a session ID simply resumes that session. If this is your first time logging in, you will need to do so with a username and password.
Options:
	--auth-code=XXXXXX: If you're logging in using a username and password, and this account has multifactor authentication (MFA) enabled, then this option allows you to pass the MFA token in directly rather than being prompted for it later on. For more information on this topic, please visit https://mega.nz/blog_48.

Logging into a MEGA folder link (an exported/public folder):
	MEGA folder links have the form URL#KEY. To log into one, simply execute the login command with the link.
Options:
	--password=PASSWORD: If the link is a password protected link, then this option can be used to pass in the password for that link.
	--auth-key=AUTHKEY: If the link is a writable folder link, then this option allows you to log in with write privileges. Without this option, you will log into the link with read access only.
	--resume: A convenience option to try to resume from cache. When login into a folder, contrary to what occurs with login into a user account, MEGAcmd will not try to load anything from cache: loading everything from scratch. This option changes that. Note, login using a session string, will of course, try to load from cache. This option may be convenient, for instance, if you previously logged out using --keep-session.

For more information about MEGA folder links, see "mega-export --help".
MEGAcmd-2.5.2_Linux/contrib/docs/commands/logout.md000066400000000000000000000003131516543156300221260ustar00rootroot00000000000000### logout Logs out Usage: `logout [--keep-session]`
Options:
 --keep-session	Keeps the current session. This will also prevent the deletion of cached data associated with current session.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/lpwd.md000066400000000000000000000003711516543156300215670ustar00rootroot00000000000000### lpwd Prints the current local folder for the interactive console Usage: `lpwd`
It will be used for uploads and downloads

If not using interactive console, the current local folder will be
 that of the shell executing mega comands
MEGAcmd-2.5.2_Linux/contrib/docs/commands/ls.md000066400000000000000000000040541516543156300212410ustar00rootroot00000000000000### ls Lists files in a remote path Usage: `ls [-halRr] [--show-handles] [--tree] [--versions] [remotepath] [--use-pcre] [--show-creation-time] [--time-format=FORMAT]`
remotepath can be a pattern (Perl Compatible Regular Expressions with "--use-pcre"
   or wildcarded expressions with ? or * like f*00?.txt)
 Also, constructions like /PATTERN1/PATTERN2/PATTERN3 are allowed

Options:
 -R|-r	List folders recursively
 --tree	Prints tree-like exit (implies -r)
 --show-handles	Prints files/folders handles (H:XXXXXXXX). You can address a file/folder by its handle
 -l	Print summary (--tree has no effect)
   	 SUMMARY contents:
   	   FLAGS: Indicate type/status of an element:
   	     xxxx
   	     |||+---- Sharing status: (s)hared, (i)n share or not shared(-)
   	     ||+----- if exported, whether it is (p)ermanent or (t)temporal
   	     |+------ e/- whether node is (e)xported
   	     +-------- Type(d=folder,-=file,r=root,i=inbox,b=rubbish,x=unsupported)
   	   VERS: Number of versions in a file
   	   SIZE: Size of the file in bytes:
   	   DATE: Modification date for files and creation date for folders (in UTC time):
   	   NAME: name of the node
 -h	Show human readable sizes in summary
 -a	Include extra information
   	 If this flag is repeated (e.g: -aa) more info will appear
   	 (public links, expiration dates, ...)
 --versions	show historical versions
   	You can delete all versions of a file with "deleteversions"
 --show-creation-time	show creation time instead of modification time for files
 --time-format=FORMAT	show time in available formats. Examples:
               RFC2822:  Example: Fri, 06 Apr 2018 13:05:37 +0200
               ISO6081:  Example: 2018-04-06
               ISO6081_WITH_TIME:  Example: 2018-04-06T13:05:37
               SHORT:  Example: 06Apr2018 13:05:37
               SHORT_UTC:  Example: 06Apr2018 13:05:37
               CUSTOM. e.g: --time-format="%Y %b":  Example: 2018 Apr
                 You can use any strftime compliant format: http://www.cplusplus.com/reference/ctime/strftime/
 --use-pcre	use PCRE expressions
MEGAcmd-2.5.2_Linux/contrib/docs/commands/masterkey.md000066400000000000000000000011351516543156300226240ustar00rootroot00000000000000### masterkey Shows your master key. Usage: `masterkey pathtosave`
Your data is only readable through a chain of decryption operations that begins
with your master encryption key (Recovery Key), which MEGA stores encrypted with your password.
This means that if you lose your password, your Recovery Key can no longer be decrypted,
and you can no longer decrypt your data.
Exporting the Recovery Key and keeping it in a secure location
enables you to set a new password without data loss.
Always keep physical control of your master key (e.g. on a client device, external storage, or print)
MEGAcmd-2.5.2_Linux/contrib/docs/commands/mediainfo.md000066400000000000000000000002701516543156300225520ustar00rootroot00000000000000### mediainfo Prints media info of remote files Usage: `mediainfo remotepath1 remotepath2 ...`
Options:
 --path-display-size=N	Use a fixed size of N characters for paths
MEGAcmd-2.5.2_Linux/contrib/docs/commands/mkdir.md000066400000000000000000000002031516543156300217210ustar00rootroot00000000000000### mkdir Creates a directory or a directories hierarchy Usage: `mkdir [-p] remotepath`
Options:
 -p	Allow recursive
MEGAcmd-2.5.2_Linux/contrib/docs/commands/mount.md000066400000000000000000000003011516543156300217540ustar00rootroot00000000000000### mount Lists all the root nodes Usage: `mount`
This includes the root node in your cloud drive, Inbox, Rubbish Bin
and all the in-shares (nodes shares to you from other users)
MEGAcmd-2.5.2_Linux/contrib/docs/commands/mv.md000066400000000000000000000005601516543156300212430ustar00rootroot00000000000000### mv Moves file(s)/folder(s) into a new location (all remotes) Usage: `mv srcremotepath [--use-pcre] [srcremotepath2 srcremotepath3 ..] dstremotepath`
If the location exists and is a folder, the source will be moved there
If the location doesn't exist, the source will be renamed to the destination name given
Options:
 --use-pcre	use PCRE expressions
MEGAcmd-2.5.2_Linux/contrib/docs/commands/passwd.md000066400000000000000000000006101516543156300221160ustar00rootroot00000000000000### passwd Modifies user password Usage: `passwd [-f] [--auth-code=XXXX] newpassword`
Notice that modifying the password will close all your active sessions
 in all your devices (except for the current one)

 Please, avoid using passwords containing " or '

Options:
 -f   	Force (no asking)
 --auth-code=XXXX	Two-factor Authentication code. More info: https://mega.nz/blog_48
MEGAcmd-2.5.2_Linux/contrib/docs/commands/permissions.md000066400000000000000000000016751516543156300232040ustar00rootroot00000000000000### permissions Shows/Establish default permissions for files and folders created by MEGAcmd. Usage: `permissions [(--files|--folders) [-s XXX]]`
Permissions are unix-like permissions, with 3 numbers: one for owner, one for group and one for others
Options:
 --files	To show/set files default permissions.
 --folders	To show/set folders default permissions.
 --s XXX	To set new permissions for newly created files/folder.
        	 Notice that for files minimum permissions is 600,
        	 for folders minimum permissions is 700.
        	 Further restrictions to owner are not allowed (to avoid missfunctioning).
        	 Notice that permissions of already existing files/folders will not change.
        	 Notice that permissions of already existing files/folders will not change.

Note: permissions will be saved for the next time you execute MEGAcmd server. They will be removed if you logout. Permissions are not available on Windows.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/preview.md000066400000000000000000000003321516543156300222770ustar00rootroot00000000000000### preview To download/upload the preview of a file. Usage: `preview [-s] remotepath localpath`
If no -s is inidicated, it will download the preview.

Options:
 -s	Sets the preview to the specified file
MEGAcmd-2.5.2_Linux/contrib/docs/commands/proxy.md000066400000000000000000000011431516543156300220000ustar00rootroot00000000000000### proxy Show or sets proxy configuration Usage: `proxy [URL|--auto|--none] [--username=USERNAME --password=PASSWORD]`
With no parameter given, this will print proxy configuration

Options:
URL	Proxy URL (e.g: https://127.0.0.1:8080)
 --none	To disable using a proxy
 --auto	To use the proxy configured in your system
 --username=USERNAME	The username, for authenticated proxies
 --password=PASSWORD	The password, for authenticated proxies. Please, avoid using passwords containing " or '

Note: Proxy settings will be saved for the next time you open MEGAcmd, but will be removed if you logout.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/psa.md000066400000000000000000000002311516543156300213770ustar00rootroot00000000000000### psa Shows the next available Public Service Announcement (PSA) Usage: `psa [--discard]`
Options:
 --discard	Discards last received PSA
MEGAcmd-2.5.2_Linux/contrib/docs/commands/put.md000066400000000000000000000013311516543156300214260ustar00rootroot00000000000000### put Uploads files/folders to a remote folder Usage: `put [-c] [-q] [--print-tag-at-start] localfile [localfile2 localfile3 ...] [dstremotepath]`
Options:
 -c	Creates remote folder destination in case of not existing.
 -q	queue upload: execute in the background. Don't wait for it to end
 --print-tag-at-start	Prints start message including transfer TAG, even when using -q.

Notice that the dstremotepath can only be omitted when only one local path is provided.
 In such case, the current remote working dir will be the destination for the upload.
 Mind that using wildcards for local paths in non-interactive mode in a supportive console (e.g. bash),
 could result in multiple paths being passed to MEGAcmd.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/pwd.md000066400000000000000000000000671516543156300214150ustar00rootroot00000000000000### pwd Prints the current remote folder Usage: `pwd` MEGAcmd-2.5.2_Linux/contrib/docs/commands/quit.md000066400000000000000000000003051516543156300216000ustar00rootroot00000000000000### quit Quits MEGAcmd Usage: `quit [--only-shell]`
Notice that the session will still be active, and local caches available
The session will be resumed when the service is restarted
MEGAcmd-2.5.2_Linux/contrib/docs/commands/reload.md000066400000000000000000000001771516543156300220730ustar00rootroot00000000000000### reload Forces a reload of the remote files of the user Usage: `reload`
It will also resume synchronizations.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/rm.md000066400000000000000000000003051516543156300212340ustar00rootroot00000000000000### rm Deletes a remote file/folder Usage: `rm [-r] [-f] [--use-pcre] remotepath`
Options:
 -r	Delete recursively (for folders)
 -f	Force (no asking)
 --use-pcre	use PCRE expressions
MEGAcmd-2.5.2_Linux/contrib/docs/commands/session.md000066400000000000000000000000711516543156300223010ustar00rootroot00000000000000### session Prints (secret) session ID Usage: `session` MEGAcmd-2.5.2_Linux/contrib/docs/commands/share.md000066400000000000000000000022341516543156300217230ustar00rootroot00000000000000### share Prints/Modifies the status of current shares Usage: `share [-p] [-d|-a --with=user@email.com [--level=LEVEL]] [remotepath] [--use-pcre] [--time-format=FORMAT]`
Options:
 --use-pcre	use PCRE expressions
 -p	Show pending shares too
 --with=email	Determines the email of the user to [no longer] share with
 -d	Stop sharing with the selected user
 -a	Adds a share (or modifies it if existing)
 --level=LEVEL	Level of access given to the user
              	0: Read access
              	1: Read and write
              	2: Full access
              	3: Owner access

If a remote path is given it'll be used to add/delete or in case
 of no option selected, it will display all the shares existing
 in the tree of that path

When sharing a folder with a user that is not a contact (see "mega-users --help")
  the share will be in a pending state. You can list pending shares with
 "share -p". He would need to accept your invitation (see "mega-ipc")

Sharing folders will require contact verification (see "mega-users --help-verify")

If someone has shared something with you, it will be listed as a root folder
 Use "mega-mount" to list folders shared with you
MEGAcmd-2.5.2_Linux/contrib/docs/commands/showpcr.md000066400000000000000000000014461516543156300223120ustar00rootroot00000000000000### showpcr Shows incoming and outgoing contact requests. Usage: `showpcr [--in | --out] [--time-format=FORMAT]`
Options:
 --in	Shows incoming requests
 --out	Shows outgoing invitations
 --time-format=FORMAT	show time in available formats. Examples:
               RFC2822:  Example: Fri, 06 Apr 2018 13:05:37 +0200
               ISO6081:  Example: 2018-04-06
               ISO6081_WITH_TIME:  Example: 2018-04-06T13:05:37
               SHORT:  Example: 06Apr2018 13:05:37
               SHORT_UTC:  Example: 06Apr2018 13:05:37
               CUSTOM. e.g: --time-format="%Y %b":  Example: 2018 Apr
                 You can use any strftime compliant format: http://www.cplusplus.com/reference/ctime/strftime/

Use "mega-ipc" to manage invitations received
Use "mega-users" to see contacts
MEGAcmd-2.5.2_Linux/contrib/docs/commands/signup.md000066400000000000000000000014631516543156300221310ustar00rootroot00000000000000### signup Register as user with a given email Usage: `signup email password [--name="Your Name"]`
Please, avoid using passwords containing " or '

Options:
 --name="Your Name"	Name to register. e.g. "John Smith"

 You will receive an email to confirm your account.
 Once you have received the email, please proceed to confirm the link
 included in that email with "confirm".

Warning: Due to our end-to-end encryption paradigm, you will not be able to access your data
without either your password or a backup of your Recovery Key (master key).
Exporting the master key and keeping it in a secure location enables you
to set a new password without data loss. Always keep physical control of
your master key (e.g. on a client device, external storage, or print).
 See "masterkey --help" for further info.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/speedlimit.md000066400000000000000000000020141516543156300227540ustar00rootroot00000000000000### speedlimit Displays/modifies upload/download rate limits: either speed or max connections Usage: `speedlimit [-u|-d|--upload-connections|--download-connections] [-h] [NEWLIMIT]`
NEWLIMIT is the new limit to set. If no option is provided, NEWLIMIT will be 
  applied for both download/upload speed limits. 0, for speeds, means unlimited.
 NEWLIMIT may include (B)ytes, (K)ilobytes, (M)egabytes, (G)igabytes & (T)erabytes.
  Examples: "1m12k3B" "3M". If no units are given, bytes are assumed.

Options:
 -d                       Set/Read download speed limit, expressed in size per second.
 -u                       Set/Read dpload speed limit, expressed in size per second
 --upload-connections     Set/Read max number of connections for an upload transfer
 --download-connections   Set/Read max number of connections for a download transfer

Display options:
 -h                       Human readable

Notice: these limits will be saved for the next time you execute MEGAcmd server. They will be removed if you logout.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/sync-config.md000066400000000000000000000011731516543156300230410ustar00rootroot00000000000000### sync-config Controls sync configuration. Usage: `sync-config [--delayed-uploads-wait-seconds | --delayed-uploads-max-attempts]`
Displays current configuration.

New uploads for files that change frequently in syncs may be delayed until a wait time passes to avoid wastes of computational resources.
 Delay times and number of changes may change overtime
Options:
 --delayed-uploads-wait-seconds   Shows the seconds to be waited before a file that's being delayed is uploaded again.
 --delayed-uploads-max-attempts   Shows the max number of times a file can change in quick succession before it starts to get delayed.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/sync-ignore.md000066400000000000000000000062201516543156300230550ustar00rootroot00000000000000### sync-ignore Manages ignore filters for syncs Usage: `sync-ignore [--show|[--add|--add-exclusion|--remove|--remove-exclusion] filter1 filter2 ...] (ID|localpath|DEFAULT)`
To modify the default filters, use "DEFAULT" instead of local path or ID.
Note: when modifying the default filters, existing syncs won't be affected. Only newly created ones.

If no action is provided, filters will be shown for the selected sync.
Only the filters at the root of the selected sync will be accessed. Filters beloging to sub-folders must be modified manually.

Options:
--show	Show the existing filters of the selected sync
--add	Add the specified filters to the selected sync
--add-exclusion	Same as "--add", but the  is 'exclude'
               	Note: the `-` must be omitted from the filter (using '--' is not necessary)
--remove	Remove the specified filters from the selected sync
--remove-exclusion	Same as "--remove", but the  is 'exclude'
                  	Note: the `-` must be omitted from the filter (using '--' is not necessary)

Filters must have the following format: :
	 Must be either exclude, or include
		exclude (`-`): This filter contains files or directories that *should not* be synchronized
		               Note: you must pass a double dash ('--') to signify the end of the parameters, in order to pass exclude filters
		include (`+`): This filter contains files or directories that *should* be synchronized
	 May be one of the following: directory, file, symlink, or all
		directory (`d`): This filter applies only to directories
		file (`f`): This filter applies only to files
		symlink (`s`): This filter applies only to symbolic links
		all (`a`): This filter applies to all of the above
	Default (when omitted) is `a`
	 May be one of the following: local name, path, or subtree name
		local name (`N`): This filter has an effect only in the root directory of the sync
		path (`p`): This filter matches against the path relative to the rooth directory of the sync
		            Note: the path separator is always '/', even on Windows
		subtree name (`n`): This filter has an effect in all directories below the root directory of the sync, itself included
	Default (when omitted) is `n`
	 May be one of the following: glob, or regexp
		glob (`G` or `g`): This filter matches against a name or path using a wildcard pattern
		regexp (`R` or `r`): This filter matches against a name or path using a pattern expressed as a POSIX-Extended Regular Expression
	Note: uppercase `G` or `R` specifies that the matching should be case-sensitive
	Default (when omitted) is `G`
	 Must be a file or directory pattern
Some examples:
	`-f:*.txt`  Filter will exclude all *.txt files in and beneath the sync directory
	`+fg:work*.txt`  Filter will include all work*.txt files excluded by the filter above
	`-N:*.avi`  Filter will exclude all *.avi files contained directly in the sync directory
	`-nr:.*foo.*`  Filter will exclude files whose name contains 'foo'
	`-d:private`  Filter will exclude all directories with the name 'private'

See: https://help.mega.io/installs-apps/desktop/megaignore more info.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/sync-issues.md000066400000000000000000000060241516543156300231070ustar00rootroot00000000000000### sync-issues Show all issues with current syncs Usage: `sync-issues [[--detail (ID|--all)] [--limit=rowcount] [--disable-path-collapse]] | [--enable-warning|--disable-warning]`
When MEGAcmd detects conflicts with the data it's synchronizing, a sync issue is triggered. Syncing is stopped on the conflicting data, and no progress is made. Recovering from an issue usually requires user intervention.
A notification warning will appear whenever sync issues are detected. You can disable the warning if you wish. Note: the notification may appear even if there were already issues before.
Note: the list of sync issues provides a snapshot of the issues detected at the moment of requesting it. Thus, it might not contain the latest updated data. Some issues might still be being processed by the sync engine, and some might not have been removed yet.

Options:
 --detail (ID | --all) 	Provides additional information on a particular sync issue.
                       	The ID of the sync where this issue appeared is shown, alongside its local and cloud paths.
                       	All paths involved in the issue are shown. For each path, the following columns are displayed:
                       		PATH: The conflicting local or cloud path (cloud paths are prefixed with "").
                       		PATH_ISSUE: A brief explanation of the problem this file or folder has (if any).
                       		LAST_MODIFIED: The most recent date when this file or directory was updated.
                       		UPLOADED: For cloud paths, the date of upload or creation. Empty for local paths.
                       		SIZE: The size of the file. Empty for directories.
                       		TYPE: The type of the path (file or directory). This column is hidden if the information is not relevant for the particular sync issue.
                       	The "--all" argument can be used to show the details of all issues.
 --limit=rowcount 	Limits the amount of rows displayed. Set to 0 to display unlimited rows. Default is 10. Can also be combined with "--detail".
 --disable-path-collapse 	Ensures all paths are fully shown. By default long paths are truncated for readability.
 --enable-warning 	Enables the notification that appears when issues are detected. This setting is saved for the next time you open MEGAcmd, but will be removed if you logout.
 --disable-warning 	Disables the notification that appears when issues are detected. This setting is saved for the next time you open MEGAcmd, but will be removed if you logout.
 --col-separator=X	Uses the string "X" as column separator. Otherwise, spaces will be added between columns to align them.
 --output-cols=COLUMN_NAME_1,COLUMN_NAME2,...	Selects which columns to show and their order.

DISPLAYED columns:
	ISSUE_ID: A unique identifier of the sync issue. The ID can be used alongside the "--detail" argument.
	PARENT_SYNC: The identifier of the sync that has this issue.
	REASON: A brief explanation on what the issue is. Use the "--detail" argument to get extended information on a particular sync.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/sync.md000066400000000000000000000041451516543156300216000ustar00rootroot00000000000000### sync Controls synchronizations. Usage: `sync [localpath dstremotepath| [-dpe] [ID|localpath]`
If no argument is provided, it lists current configured synchronizations.
If local and remote paths are provided, it will start synchronizing a local folder into a remote folder.
If an ID/local path is provided, it will list such synchronization unless an option is specified.

Note: use the "sync-config" command to show global sync configuration.

Options:
 -d | --delete ID|localpath	deletes a synchronization (not the files).
 -p | --pause ID|localpath	pauses (disables) a synchronization.
 -e | --enable ID|localpath	resumes a synchronization.
 [deprecated] --remove ID|localpath	same as --delete.
 [deprecated] -s | --disable ID|localpath	same as --pause.
 [deprecated] -r ID|localpath	same as --enable.
 --path-display-size=N	Use at least N characters for displaying paths.
 --show-handles	Prints remote nodes handles (H:XXXXXXXX).
 --col-separator=X	Uses the string "X" as column separator. Otherwise, spaces will be added between columns to align them.
 --output-cols=COLUMN_NAME_1,COLUMN_NAME2,...	Selects which columns to show and their order.

DISPLAYED columns:
 ID: an unique identifier of the sync.
 LOCALPATH: local synced path.
 REMOTEPATH: remote synced path (in MEGA).
 RUN_STATE: Indication of running state, possible values:
 	Pending: Sync config has loaded but we have not attempted to start it yet.
 	Loading: Sync is in the process of loading from disk.
 	Running: Sync loaded and active.
 	Suspended: Sync is not loaded, but it is on disk with the last known sync state.
 	Disabled: Sync has been disabled (no state cached). Starting it is like configuring a brand new sync with those settings.
 STATUS: State of the sync, possible values:
 	NONE: Status unknown.
 	Synced: Synced, no transfers/pending actions are ongoing.
 	Pending: Sync engine is doing some calculations.
 	Syncing: Transfers/pending actions are being carried out.
 	Processing: State cannot be determined (too busy, try again later).
 ERROR: Error, if any.
 SIZE, FILE & DIRS: size, number of files and number of dirs in the remote folder.
MEGAcmd-2.5.2_Linux/contrib/docs/commands/thumbnail.md000066400000000000000000000003441516543156300226040ustar00rootroot00000000000000### thumbnail To download/upload the thumbnail of a file. Usage: `thumbnail [-s] remotepath localpath`
If no -s is inidicated, it will download the thumbnail.

Options:
 -s	Sets the thumbnail to the specified file
MEGAcmd-2.5.2_Linux/contrib/docs/commands/transfers.md000066400000000000000000000023661516543156300226360ustar00rootroot00000000000000### transfers List or operate with transfers Usage: `transfers [-c TAG|-a] | [-r TAG|-a] | [-p TAG|-a] [--only-downloads | --only-uploads] [SHOWOPTIONS]`
If executed without option it will list the first 10 transfers
Options:
 -c (TAG|-a)	Cancel transfer with TAG (or all with -a)
 -p (TAG|-a)	Pause transfer with TAG (or all with -a)
 -r (TAG|-a)	Resume transfer with TAG (or all with -a)
 --only-uploads	Show/Operate only upload transfers
 --only-downloads	Show/Operate only download transfers

Show options:
 --summary	Prints summary of on going transfers
 --show-syncs	Show synchronization transfers
 --show-completed	Show completed transfers
 --only-completed	Show only completed download
 --limit=N	Show only first N transfers
 --path-display-size=N	Use at least N characters for displaying paths
 --col-separator=X	Uses the string "X" as column separator. Otherwise, spaces will be added between columns to align them.
 --output-cols=COLUMN_NAME_1,COLUMN_NAME2,...	Selects which columns to show and their order.

TYPE legend correspondence:
  ⇓ = 	Download transfer
  ⇑ = 	Upload transfer
  ⇵ = 	Sync transfer. The transfer is done in the context of a synchronization
  � = 	Backup transfer. The transfer is done in the context of a backup
MEGAcmd-2.5.2_Linux/contrib/docs/commands/tree.md000066400000000000000000000002201516543156300215510ustar00rootroot00000000000000### tree Lists files in a remote path in a nested tree decorated output Usage: `tree [remotepath]`
This is similar to "ls --tree"
MEGAcmd-2.5.2_Linux/contrib/docs/commands/unicode.md000066400000000000000000000005161516543156300222500ustar00rootroot00000000000000### unicode Toggle unicode input enabled/disabled in interactive shell Usage: `unicode`
Unicode mode is experimental, you might experience
 some issues interacting with the console
 (e.g. history navigation fails).

Type "help --unicode" for further info
Note: this command is only available on some versions of Windows
MEGAcmd-2.5.2_Linux/contrib/docs/commands/update.md000066400000000000000000000011361516543156300221030ustar00rootroot00000000000000### update Updates MEGAcmd Usage: `update [--auto=on|off|query]`
Looks for updates and applies if available.
This command can also be used to enable/disable automatic updates.
Options:
 --auto=ON|OFF|query	Enables/disables/queries status of auto updates.

If auto updates are enabled it will be checked while MEGAcmd server is running.
 If there is an update available, it will be downloaded and applied.
 This will cause MEGAcmd to be restarted whenever the updates are applied.

Further info at https://github.com/meganz/megacmd#megacmd-updates
Note: this command is not available on Linux
MEGAcmd-2.5.2_Linux/contrib/docs/commands/userattr.md000066400000000000000000000004131516543156300224670ustar00rootroot00000000000000### userattr Lists/updates user attributes Usage: `userattr [-s attribute value|attribute|--list] [--user=user@email]`
Options:
 -s	attribute value 	sets an attribute to a value
 --user=user@email	select the user to query
 --list	lists valid attributes
MEGAcmd-2.5.2_Linux/contrib/docs/commands/users.md000066400000000000000000000031731516543156300217650ustar00rootroot00000000000000### users List contacts Usage: `users [-s] [-h] [-n] [-d contact@email] [--time-format=FORMAT] [--verify|--unverify contact@email.com] [--help-verify [contact@email.com]]`
Options:
 -d	contact@email   	Deletes the specified contact.
--help-verify              	Prints general information regarding contact verification.
--help-verify contact@email	This will show credentials of both own user and contact
                           	 and instructions in order to proceed with the verifcation.
--verify contact@email     	Verifies contact@email.
                           	 CAVEAT: First you would need to manually ensure credentials match!
--unverify contact@email   	Sets contact@email as no longer verified. New shares with that user
                           	 will require verification.
Listing Options:
 -s	Show shared folders with listed contacts
 -h	Show all contacts (hidden, blocked, ...)
 -n	Show users names
 --time-format=FORMAT	show time in available formats. Examples:
               RFC2822:  Example: Fri, 06 Apr 2018 13:05:37 +0200
               ISO6081:  Example: 2018-04-06
               ISO6081_WITH_TIME:  Example: 2018-04-06T13:05:37
               SHORT:  Example: 06Apr2018 13:05:37
               SHORT_UTC:  Example: 06Apr2018 13:05:37
               CUSTOM. e.g: --time-format="%Y %b":  Example: 2018 Apr
                 You can use any strftime compliant format: http://www.cplusplus.com/reference/ctime/strftime/

Use "mega-invite" to send/remove invitations to other users
Use "mega-showpcr" to browse incoming/outgoing invitations
Use "mega-ipc" to manage invitations received
Use "mega-users" to see contacts
MEGAcmd-2.5.2_Linux/contrib/docs/commands/version.md000066400000000000000000000003201516543156300223000ustar00rootroot00000000000000### version Prints MEGAcmd versioning and extra info Usage: `version [-l][-c]`
Options:
 -c	Shows changelog for the current version
 -l	Show extended info: MEGA SDK version and features enabled
MEGAcmd-2.5.2_Linux/contrib/docs/commands/webdav.md000066400000000000000000000025151516543156300220730ustar00rootroot00000000000000### webdav Configures a WEBDAV server to serve a location in MEGA Usage: `webdav [-d (--all | remotepath ) ] [ remotepath [--port=PORT] [--public] [--tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key]] [--use-pcre]`
This can also be used for streaming files. The server will be running as long as MEGAcmd Server is.
If no argument is given, it will list the webdav enabled locations.

Options:
 --d        	Stops serving that location
 --all      	When used with -d, stops serving all locations (and stops the server)
 --public   	*Allow access from outside localhost
 --port=PORT	*Port to serve. DEFAULT= 4443
 --tls      	*Serve with TLS (HTTPS)
 --certificate=/path/to/certificate.pem	*Path to PEM formatted certificate
 --key=/path/to/certificate.key	*Path to PEM formatted key
 --use-pcre	use PCRE expressions

*If you serve more than one location, these parameters will be ignored and use those of the first location served.
 If you want to change those parameters, you need to stop serving all locations and configure them again.
Note: WEBDAV settings and locations will be saved for the next time you open MEGAcmd, but will be removed if you logout.

Caveat: This functionality is in BETA state. It might not be available on all platforms. If you experience any issue with this, please contact: support@mega.nz
MEGAcmd-2.5.2_Linux/contrib/docs/commands/whoami.md000066400000000000000000000003351516543156300221050ustar00rootroot00000000000000### whoami Prints info of the user Usage: `whoami [-l]`
Options:
 -l	Show extended info: total storage used, storage per main folder
   	(see mount), pro level, account balance, and also the active sessions
MEGAcmd-2.5.2_Linux/contrib/docs/generate_command_docs.py000066400000000000000000000146531516543156300233600ustar00rootroot00000000000000#!/usr/bin/env python3 import re import subprocess import os MEGA_EXEC_PATH = os.environ.get('MEGA_EXEC_PATH', 'mega-exec') def get_help_output(detail): det = '-ff' if detail else '-f' return subprocess.run([MEGA_EXEC_PATH, 'help', det, '--show-all-options'], capture_output=True, text=True).stdout def get_version(): out = subprocess.run([MEGA_EXEC_PATH, 'version'], capture_output=True, text=True).stdout return re.search(r'MEGAcmd version: (\d+\.\d+\.\d+)', out).group(1) class CommandSummary: def __init__(self, name, args, description): self.name = name self.args = args self.description = description def get_markdown_format(self): args = f'`{self.args}`' if self.args else '' return f'* [`{self.name}`](contrib/docs/commands/{self.name}.md){args} {self.description}' class CommandDetail: def __init__(self, name, summary, usage, description): self.name = name self.summary = summary self.usage = usage self.description = description def get_markdown_format(self): description = f'\n
\n{self.description}\n
' if self.description else '' return f'### {self.name}\n{self.summary}\n\nUsage: `{self.usage}`{description}' class CommandTable: command_summaries = {} command_details = {} def add_command_summary(self, command_line): command_line = command_line.split(':', maxsplit=1) command_name = command_line[0] args = '' description = command_line[1] if ' ' in command_name: command_line = command_name.split(' ', maxsplit=1) command_name = command_line[0] args = command_line[1] command_name = command_name.strip() # Skip debug commands if command_name == 'echo': return self.command_summaries[command_name] = CommandSummary( name=command_name, args=args.strip(), description=description.strip() ) def add_command_detail(self, command_detail): command_lines = command_detail.split('\n', maxsplit=3) # Does not start with ; not a command if not re.match(r'<[\w-]+>', command_lines[0]): return command_name = re.search(r'<([\w-]+)>', command_lines[0]).group(1) # Skip debug commands if command_name == 'echo': return usage = re.search(r'Usage: (.+)', command_lines[1]).group(1) summary = command_lines[2] description = command_lines[3] if len(command_lines) > 3 else '' command_name = command_name.strip() self.command_details[command_name] = CommandDetail( name=command_name, summary=summary.strip(), usage=usage.strip(), description=description.strip() ) def parse_commands_brief(self): output = get_help_output(detail=False) command_section = re.split(r'Commands:\n', output, 1)[-1] command_lines = command_section.strip().split('\n') for line in command_lines: line = line.strip() # Invalid format; not a command if not line or not line.split(' '): continue # Doesn't start with lowercase letter; not a command if not re.match(r'[a-z]', line[0]): continue self.add_command_summary(line) def parse_commands_detail(self): output = get_help_output(detail=True) min_cols = 10 commands = re.split(fr'-{{{min_cols},}}\n', output.strip()) for command_detail in commands: command_detail = command_detail.strip() # Invalid format; not a command if not command_detail: continue self.add_command_detail(command_detail) def get_commands_by_category(ct): categories = { 'Account / Contacts': ['signup', 'confirm', 'invite', 'showpcr', 'ipc', 'users', 'userattr', 'passwd', 'masterkey'], 'Login / Logout': ['login', 'logout', 'whoami', 'session', 'killsession'], 'Browse': ['cd', 'lcd', 'ls', 'pwd', 'lpwd', 'attr', 'du', 'find', 'mount'], 'Moving / Copying files': ['mkdir', 'cp', 'put', 'get', 'preview', 'thumbnail', 'mv', 'rm', 'transfers', 'speedlimit', 'sync', 'sync-issues', 'sync-ignore', 'sync-config', 'exclude', 'backup'], 'Sharing (your own files, of course, without infringing any copyright)': ['export', 'import', 'share', 'webdav'], 'FUSE (mount your cloud folder to the local system)': ['fuse-add', 'fuse-remove', 'fuse-enable', 'fuse-disable', 'fuse-show', 'fuse-config'], } # Commands that don't have a explicit group should go into Misc. commands = set([c for l in categories.values() for c in l]) misc_commands = set(ct.command_summaries.keys()) - commands categories['Misc.'] = sorted(misc_commands) return categories def generate_user_guide_summary(ct): categories = get_commands_by_category(ct) summary = [] for category, commands in categories.items(): summary.append('### ' + category) for command in commands: cs = ct.command_summaries[command] summary.append(cs.get_markdown_format()) summary.append('') return '\n'.join(summary) + '\n' def write_to_user_guide(summary): with open('UserGuide.md', 'r') as f: contents = f.read() # Write MEGAcmd version version_sentence = 'This document relates to MEGAcmd version ' contents = re.sub(version_sentence + r'\d+\.\d+\.\d+', version_sentence + get_version(), contents) # Write summary of all commands anchor = '<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>' contents = contents.replace('### Account / Contacts\n', anchor) contents = contents.replace('## Examples', anchor + '## Examples') contents = contents.split(anchor) contents = contents[0] + summary + contents[2] with open('UserGuide.md', 'w') as f: f.write(contents) def write_command_files(command_details): for cd in command_details: with open(f'contrib/docs/commands/{cd.name}.md', 'w') as f: f.write(cd.get_markdown_format() + '\n') if __name__=='__main__': ct = CommandTable() ct.parse_commands_brief() ct.parse_commands_detail() user_guide_summary = generate_user_guide_summary(ct) write_to_user_guide(user_guide_summary) write_command_files(ct.command_details.values()) MEGAcmd-2.5.2_Linux/contrib/docs/pics/000077500000000000000000000000001516543156300174335ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/contrib/docs/pics/ftpConnectToServerLinux.png000066400000000000000000000475621516543156300247740ustar00rootroot00000000000000‰PNG  IHDRÓq(*BHsBIT|dˆ pHYsÄÄ•+tEXtSoftwareShutterc‚Ð IDATxœìÝw|ÅÝøñÏî^ÓéÔ«-Ûr/rï€ n²)¦˜:1O ?êz5Í„i�Pžà ¡ÛØØ¸€qﲊ-U«_ßÝß'Ù’¥“N:;¦|߯׾Às³s3[î«™�ÝU MÃ0ðûý¬Yý›6®£¢¢ À�B!Ž0M…„ŒîL9ŠqãOÂjµ¢ª*J~~¾Yu¨’7ßx•òò¬V MÓNt}…Bˆï$]× tRS3¸ôò¹$$$¢lÛ¶Í|ù¥ç¨©®@UU‚AÃ0Nt]…Bˆï$UU±XT à !1•Ÿ]w#Ú¸±£Þ²yªªâ÷1MóD×S!„øÎ2M]7Ð4•†ú:l6ZŸÞY{Ü ú‰®ŸBñ½ ¨ õõXJKJ0MCz¤B!D'éºAyy)¿ß‡¦©DKMÓ¤¾Áƒ×ã# bªªbµXˆqÚ‰u:P5¢ ˲„BˆÁ0 �Ó41ŒŽ#©Û㥶¦�Ü~™Lë�I¿Ä8âìê|AvW×óEáA–”Ÿà"&ÆÞaY55 ôí×—¾}z“˜˜„ÝnÃçóS]]MAa!…ù$DP–Bq¢˜¦‰iš(çŸwº©ªí÷ëêÜÄaòÐiCècÁ ÀÐÁ4AQ@ÕP,V ÝAY¾�zEÁår†-ËDeêÔ)ÄÆ: 6öJMÓDQ”ÆYRêX¶ôKTÅ[Ö�•nª‚~œªå˜åBÑy†a Ì9·ý`êñøpüvê \ºô`ø5 uª�[–îÂc³ãhÙ«ôx|u“™³f`º~Ò“¦i(ªÂÂÏ–`µ*­ÊŠ”nX¨­¯ÇçnÀÐ1U³ëÐÈHŒ%ð= 0ž` µ••$tK£[ ŒÕŽ¡´Ý†Îä�”_·RW]‰ÇãE7lv+iq¬1.äÊ»âÇÆ0 ”óΙ6˜š¦IEE¿›Ô—l«Þ~ m¢Y(ôkܲ²�ÔÔDE9\VyE3fLÃn··H¥ix½^–,YFZ³²"åÑÔ×6k6³OÉàî.,€·rÛÖ}Åg,§Úó½ ¨~ÓIu]÷þñä(Õ|rÿ=,«UñÛb£Ê)�Cƒ×ŬËÏgÖ¸þ¤ÇF%»·ðåÞeuQ=ŠCªâÇÅ0ŒÐ5Óp3yܦdºè©ùÐ=^<ºÉ^w�AqÖÃùvÖèå´£…‚]¶#†Ó2œ¬­óât:—Õ£Gìv;~èQ…K–|¶rÓ§OC×uŽzdu§ªêÐá²"á7œ4¸ã¹ì±;8«{ËÏ)ÙŒ™ZÇÒ.CÓt¼¦�Úz/ÞúZº ªF‚ÓBr|,AEÅ0mTWÂç÷Ôh¡h$Äj$ÇÇT”ˆòX¨«÷àiü.E³�«‘àr¡þcA£¦Á‡¯¾_М1V’€Švøo ƒÝe^M§†¯räÉU¦A‡y ´vÛÝœn:h¨µsñ“¿âìôf¨±dÃËV:¦ivØFôQ][MÀë%4G ¬Ø5�?ˆÍn£{Jº¢Pí±Pw¨»9iP]*;+3!âcG!:Ã4Íöƒ©ÏàÔ”ô†ºÐ5R`OƒÁCÛk¸w@Ã,l® òD^� I``lãp0À©)6VTÔž@äóèÖ-ŸÏÛâ KgŸ=»Õ÷~øáGè�½`ŸÏ ³[7–”tj2R]uCo¸«1�Ö°öí7ywU>%n�¤žýÉI/§'UU~zOû WΞÀÀd+FÝ~Ö-þ7oüg3öøJÝv¦]w³†ö [¢ á ß~þ¯}°[\ •äqÄÇáWlªòÓ/÷R®œ=žþ‰zm1k¾Ãëï$6Á…+ÕU~º�zW�}C3`º)^¹€çþú5†šÕØÂDÎ|ì�œ P»Œûo]€=Á‰·)šf³bë¼Ö„xJjaÛ“ƒ¯YpvÀÌ:…SÓܬ~áA~»ªÝ–DïÁ=°ïó¡ÚœMK»mt&$pÈmeìœk9cÜ úf†F ü囸¢j§T lü¿üÍfÎÔÁWñö-9hî5<úËW)6Õ.”ý-w>¹ âcG!:£Ã` ém bxÝ4Ý;3 .–'fÞò\’iáí’ ÷NÄ€`†§!´¢¢ÐÛC0¨.; âtÆ´|ÊRUUU˜ïÖ‹2ˆ�u´(+FLs&†&.•ýçy~÷Ñ~ÄÆ¨ÔÜÅ×ûܸœ TÔøéuÑ]Ì;«±»¥›¨qYŒ›sC²þÀ�/¯CWÒ:¾?Y6€¾€{l7ÆÎ¹™”†{xú‹jt#µÝ<¿^ZA�OïŸÜÅÃg¥:uÕõÄ&ödâE·ÓËöóÞßG‰ô8ïæŸß4ƒp’樣.` 4û{¨¯¡:`b”×b¨:¦ÙØ>j[�÷`M�ì‹îßî߯Ñà"H¨<À[‡HÀI¯¡ƒé¹e5ÅÞ:* v‘ë €…êj»m|äßû ’ÁI³Æ2Ð`Ôl.?Ûþ“Ϭ�°œHËfv¹=äœÒ ðn]I�ßFïË»R¶ÜG-„8~: ¦¦ ±ºÃç9’è÷2ÈéçªaY¼´¡˜ë†g1ÔsÝ]×b]—¢bGÊnšøZäÓÃ\‡mžn·ÛZ” %µ™ @=[Ö•�§âÓ,¨˜ÄØœÔë6 ç~zf:dÛ_â±…%ÄŽ»Žgï8™øñ?afÆz”n6--À›8¾‹eÇ�‘ù%!„èŒÆ`JØ6(ŠB­?H‚i´È´¹¬š7÷×qè^,غ�^ÝuFĶX‘U=²š¢(¸Ý^¥å}SôhGz¦ ÞeEؼÃÜ `­×÷LÔžÃÉV#��¾*¥{j 7/áëÚ“É�OaXŸX(m±UpÅ@á¦R˜Ø\)Ä* ‡h?�Ó4¨í6,ô]¤pÎ#/sNóUb3Hw˜d�¢¯ ˜;y÷“B2“c©Wm(èøÍ£ßæ£Ò+тϋ÷¨¶µÞVGòÖùÕÚídñºZ°Ä4®¯“gaû‚ǹþ«QÌšySODzÎd®Ì™Ìô�Ÿâá䣸 ƒ6Â_óD…ìD+^kµ5[ùl»ÁÀ£OéAœz £œ€{# w¸±öíhû…)Ûæèä±#„‘3MÚï™jšJ~}€Ñ6£iF y…ù,Ü;>›¥Ž>ã²yâ›"îïd@LSäTÉwÑ4ëá²5M¥¶¶—+¶Å÷…›ÕÛ”®( uuõhšÖ¹aÞCû8$â"gT:¯½·Ÿ5ˆ®jø 0ÅÍ®,*4z…öæ +˜ý�õV4Ål5ƒµu@UC×R©cýç_QÜü‡?XÆAÃªÚøÝ¡2›Ê ÍC29òG‚‚ª„2¦‰ -êдv[yCmì¸Ý¦A‹¨l˜6»‰Y¶™ÿüe-ï¾’È„kîæŽiIt?ó|†½ÿßtÐÆr´VÛÖ%1v6.ÜJ g8‰ã§3=~. îë%Ô·_ز1%˜ !Ž›‡y­V Ë«ƒŒÊ0¡1¸õŒsñÈÄžôiØO°¡–Á±ñ<2±™ÕŘþúЊ…å5¡õ›Ê¶Z-””–Ñ×™Ý"€®_¿¡ÍïCüš¦QZZÖ¢¬H(õ[Y²Û¤o…Œ9·r£ûuÞù*Ÿ2·Ž3¥CûY)þf'la/c à¬I�Ã�0> ’mE ´Y#­�ª,ÙÁ~FÓ›Xâj6ðþ¿vR£ƒ›J¦µñè%;8Àhz+9wZý ¯éÁK²ÅK]ÐM}°ÆÓ§W,Å»ahz'Xð¨–#½qÓÀ “·[œ•ÊÛíÆaÑð4nsÃÔ¨÷;<2›†�;)¨õ£« TòI Äಫ¶5®uÀk<�V…úÍŸ²ª~8§%žÌå*XüiΘXª¢([!ŽÓ4±íŒóÚlVÕ)œíQè­™`Ø|õô®.Doœl¤×VÑ;àÇðy1 •B·Êª WœõðD›ÍBuUõi)ØívLÓääSN[¹šêêÆ¡aUU5ÄÅ9[Mªi�æPYö‡¿sÒã—1ÌžÄÄËoeâåÍs”ó^þý¼[ºŽ7?›Í¼ÓSɹæqÞú©IÓý$Þõÿâ³:êQ£«­ªaš˜JGy¨^Ë[ËÎäÞ)‰ô¿èn^½(H@·`Õ`ß[÷ðØ¢2LïZ,ŸÍ=§Æ3ðò‡xó²Óеj!wÝñ˜*«v7ÔÂÀëŸá�Ë}X,»ùÍ/Ÿ§Äjân¼gVÁ‡¢—„Í[áÞÐn» ¢ºŽlswÐŽ™|?¿é,ÒÚÚàEkØR ŠÙ~ý¼²Õ'&M½k/¦~€–TpÚ¹©¡ ²ä ŽêR æÛ.—-„Ç‹aš¨M¹·½€Ínç7¥Vj %ôv™ ½¡ÓÐ/zC-fÐ�iÔ Ï–Z°;l@˲ìvùù…øtÝ ²¢2ì¢ëþ@€üüBëQeu¼ÄhõP»žù·?Ë‹·Q\sdâS ö ÛW®¦ØPItèä½5Ÿyÿš‚=PÜ%løèÜýÂTgb« ×zP·µ¶ò¤8M¶üå1}k»*|@(øªö²Ç«¢*&q±[^y”Çÿñ5»ùA±bUýT–°i& 1&«_~‰o.ÇØcí«ˆq*è�oÿ1MÌ6§6oš3Øn»-N;~³Ùs'ñcÑ÷³bõnJêŽLÓëJØúÅ|r!fŒW¬ÒnUi½e×[Çã`ÿg°]ð°úÝÕ`Óñ£ë$вe‘EYŽß¢äÎ8µÃgóú}âƒnI©£¯¥1(™Í~¶6P´ñÛJ5Vv›-lYºaÒ£Gv»½±¨f×ïËòùüìÛ·U#lY‘ðV|7zÀÇág)¨ 6‹BrŒ¿fÃ0-4øü^wãµI…X»J\Œ�€¢¢›NªË˜�¯âµ8©õÙ 4T¢¨Ýì¸qu˜Ç§¨¦·ÏOÐëAo|Á€ªªÄ;L,ŽØÆ+�ê=~tß‘<‹JzœŸ¢â7ìxj‚¡k‚ªJV¼�Úz;µ—·£vÍ«Ûxê~7‚¢à°)$:mUØQƒmlÏ–uvâ©.#ˆBf¬Gf·E[¶Bk†a Ì˜Þq0…ÐìZ¿ÏÇD››“í^úÚÄ)u¦J¾ßÊ*¯ƒ¯N¬vVKû�ç u|>?±N'®811TUÃ0tÜ/õuõ¸Ýnlvk‡e !„'’a(Ó§MŽ(˜†˜ø:zPo|ŠQh®¤ªªh «EëÄós�eYB!ĉÑá³yÛbm tᜨ²„BˆÁ4;¸5F!„í“`*„BDI‚©B¥Æ`ÚÙgÞ !„¢‰i‚R[S-¡T!„ˆB¤÷Ä!„" ¦B!D”$˜ !„Q’`*„BDI‚©B% ¦B!D”$˜ !„Q’`*„BDI‚©B% ¦B!D”$˜ !„Q’`*„BDI‚©B%ˉ®À÷™é-%okEe CgL"ËÖµ V4R£�Ò]kÉóißÓ‹°:e+Þ R€¢ù0ÏÛîB!D“N÷L}ÅËYQàdÂ/Ÿà¦“RÑü‡Ø³cŽÁq(Mõ¶}ò7|²†üj-¾cf^ÊÜsG�l‚e|õö[,\·“Â’:‚€-mS7óyžŽuä­¼ô«q¸“ÚÕó¹éw[Ñ�'sÏ 71ÜÖ•²Çs݃¿drrÝM_!Ÿ|P8˜ce×¶¾|o-Þ=™¤f˜Þ=|ñ¯ñÞò<5âSìÔUT‡yÚ«[B}ûíBçÐú÷xõ­El8Ѐ‰WæPλýVfg)í|&£ùBqÃüs2Û½Uq⬩i¬ø°<”Ðç ¦÷ ÓjéÑ•}„IÃŽÏù¦ —?ö8g¾±Ô jùü¿?ìÀÈ_Äêò©œ�1‰K§~Èü¥U¾ó×þÛ�Ãð¶ˆÛZZÇy‰¤]zÑ»<ðÐçÔ»’HršT—…ú²É½1ÚùLæò !ÄñÕéÑ?ÓÞ›S& Ãuä'Zse’3åJ¼û,²,€ǨëåžK'Ñ?Å„‚‚=)›^1fãpf{¬ôšuƒ5€&\0‰ô¦8uÙM ©gËçB�®÷4&¤5Á*‰#f�£³xÅAŠ‹×Ìãî‹O¦_² ^¼:ØâÒè3f8iV ’<áDÐ.ÃtÒ##£¾Šò²j‚Î †Î¼�;Îë‰ÖÎgí}­Bˆè)µ5Õæ‰®„Bñ}&óR„Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JÇõIs¦¡£˜òL!„'–©((jd›íЍ‚©QW…/Þ‚ÍË÷cêAL=�ÿUä}šB!N4ÃÀ4 Íš¥q±¤eáè;{¿¨qI].¾K�T…ÚÅoã+ØLLï!غ÷Áš˜ÖXA-TYUCQTL¤g*„âÄRP0M ½±ã§ƒ$P]Žÿ@!ž¢íØû'~Æ%˜]QíRÏÔW´ ïŽoȸä6”¸DÐl(+¨ ¡wx*�ÿQ;ñFO!„âøQLƒPÿÎ -†‰–ÑGÿ‘Ä�žJéÛÏaï7[ö�N—Ýé`ª( ¾Ýq�˜„Ÿ ÎøN©Bñ_§¨´èá©„:‚8Q׈IøvoÄÞ;§Ó½Ó.õL�ÚC8FŸVŠ"}O!„ßo¦Õ�£Gj×Ù¥õ;=;HQÌ Õf—ÉEBˆvÍœ9óDWAˆÈ¨*ªÍŽôw©“Ø¥hhü`±£H0Bñ ¨*Xì¡øÖ�æU”`Íîݳs‡yM¼Ÿñ�0ù'§Ó7Fé ]œX²_Zûžn³Ž­ï¿ÅrË™\{v/la²É¥ q,½ñƼñÆæ9r$Ï>ûlä«Z(®]Šk�ïZš†¡£Xma¿ÐôðáÓ7ò“3rÉÍÍåÜ[þAqÀËÁ­«Y�W‡Ñé/m¯>õlxýEÞø²»Ué8]œX²_Zû®o3̹«W³áýwøxã!ôU7ñ£i Ø´iSç W« ÃÐÁì|”êB05Q-ÖЬ¨6ùÉÿ¿y~™•YwÌç¹ß>ËC×M!ÃÈgÁƒ÷óâ²2‚�þÒvªS»‘Özéwæd2-¥›øöΗÎäÒwâkVç’Õo2ï† ™™›KîÌó¹æÞWXYª©^ò?Ï ýapôrÙóhsPÀ¨fýÿ=È5çæ’›{&—ÝþK´3|ÐÙüí¶§=5ß¼ÈÕ¹¹œûø¦ÔP°¤Íàþ—_äÅ›–xôªAXÈà”‰Ý°µª—Îþ=Àݯm£ûÅ÷òøÃ?gô¡óدþÌVO[Û®³ùÛoO{Û˽õ¯üêáϨUÓõüçÁ;ùó–ž\ùÄ‹¼üÌ�Œ®|‡‡ïø3Û¼|qý›ï—nÄ ù)\ÓŸ}‚7¶{/!ó¯ùdkê<ð?ãHÏù!æK¼ÚÑ1ü][Ú:w›î2¿^»¿²ÈáÒV ]´hÏ?ÿ<‰‰‰$$$ð /°xñbEé8Nµ³tÕ±ŸAdúqûÁûå�œ3c3fÌàœÇŽô€Jüœ3Ó¯ùû>‚F%_½ps/:‹3f0cÆLÎÿÙ}üyÙ~|�˜Õ+yüâ™\øÈ—jÞû6«øöƒõÏæät­�t�ÒÏà _L»ç^f§´¬²âÍm]Às·]¬ɧ0íÂ_rÇÙɘy«Ùã,‰dÂ�!¡ep·jÿ{'ißÏõ£âZ?˜Â»ƒwlÇ1õ.î¹r'�z·?|%Y¥ðú×5­Ÿ ÕÙü´'ÜöÒËñÔƒ‘~Óc\Ñ÷HzpÿþµUeâÍ·qá„! }&7Þý2J?æíÍõ~qý[í;ý.¹�rJyç±WÙTï£ð�'øÓŽ,.}àZ†Å*?àÉg<ÈãõŠ‚=¥VóEë6q0ýJîûÕpâ‚l[ø:oÌ»‘}÷ÿ•‡§§„¾Ç4CVR”¦¯À<ô-n2zûI¤iÊá Ö:ÝB÷óÇ»((¾�¼ô'8ü×t¨ÒXìÍþ®0}*wCZÒlG¾/ÄËö·^d©1…Ç.ËÁ©¶ÞÁòMlªV8uqjè;lY“ô&K×㟖„#ŠütÔž¶¶W ˜÷{�‚©óøÃÝYü÷4 o5^ì$$ØQ›ö_÷‘d[ÞfÏÎCøÚÿÜ×-²ú·¹¿lÙ\pßͬ¾æ9æ=RJìúÝô™ûGæqùK§­mt³gýfv›Ëƒ÷ŽÀå-bÑïÇk/Ä3áòë¹ûªtŒ¢Oyé÷/ðhÖ^½¦ƒ¦Ų|-ß”ê ɶŠVçcö¸Œa‰–wp~©XHz×Þ{>iñ*µ;?âÅ—žá‘nCùóÙX÷y«sW9:{ºMâ§sO¢»­†Íÿz‘7æ=DÊ/sI�ÐÏK4�É}E IDATí‹·p�à®»îâ¹çž£oßPÏ ¬¬Œ»ï¾»EžN{ß©ži#-.‹>}ûÒ·o_²Ó‡�-©gcz²ŽÄr{ÖN9i<&ŸÉÕ=Ï­9 ¬øëì €’x ÷ÿs1ï=4…äÃ56¨Xó[Î9R›5$Lº¢DøhC�Êå/óüJ'³~y}¬-?5*—ó—ÿ”3ટ1!¡íõºjq‘‘d;ò�Z<™ñPWRÝê¯öÎæï¨=­·W�}ï?Å_«fsïõ£‰;jE[Öxrœu¬øÛÇì¬ b^*‹÷Ñ`BÐÄÒÁç�ˆên�¥ÛYÜù‹jÖ­búOøÕ¥ý±Õ¦fžðÛÄž9’ cG3vÒ~qÃ8,¤2î¬3˜<~<§]t#×äÀ¾5Û¨6†ŸÎ0mËÖ”„z‹þ}|³ÝCʸq‡¯Á¶w~�‚³÷$¦Ÿ2†áÃF1é‚›¸nìýº€†fä‡;wcúœFîi{ÒL~ú¿?g0»ùbý¡c;ÑPˆ£†�ßd^†×ëÅç‹læÈñðݼQTKcܔް=Eî0]v½œÕlCyã’•ŽÓ#¤dÉÓÜôÈjúßò,·�œxÔ ràó¿³NÏå³²ÂwëÃT9lm:›¿“Œò%¼ðZ)So¿ŠgëR•¸‰ÜúÐå È{‘_̙ŌܳøÉ/ÿÈVâ2ã°vð¹%’ú··_øjñ®Ðf(]ÄûÛÚþ!æ‰èX õ㨣´®q`U‰!-ÙîC¸ P’Æqîh+… WQ„`ÅF¾-‹cÜ”ìVhãüòspÅ«.Ä1~cÕ°í·$t#žzJ«GÚkÔQZq™‰­&,u6díiZ ê›³Ö]ÉÇwœËŒéÓ™>ó2^Ø î%·3{îk5’'\Ïóï-äý·ÿÆ[ÿ|Ÿ·ïƒ•tÆIBSÚÿÜAýÃï?…ï<Æï·dpñsâÖÑõ|úøïXYmþàó„Ý&GŸV ŒÃ炊fÓg*(j"ãÎ? gÁÇ|Yâ§zã2Šœc™1ÀÑùÜó6÷>ø7 ú\ÂÝÏý‰W^zˆKûµN¤ç®jÁ¦5ÞY È$Y¢_®¾úê6ê€(((àöÛoçŽ;î   €D§Â,]õßë™*Vblà©ötüR6³–íköAú0z¶Ñ“‚ %+>"Ï>†sÆ$4ë…Kïð qo}…;ý-ƒnû÷ŸÕ£ÍЃ¥kXºÏ°™CqµS¸%}à ò¾Üyx˜,pàk¾=d¡ÿ„^­‡;™¿s’¦<Ä믽ÆkMË«¿æŠ`Ÿp'|êz6u±+ñéÝÉP¶ðúï¿AϹ„³û4Ûa>ï¸þá÷‹/ÿm%�¬+àšQ8ûîÛ™XÂS¿]qxòÔ3OW�Õ¶÷qܘK˜™¼‡ÿ|°ž5Ÿå3á,rbÃd?êüò¯g/}¹èêó8eèúÊÀ”fã.�9w…8®¾új~þóŸ·H›6m×]w•••TVVrÝu×1mÚ´TÃÿf0µf0¼��š/þ‚/¾aíW ùhõ‘ûÖÜkÿ�¿¾·˜•_/çýïãéo †]r}l¡Ù©�]4ƒó^ú! dÙG8ƟèæÃ¥wÄ(gÉïÿÉþ>rþ7E»v±k×.víÚÍþ†¦+?& »×°—žLèÛâǯUýC¸ø’A¸?É“o-囕ïóüÃo°/}6WŸœÑæïÀÑõÑ\™ôÊÎ&ûðÒ“TG(½g·¬Š‰ûàn¶®[ÎG¯?ÉM?½��ÕÜûà¹dYBmo÷óꯄÛ/�=üsþkd]ʽW MVKÏåö›ÇXö /¯®Æü¡æé걎c\Л²÷æóÒ&'ÍΡy,mïürtJ&üëÍY³u'»vºÙoç®ÿ —]vY«€ú]ÒùW°iM· ˜aºÄ‡ï< u›''rò­wrÎ#/òæ¼;1”x^ø(ÓÆ5¾ÙÜæeÓ?žæ�R?jâ@¦ßô<7_�…U³qDª©Ìàþ¥|ºÇÉÄGž= “Þ²zJãW›ÕÏWÌÚ|¼or÷/Þl‘}ä¼øíiq@�ʼƒè¶>ôN´Ð¢éGÕOQ¬d_ü$Où~Í {„;=R‡Ïáþ'þ‡‘±*f Úü´§U}Zoƒ–ûÈÃö?ÞÊÿ.ÓIí;Œ —Îãž O%ûð¨@GŸ·_ÿ@Q[ûE§ôóçy}w2ç>ƒcšÒ-d̺�ë?¸ŠŸ�Ó.+úæyƒ³ç%†9V[Ÿ?Gö_Ó0”Âá½~xÿZé5ûNú¿‡X•p.çw5¦7®ÜÎùE¿+xìöC<óúKÜýIhº˜56•þÓR/1´î¶:×[ÔUfóŠcçòË/Çï÷óÚk¯u˜wìØ±�>ö̦K‹šÁÎ]õWjkª;5rc±X¨|ëi2ÎùjJ÷èŸÍØË›×þ”¿xŽ>8š˜ŽW ð/s¹æÝÁ<ó�ÛQº8±d¿´vœ¶I ˆ×®½Ž%¹¯ðêÜÞX¡ ç×±5uêT–.]ú_þV!ºÀ41*PöÑk$_zÁ`çÆ^º4Ì«Úb0ƒþ.=¿0jþ=|¾ðñ“ÎiyM(\º8±d¿´v,·‰é¥t×Nòó7òÉïâo ¹Üt~6ÖŽ×B4g¡×‹:œ]Z½KmPí1˜ÁÀ‘D£i˜Jik¨¨5ÑB•$0ùÞ!Ä6ûîpéâÄ’ýÒÚ1Ý&�}¼ÿØ ¼µW!aÐéÜú›Û˜˜ 6»¼Ò¹óëx�a^ñ}a(¶®�ßti˜·ná߈~¶žÁîÅKB!Ä÷DÐ�¿xµÛ¿%núÅǘ×4Á’ÕÅÁ.¿DU!„ø.1~üQ㓺òÒ˜Îóš¦�={(u‹ÿ޳ïÐа‘Å š†¢¨4>=šÏ$B!N83ô¬ÓLLÓ]‡`Ó]‹»`+1Ï¥wR§‡y¬V+î­« îËÃ–Ò [j&–¸$EMUEÕ, j&„Bü7:†#DMS'XW…¿¢ù>,}pŽ™B Ðù÷u)˜*Š‚ÅbÅp×âÏ[�ÞP >†ß‹é÷`òˆk!„ß!Š‚¢ª(ª†©¨¡{I-.-£Ön½Q.‚Á@—^ãÖ¥`ÚDUUTUEQÔÖ3öd„W!ÄwÍQÏ4Cý†ZºªËï3¢þr!„â‡à»ù 6!„â{D‚©B% ¦B!D”$˜ !„Q’`*„BDI‚©B% ¦B!D”$˜k¦‡Ê]«Ù¹§–ïܸ¦ŸÚâÍî¯ërÝôº"öäÑ G–.Âø.'BˆN‹ê¡ ¢ ¦ŸºÒ}T%8úA'žé£fïNÆeÒ++® ø©ÉßÀ^÷Òû¶“®×ppûZö¬"`‚–8‚Qãâ”?ÝŽø.'BˆNëB0õQöõì¬ný‰5k㇦ �·ÿ� ”s°"Hì€,J¸t�úü•ì.qÐcè©$;U 3‡R!ÄX×{¦1ý<4 ÛáUÕ/�ôË$p¨€j#‰>é±Í½|Tºé¦¶²-m ½ºgÈñ „øQèz0µÄŸ”†½­Ú›>jöl  hõ~Í™Nf¿Ñdw‹ ý¸š>ªvCá� |AÀBlŸ©Œ�Øò"®é¡ª`…{÷ÓÍ™I÷AcÈN‹!Pº†o7–“N¥¦|¥e dõ‰#eð8Ò¿ZÉÎM Κýréw¤4ÍÕ�4Wã?ãÑKö²³¢š`Ÿ8¬MuˆI#)% �tb̓”mô’”Õ›§É è%Å쪨$Ð/ûáuÒII Õ;)- Û7Ÿ²{w!îôœÃmëL;Â03è&ˆ•ø”Ll@R«<]©¿–2„ì^�Û=%«ûcvÒÐc8.[wO¹ðèšà«( –T¦:Z ñ¶�ŠÕEl\‘}8Ðñq¡GpìS~¬ÇI Šó,p€=…5ØzL%g`j(]W(ÓvPwt½„éz0u$gX³a@ÅJŒŒºrê + iÍ®Ÿ*âÓãaG9 Aˆ�à[ O% ø·Ší-?³ºý€fëFß¡=8´¡ˆÚ˜AŒîݬ÷…úK=/5 ¡ ¤@‚N¸÷¾jŽX,Ôâ ††½P,ØìÔûÐÃM¹Tœ$eÄÃÎ2ÜzN‹áÔˆÛ¦h-~ =SöSðí'Ôgô¥{Ï~¤';Ãv­þvâÒâ ²O\¶6ò˜í«„¤‰$6ï–†Koƒáéø¸ˆñFpìØŽ.÷ÇyœD²=Ã�g†§œÃBBf¢\Óâéz0Õbq%$·ºfj„ù19úÝá3•ÄœiôKl~Ê+(Vgã�@�†ÊCQÀ³�²ÚÁ¸C} £~[7ìÀè>ŠACR±«>*·.gO{_©h¨˜-~DU¥ÕÛd[­×Xß6³EÒŽ0Ôx²ÆÌ&ùÐí$oíNöv?™QC³h+æu¹þfc#Âì#Ó{€’�Ä‘é-†xÃ¥‡ÿŽ6ª¬t2O›ÿ�“hÎ3ÓÄD‘ë¢BCÇü†Õ™J¬ ¶¼ÙƒL5eµ“Q¯@�IÁ©¸ëtì®xœ‡—8bì`¨ÜÈÎb…îãf2(ÍÇþM[¨ ÍÁp—á&�¬~ýHNL$6>—ý8ÜŸaú¨+¯G*1ÍÛÖøKÛq;: XˆIéGß±§3v@<¾;8ä;†w&šªJkÁ™špÓŠ�·¬�z5�nÉöÒÛÉqÑ•cçÇzœDsž©Ž$¨­l�FqŒû‡6X3è�Çú¯ØaI·-4ŒV©’<¬_èÆýHÎ`[&½zƲiïJ¶ªC鞇fzñ¸5’{fáÐË)ÚR„Òs*½“ãQcÇP¾âkvîîÉØÁ©¨1)8ØÁ�‚YÉØÔn¿¶÷Õzåvöìõ�èÔðU줠Ò$~pŸÐõ<ÓŠÝ �ª½TÖÅ“×A;¨¡è«Ï)vœÌÉã³ZìÓ³Ÿ&±q±hx©­ñ�š„U‹®†§ŒC•&VÃKí�­ì©¶�2¢ohß=›—*ö× ¥#ÁÚ¬3Lz8‘jyŽ®ß�å8 ÕîhÎ3[7zu·³¥p%»¬ÃÉŒ·â¯Î§:þ’ƒ¢}Çá H\ý§0ܲ�‚¢¯Ù0QcÒÈ6�ÞÝ;º¤9+ ƒ¦2̶‘¢â�lßcìɈï‘IÞu”=Ú¿ñ!öô°›µ;Ös Ç zÆ &'ÇK^þF¶îýª(–b3¨Íf�v‰¤¦è[ö{u["iƒ¦Ð¯gãLX%†Ôƒ(ß’G~~wRFe¶ÓŽ,P ,1¶VÛÆðWQY�G�/ôŒ>Kl&=GŽ%ÙJd�M±âLNÅQº‹ßn,®LzŒIvFÛ·C˜ û(­·�40µe “^$ÇEWŽ�ÉqÒ¥í†b#iÈjë).\ÃæX]‰(tårŒ@©­©–§™Eʨ£xÕgÇ5Þ7y,Êôïcó²¯Q†ÏfXfÇÃ¥ÿ] »²noÃN›H’¥£tŸãäxóïcó²5Cg3²»ãD×Fˆïù<Áô†R<¶,¤|×)`ÔRv°KúXâ-¤‹ï OI>Õ¸ˆqØQõzªöl¤ZIc`׿…­ÉOá ¦%�eÂiæ1¹Fw¬õ{)÷ØI–Ôò¶Œ0éâ{ â­.¦øÀ!|A ŽÄ,úŽIºã;x ñ= üB!D”ä]B!D”$˜ !„Q’`*„BDI‚©B% ¦B!D”$˜ !„Q’`*„BDI‚©B% ¦B!D”$˜ !„Q’`*„BDI‚©B% ¦B!D”$˜ !„Q’`*„BDI‚©B% ¦B!D”$˜ !„Q’`*„BDI‚©B¥M05ýu”í-¢Ôcžèª!„ø�±tz ½’å/=Å[Rãm Lš“Ô^ƒsê™ÌÉÍ!Q;ƵŒ’Y»šGo|‘f"³æý†«ûÙÚͯWoáãï²hmå^@�%£ÿN=ïrΕÄw¬yB!N°Î÷LM•{ ¤º›ŠÂõ,|ã îþã:j¿s�?#Ò:yóXðð|¬h ¤F¥»Ö’çÓ~<]y!„ë|Ï´™„óüµýPëö±ú�'ùýÊZjW}ÊöŸŽf¢K½†mŸü�Ÿ¬!¿ZG‹ïŘ™—2÷Ü$7}³Ù@þ’·YðÑJ¶•zAqÒã䫸ÕÿœJšFÇeöñéŸ^eѶbJª½ÎîŒÎ½”k.Cj‹V³ðÁkY?�‡û3ÕIõ/gE9€“ ¿|‚›NJEóbÏŽ}8Ç¡4eì¨^Á2¾zû-®ÛIaIAÀ–6Š)‰›ùÿ~î»`.%ˆÇ§à€ˆÊÈ9\ãï~™Û†øö…;xök7{¾ÚLÕ™ÝH=œ'‘Ü;Û¿fjÍ:�«Oÿ†§?ÛÏÁ%à¾%¯’6ädrÏ:—Y£3±+]¬×pz €Q÷ý•]äy¶²j¯—Ù…|µÍØ6¥?ö(Êì—r Ýõ8s²m`蘪S!„8ž¢û3¨®nú‡Böœ{¹ç‚!Ä+à=°™b ‚�¹ž�›¯ç.¡ÌcÒwßz @ÌœÓâRCUŠq„²ù"(#'æ¨:)±ôž_BCõÍ‚iÔ8Fþôq^:e5‹-ãËUÛ)ßþ% ¶ÉÒ3îcÞ•CкR/@³ZÑ’F‘;X#o{=VSc,g“pŽ&w°‹@~egŽcBú‡|\v�wî½�/‡MáÌ9s˜>$Q®õ !Äqõ5Óç.¬æÏw>Ϫz“½ò¨™3„x LS]¿$žQ¹“ÉjÞ´f�íLƒP‡VAQZ—Q­(Xl�óm Ó ¥5–áD$ ‰ý'saÿÉ\pm)_¿þ8¿]zˆƒŸý“õçÞÏØ.Õ«©z Œœ9ëöMÔ|»ˆ¥u©âÆÏ` ³«mnäèÏå�>B�÷ßç£%ëØ¿e¯mYŶ›Ÿâæ‰P…âx‰zVŠ’0†«~6Ž ¿]‹§èŸ¼²d"žž�-#‡î¬c ÔÅ�áœ9ƒ‰×@w—Sa$“£ g ¡ß²ÇÜÉGK‹>»1Š�¯Þ�Å刨 ¼ÔÑ‹Ë jÙ³·½ ªÄÔ,­Œ~ˆM« pBï´X,Z,)É�ÌôÐà7¢¬—BÜð³˜èÚÄŠê¯xûk€4¦Îê�У);XO•Ñ“)WÜΔ‹KXüÄ�üeWë—ïÅ71‘6:´B!Ž�c0ÅS%qìå\2p¯í2È{çï¬?ùfÆ¥Oâ’Ó>äé/«Éï1þç= V-H@‡¬KŸaþ9™h铸xòüzE y àg·bU’Îäñg® O$eDRE{O&´°nk�¼WoẂzn~á.Æ»Zv‰ûòÊï?¤¢­r²OfX’†¦EW/Å9ˆ³¦¦±âÃòPBŸ3˜ÞÓ €E›ýEïòÀCŸSïJ"ÉiR]êã&÷J<;Z!DÇfäOKgÊ•§‡®Mz¾áíÅû (qŒºîQî¹týSì@( Ø“²éc††2•8F_?�;rý’m`6’S-èfèóˈ¨•Iœò‹›9gx:vÀçöbIŒÅëk]‚iïÍ)�á:~4W&9S®äÁ»Ï"Ër,êe¥×¬ó¬Ä0á‚I¤7EÈ(Ê6L'=2b1ê«(/«&èÌ`è̸㼞X#ÝVB!:M©­©þÎ=bA!„ø>‘9)B!D”$˜ !„Q’`*„BDI‚©B% ¦B!D”$˜ !„Q’`*„BDI‚©B¥N?e.oçv”¶žJ/„Bü@ô8¸Sù;LUV0yjngWB!¾V,]tüƒisV«<ñU!ÄC èòºrÍT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢$ÁT!„ˆ’S!„"JL…Bˆ(I0B!¢ôÿÛ»ûà8êûŽãŸßîžî$ËÖ³lI~äÁóà8„§$@Ï(™©¡@ÚiÒ¦“†N&8íZ(O�LÒ-§¥-×b -eJpBL!&`»¶e=Y¶%�îvýcïô£ÓÝýtØ ÷ËscéööᾫÙÏîowK˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂG„)Ž‚rFJ$S½TÀàIDAT.Ùfú÷ôÙRFØúÎÛŠ¢¨ìp(óª¬@åÈ@EXkÕÛ×§®în�yæ™ã6ìù±*Üü;�x¹úcTWU¥ºº:ÍŸ?_Ï>û¬šš›T_WW P­ºzz´cçN-Y²D™LFétZQÅCs"iZj¾ ÿ’âz¤R)-Z´H›6mÒìÙ­jjjT©M¾„)€ŠéîîÑâÅ‹åyÞ¸ :&–¯‘1FAèÈ#�TWW·êëê&)²êܵ[V*•R[[›’ɤ‚ i˜ÎAšEÑH+@6›U:�Vww·Òé´,X �»:ÕÔÐ y„)€C€µVƒƒƒjhh�D�–*®—QSS“¶oß>Ò49‘ýjnnÖÐР-ZŸÿ;pªZÚÏ3ò¼8úªªª©©V"è�7ÞP*U­ÞÞÞ²¦K˜¨˜l6+ß÷eí•¢Hžç) ÃÂ2R&“‘$…a$ߨw |?P&“U2­–sQ/a  bÂ0Tàû"MËç{^¼�/$×df³Š¢(nÎ¥ÞEó=OQ)›ÉÄ;%ùÛŠJ@˜¨k­2™Œ<ß—ÍýûÐ {´þ_Ôóu+ôÅKæ+1“  e2™I›É3™ŒÂ(Ì…©™õž"žïÇ·åþfËA˜¨ˆüý�^n¯Z(…{µyÝ:½|ÜE íÔl`=ÏŒ\03‘üÅ4£1Ó£ÞcÙ´v½þkm­Z¢�V[R÷~ÆÄ5Ž¢(WG[rK/a  "ò7Èç~™²fG›Þ©õ?|D?xæEmî”U Ys�Ö‰ç^¥?¼àÕÌÛVÇ~Å)L³É®ÂÍ×:+L©ó>¤kZ¬ôÛZsûßêWgÝ©e‹f”ÕWn¾S ÂÀ!ÈNY3¯ܬG¾¾R�m©ÕÒs?«ë�íP­Ý«o¾ª7÷Jž9Ø�›väÿ©kØ.u*¥ÍùЯiéÆIÂ@eÙ1/'i½õÈ7õØ–F]°ò]³læèØ'Ï‘‘Ueµë¿ïÖ-«Ökç •‚->ã÷tÃçÏÔܤ‘¢^½ðÀ=zø…-Ú±'-+)Ùz¬ÎùÜõºêÔÖÑsœÑ^m|ò!­z|�ÞìÍÊT·ëã×ܬ/�Þ,?ìÕËkþIß[ûs½»_ªnûˆÎÿƒëtùÇšŒféÔÝ…Rz––0N15µRÔ¯×Ö>¨‡ÿ©¶ì •œ}œÎ¾üj]ùɹJW×bk_¨¾ÒÄëæäxôÎ57êŠ5ñÏs¯ºOw]Ú¦÷£³JÂ@E�d©k³çàf­}f·‚e¦ÇÖ(zÏÛEŒf.>SWþé…jœåiß›Oë�ïþ½îl]¬;>Û¡ ܯm¯nÔ®ÖúòŸ­Ú°GžxP«ï¾C ÷þ�.i $¥õö£_×Í«ûtü¥×è/Žo‘úv+:b–<;¨×^©o<•ÒyWM×ÎõÆ“ÿ¨‡þîvÕÞs«.i±¹ Ëu[çò}s÷”–•¥ÅÖº¨š¦µåÑ¿ÒÊÕý:aÅuÓ’”:ö}=tßMÚeïÖ�§5É/¦®EÕ~H› Õ·=,°nº%IõŸþŠnºx®2ªªo‘WÌz0ƹYž0PaqœŽv Xž°ÿ]m�f3O©Íx©y'èÔy¹_ŽìÐкçtïËïhàÒvÍ̽�œ½TË—£”ŒŽ]”Õ+_ø=¿¡Oµ5Éì{E�üp«š/¾Mù¹Ã•Èuž EŠö¼¨G´K‡_ým]}N³•bk]LMíÞ_ÅõøÌmúÊå‡)a%sÜš±ëÝûÈjë)WhAna Õ5³`íû_*Xß ÎÚ>ằCñòWÕÍÑܹñ‘®-n-˜¢ªUa  ²âC¥ø§½ÿÑqÍ„Óɨó…ÕZµú'zm{—T£TF²G¤•{”µ²QO1Õ¦ŽZic×~…¶Qv×½=\­¥mS†ã6²™Î×µ5cÕsÿ ºüþñsžµ£_Y[=2ý)»©¬É;ÿÉkšé|M¿®ÖÒÚ„Qn×h†Ž:q®ôÀkzw¤3&¯«WLí'©ï`�u3º3fúï#Â@EÙ|W‚Ž}ózµíš�”^Ú¸Mû/ž£™ïq¹efÛãºí®(sÆçõ¥?Zª–Ä­ÿÎ7ôoúíg¦Ži†µF�§x<²ŒF²ÑË�‘Ðq×Ý¢k–¤Æ óg4*aw8}GeM¥ÈZSÓ‘ÉŒ«Ç˜¥*º®E|f²úîþ©&Z7»lSTûRÐë1€Ê²ã}Uö+y„Î=¹V™—Ño(z�ϤwlÐv-ÐE+ÎÖGŸ«Žù‡iaƒŸ_ˆ‘�l>àÇw¾ÿ4/V‡? M¿Ü¦¡ßš~<,£­o ªnölÍ™3új© rÍŠãƒÙõUz*LmMƒ–%Z�Ô¦_Œ©GدMë·K-Gk^µŠªkñµŸ¸¾‰ëÆš@©„4Ø?¨°œ:;âÈ@E½÷Ƴ)-½òZ�ñê]Z³ò«zçÂótêâÙšá¥Õ»m³6}LWœz”ZµFO=ö_jùÔaª õn(™ñô‘€—F0=c™.;¶n^{»îÐe:÷Ø9J÷ª/uŒ>qÌ2­8¯E+Ÿ¼S·+tþñíªûô»Z~ÎIj5Õj¬•önxNëÓ®SÔ:_IZF––PëÉkúû—¯Ë>Ó¡¯®¹K÷Õ\¥sŽLi÷‹kô½W|}ô�ÏUG`e³“×µØÚ¬oÁuÓ¤£æ'´vÝ£zü˜‹µ¸j�º½¥:}yS‘ë€ �‚F¾ÅM|Sr0ë]wÇ­Z²ú1ýèù×·ŸÈH2ªn^¤ãN[¦¨ýbÝø…>Ýÿè?ëögãþlƒš-<µ^ÁoÍ´)0./ÿ^•ޏò¯uó¬Uú—'WéÔiñÅ®“�©×‘WÝ¢¯Õ­ÒÃO=¬{žÊHJ©yéZüée«tÊU¿£ußZ«WLË¿|¼ª�¾°‘�¢ÑÎ&úT®ÖQŽôàSt­'©épháï~]+SßÕªµßÑmß·ªj^ª³¾x«®üx½L±u-²öëëZ7 µüêëuö7Ò|ëvYS«ÃÎÿ²N^Ö¨ê"z`ÃPa˜ëý¨ŒÖ›þ=}ïwÓ2€i Cýì…ŸëôÓO „©hN“Œ÷œN>éÄqX' õô3Ϫ¥¹Yéá´N:ñÄRçV°¦VFÆ÷ø^|嫵ŠÂ¬Âh´^“×µüÚ�«o¡uc<ùA äý¬²áäë Š¬^üÅ‹ªªJª§§Gg}êtÉ+­M�#Sãåžxâåºh›š0µ ³Ãšð¡daFÑ„­²ÃéßKø^˜�&˜G¡a’¬2á$Oy)’µÒp&£ ˜|Síû¾"k…ÑHŸÈ%Ì©pMee³‘†'üZÅÔu*j?Ép*;ªÔêg³Eaü´�bjý^S�†‡‡•JVå´ü#µé%ßÌh•ͦñgâæÓLfXUUU•\À3òˆ»( •H”÷¬Â@Åø¾ŸÃKVi¤+�üU(˜€‘1£õ ³áÄÍ»9VRø²‘�Ÿ|†ªµž\\ëlî9°²ñNI¾+ˆR¦*¦¡¡^]]ݪ­�‘{‡dŒÕ”´ö~HÅç�Œ‰_»»v+™LGFMMMêëÛ#Y«wßyWÍÍÍJ&«äû~îÜ«'ßäy„GÀTFY…aœQ7‡ ¥ÕÕÕ-)f•J¥dJŽRÂ@…xž§Ö–ýäùuš;·C�ïK&¾)ßÛN9fÌ‘P.D=ã)†Ú¸q“–/ÿHÁs ÖHsÛÛ´aÃkjmmQOO¯ºº{rWù†#�‹'odÌôëbÀŽéè!_Ï‹ n$ù�¯­[·é?UÖpd àaŒQ2™TGG»~üã§5gε¶¶¨¾®.>Rò=ùž/ã™øÿ2nGø ³Ö*ŒBÙÈ*…ŠÂxƒßÛ×§]»:µcǵ·µ©±¡¡`}Œñ4£¦F Ì×–-o«¾¾NÉd¾¡¸EÀFñ-qïŽÓôÜuîyñE¾¦éô�zvöjþ¼yšÝÒ,•±³Á­1*ÆZ«0 µoß>½¾ù íÝÛ¯t:­��A¥Óé)ºº÷ƒkôö—xÞo’m¨¯W[{»ÚæÌÖŒ3äûEìlĉ©þþ~½ô«_kOÿ jÿþ Që1õ5Æ(ð}y¾¯¦ÆÍ_°P çuhæÌ™q�rŸ)€CQ4®ß[Mû {!ùÐÌŸ3-íI6×~>¶ÖÓïØÿ@cÿòFwPríºÍß4󨸒å3Þ¸Ô$@Ç«T=ø Àa €#ÂG„)ŽS¦8"LpD˜àˆ0Àa €#ÂGÿ]³zѠΉIEND®B`‚MEGAcmd-2.5.2_Linux/contrib/docs/pics/ftpConnectToServerMac.png000066400000000000000000001235671516543156300243750ustar00rootroot00000000000000‰PNG  IHDR ^ZL­1sBIT|dˆ pHYs%%IR$ð IDATxœìÝwxÕúÀñï̶lI/½„^¥ ˆ‚R+öÞ¯âõÚëÏrõªØÅŽ"((X° *"¤—PÒûfËÌùý±IØl6 BQÏçyöÙìÌ™93“dòæ=eÀHU 5;ÖuõYßÐrõÕØû“$I’$I $NÑþê*WÛú“½®’BÕ´¦`íT¥�µ�$I’$IÒéàXÖã 6k[ßÐåÇ}, `ªe]c,¯k]}Ö7Ö6’$I’$I§ÒÉ<+èlÔ µ¦4Xpw2Òú–©/¬J’$I’t¢4fó{}öu¢Î„ÖÕü®ø½«åïJ-å�ey]뎥\CÉU’$I’¤š4vÿΆî»1›Ö…ß»ô€eP5.òßG]˃Õt�‘ºFc›6m:tˆ4™Lö²²2³A7(Bˆ*Û~®  =èòšÊ×w}cm#I’$I’t"(ŠÒàÀµ®mj[¯*jµuÁÊë]7 š¢(%‡.غukà)_X¾¶à²Zuµ”«²®¶ð 2}úôÄI“&]Þ¦e›óBl!ñªªšE9æ@O‘ÉFI’$I’¤FVÿXWB!tw™;ûÈ‘#k~ýý×wï¾ûî5@1¾Œh°�¢Çš _˜ƒìHBžyæ™3/¹ø’§Gw¡ ³@wú8bWI’$I’$)¨zh•á_yL¦ »]îä5kÖ¼6eê”Ï€RjBc€PKÀB0ÞsÏ==o»ù¶—¡Ž¾š¦Õr&õ'ƒOI’$I’¤¡¾hõXLUUt¡çÏútÖ5÷ßÿï€3È�5è z`Ž6ÃW 0RZµjöÐÝ×$n¬®ë†ZNC’$I’$I:åÐDPTKË„–‘¹y¹«¶mÛVP¾*°u<0z­ï¬FÕÊŽlPÛµkÕ<¡ùyBsàÇJf?%I’$I’N”ãžáR ë7bĈn�+6ª-­ësÐʃMä1:Ì&s¼�3뀢(4Ö¾$I’$I’¤`Ž=  ¨J˜Åd‰Á×B®Quäzm#܃ V¾rY°i˜T—æ2 !LÇšµÙÙˆƒ)ˆœlðxPl6”è”víQìöcÚgÐz<¥ˆ¢½ˆÒÃO1¨FÔ�Xp´F±5k´¬«g™“ÒÒR¼^/BŒF#6« «ÕŠªª�R�$I’$IÒ±«k¤:‹\.WG3 ÂoÃÚ¾&ÈçšjQt"z]×U@ihÖRä墬Y�qõ B½T¿í5U¥ 4}ðPè7Å8ö©õh.Èù%}aJf“EÑBA/2Pt(oÔYèMF¢Øâ ž ®G=BPVVFvN6n·KˆUUQ—ÛEaQ!Š¢‹Íj“�¨ô—¥ë:š¦¡(Šïg\Uå„i'Œ@èM÷ 2UUUÞ;$Ijd5&k/JE dÃÚ¾¦†u5U®f@|�gÃÏÌL,_|†#5‹Ý†bx§!¥…”.˜GIúa¼cÆ¡„†6¨áubH[€-¡¡ ªQaÀ—-ö±ÚË(+ù†¢½ëpµùŠ£eƒë((, '7›Í†#Ôá«¿üº(Š‚ÍfÃãñpäÈÂÂÂˆŽŠ–}]¥¿!tÒöng͆-ä—¡(*–�PzôíGç-1ÈŸçF%„ΑCɬ^³žüb': V{(]{õ§K»Ty½%I:êÓ•º¨”NÃ3 õBƒe@ A}6En!óç™™Ž¡¢‰=ÈöŠjÀŠiÃ:ò<´‹.CÙëJÚ7D”,"$Ü—‰ô=@* .,v3fo&¹)oálu нEýÏGJJJÈ/È',, ƒÁ€¢Ê5B ( F£‘ðˆpJŠK0 „‡…Ë TúKðºJÙ°ü'ÞŸó-…¥n¢¢#Q…N~^>K~ù…3‡ŒçÒ‹Ï&ÔÚhcO¹üŒ}|øÑŸ?™þ]ÚÔRRphû:¾ù} CGŸG·M�;#¬k6.ý†Ù ~"3ßIXDFEP�ŸÇâŸ3ö¢«¸`Ô™˜�2*IÒ©£Q9õfàDóõ͆Ö+õÏ€VVÔÐ ¨ºb9Ž”ý5Ÿ¾*}A›ÙbÆþçZò»vGIìZïzDánBó~$$âhðYY•ßéV†îF#¡ê~\i_£w¸­Þõx5¯/ói·UŸA�§|¹ªª8Bäæåb ÁrÝ $餂­kcæ¬ùxÍœ;ébÆŽê�Qw±uÃ:¾›·�ÅßÍÅËecúþmšã‹ó�°bý*: UÇ?Ù‚¬ä$Ö®Ý@»žÃèÚ>þ¸ë.ÈNcÞ É*32áâ«vfolFÁæÕ¿±pÑ�,úr.­Z´¢_çfÇ]—$IÒq l‚¯O6´AÍ󯀕Cçë€ææ`^·‹ÝV^EE·†Ó›ÃFáÒ_ÑZ·F±Õc`’îBÉø‡Ý�¢ŽŸ•/Q~äŠßY Ì63!Y+(.�ˆb­ß�½¸¤“©j7‚ÀkâŸéTU‹ÅB~a>q1qõªG’N�«ˆ¿^@¡KåÊnáìg`.o�2ê\šÆFòÔ_aåO?0nx",F„ð’‘z�Ó(v–a²XiÞ¢­ša6ú¶-+.ä`J –ˆ¦˜)fÿ¾J]nB#ci×®1¾n7%ù9JË 4¦)Zi¥QæÑ�Ž£cûv„;l•ǪkŽd¤± %en¬¶0Z¶iCB|,ªßï ³$Ÿƒ�šž…ŽJDt­[·"62 !4ÒS÷³c×^„¤$ïa«C!.¡ qŽ*×F/ûvï")%·«”Cûv²Åá¥yB ¢#ì€ 7+ƒ�SPŒ¢išÐŠV-p„Ôœ-ÎËJ%9»”c.gâØ³0•÷û4z<ž’2~Xµ•ìÌÃh�âQQ(+-äà�ý:œ‰ŽBT\sÚ¶iEd¨ïÚÝCJJ ^ÅH¨YåÀ�ƒ”¸5Z´l�×Yˆ=2†æMã+»Qáeßž½853Ú·Âb2àrqðÀ>ÎBÛ”¶mZf/¿]{9”’‚K¨„[MØŸBq™›ŽÝû‘í¨áL%Iú+š¨-ø¬mD|}³Ÿ•ƒ�3  êª$ï%Th¾ °¶à³byy-ŠjÀ‘›MANÂj«a?î"ÞdŒ!*ÿàÓïñ ŸýúQ) „ÙŹ[ÍšÖëœJKJ±Ú¬¾]Ör*šá+Ê„„„PTT$§œ’N{%Ù‡X·/—&1²'LªÿTi*-;öàÆi—’«…€.нnÖ­ZÊœO?#5§¸r?ö°hÆN¹‚Éca2¨d§ìâíÿ¾ˆ;¶JI:éY¹•ûìÜ£÷Ü{ViÛÖ1ã�YØΠèÈ~r ‹+Ë y×_{¡# ³é�ïùè‹ï8œ™WYolB.ºêfÎêÙð8óùàõ×X½i+NÏÑóèØµ77Üz+-Â�,þü]¾[� À/ æð˸æÞGwf·*×F÷”ðÞË3Ø“í;ö¾ú˜¿‰áº[îæœaHߵ޷?œËÎäÔÊmL!aô0’›o¼»9xºª0AÑ‘ŠJ\D:BPC'\Hÿ11™Í(ÜÎ<>˜ù«×l Ô㬤¨ºôìÍ�wÞA”݄ǙÏÇÌ$-§˜0ÅÃ�#y˜¬¡Œ>ë–,$6qwÝt-a!¾<ƒ3ï0¯¼ô"Zxgž|èT¯›Y¼Ïòk(qWÔaæŒn½¸ó®Û‰ Áã,àÓYï³ïp.‘&Áþô f+×ü»Í£oFI’N;õÍ€Ö• …àQ¡,Šð6  >+³æ� þû¨RF  `p–"Š‹‚7Ùò–¢zsAQÎ eõò ´¼JƒÙˆ^r¥žçTæ*« @�žŠ¨òØÏS�ªªxÜ€J§½Üôý!è7¨'fµú?ZFsgŽžàûMU'oaÖÛRh�ãÒëo``�¶ä¦îæƒYŸ±àÓ·iÖ¢ƒ»¶DQ}¿¢™©{é=ì\þ}ÁÙw!³Þz•Í[6ðýò$.ÕÅ ^R&sÖØ)LÙŸ’œ4>yo&kW­âŒ^Ã9·[²“7óÁg (ÕmÜ6ýa:µŽc׆U|úùB¾šó -ãï¦u´™>ú˜¥ëwÐüŒ3¹í†©Ø :¿~ÿ%?,]ËÜÏ¿ä–ë.câµÓéÚ ÏÎø�󯺅súvÆUý÷Õ`çžÇgÃÏ ˜õÓF&\z5C{µ'<<‚¢ÌC|:ûsö¥å0fòåŒ1Oq¿üë–}Gd³\qÁLA…G7§s³H¶nZÎ#�erÎè‘´m•@“¸X"ÂC ±† š·Œ%s>ã÷U[hÓk$7\zVƒÎ7sfòûºUÌþü ®¿ò\TMG×urŽdamÕ‘û½‡¸áá6 ¶¯bå–ݤÉ¡sË8„ÐÙ½a-…E.†�ì†Ã¢ðÛç_ðë²õ´è1œë/�€Ã$øaÞ‡ü²j ³f·ç–ë&`,¯#/+Kó¶Ü÷È]ÄG8ˆŒ�“÷9Iú›Ò4-Ø ¤Ú‚ÏÀ¬gMsAÕÙ´aMð.WýÊ!4 áõÖ/Õ5n%¤^ƒ¹ü)ª^g½ÏI×uTUmð VQt¡Ë³túÓ(ŸÏ¶æ>Π”ß t’7¯&Ýébâ%qþè3Q�&qq\YZÌK3Þç×Å+èÓ)Á7XHhÓ�iO"> ÄqÁ„ñxó#2Ä«wF Îè6ˆ©œC„Í q1Œ5œ·>û�ì´t¼Z«V­&ß ]s CúvEUbF�¥8;�Y‹6²}G2Q�ÂØ�œDtóÖÜxã4Ú6�`òÔ˰‡Çá4EãõêD†G�‚ðÈHâšøúuV?…¨ØXb#¨ª‘°ðš4‰E¶lÚÉÖ�é4t O:»Ùq±\{ÛµüoÆ[lß¼Šì}ˆ·ÈÇ%×߈ñóÏY·s'¿»ÅB»öhÙ¢&Ž%!.‚’¼L6ìÙItóŽ\wÕ%´Žóu[˜zÙU¤f¼Âž½ÈÌF‹o`¤=:�+o¼‰žšWÖ5xx~{c;÷¦S‹X4·“-»’!$”Ä®]ñå²q÷6š´ãÚ«.£]|S.™Fjú+ìÛ·�ŒÜ‘4·ûš›l‘Í™vÃ-ôírtFyŸ“¤¿µÊ.™‚Ÿõ L×@½Â«èåsÔÕztŠ‚RýF[_ŠÑˆ0õ© ”�Š.¤µ¡—LhŒvêsNÕÐà ´¢)^UÔz×#I§Š¦k躎Ðõzü¼jNÞ†8z%¶]§b‹V»Ð¡m…¹Gpy¼èº@è:¡¶BíæÊ}ÛB,˜ ‚²â\¼ZE½IˆÙP^Nj³`^œ%xÜ.2 (uºÙ¾áOÜ9|•*�–|Í]JqQ…¹ ²siÖm(-â"*ë4Ù£{Á… ¾:t¡×ó¼…¯¼®£{}åP�ŸK±W£× 3±•Ê}ĵé@û¦ñl*,¥¸Ô…l ¢BëÎ=¸ýßÈÍÎdç–�¬ß¸™´ŒT–ìØÊޤ-ÜxûÝÄŠ\ò�dâ2ë¬Zº˜MFß M÷8Éwº)q9).*#Î$BÇETxX•óiÑ©­í Xþë*Æ ìŠ3;�›7Ót �ÚDS’¾—Üô#¸k–-fkùÈ{ÝSF^©‹­Œ¢"'ºÕwŽÖ°p¢#Ãå½M’þ4¡Æ…5�5e;ë• :I,ê JÄÄâ:Æ ‡PÓn|…¼!VD=ŸŒ$T ^CBäøš¿|óôë5ÔëWµ×íEØê? “ÉdÂãñTÍ^`Ö6Å’¦iÕ.IÒéÈb÷ ÉÈ,ª³¬¡iáØÙ¨ªƒÉ„GËÇåÑQ>eYE†L9:…YùKTyù—+¯‹ªeuÍÍþ=ÛÈI¯Ôµl•€Á¨ø‚C¡cqÄ8ƒ‘!`š·À®4µžsÅñ”¿Eñ8GQ1)*%Åe”:kkR±ÙiÖ² ÍZ¶aÄØó9´o'³?þ”M»ö±zퟌíÕ!ÅylX»ºÊÜ k8–š×ƒJy_xQí|±$öïÆï·q0«=5™½™¥\8u v£J™ðÕ%¥lX»£_K(1–°ò:Lå T¢òÜ%IúGP¾ËŽ5ZùuE4°ù½æ> ~Õ !PÚ·£ÀdÁ¢é(ªzt4zM1oŶ^/ÍZ"¢¢¢ÿUC)2v"Ìóf‹áhªo:¦Ê +‚Ïò—‚üzóõ«°Ùlb±Xj}Ž}E0ª(¾~rN§³ÅŒ^Ïz$éTqÄ&j†?ù™Cã‡Ñ< ÉØURÀâ…_“£›¹à¢I¨#î¼TŽä’sôÅEùäåæcŠn‹Å¬â* ¾®(¿ åKŽ® øÚW®|Yå>À €5<Š©7ÜIÿŽMª£® L&3¹)[QŒò2vPT6„ðòA7�¼œ<¼ŠJdd$FU©¬K÷;¶à|dž"À W—ªBgÛŽƒtM¯¼¥¹�Åd–•ŽÃn ºï´][H:œGç½håkòFUiÑ>‘+¦žËîߥÔ]„NSPš·éÅ=Ó¯'Ôt4ˆ®Ö- š3§êUõ«S5Yè×­+Ë×îbýÚMè»~ÅàhGï3Zøº ) ¨*ñ-º2ý?·fö Ô…@/¯C/ËCà»^¢Îk&IÒß�îÕýû€ hú¯ƒzŽž|Ü’ÿ{p¢êKØC)ëÛgIIùÖÃ܃¼*Ö AQI)žÁCfKµ}})F¼1C((2ûnŠ_‚Uň–øŒí»Ó‹‰'²I<’·³i[rùy 2öóÉÌ×ùhîBòŠ\¾:4_]G²‹k½>¾` 4W)EùèåÇÓ”˜•�+~##¯¤ò˜wl\Çž”4"C#qXÍA÷·ë Þ~ãuæ~½wùq @ó¸Øš´Ÿ2—ŽÕd#,¦ Ñ ¤ÚîÝX,B,!w ?}û ¾ÿ™üRO•ëWq­�¾Z%v'Úaaå’¯Xºù ]ûv!6Âìá1Ä´jIfú>vìLÃlöÕ�ÇÉÏ‹òÕw?’Wâ®ÌWfYOƒŸ]ù’/ù:Á/ŸjÑ[�÷À µ®òþåj„Ô ‰è½ý’ŸySònLóÑÈ0È(x!e.7ÃF"Ú´­Z¦.öÖÅLÁZø9v‡/㪨ø_°Ê³ èn7ytÅ?¾Aõ¨ªJdD$…(ŠR¥Y=p¼¢(x½^ŠŠŠˆŠŒÂd4ÉÎùÒiOQMœ3a2‡3ßcÕ�óÙµc;“ÎŽ 7®\Á¦»°DFsÅÕ“5èÐ} ƒ;üÎêe x¾ðû$rpÇz–­ÝJx\ &�€Ž6]#ðo>Ú¼Nùr ¢¿W~ë0ÐgÄ:®ßÆòEŸQ”›Aÿ®mIݳ�¥KWÞº'cc" ³3ñì¡ìyëSÞþß“¾ðR¢¬‚_}MJV1ã.J˜Í÷�«ÙŠ]…e >ÅæÉaà !´Ž� z�¢âš PÆ¢óPÝ…ôé݇»3dÄPüø�?‘ÍıC)Í9Äüo£Z£5n<‘Öà÷€ÎgŽ¦Í’�¬þ~™{·2lèl&زþVþ™„=¶=Ý{öÂ͸áƒHJúŒ7^x†ô‹'jbù/‹Ø¶7�Qç_ƒÍb„2qôZ ªÕi m¨3;ðæü?0Û"éÖ£?!&ß 3³=œ1ósû§¼ýòsd\8‘øÈV-ý‰MI‡6ör!&p‰ªß/yo“¤¿½ò> Ç2©b}Mª�‚¯XXñÞ > Ân§tÌyd}ã&"yÖÐPßÈsÿcR@x½–PxÖH܃‡ÖÒG´æc÷F"KwáÊýŠÈ ÕdðE›U�gayzJ¦�9ø˜ÚXÌvùùØívl¶ªs•V n·›üü|Âa¾ ‚$ýEĶJäšoÇúÉlVnÜÆ»oo«\×¶k_.œt=;µÀÙ„Kn¸ë‚ùü¼rÛ7¬àŒ^ƒ˜:e" ‘¾fy£ÅŠÉjŽöB �¨`Bf›ƒÙ˜*oGB€ÑdÕ€R~k²„5áºë®eÞÜOY¹r1—éÐ¥“.œL‹ Ðqà®+ñ0á�|ùÙGXâ9gâT.8o(fƒï÷5"¦%“Çgþ’|5盵©!UhÚ¥#næ§ßV3ç³/±G¶$!¾=L¹],ùm%ïÏÜ@\³3˜0õ"%6²/ŸÈøÖÜpÇÍ|3«¶ldoÒÆò5*mÎèÉÄÉSèÑ6EQè8ð®)õðù×?ðù§úÎÇÁˆq“™|Á,�bÀª¨ *jÐgÈ«tì5˜ˆù` oJÏ®-ýîÈ*íû�äêRs,bþœY„ØÃ~îD.œ<ºz††Þ¯%Iú+  4¡ö`´Îe EÕÔÜ«W¯î³?�ýCƒ�Ú寰c–^ZŒÁíöÍÉi0à1›È‹i‚wÈPôöŽ!øô#jÉ~ G~$BìÃb(EQ< T4B�; WôÙh‘ýÆc¥�ð5­àr»°X,¨åO/Ñu�ǃ‚BTdF£±®Î ’tú ë^JŠ ),q¢**f«ƒðPFƒ¡Úÿµº®á*s¢é€¢`µZ1¨ªßíE i b0ø-ך®�¢úÊS^®âsEË…®£i:ªjðUÊÑzËœNtŠÁHˆÅ\µÞŠº½nJ�nPL& ³±üŸá£ç „ŽæÕЄÀh2UäSíòè:^�†PÁ 1”aB×q»Êp{}}"C¬VL�׫¦ë­•_ïâtÀæ#<4£!Èùx<8Ë\EÁl¶`6ù�Oùý Ê[ÍU¼^ ¥ú÷³žu蚆¨­I’þV.Xøèƒ?ø!PÆÑŒ¥øº¡Ëª½6ÁWf@…~ M-&Þ½ÐÚ¶Ç™�…RTš××Ï34½IûÏZe4¼ @%I’$I’þYÊ!Õ§E   8¥Oß>�s&’$I’$IÒ_ÂÖm[|9‡£±¡^Ë& É€V¤Ï‚ö’$I’$I’þ™*bD¨Ö3ûTÐ hCÅ)I’$I’$ýõù B‚àdà´JÁÖÕ™ €ûaK’$I’$Iq €ä¿MMË«Í Zã4L >TI’$I’$é/­ó€VÛÔïëÚ¦j‚ò> G=I’$I’$Iÿ AКbÂêÓx�!ƒ~:If@%I’$I’þ±j ~,ÁiÐ÷šú€ÊT’$I’$é& 8�gµâ5¬ 6}•ÏÁPdT’$I’$éŸ'HZcQj2ƒM@�ÿgcÀF² ^’$I’$韭¶4Ø3áýסþeƒf@¡îhW’$I’$Iú›ª!ZÛÜŸø• – Ü‚ô_TE’$I’$IúG©a"úº&¤¯(Ø'4°Le¹šÅyré^ò³2Ø·oÓ2(óÖöÈÑÓ›¦ihZ}Ž_�—º—_–üFv©Vc©Ì[øöç58=5—‘$I’$IjDÁF»×µ¬¶²Úzµ†•')ä¥nàþÛ®bȈQL¼h*ãÎÍ—\Í·köðW ¹ mä–ËÆrñÍ÷r ÏUGiÁá ßñÒs�s°ÈSc©�ë~âö§?!¯ÌÛ¸+I’$I’ †y@cÃÚâÅú¥A§a:i£à…;�7žˆ÷Nã‚ /ã¬þ](:´“yŸ|ĽÓ¢åü�èÑÄv2¥Qlùs9¿¯Ø@‘ÕßÛÓzh›ZË+Š—»]ËPûhÂKI™[vÌ•$I’$é„ó‹ƒõ Ö¼¢ÔØìî¿¿`¨ÊIÊ€¦ífÕæ F�º•绞X«];�Þ1‘Ë÷+w—oiåì©WñÔãÒ!Fç·w_æñ¿i6s '‡ý‡ÇúrËýóÎê­Œn@Ææ¹øÒ§xêýY´¥1ã¿OóÞ›sÈ)ßk“ögòÀC/pñøÎ˜¼¹¼sÏüìÔ0eg“îvså+ßÕ€zrw1ïÇ&>ñ2íÓæðÄ‚Ÿ92ýJš†øÖg%¯áÆëïdÝöýx‹5–~½b8ÚR¯±Åî}èÿX¶=Õw–qméÚÚt¬¬gÉ'ÏóïÙ{iãå@J6ÃÇ?L¯YøßÛxþ“åd” ±Í¹çÙ¸a\?\%™¼ÿä�üï«Í„5oIÞÁ„ŶçÿÞ}—‰}Ú‘¼éî¾ù~vdТ¥�})Å$ö»•ÙŸÜCŒÍÄæ yñ­¯2íIn:¯#†Æû�$I’$é4RÇDôþYÏÚžý¬Œ?Å?ÛyÒç mޑɰï÷�™0¬w=ô4³¿úŽ-²pDFã°špeñö3ø³0޹‹W‘”´�…oÜžçñÞìŸpiàñBŸKï`ÝÖüð­ô:†n�lÌþr%e:­ˆEs¾¤UŸ> éÕžÕ_ÌâÓ�1éé�Ù¼#‰ |GϘþ÷Úë¤)À”– nzõ¶îLâé‹ú?áaÃן‘Ùâ †žÙ�!gžKë¼|³|: Ü9|ðÐÓlËáé÷¾e÷îÝ,üà ìM£¤Ì·‹²üüõÖ ¶9›óÆÂßÙ•´ƒùÏM&kû®*U)ªJŠ9ó’§Y·u¼z3ùëæðÐGk9÷Æ'Ù¶{7ÛÖ-aL«|^ýϳì)ð�µ/~º–«{ƒå?~Ϫ%óßÍÊÒ?váEgåWï²ÑØ™9?/çûVòþ‹÷a(]Éž,ßuÈ?’BÒΤ¤äÖø“$I’$IÒßFMý=ëêJ�2�ï „tJæULá\þÐc<ÿȽ ïÝ‘oßy…»nº–Ë®¼–‡›G¡в°å·M„ ›B÷„p4 :›D›ÊÚ¤­”¹}C•š¶ïÂÍ7\Më¦q„;lD·ìÄÐ6gp`Í"ºqfàÇ�‡Iì=‚V±Öí^O‘%Ž)çöÃ$4,Ñí˜vÁ`mØÆ¾#•ÇØûœ ¹â¼á4��Áf1=OQ ~ZO§vèÓ± íúŸIó3âùåÛy¸uJ�`YVC.º†‹Æ **Š>g�Ç]SFQž ¥ ã[V&qîw0eH"Ñ1q ˜p7ÓFt«^aÂ0¼m"mšÆîÐYÿÕO¸›uaðÈÁ(Š-ŽsFœ�¡hë“s1ŒDê*ÛþXÃÎGOèÉão~ÎÿÝ4 # f“Š¡`?+Wn"»ÈˈI7òùçŸÐ§E8ιŠÞ{�».ë…±úÑH’$I’ô7¤h`0J-Ë©¡lµ2AŸ2Ÿ„d ‹gÊ­÷pþ wPR”ËÎõËyõ¹ç™÷ùÓD ìɵmJÈʇƒ_½Ì”_ß)ÏÀ Üf+ñ6{å~Ìf#!Ö£¢j‰â’&óßÞcõÖ:æ-ãо~a"6UàÌË¡¤ …;¯˜‚¡|¯ºæ!¡e<ª_³ÝaAUk¿)[—³rÓ&òì<ÿh)&o{S3(Î]Íöä %x5�˜ö‰ØÍ¾˜_5†Ð«w["—nÀ]VB^ôêÞòh�§„�xöPØy¨j…¶p¦òcÒݤe¸áО½ãjf”÷wÕ½Bš6EÑQmpÇýW0û›%\5y6ÕÌÐñ—s÷­7г]FN¹ƒÉ>ËÜñú£y„6éÎe7ÜÌÍW�Ål1`�ˆ£g¿¸†|[%I’$Iú목h°~��_W|®UE¬s ú€ 2SÙºs/-» ¤eTfK3�¹�ø�|.¹õ¿do݉Ö6+pî5÷rÇÈ.GÏHÌ¡1ØÍ5ôHTš÷Eóü¹u¥yë8’pC;G£ˆR f3ްÁ¼ðÚ#Ø9:ÐGÇD›6Ñ@^ùQÖmóšeìÉŽã‚s‡`V˜¢8kÈ0>™·Œ•wÐm€EwZš£�Ìô"œNß> ª �S쬲ïüŒP[¯KEÅ¡ª4=£7?ôÚD šµ‹ÄdµpõÝOpΤ}lß±ƒÍ+—2û½Wx,7”OÞ»‹&݆òììDöìÜAÒÎ�üøõ\^xðšvíÆ•ƒZÕã H’$I’ôwd&ÞÔ¿�g]}B«­Ú”“ˆæ$-çáÛ®å¾ÿ›EJv!ºÐq; Ù�œ�“âÚ´&*¾‰cXÿËZ¼q­èÖ½mšÚX¹ä;Ö&%×:W¨ÒŒË.Ã’�ßä“y¿qÙeçeÕh¢]bwT}#ÛÒJé˜Ø•ÄNí(ܳ‘ù?¬¤¸¬æy9ée‡™óÉ·ÄLºœW_|žçŸ/½ô"—uWygþÏ(MÚж‰ƒÕ¿¼ÎÊ­ûñj^Òönæ£o“_>½gX| :õ�bö3².%¯ÇEê¶Ÿ™5ó×Ú@µ3`B2ö¤°1­˜N]»ÓµsŠÓ·óÝ¢ï(ÐR·þÌ“ÏÎ Õeeô„)Ü1ý_œ36‘Œä4Ê´¼1ƒ7æþF|§~L½ò:î¾ýZÚ…ç’šS @VÊNæ}ökåË> ’$I’ô÷¬©½¦þŸuuá Ú¤ôQœ5ì ‘)4ï>ˆÑ½Zòúü¸qïbÃð: ؼ~-.SOÆžÕ {„�‰—^Ã��½Ã­×"±Y8EGö±29ŸÛŸ�AQðˆš2• }Åñá}ì·ôá�>ÝË{¾uÎôšõ=/?p+ËæõÀä-eÓŠõÄ�¸“É <õˆ¶ŽlZʪŒ0n4“Á€¢ø.�j‰`й£Yôú"6æÜË —ObÞ�Oñï;o¦kÛfdLbõ¦Ä$øæ µEµdâä±,yúKn¿.•.-Â8¼k›òŠ ¿­/8®ü¬èxÎÍŒz{3Ÿ¹ŸýKºaÔœlýsEÝ's‹Õ€ÓSÌ÷¯¾À¿.eP¯ ²�°fÅvκþ"ŒFrö¯åù¹o±rù�ÄDÙ8´y ɉ Ol Àº_fsç¿ßæìû›ñá}gÉ~ ’$I’ô7UÃ< 5N§ä·>p^ÐZ£(Ëѹ?UÀwÍ5×\pÌG_OFK8ƒÎ›L3»àðátŠKJñbdйó¿×ž¦sœE5Цë FölGÆî=”x5, Ýyì©g™vVw *x³²Ñ#š0xÈ æª�±‹Ž§Ä = à‚1ñš|§‘ÀøIã0å’ž]®¾‹ÇﻎX‡E…¢”4b»÷¦o×30íêåÀÖÕxb:rùʼn ¡<þDA!6>·§„¨V}>b$ã¶$3=ƒ7$ ¹ˆ—¼«9„CFe3Ó¾×Ùô;£)))‡Ð…JÿqWñÈ¢"9gx/¬FÅ…y”E¶bÂИÊ�É`‰`ìøó‰-Í!%;ÝÂÐËîæõûo$Æn&¬IÎ?„Œ´T2³KÖX&ÿë9îŸv!F3]‡Ž¦_ Ø¿? gq-;÷áÅw^¤_›hE!ÄíÁS¢1ñ²©´�=¹suI’$I’tÒ¬]»vÍï¿ÿ¾ Ð8DÖ•’A¾öV«­ Ð…ªÐ[:wîÜí�?þxÿ¸Î !„N™³—GC1±ÛìÔj…ðz=hšÀ`4a0¨�隆ÇãE1¨˜ŒÆÊ æ‰âõxÐQ0 Á7 ¯×‹@Á`4QÇø§ª› ·ÛгÙT}ÖX͋۫¡¨F̦êýJ=7ºF“ CC*–$I’$éoáÕW_}õÉ'Ÿœ8ñ5¸Šz¼×´L¬§â=ØDô'­h%E%Äæ¨œ’¨†B�fŒ�Üþ« X 'oju£)øTN•£É|LûVKÍ碌X 5_@Ó1Ö+I’$IÒßJ°‰èý!ù¿Dª© ¾Ê¾Ô€'}&I’$I’$éôÐ4Ø{ ºæ ª¢Ùýäg=%I’$I’¤ÓQM-ã5ÍZÛdõAcÌÀž–2•$I’$Iú‡Òu½¦Y‘ãÃ`Ah½ç•Ì€ž‚ é%I’$I’¤ÓH`àYWs|}âÆ*ñfµ±æÈ,¨$I’$IÒ?’rt: š2 õ�7¾Öõ5e@%I’$I’¤¦º2 ÁÊÖOÖ«(ÈQð’$I’$Iÿtµe@�¥ ¾ŠŠTf?%I’$I’þáÊ“�õÉ€KìXYÞÈñï¬A„èB!× û »•:Ÿï$I’$IÒñ±ÍCuš‡ Š8áOþ“þòêêß8}àºÀ é«”3ú-<¦‰DNaOžÊÎl�.ø%I’$éäPH+Rh)HŒÕ¨åÁy’TדނåýΚ‚ÒÊr*'9šï‚2ø”$I’¤“N °/_áP¡ü,Õ©®ù=ë;}gÐuÁ!q"!*TñÊàS’$I’N ](,úç_’‚õ­Ð¨-å55ÁŸ0¥ž€j„À¨•œŒª%I’$éI3„ cåç� hun'„@×u4MÃëõ"Dã�ÚPƒÁ€ÑhDUÕF훪ë:º®ãõzÑ´ºÏ÷tPq- ÃéÐO7Xs{mÍë5mSÍÉ„ðYíô$bbbNdµ’$I’ô�T\\LRYS\æèm'„ ¬¬ŒââbL&&“ ƒ¡ñ;ŽêºNYYn·›��ìv;ªz|Z!š¦QTT„®ëX,–Ó% «•·Û]yÍÇ ¹æõؼ^SÿÏj};kù\¥¼‘àNêw(44”N�:�ª‹,I’$I[ÉÉÉ�Ú°m„”””àñxHHH $$¤2;ÙØA\E–Õív“••Eaa!aaaÇ„jšF~~>‘‘‘DDD`4Oȱ76ÿŒsvv6ùùùDDDœÊø¨>£ÝëZtÙIo‚¯‰ªª2•$I’¤Ft¬Mæn·—ËEëÖ­1›Í�|TUU4Á[­V8tè%%%8Žc u]§°°�èèh¢££Oû Ó_ŵ0 ÄÇÇ“™™Iaa!'í<ê1È?#ZÁ2¡'¿ ¾.¿$ë§²zI’¤ÓNÿ…PË_ç�¨ô×&„Àét�Éd:©u«ªJLL ©©©Øíö]B<B¢¢¢þRÁg UU‰��%//¯×{²¿55Á×T¶!ÿé(pš4ÁûszOUÍ’$I§']>­C:‰„x½Þc ƒÉdBUUt]?¦fx—ËÕ(ýH+¸Ýnòóóq¹\(Š‚Õj=iÍ⪪bµZñx<'ýŸ�44جQM¨$I’$Iÿ@hHHÈ1m¯ë:þù':t ""¢ÁÛWô×Ô4 £±áaŠÛí&,,¬ÁÛùB�››ËÚµkY·n7n$''£ÑH||<}úô¡oß¾ôêÕë¸ëª‹Ùl¦¬¬ì„Öá/  ¾®~žÁ!Õ{¼ÿNNy¼$I’$I§NÅ@˜cÍð¹Ýn®¸â Þ}÷]† Öàí+ éú±uÉBwvrï޽̜9“?þø“ÉD÷îÝéÙ³'^¯—´´4æÎ�Ë×_͸qã¸ú꫉��?®újc0ŽùZ§Ú&™?¦©—üÉ ¨$I’$I§�ãmö?ž¹Ju]gß¾}<òÈ#¤¦¦2aÂ&MšD«V­0›Í•SSíÞ½›/¾ø‚… ’’’Â3Ϭõ}|}ö´là ¤ÓJî¡]dfeÙ‚ÖmZžêéWq¥¥%(FŽˆŒ�ô° ¯«„‚¼|*öȬ–ú÷)ÎÍÀéòb %4"Ãiûo ^Šrspy\X圿|9×]r'ùîš~NO°{‹³žGÑË ™4¦73ÿï%Šê,Y|`9oüç6~ÿ}cƒ~w$I:u„¬]»–eË–1vìX¦M›V-ø¬ ( QQQÜvÛm 0€/¾ø‚;vݯ®ëäççãt:ƒ®/..¦°°ð„:�µ»Ó(mQDGÆsô‡9#•äíI¤)­zpBçàŠù¼õèý$åÇ0ä’{¹ðÊËÐ�I|ðøµ¬Ø˜Tó‰iy|ýÄíÌ™ÿŽÄ \r×ãôìÇúï^âý×ÿGNqðPOè^ö-™Å›Ó¯à« صcùù ü…‹�_Ì`ñ�¿�º} é%»ðhÁ©t¯›•_Îà÷­¿²{ÇF¥åÔ¼_½�ß^}’M«V°Ï²œ‡ñÿ]-M]Á«�Üʲ­Ûè;éV.¿óQ»4aã÷3˜ñßçIË xÜ«ÐIߺ†¼ôí„D$�8ò\L¹ûXòÉ+¬Ørðè¿mÂÃÞ¯ßfÑ—_Ad_ú$¶Æ×�AØ¿ù{æ½óù¥G#Oþ~æ¿ó,[’²é=ö"Ì!t9kÁ^~Ÿó*¿®ß4 ^üô1ßÌ™ƒpt¡o÷Θc:1tp;öoþ‰ùoÿ—œ’£‘ާ(�3ŸaÓÎÃt3†(³…ö#'Z´‹_¼Á�«öøí[#ué,øø#tsKúöê‰)ª=ÃÏê̾ÍK˜ÿÖÓdùEQÞ’#,úè9ÖmI挡£hâ°Ñö¬‰D•ífÝWoóÍïI~ûd¬ù†yテ¦Äзߙ˜Â[3êœ^ìÛü_¾ñ8GƒI­,�%³_dÕúm´ê3œ„X»ß÷µ€]?/B„[°('þÙÔÁî-!õí*¦(èBàõªuÞ$EÅëÑ@“sKÒ_…ÛífåÊ•¨ªÊĉëœ@Qbbb˜8q"yyy¬Zµ*h_Íœœžxâ f̘AQQQ•uùùù<õÔS<óÌ3x<'þŸðãTÓÅ8¦¸ÑÿŽZ @Ò…p²nÎ[8ÂćærïCÿÇÄ«ïåÁ7¾áœáý8ôË×lÝR5ã§{�lÙ½�2c3ºwiE“Nc˜vヘŠw0ÿ¥‡8\~nY»–ñÁG¯@Ì.›þ4qáVPmŒ¹ó9Æ éÊúyò弟B tË>x�_—lcà´›˜4ñ,T ¢Õ`®ºýiBõC|ýÒt”gMóSþäÃ÷žÃiíÂÔ{Ÿ§E\¨V†Ýø$ç�êÃŽæòù¬oñj:àeíg�óÃ×kè}á5\rÙ8TÀ׃kîy‰K>ß½tIû2(9’ÄGo?AŽhÎÄ{^¦CËPCè?ía¦ž7ˆý˾áÓw¾ Ì£›>Ï7s—ÒyÌÅ\qÝdŒªŠ9²#Wß÷Í#4~|é6'ù2²îƒÌzýAÒJBÿ¯×èÚ¡¨º]8�iSFpdã>š1‹·ÐصøUæü=-�çêÛ.Çj<”•¥ofE†�>½z`6¨h7®²24MÇã,"/+�‚ü´òl·ÐÜå!73g™«òÍãÂåt¢Üü…®á.+ÅãöÔxo©h~B§´ ›ÜÌÃäegâòÔsN8!p; ÈÍJ'/7�·æœ§ÐÜ椓“y˜Â¢*­.šÛå»Çé:î’ò²Ò)..mœ9O$IªU~~>›7o¦wïÞ´nݺÚúŠÁYþ/€ÄÄDš4iÂÚµkñz«ß74Mcÿþý|òÉ'<öØcdgg�’’ÂôéÓùæ›o8xðà阭mRÅòúÄ�AË�vƒ�VÍ›Á’ïçs( Iòʽ?ѺۅP°Ÿo_½›UM»3åæéĹ72ÖÇ4y/±™_ñÓÒ?ñx4“�!—ý›Ñ£†PñgÎë.!=9 K“ŽÄE…VÖ¥{ Ù°5ƒðÈ(Z'í§¥»sY³9›¦ÍbiÅÖ_SÆr÷}/�`ÙÀo?_Zå˜=n•¸VÝé9f Ñ –0‡ Æ:k%Î,t] š @ÕŒHÁ¾5,Y¼–¦]ÒÿÌAUÖ9³¶°bí.l�®g܈ޘË;3¶é7™3û¿ÃI¿‘|¨�¾íªNs!ܬøãWJ�±L¼è bl!(Š‚-¦=/¾„ï—ÜÏæ]˜Ä™W_#sÓJš'ŽçªŸ".ï;žÞRµ9µ(mK>þ€Cá­i6t*í†wöû©*ä×ÿ=Éžƒ9\ÿÆçìšÿ0‡�Üy{™ÿî+ÄvçªéϲeÆ8¶/JñáÍ|óÚ›"Zpã£ÏðÚ�U¯?B%®ß¦ÅŽ¢ÏˆQ¾çýæðxz:¢X,ÒÑ´ªí¬š«€ì=Ë0µ¾Ž&fô¸àF­šÃŸ¿fî÷—p÷´!,}å)¶ïËbü¿ßãÌ®­*Flq˜zóÝ,Yu#‹?¾ŸQç� *w)sæÎÇ7’‹n¸‹«ï×KQMts-ç®ýœÏ,föŸxà–óXñÆÓlÚ•Á¨[ÿ˰Þí*ûª†DµdÒ�ÿâ×Õ7°ôó‡9kÂpZ‰m|öélŠÃû1õÖû‰¶û‚pEQiÖåœÁ<Þûôw>ùb!OýûrÖÍ|†uÛÓ8í5ÎxFå¾ÍaM8ïº{øuõu¬üú †�?”Îö4æÌúˆÂОL¹õ!âB+žz¢ÐjÀ¦\2�Wßþƒ�>™K·§oaÓûϲbÓAzLzšñÃ+ûmœsÕ½,]} ëz†�ç¡O| s?œI¾=‘ën}œ¦áþOTÑÉJú-$Ž„öÝP�äE3˜»æ0g�ÍIQQ“�Äsnbò˜žÌ÷¿$mß�GÓ±5ïÍ”›þM×v±lœý~X{€ ÿz…žZUÖ�½w9s^y™ÐöÓè¿/è½åÂ/'D/dë/³àëå8�.ƒ‰ˆ&=¹dú#´Ž¯}™#[óÅ[¯’ZXŒj´Ð¬SF jK`ÇOgÞ¾ýè%6oÜŒÇ+0[Ãè1î:&O™T~Wð²}î“|�¤1th7–/œMq±‡žcïdTçók=I:æÎ�ËÚµk«-¯¸ßΜ9“… V[ÅÃ?|Â�¯¡\.999ôíÛ·Z¢CÁ’%KXºti•,§ÝngêÔ©8233ƒf@ccc¹ÿþûÆ‘ì IDATùÏþÃ?ü?{÷E¹‡aüž™íé�$„’Bo!´ Í‚¢€‚Š`W±`= Ø{?VPQA¥ƒ(*‚4A@zIHHHÏÖ™ó!$$6�óÿ]ײ™�ywgwö™·Í‚ƒƒ¹á†˜0a‹/&99™ûï¿ÿ´_qê:í’µn’CQPM*ªŠIAUUTŪ‚¢©¨ª(¸ò·±nÑ—Ìúö+LÁõh•–ŠÃâdۺżuï2ü„+/í…ESY?ã1}ø%âš `Üä)Ä8Ê÷ÎÜ�ìÙ½ŽÐ„{ˆ‰´W”¡$s{3·Ýú"Âè:d"]G„`çÀ†G•9¶ÃU<ññ•e_8åµ)^'›Ö®ÆY@tX+LÕŽüñ°è‹—Ù°ã —ßÿ,‰‘Ž*uæì&×½.êI�ùðãÍŽš79‡…Ëg³aãvÚ&¥V©ÊÖÝ%dÈ%".Ž6mšWjBP‰iÛ—†ÊXVýú.ÀZe‹fÒnŸ´�ºYvý0ã¨.Ä!õÓ¸èÖÛØY`¡K«÷>«¾yž¯Wn¡Ã°×èÕ®!›¿ªþlÎð9YôßY²x—ÜõÛ4fõ1*› w3Þ}”å»}Œxå¿´J¨¦ë€j¡I÷A4é^ö«†�Ü?óëÖ­ØÃc‰Žˆ¨ò�’œ-ü¾$‡¶tÄ~èœÀËÀÑïó×úÁüöîHÞÝq?.[E|¯‡¸bè…X«œ;˜ˆJÁè;~à�W?å…{Fž³˜<5–{œäèÀ*ÛÓÑô¿ã}6þv1k?º“wrç²ôÇŸ©Ó}4C†_vD3°FD«!Œ¾{1/Nx“WÆŽ&Á³ŽýÎP®}|Íb«Î9§Ù"è=ê}Öýr+?¿—·¼¿±jî,¢:ÝÂU7;bÝ*aM0ú¾L|xo|%“¦Ï%´a'Åã+ÚÏš…oóÇú%ÜñÜdÚ·¨Zö²'àcÿoSyàÎ[ÈvZh–Úž ‡Æ¦…2ÿãl0¿ç¼…Ûyå¶ü²*‡&éçj!{Ëj&?2„?÷¿ÇÝ7\E€E§ k ˧ýÌoßš‰mÔž¸˜lV‹ bµRù5Ë�T~ßßý½6R¥ÚšHÃ0زe 6l K—.ƒ�ìv;f³ù¸“ækšF§N�xùå—yà�øâ‹/˜>}:¥¥¥4iÒ„—^z‰zõêÕö«69ßçñ®õþ�æ­5Ú\>š„ÖI²-6MA‰Œ;N‰•²/‡Êoà wÓOLûï'X#ëÐ&½-ÚQC± œ™+˜=ó”Æýéß9å¨7_qöN‚BU;éª&Â"B°hTÓÜçuá*8€Ù�Ín©úX[81á°½ÚL Á1åµGÕ7#Z‚b¸xÔ‹`¨¨•^³Â=¿1ã“wŠoÆ%ƒaÖªïl�aP´{1ŸMý£éôÚ«¾¯ú¦wÃÇÞe3Þ"u»Žé-PœÕuP*^þ‚Íóxãõ÷0t�œmëØ±c'—?ñ<-›ÇW^3·¯bñ JJ®´m…�ztÛ-<÷ô3Ìúl !±Í¹îú±}fª( í/C§…«ùañÙ®¨´¹öUº¤w¨æù(8¢[2èÎ;yîÉ'˜3ùÂpó�·l¯vÝ­zÝN·K™³t{�¦C&rî¹=ª9H)˜ƒ’8æ~¶?öó&½�5 Š‘7ÝE݈ j×ݤÇ�œße!ß.üŠ, a¿‡èyQoLG½OKƒî”íßÃw¿…f¶së¸ûH®¦fPQvº†ÞçÏáË93øq3Äž7ŠÞa9â$Ì[t€¿²wÒ�˜ˆ ”ò÷œñç\ÍØ‰/bå�y¯ñêÓ�‘O·<ò6ÝÒS)ÍÚÀ[÷fõ®Åd廩׸;͆²cÑ'¸årbì*†'‡ÕsA\gÒZ6¥~÷vÕ[ÜûfÖ·sÐ{2æå÷hž‹^œÅ/Ÿ=ÍK/¾ÁçÓæ�Úü¶£ž«Ï•ÏÏ3>&·D¥óµOqóõC µkl_>•7Ÿ¸‡M;Ê?cþšõ¿þ¾�´cõÀ£„YØ¿v.Ï?r'Ìø�M={Ò6åp—•†]¯çÎ".: “É‚¹V/‰ÿWW^y%W^yåQ÷;�NZ·nÍ-·ÜrRó€Ö»ÝNll,{öìÁétV©U…víÚñÓO?1pàÀ*Môûöí£  €úõë3„*ŠBË–-yì±Ç¸ÿþûÉÌ̤qãÆ<þøã$$$ÔæðùO¦\:áð ÇO ÖŠªš†ª˜Êâµ×„f2¡j:øTTCC3™8ºÄ†²oîr«©xwæïbËÚ9„Ç·åªk‡ä@5YIêt){÷¤ü#m”f3{ño˜¢[Ó¥÷@¼…YdïÛƒÕœ~=’(Þ¾•};öUZsCú »�ÄzqØlvL&È$„?„††’ššÊï¿ÿÎ_ýUå»WQ7nŒËåbÏž=÷û|>Ö¬YCVV�:u:îå2ËkB_ýu®½öZ^{í5Z·n}Ê.z ù#úaØé)q¬0m&,(‡­RE®@BÇ@Å¥e£ÍTÍLPX ŽÊÁÀð’±vJBWêFUj.5<ì[;¥áÔ ÿ§ý1 гÿ`ÊÄXQ¤Òåš§¹°Kój—ÌÙ²ˆŸYJ\³NtHï|T1ÍRö¥}Ô›S÷‘»¯—‹#»”eaD1•õ®8ê¬Ê�GÆNNÑ%e C'{íTæ}·ˆ¤îWr~ÇÆº£|Ÿ) ºn`:›üœŸ6n¦YïÛIk�‚®ûʲh †îC7 ÃÇÆù¯³ríVÒÝNˆºNù aŠ¢bèFÙàŸJå n<€{_øŒû^üœ±/|@¯Í™ýú½L™6·b9½4“å iØ .¡U›Ê}¥™÷ù 3㚦‘“3�?­ÇwŒuÜö ó~ü¯jBQ}2‘̃¥T·¸ás³dú‡ìܾͤQT4—ÙóWã=ƺ ÷­bÞ¼oq&TUaé§Ï°'§¤Úuc謘û›ÿÜŽf2áñ|Ï73–ã9ƺKs61æ§ê&TUeù”çØ™UtÔº÷ïÞÂö,•¶­õ6®òŽ7C#ÀžˆÕ¬Uºûp-¾j ­ó¹8ÈçÏóqyœlüùgœJ(�ÚõÀrÌ y ÜÅ ¤!ñõSªüE3‡—š„nl¡°äèjè:>7Ø“Ï'*¨ò1ÈFƒ´¶˜�à3t†Ï‹3{3Sž¹™‰£‡º eÊŒ5¨êAdûù !üÂl6Ó©S'¬V+_~ù%ùùùUB¨Ýn§Q£FìÝ[6 Ó0 222øú믉��§C‡'T“Ù¢E ÆŽK½zgÆüæ§�Õ7Á×Îz`•jŽÊ>ÝyÄ�>¯ ˆÀªÝ´Y±”k7¿-È Å…C©` ç~û>›ÔáøG¥9›™4n83æsÞÕ¯rómCqT»?½÷<î-`ðcÏÒ Ò^í‹_ÖïlËÖ t?}Cw³?ç^4ìG?G³#GX { ÈÌÎ#!,ºbýÞÂ}ì)†àÀÀ“ÚÑ>w)›W.$·(„6Ý;a×s™6e ™E:ÍôýÌzï) tO>ÛÿÚA¾7›éo=JrËÞt½0�EŸ=HN‰‰Ð¢¿˜õîSèº�î<È–¿ 8s6Ÿ¼ì¤~úÎmïOž…“`ÜYKøêµµèŠ‚¯p%Å%l[>‹)¯•Òò¼ËiÓ*WI!^CÅDDl‘uhðZ8+ºueé�Kyã`¬ìú�ý$u»ˆ GÕA1›¼È´¾"¾ó`®êßœWþ3žÏ^MÓFŸS/:¤Êk¡—fññscY·ÇÍeO}…kñ˜õõ{|Ò =wÝ<ðˆ·«ÎÎ%o3å�I„µéÍõÃzðöSã˜úÊ�4IùœÆõ£«.í<Àç/=ÀÊí%ô~pŽMo2mÚdÞOhÏØ»¯A«²÷t2WÄ'/¼‹­QÆÜv9Œ˜é¯ßNã”ÏiݸêANwåòõk²tK=îz�Øì)|ùÙ·¼÷F:cÇÞ„Ý\ùMk�·ùK>xêôø6<øÐH>›p?sßI£äÏéÔºjhÓÝyÌzë!~Ú�KÇ›_¥‰oŸ}8›w^z›±�ÞApÅI Îžµsq†œG“†1'ôÞS*þ©î�*ñ�."©þDV-YFÖÅ]ømõτƤҹcÓã_ŒÀg€×�ÇsdÈ4ðy½(D`©®Ò0@ÝY„ïˆÇyJK*}q€�%¼.�.¹‘•§¡t¯JBËêOT…þÕ®];z÷îÍÌ™3q8ÜrË-„‡‡£ª*f³™{サݎÏçcïÞ½<óÌ3¬_¿žÑ£GÓ¨Q£š.þév¬¾Ÿ'¥ºkÁ×Bè|ú‘sdyÙ·)ó†àˆpºk?«~\ jÖCýö ݇×íF1YÐL E»×³ÍÀù ZcÒ*¢…;V³C‰¦SR‹TBWÁ~¾}í¾[´‹ýàš;.;Fø4(Þþ3sø S«AôkŸtøZU†Ž×íÅ„ÉbÆžLŠI寳Èy 1޲æCgÁ^6¯Ÿ�5(šÆMꢺϋ×ëC³XP-A4�eAÆþX¹†´äžhª‚¡{Ù±l29tmß3eó~zÜT³Ó \;·p÷J>¼g©IÜüòWœßÔ†ÉdÆ`eûª¹l_5·âyº�%èF?|ù699±tº -†/»Ý`ß÷ïómÅZuÜ è%«™7y#mÛѽQClöìù,›ñÁ¡å0¼¸\nöo\Ƭ­;±Ä¦Ó"ÑÁÔ×agQW�O½HÇ¡ eC³bŠ�•†Næúµ””’Ø®9æŠ]oP¼g“ߟBs3®½iÚÖáâßóùÔù|öê7Œz|ŽCïC/á÷÷dzè·í¤\8ŠËûõÁÓÊǪï.gѤG9ÿüî´JŠ,+‡aP’±–ÏÞy‹iA‡Â™axÙ6çCæ|ýñíúqõ�ÁDÓ’uß-eÕ¼ø¥×ù\Ô­ ª†/—- ×Û~aŽSS¯Øâ¹à®,ikýÀ®Õ‘rÍxb‚Ž·~� ˜(žÍ¦µ¿sQ—¨e/,®¼­üùÛ4K6 Ž8üh– ì!±oÿ�Ýûî£I|`Ùõ«Ýù¬]únWYÕd'Ö”P¯Íœ×>¹¬–ÄÐñPäôʱú] !ü'88˜#F°}ûvfΜI^^  Y³fØív(((`ñâÅL�:•ßÿ�sÏ=—¾}ûÖ¶Qì§ÂßMÃô¯œ!-=*äîbÝ/‹ÈÉ9€§b�ÁŽES™ôêDöìË$7s óß¾‡_OÃé$&”õEÜ·î[ž»­?¼õ:¥^ /;—Ì@ £Aë¨åß¶†‡­?|…%¾ ›¥T_”jx‹³øöµÑLþl6AÑý0â"Š2·°sózvl^ÇîÝ{+æûó90ï•çÉ6E1dø„V¢ìÜ¿’—ïÀ �ßO¡ÛÀÖ˜nWô¹g./½òûrò)ÍÛÃì÷Ÿbáo9ÔkyÉqÁèžB–|ñOßv9?ÿ²]uÐ~èP"­…Lûï8~\³§ËɶåSyõµiØÂZ“Þþ<0úyw•Ûûs—Ó©s*uSÏã™Y[¹ï©‘Z‚¸áÃÝG-ûî¬_haîâ�Ÿws÷µý0‡·àéO—µì{_O'4,„´!ðÞ�¿3xpL¶4W¿Nû”Ož}�̬¸Ý.l_Æ·¯=Ì ~«ä²^>7lûƒ"µ-›Ô«øTyJ2™þÂ6n+¦×�÷sNZ Š%„¾7t1€œm‹yïãñµbð¨'¨H@|F|8cÇŽ%##ƒ1cÆðÈ#�ð÷+?³œŠÐyÜŠÍZ7 EÁ lJ£òc¸ÝVÊ/“fûªŸ1öiÊ,M«g¾ÌŽÕ³°*N2wnÆ–Èàá·vhPEæºyüºø¢:é}Í­Ø­…¬Ú˜I`H$‰ u*^ݙ˲ ¨KÝ:G–ªj?ŠŒ•_2ozY}^^æ<^³„Ãz ¢;ç�î%Àn&{ÝÏ,Z²„ºÍÓ)½m•¾Ÿ;–°è§h�«¸tÌ…[évÅ=üºz~þOÿö)ÕÉŽ¿6ÙªWŒ„MwikMgå’ µìAçÎé7<—�× ã½wßç�{1¯N8ù‘u € ƼHj›z`³qáLÖ,ûŽí�~ÙUÞ†¢J•·O`|knxy*N�•è„:((˜­Ž£Dù°£™Lhš «=¨âÌÐl<ªû©ê ÆìPQ¬Ž@ÊÏ!­ö@Žd*)»,šÅbÃjÀdR�PúÃêï¯dŬ§ÈØò�6Jsw‘‘±Ÿ†íûpí þ¨€Ç•OæúØßDLÈáæà­?ObæÂ%D%ÞD¿A±ª ª—Æ »F²ùáÇ™:áÒÚ¦R7¸ˆO�cw¶›«'>D‹¤¨CÍà mûÞJ÷…K™¹b2ÓgtçÖ—±{ù|=g!�qC¸ôÊ«qXÊ—=º —Þ}›z�/¼@Û6mI©ãcÞÄÇÙ¶¯”��Ž¥m“ÃØZ\p==ø…¯~žÆÔ/»qÏíÃÉþý[>ÿz.¦ð> ¾öF‚�ÐX‚ëÓÿÞûÙôàæ¾úmZ¥Ñ*ÉÂ÷Ï�cÓ®"zß}é­êV¬;¥ËUô9÷{>›;—©ŸNæ¾»o¡xË\&ñ-^{W†Ür!‡æ5U-QôûŽÅo¾@«æíèØ2„Ÿ_Çú­ùt¿yÝÛ5¨8»­×î2ú_4›�¿þ�©ÿ—Äûî ç�yølaÔmÔ ­ÒgÀÐÊú.W­ ô¡(úÑm>Jù`ºÃ�ŽkNÓŽiü5oõ;]BÃØ¨£sä±ÅÒ˜›FÝÉ»oü—»šyõâñg’µ?‡f]/aPßóËK‡‚Pʆzšé6øvÖ.\β%oòì¨ï´kÌÈÀ‡Và9ô<4⺌ä’K—1sÆž½c+áÁг÷r0¿„¶Cï§iÓx@ÇPËŸ-mŒâX,>úè#š4irR�¯ ²‡‡‡3bÄÒÒÒX¶lË–-#;;“ÉDýúõ2díÚµ£qãÆ§µæ³6¼'éo›ê5 ŽªM𦈈ˆèn¸¡÷é(ÑžB•W¥‰o �8óAbccQU•Í9*>ÅFB›4jPÖ±Ur{¡õÓ¬m{LùëY4ÿ{šõ|Ž*ÒÂB¢â¨×öR®û íZ&jJƒ€àh¬†�Fýî ­EC\9›Yð勸âFÐo@׊fØ¢Œ5Ìûê Mn§W¯4ª· Sê6Ñ:½'q1‘^^5�úMÓHnތ؄$bë•ß’IjÙ‘&McÒTrrwpPäÜkî¥Ubt•¯{h,Öb/ ½FÒ-½&EÁÑ€ÎÝz`ÉËÁg±c £q‡^Ü4ö95ˆA¡¬V2Ĉ=¾%�.FÝèPÕLbjwZÆFãt–`q›Â…×=ÎU—÷ÇjÒ@±Q/ ¯9Œ¾Ó îÓM&|–RÒº’ZöQ5Á‡…V3µT•ãryˆ©ßœ&­Úa;æ ¯W!ªÉ9´jžtÜjyE1(.õÑ8µ ‰ íckX"é_Bp° Ÿ×ƒÅj'¤N2íûŽäæ±O“S6ePiÖ:>ÿ­®¼“.m›Z«“?.Æ\¯ïº�”øÈÃÛS5¢“Úeöb�´žÒ‘pc?³ŠIºðV† ¼kE“=ŠÆmZàôªØÜQ4IoBÆÏ‹Qâqé�÷дAl¥ç¢Ù ±K˜�ÐÄT¢ÍylØŸOÃs¯çòË/ÆQ©vP³…Ó¤mkJÝ6W8ͺ¶dÿ¢_ðE'rɨ1´J®WiÝ*áu›lÆb'¤A b.6f ^—«<´êh}ÍLrë6xt «;ŒÆé-É]þ+î�úÞvm›$Vt®W…иê… Ù JhLB(lØ›I|ÇÁ ºj(aŽÃg$ª9€†-Ú`¨¬žP’Ú¤°ò‹IlÏóÒoøíD…^Öd ÅkФuzêÄ„z')¸¼õšv&©qBÙè{<.7õhÕá\­eû@ÓLä­_Áê?öÐõªè˜Ú¨jÿÏjŽ- Ûò|:vëFII !uˆˆM¢óà1\7úa¢Ã×lx¼>BãZÓ²C+,ª‚%¤.í.êMh°³=Œ°˜º^ù0ÃnºU ¡yûîÄÅ…£šì´<§/-šDár›�ˆ&¦agúÞø† »‡©ìdO³„€½.©çt%¢Òvë‡*ØŽ_•+Ä1åææ²«@çžkÚ¬Bãˆê»}èºNqq1QQQ'5=�¢(Ô­[·b®ÌÊ0 rss±X,˜Lÿ¼ž¬´´‡Ã�½š1'JQÌf3ñññ´oßž‹/¾˜+®¸‚+®¸‚¾}û’––FLL Ú t]û· ðx<ÿêùüK–,YùË/¿l¼‘U;µW½QÍÿ�÷( œí8<ÄG¬)))-–.]úÊ){6•,Ý«±»àpÄPt/iö­¤¦¦b2™˜¹é8—±Ó�ŠÚ¸}Kßàé{Æ�pÞËÜ9î&¬†ÝÐQT UÓŽ[�¹jã¯LóG~âÆ�]*–Ýùã{L¸ófº¾°Ž¡ç7«EuFÙ¥�nPÀdu`1Ÿè‡RÇU\\6²\1a³Ûw98é^œ¥%øtÕdÁjµUz¾»~z•ÛF¾Ì¨·¾å®ÿ¬Ÿ¯85Üy;xýþÁìtöà±w&fý÷=� ÕP�´ IDAT£ì3R´3ï?|%«÷0æ½y´®zâŸcÃ@×½—òÕLæþò5t^ŸŽ¢*hªvÜÇy vRTªö÷וèZ_!ÄvnÅiS>�ú/{̸,‡[öì&è—RýµÇ}>YYY$''Ÿtˆü7¼^/ýõÁÁÁX­?ý^e†apðàAˆ‹;ÞÞgÃ0عs'†aü÷8ž{î¹w&L˜ð%P ø( Žå?õJ·#¯|ßñ~€Q;›à�A©$ ½,�x1PPM¦îкgû ¶9cÖ²ê<ŸÛ·­`�+Ž´–‰µ(|(hfóÉT¬GOF~ÖRMØŽñ!5\üõÃ÷8’›Q¯RM¤ð¯ÂŒ­ìÿãOâ®}’àS>|΃üüùx¾Ÿ5“µë7Ócا4ÿ'á@QP53êITh(ª†ùh2ŸuÄYFUUTU¥¨¨¨F¨ÛíÆãñœTí'”u(,,<Å¥ª9………„‡‡ÿý‚§Wå&õS2¾Ö]ŠóD…4ì΀Û'œxÎá‘Ì'(¹ÓÕŒŸtI "«Üßòü[™Ðê6Fü³3.q¦Ðh>ôqž¼ÒAý¿¹¾·8}ã[rÝ ³ II­nÛ“bø¼äååa Mað}cè}YßS5Õ­ÿwÊúÙ[8pà¡¡¡'OFyó»¢T3�õ ¨\öÂÂBkóU†ŽË0 òóóÿU?NÙ´KG:Ö3ª±½•tB!_�ð´iy’M¨áÍHkYݶ[ŸÜúÄÂLRçÔš.„�¦Yƒè¿_ɓïžÚuÖ"Ö3ª­Jœ Ù·o»ví"!!á¸Wø9Ut]'++‹ŒŒ bccO:8šÍfBBBؼy3ÉÉÉ„„„üýƒj¡ÜÜ\¶mÛFtt´_úš–3ʯøršÕŠÃZýúõÉÍÍàøcÏ…âÿOA.øi[ÑÑ'wr�••õ÷ ‰áv»ù§—¿3™LDEE‘••ENN‘‘‘Ÿ–ß^¯—ââb²³³q»ÝDGGcµZO:€*ŠBPPn·›�7Lxx8v»½6^ö²Šò`¹¹¹Mï‡ãŒ­Å=ž †¢2MFMC!r<>ù¬ÿlµ¢(Øl6êÔ©Caa!`Ïž=ø|¾S>5�¦iX,‰ˆˆÀf³ýë ¨iZź ضm�]¯™ >”È¿{íTUÅb±àp8ˆ��=#BóÉò{µY‹¬¨:ú»B!Äÿ-³ö÷!RUU¬V+f³™àà`|¾²‹Àœêª( ªªb2™NYS³¢(hšFPPPÅ¥3 èÑy5EùÛí—÷}Õ4Í/Ýj’ßh��­ÏÎ4/„Bœ êœXM`yògÄS¥<Ì�…—È<+ø= Ö 0¨¤£*gììþB!ÄÊ Ò®“Z3MÑB”«®ô´ötUƒÔÁV•�ù*%ž³¯c­BQÛXM1�&‘:Aƒ3tFq–ð{¼¢(ØÍÐ4B')LG—ŠP!„â´S³Æ¡ËLKø5«ÆFÁk*Ø¥+¨B!Äÿ‰€B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯jìJHµ™aº>¨¢ÈÅÊ„B!N±¯Õ}>|ÕÜt£æ.¿ëï|1ý¹Nùº C§¨à ÙYYäÌÇëÓOù6„B!j³­õ•dò̳/°öÏÝGý­ã ;¸k`z ”ÊÍw¯�côxïÛ9 h—ˆ×㢰ÈEPp&íäêD ÃÀU˜ÅìÏ?`ÒìŸ<>ÕLÝÔžÜ?j "P©oB!ÄÙ¯Fk@uw+–-eÝŸ™XíŽÃ7�¢ÕP©,¤ Á�á·Ñ¼~4+ç½KJJVì‚#ˆ�‹ÂlÒPÝç%7ëÖ @Jós8Pè$¦nCRÒÎç¡‘aJ‹ŠÈÊÊ\dïßÏ�0á¡A¨Š‚×]JîþL²ò‹Ñ¬�4¨�Íb¦ºŠLgþ^–N_F»~wòÎs÷hÅë*dÖ›ã¸ãÅù¬Ý¹�¤è ÃÀã,"cÏ^ ]^C£‰‹‰(+³g)¹  àà�ýä»Ub#)*,!$, ‡ÍRöJ>òrb˜¬„¢`PR�˾}ûq*áQ±DE„`RtŸ‡‚ƒð™‚Ѽdì?HhLá¶çP˜¹†A-[Ð÷’K8·u=ûfæ†6ü2‰–=oåÏ}YÌxöAFÞ÷°�kûueÀè—(túðíç™{o¥kj{zôèA×ôv ºe<«·æVû, Ÿ‡’|0BUEÁl ¦ïÈÇùéÇ™œß²™[Wp÷Àþ¤§w¡G�tîÒ…‘DN©€ ßO¦WËæ\Úÿº¦udÀ�÷°dù|º·lÇÄÉ?TlÏ•µ‘«õeÔ#o“ït³ò§i\ÕùÒ»v§{·®¤Ÿ×‡W?ZŒSgî.¸ñb:^Пó.èN×îýxïë_):°•w½�Ôô\qÍ0:¦u ßÐÛØšçÂ0 Ö/›Ë#�ŒcÞš,¤'«B!NT- ®Òbrrpà@ù-—ÛůóçòÓšýŒyæM&6™WŸ¸�í?Ïæ›™+ LH¤Q÷T¶ÿú»òÝ€AÑî5ÌÙ@ÿs;Aþ.^˜0�µ¹Á<öâ™òé'Œ»u3ßyšw¿]Œ(”UïÞ“ÅðgÞdòûosQÓPT0© Z9oøí<:f�À“¯Ä«÷#Àâã×wßàí™+9ÿÎÿ0uêTÞ{~,ë¿û€‰ïN¯6ŒY‚âèØ³)kf¾Í�›GñÚgßðÇ–�”¸5ê5¨G°ÍŒ¡ñù�1m§ÁØ—ÞcÚ´©Ü9¤+³?šÀg?lÆ l‡i@–ÇÄØ×?à£ç¥c»ôiÂ7 Và4Ê:m]ý+yÙùt:·7jÞ^¹ã!¶Å§óÖ'SøâÓ¸ io¿2ž%怢¡¨V ³öÓþ’»øü«�¹ºOGÖ/_ÀóÏã¶'_åÓI“xó?7î™Ë¯gÈøï¸õŠTL@›VMÙñǯLùp!ޏ°bk—Þñ÷]׿â÷L@%2±Í›'kHmŸNjb8îüÝ|ºr) ›¦r×�C‰¶Ð&•Ñ«â©æ²ÿ©ÄñÊZÂýÜ;Øß|‡Ÿ~YÂø»¿åq��æíÏçº[oeðE]12×òÉŸÛ¹dðH†ôé�E…”¸Ql\¿ŽÙï/äš>Í*Öw×Óï0¼K} ,p^Ðïæ<ý-k2ï¡Cü°tYÖdú]Є}+Þgö¾bÆO¼…žéM0Phèâ²ëÆóÃÜu´Ö€æÝ¯gâ## =Töìe4W6,…Dsɵ÷Óóò‘h¶@4E¥×e·‘x�Ò[׆7’B!ε 7h¤žs5·\ß3¾²»i�¢)ÎÝËÇ/�gÞúl4UCÑKÙ”�ËàC�K>§‰¼Ã’‹ÐÎÆÌ_×’ÔàÚ&F°{cyе}£Š'©i�4jÛý½ä{ øÐý1uBþQ‰=¥%8óóعq/wÝ8 •ƒ™;q8àòRÍ+«ß”{ù×dd°c×vÖ.�Çû“§óؘ±D&L¡½rŸÇÅ/Ó'sýÊït/»w�м�ïðÚ¢+•YA¡]ú¹4ˆ›Á·ß¯§EÿVÎ[D‡¾O’¤±"sàåÉ�0#Ȇ¡(î"н^ ¥ýPKL,ŽJåNlÓ…sº|ÇÏ>Àô�ÂˆŽ«G¯Ë†quÿ (D&4⢄FÿèµB!„¨T%®^Kzõí[e’·4�ñãä½ûéýetj’Ltp)O�~®bSX2W nijV²©s4ëWÿÁÅ/½B”Ue¯bBJ=ÞJÛ2ð8](�6´J�þ霣ŠRÖJ_·^'nºu0–J Ð>%�HóÑ�qd±qk6õ%ß ™øɜӭ']:¶¦Ï Ñ,^·�Ž© (6:¤_Ì¥}ÓP9\®ÀˆúU^£r™…˜f©¤·®Çªïg°9±3³ãx³w'4@ÕÂ0xÍFVz54ꦴÀ¤xÊ_ˆ*eŽLLå�O§²bÉ"/_ÉêE?1þÖ¡ìÍ™ÆC7uÅZ :p!„âÌS{"ÄP÷z)=x€ˆÈówÏ ½´)‘�”蕪ÑHë6”ÐíËxuÒgl1w o‡¢ëÇP'ÞÌWoÍ!»Ø…®ûÈÏü“§üDPë&„ÿƒè­)&4<9Ýè†�%(ŒÈ:q¸”⛤qQïÞôêyuìNk53Hål[Ì Ã‡ñöW )qyÐ Ÿ×Ei±&B‚Å6$8ÐD> íÎéNïÞѽS[캧nÆ|œ½¥XÃ2è¶­ÿ‰·_‹&imhÓ(€ˆÄæØME”8"9¯ç…\tQ/:µHÂ]RŠ õØwü±˜oæýJ£ô ¹{ì#¼ðìc¤¶HàÏß6âÔ Šs÷³~Ýz²ŠÝGî>!„Bˆcª5 eÙóÈ£šLØB"ÈÉùމíD˜]Ì›õ [³ 8¿Òrõ[t¤MWS¿YÀÅ#ÿCÝ@+1Mϡߥ}xôýq¸Ýkh× ˜u ¿d‰ÎÃ/Ä 8uðrlåeŠŽL ![yiÂSlx9×ôéÄMW\ÌÌa3æŽ[¹øÜt<ù{™üæê]ù(C.í~ÔºÂZÑ<^{è>ölHbtîÂ}Ìžô�õÒ9¿UÖÈ î؉;Ÿ{‘1äÒ6)Ž�keÆÌå\ÿö . ƒc øQIìt MÝÿaÚ×=øõÃìÄ7î̈õùpÜíÜ~=uaåü9¬ÚoãÙOÎ!%Ô|GíƒmËæðÀ}oÑièÍôhÍöu¿²e÷n]Ñ»ªóí¤g¸óé) ÿ /^ÛŽšš¹U!„g–  ªf#®n}£ë`:¢vO³sÝáò>ÆüS1ÙCèsùí´_>ŸÈ°�Šk´ÛÂbØ«äGÑó®W*Òìá\;úiT}Sf/à³e`¶$óâëqÑ9-0YHIL¤Np@•mÛƒ#Il�õPUflÓNÜ>f oÏ\ÆÂ¥�Ú+�ÄnWñök/¿;‰)Ÿ~Š¢ª ;žk®¼¤Ú f kÈÓo½ÅG¯?Í´ùÓY¬—õ�êzoß~­ê‡*Ý2Ž—ƒëóòäüù«‡àðF?ÿ&Ãû4C‚"HNL$Ìzô®3ÆÑ÷ªËÙ?g´Çrè5µÖáΉoöæk|:k†¢ß°Ï<4š^-£ ÈGl½d\ B©\Úù²ÛxAaü»_²u…�=†þc^áÎái˜…úÑ HMN"½aD-ªJB!Dm§íýTÝl)))-–.]úr�–ìC×q»] ˜°Z«é\ù·t\.ºšÉŒÅtj3·Ïí¢ÔíÅd¶`µ˜þörš†^v-øb§Íl#,4“vt|s—–âöéXl6,¦SS·hè:®ÒRtEÅbµV»ÝêxÝN\&³ «Eê9…Bˆ³Õ³Ï>ûîĉ¿J)kt=òfãþÊ;ÞO0jEüñ(ªŠÕfÿkP±ZÿÍã�O³X ´XOxyEU � èo–³ØíXþ]Ѫݶ- àï<‚ÉbÃtª #„Bˆÿ[Òr*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿2Õtrrrp¹\5] !„BˆZIQbcckº§T�ÐÒÒR¼^/���5]!„BˆZÅårQTT$ôt %))©¦‹!„BQ«dggó×_Õt1N9é*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯L5]]×ñù|5] !„BˆZE×õš.ÂiQk¨Ëåªéb!„BÔ*�§¦‹pZH¼B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿2ÕtEAU% !„BTv¶æ£Z@5MÃf³Õt1„B!j³Ù\ÓE8-ÎÎX-„B!j-  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿2Õt Ã@×õš.†B!D­r¶æ£Z@}>N§³¦‹!„BQ«x<žš.Âi!MðB!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿2ÕtœN'¨éb!„BÔ*ÅÅÅ5]„Ӣƨªª”””�‘‘QÓEB!„¨uL¦�k§\�?£¸¸¸š.‚B!„ð#é*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+SMàLdF•Ÿ¢öS¥ÊO!Äa†aÈñ¬–Rå´·dß×NÿßYgL5 ]×+>(Š¢ ªª_wŽax½ÞŠ›|hÏŠ¢`2™0›ÍhšvV¨…ø'|>%%%¸\®£ŽkrŒó¯#�Kš¦a³Ù°Ûí˜ÍæSº-Ý0Ø�çãÏ*™¥&|Æámÿ¿P òžW�‹—æ‘^†k˜µ³³±ºÖÐò°çt:q»Ý†QåLP×u ìjµZ±Z­§5�꺎ËåBQ‹å¨mÉÁºö¨n߸\.œN'^¯‹Å‚ªž�j!N”Ó餸¸˜ÀÀ@¢¢¢°Ùl5]$Q‰×ë%//�‚‚¬V+‡ã”|ǹ<:?î€{‚±šÁ¤ÂÑ«•“tÿ+o]½ÐÊÒýÐ(¸”¡Í}XϾï«Z@}>ÅÅÅ8�Nìv;QQQX,, š¦àv»q»Ý¸\.òòò*¢6›í”‡PÃ0p»Ý˜L&‚‚‚ª .åYÔGî‡Ã�Õj%??�ÇSíI„ÿ/Ê�³„‡‡Ëg¡Ò4�˜˜ÈÈÈÀd2aµZÿÕ:uÃ`e†ÂÂ}ìPíw©?© UìØ\hgÞ¶Rú5ò�u5¡µ*€†�Ó餰°�ÀÀ@�l66› Ã0ˆŒŒ$??ŸììlœN'���˜L¦Sv@Õu]× ‘Z³3œ¦iRPPPÓE¢Æ†Aii)‡CÂç €ððpòòòþõ‰³ÇK÷¨(ªŠa€¯üRéY“ÊO”ªÿ·šÖ0Ñ>ÖGBh •í4©5Ô0 JJJ(--%&&†ÐÐÐ {åÄÐÐPû÷ï'//�°°°SÖ×O×uL&“„ϳDùɉ®ë5êBü¿q:�ÄÆÆJø<(ŠB`` ÙÙÙÿºµÍíÕÙ[lÅf*ÂŽ(R Zc*2§qô�…n�ƒNHðw¡N³Z@ËÏÆ�N' 8Ž“Z�Åb!>>žœœrss 9%5¡åAEÔg‡ò é³+þ_•w+’>Ÿg«ÕŠÇãù×Ç-ŸnPì1c¶r8õT©ýT*Ý)j§®áòœ}ù£Æ¨ax<JJJˆ��Ån·s9Ý(ë§bªRÖwåÈL¨ª*Mùaaa§¤Œþ +ÇÛ^Y>úy !Ä?á¯cšaè>z5ÛSTÍϳ™œÉNÕ>óêàÓ�hõ5}¿œ¢·EÙwtÙÿ @×%Ò_ÕàoPþ}oœµ¯]­ „††\í2>–í6˜±Á`m¦�O‡6± 7UèT_Á¤V=x©ªJ�:uرcN§ó´ L:� Okß‚WÑ+Ýi€j"4<Šèè(‚2€æß�ÚO!üÃpåñúãO2{Õ­Ò1Ëk!¾iK.x=:7Ça–.Nþâó�G¯”•ê~ú{å>‰å¿CÕôZéwEƒ”(¸(Y!)LdÀâí˳ ÀsŒuþÝïÇÙæßþ~¢Û8‰mj šÀíƒRý_lãÈèŠû¼>ã¬$VãÔãñ (Ê1k*uÃ`Á_�ÌÕÉ.„F1eýV>_m0kƒÁÄ~*½=âÙl6EFFF•Ñóg—Ï… ‘¡¨Š‚ax),($cÏrsŠiÕ&›I¨¢v3ÐÉ7²#;—ÔN]ijtvmZů ¦²fÙ&zf<º%ÉIµ?e5 Þ#ÃA:'EQ k²ÂàF`ñÂú½àÆÀ�v ­ö¼¾Š}»ª3FT mªðçNƒÙ»ÿåÊŽP½úÙ9KA�PÃ0(**",, ‹ÅRí29%ðÒÏ:^¾¡Ñ6®¬ùùû­:w}­óüB�Ô8�Ø £û¿öÎ;¼’³¾÷Ÿ™ÓuФ#­Êö¾^wpÁã¶¶ƒ�Ðbú%¡¥ž ‡KÌ%sJrI x�PR ;wÖö®×Â[½MÛ¤U=ª§M¹Ì9ÒhvfÎI[¤ý}žgž™·Ì;ïÌ‘Î|Ï÷mMMMôõõQ,gݯôlÒÒÞÆÆUË U^C+rh×NNŒôq´¿“õ�™Êß§‰i”ˆi¢„ÂD#áéW•IüAAUA+—Ñ “p$J8¤‚i¢ëeMGQT"ÑÈÔÔÓ˜h¥2ša€¢XºWeU @AUg®Úaš†aΘ£Õ4 Êå2†a¢¨!"‘°ËõAXL,_µ†ÿýéϰ©ÙšP]+ŒñÐWîå#_þ=ý¯¿~˜&Åü$†!Qf,¯ÑÔÒB*µfJaxt•Tc3M©é~¬åb�’‰x µò½©•J”4�h4J8l†®Q,QÃ1bÑp%_ž�Á!4]!•i&“JàwjêerÃCLÊ„c Z²Í njÐuí4ˆÀ•Ë~ïØ>ÿ”I_EȆT¸å"…·mTxç(|m�Iq‘*%¤°¬zNTDýi@Ó óMuE!¿~š“%8>¯¹P™ŸW.Sxé2…ç{LŽ�˜t¦ÝLss3¹\nA Pç¯S5cIgý#‡(•Ê•Õ*L´Ò$G`dR³\{5DSÛ2–·g‰„T ­Ä‘÷��·�—Á0M"±ËV®F) säDºn‰ËT¶“ÕËÚˆ„UÀÐJ õãxߺaU*i`åÚÕ46ÄÀ(rø`7cz„u«W’Ї§n`´¯›Ã½c,]³ž%™Z©ÀñcG¯ô9RI5·²jy'‘pHf„EŠõCxúK-Osýëo[IÛý IDAT!ôÕ’)Xß”øç?ûmžŠ_Ö %îÿï§È—ÒÜùñ»¸í%KÙñØOù›¯ü“ ÒÙ^÷®òºW^D"bð³/ÜÅ·Ÿñ‰¿ùs6µg0Í[¿ýU¾òÐnÿÍ;yËm/AUz·?Á>ÿ�´¿òCüþï^Mïó�òåo|—=Gz1uˆ&’Üøºwð[oyÉp0™Èõò/_ÿþçÉ. %�P$ÆE/ßÂ�ïK›’ 껫ê€ÚW<²·[ŸE}-Òjn[c9øÎ“åéô²î2Ù¼Dac+4†áxÁrLcq¸}\Übõ?=vÒä¿ÂpqúÚo¸Š'a·¯Ú °$££ðƒ.“¦UÖkà¢(Ü~mƒÂš  ðÐ^“®è¶ûjj€[6(l΂iÀ ‡M<“út½UÖ´ÁkÖ*4Ç X„‡÷˜lÏAÙ€—¯ƒW.‡Æ\²Báýi“íÝðt�­ûÕg^m}w<Mt^©®t‡ ‡½«±ªY¡ë#§¦4ÈMbaHF½ÿõc±º®/š‰â-§qšòä(»wïe¬dÐØÔD<¢’áØ�Ý ëÙ´¶Ð)äGe$§¹±´"ƒ¹AÆÇF0MH76‘H(Œç†9yäáP”5ËšA18¶ÝýÃD“M4§ã˜Z‰áÜ»wN°nã´5%H+:Çû‡Y²„Tܲ£M£Dï±AƵ±HÄrp_ÜEïP�Ls3 ±ÅÉ1N=ÄxIç¢u+‰†þg$B Lƒ±Áüø?~„ÎpÕ•›­+¦Nϱml}aÏ¥²\~Å•¬ÎvÐÜâñ¿—?»çÛ˜éU¼üš«hPòt=ô þòÎ.ºïþ>ò–kh\Õʶ¯}�gö¿—Míô‰!~²ýq~ùìvÌõWòÆ-— +¼xðY|v¸³}øEþð·—=áUÜ~û , é<÷Ìüã_œB¨…?xó50ÙËßýÕòõŸìæ²k^Áe¶2н‡û¾ú·l;>Â7>õÚ“g½G[`4ͤ¤+((§LÿibzÄŸÆ·4 ›²°ëtåJŽt­_ü4«ÐWTÐ èh��¾BaYÈä¹ÐCðŠ U^¶ÜäsOÂî1ëü+ÖB´ ^Û‡û!W‚—¬Q¸¤ >ýì·ÄÛšv…Û²&kW€‘‡¾<\ضTá‹�À/*ÂpY3|äzh3á¹>P#pÇË^Ö ŸÚ 9Â!¸aÜy™Âñ“=#ÐÞ»UáÁçáïwA$ ÕlQ!Rˆ*P2j?;÷°é[Ÿƒô= ”Ë座1M“É2|k»ÉŽãðÚ‹Öf½óG£Ñ©&è…ÕÔjªÖt ÓP0M½4Áñc½h(4eP0É žd<_"»zë;³DB ¥ü/î~�áþŒ/k#Yi!RÃQV¬ÝDg6†FâÀnŽô�Ò¼t-WuQƇzøÕÞCµ<&ÍèùQzr¨Éf6oÞH*C#×ßî»9Ò;HkãJÒíKPzgi6�¢˜”'ÆÓÊdš[HDCŒœ`p$OsÛRÖ­YI<¢\çàþý  0ÔÖF{cBFø Â"¤ÿÈ~þâƒï¡!ly;Åñuw³ùŽ�òæ›®¨Ø@V^E�óŽÝÍ{_ ÍÉÚÄ þø�ï#éà“Ÿþ<·^¹‘¨RfÏ�÷ñû+îÿΗù�[_ÊÊ�—³:¬ððöüíÚ�Œöæä�]D£º~¹“á’FG8ÂÁ=Ï3Zŵ/eôð}ì…W¾ï7ùÔ‡ßN< ǺžâÛ÷ýÙ¨†fê|ü§<ðØn^~û¹ëOÿˆ5íiF{ð¹OÝÅ}OþŒž~ïºqêùîÒu«Y·ê¼¶õÈ•n\PaHE 7ãMÑ#y©^N�7\+U“{‡í}`¨°ºÓä®WÀ;6ÂÝÛ¬�=º kÛáÞá™!(«pñj“O_ ×/��£•?b)Ø·~pÆtXßwÝ¢ðêµ&�„h^{1´èðÅGàÙQPT¸v|è*…Û™|ç8¬^o½HaÇ‹&_î‚ÞÜ?ƪ-ïçÕ×^H"&IpÁ�·óÚ7]Çdÿ v¡uå&.½b'ñ0Ã%ƒ£ö°ë@’ß|ç›i>ü$Ïm˜ío£åê-¬o ŽYï îgáG÷?ÊþîZ7_ßÜõ ÞýÆëˆ›%ïz�>-Ée/¿ 5?D÷án†‹!nºjñÂ(Çöv×/:Φ%>5ݹ­Vy¹.éVórI¯oSL+0:,¦ .ÏÂcû`ë Ó`¢;»áÇGáòµÐ²òš@Ïx´re˜(ÂÖý0dB“R©³n ¿R~¸ú‹VKé‹°câ1+_2/[¡ðÜNxd&4/ÁS‡aÇ \¹":\¸ÚC&ß~ºÇ¡¨Cÿ8üÛÓð·¿„A&5ÈëÖ˜­’a�ðŸÔêv%ÃzæZe?#\¹7c¡ü}ÕÁY„TÏêBEÍäžÛ¾‹ý?ïâÚëÞÃê ëÙ°iÏ?þ¿j�3‘ZÅ¥›/BÑ t×çxë»öòèc¿dïþyvëSüÝgþ„cŸàî÷¾ LƒpCŠ›ßò®[3s¾jÓPX²|#‘…ÒþŽ%”ʺ×d™³c ¹"´&!nÀ˜‹bRTH©Ö@Ýœz½Pv·’5i ¦¡P® À)WDsÙV®‰Õì^ÖA5­² S!o/¯"LMÓ*KÓ­w^÷ …íãÎ ÂЈb ÛJTQ?µ~vªƒ¹ Ã?Ÿ?þŸ�V}X‹Œ³*@#‘�ó5…Ž4\ÚAE€Õ¦T*Õí´ž‹$ÓÍt67q¸ˆÞ¾AÒ+Ú@Q‰&0Q&ÚÐHK2ZéÓc¢•Š”uƒh, º¿õF!O‚1ÀÈÈ(K[RwÒD/M’žD e§¦‰Š$2´Äcœœa``’‚gU6]™ÓX%‰XÍ4±Z[Ó•U7Lôr‰bÙ ‹0—/@AÎmfþØ5ÑKFò¨>2m¬ŠÀÖGžað]·��[ÓÌåGúyfWZ$^鯲êÒ«Éð}¶þø;ìHóÎu/!žÊrÃe«xè{Oð݉±tÕR.ÞØŠI>×lj¡-›xû»/F+8Üõ(þó»9¸ãr“·±²1K„dv%7ÝrÑ� ¦ÁäÐ =Ãc4µ¶Z@&‡®+ÓSÍÓêGLJ`çܼ.i‚Gg¦GÂðÁáBî~Žç,!º& 1&l}Q×f­AK£ú´À3«ó—:êZ�W+ÇÕyN«(¶U„4ò*Áè|mÇô”§ª )kŠZÆ 8ÐáN¸( OÛ^¡é8lh„CÐ[žîïiÌa&åÔ íy,Öy@ÝTÙ¹MEQ‡ÃäóùÀç¼t©ÂOÞæ׆ÿ³‹Å©ë-d”P”ŽËH(&'�g¼¤ �-Kˆ¨‡÷bhd­\b|d�Ý;»Øñü&æØÎ’hj%…¡Ç9Ö3H¡Xdr<Ç‘C/2¦C¶³•Xå¯HQ£´,m¡8:D÷ѓĚI7Ĭ4E¥9ÛDXÑè=z�þÜ¥R‰‰Ñaì|�]»-úÔD„…ÌØä$ÏïÞÅ®];Ù¹{7Ûž|˜úÂ'øÚÏö@ÇE¬mñ�šlÛÄÍ7­£ïùðÙ¿ÿ6ûº{è9²—úòùÑc{Yyñ¯qÅk:¿†ö�ܲFã‰ÇÀlIsùÕ ©Q.¾i C½'øi×>:W¾’U­ILvÝÿyõíoà£ùÏë¥T,r¤ûceš2Yâ \}ýËY’Ñøñ×ïá?~–þÁAöwmå³üÞòÖ÷óÓ­GŽAUi*®NÅ4ãx[¾ßÝ‘,|èå°9=�¦„á­/…׬²šÒû'áÄl„W¬‡;¦Åå¦eðê•°ctçm¢Î´š»íלºÛ´RÕ.öÍ4§…jÿs ‚xº…¦ØQrE…lº…X¸úG!š^Âê“>ÚË�½» ‡Cš†a@Sû*Zd¼ ,ZFŽâÞ�ý> aÂQÔÒ£“:í›®ämü(Ë“!0ÇuÆb<¡X†w~àãìü,þëùåO¾ED)Óß?AöêÛùЇßJc¤’YMqÅ–ëøçg~H[ÇUlXf5™gV^Ê+2 ê/ó’-W‘ ¨l¾åÝlùÚÓl}èk¼û…ÿ$¦š çrÄ;ø�;î ¡n¾™?úÀîþÂ7øì]æŸ2)J“LL\~ûûxÕõkÌx¨Ž‚¯Nöc2£1^™}/ü]Gà“�À\ Ÿûu88%–d`Y†Ïï°ún|ý XyüÁøõak¦Í0ÚÿðŒjÓî§YcöVÔm"³*T«¨úô|§ºøæÓ°æfø‹×Xu4TXÞ Ê$|ºÛÊ·¿¾ú,üþKàÿµ[}USÖ}<°~9aÕåÈì‚›.‚¯tÀ¶ÃÕÿìL¬�\Ög`Å)¦i-`X]gU€†B!R©½½½¤R©šÓ$Ý¿Çäc÷t6ÂüVˆ%)ÿòK¥¹\ŽÎÎÎy¬õéG ÅX¾|9±df¦ ST–,[ÑJTÅ4¬Éé;Öl"–égdtSQPU•¦ì2ɪf(BÛòµdÊ1ì44.aåÊ4‰ÈôsWÂqV,_A<�žš"ݺŒÍÉ&Nœì·Fâ™Ofh[’%ìøÖ …¬X·žÆÉ2Ù%�3V8RÔmKW“L§ÇZœ)D*ÓD6›^PMX‚ C 7pío¤yÅÓ‘É&²¡<¡ôZ®¿á:³IL¢¼êݧópͶ·“¢¨¬Ø|-_úÒ¹ÿþ8Ø“C2ÙM¼öM·°¬r~%7—Ýü>2±”æ+^EK¥‰F‰,á}Ÿüc6ï>Ék¯Y3Õü×°d3÷üÛ·xô�‡Øu¢ßª^ër®¿é.^Ófe ÇÙrÇï±fãüìÑŒAQØxɵl¹ùR‘…3hµ¿¢nkšöšd~6Ü·öÂë/€K²�6¡§¾~zFlÍÙûà£÷Áí­ñ!à¿öÃ�vÁ![ƒØ·ƒÖEcæhð}†{¦ûu>ù" Åf2€_ì…}LÇï?ü¼y3\ÒºO€‡öÃáJ¯@M‡ï= Gá¦å°4=Cð�Ãð‹c•ußmþöaØ¿²a816»ÁHæ)!ej@nu ÓbC®ªìÕÊÛ°aÃ%O=õÔÎDŠÅ"===¬]»ÖwE$€¯l5¸ûgÉüÏï†XÖèýob‡frr’¶¶¶9ÍZ(…B¾.íYŸæ©òK©Êéèrà¼Ç¹\cFYsøÅí‡_ý*Kó-œ‡ ̆aÐÓÓÃ\°àZˆLÓ°VmÃØ4_ËøN/Yl ^ÕÃÒ4t½²òŽ‚RÏh¯õ®®.:::æô>Ó¹í+MDšaJj:gFŸ¢!ÈD¬b‹šåfz¡ a+o^³�`?ͨ $C–s:¡{k¼¨ qÕUðèÕ¦!Åê:o T>}Òäž›G¹ùÂ3ó×vï½÷~õž{îù�ǺçfzÄÛÓüö&`žõ·o4¥¡¡�#GŽ�L&}¿ ßx±BDUéHSÓýd``€eË–-øH�8M"næ%æï ½O® gEQ ‡çÿ;]Q”@ÂN …ÎîÚó€a(ÓÍÔ3lÏÊè—yðSò:äKµó�Õ”=2ëä³GrÔn^·”X­²f;Üð]ëT7[G‰ÅÃY MMMœEQf®HsšsüÉ)ŠB"‘ ½½�þþ~vîÜÉêÕ«Éd2�_±X¤¿¿ŸcÇŽ‘L&imm%ÏÏ/FUÅ4MÆÆÆÈd2"\0ÕYTU7[8oQ…††úúúH&“d³Yù8‡™˜˜ §§‡t:=çÏ)�[7”Ø÷ŒA9¡žÚô+�Cç&E“+W•X‘=ëŒS”ιBçD'z5 ®]…½Ê¬>לË5æzMû¿�i¸";Æ�7äIÆc,6Î –ÓXuB'''áW¿úÑh”T*E:�&�£ë:“““Œ��199 @&“¡µµ•x<>ïîVµ›@2™¤P(Ð××'ýÕ>o±XŒd2I(’­p^£( MMM„B!zzz8x𠺮Ë÷Ú9‚R™R¯Ú�¬±±q^º€)ŠBS*·¹|éQž8åÐPša3TäOàÌc{æ!ÕdIS�W®Ësí¦0Ùø¹ú¾š“zN P˜{™L†D"A±Xdrr’b±ÈØØºn •‹D"D£QZZZH$Sޤ¢(§åƒªÖ«*bªÓu ‡P(D(’æwA¨ …¦¾kK¥Ò)?¬EŒžYìßKÕwYõ]7Ÿ?šE!“Œqëå!n¸°„¦ Ïx§Éç~æq~ö–ÖˆÏK¿ß3À¬þ`Î9 ÓD4%�’L&§¾«ÿÕNû?åéÕ_¤2jta#âS,ªß¡ªª‹-¾&¾ÅÄ|oU—Ö¹�ÏmÎâûj®¿BjžoÿË;§~òØzÕ¹:ñ"ÂbC¾×ÎOäs2[}èÛD¯Ú2Íå"‚ ‚ ÂâÁ© çU#ºu,*‚ ‚ 8™7�xÎ÷lAA &`z PqAAAÎ?ÎÈJHêé,\AAXðÔÒŠ&uÎ *Mð‚ ‚ BPj Í@"Ô)@Å AA8¿ âfÕŒ®ùìÓ0ÉTL‚ ‚ ‚�9»�nù\›àE*‚ ‚ TñrEë¡Sy¥¨ ‚ ‚à†Œ‚AAÎs]©f~„$‚ ‚ 8ñÒ„³jrw"ƒ�AAÀu�›>tŠËy›TD¨ ‚ ÂùM­¦øYJ’> ‚ ‚ ‚�z´á¬ú‡ªŽˆ©Í0 ¦‚ ‚ ç †a˜¶&xûÞ¯ù}6˜ö> S‘º®—5MŸcá‚ ‚ ÂÁ4Íb©TšÄ»ßgà¢Ç�&¢7‹ÅâäÐÐPAA0ã'Ož �,^‚4È@öS&¢w`ŒŒŒŒ½ð {5M+¯¶ ‚ ‚°1 Ã<~üxwWW× @Ç» ÞŽŸ­{&clllì{ßûÞ£'Ožì©÷AA„…E¹\.|ÿûßÿù /¼p‚iÔK`ζi~ŠÐ(ŽÍؽ{÷h,Ë_z饛‰DÃl AAÎm&&&&î¿ÿþîºë®›¦9´ê�~.§×·pè¨;Eh¹««ëd.—ëmkk‹¦R©´ªª  *Š¢ÌåFAA„³ƒa¦aå|>?yòäÉCßüæ7ÿýÞ{ïýéääd \xÖ3Iý à²Ê^µmÕphXµjÕÒ[o½uã¦M›ÚR©TVQ”°išŠaŠišŠ¢(ŠišŠišJ實âœi^ñö4Ûƒš:vKwæqæ­…³,AA„*.«¹bšæ©£½UuF\µ,gÞj>ûµLÓ4�ñ–ä²ÎUUÕtÆ+Š2ã�x½X,Žîß¿ÿä“O>Ù½mÛ¶ÀP¢2ȶ™u›ŽxñSùàRNžvA¢ÑÊ>ì’ßy®³g\Ð�Ç~{†kÅÏ6Ÿ ‚ ç6õ¬k^oœ_“´›ƒèæ.ÖÚ\Å]€½^Ù4,ÑY®¤é.ùÝD¦Ÿu¤§„ÃŽ›uŠ«ê Zeï%Rݧ›õ¢0=(ªº¯W„zŹ…ƒ¦Í&Ÿ ‚ ç>s ^é~ǵúNÖ+B�®c­¸Zîe=÷íÚ´”03…§óæ�ñ~«*P½ö&ÓÂÒÀÝñ4{gœÇν3­Š=ì&"ýÒÜò ‚ ‚°ø©%À¼òqBýt•S_9÷µœÐZ‚Õ™ß^W/wÖ-Íí<·çq AP» s~^çÙEŸ›(„™¢ñtPOùnõó+SA„…Í\ÐZq~ÂÓ¹w{~çxå­µ¹á—D€{‰o·û›"ì»9 n"Ô-ÝY ·‡ä\y©êt:'Ä÷ÃMðzåqs6½ÜN§cêW¶ ‚ ‹— Î§WÜ|: v÷j»�nå¥~e©·žÏ*ÌÌ“ýš³½ÜO· 8ÅŸ› ´_Ç`~�E?7ót»®‚ ‚ ,l‚h/ÓÍ+­^êÆ%-ˆÈ¬%RÝêDhú=g¾©rÜÐZN§³iÝm_í÷éUg_O¯~™ný?Ýêê'nÝÊrâç†úåAaáÔŒª%¬¼Âµô’—س‡çÓùt+ßÏõô«káê,k §ZÝ{õó´ê&þÜÒìb—tÏÊÍ‚ ý8íùçóú‚ ‚ ,ê}ÿ×r�a?çÒ™T:ËñÊ[Ëɬ% ƒ: µêçšnïæ8z9¢^•q: öðv‚8 ö2k�~÷rAñ{ÅÙÓ¼ê"‚ Ââ¦ÇÓ-n¾EhÐÍm”»WyÎøZõª¥ƒ橽}¼ŸÐôr;�".¨Z »è<Ôë” ‚ ‚pþPK#ø NgÜ|» ~4h¾zÊzOÎ<¾x Br»g¡U…mŸ4ÞÍu:�^bÔdÚ-õr<çÃý ">¥¯§ ‚ œ¿QµD¨Ÿ ZËq´§ÍÆ Z†WžZçz݃óþ=Ï »d„ÚÍïnÂÏKŒVøäѧÞÑðv±*‚ ‚0ÌF€:ã‚ ÐêÞMø9ÃAÅg-1Zïu¼îÓy�Až0ä ÝIDATÓ­å.Ö#:�"Ó¹ò‘sþO{šWØ.6íýF�"Ôyì|n‚5è(xAAÎ?j‰M·x/Gt¶âÓ®ŠL¨±îºKØ«ía7ç³–ëévì$MA„ó�ZN§_|=ºªç³Öæå€]3Þ¯~µS¿2¦pk‚·ûÍõé<Ç™Vkô»É©Mðgûý ‚ ‚p~â%.kå ê€V÷AÅž[\Pñé'ë£µŽƒ<7À}"úê±WózP´š®ølÕtÓ% �½3Îï8HØ  ‚ ‚pþ2ßÔ®å|Úãj¹�õ4Ë;Ókõ õ»nÔïfÌêt?½œÎZhÕÙ JU|Ö›?èyÎ|Îú{�ã†SAAX<vìjä¯× õ£öï§›­ŠS§ãiO¯å€ºí½âœiAã½*‚ ‹‡z¨×9Aè\…h1Ôñœ¯Õ’ÜîÃïžï> öŒAšÙÝĦ}N»èôù^¯êuŽý~j•Ä õÊ/‚ ÂùA]îžG8ˆ8«%òœŽ§[zPÇ“ç¡n÷Tó¾¼ú€:Ã~«Ÿãé\ É‰Ó ­×õŠ v"î¦ ‚ nÔ#@�qõ Ïê~6bÔMH™+ÔY¶×µüÒýîûܨâ;�k5»›Ô7úÝï¡Î8çÞyžWý½¦„òêê…ˆTAAX<̦eÓëœz�Ðù¡^[Pg3È€$|â‚Ô{F^ç< àîf:Oâxºõõôý§ OgŽxjûÅùÅû!"TAõ ÐzœÐ Ô+ÍÍY êFú Ï «"Õã~ºÝ“óÞgˆÑ°Kf7·Ð­ÀZó|ú5»ÛÅ©S„ú¹�nƒ¥ÜQ˜ym§êï¤Þò‚ ‚ ,‚¼ëëuBݧ[º—ÈóK«gs;?èõ~Žh�¼S÷à ^MÕ^9Èhw7'Ôé€:E¨_<œ*Híqx„kÅÏ6Ÿ ‚ ‹‹Ó!@íÇõP¯c¯¸z'9ë$ÞO`:q½g¿Qðn'»á5Ù¼s’S„:Å&¶/¡9›­VYÎzÖë–ž"¤Ýú€ºQ=¡ž æ�ç»M—äžµ�·­åäº NòBšßAáü¥Þ÷½Ÿèt†ƒºŸÎ}-Q:—-Hnu₺¦»õuÃk¤»]”ÚãÜQg<>énb�4ç±[Ø+Î q:Aáü¥ÄµÇÍŵçñs-½âýÐzÏuÞ›_žSÂA¨gÓº½ >è$ó^a{|-4¨ûÄùtsgAA ˜.¨%Dƒº Õc/Ô~T4ÚÓÝ„«óº³±^÷ïzß³ Aq:ž~aêØû»…½âf“GA„ó�Ù43»¹„~Çõì½D¢3\�(��ê焺ÅO�3ŸÔdfs|ÇÓ~dO�c\Âö8;âz ‚ ‚P/õŠÑ B´– õ¡s¢^ׂ×uqÄ»ž;ߨ½9Þ^?”:öA� _oAAÎO‚h%O±5ËãzPgül]Ñj~Ãcï•—t¯{›r@�¤NAét4Ý–ÛtžëÜûåÃ%¯› þî§×u‚ BUAs1áüÎuK *8Ýâ¼ÜP·c¯>žA„ç\®íuž3?pj¼É´pôÃM0Ú)œ:ÿ'Žt¯i— ˜ËY«ïg-±(bRA„z ¢‘fž�tK«%:½âëIÇ%_­úÎ8/èJH³Á)Hýòø9¢AŽ«aévêíó)UAÎOêÑB^ygã‚Ú�½ÄÙ8’AD¦óZAÓ½êí{ÿ^}@½„¨›¨tÆy…qÄ×ÓßÓÏݬwÔ»KAA抟H­%>�á î§sï為噋CêV¾_=|ÓÂŽH;suCƒ8 ~çÕŠ³§�»J€4gº ‚ ‚� zh>�Р‚t6ÇA¥_¼WG~O¼Ð âÑÏù4]âÁßu‹;›Î§ˆRAA8?©Ç€«•·–0›‹Z+­^QZëüٔﺯ P¯94çâ€Î…j�œÎ§_]½âœivj lAA;³uCO‡:Ÿ®(.é~a¿:zÕwjÿÿ2(!PtIéõIEND®B`‚MEGAcmd-2.5.2_Linux/contrib/docs/pics/ftpConnectToServerWin.png000066400000000000000000000400051516543156300244130ustar00rootroot00000000000000‰PNG  IHDRU#9ÍtsRGB®ÎégAMA±� üa pHYs%%IR$ð?šIDATx^íݽ¯$[^&êrF÷ZØ ³¬²~KØ”…Uçh x ²1�ÊnÔ•Õ}<ŒV£i8¢[GHŒƒ8ƒñÈ+2VîˆkÅGþ2wåÇóH¯NíÈøXñ‘»Ö[¹«Î›ÿïüˆˆˆˆˆœ—¾T°ŸR T(UJ@€R T(UJ@€R T(UJ@€R TwíÍ›7‡ŸýìgÃWÛ¤õÓv— Tw-¤ÿöÿü¿›‹ÕÞõ×(UÀÝÛZ”.]¨¥ xk…é…*Qª€‡Ñ*N×*T‰R<”²@]³P%JðpÆEêš…*Qª€‡ô…*Qª€‡ã“*€3•EêÚÅJ©F«@]³X)UÀCX+N×*VJp÷¶¦k+¥ ¸k{‹Ò¥‹•Rܵ7oÞì.Hiý´Ý%(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@ÀUJÕ/~ñ‹áW�íâ¥ê/ÿò/ø‡xøéO:,x\-U¹PåøÄê²þõ_ÿõðë¿þë‡?ýÓ?–´íY÷¤ëð;¿ó;‡ÿüÏÿ–Àe\¬T•…*}Í\.;)é×{\£Týõ_ÿõáÍ›7ÍÂñ(åìÜR•¶;ç^½¦tNéÜ”F€¯ã"¥ªV¨þë¿þkx•±Tb~ë·~ëðk¿öký¯÷¸f©J©�çÜR•·Û{Ž×ò(¥ªv]•*€¯+\ªªíòä7MÔÿ÷÷$xOÁÙºnšœ§õ~ðƒTËÞcŽýýßÿýYÅñZÒø¡TÝÚu Xªª}Ò„ø7~ã7úÿ¦Iqš§_ouÍRõ�ÿø�ýSÙSª”*–�]ªÊBɳOìÇŸZÕä×ó�楉ôßüÍßT ΞuK¹T¥Ò�Ö-‹^«TåÉ}>渰¤b–—ç¤eµOçò~ÆûÏçS¼r¿µ²“�ññý:ùxiÿå±óþ–®Qz­vœÒ–±%ùÜÆëæó\z-)�1~=ý·<¿¤Üféšýíßþíäž.]^œUªþîïþ®ZŽÎÍ3¨•“Ö„=�5{Æ–¯Éxliû?øƒ?è�Îw|�ó¾ÇËò>Æ×5Iû¬]Ã=×l¼nÚZV€¹³JUú?ŸTí“&§­IöÚ9Ëë�'Ù{Ö­IÇ—†rLåÄ>'/w¬<¿Ú¹ÕJBÚÏÿñ~ó7ó4†rL­s¬�%ýz¼m–Ž™÷‘~=ë’´nmÙÞ±ÕÖ]RnS»®I¹ÞÞq•×£¶ug•ª¤V¬Ò×ÔÕ&¹µ‰k­xdåk{Öm) L’Æ“—•ûiMêËåK“ÿ|¾iß©LåUÌë¦cåkµviùxüµëœä}þÑýÑ®O`Êý�í[^wí¸ù™HcÌŸÏ–Rµg\Iëšµ–0uv©J«mò$w#ý:-ËÇ[;�rüK¥*�1­³UÚn¼ÿ±=ck]�±4®4¾ñþÊó¹D©ÚzÍZ˘ •ªD±Z·41Ï“ä<^š—¯íY·¥œ`gi»4®ò¼ØR’ÖzãåiÒž÷›¾Nøô�%ä!1Y;�´|<þVHë¥åù°hí¯TîlÏØÖ®[ëõò|¶¬w©kÖZÀT¸T%ŠU[š�¦‰iš Öä×óäµüz,M¤Ç…`Ϻ-i½ZiÈûÎÿ£âò˜­óÉZ“ÿ¼}úÇÒ�þåò”þ›ÊTúûUåù´&÷µ±´ÖMãÏË·^›$­S»>ÙÖ±ÕÆ:V»^y›ñþ·”ªÚ×Ym­u[˘ºH©JjÅê¿øÅðêójM‚ÇÒki�\0ò¤<ñÍû)ËÀžukÒö­Ò°vÌôß,mÿþýûÓ<}Ýú´$-Keíw÷wOëçÉ~mÌyå?�s9öVHû/O_o¹>éõ¥Rµglµ{•^O3_¯ñké×iýñ¾ózå¸Ëó¾Ä5k-`êb¥*ËÅê§?ýé°ä¹Õ&±¥Ú„z\hòÄúŸÿùŸ«ê=ë––JU’Æ”öYî'„qÆ%+¯S;·rŸéëÚ~’4±Oç•÷—²§¤}—Ëóñjëgy�2ãmÒÓ×­×Çò½¯›Ï·¼�騵ó©]×Úz[ÇÕºf­åL]¼T%>¡žÅUJÀ³Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥êÁ}ûÍOïÞÿÙáÍÛ”Ÿ¾ Ë_Ï/¾Ú±ÇnelõõŸ]Nï›÷??|;,枸T}øòyF>æ01^š„ òõÃdò3×O°Ò¾O×óxœÓ±z/cü4»vÃv].wíZ*×*Ë×drœñD-MÒ†u'¶Þ§ñ3÷r§ý�&½{¯éeÎe~�ÞUîÑÚó0³w,kÏî’sŸës®WÞ&PªòXŽ©ÜDZ…ã½�ù>òkÓñ�ŸÙ|¾Kï©á\vïË×`¾þtÝùµÚöHöž \Ï–ªdü›q÷›ïê§£ BúÍ¿\÷41+ÿ«—Éôü7øÖ¿p6Ú¦›D•Ä4áx9þ|Br’Ç4›d¶Ž› û\˜œ–ÿ$}ríæÇlO ϹvKZ×êe|µ?ÝNŸB­Žoõ>uëv¾ù3Ö>�m×ôRç2ºGÝÄ·y�v<ç�¥Ó|v—¬=Ãx&û’sήçIKÕQÿc[ýoèÃoΕÉñÑxò5,*œ&žã‰Vž”µ&_µ××¶™hOH'¦ ÇXžÈÔ-o³ví s®Ý¢úµªÞ·Bõüv¿.ﻼ6Û®é…Îeõå×·ORÏKç¬RÕÙù\Ÿ=Æh©êÒú>Òr,HÅõö÷áóñ¿Õ{:¾†g½§Öž�úuÜúiwóZušÏGrÖ¹Àõ1­OÒ–'Ou—/Uç\»5µql¼Þ³{»ç>•×yêxž—,U{Ï%9ïµEÆÒY}v—”×»õ\ÆØ÷Iãz®n·lRÀûïSã±Çì÷}üuùìœ÷žj]¿‘Mç5úäj²¯Æµê,½.ÿýb”ªRåï"¼üÆßþM-�žØ_¢T�.çÞ£%ç�¥³åÙ]²ñ¹>{Œy|­ë5söz°T�·ïïGq}NËçܼދò³±ï{_]Yx“ö³·4ÞóήçéJÕ·ŸÒM6¾¯OÖÒ�ªT'yy—Ê_¼nÿóÐ/ÛÕÿ>AúÓÛŸ4�U�L¤èà´~{B²mb:lß­3Ÿìl·<9]ã >a?çÚ-i�ãå8õë½~o—ïS«8MÿÎIk¼ïšFÏeï=ZrîX:ÑR•�½ú\Ÿ;Æ—{:Ûîô=¤²]´Tåãöÿ${åØýxÓÿ¯)=;µs~Û9ß�¶ïëöóMíÇîò¾ÆëÖ–m{\êûÄÁ~O“´ü§²Ãÿ�òe»Æ„3O¤†uòßxù—ß*Ûµ¶™­ßž�l�˜æ?eîsîdo4Þãué&v§k¸0ÆAsÂ~εkÚp­ÊãŒ–íº·Å6ãgnúÜt“¾áµÙ')ç^Ó³Î%p�–D¯ëÙ¥jÇs}îOe¢KúGÒvÃßz÷ùçõë™�uv©?K•q�Ï¥uŒÖù6ßSó‘žÁ\$W¿÷�Jç°îøÊ;}Ö·=Ëó÷@g÷¹Àõ<]©J’ü©ûÍ9©ü›|ŸT¬šÿà<±H“¼ï_>�'Ýoøkÿóà|ÌÑ6ÇIÀÂvß?ɘl“&o“OÙ6LHÖ&¦§‰IpÒM2Çc}ùÓãà„ýœkWµ2ŽÖõ^û‹î›îÓñOôÇë¤ñ§×ó$yVª’s¯éîs Þ£%ç\×­Ïî’=Ïõ™÷>}9þŸˆçûÞ¼žyL�RÕüÑÂ^ëSÑ®÷Ôp.§ï}ÓíZïÃþy_›´nWŒ¦ÿãßdåÙk¾ûþ1ÏWªÎ2žX<˜KL`áÖx®€W¤Tmò¸¥*ÿ˜ÔâŸlÃ�ñ\¯I©ÚäQKÕÊ�ÞÀ]ò\¯K©Úä1KUþû<µù î•çxmJÕ&Tªú¿@>úKäþÎ �Às |EJÕ&�UªúIg—wWþe;¸žkà+Rª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©Pª”*€¥ @©º3_>¼9¼y÷éðíðõmùrøðæÍáݧ-£Û³îýèïOw^oÞ|èÎpŸÛ¾·mß~zwÖù£èßg¼wïõ=ÿÚní:ÝÒxt'´ù{Fc?ñçû+\v{¬Ru{ÏÜ­]§mãy�ëx¯¿o¼¾ùý(¯�kIÔó~Rõí§Ã»nÒ“&N·éX:ÊñÝö›þ™KÕð {Óu�÷¶íº¥ª~­.¦/Cï›Ã¥ïµý ëo{&Z¾Â5¹ ·u î·TÕ®ãë”�º×øÞ¸çÙ‰Œçu®ãë>C×~ß]sÿóûQ^»¯ÿ~äÞ)UWûæÔßm¿é�ߟ¹Tm:Ÿ»¼·m—+U×~Ÿ^³TuŽ×fãþ·ºõï]¯áÆ®ÁÝ–ª[{–ã¹èuÚsί1ž W˵Ÿ—W~ËkwK÷•û¤T½Ò›w·;øf>§T)Uví÷é•KÕUÆíkrnì(UÒÏE¯Óžs~�ñ½êX®ý¼¼òóX^»[º¯Ü'¥jôæm¿¡¦¿L"‡åÝ~rªß †c�Ö[yÓö㯟2ìø4ÆrŸµï<îÑüœê?¾T®—&”­¢´mÝÓ¹õÔá×Ãk[ÎevÝŠq¯½Þ2¿E�Èã§±ïù¾^Ö=�ÿîíißÃ×½aÓû5Ü«ñ1WŽÕ~?ÔËÊÒ}�séZõv^ƒªk—ªáÙ¨n3rS×d0?Ö¼8ŸÆV{ÏNëc¬þAÄÂy´®ÁiÿÃz½a?«Ïx'r¾µR•÷W=¿AuÌ�-c9*ßs]NçµôZí/¯GÆuÚvË}Ù4žò¹(îaäœK—Ïi½áëd¶ßÆñÇ–¶Ù:–l¶¯�Ïù§Ùv]&Çh]ûúû­\>×Ëk¥Óø†¯{Þëåvk_/™�w~/=W<�¯Xoí½ÅëQªÆvkT¬{|£¤‡y:‰ÊË'ÛÏÞè­o0…Úø:§7òøÍ6Œ{òÆ:÷¸Ý¾¦oÐJQö=Ý×q½Ö8¶¬{:·rŒ«ç2|=ùÔcóë-Ã8kߨfèã1¦×®ákÜÛ~?õçuv]ÆcÛp¬íï‡õûpúMcø:vjç\ƒšÊuij�%iìçx Zâä¯ÉŽçþôÌn8ÆÒó=Ù|ËyÔ®Á¹Ïøη?ÎhûÚ¶5ýz•±mK¾Ó±Œž�îz¼\Ãä¸ïɲƳ×qY±ní>×,�§±ÏÉùι*8žéu\¯Ïmüþ°a,ývåz�ãöÛžóæµ–ןÅÖ÷¡�ïëšþü¦cÞò^ŸÞ�õ¯ë¶_ÇÓ˜Ë'ç9œûË=›_ŸÓ}{¸×«×ŒW¡TMÄú›¿ü ³ú†Lß”�o&•o3�o.µ7îü8�ãV”ßhʯOfßÎXw6Ýr.Óoœsk¯×5Ç^ÓqÙô7±†¯ro�× ¼Þ>¥±Œ®y¿Ÿüõ¶cm?¬ß‡Ù5ßñ>-ǵI¿M·¯2 Ïluüµcû^:ßn¥›»&³ã�Ì�ѯ»X_×-ÇRîsãyT¯Á9Ïø0®àùŽ�8¾¶]óòØ»ÇR]·m¶ÍÒ÷¢È¸VïsÃÒxÎÜçÖs® Žgzìs~Úøýa÷XÆZ÷°ò¾Þø¼LµîSeùæ{s™÷úÚ×5íuæçsé¹b¿Í¹ï-^…RU<‡Ç7Áø›ÉüÍ;_çÅäµÖ7ˆ-ß8v~óš,�·7¼I»uç“ÌùõxQ¾¶gÝâ²Mç’Ç[~³ÉÖ^¯Y{:|ù �ÑZâ+ÝÛ~?§Òù¥ëq<ϼ¸?¯�ÇÚü~Øpf× 6†À5˜ÙS:–ößï'�Û8[ö{k×dßsßzfkZëN–o=�Æzý¾N 7<ã:ß¼Ï/ýúÛ¯÷t{Æ2=§¶ü|�2ÿÒu¼ð5j-ŸØ4žõåç�sUp<Ó¯×ßësg|L—_æÖ¯ÇÚ³8œÃl…Êò÷¦ãiÅ4†µ÷úü¼Ö¾žÛw˯Ç&¯µÎ»XÞßú¸y-JÕìi/¾AÒ‘ì}£L¾¹�2?öHc|›ÞT�ãöûéÖÓ˜sé›JùÚžuËã vœK{ŸÊI®½>µ4öÎì¹8þÑ\ì+ÝÛɘӯ‡}¦ýÇ]œÃÆcm~? –îÃìÔ®Uä”úk²q’Ó¸o½=û©¸�k²ï¹Ÿ�mAkÝÉò­çѺ{Ÿñ �ïñ9ƹýbûÛ1–¥gqÐï»Øßlü�ýœ=®þËâƒÖò‰MãyQ.ï¿>óœ«.1žb½<Æ=ÏÊÒ6ÛÆr¡÷uíz¬^Ï딪ɘӯ‡ñ¦±Ïsþ{ry^k_Ïí»Ž—ž+¶Æ·>n^‹RUyÚÇhÿëb¥½o”Mß J�m7½©Î=î¦c.}S)_Û³nyœÁ9ç2lS»N½µ×{Ëß<çÏÀüxÓ¦ëüâ"÷6m›öykþ ©}T 6kóû¡4ì|γkPÃÆqmÒÿ&øõKÕÉW¿&ûžûÖ3[ÓZw²|ëy´Ö-Oû]}Æ/t¾ýziyÿlü>ЙîoÇXÖ®SãõÙø7­w™kÔZ>±u܃Éòà9WEÆSùzbØwóõšÊ6ÛÆr¡÷uíz¬^Ï+•ªÑºi¼§sk¾×ççµöõܾëX~=¶ëý‹é—å{z4Ç*·©í¿aï{}íÚµÏ{dÇuÜþ{cgë÷ïÊø¦Ë‡ó_;®B©š<À/–~S<¾Ö½!ò›ë”âM’åo8£´Ž;1ÞnØ`Û›jpÎq‹sJç_Ýwyîýë�oˆ×m�[oñ\Žûš¼>ÙÏÚëKFßü·=®W{^ª¾Æ½M†{QŽ3?ïÕ}¬kûûaý>¬žëøÀž‰ÕkÒïã+—ªÑøû|íkÒÛöÜ/¾g ¾[×àœgwæ÷‡N}ùÞ×Ík·ð,vNï‡ÓkÃXÊë¿çÞì|¯/ߟù×mÛ®ãq—›+¶Æ7]>ŒmÓypiÏ[ªVœÞ Ã×cK¯7 ÿMÌ{tÂ5x5æŠÏG©ªjü ÊÀn[z�–zùì\€×c®ø|”ªŠµ7‚7 -æŠÏG©9¾Òϱ.¿ ¼Qh1W|>J@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R TÁFß~zwxóîÓáÛáë×ñåðá͛ûO[Žºg].åùJÕ·Ÿﺉç‡/Ã×°‘R@�RµËqÒz»…ìÖÇ·×m��R@�RµÇ­ÊõhŸÂÝØù(UÔ(U{(U¯K©ê(U·N©ê|ùðæ8Y^{3d<9í×½Ög¼“bÛrò}:Æ—“×·ûdá«ãk˜o÷¡›šOµÆ^síó9íX¯7ìgzŒoŸÞ·‹œo­Tåý-™a,ããVïM¹Þ»Ã§o[EiÛº­sé-\ÿlv½Ö®çéõa|•}<¥ªsšŽ'€Ã$t2‡¬lÛ›MêçúÓ1Š�÷{éÍñU'àå¤÷8ž4AtZc¯¹úùôûšŽ¯/;å1‡ó{Ù6~¾e©ªm[Õ�yZŠ*Ei8×é1‡1ÖmÞ»Õë_+EÝ1B¯<&¥ªSŸoœä×ÖKŠÉÿñ�OEV�½íõñÕõÇ­NxçÇj�½æúç3/$é˜>¥uGcì÷õòõ%Îw\ªŽE®<ÏíÊñ4Ç7+?g¬;;—-×ÿx�ËU^¬½ð<”ªNk’:[^›äW'þ�bùæc &Ë7£¹Þ̼˜Œ ÖB2÷çÓïë´0�K*ÓIþôS¥ËœoÞç—~ý-×yl(2Ýv§l_ùÚžuç²éúçñ¶ŠãÚëÏC©êl*Im2:,›L–GÉën>Æ`²|ã1ªã«Z.ÝÁ»ý^¿TÕÎ%eõ|ÆãK¿ö›Žq<§ã„[él<ßcùƹ~‘OúýÇŸcOQÚ³nyœÁÖëßÉcïS9çµ×ž�RÕ©N<;³åµI~kâ_Ø|ŒÁdùÆcl^oqbžv³í“›šW9ŸÑò´ßÓyä‚Õ¿>þå2ç›?©ÊÿèCk�s˜cOQÚ³nyœÁÖë?6lS».½µ×˜RÕiM¢gË«“ÑÆßO)l>Æ`º|Û1öL–[Ç­«½îÜëœOþ$êSW"Få©_¿ûúÓ˧WÙ%Î÷TªÒ[‹ÕÒ3S^�ÚøfÇÙ³në\æç¼I¿ÿ…÷[{àA)U�mE i|J0Lf§sÔnÝѶÛ�q4[¾áý×µñÕ ×¡Ç‚óîðn²þPjÛ\à|'¥*Ýß‹ã9ÌJ[9–ázLŠNsyŒë¶Î%ï£}ý»_O_,öµöúBùx0JU§5ñ¬.ÏÚ”éN^–9û�ÕcWŽÑk�¯ê¥„œ²cŒ5¯v>Ã}, M.:õS��oYª’|¼Úú'£Â“’Æ\=F±ÞñõF±Ü¸îâ½[¼þÇ}M^Ÿìgíu¥ xÏWª.H©Pª”*€¥ @©Pª”*€¥ @©PªžªT½ùïÝÉŠˆˆˆÈUÏæéJ×™oýøÇ?–'É£Qª¸˜h©úî»ïäÁ£TÝ9¥ ດ*Y‹Ruç”*€ëRªd-JÕ�+ßäoÿLDäõó³o†ïB�G©’µ(UwN©‘[ˆR<2¥JÖ¢TÝ9¥JDn!JðÈ”*Y‹Ruç”*¹…(UÀ#Sªd-JÕ�SªDä¢T�L©’µ(UwN©‘[ˆR<2¥JÖ¢Tݹ¥Rõñ—ÃÂÎÇÑr‘=é¿—üÛáð¾òZŽR<2¥JÖ¢TݹV©zÿóãׯ]¦–Ž»öÚw]Êåùµ‰rr÷ݶÃKU+“Á”ÏÝ:cŸ»}ÖÖ+sîv9K罘|ÎÝd·ùÚHõ9غ^—½çyº×?9þ·:ΔáõþÜÛº•×—žñ{ŽR<;¥JÖ¢TݹV©ê'Á•‰á7Ýâoº‰a¹üRIÇmM8[¯å {íµÚ$µ_¿ËZQJÙr¾i�ñµÊÇ\+çn—³tÞk9} YÞãʤ?¯;™èo]¯Ë9ç9¾×yýÚ}híû^Ö-ÓzÆï)éËsWª€g§TÉZ”ª;·Tªf“»á“‰Údñ"ö_�lW^;ƒAm2ú¾ël"·ñ<¶Lóº,}áY˜<Ÿ»]Ê–ó^Ìpþ½âX­ã§‰òø8[×;ë<+÷º_¿Ëø^äëP>/÷¶î)Ýòæó/ÎA©Åoÿöoþê¯þjøjî?þã?¿÷{¿wø³?뾑-Pªd-JÕ�»¥RÕO¼ºl}m<ÆêxRNþk©ý‰{™~ò\s«L䜻]Jä¼Sò6³1,Üßɤxëz]Î9ÏêsÐ+9�ë0†ê¹ßÛºC–žÿ»ÉpžJð(þáþ¡Y¬r¡úøñã°¤M©’µ(UwnVª†ÉàD7!ê'E¥a8ž ÷“è‘rrÕ¿Þ˜\-•˜µ‚“‹BíµY¿q¶”›”f9®cëS‡s·+Ó:ïÖužÝ«ñ$~áºL®ÇÖõºœsž­{�ŸÁ´ÍÒst�릔ç=¾–鵓n¿ý:Ý~Ó}8ÉË»ôÇno<–Ùó0R»å:³c–†×OãY³RܪZ±ÚS¨’»*UŸßÞ¼ySäíáã7•uåbQªîÜ%>©Ê³$M Ëåãõ[“Ë~ÝÊòµ×rªãmd<‘¬½žÒ,ã4®GŸnY2¾§œ»]%­ó®^çâ¸ý:£ImJ?y/–¥ä ó¸,­®wÆy®Ýëq¹X»F÷´ní¼ósšœžÕnéš~—î]my~†ë;»öÃzyùøãñåå“í»_—ÏZ:¿É²bÿ9§Â5>Çn�$o¯T·l\¬öªäþJÕûÃçѲÏï«kG©ºs—,U³ \—ÓŸPËË,•¢¥×r¶¬Ó§˜ÈU3¬³Tºú4®GŸaÕ‰ô¹ÛU²ù¼»¤uÇE¨ü:¥v/k“ûMë�qžkçs:F1îZîiÝÚyçmËk” Juy·Ÿü^kÞßÑ:ùµ{´å½;[§qÏ[c�Q©n].V?øÁvªäÞKÕwß}>¼óæðöã7£erÉ(Uwî’¥ªVB–^;eØoµH,½6ÊÚd<%Oì6­7LôÓ¸}¥¡Ï¹ÛU²å¼Sò¹�ïCmÒÝgC–ö_½�këí=Ïaý湯çOi¯Ñ=­;¬W¾Þzïl]^[¯üd©µ¯¥×úçf¬ûzS©¯WY®T·èW¿úÕð«£T¬þäOþdøêèûï¿ï³D©’µ(UwîJÕR‰ÙZpÖÊEþ1¬ÅIpJã«YZ·VrÎÝ®’M¥ª±Ïf©ª¤5).3Yoçy®Ýë<™OÏRÿë…ñÜÓº­ón½wö,OÏýéú×|üúž÷n?ÎÎøy›=�{>[¯²\©ÙÝ—ªo>Þv¥êýç—eý�¾ýxø&ÿ¬ôëÑ6ǧò#…Å6ù8ÓòöÍáãÛnÝ÷ŸOËfû½ÖgØÏéõò87¥êÎÝB©šLüv¼6Nu¼CúBU™ÐUS™x.¥uÜþ¼Žyîve–Î;'­³fío9NJ¹Þžó\º×ù9:½><‹Í}ßѺ­óÎû(ŸÅ=ËÇ¥¥ÿu—µmª¯ ã/Ç©Tlsߥj^jRNŦ,4çZõ’5ú{Yýq¦Oë›�o+%踿c¡ÆR¾>ì˜ÕÇkQªîÜ%KUíÓ•~B_LäÆé·­L¶Ö^+Óš¼÷“¶NmÒXKmâ¹”Öd±5žœs·+³wýqÖîÍ)ÝýNV¯ae½­ç¹x¯‡ç®k¾·“çîÎÖ]}þ;åußµ|¸'Ÿ»ÿ¦1MÆÙ%oS.O™<Ã9•ïý~�ñøëõç^9Ïñr¥ xd÷WªRgþ�TKRùc‚�O ú”åfþ#…iÛ÷S)íwRòÆ«–F�ª¸[‹Ruçv•ª.éOÕËåyb–Ì&ÔŲrÖ:ÎÚkeöŒw)kë—ãOIÛŒ'еÉí%·§uÞkÛ¥ô댎Ÿ’Æ0™`“òZ‘Þ²^ÊÖól]÷~œÅú9ý¾Gçy�ë¶Î»v�ÎYžÇ3>nNÞ&oW{ïöcÝǼN¹ß´^yNJðìîû“ª.ùÇéFe¥^žæEiœã'Q/ûî÷1)Y©øL‹S¿Íé8Cij¤Ê�)..¿¡(Uwno©Ê“çÞ0Á:Mæ†?¥«NðòäjX¿ö§ä‹¯UÒo?\0ßpÌZ1È™Œ”Éq*¯_z»ñëµó^Û.¥_g4INO²³òîY/gñ<îuž¸¯�t÷¶îÚ3ž×-¯ë¹Ëkc:m3Œelv?‹uÒþúó-ïgå{Du½b¹R<²»/U]Ž…è¥ÌœSªfû�~=ì/íû¸�c‰*÷×»;NŸñ§Råߥ*¢T½.¥jgZ“¹µôªaÒµç5y¬<ë½~­ó^zžûÞ½F”*à‘=B©:.�•ªò“ªñ'H/Eª[ž VÿúÂ�íå•ÇqŸHµ¢Tݹ¯Vª†?õ®~*´ôš‘ÌQª^Çã|Rõ²¼^ªÚËëß)õqøÑ¿ay.S_>½z٦Ȥì5þNÕD©ºs_ó“*¹nÖÞ›JÀë¸ûRÕ/›~Õ,Oå§GCúõ[eííÛÃÛÉúùïN•Ÿz}>Lþ¥¿.³q c�~ZÕmwZgØ÷æ¯_'JÕ�SªD/ù=™,½/•*€×q¥êXhÆ)¤®ý‰TÊK):¥µîPÂÊ<~2V)Gã}¦Ôö[9‡—ý(U¯E©yå(UÀ#»«R%_%JÕ�‹¼ÉX§TÉZ”ª;§T\—R%kQªîœRp]J•¬E©ºséM.""""×͹”ªçˆRW¢T=G”*¸¥ê9¢TÀ•(UÏ¥ ®D©zŽ(Up%JÕsD©€+Qªž#J\‰RõQªàJ”ªçˆRW’&Ûòy4J@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R Tñj¾üùÏo~ø/‡o‡¯àtëüù¿u¿þ¿‡O?T.I©à=×'UÿóŸºRõ³Ã‡ÿ9|]š¼®T]šRÀ#z®R5ù$jný“,"”*Ñ“•ª¥â´\¸ˆSªxDOWªš?Ø/ÿ_‡OÿgøºS-ÿç_ïRùʽ¾´þ»/ÿwX� ?Z¸VàŽõí—ÿÕ/›žGY ‡ãŒ÷Qó¸ŸT2‡mËõÊ14·Ÿ«¼Æ{¯gv,£¬]7xEÏWªŸHÕ&ü³e³‚T”£J1Ëågºïãš·+Y;V§ßl¼Ýx¦eîxÜñ²ÓøÆŸÞåcÿ0¦ÁlLãíëç=>ÇÝ×3]^;¥ €ò„¥jüéJ6/É´ÌKMoR¤æûIûøð%•‡ÑñúmÆÇ/m9V2*g}A™›š²Ø¯Å|»~½ÖòÙöõ‚X®;ýzûõ\,Ÿð•=e©ÊŸ�œ&ë³²r4)å6Y±¼ßæTR)Hû�–ƒ¾ˆŒÊÆÌÆcõÒØøO‡]A)KáÑP^ºíN™•¢yÁÛº¼µ^R¾¶ÿzæ±Ïï ÜŠç,Uŧ$å'*Y­LÊÉ(§r0þª/<ÇíӾޥçxìzl=Ö`qüÝúå'gãu¿v©*Ï-g|Žù<ú”ŸlÀWö¤¥j<áŸÿÈ^V+³OVJ£õÒö§ýæ‚Õ¿¾òÉËÖc%çlﺢ6Y¿±�[+U›Î1¶�¾¶§-U§IýŸKI­äL HãïÍäO¢þeøÑ¿aq¼îë//Ÿ^µm=ÖèÇ ÇŸ�%ÕÒ2ì÷⥪výæçpÞõ, %Ò�p+ž·TåIýÂ'å§:Ç }YTºbSlß�¦O�ÆË_Ž·ø£Ù†cõã;•’²¤ ׬Ôç{™R•ö;]÷x¬Ê²]׳ûuQºfû€¯ì‰KÕK!h•œê~(ãLKAgø”¨Üo>Þlý–…cKKñ‰MyÜáë¼mZ^žÓÖò”•ËO_Ǫm»ÿzÅp… €óÔ¥Š¸Vù€g¡T¢Tð잪TM~ŒLî>p |REˆOªxvJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@€R T(UJ@À©TýêW¿‘�9•ªÿ÷‘�QªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDDDQªDDDDn4oþ{7Q“›Lí~­åÇ?þ±Ühj÷kO”*‘Mm2/·‘ÚýZKš¼÷ÝwrcQªDDDD8y_›Ê׉RõxQªDDDD8JÕíE©z¼(U""""¥êö¢T=^”*‘ŽRu{Qª/J•ˆˆˆÈG©º½(U�¥JDDDä�£TÝ^”ªÇ‹R%"""òÀQªn/JÕãE©yà(U·¥êñ¢T‰ˆˆˆ7'êJÕ–¼f©:þÈ_­ß~”*¹Xn¯TåÉzù£c�R5”¢ÓßãM”óß󙦗ÒÖO¬ÇÛË_Öý:¹�RõÍáãÛ=×kXáZŸŠNqOëEze ÏEŠR%""""Ë-–ªÓ„y2é­”ªaâü²l>Ñ/'ϳɴOªÎËìÚ¯¤»¿Óuç÷óTrÇ÷§.Šû“ Ó¤”uûË_Ÿñ\\;J•ˆˆˆÈç6KU—YÙ)'áó‰rŸ~?ãO¹ŽÛõûé÷Y|6;Î×Ï=•ªÈu«ÞÙ'”{ ѶçB©‘‹åfKU—ã$;/+JUkR_[žöýöýá}7Ùž~ZÒE©:/g]·¡ðtÛÕ~,¯Ut¦ËG%¹X¯ÏÆçB©‘‹å–KÕ´HÕKÕd‚>J9©nN¢•ª3SÜ�• òtýòž´îÑdùÚýÚø\4Ÿ‡+E©yàÜv©ÿ£?©ªeøÑ¯·o+ë+Uggs1i\ãk–ªµû©T‰ˆˆˆÈÅrë¥êô#co»RÔM–_>éhüÝ™YF?.V;†Ru~†k·úiUõçûº³T­Þ÷mÏ…R%""""Ëí—ª.ä<ýøÖdßoSNÖ»UNÔOìÚ„{ß�±½Fî¦T¥ ÷ ^†ò? q¼ÆãëÞß—b»m¥ªK>fyó×[Ÿ‹Ê±®¥JDDDä�s¥ªKž„ÏÊOž`�’'ÓÇmêÿÚ_­œõ™LÔ¿NîªTõÊj¾†§Œî稧¤ë_›VÑ©/ŠÚ(“µð\¤´Žu­(U""""œ›)UrÊý•*Y‹R%"""òÀQªn/JÕãE©yà(U·¥êñ¢T‰ˆˆˆÝka_ |$̱z=,$ü±°Ú@Zÿ g�>ÐX¨×À¹^Û‹0�PKHHìcµb­oÅH c¥ÅZ“s3²2ª²"#2#ë­êSUçy¤Ws*+ÿDFþ‹ß©:=ïþŸÿý^”RJ)¥”RJ]Vc¨`?¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨Ú»wï^~úÓŸN¯ú¤ùÓr× T-¤ÿõýßÝÁjïü[„*àáõ¥kªD¨žÂV`ºE J„*ài´‚Ó­U"TO¥ P· T‰P<�y�ºe J„*à)}‰@•UÀÓñIÀ…Ê uë`%TO£ n¬„*à)l§[+¡ xx½�éÁJ¨ÚÞ tí`%TíÝ»w»Rš?-w B@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€Pp“Põ‹_übú à¹]=TýíßþíËŸýÙŸ½üä'?™¦<¯«†ª¨rùÄêº~õ«_½üöoÿöË_þå_NSÚöÌû¤~øýßÿý—ßüæ7ӏޫ…ª2P¥×,å°“*ý¼Ç-BÕßýÝß½¼{÷®8ž%œ]ªÒr—«/)íSÚ7¡àu\%TÕÕÿüÏÿLï2—BÌïýÞï½üÖoýÖøó· U©jí¹4Tååöî㭛ϛ֟¦•Û`é¢P•¾â瓪}Òà´5ÈÞ gyþù {ϼ5iÛóÐP¶©اí¤í¥íΕûWÛ·ZHHëù‹¿ø‹—ßýÝß=¶¡lSkkmI?Ï—ÍÒ6ó:ÒÏó¶®IóÖÖ—ím[mÞ5å2µ~MÊùö¶«ì�Ú|Ô]ª’Z°J¯©« rk×ZðÈÊ÷öÌÛR˜$µ'O+×ÓÔ—Ó×ÿyÓºS˜Ê_UÌó¦må¾ÚÚ�4}ÞþZ?'y�þç¾ë˜rýs{Ú–çÝÚn>'RsÍ÷§'TíiWÒê³ÖtÎ]ªÁªOäÎÊóšJ°6 .ßÛ3oKœ§ùÒüÙ|Ùr=yP_Û�Ty°ßüÏ·—~΃ö4€OÛH?§iy{[ûQ¶-Tå6¦yz¥åæëŸÛÓ¶VÌ¥v¥öÍ×WîÏ5BUoŸµ¦p.ªÁjÛÚÀ<’óxm@\¾·gÞ–r€�¥åR»Êð¢'$­ùæÓÓ =¯7½Nøô�%ä!1ÙÚ�4}ÞþVHó¥éù°h­¯T®nOÛ¶ú­õ~¹?=ó]«ÏZÓ8U‰`Õ–¤i`š¨5ùýÖóyóþ–Ç1m»¶?µ~­Í×Û®VŸµ¦pîê¡*ñ ðVÜ$T¼B@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P TUB@€P T=¹ï¿û‡—÷_ÿ/ï¾Jõ/Ÿ§éÀܯ_>Ž×‰kä>Ýæø¸?Þ#×"ð˜Þp¨úõËçOóêT_ÿøåç_OóÜ»{ù0¶ÿÇ/9Mš ‡ýúñËûoþa˜÷ÎR¿üÙËûñüìåûiR]~è6öûîäö¦ê8¹¾ù·i·wÉ@n¸þÆcº¬÷õöñ»G¹�<‚ �ÏÕï�ók¹¨ñÙño÷®{µÑW_Ô%Çàõ½ÍP•­S½†c§=ÊÍ|íA˜L�<o"T µ–„ªWpÉ@nªò=äì>2”cx%Ÿæ}âÒ{ÈìZžóT�_¾›Þªª^Á%¹|/©,3ÜGràzÿ0Ÿ|ß³+´/¾?®´#=;¦ëÛµqåc ð…¼½P5}åãé:BÕ™µ÷SþÊÑÊ€A¨z— äVBUòˆ×àݺò@û¡*Éë½V;ߤ+k€/äÍ…ªï?ýx¸Y Uw©»Í³�òh¡jhïçoÒÏ+ç`î¡ê ºd ·ª6ߧߕڷ U×n盤�Çôf?©Ú÷0�GÓ2ß÷³éûçS}Ýø*áÑô�bäù;—9ÿ—©Rýøåý7óvWmÇß”.+ â7ôIî£îA}íý¸à�¶¯ªÒ>ýtlGZß0_õëv;ŽËYÐ9lã°Lσ¿lo>n�P¸ªöôuyÞÎ÷5-3ÛÏôuµù:Ó?´°Xwôݦ öiê÷嵸ñDŒ_ïÍÇîPï‡~þþxŒö ä*×ß™Ú:÷ìkr8×Ê~^žÏëó­þ2iíºkž‹õýH÷§Ï›çô¡­‡eо»õñÉí¨Tß/Ú¶Ú±vNL}6ßîÖ53õÇ|™ÕþX½w$­ö5¦÷·À¾çêòc ðúÞ^¨:Þ°ÓM¿1X˜8iþip’oÆ1êôP¨?”‡eóöÒà)-3{�l/“4‡mXó�xåA8>¨æÛÈÛœ›ù!¹\rðZý»Ÿ£yžöïøpm>Ü+:Úv�·Y†’Üi‡}ÎÇgÙÏ;�Ëlp‘ûçP=þJ{×Â}s`´·¯§þ8ž·iÐ{¾Ÿã29lûlzoÑ¿Ùξ[uá> ýþ1…E»çnî×T³m^çå÷ äNm©/sêÿÃ1¾t_Óüy§}>ëãŽùšçÔ)pÕö#¿wÖŸó~<ÿù€z˜VöÏõó%ŽÏÖýqS>†�v4!5´åx~û6Tõš¹¤?VŽóA¥OF�é=ÇíKíÀ�{ƒ¡*™?†›~ë·«Gù�3ÝèËy�ˆrzD-,ù½•e†Y9àN¿™?m¿õ€ä6-í­ífÓ:7ƒM6¬ox .ûok;Í6—êënÿ6þ×CûæÓf}Ü{\ŽmKƒàû4ª­s¥ y[‹�Ѱ̮¾ž�·eŸÏÙC•m8´kmØÛw«"û´Üα݋sè´Üò·ç§}Ú7�[¹þËóqß¾öžÏ}óµÚ:ß÷e= ¤çˬõãЖ*Êíl^?_øøtßkJ¹-µuæí•ûwjÿ5sa4ïY«OÓ7�ÛÜ7€;÷FCÕÁùס†‡B%ÄÌÓ¤BuÚü­å¤öþÖ2gZÈÁÚ aeíÚ~y]­>[èèÔÖÝŸ°]r\rÛzÖ¿Ð\×Ù˜ÞuÔû:ŸµÁЩ¿ªý}l[qn]ÒwZß§Öq¨ïsõúœkíïªÆõ7™}_­ïkïù¼o¾ú¹öáÓá¿ç×ý´³óc³yž³uû·ÞÎ/z|’¼¾‹CUZv¹Æí¤i•¯Í^pÍTûp®Õyzóø´ú¤u.¯·È¾5—¹èX¼¾7ª¦¿]oâ©jЕ‡sVyHW1g–ƒ–ÞÒÁ¥ƒ†ÖryÀpÉÃlH~÷³ÃWkÆ�Æa?ú÷e°Úæ¹zH9>¬‡�ÍòÓ€“KŽKÛj¡jP`äm5F½}½~Þ®ÜêË^Ôw]®³OI­�Ûí¾äÜÏmiTm€=êÛ×Þó¹w¾<À�ïòiŸ§ýŸ·ÊüÛý8¨]+×Ïm�Oe™‹¯çÜŽJ]¼oËkæâþؼw´ú¤1=|Ü®¸owN¨:ZûíòòÁ°Tγòð-k±Lïäõ€t= ‹ëæ¹fÞo‡s;+ÛXÓ=ÐÉýT>˜‹¶ íXÿzÉFÍÛÑݶšV{“S{ŽýÔ<{ûzý¼]Uµsñ¾[uá>­\#ËA[m_J=ó”r[†ÃÑTCÛÓßç,÷ï¾öœÏIï|�{Ôtž·S¿•¯ûû¨rÞ­^?·>>•e.¾žkíÈÓ†ª\³Ç÷¶ª<.—ôGóÞ‘µú¤1½ë¸uÔ5ö àÎ U…6Κ•AÂB9Ïé�3šÖêø/í}˜ •‡ïöo—N¿%_þ]Z~¯;Tuõs²ÑOéo†�娮q}Ã|‹�ážã2ج¬ÉÛlôm^wޟƶö÷õzæe. U»únÅÅû´r�|ùPÕ·Ìþ}�¬žÏ3›ó•ûxhÿñøOŸLÚ0Í{vîôöÑÔ/óeW¯ŸW8>¹=�k£­ÕŽ<½<†§é×}4æÙ¼Oµú¤1½ë¸}¡}¸sBU©òðê ¡Tyøì)ùaÒ»LdÐP>¸:öqaýá—ju XÕ¹ÿÝ¢Ùoðgó^·+k¶÷ë8àNë¯në’¾^?¦y›ý¡ê¾k ìSc™dÙÆžój{½K{–¹d_Kõóy©=ßYxïuó>™ög<ï?ŸŸ=ý8¨�¿«×Ï+Ÿî{Hiå8æuïí¿fý±ÚÏI«O.[ßÝ7€;'T•*GpºÉ·yP4_n}ÐZw6¸Þ´òðé4Ì÷õì·Ô½Ö~ùá¹o�µ~,íë×å è’ã²=XYÓ3�˜õ×ô�œoë’¾ž–¹b¨º¨ïšûT]æ 6ÐÛ<¯ò/SVÖ»´Ý–“Köµ¦~\–óÍÎã±OŠsã8­q?è¹?UÏ‘®Áù<>=÷ǪõþÏû1ßÏK®™‹û#ïW«ŸšýØè«�ãöE÷ àν¹Põý§ µ¿w4ÿIÜ<}¨ÊWošÿŒðl¹ößB”Ì~Z¦öÐIÿ¤úiþƃ0é4LËóô ÔJ­ÁàùßxlgŽƒ‚´ÿ˯��úº«Ë5újë¸}Ñ}¸oo0T�0é¦~üãòã´Ú`aºÑ§ð‘Ë6„«ô]ñÓr•Dr|€æÉß=?ý‹_µKc™Åü�a’×±1h8þf5Õ�aÞŸç}2š &¦vÌÿ”‹ù÷—<ÿ-CÕ`íxìïëÓy{½P5¸äœn¸xŸjíšTCÕàì¼ΧñÉçÌà×Ë5Ûm™Û·¯½çóÎó~pjGå8Í�íf:¬ãüþt˜Ö\ïÊõóE�OnÏÕCÕ ,/¸fÎûc:¶=ý1ÿå̱ëzÿég�>iôUÇq‹ïÛ5Ž5Àë{s¡*ý&ìã0è8¤nìíÿ ð|púë—ÏŸæˆá!°õ?ÎÛœ-sxø¬,7ý¿nΖIŸï柲]aÐp| VB�ÎÿIúC¤mægm`·é‚>Ûq|�* 4ÏÿÇ¿3{¶Ñ3¸hêU§cZßÖ¾¾žŸ·Ky™Ý¡*¹äœn¸hŸV\­P•¤Ozóàm¬éšê,/l·¥´g_{ÏçÝçý0ÿa¾Z»O!mõºmÝŸ*Ÿ.�:¯Ÿ/v|zï� =í8õáÙµuÑ=í²þh/×ê“ÆôÞûÞÜ7€{õöBÕE¦Îîð¸xpÀë<î�PÕåyCUþºÙEŸ&ð „*€{#TuyÖPÕú*÷K¨¸7BU—ç UëSÀ}ªî�PÕå‰BÕøGí³?l÷·TF¨¸7BU—ç Uù_[zÿMã_êàŽ U÷F¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ >x÷òîýÇ—ï¯y}Ž ·òçV¤�Ïqí|~ùðîÝËû�î_Š{.oÕÛ UŸ?¼¼n°=üxcæýðyšðšr»+•Ú—ÛÚ®㥽œË”“ûã˜p+¯wn}ÿòñ}ß¶#m<_¶›}®½¾¡êKsϽ�ï?¾¼/ÆmÆo÷ç톪¡VÃÒì¾]¨:Üì»Ö?¶ûýK×µ3µ½ºÞÚzò¾ÞnGŸVùðð0‰Øq=ìà˜p+¯wnÕIýú‰´ñ|Ù/ªnqªnÓ¯ÉõÏ9ÆqZm x8·«Òë�†ª÷/ïÓÍ|å üþãûá¦0ÌwËu-ü”nªãþö®Ÿ£òááa°çzØÁ1áVîêÜj\?‘6~ñý»É=@¨ºÕ½õç c_·ÇhcŸýº7ª>~\ )ù&üñF¿Ý™ì¹ÑÝ8TÝì¦ûäʇ‡‡IÀ�ÎAÇ„[¹«s«qýDÚøÅ÷ï&÷¡êfÏ÷œs4Œ}½6œ>±ºúAf�·ª¾_¹ÑŽó¤¿A:ÌS;GÇ›F:��5ýÍRa1ß´²åò§÷ªnªÆéÛ7ÝÖþMÛ>¾_ÜX�7Ûi{éç�yÚ4ÏIåë!¬?¿¿Ùö…iû+Ë·×x�-¶]œ/Õå¦}=?G§65ÛÞz¿>}³O¾P/ûg9ÿržú5W:¶qz�õ¯ozXkãþQѳ­c;‹>ïÛÆŽsµsý×jóqžéõÉÔæé½Ã§åiEçý(ÏÅÆù´Ýîë]#ó}ëÝÏRu¹i_×®ýŶçmœµó8_gÿÍ•m+_G�Yï>ŒÊuÍÚq2õÑq¾=×j¹ìPÕ>ÚšoãýŽýXôE­ßVÞŸÛì×Áržåµ^Z[ïø^Ú¯žs®ë¸.möÁÆz�m|…±ÈEÆí­�}Ò¸OÏÛÚ{|{ûb°½�i¹Å9Кþ˜Þp¨Jçh~ ÌÍðáf|~¬§‡Gõ„šŸðµoXv¾²é¢ì:—fíÞ´¶ÞÆzê}1׿?§‡×òb9^xó妛΢½å~\ºþž¶× í:Žý|Zyã)_çeΧMóÍ�C帎I}}í¦/ûä œÞÑ'_º¿›çmg6\|L’©Mçû7-?ÔùùQÓ¿­c_Îçm]¥ÞsµkýWnskŠã}<ßç÷¡|¾/îO‹s3ém÷õ®‘qÝùýÎý\—;ïמkÿlÛIc;kÇhëü-·Q¾Ž³Þ}X.[9†Ó<_«CŸÔΧ³i­mä×�ï·÷cëœÛ>'«¦í.g;ìãùú†©ã9SÜ këí>ç6û£¦£:Ö{lã|¹ÞkøÒõGŒÛ\?&Ëq\àøööE÷6ZǶç˜?Ž7ª–'ÇàìÄ=œ,ó÷Ç¥8yÊc¹ìBmû-Ó ¾¨Z[ÖÖ;ßÿ¬uñœÙÚŸÆ…Qlïp¡Í/ú¤¾ìxƒ8î_dýÇ¢Syü÷¾>©Ÿ/óNZöÃÇt,gû3îo¹s�~jl¯Ý'¯Ðß�ó¶¿ë.?&+óNm= TìÞVymVæëUÝïŽõ_¿Íõ}8¿¾§×‹uµ¶ÑØ¿®v×Û³œ¾}Ÿo³o?—.»öû»vý\x^•Û(__ý˜U÷¡ÑÖÚ½h¾®¬óZ­ÙloaýýžýØ:çîëÞ;çúŽëÒVì8_Ï®ú²×‹Œ}½Ö/S;Ë6\||{úbÏ6ZÛìiËãxÛ¡j|y~BŒ¯�·¼x—¿¹Ã �/¢éDY»7¤ªÍÍÌÚzÇõ¤vÍ«g½ûÓÚf1½už÷]RôuhýÇ¢)/;«•Êùë=çË´ìqÓ²©½çç`yC[jÝ Êé·<žöwu›ûú°æòc²6ïúzöµ½Þ—íéKûÎÕìòþéoóò8-·Ó:–}Ó÷´ûJ×Èà’ý¬×sÜnZfûÚ_ô}ãší=F5å<åë¾csRNïÚ‡®{ÑZ?÷ƒƒµkèüx,m¼ßµ[çÜö9YUÝöz¿´Žá™Æ>u�s]ýQ³Ñ�ëmµq¹ßE?×±qýëÇý¼íñã»Ù»¶1·eÇ5¦?¦7ªÎNÔÅÅr8aÊ×­è°îó“t¼°†eÆ*OšÖÅYsÕPÕ¹žŠæþLÛ<¾WTžµy£)Û\öetýƒÕcQ‘çŸïrýë¯wž/ó×éçi=i�‡un>Íõ�öݸò>.úäú»~Þî¿æJ—“µy7Ö3Ú×öV_®õq–ûz¾­r¹¾õߪ͇õ�m帵ò}Ó÷´ûJ×Èà’ý¬šÏ—~žÖ™Öا嵿Øvõú©Ì7iMŸ+ç)_ÇŽYç>t݋֎ÿƹ1ÛRÌwÖ¾Fÿu¾_¶?×|¹Ü–±*+Üz¡Ú¶=×LCcŸÇuRëÏã~µµ[Í>è\o«�‹}*û!ºþK�Û]»�oó ÇwZG³/vmcß}÷Q U³:ÞðÏ.‚â„Ú8�Z’Q¾çë//Þ5‹v¯X[ïžõ¬)÷§s_Ön4ó÷ÆŸç+»Âú�ʶ×4¶W®ýõÎóe¶Í´žãr阥uŽïo» o\eŸ4ö¿tµþNªÛ \s“Ë�ÉÚ¼ëë9Ø×öV_nöqãX•Ëõ­ÿvmžO.Ü:–}Ó÷´ûJ×Èà’ý¬šôÌq?V®ýŶ;σ¬5}®œ§|;f�ûÐØ¯sÁkµ§ï¶Ú}¿fZ¦yœ¶ÞϪÛÞw­W5ö©uníêÏ^et®·ÕÆdþÞøó|eWXÿEÆí®<ÿ§v�ŽçŽï`µ/vmãÂû’iZúW�Ÿ‡f~¬ÛJljQn»óâÕÚݲ¶Þ=ëÙr¶®¾ cõF“×÷¹vó¸Âúç¶ú¡Ú‡Sfë/··õú¤¶?‡i‡ÊÖ¶|3Mÿ€Ž}«oóp.÷ŸŸ_¸¿“Æy»¯—.?&ÓëÚ¼ãþ´&Ùž¶·æm¯crṚ•ÓoÖæÕë;íFß@<+§ÇÛ½÷i¬gc?ëmÜsí/¶½óúi÷×I9OùúêÇlí\^;.yžÚþô\«]×ÐV;¢ï7çÜÂÖûÉÎs£»­¡sîÂþ¨9냾õ¶÷}°z _aý—ûºuœ§6Û ßdµ/öm£>oÇ}÷�U£é .ËP•o"Õ“÷lùaÙâ$YžP‡õo ÌF=7άq£íYÏ™Žý×]nwXn6OûLáø¯FÕæ¹xý=Ç¢t86‹Bš¶²½Åz»Ï—ƒqБþ§ÓgóO7§a=ýçʼŸNËŸöç–Çó’þN}¾ØÇ�}XZl{Ïú¦>8»áçåkm-íØV«�ZÓO.;W³Åô›µyvV–‰Ð÷´{˜8¶ãÔe—]#—ìgËÞk¹íúõSoc{úÜÖþF�Yï> 3Ž}p~8†y爮վk¨º�´l~ÝùþÙÛgû1›wrÞG[ï· Ë Û]ôÁžk¦ª¾ÞV›Ó{ŽëBGt¬w½ß×ÝõÇ"ÓõÜÜîŠñXUÆn�c8 ßdã~¶g‹~›­»8¦�J¨šŒ7ûÅA=Ü0–Çzv"äZœl‡e×çL'ÙXk'U£ÝUÓI^]Ýžõœ¹`¦š·cýF6‡b™3­¿³í¥|³˜*=8Êõo½>è9_&Ó6ˇÔf¿òü¹>|žÚp\Á-�ç…ý�Ì·w¶³;ú°p­cr>ßa×jYß¶êílO?sÁ¹šEúgo›óyYë·Ã{Ûñ¬>½ÿ¸^ã¹d?›v^ûÕmW®Ÿ½Çh®œ§|½ïØ,§÷îÃhã^4Š\«×ÐÁò¼8oÇÆû«û±uÎmŸ“M7¸·Ž¢ç\Ïq=ÓÙëmµ1k]wG­êë•í6•çö±¶ÆsÁã;È}Ѿ†®yß}lo/T„ìOòøbZƒígóVöx~îgý„*€½ÆßR^ò‰ï[ö\¿‘l{+û ¥x,îgûU-Õï±û„j�ÃC9õÛs?˜ßÊ~ÏÏýì2B@€P TUB@€P TUoÐçï^Þ½ÿøâµÃµ9·€·H¨zƒ |¹•‹Î­Ï¦ÿÉ`.ÿ³Aà±U_Üç—ÃÀñCרqϼý„*neÿ¹õýËÇóù‡×ï+à±U_Ú÷_Þ÷¥=óî Tq+W9·ÆóþýËG'(𠄪/M¨â‰]åÜ¿(T�ãM…ªê€o .ïÏFpÓW�Ži&%iVEÒ9®{Z_žo¾ÞqžÙ{c5SϼËyú¾2Uí‡Aÿú_K<Í—À‡içýØÖ³­c;Wú´í:ÇlîZm>Î3½>™Ú<½÷ýÇ÷Ó6ŠþÎûQl£ÿ\*Û]žïY}úb}³÷çûÖ»Ÿg¦}ê=�îÁÛú¤ªòðÃÀµàË4,w>È[ˆã@s¾žéðÏÆ¤Ó q1~­iÎ; ²‹Aé¡ Û¿á_vw¬/äÏuôo†û·Õݧ5×o·»7TÕÂа�Ùrãºóû�ûyT=·îßÛ UÓ ³Xø˜s³ê8,›îlð˜_/Me°ÚPÖ4æ-·}ÒŸ«¶½s}Íy«ƒú¥ÝÛêéÓNÕýîXÿõÛ\߇1DͶsUåºZÛhì_W»ëíYN?\?‹ÙfηٷŸ­6Ü¿7ª¦AßÙ 1 NÏ‹«ƒ¾a¾cu `Óáj çñ=�pÏúÖæ]_ÏÁ¾¶w÷iÓ5ŽÙmÚ¼œ›ƒÉd1½1à¯ê 'ƒàI¹|ÿú–û}4~±ªöµ½5o{“+³›µyì³áœû<�{ÅB±Pu�v‚Ùêù”÷aZð’ýxto0TMƒÏ÷ï_ÞŸ þ¦�æ",–ãÀ1M›-ßÀ.§¯‚p®1ïÊíÚµl—mÚ³¾)<� ´óòµ¶–vlkÙw­é'W>f7kó霫- U{Ú=LÛqê²YÛŽ‡~�÷A¹_—ìçÁò˜<Š7ªò`³ ‡AiåS¤YhH•–ëL6¦ç`’jkÙœw6PÍÕ°žÛøn­¯è�Ã|{Âbß¶võiéÚÇlxu‹6çs®ÖoáP5ê?®¹-¹>|ž–=žwSð™W±®Köó@¨×Û UÜÀaPlL¼O+ =›·²ŸÀÛ$TqùïfZDPQ~ô¬ÞÊ~o•PÅ.é‡ÅW¸¦¯(ö}õ�̧TÏA¨bŸòï©Æò Õ‡�‘úí¹ƒÆ[ÙO¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨xS¡ê«¯¾ºj¼¹Pu-B�Uª€D¨º�P$BÕ…„*îÁçï^ÞýàG/ßO¯øò„ªNõWõò'ò'/¿ùÍoÆ×këúþG?xy÷îÃËçé5ÜŠPðú„ª)P¥eÿàþàå?þã?ÆiB÷@¨x}BÕ†Z J„*î�Pðú„ª­@•UÜ¡ àõ½ÙPõOÿôOcµ¬ªä¡j¿›Wk™Ï/ÎæûÁË�¾?LûÁ�ú†Ó=Û:пÿÑËfóömãû—ýà´ÌXη°wý×jóqžéõÉÔæé½Óq+ú;ïG±�rÿ²ívOÛ],_Ÿ¾Xßìýù¾õì'×÷&CÕ¯~õ«ñçTµ`µ¨’X¨šíÅø0xN�iš�ä�üÙ@û4èß<ýÛ:Þçó~þ0Nk䇓a¾ó¶,C_ÿú¯ÜæÖ>L}›§Ž[ZßìØMóüàÅ1ÍÓ+û¼ÝîÞPu C§õ Û˜-7®;¿ß¹Ÿ\×›þ¤ª¬zU Ugá3ËÁvsÞê ~i÷¶ÊPW™¯W¹íÞõ_¿Íõ}�Ól;‡ãV®«µ�Æþuµ»ÞžåôCH[Ì6s¾Í¾ýàºÞl¨JÊ`Õ¨’ËCÕòœ¹óe׿]_ÏÁžm•ô“vX(Mƒúa›Çš-×·þÛ´yyL–Ûi·¾é{Úݪr.]vÉ~p]o:T%ó`Õ¨’[…ªa”Ü9Pï,ïÙVzy>@ÏZÓçÆyŠm•Ëõ­ÿVm>¬÷ô!Ðùz’¾ðtr>}O»{CÕÁ¸/úǪ½·s?¸®7ª’¬zUr«PÕ?PßÄ�öl+�¿ËúAkúQãovÊåúÖ»6ϧ�? n·¾é{Ú½/TMý<߯Kö€ëª&?ûÙϺUry¨ª„ÊAõôº6ïø ÄV¨Ú³­ö¼íuLª¡jÙöÞõ߬ÍcŸýàåGŸS{—_©‹…ªk´ûÌVCPÞ‡iÁKö€ëª. U9„”ƒáq€\.7…§³�v^~¨­Pµg[­PК~² ‡õŸ/×½þ›µy 7•u'ÑPµ§ÝÃı§.›µí8qè×"`•ûuÉ~p]BÕ…¶CÕ4¨�×Ùw6ð­¾?3 Q§ùÖ¿nv®o[ûJ¡hcjW_è¹v´­5=›Z¿…CÕ¨ÿ¸–çɇÏÓ²óP5{¬b]—ì'×%T]èšëºÌaÀ]|�Á†V@z6oe?îÁ› U׬WUüm =ÊO‚žÕ[ÙO€ûð¦BÕ#JŸ8,¾Â5ý=ޝvíãS*nA¨ºwåßS�åª=!#õÛs�·²Ÿ÷F¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ªxH?ýéO•RJ½rp Tñ�<Ì^—û0À‰PÅCò0x]îÃ'BÉÃàu¹œU<$s€×å> p"Tñ�<Ì^—û0À‰PÅCò0x]îÃ'BÉÃàu¹œU<$s€×å> p"Tñ�<Ì^—û0À‰PÅCÚÿ0ÿù˧þðå‡?ü4ü@”Pp"Tñ�v?Ìþéå‡ß~ûòí¬>IUaBÀ‰PÅCÚ÷0ÿ¯—¿ÿö‡/ßþý Ùê‡C¸úûa BÀ‰PÅCÚõ0ÿ¯¿ùö‡ß¾ ™êð‰Uþ€‹ U'o2T}úôiúiií=îÇž‡ùýý·³O§NŸZ•ŽŸb�!,ýýÕ¡jó&ãü³ùj¯Õ³Îö§g‡¶æ÷Æý·‘ÿ>lªü}ÆbÇé…ívOÛ],_Ÿ¾XŸïW› TœU¡ê1ô?ÌdbNáäÜ1ÌÎøÉVùwXS¨)‚ÐaùóOÁºÖYÝÆ` Iyú¡Ýi}³¶Oó|ûm±OyúY ìmwo¨:}Ã6ËÏH¨8ª BÕcè~˜×¾îW„•¬Šjcœ¯&�y7×¹\.9ÿ„mz½XWkËvö·»ÞžåôCH[̼ BÀ‰PUªCïü$ê¡¡:Χ/?ùš+?ë[çr¹Úv–óôMßÓîÞP5½®:àù U'BU¡ö^šVVië½üßÖï¾Pu4õim�ç#TœU…½¡¡õþ|úÖ:æzÖ×Rγw]Ñ忤í‡ùFÈïÏ@ojÍWÛfï:Gùï¿~žÂÉò+u±Pu�v‚Y»Oµ¿až’Pp"TjÁbÏüÙ|úÚò¥žõÍ¥éóš[[¦&ºü—´ù0oücgŠÐ€ŸÈŒóá¦{�£)Ü4>퉆ª=í&Ží8õ߬mljCÈ*:¸µ¿ÀóªN„ªBí½4m^så{óÊæ?oiÍ[›^NÛz�õNO¯[õÚ¶æÕ °pþÉËÅ(W÷²íé‡ Tÿš^8T�úÚ�ä¶äúôóò­©ÿæÕXð|„*€¡ª°ÊPÑ0zæÉZó–ÓkóõÌ“D¶q/žõaÞ H÷F¨8ª =Ab>ÏÞù·´æ-§×æë™'‰lã^<çüü$à~ U'o2T%µÀpé´½¯×´æíÙÆÖ<Ùžé[ël­ëÖžñaîS*à‘U'o6T%)Ì«¦œ§w¾¹Ö25­ykÓó¶ò{å<µe’K¦Ïk®µÌ­=ÓÃüô·Kð8„*€“7ªx\æ¯Ë}àD¨â!y˜¼.÷a€¡Š‡äaðºÜ‡N„*’‡9Àër8ªxHæ¯Ë}àD¨â!y˜¼.÷a€¡Š‡äaðºÜ‡N„*’‡9Àër8ªxHæ¯Ë}àD¨â!y˜¼.÷a€¡Š‡äaðºÜ‡N„*’‡9Àër8ªxHæ¯Ë}àD¨â!y˜¼.÷a€¡Š‡äaðºÜ‡N„*’‡9Àër8ªxHéa®”Rêu €¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ @¨ª„*€¡ àªþýßÿ])¥”RJ)¥ÔÎ:†ªÿþïÿVJ)¥”RJ)µ³„*¥”RJ)¥” ”P¥”RJ)¥”R�ª”RJ)¥”R*PB•RJ)¥”RJJ¨RJ)¥”RJ©@ UJ)¥”RJ)(¡J)¥”RJ)¥%T)¥”RJ)¥T „*¥”RJ)¥” ”P¥”RJ)¥”R�ª”RJ)¥”R*PB•RJ)¥”RJJ¨RJ)¥”RJ©@ UJ)¥”RwZïþßa ¦î²jÇk«þæoþFÝiՎמª”RJ)¥î´jƒyuU;^[•ï¿üå/Õ�•P¥”RJ)õÄ•ðµ� z�ªž¯„*¥”RJ©'.¡êþJ¨z¾ª”RJ)¥ž¸„ªû+¡êùJ¨RJ)¥”zâªî¯„ªç+¡J)¥”Rê‰K¨º¿ªž¯„*¥”RJ©'.¡êþJ¨z¾ª”RJ)¥ž¸„ªû+¡êùJ¨RJ)¥”zâªî¯„ªç+¡J)¥”Rê‰K¨º¿ªn_Ÿ¾~÷òî«o^¾«¼w‹ª”RJ)¥ž¸î&T}úúåÝ»µ�î§—¯‡÷¿úæ»Ê{ÏU�ª¾ûæ«Ãñ;«¯^¾ù®>ÿk—P¥”RJ)¥®Vwª†úúSåý›…ªÃzëÛ|�z¬Puè¿wï¾~ùT¼÷ék¡*—P¥”RJ)õÄu_¡êë—¯Ó`·2@¿Y¨úî›—¯„ª k T_ª¼wß%T)¥”RJ©«Õ½…ªOÍ�ºPÕS_2T¾òW À÷_B•RJ)¥”ºZÝ_¨Êƒõò«c�P5…¢ãßñÌÊùï|ÎÓ)´�ëù²ÓôÓ¼¯S�ª¾{ùæ«=ý5Í¿Ò×Ç SÓz�ÞXßÊy‘J¨RJ)¥”RW«{ UÇóÙ ·ª¦�óiÚr _žƒiŸT]V‹¾ß¨áøžÏ»<žÇ�;?>ãyQŸ˜ÎBÙ°¾üú‚óâÖ%T)¥”RJ=qÝg¨jvÊAør <Ö¸žù§\‡åÆõŒë,>[lçõë‘BU¤ßª�wñ åÞ@Ôw^UJ)¥”Rêju·¡j¨Ã ;O+BUkP_›žÖýÕ×/_ƒíóOK†ª.«‹úm <Ãrµ¯åµ‚ÎùôYH.æ«ó¼ª”RJ)¥ÔÕêžCÕy�ª‡ª³ú¬ÊAus-T]XÅñبC@>Ÿ¿<&­ct6}ëxužÍóáF%T)¥”RJ=qÝw¨šÿ£�ŸTÕjúê×W_Uæª.®î`Òèã[†ª­ã)T)¥”RJ©«Õ½‡ªãWƾBÑ0X>}ÒÑøÛ™E;.VÛ†PuyM}·ùiUµ�óqݪ6�{ßy!T)¥”RJ©«Õý‡ª¡¦AyúúÖÙ~\¦¬!ª¨ص÷¾¯±}‰z˜P•j:õ0”ÿaˆCÏû}<.År}¡j¨¼Íò8æ×½çEe[·*¡J)¥”Rê‰ë!BÕPy¾?y€=«<˜>,Sÿ×þjál¬³�úëÔC…ª±¦°šûðX³ã9 Æ©Rÿ—Á¦têÓ§ 6«³µr^¤jmëV%T)¥”RJ=qÝM¨RÇz¼P¥¶J¨RJ)¥”zâªî¯„ªç+¡J)¥”Rê‰K¨º¿ªž¯„*¥”RJ©'.¡êþJ¨z¾ª”RJ)¥ž¸„ªû+¡êùJ¨RJ)¥”zâªî¯„ªç+¡J)¥”Rê‰K¨º¿ªž¯„*¥”RJ©'®<€W÷WµãµUBÕ}–P¥”RJ)õÄUÌ«û¨ÚñÚª4xW÷Yµãµ§„*¥”RJ)¥” ”P¥”RJ)¥”R�ª”RJ)¥”R*PB•RJ)¥”RJJ¨RJ)¥”RJ©@ UJ)¥”RJ)(¡J)¥”RJ)¥%T)¥”RJ)¥T „*¥”RJ)¥” ”P¥”RJ)¥”R�ª”RJ)¥”R*PB•RJ)¥”RJJ¨RJ)¥”RJ©@ UJ)¥”RJ)(¡J)¥”RJ)¥u UJ)¥”RJ)¥.©ÿóòÿ¾[Ó†É? IEND®B`‚MEGAcmd-2.5.2_Linux/contrib/docs/pics/ftpMenuWin.png000066400000000000000000000375751516543156300222560ustar00rootroot00000000000000‰PNG  IHDRØ¿û(Æ{sRGB®ÎégAMA±� üa pHYs%%IR$ð?IDATx^í�{”eW]çë�ùǵìµf¹F§]+3®åh´»Ô *„4RQ ’¤‘„öAQ”Ò­¼Z'*Éj?f4vG�GŒ�ê4¯D !�„¤S «IlcvÁ3#£ì¹ßsïïÖïîÚçžs«nÕ®Ú÷ó[ë“:gïß~œS•ý©}îíºSŸøûJÇâk_ûZAÄZ‚…‰ÀÁ±^�`a"°@°A¬W X˜,,Aë& KÄz‚…‰ÀÁ±^1uÛ?>úØ?…�ÿÝד @ X X‚ Ö+¦ž÷'÷…K¯~{xýusÙB©X X‚ Ö+¦~êîvÞÂù·~5\ðú?/88¿ñO×D¶×¼`*LýðáðÞDÀZb�` ‚X¯˜znG°Ï>Ñì�!œwGçÞÂÓÞó•ðô«ï »_û§á¾îM�²­Ä95ŒKÃ5–×(ØGÃ+¸M^o»41�©ð¯}4�ßὯݑh³#¼ò#é|ØÎò"íÈVÂOîð”÷…p¶xý¸Koù.rP°Ý×HSý %%Ø�Ýk‡!s…²°@°A¬WL�ÿÜŸ OþÅW…'ï¿=<åÆ'*™>µÃ9·†°£ÃÓÄñÎñÖî5ظ<¹ƒM=îFO¦ƒD} ؉ÁÁ±^Qý-â÷Þ÷h¸âàë‚d{ö‹^Î9p{xú»Ÿ3·ußQü£fÞ˜K°®ÌDÙæ5ÓšGătwÇ<". KÄzÅ”þx„þˆÄ}ùxÅM·Þ~ý·® ?zþ®pNG¶3‡nç½÷‰ðcoÊ+Ø>½þkë�V‚m ŠÁÁ±^1õɇN…ù›°ðÀ©ŠO>ü×ááS�†·Ý|Gx×ûî ¯ø­W‡gýÔîpÎÅ¿¼1+Úȳ¥`m¾ìbËÆÁ±^1õÆ›N„?¼îmá†wÞbÙ.<øWáþ‡?î:ù™ê1òŸÝs2¹x 0vÁ.Çp£€E[ÁŠ*·nn-û€ �‚%b½bê£�.†�?þåð¡Ï|9xÙ¾íÝ·†ÿñ†·†ÃGow<øwÉE+ÉZVòó4ÉUŒ"Ø {3U „¢,,AëS÷êÓá#Ÿz4|ä¡ÇÂGùûðÑÇŸH.P› KÄzÅÔŸ\ÿöpï}Ÿ÷ýÅ_‡…ÿ:|HüŧÃGO#ÚÕòÖ·¾ fXLÍß÷ÉêõÖûþâÑJ°zã-áú›çÃ'?›”´G7ÿK_úH£`çn>®Ï�aîæ{ wÜŸ¬  P.�‚M‰Æ‚(› P.6# \l�ÿêW¿¾þõ¯‡û· ßøÆ7zzE°k ‚(­ñ�<òHøìg?¾øÅ/V’E°ë‚(­ñ·Þzk¸ï¾û*É~å+_©v±v A°å¢5þÚk¯­$«�¬Êì:�`ÊEküáÇÃM7Ý~øáê1ñ¿þë¿öôÚlï+±�`ÊEküÕW_n¼ñÆðÐC!Øõ  P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚Ý|,..†™™™055U}Õy*ÁfŒÒ»ÿþJ<)¶nÝNŸ>�l·™@°Ð›1ìæÁ@[lÆ(Y°ú�Jålv,´Áf »ù@°Ð›1&Q°>gvv¶_®|+—¸üñ¾ÈôxùäÉ“Õ×TÛ¸_�Ÿ‡—£ú:uêTÿ\¤„éç%®¼òÊ~›T>€�`3FÉ‚�1yÉmÙ²%,,, ”¥òêð’6¶Ivœ} ›«åxlƘDÁ*OR•\­\»B›p•ËP}«\o”²�¬Ï�ñímìº>ý|ìÍX~+S®¿Fë×� ` ØŒQ²`m×XGJÆ&<áeè·�ÇIõ›¬ï3U®~­}ݼ¬_«ð ØŒ1É‚õ¢±Dëd(âqâ¾bL„u}¦Ê½`ýµø\ë×ê<6c°ƒ¡ý³N†q[�ãeèûбÊL„u}¦Ê}ŸÏúT�r|¿VàA°cRë_ó”M„¾�—ž0É¥^/µqýk²>o%‚M�£\�†�`3FÉ‚M¡²¶2óyu¤¤kè|Û¶mÕ±‰05¶Úו{ñ§°~íú<�‚ýÜ¿øû ŸüÂ?…×Þú±pìc�„¿ùßO„¯|ýÿõRˆ•Ƥ vnnn@š&ȸ­râûæ7¿¹_/â²ÎãúÕ<"¶~½d%íùùù~®õk¹žFÁÞöèçÃMù¹pÓß ÏyÃ]á¿ÿžpÓ§þ&œøÌçÃ#ÿð¿{iÄJ¢4ÁŽ“aÒØ 4 öC÷Â#_úZxô‰ÿ.xÃÝá'—Î͇wœütøÀßþ}¸öÄý½TbÔ@°õ XØì4 ö¡ÿóµpêKÿþð¾ÓáyoýpxÖëÞßÙž7¼ø-w†w}ò¯Ão¿ãÎðàþ±—NŒ¶ ›�FÁþÚ�…‹Þþ`ø©¹�‡]×}8œÿÇ'Â3¯~_øÑýï×~ø¡pÿþ9ÜúÈãáËÿòõ^“ÉŽGïS;‡G{çÃÁÖƒ``³Ó(ØçÝx*\ôŽO…Ÿ:ú‰ðìëÂo˜ÏüÃ[;‚}gøoïº7<ð�_ wÿÍçÃ'ÿîõšÔÄm—V‹e½|n —vêwn£¦�D³`ßõ—�ì_„çíî`/øã»;‚íî`ÿýŸúç'Âþv1ÜóØçzMjÂÛáÒÛze±RÁvÛ¥û\ÿ@° {ñ; Ï}Ûá'¯ÿhØu퟇ó_wW8ïnçþÞÛÃy¿s}G°_üìbxû�ôšÔD%ØKÃ¥—J²—v´Ç ûèá°ÁÀ£Q°{�ÿUxÎÜǪÇþñÞð×Ü~ü¼;̼öhxêoW»#¼ú�w„ó^y ×¤&z‚½­'Ò©eFD°P�‚}øôçÂ>x*\rt!<ëuw†ó®¾¥zýõG®zK8û×ÿ(<éòýaú…W„Ùÿþ‡½&5ÑlOBS; KkÛ¨=^öòº­Ú GtL[•Ç’ëõ3Øÿ£áðŽnËû]¾ãî�½¶œ¬õ_‚(—FÁ>õš�„—Ýð¡pÝ�·†£óŸ/zómaæ5GÃ9¿ùÆðÃ/ûƒð/~uøÞç¿<üîuïì5© 'ؾØD”ì2)&„˜ÚÁVc ¼+õô˜Km{»ë¤ ûëK8’s,ØT[  P.�‚�~Oÿ妾³Ã…¯½!ÌÝõá°ã·ßžòÊ#á¬Ë/LÿÂởwyøìâ?ôšÔÄ€`;±LŒ±`Ó»ËeòL 6!k‰îÒÃÊusˆæTÉ0’k7–Ï¥+Îå;[/ØôN}),@¹4 öÌ? A|O‡ �œW¼ù]•\pÏ�ðý/zUøžŸ}ióîU ¶ƒ’Ф˜g'âòš¼ªï~¡ú–èºcXñàns¹”}teÙ,cëó¶*?1 \Zí`Å÷uØu͉°÷ê·„'íÙ¾ÿ—^U=þ�?º¾—Ú ÁJ--Øê1l‚&ÁŒ§ãž %ÆîÝ]é’P‡ 6žÿPÁÚ<‡Ùµ \{Ö{C8ëæžÔá9t"¼äЛÂ÷ýâo…ïý¹—‡#ï¼µ—Ö"’‚5!-í.cÁ68ª>Ï•/Iµ&ÛªÞ?¾ïÖÞüT+ìN X€riì“o áÉï á)žûºá꣮¿ýá‹_þj/¥eÔ¶£¤ÞžvTB\RÍk°qÔŠØv¨‡;âŒ_³íœW¬¨“fj.�‚ÕIƒdW#Ø#GŽÀ:�ZƒÛÐ(Ø�MªxÚñž×ìƒÿU¯jĨl'z’\&£ž åÙÙiˆ­~çÙ•]GÜù=Y¦ÚØ<"qV2�æÞJ°v^3?v°åÒ(Øs;V?Úá§_¿F‚íDWb õ$ëY¶[õ9¾²'̸O“Þò]¯bIÀ}"m+X…�—#X€riÞÁ^~0œ{äÏÃ3ïáçþx‚%–‚(—FÁžXøDøƒ?¾.¼òÕÂÅ—íC°c  P.�‚ýà'ÿ2\Ó-áo?÷¹ð/_ç3_Ç \šw°ó÷ô‰q‚(—FÁö¾k \lÆ@°å‚`3‚(›1ÖR°÷Ýw_8pà@¸ä’K³žõ¬ «Lu©60>lÆX Á>öØcáÊ+¯¬„úäç^¾ã’#á[^ôÎðÀÑsûÿç�…_ñyU�r”›êV‚Íãìƒ>n¹å–¾XgvýLø–_~g˜ÚûÑ.{î߸÷Gz<-|øÍ熟ÿégöE«¶ê#Õ7¬ ›1V+X ÒxÆ…Ï OºøeáÛ~q.LýjO¬=¹N]n‚}Z—{vT¼ÿȹáÕ{Ÿ.úÉŸè+5Œ‚Íãì·\zcø¦Ëï S¿ö±. ¹N½D‚”ë7æÅ9]î~jøÂ»w„Þò4 0&lƇ`§^Úë¹N½ä#CåZqBœ�`Æ‚Ícl ¹N]Öl ¹"X€ñ�`3ÆØÛ ×©_é ¶A®ß¸ë)«¬~ˆô±|333aqq1™cÌÎÎV¹j“ªØì ØŒ1Á¶�ëÔ¥÷µ’ë¸Û$Î………°eË Eƒ`3Æ8»åÅ77ʵ+Øf¹~úØ9«¬Ä¹mÛ¶j‡šÊû÷ï¯r”‹` TlƇ`õG$šä:õâž`‡ÈU}:lݺ5ìÛ·¯úŠ` TlÆX­`/ºè¢ð³‡åZ ¶A®ß¸óÉáÝŸ^õ™« &ØãÇ�WòÔN5•£º“'O.¬^·Õë·ö˜YÄ;a�+g~~¾Ëòâ±Úô%Lø–3lþþѶhóZ3L.6c¬V°ú+L¯þÕóBê�Hį¹NýÒB˜zQ‡_üp—_èðÂuùù/øóð¤ŸüµªÏÔXm0ÁJD’“$%�Y½IO¢3±yÁêØKÍr|™ÚÆrS;•�Ú— Ó‹× 7•keþZ,Àƒ`3Æj«?q¨Gº_¸ùé�ÿεI®ßôü[«¾Ôgj¬6è‡ÈkBòÒSÙgœQ}M 6…æeªsÃrÚÊ.Õ—?7lîM2õ×ë˂ͫ¬Ð'äüþ¾*W=&Wñ}Ïù�ª¯Ôm‰…“šIªN°&3{ ïV뤘*ÖWjGkÄu&Üx®uåÁfŒqÖv±\ßÙÅù§8Ãäú-?sêw¯"¬¾ÚŽ5–QJ°’¤$襋³­`›úZ‰`½¨=R ØŒ1ÁŠW¼âÕìâöž`#¹V‚­‘ë¿›½+Ì\øÓU©¾G!¬D&¡Il’•`,ØXÀFJœþ<•צ¯•6î`6cŒK°_øÂªÇ»/yÁyá‰Ûz‚�Þ-\'×;¾j«>R}�‚~ˆ¼`}™þÝ«—YÁJ„â8÷Ÿû¾ÔN;S›¯åj Ÿ0 ›1Æ%X¡ÏsÕ?±©${¼#Y'×¾`rU›q}¬~ˆbÁšH…Žãr“ �{‰éX¢ól#ض}™H}žÉÙ ÖçÚ|…ÆÙ½{÷²¹›1Æ)Xá%ûé·íXú7®¬“ë7ýÜûÆ.W¡¢X°B¢ò±`…—› ΋S9ñ¹—·é+•§úS§NUsó‚&Y�Ÿ?€ÁfŒq V<öØcá²Ë.«^“ýðžÖì�OîËõÛvÿIxÆùÏ©r”›êcÒIÉ`TlÆX Á ½žzÍ5×Tï ~õž O¼ï)Õ#aý! •8p`,¯¹–ŠþgHíÄFÁfŒµ¬qâĉê LÚÍjתGÂ*KåN"z\÷8.›1ÖZ°B;Õë®»®ÚѲk$~ýU°s€q�`3Æzò€`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€rA°Á” ‚Í \lÆ(M°ú!ò^nìß¿¿Ÿ³¸¸fff*tìÛo4l®Ã® ›1Jì–-[ÂÂÂB¿LÇ*›��­ÎÇ-ØÓ§O‡­[·Vc§êWŠý²ËTåV¶c¯ÕõÀúƒ`3Æ$VHH©òq`§�ì—û¥ Žµ{-ú€< ØŒ1)‚]Ki¬Eß¶‹D°°lƘÁª\�[M—DlçóóóUû¶¯uª�å±ã‰Sõ9)Ô.u-¾Þ÷+lìÔk·©y)gnn®ª×ñÅ_<Ð&Õ66cLŠ`%J/6“‹¬IÆÊb)×Q·ã³]¨ïSh¬aâ4¬}uóC°å€`3‚.›ºrOÝnÕD·÷‚ôùÕ�uÖYËrt}þÑojl+Ó8V¦ã¶¯Á¦ú€Í ‚Ív¸lêÊcL|Bm¬\íÔÞêbÉÕa’óíDêÚRc›Ü­\²l{Í¢îz`s�`3Fi‚€%lÆ@°å‚`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1,Œ“ýû÷‡™™™°¸¸˜¬•Ó§O‡­[·Vý¦ê`86c”&XýMMMµZäggg«\µIÕÃè䬯ӏã lÆ(U°Mâ\XX[¶lÙô‚5m”k@° ›1J¬Ä¹mÛ¶j‡šÊZ°•£ÜÍ,XûEaÒ ilÆ(U°W]uUõUŠslÑÞ·o߆Úý­ Ã@°£TÁ?~¼vaVŽêNž<¹L°ö¨Ñ3‹x'¬>ÕîÔ©SËrÛˆNý©Ýüü|5Wk›š«”-¼¼ì5d�ʬ/9ëÇ�a×__ܯ®U¢‹sÔvnn®Ê±ñÔ<¶õ—º>�ÍÇÆ­û>Ö�måñqj _7ìlvlÆ(U°Z4µ(Çr°V °í޼uìóÔJÇ&�—7IÖ„ãrµ‰ÛÆRôs�sâk¨››3¾~;�£ñâþìü\„ÆñíSmSØuøþl>Çî�¨[ç6vê~Šø~Ùù°{ °™A°£dÁÆ‹©PÙgœQ}M 6…_¸un²Jµ‹sS(ÇæheñÂ^·ÐûëÓyêS¿¨=6?óÌ3«z•©�òì¼nî©¹èØ·5¼`u_gucÛõÅ×’Û÷‘š³ðó«Ë‰ï1ÀfÁfŒ’«óxáÖ¹-¨&"/'a ¯$jø>´H§ø¦:#žSª<%N—×åÅ×)±ÚãVËõ²±{áE扯«î¬Ï+¯¼²ö—�˜ac§êÚÜ?�ÇsŽûj{�636c”.X}µk¼pÚ‚ëR-Òð=^¸=ÃêŒ6‚°¹zÉ{lÎñ5:·yèØúÕš£ŽUf×Ë'Æ÷§óºkP{›£r|]ÃÆNÕµ¹:�ïM| mï1ÀfÁfŒÒk"1±øØo[Hëd/ÜêÇ/ÔžauFAÔÍ%¦.Ï—Ûµ«\çCo°²_â¾RÄ øjûjÓ¶éš”[wo|ßö=¨›×JûYé=±ë²ëÖ·ríz}¹ïS¨­ŸóJ¯ 6c”$X[LÛ,hZµøi´óxq6üâ.tìl/ºñ¢,êÚÆøñì|5}5µmsM& /$å_uÕUáÌ3ÏìßGµñ÷5f¥ý(g%÷$ng¨�ÚÇóHåÆý®ôr€`3F‰‚õ _Êñ‹_|^—kcè‡ÕçÄåu‹u]¹'Îg_©òQ®IèX÷B2±G­–£{ÕfN£öãç›:7|¹úVŸêË爸nX®P¹ê•§ó•\@lÆ(I°¶HÚÂ7Œx�ŽP�¯3éh·›Â˨I¾Ü猳¯TyÛkÒW»:¶öêK÷HÇ*Ó±+f%ýÄ×Ñæºìç!5Ÿ¸nX®ðsŽÏWs/Ö›1J¬Ðç©ÅTÇuí|]Ýn/¦�|¹'Îg_©ò¶×äóÔÞîŸ Fo8:ãŒ3ª¼¸­g%ýÄ×ÑæºRßg#®–+Tî>Æu/Ö›1J¬-”ZôRõBu~±Z µ`Æ ¢j-˜Ö_|^‡ê›àË=qÎ8ûJ• «ÌçÄXÞ¾}ûªG¢v¯ôU2Ñk�Mó+é'¾ŽQ®+•§ÅF»s/Ôº>­¬lµ÷`­A°£4Á -r’e¼ÀÙ¢˜©Z-¸±xµ¨Æe¶8ë«•©~÷îÝýñÚÀ—{âœqöUWÞæš„îÓ¶mÛÂÎ�;ûåúª¾ba cÔ~VzOìºTn9öó�S÷s£¶ñÏ€×½XKlÆ(Q°†F-tžºEOåZDõF[|Eja¶p{¼œÚ Eœ37]“0 Å÷Qç©ü:Fíg5÷Ä U¨^ÿÞYßÛx|µS½åZ~<Ž×½XKlÆ(Y°£ E±N¦››1l %‚`3‚í‚` DlÆ@°],”‚Í \lÆ@°å‚`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€rA°ÁB[ô™¹333aqq1Y›1J¬~ˆ¦¦¦–!9XŽ!Ql&YÌÎν¦QYÉ=@°››1Jì–-[ÂÂÂB¿LÇ*“¤t>nÁž>}:lݺµ;U¿lîñ\ëÊÛ²’{€`66cL‚`…ä�*&»q Öúµ_ bLìuõãÁl>lƘÁ®•ÅZõ-qJ iª^Ô]ïZ€`66cLŠ`U®×-M‚’——…�ÏÏÏWí۾Ωv–kÄ;Ê8§Iš¢íîÔòlžº]GÜ.U®ãX˜–ççkmR‚U�r†Ý§a}Ž’×To¿èX]¯ËK‘Zà›«Üa‚µö^ˆ)âqLq»T¹¿¶Ô5Äh “cÓ¼<ÊU/F»m½Í-Æ·³¹ˆÔ54Õl6lÆ@°y«òa‚»)'¾^ÍSó�å�*÷×Ö$1¡9+nn®PݵyêúeìÕÖ§°66‡Që6 6c ص¬¨k«s•«Þ—ÇX¿u"«Û妯Måú¼6s2Á*W×ÚF²©{ccµ{µõu4ý¬´ýYØÈ ØŒ�`W/غݪÉ%n¯>›v¦†®'õ¸²®oamôUçªW^ÜO|m©±4Ǻwë¼I²ubW»QÆn[o×lõ»wï®Æð¹†ú²94Õûr€Í‚Ͷ»xÖ-¦mY[àc ¨�Ú[�uÑNõaÔ]«ÉÏÐc]õáç–º6‰FBômMZ±`­L9îÉ~°þÔfÔ±ÛÔûïA\ŸjëÇoªج ØŒQš`' -þ’€ ÁË@ ØŒ�`ÊÁf  P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€4û÷ï333aqq1Y?*§OŸ[·n­úMÕ¬6c”&Ø………°eË–055µŒÔ¦ÅS‹è8R(ƒ\‚ågÆ ‚Í% öŒ3Ψ¾úr[Ü$Zý Y9‹Ùrì^ùû´ä· %€`3ƤÖ˜��­v¸uõ°ô`½E—kÜ:r `œ ØŒ1i‚µEN¢MÕ‚5,”‚Í“&X!¹j¡Ó‚gçñBª2ÿúm,d{Œ7,'îÃ�ésÔÏüü|%Ë�á¶yÂDe9)IÔÍ?ž³•û¶žqÍ«n\ëßÏßúñcØõÄs�ûö=˜››«rl<õ�mý¥®Ïcó±q5ßãÇ�/lÝØV§Æðum¾÷0Y ØŒ1‰‚ÕW'ØÔ¢¥¼}ûöõÛÛ"¦vVæst¬þãÅMùjç禲x!Ôÿ*ó;¹¶y67[Äízü\›æoõ¾ß:Öb^¾�ŽU¦:+Sñ˜vÏ­íJ¾~.Bãøö©¶)ì:|6�c÷@Ô�­s;u?E|¿ì|Ø=†ÉÁfŒI¬_(ýb/Ô)|þ(õ©OÇñ¢½Ò¼T;¡k©»^Ÿg(OùÃî�1Îy¥ÆµïG,¥«®º*œyæ™U½ÊÔFyv^w�©¹èØ·5¼`㟙aÔ�m×_KjlßGjÎÂϯ.'¾Ç0y ØŒÁ6½˜Õ-Jj£¶^©z¿ˆz†�íóâò6y¶€ÇsóåMóuý¤×¼Rç†ú:Öü%V{Üj¹^6ãúXŸW^yer™bØØ©º6÷Oçñœã¾ÚÞc˜<lƘDÁÆ‹Wj‘S™Õøñ]Ó‚5l�jçÊÔØ©ò6y67›wŒÆn³à¶É1Æ5/µ©WçvÏtlýj Ýg«Ìîù¸¾josTޝ«cØØ©º6÷Oçñ½‰¯¡í=†ÉÁfŒI¬-Dm9aùVoçu VÓâ®ò6‹{\Þ&¯inb\9Ƹæ%êò|¹úµ{«s�¡7Xùïù¸¾ÊS¹½©®?ϰ±Sumî_ªLÇÂêFùžÁd�`3Æ$ V “¨a —Ï7ôƒ©ÅK}Z~q‹©ë/Õ¶.7.o“—ê?¦MÎ(‹õ¸æ%êÆµöz–Û÷V_õ½Öë±ñêæ•šK]® VåšSÉZÿ©þR}Ô��*·ŸÃk¯½vÙϸ�ë¯ @ ØŒ1)‚Õ¹§¦ÅL» ÿŽá¸^ç¶PúÅÌ·«Kù~çdeMs%Ïæ¦¯–£ñvïÞ½,Gm}Nü.è&™ˆqÎkظ*Û¶m[عsg?__5F,-1Žï�úôå:O�“º¿6Ÿ¸}Ûû't¬²³Ï>;Ù¦é[{kÛtîû†Í ‚Í% Ö2�ÊT—jã3[ä}ÛÔ‚“Êó ›-V¾>ÕOÛv”…ØZ�Ÿ›hš¿ïCcø¶žqÏ«n\û¾Ær3éÅý�­9X¢í\…úŽËm¼T¾'þ9Tþ©S§–ý1ÊýîW »ÇêK}Z¿Mçqß°9A°£4ÁÀ6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1,@¹ ØŒ�`ÊÁf  P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1V#Ø#GŽÀ:�ZƒÛ€`3;X€rA°Á” ‚Í \lÆ@°å‚`3‚(›1¼`yä(»Á”‚Ý�`ÊÁn€@°å�`7@ X€ò@° ,@y Ø  <ì Pv‚(»Á”‚Ý�`ÓÜÿýá[¿õ[ÃW\‘¬÷Œ’ ƒèž�}öÙáÁLÖ×qÑE­¨À¤€`7@”,XŸÐq*§»>”$XÍEsBü°@° Jì›Þô¦ðÝßýÝ᛿ù›«ãTN¥ Öæ:êýX+6«`S÷ÁÂFÁn€(U°¶Øi_Éb\ª`o¹å–ý±VlVÁn´ûƒ`7@”*X-€ßþíß^}Õ"¨ÅPÇ©Üv}@°k‚ÝQª`ýÂ-t\'@«ŸššªÐÂyôèѤ4GÉ�‰Û ‰"•ë1™¼ë]ïªÆ³¶©ñlá·µÓ¸Ö�•*KÉÊúñcØüã9Çýê^è—Ž8Gm¯¹æš*ÇÆSÿñØÖß°û™š³•7ÍEصø\µmªñ¾^_W:/kÛæû ЂÝQ¢`S;J§5‰-�ÂÚÇ‹Û(¹)´Ûñ9©y¦°ÅÙ/ÜêKe~KÑDáçk9¾�ŽU¦:+Sñ˜6_kkç±P4^ÜŸ]ƒŸ‹Ð8¾}ªm 奿Öf.vü\Ôþ²Ë.«Žu}Mß'ëÃßG±šy©¬Í÷  vD‰‚ÕbT·¨6-ˆ†åûEu”ܶÔõéI-ÆÊW;Õ¥Î�ø^¤îCJ êçå/yøÎïüΪ^ej£<;¯›{j.:öm �i}è8¾Î:â±G�K*wq›Ô}Lå�:¯¦ï3@[숛ZÔR UJ,uu£äÃæ¡]‰Ï5&u=qyÝ‚—ƒÝ]�Äj�¾-W×gã5]³ÊU¯<�×]ƒõù²—½l¤�šïo”¹XnÓ8êWý×}ŸÚv\÷¨®`#د}ík1J¬-j~aôø°0®%·-”šƒÏk³x¶YxmÁ�¯×0Ô‰Açº]‹Ž­_�¡ùêXemî‡ðýé¼îÔÞæ¨_7 ßß(s©»~�úÖ||ñüÇ!ض÷¨®`vDi‚Õbæ-�-жà [ãºQrS´Y�}¹§ÍÂÛF¢.Ï—«_»�k ½ñÆÞ•­ò¦kV¹ê•§óºkPžÊíÍOÃî¡Ç÷7Ê\šîS]}<ÿ6yãºGuåÃ@° J¬ -DZ�†ÕÛbŸû\-œ~Á%7EjAÖ§§ÍÂk}Õ]»Q'k¯7úèñ°ò,_bÕë±ñêæ•šK]®î™•·¹�FÜ_Û¹Äç1m¿Ou÷q¥ó–[W0 »¢$ÁÖ-zÕ)Çb‹º_謟x±%7Æv3ñ‚ªvM‹gÝ—ÛüüõkÜg?ûÙýœa»*•é/_=ãÏèçë«ÆH]Ÿ]{<7ÍËï̬,u êÓ—ë¼é^Џ¿Qæ’ú>ª^¿\Øýñu:Ž¿Ou÷q5óŠÛ6• Án€(I°©E+&µ€zIÚBú�| ¹€Ž’·U~›Ås”…×äáñÂ�sR÷!¾�§ú[s°þDÛ¹ õ—Ûx©|#ÕŸŽUÖ4a?>×®¯í÷)uW3¯º{TW0 »¢$Á@»Á”Çh‚}üæ°óœÙðŸ{|Ç oŸ©*ºñ™£¿¾ãœ×‡áãá•>ï5ï&Äí­Üʼn×,Õ×å¬$,¬'íÛ“ãΣŸï}>¼é…ƒ”`+)V’í…µ{¡É·uý H»#j ›�Ö‚�eZÅ_ß‘æo†7=Þ=íî`—Î-´+­-ï µ»ë}å«“±‚€õ¤µ`µÛ\&¿Þ.ÔÊ—F»òÞ6!âq‚€õd$Áú×F=ãl7ük°ãzýU�``=I°M�oÇ!Ø~ôvÇñ©VÖ“Ö‚M¾ÅX«ˆ^ã]M XXOZ V²ó�ƒ»ññðJ·Ã\�`—¿cxðMP«‹Í"X(‹fÁ*z’õxá®Z°Qßã’«Á@Ú v‚€/Ø� \lÆ@°å‚`3Æj{äÈXRkplÆ` P.6c X€rA°Á” ‚Í \lÆ@°å‚`3‚(—FÁný�SÖ P.Zã·\pEø÷?{8ü‡_}_ø�¯úXØúš‡ú˜ê„þk‚(­ñ©µß‘,„1€`ÊÁfÁ” ‚Í‚(› P.6# \lF,@¹ ØŒ X€rA°A°í˜�� 333aqq1Y°A°)M° aË–-ÉkÝ¿²M,lFlFJìgœQ}õå§OŸ[·n­®Y“Ó×µa%‚µ1W2À8@°™Á¥v¸uõu¬D°Cc!XÈ‚ÍȤ Öv•fª¾ ›;F.ø�;Âwüiø•méú˜I¬�,%YÉÖÊL†v_b™¦;¬�ò­ÜðRo` Ø1rÁï¾?¼ÿýo —E‚ÝvÁeáwߢºoyKøÝ ¶M¤`õf'/X“�½ J¢“ð¼cÁ¶ic9ñ¶M[€q€`ÇÈ…¿wW¸ë®·†—l_*Ûþ’·vÊT¾œI¬§œ:¹IŠ–£s/ضmô5lÛ¶ãÁŽ‘ ÷Ÿ'NÌ…ËM°Û/s'ºeû/ÜÞÏÛ~áþª|Òw°) Š¸Ü ¶m›T^Û¶ã`m»ó@¸ûî»Ã��™ì¼<˜»»:ss—‡�n‡WI¨W—äÀÎÁ¾Gf{Øyù��1ææ¸9ì Tvùö°½Ÿ×“dç:ìü@§Þ÷Û½®¹~ŸK, vûåÝzõíÛVtúžDÁ¦d¹ìÞô0á­¤MJšmÛŒƒ5ìüü|8zôhõuG÷„í–»}O8šÊéqtOBN­éÈóhºßù¾¸;9�óes=p *_*ëH¹×ïö=5×Uq4ì©»=ì©Æ^jglß¹§š×¤ Ög¯¦$˜¢Í6&•×¶-À8hìžéDa;. 熃a§õ1½3¬ÊoÃûíå\ÝîuçÁÄ:Lk{–Û�Sw¼i>ßi×ï§7çé=ᆪ®s¾sºßçÔÔô`žõsÞNŸÝœéŽXÞ œ.“$X{ýÓDéËâ×Dc¼`Û¶IÉ´m[€q°6‚Ýu0ÜsÏ=á'czÏ UÝÁ]ƒåKL‡=7¤ÛŽÆ®p°fƒôòî9vUç½ñÝwÔyWœÝãôü}ž×.‰µÛ®{_†=»¦'F°&;/WCÔ½ó"Ôë³»wïîçzÁ¶m£s½Ök»e£M[€qÐ(ؽ«ì {ý¯ËôÞá‚íJÊd· †Ìa�žîê�O‡½•à÷öÅlâÜ;Ý««™ßRžÎMÜŽŽX÷vÄÚÍ/S°i|_TK×cÒóxÆ‚mÓ&Îñ»Ö6mVË öP¸÷Þ{ñ¤`�Uu‡‚íÖ »V2fÌ�9 ²+êäÝ{È öXçü˜ì¡Îù½Çº‚U�æØo¿ÄRžÎ-W}rb5v'XXbã¶jcrÓ{ñJnK¢L3Š`c‰zzý¸ºnnú— ]/‚(—• ¶#‡J^uBU°½þ’"Z1K;Èc‡ö슧§;2ÜkBM°6_?Ý¿KyU_&ùNÙ!·ƒµ| P.+¬{ô)úbrŒ"ؾ„êH?ŽmŰ¾ûóM°K;Õ˜ŽDéÚéè 9‚(—ü;Ø^n=«¬èìV÷vÄçE;¸£U°´v¿dXÝk[~Oª«ÿ¥¤÷š,‚(—FÁ& `L X€rA°A°å‚`3‚`ÊÁfÁ” ‚Í‚(› P.6# \lF,@¹ ØŒ X€rA°A°å29‚MüÉD1Þ  P.F°ö÷z×Fxu ÁÀÚ°qÀ±¾�ÚÕÿþ P.!Øî§á¬òSyÖ P.íÛûX9 pz×ÞÁ�k;6ø�æÆ²�iÓg¦îu»ÈÆ�ª«c[Á6ÎWôæ<ÊGñÕÝ3 P.# öر®D–á>?Ut¥Vƒå®•`?ĽDzÏ|­Á_Û [wÏJì�7޸있™™™°¸¸˜lP*# ¶âXGzþÃÇ«ò¥7Ñ ä©¼#>ÛÅÅ‚ë#â;Ò|W Øe}÷îY‰‚ݲeKXXXè—I¬ìÖ­[ÃéÓ§òJftÁF;U1(–é°·’Ò’p0ùEýŒU°Ã�8ß•¶æžM‚`…ÎU®z_P2# ¶Y,½mB*]zBÛ0‚q¾+l]î¤ vÿþýå%ƒ`ìØ¨lªÜ¤k÷#~�vvv¶*›ŸŸÈ‹%m� ­^¨­ÏQ=¢>yòdõ5΋ç·Oåðº24±‚mùÈõЮ�ò|‚q¾µ÷ÁúA°)‘ziY™ÉÒ$ést¬ûäE¦þU¦¯–§c/]½Î+‰ú2«�ØæpöÙg'Ë}û6óˆYÁ.�/{ÓЮ¥7Å"]j“þ'?«a¸`Gœ¯ WýY®Þ´Ô“ë@î 6¾N//Q'§XΪ÷碭ØTïÅ,1Æ}Y^]¹µo;_€˜5¬ßÍ¥Ð_TŠûXWL½ÛÒ$ØÑæ[Ÿkÿg’ë¥c»I/'Õ)G¹V–*�%i¤ÊM‚þþú 6}Ûò¶óˆY#ÁŠéŽØ¢?®ßС]ËÛ÷éHöв3º‚#Ì7Ú±jç»Wy½{„`—vu*ÓõšˆLLñý0,¯­`u®vöø6•3ÁÆó4,ÔÑ^°0v&A°BÂkÚÆ´l]_k!XD £‚`32)‚5II\’žä' úœ˜• Öú—`ÛÎ ÁfdR+$(“–òtý^Œ*ß½{w_Šm«6êÓËOÇê{\‚Õy›ùÄ ØŒL’`m·iâ3iy¼ÀÚVçÖ¯õ!9Æ9«¬hš/@ ‚ÍHi‚€%lF,@¹ ØŒ X€rA°A°å‚`3‚`ÊÁfÁ” ‚Í„þ|#‚(›  P66 ll&,@Ù4 öÞ{�…½ý!Ÿ»ö Ç>õXõy©Óqö¸�xÓœû��;øzígÆöH}ÎìHô®ÏõylàCØw…C*Û;¦ûy½ûÓ¹;?}<]÷ºâ�áC°%3’`»Ÿ«ZÃJåfŸ™šPEG²}y76õ¹«í‰>ãÕÓ¿¶ž`ã¹:T•/•-}ö¬}Vn  P.�‚õ;S} ù¡½�ÝêÀ®²+�Á�îô[áw‹­ûíå­r÷Úÿåa`ÇÚ¤æÑ¹æî¹Í©;Þ´?ïIµÛOoÎý_:çÜ®wG°%Ó(XÛ‰ c@*‰ú¡˜`ýNµ‡íþôøØ—/1öj×™h;=Q6öcBµjo|7G/LÚ©ù#X€²iÛÝy«yL»:Á¦ï6 ¶+°¥Ç±+fÈé ¶¿[^.ø%Áš|Óó[­`�9ë@j nC£`—üãÐë+ØnÝàãܳ  ›Ö‚í¿Y§#“XjKR,oÅJ[µYáx)ìµÒ¶�ˆ[ vØ}éöƒ`ÊedÁü“œÎ.m韵Ô¯#æú‘Ûë¯î±ñʰݦ®oðˆä›œZ ÖÿRbõÓýû�`J¦Q°Kïêmø7¨I�.‰«¢/&Ç(‚mœÃ*^�ÖwÞ£ ¶Ÿ¿ŒcáСc `륥?˜0ðG&ŽuD±kºÚ• Û¡vÅ5†l/·žUVtv«{£7q îhGlí€Ý=³þtm \Z¶FŒ°j,@¹Œ´ƒ…ñ‚`Ê¥Q°ÍÿtV ‚(—FÁ& `L X€rA°A°å‚`3‚`ÊÁfÁ” ‚Í‚(› P.6# \lF,@¹Œ.Øøï÷þH~òR�;4·4ÁÞxã�˯½Ãþýû“ù›•ÅÅÅ033S¡ãT@_°?tIçøP¸t[o]ì9 s¼´PVT²p>±—˜üø8r‡æ–(Ø-[¶„………~™ŽU6;;;�»Y8}útغukumV†`  ƒ‚}E8?r@ç¸WУú„÷é1]y¤ÅBn—ºÜI¬Ð6U¾°_¼`Ú`‚ýOç¿4¼õÐóöȽOÓ©û\Ór»´Ë�ÁnfI!XX)Zã÷ìÙ^óš×TÇÇ�óóó} Ø>ãÏ�Áª\¿µ™¤ô¸X�WçææªòøQ«ê«ßòzè­ÕZ½Ð®Xå§N�ªÚûü” M”–“3žÓÅ_ÜÏ7ìQ·åû>šÆ°v©þ <ëƒþŒ÷?pÜ>`ܽ¾Ø‡Ü¦ÜI¬ÉÐ$i’‰åb¯w¦ä÷«>ÕG]¹—¬‰Ou:WßÃ�_7'kK[y~žMcعo£ëÝ·o_u å¡5~jjk8ÿ¥Á¾âÜj�æ€Î±—EwW¶ôNÙž<üë‹äº¼á¹“ X•麽 $�Ô®4––ËJ¤Djø~RmE<׺9µl›1ì—‡Ô| Lº‚Ý.éì`=ÿ»zØÞw@õy°Õ›t:’h‚Ü.msKl÷h‰X¸ÂËÉÊL@¶ŒQ¹`|^—['ȸ<5§TžáóÛŒaÖ¹Ê}”‰Öø¡�ˆK•›È�; ;Ø+¬ú^�`cñ&Åq6Õ¿ðmÕÎÊuìû€²h¬-ñ?Eéý[ e �ÜV¹6ß6f‚mÃcmRc@h�ŸÚ¾«ì+Îí9`ûï‹^a_z‡¬?wò w¤\;(–ºr�«\õV&‰¦ÆŠsSmSÔ�ÝF°mLji{¿`s²$Ø—†çWÏ;x_ô ;t{¶ ¹]†å"Ø´Ìâ:åÇ»U V÷3.Oåj^Êõ’TýîÝ»ûãÔÍIyêOãùò8¿i Çï®Ê@küÖ¹dÁ.ýS”eòp�Ûœ‹`—‹Eeªó÷0•k��õš†Æ´ÜX®† Ðãe8lN¾­òêò‡�a¢öuuã@, ö’pnïÿûí{Žz_,-0^Jìzâ_gMÕäFk|jíw$ a Ø•ƒ``£ƒ`3‚`W‚€�‚Í‚]96:6# \lF,@¹ ØŒ X€rA°A°å‚`3‚`ÊÁfÁ” ‚Í‚(› P.6# \lF,@¹ ØŒèæ@¹¤Ö~G²VG²VG²VG²VG²VÌTøÿA f×ðÈ”IEND®B`‚MEGAcmd-2.5.2_Linux/contrib/docs/pics/webdavConnectToServerLinux.png000066400000000000000000001177671516543156300254600ustar00rootroot00000000000000‰PNG  IHDRK^•N[·sBIT|dˆ pHYsttÞfxtEXtSoftwaregnome-screenshotï¿> IDATxœìÝwt]×}èùï>õ6tA¬ v‘¢ØDªP•’eÙ’åžf'¶W&o2“iykÖL&kÖËd^ò¿$ób%±;q•­BQ]ì¤ÄÞ €DïíâÖsOÙóÇ@�(R–l'ÜŸµ°Üsî9û”û»¿ý;¿#]¼,KñÈ \aï‹ßá;?ÞÅå�4"RƬ¥[ùƒ?þ=î*1 HQ¿óþǹ‘,él%¿ó—ÿ‰Ï¯�‹-$ qzNð“çÿš}ÙÔ•ºœ}ÿ4#‚ÚÇ¿Æÿú{Qi ¤ôH´žàÕý+/¿w‰´5“ Om%ýóïÑsïÿÍ7ÿp!ò¤”܌׷Ÿoþ¿ß'¾å¿ãº7ÅŸüö_Rö‡Ïß_††$}áþâo^Â[r7±–Ó¼_ß…Vº�G>÷ž{`Å–F�jaÿk¯°cç.w“#DÕÒ�|â¹ÏòàòJºÈ�ÅMÑqòM¾ÿÃW9z±�À*bÖŠ-<ýìÓl^RŽ‘:É_üÑ_ptþïóÏÿózLg€3ïüˆúÉ9æ~ò+üÆ“« �ý;~ÿÏ�qÿÿõM~»®d–¦}/òß¾{Š_ú:Ÿ} †Äž?çëÿå<ž½‡Î½û¹<,˜¾hŸþì³Ü·ôêx~9®¼ôø£Ÿê<öÌZºÞy�ã-iJ–=ÂW÷9ÖÍ/ø ZO¾Ë ?z…#—{Éš%ÔnxŠ/?÷(KgbŒ9H4ñÚþ†WWòµ¯~‰5Ó�ñ=ùÉnö~÷?òíÓÅ,­�pùTý^‹ïޝ~öæ•„@�jáí?σKø­/¬æÐ_“ ¿ÂŸÿÆ -í—xn”�‚þ÷ùVž;q�±¯§zÞ=.‘4Œ4PWXw»CU…›ÿÍ^¿lªïoöùƒ>4MCÓ´ñ¯u]lìëë×ûÞ|Ï‹SàEþé»ûÑW=—LC·röDõWš©È„cÆ2>û‡DOÃ>^ßÛ…7ÒGw§‰)$H‰;4„«Ao}=EëàS_ÛLöì«üèÀ÷ùéŠy<³ÀFf»9üÆË¼u2IíÆm,(Npâí—èÖ ¨d˜ž®Ì’Æ#9 §Í@'I¿Cù¼Yú}tuf€3”Ayœßµ—²¥øÔgÖÒ~|'û_ù.¡Èï°u~”`ð4‡O^Æ+_ƶ{gÎõrîÐ{¼ü¯òKŸeõt�d®¼Ë·¾ó6-Z >û %2Ε¦NêOœ¡¦x‘ì0Z$B¡¡§£…DÓ~~¶ý8Ewoã�»*È tOD Âñ:; s ¦¬¨�—î§»K'�†‚¢,GÞ¹ÌýŸùO‡ºyçNv¼jÒfa©yKçæ£2䘘^'öeÖ’-<:»‰Óçöðê¾9”êË(¶!ÙyŒŸ|ë‡4‡kÙòôýD“W8râ%¾ýRˆ¯=±’b;ÄÈL?N`Ñ\Fú:ét¯7Af�´4È vÑ™XÇ_ù¢]‡xé�ñÏ%%üî½Õè¤3„´K©ˆéd†FO+§*œ¡¿»ƒ¤ñË $•Û!ðüxÀm;×ïÿƒ‚¬É– ÉPz€Îdû­WQî(âvþÈ'Yõ–¦IþžÇƒ¢Ñe¿×4�¦ë„ì±X¡p)%RJt]¿fš¦Áø×�O܈}çÎËÂt^úk¾ûnœù«VqpœìfvEQEQ~­ °,›²²éÔÖÖQW·”Ò²i†�®ëãc¦‰Ù¥± “áû>‰´Ç`PÌÜ™>úH9‘�Ä>’·‚Š¢(Š¢(¿B¾çÒÝÕA_}}=lº÷~ÊË+Æ—OÌbéº>žy ‚ ? —Ë:\ijåbGÓ¶‚€ ¸yFIJ‰ëùøž7¾®¦ tÃÀ4ô]‡àû®ë>Ræ³íš®cšº¦êQEQEùp4Mày./ÔS\RJ4²�H4:¾üú)¹üsòÓrF&›áü¹3äw<’šŠ”’l6G&“Åó„ÁèœR‚ah„Ã!B–…Ðn-hò}Ÿd2C.ç"MŒeµ$�”¶m�„Ñu4)Š¢(Šr{|_ùÄÌå‹�ÔÖ.Â…®)ŸL>³ädéêì@Ê›g”|ß'‘Hãä<,Ë" �ÏñA€ïûd³ñxЬ�£`t�›Éd‰BÓ ‡ÃX–�ù9Â|ðà8.™L–lÆ¡  B(dø³¥(Š¢(ÊilÖª¿¿—T2‰çyÀ„«^§HnÎ%›ÍÜtêÌ÷†ã d (.."²Ð4=ŸYšð¼ �D"a²Ù#ñÃÃ ŠŠ ¦Ì¥RÉ ±hŒXAct oâ6¥”„Ã’h4B2™fx8IAA@$št›Š¢(Š¢(S‘R’Édpr9<Ï›4«t}k#_wŒgˆ&ÛèÈHŠ €iÓJ°lëš²ï‰Ñ˜¦ 4Í 30Mƒ��AFF’Ån€'G2™¡¨¨€XAìšš¤ÉmÛÖhåºF2™}Ìü…ú´ü[“xåM/Ÿ¾�õEQåN”Ÿ óð}Òi¸±ÇÇÚ¹þžÑŠïÉSOŽ“Ãɹ”OŸŽe[£õD7º¦ù`Ù%%%ôõõ“Í:ØöÕ©3ß÷I¥¢±±ØÕ@IŽŽArãX„&Ðu�XAß÷Ig²èºö�Ó|“ɱ㣂 Ù¯_ßàÂóÁ—Í'ÐŒ±pèrt½@D5Šõn•ïûÒ’Më=ñë{žEQåf¤”ø~0žYÒuß÷Æ[ŒÅ BŒoýý£jÆt˜$@H&Ó [×d‘ƲQS=¦ A8lS‹‘H&±,k|›Ž“C±h~ê ›É’Îd&} –@$& aÑh”\ÎÅq\Âá[/ø¤†ëá0±�‘ï,-}‚\ ™Í�E'øµŒŽ"+dfEvg#�Ù®f]³–D#ë…)()¤²¼.Ÿ¤Ë‡@3¦ØîÔ4ržM(jµt4!!ð�ÎNÎÅ¿X¦(Š¢(¿*RBàûø¾?(�e—Æ*cßK)14M›² Éõ|Á“›ª9ñ7ÿ™¦sÝäLAÄÖ Fƒ_êds…|úKŸçþya^ûß�s©?ƒ°Â„,� o4’ÎGÌËÐ0MãšPY¢‘ÉÙ”Õ®â©Ç7±lN91ÃÇIqaÿ[¼¹ë=:�ÔŒ›‹†ëyWÛKò…û£yCÛ4Ðt ׸9MhDB:žùóïû€À4–a … �×u ü|k F§bõ[¼êRQEQ`4³4ù¾MÊëƒ%!†çO]³”s\,ËÄ4¯½Å†¦iÈ ¡°¨ÄGF0 ã†í¦�iär9 =4H€iš7¬kY&¥¥¥7ŒÃu{oØ¿e™8Ù ~à#ÄOÅeAÑ’õ|þ‹2S ÑÜp”+BId„´ëãK�LN£hfógÑ}²C]´µv’Ìd›²¹µÔ”Å›>N¼›öÖvâÙüò’šùÌ™^HØÊ/Ï�ôÒÑÚÆpÆCê&YB• XZSFLÈ%zéhme(å! ƒœ#e³X:§‚¢�F��ÓÓz…‹ÝîhA½IõšM¬Ÿ>Lf¤• gZÉY&cWŽ6œ6ó7?ÄÆ� ‰¾š/÷’&A´œ¹5UTX/EÛEÚ{R˺Ü@ÇÑfðاæî Á•£ïr¾ßÅ Gz¸®$�",“‹O“д™ÔT–RµÒ'“ÍàˆJdW.7Ó��d ±iMd:¸p²™tx•ók¨.‹`I‡dï.µ WĘ>¯Š™%1–†t“\º|…‘dæþŠ¢(Š2FJyMfi,@K ]ÿaHÉ”ý•|ßǶ¬7 ƒÂÂBFFć㘖Iaa!†qã”�eÛäœÜÕ©:ñáj�&ÒuFçå-4¬t¼Bî{bsÌ4÷¿ÆOß>COÒÅ3"†}üLŽ„cP¼j+Ÿd ªËˆj©¡nïâõ=§´yâ©§x ¦”°)�¾$ïæÌî×xëàyšâ[߯cµ•D¬üò\¢—³{ßä�ýÇiI ̹xö‰�,Ÿ_AHºxÙ!íâÝ=‡¹4ìcÌ\ÃÓ�o`M] %a�3t…Ý/uÑЖÍþØÌY»…ŠU—Þäâ±Ë3ŸÉ‘rbµWˆ%÷?ÎÜ\‚ G^ãÒ¹N‚Ê…lº [VÏgFaá%i¿x†ƒï¼Îû‡Á²�€H‚P•1üÝg°}n(JiXC“YW`ÎY{ͱøÙ!íæí=‡iè7X³å¶­®ez� ^†öŽf:“Õ¬›ÝÉ ÿüSZ�÷S¼~ŸýÌBFNÿ §N R»îažÜ¼„™Åa,á2ÒÛÊá×~ÌŽ“Cèe xøÙg¸«¼€�¥C¦…ç¿óñDúú]REQî,cñÈXfÉ0Œñï'Nã¼™9]/�š®#„†”Á5Ë Ã ²I&“H))((Àœ$PBC×t$£­Ãǧ¯tÆOæWäæWn‰k¿{þ5ÒW4�å¹t7ß?BoÜËF2$“>R„ȈJ¾ðôf–DœØñ}³v󽬾ÿº/·Ò<¨S2­Ó‰óþO^à”YË–­[X}O'ë/qiP£dZ!¶Lsô‡?䈜懷²ríÎ64Ð/dëc÷²¶6Ä¡Ÿü#‡£,Û°•û×ßCKs3�ý÷>´‰{WÖÐ÷ÞÏù—£Ý¸A–ÔàÒ˸e©ã^kì'—éó <™/Šò‘ïèziÿäÛìêrÈ%HeÔ.[Å}a]ØÇ?¼€7k _Þ¶†Mnœö+/Óá Í@"q�½gú˜¿±Šå�ž¯ÕµÓTŠÓç/3”3ÉRÁÖG7±va„C?žx,kinn¦±Û¡´¢”’ƒúþ‘×Û28®NÕ¢{Y¶d.s˧53,_V†!\š�^˜¹‚‡^IaÏY^~é½Ñe<ýÄ=ÜÿÄFvy‰¬¦¼²¯í<;víãB6’d0Ýü.ÃS- d0º�ÉÇ~3Œ- ð=2©º¦ã�^ '„NÚÓ�Ó–qW¹A¼íûwæ‚; 1­ŠysW³dV)¯×'ðsºêOqÔ—Ì\¸†¥ J‡ÂãG"½=õ§8–u˜^»ŽUKŠG"èÅ XQYˆi˜Ômy„J× °´»0Diq ‘Ò–W•bë�¼õÊš>YÍ@h&hcS¡Íé¼ÜEFcRŽÙO<`—žÆótôûäô(¹p Õ•ÕL óîûGh8ÛE£ÏÚ­uÔNŸÇü2ƒÖ) 4|"ú0‡~þ=/ÞŽW³lݽÔ-[ƪ3ØþÆ>Îz³Y^Y„©[,;–’±c)%¤u�ý¤hAPÀì$ßB©ú†»ˆË¬¿k§:ŽSQ»…Q�Dg/mý9taàÁø•ƒu«â¶6Ó>ä�ɤH¥]4Ý&l[ˆáZ3fÉØ Ç¢»ʯ=RæÛ ¶Ðp¹�»–nä‘5‚>^|ó¦a‘ê¿B�·€˜çÒÑݼ×4L`R"HÊ×T¹É©oEQåfä$�ÒįÇÖ™Pà=z³Ú)6h˜:Ãq*«*ȧ1$–e]Ó7 ò�•‹�?v¹ÝÀ`ëYÊ/Óu�t:CAAŒp8„”’H$‚¡OÝȶíÑmjd²™Œƒ®kù:�[`Ø’Ã?z‘eeŸ`ùô9<ñÕÿ�Ojø¸N»žÿ]§êùéŽF¾ñÐ\þÆÿÉ6Ü\оS{x¿©‡Œ7m™ž,)vÝW�-ÝÄŽ�õÌÞ¶œ%Ïü!õ\þ¦~‰ó{xá§?ç@Û%ÞÞ×Àœ‚•,zö�øÛÏøÙ¿õ3þåÅz.\nuO|ƒ¿x(ÇHïažÿOß§[·ð„¸hrˆ“çºY;sË~óÿàoŸKÐ|vßyþ NŸ:Ç‚ÙU¬ßðþtËç¸$z[©?´›s A`éR’ t‚h-�~âI–Uaê)ü\†Á+g¸ÜÑM&™äµ]W�察“ø$ê÷òÂO^d_›Ý©�Hé#ä��í4µ'©œÃiÜË¡ž BHúÛÏðîû‹yrÕ2¾ðG«ø"ø´mÿ/üÙöæk‚% ùw*«¤(Тܦ±fÜ×O¿M–UÐ++Êÿd²ÞFc4M�É:z¾éVîž1(Åã â#ñÑ›ãN˜–àyù^:ápþf»º®aÙÖ”úh¡¹çy  áyî¤åSÑ…‡—ä̉K ¤³¤qú{zho½BýÉ“Ô_jfÄqé¹Ô@SÜ#È¥èi£ñÄv¼uˆö!�!Ê* ÈõtÐÜpžv/B,As:¹P…žAqeÞ@ÍçNÓꆉD 0s]\hl"žÌ2ÐÜH}oßÍ2ÒßGW{+—.Ös±µ›”¯1Òz‘úž$Òsˆ÷÷ÑÑÖÊņKô$ìé§/™%È¥è£íbÍWÚIHmô²‰Ð4šÛÌù�¡·»›Ö‹èêê%>ÐË¥ö^ŽKfd�®– |gïn'0 ÆÂ›üT^@&›!›J0ÐÛCgG;—ÎçÝ·÷q¡u€À4ºÒ@COßË;– õ\hëaر(œ^É!Úϧ% ¾Ðš —Èè>An˜³oïæÒ`’œf8)Ú.]¦+‘#—a ·—öæ Ô76p¥ÏAš—˜Œ4_âJK ƒž¦c*Š¢(·MJÉ‚ )..A×õñ>Kc_�uñï¿´råR9}Z)BLuù½Äu=¤LŸ^6ZÐ=u�H¾Û%¤Riúûû0ͱ+ß® Çñ(,, ´´Ó4n:¥¢i¹œÇàà Éd˺±OÓ­ð Ïu®il¨k65¤nH�œëx.�® B¦ŽÐ5LœL Øްpr>Òw‰ØB·q2i|)) iä„…“ üË@3ò�!s®�ﺣ�+¦–iÀè~Žà{9ähSJÛÔ1MO긮;Ú0S¢k1[Ç»®Ï”/uÜœƒïy£Û„-Ox¾Äwsø£M)mSÃ2¯öX?OR˯çyãçI`[ºžïÞ-S‹Ô,rÙ,^àSÒð&t¤Ž›Ëo;jƒ4¬ñß?˜ØxrìøA7mü@'—MaèÛ2n¡¿–¢(Š¢\OÊ€ÇÿsæÌò,lÛÆ²,LÓÄ0ŒñϺ®çgÎ _®iSOg躎çùô÷à89 bØ£W½�×äŒÖj;NŽD"A"‘ÈÏóúø�]'"ß9:‘HàyEEED£áÑæPrÂz‚ ðI$RÄãq²Ù,¦iŒ· ¿]ºðÑ-¸6+ŒQ`›˜W‹ÔÇ.à;”Ñw�€°%kô\¸X!s|¹ ¿z~yþ°,C€qý­JÆv"ÉïÚå¾��ej`^]æŽ?ï* ÛÒÁºLx2ÀÐÀ°¯m2êOòóÑñÑMÌ’«Eåò&ÇâaÙÆ cxX––5~ÞÇö¯ ™ûµJ£5O¡pþçâOrÜŠ¢(Šr+òåß8õvý÷cnÚ”r"]×ðý€x/)óÓFÚØ<ßÕìÞÌØÝ~ƒ �I“Τ¯N �£Ssš–oD©%EQEQ~×g�¦*ìc ƒ[–€Ñ&Ž)¯Í Bã…Ü·Ðhšm®˜ŸÞmô�ÐŒ6�ü0ÛUEQE™hb_ÁÉ‚¦±¯Ç>ßò4ÜT®¿:î£ f®ÝîÕ¶Š¢(Š¢(¿ˆ©šON\6ö5€¡ë:3fTÝäj8EQEQ”?¤”˜–5io¥‰ëŒ}6Š‹Kø‡øö¯j¼Š¢(Š¢(¿tû÷`hxxҌҘñ;—¨ EQEQî4c·{ƒ©¯„£æÞEQE¹M�Qºž –EQE¹ã\�ÛÍŠ½U°¤(Š¢(Ê�ç6:¨`IQEQ”;ÎÄ0éfWÃhUà­(Š¢(Ê�i²+à®Le–EQE¹óÜäö&×®¦j–EQE¹CMÖ2`²åšš…SEQåNóAeHªÏ’¢(Š¢(Ê(ÕgIQEQe ·Ràmü2t§�2ÀMÇÉbDJ)+²7®… |²Éa†R‘Š¢æ$ë)Š¢(ŠòQkJy+T°ô1Èôå_þá :¬ Vßÿ)ž¸§ü†-ƒÝðóŸî£·`?ö£ÿJF¬(Š¢(w¶© ¼¥”&X Èô5qôà~�n¢?å"ô(ó—²vÃzîZ8ƒÈ¿“Wü ÛÍûo¾Æ;ï]$%*xä+_æ¾ù¥âæù7;ÀÅú tÌNz“¯$}Òñn.4\d°²”‘Ìë)Š¢(Šò+u{Á’ H·ã…¿Àž³Ý8þÕ¬½³›¤eÞüÁ’”>‰¶ œ=qˆ†¶ÐÁŽ›Y[SB¡¥&ËEQåߋɦã&>v[Á’ôãÔ?ÁÉ3d‚0s×läî…•h©>ZÛ)]ºŒiÖèº�‡“I“Ngq‰fX„"Q"!]@â»™L'—Ãó% 0ì0ÑXÃM‘H¦Éᢠl�¸Ùñ‘,Ò+ˆ¶t\²©©Œƒ/ši‰DÛÚØ¾œ ©L–œëá„†Š‹F0uq]­�w˜K�õÔ7¥Ðt� º÷½ÃÙG—°¡2ÖÍÚms1G# éeè¾pŒwßz‡§š‰ç  ¬€ôu§.p´�>ÈoìäP}9Í \"WƒéÒsì-^Ús„óMí ¦<„föúÇøìsO±¢Äg ù {ß~›ÝGèÏ bóY³ù!Þ¼ŠÙ¥t|R�gÙ¹ã5Þ:tžÁ¬D7cT¯~€g>ýkfZ¤»ëÙýúk¼ýþ9zS>š¥jå½<ýÌ3¬ŸQÁ’¢(ŠòïÞ­wÃíKF„Ò’ŠÃ‰äv½ý2¾Œù³gQU9�˜-@dzêyû§?â­“ˆÒ™Ì+7IqÕ” IDATö¶òþ›?g$+ø�g7Své­?Éɳ—èslÊkæPT!¶)›]ÃôòRôÞ^ë»È¬«FdFèj¼B† fVPU"Ýzˆ¿÷c\!:c.óm—¡ÞFv¾2‚#M>óð*¦YíÇßãDC�£²f6å!ÂÖ�™8ô¶_¢¾qQPÇÚÍ÷â{‹·NµÐ´÷ mÎf^8Ÿ¡IvœæÍ—^d÷¹^(šNMU/ÙG’‰A�GüâA~öãW8Ñ1‚YZEM¡Nz¸Ÿô5ë9tž>‰óÍdd„ÊšjlÓ ÂDlHuœdû~ÌžÆìòY,˜!î¹ÌÞq2¾Îç¶­¥ÂâøöŸñÊÁ&»’‹K0|;j [øqN½þ2Û÷Ö“ÐËY°¸ #p1£:ºe¨@IQEQ®s[Á’ÐcÌ_¶šMm¼}ø2'Þá_N½Ç¬ÅËX¾b«WßÅ Á•ÓÇ9q¡“td�â“lœ¥íè+üø•Ó´\<͹ö5̬�ÐâI¯âÑÏ}‰¹¦V!Õ1 3\ÃüŠrN4ô2töÝ™UÌHtÐp1�WS=c¡$ç¼Ç™Ž8^ÁžüÜ3,Ž%9»o;v_ä|}-w-fZÕØ"Å‹xâ Û˜¡ùØ…eT†n•ð3ô5ž¢9¥SºjsjW2Í?ÇûÛéë>Â�KŸ`ÎòBD�¢¥¡�Ʀ^r¡*6=ô[–T�nÞÉw¿�ÄØý8õÇÎÒÜ;‚™Ë£Ÿzš»gè´œ|‡Ÿ½z’Ì$çÚŠÍçñ/�_奷ë¹ÐpžËk–Q^§¹+ƒëƒUº„GŸÝJMØÇÓB”„Öž4Ž ZI-=»�¹‘Wš”–©ÖŠ¢(Ê�éf÷ˆ3¸�û��XÕî{2Bùœ³Ô×7RßÐHÛùCt^nàJo‚O?ZG[w/Éb>ƒM§9Ø¥“�çI*žd°7‰_[8aEÌ]´�Å­ŒE «(9ÙÈÐàiŽw>ÍæáS4Ž"³+©ž_C$×Å¥Î!RŽÛ£ëüañt‘ ÷��g ªÆbB�™Æ¼E‹˜kMu¶RƒÔŸnÅ1JX9wÕÓ )]¾’ê7ÎЗæì�óÄ—¬§(—¤op€Á 5+¸÷žÕ,�Y@"|…‚¥ìíƒ#$]0ç®ç¡ +©°r˜#ç 3y°¤‡Ê˜»p ìü÷Aò"WºÉH(ðèm<Æ�Ë’‘þüyH04˜&¨.fÞ¬{›ÎP#ö˜ô-\ÂÊ勉šüBæÌ, tA02r™ƒ»÷Ð_»˜•+–3U¨¤(Š¢(×»ýÖšIÑŒZÖMŸEÝÊ»éîláÈ[?áµSƒ\:}’³Jˆx9<€d+Ç´#Æ.µ7L,]C—ÁÍö�' ¦/ª£ºä­ý;t‰©3Œˆ0ó*gS;«á]!ëyùbê‘‹ì{·i‘™Xš@»�9Iéçh;Á™ndš–ã;ù×ΣA’ö¸ƒ |†.½ÇùÁ»Ùqq=ÐBQ,Cg²®ÒÏáú G °µÛJ¤ï�õÜü±&šxowËÕ}�«.%èŬzì“z¾ÄŽ Ž«fæÂ•TG5´L1ÓÆ¼²�|ý[)›pDšYÀôòB´Is7“ó�ÍGO0è¤éi©§§åÚu2ñVNœêeíæa;† ÄûÚèKf¨•á¶©™Q"fÈt\¦'»žâØ-i|Q+¿�\É=üöW·23jLX£lZ ºÐ‰Í\ÎÖ§«X¶þÎÚśþðªg/dAÕR ª–pÿS•,Yÿ GvòúGi5E˜~œú§Éºm-«fAQ3…‚D¢ž·vÆpïYL™™#>œ&T^ÇŒ ñ�Á­�Åëê(9ÚL|°�N4JçT±teuþ ¼PKjŠy¯²ÃÇxåÍ6¯˜ED¦ö©¨]ÁÌqÁRvä‡ÏŒ E”Ù‹×°~Ýb£åUÒiçÍŸì¤#›¤óô ú6o¥¦ª’ªÁðð ~òã0ñ�K‰Œ\Ÿ‚¡rÕ”rð´ Ý¿ŸøvˆmwÏd¤©ý†«æ¦*gQu#‚ôÈ)^}+ƃk憆s”Î^NU�‰ð8ôÖAzÌf–R\^I‰}N†L*…ç rtïût1fT–P\^E©=Y‡l*‰{{‰8EQEù7jê¥ëÝV°dûié¸Ì…Ë—H\¸À)G+žº]̼Ew±~Ílæ �{[»ˆ¿×À`ã^h<€„V@Ý“º»k‰™·°C¡�/[jÞ£}¨Ï,¤bñfV–�"k1–<ö›Zy·¾“¶£oð¯Çò=“„>��O•±°®šð­fJdÀàùÝÔgÀ(«¢nË“<~oåÕ“$˜çò­“)zÎp²ãA½k›ZÚØ}†þ†}ü¸a ‘BÃÐu M€ˆ°ð�GØØÜÇ[§[è9þ:ß9Èüz¦¡£ÀÔœ>ø›Úúxëd3=gÞågvŽk w?RÈ¢å³ ¥[9ñþnÞoîÃû‘ªÙTÕÔÉvpúð^ö7v’ÿ1WΤrî< UVIQE¹Übrà¶ow"Bå¬Üø¾^Êé ­ ¦røÂ%Õ,¾k=›6¬dfLG0‡‡¾ðf.ØÏ¾CghÊ€°((¯aÙò¹D5@h„JÊ™9«†0åØSÄ ÂœÎÆG×ò~â 2\Á†ûê(ÐGW£¨Žgÿ˜¿g»�5ЗòÐÍ0Å•óX4ùšq�è´*jjÂD*J˜º·Co‹ÃŒš9Í®eIÝt,mÂU{°ìÁu̼ˆˆFHu!çÎâ¾g~ƒÊ9ï±ïÐ)ZúÓì‚iÌœ·”•ó Є@+\È'÷ëÌÞ¿—}ÇÎÓ5â"tƒHÑtf-ZÉ‚’HY%³j(*»öœ�QXËS_ý:söïeïÑótŽäÐŒEs¨[XMXŒ–ß½‚¤y‰þ´�ÐMŠ«³nóîYR�™uYz×2âXô&=Ð +²vóÖ/Ÿq“s£(Š¢(w–±Ì“زy£|õÕ×~ÅÃQEQEùåÙ¹sƒƒ„B!B¡¶mcš&–eaš&¦ib†a }ðæEQEQî,ë™T°¤(Š¢(Šr*XREQE5Y'o,)Š¢(Т܄ –EQEQ˜ºA¥¦z*Š¢(Šr§ F§ÛÆ>‚ ¸æû‰·o¸[0Þ—àãØ¸¢(Š¢(wŒñþÊ“Ý|õÝö„€èf>t°$}é¤ 2IdÎA"AŽ}ùÏŠ¢(Š¢(¿(!@hùψ|àdšh¡Z8ŠÐ?–Üϸµu?1„×Ý‚?܇?Ò�L'�Ap5P‚уú(‡ª(Š¢(ÊG2š€‘W&¡!BaŒ¢ihEÓ1*j0JÊ?¶!Üv°$� ÙúÃC½Ø3æZ¼½ 4¡é iˆÑƒ‘·zãEQEQ”Iäïø*G“22ðÁ2 ¼Áœö‹¸�MD7lC Ç>–1Üv°ä õĈԮš½ k4@K#]½o›J,)Š¢(Šò “r4¦�ãßkEÓ0Êk0K+9¾·»{îÒ�e÷·,É8F¬£lÂçSbŠ¢(Š¢(—2äg³0ъʰËg ÷}l»¿ýš%ßE3M„Êg�F èkÇÛþwõøEQ¦dlû=´Ê¹¿êa(Šò+"¥D˜6z(‚ŸN~lûùÁ’Ÿ/¬Ò ®©àÎe�­ç?º‘)Š¢|'ý«�¢(¿bBÓA7�ž‡âÛ|·7‡&ȡ僥[«Iˆê-XAÿ¦ì k±¾ð�DŸûztâþLôGþ–‚ÿñO1Kô�ÊGÄD»ï?Sð¿ýfÙÇ{iè¯/±ø DþÃó„W-‚�ó×Wè`E \€€mßê¡dæ¿…U·q³1-ÀXû$FU¹ºbVQ”_ˆ4M7�÷±íçö^}d¾]Ó�|°¤] F¦ne -ÿöòA²õïâg~�Ñ~ QR‹Q- ŽÖ¤ƒ«‹¬¹˜Ë*‘ý¯áÅý«�k6¢° ¡% †úC °bˆhÂ2€rI‚‘!ð% A¨­¨hòøn’`°ŸI/ÔBˆ¢2„eB�C¦‡‘éôäë C¸-Z†€\Š`d¼`ª'\=»­0„Lõ#Óî¬?¶»¢¸ ¡;}½“�K�"JÊZ† wŠyb=†(-EÈAÿÀè� ""Q„®>d‰a˜ìp¬Ù˜ËgÁÀOð3…hQdz™˜˜nÕ ° -r¤©¡XÈÄ2��p: DqBw�‰8ØÅˆ�@Æû‘΄s£‡EÓóãNeÑb„é ö]{έDA)Â&H{ˆ¢R„ÈôOü¹ £B¶� ££••‚'¾v½Èt´X™ìB¦sÆS‚>{.šÑ„Ó?~}?RÂBÌÚˆµåiÌ93@оƒÌ¾G�ûÀ'#Jæc¬|‚K¸§ZOCT­ÇÚü0rO~O/ò8�øXÕ)ŠòñI$ âûSÿñÛ¶Mee%º~ ïuašÈ�±Çãm¿Uš@¿–o õ0Zõz´\7¹æKΙ€™›1b.þî£ã­ 0 ÑfmÄ~䳘l'ù½W Ò¹üúÑjŒUŸÀZ¹½(’7?xžÜþ✹„Ðç?ˆýèS\Ó K !Š"¯“yþÿÿþEF„ÑmþÿIŒRÜüKï’;ð^ïÐ$�‰% 1×} {ébDÈ€d¹?"wâìM^hÍÃ\óöÚJü½Eæ½æ>‡ZmÁ6BO=‹=OêÏþß¹nPz máS„?ù ºq„ÔŸÿ?ø×ÇazZݧ ?ý)4g'é¿ú¯øP8󞧱ꢅÃ`€ì=Nn×É]î¼îøT®Ã,Öñß9ެ|€È³Ÿ„–íd_dôä†fc=ý§„¦·�}ñïñ‹'ôÈ:ä‰�Ý»— 3ún£x%öçþLï Ù7_EΖІ¼�Ïã;ƒt&bÖý„>ñeôÞWÉì;‰¾î7±—Zä^øKœ†ö«ç`ñ§m}Ñø}2Gû1·}»ª—Ì·ÿ ·;•_Ï(A¿û· o\†ð›dχ°¿ð‡î{d~ô<^ÿ軫ãþÿžðª2ÜíBöLÇÕÓP8½¼Ú^Ç��|ðÏðÊ-º÷ÓXÜÃ?Å΂ۂüøÞ¬)Šr‡âå—_æç?ÿ9éôÔÓèUUU|ó›ß¤¤¤äÖ6,4ÄMSÚ¿˜7¯!&¦ÿ:±§¡×̓Á·ñ»&¼¨ˆƲ•÷2Þ¥þü;èÒù‹ïÅ\¹.?Ð1qC¢¨}Ö,dçAr'º‘¡Y+·bo3ð[þ/î´Åy£¡�UçëˆY�^?‡ é4“f§m ´íKè‰äv5 a.yÛK"w½ƒŸ¸.ê°Ë1V} {é‚‹oâõ:hµb?öøœ+ñ÷a”¢Ï]…±â¬å‹^ë­%#„�¨¹{ó&´pdòŒ’°sîǾo=²'ÏrˆÚ¼‡±ï[‹Ð̉ @7ÁéÃ;ÝH�È" æb¬}ûÑ þwþb6PDÑ—¬@Ð‚ÛØ�ÌdpŽ.'´z3f]Á±³H?‚¾òY¬yàíü¹+íP°·f1Vݘ­M8�Í@!Æ=ŸÃ,íÅ}ãUܶ&Èì­þ Öš‡ñÛÚp;!R�¹æq ã¹S{ð;»¿‹^õ[X÷=Ž×þ]üd€(]Œ¹rZúΙã½Cäö¾ƒñ™/`ßÿ þË;2:bæZ¬euÐõ6¹ó‘ƒYœ�ûÑ·mºçÁ»{ rÚü±êf @îB÷„sf¡Í˜‡^&ð¶^›qúH DÙ|ôÒü£?Àyï2÷o OÚ¯ãÿ!EQ&500ÀöíÛÙ¾}ûM%€ÎÎΛfž&úeüø�E Ú��=2öµC›Q‡>kZÈD¦ 4 NØk ÚìåÕUC/‰ßv¯¹=ŸÑYt"q¯©éŽþÃŽÖaݽÙºo¸£v1ôŸÆkiÏ®ˆ’•˜Ó=‚÷�ág'ü£�,Ę3 Ú¶ã%ÐÂh³Öa.¯…Îsø¶q]ˆ�ì?GîívHu"³>—s1î_ŠY‹§�ñüxËÕ§…k±îª@ví#wðÐÕ Ö¸úÊÇ0bý8/þNS§‘â«„êV£Ÿ;‰Ÿè𰾆(�‹±p1²mΞ—ðã\Ž£}õ˜÷¬&×¼ëÆ¬£5 sóÓè~+Þ©ÆÒi×ýøl´…÷aL—xÇß�®Ô t Öºûñ3¸aϸ~übúJ¬õ›½GqƒRìi“¬S±kÓFDÇ\¿k¼G˜„Áó¸ûê¯vz'B0}#‘ùóÑ#ÚµÁRxfÍtè|oÄ¿ÿ켚¯b¬z¿³/¸ kÝ݈ÖWqŽÔ缑+¸§ÞF¯zóîMx=ƒE�b¯™OPÿ<¹³MùTmÿiÜãû0¶=еîü×öÀÂ'1k‹ð�þ(ŸéB";�;R‡þøVì{Ž’y¯}É£˜å.Þ¾Ýx]ù)FÙü:Α„7?…½üÙcÅèv¹Ýð‡óÙ¦ áç8óZúfK3¹žRÌÕ›Ð2gpÞ;LàLøa–¢UÎCó›pú:‘¾€éË1gÏFÄ òµA¹AçüŒ�6c>za È´ŸÀkº’Né"ŒÚ¥ˆž#xm­ù¿a *7bαñ/½G �e¡ÍÞ„mÎG²ï¹3­ùéê²s¢DÀÄo?…×z}6ðz çaÔ.C/Š‚›BÌA³´kãla@ñ<ŒyuhEQD.Žß~¿½é YˆÊe3g!bQ„ ‡ÎãGl4įç›7EQÆõ÷÷³}ûvvìØA<ž“ÿÜsÏÑÕÕÅáÇ©¬¬dõêÕœ?žÆÆÆñçÝÊ4»ÿtüG[1« Õ>„½åQô™N#ô¢¨ríöZŒ>û.Œ3!ÐÅU˜KWâîzž\Oú¢'1‰!û›ðĬDZ·,ÇÛ~œ ºëáÏÀ™&èmÇOú€Ž¶p š×‹séÊ„àböZŒB‰·çL>°2mûq‘ƒ6VÑôÈuÇ’ALœòð�9¤‡ô&{u°Ðê¶aÍ1q_z ox’ú }ú¼rHÅmÍez z›VÝ‹V< ¡uM²LDÑ ôÒ ~ýe‚Dþ\Ð oÀÞ¹=´/sÝxœv܃ßÃjC<€~}°¤•a¬–Ðܹöd›Ó`W`,ߊa÷�Û»y÷*äõÁRx&ÆŠ­¢™Üá=È{7#¯–"³1îÚŠî6༿y®i¨:zÿ@3Œ!Ê—cVÚÈ®c£?ÇñA"ªïB/6ñw�Eúð‘õ¸Çö£o}km=º#ÔDnûëøãçÁE¶Á=¹}ÓýØwK‚9� §‘Ù¿‡`lZQf .î$wf1¡ÕOc÷†aÍFDï;8Ç�] Ôe ÿôËäæÔºçËØÁ1´U �ͯàÖ7\�¦ x‡ˆ;ÿ?b®û"vizm1Á™âµt\­Érzð½ˆ7ã·1ïy1lbÌpñ÷¾‰×w]¦°p&zÕ\d×[C€Ž¶èiB›—B¢“ÀÓÑBp‡�`èàKDñLÄ’åäv} ç|Ø30–£*‹ßß…Lº ‡Ñ—~{ÉNÛ!!òÓ�ÅÕh"A€ôOæ¥ê�Ø÷?�QF:D¸3½wß·pζ3¥èbì'~sÖ È"=›Žó'K¢lÖÃÏaVÄ�™Ñí¯X‹»óŸp.´�UŒ~÷ob/.…Ì@~Ê´/…oëHT‚IQ~� ŽJCCCã�oÛ¶ )% .¤ªªŠ+Vðíoûš`é×Ň –“MÃiPZ‹yÏ'йDîí×ðú³ ã�?ÄšxË–\7ÞÉñëµü4NÁbBÏ}óîõ¸?;LÐs±bZI1 ô6ú¢¥�ëÀkí!0q�¾�— œÑW ½cù,äà‹ø=Ò{Z ÆÿÏÞ�ÉqÝžÿ¾¼ê®êêê}¢»q Àû¾ÄË–dK–%Ë–-yäЮÞ±G»óÇìÆÌÄDlÄìLÄ®7¼1ÚY�LËò8$ %K¢KI$ €¸èû>ê誮++�·T}°Ñ)R¼Þ'¢ÅPwVeæË,Ô/ßï÷ÞÛÕ�ð.àL,Õ'kÈÌ^°v\ßIGö`ÞÐù#8sÕ×ÿ=Ô�yp"wˆÚÅÙ×ÿÀlD�P]Sâà—ŠH;‚Ž‚.À_ù’ÖLD0‰ÐòÈJv5ˆ’%¼LÑØ†Ö¡²!ßçeð.f@˜h›ÍüîçñÎ>O-'q³µzOS÷­X;’x§¿…;½ˆvó†×ˆZï˜}A¼WáÎeÑ7ÆŒ"‚>p7f7¸/ÂMç16Må…Ñ| ëÆ›ÑÍhâ5ìçþi}o H ô£‰aªé5çVÄ~žZ×à WqñÿP›Ì®ß‡›Å=û4µž~·|#æàü÷oá,laP›ÅyùèÛ¿Œußg�úµŸþ7k¯ß®:Níз1úþ%Ö=-Èâ ö+Ï¿>mZ¤vøGèŸþC¬Û—êAùé“«uSõ“¨×ißCðÑǰzŠxg¿Gmp¨\@kêFouð�Žâ—À‚h+ÂÊaÿü+8y‰h»�À½ŸÂG©>ÿsÜt ¿‘Àg>�qó]8—¾‡ŸÇÏÌ ºûÑbüâq´¾Vdñ5¼Lb%¼Ó?Â>éI¤�ƒhÆíŸÆˆ/á¼ð÷¸39õb>þ§XùÞäÿ‰›¿ÆÄm„µ£ï…¯b_žFFßóq·¯™e׈¡ßþ9Ì6çðWqfòˆØ X�} ëÞ»pÆçð……H¶ÂòkÔž~·$Á]Âhº-±É®EyO( <õÔSüèG?biiiÝßžxâ þò/ÿ’O~ò“ø¾Ï±cÇ8}úôÕ¿_ooѯc�‡q½9ÁuDýÖ °ÐR}Û<¼c‡pο¶òd>‹¥õÁ’_Af'�°B°´„3ÿ%‚ =ù3¼ÅQ|ó~´T;bd©ub Ä`þñòU¤ü'X[qŸþ©]žÙäÜ1võ£iç© Ï_û½|�õ"çu¯ IðýõõÒ¯¿FÓ@ÛPåoè ½·>ŒÜ)Ö§+A´m·böøÓ�ZZ²-` ´ "ž+ŠÖu+F‡‡?3„4V¶±®lÓV½÷VŒæ2Þì˜Éú6¦VøâÉ5ó9ȉcÔžÿ•oý¯”ŸGßý;n¼’÷Ó]{ÐRîàÈúaýÉ=˜;nF'�t’X<„z}ð&ÚîÀèG³ÓH¿ƒÀ£n²:�@ôá?ÿ Ññ_ˆþÅ$¸¿¸2u‡¢(ïG���|ö³Ÿå–[nyÝß¾üå/“J¥˜˜˜ \.óøã�së­·¾ GùÆŒH$ò^VïUZ_àMýË]h[¯§5`Üúi‚Ý�úöùóøNóÑ�±²²0¹!¼¹!ÌÝ»ÐO�FÛ;Â;Omðóùú°öµ#g¿�“YóÅj´`öu£9'¨Îeß uÁNÌþ�ƒÛð~þ×T_=¿y½RbFs ÿ~q‹‰¤œ~Õ…H'šN=ðC¯Ï9t�•ÊJmÎ é"í%|ö!‚+ó9I€Zcé�mHï¼z‘Ü…Ù†öпÆ|@ 0º}ñ?àþä?â4  E{Ñýß0]Ù&½‰Ðþ=ÎÏ¿‚ïE‹`ýæ¿ÅâÊ61Ðî!ôGMÔ~øï±GWzY¤®®�÷Ú�ñû2ZoâÕY¤Þ„ÑÓ‹.ÏR™›_ߣbµbx³ß¥öôÿ…k>@ð¡ß%t÷)JÏž^½Æá>Ì»ÁHÍP}ò üÞ/ºû‹o¹@啉Õíbû±þšñ•'ž€þw‚7üÖØ(öù¹•í$ï$ø[AúŸ(çú£ÿëÀ'°¦§©�^I h}˜àãû‘Ãߦrdã‘?żå¼…oâίœ» õ=Žug;Þ‰'¨�G±þ �;.áå~V¯M&Zã.ŒÖ"Þ/Ϭ/|ßèÊÜ"B¬ Êd}¶}Öü.} wúŒ½wc¼tyãA(Ÿ\©Ÿ{£ c›D†WwuÍã‚ú(Ñ-6Cúà-ã}û¥Áõd/[#¾ùQý ;Eyët]g×®]üÙŸýO<ñÇ�Çuëß[MMM:tˆ¯~õ«ìÛ·�?üÃ?$^- ¾îÏ·xç‡è¿}�l~ Y^ÄóîFoìE L¬ÕsE …–ì@¤cþ6ÎL þ�W¬�E¼‰¼=bl±³.«^§ Y �[†š‹è¸#¦á½ðòúh©Ýè©VäÐÓø¥7¹,‚CßýæÞ^üc_Ç>unC=ÉÕ mÛ1÷ä ¾³!xÑ‚Swo¦7@OðÓ6˜ h�íhrŠZ>S  „é"KUäò<~©­±-x¿âAd£Å€ôY¼²ÜÐ×9ñ¤GX>²\Ä;ÿw”ç×7…0øSÛ ØÿøUÜ™i|óo)O­ ¬Ãÿs³T¿ÿ5¼ùiäôßP ¯ßæñI u‘êSßÀ›[ $×}s D´��´WÒP ýèÍ]ȱïãç—WßNкnǺñòÂwqOáUÒÔzûÞóE¬ ÿ–Úô2hQô]böuàÿ¯¸SÃø“Oàìþw˜÷~sü¯qÊ`4bÜò1ÌæÞ/žÄÉÌ"·ëO1oÿ8ÞÌÃÍUÁlżïÓ¡eœ|w®‚ôûèŸüæÁûð‚WtÀêÄzôÑ‹ƒT=…;c OBøN¬½çñ—ŽÖ?ñ]X|mîÕã¿ÀÍÄ¡}Á;>F`ø"•S—ëó8uß�VœÅ™}ó�þfü î¹³ø»>޹ÿ>ä@ÿÜóø¬%]dißN¢5ö¡†êifa¡uDÈîÔ•ÜÊû\ ÚjsxY=u+züeÜü5Òàö,^ICGÇŸ>�WÚä@u.)ÊûÚÀÀ_üâÑ4�ãÇ�S«ÕøÒ—¾tõï/¾ø"/¾øâ»x„[{ëÿm ⤃¿8„;fØõV¡†3½€ô-´†Ðêv^i— Ô‰Öµ]."}³žn»ÊÅŸ8‡·pÖ­EÄŠÔ~peÝ9Ñz#æM·Ãô 8'ÑoØ‹`„Ú嵹ΠZgZCçØ4r³Àm+ñ^ŒÝw¡W±ç2ï@‹H°³øKkz ZšÑ‚j¹å i1Ñ~æ�›`ìÎ¥Kx§Žàíþ4Ö}� OŒ {1wì€Égë³e‹ú-¿‡ÕT¢vøI¼ì8îÐ�Þ;±ö-âÌ—;#˜Ç=y鈶ý˜7ß�˜~‘Ú…3o þ0îè%üñÂ~¹“ÀÁß'Ø�¯÷ /P{ån®ZÆÞ{1ÛÊø'¿‡75…{ú‡èÉOaÜû'ž@]¼×¾‹}nD‘ºÒS¸Ãçðjoj1ôÝwaöñO~{óiÞ ÂB´À|ð7ÐÍÒ«§é„3Gíèp†²`mCoëG« á,ά¦àD­û~Ì x§€;¶:âPÎ<ƒ}ê>·ŒÀþqóÌv‰ûÂK¸óW¢7‰?ú#jC·Øñ0æÄ2~Ç]è‘4Ρ—ñ–W®�[Ä¿ü4ή¿ÄÚs/Æbí¦;ÑüKØG^YM“Vfq/Æíÿ<æ¾ÛðŠwÞŽÈ¥zìÜê}œ¿ŒsîeŒî�b<€ëBàŽ½È‰ÿNíÌÐj�QæÎk¯a<~/�›‰?º£¡Œö~õíèVZáLáœ8…5ð ÄÂq¦¯#)Náú$æÝ‚éØŒBá,µ¾…[¨_$¹4‰7>†±ÿ¬¹‹xK'ñOýÕfkàӊȪ ‘F4¹„W©ÖÛÉÉã½ô÷ÔŸƼéóèû—ëÓtè>Þ‹ÿïôÈ5M-w¢(ï/»víâ _ø}}}T*×.[imm%‰\÷rêöÓY¼îíˆ�…IÜ˧WFŽÕð§_Áþi²çWzQ®ìßCfNa?³€œX3´ÞËâù6ÕK>îü†!ò¬¼ç™ïcÏVð7�Sª¾�÷Úw°Ç–Vj¯6cã¿úMìÈ,¾Èú±ÖçÑõbd§„\¼Œ;6Œt´t¢wô §ŒŸYÛ•%‘Ëc8¿ø:þØ+«s%È"îÑoP-u#K5dí µgŽâ�\\_cV[À9ü7ÐǯT‘cG¨ÍÌâŽO­ ¦}äÒΡ¿E¶ |»Œ<ÿSìÓƒ8 k�ÇEΞ ö¬�ž(â×|¼Oâ/Ç]7_”�?rûç4s¼î ‹œ~q}’¬à�û!6#ÏCßuZugdͤ§Wö;ø=ªy¯ºòz¯€{ñX¨Ô—(ðkøg¾…=šÝPï$¨¯;³„{ìP½GðÊy/œ¤vx ¦fÖ§³¥�œ:Jíg xÝýh‘8KøÓgq§ÖŒ0,ŽâÿüÅ>ÄâÊÑ7ŽóÌÿ‡?¼½1YŸë!‹sxSó+íî#3'±šÁëÙ‰�‚æC5‡7�©ÖjùúÌâbÿý0³¸¢(×´{÷nvïÞýÆ^�•XDB7ë1É;°>œxê©§äƒÜ} AíÒ t§Jdÿ݈àj ‹?}‰òWÞ¦‘u×KkÂüøÿLp�Mõ‰¿ÂY\©oaôƒŸ!øÈM¸Ï}•ÚÉó›Ì¦­¼çˆ Úžß"ôÑñŽ| ûØÉ_i‘Õ÷­ÀÁÿé?`d¾Mù›ß¹ŽEl߈ŽHõ¢·w!"íûÁ�ÏSþæ[Îÿþúþzï¾wû0Ey796աרdæÝò¾}_øÏ<û™L†`0H0$`š&–eašæÕÃ0ÞÂBºº®ß[™néJÏÒ»Ðß…ÑÒŽwí(´`3ZëDa~ZJïV½íFDeovüÃ(¢ueÑç—^y%êéÏm·b=øQô�‡œ=JõÐOÞ÷�Ò* §(bR"W~„q�¹ýÞo>X2L„-Vƽ¯N¥µõù_¾ö6ÞÐÈh¼?"üçŸ^ízÓ,D(z?Öç`½•ù•”_?Í„PÂp±>³óÃ{ݬ$  ?øïˆÜõv4£ˆp„Á‡°ZïÀÚ8ÿÙû�H¼nqBEQ>l|¤__Üýò¦ƒ%-–Ä/-á•–Ñ"‰«J°Mo÷ñ]³ÜìÂÚl½å½ÍBkظX߇�ˆµ!bo÷»êˆ`"Øðv¿±¢(ʻ·+¸Å<"ÑüN”+o2X’R¢'špgF©-L¢"AXB耨ÏF-6›ÀNQEQå-º2¯”Hé#]Y-ã¤gpŠ‚}7"ß¡º›7ݳ$u³kÎä%ÜÁ“‘z(ºš‘BÓÞñÙ4EQEù‘>Ò¿0ùøN ·R«Ù¶ïC‹6\wq÷›õæƒ%)Ñš Ä’ø™üR¿ZF:5¤ç¼#ó(Š¢(Šò!veI“52šFßÖ‡™hÝxÇ%x‹3xû~} 8ÑÜ…Ñ¢&…SEQå׫^Ÿ$ë1É;(Á¯¸âÒ•ázŠ¢(Š¢(T×·ðŠ¢(Š¢(ʇ” –EQEQ¶ ‚%EQEQ”-¨`IQEQe *XREQEÙ‚ –~-$¾S¡¼œÇv½÷ðB‰ôjØ•µ·|œß.�Ï̱\±ñ¯¾‡Äw«”rs,–q>ë’½;$¾]¤¸\Pm¨(Šòk¢‚¥_ ‰³4ÅÔв¥ê{xÞN‰[œgnt�ôr™·4k…ô(§G½pŽôreu�)qJ‹Ì\:ÅÌ|Çß)RXœdvbˆ™‰ÓYœéÚ¹×ϧº0Èè¥ËÝwûXEQ>Þä=O¸±·è¼ÉK)½…BÇL‘‡ÐV&,•ÒÁ.eXvä¢I¢LnòÓÓ Ôt Ó0Æ5¢ÉFÌ·ÿ´>@$n1C±À}ïFÝŠ¢((ozRJß^"3s™Œ$ r5.:A¢Aýþ!&ñÊK”ŠeÉ‚s%Ø’Hצ¼”FSDâdi‚…ù9ÜDÛ;š±t M`©¾NEQå=æ-Îà-6m§§£� ±Úõ é¦þ6™òþ#]*ËÊՉΖ.Vb%‰[[&Ÿs¦‰5ÜÅeìš ÖÛFC2�®–ÌQEQÞ£Þr°¤YA‚á(asó®é–ÈÍŽ07;GÙñ1£­´vÐÜ]é�ª×ÇÌÏL�Íå±aÆHuí£{[üuÅT~5ÍÌÈ é¥"ž šêa[g'Ñ�‰¿<Âàù¼ÆÙ=Ђ)|œÂ S£CØñ~z:;zóŒ ^"·\Á:f¤‰–Î>ššO-7ÎÔô,ËËË8#H¬¹‹dD£”ž&W(áIƒHs?½ýÝ„tA½'%Czvœtv‰jÍEJ�@¢•–ΚÂh[ÄÒw¨,M1;1A¾T+FrÛ:ÛRº¶eLJ‰[šezdˆÜrOXñNºz·Ó1q²#ŒOÎRª”q=ÐÌ0ñÖn.…Åi–Š|$ÚwÒÕ½1uêRœ»ÈʼnUGb„R4wÐÚ”ÀÐY#?q–±9›æ=7³-X¹æeŠÅv0I$¹IéS+ÎQðƒ¤R4°=d•ôàòCh"-ûØÑߌîWYNO07=År¥†4Ðܵ‡m- Ö¦tK,Í�273KÉñ1#­´v­½Ç6ks»0ÍìÄ8¹å ˜QÚèhoÆÒ¡²x†K£ËÄ;÷ѳ­]øT.0<¶@ çú›#Ø…QƇÆ)V¤fLl££§—D$ˆÀ£Ò÷ñ=oõGJê)—s—O0<4BYD‰74Àòcç_f|6�'%àSËM2?3M…0‰Æâñ¦±±kJâWç:q„©Å V¢…XP°vfŒ…tB)�I,Ê,½Êàùóäª:‘xаVdaìÃãY¼u»s(f–p�ñx J“L ¾ÊøLWJ�5Šù•â<¹’³r@·\ ”/N$‡¬«õNÒ¯QZ˜Gc$Âqeg:áÆm´´÷ÐÚÞA*Føer“gºpž|Í$’hÄrÒLž�Á± ®¿z�Í�dèò0%!ÞЀ(Ž1zþc3›·»”ÕÜ0—_{�t "ÉfB¢Äâå—šJãJA ÞM“•¯§š‹5¼òS“Ó”ôvZá•shVœDS‰ˆN5}‘ÁKcm§^à¾8Jf©ˆI‘H&Ð�3ŽrñâeŠ~ˆx"‰é-2;rŽ©¹ÂJÛKœ¥çg©QâÉ‘€dyú—Ï¿ÆÂRyÍÈÂõŸéI��aèÒ¥¡1…^žaììKLfª¼þeßžcèÕ_21¿á‘  8{†Á‹ƒd‹výþ“.¥ÙAæ3y6’hl$ ¡kYË0~êE†'fq­âÉFšCav’B¡ˆ¨§(ÊÉ[ìYò©.Ž0VžG_ ·43BCç.š£•ôéÌVçÍìÚÞA@x•ÆO#;;L¼á©0 %R†hÙy= !Äf©éR?GÚÓuóýtÄ ðËdÆÎ26½ÀrK‘¦8 }iY<ÂÂåsèír ºhl׋Œƒíôío«qH—òâ0£Ç(/çq“-õc!BÛ®›ÙÖð*f†^eÚn¥g×^šbÂ+0þò/˜[œ Ô×LÂ$ M:wÑÛÑF@¸åFO';u‰xÃÍ4…7iÁÚ2™‰aœh7Û÷Ü@2¨ƒ›aüÔ«ÌŒMPÙÖ@d‹”¦´³äª&‘žƒìèKahë{†@"ôí»n¦5$ðJ³Œ_:Å¢ØNÿÎ$ÂÒÉ2rô0ùÌ4åîFbWï†-{î ¯­C€SžgâìËäÆhh¼‘Æp˜Öþ½XÍ>±æúÉIéP)-Q´Ã4DâjϘogIç|­íÄ‚+ƒ,bm}t6Åê×HúØù Òs³�ÚÍÎ�â!á™:õSÓçXh¾›öˆ š™d1�Ã급�Û; ¯²ÈÄ™£dg‡H$’ ëëzç¤[&;v‰jh½7 ÒÁÍ1yöÓ“S”·5’ÄIõì"nˆ…‰ËT´<ùj˜Î=�„:B‚ ýìhè[¹—lr#'™œ¥Xí"j Á5Ó±ûfR�›áÒ…óc7²gg'œåiFNž¢œ[Àn‹ÖëŸ+)C´î¸™îDé;”‡¼Ìü\#ÑHkã� ±óódæÓ¶íc{o'!Cï¶rñè 2Ós´&{ ®o cgIׂ´ï»ŸÞæštXž¹ÀÈÐ8sé&¢¡v,­¾ª·n¡kï-¤+vé°F#�;ºÑËcŒ �áÄ:hniÆZ "¤gS)dÉgæë£ùÊ5Ð|\ÏÙ䉽žf „ãh5ïÊxv=L�€†bQ¯¯X¥à†ˆÆ-ªK³äò�´&#'ËìøÑÎö�ÝD‚^a†é‘±7~[UÙ^!%¾WCjÚëj°ê„f¢ë&V²‡žÞÖ =.:–±õ~„0·î¦?ÞF>;Onaš¹‘<®v�Ζøµ^õúž!�È­{ú¤�ïV‘º¶éµ“ÒÃ.§Yv‚4Ä׋ûÕ >�mD·îVšf IÏsñåjsK·‚'ºi „†®ih²†çû«÷þÕ{Lߤ݅fbèZ¢›žþv¬ ÷’0ê×®V¤�YÀ1b„õK ó$Qâ!¯2Çôä~r€î®VB¦ :7ÈøTaËóÚü××s/yø¾ z±Ù½'´z lDH¶ï¤µ9¾.œº…µ1 †¸õô+Ï;Òwð|aê+)ñkÜBGáÖ¶~hPEù€xûgµápˆ€È‘Ë/×SRÖgkNgÁáèô0¬¥GHDM„›¥äEㄯþD ˜BHÜâ$S“óè­{èÙÞKDäX˜�¡Xu‘n™ªã£Ç:hjn&KŽD±Œ·ïô×>ˆK¯B1�Ë" \© ü•'v�nF‰‡|jµ®Úp^‘ 5H›Bà 7’êØAWw½H¡Xª§Cß.ÒÇ­æÉ§—Ѓ!B �Ä«æÉçrÔ<éÙ”³ øÁÑDtM<éc§§(Ë ‰–$oÿ�0°‚"f‰åå,ÕZ½ ¿B~nßM„Â"Käò…Õ{¬¶ñ“xv�B.‡íÖG[ÆÃ·VÄÛ<Š©Õk¯Ê™1–jD;÷ÒÓÝŒ,N2»�Åñ}|§HUš:hl­]ê{ IDATL�%‡¼™øÿ |õ^’>Ne™Ra3 ¬<Û�¼r/ ƒ@0LȨR©9hVdÝy…BAt!ñ�2¥|–Š]Ã×¢$ã²:M¦°’—.Õ|–rÉ&ÜÁÜ곡…ˆ…M4{–̲³òz®þWQåƒæèY2§ÚIf™Ÿ:ÇH5K<¤QÉͰ´¬ïì¤!l ®w1  ¡«‡hö<³—^ÁN5èøN ÂM¤šš ‰"‹£ChgGO V JYƧ&Hg“›ãD-�åìEÆGKD^)MÅñØX/ûÖ8¦/3QË hTó³d³.á¶N’Q�DXÝ!;=N,¸“¦pœÆm­äƦ˜¸ä²Ü�ÀÒÁ³«hÍ;Ø–à×–ÉN\¤`´ÐÚÙ³®gÆ·˜[ĈD04;Ÿ¦b„McµÞè-«±¼0É\m Í/SLÏ’/›$z:ë×~…ìÄ Ó™"±wÒ*°”­a%SÄBkŠªý™ù<;hŒ™o �@,E²)ÎÔÂc^‰D4€W\$³X%ܺ‡¦˜‰jl#™^dnú#vŽXHÃÎÍ�+b�]õ{̯’›ºÌÌBžPßmô7EIun#;<Íä%�bC’€¹Òæ©>ÚÂøÕ,ó“sÈðvZÛÚ‰ÁÎ瘞&Û˜ H#”æ/2E !S`ç ׬;zól/¿Í)LY¥”�eÉ‘ÚÖ\/0Gb†H?ÏÂÔ¡®N"‰&’³ÌÌ_bÄ)Ð�bàá8áö�4…fb;ýû ¦Ç†ÉL¥Y”:š$Þ#éûØK#Ìd*4켃dÈ@C'ÞÜIbé,™¹y’ }´ï܃3t™ôØyE½þDb� šXŸõ–ÏZV)Ì“q=¤Ѱm�]ÛVæc3ÑIksž©¹ 2å>š¢aâí{Ø®™�žan|¤†fEI%¶¤W£’›#“ò×§;¤W¡œ›dyÖ­×éA"­;hojÄÔ öÏC ƉÄÂd²ãLeë_˜F8Es_?­-©zJGÖS`vÕ!.À)Î�÷4&›¬¹¶~yžL©F°£“ÈuÕ¶„'Õ½¡�0;?Éô‚ z˜†Î›èèì¸ÚžZ0E[ÿ>ô©!æ®ÜcV‚Æžlk»r�Õ�³Z­õ4\´mÛ 2;=ÅÂÄRjhV„Æh7Ò÷(Í_"ëiëï"jéh$hîì snˆ©É4�»[éÚÑÏäø³# WGpjÁF†þ6$¤š_$=>�ã ô`M=;hoNb®ì+в‹¶…“d'È·t‹'iݾÝfna’é´RÇŠµÐÞR¿o„ôqj6º/BÈõÐwL���žXDbˆ·ÑÙÕGs"Ì–³| 3ÙGÿÁøÈs£‹h†‰¡Qo!TfNQ”ñÔSOɸÿ:7—HßÃu¤fbêúæÃý©Ohç{.ž·R·¤éhº�®i+¥é:8ž�fZèB\ó½êïçá¹¾·R_#šn¢ëÂwp\ÍbèbýöRÇ0 „ðñœzáêÕòf¡¡õc’^ וè�@}2E)ñ<ÏÝ4Ñ4� ^wåzÝ´Ð5‰½8ÄÈ¥!ضŸî¶¦zªIhèº�®ë«e)Râ{®ç!Œ¦®!e½==ϽZP[?&]¸å¦^{™bb7ý»¯ 8¤ï⺫¯[פkãxòVÎÇÇs<_Ã0�zý‹¬/CâJ Ý4ÑE}þ¬úñø«µÈšŽnhB[­?ój¸žDÓÙsÏ0Vibû�[iºÚ³äQ}‰s#EÚo{˜®øÚž%‰ô×G3,tmýµ¯·‹‹çÖë–ºa®¹w®ó»Úæ«û©¿Ð«¿÷ʽ°¶Í¥·öúŠÕ¶v\¤00M¤·¡íëôºa¢ ð]Oj¦yuJ×qðÑ1L}M _ �úý© ŸòøËœÎÓ|àn¶EÍ«ç¤ëÚÚs—>ž[Ãóšiah)}¤ç]­õZ½nõëêû.žë�nÖ'<býgJ´•} !V&¥”¯?—µ×Я·£çKÀ¡8?ÌøD‘¦7ÒÑšP“R*Šòžö̳ϑÉdƒƒA�¦ibY¦i^ý1 ãÍö, „f`Zoü2!4tÃB¿æ¦aX\Ç[­¼_ý‹fÓUVu K¿Æö«alÜhíöF`ý±±Éñ 4#¸f»Õ<…¦VðÚ£ƒ„@Ûp¾B„n mÒHRúxN‰¢&[ßc¼áuF�ÀºóÑÐÍÀú±TB ÌàºT¤Ðt í ƒ �¶Ò^~u†…¬‡ÕÚA"¸Ú³"Ý<ét /ÜEsÔØÐÑ V �¯õö¡›húÖKê¾á=¶I›×o`\£íĺë»ò;ͨ¯yýVm¯›Á í¬aXF ñúíVh†…^óýë×rýk…ÐF=èÛŒ¶I{nù™¢~6?F‰›¿ÌðX_«÷(¹ÕÅåVËNÔìÝŠ¢|°¼i¸a FÐ,óºÊ]¿ú“{0ÙBcSü=ûåãU—�±É–¦u#ú|»ˆk…H¶¶x�û{‹@³¢Dâ`½}Õâï)‚ I~9O�f†Iõî ¹­�hPͼ¤(ÊË›LÃ)¿VreP¿Øz�8EQEQÞœw0 §üZ �Pa’¢(Š¢¼«ÞûýýŠ¢(Š¢(ï",)Š¢(Š¢lAKŠ¢(Š¢([PÁ’¢(Š¢(ÊT°¤(Š¢(в,)Š¢(Š¢lAKŠ¢(Š¢([PÁ’¢(Š¢(ÊT°¤(Š¢(в,)Š¢(Š¢lAKŠ¢(Š¢([PÁ’¢(Š¢(ÊT°¤(Š¢(в,)Š¢(Š¢lAKŠ¢(Š¢([PÁ’¢(Š¢(ÊT°¤(Š¢(вãÍm.±³S ^¼ÈØ|�ªã Ì MmôôõÓÓÞ@@ïÀ¡¾ ¤Ä­™ºÈdÖ#ÙÑÇ@o �k†Œ§˜f|è2Có,Û.“xó6¶ì w[r‹×*Š¢(ŠòAð&ƒ%ŸÊì /ýìû¼4Z æÉú¯u‹h¢‘Ö®�ÜvßCó4GÎŒ’©@8ÙÍm�=Îýû{‰›§0Êáý˜£ç'Y–!š¶äÁ�ÜË�½©zÚOÖ9üÏžef1GÑöF˜Ö�[xäñûØÛg]g—³È«OÿCG¿�F#þñçydOûÕ¢tJ,,Ì0›«!£{ù�O}š{w·bâaÛ6SDVRpÒÎ0xüž{ñ$¹*f²—›ï{„‡ï nÀ£8u‘ãÇ_áô¥Qf²¤0HõßÄÿýQºçŽðß<ÃÅ\„[>ûÇ|â`Al¦OŸ¯}ó$µ–xô£¿Íý{Õy^;ü Ï=ËBE#Ö¾“;xˆ»÷wÑà’>Å‹/ŸäÜÐ8‹ËšbÛ�÷ò�?ÀÎh™¡ã‡ùù ¯2ž­‚¢yà÷?ò·öDT›¢(Š¢lð+K3!�Z;;sŠ’[Ã©ÙøRâùîþ?\¤æ „�ÌNMpyx’ìg�Çné"(À/œçÿá¯xaÖÁóAs6]7Ý…¸KgøûÿôO—ñ¥@ ™™cph†Ï}áw¹ww &e.>û#�yH)Ð4�”’™©Q.ŒøòŸ‚½-¡Õ×.•ÒµŠ|ж‹\Ûͤ˜FCŠœœdÿÀ6ºb )ñ«sùþ·ùÞs§X°%Bäì,cÃŒÍýò‰ÄõS¯æéŸc²äƒ¦¡¡cÚ¨ “XcI‰™é)ä…9ÝÛ�%ªÌœ>Î¥é4­Í{‰¤ÂPáŸþîüøÕQ–Ýz;ÍÎL122ÎÜ'þ€O=0@XTþÅ�ùÑ‘a 5‰Ð44a¢·¥©I›‘_|‡oüð—Œ.¹hšŽ�;îÿ Þ‹‰SEQEy·ý Á’Ä.d™Ÿ™¢¶x‰_þÓañÉTŠ€(qá§?àðåyl£…û~çw9ÍpâðÏxið /žØÍî¾6v&mN?ùuž›´1"Íì½í^nÛ‘Ä«tïî$ª-sú¿ÅóSEôx/}ü7Ù©OóÒ¡_prìež=±�]])¶EÀw=|ߤµç ylöÅc¼ðÊy‡^àùÑûØÙÔ±zøz#ûîúß»“¨ ©³kM·Š0bôíÜÍÁ=gxþbŽóOÿ-ÿæ¹ï³ûöûxäá{¹¡»™XÐgæµ—xáØIfí0{ü(�ÜØÂôKOòÔÑyO<ÇÑ›vòX/øž‡ëzø²•G~ÿ·Øññô$»“A¯‡îÖNbçr̼6Dú£û‰ˆ.¾6z#­ÛéMºŒ<û4ÏŸaÉKpÛoÿ.÷vzœ;üÏ�âÕÇØ³§›[Z%¾çàº>f°ŸßøƒGi5¬dÝÁ%^šg>[Ão¼�ÏáQzB6…2´o ¨`IQEQ6ñ+K¿ûþÍw¯ü�@´�·ßÌ�=-•aN\ÊR²%F÷MÜÔÛ@Ô·èéàü¥WX˜È�]ªâÆxáL´í{?ÆŸüñGh³V¿¶ýâŽ^Èãú‰¶›Ø×Õ@ÈÓèîêæòøY¦‡ÓJ5¶EV^ Lâ-}ÜrÏC$·ÃìÂ$‹ƒÆçЏk»Žô ­ÝìÚ»—ÄfÅU Ùû´Nè™83:K:›åâ‘§:q„›?ö9~ï#]ŒMN3µèAãöõµ ‡é=p -/ÿ˜Ù|�™‰%ÜÞ†Õ÷µZ8xç]Üܸ¦¬Ühbgo-‰óæ^ãÜâã4s–×ÀL5Ó>°“o�—FÉ.ûвŸ›ûRD>=»n ñÌódç—X\(⯩87£]Üzï½ \Ù•»H<Ä2T2L/,ѵ§‡�ÞfÂ*§(Š¢(›ù•ÒpáÖ.¶…«Œ�.àhšnç‘Çîe{ÜÀË(85<À›øý<½æ¥šãâ»^)CÖñºA¤c;�Öúþ ¿œcÉõ�Ò#wá{ü߃bÝû趃çû›j ŒP˜€@œª³>Ív=´-;ïâ÷zoà¾ÑKœ9u’“§Npf"ÍéçJkÓoÑP]¦ �=ÉwþæÔÚ#|ðmçÚEäWÕ¢mg?m-']šåøÙY¼—™—&Í-ÛØ¹#…^dÙ®à,¼Àý«×µƒæþÿíÝipç�çùo^uâ¾â"Þ¤J¢$Ê"e‰’,˲­¶ÇǨg¦§{'fwÞì¾Øˆ}5ójb_Ì›Ý�Ý�è˜íž¯§Ýë¶-ù’l‰º©ƒ’H‰÷-’ ‰ƒ¸ˆ£ÎÌ|öE@RIµ%ñ÷a Teef=U`þêÿ<ùd@Pô1DœžçÔ²ùÞ»9sy‚�Žžg÷ßÿßìi\ö‡wòõ‡·ÑטԘ%‘En",9´?ø?ÚìðúOþ–7Ï™½HÿàÖÖ7âz ¶S:øVoà±�k™_¼p«VÓQŸÀ±“$, cB WÆÉ›Wé±¼ Û,RMwòðÝ$篧vM•1,ü%öѲÊ᪜”,ËÆ±�0 ð‹Ë&C„¶WŪu÷²jíljÉðïÿúr33 ]œ¤Ö�—1±Š{îßD[mr®;ËNÔÒÓ[}gZěְ©½™CŸŽráÝWÙ `âU´tÝI_­‡•‹w½R{¦zرs#5ñ«kvÒm¬mKcGE3Ë¥nÝC|·¢™ÞC‡8vü(û?:ÁÛ/Mâ»õ´~k3•JK""" ÜDX²IÖ6ÒÞ×Ç·¾}š³ýÎãÝ=ïÓÓö$k+[èm®`ïÈâcWµ±¶³–˜É3��úU]´Ö'qŠll‰qàØÃGwóâ!›ZÒ˜|�xc;�õ«ØÐœàãáIŒeˆÕµ³®­7Ì1�qhí馮"†e2׵׎›¢¦Â†ñI.œ;Ê�ÃÕ´x�jé`UM gvBMã3zæ ~r†°¶•¦šŽÉqñÄ–m«¬§%ÞDCÚb*âµt®YMmÌ�Éd±Sm¬ë©Áá³÷ÍòêÙtWõÎ01°�}„$›X»uÕ.X‰z:k¨ŒCŸ0ÕÄšµ-$¬"3ŸŠ†ºZ*°™Z~#a†þ“g¸œµh]¿�†ú$C‡Nr$;ÃÄ¥KÌ K"""‹Ý‚™‚š7?Ê®mø»·8h?û7®§}{7w=ò ûN°ð¯¾0ÆÁšŽñÉ«¸ÿéïÒÐ\Kµ×Äö§æí3¿áÂð^ùåû*bÚv|—<º•mO=ÌÞ3Ïs|ø /ÿêûª’8¦H®XÏ£?þ u•¸×5:Ù"–ª¥kc'±þ³\:þ>Ï�œ$i9ô|û/øçÛVÏM&8{ì=^úý‡d•T¤bئÈôè(\ê»Ø¼¹›¾XÀ]‡Ž2¼ï<¿ù{.ª&銋–µ;iê[EòzZÙr©]·•ÍÍÒ?:HÁŠQݾ•{VW”ªIN5î¿—MÇβçô9ö¼øKNí­Ä% PL°ñ¡§hlo$QÆ sÃØó2oÆI&ðÈ1\+ž"ÝØBú‹81–ˆˆÈŸØ-©#¸©F¶ìØÅ–(ŒÊþƒ‡8;PÝ÷5žû7ÿ’§îë£Âçbÿy. �ãÇÄ“1, Xõ[žâßü÷?äkk±§‡¸ÐßÏÐD–¢o�q¨Û°‹ý?ü ÝÜN"?ÊÅþó\žÄ$“Äâ^i=×ÉIÖ²ñ‘ïñÌö5Tš†/œãÒø ù\€1fnM–“¤¹{wnê$Lsy`€�Áò‰F6>ô?úóg¹§=Mºy=»¾ÿc¾ÿäýt¥}Fú9×?ȤIc­` ”“î⡺I&Üx%vÜO[šÝ!*»îåÙùç|wÇ�i.õŸ§ÿÒ9+N¢"ùÙíB*íLqîôINœî§P½šŸø6O?²–´N‡¹†õë_ÿÚ<²sÇu.n 9ff2ðÒUT&\JC€ ÌLN‘ÁŽ%©H¥ð\ BŸ\&C._$0, lj‘H&‰Çìò˜¢ÐÏ“ÍdÉ}B–åà%S¤1lÛ‚ H6“!W(Jƒ»]�d*IÜu°0d¯Œ1ã[¸±•Iœ0ÏÌt†\1ÀIVQ�*�ù1& ŸÍ�ÉJÛ²b© Òq˲°c aP ŸË“/ Âò˜'ÛÁ‹'I&ã¸vyÙ0 ˜Ï’Í(!`a;.±x‚d2†ƒ¡˜�a:›'À£ª¦Š˜³T21„ù&¦ó„Ø$«ªIyö‚SúMèSÈ•¶å—Ûõˆ'’$ã.6†üô$ÓyìUµs“q^ûX°�D2Uz¬¥´$""·‡Wv¿Êèè(‰D‚D"A<ÇóÈ”Úttl Çq©©©)÷2Í› hvý·Q µ,k.xÎþnŒ!‘HàyããLNNQ[SsK³Òl+,‰ˆÈ ó}°hhhÀbùqK·µym�Çihh`fz™°ø…"ù|�T*…ëº444�H$p{v> Û¬²€1„aHXþîû>ãã㌎ŽRQYÉÔÔµÕÕ×ßw½‹Y–Â’ˆˆÜ¸01aH<SPº¶e‘H$˜™™Æ³du(4¿X$‹�Ũ¬¨(w/Ís›¶µmÛ¥Óø‡˜ç†!CCCضM±X\aUéÚ³Þ–£°$""7Ì`�Á²mÌm5„ûÆYV)d.ǘRÕ$˜ív²PÛ.ñm|ßǶmÌ VÛ®'0),‰ˆÈ 3a8wæ×W»Øaò3\<²�þ ‘ w®§Î[ùà˜Ò´6~à/¿¥ÐPô}‚ (w)}ÕÛöÆY¶]>ëÒ€ Ks ÜÀ˜¥Ï Lîm4>LDDn±°–fÜ~uüÌGþø ö¦¦eã:ê¼YO©ë'X¦²d€°\YZØž_å¶½qv9,ZÌç2ã’*K""rà ³ŸÊ­›š$Ñ9†Ï|Ì/¿ÊûGÎs%ëã¤é»s;O<ý$w´Ä>çi?[ä¦§ÈØE‚ðFÎò›�ÖèI<燈mýI>Ýÿ¯¼º‡OÎ\¦`lÒ «¹ã��<ºã>ºkÝ?yÛ]?Ÿ‹¯ýó‡‹<ú?ý;¶·T|æ¾ÏN#`;6ÆÜøÉpKÍÜ=KaIDDn^ib¡•�­1äF9ô3l)ÑDIDATÚÏùé/ÞbÈk¡«{kjcdGÎsjÿ˼»ùklnöþô×çZ0Â�„%ÃJ¯_¿x~¡ÅûS?ÍîŸÿ„Þ=K±¢�5ï¡>žgøÂY~ò>më·ÐU“^éŽþ dÏ3taœ\1„Ð`¢ÒÏMT3Wª–DD䦙ò¿•e%ƒ {‹ç_x‡Bï.þí�že[O-³Ã�ü™1fÜj¬°ÈÌä#£“äýc¹$*jijª!éX„A‘™‰Æ&³|ŸÐ€åÆ©¨i¤¹6…S®ã“›¹ÂØè™‚Oh¹$+ik®Â1…ì$c#ãLç‹àÄ©¨i ¡&�kÏd]® EÅ—yÆÖJ«o˵©!Ì�ðÉë¿ç�\¢ùáçøWö=uñÒ�O>—!ˆ¥° ˜°ÀôÄcSä|ƒ›¨ ¶¾žšt¼ß ~ö £ãW˜Éæ),›XªŠºº:ª’?3ÁÈø$3Ù<~hÀrˆ§KËT&®V°L�ath˜‰™<¡å’¨¨¡¾®†TÌ™[& 2Œ_fb:‡��—¨¤¾¡‚Ð ÇàÙ“ŸIc91*VÑR}muñ¦¾GT’SX‘›7›Vrð2àg'8ùîn>�¯áé'¾É½««qLHùêØÉ*“Ÿä̾—øÇßîg¬àS,øÄ[6±ëÙÆSw6Lòáóÿ™ç÷ “76–ñ)øqÚ¶<Ì÷ø w4' ô™:Å{¯þ�7÷�b,‚£îÎò¿üÕ6œ‰s|¸û¼þÁq.g‹&FÓºøæ·¿Á=�• sËJŸ+7–•–x€ ™8Å�‡Étíà¹Ç¤«ÆÃ„aùºi6±dEiÑ ÃÐÉ}¼öÇWØ{b˜¼1ØñzÖ?¸‹'wn£§1‰m…LÞÍOžƒScÅÒ$�¾�[ÕÍO>ÍÛ7Ó”2Œx‰¿y~ç'ƒò2±ÚúÆ·Øuÿzê“6'9óák<ÿÛ78{¥ˆ±,’�køÚßdçÝ«©ŽÛàOqúý—ùíÞâäå<8.É–»yæÏž¤ €a^ûÙåÏÆ©hfëSÿš<؈³¸ +lÐk-LË\H÷ËÓ“)""_L¥ `VÜ-RÈ sâÐ8õ«îaýšz¼åï$h躓]ßéÅ‹»äÇN±ç¥WùÅÏ[¸oÓŸQ•ŸfôâüÚõ|}烬J=³Ÿ—wÿ–¿¯]Ïšç6ãNòñ«¿âÅÆi¿ëQvö4‘3Ì$ÛñŠSœxûy~óæEÚ¶=ÆÎÞ:Šƒ‡yíåÝüÌk¥ï/·“,”¯>×6’Uêˆ[YVZ¦MM�ÑÁA.õô=ÙͪÆö’mgÈ æå_ý’÷®ÔsßãÏÒWï2||/ï¾þsžcüù·ï§%�¹@ÿÀ4�}��ÝÕ'9¼w{þð uMm<±¥šÌåóœÈÐóÌ�ÙÞš$?q‘ƒï¿Ãëx�†æv®¯búÄküô¿þ†Ü†]|ëݤó|¼g»_|�ú†zîï­dæÄ«üô'/peõÃ<þðZ“†v’?îû„Ë?XOjà û?ê§fã·yöÙÇè®òÊåCfô¼yÓ¾‹]�ïdu¥ ë[É�>ÁÏ?ü€ ?ÚÆš½p³Ân¸Ùm­ÈrmÉd2\)TЖ® é,3½@˜áü¡:oØòìwyö‘õTyùM]Äfþ7~wð#ŽÜ»…¦Õ±òóª wë<´®dé¨,rñï>âÒùKd6V•w¿’u÷mç¡Î$ÆŸ¦-‘ãÒ?åÒ…!r½†¯¿ÇÉB7õ�§¸·Á… ‡Šü8ý/œàÜ…!îì8ðÊ[œ ûøW?zޝw&çÚÆ˜<§Hѱv#w¬*Ír>{îÀ5OñÖd¥Ï¤n8¹yæ3#/ó ÒÙtåùš"M?Ãàé�yoïa.ŒÍàÙþ Åz²ÅyÛ5¦<÷o¦·ÁÅ:2ÀT¡@q|�s“5l\ÕCsÚ¹Úe…!?u‘—2Œe?æ×w®\I˜:7Ja †3}ÞìvSÏþù¦K¹l©ÊsûnÊó -¹;þ4—†Æ³zxº£‰¤ ahp“utmè#8:ÎÀÅIüîæÖh ahÀò¨¬j¢Õ›!—™¢\M&¥66`Ç©®n É�&›�¦�µ8qa†b>Û?ûkÞ·Jû˜dt&Ë•é)r™�#g§¡þQîl‹Ï{Êë^¼�¨ö¹…¼—ê~›½MaIDDn’YðïúfpbU4W8œáòL@kÍg‹™"#g?æ7?ùÿ8Z¬¥gýVUÀÐÐQ, !á‚-Ïí‡ås-Š&Ä÷óä�‡ãŰæï©1„~ž|#]×IOoÓÜsz×r—UEwÚÆæ]õþ¦†¯ì‘KnÉrH'SÔĦ¸<5Ét!¤2ym¥Ë„Eò¾�ï&p{nmƲpb)”bÞ/·à샮>;Ûvpí�b,ÙÊsËXaÅÒüd;=½½$æÚ±��Û’t®m%Áe2Eƒ©®À³?»y' ̆ïˆÞÍ ð¾þ‹+,‰ˆÈM™­²¬¼²n¢ž¾MU¼~¤Ÿ#džX¿­…Åc›b†áóû94]϶gÿœgîk&fûœ-ãã Å«Uʇڹßç‡/^I¥™bfj”lÐŽçÌ»7^CmÜ¦ØØÍö'wа`$±…ë9óó¢Â M0ûØë^²ôŒ–|€KMS#-{Ž~Jÿ¶;iì¬ÄY|ì·T&“¤²CLd2M1 ôóÌL\"ŸŽ‘ªN`-цó·=÷úÎ=‡yËÌ•›À¸ij’.Îxš­�ƒ®wZØŽƒãç¨MÚ0v–±ÂvR±…ÏÙ²-,+¤”b°Ñ^·¢ºw=¼íë¾:¯ˆˆÈrÊó,Ívƒ]ï—¯¢oû7Y“=ÞÁ‡/2•É’ËåÈe3L� 24Uš  4éµ…mYX€m[Ì ê™í!š­H„!f® Ç.u íll¿Â‘ÃpàÌ™\Ž|.G.[ –îàžµ†�³òÁ±QŠå ‡A€±l,cJÛv _È0�)×ÿ—%;3ÉÄø(…}½m¬JŸæÕ÷qitŠ|.Ãè…üóê)jÛÚY³º {~WؼíÍ5êÜÀ÷<ÊÏ_ØÃÏþ÷£ü¾¡‘†ªÁÌ8ƒÃ9Ö|ÿæ‡�[Øÿ){~õqn_'õ)›ÉÓƒN3öldö =Wõ™·RÍ=Ü»ëqÎþüe~úžàÕ¶Vªì<“A/ù?>Ã]ßù>GþŸ_ñâþ_ÙÛÚAcÚ";1Ií“ÿy_N,IC_ c»?â·¿o£âé¯ÑS³²kž\ÿ©îó:6—kS§–;v>Îät†—öüžÿtàuZÛš¨Ž¦Æ.3éuðèþ‚om~ˆ ðÂkÿÀ:õ]u#gÏ�©ßÈ®Gc}•5×f¥Ý ¯­]³óªwsƒŒÀcõ7¾Çc§ÿ–Ýÿøù÷oõÐÕ�"ÌLãöÞÏ7ßI_uŒžoþˆ¯ÿkÞüÙä?¼Ñ˪�B1Í�;ãÁu›èn=·û0µ·χ†õOñƒoö‘¸¦=Kû1›kVRþ±XXAŠê’sž{î¹ÿÐÙÙ±‚Õ‹ˆˆ”äsy¦§§ihl˜7Ðx…Ÿô�8ukظ®ƒšø¾�€[ÑÄú{bû�kè\ÕL{g=V6ÃÔä43ÙÇàÐ0žç‘N¥H§—›�Û`Å«é^¿�¾ŽRv@._$´ªš{¹ëÞû¸kmÕéJVõõÑÙX�?u…é‚Eãºí<õÌ·yxCN9ô'/s9§ûŽ;è¨,õ�¹i&Æg¨ìZÏêŽz¬+à çSôÝ}m)0ø™)&&óÔô¬§»­ŽX¬Ž [7Pïä33dóNª�®5ëYÓÞ@ʵÀ«gãÖuÔX¹™i²EHִ綇U�kXÛœ†ÂWfŠ8©Fz×÷ÑÙ\yM…' C.]Àð\—¦¦¦ë‡tîü9²Ùžçáº.®ëâ8Î5_¶mc½øâ‹æ¡í^÷ -""¥OõW®L24<Ìúukç.ª{c¬òX{Þ±ÎÌžÝf –m—\‹ö¡ÔUfaÛ!apµKÉr\ËøAù¶Òvlëê(c®>ƲÊÛ˜»L”g•¾z?„å«Ý¯àZ¥1;W®L2<>N<'‘H‹Åðïgëš³à4À[DDn Çqp]‡\.Gee¥•›šýæ+Çš÷Ý„!™L×]þðëºÉd’l6ÇôÔ4ãã㤒IÇ)uO•»ón«b‡1„å.×Дg±Xdll|.,yÞÊÛ/àEaIDDnX,öm††‡¨¬¬ÀvìR·QùþÛ94Í†Ë Û¶™žžapp�¾¾¾eÔ^,FE:Åððe ›Í–*K˜ÒcŒ)WAì…呯,S uuú ‹Ð„øEŸ ˜ž.гºk¥§Ã-¨&ͯ.-¾MÝp""rÃÇ¡²¢‚S§O³wlœæ¦&jkkñ<Û¶qlÛ±¯ÈüVt„!AXš_hjzš¡¡aFGGhkm¥²¢bÙÇ»®K]m-çû/0qe‚T*]Ö§h˜Ãt›¿g�—c(òÌLÏÐÛÛCMu5+ž<`‰î·¹{\HWaIDDnÀìñ£¶¶–;¶la`p��ÁÎ|z†l6K.—ÿ'¹~Ú‰ÅÕƒùl5i6P¶¶µÒ³ú^’ÉäÜý×<Þ²À@]m_{ðÎ÷_ ÿÂE¦¦&Éd2ä²¹g°ÝfÛÔ±í¹ïŽãPUUIGg]ím¤R)Xa¥m®{t™jÒ|ꆑ6{`I$twuÑÕÙyÛ¤ë5ÛVŸYe³,°,bñ}½½ôõö /íq;–9¼«æ¦°fÓÔÊW¸LÜÕ»¯þ®Ê’ˆˆÜ´åº2ä&”CÓܯÂ]ù"¸ÕÏ?* -¾íöéD)³¸vP÷rÕµõI@DDDn;ËŒQZ*8),‰ˆˆÈmDzXrÌÒR¹ÈVT‘Û�eÙËž·8<]½Z ˆˆˆÈmböÌÄ¥Æ--®2©NDDDn;³aéz“};ͪ*""" ç½Z.0Í.§Ê’ˆˆˆÜvì…•£ÈÀ¤°$"""·ë3\íªs�1\¼t‰ ƒ�0 À 1¡! ÃÒEËß�1„&¤tñ_³ð Sº}©ï°à¶’�Üåóœ)ÒØÛK�g•›7©¹)-7}é4—2 ZW·SéÜÊæ2äǸp9Ke{�)÷¶Ÿ%õË,(d¸ÄL¬–æ¦z’˼WŠ3 Ž@M3Mu•xzѿҲ™ .�8C¦¢ƒžŽj\ ,ŠŒ]èçÒTŒî¾UTÆ`zè$ç'S´÷tQ³À;w†þLëÖ¶P( 3zz˜ ¦‹Õ5¥÷M0͹Ÿ2B3w¬o„ÜçO]ÀÔuÒ½jv[7§0ÞÏéó“T­î¥µ*qÍlÂÅ©A>=7B¬u5íuiÜÏØ`q²ŸC'G©èØ@_SüºöÏ®Ðî<ãN k:Hz֢DžL�çÜ`ŽúÕÝ4•÷3ÈO3pê$ÓÉ6º»›ñ2œ<;B¼­—ÎÚŽe(ÌŒsîÌNC7]­iæþlÃÎ8ÎLíZ6vU°ÔŸ³!dòìAÎÎT³z}7U³ ™C§Or![ņ�í¤ ŒÏÄðEÎiî줥6FpåSœž¢eÃÚ’¥e® _âüP�¦Îkâ¥çQãØÁ~bíëèm^ô˜<—ŽaÈëbóÚ:<ã3~é<ý#!­=�ÔWư�ÐÏ1váCÅ:W·S¹ÌEÇüìçúÉW´ÑÑVO¼¼Á0È1pôãñ6úúZHXå¶¿xšÓC>«6®¥>reàç§*èìí¢ÆL‘ËgNr>[æ ­$œŠÿô¬eµþ²ämÖÂû¬…ßK×."Æ9åëôYö\Évlr¹Ü’¥Å¿¥°táÂE …Åbß÷)‹‹E‚ À÷}‚ (…©0œûy6@ÍÿyqxšpÍÏ0vð5všáŽo}‹5ikÞ}óù ¼ûÞ®ãþ'fUâjƒÞü5ˆB&O¾ÏÛ‡FiÿÚ£ÜјºÉõÉŸRqjˆã¼ÇPÅZî¾{ý\_È�:Í'Á¬ÞÊ�kÛIÝÒ._4cçxçW/2Ú¶“oîè&a[˜ì¾¹‡ƒ£M<õ�‡è¨´¸ôñ ¼z®žOí¢§Â†p†ã¯¾È›—;øÞŸÝG6s”þ—ßã|ÕVvíº‡Æ¸…?v„÷6§½ø·?Ø‚;3Àx‰ówòõG¶Ò:÷æ2¹<Ĭì82uêm~÷úYºŸx†{;j¯ Cù��xq÷w?Á#ëW‘˜ÿ~6!¡)}Šž}Xáò^~ò÷ÑðÈ�y掚뺔ƒÉ_fß믲o¤žGžÜNoCªô8!¶kqåø;üqÏ)j¶=ÉŽ m$œ�™¡#¼òë÷0kwòøÃkð†öòë—SýÀÓ<Òׄg‡L çõ?$¶y�Þ×Z þ /ýÍ/êý.Ï=¶j™‹™úœ}åoye ‹oüð Úc³;œãÓ7~Í‹Gýçßf}µG˜ãØÞWÙ}4΃�ídkoÁ¥×ù/¿<Âêoÿ»:ã˜ÂÇ>xƒ×[Ü¿kwöÔàÅ©ãüü¿¼Iú¡ïñ­­u ƒ[0Î{ÿí¿±¿â1þâ»ëIZf‡Øÿöë¼w&ÉΧaC{æ'8þÎ ì½ÒÍןØAgjéÿ£ò£gxÿÕ7¹Òz?;ÜHuyƒÆŸæðïþ_ÞËöòèÓ�ÒSé€?ÎÁWþÀÛkyú_§#YäìÞ_òÚžþÍ]¬N[Nsø¥x}´—ç~´�ïÖŽW^®—ê³n_\Å™ý¾øþ¨AØshÞ—ã8s?»®‹ã88Žƒëºxž7÷Ýó¼k;?0ÍÔFf7´Ô“›ý ÃpÁ϶m_�fo[>,Y¸Ž…eÙØŽƒëÚóî[ȱÊWv]ÜEÿSÜ\` qÛ²°×Õµ…¿ÌÌìkYþYü^)/UzÍm Sþãq–¾ÒœXšú‹ó#'8zʦ1^däâY.\ž"´[ÊûŽ]þÿÈup]Bwî6Çu‰§«èZׯÉ}ÇÙ·?Éšf�ÑÓǹ<™Å488®G²ª‘ž Ýôp�÷ß XÓÕDÒ*05r‰þ‰v<µ�ºëx¿™ Hfê 3Ÿ™©,~à“™œ`|ÌຠªëªˆÍ~ꮪ¡"aqþÔ§œ«t¨KyÄ+ê©«p1¹N=ÊÅéÍÍu¤œ—Ož¢àVÒÚRIìzÿÏsY³®‡³ƒ‡xïí÷˜ÙÐM]ÝûsmØ“œ<=D‘Vœò1ÁŒ[šigv¿¼„N-ÍI g²ï°G{EÀXÿNžÁ§ǽúC‚Šš ŸqæÔYb-Ä’UÔV¥ð‹ÂÔ(YŸÂĹ¢O!;ÍÄØ�ëRQSC2^ÁªM눿|Šýïí£ÐS‹ù4ÏOR¿iM \̼÷mùØ:8––S~^_ì°4û}qXšûü`³øçùai6(Í~-—{–ª0ÍÞæÎ_Y© .Äqœdöçù+ ‚Û¶ç³\5) ùu, J`Œ…kÛXV�Ác08>F&tI×­¢oM/­u©¹OPŽ]*¡9®‡çY¥’ðéœ:;LÆ1n’–î�l\Óºd• Ì�rêÐ>¼B›xe3=k×ÑÝœ,ý¡ZyŽìeìã<¾å’®o§oM/mµIÍÜù¥a0®‹c²ù`”üL–ÀMÓØ±–-kÛH:RtlËÆ8Žçâ9C~j€“GOpqdšÀMQßÞ˺žUT'Õ=ûeæy•ôÞ÷{?áèÞ·9žHÓÐÞMgs†ì¸5÷!̱-(ÿ?ãº6–q˘Rø6^-›·sö>:òýÇ+hî꤭zœ¬ãày.1»’ŽÍÛÙá¤ùøàqÞ;{€—DE-­½½¤cŸý¡ÞP˜äÄ{äÃó9‚B†éL‘+ïìæ¬ë�¨èæ±áµWŽRUßJêÕÔ R ž‡SÕÇŽ�wð›Wðö›ŸÒ°ª›æ¶N¦.8Žƒçz8×):ÛÁó¼E]‚.½_{‚­™Ýy{7ÇIêVõÐÑÞN~ÀÆqܹõàVÑÖ·•ÍßâÈû¯pÚvˆw>È3�l¡¹ÒâÒ�—øÝá H63C8þãý‡°­Zøî·¸»µ’¦¾y$c±÷ã¼u&/E󆇨~O/ÕÉøÅyaÉÃól]ìòûÛõ\<ïÖB¼ž1ÐK…£ù?/5)ä¬Ù³÷— KQ¦ùU¥¨à´x *Xï¾û®) sÝo¾ïÏý<Ûå6¿n©¯åºáæKT˜F÷¿Äïö_·ÒÔ5דfǯYömwÓÓ”ÂÆçÂë?çõ¡z~f�I SçÔ±ã\Éáz�¹È`Æ£ýŽÇع¹~a™:œæÄ¯ðA–êUíÔ% 9?FËêM¬ïL3uô-^ÙwšL¬�æº ¬ü£—¯[µŽ{®jU›¾ …+Úó Bªº–ºê…‰aÆ2!uë¿Îã÷µ· ™KÇøàÝO0kàÞMÝT8dúÙóû7¸PLRß\�“gdÏþÄþÝ÷7‘rmÀúÅÒð† ÄP ^,FÌsæ‚wÔÁÅ„>…\–¼måܲ]’éÔ‚ÿçB¿@>_ÀBŒeáÄR¤ã˜ß/R(KcQM©ŠK$ˆÝÀ¸úòy ~€ÁÂq%I’$I’N†ú Õc1UUÑ…^0ëÓY×>ðÀ¿Î ;<Þ 3è�8Ö _>ÀHIJJ øÁ‡o���«ëº¡–Ó�$I’$I’þt h¢(*„@A±´Hl•—Ÿ·zûöí…e«[Ç£×úÎjT­\àÈvµmÛ¶ÑÍ›Ÿ'„0np¼döS’$I’$éd9±.…Jxxx¿#FtãX|X¾Qm�h]¯ƒVl&Õˆ1Ôl2'Ñ8³(ŠBcíK’$I’$I æø³ ªª†[L–Xü-äUG®×6Â=˜`å+–›†Iukn35ß!©N"'q(‘›^/ŠÍ†‹Ò¶ŠÝ~¼»­^�·Q¼Qzá-Õˆ¡­PlÍ-ë*„ÀérRZZŠÏçC�ÑhÄfµaµZQUµQê‘$I’$I:~uÍ‚TgQƒÛíáXTTÚ°¶Ÿ òº¦Z@�ˆ^×uõ¸æáÌÏCY»ãš•„ù¼¨•²žšªR�>x(ô€b ûÔ€z47äþ�’±˜p%³É‹¢è¡ (>‚/ú,ô&#Ql Ô/-¤!p¹\ääæàñx°„XPUEQp{Ü¡( q±qج6ˆJYº®£iŠ¢øßãª*'L;iBhº�©ªªò»C’¤FVcâ±öb èºØü,ø35¬«©r%0ªŠBih“¹ÈÊÂòÅg„¦¥b±ÛPÌ TBJ‹(]0GÆ|cÆ¡„…5¨ásbH_€­`1aa ªQaÀŸ-ö³Ú]¸‹(Þ·wë¡„¶lp=…E…äæåb³Ù õ×_v]EÁf³áõz9zô(áááÄDÇȾ®Ò_Š:éûv°vãV J\(ŠŠ%$Œ}ûÑ©}K òýܨ„Ð9z8…5k7PPâDGÁj£k¯þtnÛƒ*¯·$I'C=bº²"BƒÒix´ÞAh° ¨4¨Ï¦ÈË%dþ\¢²20”7±Ù^Q ØÂÃ0m\O¾×‹vÑ¥`hÀ {]CI_D¤c1!þL¤ÿRu)`±›1û²ÈK} gÒ-(öõ?!p8ŽÁ`@Qåš!P£ÑHDdŽƒ�ˆð„J >w)WüÈs¾¡¨ÔCtLªÐ)È/`éÏ?sæ�ñ\vÉÙ„Ym,⟮ s?Í\Ààó'Ó¿sëZJ ïXϢ߶2tôytkßô„3ºæeÓ²EÌ^ð#YNÂ##1*‚‚|–ü¸„±]Í£ÎÄl”ÙPI’þ<SoN4_ßlh½‚ÐÊЊŠšUW® 4õ†ÐšƒO•þ Íl1cÿc]»£téZïzDÑÂò $òXðYQU¥Ó­Ý�FÂÔ¸Ó¿Fo[½ëñi>æÓn«>ƒOÙrUU %/?�K–è^ I§„l[÷+ïΚ�Ïɹ“.aì¨þu7Û6®çÛy Yòí\l q\>¦ïߦ9¾¤à(+7¬¦ý°Quü“-ÈNIfݺ�´í9Œ®íN¸îœtæ}±�l—‘ —\Ͱ3{c3 ¶¬ù•…‹`ñ—sIj‘D¿NÍN¸.I’¤Ø_Ÿlhƒšç�*†Î×;ÍËż~-»­¬Šòn §#( ¶PEË~AkÕ ÅV��Iº%ó'BíÅp,ø¬xˆ²#W*�¥Àl3’½’’Ò‰(Öú}±—8J0™ªv#¼&•3�ªªb±X((* >6¾^õHÒŸÅë.懯PäV¹jÚ-œ=à Ìe­CF�KÓ¸(žúïˬúñ{Æ ïA¤Åˆ>2ÓqðP:%N&‹•æ-’HJl†ÙèßÖURÄ¡ÔT,‘M1SÂ�ý©”º=„EÅѶm[b#ýÝn¹NÏ$,¶)Zi.‡§ãòjDÄÄÓ¡]["BmǪk^Žf¦sà@*—«-œ–­[“˜‡Zé3ètpèàAÒ2²ÑQ‰Œ‰§U«$â¢ÂB##í;wïCAjÊ^¶…*Ä'¶&>2´ÊµÂÇþ=»INÍÀã.åðþ]l õÑ<±1‘v@�—�ÉÁƒÉ-,AQ�4ML"©e"¡!5g‹ó³ÓHÉ)¥Ç˜+˜8ö,Leý>��×áâûÕÛÈÉ:‚Ö1Wi‡àð‘,t¢ã›Ó¦uQaþk#t/©©©ø#af•ƒáðh´hÙ Ÿ³{T,Í›&Tt£ÂÇþ½ûpjfÚ·KÂb2àvsèà~ÉF×”6­[n/ûºöq85·P‰°š8x •—‡Ýû‘ZÙJ’ôW&4Q[ðYÛˆøúf?+!f@ÔTIÙG˜ÐüAamÁgùò²ZÕ@h^…¹¹«­† *ñêKÁ¢â¿‰)ÇÏÊYP! R?*E�p» $o+¢YÓz�S©£«Íêße-ס¼¾¼LHHÅÅÅrÊ)é´çÈ9Ìúýy4i?ˆ‘ý;bR+O•¦Ò²CnœzyZèÝçaýêeÌùô3ÒrK*öc�aì”+™�¯Õ—Šp)«—¡eUÌFtÇ!”zž“Ëíª@��ЍòØÏS�ªªx=^€J§½¼Œ!è7¨'fµú?ZFsgŽžàÿ¤* GR¶2ëí�(²ÆsÙ ÓØ£ yi{øpÖg,øômšµhÁà®-QTÿG4+m½‡�Ëýœ�ð1ë­WÙ²u#ß­Hæ’Q�Q à#íP g��„‘ýqä¦óÉûï²nõjÎè5œsû·!'e ~¶€RÝÆmÓÿMÇVñìÞ¸šO?_ÈWs>¡eÂÝ´Š1óýÌ�Y¶a'ÍÏ8“Û¦]ŒÝ óËw_òý²uÌýüKn¹þr&^7�®ý×òÌ+qþÕ·pNßNØ#£«^ vîyüq6þ´€Y?nbÂe×0´W;""")Î:̧³?gz.c&_Á¸ñ–äòñK¯±~ù·D5kÁ• Ád0QDLs:5‹bÛæ<òXçŒI›¤DšÄÇFˆ5Ð|.–ÎùŒßVo¥u¯‘L»ì<¬�EsÞå·õ«™ýùÜpÕ¹¨šŽ®ëäÍÆšÔ�½‡øÈP""lîXͪ­{H;šK§–ñ¡³gã:ŠŠÝ Ù�P‹Â¯ŸÁ/Ë7ТÇpn¸l¡&Á÷ó>âçÕk™5»·\?cYùÙ9Xš·á¾Gî"!2”¨¸xù='ISš¦„T[ð˜õ¬i.¨:û€6¬ Þí®_¹ „¦!|¾ú ºƒ¢„Ôk0WeŠª€ÏYïsÒuUUü«( ºÐå³túÓ(›Ï¶æ>Π”}è¤lYC†ÓÍÄK/âüÑg¢Mâ㹪´„_ù€_–¬¤OÇDÿ`= ±u7¦^2‰„H+ÏÆsðÍ™d<„Oï„@ œÑm_p‘63ÄÇ2nÔpÞúì{rÒ3ði‰¬^½†'\tíµ éÛUQˆ5–’œtf-ÞÄŽ�)Dw gcJ21Í[qã�SiÓ<€É_Ž="§)ŸO'*"𸏄DDEßÄ߯³úù+DÇÅŠª �ˆ¥I“8`ëæ]lÛuˆŽC§pÉ¤ó°› Çu·]Çÿ^y‹[V“3¢ VÙ£â¹ô†1~þ9ëwíâã÷v¡ChÛ®=-[´gÂı$ÆGâÈÏbãÞ]Ä4ïÀõW_J«x·…‹/¿š´Ì—Ù»o#YÃhbñŒ´Ç$rÕ�7ѳ}óŠºïïoÌc×�#tl‡æq²uw „„Ñ¥kW¼ÅylÚ³�ð&m¹îêËi›À”K§’–ñ2û÷o$3o$Ííþæ&[Ts¦N»…¾��Í("¿ç$éo­¢Kf€`Ág}ÓÀõÁPŸð)zÙuµ�¢ „Tÿ¢­/ÅhDŒˆúÔ… JHyÒڃЀK&4F;õ9'ƒjhpZÞ¯*j½ë‘¤?‹¦k躎Ðõz¼_5ޤìC<½º´]§|‹¤�iß&ž¢¼£¸½>t] t�0[$avsžm!Ì�«$ŸV^/D…Gb6”•„Ù,„§£¯ÇMVQ!¥N;6þ�'÷ ¿RÒSŽ yJ)).¤(ÏKaNͺ ¥E|dE�&{ c/¸ƒÁ_‡.ôzž·ð—×utŸ¿¼ ò(ñiôt&V£R±�øÖíi×4�ÍE¥””ºÑ DThÕ©·ßßž¼œ,vmÝĆM[HÏLcéÎmìLÞÊ�·ßMœÈ£àhn³ÎêeKØlô¡é^'N·“’bñ&�:¶Èh¢#«œO‹Ž}he_ÀŠ_V3f`Wœ9ìܲ…ئéØ:GÆ>ò2ŽâQܬ]¾„me#ïu¯‹üR7ÍEq±Ýê?Gkx1Qò»M’þ4¡Æ…5�5e;ë• :©!“ЋØ8|BÇôjÚ� �/ÄŠ¨ç�‘„jÁgˆFˆ\ó·‚ž~½†z+Uíóø¶úOÃd2™ðz½UF³—˜µM±¤iZµ�K’t:²ØýH2³Šë,+„@h†ÐlƒlTÕ€Ád«àöj€(›²¬×­©27¨Å�%$ÍçE¥¬/¼¨v>¡‘qtéß�ß6mçPv zZ û²J¹ðâ�Ø�*.᪥…l\·c¥: –0b-áeu˜Ê¨DŹK’ô� ü,–o&´âçò h`ó{Í}@+U/„@i×–B“‹¦£¨ê±Ñè5żåÛú|6k‰ˆŽFˆzüWm £ØØ‘pïï˜-†cU¨þé˜**,>ËB &ôæ=êW`³Ù(*.Âb±Ôzûò`TQüýäœN'f‹½žõHÒŸ%4.‘03üñóO?ŒæMÆnG!K~M®næ‚‹&¡ŒxòÓ8š_Dbì±H”�ŸW€)¦ ³Š»,€ø»¢”Ê–[ð³¿\Ù²Š}€AkD4O»“þšT9F]˜LfòR·¡ ägî¤Ø5„ˆ²A7�üÜ||ŠJTTFU©¨K¯tlÁù� E€A¯8.U„Îö�‡èšQñ•æq–�årA¨Ýtßé»·’|$ŸN=zÑ,Úßä�ªÒ¢]®¼ø\ö¼ð¥žbtš‚¢Ð¼u/î™~a¦cAty°n±XМ¹U¯j¥:U“…~ݺ²bÝn6¬ÛŒ¾û ¡mé}F 7!U%¡EW¦ÿß­„›+êB —Õ¡»òø¯—¨óšI’ôw ûôÊ}@ 4+¯ƒzŽž¼ÝRåçàDÕ‡°‡áêÛ§ÃQ¶uù0÷ �òõBPì(Å;x(Âl©¶Ï ň/v…Åfÿ—°R)ÁªâDË)åë—ÃCiè`„)ª~õ°˜-!ðx¶)±!*›VþJf¾£â˜wnZÏÞÔt¢Â¢µšƒîïÀ¶•¼ýÆëÌýzž²ã@€æu³-ù.·ŽÕd#<¶ 1‰‰dÞËî=™X,B,!�ƒ¿ùŠßýDA©·Êõ+¿ÖÇ I]ºjaÕÒ¯X¶å]ûv&.2Ø#b‰MjIVÆ~vîJÇlö×�×ÉO‹òÕ·?�ïðTd‚+²¬§Á{W>äC>NòïZôä90H­«|år5BjÐDô¾þ)È:Š)e&‹ùXdd¼—ÛCá°‘ˆÖmª–©‹½űS°}Ž=ÔŸqUT*_°Š³ èùtÅ“0¾Aõ¨ªJTd…E…(ŠR¥Y=p¼¢(ø|>Š‹‹‰ŽŠÆd4ÉÎùÒiOQMœ3a2G²ÞgõóÙ½s“ÎŽ ¬ZÉæ�»±DÅpå5“3hß} ƒÛÿÆšå x®è0ûtáÐÎ ,_·�ˆøL;#kºFP¹iøXó:eË�òr”®*­À@Ÿcè°a;+Fq^&ý»¶!mï–-[ED«žŒ��$$ÜÎij‡²÷­OyûOräÂˈ¶ ~Yü5©Ù%Œ»p(á6ÿ?®f[v–/ø›7—�ƒ†Ð*!:è5ŠŽo‚‚‹Å æ¡zŠèÓ»-:tgȈ¡,øáw"‡‰c‡Rš{˜ù‹– Zc5nÅE9œ¨ŠŠÙJD˜ £ÁPíÿZ]×p»œh: (X­V ªZéëE i b0TZ® 4]Eõ—§¬\ùëò– ]GÓtTÕઔcõºœNtŠÁHˆÅ\µÞòº}J�PL& ³±ìŸácç „ŽæÓЄÀh2UäSíòè:>¯†PÁ 1”aB×ñ¸]x|þ>‘!V+¦ÀëUÓõÖÊ®w‰°…††Ñä|¼^œ.7BQ0›-˜M•Χìû Ê[ÍU|> ¥úﳞu蚆¨­I’þV.XøèCÿ~è#ÀűŒ¥ø¹¡Ëª=6ÁWd@…~M-&¾½ÐڴÙ“�R\ šÏßÏ3, ½IXÊû|žXSŽfk�–tÙ®LO>h.P ` CXâåYÏã9�JTU%22Ÿ×‡×ëõÿŒ&#v›“Ñtl ’l�’þ‚Å@hx¡áQU–{O+ŠJˆÕ^k9U5Ô½¼ÆrJÅÈõÊËEÅj«½^Õ`&4´êHýêße £C�ë«–5šŒ¯Ž•U0[¬˜+ ̯ïw€¢�ˆ"4¢îë­MØCn \éxËÿ!®­î`׳!u(ªêÿ?@~ÇIÒ?Bšà©ôsmË‚> @OôàEX",¬î‚'Jµ lI[ÒI­FÁßTN±$I’$IÒ?@mñ`CšÚ+ï¯ÊëÊ}@+*B¨²³¹$I’$IÒ?‹ÐD`B²rf“JËj 8kú¹ÊëÊó€V /PI’$I’¤–²AHõi„þ\Ó6Ušà)¯°Ö‰è%I’$I’¤¿¥€40°„º3¡•˪Øgð> Š×ë=Ñs�$I’$I’þB|>4l\PmAj°þ @Õy@+nŸ[ÉÉÍ9®—$I’$I’þšŠ‹‹“Á‚ÊÊj+Sã¥À>   „††*}úöiœ3‘$I’$I’þ¶mߦà¿É9‹ õZ6iH´" -¿|°‡$I’$I’ôÏT#BÕ¸°¶˜1Øë ‚f@z+NI’$I’$é¯¯Ò $@N«l]�Ñ èñ¶$I’$I’ô×�H•·©iyµyAkœ†©Á‡*I’$I’$ý¥5`Ðj›Vú¹¶©š ¬hyÁÀQO’$I’$IÒ?H�´¦˜°ú4žÁcÈ ¯ƒB’PI’$I’¤¬š¨Opô¹¦> 2•$I’$Iú‡ È€ÎãY­x ë‚M@_åu°™•$I’$Iúç €ÖX”šƒÌ`ÐSùµ1`#Ù/I’$I’ôÏV[ìžð•ס•ËÍ€BÝÑ®$I’$I’ô7UC´¶¹?©T&XF4p{ÒüPI’$I’$饆‰èëš�¾¼L`ŸÐÀ2åjºç©¥û(ÈÎdÿþýJÏÄå«í–£§7MÓдú¿ ?m?/ý•œR­ÆRY·òÍOkqzk.#I’$I’Ôˆ‚�v¯kYm1dµõj +OQ*ÈOÛÈ·]Í�£˜xÑÅŒ;w4\z ߬ÝË_-ä*:¼‰[.Ë%7ßËÁ|w¥G6~Ë‹Ï>Ρbo�¥v­ÿ‘Ûg|B¾Ë׸+I’$I’ †y@cÃÚâÅú¥A§a:e£à…'Ÿ7ž{˜~Jç‚ /ç¬þ�)>¼‹yŸÌäÞéÓrþLz4±�ŠCi[ÿXÁo+7RlõòÇö#´ÚºÖòŠâÁí)EÁ2Ô~šðápydÇ\I’$I’NºJ1`°> Áš×C”›Ý+ï/XªrŠ2 Eé{X½%“Q£nåÙÇn ÎjD×ΣwlÏÍþ‘?vgѽI+tŽÚdžMÛ)vz°…'з_šÅ†‚ÐHOÞÉ�üâ­&v¤ìÇ�°ç^ IDATБ>Maçþ"�ŒÝè?Ÿ+�ß~ßHR—ž´k‹§$�Í«×r0¯Œ!´ëÜ“ng´Â¤ÂÃöUëpÙÃ0ç²7#‹æ=ÏbP‡„ÎÆËª¯¾D�N"Î}€¿ýΤ¡­+RÌB×É<¸‹�[wQìQhÒ¬5v¯ð«ôqhïN6nÝ�[7дMGœÞªÍù‡v­fo®•¦^öî>@X“ Ü\lß¼…}©`´Ð¶coºul�Åd!(-ÌbÓ¦-¤eæb´FЦCºtHÄl4 k^2÷%³y×n �‘ñ‰tëÞ�æ±a(Š‚æóPTT‚-" ‹A†Â’$I’ô7WׄóµõõT‚”©6@)Ø(øSFQ (@^þr‹\ÄYCQ fú^x5Œ-,�´Í‹yèÑgønÕž²-­œ}ñÕ<õøC´�Õùõ½—x|Á¯D™ÍÌÍ¥ýEÿÇc}‹¸å��ygÍ6F·  sË\rÙS<õÁ,Z�Òxå¿3xÿÍ9ä–íµI»3yðáç¹d|'L¾<Þ¹ç~rj˜rrÈðx¸êåok @½y»™÷C*Ÿx‰vésxbÁO�~MCüë³SÖrã w²~Ç|€ÅG¿^±k©×8°r÷>ü–ïHóŸe|º¶²*êYúÉsÜ?{­b}LÍaøøÓk@þ÷6žûd9…¥€B\ó.ÜóÌóL×·#‹ž¼‘ÿ}µ…ðæ-É?t�ð¸vüç½÷˜Ø§-)›æî›`gV!-ZÚÙŸZB—~·2û“{ˆµ™Ø²r!/¼õC¦>ÉMçuÀÐxoI’$I’N#uLD_9ëY۽߃•©L©œí<åó€†5ïÀä�ØÿÛÇLÖ�»žÁ쯾eëÁlB£bµšðgóö¯ðGQ—ÝÁúm;ùþù[é=t Ý:Ú˜ýå*\:­˜Ås¾$©O†ôjÇš/fñéÇ‹™4ãc¶ìLfãïßÒ3¶�ÿ½ö:©G€R—à¦W?aÛ®df\Ô'ø‰/¿þŒ¬g0ôÌ~ 9ó\Zå¯dÑŠýè€ðäòáÃ3؞Œ÷¿aÏž=,üð îKÇáòïÂUp„·Þz…íÎæ¼±ð7v'ïdþ³“ÉÞ±»JUŠjG g^:ƒõÛ¶óá«7S°~Ï\ǹ7>Éö={ؾ~)c’ xõÿžao¡—ìyáÓu\󨬸á;V/�ÇønV–ý¾:«¾z�MÆNÌùiß}¿Š^¸Cé*öfû¯CÁÑT’wí$55¯Æw’$I’$I5õ÷¬«o(AÊ>+plÒŸ2¨bŠàЇã¹Gîexï|óÎËÜuÓu\~Õu<üØ<Š|Pœ}�­¿n&|غ'F iÐaØ$úØTÖ%oÃåñUjÚ®37O»†VM㉵Ӳ#C[ŸÁÁµ‹9RäÁ™}�v¡Kï$ÅYX¿gÅ–x¦œÛ“аĴeêƒ9¼q;û�Vcïs.äÊó†Ó4.›Åô<¼Å™,øqÛ O‡&´í&ÍÏHàçoæQèÑ)=z�åÙÙ ¹èZ.7€èèhúœuwMEY‚”Ẫl]•̹WÞÁ”!]ˆ‰�gÀ„»™:¢[õ ‡ñÐmiÝ4�ˆP� _ýˆ§Yg�Œâõ¢Øâ9gÄùŠ·³!%“ÁH”®²ý÷µì:x”ˆÄž<þæçüç¦QQ0›T …Xµj39Å>FLº‘Ï?ÿ„>-"pÎÕ|øþûÜuy/ŒÕ�F’$I’¤¿‰ }@ƒQjYN e«• z/øSy'$KxSn½‡ó§Ý�£8�]Vðê³Ï1ïóDìÉu­dÀ¡¯^bÊ/ï”eೕ›½b?f³‘ë±QµDsé´ÉüwÚû¬Ù–J‡üåÞ_È¿ŸŸˆM8ósq¦rç•S0”íU×¼$¶L@­ÔÆlµ ªµ_ŽÔm+Xµy3ùöBž{´“/—}i™”ä­aGJ.] |šNl».ØÍþ˜_5†Ð«w¢–mÀãr�_ ½º·<ä)!t9{(ì:\µB[¡¦²cÒ=¤gzàðVž¹ã^)ëïªû¼„4mŠ¢ ¢[àŽ®dö¢¥\=y6^ÕÌÐñWp÷­ÓèÙ¶ #§ÜÁä?žaî+óú£ù„5éÎåÓnææ«Çb¶°GÆÓ³_|C~­’$I’$ýuÕÔ4X¿ÎÀŸË_ת<Öùú€ ³Òضk-» ¤etfK3�¹�„�.½õ¿älÛ…Ö&+pîµ÷rÇÈÎÇÎHÌa±ØÍ5ôHTš÷Eóƒü±m;¥ùë9šxC;Å ˆR f3¡áƒyþµG°sl �މ֭c€ü²£¬Û–µËÙ›ÏçÁ¬0EsÖ�a|2o9«6í¤ÛŠžôb4FYÅ8�þ}T# ·ÄYeß™¡¶^—ŠJ¨ªÒôŒÞüûáÿ£uä± \A¡YÛ(LV ×ÜýçLÚÏŽ�;Ù²j³ß™ÇòÂøäý»hÒm(ÏÌîÂÞ];IÞµ‹¾žËóÝCӮݸjPR=®€$I’$IA¦a‚à}A+÷ñ¬«OhµõAû€rŠÑÜäüû¶ë¸ï?³HÍ)B:g{R2qB|ëVD'´ ËÀX6ü¼_|ݺw£uS«–~˺ä”Zç UBšqùcXúñ›|2ïW.¿ü<¢M M´íÒUßÄöôR:téJ—Žm)Ú»‰ù߯¢ÄUó¼œ�t׿|ò ±“®àÕžã¹çÊ/¾ÀåÝUÞ™ÿJ“Ö´iÊšŸ_gÕ¶ø4éû¶0sÑ ʦ÷ OhAÇþÑÌ~ú#Ö§æàóºIÛþ³Þý¥öPí ˜ÐžÌ½©lJ/¡c×îtíÔž’Œ|»ø[ 5…´m?ñä3¯�æ¶2zÂî˜þ/ÎÛ…Ì”t\šƒo¼Âs%¡c?.¾êzî¾ý:ÚFä‘–[@vê.æ}öëÈ> ’$I’ô÷¬©½¦þŸuuá Ú¤ôVœ5ì ‘)4ï>ˆÑ½Zòúüç¹qßRãÂñ9 Ù²anSOÆžÕ{¤�‰—]Ë�½Ã­×¦K³Š�îgUJ·?7ƒ¢à5e*úJèG÷qÀÒ‡ût/ëùjdÔ9ÐkÖw¼ôà­,Ÿ×“¯”Í+7�0â:L&3ðÖ#Ú:ºy«3ùeÐLŠâ¿tª%’AçŽfñë‹Ù”{/Ó®˜Ä¼Ÿâþ;o¦k›fdJfÍæƒÄ&úç µE·dâä±,�ñ%·_ŸFçáÙ½™ÍùÅE¥­?8®x­èpÎÍŒz{1ï>ý–vè9ÙöÇjŠ»Oæ«§·„ï^}žïYÆ ^‰æeíÊœuÃ=D�äXÇssßbÕŠˆ�¶qxËZR »0¼KSÖÿ<›;hÆG÷�%û�J’$IÒßT ó€Ö8�R¥õ�ó‚ÖE€8ŽÍý©Ƹ¸¸øk¯½ö‚ã>úz2Z"tÞdšÙGŽdPâ(Ň‘Aç^Âÿ^›A§x;Šj u×AŒìÙ–Ì={qø4,‰Ýyì©g˜zVw *ø²sÐ#›0xÈ BÍUoc“€Ã= à‚1ñšü§™ÈøIã0ç‘‘S®¹‹Çﻞ¸P#Š Å©éÄuïMß®g` ÚÔÇÁmkðÆvàŠK&BYü‰‚B\B,¯ƒè¤> 1’ñ[’•‘‰Ã‰C.⥇®ÂjaÀ�DÛÌ´ëu6ýÎhJjêat¡ÒÜÕ®¨$& í�©ì˜ –HÆŽ?Ÿ¸Ò\RsòÐ ! ½ün^àFbíf›´çÜñCÈLO#+Ç�°Æ1ù_ÏòÀÔ³1šé:t4ýZÀ�é8K\´ìÔ‡Þy�~­cP…�¯CcâåÓ.!ìÔÎÕ%I’$IÒ)³nݺµ¿ýöÛv@ãXYWJNù¹r°Z-hU€ÎT�€ÞÒ©S§n¿ÿþû't !t\ÎRÜ^ Å`Än³cP«Âçó¢iƒÑ„Á 6J ¤k^¯Å b2+2˜'‹ÏëEGÁh0Ü$t|>ƒÑD㟪n*4</(ÌfSõYc5Ÿ†¢1›ª÷+õz=è:M& ©X’$I’¤¿…W_}õÕ'Ÿ|ràÄßà*êñ\Ó2°žòç`ÑŸ²> •[hÅ”D5Âh4cläö_Õ`Àb8uS«MÁ§rª ¨MæãÚ·¢°Xj>Å`Äb¨ùšŽ³^I’$I’þV‚MD_yRåçÀ�H55ÁWÙ—°â”OÃ$I’$I’$�ú€{T×| A•7»Ÿú¬§$I’$I’t:ª©e¼¦ùAk›¬>hŒØÓR¢’$I’$IÿP5Œ‚‡êña° ´ÞóÊf@ÿ„ é%I’$I’¤ÓH`àYWs|}âÆ*ñfµ±æÈ,¨$I’$IÒ?U]ÐúÎ_ëúš2 ’$I’$IÒ?S]Ð`ekŠ'ëÕä(xI’$I’¤ºÚ2 ÇÓ_Ey*³Ÿ’$I’$IÿpeIÈúd@�'v¬(oäÄwÖ Bt¡�ç„…Jp]à„ôUÊ+-<®‰DNao¾Ê®¯.ßü’$I’tj(¤+´�t‰Ó¨åÆy’T×�Ž‚å+œ5¥åTNq´À ;eð)I’$I§œ@a�Âá"ù7XªS]ó{ÖwúÎ ë‚ BâdB:\¤â“Á§$I’$ý)t¡p¨0èŸI Ö´\£¶”×ÔÒ”zª£æ8UK’$IÒ?’fA(Ɗׯ hun'„@×u4MÃçó!Dã�ÚPƒÁ€ÑhDUÕF훪ë:º®ãóùдºÏ÷tP~- ÃéÐO7Xs{mÍë5mSÍ©„ðZmõdbccOfµ’$I’ô�TRRB²«)nsLƒ¶Bàr¹())Ád2a2™0¿ã¨®ë¸\.<!!!ØívTõÄ2´B4M£¸¸]×±X,§K@W+!�§âš‡††ž”k^�Íë5õÿ¬Ö·³–×UÊ î”þ†ÂÂÂèØ±ãŸu‘%I’$éo+%%Ò¶�‡Ã�×ë%11‘���ŠìdcqåYV�ÇCvv6EEE„‡‡ŸPªiDEE‰Ñh<)ÇÞØ*gœsrr((( 22òÏŒ�ê3Ú½®uA—�ò&øš¨ª*PI’$IjDÇÛdîñxp»Ý´jÕ ³ÙÜÈGUUy¼Õj%11‘Çãp8 =®€Q×uŠŠŠˆ‰‰!&&æ´:++¿ƒ�„„²²²(**"22ò”�G=ÆUΈÖG°Lè©o‚¯�C‚½¹rvPI’¤Ñ?Q!Ìò§¥K1BœN'‘‘‘˜L¦SZ·ªªÄÆÆ’––†ÝnopÐ%„Àëõ"„ ::ú/|RU•¸¸8òóóñù|§úwQS|Me´)pš4Áòéàôý™G I’ô×§Ëÿã¥ã „ÀçóWØL&ªª¢ëúq5ûÝîFéGZÎãñPPP€ÛíFQ¬Vë)kWU«ÕŠ×ë=åÿ Ô ¡Áf�j @%I’$Iú*@CBBŽk{]×ùã�?hß¾=‘‘‘ Þ¾¼¿¦¦i� S<ááá Þ®2!yyy¬[·Žõë׳iÓ&rss1�$$$ЧOúöíK¯^½N¸®º˜Íf\.×I­£²€&øºúy„TïQð•wrZ4ÁK’$I’ôç(s¼>�ÇÕW^É{ï½Ç°aü}ù`!]×�«~!Ä g'÷íÛÇ»ï¾Ëï¿ÿŽÉd¢{÷îôìÙŸÏGzz:sçÎå믿fܸq\sÍ5$$$œP}µ1 Ç}-NPm“Ì×ÔK•É ¨$I’$I§�mö?‘¹Ju]gÿþý<òÈ#¤¥¥1aÂ&MšDRRf³¹bjª={öðÅ_°páBRSSyúé§OÊ@¡?±k}ï_Ÿ}-8é´á)=ÊŽÕ¿cM@Çv-þìÃ9éÜ%ù”–:PŒ¡„FFbl¤›TøÜ ó ¨Ø£b±Zê߇¤$/§Û‡)$Œ°È §å;¥±ø(ÎËÅíõb±Eaµ£þ­ÏW:y‡w“•�CHT [µÄX�÷ˆ®y8¼m%G‹mô<K-ŸmWÎ>6oÛC³ö½iÑ<�¿ðø IúKÊËËãÝwß%==�+¯¼’«®º «ÕZ%4›ÍôéÓ‡Ö­[cµZùñÇ™?>S§N=în Ç3ШÖò§üVœõU𹋙w_É¢_ÿ¨µœÐ½ä¦í!uï>\¾Ê)j�3ï)É;)v4~ß Ý}�ç/À[¯ÍB«ÔÓ_+ÝË£ºñÑ̯ýG!trSÖ1÷Ñ+¸mD_~·²Ê~Š3“ù♩Ü8ºÓÆtâ†Q-¹÷ªóYµr'^Ь|÷^þuÉ@î½dPµÇÝSºð¿×ß®~]|¥ìúé}<¿7�íÈÍc;pÓ˜Á,ùeoíwƒ(>²ƒ/þ}67ŒîÀ-ã:qÃÈ̸ï>2óJj¿(B#çÀz>zðB¦_6”ùK¶Ð�FÍ™ÍÛ÷žË-Sñô-ÓÉ*ñÖT¥GÖóÆå£¹wr_yüM<µì7gïr¹vwNÄû¯ŠG«|T>RV}ÈóõáºQí¹ùÜN\7¼�ß{/»eÄ!(Üó=÷]8šÏ¿ù•Ÿ_»…Û&·ç�w>ÅpYuw³ž¸œ›Æw⻕;qg®å¾Ñ}¸ó’ ìJÏدNîŽy<<±7w\u?yk?˜Îm“Ïà•ßĸoOóŸ¿�iã;óåOkðdmâ‘ ƒ¸ó’qlÜ›^mßÅûóȤ>Ütá­äxÜl�ó(·MéÌg<[mÀŸî-æ»7îâ†ñ]™½ð'¼9ÛùÏE#¹ë’1¬Ú²¯Úõ(I]ÊŒKÏä¦)ÓH+,!yÁsÜqQ7ž|è!J}"`ß–}ô ×�ïγ¿Ä›¿›®Ë]—œÍÏ«·VÛ·#m9Ï_=”›§\Þ#EUÎiÉKWpý¥wRà©é}ÒxtO!Ë?¼•['öãñ['ñé›sqÖó¦*º«ˆŸ?ºŸwÿó"Åu ®,9¸‚7þï6~ûmSƒ>;’$�8!ëÖ­cùòåŒ;–©S§V >Ë)ŠBtt4·Ýv à‹/¾`çÎ�A÷«ë:8�ΠëKJJ(**:)w™j�'"ña•nžj¥…�±óF£(:ÂëE­£ßƒpçñÝÿæíç#§JÀ¢qà‡ÿñôƒ÷±=åh£Ÿóð6Ö:Œ),²J–‘º‘ éY„„‡>2¶|ÍóÿšÊç_ÌåPÆ&Š<ÅÇ {rXüât>ùø3lÎââÛcØÈ¡ìß°˜W�κ=Œ¶hb¢âˆˆŠ=öˆ‰Çœ™FÊŽdÒŽ–\�C+çóÖ£�\Ë�Kïå«.Gw&óáã×±rSrÍ'¦åóõ·3gþ¯„v™À¥w=NÏîñløöE>xýä–õ„îcÿÒY¼9ýJ¾Z°€Ý;wSPЀÀ_¸ÙõÅ+,ùágÒv¬%ñ¯üèû<¬úò~Ûö {vnâpznÍûÕ‹øõÕ'Ù¼z%ö®%Ûy„ÊŸñÒ´•¼úÈ­,ß¶�¾“nåŠ;¥Kç&lúî^ùïs¤çÜ&Vèdl[K~ÆB"é2ò\LyûYúÉˬÜzèØ¿{Â˾¯ßfñ—_AT_úti…%¾ƒ$r`ËwÌ{çE J�E0Þ‚Ìç¶&çÐ{ì9DšCè0r<ÖÂ}ü6çU~ÙpàX@"|üñcÍ™ƒíLßî�0Çvdèà¶Øò#óßþ/¹Žc‘Ž·8�ï>Íæ]Gè>f Ñf íFN"¬x7+¿xƒVï­´o�´e_°àã™èæ–ôíÕSt;†ŸÕ‰ý[–2ÿ­dWŠ¢|Ž£,žù,ë·¦pÆÐQ4 µÑ欉D»ö°þ«·Yô[r¥} 2×.bÞ{ï )±ôíw&¦ˆVŒ:§û·üÊ—o«W¯ÚW377—'žx‚W^y…âââ*ë xê©§xúé§ñzOþ?Ó'¨¦‹q\qcåoîÓv’м”d“w4ƒ’GÅy¡ûð¸äåd�—ŸŽÇíÄãv£ �×íÄ‘˜¬¬ ¥Ü.º¦û·q;ñù4„Ð(-Ì¥07‹¢¢ôúÎY"¼X½5º mºuE)¿lÂþe_`nÑ�6Û²õËÇyøúËH+°3tt¿À��½ã;~]½’¶£îàñ—?æ¢ëîá¶§çðÀ7£eýΆ%‹ñ +ý.û?|ýK®ôxðÅ�yAW°FÑ¿·*{ö¹óùñÓg9ì ኧ¾àÖûåâ»Þä‘gf`.IaΓ¯‘ï Øë¤-ŸÅâµë‰x O¿õ>S®þ÷üïKÎÝ›µsf²ü—�A¶Óعà î¹û&ö9Ãèvö[ú]ù‡øê™i¼<ã öeWϤflÿ‰g¿KH³.DÅF×rñuŽnú”™oÍ%"© qþ¥ÁÞ¸Bó°åÛ×X°vMÏèU} ádýœ·8x4„‰ÏåÞ‡ÿÃÄkîå¡7qÎð~þùk¶m­šñÓ}N¶îÙŽËØŒî�“hÒq So|SÉNæ¿ø0GÊÎ-{÷r>œù2Äàòé3ˆ�°‚jcÌ�Ï2fHW6Ìûˆ/çý„¡»YþáCü²t;§ÞĤ‰g¡‘Iƒ¹úö„é‡ùúÅé,Ëš¤þÁGï?‹ÓÚ™‹ï}Žñá Zv㓜?ª;¿ŸËç³¾Á§é€�uŸ=Î÷_¯¥÷…×réåãPk|®½çEb-|ûâ]$ïÏÀq4™™o?A®hÎÄ{^¢}ËXPCè?õß\|Þ ,_ħï|�Ë«[>Ç¢¹Ëè4殼~2FUÅÕ�kî{ƒæ‘?¼x [’ýYOÑ!f½þéŽ0Æÿë5º¶oª…nNgê”Ý´”™¯ÌÂáñ»—¼Êü�¿£åàñ\sÛX�Ç‚2WÆVfèÓ«fƒŠæõàv¹Ð4¯³˜üì ÑʲÝBóPœ{”¼¬ œ.wÅwˆæuãv:Ñþh]Ãã*Åëñ¢y=”äfR’S@ó3ngĹãiß±UEó»:¥…9äe!?' ··žsÈ �ÇYH^vùy¹x}5ÿ³-4E¹äf¡¨¨¸J« €æqû¿ãt�£�üì JJJg®Iú‡(((`Ë–-ôîÝ›V­ZU[_>8«ò K—.4iÒ„uëÖáóUÿükšÆ�øä“Oxì±ÇÈÉÉ 55•éÓ§³hÑ":t:f@k„T¾¼>qcÐr§ÿ $-�f>Æêkq»}X"[2ô²û1¸+ÎýKxçµ7Ù¹iEn…žJbÇ>L™v#‹½�]Éë °”o^½›ÕM»3åæéÄ{61ÖÇ4y/qY_ñã²?ðz5“�!—ßÏèQC(ÿ3çó8ÈHIÆÒ¤ñÑa‡¤{‹Ø¸-“ˆ¨hZ%ë§¥{òX»%‡¦ÍâhͶ_RíÇr÷}Ï“hÙȯ?]VåÔ¼•ø¤îô3…˜ÈP –pº ŒuÖ,Îlt] š @ÕŒHáþµ,]²Ž¦�ÒÿÌAUÖ9³·²rÝnlo`܈ޘË:3¶î7™3û¿ÃïÉ¿’r¸ˆ¾m«N�!<…¬üýJ�qL¼èJbm!(Š‚-¶/¹”ï–>À–ݙę�¿$²6¯¢y—ñ\ýÐSÄçËŒ­U›S‹Ó·³ôã9ÑŠfC/¦íðN•Þ�Eüò¿'Ù{(—ÞøœÝóÿÍá€Äc9Oþ>æ¿÷2…qݹzú3l}eÛ‚¥äȽö&†ÈÜøèÓ¼vgÕë�P‰ï7…©q£è3b”ÿ>Á€9"�ž¡Ñ,hZÕvVÍ]HÎÞå˜Z]O“H3Šz\p £VÏaáO_3÷»K¹{ê–½ü;ög3þþ÷9³kRÅ{Äßž‹o¾›¥«odÉÇ0êüDç-cÎÜùxãGrÑ´»ˆ´ú?–Šj¢ó˜ë8wÝç|¶` ³þȃ·œÇÊ7f°yw&£ný/Ãz·­è«Ý’I7þ‹_ÖLcÙçÿæ¬ ÃIÛùìÓÙ”Dôãâ[ ÆîÂE¥ÝYWpþóxÿÓßøä‹…ÅF[$ç\}/ËÖ\ˆŸfÓùCè“à`îGïR`ïÂõ·>NÓˆÊwbÑÉNþ -$žÄvÝP�”ů0wíÎ7šß>{“ââb &;]ι‰Écz2ÿ½ÿ’¼c'^MÇÖ¼7SnºŸ®mãØ4ûÿø~ÝA&üëez¶Oª¨!gß æ¼üaí¦Ò>a?K¿›Ïá<0$ÄË÷þH«nrá�W¢±íû—Xðõ œN7ŠáÿÙ»ïð(ʽ�ãߙٞÞIB( �Ð ¡©*" p_ÉD IDATˆ *vQTÄ‚]åÚ+{bÑT6Ìz’'{…¸”~Œ�<•GéáÞ™³›}{ךp?1‘öò²üƒý·Ýòf"Âèk¾y‘¯Wo£Ý�7èÙ¦>[¿ªú,Ðð9Yò¿GX¶tWÜûí[5bíI*› w>³Þ{‚•{} {í´H¨¢ë€j!¥ëRº–þ¯†�œ-Kùeûvìá±DGDTzIqö6~_–Më‡Ûc?zN` ˆ¥ÿ¨øsÃ@~}oïíº€V¬!¾ç£\3ø¬•ÎLD¥ cÔÝ‹xëõÏxéþ‘„g/%W�åæ'Ÿ¢At`¥÷ÓÑô½û6ÿzë>¾‡wsæ±ü‡Ÿ¨Õuƒ†^u\3°FD‹AŒºo)/�›×ÆŒ"Á³žCÎP†?5–&±•çªÓlôùë¾�ÕS`¢÷WÖÌ›CT‡Û¹î¶!Ç-[%¬q?F=¸Š ��ç­Gï§¡}/»k\ûðc¤&Už‚Dµ†rñˆYó]:K¿~˜·v°iþTÂ[ÝÀ�»ï(ÿìÊ–’|)£¹�§G=Ì;Ov-“fÎ#´~;%Åã+<Äo‹ßaã†eÜýÂdÚ6«\öÒðqè×i<|Ïíd9-4ImK�Cã�űà“,0ŽísÞ‚�¼vg7~^“MJzwÂB-dm[ËäDZåÐûÜwóuXtò3—±rúOü:ÃLlöÄÅÄ`³Zd“8«Ê®Y~¼²ûþêñšHQ”*k" Ã`Û¶mlÚ´‰N�:•6²Ûí˜ÍæSNš¯i:tàÕW_åá‡æ‹/¾`æÌ™”””�’’Â+¯¼B�:ujúU›ŽŸïóT×z?­y@k¬€ðX†ÿw2Û6Aõæ³hâ}¼ñî$~Û²ƒWugäÓ yû±ëÙx@ãæg>#!ÌŠªi\ÿ§üþÁõ<ñénúÞû][ÖCU5d•-¸>}ï{•AW^‚'¾ÏËÏŒeáדéÞ­3u#ÑL(ªŠª…W�¿;‡¶î§ñ€4ìböÎÍäìÉ$}Dklš‚wŠ5SJ*îp†AÎ?2ýŸb�¬E«ôÖh' Å6p\Å·³¡4êKߎÉ'ì´EY» qTîÜ«š‹Á¢¥—›:Ž×Yˆ+ÿ0fK46»¥òkmáÄ„ÃÎ*0)Ç”ÕUÝŒh Šá²‘/ƒ¡¢VøÌ öýʬOß%(¾ W €Y«º“6†AáÞ¥|>íkŒÆ×Ðwp¬ú�ª›Þ ûW|‚ùKhØåFº¥7CqVÕu@)ÿøó·Îç­7ßÇÐu²w¬g×®Ý\ýô‹4o_qÉÙ¹†Ä3 ©A…÷V©ÓŽwÞÎ Ï>ǜϧÛ”oº™Û‰g´Š¢ÐöŠÑtX¼–EKÿÇNE¥Õð×é”Þ®ŠõQpD7gÀ=÷ðžfîäO ¯Çm·ÜIt°½Êe·èy].gîòIìš@÷îݪ8¸)˜ƒ’è?ú!v>ù(ó'}€5 Š·ÞK툠*—�Òí.ê´˜‹¿"¨ù£ô¸´¦öSÅÇ€‡ž`çc÷óÝ'ÑÌvîû ª¨T…ún ×Esùrî,~Ø ±ޤW¿XŽ; óæÏ¬Ý…t!&"¥lŸ3 þ‚ë3áU¢B¬lœÿ¯?û$y„qûãïÐ%=•’ÌML|` k÷,%3ÏM�F]iZ?”]K>åðíWcW1<Ù¬�·â:’Ö¼1u»¶!¡e/Ü5KÏûy`d?ÌŠŠûÐOÌ™1-±£_}Ÿ¦‰±èE™üüù³¼òò[L™>—Ô¦wž°®>W?Íú„œb•ŽÃŸá¶›jר¹ro?}?ì*ûŽyøsÎ[üòûÒú�fäÃOdáкy¼øø=lœõôèAëäc]Vêw¾‰{y”¸è0L& æý{&Îu×^{-×^{í ÷;�NZ¶lÉí·ßþ�æ­.v»�ØØXöíÛ‡Óé¬T ª( mÚ´áǤÿþ•šè8@~~>uëÖ=iU…æÍ›óä“OòÐCqðàA5jÄSO=EBBBMŸ§3åÒߟp’QðÔ ZÑÚ½£Ë-±Z̘´ºä*êZ`ÛºíxUÓPTEUÓÊ›QU“ “IŸŠjhh&ÇÆ*(4ëÒ�+ú^‚ÝjB³Ò¢×-\Ù¦%y«×p £tPKÓËcÒÏ{yaÒ›DU¨²Ù³c%;Š"h—šRéܾíWö•DÓ.5ù|€:¹»à�Û‡°¹ÐÆU�}L›æ±',GwçòÝÛÿ!ÃÂu7ßE°åÄM¨­<á,NQ ˆ°c¶žð’£ÏW0Êòãñ»�@h­ÒÒüÓ�CUµJá_! &þ—Õ[¼ôyàmš7Š:ék=…{øêñ‡È¥·ÜÿÑ�'oª(Éܤ×_Ã�Æà#<è$+\�îÉ!73ƒ#‡’“w·a��™Ana…@l8Ù¶ø+l�ZQ·^å“ Åd¥qÛtKk£#£Ó¬qÂIk ì‘ Ik˜TúZU¥ëe²U=E–¢™HNmOHXi‡×à��¤¶¬wÒi¢¬aõh•Ò¸¼�bç˯!ÔQõ票*õ›·%"º´ÖÍvmœtÊ-s`-›¶,¯íØçj"OþùÖnœFL| &S_Ò;¦œtÙš=‚fÍÛpô´¸C¯�DW±íòläпÛíRBì÷ÿX.ê{+µ"CÐÌ6›µ',"‚ͺ“šÖ “¦UŸú-Z}¾�#*‘V�/¡àÀf֮݉�Aî–y¬Ü_L‡—ˆªi¨Š©ô”ßkB3™P5�]K¦r„ú ½‹Vɵ1kÖàX:_÷ �bC90o!9UT¼;óö°mÝ\Âã[sÝð¡„9PMV’:\Iÿ^=(ûJ%Y|»ôWLÑ-éÔ«?Þ‚L²ìC�jÊåÝ’(Ú¹�»TXr}.r'‰uâ°Ùì˜L2�IˆÓJjj*¿ÿþ;þùg¥ßPEQhÔ¨.—‹}ûö•ßïóùøí·ßÈÌ̤C‡§¼\fYMè›o¾ÉðáÃyã�7hÙ²å»dèä� è‡á£ÿR­˜ˆJ½m�¡„EÆ¿ù„Ì„¥â°U¨VHhß È ¨¤t”šª™ ‹ÁQ1^2ÖÍEIèLí¨ Í¥†‡ëæ¢Ô¿˜Úá§Û�à(k#S'Ü̪B•N7<Ë%�šVùÌìmKøéçåÄ5é@»ôŽ'ôÐ,¥?Ú'ìÔº�œù¸\ߥ( #Š©´WÆ gcî\2vp†.Ek:Yë¦1ÿ»%$u½–‹Ú7ÂÐ}eÉWQÀ0ÐuÃÐÙúÃ~ܼ•&½î"­e2ºî+ Ë )ºÝ00 ›¼ÉêuÛIpÍëG`è:e3‹)ŠŠ¡¥ƒ*”'¸Q?xés|y c^ú�žÍšòí›0uú¼òçé%Y¹©€úõjZ¹©ÜWr„ùS>äÈ‘4Mcÿ¾i,YñúI:•gm^À¼eKQ43:?|ú‡ó]U>Ww²xú‡Ì8Œ¦idgÏdá�ð�dÙGvüÌü¾Ã«šPT…%ŸNàà‘ªzºás³læGìÞyͤQX8�o¬Å{’eXÃüù3p&TUaùgϱ/»¸Êec謚÷1[·ìD3™ðx¾ç›Y+ñœdÙ%Ù°`ögè&TUeåÔØ�Yx²íÝÆÎL•Ö-�°WÚã Àа'b5kî>V‹¯šHëØylYµ—ÇÉæŸ~©„Ò°M7,'��×À]tBê_7¹Ò#š9Œ¸Ô$tcÅ'&PC×ñ¹ÁÞà"¢‚*ƒlÔKk�ùè>C÷aø¼8³¶2õ¹Û˜0jÐÑÛ`¦Îú U=‘üÌ“¯¿â´˜Íf:tè€ÕjåË/¿$//¯RµÛí4lØ�ýûKV†AFF_ý5ñññ´k×îoÕd6kÖŒ1cÆP§N�³¶.5œU7ÁטÚOà„š8EÕÐLœ¬¥÷D*U• |ºó¸9 |^�U;±i³üY®½üº0ƒf— "¤B€5œ»øõû,R‡¶#à´* J²·2iìPf/ÎãÂë_ç¶;ã¨r.~|ÿE¶ìÏgà“ÏS/Ò^åÆ Ž/íw¶m{:ÇVßÐÝÊ>Œ�û‰ëhvâ‹!>³rI‹._¾·àûŠ 80ðí >w [W/&§0„V];`×s˜>u* ušè‡˜óþ3èžAƒæ½è|IK>„ìb¡…2ç½gÐuÝy„mBÑÁoùôU'uÓÑ=>˜<'Á¸3—ñÕëÐ_Á.Š‹ŠÙ±rSß(¡ù…WÓªE\Åx {@±¥<ˆ¬•@½7ÂYÕ¥3ËXΈ[bÅ ÏïÊÏ'©Ë¥9*ŠÙºðe¦øñr]ߦ¼ößq|þÒ(7œB�è�JŸ…^’É'/Œaý>7W=ó®¥ÿeÎ×ïói½¶Ü{[ÿãvW�ÝËÞaê[“kÕ‹›†tã�gÆ2íµ{HIžB£ºÑ•Ÿí<Ì”WfõÎbz=2 Ço3}úd>Hh˘ûn@«´õt®ý˜O_z[ÃNŒ¾ój>÷3ß¼‹FÉShÙ¨òÁQwåðõ�°|[>Ýî}ŸØ¬©|ùù Þ+�1cnÅn®¸Óäný’Ÿy =¾�<:‚ÏÇ?ļ‰#hØ` ZVmº;—9åÇM9´¿íuR| ùü£oy÷•wóÄÝ—Ÿêì[7gÈ…¤Ô�ù[ûžRþŸªT‰ïp)Iu'°fÙ 2/ëįk"4&•ŽíŸúb>¼n<žãC¦�ÏëE!KUµ�†:èÎB|ǽÎSR\áÏ ,áµépÅ-Ô«8  {UšW}¢*„øgÚ´iC¯^½˜={6‡ƒÛo¿�ððpTUÅl6óÀ`·Ûñù|ìß¿Ÿçž{Ž 60jÔ(6lXÝÅ?ÛNÖ÷ó©êZðç$]7ðU5o¤îÁ§?·–—‡–s$wŽ` »±æ‡µ `=ÚoÏÐ}xÝn“ͤ¡`P¸w;|\T¯%&­<ÚQ°k-»”h:$5;­r»ò1ã�ûùnÉÚõ}˜î¾ê$áÓ hçOÌ[ô+¦¸¼mÒ±k\:^· &‹[x’M*.œC戈q”6:ó÷³uìAÑ4J©�jè>/^¯ÍbAµÑ(4–…›Ø¸ú7Òô@S ÝË®“É6 sÛÌ”N�åq{PÍLãš»{WóÑýCøSMâ¶W¿â¢Æ6L&3ö+;×Ìcçšyåëév£Ù,úò²³cépqk _0v»Á�ï?`FùRuÜ èÅk™?y3­Ûеa}löìy¬˜õáÑç)`xq¹ÜÚ¼‚9Ûwc‰M§Y¢ƒio<Îî®5Ž:‘Ž£Ê†fÅ=›5 �ƒÖQ’_Bb›¦˜Ë7½AѾULþà ÌM~ëXÚµ®Åe¿.eÊ´|þú7Œ|jŽ£ûŠ¡óûãXòëN’/ÉÕ—÷ÆÓÂÇšï®fɤ'¸è¢®´HŠ,-‡aPœ±ŽÏß�H®)™[nùí:7àຕ|ðñ4>{y ¾xåËv²é³—YüÓ»ÝÈ «úbÉ aÕ¼«øeꓬéÝ“6)µÊ—]’µ…Ïß~�S=®½éYÚ^Ø’¼­kxãÍ�˜üü'$M|„@SÙ²Ýl�>‘ïæ¯ nÇ«¹và•;ømÁ ÖÌx–•½zÐ9­Ay`seogÊë/�¥ÅÓoøxÚv¹Ïîõ€Æ`×’iLz}û$çà6¼s??ü¾�úÝÒIL(í‹x`ý ^¸³/N|“¯†—ÝËf¡…Q¯e3Ô²_[ÃÃöE_a‰¯Gý&ÉU³JÞ¢Lf¼1ŠÉŸKPt_ú »”ÂƒÛØ½u»¶®gïÞýåóýùœ‡™ÿÚ‹d™¢4ônB+ QvZÍ«w÷㥧¢Àm` kD—kzâÜ7�W^›È�ìž±øo­«j¶V+ŽèØhv3ª=’ÿœ�Ú[éöÁ¼•tè˜JíÔ ynÎv|f�– nþhï Ï}oÎÏ´�‡°v÷òîO{¹oøå˜Ã›ñìg+Oxîû_Ï$4,„´Aóþ¿3p`7L¶4W&¿LÿŒOŸ“ƒ™‡q»]Þ¹‚o<Æ> n‹¥½|n6îØH¡Z‡æ)uÊ¿�žâƒÌ|i4›wÑ󞇸 -ÅBŸ›Ÿ¤uÝxV.|‚ß/+ߎ{VÃ{_}Dp½K2òA•�—3üÁÛ°þÁ{ÿ˾£“ßûÜyÌ{ã~֬ˠûí÷qaç(– z œô¤º¬ÿùYfÍY„÷è²36~Ç{ŸOÄsƒG>JX •À:—pã#wâÛËûO=ÂŽC¥ÝK ÝÅâw`ùòmt:’Þ=; ˜é2äQº5Jd몙6ý[ÜGOê²w,åýO^ÆÔ‚�#Ÿ¦VD ñÝöèý„s€�ÿóìÏ=zZìeéG³háÒ®¹�«úwG19èpíÃ\Ò´!»7¼ÉçŸ]~岂¿ñ¿÷Ç‘o®ÏU#ÇQ'6 Gl:C{”(í Sžy˜ »s0÷ÁM,?¬Ñ²iËJÍêÿŽFrçkI ØÌ{ãîc«/� {·û‹Ëlª$tBíp‹ß|–¹s ûp&Û–ðÕ‹w²ñˆ�ÔëûQE†µ…ÄÒ¤C7 ÷¯ã£±cÙ¶cy‡÷±ìËg˜9wå�²†Ó¥wWŒœ L{õA6mÝA~n6»WÏåÍÁ¸õо¬ÝxüU¯„ÿ†¢(ÄÇÇ3a†ÊÚµk5j7ÜpÇgذa :”1cÆ�‘‘ÁèÑ£yüñÇ øë…Ÿ[ÎDèH`H$‰ µÊK¦;sX±é0µbb©]«ò´=Ç;¶>:«¿dþÌÒú¼Üƒóycô2Ž è5ˆn?”‡~€»™¬õ?±dÙ2j7H‡ôÖ•ú~æïZÆ’¢®áÊÑãin¥Ë5÷óËÚl™ò$ÏþúÕÉ®?ÿ ²Eo®9› î’\Ö-™Éêe›jÞ�ŽÓ ®ß�þ7 áý÷>àÝ0¿V8y’y8Ÿ‹G¿Lj«:`±yñl~[ñ;:0ôª‹+íH†¢J¥Ý.0¾%7¿: §ÇJtB-ÌVÇ ¢|ØÑL&4Í„ÕT~Fi¶žÐýTõcv¨(VG eçžV{ Ç3—^NÍb±aµ”P#”>CG³öûkY5ç2¶}E`€�’œ=dd¢~ÛÞ Ðð¸ò8¸a!¶F·r¬9xûO“˜½xQ‰·rù€þX�V�ÕIcÀ½#ØúØSLÿi­S©\ȬgƲ7ËÍõ¥YRÔÑæa…Ö}î ëâåÌ^5™™³ºrǰ«Ø»ò ¾ž»˜À¸A\yíõ8,¥�Ë�•÷ÝË�>¬—^¢u«Ö$×ò1ÂSì8PBÿ'ÆÐ:娶fßD�E?óÕOÓ™öeî¿k(Y¿Ï`Ê×ó0…÷fàð[:zBc ®Kßâ�GF3ïõ—hÕ"�I¾a,ì)¤×}÷“Þ¢vù²“;]Gïîßóù¼yLûl2Þw;EÛæ1ù‹xí�tûÝ„�×TµDÑgÌãl3’Eo¿D‹¦mhß<„Ÿ^ˆíyt½m<]ÛÔ+?+®Óæ*ú^ú-Ÿ|½ˆiŸü�Äï&{ã||¶0j7l�Vá;`h¥}—+×úJ¯¨vüΠ” ¦;öúฦ4nŸÆŸó×P·ÃÔ��:á5ÆÑ}ºly¦�FÜ:òÞ{ë|ôäõ̯�¯è ™‡²iÒù ô¹¨¬t(ø€£Ç,s ]ÞźÅ+Y±ìmžù�v�#8âÐò=G×C#®Ó®¸r³gÍåù»·ì (k?GòŠi=ø!7Žt µlýÏÙF,q±X,|üñǤ¤¤ü£×ׄ ÙÃÃÃ6liii¬X±‚+V�••…Éd¢nݺ 4ˆ6mÚШQ£³ZóY>‹è/›ê5 ŽÊM𦈈ˆè›o¾¹×Ù(Ѿ•|W… l �8óbccËÍ)�¬"Ý©“˜Þƒz úz<>�¸Ö—Ð81U1S»Ugâb°E—˜BJ‹¶ØÍ¶è&´hP‡=„к�hÒº-¦¼ ,Yð=Mz¼À-÷\GIA1!QqÔi}%7Œy�6ÍmJƒ€àh¬†�†—ßMZ³ú¸²·²ðË—ñÅ ãò~�Ë›a 3~cþWoáH¹‹ž=Ó¨zÜ‚N‰ÛDËôÄÅD–®Š×ƒW ¤nã44mBlB±uÊn HjÞž”Æ�0i*Ù9»8¢Òý†h‘]égÆ‹µÈKBÏtIo�IQ°GÔ£c—nXr³ñYìØƒÂhÔ®'·Žy�†õbJg 0[ 1b�oN‡Ë†P;:E5“˜Ú•æ±Ñ8�ÅX„Æ&sÉ�OqÝÕ}±š4P¬DÔ‰Âk£Oÿ�Ô«}ÜtS† Ÿ%„ä´Î$Ä„–îXª†#8‚à°Ð*¦–ªôb\.1u›’Ò¢ ¶“Pðz¢R. EÓ¤SVç+ŠAQ‰�F©�H¬Ÿxt+XÃI¿ì ‚ƒmø¼,V;!µжÏnó, 1¥S•d®çÓqoÑâÚ{èÔºÉÑ¥:ÙõÃRÌušÐÿÞIŽ�<ö~ªFtR+¢Ì^ì‘6“ÛnbsfI—ÜÁ þ—`-ï¡`²GѨU3œ^›;Š”ô2~ZŠ×�+﹟Æõb+¬‹Fd½fÄ:,avBS‰6ç²éPõ»ßÄÕW_†£Bí f '¥uKJÜ6W8M:7çÐ’ŸñE'rÅÈÑ´hP§Â²UÂk7&>ØŒ)ÄNH½fÄ:\lÎ8L�N×1ppåÑúš%˜-[áÑ5¬î0¥7'gå/¸Cèsç½´NI,( ¡qÉÔ @ ²”Ј„PØ´ÿ ñí2àºÁ„9Ž�‘¨æê7k…¡Z°zBIj•Ìê/&±3×ËåCï"*äØsMÖP¼¦HZ¦w£VLÈÑ=IÁåÕ¨Ó¸#I�JGßàq¹ ˆ¨C‹vÝ ´–nM3‘»ak7î£óuÓ>µaåþŸ†ŠO±‘Ъ ë•}ÿTb›_Dû.](..&$¢±It8šG=Ftر�×Gh\Kš·k�EU°„Ԧͥ½ ¶b¶‡“@çkcÈ�ëmß IDAT­7¢j!4mÛ•¸¸pT“�æô¡YJ.·‰Ðˆhbêw¤Ï-ÿeÐ�Ëp˜JOö4KØk“zAg"*¼oÝPÛ©«rÅÿ999ìÉ×ðiÇæŒ6«Ð(¢êSTTDTTÔ?šHQj×®]>Wæé2 ƒœœ, &Óéד•””àp8°W1ÖáïR³ÙL||¤¥¥ƒö7º ý[ùùùx<žµ>§cÙ²e«þùçM€—c!²rçôÊ7ªø÷©þ¥�³ džꨀ599¹ÙòåË_;ckSÁòý{ó�EE÷’fßNjjjù޶#Ç`SÖi¦þŠ£š•Êõ¦†~lÈü�åoñìý£I¸ðUî{+VÇnè(ªV:¥Ó)ÞâàšéŒ»q Mÿ‘[úw*îîÞgü=·Ñù¥õ ¾¨I ªƒ0J/5ètƒ&«‹ùï~™u\EE¥#Ë6»ýX—ƒó‘îÅYRŒO7PM¬V[…õ5ØóãëÜ9âUFNœÁ%�O¯Ÿ¯83ܹ»xó¡�ìvvãÉw'fý÷=ˆ £ô;Rxh+JƒcÙ_½Âíøÿ¯xß©þ€Qc›àO›r|c}…‡* C/ ¤^ T“éow„Ý·s;œ1 i^yžÏ�;V±ÏGZóÄ>4³ ‡ùŸ@T¬'NF~ÞRMØNòå6\ü¹è{ šP§BM¤ð¯‚ŒíÚ¸…¸áÿ!ø „OŸó?MÇ÷sf³nÃVº ùŒ¦§>U3£þƒŠEÕ0ÿÍšÌçÝQC©ªŠªªVKu»Ýx<žTû ¥] Îp©ªOAAáááýij«b“ú _ã/Åy¦…ÔïJ¿»ÆœxÁ±‘ÌSƒ×3nÒ5$Õ‹¬tó‹î`|‹;©qzgjâ\¡ÑtðSüçZuÿâúÞâì ŒoÎ�/}KHrjUÓØþ#†ÏKnn.–Ðd>8š^Wõ9SSÝ qÎ*í/oáðáƆþã øO”5¿+JóQÿ Ë^PP@```M¾ÊÐ)†A^^Þ¿ ãgÀ›véx'[£jÝZ!6H:+a_�ðf´jþ›PÛ�ÖüÄ»“Â[þ»b‰ÎLRÇÔê.„�¦I½è¿~Þi.3å?ï�ÙeÖ Öó§�KøY`` `Ïž=$$$œò ?gŠ®ëdff’‘‘Allì?Žf³™��¶nÝJƒ  ùëÕ@999ìØ±ƒèèh¿ô5-c”]¹å,«‡'¯×Kvvv¥�íÔcÉ…Bü•üȯîBˆjçv»9ÝËØ™L&¢¢¢ÈÌÌ$;;›ÈÈH‚ƒƒÏʈo¯×KQQYYY¸Ýn¢££±Z­ÿ8€*ŠBPPn·›Í›7Lxx8v»½&^ö²’²`999åMï‡ãœ­Å=•j †¢²½ÀÁößVwQ„Bˆó’Ïzz#¨EÁf³Q«V- 8|ø0ûöíÃçó�ñ©�4MÃb±HDD6›í_EMÓÊ—•ŸŸÏŽ;ðx<èzõ\¸¡,@þÕg§ª*‹‡ÃAllì9šÿ)¿PËñµÈŠJ�£¾¿‹!„Bü¿eÖþ:DªªŠÕjÅl6ŒÏWz1—3@EAUUL&ÓkjVMÓ *¿t¦aÕ:¯¦¢(ùþe}_5MóK·‡êä÷Z+@gû‘ó3Í !„ç‚Z¯&°, ù³â™RæÎÃKdžüžkÔÒQ•svv!„âei×I ­ž¦h!ÊTUzV{ºªŠAjŒ�`«Êî<•bÏù×±V!„¨i¬&ƒ‡NJ¤N�ÅàÿÙ,Œ¢†ñ{¼¢(ØÍÐ8B')LG—ŠP!„â¬S³ÆÑËEKøÕ«ÚFÁk*Ø¥+¨B!Äÿ;…B!„_IB!„~%T!„Bø•P!„BáW@…B!„_IB!„~%T!„Bø•P!„BáW@…B!„_UÛ•�j2Ã8z}PE‘‹• !„BœaÕ^ªû|øª¸éFõ]$þÐößùbæ"ºÎø² C§0ÿY™™dÉÃëÓÏø{!„BÔdÕZê+>ÈsϿĺ-{Ox¬ý€»¹·z5”ÊÍwoŽeÔ›xÆ\úµIÄëqQPè"(8“öÏêD ÃÀU�É·S>dÒ·Kqy|(ª™Ú©=xhä0êE (Rß*„Bˆó_µÖ€êîBV­XÎú-±Ú8ÇnE«¦RYH0ŒACï¤iÝhVÏ�ääÞ¬Ú}ä/U÷òÚ“72â©×!0ŠN]/ %:�Ÿ<ÇõÃ`GVñ™Z!„Bˆ­ôUiÕñ^|~8�2§ª™À0p»Š9|ðG ‹±8‚‰‹­…ÃfA÷¸ÈÍÎÁIˆÝ|ôU…G²(òÙˆŠBU ¤ �ŒŒƒ»}G…Ù¤¡ºÏKNæa¬A�”äes¸ÀILíú$§]Ä£É"Ô’™™ ¸È:tˆÃa&ÂCƒP¯»„œCÉÌ+B³R¯N<6‹™ª*2�yûY>sm.¿‡w_x€ˆ@+^WsÞËÝ//`Ýî$E'cg!ûöSàòM\LDi™ð8KÈ9’OPpG"Ï­’IaA1!aa8l–ÒOÂð‘›sÃd%48ƒâü8„ÛP �Š%*"“ª û<ä9ŒÏŒæÍ'ãÐBc⩌Ïë&3c?Gò‹±…I€Ý‚‚�¡ø|:ªIC•Ú[!„BüMÕÞ4ÕŒÕbÅj=v3›Tòö¯âñ‘ƒhѦ û_M÷v­8òIÖfäsdûZn»8�ÏÎÁ]Ö]T/äé�m¸hÄ 8}^26Îç†þ=h×±W\Õ—öm[q×øÙ™S@ÁÁßм}®¸‚î-ÓèÑw ³7e³éçI4ïq[d2ëùGñà[ÀN†_Þ™~£^¡ÀéÃ[xˆç¸ƒÎ©méÖ­�ÓÛ0àöq¬ÝžSåZ>Åy`„ª*(Š‚ÙLŸOñã³¹¨y=n_Å}ýû’žÞ‰nݺѱS'F<ö1Ù%^6}?™žÍ›reß+èœÖž~·Üϲ• èÚ¼ &/*?Wæf®Ї‘�¿CžÓÍê§s]Ç HïÜ•®]:“~ao^ÿx)Nœ9{xø–Ëhq_.¼¸+�»^Îû_ÿBááí¼ûÄͤ¦w㚆Ð>­—¾“í¹. Ã`Êy<þøXæÿ–‰ôdB!ÄßU¨�«¤ˆììÃ>\vËÁåvñË‚yüøÛ!F?÷6“?ŸÌëOßÉΟ¾å›Ù« LH¤a×Tvþò{òÜ€AáÞߘ»-€¾Ý;@Þ^?žu9Á<ùòÿ˜úÙ§Œ½£³ß}–÷f,ÅJ«€÷îËdèso3ùƒw¸´q(*˜TP­\8ô.ž=Hà?o~Ìë !Àâã—÷Þâ�Ù«¹èžÿ2mÚ4Þq ¾û� ïͬ2ŒY‚âhߣ1¿Í~‡A·�ä�Ï¿aã¶Ý»5êÔ«C°ÍŒ¡2åá'™¾Û`Ì+ï3}ú4îÔ™o?Ïç‹¶bPºÁ4 ÓcbÌ›òñ‹OоM7z· á›…«p¥�¶¯ý…ܬ<:tï…š»‹×î~”ñéLüt*_|ö!7à�ׯ±lK6(Šj¥ óm¯¸—)_}Âõ½Û³aåB^üd>wþçu>›4‰·ÿ{ìù�Éóÿ@7 Ö­üŽIŸ}ÆÂ¥;%€ !„âo«Mð^~ó4iß<]á¾$Þ›õ½ßÜ+FbwXðºÜ$Äô§í»ßáÍ/BuDpCï.Ì|d¿¬ÜMÒÅuùuæ,¼µëѵ[[¬_ÀŠ¥4î;î¸&ЪEcvmü…©-æ‘a—”¿Û•w?Ã7ö-ÿÿƒ€JdbCš6M~#µm:©‰á¸óöòÙêåÔoœÊ½· &Úf@«TF­ý‘g>œÇ¡g†{Ü'k gÔ ïbû]~üyãî›ÁSMÛ^Ä�wÜÁÀK;c\ǧ[vrÅÀ êÝ ‹ Éq#Ù¼a=ß~°˜z7)_޽ϾËÐNu�ÒÀyñåW0÷Ùüvð~ÚEÁ¢åKÈ´6àò‹S8°ê¾=Pĸ ·Ó#=…z�.®ºq‹æ­§Í�z4ízAèѲg­ð ¹‚°a!($š+†?D�«G ÙÑ•žWÝADâ…4LoYv$!„Bœ#j@nÐH½àzn¿©f|¥w)ÒFS”³ŸO^Çü Yhª†¢—ðGV�¾®Á½Iä]–­ZJ¿66fÿ²Ž¤zÓ:1‚½›óÉ͇Îm–¯¤¦Ò°u;ô÷w‘ç�à£÷ÇÔ 9­{JŠqæå²{ó~î½e(*GîÆá¨‡ËKŸ¬BX|cxü¿Ü�‘Á®=;Y·|>LžÉ“£Ç™0•¶Êa|?ÏœÌM«¿ нìÝ“OBÓ<¾cK‹®Pf…6éÝ©7‹ßo YßVÏ_B»>ÿ!!HcÕÁ€—�&<ά †¢`¸ )òz1”bô£],1±8*”;±U'.èô =ÿ03?#:®=¯Âõ}»�¢™Ð�KžÖg'„BQ¨J\�æôìÓ§Ò $oI.ãÆ>Âû³Ñ÷¦«è�Ò€èàžõBùsLa ¸f`Cžž³š?:F³aíF.{å5¢¬*ûPâñVx/�Ó…hC«ÐùàtçU”ÒVúÚu:pë±Th€ö)�DšO|�3?“ÍÛ³¨Û0‘øz ˆ¯×€ ºô Sû–ô0Š¥ëwÒ>ÅF»ô˸²O*ÇÊQ·ÒçcT,³¢Ó$•ô–uXóý,¶&6avVo÷ꀨ@8ý¡iýÈ Ÿ†Fíäf˜OÙQ©Ì‘‰©¼ûÙ4V-[ÂÒ•«Y»äGÆÝ1˜ýÙÓyôÖÎXk@!„Bœ{jN„8.ê^/%Gycï¿›ÁWö&92�b½B5 i]ºs¯Oúœmævôi—@tÝjÅ›ùjâ\²Š\èº�¼ƒ[øaê�µL!ü4¢·¦˜ÐðPèt£– 0"kÅáRЉOIãÒ^½èÙãBjÙ ò�Ö*f�ÊÞ±”›‡á�¯Sìò >¯‹’"'L„9Š­Op ‰<Ú\Е^½.¥k‡ÖØu'NÝŒù[K±†1hÀÅìØð#ï¼9‘”´V´j@DbSì¦BŠ‘\Øã.½´'š%á..Å„z’ì»6.å›ù¿Ð0ýîó8/=ÿ$©ÍØòëfœºAQÎ!6¬ß@f‘ûøÍ'„BqR5 ´4{`T“ [HÙÙß1a‚�³‹ùs¾a{V>Ux^ÝfíiÕÙÆ´orÙˆÿR;Ð @Lã ¸üÊÞ<ñÁXÜîßhS/˜õ‹¿d™ÎÓC/Á 8uðrreeŠŽL >Ûyeü3ìè57ôîÀ­×\Æì!�1úî;¸¬{:ž¼ýL~{*u®}‚AWv=aYá -ho<ú û6÷'1: wÁ¾�ô�uÒ¹¨EÖÈ îíß�{^x™ÑäÐ:)ŽÝë~aÖì•ÜôÎ,. ƒ“ øQIìp�ÝÿeúB7>ò8uÃìÄ7êȰnuùhì]Ùyµaõ‚¹¬9dãùO/ 9Ô|'lƒ+æòðƒé0ø6ºµŠfçú_ضw/®i‰]Õ™1é9îyv*Æ}ÃËÃÛP]3· !„âÜR­TÕlÄÕ®K`t-LÇÕîi¶`n¼ûQ\Þ'Y0k&{½¯¾‹¶+R~�v[X,ý{vcc^=.é\~¥"ÍÎðQÏ¢êã™úíB>_fK^~óQ.½ &kɉ‰Ô ¨ôÞöàHÆc=Z•Û¸w�îÏ;³W°xy#÷L'±Ëu¼ó†Æ«ïMbêgŸ¡¨*ÆŒã†k¯¨2ˆÙÂêóìĉ|üæ³L_0“¥zi¿Ñ¨ÎWñÎ]·Ò¢n réícy5¸.¯NžÅ–_<‡Ç0êÅ·Ú» *AƒÄD¬'n:S`}®»šCsÿ _¿¶XŽ~¦–ÀZÜ3a"ao¿Ágs¦c( ñõ›ñÜ££èÙ< }ÄÖi€«^(+C;^u'/é!Œ{ïK¶¯òá±ÇÐwôkÜ34 ³¢P7º© ’H¯QƒªÒ…BQÓ)@Û£Õ£7[rrr³åË—¿Z­%;ÊÐuÜn(&¬Ö*:Wþ%—Ë…n€f2c1�ÙÌís»(q{1™-X-¦¿¼œ¦¡—^ ¾ÈéA3Û Ƥ�ßÜ%%¸}:› ‹éÌÔ-ºŽ«¤]Q±X­U¾oU¼n'.�“Ù†Õ"õœB!ÄùêùçŸo„ _%”6º3NrÅÇNõ׌Ñ*ŠªbµÙÿÅT¬ÖóúSÓ,V-Ö¿ý|EU � è/žg±Û±ü»¢UùÞ¶€€¿~âqL¦3]!„Bü¿%-§B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+Su ;;—ËUÝÅB!„¨‘E!66¶º‹qFU{-))ÁëõXÝEB!„¨Q\.………@φÐÐP’’’ª»B!„5JVVþùgu㌓> B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üÊTÝÐuŸÏWÝÅB!„¨Qt]¯î"œ5&€º\®ê.†B!D�âñxª»g…4Á !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+Su@QTU²°B!DEçk>ªTÓ4l6[uC!„¢F1›ÍÕ]„³âüŒÕB!„¢Æ’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+SuÀ0 t]¯îb!„BÔ(çk>ªÔçóát:«»B!„5ŠÇã©î"œÒ/„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+  B!„¯$€ !„B¿’*„B!üJ¨B!„ð+SuÀétrøðáê.†B!D�RTTTÝE8+ª=€ªªJqq1Õ]!„BˆÇdªö¸vÆUûÅÅÅUw„B!„IP!„BáW@…B!„_IB!„~%T!„Bø•P!„BáW@…B!„_IB!„~%T!„Bø•P!„BáW@…B!„_IB!„~%T!„Bø•P!„BáW@…B!„_™ª»ç"Ã0*ý5Ÿ¢(•þ !Ž1 CŽg5”¢(gõ¸%Û¾fúÿð›uÎPÃ0Ðu½ü‹¢( ªªúuã†�×ë-¿É—öÜ¡( &“ ³ÙŒ¦içõ—ZˆÓáóù(..Æår�p\“cœ\Ò4 ›Í†ÝnÇl6ŸÑ÷Ò ƒ½¹>¶V9XbÂg{o£ü?Â/¨¸åU Äâ¥i¤—úáfíül¬®±´,ì9�NÜn7†aT:Ôu(ý‚Z­V¬VëY ¤º®ãr¹P‡Ã�Åb9á½ä`]sTµm\.N§¯×‹ÅbAUÏÏ/µ—Ó館¨ˆÀÀ@¢¢¢°ÙlÕ]$Q�×ë%77—üü|¬V+‡ãŒüƹ<:?ì‚…û‚±šÁ¤Â‰‹•“tÿ+k]½ÀÊòCÐ0¸„ÁM}XϿ߫@}>EEE8�Nìv;QQQX,, š¦àv»q»Ý¸\.rssË¢6›íŒ‡PÃ0p»Ý˜L&‚‚‚ª .eYÔÇo‡Ã�Õj%//�ÇSåI„ÿ_”g#""—ïB ¤i111�‘‘�ÉdÂjµþ«eê†Áê …ÅØ- ÝîRRûª*Ø-°µÀÎü%\ÞÐwÞÕ„Ö¨jN§“‚‚ILLÏe''º®—ר ñÿ�Óé$66VÂç9@QÉÊÊú×­mn¯Îþ"+6+èPv @‘ZÐjSž9�ï,pkqB‚¿ u–ÕˆZv6ît:IHHÀápü£åX,âããÉÎÎ&''‡���3RZTä@}~(;‘�>»âÿ«²nEÒçóÜaµZñx<ÿú¸åÓ ŠO7Jû©€ª”ö]9>ªªJDDDyS~XXØ)£?Ãʩޯ4Ÿ¸ÞBq:üuL3 ÝçC¯âýUEóól&ç²3µÍ¼:øôãZ}�£¿/gh·(ý�.ý·èºDÚS«ü Ê~ï�óö³«4??ŸÐÐP‚ƒƒ«|ŽO‡{�ÿkï¼ã#9ëûÿ~f›V«]õv½ŸÏö¹à‚1îg;˜1ýGBK1$¼ @8„˜Ÿc’PÂ��!!1`;Ø`l°ÍÙ¾ó�ð5ûŠtM:õºÚ2å÷ÇìJ£¹™ÝYIW¤û¾_¯}ͼ4M£­­�ÎÎN2™Ì)˜t*±òãtì|]™ŽH ´0u Í´´4“¬–4sAÜOA8=XÙa¾ô×wñÀöݨ�㙥GYºi3oüí·pÃÕP‘.N§ À¼éP‡Êk[HwöI,†a¦zu„UÖ7Ã+Ö)ÖÖBØ‚ÞQxâ�ÅÓ½0š÷)³\¸Ä9ˆƒžcç )¨ C΀Isçp;ÐSq ݰå ±3.@óùÚÉàÀ]²žª°PAÎn,LF¬!:û¹ôªkYULïÛίù;¶îããŸù[^ÝZùQ}:°lTw‹%˜A&³B)¸v�âM ªÃóÇ ¬n…·^®¸è¨Å—¶Á„Q¶¨Cs#¼m“bo—ÅGæX˜�@ÕÍÅ9KÁ –e1>>N}}=ÑhÔ3Ï@>÷¸‰nÂ÷ßâ%KìæçŸ0ùÐMþþQ“K—„hOž|l]]½½½d³ÙY÷+=“4¶¶°aå2B‡×Ô³Ú½‹ã#½ékg]{ªð÷ia™&ù¼ŽiY¨P˜h$<ýãª0‰?(4 ô|ôG¢„CX†¡“× ”ÒˆD#SSsLc¡çòè¦ JÙºe @¡i3Wí°,Ó´fÌÑjY&ù|Ó´PZˆH$ìq>AËViÚEA IDAT®æ¯ïþ;6ÖÛªë™1ùʽ|äË÷ñÈÓOñºëÖ‚e‘�Lcjâ�Ñ‘!Æ&uê©©ŠÚ3¥Œ�04:�‰FMm=u5ÓýXóÙ 9âU1´ÂsSÏåÈéÑh”pØ6"LC'›Í¢…cÄ¢áB¾IúÑ EMªžTM÷¸SËÈ3<4ÈD&O8§±¡~ÁM�c†¡ÐO�\±Lñ‡›aÿøÜS½!Òàæ oÝ xÇ(|m¯Ev‘*R,­‡îãQ Ð %t¾)®(TªŸf:ÇFàUç«)ñ pùRÅK–*vv[±hOz ˜úúz†‡‡¤uÿ:ÕÂ1šÛ[è9D.—/¬Va¡çÒ9t€‘´n»öZˆº–¥,km Ò0õ‡_ÜËdU#ÉpŽ��LË"‹³tÅ*TfˆÃÇ{1 [\Ö4´³ji ‘°†L=Ç`ïQŽõŽ`˜v¥Â‘jV¬YEmu Ì,�»3"¬]µ‚šªðÔŒövÑÙ3Æ’ÕëhNÅÑsŽ=ÂàÈx¡Ï‘FM}+—µ ‡dAX¤Ø?„§jáª$×½îfB_ýÃ#ûy@Žû‹ß㩪«Ø²>Çÿû“¹$w|âNn½t ;~ù ÿð•ÿd"�ÁD‘lhãµïü¯½öⓟ~þN¾½3Ä'ÿá/ÙØšÂ²rlýöWùÊ#;¸íwîàÍ·^Ц=ÛŸàóŸûZ¯ý ôWÒ³óq¾ü�ï²÷p–Ñx‚^ûv~÷ͯ Ã=üû×ÿ™Ÿ=ÙA&gŠÄ¸àe[¸ã}ïdI]bA=»Š¨sÅ#g °ý]TÖ"­EáÖÕ06 ßÙaqËÃÏnãýw´c ½È‡~ïØ^Ém·]ÏÒ�ÁsÏ<Á¿üí'È„ùã7]éþéo>Äײ‡‹¯z9ŸßD×^îÿê?²íØßøôGhMœñm�Ñu‹œ¡P¨“¦ÿ´°|âOãˆ[’„� °ût +r®t=_øÔkЛUè&´5ÂG_®X²x®Œ¼ü|�—.³øì“°gÌ>þ²5­ƒW×Ag çàÒÕŠÍ-p÷c°oÜo«[·6X¬Yæ$ôNÂùmðK_x ~Q†Këá#×A‹Ïõ‚�Û_ªxi;|z+ ÁõᎋÇú-öŽ@k-|ìÅÃ;áK»!†ˆf¶Šh)¢ rfù{ç¶\aû{�> §€|>_ñ4 –e‘Î÷¶[ì8¯¾@±¦Á?4�j‚^Xý@í¦jÝбL…eY¹ ŽíAGQ—ªFa1ñh˜P$Îy7ÜÆ«ßx é¾ãì9:BÓŠ�\tÙrNüâQ†r&Gìe÷�¿óŽ7Qßù$;�‚>ÄöG·ÑxåÖÕ† ÇìwP×3�ñ£gW7M›®âÏîü$ïzÃ5TY9~Õñ<½z‚‹_v+Úä ]�] eCÜxÅzª2£Ý×U¹è8SX¶øÔ {ä¶nÚMäùB8gØÍË9£²�² ¬`t,XþT\Ò¿|¶‡1&r°« ~|.Yõ!;¯t†Çû`8Yغ-¨S…:¶ðËeáû /k·”¾Ø;ú¡*fçKTÁK—+žÛ� „ã9xªv Àåk!bÀùË¡5dñíg¡k²ô�Ã> ÿøk0!­Ã¤a�ÙÊ™öÿ´^ù½Ë™ö=× Ûáµ™ åï«Îø ¤JVÊêŸ|Øä—,>rƒâ—j4ÄKÿL[ÈÍîV(J2UƒR�é' $[W°qU¡Âo$ÓÐÁ‚CûöÎøõ­ë94¥Èeu¬D©{%2Þ¹ ƒeä!%^gF£� OVÁÀ$yÝ$ SWßHÿxÃ#“TÕ†C‹&h¨­ìN,–ž£ûðúMí¦‘·S#7Õü#Ââ¢iéJ>ú©¿c]�ýÚÉgÆ8´ûI>ôgË=wsÙßb�c0©ó©ev‡À+7/ŸñÒ Eb¬¨oCe÷Ñ30Jlc ç­;�gžÜážqŽ<÷$ck_Ê+oÙÂîŸÿ„‡žØÇ5I�­}[Þ¶žP·ö~ÿ­·òƒÿ}šÏܵ‹ºÆZj“K¹áµoäm·ßLCÄÄ0òè“£|ÿ_þ/�}gzÀl~bC³�ìA7M" `µ<‹i¡3Ÿdu»Ìx‚@œâP¥àÈŒ»ò†ÐEÜ´¦Êê‚\ôb&F ¢S7ìþš–“cÐk8òåa8 h…|a¨ Á%Àç×MŸSÓ =}“6`Y-äÇaonæõôŽÁÃcÓa£àNZV°ëž †¡£zf¨RŠL&¸ëµ¯ßbûa‹›7(Þ{…V²ïg]×1 cA Ñú¦&Ö®²GÁ�§Ø½÷E²££äôVba°ÿêb,Y¾œˆÇ%Ækb(ò''8(yk,À´0�“ŸVöÈú(!ÍnÊI5Ôíégxp�úX5CC$–m°ç÷3mªÂšÚ–’ªrw‡PÄâ5"=a‘¢…BÔ¤j©¯/ ¸zZÚWð‡¯ºŸ»¿»�®� k’>ݤ îèèXæ¤ø¬aŠ„h¨©B‹&¸ú¥çóÕÿ}�ç¶ïfÿÏ;¸úšw³jý:Öo\ÏÎ_=Âošª˜¨YÉE›.¡hŠ?¹ó³¼å�ûxü—¿fßþyvëSüÓßýÆ>É]ïyX&áênzó»¹fõÌùª-SѼl‘…ÒþŽ-”ò†ßd™³£†³Ð”€*Æ<“Ò F³úÖÔë…¼K¸åìI[°LE¾0'_ÍyG¹v³{ÞͲË2-Ť³¼‚0µ,»,ݰßy]ÇÛÇÝ„Áe ÛBTÖ8¹~NŠƒ¹L³t¾Ò”þôâÍZdœQ‰D˜˜˜œ?«+Ú’pQVž\.W±Óz6’HÖÓ^_Ggß =½$—·€ÒˆÆã0‘'Z]Kc"ZèÓc¡ç²ä “h, Fiê�"R•³Ÿ‘‘Q–4ÖÜI #—fx(� 5LM‰§h¬Šq"=BšŒªbeC²0§±F<±›ibÕ45% «nXùÙ¼I$a.@AÎnfþص0rúG&ÐJ @¬Nµ°2[{†�wÞLC•=ÍÜäHÏìî@�TúÅk¬¼èJR|�­?þ{û“¼cí¥TÕ4pýÅ+yä¾'øî¿ÇX²r nhe19ÜËñÁ �myÛ».DÏeèìxœÿå]Üñ Ãé[YQÛ@Ü‚Dà n¼ù ¢! ,“ôàÝCcÔ5µZ@&‡a¨é)ƒæiõ£cƒ°«nZ›ëàñ�™é‘0|à8ß‚»ž„cö]�„˜޾¨kìAK£Æ´À³Šó—ºêZŒ× ûÅyN‹(Ç*Bº “ÌÁè|mÇô”§š5öµŒ™p ÂípAžv¼B“U°¾ŽBO~º¿§i2‡i˜ÔÉAÇýX¬ó€z©²Ór™J)Âá0“““��yÉÅOÞæýW‡ÿ³g³Ù©ó-dT(JÛò¥Ä•ʼncÇÏ€¢¶±™ˆ¦Ó¹ïƒ#èùã#ìÙÕÁŽ�{™˜c;K¼®‰š( ?ÆÑî2Ù,éñaz‘1Ú›ˆþŠ”¥qI#ÙÑAºŽœ VWK²:f§)�ú†:ÂJ§çÈAú†ÇÈårLŒq`×óìèØÍÀh¶DMAXÈŒ¥Óìܳ›Ý»w±k϶=ù(ÿúùOòµŸî…¶ XÓè? 5Ѳ‘›n\KïÎïó™/}›ººé>¼�ýòøÑ/÷±âÂßâ²Õöt~Õ­¸yµÎ¿z«1É%Wn ¤E¹ðÆ- öçÁŽh_q-+›(,v?ð÷¼ò¶×óÑ¿ú7Žö�’Ëf9Üu˜±‰È‘®~6¬o%ÕÐÆÊö :{xaï0‘pCÏc¢Ñº|9ÉhKW%ÛÙKý]«pk׬â`ç1Žz‘žca0ut⾩…­3§ ¨J6R;ÂpVÑ�l$.þÆQD“ͬZž¦óHöí!aê:¦ u­+i”ð‚°h9vˆ{?öGT‡5GÑrcŒ¦ Z7^Î[?ðQ–%B`)ÇmÆb<¡XŠw¼ÿ¼0ðþ�/ðëŸ|‹ˆÊÓ×7AÕ·ñÁ¿…ÚH!³VÃe[®áßžù-mW°~©ÝdžZq/OÅy¤/Ï¥[® &  ±éæw±åkO³õ‘¯ñ®çÿ›˜f14ÿ >sç‡ù×T ¹ô&—Üö^^qÝš3Š£à‹“ýXÌhŒW³ï…¿û0|ê1øãËᳯ�ƒ�SМ‚¥ 8Ð ŸÛa÷Ýøú°âVøã-ðš!{¦åõ0Ú ÿüŒêÓî§UcÎV4"³(T‹hÆô|§† øæÓ°ú&øø«ì:š,«•†»»ì|û»á«ÏÂ] ÿ¯Õî«Z[c_ÇC[á×v]ÂÞA¸ñøJ|;|ÿPå÷ÎÂÈevœ²,{áÓîB°Ø8£4 QSSCOO555e§Iz`¯ÅÇî7i¯…þnˆæšÒåçr9†‡‡iooŸÇZŸzT(Ʋeˈ%R3™Òh^º¢5¨¨†eÚ“Ó·­ÞH,ÕÇÈhK)4M£®¡™T"ަÀ EhY¶†T>†s€êÚfV¬H�Lßw®bù²åT%“SB$›–²)QÇñ}öH< ª)Zš»žº¡pœåk×Q›ÎÓÐ\;c…#¥…hY²ŠD2ÉÀÐ8öâL!jRu44$T– ÁPáj®¿å Ô/¿l:2QGCh’Pr ×]í ,¢¼â]Ÿ ½³šzÇÛI)�å›®æ‹_ü<ð»‡Q@ªa#¯~ãÍ,-_ÈÍÅ7½��L,¡þ²WÐXh¢Q‘fÞû©?eÓž¼úªÕSÍÕÍ›¸ç?¿Åã=Âîã}võš–qÝ�7sáê;S¸Š-·ÿ!«7œÇOßÁx”V͆ÍW³å¦ÍÔDΠÅþІ£iÚo’ùÙpÿv8د;67@Ò‚înøÞaxðŒ8š³öÂGï‡Û6Ø#âCÀÿì‡í†Cޱl½²æÌÑàÿñ4 uO÷ë|òEŒÍ d¿Ø/0¿ÿ8|àGð¦M°¹ ž<�ì‡ÎB¯@Ý€ûž†#pã2X‡îAøF'üâhaÝw@Ÿ€|öo€†0›Ý`$ë¤�š�[è´ØPÀ…­VøÄÖ¯_¿ù©§žúüé¨@6›¥»»›5kÖ”\ à+[Mîú©I"?ûƒKkýÿMLÓ¤³³“t:MKKËœæÍd2„B¡’.íŸæ©ðK©È©èrà¾Æ¹œcFYsøÅ]ŠRõëïï/,Í·p^‚0_˜¦Iww7ç�wÞ‚k!²,Ó^µ {`Ó|-ã;½d±-x5KÓ4ŒÂÊ; -¤�Ö^ë´µµÍé}60fpëWêˆÔÔÔtÏŒ>DC�ŠØÅfuÛÍôCªÃvÞIÝ1‚ý£)H„lçtÂð×xQ ª4{pTƧW›„”Ý'tÞ&(|/FÚâž›F¹éüÓó×vï½÷~õž{ľ÷Çò‰w¦•ÚZ€uÆß¾Ñh”êêj>L"‘(ù0|Ã…Šˆ¦Ñ–¤¬û900@?K—.]ð�qŠDÜÌSÌßzŸ\AÎ Ji„ÃóÿLWJvZ(tf'ОLSM7Sϰ= £_æÁO™4`2W>ØMÙ#³A>{ `8€Ú�4l%V®¬Ù÷J®uj˜ÊÑQbñpÆ(@]]'Nœ ³³“U«VùŠÐæ„âÝW”þ,Ëbbb‚®®.jkk‰Åbs;š¦ÙK`.’å<ÏuŠß¥ œ«ÅV&“Ypè¹J.—›—÷�¦ JÓÉ{²(8§FÃË;îÌQx/M�‚·gŠ ›&ÑÐ)°©Ï0~ô´½�•RD"éîîæÐ¡C¬^½zÖÅááao±XŒD"A(’­pN£”¢®®ŽP(Dww7Ä0 y®�%¨Â”zÅîdµµµóÒL)E]M„lÉrÉ’# ‚ ‚ ‚2 ^AA8-Ìu¤²ùe’ ‚ ‚àÆOΪÉÝ� BAAÏq@^úÐ-.çmP¡‚ ‚ ç6åšâg=(Iú€ ‚ ‚ N*ц³êª¹"¦>–e‰0AA8G°,Ër4Á;·¥šßgu*gЩHÃ0òº®�ϱpAAa�`šf6—Ë¥ñï÷”²‚Õ«¨•ÍfÓ}œHAAXÀLLLŒŸ8qb0}²ø Ò ÙOšˆÞ]€9222öüóÏï3 #¼Ú‚ ‚ ÂBIJ,ëØ±c]Çÿ&ø‡yì9Îs&slllì¾ûî{üĉÝ•^€ ‚ ‚°°Èår™ï}ï{?þùç�3í€ú ÌÙ6ÍOZåú˜{öì�Åb“›7oÞ�Ç«gS¸ ‚ ‚pv“N§'|ðÁ‡>ñ‰Oüز¬¦P·è,årúmñ ‡€¶Â¾[„æwîÜybxx¸§µµ5šH$’š¦)¥”¦”RsºRAAáŒ`Ùä'''Ó===‡¾ùÍoþ×½÷Þû`:�ît‚ ÏJ&©Ÿ�..l5ǧÕ+W®\rË-·lظqcKMMMƒR*lY–*~ç>ÎxW˜2ñ8Ó7Ê)xOJ÷ ;ó–ÃçXAA¯Õ�ü8Yh¹Žõ˜æhF¼+¿åŽ/l§öÝñî8Ÿx#›ÍŽîß¿ÿÄ“O>ÙµmÛ¶À�+”m:>Vû–+WüT>\ÄÉÂÓ)HCØB4Z؆=ò»�u—㎠ú¡Ì~©-Ãåâg›OA„³›Y Ëq¥š¤½D/w±ÜÇSÜØ…�Ž-:ó…4Ã#¿—È,%@½éIá°ëbÝâªx€^Øú‰T/Áé%@K Q˜UÜV*Býâ¼ÂAÓf“OA„³Ÿ¹P¿ôRûåúNV*BÝ®c¹¸rîe%×íÙ´”03…§ûâÝñ¥nVQ úm-¦…¥‰·ãiº¶î:¸÷Ý[wZgØKD–JóÊ'‚ Ââ§œóËÄ -¥«Üúʽ-ç„–¬îüκú¹³^i^ÇyÝ�“â€:�—ðó;Î)ú¼D!Ì�§‚JÊ÷ª_©2AAXØÌÅ-WJxº·^b¯Ô1~yË}¼(•D€û‰o¯ë›"ì {9 ^"Ô+Ý] ¯›ä^y©ètº'Ä/…—àõËãålú¹�nÇ´TÙ‚ ‚ ,^‚:Ÿ~qóé€:ÝK(ïvz•D”–*+H½½ð½Waf\ª9ÛÏýôª€[üy BçyLæ×Y,åfžj×UA„…M�àgºù¥U*@ýÂx¤™åDªW}ƒÍR÷Á�oª/´œÓénZ÷ÚrtIDATû}úUÆÝ×Ó¯_¦WÿO¯º–·^e¹)冖Ê'‚ ÂÂ%¨UNXù…Ëé%?±ç ϧóéU~)׳T]ƒWwYS¸ÐâÖ¯Ÿ§³P/ñç•æ£x¤ûVníÇéÌ?ŸçAaáPéû¿œè—r.ÝéA¡»¿¼åœÌr2¨Z®~žéÎQð^Ž£Ÿ#êW·êï$ˆê,³Üèw?Ÿ°_œ3ͯ.‚ ‚ ,n*q<½âæ[„ýx�r÷+Ï_®^åt`Á<µuŽ‚/%4ýÜN·ˆ ꀖÃ):O•:¥‚ ‚ œ;”Ó¥§;n¾]ÐR4h¾JÊzMî<%ñ„äuîB‹ Û9i¼—êv:ýĨŴ[êçx·ûD|J_OAA8w "¢Ê‰ÐR.h9ÇÑ™64h~yÊëw îë÷=&ì‘Ê7¿{ ??1Z ã‘WžJGÃ;Ū ‚ Â|0êŽ *@‹[/áçŸåÄh¥çñ»N÷5¹oÀL´œ»X‰èt‹L÷ÊGîù?�i~a§Øtöu‹P÷¾ûfx Ö £àAA8÷('6½âýÑÙŠOw¸(2¡Ìºëa¿òÜõ¡L>¯ü�DkÐ&x¯-”�~ÍíÅãÊ9ž§Ëá'UA?‚ Ðrhq¿œuÆ9u–3¾Ô´L^Ç»ãMŸ4÷±^NhÔ/àßïWwAn‘é'NÝx O§óé {9Ÿå\O¯ýRqAÒAA8÷(çt–НDWUâ|–ûø9 A׌/U¿rŽi©2¦ðj‚wî—šëÓ}Œ;­Üèw‹“›àÏ4ÎëAáÜÄO\–ËÔ-nƒŠ=¯¸ â³”`¬TŒ–Ûrßï‰è‹û~ÍëAÐbº*ñ)¦[iølÝq¥öƒ„½*‚ ç.ó-@�árΧ3®œûXI³¼;½\¿ÐRç ‖º†ó€ºÝO?§³œZt6ƒRŸ•æzœ;Ÿ»þ~Çx!ÂTA�»2ù+uCK‰Qgž n%ø‹O¿x¿2ýÎïU÷R‚›i–×JHî›PI3»sÞO/Z§nÇÓ™^ÎõÚúŹӂÆû!TA• P¿c‚ й Ñ b4¨ã9_«%y]G©küû€:3if÷›Îe8�¢Óoä{¥N¨ß1Îë)Wv7Ô/¿ ‚ ç¹{>á ⬜Ès;ž^éAOD„z]SÙëòëê—²XK9žî•�ܸ�ÐJP¿¸ a7ân ‚ ‚àE%ÔW©ð,ng#F½„d�¹BÝeû�«Tz©ë> /ª\a÷~¹fw‹ÊF¿;ãÝ"ÔçÞº�ó«¿ß”P~}Cý‘*‚ ‹‡Ù´lúS©:Ÿ"ÔïÔÙ 2 ‰qAê=#¯{Pðv3Ýq<½úz–ý' Ow®xÊì—Š+_ ¡‚ ‚°8¨T€Vâ„ ~i^ÎbP7²”ð º*R%î§×5¹¯}† {dör ½ ,7Ïg©fw§8u‹ÐRn§×`)/GfžÛí†zÅ»©t„¼ ‚ ‹ƒ ïúJ�P/Áé•î'òJ¥Uòñ:>èõ¥Ñ y§®Á-@ýšªýnr�Ñî^N¨Ûu‹ÐRMðp² uÆá.?Û|‚ ‚ ,.N…uîW"@ýöýâ*œä®K�øRÓ�ç5—ïu°~“Í» ¹E¨[lâÈãv=Ý[/Ñ9ßt¾�Aáìc.-›AL»J�Ïâ¾—¸tæóš³ù”+Ë]ÏJÝÒ“„´WP/ŠT2Á¼ûx¯é’ܳÜÀ#ð¢åœ\¯ÁI~Hó» ‚ œ»Tú¾/%:Ýá î§{[N”Îå¤ ¯ºqA=Ó½ú€zá7ÒÝ)J�q^ލ;žé^bŸ4÷¾WØ/Îq:AáÜ¥ÄuÆÍÅuæ)åZúÅ—r@+=Ö}m¥òœ*@�¸›Ö�MðA'™÷ ;ã˹ AÝÏ Î§—;+‚ ‚ÁtA9!Ô-îû¹ Îý ¢Ñ™î%\Ýç��ˆõ»~Ïëž� ŠÛñ,¦‚m©}¯°_Ülò‚ ‚pî1›ff/—°Ô~%[?‘èW"Jg〖rB½â§Ž™Oj1³9>ˆãéܲ¥Ì>agœq=AA¨”JÅh!ZN�–¡s¢~ç‚ßyqÅ{;ߨ³9ÞY�R(lƒî ¾Ò<‚ ‚ œ›ÑJ¾bk–û•8 îøÙº¢Åü¦ÏÖ/?é~×6债 *HÝ‚Òíhz-·é>Ö½-•�¼^N(”v?ýΪ‚ ‚°x˜‹ WêX¯´ ‚Ó+ÎÏ õÚ÷ëãDxÎåÜ~ǹó'7Á[L ÇRx F§ …“çÿÄ•î7ís9Ëõý,'EL ‚ ‚P)A4Òl³�^iåD§_|%éxä+WßÇ] i6¸i©<¥Ñ ûÅ0®t'•öù�*‚ ç&•h!¿¼³qA�û~âlÉ "Ó}® é~õ.yý~}@ý„¨—¨tÇù…qÅWÒß³”»Yé¨w–‚ ‚ Ì•R"µœøt‡ƒºŸîm)Ô+Ï\R¯òKÕ£dZØéd®nh´Ôqåâœiàí† Í�.‚ ‚à$ˆšO'4¨ �Í~PAY*Þ/Œ+¿/~hñXÊù´<â¡´êw&�O¥‚ ‚pnR‰W.o9a6'´\Z¥¢´Üñ³)ßs[ ~shÎÅ� Å:¹�ÏRuõ‹s§9)'°AAœÌÖ =Nè|º¢x¤— —ª£_}§¶ÿŒé¨B’ž-uIEND®B`‚MEGAcmd-2.5.2_Linux/contrib/docs/pics/webdavConnectToServerWin.png000066400000000000000000000451371516543156300251050ustar00rootroot00000000000000‰PNG  IHDRlÌhaôVsBIT|dˆ pHYsÃÃÇo¨d IDATxœìÝ{tç™ïû_ËAìIÆØ1Ó=€cù&yb‰lnN$ëÌbˆ­Ì"3Æ&ãîÉÚÃFrÆgÂŒÙÀà½Øûà…Äá$9’O8ÏŠâ(ìYí€�@‚dá r¹$áØ`ÇH`;F—:ôEÕ­ê›ÔRW‹ïg--Iuyßç}«ºûé÷­êv|üñdžaº|ù²._¾¬+W®È0 ]¹r%ü·Õ�¤ðo¤Æáp„;åää„çääèšk® ÿ�JÖ.]ºþJÖH؆Μ3™µÐosÒJÖrss•››+Ã0”{åÊ•ðèÚuÝiÀÕÈúmíw˯•¤@âJØ.]º$I:ýäìጠLyê¸.^¼Ø?òšâ¼|ùr¦c@PèÞ‚+W®FØB?°‡Ð%k999�66{1zGŽùNP؃y4'ú£:�y6¦DìÅœ£1Â`CæËÖHØlˆ6€4r8:|øpÌõ‡U²Ì9 Àµ¶¶ªxîW,“¶Ã‡«xîWÔÚÚšR™S¢¡…$lƒSXX¨–ƒ¿�´…’µ–ƒ¿UaaaJešÕrÓ0ÀÕÈœ´µü­$ :Y“¢¶½{÷êÒ¥Kêëë“ôÕôFp1'm’�¬EËýÂM¦‹} ÛC.i–“x$Ã|ÍšÕ5m©¸|ùrøo6€4ˆ¾Á Ö�É:{öløo6€!Šu7èP’¶?üáá¿I؆¨¨¨(æ ¡¤­¨¨(¥2{{{õÞ{ïIë0T‰>϶°°0åϼ½îúÏêý÷ß×Í7ßÌ€�Í£óçÏëüùóý Ûå+—ã퀔sÍ57~œººº Û•+—õmü_™Ž &×]�Î�;HØê~P«Î™Ž f‡rÇä*Ç×þ–~÷ò+™®»þ:å¼ô«Ý™Ž1ŒÉ«œö·Þ’$å\à £v”s®§G’4aâÄ ‡+9‡C’táÂ… ‡+9“&O–$õ~BÂ`G9sæÌÖÃйóç3 ,ä,þúýºØwI¡©QØÇÙÎ*gÚôéZôõEšpýõ™ŽQzÎv¾éàÑo¯Ð-Ι™Ž&ü±>úø£þ/ÿ§þ^&ã@”Þÿ£&Mš$>-À†.öõéÜùsºeæLåf:˜Tœÿ¨W/ïÒÞãï©÷£±Z<çó*¹óMÊ¿6Ó¡¤Õ{gÞÓøñãuã�S²c„Í0¤Ã'ßÓâÿw³jßý‰NÞ§ãc¯ÑÿÝ2NUó[ýªù¨®\¹’é0Ò¦»»[N—K’†>ÂvñâE�9sF7ß|ó�‹¥ùè»ZvôoôØÃ‹õW×ÿµ~ulœZò&ëâ„kTpü¸öüÇ~½ôË˺óÎÛõ×ý׺æšk†-€‘0nÜ8M›6UÒ¶‹/êõ×_ןþô'†¡©S§¦%@³îsÒ_ü;]÷àÛúæ$§\ºM=3¤öóÒ{Ûÿ«þxá”>êË‘Æ\«]okïž½zæÿ{F99Y1x`éÆ/Þþ{ÐY�9Y»öÚk5eÊ”´­éÐõt}¨¾=EÚýÖŸôfW·ö"½sEú³{¿¥üëÕºÇkÉ�ŸÑ”œÓzùÕ6ýêW¿Š[æÙ³guã�7êÑGµ\¿yófM˜0AGŽrü±ê:{ö¬æÌ™“–:+™Bñ;ŽðÏæÍ›cnäÈM�:5£í`4˜1czøïÜÖßÒ¥K—téâ%iì­I�¬Ýyç�3f̰û£]¯jâÑ¿—.ܬ;õ9í™õ½£tñO—µà³ãtéÚ úÂÍÝ븠/äžÕÙsër—³M˜0Ao½õ–Ž9¢Ûo¿=¼üìÙ³zúé§ÓÚ† &èСCzá…ôÀ$½ßÙ³gõ•¯|E?ûÙÏ"bi&LЋ/¾¨Ûo¿]gÏžUAA�ÚÚÚôãÿxÀ¶·ß~»N�:•�(]ÆŽþ;÷~C}}}êý´W?jJ¼óH&k’Ô÷é%�»4AcNMÑú>Ö™ßиÏ|^ã�ë¤qïë£÷/ëãsgtîl·zû®èìG—4eÊ I•=cÆ ½ôÒKÉÐË/¿¬ÂÂBùýþ´¶ã{ßûžžyæ-X°@ãÇ�OkÙ#iòäÉzñÅõÍo~SgÏžÕäÉ“3£^JS¢ædM’þô§?éàÁƒúõ¯óg¨þ~Þ}ÒuQ.ýNï­ÑĹ?Ðfÿ?úœüêªG}T/¼ðBDý¡©Ç#Gލ²²r@Y‡cÀ>ó7£o¼QÝÝÝáúM›¹\.M™2E/¿üò€2}>ŸæÌ™£W^yE ,×-I/¼ð‚,X  . hoè€�R¾†m¤¿$¾ì«3eôŒÓ'×î×G§÷©ów{tüäê蘕úíÍÔñÇÔq´U�~ŸŒq¦ïx¾�tÙ“&MRAA�^~ùeI’Ïç“$9�Έí~üãË0 }ðÁzùå—ÃIÒùóçµmÛ6�9sFo¼ñ†jjjâ^»õôÓOë™gž°ÍÙ³gõÍo~S¿ùÍod†žyæýçþ§ÚÚÚ4{öl½ñÆúñ�¬|PÏ?ÿ¼¤ÀHà¤I“ôÒK/I’^zé%M�:UgÏžÕ׿þu=÷Üs2 Co¼ñ†¾ó�ïDÄ|÷ÝwëÝwßÕ¤I“$Õ‡zHÏ<óŒå4g"VeŽ?^ßýîwÃñJÒóÏ?¯ï~÷»úä“O´wÇŽ)× ÀÕ"¥„m̘1ºãŽ;tÝu×I’>ó™Ï¨¤¤D_ýêWcþ ÕäÉŸÑO¶ÍÖåÃÅúÓ;Eºè�>¹Ü§O¾pNgË~¥_^w»ºßÿP�o÷Èñézö…_ê➤˯ªªÒ3Ï<£ .¨ººZ�=öØ€)Ë^xA‡CŸûÜçôî»ï†—O˜0A555?~¼n¿ýv-\¸Po¿ývœ¶LÖÓO?­êêêˆåï¼óŽÞ}÷]ÝqÇr8*//W[[Û€ýo¾ùfõôôèÂ… Ú½{·¾ó�ïèÀ�êîîÖ�´hÑ"½óÎ;š0a‚î½÷^Iׄ ´hÑ¢ˆr¿ýío«¼¼<¥ë뮿þúðG¹X•)I÷Þ{¯ÚÚÚtöìY�={V}}}Z°`AÒí9¿Þûkíÿõ~ýöÀo“ÚÁœ´}òÉ'zýõ×Õ×—|‚4å¥ÓÕP³H_88OèÔGÓ®WÏÄ©º»åKºí®éÊŸx³¾�w­roý’ȽmcÒe»‚H÷‹_üB===Z°`AÄú#GŽèÿñõÁè“O>Ñüùó-˹pႺººÖ·`Áuuu©©)ò‚Áo¼Q|ð� Ã�a–#]¡X_yåýñ�TYY™®½öÚðèYh}*Ο?¯ &¤”0ù|>µ··ë¦›nŠ»ÝäÉ“µlÙ2íØ±C;vìPaaa8N¦½\ÍZš[tð·õÛ¿UÎ< ²Ò2}íþ¯%]ÀH'm999úúצêåçÑÿ¸Ã­Ù7ë«'Kôùœ\úTöå%wÿ7Õýç·èócrô…[¿¨¿þþ?'UöøñãõØc�éoÿöouß}÷ ]{ûí·5eÊ}æ3Ÿ‘ÏçÓ«¯¾^wþüùð”¤ÏçÓéÓ§Ã#[ñê«©©Ñ?üÃ?„Gënºé&�?>á´àøñãuß}÷é_þå_TXX¨I“&©°°PÿþïÿŽ=TVhš÷È‘#zùå—cÆ5a„ðuuñ®Á M¹>ýôÓIÝp°hÑ"½øâ‹úÍo~£åË—§Ô^®f ç/ÔâE‹õµû¿6øÏa‹NÚÞÿýtÆ8€Ã!͘6Qÿ¼l™ŽýŸMú³±Ò5“óÔ}ᜦ~åuLû¢®3FS'~N9¥É³§jß�_'Uö‚ ´lÙ²pB½N Lÿ>öØcš={vxÝ„ ôꫯÊápèŽ;îH:‰¹ýöÛµvíÚðÿ¡;/ׯ_qsÃäÉ“uï½÷†o:� ÐÛo¿ž‚\´h‘¼^oøÿPYË–-“ÃáÐù/ÿE?ûÙÏÆõƒü@���á›ÌΟ?ž¾¼å–[ôâ‹/&=}êr¹téÒ%Mœ81C¬ökŽ®·»Œ¾¾>õööjqC®N?9;ñ^&/^Ô{ï½§/~ñ‹Ã¢µŠ­ÿ¤ëo»YyÝ}ºÿ‹%j|û€>wíM¼îzu_øHçuQï¿æWÃ?U'.lìòi`ô™òÔq5,êQÞ¸<å�Íú—¿�3fÄ“5Iª_ù¿4³'O�ýPoþѯÜüñº0Ö¡?ö}¢s½Ÿè“ÞOG<&€á0ä/ϤÕKÓ•+Wt¬ý¸^ï8¦3—>Ô»§ßSnß§*ùütýý?=žé†,«6)pC—æÜª/ÍIîkµÒeòäÉ:vìØˆÖ ®NCžÀð"a°96›#a°¹œŽðŸç2bÉéùÐþy>£�ÀZÎ1·$éJg{†C€•œ~Bç$�<Ö‘pcŒ¼œ ݧuN=:wîúLÇ ¹³'vê諟×{Ž?Ït,°�ãüÒdù6ë£I3 ,äLš”/Iš1û– ‡+99·< ÿ¶ò¿iñTG¦c€¾éÀæHØlŽ„ ÀæHØlŽ„ ÀæHØlŽ„ Àær_xá]¼tQ/^”ô@¦ã€¤=ûöh̘1“;F¹_]ðUõõõ©÷Ó^=Ý”éÐ IÅ%ÅÊËËÓØ±c™°;6›#a°¹Üß½rH—.^RßÅ>I_Ít<�ôÆkohÌØ±“›«Üù_ ÞtÐÛ+5d:4HRñ½ÅÊ—§¼±yL‰Ø €Í‘°Ø €Í‘°Ø €Í‘°Ø €Í]5 ›w]�JvœËtYÁ»®NŽu©ítê5•ÕÉQT'Ï�ôÕãßñs9¾õšü©Ec[ÙÜæèØ½ëê"âÔyHJÖ$lÑ/aÁDa`’pN5ßâddtȳô� 6»e´ºU{_¦ãìÁ¿ãçrßÈ8ŠxÓ`ð²&a+]0Sjï–/j¹Ÿ_-’êöF'f=:Ö.¹ÌH[ #5òa×–˜N�S›ò5gz¦ÁH*]ç–ñÓ»ä¦ò³îq0@‡6uÉh ¼‘16ÏTËÖݪ9•é¸d£¬IØtß-rë„vF�¤ù:zT<+_j<)¯yÅ�“ªÓL-a´@FÌPí:ÓÆûn‘;sÁÈrÙ“°)_sfE�¤uhgc¾*6É­nµ›Þ¹ú;º¥Y“äŠ*%rŠbOd’gº+r}`zÕµµGj?$WQŒéYõ_+Q�Ŷ‘qü<ø®Ûºž‹kƒ¬¦ˆ£¯!ŠžŽ‰.#<‚q`�uD•c5�ãßñs9–R‹zTµ4²ŒDõ[ñ®«‹è·èÕØ}—|›¬®µzŽ]ôÔ¼Ç϶;™6Ç‹=¢ÝÃk2±D”uÞÄ;vÑñÅz¼¥z^…âŒØ/¸ÏàžúcðX�ñ ı[uåEªœ7\°”E ÛD•ߟ/ùÎõ¿¨8©ºYN•OÍלY=ªßza8§Æ]=*¾FÄtMËÖz=¬ÅÁ)ŠÅrë„ÊÌ/ÈûºUÑàOa4•‡ÖOTåOÝò­Ì—fÝ#_kü© õ´’+êbm×.g œV·ŒÍ“Tµt�¼1ê©\03j±C;%µûÕx*rYh Ø»®N®­“Ôª£µBÕ¾Ý_ÜÚɵ÷–à6 Uݘ{äÚ*U7¸Õ¼|‶:—?$£á+_Õ ýe$]¿‰w]�Êgöï³QÚ°µgÀ6Ö}—|›J‡³?S”L›ãLjuÓÖ¹=�sr¸bM‰Åy“Ô±“ïñ6è¶5îŽ|L6î–£¨Î´¬BÕ³’}>èùXn3à Z ¹+ÓbëÒw‰€«K%l’s¾SŦUïÞ’k¢œÁd®eWGà‰òT‡êÛóU1?*Á(_lJ:f艕‘  sùˆw¿Ö/ŽIˆWϩ״¡1_ÕM ß}…ªž5pº7,z:øÀIÕͺGÕå¦$õÔ9µ…¦€O½¦ �’{³9Y™¨Ê�÷¨¸±5jTc¦šb½ˆØ#Çã'äÞüPj£)ÕL�ÌûL½KÏ®Ì�*7™¾‹Ó&i˜û3I´y@ì�ön0�vãbXcM�Õy3˜ó>ÚPÚ6ë=kzL.)—¤™Z^6ð aRÏ�u©tÅ=ÏQ’äß±[U.’5C“›éR2u†*fRý¾sª\Þ|± < :ç;U¼5pS‚³³[-š¤5QIFñŒÈBçŒIáB/"þ?LÅ„ÍL9̸õtv«E=jYZ§ªèý:ÎI÷ Å ½À”ííPí}3äïèVñý…ªœÑ­ªÚù—ß%íó«¥¼(ðBÖÙ­ÍÔšèë÷¦NT�zt¬SR¨o,¦�%I¾V•4öȽyw}¦RHðšÃ¦xu%Ûw±Ú6Œý™ŠdÚ<@ ±¨ÚˆÓ©À—âû çðpÅš¬XçÍ Îû(Ci›kbĈ¸kFþ€óÄ9cÒ€Ý=D?ÖG¬Ÿ\u²+a3¿XÍ—ÚÌOÞS'ª@‡´óÀBiï ©|ñÀ齸:ä)Ú­ºY÷È×8°GŽÇÓÝIš©&«éÇ8JÌ”jÏɯsjÜ%Ulœ(i’ŠÛ»åÓ9µïê‘Û“þwðmɾ˜Ž˜ÔûÎJ¦ú3œË‹äÞÚªÆSw©rjð:Î;£XçMzŽÝÈHßó�sùC2Ò€«NVM‰Jý£U�ûüj)¿Åôä5©Û»'âÚ£¤…F;Lצù;ºÓxÈôI*¶¸Û5¡ûn‘»Ý¯Æª—SåSq<¡�zt¬Ýô±±êHåã7\Ejn¸GÚZŸúgG ¦þé“Tu㈸ 8a¹ƒ1LýÙÖÙWñGK¦Í–fhIhúöÀÉÈ Ù‡+ÖdÅ:oÒqìÒq^'+É烖è>ã#n “¬KØ×u«~WÏ€éˆÀ5&'÷qÑ/§^ÓÃQ›§6mê]ZS.Õ=uÇÙºþ •­ë ÞXQë—Â7SFÛj[ƒ7_$¨cõ!µ¤r—ÚÔ»—´ ¦þ©3T1«GU«MlØ£²Æ$Ê]7˜ÏêJw¯£Üz¸›èøÓæJÌTË®ÃòÔžˆ|s2\±¦Âê¼ıð8H×y�Œ$ž$I�»MwÛÆˆåÀž8wÄ@r²lJT Œ.ìV]c¾ª7FM¹/&¯Kx “…©wéÙ•~¹¯S�¸;móL¹ÌS ÷ªzV½ÊŠNÖòCCK×¹Õ¤º@9AÅ++T·žàtðVE´Û9ß)m=¤â•‘wÄ–®sË7ãçrÕEÔaXÜé×Ô»Ô¼¹[ŽÇë娕|›S¯¢*Z!}«^®¢C�Eå‹å[Ù-×®Èrãö]ÒÒߟÎå‹U½«¾?¶Pü1o`L®Í–î+Tum½ªt�|QoN†'ÖYœ7);‹ÇAÚÎë$âOø| ©xåbÍ©­ëŸ*-çæÃÃÑõv—Ñ××§ÞÞ^-nÈÕé'gg:& �SÍ·êU…åÇ­`¸Ñÿ†×”§Ž«aQ�òÆå)ol^6ް|tÍL­ù)É\ ²ï6સVJ+ ³äŽKÀP1Âd‘ðç‚•/Nÿu[Û"a²ˆsùC2–g: „¾>+õ›]`p˜°96›#a°96›#a°96›#a°96›#a°96›#a°96›#a°96›#a°96›#a°96›#a°96›#a°¹ìJؼ9Žà�GÞt—ï¯Q‰£D5þ¨úJjä�»c,^yÌå Yœò¢cŽ:†Û�ûÛ²Ð̵g¤¥íH§dû? Ç)éó'^]#ø˜€dOÂæ¯QI™Ôd2 C†oŽÚÓ�±9+Õl4«Ò)I^yÊêän2d4WÊ™T|rŽˆ}¸E·3íL'ÛhÕÖ=†j£´œ?iˆ#�…Qu�d‚lW[{1Rr3@Ò|ÇÔRgÅ>ÔÇJ*ç�u? |Œ¥ç<¶nW¼þµê3#Ác;™öÆ)ß\v“Û(..·ÑW]œÄsE’çuýeݳlz\²½$lW½è„-{®a“$9UÙlÈðU«­Ì!Oø¶bU?¼nÅY©5îóIò·«M-ªroT(«SË1ŸäoT}‹[kR™S-]"wÝÎà�^íl«Ö¥ÉìhŠ­t‰ÜjS»?Nlfþvµ÷×ã¬\#wTÙåmˆk2uFןÊöIí#fË2ÜZêcóqM¥œà¶ƒ?1Ε$â«8s�ñÖ¥ó|R|&á}ÊT±"Nâž³ñ á8¥Ü~Óv±âMÇy¯]Rœþ�!îc;‰öÆãš£â¶vù%yw¶©bM…Tß(¿üj¬W{S='R‘ôqËÒÇe*í-­Íðõ˜°›,KØ‚œ•z¶ºXu;­î:ð«½Íü¿»ÿFÃ�Q›T–e¡TOT·iC�_þš j«(OÃ)]±E‹kªu6Æáj[ºÙ-NÅq£�OÕÅ™ %sý2Œõª‡ãy(ÈY® Õ«ÑïÕζ •—–«BÇäó7ª^*w6æÑÀF�K\µ²'aóÖ˜î¬ñ«±¾EÅá+Œ[Tß\|׳¤T’s– T§ Ñ·ä8ËUQl±<gy…T¿I›Ìï6+VlÑÛ´TiS0/õ×lHî]xD¬ýï“©3ÕÓ¹ŸEáœÜ_£ u¦w¢é�Ô1ˆq® G|é<_ÓŸùF£ê[’¬w�çlÜ2S=Ÿ’m¼xÓqÇ3˜þUŒç¡¸íuiN±i”É»3Æ1qª¼Bª8”:U^Ѧ�›ŽI¡Äp�1'-éã–¥�Ëe[Æëõ¤ù#Ž�í²'a+�¥c¡!i‡KUMjE«àØÃ�u®*4Õ*ðø,U­¯Zªrõ~›Ç«ÀÔj“ LË=É|Dˆ³Rk êTW°&ƪ¥Zâ�',0VlQÛ4¹UWXÿ°*’Ÿ^r–«Buª+X¢þçªdêL&Æèvü?µzb×Ýl»ÃU¯ _­?ï¦ûÄ:Wß`â‰C춦!¾Ò'T­*¹9>¦‚$G€’;gÓ}œ¬÷IÜþxñ®Þ¤Û³”aù<¯½NU®éo£c§b>�8Ë+¤–þDÐY^¡¶º¶þÄp�çD¼óÔê¹#ñqËÞÇåàÚ HŽ®·»Œ¾¾>õööjqC®N?9;Ó1¥È+�cƒæøFæó§¼‡v.1Ĉ8€Láyý¦{½&}özåö³™ŽÅÆüª) W?Ë];2�ç!àj6 ¦DF—è)Ñì¹éà*EÂ`s$l6GÂ`s$l6GÂ`s$l6GÂ`s$l6GÂ`s$l6GÂ`s$l6GÂ`s$l6GÂ`s$l6GÂ`s$l6GÂ`s$l6GÂ`s¹™éÑÐÐ�逴Xºti¦CÛ!aEŠŠŠ20$­­­™l‰)Q›#a°96›#a°96›ã.ÑQªsÛRÍ[xàŠeÛÕµqþÈ-‹Fؼò8r˜~Jjü±7÷רÄQ¢x›ŒfÓW4¨«««ÿÐÑg IDATgû2IË´�d €¬“E ›$«ÚgÈ0 F“ ª\rx¼Ö›:+Õl4«Ò9²ÚÓ>­~ä9-Û¾Q¤kIGŽÔ:@¤,KØÌJUë«VqÝNÅHÙÔ¹m«ž[¶]áÁµ}«5mé6uf2(Œzü±~ò“Ÿh×®]ÖíÚµK?ùÉOôñÇg 2È>Yœ°Ir–«¢¸N;½R`Ê´DO‰�¼Áÿkü~Õ”81çõÈQR#¿œ: M³zÉŸy}¶ëܦÇ×Kk=Œ­ad]wÝuZ»v­vïÞ‘´íÚµK»wïÖÚµkuÝu×e0Bȣ즃µÍñÉ0œ’¼Ú)Irªr�[Ž�^Õ––J’¼;ëä^cÈ)¯<®zUø 5;%y=*©ñ«tVæZ�^�Úöøzií~­˜nZ<£ºÈß0BIÛúõëÃËHÖ uÙ=Â&I*ÖWÿßå­•.‘;|.çè”Û{ù’ú._Ô§—/‰ü 0’ŠŠŠ2¨Â7ÞŒ^dh£\Q]¦#®>­îLG`´á¦›#a°9¶«Àf·´rÒU6Sj]œ`ÙÌÀ”Q¹iQùâÀ²V·ÔpO`Ù¬{ú—™Ìû™Ë3ïkW¢mbÄfeÖ=RëCÒ¬A._ùP<›gƈcqðwTy勃m ë¬Úœ.¡cnq<¢Å{ŒŒèãb a»ÊE¿ õÅiåÝҎñ—­|Hj½E:`Þ`’4ãdàz»¢:©ó®@ í‡ú—ÕIßzM:õšÔ݆…Òº¨}´3‰m,c‹Ás×Жw¼l×óÒô…ÄpŸ��Ö�“<¡¤n’´b¢´úÐ(YgÕæ4Ù¼P:°G*ú¹Ôž¾b #²(aóÊãpÈaú)©ñ'±O‰¬7‹·ƒ2IšNÚÚ{ÙÖŸKE»£öë–¶žèÿ·£ÇºxÏ]Ò¶¨yÍ”îëèOâj_“æG�X%³M¬Ø,̺GÒkÒ©!,o µ·[ꌮ ªÏKÓJ�¯ö' £a�U›Ó%Ö¹„ÑhŸVO›¦i¦ŸÕû2�>Yv—h±ª}ͪtf:Ž,”/5<(MU`”jé¡ÀhÚ}’î{PZÞ!˜ùÑîÀ6{¤ù #÷ÕL©õné[¦Ñ‹Y3¥Î“‘ÕZ-KdF¾´7ú…{¦4ÝbtmÖ$éÔ¹þÿÛ»¥©·¤¾MLÑíœ$mœ(-=,5L7m—êrSù÷uH�›ã�î³niu§´ñ!iê9©èÄ([gÑæèóîÀ©v’ôÓàHeè<\ù�4ãUéñPyÁãu*?°ß}JóCçì¤þÇ€‚e>‡¹Ý©×¢ê¨2ÖÕÎÉÍnIÒ}3ËF£ßýîwú‹¿ø‹”×�¬B­Ýß Ó%unÓÒy«µ¯k£æg:, ²h„ C±üniu�T´GšzW` îñºÀôߎçÉYôÿö}^RŒéD)0¶÷Dâeñ”/¶NÌVÞ-íK¡œá²r¡´ÏbÚ.Õåáëón8ªgÕg퇤Î|ë)ÃÑ°ÎªÍæsö¾…ÒF§‘MçðÖW¥ûLÉwù-Ò�W¥¥¦syipTvóƒRçžÈ©hËésÓv«xc^·ïùþ8V˜®Ã›~.°<úÜ >üðCmݺÕòƒn´uëV}øá‡ˆ,Žé34KíêèÌt @zŒŽ„Í_£ÓT©Ç›x»’šö˜ë�E¦M=ž’À2¯GŽ’eã,êŽ=Á¢�²)\§Þ·[ÚÖÓ‰¨kƒ¬FÀbŒŠÅ²ò!iŹþذaš.KŠ©�³î‘æwŒ#Õå’éú¼“�Ä-œ8Äè³òÅ’:¤å ^@Ÿõëb´9úœ 'ìæsøD`d8t à‚‰RmŒQ³é2%…æs9z»žþ2Ú™®i –±üÁ`²½Pš:±W;¼¡.×_½¾ÿýïë—¿üeDÒÖÐР_þò—úþ÷¿¯ë¯¿>ƒZØ·KÏ-[mÓ>­ž¶T«W/Õ´i«µO ŒÀYLŸî[mžJ ì·­3øoç6-]½OR§¶-µ˜z�(3X�&Y–°µ¨Ê�˜yåqU© É�a2|Õj+³º6-r»gU¯ºˆuõªðËh’6„ hQÛœgeµ*™FÚÚŒ‰ÖË­FÀR[ù�¤=ÉšâO«¶wG¾hFO&»M2›)­›(Õî–vÈtñþ(Y7ÔÑÓÚ×#]³î‘¦wÿ ëL7Â$sÍãh�´Ù3Y;¬õó‚ Ó#Òö�ó#Öµ»6««k£ækŸVÏ[¯YÛ»ÔÕÕ¥®ýkÕþH 1›ÿ2=·+”½íR{¡Ô¸·S’Ô¹·QrÍ�öÕjý¬í�}»º¨fŸVÏkTùþ`™Û¥­áLº,KØŠUJª Cµ¥’üíj“[KBÙ”³RkÜ-:æ‹ÚÕß®¶âj=QÚl�Üæuæd°¬N-áŠUQ¼h®´VFs¥®¶KèÂèO’æçG)ÌÕ�ÄÍqÍ”–ÇÙöþé/ßÍÚ#�2�°xîêñOi›8±…Úù¸ù…úyéTOàÚ¶¥).oŸyWè‚ÁöÅ賕w÷�6mÝyWiÖ¯KÃèiû IÓ%Ïô8‰_ðæŽæ;UgXL×w¦mC å¬{LS¢Á2VDÉUÄœ´Ù/Y“×°…’0—¶šGÇT¨òÓvv¨]Ët(Ÿ›¾B+—–¯CÒ — Û;Ô)iß®v•¯,—÷ªS�ÚÛ¨@3\*|î-5'd�j�HŸÓa_ÇH4W‰,»é`8¹Õ4`-ÖÜêè±·CZgºÉ úIêœØÿU;öX\ø?Ä› fM’4#òë|Â77(ÆM!ÝÒÒ=�}×ãðâŸÌ6#©GZŒE¦xfÝ3°ÏÊ’Ù¢P¼Á©¼uÁÏ+Ëöu¾s©ß”2@·´í\ ?�s\>pÃ@ëÂÀÿ;ž·ž®|O`›Ö…�óð€U¡�i鸺FÙ¤þ¤-ô·mM_ òÂõ�$lzŠûéqííœ!_{¹<H[kÕÑ)5ª\›§KÒ 5t­Pç¶¥š6í°–mïÒÆ’´LÛ¹ÉÃÄÑÞyÂèëûTŸö~ªòÿ=N§Ÿœ�é˜bðÊãØ 9îõÊã(“šB#n5*qÓ£V¥ûDnç¯)‘«JÁ»NëÚª}jŽ(<ªN¯GŽ sä³á(›cõq»¡~—èf·Ôñ|ügóCRmÔg]Y-C|WcŸ¥«Íå‹¥'cÜõ™|—hìç$³†††4~ùû>­ž¶U®ˆ»DU¾¿A+¦G­Ó>­žöˆ´=8�Ù¹MKçù´2˜lun[ªÇ%•oVÊéêܶTµ¾YjwyÔ( ¬sÛR=®ÍjXÑ¡ÕÓQûÚýQÛ˜ëŽõwšº@�/_ºtiú DÆLyê¸õ(o\žòÆæeÛ”¨•RÕúªÕVœÎtÕ«Âgu½Y©j›Üª n÷°*ú§Dƒe¨ÊÕÿ9o1ï\@´Ç-^p­–!¾«±ÏÒÒæàñZÞl€«ŒiJ2œ¬Ym7_÷¯Uû#æmûGƦ/(—+<…:}A¹ÚŸkïŸRÝ·:|ÃÁ¼õ³´rÅôp™Z?¯ÿ³àø 8¤Q�°!žLް™²ò!iy~`zÓNç(#l™aƒÄÛh=ÂÆ5l£\:^8î{PZ>ôb€a³œsÀ(7 ¦DF76›#a°9®aE«�g:0 HØF‰Dwc€ìEÂȘÖÖÖL‡d6@Fðya@ò¸éÀæHØlŽ„ ÀæHØlŽ„ ÀæHØlŽ„ ÀæHØlŽ„ ÀæHØlŽ„mÔðÊãpÈaúñx3K‰jüƒÙÏ#oÂe™”J<ƒí"‘°�*Ūö2ŒÀOmi¦ãIU©–¸ë´Ó›hY&Ù-ÀÕ€„ ¶RúDµÚ¢²!«e™d·x£ Û¨æWM‰C%¡99¯GŽ’ù%y=¦éÓðÜip Ï[£Ó´ª¿¦$¼m¸,‹mKbÍýùû·q„¦M±Dp–«¢mCä4¢Õ²`ÛLÿZÕŒÕã)‘ÃQ¢’’¨ébs, ÷÷È›J<’ä³î£xÇ \W̘W¶Q¥EU.ó »S•ÍM*¨Ú$¯¼ò”IMÍ•rJ*­ M�6É]gN>ZTµAzÖ0d4¹UWæÐÃz6°m“[-U›L ƒi[_µTõ°ÅõZ^y\õªMÕ6Iâ^ÔåTåšÕ7úã/ónRUASÔôo¼ºZÔ6çYF³š×¸Ug!ó{M¥œIí_«Ò¤ãØŸæþ‹w úëJµÿ£ Û¨b¾†­V�œ¡TµMR™£Lj -S`TÉá�ÃQ¦ºè2ž $u*]"·ŠUQî ¬*]"·ÚÔî·ØÖY©5îóE…äoW›9‘,«SË1ŸTZ+#˜<PºDõ�‘£oÑË\sT\W9ª«®`¬í¨Û=ÛÙV­'JSØ?Ùx,ûÓÔqŽA¸®¸1®$lW#�Jʤ&Ã�aøT]œ–BÕÞk�;XWð'áÝ¥ZRP¥MÑ7˜—9+ÕlzVGMA&SW©ž¨nÓ†¿ü5ÔVQnJ“�5ÙxbHé¤Ú€Ñ†„mÔ N…MRYðú'ß1µÏ‘K’ü�ªolÙ-ýÓ‚þFÕ·¸µ$:—pÎR�êNãź†-(Ù›œ•ÍòU«­Ý». Îò ©~“6ÕhM¥3~¬)ÄO<ɃcŒN$l£Šù6‡Jj¼ª))S[õ* Ž*••ÔÈ_ú„ªU%—Ã!ÇÃÇT0è¶b Œ(9\U*0O¹†•ªÖW-U¹,.°�#ÑÍáéD‡\U¡¤+…ºœåªP�ê –˜bN1Ö„ñÄ‘ô1dÿFG{ç £¯ïS}Úû©Êÿ÷8�~rv¦cBVðÊãØ 9¾f%ÊM_…G%íO¨Ù\�Õ²L²[<€QaÊSÇÕ°¨Gyãò”76O¹™ˆ©´VÍÑCvVË2ÉnñF%¦DlŽ6 R©j †– Œ°Ø €Í‘°Ø €Í去&W9×\‘®¹œéX`�6›#a°96›#a°96›ã«©F‰¢¢¢”÷imm†H@º‘°�"©$`ƒIð@f0%Š ¯<‡¦�7Ó1Ùœ‹æ:æj‹?KÊd-6˜”¨ÆgÈ0 MnÕ•y”½9›Wž”“ž÷q®ÒAã V9^&Êd-6X+]"·ÞÔ[Œò�q$l°æÝ©º’ =åñoÑÜðt©yäͯ-s-¦Q#¶7O¯G±¶xÂëæ†‡´â­K%¯<Ž2Õ©Y•.‡s»^�iú×ã Öo«vF�ș⛻e‹i]‚v ŒnûF#6˜“‡CŽ�Kd\¥@¾æ•ÇU¯Šðt©ôÔ¿IŒKõ¾ÀrÃPmihûJÝÖÜÞW£7ËÌS�ͪ<º$<õÚ\¹É”|ÅZ—J ¥ª5šäMñ‚ŠPZ,Çh’»î)mñ'ØÇ»I•·5Eµ3bƒˆ6ïP½ê¢û6f›“8.ƒÞ0�°Á$˜¬øjTR·³?)ð¿¥7ÍÉ\Y�š�ú$ÿ ªovëÉè‹­üoéM¹µ$”Ô8WéIw³ŽúLõ<\9`ê5ƺTcHı*‹J¬bpݪ’º²Ø£[þ·ôfI�B¡;W=)wıÚkÔ0‰}W 6 ä\¥5oG°BÜj2Œð“Õ¨ÕðKS þ-š[¦`Y>Õ”$±�s•†vhyzï  –hS­2Ñ«û#aƒ%çª'u[åòÀ4¦óÏu›ê¢8IÎTQbµ<°ýNÓõlOÕ™FÜPŠ1Äã;ªæ’[å’‚#t)„±ê |5%z3zˆËù纭¹R›‚möoy*¹‘;’@†JõD�T¹|‹ü*U­¯FªtE]¨ïÔªƒMºÍ´<0òØþͲථzUø†:z”z KÜ1n (}B5ª”Ëá�cùQÝVÒ_GÌ}¼ýý»*o³˜‚-Um“[uÁ6/WEÔ”(ƒçèz»ËèëëSoo¯7äêô“³3¡¨¨(åo:à«©†‘‹æºŽêI¦9ƒ0å©ãjXÔ£¼qyÊ›ÇWS�&|Ý”}x7Uª¹¤&0í À‘°�Œ–eZàãE*Ã×ùÕd„>€¡!aÒ©U ­Êt€Q‰›l.�°½ù#=ð—ßÈp(°’£~¥ùî´êÇ¿Èt,°�£Ó§ôо¨›'g:Xá6›Ë™·ê’v깆 À–röoù†¤%zú?¸† ÀŽ˜°96›#a°96›ã»DG‰¢¢¢”÷á ãÈ$l£H* Ø`<�9*xL/ýêÛš“éH`~m™ë�Ãü™»EþL‡4ü[4×1W[†­q^yBåG×åõDömôÿ£‚©ýé�ÔñJs�`#\Æ~þ-šëpé蓆 #ø³CzÁ›éÀBÒø‚ì\¥ƒÆA­r¦¡¬”êòÊSV'w“!ãà*9ü?œ²)¡‰Šu$�ØS¢òkËòJÝÖd¨¶Ô´Ø¹ŠÉ´+Ñ­®xÿ‰6ø_P}³[KJãm³EsýÓ¥žðÈ[p4d‹'¼nnÿü_œuÑezÔ?˜95ëñzåq”©Nͪt9äðDûE�™ÿ�.+z}ò1Îݲ%ö(UÄvoYÄÙ†@Yæÿýqú$P†Ç3·Yœí¶%QÿÅï§ÄõÆk:b�<¾^�iÚ>é¶@ö"aC¿’[{ Ç+�+0g† _�Þ,3'.ͪ<º$°®É­æÊM¦ä+Ö:¯<®zUø‚e6IO.úÒ–¹.ÕWøÂS³µ¥¥ª5šäV‰j|†ŒÚx™etè›Ty[“©,«�âÅØßîªW]ýc½]d®Zõ¿3NŸb|óÖ2ŒZ•&Øn`[õŸUŸ+…zãµ?ݱJ¥µ¡iû&¹ëž˜@'uÌ {�°¡_óQùb­ó¿¥7e�s®Ò“îf ïP¢š'‚+K—È­7õ–?Á:ÿ[z34ŠâpÈQV§æ£¾ðhߓ隋uݪ’º²ÈQ³âÄXR£Ð*çª'å¶Ú=Ùí‰Õ'Á+p&µ]ìc«Þx}žD½ñÚŸîX¥þ5eÖ tRDz œ¨¢¤N;G|êÈ­¦Ð FŠ#gÉr®ÒAÃÐ-Ï’é±dûdú.mõ¦1VÿÍ-S°<ŸjJ,¶Éºcñ‘°!È©UOºUWõâæß¢-^IÎ?×m2%tþ-zª.Á5o « ”ùTô(H0y°<.—n-1�øywyq®:(_M‰ÞLjÇcs¥6Ûíßò”õˆN²Û%SŸUŸ v»¤ëM²Ïc³8íOw¬¾£jMßû_P}sœpsÌÀ†HØÐ¯´6xmšé‚îåÒ¥’TªZó:W½*|µÚ˜N LUº¢. wjÕÁ&ÝfZH"KµÄë¢ùþ„ÓápȱSýSrÞþ‹Ú]•·¥8ÕZªÚ¦þr—«"ÆTg²Û%QŸeŸ v»È}âöŸeŸ'[o¼ö§9ÖÒ'T£J¹9–ÕmV#lC:æ`?Ž®·»Œ¾¾>õööjqC®N?9;Ó1aŠŠŠRþ¦¾šjü[4×uTOCMVˆmÊSÇÕ°¨Gyãò”76�ÏaMøº©áçÝT©æ’š8wÓ�~$l££eÃ%ðq•áë¤Üj2†û ˆDÂÄåÔªƒ†Ve: ÀU�›lŽ„ ÀæHØlŽ„ ÀæHØlŽ„ ÀæHØlŽ„ ÀæHØlŽ„ ÀæHØlŽ„mÔéUÍ¿–Ãüù×Óòg:¤ ón;,Ïëæ%=òxŽªæŒiÑë'åØÖ§‹}’uæ´J»oºc†Œó/5ƒè¯´?g`4 aMΜV‰ç÷:ö—…2jƒ?n©ñõÄ»ŽŒxO\Ã÷"Pzw¾ê^5%cgzÕ¦ ª­7¼ÈºWÅSƧ¿rIºaŠškoUå ÒàÚ™Ž¾áE6±töýmOYr\"ž3bÉ’¶ mHØF�^ÕÔ½«‚ïªöNÓ⦨òΘ;]n¯â?ô†Gý¯õ¨`É�Òé Á%½j<$UÜ5.S Ûhq¦GõïäkI¼äìÌi•xú§Kû§ ƒïÔ¼'ÃëJ¼½I¬‹.ó¤¼á‘S³ž×{äñœT�.¨jíá¨éÇëbÆÉ»Í4l5­yC¾*Ô£Æ3�¸Isî§‚Wz‚ñ^бwÆiVèÝlÌ6E®‹è‡˜í6õá™dÚU_¬¾‰ËÀþˆ×÷�x#úöõ“ýSé‰Î™3±þOÔ'±Ž[‚ó-¢_bÕo]ß ú9©s0És=A_z¶í�+n¬ÃqÌ,b0‹wÞÇí£x�‡ØqÔ¼Þ_¦çuÉï=šÂóO¬sÈê¸Ä8WLuž&|ž°në€çÝp%sŽ¥x|-û.q ƒºÞî2|'|FÛïÛŒ63�¥N¿k¯×ðÅÜ Ûp»[ ÷k¦íÝ¿7ªO÷¯Ó�ºë^;aÈ}Âh2’Y*#°®¸é‚aŒêõ­Á¿£c0mw]¼xãµÑz›¦…Êê6ÜÁ~júQpÛ×Nô·/f›‚ýêãXñD”e—U;­êKÜ7áX"ŽI²õÆŽ9¢¯âž3qÚë\ˆg¬ó-QŸXÏÛ§ÐÏ ÏÁdêKâñ×O±¦ý˜EÇÝ–þ2}M¿7µŸu}É>XÿˆsÛTFRÏ?©=g ™X‡å˜�·¾,àL¯Ún –/ÉY:EîdÚ5èç�èsÛW2Ï?¡2’9‡’9v©ž§ñú+^[c«t<ŸëJxŽ¥úü…•›é�&7ä«â¦wµóu©tD¯YËWSí-*5/:szäª?sZ%?”šj Uª^ÕüëIëí‚×±y§ôÊ}wàIÖyW¾ÔÔ£Æ?Hnó“¡E›=ÕÚ«ö?Hº;ºž)j®�œÂ¹ wô5…–¬ê¤dû#ªþ'–œÖÃÞ^¹tZm÷ÜxNƒŠ3IVÇà)­ýœ¨¾!?Åš�cfKÉÇÒ.#]a5Æ©ò/óU÷èëΜVÍë’n§õh§ézž ¯$¸æ-‘`™¢ß�Ý�¯Š›,–¢ì„ñž¹ –›ÆË%߉Æ*/_zWe;¥9¡kÕn§‚WÞU•ùúµXm’$ó�¥ ®t–Þ*ß’ñj;� âÖ7ÉöGç]ùÒ¡wµÉ|óEÜc0^sn2�¼Þc=šë\dœý×q ÓÏ)>fâóTÊJ2Öa;fVñ¼ó®6Ëô{O÷ﯾ˜ÏƒŒÃ*®4=vb»Áœ§ñúk€$žS’~>M¡_ô]dxåq”¨æjÿ|(`„m4¹óëO«día9BËnºQ¾ÿ.Iùª]£iÝxU¯¿uˆ£ ¡2/ÇÎà¢/ß"cE¾*ÿû-:æé_x§–¯%_>©²µ‡UÜÎ\Vôº¤â½óFUÿÇïåò¼+Ý”/÷M±b§ò{Æ«Jù*ß*Ÿ¯%_–ê”o*7V›1œ>)‡çB¸Mâyý¤?ì —ÕT;N’y:+V;öaì}bµ1^Äë{¦c¾xXeºE†©bƒÀÇ^¾œcÚg\Œs!ÙãKœú-�Á¸Aôs’ç`ŒúUV°ŒÄ±j�™E<ßé߯xÉ�r«¿½që³<öƒ�Ã"®˜�ÕØûD—»{,Ž�f éIDATÉ ÎÓxý-‰ç”˜ý8ð|M¾_cô]¢þ@F9ºÞî2úúúÔÛÛ«Å ¹:ýäìLÇ ¼ÛkçÝL�dŽY6ë‘ÇsZsÖ'ú¼5\­¦÷5-{¨U[åc=ì(G’¾ôwÿ©øX[â6›#a°96›#a°96›#a°96›#a°96›#a°96›#a°96›#a°96›Ë™·àëª}3Óa –œýõU:õÝÿC?:šéP`%GŸûš–=$5üî­LÇ ¹ó|]†!é¯2 ¬äîßû¢úúúÔÛÛ«Å ™ѸKÀær$©çW?Ò®³™Vræ-øºz{®îŸœéP`%â6Ø×°Ø €Í‘°Ø €Í‘°Ø €ÍåF/èììÌ@ˆe@–ŸŸŸ‰8v:â?¦DlŽ„ ÀæHØlŽ„ ÀæHØlŽ„ ÀæHØlŽ„ Àæ|p.�&þÏÓ‰7º �ûÞ”„ÛìÙ³g"É> .ô¾$l 튊Š2‚­´¶¶i6âèúÎg2‚-Lûá'™áªÆ5l6GÂ`s$l6GÂÀ°Û§ÕÓ¦išégé¶N©s›–N[ªm� vO¸Ý>­N¦œ¬Ô©mKM}·t›:G¬nûô+70" µvƒVL7/[¡†®‰w�žäv£Mç6-�·^³¶w©k~ÿ²mû¤óãî9ê�°êÔ¶ÇÉÚFsr6}ETÒ{u`J€Œ1O¹ÿÞ¶:rÚtÀv‘S„«÷™Šëئ¥öÍR�{Õxx™î�3’¶oµiª4ÜñúQŠÙ�ý}7mÚj퓽�°0"ký¼‰–yßýêêêR×öe:¼¾v`â°¯VëgmlÓe}:¬õ[¥ÍñöÍ6….͈³zþÆ®`?lײ続®5‹Õ��Ú¶tžË÷Gõß>­ž×¨òýÁò¶K[m–ðæÌ«;–é¸ jm(!芚æ3oã ®˜¿–©]�Q›Ìp©ð¹G,FÐ µvó M�·o¶9ìSG¼õûB£h�蹈1ú18j·2zNµ³Cíæ„ú‘çtØ·æÇÙdú 5tui³�3R7 L_ òÂç´+Vû:·ié#Òö®.uuí×Ú¡V¸,XVðÇ:£Î6²Ðô Ú¿¶PíY?ŒËt­X¹LÏ=•”ïU‡O‡CS¦�{Õx8™"Ià€éÎé34KËm„»DÈ&ûVkÚ#¡ ÀeÚÞ5]Š?q˜½æoT×~—–Λ¦i¡e…kµ¿A’ØÜ]nLzÐC]¢Uzs'°4Eð ‚×gI7¿Ö� »<¾³¬éyéÉÛYMíáëG¹^LgYÓóßtÿÐ_‹ûápß›e´ÿ˜µ¥ͽ’t©ví,kzþ�¤‹\—•ÿæ?cüb+ªÕn�~@½ÀµõêÛúk;êƒ@Ýzëjœ�»ë7úc½— µ¯ÐIEND®B`‚MEGAcmd-2.5.2_Linux/contrib/docs/pics/webdavMenuLinux.png000066400000000000000000001664521516543156300232740ustar00rootroot00000000000000‰PNG  IHDR¿^ UsBIT|dˆ pHYsttÞfxtEXtSoftwareShutterc‚Ð IDATxœìÝç³\g‚ß÷ïsrçÜ}sÀÅEÎ�™œ¡f–³£•ìõJ–å*É.ÛåÈïä7.—åPkÕ®¶,Í®ff—3ä� H�ȸÀͱoçtºOö‹ €È™ƒ;ƒó©Bªo÷é§Óù�'‹�>z?p‡ …B¡Pè�™EUQºÝ.‰xEQ^w™B¡P(úáŽëÑív‘<ÏC’$„¯»X¡P( ý`„$�„Àó<îV÷‚ À÷ý×Y®P( …~0Ò=•<é5–# …B¡×"ìè{“I2Š,�ïá{>a½? ½4!!K‚ ð ü€Ý:”2 ¿7•�Ñó{Ù?�Fª¯±µºÁÖ`·~MC¡Ð�že8§ã·jÔ« ºÞë.Ó£…á·ëHhÉ"£ïüœ?�é³ôÙoùvn�ÍWLBÒHü�÷Î&q/ÊïÊ›aø…B¡—#ôì0Å!;0éֆߣŒ‘£Ü7ÍÞX‹õ+çøjÙÄyð,©H‰ý|ôá^òÖ·®Ïsqµ·+šéôáÝ?ÅL¤ÎÖõ¯øt±ÿÕ|BcèíŸrrTÆ^¼Ê�k+Ô�$¥ýG˜ÝÛG¹y‰¥å�W~„ŒÏ‘ÍűbZØû ý‘’QŒ(‰tšL2FD“w~ø.®=Àì¶i6št,P3CäÓšÝa{£Bï¹O²YÓÑ4™@–^|P‰�Ð2Œç äA�z­Fµ÷ˆ•#DY&ÆRH­UV¶{t­g+ôk?-;ÍÌÑwùx¢ËJʦÕ9Ï|Ófpïë*":Áѳï0Ýõñjk\Þ%á'E‡™ÜŠF+,97øl±�{Ïß…b`$2“‚^e›ÖÀŹ[p !'˜8ñ6oïs©øÛ¬ÝX¦bu©Ï_æ’iS®tèÿì,Ž�çá>ãÏXRuŒhŒ¸èÓhõqüÇŸé}_&’È0<=N·=ǦéᾂÜ%áçaÖël^['óîA>üÉqš–EûzóÞL):Ê�³gyëÔAfGRD°Ô–¸ôÙ¯øìò+uch?ûòÏù×'—ÿÝ¿åï®®³Ü •Hv’³ÿæâO¢_óõÎ]Þ íJ ¥ô#þ»s–båS~óéy~}½}ÿ­Ý¦Ý3©{Q†RÃäT¨ûì�’ �Ê2;,�(ì%}qmÛ„¬¢¤ÇÉÈ*A¥I¯Óà $´Ì(“úß󯎙\ÿëÏgßÞb¹r$Cöð�øÙé)&‡s¤cº,ð] «±Êåßýg>½°ÆZÓº§Œ2Jz/§?x›3G§™ÌÇP“ne�u9K6â°þˆ÷T%¦�ŸâìÙ#žÈ“P|ìÆ 7.|Îï¾¹ÅÍÍv �´£ò?òßœIà]ø¿ùí9Î×u…óÖhõÝÇŒ‹ñé×»8~€‘.²‹Î•2mË{én¯]~à™U*7~Ëßûþ顳¼s¢M¿grn¹÷øÁBBAD§øðÏÆÙýEÒ^—æò<«D)Nìçø'ib‘_ðÙ××™ëh—{¨±IÆF’$–¶=›@2УEö�ÅÈhS *´-��èè Åd ïVŸ^{ðpY¼.�v�íŽÆ¸‘e"-³Tñ°=�ãEÒ¹1FdŸfÍ%YØG)}“´Ö lï4;DŠc$s«M§¹ó%”…„¬G‰Å UFY�“ÚsŒ3I ³Bs£CÏSPcIòCû8ù'i"ò_óé…[\¯9 GÐÒûùä_ü '' $ݽ­UZ¶‚‘šb_Ö ®?øŠ$„1ÊÙŸÂÛG÷0ª;ØÕU‰ÒûÞËSÈ}Î_žç³ë ß¡¹ÑFˆÅbšBFGÔL$Ð L”’ �((« º j€ÀÈ�’ËdÐíM:•î}ý¤¡Pèe@%YLaD$Ìz‡z¥Mÿ¡&¡Çñ°û=Zµ;aàvºt’ž"ža$gà:ôÛŽ�3Àvž#�„„¤(¨ŠÄÓÖôúuj-Çg_n†Ù“¹�6ígìÛ{œ]~�g3h®qí³_3šû„£3'8ÚìP©_dþ‘YO�;ñ§Œ`l_áâåk\Ûè01cÇøG?=ÌôѽlU·YºÚ¥»¹LÍŸ&=ž%‘0�+6žÃH�1aT¹@)#•Y·dÍ 03„®vX¬u¨¶U7±è4{4ª.êHŠÉ¼†Z€'ˆŠäFÒ(½UÎ}iqöGCŒÓ” 嚇¬é¤ÇóhÊ€Íz�VÇyâ‡)„Œ�5lÖÏÍ…ë+l r4Cfò8Ÿ|¼�Ù£Ó,nUX¬Õ âYFÏ~È©½Ch«øæÊ76Z˜¾Šž,²÷�ŸòöžžC6È}Ÿ“‡frVYüî"ßÌWi;2Fv’£ï½Çþ½'8Òí°¹~Žë]sc�ú`‚¡|’t!�vËÄ’d”ô¥X„¸ÁŽ¥IÉ\3]@%=š'– h¯¶X­X»v"l(ô‡G€¤“ˆ«hŠCo0 m>ùÜr?Ël²µºBóöµ±ï °lâ2²¶sÜ­�e¶Z}Logä¨gðŸeÏ/ð,ú­u[%™˜"36IÉ\À­ué½ÄqwMøA@àöé®|ËWçÇÈþx#‡�p²ZeûÛ:æC琢ÉqàÌAF"ÛÌݺÆÅK7Xêx’ŠØö;1Ë»ÅQ C—é7WYèœ%™œ'"µDâćÇÈÒÇ òùÙ´†hx¨z’ééš³ÀV³Mý‘O|úÍ6íj1ed,�¾h#Ü(ù¡#…€Áƾ¾`Q:ýSŠcJ…j½‡ªG)�'PÄ&å–I³ïÃ3}yÔ7VX¼9Ç¢€E[s™<¾‡ÓC#dsibr7Q`ÿÉ r™o/žçÜ×·Xh¹„ºLkøŽDï9®‚¤¥™9q�±”EýüE¾úâ<ÊäU:‘aRìelbšƒ#—˜»ÑÇk.³Ñî3=š#™Ï—ËØB!6:EFÈ�B4ž`d(Š´ÙÁ— 'Hj-Z­ ݰ¿/zuCÈØ8®ƒõ\M+>®3 ÛnÓºïq Øé1tè6êÔ}î›� ´Ç–IVd �PYìL¹RU)€ ð¹Ú”g÷èöˬl¤ˆMå)µéÛöK¤ß.›Ý€ßeåÛs\¼^f�çð™c((BÜ ’†ÍspÒÀ"‘§4sˆcÇŽrüÈAŽíM£ ™Àȉ%IHVw›k«6VtŒ|"AJSÐ Y´Î2›]¥�!�K +Œx‘}E±½D­Õ¡ûÈ/P€ÓiÒ­W1U…ìt‰ˆ¦ E† 9†µ�[×XßšãFu€¡0”'¡jhF’É’‚bmRíöh¿è0&ÏÂm¯²Øpé©i #JDÕ‰D3ì–QÌ›ÜÚ¨Qn»ß_ýŽãáßÛÑ,d=Ïìx”X°ÊòÆ&‹wkexV¯/Q.›é$ãId°¶YÞêѲÄÓEІŒ¤ö  4:]ú‘ùц$#Œãyƒx›vµL-ìì …^1�$@àC𺗓r„t¾@i¨ÄÐP‰B&IB“Jœl¡H©Tbh¨@>� úÈ*™�;èP[Yf«éaäŠ iRºüÂuÍ]Tóû^Ð[äâ××È$>à'³Gøé;k,_��ïy•BR‘µYC È3œüpŠ£ï=¢á›øž@‘<«Ãâµ ƒñÙ$…x 7‘blXf0ÿ;ÎËN犤r9’Ñ6jv’é¨O{qƒf«‡ý˜òúý½v™ Óì� ¥/ÒJOSÊåˆu×¹pmƒ�pm¡ÍñÒ8…â0£‰6ÛÑ1¼­j…¶$ GANç()j•íÛSßÇsƒ'}ðûÔ××IFÆË¥Žø(<ÿ¢»¬Ïï^>vkƒ•¹«|yµG¼˜EW•ï ØØýsk6i”ñBš|Ä£ßëÑ»ï_Ÿ�}{Iàô7˜[îÐQÇ™:x˜#Ó1äÆs5‡^u‰µz';ÉÁã8RðéÞ¼ÂVg@ÿ‰ï¬‡ÕnS[Þ¦/âL�<Ãá‰4j½Âúâ6ÝÛ©ô7¸µR§ê™=Ì©ý $kƒÅŠùÌëÑ=ûÛ7 ß­scÙÆ1öqxÏ09ãÉxàâYn®˜ô¤q¦FGÙ[ºórŠÉC{ŠÐo´XYi_Ó¶«¬o6Øì%ÉMç�S$» ¬×ÛÔj[Tk5¶É³÷ÌÎNGP*ËTªuša_(ôðéWË´Ì^4Gvh”±¬�üÐýB’Q%€ßñð= ER‰j/Òb´ž;}Ž’t÷j×qplÛ¶¿_(#p¿¿ÍvpÜg™.àt«T*M&hQý…‚l÷Öü¼íòÏ]äèÔGL'ïù0§_ãúùkœÌî§tàï±¥*;ƒ‡‚�àWW(Wªl÷À‡ ËúÜ*õ™ÃK‘®®Ð¸4ϦàV×›?Àìx†H¿Åü¥š}û©óÐ\³M{c‰-g–á={Ð¥ —¶·Yܼg R¿ÇÖÂ:å™ö�•˜‰öp+s¬µ-ÌW=Ñ-°é·+Ü8•µâÆŽœå]9Ij¹J£ï�ch$FL—°¾øv“ù WY)gzæo92ê|…¦-ÉMqôä%¹Îæò×6îi² T×·Ø*ïåääGTûÖ<•–‰i¹ÔªUV2gfaDlV~»A¥Úyl?j(z9n·Âöv C/‘Í 3áKhñ¦í"dUCSRw“µ†‹Óà <´h’âè0ýº…/)(ô1{ƒgø½x–CàkD ²™f­C÷U¯UéèÔjT¢qÒ‰" ùù+»;üϬS»õŸ^?DúXŽÔÝ¿xƒ[_Ê7£*§ö�1sv˜ÉC ªíŽP‰Ä4šçÿŽsfƒíþ�tñé,Þ`£6Éôx Íj±rc“ž>}¶W¶¨î›ÆŸˆ@{� smÌgXz+°;˜�e®7|Š9 ¯¶Êfy‹µûšõ|z lmOÓt‡ò4nÎQ3íW¶^Ý=%Â5”/|Ê—QÎì�fß[#LjRï8xŠAj(F4h²nYÜy‰�gQ¿ò9F#¨Çf?õ1#ûšÔú2‰R‘¨×¦vã¯Ì±Ø¹ÿµõËklolRw‡Õ;\¿ºF£;À |ÚµK5¬CãÖ<ó+u¶[¯¨©7 =Ì7©omî vÉ“Î�±7ï2Ø;Ë4J ª¦ æj•­–àӠ݊‘‹§ÈNΠfúx’Šâl³±¾Í¶õ”ç |¬v‹žiKæ([ ú=º­{›Î|g@¿Y§¢ì,mö"çÏlЬEØÌ¤ˆå®Ó>Ík¿À0èµiÓ£ÿ¨Û«»Å…ÿü%Gs§ëÜé¸ ‚îŸþ•Iùä)NŸ8ÀìH‘Ñôíy(•5Vûý‡¦(øín®nQ*É$·×¸¸|§vÐß\`s}ˆÕá$ÁÒ%®4=ž©E2°ô¶¹t½ÊÁýò�y67¶é<ðØ ·ÎÊÆ:×ÖÆP¨1ik§³÷ÞûøÞNM²ebÚîݵ:ƒÀÅ5Û´nß~ïÛ>n¯M§5À8;ͼ¾…۹ŧù—lŸ9Ë©cû™.1–Ýãše¶–XبR¿›¾>Á`•¯ÿö?ÑØ<Á™3G88Qd4ãc7¸qá ¾øö·¶º]æ&››Ë\\™Àˆ­òÍB‹öíöb»¹Mué õ(¥­o¸YiÑxêðÓP(ô2üAƒòŠI§Ù 8¶ä�ç`[¾ã>¼^1f»Áöê¥XÉöy¡Ç� ²™’$áû¯að�¤ * ²ðñûñ2$]“�‹çz8÷½’"£ÈòÎÂÍw>žëàz¾)IUQeéîbÍßNBVTE€çbÙÞ³_•�¤êh²ÏÁuÝG.ô*)*Š¢ì¬hn[;ËÝw IÕÐäß¾]þ'Ý~縚�*Ž‹ãÞ[n�¤((²Œ$Ý3_2Ïõp½— H²‚¢Üó˜ÀÇó\\×{ì—LÈ Šª àãXöݨwާi2Âw±íÇ}¡C¡Ð+'vúà„ôÀ|é;ƒ\ü{ΑâÁþ: ðñ}ÿv¡,|ï çIÚy>n?îE~ëBF–ø;Çxô!BH;÷ ¼§ì’xžO£ÕÞá …B¡ÐïÁ½á·‹G{†B¡P(ôÃÃ/ …Boœ0üB¡P(ôÆ Ã/ …Boœ0üB¡P(ôÆ Ã/ …Boœ0üB¡P(ôÆ Ã/ …Boœ0üB¡P(ôÆ Ã/ …Boœ0üB¡P(ôÆyí»:„GB/L15G4Ëlo”©‡¿†B¡? ’#–ÎRJ k´.¯zk¿Öüv+¡’Þÿ.oð'÷“{¡]•C¡PèuÈFœDi”±ÑIMÞÙ[p—xÍ5?�–Ÿaj|˜ÑH—êÂ5®–ou#DtœÇÇH9¬­¬³P<Ãv÷?4•ììa&‡ó�§Ý7»ÌÜ•%6ª]ž¼•�@£8Îèx„~9þˆ=±B¡Pè=#‹‹h¨òÎ6G�ïâX}Ì^�ž9À Tôl‘BÄ£[«Ó5­ç¬µ $EE�ƉGM”‡¶Szz*K*• ñ,iå›4ë-ZíîSîúÚÃÏ:̱ÞáÇ£MæçÒþõ56».öýÕ!%òÁÏ>bºû9¿ùeƒ¥]~™™£œ8u€Ã©Û«�11tÜÁ€ÁÀ¾æt¿ÃÚ®R«=-üB¡PèU iÄÒYò…ùlŠTLC•A"ðp]šåu66+T½‰±}ÌæMÖ¯ °ûÏ~¯‚„žÊ‘e4òým²¦¢Hx®ã~ŸN•e×¢×ð¨½ÑïµKúü$¢¹fôs~²Uá?^©R ܞơµrƒ¢M7*È&NŸd2åÑÚXbqa“ÎÎfæøæ2u; ¾P(ô{&$51ÌôÁ†â2Š7 o¶hõ,l_B‹ÄˆGãÄc1z�Z_B‰(êé‡n®wj…Á}çG»Ó¤± èw**ñb‘TT&0[Ô«-·Ã"pÚ4»Þ3<å. ?=6Ì;ÿü³Ñúœ›¯ü ð°©]?Ï—7$„PJ–÷‡ö“Öz,_ûŠ_þíÖ.à%v5…B¡¦ F3L;ÀHBàU™_Yg­Öú[ËHª�ŠGà:úï¯t²ÅP׸÷ìÆî3hl³Õ¬P¾À"°š@SÜf™¥¹šwÒ.¸½3ý3<ç. ?³Ñd{~‹Ôñƒ|øñ2÷_Ï×<ëÑf�åèá=L•�ƒÕ\çÆ7_ðÍÜ›-­8ÞwÆŸÜü›ÿ‡Ïn•Ù耊‘áè_ü Þ7®pî—ç¹xs›®ÈQäü[üË¿8J®þ_}u™s Ýû®*ßÇ»[G ðð‚€€€À÷ð\÷žÆg)6Å‘“Ç8}|šá”�Bv›òÒ¾ýö:×+tï»l‰�ßsš�þÙ>~”Ë“ÖÀë×X¿ùß^¼Å͵&ý0LC¡ÐHzœhnŒÉ„„Ü^dqmƒõZ��ëß¾mîœß�ïÞš`|ÿQŠ{<ü·�]¹É¥•®ž!›ËQÈ&‰Et4 ÀÇn®²º^£ñl¥#:4Ídhnps±þ@·Ðí@»s›ðwί@;Šh&Ü%áàtk”¯}É9r|<~–³Ç:˜½K|·Ù|ó§PÆ0§ò1g�Q2|·Ê ¾Ìrÿ]ŽŒ “L, ‹.–'^'/lbs r) ÑòPô3)Tÿ:›Í5óŒUeíV•µ[I–Ò2ýÜ0ñS9…!²êUêö� (ß¼ÌW¿ú ß4n?¿|•U;†öþ>Æ'g9:r‘¹æKs(ú#$$E!¢à÷éÙîs�ÊÌN‹z­Aï¾ÇÝ©£¹Xý6•�u6÷ÿ]\ø �$I·ë—2²;ã&$ Y–‘o��~À1»(ü|ðZÜüÝçŒãüèèN¾[iË„› IDATeaã<·x`Žˆ¤£E Ý%âÏÓöd¤ÔIØùP<:ƒKÏ�§I‰›¬wË\Ý𘞠“¼HR­ÒŠÇÉN0[lKÃÅ™\ eÝF�æÙ?¬ l/Rk·i?mâȳ ª®cº¦¢êŠç8>¶£�P#DwÃÏÃõ<œ{ÇízmV®.²15ÂìD‚ñÉÊ “]?>( ½!²ÀwñŸq@ÈGFÕ b1ãvÉÄ#*ª1Ri#«×¥o¹O�¶ð"vYøí:7ùúÜ8騻|fà&SŒ�ª¸ó¿áœò§‹—Hæ²$Œ.zf’™(tÖh6»¯¤_MŽ�qàÌÛ|ðîQŽ&Ðî¾Ij±´.ž©ÍÛíÖèYœˆJ<E\k¡Pè!�àùdé…&›¿BrŒÌÐ�‘¸s›�vú£IÒCwÎb6å«YܨQûæ‡íÊð�ÞÊw\¹–&W:Éá·Ê{õmâêc>²öu¾»´ÊÒfïáYýAŸÊÊ2[V€OŸúÜ­÷N’ÎPÂJä˜Jج1ϼ¼ÁôÙ ™t‘±¼Œ=>AV4ùz¹I³ë¼|°(Ž~üc>8=˘Ôfåëo™ßê` ƒÂ�“ÌŽkO?ÆCânóA( = pq<‡ž-A,FR—©É`½Š–¬áè6Ê,Í nOÝ“ˆFÈųÉövûöÈùn£‡ùÐ’_¯Æ. ?ð5Öç®q)Ÿgêã=¼ûAŠd\Gº3vÖ÷ð“¶à1`{ù—/oÐ~°-;ðp,‹� këKí#œ*RœÑp(’§Ê·‹MÊÌS;rŠÑÌû÷È4ö¤P:7¹µÝ¥5xùþ>)1ÅÌø(£R™ò¥süí—KTz6>#Ú8Éléû+¡§Pâ¢z Õjc¶úx„µ¾P(ô(.ŽeÑnÙ3Èæã”{½®ûÔsF@ì4›¾² ìÀaÐmR¶»·×ú”IêY¢*Ю±¹Qݙ⸎�û,3Ö_À® ?ð0«+,^¹Â·{&ùdzEUï6=��;h°Xv™)ÉÅu"A�åúFdAo…¹õ³ûÇ?0JÂh­9®Wl:Áë�ÃŒ”Æ9t4M½$è/]a½= ÷ÒWI¡%‰ë*šU£¹µÈÍåòí®=­ÝÇ´ƒg ?%ÍØÞI†JqìÎ:ë«í§®c …ÞTî G·Z£;4B´0B±ëb»MZƒG}JHbç– ðñlPÐU†ç›ëuï‘%déö |ÏÁêߥ £9ž�cÑ7û¿—¹Ë»8ü·Mcsž¯¾¸Á‘‘Ó +÷ô†¶YåêwËœøhœÉýG8Õ÷a±F×òð‘Qu ¿]¡Õîвw:PñÛ¬ÌmјÚÇìDœ|}�ÞÜ-ÖL;Øbe«Í�ñ½ÌŒHÚ=V..Ð0íW0˜$ °;ôl'›%=<ÍÞI™†å RHEˆ>²YW%šÌRc¬ãƒ¤ÍïáÔéiF&•Ë+\[éþ, …^ßîcÖ7Y­¥˜È(ŽxYGo™XîΈJIVPT Åïc™]Z®�Õ6ñò:‰TŠLßÁëïœid,:]÷©µAß÷ñœ!T©±�‹Ýwžs´écw‡àv*l_ý-ÿpê?ß'~÷/>î ÅÊg¿äÒÄÏ9=s‚³ŸÌp°Vf½ÞÇ‘4™$æ7ÇWß^æ›Ê�º‘GóÖ ÊgF™K£9]æ®­ÑñÁÇdk¹Leï4bÌ@j,òÍÕ=ëÕÔ»ýö‹›ÆG÷3q*Ç]Zf¹jâ �œ,1…¶»³^L@€ïØ8®ÁØÌ1Þ�Ùk ¥Þ3BJòèÜüœ«/qµ¹ ¾I¡Ph÷ l³ÎÒµ%ôCCŒ% ÛƒÛ‹g€¢D£:´×Ù\Y¤µmcV«ôFFÈ �1™È’ë{"@÷6¸tµþ´'Å·m¬Ž‰SJQœœÂñ\Ür“ÆÝH¾ma pžgþáËÙõáG`cu6ùòÿ;ÇÉý6÷þÍ· Z—ùÛÿÓdý­·xûô!öOæÔpèVV¸ì;ôÈ.¿9ÇÍò)&ºIR�m.-ÞY²Ì§·¾H¥2I½Ÿ"ؼÈźÇàUµ9{Û\üÕ¯ðÛ=Þ{ç0žfLì<¯kõé5V¨”«tÜ—îêË£ ©=E† 1)¸˜ÛK\ÿæs~÷õ ®¯·¾Ÿ …B�ã;¸í®_hQfh¨@>™ [�vVft˜Ýõz“ZÏÅ÷<üÖ7eöŒ)$s %}<»K{{gTúÓ‚Êë·h——¸™œeº�&¡k�؞ͣ½t‰KËÜ^›óyõÇ� ²™’$á¿Èi/I2R$1â²�Ù¨Qä^?BKRÈÇм.ÝN—¦yO"I‘XŒX,‚¡*;óYð\›~§MÏ<`2F:K2¦!;=Zµ&w'ÄS R1mÊUó9ûÓâ…" ÝÃîth·Íû·¹]Öx,‚¡ÝYÊ'Øi_wmf�NÛÄr$A"!ª«È²„´³š¾kÓïuéš,çK…B¡Ðã EÕPUE–¾_†,ð=×µq÷vÓ¤@Rõ�9ÉòNŸ]à{;ç � ª�¦)ȾƒÕ<®±õY�o{=ºn¸D(ôlj[¡aùÜW~IGÊœæÏþÛ�˜î~Îo~ù[þÃ7õçÜgï‡">ʉ¿<›Äw,lŸ6dtüMþãÿò¿ñår�šó¸c…B¡’P b™<¥áaF )bªðœA—fu›�å6{/²O¦@žçã¸Ò=a)´¹ÒSã´A‹ÊFƒž�ŽE`¤Éí=ÈÑü€ç.±Ù4¼’«{ Y‹Og) •Χˆi’¾‹;èÑiTÙ\Yb£ FiŠé±$‘î7/ÏS{]'Y!£÷qpOÃ\gmy™Åíöƒù§Äˆç§8~|yóßÌÕ©vÝgúì^{Ío‡D´8ÁÁ?ýs~ºù¿ò·óÝÇlj»»ùö€ÎüwÜhú îKoœkí§÷Ó…B¡ŠL¤0ÁÄÔ8{²2¾Û§Uï1ð@R#Äb ÒYs}•-ž¾KùÚ«óX•e4áÐí~ j"K<ž@ë5(_¿Èåª}Ͼ„ž‰¡F"(ªµS+{E„š¤89ÍÔÔ0yÍo@»Õ£ï‚¤D£IrEµ½N¥ç¢è:ª®!÷_a!^ŠD´0Âpàc™7Yj¿ºN×]~ „ŠåÝös¶þ�_òír�æî¨Ú=£Çl²ñÅ/øÅ¢MëÞö‚ <úÝ>vØa ½rœ\6N.áÑ«o²pc™êÀÛ !!!+2>nï%š=‹�ic‰àžcHÈšŠ¬�ëZ´Mÿ%¯í…¬ èaÓë;x�: !?9Éèh�„Û¢º¾Ì­õ}Çßy~!!)*Š"#÷-,WB¹b=GùUT]ÃÀ¡×·yRK¥*±tž±™Ý+KÔm^I“ð. ?ŸA»K}µB|öï¿¿A׽ĥ•Ö3u £ÀÄì>öÍŒ1’‹¡.v§ÌÒµ‹\]ªRíº¨ÙqF�¿ÏOfËÿð .¬Ö© @AK™ýéÏ8©ßâòW¸±\§²�œ>ÊŸþt–të2—/ßâÒšù˜7> ð=ìN“Væñ´ÆrÉ ’föè!fÇò¤ awhn/³0w“ËK�goo—t´ä(�dïX–tDËdàX%U<ê]CDŠì9x€}Ó#”ÒTßbÐÚbñÊw\]iÐè{€¤Å‰ÏrtßÃù4ɈŠ*û¸f�Æâyþóù2ûEš‰B¡ß#EÇÐTtaÑ7T›]ºþ˜…@<ôE–Ñ¢†g“‘U$�kÑï4¨×êTÛöís‚@Ï�ŖHøm¶—W©Ú;G�d��ôhޱC'ÈzÁÎïŪQÙnP÷`gæYœ±}‡ÈÙ.X=Ìú77û÷œwJ$Ev|‚i­Ì�¹mZ}÷¡ó’’¦”M“‘ºô*k̯lSïÚÜý-’„øx�tû7¬Ï ³ïxüîù×ko²µ]§Ú—ÑYŠÙ$±¨Ž& „ð­.�úK[ÏÒ§#Pãr##L(e®Ýئk?î‚#`Ð6ñ|ˆdKÌL¶,5é9/¾Ù%á`wjl^þšŠôSÎî=ÍéJ‡nï:sUë )/ƒžãÀ[ïqêØ “Y=ðq…X|†±R†Ä_páú:9‚‘žáôÙ<ùÕ¯X©µ¨ \�4ŒÄ0ÇÞ>Ã[FœÁò›ëuúÎNÿ€1rœ“'÷£_[cíú+:½Ë12#3>{–3‡¦(h6žB–˜œš`b¨H6òçnµž*r”Dašã¼Ëé“”"¸.¶ d9¦£)„ŸP‘£E½û>gŽL1šTQ|O(DfgÊÿÍç\˜ß¢l(ÑÙƒïñÞÛ#ä5ϱ±=¯¯ëè(’@ð"ÍD¡ÐïQàã¾P�5�¨.aöýûÏ/Aðˆï±„¢$3ô Š*ÒI↎쭱Õó(Ñ4éB‘¼'è­­RãÞß…@H2ª®£ßI @A‘ß'’ŒªiøBÁ'ÀÇÆyÄè6IÕ1R9 F‡EEBâÁÚ�B,—'ÓÌ õí µ‡‚î\´ß»„$)hºqûB ÀU%dI é1âÅ1&G¨¸xÞí÷TõÁ”<[øIªA$�%¯¶w=ö¾N·IËt!W`ht’±ŽÅJÍÄt^KÂ|»C{ã2ÿÐ,’ûÙI&åD«M­³Då1ÍŸB�Ÿ:Ë{�aR©S[¸Äw«u:$)ì=ÊÉC§9c7èwšT׺4W×iÃäFÓįéÈuO‰¢'†™N‚¦”($b¤ ‰² «éÉQbªEy»M­ù¤ ÞQ-Œ2Òwˆß­¶žƒÝ®Q3=¼@ ¥Ç˜:ú¾{�b{�«çYkÚñ#S{™9ôŸÄzTk_2W5Ÿ0·H %KŒ~›Ÿüø‰Ê<‹WY­téK1ÒC“ì=�}`ð Hz‚ôÌ[üèã3 ÖØ¸u…Å�6}5Ciö§½ËÛf™V·C}±‡¤EIŒL1^”i\þŠëK›”û�oÔ›ô]ÿŽL …~ nŸn·OÇŽ“N”µ�ê]zý>ËÅyl[¤�ç èÖËTz6n ¢'Òd³I²CÃȃ:µ¥Î3´Ôø8ý.ÕÕªöNÈŽI¯gã°“ê›ëÔ{v°Sôûös^X ÉLMóèULš­Á#‚ïq\f“­åMÚþN¹üA‡Žé!¢:zÞçaû߇ŸÛkP½ðK~½Ð£ckd¦ö1sx–Qg�‹¿øwüåÅ&��O Å(x‹÷þéŸñó£sæ«ëT»ÌÞãžR#14ÎÞS‡ ê\øõ¿ço¾Ý`µí aä§ÙË8ÿÃé{: FªÈž÷Þc6ÑåÚßÿ’_}“[M”ú•*‘‘¿àÄþ=ŒÞ\åÚr�Áí×-æ/œã³ïXé‡õ¼Ðߤ^©a豑އÉuªloo³]kÓî °÷¡ô°Ì&ë·n²Òßù%-ËÈô³S ’¥ Æj÷©c|\»Gk{“Íþ½5B ýnøY´jÊ�‡G{Š»#avFk ÁN3­IÜ­¥�I'ª É¦ãØ·G–>+»ß¡ZÞz`´§@‹î¼›êÚ2+�>½{Oh�=ê÷å;å¿ói矷ü>2À5[4ÍUS)ö'n÷±,‡êKŒœßEáàƒWçʯ?e,ÿ <ÀÙ~…¹ÿû[6¬Kz¬È©ƒ1¢ö5Öš~„d*H ¶Ym8ì/‰%³¤¤E¶:›\)Læ¦H'®—ktcq2“%¢^�V�%1”"�‹"o8èF–c zsžj«Më)_nI3Hì;ÉÉnwš[llþ†ß­˜tü4ÃæJ:›Wùå·u:öí‚ߣº¾Â¥/—ùÉž}ì?�ç˵½Ç|ÂRœL:ÃÞ¯u‘ϯW©tî ó ð}kàÞÿe’¢ÄNî3ÐÌ ,7tE”d 2r°ÍbÝgvr„D"ER�Gõ†BxœÖ:kƒíæ0#Œd‡Ï 3nwh”×XY^ßi…yÚ‘œ.½¾IÓÉP2D$�ùƒ–]F34d!HhÆNBE7"D=7ð=Çñq‘Pe�ß÷^z€ÍK š¡Þ.¿Œ¡ïÌ7üÿÙ{¯'¹®<Ïïs]zoª²¼7(x 6›lv³›=;===£Åh¡ÝÐîDhCû ý%zÖ“¤ÐÆŽÚÓfzšÞ;€ð…ò6+½Ï›yóZ=T�@X6Ù÷¨dÞ<÷œkÎ÷ü~ç÷;q¿þ~L¬›õ×�»¤±™è�:ÙåuRÑÒ#:= 5ÿõ}NO˜øíc·V8ÿÉ(QßIÎŽ�à_=›ã?­‰·-D*ˆ ’7JʲtŒïÿlšÓ?6¿¼É‚ˆ7'äiД<ø$ ]k²ºX¡÷|ƒ±0é ;ahHÁXƒOå0ì#šLö«xãcL¡}q—z£ý€à½^`ãWÿ'¿ÜÒiÜ2Òr,³Õ ÚµÁ"ì÷UÌF޲Ám®»§¢ÕóÔ™#ÑÆçSïåG—ýø|b’ŽÓØ¥¡[Ü9Àûêܽ�/L* !úOñ“¿šçEý–—C”ðE„<¶eï×ÏRuqy"±ô6�ÂKµ,¾0ñT?™LŒHf‚)_ˆàÚ+•ûG âØ˜¦…n‹póí!�’bêèÉ A’�= CÌí;ˆö´èÖJì­¬³¥9˜68‚„(Šßrý€ #zÓÌž˜ îS�ö£U= "Ã:žÁ:ˆˆWËyöÖÖÙéÞ¥ÛÀêäY]Oá�Ñ—NÓ3T¿fµžHñÃîRÙ¸ÌÕ¾ÉïÍ1ùì œjª ˆûÁZŽÝ�{åîW}ÎŽJnu‡ªacÑ¡¼´Nóô!Òý1úúÓô"IÆ£&Å÷—X1xÑžÂþı„�a˜Îíus¥ � á¾Oí¾û@0 ¬»NÖõ7²h#´wÙ\)PlÜe.Ói³½V î&ä»ü±áØØ¦ŽfêhZ�ž¦ÒV3 õ3‹Ñ?œ"[Ï¡Þ×ÓãàठÜtA~k[£Q©`« ² yƒ I¹C³Ú¤kXØŽ�®6é˜6Ø:Ýžƒòâ•=øeøSä±úŽÕ¥^®`z$$A@ö‡ Æ¢ÄÅõj“žic;6½V‹Î=—`tp¬­Â{±Y†£)R}^„ö×»ðO¦øV+ÇÖò"—ûS ?»Àóg $ƒäúÁŽ�mj¨†ƒmÖÙ]¾ÊùÅüWC—±è©*mÃÁzt³‹ì¶g9œIÓ7!¢‹iú¥K«er¬S�;B,Ã̘Dc<�·³ÁZ¾E£û =9V�žaÒuéV�^·ÁnÕf2œ$$èÍ2ùö½DVÄ÷ 5ÝÅåñ"|±ä˜}Ç$˜c›X–‰é >Üڹߎcc›6 ã‘ÅýzÞ6Þ6Ñ:7ÕXÀ+‡™È=:j›VK¿cžÌ ]©¡&ü„BQâé$qµHµs—þQ¬XÛ²qlI�ö§<y!ü/V„›1€c¢©íƒÿˆÞ(aÓACm·iuÍÛ›{ßëo¢Vò”Â~B£ý¤>Ày¨$‹[y‚Å0j”v–yïƒ9Žüü1åÄÑÑ»e®^/sâÙ!ffg¨ÖZtÖjtMG�$ §§¢i=4 À«Îúr‰ÚÈÓ2õ½Íe6UÝβUh1;<Á‘á i«Ká½eªý‘/ì=±[öŠlì:ÌMÎñâÙiJŸå)ªŽghv–ãÇúÔm®¯T¨µ DlËÆêÙ‚�D2J¤Ô¦ÑìP/•X^S9svžçNÏSµVY)¨ô,O8LÄ'!·Œ÷�N»Ìµ¥§ÎŽsxa–J»‡¾ÝD»yÝd§Û¢£é_]KÏÅ廊è#Vðˆ½ž‰iÛ8Îþô‰ä� …‰VW¥wßݾylÓBï8øˆD‚„4 ³g,@mÒÓïãºz-G¹$LéeÒ°°sMzÖ�»Q’�$ ÅlÓè:˜šŽ©ƒÇã' PqLDÁÂ4퇰ËÆq<~ŸÙÔ1¿é~ÄlR-U ÂÄF¢(_c¥ç'[üp0yr_çͳ³¼2$âÿâ;£Scýµfqâœ^x…WÇŽqro‡Íb]ôïOa\úŸ]¼Êù/’MªKK”Oõ33Ãcv¸q}›†mö6K”''‘CHåUÎ_ª j·PêÃaÒX»ÆJ,ÆôÌ+œüWÿ�¿]¸ÆfY‡Ø™¡ )«Hñ£_òñn“JÏ9hk—v±ƒ(öóìŸüKy�w®l±™ÛdíÃ÷¹¸ð—5@ÿL?Ãâ¾›Ô±ª”ÖWØ©´hÝ4_Í.zéÿôèìž9ÅñùQ†&ŽÐ7iã8Ýz�ë¶Eϵú\þˆpz5ÊE/²˜$ OG°±ôõl™R¡À^©ûè޾߷n¦J·ºÁ•5‰‰�(¡Xš�cajMê�;çÝôf‘½K ª¢A·{·Ô€}¬N™½5�v-E¦�…±ýi IDATt,D0 ûÂdh´«5*uÃr°:r9Qb(¥o0ŒãXôê Dç!bz›^yƒ�0™(¾@ˆ¨ÙÛ²éÕrì\¬Ptºšùõ’ã�v½F~»Hÿ\â‘ç(…ãÇ�8‰xQ±í?|o'GÉô%I*jÛìÜm+AB d˜O4Ë”Šeöj_æâr€H"I2%ð°ïµ14•F±@¹Þ¢u[ô¥Bth”¾d¥[%¿™¥zSäé�4IN3ÏÒz ƒû�¸äPšdºŸ¡�Esk‰­¶Íݶžº½M2²/L²?M*À'‹`éhí:µJ™BíÎ$d_ˆäà }Qfa‹|¥A­ç"‚ Þ—& òÉÈ"8ŽƒmöèuZ”ò%êªv›S�ƒÄÒ)’±a¿rð CS©çs”›TÃAô†N27©nmQª«îŽÖ.ß=ÅëÅçóáóÈÈ’xÐaÚØ–‰®uÑ4�Î-/‰ä� úð:=Úõ[wr�|Aá A¡G½\§gƒx�ã%”PЋÇÑPëÍ»¿?‚„x÷çýp°-½«Òhõ¾þê)‚ˆ¤xñûýùuÁ,Ž}�ØCët¼=>üþAÿ~d)ؘ½ªÚ¥gË(¡1Ÿ�Z©¡ÖWìo0HÐïE¶{ôZÍÛú¸J#âÄ‚ ¢ÞFU÷ƒï¾‚¨àñ‰G½Ý:µ¶Nï>#Q°,›Z£ùøÅÏÅÅÅÅÅåÁ­âçF±»¸¸¸¸¼Þ ^]£½µÈjÃÆe<þ±xš©3CL9ǹ¥·ùÝ›Ÿsu»†ê*àï�€ JRIü¡*òÍÍ9]\\þ¨�D"A0`dxE–Q…�?ùô‘ËzBÄ$ÅO¤ošïýé‹”ÿþ®îÖi=9žÍû "‚(`w›ä>{�7¶ Z¦€({ðb$'8tæGç_àËBúà2çWkôwÕ¿Óˆ²Œ ®ò¹¸<ضÍòÊ SS?êgl|Œp‡Ï/^Â0Œ‡.ë ?‡žªÑÌ·Μæ¹ÓEÚÆ näÚa ž8ý##Œ÷“ŽúP°0Ô*¹Í6r ê 9ÒOßÌ1Î ä.|Är¡IMw %gäì9æ”Ö®®³•oÒsуžæÜ™Âí5ÖÖwX+öîá¶t°M�N1ËÞ®~Pö~Þ�…–�ç§ç˜™?Å‘b�b¾Ájû–’ä0É�!FFH„ð‰`vk”³[lf‹ë=¾2�ü„ý OŒ2’Ž�«G§šeg;ËvC&~â9ŽÅêl|v•íBýÀâ•cgŸc:Ô °²ÆÚF™®$˜™bn$N<Àï‘‘°­Z£ÈÖê.ª?M¢¿�þxˆ "àX]š…M–W²wì‚'Jzh„Ñ‘ ý1? 6f§J~k�ͽ*ÕÜwq‹ þÌ43Ã)Ò± ¯‚,Ž�¥5(l¯²¾[¡Ò6î¸þQ&�=‡Ÿ¤e�cõгøh©F­s·ùc—ï*ŽãP*•ùð£O8zô0ãcضÅâ�eTU}¨²žñ³é5*d/_¦#¿ÄÂÑSœ¨¶i©kl5Œût`"(FNqòä!æ†ļŠÔ£¸œàü'Ÿsu½DË'1uŽ?ùQ”Õö*µ–JM7Aðà‹ sòÇ?åû¾«¼ÝlP+5)™ È~¼§yéGG ­êèåkÅG´×l�^c�µóïðÑÄ é“CŒ��0³²ÂZ»³ß6)LfúG�åÈô ™�Œcƒ(è4²+ܸ|‘‹‹l–µ/P �žaîØqN.L0Wp,“nî>«IÑ0tîOxu|“7²;TJ_ŠŸ GܿãAn«‚î�‘\x�—Ï’ô�àØ8‚ˆ( Hz™ÕÌ­ÐñT‚t؇×##{$Ìâ}ÞwøèÚÛ5ý@œ�# Í�àøÉÃK‘ðJ8ˆ(b�òZŠÏ?ýœË«{:¢ì#:ûÏŸc,¦ ca#"H2I£¸š&þÑy.­ì’»íÙ�žÀÏ`8àè**K\^oPûêpÁÅÅå;Žã8¬¬¬" ‚ püØff¦±lÇ�¥åÚíöËyBÄì^�úÖg¼Þ öã9ŽUi7T/çhÞCýÉ‹·ÿ8/þôŠtv7¸ºU¦N„Áù£ÌŸú!/:V§ÅG¥6µ­ªÓGz0J膂X7±e?ÞPSqðÊR¡Q¯@ÉQñ%¤˜T *Uík«X WX¾´Cu<ÎBœ�‘(ÊZojŽ3/¿Ì™É(žÚ›—wȶE¢£sL��å\,@XÖ©¿»FÅPbc,<÷}^<=AºS`çÆ¶*=,O¿Q¤¦j˜Nàê( yü„'îSh­\bm·HÅðL 2}h†“¯Ì@§Hvk‹õ+Ušv€ðà,GgŸá…j4ZmŠõ¼ýGyþÇ?àh?¹M®].P±Bû÷æØK¼ 8Ý••6Žè!�g /‚X^a}s—\¤@œÁ™Y&�¼È v«S£¸|«úµÙ]¾ÌÒJ–Ú�å§åkÔ5×êsqùcÅq––W0LY–8qü ‡æÁq°m›k×Ñuý¾e<1âξ{ë£à­Ñÿ‘WOžbád›b¶Ìå»/"ûcŒ¼ô* }Pyï—¼þî.– }ˆïnò7ÿóŸqjnœ±Ým.g+tÊëäìãLŒ¥‰D6Q²] o_r‚A dâ Ä‚¤B«ªƒì 00—FQ²dkmÊíßÇ’pЊ»4´)ÌL€@<‚WÈ£ >2ϾÌáÑžÍwxï�×ùÍbkßfQúxæ/þ;~tfžÉ#MN\ßâõ‚ (¤Ž>Ç¡™qRÕëœÿíá?_¨Ýý*H|­zB�•OÞå­‹kluäè™gÿ{þן a\ø ¿{û2nwq/žè$�ÿøïxap†tß*q¹@Ç‘”0Ã/üˆ…/­Ï~Ûo}ÌgGPßÛä¯þögœ™c|oƒðÚ2Í/ÎßdëÊ'¼ùöyn´½H}çø·ÿþŽO 3¼ÕOpe�îÇ·È®^ã³÷®‘u£=]\žÇa}}­« 84?Ïáà ´U•V«ÍêÚÚ}ÿ„%¹Û`U¹öæÛ\[¯ãŸžçÌKGð€xgPƒàÅìçÔ¡ cƒÝZ‹º � û vj&MO?¡H‚˜Ð¡×Êq­à ÅƉ…#„dO0D|¬Ÿ€Y£m „"ÄS$Á‹×Ÿ`~HÆ[_£ÜlÐxø¹Ô»·Îèbض¤ J Š(#zúX˜‰•wXÝÜäò¦ú¥³Î¨°üù*Û›*áX‚Ù™2È)&ÇcôGÊìeWøh©ñ­¦}XšJss™²i"ÇxùŒŽ�¥•XÉj¨fˆ°ÏOÄ+€àAö÷sb6DØÞ&WoP±üD¢¢‘ a±D¶¡S“R"iâÊ}/Vu…•R‡ŠÇŠ‘¾Åƺ¸¸<$­K¯ÝAw�¼ødÉÔ0Mý+Ñ­Ž¡aX:¶,¡ødØo·,¢Ø:–ÙC¿—ö9û®ø½2áLAÅ[Ks° ÇáÀBÿòÞˆV÷àÞto¿7Ëuò¨äÖ 4èM6Ñ- A�ž4w…‹‹ËAáìÙÓœ»Vøjb¿cÒm·hê€ç~çu¾,þ–Ó;öþ‡‚àæú¹¸}ü ½DxÞÊ“íAê•)l.òÚ{9z¢„[ªëôèuK\^íЧ823Îüh¯$"Š·ü ·ºè,°Ê,¯Ô¨Y#L:ÂÉi/Va‰µ–M¯¹ÍV©M'>ÁÜÉ£�ô¨^¹N¥ÓûJòöÝ@¼ýü²/Llø0ßÿ×Í C!Â…K¬¬¯r½j&ŽQàúJƒº1Âôø'&cxDQ”�|ýÌŸšatÌO«Zayµ†…F™��5ÍÀà,ç%ðŠ"Ò-ç³§QÝ(cQ&'úL‡Ê‘¤ßÓz?³WäÚZ‡–3Îüԇǣ¸7�tÛ¢Sí`›!Rá©°rKÙ®èâòLj$Iœ–`"&XUY¿¾MÃËi“Ý,SCé!W·øørõ¡rÆ”@”ás«³&š£à FI¤Rd2I"AâÞ‡üËëŸññ�]g¿}Ø=ò¾ÁÕ¡Wyvæ9^ø‹QÆOí°Ó‰�Ï11”ÄW¹Äå«ç¹X¹Ù�ü矰Ô$sf�SÞÇÀñ6Jz¢Ÿ W¥¼³ÊgŸîQ»ñ×_þsŽù)?NÌ3·“§Øq¼qf½D¾•á��Õk²ñÖkÜx…“³/ñþæwvÙ.w0D/ádkõS¯]åbùQvl³Kiq�æ±#Œ?÷"¯dÆ™ØS1iá*ÿüÚ»•î²ø¹‹‹Ë7�ã8T«5ÔŽÊòJƒ?ü˜Ï.|þµÊzÂÅ0»¨•M>|ã 3?›'sËWŽ©ÑË_äÍr¨œ8ÂÂD†¡Cý Y&¶`cvlnJ_™§2J+¬3:!¤–Y\«xÌLZÙ-Jå1š!Œâ" :]ó~Òç`=ôž†áM�{†S†ƒ�€àØXºJ+¿ÄúÚ 7V×YÛ)Q혷ˆ©�^[â“×d:åc›aøpš!§Kuõ}>½t‘‹7r4Ì/ÏiÔ×¹ò¾ˆÞªqòðã3'ILZ8Ž…ÑÚäZeÑêÒ«\çõ_Féž=Êüà(sé¦LDÑnRÝËS®µÒ²}lƒ^ñ2ïþÚ¦~â(‡§˜O3ðŽi²½÷Õ{ó°8¦Fwó=ÞùTÆ81ÁðÄQÎ ë˜†Šº¹ŽOžp·†‹‹Ë£bÛ6›[ü?ÿïÁ²,*•*Ýn÷Á?¼ �Yüz…ë\ý°NÍÓ$_1ï²ß�½?·wõm^W‰övÙÞ무bƒQgwé"½V‘ìjšTÄ�W°è© JÛyrwDZ8½+çßÅÈGð¶r¬•ô/ÄȨ­³ø©‰¾çél°«9˜JrЫ›¬_x�¿/‡o‹Û°-½Û¦Y«R.䨫vÑïÜ® ÀR)m^çb§Fi»ŸL<ˆWKkPÉí°³W¦Ô¼cMQK¥š]áj·Amo��dŸ‚cÒS+äw ´- Ǭ±sõS>hçÙê‹ñËH€ƒ…Ñí ÖóììÔèØ¶Z¡pþ7ür× ¿]¡v³áv£½Å¿þ5‹Ý Ör7#7K£±øo´̽-ö¾ÈqÀh°·r…^»Bn=M:øâÞè�&å�,ٶ;%סzù5^+�º™¥tkÔ&å‹ïðn^Æ.lS±ÇÂVw¸þÙ{t «ôÇø$ÛèÒ*îRjîâf..„´ÛmVV¼|ÙƒŽ?â$âQDQĶÝ}v\\\\\þ8˲©5š®gÈÅÅÅÅåéÃ?—§Wü\\\\\ž:\ñsqqqqyêpÅÏÅÅÅÅå©Ã?—§Wü\\\\\ž:\ñsqqqqyêpÅÏÅÅÅÅå©ã®Ë›9ŽƒeY8î1.....ßAA@–ï½YÚ=×öIr C—ï‚ ŠöWŒî!~ûÂ'!Šû»d»¸¸¸¸¸|×pnnwþbº¾O—?.\¿¦‹‹‹‹ËS‡+~.....O®ø¹¸¸¸¸îz¹¸ü~²ßÃi‹ŠÖ¦ÛéÒ{‚ÕO�ø‰ˆž±téD”HÀ‹GÀ20´6�j™B±N«gò]ë§Ù‡7=Ë‘‘Buƒ�|™ü#™Z"žhšôØ8ãÁ.ÙëKäÛ‘‘9ï,§• äåËd;6¦%àMÒߟ !¶ÙZÜ a�ýem�<Â#sLO©´>öáùÎo)˜"‘e6-ÒX½Âz½Gç©éÀe¢‡MP9 Ù]²ª}×#É‹çàÞK�mv º‰!&Ÿý!¯Îun/Siª´xÙm ÓÐéi]:�.š žH’h@Äê´iµ:�ôH ¢‚Œk´ ñ›XZ�P¼~ü?~¯òEýËÀèí×½«1èÿ*O†ø‰ Þ`‚¾‘IŽãðÔ ™˜Ÿ,âX:z»Bný:/-²¼Y ÔìÒ»{_óD"xÂ&Ì_þÅ(Þÿ•_½õ)ÅU•[› È>|^½«ÝÑ>…Èð<'þ ~žÙãWÿÛ.mM³G·Ý¢‚†ÅÍ'M&:y‚Ó/žà˜°Âÿ·ºAÛ†{,lþu[„'1ÁÔ¹ŸóoÎ*,ý_›üÝuƒŽùº)_�I}…WŸ!•}�WaoY½Ë*¸’?Nß™¿à_ÿ †}éïùí;—¹b›ÝùR�ži»«çº|;2Þ@„X2Eº/I*į8޶‰¡µiVŠäv³d›ÁÁ)¦2Zv“ µCãq[m¢‚/%žJ‘N%HDö5«G·U£Z.S,Õ¨·»è�Øý<â' 3Œ{ž?ýÅK Øj‘½½=6ZB Nzp„ég'Y8>LJ¿y�·?¾ÁZÓüÎtŽi ò´ÍA"©Áˆ õ6kÌ—žfn¢�”SdûÚu–›·ÜIÑG0 ±pzEòmÍèP¹ô>o®_à‚·G!g ”¥‚øba<šˆ»'Ç7�häoìÒ˜M3ÙŸ`h2‰oY¥û•c<�8s'úñzK,f«ì•Ô´E>ùÏ{ì%Mò{uºúwåIvù.!ù’ ÍL3Ò!,½µRÝ‘}‚�±¸‰YË“mZÈ>?ŠÇF—ž„^CD ô16?ÅP2H½«R­u1Pð‡"cƒŒÇ“ô§ó¬\]fOµÉ|üâ'Ç?ö /þô,ÓJ�Ý·ÿž_}¼ÁVµKÏv@ôà g˜8÷§üâÙaN½ô=Û ñö¥ïˆ›Í±tÌÚ6uûÑ8þ`ŸP¹Å­à£ÿèYžyös�k\×¶Yù¼ù¥¸K‚þ}~ò[Ô{&º ŽÝ¦UWQ‡Ç=H{ÚÐr‹ì5ǘí'24É€g›uýŽƒ”�Ø'À_¿Án¥J±ë€­ÑkëluÀ²\ËÏå›F1ÀàÜ4Cé0µÈnv›�|“®eƒ#€ *d]ÇáÞ›¾~ãµS|x<Š­Óîwyþ%O„±CÓ $|�,»»l—ÚôlAôJ 1<<ÀH¬ŸÙ#=:—¶¨w-V³ø ø晘œgÁßB]z‡|w‘µ’ŠjÜì:¨jíí_Žþ%/ÍN13‘#·¶Í›]D£Ç82;ÆäP’x(€O°èVsì¬\gqu‡­r÷+!(â,_àÐX’€è`u*ä×Y\\áF®sðÿà!fg¦˜Mð+û£#«[£°yƒÅÅewZwk¦mbwŠÚ&é�P”�Ä—AJ’ÑÁ(ƒé ñnœ¡™ Á‹MTgßÎýQÁ1Ë [(Ð6,L$"Óg8rbžožó¿ü®5m¾4"Äû�ò‹ÿ�âÇöþœŸ‘»ÄµËWù¤¼ß&ˆ2õìOˆ{ËãA¶uzÍ<ëW>ãó•å¶Á£y”Ø S œžÍ�ˆ†(’è`vëTv7X¼¶…Ú7Çìä0ƒ‰AÅFWËÖ®ñá'˻֗ƒ9H 9à /c4"¨ˆˆV­Q`gõ¾A­wK��èÁÊ0sâ ¤Ã^¼’�ehtšU*¹UΟ_#ßèî_'ɇ/6ÌáSÇ94ž"îW ×¤¶·Æò•Ë\Üjq/£ÌédÙÈ7˜š˜a06Ì|ŸÂÆîí/²Œ™cTh­¬Sª4èØ"¾¾IÆÏ¼ÈŸLkœÿûßpe¯Fíæƒ#Ȉ�Nga*C:ìC2UÚ¥mV/}Æç[-Ú:'NqøÄ1NEë¬üöù hÒ±¼Ä'æ9ò½Óœ’¯óOÿð9»u ÝÁ›&=~œ?{uqñŸyíÂ.[[J޲pê‡F“D½ŽV£¼³ÂÒµë\Þnt(žø0Ã3ž$“ŒTÁ¤[Xäú•+|t­Ê�c—?0’‚g( h)äwÙÌÕhiæíï³®#‚sëSë'58I 6ˆéìï‡gV×XßkÒ²ý„bIÒ‰0¡À~¬€ 8j™J±Ä^ëa*'âMdè‹3ò\_*Òsnß8OP¼ø“c E}øºyv÷²l´{Ö-Ç4ŠYEDÏÑ!FEz%•ÖCzR³øyIŒŽ20’@jo±xþ2+…]ëÖ‹áàXji•+×™í;ÆÂP†ÉÉ$ïoî¢!;‰Y%ì^‡Žaƒì£ ÃÀЃýŸsñâe>ßj9*Pâ ÍãäÙã�áë©tL_*M_©Xßûs¡°?* L3}ô$Ï {°»-TÝ9@ph€�Á>RÑ>óC>Íé_É8U²U“N:F$"áȵ@@ŠO2 r, )Lhx’!ß ëšƒá€Œ 'ðé&å­2šia#¢Dû蟘e> ³éIà– 'ü9888X¶ƒuÛƒî!Þ—FT»hŽ„¤x OŒ2З (¿Á§7²ì´-0ÇÍ0xè4Ï�#¨5Ú=Kòáïëcdt„á±2½HŠ�ä : zøGÏ$‰¢òÏr䚢+ȈÞ(ƒIâ^É‘¼ RÃŒ ¤ˆK¿»X¤Ð6pÄÑ�IŽ>ÿ<§çFè󘺎åYF» IDATa H¾~†§Æq&|äW÷¨5»èbˆøÐ '^xŽ3³}̺! Åô fHÇñ½ör]Úw›ù·šìm(LŒ1•Œ3=�@ÉnK…@4Îàì~¡Æµ•"円‰€Ï!62ˑò¯{Xnœè'�åÄK/qz®�¸h`Ž£ohˆ¡Lÿkop~«N?¡è ‡2ø¯¿Æ…Z›Žeƒ$–áÈÉÃ.½y�rSC·@ Ĉ�æäÂ8ùµß¢8Ž!=>ÏÉçÏpj:�¿×F3%”D’ô@†þd ßos¡ÐC³Dü}L;ËssQzœgš›”juò­æÝ­Ù»" ùâ â~�}µ¢JËñšbfáGŽ¢e/qþê6;•†’ o|–Çæ9un›+ j­°uŒÖKmÖô¦¹eš™˜ãøÑÃ<{n›k›-ꪉdøðY¾ÿìaúK\¿¼Îv±IÛT Œ3{îGR½2’ à�3zä4ß{fßÎ%./n±×°‘bÃŒÏÏräè^ª/³ýÆ&ݺ~·²Ekw›B~‚îH”þÙqï)ÎþK ‰§˜õ@óK{ j îé^PÂ)2‡Îòò÷ðí\byiƒí²†èchægOœã¹Ú:ùæ"7êU¥2Ú±>&’ø»ˆš�ã� § )ÎÃQ/K�¦%à †‰&ñÙuvv[´º6ÞÔ“ÇžáÙ#ƒ(;—¹x}›‚ žä8S‡¦™=ú /ÖWXs‡¢ J(N4�$*7Xùø=®”44Än�R¾ãºß;"’ì%–ð!KjÍmUŽA»^&¿WA=ˆ’³4•Žn#E|øü’N5»MA51Ì�¶Ž�ò€² Yñ�y…6�fõ®®QCëЩ7ÐŒEðzêH|ÄO ñ+„•.½^ƒ|Û¾o¥ív‰¦ÖE•ÃÈÁ(!Ê_¼m*Ù.ð>û¥¾!ŽÿäOyù¹)Fç�qòÊ";¶à§þSI¼å«¼ùÏ¿åí¬†þO®e`£�T1çNqxð z‚�ØÈ8SG&é×wxë·¿æí-•ºnƒg“ݺAlôû}f�¾O ú¾ß�ÕØ!W̱md˜šc:zžVÍÄ´@ ¤H¤‡˜jt®_b§ÑE½ïdÄþÆÔ©#L*Þz÷uÞZÌ“ëX ÇHd;Äçÿ’£Gfè¿’ec¹B³ž§( 3;9BØ›§Ô2 ’$OÇÁ$Îh&Hh§ šL0"3ìÃÖn°QÕP /Éñi¦æFˆ«ë¼ùë_ñvV£c:àÝ¥ÐqˆþÙqfN"ýQžzçæ‹`Ðmå¸öÞ»|PµÑž† ßï ‚ˆ yù@t4:ºñˆ¹v&Z§I¥T¼#ÚSÄ€…©·)mo±Û½µ_�ü÷¬ây¢( "¢$"LË8Ž�ƒˆ(ʽ‚Ó¥£›è÷«¿e`ê*[ à  H’ÀCõY�wy3AB‘dLl£‡ñ —È6虺#!J  Jr´,‹WY]mˆ&˜›‹£ ()&†¢ „Û¨­93L*�&�N“ [è†FÑ"%†é¿éN¼W•Z9r• Ûš)ÒO\¾×ñj!G»«áI‰ö‡QÁ7ÈÂD�@k›ÒæV »ìáeäÄq¿‚,ˆÇ$Ãz§ÈvÃâ[Ë(0»èµ5n”MÚÞ4ˆà74n4k4r;ÔD�@*ˆG‘ö#Qí.µÆzÎÄ£Äý|·ºP Yñàõù E¢D#Wbu<�Qžðˆ€ˆ?•!54FLë°þé:uU¿ÿD¼"OrhL‚Æ*;])”دSÜOPn±U#V©m³hÚñ‡J!] ˆm7"Bzt޳ßù&¯NÇprË,Η©´%FjˆÑÃG8”Þ¾^ÓÑ4‰rmõ¨çB h^ ³<Ï[ïæ1½w˜T“ÛùÏ{êµò”òw¸Þœã ³§˜H­Qöb:P§yý ï1p{îçBYиÉ{ïæ©uöpRPM¨»«Q£rgƒæË‡™šN“*§Heô‹&ë×¹8Æ—_›d0™dÈ$=˜%l׸8_¥ëHd`û{àÖiå8w±€Ãƒkç!Ý:óU“®„Ø£¦áódQéÙ´L�±Ñ@€�í'å‚«\œn�Üê5Ñûn‡Rý¤’"^�ÜV[�Â¥[mÒv\<ái cb!ƒ�Ýr<0‚¡8Q¡V Ûû`ùñÐ¥Û$d›R®F¹(™Mf9|h€óçò´z80K¶/•MÊkZ�!´`Œ` ‚áz´›&R�rMLÇÅv-Z•u®�×Ùá ϵiÛ W=b5½¬ �nƒ|¾I­=Äxbœ¹‰&êp£ò.›å*KâÊ µµEîX³Œšb"8I*†låÙÚ¨?V ‹ÚöÔhèÚ#GõÐd¿®�¢âƒ–I©žç뎸¡©ÁNìï'Yx“Ÿ»Î­õ*M[žå`vŽ©í‹=Çu0 ‰¤ˆê‚:²Ið,lÇ¡ëºDÌóïž'gyor”K»ÞÅü°3·I­´Å�ù_8;Çá‰~*ÙY†G²DÚn\[¡æ>x¼ÒÆu¬ž§²j°|õKÅ6æcê¶Út=…×­ÓÌ/±Ü=Îô¾qJa²™(A³Àõ…¥ÀÕW�0<8ÈlfˆÔ �ÛXãÚ–ÕsšÒ,,ÇÁtmT;ÏÍ ïPòxàå¡Pҥݴ±¤î ¿§‰t-jU / ™Š’¨©Ù�vzÙñü|Œ7Ùã£\³A~ÝÜvõÒˆy!´�ŽaWÙZߢ«èilŽ�ãzàXÔ*&*"�ޝ·hÔ÷¿ ‰ïËV³ÒÀ²œÇvºz¡6µÕ;l®MÒyv�}§ŸãÄÆ›\[oа½íÉ ´@”Äð!ž=9ÍXÒ¦t}“ÛKÆ 4¡¡íV½DˆôèÙ�$¢“§°Ñó\TN�B­KÕN�$Éh-nåÌOÀSͦºY¢^™æ`v‚#Ïô�úÏ–(TZt%(»A«|‡Ëë6G9É’IBg³ÊJÑz ¡¤ðÏCÓÕÑÌÇQ‘Ÿ2ŒáHŠþ€‹›¿Áí…% &:Q-C_˽{–¡¼6ÍV›b7Â`f†Ù�‹Ô¶:4�m�*Ä}y•×¢Þl‘oˆd vYÌ·z/—n­Ìú�%ŠÏŸaúÈ!ZÌÒ? èæ7¸¶Üx¼ [¯K»Ý`£&˜K “ ¹ÜlU)vtñÞÝu‹N}�+ë63CsÌ�“Ž[¸å-óMºÆ-î4Op`r?GC}7i.,²ÒÞ¶f¸ ª�6¥Nˆépƒ�6KE“öž'øО~Òµiæ‹´²Ã¤ÒYúÛ]šf™j÷Á¬X= ˆ@!•Âs%Jº±�Wù£¾4îéÑÄÎÓ¢PÒÁlï¨n´±]阴[m:Æù9&­B�ÆÀ©¾A²m›¶]¦ÞÝm Ñ0"IÒýý ÷‡N“B±E×þ�ïË<ñ /Važå…,Wö½Âsû^æk¯t0.®°Zncz ô‘ÔS§¿ÈËû£„jW¹¼°Àõ܃‚ @,ÕÇÈä8£Á.Žì¥M;tr?SC:­�-n,7{ç„^�õ•<ëS<7p€ž_¡øÞMËÅUMמƒÝ¨PùXkrH:ùMª•:òÀ4“±8E~z«@¥aõn¬²é¶Ê\{?Ï¿1ÃÜL˜€¹Ì|=ÇZãq^γѦSs ŽõsààKKmÚž†.l¬®‰ù1Îè׆çà8]ÚR'’eh¨ISµ°<�p:A"¤!vš×¢\,±¼áräÀgOÏQ»’ëÅ ê1ú s_ûR¾ÀâªÉ‘ó¼xö(•À:ëU[*„¦£k¯V b>ºR†×©ÒX»Æ•ò)^˜=͉`U[dyc�…úc TÙ¡^-rk¾Î™/ìçäÉ#Te�@®…é*ÐtŒ€�W/Pï8½Ü¯ÊÁjW¹u5Oûkû8x(‚Q¾Ä­Ü:[©¯rk½ËÜì³é�­EnϯQßö®Ãk’Û,pgÃcÿÔ,/½ð •÷6É7m BÓфī)[ê ;Nø<.ʳ±Êkä«1‚2C )Z©�åõ`„ÐÐŒ!QV“JGa·M<7I$#�NÐnº(¡¡ccšÞ#´Áž¹És=”Ò‰D#D#AÚmûÑŽŒ~’kaVÖØ¨$1úé’(%Ø(o��f„ˆeFém^[¥ Ö«&Ý�àšþÄ…^�Õ«—@…Hüƒ×8væwøƒ“ … å–‹ˆ¤é!rñê·8÷ú;¼sñ•‡Ô´(£ÇÎò•‰ý]Ù¢`è›:Àh:ˆQ¼Ä囹PØÙùØ®]äV6Áø—N3û•Æsl‰¥\ƒ¶§J$1¬¿þ—üLJrVý=§[_§P+‘—ûÉDÀ-]åZ¡Mý®�U¸Ý&å+ÉÿÆW™‹iù<�Ü:åÇS!hçó”Ö x‡§9õŸÈ�-ZĈ±ÆÊÍ+¼~ãc�Ò¯eUi”W¹U;ËÀì·øVhŽÕÍ¥Ž‡‘È28DSrÛHkS[]bñ½+lͽÈô7þ)ß=¸ÀF©ƒêgplŒ©,hwŸ—ÚÊ< 2,Ì|™#/ÿÿäàÖóe*…‰ *?ù#þ¿…åGm€d—N}�·.Õx楆CPÜʳz³'h�v~�Åsopåðw8zú;üöþMrù…†ƒ FIeÓ4þö�øÛ›yVš=×lS|ÿ2ÅW¿Ä�¬Fw¡BþN�¶òP^ƒå›9šS™ 8tªEn,4vY8* ×¹�N³òÿÆ÷ø//±š¯R7ÁˆÅ «•Ÿü{þã²Mëñ>}ž(Ü*« k´IƲŒÍõ1:Ý¡Þì%Í×a¢ÑA·Fmåçï´1«UºÃQÒÙ&£ ’uOU›,.•h=ªWÏŪwð†’ô��#¥‡·Q ß~ ðKJ<ÏÃýÀÔ~å4X¿µD€Æ†?˜eÄîÒhvq Š'ˆu Ù¡Uɳpc�šõøÎ.ð4?@šyÖ®ü”?Î/qõùçyöЃSÌ�ë(פ[]àÚ­K¼sþóUj{ÙÔË-ê Ajö“A�pêän�ãÂ;¹pmí¾X-ÕYåÚ›?¡^,pæ…Sœœ9À¡!…&\¬v•ÍF‡º#øØ¥Ü*¹b�Õ‚Ë�¾.•Kï“o[÷}t»8åë\νÆ@,‚±U#¿Z{ì´Qnå6·/ëüeBç«ÏNsàØ0BšÔ×+¬¹ÚÇæÁùkE¶©¬ßàï¾ÿÔW^àØÔ>�΢¡�RâZUÊ+«TÚ¶ÙÝbõêëüû?jóå/=ÏáÑ™§U¥eYé 3­[xRö2WXE6®ŸãOþÏ*g^}�S³ÃLš`Fsq­ÕõVœÇµüH<³ÉÖùóäO½B:Te5¿Áõ�îG{vœ:µÕóüñ¿­sæÕ8}p’ÑÙa&4ÏíÒ.m°éªûwÒn·t…K[/‘�[”Š%·:½~•Kcñ:ùæ0“� ÕÜ·LÕoåY¾ø:V+sæå3œÚ?Á¾ì†ðpº Šw ,¸Â×ú>…x­-–¯·¨ 2<4@6'�M½’@v·I­Z&ßìíj¼æwÖ4<5Ìp&ÃPT¢¤C»¨!Ô£�ß”kÒÍϳ”:Àä`ŒH$²G¨”¤“[d¡¨±¤¼qNSH³ÀÊÍõÒ ƒC ¦ãd²ñÞXí.ír‰b¾@®X¥i~tË„8qâÕ—I¡iR>ÉhU�0ÂÄSiR‰(Ñ��¡ ”òðl“N«NµÖ¦{÷,p‡ ßú×|÷Å,‘•÷8ÿæE–Ý`Ï=]Út[ujµ&�öY:´ÁHœT&E*& mÛ¿]³Õ ^©Rµz^ˆÁÌ0Ùt”°Û¤²U vW SY2Ù4IÕ"wg‹¶ü0�LA0™%Ý×GÀÁ®®³Vu°ï{Ë Rãd£¢Y¦Z)S6ïoHdÉô¥Hé]ÊkÔî†AôP”Xª��tŒ By8f“zµN­ �ì8ãI�ÆVŽj³s/PYÄǦŒytK%*•æžÕ˜µP’Df€Ñ” ³µB®í`y#š"ÑŸe(âP^]§jmgZÂñ#c}„;9Vó-ÚÛu›´@”Hÿ(iEsk“J«K×„ŽŠÓ—Íôê;î„G(‰ô\»M¹P¡µSÏK3„“ôgÓ$" aÒãxîk/r¢ûŸùßþ�7¸ºV§«¶??%Õ—! 244Ñsð°»m¥"ÕîãfŠ×Á4ã}ÄÍr…r©ù°Ã  ‡ijCŒ%<Ê«T;ö®´haDzcJD zA»J¹¸–I£Tèµ÷îµGH�MÐS8Õ2•r�»›m#ÉÐh?©�C·Va«Øyø Rè¡ØÝu¢·ÉðìN‹z¹DÕ”H%$³d2)Rz‡òÚæ®gÎç©d'N6$è½S¡P.=·WÓϲ°ÜíT‹Á0ápˆPÀ@½° ÏîÐîÚxZ˜P$LXsèÖ›˜rÁ% BÑ(‘��°»˜f—îß«�†  …v�_Ý«GhÙXŽûØ‚OÏ“Të�§Iøýªì¿ ú�Ÿów?øéÝ />Ÿ´è Ùá ŽŒ˜]Û• ‰¤Gß?Ëѹ4Î[ÿŽ÷ŸWX­Z~.ŸÏ!»…ßSaöôñùû¢G3d§ŽòÜóYt%ñ\ šA0& \š7ßãÂ…uJ­½òtúøø|Þø ?…UÙ`ãN­P£õ«Ô³÷ùôãu1;rÕ8CéF@G(‡ni…;«‹Ü¼r•+ë�_!O©��Ïg‘Ï€ÙÓÇÇÇÇÇçÑì6{úQ«>>>>>Ÿ;|áçããããó¹Ã~>>>>>Ÿ;|áçããããó¹Ã~>>>>>Ÿ;|áçããããó¹Ã~>>>>>Ÿ;|áçããããó¹ã3�áÅç£"Œ¡ôãÙ ÝÜ•f»—HÚÇÇÇçs‚/ü>µhD²ãŒŒ0¨7Y¿9Ï–©£�@§è;ü^>,XûÅϹÚíÐýÈU›}|||>½zÑÀ§Bøi‘AÆ?Ï׿óÇú„Ü¥â óm")úç8öÚ>Ÿ8›óSÞxo‘µÎ§GüIÇ¡�ÏÑö†Îƈ¥ÂèÜ_T4Ø?ÃþÉ~2ªÂÆíyVÚ»¤•‹ÄNI°ŠäZ6¦Ý¦rñu~²r‰‹¡k6@ˆÅ‰¤“-í‘Õ—}|||>-!èïï#�2=5I("0xãÍ·>òg=yá§§?r‚/|å,‡S.µ‹ÿ‰Ÿ_ºÃj¹M×U ‡‰¤‡™>õ_>¶�g_maK—Ö/—©~Jœ4”gãTÖ¨{GJeˆÆb„E…Ö]ùbðèsœ>}€ýæmnÚ›¬^kÝÓ �±hŒ¡ˆ�*¯Q5]l¥ð:UÊVƒ†&±Ü{¦M!B_òùøø|†�RrõÚu&'&…CŒ��ñêË/�‚w.¼‹mÛ�ýYO\ø…f™9p„ã WÏñ·¯_àÊZ�†µcÚh[Šu—pü›¼0uˆCŠäîlrnÓB!Ï1;5ÂØ@Šd4LÐ�X�¹Õ%–Wsäj{Tï6b$³c쟛aßHаžY£¼¾Ìòò*Ë%óîBû˜šgßpšD,LÈèIi6¨lÝaii…åüýÚÜ]¤‹lç)t<¦úú‰Ä“Äthí46ú˜˜bjj˜±Nkv�Èõ]ÕhZ(I4š!�ƒUØ¢éx¸J#6q„Ùƒû˜ –¸ñú[,¶Õ.óf˜dß,_üî?æ¤à–æY¼½ÀõVoNgüØ‹|qü8¦n K»]bcá:7WªÔºî§Ê¼ìããóÙF)EµZãÍ·ÞF)ÅɓǙ˜çµW_Æ“’«×®Ñl¶볞°ð ’šÜÇØä0‰î7ß;ÏÅå*mOí:SH§Mmå2.a²ïÆÇ˜›Épa3‡…Nbú'ÎäÈpCº¸R‚  YÔgÆ»ú>ï_»Íí|÷ž4 Läè霜c (q¥N æÌ8#™÷0Î_ávÕE¡=ÈáçNqv*F@ÚØž=D($1ËŒ¤cÞ¹Ìõ²óð4•‡²ÊlV:Ù ‰X‚tH�w Ð’“LôÅHꊓœšf(¸Äš ®=–&–è#j;ÔV‹t]‰Fxp3§^à¥av°A IDATèÍóo³ÒÙ-ü ¡$C“S$(–^¢²a î>†¦g‰�Ú¸ZC7,Jã}Ä~ñ6——ó>EæeŸÏ>J)îÜYA×4„€S'O2==Åk¯¼JqýæMêõÆ#?çÉ ?-ÊÀH†þ�f¾Ä�ëºRñ°o†, ·(cnšìÄq-‡%5ÂÙ1††2„º«,ߺÍrÃ@‚¡éi&'Nðl*Aʰ(ÿì&@ê›áÐsgyùÙQ"¥%®_Z¤`†HN`vv–g^jmrç­<¶Ò¥èì'¦Š,_¹ÌíªÁý3웞åØ�`s•…7 8ðÀ<”×`³`Ò�L“ŽÆÉÆunµ]:±ñ Æ œJ�¼£éŸá`ß/È\OL&‰e’èvƒÍÕ¶#Qè�X\›Ns“˯ŸcÃ…ÓÈSÈu‘Zf»�K§¼ÆÒÊ&¹¶B‹ö3<;Ç‘¯ñJ§@³Õ ¼Ò~Xcöñññy‚(¥X\ZÆó6Cê\�Šä�¡›ÊZóH–‘xŒl*€È{ ÂŒš ©±r³D¹ÛÇÙ3ܘMðNµFÇÓ‰eâij–SåNÑÂù°Eº‹M·•ãÆùw¸qŸ·§F8»3¦*7ÎýŒŸ]\`¥« �$6òÿâ¿ÎÜ¡)†o¯]mÓô=E}||ž2”RÜYYŶ2™4‡âÐÁ9êõ:Õj�…ÅŽþÉFxiAC#€ƒ´MìGYؤƒéxØÊ@AŒG8t¨î:×Þ›g~¾M,ÕÏáCdÙ7‘b,Y§Q[g©"‘J’J%IÛ4»-6ÍFÿ$ÃA>´ÙÜ`³Tb¥EO Óg€¾W{åÑÎåiwMBý1Òƒ @„F82'ÞZ¥´ü> ¹5¶´S§fHGz”t*JÒÅîY©{¸¿.K¤ÛÅ®Ìs½èÒ ‹&ˆù1€>>>ŸAž¬æ§<Oáb Bõ¢:ACöç>F6�N¹@­^Åž ’J`ˆN I:"ž"vø‹üþÀYî�Ô ‚‰4É”�ªF‰šù!ÒÏ3éZ6M×@„"„4> ¼@áTW©t�`÷¥ˆgûˆ-ÌÑãÌ&uÚWòÖ×ÈESÜÎë�>ÉtjžŠ�¢/c@ob—Ö(Ø<ƼE”Dºmª]…­EÐ�ºÆƒj¬���ÏGÁôÔ$¯¾ò23ûfÐu�›7oóÞÅˬol<òú'+ü¼.�ŽCÓ‰� ¥Ši,Zr�3¿Zl€d(JÌíÐìÔhÉÏÖF¹®ëàé!Œ ÑLš�¡kè^‡n=ÏÚZ�ûÝTÖ›n#G~ÛéäC&�+%® ôU¥U'Çf½Cm2C4=Ì`ª‰yôý�*·6+ä*Mf…õÅ*Î�}šHr‡2±q³Mq#GKòkôÀT \l”ÐÐ4ág>÷ññyêB°f/œ}žãÇž! ³°°È/Þx“Ûóó˜�8ïƒ'-üd›R±Aµ*˜Ž÷37“á½Z™îžB-@fz†l:‰^_¤¶U¤õR@ÂŒ º+évl¤åYØ®‡ã¶håæ9ÿú ªö©$Ò5©› G=BÄ*PJðÈÀ:§ÆV¡M¥;ÀprŒÙ‘ÞÑ‚�7Y+U)u>>>O9B2™4_xñNž>>>ŸJ)Êå íN‡ÊíÛ¼qî-Þ}ïÒ¯ôYO^ø¡pZ[¬\þ9^Ûàè‰cÝ7ÄÀĆ %]œNž•‹7xÿòun.m‘o8{Xñ\ÚM‹¶eðð³L]XÔÖ~É{/òî•U»¼½æ ×Ïý«^æôÉÃ=ÂÑ„‡k¶(.l²¢‚�ÙbèTÉk¬•<ö¥MjWÞg«e²»Â‘r»ØÅk\)¼@_,Œž«QX«`=fne�ù+aþSú ¼tdŠÃ'GQÒ¡�ëP^4öÅðñññyÊ‘R²¼|‡ÿûß})=êõ®ûÑ+:ˆ'žQ}™š¦!å“Le¥¡cô �0Ø—" ÔEOøu›Ô+E¶rš¦û€÷e�‰oýk¾ûâñ­ë¼ÿî ¶´(aðº4+yr¹ÅZ÷á²>zˆh²ŸÁ‘A†2 B:hH\§K«R¤°¾ÉfÛ4"#³LޤH8eÖo/“»«©iD‡&™f€2óç©y ˜`x|œ‰°IwãW7»½$Þw …:|ŒÉtQ^ek}�µû<|áì$#cC  Ö®Ý"gí³ÕDSd†Ç˜N5šr0›% [¶ž<Âá‡Òü›¥:­í -DæÐIfÒ͵Ö7Ê´ý g>>>Ÿ4!ðoì6{~&4?éX˜�àãããããóăÜ}|||||>y|áçããããó¹Ã~>>>>>Ÿ;|áçããããó¹Ã~>>>>>Ÿ;öôöTJáº~ùnŸO'B ãƒKó|`¨ƒ¦õ*y‹GhõñññññyÊ„øàøõ=…Ÿ]hšà£Ö÷ñññññyÚùÐ w)~ pŸÏ¾Ã‹����Ïç_øùøøøø|î0þù(Fëã¯Xîãããããó!¥À��1†“#Ä£‘'=.Ÿ_+­N—ùÕõžÃK6"›I"ôމðñññññù4£<�’P̳ííé´›8!-|ÂCóñññññùõ ·Óv‡:(…RŸÎb¶>>>>>>�DÝól1vÿLø/>>>>>ŸQv‹8ã¾ûšŸ����Ïg•½4?”BÉ'©ú)¤çÒît©u-:¶ÄQ hºA8$‹�êµÏKÊ5…ÙjRn;¸�0ÙLŒØ#§®°;ªm“¦ 04�$&~]�=Sy·Ó¡Ú¶hÙÞÝ{&t�H0D2Þ»g¡ÏÍ=óññyjÙÛì©îûÅ'Šò°m�ºeÐNBNõcDÂèºÒC¸mT³H«]#$OjœŸ8§ÿ˜Š¢yUÜZî1n‘ÀMïG�e0ô&Ni ¥~1œ éI,Ë£�ÅÀˆFÐ ”‡p:¨v³S!âÚ?7÷ÌÇÇçiEí©ùñ¤^Ž+hŠ>j£‡™¡¹}$ÓQ‚ÛÂOÚu:¹›Ô.üm+‡²Ü'0Î'Aíà7:9Ž^>GçG?D=rêÄä‹dNŸ!¼Fýûî¯c_£pEˆFl ïÔ×8z�TŒ .Àó�vƒNñ�ó?BßÜDY~‰,Ÿ'Íj~O@øII›ÚÓ_bèw¿ËP¬í2·„×2ÁH R£Ä'ÎɽƒS/à™rgÐxR⩉.š@Æv>%%®Tô¬»j{ze›tMC×î¯aq¯}¯å£Úo_…ç)<¥îŽ !Ðu cO˟“½?J)ân)Ž€"чžH êà868½«„¦ch}¯ÏŒ¦ÐR4OàÚ6¦Û¼ºvÿÚH)ñ¶ç¨¶ç¦iC�¨ç¡á&§1Ÿýo9øBÝÞBæïàÕ[ "ˆäñ‘ƒ„S?ÇÍK¼ûž-…Üžóî~÷¼jg|<´>Wš†¡‰L» דxJ i��s¯„×CsV WÊ]}CïÓê�ZŸ§Ž½Ïüx"ùÍ'Š:ú ±/ÿ.C±:òÒÿ…}á*^­MOJ ÐDX[(ËÜöÍñp‹|¥N®iÓv%J3ˆD¢dÓ &¢÷b…çØ´š VêmÛÅòB' “ͤ™Lëm§}£Á�ºEǹ¿}0¦ÿ¾öÛK¨$ʳȗêäšMG"5�p8Â@_šñ˜Ah×K³×Þ¦Xn°Õ4i:®Ò0Aâ‰4sÙšR(�f‹Å…5*VïZ#ÞÇt_Œñ¸ñÐK¿wƒ¶e²º´FÙO�I2’I²?@S <›r­I®Ñ¥f¹¸hÁ0ý©$ãɱ€¶·p”HÈìgè…,ºû.æ�þoiœ�¯A(ްê(×»ûl)¥À³(Tä& ÛÃÁP„�¾ãñCC �®K·Ýb½Þ¥fÚ˜®ÂC !bñ“ªÂr ‚™>ÆÓ1ƒ÷«œ6«ù9Ó žNq$Bð,*µ&¹z—Šéâ �‘ͤK„H{}+)±;-Ö몛Ž+q•@háDGÃ$šŸ×ÇçÓÄ.wOó{"Þž 3ýÁñÓ¤bEäü°~y¯Öw÷X,p,”r¶s<:¶FÁ›F|ù«8°�p,„°ËØ›—©½ÿ·W›L%D �†@FÇSßatn?‘¾~ŒpMå´pK·¨_ø+¶ò&ↆŒŽ#¦žeì`¯} @ì´/Þ¤þî_±•·¶Û‹Þ¹¥­ôW¾ÇÌÁýDRQ„]ÇÉ]¥zþGlV= Aìn{ÅV³Îþ>S‡æˆfèÂB67°Fh¡°­è ’>ñ�9ñ?}ñµ¿F»ù>äšìYäö_šÈØWxæ<Œ+·÷6ùsˆ[çwÊxžËf3ƒwü;Œy†itÕÅ«ÍS¿ô·l-—Èx}a�=óþ´p†áAñ2¥Bž@³Kt·FäXÛ¦ôÉ'q]—õÖ <ÿ�˜<|ˆX_áµðŠ7©žÿkr%“>¥H2؇—}™ôÁg& £éª½Ž·úºþ5ú&�«?B›¿‚tåݾÝài†¾û*ÃÙ&�…Ÿ¡_ÛDI‹ÍVçÈo2ôÌqf‡úб�Õjþ†ÊV ÇRôJ‹`>Gâ•£dGÇ %£èºBÙU¼¥¿$pm:¶Ÿ×ÇçSÅy{~âßärbŽàäFwëêyÜr£§¦Ü‡iÝýÇ‹àô&rö[ôÏí#¦5Б˜Á˜"24Cø—ÿ�ÎFÝ“„…€è�_&szÝ,¢Y&‚ ¤²0>Eth”ÒOþ‹x®€Ø0�_êµïÞß^�M£ø“ïC±ŒçI” cE¦ õ÷è?0F\ëb8.DÆPCD†Ç(þäOP•ZÏÄé…°"¾ø]úÎ�ˆ8Ná(cw$Œ³DϬ§šg´[D¶M¶Òµp<¯÷Y¬ÕŽó’P»EH±­I™¸ÒÖ]9ŒñÕïÒø‰=!£¨Á)"û¿ûX‹ ´[‰½Ôé \]êˆô!þ’B·ƒîi¤ÂAâ ÷¾qy2@W›$ô›ÿ�ô¡iA‡€ã€6CS„G)ýìÏ!·…ë�ˆ¢úM†ž›$ èVái¨pÓ°Ú "ãÓê—±r7pËöö­°’G‰Mž ¾ŽçšØRеG1^ýRÏ&™ÐÙ]PI8øEÂ}CTÞþ!jé6Ž F(�˜û&ÙÓûF,t«‰æz(-†ŒëXÔCkïããó4#ö~wÿúGÃêCïYÙÂZ- yòÃí8‰Ô¡¯0xú(±â9¼…[8uBChãljͼF$\eý‡?Æ«ÖPJëi*©A"I—öû?‡|áˆøÚä)"ǾÈ@é]:ç[xE}WûÖ¥Ÿ! ÅíöãhS½öƒ¥ótÎwðŠmddgæk ¿t’ð�Ÿâ-Þ¦[ëBxmúY"'¿Â`é2íw¯à–;¨ÈÎÌ×zé⥷Q×oà”«àj +0 `ïxª´qË×é¼ó:Ao{ڛȺ¹‡'ËοMdk™öùt·oz·„¬wðiºß ÿÅ—ˆ›7 Wqs%1DöÁc/0x¦IѶqnΣÔç[n«¨å2jÿ3$Ÿý-ÜÈeÚËTËEê5“x¤' Ñ»Þ õcŽƒ�Ÿ%R<�º}�n© �Ääó„O¿Â@õ:§‰›ï0¢èýÓÄú {áMÜõ5„ Bš¨Î&ʾ†g�èÇíO`KÛçªkt†XÜ@T˸Å&R‹Ðžüé3gˆyËpó2Ý\Emì ÁS'é;¾JÇ,â¬ÔеZß ÑþÎÒÛX‹7к=§Ñ΃é<9ïhŸ¿7x{~Â_f-† `„Ú(«„Óv ÉGˆ`B�Â8tŒ¤\Æüå÷qÊ(Ó-†Ø(`„ÿK"G~‹ø{ï!: ”){/*%�Ý…·Ñ;ª÷âÝìàÎÎ90‡5¿ŒWìl¿Ø< Ž9ÿ6ÚêÆvûAD®‹{à ѹ9ÌùedÑBõO#N>OJ,Q8÷´6ðº}è-ž¡ï™c˜Ëk¨²�ê߇8þ™àæ¥?ù±ŒlÚL6²½]¼æ:öÒE4çQ‹ºsæg#­üÝkîm( TfõüWIÅšx—þëòEdÅ€ðUôÀáãÏ�\ÀÚXF6œ‡Ï¶¼TæqÏ¿Ž«�"±ÿ+DÇŽÐ\¾HéÆûÔÖ6p;%¤+‰ë‚  ’cðÜk¤‚›T.ü�æµyܶ z±T%1sˆ¾¹#Ø«ËØù;€¼wÏæß†…E {{""á+8­W÷�Bv›¥¡T55€ŠÖQ«›¨¦‡ £Î|•D¢J÷ÜO¨¿óvÝ-×sÄGÿ�ÌÄ,¡­›´V*=K5ì•÷pÞ?OÀô“@øø|šâÞ6þ>oÏO>ÔAGÓ54œžIΓ%µ��,úˆ…*ŸÇž/ôÜèà5Qå%ÜË×q¿BrßVaÙ5wyëq7�©R œ:ª~«á¾qD8ÆÎFàÞ^@îj_CÖæ±ŠÎL B1Ð-Œô ñ)š7É× ê¢/ÀpØuAjèz$ާ·Ñ3Ħ5¨ŸÃ^Ú@¶Ì¤¾v�—(ùʆ¼ÿcv®Ùù¡ˆ Å†ˆŒ¡™o`­®àU;Û‡‚˜¸—.âN}‘ÈÐÆp»^ÚsC¢:[pýÿ¡S¾MàØìŸ%}ìÛdޝv•õŸÊ¸i#Š$1Ft(Õ¡¬úp#š[Ç®+’ûÐb4mùþ{¶-Ôï>£Ês¹Ù@e§PéI¤~ ÏÕ‘b‚èpŒ€u U\AYDz˜Ä¡ºw™jÝbËÍàD4Puúš.Ñ‘1ôÄ`ïlOíl˜vú–~î[ŸO9j×6þ¾3¿OüCyàIA¤Æô‘½Ll»/Ñ“á8A½ÕE\G¢É{îñÊjâÕ±x™È`'ÄSÝû^¤w…�”‹t:x…Œ�fÐ~»úÜÉ{ºÝ^9¼¨�8B3@�¢‡’âIˆýŽþá·wi!4„BÄ Ø¡8*œ$²`ó6Ò²QÞƒaêî8Ôö Ô²ðƒIí~g£v¯�F„2D£QœÇë¶�Þ½ 0Ê󠺀íœ!œŽa¤cXªôA�g¢¶ÎaçßÁ~s}ü4�ã¯<ñSÿì8ñüϘ׮b™B¡4áXb¿ÉÁñµûÂ@ A4#:x»­;¡#»6$x äâÔÄBÑa¢©N9€•8C$Ž–ÛÀÙÊ! @°ŸHT ¯1ýÝ—™ú=¹«oFM+`aBFÏÑx÷ó¢äø~øøø|Ììç÷$‚ܽ¢m#ìÊ@èÇì?w!‰’–T„”Üõò–HÇEW€&zg];ZÛj÷Ï<”ò¶]5îîò¹¿½Ú«½Øi ^ jçh]ÚD7÷0ªÞê¸q: ¤ƒ%%º’{xUªm±°- KóÛýJWH%ï q×úõúvq¤‡T÷¼$é8¥èÔ�PòÃßûJ‚t¡µ…»ôSdåÎê× }ó%RgÎB³Š3ï eCíí+kÐ4÷˜swyIOóÝîB±ëì !w§¹c ŸðþŠ•ÎÑÓ Dk¨Ò^¥* ô6U¢~�î­%¼bk·Í›Þæ<Ø»¾ Ûá&¾æçãóéF‰Ðü”ü„¿Üª …TÁĉýäÞ-ÐÐ=@®p•@s;ËFƇ©Y銀è9uØZ�®1̰Ùl£,g{ÿV^É�ùj wizÛ¿RÞ¯uìnÿ  UZàtÁñ€¥«oi¶‰<ì%‚ê¶PÒ@sºàPÉQîûD=�°Ø­õn›={R©À‘’Ð#o‘Ùs’OR í سÀnƒ¥A|„– \�Øv€·’º>B¿A×Duº ÷~R)É®€o ºžíá:Iº_x�Lÿ4�dÉÊé l4¨Üú%F®Lä¡`ze¶QŽw¿éY©Þ}zðmÞÂÍ1‡Ñ&Na½“Ðá!´ÎëxÅ dÛE)á¶ÁhQ_¾„{k•øC�êÊî ‰2î׺‘ò�¾¶ãay€® ì²W¸®Ät%®¦“ ÞèIË–˜B'ì%?ðæ}|>ö>óã“wxQ&lÞÄÛš#pl‚Äé¯QÚø¥­ ºëm{ *¤‡ "¨HQ#^¯¢š1DúÁþ¿£œka¸=ó©›À8p„ èàn•�­î]�a·Àº§ù=àèsWË㾟íÝ~ûlÐm¢ÚTM‡ôzðT+›ÔL�€è]ïI… 74‚zÕª jDæy}oP¯6hÚ†èuç)�d$@À²Ñ�0Žt(u$šR¸èD:ÑÀÃ/páØ=Ç=†'\ª] žB"Z$ÚEŒ¼'ô½M}m‹vËÅ:®žBž>Ž Öªx¥ÆÞÏ…ØÊž‡j»¶³Ížâ<2€ÒzÞž®l£ºeTYBf=èQ¯ç¨µ]ÚöužB ‰!Mßã¾ìá”eðÖVñ&&Ї_$y(MlÔ@]»ŽW,ô™0Á, Šd'ÐCõNžFÝ!¸½É’R‚ ЉjÚÃý<зRÐŽ Ñц×@Ø1íÞï:Á ÍXáUÑ,›˜¶mZV`iqª© J–Ðl›˜R{h¡>>>7’Ûó“>ÔðP¥+8Ë£hãß 8ûmF_n³rñ�jÍóe„ñ¢ý­ÛÈv™_F®TÏœ`èìËÜyo�VÃc€àìY2ÇGѪïá®l![&Ji÷›1Ù1c)zÎ,{¼è>°ýƒë¤@¶�•5¼Å-ä Ï�=ù]ù>­| ÍSa AŒî&×FÉ&²²ºÝþ8ÙS/±¦®Ò.ÖÑdO5WšE¸Û"P+AçzrœÐÌA «MA”h¡;mBŽý€éÐE4kˆº‰6:BìÀ!òwxžŽQ¯C´µ�wí&Þk‡I9K·Õ�*QTúÙ3‡ h+x˸¥ÖÞÏ…–@%FQ# ÌR˶za*è¨È0bê ñ¤�V]ƒfávPõ ¼[w�/ΑyæE:V€úzÍ•MGBèfŽ cöa?¸Î{Ý+,ؼ…·uˆÐsG8›%,a.¯àV½ÔtÊ‚îòúm¼çH8K§aRZÌc9.Bl÷m—1œVOËÀÙF=pß•1 s/Î¥+8×oÜ­Š¢ôÄä)‚“#„[W±/^Dnkãhi:Šqè¢îUœK—ðZíž™ÞÇÇçã {{öî­7zN#_þ ‰3ÿ’c§Š´ yºõ.ž!˜"1Ú‡úå¿¡ûö»Ø[ïã\íØü}â/ÿ÷Ü•F¹ƒŒ�!ê®ã^ø±7 x–‡R=ujGã²µu‚ IDATw½9·Í˜Üûw_ºŠ�J¨Ýí{^€;Í…¤…,-à¾ûWØû¾Gää?gvf™V~ƒvÆ`‚p6ƒøÙ¿A.­£:6ª´€{ñGØû¿GôÙÿŠûiæ6é´%"d ÜÄúË¿†­ÛxùY"'Ž1ô{HàæN(KT�G]~÷æú瀊+x›«h³Gúî‡qí BbméMìw7qßý¬™ÿšðÜï29v†l!GÇK�>L"ØF^ý1�¥¸-wïsÆðѹï0ø;¯ w6iå t[R�ì!9Þ�aÕp®¼ƒ»¹�tmT}ç�¿Àžú¡Cÿˆ™É—hçWiV»¨@œð`?Ú¹‹š¿…lnŸ»îºg|À3ªê·p óîI"“ýPù^®ˆì8Ûc—(³„|çO±Çþ)¡}_abä…ejÅ&R‹èG¿ö§¨«o!«òþç宿¯o‘8Åðóß$|$…w+Mså²Ù;_±ƒôû‘— J“Ô/£ê^O8F&ùÿÙ»Ï'9�<Áïß||yÓ]í Ð ïéÍ 9œŽÙ›5ºÕÞjï"z£P(N¡ ½Ô?¡ŠP„â$E(nWºÓí®îÖÍììp,‡C G€@mоº|Õó<õ¸Ô‹nx�èù ’¬.“ÏóTåïÉÌ_ff÷¼ÎÐ?{K¦¹v•Èï"ýåËvï–ßÃÈöÜþ`dgŽðT•öâû8/üöþƒd&Ž“Ý­#“>ÒÝ ¹úKÂ¥uânÁÑå¤û›Ä¯þsìý˜p ¨’,¿�wòoñN_" ¯§ J4!°Lh¤…Ä—rg!‰��6@:öv‰Hàæóµ[Ÿ¿]ßþ|ˆƒ*ñÒOéþë8¯ü!öÁÃäÇu�›Ò'Á“; ØUâkÿD÷ÿÜÄyõ±¤päE-Øn¥,^QõWôOéóG8‡3üòadÔ"¾r_jÜÕ@dã}³7m“~ö8Ïî…¤C²¼EÿŠŽŒ{$ÍwqÿŸñ‹¿�sìir÷�—.²y–ð·‰÷Áy¢zûãW¼ó×IVßÂ'…½çÙÙir¦„à×H~…òoð.^%n{Û')l"7Aïßn½ô#ìÃÇÉîßMN�!ñ�Õ‹ôE„¿=¼‡†À¼åšy·\ƒÛD[Ä«KDs58f’œ{ƒ¸Ù$¹u�™Ø‡ÖïðþºMüÔ÷±O;5DÖ€(¼s’õWi{‘) ¥RCßœ”’xH·EÒïïD}ûù¹ZÊAè$2è"{M·Ë{ 03ˆüz:"©®m¿ÏN–&º�(O£Ù>²Q%q=0³ˆÜz:&©®’ôƒ[žï ¦Ð,Y¯’x;óäжÿ–+¡9×��1„I»Jr=çú1ë)D®¸}̺¾Ý”Ld¿MÒh"cÀÎÝžÛ¡Q«Ñìñg[¾R3SdFw1™i,¯Qoõè?†+a>ô–ŸUšbzÿS{©ša Ú}æÝ MGÓ@È„è^-7¡!tpëë¬7=ºh†…å¤ÉŠ”F§H[ 2‰ð«=­O…†nYè†Ëã¼ãÝCoùm“�:+üŽß\îí\ -5Âô±—øƒ?}�£Ï½Ê�“ T›.‘�i;¤ Ó0Ð $IèÓ÷\Ún´Ý:v*…ãØØ¦Ž†D&!}ÏÅõînökVš´cc[Û-OMl—-‰BßÃóúÑ=‚�Ð1L›T&EÊ2ÐÈ8"ì{xž�Þ|�0lÇÁ±MLC¿ùý]7Ú™{"›Â`…áÄ!�€Œú„^—F/ư „.ÐõSƒÛn4…�å¤H¥vŽY€Œ‚ícöï8fÍ"•N‘r,LCCH 2&ì÷ètûŸ¹[DQ¾öŒ ù|–�LBÐÞ¢j�1T$¿Ù¦Ñöé>Ð�@3,R™ Ù�×É( #ÂÛ~ƒ#�#ëhh¡K³õIA6Á«­³¾Þ¦~½Y¦™è™1Ž>½‡á�!J­.õz�æõ}Ë…†a˜†Ž®mß|Kaœ�ÜUèXvŠt6@$ e‚ ûx�DX6–¡!â�~?¼%»U ›¦©£%!¾¿ó7ÍÀ0t }ç³w‚j„aD”4c§ÎÜ)›Ø. I…!aô`½‚�Hð»·Ä«²¹r…·æ¾ÁáãÃì*¦8ãè4ÌIvyŽo=»�™ñ!Š) ]DôVNñþ›?ãßýl©Qö¾ð/=”CSe²"¤ß˜çì[¿àïÎquóÖ»�Üž—yå¹Cß3ÆP)GÆé¬_åÂÉ7yëÔG\\érg¢–°J í=Æ7^{‰Ž‘3$as…«§Ë[¿{Ÿw®¶Ùþ~ R£‡9ñô ž?²›©á2y  ùÑOøÉ?}ÀÙÀBÓgø£ý?ð‡;å 7Î3÷ÖäùÇ&£ßÿoø—ÏÛôÞù)oüô·œëܼäZz„Ù§_ॗŽsl×Y-ÆÛºÊ¹ß¾Á¯O]æ£uo磡åvñÔ·¿ÅKÏìa¦’Å–‘[cåìßóW?¹ÀåµÁ—tmåqfdÈe ¤ƒ.› KÌg‹ä§K”³šN“nïAzdlòå)N¼2uã‘pë2Wç¯1·áß84RûÙ5ba·9Ó^Ç}�Ú> ‰;«¬4¦ÉÚ)R–CÖ4wZÂÌS™šbbl��œƒ!#Â^�õ…+,l´iûñÁ%Çô¡LïüŸ zø«§ùÝ%kæ(3ãÌÆ5>:}…úõ(-,ŠSûØ5]&ï®ðÁ;s´ÐsFGG*’Ϥ°u€¿:Çå««¬öò#Sì/‘M;؆¶scßÇoWY[œçÊz—~,ï;>ÒÁÁÍÝ䀆38Áø�cžp·®p©Þײ³ÎVË'&"5Åkÿâyaÿ(I‡ÆÕó\ , cÓìõO© þ¿úíûüîRs§‚7ÈNíg÷®)*F—æÂ5æÜ¬<ÃøÖ32ú6'ßú ÿt¶~#(gœC/}ƒW^=ÆžlHãÂI>ò ãcTžz�ïæÈÿã?𓫃ìä~föïgw1¢·r�ù†Gl:ˆÍ:-7 ¶¤ìpéä‡löú‰$l¯±yµË�›´� ‡Å-'J¤gxù÷¿ÏKÇ&HÚ¬ž[¤¦™�fïkÿéôdß|—w×b´ô/ýÉó­½2îWÞÿ�F_ÃJ¥Éô·?óëŸ`¤(Ÿ…I®œ#›“ôÝ:Ëu—nw•îØ4¥�,ùvš�ÞÍßê§‹ ¼�Í:^²½ýjÔmPwïžøEô2^ßãõFý!t„YbæÈ>ÆÊfèÑÚh‹lq€á½)Lã#W·¨Þ–cÒªÖèô|B 2î4}‚Xbróýï]æ[Õ° ƒ”(X1a»JÃ��š�èzôC‰°R¤Š”²&Q·I݉0°R)Òùa&ög19Õj�ÎÝG÷ôH?Í)30<ÅñIMÔÙèôér»ÿ:e Ç[¼ÿÆ�9¹áщ"rñº¤“cèÙïòôÞ1r[g9}æ,ï/4q»8Å3¯—C{žåp­ÃÆÚ)>Úi9é–ƒm‡Ô—>ää›'¹ÐN@·ÈÎpìÏs`÷Q»V–~ÉéV÷gÿὌÉM>ú§_ó›K[¸±Ž=¸�§^:Á±©iŽ>µ‹·æ/Б;ŸáH¼­yÞûéÏ9U ‘šŽè7i¶|´i€™Ôùèä︰١³ÓíÙw]’Ûrb¯Í¡râÛ7гy�SïÀékmÜÄ$;zœ×¾‚©»Ù[]âíQnšƒ»)õÎðÁÛgx÷£-zñv—„UYköÕD\E¹a)åRdñðšuZýˆ(¬R팓)ÉäZd�îÍîÄOÑ÷Z¬/-шA"‘q@|Á·ŸBGØ%2¶Þ§x!h†Cf|7#å²¾ÂòÆ[½�XXعaf÷�P.St{4<÷–7ôim­³Vmã&€LH€0~ð…Än ’°×`u~‘u/¡Aìáû!ä44]C}6®Í³Úîã'ÝÎQafW‘¡Ñ"kí7îëÆý‘ ~F*ÇÀÌ!Ž:!±0°œ ù�1¦fgÙ— hϽǥ­­@î:!Žºl,\eq3 }ã‹f‘*pà™}Œ¦ê\ùè ï�:ÏÅzˆDm� ¼‡áW¦Ÿš`ïè.wÜ[*ú�^³ÊêÂóí�G—¶p�A²ß<ÄžÉÝ™:ÉÙ³-ÏäìÓ#:ÑêUΞ›c¡¶Ó)Ú’ä&'Ÿžfh÷.*æÜý¥^¯ÎÚü<ó�[CŒA ؾ7óiV7Y_kѾñ�Ðïüt„Ufß±YƲ]ÖÎÏñáÅy–Ú1Rhlµ .ŸØÇð샣£”ŒUa‘²Fâwël­­P»Ï;&Ey’™ùr á·h5ºRBÜ£^ë1œÍ“Éd)g š­û�~’8êãöºtîx‰Ðtt]Ûi'醆¦ihº�i™XÉv°Lâ˜$¹}|ÐÊ)–MôH 4ÓN‘Ê—ÎéÐÙ¤ÕêÐ�5ôTšÊh™¬h±Þ¨³UoÑ%ׇúäéLžT:�­¹ôo|FLß÷èu»ÜÞËûYWÍL�n³AÓ¿í,ìÜòK¤ qÛMZ­>^ h>}iR/3R(’²è"à~Ò‘à'°òŒ?ó*ß9�€fb9²‹>ÍKg™{û]®lõèÆPü¤·Ò,ÌÔû¦l‘…µ*+Íp§8�¤Ãµ‹óÔŽŽ0YÎ32–E¿ä~r+'¬³ty‘•™IîÍ3µ»€q¶Ch•Ê0˜$©ƒ{�óüìõC²(W²z =[¡lÃrô%¥F Í®03æ�±zØ¥& $°Ýol3˜¶Ñ,;S ¯‡¬{Ì/7Ÿb÷!—N”ea£F­V§Ñ ïëË£(O‹Ü@‘´•Ðo÷ht®ßÑÆ¸õ:½J†|:C±”ÆlµïÊx ÂÄNçÌïTþN>EÚ202eFÆŒ�9…n£N»ëÞ2F/pG͆ &šabÙ™ŒF¿Õ¤º²ÎV£‹/ RfŠ�¼ŽžHŒL�Ò�Cnç=@ÇÒ4„‘Â4,,�[‚ß# û=š¾`(“Æ4¶3]ïÇ#ü¶›½f¶HÉÚ®uã Gke“•…Ë\8wžs˶§¤|J‘5ÃÊ2à€Q¯âúþ‘-êlÑ |dÚ"•wÐáS¿¤Q§AÏíØébˆŒ YÛÄI•ÉL?Å·‡ŽÜ=صiu4íKÌ Ö44+KÁÖ0S£Ì)3¾ïÎÁiÀo³éEhDÝ«¼õ«s”_=Àþý/óúî#4®]äìg8{e•�†‡ÿ€ÙSŠòõ¦�™g°d“6ç—Û�Ö]ž¢½ºw_YYzºDÚÉbù�Z��A—®âaô]6ç.²r�&¤Lb¢Hr�¶Ø=Ê/Ib 蘺ྌILÒoÑô‚œN¯YcåÒ%¶îºë܈â›ÿ¶W¹rªÎÚåÓün÷a^øÁ÷ynß+<5½L³ÙájWµýšnQÀ²$½æÝ®w÷q=C.—!뤨T2Ìw»7æ-ßM’ÈíŠ[ˆ{ýÖ#B¿K½êÞóËg†É§Mì^“­ÍÍíD$2IHyïÑ6â6k¬\Y¢||šÂî] ùW 6[ô’˜$ð"Èj‚~¯C³Ö¹{Å)Id‚” #wÆ÷Êæ”È8A&CÓqLxSÇ­à÷EHúôÝ*篺Ø3Ëþ]YY©rzÝ'A£È¾§ö2T±h/4Y^îÜq]4tMøµãXË2¾ošÑ‰Q§ÊÒB‹�Q�k›=ª»†)Ophü.¶?Çu–ÄaD¿y†óŽ)øÔ8’ô«\^ñÙ·oŒÉá!¦®°¶ä~zY’�À <Ÿ~ba^xž§_)1˜uȘ�ä·VQ¾jBG·rŒ ØXñkk«¬U»w ¡g©Œ�39ž!58Hf©G'’\o›¡mw[²ýXÆÄ‘ÀÐ,²¶ÆæÝCR&Ä7Ö�Äñv�ÛžØ}B`½í]HÂÝÆ:sKe�•)áõ}¼zDºTÛ å|‘r>E«ÕÁíEs«.�2!êGHi‘² ,Cpû‚¦ �Û'ê l;E±`³â÷¹!”¯_ð#&ôê̽}Š…¡§˜8ðšc~t�‘]ûxæ[¯W–¨vú‰†á8èý6íÅK\¼¯Îÿ„~·Ks¥Nx¤Â¾çŸ¥QXc­ º�¸›|xÙ½Ç�V‚Œš\9užk•ÌΜàEi“¾²ÎV7 ÆÀΤ�µe6WWXê™QŽA÷=|¯O(Mœò8SÃ&†péôCüûûe)ÊןncfLiШÓn6h´ï±ÂŠÐrrC%F²TÒËøÝ„8ˆHB�åd© ÒY¯Óò‚žGàEùpÈ9Ç90ýßßG­åÒ—º©Ó_›c®yå>ƒŸÜ^*éò‡\8ò»¿È‹#-z¾D†Uš‹'¹:·ô1Ý }j¾ÍûC&ÚÑ=Lx‰×g:ÔÚ‘бl�Ö¹ßò~k�%ßÂÈNqô…ç¨è‘×'”V&ÇÀ@ŸêÂy.¬5©Ý™)¤(O$�n9dÊd´˜N£‹ç…÷î‘!žëÑî$Œ äpØð]¼^‡n»G˜NSŸÀë´pƒ˜~·A»‘¡—-S˜ØÍlÁ#"¬²¾ѽ-øI‚nƒæ–�áú0‰~GµVY©’�ÈS(—©´Û´«}z달d# #òƒ}ü &Ùi©ºË>QߥIdâÕÖ© MPÉWN(1RF™vããÖ©×Ò¤Ó£TJÌdK¸ý˜DèXŽƒ•ôñúÛçðaÝb?äà'Iüíúëý:ÍûÚ±Aû]ºµ ÖD�n(ïî”Ò¿Æ{?ù1­õœ8º—ÙÑ"'$X;ÏùÞæ�sK,×î5ÞÐܨ²¾ÙE¯T(¥A¶—¸zù4§Þ¿À‡ µÛÖö×™;õ&­­*ÏãØÌ(ùl�”ˆèwël5·Ø¸1gE¹ 𛛨í6î=~=Ò«²uõwü§Ÿ™|û™Y& i²™·Ðl@BÐÙ¢ºaãµÝ[2Y%Ò]äÔÏ}jëë?v€}ãerqëÔÛm�DȘ$î°²Ú¡0=@i°€NB´Ù<†Óo½Å×Z4Õ†›Št]Ãv$½^ƒÍ†‡Ûÿ¸›Ù„ ×¥S­ÑM9èiMóˆ»U¶65Ls„JJÇr{íL¿ÎÖ†!™Ê“¶tâ»1á];.$x Ìo|BQ“ˆ¨ß£Ó‰pƒøŽºQ‚ìÓXY£–‚¡´Ž�MaT=úA�k—#ÜÎÕÅŒ�å B¯�ܘsŸÄ�e®.ê„£”³6¦%H‚>Ý^D"%Ä.�õUâ $b0oc9&��=Ú½ÍzûF·qøø½Âïßs¡m‡„ÞöšÃýXÞ–"“ˆÐíÒÕ=‚(¾Ç¤÷&Ž?"Ë¥š¦‘$Oê�¾L¦þð¿çO_, ÏþœŸýÝ/ù ý¤žEQ”¯Mâ8¡Ñjæ©øŠ¢(ŠòØRÁOQEyâ| ^> Ä´.¾É›]¹¹ÀÚ}ïÆ¬(Š¢?!@Ó>¾}÷±SâXÍsSEQOÚ§l†zÏà'„À4 t]{·­WEQ”ûE÷^„ü'¹«ÖŸ¢(Šòu¤^EQ”'Ž ~Š¢(ÊG?EQ剣‚Ÿ¢(ŠòÄQÁOQEyâ¨à§(Š¢SãQh!!¹ÿ×?:ÁO˜˜™ 3'žáÄÁv�äÉ9" èw·X[œãÜ{ïsq¥‹Zj[Qå^tt;Cix”‘J‘bÆÆ24H"¢¾K·Ygcm�Z'„Ò#cC ›®œ¾D#â«>:ÖðaOåÉx+¬®,sµ>È`¤‹ ì;Æþ¢Oõ£�X®6éDŸþÊG"ø ³ÈàôAžÿÖKŸ,SNK"ÏÅíö‰5 §8Í¡ÁQÒ­ej-Ÿ­‡]`EQ”G�î�-16=Îp>EÊ”ÄaHÄH¡c¦Š er˜~ ×� í©B�¬ÐV™¥$  Û&k¦É4L´zÈ­[*+C&�"cÆxÍ��[Zw:†éPHpÄ IDAT(¦É¤úlHIrŸû1<üà'R”§÷sü›ßàÅCc¤6Îpîƒk\ÛlÑöcÍÂÉä(–òD«-:}µÓ„¢(Êm„AºXaxj’ñ�4Fo“õµ6í^Ÿ N�BÇ0mÇ&é1MCÓ5Ä—Ý—&44ÓÂa'·vLJb¯K  Ó±1p nü]ÃÎ082̰éÒ–]æê!áõ0 ttÃ&gK´ K? ï³ßó¡?=?ήýGyöà0…ö~ûëŸóës«ltBn´\…†ædqâA$ÈÒ ÃÎ186B¥˜!ejhq€ßmP«VY«»D·žab¦ ��0˜Oa-‰ ý6íÚ:ó+n4Â5›T®ÄÐH…ÁB Sƒ$pé6ªT«u¶ºágë¯VEù„U 48ÄØ@ ÓßbyažÅj7Ln©“°0’€8ÑH ¡iÇDZcH$Ȱ‡ÛíÒô4;C6mc[&†®¡!‘IDä·¨µâû ›ša“®Œ3b4©V[tÜÛ[v2èâG1‘acX–Á�àf‘É®PѺ¤½ K­Ñõ±=ÍİRd ‰ìtèG1ñãüt²ûÙ½{“r“•Ó?ç''—h…ò¶“ƒLH¼6.ð‰EVv�‘™#¼ð�g94Q¤àh‘Kwk‘¹3§øÍÉ ,7úø±4Ìì£ûžæµo=Ëþá4)C â¿1Ï™_°¶Ú!–�‹ÌÀ$3‡�ñÜ3‡Ù?šÃÂÕùóœyï=Þ9·LÕW-SEQ¾J»P¡T,�Kº47˜[mÂ7ãõ¹}DÍÀ²‹LîËܨs£Ö ëËK´ƒd;³~¢L1ë`éMH’ÐÅßüˆS½Î}?�f¥ÈNìaÆY 칸·? ‰G¯ÑÇÁ°R8:t¯?ÁH“M;äl ÖI ”H-vñȶƒ¹�Á‘v{„QÄýÖÀ9ø¥šap"C¯q…³'hGò¾ 'a•ÛÿÏ�û¿pÝuÖE‰Bi„™TÿÌ_òWs•¥ºOŒ†&$2îÓÀ¤räYö˜"·~Ž_þøoùÇ+¢D ÷ñüw¾Á+džØÿü>ÊNÑHBÖ”¢(O&Í&ek8FHù4¨÷)& ;l./Q‹ – eB’H„ Û·þ>µ•–Öj4Ã�Ç’ˆ0Ò0¿�ˆéw}Â>X†EÎÑ¡:©b'ÓkU©54¦g‹T 6U/Àïƒn™ØY ‰GË�ˆî·Ï“‡=É]X8–Ž£…Ä¡‡ÝÙLZŽ¡‘ 3SIû#~}ržk›MZ�.íÆ:ËW¯ðþ{+DÎ(û÷ 0P°ILG$¦�58FÉ’xôz]:Ý]ogÔÑ(³kW…‰¢‡ÛXâÒúθ¡�Ľ*›�qžôÈ4Cèj.†¢(_¡aè:12¾%ä¾H¤LˆÂˆ0Œ£ˆ(N¸-'…d'k4 ‚ $ˆ>i>�†aZض�c;8–…¥ „f`ZÛI7Žmc[ÆÎ\îÀõú!Â2HåìíîT-E±`“~s“Z³I+ÖÉUr¤lMX–I&-�Q�¶>@«ã!w{J¤”HBhhŸ'hYйÃiŸ`qžË[}ü™-1~·Áæâ2m9ÍÀx�lÆB«¶iT—9{ù#³Çyñõ4# K,..±´ºÉf;ØîÂ4‹TŠ)й,Æè>ž{½Ì‘WÞ ;:ÁpÊBï(Zýz_©¢(Ê—m{æúv•#¾ôÜÍO§g©L QÊ¥0ÙNx±ÓC/1:ÉîÝS\½|™KsW¸¸Ø$ÔmCÇÒ 'ÏàˆqG·¦Kw©Áz}W¢ÆüEùêȘ –DÒ@×-ƒ‡;î" ìTšL6ƒÝÀ4@hN*�0$1¡ÓÓ A/èã‰V:GÚh”ÉØT]Z— Ñ©my„»K2 lË!-"Âv‹~ü`ù"7øÅ=ê-�fÏb(]f÷HšÓÝÞÍ4×!câ$!’:¦acn»š†fX@Æ$‰D"‰:ë,¿ÿ�üßW'8pô(ÇŽìav×Ó¼<=ËÁñŸÓù÷o±BL$âþõùøé/çéÜ¡eLÔï±åÊìvPEùd€çGôCƒ¢™¢˜1XïG÷Õˆ¸þñE6ã.Õå%Ú›ºNŽÂîý첚l¬lPkûDR’D!¾¿ÓZ“>=/ šTì<Ç!Êc‹.5·GÛOˆE·ZÛœ¤PÌPˆt°Ó˜QD§Ñ#Lî?Ùvð“Õå-¶Öú<³k�#OOñÆâ%ýø¾o\n\³¨GÏsiÆ)²…q†ìèÆ7ç|hv†ôÀ%ÀÝìây·¤Û&!acž³¿šçÜÛCì}黼ö�ç8zð%¾9ú.ÿi³KÇ qeŠ0ô©Í_f¾ÿEžEQ”Ï* ×rñJ1Ãùƒ#ìf�~òI£/;CNÉvÃ@;ð‹®‘½v@�‘‰‘c’Dôè4ëlm¹Ü½€Y„ïúx=0ry*Å2¢lbt긽^u7¨úcLŠ„IlXȨM£?`£ã!ï‡�Ð[ú�ÅÅ9­žúþäÓŒå­;–Û`fÉÙ–&�‰D&M¤í�±Â¸ÅÆFƒ«k6éò¾÷ô ¥´±3pš¥<:ʼn—w“ÒšÌ]Þ¢ÞôïÙD–A�ÕkkÌ/ôÐ…C1­£Ç5Ö:ltÙÇ7—¿ ,'EQ”Ï/hnÐl7hy2#{94Y ciwŒÿ Ð,,C ‰í°8M³)¦õÏ�s!AJ�Mh˜Ÿ+ÓOö\ü® všÁÝ»´À­õèvwr/ˆI¢.›UŸ¾6À@¥ÌPA…jÞ�I:Ÿî¡¯ð’¸k\9ûoæ²|ïå~ûO(\ce£A£ 'W¤2\†‹?æ—\c¥çá5ì]#<÷½oÓùÍ»œ^jѺ6ÇÜéÆžbÏëÿŠ?™ºÂµšOœbd× ³ƒ1í3?ã½Å:U/k�ñ]³<ÿôÁf•¶Yw`ÿ¬I­0߈£�µsg¸Žÿð_’Ù;ÏrÍÅ‹5¬LëQ;÷6omÜÇŠªŠ¢(_ v¨o¬cY»Æ Tf“ªtèô|ü0!:¦í�Î8Èêeæ×Út\¿ã!JYF÷ ©¹ôCøxÝ&›íOýTB? é\‰ñéqúKkl¹÷¿ÊÊ­’ ‡çuèR¢”IA¼E½ëÑ»uLFt«U¼¡12iÝïÐêl/dý £M=ø‘ø´Ö®pî­éÕ94»‹Éñý�‰â„X 4M"b�CC"é×VX½|� “G˜9ô4._dq£I½µÊµóïðó4<x–ÑO1šš† »l�{Ÿ3ï|À\ÍÅ�AX6N~˜ñÙ#TöF„a‚ÔM, âö§Ï¿ÇézŒKÂ�Ë|ø®‰ãèì8{O 1éDR"eDgéççt@?EQ¾b2Âo×Ù¸&‘A…Ár‘|¡B*Ÿ�H‰”ÛÝšB†´vøb¯E«¶ÁZnŒá⣩€$�¤_g+î±Õþ´p" Û5õùÑÙ�!†ªë4þ­/� Qg‹†[!—Ma÷û¸ÍîgÚD÷á?@-jKò»Ú&k×ö²{¼Â`ÞÁÙÙŠ#ìwiÕ6Y¹ºÉf'$诱òÑÛ¼aõXŸHÓ®{ÛÓ�öÆUNÿ²Kwk�=ƒSZØ£³µÌÂÜ%Î/4nö…Ç=ZÕ%Ξ6™È` Ľ[Ë Ì]šcÙßÉ> ›¬Í�ÁmÕÙZ›evl€´ 1¡×¦¶¼ÀBGMmWåá�±�ÛÜdÙëÑi—)æÒ¤m]’„$ ð½톻½ægÔ£ÛXgAÄôrØ:¹]Ÿµ:q”Я¯±šDtº>÷ÚS vëlm€Œ‹ä�/¸;ã2 }zkó;c€Ÿtýn“�åk˜j[´½ðŽ`)!l³µ±†ðÛØ~ƒFãÞCXŸF?~D–K4M#¹ß½ EQå1£ A'4Zí‡�ð¢(Š¢(_=üEQ”'Ž ~Š¢(ÊG?EQ剣‚Ÿ¢(ŠòÄQÁOQEyâ¨à§(Š¢¾ÿÅ×øÞ·o}ü«*–ŽnZ8¶‰!àËøhÍÎ’›8Âó/?ÏÁáv‚£û'(ì¯FzdSGOptÿ8EƒÏ°ógeP˜>ÁËö¯ùŸþÇÅw¦²¾ðÀ$0³CŒ<ý}~ïõ94’'÷•FwEQîŸ@3Ò• †‡È¥LŒG<º<:ÝžÂÀH•™ñ�çXN†\!G.m¡2îã÷:tº=º~|_'^s™äÈ8t¯¾Ç…ÂKì›alr‘¡Ë[,~‘ÑOJâÎ:;O(�“/’Õqo·4•]{8ôÜó~ºc“ÊÉ9q×§ÄD„éàdr³–a k!€$"ì{ôÚMš½ðö¬M¡£™) ¥Ù”‰© H´\‰¢­!ÄÇDVÍ&[(�ˤp,MÆÄ¡O¯Ó¢Õíì|ˆf¦H•†΂[]§éöw‚»@6¹áQJz—v½E»ì\o aÎcE-Ú­Moû½îü®$¡‡×mQ½õ»¢(‹Ðv™±] å ª­°¼´ÌÒVïö‘ Í@×4ô$äf(бœ ùbmçg'ƒ=?"’:†iaY†®Ý‚‘Q@Ðî¯p詹¬�w©nõ¸k¤G30RƒLíž`0áo®ríÚ Ëu�L Uelr‚]ÃLÌ„´Z—Xë÷y#þ�ƒŸFzü³»gÙ§o²yúÇü‡_]¡Ü‘"+’^ƒ.ðÉEhVŽüè>^üΫ;ÍH9OÆÒÑ5Ath®~Ä™7ÎOß[¦î_Ÿ¶ Ðí<ʼn#|ë{ßä©=Ò²× ÙêQÓt­{÷ai6vi†ã¯~ƒç�ϲk0‹�x¸[ó|øÎ¯øùÉy–ë.ýDÃÜÍÞü—ü·/\ø‹ÿ•¿ÿ`�Ëí0qòS<÷_ýwü^î~õ×oðë÷iÄ€‘Ây�?û¯_dlëüâçoñÓK��Øù®ì ä˜h±�[½ÂÜû?ãÏÿî2�„G:½[ùúº…SÙÍhÖÄê-²¼ºÌRµGx瓈8Ꮆ•ñYÇfvê I°vš3WjÔ“åá1¦G˲), „HZ+¬.-q¹z_¥Ã)�26Y¦Ò_¤]ëËÛ§hi†Cjhš‘´ŽÞšgeu…k5ïörʯ¾Êª¦!Rû9Pcª²L«ø÷÷ |ÈÁÏ¡²{„ÊdŽ^ãgß¹J;üsCÌ£ûŸáõ?þ>ÏV,¼µ+\Yì“d{–W~´‹=ƒÿŽ?ÿù+­€XËP™9Â+ü‡¼6&©]9Ï[=|-MJëÆÁ΅·^~•×^;ÆŒíQ=ÿ6z)JSÓ ÿ.ß- ��þ3ç~rài†¦G™Ümã5Ïñ›¹6Ëë§X=Rdxj˜©½Ã¤––p?ë9¸‹„¨Éz½Oˤ”*0’׸\Ý>ËæÀn† 䢈–g’;Âtî,[Ýíî#•!]®�I®-4ð¼è®�†•dp×^f‡m:Ë—¹ÔôñEŠÜ`…¡Éã¼øû£ä£ÿ�ÿx¶ÆZ/FØF÷?ÇüÙ·9˜3 6¹:ßãÿoïLºã¸²üþ‹1ç™@H@pçQ¥É’NwU»ÛÇ {í­¿†?…½ëOಽñqKrU©KU¬*I%Rœ@̉DÈyŒˆŒ9¼HPâ(’jvSÕ'8¹ù"âÆ»ï¾÷¿÷™r’LnŠ“ Ò“‹çR”XîýŸÿ#×f¢„úU×J „8™ÙS\úÅ"³ùÿÉÿùÇ{|[`kÍ­*ÖõãLN%ˆÇ„¾E †P"9Vráè ™xœ¤DY%6³@JèW{´[�>v†þÓࣙ€ÎÖ*ß¶4†B”ˆ¨á>b+cƼI$E$;“F–]zÍ>½ÞðiÇ÷\\´n‡ng€8} Ý �Ó)’¹I&â®Ö¤a8¸‚„`j–‹�ôZ?ÊíÍL%�$—N£O¿ÿ¼k0 [mãLL�œL!7†`Z/õMoÖùIq&R21½Õf»ný’˜%âÅ–.]ãlÒ¡}ãñoîsÐwð•4…•ó\ýðmÎÿ쯹´þ?0Í !M:;Éœ�°ù ÿðÉ&å–‰+HH‚v�ÉžºÈÉÓËä�2·>ý5ÿ¸Þf苨Ù\~ï*W—‹œ¹ºÄÛwéýÀè_ˆÏ±0=ɂҥsw•²áaÚ›¬\e67ËÄÜó±=诳µéÔú½9æÂq¦Ó*4L@&slŽlÆ£SÙ¢T¹þþû] W ‘œ9ÎÉ÷Î/VJ(¾ý1׊q¼{Ÿñ«›k¬êØB„øä2×ÿîo9ÿÖ{œ«ôi·VÙ¶tŒÚ6uÿ8“ó9’Éò¡…«F g�Q ‰(b–B*N>.±kHJ˜É•ITµÏvg@ÓŠ“Z˜åd.@Üú„O>Ùd·9Ä$$Á»‡5v~c~ˆ¢@*." &ƒ¡…ñJRH½×ä \epäq|ÏÆvB‚ˆ(‚ï 8ÜXcèãøBàà8�z ­—�e•dLDÀ ?´1@Eî»&ö°�NŽt4� 5�¿ç'†ˆ†$"’�cëô­WSë<~¬¹éË‹ T}“_ÿñ6«�ž€Ð kˈÇ9ÿñ2o-O°^ïÒÔA@Q¤°‚¯÷èµúhO*¥4óK³Ìçœýî­W¨u�fª‡;”«‹[Yfzþyå.º ö3OD$>»Da*CH¯ð`í=ßiSÞªRŸ;é\‘·f#¬­¿ ‚|%<´z }`¢d¢ä qä WÊ0¿�%«ti¯­s'Eñ�yæOM“ÙéQÕ¢ñ¹œ„o×ÙëØ _JÕéãû&½Z•êံ4 l9ʼnwNr¥8O:¶FHÉNN²¼CÕ6øêë;Ü/÷éÚ ÒvB¨§üåG-„ˆ¥óœ<;C6(óÛ;w¹½ºGEó ¹­ãNžcùãIŽ-L±½S¢Tbõ*lvr³¤’ëÄÄz4N²8K*бƒé\‚l6‚ØrPBi–棄ÌuÝmr¢€¢ H!ßèÑmõž¶•1cÞ0"V@ðmlÏ{E1š�ëÚ˜Ãá÷º€ïŽ:z?ð†ƒ>ÚðÑì&)òì# ‚„¬HG©XŠ,!‰"‚$£†T<||ÏÃDQ"$¾…ã¾ ý¾‡çÚXž@ ‡xµÎžö9Ÿ×2^–âdÓI¦S&öÞ&w*:úC8èÝ&•õ2ÚGÓæÓ$ïª�~§ÆÖ�ÅtáC!á¡ ra‘ã“Go*ŠdãijL_a6¼Í¶¼¶¼qP£­õè*SDóÓdÔ]”…ÓÌ$$†›-*{uzŽÌƒõ>¾¿Â|þvš>ÉXš)ÙÄ<(Ñ9Rtþ8<<ÏAwF#4I%…�"*ØzÝó_¬–U5BJõôºã<~�wÐ@÷\„¸J(ª"ááØöT1–&™Ê&™L%&ÒÌOËÛæ–˜ãÒtŽÔDžlLÀÏc.ìÑ-Uév סu°É�/¦É}°Ìô¥)žlPÛYcuu�;ûì7�§•kcÆü ¶ �ªEY<©jù—C�QB &‹³ÄQQ‘e)ÈP˜�õÓ.ÝÀÆÖLú¾‡íŠ‚,Uðz^¿#Hˆ²‚*`Û¼|˜ûf�Ÿ§ÓÑ,zf„l8ÃBVá®nãÿ¨6 ‚@Aä©‚€ ˆ£ê~Àç»Çö�_òßV�qáêu®_YaéúÏYyëWn~Âßÿò&-||‚á!kßòÙ�Ê3rñ<œá€šËB:E6‘"¹È¹üäÿ¢‡‘=Á¥é_³_¶Xãë \IDATq^Woê´©uu­8+é"³‰8Ãó‹$Ã-v vÛ¶8 zg“þõ«,ÎM°©«HÉqÓ¢¾yˆáxÿ„ght½ýxX�&Ý3ÄÑ´È G|ÁÃûÌHÒýŒQ¢ H#öh½žð]‹ÞÖ:msŠùB†©â4}9ÏbÜdu—� ÂòÄ,©ôs“.ƒcó¤hsg¯Ggà`÷*ìüþ—ü÷Õcœ¿r�ëWO°týç?sž+7ÿ�¿ÿå-šN0v€cÞ(¾ýa€¯Fˆ‡"ŠÀà%Ä£'ôu7ÆÁÔ›lß·P‘Hn†|>AÂi°½ÕÄ [Ý«ò&OD1ŒY·Êge�¦»NãÊ4¹L�³'<�Ç»_²ÙÒé>úàù#[ùöó=üyš•kðî{ç9qæ}>øÃ=>=°é½¼´n̘׎çùtê^,Bz"Aªß£e_0p=P '__ž»‡gtãß%âjšh2LÄêÓ¨×>~ Ú&�º†Ÿˆ1‘‹ÓêèXæ3úU5'•Ï¢Z½‹k¿|‡ù†Ë%zhå5Ê»%Ã&/ýœ¿½Zd*®¼pœKý;’‹ûì7zô OTE“dri¤ÒïùúA•¦aaö]Bóœ}÷*�¯î±z¨Ñ­ì°uožÓ¯pæ£�=¹C¥cáGrW8U”nþŽ[¥6 Ý9M~¦ÈÙÓ¸í.šéáËQ2ÇæYœð¼>5ÍÇuu¬±5=Aaå—ÿêïgKÔz&¦/¡„#HV—ÞÖ]n·ž¾ø‚!<}Ž•t©^æ°T¢\m>-È ¤‰i6;8–?ÃÉüŸ¨ömLÝÄøDòSœç*�¯ï±^3qt{àÍOqþÝ+4¾ºÏz]G{ÎB¡Ó«ÑiVi‰ Ì-Ì º%Jû-ª½‡õD}|Wcÿî&­“çY™I¢ Jì×KTŒàõï¥ØôÊlÝÞd¿p†ãïý ¿ÈmSªvé[ f‹g#H¢þèY`tjl~u‹­¹ëÌ^þˆ�ãEæ{b‚ôì2çNgP_²¶Sa·ó0 0©n”h�¸ÄÜr–¨W¦õÍ6uËÇq;T*mÚ EN/Ä�‡]VïŒlž¶Ë×F¶²4%áº}jº‡ûãæìÇŒy}ø.ž^£²—@žÏ“ž˜aAŽ�ìëèæh+H j8„XX�¶6Vo€3"�É1³ õíQÿ+ôh6�ÌÆ¾�mØà+¤ó9ò–�Ó =[úþíwpµ{åÊBŽd¾È15Fª7š�ó��Ã1âÉ ÙTÕíq¸[¦¦9¼‚ï{óÎO£¹»ÆMADñ.p²8ËòÅ"‹¶ÅÐrGuÜ…�êÓ0nqo[ÀêÔhì”Ø;vœâÕw8{P¡ÚPjí±{÷Knd®­œàÌõi–-Ÿ@ £ÊVù7¾üêš B$Frr‰³×Þ"i -�@�G U6î}Ë�¶‹éØ{«¬~"&_àôÌÞ™Çñ‹“Ì ‡ �1%–ò0º-ú¦s´–àm«ä‹?F¸vbŽâ¹ fOÚX(„£!hÞçÎ×_qg§Fó±µ£²A¥¹Ìòb†¨Ýe{½ÎÐ °hWh4—°Ý¾-ièG9R‚#‘_äìµ3ßÛŠ&šªlÞû–;-—áxÁoÌ'HûpYpqrÒ‰<3é®íŽÊ "’$àmÚºØÝ:­vˆp>Nz6B$ëà "â0`8°Ñ_ô­ž�Ù®Ó™˜"›Ê“3ttMG{Ì#8Z‡NÍÆqGUgžv��7¤s°GEô˜ÊgH§¦˜Mç°¬‘óST)pq†m› ö;Ϋ-—I…Âä�D‚0 Eß�;Dk×(íÒµ,—£ù磭+ºUö6V¹»¶Ín]g0Ð0‡:ºB Ih[÷ÙmjôL‹á Ãa¹ÎÀYðô&µ­ÛüùO7øüN�¾í�ª¶H*j$F,'‹ Ê ²ä2lï³sç&_ýá&:îÑš‘A¯Õ¢Zëb²FA\¬A‹ze—íò!UãÉË/ޤ¾§�3á°öÍ]Ö÷ÚôŸÙIx¾ žÂT:Àì²QéÒlö0¬!†¨¢¨"ƒÍ»”Úݾ†e Ñ%UlÝc§e<7ò#ðð•0¾’$å´Øûæ÷|³Ó¦ýX9 €Àâ§rÈ�Í ´ÁÚílõ5`9š"žL�r›lÜ^åPw°|9š$žL�tlÞYå@w�œ–€ŽËM’¶Ù¸½A­k`ù¦Öa¿tHÏññY–�%ß6Ô÷(m¬q}—êÀ+ðð¬>;‡ l�@’‘ ì>ÝýÜþãçüöÖ=ûéugˆO" ƒý ¾þzƒúÑHĵÂQ UÐÞ¼Éoo×ÑŽŠþŽl%J,'þˆ­˜ívîÞäË?|ö;»ŒùɸCô¾†6Õ¹ Q-—xŽ…1èÒi5iv5tÛ'pGƒN/F5?EÀ·Ñ{]:][PQT ÙÕi7Zß=ßáûx–Ž#Ê‚€g ÐOôGž©1èthõ~¸nà™è} Ã)ºQAÇH%¢„<�^ëpTóó Eß}¹¬Ž‡~δ,„ ÎÙL QñýqUÂ1cÆŒóÓC�£„ó§xûlµ·ÃÎî!å–�ãûß+À_€(#AP¯ÿÓˆüÆŒ3f̘Äí $ó¤Òä'2L¤¢„Y p÷…ir�F~cç7f̘1cþ|—¡6À°}�#Ä’)²™éD@¯ÙÇzÁ~~�:¿7/x3f̘1c^†ÀÅê·h8F¿E,¬¢J>¾«c¸¯¶#ÐwÎODñ §ý�3f̘1/À³4ú–Fÿ±¿ â×¾+õ&J’„´`8f̘1cÆük%ðÁ$IBŽÇã8Žƒý eaÆŒ3f̘¿DA �óÿ’�A=a•IEND®B`‚MEGAcmd-2.5.2_Linux/contrib/docs/pics/webdavMenuMac.png000066400000000000000000002043401516543156300226620ustar00rootroot00000000000000‰PNG  IHDR>Âvh¥RsBIT|dˆ pHYs%%IR$ð IDATxœì�wœee}ÿßÏ)·÷{§÷�™­°°tA @ FA‚‰±`Cc‹½ÄŸ±üâÏ^"¶¨±D!–H¨¢„¸€HD`i[¦ìôrËÌí÷žúûãÎÎÎìÌì.°3 ìy¿^˽眧œsžÏyÊ÷ù~ÁÁÁÁáCm;wî¼]’¤èÑ.ŒƒƒƒÃj�Ïç9ùä“_dK|���õ.—Ë>‡$ét:x€<€4÷çàààðBgŸÞ ��raVÛ¶s¢HÊÜÿ8888¼`Y |8C]‡c‡ù¡®È–e9½>‡,s=>™šðÙ / ŸiØ6ȲŒŽ–;8<°m­ZÁ´�iAÛ´m ­RÅ·kµÛí¾ŸµêÂg™�?øGr†½àW�Ç »·—HÀ{Ä*û?×ÿ˜Ç“‚xã•=ÊIÓÁÁá™c[:wßz=·l¿‡Š)8îä³xÍ«.ÅïQ1´¿¹ñ¿Øþ‡‡°$•“κ�W_v.Y`Û6{ŸÜÁh&� ¤ g¼h+ò3ÔŠ¹ßüߪ/n˜F…k®þ;Ë2ÑpI€©kä EÚºOäCû­1ß¿tzŠÑq0mûÐ';88¬:S»á?½ŽÖ­g°!.øŸ[~E¼©“Ë/<•'¸“ŸýêV¶žyacš›ÿóGtnØÂ9ǵ&wüê§ÜüÈ uõ Ï:N9ýxdùYéÄ¢UÝUê Yвq}÷Uø]2åÂ,wÝzÿõÛ{¸áÖ»xÇk/F¦Ö%¶- Ã4PIZ\QÛ¶1t�dY’VÍ}éÙ€t�óV‡é‘*vˆ¿õ«é©WÜCßÞàT†‡4vqå•Wâ­Lóøïg¨Žk@H‚X}ŸÿÚg »ä%ZðtXÐã›ꮉø}âñ8·‰¯|í¸çŽ{)åf°l�°Ú½ƒ[oûÓ�dº7oãýR¢~Pë=þîæë¹ïá'ÑL›H¼‘ .º„“¶t-›g69ÌÏ~q#V°…7ÿý+ð¸œá¯ƒÃZk¬Cb–믿ŽS¶t’ÉÑvïä÷ø=�?ÙO©XáÁû~ÏôÀcLjÐØœXt½²"#+GÄÜx톺ó9 1Ÿ‘iè<~ßÝLTm^Üу,`t÷C|æ3_¤ê©ãômÇQž�äÆ_ü˜=ÃIþÏûÞ„j–ùñ×þ…›ï{Š�'žNGS€Þ˃þ‘w}ø“œ³­gQ~Ó£»ùÜg¿ÈHQácÿ|nÕ±ÓvpXkZŽ;“·½n”ÿºùùéC÷P,°˜åûßí#ŸËaÙ‚Ÿýä'x|A.yÍ[¹àÔ.„¬ÒlÕ¾¡.k&|}?È'ÿÏG‘„Dn6M:3ÆSÏçò—œŒ$ºisò‹Î瞌-ÝÍX¦Nü›ŸáÎ=»HΖ1Æà·ìâ´ ÿ†÷½åoñºF/<‡o|ýßøãŸwÌ Ÿ‚äÈ.¾÷Ío’Ôü|è#`[w£3Ìup8 !sÎ%¯âÔ¿xÕÒ,ßø×/a6nåo¸‚_ÿò߸ë©>ò¡’xðû|ÏxñâP¬´¸±êªàöz‰ÅëP‰X$€×ëb詇øù­÷ðš¿>›®M§ðš¦N†‡ÇøÓƒ£hºA¦¨c¦i2Ñ¿K(\tÉ_áóÔ–½Ûz·òOÿ÷3Õ3ŸÏìÔ0ßüÚ7˜.h¼óCæ´MmŽè98Ml›R©@1ŸÇ0 ´j•|>O¥RÁÐ ù<^aãõúÖjÿìÚ u[7láßÿ^nÛ¶Ée&ùÎW¿ÈÍ?ÿOÎ=óÄôN¾ÿƒŸÐ7>C(DUòÙ4ø[›™Ô,’ä¡>˜2!ÉÄu‹òÉLŒ“w)Hj€rEsDÏÁá(bUnúåO¸í®ÑuƒÙ™4z’éßÁlzв!ñµÏUu±õŒsyËk¯À³zÓRó�¼£b¼,„ «ç¸u]è¥,­Ê]7Ý@²Äëþá½|îó_à‹_þ2—œ·m®´‚DcÓ*369‹=7`[&³3fs…ù´cÍ]\õ–7Qï·¸æGߣoøøH®Z­½'ñ·¯ü ~|Ým¼çÝ»ééŒòè#��æªóÎ^”Nxñ_qåTŠo]s#_ù·_ñ±w\�ëÈ,‰;88&�m(Ršïÿð{´mvì™æµo g]Åë·ó�o~ƒ€5˘ëÖ·¬E±VŽO’]œyáKiÏéûòÄ%Ë(¾ gž}.=Í(²Ä9¯x=¾D;÷üùI‚W¼þÝllòðÐÎQB~’âæåÿNÚÚ×s÷CObXð/y\t1=m ôl< µÑÆ-KYæü—ÿºäfhz†é\™ÖX`5«êààpuëNâïþ~û»{È–àŠ7¼�KÎ>€ §žÇ;®*°ýÞG)K>ÞòÎp榦Eæ,¶­£ëšPPåˆÍÙ àÜL&s£Çã ‘Ÿ¶mcYpð�¦aÌíÆxvÖÜ«�mÛèZ˸\®EmÖ¶-´ª†-æŽÍµyÛ6øÑ§>ÊM;H$âáçs_ÿ ¯úŒÊ011ñxww÷[€ @NmeB ˇŽÊÊsªØA�ËíYᘄ۳Ü1™ þö lzi~îD… ëÈMU9 âààðœCAÇæãèX¥ô_0¾øGøŽ9áspp8æp„ÏÁÁá˜Ã>‡cŽU_Õ]èy)IÏ;G¶mS.±ø}GÆm¾ƒÃ ]×(KX6x½^<÷ü1­Z¡T*c#ðù}¸]µ­Z mz¡fö"G¬­­¾ðY&ý{ö [K¥OH*ë×w¯š®ÕÃfoß46oÙìl…spXC×èß½‹Ù|qΞÏKïúõ|*å"}{öP(Uظ}6mÚˆ[U¨–‹ �Œb˜5ñ‹ÄëhªO"·ÃgÕ‡º66ùl–\¡ˆ$I(Š‚¢(ȲŒ,=ãù&ÕGƒl&Íl¾Dk{'ë{Öaje¦’IfÒIŠ�ÎuÝtwuP-æI&3ض�¬¨ƒA~?¥BžR¹rD˵fÌ^€îž^ÔzGûbo–«A @–¥ùcº¦!É2ØÅR—Ë�, �$\jm‹e™hš1'®r­»lš¦…Ë¥"„À4 Ê¥¦i¡º=x=î¹½�û‚ YP,–²‚ßW ©U«”*dYÁçó¬0twppXˆe×zl^Ÿ��߃×ë¦R­íÛתUT·‡H$‚Y-"˜sÃ[Õ妩¹½Za6�<âåZ»�Q C×b:�Á²lUuÓÞÑI"F¯–ÙùÔSÈn¥BÓ²HÔ7Q)Ìb 7[¶l@–©© †FÆI4¶ÒÙÖ„m[ìì#“­p ÇQȦ®yw¶m!$¢ñzÖuµ!a3п‡bÕ@ƤRÕ Ebôöt‘žšddlôBàñù± ál�sp8(¡p�:Aÿî]¸Ü.ªå vIã±ÇŠTJ% ÛfçS�ch:È.bÑÈš”kÍZ®m×|ñ‰ ¸ÏÁ䨓É4Áp”–æ&ôJ‰á‘ðx6á–j¾üŠÙÑxu‰�—éÑ©\‰Š¦ã÷¸Èeg1L“|.‹a5 ,“b¾€ÇKgdd ™Î®|•‰±QÒÉIÂÑu?–eR-—ðúƒt÷tàr¹)æ² �Œ!©.º:Ûp+#ÃC”4¯£{Ååñ³~æ“I4MG¯V@Rðx<z˰ðx¼¨Á0uuõ|î5Y,\³¦[)عó©sc‚†ÆêâARé\ëÖuáu»°CA° úGHe²´$Bxazº×¡Ì �C‘0Ó™<Åb ¯*È动ªJµR¦RÑ�m�rU§±>Œ¢ºèîéE’¼^¶mÓÜÜH&›£\®BÄ€,»è]ß‹Ï]‹ë1Ü?†‰ ½­ƒ†º.Uæ©§v­Õ­spxÞ"„ÀÒbê;w> î ½½Ý ì"�×èìZ‡Çõ̼®ïò^\Ž4k&|nŸ�Ö¶ö%‹Õr~ηžX´R*DmåÔ¶íýƒãæ ]n^¯‡\®€Gè(./±h”™éif³YÜhȪ‡ ÏM¥T`×S;©š¡P¯×‹m* ÅJº8Û®ÍëI ºßÏ;뇣„^-³{×NŠå*²$c˜è&“““Fm®=95‰eYLLzØ´y3^·ºêÃݵ۹±Â↢º�%A¹TB3ÌÚ©¶M1_À´-Ü”d…PÐOµ”#53K0Äíö(ÌÎ0›/ ‡‘%‰R±€¦´vt±yÓ&º:;©‹Ej–"„„ÇãF×uŠ¥òüïzµBE7žÙ}pp8†ÈÎd(–5Öõl`Û¶¼„âuœrÊ)4ÖEqûl=q›7öbhRé™5)×Qß²&É.±•RŽÁ½{ÉåóÌdR  #$•DleÇÐBB‘X&¥R…p$Š E° �ª¦׆ɒ$�€ül–|¾ÀL&ÍÀÞ¡Cš¥Dbq$Ûdhï éÌ ù\–¾¾~ªŽð98š¹ž›e[”KE*U ל5„ªªZ•b±T³æXCÖf¨;·Õd¹Þ«‚¦Ö64Ã$�I‘�É`[Šê¢£«ƒ€ß‹Q-ϧs ¯ŸG¥X±‡k1w}~?�‹ªaœ›› †£Ä"aÒ³iò¹lBᕊ6÷p‚ùñõü Fb´¶�˜bÏžÝH\nA¿ÃvƼ#‰â÷N34Ð�$Y¡.QÛ�‹'H¦gèß³ °Q\ñèš”kÕcnìÛ×*$�gå¥jÓ4(K† <^/wí|˲¨”ËYÁ»`Ÿ_-}‹J¹‚iÙøý¾ý‹åJmo Ï;??g:Å9ãåš!²—j¥‚ârãRª•2¦¾9£å}XVík¥éBHx}^°LL ¼^�³W×Áá T+erÙ¦ �`p~S€mÛTÊ%r¹<‰`(4¿¸¡kU …"†¡32‡cŽç�ðÙ¶=ÿçpô°LÓ4ë9‹ÏìX©³aèär¹ÃÚq±/~†eYKîËÁŽ-<§\*P(–�Ø}]“U]Û¶1Mƒìì,•ª†�$‚¡0_ͶçpŒ Cgtx„`4A<:bFÃûnäÁÒ«=“\v–R¹ŠµòûýÞEÎ '­§[®#•ÞÁ0 M×:©A —Û…$öƒ²m‹þ=»Ðl…îu]xÜw%T-Ÿ¢¡¹• om¼n,‡ešT5í€F#p»ÝG<ØU¥\bbbŠx]áÐò–ŸkùlWÓÐd:=Cs{mM +ÖömòÙ¦“),B‘ uñyæ™t’tfA4‘ �,J˶íšK»]»1lÁúõž}€¯5‰²–ÏfèëX²¿5«c}Ï:ùЕ°LƒL*‰äö�.oèüt±Lƒ±±q<þ‰XxÅ›YÈÎÐ×?@EÓý^óÞÜ�KUji�Žá „‰$­ÃE«–™šNŽÅ V×tzr|ˆá±é%¿»Ü^ZZ[©OÄ‘¤ÚŽ˜|.�.TLË.|º^%™L­k\¥’3©)ö ,Ý—-+*MÍ-456,rwöl0´*éT8Jx“w۶ɤ“Ë:--MÏ»@[¦i°w ŸÔlŽP(ÀØÐ ÀŠâW)æØµ{’âÆ¥ öô��h¬‹‘Í$éë@uû�0ÉìΠl>Žè‚F¹˜g×î=Tª5'p»ww=ÑС7EŒU>Ë2ì@· ½suñhÍÕüÈéL’Ñq?­�GåËgYãã„ãÖŠÎ ½ÊÐÐ0Uâµ£‹†º8†VedxˆLzšQ�‡uí-µ´&&ˆ$ ~Ç ‡‹V)391Žäò®ºðÕ4µ´ ›|.ËôÔ4ƒý}”ʺÚ[BæømÛ°m�ª>¿L@I4Ð8çL¶T*2=9Éèð^Š¥2=ë:�˜øÕXaHf[ÌfÒ$gJ455rD³\eLCg o3ù"�ÝÔÅÃLŒŽ024ˆZ�¤Åí¸�/`Z‚Þž|.™�O=I6—£±.F>ŸCR=ô®_�ŒÁ;'—Ë ÖztåR�Ý Dj–þ¾=ô®_ÿ¬ÚŪ¿½¦¡QÑ ‚±:ê�% —ËEgg¦9ˆ5{‚Úž¾t:M±TF’dÂÑšci«íJ¹D:�¦T® I2‘XŒh$K:“A7,TÕE$%  k¦¦¦°l›r)Ïøøáht~ø½CÓÐt _ BëÜWÍ¥ªttt ¤°m´J™©éZZ¥âþ´ü^†®Í×ɶm|� ñX ·KÅ2u¦¦¦qy|˜z…|¡D(ǧJ$Si,Ë&;;ƒdDcqª¥’ì½]ÝÔÅ£HBÐÜÚŽ�ÍøÈØÐÜT¿¨,Š"#°˜™™Á ú°TÊer¹år¨í×­–ò6( âØ¸Ü^6nÞR‹�Ó¿ •Þu]H’@QŸ�Çæ5Ø«+!€R±H.W ô#Ë2ªÛËú�k^[€r©@_?…RŸÏ‹aè¤RI Ím´·4-I·TÈÑ××O©ªã›˜T*Es[;-M  ==ÁàÐ(¶�ð¸]d«¦§§iëè"ì•ÉÌÌbS jœN§py}K„OÌÍqU+Ef³yB¡’¸½~º{Ö#„ RÌîOK+ϧåQeúöì"›/ãõzÁ¶H§Rd2³lÜÐ –ÉèÈ(ÖÜ=p¹ÜxüA„f�Ͱ�r±€eø!fÒ)Ry�ºxœ}ïV!;ÃÈè$þpÅ#166Љ–‰êrc[Éd’l>O÷ºÎy—@‡~n_ DCC{‡'Èæò„>¦&ƨ 7Ñh]«²g×.Jš�ÏëÃ44’ÓÓ46·ÑÞºø™Y–ÉÔÄ8#£ãøBQuõKò´,“±á½ŒO&Q\.TEa&“!™LÑÕÝM,¤Z.2:2Œ$+!PU•J¹L:•¢wã&"AÿÊâw@'ÌíñÑÒÒÄž¾A239êb´J‰];wQÖt<^/¦®“œNÑÐÔBg{sͱæî]”«úœ3[ƒé©)òMmt¶5/ÎζIN޲wx _0B8&›�¥ªé€M&�&2‰F¤¦Æ¯9óp»˜�™az:I[G' u1LCcxx—Ç‹iè¸Ý5ïåÉT’|±™u�m‹æ›�$†®±wp€ôlžŽ®n±È|^B’hjnÅÐ ÆG‡�ÅâŠÅIÌÌ’šš 9¦i»v0uèï ‰SŸˆÎ??Y–‘eË2‘d aK¸Ýîe?ªO—U>EuSWc*•a÷î]øý~�Ñh¿Ï7×5¶™£P®ÒÒÞISC¢Ö¥Ý½‹éÉ bÑîE%µ¡\5hï袡.†V­°g×N&Ækç+XŒŽ�c ™õÖôû(äfÜËÔä$‰-Ù¸¡—GyŒP$NϺ¤en¨ê©yuž˜N±{×N�þ¹òû|^TYƈ°qƒk.­=]íH²D¥˜CÓ-›Ûhi®ÛbdïÉ™,ùb™ ·ÖB¦£³“h$„<€IUvî ¾¹…–úB2ÌyæZô~/}Ùu]§©¹•–ælÓ`°¿�L:ÅL,FC"vØÏNA DãT÷ 7öuÏ©õ6 �–¶NZ›Ыeö ÖÂw.Xí³m›é9Ñó‡¢ôtw͇XH©�c|r�¿[ÅãV™IO388Äðð(á-çÏ•Ý=Ýø½2ÉIú‡I§2D‚Ooøã÷ûQT½ZÁ²,ÆÇF)Vu:ºÖQ�¡WË ô359N]}-Ÿ£\ªÐØÖAks#æœ(”Ë¥ùPŠs•&55ÎÞ¡šèu¯«Õ§k]7ô÷‘œ)²aÓ&TEA+ŸDV<ô®ï!àó’›ÍÐ?0Èøø‘Hiî¶kU�Ž®uÔ%¢h•ýý$''¨«¯#ì_êàÙb#ÃC¤g²H²LjzŸßG8°ß¡GjzŠ\±„091Š$Ë47ÔÞYYVéêXD×5F†‡@õÒÑÚÌÔÄù²AG{;.—Z{òÚÄÚ^“_ǺÁi’©ÅR�B>ÇÄø�`˜îžÜŠM._Äåò‹„0t„D4#?:N©RÁØ¿*h¹B·ÇG8@×u„$�F�˜¦\©¢¢Q©ê4´tÌÍ[ÕV”z{U “šÀÌ �’,-ûÅ”$™ÖŽN|� ©TŠ|¡@~®üÁp„ÎÎN>ïüW¨ö°kâåõ‡Øºu+¦eÕÌ@, ·Û�mƒiZ@í!BñØüPª–¯„ Y–±6ªCàõhnj@UPZ[ZÈæw1›ÍS�>ÍùÔ9G’ÖÒü…`Ûdgg ýø¼z7nšï%ï#==Él&�?[QôlÛ¦�ÍbÙÐÔÜ‚Ï[Çõ̤3dr…E‹cѺzBss<ñºz†ö£iU,Û~š ûëgZ&ù\—×O$À0t„¬‹†É&)ʸj®Éçrä~ü~=ë7.©ól:E6;ƒÛ¢§·{>˜Î¾çZ{OddI¢\.¢é&-�óu GãÔÅfOÎR*U xki‡¢1êëjC[Ť¥©‘�}ƒdgó„|GÞEš‚X¼Žh¼ÓÔèÛ;×kÛ�¦U�7=íHB É‹eEÌyW2 µïZu ™M©«6þ@·ª¬8¥µ¬É µ$ÉÔ54Q×Єaèäs5áÈæ³ì¡«­Ó2©jUv<úÈ’ë+U Ÿ¡ëX¶Eµ”cÇ#KÏ/W5lªØBª 1çBî_>\)‘e…ºúuõX¦A.—cb|œlv–½C£lÞØ³ìu¦¡3¼w�dzk¡ ƒ´ø«& éˆÆñPÊ‚ù<·Ï‹,I˜º¾°ÃvXض…m³ìü`(§!‘c*•áÉ'f�¤Ú_Kk+¡=‚L:€/àÇu�E‘Jµf*äóïoÀBHø}^ÒÙºnÌžÊ {B<ãÕÑšýȪ Û2Ñt½šçÑeÞÃj¥B]sœºlŽéTš�Ù™ù9¾¶ö6‚þ¹:Û™™Ì\�ƒ­3Ô¦Z�$<žÅïª×ç+ƒnè€ ¨M‡,ü@{ý~µ6±H²Lxn^ÔÐ++§ÕE8YôñÞG:9ÉÄä4†Qkãv±Êc�¨Vj>3w>õ$Ь¯k ¥iéÈj°ê§kUf³9‚á—Š¢¨D¢1‚Á �?ú¥R HBÂã ²aC÷’›«¨*¦^�ÿ·,Ë!ð"ôöt.ùÊ)ªJ~6¶…®-Ž…ötmí4­J>_Àâq»�unÒÙÏ“O>IµTÄ0­%–àµáÝS© ÑD=M u¸T•ÙôC˘Ž.ûêÁÏ™30ž«£¡Õ¢ÊI’ü´E/�Lb!áñ,µÃ“•®žõ´wêÌÎÎ’��%•ÎP®Tؼyóüy±DÕbŽé‰1|^�uñeós©*¶m£iÌ;œµ©T«5q“%ì#ܾ3™4šnñz�$ E–Q|Öww-Y¡TI’èê£“|.Ëìl–T2Å®]¶nÝ2w¦ ‰bi%R“cøý>šêb+¾sŠO ³2 IDATâ¶,t}ñ»ªkU�Ä"‘·LsÑÇËЪµ`]Gyyx¥÷*?›f`p�?H4"�N�ì"�1“IQÑL"‘ÕR‘á¡T·‡ºhðùl¨˜›¡¿¿Ÿáá1Œ]d­ZÆ0-TUAQÝxÜ*º^¡R5ðx>Žl똀Ûå^6�#� t~ä#yµ¢(«²§HH2áHCשTÊ Jå Šâ¢¥­�Æú’$p{¼ø¼*å2ÅbM× Ãtt´ã÷zj»òyü¡¿·æ²Úã¢\.Q,Ñuƒ`8JGG;^� I’ƒ(² X,R*•±… ¾±™Ö–FdYF’dÜ.™JµŠ¦iøüÞÅ+c²¢ ±MƒJ¥L±P¤T.£ªnš[ÛæÊ/-N«ªÍÛëɦX*Q.—‘7� u˜ºA$Çí’Éesxý!"áÅÝ{Eq!°©jšf ‡ ‡ÃÛ¢R©Ì¥ç¢¡.�aZÄ T¦¦¦Q=bá¹\M×ñBt­ëÄ¿B|�j¥L¥ZëU›¦9“¤®¾‘ŽööEƒb!‡P]Ä¢Qü�ª"Q.—ÈçóhºA8§½½·KÅÔ5ò…Ñx^·ŠÇëCåJK’ ÐK’D(Á2tJå2ÕJIQhik§¡>^ûÀ˜:…b™P$2ozdÛ6¹l·/@$^2UbèZÍæNˆ¹ú™!ˆÆttv ‡æ·æ¹=>ü^åR‰b±4÷FèììÀçõàñúPU™J©ö.W5�`8JWgmeÒ0tŠÅ2áhŸ×ƒÛëC¢Vg™p(€×ç¥Z­ ks‹xÑ(¡p ›b±D¥R!ÓØÜBKsCm~ÖÔ™œ˜"MàuËä  Ã&޲®«—ª¬z�϶-rÙÜ|;. Š,ËÆ‰,ÝJêr{°-ƒìl–b©L ¥½­E–p{=Z•ìì,åªF$–˜¯ïâŒkçBv�.}¾‡C¡P˜¾úê«o €µêÁ†öaÛ6†®Ï aªK]ÞàÓ²0L!¤ùÕуaYÖÜ‹¼üù 7AKs«h˕Ͷí%+sKÊoèóCOUu-kOt`Zûò‡}+zOï¡-W6Ó4jòss�û0�*;} Õbó¦^lËIJ@VäU³ñ‚Ï@’æÍqž-µiæ>*k?eÍ­Ä‹¹ü¬ÓÂãò34Á°,kÑsÝ·'ܶ™¿—ûЪEþóâ�­tw¶ÎÏõø<±m}nžÙår-zž¶eQÕ4@Ìï _ Ö<ØÐ>„¨.×!vwÖ¸ú4^ôC5Œy³�ƒ¼œ¼…稪‹CŒ˜Ö¾üŸ)Ë•M–ï±É²ÂZ˜E­†8)‡ih½ZªNG¢Î^_{WV®·=ÿ��òýy:!p¹— iù…³Õæùs÷‰�ššš�]Þ§µzëðÜGV\´µ¶à lžÖápq„ï„$Õæ…^xȲJK[ûÑ.Æ †ç‘o‡#ƒ#|ÇŽð988s8ÂçààpÌៃƒÃ1‡#|Ç €¦iGÅ:ÞÁÁÁa-ÐpÛ¥”ËåeM:888¼(àõE�£·ÒÁÁÁa-8pÛ¨ �Ê~9‡µ x€û6§›çààpÌៃƒÃ1‡#|ÇŽð988s8ÂçààpÌៃƒÃ1ÇÚ9"µAÓµ%QØ—C’$Ü+¸ªvpppx¶¬™ðŠ>ýéO³sçÎCžÛÐÐÀW¿òUBáДÌÁÁáXcÍ„o``€±±1>þñ�ÓÞ¾² í|>ÏÇ>ö1{ü1Î:ë¬g�¯mÛ躎¢¨H’À0t,[àRŸ»^÷mÛfrtW0A<À², Ã@QÕU�–æàp¸d&Ù~Ï#¼ä’—ò<—mÛTÊ%L«4^^ðÛ¶E¹TÂòŠáOWƒ5ký™tUU1M“k®¹†ÙÙÙ%çø|>.ºè"B¡óaE);Åöß?@c{7Û¶nZtcóS;yïǾÄÛ?þ9NéJpÃw¾ÂŸR1þåSW¡2ÐÐxø¡?2>�åÔsþ’ÆðÒÝ,¶¥ó‡ÛGAñsæ§ö?½!¹mÛ íø3� �/=(T¶žxQ1ÎG?öy:Ž?…½ç]Œ?yÿúÃùÀ'?GO¿ô:‡5$5º‡¯}åë<18ÊCc¼ï�o#äY^ü,SãÖŸÿ7m¿Í„Í'�Å[ßüz"~z9Ç/®ýÛÿð0–¤°íÌ yÛ®À£Ô–î¿íÜpÇ#HÒ�!cU.{Ý8ms×3®Ãš ßtr�ÇC,ã’K.Yv®O’$ü~?¡PˆéééÃ>Û¶xhû¯ùÞ�n nÝÉ|åÿ}”È1²L�T*…n˜€M¥˜e&¿¼XYF…Ûs=÷þ¹�ÉJ€7]~.²´ðëd“ÜÁw¾ÿ=ˆw±ñ¸ž¶ð�Å÷þŽïÿæÄšñ»<á!T×Cý†0�­-47´£ÊzµB:�Á²ì§™—ƒÃ‘ezt_ÿÊ×É)aÞþö‹ùÅ5ÿÉÕÿ&óî·¾‰°oi[â~qãïØröKX_'¸î†ßò›îM¼ú’³Øqßv~}ûýœ}ñ+ˆ“Üpëul:ñT.<¹ !³ScìÚ³›®u=x”ý{mâY¯Ê®™ðMLLàóù(‹ÜsÏ=ØöÒF,„à´ÓN#3==�iš‡tž —²ÜóÀø=’�óÄÐgm>D4ªƒêGMèî¹ûw\~ñÄ {}6wnÿEÍ €@ 0MôP CmÛÆ4 ljñao!�$+¼åýcscpê6øƒA\ŠÌGÿùHª·²|ýmË¢\.a&ŠË�Ï»¸wZ â\¥RÕ�dŸ×»äËéàp¸Ø¶Mfb€¯}é«”Ü1Þõ®d}k‚öº Ÿûò·ø®ââª7¼†h`ñ{˜™žF³\rñKÙÐäá‰GÿÌÐØã#„š»xåe—â*�s÷ÿÜÍÔhNžëÉ �?çÝý$�Qïâ=ËWyM…Ïï÷‰DزeËŠçE£QÂá0}}}†�zˆÞS£ý<¶{œ /}5÷] wßy?§nhÅ%?óo‚�$fö>Á;G¸èäžyáÒJi~çˆyO6�Ýõkn¹'—½þ­ln‰ „À¬æùÙÏ®%]ñŽw¾×2½V!‘H”h4¸ä˜©çøÎ׿IçñÉ¥—œºä¸^-rçm7qç}�P*kxCÎyÉeü勎C‘%,S片îåÆßl'“Í£º¼l8îD.»ôeDÞ%é98 Û¶É¥†ùìg>�æKðÞ÷¾�îæ·�Í?}Ðæ³_ú6ÿ.àª7¼†ˆ¿øÕ·µâQ üìÚŸ°uC;ɴ£Üt³�‡~ŠÜŒÎí¿¹‘äÐN’¶JûºÆEy Gø£½fv|„B!²Ù,ÓÓÓ+þ¥R)"‘Édò�¦/¶mòÈÝw¡)~νð¥¼è´õ<±ãO$gнîP4l8�î„‹ßÿövJº5——Å“wog8g¾è4T ˆ6Õ³ãþû¸çž‡æ¯OŽr÷í¿C xq¤ÇºÒô­*�?ðýcÓËÔÙæ–_Íwþýg®§œº�rr˜oñÓÜ~ÿnlÛfdçŸùÊW¾ÎÈL‰Ó_t&í /·\w-?¼öVtg¸ìð4É&‡ùô§>ÃPEåÍoýÚ꣋Žwônã^Ú~ ÿöß’¯ìwúÙ°þÞñæ×P™ä×·ÜÊÄtŽé¡§¸îW×±cÏÅL’ßÞ| O ¦xÕ›ÞÉÙÇ·0Bª�¬Ž4kÒãËf³‹Eb±ØO¨b±XŒJ¥ÂÌÌ �@`ÅsK3“ܽãI7œNOƒýô³øß?þ„?ïÜKË‹�Æåµ•8ù’¿àßÿû~úF.å„îfôr�ßÜy ›NekO3Oô§hlßÄñ››¸÷þ?rååçáVdžzüA2v€sN;mÅ<,ÓäÆŸý„ûCû¿Ž¡Ø:.{ŹûOZF÷óOò«íqâù—òÁw\‰W•¸ü¯/â£ï{?·þæÎ:éLN“ÅÏ{ßô.Î9¾0Ø´ázJj=66ÏzœàpÌP-dùÉ�Š©øhöVøÔ‡?ÌÇ¿ø%NY¿o:Éæ¶ëþƒŸýö^Zژسƒÿþõ¼î•" �§�ÿ2N;ÿe•_úܧ0›Oæão{ 7\óunß‘âÓŸü mdwà´P~&Í·¾ü¹E+Çáº6^÷ú×õ|4x0ÖDø¦¦¦°,‹x<Ž,ËÔ×ׯx®ªªÄb1 ÖKlkk[ñÜ��;Ø;4Ë%çn \,Ò²i >Ÿ‹{·ÿž ÎØŒO‘W¼ö Ø&gžs.ÿuãv¶ßõÇ­kbbp�ì粫ވGßo‹èò9礓yðÚÿa÷dŽMõ ÷ßóu­ëÙÒÛ´r¶Íèð^Š>×¾_ˆ—Ÿ~’£#èº�$Üõ¿·aÏ¥å ûLf©TuBÑ»È÷¿úF^z>�íl=ûbâáÀš™ 8¼0pù‚\õî÷cÛ`ê3|äí_ÒS„à„Ó.ä]oû[T!�$yѶ©3>6F>—!_(QM'éëëcj:E¹Xd ¯�B$DsKnuq›•$�ÇãB]`~æò¨<Û×xM„oßBE,£¿¿ŸÉÉÉÏ ƒœ6×Sš˜˜Xñ<ËÔøãïï¦bÜ~ÃO¹ç¶_6Ùb™Jÿ ŽfØÒY÷ŒËj\Ï‹Oêáþžá‹ÏàîßnÇò5qþ9'°sû~áB愳Ï!ò‹›¹÷Û¦"Í9¯º‚€ºò0WRdÞôa¿yŠ$ÉÈ,ÛÑ›§�ÍcYC;£0>°ÿ€+F§¿Û²è=þL>ð.�[n»“?l¿•ÿNåˆÆš¸üÕ¯ç¢óNY´Ríàp0„$áõú0ªåçÆdIÆëõá:àÝ2µ×üàÛl¿ïQl ùÆ`’Ïöí —�A7á_ù‰ '½ˆ÷¾ã-X:øCQÞøö÷о`qCñ¬=ƯºðÙ¶M2™Ä², …===œtÒIÄãñ%çf³Y2™ Ùl¨õW2iÉNòðîaº¶¾ˆW\pÚüJmft7¿ºñvxôI6wœóŒË-„Ä™çœÇöÿ�Ûs�=þ§œ{ î= &:8õ„nÝñ'ˆRQ"œ²uóA{W�ÇãÁçó=­rÅêȲÌ9—üsÁÉs_V­ZÅB&ôc™ÇŸ~.[Ï8—Ùt’Áþ]üä?äæ_ßÈ©§Ÿ@]Àuˆ\Ž C�ÞËo¶?À_^öjNÛÔÊþôXñõ¼éò¿bû¯ÆCYÞò¦723ô?ºæzî8õ<^vÖúýmG€�eåÈJÕšôø Ã@Áw¿û]zzzxç;ßI8®­‚š&ù|žk¯½–?ýéOó•6 cÅ4Ÿxô!&g4ÞpåK8ÿÜ“æ¯ä6ñÇûàÁ?ÜËß\üìv~ôœp š®ã–nÄå‹ðºs—RIqqö‹ÎàŽïßÀMã‚¶®3éj�=«¼W"ÑÑK"àåîÛoãÔãÖÑÕ%?3͵ßû!4oæ-¯{%ýúgÜñÔ/»üÕßÝÄfŸ‡Ž:?ƒ†57ÇçàðL˜–¹¿mÚ6æAÌŠ…6!N9ùTÖÕI(@¤±…�7ÒÿH ilí §ÞÇM?¿žÙt~Mj±êÂ'„  ár¹ðz½µ� CC|ñ‹_¤§§EQ(•JìÝ»—t:M(BA©T"‹-Ûk²Ì ÷ßy/þ†ŽÛ¼~Ñ1w°�3O\ϵwìâñÝlŠ`õ}ðÒ.š÷W=QÎ{ÉY<ü½_ÑÒs2'ö6Ì¥q€]žl>óÿþ &36—¾ùÅ�_´|Í–Å Q›¿;à�7ÒÊ•¯½Œ¯ÿà—|úãÿÌÆÞV†ûv“)Txó¹ƒ×¥ÐÐÑÊÐu7ó¥�»8á¸�Lõ±w"ÉÅW\JÌçôöž9þûÚóûðÜ¢£ C»hÚðâeÏo^··+Ï÷¿ÿ-|6;‡gyãå5s¶õë7 Ý°�oýëWñÙy’¶ÂÆelpWcbF:?ò‘�¼ZQ”U‹6”L&¹ï¾ûjF¾’„ªª”ËeFFFajj Ã0ðx<ócwMÓxñ‹_LOOÏ’ô,½D¦b²í¤³9qKç¢ý«Bâõ�ø=>Ú:ÛiHD‘/'lÝJÈëFVêÛºXßݺ̾W��:Öõ°¾³¶¬^×ÐB}} \p�ñšÓaC´¾�Ízæ'c%ÕOÿƒ·1ãjᵯºô ;:Š*©ïऎã.#�BÆãRèÝz<í�1„,áóGÙ²e3>—LK÷N9~#ª,p{üt¯?Ž7¿ý=œ±µ IâM�œqê6<.IRhhëäŠ×¾…¿:ï4Ù™ßsx¦$!ŠFƒó­í�l=þD:Úê—´)_¤�ãzÚ™M§j€‹.}Ÿ½ !±ÆÖµÆH§2¸1.ÿû7pæñëæ;;¶°‰Ö·²yã†åÛÉÓ P(L_}õÕ7ÀÀ¹™LæF�Ç~V)„±±1>úÑ�.»?w%|>ŸùÌgèíí]­blÛF«”éßq/ŸúÂ79í¢+yÏU¯@]ƒp�¶mÏÏ�.×3^x–š 88¬¶mc[6µm© ßCÛ¶çczxìH211ñxww÷[€ @_“9¾ææf¾öµ¯tÎî@dY^v乆¥—øñw¿Ê�÷îÀ_·�Ë^~°¢àîq‡µ@±`·ÓÒcƼ] ÖDø„$‰µÈjÍ‘d7\üJ¶�y1-ëh:ÀªÝÁÁá¹Çs×)Ýó!+ôlXyﱃƒÃs'憃ƒÃ1‡#|ÇŽð988s8ÂçààpÌqT7¾÷½ïñØc�-úÍív³eËÎ?ÿ|:::ŽF±ŽŽŠðMMM‡ç.�Nóè£�222ÂC=ÄUW]Å 'œp4Šæààpض…®›¸\ÏÜ'ÞÑ䨙³Äb±y_{mmm¨ªÊîÝ»9ýôÓ¹úê«ùà?ÈÆ�W4À­Y|›ºC–eÇh×Áa±m‹þÇä†ÛþÀW¾™ŽúÈAÏ×*%¦¦¦ÐLA¢¾žp`¿G¢r1ÏôtS(444à÷.Ýêi:ù\–Ù\�×G8Æãv=ã¶¾êÂg?úÑ�ý644„Ûí& ÒÒÒ‚$I„B!TUåÒK/EÁ¾ð>ö±�ÑÛÛ»låRC»ùï›n¥hìW>ۆƶn.¼ðê"þcFmÛ¦\*£º=(²³[Ãaõ°m›Á'à‹_þÓ¹"Óüó'>IcØ»ì{gêE~øµ/pû;0-èØxþð‡i‰û)ÏNòõý*÷?¼ „DÏñgñ‰�¿��[žÏ«”Oqý^Ão|EC’¤²aë©üÝk^à ½-Ïè}_õÅ Ó4¹é¦›¨V«˜¦‰®ë„B!FGG¹å–[¸óÎ;çÝÑg³Ynºé&ü~?ßþö·Éç—wSSÈLqïïïäOO ¢iU4­ÊèàN~yÍxß{ßÃïxbµ«öœ¡œãªWÿßûùÝŽÓ)‡UeÏŽ{ù—Ïþ+MÇŸÉW¿úÜ•4Ÿúä'˜X!ÎMÿwqçC}\þÆ÷ð?þ^ ã»ùõíwðàïÿ—GvMñÖ÷ÿ3ÿô�W2ñĽÜö‡'ç#0VrI¾óùOñËßÜEcãßÇßÿ>.¾àt†ž¼Ÿÿ÷‰Oóðž•�Œ5ê¾üå/Çãñ`Û6…B�ï|ç;„ÃavíÚÅwÜÁÖ­[innfÇŽX–E*•BÓ4r¹ÜÿgïÌ㪨ú?þž»_¸ìûŽ€€ ஸænšeÙjVÚöhû^?ŸzÚ³l±,3·ÊlÓJ3×ÜRsßP@”Ev¸páî3¿?@ÅR [œ÷ëÅK¹sæÌœ¹3_Μs¾Ÿîîî¬wÀˆkwMœû·¯göÌ/ø|æt‚^%1òLª\]�‘Òò $”ø`Ð5íVK¢Hey)FS­ �~¨òní6 u;nn†F §ÓA]��ÞµJ‰¥®§ @£(-.ʼnЀ@4*%–ÚjJË*Ô:üQŸå'I"ÆŠ2*ªkQkt¢RœÖ$´b®³¡sqÁb2R^iD£w#ÀߥBÀé°QSSƒ°Õ™¨1™pi8Ÿú¿˜U”VQªuøûû¢UËÉ:2—Ž$Idíû•ÉoO'6u î¾/W/¾ødn[Î_màͧâÓ ��›¹—w¦~ÁMãa@ÏXÎ|ƒ£F´Ö*²ò‹�‹MáÚþÉÌÿê{ªkjA¡$¡Ko¸oz56s K~Íê Û¨³ÙQ(U´‰ObÂþC°�Ù‡vðÑœHHiÇží;°Zm(Tj:öÎ=·�¢*g'/¾=›:`ëÚ¯8´c)ÿyê:G³qå÷|óÓ:,V;‚B‰P8ãîÿIÑ¡­ü-Ëü›�D‘£‡¶òÚÛÓ¾×`î»k Þ 6¥þ<ÿÂs¼ùÆ;¼?õ=~äQ¢‚Ït6"“ðú‘�Þ›LDh Dzó°å˜x«&Ÿœôƒ”š%>|o2Eù˜\|èÜ¥^†Îi«æ—�;qõ àö[®Åå¬I…REJ¯tÞ´™Í6r²r™û5 �@î™øî¾ƒXÁô÷Þ$íD¢ÓÎòŸ²èçÍD%§òäÓOsÝàžä¦meÎgß`´ØqØl”•Us¶Ø¬Óf¡²¬ ³­^u¦ÎTÃ�½»0©˜øÐCôïÔŽ#»6òÞÇóiÛ¥?�<ò íÃعq[öf#I–/`ÁÒõ„$¤òØO0zXŽîÛÂŒy ¨³9pÚ¬”äå°aÓ.ú�¼…'˜Ø›–϶ƒYø†Ås÷¸[P ¯b„ûh@QnŸ}¹¿èž~ö9î;Sq6ó>[„Ù)þ_£Ì€$:9¼o “ßžŽYïEBlôyeêêœôèšBÁÑ4>úpÇ Ë·¹Dóä“O‘š‡ZAR TJˆI¡¬7.’”DÆväégž¥]ƒ7µÃl¢¢¶Ï€8ÚŸ?y¢Ö»Ó-)Éi¥¨ªÍÙ{�››»wïæÀ�8�NœN'¹¹¹tïÞàIÕhõz4:¥_:Ï4 IDATÅ8D'ÖýŒÍ5�‰¢]„?’$îoà±ÿNaͺ̈́^�ÈÆ‡j׋Ǹ7�†Ž)I¸j´¤;°ZCN뜩G`îŸxQA^$ņ±wû”1)Ü7öF\µ*‚<´ùïk":BXµ|ÁQxð?wâcÐÒ1¹=µÅ…|·e …cnh¨UÅÀ‘73öú¡d¿ò6ÙyÅ íўΓqBÛÒ¥K'‚@éÑJj )=ˆ‹�EÛ¾¡á‘TÛ4¨äÉ™‹Äf®åÀÁ ’:uErÔòÅ'³ŽŒÆÛ팽äÞ_WóÓætºöì�8xðm‚z7ØK DÄ%q\‹‘)o¼„Ü™ÿ›0–Å_¾Ïše<ôÔ3ø¹6U·[-8ívÜý}P7s¿ ‚ow$ ª«-çmÿ=þ²À7zôhF� @uu5Ÿ~ú)………Jݧ¥áj¢è (ï1 ¬÷Á�À˜â}u”—PVìO]m}»wÀM§i(£dØ-ãÖPçÅž™—Ÿ^ ²Ü ¥­J 88´Q©Y«Õ£W 9±×VPl²£N1î'�ÆA¥¹Åˆ6#Õu¸‚JOtx›3Ç@«×Qk:ý…×G_鬎œ—a>:¾ŸýÙ{;F÷Ô^´kŽZvY“¹H´®îŒ[9ãŸâ\1x… Ð.©'�>|Çy.k–Z#é‡Ò¨¨¬ ¤´³%›_~ù…ŒŒãTUØÙ¼qþ^Þ$´OÀË­~©‹J«E¡Vaª¬ÆÉù¯¦’$aµÖÏòj5—Æþ#Ýîîî\uÕU|ýõ×J}å§NQY\ŽoWÔØÌV4jg}) …½‹†§‡Ý†è½æ÷Ô÷/bdà¦U�vv$ô*5®®®�·“kb ‘‰)xôØ+ëëü½±Îsñ �ã•×&³zõz22ÓYµd'K/¦ïàyø�[Ñ*ålE™KD’8oáìÙÛšÁVWÁ”×^fwz�»ÍŠD%³ò2©­­Ÿ þêÓYØm6£xíµWð3hPjtè•jŠ‹s(«±äÞôÙ”œöÊFü.<ùy!þ�ê�Äÿ læj–ü´˜‹’k:µG¡PÈžyk̸x×÷ÆL•ùdåW“ÐÖ¿Àô-iû3±ImìZ=´‹ìâZRSS�$#Å•uøÕ_hk]-¯)}>Z_|žm;în\z…Vs5u¼¼¼ÈÌ»øú„³»ÝjF¡óàÆ±w"4¬‡šùÎdÚL‘qÞ—fk)#Ó²wýJúÑ�ô:=ƒyoÊk8;2é?cøñËi¬O+ç/ü—šûyéåwX»é0·^�‚JçIÏÎm™ûãv–®ÚÂý7lRì8�Žwx¢ý/ý^þÛ>€ÊÊJ>ÿüóÆß­VëïîStâdcÞ¯±¢„õ?/cïá\Úw¹Š¾]APйkO6Î]Äœy ¹íúÁ(ìF¾ûâsŒN5=úõÂ;ÈŸäèHÖî^Ëü…�ŒÐ…S9G˜ùÑLð�£K÷T´®zD§“¿^ŒÇmC©.=ÉW_/ÁöÚ«T{Ò»w{mØÀw‹CÚ¿µå§øæë/È«ÒñÊ«Ï]\E‚8ž±›c¹Ñ„°wå·Ì\²™�£ÆrÝ€®ËÊ©«­C©0œçV/#s)Ô™ë{k’$a¶Ù/X¶¾¨A©Ra¬(¥¬¤’È*• 7ƒ5Ù—ã¡Ò Qˆ ã5‚ ¤ç€‘lüõ?ÿ0Õ îÝ �ÀÑC{YðÃ"ªlî¹q$šX=ü­_`` Ï<óL“Ïš/, ì\·”ƒ[VõÎlž> ¾övn¾až.õ½Èãú‚S¬\¿’—÷oBmXE5#oOÏÄ0”*%7�OÕìÙ¬øv[Ö.ÂTU�›O(w�¹ ƒ×Ä^ôë¼™�s,}N‡_ÿ@Ü5ÕgNI!ÐtV…@“1‘†ÿJ(#nO~étV|ÿ›Öü„ÝlBйsí˜[ðsw¥¡±­MÚŽÐøê®ÕûлW"+¶náÕ—²xè¹çh—ÚŸv{ÒXöÕ ¶®úkm5’Ú•ko¾A6—i!>�ößhϼ¡UWU�Ð}D³{D¶ïDxðJæ|ø6.j ³¨cL�ntèÜ�Uë63õÍ—QK6ð $µës1ß°¶<ðèÃ|öéüð˪×RSÅÑã9Ø�g�- ü‚ ôEyÎ_‡ÝBvF%•Õ€€o`(q1‘(Ïz=¬«® ãH&ÕuVTZ-mbâòóB!õÙLU<”ŽÅîÄÍÝ›6‘Áåà…Ÿ—�üœ,L%ÑQmP+8vŽe¤£ñ$"4A°™MdgeãNHÃd‹ÙTEfF&U&3*�–�ð("Cü�ZcÇrò iƒ�G}—Þi·�‘™…Á;˜ˆ`_$IÂR[EFæqlN‰¶ñíðrs©¯7ë(Æš:”j !áQD„4i³ŒÌÅ"‰v2Æìtž·ÍÓ'ˆÈðÀf,[¡´ —½Ò°Ø!º]{ÛF 4×eí²¾nݺ5zæ6‡ÑhÄl6_tà“‘‘‘¹X.»½¤J¥âž{²¿•š&###ógÑê�O©T2jÔ¨Ö>ŒŒŒŒÌE#/æ’‘‘¹â�ŸŒŒÌ‡øddd®8äÀ'##sÅ!>™+9ðÉÈÈ\q´úr»ÝÎÎ�;©ªªºd…www:w«k+��ŒŒLK�LuVÜÝþ™Ïf«>›ÍƧŸ~Jvv6¾¾¾¿¿Ã9TUU±cÇxà�ó‚Ÿ$:±X¬ˆgS ½‹þ’õ÷³ÉȾÝûŽI"2ÔçO­[F柆贱qÅb¾_±‘ÛxœžIm³|eq{÷§aq DÇ'Ö¸íÔÉl¦eâThˆOê@Tˆ_ã¶²S')(©<ËEMÀÅàFPPP³6”—B«¾êêj6lØÀý÷ßßâÀ÷ù矓ŸŸO\\\“mGöóñœÏ©¶ŸøÀÛ?”«¯I—äx4ª?G…ÄT~Š/g}Âà»'5ø$ÑInöaì*w¢#Ãå\X™-¢ÓƆ勘·p)f¼û&ÊgþK·vmšµy4WòÞop¼Ò‚«VÀ*éxì™çéLqnS¦¼O…Ô’qñJ^|ãU"|ê;9{ù‘Ù‹7Ÿ¥Ï! Ñéðò `À°‘ 럊¾"¤ÐÊ�OEjkk›HM]*F£±Ñ~òlìÖZ òNâÛ•��ã(È=Êž}™úÖA†ß|cG nâfÖR¯ûÞÔE§�>ÿ�RC/>õ0.YöIæß‡è´óËŠ˜·`}®¹™ëwgþì�ùpÊë<þÜ tŒ�h"ö �³7YuÜûÄ“Äû ¼ûö;lÙ±‡Ž±Á¤íÝE™YÍÃO>�§³ˆ7_y‡­;³ÖA�N”ZcテItR�“Éêu˜?{•5fî=¸Eox—%em̘1-Þÿ÷T™»öèÉèk4þ~"s?½û!+¾ÿ†øØv¤&Õ{86Nå�àdA¨´DE·Åß׳QMÂa·Qrª€“EHJ5m¢bðóöh¶÷&IÕ•¥TTÕâêî‰ÅX‚±¦“T͉Ü|ýðór«—Ç®3‘}4“J“ƒ›7QQ‘¸êÍ—íy§Jñ ¤¶¢”¼Â"œ¢’˜ø8¼Ý¯Ct™¿?¢è`ÓÊï™31Cnº“Û®»�FÉ�<Æï¾ÍS^çѧÿKÇøˆ¦ -€¥BÀÝÛ_OÊ*˨««£¼² ƒ·AÞX‹JêE}�M{j­ŽÄ�hsZ8·G*ݺvâ­·§²zñ÷ôîÝ�ØÀK×Wù[éñµñœ “ˆ¸Œ»ç^{k:ë·í 5)Ñiaá'ïóÃúíØõB‡jW?&<ü(ƒR“�f¾žû KWoà´¯�RïÁ�ããÚ¡�Î;fEAoO~ƒ|“–qãngчï‘ï�€Ý<ûÔnúÞúO�Dɉ#¼óÖT2 Š÷ Œhσ=@J\(%Y;y楙ôîו[¶Qk©ïÙz„ó̤ÿ‘ØÆ¿u.šŒÌ% ‰¶¬^ÄÔYßrãÝqË5‡‘´®Þ<þÌsL{k2Ó¦¼Æ#Ͼ@çøˆÆ}£;÷ 6lNyoo/ªÊ‹q¤Ÿâ©Ì]Tœ*¤NTðò¤§¨®ªDë߆~}Úýîü�è$n½no}²˜m[÷{ÃU—ܦår–èødÂÂ(Î/Å)‰l[ùß­ÝNÏ«Góéü¯˜ñþDy L…F3…™ùeÃV:¼‰¯|Ç×óf‘ cùê%Tœep,IP–ŸÁë/¿L¡ÙÀÓÏÿ��ýú0å³OéíCLçÞ|:o>ߨKM93>þ�¬2>ý .äONÀZ™ÃϤÚê@!(+[w¦qëýÏðí‚oyþ±{‘*ó˜öñ,Œu¿¯@-#Óšˆk–~Ë;‰Ú7SqE•gÄw%I"}ß>´nnÔU—óÞä—Ùv(»q»ÆÕ�ÿ¾öOÈ´·_;Ï[£9A *.?•H…±¼EíúÇ÷øšCP S• ‡(²{Ç<"¹åúkq×k!4–»ïų“g±ûH!É:¢Ó‰ Ù©®©%Ðןçß|»SÂણ¢²^ô¸²$‡·G¹èËÏ=ERL‚  ×»¢ÕªQ©Õ¸¸Ðj”œ<‘KfÖ)ŒÇ�Þ)‚@ç>C¹%/›9Kw’v¼ŒÓ¾i½ÜȈ]Q)t¹êjFÍdþŠ=œ,­")â Ô22—»ÍŽÖ5€ '"ÚŒ|óå2ºõD¸ŸWC ‰¼¬Cdš¹óîûP ¢ÙŒ(I�ö’:Wwú ŠÃb$3}bHûzÅ&S.eʸúÚkñu½4UpµZ‹VµVs‹Úõ¯ |’("‰Z7í”a¬©ä•çŸãô��Ó^ß“+É+"pX;:tLbë†åÙ»ooºõèM¿~}q34Ôé´²jÉ—X­Vú޾•ÄèÐfÕfOS[U†E¡¡Mô™®» PŸ€ðÃÊŠÊiÓ0Ñß¡-ª‘VAPÑ1)ž¯Vl¦¼¦®u.�ŒÌE¢uq¥ß Á@½½äÊ«9×^BÂÚ2ôê«›µ—Ì?–ΆMÛ¨49–[ˆ¹ÐÎÇÎj²î¥ÄŸÍš‰—§']{ö!%.ò¢ÎËb1QkOWC‹ÚuYŸÅbÁáø}_2¥R‰^¯oñqNfgQTPFô@T‚€J¥À+0”Ñ£®A«júv‹ÎÍ—‰�<É £Ydfaï¾ýüôÍgì<˜ÅóO>Øø5»ù‡l+e÷êEìêÐŽÉQ ~ ¥ D §µ©‘ÃnETg-µq8Å&e,f  þ•#2ÿT$‰ .m¸ÀÇÕÅÇyû�w1ÚÔúz`¶ŠHR EEET[D$§�’Sù?²Ÿ ¿þÊó¯M!.Èã7Çù$ÑÉá}»0Š*|½[Ô”ËúdeggãïïO||<µµµ‚@||<®®®”––Odd$‡nQý’(RZxœ¯¿_L­Ò@¿n�P(ÔE„`®‰j—Lß¾}éÛ·/�“âñt÷ÄÛ×�êÊRrò‹oÛžo½“W_“a}:r2óUÕõnR(´Œ¸îvžzâtÔ1gÖg+¬hr|Q‡ÝÆá]¿òÝOqó ¦gjr‹ZѪ=>AP*•ØívT*‡ƒ¨¨(BCC9~ü8^^^´oßI’(++£}ûöÔÔÔ°|ùr‚ ü¦WǑݻY¦¬Ï/-Êcç¶­–×1`ÄMôH‰A O¿Aü²wÓ¦ÏäöG¢¶W²xþ×Ì«ãÍÓ¨IßÌ”i_�Ðccn¹©æ²Nâêéƒ^§…†7N… "¬]2Ýs3ïÎø’ÙŸ}Ás�?€‡F@¥Us"#�5¶Ð¹C2�ÁQtëÇÏëd®¯ž>�â9°uK7ï#¢}#¼©lˆï{6¯d¦NÁÀÞɤíÚÄò�{‰ë1Œ0?ÏÖüzddZ€“²òRŠ‹ëÇä$I¢ÂT‹„[³¥ÕH6 ŠKð‹9q¢„Žíê—Ÿxº{SUx€´ô,¼œ§°H*mSms­‰UKáãªÁi·RXp‚]»öãTé¹ýŽq„·ÐºUŸ››�:ubõêÕøûûSTTÄòåËqww'33½^O~~>%%%œ:uŠo¾ù›ÍFaa!»ví¢¼¼œ   ‚ƒƒÏ«[P*Y¶�u`Ký‡ mã“xpÜõôZYÿ×)±×Õ<\Sǧó¿ãõ·àÉOÝC\ ¢÷Fç±tåzžÙ¾€€È8î7Á¾Êóêm"…†WÏÎý¯ã¶œ\æý´‰O¿�≻G2`è(|4›¹½Ë±[á‰1ƒÿðc(>™ÁŠ…óY±P¨éÒ{0÷Þ=ÝY «»õíFæ®UlXõ ›ÜƒÇ‡K W¥ËÈ´`cúä—ÎÛ’:ðæf÷ˆîÒ—ÎI[˜7í $  M"W¾ €n}°yû¦¾þ_¢ÚudXß„3¯¹ØêL¬\¼°±>ƒ—ÉÝú1ìškèÔ® -¥U]Ö$I¢¶¶–E‹a2™.Y¤ÀÕÕ•áÇãççwÞ;¿ètbµÙšÔ)J•µJy^yI1×ÖRcªC¡Rb0¸£ÓªˉN'fs-µuf… www4jUý rQÄfµ¢TkP7ŒÍ9lv‚B…V£$¬+v‡µV�N£F’$DÑI�± »”*5nn†Æ:NÚÈÃ/Nå¾ÿ¾E¿„0jL&Txx¸7Û™¿I’°Z,ç­�…ú{ûôór.v«™Â‚,�à� .ÚF{I›¥–‚üBœ 5!!!¸èÎÌî:ì6lö¦s …•Z…R¡¸¤ç㲺¬ ‚€Á`àÎ;ïüÓëV\∠(p1¸ábh¾K®P*q5¸ãj8ßéM¡P ;çXJ• ½êìË' ÓëÑq¦\ý«¾ Oïæó”¥³F„uztú–uÛed.‚ œ÷\ j­žˆ¨˜fëÓê Dµ�mv?•ZƒJ}iË\.yÚð/DïáOBBGü=Z6%/##Ó2äA¤¿¯ð^yíÅ¿ú4dd®8䟌ŒÌ‡øddd®8äÀ'##sÅ!>™+ŽË>¹QWWGVV{÷îåøñã˜L&t:ááátèÐ�„„<=匙Öã²>QÉÈÈ`áÂ…9r§Ó‰Ryf‘î±cÇX¿~=Œ=šîÝ»£TÊî222>—%ðI’Ä–-[˜3guuuhµZ´Úó]’DQ$??Ÿ©S§rûí·3bÄÔju35þý‘$Iâ7óŒÿœãHH’ÔêÇ‘‘i)õLõBŠs2.~k[kÒê�O’$Ž9ÂôéÓÐétˆ¢ˆÙl>/…M£Ñ Ñhp:�Ì›7777 ÐìÅp:l�Õ8Ŧö’žhTͧÎ\.$Id÷šå¤)¸ãŽá¨Zé\$IäÐÆ5lÍ,dìÝwaPËÁOæÏÃTYÂŽ]{°:$@ÄnwÐ&¡+I1Á€“#û÷‘WRyÆ`H’p÷� kJl£\›$IœÌØÇÊu¿bv¤tëCÿÔ�)k‡÷naý¯»p*4tï7˜ÉmŸÝã‡÷pøD}û÷Ç]÷熪V|V«•éÓ§#Š"Zm}ŽžÅb!99™¨¨¨ÆrEEElݺ777”J%:�ŽÏ?ÿœØØXÂÂÂΫ÷Äþm¼4ù=ªìMƒ§«‡#F�æúƒqÕýU½E‰‡÷²á¨š±w oÕãäeìgÍÚ n¼ë9ðÉü©‹óY0o.å ¥,;¡íñú Ïà¡—ØüóR~Þ•~Öíº�¢sJl㬩±0“×^yÉ;” w�ßÝ‚ãé—Ò#žãûeò”ix‡µÅÅYÉ”�[ùß{ÓèQoáš¹{ 6f’ؽ×?+ðI’ÄæÍ›)((ÀÍÍ­1’K’Djj*C† i,»oß>¶l©WY•JE]]«V­âÞ{ï=¯'(RŽâ¶ÁÝ(‘ÇSÞƒAû&§8ÿºCËÈüQ‚Ú¦ðþìyHR½šÉª3ùâ§ÍlÚ›Áµ}’÷Ø$nw6½É•*5g�ÌŸî�ÝþªÒSìÞ»—üÂb$AIT\{ºtJÆÐ X!:mìÝú+‡Žæ ¨]h×ë9ÃVs û÷î!3;‡S (,‚ÔÔT< ¿oâ"#s6 ¥—z1\I’|Íu¬úekWüD¯Žqøºéø½'ÛÕÝ {÷íCÙ.'PT�GvöQNæ‚ऴ8�£'Ó¨pH¸{\ñÝV |f³™'N jP19-;!y*I’Ë(•J”J%¥¥¥TTT\0ð�‹›w7Ü|=‡²ÞfÛþC\Ý»=æªS|0ù-öå„ÂicŲ¥lÛ3ˆ'º‡Œ[øio¡Ñ DºSxd'3>™E|ç~´�{W�ÀŽÕ˘³ò I½pìànfÎ_Š»‡J�ƒF ïä ~Ùy�—'=Ž¿GÓ #:¬|÷ÅL–¬ÜŒÁ×w ¿¬YÅòxúù§‰ ñ¦ªäÓÞ{—´„â´Ö²|ÅJú\}+ÜuJÑÎò¯fóå’Õ|Cð0høeÕ*JP?Q$9í,úl:?n܇_`0Z¥ÄÏ+–²u_Ï<|núÖQº�ù÷#¿6 Ѓ/–mcËÞÃ\×ï|ëÕs‰è�Êо{øeé6¬PRSU‰ƒ2&Ÿ8„±¬ ›¤à£÷ÞÆé‰KLÿm/Ëø|«>‡ÃAuu5J¥«ÕŠV«E¯×c0pqi*Á¤Õj ¨w³Z­ÔÕÕ¡Óé0›ÍX­—f³Ö¿_ÊòKqH¿¬XÄΣùŒºã>nvJ{-K¿šÅ׫V²ªK/Ú&¤àX{˜“ù§ˆpeïîC( N䞤¤²†0Oi¹øÇ¤ì®á¸¢ÍJXÂP&Ž¿ O�ÀÒÏ?æËU[I?Y‚ƒ‰ùiN¦oãÇUiÓiÝwþ:öo_ÇÛÌæÛï—ðìƒwQ\�K•YÁ˜{fxßÎØëŒÌžö&ûvÿÊ©k£«9΂¥kŒïÆãO ØÛ…=fÆÜùœ|Öš"ÖïL#ºë`ž{`,z¥ÄšæñÓæ*Lf9ðÉü!AA¿!ÃY½i7kV,§O—öxÿŽ;šJc`ì£ïàã«+ùö«y8½c¸sÔP6®ZȾ\ãîº_7ÚDµÁE{yÆå[u4ülÙx§ÓIBBS¦LaÖ¬YôîÝ»IÙ„„fÍšÅ|@·nÝp6Œ u—vàú«ÙŠ(‰dÚ‡o›öŒÔw®>Œs'~Z�#ûö‹·dääâ°YIÏÌ ©so„ºŽåaª(£0ï’Û¡<혦öäšáƒôvGçâÆàk† T Užw:iiG°In¾ùZBý½Ðhõté=”Þ)‘de§¦ÎF\Ç~¼óÞ» 홌¥Î„Ù.ˆÍêÀjupêèAjì0ê–»ˆ òA«s¡û€¡ôéÐîì Ž (<~”½û�`²ØtÓ=̘þ&~ºÎ¬Ìˆgp[†õíBAv›w§]Ô>*µ–ðèâããpwwÁÃ/€víÚèƒÎÕ@Û¸8ÚÆ´AÇ[õHjµoooÊÊÊpqqa×®]8yä<<ÎÍf3sçÎeíÚµ $Ij¶wø{ˆvN»C€‚h£¸ ‚ öq9«Ç£uñ!:Ü‹ÊÚJtÞAÄú’¾'ƒŠÞ¤eñŸÉÏ£/;®�‡ Nõ¤¨NÁèä3Æ&‚ A«êÎR�uõ‹IäT~ Z¢#ϨQ+TZB¼Ý�Âú6¹‡p÷m×3ó³…¼÷æ‹‚ж‰É\=ü®ê™„²ë?™KAô2œÕ[ö°lÉO HMÁ ùíDƒÛÖ²xùzªM&NäaÉ,eÒñCç§Ú¦ä�—^ÀÍàNïÁÃqU÷ËÒŽVíñ¹¸¸Û8nçââÂþý{ؤ› IDATûyï½÷¨ªªjR¶¶¶–™3g²nÝ:  …»ÝNpp0~~~—tÜÃûwsòda¡�¨jÜ=]1šLØgl�3eEFôZT*:vK¦¦ü{¶oǬ £cÛ`RºwâTî^Ò÷ïGcð#!Ú¿E×ÁÕÅ€µÒHm�å̇’Deu97=•‚µ æñóöCôq+S§}ÈœO?åŽúÕ—<<Ý@²Rf47©£Ör&H ‚@÷A×óɧŸ1õí7¸ýæk±–�`ÚÛ¯s ·¨Eç.#s.^Á1\Ó¿;ʇY½yÿo–-ÎÚÍ;ÎÂ,¸�’œ‚‡»~��têÔ‰�� \ÝÜHJJÂ]cg·ï°ùpá%[T´„V | …‚þýûc·Û³ ôz=éééL�:£Ñ€ÉdböìÙlÞ¼WWW E½¿ÍF¯^½~Sbþì×`ÑaçÀöõÌþz �@†ôí� ( iIþ‘Lež¨Ït�Þ¹‘ã5N‚‚£Q+ÚÄ$¢6Uðí÷kˆï’‚»ZI»øj‹røéç�D&wƧEk‰"BBQ:KùuÇlI’(?uŒ=»Œ‹^MMU5÷@Fß8’èÈ<ôjŽÍm¬# MJ$Ö,_‹ÕQ? P|ò([g5©ª0—eK~$ýD Ñqí¹iÌ�Ü{óP�ÌT×]Ú8©ŒÌ…%Ýú§��†¥K–Pg/X¶8?»Ó“;ÇÝØ[GèETbgÆŒCjÇxÜ|uóî¿ï^•"9G Ï?^+´¡Õ=7âããéÑ£»wïF¯××ûWèt�ÁïþûïgáÂ…lÞ¼­VÛô¬V+QQQôêÕ«Ù1¾Ó6/[ByæÊKNqòäI�cÄ6þ À�£Øvð=f¼ÿ.G®ê…Ò^É/ë7ãîÅða©(þ¡y‘–SÎÕ‰‰‰ÃC¯åXµ‰‰qg­C¼ òyç�Ü«?É+6°ú»Ï©,Ê!ÂßÀö ë)qê™0rnz-þáA˜öüÊGN§{û(ölÞ@VA)‚¾¾—×…¾"Ù¸î;Þª."1ʋͿn¡´Æ §}>$+«—ý@Õ²µ :O��U?-ÇÅ=˜pÙªRæOÄ+0‚aW¥2cáZÞŸ>‹Po@Â?4‘!ý;7fnxúx£ÀÈê_ÖsÜK"ãX1CSC ¥º`K—.ÃÃYF™|šÞ§¦ª ¦¿3·³’DQ͵·Œ¡S»ˆŸ¿ˆ|öÙgoS©T­²ÐKbccÙ³gF£¥R‰B¡@©T’ŸŸÏÎ�;ÉÌÌD«Õ¢T*{z:�ŽG}”°°°fŸ¥¦’¬ã'1��F’’N©ý¹kÜ]¤vJ@¥¨Ÿqó "¡m8%yÇÉ<šMaQáq)<øÐD¢‚¼êM�4LEùÔˆJF^=¾î:”,ŹԪÝvõÕøzÔ˜ÊâòÊêèÞ«;>õã�N›‰=2IîÜ“˜P_ŠO£B4пOGÔW’RÚ㨭äHF¹¹ù( þŒ»ÿúv‰C©P�ÊQGfVÙÇŽãšÀ°~�©5;éÞ£Þn$$'c*;EΉrN䙨�}“(©pÒp_<<}hBia.iiideçâÃ}ï'."¨ñf”‘ù£‚¿ @òŽfR\\Daa!………ˆj?ºuŽk¼×Ü|¬ÕìÚ¶�#Ù'ˆéØ‹17ŽÀE£Â/0ku![·î ûd]úæÆW¡n°^-ÎÏædq5›…ºººÆ³ÙFBÇN„x_ôùšL¦’iÓ¦ý˜±Uí%Ï&77—�>úˆœœ4 *•ª1Aùtr²ÓéÄf³áééÉ#�¾š= …k7öoOQN:/¾:™r‹–«zw¥¶,�￘Mæ‰S<óàݸþŽ�ŒÌ?�êòÞxõ5ŽV:yþ¿ÏÓ$8 ÄuèË£÷Tòá§ß`³ÙøÏ¸Ûpmó IìÉ„» ønÉj¾Ü³…ÚÚZDª˜=+SM ¢$ðíü/ѹºqÍÔ%²É3-I ‰ÒyËÝD§ø»bÀ¿E«>­VËĉ1›Í<þøãM¶¹ºº2aÂzöì‰Á`8oÿI“&áêêÚ¬1ÑiÖ.øŠìí«9ûºØ­uœ,1 ±ü§(vjyä©ÿ£oÇ8�ôLúž×g|Ëâ5;¸·ÁÛB©váΉ�sMÿNØëÊyñÑÇÈ]xvÒ$’£©.Éᑟ ûÐ!ì}ãX³ä;ª¬:ž˜ô=Ã6~˜3•ï7náààÁ¤¶�ü£—PFæ/ÅZ[Í×ó¿Äh�w^~‰§_y…Ñ¡ %$Ö-ùšïVoÅ; ˆc¶óÓÏ¡ÜrÍU(APÐçêézÕ¬uF¦M} 10…§Æß̲3Øp¸‚ÿ{æi| :ô.úó´#kÊKxþÑÿœ§ÓçtØ1ÓrZ]zÞÇǧÙmùùù”——7þîææFLLL“2!!!¿+S¥w×£Ñ4�V "jUýø€$:É?vŒÐ¶í蔃J©¥’”>C‰üò{ s²°;ûàêéNJ‡v¨” ”O| †p¢#P(|‚rQ :­8l&Žž,C£rÃf,`û¶‚ú6kÝ,Õ””•‘—r¹ddþv¨u.Ürç½Ü$�Ó^É �¿†ó'AÉn#*!• w�F%(Uš¦co’„©¦šÚš*ìv;v³™ªª*Ìufv;F£ N´:=çhó¢ÔêèЭçyþ½Ue'Ù²õü‰Í‹å/YÀ °bÅ Ö¯_ßø{RR/¼ðÂ%ד:t÷ŽÔä3ca6ÿ{ñE$ÉAUy5ž ^hÕg^=Uýݨ²˜pŠõ_¤@½/íÙ(e“ÉŠÓÿsÚ,Ô:lÔšÊøþ›o8ÛeÃ?49EæŸ�B©ÂË»¾óâ°‚úëì´^Þ>hÎy~D‡•¿ýœÕ›vcw8¨ª¬Àq¬ŒW�¤ª¼‹S`ꛯ£V©IêÑ—ûî¼ýYÏ©«›;7ß1ŽH靈9‡w°ûŸøÎF¥R¡T¶l<¬ùYݳ• ÆÛߓ܊rÌVGãEµYŒä ó@Õ‚YX¥V�»ZƒO`"¯L~]ò$Š8œNô.l2FFæß@Þ¡m|÷ÓZz I—v¡,þîœ^QŒ9ˆ_×,æàÉjÆÜz •'ÒX¸äbÛwgh·¨¦ã|ÍÖüÇòûÿê,111|%þ£ ‘1qffãŽCØì63¿®ü‰|‹HdÛDÔç®{¹”jWÚE‡PUz„íû�¡ÓéÐiµ¤íÙÄŒO>åh^I+´FFæ¯F�DýdÃé%`¿‚Œ••ˆx1xð:wHÆM¯!0¬ ]»v¥md(j­+‰É�2t8�j(=UyYZñ·èñedd V«¿àYHüVÌ?³UŒ¸ñ6ö¦gñÙ´7Ù¶>¥ÝHzFám»sÝàÓVx翚6wŒÓŸ ‚Š�×ÝÄÎýG™õÞ‹ìÜœŠXSLÚ‘c„§ô#8ðòLËËÈ\NDÌ,ûá[v{¹7~vôH:>mz4[>0"•¢‚Ùsgâ&q0»„±Ã㈉nKíâõÌøèC\Å* ì|ÑçòÛ1à·ù[¾–àÊ aW×8»t�Á‹Þý‡ n€«O8/¼ú&?/_FnQ%àÉí=¯fݸ6äF&ve „GãL%]®D•2UC‡PP¨H4 mh" AÀ'$†ß|ƒ•+–“W\…àÆØ>#Ø·.—Èedþî(”:®4�2‹µÉò’è¸$¢âhn°Ê/ª#O?ò«ÖoÆdUpóø‰\Ó'€¸®ýyðþZ~Ùz»Ò�û~šÔvA�¯¹aqÉ ÀÝùaÊÝ+�¡Ã†ݦEm¹l.k7Ýt®®®�cyÕÕÕX,–Æí�OÏ3fÂ%%%|ýõתùÐi;K ‰ÃÛ¯WÄéáO­WFæß@½î¦ Q�º©­«$‰ØmõYQ²Tý3øË\Ö^ýõKÖÜsqqùýB—€ -žDùíz¨T‹áR™¿‚  ÑœŸvZ¿M�¦™”ÔÖæ²¾ØØØËu(™ßDî¦ÈÈÈ\qÈ�OFFæŠC|222Wrà“‘‘¹â�ŸŒŒÌG«ÎêJ’Dee%••gÒP ~~~ÍÊPÉÈÈÈ\Z5ð™L&Þxã Š‹‹&Š¢H¯^½¸ï¾û•—eddþYH’„Ó)¢Rý3Åv[5ò˜ÍfŽ?άY³P4ø[œ:uŠ�>úˆiÓ¦]TVFll,½zõ:/HžmDÔÜjoÑiçdîqÐyì‹èt`±ÚÐéô(Ïý’‘‘¹h$IâTN:KÞÊ cïÀÏMÿ›åEÑIMµ‡SÀÍÃÍYÁÒé´Sc¬Æ)(ñôp¿ Ο�ÑqY"€â¬Æñàƒâëë[¯ìð?N§“¹sç6k9Y~ò_Í�Ãö´£Í³87ƒWžzš§_ü‡$qtÛZî¿û1eŸjµvÊÈ\ =Àk¯¾Åò•ËxíõÉ”™¬,+:ÌÌÿàMî7ŽñãïbÒËoQb¬×N¶šÊ™6åeî7žñãÆó¿ÉSk?“ݵañ{ú¿-ª¾Å´ú»¦(ŠlÛ¶ «µéÅ1 ¿;ÎwZ±¥9Ï�š²BÖ¬Z†Å/ŠÔ¤ó³B<ü‚0b(¢O,*¡Þ‘ …€Ðb_&™ÜŒ=Lyë<¢S˜ðxf~ø¯¿1™ÿ{öü=ÎO1ÍÙ³™U[Óvëý$Ìš3Ÿek¶r÷�Ù½i ;œàŽ Oàã(`öç‹X½m £úÄ#¶:UÆ ìâÓÞkŽV|N§“U«V5š ] v»�šššæ7 Mþ9½›77Üv(ÏJ|n¸~s-UUÕJ ¾~Þ(O�?:˜-V4:=¶ºjªM<}|ÐkÔˆÎzõX‹Í�ÎÕ OwC£?€è°Sgµáâ¢Çd¬¢ÎâÀÝÝ€$�N¯oô �$ «ÕŒ$)Ðé.Ÿk¼ŒÌE’$Nfìá­)Óð‹íÀ„ûï%ÈÛÀó“žâÕ×§ðîÔ÷yôá‡öqo²_­©=]:v }˜�õëVST^ @YE1^!áô듊Âx·/aª0�µwë=­ø”J%7޾�NwɺÕjeöœÙ-:®µ¦‚Og¼�*2• ·Ô;¸ 'wm`Áì�”k*;ô⎱£ñvÓSœŸÉû|J|§öïÜIm�ÈCÿ7‰P�…ù_~ËÑœžþ1uŠpžyò.4rà“ù I"yGðڛܮᅲ@ïúñùÀÈþ;éI&OžÊôé3x`âBüÎ=…ÆÆáí¶ˆÙ3> md0ÇOa+ÜÊL¡šŒ=û)«qòÅÜ”ä`T»“˜qYÚÔêc|‚  ×ë[Ô»ÑjµMÆ/Ña§0/�²³–Òˆ–2–,ZŒWx·Ýv+Q!žü²r!_-\�Í)â°Y8™}”-Å7<�Q×_‹¿›Š…ó?gëþL:õÂ�wŽ%ÂÏ•e >gÓþLìæZrs2Y²r1)ݹfØ@:&Rrü(;vìi<~Á±,î9„T(š¶KFær"‰"¹™ûy}òT*•úõ탫¾©Ö¤ZëÉðÁ½9z`;Ó?ù„‚rcã6¯Ð}øAÚø8•Ÿ�ÙìÀj®"çx.&3N«•‚¼Ô†&>ú$¢ü.˛зž¤Ã€kyxÂt*%}{vã�IO²mû&F^sUƒ�¢@Ǿ×2éѱ(§ÃB÷«†ÑiˆÝ:& )mƒÈ|îe2�ŸbxjRcÝ#o€±#û TXk+iÌöí»¸ÿ¶a¨8|pf�7Ý;¦üE­—‘¹4¬u5¬]»‘Àð68êøèíwøï[SèÞPBbëš%,\¿‡ØÄ$”öZ6mÞÍ-×h°—ˆï˜J|ÇT#SÞx gpg^˜0–ÅóßgÍÁ2&½ô?ü\/}(ì�p…>=½zvC×0�®Ò¹Ñ#µûîÄTkÆjã“»ÂJ•ŽäŽÙ³}+_±«Ã޹¦“Ù†èlª/˜Ô1±qžþ6;¤£T(°Z-ˆ”ðaÆ!ª««Eø|ÖGØí6B›·eÚ«/£¿ ² 7Åð‰¢xCóvñrùFëa«àØé\:ƆוŸ“w\\qsQCîH%Ù§H;‘KÏÛÇòÈÈ¡¨U * N�ššzÕûiõAthß‚”C)xÔ¨ô�´n%íæJÜ2d¦$±/5›Ÿ|žÎ±A|:û#~­˜|ÿVýôÛŽ•ñüs“1fâƒç±aû1îî×è}ä?â++,$33³îÿ¢(¢óò¥aA'Vü�È=±Qœ<°ƒuÛѲ¾žs³/Í"“!È ºÒ€©º“¡Šå?-ÅPQ}ÕºÉjzuKdõÇ‹X™ ±�î ØçÏÓ‘�ø+°Xk0›Ígÿ'b±Û/›Ön³.øúù!ÇA•±Š /ôz=>z=5¦<¬vðó ÀM.`©±]’ÿtF:ÖbMÝg¢(# 8OÝ�KS4ºáE“Étõ„—á²:‚l_µ”[VÖ»Ô®ÛHÝ .5@Pép˜7ó}ôž: òrpõ‰âžQwã®Q`D¨•¬»àׯ'4‚vq-Ø´e5§Óö#ØÌ¨½ôè.tϹŒO¡ 4MèNˆêrk”tëÕ •t\Nâ‹€“¾ýï–»ž5D¢HqÑš¶ëß`ŽÐqøêWðå§ᮆB£ÈðöíˆkÝ·Õ[™9ãT¢™7OâÛGÖË_e(eÎô·êÖÎkQóøóSé›Ðò†[Ò¨†ïœ¸ÏªÕ«n¸ ‹ÅÒ @�_Dsz2Ç¥Óaïà(\tzFßÿ2÷Zº f­yâi=1Í£ÉJO£°Ô€(ÈiÓ!‘_OAÀ' ‚§&?MHóðº²4ZožüíSR(­¨B©v£]|;òN¤áP+mÓ‘É“=ˆð¹tœ©P¹è«Á*�¦eäµk†JHüÝ�)Üxð‰‰˜áùDÔɰ^ˆ»S¦Nyž»R0Û ¦u< ­jûMp³xþõïgÙµ/§LI뉴>¯´ØºÛ &‡´m &ršGü±¾Ô¨ò’6›�]»vQRRrÃexxx�˜˜ˆ‹Ë•BÿÝE'U•F%­eú¼ï ‰[ÉðIHHÜrH†OBBâº�ªªÍWOø7妈 mذ�õë×7(t9d2ݺucèСu¢C !Š"5Õ•• "ÃU«Ã[ï…B:+!Ñ(ˆ{¶üÎÒÕÛóøS´mzÅô•eE;q‹C 4"а ¿ºk¥…¹¤Ÿ<�C¦$2:†@ÏzyÏõïÓ™§(«0‚ ÀCïCxDZÍ�/mtÃg·Ûùú믉oOÓè¦×n&';‡Ÿ~ú‰ÄÄDö‡sجÚ“Äÿ~þ�ì‚BDdhu4‹‹çî·Ó$@ÿg6¥Ñ(/ÉÇXí$(8¥d°%þÆ8�völù�y ƒBɬÞ幩¯Ø`ß¶˜Š™óþ»Ì*B¥µ»Ͻð2-Â|(Ë?ÉŒsºÐˆZŸ(^}ó?º×@E'¹Ç±pá78ž‰\í vQNl›xî{àš†øÞP;nJt£ÑH¿þýpss»æ|111lÞ²ù²£DQt²kÃRæ.XŠSáÎ�ÛGà«SshïNvlXΩœ¦¾ðAú+KXþXÿÓ—üžfà�·ß!È]sõ ¢ÓÁÞ­«ùôËïiÛg÷ íÆ³g2ã�7yñ•׉ ½T/ãTJ2N–0îÉgiá'ðñG3Ù”´‹aC9¸{;Ù%Vžxî%ôŽ3|0}[vcô€6‚€¡àŸ~ò ÇJÌôt7}»%€µ’ÝI›Y³!‰™Õ¼>m*ú[ÓNn4aåjé¯4:4�bñÒUˆª ^zý%ZEÖŽ Àš%_ðù’µ¬Ü¸ƒGïÔÊ¢39–Q«µ„‡7A­¬­“Óa§¢Âˆ‹V‹µª‚œ¼BÜõþú ˆNŠÎäQRfÄÃ/�ï³å‰TUVâäèÜÔäçdSQiÆ70_½AE'•• ZÍÙÏDÌU&,ðòÐQYaÀTU…Ýf£¼¬ 7Á�¶~�K�h\u„‡‡¡’×>«ÕŒÉdF«Óa(>CaYMcšá¢¼¾ç,!q-ˆ¢Èþm«ùhöºÍÃcFàªVð‹/òö¯3ý­iLyeÍ›øÕËg³Ùðóõ!ýè#’å\t?OÿžzúYZ…Sž“ÆK¯½‡wH§RSu6QïÛFà(9ÉÖ䃵e w<4‰û†õ‡‰�Þx…Bu¾æRNæÔ¦Q¸rç=0æ®ÈlÕÌyë_¨£û2éÑ{Q :-ÌŸõ>[�9ùöë×xÿ© <Ôtê3NÊgÿy³±„ÿÎžÉæ]ëêÑœ§¾DD€'Gvmäý9‹‹ähZ: aÖÂù„{ýýG¸ÿ,jGz+yû£¯:öaÆ�Šæì¬ZçÃÞxƒÞz›éo¾Æä_¡uTp]Þè„D"—¯dúkSðõó¦´0Û¡|ž=¾‡¢ì,LN¯üû ¥%ȽBéÙ3‡¥œM;ŽàåÊ]·÷©7’)Ôô¿k J}8áÁÞ7Ô¦¬á3V–!h½i}i(wO?F�{�–|=—mG²4âA†èLAÆ!>ûê>üdsg¾‹L�#NNžÌgÜSSéãÇü�?b˪ŸñnÒŠÿ¼ýž‚‰OgÎæ·V0¬o¼Ôµ/÷ÈnTÍâù`ÖT”5%|ùÕ—,ÿé{£"è‚ S€XsF!‚ Ï~ðK|ÂŽÓÕ<;ù9‚üôˆ¢ÈòEÿeë� �z”a}:p:u_Ìÿ–Ù_|Ã[S&"f9E}æEZFèþÏ Ý%ñ÷Çé°±cãoÌš÷- Ÿ TŽÊ+«ÔŸÏ8‘N@H �ogæŒwyjò ´;«Â¦ÖðâÞ$iëVŠÊÊIN2bwó¥]ÛvqšÉ)³Ñªmz/=]{ô$Ô³VŠÖa©¡ÚnEç‹Ë?ÞAÜ>bÄ ·ëŸkøŠ‹PjÔ¸º^úP„³²vÖêR¶m;HËøþŒ}:�’ _­,âíÏ~dgj]kó%ô¿�¡}‘ˆ èÁ�yK>r$âšNnëÕ‘™?$a²Øð:«Y¤õ `³‰ öB˜ðÀ8^{çC¶ïK¥Klð%u»ï€ ¼<´(”vüƒðóÐ`·–±qs Ñ-{qÏ�ýqSÉñí1�Ü£i,Ú´—BcÕÙvj¸}Ô8nëÛIÒñ�hl •Õp×ÈQ8mF~ýe9q ‰>‘ôƒ»Ùs¬€áw�B�HYQ1ÎèÐ:yIOß@n1{M9ÇqÇsÿýãX&/gíÁF��ÏEët¶š6;:/ä�ðjÿc ŸÖÓ§£»ÝqÅt5Æ 6‘ŽÑmpS×6W�ÉiÖº ~¤ »1°v ÝÇÏ«.ĵR®@@EÐÙèÌ¢(à¢Tõ#>ë|¢ˆ<Ã50¢)~ž^æÑ@pè+p>±µ²”2«ƒªŒ¼óÆku!í�Åà0RRaF ×à}s˜%nMÔ®Zß~'P+/¹cu2‹,„GµfÔè{”—,Î?MròÊ+ dåb.ÝÏ÷ßË8¼÷%¥Nþ·d1Þ^zÚuH i“Úµz…Fƒ\© ²¤ ¾Ãñ?Öð¹è<°JÉ8�M«ˆú:µN‡�ÒÒ2d*W”‚€�]$Ý!â<ûõ‰|ö' Š8.�Û»ŒjÈËEðö §k×¶g•@Î!¬×Rtjµ0ÿ\%: ‰Ë"Š\¶—\æ=¬*Ëåƒéï’S\�§»å58MyìÚe§¸ÈˆÍâàÀž�T›Œ¬ü}-ÓÞ~—0o7jW»Ýή]»Ø±cÇ •±oß>îºë®K>lÚŠ>]:°ä÷$Þ|ë]Æ�Kˆ·–#)Éüü¿Ÿ1Ë´ô뜀RãC¿¾ñü°~=_}çÁàÞ‰ä�8ÈwKV õ�¡k«Ä¢ôn£É�Çœ�fðàø{‘[Jø~á×T8]èÙ©2™ �N˱ݻY¾j3 ±!lY·ŠÝ‡N"÷jSW†L)§¼¸ˆM›·Ñ£S;B|è߯‹Voä«…:†îEiv:ß|÷-gŸ|üÚ ×WBâ�áÄXY�Ápn”%RYcA¤áQ—\!щ¡²ŠüìLrsŠhS›V§óÄpæ'3²ðrk—†Î:ð ‚ŒÎ}‡±qk küsE!CûuGn7³}Ë:~_¿Ïàzw¿~WhdÃçééÉË/¿Ìºuën¸ŒÎ�;~Éç‚LÅÝM@­sççUëyëÕ—�Ëì6M¢™0a<‰qµùF<ôÆš¹lXý3[Wÿ‚Ó)Ù’IŸÄS£Ä @�]°V&(d ÔŸdÖ.4Ô÷“Óy5ÁOUÍ›Ó^FEÔnŒ|à1:ÆE F�ÇÉìY|?6?*äx…Ó¦y8GŠÏ—Ѷs?6í:Á� æ²;m3§>̰ñ(¯þŒõë–³mí Dщ_“h&<ô8zW ¹Ô.‹×9Š–�¸qD,Ìyg² Öòìv ½în0GTû®ÄÆláË�ßD&€»8ý{w cמlIJæƒ7^D@Ä¿I4ºŸ—Œôð㹩S˜ÿù—l]µ”íëV ˆ"v§@L›Dîà~nÐá¿QUÖn»•â‚3dçžA®T¢qÓ„‡»[=Cf³š)*(Âlµ!ÈøøúáqV�Øi·RZVŽÆÍ�[­KˆÕ\Ey… ½�ªvªi©ª¤¼²?dÎ*¦O}™lg$3Þ|ˆÒâ,V:/|}ôug…EQÄX^Bqi9Èè½}PË�˜ÌNü|½j�—ÓA…¡V°\å¢ÃÏÛó|� ‹¨2[P¨Ôè½}ðк"ÖšjÊ &ܽ¼p‘ô<$n¢è ´¨[Z×Wžîn n´UËÈÌ8…Ù.A€�g�3¿±¼˜ÌÌ,2%á‘Qø\´^'Š"s…gÎPR^‚ O/üüÐ6àÑq9.VYûǾ¿ ‡­’÷¦¾LŽ3’ÙNB)í¬JHüm¹©ò’ÿŸAA*ÿë\î•��ø«‘ ß "S¸ðàs/ýÕÕ���¸¤•q ‰[ÉðIHHÜrH†OBBâ–C2|·7}s£¦¦†œœ:DFFUUU¸¸¸F›6mÇÕÕõfWKBBââ¦>Q9}ú4?þø#‡F«ÕIPP&“‰;vðÛo¿Ñ´iSF�MóæÍ¯ûl¯„„„ĵpS Ÿ(ŠìÝ»—¹sçâççÇ3ϑĶ-ê®eÝ϶�)8d*â»ö¢íÙÈ͹i?]À…]VíæNLLÌ%GÛ®—FïÕf³™9sæ�˜˜Èˆ#X´h[¶l¡sçÎŒ9JKJÙ½g7‹-"%%…§žzŠòòr¾þúk""" ¼lù¢(’±o¯ÌX@t‡ž¼<éq\Tç ˆœ:‘ƾ}{ iÝ�.­›4xÊÂZy†×^{‹ìüÒzå*5Zº÷Â�Ãáï)iYHH8lf–~ó%Ë6$Ó´Yó?yA˜ÊÀÎmë��?‡±0ƒ·^“Ê_­ÀÚuxò…×éÙ>ЬÔdÞ~o&*Ï\œF~_»™i3>¢epíYõ#;×0ï[ë•'24:=wÜó0wND~ƒ#ÄF5|¢(²mÛ6 ÷Þ{/ëÖ­#99™‰'Ò¬Y3öïßÏþýûñóócРA$$$0wî\-ZĽ÷ÞËîݻٰa÷Þ{ïeG}N{ ›7ïÄl6s$9…ÜqDžÓÓè2l4!í{Úàs®ž–š\<xðþÑ(eÕElݼ…uË¿'íðQ^˜ò,!>ìWFB⟌Ãjæ§o¾`åæ½Œ|ðItŽeù Y0s:r^¤Obk-Me9Lq•Šçþ5™h9ï¿ûû¢gû(Ž¥ÆéêϳÿžŠÎ^Ä/¾Æþý'i_ÛßEW=ÏNy™` ’›~ˆo~ËòŸ¾#.6šØ0Ÿ†+{ÕðY,vîÜI—.]°Ûí¬Y³†aÆ·~Hii)þþþìÙ³‡õë×óÄO0~üxfÍšÅ�ÁCèÝ»7»wïfذaxx4C¡¢8Ÿƒ‡�Óª}ÇSö°uWQ·w­‹÷/ÚÌàéŒÖi#íðaìjw´T“zì$Þ!Ñ´kê€Ö«]»t® Úµ[V,YÀ�+“XöûVž;„c1ûS3hBöÉ”UÑ©{‚}´”ärèÈaŠÊ+QkÜiKӈ䂀ÅTÎÁÔã„DDRYœOzf6«“˜VmhVÍEBâïˆÃVkô~Û´›Ñ�<É î�P*dŒ÷v»�¯ç~âdú$¶­÷.«\Õ¢™ì¬lü\QªUæ“—ŸG~AJµ›ÅDvÞi*"µºÞ}å ¾�ëk==‚‚‚0•�aöÂuœ:�ÿ÷4|f³™ììlúôéÃÑ£GQ*•$&&²téRjjj˜6mnnnX,æÍ›ÇâÅ‹yî¹ç "yW2-Z´`ýúõ”••5høDQääá]äWè»ÆãR–ÉÁ]ۨ蟀—[í,LßÇûÌcÊóÐGêXöÝ×)ªBé0#SjèÐcm¢ºœ+°^ù.Z/†Üq7{÷aÏÖ$*G ”�ÆÇÎF¯÷¢ÒT�›Þ��¸N`Èàƒ³É+5áá©ÃRmÂ&scä½�q×À* OñßÙ³ˆˆ$7+ ¥ZC�ɈméÏŒ}äinëÕ¡NïCBâï„­¦Šå?.dÉê$|r2»wD©¨5n •÷Ü÷(öš9|3ïD&Ñ·s»º‘_DÛÎtiŸÄÏß}ÎJ ÆòRìéE¼žy�ò¢",N¾û&– �q‰ôîsÅ5}A�áªÓ�èÄá°ßp›=sEEEݨÎ[_«�™žžÎàÁƒ1�¼õÖ[Œ?ž¡C‡òÙgŸa0 %??Ÿ„„l6fsááí#[¶íÅMI»æ¡ÔtNdÞÿ¶s2§ˆ„桵‰ÄÚ‡(µÿȳÉD·;Ç1zh\4jäÖÒËÐzÒ*$�5iEªl(àÄ©rgòKψR!gÖ[ÿ%Ûàä±g¦Ð«c,…§�2sÎ\¾ýz]º´>›ÏNzFãyšÝÚQpê0Ÿ¼÷?-þžÖ-£‰ðüó¾„ÄŸ€ÃZÊ¥‹X¼l=jwo'o#¶ESšúžM!²oÇVrK�Ø,Õ|ûùläŠÑ·c‚  tñdÂs/Ó;-•rC9Ë–þ€Ý3œÑCú°cÃrŽäV3jÔÝx{zÛ­K}µ5Q±Y,˜ÍµýØP˜Åª5P{zrÃíjô5¾s‚ÂyéGQQ(Èd2 E]™LV—æÂ¿†(<�Á±ô: �JN§î]ùnÅz¶n;@û˜�Ë.|úµâÁ1Cq=;$¯±^©‚LÀ)Z±Øœ ù9xô$´Š ²ìŽä’8d}»´A)—ѤYk9˜—f,`OZ>]Î Ì·í2”¡½� á1í¹{Äm|üÅÏœÌΕ ŸÄ߇S¤ióx^z9‡µœO?þ†ŠÊ¸`¿±$÷4F§“ŸŸ‚Bµ«+"çÕ9TWZµOÀ^SAÒ–58ƒ"èÚµ+ŧörº²˜Ž�»\"/ycIÓþýr™ ¨05CG=L\¤oƒy®…F5|*• OOOòòò aË–-8�NâââX¾|9Ó¦McÖ¬Y�F¦OŸNDDžžždffÒ·o_ÊÊÊ�Ë常\*”-ŠNîÞB±ÙNáÉT¾ù¦ÑiÁjI;´•C_‚½>"W¸¡¼Öi¥èÄjs —©êä)\]ÏQæòª€ ðf(dçF˜þÍPÅÙˆ~µu o\Ï 7�ŠÂÍ UÕ×V ‰›ˆJãB›øxì–R´ŠïLçíDûø ÊKMIâ×Õ1TVr:ó45'JùOîqòN¥Ô,ç½7¦ááîI·~éÝ©M½¼*� ñ�º¢Ó((Î*222È<•Kh°?å¹9>šñ§´¡,ï3spõÁݵáï �+J ²ØPO£ÃReÀ ¸º»Õýú™klõòV Øl"J…>^âŸ@Ã2’—3A%§1cæ§ä–UãFƒ»»Ž   Ü=½ÐhÔøûa1žáÓO>`ozQ½™¢‹Ö�»î}€Ç{Œg'?E°Þ�»6‘SlüC­hTçT*éÑ£ÉÉÉÔXj~ûp~_û;)))<1ñ :uê„ 4oÞœI“&qæÌ/^̰aÃPª”lÞ¼™N�:áæv±#d¦"ûL)}†�䥗¦2ujíßó“Ç×CÆ–¤½Øœ×©9{�¸�(Šåeòíü/É-¯¡ç >h ?.wÜT¤ÙN‰±v=Òn­&yS" £ÎKcîÝ´…ür[ Û“÷`´y{]_]%$þ„ëR˜<“™�ɬá¡ÇždâãêK³ö�yâ‰'è•Ø ¯€Pî{ô &=õ^3G�f_r»s÷Óú†1|H/ ù'Y¹vŽ? )ݨS]AèСaaa,\¸�ÇœÊÊJ~ùåÂÂÂhÞ¼ym% ŒF#K–,¡C‡ >œ àîîNÏž=/YãEûvíÀêâM‡6­Ð¨Ï‹Ž¨š4£Mx;ŽíåTá]Ô[9¯,^Vp„¯¾øPe*'ýè1 ËL´ësC{u¬_ÐhÜ|:´_þ¸–Of΢Gb;²Žîgóö=DÅ÷">ÒcVùY‡ùà½�Ð7‘Ói{Ù°e/-:ö#&"øú°„ÄMFÄÆ‰£©ÈL%uŸœ*(FT7ìãêæ¡C«Ù�’‚á´Hzf!½âýðó  "o›6mÅÓYH…ܽ.P@ºõʆ­»Ù¾a=ºw¤U¸ß µ£ÑOn¨Õj&L˜À믿Β%K3f ‰‰‰ÔKçëëˤI“Ðëõ,[¶Œääd¦L™‚··÷%e:j Ë,!&¦5MÃê/pÊäºôéIÊüß8•‘C+ow<==Q+å‚ �Bý/I&Sàîቡª„IIuŸ†Esç¸þtëÜ—³G×<=½pU�Ÿš 29G?€S®fÙºm|wâ‚LI»îC¹ïÞQ¨.ðkJìÛÇ™ }³€¸Îxô¡{ñp‘¦ºoAއ§«ÿ÷=«/ºÖ¡{›‚a­»0 ç6þú›DmÏྵîcí»ô¡ÛÁ#,_<Q�Û©ý:E× tÔ®®xxxÔ­›¸éC1l Ÿ/ZÉŽÝh>àÆÚÂMRY;tèü1���üë_ÿjРUUU1gÎRRR˜ OIer%¾þ ^kLnjè___xÙëjµšÞ½{ßÄÝ<\=èÞ{1Mþ™]BâÿRÌ¥›„«>�~诮†„„’憄„Ä-ˆdø$$$n9$Ã'!!qË!> ‰[Ž›¾¹a0HNN&%%…œœjjj�Éd„††Ò¶m[ºv튯ï�G]����¸7Íð9�NvìØÁO?ý„Óé¤k×® <˜C‡a±Xˆˆˆ`íÚµüþûïÜ~ûí 0àç¼,!!ñÏà¦>§ÓÉòåËÙ¸qcÝÈN¯×³{÷nDQ$ �ZCDDz½žíÛ·SXXȘ1cP©ŽÓõÿ‰ÚH²r¹üªi%$þ˜ E>zš¶âqQ^ù½E»ÍŠSPª”õ´oDщÍjCTJåÿ/yÉ;v°zõjZ¶lI@@þþþlݺ™L†Ãá@«Õ’“›ƒV«¥yóæ”——³}ûv¼½½—¬¨¨à«¯¾"::QiÖ¬»víÂáp`·Û±ÙløùùáëëK«V­HJJÂl6Ó¢E ~ùå²²²,÷Ìñƒ¼÷Úxó½�É-5Õ»f3øâ³Oøïk¯¹žù§Ž2gæg9Yø‡Ú{ý8É͇Ý' êâñåž8Àæm[¨°Ôjkˆ¢“CÛ×1kîW¤É'<¼Iƒ÷¼Õð‰¢ÈºuëÆn·@II ¥¥¥ÔÔÔ`4‰ŒŒ¤eË–DEE±råJ”J%]ºt¡WÏ^ÄÇdzråÊKÔÖ¹€ ƒ’¬4>_ðsýØ\‚‚ÀeÂç5HEyÛ·í ¿¨âOhù à¼z ‰¿›ÙÀÜï“’QÈ“§ððƒ�0é±1üúí,^¾«ýÒ—8?3“j§'�=ö(Ÿ@«HŽ�<À©Sé¸D1aâD›ð�J'�åœÏ,ÔïÀY‡v2köW(t�<7õ¢C. tr­4ºÊÚþ”ýÄÆÅ’��@dd$éééáííMHHEEE9r„СC´Z-Û¶mÃd2!Æ #eee Fs9ÞÞZïXÁ²M±ÜÕ;þ²ÓTCq«W­ádV>‚\M³V Ü¥Œcû·³|ÕFjìf¶üþ 9Ç‚¹kä V/[‰_D<ýºÅ�sx7k’Ócèš{!:ml[¿ŽÓE"cÆÄÆU+9pâ$›ˆp8ý!*¨¶î9§RÙ´ý-ZD‘²k'…¥�ôD½zŠ¢HIN¿­Û‰>(œ�ýû ¹ .!ÑX«Ëyïõ×É(5óïW¦Ñ*2AèÒÿN¦*d|0û¿Ø¬VÆß}š Öü¼|½‘‰å¬\¹’Žqá«k(9u’={÷p<ý4–3Gî¥8óg¬"¾þúKo.BQÖ!Þywvw^xùEš‡þ1Ï�F5|555äæå¢P*puu%22…B�Ãá ++‹½{÷RSSC�=èÙ³';wîdÇŽÈårär9‚ PV^†Á`¸ŒáS0pøÝZ·ŒÅÿý’6±Ñ4õ¯]KÅZ5÷WÞ ·ÚIl\,VS)‹çÏå艦N¾³ÙDEe""UU”«A¡æÄŽÍì?QFçÄ–¸ÊlÞ´žß6ì®�¤Ù˜ÞXMå¬û}•ú¶ŒµVñÑ{¯³ë`ѱ-Ñ»)Ù¾á76­Kâ•éo×Ä›²ül~ûi +Tjôþ!„úûSßN‹œ:ÂïM§\ôáßS‡ ’Kk~-U†Bf~4ƒ¹FžŸò"-Â.`´MìÇc%e,øé[DÑÁø‘·×mx„´ê¸¬X»•;6RUiÄA9sòŽSi0`~ñ9 •†^wŒ£OÇÈ‹/™|:wUo&?ÿ"-Ãþð:|£>‡ÃAUU‚ �ššJ@@k×®­óÝ»ÝNLL žžždggãt:릶2™ ‹Å‚Õz94�w>zÓÞù„/?_ÈKÿž€ú¢4k]ÊéJ‘ Ï=O÷ö±8k*ùiÁ<þ·q%GF ¥mb?r9o¾÷o¿—]š#—ËiÓ1–e»wöu« IDATs(.«"ÀÕNzz: ¹‚Œû©²tÇTt†ÂürºõlAÚε$8A¯;æ¡QqUÉ8~p'oOÿ˜—.£Ù3ÖÖF„fúòìccðtÓ Wœýey'òé'3)uxñÂ+/Ò"< Þ˜„ÄÍÆj6ñâïÈÈ-E¯U°`îl´S§Ò*ü\”!‘-«fÙ¦]h=<Ø»e-zo?F èZ«š(W1èîûèÔç6ÌU>ÿl¿Xž{kYÀö&=ý>:WôÞúzA{ª*J™;ó ÄvJldÈŸÒ'}WW§Ó¡T*Q(`4Q(8�µë®®®ddd Õj±Z­X­Ö:k~NnòÊn2¢ZwaÔ |µ| ¿¬oÇÈÑuWE§“ÌãGÑù¢S8I?~ €&QM`ýNNž.¢]¸ ¹ ¹ ¨“»Œ‰‰Ã¾æ9yh<ªHÏ«dømýX³%�ƒ‰ÒÜ * -š7ãèæE ögØ î¸»ÕÆŒiÝ‘„¸HöœÌÆb­] Zz÷艟—{mýÄZñ¡Ò3Gùtn§*\xeÚÔ?åWMBâ�"W¨|Ç= ¼ÖrÞœ:«µþF†ÕT‰ohk ªúªˆ‚L†B©D©T"“ 8erT*µÝZ@©T¢ºÈÍåv«•rc �>^¤¥lbÝΆvo‡ü,mTçV«ÑëõôìÙ“äädAÀf³Õ�èìv;íÚµcÏž=( :wîÌŠ+ê\JÜuµa㺙\Å�±’rä0«XH³à‰ua°EÑFiQS%sg~RojéååEuIÅewSÚ5ÇSÇNe#—gãÔE0tX6ü¾™£YùFëDÓP/RªŒ¸xùâázþK—+øúøQ}´‹íÜË"C!»ô±æ¥X}(Zí•Û+!q³�+•×êÁØ-Ô—18®®:‚‚ƒ/‘—t:ìløíGVmØ�Ùb¡´¸kz1¯e¢¬(Ÿ*»Œo¿�Z­!¾{?Æ�‚ò‚QŸ\íÆˆŸf@ S^x�%_}Nhà+´�þCƒF5|®®®4iÒ„U«V1iÒ$´Z-YYY¤¦¦¢R©0™Løùù±mÛ6z½ž1cÆP]]MFF¡¡¡ìß¿ïKå%/FéâÁ£�>Æ‹oÌ`þ‚ïqTUá ‚ ÀËÛ� à¦¼üÜ“h/ÐÆEµ‹Ûe‡ÎnÞA´ô"ußa êBbZããN›POö&í¢*§�¨ø>xª•x¸ê¨.:I¥¹�ZãçtØ)5”àê¥Cu?§sø…Æ2¸W ?}÷ ¾?�÷ÞýZ•BõIü£ÉOKfþ¢¥ÄuêCû˜Ö¬\ŽÓ£ wôïή­«9–WÅàaÃ(ÍJeÅâ„6�£o»°º÷^뮣sBk¼õ.L|â^¦Ï^Èç_|Ë«/=C ×�u»P¡P0hÐ ÒÒÒ0 ¨ÕjztïAÛ¶mñðð ..wwwœN'nnnTWWÓªU+úöíKTTóçϧ{÷î¨5ê«ß iÙ‰‡G¤<ç%%µn)‚LN“È(r�'-«�N‡N§%?u_Ïÿš“µúœ¢¢hÇl=/ì-ÈÔ´îOöÑ­ìN=MëØ6‚’Ø„xo_IzŽ�v-š� £YDçVoØŽÅ^»N™}l?ûö¥Ö�êÊ¿1>AÍ~ç?Œœ“;˜¹`–Ü$$þZd×%/YVTŒî1’¾½»ããáFpd3úöíK\³4:OºôèèQ÷¬‚üìâKÊÏÎÉÚõÆÝ½(8¾“ùßü€Ùvãý£Ñ×ø¢££éß¿?ï¼ó=ôkÖ¬ÁÍÍ�&¡M8h ���Üyç��FŠ‹‹ùí·ßð÷÷gïž½tèÐ�:4X®xÁß…t:ŠCi'Ù°'íì'CGÜÞ#oóéûo±§SG”6»w@Ëý~µrvîk|ÿùlÒväñ§Ã])'2ª%zÕrª”ZZ·j @«¸X4ËÖ"êôD7­ýujÓk(‰k·³î§¯È:¶%){öaÓú3vÌ�¨®à’"8@�+é;|,ù™,[³ˆ¥ÁþŒÒ¥´³+ñ7Á‰™ «åÄϺ¾—z$·àö ¦÷ D.”²ðûïswr(½€QýjûQDx•˶°à«/Ñ:ËȳA“ÈËŸ´9Ãî{œô‚vmþ�ÅM"yðŽKåg¯9>eÊ”1 …¢a ?ˆL&£E‹}Ðj/¯¨~£Èd²«F{dÂõ,b\œ_P(¥š„Ä9A†‹kÂLŽk#ôõ«qÓF|bµZÉËË£  €êêj\]]ñññ!$$—« !!!qüe#¾ Q©TDDDñWÜ^BBâG:ý.!!qË!> ‰[ÉðIHHÜrH†OBBâ–C2|·É®î…8�κUçÂPIó%$þÞœ‹°ôOí«™áE‘¼¼<¾ÿþ{öïß�Åb!22’!C†Ð«W¯«jêZÌ&òò‹ ÁE}íâӉÍfC®P"—7î€×é°c³;Q«G"StÚ9“—‹ÌÅ‹Ÿ›æ†)!AIîI~ß¼‡ÛFÜ�§ë•ßoQ1WWaw‚››[½Xz¢è ºª'2´n®ÿä%/Gff&ï½÷mڴᥗ^ÂÕÅ•ÃG³téR ;vìóoúõ¾üq#w=ú cö@tÚ8�¼��[·“Wb@­r#ºe,}ûõ§‰¿‚ PœuœwÞœÁÀûÿÅàž-­}¢èdó¢Ïù|Õ^fý9¾Å%×�¤ì íd.çt’DQD¥q¥Yl[⢛\õ%(È<Êÿy“¿x¾üäÿÐ__‰§Óø`úÇœÌ/"5+—)Ï={YãçtXøyþ<–oÚ‰Õ-Úwá™'G¯Uc­6°ðËylؾQ¦ mçþ<;ñ>\Îô(ÉIgîœÏˆì:ŒñÃ{ÿ©m¸i†Ïjµ²|ùr¶oßNhh(eeetèÐ�»îº«.Âr÷îÝ á“O>¡G�„„„\¶¼ &ÍhWFD` Pû€ϛͯ›v òô'²I 6³‰ß—-fãºÍ<õ¯)tl†(:°Ô˜q8_ÌÑá°R]m¡‘8Evo_Ïòõ)„†…£Q)q:läççƒâ':÷½ƒÇ ÃÃõò!¹´^Þ´îÐ! ¥´X+qSÈ?•ÊG3f"êCù÷½cùæ«ù̘9‡çžžˆ^{iœ“œƒ;ùeÝNúßNs?�EK–±rC[ÆßÞƒÛ7°qÇaÞu/^ö|/]ɦŽ]Ü©)‚ `­®"ïTºØò?½7Íð9r„Í›73tÈP²²³p8 2¤^XyAhÒ¤ 111¤¤¤\ÑðÅvèEd«Îh4.ˆ¢È±äµ,ý}+my졈 õÇn­áø¡d>øèS,\DÓמ»ly6K •¦*DÜt:ÔÊÚ ¢(b³Y*Õù)µÝfÅá•ê¼ú»ÃnÃh¬™7­ë5=AÀ“Ï>Oˆ¯N§ƒÂÜL–.þ–�Ë¡R»òè˜A(d6«A.G�&Ô.Z´ú@|b‚\‰€ˆ¥¦™\‰Ryþku:ìX¬vTj5r™€(:©6URc±¡Pip×¹ýc×i$n¢(R˜u”ïŒÜ'Œ§&N$Âß‹`/7Þžþ sæ}ÉÄGÄÇ£þ™Üв2좽{õ E°+{ví · €‚¢<<‚Â2xŠÊ<Ö,_Gi�¡.oíkÙ8ïf£>Q)..fãÆ�Ñ)±�; /ŒÊd2t:&“é’krâð.–,ÛÆÈq÷Ó<Ì“µë6"*}yðáGˆ ó@áâF뎽18•UÛ3(©¨äâ W¢èäTZ ÿ[ö9gJðôbÌý÷Ó"<Ä~\8£®)ïX—/iå"ödUóà#�âíªÄT^À÷ó¿$5»d BšDã'¯¼êóP¡Õêpw¯ÕàðôŒçÙByíùÉ$mZË ¾� Ò:ùnþçh£)H=HvY9�o{€;»„±hÁ—h":1ºO͘K@T÷Ž‚J&CEŽn[Ë÷k“¹çñ§ˆñweÛº_Y»e&³•Æ�ÝqÇàîRè+‰Ë"Š"%y'xû�¨ýÂyú©§hâ_Û“"Z&ðÒ”gxgúlæ})ðø#à{�ñ ˆˆ@«1óí‚/hÙ4”œ3%ØÊ÷±ä8¸û†r;Ëÿ·˜âœtJ M›ß”65º xnn.¯¾ú*U¦* Tîéj£Œ'NpüøqކÚMåŤ¥£²Ú‚ÍRMNúiš¶oMT`}JA�1|ÜÌš5�fÁ—†°/Ê8Èûï|ÀÁôÚvîN�ÎñäßËÛ¯¿Fú™RDÑÉ™Ì ròëG†-9“˱éXìNìÖj>Ÿþ&«“Rð kNÏn‰Ÿ<À/ö\ç«ÅÕÃ��ýza.ÎçLIN»�Ó'�óãwßp¢ÔD‡Ž‰„{ã°Z9yü(¹…E(\õhelMÞFqymi§ÃÊÖä­¤ç›ðѹ°éç…ÌûêD7o €^eçÇsøqåöú‚ìgE‘¢Ü¼ùætÎØ5Œ5 _¯úÑT|£w÷ ïXÏg_, Ìd®»æÙ†§&<ˆÆfd×ÎdÊÊ«1f±eóV2òJ1+ؽ#™¢ ÷M˜D§�7eÒ¨†Ïjµ²páBZ¶lÉÄ''^SP™LFŸ>}ðòòâÝwßeíÚµu[ç— ‚軵Šò*þú” D:–+”¸¸hÜ)^·f65&Oåá{G3rìýL{ñILå…,[¹û5¬¤ïaËÑ\: Ë “&0âîѼòÚKD5 Ž|�øé½QÊj(®8?jôlÆô÷§sßøqtŽ«ÿ,AAb÷î˜òNqìT­}µ±˜}{�Ò>!k!+6&Ö¾¯¾4…Û‡ßÎK¯¿N‡h’¶®¡Ð`FBâb,UüôÃR”Z/šèàÝW_#õô™ RˆlZ±„Ï–¬!(,‚Šü ~]³g�»‹Œv]ûóÖ1wö Ú·Ž ý€Ûùì³Ïs{w‚£[ðîÌÙÌüh:Ãzw¼irª�:Õ­¬¬$--�wÞyç*‘õ fܸqÄÇÇóã�?Ò¦M‚‚‚.ŸAµëW׃(:(8�MHd$±M›œ-J ´u7â|>£¬àô5è^ˆfeÐo`¯:…(w¿zµ�åDþ�ëªÓ9™\Ç´YÛÖx]Áu .¡ ~+HJ:@Ïø2÷o§È �ô4“êªj\±°æ×_j7\»RAei••fðº¶uI‰[µ›OLž€ÃVÆä‡^¸$^¥\h×q“Ÿ¼¥L€‹R8ìV²O�¢ÂXF…Ñ„E^@jj*yùTUš9–šF™—aáM®)šòŸA£>Qq8(¯30繡ntt4‹ƒÁpEçT¹áå*#·(‹Í�B}©ëˆS‘ �øœ˜ŒU¸iQ*/ÜdQà¥w#ßVƒã¬sõe×XESE% ÂC«¹`˜.C}þ…“{&›Cƒ�‡îÂ[]�G]ã›±þØ^r‹ú“´û¡miéC^Êì6;åy¤Š5uyd.>Ä5õD!íoH4€ uƒÑ.»l7™\~‰Þ­Ýb⋹³uw*‚ Ã\mÂqº„é‡0+°;áÓ�ßGE¢Z%0å_Ïà®iü=×F——Œˆˆ ))‰¾}û^Õ)ùbŠŠŠ�Ë帺^y$¢T»ÍÚý8r*ŸŽ1¡uH�¬ùq¿ïÌ`âó“©ïæ«À/Ø—=EET«ÑùÔ[M)'³ øµ××ÉB–”bEBíȲ¦ÚR[„ àX9™q†h_-‚ à´[È)ºþmxQ1ŸbÍêm¸…âï \Û4Td´ïÔ…ÕÛ²oçnŽË Ë ÐÈexxëQ»¨iÙ±/Ç ª{�mÖlvйë®X¶„Ä�púÀv¶ì<°±Ñ©e0_ñ)ßL¸g8ë–î“&N˜@EÖ!>ûâ{6&æöžÍ}�¯Ñ ßÈ‘#™3g‹…ØØXŠk»¥Á``íÚµÄÅÅ]yšK­ÀÐÀAƒØ²o&ÿ�÷9²Gî§ed›™“©),Y¾•<µnˆ–óùA &®-¾[Ã/¿­çžá½Q`eÝÒEœ±@϶íQ+ä(•2 GH9zŠØ&~dŸH!é`èü�€èX<ÕrVü´˜¨ÀGöÖ’º/‰�ûÓ€«�ÚpPZZ‚úÿØ;ï訪½ ?gjf&½÷B„„jDÐk±]ìb½ ^±P,XQ@ªt%„žPC(�!�^g’éç|!¡jÐïæ{Ÿ™yg×ß‹QtP�{„_ü‰f'· »™`7l•W>ÿÖ¢M{Âô,Z8«YÅ£½ºàN¸¿©kÈèKǘ0Œå…Ìþn:&·0žx|$>®Wfã)Óœ°;ìØl¶3ÿ—°;/>d©1#áJëV±øy)pÚøúAp€?Že¸zxÔ&«j.ZÖ_I“ Ÿ $&&2fÌ,XÀÚµk/ºJ{!ƒ�>}úpË-·\Ò'CjïÓ"1™GGdóã‚>zûM¢c"±™*ÈÉ9‰Á/œG~?wE¥Òy?&=þ‹ÌƒGX¿øö§¯G+X9‘WD»Î¸9¹=J¥–>ýz°íÀ/|üδ$ïD.Úó6kz´ä�aùvÎÞ?�Ð@wNå—HÕÑKôúÑršIï¿…J©Àé´a4Ö 3¸q÷COsÛÀ^¨6$ç^øªÚÕ—>]ÚñåœU„·íO›ÐÚ+ƒ÷Ü7S¾øž)ï¾M«Vž<ŽÉ"rçÈÁxšæX�Ìÿ"fæüø-«ÏÛ§z*7‡ðø¾�¦‰i…›ÁÊ·_OÅW'q´°†þñíhÓ&á�õ|>y".R5•JíÚEÔå• Þwõ¯äoñÜø+(=}Œm»Ó¡kw‚}Ýë^?º›¶î ¢Æ†R©Ä/ œþúâã^{Ð\UÆ–ÍÛˆŒïJ‹ÐÚ­/vk ;6¥’sºðmAßÞÝМY¨�D‡÷¦“¾/QPѲ!Þ ŽæÓ³Wo ’$±oÇ&öeŸ@P(‰lOK-›Ós4ôƺc8g‘$‘ý{vp¤Þ ¸èÝ騹 þ^®uÝ}‡ÍÌö-i(=Cè–pî˜�ÃZÃÖ-›Ñú†Ñ%¾uÝëe…'Ù¼%ƒð6íiߺE½òKNgcÚªÌv´.::víILD�ì'sYD§… +R¨´Û\ �¥SÇÖ(¢ËÚEʆ͘q�ºÓ¯{g¦Œ²vn"uËnœ 5�{ô%©Cl]¾šÊ6oÚŒOTÛ´üSu¿Ðsãÿ­ðÉÈÈÈ\) Ÿ|ÄSFF¦Ù! ŸŒŒL³C>™f‡,|222ÍYødddš²ðÉÈÈ4;dá“‘‘ivümÂ'I{÷îeôèÑlÚ´éâ¡§ddddþbþÖßþýû9zô(sçÎ¥¬¬ì﬊ŒŒÌU ‰N,ëåþCù[„O’$ŒF#={öÄÃܜ֭[Wç¯{õ剨m6Ng“õ�;'ŽfS\fD’$rÎ骱]>ó5b1–“ºv ™Gòä±Ì?It’•¾‘�&~Äἢ˦7›*9t`?û2³(*«¬wÍXQÊ�Ì}df¤¼ªºñûIfS%ùù˜m �Ë] J rìØ±÷¨Tª†IMDUU“&MbëÖ­téÒ…C‡‘ŸŸObb"WwrN’$Jó0uÚt *ÍÄÆD7ˆ öWP]^Ä{ÿƒIßšv­}øúÝwX°n1ñ� ðüÓå‹¢ƒÊò2’€æLüƒÛ70ù“Ï9R¬d@râu‹N+#s1$I$+c#S>û–¼‚vîÞK|§®x\ %e·TòÕĘ1{©Ö±cÏâºàåꂱä$S>þ�ßæýÁ†õkÉÈûúg”¾1ÄE\uØ*“ÉT4uêÔÅ€ ÿ–_EEäää0hÐ BBB(,,dÉK®¾g#9I[¹’mÛ¶±`^ å&Ëåó\‚pÆõIP(\rÏpî»çNZGü%å×”žæÝׯðõÜeu¯E¶M`ø}÷r×m}dÏ\™v¦2qò4":%óÑGïáA5ï¾õ&y¥�›ƒåìHcKf.ÃͯŒÁ^z‚Uë¶°sóœ¨à‰ç_ååç¢4;ƒ5›4г±”´ [1UW±}ãZL¶+‹ðt)®»ð�>}š)S¦Ð»woÆ�OPP#FŒ@£Ñ°!uû÷↑òj*Kؾk~þ˜Ë±9óx½ëN»�òŠ ¢Hµ±‚ãÇr8~"¯^ 1‡ÍFee§“jc9ÇŽáØ‰Ó8/g¬MÇî 쟌§á\ ;§ÃÆÉãÇ8|8›ü¢Ò:ß�³ˆN;§óÈÎ>Lî©‚ºëN»�*cv»sM •Xí žþÜ0p0c#ë•SU^BöáC9z “¥þPÛRSM•É„Óé  /—dz)«45ø0ÙÌÕä9‘œckšæÇBæI’ÈܺšwÞÿŒö}‡0fÔC„…µàÍ·ßÀ[iæ­ ã9zº´A>›Í†$¨‰Š£U›x"#)®( ¼²ïàP:&ÄÞ­RÀZmmpߣ;SÉ5:ˆmÕ‚£Y™ää7¸ÏÕrÝ|uDQdÉ’%=z›ÍưaÃ�nݺѮ];222˜3g±±±W°ôä‘=ίáþ§Ç²qÆDvlXÏ�]ZcÐÔv—óö®eܤÙÜú¯¾¬Y±öÌ—\ ²MGF?û4A>®ìÞ²Š¯[C·NñlÞ°Žj«-â{ðìSìãÞà¾+ûœUû+÷Úë¹k)8žÅ´/¦qødqm˜{¥†„®ÉŒz|$^ ÇðÍ´iÈ-Â)Š %ѱ�xþ…§©:¼›‰“?¥ÀTÉ5‹xrãrîþÏ;$›yóýIt¾õa¢ÓÊÒ_à÷•1[퀀«»?÷?ö8ý»µ`ÙÌOX»¿‚`�½‡O Š*•�»~Œ!ý»£ÄÉö�«™ñÓ,ÊŒV$AÀÅÕ‹[ï|�Ûw“{–2 �D'™éëx÷ã¯é~Ó|÷&Oü€çž‘ÖáçFAQ  ñ]Ì”Þ $ÈŸ“ÇŽc?\Ê„ÂlNf¤Ü ßOYQ>fW’’Z×»·ÓVÍúMéhÜcxúÑጛði[÷Ñ®EàŸšúiRá+--åõ×_ÀÏÏ�›o¾™�7¢V«´ˆnCŸþhàVoþ®$ÿ{ö¥Ë€» mÙŽ¶�^dfl¤äÖ>ø»]û²D“ ŸÓé$7·Ö�,99™5kÖPQQA||kÒR)~¤VÔ$I ÷ÍwrÏ�7£RDE>Ké©“ìÉÜÁ©Ò¡ø_Â7èôÁíì>^Æ�Æp×�dT QaÁèôžØtµÜù0=nWŽB ò!ué* òŽ¡víEË–1t<ýhWl´ì¼‘ƒÃjf}êz41<3ê1‚½Ý�¤6xè^}ç36lÜF›3†çz¯F>ö8ZÖ~ø†?Ì´ßÒ(©¨Â 7Sm4Ö:‚°�`<\õ<7vù%FݯÛú–Ìÿì–Ž/ w¿íFæüô3QmÚâçqÖ[WbßÖ ¤ìÈ&ùÆA¨�È9rœÖáµ=2AŠˆá¾‡cpX*™øÞˆ!�xî‰ûY0óVï)áѧžÁ·‘à’$r0}e¢š¤¤î(”:’’“˜6k=Y‡sñïÔêšÛդ§P(ðóóÃÛÛ???æÎ�‹^¯gРA¤¦¦âë{Îà;++‹aÆ‘——Gbb"þþþtéÒ…œœœF]Ú$IâpæòŠkˆ÷Ôs$;§ÊµZEƦ Üzc7¼tçòuëÓµÎ8H¥u£{b<«ÓçQxÆÏBP{Ð1!Õ™a•FOBbG6ÏÙJy… ¿‹t«%‰ü§�®I ¨Î*¹¸z1â‘'ê’yxz°gÃ:/˜ƒÍjÇn·P`ñ—ĆñãÁa³P’_BL\?|Ýk�êA $º-‘ÞJŠó9kìæîF€¿W]Þ ?_TX±;ì<}hÛŠM©K™�w„ÐÐ`:$v¥sÇöè´×uæCæÿZƒ;wÞû[û·dq¡å BˆiÓ…ÇM#;*ªÊ‹Ø½s7ååœ.(Ál<ÀÒ¥KÙ»ï0åÅV-_†Ÿ—7ñ í ò=·CÂV]ÎÆm{Q*˜+N²mÛ)ŒF•£’Ô-»è�ÓhÄç+¡I?é¾¾¾LŸ>»ÝÎØ±c±X,ôéÓ‡ž={Ò·oßé%IÂÓÓ“I“&a·Û™2e žž�o5¤mØŠ(ˆ¬\4“•‹Î–!b:v”ìœ|º¶ ¯K¯TÖ_ÇQkT€„ó¬ZBƒ9A©QD�\üQIˆN Bs�wðÙÑQͧ¼ËŽƒyĶë@L‹PtGvî¹H™�ÜEqØè•ÚzŸ;…B�Z­ÄátÔùOJHµ¢tqõæ™^¡SÚF2`çîílÙ°ŽˆvIŒ}á9‚½ W\'™f†$]Üãô"¯[�Å|ôÞ[dÉG¯s¡¦Ú„$d1wî)ª*+qˆ"KæÏÁj1ãÒ‚·ßy—@w-‚ pêØ!²�åát*øöÓIueŠ(ÈÙ»…Så·î}m^ÐMþ/IkÖ¬áèÑ£xzzr×]w]ÔgW‚‚‚ÐëõtèÐ�¢¢"ÜÜÜ5#/<šÅÁ§é:h8OÜ=¨N ŠŽîâƒ)ÓX¿}]âÂêÒïÙ¹Ÿ®-Q ’ÓÊ®Ì#€+~z ÉVÉÁã'èžy¦ÞŽìÛ‹Öà Owà"îO‚‚ ˆpÀή�‡iÔ… à´™IÛ°–*¥ýÛy“uâ4=†>Èó� E­° I]4¿ÑgÐj­¿`?ΡÆjG£¯�c)+:ÎñÂz$\‘o†Ãn¥Úê¤{¿›è;h(N‡•?f}ÃO‹¶“}4ŸàÎÎÛ@Fæ|²Ó7qøx9c^{—îqA|ôþ›8ƒÿäý,øéVï+á­7^§:w/¯½ökÓ²¸÷æŽH’“]›×S£vgÌø7éS»`"ÛS~ç“ïþ }ç~Ât¹¦z5ùv›Í†ÍfÃÃÃAƒqÉônnn¼ýöÛìÛ·�W_}•ÔÔÔFÓíÌØJ™]Oïî]ñõñÁçÌ_«„®ÄúshG*…¦s[=VÍÿ……Ë6pâÄq–Îÿ�e©;iÙ¥'ÁuóZNVÍ�ÎâÕ›8u*—…?M#e×Qbb㠹̄p\WbüÜXôÛ·,_»•¼“'X2ï7¾øâ;ö:‰B©A!äÞÇ¡ìr²³øjÊò­çýJ*…ÀÁ={Øè(Fsým**�Žî]“(ÏÛÇÔ¯~ápÎq2woåóϦcQèÙ·ÇEÍžÏ'÷PÏ=1Šw>þ’“Å”ž&¯°…FƒN¯»‚dš7ÕÕ&ŒF#F£“ÑDµõâ§—J$6»ƒ¢ü“œ.ÁÓP;ªp5xPY\Âñ§±;gF\µŸbsùiÒvgãÔšÄ6áèõzôz=:�Žøö]öR’šºû5žhjòß¾}ûX·n#GŽ$))鲦₠àââBQQ‹…åË—Ó¹sgÜÜΉ�ÓVÉæ�» �$6&¬^~…Æ�^½;³kæZöfæÐúL cbCYüë7,�jÌB¢ãxê‘usz(´D0÷Ç/˜+(0U‰j߃î½�J�I” „3é…óz¡._ž}ñ?Lýâ[~ør2.: «�V’9ü&\ÜÿèS$Dú µÅ œßq”Îî¾B£ã4°'Ëפ1î¥ ’‡ å†Á·Ñ.&ðÚßh™f€€„•¯'¿_7_`®6Ѿç­�æˆJèJtľ›ú¥„àâMŸ^ÝHìÚ�Õë71ù½ñ(%.a$w¯ÝÎr8s§ó+ð@w êúšáA|Ë(Ög¥s¬ÐH«À†ÛÍ.ß’&tYE‘3f°yófÆŽKË–-¯è¨‰$I¬_¿ž~ø¥RÉ;ï¼CHHȹr�6Ž;�RëNX¨ƒ¹¹c§Ná„);�gßžÆØ?#Dc¥´¼ A©!<²¾^µ+SÛSæóÑ—ðŸWÆâ!RZnD¡ÖÕ"O·Z[J§ÃNÞ‰ã轂ðõ2PQRH™ÉBXxx� eEI'rOasŠè n„GF⮯íQ:ìVN;F¹±•ƅЈH¬•Eˆ*7‚}P6K5'só0ÛìG´ÄC 'Næáæí�ŸWí›ë´[9žs”r£APàLXð¹gPVtšŠj;aáa¨ÏÔ«¦ªŒ¼üR‚ÃÃqÕiqØ,ä�Ì¥¤¼%Þ~„¢V5œR�‘9‹$:8qô–F¼±Ý<|ë>ÇR^tšýY1;¢bZ„ H’Dñéãd<ŠS¡¦Ul[‚j<«ÊKÈ/,# 8O÷†óxÅùU˜ �ÄMw‰-g¸Ðe­I{|V«“ÉÄË/¿LttôŸ¯�¾}ûâîîÎâÅ‹Ñëë7\¡ÔТeÃ}}gÑ»y[»(b<[¦RMdt‘�e8Ó[V*5DµŒ$ª‘$J•šˆès÷ôò Ä˯~Oß@<}ï5©ÔZ¢ZÅÖ/Û½þ�4.¢[ÕßÀÙ"ºþœ›R­%ºuÃÛ?ï ^Ó»{ÓÊýÜ«*� ‘Ñ­22AP¨ˆld?íåðò¦—pÃòÿ�(üC~ãܽ|q÷òmðúY<ý‚ðô»èåËҤ§R©¸÷Þ{ëm[¹RA 11??¿‹®ì^ j�WWotš‹7ÕE«ÃÇÏ­®á^"™ÿ=dCq™ÿydCq™f�,|222ÍYødddš²ðÉÈÈ4;š|³Ãᨠ3ÍÀ�lOq8pìØ1Ìf3qqq„„„\uxi™+¡I{|¢(’’’¤I“ضm3fÌà×_Ån?gb·ÛY½z5Ó¦MãÀ�”——óùçŸc±ÈQ�eddš†&>£ÑÈüùóÑëõ¸¸¸`0X±bË—/¯K“‘‘Á¾}û5jC‡¥¨¨ˆöíÛ_qf™ë�ètPYe¼|Â(M*|‡ƒÊÊJ ’$¡P(P©TÌš5‹M›6°eË’““1 ,Y²wwwn¿ív¶mÛFvvv£D¢ÓAµÉ„ÍîhpMEjª«1_âðtMeÓ¦~ŠÔm8D‰üÜìX�B¥ÙŽ$9Y6ë{¾þi>•Õ�AuÚªY„û¡Ö¸ UiQž)@tÚ9•{Œ#9¹ØD�¢U‹´êÚÇìtØ(8u’#9'°9 8,œQè´—�.!#ów":l¬˜?‹Y VqË}�rÇMýЪ•<ôøÓØíŸðÕ”aÌK$µo�ò¼€¸J•$;ÕÕÕ(5þ¸y¸R\RDyy9…%EèÜ\qÓk0å›°JJáúì°»n+Ý»w',,Œ¯¾úЬ¬,t:Z­–9sæŠ^§'<"…BA»víp:�,^¼˜;`0\{8tÑiåÛwßâ ÉŒ( Lýè}bûã¥{ºòö¸Wè5ìyFÝŸÜ ß¼ï'‘-†òê³2cú×d:‰S”xÿí·èÜ{0Ï=v?~ñ)§Ä(>›4•$²vÉl¦ÿ¼› @!H8œ"}n½�g¸… ‘¶ô7¾þu v±Ö§Àj±’|Ëžxà.ô²ß…Ì?§ÃJʳùfÖŒxü9îØ».ŸZçÎÏŒ†O&ñÕ”‰0f,ÝZÕ…§j‘Ø�„V«™þÅGüîîFeY1ŽŒËΠ¼°³¨àÝ ¯Pm2âÞ–¾½b¯Ë6¶ëúm eìØ±Ìœ9“M›6!Š"®®®²ø�ÅDEEqâÄ <=<©¬ª$&&†äääFCÏ_) ¥ ¾ýžé½ÂÞJ¯½ü~ìÕ§QR´³1$I@@@ãæÇ¸ñoóõä‰lʶóõWo WiP),ÔÖª6qöv¦Íø�ˆöýùÏ“÷㥱3ç‡/Xˆ‡Gmàç;3ßÿ½Nü>ùäzôèÁ�!Cõá5ø„пgW¦/XÃÄ÷Þç–ÛþE¸Ÿ�Œ´5,]³ �€HzuéT—^£×Q|2‡E‹—г{7½®¢›,(pѨ±WfñëìÅôèšH˯sùI7ÜÀœ…køñË©G #Ô[ˆUËIM?À“cßÇÝaeÚÔ�qxDòÀ=ÃðÕK¬HÙ J7ü=\ÿÔs–‘¹^H88u2/¥½î•‚òJ$·`uÑ» HVåCY%’s¼�ník{iÞ^¾TœÞIzÆn¼œT‹àrÞ(-¶}m£×’¶ô7ªË‹˜Ü,¬_›Búž,¢:ô¥[ÛÐkjG“ ŸÍfcݺuŒ1‚uëÖMvv6»wïfäÈ‘Ö g===>l8ßOÿžèèhF�Í’%KHMM¥ÿþ †½‚ â¦á#ô®Ì™÷_N~¿îZ˶]xè‘‘D�‹¦ßó†ÛØ‘ù9Kæüı¯=Ø­ASÛé”*‚P·Ê«Òº °Õþº)üëfÒeÑìÈ/,ã…§‡£ÓªP8k×v ¾-xéÕùæ›o™1m*:îø÷S Lj…‰Çº�fÎaòûoàêȃO=I|dP½22% …ƒï?�ØàJ÷³è‚{“Ôi s¿û n™Ààjç »ôîÏæmÛùzÊ{Ä´ëÂÀ^­ë¾ë®>!üçùøéûïÙ�¶š�i«kk¡ÔЭïP|`zõµíøhRÏ ‹Å‡~ÈðáÃY¿~=Ý»wgþ¼ù<üðÃDDF43I’Ø»w/«V­âž{îÁáp0oÞ<† FxxøEïc·ÖPPX‚B¡@£sÅÇËE#“¬’$át:ʺˆ«A’$œ'‚RqÑü’褺¦IR ÓëP)ë§EsM N C½Íž22ÿ‹H¢ƒ’¢",@sžX9vŠ q*Uœó¹>?¿$a©6RRVŽ$¨ðññÁ ¿ºùûëj/©Qkèׯ¿þú+qqq,]º”;Úx¬=Aˆ��§´´”Y³f‘œœŒ —5!Wkõ„]BÏ/_¥ºöS‚  R_ú‘ %®®�wû Wyh+Ó|*üÚKB­mk`襇«‚  su'Ìõê�Ã/F“ Ÿ HJJÂËË‹üü|Z·nM«V­.¹7O©TÒ¯_?üýýIKKcÀ€7þÐdddd®…¦>A@£ÑЮ];ÚµkwUùâãã‰��oÂÚÉÈÈ4WdÏ ™f‡,|222ÍYødddš²ðÉÈÈ4;dá“‘‘ivÈÂ'##Óì�…OFF¦Ù¡‚ÚcT¢Ø˜¥‡ŒŒŒÌÿ.Ô7ÔŸu@“‘‘‘ù_Ãh¬o~.ueddš*777\\®O´b™ëMuu}“ÔF ¹\™ÿ¯\¨o²ÚÉÈÈ4;dá“‘‘ivÈÂ'##Óì�…OFF¦Ù! ŸŒŒL³C>™fG“†ž—¹8’$Õý)ŠFÍ—$QD¼L™«£É…O�;x€jçùöÝ.zWBB‚ÑiÕÿ¨/ôY1á¢õ²�Ãvž»ûYt®îD†‡5°•läF¬þcÇMZþ=ütñÍÚµ�)»¹ûþ‡‰ þË@edþ1H’„Ãá@¥R5¹&4¹ð9ìf¾zû5Ö€‹VÔöb쑸}ýü(üÜ´ÿñ3‹ùñ»™´ís½;E5Z/kU>}øÅeÕhÏ´é,¡m:òÚØðÖkä«�DÞ‰#dWpŠÒES•—ä³go&CÌòYj™ÿmìv;ß}÷·ÝvM:ʹ.C]A%Û�—ž|½F…ÅTÉú X¸f-?üÂó�Þ‰ZùÏ>›ÕÈÆõëÑ„õ w§ÆÝák}Ø"ÛôdÌÓ÷ :¯ê*�—k÷î•‘i®8�N–/_ΦM›:t(ƒ ÂÛÛ»IîuÝæøÜ] ãªU!IA„†=ˉìý9š�Åæ@­ÓPzú8+V¬äØéb”j- ]ºsCï$´gL¼�N+[Ö®bëÎL¬oÿP’ûÝ@\Ës†ÄÇîaÍÚ ä—Uá¢w§k¯d’»&�›“ÉÆmh×>–ôMiä•¢w÷¥ßMƒiNqîAæ-ZJ5°gË ~0e3`èÂýøZ�/¡¡!¨.ò«d*+`å²åøûûÿ¥÷ø[7ÎΟ©T*DIB’ ÿØ~>üh ye:´�ÅXr’ï¿ØÊ‘“÷ñÄ}·¡tZ˜ûíd~OI'¤eA^zvlXÎæÍ›yö¿¯Ò5.œƒø`ÊW85^´‰ #?'“©[Ò(|âyîêß�’¼ã,üí/ÖE°— W²}÷~^ÿ*îöjŠJÊ0›+ÉÏ/Àjk8�w~;.FYÁ1>ü`"‡Ž—ѱsk fÿȦM{÷ÚhB¼tõÒ‹NËæNgÆï«ñ §eDë—üJYU5hjä%IdéŸñóÒT¢ZäíFzê*ÒR73î­wiåKQn � Z-Þ!ûú#9,|;ù}6ʧM\<:…�ÕÌ!#óï¼>wÝå†å22ןӧOóóÏ?“’’Â�!CèÛ·/®®®IÙ×Mø, ÅÅEÔhT8ìön]ËÞãåt�V ‹Í%¿BbÔ˜±$wj…Í\Å�S?`ýš•ôíÝóQ®K§M÷AŒyâßx4Ù»•/¿œÎ†-tnÀï3D2„ðßGHeÉ)>Ÿø. fÏç†î$‰Ø®óèÜt*¶,›ËÔæ’y,�á}yf”Ï�ú/]ûÞÁƒwtG¥j|Ñ ¬à0ëÖ­ãü­;t!ØSGÚŠ…Ê-áîÇÇpÇ�]œ6Ö.�Ë÷³±|ý½½½²Šóްlåz|#;0~ܳy»qúh&“&N攥6MuÑf-Û@«®xæñããæBNævÞûàSæÿ±Œ¸g@¨m"qIyæÁ»ð0èpVŸbgö)Úõ¾�½µàdÛêE¬Úq³Ý! ŸÌ?QÉËËcúô餥¥qË-·�˜˜ˆN§»|æKpÝ„ïäÁ=¼÷Ö›(»•ÒÒr[váž;nFé4±?û4®®þø$² $¬â¶ÕcÊÏÂ*)rÛx»ë�V I¼¼<枺9>I’0¸{â´•Se³àнúܶ­›žWr ËpHõ¥¯ÚXŽSë‚P`Ýk‚ ÀÃß·¶l$J JX=gëU„ÙÑY°�>*Ź·VãÄS�ŽdÆÌy,˜ý¿Zì…E’Üÿ_Ü6¤'šKôjedþ ¸¹¹Ñ³gO†JXXØŸ.ïº Ÿpnˆ^£$ØUä�É?²|ùZ⟸ ¥ÖƒJMHTo½ñêó:!’$á¢×“^¶ Q´PTZM¸{íö—³û~A�ZïyO?r3Šº2$$IÀàêʾSWSãË÷„ÔW|||,n8$-®j-¹yXE ý™k»ÙH¥¥7.\ÄÖÜPX­””@Bx]Û-&S]}¼}=ø÷è×èÕ&¤Þ3*Ü.±šÜ.é>ê’La~Y™ûXµl)3¿ŸJLB,#ÿÚ‰c™¿ µZMûöí6lqqqÙö–ëvdM’$$jâºö§g»p6-›Ç¾“娴îÄ„úQR˜IÖ±bÜÝÝqwwçÈþüôólN–Ó•ÃÎüß`9Ó³)ÌÉäÙGÿÍ„/f¡ÖûäÎá[)2ÚpwwǠב±)…ž‡Ñf¿âºŠ€ÕjäZí—”j­Â©®:Àê´½gÚ/’žºŽ¼“e´l�âaõõ ÆÇ ²~ýr*ÏìÙ+/<²ei@­ ´l�ذ&4.¸»»£ÆÆ²Ù³øcí–‹î,>šÉôo¿fsæq‚â¸á¦¡Ü÷¯dÀFÍU<™ë…J¥"))‰wß}—ñãÇÓ¶mÛ¿tOßuéñ]øuTëܹkølß7™Y3çó£ÜtÇ]ì:0‰Ï>OzŸdìå§Ø±+“à¸xz¸ãá׉ îÆœKxéÅc´Žö!}{56-÷öêŽB©cøý÷òá”ïxçõWèÖ­%'²Ù}ànŽA­B’jë"5¨ÑyuÓºáïáš…?b,<ÈÝÜKT ï¶¬A¡¦ï­w²5ã3>}‡ýé½PÔ”°kÏ~|Zuä–{4ÈÑŠ�úðóÂ^øïËtmCFêF¬jMÝâ‰Gp÷ü«3—®äåWréBfF' Ëùlw” ¡®Fç×LïáFfÆ&V®ßBF¯^¸ 6¬[�W@ 1�^}22ñññÜqÇ´k×­¶i7(�ȱcÇÞ£R©šÈtC¢¸àþQ­h‹JQ»•ÅÍ'¥³†ê;mÚJ‡„8¬5FЋб‹Jº&ßÄÈ{îÄßÓ€B©&6¾#�®jJÊË0V› ‰lÉ¿~„.í[¢üB£ˆoAEE9¥¥eZWúÝ|'÷ß1½V�­¦šª;:wÂÏ«v/�$Ú8•_B«¶ ´ óG­ÑÓ*œŠ*#v»“¶ ðq¯¿ïNœ*(¦e\{â[…7úÆèÜ<éÔµ#ØÌ””–aÄwéËcÞK¨¯;P^VŒ‹›?íãZ£VkˆŽ�#ÈCCyEFc5­»ö㎛û"9 ¡sg< Zbâ:ä©£¬¤ˆòJ#^~!ŒxðQú%µC¥T`«6ReéÐ%_ÏÚz«õ$´k‹h©¢ °ˆ S 1í“xò©G övÿÇœš‘‘ñ÷÷çÞ{ï%22µú¯;Îj2™Š¦N�º0¢$—••-rqqùG•D'v‡AP\tUÕa³!J• e#^!¢Ó�Ã)"(”¨¯qâþJÎì^Q9¢ˆÃáTêËŸA<;o Â%W•v;¢$¡TªP^î\p]Ù"»éÌJyEW¦¹�ŸŸŸý(�ØÿqÑY…�æÒb¥Ò\zß™B©â2E\¾RðêÊQ(P_¦¾ÞW­¾ü‘7Õ¤iXöÕÕEFæ9ŸŒŒL³C>™f‡,|222ÍYødddš²ðÉÈÈ4;dá“‘‘ivÈÂ'##Óì�…OFF¦Ù¡‚Ú ¡2222ÿ«\¨q*«Õú·TFFFFæzp¡Æ© 6ŒJõ�;½&###ó—pá1P€Á`ÀÅ¥‰‚³ÈÈÈÈüÍ�Æzÿ—7dddš²ðÉÈÈ4;dá“‘‘ivÈÂ'##Óì�…OFF¦Ù! ŸŒŒL³C>™«F’Dlöÿ¿Ö¤×uײ$ŠXmVœNAP ÑhP*ÿ—¯Zs!©QÇH…âÊ<8Ì5&ª-6<=½P).fd¥¬¼7OtÖDFæ:#I"dzv²hå&îù¡>î—Lo·Y().Á. xûøàª?·gØj©¦´¤ 'J|ý|ÑizˆNÕÕ&*«Œˆèõ®¸¹¹¢Õ\½ïÌY®›ð9,F–ΟǦô]”UšPkõDFÇpóíwÒ6*øO9~9œ¨/áJvÙ2l&/\ÈÉ‚²× ž>Ü>l8>úËõ¬_:“ùiGyëí· ro|SøÉƒ[=~*O½þ)ƒ22¹wòÁ‡Ÿ�_QEöé&L˜€¿[ãŸuÑQÃŒ)Y¾y' ¢ã:ñÒØÿä¥ÇRUÄÔO&“–ž‚‚Ø}xýµÑ¸ªÏ DÍÕå,š=“%«R©ª©=v¦Ti‰ï܃{ï¿�6áþ×Ô†ë2Ô5Wòæøq|ÿÛ|7º&%Ѧe™;ÖóêèÑ,Zµgã]­Ë":müøéÜýÐkXDñšë(:¬d¤oaý†M”W1Ïÿ«ÆyE gþ.‡<Ï óÿ�#û¶ðæ;“ˆïÆä)Q™Šxýõ×É/¯n4ýÑmHÙqˆÛúo½:šÊ¼ƒü±r#Ûׯfç�Ó<>æUÆ=ûyûÒX¾1 éŒXŒ¥|=ñ f-JÁ¿ežxîƽô<ûtæÈ®�¼9î-�.¿¦v4y�O�,þõöÊç¦Ûæþ»oÂM¯Et:)9}” &ðû￑ر%þµÖ¾’$RZT€ÉbÇE犟¯W£þ¹’$b®©Æb·!ÙmT›ª‘´ZtZ ‚ I"UåeTM(Õ.øø¡Q^zhéæßŽ—Æ¾TïÁg|hÏb³ÖPT\‚SO/_<Üô—~NE…ØœàéíÛxI¢ºªœÒ # •†ÀÀÔgür�N;55\tz,¦ Ê«Ìø ×^{W_Fæj�$‰£{7óþGŸÓ¢SoF=ú >n:^}o½õ>~ðÏ¿ðáþžõòY,f$Á…¶±­háFtTÅ%”WãN·Î¡ÂƒJÀRe®Ë»kó*Rwç’ÐóVÆ>w?m­Áxפž´‹ù�O¾þ�ùKW3î±áWÝž&>³±�U)Û mÓ™ÃoÂÝPÛ%VªT„·æ�ÃX™v‹Å xPUšÏo?üÀ¶¬ÃØ"*•†Ö ÝyàÞ»ñ«ïyî0WðõçSضë¢EdÜ_¤m§Þ<ùè}Hæ –/˜Í² ;°Úl a‘q<ðÐ´Ž¼x…%jµu#CfI’ÈÞ³…éßÿB~• I½›'ýßÉmƒ{£Q6Ìc®,á»o¦±kÿœ<|‰��¨ß«™µË²hi F« A¡$"¦ ?ü‘A>äÏâ£IßÒªC[öìÈÀbxaÂ$´¹ú7DFæ*‘$‘£û·ñÎÄÏiÕ%™Çz_÷Ú{ï h^{í%>xS?ý”gž}–È@ﺼáqñø{.äËO&Èᣧ°Ÿ03Ù\ÈÑ}»(¬ùê³�)ÍÏÅèâE‡Ä8mFÖ¥lAëáψÿÂÕåÜ4“R¥¦SïA /5#ù^ÛP·é…¯¢€b«ƒ›{âiÐ6¸ÞýÆÛévÿP*•Ø-Ffýø Ë7í§ïÀ[éÕ¹5™é©,KYA•Yd‹� U�ëù)5Ý|+••&v1qßÈ‘ø¡DdÕÂ_øe~ ±Ý’¹u@/òífÑ+øò«^yù%7ÜL‡6‘„øÖÿe•‘i $ÑÉ¡}ÛøhÒ˜´žtl×¥²þèËæPÒ«G"¿Î_ÉçŸÎ3ÏÌApXL™ªñ hK˯õÒ¹{3üß_s»š\øŒ%Åø‡Ö-`TW•°uK:޳3a’@l‡Î¨kN²uËnÚ÷³£îC%tLˆG¬©dEFòî C¤O]Ù •–6ñí‰ò[ÁÞ\5III¸(•T—ä²vs:ÞÑ�øïžÂC§¡K§ŽhßþžÊÎýGÜ£]£õ5àÃ÷ßçüÎ[�›ïâÆÎ±¤­YE¹ÉÎè7FÓ·C ‚@LTÆ¿ÆòÕ) ìÖ¦^YÕ•…¬_·ƒ– ½øÏÓ�àæ¢¦kbBusS÷ :kX¹tn¾ÑŒùÏ(‚½ôе3öŠbf®L'çTµ-VÐí†;=jØŸZ’‘¹¬5&¶oßCëøD{5ßþ%þaÒ©Uø™éë—³ u/»&¡D"}g&áƒû jwB´ˆëÈSqqX*™øÞˆÁ�xmÔý,øùVï-a̸Wð3Ô_8´[Ì8ìvÜý}QŸÙ!INVÍû�å5(ÎLe) Œ¼çV”Wù�hráÓêj»ÄN§I’�Š’SLÿæ[,Ôv£'ÿ÷mbõÅT9TtHì†êLCT�“º²ds6…§Ká<á;Ÿó×FŒ+M$ôIÀCWû@AIû„Nx/N¡°¸ä¢õU(•ø >û%pÕ¹ ‰N• r�¦cë�:ññ¥UL4›s ±]°¸b®,¡Ìâ¤GB/ ZÕ™öèIê×£NøæJò«ÌXÌ›õCÝ‚Gi^>¢ÝHi…7@¡¦Ut¬,z2×WþýØ“8leŒ~èE.\ºSq ½yþÙÐ4²…Ëf6q`ÿ~Ê*Ê(.)ÇlË!--�ÃGŽSYncë¦Mx{‹»¾vT¨ÒjQ¨UTWTáäìB È�]ÛÙ–S„R¡Àh2¡öŒç¾·üó„ÏÅÝ8¶ŽÞmP Õž¿þŠݾ‚7&�F£Àá°#*ôõ‡¡j� QÄfµ]Ñ=v‡ˆÞ¥þ¢ƒÖE‹Z­Àæ¸x9ÿ¶<õä¨:á=‹ÓnÆê´£Õ» Îuõ…µ»¥¦n5ª® ÀÕݵÞGE©:÷ë&:lØD¥RY'|þ-Ñ_/WpAI¼¶•o™¿Iâ"]/úº½¦œßy“™9hÔìve|~<‹šš~üúsìv;A-ÛòÎÛoâkРÔhqQª)*:A©ÉF ›AP3úÝOkË5Wðá»Ø_ª½¦ÝM¾£ÂÕ/ŠöÁžìܱ�œSµ=-APk4¨Õ*2vd`•Ü ôôÄÍÃ�ÝÆáÇëòK’ȉƒY ÕàìwÑûçýÒ¸{yáæ¡ç`VŽóÞ�Ü9”UIø{y7VD-N‘ÆÞB…RE€«'ÕùÇ9Yfª{ÝR]EÞÉ\|ìë=üqŽÜûí�{�Ç}ß?=3û~ßî½÷ÀÀ—I‘¥c—*)9Žå˜•²FL,[.1ŽK•JUòGò�ãJŠŽUqhű#‡ŠG‰™²K¢]‚ŠJéº"’¢H 8Üc÷îöqûžÝ�Ý™žÎ{Ü ò@“˜OÕÔîÞöÌöôÞ~»û÷ûuÿp¶EK)Éòù‹WËø£I2†ŸÔÄ �êÓ<ñÄ<ñÄüâ§~žŸû¹OpfvâúuõðøKÎ¥¿Ç¹KEþñ?ÿW|ééÿÈï>ÎýýQžyæ>ù·aòÄ]<õ{_â×õŸÑZ½È·¾{¥Fpˆ¿zÿIjåž;û®›_ºÀåKkL?0H¹Ž\ø „�ÿìDZkë|þßÿ;¾÷âkÔ 6s+|åKÿ�?ýî+œzèCÌM�22>Ùc|ç¹ÿÅ·^x™R©È_<ÿuþøì ŒL,pjúÁ�@¶s¼ô£Eªõ&áô8gæ�séåoó寞¥X.sî‡ßçËÿók‡'9}jþ­ßˆ0xø‘á§ÁùÂæÂÒ ëùeþø<Ãù\�‡|}ß0?šã¾»§yé;_çÏŸb¹ÌþÏ7ùÊ7ž¿ZF3â|øÃw³¾ø"ð‡_£X©²¾ºÄï<õ$ÿòW?ÇZ©~hu.¿ö=þég?Ë—¿þ=”rùÁ·ÿ„'>óY¾õÿ‘N—gŸù<¿òOþ—‹Í·~¯7 kuét:W�î –®)å‚ò …é¶êÔ* RñÁ`�D<…YoP­µ‡#4�ãH„Ðxø£?É\:ÀŸýáÓüþWÿŒµõåâÿ÷ÛÎoýîi©(ëo|ô–-ùTWÁýi~¡Þæ�¾ñMžúÜ“ŒdRô»mʵ6gx„Oÿüß#òA(ÃßÿÔ/Ðø�ßãwóß’NÅiÔꤳóüÃO?N2t0nMÎÜøõ<¢ݧ¦¬ûSAöô‡øç§xöÏŸçßüÚº¢iö¸ÿÇŠG?öá�ýíêy#á±Oý«¿ñÿí Ÿç¹ôVÛbáî{¨¿ð"B¡ñÿ»\ÉWyþkÀ‹ß?‹ìšôE€�þÌcL�¤Øl‰QÑÅõU–WW‰¯n€R,]¾ÈÆæ —–7xä®a...±ž/R¨´™½ñ’"�›C °øÒoÿ&_Ù^R¯–9õàß<ôŒ™3÷19öOÿöçˆø¡Õóó‰‡àÞû ß8û]žúõ_ÃG71̇¼6(ÉL-ð�~å—ù⟯þ×ÿÄóÏ�à×\*[U"©1>ñÉÇùÈ=ÇnñNà¯U«Õÿ oZúm ”$wåçÎ_¤ÓwBgtr†»÷."Aß®rŠVµÈ�Î]Àv†?ÄÂN3–¹~õ\i³´x‘rµA23ÎÉ…cèBÐiÕxýµs4»6B38¾pŠé‰áC®ìsñâE-Â]'�]·Q®Ã•‹XÛ,¡”Flh„»Îœ$äô!¥ÍU6+mN�ÎÜû'�í�MUJѪ•9wî<›¥2®ÒH¥™[8Ålvô¦�}›››çæææ> löm>�w‹ýÂç-õðð¸ãð„ÏÃÃãŽÃ>�; Ýn#¥|·ëâáááq$ìKï`äóy�ƒxxxx¼(•J{^{S]�;Oø<<<Ž”=ËxÕÍ¿w”ÜÖdCRó‘NÆè¤¤]obJ÷æöi÷@Z0L:DàZ=êf›÷n®+�;�^ Æüh‚ˆ�J�‚ym­»Š$™ÉÄâR-UÙ²®íÀì†ãŒušÕ:Ö.U”¡ãѲӥÒ>|Ëû7ã¶ŸR  �ò�‰Â>ÁàG¬&š›¬V*Üz¶Œw‡¾+JQ’r­‰{�±sG3Ÿ‰Ð,W1Ý[w õ\ƒTvšùáØ`Ÿ3Qí£�6›W֨ț۹ÆÃãvÒТÜ;?KBH:ÆŽ¥Ð/_a½Û¦â¾ãS„dŸ.:Ù)Ôù‹Tä +wbÃL pjM,5øíÔ)î?–%¦Iʋ˷\¯#Ÿê*�Ø(§¦Æ )‡z.Ç⹸ºNµ§Hd³L%’hï±—,icx$ƒqƒº[Á£Y†ô[Ï�á*ÐÒ£Ì�ı›M6._â—X.Õp‚&Žeñ½×z�;‚`4BÔ€âåUÞ¸²ÊF†"QÜPœ°ì±¶¼Ì…Ë«4…A,½:åÝ¿­©Å8s|’¸æR¹²Æf¯Ë­rä#>�ѱaʦ°´JÑê ¨n—Wk]¸{Žd:M±ÙÄR.R3ˆÆâŒ'Âh(ÌF“JÃÄF¡€`"EÒéSSé!]`Ö›l5[8@OjŒ¤øû=*d‡¢ø4�Yk°Õj#·[Uº,Æd*ŽO«e²UoÒÛµ™¨4dR †B~”t¨×ÔÍ.¦0N÷ë躟ñ‘!ºf‡’e]�¶+¾h”Ùä`OÀp:ÉDÏb«Þ ¯RèDbqÆt¡è4[l5Lúê ‚õ]�D8Œ†ËÖ¥5ÊÆ ÷knX¸Bc:æ#âB] _(ÊD:FPôš&…fóê&©2e&b°Õì‘Ì$ #)um’šK¹Ú¤·Ý>]× ›Ž£Ù[­4F6ÇСÛ2©l·—R ¢ŒGtJ]‡t2FD¸läKXÞ2á;) A(Äèô±¥B‡‚¸!?B*tMÇF 0¯“)±K�ù¹† Am5ÇFÛD½ Ù‘ _U‹ñ@̇],±µ-z0Pó&k+9F E_÷3’�a:ÛÆFc4•!±µÅêúZfб€$­éè®ÄÕu¢Câky+:®Ahx‚ŒiMç$R7ˆ%ÓryrÕ*6==ÁÂÔ0~×ÁVƒÜ¹ÉX�•Õm\:þ8 Dz¤ƒ>¤íàê:ÓCÃÄWr¼Ü²É gˆ :‰±q‚ëÅ�ðm£M’M 6d2¤{ ³MÛ�Tv†ãé(Ø6‚H*C¢Vcu-Oç�‰ÿ`RA(Áß5é».~!iÖX* z:8J™àäxŸ+±•"4”!R«±”ËÑw]ìX†ÌD‚¤ãbhàv;¬ 1Ÿ `·—(n÷¢v(N&;…[ڤزÐÓœÌfðI›íöŠêÛÂÅ gÉÆ‰Jë iuñ»žðÝéˆv�ÍVŠìd–{pQš¤XH%pµ�Ù+;?GpÌÁf¿Í_ê>F³Ç˜iÔ×räš�=9qn…£·ñù|@¥crpOpZUÖLçÜÔ³©ÝB‰|©€©û‰�M1—É0Öjs¥ÕÂoÐ[˳Q¯Ó D™šžfx|¹‚Pƒ‘²áÓhllP®ÖhqfJ¥¨Ôjä�8e‡ñ™MVsyš®ÂMOrÏx’‰f‹7*UbãY2AƒÆjŽ�f�^ ÊØÔ4ã3ãLýh‘¥ËËLÏ'£õY»´LGì+MYÞàeKòðñ1WV(ôºXޤŸœd>¥WÚ"_ܤ) "£YNdRŒ·Ú,Õ*{®Ð\ õ&'F¢¤O'n¶hv:X­&5³ƒeD-‚Œ¦f“µü: é¢g9=–"Ûh²\ä B uLVŠ›ØŽ¤+¢˜™iRÑE« ü‘AáR¨4iøãü•É F«ÉJ>GÓ�™äî±c�­úvnSCÃhÖY+èK‡Ž'zwÃ@Z&¦¸æ-°{}:}‡x0@ÀÙ>Ù‘×  (œ»ØŽ»pqqv}–²Â$•FÂo „`ìÄ<;vƒ‘�+øüAü@£×¹*"ÐmSì¶A‡[ív”®ãóûP=‹Ön}ß¡Ýí3tÀÚ÷ÍhD·Nþr�u¡ŠF &ÒŒ%>1K÷‡°‚©…yvò©�ºû 4m—Ò¹æa ›ÕJ‹©é‘hˆeb, Ñ,Ôi+E2` 4�ñ…Œ_½®@�*@P2h'åÒ×Ô-·�ÇûM³0‘&dè(Ã�ˆ§¹7§§ASÌŸ^@I‡êf‰|sߎᮋY(pPE"IDATòJÃæ¡SSLÎLã\ºBÍ=lþxó¹ðivŸ¾‚X4†Q­cï‹R4¢IRšK§ÙÇu]4¿�Ϲ3ZÐt MC9©©[®ðµ}‘Õ gQŠÆÚ*µ7Äĵmlׇ øtš¹K/4qý|+7U¥p¥ ¡Á}:;ÓAMC×u�öÁp#BŽM£×C)—N«I³iRsf¹w4†?Àu$(—F.OÛµ÷ @�žMÿ:Œv�ŠL3Ž‘atצÑÄ[YR�ëÒÈ­h/iÛô¼)­ÇuhúÜ?3Iж¨·»ø£~|Ò¡Ñi#CA˜í.}ˆÌÌ öÅEнÞ5'¡mS-o”¯äc<�M2ž� “ËÓ;Äx³ùd$£Ú\®Zè©$ÉÄÕT@ÃH0sl–‰ô0WÒîÛh¾C‘A–5WA$%2�í.Î;P[M€Ùîá �¦”k-Šõ«�N D@3K‹Š£ÅâDüƒ0©þ‘)Nžœ'éjW¿�¸¹FÔ¥ WÒéõF�L,|õ>áéˆ×ì^ÃmlÍGt|–ÙÙBš~-Â]ŒíäÎÊ‘Ðïâ(�Ž RÜ×zÃB ㆑ñšm±Õìàb*CÖ´”�®�Ù¶p5�&tJ;íÕì!!š~èe•eˆF#ø•„äBDÃa ¶½êá(Ñ@ñ6:�¿ÜƒA‚º¢¸šcqmƒr×AÕꬬåX¬vÁêQX˱´œ£)t‘½™QƒxU]€[Îs¥náO¥˜J§Ñ߯ÿÍ‘�øt\¶ Ú±)RSSøc1:ÝN Â|"AL¸T·Ê lÊå S©)FæŽá¯U±ðJ´{äkõíîÁ¹²Ø÷âÍ>�N•¼9ÄÔÄ8ǃ̾ƒO’‰0¯¬‘ð›,­WIͤ™ž�¡i6éù# %ã­Ma¸.¶ë¢G#ÌÌLÒ¬ÖØlw|¸Ó—¸@lj’c�Ê[[˜ÃÒÇg1j5,tB©·Ïfµv° ¥Cµi’�H27?G»Q§ã*´H‚¡xi¶höú8ýåNŠ±É Ž‡‚´ûÄ“ŒDƒÔ–WnèþI¡Úd!3Á¸Plåë8G2~³Êz;Evr‚¹`Ó–WÛ«¹´zèõlt"#³œ Q¼t‰7ÚóSǘ r—–x½ëç'æ�èš¼qeËÛè}‰-%.ÉDÓŒG ¬ÊÀ€äZrlˆát…Ÿ°P4ìëOaÂa3·N*8Cz|”ñ¶E¾sÐ |®J¥Á Ço! Ö¯ñÚ’Ëñì8™TŠH*…Báöûl-o°Þj¡„¬ç— Ó£Ä3ÃÄ×ê°¾±Iµ×!�¶�-åvTß¶YOJlÛÆU k GÚ8ûPIÇQ(¥¸=JkËÙ)F††ˆ®t0×7È·ƒª,ê.ÇGS$C!P Ù¬s%¿AEX—lËd‚cD’)âf�B»s 1£V�+[ ¦!¢ÉF­A´ßàÜbŽ“³ã$2b€Û³(lnRîv|‘†p±Jy.#™I#›Z³F>·AWƒ8«Ëk05ÁÈÐaÀ•’ÆzžõFs?é88ŽÃa2êÖ)´ÓŒè6³}u>p-Šk+“YFÒé«íÕZ_gÝlò )»oïÊ-¬pdÇ1p¥äEî;H]CI]9ôÝÞ}ŽÇû ­]'WM0;6ÂIÀn·Xn :wÃ,“oE˜š'�©×(µ® ™�Çqö˜Œc²Å•|‘àô(ñ‰"K&í[�0<ò /üi 8òœA4 ¨ ”ëbv{‡‡¸ ˆùtŠ®-�T™>ŸVߌpö¡„F̯á:.�C¼Nº&PR½il‘Ž@îònK â3ÐPX¶|SŸ€R€n� ú@€Û·iõ�BéAŸ�_lß×›\÷­ô7y]¥À'¸:r üB;ç ØcCõxâ(A4 ¤�Ù±°wýÎ\!ˆ†ƒø•Âl[ìÛï¥RéÜÇ>ö±_ @ÿ¶nR £èv-Þl¡‰�¢{ƒ!ï;IÏvèÝà}¡\ÌÞ�%IÊrh9ö–Óë-ܧ€ëÐèì:ç�ÏÕ€¾íp«wßj}¸f¨†=b©ðDïNÀ «kaòž¦�v—ÜŽÍJÔö�¶û…‡‡‡Çû!Ä�Û¾Û3¼òðððxw°¹6ÈS ¥”æ�ÏñðððxïâØN“�ù[ÁÀ«Ûóù|…‰‰‰Ùw³bGE>Ÿ/°kÔg�•••—Ïœ9óAMÓn«³ÃÃÃÃ㨑Rö^}õÕW‹]SÝî“O>ùõ��� ïnõ<<<<Þy^ýõï<ýôÓ/}¶…O¢…BÁ\[[»tß}÷e“Éä˜ÂÛWÃÃÃã=�ëºý—^z雟ùÌg>¿¸¸¸ôØù\Œ3°õ…NŸ>�}ôÑGüÈG>r×ðððˆ®ëQ¥”¡Ô`±ÓÎãþç·‹íД¯·m)¥¹¹¹¹yöìÙ=ûì³/mnn€.ƒ5Ûᣣ bi�í#¸}ø¶_ëlÙo?î°7äÐB�£â°D”;á)î®G—�¸Ù Ä®·ýÜa |�ÆvA±ý¶ ÷ÝîCpcáóððð¸ìFVìÀ�Cî;ÜÝew ßþ‹&z;¶?Á�EÏD�·ËõV”&zûÅO²W÷ümGøö_TqmŸáÃF{Þ×ÃÃãÝ`ÿ”w¿èí<ß-|ûEPýB(ÑbŠÛ½{IEND®B`‚MEGAcmd-2.5.2_Linux/contrib/docs/pics/webdavMenuWin.png000066400000000000000000001103361516543156300227200ustar00rootroot00000000000000‰PNG  IHDRG^�Ý8sBIT|dˆ pHYsÃÃÇo¨d IDATxœìÝwt\å�ðñïô>£2’FÍêÅ–äŽ�\S %`Cò.�ìf7$d“³IÞ�B*Ùì á= ²I€,Œ1`°ÁrÇMÆ–mY¶ŠÕ{iz¿÷ýÃèaQL° âùœc ÍDKg ãÐ‰àø‘Ò¨ u 4ê3Ý]�æü¶Ï%I"�ÒßßO$Az{p”'¾Èx½^¢Ñ(ȲŒZ­ÆãñÐÒÒr^ë'ç*Ð5J$ª!yÙ%[A­ܧi85@³'‰…×U¢z©I–�0(AlœXp7�\þ0ú¯ŸÂ™Vr|�X,–‹x+‚ �@ @Ûóq�¨üó¯¸}FoG ͯó׿6³·§Œïmÿ6Ú§êàós /ùÝ/–žžÎ¢E‹.\íAΓÚÚZÚ”ïâ@;~óoüϸOW1×¾ÕPÔ~eXŰ� ŸJZ —Õ?yŽK¥ÓìýsÇ·�yF�l>³,d2 hãàã? iÛ³¶®‚ Œ ÐaMÏ%ÇåÄiÕ+Ϩw¶ÂXhª˜IÎ�‰Õ™u+*‚ðñ ÞrÂǨ?þއU€‹ÒUw�=gÙŨ— Ây###Ë’”@’$dYæ�ÛaÔ‘è’ôÎà(‚0}IÈĤ±pˆX,F"‘øûZÞ·hoY“KúE¬¤ Â…G"�ò{ˆD¬èÔFTªÉMGí<• 㤇lh�—qÛº*T©éø›ÏÌv ‚ LQâø¢~|£Ãøý ×¨Q«¥·ï†E{öÒn *µg±€Øðª­ ÂC" òŽ Z‰[Ìgm‹›ûAøÔI.È Ðf%S$‹¾5æè$oáVZ%òÁQ„O¡´âÒŠÁeˆ!K‰·f«Ó)Z’CÉ250Mƒc(Âçó‡•Çl6V«õ=Ï>”$‰p8ÌØØ&“ ƒÁ@4% b·Û1›Íçý�AÎ?yŠÓ¥ÞiZÇ7Þxƒ¿üå/ìܹSyì+_ù _øÂ(++{××y½^öìÙÃøC®¹æ.½ôRNž<ÉÆ�ùêW¿ÊÚµkIN~�Mè‚ LÓ*8& üq6lØ@jj*¿þõ¯)**Âï÷3::ŠVûÞ·+Ë2±XŒ@ @8&‹‰DÄb±÷ý—F„écÚÇh4ÊÀÀ›7o& ²zõjV¯^MJJ Ñh”¡¡!’’’.v5Aø„˜6Á1S__Oss3‹-bþüù8�NŒF#3fÌÎt�[ZZ8tè�òÚÂÂBfÍšõ¾gVŽ��S[[Kww7‰D­VKzz:K—.E’$Nž7ÜpË—/×ë˲Œßï§¶¶–Çh4~ö³Ÿa±XX¿~=¯¾ú*ÕÕÕƒAúúú�$‰«¯¾³ÙÌÐÐ<ð²,c·ÛÉÍÍ%‹1wî\öíÛÇ“O>Iww7V«U™LR©T,]º””””óöÙ ‚p6méûüÎLà>ëÔž�Ÿh4Jgg'�‡Ã�Éd:«LKK ýë_Ù¹s'k×®åûßÿ>Û¶mãøÏ?ÿü{v»U*999Ü{dÃazzz¨©©á'?ù 555ÌŸ?83î©ÓéøÓŸþÄþýûyøá‡Ù·oV«•ŽŽFFFøÆ7¾Á 7Ü@vv6jµšÑÑQ|ðAôz=_ûÚ×X¶lGŽá;ßùO=õ))),]ºô¼}v‚ œmÚt«'ƒAÜn7�@à¬çN�:ÅéÓ§IMMeÙ²eèt:ÊËËÉÉÉ¡©©‰Ã‡SUõÞ™òxâ‰'X·n�GI�:!))‰E‹a±X˜9s&¹¹¹Ô××322BAA±XŒ_ÿú×;vŒ;… râÄ èëëãØ±c b±�I’>ÒÏG„fÚG‹ÅBuu5Û¶mcxx�ÇsV™X,F,C­Vc0P©ThµZ´Z-‰D‚h4ú®×—$‰§žzŠ7ß|“x<Î�7Þˆ$I<òÈ#“ÊM\[­V£Óé”u‘III¬]»«ÕÊc�=ÆŽ;â’K.!==�P(Duu5«W¯¦¼¼\¹žÓéTÆKA¸p¦Up¼ôÒK)--¥¾¾žÝ»w“‘‘Aff&áp˜ŽŽÌf3™™™´··3::Š$Iôõõ1::ŠÝn§°°pÊkO,ñ©¯¯çðáÃTWW³xñbÚÚÚP©T“ÊZZZ”®÷èè(6›�™3g’ŸŸÏ�7ÞˆÃá`ýúõœ>}šäädªªª0›Íø|>ìv;Ë–-C­VÓÓÓƒ^¯Ç`y,áB›6ÁQ¯×“ŸŸÏ-·Ü³Ï>ËöíÛ ƒäää …Ðét²råJb±[·nÅëõrüøq"‘ .dîܹtvv¾ë{¸\., CCC?~œžžž³º½�‡½{÷òôÓOÓÜÜŒÛí¦²²’¢¢"öïßOww7áp³ÙLzz: ,`Þ¼y\sÍ5ìÚµ‹-[¶‰DÐh4ôöö²bÅ *++1›Íçû#ám¦MpœèÎÞ~ûílݺ•×_]y~íÚµäååQZZŠÅbá±Ç£±±€åË—sÓM7QZZŠ×륪ªŠ¼¼>Îÿý¿ÿ«ÕÊÍ7ßÌå—_~V¹ÆÆF^zé%öîÝË}÷ÝGYYf³ù£½yA>ñÎë˜c4¥×PȨ¥ˆ˜ÊDB­™3�ùÌjd,z°èd¬‰) LÚ8'‡¢ø½dY&‘H0<>N(bªs7AÎû„LXë ¬IB †Ò[ÁH~믉àôÖW³NƬ“I³}°ã;iµZ‰CCCtttL Ž### �F±Z­¢;-Â;Œ3ÒÞÊþ'ŽŸÿਕ¨¥’J{&N4ÔÞùßoû‰É#þ=óòòˆF£œÊo¼Áúõ룹¹™±±1âñ8�‡¾¾>ž|òIžxâ rrrضm>Ÿ€/ùË<÷ÜsìÚµ‹{ï½—††ZZZæ™gž¡­­�ÿþïÿfÇŽ”––  …BÄb1Z[[ùñ�ÌW¿úU6oÞÌ“O>ÉòåËÙ±c‰DâC‚ ücÎ[ËQ£ÑPVVFŽ·�y…G(Ëá]j™—z*X¸ù[ïb¿õÕêÁ濫ÔyÎÇŸO¨¨¨@§Ó±mÛ6æÍ›Çk¯½FRRUUUøýþIe;;;yñÅÙ°añxœ¡¡!"‘²,£ÕjÉÌÌdÍš5¤¦¦b±XÈÉÉ¡©© ·Û�Ýn§¡¡�ÇœÚÚZB¡‰DB™=·Z­TTTPQQ�Édâ²Ë.cÏž=˜L&Âá0CCC ð£ý³ÙL<Çf³±råÊÍÍ7ßÌe—]Æ‘#G¨­­Î$þ ‡Ãx<†††ÈÊÊâôéÓŒŒŒ�‘‘¡B�FCqq1—]viiiê~A8qîÞNšjkÙ“’‚Í>—K?»”ùóþ^ä¼v«óó󩬬¤®v„ƒ§#ä$'ÈJz{Wqr€4ÇݸbÍ”¥'¨¬¬$??ÿC¿¿Z­&++‹ ðì³Ïòµ¯} —ËuVKT­Vc4cÏž=x<FFF”�6ä}, ìÙ³‡ææf¼^/’$áp8HJJâØ±c¼øâ‹”””(c‘‰DBI'1sæLvïÞM("33S9Œ£¨¨Hl�„ó!&0ÖOó±v|f3:½ŽÔ•”Íû{ãIt$ˆû½üAB ¦¤tlƼÕÕÕŒ��Ó|ÜÃæc·.aÖ˨UŒ*YB+EÈ ¡Àèæ’Ùs¸ôÒKÏù½Ôj5)))JkÌáp0þ|®¿þz®ºê*233‘eƒÁ€ÓéD¯×SXXÈŒ3xöÙg©©©¡¨¨ˆ3f�””„V«Åd2‘’’¢,«Q©TX,’’’°X,ãr¹xá…�e™ÜÜ\fΜ‰ÑhÄb±põÕWãv»y衇ÐétÜ|óÍX­VÌf3ƒ�ììl~ö³ŸñýïŸíÛ·�ÇÉÌÌäºë®ã?þã?Ðëõïã‚ œC¹s®dñµYNd´¡§�æ·Š¨¶Ê²<Ÿ~Nýé—<þè_y¾´37<°‡ÿ¸ÆM¬§ ·;åœR³¾�$I ²gÏ.ÞØþ2•™>>¿8Lº]âõ«ùÏã«0%Æ( ì%GÝËšÏ^ÉŠåËHOO?§V“,ËȲL @¯×+ÁL’$Âá0ƒAé¢ÇãqB¡f³µZM4%‰ I’²ßz¢|"‘ ‰`2™”×G"‰„2v ‰ÅbÀ™=ÑÕh4H’D$!#Ë2½½½<øàƒÌŸ?Ÿ;KÕJ"‘  ’H$�eµZ�^¯Çd2‰¥<‚ð«­­UV±de½#8êûhÞù¿]õÚ??׃+} ;|ÙÄoú W¢R©q–¸Èu¸iéùÇ*¢V«q:�\zé´ Û_ÛÈø WÌ ðp…O’9AšÚÍÚV³xÑBRSSϹ;9Ѫ³Ùl“×h4X,–I�étºIG¢�FŒÆ©›É�æ¬ÖÛ;˾óúï|ýÄ„L4eçÎ�ƒAl6›ÀµZ-v»ýݧ †vçá.î^Dî?Í�WC·åFþiÁ¹ç�}/:�—ËÅ¥ÕKÑL¼yp[OuÑëë¥T3s†ž•Ko`Þ¼y8�Îis–c<gß¾}ìÛ·OgllläŠ+®`áÂ…Óæ>aúH%£t9_ø}:Ú«ì¤Îcéœ8êS£´î}ŽGލ)\¾–¹3>º·Ôëõ¸\.V­Z…Ùlæøñãd›Æ©LNföìÙTWW£×ë§ÝÄÄi º.\È5×\CIIɇž‰á|±‘œSÉe_¯D%¿íXš@û^nx�ï=º›ÂïìäžÏøPvþCcŽï¦­­ �ÇCRRéµAÞÍ{�9þ½�¦õ„bX4 b±ñ”J*®ÿ.¿�»ùQáHŒóuÒaaaáyº² Â?N[ùó7xzá!j¶låϯ5‚ä@-/ãž×g�ŸÛÇÐøÅ®¢ Â…§}øŸ*(OÎ"¥ šE7û=jM&©8µ†ÿÀùa‚ Ÿ@ÚëªÒ�tœ9eÌ:ëi`AGA>m¦×Ô° ÂGDGA„)ˆà(‚0A¦ ‚£ ÂDpA˜Â´9‡_’$b±‡Âãñ I*• «ÕÊܹs±ÙlD£Qºººðz½”——_´ÜÕããã´¶¶Ò××§�¶páBÇ´Û[.ŸTÓ*8z<î»ï>º»»Ñh4Êqi÷Þ{/—\r �@€íÛ·ÓÔÔÄ7¿ùMåPÜb"ßËØØjµZ9rì\ȲL,£®®Žgžy†ýû÷£Õj±Ùl<ðÀTTT‹ÅˆF£$%%}¨¼ÕŸC,ûÐ×aÇ &“‰oûÛ\sÍ5øý~6nÜÈïÿ{~ùË_RRR¿ýÛ¿!IZ­öœƒ†ßïç׿þ5IIIÜ~ûí̘qnÇɲLGGÏ<ó •••ü×ýZ­–ÖÖVB¡CCClÙ²…ãÇ�ó­o}‹âââs®c àÉ'Ÿ¤­­�o|ã�ÓëA8cÚljÃc ))),_¾œW_}•žžrrrþ¡CeeY&��ÇyÛaF˜$IŒŒŒ(), z½žòòr‰ñxœDâÌ! æú>Šk§ݴ Žo§×ëq8Äãq¢Ñ(Á`�#GŽpúôi®»î:l6Ï>û,Z­–P(ıcÇÐét\uÕUTWWãt:”4üãÙ¿?*•ŠÑÑQ.»ì2®¿þzÜn7/¿ü2ÇŽ#‹a6›ùüç?ÏÌ™3±Z­J}Ôj5.—‹xî¿ÿ~–/_Îg?ûYZZZسgèt:æÌ™Ãu×]GJJ uuuìØ±ƒôôtêëëñûý477ãóùˆÅb,[¶Œn¸�ää�öcA˜î¦õè¿Ï磽½“É„ÝnG­VÓÔÔÄo¼Áøø8‘H„�;wòúë¯ÓÝÝ�Édbdd„ 6ÐÑÑ¡d |{b-½^�Á`Àf³a0ˆD"lÚ´‰ãÇ�+9¨ý~?ëׯ§¥¥…P(¤ÔG¥R‘™™ÉÊ•+Q©T<ÿüó<ñÄtvv�Ç1™L�Fôz=6›MÉq3ñýD«wóæÍœ>}¿ßOKK‹ò½Éd")) “É„^¯Wy‰1GA˜ÌÝ5ÈéÚ£œ:õ&O=õ¿üéOâ‰-oR×ó÷ß×i×rL$´´´°wï^"‘uuu,Z´ˆÜÜÜ)óÄ$ t:Ë–-céÒ¥¼ùæ›üä'?¡»»[™ÑžH¿zÇwÐÑÑARRwÞy'ÙÙÙ óÒK/±dÉn½õV222hjjâûßÿ>sçÎ%++ “Éœ Ž&“‰[o½•mÛ¶±qãFŽ;Æèè(7ÜpW]u###=z”»ï¾›’’Ôj5ƒ«ÕJww7ÃÃÃ<ôÐCôôô�——‡,ËèõzæÌ™Ãg>ó}ôQNŸ>ÍÝwßý¡Æ-aºln£îÀ!Œ�Rü½Ãèƒ}øêÂôF�Ï(Ä�wúÇp8Ìßþö7þö·¿a2™˜5kÿó?ÿCrr2ápø¬òƒ�¹sç*ÝÛ’’l6Á`�P(4©[üN‰D·Û�N§#''‡´´4L&TUU‘H$¦|O�NÇêÕ«Y²d û÷ïç›ßü&‹…•+WžU6�sêÔ)Ö­[ǦM›”÷�H» ÕjIII¡ªª ½^O4ý°� |Š„�ËDŒKxæ÷×�7ò÷þ¿Þ8ÂÉ›�T³úG³ÙÌ·¾õ-®¼òJÒÒÒ”¥2ÇÖ“ÕjeΜ9|ùË_¦¹¹™òòò³Êôôôð /�’’Â믿N4åþûïÙ ábÅ•šGYuµ*ç1?½ŸVß0]a cú�9NŒ &''“ššª,¬>ÁQ£Ñ�ššJ,£§§‡¡¡!B¡ííí455át:'M„$ N�:EKK ãããȲL0äĉØív¥ûýv£££Äb1IIIƒAº»»§l‘ ‚ðA©Ñ¨5èuZT*@«E§�$!I2HÒôk9žO&“ —ËÅÑ£GùãÿȲe˸üò˹馛8rä÷ß?f³™X,ÆŠ+())Álþ{•J…ÑhäÅ_¤«« •JE4E–e–-[FAAmmmø|>~÷»ß±téR***p8:tˆîînôz=*•ê]wÒ œN'䡇bÉ’%¬^½š¤¤¤ õ1 Â'›NŽ´é'ÏÕW_Miié”­0�NÇÌ™3Ñëõ$''c4Y¹r%¹¹¹X,eâåÚk¯¥¸¸xÒÎÄ6¿êêjàÌbëD"�Á`P&B&f¬SSS¹é¦›ÈÉÉA«ÕNºFFFÉÉÉôöö‰D°X,\zé¥,X°€¤¤$*++Qf°ÓÓÓY¼x1²,ãóùHMMåÆo¤¸¸«ÕJQQ«V­"99�FƒV«eΜ9Œ��ÓÛÛû¡×d §–ÖI³'§f�J]]n·û#OÍ*‚p1ÔÖÖRóôK´wŽRvûZ>7¯�ìL7ûþ¸Ÿ^U>³¾úy.Km8Ι¾¶ @FJĉ‡�«œ IDATÃD%��HDä�azÉ[8“ d²’&bß,®¹gñ[y«Ï”Qß÷´+éWýŒ¶Öð—Û«X±°Šªª*yä‘‹S{A„‹H{ä{ß%çç_Aµ,íÉW©yn;Êïå»ÿ' ›IK0¼ØuA¸à´ å§éº‘�Á(ÒñÓ:lbæk¸¦ÂNŠQ£Œ9 ‚ |š¨—Îë"„Ý#Œ' ÌäÒÉ�ìœCA„éH=8š‚N«Co6¢7ª0h= �Dˆ'ÄòA>½´�>¿†úZ:¹©Úõ¦¼ÀcÏü+—ýÓ lIº³Öȉ5s‚ |�ë.9í5¯þ”Ëæ¤’…iåõÜD˜ö»ŽþGGD Ë—/gíÚµÊ ÆÆÆ”CA> 4 )))çôím˲È5�ÀVHiõÿá¿�I7åLà 'V ‚ LgÚ2ÛÛ¿5cM-cÑç˘Ø#f«Aø4šv§ò‚ |DpA˜‚Ž‚ SÁQa ÓædYVÒ_˜L&Ñò>2ée󹺴“äæµW:§,3-ƒãœ9sðûý;vŒ%K–`µZ‰ÅbJŽ—¥K—²yóf¥üÎ�;Ù°aõõõèt:–/_Η¾ô%rssÙ½{77näúë¯çñǧ¯¯�ùóç³fÍ–/_>é}£Ñ(uuuJò­-[¶Ð××Gee%·Þz+W]uCCCJêD"ARR?úÑ�ؼy3[·nÅëõR__Ïå—_ŽF£¡¼¼œùóç3cÆ ¸ï¾û¸å–[X¼x1jµš¦¦&8À¿øEB¡O?ý4/½ô’rŠûw¾óV®\‰ÝnçСC<üðÃäççÓÒÒ 7Ü@,Î7¿ßÏ<€×ëeõêÕ\ýõ“îqllŒšš~øaB¡Ÿýìgéî´”x‹×ëåî»ïÆår100ÀîÝ»1™L,\¸�P(ÄÈÈóçÏç®»î"??Ÿýû÷+-Ò_|‘ÜÜ\fÍšuÖ„V(bûöí9r„;3’’Z[[9uê¡P83900@nn.kÖ¬¡¸¸˜ááa¼^/twwsúôi%8ÖÕÕát:ÉÊÊ¢±±‘—_~™/ùËddd0<T*&“‰Y³f1þ|t:jµšÑÑQ¶lÙ‚$I¬X±‚Y³fa³MÚ[J `||«ÕʪU«ÈÎÎ&))‰ºº:%ËâÄ0@QQsçÎÅét*÷­V«)--¥··—îîn‚Á ’$122ÂÂ… IOOçÍ7ßäÍ7ß$�âp8ðz½hµZe6\ΫP/Ý'òüS{¦Ïlõ;egg“™™ÉéÓ§éììäĉ¤¦¦*As‚ßï§®®Ž#GŽàóùˆÅb˜Ífe9‹Z­ÆáppÉ%—`µZ1›ÍØívôz=¡Pè¬1»‰àSVV†ÅbÁb±àp8Ðh4„B!B¡�2¶™H$ˆÅb¤¤¤PXXˆÕj=ë>’““Ñétø|>`ñâÅh4FFF" RTTD<G¥Ra·Û±Ûíh4’““q¹\¨Õje¼Ïh4âr¹”1SI’ãèÑ£èõz\.×Y�Î$[Óét¤§§“––@nn.©©©Êø§J¥B§Óát:§ì;�NœN'Ñh”ææfš››1 ddd`2™‡ÃÊu"‘F£‘ììl²²²Îùg@Ιœ@ŠGÓ³ågfI�N'Z­–×_ŸÏ‡ËåÂétÒÑÑ¡”âÍ7ßÄb±ðõ¯�P(Äý÷߯LžLL²øý~e2b||œ@ €Ñh<÷3âÞšœ©¨¨`íÚµ“ºø�@€ýû÷O*ŸœœŒÃá ¯¯�¦¦&4 ¥¥¥4551>~&3šÍfÃét288œ b‘H“ɤLžh4%€½“$Ièt:òòòchhˆ´´4ÌæÉsxBGz½�ÇC(úÀk# %%%vïÞ�Z­&''GùGÀ`0àr¹¸ë®»ÈËË›ôÿ!ÓÝÝ­ÔÍçóáõzq¹\hµZ”œäÇÕÂ'€yyÕùü úŸ¦oËQ£Ñ���Mee%�<ò‡cÊÎ>ŸOiM…B!ºººèììTÆÐ‰ccc;vŒññqúûûB«ÕRPPpNÁQ¥R‘””„V«¥¥¥…£G� •jI’P«ÕJ ˆF£h4rssñz½ìÛ·�ÂÂBìv;3fÌ`tt”ááaŠ‹‹1 $''£Ñh ££¯×KKK íííØív¥µ÷N÷rÇwàp88xð MMMÄb±I-c›ÍF$¡¥¥…úúz‚Á ‡RÆA?¨ÌÌL¬V+ÇŽ£¹¹™¹sç’––†ÉdÂjµâóùضmÃÃÃAe5A??øÁØ»w/###ìØ±ƒx@ùÃþÀóÏ?Ïèè讋 ¼›iÛr°ÛíÌ›7�•+WrÅW�™™yV™¢¢"Nœ8ÁæÍ›yùå—ÉÎÎÆjµ*KX´Z-jµš––6lØ€ßïgÑ¢EÜ|óÍSvƒß�ÕjåŽ;îàÙgŸåW¿ú*• •JÅ’%K¸í¶ÛÈÌÌd×®]|ûÛßfåÊ•Üyç�äææ’’’¢Ì|OŒéÕÖÖ‰D(--U®ýÅ/~‘矞ï}ï{ȲŒN§ã+_ù óçÏß�)F£‘;§žzŠÇ{ŒêêjÖ¬Y£´ÂL&+V¬ÀãñðÃþƒÁÀÊ•+•¥O”ÝnÇápg–Ùl6tº3§Î/X°€þçæ÷¿ÿ=ëׯ   €+®¸B™Ð„ A%¿Ï–ˆ‰ó'&†‡‡?V»J&Lt”11�NG8¦½½�ÜÜ\, ²,3>>N{{;%%%˜Ífúûûéíí%�b±XÐh4deea4Ù½{7Ï=÷·ß~»ÒêÌÈÈ`ÆŒØíöIuH$ʵ‹‹‹±Z­¨T*¡°°³ÙL$¡««‹þþ~e�`ZZyyyÄb1¥%ät:),,D¥RÑßß�×른¸Xé.wuu!IyyyJxbR¦¯¯I’Ðh4Ìš5‹¤¤$Ôj5ccctvv*õÀívSPP€Ñh¤½½ŸÏGJJ 3f̘4F éïïW†&²²²‡ÃØl6²²²�e™“'O2cÆ RRRP«Õx<Z[[)..Æf³¡V«q»Ýôôô`0(,,Tw<g||œ“'O*ë0­V+¤¥¥)×v8¸ÝnåsÕëõ´¶¶b4ÉÌ̽Ôü3¶½Ù†_cÅŒ²ùp3Hœ:@óè úâc»Ž‚ œºÂó:úúñÛò±šR6·áNH´lÀPdÃZê¼ØuA¸à´W,êâ „Œ™¤›Û)>Eƒ¿’Î:È^2l“O°ÑëõçtŒ¾ ÂÅöab–vÜgE«Ñ MÍ'#õ83å—ØUŸA×ÀnÉ��Þ@rKÊ &v6‚ LgêGÖ¯!==�ܬ$\9)d±õ?ŸàTE¦ôrˆ`(§�zÙº±lvYj5VW6®ÒHu1ÏÉ&-Õ‚ 1c+§�öÖ«‹(°€ÀQ@þ²/òÝ_ �»0ƒl«†Ö‹]CA„‹@[õö^³>…äÂn(¼hõAøX;dA&„ÇáhÛ4 ŽñxœP(D4U3� %×É…$I’’Õb±(gDN'’$)il'îñ\wɲ<é�FìR.‰XÈG¸g/»7næ¶ŸLÓƒ'ùéOÊâÅ‹•?>ø ííí¥>^¯—ššn½õVjkk ƒ¥çÓØØ›6mâÎ;菉¾^9Iý\„ÃavîÜÉ׿þu•Ô²‚pþ qð±ïñ­_ýšÔÁZ¦YËQ’$Nž<ÉŸÿüg~ùË_ât:‰Åb¼öÚklÞ¼™H$Beeå­—ÅbaáÂ…üâ¿ ´´tZÄj³ÙXºt)yyy}ès/Ãá0cccg¥h„ó+™YŸùß¼¼›“ÇzØýBÃô Ž]²­[·¢ÕjY²d «V­Âf³‘H$ðù|þ ¤äWáÒ§b÷³›iÔrŒÇã¸Ýn>̪U«X¼x±’Æ@«Õ²lÙ2Ž?ÎÀÀ�‡H$ÂÞ½{ÉÍÍedd„þþ~%Ÿsaa!:�Ž`0H{{;Ç�'�c4Y¸p!YYY râÄ rrrhii! ’‘‘AYYyyy“ê–H$áСC,X°‡ÃAkk+CCCØív�3¹RJKK'e$ˆÅb´··ÓÑÑAZZ���Äãqrss)--UÒx½^>L?*•ŠÔÔTV®\É©S§0›Í¸\.%�ÕÞ½{©¬¬Äår!Ë2n·›ÁÁA***”œ1CCCtuu‘™™IFF²,ÓÔÔ„×륢¢»ÝŽÏ磯¯£ÑˆV«åĉ,X°‹Å¢dH4�œ>}€’’JJJHMM%�ãñxØ·o�‡ÃAOOϤ{477sêÔ)%¥Ä¼yóÈÏÏÇï÷ÓÛÛKff&éééȲLcc#~¿ŸŠŠ l6^¯—¾¾>ìv;ÙÙÙýž0mi~ö³Ÿýì½  …>ö?XÑh”îînjjjX¶l³fÍš”ŠT§ÓÑØØˆ$Iäææ ¹çž{ðûý:tˆ×_�ºº:�åååèõzNŸ>Í«¯¾Êßþö7Ž9‘#GÈÈÈÀétRWWǯ~õ+¢Ñ(›7ofÇŽ477£×멪ªRgMÔíĉüô§?eΜ9X,^xáž}öYFFFxùå—Ù½{7ýýý8�Nòóó'MØ„Ãa^yå}ôQü~?›6mb×®]tuua³Ù())!�³ÿ~ž~úijjj8räÌ�;—Í›7ÓÛÛ‹Íf#))‰––~úÓŸ’žžNff&¡Pˆ#Gްwï^,X t‰Ù¼y3¡Pˆüü|�Ï=÷;vì ¨¨—ËESS{öì! âv»ùÍo~£$óúßÿý_^yåúûûÙ´i»wïfhh—ËEvv6�‡�;wòç?ÿ™}ûö144„Ûíftt”+¯¼’äädÙ°aëׯçèÑ£ìÛ·�D"AZZýýýÔÔÔ‡)((ÀçóñÌ3ϰgÏŠŠŠÈÈÈ ±±‘Ý»w#Ë2……b�š½½½ttt000B\2âÌË"ÉfÃh0 ÑøíèâÀ“ÝÓoBÆåra·Û§œ•ŽF£x½^<², ©­­åÚk¯å™gžá®»îbãÆ�œ:uŠááa^yå:::x衇xõÕW¹÷Þ{ ´´´�H$ðûý òÐCñØc�QVVƶmÛðz½ï;^�Fñx<ØívvìØÁC=D8æÐ¡C�³ÊÇb1¼^/±XŒõë×ó§?ý ‹ÅÂÞ½{ñx<ŒŒŒðàƒR]]Í“O>É_þònºé&¶lÙBYYn·›¶¶6|>---ØívZZZfpp�ööv\.פ ìr¹(--e÷î݃Aºººðù|D"Nœ8�$I444�H$°ÙlSÞãøø8999ÔÔÔðÛßþ–ÁÁAŽ=ŠÇã¡©©‰ÿøÇÜvÛm<÷Üs|ík_C¯×3>>Ž,Ëøý~žzê)Ün7¿ûÝ﨩©á‰'ž ¾¾žššt:EEE¼ñÆ„Ãa:;;ñûý„Ãa�e™úúzdYž²~§×áÇùÍoãþßÖp$gª)ÒiÓ­†3ãŽ}}}x<âñøYIì III$%%¡R©°X,ÜvÛm,X°€ÔÔTÊËË™;w.^¯—¡¡!†‡‡Ù²e »víB«Õ‡™3g·Ývz½žôôtÖ®]KJJ ‡ƒÜÜ\z{{Ån·¿çr½^Oii)×^{-ÅÅŤ§§+]Íwf6Ôétäååñ¹Ï}£ÑH~~>YYYx<†††ˆD" sÿý÷óàƒ"Ë2z½žeË–QYY‰,ˆ††hnnæ3Ÿù ôôô�H$à–[n™ô™�F>Ÿ�p8Lcc#‡ƒ²²2Nœ8�×ëåäÉ“”——“››KkëäýTƒ�ŠŠ V­Z…F£¡¬¬ §ÓI$ahhˆP(ĬY³˜?>ÉÉÉ ª««ijjB¥Ráv»�3óòòÐjµ2wî\L&ñx\éÚ‡ÃaN�:Ejj*‹…††< Ì™3çcßó.¬Å‹SQ1›Ì¬÷9%õijj*.—‹††´Z-‡CY�§Óé”뼕J…Á`PÒ£N¬Á”eI’¦,¯×ë•Ô¦:�N)ŸH$H$X­V®»î:*++Ñëõ“&‚&²HN¤]½ñÆéêêbdd„h4ŠZ­VЋŢ쎎z{{IOOÇáp°k×.:::”®ÉÉÉSÖÙh4b±œùÑÓëõ“ê,IF££ÑˆF£Qò_O/5ñ9èt:å³Õëõ˜L&Ôj5&“ ½^?©~¹¹¹�FöïßOGG~¿ŸÔÔÔ)ë'|z™ÍfL&éi6Ì*Õ”]èi5 ÉÉÉTWWsòäIRSS•ÜÕ‘H„ 6àõz©¬¬Äjµâõz‰D"ôõõáõz1�JPMKK#99YùE,,,ä’K.QÞ+ ÑÐÐpïv2µZ­Íääd,X@~~¾ò|<'33““'Oâv»IKKcÆŒäææ288ˆ$Idggc·Û'-ºÖëõ¤¤¤���ÍŽ;�$‰9sæàt:q88p»ÝNZZ&“éœê¬ÕjÑëõôööÒÕÕ…ÓéÄívÓÚÚª +Lüƒ4>>Îèè(‹·ÛM__eeeddd‰DÈÈÈ ¦¦F¹O›ÍƉ'8pàIII¤¥¥MËåSÂù5m‚ãD«âŠ+®`ppP»Óëõ„B!êë멪ªbÞ¼yÊ„ƒ$I´´´°mÛ6ôz====�ŸŸOJJ %%%ôôô°~ýzº»»HKK#++ëbÞêY´Z-N§“9sæÐÐÐ@<'??�NGVV3gΤ°°�£G�ÒÑÑÁm·Ý†Åb¡¤¤„­[·¢V«¹ä’KΆP«ÕØívæÌ™ÃºuëXºt©Dsrrضm—]viiiç¼ãÇ`0àt:ÉÈÈàµ×^£½½Y–immUZÞ]ø¦¦&6nÜHnn.ÃÃÃ̘1§Ó‰ßï§²²’uëÖqùå—“™™‰Éd"33“íÛ·så•W’šš*h> ¶ô<¬ OŸàgdyy9_øÂX·n¿ýío•ç¾ó�ïpùå—“‘‘A,C¥Ra2™ˆD"lÚ´‰ÞÞ^ øö·¿MFFƒ�k®¹I’xôÑGÙ¾}; ,ছnÂf³1cÆ ŒF£’““ÉÊÊR–ÂLP«Õ˜Ífòóó1ÿöî<<ªònüÿ{ö}’Ì–�l@HdA¶ *­”ZÁµµî>Úöñ±Š~½´�íS­Ôöqùª´µèï+ŠÚZÖ²„} !™’�„ì™Ìš™3ËïšS– hQ4ܯëêU�9sŸûœ‰Ÿ¹·sŒFÔj5v»�žžùX¥RIjj*F£ñ´ ¥P(HNN–SÄöïp8P«Õ ’““¹ÿþûùýïÏ{g$IX,&MšDVV¹¹¹äçç£P(6lJ¥’ÁƒSVV†J¥bРA}ÞS£ÑHii)«V­¢°°�´´4´Z-EEE,[¶ŒÂÂBl6J¥³Ù,ß“Þ$ê¡P­V‹B¡@¥R‘žžŽÃáÀ`0àt:¹çž{xöÙgY½z5¥¥¥dee1lØ0¹;>gÎÞ{ï=Þ~ûmÂá0ƒ�‡~˜±cÇ¢×ëI$”””°råJ† Bjj*jµšÂÂB–/_Naa¡èR _€“Ìa©Ü¹tŠÄY¦U{ǪƌóuÕîß–H$äÿõê]Z£P(�$‰ÚÚZî¼óNî½÷^&OžŒÍf��B¡è³œËŠÇã'µ˜z�ëíšöþïë'ê±§¾vêëg;¾×©ã•'–õEÎyêûñxü´cN½þ/z�}Õ¹÷¾Ÿz_Ïô]žkýÄ3ÚB¯mÛ¶áv»I$ddd�ŸŸ/ÏWhµZùo¦_µ{�é?ô3«T*ûìv�­œS?s¦c{_?ñø¾Žý¼ÏŸëñŸ×}ü"ç<õý¾Ê=Ûkç£Îg«ã­Ÿ œ«~·ÎQá|¸(ƒcï¬î 7Ü@aaáži¡ÿë—Ýê³Q©T8îºë® ]A¾¡.Ê–£ ÂÙˆà(‚ÐåÒhé¨eßò7øÃ­¿áýÆ8þh3›þïƒüè/¸Š‚ _?õ±Ç‚x[9²÷0ê`Œhåj–7 aeö…®¥ Â×ì 2 ð£¹5HÂ(¶záâÓwpT(!cãÌéLˆaIA.>êX H±ñX”€B i3¹ëw3åÇA.&Êš:õ‡ÝqW°öB×Há@ýá£W²7 L6ÍQFÄ%Ø÷ÿxò͵4©\uÕUºž‚ çÍÑÝUÔ5t2ø‡×‘Ó»§IÝZ>ø¸ŠUDzùñ3ßGýà¼éÇßÈÈÀ¦4“Ö‘âPbФtt„cÞ³ïj-‚ðmâïðÒZ߆#<ìÿû_ÙÓÙÌöM1ðÇiÔ=ôPߟN™À÷r&|kÆãñ8áp˜ 6ÐÕÕE,C¡P`µZ7nIII„Ãajjjèêꢴ´TÞ=ûBhmmÅívS[[+¿ær¹(,,dÀ€çTF0¤¶¶–cÇŽ1räH,Ëw¢‘$‰šš:::6lØi»~ ÂÅ)ĉø=tëŒÌjÒýÇßé7ÏVÇãq|> .¤­­ ½^�B¡Àl6£P(?~<áp˜�;wâv»ÉÉɑ󷜋ÞÜ.MMM¨T*ìv»¼ñìïR“| IDATåñxزe +V¬ ¼¼\hYYYÌœ9“«®º §ÓyÖr‚Á ûöí£¬¬Œ¼¼žþy’““¹õÖ[ÉÉÉùBŸïݘuÆ ,]º‡ÃÁG}DRR¯¿þ:[¶lÁçóqÏ=÷Ÿ¿—¡Ãáà†nà†nø’W$™ôëEŒiiiL˜0�ÎÎNúÌýuJ$ÔÖÖ²víZFŒÁÏ~ö³“Z¯×^{-cÇŽ¥½½�ÚÚÚ³æ¾á«ÓïZŽ'Òh4˜L&b±Ñh”`0HYYUUU|ï{ßÃjµòæ›o¢R©…Bìܹ�FÃÕW_Íĉq¹\Äb1� .dÆ $ Ž=Êw¾óæÎ�K{{;ï¿ÿ>;vì@’$L&·Þz+Ç?)™|"‘ µµ�NGnn.YYY'umm66›�ŠŠ öïßOJJ ‹/¦°°�±cÇb±Xèèèà•W^aÚ´iRQQÁ¶mÛ¸þúëIKK`ãÆ�¬\¹’††n½õV† "Ÿ'�xõÕW‰F£Lœ8‘ñãÇŸtï¶lÙªU«¨ªªB©T2räHfÏžM^^±XŒÖÖV/^Luu5===Œ=šk®¹†üü|$IbÉ’%ìØ±ƒ®®.²²²¸ñÆ),,Äãñ°|ùr6mÚD,#99™Ÿþô§¤¥¥QVVÆ'Ÿ|"×û¦›nâÒK/Åív³bÅ êëëøáÈe—]vNC‚ðeõëàØÝÝ�ÛíÆd2‘œœŒJ¥âÈ‘#ìØ±ƒ©S§Êù�ãñ8ƒ ¢  €††þþ÷¿“��MJJŠœ/Y¥R‘““Crr2jµš¼¼<\.===¼ÿþûTWWãr¹0�x<Þ}÷]4 C‡•SŒÆãqš››Q«Õ˜Íæ“rDÿ²ýõÁH$ÂöíÛQ«Õ”””`6› lܸ‘!C†���ÍÑ£G)++㪫®Ân·³yóf¶oßÀСC�ãA·÷\‰D¯×ËÖ­[éêê"''GîÖŸ())‰¼¼<Ôj5¡PˆM›6QXXˆÝn§­­�Õ«WÓÒÒ"çºîM¬åõzY±bUUUrÂ1§Ó‰Éd"‰È™333ÑjµtvvR^^Nww7•••twwËõ¶ÛítuuQUUEGG‡üºÃá8-‰™ œoý.8F£Qöïß�R©$‰PQQÁW\!'{?U<Ç`00aÂ.»ì2víÚÅã�?Ncc#ÅÅÅh49{àܹs9xð ÉÉÉÜxã�dffÒÚÚÊêÕ«™0a?øÁp¹\¸Ýn}ôQª««0`€áø¬ñ©I°Nd2™ú VgÓôV­Z…F£aîܹŒ5J~ßï?>çñxؾ};ûöíãºë®côèÑ8ŽÓÊËÎÎ&‹a2™ðz½üãÿ ©©‰ŽŽ<ÈêÕ«™?>S¦L!99€H$ÂáÇyûí·å‰¥¼¼<ù>·¶¶²fÍT*—_~9F£‘ÊÊJöîÝK$Áãñàp8˜?> @¡PPYYIgg'IIIÌ›7�ììl1‘$|-ú]pŒD"|òÉ'¬Y³£ÑHaa! , 99™žžžÓŽ×ét\rÉ%£×ëÉÏÏÇl6 …èéé9©[|ªX,FWWjµšôôtìv;z½žPTTD,;éœ …‚ôôtT*‘H¤Ïì…’$�F¿Tê†ööv:;;¹ä’KNêFŸX~}}=ûÛߘ>}:%%%}FI’¨¨¨à¯ý+Ÿ|ò …‚@ /´µµ�F™0aÂIc¦áp˜––<ÅÅŤ§§Ÿtn�ÇCww7ìÚµKNn6yòd¬V+*•ŠêêjÖ¬YÃøñãq¹\˜L&´Z-GŽaÕªUŒ?^Îwj [A8Ÿú]p4�üüç?gæÌ™¸\.¹KüM P(p8477ÓÐÐ@0<)¸H’DCC���̘1㼯Á”$ I’ä` …ú<®±±‘eË–¡T*YµjJ¥’§žzê¼äNJJâ�`þüù˜L&à_ §L™Buu5K–,á‘Gá—¿ü%×^{-÷Þ{/W_}5o¿ý6Ó§Oçá‡æºë®;çõ ‚ðeôËÙj•J…Z­F£Ñ V«¿PªÖ/z‡Ã�$IÔ××ÓÒÒB0¤ººšƒât:å|Øp|L±wIÑîÝ»yç�wˆD"$ "‘o¾ù&k×®Åáp�——‡Á` %%…H$‚Ïç#PQQAkk+’$�T…BAZZ.—‹††öìÙsZ}5 ÅÅÅÜqÇhµZÖ¬YCMMÍiÇy<‰III¨Õjš››©©©Áï÷cµZÉÈÈ@£Ñðé§ŸâõzåÏéõz²²²°ÛíìÚµKž@é­ŸÝn'�sðàA<ˆF£‘¿£Þô¸¹¹¹ÌŸ?Ÿ;3h4J @¥R‘••żyó¸óÎ;Q*•ø|¾óñ ©¼±ÅL¹þ F¥€R Œ™w=÷½z#—Ó[Ž_%£ÑHFFÛ¶mã¹çžcÒ¤IÌš5‹yóæ±iÓ&žxâ y\sæÌ™ž4Þ¨P(Ðëõ\{íµØívöíÛǽ÷Þ‹R©$�ãv»:t(£F�B¯×‹Å?~<ëÖ­£¬¬Lî¶«Tª>[Ã&“‰Ù³g³bÅ þ÷ÿ—7Þx€yóæ1hÐ  F£‘‚‚œN'Ÿ|ò ‹/fâĉLš4I¥¥a³Ùؼy3‡Æjµ�ÇÑh4hµZ† Æ5×\ûï¾ËÚµkQ«Õ\zé¥Ì˜1ƒÔÔTî¼óNþö·¿±sçNŒF#™™™Ì�;—ÜÜ\æÌ™ÃÊ•+yî¹çp8( JKK:t(n·›²²2b±íííŒ;–`0Èo¼Á¦M›ˆÇã´··sóÍ7‹™jáߢ·Ñ™ XÔð¯f“‹ËJRÚñ6£êÉ'Ÿ|òó inn& ‘™™ù•Vö|‰Çã 6ŒôôôÓž`I$$ œN'ÅÅŘL&‰ƒ&;;[>^¡P0|øpÒÒÒäYÑÞî¹J¥B«Õb2™ÈÎÎfðàÁddd‹ÅˆÅb˜Íf²²²øîw¿+·°Nåp8°Ùl(•J�&“ ³ÙLjj*z½žææfjkkIOOÇétÊ8v»�ÁƒSTTÄèÑ£IMME­V“’’ÂðáÃå2T*’$¡Óé0™L :§Ó‰V«%55•aÆ1pà@Âá0Z­–´´4²²²än¼^¯G©T¢V«ÑjµdggsÉ%—PRRBZZÉÉɸ\.º»»1 �F²³³ÉÏÏÇf³‘••E @©Tb0p:� 2»ÝNzzº|O ƒ|¿RSS …Bøý~’’’(((`êÔ©˜ÍfÚÛÛñz½X,òóó™2eŠˆà(‚ÐAúpJp ÓãmÆýÙ>Ï>û,o¼ñï¿ÿ>ûÛßX½z5€¼W¢×ëeÛ¶m,Z´ˆ¬¬,L&ÓiY…ožh4JKK .D¯×“””ô…¶r‹D"ìÙ³‡¿üå/dffb4OúÞc±ÇŽcÑ¢E´µµár¹¾Tᛯ±±‘æªíTl_Åûo`ݺuì�åãr¹ÈJÑ£ˆt@Û:”EEE‘›f#IgÄšV̤ûîæš —2*ωÃüíH�™H$‡Ãlݺ•`0HVVÄl6óÎ;ï°lÙ2P©TX­Vrss1 ç=OË7�$I:tˆ·ß~›––¢Ñèy-?‹ÑÜÜÌŸþô'ÜnwŸ‰ËηD"�ßïgýúõ444‰D¾Ðçc±MMMlÚ´ �ÇC,vúã_Z­VNó ~0û·cA5�+Yiò5Mløp [5ÑŽ‡öº½,æï¨ùË_žò±,о÷Kоwüßz7»ý¶ÐjµÌ˜1ƒY³fa·Û©««ãé§ŸfÅŠ¤§§3iÒ$JJJ())¹ÐUýÊH’ÄÁƒyë­·(..–sÁœ/½ÁñÕW_%-- §ÓÙgÚÛo•J…Óéä‡?üá…®Šð5ðêÒÐt2´“|¶qä± Žn¤Á¯FëÞÁÿ÷‡ ý{³[µZMvv6�<òO<ñÇŽÃï÷£ÑhèêêÂáp Ñhðù|x½^$I’3�FT*Á`�®®.Âá0ÉÉÉX,9Ù}kk«œÆÀh4’’’‚N§“ó�ÀñÔ Á`Pþ|oÒ@ @ww7&“‰îînb±ƒ�¤¤$93Ÿ$ItvvH$h4ÒÒÒäT§Ö/))INŸ …hhh ))IV€ã­°xú­VËý÷ßÏüùóq¹\¬ZµŠ×^{�3fÈc]“&MâöÛogÖ¬Y=z”gžy†åË—“H$ÈÏÏgñâÅrZÒõë׳páBöîÝ ÀÝwßM{{;Ÿ~ú)���Ü|óÍÌš5‹x€Ñ£Gǃ×ëeÁ‚�F:;;Y¹r%F£‘û￟yóæ‘���×ëeýúõüô§?% bµZùñ�LVV¿úÕ¯hnnæ¿þ뿸üòËÉËËÃår1iÒ$Æ�G(âå—_& qÇw0`À9÷tII ÇgÆ <øàƒâñ8ßÿþ÷¹÷Þ{6lÝÝÝ<üðÄÃa‚Á )))<øàƒrpìééaùòå,Z´ˆñãÇóè£�ž”é1‰àv»¹ï¾û¨ªªbäÈ‘äææÊïûý~^~ùeöìÙƒÑh¤¡¡�^x�_|QnmïØ±ƒë¯¿žqãÆa0¨««cåÊ•TVVòÌ3ÏÐÐÐÀÓO?-�k³xñb\.—è–«¹€ôÿàœ”šµ·"I’œñ/ rýõ×3yòd”J%ÙÙÙ –-[ÆÖ­[™={6Ï<ó p|bÇl6³}ûv^}õU|ðA†N0dóæÍ¼ñƤ¤¤`µZñù|„B!¦M›ÆO~òöìÙÊ+=z4IIID":::¨¯¯ç¥—^¢­­� 6ÈIí^yåÈâÅ‹Ñh4¸Ýn¶nÝŠF£¡¬¬Œ;v0gÎ~ûÛßàr¹ñÁpÏ=÷0|øðÓr<' |>ÝÝÝLŸ>�;3ݻwóÑG1f̬V+[¶lá£�>âùçŸ'33“ºº:ü~?f³™_ÿú×<õÔSÜqÇ\~ùåD"8ÀæÍ›=z4µµµø|>|>•••ddd°oß>‰ …‚�7òÖ[oñÈ#�0|øpº»»Ù°ao½õwß}·|ÿœN'?øÁ())!�£P(�$‰?ü�ÖÖV~ö³ŸqÙe—É-Z8«ªªxä‘G¸öÚk1b~¿Ÿ5kÖÈ­Y8Þ’Ôh4̘1ƒ±cÇb·Ûåú‹ÅX¿~=#FŒÀ`0pøða¼^/S§N¥§§‡_|‘ÒÒRn¹å”J%555¬[·Ž+¯¼‡Ãñ•ÿ] _³ƒSI¿8‚#‹´X,§Í@ªT*ZZZ‡ÃÄãq.½ôRZ[[q»ÝD"¦N�ÊСCåÏtuuÑÚÚŠ×ëåŠ+®`РAÄb1<›7o¦¥¥³ÙŒF£!33“Ë.»Ln�|øá‡tvv …P*•$%%1~üxFŽI0äðáÃÔÔÔÈ]òŠŠ víÚEyy9J¥�ÇCAA¹¹¹TVV‹Å˜:u*EEErý‚Á ÙÙÙX,† B^^^Ÿc‚�†œœÆŽKaa!‹…>ø€ŽŽÚÛÛ©««£¬¬ ŸÏ‡ÕjÅãñ`±X˜0a¥¥¥èõzòóó)((�»ðååå„Ãa***°Ùl¨Õj***5jû÷ïgÈ�!�F*++éééaÊ”)äææ‰DhiiáàÁƒ´¶¶ÊCyyy”””�——Gmm- …‚O?ý‡ÃAii)“'O>-Mk8¦««KNm[RRBww7---”——Ë?”*•ŠôôtJKK)**¢»»[þ!MMME’$Ö¬YCww7��ǃÁ` ¤¤„ÎÎNÊËË©¨¨`ß¾}ø|> ¸âŠ+ÎÃ_¬pA¨RÉ,ÇÝ¿™Þÿƒc<Çãñà÷ûåT 'r¹\Œ;–šš¶lÙÂöíÛ™_ss3~¿_ž1ïéé¡®®ŽŽŽâñ8J¥»ÝNvv6z½ž¶¶6jkkåú 0—ËE4åèÑ£ttt`·ÛÉÊÊ’gt‰„Üõ³X,8�N4�<ž×D<n·[~¢Äl6“ššŠÃá ¶¶–ŽŽŒF#¤¤¤à÷û©©©!;;[.£««‹£G�RPP€Ùl–×<žX¶R©$--�ÌÌLt:Ñh·ÛMrr2v»�FCOOUUUdff’””„×ë娱c(•J¹Ûßø¢Ñ(ÝÝÝÔÔÔÈC½÷3//�NGCCééé}~gZ­V~ Ž�OŸ¸\( R[[KWW—ÜZ·ÛídffÒÖÖF"‘ -- …BAUUéééX­Vº»»iooï×Oi}“mÛ¶ ·Û-ÿpççç“––öÏnµVþ>úMpA8çÅO– BDpA胎‚ }ÁQ¡"8 ‚ ôAGA„>üsx;u;ëè ê±]:”ñh¨ ¹ÇÃl}s »]Œø�Ž‚ ¢[-‚ÐAú þáHÖŒQÄkh5ÿ|5ƒö�¼õêrZÆÿsÃsÕÕÕÅž={Î{eANUZZÚçžœÿ.õ Aƒ0tÖQîi&îÌc=ĤZ6¾ö1- ´é¶³—rj¡ÿÜDTá«öUåëQ?ýôÓtlù-Ïn:B9@<@´{üi#ž+¯¡À•~¶2Nc±X9räy¯¬ ÂùÐÖÖF{w€˜ÁNjÃn6V¨ˆ)´˜SóÈ8”K2 Çg«íã&qi^4’D¢¹‘Æh»?ø¿$¤+¹[ݶîc¶T•³ @«E‘™Áõvl«æ@UèÂ^… Ây¦J±áHËc¤2�‘—dc·Y1¥0ßÁˆÀQj�‚òöÛoç7›ÛhšÉP˜P[F3₩`­þß¶Uú:AÎ/µµÖ€U©'É¢E¥R€Á„A¯ÅÓµÅbÁY8�aIf™*u£~x Çëh=jA.Bêßÿþ÷}¼¬Û®½wŒœ&AábÒï² ‚ œ�•F‹ÁjÄ RüóQAZ£ ‹-‚A%‚£ ¥d2†Žcø'Ô¤h1ö¦F^¯@iÁQ„‹’¥ZƒÁbD¯Rp<¡¯ ­Á€ÞÔϳ–——³téR>þøc9çò™D"¶oßÎâÅ‹inn>íøx<ŽßïçOú[·nÅw­ûŒÅbx½^-ZĶmÛ>÷Úc±---¼ð ìÝ»—@ ð5Ö:;;Y¶lï¼ómmm_ë¹…þ§_G¿ßϾ}ûX¾|9kÖ¬¡³³“h4zÆã%I¢¢¢‚�?þ˜ÎÎÎ>ƒc(bÅŠúˆššzzz¾òs& ‚Á �‘#+ IDATË–-ãàÁƒ„Bg^÷‹Åèêêâ½÷Þ£ººú+­Ÿ$I¸ÝnÖ®]KWW±XŒD"�$ID"Î’Ž]Ϊ_ÇÆÆF¹å‡9tèÐ×H¾j±XŒööv~÷»ß±cÇü~ÿ…®Ò‰Dزe ¯½öÇŽ#‹a·Û™3g7ß|3.—ëBWQø–ëWc޽­…êêj”J%ãÆ�#‘H°k×.ŒÉdB¡P�H$ˆÇãôôô�H$‡Ã}¶%I"�‹Å�$és[#'«P(P©ThµZ”Êýþô~þÄ–Mo‹V£Ñ ÑhP*•$ b±áp˜D"�B¡@­VË-ØxŸ�… ÊAîÓO?à¶ÛncΜ9äååسg�=ö�£ÑÈìÙ³)--åé§ŸÆívóä“O²bÅ  DRRãÆ�cäÈ‘Äãq–,YB]]·ß~;999Ô××óÙgŸ‘™™É¨Q£Ø·o�=ö���Äãq&MšÄwÜÁðáÃñù|<óÌ3´µµ�ÇI$üâ¿ �ÇçÊ•+y饗(--å¾ûî###ãŒ÷¥»»› 6ð«_ýŠP(D"‘àºë®cþüù 2DþÎ-ZÄòåËillÄårñØc�1zôhV®\É»ï¾Kyy9z½ž)S¦póÍ7óñÇóæ›oÒÚÚJEE3fÌছnbûöí;vŒÛn»�œœêêêxþùçÙ´i’$át:Y°`cÆŒA­VóᇲråJ.¹äÞzë-B¡S§Nå†n`ܸq_êoPèÔ5žÏ? ë[ÖmmmÅëõ2`Àòòòhmm%ÓÖÖFFF:�ŽðòË/3uêTŒßïgãÆ�ø|>‰�@€7ß|�ÇÃwÜ�ÓéäÈ‘#tww‰Dú<ïèÑ£IMM¥££ƒÎÎNÞ{ï=Ün7‡ã¤½-ãñ8MMM´µµ1~üxž|òI***øì³Ï(..ÆáppàÀ–,YÂüùóIMM¥½½�X,F àÞ{ïåùçŸgÆŒLœ8­V‹ÛífÆ ÓÞÞNSSMMM^{í5¦OŸÎ AƒèééáСC,Y²„””ŒF#���Äb1&NœÈ°aÃ0�(•J¢Ñ(7n¤¦¦†k®¹†qãÆ}î&£áp˜]»v±|ùræÎ�ËàÁƒéêêbÿþý|ðÁÜrË-¤¤¤°hÑ"ÚÛÛ¹îºëÈÎÎF§ÓQ\\Œ^¯g̘1¤¥¥ÑÑÑAGGï½÷G�eܸqtuuQVVƼyó(--%55•îîn:::‡Ãx½^^zé%L&ÿñÿ�Åb¡¾¾žE‹¡ÓéäúTWW“ššÊ‚ ¨««cÏž=lÚ´‰’’ŒFãyÿ¾ÔÝáÏ? ' º¯§.ÿ¶D"�ÛíF§Ó‘ššJRRÑh”°gÏ\.©©©´µµÑÝÝÍÌ™32dMMM466ÒÑÑA"‘ ««‹ææf ˜={6‹…�;w²|ùò3v!µZ-���ìܹ¯×K]]]]]H’tÚ±J¥’ôôtÆŽ˘1c(,,dóæÍ´µµÑÑÑAmm-›6m"�c·ÛñxŽÿ‚]rÉ%L›6�×_�’’F�E<Ççó±sçNzzzp»Ýh49ÈNž<™òòrl6›êêê¸ï¾û:t(±XŒeË–±qãFšššÈÏÏG¥RÉõ:t(ííílÛ¶�”” À5×\CVV …âŒßG  ¾¾ž®®.®¹æH Àï÷ÓÐÐ@cc#’$±yóf&MšÄUW]ENNÎIeh4:::رc‡|_}>ǧ¨¨ˆ#GŽ0~üxH8ü¯?æX,FGGdΜ9Ìš5‹äädù‡¤¹¹™ÌÌL V«•ÒÒR®ºê*Ž;FCCÍÍÍtww‹àxë7ÝêÞq¸Ï>ûLnùx½^‚Á ¸ÝnŒÕj%‹‘žž.·RÒÓÓ0`  bµZÉÌÌÄn·£T*)..&%%¥Ïq(ŸÏÇÖ­[ùì³Ïhjj"�£ÓéÎHÕj5YYYäåå¡V«IOOÇ`0‰Dðûý„B!$IÂãñ …ä`š––vZYƒ›ÍFOOmmm9r›ÍFZZû÷ï§¹¹™ÆÆFHJJ n·ƒÁ@ZZ�£ÑHzz:‡¿ßO<G­Vãp8°Ûíòy¢Ñ({÷¸˜1cÆ���}Öï$#If³™´´4T*ÉÉÉdddàõzñù|h4ü~?ééé8�Î3Þ×cÇŽ�õ¾ž¨wù•Z­Æn·c±XÐét¸\.  �#«T*ìv;%%%ò±V«�ÇsÁV%ß ý&8F£QZ[[ùì³Ïhmme×®]r«&‘HÐÓÓCcc#ƒ B¡P …ƒ$'' …ò¤Lïà|0$£Õjå.uïØÛ‰šššX¿~=©©©<úè£x½^þÏÿù?èõú/|J¥�NGvv6O<ñyyyr9’$qôèÑ“Ž7�8�Nôz=ûöí£­­�#Fàp88tèåååØív’’’P*•Äb1zzzäI§žž$IÂ`0ôÙì�Ôp:�(•JŽ;†Çã!))és[ŽJ¥RB!¬V+‘H„P(D,C¯×£ÕjQ«Õò¤Ê‰-µ¦¦&þñ��™™É‚ èîîæñÇ?çûÚ;‰‡åɲžžB¡�<)$gÒo–òôôôP^^ŽÃáà¹çžã³Ï>£¬¬Œ-[¶°~ýz&OžLww7^¯µZÍ�عs'>Ÿ�òòr¶oߎÇãA¡P`·ÛinnfïÞ½9rD^[X__R×­Wgg'*• «ÕJ<çèÑ£TVV~©–‡ÑhÄl6ÓÑÑÁ'Ÿ|"w©Ï¤·5V\\Ì{ï½G4%33“ÔÔT\.«W¯&++ —Ë…ÕjÅl6ãñx(//' ÒÚÚÊ¡C‡hmm¥¨¨�FsÚ9 F£‘¹sçrùå—sôèQ–/_~Öµ„‹½^O{{;H’DSS‡"PTTDvv6.—‹òòrªªªN»¯½ùˆâñ8õõõTVV~îZË^jµ§ÓI$áÈ‘#´´´p»Ý8p€ôôô¯$)“Ðô›ŸNŸÏÇúõë2dééér« wéÆˆ#8|ø0õõõ”””pë­·òë_ÿšÿùŸÿ¡´´€äädy jþüù,Y²„[n¹—ËÅĉIJJB§;}¶¨¨‡ÃÁ»ï¾Ë;ï¼Czz:v»ýKµu:cÆŒá§?ý)øÃX²d J¥’¼¼ø N§“‡zˆ‚‚ï¼óK–,!-- ‡Ã�N§C¯×“‘‘A4åÖ[oeÚ´iüà?�ÏÝû£ñØc�ñ—¿ü…›nº ¥R‰Ãá`Á‚ 2¤ÏAè¥ØÙüù?ÿÍU»ÑE:3fÌ×U§/%pðàA, ™™™X,–“Þ¯««Ããñ`³Ùp¹\477³{÷n$I"-- ­VK4eذaX,<•••444 ×ëÉÍÍ¥µµ•¼¼<9øôŠÅb¸ÝnŽ9B8Æjµ¢V«ÉÏÏÇétʵ÷ Ž}ûöa4ÉÍÍE¯×#IÛ·o'==�ÌÌLT*lß¾]^shµZÉÍÍ%??Ÿòòr0 äçç“���×ëe÷îÝrý”J%íííìÙ³‡ÒÒRZ­I’N*[©T’��MQQ&“ I’سg‹…œœôz=áp˜íÛ·“••EZZ>Ÿ�C‡ÇÓbZ,”J¥<η}ûv,/Äî½×½ë HAAF£Q¾'{÷î•'h #FŒÀn·säÈjkkOº¯½A³»»›ªª*ZZZÈÈÈ`РA´µµ �Q n`tĆV{ú›žª]ÚýèŠà(Bÿ¡P©P+5èâg^ͨF—NÒi«S@'õ:FâØ~•ÕAøæQo? …N°ž´$/4ÑX­"¡þ¶ø¥çù+Y¾råÍŸŸgE¡ß3dðôxaíZ”÷ÝWJ«§–ú¦¦ ]-A„o uí~7¦ fÉƒŽ �” /1U¿yüZᜩÿ¦¼ž‰—gX¶õ„—@†(ð‡úÞùúóx½^***Î[%AΤ¨¨è¤ÝöÏ�crÓ~6˜âŒd’NyW�}Õ0aT9Žg¥€•Œ¡Yt´váSön& ‚ðUëk�Õs£EgΠh~>i3§N=«Ÿ¸~ø?jÉM@Y÷…O™””Ä„ ¾ðçA¾)>³[Û`ú5UEᛣßì.‚p>‰à(‚ÐAú ‚£ BDpA胎‚ }ÁQ¡êܳKWWz½ž3fpã�7žV†ÏçcÏž=<÷Üsôôô`2™¸úê«ÉÈÈàÅ_äðáÃ<õÔS\~ùåÌ™3‡±cÇRUUÅoû[:::ÐëõLŸ>�Ûn»í¬cž‚ \H]¸×~ÈŠÞç}K^ÿŽp<@êõz´Z-’$p»Ý,Y²Dƒôz½$ öïßONNŽüÙH$‚ÛífÅŠ\~ùåØl6:::ˆD"øý~¦L™BMM W\qãÇ�'##ƒêêjÞzë-† †ÍfÃëõ°ÿ~.»ì² uA8+=)9¥Œ™™Àd‰÷ïnõ‰Ôj5ƒ�x<ÎáÇY½z5^¯—H$B(¢¾¾žƒžô™P(DUUëׯ' ‰DƒÔ××ÓÓÓÕW^‰ÍfcêÔ©L›6�ŒŒ Ž9ªU«N+»¼¼ü]¹ çÆ€£`4®þwM¼ZމD‚P(D,Ãb± Ñhðù|x½^¶nÝŠV«E¡P�••Åðá'oüÛÓÓƒÏ磳³“Ï>û •J…B¡ ??ƒáô5Páp¯×‹Ï磬¬L.;33S, „o™~‰áp˜ªª*Z[[Ñjµ˜Íf´Z-yyy¼ôÒKäää ÓO!IÍÍÍòç{»äÇç…^ÀápÈËu"‘•••'�O¡P ÓéÈÉÉᥗ^"//O.[„oލ$ ‡ñùüxœ»ï¾›¥K—òÉ'Ÿ ÑhÈÈÈ`òäÉ\ýõð΂Ð+¯¸˜ïÙíXì.ÒÒ†26ÛÆ©�‡ô›à¨T*1›Íüä'?¡­­�X,†R©$99™éÓ§c³ÙP«�_njj*³fÍB£Ñ I$$''“ŸŸOrr2wÜq‡œî199™k®¹ƒÁ€$I$  Àf³qË-·PSSCJJ '•ä²óòò.ð¡—ÕnÇb³‘‘‘A~~>i§€)‰Dâó Ù½{7���Œ3æ+¬ª Â×cÛ¶m¸Ýn‰Ä¿‚cZ‹­V‹RÙlëßcŽ‚ _œ°Šà(‚p²$`¼Ž‚ }ÁQ¡"8 ‚ ôAGA„>ˆà(‚ÐAúðÏ'd°ò¹O¨hµ1ä?Ì•Î(4ÄVðxCL(›´ ‚pq9Þr¬ÙCmÃnþq´–ÏÊ;IÄc´ï]Ç‘Ž.:ãýæ CA„s¦ìê÷VO¥KËÑítÆ»8°¹‹Õ„=-éB×Qák§®´ÑP.aJ/d¤ÍIóž]ÔúclªH&s”SŠ$‘”J„‹‹r}ùZÖ7䣱Odâ@%‰CT»·±Y5 §ÓE–åBWQáë§üô±WÙo³£ÈFq¦š‚‚jÖ¿UG¨t—ë…®¡  –Ê”Îu‘�™ŒU•AJN5‹ªù‡T\v#=¾ ]Ås‹Åðz½üò—¿¤ººšH$€Ýnçþû理¤D¤Fᜩzæ!2&¤ E�Z‘Gö¸ùܳ ™ì‘N2Ì*_螣D"�$ITUU‘••Å�!C¨««ã�ü#?ü0”7¼A�Õ®á­�=„³†2óúÑäêëî¹î„#lØ Æð½‚ TÁó@£ÑpÙe—1kÖ,t:›7oæÑG¥©©‰ììlAø§R¨÷º�lˆ¶°fi çX=—öÇ ]½¯’V«Åf³aµZ‰ÅbÄb1$I¢³³“ÚÚZb±jµšììlÁ`�#GŽ�’’Bgg'¡P“ÉDFFN§€ææfZZZ¨T*l6ÙÙÙh4ÚÚÚèììÄf³ÑÐЀ$I¸\.¬V+~¿ŸcÇŽàr¹HMMÅb±�Ç …BTWWóÿ·wïÁQU‰¾Ç¿»w÷Þý~w§ÓIHHbA@%ˆdTäpÆç8�ªÑ’áN1VMiÝgj<ãø�3åó^Ïx˱ôŽ5Xõ*œËSè� DD HäÕ$�túÝ»{ß? }`h„á87¬OUa÷Îꕽ+¿¬µöÞk%“I �‡ÚÚÚâR°‚ Œ‡Z&Jß¶ ¼[=³¦R{».ÇÖ©[?úСCTUUQYY‰Õje``€µk×òä“O’N§q8<ôÐCÜzë­ìÛ·�Gy„›nº‰÷Þ{�C‡ÑØØÈO~ò~üã#I7ndåÊ•´µµaµZ¹êª«xôÑG ƒ¬Y³†µkײpáB^zé%¸í¶Û˜3g{÷îåµ×^CÓ4n¿ývî½÷^æÌ™C*•bÏž=<úè£:t“ÉÄ‚ øýï�Ïçá(ãÆ„Å]Íõÿý%î u²ºç3Žžðî„ Çd2ÉSO=Å3ÏöØcìß¿³ÙL.—£««‹ÖÖV^yå:::øë_ÿʪU«¸ûî»Ùºu+;vì`åÊ•|öÙg466ÒÕÕÅo~ó|ðAf̘Áðð0ííí¼ÿþûÜ~ûí âñwA¸&\8ªªÊ�wÞI]]]]]ìß¿ÿø¢9âñ8GŽaëÖ­>|›ÍÆÈÈ,Z´ˆÊÊJìv; , ©© £ÑH{{;mmmD"‘âÖkÖ¬aË–-$“Iº»»I§Óèº^ì¢ßqÇÔÕÕáóùøè£�bÊ”)TVV"Ik×®%�sôèQúúúhooç…^Àét’ËåP…¹sçr†µÏAG.�F#���\wÝutvv²fÍvìØAKKKqiÕ`0È‚ 0›ÍH’D(¢¡¡�x<Ž¢(TVVb±X�e›Í†Á` “ɉDظq#Ì�;—t:M:�Æd2 IN§“úúzEÁn·c·ÛÑ4 §Ó‰$I8TU¥P(�ÉdŠaØÒÒBYY²,ãp8¸ä’K�eùMA˜˜@Ë>.ÇX­V˜3gëÖ­£¢¢§Ó‰Ùl& ±xñb¦N�Z¼z�N§imm=myº®ÓÛÛK[[MMMÜsÏ=tww³cÇŽsîúʲŒÅbAUUæÍ›Ç5×\ƒ×ë=§²A8{:�?Ã>6ü~?3fÌà•W^aÇŽ\yå•4McõêÕ¤ÓiEÁf³a·ÛÏXž¦i˜Íf‰mmmtttÐ×ׇ¦içT?UU ”——óá‡b0¨ªªBQÜn7¡PHŒ9 Â8°gz$dÂ…£,Ë $IÂd2 …¸å–[Ø´iÁ`�n¸]×ùõ¯ÍÓO?�®ë\~ùå,Y²¤x“ø‰Wˆ%I*–9uêT¶lÙÂ믿΋/¾H}}=•••¨ª €Á`8¥+,Ëò)·äŒmS…p8ÌÿøG–/_Îk¯½F.—£¢¢‚;_ýêWŲA8¿$ý £þŸþ9CCCÌ™3ç|ÕéœèºN>Ÿ§¯¯¯8Ög4‹�¦R©b·:‘H‰D( ˜ÍfœN'Š¢‰D¨ªŠ$IÄãqb±�@£ÑH4ett”|>_¼Ðãv»QU•D"A2™Äçó¡( …B�h4J¡PÀívc2™( D"L&N§Y–Éårôõõ‘Éd€c㦇ŸÏ'ZŽ‚ðÛ¾};@×uÂá0µµµ„B�¬~ø3Žº¸îÙ»ia…£ ÂÙ(Ž Ñiòe³&áev«Aþ~^&Ívë ß"úl‚ %ˆpA(A„£ B "AJá(‚P‚GA„D8 ‚ ” ÂQ¡Ž‚ %ŒË2ƒƒƒlÛ¶m<ŠA8IKK >Ÿï;/w\ÂÑl63yòäñ(Zá$f³y\Ê—p´ÙlL™2e<ŠA8/Ę£ B "AJá(‚P‚GA„Äd·‚ \|rÃD:²sÓ& n76ûå\÷O70ïÊzBÇwá(ÂEg¤g€C{phD™Íbùæ>�>gm%¡r+ ÂQ„‹P÷�(í‡ T/ù·L¯$Ø¿ž�öòÙ®^æ™UŽtŠpáâ“"Îþƒ[ÙúûOX9¶ñ+L}}=^¯ŸÏÇm·Ýv¡«&…@MÓ2Q ;;ùz_ Õlƨ×PÕ�.î3áÂñD~¿ŸÙ³gó§?ý‰��‰™L†x<ŽÑh$�N0™LÄãq†‡‡) x<F£‘L&C$Áét’H$H§Ó˜L&\.‡I’Ð4�X,ÆÈȺ/Œ4!PIDAT®#Ë2�@UUI&“ŒŒŒ`2™H&“Äãq†††ˆÅbôôôàr¹p»ÝÄb1 Cñss¹‘H„L&ƒ$IX,�’$�F‰Çãhš†¢(ø|>Ìfó‰–± ü—§ú©h^À7…©­­% »Õc&t8þ­T*ņ Xµjìܹ“§žzŠÉ“'óæ›oòüóÏ“L&xøá‡ùáHyy9mmm<ôÐC,]º”õë×ÓÚÚJmm-Ë–-ã®»îÂh4ÒßßÏ«¯¾Ê‹/¾H&“ÁçóñÜsÏ1kÖ,6lØÀË/¿LMM ›6m"™L¢iº®óÉ'Ÿ°xñb–/_Ϋ¯¾ŠÝngéÒ¥„B!ÚÛÛùå/É®]»0™LÌŸ?ŸgžyUUyöÙgY½z5===ÔÕÕñÄO0wî\¬Vë>Ê‚01Lèpìïïç“O>Áãñ‡±Z­¤R)r¹3fÌàg?û¬\¹’ƒòøã�ÓØØHww7k×®eݺu|ÿûß'ŸÏ388ÈæÍ›¹óÎ;Y¶l_|ño¿ý6³fÍ" òÆo�L&yá…ðù|ìÝ»—žž¼^/étšL&CSS÷Ýwº®óÖ[oÑÛÛË=÷ÜCss36›�\.W|uuuñÄOpë­·òÈ#��L&éííeãÆ�„Ãat]gÅŠ̘1³ÙLUUªª^èC.Æ„ ÇL&êU«øè£�Ð4�û￟êêjL&²,ãõz™5k—^z)‘H„þþ~l6óçϧªªŠÆÆFvíÚE*•"�"IŠ¢ÐÒÒÂܹs)//Çh4òÕW_Ñ×ׇ$Iìß¿Ÿ]»vÑÙÙ‰Õj¥¿¿ŸªªªâE ·ÛͬY³¸ì²ËÐ4�mÛ¶‘Ëåhjj¢ººšX,Vü²Ù,Ñh”/¾ø‚X,Fkk+ÙlMÓhhh ¼¼œÎÎNEáÊ+¯sg Â8˜páÇfv88�NÊËËY¸pa±Õh0°ÙlƒA$I"�N£ë:6› ·Û�$I¸\.‚Á …B�l6[ ÇéÓ§ã÷û‹å[,’É$Éd’|>�Íf+ŽaºÝnƒôõõa±X…BȲŒ¦ißZÿ|>O*•B’$¼^/�Y–q8L›6�šš®¾új†‡‡Ù¼y3;wîäꫯ&‹+Ý‚ð™pᨪ*7ß|3‹/¦¬¬ìŒû+ŠR ÉD"�Ãá ™L‹ÅŠ˜H$Ð4�‘‘²Ù,étšh4ÊÐЇ³ÙŒÅbaöìÙ,[¶Œêêêbù‰D‚Ý»wÿ]?ƒÁ`@UU¬V+·ß~;×^{-�ç¤}xàöìÙÃo¼Áúõëq8ø|>Ž‚ð™páø÷r¹\Øív:;;Ùµk‡¦££ƒ––Âá0_ý5©Tж¶6&OžŒÕjåðáà Q»ÝN{{;|ð7ÝtÀio:—$ £Ñˆ¦iÅ«Öù|¾øþØÕgUUÙºu+^¯—†††bh*ŠB"‘  rã�7ât:*^iá?ï¢G›ÍÆ’%Kxýõ×Y±bš¦¡ª*¿øÅ/¸ñƱX,Å®xGG+V¬ ··—iÓ¦±bÅ ¼^/²,sï½÷ò—¿ü…ßýîwüö·¿`þüù,Y²ä”Ï´Z­TUU±iÓ&î¿ÿ~-ZÄý÷ß_|ßh4RQQÁ“O>Éc�=Æ›o¾I¡P  rà 7pÍ5×ðüóϳwï^L&3gÎäÙgŸWªá;$麮ÛŸþ9CCCÌ™3ç|ÕéœèºN.—ã믿Æï÷ãóùNi¹åóyúûûaÒ¤IX­V$I"“ÉÐ××Gww7ù|Y–©­­Åçó¡ë:»wïfùòåüüç?§ªª £ÑˆÓ餦¦—ËU,£··—îîî“î•,//GÓ4©©©)†m$¡§§‡D"�Ï磲²’ÞÞ^dY¦¼¼EQH¥R8p€ÑÑQt]/¶(=���Äãq .—‹¦¦&ŒF#’$]ˆÃ/ÿߨ¾};@×uÂáSïs»Wx´Ç.š477ŸvY– ‡Ã„Ãá“¶«ªJuuõIc…c2™LñëP(Äe—]†Ëå:e?UU©©©¡¦¦¦äg‡B¡“þNy~º¾¾þ¤ÿÛl6fΜY²<¿ß_r» ß ñ8… B "Ï@’$l6ÍÍ͸ÝndY¾ÐUá<˜0Ýêñ¢( S§Nåå—_¾ÐUá<-GA„D8 ‚pñ‰usðß?à¹?}Àî\žT‰]D·Z„‹ÎÁè(Ÿî;BæˆÎP¾@©zEËQ„‹NÚd¦ Ø¨Nwg°GA.:Óîkð}ë>"AJá(‚P‚¸ #‚û’o ÿç�ts–á‹ÅØ·oß8×Laü�8ëþId 6o•µµ(œE8:�NœNç)ŽÍ‚“ÍfI&“ÅiüÅœ‚çÏØ„Jã=�®ëÄb1,ËI“éŽMç”ÍfÉ@’�¨²�d.�bÐɦSÈv»½tÁ…z"ÂÁ¨‚ÏçÄeΓáèÑöêJ\JŠxÏ£9“7HÈa€Ü0½ÝYŒnN¯‚”Œ3Ø1‚©º§ÙˆRr (Íhd„DÌe¸L ‘døÈ,e>œFH2x8JÞêÄæub;á·Cíg8k¤ ºÚKÿÚè�Üp7q�œÉ�ÓéÄ£dÉÆúÎ*dŒnÜ3.s�\*Nä›”ê œ�Ìщ”„9ÄmHí&k0c zq”üÈz!Ãpw£j—Ë�Ë|âã­ †º†ÑL6,~7cHi�‚˃ÍcÇzÚ§aóòq"{I;Êp{œ¸T�Lb”ž®žºvU#!‘søÄã:L3–2/N¹pìœE²hÙ‡ «ß…U×!9@ǰ³ÍŽÏi �áHgâØ¹·æÉ –:gFsFŒÞ2Ê�gÓ¶Ë�ex �R]‰Û²Dq…P‰<’Á’¶ZšohâÒ…g9+O]]uuu§lÏf³Äb1èêê"‰¯:Ã,hÂwdìÑx/ÇZ(ؽgÕÕÕx=žâù;ËCÑa†RytÅ‚Ïj¢w4‹_ÕèîÀbV™ÒÔTºàÌ…Î�YµEbÚ¬zCƒ_ígÇö—üt)Wø;Ù»n#_ڰϽ†ù“ŒÛÃû› .ŸFs‹éðW¼÷/_àp)3«xKÎ/ÜÍþ­_°¿]'ü£›¹Ü³kýú Rý�ó™áÒ€Cl[õ)©ÚK©¿j“MI¢ñc³2Å÷Ä~-ˆR5›ïÕÙJ§Ì(±=«Y·3ÉpÙ\fÍj¦Ååèî5||ØN´¼…–©“˜Qžb¨ã+ÞýŸá[¶”™Õ1z>üœCÝFÂw-æ À7|ñ[9ªVPóW3ÝYê5´ÌûÞ�ݦ&×ÕÒ2c�M¨76Ó!v¾³�aO“olaª#tÒºj3ñúfÂ3§Rçµá¶”Š�$ÙÔ~¶¼ô½S¾Ç”K/¡É9B´ëÞÝ(sõ»†z”ÃÎÁo$Êïþ>Wx@â0»Öµ2`1iñµÌpd!ÖÆ¾!Ñ©jnbú‚K©(hе�õ[ÓØÂUÌn°�ë>ÀÆU¹ä§K™=9ÇжVö}Ƕð¦ømìÿx3»{ŒÈÓ®ä{�ŽcUUí8¬f,¦R¿tîÙCëúü.årØdP°ZTŒR£Ñ„Á`8¥‘qÎcŽ’$a2™°Z­¸\®â:,cKŽ ãolöðñž £P(àrºðûü úɽŸÏÇàP”¾£C$ãêü^7d�ÆS¦k;á;Ñ+¬,ÚùG6¬ÙÂFs ~w€æj ®@ˆ`YœnKŸÖÅо·øÃª# h¾óQf\9•iÁAFz°J*o�@™‹@ÉÓôØmØW DÈ)†Ëb%�O0DÈ£Ã8 ²Ý�WI’Ù·–?üu'za*WýpóçÕ:]C=ï¢\½‚·îÂWVAÓÔZ*̓¸™ÉÆ�{¨»"Ì% Õ„lƒÈñ,’‚Ó P¦�²Û°©&Ü�!?ÀN‹…´Ù…'"ä9Íg"¼ü>´'ÿ•�_ý7V$e“™sß?sGÃ0N³Ív¼ 7@%3/[ÛŸ¼Á–öf^w3/¬,Qn‚Lâ(6¹šPf;7meMW[p—ýôqæÔËẋ±Û±ªî@ˆ2?Ái±’0Œ×”+ÌØº� …r•S˜ !¡Cù�\·ÿ±ñã÷ùŸ†°ë˜U£à) à/óh:Hÿáͼýj;æü„¾m*×ßi²a3ï¼ý/üÁpüDÌü'–þÃ\N-5�ŸNÜíÄ*Gqú�ÕÑn“ÉHþȪT@1›�µ"ÿ&Ï8Ùíéäóy2™Lq½•±®µèVŸ?c u�ã{]-ŸÏ³~Ú§7S^^~Â9ÖÑ9ÖEÑ4�\N£˜ŒFTU¡uûv WÍ›wš’ut=ÇhߢÉÉŒÉdÂ&ƒÉÂaÜͺÇ×ñM.@õÝ×3EÉ`óWâqX±šrdSI¢GFQ*BØU#%¤I ÆI¦@-óã0‚$¥ˆõ�’Å„ÙïÁnÔ�Ñî f;»)¥+?^† §ß�Çkã´ àêyÐFéïI 9\Ø]v¬RŽ|v”¾#IÔ€»ÍŒYΑK'êÅTÂaÖÈ �’ÊH¨Áÿ¨ßHoŒœAÅìssšž<ÇÚï)¢ÝbÉ @VÌ8Ux-)â}14£‹×U&H v08š!)Ù±9½TxÌ%Ê�‘Š}ÆK?z eÉ4Ϊ&lÔ�M*ö`5>  iâƒqRiN®w_Œœ4VoÐèeX3£Ø]”9ÕãõÖˆGúM’ÔMÈŠ;9L¾v³ RƒÄ¢ƒ ¥�`2ÉgÁ,efp(Nv¬ª6?��µÔúIYÒ±8±¡,¦pçñnµÁ�GÏjdcFB³ë ج˜�¯N:’ßIËQ–eìv;ù|^´Ï£óŽn·›@0H¸"|VçX’$ÚÛÛ‘ †S&>EEÍiÞèÁcµ1$W2ùÒy\wšõÒjNõ9U‰*”ªÖßn;›¢O)ãÔ9“©ª=u[õ‰ÛJ4ÞÎtØNÞ·¾ô¥…áðYü\VR6/vÙŒ£j ÍW̦ùÔ9žÏú¸–<(ß¶ýt…Lú–o9ËbÆÖq2™L¨ªŠÑh version.txt" withCredentials([string(credentialsId: 'MEGACMD_ARTIFACTORY_TOKEN', variable: 'MEGACMD_ARTIFACTORY_TOKEN')]) { sh """ jf rt del \ --url ${REPO_URL} \ --access-token ${MEGACMD_ARTIFACTORY_TOKEN} \ MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/macOS/ """ // arm64 files sh """ cd build/Release_arm64 zip -r mega-cmd.dSYM.zip mega-cmd.dSYM zip -r MEGAcmdUpdater.dSYM.zip MEGAcmdUpdater.dSYM zip -r mega-exec.dSYM.zip mega-exec.dSYM zip -r MEGAcmdShell.dSYM.zip MEGAcmdShell.dSYM jf rt upload \ --url ${REPO_URL} \ --access-token ${MEGACMD_ARTIFACTORY_TOKEN} \ --regexp '(MEGAcmd.*dmg|.*zip)' \ MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/macOS/arm64/ """ // x86_64 files sh """ cd build/Release_x86_64 zip -r mega-cmd.dSYM.zip mega-cmd.dSYM zip -r MEGAcmdUpdater.dSYM.zip MEGAcmdUpdater.dSYM zip -r mega-exec.dSYM.zip mega-exec.dSYM zip -r MEGAcmdShell.dSYM.zip MEGAcmdShell.dSYM jf rt upload \ --url ${REPO_URL} \ --access-token ${MEGACMD_ARTIFACTORY_TOKEN} \ --regexp '(MEGAcmd.*dmg|.*zip)' \ MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/macOS/x86_64/ """ // universal files sh """ cd build/Release_universal jf rt upload \ --url ${REPO_URL} \ --access-token ${MEGACMD_ARTIFACTORY_TOKEN} \ MEGAcmd.dmg \ MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/macOS/universal/ """ } } archiveArtifacts artifacts: 'version.txt', onlyIfSuccessful: true } } post { success { script { echo "Installers successfully uploaded. URL: [${env.REPO_URL}/MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/macOS]" } } } } } post { always { deleteDir() } } } MEGAcmd-2.5.2_Linux/jenkinsfile/Branch_status/Jenkinsfile_windows_installers000066400000000000000000000176051516543156300274150ustar00rootroot00000000000000pipeline { agent { label 'windows && amd64' } options { buildDiscarder(logRotator(numToKeepStr: '25', daysToKeepStr: '30')) gitLabConnection('GitLabConnectionJenkins') copyArtifactPermission('*'); } parameters { booleanParam(name: 'IS_RELEASE_CANDIDATE', defaultValue: false, description: 'Is it a Release Candidate?') string(name: 'RELEASE_CANDIDATE_NAME', defaultValue: '', description: 'i.e: RC2, RC3 (only needed if IS_RELEASE_CANDIDATE is true)') choice(name: 'ARCHITECTURE', choices: ['64', '32/64'], description: 'To build either for 64 bit or both 32 and 64 bit') string(name: 'MEGACMD_BRANCH', defaultValue: "${env.BRANCH_NAME}", description: 'Which version of MEGAcmd should we build? Default is current branch.') string(name: 'SDK_BRANCH', defaultValue: ' ', description: 'Optionally, define a custom SDK branch.') } environment { MEGACMD_BRANCH = "${params.MEGACMD_BRANCH}" SDK_BRANCH = "${params.SDK_BRANCH}" } stages { stage('Clean previous runs'){ steps{ deleteDir() } } stage('Checkout windows'){ steps { checkout([ $class: 'GitSCM', branches: [[name: "${env.MEGACMD_BRANCH}"]], userRemoteConfigs: [[ url: "${env.GIT_URL_MEGACMD}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1" ]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"] ] ]) script { windows_sources_workspace = WORKSPACE def branchToCheckout = '' if (env.SDK_BRANCH && env.SDK_BRANCH != ' ') { branchToCheckout = env.SDK_BRANCH shouldCloneSDK = true } else if (env.MEGACMD_BRANCH in ['develop', 'master']) { branchToCheckout = "develop" shouldCloneSDK = true } else { def status = sh(script: "git submodule status", returnStdout: true).trim() branchToCheckout = status.tokenize(' ')[0].substring(1) } dir('sdk') { sh "echo Cloning SDK branch ${branchToCheckout}" checkout([ $class: 'GitSCM', branches: [[name: branchToCheckout]], userRemoteConfigs: [[url: "${env.GIT_URL_SDK}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1"]], extensions: [ [$class: "UserIdentity", name: "jenkins", email: "jenkins@jenkins"] ] ]) } } } } stage ('Build Windows installers'){ environment{ MEGA_VCPKGPATH = "${windows_sources_workspace}\\..\\vcpkg_cmdins" MEGA_WIN_KITVER = "10.0.22621.0" } steps { dir(windows_sources_workspace + '\\build'){ bat """ @echo on mkdir tmp set _MSPDBSRV_ENDPOINT_= ${BUILD_TAG} set TMP=${windows_sources_workspace}\\build\\tmp set TEMP=${windows_sources_workspace}\\build\\tmp set TMPDIR=${windows_sources_workspace}\\build\\tmp full_build_process.cmd ${params.ARCHITECTURE} nosign 2 """ } } } stage ('Upload Installers') { when { beforeAgent true anyOf { expression { params.IS_RELEASE_CANDIDATE == true} } } environment{ JF_PATH = "${windows_sources_workspace}\\.." } steps { dir(windows_sources_workspace + '\\build'){ script { def windows_artifactory_upload = { String ART_UPLOAD_PATH, String buildDir, String arch -> withCredentials([string(credentialsId: 'MEGACMD_ARTIFACTORY_TOKEN', variable: 'MEGACMD_ARTIFACTORY_TOKEN')]) { powershell """ ${JF_PATH}\\jf rt del --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN MEGAcmdSetup${arch}_unsigned.exe ${ART_UPLOAD_PATH} cd ${buildDir} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN legacy.pdb ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN LMegacmdClient.pdb ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN LMegacmdServer.pdb ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN MegacmdServer.pdb ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN Mega.pdb ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN MEGAclient.exe ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN MEGAcmdServer.exe ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN MEGAcmdShell.exe ${ART_UPLOAD_PATH} ${JF_PATH}\\jf rt upload --url ${REPO_URL} --access-token $MEGACMD_ARTIFACTORY_TOKEN MEGAcmdUpdater.exe ${ART_UPLOAD_PATH} """ } } MEGACMD_VERSION = getVersionFromHeader("../src/megacmdversion.h") sh "echo $MEGACMD_VERSION > version.txt" if (params.ARCHITECTURE == "64") { windows_artifactory_upload("MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/windows/", "built64", "64") } else if (params.ARCHITECTURE == "32/64") { windows_artifactory_upload("MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/windows/built64/", "built64", "64") windows_artifactory_upload("MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/windows/built32/", "built32", "32") } } archiveArtifacts artifacts: 'version.txt', onlyIfSuccessful: true } } post { success { script { echo "Installers successfully uploaded. URL: [${env.REPO_URL}/MEGAcmd-releases/$MEGACMD_VERSION/$RELEASE_CANDIDATE_NAME/windows]" } } } } } post { always { deleteDir() } } } def getVersionFromHeader(String versionFilePath) { return sh(script: """ awk '/#define MEGACMD_MAJOR_VERSION/ { MAJOR=\$3 }; \ /#define MEGACMD_MINOR_VERSION/ { MINOR=\$3 }; \ /#define MEGACMD_MICRO_VERSION/ { MICRO=\$3 }; \ END { print MAJOR"."MINOR"."MICRO }' \ $versionFilePath """ , returnStdout: true).trim() } MEGAcmd-2.5.2_Linux/jenkinsfile/Jenkinsfile_MR_linux000066400000000000000000000554621516543156300224230ustar00rootroot00000000000000pipeline { agent { label "docker" } options { buildDiscarder(logRotator(numToKeepStr: '135', daysToKeepStr: '21')) gitLabConnection('GitLabConnectionJenkins') timestamps() // Add timestamps to all console output } stages { stage('Clean previous runs and update gitlab commit status') { steps { deleteDir() updateGitlabCommitStatus(name: 'Build linux', state: 'running') } } stage('Get build parameters') { parallel { stage('Get build options') { when { allOf { expression { env.gitlabTriggerPhrase != null } expression { env.gitlabTriggerPhrase.contains('BUILD_OPTIONS') } } } steps { script{ BUILD_OPTIONS = sh(script: 'echo "$gitlabTriggerPhrase" | grep BUILD_OPTIONS | awk -F "BUILD_OPTIONS=" \'{print \$2}\' | cut -d"\"" -f2', returnStdout: true).trim() println BUILD_OPTIONS } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the additional build parameters :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } stage('Get SDK branch'){ steps { script{ env.SDK_BRANCH = sh(script: 'echo "$gitlabMergeRequestDescription" | grep SDK_SUBMODULE_TEST | awk -F "SDK_SUBMODULE_TEST=" \'{print \$2}\' | cut -d" " -f1', returnStdout: true).trim() if (SDK_BRANCH == ""){ echo "SDK_BRANCH was not found on description so develop will be used by default" env.SDK_BRANCH = "develop" } println SDK_BRANCH } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the SDK branch :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } } } stage('Checkout sources') { parallel { stage('Checkout MEGAcmd with prebuildmerge') { steps { checkout([ $class: 'GitSCM', branches: [[name: "origin/${env.gitlabSourceBranch}"]], userRemoteConfigs: [[url: "${env.GIT_URL_MEGACMD}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1"]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], [$class: 'PreBuildMerge', options: [fastForwardMode: 'FF', mergeRemote: "origin", mergeStrategy: 'DEFAULT', mergeTarget: "${env.gitlabTargetBranch}"]] ] ]) } } stage('Checkout SDK') { steps { dir('sdk') { checkout([ $class: 'GitSCM', branches: [[name: "origin/${SDK_BRANCH}"]], userRemoteConfigs: [[url: "${env.GIT_URL_SDK}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1"]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], [$class: "CloneOption", depth: 1, shallow: true, noTags: false, reference: ''] ] ]) } script { megacmd_sources_workspace = WORKSPACE sdk_sources_workspace = "${megacmd_sources_workspace}/sdk" } } } } } stage("Build and test MEGAcmd") { matrix { axes { axis { name 'SANITIZERS' values 'baseline', 'ubsan', 'asan', 'tsan' } axis { name 'BUILD_SYSTEM' values 'cmake' } } stages { stage("Build MEGAcmd container image") { options { timeout(time: 3, unit: 'HOURS') } environment { DOCKER_BUILDKIT=1 BUILD_CORES=4 } steps { sh """ docker build -t meganz/megacmd-${BUILD_SYSTEM}-${SANITIZERS}:${env.BUILD_NUMBER} \ -f ${megacmd_sources_workspace}/build-with-docker/Dockerfile.${BUILD_SYSTEM} \ --build-arg=ENABLE_${SANITIZERS}=ON \ --build-arg=BUILD_CORES \ --ulimit=core=-1 \ --cpuset-cpus=0,1 \ -- ${megacmd_sources_workspace} """ } } stage("MEGAcmd unit tests") { agent { docker { image "meganz/megacmd-${BUILD_SYSTEM}-${SANITIZERS}:${env.BUILD_NUMBER}" reuseNode true args "--name megacmd-${BUILD_SYSTEM}-${SANITIZERS}-${env.BUILD_NUMBER}" } } options { timeout(time: 10, unit: 'MINUTES') } environment { ASAN_OPTIONS="print_stats=1,log_path=${megacmd_sources_workspace}/test-dir-${SANITIZERS}/results/unit-asan-report.log,suppressions=${megacmd_sources_workspace}/contrib/sanitizer/asan.suppressions" TSAN_OPTIONS="log_path=${megacmd_sources_workspace}/test-dir-${SANITIZERS}/results/unit-tsan-report.log,suppressions=${megacmd_sources_workspace}/contrib/sanitizer/tsan.suppressions" UBSAN_OPTIONS="log_path=${megacmd_sources_workspace}/test-dir-${SANITIZERS}/results/unit-ubsan-report.log" LSAN_OPTIONS="suppressions=${megacmd_sources_workspace}/contrib/sanitizer/lsan.suppressions" HOME="${megacmd_sources_workspace}/test-dir-${SANITIZERS}" } steps { dir("test-dir-${SANITIZERS}") { sh """ ulimit -c unlimited; # Execute with a timeout lower than Jenkins stage timeout, enforcing a SIGSEGV to ensure core dumping timeout -s 11 550 /usr/bin/mega-cmd-tests-unit \ --gtest_output=xml:${megacmd_sources_workspace}/test-dir-${SANITIZERS}/results/mega-cmd-tests-unit.xml \ --gtest_shuffle """ } } post { always { sh """ find . -name core -exec zstd -z --fast=3 {} -o core_unit.zstd \\; -exec rm {} \\; \ && [ -f core_unit.zstd ] \ && zstd -z --fast=3 /usr/bin/mega-cmd-tests-unit -o ./mega-cmd-tests-unit.zstd \ || true """ archiveArtifacts artifacts: "test-dir-${SANITIZERS}/.megaCmd/megacmdserver.log*", allowEmptyArchive: true archiveArtifacts artifacts: "**/core*zstd", allowEmptyArchive: true archiveArtifacts artifacts: "**/mega-cmd-tests-unit.zstd", allowEmptyArchive: true archiveArtifacts artifacts: "test-dir-${SANITIZERS}/results/unit-*-report.log.*", allowEmptyArchive: true junit "test-dir-${SANITIZERS}/results/mega-cmd-tests-unit.xml" } } } stage("MEGAcmd integration tests") { agent { docker { image "meganz/megacmd-${BUILD_SYSTEM}-${SANITIZERS}:${env.BUILD_NUMBER}" reuseNode true args "--name megacmd-${BUILD_SYSTEM}-${SANITIZERS}-${env.BUILD_NUMBER} --cap-add SYS_ADMIN --device /dev/fuse --security-opt apparmor:unconfined" } } options { timeout(time: 1, unit: 'HOURS') } environment { MEGACMD_TEST_USER='' MEGACMD_TEST_PASS=credentials('MEGACMD_TESTS_PASSWORD') ASAN_OPTIONS="print_stats=1,log_path=${megacmd_sources_workspace}/test-dir-${SANITIZERS}/results/integration-asan-report.log,suppressions=${megacmd_sources_workspace}/contrib/sanitizer/asan.suppressions" TSAN_OPTIONS="log_path=${megacmd_sources_workspace}/test-dir-${SANITIZERS}/results/integration-tsan-report.log,suppressions=${megacmd_sources_workspace}/contrib/sanitizer/tsan.suppressions" UBSAN_OPTIONS="log_path=${megacmd_sources_workspace}/test-dir-${SANITIZERS}/results/integration-ubsan-report.log" LSAN_OPTIONS="suppressions=${megacmd_sources_workspace}/contrib/sanitizer/lsan.suppressions" HOME="${megacmd_sources_workspace}/test-dir-${SANITIZERS}" } steps { lock(label: 'testing_accounts_megacmd', variable: 'MEGACMD_TEST_USER', quantity: 1, resource: null) { dir("test-dir-${SANITIZERS}") { sh """ ulimit -c unlimited; # Execute with a timeout lower than Jenkins stage timeout, enforcing a SIGSEGV to ensure core dumping timeout -s 11 3500 /usr/bin/mega-cmd-tests-integration \ --gtest_output=xml:${megacmd_sources_workspace}/test-dir-${SANITIZERS}/results/mega-cmd-tests-integration.xml \ --gtest_shuffle \ """ } } } post { always { sh """ find . -name core -exec zstd -z --fast=3 {} -o core_integration.zstd \\; -exec rm {} \\; \ && [ -f core_integration.zstd ] \ && zstd -z --fast=3 /usr/bin/mega-cmd-tests-integration -o ./mega-cmd-tests-integration.zstd \ || true """ archiveArtifacts "test-dir-${SANITIZERS}/.megaCmd/megacmdserver.log*" archiveArtifacts artifacts: "**/core*zstd", allowEmptyArchive: true archiveArtifacts artifacts: "**/mega-cmd-tests-integration.zstd", allowEmptyArchive: true archiveArtifacts artifacts: "test-dir-${SANITIZERS}/results/integration-*-report.log.*", allowEmptyArchive: true junit "test-dir-${SANITIZERS}/results/mega-cmd-tests-integration.xml" } } } stage("MEGAcmd Python tests") { agent { docker { image "meganz/megacmd-${BUILD_SYSTEM}-${SANITIZERS}:${env.BUILD_NUMBER}" reuseNode true args "--name megacmd-${BUILD_SYSTEM}-${SANITIZERS}-${env.BUILD_NUMBER}" } } options { timeout(time: 2, unit: 'HOURS') } environment { MEGA_EMAILS='' MEGA_PWD=credentials('MEGACMD_TESTS_PASSWORD') MEGA_PWD_AUX=credentials('MEGACMD_TESTS_PASSWORD') ASAN_OPTIONS="print_stats=1,log_path=${megacmd_sources_workspace}/pytest-dir-${SANITIZERS}/results/pyserver-asan-report.log,suppressions=${megacmd_sources_workspace}/contrib/sanitizer/asan.suppressions" TSAN_OPTIONS="log_path=${megacmd_sources_workspace}/pytest-dir-${SANITIZERS}/results/pyserver-tsan-report.log,suppressions=${megacmd_sources_workspace}/contrib/sanitizer/tsan.suppressions" UBSAN_OPTIONS="log_path=${megacmd_sources_workspace}/pytest-dir-${SANITIZERS}/results/pyserver-ubsan-report.log" LSAN_OPTIONS="suppressions=${megacmd_sources_workspace}/contrib/sanitizer/lsan.suppressions" HOME="${megacmd_sources_workspace}/pytest-dir-${SANITIZERS}" YES_I_KNOW_THIS_WILL_CLEAR_MY_MEGA_ACCOUNT=1 VERBOSE=1 } steps { dir("pytest-dir-${SANITIZERS}") { sh """ # Execute MEGAcmd server in the background with a timeout lower than Jenkins stage timeout, enforcing a SIGSEGV to ensure core dumping # If a core is dumped, compress it bash -c \"ulimit -c unlimited && \ timeout -s 11 3550 nohup /usr/bin/mega-cmd-server --verbose-full --log-to-file; \ zstd -z --fast=3 core -o core_server.zstd \ && rm core \ && zstd -z --fast=3 /usr/bin/mega-cmd-server -o ./mega-cmd-server.zstd \ || true \" & """ } sleep 1 lock(label: 'testing_accounts_megacmd', variable: 'MEGA_EMAILS', quantity: 2, resource: null) { script { // Skipping the 'serving' test until CMD-389 is resolved for (test in ['misc', 'put', 'rm', 'find', 'get']) { for (cmdshell in ['', 'cmdshell-']) { def testDir = "pytest-dir-${SANITIZERS}/${cmdshell}${test}-results" def asanOptions = "print_stats=1,log_path=${megacmd_sources_workspace}/${testDir}/py-asan-report.log" def tsanOptions = "log_path=${megacmd_sources_workspace}/${testDir}/py-tsan-report.log" def ubsanOptions = "log_path=${megacmd_sources_workspace}/${testDir}/py-ubsan-report.log" stage("MEGAcmd Python ${cmdshell}${test} test") { withEnv([ "MEGA_EMAIL=${env.MEGA_EMAILS0}", "MEGA_EMAIL_AUX=${env.MEGA_EMAILS1}", "ASAN_OPTIONS=${asanOptions}", "TSAN_OPTIONS=${tsanOptions}", "UBSAN_OPTIONS=${ubsanOptions}", "OUT_DIR_JUNIT_XML=${megacmd_sources_workspace}/${testDir}" ]) { def envStr = '' if (cmdshell != '') { envStr = "MEGACMDSHELL=/usr/bin/mega-cmd " } try { dir("pytest-dir-${SANITIZERS}/working-dir") { sh """ # Note: to detect client side issues, we could execute with a timeout lower than Jenkins stage timeout, enforcing a SIGSEGV to ensure core dumping # In this case, splitting the timeout between all test cases #ulimit -c unlimited; #${envStr}timeout -s 11 710 /usr/local/bin/megacmd_${test}_test.py ${envStr} /usr/local/bin/megacmd_${test}_test.py """ } junit "${testDir}/TEST-*.xml" } finally { archiveArtifacts artifacts: "${testDir}/py-*-report.log.*", allowEmptyArchive: true dir("pytest-dir-${SANITIZERS}") { sh "find . -name core -exec zstd -z --fast=3 {} -o core_client_${cmdshell}${test}.zstd \\; -exec rm {} \\; || true" } dir("pytest-dir-${SANITIZERS}/working-dir") { deleteDir() } } } } } } } } } post { always { sh "/usr/bin/mega-exec logout || true" sh "/usr/bin/mega-exec quit || true" sh """ find . -name core_client*.zstd | grep . \ && tar -cf - /usr/bin/mega-cmd /usr/bin/mega-exec | zstd -z --fast=3 -o ./mega-cmd-client-executables.tar.zstd \ || true """ archiveArtifacts "pytest-dir-${SANITIZERS}/.megaCmd/megacmdserver.log*" archiveArtifacts artifacts: "pytest-dir-${SANITIZERS}/results/pyserver-*-report.log.*", allowEmptyArchive: true archiveArtifacts artifacts: "**/core*zstd", allowEmptyArchive: true archiveArtifacts artifacts: "**/mega-*.zstd", allowEmptyArchive: true } } } } post { always { sh "docker image rm -f -- meganz/megacmd-${BUILD_SYSTEM}-${SANITIZERS}:${env.BUILD_NUMBER} || true" } } } } } post { always { script { if (currentBuild.currentResult == 'SUCCESS') { addGitLabMRComment(comment: ":white_check_mark: ${currentBuild.projectName} :penguin: Linux SUCCEEDED :muscle:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build linux', state: 'success') } if (currentBuild.currentResult == 'FAILURE') { addGitLabMRComment(comment: ":red_circle: ${currentBuild.projectName} :penguin: Linux FAILURE :worried:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build linux', state: 'failed') } if (currentBuild.currentResult == 'ABORTED') { addGitLabMRComment(comment: ":interrobang: ${currentBuild.projectName} :penguin: Linux ABORTED :confused:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build linux', state: 'canceled') } if (currentBuild.currentResult == 'UNSTABLE') { addGitLabMRComment(comment: ":interrobang: ${currentBuild.projectName} :penguin: Linux UNSTABLE :confused:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build linux', state: 'failed') } } } } } MEGAcmd-2.5.2_Linux/jenkinsfile/Jenkinsfile_MR_linux_packages000066400000000000000000000247371516543156300242620ustar00rootroot00000000000000pipeline { agent { label "linux-testing-package-builder" } options { buildDiscarder(logRotator(numToKeepStr: '135', daysToKeepStr: '21')) gitLabConnection('GitLabConnectionJenkins') timestamps() // Add timestamps to all console output } stages { stage('Clean previous runs and update gitlab commit status') { steps { deleteDir() updateGitlabCommitStatus(name: 'Build linux packages', state: 'running') } } stage('Get build parameters') { parallel { stage('Get build options') { steps { script{ BUILD_OPTIONS = ' ' env.ARCHITECTURE = sh(script: 'echo "$gitlabTriggerPhrase" | grep ARCHITECTURE | awk -F "ARCHITECTURE=" \'{print \$2}\' | cut -d\\" -f2', returnStdout: true).trim() if (env.ARCHITECTURE == "") { env.ARCHITECTURE = "amd64" } env.BUILD_OPTIONS = sh(script: 'echo "$gitlabTriggerPhrase" | grep BUILD_OPTIONS | awk -F "BUILD_OPTIONS=" \'{print \$2}\' | cut -d"\\"" -f2 || :', returnStdout: true).trim() env.DISTRIBUTION = sh(script: 'echo "$gitlabTriggerPhrase" | grep DISTRIBUTION | awk -F "DISTRIBUTION=" \'{print \$2}\' | cut -d\\" -f2', returnStdout: true).trim() if (env.DISTRIBUTION == "") { env.DISTRIBUTION = "xUbuntu_22.04" } println BUILD_OPTIONS println DISTRIBUTION println ARCHITECTURE } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the additional build parameters :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } stage('Get SDK branch'){ steps { script{ env.SDK_BRANCH = sh(script: 'echo "$gitlabMergeRequestDescription" | grep SDK_SUBMODULE_TEST | awk -F "SDK_SUBMODULE_TEST=" \'{print \$2}\' | cut -d" " -f1', returnStdout: true).trim() if (SDK_BRANCH == ""){ echo "SDK_BRANCH was not found on description so develop will be used by default" env.SDK_BRANCH = "develop" } println SDK_BRANCH } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the SDK branch :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } } } stage('Checkout sources') { parallel { stage('Checkout MEGAcmd') { steps { checkout([ $class: 'GitSCM', branches: [[name: "origin/${env.gitlabSourceBranch}"]], userRemoteConfigs: [[url: "${env.GIT_URL_MEGACMD}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1"]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], ] ]) } } stage('Checkout SDK') { steps { dir('sdk') { checkout([ $class: 'GitSCM', branches: [[name: "${SDK_BRANCH}"]], userRemoteConfigs: [[url: "${env.GIT_URL_SDK}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1"]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], [$class: "CloneOption", depth: 1, shallow: true, noTags: false, reference: ''] ] ]) } script { linux_sources_workspace = WORKSPACE sdk_sources_workspace = "${linux_sources_workspace}/sdk" } } } } } stage('Build packages'){ when { beforeAgent true expression { env.gitlabTriggerPhrase != null && (env.gitlabTriggerPhrase == 'trigger package' || env.gitlabTriggerPhrase.startsWith('trigger package linux')) } } stages{ stage('Build linux package'){ options { timeout(time: 840, unit: 'MINUTES') } steps { echo "Do Build for $DISTRIBUTION-$ARCHITECTURE" dir(linux_sources_workspace){ lock(resource: "$DISTRIBUTION-$ARCHITECTURE-MEGAcmd-build", quantity: 1, ){ sh "/opt/buildTools/build/buildManager.sh -a $ARCHITECTURE -j 3 build $DISTRIBUTION . megacmd" sh "/opt/buildTools/repo/repoManager.sh add /srv/builder/results/$DISTRIBUTION/$ARCHITECTURE/megacmd/ $DISTRIBUTION" sh "SIGN_KEY_PATH=/srv/sign_test/ /opt/buildTools/repo/repoManager.sh build -n $DISTRIBUTION" } } } } stage ('Upload Linux package') { steps { dir(linux_sources_workspace){ script{ def ARCH_REGEX switch (ARCHITECTURE) { case 'amd64': ARCH_REGEX = 'x86_64|amd64' break case 'arm64': ARCH_REGEX = 'aarch64|arm64' break default: ARCH_REGEX = ARCHITECTURE } withCredentials([string(credentialsId: 'MEGACMD_ARTIFACTORY_TOKEN', variable: 'MEGACMD_ARTIFACTORY_TOKEN')]) { sh """ jf rt del \ --url ${REPO_URL} \ --access-token \${MEGACMD_ARTIFACTORY_TOKEN} \ MEGAcmd-sprints/${env.gitlabMergeRequestIid}/linux/$DISTRIBUTION """ dir("/srv/repo/private/$DISTRIBUTION"){ sh """ jf rt upload \ --url ${REPO_URL} \ --access-token \${MEGACMD_ARTIFACTORY_TOKEN} \ --regexp '(($ARCH_REGEX)/megacmd.*deb\$|($ARCH_REGEX)/($ARCH_REGEX)/megacmd.*rpm\$|($ARCH_REGEX)/megacmd.*\\.pkg\\.tar\\.zst\$|($ARCH_REGEX)/megacmd.*\\.pkg\\.tar\\.xz\$)' \ MEGAcmd-sprints/${env.gitlabMergeRequestIid}/linux/$DISTRIBUTION/ """ } } uploadPackagesExecuted = true } } } } } } } post { always { script { if (currentBuild.currentResult == 'SUCCESS') { addGitLabMRComment(comment: ":white_check_mark: ${currentBuild.projectName} :penguin: LINUX SUCCEEDED :muscle:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}
Packages URL: [${env.REPO_URL}/MEGAcmd-sprints/${env.gitlabMergeRequestIid}/linux/$DISTRIBUTION]" ) updateGitlabCommitStatus(name: 'Build linux packages', state: 'success') } if (currentBuild.currentResult == 'FAILURE') { addGitLabMRComment(comment: ":red_circle: ${currentBuild.projectName} :penguin: Linux FAILURE :worried:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build linux packages', state: 'failed') } if (currentBuild.currentResult == 'ABORTED') { addGitLabMRComment(comment: ":interrobang: ${currentBuild.projectName} :penguin: Linux ABORTED :confused:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build linux packages', state: 'canceled') } if (currentBuild.currentResult == 'UNSTABLE') { addGitLabMRComment(comment: ":interrobang: ${currentBuild.projectName} :penguin: Linux UNSTABLE :confused:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build linux packages', state: 'failed') } } } } } MEGAcmd-2.5.2_Linux/jenkinsfile/Jenkinsfile_MR_macos000066400000000000000000000233731516543156300223620ustar00rootroot00000000000000pipeline { agent { label "osx && arm64" } environment { BUILD_OPTIONS = '' } options { buildDiscarder(logRotator(numToKeepStr: '135', daysToKeepStr: '21')) gitLabConnection('GitLabConnectionJenkins') timestamps() // Add timestamps to all console output } stages { stage('clean previous runs and update gitlab commit status'){ steps{ deleteDir() updateGitlabCommitStatus(name: 'Build macos', state: 'running') } } stage('Get build parameters'){ parallel{ stage('Get build options'){ when { allOf { expression { env.gitlabTriggerPhrase != null } expression { env.gitlabTriggerPhrase.contains('BUILD_OPTIONS') } } } steps { script{ env.BUILD_OPTIONS = sh(script: 'echo "$gitlabTriggerPhrase" | grep BUILD_OPTIONS | awk -F "BUILD_OPTIONS=" \'{print \$2}\' | cut -d"\"" -f2', returnStdout: true).trim() println BUILD_OPTIONS } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the additional build parameters :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } stage('Get SDK branch'){ steps { script{ env.SDK_BRANCH = sh(script: 'echo "$gitlabMergeRequestDescription" | grep SDK_SUBMODULE_TEST | awk -F "SDK_SUBMODULE_TEST=" \'{print \$2}\' | cut -d" " -f1', returnStdout: true).trim() if (SDK_BRANCH == ""){ echo "SDK_BRANCH was not found on description so develop will be used by default" env.SDK_BRANCH = "develop" } println SDK_BRANCH } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the SDK branch :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } } } stage('Checkout sources'){ parallel{ stage('Checkout MEGAcmd with prebuildmerge'){ steps{ checkout([ $class: 'GitSCM', branches: [[name: "origin/${env.gitlabSourceBranch}"]], userRemoteConfigs: [[ url: "${env.GIT_URL_MEGACMD}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1" ]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], [$class: 'PreBuildMerge', options: [fastForwardMode: 'FF', mergeRemote: "origin", mergeStrategy: 'DEFAULT', mergeTarget: "${env.gitlabTargetBranch}"]] ] ]) } } stage('Checkout SDK'){ steps{ dir('sdk'){ checkout([ $class: 'GitSCM', branches: [[name: "origin/${SDK_BRANCH}"]], userRemoteConfigs: [[ url: "${env.GIT_URL_SDK}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1" ]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], [$class: "CloneOption", depth: 1, shallow: true, noTags: false, reference: ''] ] ]) } script{ megacmd_sources_workspace = WORKSPACE sdk_sources_workspace = "${megacmd_sources_workspace}/sdk" } } } } } stage('Build MEGAcmd'){ environment{ PATH = "cmdinstall/bin:${env.PATH}" BUILD_DIR = "cmdbuild" VCPKGPATH = "${env.HOME}/jenkins/vcpkg" } options{ timeout(time: 3, unit: 'HOURS') } steps{ sh "rm -rf ${BUILD_DIR}; mkdir ${BUILD_DIR}" sh "cmake -DCMAKE_VERBOSE_MAKEFILE=1 -DENABLE_MEGACMD_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DVCPKG_ROOT=${VCPKGPATH} -DCMAKE_INSTALL_PREFIX=cmdinstall -S '${megacmd_sources_workspace}' -B ${BUILD_DIR} '${env.BUILD_OPTIONS}'" sh "cmake --build ${megacmd_sources_workspace}/${BUILD_DIR} -j 2" sh "cmake --install ${megacmd_sources_workspace}/${BUILD_DIR}" } } stage('Run unit tests') { environment { INSTALL_DIR = "${megacmd_sources_workspace}/cmdinstall" PATH = "${env.PATH}:${env.INSTALL_DIR}/mega-cmd-tests-unit.app/Contents/MacOS/" HOME = "${megacmd_sources_workspace}/unit-test-dir/home" } options { timeout(time: 15, unit: 'MINUTES') } steps { dir('unit-test-dir') { echo "Running tests" sh "mkdir -p \$HOME/Library/Caches" sh "mega-cmd-tests-unit --gtest_output=xml:${megacmd_sources_workspace}/unit-test-dir/mega-cmd-tests.xml --gtest_shuffle" } } post { always { archiveArtifacts artifacts: "unit-test-dir/home/.megaCmd/megacmdserver.log*", allowEmptyArchive: true junit testResults: "unit-test-dir/mega-cmd-tests.xml", keepProperties: true } } } stage('Run integration tests') { options { timeout(time: 1, unit: 'HOURS') } environment { INSTALL_DIR = "${megacmd_sources_workspace}/cmdinstall" PATH = "${env.PATH}:${env.INSTALL_DIR}/bin:${env.INSTALL_DIR}/mega-cmd-tests-integration.app/Contents/MacOS/" HOME = "${megacmd_sources_workspace}/integration-test-dir/home" MEGACMD_TEST_USER = '' MEGACMD_TEST_PASS = credentials('MEGACMD_TESTS_PASSWORD') MEGACMD_SOCKET_NAME = "sock_${env.BUILD_ID}" } steps { lock(label: 'testing_accounts_megacmd', variable: 'MEGACMD_TEST_USER', quantity: 1, resource: null) { dir('integration-test-dir') { echo "Running tests" sh "mkdir -p \$HOME/Library/Caches" sh "mega-cmd-tests-integration --gtest_output=xml:${megacmd_sources_workspace}/integration-test-dir/mega-cmd-tests.xml --gtest_shuffle" } } } post { always { archiveArtifacts "integration-test-dir/home/.megaCmd/megacmdserver.log*" junit testResults: "integration-test-dir/mega-cmd-tests.xml", keepProperties: true } } } } post { always { script { if (currentBuild.currentResult == 'SUCCESS') { addGitLabMRComment(comment: ":white_check_mark: ${currentBuild.projectName} :green_apple: macOS SUCCEEDED :muscle:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build macos', state: 'success') } if (currentBuild.currentResult == 'FAILURE') { addGitLabMRComment(comment: ":red_circle: ${currentBuild.projectName} :green_apple: macOS FAILURE :worried:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build macos', state: 'failed') } if (currentBuild.currentResult == 'ABORTED') { addGitLabMRComment(comment: ":interrobang: ${currentBuild.projectName} :green_apple: macOS ABORTED :confused:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build macos', state: 'canceled') } if (currentBuild.currentResult == 'UNSTABLE') { addGitLabMRComment(comment: ":interrobang: ${currentBuild.projectName} :green_apple: macOS UNSTABLE :confused:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build macos', state: 'failed') } } deleteDir() } } } MEGAcmd-2.5.2_Linux/jenkinsfile/Jenkinsfile_MR_windows000066400000000000000000000264431516543156300227530ustar00rootroot00000000000000pipeline { agent { label "windows && amd64" } environment { BUILD_OPTIONS = '' } options { buildDiscarder(logRotator(numToKeepStr: '135', daysToKeepStr: '21')) gitLabConnection('GitLabConnectionJenkins') timestamps() // Add timestamps to all console output } stages { stage('clean previous runs and update gitlab commit status'){ steps{ deleteDir() updateGitlabCommitStatus(name: 'Build windows', state: 'running') } } stage('Get build parameters'){ parallel{ stage('Get build options'){ when { allOf { expression { env.gitlabTriggerPhrase != null } expression { env.gitlabTriggerPhrase.contains('BUILD_OPTIONS') } } } steps { script{ env.BUILD_OPTIONS = sh(script: 'echo "$gitlabTriggerPhrase" | grep BUILD_OPTIONS | awk -F "BUILD_OPTIONS=" \'{print \$2}\' | cut -d"\"" -f2', returnStdout: true).trim() println BUILD_OPTIONS } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the additional build parameters :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } stage('Get SDK branch'){ steps { script{ env.SDK_BRANCH = sh(script: 'echo "$gitlabMergeRequestDescription" | grep SDK_SUBMODULE_TEST | awk -F "SDK_SUBMODULE_TEST=" \'{print \$2}\' | cut -d" " -f1', returnStdout: true).trim() if (SDK_BRANCH == ""){ echo "SDK_BRANCH was not found on description so develop will be used by default" env.SDK_BRANCH = "develop" } println SDK_BRANCH } } post{ always { script{ if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${env.JOB_NAME} FAILURE when getting the SDK branch :worried:
Build results: [Jenkins [${env.JOB_NAME} ${env.BUILD_DISPLAY_NAME}]](${env.RUN_DISPLAY_URL})
Commit: ${env.GIT_COMMIT}" ) } } } } } } } stage('Checkout sources'){ parallel{ stage('Checkout MEGAcmd with prebuildmerge'){ steps{ checkout([ $class: 'GitSCM', branches: [[name: "origin/${env.gitlabSourceBranch}"]], userRemoteConfigs: [[ url: "${env.GIT_URL_MEGACMD}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1" ]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], [$class: 'PreBuildMerge', options: [fastForwardMode: 'FF', mergeRemote: "origin", mergeStrategy: 'DEFAULT', mergeTarget: "${env.gitlabTargetBranch}"]] ] ]) script{ megacmd_sources_workspace = WORKSPACE } } } stage('Checkout VCPKG'){ steps{ dir('vcpkg'){ checkout([ $class: 'GitSCM', branches: [[name: "origin/master"]], userRemoteConfigs: [[ url: "https://github.com/microsoft/vcpkg" ]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], [$class: "CloneOption", noTags: false, reference: ''] ] ]) } } } stage('Checkout SDK'){ steps{ dir('sdk'){ checkout([ $class: 'GitSCM', branches: [[name: "origin/${SDK_BRANCH}"]], userRemoteConfigs: [[ url: "${env.GIT_URL_SDK}", credentialsId: "12492eb8-0278-4402-98f0-4412abfb65c1" ]], extensions: [ [$class: "UserIdentity",name: "jenkins", email: "jenkins@jenkins"], [$class: "CloneOption", depth: 1, shallow: true, noTags: false, reference: ''] ] ]) } } } } } stage('Build MEGAcmd'){ environment{ VCPKGPATH = "${megacmd_sources_workspace}\\..\\vcpkg" BUILD_DIR = "cmdbuild" _MSPDBSRV_ENDPOINT_ = "${BUILD_TAG}" TMP = "${megacmd_sources_workspace}\\tmp" TEMP = "${megacmd_sources_workspace}\\tmp" TMPDIR = "${megacmd_sources_workspace}\\tmp" } options{ timeout(time: 3, unit: 'HOURS') } steps{ sh "rm -rf ${BUILD_DIR}; mkdir ${BUILD_DIR}" sh "mkdir tmp" sh "cmake -DCMAKE_VERBOSE_MAKEFILE=1 -DENABLE_MEGACMD_TESTS=ON -DCMAKE_BUILD_TYPE=Debug -DVCPKG_ROOT='${VCPKGPATH}' -DCMAKE_INSTALL_PREFIX=cmdinstall -S '${megacmd_sources_workspace}' -B ${BUILD_DIR} '${env.BUILD_OPTIONS}'" sh "cmake --build ${BUILD_DIR} -j 2" sh "cmake --install ${BUILD_DIR} --config Debug" } } stage('Run unit tests') { environment { INSTALL_DIR = "${megacmd_sources_workspace}\\cmdbuild\\Debug" MEGACMD_PIPE_SUFFIX = "${env.BUILD_ID}" } options { timeout(time: 3, unit: 'HOURS') } steps { dir('unit-test-dir') { echo "Running tests" bat "${INSTALL_DIR}\\mega-cmd-tests-unit.exe --gtest_shuffle --gtest_output=xml:${megacmd_sources_workspace}\\unit-test-dir\\mega-cmd-tests.xml" } } post { always { archiveArtifacts artifacts: "cmdbuild\\Debug\\.megaCmd\\megacmdserver.log*", allowEmptyArchive: true junit "unit-test-dir\\mega-cmd-tests.xml" bat "rmdir ${INSTALL_DIR}\\.megaCmd /s /q" } } } stage('Run integration tests') { environment { INSTALL_DIR = "${megacmd_sources_workspace}\\cmdbuild\\Debug" MEGACMD_PIPE_SUFFIX = "${env.BUILD_ID}" MEGACMD_TEST_USER = '' MEGACMD_TEST_PASS = credentials('MEGACMD_TESTS_PASSWORD') } options { timeout(time: 3, unit: 'HOURS') } steps { lock(label: 'testing_accounts_megacmd', variable: 'MEGACMD_TEST_USER', quantity: 1, resource: null) { dir('integration-test-dir') { echo "Running tests" script { def status = bat script: "${INSTALL_DIR}\\mega-cmd-tests-integration.exe --gtest_shuffle --gtest_output=xml:${megacmd_sources_workspace}\\integration-test-dir\\mega-cmd-tests.xml", returnStatus: true // There is an unresolved issue on Windows that results in an incorrect status code being returned // from the process above; so we use a file to get the actual value if (fileExists("exit_code.txt")) { def exitCode = readFile("exit_code.txt").trim().toInteger() if (status != exitCode) { echo "Incorrect status code detected (expected: ${exitCode} actual: ${status})" } if (exitCode != 0) { error "Integration tests failed with exit code ${exitCode}" } } else { unstable "Exit code file does not exist" } } } } } post { always { archiveArtifacts "cmdbuild\\Debug\\.megaCmd\\megacmdserver.log*" junit "integration-test-dir\\mega-cmd-tests.xml" bat "rmdir ${INSTALL_DIR}\\.megaCmd /s /q" } } } } post{ always{ script{ if (currentBuild.currentResult == 'SUCCESS'){ addGitLabMRComment(comment: ":white_check_mark: ${currentBuild.projectName} Windows SUCCEEDED :muscle:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build windows', state: 'success') } if (currentBuild.currentResult == 'FAILURE'){ addGitLabMRComment(comment: ":red_circle: ${currentBuild.projectName} Windows FAILURE :worried:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build windows', state: 'failed') } if (currentBuild.currentResult == 'ABORTED'){ addGitLabMRComment(comment: ":interrobang: ${currentBuild.projectName} Windows ABORTED :confused:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build windows', state: 'canceled') } if (currentBuild.currentResult == 'UNSTABLE'){ addGitLabMRComment(comment: ":interrobang: ${currentBuild.projectName} Windows UNSTABLE :confused:
Build results: [Jenkins [${currentBuild.displayName}]](${currentBuild.absoluteUrl})
Commit: ${env.GIT_COMMIT}" ) updateGitlabCommitStatus(name: 'Build windows', state: 'failed') } } deleteDir() } } } MEGAcmd-2.5.2_Linux/sdk/000077500000000000000000000000001516543156300146665ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/src/000077500000000000000000000000001516543156300146745ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/src/client/000077500000000000000000000000001516543156300161525ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/src/client/mega-attr000077500000000000000000000000401516543156300177530ustar00rootroot00000000000000#!/bin/bash mega-exec attr "$@" MEGAcmd-2.5.2_Linux/src/client/mega-backup000077500000000000000000000000421516543156300202500ustar00rootroot00000000000000#!/bin/bash mega-exec backup "$@" MEGAcmd-2.5.2_Linux/src/client/mega-cancel000077500000000000000000000000421516543156300202300ustar00rootroot00000000000000#!/bin/bash mega-exec cancel "$@" MEGAcmd-2.5.2_Linux/src/client/mega-cat000077500000000000000000000000371516543156300175560ustar00rootroot00000000000000#!/bin/bash mega-exec cat "$@" MEGAcmd-2.5.2_Linux/src/client/mega-cd000077500000000000000000000000361516543156300173740ustar00rootroot00000000000000#!/bin/bash mega-exec cd "$@" MEGAcmd-2.5.2_Linux/src/client/mega-configure000077500000000000000000000000451516543156300207670ustar00rootroot00000000000000#!/bin/bash mega-exec configure "$@" MEGAcmd-2.5.2_Linux/src/client/mega-confirm000077500000000000000000000000431516543156300204410ustar00rootroot00000000000000#!/bin/bash mega-exec confirm "$@" MEGAcmd-2.5.2_Linux/src/client/mega-confirmcancel000077500000000000000000000000511516543156300216060ustar00rootroot00000000000000#!/bin/bash mega-exec confirmcancel "$@" MEGAcmd-2.5.2_Linux/src/client/mega-cp000077500000000000000000000000361516543156300174100ustar00rootroot00000000000000#!/bin/bash mega-exec cp "$@" MEGAcmd-2.5.2_Linux/src/client/mega-debug000077500000000000000000000000411516543156300200700ustar00rootroot00000000000000#!/bin/bash mega-exec debug "$@" MEGAcmd-2.5.2_Linux/src/client/mega-deleteversions000077500000000000000000000000521516543156300220370ustar00rootroot00000000000000#!/bin/bash mega-exec deleteversions "$@" MEGAcmd-2.5.2_Linux/src/client/mega-df000077500000000000000000000000361516543156300173770ustar00rootroot00000000000000#!/bin/bash mega-exec df "$@" MEGAcmd-2.5.2_Linux/src/client/mega-du000077500000000000000000000000361516543156300174160ustar00rootroot00000000000000#!/bin/bash mega-exec du "$@" MEGAcmd-2.5.2_Linux/src/client/mega-errorcode000077500000000000000000000000451516543156300207720ustar00rootroot00000000000000#!/bin/bash mega-exec errorcode "$@" MEGAcmd-2.5.2_Linux/src/client/mega-exclude000077500000000000000000000000431516543156300204350ustar00rootroot00000000000000#!/bin/bash mega-exec exclude "$@" MEGAcmd-2.5.2_Linux/src/client/mega-export000077500000000000000000000000421516543156300203240ustar00rootroot00000000000000#!/bin/bash mega-exec export "$@" MEGAcmd-2.5.2_Linux/src/client/mega-find000077500000000000000000000000401516543156300177210ustar00rootroot00000000000000#!/bin/bash mega-exec find "$@" MEGAcmd-2.5.2_Linux/src/client/mega-ftp000077500000000000000000000000371516543156300176000ustar00rootroot00000000000000#!/bin/bash mega-exec ftp "$@" MEGAcmd-2.5.2_Linux/src/client/mega-fuse-add000077500000000000000000000000441516543156300204750ustar00rootroot00000000000000#!/bin/bash mega-exec fuse-add "$@" MEGAcmd-2.5.2_Linux/src/client/mega-fuse-config000077500000000000000000000000471516543156300212150ustar00rootroot00000000000000#!/bin/bash mega-exec fuse-config "$@" MEGAcmd-2.5.2_Linux/src/client/mega-fuse-disable000077500000000000000000000000501516543156300213450ustar00rootroot00000000000000#!/bin/bash mega-exec fuse-disable "$@" MEGAcmd-2.5.2_Linux/src/client/mega-fuse-enable000077500000000000000000000000471516543156300211760ustar00rootroot00000000000000#!/bin/bash mega-exec fuse-enable "$@" MEGAcmd-2.5.2_Linux/src/client/mega-fuse-remove000077500000000000000000000000471516543156300212450ustar00rootroot00000000000000#!/bin/bash mega-exec fuse-remove "$@" MEGAcmd-2.5.2_Linux/src/client/mega-fuse-show000077500000000000000000000000451516543156300207260ustar00rootroot00000000000000#!/bin/bash mega-exec fuse-show "$@" MEGAcmd-2.5.2_Linux/src/client/mega-get000077500000000000000000000000371516543156300175660ustar00rootroot00000000000000#!/bin/bash mega-exec get "$@" MEGAcmd-2.5.2_Linux/src/client/mega-graphics000077500000000000000000000000441516543156300206050ustar00rootroot00000000000000#!/bin/bash mega-exec graphics "$@" MEGAcmd-2.5.2_Linux/src/client/mega-help000077500000000000000000000000401516543156300177310ustar00rootroot00000000000000#!/bin/bash mega-exec help "$@" MEGAcmd-2.5.2_Linux/src/client/mega-https000077500000000000000000000000411516543156300201440ustar00rootroot00000000000000#!/bin/bash mega-exec https "$@" MEGAcmd-2.5.2_Linux/src/client/mega-import000077500000000000000000000000421516543156300203150ustar00rootroot00000000000000#!/bin/bash mega-exec import "$@" MEGAcmd-2.5.2_Linux/src/client/mega-invite000077500000000000000000000000421516543156300203010ustar00rootroot00000000000000#!/bin/bash mega-exec invite "$@" MEGAcmd-2.5.2_Linux/src/client/mega-ipc000077500000000000000000000000371516543156300175620ustar00rootroot00000000000000#!/bin/bash mega-exec ipc "$@" MEGAcmd-2.5.2_Linux/src/client/mega-killsession000077500000000000000000000000471516543156300213470ustar00rootroot00000000000000#!/bin/bash mega-exec killsession "$@" MEGAcmd-2.5.2_Linux/src/client/mega-lcd000077500000000000000000000000371516543156300175510ustar00rootroot00000000000000#!/bin/bash mega-exec lcd "$@" MEGAcmd-2.5.2_Linux/src/client/mega-log000077500000000000000000000000371516543156300175700ustar00rootroot00000000000000#!/bin/bash mega-exec log "$@" MEGAcmd-2.5.2_Linux/src/client/mega-login000077500000000000000000000000411516543156300201120ustar00rootroot00000000000000#!/bin/bash mega-exec login "$@" MEGAcmd-2.5.2_Linux/src/client/mega-logout000077500000000000000000000000421516543156300203140ustar00rootroot00000000000000#!/bin/bash mega-exec logout "$@" MEGAcmd-2.5.2_Linux/src/client/mega-lpwd000077500000000000000000000000401516543156300177470ustar00rootroot00000000000000#!/bin/bash mega-exec lpwd "$@" MEGAcmd-2.5.2_Linux/src/client/mega-ls000077500000000000000000000000361516543156300174240ustar00rootroot00000000000000#!/bin/bash mega-exec ls "$@" MEGAcmd-2.5.2_Linux/src/client/mega-mediainfo000077500000000000000000000000451516543156300207410ustar00rootroot00000000000000#!/bin/bash mega-exec mediainfo "$@" MEGAcmd-2.5.2_Linux/src/client/mega-mkdir000077500000000000000000000000411516543156300201100ustar00rootroot00000000000000#!/bin/bash mega-exec mkdir "$@" MEGAcmd-2.5.2_Linux/src/client/mega-mount000077500000000000000000000000411516543156300201440ustar00rootroot00000000000000#!/bin/bash mega-exec mount "$@" MEGAcmd-2.5.2_Linux/src/client/mega-mv000077500000000000000000000000361516543156300174300ustar00rootroot00000000000000#!/bin/bash mega-exec mv "$@" MEGAcmd-2.5.2_Linux/src/client/mega-passwd000077500000000000000000000000421516543156300203040ustar00rootroot00000000000000#!/bin/bash mega-exec passwd "$@" MEGAcmd-2.5.2_Linux/src/client/mega-permissions000077500000000000000000000000471516543156300213630ustar00rootroot00000000000000#!/bin/bash mega-exec permissions "$@" MEGAcmd-2.5.2_Linux/src/client/mega-preview000077500000000000000000000000431516543156300204650ustar00rootroot00000000000000#!/bin/bash mega-exec preview "$@" MEGAcmd-2.5.2_Linux/src/client/mega-proxy000077500000000000000000000000411516543156300201630ustar00rootroot00000000000000#!/bin/bash mega-exec proxy "$@" MEGAcmd-2.5.2_Linux/src/client/mega-put000077500000000000000000000000371516543156300176170ustar00rootroot00000000000000#!/bin/bash mega-exec put "$@" MEGAcmd-2.5.2_Linux/src/client/mega-pwd000077500000000000000000000000371516543156300176010ustar00rootroot00000000000000#!/bin/bash mega-exec pwd "$@" MEGAcmd-2.5.2_Linux/src/client/mega-quit000077500000000000000000000000401516543156300177630ustar00rootroot00000000000000#!/bin/bash mega-exec quit "$@" MEGAcmd-2.5.2_Linux/src/client/mega-reload000077500000000000000000000000421516543156300202510ustar00rootroot00000000000000#!/bin/bash mega-exec reload "$@" MEGAcmd-2.5.2_Linux/src/client/mega-rm000077500000000000000000000000361516543156300174240ustar00rootroot00000000000000#!/bin/bash mega-exec rm "$@" MEGAcmd-2.5.2_Linux/src/client/mega-session000077500000000000000000000000431516543156300204670ustar00rootroot00000000000000#!/bin/bash mega-exec session "$@" MEGAcmd-2.5.2_Linux/src/client/mega-share000077500000000000000000000000411516543156300201040ustar00rootroot00000000000000#!/bin/bash mega-exec share "$@" MEGAcmd-2.5.2_Linux/src/client/mega-showpcr000077500000000000000000000000431516543156300204710ustar00rootroot00000000000000#!/bin/bash mega-exec showpcr "$@" MEGAcmd-2.5.2_Linux/src/client/mega-signup000077500000000000000000000000421516543156300203100ustar00rootroot00000000000000#!/bin/bash mega-exec signup "$@" MEGAcmd-2.5.2_Linux/src/client/mega-speedlimit000077500000000000000000000000461516543156300211460ustar00rootroot00000000000000#!/bin/bash mega-exec speedlimit "$@" MEGAcmd-2.5.2_Linux/src/client/mega-sync000077500000000000000000000000401516543156300177550ustar00rootroot00000000000000#!/bin/bash mega-exec sync "$@" MEGAcmd-2.5.2_Linux/src/client/mega-sync-config000077500000000000000000000000471516543156300212270ustar00rootroot00000000000000#!/bin/bash mega-exec sync-config "$@" MEGAcmd-2.5.2_Linux/src/client/mega-sync-ignore000077500000000000000000000000471516543156300212450ustar00rootroot00000000000000#!/bin/bash mega-exec sync-ignore "$@" MEGAcmd-2.5.2_Linux/src/client/mega-sync-issues000077500000000000000000000000471516543156300212750ustar00rootroot00000000000000#!/bin/bash mega-exec sync-issues "$@" MEGAcmd-2.5.2_Linux/src/client/mega-thumbnail000077500000000000000000000000451516543156300207710ustar00rootroot00000000000000#!/bin/bash mega-exec thumbnail "$@" MEGAcmd-2.5.2_Linux/src/client/mega-transfers000077500000000000000000000000451516543156300210150ustar00rootroot00000000000000#!/bin/bash mega-exec transfers "$@" MEGAcmd-2.5.2_Linux/src/client/mega-tree000077500000000000000000000000401516543156300177400ustar00rootroot00000000000000#!/bin/bash mega-exec tree "$@" MEGAcmd-2.5.2_Linux/src/client/mega-userattr000077500000000000000000000000441516543156300206560ustar00rootroot00000000000000#!/bin/bash mega-exec userattr "$@" MEGAcmd-2.5.2_Linux/src/client/mega-users000077500000000000000000000000411516543156300201430ustar00rootroot00000000000000#!/bin/bash mega-exec users "$@" MEGAcmd-2.5.2_Linux/src/client/mega-version000077500000000000000000000000431516543156300204710ustar00rootroot00000000000000#!/bin/bash mega-exec version "$@" MEGAcmd-2.5.2_Linux/src/client/mega-webdav000077500000000000000000000000421516543156300202530ustar00rootroot00000000000000#!/bin/bash mega-exec webdav "$@" MEGAcmd-2.5.2_Linux/src/client/mega-whoami000077500000000000000000000000421516543156300202670ustar00rootroot00000000000000#!/bin/bash mega-exec whoami "$@" MEGAcmd-2.5.2_Linux/src/client/megacmd_client_main.cpp000066400000000000000000000013621516543156300226170ustar00rootroot00000000000000/** * @file src/client/megacmd_client_main.cpp * @brief MEGAcmd: Interactive CLI and service application * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdclient.h" int main(int argc, char* argv[]) { #ifdef WIN32 megacmd::Instance windowsConsoleController; #endif return megacmd::executeClient(argc, argv, COUT, CERR); } MEGAcmd-2.5.2_Linux/src/client/megacmd_completion.sh000066400000000000000000000036751516543156300223470ustar00rootroot00000000000000 _megacmd() { local cur opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" if [[ ${cur} == '=' ]]; then cur="" fi COMP_WORDS[0]="${COMP_WORDS[0]/mega-/}" linetoexec="" lasta="" for a in "${COMP_WORDS[@]}"; do if [[ $a =~ ^.*([ \\]).*$ ]] && [[ $a != "\""* ]] && [[ $a != "'"* ]]; then lastcharina="${a: -1}" #add trailing space if ended in \ (it would have been strimmed) #and unescape symbols that dont need scaping between single quotes linetoexec=$linetoexec" '"$(echo $a | sed 's#\([^\\]\)\\$#\1\\ #g' | sed "s#\\\\\([ \<\>\|\`;:\"\!]\)#\1#g")"'" else if [[ ${a} == '=' ]] || [[ ${lasta} == '=' ]] || [[ ${a} == ':' ]] || [[ ${lasta} == ':' ]]; then linetoexec=$linetoexec$a else linetoexec=$linetoexec" "$a if [[ $a == "\""* ]] && [[ $a != *"\"" ]];then linetoexec=$linetoexec"\"" fi if [[ $a == "'"* ]] && [[ $a != *"'" ]];then linetoexec=$linetoexec"'" fi fi fi lasta=$a done if [[ "$linetoexec" == *" " ]] then linetoexec="$linetoexec\"\"" fi COMPREPLY="" opts="$(mega-exec completion ${linetoexec/#mega-/} 2>/dev/null)" if [ $? -ne 0 ]; then COMPREPLY="" return $? fi opts=$(echo "${opts/\`/\\\`}") opts=$(echo "${opts/\|/\\\|}") declare -a "aOPTS=(${opts})" || declare -a 'aOPTS=(${opts})' #escape characters that need to be scaped for a in `seq 0 $(( ${#aOPTS[@]} -1 ))`; do if [[ $lasta != "\""* ]] && [[ $lasta != "'"* ]]; then COMPREPLY[$a]=$( echo ${aOPTS[$a]} | sed "s#\([ \!;:\|\`\(\)\<\>\"\'\\]\)#\\\\\1#g") #OK else COMPREPLY[$a]="${aOPTS[$a]}" fi done for i in "${COMPREPLY[@]}"; do if [[ ${i} == --*= ]] || [[ ${i} == */ ]]; then hash compopt 2>/dev/null >/dev/null && compopt -o nospace fi done if [[ $opts == "MEGACMD_USE_LOCAL_COMPLETION" ]]; then COMPREPLY=() fi if [[ $opts == "" ]]; then COMPREPLY="" compopt -o nospace fi return 0 } for i in $(compgen -ca mega-); do IFS=" " complete -o default -F _megacmd $i done MEGAcmd-2.5.2_Linux/src/client/megacmdclient.cpp000066400000000000000000000657271516543156300214730ustar00rootroot00000000000000/** * @file src/client/megacmdclient.cpp * @brief MEGAcmdClient: Client application of MEGAcmd * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdclient.h" #include "../megacmdcommonutils.h" #include "../megacmdshell/megacmdshellcommunications.h" #include "../megacmdshell/megacmdshellcommunicationsnamedpipes.h" #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include //PathAppend #include //CommandLineToArgvW #include #include #else #include #include #include #endif #ifdef _WIN32 #else #include // console size #endif #include #define PROGRESS_COMPLETE -2 #define SPROGRESS_COMPLETE "-2" #define SSTR( x ) static_cast< const std::ostringstream & >( \ ( std::ostringstream() << std::dec << x ) ).str() namespace megacmd { using namespace std; void printprogress(long long completed, long long total, const char *title = "TRANSFERRING"); #ifdef _WIN32 // convert UTF-8 to Windows Unicode void path2local(string* path, string* local) { // make space for the worst case local->resize((path->size() + 1) * sizeof(wchar_t)); int len = MultiByteToWideChar(CP_UTF8, 0, path->c_str(), -1, (wchar_t*)local->data(), int(local->size() / sizeof(wchar_t) + 1)); if (len) { // resize to actual result local->resize(sizeof(wchar_t) * (len - 1)); } else { local->clear(); } } // convert to Windows Unicode Utf8 void local2path(string* local, string* path) { path->resize((local->size() + 1) * 4 / sizeof(wchar_t)); path->resize(WideCharToMultiByte(CP_UTF8, 0, (wchar_t*)local->data(), int(local->size() / sizeof(wchar_t)), (char*)path->data(), int(path->size() + 1), NULL, NULL)); //normalize(path); } //TODO: delete the 2 former?? wstring getWAbsPath(wstring localpath) { if (!localpath.size()) { return localpath; } wstring utf8absolutepath; wstring absolutelocalpath; if (!PathIsRelativeW((LPCWSTR)localpath.data())) { if (localpath.find(L"\\\\?\\") != 0) { localpath.insert(0, L"\\\\?\\"); } return localpath; } int len = GetFullPathNameW((LPCWSTR)localpath.data(), 0, NULL, NULL); if (len <= 0) { return localpath; } absolutelocalpath.resize(len); int newlen = GetFullPathNameW((LPCWSTR)localpath.data(), len, (LPWSTR)absolutelocalpath.data(), NULL); if (newlen <= 0 || newlen >= len) { cerr << " failed to get CWD" << endl; return localpath; } absolutelocalpath.resize(newlen); if (absolutelocalpath.find(L"\\\\?\\") != 0) { absolutelocalpath.insert(0, L"\\\\?\\"); } return absolutelocalpath; } #endif string getAbsPath(string relativePath) { if (!relativePath.size()) { return relativePath; } #ifdef _WIN32 string utf8absolutepath; string localpath; path2local(&relativePath, &localpath); string absolutelocalpath; localpath.append("", 1); if (!PathIsRelativeW((LPCWSTR)localpath.data())) { utf8absolutepath = relativePath; if (utf8absolutepath.find("\\\\?\\") != 0) { utf8absolutepath.insert(0, "\\\\?\\"); } return utf8absolutepath; } int len = GetFullPathNameW((LPCWSTR)localpath.data(), 0, NULL, NULL); if (len <= 0) { return relativePath; } absolutelocalpath.resize(len * sizeof(wchar_t)); int newlen = GetFullPathNameW((LPCWSTR)localpath.data(), len, (LPWSTR)absolutelocalpath.data(), NULL); if (newlen <= 0 || newlen >= len) { cerr << " failed to get CWD" << endl; return relativePath; } absolutelocalpath.resize(newlen* sizeof(wchar_t)); local2path(&absolutelocalpath, &utf8absolutepath); if (utf8absolutepath.find("\\\\?\\") != 0) { utf8absolutepath.insert(0, "\\\\?\\"); } return utf8absolutepath; #else if (relativePath.size() && relativePath.at(0) == '/') { return relativePath; } else { char cCurrentPath[PATH_MAX]; if (!getcwd(cCurrentPath, sizeof(cCurrentPath))) { cerr << " failed to get CWD" << endl; return relativePath; } string absolutepath = cCurrentPath; absolutepath.append("/"); absolutepath.append(relativePath); return absolutepath; } return relativePath; #endif } string parseArgs(int argc, char* argv[], MegaCmdShellCommunications& comsManager) { vector absolutedargs; int totalRealArgs = 0; if (argc>1) { absolutedargs.push_back(argv[1]); if ( strcmp(argv[1],"quit") && strcmp(argv[1],"exit") ) { string clientWidth = "--client-width="; clientWidth+= SSTR(getNumberOfCols(80)); absolutedargs.push_back(clientWidth); } if (!strcmp(argv[1],"get") || !strcmp(argv[1],"put") || !strcmp(argv[1],"login") || !strcmp(argv[1],"reload") ) { auto clientIdOpt = comsManager.tryToGetClientId(); if (clientIdOpt) { absolutedargs.push_back("--clientID=" + *clientIdOpt); } } if (!strcmp(argv[1],"backup") || !strcmp(argv[1],"du") || !strcmp(argv[1],"mediainfo") || !strcmp(argv[1],"sync") || !strcmp(argv[1],"downloads") || !strcmp(argv[1],"transfers") ) { unsigned int width = getNumberOfCols(80); int pathSize = width/2; if ( !strcmp(argv[1],"downloads") ) { pathSize = int((width-46)/2); } else if ( !strcmp(argv[1],"transfers") ) { pathSize = int((width-46)/2); } else if ( !strcmp(argv[1],"du") ) { pathSize = int(width-13); for (int i = 1; i < argc; i++) { if (strstr(argv[i], "--versions")) { pathSize -= 11; break; } } } else if ( !strcmp(argv[1],"sync") ) { pathSize = int((width-46)/2); } else if ( !strcmp(argv[1],"mediainfo") ) { pathSize = int(width - 28); } else if ( !strcmp(argv[1],"backup") ) { pathSize = int((width-21)/2); } string spathSize = "--path-display-size="; spathSize+=SSTR(pathSize); absolutedargs.push_back(spathSize); } if (!strcmp(argv[1],"sync")) { for (int i = 2; i < argc; i++) { if (strlen(argv[i]) && argv[i][0] !='-' ) { totalRealArgs++; } } bool firstrealArg = true; for (int i = 2; i < argc; i++) { if (strlen(argv[i]) && argv[i][0] !='-' ) { if (totalRealArgs >=2 && firstrealArg) { absolutedargs.push_back(getAbsPath(argv[i])); firstrealArg=false; } else { absolutedargs.push_back(argv[i]); } } else { absolutedargs.push_back(argv[i]); } } } else if (!strcmp(argv[1],"lcd")) //localpath args { for (int i = 2; i < argc; i++) { if (strlen(argv[i]) && argv[i][0] !='-' ) { absolutedargs.push_back(getAbsPath(argv[i])); } else { absolutedargs.push_back(argv[i]); } } } else if (!strcmp(argv[1],"get") || !strcmp(argv[1],"preview") || !strcmp(argv[1],"thumbnail")) { for (int i = 2; i < argc; i++) { if (strlen(argv[i]) && argv[i][0] != '-' ) { totalRealArgs++; if (totalRealArgs>1) { absolutedargs.push_back(getAbsPath(argv[i])); } else { absolutedargs.push_back(argv[i]); } } else { absolutedargs.push_back(argv[i]); } } if (totalRealArgs == 1) { absolutedargs.push_back(getAbsPath(".")); } } else if (!strcmp(argv[1],"put")) { int lastRealArg = 0; for (int i = 2; i < argc; i++) { if (strlen(argv[i]) && argv[i][0] !='-' ) { lastRealArg = i; } } bool firstRealArg = true; for (int i = 2; i < argc; i++) { if (strlen(argv[i]) && argv[i][0] !='-') { if (firstRealArg || i absolutedargs; int totalRealArgs = 0; if (argc>1) { absolutedargs.push_back(argv[1]); if ( wcscmp(argv[1],L"quit") && wcscmp(argv[1],L"exit") ) { wstring clientWidth = L"--client-width="; string scw = SSTR(getNumberOfCols(80)); std::wstring wsclientWidth(scw.begin(), scw.end()); clientWidth+=wsclientWidth; absolutedargs.push_back(clientWidth); } if (!wcscmp(argv[1],L"get") || !wcscmp(argv[1],L"put") || !wcscmp(argv[1],L"login") || !wcscmp(argv[1],L"reload") ) { auto clientIdOpt = comsManager.tryToGetClientId(); if (clientIdOpt) { absolutedargs.push_back(L"--clientID=" + std::wstring(clientIdOpt->begin(), clientIdOpt->end())); } } if (!wcscmp(argv[1],L"backup") || !wcscmp(argv[1],L"du") || !wcscmp(argv[1],L"mediainfo") || !wcscmp(argv[1],L"sync") || !wcscmp(argv[1],L"downloads") || !wcscmp(argv[1],L"transfers") ) { unsigned int width = getNumberOfCols(80); int pathSize = width/2; if ( !wcscmp(argv[1],L"downloads") ) { pathSize = int((width-46)/2); } else if ( !wcscmp(argv[1],L"transfers") ) { pathSize = int((width-46)/2); } else if ( !wcscmp(argv[1],L"du") ) { pathSize = int(width-13); for (int i = 1; i < argc; i++) { if (wcsstr(argv[i], L"--versions")) { pathSize -= 11; break; } } } else if ( !wcscmp(argv[1],L"sync") ) { pathSize = int((width-46)/2); } else if ( !wcscmp(argv[1],L"mediainfo") ) { pathSize = int(width - 28); } else if ( !wcscmp(argv[1],L"backup") ) { pathSize = int((width-21)/2); } wstring spathSize = L"--path-display-size="; string sps = SSTR(pathSize); std::wstring wspathSize(sps.begin(), sps.end()); spathSize+=wspathSize; absolutedargs.push_back(spathSize); } if (!wcscmp(argv[1],L"sync")) { for (int i = 2; i < argc; i++) { if (wcslen(argv[i]) && argv[i][0] !='-' ) { totalRealArgs++; } } bool firstrealArg = true; for (int i = 2; i < argc; i++) { if (wcslen(argv[i]) && argv[i][0] !='-' ) { if (totalRealArgs >=2 && firstrealArg) { absolutedargs.push_back(getWAbsPath(argv[i])); firstrealArg=false; } else { absolutedargs.push_back(argv[i]); } } else { absolutedargs.push_back(argv[i]); } } } else if (!wcscmp(argv[1],L"lcd")) //localpath args { for (int i = 2; i < argc; i++) { if (wcslen(argv[i]) && argv[i][0] !='-' ) { absolutedargs.push_back(getWAbsPath(argv[i])); } else { absolutedargs.push_back(argv[i]); } } } else if (!wcscmp(argv[1],L"get") || !wcscmp(argv[1],L"preview") || !wcscmp(argv[1],L"thumbnail")) { for (int i = 2; i < argc; i++) { if (wcslen(argv[i]) && argv[i][0] != '-' ) { totalRealArgs++; if (totalRealArgs>1) { absolutedargs.push_back(getWAbsPath(argv[i])); } else { absolutedargs.push_back(argv[i]); } } else { absolutedargs.push_back(argv[i]); } } if (totalRealArgs == 1) { absolutedargs.push_back(getWAbsPath(L".")); } } else if (!wcscmp(argv[1],L"put")) { int lastRealArg = 0; for (int i = 2; i < argc; i++) { if (wcslen(argv[i]) && argv[i][0] !='-' ) { lastRealArg = i; } } bool firstRealArg = true; for (int i = 2; i < argc; i++) { if (wcslen(argv[i]) && argv[i][0] !='-') { if (firstRealArg || i 1 ) width--; static string lastMessage; while (nextstatedelimitpos!=string::npos && statestring.size()) { string newstate = statestring.substr(0,nextstatedelimitpos); statestring=statestring.substr(nextstatedelimitpos+1); nextstatedelimitpos = statestring.find(statedelim); if (newstate.compare(0, strlen("prompt:"), "prompt:") == 0) { // This is always received after server is first ready comsManager.markServerRegistrationFailed(); } else if (newstate.compare(0, strlen("endtransfer:"), "endtransfer:") == 0) { string rest = newstate.substr(strlen("endtransfer:")); if (rest.size() >=3) { bool isdown = rest.at(0) == 'D'; string path = rest.substr(2); stringstream os; if (shown_partial_progress) { os << endl; } os << (isdown?"Download":"Upload") << " finished: " << path << endl; #ifdef _WIN32 wstring wbuffer; stringtolocalw((const char*)os.str().data(),&wbuffer); WindowsUtf8StdoutGuard utf8Guard; OUTSTREAM << wbuffer << flush; #else StdoutMutexGuard stdoutGuard; OUTSTREAM << os.str(); #endif } } else if (newstate.compare(0, strlen("loged:"), "loged:") == 0) { // non interactive client doesn't need to wait for prompt if login finished comsManager.markServerReady(); } else if (newstate.compare(0, strlen("login:"), "login:") == 0) { StdoutMutexGuard stdoutGuard; printCenteredContentsCerr(string("Resuming session ... ").c_str(), width, false); } else if (newstate.compare(0, strlen("message:"), "message:") == 0) { if (lastMessage.compare(newstate)) //to avoid repeating messages { lastMessage = newstate; std::string_view messageContents = std::string_view(newstate).substr(strlen("message:")); string contents = std::string(shown_partial_progress ? "\n": "").append(messageContents); replaceAll(contents, "%mega-%", "mega-"); if (messageContents.rfind("-----", 0) != 0) { printCenteredContentsCerr(contents, width); } else { StdoutMutexGuard stdoutGuard; cerr << endl << contents << endl; } } } else if (newstate.compare(0, strlen("clientID:"), "clientID:") == 0) { std::string clientId = newstate.substr(strlen("clientID:")); comsManager.setClientIdPromise(clientId); } else if (newstate.compare(0, strlen("progress:"), "progress:") == 0) { string rest = newstate.substr(strlen("progress:")); size_t nexdel = rest.find(":"); string received = rest.substr(0,nexdel); rest = rest.substr(nexdel+1); nexdel = rest.find(":"); string total = rest.substr(0,nexdel); string title; if ( (nexdel != string::npos) && (nexdel < rest.size() ) ) { rest = rest.substr(nexdel+1); nexdel = rest.find(":"); title = rest.substr(0,nexdel); } if (received!=SPROGRESS_COMPLETE) { shown_partial_progress = true; } else { shown_partial_progress = false; } long long completed = received == SPROGRESS_COMPLETE ? PROGRESS_COMPLETE : charstoll(received.c_str()); const char * progressTitle = title.empty() ? "TRANSFERRING" : title.c_str(); printprogress(completed, charstoll(total.c_str()), progressTitle); } else if (newstate == "ack") { // do nothing, all good } else if (newstate == "restart") { // ignore restart command } else { //received unrecognized state change. sleep a while to avoid continuous looping sleepMilliSeconds(1000); } if (newstate.compare(0, strlen("progress:"), "progress:") != 0) { shown_partial_progress = false; } } } int executeClient(int argc, char* argv[], OUTSTREAMTYPE & outstream, OUTSTREAMTYPE &errorOutput) { #ifdef _WIN32 setlocale(LC_ALL, "en-US"); bool redirectedoutput = false; //Redirect stdout to a file for (int i=1;i comms(new MegaCmdShellCommunicationsNamedPipes(redirectedoutput)); #else std::unique_ptr comms(new MegaCmdShellCommunicationsPosix()); #endif string command = argv[1]; bool mayInitiateServer = command.compare(0,4,"exit") && command.compare(0,4,"quit") && command.compare(0,10,"completion"); bool registeredOk = comms->registerForStateChanges(false, statechangehandle, mayInitiateServer); if (!registeredOk) { return -2; } #if defined _WIN32 && !defined MEGACMD_TESTING_CODE int wargc; // This function (i.e., `executeClient`) should not deal with the command line arguments directly; that's above its responsability now. // For now we'll disable this call to `CommandLineToArgvW` in integration tests (the only other consumer of `executeClient` that's not main) because it was causing issues. // TODO: In the future we should refactor this to move the responsability away from `executeClient`. We should also avoid having two separate `parseArgs` functions. LPWSTR *szArglist = CommandLineToArgvW(GetCommandLineW(), &wargc); if (szArglist == NULL) { return -3; } wstring wParsedArgs = parsewArgs(wargc, szArglist, *comms); LocalFree(szArglist); #else string parsedArgs = parseArgs(argc, argv, *comms); #endif bool isInloginInValidCommands = false; if (argc > 1) { isInloginInValidCommands = std::find(loginInValidCommands.begin(), loginInValidCommands.end(), string(argv[1])) != loginInValidCommands.end(); } // If the command requires login, let's give it some time before executing it. // We will wait for server to signal readyness // Server readyness is marked by the arrival of prompt // or loging completes. Note: if the login takes larger than RESUME_SESSION_TIMEOUT we will continue and let the command fail if requires login if (!isInloginInValidCommands) { comms->waitForServerReadyOrRegistrationFailed(); } #if defined _WIN32 && !defined MEGACMD_TESTING_CODE int outcode = comms->executeCommandW(wParsedArgs, readresponse, outstream, errorOutput, false); #else int outcode = comms->executeCommand(parsedArgs, readresponse, outstream, errorOutput, false); #endif // do always return positive error codes (POSIX compliant) if (outcode < 0) { outcode = - outcode; } comms->shutdown(); return outcode; } } //end namespace MEGAcmd-2.5.2_Linux/src/client/megacmdclient.h000066400000000000000000000013131516543156300211150ustar00rootroot00000000000000/** * @file src/client/megacmdclient.h * @brief MEGAcmd: Interactive CLI and service application * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include "../megacmdcommonutils.h" namespace megacmd { int executeClient(int argc, char* argv[], OUTSTREAMTYPE &outstream, OUTSTREAMTYPE &errorOutput = CERR); } // end namespace MEGAcmd-2.5.2_Linux/src/client/python/000077500000000000000000000000001516543156300174735ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/src/client/python/mega-execports000077500000000000000000000050751516543156300223530ustar00rootroot00000000000000#!/usr/bin/python import socket, sys, struct, os localpathcommands=["lcd"] def parseArgs(argsin): itochange = None totalRealArgs = 0 realargs = [] if argsin[0] in ["sync"]: #get first argument (local path) and append fullpath for i in range(1,len(argsin)): if not argsin[i].startswith("-"): if (itochange is None): itochange = i; totalRealArgs+=1 if argsin[0] in ["sync"]: if (itochange is not None and totalRealArgs>=2): argsin[itochange]=os.path.abspath(argsin[itochange]) if argsin[0] in localpathcommands: #get first argument (local path) and append fullpath for i in range(1,len(argsin)): if not argsin[i].startswith("-"): argsin[i]=os.path.abspath(argsin[i]) if argsin[0] in ["get", "preview", "thumbnail"]: #get second argument (local path) and append fullpath for i in range(1,len(argsin)): if not argsin[i].startswith("-"): totalRealArgs+=1 if (totalRealArgs>1): argsin[i]=os.path.abspath(argsin[i]) if argsin[0] in ["put"]: for i in range(1,len(argsin)): if not argsin[i].startswith("-"): totalRealArgs+=1 realargs.append(argsin[i]) totalRealArgs=0 for i in range(1,len(argsin)): if not argsin[i].startswith("-"): totalRealArgs+=1 if ((totalRealArgs == 1) or (totalRealArgs < (len(realargs))) ): argsin[i]=os.path.abspath(argsin[i]) for i in range(1,len(argsin)): if " " in argsin[i]: argsin[i]='"'+argsin[i]+'"' for i in range(1,len(argsin)): if "" == argsin[i]: argsin[i]='"'+argsin[i]+'"' return argsin; sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) try: sock.connect(('127.0.0.1',12300)) commandArgs=parseArgs(sys.argv[1:]) if (sys.version_info[0] == 3): sock.send(" ".join(commandArgs).encode(sys.stdin.encoding)) else: sock.send(" ".join(commandArgs)) data = sock.recv(100); sockOutId, = struct.unpack('H', data[:2]) sock.close() sockout = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sockout.connect(('127.0.0.1',12300+sockOutId)) outCode, = struct.unpack('i', sockout.recv(4))#get out code data = sockout.recv(100); commandOutput="" while (len(data)): if (sys.version_info[0] == 3): commandOutput+=data.decode(sys.stdout.encoding) else: commandOutput+=data data = sockout.recv(100); sockout.close() if "" != commandOutput: sys.stdout.write(commandOutput) sys.stdout.flush() if (outCode <0): exit(-outCode) exit(outCode) except Exception as ex: sys.stderr.write("Unable to connect to service"+" "+str(ex)+"\n") sys.stderr.write("Please ensure MEGAcmd is running\n") exit(1) MEGAcmd-2.5.2_Linux/src/client/win/000077500000000000000000000000001516543156300167475ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/src/client/win/mega-attr.bat000066400000000000000000000000501516543156300213130ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" attr %* MEGAcmd-2.5.2_Linux/src/client/win/mega-backup.bat000077500000000000000000000000521516543156300216130ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" backup %* MEGAcmd-2.5.2_Linux/src/client/win/mega-cancel.bat000066400000000000000000000000521516543156300215700ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" cancel %* MEGAcmd-2.5.2_Linux/src/client/win/mega-cat.bat000066400000000000000000000000471516543156300211160ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" cat %* MEGAcmd-2.5.2_Linux/src/client/win/mega-cd.bat000066400000000000000000000000461516543156300207340ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" cd %* MEGAcmd-2.5.2_Linux/src/client/win/mega-configure.bat000066400000000000000000000000551516543156300223270ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" configure %* MEGAcmd-2.5.2_Linux/src/client/win/mega-confirm.bat000066400000000000000000000000531516543156300220010ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" confirm %* MEGAcmd-2.5.2_Linux/src/client/win/mega-confirmcancel.bat000066400000000000000000000000611516543156300231460ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" confirmcancel %* MEGAcmd-2.5.2_Linux/src/client/win/mega-cp.bat000066400000000000000000000000461516543156300207500ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" cp %* MEGAcmd-2.5.2_Linux/src/client/win/mega-debug.bat000066400000000000000000000000511516543156300214300ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" debug %* MEGAcmd-2.5.2_Linux/src/client/win/mega-deleteversions.bat000077500000000000000000000000621516543156300234020ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" deleteversions %* MEGAcmd-2.5.2_Linux/src/client/win/mega-df.bat000066400000000000000000000000461516543156300207370ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" df %* MEGAcmd-2.5.2_Linux/src/client/win/mega-du.bat000066400000000000000000000000461516543156300207560ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" du %* MEGAcmd-2.5.2_Linux/src/client/win/mega-errorcode.bat000066400000000000000000000000551516543156300223320ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" errorcode %* MEGAcmd-2.5.2_Linux/src/client/win/mega-exclude.bat000077500000000000000000000000531516543156300220000ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" exclude %* MEGAcmd-2.5.2_Linux/src/client/win/mega-export.bat000066400000000000000000000000521516543156300216640ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" export %* MEGAcmd-2.5.2_Linux/src/client/win/mega-find.bat000066400000000000000000000000501516543156300212610ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" find %* MEGAcmd-2.5.2_Linux/src/client/win/mega-ftp.bat000066400000000000000000000000471516543156300211400ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" ftp %* MEGAcmd-2.5.2_Linux/src/client/win/mega-fuse-add.bat000077500000000000000000000000541516543156300220400ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" fuse-add %* MEGAcmd-2.5.2_Linux/src/client/win/mega-fuse-config.bat000077500000000000000000000000571516543156300225600ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" fuse-config %* MEGAcmd-2.5.2_Linux/src/client/win/mega-fuse-disable.bat000077500000000000000000000000601516543156300227100ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" fuse-disable %* MEGAcmd-2.5.2_Linux/src/client/win/mega-fuse-enable.bat000077500000000000000000000000571516543156300225410ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" fuse-enable %* MEGAcmd-2.5.2_Linux/src/client/win/mega-fuse-remove.bat000077500000000000000000000000571516543156300226100ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" fuse-remove %* MEGAcmd-2.5.2_Linux/src/client/win/mega-fuse-show.bat000077500000000000000000000000551516543156300222710ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" fuse-show %* MEGAcmd-2.5.2_Linux/src/client/win/mega-get.bat000066400000000000000000000000471516543156300211260ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" get %* MEGAcmd-2.5.2_Linux/src/client/win/mega-graphics.bat000066400000000000000000000000541516543156300221450ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" graphics %* MEGAcmd-2.5.2_Linux/src/client/win/mega-help.bat000066400000000000000000000000501516543156300212710ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" help %* MEGAcmd-2.5.2_Linux/src/client/win/mega-https.bat000077500000000000000000000000511516543156300215070ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" https %* MEGAcmd-2.5.2_Linux/src/client/win/mega-import.bat000066400000000000000000000000521516543156300216550ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" import %* MEGAcmd-2.5.2_Linux/src/client/win/mega-invite.bat000066400000000000000000000000521516543156300216410ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" invite %* MEGAcmd-2.5.2_Linux/src/client/win/mega-ipc.bat000066400000000000000000000000471516543156300211220ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" ipc %* MEGAcmd-2.5.2_Linux/src/client/win/mega-killsession.bat000066400000000000000000000000571516543156300227070ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" killsession %* MEGAcmd-2.5.2_Linux/src/client/win/mega-lcd.bat000066400000000000000000000000471516543156300211110ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" lcd %* MEGAcmd-2.5.2_Linux/src/client/win/mega-log.bat000066400000000000000000000000471516543156300211300ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" log %* MEGAcmd-2.5.2_Linux/src/client/win/mega-login.bat000066400000000000000000000000511516543156300214520ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" login %* MEGAcmd-2.5.2_Linux/src/client/win/mega-logout.bat000066400000000000000000000000521516543156300216540ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" logout %* MEGAcmd-2.5.2_Linux/src/client/win/mega-lpwd.bat000066400000000000000000000000501516543156300213070ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" lpwd %* MEGAcmd-2.5.2_Linux/src/client/win/mega-ls.bat000077500000000000000000000000461516543156300207670ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" ls %* MEGAcmd-2.5.2_Linux/src/client/win/mega-mediainfo.bat000066400000000000000000000000551516543156300223010ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" mediainfo %* MEGAcmd-2.5.2_Linux/src/client/win/mega-mkdir.bat000066400000000000000000000000511516543156300214500ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" mkdir %* MEGAcmd-2.5.2_Linux/src/client/win/mega-mount.bat000066400000000000000000000000511516543156300215040ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" mount %* MEGAcmd-2.5.2_Linux/src/client/win/mega-mv.bat000066400000000000000000000000461516543156300207700ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" mv %* MEGAcmd-2.5.2_Linux/src/client/win/mega-passwd.bat000066400000000000000000000000521516543156300216440ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" passwd %* MEGAcmd-2.5.2_Linux/src/client/win/mega-preview.bat000066400000000000000000000000531516543156300220250ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" preview %* MEGAcmd-2.5.2_Linux/src/client/win/mega-proxy.bat000066400000000000000000000000511516543156300215230ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" proxy %* MEGAcmd-2.5.2_Linux/src/client/win/mega-put.bat000066400000000000000000000000471516543156300211570ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" put %* MEGAcmd-2.5.2_Linux/src/client/win/mega-pwd.bat000066400000000000000000000000471516543156300211410ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" pwd %* MEGAcmd-2.5.2_Linux/src/client/win/mega-quit.bat000066400000000000000000000000501516543156300213230ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" quit %* MEGAcmd-2.5.2_Linux/src/client/win/mega-reload.bat000066400000000000000000000000521516543156300216110ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" reload %* MEGAcmd-2.5.2_Linux/src/client/win/mega-rm.bat000066400000000000000000000000461516543156300207640ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" rm %* MEGAcmd-2.5.2_Linux/src/client/win/mega-session.bat000066400000000000000000000000531516543156300220270ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" session %* MEGAcmd-2.5.2_Linux/src/client/win/mega-share.bat000066400000000000000000000000511516543156300214440ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" share %* MEGAcmd-2.5.2_Linux/src/client/win/mega-showpcr.bat000066400000000000000000000000531516543156300220310ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" showpcr %* MEGAcmd-2.5.2_Linux/src/client/win/mega-signup.bat000066400000000000000000000000521516543156300216500ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" signup %* MEGAcmd-2.5.2_Linux/src/client/win/mega-speedlimit.bat000066400000000000000000000000561516543156300225060ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" speedlimit %* MEGAcmd-2.5.2_Linux/src/client/win/mega-sync-config.bat000077500000000000000000000000571516543156300225720ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" sync-config %* MEGAcmd-2.5.2_Linux/src/client/win/mega-sync-ignore.bat000077500000000000000000000000571516543156300226100ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" sync-ignore %* MEGAcmd-2.5.2_Linux/src/client/win/mega-sync-issues.bat000077500000000000000000000000571516543156300226400ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" sync-issues %* MEGAcmd-2.5.2_Linux/src/client/win/mega-sync.bat000077500000000000000000000000501516543156300213200ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" sync %* MEGAcmd-2.5.2_Linux/src/client/win/mega-thumbnail.bat000066400000000000000000000000551516543156300223310ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" thumbnail %* MEGAcmd-2.5.2_Linux/src/client/win/mega-transfers.bat000077500000000000000000000000551516543156300223600ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" transfers %* MEGAcmd-2.5.2_Linux/src/client/win/mega-tree.bat000066400000000000000000000000501516543156300213000ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" tree %* MEGAcmd-2.5.2_Linux/src/client/win/mega-userattr.bat000066400000000000000000000000541516543156300222160ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" userattr %* MEGAcmd-2.5.2_Linux/src/client/win/mega-users.bat000066400000000000000000000000511516543156300215030ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" users %* MEGAcmd-2.5.2_Linux/src/client/win/mega-version.bat000066400000000000000000000000531516543156300220310ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" version %* MEGAcmd-2.5.2_Linux/src/client/win/mega-webdav.bat000077500000000000000000000000521516543156300216160ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" webdav %* MEGAcmd-2.5.2_Linux/src/client/win/mega-whoami.bat000066400000000000000000000000521516543156300216270ustar00rootroot00000000000000@echo off "%~dp0MegaClient.exe" whoami %* MEGAcmd-2.5.2_Linux/src/comunicationsmanager.cpp000066400000000000000000000121251516543156300216070ustar00rootroot00000000000000/** * @file src/comunicationsmanager.cpp * @brief MEGAcmd: Communications manager non supporting non-interactive mode * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "comunicationsmanager.h" #include using namespace mega; namespace megacmd { ComunicationsManager::ComunicationsManager() { } bool ComunicationsManager::receivedPetition() { return false; } CmdPetition* ComunicationsManager::registerStateListener(std::unique_ptr &&inf) { std::lock_guard g(mStateListenersMutex); // Always remove closed listeners before a new one comes in ackStateListenersAndRemoveClosed(); if (stateListenersPetitions.size() >= getMaxStateListeners()) { LOG_warn << "Max number of state listeners (" << stateListenersPetitions.size() << ") reached"; return nullptr; } stateListenersPetitions.emplace_back(std::move(inf)); return stateListenersPetitions.back().get(); } int ComunicationsManager::waitForPetition() { return 0; } void ComunicationsManager::stopWaiting() { } int ComunicationsManager::get_next_comm_id() { return 0; } int ComunicationsManager::getMaxStateListeners() const { return 200; // default value } void ComunicationsManager::ackStateListenersAndRemoveClosed() { informStateListeners("ack"); } bool ComunicationsManager::informStateListeners(const string &s) { std::lock_guard g(mStateListenersMutex); for (auto it = stateListenersPetitions.begin(); it != stateListenersPetitions.end();) { if (informStateListener(it->get(), s + (char) 0x1F) < 0) { it = stateListenersPetitions.erase(it); continue; } ++it; } return !stateListenersPetitions.empty(); } void ComunicationsManager::informStateListenerByClientId(const string &s, int clientID) { std::lock_guard g(mStateListenersMutex); for (auto it = stateListenersPetitions.begin(); it != stateListenersPetitions.end(); ++it) { if (clientID == (*it)->clientID) { if (informStateListener(it->get(), s + (char) 0x1F) < 0) { stateListenersPetitions.erase(it); } return; } } } int ComunicationsManager::informStateListener(CmdPetition *inf, const string &s) { return 0; } void ComunicationsManager::returnAndClosePetition(std::unique_ptr inf, OUTSTRINGSTREAM *s, int outCode) { } /** * @brief getPetition * @return pointer to new CmdPetition. Petition returned must be properly deleted (this can be calling returnAndClosePetition) */ std::unique_ptr ComunicationsManager::getPetition() { return std::make_unique(); } int ComunicationsManager::getConfirmation(CmdPetition *inf, string message) { return MCMDCONFIRM_NO; } std::string ComunicationsManager::getUserResponse(CmdPetition *inf, string message) { return string(); } void CmdPetition::setLine(std::string_view line) { mLine = line; } std::string_view CmdPetition::getLine() const { return mLine; } std::string_view CmdPetition::getUniformLine() const { return ltrim(std::string_view(mLine), 'X'); } std::string CmdPetition::getRedactedLine() const { const char* doNotRedactEnv = getenv("MEGACMD_DO_NOT_REDACT_LINES"); if (doNotRedactEnv) { return mLine; } static const std::string redacted = "$1"; static const std::string asterisks = "$1********"; static const std::regex fullCommandRegex(R"(^((X?)(passwd|login|confirm|confirmcancel)\s+).*$)"); static const std::regex passwordRegex(R"((--password=)("[^"]+"|'[^']+'|\S+))"); static const std::regex authRegex(R"((--auth-(code|key)=)\S+)"); static const std::regex linkRegex(R"((https://mega\.nz/(file|folder)/[^#]+#)\S+)"); static const std::regex oldLinkRegex(R"((https://mega\.nz/#F?![^!]+#)\S+)"); static const std::regex encryptedLinkRegex(R"((https://mega\.nz/#P!)\S+)"); if (std::regex_match(mLine, fullCommandRegex)) { return std::regex_replace(mLine, fullCommandRegex, redacted); } std::string output = mLine; output = std::regex_replace(output, passwordRegex, asterisks); output = std::regex_replace(output, authRegex, asterisks); output = std::regex_replace(output, linkRegex, asterisks); output = std::regex_replace(output, oldLinkRegex, asterisks); output = std::regex_replace(output, encryptedLinkRegex, asterisks); return output; } bool CmdPetition::isFromCmdShell() const { return startsWith(mLine, "X"); } MegaThread *CmdPetition::getPetitionThread() const { return petitionThread; } void CmdPetition::setPetitionThread(MegaThread *value) { petitionThread = value; } }//end namespace MEGAcmd-2.5.2_Linux/src/comunicationsmanager.h000066400000000000000000000071671516543156300212660ustar00rootroot00000000000000/** * @file src/comunicationsmanager.h * @brief MEGAcmd: Communications manager non supporting non-interactive mode * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef COMUNICATIONSMANAGER_H #define COMUNICATIONSMANAGER_H #include "megacmd.h" #include "megacmdcommonutils.h" namespace megacmd { class CmdPetition { std::string mLine; public: mega::MegaThread *petitionThread = nullptr; int clientID = -27; bool clientDisconnected = false; virtual ~CmdPetition() = default; void setLine(std::string_view line); std::string_view getLine() const; // Remove the starting 'X' if present (petitions coming from interactive mode) std::string_view getUniformLine() const; // Remove possible confidential info from the line std::string getRedactedLine() const; bool isFromCmdShell() const; mega::MegaThread *getPetitionThread() const; void setPetitionThread(mega::MegaThread *value); virtual std::string getPetitionDetails() const { return {}; } }; class ComunicationsManager { private: fd_set fds; std::recursive_mutex mStateListenersMutex; std::vector> stateListenersPetitions; public: ComunicationsManager(); virtual ~ComunicationsManager() = default; virtual bool receivedPetition(); virtual CmdPetition *registerStateListener(std::unique_ptr &&inf); virtual int waitForPetition(); virtual void stopWaiting(); virtual int get_next_comm_id(); virtual int getMaxStateListeners() const; void ackStateListenersAndRemoveClosed(); /** * @brief returnAndClosePetition * It will clean struct and close the socket within */ virtual void returnAndClosePetition(std::unique_ptr inf, OUTSTRINGSTREAM *s, int); virtual void sendPartialOutput(CmdPetition *inf, OUTSTRING *s) = 0; virtual void sendPartialOutput(CmdPetition *inf, char *s, size_t size, bool binaryContents = false) = 0; virtual void sendPartialError(CmdPetition *inf, OUTSTRING *s) = 0; virtual void sendPartialError(CmdPetition *inf, char *s, size_t size, bool binaryContents = false) = 0; /** * @brief Sends an status message (e.g. prompt:who@/new/prompt:) to all registered listeners * @param s * @returns if state listeners left */ bool informStateListeners(const std::string &s); void informStateListenerByClientId(const std::string &s, int clientID); /** * @brief informStateListener * @param inf This contains the petition that originated the register. It should contain the implementation details that identify a listener * (e.g. In a socket implementation, the socket identifier) * @param s * @return -1 if connection closed by listener (removal required) */ virtual int informStateListener(CmdPetition *inf, const std::string &s); /** * @brief getPetition * @return pointer to new CmdPetition. Petition returned must be properly deleted (this can be calling returnAndClosePetition) */ virtual std::unique_ptr getPetition(); virtual int getConfirmation(CmdPetition *inf, std::string message); virtual std::string getUserResponse(CmdPetition *inf, std::string message); }; } //end namespace #endif // COMUNICATIONSMANAGER_H MEGAcmd-2.5.2_Linux/src/comunicationsmanagerfilesockets.cpp000066400000000000000000000376361516543156300240610ustar00rootroot00000000000000/** * @file src/comunicationsmanagerfilesockets.cpp * @brief MEGAcmd: Communications manager using Network Sockets * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdcommonutils.h" #ifndef WIN32 #include "comunicationsmanagerfilesockets.h" #include "megacmdutils.h" #include #include #include #ifdef __MACH__ #define MSG_NOSIGNAL 0 #endif #ifndef SOCKET_ERROR #define SOCKET_ERROR -1 #endif using namespace mega; namespace megacmd { ComunicationsManagerFileSockets::ComunicationsManagerFileSockets() { count = 0; mHasPetition = false; initialize(); } int ComunicationsManagerFileSockets::initialize() { auto socketPath = getOrCreateSocketPath(true); struct sockaddr_un addr; if (socketPath.empty()) { LOG_fatal << "Could not create runtime directory for socket file: " << strerror(errno); } if (socketPath.size() >= (ARRAYSIZE(addr.sun_path) - 1)) { LOG_fatal << "Server socket path is too long: '" << socketPath << "'. Exceeds " << ARRAYSIZE(addr.sun_path) - 1 << " max allowance"; return -1; } sockfd = socket(AF_UNIX, SOCK_STREAM, 0); int errno_saved = errno; if (sockfd < 0) { LOG_fatal << "ERROR opening socket"; return errno_saved; } if (fcntl(sockfd, F_SETFD, FD_CLOEXEC) == -1) { LOG_err << "ERROR setting CLOEXEC to socket: " << errno; } socklen_t saddrlen = sizeof( addr ); memset(&addr, 0, sizeof( addr )); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, socketPath.c_str(), socketPath.size()); unlink(addr.sun_path); LOG_debug << "Binding socket to path " << socketPath; if (::bind(sockfd, (struct sockaddr *)&addr, saddrlen)) { if (errno == EADDRINUSE) { LOG_warn << "ERROR on binding socket: " << socketPath << ": Already in use."; } else { LOG_fatal << "ERROR on binding socket: " << socketPath << ": " << strerror(errno); } close(sockfd); sockfd = -1; } else { LOG_debug << "Listening for commands at socket path " << socketPath; int returned = listen(sockfd, 150); if (returned) { LOG_fatal << "ERROR on listen socket initializing communications manager: " << socketPath << ": " << strerror(errno); close(sockfd); sockfd = -1; return errno; } } return 0; } bool ComunicationsManagerFileSockets::receivedPetition() { return mHasPetition; } int ComunicationsManagerFileSockets::waitForPetition() { if (sockfd < 0 || sockfd >= FD_SETSIZE) { LOG_fatal << "Invalid socket descriptor: " << sockfd; mHasPetition = false; return EBADF; } fd_set fds; FD_ZERO(&fds); FD_SET(sockfd, &fds); int rc = select(FD_SETSIZE, &fds, NULL, NULL, NULL); if (rc < 0) { if (errno != EINTR) //syscall { LOG_fatal << "Error at select: " << errno; mHasPetition = false; return errno; } } mHasPetition.store(FD_ISSET(sockfd, &fds) != 0); return 0; } void ComunicationsManagerFileSockets::stopWaiting() { #ifdef _WIN32 shutdown(sockfd,SD_BOTH); #else LOG_verbose << "Shutting down main socket "; if (shutdown(sockfd,SHUT_RDWR) == -1) { //shutdown failed. we need to send something to the blocked thread so as to wake up from select int clientsocket = socket(AF_UNIX, SOCK_STREAM, 0); auto socketPath = getOrCreateSocketPath(false); LOG_info << "listening at " << socketPath; if (clientsocket < 0 ) { LOG_err << "ERROR opening client socket to exit select: " << errno; close (sockfd); } else { if (fcntl(clientsocket, F_SETFD, FD_CLOEXEC) == -1) { LOG_err << "ERROR setting CLOEXEC to socket: " << errno; } struct sockaddr_un addr; if (socketPath.size() >= (ARRAYSIZE(addr.sun_path) - 1)) { LOG_fatal << "Server socket path is too long: '" << socketPath << "'"; return; } memset(&addr, 0, sizeof( addr )); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, socketPath.c_str(), socketPath.size()); if (::connect(clientsocket, (struct sockaddr*)&addr, sizeof( addr )) != -1) { if (send(clientsocket,"no matter",1,MSG_NOSIGNAL) == -1) { LOG_err << "ERROR sending via client socket to exit select: " << errno; close (sockfd); } close(clientsocket); } else { LOG_err << "ERROR connecting client socket to exit select: " << errno; close (sockfd); } } } LOG_verbose << "Main socket shut down"; #endif } CmdPetition* ComunicationsManagerFileSockets::registerStateListener(std::unique_ptr &&inf) { const int socket = ((CmdPetitionPosixSockets*) inf.get())->outSocket; LOG_debug << "Registering state listener petition with socket: " << socket; #ifndef NDEBUG // let's not be gentle with state listener sockets to prevent frozen clients from stopping the server const timeval timeout { .tv_sec = 10, .tv_usec = 0}; if (setsockopt(socket, SOL_SOCKET, SO_SNDTIMEO, &timeout, sizeof(timeout)) < 0) { LOG_err << "ERROR setting state listener socket timeout: " << errno; } #endif return ComunicationsManager::registerStateListener(std::move(inf)); } int ComunicationsManagerFileSockets::getMaxStateListeners() const { static int maxListenersAllowed = [this](){ struct rlimit limit; if (getrlimit(RLIMIT_NOFILE, &limit) != 0) { LOG_err << "Failed to get ulimit -n (errno: " << errno << "); falling back to max state listeners default"; return ComunicationsManager::getMaxStateListeners(); } int systemNumFilesLimit = static_cast(limit.rlim_cur); int maxListeners = systemNumFilesLimit - std::max(100, static_cast(systemNumFilesLimit * 0.20)); // leave 20% or 100 file descriptors for libraries and other fds: maxListeners = std::min(maxListeners, static_cast(FD_SETSIZE * 0.4)); // we don't want to use fd with numbers > 1024: select will not digest them well: lets play a safe 60% margin. return std::max(2/*minimum requirement*/, maxListeners); // maxListeners may be negative based on above calculations (unexpected). Let's play our chances of survival despite that. }(); return maxListenersAllowed; } /** * @brief returnAndClosePetition * I will clean struct and close the socket within */ void ComunicationsManagerFileSockets::returnAndClosePetition(std::unique_ptr inf, OUTSTRINGSTREAM *s, int outCode) { const int socket = ((CmdPetitionPosixSockets *) inf.get())->outSocket; assert(socket != -1); LOG_verbose << "Output to write in socket " << socket; if (socket == -1) { LOG_fatal << "Return and close: not valid outsocket " << socket; return; } string sout = s->str(); auto n = send(socket, &outCode, sizeof(outCode), MSG_NOSIGNAL); if (n < 0) { LOG_err << "ERROR writing output Code to socket: " << errno; } if (sout.empty()) { return; // socket shutdown will send EOF (0 bytes upon recv) } n = send(socket, sout.data(), sout.size(), MSG_NOSIGNAL); if (n < 0) { LOG_err << "ERROR writing to socket: " << errno; } } void ComunicationsManagerFileSockets::sendPartialOutput(CmdPetition *inf, OUTSTRING *s) { sendPartialOutputImpl(inf, s->data(), s->size(), false/*never binary*/, false/*not error*/); } void ComunicationsManagerFileSockets::sendPartialOutput(CmdPetition *inf, char *s, size_t size, bool binaryContents) { return sendPartialOutputImpl(inf, s, size, binaryContents, false); } void ComunicationsManagerFileSockets::sendPartialError(CmdPetition *inf, OUTSTRING *s) { sendPartialOutputImpl(inf, s->data(), s->size(), false/*never binary*/, true/*error*/); } void ComunicationsManagerFileSockets::sendPartialError(CmdPetition *inf, char *s, size_t size, bool binaryContents) { return sendPartialOutputImpl(inf, s, size, binaryContents, true); } void ComunicationsManagerFileSockets::sendPartialOutputImpl(CmdPetition *inf, char *s, size_t size, bool binaryContents, bool sendAsError) { if (inf->clientDisconnected) { return; } int connectedsocket = ((CmdPetitionPosixSockets *)inf)->outSocket; assert(connectedsocket != -1); if (connectedsocket == -1) { std::cerr << "Return and close: no valid outsocket " << ((CmdPetitionPosixSockets *)inf)->outSocket << endl; return; } if (!binaryContents && !isValidUtf8(s, size)) { std::cerr << "Attempt to sendPartialOutput of invalid utf8 of size " << size << std::endl; ASSERT_UTF8_BREAK("Attempt to sendPartialOutput of invalid utf8"); return; } if (size) { int outCode = sendAsError ? MCMD_PARTIALERR : MCMD_PARTIALOUT; auto n = send(connectedsocket, (void*)&outCode, sizeof( outCode ), MSG_NOSIGNAL); if (n < 0) { std::cerr << "ERROR writing MCMD_PARTIALOUT/MCMD_PARTIALERR to socket: " << errno << endl; if (errno == EPIPE) { std::cerr << "WARNING: Client disconnected, the rest of the output will be discarded" << endl; inf->clientDisconnected = true; } return; } n = send(connectedsocket, (void*)&size, sizeof( size ), MSG_NOSIGNAL); if (n < 0) { std::cerr << "ERROR writing size of partial output to socket: " << errno << endl; return; } n = send(connectedsocket, s, size, MSG_NOSIGNAL); // for some reason without the max recv never quits in the client for empty responses if (n < 0) { std::cerr << "ERROR writing to socket partial output: " << errno << endl; return; } } } int ComunicationsManagerFileSockets::informStateListener(CmdPetition *inf, const std::string &s) { if (!isValidUtf8(s)) { LOG_err << "Attempt to write an invalid utf-8 string of size " << s.size(); ASSERT_UTF8_BREAK("Attempt to write an invalid utf-8 string"); return 0; } std::lock_guard g(informerMutex); LOG_verbose << "Inform State Listener: Output to write in socket " << ((CmdPetitionPosixSockets *)inf)->outSocket << ": <<" << s << ">>"; int connectedsocket = ((CmdPetitionPosixSockets *)inf)->outSocket; assert(connectedsocket != -1); if (connectedsocket == -1) { LOG_err << "Informing state listener: Not valid on outsocket " << ((CmdPetitionPosixSockets *)inf)->outSocket; return 0; } #ifdef __MACH__ #define MSG_NOSIGNAL 0 #endif auto n = send(connectedsocket, s.data(), s.size(), MSG_NOSIGNAL); if (n < 0) { if (errno == EPIPE) //socket closed { LOG_verbose << "Unregistering no longer listening client. Original petition: " << inf->getRedactedLine(); return -1; } else if (errno == EAGAIN || errno == EWOULDBLOCK) // timed out { LOG_warn << "Unregistering timed out listening client. Original petition: " << inf->getRedactedLine(); return -1; } else { LOG_err << "ERROR writing to socket: " << errno; } } return 0; } /** * @brief getPetition * @return pointer to new CmdPetitionPosix. Petition returned must be properly deleted (this can be calling returnAndClosePetition) */ std::unique_ptr ComunicationsManagerFileSockets::getPetition() { auto inf = std::make_unique(); static socklen_t clilen = sizeof(cli_addr); int newsockfd = accept(sockfd, (struct sockaddr*) &cli_addr, &clilen); if (newsockfd < 0) { if (errno == EMFILE) { LOG_fatal << "ERROR on accept at getPetition: TOO many open files."; ackStateListenersAndRemoveClosed(); } else { LOG_fatal << "ERROR on accept at getPetition: " << errno; } sleep(1); inf->setLine("ERROR"); return inf; } if (fcntl(newsockfd, F_SETFD, FD_CLOEXEC) == -1) { LOG_err << "ERROR setting CLOEXEC to socket: " << errno; } string wholepetition; int n = read(newsockfd, buffer, 1023); while(n == 1023) { unsigned long int total_available_bytes; if (-1 == ioctl(newsockfd, FIONREAD, &total_available_bytes)) { LOG_err << "Failed to PeekNamedPipe. errno: " << errno; break; } if (total_available_bytes == 0) { break; } buffer[n] = '\0'; wholepetition.append(buffer); n = read(newsockfd, buffer, 1023); } if (n >=0 ) { buffer[n] = '\0'; wholepetition.append(buffer); } if (n < 0) { LOG_fatal << "ERROR reading from socket at getPetition: " << errno; inf->setLine("ERROR"); close(newsockfd); return inf; } inf->outSocket = newsockfd; inf->setLine(wholepetition); return inf; } int ComunicationsManagerFileSockets::getConfirmation(CmdPetition *inf, string message) { int connectedsocket = ((CmdPetitionPosixSockets *)inf)->outSocket; assert(connectedsocket != -1); if (connectedsocket == -1) { LOG_fatal << "Getting Confirmation: invalid outsocket " << ((CmdPetitionPosixSockets *)inf)->outSocket; return false; } int outCode = MCMD_REQCONFIRM; auto n = send(connectedsocket, (void*)&outCode, sizeof( outCode ), MSG_NOSIGNAL); if (n < 0) { LOG_err << "ERROR writing output Code to socket: " << errno; } n = send(connectedsocket, message.data(), max(1,(int)message.size()), MSG_NOSIGNAL); // for some reason without the max recv never quits in the client for empty responses if (n < 0) { LOG_err << "ERROR writing to socket: " << errno; } int response; n = recv(connectedsocket,&response, sizeof(response), MSG_NOSIGNAL); return response; } string ComunicationsManagerFileSockets::getUserResponse(CmdPetition *inf, string message) { int connectedsocket = ((CmdPetitionPosixSockets *)inf)->outSocket; assert(connectedsocket != -1); if (connectedsocket == -1) { LOG_fatal << "Getting Confirmation: Invalid outsocket " << ((CmdPetitionPosixSockets *)inf)->outSocket; return "FAILED"; } int outCode = MCMD_REQSTRING; auto n = send(connectedsocket, (void*)&outCode, sizeof( outCode ), MSG_NOSIGNAL); if (n < 0) { LOG_err << "ERROR writing output Code to socket: " << errno; } n = send(connectedsocket, message.data(), max(static_cast(1), message.size()), MSG_NOSIGNAL); // for some reason without the max recv never quits in the client for empty responses if (n < 0) { LOG_err << "ERROR writing to socket: " << errno; } string response; int BUFFERSIZE = 1024; char buffer[1025]; do{ n = recv(connectedsocket, buffer, BUFFERSIZE, MSG_NOSIGNAL); if (n) { buffer[n] = '\0'; response += buffer; } } while(n == BUFFERSIZE && n != SOCKET_ERROR); return response; } ComunicationsManagerFileSockets::~ComunicationsManagerFileSockets() { } }//end namespace #endif MEGAcmd-2.5.2_Linux/src/comunicationsmanagerfilesockets.h000066400000000000000000000057411516543156300235160ustar00rootroot00000000000000/** * @file src/comunicationsmanagerfilesockets.h * @brief MEGAcmd: Communications manager using Network Sockets * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef COMUNICATIONSMANAGERFILESOCKETS_H #define COMUNICATIONSMANAGERFILESOCKETS_H #ifndef WIN32 #include "comunicationsmanager.h" #include #include #include namespace megacmd { struct CmdPetitionPosixSockets: public CmdPetition { int outSocket = -1; virtual ~CmdPetitionPosixSockets() { shutdown(outSocket, SHUT_RDWR); close(outSocket); } std::string getPetitionDetails() const override { return "socket output: " + std::to_string(outSocket); } }; OUTSTREAMTYPE &operator<<(OUTSTREAMTYPE &os, CmdPetitionPosixSockets &p); class ComunicationsManagerFileSockets : public ComunicationsManager { private: std::atomic mHasPetition; // sockets and asociated variables int sockfd; char buffer[1024]; struct sockaddr_in serv_addr, cli_addr; // to get next socket id int count; std::mutex mtx; std::mutex informerMutex; void sendPartialOutputImpl(CmdPetition *inf, char *s, size_t size, bool binaryContents, bool sendAsError); public: ComunicationsManagerFileSockets(); int initialize(); bool receivedPetition(); int waitForPetition() override; virtual void stopWaiting(); CmdPetition* registerStateListener(std::unique_ptr &&inf) override; int getMaxStateListeners() const override; /** * @brief returnAndClosePetition * I will clean struct and close the socket within */ void returnAndClosePetition(std::unique_ptr inf, OUTSTRINGSTREAM *s, int) override; void sendPartialOutput(CmdPetition *inf, OUTSTRING *s) override; void sendPartialOutput(CmdPetition *inf, char *s, size_t size, bool binaryContents = false) override; void sendPartialError(CmdPetition *inf, OUTSTRING *s) override; void sendPartialError(CmdPetition *inf, char *s, size_t size, bool binaryContents = false) override; int informStateListener(CmdPetition *inf, const std::string &s) override; /** * @brief getPetition * @return pointer to new CmdPetitionPosix. Petition returned must be properly deleted (this can be calling returnAndClosePetition) */ std::unique_ptr getPetition() override; virtual int getConfirmation(CmdPetition *inf, std::string message); virtual std::string getUserResponse(CmdPetition *inf, std::string message); ~ComunicationsManagerFileSockets(); }; }//end namespace #endif #endif // COMUNICATIONSMANAGERPOSIX_H MEGAcmd-2.5.2_Linux/src/comunicationsmanagernamedpipes.cpp000066400000000000000000000416001516543156300236550ustar00rootroot00000000000000/** * @file src/comunicationsmanagernamedPipes.cpp * @brief MegaCMD: Communications manager using Network NamedPipes * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifdef _WIN32 #include "comunicationsmanagernamedpipes.h" #include "megacmdutils.h" #include "megacmdcommonutils.h" #include #include #include //getusername using std::wstring; #define ERRNO WSAGetLastError() using namespace mega; namespace megacmd { bool namedPipeValid(HANDLE namedPipe) { return namedPipe != INVALID_HANDLE_VALUE; } bool ComunicationsManagerNamedPipes::ended; int ComunicationsManagerNamedPipes::get_next_comm_id() { mtx->lock(); ++count; mtx->unlock(); return count; } HANDLE ComunicationsManagerNamedPipes::doCreatePipe(wstring nameOfPipe) { return CreateNamedPipeW( nameOfPipe.c_str(), // name of the pipe /*PIPE_ACCESS_DUPLEX | FILE_FLAG_WRITE_THROUGH, // 2-way pipe, synchronous PIPE_TYPE_BYTE, // send data as a byte stream */ PIPE_ACCESS_DUPLEX, PIPE_TYPE_MESSAGE, // this treats the pipe as if FILE_FLAG_WRITE_THROUGH anyhow 1, // only allow 1 instance of this pipe 0, // no outbound buffer 0, // no inbound buffer 0, // use default wait time NULL // use default security attributes ); } HANDLE ComunicationsManagerNamedPipes::create_new_namedPipe(int *pipeId) { *pipeId = get_next_comm_id(); HANDLE thepipe = INVALID_HANDLE_VALUE; wstring nameOfPipe; int attempts = 10; bool namedPipesucceded = false; while (--attempts && !namedPipesucceded) { nameOfPipe += getNamedPipeName(); if (*pipeId) { #ifdef __MINGW32__ wostringstream wos; wos << *pipeId; nameOfPipe += wos.str(); #else nameOfPipe += std::to_wstring(*pipeId); #endif } // Create a pipe to send data thepipe = doCreatePipe(nameOfPipe); if (!namedPipeValid(thepipe)) { if (errno == EMFILE) //TODO: review possible out { LOG_verbose << " Trying to reduce number of used files by sending ACK to listeners to discard disconnected ones."; ackStateListenersAndRemoveClosed(); } if (attempts !=10) { LOG_fatal << "ERROR opening namedPipe ID=" << pipeId << " errno: " << ERRNO << ". Attempts: " << attempts; } sleepMilliSeconds(500); } else { namedPipesucceded = true; } } if (!namedPipeValid(thepipe)) { return INVALID_HANDLE_VALUE; } return thepipe; } ComunicationsManagerNamedPipes::ComunicationsManagerNamedPipes() { count = 0; mtx = new std::mutex(); informerMutex = new std::mutex(); initialize(); } int ComunicationsManagerNamedPipes::initialize() { petitionready = false; wstring nameOfPipe = getNamedPipeName(); pipeGeneral = doCreatePipe(nameOfPipe); if (!namedPipeValid(pipeGeneral)) { if (ERRNO == ERROR_ACCESS_DENIED) { LOG_fatal << "ERROR initiating communications. Couldn't create NamedPipe: Access denied. Ensure there is no other instance running."; } else { LOG_fatal << "ERROR initiating communications. Couldn't create NamedPipe: " << ERRNO; } Sleep(6000); exit(1); return -1; } return 0; } bool ComunicationsManagerNamedPipes::receivedPetition() { return petitionready; } int ComunicationsManagerNamedPipes::waitForPetition() { petitionready = false; if (!ConnectNamedPipe(pipeGeneral, NULL)) { if (ERRNO == ERROR_PIPE_CONNECTED) { LOG_debug << "Client arrived first when connecting to pipeGeneral."; } else { LOG_fatal << "ERROR on connecting to namedPipe. errno: " << ERRNO; sleepMilliSeconds(1000); pipeGeneral = INVALID_HANDLE_VALUE; return ERRNO; } } petitionready = true; return 0; } void ComunicationsManagerNamedPipes::stopWaiting() { wstring nameOfPipe = getNamedPipeName(); DeleteFile(nameOfPipe.c_str()); // without this, CloseHandle will hang, and loop will be stuck in ConnectNamedPipe if (pipeGeneral != INVALID_HANDLE_VALUE) { CloseHandle(pipeGeneral); } } CmdPetition* ComunicationsManagerNamedPipes::registerStateListener(std::unique_ptr &&inf) { LOG_debug << "Registering state listener petition with namedPipe: " << ((CmdPetitionNamedPipes*) inf.get())->outNamedPipe; return ComunicationsManager::registerStateListener(std::move(inf)); } //TODO: implement unregisterStateListener, not 100% necesary, since when a state listener is not accessible it is unregistered (to deal with sudden deaths). // also, unregistering might not be straight forward since we need to correlate the thread doing the unregistration with the one who registered. /** * @brief returnAndClosePetition * I will clean struct and close the namedPipe within */ void ComunicationsManagerNamedPipes::returnAndClosePetition(std::unique_ptr inf, OUTSTRINGSTREAM *s, int outCode) { HANDLE outNamedPipe = ((CmdPetitionNamedPipes*) inf.get())->outNamedPipe; LOG_verbose << "Output to write in namedPipe " << *(long*)(&outNamedPipe); bool connectsucceeded = false; int attempts = 10; while (--attempts && !connectsucceeded) { if (!ConnectNamedPipe(outNamedPipe, NULL)) { if (ERRNO == ERROR_PIPE_CONNECTED) { LOG_verbose << "Client arrived first when connecting to namedPipe " << outNamedPipe; connectsucceeded = true; break; } else if (ERRNO == ERROR_NO_DATA) { break; } else { // Problem: this, caused by a client shutdown, entails trying to sendPartialOutput again (via MEGAcmdLogger::formatLogToStream) LOG_err << "ERROR on connecting to namedPipe " << outNamedPipe << ". errno: " << ERRNO << ". Attempts: " << attempts; assert(false); } sleepMilliSeconds(50); } else { connectsucceeded = true; } } if (!connectsucceeded) { LOG_err << "Return and close: Unable to connect on outnamedPipe " << outNamedPipe << " error: " << ERRNO; return; } OUTSTRING sout = s->str(); DWORD n; if (!WriteFile(outNamedPipe,(const char*)&outCode, sizeof(outCode), &n, NULL)) { LOG_err << "ERROR writing output Code to namedPipe: " << ERRNO; } string sutf8; localwtostring(&sout,&sutf8); if (!WriteFile(outNamedPipe,sutf8.data(), max(1,(int)sutf8.size()), &n, NULL)) // client does not like empty responses { LOG_err << "ERROR writing to namedPipe: " << ERRNO; } DisconnectNamedPipe(outNamedPipe); } void ComunicationsManagerNamedPipes::sendPartialOutput(CmdPetition *inf, OUTSTRING *s) { string sutf8; localwtostring(s, &sutf8); return sendPartialOutputImpl(inf, sutf8.data(), sutf8.size(), false/*never binary*/, false/*not error*/); } void ComunicationsManagerNamedPipes::sendPartialOutput(CmdPetition *inf, char *s, size_t size, bool binaryContents) { return sendPartialOutputImpl(inf, s, size, binaryContents, false); } void ComunicationsManagerNamedPipes::sendPartialError(CmdPetition *inf, OUTSTRING *s) { string sutf8; localwtostring(s, &sutf8); return sendPartialOutputImpl(inf, sutf8.data(), sutf8.size(), false/*never binary*/, true/*error*/); } void ComunicationsManagerNamedPipes::sendPartialError(CmdPetition *inf, char *s, size_t size, bool binaryContents) { return sendPartialOutputImpl(inf, s, size, binaryContents, true); } void ComunicationsManagerNamedPipes::sendPartialOutputImpl(CmdPetition *inf, char *s, size_t size, bool binaryContents, bool sendAsError) { if (inf->clientDisconnected) { return; } HANDLE outNamedPipe = ((CmdPetitionNamedPipes *)inf)->outNamedPipe; if (!binaryContents &&!isValidUtf8(s, size)) { std::cerr << "Attempt to sendPartialOutput of invalid utf8 of size " << size << std::endl; ASSERT_UTF8_BREAK("Attempt to sendPartialOutput of invalid utf8"); return; } bool connectsucceeded = false; int attempts = 10; while (--attempts && !connectsucceeded) { if (!ConnectNamedPipe(outNamedPipe, NULL)) { if (ERRNO == ERROR_PIPE_CONNECTED) { //cerr << "Client arrived first when connecting to namedPipe " << outNamedPipe << endl; connectsucceeded = true; break; } else if (ERRNO == ERROR_NO_DATA) { break; } else { cerr << "ERROR on connecting to namedPipe " << outNamedPipe << ". errno: " << ERRNO << ". Attempts: " << attempts << endl; assert(false); } sleepMilliSeconds(50); } else { connectsucceeded = true; } } if (!connectsucceeded) { cerr << "sendPartialOutput: Unable to connect on outnamedPipe " << outNamedPipe << " error: " << ERRNO << endl; if (ERRNO == ERROR_NO_DATA) { std::cerr << "WARNING: Client disconnected, the rest of the output will be discarded" << endl; inf->clientDisconnected = true; } return; } int outCode = sendAsError ? MCMD_PARTIALERR : MCMD_PARTIALOUT; DWORD n; if (!WriteFile(outNamedPipe,(const char*)&outCode, sizeof(outCode), &n, NULL)) { std::cerr << "ERROR writing output Code to namedPipe: " << ERRNO << std::endl; if (ERRNO == ERROR_NO_DATA) { std::cerr << "WARNING: Client disconnected, the rest of the output will be discarded" << std::endl; inf->clientDisconnected = true; } return; } size_t thesize = size > 1 ? size : 1; // client does not like empty responses if (!WriteFile(outNamedPipe,(const char*)&thesize, sizeof(thesize), &n, NULL)) { std::cerr << "ERROR writing output Code to namedPipe: " << ERRNO << std::endl; return; } if (!WriteFile(outNamedPipe,s, DWORD(thesize), &n, NULL)) { std::cerr << "ERROR writing to namedPipe: " << ERRNO << std::endl; } } int ComunicationsManagerNamedPipes::informStateListener(CmdPetition *inf, const string &s) { if (!isValidUtf8(s)) { LOG_err << "Attempt to write an invalid utf8 string of size " << s.size(); ASSERT_UTF8_BREAK("Attempt to write an invalid utf8 string"); return 0; } std::lock_guard g(*informerMutex); LOG_verbose << "Inform State Listener: Output to write in namedPipe " << ((CmdPetitionNamedPipes *)inf)->outNamedPipe << ": <<" << s << ">>"; HANDLE outNamedPipe = ((CmdPetitionNamedPipes *)inf)->outNamedPipe; if (!ConnectNamedPipe(outNamedPipe, NULL)) { if (ERRNO == ERROR_PIPE_CONNECTED) { LOG_debug << "Client arrived first when connecting to namedPipe to inform state. " << outNamedPipe; } else if(ERRNO == ERROR_NO_DATA) { LOG_debug << "Client probably disconnected: " << outNamedPipe; return -1; } else { LOG_fatal << "ERROR on connecting to namedPipe " << outNamedPipe << ". errno: " << ERRNO; return -1; } } DWORD n; if (!WriteFile(outNamedPipe, s.data(), DWORD(s.size()), &n, NULL)) { if (ERRNO == 32 || ERRNO == 109 || (ERRNO == 232 && s == "ack")) //namedPipe closed | pipe has been ended { LOG_debug << "namedPipe closed. Client probably disconnected. Original petition: " << inf->getRedactedLine(); return -1; } else { LOG_err << "ERROR writing to namedPipe to inform state: " << ERRNO; } } return 0; } /** * @brief getPetition * @return pointer to new CmdPetitionPosix. Petition returned must be properly deleted (this can be calling returnAndClosePetition) */ std::unique_ptr ComunicationsManagerNamedPipes::getPetition() { auto inf = std::make_unique(); wstring wread; wchar_t wbuffer[1024]= {}; DWORD n; //ZeroMemory( wbuffer, sizeof(wbuffer)); bool readok = ReadFile(pipeGeneral, wbuffer, 1023*sizeof(wchar_t), &n, NULL ); while(readok && n == 1023*sizeof(wchar_t)) { DWORD total_available_bytes; if (FALSE == PeekNamedPipe(pipeGeneral,0,0,0,&total_available_bytes,0)) { LOG_err << "Failed to PeekNamedPipe. errno: L" << ERRNO; break; } if (total_available_bytes == 0) { break; } wbuffer[n/sizeof(wchar_t)]=0; wread.append(wbuffer); readok = ReadFile(pipeGeneral, wbuffer, 1023*sizeof(wchar_t), &n, NULL ); } if (readok) { wbuffer[n/sizeof(wchar_t)]=0; wread.append(wbuffer); } if (!readok) { LOG_err << "Failed to read petition from named pipe. errno: L" << ERRNO; inf->setLine("ERROR"); return inf; } string receivedutf8; localwtostring(&wread,&receivedutf8); int namedPipe_id = 0; // this value shouldn't matter inf->outNamedPipe = create_new_namedPipe(&namedPipe_id); if (!namedPipeValid(inf->outNamedPipe) || !namedPipe_id) { LOG_fatal << "ERROR creating output namedPipe at getPetition"; inf->setLine("ERROR"); return inf; } if(!WriteFile(pipeGeneral,(const char*)&namedPipe_id, sizeof( namedPipe_id ), &n, NULL)) { LOG_fatal << "ERROR writing to namedPipe at getPetition: ERRNO = " << ERRNO; inf->setLine("ERROR"); return inf; } if (!DisconnectNamedPipe(pipeGeneral) ) { LOG_fatal << " Error disconnecting from general pip. errno: " << ERRNO; } inf->setLine(receivedutf8); return inf; } int ComunicationsManagerNamedPipes::getConfirmation(CmdPetition *inf, string message) { HANDLE outNamedPipe = ((CmdPetitionNamedPipes *)inf)->outNamedPipe; int outCode = MCMD_REQCONFIRM; DWORD n; if (!WriteFile(outNamedPipe, (const char *)&outCode, sizeof( outCode ), &n, NULL)) { LOG_err << "ERROR writing output Code to namedPipe: " << ERRNO; } if (!WriteFile(outNamedPipe, message.data(), max(1,(int)message.size()), &n, NULL) ) { LOG_err << "ERROR writing to namedPipe: " << ERRNO; } int response = MCMDCONFIRM_NO; if (!ReadFile(outNamedPipe,(char *)&response, sizeof(response), &n, NULL)) { LOG_err << "ERROR receiving confirmation response: " << ERRNO; } return response; } string ComunicationsManagerNamedPipes::getUserResponse(CmdPetition *inf, string message) { HANDLE outNamedPipe = ((CmdPetitionNamedPipes *)inf)->outNamedPipe; int outCode = MCMD_REQSTRING; DWORD n; if (!WriteFile(outNamedPipe, (const char *)&outCode, sizeof( outCode ), &n, NULL)) { LOG_err << "ERROR writing output Code to namedPipe: " << ERRNO; } if (!WriteFile(outNamedPipe, message.data(), max(1,(int)message.size()), &n, NULL) ) { LOG_err << "ERROR writing to namedPipe: " << ERRNO; } wstring wread; wchar_t wbuffer[1024]= {}; //ZeroMemory( wbuffer, sizeof(wbuffer)); bool readok = ReadFile(outNamedPipe, wbuffer, 1023*sizeof(wchar_t), &n, NULL ); while(readok && n == 1023*sizeof(wchar_t)) { DWORD total_available_bytes; if (FALSE == PeekNamedPipe(outNamedPipe,0,0,0,&total_available_bytes,0)) { LOG_err << "Failed to PeekNamedPipe. errno: L" << ERRNO; break; } if (total_available_bytes == 0) { break; } wbuffer[n/sizeof(wchar_t)]=0; wread.append(wbuffer); readok = ReadFile(outNamedPipe, wbuffer, 1023*sizeof(wchar_t), &n, NULL ); } if (readok) { wbuffer[n/sizeof(wchar_t)]=0; wread.append(wbuffer); } if (!readok) { LOG_err << "Failed to read user response from named pipe. errno: L" << ERRNO; return "FAILED"; } string receivedutf8; localwtostring(&wread,&receivedutf8); return receivedutf8; } ComunicationsManagerNamedPipes::~ComunicationsManagerNamedPipes() { delete mtx; delete informerMutex; } }//end namespace #endif MEGAcmd-2.5.2_Linux/src/comunicationsmanagernamedpipes.h000066400000000000000000000064461516543156300233330ustar00rootroot00000000000000/** * @file src/comunicationsmanagerportnamedPipes.h * @brief MegaCMD: Communications manager using Network NamedPipes * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef COMUNICATIONSMANAGERNAMEDPIPES_H #define COMUNICATIONSMANAGERNAMEDPIPES_H #include "comunicationsmanager.h" #include #include #include #define MEGACMDINITIALPORTNUMBER 12300 namespace megacmd { struct CmdPetitionNamedPipes: public CmdPetition { HANDLE outNamedPipe; virtual ~CmdPetitionNamedPipes() { if (outNamedPipe != INVALID_HANDLE_VALUE) { CloseHandle(outNamedPipe); } } std::string getPetitionDetails() const override { std::ostringstream details; details << "namedPipe output: " << outNamedPipe; return details.str(); } }; OUTSTREAMTYPE &operator<<(OUTSTREAMTYPE &os, CmdPetitionNamedPipes &p); class ComunicationsManagerNamedPipes : public ComunicationsManager { private: bool petitionready; // namedPipes and asociated variables HANDLE pipeGeneral; static bool ended; char buffer[1024]; // to get next namedPipe id int count; std::mutex *mtx; std::mutex *informerMutex; /** * @brief create_new_namedPipe * The caller is responsible for deleting the newly created namedPipe * @return */ HANDLE create_new_namedPipe(int *pipeId); void sendPartialOutputImpl(CmdPetition *inf, char *s, size_t size, bool binaryContents, bool sendAsError); public: ComunicationsManagerNamedPipes(); int initialize(); bool receivedPetition(); int waitForPetition() override; virtual void stopWaiting(); int get_next_comm_id(); CmdPetition* registerStateListener(std::unique_ptr &&inf) override; /** * @brief returnAndClosePetition * I will clean struct and close the namedPipe within */ void returnAndClosePetition(std::unique_ptr inf, OUTSTRINGSTREAM *s, int) override; void sendPartialOutput(CmdPetition *inf, OUTSTRING *s) override; void sendPartialOutput(CmdPetition *inf, char *s, size_t size, bool binaryContents = false) override; void sendPartialError(CmdPetition *inf, OUTSTRING *s) override; void sendPartialError(CmdPetition *inf, char *s, size_t size, bool binaryContents = false) override; int informStateListener(CmdPetition *inf, const std::string &s) override; /** * @brief getPetition * @return pointer to new CmdPetitionPosix. Petition returned must be properly deleted (this can be calling returnAndClosePetition) */ std::unique_ptr getPetition() override; virtual int getConfirmation(CmdPetition *inf, std::string message); virtual std::string getUserResponse(CmdPetition *inf, std::string message); ~ComunicationsManagerNamedPipes(); HANDLE doCreatePipe(std::wstring nameOfPipe); }; }//end namespace #endif // COMUNICATIONSMANAGERPOSIX_H MEGAcmd-2.5.2_Linux/src/configurationmanager.cpp000066400000000000000000000726721516543156300216200ustar00rootroot00000000000000/** * @file src/configurationmanager.cpp * @brief MEGAcmd: configuration manager * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdcommonutils.h" #include "configurationmanager.h" #include "megacmdversion.h" #include "megacmdutils.h" #include "listeners.h" #include "updater/Preferences.h" #include "sync_ignore.h" #include #ifndef ERRNO #ifdef _WIN32 #include #define ERRNO WSAGetLastError() #else #define ERRNO errno #endif #endif #ifdef _WIN32 #include //SHGetFolderPath #include //PathAppend #include #else #include //getpwuid_r #include //flock #endif #ifdef _WIN32 #define PATH_MAX_LOCAL_BACKUP MAX_PATH #else #define PATH_MAX_LOCAL_BACKUP PATH_MAX #endif using namespace mega; using namespace std; namespace megacmd { static const char* const LOCK_FILE_NAME = "lockMCMD"; #ifdef WIN32 HANDLE ConfigurationManager::mLockFileHandle; #elif defined(LOCK_EX) && defined(LOCK_NB) int ConfigurationManager::fd; #endif map ConfigurationManager::oldConfiguredSyncs; string ConfigurationManager::session; map ConfigurationManager::configuredBackups; std::recursive_mutex ConfigurationManager::settingsMutex; fs::path ConfigurationManager::getConfigFolder() { if (mConfigFolder.empty()) { ConfigurationManager::loadConfigDir(); } return mConfigFolder; } bool ConfigurationManager::getHasBeenUpdated() { return hasBeenUpdated; } static const char* const persistentmcmdconfigurationkeys[] = { "autoupdate", "updaterregistered" }; void ConfigurationManager::createFolderIfNotExisting(const fs::path &folder) { std::error_code ec; auto createdOk = fs::create_directory(folder, ec); bool alreadyExisting = !createdOk && !ec; if (alreadyExisting) { return; } LOG_debug << "Creating directory " << folder; if (!createdOk) { LOG_err << "Directory " << folder << " creation failed: " << errorCodeStr(ec); return; } #ifndef WIN32 fs::permissions(folder, fs::perms::owner_all, fs::perm_options::replace, ec); if (ec) { LOG_warn << "Failed to set permissions on new folder " << folder << ": " << errorCodeStr(ec); } #endif } void ConfigurationManager::loadConfigDir() { auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); std::lock_guard g(settingsMutex); mConfigFolder = dirs->configDirPath(); if (mConfigFolder.empty()) { LOG_fatal << "Could not get config directory path"; return; } createFolderIfNotExisting(mConfigFolder); } fs::path ConfigurationManager::getAndCreateConfigDir() { auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); const fs::path configDir = dirs->configDirPath(); if (configDir.empty()) { LOG_fatal << "Could not get config directory path"; throw std::runtime_error("Could not get config directory path"); } createFolderIfNotExisting(configDir); return configDir; } fs::path ConfigurationManager::getAndCreateRuntimeDir() { auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); const fs::path runtimeDir = dirs->runtimeDirPath(); if (runtimeDir.empty()) { LOG_fatal << "Could not get runtime directory path"; throw std::runtime_error("Could not get runtime directory path"); } createFolderIfNotExisting(runtimeDir); return runtimeDir; } fs::path ConfigurationManager::getConfigFolderSubdir(const fs::path& subdirName) { auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); const fs::path configDir = dirs->configDirPath(); assert(!configDir.empty()); fs::path configSubDir = configDir / subdirName; createFolderIfNotExisting(configSubDir); return configSubDir; } void ConfigurationManager::saveSession(const char*session) { std::lock_guard g(settingsMutex); auto configDir = getAndCreateConfigDir(); assert(!configDir.empty()); const fs::path sessionFilePath = configDir / "session"; LOG_debug << "Session file: " << sessionFilePath; ofstream fo(sessionFilePath, ios::out); if (fo.is_open()) { if (session) { fo << session; } fo.close(); } } string ConfigurationManager::saveProperty(const char *property, const char *value) { std::lock_guard g(settingsMutex); if (mConfigFolder.empty()) { loadConfigDir(); } assert(!mConfigFolder.empty()); bool found = false; const fs::path configFilePath = mConfigFolder / "megacmd.cfg"; stringstream formerlines; ifstream infile(configFilePath); string line, prevValue; while (getline(infile, line)) { if (line.length() > 0 && line[0] != '#') { string key; size_t pos = line.find("="); if (pos != string::npos) { key = line.substr(0, pos); rtrimProperty(key, ' '); if (!strcmp(key.c_str(), property) && !found) { formerlines << property << "=" << value << endl; prevValue = line.substr(pos + 1); found = true; } else { formerlines << line << endl; } } else { formerlines << line << endl; } } } ofstream fo(configFilePath); if (fo.is_open()) { fo << formerlines.str(); if (!found) { fo << property << "=" << value << endl; } fo.close(); } return prevValue; } void ConfigurationManager::migrateSyncConfig(MegaApi *api) { bool informed = false; std::map> listeners; { std::lock_guard g(settingsMutex); for (auto itr = oldConfiguredSyncs.begin(); itr != oldConfiguredSyncs.end(); itr++) { if (!informed) { LOG_debug << "copying sync config"; informed = true; } sync_struct *thesync = ((sync_struct*)( *itr ).second ); auto newListenerPair = listeners.emplace(thesync, std::make_unique(api)); api->copySyncDataToCache(thesync->localpath.c_str(), thesync->handle, nullptr, thesync->fingerprint, thesync->active, false, newListenerPair.first->second.get()); } } for (auto &lPair : listeners) { auto &thesync = lPair.first; auto &listener = lPair.second; listener->wait(); auto e = listener->getError(); if (e && e->getErrorCode() == API_OK) { removeSyncConfig(thesync); } else { LOG_err << " fail to copy old sync cache data: " << thesync->localpath; } } } void ConfigurationManager::removeSyncConfig(sync_struct *syncToRemove) { std::lock_guard g(settingsMutex); for (map::iterator itr = oldConfiguredSyncs.begin(); itr != oldConfiguredSyncs.end(); itr++) { sync_struct *thesync = ((sync_struct*)( *itr ).second ); if (thesync == syncToRemove) { oldConfiguredSyncs.erase(itr); delete thesync; ConfigurationManager::saveSyncs(&ConfigurationManager::oldConfiguredSyncs); return; } } } void ConfigurationManager::saveSyncs(map *syncsmap) { std::lock_guard g(settingsMutex); if (mConfigFolder.empty()) { loadConfigDir(); } if (!mConfigFolder.empty()) { const fs::path syncsFilePath = mConfigFolder / "syncs"; LOG_debug << "Syncs file: " << syncsFilePath; ofstream fo(syncsFilePath, ios::out | ios::binary); if (fo.is_open()) { map::iterator itr; int i = 0; if (syncsmap) { for (itr = syncsmap->begin(); itr != syncsmap->end(); ++itr, i++) { sync_struct *thesync = ((sync_struct*)( *itr ).second ); long long controlvalue = CONFIGURATIONSTOREDBYVERSION; fo.write((char*)&controlvalue, sizeof( long long )); int versionmcmd = MEGACMD_CODE_VERSION; fo.write((char*)&versionmcmd, sizeof( int )); fo.write((char*)&thesync->fingerprint, sizeof( long long )); fo.write((char*)&thesync->handle, sizeof( MegaHandle )); const char * localPath = thesync->localpath.c_str(); size_t lengthLocalPath = thesync->localpath.size(); fo.write((char*)&lengthLocalPath, sizeof( size_t )); fo.write((char*)localPath, sizeof( char ) * lengthLocalPath); } } fo.close(); } } else { LOG_err << "Couldnt access configuration folder "; } } void ConfigurationManager::saveBackups(map *backupsmap) { std::lock_guard g(settingsMutex); if (mConfigFolder.empty()) { loadConfigDir(); } if (!mConfigFolder.empty()) { const fs::path backupsFilePath = mConfigFolder / "backups"; LOG_debug << "Backups file: " << backupsFilePath; ofstream fo(backupsFilePath, ios::out | ios::binary); if (fo.is_open()) { map::iterator itr; int i = 0; if (backupsmap) { for (itr = backupsmap->begin(); itr != backupsmap->end(); ++itr, i++) { backup_struct *thebackup = ((backup_struct*)( *itr ).second ); int versionmcmd = MEGACMD_CODE_VERSION; fo.write((char*)&versionmcmd, sizeof( int )); fo.write((char*)&thebackup->handle, sizeof( MegaHandle )); const char * localPath = thebackup->localpath.c_str(); size_t lengthLocalPath = thebackup->localpath.size(); fo.write((char*)&lengthLocalPath, sizeof( size_t )); fo.write((char*)localPath, sizeof( char ) * lengthLocalPath); fo.write((char*)&thebackup->numBackups, sizeof( int )); fo.write((char*)&thebackup->period, sizeof( int64_t )); const char * speriod = thebackup->speriod.c_str(); size_t lengthLocalPeriod = thebackup->speriod.size(); fo.write((char*)&lengthLocalPeriod, sizeof( size_t )); fo.write((char*)speriod, sizeof( char ) * lengthLocalPeriod); } } fo.close(); } } else { LOG_err << "Couldnt access configuration folder "; } } void ConfigurationManager::transitionLegacyExclusionRules(MegaApi& api) { // Note that using `MegaApi::exportLegacyExclusionRules` here won't simplify much. // Since we still need to manually load all legacy rules into a vector, call `setLegacyExcludedNames`, // then call `exportLegacyExclusionRules` to generate a .megaignore file, and finally move it manually // to our location and add the .default prefix. // Since we need to have all the custom mega ignore functionality for the `mega-ignore` command anyway, // and since we also need to manually read the legacy file, it's just easier to rely on our custom // method to generate the default file. const fs::path defaultMegaIgnorePath = MegaIgnoreFile::getDefaultPath(); if (fs::exists(defaultMegaIgnorePath)) { LOG_debug << "Default .megaignore file already exists. Skipping legacy transition"; return; } const fs::path excludeFilePath = mConfigFolder / "excluded"; const fs::path hiddenExcludeFilePath = mConfigFolder / ".excluded"; if (!fs::exists(excludeFilePath)) { LOG_debug << "Missing legacy exclude file. Skipping transition"; return; } LOG_debug << "Transitioning legacy exclusion rules from " << excludeFilePath << " to " << defaultMegaIgnorePath; std::ifstream excludeFile(excludeFilePath); if (!excludeFile.is_open() || excludeFile.fail()) { LOG_err << "There was an error opening legacy exclude file " << excludeFilePath; return; } MegaIgnoreFile megaIgnoreFile(defaultMegaIgnorePath); if (!megaIgnoreFile.isValid()) { LOG_err << "There was an error opening default .megaignore file " << defaultMegaIgnorePath; return; } sendEvent(StatsManager::MegacmdEvent::TRANSITIONING_PRE_SRW_EXCLUSIONS, &api, false); std::set excludeFilters; std::vector excludePatterns; for (std::string line; getline(excludeFile, line);) { if (line.empty()) { continue; } excludePatterns.push_back(line); string filter = SyncIgnore::getFilterFromLegacyPattern(line); if (!MegaIgnoreFile::isValidFilter(filter)) { LOG_warn << "Found invalid pattern \"" << line << "\" in legacy exclude file"; continue; } excludeFilters.insert(filter); } // This ensures transition works for active syncs api.setLegacyExcludedNames(&excludePatterns); // This ensures transition works in case there are no existing syncs megaIgnoreFile.addFilters(excludeFilters); LOG_debug << "Transition of legacy exclusion rules completed successfully. Hiding legacy exclude file"; try { fs::rename(excludeFilePath, hiddenExcludeFilePath); } catch (const fs::filesystem_error& e) { LOG_err << "Could not hide legacy exclude file " << excludeFilePath << " (error: " << e.what() << ")"; } string message = "Your legacy sync exclusion rules have been ported to \"" + pathAsUtf8(defaultMegaIgnorePath) + "\"\n" + "See \"%mega-%sync-ignore\" for more info."; broadcastMessage(message, true); } void ConfigurationManager::unloadConfiguration() { std::lock_guard g(settingsMutex); for (map::iterator itr = oldConfiguredSyncs.begin(); itr != oldConfiguredSyncs.end(); ) { sync_struct *thesync = ((sync_struct*)( *itr ).second ); oldConfiguredSyncs.erase(itr++); delete thesync; } for (map::iterator itr = configuredBackups.begin(); itr != configuredBackups.end(); ) { backup_struct *thebackup = ((backup_struct*)( *itr ).second ); configuredBackups.erase(itr++); delete thebackup; } ConfigurationManager::session = string(); } void ConfigurationManager::loadsyncs() { std::lock_guard g(settingsMutex); if (mConfigFolder.empty()) { loadConfigDir(); } if (!mConfigFolder.empty()) { const fs::path syncsFilePath = mConfigFolder / "syncs"; LOG_debug << "Syncs file: " << syncsFilePath; ifstream fi(syncsFilePath, ios::in | ios::binary); if (fi.is_open()) { if (fi.fail()) { LOG_err << "fail with sync file"; } bool updateSavedFormatRequired = false; while (!( fi.peek() == EOF )) { int versioncodeStoredValues; sync_struct *thesync = new sync_struct; //Load syncs fi.read((char*)&thesync->fingerprint, sizeof( long long )); if (thesync->fingerprint == CONFIGURATIONSTOREDBYVERSION) { fi.read((char*)&versioncodeStoredValues, sizeof(int)); } else { versioncodeStoredValues = 90500; } if (versioncodeStoredValues > 90500) { fi.read((char*)&thesync->fingerprint, sizeof( long long )); } fi.read((char*)&thesync->handle, sizeof( MegaHandle )); size_t lengthLocalPath; fi.read((char*)&lengthLocalPath, sizeof( size_t )); thesync->localpath.resize(lengthLocalPath); fi.read((char*)thesync->localpath.c_str(), sizeof( char ) * lengthLocalPath); if (oldConfiguredSyncs.find(thesync->localpath) != oldConfiguredSyncs.end()) { delete oldConfiguredSyncs[thesync->localpath]; } oldConfiguredSyncs[thesync->localpath] = thesync; if (versioncodeStoredValues != MEGACMD_CODE_VERSION) { updateSavedFormatRequired = true; } } if (updateSavedFormatRequired) { ConfigurationManager::saveSyncs(&ConfigurationManager::oldConfiguredSyncs); } if (fi.bad()) { LOG_err << "fail with sync file at the end"; } fi.close(); } } } void ConfigurationManager::loadbackups() { std::lock_guard g(settingsMutex); if (mConfigFolder.empty()) { loadConfigDir(); } if (!mConfigFolder.empty()) { const fs::path backupsFilePath = mConfigFolder / "backups"; LOG_debug << "Backups file: " << backupsFilePath; ifstream fi(backupsFilePath, ios::in | ios::binary); if (fi.is_open()) { if (fi.fail()) { LOG_err << "fail with backup file"; } while (!( fi.peek() == EOF )) { backup_struct *thebackup = new backup_struct; //Load backups int versionmcmd; fi.read((char*)&versionmcmd, sizeof( int )); fi.read((char*)&thebackup->handle, sizeof( MegaHandle )); size_t lengthLocalPath; fi.read((char*)&lengthLocalPath, sizeof( size_t )); if (lengthLocalPath && lengthLocalPath <= PATH_MAX_LOCAL_BACKUP) { thebackup->localpath.resize(lengthLocalPath); fi.read((char*)thebackup->localpath.c_str(), sizeof( char ) * lengthLocalPath); fi.read((char*)&thebackup->numBackups, sizeof( int )); fi.read((char*)&thebackup->period, sizeof( int64_t )); size_t lengthLocalPeriod; fi.read((char*)&lengthLocalPeriod, sizeof( size_t )); if (lengthLocalPeriod && lengthLocalPeriod <= PATH_MAX_LOCAL_BACKUP) { thebackup->speriod.resize(lengthLocalPeriod); fi.read((char*)thebackup->speriod.c_str(), sizeof( char ) * lengthLocalPeriod); } if (configuredBackups.find(thebackup->localpath) != configuredBackups.end()) { delete configuredBackups[thebackup->localpath]; } thebackup->id = -1; //id will be set upon resumption thebackup->tag = -1; //tag will be set upon resumption configuredBackups[thebackup->localpath] = thebackup; } else { LOG_err << " Failed to restore backup info"; } } if (fi.bad()) { LOG_err << "fail with backup file at the end"; } fi.close(); } } } void ConfigurationManager::loadConfiguration(bool debug) { std::lock_guard g(settingsMutex); #ifdef _WIN32 WindowsUtf8StdoutGuard utf8Guard; #endif // SESSION const fs::path configDir = getAndCreateConfigDir(); if (!configDir.empty()) { const fs::path sessionFilePath = configDir / "session"; if (debug) { COUT << "Session file: " << sessionFilePath << std::endl; } ifstream fi(sessionFilePath, ios::in); if (fi.is_open()) { string line; getline(fi, line); { session = line; if (debug) { COUT << "Session read from configuration: " << line.substr(0, 5) << "..." << std::endl; } } fi.close(); } // Check if version has been updated. if (mConfigFolder.empty()) { loadConfigDir(); } const fs::path versionFilePath = mConfigFolder / VERSION_FILE_NAME; // Get latest version if any. string latestVersion; ifstream fiVer(versionFilePath); if (fiVer.is_open()) { fiVer >> latestVersion; fiVer.close(); } if (!latestVersion.empty() && (MEGACMD_CODE_VERSION > stol(latestVersion))) { hasBeenUpdated = true; if (debug) { COUT << "MEGAcmd has been updated." << std::endl; } } // Store current version. ofstream fo(versionFilePath, ios::out); if (fo.is_open()) { fo << MEGACMD_CODE_VERSION; fo.close(); } else { CERR << "Could not write MEGAcmd version to " << versionFilePath << std::endl; } } else { if (debug) { COUT << "Couldnt access data folder " << std::endl; } } } bool ConfigurationManager::lockExecution() { // Check for legacy lock (in config path) auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); auto configDir = dirs->configDirPath(); auto runtimeDir = getAndCreateRuntimeDir(); if (runtimeDir != configDir) { const fs::path lockFileAtConfigDir = configDir / LOCK_FILE_NAME; if (fs::is_regular_file(lockFileAtConfigDir)) { LOG_warn << "Found a lock file from a previous MEGAcmd version. Will try to acquire the lock and remove it"; bool legacyLockResult = lockExecution(configDir); if (!legacyLockResult) { LOG_err << "Failed to acquire lock from a previous version. You may need to ensure there is " "no MEGAcmd Server running and try again or manually remove lock file: " << lockFileAtConfigDir; return false; } if (!unlockExecution(configDir)) { LOG_err << "Failed to release lock from a previous version. You may need to ensure there is " "no MEGAcmd Server running and try again or manually remove lock file: " << lockFileAtConfigDir; return false; } } } return lockExecution(runtimeDir); } bool ConfigurationManager::lockExecution(const fs::path &lockFileFolder) { assert(!lockFileFolder.empty()); const fs::path lockFilePath = lockFileFolder / LOCK_FILE_NAME; LOG_info << "Lock file: " << lockFilePath; #ifdef _WIN32 mLockFileHandle = CreateFileW(lockFilePath.wstring().c_str(), GENERIC_READ | GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); if (mLockFileHandle == INVALID_HANDLE_VALUE) { LOG_err << "ERROR creating lock file: " << ERRNO; return false; } #elif defined(LOCK_EX) && defined(LOCK_NB) fd = open(lockFilePath.string().c_str(), O_RDWR | O_CREAT, 0666); // open or create lockfile //check open success... if (flock(fd, LOCK_EX | LOCK_NB)) { LOG_err << "ERROR locking lock fd: " << errno; close(fd); return false; } if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) { LOG_err << "ERROR setting CLOEXEC to lock fd: " << errno; } #else ifstream fi(lockFilePath); if(!fi.fail()) { close(fd); return false; } if (fi.is_open()) { fi.close(); } ofstream fo(lockFilePath); if (fo.is_open()) { fo.close(); } #endif return true; } bool ConfigurationManager::unlockExecution() { return unlockExecution(getAndCreateRuntimeDir()); } bool ConfigurationManager::unlockExecution(const fs::path &lockFileFolder) { assert(!lockFileFolder.empty()); #ifdef _WIN32 CloseHandle(mLockFileHandle); #elif defined(LOCK_EX) && defined(LOCK_NB) flock(fd, LOCK_UN | LOCK_NB); close(fd); #endif const fs::path lockFilePath = lockFileFolder / LOCK_FILE_NAME; if (std::error_code ec; !fs::remove(lockFilePath, ec)) { LOG_err << "Failed to remove lock file, error = " << errorCodeStr(ec); return false; } return true; } string ConfigurationManager::getConfigurationSValue(string propertyName) { std::lock_guard g(settingsMutex); if (mConfigFolder.empty()) { loadConfigDir(); } if (!mConfigFolder.empty()) { const fs::path configFilePath = mConfigFolder / "megacmd.cfg"; return getPropertyFromFile(configFilePath, propertyName.c_str()); } return ""; } void ConfigurationManager::clearConfigurationFile() { std::lock_guard g(settingsMutex); if (mConfigFolder.empty()) { loadConfigDir(); } if (!mConfigFolder.empty()) { const fs::path configFilePath = mConfigFolder / "megacmd.cfg"; ifstream infile(configFilePath); stringstream formerlines; string line; while (getline(infile, line)) { size_t pos; if (line.length() > 0 && line[0] != '#' && (pos = line.find("=")) != string::npos) { string key; key = line.substr(0, pos); rtrimProperty(key, ' '); for (unsigned int i = 0; i < sizeof(persistentmcmdconfigurationkeys)/sizeof(persistentmcmdconfigurationkeys[0]); i++) { if (!strcmp(key.c_str(), persistentmcmdconfigurationkeys[i])) { formerlines << line << endl; } } } else { formerlines << line << endl; } } ofstream fo(configFilePath); if (fo.is_open()) { fo << formerlines.str(); fo.close(); } } } ConfiguratorMegaApiHelper::ConfiguratorMegaApiHelper() { auto configSetterSyncULLCb = [this](auto cb) { return [this, cb](MegaApi *api, const std::string &/*name*/, const char *value) { try { return cb(api, std::stoull(value)); } catch(...) { return false; } return true; }; }; auto confGetter = [](::mega::MegaApi */*api*/,const char *key){ return ConfigurationManager::getConfigurationValueOpt(key); }; auto validatorULL = [](std::optional minOpt = {}, std::optional maxOpt = {}) { return [minOpt, maxOpt](const char *value){ if (value && value[0] == '-') { return false; } try { auto v = std::stoull(value); if (maxOpt && v > *maxOpt) { return false; } if (minOpt && v < *minOpt) { return false; } return true; } catch (...) { return false; } }; }; mConfigurators.emplace_back("max_nodes_in_cache", "Max nodes loaded in memory", "This controls the number of nodes that the SDK stores in memory.", configSetterSyncULLCb([](MegaApi *api, auto value){ api->setLRUCacheSize(value); return true; }), confGetter, std::nullopt/*megaApiGetter*/, validatorULL()); mConfigurators.emplace_back("exported_folders_sdks", "Number of additional SDK instances loaded at startup", "This controls the number of SDK instances that are created at startup in order to download or import contents from exported folder links. " "Default 5. Min 0. Max 20. If set to 0, you will not be able to download or import from folder links.", configSetterSyncULLCb([](MegaApi *api, auto value){ return true;/*TODO: implement reactiveness to value changes*/ }), confGetter, std::nullopt/*megaApiGetter*/, validatorULL(0, 20)); } const std::vector & ConfiguratorMegaApiHelper::getConfigurators() { return mConfigurators; } }//end namespace MEGAcmd-2.5.2_Linux/src/configurationmanager.h000066400000000000000000000227751516543156300212640ustar00rootroot00000000000000/** * @file src/configurationmanager.h * @brief MEGAcmd: configuration manager * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef CONFIGURATIONMANAGER_H #define CONFIGURATIONMANAGER_H #include "megacmd.h" #include #include #ifndef _WIN32 #include // LOCK_EX and LOCK_NB #endif #define CONFIGURATIONSTOREDBYVERSION -2 namespace megacmd { class ConfigurationManager { private: inline static fs::path mConfigFolder; inline static bool hasBeenUpdated = false; #ifdef WIN32 static HANDLE mLockFileHandle; #elif defined(LOCK_EX) && defined(LOCK_NB) static int fd; #endif static void loadConfigDir(); static void removeSyncConfig(sync_struct *syncToRemove); #ifdef MEGACMD_TESTING_CODE public: #endif static void createFolderIfNotExisting(const fs::path &folder); static bool lockExecution(const fs::path &lockFileFolder); static bool unlockExecution(const fs::path &lockFileFolder); public: static std::map oldConfiguredSyncs; //This will refer to old syncs from now on static std::map configuredBackups; static std::recursive_mutex settingsMutex; static std::string session; static void loadConfiguration(bool debug); static void clearConfigurationFile(); static bool lockExecution(); static bool unlockExecution(); static void loadsyncs(); static void loadbackups(); static void saveSyncs(std::map *syncsmap); static void saveBackups(std::map *backupsmap); static void transitionLegacyExclusionRules(mega::MegaApi& api); static void saveSession(const char*session); static std::string /* prev value, if any */ saveProperty(const char* property, const char* value); template, const char*>, std::string, T>>> static Opt_T savePropertyValue(const char* property, const T& value) { constexpr bool isStr = std::is_same_v, std::string>; constexpr bool isConstChar = std::is_same_v, const char*>; std::string prevValueStr; if constexpr (isStr) { prevValueStr = saveProperty(property, value.c_str()); } else if constexpr (isConstChar) { prevValueStr = saveProperty(property, value); } else { prevValueStr = saveProperty(property, std::to_string(value).c_str()); } if (prevValueStr.empty()) { return std::nullopt; } if constexpr (isStr || isConstChar) { return prevValueStr; } else { T prevValue; std::istringstream is(prevValueStr); is >> prevValue; return prevValue; } } template static void savePropertyValueList(const char* property, std::list value, char separator = ';') { std::ostringstream os; typename std::list::iterator it = value.begin(); for (; it != value.end(); ++it){ os << (*it); if ( std::distance( it, value.end() ) != 1 ) // not last { os << separator; } } saveProperty(property,os.str().c_str()); } template static void savePropertyValueSet(const char* property, std::set value, char separator = ';') { std::ostringstream os; typename std::set::iterator it = value.begin(); for (; it != value.end(); ++it){ os << (*it); if ( std::distance( it, value.end() ) != 1 ) // not last { os << separator; } } saveProperty(property,os.str().c_str()); } static std::string getConfigurationSValue(std::string propertyName); template static T getConfigurationValue(std::string propertyName, T defaultValue) { std::string propValue = getConfigurationSValue(propertyName); if (!propValue.size()) return defaultValue; T i; std::istringstream is(propValue); is >> i; return i; } template static std::optional getConfigurationValueOpt(std::string propertyName) { std::string propValue = getConfigurationSValue(propertyName); if (!propValue.size()) return {}; T i; std::istringstream is(propValue); is >> i; return i; } template static std::list getConfigurationValueList(std::string propertyName, char separator = ';') { std::list toret; std::string propValue = getConfigurationSValue(propertyName); if (!propValue.size()) { return toret; } size_t possep; do { possep = propValue.find(separator); std::string current = propValue.substr(0,possep); if (possep != std::string::npos && ((possep + 1 ) != propValue.size())) { propValue = propValue.substr(possep + 1); } else { possep = std::string::npos; } if (current.size()) { T i; std::istringstream is(current); is >> i; toret.push_back(i); } } while (possep != std::string::npos); return toret; } static std::list getConfigurationValueList(std::string propertyName, char separator = ';') { std::list toret; std::string propValue = getConfigurationSValue(propertyName); if (!propValue.size()) { return toret; } size_t possep; do { possep = propValue.find(separator); std::string current = propValue.substr(0,possep); if (possep != std::string::npos && ((possep + 1 ) != propValue.size())) { propValue = propValue.substr(possep + 1); } else { possep = std::string::npos; } if (current.size()) { toret.push_back(current); } } while (possep != std::string::npos); return toret; } template static std::set getConfigurationValueSet(std::string propertyName, char separator = ';') { std::set toret; std::string propValue = getConfigurationSValue(propertyName); if (!propValue.size()) { return toret; } size_t possep; do { possep = propValue.find(separator); std::string current = propValue.substr(0,possep); if (possep != std::string::npos && ((possep + 1 ) != propValue.size())) { propValue = propValue.substr(possep + 1); } else { possep = std::string::npos; } if (current.size()) { T i; std::istringstream is(current); is >> i; toret.insert(i); } } while (possep != std::string::npos); return toret; } static fs::path getConfigFolder(); // creates a subfolder within the state dir and returns it (utf8) static fs::path getConfigFolderSubdir(const fs::path& subdirName); static fs::path getAndCreateRuntimeDir(); static fs::path getAndCreateConfigDir(); static bool getHasBeenUpdated(); static void unloadConfiguration(); static void migrateSyncConfig(mega::MegaApi *api); }; class ConfiguratorMegaApiHelper { struct ValueConfigurator { using Setter = std::function; using Getter = std::function(::mega::MegaApi *api, const char *)>; using Validator = std::function; std::string mKey; std::string mDescription; std::string mFullDescription; Setter mSetter; Getter mGetter; std::optional mMegaApiGetter; std::optional mValidator; template ValueConfigurator(const char *key, const char *description, const char *fullDescription, S &&setter, G &&getter, MG &&megaApiGetter, V &&validator) : mKey(key) , mDescription(description) , mFullDescription(fullDescription) , mSetter(std::forward(setter)) , mGetter(std::forward(getter)) , mMegaApiGetter(std::forward(megaApiGetter)) , mValidator(std::forward(validator)) { assert(mSetter != nullptr); assert(mGetter != nullptr); } }; std::vector mConfigurators; public: const std::vector & getConfigurators(); ConfiguratorMegaApiHelper(); }; }//end namespace #endif // CONFIGURATIONMANAGER_H MEGAcmd-2.5.2_Linux/src/deferred_single_trigger.h000066400000000000000000000057161516543156300217220ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include #include #include #include #include #include "megacmdcommonutils.h" class DeferredSingleTrigger { std::unique_ptr mThread; std::condition_variable mConditionVariable; std::mutex mConditionVariableMutex; std::mutex mThreadMutex; bool mDestroyed; size_t mCounter; std::chrono::seconds mSecondsToWait; size_t incrementCounter() { // Since the counter is used in the CV predicate, it must be protected with the CV mutex std::unique_lock lock(mConditionVariableMutex); return ++mCounter; } void destroy() { // Since the destroyed flag is used in the CV predicate, it must be protected with the CV mutex std::unique_lock lock(mConditionVariableMutex); assert(!mDestroyed); mDestroyed = true; } bool isDestroyed() { // Since the destroyed flag is used in the CV predicate, it must be protected with the CV mutex std::unique_lock lock(mConditionVariableMutex); return mDestroyed; } std::unique_lock ensureThreadIsStopped() { std::unique_lock lock(mThreadMutex); if (mThread) { mConditionVariable.notify_one(); mThread->join(); mThread.reset(); } return lock; } public: DeferredSingleTrigger(std::chrono::seconds secondsToWait) : mDestroyed(false), mCounter(0), mSecondsToWait(secondsToWait) {} ~DeferredSingleTrigger() { destroy(); ensureThreadIsStopped(); } template void triggerDeferredSingleShot(CB&& callback) { const size_t id = incrementCounter(); std::unique_lock lock = ensureThreadIsStopped(); if (isDestroyed()) { // Without this check, we might spawn a new thread after the destructor is done // (i.e., if the lock above is waiting on the destructor's lock) return; } mThread.reset(new std::thread([this, id, FWD_CAPTURE(callback)] () { std::unique_lock lock(mConditionVariableMutex); bool cancelled = mConditionVariable.wait_for(lock, mSecondsToWait, [this, id] { assert(mCounter >= id); return mDestroyed || id != mCounter; }); if (!cancelled) { callback(); } })); } }; MEGAcmd-2.5.2_Linux/src/listeners.cpp000066400000000000000000001367711516543156300174270ustar00rootroot00000000000000/** * @file src/listeners.cpp * @brief MEGAcmd: Listeners * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "listeners.h" #include "configurationmanager.h" #include "megacmdutils.h" #ifdef MEGACMD_TESTING_CODE #include "../tests/common/Instruments.h" #endif #include using namespace mega; namespace megacmd { #ifdef ENABLE_CHAT void MegaCmdGlobalListener::onChatsUpdate(MegaApi*, MegaTextChatList*) { } #endif void MegaCmdGlobalListener::onUsersUpdate(MegaApi *api, MegaUserList *users1) { if (users1) { if (users1->size() == 1) { LOG_debug << " 1 user received or updated"; } else { LOG_debug << users1->size() << " users received or updated"; } } else //initial update or too many changes { std::unique_ptr users2(api->getContacts()); if (users2 && users2->size()) { if (users2->size() == 1) { LOG_debug << " 1 user received or updated"; } else { LOG_debug << users2->size() << " users received or updated"; } } } } MegaCmdGlobalListener::MegaCmdGlobalListener(MegaCmdLogger *logger, MegaCmdSandbox *sandboxCMD) { this->loggerCMD = logger; this->sandboxCMD = sandboxCMD; ongoing = false; } void MegaCmdGlobalListener::onNodesUpdate(MegaApi *api, MegaNodeList *nodes) { long long nfolders = 0; long long nfiles = 0; long long rfolders = 0; long long rfiles = 0; if (nodes) { for (int i = 0; i < nodes->size(); i++) { MegaNode *n = nodes->get(i); if (n->getType() == MegaNode::TYPE_FOLDER) { if (n->isRemoved()) { rfolders++; } else { nfolders++; } } else if (n->getType() == MegaNode::TYPE_FILE) { if (n->isRemoved()) { rfiles++; } else { nfiles++; } } } if (nfolders) { LOG_debug << nfolders << " folders " << "added or updated "; } if (nfiles) { LOG_debug << nfiles << " files " << "added or updated "; } } else if (loggerCMD->getMaxLogLevel() >= logInfo) //initial update or too many changes { api->getAccountDetails(new MegaCmdListenerFuncExecuter( [nfiles, nfolders](mega::MegaApi *api, mega::MegaRequest *request, mega::MegaError *e) { auto details = std::unique_ptr(request->getMegaAccountDetails()); if (details == nullptr) { LOG_err << "could not get account details"; return; } auto nFiles = nfiles; auto nFolders = nfolders; auto nodeRoot = std::unique_ptr(api->getRootNode()); if (nodeRoot != nullptr) { auto handle = nodeRoot->getHandle(); nFiles += details->getNumFiles(handle); nFolders += details->getNumFolders(handle); } auto vaultNode = std::unique_ptr(api->getVaultNode()); if (vaultNode != nullptr) { auto handle = vaultNode->getHandle(); nFiles += details->getNumFiles(handle); nFolders += details->getNumFolders(handle); } auto rubbishNode = std::unique_ptr(api->getRubbishNode()); if (rubbishNode != nullptr) { auto handle = rubbishNode->getHandle(); nFiles += details->getNumFiles(handle); nFolders += details->getNumFolders(handle); } auto inshares = std::unique_ptr(api->getInShares()); if (inshares) { nFolders += inshares->size(); // add the shares themselves. for (int i = 0; i < inshares->size(); i++) { auto handle = inshares->get(i)->getHandle(); nFiles += details->getNumFiles(handle); nFolders += details->getNumFolders(handle); } } if (nFolders) { LOG_debug << nFolders << " folders added or updated"; } if (nFiles) { LOG_debug << nFiles << " files added or updated"; } }, true)); } if (rfolders) { LOG_debug << rfolders << " folders " << "removed"; } if (rfiles) { LOG_debug << rfiles << " files " << "removed"; } } void MegaCmdGlobalListener::onAccountUpdate(MegaApi *api) { if (!api->getBandwidthOverquotaDelay()) { sandboxCMD->setOverquota(false); } sandboxCMD->temporalbandwidth = 0; //This will cause account details to be queried again } void MegaCmdGlobalListener::onEvent(MegaApi *api, MegaEvent *event) { if (event->getType() == MegaEvent::EVENT_ACCOUNT_BLOCKED) { if (getBlocked() == event->getNumber()) { LOG_debug << " receivied EVENT_ACCOUNT_BLOCKED: number = " << event->getNumber(); return; } setBlocked(int(event->getNumber())); //this should be true always switch (event->getNumber()) { case MegaApi::ACCOUNT_BLOCKED_VERIFICATION_EMAIL: { sandboxCMD->setReasonblocked( "Your account has been temporarily suspended for your safety. " "Please verify your email and follow its steps to unlock your account."); break; } case MegaApi::ACCOUNT_BLOCKED_VERIFICATION_SMS: { if (!ongoing) { ongoing = true; sandboxCMD->setReasonPendingPromise(); api->getSessionTransferURL("", new MegaCmdListenerFuncExecuter( [this](mega::MegaApi* api, mega::MegaRequest *request, mega::MegaError *e) { string reason("Your account has been suspended temporarily due to potential abuse. " "Please verify your phone number to unlock your account." ); if (e->getValue() == MegaError::API_OK) { reason.append(" Open the following link: "); reason.append(request->getLink()); } sandboxCMD->setPromisedReasonblocked(reason); ongoing = false; },true)); } break; } case MegaApi::ACCOUNT_BLOCKED_SUBUSER_DISABLED: { sandboxCMD->setReasonblocked("Your account has been disabled by your administrator. Please contact your business account administrator for further details."); break; } default: { sandboxCMD->setReasonblocked(event->getText()); LOG_err << "Received event account blocked: " << event->getText(); } } } else if (event->getType() == MegaEvent::EVENT_STORAGE) { if (event->getNumber() == MegaApi::STORAGE_STATE_CHANGE) { api->getAccountDetails(); } else { int previousStatus = sandboxCMD->storageStatus; sandboxCMD->storageStatus = int(event->getNumber()); if (sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_PAYWALL || sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_RED || sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_ORANGE) { ConfigurationManager::savePropertyValue("ask4storage",true); if (previousStatus < sandboxCMD->storageStatus) { if (sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_PAYWALL) { api->getUserData(new MegaCmdListenerFuncExecuter( [this](mega::MegaApi* api, mega::MegaRequest *request, mega::MegaError *e) { if (e->getValue() != MegaError::API_OK) { // We don't have access to MegaCmdExecuter's error handling methods here std::string errorString(e->getErrorString()); LOG_err << "Failed to get user data: " << errorString; return; } api->getAccountDetails(new MegaCmdListenerFuncExecuter( [this](mega::MegaApi *api, mega::MegaRequest *request, mega::MegaError *e) { if (e->getValue() != MegaError::API_OK) { std::string errorString(e->getErrorString()); LOG_err << "Failed to get account details: " << errorString; return; } std::unique_ptr myEmail(api->getMyEmail()); std::unique_ptr warningsList(api->getOverquotaWarningsTs()); std::string s("We have contacted you by email"); if (myEmail != nullptr) { s.append(" to ").append(myEmail.get()); } if (warningsList != nullptr) { s.append(" on ").append(getReadableTime(warningsList->get(0), "%b %e %Y")); if (warningsList->size() > 1) { for (int i = 1; i < warningsList->size() - 1; i++) { s += ", " + getReadableTime(warningsList->get(i), "%b %e %Y"); } s += " and " + getReadableTime(warningsList->get(warningsList->size() - 1), "%b %e %Y"); } } std::unique_ptr rootNode(api->getRootNode()); std::unique_ptr details(request->getMegaAccountDetails()); if (details != nullptr && rootNode != nullptr) { auto rootNodeHandle = rootNode->getHandle(); long long totalFiles = details->getNumFiles(rootNodeHandle); long long totalFolders = details->getNumFolders(rootNodeHandle); s += ", but you still have " + std::to_string(totalFiles) + " files and " + std::to_string(totalFolders) + " folders taking up " + sizeToText(sandboxCMD->receivedStorageSum); s += " in your MEGA account, which requires you to upgrade your account.\n\n"; } else // If we weren't able to get the root node or details object, lets just display the total storage used. { s += ", but your MEGA account still uses " + sizeToText(sandboxCMD->receivedStorageSum) + ", which requires you to upgrade your account.\n\n"; } long long daysLeft = (api->getOverquotaDeadlineTs() - m_time(nullptr)) / 86400; if (daysLeft > 0) { s += "You have " + std::to_string(daysLeft) + " days left to upgrade. "; s += "After that, your data is subject to deletion.\n"; } else { s += "You must act immediately to save your data. From now on, your data is subject to deletion.\n"; } s += "See \"help --upgrade\" for further details."; broadcastMessage(s); })); },true)); } else { string s; if (sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_RED) { s+= "You have exeeded your available storage.\n"; } else { s+= "You are running out of available storage.\n"; } s+="You can change your account plan to increase your quota limit.\nSee \"help --upgrade\" for further details"; broadcastMessage(s); } } } else { ConfigurationManager::savePropertyValue("ask4storage",false); } } LOG_info << "Received event storage changed: " << event->getNumber(); } else if (event->getType() == MegaEvent::EVENT_STORAGE_SUM_CHANGED) { sandboxCMD->receivedStorageSum = event->getNumber(); } else if (event->getType() == MegaEvent::EVENT_SYNCS_DISABLED) { std::unique_ptr megaSyncErrorCode {MegaSync::getMegaSyncErrorCode(int(event->getNumber()))}; removeDelayedBroadcastMatching("Your sync has been disabled"); broadcastMessage(std::string("Your syncs have been disabled. Reason: ") .append(megaSyncErrorCode.get()), true); } else if (event->getType() == MegaEvent::EVENT_UPGRADE_SECURITY) { std::stringstream ss; ss << "" "Your account's security needs upgrading.\n" "Please execute: \"confirm --security\".\n" "This only needs to be done once. If you have seen this message for\n" "this account before, please exit MEGAcmd."; auto msg = ss.str(); appendGreetingStatusAllListener(std::string("message:") + msg); broadcastMessage(std::move(msg)); // broadcast the message, so that it reaches currently open shell too! } else if (event->getType() == MegaEvent::EVENT_NODES_CURRENT) { sandboxCMD->mNodesCurrentPromise.fulfil(); } } //////////////////////////////////////////// /// MegaCmdMegaListener methods /// //////////////////////////////////////////// void MegaCmdMegaListener::onRequestFinish(MegaApi *api, MegaRequest *request, MegaError *e) { if (request->getType() == MegaRequest::TYPE_APP_VERSION) { LOG_verbose << "TYPE_APP_VERSION finished"; } else if (request->getType() == MegaRequest::TYPE_LOGOUT) { LOG_debug << "Session closed"; sandboxCMD->resetSandBox(); reset(); } else if (request->getType() == MegaRequest::TYPE_WHY_AM_I_BLOCKED) { if (e->getErrorCode() == MegaError::API_OK && request->getNumber() == MegaApi::ACCOUNT_NOT_BLOCKED) { if (getBlocked()) { unblock(); } } } else if (request->getType() == MegaRequest::TYPE_ACCOUNT_DETAILS) { if (e->getErrorCode() != MegaError::API_OK) { return; } bool storage = (request->getNumDetails() & 0x01) != 0; if (storage) { unique_ptr details(request->getMegaAccountDetails()); sandboxCMD->totalStorage = details->getStorageMax(); } } else if (e && ( e->getErrorCode() == MegaError::API_ESID )) { LOG_err << "Session is no longer valid (it might have been invalidated from elsewhere) "; changeprompt(prompts[COMMAND]); } else if (e && request->getType() == MegaRequest::TYPE_WHY_AM_I_BLOCKED && e->getErrorCode() == API_EBLOCKED) { LOG_err << "Your account has been blocked. Reason: " << request->getText(); } } std::atomic DisableMountErrorsBroadcastingGuard::sDisableBroadcasting = 0; MegaCmdMegaListener::MegaCmdMegaListener(MegaApi *megaApi, MegaListener *parent, MegaCmdSandbox *sandboxCMD) { this->megaApi = megaApi; this->listener = parent; this->sandboxCMD = sandboxCMD; } MegaCmdMegaListener::~MegaCmdMegaListener() { this->listener = NULL; if (megaApi) { megaApi->removeListener(this); } } #ifdef ENABLE_CHAT void MegaCmdMegaListener::onChatsUpdate(MegaApi *api, MegaTextChatList *chats) {} #endif //backup callbacks: void MegaCmdMegaListener::onBackupStateChanged(MegaApi *api, MegaScheduledCopy *backup) { LOG_verbose << " At onBackupStateChanged: " << backupSatetStr(backup->getState()); } void MegaCmdMegaListener::onBackupStart(MegaApi *api, MegaScheduledCopy *backup) { LOG_verbose << " At onBackupStart"; } void MegaCmdMegaListener::onBackupFinish(MegaApi* api, MegaScheduledCopy *backup, MegaError* error) { LOG_verbose << " At onBackupFinish"; if (error->getErrorCode() == MegaError::API_EEXPIRED) { LOG_warn << "Backup skipped (the time for the next one has been reached)"; } else if (error->getErrorCode() != MegaError::API_OK) { LOG_err << "Backup failed: " << error->getErrorString(); } } void MegaCmdMegaListener::onBackupUpdate(MegaApi *api, MegaScheduledCopy *backup) { LOG_verbose << " At onBackupUpdate"; } void MegaCmdMegaListener::onBackupTemporaryError(MegaApi *api, MegaScheduledCopy *backup, MegaError* error) { LOG_verbose << " At onBackupTemporaryError"; if (error->getErrorCode() != MegaError::API_OK) { LOG_err << "Backup temporary error: " << error->getErrorString(); } } void MegaCmdMegaListener::onSyncAdded(MegaApi *api, MegaSync *sync) { LOG_verbose << "Sync added: " << sync->getLocalFolder() << " to " << sync->getLastKnownMegaFolder(); if (!ConfigurationManager::getConfigurationValue("firstSyncConfigured", false)) { sendEvent(StatsManager::MegacmdEvent::FIRST_CONFIGURED_SYNC, api, false); ConfigurationManager::savePropertyValue("firstSyncConfigured", true); } else { sendEvent(StatsManager::MegacmdEvent::SUBSEQUENT_CONFIGURED_SYNC, api, false); } } void MegaCmdMegaListener::onSyncStateChanged(MegaApi *api, MegaSync *sync) { std::stringstream ss; ss << "Your sync " << sync->getLocalFolder() << " to: " << sync->getLastKnownMegaFolder() << " has transitioned to state " << syncRunStateStr(sync->getRunState()); if (sync->getError()) { std::unique_ptr megaSyncErrorCode {sync->getMegaSyncErrorCode()}; ss << ". ErrorCode: " << megaSyncErrorCode.get(); } auto msg = ss.str(); if (sync->getError() || sync->getRunState() >= MegaSync::RUNSTATE_SUSPENDED) { broadcastDelayedMessage(msg, true); } LOG_debug << msg; } void MegaCmdMegaListener::onSyncDeleted(MegaApi *api, MegaSync *sync) { LOG_verbose << "Sync deleted: " << sync->getLocalFolder() << " to " << sync->getLastKnownMegaFolder(); } void MegaCmdMegaListener::onMountAdded(mega::MegaApi* api, const char* path, int result) { onMountEvent("Added", "add", path, result); } void MegaCmdMegaListener::onMountRemoved(mega::MegaApi* api, const char* path, int result) { onMountEvent("Removed", "remove", path, result); } void MegaCmdMegaListener::onMountChanged(mega::MegaApi* api, const char* path, int result) { onMountEvent("Changed", "change", path, result); } void MegaCmdMegaListener::onMountEnabled(mega::MegaApi* api, const char* path, int result) { onMountEvent("Enabled", "enable", path, result); } void MegaCmdMegaListener::onMountDisabled(mega::MegaApi* api, const char* path, int result) { onMountEvent("Disabled", "disable", path, result); } void MegaCmdMegaListener::onMountEvent(std::string_view pastTense, std::string_view presentTense, std::string_view path, int result) { if (result != MegaMount::SUCCESS) { std::ostringstream oss; oss << "Failed to " << presentTense << " mount \"" << path << "\" " << "due to error:\n" << getMountResultStr(result); assert(getMountResultStr(result) != "Mount was successful"); const std::string msg = oss.str(); LOG_err << msg; if (DisableMountErrorsBroadcastingGuard::shouldBroadcast()) { broadcastDelayedMessage(msg, true); } return; } LOG_debug << pastTense << " mount \"" << path << "\""; } //////////////////////////////////////// /// MegaCmdListener methods /// //////////////////////////////////////// void MegaCmdListener::onRequestStart(MegaApi* api, MegaRequest *request) { if (!request) { LOG_err << " onRequestStart for undefined request "; return; } LOG_verbose << "onRequestStart request->getType(): " << request->getType(); } void MegaCmdListener::doOnRequestFinish(MegaApi* api, MegaRequest *request, MegaError* e) { if (!request) { LOG_err << " onRequestFinish for undefined request "; return; } LOG_verbose << "onRequestFinish request->getType(): " << request->getType(); switch (request->getType()) { case MegaRequest::TYPE_FETCH_NODES: { informProgressUpdate(PROGRESS_COMPLETE, request->getTotalBytes(), this->clientID, "Fetching nodes"); break; } default: break; } } void MegaCmdListener::onRequestUpdate(MegaApi* api, MegaRequest *request) { if (!request) { LOG_err << " onRequestUpdate for undefined request "; return; } LOG_verbose << "onRequestUpdate request->getType(): " << request->getType(); switch (request->getType()) { case MegaRequest::TYPE_FETCH_NODES: { #ifdef MEGACMD_TESTING_CODE TestInstruments::Instance().fireEvent(TestInstruments::Event::FETCH_NODES_REQ_UPDATE); #endif unsigned int cols = getNumberOfCols(80); string outputString; outputString.resize(cols+1); for (unsigned int i = 0; i < cols; i++) { outputString[i] = '.'; } outputString[cols] = '\0'; char *ptr = (char *)outputString.c_str(); sprintf(ptr, "%s", "Fetching nodes ||"); ptr += strlen("Fetching nodes ||"); *ptr = '.'; //replace \0 char float oldpercent = percentFetchnodes; if (request->getTotalBytes() == 0) { percentFetchnodes = 0; } else { percentFetchnodes = float(request->getTransferredBytes() * 1.0 / request->getTotalBytes() * 100.0); } if (alreadyFinished || ( ( percentFetchnodes == oldpercent ) && ( oldpercent != 0 )) ) { return; } if (percentFetchnodes < 0) { percentFetchnodes = 0; } char aux[40]; if (request->getTotalBytes() < 0) { return; // after a 100% this happens } if (request->getTransferredBytes() < 0.001 * request->getTotalBytes()) { return; // after a 100% this happens } if (request->getTotalBytes() < 1048576) { sprintf(aux,"||(%lld/%lld KB: %.2f %%) ", request->getTransferredBytes() / 1024, request->getTotalBytes() / 1024, percentFetchnodes); } else { sprintf(aux,"||(%lld/%lld MB: %.2f %%) ", request->getTransferredBytes() / 1024 / 1024, request->getTotalBytes() / 1024 / 1024, percentFetchnodes); } sprintf((char *)outputString.c_str() + cols - strlen(aux), "%s", aux); for (int i = 0; i <= ( cols - strlen("Fetching nodes ||") - strlen(aux)) * 1.0 * percentFetchnodes / 100.0; i++) { *ptr++ = '#'; } if (percentFetchnodes == 100 && !alreadyFinished) { alreadyFinished = true; //cout << outputString << endl; LOG_debug << outputString; } else { LOG_debug << outputString; //cout << outputString << '\r' << flush; } informProgressUpdate(request->getTransferredBytes(), request->getTotalBytes(), this->clientID, "Fetching nodes"); break; } default: LOG_debug << "onRequestUpdate of unregistered type of request: " << request->getType(); break; } } void MegaCmdListener::onRequestTemporaryError(MegaApi *api, MegaRequest *request, MegaError* e) { } MegaCmdListener::~MegaCmdListener() { } MegaCmdListener::MegaCmdListener(MegaApi *megaApi, MegaRequestListener *listener, int clientID) { this->megaApi = megaApi; this->listener = listener; percentFetchnodes = 0.0f; alreadyFinished = false; this->clientID = clientID; } //////////////////////////////////////////////// /// MegaCmdTransferListener methods /// //////////////////////////////////////////////// void MegaCmdTransferListener::onTransferStart(MegaApi* api, MegaTransfer *transfer) { if (listener) { listener->onTransferStart(api,transfer); } if (!transfer) { LOG_err << " onTransferStart for undefined Transfer "; return; } LOG_verbose << "onTransferStart Transfer->getType(): " << transfer->getType(); } void MegaCmdTransferListener::doOnTransferFinish(MegaApi* api, MegaTransfer *transfer, MegaError* e) { if (listener) { listener->onTransferFinish(api,transfer,e); } if (!transfer) { LOG_err << " onTransferFinish for undefined transfer "; return; } LOG_verbose << "doOnTransferFinish Transfer->getType(): " << transfer->getType(); informProgressUpdate(PROGRESS_COMPLETE, transfer->getTotalBytes(), clientID); } void MegaCmdTransferListener::onTransferUpdate(MegaApi* api, MegaTransfer *transfer) { if (listener) { listener->onTransferUpdate(api,transfer); } if (!transfer) { LOG_err << " onTransferUpdate for undefined Transfer "; return; } unsigned int cols = getNumberOfCols(80); string outputString; outputString.resize(cols + 1); for (unsigned int i = 0; i < cols; i++) { outputString[i] = '.'; } outputString[cols] = '\0'; char *ptr = (char *)outputString.c_str(); sprintf(ptr, "%s", "TRANSFERRING ||"); ptr += strlen("TRANSFERRING ||"); *ptr = '.'; //replace \0 char float oldpercent = percentDownloaded; if (transfer->getTotalBytes() == 0) { percentDownloaded = 0; } else { percentDownloaded = float(transfer->getTransferredBytes() * 1.0 / transfer->getTotalBytes() * 100.0); } if (alreadyFinished || ( (percentDownloaded == oldpercent ) && ( oldpercent != 0 ) ) ) { return; } if (percentDownloaded < 0) { percentDownloaded = 0; } char aux[40]; if (transfer->getTotalBytes() < 0) { return; // after a 100% this happens } if (transfer->getTransferredBytes() < 0.001 * transfer->getTotalBytes()) { return; // after a 100% this happens } if (transfer->getTotalBytes() < 1048576) { sprintf(aux,"||(%lld/%lld KB: %.2f %%) ", (long long)(transfer->getTransferredBytes() / 1024), (long long)(transfer->getTotalBytes() / 1024), (float)percentDownloaded); } else { sprintf(aux,"||(%lld/%lld MB: %.2f %%) ", (long long)(transfer->getTransferredBytes() / 1024 / 1024), (long long)(transfer->getTotalBytes() / 1024 / 1024), (float)percentDownloaded); } sprintf((char *)outputString.c_str() + cols - strlen(aux), "%s", aux); for (int i = 0; i <= ( cols - strlen("TRANSFERRING ||") - strlen(aux)) * 1.0 * percentDownloaded / 100.0; i++) { *ptr++ = '#'; } if (percentDownloaded == 100 && !alreadyFinished) { alreadyFinished = true; //cout << outputString << endl; LOG_debug << outputString; } else { LOG_debug << outputString; //cout << outputString << '\r' << flush; } LOG_verbose << "onTransferUpdate transfer->getType(): " << transfer->getType() << " clientID=" << this->clientID; informTransferUpdate(transfer, this->clientID); } void MegaCmdTransferListener::onTransferTemporaryError(MegaApi *api, MegaTransfer *transfer, MegaError* e) { if (listener) { listener->onTransferTemporaryError(api,transfer,e); } } MegaCmdTransferListener::~MegaCmdTransferListener() { } MegaCmdTransferListener::MegaCmdTransferListener(MegaApi *megaApi, MegaCmdSandbox *sandboxCMD, MegaTransferListener *listener, int clientID) { this->megaApi = megaApi; this->sandboxCMD = sandboxCMD; this->listener = listener; percentDownloaded = 0.0f; alreadyFinished = false; this->clientID = clientID; } bool MegaCmdTransferListener::onTransferData(MegaApi *api, MegaTransfer *transfer, char *buffer, size_t size) { return true; } ///////////////////////////////////////////////////// /// MegaCmdMultiTransferListener methods /// ///////////////////////////////////////////////////// void MegaCmdMultiTransferListener::onTransferStart(MegaApi* api, MegaTransfer *transfer) { if (!transfer) { LOG_err << " onTransferStart for undefined Transfer "; return; } alreadyFinished = false; if (totalbytes == 0) { percentDownloaded = 0; } else { percentDownloaded = float((transferredbytes + getOngoingTransferredBytes()) * 1.0 / totalbytes * 1.0); } onTransferUpdate(api,transfer); LOG_verbose << "onTransferStart Transfer->getType(): " << transfer->getType(); if (mOnTransferStartCb) { mOnTransferStartCb(transfer); } } void MegaCmdMultiTransferListener::doOnTransferFinish(MegaApi* api, MegaTransfer *transfer, MegaError* e) { finished++; finalerror = (finalerror!=API_OK)?finalerror:e->getErrorCode(); if (!transfer) { LOG_err << " onTransferFinish for undefined transfer "; return; } LOG_verbose << "doOnTransferFinish MegaCmdMultiTransferListener Transfer->getType(): " << transfer->getType() << " transferring " << transfer->getFileName(); if (e->getErrorCode() == API_OK) { // communicate status info string s= "endtransfer:"; s+=((transfer->getType() == MegaTransfer::TYPE_DOWNLOAD)?"D":"U"); s+=":"; if (transfer->getType() == MegaTransfer::TYPE_UPLOAD) { std::unique_ptr n(api->getNodeByHandle(transfer->getNodeHandle())); if (n) { std::unique_ptr path(api->getNodePath(n.get())); if (path) { s += path.get(); } } } else { s+=transfer->getPath(); } informStateListenerByClientId(this->clientID, s); } map::iterator itr = ongoingtransferredbytes.find(transfer->getTag()); if ( itr!= ongoingtransferredbytes.end()) { ongoingtransferredbytes.erase(itr); } itr = ongoingtotalbytes.find(transfer->getTag()); if ( itr!= ongoingtotalbytes.end()) { ongoingtotalbytes.erase(itr); } transferredbytes+=transfer->getTransferredBytes(); totalbytes+=transfer->getTotalBytes(); } void MegaCmdMultiTransferListener::waitMultiEnd() { for (unsigned i = 0; i < created; i++) { wait(); } } void MegaCmdMultiTransferListener::waitMultiStart() { std::unique_lock lock(mStartedTransfersMutex); mStartedConditionVariable.wait(lock, [this]() { return (mStartedTransfersCount >= created); }); } void MegaCmdMultiTransferListener::onTransferUpdate(MegaApi* api, MegaTransfer *transfer) { if (!transfer) { LOG_err << " onTransferUpdate for undefined Transfer "; return; } ongoingtransferredbytes[transfer->getTag()] = transfer->getTransferredBytes(); ongoingtotalbytes[transfer->getTag()] = transfer->getTotalBytes(); unsigned int cols = getNumberOfCols(80); string outputString; outputString.resize(cols + 1); for (unsigned int i = 0; i < cols; i++) { outputString[i] = '.'; } outputString[cols] = '\0'; char *ptr = (char *)outputString.c_str(); sprintf(ptr, "%s", "TRANSFERRING ||"); ptr += strlen("TRANSFERRING ||"); *ptr = '.'; //replace \0 char float oldpercent = percentDownloaded; if ((totalbytes + getOngoingTotalBytes() ) == 0) { percentDownloaded = 0; } else { percentDownloaded = float((transferredbytes + getOngoingTransferredBytes()) * 1.0 / (totalbytes + getOngoingTotalBytes() ) * 100.0); } if (alreadyFinished || ( (percentDownloaded == oldpercent ) && ( oldpercent != 0 ) ) ) { return; } if (percentDownloaded < 0) { percentDownloaded = 0; } assert(percentDownloaded <=100); char aux[40]; if (transfer->getTotalBytes() < 0) { return; // after a 100% this happens } if (transfer->getTransferredBytes() < 0.001 * transfer->getTotalBytes()) { return; // after a 100% this happens } if (totalbytes + getOngoingTotalBytes() < 1048576) { sprintf(aux,"||(%lld/%lld KB: %.2f %%) ", (transferredbytes + getOngoingTransferredBytes()) / 1024, (totalbytes + getOngoingTotalBytes() ) / 1024, percentDownloaded); } else { sprintf(aux,"||(%lld/%lld MB: %.2f %%) ", (transferredbytes + getOngoingTransferredBytes()) / 1024 / 1024, (totalbytes + getOngoingTotalBytes() ) / 1024 / 1024, percentDownloaded); } sprintf((char *)outputString.c_str() + cols - strlen(aux), "%s", aux); for (int i = 0; i <= ( cols - strlen("TRANSFERRING ||") - strlen(aux)) * 1.0 * min (100.0f, percentDownloaded) / 100.0; i++) { *ptr++ = '#'; } if (percentDownloaded == 100 && !alreadyFinished) { alreadyFinished = true; //cout << outputString << endl; LOG_debug << outputString; } else { LOG_debug << outputString; //cout << outputString << '\r' << flush; } LOG_verbose << "onTransferUpdate transfer->getType(): " << transfer->getType() << " clientID=" << this->clientID; informProgressUpdate((transferredbytes + getOngoingTransferredBytes()),(totalbytes + getOngoingTotalBytes() ), clientID); progressinformed = true; } void MegaCmdMultiTransferListener::onTransferTemporaryError(MegaApi *api, MegaTransfer *transfer, MegaError* e) { } MegaCmdMultiTransferListener::~MegaCmdMultiTransferListener() { } int MegaCmdMultiTransferListener::getFinalerror() const { return finalerror; } long long MegaCmdMultiTransferListener::getTotalbytes() const { return totalbytes; } long long MegaCmdMultiTransferListener::getOngoingTransferredBytes() { long long total = 0; for (map::iterator itr = ongoingtransferredbytes.begin(); itr!= ongoingtransferredbytes.end(); itr++) { total += itr->second; } return total; } long long MegaCmdMultiTransferListener::getOngoingTotalBytes() { long long total = 0; for (map::iterator itr = ongoingtotalbytes.begin(); itr!= ongoingtotalbytes.end(); itr++) { total += itr->second; } return total; } bool MegaCmdMultiTransferListener::getProgressinformed() const { return progressinformed; } MegaCmdMultiTransferListener::MegaCmdMultiTransferListener(MegaApi *megaApi, MegaCmdSandbox *sandboxCMD, MegaTransferListener *listener, int clientID) { this->megaApi = megaApi; this->sandboxCMD = sandboxCMD; this->listener = listener; percentDownloaded = 0.0f; alreadyFinished = false; this->clientID = clientID; created = 0; finished = 0; totalbytes = 0; transferredbytes = 0; progressinformed = false; finalerror = MegaError::API_OK; } bool MegaCmdMultiTransferListener::onTransferData(MegaApi *api, MegaTransfer *transfer, char *buffer, size_t size) { return true; } void MegaCmdMultiTransferListener::onNewTransfer() { std::lock_guard g(mStartedTransfersMutex); created ++; } void MegaCmdMultiTransferListener::onTransferStarted(const std::string &path, int tag) { { std::lock_guard g(mStartedTransfersMutex); mStartedTransfersCount++; mStartedConditionVariable.notify_one(); } } //////////////////////////////////////// /// MegaCmdGlobalTransferListener /// //////////////////////////////////////// const int MegaCmdGlobalTransferListener::MAXCOMPLETEDTRANSFERSBUFFER = 10000; MegaCmdGlobalTransferListener::MegaCmdGlobalTransferListener(MegaApi *megaApi, MegaCmdSandbox *sandboxCMD, MegaTransferListener *parent) { this->megaApi = megaApi; this->sandboxCMD = sandboxCMD; this->listener = parent; } void MegaCmdGlobalTransferListener::onTransferFinish(MegaApi* api, MegaTransfer *transfer, MegaError* error) { completedTransfersMutex.lock(); completedTransfers.push_front(transfer->copy()); // source MegaNode * node = api->getNodeByHandle(transfer->getNodeHandle()); if (node) { char * nodepath = api->getNodePath(node); completedPathsByHandle[transfer->getNodeHandle()]=nodepath; delete []nodepath; delete node; } if (completedTransfers.size()>MAXCOMPLETEDTRANSFERSBUFFER) { MegaTransfer * todelete = completedTransfers.back(); completedPathsByHandle.erase(todelete->getNodeHandle()); //TODO: this can be potentially eliminate a handle that has been added twice delete todelete; completedTransfers.pop_back(); } completedTransfersMutex.unlock(); } void MegaCmdGlobalTransferListener::onTransferTemporaryError(MegaApi *api, MegaTransfer *transfer, MegaError* e) { if (e && e->getErrorCode() == MegaError::API_EOVERQUOTA && e->getValue()) { if (!sandboxCMD->isOverquota()) { LOG_warn << "Reached bandwidth quota. Your download could not proceed " "because it would take you over the current free transfer allowance for your IP address. " "This limit is dynamic and depends on the amount of unused bandwidth we have available. " "You can change your account plan to increase such bandwidth. " "See \"help --upgrade\" for further details"; } sandboxCMD->setOverquota(true); sandboxCMD->timeOfOverquota = m_time(NULL); sandboxCMD->secondsOverQuota=e->getValue(); } } bool MegaCmdGlobalTransferListener::onTransferData(MegaApi *api, MegaTransfer *transfer, char *buffer, size_t size) {return false;}; MegaCmdGlobalTransferListener::~MegaCmdGlobalTransferListener() { completedTransfersMutex.lock(); while (completedTransfers.size()) { delete completedTransfers.front(); completedTransfers.pop_front(); } completedTransfersMutex.unlock(); } bool MegaCmdCatTransferListener::onTransferData(MegaApi *api, MegaTransfer *transfer, char *buffer, size_t size) { if (!ls->isClientConnected()) { LOG_verbose << " CatTransfer listener, cancelled transfer due to client disconnected"; api->cancelTransfer(transfer); } else { LOG_verbose << " CatTransfer listener, streaming " << size << " bytes"; *ls << BinaryStringView(buffer, size); } return true; } ATransferListener::ATransferListener(const std::shared_ptr &mMultiTransferListener, const std::string &path) : mMultiTransferListener(mMultiTransferListener), mPath(path) { assert(mMultiTransferListener); } ATransferListener::~ATransferListener() { } void ATransferListener::onTransferStart(MegaApi *api, MegaTransfer *transfer) { auto tag = transfer->getTag(); mMultiTransferListener->onTransferStarted(mPath, tag); mMultiTransferListener->onTransferStart(api, transfer); } void ATransferListener::onTransferFinish(MegaApi *api, MegaTransfer *transfer, MegaError *e) { static_cast(mMultiTransferListener.get())->onTransferFinish(api, transfer, e); delete this; } void ATransferListener::onTransferUpdate(MegaApi *api, MegaTransfer *transfer) { mMultiTransferListener->onTransferUpdate(api, transfer); } void ATransferListener::onTransferTemporaryError(MegaApi *api, MegaTransfer *transfer, MegaError *e) { mMultiTransferListener->onTransferTemporaryError(api, transfer, e); } bool ATransferListener::onTransferData(MegaApi *api, MegaTransfer *transfer, char *buffer, size_t size) { return mMultiTransferListener->onTransferData(api, transfer, buffer, size); } std::string_view MegaCmdFatalErrorListener::getFatalErrorStr(int64_t fatalErrorType) { switch (fatalErrorType) { case MegaEvent::REASON_ERROR_UNKNOWN: return "REASON_ERROR_UNKNOWN"; case MegaEvent::REASON_ERROR_NO_ERROR: return "REASON_ERROR_NO_ERROR"; case MegaEvent::REASON_ERROR_FAILURE_UNSERIALIZE_NODE: return "REASON_ERROR_FAILURE_UNSERIALIZE_NODE"; case MegaEvent::REASON_ERROR_DB_IO_FAILURE: return "REASON_ERROR_DB_IO_FAILURE"; case MegaEvent::REASON_ERROR_DB_FULL: return "REASON_ERROR_DB_FULL"; case MegaEvent::REASON_ERROR_DB_INDEX_OVERFLOW: return "REASON_ERROR_DB_INDEX_OVERFLOW"; case MegaEvent::REASON_ERROR_NO_JSCD: return "REASON_ERROR_NO_JSCD"; case MegaEvent::REASON_ERROR_REGENERATE_JSCD: return "REASON_ERROR_REGENERATE_JSCD"; default: assert(false); return ""; } } template MegaRequestListener* MegaCmdFatalErrorListener::createLogoutListener(std::string_view msg) { return new MegaCmdListenerFuncExecuter( [this, msg] (mega::MegaApi *api, mega::MegaRequest *request, mega::MegaError *e) { broadcastMessage(std::string(msg)); mCmdSandbox.cmdexecuter->actUponLogout(*api, e, localLogout); }, true /* autoremove */ ); } void MegaCmdFatalErrorListener::onEvent(mega::MegaApi *api, mega::MegaEvent *event) { assert(api); assert(event); if (event->getType() != MegaEvent::EVENT_FATAL_ERROR) { return; } const int64_t fatalErrorType = event->getNumber(); LOG_err << "Received fatal error " << getFatalErrorStr(fatalErrorType) << " (type: " << fatalErrorType << ")"; switch (fatalErrorType) { case MegaEvent::REASON_ERROR_UNKNOWN: { broadcastMessage("An error is causing the communication with MEGA to fail. Your syncs and backups " "are unable to update, and there may be further issues if you continue using MEGAcmd " "without restarting. We strongly recommend immediately restarting the MEGAcmd server to " "resolve this problem. If the issue persists, please contact support."); break; } case MegaEvent::REASON_ERROR_NO_ERROR: { break; } case MegaEvent::REASON_ERROR_FAILURE_UNSERIALIZE_NODE: { broadcastMessage("A serious issue has been detected in MEGAcmd, or in the connection between " "this device and MEGA. Delete your local \".megaCmd\" folder and reinstall the app " "from https://mega.io/cmd, or contact support for further assistance."); break; } case MegaEvent::REASON_ERROR_DB_IO_FAILURE: { std::string_view msg = "Critical system files which are required by MEGACmd are unable to be reached. " "Please check permissions in the \".megaCmd\" folder, or try restarting the " "MEGAcmd server. If the issue still persists, please contact support."; api->localLogout(createLogoutListener(msg)); break; } case MegaEvent::REASON_ERROR_DB_FULL: { std::string_view msg = "There's not enough space in your local storage to run MEGAcmd. Please make " "more space available before running MEGAcmd."; api->localLogout(createLogoutListener(msg)); break; } case MegaEvent::REASON_ERROR_DB_INDEX_OVERFLOW: { std::string_view msg = "MEGAcmd has detected a critical internal error and needs to reload. " "You've been logged out. If you experience this issue more than once, please contact support."; // According to the Confluence documentation on fatal errors, this should be an account reload // We'll do a logout instead to avoid problems with api folders api->logout(false, createLogoutListener(msg)); break; } case MegaEvent::REASON_ERROR_NO_JSCD: { broadcastMessage("MEGAcmd has detected an error in your sync configuration data. You need to manually " "logout of MEGAcmd, and log back in, to resolve this issue. If the problem persists " "afterwards, please contact support."); break; } case MegaEvent::REASON_ERROR_REGENERATE_JSCD: { broadcastMessage("MEGAcmd has detected an error in your sync data. Please, reconfigure your syncs now. " "If the issue persists afterwards, please contact support."); break; } default: { LOG_err << "Unhandled fatal error type " << fatalErrorType; assert(false); break; } } } MegaCmdFatalErrorListener::MegaCmdFatalErrorListener(MegaCmdSandbox& cmdSandbox) : mCmdSandbox(cmdSandbox) { } } //end namespace MEGAcmd-2.5.2_Linux/src/listeners.h000066400000000000000000000257721516543156300170720ustar00rootroot00000000000000/** * @file src/listeners.h * @brief MEGAcmd: Listeners * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef LISTENERS_H #define LISTENERS_H #include "megacmdlogger.h" #include "megacmdsandbox.h" namespace megacmd { class MegaCmdSandbox; class MegaCmdListener : public mega::SynchronousRequestListener { private: float percentFetchnodes; bool alreadyFinished; public: int clientID; MegaCmdListener(mega::MegaApi *megaApi, mega::MegaRequestListener *listener = NULL, int clientID=-1); virtual ~MegaCmdListener(); //Request callbacks virtual void onRequestStart(mega::MegaApi* api, mega::MegaRequest *request); virtual void doOnRequestFinish(mega::MegaApi* api, mega::MegaRequest *request, mega::MegaError* error); virtual void onRequestUpdate(mega::MegaApi* api, mega::MegaRequest *request); virtual void onRequestTemporaryError(mega::MegaApi *api, mega::MegaRequest *request, mega::MegaError* e); protected: mega::MegaRequestListener *listener; }; /** * @brief The MegaCmdListenerFuncExecuter class * * it takes an std::function as parameter that will be called upon request finish. * */ class MegaCmdListenerFuncExecuter : public mega::MegaRequestListener { private: std::function onRequestFinishCallback; bool mAutoremove = true; public: /** * @brief MegaCmdListenerFuncExecuter * @param func to call upon onRequestFinish * @param autoremove whether this should be deleted after func is called */ MegaCmdListenerFuncExecuter(std::function func, bool autoremove = false) { onRequestFinishCallback = std::move(func); mAutoremove = autoremove; } void onRequestFinish(mega::MegaApi *api, mega::MegaRequest *request, mega::MegaError *e) { onRequestFinishCallback(api, request, e); if (mAutoremove) { delete this; } } virtual void onRequestStart(mega::MegaApi* api, mega::MegaRequest *request) {} virtual void onRequestUpdate(mega::MegaApi* api, mega::MegaRequest *request) {} virtual void onRequestTemporaryError(mega::MegaApi *api, mega::MegaRequest *request, mega::MegaError* e) {} }; class MegaCmdTransferListener : public mega::SynchronousTransferListener { private: MegaCmdSandbox * sandboxCMD; float percentDownloaded; bool alreadyFinished; int clientID; public: MegaCmdTransferListener(mega::MegaApi *megaApi, MegaCmdSandbox * sandboxCMD, mega::MegaTransferListener *listener = NULL, int clientID=-1); virtual ~MegaCmdTransferListener(); //Transfer callbacks virtual void onTransferStart(mega::MegaApi* api, mega::MegaTransfer *transfer); virtual void doOnTransferFinish(mega::MegaApi* api, mega::MegaTransfer *transfer, mega::MegaError* e); virtual void onTransferUpdate(mega::MegaApi* api, mega::MegaTransfer *transfer); virtual void onTransferTemporaryError(mega::MegaApi *api, mega::MegaTransfer *transfer, mega::MegaError* e); virtual bool onTransferData(mega::MegaApi *api, mega::MegaTransfer *transfer, char *buffer, size_t size); protected: mega::MegaTransferListener *listener; }; class MegaCmdCatTransferListener : public MegaCmdTransferListener { private: LoggedStream *ls; public: std::string contents; MegaCmdCatTransferListener(LoggedStream *_ls, mega::MegaApi *megaApi, MegaCmdSandbox * sandboxCMD, mega::MegaTransferListener *listener = NULL, int clientID=-1) :MegaCmdTransferListener(megaApi,sandboxCMD,listener,clientID),ls(_ls){}; bool onTransferData(mega::MegaApi *api, mega::MegaTransfer *transfer, char *buffer, size_t size); }; class MegaCmdMultiTransferListener : public mega::SynchronousTransferListener { private: MegaCmdSandbox * sandboxCMD; float percentDownloaded; bool alreadyFinished; int clientID; unsigned created; int finished; long long transferredbytes; std::map ongoingtransferredbytes; std::map ongoingtotalbytes; long long totalbytes; int finalerror; long long getOngoingTransferredBytes(); long long getOngoingTotalBytes(); bool progressinformed; std::mutex mStartedTransfersMutex; //to protect mStartedTransfers std::condition_variable mStartedConditionVariable; unsigned mStartedTransfersCount = 0; std::function mOnTransferStartCb; public: MegaCmdMultiTransferListener(mega::MegaApi *megaApi, MegaCmdSandbox * sandboxCMD, mega::MegaTransferListener *listener = NULL, int clientID=-1); virtual ~MegaCmdMultiTransferListener(); //Transfer callbacks virtual void onTransferStart(mega::MegaApi* api, mega::MegaTransfer *transfer); virtual void doOnTransferFinish(mega::MegaApi* api, mega::MegaTransfer *transfer, mega::MegaError* e); virtual void onTransferUpdate(mega::MegaApi* api, mega::MegaTransfer *transfer); virtual void onTransferTemporaryError(mega::MegaApi *api, mega::MegaTransfer *transfer, mega::MegaError* e); virtual bool onTransferData(mega::MegaApi *api, mega::MegaTransfer *transfer, char *buffer, size_t size); void onNewTransfer(); void onTransferStarted(const std::string &path, int tag); void waitMultiEnd(); // waits untill all transfers have started void waitMultiStart(); int getFinalerror() const; long long getTotalbytes() const; bool getProgressinformed() const; template void setOnTransferStartCb(Cb &&cb) { mOnTransferStartCb = std::forward(cb); } protected: mega::MegaTransferListener *listener; }; /** * @brief TODO: document and rename * Note: self destructive */ class ATransferListener : public mega::MegaTransferListener { private: std::shared_ptr mMultiTransferListener; //the listener this belongs too const std::string mPath; //The path that originated the transfer public: ATransferListener(const std::shared_ptr &mMultiTransferListener, const std::string &path); virtual ~ATransferListener(); //Transfer callbacks virtual void onTransferStart(mega::MegaApi* api, mega::MegaTransfer *transfer); virtual void onTransferFinish(mega::MegaApi* api, mega::MegaTransfer *transfer, mega::MegaError* e); virtual void onTransferUpdate(mega::MegaApi* api, mega::MegaTransfer *transfer); virtual void onTransferTemporaryError(mega::MegaApi *api, mega::MegaTransfer *transfer, mega::MegaError* e); virtual bool onTransferData(mega::MegaApi *api, mega::MegaTransfer *transfer, char *buffer, size_t size); }; class MegaCmdGlobalListener : public mega::MegaGlobalListener { private: MegaCmdLogger *loggerCMD; MegaCmdSandbox *sandboxCMD; std::atomic_bool ongoing; public: MegaCmdGlobalListener(MegaCmdLogger *logger, MegaCmdSandbox *sandboxCMD); void onNodesUpdate(mega::MegaApi* api, mega::MegaNodeList *nodes); void onUsersUpdate(mega::MegaApi* api, mega::MegaUserList *users); void onAccountUpdate(mega::MegaApi *api); void onEvent(mega::MegaApi *api, mega::MegaEvent *event); #ifdef ENABLE_CHAT void onChatsUpdate(mega::MegaApi*, mega::MegaTextChatList*); #endif }; class DisableMountErrorsBroadcastingGuard { static std::atomic sDisableBroadcasting; public: DisableMountErrorsBroadcastingGuard() { sDisableBroadcasting++; } ~DisableMountErrorsBroadcastingGuard() { sDisableBroadcasting--; } static bool shouldBroadcast() { return sDisableBroadcasting == 0; } }; class MegaCmdMegaListener : public mega::MegaListener { void onMountEvent(std::string_view pastTense, std::string_view presentTense, std::string_view path, int result); public: MegaCmdMegaListener(mega::MegaApi *megaApi, mega::MegaListener *parent=NULL, MegaCmdSandbox *sandboxCMD = NULL); virtual ~MegaCmdMegaListener(); virtual void onRequestFinish(mega::MegaApi* api, mega::MegaRequest *request, mega::MegaError* e); #ifdef ENABLE_CHAT void onChatsUpdate(mega::MegaApi *api, mega::MegaTextChatList *chats); #endif virtual void onBackupStateChanged(mega::MegaApi *api, mega::MegaScheduledCopy *backup); virtual void onBackupStart(mega::MegaApi *api, mega::MegaScheduledCopy *backup); virtual void onBackupFinish(mega::MegaApi* api, mega::MegaScheduledCopy *backup, mega::MegaError* error); virtual void onBackupUpdate(mega::MegaApi *api, mega::MegaScheduledCopy *backup); virtual void onBackupTemporaryError(mega::MegaApi *api, mega::MegaScheduledCopy *backup, mega::MegaError* error); void onMountAdded(mega::MegaApi* api, const char* path, int result) override; void onMountRemoved(mega::MegaApi* api, const char* path, int result) override; void onMountChanged(mega::MegaApi* api, const char* path, int result) override; void onMountEnabled(mega::MegaApi* api, const char* path, int result) override; void onMountDisabled(mega::MegaApi* api, const char* path, int result) override; void onSyncAdded(mega::MegaApi *api, mega::MegaSync *sync) override; void onSyncStateChanged(mega::MegaApi *api, mega::MegaSync *sync) override; void onSyncDeleted(mega::MegaApi *api, mega::MegaSync *sync) override; protected: mega::MegaApi *megaApi; mega::MegaListener *listener; MegaCmdSandbox *sandboxCMD; }; class MegaCmdGlobalTransferListener : public mega::MegaTransferListener { private: MegaCmdSandbox *sandboxCMD; static const int MAXCOMPLETEDTRANSFERSBUFFER; public: std::mutex completedTransfersMutex; std::deque completedTransfers; std::map completedPathsByHandle; public: MegaCmdGlobalTransferListener(mega::MegaApi *megaApi, MegaCmdSandbox *sandboxCMD, mega::MegaTransferListener *parent = NULL); virtual ~MegaCmdGlobalTransferListener(); //Transfer callbacks void onTransferFinish(mega::MegaApi* api, mega::MegaTransfer *transfer, mega::MegaError* error); void onTransferTemporaryError(mega::MegaApi *api, mega::MegaTransfer *transfer, mega::MegaError* e); bool onTransferData(mega::MegaApi *api, mega::MegaTransfer *transfer, char *buffer, size_t size); protected: mega::MegaApi *megaApi; mega::MegaTransferListener *listener; }; class MegaCmdFatalErrorListener : public mega::MegaGlobalListener { MegaCmdSandbox& mCmdSandbox; static std::string_view getFatalErrorStr(int64_t fatalErrorType); template mega::MegaRequestListener* createLogoutListener(std::string_view msg); void onEvent(mega::MegaApi *api, mega::MegaEvent *event) override; public: MegaCmdFatalErrorListener(MegaCmdSandbox& cmdSandbox); }; } //end namespace #endif // LISTENERS_H MEGAcmd-2.5.2_Linux/src/loader/000077500000000000000000000000001516543156300161425ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/src/loader/megacmdloader.cpp000066400000000000000000000012321516543156300214300ustar00rootroot00000000000000/** * @file src/loader/megacmdloader.cpp * @brief MEGAcmdClient: Loader application of MEGAcmd for MAC * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include int main(int argc, char *argv[]) { execl("/Applications/MEGAcmd.app/Contents/MacOS/mega-cmd", NULL); return 0; } MEGAcmd-2.5.2_Linux/src/megacmd.cpp000066400000000000000000006514421516543156300170110ustar00rootroot00000000000000/** * @file src/megacmd.cpp * @brief MEGAcmd: Interactive CLI and service application * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "mega/log_level.h" #include "megacmdcommonutils.h" #include "megacmd.h" #include "megaapi.h" #include "megacmdsandbox.h" #include "megacmdexecuter.h" #include "megacmdutils.h" #include "configurationmanager.h" #include "megacmdlogger.h" #include "comunicationsmanager.h" #include "listeners.h" #include "megacmd_fuse.h" #include "sync_command.h" #include "megacmdplatform.h" #include "megacmdversion.h" #ifdef MEGACMD_TESTING_CODE #include "../tests/common/Instruments.h" #endif #define USE_VARARGS #define PREFER_STDARG #include #include #include #include #ifdef __linux__ #include #endif #ifndef _WIN32 #include "signal.h" #include #else #include #include #include #include #include #include #define strdup _strdup // avoid warning #endif #ifdef __APPLE__ #include #endif #if !defined (PARAMS) # if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus) # define PARAMS(protos) protos # else # define PARAMS(protos) () # endif #endif #define SSTR( x ) static_cast< const std::ostringstream & >( \ ( std::ostringstream() << std::dec << x ) ).str() #ifndef ERRNO #ifdef _WIN32 #include #define ERRNO WSAGetLastError() #else #define ERRNO errno #endif #endif #ifdef _WIN32 #include "comunicationsmanagernamedpipes.h" #define COMUNICATIONMANAGER ComunicationsManagerNamedPipes #else #include "comunicationsmanagerfilesockets.h" #define COMUNICATIONMANAGER ComunicationsManagerFileSockets #include #endif using namespace mega; namespace megacmd { using namespace std; typedef char *completionfunction_t PARAMS((const char *, int)); MegaCmdExecuter *cmdexecuter; MegaCmdSandbox *sandboxCMD; MegaSemaphore semaphoreClients; //to limit max parallel petitions MegaApi *api = nullptr; //api objects for folderlinks std::queue apiFolders; std::vector occupiedapiFolders; MegaSemaphore semaphoreapiFolders; std::mutex mutexapiFolders; MegaCmdLogger *loggerCMD; std::mutex mutexEndedPetitionThreads; std::vector> petitionThreads; std::vector endedPetitionThreads; MegaThread *threadRetryConnections; std::mutex greetingsmsgsMutex; std::deque greetingsFirstClientMsgs; // to be given on first client to register as state listener std::deque greetingsAllClientMsgs; // to be given on all clients when registering as state listener std::mutex delayedBroadcastMutex; std::deque delayedBroadCastMessages; // messages to be brodcasted in a while //Comunications Manager ComunicationsManager * cm; // global listener MegaCmdGlobalListener* megaCmdGlobalListener; MegaCmdMegaListener* megaCmdMegaListener; vector validCommands = allValidCommands; // password change-related state information string oldpasswd; string newpasswd; std::atomic_bool doExit = false; bool consoleFailed = false; bool alreadyCheckingForUpdates = false; std::atomic_bool stopCheckingforUpdaters = false; string dynamicprompt = "MEGA CMD> "; static prompttype prompt = COMMAND; static std::atomic_bool loginInAtStartup(false); static std::atomic blocked(0); time_t lastTimeCheckBlockStatus = 0; static std::atomic<::mega::m_time_t> timeOfLoginInAtStartup(0); ::mega::m_time_t timeLoginStarted(); // local console Console* console; std::mutex mutexHistory; map threadline; char ** mcmdMainArgv; int mcmdMainArgc; void printWelcomeMsg(); void delete_finished_threads(); void appendGreetingStatusFirstListener(const std::string &msj) { std::lock_guard g(greetingsmsgsMutex); greetingsFirstClientMsgs.push_front(msj); } void removeGreetingStatusFirstListener(const std::string &msj) { std::lock_guard g(greetingsmsgsMutex); for(auto it = greetingsFirstClientMsgs.begin(); it != greetingsFirstClientMsgs.end();) { if (*it == msj) { it = greetingsFirstClientMsgs.erase(it); } else { ++it; } } } void appendGreetingStatusAllListener(const std::string &msj) { std::lock_guard g(greetingsmsgsMutex); greetingsAllClientMsgs.push_front(msj); } void clearGreetingStatusAllListener() { std::lock_guard g(greetingsmsgsMutex); greetingsAllClientMsgs.clear(); } void clearGreetingStatusFirstListener() { std::lock_guard g(greetingsmsgsMutex); greetingsFirstClientMsgs.clear(); } void removeGreetingStatusAllListener(const std::string &msj) { std::lock_guard g(greetingsmsgsMutex); for(auto it = greetingsAllClientMsgs.begin(); it != greetingsAllClientMsgs.end();) { if (*it == msj) { it = greetingsAllClientMsgs.erase(it); } else { ++it; } } } string getCurrentThreadLine() { uint64_t currentThread = MegaThread::currentThreadId(); if (threadline.find(currentThread) == threadline.end()) { // not found thread return string(); } else { return threadline[currentThread]; } } void setCurrentThreadLine(string s) { threadline[MegaThread::currentThreadId()] = s; } void setCurrentThreadLine(const vector& vec) { setCurrentThreadLine(joinStrings(vec)); } void sigint_handler(int signum) { LOG_verbose << "Received signal: " << signum; LOG_debug << "Exiting due to SIGINT"; stopCheckingforUpdaters = true; doExit = true; } #ifdef _WIN32 BOOL __stdcall CtrlHandler( DWORD fdwCtrlType ) { LOG_verbose << "Reached CtrlHandler: " << fdwCtrlType; switch( fdwCtrlType ) { // Handle the CTRL-C signal. case CTRL_C_EVENT: sigint_handler((int)fdwCtrlType); return( TRUE ); default: return FALSE; } } #endif prompttype getprompt() { return prompt; } void setprompt(prompttype p, string arg) { prompt = p; if (p == COMMAND) { console->setecho(true); } else { if (arg.size()) { OUTSTREAM << arg << flush; } else { OUTSTREAM << prompts[p] << flush; } console->setecho(false); } } void changeprompt(const char *newprompt) { dynamicprompt = newprompt; string s = "prompt:"; s+=dynamicprompt; cm->informStateListeners(s); } void informStateListeners(string s) { cm->informStateListeners(s); } void informStateListener(string message, int clientID) { string s; if (message.size()) { s += "message:"; s+=message; cm->informStateListenerByClientId(s, clientID); } } void broadcastMessage(string message, bool keepIfNoListeners) { string s; if (message.size()) { s += "message:"; s+=message; string unalteredCopy(s); if (!cm->informStateListeners(s) && keepIfNoListeners) { appendGreetingStatusFirstListener(unalteredCopy); } } } void removeDelayedBroadcastMatching(const string &toMatch) { std::lock_guard g(delayedBroadcastMutex); for (auto it = delayedBroadCastMessages.begin(); it != delayedBroadCastMessages.end(); ) { if ((*it).find(toMatch) != string::npos) { it = delayedBroadCastMessages.erase(it); } else { ++it; } } } void removeGreetingMatching(const string &toMatch) { std::lock_guard g(greetingsmsgsMutex); for (auto it = greetingsAllClientMsgs.begin(); it != greetingsAllClientMsgs.end(); ) { if ((*it).find(toMatch) != string::npos) { it = greetingsAllClientMsgs.erase(it); } else { ++it; } } } void broadcastDelayedMessage(string message, bool keepIfNoListeners) { static bool ongoing = false; std::lock_guard g(delayedBroadcastMutex); delayedBroadCastMessages.push_back(message); if (!ongoing) { ongoing = true; std::thread([keepIfNoListeners]() { sleepSeconds(4); std::unique_lock g(delayedBroadcastMutex); while (!delayedBroadCastMessages.empty()) { auto msg = std::move(delayedBroadCastMessages.front()); delayedBroadCastMessages.pop_front(); g.unlock(); // Broadcast without mutex locked broadcastMessage(msg, keepIfNoListeners); g.lock(); } ongoing = false; }).detach(); } } void informTransferUpdate(MegaTransfer *transfer, int clientID) { informProgressUpdate(transfer->getTransferredBytes(),transfer->getTotalBytes(), clientID); } void informStateListenerByClientId(int clientID, string s) { cm->informStateListenerByClientId(s, clientID); } void informProgressUpdate(long long transferred, long long total, int clientID, string title) { string s = "progress:"; s+=SSTR(transferred); s+=":"; s+=SSTR(total); if (title.size()) { s+=":"; s+=title; } informStateListenerByClientId(clientID, s); } void insertValidParamsPerCommand(set *validParams, string thecommand, set *validOptValues = nullptr, bool skipDeprecated = false) { if (!validOptValues) { validOptValues = validParams; } validOptValues->insert("client-width"); if ("ls" == thecommand) { validParams->insert("R"); validParams->insert("r"); validParams->insert("l"); validParams->insert("a"); validParams->insert("h"); validParams->insert("show-handles"); validParams->insert("versions"); validParams->insert("show-creation-time"); validOptValues->insert("time-format"); validParams->insert("tree"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } else if ("passwd" == thecommand) { validParams->insert("f"); validOptValues->insert("auth-code"); } else if ("du" == thecommand) { validParams->insert("h"); validParams->insert("versions"); validOptValues->insert("path-display-size"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } else if ("help" == thecommand) { validParams->insert("f"); validParams->insert("ff"); validParams->insert("non-interactive"); validParams->insert("upgrade"); validParams->insert("paths"); validParams->insert("show-all-options"); #ifdef _WIN32 validParams->insert("unicode"); #endif } else if ("version" == thecommand) { validParams->insert("l"); validParams->insert("c"); } else if ("rm" == thecommand) { validParams->insert("r"); validParams->insert("f"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } else if ("mv" == thecommand) { #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } else if ("cp" == thecommand) { #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } else if ("speedlimit" == thecommand) { validParams->insert("u"); validParams->insert("d"); validParams->insert("h"); validParams->insert("upload-connections"); validParams->insert("download-connections"); } else if ("whoami" == thecommand) { validParams->insert("l"); } else if ("df" == thecommand) { validParams->insert("h"); } else if ("mediainfo" == thecommand) { validOptValues->insert("path-display-size"); } else if ("log" == thecommand) { validParams->insert("c"); validParams->insert("s"); } #ifndef _WIN32 else if ("permissions" == thecommand) { validParams->insert("s"); validParams->insert("files"); validParams->insert("folders"); } #endif else if ("deleteversions" == thecommand) { validParams->insert("all"); validParams->insert("f"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } else if ("exclude" == thecommand) { validParams->insert("a"); validParams->insert("d"); } #ifdef HAVE_LIBUV else if ("webdav" == thecommand) { validParams->insert("d"); validParams->insert("all"); validParams->insert("tls"); validParams->insert("public"); validOptValues->insert("port"); validOptValues->insert("certificate"); validOptValues->insert("key"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } else if ("ftp" == thecommand) { validParams->insert("d"); validParams->insert("all"); validParams->insert("tls"); validParams->insert("public"); validOptValues->insert("port"); validOptValues->insert("data-ports"); validOptValues->insert("certificate"); validOptValues->insert("key"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } #endif else if ("backup" == thecommand) { validOptValues->insert("period"); validOptValues->insert("num-backups"); validParams->insert("d"); // validParams->insert("s"); // validParams->insert("r"); validParams->insert("a"); // validParams->insert("i"); validParams->insert("l"); validParams->insert("h"); validOptValues->insert("path-display-size"); validOptValues->insert("time-format"); } else if ("sync" == thecommand) { validParams->insert("p"); validParams->insert("pause"); validParams->insert("e"); validParams->insert("enable"); validParams->insert("d"); validParams->insert("delete"); validParams->insert("show-handles"); validOptValues->insert("path-display-size"); validOptValues->insert("col-separator"); validOptValues->insert("output-cols"); if (!skipDeprecated) { // Deprecated (kept for backwards compatibility) validParams->insert("remove"); validParams->insert("s"); validParams->insert("disable"); validParams->insert("r"); } } else if ("sync-issues" == thecommand) { validParams->insert("enable-warning"); validParams->insert("disable-warning"); validParams->insert("disable-path-collapse"); validParams->insert("detail"); validParams->insert("all"); validOptValues->insert("limit"); validOptValues->insert("col-separator"); validOptValues->insert("output-cols"); } else if ("sync-ignore" == thecommand) { validParams->insert("show"); validParams->insert("add"); validParams->insert("add-exclusion"); validParams->insert("remove"); validParams->insert("remove-exclusion"); } else if ("sync-config" == thecommand) { validParams->insert("delayed-uploads-wait-seconds"); validParams->insert("delayed-uploads-max-attempts"); } else if ("configure" == thecommand) { } else if ("export" == thecommand) { validParams->insert("a"); validParams->insert("d"); validParams->insert("f"); validParams->insert("writable"); validParams->insert("mega-hosted"); validOptValues->insert("expire"); validOptValues->insert("password"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif } else if ("share" == thecommand) { validParams->insert("a"); validParams->insert("d"); validParams->insert("p"); validOptValues->insert("with"); validOptValues->insert("level"); validOptValues->insert("personal-representation"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif validOptValues->insert("time-format"); } else if ("find" == thecommand) { validOptValues->insert("pattern"); validOptValues->insert("l"); validParams->insert("show-handles"); validParams->insert("print-only-handles"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif validOptValues->insert("mtime"); validOptValues->insert("size"); validOptValues->insert("time-format"); validOptValues->insert("type"); } else if ("mkdir" == thecommand) { validParams->insert("p"); } else if ("users" == thecommand) { validParams->insert("help-verify"); validParams->insert("verify"); validParams->insert("unverify"); validParams->insert("s"); validParams->insert("h"); validParams->insert("d"); validParams->insert("n"); validOptValues->insert("time-format"); } else if ("killsession" == thecommand) { validParams->insert("a"); } else if ("invite" == thecommand) { validParams->insert("d"); validParams->insert("r"); validOptValues->insert("message"); } else if ("signup" == thecommand) { validOptValues->insert("name"); } else if ("logout" == thecommand) { validParams->insert("keep-session"); } else if ("attr" == thecommand) { validParams->insert("d"); validParams->insert("s"); validParams->insert("force-non-official"); validParams->insert("print-only-value"); } else if ("userattr" == thecommand) { validOptValues->insert("user"); validParams->insert("s"); validParams->insert("list"); } else if ("ipc" == thecommand) { validParams->insert("a"); validParams->insert("d"); validParams->insert("i"); } else if ("showpcr" == thecommand) { validParams->insert("in"); validParams->insert("out"); validOptValues->insert("time-format"); } else if ("thumbnail" == thecommand) { validParams->insert("s"); } else if ("preview" == thecommand) { validParams->insert("s"); } else if ("put" == thecommand) { validParams->insert("c"); validParams->insert("q"); validParams->insert("print-tag-at-start"); validParams->insert("ignore-quota-warn"); //deprecated: no use validOptValues->insert("clientID"); } else if ("get" == thecommand) { validParams->insert("m"); validParams->insert("q"); validParams->insert("ignore-quota-warn"); validOptValues->insert("password"); #ifdef USE_PCRE validParams->insert("use-pcre"); #endif validOptValues->insert("clientID"); } else if ("import" == thecommand) { validOptValues->insert("password"); } else if ("login" == thecommand) { validOptValues->insert("clientID"); validOptValues->insert("auth-code"); validOptValues->insert("auth-key"); validOptValues->insert("password"); validOptValues->insert("resume"); } else if ("psa" == thecommand) { validParams->insert("discard"); } else if ("reload" == thecommand) { validOptValues->insert("clientID"); } else if ("transfers" == thecommand) { validParams->insert("show-completed"); validParams->insert("summary"); validParams->insert("only-uploads"); validParams->insert("only-completed"); validParams->insert("only-downloads"); validParams->insert("show-syncs"); validParams->insert("c"); validParams->insert("a"); validParams->insert("p"); validParams->insert("r"); validOptValues->insert("limit"); validOptValues->insert("path-display-size"); validOptValues->insert("col-separator"); validOptValues->insert("output-cols"); } else if ("proxy" == thecommand) { validParams->insert("auto"); validParams->insert("none"); validOptValues->insert("username"); validOptValues->insert("password"); } else if ("confirm" == thecommand) { validParams->insert("security"); } else if ("exit" == thecommand || "quit" == thecommand) { validParams->insert("only-shell"); } #if defined(_WIN32) || defined(__APPLE__) else if ("update" == thecommand) { validOptValues->insert("auto"); } #endif else if ("tree" == thecommand) { validParams->insert("show-handles"); } #ifdef WITH_FUSE if (thecommand == "fuse-add") { validParams->emplace("disabled"); validParams->emplace("transient"); validParams->emplace("read-only"); validOptValues->emplace("name"); } else if (thecommand == "fuse-enable") { validParams->emplace("temporarily"); } else if (thecommand == "fuse-disable") { validParams->emplace("temporarily"); } else if (thecommand == "fuse-show") { validParams->emplace("only-enabled"); validParams->emplace("disable-path-collapse"); validOptValues->emplace("limit"); } else if (thecommand == "fuse-config") { validOptValues->emplace("name"); validOptValues->emplace("enable-at-startup"); validOptValues->emplace("persistent"); validOptValues->emplace("read-only"); } #endif #if defined(DEBUG) || defined(MEGACMD_TESTING_CODE) else if ("echo" == thecommand) { validParams->insert("log-as-err"); } #endif } void escapeEspace(string &orig) { replaceAll(orig," ", "\\ "); } void unescapeEspace(string &orig) { replaceAll(orig,"\\ ", " "); } char* empty_completion(const char* text, int state) { // we offer 2 different options so that it doesn't complete (no space is inserted) if (state == 0) { return strdup(" "); } if (state == 1) { return strdup(text); } return NULL; } char* generic_completion(const char* text, int state, vector validOptions) { static size_t list_index, len; static bool foundone; string name; if (!validOptions.size()) // no matches { return empty_completion(text,state); //dont fall back to filenames } if (!state) { list_index = 0; foundone = false; len = strlen(text); } while (list_index < validOptions.size()) { name = validOptions.at(list_index); //Notice: do not escape options for cmdshell. Plus, we won't filter here, because we don't know if the value of rl_completion_quote_chararcter of cmdshell // The filtering and escaping will be performed by the completion function in cmdshell if (isCurrentThreadInteractive() && !isCurrentThreadCmdShell()) { escapeEspace(name); } list_index++; if (!( strcmp(text, "")) || (( name.size() >= len ) && ( strlen(text) >= len ) && ( name.find(text) == 0 ) ) || isCurrentThreadCmdShell() //do not filter if cmdshell (it will be filter there) ) { foundone = true; return dupstr((char*)name.c_str()); } } if (!foundone) { return empty_completion(text,state); //dont fall back to filenames } return((char*)NULL ); } char* commands_completion(const char* text, int state) { return generic_completion(text, state, validCommands); } char* local_completion(const char* text, int state) { return((char*)NULL ); } void addGlobalFlags(set *setvalidparams) { for (auto &v : validGlobalParameters) { setvalidparams->insert(v); } } char * flags_completion(const char*text, int state) { static vector validparams; if (state == 0) { validparams.clear(); string saved_line = getCurrentThreadLine(); vector words = getlistOfWords(saved_line.c_str(), !isCurrentThreadCmdShell()); if (words.size()) { set setvalidparams; set setvalidOptValues; addGlobalFlags(&setvalidparams); string thecommand = words[0]; insertValidParamsPerCommand(&setvalidparams, thecommand, &setvalidOptValues, true /* skipDeprecated*/); set::iterator it; for (it = setvalidparams.begin(); it != setvalidparams.end(); it++) { string param = *it; string toinsert; if (param.size() > 1) { toinsert = "--" + param; } else { toinsert = "-" + param; } validparams.push_back(toinsert); } for (it = setvalidOptValues.begin(); it != setvalidOptValues.end(); it++) { string param = *it; string toinsert; if (param.size() > 1) { toinsert = "--" + param + '='; } else { toinsert = "-" + param + '='; } validparams.push_back(toinsert); } } } char *toret = generic_completion(text, state, validparams); return toret; } char * flags_value_completion(const char*text, int state) { static vector validValues; if (state == 0) { validValues.clear(); string saved_line = getCurrentThreadLine(); vector words = getlistOfWords(saved_line.c_str(), !isCurrentThreadCmdShell()); if (words.size() > 1) { string thecommand = words[0]; string currentFlag = words[words.size() - 1]; map cloptions; map clflags; set validParams; insertValidParamsPerCommand(&validParams, thecommand, nullptr /* validOptValues */, true /* skipDeprecated */); if (setOptionsAndFlags(&cloptions, &clflags, &words, validParams, true)) { // return invalid?? } if (currentFlag.find("--time-format=") == 0) { string prefix = strncmp(text, "--time-format=", strlen("--time-format="))?"":"--time-format="; for (int i = 0; i < MCMDTIME_TOTAL; i++) { validValues.push_back(prefix+getTimeFormatNameFromId(i)); } } if (thecommand == "share") { if (currentFlag.find("--level=") == 0) { string prefix = strncmp(text, "--level=", strlen("--level="))?"":"--level="; validValues.push_back(prefix+getShareLevelStr(MegaShare::ACCESS_UNKNOWN)); validValues.push_back(prefix+getShareLevelStr(MegaShare::ACCESS_READ)); validValues.push_back(prefix+getShareLevelStr(MegaShare::ACCESS_READWRITE)); validValues.push_back(prefix+getShareLevelStr(MegaShare::ACCESS_FULL)); validValues.push_back(prefix+getShareLevelStr(MegaShare::ACCESS_OWNER)); validValues.push_back(prefix+getShareLevelStr(MegaShare::ACCESS_UNKNOWN)); } if (currentFlag.find("--with=") == 0) { validValues = cmdexecuter->getlistusers(); string prefix = strncmp(text, "--with=", strlen("--with="))?"":"--with="; for (unsigned int i=0;i validpaths; if (state == 0) { string wildtext(text); bool usepcre = false; //pcre makes no sense in paths completion if (usepcre) { #ifdef USE_PCRE wildtext += "."; #elif __cplusplus >= 201103L wildtext += "."; #endif } wildtext += "*"; unescapeEspace(wildtext); validpaths = cmdexecuter->listpaths(usepcre, wildtext, onlyfolders); // we need to escape '\' to fit what's done when parsing words if (!isCurrentThreadCmdShell()) { for (int i = 0; i < (int)validpaths.size(); i++) { replaceAll(validpaths[i],"\\","\\\\"); } } } return generic_completion(text, state, validpaths); } char* remotepaths_completion(const char* text, int state) { return remotepaths_completion(text, state, false); } char* remotefolders_completion(const char* text, int state) { return remotepaths_completion(text, state, true); } char* loglevels_completion(const char* text, int state) { static vector validloglevels; if (state == 0) { validloglevels.push_back(getLogLevelStr(MegaApi::LOG_LEVEL_FATAL)); validloglevels.push_back(getLogLevelStr(MegaApi::LOG_LEVEL_ERROR)); validloglevels.push_back(getLogLevelStr(MegaApi::LOG_LEVEL_WARNING)); validloglevels.push_back(getLogLevelStr(MegaApi::LOG_LEVEL_INFO)); validloglevels.push_back(getLogLevelStr(MegaApi::LOG_LEVEL_DEBUG)); validloglevels.push_back(getLogLevelStr(MegaApi::LOG_LEVEL_MAX)); } return generic_completion(text, state, validloglevels); } char* localfolders_completion(const char* text, int state) { static vector validpaths; if (state == 0) { string what(text); unescapeEspace(what); validpaths = cmdexecuter->listLocalPathsStartingBy(what, true); } return generic_completion(text, state, validpaths); } char* transfertags_completion(const char* text, int state) { static vector validtransfertags; if (state == 0) { std::unique_ptr transferdata(api->getTransferData()); if (transferdata) { for (int i = 0; i < transferdata->getNumUploads(); i++) { validtransfertags.push_back(SSTR(transferdata->getUploadTag(i))); } for (int i = 0; i < transferdata->getNumDownloads(); i++) { validtransfertags.push_back(SSTR(transferdata->getDownloadTag(i))); } // TODO: reconsider including completed transfers (sth like this:) // globalTransferListener->completedTransfersMutex.lock(); // for (unsigned int i = 0;i < globalTransferListener->completedTransfers.size() && shownCompleted < limit; i++) // { // MegaTransfer *transfer = globalTransferListener->completedTransfers.at(shownCompleted); // if (!transfer->isSyncTransfer()) // { // validtransfertags.push_back(SSTR(transfer->getTag())); // shownCompleted++; // } // } // globalTransferListener->completedTransfersMutex.unlock(); } } return generic_completion(text, state, validtransfertags); } char* config_completion(const char* text, int state) { static vector validkeys = [](){ static vector keys; for (auto &vc : Instance::Get().getConfigurators()) { keys.push_back(vc.mKey); } return keys; }(); return generic_completion(text, state, validkeys); } char* contacts_completion(const char* text, int state) { static vector validcontacts; if (state == 0) { validcontacts = cmdexecuter->getlistusers(); } return generic_completion(text, state, validcontacts); } char* sessions_completion(const char* text, int state) { static vector validSessions; if (state == 0) { validSessions = cmdexecuter->getsessions(); } if (validSessions.size() == 0) { return empty_completion(text, state); } return generic_completion(text, state, validSessions); } char* nodeattrs_completion(const char* text, int state) { static vector validAttrs; if (state == 0) { validAttrs.clear(); string saved_line = getCurrentThreadLine(); vector words = getlistOfWords(saved_line.c_str(), !isCurrentThreadCmdShell()); if (words.size() > 1) { validAttrs = cmdexecuter->getNodeAttrs(words[1]); } } if (validAttrs.size() == 0) { return empty_completion(text, state); } return generic_completion(text, state, validAttrs); } char* userattrs_completion(const char* text, int state) { static vector validAttrs; if (state == 0) { validAttrs.clear(); validAttrs = cmdexecuter->getUserAttrs(); } if (validAttrs.size() == 0) { return empty_completion(text, state); } return generic_completion(text, state, validAttrs); } completionfunction_t *getCompletionFunction(vector words) { // Strip words without flags string thecommand = words[0]; if (words.size() > 1) { string lastword = words[words.size() - 1]; if (lastword.find_first_of("-") == 0) { if (lastword.find_last_of("=") != string::npos) { return flags_value_completion; } else { return flags_completion; } } } discardOptionsAndFlags(&words); int currentparameter = int(words.size() - 1); if (stringcontained(thecommand.c_str(), localremotefolderpatterncommands)) { if (currentparameter == 1) { return local_completion; } if (currentparameter == 2) { return remotefolders_completion; } } else if (thecommand == "put") { if (currentparameter == 1) { return local_completion; } else { return remotepaths_completion; } } else if (thecommand == "backup") { if (currentparameter == 1) { return localfolders_completion; } else { return remotefolders_completion; } } else if (stringcontained(thecommand.c_str(), remotepatterncommands)) { if (currentparameter == 1) { return remotepaths_completion; } } else if (stringcontained(thecommand.c_str(), remotefolderspatterncommands)) { if (currentparameter == 1) { return remotefolders_completion; } } else if (stringcontained(thecommand.c_str(), multipleremotepatterncommands)) { if (currentparameter >= 1) { return remotepaths_completion; } } else if (stringcontained(thecommand.c_str(), localfolderpatterncommands)) { if (currentparameter == 1) { return localfolders_completion; } } else if (stringcontained(thecommand.c_str(), remoteremotepatterncommands)) { if (( currentparameter == 1 ) || ( currentparameter == 2 )) { return remotepaths_completion; } } else if (stringcontained(thecommand.c_str(), remotelocalpatterncommands)) { if (currentparameter == 1) { return remotepaths_completion; } if (currentparameter == 2) { return local_completion; } } else if (stringcontained(thecommand.c_str(), emailpatterncommands)) { if (currentparameter == 1) { return contacts_completion; } } else if (thecommand == "import") { if (currentparameter == 2) { return remotepaths_completion; } } else if (thecommand == "killsession") { if (currentparameter == 1) { return sessions_completion; } } else if (thecommand == "attr") { if (currentparameter == 1) { return remotepaths_completion; } if (currentparameter == 2) { return nodeattrs_completion; } } else if (thecommand == "userattr") { if (currentparameter == 1) { return userattrs_completion; } } else if (thecommand == "log") { if (currentparameter == 1) { return loglevels_completion; } } else if (thecommand == "transfers") { if (currentparameter == 1) { return transfertags_completion; } } else if (thecommand == "configure") { if (currentparameter == 1) { return config_completion; } } return empty_completion; } string getListOfCompletionValues(vector words, char separator = ' ', const char * separators = " :;!`\"'\\()[]{}<>", bool suppressflag = true) { string completionValues; completionfunction_t * compfunction = getCompletionFunction(words); if (compfunction == local_completion) { if (!isCurrentThreadInteractive()) { return "MEGACMD_USE_LOCAL_COMPLETION"; } else { string toret="MEGACMD_USE_LOCAL_COMPLETION"; toret+=cmdexecuter->getLPWD(); return toret; } } #ifdef _WIN32 // // let MEGAcmdShell handle the local folder completion (available via autocomplete.cpp stuff that takes into account units/unicode/etc...) // else if (compfunction == localfolders_completion) // { // if (!interactiveThread()) // { // return "MEGACMD_USE_LOCAL_COMPLETIONFOLDERS"; // } // else // { // string toret="MEGACMD_USE_LOCAL_COMPLETIONFOLDERS"; // toret+=cmdexecuter->getLPWD(); // return toret; // } // } #endif int state=0; if (words.size()>1) while (true) { char *newval; string &lastword = words[words.size()-1]; if (suppressflag && lastword.size()>3 && lastword[0]== '-' && lastword[1]== '-' && lastword.find('=')!=string::npos) { newval = compfunction(lastword.substr(lastword.find_first_of('=')+1).c_str(), state); } else { newval = compfunction(lastword.c_str(), state); } if (!newval) break; if (completionValues.size()) { completionValues+=separator; } string snewval=newval; if (snewval.find_first_of(separators) != string::npos) { completionValues+="\""; replaceAll(snewval,"\"","\\\""); completionValues+=snewval; completionValues+="\""; } else { completionValues+=newval; } free(newval); state++; } return completionValues; } MegaApi* getFreeApiFolder() { { std::lock_guard g(mutexapiFolders); if (apiFolders.empty() && occupiedapiFolders.empty()) { return nullptr; } } semaphoreapiFolders.wait(); mutexapiFolders.lock(); MegaApi* toret = apiFolders.front(); apiFolders.pop(); occupiedapiFolders.push_back(toret); mutexapiFolders.unlock(); return toret; } void freeApiFolder(MegaApi *apiFolder) { mutexapiFolders.lock(); occupiedapiFolders.erase(std::remove(occupiedapiFolders.begin(), occupiedapiFolders.end(), apiFolder), occupiedapiFolders.end()); apiFolders.push(apiFolder); semaphoreapiFolders.release(); mutexapiFolders.unlock(); } const char * getUsageStr(const char *command, const HelpFlags& flags) { if (!strcmp(command, "login")) { if (isCurrentThreadInteractive()) { return "login [--auth-code=XXXX] [email [password]] | exportedfolderurl#key" " [--auth-key=XXXX] [--resume] | passwordprotectedlink [--password=PASSWORD]" " | session"; } else { return "login [--auth-code=XXXX] email password | exportedfolderurl#key" " [--auth-key=XXXX] [--resume] | passwordprotectedlink [--password=PASSWORD]" " | session"; } } if (!strcmp(command, "psa")) { return "psa [--discard]"; } if (!strcmp(command, "cancel")) { return "cancel"; } if (!strcmp(command, "confirmcancel")) { if (isCurrentThreadInteractive()) { return "confirmcancel link [password]"; } else { return "confirmcancel link password"; } } if (!strcmp(command, "begin")) { return "begin [ephemeralhandle#ephemeralpw]"; } if (!strcmp(command, "signup")) { if (isCurrentThreadInteractive()) { return "signup email [password] [--name=\"Your Name\"]"; } else { return "signup email password [--name=\"Your Name\"]"; } } if (!strcmp(command, "confirm")) { if (isCurrentThreadInteractive()) { return "confirm link email [password]"; } else { return "confirm link email password"; } } if (!strcmp(command, "errorcode")) { return "errorcode number"; } if (!strcmp(command, "graphics")) { return "graphics [on|off]"; } if (!strcmp(command, "session")) { return "session"; } if (!strcmp(command, "mount")) { return "mount"; } if (((flags.win && !flags.readline) || flags.showAll) && !strcmp(command, "unicode")) { return "unicode"; } if (!strcmp(command, "ls")) { if (flags.usePcre || flags.showAll) { return "ls [-halRr] [--show-handles] [--tree] [--versions] [remotepath] [--use-pcre] [--show-creation-time] [--time-format=FORMAT]"; } else { return "ls [-halRr] [--show-handles] [--tree] [--versions] [remotepath] [--show-creation-time] [--time-format=FORMAT]"; } } if (!strcmp(command, "tree")) { return "tree [remotepath]"; } if (!strcmp(command, "cd")) { return "cd [remotepath]"; } if (!strcmp(command, "log")) { return "log [-sc] level"; } if (!strcmp(command, "du")) { if (flags.usePcre || flags.showAll) { return "du [-h] [--versions] [remotepath remotepath2 remotepath3 ... ] [--use-pcre]"; } else { return "du [-h] [--versions] [remotepath remotepath2 remotepath3 ... ]"; } } if (!strcmp(command, "pwd")) { return "pwd"; } if (!strcmp(command, "lcd")) { return "lcd [localpath]"; } if (!strcmp(command, "lpwd")) { return "lpwd"; } if (!strcmp(command, "import")) { return "import exportedlink [--password=PASSWORD] [remotepath]"; } if (!strcmp(command, "put")) { return "put [-c] [-q] [--print-tag-at-start] localfile [localfile2 localfile3 ...] [dstremotepath]"; } if (!strcmp(command, "putq")) { return "putq [cancelslot]"; } if (!strcmp(command, "get")) { if (flags.usePcre || flags.showAll) { return "get [-m] [-q] [--ignore-quota-warn] [--use-pcre] [--password=PASSWORD] exportedlink|remotepath [localpath]"; } else { return "get [-m] [-q] [--ignore-quota-warn] [--password=PASSWORD] exportedlink|remotepath [localpath]"; } } if (!strcmp(command, "getq")) { return "getq [cancelslot]"; } if (!strcmp(command, "pause")) { return "pause [get|put] [hard] [status]"; } if (!strcmp(command, "attr")) { return "attr remotepath [--force-non-official] [-s attribute value|-d attribute [--print-only-value]"; } if (!strcmp(command, "userattr")) { return "userattr [-s attribute value|attribute|--list] [--user=user@email]"; } if (!strcmp(command, "mkdir")) { return "mkdir [-p] remotepath"; } if (!strcmp(command, "rm")) { if (flags.usePcre || flags.showAll) { return "rm [-r] [-f] [--use-pcre] remotepath"; } else { return "rm [-r] [-f] remotepath"; } } if (!strcmp(command, "mv")) { if (flags.usePcre || flags.showAll) { return "mv srcremotepath [--use-pcre] [srcremotepath2 srcremotepath3 ..] dstremotepath"; } else { return "mv srcremotepath [srcremotepath2 srcremotepath3 ..] dstremotepath"; } } if (!strcmp(command, "cp")) { if (flags.usePcre || flags.showAll) { return "cp [--use-pcre] srcremotepath [srcremotepath2 srcremotepath3 ..] dstremotepath|dstemail:"; } else { return "cp srcremotepath [srcremotepath2 srcremotepath3 ..] dstremotepath|dstemail:"; } } if (!strcmp(command, "deleteversions")) { if (flags.usePcre || flags.showAll) { return "deleteversions [-f] (--all | remotepath1 remotepath2 ...) [--use-pcre]"; } else { return "deleteversions [-f] (--all | remotepath1 remotepath2 ...)"; } } if (!strcmp(command, "exclude")) { return "exclude [(-a|-d) pattern1 pattern2 pattern3]"; } if ((flags.haveLibuv || flags.showAll) && !strcmp(command, "webdav")) { if (flags.usePcre || flags.showAll) { return "webdav [-d (--all | remotepath ) ] [ remotepath [--port=PORT] [--public] [--tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key]] [--use-pcre]"; } else { return "webdav [-d (--all | remotepath ) ] [ remotepath [--port=PORT] [--public] [--tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key]]"; } } if ((flags.haveLibuv || flags.showAll) && !strcmp(command, "ftp")) { if (flags.usePcre || flags.showAll) { return "ftp [-d ( --all | remotepath ) ] [ remotepath [--port=PORT] [--data-ports=BEGIN-END] [--public] [--tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key]] [--use-pcre]"; } else { return "ftp [-d ( --all | remotepath ) ] [ remotepath [--port=PORT] [--data-ports=BEGIN-END] [--public] [--tls --certificate=/path/to/certificate.pem --key=/path/to/certificate.key]]"; } } if (!strcmp(command, "sync")) { return "sync [localpath dstremotepath| [-dpe] [ID|localpath]"; } if (!strcmp(command, "sync-issues")) { return "sync-issues [[--detail (ID|--all)] [--limit=rowcount] [--disable-path-collapse]] | [--enable-warning|--disable-warning]"; } if (!strcmp(command, "sync-ignore")) { return "sync-ignore [--show|[--add|--add-exclusion|--remove|--remove-exclusion] filter1 filter2 ...] (ID|localpath|DEFAULT)"; } if (!strcmp(command, "sync-config")) { return "sync-config [--delayed-uploads-wait-seconds | --delayed-uploads-max-attempts]"; } if (!strcmp(command, "configure")) { return "configure [key [value]]"; } if (!strcmp(command, "backup")) { return "backup (localpath remotepath --period=\"PERIODSTRING\" --num-backups=N | [-lhda] [TAG|localpath] [--period=\"PERIODSTRING\"] [--num-backups=N]) [--time-format=FORMAT]"; } if (!strcmp(command, "https")) { return "https [on|off]"; } if ((!flags.win || flags.showAll) && !strcmp(command, "permissions")) { return "permissions [(--files|--folders) [-s XXX]]"; } if (!strcmp(command, "export")) { return "export [-d|-a" " [--writable]" " [--mega-hosted]" " [--password=PASSWORD] [--expire=TIMEDELAY] [-f]] [remotepath]" #ifdef USE_PCRE " [--use-pcre]" #endif " [--time-format=FORMAT]"; } if (!strcmp(command, "share")) { if (flags.usePcre || flags.showAll) { return "share [-p] [-d|-a --with=user@email.com [--level=LEVEL]] [remotepath] [--use-pcre] [--time-format=FORMAT]"; } else { return "share [-p] [-d|-a --with=user@email.com [--level=LEVEL]] [remotepath] [--time-format=FORMAT]"; } } if (!strcmp(command, "invite")) { return "invite [-d|-r] dstemail [--message=\"MESSAGE\"]"; } if (!strcmp(command, "ipc")) { return "ipc email|handle -a|-d|-i"; } if (!strcmp(command, "showpcr")) { return "showpcr [--in | --out] [--time-format=FORMAT]"; } if (!strcmp(command, "masterkey")) { return "masterkey pathtosave"; } if (!strcmp(command, "users")) { return "users [-s] [-h] [-n] [-d contact@email] [--time-format=FORMAT] [--verify|--unverify contact@email.com] [--help-verify [contact@email.com]]"; } if (!strcmp(command, "getua")) { return "getua attrname [email]"; } if (!strcmp(command, "putua")) { return "putua attrname [del|set string|load file]"; } if (!strcmp(command, "speedlimit")) { return "speedlimit [-u|-d|--upload-connections|--download-connections] [-h] [NEWLIMIT]"; } if (!strcmp(command, "killsession")) { return "killsession [-a | sessionid1 sessionid2 ... ]"; } if (!strcmp(command, "whoami")) { return "whoami [-l]"; } if (!strcmp(command, "df")) { return "df [-h]"; } if (!strcmp(command, "proxy")) { return "proxy [URL|--auto|--none] [--username=USERNAME --password=PASSWORD]"; } if (!strcmp(command, "cat")) { return "cat remotepath1 remotepath2 ..."; } if (!strcmp(command, "mediainfo")) { return "mediainfo remotepath1 remotepath2 ..."; } if (!strcmp(command, "passwd")) { if (isCurrentThreadInteractive()) { return "passwd [-f] [--auth-code=XXXX] [newpassword]"; } else { return "passwd [-f] [--auth-code=XXXX] newpassword"; } } if (!strcmp(command, "retry")) { return "retry"; } if (!strcmp(command, "recon")) { return "recon"; } if (!strcmp(command, "reload")) { return "reload"; } if (!strcmp(command, "logout")) { return "logout [--keep-session]"; } if (!strcmp(command, "symlink")) { return "symlink"; } if (!strcmp(command, "version")) { return "version [-l][-c]"; } if (!strcmp(command, "debug")) { return "debug"; } if (!strcmp(command, "chatf")) { return "chatf "; } if (!strcmp(command, "chatc")) { return "chatc group [email ro|rw|full|op]*"; } if (!strcmp(command, "chati")) { return "chati chatid email ro|rw|full|op"; } if (!strcmp(command, "chatr")) { return "chatr chatid [email]"; } if (!strcmp(command, "chatu")) { return "chatu chatid"; } if (!strcmp(command, "chatga")) { return "chatga chatid nodehandle uid"; } if (!strcmp(command, "chatra")) { return "chatra chatid nodehandle uid"; } if (!strcmp(command, "exit")) { return "exit [--only-shell]"; } if (!strcmp(command, "quit")) { return "quit [--only-shell]"; } if (!strcmp(command, "history")) { return "history"; } if (!strcmp(command, "thumbnail")) { return "thumbnail [-s] remotepath localpath"; } if (!strcmp(command, "preview")) { return "preview [-s] remotepath localpath"; } if (!strcmp(command, "find")) { if (flags.usePcre || flags.showAll) { return "find [remotepath] [-l] [--pattern=PATTERN] [--type=d|f] [--mtime=TIMECONSTRAIN] [--size=SIZECONSTRAIN] [--use-pcre] [--time-format=FORMAT] [--show-handles|--print-only-handles]"; } else { return "find [remotepath] [-l] [--pattern=PATTERN] [--type=d|f] [--mtime=TIMECONSTRAIN] [--size=SIZECONSTRAIN] [--time-format=FORMAT] [--show-handles|--print-only-handles]"; } } if (!strcmp(command, "help")) { return "help [-f|-ff|--non-interactive|--upgrade|--paths] [--show-all-options]"; } if (!strcmp(command, "clear")) { return "clear"; } if (!strcmp(command, "transfers")) { return "transfers [-c TAG|-a] | [-r TAG|-a] | [-p TAG|-a] [--only-downloads | --only-uploads] [SHOWOPTIONS]"; } if (((flags.win && !flags.readline) || flags.showAll) && !strcmp(command, "autocomplete")) { return "autocomplete [dos | unix]"; } if (!strcmp(command, "codepage")) { return "codepage [N [M]]"; } if ((flags.win || flags.apple || flags.showAll) && !strcmp(command, "update")) { return "update [--auto=on|off|query]"; } if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-add")) { if (flags.win && !flags.showAll) { return "fuse-add [--name=name] [--disabled] [--transient] [--read-only] remotePath"; } return "fuse-add [--name=name] [--disabled] [--transient] [--read-only] localPath remotePath"; } if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-remove")) { return "fuse-remove (name|localPath)"; } if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-enable")) { return "fuse-enable [--temporarily] (name|localPath)"; } if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-disable")) { return "fuse-disable [--temporarily] (name|localPath)"; } if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-show")) { return "fuse-show [--only-enabled] [--disable-path-collapse] [[--limit=rowcount] | [name|localPath]]"; } if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-config")) { return "fuse-config [--name=name] [--enable-at-startup=yes|no] [--persistent=yes|no] [--read-only=yes|no] (name|localPath)"; } #if defined(DEBUG) || defined(MEGACMD_TESTING_CODE) else if (!strcmp(command, "echo")) { return "echo [--log-as-err]"; } #endif return "command not found: "; } bool validCommand(string thecommand) { return stringcontained((char*)thecommand.c_str(), validCommands); } string getsupportedregexps() { #ifdef USE_PCRE return "Perl Compatible Regular Expressions with \"--use-pcre\"\n or wildcarded expressions with ? or * like f*00?.txt"; #elif __cplusplus >= 201103L return "c++11 Regular Expressions"; #else return "it accepts wildcards: ? and *. e.g.: f*00?.txt"; #endif } void printTimeFormatHelp(ostringstream &os) { os << " --time-format=FORMAT" << "\t" << "show time in available formats. Examples:" << endl; os << " RFC2822: " << " Example: Fri, 06 Apr 2018 13:05:37 +0200" << endl; os << " ISO6081: " << " Example: 2018-04-06" << endl; os << " ISO6081_WITH_TIME: " << " Example: 2018-04-06T13:05:37" << endl; os << " SHORT: " << " Example: 06Apr2018 13:05:37" << endl; os << " SHORT_UTC: " << " Example: 06Apr2018 13:05:37" << endl; os << " CUSTOM. e.g: --time-format=\"%Y %b\": "<< " Example: 2018 Apr" << endl; os << " You can use any strftime compliant format: http://www.cplusplus.com/reference/ctime/strftime/" << endl; } void printColumnDisplayerHelp(ostringstream &os) { os << " --col-separator=X" << "\t" << "Uses the string \"X\" as column separator. Otherwise, spaces will be added between columns to align them." << endl; os << " --output-cols=COLUMN_NAME_1,COLUMN_NAME2,..." << "\t" << "Selects which columns to show and their order." << endl; } string getHelpStr(const char *command, const HelpFlags& flags = {}) { ostringstream os; os << "Usage: " << getUsageStr(command, flags) << endl; if (!strcmp(command, "login")) { os << "Logs into a MEGA account, folder link or a previous session. You can only log into one entity at a time." << endl; os << "Logging into a MEGA account:" << endl; os << "\tYou can log into a MEGA account by providing either a session ID or a username and password. A session " "ID simply identifies a session that you have previously logged in with using a username and password; " "logging in with a session ID simply resumes that session. If this is your first time logging in, you " "will need to do so with a username and password." << endl; os << "Options:" << endl; os << "\t--auth-code=XXXXXX: If you're logging in using a username and password, and this account has multifactor " "authentication (MFA) enabled, then this option allows you to pass the MFA token in directly rather than " "being prompted for it later on. For more information on this topic, please visit https://mega.nz/blog_48." << endl; os << endl; os << "Logging into a MEGA folder link (an exported/public folder):" << endl; os << "\tMEGA folder links have the form URL#KEY. To log into one, simply execute the login command with the link." << endl; os << "Options:" << endl; os << "\t--password=PASSWORD: If the link is a password protected link, then this option can be used to pass in " "the password for that link." << endl; os << "\t--auth-key=AUTHKEY: If the link is a writable folder link, then this option allows you to log in with " "write privileges. Without this option, you will log into the link with read access only." << endl; os << "\t--resume: A convenience option to try to resume from cache. When login into a folder, contrary to what occurs with login into a user account," " MEGAcmd will not try to load anything from cache: loading everything from scratch. This option changes that. Note, " "login using a session string, will of course, try to load from cache. This option may be convenient, for instance, if you previously " "logged out using --keep-session." << endl; os << endl; os << "For more information about MEGA folder links, see \"" << getCommandPrefixBasedOnMode() << "export --help\"." << endl; } else if (!strcmp(command, "cancel")) { os << "Cancels your MEGA account" << endl; os << " Caution: The account under this email address will be permanently closed" << endl; os << " and your data deleted. This can not be undone." << endl; os << endl; os << "The cancellation will not take place immediately. You will need to confirm the cancellation" << endl; os << "using a link that will be delivered to your email. See \"confirmcancel --help\"" << endl; } else if (!strcmp(command, "psa")) { os << "Shows the next available Public Service Announcement (PSA)" << endl; os << endl; os << "Options:" << endl; os << " --discard" << "\t" << "Discards last received PSA" << endl; os << endl; } else if (!strcmp(command, "confirmcancel")) { os << "Confirms the cancellation of your MEGA account" << endl; os << " Caution: The account under this email address will be permanently closed" << endl; os << " and your data deleted. This can not be undone." << endl; } else if (!strcmp(command, "errorcode")) { os << "Translate error code into string" << endl; } else if (!strcmp(command, "graphics")) { os << "Shows if special features related to images and videos are enabled. " << endl; os << "Use \"graphics on/off\" to enable/disable it." << endl; os << endl; os << "Disabling these features will avoid the upload of previews and thumbnails" << endl; os << "for images and videos." << endl; os << endl; os << "It's only recommended to disable these features before uploading files" << endl; os << "with image or video extensions that are not really images or videos," << endl; os << "or that are encrypted in the local drive so they can't be analyzed anyway." << endl; os << endl; os << "Notice that this setting will be saved for the next time you open MEGAcmd, but will be removed if you logout." << endl; } else if (!strcmp(command, "signup")) { os << "Register as user with a given email" << endl; os << endl; os << " Please, avoid using passwords containing \" or '" << endl; os << endl; os << "Options:" << endl; os << " --name=\"Your Name\"" << "\t" << "Name to register. e.g. \"John Smith\"" << endl; os << endl; os << " You will receive an email to confirm your account." << endl; os << " Once you have received the email, please proceed to confirm the link" << endl; os << " included in that email with \"confirm\"." << endl; os << endl; os << "Warning: Due to our end-to-end encryption paradigm, you will not be able to access your data" << endl; os << "without either your password or a backup of your Recovery Key (master key)." << endl; os << "Exporting the master key and keeping it in a secure location enables you" << endl; os << "to set a new password without data loss. Always keep physical control of" << endl; os << "your master key (e.g. on a client device, external storage, or print)." << endl; os << " See \"masterkey --help\" for further info." << endl; } else if (!strcmp(command, "clear")) { os << "Clear screen" << endl; } else if (!strcmp(command, "help")) { os << "Prints list of commands" << endl; os << endl; os << "Options:" << endl; os << " -f" << " \t" << "Include a brief description of the commands" << endl; os << " -ff" << "\t" << "Get a complete description of all commands" << endl; os << " --non-interactive" << " " << "Display information on how to use MEGAcmd with scripts" << endl; os << " --upgrade" << " " << "Display information on PRO plans" << endl; os << " --paths" << " " << "Show caveats of local and remote paths" << endl; os << " --show-all-options" << " " << "Display all options regardless of platform" << endl; } else if (!strcmp(command, "history")) { os << "Prints history of used commands" << endl; os << " Only commands used in interactive mode are registered" << endl; } else if (!strcmp(command, "confirm")) { os << "Confirm an account using the link provided after the \"signup\" process." << endl; os << " It requires the email and the password used to obtain the link." << endl; os << endl; } else if (!strcmp(command, "session")) { os << "Prints (secret) session ID" << endl; } else if (!strcmp(command, "mount")) { os << "Lists all the root nodes" << endl; os << endl; os << "This includes the root node in your cloud drive, Inbox, Rubbish Bin" << endl; os << "and all the in-shares (nodes shares to you from other users)" << endl; } else if (((flags.win && flags.readline) || flags.showAll) && !strcmp(command, "unicode")) { os << "Toggle unicode input enabled/disabled in interactive shell" << endl; os << endl; os << " Unicode mode is experimental, you might experience" << endl; os << " some issues interacting with the console" << endl; os << " (e.g. history navigation fails)." << endl; os << endl; os << "Type \"help --unicode\" for further info" << endl; os << "Note: this command is only available on some versions of Windows" << endl; } else if (!strcmp(command, "ls")) { os << "Lists files in a remote path" << endl; os << " remotepath can be a pattern (" << getsupportedregexps() << ")" << endl; os << " Also, constructions like /PATTERN1/PATTERN2/PATTERN3 are allowed" << endl; os << endl; os << "Options:" << endl; os << " -R|-r" << "\t" << "List folders recursively" << endl; os << " --tree" << "\t" << "Prints tree-like exit (implies -r)" << endl; os << " --show-handles" << "\t" << "Prints files/folders handles (H:XXXXXXXX). You can address a file/folder by its handle" << endl; os << " -l" << "\t" << "Print summary (--tree has no effect)" << endl; os << " " << "\t" << " SUMMARY contents:" << endl; os << " " << "\t" << " FLAGS: Indicate type/status of an element:" << endl; os << " " << "\t" << " xxxx" << endl; os << " " << "\t" << " |||+---- Sharing status: (s)hared, (i)n share or not shared(-)" << endl; os << " " << "\t" << " ||+----- if exported, whether it is (p)ermanent or (t)temporal" << endl; os << " " << "\t" << " |+------ e/- whether node is (e)xported" << endl; os << " " << "\t" << " +-------- Type(d=folder,-=file,r=root,i=inbox,b=rubbish,x=unsupported)" << endl; os << " " << "\t" << " VERS: Number of versions in a file" << endl; os << " " << "\t" << " SIZE: Size of the file in bytes:" << endl; os << " " << "\t" << " DATE: Modification date for files and creation date for folders (in UTC time):" << endl; os << " " << "\t" << " NAME: name of the node" << endl; os << " -h" << "\t" << "Show human readable sizes in summary" << endl; os << " -a" << "\t" << "Include extra information" << endl; os << " " << "\t" << " If this flag is repeated (e.g: -aa) more info will appear" << endl; os << " " << "\t" << " (public links, expiration dates, ...)" << endl; os << " --versions" << "\t" << "show historical versions" << endl; os << " " << "\t" << "You can delete all versions of a file with \"deleteversions\"" << endl; os << " --show-creation-time" << "\t" << "show creation time instead of modification time for files" << endl; printTimeFormatHelp(os); if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } } else if (!strcmp(command, "tree")) { os << "Lists files in a remote path in a nested tree decorated output" << endl; os << endl; os << "This is similar to \"ls --tree\"" << endl; } else if ((flags.win || flags.apple || flags.showAll) && !strcmp(command, "update")) { os << "Updates MEGAcmd" << endl; os << endl; os << "Looks for updates and applies if available." << endl; os << "This command can also be used to enable/disable automatic updates." << endl; os << "Options:" << endl; os << " --auto=ON|OFF|query" << "\t" << "Enables/disables/queries status of auto updates." << endl; os << endl; os << "If auto updates are enabled it will be checked while MEGAcmd server is running." << endl; os << " If there is an update available, it will be downloaded and applied." << endl; os << " This will cause MEGAcmd to be restarted whenever the updates are applied." << endl; os << endl; os << "Further info at https://github.com/meganz/megacmd#megacmd-updates" << endl; os << "Note: this command is not available on Linux" << endl; } else if (!strcmp(command, "cd")) { os << "Changes the current remote folder" << endl; os << endl; os << "If no folder is provided, it will be changed to the root folder" << endl; } else if (!strcmp(command, "log")) { os << "Prints/Modifies the log level" << endl; os << endl; os << "Options:" << endl; os << " -c" << "\t" << "CMD log level (higher level messages)." << endl; os << " " << "\t" << " Messages captured by MEGAcmd server." << endl; os << " -s" << "\t" << "SDK log level (lower level messages)." << endl; os << " " << "\t" << " Messages captured by the engine and libs" << endl; os << "Note: this setting will be saved for the next time you open MEGAcmd, but will be removed if you logout." << endl; os << endl; os << "Regardless of the log level of the" << endl; os << " interactive shell, you can increase the amount of information given" << endl; os << " by any command by passing \"-v\" (\"-vv\", \"-vvv\", ...)" << endl; } else if (!strcmp(command, "du")) { os << "Prints size used by files/folders" << endl; os << " remotepath can be a pattern (" << getsupportedregexps() << ")" << endl; os << endl; os << "Options:" << endl; os << " -h" << "\t" << "Human readable" << endl; os << " --versions" << "\t" << "Calculate size including all versions." << endl; os << " " << "\t" << "You can remove all versions with \"deleteversions\" and list them with \"ls --versions\"" << endl; os << " --path-display-size=N" << "\t" << "Use a fixed size of N characters for paths" << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } } else if (!strcmp(command, "pwd")) { os << "Prints the current remote folder" << endl; } else if (!strcmp(command, "lcd")) { os << "Changes the current local folder for the interactive console" << endl; os << endl; os << "It will be used for uploads and downloads" << endl; os << endl; os << "If not using interactive console, the current local folder will be" << endl; os << " that of the shell executing mega comands" << endl; } else if (!strcmp(command, "lpwd")) { os << "Prints the current local folder for the interactive console" << endl; os << endl; os << "It will be used for uploads and downloads" << endl; os << endl; os << "If not using interactive console, the current local folder will be" << endl; os << " that of the shell executing mega comands" << endl; } else if (!strcmp(command, "logout")) { os << "Logs out" << endl; os << endl; os << "Options:" << endl; os << " --keep-session" << "\t" << "Keeps the current session. This will also prevent the deletion of cached data associated " "with current session." << endl; } else if (!strcmp(command, "import")) { os << "Imports the contents of a remote link into user's cloud" << endl; os << endl; os << "If no remote path is provided, the current local folder will be used" << endl; os << "Exported links: Exported links are usually formed as publiclink#key." << endl; os << " Alternativelly you can provide a password-protected link and" << endl; os << " provide the password with --password. Please, avoid using passwords containing \" or '" << endl; } else if (!strcmp(command, "put")) { os << "Uploads files/folders to a remote folder" << endl; os << endl; os << "Options:" << endl; os << " -c" << "\t" << "Creates remote folder destination in case of not existing." << endl; os << " -q" << "\t" << "queue upload: execute in the background. Don't wait for it to end" << endl; os << " --print-tag-at-start" << "\t" << "Prints start message including transfer TAG, even when using -q." << endl; os << endl; os << "Notice that the dstremotepath can only be omitted when only one local path is provided." << endl; os << " In such case, the current remote working dir will be the destination for the upload." << endl; os << " Mind that using wildcards for local paths in non-interactive mode in a supportive console (e.g. bash)," << endl; os << " could result in multiple paths being passed to MEGAcmd." << endl; } else if (!strcmp(command, "get")) { os << "Downloads a remote file/folder or a public link " << endl; os << endl; os << "In case it is a file, the file will be downloaded at the specified folder" << endl; os << " (or at the current folder if none specified)." << endl; os << " If the localpath (destination) already exists and is the same (same contents)" << endl; os << " nothing will be done. If differs, it will create a new file appending \" (NUM)\"" << endl; os << endl; os << "For folders, the entire contents (and the root folder itself) will be" << endl; os << " by default downloaded into the destination folder" << endl; os << endl; os << "Exported links: Exported links are usually formed as publiclink#key." << endl; os << " Alternativelly you can provide a password-protected link and" << endl; os << " provide the password with --password. Please, avoid using passwords containing \" or '" << endl; os << "" << endl; os << endl; os << "Options:" << endl; os << " -q" << "\t" << "queue download: execute in the background. Don't wait for it to end" << endl; os << " -m" << "\t" << "if the folder already exists, the contents will be merged with the" << endl; os << " downloaded one (preserving the existing files)" << endl; os << " --ignore-quota-warn" << "\t" << "ignore quota surpassing warning." << endl; os << " " << "\t" << " The download will be attempted anyway." << endl; os << " --password=PASSWORD" << "\t" << "Password to decrypt the password-protected link. Please, avoid using passwords containing \" or '" << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } } if (!strcmp(command, "attr")) { os << "Lists/updates node attributes." << endl; os << endl; os << "Options:" << endl; os << " -s" << "\tattribute value \t" << "Sets an attribute to a value" << endl; os << " -d" << "\tattribute \t" << "Removes the attribute" << endl; os << " --print-only-value "<< "\t" << "When listing attributes, print only the values, not the attribute names." << endl; os << " --force-non-official"<< "\t" << "Forces using the custom attribute version for officially recognized attributes." << endl; os << " "<< "\t" << "Note that custom attributes are internally stored with a `_` prefix." << endl; os << " "<< "\t" << "Use this option to show, modify or delete a custom attribute with the same name as one official." << endl; } if (!strcmp(command, "userattr")) { os << "Lists/updates user attributes" << endl; os << endl; os << "Options:" << endl; os << " -s" << "\tattribute value \t" << "sets an attribute to a value" << endl; os << " --user=user@email" << "\t" << "select the user to query" << endl; os << " --list" << "\t" << "lists valid attributes" << endl; } else if (!strcmp(command, "mkdir")) { os << "Creates a directory or a directories hierarchy" << endl; os << endl; os << "Options:" << endl; os << " -p" << "\t" << "Allow recursive" << endl; } else if (!strcmp(command, "rm")) { os << "Deletes a remote file/folder" << endl; os << endl; os << "Options:" << endl; os << " -r" << "\t" << "Delete recursively (for folders)" << endl; os << " -f" << "\t" << "Force (no asking)" << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } } else if (!strcmp(command, "mv")) { os << "Moves file(s)/folder(s) into a new location (all remotes)" << endl; os << endl; os << "If the location exists and is a folder, the source will be moved there" << endl; os << "If the location doesn't exist, the source will be renamed to the destination name given" << endl; if (flags.usePcre || flags.showAll) { os << "Options:" << endl; os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } } else if (!strcmp(command, "cp")) { os << "Copies files/folders into a new location (all remotes)" << endl; os << endl; os << "If the location exists and is a folder, the source will be copied there" << endl; os << "If the location doesn't exist, and only one source is provided," << endl; os << " the file/folder will be copied and renamed to the destination name given." << endl; os << endl; os << "If \"dstemail:\" provided, the file/folder will be sent to that user's inbox (//in)" << endl; os << " e.g: cp /path/to/file user@doma.in:" << endl; os << " Remember the trailing \":\", otherwise a file with the name of that user (\"user@doma.in\") will be created" << endl; if (flags.usePcre || flags.showAll) { os << "Options:" << endl; os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } } else if ((!flags.win || flags.showAll) && !strcmp(command, "permissions")) { os << "Shows/Establish default permissions for files and folders created by MEGAcmd." << endl; os << endl; os << "Permissions are unix-like permissions, with 3 numbers: one for owner, one for group and one for others" << endl; os << "Options:" << endl; os << " --files" << "\t" << "To show/set files default permissions." << endl; os << " --folders" << "\t" << "To show/set folders default permissions." << endl; os << " --s XXX" << "\t" << "To set new permissions for newly created files/folder." << endl; os << " " << "\t" << " Notice that for files minimum permissions is 600," << endl; os << " " << "\t" << " for folders minimum permissions is 700." << endl; os << " " << "\t" << " Further restrictions to owner are not allowed (to avoid missfunctioning)." << endl; os << " " << "\t" << " Notice that permissions of already existing files/folders will not change." << endl; os << " " << "\t" << " Notice that permissions of already existing files/folders will not change." << endl; os << endl; os << "Note: permissions will be saved for the next time you execute MEGAcmd server. They will be removed if you logout. Permissions are not available on Windows." << endl; } else if (!strcmp(command, "https")) { os << "Shows if HTTPS is used for transfers. Use \"https on\" to enable it." << endl; os << endl; os << "HTTPS is not necessary since all data is stored and transferred encrypted." << endl; os << "Enabling it will increase CPU usage and add network overhead." << endl; os << endl; os << "Notice that this setting will be saved for the next time you open MEGAcmd, but will be removed if you logout." << endl; } else if (!strcmp(command, "deleteversions")) { os << "Deletes previous versions." << endl; os << endl; os << "This will permanently delete all historical versions of a file." << endl; os << "The current version of the file will remain." << endl; os << "Note: any file version shared to you from a contact will need to be deleted by them." << endl; os << endl; os << "Options:" << endl; os << " -f " << "\t" << "Force (no asking)" << endl; os << " --all" << "\t" << "Delete versions of all nodes. This will delete the version histories of all files (not current files)." << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } os << endl; os << "To see versions of a file use \"ls --versions\"." << endl; os << "To see space occupied by file versions use \"du --versions\"." << endl; } else if ((flags.haveLibuv || flags.showAll) && !strcmp(command, "webdav")) { os << "Configures a WEBDAV server to serve a location in MEGA" << endl; os << endl; os << "This can also be used for streaming files. The server will be running as long as MEGAcmd Server is." << endl; os << "If no argument is given, it will list the webdav enabled locations." << endl; os << endl; os << "Options:" << endl; os << " --d " << "\t" << "Stops serving that location" << endl; os << " --all " << "\t" << "When used with -d, stops serving all locations (and stops the server)" << endl; os << " --public " << "\t" << "*Allow access from outside localhost" << endl; os << " --port=PORT" << "\t" << "*Port to serve. DEFAULT= 4443" << endl; os << " --tls " << "\t" << "*Serve with TLS (HTTPS)" << endl; os << " --certificate=/path/to/certificate.pem" << "\t" << "*Path to PEM formatted certificate" << endl; os << " --key=/path/to/certificate.key" << "\t" << "*Path to PEM formatted key" << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } os << endl; os << "*If you serve more than one location, these parameters will be ignored and use those of the first location served." << endl; os << " If you want to change those parameters, you need to stop serving all locations and configure them again." << endl; os << "Note: WEBDAV settings and locations will be saved for the next time you open MEGAcmd, but will be removed if you logout." << endl; os << endl; os << "Caveat: This functionality is in BETA state. It might not be available on all platforms. If you experience any issue with this, please contact: support@mega.nz" << endl; os << endl; } else if ((flags.haveLibuv || flags.showAll) && !strcmp(command, "ftp")) { os << "Configures a FTP server to serve a location in MEGA" << endl; os << endl; os << "This can also be used for streaming files. The server will be running as long as MEGAcmd Server is." << endl; os << "If no argument is given, it will list the ftp enabled locations." << endl; os << endl; os << "Options:" << endl; os << " --d " << "\t" << "Stops serving that location" << endl; os << " --all " << "\t" << "When used with -d, stops serving all locations (and stops the server)" << endl; os << " --public " << "\t" << "*Allow access from outside localhost" << endl; os << " --port=PORT" << "\t" << "*Port to serve. DEFAULT=4990" << endl; os << " --data-ports=BEGIN-END" << "\t" << "*Ports range used for data channel (in passive mode). DEFAULT=1500-1600" << endl; os << " --tls " << "\t" << "*Serve with TLS (FTPs)" << endl; os << " --certificate=/path/to/certificate.pem" << "\t" << "*Path to PEM formatted certificate" << endl; os << " --key=/path/to/certificate.key" << "\t" << "*Path to PEM formatted key" << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } os << endl; os << "*If you serve more than one location, these parameters will be ignored and used those of the first location served." << endl; os << " If you want to change those parameters, you need to stop serving all locations and configure them again." << endl; os << "Note: FTP settings and locations will be saved for the next time you open MEGAcmd, but will be removed if you logout." << endl; os << endl; os << "Caveat: This functionality is in BETA state. It might not be available on all platforms. If you experience any issue with this, please contact: support@mega.nz" << endl; os << endl; } else if (!strcmp(command, "exclude")) { os << "Manages default exclusion rules in syncs." << endl; os << "These default rules will be used when creating new syncs. Existing syncs won't be affected. To modify the exclusion rules of existing syncs, use " << getCommandPrefixBasedOnMode() << "sync-ignore." << endl; os << endl; os << "Options:" << endl; os << " -a pattern1 pattern2 ..." << "\t" << "adds pattern(s) to the exclusion list" << endl; os << " " << "\t" << " (* and ? wildcards allowed)" << endl; os << " -d pattern1 pattern2 ..." << "\t" << "deletes pattern(s) from the exclusion list" << endl; os << endl; os << "This command is DEPRECATED. Use sync-ignore instead." << endl; } else if (!strcmp(command, "sync")) { os << "Controls synchronizations." << endl; os << endl; os << "If no argument is provided, it lists current configured synchronizations." << endl; os << "If local and remote paths are provided, it will start synchronizing a local folder into a remote folder." << endl; os << "If an ID/local path is provided, it will list such synchronization unless an option is specified." << endl; os << endl; os << "Note: use the \"sync-config\" command to show global sync configuration." << endl; os << endl; os << "Options:" << endl; os << " -d | --delete" << " " << "ID|localpath" << "\t" << "deletes a synchronization (not the files)." << endl; os << " -p | --pause" << " " << "ID|localpath" << "\t" << "pauses (disables) a synchronization." << endl; os << " -e | --enable" << " " << "ID|localpath" << "\t" << "resumes a synchronization." << endl; os << " [deprecated] --remove" << " " << "ID|localpath" << "\t" << "same as --delete." << endl; os << " [deprecated] -s | --disable" << " " << "ID|localpath" << "\t" << "same as --pause." << endl; os << " [deprecated] -r" << " " << "ID|localpath" << "\t" << "same as --enable." << endl; os << " --path-display-size=N" << "\t" << "Use at least N characters for displaying paths." << endl; os << " --show-handles" << "\t" << "Prints remote nodes handles (H:XXXXXXXX)." << endl; printColumnDisplayerHelp(os); os << endl; os << "DISPLAYED columns:" << endl; os << " " << "ID: an unique identifier of the sync." << endl; os << " " << "LOCALPATH: local synced path." << endl; os << " " << "REMOTEPATH: remote synced path (in MEGA)." << endl; os << " " << "RUN_STATE: Indication of running state, possible values:" << endl; #define SOME_GENERATOR_MACRO(_, ShortName, Description) \ os << " " << "\t" << ShortName << ": " << Description << "." << endl; GENERATE_FROM_SYNC_RUN_STATE(SOME_GENERATOR_MACRO) #undef SOME_GENERATOR_MACRO os << " " << "STATUS: State of the sync, possible values:" << endl; #define SOME_GENERATOR_MACRO(_, ShortName, Description) \ os << " " << "\t" << ShortName << ": " << Description << "." << endl; GENERATE_FROM_SYNC_PATH_STATE(SOME_GENERATOR_MACRO) #undef SOME_GENERATOR_MACRO os << " " << "ERROR: Error, if any." << endl; os << " " << "SIZE, FILE & DIRS: size, number of files and number of dirs in the remote folder." << endl; } else if (!strcmp(command, "sync-issues")) { os << "Show all issues with current syncs" << endl; os << endl; os << "When MEGAcmd detects conflicts with the data it's synchronizing, a sync issue is triggered. Syncing is stopped on the conflicting data, and no progress is made. Recovering from an issue usually requires user intervention." << endl; os << "A notification warning will appear whenever sync issues are detected. You can disable the warning if you wish. Note: the notification may appear even if there were already issues before." << endl; os << "Note: the list of sync issues provides a snapshot of the issues detected at the moment of requesting it. Thus, it might not contain the latest updated data. Some issues might still be being processed by the sync engine, and some might not have been removed yet." << endl; os << endl; os << "Options:" << endl; os << " --detail (ID | --all) " << "\t" << "Provides additional information on a particular sync issue." << endl; os << " " << "\t" << "The ID of the sync where this issue appeared is shown, alongside its local and cloud paths." << endl; os << " " << "\t" << "All paths involved in the issue are shown. For each path, the following columns are displayed:" << endl; os << " " << "\t" << "\t" << "PATH: The conflicting local or cloud path (cloud paths are prefixed with \"\")." << endl; os << " " << "\t" << "\t" << "PATH_ISSUE: A brief explanation of the problem this file or folder has (if any)." << endl; os << " " << "\t" << "\t" << "LAST_MODIFIED: The most recent date when this file or directory was updated." << endl; os << " " << "\t" << "\t" << "UPLOADED: For cloud paths, the date of upload or creation. Empty for local paths." << endl; os << " " << "\t" << "\t" << "SIZE: The size of the file. Empty for directories." << endl; os << " " << "\t" << "\t" << "TYPE: The type of the path (file or directory). This column is hidden if the information is not relevant for the particular sync issue." << endl; os << " " << "\t" << "The \"--all\" argument can be used to show the details of all issues." << endl; os << " --limit=rowcount " << "\t" << "Limits the amount of rows displayed. Set to 0 to display unlimited rows. Default is 10. Can also be combined with \"--detail\"." << endl; os << " --disable-path-collapse " << "\t" << "Ensures all paths are fully shown. By default long paths are truncated for readability." << endl; os << " --enable-warning " << "\t" << "Enables the notification that appears when issues are detected. This setting is saved for the next time you open MEGAcmd, but will be removed if you logout." << endl; os << " --disable-warning " << "\t" << "Disables the notification that appears when issues are detected. This setting is saved for the next time you open MEGAcmd, but will be removed if you logout." << endl; printColumnDisplayerHelp(os); os << endl; os << "DISPLAYED columns:" << endl; os << "\t" << "ISSUE_ID: A unique identifier of the sync issue. The ID can be used alongside the \"--detail\" argument." << endl; os << "\t" << "PARENT_SYNC: The identifier of the sync that has this issue." << endl; os << "\t" << "REASON: A brief explanation on what the issue is. Use the \"--detail\" argument to get extended information on a particular sync." << endl; } else if (!strcmp(command, "sync-ignore")) { os << "Manages ignore filters for syncs" << endl; os << endl; os << "To modify the default filters, use \"DEFAULT\" instead of local path or ID." << endl; os << "Note: when modifying the default filters, existing syncs won't be affected. Only newly created ones." << endl; os << endl; os << "If no action is provided, filters will be shown for the selected sync." << endl; os << "Only the filters at the root of the selected sync will be accessed. Filters beloging to sub-folders must be modified manually." << endl; os << endl; os << "Options:" << endl; os << "--show" << "\t" << "Show the existing filters of the selected sync" << endl; os << "--add" << "\t" << "Add the specified filters to the selected sync" << endl; os << "--add-exclusion" << "\t" << "Same as \"--add\", but the is 'exclude'" << endl; os << " " << "\t" << "Note: the `-` must be omitted from the filter (using '--' is not necessary)" << endl; os << "--remove" << "\t" << "Remove the specified filters from the selected sync" << endl; os << "--remove-exclusion" << "\t" << "Same as \"--remove\", but the is 'exclude'" << endl; os << " " << "\t" << "Note: the `-` must be omitted from the filter (using '--' is not necessary)" << endl; os << endl; os << "Filters must have the following format: :" << endl; os << "\t" << " Must be either exclude, or include" << endl; os << "\t" << "\t" << "exclude (`-`): This filter contains files or directories that *should not* be synchronized" << endl; os << "\t" << "\t" << " Note: you must pass a double dash ('--') to signify the end of the parameters, in order to pass exclude filters" << endl; os << "\t" << "\t" << "include (`+`): This filter contains files or directories that *should* be synchronized" << endl; os << "\t" << " May be one of the following: directory, file, symlink, or all" << endl; os << "\t" << "\t" << "directory (`d`): This filter applies only to directories" << endl; os << "\t" << "\t" << "file (`f`): This filter applies only to files" << endl; os << "\t" << "\t" << "symlink (`s`): This filter applies only to symbolic links" << endl; os << "\t" << "\t" << "all (`a`): This filter applies to all of the above" << endl; os << "\t" << "Default (when omitted) is `a`" << endl; os << "\t" << " May be one of the following: local name, path, or subtree name" << endl; os << "\t" << "\t" << "local name (`N`): This filter has an effect only in the root directory of the sync" << endl; os << "\t" << "\t" << "path (`p`): This filter matches against the path relative to the rooth directory of the sync" << endl; os << "\t" << "\t" << " Note: the path separator is always '/', even on Windows" << endl; os << "\t" << "\t" << "subtree name (`n`): This filter has an effect in all directories below the root directory of the sync, itself included" << endl; os << "\t" << "Default (when omitted) is `n`" << endl; os << "\t" << " May be one of the following: glob, or regexp" << endl; os << "\t" << "\t" << "glob (`G` or `g`): This filter matches against a name or path using a wildcard pattern" << endl; os << "\t" << "\t" << "regexp (`R` or `r`): This filter matches against a name or path using a pattern expressed as a POSIX-Extended Regular Expression" << endl; os << "\t" << "Note: uppercase `G` or `R` specifies that the matching should be case-sensitive" << endl; os << "\t" << "Default (when omitted) is `G`" << endl; os << "\t" << " Must be a file or directory pattern" << endl; os << "Some examples:" << endl; os << "\t" << "`-f:*.txt`" << " " << "Filter will exclude all *.txt files in and beneath the sync directory" << endl; os << "\t" << "`+fg:work*.txt`" << " " << "Filter will include all work*.txt files excluded by the filter above" << endl; os << "\t" << "`-N:*.avi`" << " " << "Filter will exclude all *.avi files contained directly in the sync directory" << endl; os << "\t" << "`-nr:.*foo.*`" << " " << "Filter will exclude files whose name contains 'foo'" << endl; os << "\t" << "`-d:private`" << " " << "Filter will exclude all directories with the name 'private'" << endl; os << endl; os << "See: https://help.mega.io/installs-apps/desktop/megaignore more info." << endl; } else if (!strcmp(command, "sync-config")) { os << "Controls sync configuration." << endl; os << endl; os << "Displays current configuration." << endl; os << endl; os << "New uploads for files that change frequently in syncs may be delayed until a wait time passes to avoid wastes of computational resources." << endl; os << " Delay times and number of changes may change overtime" << endl; os << "Options:" << endl; os << " --delayed-uploads-wait-seconds Shows the seconds to be waited before a file that's being delayed is uploaded again." << endl; os << " --delayed-uploads-max-attempts Shows the max number of times a file can change in quick succession before it starts to get delayed." << endl; } else if (!strcmp(command, "configure")) { os << "Shows and modifies global configurations." << endl; os << endl; os << "If no keys are provided, it will list all configuration keys and values." << endl; os << "If a key is provided, but no value given, it will only show the value of such key." << endl; os << "If a key and value are provided, it will set the value of that key." << endl; os << endl; os << "Possible keys:" << endl; for (auto &vc : Instance::Get().getConfigurators()) { os << " - " << getFixLengthString(vc.mKey, 23) << " " << vc.mDescription << "." << endl; os << wrapText(vc.mFullDescription, 120 - 27 - 1, 27) << endl; } } else if (!strcmp(command, "backup")) { os << "Controls backups" << endl; os << endl; os << "This command can be used to configure and control backups." << endl; os << "A tutorial can be found here: https://github.com/meganz/MEGAcmd/blob/master/contrib/docs/BACKUPS.md" << endl; os << endl; os << "If no argument is given it will list the configured backups" << endl; os << " To get extra info on backups use -l or -h (see Options below)" << endl; os << endl; os << "When a backup of a folder (localfolder) is established in a remote folder (remotepath)" << endl; os << " MEGAcmd will create subfolder within the remote path with names like: \"localfoldername_bk_TIME\"" << endl; os << " which shall contain a backup of the local folder at that specific time" << endl; os << "In order to configure a backup you need to specify the local and remote paths," << endl; os << "the period and max number of backups to store (see Configuration Options below)." << endl; os << "Once configured, you can see extended info asociated to the backup (See Display Options)" << endl; os << "Notice that MEGAcmd server need to be running for backups to be created." << endl; os << endl; os << "Display Options:" << endl; os << "-l\t" << "Show extended info: period, max number, next scheduled backup" << endl; os << " \t" << " or the status of current/last backup" << endl; os << "-h\t" << "Show history of created backups" << endl; os << " \t" << "Backup states:" << endl; os << " \t" << "While a backup is being performed, the backup will be considered and labeled as ONGOING" << endl; os << " \t" << "If a transfer is cancelled or fails, the backup will be considered INCOMPLETE" << endl; os << " \t" << "If a backup is aborted (see -a), all the transfers will be canceled and the backup be ABORTED" << endl; os << " \t" << "If MEGAcmd server stops during a transfer, it will be considered MISCARRIED" << endl; os << " \t" << " Notice that currently when MEGAcmd server is restarted, ongoing and scheduled transfers" << endl; os << " \t" << " will be carried out nevertheless." << endl; os << " \t" << "If MEGAcmd server is not running when a backup is scheduled and the time for the next one has already arrived," << endl; os << " \t" << " an empty BACKUP will be created with state SKIPPED" << endl; os << " \t" << "If a backup(1) is ONGOING and the time for the next backup(2) arrives, it won't start until the previous one(1)" << endl; os << " \t" << " is completed, and if by the time the first one(1) ends the time for the next one(3) has already arrived," << endl; os << " \t" << " an empty BACKUP(2) will be created with state SKIPPED" << endl; os << " --path-display-size=N" << "\t" << "Use a fixed size of N characters for paths" << endl; printTimeFormatHelp(os); os << endl; os << "Configuration Options:" << endl; os << "--period=\"PERIODSTRING\"\t" << "Period: either time in TIMEFORMAT (see below) or a cron like expression" << endl; os << " \t" << " Cron like period is formatted as follows" << endl; os << " \t" << " - - - - - -" << endl; os << " \t" << " | | | | | |" << endl; os << " \t" << " | | | | | |" << endl; os << " \t" << " | | | | | +---- Day of the Week (range: 1-7, 1 standing for Monday)" << endl; os << " \t" << " | | | | +------ Month of the Year (range: 1-12)" << endl; os << " \t" << " | | | +-------- Day of the Month (range: 1-31)" << endl; os << " \t" << " | | +---------- Hour (range: 0-23)" << endl; os << " \t" << " | +------------ Minute (range: 0-59)" << endl; os << " \t" << " +-------------- Second (range: 0-59)" << endl; os << " \t" << " examples:" << endl; os << " \t" << " - daily at 04:00:00 (UTC): \"0 0 4 * * *\"" << endl; os << " \t" << " - every 15th day at 00:00:00 (UTC) \"0 0 0 15 * *\"" << endl; os << " \t" << " - mondays at 04.30.00 (UTC): \"0 30 4 * * 1\"" << endl; os << " \t" << " TIMEFORMAT can be expressed in hours(h), days(d)," << endl; os << " \t" << " minutes(M), seconds(s), months(m) or years(y)" << endl; os << " \t" << " e.g. \"1m12d3h\" indicates 1 month, 12 days and 3 hours" << endl; os << " \t" << " Notice that this is an uncertain measure since not all months" << endl; os << " \t" << " last the same and Daylight saving time changes are not considered" << endl; os << " \t" << " If possible use a cron like expression" << endl; os << " \t" << "Notice: regardless of the period expression, the first time you establish a backup," << endl; os << " \t" << " it will be created immediately" << endl; os << "--num-backups=N\t" << "Maximum number of backups to store" << endl; os << " \t" << " After creating the backup (N+1) the oldest one will be deleted" << endl; os << " \t" << " That might not be true in case there are incomplete backups:" << endl; os << " \t" << " in order not to lose data, at least one COMPLETE backup will be kept" << endl; os << "Use backup TAG|localpath --option=VALUE to modify existing backups" << endl; os << endl; os << "Management Options:" << endl; os << "-d TAG|localpath\t" << "Removes a backup by its TAG or local path" << endl; os << " \t" << " Folders created by backup won't be deleted" << endl; os << "-a TAG|localpath\t" << "Aborts ongoing backup" << endl; os << endl; os << "Caveat: This functionality is in BETA state. If you experience any issue with this, please contact: support@mega.nz" << endl; } else if (!strcmp(command, "export")) { os << "Prints/Modifies the status of current exports" << endl; os << endl; os << "Options:" << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "The provided path will use Perl Compatible Regular Expressions (PCRE)" << endl; } os << " -a" << "\t" << "Adds an export." << endl; os << " " << "\t" << "Returns an error if the export already exists." << endl; os << " " << "\t" << "To modify an existing export (e.g. to change expiration time, password, etc.), it must be deleted and then re-added." << endl; os << " --writable" << "\t" << "Turn an export folder into a writable folder link. You can use writable folder links to " "share and receive files from anyone; including people who don’t have a MEGA account. " << endl; os << " " << "\t" << "This type of link is the same as a \"file request\" link that can be created through " "the webclient, except that writable folder links are not write-only. Writable folder " "links and file requests cannot be mixed, as they use different encryption schemes." << endl; os << " " << "\t" << "The auth-key shown has the following format #:. The " "auth-key must be provided at login, otherwise you will log into this link with " "read-only privileges. See \"" << getCommandPrefixBasedOnMode() << "login --help\" " "for more details about logging into links." << endl; os << " --mega-hosted" << "\t" << "The share key of this specific folder will be shared with MEGA." << endl; os << " " << "\t" << "This is intended to be used for folders accessible through MEGA's S4 service." << endl; os << " " << "\t" << "Encryption will occur nonetheless within MEGA's S4 service." << endl; os << " --password=PASSWORD" << "\t" << "Protects the export with a password. Passwords cannot contain \" or '." << endl; os << " " << "\t" << "A password-protected link will be printed only after exporting it." << endl; os << " " << "\t" << "If \"" << getCommandPrefixBasedOnMode() << "export\" is used to print it again, it will be shown unencrypted." << endl; os << " " << "\t" << "Note: only PRO users can protect an export with a password." << endl; os << " --expire=TIMEDELAY" << "\t" << "Sets the expiration time of the export." << endl; os << " " << "\t" << "The time format can contain hours(h), days(d), minutes(M), seconds(s), months(m) or years(y)." << endl; os << " " << "\t" << "E.g., \"1m12d3h\" will set an expiration time of 1 month, 12 days and 3 hours (relative to the current time)." << endl; os << " " << "\t" << "Note: only PRO users can set an expiration time for an export." << endl; os << " -f" << "\t" << "Implicitly accepts copyright terms (only shown the first time an export is made)." << endl; os << " " << "\t" << "MEGA respects the copyrights of others and requires that users of the MEGA cloud service comply with the laws of copyright." << endl; os << " " << "\t" << "You are strictly prohibited from using the MEGA cloud service to infringe copyright." << endl; os << " " << "\t" << "You may not upload, download, store, share, display, stream, distribute, email, link to, " "transmit or otherwise make available any files, data or content that infringes any copyright " "or other proprietary rights of any person or entity." << endl; os << " -d" << "\t" << "Deletes an export." << endl; os << " " << "\t" << "The file/folder itself is not deleted, only the export link." << endl; printTimeFormatHelp(os); os << endl; os << "If a remote path is provided without the add/delete options, all existing exports within its tree will be displayed." << endl; os << "If no remote path is given, the current working directory will be used."; } else if (!strcmp(command, "share")) { os << "Prints/Modifies the status of current shares" << endl; os << endl; os << "Options:" << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } os << " -p" << "\t" << "Show pending shares too" << endl; os << " --with=email" << "\t" << "Determines the email of the user to [no longer] share with" << endl; os << " -d" << "\t" << "Stop sharing with the selected user" << endl; os << " -a" << "\t" << "Adds a share (or modifies it if existing)" << endl; os << " --level=LEVEL" << "\t" << "Level of access given to the user" << endl; os << " " << "\t" << "0: " << "Read access" << endl; os << " " << "\t" << "1: " << "Read and write" << endl; os << " " << "\t" << "2: " << "Full access" << endl; os << " " << "\t" << "3: " << "Owner access" << endl; os << endl; os << "If a remote path is given it'll be used to add/delete or in case" << endl; os << " of no option selected, it will display all the shares existing" << endl; os << " in the tree of that path" << endl; os << endl; os << "When sharing a folder with a user that is not a contact (see \"" << getCommandPrefixBasedOnMode() << "users --help\")" << endl; os << " the share will be in a pending state. You can list pending shares with" << endl; os << " \"share -p\". He would need to accept your invitation (see \"" << getCommandPrefixBasedOnMode() << "ipc\")" << endl; os << endl; os << "Sharing folders will require contact verification (see \"" << getCommandPrefixBasedOnMode() << "users --help-verify\")" << endl; os << endl; os << "If someone has shared something with you, it will be listed as a root folder" << endl; os << " Use \"" << getCommandPrefixBasedOnMode() << "mount\" to list folders shared with you" << endl; } else if (!strcmp(command, "invite")) { os << "Invites a contact / deletes an invitation" << endl; os << endl; os << "Options:" << endl; os << " -d" << "\t" << "Deletes invitation" << endl; os << " -r" << "\t" << "Sends the invitation again" << endl; os << " --message=\"MESSAGE\"" << "\t" << "Sends inviting message" << endl; os << endl; os << "Use \"showpcr\" to browse invitations" << endl; os << "Use \"ipc\" to manage invitations received" << endl; os << "Use \"users\" to see contacts" << endl; } if (!strcmp(command, "ipc")) { os << "Manages contact incoming invitations." << endl; os << endl; os << "Options:" << endl; os << " -a" << "\t" << "Accepts invitation" << endl; os << " -d" << "\t" << "Rejects invitation" << endl; os << " -i" << "\t" << "Ignores invitation [WARNING: do not use unless you know what you are doing]" << endl; os << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "invite\" to send/remove invitations to other users" << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "showpcr\" to browse incoming/outgoing invitations" << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "users\" to see contacts" << endl; } if (!strcmp(command, "masterkey")) { os << "Shows your master key." << endl; os << endl; os << "Your data is only readable through a chain of decryption operations that begins" << endl; os << "with your master encryption key (Recovery Key), which MEGA stores encrypted with your password." << endl; os << "This means that if you lose your password, your Recovery Key can no longer be decrypted," << endl; os << "and you can no longer decrypt your data." << endl; os << "Exporting the Recovery Key and keeping it in a secure location" << endl; os << "enables you to set a new password without data loss." << endl; os << "Always keep physical control of your master key (e.g. on a client device, external storage, or print)" << endl; } if (!strcmp(command, "showpcr")) { os << "Shows incoming and outgoing contact requests." << endl; os << endl; os << "Options:" << endl; os << " --in" << "\t" << "Shows incoming requests" << endl; os << " --out" << "\t" << "Shows outgoing invitations" << endl; printTimeFormatHelp(os); os << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "ipc\" to manage invitations received" << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "users\" to see contacts" << endl; } else if (!strcmp(command, "users")) { os << "List contacts" << endl; os << endl; os << "Options:" << endl; os << " -d" << "\tcontact@email " << "\t" << "Deletes the specified contact." << endl; os << "--help-verify " << "\t" << "Prints general information regarding contact verification." << endl << "--help-verify contact@email" << "\t" << "This will show credentials of both own user and contact" << endl << " " << "\t" << " and instructions in order to proceed with the verifcation." << endl; os << "--verify contact@email " << "\t" << "Verifies contact@email." << endl << " " << "\t" << " CAVEAT: First you would need to manually ensure credentials match!" << endl; os << "--unverify contact@email " << "\t" << "Sets contact@email as no longer verified. New shares with that user" << endl << " " << "\t" << " will require verification." << endl; os << "Listing Options:" << endl; os << " -s" << "\t" << "Show shared folders with listed contacts" << endl; os << " -h" << "\t" << "Show all contacts (hidden, blocked, ...)" << endl; os << " -n" << "\t" << "Show users names" << endl; printTimeFormatHelp(os); os << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "invite\" to send/remove invitations to other users" << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "showpcr\" to browse incoming/outgoing invitations" << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "ipc\" to manage invitations received" << endl; os << "Use \"" << getCommandPrefixBasedOnMode() << "users\" to see contacts" << endl; } else if (!strcmp(command, "speedlimit")) { os << "Displays/modifies upload/download rate limits: either speed or max connections" << endl; os << endl; os << " NEWLIMIT is the new limit to set. If no option is provided, NEWLIMIT will be " << endl; os << " applied for both download/upload speed limits. 0, for speeds, means unlimited." << endl; os << " NEWLIMIT may include (B)ytes, (K)ilobytes, (M)egabytes, (G)igabytes & (T)erabytes." << endl; os << " Examples: \"1m12k3B\" \"3M\". If no units are given, bytes are assumed." << endl; os << endl; os << "Options:" << endl; os << " -d " << "Set/Read download speed limit, expressed in size per second." << endl; os << " -u " << "Set/Read dpload speed limit, expressed in size per second" << endl; os << " --upload-connections " << "Set/Read max number of connections for an upload transfer" << endl; os << " --download-connections " << "Set/Read max number of connections for a download transfer" << endl; os << endl; os << "Display options:" << endl; os << " -h " << "Human readable" << endl; os << endl; os << "Notice: these limits will be saved for the next time you execute MEGAcmd server. They will be removed if you logout." << endl; } else if (!strcmp(command, "killsession")) { os << "Kills a session of current user." << endl; os << endl; os << "Options:" << endl; os << " -a" << "\t" << "kills all sessions except the current one" << endl; os << endl; os << "To see all sessions use \"whoami -l\"" << endl; } else if (!strcmp(command, "whoami")) { os << "Prints info of the user" << endl; os << endl; os << "Options:" << endl; os << " -l" << "\t" << "Show extended info: total storage used, storage per main folder" << endl; os << " " << "\t" << "(see mount), pro level, account balance, and also the active sessions" << endl; } else if (!strcmp(command, "df")) { os << "Shows storage info" << endl; os << endl; os << "Shows total storage used in the account, storage per main folder (see mount)" << endl; os << endl; os << "Options:" << endl; os << " -h" << "\t" << "Human readable sizes. Otherwise, size will be expressed in Bytes" << endl; } else if (!strcmp(command, "proxy")) { os << "Show or sets proxy configuration" << endl; os << endl; os << "With no parameter given, this will print proxy configuration" << endl; os << endl; os << "Options:" << endl; os << "URL" << "\t" << "Proxy URL (e.g: https://127.0.0.1:8080)" << endl; os << " --none" << "\t" << "To disable using a proxy" << endl; os << " --auto" << "\t" << "To use the proxy configured in your system" << endl; os << " --username=USERNAME" << "\t" << "The username, for authenticated proxies" << endl; os << " --password=PASSWORD" << "\t" << "The password, for authenticated proxies. Please, avoid using passwords containing \" or '" << endl; os << endl; os << "Note: Proxy settings will be saved for the next time you open MEGAcmd, but will be removed if you logout." << endl; } else if (!strcmp(command, "cat")) { os << "Prints the contents of remote files" << endl; os << endl; if (flags.win || flags.showAll) { os << "To avoid issues with encoding on Windows, if you want to cat the exact binary contents of a remote file into a local one," << endl; os << "use non-interactive mode with -o /path/to/file. See help \"non-interactive\"" << endl; } } else if (!strcmp(command, "mediainfo")) { os << "Prints media info of remote files" << endl; os << endl; os << "Options:" << endl; os << " --path-display-size=N" << "\t" << "Use a fixed size of N characters for paths" << endl; } else if (!strcmp(command, "passwd")) { os << "Modifies user password" << endl; os << endl; os << "Notice that modifying the password will close all your active sessions" << endl; os << " in all your devices (except for the current one)" << endl; os << endl; os << " Please, avoid using passwords containing \" or '" << endl; os << endl; os << "Options:" << endl; os << " -f " << "\t" << "Force (no asking)" << endl; os << " --auth-code=XXXX" << "\t" << "Two-factor Authentication code. More info: https://mega.nz/blog_48" << endl; } else if (!strcmp(command, "reload")) { os << "Forces a reload of the remote files of the user" << endl; os << "It will also resume synchronizations." << endl; } else if (!strcmp(command, "version")) { os << "Prints MEGAcmd versioning and extra info" << endl; os << endl; os << "Options:" << endl; os << " -c" << "\t" << "Shows changelog for the current version" << endl; os << " -l" << "\t" << "Show extended info: MEGA SDK version and features enabled" << endl; } else if (!strcmp(command, "thumbnail")) { os << "To download/upload the thumbnail of a file." << endl; os << " If no -s is inidicated, it will download the thumbnail." << endl; os << endl; os << "Options:" << endl; os << " -s" << "\t" << "Sets the thumbnail to the specified file" << endl; } else if (!strcmp(command, "preview")) { os << "To download/upload the preview of a file." << endl; os << " If no -s is inidicated, it will download the preview." << endl; os << endl; os << "Options:" << endl; os << " -s" << "\t" << "Sets the preview to the specified file" << endl; } else if (!strcmp(command, "find")) { os << "Find nodes matching a pattern" << endl; os << endl; os << "Options:" << endl; os << " --pattern=PATTERN" << "\t" << "Pattern to match"; os << " (" << getsupportedregexps() << ")" << endl; os << " --type=d|f " << "\t" << "Determines type. (d) for folder, f for files" << endl; os << " --mtime=TIMECONSTRAIN" << "\t" << "Determines time constrains, in the form: [+-]TIMEVALUE" << endl; os << " " << "\t" << " TIMEVALUE may include hours(h), days(d), minutes(M)," << endl; os << " " << "\t" << " seconds(s), months(m) or years(y)" << endl; os << " " << "\t" << " Examples:" << endl; os << " " << "\t" << " \"+1m12d3h\" shows files modified before 1 month," << endl; os << " " << "\t" << " 12 days and 3 hours the current moment" << endl; os << " " << "\t" << " \"-3h\" shows files modified within the last 3 hours" << endl; os << " " << "\t" << " \"-3d+1h\" shows files modified in the last 3 days prior to the last hour" << endl; os << " --size=SIZECONSTRAIN" << "\t" << "Determines size constrains, in the form: [+-]TIMEVALUE" << endl; os << " " << "\t" << " TIMEVALUE may include (B)ytes, (K)ilobytes, (M)egabytes, (G)igabytes & (T)erabytes" << endl; os << " " << "\t" << " Examples:" << endl; os << " " << "\t" << " \"+1m12k3B\" shows files bigger than 1 Mega, 12 Kbytes and 3Bytes" << endl; os << " " << "\t" << " \"-3M\" shows files smaller than 3 Megabytes" << endl; os << " " << "\t" << " \"-4M+100K\" shows files smaller than 4 Mbytes and bigger than 100 Kbytes" << endl; os << " --show-handles" << "\t" << "Prints files/folders handles (H:XXXXXXXX). You can address a file/folder by its handle" << endl; os << " --print-only-handles" << "\t" << "Prints only files/folders handles (H:XXXXXXXX). You can address a file/folder by its handle" << endl; if (flags.usePcre || flags.showAll) { os << " --use-pcre" << "\t" << "use PCRE expressions" << endl; } os << " -l" << "\t" << "Prints file info" << endl; printTimeFormatHelp(os); } else if(!strcmp(command,"debug") ) { os << "Enters debugging mode (HIGHLY VERBOSE)" << endl; os << endl; os << "For a finer control of log level see \"log --help\"" << endl; } else if (!strcmp(command, "quit") || !strcmp(command, "exit")) { os << "Quits MEGAcmd" << endl; os << endl; os << "Notice that the session will still be active, and local caches available" << endl; os << "The session will be resumed when the service is restarted" << endl; if (isCurrentThreadCmdShell()) { os << endl; os << "Be aware that this will exit both the interactive shell and the server." << endl; os << "To only exit current shell and keep server running, use \"exit --only-shell\"" << endl; } } else if (!strcmp(command, "transfers")) { os << "List or operate with transfers" << endl; os << endl; os << "If executed without option it will list the first 10 transfers" << endl; os << "Options:" << endl; os << " -c (TAG|-a)" << "\t" << "Cancel transfer with TAG (or all with -a)" << endl; os << " -p (TAG|-a)" << "\t" << "Pause transfer with TAG (or all with -a)" << endl; os << " -r (TAG|-a)" << "\t" << "Resume transfer with TAG (or all with -a)" << endl; os << " --only-uploads" << "\t" << "Show/Operate only upload transfers" << endl; os << " --only-downloads" << "\t" << "Show/Operate only download transfers" << endl; os << endl; os << "Show options:" << endl; os << " --summary" << "\t" << "Prints summary of on going transfers" << endl; os << " --show-syncs" << "\t" << "Show synchronization transfers" << endl; os << " --show-completed" << "\t" << "Show completed transfers" << endl; os << " --only-completed" << "\t" << "Show only completed download" << endl; os << " --limit=N" << "\t" << "Show only first N transfers" << endl; os << " --path-display-size=N" << "\t" << "Use at least N characters for displaying paths" << endl; printColumnDisplayerHelp(os); os << endl; os << "TYPE legend correspondence:" << endl; #ifdef _WIN32 const string cD = utf16ToUtf8(L"\u25bc"); const string cU = utf16ToUtf8(L"\u25b2"); const string cS = utf16ToUtf8(L"\u21a8"); const string cB = utf16ToUtf8(L"\u2191"); #else const string cD = "\u21d3"; const string cU = "\u21d1"; const string cS = "\u21f5"; const string cB = "\u23eb"; #endif os << " " << cD <<" = \t" << "Download transfer" << endl; os << " " << cU <<" = \t" << "Upload transfer" << endl; os << " " << cS <<" = \t" << "Sync transfer. The transfer is done in the context of a synchronization" << endl; os << " " << cB <<" = \t" << "Backup transfer. The transfer is done in the context of a backup" << endl; } else if (((flags.win && !flags.readline) || flags.showAll) && !strcmp(command, "autocomplete")) { os << "Modifies how tab completion operates." << endl; os << endl; os << "The default is to operate like the native platform. However" << endl; os << "you can switch it between mode 'dos' and 'unix' as you prefer." << endl; os << "Options:" << endl; os << " dos" << "\t" << "Each press of tab places the next option into the command line" << endl; os << " unix" << "\t" << "Options are listed in a table, or put in-line if there is only one" << endl; os << endl; os << "Note: this command is only available on some versions of Windows" << endl; } else if (((flags.win && !flags.readline) || flags.showAll) && !strcmp(command, "codepage")) { os << "Switches the codepage used to decide which characters show on-screen." << endl; os << endl; os << "MEGAcmd supports unicode or specific code pages. For european countries you may need" << endl; os << "to select a suitable codepage or secondary codepage for the character set you use." << endl; os << "Of course a font containing the glyphs you need must have been selected for the terminal first." << endl; os << "Options:" << endl; os << " (no option)" << "\t" << "Outputs the selected code page and secondary codepage (if configured)." << endl; os << " N" << "\t" << "Sets the main codepage to N. 65001 is Unicode." << endl; os << " M" << "\t" << "Sets the secondary codepage to M, which is used if the primary can't translate a character." << endl; os << endl; os << "Note: this command is only available on some versions of Windows" << endl; } else if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-add")) { os << "Creates a new FUSE mount." << endl; os << endl; os << "Mounts are automatically enabled after being added, making the chosen MEGA folder accessible within the local filesystem." << endl; os << "When a mount is disabled, its configuration will be saved, but the cloud folder will not be mounted locally (see fuse-disable)." << endl; os << "Mounts are persisted after restarts and writable by default. You may change these and other options of a FUSE mount with fuse-config." << endl; os << "Use fuse-show to display the list of mounts." << endl; os << endl; os << "Parameters:" << endl; if (!flags.win || getenv("MEGACMD_FUSE_ALLOW_LOCAL_PATHS")) { os << " localPath [unix only] Specifies where the files contained by remotePath should be visible on the local filesystem." << endl; } if (flags.win && getenv("MEGACMD_FUSE_ALLOW_LOCAL_PATHS")) { os << " In Windows, localPath must not exist" << endl; } os << " remotePath Specifies what directory (or share) should be exposed on the local filesystem." << endl; os << endl; os << "Options:" << endl; os << " --name=name A user friendly name which the mount can be identified by. If not provided, the display name" << endl; os << " of the entity specified by remotePath will be used. If remotePath specifies the entire cloud" << endl; os << " drive, the mount's name will be \"MEGA\". If remotePath specifies the rubbish bin, the mount's" << endl; os << " name will be \"MEGA Rubbish\"." << endl; os << " --read-only Specifies that the mount should be read-only. Otherwise, the mount is writable." << endl; os << " --transient Specifies that the mount should be transient, meaning it will be lost on restart." << endl; os << " Otherwise, the mount is persistent, meaning it will remain across on restarts." << endl; os << " --disabled Specifies that the mount should not enabled after being added, and must be enabled manually. See fuse-enable." << endl; os << " If this option is passed, the mount will not be automatically enabled at startup." << endl; os << endl; os << FuseCommand::getDisclaimer() << endl; os << endl; os << FuseCommand::getBetaMsg() << endl; } else if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-remove")) { os << "Deletes a specified FUSE mount." << endl; os << endl; os << "Parameters:" << endl; os << FuseCommand::getIdentifierParameter() << endl; os << endl; os << "Note: " << FuseCommand::getBetaMsg() << endl; } else if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-enable")) { os << "Enables a specified FUSE mount." << endl; os << endl; os << "After a mount has been enabled, its cloud entities will be accessible via the mount's local path." << endl; os << endl; os << "Parameters:" << endl; os << FuseCommand::getIdentifierParameter() << endl; os << endl; os << "Options:" << endl; os << " --temporarily Specifies whether the mount should be enabled only until the server is restarted." << endl; os << " Has no effect on transient mounts, since any action on them is always temporary." << endl; os << endl; os << "Note: " << FuseCommand::getBetaMsg() << endl; } else if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-disable")) { os << "Disables a specified FUSE mount." << endl; os << endl; os << "After a mount has been disabled, its cloud entities will no longer be accessible via the mount's local path. You may enable it again via fuse-enable." << endl; os << endl; os << "Parameters:" << endl; os << FuseCommand::getIdentifierParameter() << endl; os << "Options:" << endl; os << " --temporarily Specifies whether the mount should be disabled only until the server is restarted." << endl; os << " Has no effect on transient mounts, since any action on them is always temporary." << endl; os << endl; os << "Note: " << FuseCommand::getBetaMsg() << endl; } else if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-show")) { os << "Displays the list of FUSE mounts and their information. If a name or local path provided, displays information of that mount instead." << endl; os << endl; os << "When all mounts are shown, the following columns are displayed:" << endl; os << " NAME: The user-friendly name of the mount, specified when it was added or by fuse-config." << endl; os << " LOCAL_PATH: The local mount point in the filesystem." << endl; os << " REMOTE_PATH: The cloud directory or share that is exposed locally." << endl; os << " PERSISTENT: If the mount is saved across restarts, \"YES\". Otherwise, \"NO\"." << endl; os << " ENABLED: If the mount is currently enabled, \"YES\". Otherwise, \"NO\"." << endl; os << endl; os << "Parameters:" << endl; os << FuseCommand::getIdentifierParameter() << endl; os << " If not provided, the list of mounts will be shown instead." << endl; os << endl; os << "Options:" << endl; os << " --only-enabled Only shows mounts that are enabled." << endl; os << " --disable-path-collapse Ensures all paths are fully shown. By default long paths are truncated for readability." << endl; os << " --limit=rowcount Limits the amount of rows displayed. Set to 0 to display unlimited rows. Default is unlimited." << endl; printColumnDisplayerHelp(os); os << endl; os << "Note: " << FuseCommand::getBetaMsg() << endl; } else if ((flags.fuse || flags.showAll) && !strcmp(command, "fuse-config")) { os << "Modifies the specified FUSE mount configuration." << endl; os << endl; os << "Parameters:" << endl; os << FuseCommand::getIdentifierParameter() << endl; os << endl; os << "Options:" << endl; os << " --name=name Sets the friendly name used to uniquely identify the mount." << endl; os << " --enable-at-startup=yes|no Controls whether or not the mount should be enabled automatically on startup." << endl; os << " --persistent=yes|no Controls whether or not the mount is saved across restarts." << endl; os << " --read-only=yes|no Controls whether the mount is read-only or writable." << endl; os << endl; os << "Note: " << FuseCommand::getBetaMsg() << endl; } return os.str(); } #define SSTR( x ) static_cast< const std::ostringstream & >( \ ( std::ostringstream() << std::dec << x ) ).str() void printAvailableCommands(int extensive = 0, bool showAllOptions = false) { std::set validCommandSet(validCommands.begin(), validCommands.end()); if (showAllOptions) { validCommandSet.emplace("webdav"); validCommandSet.emplace("ftp"); validCommandSet.emplace("autocomplete"); validCommandSet.emplace("codepage"); validCommandSet.emplace("unicode"); validCommandSet.emplace("permissions"); validCommandSet.emplace("update"); validCommandSet.emplace("fuse-add"); validCommandSet.emplace("fuse-remove"); validCommandSet.emplace("fuse-enable"); validCommandSet.emplace("fuse-disable"); validCommandSet.emplace("fuse-show"); validCommandSet.emplace("fuse-config"); } if (!extensive) { const size_t size = validCommandSet.size(); const size_t third = (size / 3) + ((size % 3 > 0) ? 1 : 0); const size_t twoThirds = 2 * (size / 3) + size % 3; // iterators for each column auto it1 = validCommandSet.begin(); auto it2 = std::next(it1, third); auto it3 = std::next(it1, twoThirds); for (; it1 != validCommandSet.end() && it2 != validCommandSet.end() && it3 != validCommandSet.end(); ++it1, ++it2, ++it3) { OUTSTREAM << " " << getLeftAlignedStr(*it1, 20) << getLeftAlignedStr(*it2, 20) << " " << *it3 << endl; } if (size % 3) { OUTSTREAM << " " << getLeftAlignedStr(*it1, 20); if (size % 3 > 1 ) { OUTSTREAM << getLeftAlignedStr(*it2, 20); } OUTSTREAM << endl; } return; } HelpFlags helpFlags(showAllOptions); for (const string& command : validCommandSet) { if (command == "completion") { continue; } if (extensive > 1) { OUTSTREAM << "<" << command << ">" << endl; OUTSTREAM << getHelpStr(command.c_str(), helpFlags); unsigned int width = getNumberOfCols(); for (unsigned int j = 0; j < width; j++) OUTSTREAM << "-"; OUTSTREAM << endl; } else { OUTSTREAM << " " << getUsageStr(command.c_str(), helpFlags); string helpstr = getHelpStr(command.c_str(), helpFlags); helpstr = string(helpstr, helpstr.find_first_of("\n") + 1); OUTSTREAM << ": " << string(helpstr, 0, helpstr.find_first_of("\n")); OUTSTREAM << endl; } } } void checkBlockStatus(bool waitcompletion = true) { time_t tnow = time(NULL); if ( (tnow - lastTimeCheckBlockStatus) > 30) { std::unique_ptr megaCmdListener{waitcompletion?new MegaCmdListener(api, NULL):nullptr}; api->whyAmIBlocked(megaCmdListener.get());//TO enforce acknowledging unblock transition if (megaCmdListener) { megaCmdListener->wait(); } lastTimeCheckBlockStatus = tnow; } } void executecommand(const char* ptr) { vector words = getlistOfWords(ptr, !isCurrentThreadCmdShell()); if (!words.size()) { return; } string thecommand = words[0]; if (( thecommand == "?" ) || ( thecommand == "h" )) { printAvailableCommands(); return; } if (words[0] == "completion") { if (words.size() >= 2 && words[1].find("--client-width=") == 0) { words.erase(++words.begin()); } if (words.size() < 3) words.push_back(""); vector wordstocomplete(words.begin()+1,words.end()); setCurrentThreadLine(wordstocomplete); OUTSTREAM << getListOfCompletionValues(wordstocomplete); return; } if (getBlocked()) { checkBlockStatus(!validCommand(thecommand) && thecommand != "retrycons"); } if (words[0] == "retrycons") { api->retryPendingConnections(); return; } if (words[0] == "loggedin") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); } return; } if (words[0] == "completionshell") { if (words.size() == 2) { vector validCommandsOrdered = validCommands; sort(validCommandsOrdered.begin(), validCommandsOrdered.end()); for (size_t i = 0; i < validCommandsOrdered.size(); i++) { if (validCommandsOrdered.at(i)!="completion") { OUTSTREAM << validCommandsOrdered.at(i); if (i != validCommandsOrdered.size() -1) { OUTSTREAM << (char)0x1F; } } } } else { if (words.size() < 3) words.push_back(""); vector wordstocomplete(words.begin()+1,words.end()); setCurrentThreadLine(wordstocomplete); OUTSTREAM << getListOfCompletionValues(wordstocomplete,(char)0x1F, string().append(1, (char)0x1F).c_str(), false); } return; } words = getlistOfWords(ptr, !isCurrentThreadCmdShell(), true); //Get words again ignoring trailing spaces (only reasonable for completion) map cloptions; map clflags; set validParams; addGlobalFlags(&validParams); if (setOptionsAndFlags(&cloptions, &clflags, &words, validParams, true)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr(thecommand.c_str()); return; } insertValidParamsPerCommand(&validParams, thecommand); if (!validCommand(thecommand)) //unknown command { setCurrentThreadOutCode(MCMD_EARGS); if (loginInAtStartup) { LOG_err << "Command not valid while login in: " << thecommand; } else { LOG_err << "Command not found: " << thecommand; } return; } if (setOptionsAndFlags(&cloptions, &clflags, &words, validParams)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr(thecommand.c_str()); return; } setCurrentThreadLogLevel(MegaApi::LOG_LEVEL_ERROR + (getFlag(&clflags, "v")?(1+getFlag(&clflags, "v")):0)); if (getFlag(&clflags, "help")) { string h = getHelpStr(thecommand.c_str()); OUTSTREAM << h << endl; return; } if ( thecommand == "help" ) { if (getFlag(&clflags,"upgrade")) { const char *userAgent = api->getUserAgent(); char* url = new char[strlen(userAgent)+10]; sprintf(url, "pro/uao=%s",userAgent); string theurl; if (api->isLoggedIn()) { MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->getSessionTransferURL(url, megaCmdListener); megaCmdListener->wait(); if (megaCmdListener->getError() && megaCmdListener->getError()->getErrorCode() == MegaError::API_OK) { theurl = megaCmdListener->getRequest()->getLink(); } else { setCurrentThreadOutCode(MCMD_EUNEXPECTED); LOG_warn << "Unable to get session transfer url: " << megaCmdListener->getError()->getErrorString(); } delete megaCmdListener; } if (!theurl.size()) { theurl = "https://mega.nz/pro"; } OUTSTREAM << "MEGA offers different PRO plans to increase your allowed transfer quota and user storage." << endl; OUTSTREAM << "Open the following link in your browser to obtain a PRO account: " << endl; OUTSTREAM << " " << theurl << endl; delete [] url; } else if (getFlag(&clflags,"paths")) { OUTSTREAM << "MEGAcmd will allow you to enter local and remote paths." << endl; OUTSTREAM << " - REMOTE paths are case-sensitive, and use '/' as path separator." << endl; OUTSTREAM << " The root folder in your cloud will be `/`. " << endl; OUTSTREAM << " There are other possible root folders (Rubbish Bin, Inbox & in-shares). " << endl; OUTSTREAM << " For further info on root folders, see \"mount --help\"" << endl; OUTSTREAM << " - LOCAL paths are system dependant. " << endl; OUTSTREAM << " In Windows, you will be able to use both '\\' and '/' as separator." << endl; OUTSTREAM << endl; OUTSTREAM << "To refer to paths that include spaces, you will need to either surround the path between quotes \"\"," << endl; OUTSTREAM << " or scape the space with '\\ '." << endl; OUTSTREAM << " e.g: or will list the contents of a folder named 'a folder' " << endl; OUTSTREAM << " located in the root folder of your cloud." << endl; OUTSTREAM << endl; OUTSTREAM << "USE autocompletion! MEGAcmd features autocompletion. Pressing will autocomplete paths" << endl; OUTSTREAM << " (both LOCAL & REMOTE) along with other parameters of commands. It will surely save you some typing!" << endl; } else if (getFlag(&clflags,"non-interactive")) { OUTSTREAM << "MEGAcmd features two modes of interaction:" << endl; OUTSTREAM << " - interactive: entering commands in this shell. Enter \"help\" to list available commands" << endl; OUTSTREAM << " - non-interactive: MEGAcmd is also listening to outside petitions" << endl; OUTSTREAM << "For the non-interactive mode, there are client commands you can use. " << endl; #ifdef _WIN32 OUTSTREAM << "Along with the interactive shell, there should be several mega-*.bat scripts" << endl; OUTSTREAM << "installed with MEGAcmd. You can use them writting their absolute paths, " << endl; OUTSTREAM << "or including their location into your environment PATH and execute simply with mega-*" << endl; OUTSTREAM << "If you use PowerShell, you can add the the location of the scripts to the PATH with:" << endl; OUTSTREAM << " $env:PATH += \";$env:LOCALAPPDATA\\MEGAcmd\"" << endl; OUTSTREAM << "Client commands completion requires bash, hence, it is not available for Windows. " << endl; OUTSTREAM << "You can add \" -o outputfile\" to save the output into a file instead of to standard output." << endl; OUTSTREAM << endl; #elif __MACH__ OUTSTREAM << "After installing the dmg, along with the interactive shell, client commands" << endl; OUTSTREAM << "should be located at /Applications/MEGAcmd.app/Contents/MacOS" << endl; OUTSTREAM << "If you wish to use the client commands from MacOS Terminal, open the Terminal and " << endl; OUTSTREAM << "include the installation folder in the PATH. Typically:" << endl; OUTSTREAM << endl; OUTSTREAM << " export PATH=/Applications/MEGAcmd.app/Contents/MacOS:$PATH" << endl; OUTSTREAM << endl; OUTSTREAM << "And for bash completion, source megacmd_completion.sh:" << endl; OUTSTREAM << " source /Applications/MEGAcmd.app/Contents/MacOS/megacmd_completion.sh" << endl; #else OUTSTREAM << "If you have installed MEGAcmd using one of the available packages" << endl; OUTSTREAM << "both the interactive shell (mega-cmd) and the different client commands (mega-*) " << endl; OUTSTREAM << "will be in your PATH (you might need to open your shell again). " << endl; OUTSTREAM << "If you are using bash, you should also have autocompletion for client commands working. " << endl; #endif } #if defined(_WIN32) && defined(NO_READLINE) else if (getFlag(&clflags, "unicode")) { OUTSTREAM << "Unicode support has been considerably improved in the interactive console since version 1.0.0." << endl; OUTSTREAM << "If you do experience issues with it, please do not hesistate to contact us." << endl; OUTSTREAM << endl; OUTSTREAM << "Known issues: " << endl; OUTSTREAM << endl; OUTSTREAM << "If some symbols are not displaying, or displaying correctly, please first check you have a suitable font" << endl; OUTSTREAM << "selected, and a suitable codepage. See \"help codepage\" for details on that." << endl; OUTSTREAM << "When using the non-interactive mode (See \"help --non-interactive\"), piping or redirecting can be quite" << endl; OUTSTREAM << "problematic due to different encoding expectations between programs. You can use \"-o outputfile\" with your " << endl; OUTSTREAM << "mega-*.bat commands to have the output written to a file in UTF-8, and then open it with a suitable editor." << endl; } #elif defined(_WIN32) else if (getFlag(&clflags,"unicode")) { OUTSTREAM << "A great effort has been done so as to have MEGAcmd support non-ASCII characters." << endl; OUTSTREAM << "However, it might still be consider in an experimantal state. You might experiment some issues." << endl; OUTSTREAM << "If that is the case, do not hesistate to contact us so as to improve our support." << endl; OUTSTREAM << endl; OUTSTREAM << "Known issues: " << endl; OUTSTREAM << endl; OUTSTREAM << "In Windows, when executing a client command in non-interactive mode or the interactive shell " << endl; OUTSTREAM << "Some symbols might not be printed. This is something expected, since your terminal (PowerShell/Command Prompt)" << endl; OUTSTREAM << "is not able to draw those symbols. However you can use the non-interactive mode to have the output " << endl; OUTSTREAM << "written into a file and open it with a graphic editor that supports them. The file will be UTF-8 encoded." << endl; OUTSTREAM << "To do that, use \"-o outputfile\" with your mega-*.bat commands. (See \"help --non-interactive\")." << endl; OUTSTREAM << "Please, restrain using \"> outputfile\" or piping the output into another command if you require unicode support" << endl; OUTSTREAM << "because for instance, when piping, your terminal does not treat the output as binary; " << endl; OUTSTREAM << "it will meddle with the encoding, resulting in unusable output." << endl; OUTSTREAM << endl; OUTSTREAM << "In the interactive shell, the library used for reading the inputs is not able to capture unicode inputs by default" << endl; OUTSTREAM << "There's a workaround to activate an alternative way to read input. You can activate it using \"unicode\" command. " << endl; OUTSTREAM << "However, if you do so, arrow keys and hotkeys combinations will be disabled. You can disable this input mode again. " << endl; OUTSTREAM << "See \"unicode --help\" for further info." << endl; } #endif else { OUTSTREAM << "Here is the list of available commands and their usage" << endl; OUTSTREAM << "Use \"help -f\" to get a brief description of the commands" << endl; OUTSTREAM << "You can get further help on a specific command with \"command --help\" " << endl; OUTSTREAM << "Alternatively, you can use \"help -ff\" to get a complete description of all commands" << endl; OUTSTREAM << "Use \"help --non-interactive\" to learn how to use MEGAcmd with scripts" << endl; OUTSTREAM << "Use \"help --upgrade\" to learn about the limitations and obtaining PRO accounts" << endl; OUTSTREAM << "Use \"help --paths\" to learn about paths and how to enter them" << endl; OUTSTREAM << endl << "Commands:" << endl; printAvailableCommands(getFlag(&clflags, "f"), getFlag(&clflags, "show-all-options")); OUTSTREAM << endl << "Verbosity: You can increase the amount of information given by any command by passing \"-v\" (\"-vv\", \"-vvv\", ...)" << endl; if (getBlocked()) { unsigned int width = getintOption(&cloptions, "client-width", getNumberOfCols(75)); if (width > 1 ) width--; OUTSTRINGSTREAM os; printCenteredContents(os, string("[BLOCKED]\n").append(sandboxCMD->getReasonblocked()).c_str(), width); OUTSTREAM << os.str(); } } return; } cmdexecuter->executecommand(words, &clflags, &cloptions); } bool executeUpdater(bool *restartRequired, bool doNotInstall = false) { LOG_debug << "Executing updater..." ; #ifdef _WIN32 #ifndef NDEBUG LPCWSTR szPath = TEXT(".\\MEGAcmdUpdater.exe"); #else TCHAR szPath[MAX_PATH]; if (!SUCCEEDED(GetModuleFileName(NULL, szPath , MAX_PATH))) { LOG_err << "Couldnt get EXECUTABLE folder: " << wstring(szPath); setCurrentThreadOutCode(MCMD_EUNEXPECTED); return false; } if (SUCCEEDED(PathRemoveFileSpec(szPath))) { if (!PathAppend(szPath,TEXT("MEGAcmdUpdater.exe"))) { LOG_err << "Couldnt append MEGAcmdUpdater exec: " << wstring(szPath); setCurrentThreadOutCode(MCMD_EUNEXPECTED); return false; } } else { LOG_err << "Couldnt remove file spec: " << wstring(szPath); setCurrentThreadOutCode(MCMD_EUNEXPECTED); return false; } #endif STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); ZeroMemory( &pi, sizeof(pi) ); si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; TCHAR szPathUpdaterCL[MAX_PATH+30]; if (doNotInstall) { wsprintfW(szPathUpdaterCL, L"%ls --normal-update --do-not-install --version %d", szPath, MEGACMD_CODE_VERSION); } else { wsprintfW(szPathUpdaterCL, L"%ls --normal-update --version %d", szPath, MEGACMD_CODE_VERSION); } LOG_verbose << "Executing: " << wstring(szPathUpdaterCL); if (!CreateProcess( szPath,(LPWSTR) szPathUpdaterCL,NULL,NULL,TRUE, 0, NULL,NULL, &si,&pi) ) { LOG_err << "Unable to execute: <" << wstring(szPath) << "> errno = : " << ERRNO; setCurrentThreadOutCode(MCMD_EUNEXPECTED); return false; } WaitForSingleObject( pi.hProcess, INFINITE ); DWORD exit_code; GetExitCodeProcess(pi.hProcess, &exit_code); *restartRequired = exit_code != 0; LOG_verbose << " The execution of Updater returns: " << exit_code; CloseHandle( pi.hProcess ); CloseHandle( pi.hThread ); #else pid_t pidupdater = fork(); if ( pidupdater == 0 ) { const char * donotinstallstr = NULL; if (doNotInstall) { donotinstallstr = "--do-not-install"; } auto versionStr = std::to_string(MEGACMD_CODE_VERSION); const char* version = const_cast(versionStr.c_str()); #ifdef __MACH__ #ifndef NDEBUG const char * args[] = {"./mega-cmd-updater", "--normal-update", donotinstallstr, "--version", version, NULL}; #else const char * args[] = {"/Applications/MEGAcmd.app/Contents/MacOS/MEGAcmdUpdater", "--normal-update", donotinstallstr, "--version", version, NULL}; #endif #else //linux doesn't use autoupdater: this is just for testing #ifndef NDEBUG const char * args[] = {"./mega-cmd-updater", "--normal-update", donotinstallstr, "--version", version, NULL}; // notice: won't work after lcd #else const char * args[] = {"mega-cmd-updater", "--normal-update", donotinstallstr, "--version", version, NULL}; #endif #endif LOG_verbose << "Exec updater line: " << args[0] << " " << args[1] << " " << args[2]; if (execvp(args[0], const_cast(args)) < 0) { LOG_err << " FAILED to initiate updater. errno = " << ERRNO; } } int status; waitpid(pidupdater, &status, 0); if ( WIFEXITED(status) ) { int exit_code = WEXITSTATUS(status); LOG_debug << "Exit status of the updater was " << exit_code; *restartRequired = exit_code != 0; } else { LOG_err << " Unexpected error waiting for Updater. errno = " << ERRNO; } #endif if (*restartRequired && api) { sendEvent(StatsManager::MegacmdEvent::UPDATE_RESTART, api); } return true; } bool restartServer() { #ifdef _WIN32 LPWSTR szPathExecQuoted = GetCommandLineW(); wstring wspathexec = wstring(szPathExecQuoted); if (wspathexec.at(0) == '"') { wspathexec = wspathexec.substr(1); } size_t pos = wspathexec.find(L"--wait-for"); if (pos != string::npos) { wspathexec = wspathexec.substr(0,pos); } while (wspathexec.size() && ( wspathexec.at(wspathexec.size()-1) == '"' || wspathexec.at(wspathexec.size()-1) == ' ' )) { wspathexec = wspathexec.substr(0,wspathexec.size()-1); } LPWSTR szPathServerCommand = (LPWSTR) wspathexec.c_str(); TCHAR szPathServer[MAX_PATH]; if (!SUCCEEDED(GetModuleFileName(NULL, szPathServer , MAX_PATH))) { LOG_err << "Couldnt get EXECUTABLE folder: " << wstring(szPathServer); setCurrentThreadOutCode(MCMD_EUNEXPECTED); return false; } LOG_debug << "Restarting the server : <" << wstring(szPathServerCommand) << ">"; STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); ZeroMemory( &pi, sizeof(pi) ); si.cb = sizeof(si); si.dwFlags = STARTF_USESHOWWINDOW; TCHAR szPathServerCL[MAX_PATH+30]; wsprintfW(szPathServerCL,L"%ls --wait-for %d", szPathServerCommand, GetCurrentProcessId()); LOG_verbose << "Executing: " << wstring(szPathServerCL); if (!CreateProcess( szPathServer,(LPWSTR) szPathServerCL,NULL,NULL,TRUE, 0, NULL,NULL, &si,&pi) ) { LOG_debug << "Unable to execute: <" << wstring(szPathServerCL) << "> errno = : " << ERRNO; return false; } #else pid_t childid = fork(); if (childid == -1) { LOG_err << "fork() failed: " << strerror(errno); return false; } if (childid == 0) // child → execv to become the new server { const char **argv = new const char*[mcmdMainArgc+3]; int i = 0, j = 0; #ifdef __linux__ string executable = const_cast(mcmdMainArgv[0]); if (executable.find("/") != 0) { executable.insert(0, getCurrentExecPath()+"/"); } argv[0] = executable.c_str(); i++; j++; #endif for (;i < mcmdMainArgc; i++) { if ( (i+1) < mcmdMainArgc && !strcmp(mcmdMainArgv[i],"--wait-for")) { i+=2; } else { argv[j++]=mcmdMainArgv[i]; } } argv[j++] = "--wait-for"; string parentpidstr = std::to_string(getppid()); argv[j++] = parentpidstr.c_str(); argv[j++] = NULL; LOG_debug << "Restarting the server : <" << argv[0] << ">"; execv(argv[0], const_cast(argv)); // execv failed — child has no threads, skip C++ teardown _exit(1); } // parent falls through — all threads intact #endif LOG_debug << "Server restarted, indicating the shell to restart also"; setCurrentThreadOutCode(MCMD_REQRESTART); string s = "restart"; cm->informStateListeners(s); return true; } bool isBareCommand(const char *l, const string &command) { string what(l); string xcommand = "X" + command; if (what == command || what == xcommand) { return true; } if (what.find(command+" ") != 0 && what.find(xcommand+" ") != 0 ) { return false; } vector words = getlistOfWords(l, !isCurrentThreadCmdShell()); for (int i = 1; i transferData(api.getTransferData()); assert(transferData); if (transferData->getNumDownloads() > 0 || transferData->getNumUploads() > 0) { return true; } // We can only check for delayed sync uploads if there are no sync issues if (!api.isSyncing() || api.isSyncStalled()) { return false; } auto listener = std::make_unique(nullptr); api.checkSyncUploadsThrottled(listener.get()); listener->wait(); if (listener->getError()->getErrorCode() == MegaError::API_OK) { MegaRequest* request = listener->getRequest(); assert(request); return request->getFlag(); // delayed sync uploads } return false; } void MegaCmdExecuter::mayExecutePendingStuffInWorkerThread() { { // send INVALID_UTF8_INCIDENCES if there have been incidences static std::mutex mutexSendEventInvalidUtf8Incidences; std::lock_guard g(mutexSendEventInvalidUtf8Incidences); if (auto incidencesFound = sInvalidUtf8Incidences.exchange(0)) { static HammeringLimiter hammeringLimiter(10); if (!hammeringLimiter.runRecently()) { LOG_err << "Invalid utf8 accumulated occurrences: " << incidencesFound; sendEvent(StatsManager::MegacmdEvent::INVALID_UTF8_INCIDENCES, api, false); } else { // add them again to the count, to be reconsidered later. sInvalidUtf8Incidences += incidencesFound; } } } } static bool process_line(const std::string_view line) { cmdexecuter->mayExecutePendingStuffInWorkerThread(); const char* l = line.data(); assert(line.size() == strlen(l)); // string_view does not guarantee null termination, which is depended upon switch (prompt) { case AREYOUSURETODELETE: if (!strcmp(l,"yes") || !strcmp(l,"YES") || !strcmp(l,"y") || !strcmp(l,"Y")) { cmdexecuter->confirmDelete(); } else if (!strcmp(l,"no") || !strcmp(l,"NO") || !strcmp(l,"n") || !strcmp(l,"N")) { cmdexecuter->discardDelete(); } else if (!strcmp(l,"All") || !strcmp(l,"ALL") || !strcmp(l,"a") || !strcmp(l,"A") || !strcmp(l,"all")) { cmdexecuter->confirmDeleteAll(); } else if (!strcmp(l,"None") || !strcmp(l,"NONE") || !strcmp(l,"none")) { cmdexecuter->discardDeleteAll(); } else { //Do nth, ask again OUTSTREAM << "Please enter [y]es/[n]o/[a]ll/none: " << flush; } break; case LOGINPASSWORD: { if (!strlen(l)) { break; } if (cmdexecuter->confirming) { cmdexecuter->confirmWithPassword(l); } else if (cmdexecuter->confirmingcancel) { cmdexecuter->confirmCancel(cmdexecuter->link.c_str(), l); } else { cmdexecuter->loginWithPassword(l); } cmdexecuter->confirming = false; cmdexecuter->confirmingcancel = false; setprompt(COMMAND); break; } case NEWPASSWORD: { if (!strlen(l)) { break; } newpasswd = l; OUTSTREAM << endl; setprompt(PASSWORDCONFIRM); } break; case PASSWORDCONFIRM: { if (!strlen(l)) { break; } if (l != newpasswd) { OUTSTREAM << endl << "New passwords differ, please try again" << endl; } else { OUTSTREAM << endl; if (!cmdexecuter->signingup) { cmdexecuter->changePassword(newpasswd.c_str()); } else { cmdexecuter->signupWithPassword(l); cmdexecuter->signingup = false; } } setprompt(COMMAND); break; } case COMMAND: { if (!l || !strcmp(l, "q") || !strcmp(l, "quit") || !strcmp(l, "exit") || ( (!strncmp(l, "quit ", strlen("quit ")) || !strncmp(l, "exit ", strlen("exit ")) ) && !strstr(l,"--help") ) ) { if (isCurrentThreadCmdShell() && hasOngoingTransfersOrDelayedSyncs(*api)) { const string sureToExitMsg = "There are ongoing transfers and/or pending sync uploads.\n" "Are you sure you want to exit? (Yes/No): "; int confirmationResponse = askforConfirmation(sureToExitMsg); if (!confirmationResponse) { setCurrentThreadOutCode(MCMD_CONFIRM_NO); return false; } } if (strstr(l,"--wait-for-ongoing-petitions")) { int attempts=20; //give a while for ongoing petitions to end before killing the server delete_finished_threads(); while(petitionThreads.size() > 1 && attempts--) { LOG_debug << "giving a little longer for ongoing petitions: " << petitionThreads.size(); sleepSeconds(20-attempts); delete_finished_threads(); } } return true; // exit } else if (isBareCommand(l, "sendack")) { cm->informStateListeners("ack"); break; } #if defined(_WIN32) || defined(__APPLE__) else if (isBareCommand(l, "update")) //if extra args are received, it'll be processed by executer { string confirmationQuery("This might require restarting MEGAcmd. Are you sure to continue"); confirmationQuery+="? (Yes/No): "; int confirmationResponse = askforConfirmation(confirmationQuery); if (confirmationResponse != MCMDCONFIRM_YES && confirmationResponse != MCMDCONFIRM_ALL) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); // so as not to indicate already updated return false; } bool restartRequired = false; if (!executeUpdater(&restartRequired)) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); // so as not to indicate already updated return false; } if (restartRequired && restartServer()) { OUTSTREAM << " " << endl; int attempts=20; //give a while for ongoing petitions to end before killing the server while(petitionThreads.size() > 1 && attempts--) { sleepSeconds(20-attempts); } return true; } else { OUTSTREAM << "Update is not required. You are in the last version. Further info: \"version --help\", \"update --help\"" << endl; return false; } } #endif executecommand(l); break; } } return false; //Do not exit } void* doProcessLine(void* infRaw) { auto inf = std::unique_ptr((CmdPetition*) infRaw); OUTSTRINGSTREAM s; setCurrentThreadLogLevel(MegaApi::LOG_LEVEL_ERROR); setCurrentThreadOutCode(MCMD_OK); setCurrentThreadCmdPetition(inf.get()); LoggedStreamPartialOutputs ls(cm, inf.get()); LoggedStreamPartialErrors lserr(cm, inf.get()); setCurrentThreadOutStreams(ls, lserr); setCurrentThreadIsCmdShell(inf->isFromCmdShell()); LOG_verbose << " Processing " << inf->getRedactedLine() << " in thread: " << MegaThread::currentThreadId() << " " << inf->getPetitionDetails(); doExit = process_line(inf->getUniformLine()); if (doExit) { stopCheckingforUpdaters = true; LOG_verbose << " Exit registered upon process_line: " ; } LOG_verbose << " Processed " << inf->getRedactedLine() << " in thread: " << MegaThread::currentThreadId() << " " << inf->getPetitionDetails(); MegaThread * petitionThread = inf->getPetitionThread(); if (inf->clientID != -3) // -3 is self client (no actual client) { cm->returnAndClosePetition(std::move(inf), &s, getCurrentThreadOutCode()); } semaphoreClients.release(); if (doExit && (!isCurrentThreadInteractive() || isCurrentThreadCmdShell() )) { cm->stopWaiting(); } mutexEndedPetitionThreads.lock(); endedPetitionThreads.push_back(petitionThread); mutexEndedPetitionThreads.unlock(); return nullptr; } int askforConfirmation(string message) { CmdPetition *inf = getCurrentThreadCmdPetition(); if (inf) { return cm->getConfirmation(inf,message); } else { LOG_err << "Unable to get current petition to ask for confirmation"; } return MCMDCONFIRM_NO; } bool booleanAskForConfirmation(string messageHeading) { std::string confirmationQuery = messageHeading + "? ([y]es/[n]o): "; auto confirmationResponse = askforConfirmation(confirmationQuery); return (confirmationResponse == MCMDCONFIRM_YES || confirmationResponse == MCMDCONFIRM_ALL); } string askforUserResponse(string message) { CmdPetition *inf = getCurrentThreadCmdPetition(); if (inf) { return cm->getUserResponse(inf,message); } else { LOG_err << "Unable to get current petition to ask for confirmation"; } return string("NOCURRENPETITION"); } void delete_finished_threads() { std::unique_lock lock(mutexEndedPetitionThreads); for (MegaThread *mt : endedPetitionThreads) { for (auto it = petitionThreads.begin(); it != petitionThreads.end(); ) { if (mt == it->get()) { (*it)->join(); it = petitionThreads.erase(it); } else { ++it; } } } endedPetitionThreads.clear(); } void processCommandInPetitionQueues(CmdPetition *inf); void processCommandLinePetitionQueues(std::string what); bool waitForRestartSignal = false; #ifdef __linux__ std::mutex mtxcondvar; std::condition_variable condVarRestart; bool condVarRestartBool = false; string appToWaitForSignal; void LinuxSignalHandler(int signum) { if (signum == SIGUSR2) { std::unique_lock lock(mtxcondvar); condVarRestart.notify_one(); condVarRestartBool = true; } else if (signum == SIGUSR1) { if (!waitForRestartSignal) { waitForRestartSignal = true; LOG_debug << "Preparing MEGAcmd to restart: "; stopCheckingforUpdaters = true; doExit = true; } } } #endif void finalize(bool waitForRestartSignal_param) { static bool alreadyfinalized = false; if (alreadyfinalized) return; alreadyfinalized = true; LOG_info << "closing application ..."; delete_finished_threads(); if (!consoleFailed) { delete console; } delete megaCmdMegaListener; if (threadRetryConnections) { threadRetryConnections->join(); } delete threadRetryConnections; delete api; while (!apiFolders.empty()) { delete apiFolders.front(); apiFolders.pop(); } for (std::vector< MegaApi * >::iterator it = occupiedapiFolders.begin(); it != occupiedapiFolders.end(); ++it) { delete ( *it ); } occupiedapiFolders.clear(); delete megaCmdGlobalListener; delete cmdexecuter; #ifdef __linux__ if (waitForRestartSignal_param) { LOG_debug << "Waiting for signal to restart MEGAcmd ... "; std::unique_lock lock(mtxcondvar); if (condVarRestartBool || condVarRestart.wait_for(lock, std::chrono::minutes(30)) == std::cv_status::no_timeout ) { restartServer(); } else { LOG_err << "Former server still alive after waiting. Not restarted."; } } #endif delete cm; // closes the socket; must happen after restartServer() so clients // are notified, and before exit so the new server can bind it LOG_debug << "resources have been cleaned ..."; LOG_info << "----------------------------- program end -------------------------------"; MegaApi::removeLoggerObject(loggerCMD); delete loggerCMD; ConfigurationManager::unlockExecution(); ConfigurationManager::unloadConfiguration(); } void finalize() { finalize(false); } int currentclientID = 1; void * retryConnections(void *pointer) { while(!doExit) { LOG_verbose << "Calling recurrent retryPendingConnections"; api->retryPendingConnections(); int count = 100; while (!doExit && --count) { sleepMilliSeconds(300); } } return NULL; } void startcheckingForUpdates() { ConfigurationManager::savePropertyValue("autoupdate", 1); if (!alreadyCheckingForUpdates) { alreadyCheckingForUpdates = true; LOG_info << "Starting autoupdate check mechanism"; MegaThread *checkupdatesThread = new MegaThread(); checkupdatesThread->start(checkForUpdates, checkupdatesThread); } } void stopcheckingForUpdates() { ConfigurationManager::savePropertyValue("autoupdate", 0); stopCheckingforUpdaters = true; } void* checkForUpdates(void *param) { stopCheckingforUpdaters = false; LOG_debug << "Initiating recurrent checkForUpdates"; int secstosleep = 60; while (secstosleep > 0 && !stopCheckingforUpdaters) { sleepSeconds(2); secstosleep -= 2; } while (!doExit && !stopCheckingforUpdaters) { bool restartRequired = false; if (!executeUpdater(&restartRequired, true)) //only download & check { LOG_err << " Failed to execute updater"; } else if (restartRequired) { LOG_info << " There is a pending update. Will be applied in a few seconds"; broadcastMessage("A new update has been downloaded. It will be performed in 60 seconds"); int secstosleep = 57; while (secstosleep > 0 && !stopCheckingforUpdaters) { sleepSeconds(2); secstosleep -= 2; } if (stopCheckingforUpdaters) break; broadcastMessage(" Executing update in 3"); sleepSeconds(1); if (stopCheckingforUpdaters) break; broadcastMessage(" Executing update in 2"); sleepSeconds(1); if (stopCheckingforUpdaters) break; broadcastMessage(" Executing update in 1"); sleepSeconds(1); if (stopCheckingforUpdaters) break; while(petitionThreads.size() && !stopCheckingforUpdaters) { LOG_fatal << " waiting for petitions to end to initiate upload " << petitionThreads.size() << petitionThreads.at(0).get(); sleepSeconds(2); delete_finished_threads(); } if (stopCheckingforUpdaters) break; sendEvent(StatsManager::MegacmdEvent::UPDATE_START, api); broadcastMessage(" Executing update !"); LOG_info << " Applying update"; executeUpdater(&restartRequired); } else { LOG_verbose << " There is no pending update"; } if (stopCheckingforUpdaters) break; if (restartRequired && restartServer()) { int attempts = 20; //give a while for ingoin petitions to end before killing the server while(petitionThreads.size() && --attempts) { sleepSeconds(20 - attempts); delete_finished_threads(); } doExit = true; cm->stopWaiting(); break; } int secstosleep = 7200; while (secstosleep > 0 && !stopCheckingforUpdaters) { sleepSeconds(2); secstosleep -= 2; } } alreadyCheckingForUpdates = false; delete (MegaThread *)param; return NULL; } void processCommandInPetitionQueues(std::unique_ptr inf) { semaphoreClients.wait(); //append new one auto petitionThread = new MegaThread(); petitionThreads.emplace_back(petitionThread); inf->setPetitionThread(petitionThread); LOG_verbose << "starting processing: <" << inf->getRedactedLine() << ">"; petitionThread->start(doProcessLine, (void*) inf.release()); } void processCommandLinePetitionQueues(std::string what) { auto inf = std::make_unique(); inf->setLine(what); inf->clientDisconnected = true; // There's no actual client inf->clientID = -3; processCommandInPetitionQueues(std::move(inf)); } // main loop void megacmd() { threadRetryConnections = new MegaThread(); threadRetryConnections->start(retryConnections, NULL); LOG_info << "Listening to petitions ... "; #ifdef MEGACMD_TESTING_CODE TestInstruments::Instance().fireEvent(TestInstruments::Event::SERVER_ABOUT_TO_START_WAITING_FOR_PETITIONS); #endif for (;; ) { int err = cm->waitForPetition(); if (err != 0) { continue; } api->retryPendingConnections(); if (doExit) { LOG_verbose << "closing after wait ..." ; return; } if (cm->receivedPetition()) { LOG_verbose << "Client connected "; auto infOwned = cm->getPetition(); assert(infOwned); CmdPetition* inf = infOwned.get(); LOG_verbose << "petition registered: " << inf->getRedactedLine(); delete_finished_threads(); if (inf->getUniformLine() == "ERROR") { LOG_warn << "Petition couldn't be registered. Dismissing it."; } // if state register petition else if (startsWith(inf->getUniformLine(), "registerstatelistener")) { inf = cm->registerStateListener(std::move(infOwned)); if (!inf) { continue; } { // Communicate client ID string clientIdStr = "clientID:" + std::to_string(currentclientID) + (char) 0x1F; inf->clientID = currentclientID; currentclientID++; cm->informStateListener(inf, clientIdStr); } std::string s; #if defined(_WIN32) || defined(__APPLE__) ostringstream os; auto updatMsgOpt = lookForAvailableNewerVersions(api); //TODO: have this executed in worker thread instead (see MegaCmdExecuter::mayExecutePendingStuffInWorkerThread) // still store the update message to be consumed here if (updatMsgOpt) { os << *updatMsgOpt; } int autoupdate = ConfigurationManager::getConfigurationValue("autoupdate", -1); if (autoupdate == -1 || autoupdate == 2) { os << "ENABLING AUTOUPDATE BY DEFAULT. You can disable it with \"update --auto=off\"" << endl; autoupdate = 1; } if (autoupdate == 1) { startcheckingForUpdates(); } auto message = os.str(); if (message.size()) { s += "message:"; s += message; s += (char) 0x1F; } #endif bool isOSdeprecated = false; #ifdef MEGACMD_DEPRECATED_OS isOSdeprecated = true; #endif #ifdef _WIN32 OSVERSIONINFOEX osvi; ZeroMemory(&osvi, sizeof(OSVERSIONINFOEX)); osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); #pragma warning(disable: 4996) // warning C4996: 'GetVersionExW': was declared deprecated if (GetVersionEx((OSVERSIONINFO*)&osvi) && osvi.dwMajorVersion < 6) { isOSdeprecated = true; } #endif if (isOSdeprecated) { s += "message:"; s += "Your Operative System is too old.\n"; s += "You might not receive new updates for this application.\n"; s += "We strongly recommend you to update to a new version.\n"; s += (char) 0x1F; } if (sandboxCMD->storageStatus != MegaApi::STORAGE_STATE_GREEN) { s += "message:"; if (sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_PAYWALL) { std::unique_ptr myEmail(api->getMyEmail()); std::unique_ptr warningsList(api->getOverquotaWarningsTs()); s += "We have contacted you by email to " + string(myEmail.get()) + " on "; s += getReadableTime(warningsList->get(0),"%b %e %Y"); if (warningsList->size() > 1) { for (int i = 1; i < warningsList->size() - 1; i++) { s += ", " + getReadableTime(warningsList->get(i),"%b %e %Y"); } s += " and " + getReadableTime(warningsList->get(warningsList->size() - 1),"%b %e %Y"); } std::unique_ptr rootNode(api->getRootNode()); auto listener = std::make_unique(); api->getFolderInfo(rootNode.get(), listener.get()); listener->wait(); auto error = listener->getError(); assert(error != nullptr); if (error->getErrorCode() == MegaError::API_OK) { long long totalFiles = 0; auto info = listener->getRequest()->getMegaFolderInfo(); if (info != nullptr) { totalFiles += info->getNumFolders(); } s += ", but you still have " + std::to_string(totalFiles) + " files taking up " + sizeToText(sandboxCMD->receivedStorageSum); } else { s += ", but you still have files taking up" + sizeToText(sandboxCMD->receivedStorageSum); } s += " in your MEGA account, which requires you to upgrade your account.\n\n"; long long daysLeft = (api->getOverquotaDeadlineTs() - m_time(NULL)) / 86400; if (daysLeft > 0) { s += "You have " + std::to_string(daysLeft) + " days left to upgrade. "; s += "After that, your data is subject to deletion.\n"; } else { s += "You must act immediately to save your data. From now on, your data is subject to deletion.\n"; } } else if (sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_RED) { s += "You have exeeded your available storage.\n"; s += "You can change your account plan to increase your quota limit.\n"; } else { s += "You are running out of available storage.\n"; s += "You can change your account plan to increase your quota limit.\n"; } s += "See \"help --upgrade\" for further details.\n"; s += (char) 0x1F; } // if server resuming session, lets give him a very litle while before sending greeting message to the early clients // (to aovid "Resuming session..." being printed fast resumed session) while (getloginInAtStartup() && ((m_time(nullptr) - timeLoginStarted() < RESUME_SESSION_TIMEOUT * 0.3))) { sleepMilliSeconds(300); } { std::lock_guard g(greetingsmsgsMutex); while(greetingsFirstClientMsgs.size()) { cm->informStateListener(inf,greetingsFirstClientMsgs.front().append(1, (char)0x1F)); greetingsFirstClientMsgs.pop_front(); } for (auto m: greetingsAllClientMsgs) { cm->informStateListener(inf, m.append(1, (char)0x1F)); } } // if server resuming session, lets give him a litle while before returning a prompt to the early clients // This will block the server from responging any commands in the meantime, but that assumable, it will only happen // the first time the server is initiated. while (getloginInAtStartup() && ((m_time(nullptr) - timeLoginStarted() < RESUME_SESSION_TIMEOUT * 0.7))) { sleepMilliSeconds(300); } // communicate status info s += "prompt:"; s += dynamicprompt; s += (char) 0x1F; if (!sandboxCMD->getReasonblocked().size()) { cmdexecuter->checkAndInformPSA(inf); } cm->informStateListener(inf, s); } else { // normal petition processCommandInPetitionQueues(std::move(infOwned)); } } } } class NullBuffer : public std::streambuf { public: int overflow(int c) { return c; } }; void printWelcomeMsg() { unsigned int width = getNumberOfCols(75); #ifdef _WIN32 width--; #endif std::ostringstream oss; oss << endl; oss << "."; for (unsigned int i = 0; i < width; i++) oss << "=" ; oss << "."; oss << endl; printCenteredLine(oss, " __ __ _____ ____ _ _ ",width); printCenteredLine(oss, "| \\/ | ___|/ ___| / \\ ___ _ __ ___ __| |",width); printCenteredLine(oss, "| |\\/| | \\ / | _ / _ \\ / __| '_ ` _ \\ / _` |",width); printCenteredLine(oss, "| | | | /__\\ |_| |/ ___ \\ (__| | | | | | (_| |",width); printCenteredLine(oss, "|_| |_|____|\\____/_/ \\_\\___|_| |_| |_|\\__,_|",width); oss << "|"; for (unsigned int i = 0; i < width; i++) oss << " " ; oss << "|"; oss << endl; printCenteredLine(oss, "SERVER",width); oss << "`"; for (unsigned int i = 0; i < width; i++) { oss << "=" ; } #ifndef _WIN32 oss << "\u00b4\n"; COUT << oss.str() << std::flush; #else WindowsUtf8StdoutGuard utf8Guard; // So far, all is ASCII. COUT << oss.str(); // Now let's tray the non ascii forward acute // We are about to write some non ascii character. // Let's set (from now on, the console code page to UTF-8 translation (65001) // but revert to the initial code page if outputing the special forward acute character // fails. <- This could happen, for instance in Windows 7. auto initialCP = GetConsoleOutputCP(); bool codePageChangedSuccesfully = false; if (initialCP != CP_UTF8 && !getenv("MEGACMDSERVER_DONOT_SET_CONSOLE_CP")) { codePageChangedSuccesfully = SetConsoleOutputCP(CP_UTF8); } if (!(COUT << L"\u00b4")) // failed to output using utf-8 { if (codePageChangedSuccesfully) // revert codepage { SetConsoleOutputCP(initialCP); } COUT << "/"; } COUT << std::endl; #endif } string getLocaleCode() { #if defined(_WIN32) && defined(LOCALE_SISO639LANGNAME) LCID lcidLocaleId; LCTYPE lctyLocaleInfo; PWSTR pstr; INT iBuffSize; lcidLocaleId = LOCALE_USER_DEFAULT; lctyLocaleInfo = LOCALE_SISO639LANGNAME; // Determine the size iBuffSize = GetLocaleInfo( lcidLocaleId, lctyLocaleInfo, NULL, 0 ); if(iBuffSize > 0) { pstr = (WCHAR *) malloc( iBuffSize * sizeof(WCHAR) ); if(pstr != NULL) { if(GetLocaleInfoW( lcidLocaleId, lctyLocaleInfo, pstr, iBuffSize )) { string toret; std::wstring ws(pstr); localwtostring(&ws,&toret); free(pstr); //free locale info string return toret; } free(pstr); //free locale info string } } #else try { locale l(""); string ls = l.name(); size_t posequal = ls.find("="); size_t possemicolon = ls.find_first_of(";."); if (posequal != string::npos && possemicolon != string::npos && posequal < possemicolon) { return ls.substr(posequal+1,possemicolon-posequal-1); } } catch (const std::exception& e) { #ifndef __MACH__ std::cerr << "Warning: unable to get locale " << std::endl; #endif } #endif return string(); } bool runningInBackground() { #ifndef _WIN32 pid_t fg = tcgetpgrp(STDIN_FILENO); if(fg == -1) { // Piped: return false; } else if (fg == getpgrp()) { // foreground return false; } else { // background return true; } #endif return false; } #ifndef MEGACMD_USERAGENT_SUFFIX #define MEGACMD_USERAGENT_SUFFIX #define MEGACMD_STRINGIZE(x) #else #define MEGACMD_STRINGIZE2(x) "-" #x #define MEGACMD_STRINGIZE(x) MEGACMD_STRINGIZE2(x) #endif #ifdef _WIN32 LPTSTR getCurrentSid() { HANDLE hTok = NULL; LPBYTE buf = NULL; DWORD dwSize = 0; LPTSTR stringSID = NULL; if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hTok)) { GetTokenInformation(hTok, TokenUser, NULL, 0, &dwSize); if (dwSize) { buf = (LPBYTE)LocalAlloc(LPTR, dwSize); if (GetTokenInformation(hTok, TokenUser, buf, dwSize, &dwSize)) { ConvertSidToStringSid(((PTOKEN_USER)buf)->User.Sid, &stringSID); } LocalFree(buf); } CloseHandle(hTok); } return stringSID; } #endif bool registerUpdater() { #ifdef _WIN32 ITaskService *pService = NULL; ITaskFolder *pRootFolder = NULL; ITaskFolder *pMEGAFolder = NULL; ITaskDefinition *pTask = NULL; IRegistrationInfo *pRegInfo = NULL; IPrincipal *pPrincipal = NULL; ITaskSettings *pSettings = NULL; IIdleSettings *pIdleSettings = NULL; ITriggerCollection *pTriggerCollection = NULL; ITrigger *pTrigger = NULL; IDailyTrigger *pCalendarTrigger = NULL; IRepetitionPattern *pRepetitionPattern = NULL; IActionCollection *pActionCollection = NULL; IAction *pAction = NULL; IExecAction *pExecAction = NULL; IRegisteredTask *pRegisteredTask = NULL; time_t currentTime; struct tm* currentTimeInfo; WCHAR currentTimeString[128]; _bstr_t taskBaseName = L"MEGAcmd Update Task "; LPTSTR stringSID = NULL; bool success = false; stringSID = getCurrentSid(); if (!stringSID) { LOG_err << "Unable to get the current SID"; return false; } time(¤tTime); currentTime += 60; // ensure task is triggered properly the first time currentTimeInfo = localtime(¤tTime); wcsftime(currentTimeString, 128, L"%Y-%m-%dT%H:%M:%S", currentTimeInfo); _bstr_t taskName = taskBaseName + stringSID; _bstr_t userId = stringSID; LocalFree(stringSID); TCHAR MEGAcmdUpdaterPath[MAX_PATH]; if (!SUCCEEDED(GetModuleFileName(NULL, MEGAcmdUpdaterPath , MAX_PATH))) { LOG_err << "Couldnt get EXECUTABLE folder: " << wstring(MEGAcmdUpdaterPath); return false; } if (SUCCEEDED(PathRemoveFileSpec(MEGAcmdUpdaterPath))) { if (!PathAppend(MEGAcmdUpdaterPath,TEXT("MEGAcmdUpdater.exe"))) { LOG_err << "Couldnt append MEGAcmdUpdater exec: " << wstring(MEGAcmdUpdaterPath); return false; } } else { LOG_err << "Couldnt remove file spec: " << wstring(MEGAcmdUpdaterPath); return false; } CoInitializeEx(NULL, COINIT_MULTITHREADED); if (SUCCEEDED(CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT_PRIVACY, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, 0, NULL)) && SUCCEEDED(CoCreateInstance(CLSID_TaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskService, (void**)&pService)) && SUCCEEDED(pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t())) && SUCCEEDED(pService->GetFolder(_bstr_t( L"\\"), &pRootFolder))) { if (pRootFolder->CreateFolder(_bstr_t(L"MEGA"), _variant_t(L""), &pMEGAFolder) == 0x800700b7) { pRootFolder->GetFolder(_bstr_t(L"MEGA"), &pMEGAFolder); } if (pMEGAFolder && SUCCEEDED(pService->NewTask(0, &pTask)) && SUCCEEDED(pTask->get_RegistrationInfo(&pRegInfo)) && SUCCEEDED(pRegInfo->put_Author(_bstr_t(L"MEGA Limited"))) && SUCCEEDED(pTask->get_Principal(&pPrincipal)) && SUCCEEDED(pPrincipal->put_Id(_bstr_t(L"Principal1"))) && SUCCEEDED(pPrincipal->put_LogonType(TASK_LOGON_INTERACTIVE_TOKEN)) && SUCCEEDED(pPrincipal->put_RunLevel(TASK_RUNLEVEL_LUA)) && SUCCEEDED(pPrincipal->put_UserId(userId)) && SUCCEEDED(pTask->get_Settings(&pSettings)) && SUCCEEDED(pSettings->put_StartWhenAvailable(VARIANT_TRUE)) && SUCCEEDED(pSettings->put_DisallowStartIfOnBatteries(VARIANT_FALSE)) && SUCCEEDED(pSettings->get_IdleSettings(&pIdleSettings)) && SUCCEEDED(pIdleSettings->put_StopOnIdleEnd(VARIANT_FALSE)) && SUCCEEDED(pIdleSettings->put_RestartOnIdle(VARIANT_FALSE)) && SUCCEEDED(pIdleSettings->put_WaitTimeout(_bstr_t())) && SUCCEEDED(pIdleSettings->put_IdleDuration(_bstr_t())) && SUCCEEDED(pTask->get_Triggers(&pTriggerCollection)) && SUCCEEDED(pTriggerCollection->Create(TASK_TRIGGER_DAILY, &pTrigger)) && SUCCEEDED(pTrigger->QueryInterface(IID_IDailyTrigger, (void**) &pCalendarTrigger)) && SUCCEEDED(pCalendarTrigger->put_Id(_bstr_t(L"Trigger1"))) && SUCCEEDED(pCalendarTrigger->put_DaysInterval(1)) && SUCCEEDED(pCalendarTrigger->put_StartBoundary(_bstr_t(currentTimeString))) && SUCCEEDED(pCalendarTrigger->get_Repetition(&pRepetitionPattern)) && SUCCEEDED(pRepetitionPattern->put_Duration(_bstr_t(L"P1D"))) && SUCCEEDED(pRepetitionPattern->put_Interval(_bstr_t(L"PT2H"))) && SUCCEEDED(pRepetitionPattern->put_StopAtDurationEnd(VARIANT_FALSE)) && SUCCEEDED(pTask->get_Actions(&pActionCollection)) && SUCCEEDED(pActionCollection->Create(TASK_ACTION_EXEC, &pAction)) && SUCCEEDED(pAction->QueryInterface(IID_IExecAction, (void**)&pExecAction)) && SUCCEEDED(pExecAction->put_Path(_bstr_t(MEGAcmdUpdaterPath))) && SUCCEEDED(pExecAction->put_Arguments(_bstr_t(L"--emergency-update")))) { if (SUCCEEDED(pMEGAFolder->RegisterTaskDefinition(taskName, pTask, TASK_CREATE_OR_UPDATE, _variant_t(), _variant_t(), TASK_LOGON_INTERACTIVE_TOKEN, _variant_t(L""), &pRegisteredTask))) { success = true; LOG_err << "Update task registered OK"; } else { LOG_err << "Error registering update task"; } } else { LOG_err << "Error creating update task"; } } else { LOG_err << "Error getting root task folder"; } if (pRegisteredTask) { pRegisteredTask->Release(); } if (pTrigger) { pTrigger->Release(); } if (pTriggerCollection) { pTriggerCollection->Release(); } if (pIdleSettings) { pIdleSettings->Release(); } if (pSettings) { pSettings->Release(); } if (pPrincipal) { pPrincipal->Release(); } if (pRegInfo) { pRegInfo->Release(); } if (pCalendarTrigger) { pCalendarTrigger->Release(); } if (pAction) { pAction->Release(); } if (pActionCollection) { pActionCollection->Release(); } if (pRepetitionPattern) { pRepetitionPattern->Release(); } if (pExecAction) { pExecAction->Release(); } if (pTask) { pTask->Release(); } if (pMEGAFolder) { pMEGAFolder->Release(); } if (pRootFolder) { pRootFolder->Release(); } if (pService) { pService->Release(); } return success; #elif defined(__MACH__) return registerUpdateDaemon(); #else return true; #endif } bool getloginInAtStartup() { return loginInAtStartup; } ::mega::m_time_t timeLoginStarted() { return timeOfLoginInAtStartup; } void setloginInAtStartup(bool value) { loginInAtStartup = value; if (value) { timeOfLoginInAtStartup = m_time(NULL); } updatevalidCommands(); } void unblock() { setBlocked(0); sandboxCMD->setReasonblocked(""); broadcastMessage("Your account is not longer blocked"); if (!api->isFilesystemAvailable()) { auto theSandbox = sandboxCMD; std::thread t([theSandbox](){ theSandbox->cmdexecuter->fetchNodes(); }); } } void setBlocked(int value) { if (blocked != value) { blocked = value; updatevalidCommands(); cmdexecuter->updateprompt(); } } int getBlocked() { return blocked; } void updatevalidCommands() { if (loginInAtStartup || blocked) { validCommands = loginInValidCommands; } else { validCommands = allValidCommands; } } void reset() { setBlocked(false); } void sendEvent(StatsManager::MegacmdEvent event, const char *msg, ::mega::MegaApi *megaApi, bool wait) { #if defined(DEBUG) || defined(MEGACMD_TESTING_CODE) LOG_debug << "Skipped MEGAcmd event " << eventName(event) << " - " << msg; #else std::unique_ptr megaCmdListener (wait ? new MegaCmdListener(megaApi) : nullptr); megaApi->sendEvent(static_cast(event), msg, false /*JourneyId*/, nullptr /*viewId*/, megaCmdListener.get()); if (wait) { megaCmdListener->wait(); assert(megaCmdListener->getError()); if (megaCmdListener->getError()->getErrorCode() != MegaError::API_OK) { LOG_err << "Failed to log event " << StatsManager::eventName(event) << ": " << msg << ", error: " << megaCmdListener->getError()->getErrorString(); } } #endif } void sendEvent(StatsManager::MegacmdEvent event, ::mega::MegaApi *megaApi, bool wait) { return sendEvent(event, StatsManager::defaultEventMsg(event), megaApi, wait); } #ifdef _WIN32 void uninstall() { std::error_code ec; // to use the non-throwing overload below fs::remove_all(ConfigurationManager::getConfigFolder(), ec); ITaskService *pService = NULL; ITaskFolder *pRootFolder = NULL; ITaskFolder *pMEGAFolder = NULL; _bstr_t taskBaseName = L"MEGAcmd Update Task "; LPTSTR stringSID = NULL; stringSID = getCurrentSid(); if (!stringSID) { std::cerr << "ERROR UNINSTALLING: Unable to get the current SID" << std::endl; return; } _bstr_t taskName = taskBaseName + stringSID; CoInitializeEx(NULL, COINIT_MULTITHREADED); if (SUCCEEDED(CoInitializeSecurity(NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_PKT_PRIVACY, RPC_C_IMP_LEVEL_IMPERSONATE, NULL, 0, NULL)) && SUCCEEDED(CoCreateInstance(CLSID_TaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskService, (void**)&pService)) && SUCCEEDED(pService->Connect(_variant_t(), _variant_t(), _variant_t(), _variant_t())) && SUCCEEDED(pService->GetFolder(_bstr_t( L"\\"), &pRootFolder))) { if (pRootFolder->CreateFolder(_bstr_t(L"MEGA"), _variant_t(L""), &pMEGAFolder) == 0x800700b7) { pRootFolder->GetFolder(_bstr_t(L"MEGA"), &pMEGAFolder); } if (pMEGAFolder) { pMEGAFolder->DeleteTask(taskName, 0); pMEGAFolder->Release(); } pRootFolder->Release(); } if (pService) { pService->Release(); } } #endif void setFuseLogLevel(MegaApi& api, const std::string& fuseLogLevelStr) { std::unique_ptr fuseFlags(api.getFUSEFlags()); assert(fuseFlags); int sdkLogLevel = fuseFlags->getLogLevel(); try { sdkLogLevel = std::stoi(fuseLogLevelStr); } catch (...) {} sdkLogLevel = std::clamp(sdkLogLevel, (int) ::mega::LogLevel::logError, (int) ::mega::LogLevel::logVerbose); fuseFlags->setLogLevel(sdkLogLevel); api.setFUSEFlags(fuseFlags.get()); LOG_debug << "FUSE log level set to " << sdkLogLevel; } void disableFuseExplorerListView(MegaApi& api) { std::unique_ptr fuseFlags(api.getFUSEFlags()); assert(fuseFlags); fuseFlags->setFileExplorerView((int) MegaFuseFlags::FILE_EXPLORER_VIEW_NONE); api.setFUSEFlags(fuseFlags.get()); LOG_debug << "FUSE FileExplorer view set to NONE (disabled list view)"; } int executeServer(int argc, char* argv[], const std::function& createLoggedStream, const LogConfig& logConfig, bool skiplockcheck, std::string debug_api_url, bool disablepkp) { // Own global server instances here Instance sDefaultLoggedStream; Instance sConfiguratorHelper; #ifdef __linux__ // Ensure interesting signals are unblocked. sigset_t signalstounblock; sigemptyset (&signalstounblock); sigaddset(&signalstounblock, SIGUSR1); sigaddset(&signalstounblock, SIGUSR2); sigprocmask(SIG_UNBLOCK, &signalstounblock, NULL); if (signal(SIGUSR1, LinuxSignalHandler)) //TODO: do this after startup? { cerr << " Failed to register signal SIGUSR1 " << endl; } if (signal(SIGUSR2, LinuxSignalHandler)) { cerr << " Failed to register signal SIGUSR2 " << endl; } #endif string localecode = getLocaleCode(); #ifdef _WIN32 // Set Environment's default locale setlocale(LC_ALL, "en-US"); #endif printWelcomeMsg(); // keep a copy of argc & argv in order to allow restarts mcmdMainArgv = argv; mcmdMainArgc = argc; ConfigurationManager::loadConfiguration(logConfig.mCmdLogLevel >= MegaApi::LOG_LEVEL_DEBUG); if (!ConfigurationManager::lockExecution() && !skiplockcheck) { cerr << "Another instance of MEGAcmd Server is running. Execute with --skip-lock-check to force running (NOT RECOMMENDED)" << endl; sleepSeconds(5); return -2; } // The logger stream must be created after the configuration is loaded (so the .megaCmd directory is created if necessary) if (createLoggedStream) { Instance::Get().setLoggedStream(std::unique_ptr(createLoggedStream())); } // Establish the logger MegaApi::setLogLevel(MegaApi::LOG_LEVEL_MAX); // do not filter anything here, log level checking is done by loggerCMD loggerCMD = new MegaCmdSimpleLogger(logConfig.mLogToCout, logConfig.mSdkLogLevel, logConfig.mCmdLogLevel); MegaApi::addLoggerObject(loggerCMD); char userAgent[40]; sprintf(userAgent, "MEGAcmd" MEGACMD_STRINGIZE(MEGACMD_USERAGENT_SUFFIX) "/%d.%d.%d.%d", MEGACMD_MAJOR_VERSION,MEGACMD_MINOR_VERSION,MEGACMD_MICRO_VERSION,MEGACMD_BUILD_ID); LOG_info << "----------------------- program start -----------------------"; LOG_debug << "MEGAcmd version: " << MEGACMD_MAJOR_VERSION << "." << MEGACMD_MINOR_VERSION << "." << MEGACMD_MICRO_VERSION << "." << MEGACMD_BUILD_ID << ": code " << MEGACMD_CODE_VERSION; LOG_debug << "MEGA SDK version: " << SDK_COMMIT_HASH; const fs::path configDirPath = ConfigurationManager::getAndCreateConfigDir(); const std::string configDirStrUtf8 = pathAsUtf8(configDirPath); api = new MegaApi("BdARkQSQ", configDirStrUtf8.c_str(), userAgent); if (!debug_api_url.empty()) { api->changeApiUrl(debug_api_url.c_str(), disablepkp); } api->setLanguage(localecode.c_str()); if (logConfig.mJsonLogs) { MegaApi::setLogJSON(MegaApi::JSON_LOG_CHUNK_RECEIVED | MegaApi::JSON_LOG_CHUNK_CONSUMED | MegaApi::JSON_LOG_SENDING | MegaApi::JSON_LOG_NONCHUNK_RECEIVED); MegaApi::setMaxPayloadLogSize(0); // Max size } LOG_debug << "Language set to: " << localecode; sandboxCMD = new MegaCmdSandbox(); cmdexecuter = new MegaCmdExecuter(api, loggerCMD, sandboxCMD); sandboxCMD->cmdexecuter = cmdexecuter; auto cmdFatalErrorListener = std::make_unique(*sandboxCMD); auto numberOfApiFolders = ConfigurationManager::getConfigurationValue("exported_folders_sdks", 5); LOG_debug << "Loading " << numberOfApiFolders << " auxiliar MegaApi folders"; for (int i = 0; i < numberOfApiFolders; i++) { const fs::path apiFolderPath = ConfigurationManager::getConfigFolderSubdir("apiFolder_" + std::to_string(i)); const std::string apiFolderStrUtf8 = pathAsUtf8(apiFolderPath); MegaApi *apiFolder = new MegaApi("BdARkQSQ", apiFolderStrUtf8.c_str(), userAgent); apiFolder->setLanguage(localecode.c_str()); apiFolder->addGlobalListener(cmdFatalErrorListener.get()); apiFolders.push(apiFolder); semaphoreapiFolders.release(); } for (int i = 0; i < 100; i++) { semaphoreClients.release(); } if (const char* fuseLogLevelStr = getenv("MEGACMD_FUSE_LOG_LEVEL"); fuseLogLevelStr) { setFuseLogLevel(*api, fuseLogLevelStr); } if (getenv("MEGACMD_FUSE_DISABLE_LIST_VIEW")) { disableFuseExplorerListView(*api); } GlobalSyncConfig::loadFromConfigurationManager(*api); megaCmdGlobalListener = new MegaCmdGlobalListener(loggerCMD, sandboxCMD); megaCmdMegaListener = new MegaCmdMegaListener(api, NULL, sandboxCMD); api->addGlobalListener(megaCmdGlobalListener); api->addGlobalListener(cmdFatalErrorListener.get()); api->addListener(megaCmdMegaListener); // set up the console #ifdef _WIN32 console = new CONSOLE_CLASS; #else struct termios term; if ( ( tcgetattr(STDIN_FILENO, &term) < 0 ) || runningInBackground() ) //try console { consoleFailed = true; console = NULL; } else { console = new CONSOLE_CLASS; } #endif cm = new COMUNICATIONMANAGER(); #if _WIN32 if( SetConsoleCtrlHandler( (PHANDLER_ROUTINE) CtrlHandler, TRUE ) ) { LOG_debug << "Control handler set"; } else { LOG_warn << "Control handler set"; } #else // prevent CTRL+C exit if (!consoleFailed){ signal(SIGINT, sigint_handler); } #endif atexit(finalize); #if defined(_WIN32) || defined(__APPLE__) if (!ConfigurationManager::getConfigurationValue("updaterregistered", false)) { LOG_debug << "Registering automatic updater"; if (registerUpdater()) { ConfigurationManager::savePropertyValue("updaterregistered", true); LOG_verbose << "Registered automatic updater"; } else { LOG_err << "Failed to register automatic updater"; } } #endif int configuredProxyType = ConfigurationManager::getConfigurationValue("proxy_type", -1); auto configuredProxyUrl = ConfigurationManager::getConfigurationSValue("proxy_url"); auto configuredProxyUsername = ConfigurationManager::getConfigurationSValue("proxy_username"); auto configuredProxyPassword = ConfigurationManager::getConfigurationSValue("proxy_password"); if (configuredProxyType != -1 && configuredProxyType != MegaProxy::PROXY_AUTO) //AUTO is default, no need to set { std::string command("proxy "); command.append(configuredProxyUrl); if (configuredProxyUsername.size()) { command.append(" --username=").append(configuredProxyUsername); if (configuredProxyPassword.size()) { command.append(" --password=").append(configuredProxyPassword); } } processCommandLinePetitionQueues(command); } if (ConfigurationManager::getHasBeenUpdated()) { // Wait for this event to ensure an automatic login on startup doesn't prevent the event from being sent sendEvent(StatsManager::MegacmdEvent::UPDATE, api, true); stringstream ss; ss << "MEGAcmd has been updated to version " << MEGACMD_MAJOR_VERSION << "." << MEGACMD_MINOR_VERSION << "." << MEGACMD_MICRO_VERSION << "." << MEGACMD_BUILD_ID << " - code " << MEGACMD_CODE_VERSION << endl; broadcastMessage(ss.str(), true); } if (!ConfigurationManager::session.empty()) { loginInAtStartup = true; stringstream logLine; logLine << "login " << ConfigurationManager::session; LOG_debug << "Executing ... " << logLine.str().substr(0,9) << "..."; processCommandLinePetitionQueues(logLine.str()); } megacmd::megacmd(); finalize(waitForRestartSignal); return 0; } void stopServer() { LOG_debug << "Executing ... mega-quit ..."; processCommandLinePetitionQueues("quit"); //TODO: have set doExit instead, and wake the loop. } std::optional lookForAvailableNewerVersions(::mega::MegaApi *api) { #ifdef __linux__ return {}; // Linux updates are _announced_ via packages manageres #endif //NOTE: expected to be called from main megacmd thread (no concurrency control required) static HammeringLimiter hammeringLimiter(300); if (hammeringLimiter.runRecently()) { return {}; } ostringstream os; auto megaCmdListener = std::make_unique(api); api->getLastAvailableVersion("BdARkQSQ", megaCmdListener.get()); if (megaCmdListener->trywait(2000)) //timed out: { LOG_debug << "Couldn't get latests available version (petition timed out)"; api->removeRequestListener(megaCmdListener.get()); return {}; } if (!megaCmdListener->getError()) { LOG_fatal << "No MegaError at getLastAvailableVersion: "; } else if (megaCmdListener->getError()->getErrorCode() != MegaError::API_OK) { LOG_debug << "Couldn't get latests available version: " << megaCmdListener->getError()->getErrorString(); } else { if (megaCmdListener->getRequest()->getNumber() != MEGACMD_CODE_VERSION) { os << "---------------------------------------------------------------------" << endl; os << "-- There is a new version available of megacmd: " << setw(12) << left << megaCmdListener->getRequest()->getName() << "--" << endl; os << "-- Please, update this one: See \"update --help\". --" << endl; os << "-- Or download the latest from https://mega.nz/cmd --" << endl; #if defined(__APPLE__) os << "-- Before installing enter \"exit\" to close MEGAcmd --" << endl; #endif os << "---------------------------------------------------------------------" << endl; } return os.str(); } return {}; } } //end namespace MEGAcmd-2.5.2_Linux/src/megacmd.h000066400000000000000000000134021516543156300164420ustar00rootroot00000000000000/** * @file src/megacmd.h * @brief MEGAcmd: Interactive CLI and service application * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef MEGACMD_H #define MEGACMD_H #include #include #ifdef _WIN32 #include #endif using std::cout; using std::endl; using std::max; using std::min; using std::flush; using std::left; using std::cerr; using std::istringstream; using std::locale; using std::stringstream; using std::exception; #include "megacmdcommonutils.h" #include "megaapi_impl.h" #include "megacmd_events.h" #define PROGRESS_COMPLETE -2 namespace megacmd { typedef struct sync_struct { mega::MegaHandle handle; bool active; std::string localpath; long long fingerprint; bool loadedok; //ephimeral data } sync_struct; typedef struct backup_struct { mega::MegaHandle handle; bool active; std::string localpath; //TODO: review wether this is local or utf-8 representation and be consistent int64_t period; std::string speriod; int numBackups; bool failed; //This should mark the failure upon resuming. It shall not be persisted int tag; //This is depends on execution. should not be persisted int id; //Internal id for megacmd. Depends on execution should not be persisted } backup_istruct; enum prompttype { COMMAND, LOGINPASSWORD, NEWPASSWORD, PASSWORDCONFIRM, AREYOUSURETODELETE }; static const char* const prompts[] = { "MEGA CMD> ", "Password:", "New Password:", "Retype New Password:", "Are you sure to delete? " }; void changeprompt(const char *newprompt); void informStateListener(std::string message, int clientID); void broadcastMessage(std::string message, bool keepIfNoListeners = false); void informStateListeners(std::string s); void removeDelayedBroadcastMatching(const std::string &toMatch); void broadcastDelayedMessage(std::string message, bool keepIfNoListeners); void appendGreetingStatusFirstListener(const std::string &msj); void removeGreetingStatusFirstListener(const std::string &msj); void appendGreetingStatusAllListener(const std::string &msj); void clearGreetingStatusAllListener(); void clearGreetingStatusFirstListener(); void removeGreetingStatusAllListener(const std::string &msj); void removeGreetingMatching(const std::string &toMatch); void removeDelayedBroadcastMatching(const std::string &toMatch); void setloginInAtStartup(bool value); void setBlocked(int value); int getBlocked(); void unblock(); bool getloginInAtStartup(); void updatevalidCommands(); void reset(); /** * @brief A class to ensure clients are properly informed of login in situations */ class LoginGuard { public: LoginGuard() { appendGreetingStatusAllListener(std::string("login:")); setloginInAtStartup(true); } ~LoginGuard() { removeGreetingStatusAllListener(std::string("login:")); informStateListeners("loged:"); //send this even when failed! setloginInAtStartup(false); } }; mega::MegaApi* getFreeApiFolder(); void freeApiFolder(mega::MegaApi *apiFolder); struct HelpFlags { bool win = false; bool apple = false; bool usePcre = false; bool haveLibuv = false; bool readline = true; bool fuse = false; bool showAll = false; HelpFlags(bool showAll = false) : showAll(showAll) { #ifdef USE_PCRE usePcre = true; #endif #ifdef _WIN32 win = true; #endif #ifdef __APPLE__ apple = true; #endif #ifdef HAVE_LIBUV haveLibuv = true; #endif #ifdef NO_READLINE readline = false; #endif #ifdef WITH_FUSE fuse = true; #endif } }; const char * getUsageStr(const char *command, const HelpFlags& flags = {}); void unescapeifRequired(std::string &what); void setprompt(prompttype p, std::string arg = ""); prompttype getprompt(); void printHistory(); int askforConfirmation(std::string message); bool booleanAskForConfirmation(std::string messageHeading); std::string askforUserResponse(std::string message); void* checkForUpdates(void *param); void stopcheckingForUpdates(); void startcheckingForUpdates(); /** * @brief synchronously request the API for a a new version of MEGAcmd * It will skip the check if already checked in the past 5 minutes * @param api * @return a string with a msg with the announcement if a new version is available */ std::optional lookForAvailableNewerVersions(::mega::MegaApi *api); void informTransferUpdate(mega::MegaTransfer *transfer, int clientID); void informStateListenerByClientId(int clientID, std::string s); void informProgressUpdate(long long transferred, long long total, int clientID, std::string title = ""); void sendEvent(StatsManager::MegacmdEvent event, mega::MegaApi *megaApi, bool wait = true); void sendEvent(StatsManager::MegacmdEvent event, const char *msg, mega::MegaApi *megaApi, bool wait = true); #ifdef _WIN32 void uninstall(); #endif struct LogConfig { int mSdkLogLevel = mega::MegaApi::LOG_LEVEL_DEBUG; int mCmdLogLevel = mega::MegaApi::LOG_LEVEL_DEBUG; bool mLogToCout = true; bool mJsonLogs = false; }; class LoggedStream; // forward delaration int executeServer(int argc, char* argv[], const std::function& createLoggedStream = nullptr, const LogConfig& logConfig = {}, bool skiplockcheck = false, std::string debug_api_url = {}, bool disablepkp/*only for debugging*/ = false); void stopServer(); }//end namespace #endif MEGAcmd-2.5.2_Linux/src/megacmd_events.cpp000066400000000000000000000030011516543156300203530ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmd_events.h" #include namespace megacmd::StatsManager { const char * defaultEventMsg(MegacmdEvent ev) { static auto sDefaultMsgs = []() { std::array(MegacmdEvent::LastEvent) - FIRST_EVENT_NUMBER> defaultMsgs; #define SOME_GENERATOR_MACRO(name, _, msg) defaultMsgs[static_cast(MegacmdEvent::name) - FIRST_EVENT_NUMBER] = msg; GENERATE_FROM_MEGACMD_EVENTS(SOME_GENERATOR_MACRO) #undef SOME_GENERATOR_MACRO return defaultMsgs; }(); return sDefaultMsgs[static_cast(ev) - FIRST_EVENT_NUMBER]; } const char * eventName(MegacmdEvent ev) { static auto sNames = []() { std::array(MegacmdEvent::LastEvent) - FIRST_EVENT_NUMBER> names; #define SOME_GENERATOR_MACRO(name, _, __) names[static_cast(MegacmdEvent::name) - FIRST_EVENT_NUMBER] = #name; GENERATE_FROM_MEGACMD_EVENTS(SOME_GENERATOR_MACRO) #undef SOME_GENERATOR_MACRO return names; }(); return sNames[static_cast(ev) - FIRST_EVENT_NUMBER]; } } // end of namespaces MEGAcmd-2.5.2_Linux/src/megacmd_events.h000066400000000000000000000062471516543156300200370ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once namespace megacmd::StatsManager { /** MEGAcmd events **/ // Allocated ranges: // - regular: [98'900,98'999] // - extended [860'000,879'999] // Params: // - event name // - number // - Default message #define GENERATE_FROM_MEGACMD_EVENTS(GENERATOR_MACRO) \ GENERATOR_MACRO(UPDATE , 98900, "MEGAcmd update") \ GENERATOR_MACRO(UPDATE_START , 98901, "MEGAcmd auto-update start") \ GENERATOR_MACRO(UPDATE_RESTART , 98902, "MEGAcmd updated requiring restart") \ GENERATOR_MACRO(FIRST_CONFIGURED_SYNC , 98903, "MEGAcmd first sync configured") \ GENERATOR_MACRO(WAITED_TOO_LONG_FOR_NODES_CURRENT , 98904, "MEGAcmd nodes current wait timed out") \ GENERATOR_MACRO(ROOT_NODE_NOT_FOUND_AFTER_FETCHING , 98906, "MEGAcmd root node was not found after fetching nodes") \ GENERATOR_MACRO(TRANSITIONING_PRE_SRW_EXCLUSIONS , 98907, "MEGAcmd transition of legacy exclusion rules started") \ GENERATOR_MACRO(FIRST_CONFIGURED_WEBDAV , 98908, "MEGAcmd first WebDAV location configured") \ GENERATOR_MACRO(FIRST_CONFIGURED_FTP , 98909, "MEGAcmd first FTP location configured") \ GENERATOR_MACRO(FIRST_CONFIGURED_SCHEDULED_BACKUP , 98910, "MEGAcmd first scheduled backup configured") \ GENERATOR_MACRO(SUBSEQUENT_CONFIGURED_SYNC , 98911, "MEGAcmd subsequent sync configured") \ GENERATOR_MACRO(SUBSEQUENT_CONFIGURED_WEBDAV , 98912, "MEGAcmd subsequent WebDAV location configured") \ GENERATOR_MACRO(SUBSEQUENT_CONFIGURED_FTP , 98913, "MEGAcmd subsequent FPT location configured") \ GENERATOR_MACRO(SUBSEQUENT_CONFIGURED_SCHEDULED_BACKUP , 98914, "MEGAcmd subsequent scheduled backup configured") \ GENERATOR_MACRO(INVALID_UTF8_INCIDENCES , 98915, "MEGAcmd Found Invalid UTF-8 incidences") \ GENERATOR_MACRO(FIRST_CONFIGURED_FUSE_MOUNT , 98916, "MEGAcmd first FUSE mount configured") \ GENERATOR_MACRO(SUBSEQUENT_CONFIGURED_FUSE_MOUNT , 98917, "MEGAcmd subsequent FUSE mount configured") \ static constexpr auto FIRST_EVENT_NUMBER = 98900u; enum class MegacmdEvent { #define SOME_GENERATOR_MACRO(name, num, __) name = num, GENERATE_FROM_MEGACMD_EVENTS(SOME_GENERATOR_MACRO) #undef SOME_GENERATOR_MACRO LastEvent }; const char *defaultEventMsg(MegacmdEvent ev); const char *eventName(MegacmdEvent ev); } // end of namespaces MEGAcmd-2.5.2_Linux/src/megacmd_fuse.cpp000066400000000000000000000344031516543156300200230ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmd_fuse.h" namespace FuseCommand { std::string_view getDisclaimer() { return "Disclaimer:\n" " - Streaming is not supported; entire files need to be downloaded completely before being opened.\n" " - FUSE uses a local cache located in the MEGAcmd configuration folder. Make sure you have enough available space " "in your hard drive to accommodate new files. Restarting MEGAcmd server can help discard old files.\n" " - File writes might be deferred. When files are updated in the local mount point, a transfer will be initiated. " "Your files will be available in MEGA only after pending transfers finish."; } std::string_view getBetaMsg() { return "FUSE commands are in early BETA. They are not available in macOS. If you experience any issues, please contact support@mega.nz."; } std::string_view getIdentifierParameter() { return " name|localPath The identifier of the mount we want to remove. It can be one of the following:\n" " Name: the user-friendly name of the mount, specified when it was added or by fuse-config.\n" " Local path: The local mount point in the filesystem."; } } #ifdef WITH_FUSE #include "listeners.h" #include "megacmdlogger.h" #include "configurationmanager.h" using namespace mega; using namespace megacmd; namespace FuseCommand { namespace { constexpr const char* sFirstMountConfigKey = "firstFuseMountConfigured"; std::string getNodePath(MegaApi& api, MegaNode& node) { std::unique_ptr nodePathPtr(api.getNodePath(&node)); return (nodePathPtr ? nodePathPtr.get() : ""); } std::string getDefaultNodeName(MegaNode& node) { switch (node.getType()) { case MegaNode::TYPE_FILE: case MegaNode::TYPE_FOLDER: return node.getName(); case MegaNode::TYPE_ROOT: return "MEGA"; case MegaNode::TYPE_RUBBISH: return "MEGA Rubbish"; case MegaNode::TYPE_VAULT: return "MEGA Vault"; case MegaNode::TYPE_UNKNOWN: default: return ""; } } // convenience function that returns the unique identifier (name) surrounded by quotes std::string getMountId(const MegaMount& mount) { return std::string("\"").append(mount.getFlags()->getName()).append("\""); } bool shouldRememberChange(const MegaMount& mount, bool temporarily) { MegaMountFlags* mountFlags = mount.getFlags(); assert(mountFlags != nullptr); if (!mountFlags->getPersistent()) { return false; } return !temporarily; } std::unique_ptr getMountByName(MegaApi& api, const std::string& name) { return std::unique_ptr(api.getMountInfo(name.c_str())); } std::unique_ptr getMountByPath(MegaApi& api, const std::string& path, bool& clash) { std::unique_ptr mounts(api.listMounts(false)); if (mounts == nullptr) { return nullptr; } std::unique_ptr firstFound; for (size_t i = 0; i < mounts->size(); ++i) { const MegaMount* mount = mounts->get(i); assert(mount != nullptr); if (mount->getPath() == path) { if (!firstFound) { firstFound.reset(mount->copy()); } else { clash = true; return nullptr; } } } return firstFound; } std::unique_ptr createMount(const fs::path& localPath, MegaNode& node, bool disabled, bool transient, bool readOnly, std::string name) { std::unique_ptr mount(MegaMount::create()); assert(mount != nullptr); mount->setHandle(node.getHandle()); const std::string localPathAsUtf8 = pathAsUtf8(localPath); mount->setPath(localPathAsUtf8.c_str()); MegaMountFlags* mountFlags = mount->getFlags(); assert(mountFlags != nullptr); if (name.empty()) { name = getDefaultNodeName(node); } mountFlags->setName(name.c_str()); mountFlags->setReadOnly(readOnly); mountFlags->setEnableAtStartup(!transient && !disabled); mountFlags->setPersistent(!transient); return mount; } void printFirstMountMessage() { OUTSTREAM << "\n---------------------\n"; OUTSTREAM << getDisclaimer(); OUTSTREAM << "\n"; OUTSTREAM << getBetaMsg(); OUTSTREAM << "\n---------------------\n\n"; } } // end namespace std::unique_ptr getMountByNameOrPath(MegaApi& api, const std::string& identifier) { auto mount = getMountByName(api, identifier); if (mount != nullptr) { return mount; } bool clash = false; mount = getMountByPath(api, identifier, clash); if (clash) { assert(mount == nullptr); LOG_err << "Multiple mounts exist with path \"" << identifier << "\". Use mount name to select one"; } else if (mount == nullptr) { LOG_err << "Identifier \"" << identifier << "\" does not correspond to a valid mount name or local path"; } return mount; } std::string getActionString(std::string_view action, const fs::path &localPath, const std::string &nodePath) { return std::string(action).append(" mount from \"").append(localPath.string()).append("\" to \"").append(nodePath).append("\""); } std::string getActionString(std::string_view action, const mega::MegaMount& mount) { return std::string(action).append(" mount ").append(getMountId(mount)).append(" on \"").append(mount.getPath()).append("\""); } void addMount(mega::MegaApi& api, const fs::path& localPath, MegaNode& node, bool disabled, bool transient, bool readOnly, const std::string& name) { const std::string nodePath = getNodePath(api, node); auto mountToCreate = createMount(localPath, node, disabled, transient, readOnly, name); auto listener = std::make_unique(nullptr); { DisableMountErrorsBroadcastingGuard disableErrorBroadcasting; api.addMount(mountToCreate.get(), listener.get()); if (!checkNoErrors(listener.get(), getActionString("add", localPath, nodePath))) { return; } } OUTSTREAM << "Added a new mount"; if (listener->getRequest()->getFile() && strlen(listener->getRequest()->getFile())) { OUTSTREAM << " from \"" << listener->getRequest()->getFile() << "\""; } OUTSTREAM << " to \"" << nodePath << '"' << endl; const bool isFirstMount = !ConfigurationManager::getConfigurationValue(sFirstMountConfigKey, false); if (isFirstMount) { printFirstMountMessage(); sendEvent(StatsManager::MegacmdEvent::FIRST_CONFIGURED_FUSE_MOUNT, &api, false); ConfigurationManager::savePropertyValue(sFirstMountConfigKey, true); } else { sendEvent(StatsManager::MegacmdEvent::SUBSEQUENT_CONFIGURED_FUSE_MOUNT, &api, false); } if (!disabled) { enableMount(api, *mountToCreate, transient); } } void removeMount(mega::MegaApi& api, const mega::MegaMount& mount) { { DisableMountErrorsBroadcastingGuard disableErrorBroadcasting; auto isEnabled = api.isMountEnabled(mount.getFlags()->getName()); if (isEnabled) { auto listener = std::make_unique(nullptr); api.disableMount(mount.getFlags()->getName(), listener.get(), true /*remember*/); if (!checkNoErrors(listener.get(), getActionString("disable before removing", mount))) { return; } } auto listener = std::make_unique(nullptr); api.removeMount(mount.getFlags()->getName(), listener.get()); if (!checkNoErrors(listener.get(), getActionString("remove", mount))) { return; } } OUTSTREAM << "Removed mount " << getMountId(mount) << " on \"" << mount.getPath() << '"' << endl; } void enableMount(mega::MegaApi& api, const mega::MegaMount& mount, bool temporarily) { auto listener = std::make_unique(nullptr); const bool remember = shouldRememberChange(mount, temporarily); { DisableMountErrorsBroadcastingGuard disableErrorBroadcasting; api.enableMount(mount.getFlags()->getName(), listener.get(), remember); if (!checkNoErrors(listener.get(), getActionString("enable", mount))) { return; } } auto mountEnabled = getMountByNameOrPath(api, mount.getFlags()->getName()); if (!mountEnabled) { LOG_err << "Unable to get mount info after enabled"; setCurrentThreadOutCode(MCMD_NOTFOUND); return; } OUTSTREAM << (temporarily ? "Temporarily enabled" : "Enabled") << " mount " << getMountId(*mountEnabled) << " on \"" << mountEnabled->getPath() << '"' << endl; } void disableMount(mega::MegaApi& api, const mega::MegaMount& mount, bool temporarily) { auto listener = std::make_unique(nullptr); const bool remember = shouldRememberChange(mount, temporarily); { DisableMountErrorsBroadcastingGuard disableErrorBroadcasting; api.disableMount(mount.getFlags()->getName(), listener.get(), remember); if (!checkNoErrors(listener.get(), getActionString("disable", mount))) { return; } } OUTSTREAM << (temporarily ? "Temporarily disabled" : "Disabled") << " mount " << getMountId(mount) << " on \"" << mount.getPath() << '"' << endl; } void printMount(mega::MegaApi& api, const mega::MegaMount& mount) { const MegaHandle handle = mount.getHandle(); std::unique_ptr remotePath(api.getNodePathByNodeHandle(handle)); const MegaMountFlags* flags = mount.getFlags(); assert(flags != nullptr); std::ostringstream oss; oss << "Showing details of mount " << getMountId(mount) << "\n" << " Local path: " << mount.getPath() << "\n" << " Remote path: " << (remotePath ? remotePath.get() : "") << "\n" << " Name: " << flags->getName() << "\n" << " Persistent: " << (flags->getPersistent() ? "YES" : "NO") << "\n" << " Enabled: " << (api.isMountEnabled(flags->getName()) ? "YES" : "NO") << "\n" << " Enable at startup: " << (flags->getEnableAtStartup() ? "YES" : "NO") << "\n" << " Read-only: " << (flags->getReadOnly() ? "YES" : "NO") << "\n"; OUTSTREAM << oss.str(); } void printAllMounts(mega::MegaApi& api, ColumnDisplayer& cd, bool onlyEnabled, bool disablePathCollapse, int rowCountLimit) { std::unique_ptr mounts(api.listMounts(onlyEnabled)); if (mounts == nullptr) { LOG_err << "Failed to retrieve the list of mounts"; return; } if (mounts->size() == 0) { OUTSTREAM << "There are no mounts" << (onlyEnabled ? " enabled" : "") << endl; return; } cd.addHeader("LOCAL_PATH", disablePathCollapse); cd.addHeader("REMOTE_PATH", disablePathCollapse); for (size_t i = 0; i < mounts->size() && i < rowCountLimit; ++i) { assert(mounts->get(i) != nullptr); const MegaMount& mount = *mounts->get(i); const MegaHandle handle = mount.getHandle(); std::unique_ptr remotePath(api.getNodePathByNodeHandle(handle)); const MegaMountFlags* flags = mount.getFlags(); assert(flags != nullptr); cd.addValue("NAME", flags->getName()); cd.addValue("LOCAL_PATH", mount.getPath()); cd.addValue("REMOTE_PATH", remotePath ? remotePath.get() : ""); cd.addValue("PERSISTENT", flags->getPersistent() ? "YES" : "NO"); cd.addValue("ENABLED", api.isMountEnabled(mount.getFlags()->getName()) ? "YES" : "NO"); } OUTSTREAM << cd.str(); OUTSTREAM << endl; if (rowCountLimit < mounts->size()) { OUTSTREAM << "Note: showing " << rowCountLimit << " out of " << mounts->size() << " mounts. " << "Use \"" << getCommandPrefixBasedOnMode() << "fuse-show --limit=0\" to see all of them." << endl; } OUTSTREAM << "Use \"" << getCommandPrefixBasedOnMode() << "fuse-show \" to get further details on a specific mount." << endl; } bool ConfigDelta::isAnyFlagSet() const { return mEnableAtStartup || mPersistent || mReadOnly || mName; } bool ConfigDelta::isPersistentStartupInvalid() const { bool enableAtStartup = mEnableAtStartup && *mEnableAtStartup; bool transient = mPersistent && !(*mPersistent); return enableAtStartup && transient; } void changeConfig(mega::MegaApi& api, const mega::MegaMount& mount, const ConfigDelta& delta) { assert(delta.isAnyFlagSet()); assert(!delta.isPersistentStartupInvalid()); MegaMountFlags* flags = mount.getFlags(); assert(flags != nullptr); if (delta.mEnableAtStartup) { flags->setEnableAtStartup(*delta.mEnableAtStartup); } if (delta.mPersistent) { flags->setPersistent(*delta.mPersistent); } if (delta.mReadOnly) { flags->setReadOnly(*delta.mReadOnly); } std::string currentName(mount.getFlags()->getName()); if (delta.mName) { flags->setName(delta.mName->c_str()); } auto listener = std::make_unique(nullptr); { DisableMountErrorsBroadcastingGuard disableErrorBroadcasting; api.setMountFlags(flags, currentName.c_str(), listener.get()); if (!checkNoErrors(listener.get(), getActionString("change the flags of", mount))) { return; } } OUTSTREAM << "Mount " << getMountId(mount) << " now has the following flags\n" << " Name: " << flags->getName() << "\n" << " Enable at startup: " << (flags->getEnableAtStartup() ? "YES" : "NO") << "\n" << " Persistent: " << (flags->getPersistent() ? "YES" : "NO") << "\n" << " Read-only: " << (flags->getReadOnly() ? "YES" : "NO") << "\n"; } } #endif // WITH_FUSE MEGAcmd-2.5.2_Linux/src/megacmd_fuse.h000066400000000000000000000034641516543156300174730ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include namespace FuseCommand { std::string_view getDisclaimer(); std::string_view getBetaMsg(); std::string_view getIdentifierParameter(); } #ifdef WITH_FUSE #include "megaapi.h" #include "megacmdcommonutils.h" namespace FuseCommand { std::unique_ptr getMountByNameOrPath(mega::MegaApi& api, const std::string& identifier); void addMount(mega::MegaApi& api, const fs::path& localPath, mega::MegaNode& node, bool disabled, bool transient, bool readOnly, const std::string& name); void removeMount(mega::MegaApi& api, const mega::MegaMount& mount); void enableMount(mega::MegaApi& api, const mega::MegaMount& mount, bool temporarily); void disableMount(mega::MegaApi& api, const mega::MegaMount& mount, bool temporarily); void printMount(mega::MegaApi& api, const mega::MegaMount& mount); void printAllMounts(mega::MegaApi& api, megacmd::ColumnDisplayer& cd, bool onlyEnabled, bool disablePathCollapse, int rowCountLimit); struct ConfigDelta { std::optional mEnableAtStartup; std::optional mPersistent; std::optional mReadOnly; std::optional mName; bool isAnyFlagSet() const; bool isPersistentStartupInvalid() const; }; void changeConfig(mega::MegaApi& api, const mega::MegaMount& mount, const ConfigDelta& delta); } #endif // WITH_FUSE MEGAcmd-2.5.2_Linux/src/megacmd_rotating_logger.cpp000066400000000000000000001012661516543156300222510ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmd_rotating_logger.h" #include "megacmdcommonutils.h" #include "configurationmanager.h" #include #include #include #include using megacmd::ConfigurationManager; namespace megacmd { namespace { constexpr uint64_t operator"" _KB(unsigned long long kilobytes) { return kilobytes * 1024ull; } constexpr uint64_t operator"" _MB(unsigned long long megabytes) { return megabytes * 1024ull * 1024ull; } constexpr uint64_t operator"" _GB(unsigned long long gigabytes) { return gigabytes * 1024ull * 1024ull * 1024ull; } constexpr uint64_t operator"" _TB(unsigned long long terabytes) { return terabytes * 1024ull * 1024ull * 1024ull * 1024ull; } class FileConfigCalculator { // The estimated max total space used by the logs is: // MaxTotalSizeUsed = MaxFilesToKeep * MaxFileSize * AvgCompressionRatio + MaxFileSize // // Then, we can estimate the max amount of files to keep with: // MaxFilesToKeep = (MaxTotalSizeUsed - MaxFileSize) / (MaxFileSize * AvgCompressionRatio) // where, giving MEGAcmd logs a max disk usage of 0.15%, // MaxTotalSizeUsed = TotalDiskSpace * 0.0015 // // If there's only enough space for less than 1 file, it means we have to reduce the max allowed // file size. So, we'll set MaxFilesToKeep=1, and then: // MaxFileSize = MaxTotalSizeUsed / (AvgCompressionRatio + 1) // // Using these formulas, and setting MaxFileSize=50MB and AvgCompressionRatio=0.15%, // we get the following possible defaults: // DISK SPACE MAX FILES MAX FILE SIZE // 1 TB 203 50 MB // 400 GB 75 50 MB // 100 GB 13 50 MB // 10 GB 1 13 MB // 1 GB 1 1.34 MB // // Note: We use the total disk space instead of the available disk space because it's not the // responsability of MEGACmd to ensure the disk doesn't run out of space. We just want to try // to choose more sensible defaults depending on the system specs. double mMaxAllowedMB; double mCompressionRatio; double getMaxFilesToKeepImpl(double maxFileMB) { return (mMaxAllowedMB - maxFileMB) / (maxFileMB * mCompressionRatio); } public: FileConfigCalculator(RotatingFileManager::CompressionType compressionType) : mMaxAllowedMB(300.0), mCompressionRatio(RotatingFileManager::getCompressionRatio(compressionType)) { constexpr double logsDiskUsagePercentage = 0.15 / 100.0; std::error_code ec; const auto spaceInfo = fs::space(ConfigurationManager::getConfigFolder(), ec); if (!ec) { const double totalAvailableMB = spaceInfo.capacity / (1024.0 * 1024.0); mMaxAllowedMB = totalAvailableMB * logsDiskUsagePercentage; } } double getMaxFileMB() { constexpr double defaultMaxFileMB = 50.0; double maxFileMB = defaultMaxFileMB; double maxFilesToKeep = getMaxFilesToKeepImpl(maxFileMB); if (maxFilesToKeep < 1.0) { maxFileMB = mMaxAllowedMB / (mCompressionRatio + 1); assert(maxFileMB < defaultMaxFileMB); } return maxFileMB; } int getMaxFilesToKeep(double maxFileMB) { constexpr int fileCountHardLimit = 50; double maxFilesToKeep = std::min((double) fileCountHardLimit, getMaxFilesToKeepImpl(maxFileMB)); return std::round(maxFilesToKeep); } }; class ReopenScope final { std::ofstream& mOutFile; const fs::path mOutFilePath; public: ReopenScope(std::ofstream& outFile, const fs::path& outFilePath) : mOutFile(outFile), mOutFilePath(outFilePath) { mOutFile.close(); } ~ReopenScope() { mOutFile.open(mOutFilePath, std::ofstream::out | std::ofstream::app); } }; } class BaseEngine { protected: std::stringstream mErrorStream; public: std::string popErrors(); }; class RotationEngine : public BaseEngine { protected: template void walkRotatedFiles(const fs::path& dir, const fs::path& baseFilename, F&& walker); public: virtual ~RotationEngine() = default; virtual void cleanupFiles(const fs::path& dir, const fs::path& baseFilename); virtual fs::path rotateFiles(const fs::path& dir, const fs::path& baseFilename) = 0; }; class NumberedRotationEngine final : public RotationEngine { const std::string mCompressionExt; const int mMaxFilesToKeep; fs::path getSrcFilePath(const fs::path& directory, const fs::path& baseFilename, int i) const; fs::path getDstFilePath(const fs::path& directory, const fs::path& baseFilename, int i) const; public: NumberedRotationEngine(const std::string &compressionExt, int maxFilesToKeep); fs::path rotateFiles(const fs::path& dir, const fs::path& baseFilePath) override; }; class TimestampRotationEngine final : public RotationEngine { const int mMaxFilesToKeep; const std::chrono::seconds mMaxFileAge; private: using Clock = std::chrono::system_clock; using Timestamp = std::chrono::time_point; struct TimestampFile { fs::path mPath; Timestamp mTimestamp; TimestampFile(const fs::path& path, const Timestamp ×tamp); bool operator>(const TimestampFile& other) const { return mTimestamp > other.mTimestamp; } }; using TimestampFileQueue = std::priority_queue, std::greater>; private: fs::path rotateBaseFile(const fs::path& directory, const fs::path& baseFilename); TimestampFileQueue getTimestampFileQueue(const fs::path& dir, const fs::path& baseFilename); void popAndRemoveFile(TimestampFileQueue& fileQueue); public: TimestampRotationEngine(int maxFilesToKeep, std::chrono::seconds maxFileAge); fs::path rotateFiles(const fs::path& dir, const fs::path& baseFilename) override; }; class CompressionEngine : public BaseEngine { public: virtual ~CompressionEngine() = default; virtual std::string getExtension() const { return ""; } virtual void cancelAll() {} virtual void compressFile(const fs::path&) {} }; class GzipCompressionEngine final : public CompressionEngine { struct GzipJobData { fs::path mSrcFilePath; fs::path mDstFilePath; GzipJobData(const fs::path& srcFilePath, const fs::path& dstFilePath); }; using GzipJobQueue = std::queue; GzipJobQueue mQueue; mutable std::mutex mQueueMtx; std::condition_variable mQueueCV; bool mCancelOngoingJob; bool mExit; std::thread mGzipThread; private: bool shouldCancelOngoingJob() const; void pushToQueue(const fs::path& srcFilePath, const fs::path& dstFilePath); void gzipFile(const fs::path& srcFilePath, const fs::path& dstFilePath); void mainLoop(); public: GzipCompressionEngine(); ~GzipCompressionEngine(); std::string getExtension() const override; void cancelAll() override; void compressFile(const fs::path& filePath) override; }; MessageBus::MessageBus(size_t reservedSize, size_t shouldSwapSize, size_t failSafeSize) : mShouldSwapSize(shouldSwapSize), mFailSafeSize(failSafeSize), mMemoryError(false) { assert(mFailSafeSize > 0); if (reservedSize > failSafeSize) { reservedSize = failSafeSize; } try { mFrontBuffer.reserve(reservedSize); mBackBuffer.reserve(reservedSize); } catch (const std::bad_alloc&) { // If this happens, we don't need to set the memory error flag, since this // is a memory error we don't want to log. It just means we might've overshot // our reserved size for a particular machine. // The vector will try to allocate again when inserting below; at that point // we will set the flag if the allocation fails as well. } } void MessageBus::append(const char* data, size_t size) { std::lock_guard lock(mListMtx); try { mBackBuffer.insert(mBackBuffer.end(), data, data + size); } catch (const std::bad_alloc&) { mMemoryError = true; } } std::pair MessageBus::swapBuffers() { std::lock_guard lock(mListMtx); bool memoryError = false; clearFrontBuffer(); std::swap(memoryError, mMemoryError); std::swap(mFrontBuffer, mBackBuffer); return {memoryError, mFrontBuffer}; } bool MessageBus::isEmpty() const { std::lock_guard lock(mListMtx); return mBackBuffer.empty(); } bool MessageBus::shouldSwapBuffers() const { std::lock_guard lock(mListMtx); return mBackBuffer.size() >= mShouldSwapSize; } bool MessageBus::reachedFailSafeSize() const { std::lock_guard lock(mListMtx); return mBackBuffer.size() >= mFailSafeSize; } void MessageBus::clearFrontBuffer() { if (mFrontBuffer.capacity() > mFailSafeSize) { mFrontBuffer.erase(mFrontBuffer.begin() + mFailSafeSize, mFrontBuffer.end()); mFrontBuffer.shrink_to_fit(); assert(mFrontBuffer.capacity() == mFailSafeSize); } mFrontBuffer.clear(); } float RotatingFileManager::getCompressionRatio(CompressionType compressionType) { switch (compressionType) { case CompressionType::None: return 1.f; case CompressionType::Gzip: return 0.15f; // this is conservative; it's generally ~10% for MEGAcmd logs default: assert(false); return 1.f; } } RotatingFileManager::RotationType RotatingFileManager::getRotationTypeFromStr(std::string_view str) { if (str == "Numbered") { return RotationType::Numbered; } return RotationType::Timestamp; } RotatingFileManager::CompressionType RotatingFileManager::getCompressionTypeFromStr(std::string_view str) { if (str == "None") { return CompressionType::None; } return CompressionType::Gzip; } RotatingFileManager::RotatingFileManager(const fs::path& filePath, const Config &config) : mConfig(config), mDirectory(filePath.parent_path()), mBaseFilename(filePath.filename()) { initializeCompressionEngine(); initializeRotationEngine(); } bool RotatingFileManager::shouldRotateFiles(size_t fileSize) const { return fileSize > mConfig.mMaxBaseFileSize; } void RotatingFileManager::cleanupFiles() { mCompressionEngine->cancelAll(); mRotationEngine->cleanupFiles(mDirectory, mBaseFilename); } void RotatingFileManager::rotateFiles() { auto newlyRotatedFilePath = mRotationEngine->rotateFiles(mDirectory, mBaseFilename); mCompressionEngine->compressFile(newlyRotatedFilePath); } std::string RotatingFileManager::popErrors() { return mRotationEngine->popErrors() + mCompressionEngine->popErrors(); } void RotatingFileManager::initializeCompressionEngine() { CompressionEngine* compressionEngine = nullptr; switch(mConfig.mCompressionType) { case CompressionType::None: { compressionEngine = new CompressionEngine(); break; } case CompressionType::Gzip: { compressionEngine = new GzipCompressionEngine(); break; } } assert(compressionEngine); mCompressionEngine = std::unique_ptr(compressionEngine); } void RotatingFileManager::initializeRotationEngine() { RotationEngine* rotationEngine = nullptr; switch (mConfig.mRotationType) { case RotationType::Numbered: { assert(mCompressionEngine); const std::string compressionExt = mCompressionEngine->getExtension(); rotationEngine = new NumberedRotationEngine(compressionExt, mConfig.mMaxFilesToKeep); break; } case RotationType::Timestamp: { rotationEngine = new TimestampRotationEngine(mConfig.mMaxFilesToKeep, mConfig.mMaxFileAge); break; } } assert(rotationEngine); mRotationEngine = std::unique_ptr(rotationEngine); } size_t FileRotatingLoggedStream::loadFailSafeSize() { // Since we have two buffers, and each can be up to FailSafeSize, the max size of the message bus is: // MessageBusMaxSize = FailSafeSize * 2 // // We could potentially get the total RAM to figure out a better default value; probably overkill // since there's not an easy, cross-platform way to do so. constexpr double defaultMessageBusMB = 512.0; double messageBusMB = ConfigurationManager::getConfigurationValue("RotatingLogger:MaxMessageBusMB", defaultMessageBusMB); if (messageBusMB < 0.0) { messageBusMB = defaultMessageBusMB; } return std::floor(messageBusMB/2.0 * 1024.0 * 1024.0); } RotatingFileManager::Config FileRotatingLoggedStream::loadFileConfig() { RotatingFileManager::Config config; std::string rotationTypeStr = ConfigurationManager::getConfigurationSValue("RotatingLogger:RotationType"); std::string compressionTypeStr = ConfigurationManager::getConfigurationSValue("RotatingLogger:CompressionType"); config.mRotationType = RotatingFileManager::getRotationTypeFromStr(rotationTypeStr); config.mCompressionType = RotatingFileManager::getCompressionTypeFromStr(compressionTypeStr); FileConfigCalculator calculator(config.mCompressionType); const double defaultMaxFileMB = calculator.getMaxFileMB(); double maxFileMB = ConfigurationManager::getConfigurationValue("RotatingLogger:MaxFileMB", defaultMaxFileMB); if (maxFileMB < 0.0) { maxFileMB = defaultMaxFileMB; } const int defaultMaxFilesToKeep = calculator.getMaxFilesToKeep(maxFileMB); int maxFilesToKeep = ConfigurationManager::getConfigurationValue("RotatingLogger:MaxFilesToKeep", defaultMaxFilesToKeep); if (maxFilesToKeep < 0) { maxFilesToKeep = defaultMaxFilesToKeep; } constexpr int defaultMaxFileAgeSeconds = 30 * 86400; // 1 month int maxFileAgeSeconds = ConfigurationManager::getConfigurationValue("RotatingLogger:MaxFileAgeSeconds", defaultMaxFileAgeSeconds); if (maxFileAgeSeconds < 0) { maxFileAgeSeconds = defaultMaxFileAgeSeconds; } config.mMaxBaseFileSize = std::floor(maxFileMB * 1024.0 * 1024.0); config.mMaxFileAge = std::chrono::seconds(maxFileAgeSeconds); config.mMaxFilesToKeep = maxFilesToKeep; return config; } bool FileRotatingLoggedStream::shouldRenew() const { std::lock_guard lock(mWriteMtx); return mForceRenew; } bool FileRotatingLoggedStream::shouldExit() const { std::lock_guard lock(mExitMtx); return mExit; } bool FileRotatingLoggedStream::shouldFlush() const { std::lock_guard lock(mWriteMtx); return mFlush || mNextFlushTime <= std::chrono::steady_clock::now(); } void FileRotatingLoggedStream::setForceRenew(bool forceRenew) { std::lock_guard lock(mWriteMtx); mForceRenew = forceRenew; } void FileRotatingLoggedStream::writeToBuffer(const char* msg, size_t size) const { std::lock_guard lock(mWriteMtx); if (mExit) { std::cerr.write(msg, size); return; } mMessageBus.append(msg, size); if (mMessageBus.shouldSwapBuffers()) { mWriteCV.notify_one(); } } void FileRotatingLoggedStream::writeMessagesToFile() { const auto& [memoryError, memoryBuffer] = mMessageBus.swapBuffers(); if (memoryError) { mOutputFile << "\n"; } if (!memoryBuffer.empty()) { // Write directly to the stream without relying on null termination mOutputFile.write(&memoryBuffer[0], memoryBuffer.size()); } if (memoryError) { mOutputFile << "<------------------------------>\n"; } } void FileRotatingLoggedStream::flushToFile() { mOutputFile.flush(); mNextFlushTime = std::chrono::steady_clock::now() + mFlushPeriod; { std::lock_guard lock(mWriteMtx); mFlush = false; } } void FileRotatingLoggedStream::markForExit() { { std::scoped_lock lock(mExitMtx, mWriteMtx); mExit = true; } mWriteCV.notify_one(); mExitCV.notify_one(); } bool FileRotatingLoggedStream::waitForOutputFile() { thread_local const int waitTimes[] = {0, 1, 5, 20, 60}; thread_local int i = 0; if (mOutputFile) { i = 0; return true; } { std::unique_lock lock(mExitMtx); mExitCV.wait_for(lock, std::chrono::seconds(waitTimes[i]), [this] { return mExit; }); } if (i < std::size(waitTimes) - 1) ++i; return false; } void FileRotatingLoggedStream::mainLoop() { while (!shouldExit() || !mMessageBus.isEmpty()) { std::ostringstream errorStream; bool reopenFile = false; if (!waitForOutputFile()) { errorStream << "Error writing to log file " << mOutputFilePath << '\n'; errorStream << "Re-opening...\n"; reopenFile = true; } const size_t outFileSize = mOutputFile ? static_cast(mOutputFile.tellp()) : 0; if (reopenFile) { ReopenScope s(mOutputFile, mOutputFilePath); } else if (shouldRenew()) { ReopenScope s(mOutputFile, mOutputFilePath); mFileManager.cleanupFiles(); setForceRenew(false); } else if (mFileManager.shouldRotateFiles(outFileSize)) { ReopenScope s(mOutputFile, mOutputFilePath); mFileManager.rotateFiles(); } errorStream << mFileManager.popErrors(); #ifdef WIN32 { WindowsUtf8StdoutGuard utf8Guard; std::wcerr << utf8StringToUtf16WString(errorStream.str().c_str()) << std::flush; } #else std::cerr << errorStream.str() << std::flush; #endif if (!mOutputFile) { // If we cannot write to file, do not keep trying if we should exit if (shouldExit()) { break; } // If we've reached the fail-safe size, try to write to file anyway // This clears the buffer, ensuring it doesn't grow beyond a certain threshold if (!mMessageBus.reachedFailSafeSize()) { continue; } } mOutputFile << errorStream.str(); bool writeMessages = false; { std::unique_lock lock(mWriteMtx); writeMessages = mWriteCV.wait_for(lock, std::chrono::milliseconds(500), [this] { return mForceRenew || mExit || mFlush || !mMessageBus.isEmpty(); }); } if (writeMessages) { writeMessagesToFile(); } if (shouldFlush()) { flushToFile(); } } } FileRotatingLoggedStream::FileRotatingLoggedStream(const OUTSTRING& outputFilePath) : mMessageBus(4_MB /* reservedSize */, 1_KB /* shouldSwapSize */, loadFailSafeSize()), mOutputFilePath(outputFilePath), mOutputFile(outputFilePath, std::ofstream::out | std::ofstream::app), mFileManager(mOutputFilePath, loadFileConfig()), mForceRenew(false), mExit(false), mFlush(false), mFlushPeriod(std::chrono::seconds(10)), mNextFlushTime(std::chrono::steady_clock::now() + mFlushPeriod), mWriteThread([this] () { mainLoop(); }) { } FileRotatingLoggedStream::~FileRotatingLoggedStream() { markForExit(); mWriteThread.join(); } const LoggedStream& FileRotatingLoggedStream::operator<<(const char& c) const { writeToBuffer(&c, sizeof(c)); return *this; } const LoggedStream& FileRotatingLoggedStream::operator<<(const char* str) const { writeToBuffer(str, strlen(str)); return *this; } const LoggedStream& FileRotatingLoggedStream::operator<<(std::string str) const { writeToBuffer(str.c_str(), str.size()); return *this; } const LoggedStream& FileRotatingLoggedStream::operator<<(BinaryStringView v) const { writeToBuffer(v.get().data(), v.get().size()); return *this; } const LoggedStream& FileRotatingLoggedStream::operator<<(std::string_view str) const { writeToBuffer(str.data(), str.size()); return *this; } const LoggedStream& FileRotatingLoggedStream::operator<<(int v) const { return operator<<(std::to_string(v)); } const LoggedStream& FileRotatingLoggedStream::operator<<(unsigned int v) const { return operator<<(std::to_string(v)); } const LoggedStream& FileRotatingLoggedStream::operator<<(long long v) const { return operator<<(std::to_string(v)); } const LoggedStream& FileRotatingLoggedStream::operator<<(long long unsigned int v) const { return operator<<(std::to_string(v)); } const LoggedStream& FileRotatingLoggedStream::operator<<(unsigned long v) const { return operator<<(std::to_string(v)); } #ifdef _WIN32 const LoggedStream& FileRotatingLoggedStream::operator<<(std::wstring wstr) const { std::string str; localwtostring(&wstr, &str); writeToBuffer(str.c_str(), str.size()); return *this; } #endif void FileRotatingLoggedStream::flush() { std::lock_guard lock(mWriteMtx); if (mExit) { return; } mFlush = true; mWriteCV.notify_one(); } std::string BaseEngine::popErrors() { std::string errorString = mErrorStream.str(); mErrorStream.str(""); return errorString; } template void RotationEngine::walkRotatedFiles(const fs::path& dir, const fs::path& baseFilename, F&& walker) { std::error_code ec; for (const auto& entry : fs::directory_iterator(dir, ec)) { if (ec) { mErrorStream << "Failed to walk directory " << dir << " (error: " << ec.message() << ")" << std::endl; return; } // Ignore non-files if (!entry.is_regular_file(ec) || ec) { continue; } const fs::path& filePath = entry.path(); std::string filename = filePath.filename().string(); // Ignore files that don't start with the base filename if (filename.rfind(baseFilename.string(), 0) != 0) { continue; } walker(filePath); } } void RotationEngine::cleanupFiles(const fs::path& dir, const fs::path& baseFilename) { walkRotatedFiles(dir, baseFilename, [this] (const fs::path& filePath) { std::error_code ec; fs::remove(filePath, ec); if (ec) { mErrorStream << "Error removing rotated file " << filePath << " (error: " << ec.message() << ")" << std::endl; } }); } fs::path NumberedRotationEngine::getSrcFilePath(const fs::path& directory, const fs::path& baseFilename, int i) const { fs::path filePath = directory / baseFilename; // The source path for the base file does not have an index or compression extension if (i != 0) { filePath += "." + std::to_string(i) + mCompressionExt; } return filePath; } fs::path NumberedRotationEngine::getDstFilePath(const fs::path& directory, const fs::path& baseFilename, int i) const { fs::path filePath = directory / baseFilename; // The destination path for the base file has an index, but doesn't have a compression extension // (since the file still needs to be sent to the compression engine) filePath += "." + std::to_string(i + 1); if (i != 0) { filePath += mCompressionExt; } return filePath; } NumberedRotationEngine::NumberedRotationEngine(const std::string& compressionExt, int maxFilesToKeep) : mCompressionExt(compressionExt), mMaxFilesToKeep(maxFilesToKeep) { } fs::path NumberedRotationEngine::rotateFiles(const fs::path& dir, const fs::path& baseFilename) { std::error_code ec; for (int i = mMaxFilesToKeep; i >= 0; --i) { fs::path srcFilePath = getSrcFilePath(dir, baseFilename, i); // Quietly ignore any numbered files that don't exist if (!fs::exists(srcFilePath) || ec) { continue; } // Delete the last file, which is the one with number == maxFilesToKeep if (i == mMaxFilesToKeep) { fs::remove(srcFilePath, ec); if (ec) { mErrorStream << "Error removing file " << srcFilePath << " (error: " << ec.message() << ")" << std::endl; } continue; } // For the rest, rename them to effectively do number++ (e.g., file.3.gz => file.4.gz) fs::path dstFilePath = getDstFilePath(dir, baseFilename, i); fs::rename(srcFilePath, dstFilePath, ec); if (ec) { mErrorStream << "Error renaming file " << srcFilePath << " to " << dstFilePath << " (error: " << ec.message() << ")" << std::endl; } } // The newly-rotated file is the destination path of the base file return getDstFilePath(dir, baseFilename, 0); } TimestampRotationEngine::TimestampFile::TimestampFile(const fs::path& path, const Timestamp ×tamp) : mPath(path), mTimestamp(timestamp) { } fs::path TimestampRotationEngine::rotateBaseFile(const fs::path& directory, const fs::path& baseFilename) { const std::string timestampStr = timestampToString(Clock::now()); fs::path srcFilePath = directory / baseFilename; fs::path dstFilePath = srcFilePath; dstFilePath += "." + timestampStr; std::error_code ec; fs::rename(srcFilePath, dstFilePath, ec); if (ec) { mErrorStream << "Error renaming file " << srcFilePath << " to " << dstFilePath << " (error: " << ec.message() << ")" << std::endl; } return dstFilePath; } TimestampRotationEngine::TimestampFileQueue TimestampRotationEngine::getTimestampFileQueue(const fs::path& dir, const fs::path& baseFilename) { TimestampFileQueue fileQueue; std::unordered_set addedFiles; const std::string baseFilenameStr = baseFilename.string(); walkRotatedFiles(dir, baseFilename, [this, &baseFilenameStr, &fileQueue, &addedFiles] (const fs::path& filePath) { const std::string filenameStr = filePath.filename().string(); const std::string timestampStr = filenameStr.substr(baseFilenameStr.size() + 1, LogTimestampSize); auto timestampOpt = stringToTimestamp(timestampStr); if (!timestampOpt) { // Ignore if there's not timestamp or it has a different format return; } if (addedFiles.find(timestampStr) != addedFiles.end()) { // Otherwise, in the rare case that a file finishes being zipped while this function is executing, // we might add it twice: one with "zipping" prefix and one without. This would lead to an incorrect number // of files, which would messs up the max file calculation. Regardless, the zipping file is the newest one so it won't be deleted. return; } addedFiles.emplace(timestampStr); fileQueue.emplace(filePath, *timestampOpt); }); return fileQueue; } void TimestampRotationEngine::popAndRemoveFile(TimestampFileQueue& fileQueue) { const TimestampFile file = fileQueue.top(); fileQueue.pop(); std::error_code ec; fs::remove(file.mPath, ec); if (ec) { mErrorStream << "Error removing rotated file " << file.mPath << " (error: " << ec.message() << ")" << std::endl; } } TimestampRotationEngine::TimestampRotationEngine(int maxFilesToKeep, std::chrono::seconds maxFileAge) : mMaxFilesToKeep(maxFilesToKeep), mMaxFileAge(maxFileAge) { } fs::path TimestampRotationEngine::rotateFiles(const fs::path& dir, const fs::path& baseFilename) { fs::path newlyRotatedFile = rotateBaseFile(dir, baseFilename); if (mMaxFileAge <= std::chrono::seconds(0) && mMaxFilesToKeep < 0) { return newlyRotatedFile; } auto fileQueue = getTimestampFileQueue(dir, baseFilename); // Rotate by timestamp if (mMaxFileAge > std::chrono::seconds(0)) { const Timestamp minFileTimestamp = Clock::now() - mMaxFileAge; while (!fileQueue.empty() && fileQueue.top().mTimestamp < minFileTimestamp) { popAndRemoveFile(fileQueue); } } // Rotate by file count if (mMaxFilesToKeep >= 0) { while (fileQueue.size() > static_cast(mMaxFilesToKeep)) { popAndRemoveFile(fileQueue); } } return newlyRotatedFile; } GzipCompressionEngine::GzipJobData::GzipJobData(const fs::path& srcFilePath, const fs::path& dstFilePath) : mSrcFilePath(srcFilePath), mDstFilePath(dstFilePath) { } bool GzipCompressionEngine::shouldCancelOngoingJob() const { std::lock_guard lock(mQueueMtx); return mCancelOngoingJob; } void GzipCompressionEngine::pushToQueue(const fs::path& srcFilePath, const fs::path& dstFilePath) { std::lock_guard lock(mQueueMtx); if (mExit) { return; } mQueue.emplace(GzipJobData(srcFilePath, dstFilePath)); mQueueCV.notify_one(); } void GzipCompressionEngine::gzipFile(const fs::path& srcFilePath, const fs::path& dstFilePath) { { std::ifstream srcFile(srcFilePath); if (!srcFile) { mErrorStream << "Failed to open " << srcFilePath << " for compression" << std::endl; return; } auto gzdeleter = [] (gzFile_s* f) { if (f) gzclose(f); }; auto gzOpenHelper = [](const fs::path& path) { #ifdef _WIN32 return gzopen_w(path.wstring().c_str(), "wb"); #else return gzopen(path.string().c_str(), "wb"); #endif }; std::unique_ptr gzFile(gzOpenHelper(dstFilePath), gzdeleter); if (!gzFile) { mErrorStream << "Failed to open gzfile " << dstFilePath << " for writing" << std::endl; return; } std::string line; while (std::getline(srcFile, line)) { if (shouldCancelOngoingJob()) { return; } line += '\n'; if (gzputs(gzFile.get(), line.c_str()) == -1) { mErrorStream << "Failed to gzip " << srcFilePath << std::endl; return; } } } std::error_code ec; fs::remove(srcFilePath, ec); if (ec) { mErrorStream << "Failed to remove temporary file " << srcFilePath << " after compression (error: " << ec.message() << ")" << std::endl; } } void GzipCompressionEngine::mainLoop() { while (true) { std::optional jobDataOpt; { std::unique_lock lock(mQueueMtx); mQueueCV.wait(lock, [this] () { return mExit || !mQueue.empty(); }); if (mExit && mQueue.empty()) { return; } assert(!mQueue.empty()); jobDataOpt = std::move(mQueue.front()); mQueue.pop(); mCancelOngoingJob = false; } assert(jobDataOpt); gzipFile(jobDataOpt->mSrcFilePath, jobDataOpt->mDstFilePath); } } GzipCompressionEngine::GzipCompressionEngine() : mCancelOngoingJob(false), mExit(false), mGzipThread([this] () { mainLoop(); }) { } GzipCompressionEngine::~GzipCompressionEngine() { { std::lock_guard lock(mQueueMtx); mExit = true; // We want to exit gracefull, so we don't call `cancelAll` } mQueueCV.notify_one(); mGzipThread.join(); } std::string GzipCompressionEngine::getExtension() const { return ".gz"; } void GzipCompressionEngine::cancelAll() { std::lock_guard lock(mQueueMtx); // Clear the queue mQueue = GzipJobQueue(); // This flag will ensure `gzipFile` returns as soon as possible (if it's running) // It'll be unset the next time we pop an item from the queue mCancelOngoingJob = true; } void GzipCompressionEngine::compressFile(const fs::path& filePath) { std::error_code ec; fs::path tmpFilePath = filePath; tmpFilePath += ".zipping"; // Ensure there is not a clashing .zipping file if (fs::exists(tmpFilePath, ec) && !ec) { fs::remove(tmpFilePath, ec); if (ec) { mErrorStream << "Failed to remove temporary compression file " << tmpFilePath << " (error: " << ec.message() << ")" << std::endl; return; } } fs::rename(filePath, tmpFilePath, ec); if (ec) { mErrorStream << "Failed to rename file " << filePath << " to " << tmpFilePath << " (error: " << ec.message() << ")" << std::endl; return; } fs::path targetFilePath = filePath; targetFilePath += getExtension(); pushToQueue(tmpFilePath, targetFilePath); } } MEGAcmd-2.5.2_Linux/src/megacmd_rotating_logger.h000066400000000000000000000115731516543156300217170ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include #include #include #include #include #include #include #include "megacmdlogger.h" namespace megacmd { class MessageBus final { public: using MemoryBuffer = std::vector; public: // These are: // reservedSize: initial size of the front and back buffers // shouldSwapSize: suggested size at which we can attempt to swap the buffers // failSafeSize: fail safe size at which we should flush the message bus // after flushing, the underlying buffers are shrunk to fit the fail safe size MessageBus(size_t reservedSize, size_t shouldSwapSize, size_t failSafeSize); void append(const char* data, size_t size); std::pair swapBuffers(); bool isEmpty() const; bool shouldSwapBuffers() const; bool reachedFailSafeSize() const; private: void clearFrontBuffer(); const size_t mShouldSwapSize; const size_t mFailSafeSize; mutable std::mutex mListMtx; MemoryBuffer mFrontBuffer; MemoryBuffer mBackBuffer; bool mMemoryError; }; class RotationEngine; class CompressionEngine; class RotatingFileManager final { public: enum class RotationType { Numbered, Timestamp }; enum class CompressionType { None, Gzip }; static float getCompressionRatio(CompressionType compressionType); static RotationType getRotationTypeFromStr(std::string_view str); static CompressionType getCompressionTypeFromStr(std::string_view str); struct Config { size_t mMaxBaseFileSize; RotationType mRotationType; std::chrono::seconds mMaxFileAge; int mMaxFilesToKeep; CompressionType mCompressionType; }; public: RotatingFileManager(const fs::path& filePath, const Config& config); bool shouldRotateFiles(size_t fileSize) const; void cleanupFiles(); void rotateFiles(); std::string popErrors(); private: void initializeCompressionEngine(); void initializeRotationEngine(); private: const Config mConfig; const fs::path mDirectory; const fs::path mBaseFilename; std::unique_ptr mCompressionEngine; std::unique_ptr mRotationEngine; }; class FileRotatingLoggedStream final : public LoggedStream { mutable MessageBus mMessageBus; fs::path mOutputFilePath; std::ofstream mOutputFile; RotatingFileManager mFileManager; mutable std::mutex mWriteMtx; mutable std::condition_variable mWriteCV; mutable std::mutex mExitMtx; mutable std::condition_variable mExitCV; bool mForceRenew; bool mExit; bool mFlush; std::chrono::seconds mFlushPeriod; std::chrono::steady_clock::time_point mNextFlushTime; std::thread mWriteThread; private: static size_t loadFailSafeSize(); static RotatingFileManager::Config loadFileConfig(); bool shouldRenew() const; bool shouldExit() const; bool shouldFlush() const; void setForceRenew(bool forceRenew); void writeToBuffer(const char* msg, size_t size) const; void writeMessagesToFile(); void flushToFile(); void markForExit(); bool waitForOutputFile(); void mainLoop(); public: FileRotatingLoggedStream(const OUTSTRING& outputFilePath); ~FileRotatingLoggedStream(); const LoggedStream& operator<<(const char& c) const override; const LoggedStream& operator<<(const char* str) const override; const LoggedStream& operator<<(std::string str) const override; const LoggedStream& operator<<(BinaryStringView v) const override; const LoggedStream& operator<<(std::string_view str) const override; const LoggedStream& operator<<(int v) const override; const LoggedStream& operator<<(unsigned int v) const override; const LoggedStream& operator<<(long long v) const override; const LoggedStream& operator<<(long long unsigned int v) const override; const LoggedStream& operator<<(unsigned long v) const override; const LoggedStream& operator<<(std::ios_base) const override { return *this; } const LoggedStream& operator<<(std::ios_base*) const override { return *this; } const LoggedStream& operator<<(OUTSTREAMTYPE& (*)(OUTSTREAMTYPE&)) const override { return *this; } #ifdef _WIN32 const LoggedStream& operator<<(std::wstring v) const override; #endif virtual void flush() override; }; } MEGAcmd-2.5.2_Linux/src/megacmd_server_main.cpp000066400000000000000000000146051516543156300213750ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmd.h" #include "megaapi.h" #include "megacmdlogger.h" #include "megacmd_rotating_logger.h" #include "configurationmanager.h" #include using std::vector; bool extractarg(vector& args, const char *what) { for (int i = int(args.size()); i--; ) { if (!strcmp(args[i], what)) { args.erase(args.begin() + i); return true; } } return false; } bool extractargparam(vector& args, const char *what, std::string& param) { for (int i = int(args.size()) - 1; --i >= 0; ) { if (!strcmp(args[i], what) && args.size() > i) { param = args[i + 1]; args.erase(args.begin() + i, args.begin() + i + 2); return true; } } return false; } megacmd::LogConfig parseLogConfig(std::vector& args) { using mega::MegaApi; using megacmd::ConfigurationManager; #ifndef DEBUG constexpr int defaultSdkLogLevel = (int) MegaApi::LOG_LEVEL_ERROR; #else constexpr int defaultSdkLogLevel = (int) MegaApi::LOG_LEVEL_DEBUG; #endif constexpr int defaultCmdLogLevel = (int) MegaApi::LOG_LEVEL_DEBUG; bool debug = extractarg(args, "--debug"); bool debugfull = extractarg(args, "--debug-full"); bool verbose = extractarg(args, "--verbose"); bool verbosefull = extractarg(args, "--verbose-full"); const char *envCmdLogLevel = getenv("MEGACMD_LOGLEVEL"); const char *envJsonLogs = getenv("MEGACMD_JSON_LOGS"); if (envCmdLogLevel) { std::string loglevelenv(envCmdLogLevel); debug |= !loglevelenv.compare("DEBUG"); debugfull |= !loglevelenv.compare("FULLDEBUG"); verbose |= !loglevelenv.compare("VERBOSE"); verbosefull |= !loglevelenv.compare("FULLVERBOSE"); } megacmd::LogConfig logConfig; logConfig.mSdkLogLevel = ConfigurationManager::getConfigurationValue("sdkLogLevel", defaultSdkLogLevel); logConfig.mCmdLogLevel = ConfigurationManager::getConfigurationValue("cmdLogLevel", defaultCmdLogLevel); logConfig.mLogToCout = !extractarg(args, "--do-not-log-to-stdout"); logConfig.mJsonLogs = ConfigurationManager::getConfigurationValue("jsonLogs", false); if (debug) { logConfig.mCmdLogLevel = MegaApi::LOG_LEVEL_DEBUG; } if (debugfull) { logConfig.mSdkLogLevel = MegaApi::LOG_LEVEL_DEBUG; logConfig.mCmdLogLevel = MegaApi::LOG_LEVEL_DEBUG; } if (verbose) { logConfig.mCmdLogLevel = MegaApi::LOG_LEVEL_MAX; } if (verbosefull) { logConfig.mSdkLogLevel = MegaApi::LOG_LEVEL_MAX; logConfig.mCmdLogLevel = MegaApi::LOG_LEVEL_MAX; logConfig.mJsonLogs = true; } if (envJsonLogs) { std::string envJsonLogsStr(envJsonLogs); logConfig.mJsonLogs = (envJsonLogsStr != "0"); } return logConfig; } #ifdef _WIN32 // returns true if attempted to uninstall bool mayUninstall(std::vector &args) { bool buninstall = extractarg(args, "--uninstall") || extractarg(args, "/uninstall"); if (buninstall) { megacmd::uninstall(); return true; } return false; } #endif #ifndef _WIN32 #include static bool is_pid_running(pid_t pid) { while(waitpid(-1, 0, WNOHANG) > 0) { // Wait for defunct.... } if (0 == kill(pid, 0)) { return true; // Process exists } return 0; } #endif // mechanism used for updates/restarts in order to wait for other process void waitIfRequired(std::vector &args) { std::string shandletowait; bool dowaitforhandle = extractargparam(args, "--wait-for", shandletowait); if (dowaitforhandle) { #ifdef _WIN32 DWORD processId = atoi(shandletowait.c_str()); HANDLE processHandle = OpenProcess(PROCESS_ALL_ACCESS, FALSE, processId); cout << "Waiting for former server to end" << endl; WaitForSingleObject( processHandle, INFINITE ); CloseHandle(processHandle); #else pid_t processId = atoi(shandletowait.c_str()); if (processId <= 0) { cerr << "Invalid --wait-for pid. Waiting 3 seconds instead." << endl; sleep(3); } else { const int maxWaitSeconds = 5; int waited = 0; while (is_pid_running(processId) && waited < maxWaitSeconds) { cerr << "Waiting for former MEGAcmd server to end: " << processId << endl; sleep(1); ++waited; } if (waited >= maxWaitSeconds) { cerr << "Former server (pid " << processId << ") still alive after " << maxWaitSeconds << "s, giving up waiting." << endl; } } #endif } } //TODO: things that will require testing (make them reach Jira release somehow) // - ALL PARAMETERS (including api url) // - windows uninstall and updating // - linux updates (signals and waiting) // - windows execution with non utf-8 paths // - linux forking (clients into server) int main(int argc, char* argv[]) { #ifdef WIN32 megacmd::Instance windowsConsoleController; #endif std::vector args; if (argc > 1) { args = std::vector(argv + 1, argv + argc); } #ifdef _WIN32 if (mayUninstall(args)) { return 0; } #endif waitIfRequired(args); const auto logConfig = parseLogConfig(args); bool skiplockcheck = extractarg(args, "--skip-lock-check"); std::string debug_api_url; extractargparam(args, "--apiurl", debug_api_url); // only for debugging bool disablepkp = extractarg(args, "--disablepkp"); // only for debugging auto createLoggedStream = [] { return new megacmd::FileRotatingLoggedStream(megacmd::MegaCmdLogger::getDefaultFilePath()); }; return megacmd::executeServer(argc, argv, createLoggedStream, logConfig, skiplockcheck, debug_api_url, disablepkp); } MEGAcmd-2.5.2_Linux/src/megacmd_src_file_list.h.in000066400000000000000000000001101516543156300217400ustar00rootroot00000000000000#pragma once #define MEGACMD_SRC_FILE_LIST { @MEGACMD_SRC_FILE_LIST@ } MEGAcmd-2.5.2_Linux/src/megacmd_utf8.cpp000066400000000000000000000170371516543156300177530ustar00rootroot00000000000000/** * @file src/megacmd_utf8.cpp * @brief MEGAcmd: utf8 and console resources * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmd_utf8.h" #ifdef WIN32 #include #include #include #endif namespace megacmd { #ifdef _WIN32 std::wostream & operator<< ( std::wostream & ostr, std::string const & str ) { std::wstring toout; stringtolocalw(str.c_str(),&toout); ostr << toout; return ( ostr ); } std::wostream & operator<< ( std::wostream & ostr, const char * str ) { std::wstring toout; stringtolocalw(str,&toout); ostr << toout; return ( ostr ); } // convert UTF-8 to Windows Unicode wstring (UTF-16) void stringtolocalw(const char* path, size_t lenutf8, std::wstring* local) { ASSERT_UTF8_VALID(std::string(path, lenutf8)); // make space for the worst case local->resize((strlen(path) + 1) * sizeof(wchar_t)); int wchars_num = MultiByteToWideChar(CP_UTF8, 0, path, lenutf8 + 1, NULL,0); local->resize(wchars_num); int len = MultiByteToWideChar(CP_UTF8, 0, path, lenutf8 + 1, (wchar_t*)local->data(), wchars_num); if (len) { local->resize(len-1); } else { local->clear(); } } // convert UTF-8 to Windows Unicode wstring (UTF-16) void stringtolocalw(const char* path, std::wstring* local) { stringtolocalw(path, strlen(path), local); } std::wstring utf8StringToUtf16WString(const char* str) { std::wstring toret; stringtolocalw(str, &toret); return toret; } std::wstring utf8StringToUtf16WString(const char* str, size_t lenutf8) { std::wstring toret; stringtolocalw(str, lenutf8, &toret); return toret; } void localwtostring(const std::wstring* wide, std::string *multibyte) { utf16ToUtf8(wide->data(), (int)wide->size(), multibyte); } void utf16ToUtf8(const wchar_t* utf16data, int utf16size, std::string* utf8string) { if(!utf16size) { utf8string->clear(); return; } int size_needed = WideCharToMultiByte(CP_UTF8, 0, utf16data, utf16size, NULL, 0, NULL, NULL); utf8string->resize(size_needed); WideCharToMultiByte(CP_UTF8, 0, utf16data, utf16size, (char*)utf8string->data(), size_needed, NULL, NULL); ASSERT_UTF8_VALID(*utf8string); } std::string utf16ToUtf8(const std::wstring &ws) { std::string utf8s; utf16ToUtf8(ws.c_str(), ws.size(), &utf8s); return utf8s; } std::string utf16ToUtf8(const wchar_t *ws) { std::string utf8s; utf16ToUtf8(ws, int(wcslen(ws)), &utf8s); return utf8s; } std::wstring nonMaxPathLimitedWstring(const fs::path &localpath) { static const std::wstring wprefix(LR"(\\?\)"); if (localpath.wstring().rfind(wprefix, 0) == 0) { return localpath.wstring(); } auto prefixedPathWstring = std::wstring(wprefix).append(localpath.wstring()); assert(prefixedPathWstring.rfind(wprefix, 0) == 0); return prefixedPathWstring; } fs::path nonMaxPathLimitedPath(const fs::path &localpath) { auto prefixedPath = fs::path(nonMaxPathLimitedWstring(localpath)); assert(prefixedPath.wstring().rfind(LR"(\\?\)", 0) == 0); return prefixedPath; } WindowsConsoleController::WindowsConsoleController() { if (!getenv("MEGACMD_DISABLE_UTF8_OUTPUT_MODE_BY_DEFAULT")) { // set default mode to U8TEXT. // PROs: we could actually get rid of _setmode to U8TEXT in WindowsUtf8StdoutGuard // CONS: any low level printing to stdout may crash if the mode is not _O_TEXT. // Even if we do not do that, for instance, gtests would do. auto OUTPUT_MODE = _O_U8TEXT; auto oldModeStdout = _setmode(_fileno(stdout), OUTPUT_MODE); auto oldModeStderr = _setmode(_fileno(stderr), OUTPUT_MODE); } if (!getenv("MEGACMD_DISABLE_NARROW_OUTSTREAMS_INTERCEPTING")) { enableInterceptors(true); } } void WindowsConsoleController::enableInterceptors(bool enable) { std::cout.flush(); std::cerr.flush(); if (enable) { mInterceptCout.reset(new InterceptStreamBuffer(std::cout, std::wcout)); mInterceptCerr.reset(new InterceptStreamBuffer(std::cerr, std::wcerr)); } else { mInterceptCout.reset(); mInterceptCerr.reset(); } } #endif std::atomic sInvalidUtf8Incidences = 0; std::string pathAsUtf8(const fs::path& path) { #ifdef _WIN32 return utf16ToUtf8(path.wstring().c_str()); #else return path.string(); #endif } bool isValidUtf8(const char* data, size_t size) { #ifdef MEGACMD_TESTING_CODE bool disableUTF8Valiations = getenv("MEGACMD_DISABLE_UTF8_VALIDATIONS"); #else static bool disableUTF8Valiations = getenv("MEGACMD_DISABLE_UTF8_VALIDATIONS"); #endif if (disableUTF8Valiations) { return true; } // checks that the byte starts with bits 10 (i.e. continuation bytes) auto check10 = [&data](size_t n) -> bool { return (data[n] & 0xc0) == 0x80; }; while (size) { const uint8_t lead = static_cast(*data); // 0xxxxxxx -> U+0000..U+007F (1-byte character) if (lead < 0x80) { ++data; --size; continue; } // 110xxxxx -> U+0080..U+07FF (2-byte character) else if ((lead & 0xe0) == 0xc0) { // check codepoint is at least 0x80 and check continuation byte if (lead > 0xc1 && size >= 2 && check10(1)) { data += 2; size -= 2; continue; } } // 1110xxxx -> U+0800..U+FFFF (3-byte character) else if ((lead & 0xf0) == 0xe0) { // check continuation bytes if (size >= 3 && check10(1) && check10(2)) { const auto secondByte = static_cast(data[1]); // check codepoint is at least 0x800 and not a surrogate codepoint in the range 0xd800-0xdfff if (((lead << 8) | secondByte) > 0xe09f && (lead != 0xed || secondByte < 0xa0)) { data += 3; size -= 3; continue; } } } // 11110xxx -> U+10000..U+10FFFF (4-byte character) else if ((lead & 0xf8) == 0xf0) { // check continuation bytes5 if (size >= 4 && check10(1) && check10(2) && check10(3)) { const auto firstHalf = (lead << 8) | static_cast(data[1]); // check codepoint is at least 0x10000 and not greater than 0x10FFFF (not encodable by UTF-16) if (firstHalf > 0xf08f && firstHalf < 0xf490) { data += 4; size -= 4; continue; } } } sInvalidUtf8Incidences++; return false; } return true; } bool isValidUtf8(const std::string &str) { return isValidUtf8(str.data(), str.size()); } } //end namespace MEGAcmd-2.5.2_Linux/src/megacmd_utf8.h000066400000000000000000000205231516543156300174120ustar00rootroot00000000000000/** * @file src/megacmd_utf8.h * @brief MEGAcmd: utf8 and console resources * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include #include #include #include #ifdef _WIN32 #include #include #include #include #include #include #include #include #include #include #include #include #ifndef _O_U16TEXT #define _O_U16TEXT 0x00020000 #endif #ifndef _O_U8TEXT #define _O_U8TEXT 0x00040000 #endif #endif #include namespace fs = std::filesystem; #ifdef MEGACMD_TESTING_CODE #define ASSERT_UTF8_VALID(str) #define ASSERT_UTF8_BREAK(msg) #else #define ASSERT_UTF8_VALID(str) assert(isValidUtf8(str)) #define ASSERT_UTF8_BREAK(msg) assert(false && msg) #endif namespace megacmd { std::string pathAsUtf8(const fs::path& path); extern std::atomic sInvalidUtf8Incidences; bool isValidUtf8(const char* data, size_t size); bool isValidUtf8(const std::string &str); struct StdoutMutexGuard { inline static std::recursive_mutex sSetmodeMtx; std::lock_guard mGuard; StdoutMutexGuard() : mGuard(sSetmodeMtx) {} }; /* platform dependent */ #ifdef _WIN32 #define OUTSTREAMTYPE std::wostream #define OUTFSTREAMTYPE std::wofstream #define OUTSTRINGSTREAM std::wostringstream #define OUTSTRING std::wstring #define COUT std::wcout #define CERR std::wcerr //override << operators for wostream for string and const char * std::wostream & operator<< ( std::wostream & ostr, std::string const & str ); std::wostream & operator<< ( std::wostream & ostr, const char * str ); // UTF-8 to wstrings (UTF-16) conversions: void stringtolocalw(const char* path, std::wstring* local); void stringtolocalw(const char* path, size_t lenutf8, std::wstring* local); std::wstring utf8StringToUtf16WString(const char* str, size_t lenutf8); std::wstring utf8StringToUtf16WString(const char* path); // convert Utf-16 wide chars to UTF-8 std::strings void localwtostring(const std::wstring* wide, std::string *multibyte); void utf16ToUtf8(const wchar_t* utf16data, int utf16size, std::string* utf8string); std::string utf16ToUtf8(const wchar_t *ws); std::string utf16ToUtf8(const std::wstring &ws); std::wstring nonMaxPathLimitedWstring(const fs::path &localpath); fs::path nonMaxPathLimitedPath(const fs::path &localpath); /*** * operator<< overloads to ensure proper handling of paths and widestrings * This header would need to be included first in all project as a general rule, so that these are used * As a way to ensure this, we could only define fs namespace here. * * Note: beyond these, operator<< overloads for logging can be found at megacmdlogger.h **/ //// This is expected to be used when trying to << a wstring (supposedly in UTF-16, into a ostream (string/file/cout/...) template inline std::enable_if_t, std::wstring>, std::ostream&> operator<<(std::ostream& oss, const T& wstr) { static_assert(false); // Let's forbid this to better control that we just write utf8 std::strings in non wide streams (e.g cout) // Notice that in the end, in stdout we want to write widestrings (utf16) to wcout instead, to have console rendering properly. // If we were to automatically support this we should convert them to utf8 string as follows: oss << megacmd::utf16ToUtf8(wstr); return oss; } } // end of namespace megacmd namespace std::filesystem { // overload that may be used when building some stringstream. // Note: LOG_xxx << path should are handled by SimpleLogger overloads, not this one inline std::ostream &operator<<(std::ostream& oss, const fs::path& path) { // caveat: outputting its contents (utf-8) to stdout would need to be done converting to utf-16 and using wcout // and a valid mode to stdout (See WindowsUtf8StdoutGuard) assert(&oss != &std::cout); assert(&oss != &std::cerr); oss << megacmd::pathAsUtf8(path); return oss; } } // end of namespace std::filesystem namespace megacmd { /** * @brief This class is used to: * - guard no meddling while writting/setting output mode on stdout/stderr * - ensure setting the output modes to mOutputMode */ class OutputsModeGuard : public StdoutMutexGuard { unsigned int mOutputMode; int mOldModeStdout; int mOldModeStderr; public: OutputsModeGuard(unsigned int outputMode) : mOutputMode(outputMode) { fflush(stdout); fflush(stderr); mOldModeStdout = _setmode(_fileno(stdout), mOutputMode); mOldModeStderr = _setmode(_fileno(stderr), mOutputMode); assert(mOldModeStdout != -1); assert(mOldModeStderr != -1); } virtual ~OutputsModeGuard() { fflush(stdout); fflush(stderr); _setmode(_fileno(stdout), mOldModeStdout); _setmode(_fileno(stderr), mOldModeStderr); } }; template class WindowsOutputsModeGuardGeneric : public OutputsModeGuard { public: WindowsOutputsModeGuardGeneric() : OutputsModeGuard(OUTPUT_MODE) {} }; using WindowsUtf8StdoutGuard = WindowsOutputsModeGuardGeneric<_O_U8TEXT>; using WindowsNarrowStdoutGuard = WindowsOutputsModeGuardGeneric<_O_TEXT>; using WindowsBinaryStdoutGuard = WindowsOutputsModeGuardGeneric; class InterceptStreamBuffer : public std::streambuf { private: std::streambuf* mOriginalStreamBuffer; // Store the original buffer std::ostream& mNarrowStream; // Reference to the original stream (e.g., std::cout) std::wostream& mWideOstream; // Reference to the original stream (e.g., std::cout) bool hasNonAscii(const char* str, size_t length) { for (size_t i = 0; i < length; ++i) { if (static_cast(str[i]) > 127) { return true; } } return false; } public: InterceptStreamBuffer(std::ostream& outStream, std::wostream &wideStream) : mNarrowStream(outStream), mWideOstream(wideStream) { mOriginalStreamBuffer = mNarrowStream.rdbuf(); // Save the original buffer mNarrowStream.rdbuf(this); // Replace with this buffer } ~InterceptStreamBuffer() { mNarrowStream.rdbuf(mOriginalStreamBuffer); // Restore the original buffer on destruction } protected: virtual int overflow(int c) override { char cc = char(c); xsputn(&cc, 1); return c; } virtual std::streamsize xsputn(const char* s, std::streamsize count) override { if (hasNonAscii(s, count)) // why cannot: { WindowsUtf8StdoutGuard utf8Guard; // assert(false && "This should ideally be controlled in calling code"); //TODO: enable this assert to fix cases in origin (assumed better performance) mWideOstream << utf8StringToUtf16WString(s, count); return count; } else { WindowsNarrowStdoutGuard narrowGuard; return mOriginalStreamBuffer->sputn(s, count); // This is protesting when having _setmode and doing cout << "odd" (odd number of chars) } } }; class WindowsConsoleController { std::unique_ptr mInterceptCout; std::unique_ptr mInterceptCerr; public: WindowsConsoleController(); void enableInterceptors(bool enable); }; #else #define OUTSTREAMTYPE std::ostream #define OUTFSTREAMTYPE std::ofstream #define OUTSTRINGSTREAM std::ostringstream #define OUTSTRING std::string #define COUT std::cout #define CERR std::cerr #endif }//end namespace MEGAcmd-2.5.2_Linux/src/megacmdcommonutils.cpp000066400000000000000000001164011516543156300212720ustar00rootroot00000000000000/** * @file src/megacmdcommonutils.cpp * @brief MEGAcmd: Auxiliary methods * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdcommonutils.h" #ifdef _WIN32 #include //PathAppend #include //CommandLineToArgvW #include //GetUserName #include //UNLEN #include //_waccess #else #include // console size #include #include #include #include #include #include #endif #include #include #include #include #include #include #include #include #include #include //split #include namespace megacmd { using namespace std; std::string errorCodeStr(const std::error_code& ec) { return ec ? "(error: " + ec.message() + ")" : ""; } bool canWrite(const string &path) { #ifdef _WIN32 auto bypassCanWrite = []() { const char *bypassCanWriteEnv = getenv("MEGACMD_BYPASS_CAN_WRITE"); const std::string bypassCanWriteString = bypassCanWriteEnv ? bypassCanWriteEnv : std::string{}; return bypassCanWriteString == "1"; }; if (bypassCanWrite()) { return true; } std::wstring wpath = utf8StringToUtf16WString(path.c_str()); if (_waccess(wpath.c_str(), 02) == 0) // 02 = write permission { return true; } else if (errno == EACCES) { return false; // explicitly not writable } else if (errno == ENOENT && wpath.size() > 0 && (wpath.back() == L'.' || wpath.back() == L' ')) { // Ignore ENOENT errors for files ending with a period or a space. CMD/SDK is able to sync these files. // // See: https://learn.microsoft.com/en-us/windows/win32/fileio/naming-a-file#naming-conventions // Quote: // > The following fundamental rules enable applications to create and process valid names // > for files and directories, regardless of the file system: // > ... // > Do not end a file or directory name with a space or a period. return true; } else { return false; } #else return access(path.c_str(), W_OK) == 0; #endif } bool isPublicLink(const string &link) { //Old format: //https://mega.nz/#!ph!key //https://mega.nz/#F!ph!key //new format: //https://mega.nz/file/ph#key //https://mega.nz/folder/ph#key if (( link.find("http") == 0 ) && ( link.find("#") != string::npos || link.find("/file/") != string::npos || link.find("/folder/") != string::npos)) { return true; } return false; } bool isEncryptedLink(string link) { if (( link.find("http") == 0 ) && ( link.find("#") != string::npos ) && (link.substr(link.find("#"),3) == "#P!") ) { return true; } return false; } string getPublicLinkHandle(const string &link) { size_t posFolder = string::npos; size_t posLastSep = link.rfind("?"); if (posLastSep == string::npos ) { string rest = link; int count = 0; size_t posExc = rest.find_first_of("!"); while ( posExc != string::npos && (posExc +1) < rest.size()) { count++; if (count <= 3 ) { posLastSep += posExc + 1; } rest = rest.substr(posExc + 1); posExc = rest.find("!"); } if (count != 3) { posLastSep = string::npos; } } if (posLastSep == string::npos ) { posFolder = link.find("/folder/"); } if (posFolder != string::npos) { posLastSep = link.rfind("/file/"); if (posLastSep != string::npos) { posLastSep += strlen("/file/")-1; } else { posLastSep = link.rfind("/folder/"); if (posLastSep != string::npos && posFolder != posLastSep) { posLastSep += strlen("/folder/")-1; } else { return string(); } } } if (( posLastSep == string::npos ) || !( posLastSep + 1 < link.length())) { return string(); } else { return link.substr(posLastSep+1); } } bool hasWildCards(string &what) { return what.find('*') != string::npos || what.find('?') != string::npos; } string generateRandomAlphaNumericString(size_t len) { static const std::string alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789"; thread_local static std::mt19937 generator(std::random_device{}()); thread_local static std::uniform_int_distribution<> distribution(0, alphabet.size() - 1); std::string randomString; randomString.reserve(len); for (size_t i = 0; i < len; ++i) { randomString += alphabet[distribution(generator)]; } return randomString; } std::vector split(const std::string& input, const std::string& pattern) { size_t start = 0, end; std::vector tokens; if (input.size()) { if (pattern.size()) { do { end = input.find(pattern, start); std::string token = input.substr(start, end - start); if (token.size()) { tokens.push_back(token); } start = end + pattern.size(); } while (end != std::string::npos); } else { tokens.push_back(input); } } return tokens; } long long charstoll(const char *instr) { long long retval; retval = 0; for (; *instr; instr++) { retval = 10*retval + (*instr - '0'); } return retval; } std::string <rim(std::string &s, const char &c) { size_t pos = s.find_first_not_of(c); s = s.substr(pos == string::npos ? s.length() : pos, s.length()); return s; } std::string_view ltrim(const std::string_view s, const char &c) { size_t pos = s.find_first_not_of(c); return s.substr(pos == std::string::npos ? s.size() : pos, s.length()); } std::string &rtrim(std::string &s, const char &c) { size_t pos = s.find_last_not_of(c); s.resize(pos == std::string::npos ? 0 : pos + 1); return s; } string removeTrailingSeparators(string &path) { if (path.empty()) { return path; } if (path.find_first_not_of('/') == string::npos) { return "/"; } return rtrim(rtrim(path,'/'),'\\'); } vector getlistOfWords(const char *ptr, bool escapeBackSlashInCompletion, bool ignoreTrailingSpaces) { vector words; const char* wptr = ""; // split line into words with quoting and escaping for (;; ) { // skip leading blank space while (*(const signed char*)ptr > 0 && *ptr <= ' ' && (ignoreTrailingSpaces || *(ptr+1))) { ptr++; } if (!*ptr) { break; } // quoted arg / regular arg if (*ptr == '"') { ptr++; wptr = ptr; words.push_back(string()); for (;; ) { if (( *ptr == '"' ) || ( *ptr == '\\' ) || !*ptr) { words[words.size() - 1].append(wptr, ptr - wptr); if (!*ptr || ( *ptr++ == '"' )) { break; } wptr = ptr - 1; } else { ptr++; } } } else if (*ptr == '\'') // quoted arg / regular arg { ptr++; wptr = ptr; words.push_back(string()); for (;; ) { if (( *ptr == '\'' ) || ( *ptr == '\\' ) || !*ptr) { words[words.size() - 1].append(wptr, ptr - wptr); if (!*ptr || ( *ptr++ == '\'' )) { break; } wptr = ptr - 1; } else { ptr++; } } } else { while (*ptr == ' ') ptr++;// only possible if ptr+1 is the end wptr = ptr; const char *prev = ptr; //while ((unsigned char)*ptr > ' ') while ((*ptr != '\0') && !(*ptr ==' ' && *prev !='\\')) { if (*ptr == '"' && *(ptr+1) != '\0') // if quote is found, look for the ending quote { do { ++ptr; } while (*ptr != '"' && *(ptr+1) != '\0'); } prev = ptr; ptr++; } words.emplace_back(wptr, ptr - wptr); } } if (escapeBackSlashInCompletion && words.size()> 1 && words[0] == "completion") { for (int i = 1; i < (int)words.size(); i++) { replaceAll(words[i],"\\","\\\\"); } } return words; } bool stringcontained(const char * s, vector list) { for (int i = 0; i < (int)list.size(); i++) { if (list[i] == s) { return true; } } return false; } char * dupstr(char* s) { char *r; r = (char*)malloc(sizeof( char ) * ( strlen(s) + 1 )); strcpy(r, s); return( r ); } bool replace(std::string& str, const std::string& from, const std::string& to) { size_t start_pos = str.find(from); if (start_pos == std::string::npos) { return false; } str.replace(start_pos, from.length(), to); return true; } void replaceAll(std::string& str, const std::string& from, const std::string& to) { if (from.empty()) { return; } size_t start_pos = 0; while (( start_pos = str.find(from, start_pos)) != std::string::npos) { str.replace(start_pos, from.length(), to); start_pos += to.length(); } } int toInteger(const string &str, int failValue) { if (str.empty()) { return failValue; } errno = 0; char *p; long long l = strtoll(str.c_str(), &p, 10); if (p == str.c_str() || *p != '\0' || errno != 0) { return failValue; } if (( l < INT_MIN ) || ( l > INT_MAX )) { return failValue; } return (int)l; } string joinStrings(const vector& vec, const char* delim, bool quoted) { stringstream res; if (!quoted) { std::copy(vec.begin(), vec.end(), ostream_iterator(res, delim)); } else { for(vector::const_iterator i = vec.begin(); i != vec.end(); ++i) { res << "\"" << *i << "\"" << delim; } } if (vec.size() > 0) { string toret = res.str(); return toret.substr(0,toret.size()-strlen(delim)); } return res.str(); } unsigned int getstringutf8size(const string &str) { int c,i,ix,q; for (q=0, i=0, ix=int(str.length()); i < ix; i++, q++) { c = (unsigned char) str[i]; if (c>=0 && c<=127) i+=0; else if ((c & 0xE0) == 0xC0) i+=1; #ifdef _WIN32 else if ((c & 0xF0) == 0xE0) i+=2; #else else if ((c & 0xF0) == 0xE0) { if ((i+2)>ix || c != 0xE2 || (strncmp(&str.c_str()[i],"\u21f5",3) && strncmp(&str.c_str()[i],"\u21d3",3) && strncmp(&str.c_str()[i],"\u21d1",3) ) ) { //known 1 character gliphs q++; } i+=2; } //these gliphs may occupy 2 characters! Problem: not always. Let's assume the worse #endif else if ((c & 0xF8) == 0xF0) i+=3; else return 0;//invalid utf8 } return q; } string getFixLengthString(const string &origin, unsigned int size, const char delim, bool alignedright) { string toret; size_t printableSize = getstringutf8size(origin); size_t bytesSize = origin.size(); if (printableSize <= size){ if (alignedright) { toret.insert(0,size-printableSize,delim); toret.insert(size-bytesSize,origin,0,bytesSize); } else { toret.insert(0,origin,0,bytesSize); toret.insert(bytesSize,size-printableSize,delim); } } else { toret.insert(0,origin,0,(size+1)/2-2); if (size > 3) toret.insert((size+1)/2-2,3,'.'); if (size > 1) toret.insert((size+1)/2+1,origin,bytesSize-(size)/2+1,(size)/2-1); //TODO: This could break characters if multibyte! //alternative: separate in multibyte strings and print one by one? } return toret; } string getRightAlignedString(const string origin, unsigned int minsize) { ostringstream os; os << std::setw(minsize) << origin; return os.str(); } bool startsWith(const std::string_view str, const std::string_view prefix) { return str.rfind(prefix, 0) == 0; } string toLower(const std::string& str) { std::string lower = str; for (char& c : lower) { c = std::tolower(c); } return lower; } template void printCenteredLine(Stream_T &os, string msj, unsigned int width, bool encapsulated) { unsigned int msjsize = getstringutf8size(msj); bool overflowed = false; if (msjsize>width) { overflowed = true; width = unsigned(msjsize); } if (encapsulated && !overflowed) os << "|"; for (unsigned int i = 0; i < (width-msjsize)/2; i++) os << " "; os << msj; for (unsigned int i = 0; i < (width-msjsize)/2 + (width-msjsize)%2 ; i++) os << " "; if (encapsulated && !overflowed) os << "|"; os << endl; } // Instantiate those that can be used: template void printCenteredLine(OUTSTREAMTYPE &os, string msj, unsigned int width, bool encapsulated); template void printCenteredLine(std::ostringstream &os, string msj, unsigned int width, bool encapsulated); void printCenteredContents(OUTSTREAMTYPE &os, string msj, unsigned int width, bool encapsulated) { string headfoot = " "; headfoot.append(width, '-'); //unsigned int msjsize = getstringutf8size(msj); bool printfooter = false; if (msj.size()) { string header; if (msj.at(0) == '<') { size_t possenditle = msj.find(">"); if (width >= 2 && possenditle < (width -2)) { header.append(" "); header.append((width - possenditle ) / 2, '-'); header.append(msj.substr(0,possenditle+1)); header.append(width - getstringutf8size(header) + 1, '-'); msj = msj.substr(possenditle + 1); } } if (header.size() || encapsulated) { os << (header.size()?header:headfoot) << endl; printfooter = true; } } size_t possepnewline = msj.find("\n"); size_t possep = msj.find(" "); if (possepnewline != string::npos && possepnewline < width) { possep = possepnewline; } size_t possepprev = possep; while (msj.size()) { if (possepnewline != string::npos && possepnewline <= width) { possep = possepnewline; possepprev = possep; } else { while (possep < width && possep != string::npos) { possepprev = possep; possep = msj.find_first_of(" ", possep+1); } } if (possepprev == string::npos || (possep == string::npos && msj.size() <= width)) { printCenteredLine(os, msj, width, encapsulated); break; } else { printCenteredLine(os, msj.substr(0,possepprev), width, encapsulated); if (possepprev < (msj.size() - 1)) { msj = msj.substr(possepprev + 1); possepnewline = msj.find("\n"); possep = msj.find(" "); possepprev = possep; } else { break; } } } if (printfooter) { os << headfoot << endl; } } void printCenteredLine(string msj, unsigned int width, bool encapsulated) { OUTSTRINGSTREAM os; printCenteredLine(os, msj, width, encapsulated); #ifdef _WIN32 WindowsUtf8StdoutGuard utf8Guard; #endif COUT << os.str(); } void printCenteredContents(string msj, unsigned int width, bool encapsulated) { OUTSTRINGSTREAM os; printCenteredContents(os, msj, width, encapsulated); #ifdef _WIN32 WindowsUtf8StdoutGuard utf8Guard; #else StdoutMutexGuard stdoutGuard; #endif COUT << os.str(); } void printCenteredContentsCerr(string msj, unsigned int width, bool encapsulated) { OUTSTRINGSTREAM os; printCenteredContents(os, msj, width, encapsulated); #ifdef _WIN32 WindowsUtf8StdoutGuard utf8Guard; #else StdoutMutexGuard stdoutGuard; #endif CERR << os.str(); } void printPercentageLineCerr(const char *title, long long completed, long long total, float percentDowloaded, bool cleanLineAfter) { int cols = getNumberOfCols(80); string outputString; outputString.resize(cols + 1); for (int i = 0; i < cols; i++) { outputString[i] = '.'; } outputString[cols] = '\0'; char *ptr = (char *)outputString.c_str(); sprintf(ptr, "%s%s", title, " ||"); ptr += strlen(title); ptr += strlen(" ||"); *ptr = '.'; //replace \0 char char aux[41]; if (total < 1048576) { sprintf(aux,"||(%lld/%lld KB: %6.2f %%) ", completed / 1024, total / 1024, percentDowloaded); } else { sprintf(aux,"||(%lld/%lld MB: %6.2f %%) ", completed / 1024 / 1024, total / 1024 / 1024, percentDowloaded); } sprintf((char *)outputString.c_str() + cols - strlen(aux), "%s", aux); for (int i = 0; i < ( cols - (strlen(title) + strlen(" ||")) - strlen(aux)) * 1.0 * min(100.0f,percentDowloaded) / 100.0; i++) { *ptr++ = '#'; } #ifdef _WIN32 WindowsUtf8StdoutGuard utf8Guard; #else StdoutMutexGuard stdoutGuard; #endif // TODO: should this be CERR ? (`\r`) may not behave as wanted if (cleanLineAfter) { cerr << outputString << '\r' << flush; } else { cerr << outputString << endl; } } std::string wrapText(const std::string &input, std::size_t maxWidth, int indentSpaces) { const std::string indent(indentSpaces, ' '); std::istringstream iss(input); std::ostringstream oss; std::string word, line = indent; while (iss >> word) { if (line.size() + word.size() + 1 > maxWidth) { oss << line << '\n'; line = indent + word; } else { if (line != indent) { line += ' '; } line += word; } } if (!line.empty()) { oss << line; } return oss.str(); } int getFlag(const map *flags, const char * optname) { auto i = flags->find(optname); if (i != flags->end()) return i->second; return 0; } string getOption(const map *cloptions, const char * optname, string defaultValue) { auto i = cloptions->find(optname); if (i != cloptions->end()) return i->second; return defaultValue; } std::optional getOptionAsOptional(const map& cloptions, const char * optname) { if (cloptions.find(optname) == cloptions.end()) { return std::nullopt; } return cloptions.at(optname); } int getintOption(const map *cloptions, const char * optname, int defaultValue) { auto optionalInt = getIntOptional(*cloptions, optname); return optionalInt.value_or(defaultValue); } std::optional getIntOptional(const std::map& cloptions, const char* optName) { auto it = cloptions.find(optName); if (it == cloptions.end()) { return std::nullopt; } try { return std::stoi(it->second); } catch (...) { return std::nullopt; } } void discardOptionsAndFlags(vector *ws) { for (std::vector::iterator it = ws->begin(); it != ws->end(); ) { /* std::cout << *it; ... */ string w = ( string ) * it; if (w.length() && ( w.at(0) == '-' )) //begins with "-" { it = ws->erase(it); } else //not an option/flag { ++it; } } } string sizeProgressToText(long long partialSize, long long totalSize, bool equalizeUnitsLength, bool humanreadable) { ostringstream os; os.precision(2); if (humanreadable) { string unit; unit = ( equalizeUnitsLength ? " B" : "B" ); double reducedPartSize = (double)totalSize; double reducedSize = (double)totalSize; if ( totalSize > 1099511627776LL *2 ) { reducedPartSize = totalSize / (double) 1099511627776ull; reducedSize = totalSize / (double) 1099511627776ull; unit = "TB"; } else if ( totalSize > 1073741824LL *2 ) { reducedPartSize = totalSize / (double) 1073741824L; reducedSize = totalSize / (double) 1073741824L; unit = "GB"; } else if (totalSize > 1048576 * 2) { reducedPartSize = totalSize / (double) 1048576; reducedSize = totalSize / (double) 1048576; unit = "MB"; } else if (totalSize > 1024 * 2) { reducedPartSize = totalSize / (double) 1024; reducedSize = totalSize / (double) 1024; unit = "KB"; } os << fixed << reducedPartSize << "/" << reducedSize; os << " " << unit; } else { os << partialSize << "/" << totalSize; } return os.str(); } string sizeToText(long long totalSize, bool equalizeUnitsLength, bool humanreadable) { ostringstream os; os.precision(2); if (humanreadable) { string unit; unit = ( equalizeUnitsLength ? " B" : "B" ); double reducedSize = (double)totalSize; if ( totalSize > 1099511627776LL *2 ) { reducedSize = totalSize / (double) 1099511627776ull; unit = "TB"; } else if ( totalSize > 1073741824LL *2 ) { reducedSize = totalSize / (double) 1073741824L; unit = "GB"; } else if (totalSize > 1048576 * 2) { reducedSize = totalSize / (double) 1048576; unit = "MB"; } else if (totalSize > 1024 * 2) { reducedSize = totalSize / (double) 1024; unit = "KB"; } os << fixed << reducedSize; os << " " << (reducedSize == 0.0 ? " " : "") << unit; } else { os << totalSize; } return os.str(); } int64_t textToSize(const char *text) { int64_t sizeinbytes = 0; char * ptr = (char *)text; char * last = (char *)text; while (*ptr != '\0') { if (( *ptr < '0' ) || ( *ptr > '9' ) || ( *ptr == '.' ) ) { switch (*ptr) { case 'b': //Bytes case 'B': *ptr = '\0'; sizeinbytes += int64_t(atof(last)); break; case 'k': //KiloBytes case 'K': *ptr = '\0'; sizeinbytes += int64_t(1024.0 * atof(last)); break; case 'm': //MegaBytes case 'M': *ptr = '\0'; sizeinbytes += int64_t(1048576.0 * atof(last)); break; case 'g': //GigaBytes case 'G': *ptr = '\0'; sizeinbytes += int64_t(1073741824.0 * atof(last)); break; case 't': //TeraBytes case 'T': *ptr = '\0'; sizeinbytes += int64_t(1125899906842624.0 * atof(last)); break; default: { return -1; } } last = ptr + 1; } char *prev = ptr; ptr++; if (*ptr == '\0' && ( ( *prev == '.' ) || ( ( *prev >= '0' ) && ( *prev <= '9' ) ) ) ) //reach the end with a number or dot { return -1; } } return sizeinbytes; } string percentageToText(float percentage) { ostringstream os; os.precision(2); if (percentage != percentage) //NaN { os << "----%"; } else { os << fixed << percentage*100.0 << "%"; } return os.str(); } unsigned int getNumberOfCols(unsigned int defaultwidth) { #ifdef _WIN32 CONSOLE_SCREEN_BUFFER_INFO csbi; int columns = defaultwidth; if (GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi)) { columns = csbi.srWindow.Right - csbi.srWindow.Left - 1; } return columns; #else struct winsize size; if ( ioctl(STDOUT_FILENO,TIOCGWINSZ,&size) != -1 || (ioctl(STDIN_FILENO,TIOCGWINSZ,&size) != -1)) { if (size.ws_col > 2) { return size.ws_col - 2; } } return defaultwidth; #endif } void sleepSeconds(int seconds) { #ifdef _WIN32 Sleep(1000*seconds); #else sleep(seconds); #endif } void sleepMilliSeconds(long milliseconds) { #ifdef _WIN32 Sleep(milliseconds); #else usleep(milliseconds *1000); #endif } bool isValidEmail(const string &email) { if (email.size() < 5) // At least "a@b.c" { return false; } size_t atPos = email.find("@"); if (atPos == string::npos || atPos == 0 || atPos + 1 >= email.length() || email.at(atPos + 1) == '.') { return false; } if (size_t dotPos = email.find(".", atPos + 1); dotPos == string::npos || dotPos == email.length() - 1) { return false; } return true; } #ifdef __linux__ std::string getCurrentExecPath() { std::string path = "."; pid_t pid = getpid(); char buf[20] = {0}; sprintf(buf,"%d",pid); std::string _link = "/proc/"; _link.append( buf ); _link.append( "/exe"); char proc[PATH_MAX]; int ch = readlink(_link.c_str(),proc,PATH_MAX); if (ch != -1) { proc[ch] = 0; path = proc; std::string::size_type t = path.find_last_of("/"); path = path.substr(0,t); } return path; } #endif string <rimProperty(string &s, const char &c) { size_t pos = s.find_first_not_of(c); s = s.substr(pos == string::npos ? s.length() : pos, s.length()); return s; } string &rtrimProperty(string &s, const char &c) { size_t pos = s.find_last_not_of(c); if (pos != string::npos) { pos++; } s = s.substr(0, pos); return s; } string &trimProperty(string &what) { rtrimProperty(what,' '); ltrimProperty(what,' '); if (what.size() > 1) { if (what[0] == '\'' || what[0] == '"') { rtrimProperty(what, what[0]); ltrimProperty(what, what[0]); } } return what; } string getPropertyFromFile(const fs::path &configFilePath, const char *propertyName) { ifstream infile(configFilePath); string line; while (getline(infile, line)) { if (line.length() > 0 && line[0] != '#') { if (!strlen(propertyName)) //if empty return first line { return trimProperty(line); } string key, value; size_t pos = line.find("="); if (pos != string::npos && ((pos + 1) < line.size())) { key = line.substr(0, pos); rtrimProperty(key, ' '); if (!strcmp(key.c_str(), propertyName)) { value = line.substr(pos + 1); return trimProperty(value); } } } } return string(); } void ColumnDisplayer::endregistry() { values.push_back(std::move(currentRegistry)); currentlength = 0; } void ColumnDisplayer::setPrefix(const std::string &prefix) { mPrefix = prefix; } void ColumnDisplayer::addHeader(const string &name, bool fixed, int minWidth) { fields[name] = Field(name, fixed, minWidth); } void ColumnDisplayer::addValue(const string &name, const string &value, bool replace) { int len = getstringutf8size(value); if (!replace) { if (currentRegistry.size() && currentRegistry.find(name) != currentRegistry.end()) { endregistry(); } } currentRegistry[name] = value; currentlength += len; if (fields.find(name) == fields.end()) { addHeader(name, true); } if (find (mFieldnames.begin(), mFieldnames.end(), name) == mFieldnames.end()) { mFieldnames.push_back(name); } fields[name].updateMaxValue(len); } ColumnDisplayer::ColumnDisplayer(std::map *clflags, std::map *cloptions) : mClflags(clflags), mCloptions(cloptions), mUnfixedColsMinSize(getintOption(cloptions,"path-display-size", 0)) { } OUTSTRING ColumnDisplayer::str(bool printHeader) { OUTSTRINGSTREAM oss; print(oss, printHeader); return oss.str(); } void ColumnDisplayer::printHeaders(OUTSTREAMTYPE &os) { print(os, getintOption(mCloptions, "client-width", getNumberOfCols(75)), true, true); } void ColumnDisplayer::print(OUTSTREAMTYPE &os, bool printHeader) { print(os, getintOption(mCloptions, "client-width", getNumberOfCols(75)), printHeader); } void ColumnDisplayer::print(OUTSTREAMTYPE &os, int fullWidth, bool printHeader, bool onlyHeaders) { if (currentRegistry.size()) { endregistry(); } auto outputcols = getOption(mCloptions,"output-cols", ""); decltype (mFieldnames) fieldnames; if (!outputcols.empty()) { auto listofCols = split(outputcols, ","); for (auto el : listofCols) { auto it = find (mFieldnames.begin(), mFieldnames.end(), el); if (it != mFieldnames.end()) { fieldnames.push_back(el); } } } else { fieldnames = mFieldnames; } auto colseparator = getOption(mCloptions,"col-separator", ""); if (!colseparator.empty()) //col separator separated values { if (printHeader) { bool first = true; os << mPrefix; for (auto el : fieldnames) { Field &f = fields[el]; if (!first) { os << colseparator; } first = false; os << f.name; } os << std::endl; } if (!onlyHeaders) { for (auto ®istry : values) { bool firstvalue = true; os << mPrefix; for (auto &el : fieldnames) { Field &f = fields[el]; if (!firstvalue) { os << colseparator; } firstvalue = false; if (registry.find(f.name) != registry.end()) { os << registry[f.name]; } } os << std::endl; } } return; } int unfixedfieldscount = 0; int unfixedFieldsMaxLengthSum = 0; int leftWidth = fullWidth; vector unfixedfields; for (auto &el : fields) { Field &f = el.second; if (f.fixedSize) { if (f.fixedWidth) { f.dispWidth = f.fixedWidth; } else { f.dispWidth = max((int)getstringutf8size(f.name),f.maxValueLength); } leftWidth-=(f.dispWidth + 1); } else { unfixedfieldscount++; unfixedfields.push_back(&f); unfixedFieldsMaxLengthSum+=f.maxValueLength; } } auto unfixedFieldsMaxLengthsLeft = unfixedFieldsMaxLengthSum; for (auto &f: unfixedfields) { unfixedFieldsMaxLengthsLeft -= f->maxValueLength; f->dispWidth = max( (int)getstringutf8size(f->name), // min limit: header size min( f->maxValueLength // max limit: its longest value , max(mUnfixedColsMinSize, // min limit 2: the min limit for unfixed columns max((leftWidth - unfixedfieldscount + 1)/(unfixedfieldscount), (leftWidth - unfixedfieldscount + 1 - unfixedFieldsMaxLengthsLeft)) //either an equitative share between all unfixedfields left, or all the space the other left me considering their maxLegnths ) ) ); leftWidth-=(f->dispWidth + 1); unfixedfieldscount--; } if (printHeader) { bool first = true; os << mPrefix; for (auto el : fieldnames) { Field &f = fields[el]; if (!first) { os << " "; } first = false; os << getFixLengthString(f.name, f.dispWidth); } os << std::endl; } if (!onlyHeaders) { for (auto ®istry : values) { bool firstvalue = true; os << mPrefix; for (auto &el : fieldnames) { Field &f = fields[el]; if (!firstvalue) { os << " "; } firstvalue = false; if (registry.find(f.name) != registry.end()) { os << getFixLengthString(registry[f.name], f.dispWidth); } else { os << getFixLengthString("", f.dispWidth); } } os << std::endl; } } } void ColumnDisplayer::clear() { *this = ColumnDisplayer(mClflags, mCloptions); } Field::Field() { } Field::Field(string name, bool fixed, int minWidth) :name(name), fixedSize(fixed), fixedWidth(minWidth) { if (fixed) { this->dispWidth = minWidth; } } void Field::updateMaxValue(int newcandidate) { if (newcandidate > this->maxValueLength) { this->maxValueLength = newcandidate; } } std::unique_ptr PlatformDirectories::getPlatformSpecificDirectories() { #ifdef _WIN32 return std::make_unique(); #elif defined(__APPLE__) return std::make_unique(); #else return std::make_unique(); #endif } #ifdef _WIN32 fs::path WindowsDirectories::configDirPath() { wchar_t szPath[MAX_PATH]; if (GetModuleFileNameW(NULL, szPath, MAX_PATH) == 0) { return {}; } fs::path folder = fs::path(szPath).parent_path() / ".megaCmd"; auto suffix = _wgetenv(L"MEGACMD_WORKING_FOLDER_SUFFIX"); if (suffix != nullptr) { folder += "_"; folder += suffix; } folder = nonMaxPathLimitedPath(folder); // prepend //?/ return folder; } std::wstring getNamedPipeName() { std::wstring name = L"\\\\.\\pipe\\megacmdpipe_"; wchar_t username[UNLEN + 1]; DWORD username_len = UNLEN + 1; wchar_t *suffix; GetUserNameW(username, &username_len); name += username; suffix = _wgetenv(L"MEGACMD_PIPE_SUFFIX"); if (suffix != nullptr) { name += L"_"; name += suffix; } return name; } #else // !defined(_WIN32) std::string PosixDirectories::homeDirPath() { const char *homedir = getenv("HOME"); if (homedir != nullptr) { return homedir; } struct passwd pwd = {}; struct passwd *pwdresult = nullptr; long int bufsize = sysconf(_SC_GETPW_R_SIZE_MAX); bufsize = bufsize == -1 ? 1024 : bufsize; auto pwdbuf = std::unique_ptr(new char[bufsize]); if (getpwuid_r(getuid(), &pwd, pwdbuf.get(), bufsize, &pwdresult)) { std::cerr << "Warn: Could not get HOME folder from getpwuid_r. errno = " << errno << std::endl; return std::string(); } return std::string(pwd.pw_dir); } fs::path PosixDirectories::configDirPath() { std::string home = homeDirPath(); if (home.empty()) { return noHomeFallbackFolder(); } struct stat path_stat = {}; bool exists = !stat(home.c_str(), &path_stat) && S_ISDIR(path_stat.st_mode); return exists ? home.append("/.megaCmd") : noHomeFallbackFolder(); } string PosixDirectories::noHomeFallbackFolder() { return std::string("/tmp/megacmd-").append(std::to_string(getuid())); } #ifdef __APPLE__ fs::path MacOSDirectories::runtimeDirPath() { std::string home = homeDirPath(); if (home.empty()) { // fallback to Posix: return PosixDirectories::runtimeDirPath(); } auto cachesPath = std::string(home).append("/Library/Caches"); struct stat path_stat = {}; bool exists = !stat(cachesPath.c_str(), &path_stat) && S_ISDIR(path_stat.st_mode); return exists ? cachesPath.append("/megacmd.mac") : noHomeFallbackFolder(); } #endif // !defined(__APPLE__) std::string getOrCreateSocketPath(bool createDirectory) { auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); auto socketFolder = dirs->runtimeDirPath(); if (socketFolder.empty()) { std::cerr << "FATAL: Could not get runtime folder for socket path" << std::endl; throw std::runtime_error("Could not get runtime folder for socket path"); } const char *sockname_c = getenv("MEGACMD_SOCKET_NAME"); std::string sockname = sockname_c != nullptr ? std::string(sockname_c) : "megacmd.socket"; static auto MAX_SOCKET_PATH = sizeof(sockaddr_un::sun_path) / sizeof(decltype(sockaddr_un::sun_path[0])); if ((socketFolder.string().size() + 1 + sockname.size()) >= (MAX_SOCKET_PATH - 1)) { if (createDirectory) { std::cerr << "WARN: socket path in runtime dir would exceed max size. Falling back to /tmp" << std::endl; } socketFolder = PosixDirectories::noHomeFallbackFolder(); } struct stat path_stat = {}; if (createDirectory) { bool exists = !stat(socketFolder.c_str(), &path_stat) && S_ISDIR(path_stat.st_mode); if (!exists && createDirectory) { mode_t mode = umask(0); bool failed = mkdir(socketFolder.c_str(), 0700) != 0; if (failed) { std::cerr << "Failed to create folder for unix socket: " << socketFolder << ": " << std::strerror(errno) << std::endl; } umask(mode); if (failed) { return std::string(); } } } return (socketFolder / sockname).string(); } #endif // ifdef(_WIN32) else } //end namespace MEGAcmd-2.5.2_Linux/src/megacmdcommonutils.h000066400000000000000000000500011516543156300207300ustar00rootroot00000000000000/** * @file src/megacmdcommonutils.h * @brief MEGAcmd: Auxiliary methods * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef MEGACMDCOMMONUTILS_H #define MEGACMDCOMMONUTILS_H #include "megacmd_utf8.h" #include #ifndef _WIN32 #include #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifndef UNUSED #define UNUSED(x) (void)(x) #endif #define MOVE_CAPTURE(x) x{std::move(x)} #define FWD_CAPTURE(x) x{std::forward(x)} #define CONST_CAPTURE(x) &x = std::as_const(x) using std::setw; using std::left; #ifndef _WIN32 #define ARRAYSIZE(a) (sizeof((a)) / sizeof(*(a))) #endif namespace megacmd { // output codes enum { MCMD_OK = 0, ///< Everything OK MCMD_CONFIRM_NO = -12, ///< User response to confirmation is "no" MCMD_EARGS = -51, ///< Wrong arguments MCMD_INVALIDEMAIL = -52, ///< Invalid email MCMD_NOTFOUND = -53, ///< Resource not found MCMD_INVALIDSTATE = -54, ///< Invalid state MCMD_INVALIDTYPE = -55, ///< Invalid type MCMD_NOTPERMITTED = -56, ///< Operation not allowed MCMD_NOTLOGGEDIN = -57, ///< Needs logging in MCMD_NOFETCH = -58, ///< Nodes not fetched MCMD_EUNEXPECTED = -59, ///< Unexpected failure MCMD_REQCONFIRM = -60, ///< Confirmation required MCMD_REQSTRING = -61, ///< String required MCMD_PARTIALOUT = -62, ///< Partial output provided MCMD_PARTIALERR = -63, ///< Partial error output provided MCMD_EXISTS = -64, ///< Resource already exists MCMD_REQRESTART = -71, ///< Restart required }; enum confirmresponse { MCMDCONFIRM_NO=0, MCMDCONFIRM_YES, MCMDCONFIRM_ALL, MCMDCONFIRM_NONE }; /* commands */ static std::vector validGlobalParameters {"v", "help"}; static std::vector localremotefolderpatterncommands {"sync", "fuse-add"}; static std::vector remotepatterncommands {"export", "attr"}; static std::vector remotefolderspatterncommands {"cd", "share"}; static std::vector multipleremotepatterncommands {"ls", "tree", "mkdir", "rm", "du", "find", "mv", "deleteversions", "cat", "mediainfo" #ifdef HAVE_LIBUV , "webdav", "ftp" #endif }; static std::vector remoteremotepatterncommands {"cp"}; static std::vector remotelocalpatterncommands {"get", "thumbnail", "preview"}; static std::vector localfolderpatterncommands {"lcd", "sync-ignore", "fuse-remove", "fuse-enable", "fuse-disable", "fuse-show", "fuse-config"}; static std::vector emailpatterncommands {"invite", "signup", "ipc", "users"}; static std::vector loginInValidCommands { "log", "debug", "speedlimit", "help", "logout", "version", "quit", "clear", "https", "exit", "errorcode", "proxy", "sync-config", "configure" #if defined(_WIN32) && defined(NO_READLINE) , "autocomplete", "codepage" #elif defined(_WIN32) , "unicode" #endif #if defined(_WIN32) || defined(__APPLE__) , "update" #endif }; static std::vector allValidCommands { "login", "signup", "confirm", "session", "mount", "ls", "cd", "log", "debug", "pwd", "lcd", "lpwd", "import", "masterkey", "put", "get", "attr", "userattr", "mkdir", "rm", "du", "mv", "cp", "sync", "sync-ignore", "export", "share", "invite", "ipc", "df", "showpcr", "users", "speedlimit", "killsession", "whoami", "help", "passwd", "reload", "logout", "version", "quit", "thumbnail", "preview", "find", "completion", "clear", "https", "sync-issues", "transfers", "exclude", "exit", "errorcode", "graphics", "cancel", "confirmcancel", "cat", "tree", "psa", "proxy", "sync-config", "configure", "mediainfo" #ifdef HAVE_LIBUV , "webdav", "ftp" #endif , "backup" , "deleteversions" #if defined(_WIN32) && defined(NO_READLINE) , "autocomplete", "codepage" #elif defined(_WIN32) , "unicode" #else , "permissions" #endif #if defined(_WIN32) || defined(__APPLE__) , "update" #endif #ifdef WITH_FUSE , "fuse-add" , "fuse-remove" , "fuse-enable" , "fuse-disable" , "fuse-show" , "fuse-config" #endif #if defined(DEBUG) || defined(MEGACMD_TESTING_CODE) , "echo" #endif }; static const int RESUME_SESSION_TIMEOUT = 10; std::string errorCodeStr(const std::error_code& ec); /* Files and folders */ //tests if a path is writable //TODO: move to fsAccess /** * @brief tests if a path is writable. * @param path utf-8 path * @return true if writable or couldn't say. */ bool canWrite(const std::string &path); bool isPublicLink(const std::string &link); bool isEncryptedLink(std::string link); std::string getPublicLinkHandle(const std::string &link); bool hasWildCards(std::string &what); /** * @brief Removes trailing path separators from the path. * @param path Path string to process (modified in place) * @return Path with trailing separators removed * * Handles simple cases: removes trailing '/' and '\' characters. */ std::string removeTrailingSeparators(std::string &path); /* Strings related */ std::string generateRandomAlphaNumericString(size_t len); std::vector split(const std::string& input, const std::string& pattern); long long charstoll(const char *instr); // trim from start std::string <rim(std::string &s, const char &c); std::string_view ltrim(const std::string_view s, const char &c); // trim at the end std::string &rtrim(std::string &s, const char &c); std::vector getlistOfWords(const char *ptr, bool escapeBackSlashInCompletion = false, bool ignoreTrailingSpaces = false); bool stringcontained(const char * s, std::vector list); char * dupstr(char* s); bool replace(std::string& str, const std::string& from, const std::string& to); void replaceAll(std::string& str, const std::string& from, const std::string& to); /** * @brief Converts a string to an integer. * * Parses the string as a base-10 integer. Must contain only digits with * optional leading sign ('+' or '-'). No whitespace allowed. * * @param str The string to convert. * @param failValue Return value on conversion failure. * @return Converted integer or failValue if invalid/out of range. */ int toInteger(const std::string &str, int failValue = -1); std::string joinStrings(const std::vector& vec, const char* delim = " ", bool quoted=true); std::string getFixLengthString(const std::string &origin, unsigned int size, const char delimm=' ', bool alignedright = false); std::string getRightAlignedString(const std::string origin, unsigned int minsize); bool startsWith(const std::string_view str, const std::string_view prefix); /* Vector related */ template std::vector operator+(const std::vector& a, const std::vector& b) { std::vector result = a; result.insert(result.end(), b.begin(), b.end()); return result; } template std::vector operator+(std::vector&& a, std::vector&& b) { a.reserve(a.size() + b.size()); a.insert(a.end(), std::make_move_iterator(b.begin()), std::make_move_iterator(b.end())); return std::move(a); } std::string toLower(const std::string& str); template OUTSTRING getLeftAlignedStr(T what, int n) { OUTSTRINGSTREAM os; os << setw(n) << left << what; return os.str(); } template OUTSTRING getRightAlignedStr(T what, int n) { OUTSTRINGSTREAM os; os << setw(n) << what; return os.str(); } void printCenteredLine(std::string msj, unsigned int width, bool encapsulated = true); void printCenteredContents(std::string msj, unsigned int width, bool encapsulated = true); void printCenteredContentsCerr(std::string msj, unsigned int width, bool encapsulated = true); template void printCenteredLine(Stream_T &os, std::string msj, unsigned int width, bool encapsulated = true); void printCenteredContents(OUTSTREAMTYPE &os, std::string msj, unsigned int width, bool encapsulated = true); template void printCenteredContentsT(WHERE &&o, const std::string &msj, unsigned int width, bool encapsulated) { OUTSTRINGSTREAM os; printCenteredContents(os, msj, width, encapsulated); o << os.str(); } template bool onlyZeroOrOneOf(Bools... args) { return (args + ...) <= 1; } template bool onlyZeroOf(Bools... args) { return (args + ...) == 0; } void printPercentageLineCerr(const char *title, long long completed, long long total, float percentDowloaded, bool cleanLineAfter = true); std::string wrapText(const std::string& input, std::size_t maxWidth, int indentSpaces = 0); /* Flags and Options */ int getFlag(const std::map *flags, const char * optname); std::string getOption(const std::map *cloptions, const char * optname, std::string defaultValue = ""); std::optional getOptionAsOptional(const std::map& cloptions, const char * optname); int getintOption(const std::map *cloptions, const char * optname, int defaultValue = 0); std::optional getIntOptional(const std::map& cloptions, const char* optName); void discardOptionsAndFlags(std::vector *ws); //This has been defined in megacmdutils.h because it depends on logging. If ever require offer a version without it here //bool setOptionsAndFlags(map *opts, map *flags, vector *ws, set vvalidOptions, bool global) /* Others */ std::string sizeToText(long long totalSize, bool equalizeUnitsLength = true, bool humanreadable = true); std::string sizeProgressToText(long long partialSize, long long totalSize, bool equalizeUnitsLength = true, bool humanreadable = true); int64_t textToSize(const char *text); std::string percentageToText(float percentage); unsigned int getNumberOfCols(unsigned int defaultwidth = 90); void sleepSeconds(int seconds); void sleepMilliSeconds(long microseconds); /** * @brief Validates email address format using basic checks. * @param email Email address to validate * @return true if email passes basic format validation, false otherwise * * This function performs just minimal validations, it's not a full RFC-compliant validator. */ bool isValidEmail(const std::string &email); #ifdef __linux__ std::string getCurrentExecPath(); #endif /* Properties */ std::string <rimProperty(std::string &s, const char &c); std::string &rtrimProperty(std::string &s, const char &c); std::string &trimProperty(std::string &what); std::string getPropertyFromFile(const fs::path &configFilePath, const char *propertyName); template T getValueFromFile(const fs::path &configFilePath, const char *propertyName, T defaultValue) { std::string propValue = getPropertyFromFile(configFilePath, propertyName); if (!propValue.size()) return defaultValue; T i; std::istringstream is(propValue); is >> i; return i; } class Field { public: Field(); Field(std::string name, bool fixed = false, int fixedWidth = 0); public: std::string name; int fixedWidth; bool fixedSize; int dispWidth = 0; int maxValueLength = 0; void updateMaxValue(int newcandidate); }; class ColumnDisplayer { public: ColumnDisplayer(std::map *clflags, std::map *cloptions); OUTSTRING str(bool printHeader = true); void printHeaders(OUTSTREAMTYPE &os); void print(OUTSTREAMTYPE &os, bool printHeader = true); void clear(); void addHeader(const std::string &name, bool fixed = true, int minWidth = 0); void addValue(const std::string &name, const std::string & value, bool replace = false); void endregistry(); void setPrefix(const std::string &prefix); private: std::map *mClflags; std::map *mCloptions; std::map fields; std::vector mFieldnames; std::vector> values; std::vector lengths; std::map currentRegistry; int currentlength = 0; int mUnfixedColsMinSize = 0; std::string mPrefix; void print(OUTSTREAMTYPE &os, int fullWidth, bool printHeader=true, bool onlyHeaders = false); }; /** * @name PlatformDirectories * @brief PlatformDirectories provides methods for accessing directories for storing user data for * MEGAcmd. * * Note: returned values are encoded in utf-8. * * +---------------------------------------------------------------------------------------------------------------------+ * | DirPath | Windows | Linux | macOS | Linux/macOS (no HOME fallback) | * |---------|----------------------|----------------|----------------------------------|--------------------------------| * | runtime | $EXECFOLDER/.megaCmd | $HOME/.megaCmd | $HOME/Library/Caches/megacmd.mac | /tmp/megacmd-UID/.megacmd | * | config | $EXECFOLDER/.megaCmd | $HOME/.megaCmd | $HOME/.megaCmd | /tmp/megacmd-UID/.megacmd | * +---------------------------------------------------------------------------------------------------------------------+ * */ class PlatformDirectories { public: static std::unique_ptr getPlatformSpecificDirectories(); virtual ~PlatformDirectories() = default; /** * @brief runtimeDirPath returns the base path for storing runtime files: * * Meant for sockets, named pipes, file locks, command history, etc. */ virtual fs::path runtimeDirPath() { return configDirPath(); } /** * @brief configDirPath returns the base path for storing configuration and data files. * * Meant for user-editable configuration files, data files that should not be deleted * (session credentials, SDK workding directory, logs, etc). */ virtual fs::path configDirPath() = 0; }; #ifdef _WIN32 class WindowsDirectories : public PlatformDirectories { fs::path configDirPath() override; }; std::wstring getNamedPipeName(); #else // !defined(_WIN32) class PosixDirectories : public PlatformDirectories { public: std::string homeDirPath(); virtual fs::path configDirPath() override; static std::string noHomeFallbackFolder(); }; #ifdef __APPLE__ class MacOSDirectories : public PosixDirectories { fs::path runtimeDirPath() override; }; #endif // defined(__APPLE__) std::string getOrCreateSocketPath(bool createDirectory); #endif // _WIN32 /** * @brief Common infrastructure for classes that are designed to have a single instance for * the whole lifetime of the application. This approach is used instead of singletons, * in order to take control of the lifetime of the instance, and to avoid the inherent issues * of static initialization and destruction order. */ template class BaseInstance { protected: inline static T* sInstance = nullptr; virtual ~BaseInstance() { // having a base class allows to set sInstance to nullptr // _after_ the (derived) Instance's destructor destroys mInstance, // thus allowing T's destructor to still access Instance::Get sInstance = nullptr; } }; template class Instance : protected BaseInstance { T mInstance; inline static std::mutex sPendingRogueOnesMutex; inline static std::condition_variable sPendingRogueOnesCV; inline static unsigned sPendingRogueOnes = 0; inline static bool sAssertOnDestruction = false; public: static bool waitForExplicitDependents() { // wait for rogue ones std::unique_lock lockGuard(sPendingRogueOnesMutex); if (!sPendingRogueOnesCV.wait_for(lockGuard, std::chrono::seconds(20), [](){return !sPendingRogueOnes;})) { std::cerr << "Shutdown gracetime for explicit dependents for Instance<" << typeid(T).name() << "> passed without success. Rogue ones = " << sPendingRogueOnes << ". Will remove the instance anyway." << std::endl; sAssertOnDestruction = true; return false; } return true; } class ExplicitDependent { public: ExplicitDependent() { std::lock_guard g(Instance::sPendingRogueOnesMutex); Instance::sPendingRogueOnes++; } virtual ~ExplicitDependent() { assert(!sAssertOnDestruction); { std::lock_guard g(Instance::sPendingRogueOnesMutex); Instance::sPendingRogueOnes--; } Instance::sPendingRogueOnesCV.notify_one(); } }; template Instance(Args&&... args) : mInstance(std::forward(args)...) { assert(!BaseInstance::sInstance && "There must be one and only one instance of this class"); BaseInstance::sInstance = &mInstance; } ~Instance() { bool explicitDependentsFinishedInTime = waitForExplicitDependents(); UNUSED(explicitDependentsFinishedInTime); assert(explicitDependentsFinishedInTime); } static T& Get() { assert(BaseInstance::sInstance && "Must create the unique instance before trying to retrieve it"); return *BaseInstance::sInstance; } #ifdef MEGACMD_TESTING_CODE static bool exists() { return BaseInstance::sInstance; } #endif //MEGACMD_TESTING_CODE }; /** * @brief general purpose scope guard class */ template class ScopeGuard { ExitCallback mExitCb; public: ScopeGuard(ExitCallback&& exitCb) : mExitCb{std::move(exitCb)} { } ~ScopeGuard() { mExitCb(); } }; template void timelyRetry(const std::chrono::duration<_Rep, _Period> &maxTime, const std::chrono::duration<_Rep2, _Period2> &step , Condition&& endCondition, What&& what) { using Step_t = std::chrono::duration<_Rep2, _Period2>; for (auto timeLeft = std::chrono::duration_cast(maxTime); !endCondition() && timeLeft > Step_t(0); timeLeft -= step) { std::this_thread::sleep_for(step); what(); } } class HammeringLimiter { int mLimitSecs; std::optional mLastCall; public: HammeringLimiter(int seconds) : mLimitSecs(seconds) {} // Returns true if run recently (or sets the last call to current time otherwise) bool runRecently() { auto now = std::chrono::steady_clock::now(); if (mLastCall && std::chrono::duration_cast(now - *mLastCall).count() <= mLimitSecs) { return true; } mLastCall = now; return false; } }; }//end namespace #endif // MEGACMDCOMMONUTILS_H MEGAcmd-2.5.2_Linux/src/megacmdexecuter.cpp000066400000000000000000014327151516543156300205570ustar00rootroot00000000000000/** * @file src/megacmdexecuter.cpp * @brief MEGAcmd: Executer of the commands * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdexecuter.h" #include "megaapi.h" #include "megacmd.h" #include "megacmdutils.h" #include "megacmdcommonutils.h" #include "configurationmanager.h" #include "megacmdlogger.h" #include "comunicationsmanager.h" #include "listeners.h" #include "megacmdversion.h" #include "sync_command.h" #include "sync_ignore.h" #include "megacmd_fuse.h" #include #include #include #include #include #include #include #ifdef MEGACMD_TESTING_CODE #include "../tests/common/Instruments.h" using TI = TestInstruments; #endif using namespace mega; using namespace std; namespace megacmd { static const char* rootnodenames[] = { "ROOT", "INBOX", "RUBBISH" }; static const char* rootnodepaths[] = { "/", "//in", "//bin" }; #define SSTR( x ) static_cast< const std::ostringstream & >( \ ( std::ostringstream() << std::dec << x ) ).str() #ifdef HAVE_GLOB_H std::vector resolvewildcard(const std::string& pattern) { vector filenames; glob_t glob_result; memset(&glob_result, 0, sizeof(glob_result)); if (!glob(pattern.c_str(), GLOB_TILDE, NULL, &glob_result)) { for(size_t i = 0; i < glob_result.gl_pathc; ++i) { filenames.push_back(std::string(glob_result.gl_pathv[i])); } } globfree(&glob_result); return filenames; } #endif #ifdef WITH_FUSE std::optional loadFuseConfigDelta(const std::map& cloptions) { FuseCommand::ConfigDelta configDelta; std::string enableAtStartupStr = getOption(&cloptions, "enable-at-startup", ""); if (!enableAtStartupStr.empty()) { if (enableAtStartupStr != "yes" && enableAtStartupStr != "no") { LOG_err << "Flag \"enable-at-startup\" can only be \"yes\" or \"no\""; return {}; } configDelta.mEnableAtStartup = (enableAtStartupStr == "yes"); } std::string persistentStr = getOption(&cloptions, "persistent", ""); if (!persistentStr.empty()) { if (persistentStr != "yes" && persistentStr != "no") { LOG_err << "Flag \"persistent\" can only be \"yes\" or \"no\""; return {}; } configDelta.mPersistent = (persistentStr == "yes"); } std::string readOnlyStr = getOption(&cloptions, "read-only", ""); if (!readOnlyStr.empty()) { if (readOnlyStr != "yes" && readOnlyStr != "no") { LOG_err << "Flag \"read-only\" can only be \"yes\" or \"no\""; return {}; } configDelta.mReadOnly = (readOnlyStr == "yes"); } configDelta.mName = getOptionAsOptional(cloptions, "name"); if (!configDelta.isAnyFlagSet()) { LOG_err << "At least one flag must be set"; return {}; } if (configDelta.isPersistentStartupInvalid()) { LOG_err << "A non-persistent mount cannot be enabled at startup"; return {}; } return configDelta; } #endif /** * @brief updateprompt updates prompt with the current user/location * @param api * @param handle */ void MegaCmdExecuter::updateprompt(MegaApi *api) { if (!api) api = this->api; MegaHandle handle = cwd; string newprompt; MegaNode *n = api->getNodeByHandle(handle); MegaUser *u = api->getMyUser(); if (u) { const char *email = u->getEmail(); newprompt.append(email); delete u; } if (n) { char *np = api->getNodePath(n); if (!newprompt.empty()) { newprompt.append(":"); } if (np) { newprompt.append(np); } delete n; delete []np; } if (getBlocked()) { newprompt.append("[BLOCKED]"); } if (newprompt.empty()) //i.e. !u && !n { newprompt = prompts[0]; } else { newprompt.append("$ "); } changeprompt(newprompt.c_str()); } MegaCmdExecuter::MegaCmdExecuter(MegaApi *api, MegaCmdLogger *loggerCMD, MegaCmdSandbox *sandboxCMD) : // Give a few seconds in order for key sharing to happen mFsAccessCMD(::mega::createFSA()), mDeferredSharedFoldersVerifier(std::chrono::seconds(5)), mSyncIssuesManager(api) { signingup = false; confirming = false; this->api = api; this->loggerCMD = loggerCMD; this->sandboxCMD = sandboxCMD; this->globalTransferListener = new MegaCmdGlobalTransferListener(api, sandboxCMD); api->addTransferListener(globalTransferListener); api->addGlobalListener(mSyncIssuesManager.getGlobalListener()); cwd = UNDEF; session = NULL; } MegaCmdExecuter::~MegaCmdExecuter() { delete globalTransferListener; } // list available top-level nodes and contacts/incoming shares void MegaCmdExecuter::listtrees() { for (int i = 0; i < (int)( sizeof rootnodenames / sizeof *rootnodenames ); i++) { OUTSTREAM << rootnodenames[i] << " on " << rootnodepaths[i] << endl; if (!api->isLoggedIn()) { break; //only show /root } } MegaShareList * msl = api->getInSharesList(); for (int i = 0; i < msl->size(); i++) { MegaShare *share = msl->get(i); MegaNode *n = api->getNodeByHandle(share->getNodeHandle()); OUTSTREAM << "INSHARE on //from/" << share->getUser() << ":" << n->getName() << " (" << getAccessLevelStr(share->getAccess()) << ")" << (!share->isVerified() ? " [UNVERIFIED]" : "") << endl; delete n; } delete ( msl ); } bool MegaCmdExecuter::includeIfIsExported(MegaApi *api, MegaNode * n, void *arg) { if (n->isExported()) { (( vector * )arg )->push_back(n->copy()); return true; } return false; } bool MegaCmdExecuter::includeIfIsShared(MegaApi *api, MegaNode * n, void *arg) { if (n->isShared()) { (( vector * )arg )->push_back(n->copy()); return true; } return false; } bool MegaCmdExecuter::includeIfIsPendingOutShare(MegaApi *api, MegaNode * n, void *arg) { MegaShareList* pendingoutShares = api->getPendingOutShares(n); if (pendingoutShares && pendingoutShares->size()) { (( vector * )arg )->push_back(n->copy()); return true; } if (pendingoutShares) { delete pendingoutShares; } return false; } bool MegaCmdExecuter::includeIfIsSharedOrPendingOutShare(MegaApi *api, MegaNode * n, void *arg) { if (n->isShared()) { (( vector * )arg )->push_back(n->copy()); return true; } MegaShareList* pendingoutShares = api->getPendingOutShares(n); if (pendingoutShares && pendingoutShares->size()) { (( vector * )arg )->push_back(n->copy()); return true; } if (pendingoutShares) { delete pendingoutShares; } return false; } struct patternNodeVector { string pattern; bool usepcre; vector *nodesMatching; }; struct criteriaNodeVector { string pattern; bool usepcre; m_time_t minTime; m_time_t maxTime; int64_t maxSize; int64_t minSize; int mType = MegaNode::TYPE_UNKNOWN; vector *nodesMatching; }; bool MegaCmdExecuter::includeIfMatchesPattern(MegaApi *api, MegaNode * n, void *arg) { struct patternNodeVector *pnv = (struct patternNodeVector*)arg; if (patternMatches(n->getName(), pnv->pattern.c_str(), pnv->usepcre)) { pnv->nodesMatching->push_back(n->copy()); return true; } return false; } bool MegaCmdExecuter::includeIfMatchesCriteria(MegaApi *api, MegaNode * n, void *arg) { struct criteriaNodeVector *pnv = (struct criteriaNodeVector*)arg; if (pnv->mType != MegaNode::TYPE_UNKNOWN && n->getType() != pnv->mType ) { return false; } if ( pnv->maxTime != -1 && (n->getModificationTime() >= pnv->maxTime) ) { return false; } if ( pnv->minTime != -1 && (n->getModificationTime() <= pnv->minTime) ) { return false; } if ( pnv->maxSize != -1 && (n->getType() != MegaNode::TYPE_FILE || (n->getSize() > pnv->maxSize) ) ) { return false; } if ( pnv->minSize != -1 && (n->getType() != MegaNode::TYPE_FILE || (n->getSize() < pnv->minSize) ) ) { return false; } if (!patternMatches(n->getName(), pnv->pattern.c_str(), pnv->usepcre)) { return false; } pnv->nodesMatching->push_back(n->copy()); return true; } bool MegaCmdExecuter::processTree(MegaNode *n, bool processor(MegaApi *, MegaNode *, void *), void *( arg )) { if (!n) { return false; } bool toret = true; MegaNodeList *children = api->getChildren(n); if (children) { for (int i = 0; i < children->size(); i++) { bool childret = processTree(children->get(i), processor, arg); toret = toret && childret; } delete children; } bool currentret = processor(api, n, arg); return toret && currentret; } // returns node pointer determined by path relative to cwd // path naming conventions: // * path is relative to cwd // * /path is relative to ROOT // * //in is in INBOX // * //bin is in RUBBISH // * X: is user X's INBOX // * X:SHARE is share SHARE from user X // * H:HANDLE is node with handle HANDLE // * : and / filename components, as well as the \, must be escaped by \. // (correct UTF-8 encoding is assumed) // returns nullptr if path malformed or not found std::unique_ptr MegaCmdExecuter::nodebypath(const char* ptr, string* user, string* namepart) { if (ptr && ptr[0] == 'H' && ptr[1] == ':') { std::unique_ptr n(api->getNodeByHandle(api->base64ToHandle(ptr+2))); if (n) { return n; } } string rest; std::unique_ptr baseNode(getBaseNode(ptr, rest)); if (baseNode && !rest.size()) { return baseNode; } if (!rest.size() && !baseNode) { string path(ptr); if (path.size() && path.find("@") != string::npos && path.find_last_of(":") == (path.size() - 1)) { if (user) { *user = path.substr(0,path.size()-1); } } } while (baseNode) { size_t possep = rest.find('/'); string curName = rest.substr(0,possep); if (curName != ".") { std::unique_ptr nextNode; if (curName == "..") { nextNode.reset(api->getParentNode(baseNode.get())); } else { replaceAll(curName, "\\\\", "\\"); //unescape '\\' replaceAll(curName, "\\ ", " "); //unescape '\ ' bool isversion = nodeNameIsVersion(curName); if (isversion) { std::unique_ptr childNode(api->getChildNode(baseNode.get(), curName.substr(0,curName.size()-11).c_str())); if (childNode) { std::unique_ptr versionNodes(api->getVersions(childNode.get())); if (versionNodes) { for (int i = 0; i < versionNodes->size(); i++) { MegaNode* versionNode = versionNodes->get(i); if (curName.substr(curName.size()-10) == SSTR(versionNode->getModificationTime())) { nextNode.reset(versionNode->copy()); break; } } } } } else { nextNode.reset(api->getChildNode(baseNode.get(), curName.c_str())); } } // mv command target? return name part of not found if (namepart && !nextNode && (possep == string::npos)) //if this is the last part, we will pass that one, so that a mv command know the name to give the new node { *namepart = rest; return baseNode; } baseNode = std::move(nextNode); } if (possep != string::npos && possep != (rest.size() - 1)) { rest = rest.substr(possep+1); } else { return baseNode; } } return nullptr; } /** * @brief MegaCmdExecuter::getPathsMatching Gets paths of nodes matching a pattern given its path parts and a parent node * * @param parentNode node for reference for relative paths * @param pathParts path pattern (separated in strings) * @param pathsMatching for the returned paths * @param usepcre use PCRE expressions if available * @param pathPrefix prefix to append to paths */ void MegaCmdExecuter::getPathsMatching(MegaNode *parentNode, deque pathParts, vector *pathsMatching, bool usepcre, string pathPrefix) { if (!pathParts.size()) { return; } string currentPart = pathParts.front(); pathParts.pop_front(); if (currentPart == "." || currentPart == "") { if (pathParts.size() == 0 /*&& currentPart == "."*/) //last leave. // for consistency we also take parent when ended in / even if it's not a folder { pathsMatching->push_back(pathPrefix+currentPart); } //ignore this part return getPathsMatching(parentNode, pathParts, pathsMatching, usepcre, pathPrefix+"./"); } if (currentPart == "..") { if (parentNode->getParentHandle()) { if (!pathParts.size()) { pathsMatching->push_back(pathPrefix+".."); } unique_ptr p(api->getNodeByHandle(parentNode->getParentHandle())); return getPathsMatching(p.get(), pathParts, pathsMatching, usepcre, pathPrefix+"../"); } else { return; //trying to access beyond root node } } MegaNodeList* children = api->getChildren(parentNode); if (children) { bool isversion = nodeNameIsVersion(currentPart); for (int i = 0; i < children->size(); i++) { MegaNode *childNode = children->get(i); // get childname from its path: alternative: childNode->getName() char *childNodePath = api->getNodePath(childNode); char *aux; aux = childNodePath+strlen(childNodePath); while (aux>childNodePath){ if (*aux=='/' && *(aux-1) != '\\') break; aux--; } if (*aux=='/') aux++; string childname(aux); delete []childNodePath; if (isversion) { if (childNode && patternMatches(childname.c_str(), currentPart.substr(0,currentPart.size()-11).c_str(), usepcre)) { MegaNodeList *versionNodes = api->getVersions(childNode); if (versionNodes) { for (int i = 0; i < versionNodes->size(); i++) { MegaNode *versionNode = versionNodes->get(i); if ( currentPart.substr(currentPart.size()-10) == SSTR(versionNode->getModificationTime()) ) { if (pathParts.size() == 0) //last leave { pathsMatching->push_back(pathPrefix+childname+"#"+SSTR(versionNode->getModificationTime())); //TODO: def version separator elswhere } else { getPathsMatching(versionNode, pathParts, pathsMatching, usepcre,pathPrefix+childname+"#"+SSTR(versionNode->getModificationTime())+"/"); } break; } } delete versionNodes; } } } else { if (patternMatches(childname.c_str(), currentPart.c_str(), usepcre)) { if (pathParts.size() == 0) //last leave { pathsMatching->push_back(pathPrefix+childname); } else { getPathsMatching(childNode, pathParts, pathsMatching, usepcre,pathPrefix+childname+"/"); } } } } delete children; } } /** * @brief MegaCmdExecuter::nodesPathsbypath returns paths of nodes that match a determined by path pattern * path naming conventions: * path is relative to cwd * /path is relative to ROOT * //in is in INBOX * //bin is in RUBBISH * X: is user X's INBOX * X:SHARE is share SHARE from user X * H:HANDLE is node with handle HANDLE * : and / filename components, as well as the \, must be escaped by \. * (correct UTF-8 encoding is assumed) * * You take the ownership of the returned value * @param ptr * @param usepcre use PCRE expressions if available * @param user * @param namepart * @return */ vector * MegaCmdExecuter::nodesPathsbypath(const char* ptr, bool usepcre, string* user, string* namepart) { vector *pathsMatching = new vector (); if (ptr && ptr[0] == 'H' && ptr[1] == ':') { MegaNode * n = api->getNodeByHandle(api->base64ToHandle(ptr+2)); if (n) { char * nodepath = api->getNodePath(n); pathsMatching->push_back(nodepath); delete []nodepath; return pathsMatching; } } string rest; bool isrelative; MegaNode *baseNode = getBaseNode(ptr, rest, &isrelative); if (baseNode) { string pathPrefix; if (!isrelative) { char * nodepath = api->getNodePath(baseNode); pathPrefix=nodepath; if (pathPrefix.size() && pathPrefix.at(pathPrefix.size()-1)!='/') pathPrefix+="/"; delete []nodepath; } if (string(ptr).find("//from/") == 0) { pathPrefix.insert(0,"//from/"); } deque c; getPathParts(rest, &c); if (!c.size()) { char * nodepath = api->getNodePath(baseNode); pathsMatching->push_back(nodepath); delete []nodepath; } else { getPathsMatching((MegaNode *)baseNode, c, (vector *)pathsMatching, usepcre, pathPrefix); } delete baseNode; } else if (!strncmp(ptr,"//from/",max(3,min((int)strlen(ptr)-1,7)))) //pattern trying to match inshares { string matching = ptr; unescapeifRequired(matching); unique_ptr inShares(api->getInSharesList()); if (inShares) { for (int i = 0; i < inShares->size(); i++) { unique_ptr n(api->getNodeByHandle(inShares->get(i)->getNodeHandle())); string tomatch = string("//from/")+inShares->get(i)->getUser() + ":"+n->getName(); if (patternMatches(tomatch.c_str(), matching.c_str(), false)) { pathsMatching->push_back(tomatch); } } } } return pathsMatching; } /** * You take the ownership of the nodes added in nodesMatching * @brief getNodesMatching * @param parentNode * @param c * @param nodesMatching */ void MegaCmdExecuter::getNodesMatching(MegaNode *parentNode, deque pathParts, vector>& nodesMatching, bool usepcre) { if (!pathParts.size()) { return; } string currentPart = pathParts.front(); pathParts.pop_front(); if (currentPart == "." || currentPart == "") { if (pathParts.size() == 0 /*&& currentPart == "."*/) //last leave. // for consistency we also take parent when ended in / even if it's not a folder { if (parentNode) { nodesMatching.emplace_back(parentNode->copy()); return; } } else { //ignore this part return getNodesMatching(parentNode, pathParts, nodesMatching, usepcre); } } if (currentPart == "..") { if (parentNode->getParentHandle()) { MegaNode *newparentNode = api->getNodeByHandle(parentNode->getParentHandle()); if (!pathParts.size()) //last leave { if (newparentNode) { nodesMatching.emplace_back(newparentNode); } return; } else { getNodesMatching(newparentNode, pathParts, nodesMatching, usepcre); delete newparentNode; return; } } else { return; //trying to access beyond root node } } MegaNodeList* children = api->getChildren(parentNode); if (children) { bool isversion = nodeNameIsVersion(currentPart); for (int i = 0; i < children->size(); i++) { MegaNode *childNode = children->get(i); if (isversion) { if (childNode && patternMatches(childNode->getName(), currentPart.substr(0,currentPart.size()-11).c_str(), usepcre)) { MegaNodeList *versionNodes = api->getVersions(childNode); if (versionNodes) { for (int i = 0; i < versionNodes->size(); i++) { MegaNode *versionNode = versionNodes->get(i); if ( currentPart.substr(currentPart.size()-10) == SSTR(versionNode->getModificationTime()) ) { if (pathParts.size() == 0) //last leave { nodesMatching.emplace_back(versionNode->copy()); } else { getNodesMatching(versionNode, pathParts, nodesMatching, usepcre); } break; } } delete versionNodes; } } } else { if (patternMatches(childNode->getName(), currentPart.c_str(), usepcre)) { if (pathParts.size() == 0) //last leave { nodesMatching.emplace_back(childNode->copy()); } else { getNodesMatching(childNode, pathParts, nodesMatching, usepcre); } } } } delete children; } } // TODO: docs MegaNode * MegaCmdExecuter::getBaseNode(string thepath, string &rest, bool *isrelative) { if (isrelative != NULL) { *isrelative = false; } MegaNode *baseNode = NULL; rest = string(); if (thepath == "//bin") { baseNode = api->getRubbishNode(); rest = ""; } else if (thepath == "//in") { baseNode = api->getVaultNode(); rest = ""; } else if (thepath == "/") { baseNode = api->getRootNode(); rest = ""; } else if (thepath.find("//bin/") == 0 ) { baseNode = api->getRubbishNode(); rest = thepath.substr(6); } else if (thepath.find("//in/") == 0 ) { baseNode = api->getVaultNode(); rest = thepath.substr(5); } else if (thepath.find("/") == 0 && !(thepath.find("//from/") == 0 )) { if ( thepath.find("//f") == 0 && string("//from/").find(thepath.substr(0,thepath.find("*"))) == 0) { return NULL; } baseNode = api->getRootNode(); rest = thepath.substr(1); } else if ( thepath == "//from/*" ) { return NULL; } else { bool from = false; if (thepath.find("//from/") == 0 && thepath != "//from/*" ) { thepath = thepath.substr(7); from = true; } size_t possep = thepath.find('/'); string base = thepath.substr(0,possep); size_t possepcol = base.find(":"); size_t possepat = base.find("@"); if ( possepcol != string::npos && possepat != string::npos && possepat < possepcol && possepcol < (base.size() + 1) ) { string userName = base.substr(0,possepcol); string inshareName = base.substr(possepcol + 1); unescapeifRequired(inshareName); MegaUserList * usersList = api->getContacts(); MegaUser *u = NULL; for (int i = 0; i < usersList->size(); i++) { if (usersList->get(i)->getEmail() == userName) { u = usersList->get(i); break; } } if (u) { MegaNodeList* inshares = api->getInShares(u); for (int i = 0; i < inshares->size(); i++) { if (inshares->get(i)->getName() == inshareName) { baseNode = inshares->get(i)->copy(); break; } } delete inshares; } delete usersList; if (possep != string::npos && possep != (thepath.size() - 1) ) { rest = thepath.substr(possep+1); } } else if (!from) { baseNode = api->getNodeByHandle(cwd); rest = thepath; if (isrelative != NULL) { *isrelative = true; } } } return baseNode; } void MegaCmdExecuter::getPathParts(string path, deque *c) { size_t possep = path.find('/'); do { string curName = path.substr(0,possep); replaceAll(curName, "\\\\", "\\"); //unescape '\\' replaceAll(curName, "\\ ", " "); //unescape '\ ' c->push_back(curName); if (possep != string::npos && possep < (path.size()+1)) { path = path.substr(possep+1); } else { break; } possep = path.find('/'); if (possep == string::npos || !(possep < (path.size()+1))) { string curName = path.substr(0,possep); replaceAll(curName, "\\\\", "\\"); //unescape '\\' replaceAll(curName, "\\ ", " "); //unescape '\ ' c->push_back(curName); break; } } while (path.size()); } bool MegaCmdExecuter::decryptLinkIfEncrypted(MegaApi *api, std::string &publicLink, std::map *cloptions) { if (isEncryptedLink(publicLink)) { string linkPass = getOption(cloptions, "password", ""); if (!linkPass.size()) { linkPass = askforUserResponse("Enter password: "); } if (linkPass.size()) { std::unique_ptrmegaCmdListener = std::make_unique(nullptr); api->decryptPasswordProtectedLink(publicLink.c_str(), linkPass.c_str(), megaCmdListener.get()); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "decrypt password protected link")) { publicLink = megaCmdListener->getRequest()->getText(); } else { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Invalid password"; return false; } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Need a password to decrypt provided link (--password=PASSWORD)"; return false; } } return true; } bool MegaCmdExecuter::checkAndInformPSA(CmdPetition *inf, bool enforce) { bool toret = false; m_time_t now = m_time(); if ( enforce || (now - sandboxCMD->timeOfPSACheck > 86400) ) { MegaUser *u = api->getMyUser(); if (!u) { LOG_debug << "No PSA request (not logged into an account)"; return toret; //Not logged in, no reason to get PSA } delete u; sandboxCMD->timeOfPSACheck = now; LOG_verbose << "Getting PSA"; MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->getPSA(megaCmdListener); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() == MegaError::API_ENOENT) { LOG_verbose << "No new PSA available"; sandboxCMD->lastPSAnumreceived = max(0,sandboxCMD->lastPSAnumreceived); } else if(checkNoErrors(megaCmdListener->getError(), "get PSA")) { int number = static_cast(megaCmdListener->getRequest()->getNumber()); std::string name = megaCmdListener->getRequest()->getName(); std::string text = megaCmdListener->getRequest()->getText(); sandboxCMD->lastPSAnumreceived = number; LOG_debug << "Informing PSA #" << number << ": " << name; stringstream oss; oss << "<" << name << ">"; oss << text; string action = megaCmdListener->getRequest()->getPassword(); string link = megaCmdListener->getRequest()->getLink(); if (action.empty()) { action = "read more: "; } if (link.size()) { oss << endl << action << ": " << link; } oss << endl << " Execute \"psa --discard\" to stop seeing this message"; if (inf) { informStateListener(oss.str(), inf->clientID); } else { broadcastMessage(oss.str()); } toret = true; } delete megaCmdListener; } return toret; } std::string MegaCmdExecuter::formatErrorAndMaySetErrorCode(const MegaError &error) { auto code = error.getErrorCode(); if (code == MegaError::API_OK) { return std::string(); } setCurrentThreadOutCode(code); if (code == MegaError::API_EBLOCKED) { auto reason = sandboxCMD->getReasonblocked(); auto reasonStr = std::string("Account blocked."); if (!reason.empty()) { reasonStr.append("Reason: ").append(reason); } return reasonStr; } else if (code == MegaError::API_EPAYWALL || (code == MegaError::API_EOVERQUOTA && sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_RED)) { return "Reached storage quota. You can change your account plan to increase your quota limit. See \"help --upgrade\" for further details"; } return error.getErrorString(); } bool MegaCmdExecuter::checkNoErrors(int errorCode, const string &message) { MegaErrorPrivate e(errorCode); return checkNoErrors(&e, message); } bool MegaCmdExecuter::checkNoErrors(MegaError *error, const string &message, SyncError syncError) { if (!error) { LOG_fatal << "No MegaError at request: " << message; assert(false); return false; } if (error->getErrorCode() == MegaError::API_OK) { if (syncError) { std::unique_ptr megaSyncErrorCode(MegaSync::getMegaSyncErrorCode(syncError)); LOG_info << "Able to " << message << ", but received syncError: " << megaSyncErrorCode.get(); } return true; } auto logErrMessage = std::string("Failed to ").append(message).append(": ").append(formatErrorAndMaySetErrorCode(*error)); if (syncError) { std::unique_ptr megaSyncErrorCode(MegaSync::getMegaSyncErrorCode(syncError)); logErrMessage.append(". ").append(megaSyncErrorCode.get()); } LOG_err << logErrMessage; return false; } bool MegaCmdExecuter::checkNoErrors(::mega::SynchronousRequestListener *listener, const std::string &message, ::mega::SyncError syncError) { assert(listener); listener->wait(); assert(listener->getError()); return checkNoErrors(listener->getError(), message, syncError); } /** * @brief MegaCmdExecuter::nodesbypath * returns nodes determined by path pattern * path naming conventions: * path is relative to cwd * /path is relative to ROOT * //in is in INBOX * //bin is in RUBBISH * X: is user X's INBOX * X:SHARE is share SHARE from user X * H:HANDLE is node with handle HANDLE * : and / filename components, as well as the \, must be escaped by \. * (correct UTF-8 encoding is assumed) * @param ptr * @param usepcre use PCRE expressions if available * @param user * @return List of std::unique_ptr. All are guaranteed to be non-null. * The list is empty if the path is malformed or not found. */ vector> MegaCmdExecuter::nodesbypath(const char* ptr, bool usepcre, string* user) { vector> nodesMatching; if (ptr && ptr[0] == 'H' && ptr[1] == ':') { MegaNode* n = api->getNodeByHandle(api->base64ToHandle(ptr+2)); if (n) { nodesMatching.emplace_back(n); return nodesMatching; } } string rest; std::unique_ptr baseNode(getBaseNode(ptr, rest)); if (baseNode) { if (rest.empty()) { nodesMatching.emplace_back(std::move(baseNode)); return nodesMatching; } deque c; getPathParts(rest, &c); if (c.empty()) { nodesMatching.emplace_back(std::move(baseNode)); } else { getNodesMatching(baseNode.get(), c, nodesMatching, usepcre); } } else if (!strncmp(ptr, "//from/", max(3, min(static_cast(strlen(ptr)-1), 7)))) //pattern trying to match inshares { unique_ptr inShares(api->getInSharesList()); if (inShares) { string matching = ptr; unescapeifRequired(matching); for (int i = 0; i < inShares->size(); i++) { std::unique_ptr n(api->getNodeByHandle(inShares->get(i)->getNodeHandle())); if (!n) continue; string tomatch = string("//from/") + inShares->get(i)->getUser() + ":" + n->getName(); if (patternMatches(tomatch.c_str(), matching.c_str(), false)) { nodesMatching.emplace_back(std::move(n)); } } } } return nodesMatching; } void MegaCmdExecuter::dumpNode(MegaNode* n, const char *timeFormat, std::map *clflags, std::map *cloptions, int extended_info, bool showversions, int depth, const char* title) { if (!title && !( title = n->getName())) { title = "CRYPTO_ERROR"; } if (depth) { for (int i = depth - 1; i--; ) { OUTSTREAM << "\t"; } } OUTSTREAM << title; if (getFlag(clflags, "show-handles")) { OUTSTREAM << " getHandle()) << ">"; } if (extended_info) { OUTSTREAM << " ("; switch (n->getType()) { case MegaNode::TYPE_FILE: OUTSTREAM << sizeToText(n->getSize(), false); if (INVALID_HANDLE != n->getPublicHandle()) // if (n->isExported()) { OUTSTREAM << ", shared as exported"; if (n->getExpirationTime()) { OUTSTREAM << " temporal"; } else { OUTSTREAM << " permanent"; } OUTSTREAM << " file link"; if (extended_info > 1) { char * publicLink = n->getPublicLink(); OUTSTREAM << ": " << publicLink; if (n->getExpirationTime()) { if (n->isExpired()) { OUTSTREAM << " expired at "; } else { OUTSTREAM << " expires at "; } OUTSTREAM << getReadableTime(n->getExpirationTime(), timeFormat); } if (n->getWritableLinkAuthKey()) { string authKey(n->getWritableLinkAuthKey()); if (authKey.size()) { OUTSTREAM << " AuthKey="<< authKey; } } delete []publicLink; } } break; case MegaNode::TYPE_FOLDER: { OUTSTREAM << "folder"; MegaShareList* outShares = api->getOutShares(n); if (outShares) { for (int i = 0; i < outShares->size(); i++) { auto outShare = outShares->get(i); if (outShare->getNodeHandle() == n->getHandle() && !outShare->isPending()/*shall be listed via getPendingOutShares*/) { OUTSTREAM << ", shared with " << outShare->getUser() << ", access " << getAccessLevelStr(outShare->getAccess()) << (outShare->isVerified() ? "" : "[UNVERIFIED]"); } } MegaShareList* pendingoutShares = api->getPendingOutShares(n); if (pendingoutShares) { for (int i = 0; i < pendingoutShares->size(); i++) { auto pendingoutShare = pendingoutShares->get(i); if (pendingoutShare->getNodeHandle() == n->getHandle()) { OUTSTREAM << ", shared (still pending)"; if (pendingoutShare->getUser()) { OUTSTREAM << " with " << pendingoutShare->getUser(); } OUTSTREAM << " access " << getAccessLevelStr(pendingoutShare->getAccess()) << (pendingoutShare->isVerified() ? "" : "[UNVERIFIED]"); } } delete pendingoutShares; } if (UNDEF != n->getPublicHandle()) { OUTSTREAM << ", shared as exported"; if (n->getExpirationTime()) { OUTSTREAM << " temporal"; } else { OUTSTREAM << " permanent"; } OUTSTREAM << " folder link"; if (extended_info > 1) { std::unique_ptr publicLink(n->getPublicLink()); OUTSTREAM << ": " << publicLink.get(); if (n->getWritableLinkAuthKey()) { constexpr const char *prefix = "https://mega.nz/folder/"; string authKey(n->getWritableLinkAuthKey()); string nodeLink(publicLink.get()); if (authKey.size() && nodeLink.rfind(prefix, 0) == 0) { string authToken = nodeLink.substr(strlen(prefix)).append(":").append(authKey); OUTSTREAM << " AuthToken="<< authToken; } } } } delete outShares; } if (n->isInShare()) { OUTSTREAM << ", inbound " << getAccessLevelStr(api->getAccess(n)) << " share"; } break; } case MegaNode::TYPE_ROOT: { OUTSTREAM << "root node"; break; } case MegaNode::TYPE_INCOMING: { OUTSTREAM << "inbox"; break; } case MegaNode::TYPE_RUBBISH: { OUTSTREAM << "rubbish"; break; } default: OUTSTREAM << "unsupported type: " << n->getType() <<" , please upgrade"; } OUTSTREAM << ")" << ( n->isRemoved() ? " (DELETED)" : "" ); } OUTSTREAM << endl; if (showversions && n->getType() == MegaNode::TYPE_FILE) { std::unique_ptr versionNodes(api->getVersions(n)); if (versionNodes) { for (int i = 0; i < versionNodes->size(); i++) { MegaNode *versionNode = versionNodes->get(i); if (versionNode->getHandle() != n->getHandle()) { string fullname(n->getName()?n->getName():"NO_NAME"); fullname += "#"; fullname += SSTR(versionNode->getModificationTime()); OUTSTREAM << " " << fullname; if (versionNode->getName() && !strcmp(versionNode->getName(),n->getName()) ) { OUTSTREAM << "[" << (versionNode->getName()?versionNode->getName():"NO_NAME") << "]"; } OUTSTREAM << " (" << getReadableTime(versionNode->getModificationTime(), timeFormat) << ")"; if (extended_info) { OUTSTREAM << " (" << sizeToText(versionNode->getSize(), false) << ")"; } if (getFlag(clflags, "show-handles")) { OUTSTREAM << " getHandle()) << ">"; } OUTSTREAM << endl; } } } } } // 12 is the length of "999000000000" i.e 999 GiB. static constexpr size_t MAX_SIZE_LEN = 12; static unsigned int DUMPNODE_SIZE_WIDTH = static_cast((MAX_SIZE_LEN > strlen("SIZE ")) ? MAX_SIZE_LEN : strlen("SIZE ")); void MegaCmdExecuter::dumpNodeSummaryHeader(const char *timeFormat, std::map *clflags, std::map *cloptions) { int datelength = int(getReadableTime(m_time(), timeFormat).size()); OUTSTREAM << "FLAGS"; OUTSTREAM << " "; OUTSTREAM << getFixLengthString("VERS", 4); OUTSTREAM << " "; OUTSTREAM << getFixLengthString("SIZE ", DUMPNODE_SIZE_WIDTH - 1 /*-1 to compensate FLAGS header*/, ' ', true); OUTSTREAM << " "; OUTSTREAM << getFixLengthString("DATE ", datelength+1, ' ', true); if (getFlag(clflags, "show-handles")) { OUTSTREAM << " "; OUTSTREAM << " HANDLE"; } OUTSTREAM << " "; OUTSTREAM << "NAME"; OUTSTREAM << endl; } void MegaCmdExecuter::dumpNodeSummary(MegaNode *n, const char *timeFormat, std::map *clflags, std::map *cloptions, bool humanreadable, const char *title) { if (!title && !( title = n->getName())) { title = "CRYPTO_ERROR"; } switch (n->getType()) { case MegaNode::TYPE_FILE: OUTSTREAM << "-"; break; case MegaNode::TYPE_FOLDER: OUTSTREAM << "d"; break; case MegaNode::TYPE_ROOT: OUTSTREAM << "r"; break; case MegaNode::TYPE_INCOMING: OUTSTREAM << "i"; break; case MegaNode::TYPE_RUBBISH: OUTSTREAM << "b"; break; default: OUTSTREAM << "x"; break; } if (UNDEF != n->getPublicHandle()) { OUTSTREAM << "e"; if (n->getExpirationTime()) { OUTSTREAM << "t"; } else { OUTSTREAM << "p"; } } else { OUTSTREAM << "--"; } if (n->isShared()) { OUTSTREAM << "s"; } else if (n->isInShare()) { OUTSTREAM << "i"; } else { OUTSTREAM << "-"; } OUTSTREAM << " "; if (n->isFile()) { MegaNodeList *versionNodes = api->getVersions(n); int nversions = versionNodes ? versionNodes->size() : 0; if (nversions > 999) { OUTSTREAM << getFixLengthString(">999", 4, ' ', true); } else { OUTSTREAM << getFixLengthString(SSTR(nversions), 4, ' ', true); } delete versionNodes; } else { OUTSTREAM << getFixLengthString("-", 4, ' ', true); } OUTSTREAM << " "; if (n->isFile()) { if (humanreadable) { OUTSTREAM << getFixLengthString(sizeToText(n->getSize()), DUMPNODE_SIZE_WIDTH, ' ', true); } else { OUTSTREAM << getFixLengthString(SSTR(n->getSize()), DUMPNODE_SIZE_WIDTH, ' ', true); } } else { OUTSTREAM << getFixLengthString( "-", (unsigned int)std::max(MAX_SIZE_LEN, strlen("SIZE ")), ' ', true); } if (n->isFile() && !getFlag(clflags, "show-creation-time")) { OUTSTREAM << " " << getReadableTime(n->getModificationTime(), timeFormat); } else { OUTSTREAM << " " << getReadableTime(n->getCreationTime(), timeFormat); } if (getFlag(clflags, "show-handles")) { OUTSTREAM << " H:" << handleToBase64(n->getHandle()); } OUTSTREAM << " " << title; OUTSTREAM << endl; } void MegaCmdExecuter::createOrModifyBackup(string local, string remote, string speriod, int numBackups) { LocalPath locallocal = LocalPath::fromAbsolutePath(local); std::unique_ptr fa = mFsAccessCMD->newfileaccess(); if (!fa->isfolder(locallocal)) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Local path must be an existing folder: " << local; return; } int64_t period = -1; if (!speriod.size()) { MegaScheduledCopy *backup = api->getScheduledCopyByPath(local.c_str()); if (!backup) { backup = api->getScheduledCopyByTag(toInteger(local, -1)); } if (backup) { speriod = backup->getPeriodString(); if (!speriod.size()) { period = backup->getPeriod(); } delete backup; } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("backup"); return; } } if (speriod.find(" ") == string::npos && period == -1) { period = 10 * getTimeStampAfter(0,speriod); speriod = ""; } if (numBackups == -1) { MegaScheduledCopy *backup = api->getScheduledCopyByPath(local.c_str()); if (!backup) { backup = api->getScheduledCopyByTag(toInteger(local, -1)); } if (backup) { numBackups = backup->getMaxBackups(); delete backup; } } if (numBackups == -1) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("backup"); return; } std::unique_ptr n; if (remote.size()) { n = nodebypath(remote.c_str()); } else { std::unique_ptr backup(api->getScheduledCopyByPath(local.c_str())); if (!backup) { backup.reset(api->getScheduledCopyByTag(toInteger(local, -1))); } if (backup) { n.reset(api->getNodeByHandle(backup->getMegaHandle())); } } if (n) { if (n->getType() != MegaNode::TYPE_FOLDER) { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << remote << " must be a valid folder"; } else { if (establishBackup(local, n.get(), period, speriod, numBackups)) { { std::lock_guard g(mtxBackupsMap); ConfigurationManager::saveBackups(&ConfigurationManager::configuredBackups); } OUTSTREAM << "Backup established: " << local << " into " << remote << " period=" << ((period != -1)?getReadablePeriod(period/10):"\""+speriod+"\"") << " Number-of-Backups=" << numBackups << endl; } } } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << remote << " not found"; } } void MegaCmdExecuter::printTreeSuffix(int depth, vector &lastleaf) { #ifdef _WIN32 const wchar_t *c0 = L" "; const wchar_t *c1 = L"\u2502"; const wchar_t *c2 = L"\u2514"; const wchar_t *c3 = L"\u251c"; const wchar_t *c4 = L"\u2500\u2500"; #else const char *c0 = " "; const char *c1 = "\u2502"; const char *c2 = "\u2514"; const char *c3 = "\u251c"; const char *c4 = "\u2500\u2500"; #endif for (int i = 0; i < depth-1; i++) { OUTSTREAM << (lastleaf.at(i)?c0:c1) << " "; } if (lastleaf.size()) { OUTSTREAM << (lastleaf.back()?c2:c3) << c4 << " "; } } void MegaCmdExecuter::dumptree(MegaNode* n, bool treelike, vector &lastleaf, const char *timeFormat, std::map *clflags, std::map *cloptions, int recurse, int extended_info, bool showversions, int depth, string pathRelativeTo) { if (depth || ( n->getType() == MegaNode::TYPE_FILE )) { if (treelike) printTreeSuffix(depth, lastleaf); if (pathRelativeTo != "NULL") { if (!n->getName()) { dumpNode(n, timeFormat, clflags, cloptions, extended_info, showversions, treelike?0:depth, "CRYPTO_ERROR"); } else { char * nodepath = api->getNodePath(n); char *pathToShow = NULL; if (pathRelativeTo != "") { pathToShow = strstr(nodepath, pathRelativeTo.c_str()); } if (pathToShow == nodepath) //found at beginning { pathToShow += pathRelativeTo.size(); if (( *pathToShow == '/' ) && ( pathRelativeTo != "/" )) { pathToShow++; } } else { pathToShow = nodepath; } dumpNode(n, timeFormat, clflags, cloptions, extended_info, showversions, treelike?0:depth, pathToShow); delete []nodepath; } } else { dumpNode(n, timeFormat, clflags, cloptions, extended_info, showversions, treelike?0:depth); } if (!recurse && depth) { return; } } if (n->getType() != MegaNode::TYPE_FILE) { MegaNodeList* children = api->getChildren(n); if (children) { for (int i = 0; i < children->size(); i++) { vector lfs = lastleaf; lfs.push_back(i==(children->size()-1)); dumptree(children->get(i), treelike, lfs, timeFormat, clflags, cloptions, recurse, extended_info, showversions, depth + 1); } delete children; } } } void MegaCmdExecuter::dumpTreeSummary(MegaNode *n, const char *timeFormat, std::map *clflags, std::map *cloptions, int recurse, bool show_versions, int depth, bool humanreadable, string pathRelativeTo) { char * nodepath = api->getNodePath(n); string scryptoerror = "CRYPTO_ERROR"; char *pathToShow = NULL; if (pathRelativeTo != "") { pathToShow = strstr(nodepath, pathRelativeTo.c_str()); } if (pathToShow == nodepath) //found at beginning { pathToShow += pathRelativeTo.size(); if (( *pathToShow == '/' ) && ( pathRelativeTo != "/" )) { pathToShow++; } } else { pathToShow = nodepath; } if (!pathToShow && !( pathToShow = (char *)n->getName())) { pathToShow = (char *)scryptoerror.c_str(); } if (n->getType() != MegaNode::TYPE_FILE) { MegaNodeList* children = api->getChildren(n); if (children) { if (depth) { OUTSTREAM << endl; } if (recurse) { OUTSTREAM << pathToShow << ":" << endl; } for (int i = 0; i < children->size(); i++) { dumpNodeSummary(children->get(i), timeFormat, clflags, cloptions, humanreadable); } if (show_versions) { for (int i = 0; i < children->size(); i++) { MegaNode *c = children->get(i); MegaNodeList *vers = api->getVersions(c); if (vers && vers->size() > 1) { OUTSTREAM << endl << "Versions of " << pathToShow << "/" << c->getName() << ":" << endl; for (int i = 0; i < vers->size(); i++) { dumpNodeSummary(vers->get(i), timeFormat, clflags, cloptions, humanreadable); } } delete vers; } } if (recurse) { for (int i = 0; i < children->size(); i++) { MegaNode *c = children->get(i); dumpTreeSummary(c, timeFormat, clflags, cloptions, recurse, show_versions, depth + 1, humanreadable); } } delete children; } } else // file { if (!depth) { dumpNodeSummary(n, timeFormat, clflags, cloptions, humanreadable); if (show_versions) { MegaNodeList *vers = api->getVersions(n); if (vers && vers->size() > 1) { OUTSTREAM << endl << "Versions of " << pathToShow << ":" << endl; for (int i = 0; i < vers->size(); i++) { string nametoshow = n->getName()+string("#")+SSTR(vers->get(i)->getModificationTime()); dumpNodeSummary(vers->get(i), timeFormat, clflags, cloptions, humanreadable, nametoshow.c_str()); } } delete vers; } } } delete []nodepath; } /** * @brief Tests if a path can be created * @param path * @return */ bool MegaCmdExecuter::TestCanWriteOnContainingFolder(string path) { #ifdef _WIN32 replaceAll(path, "/", "\\"); #endif auto containingFolder = LocalPath::fromAbsolutePath(path); if (!containingFolder.isRootPath()) { containingFolder = containingFolder.parentPath(); } std::unique_ptr fa = mFsAccessCMD->newfileaccess(); if (!fa->isfolder(containingFolder)) { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << containingFolder.toPath(false) << " is not a valid Download Folder"; return false; } if (!canWrite(containingFolder.toPath(false))) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Write not allowed in " << containingFolder.toPath(false); return false; } return true; } std::unique_ptr MegaCmdExecuter::getPcrByContact(string contactEmail) { unique_ptr icrl(api->getIncomingContactRequests()); if (icrl) { for (int i = 0; i < icrl->size(); i++) { if (icrl->get(i)->getSourceEmail() == contactEmail) { return std::unique_ptr(icrl->get(i)->copy()); } } } return NULL; } string MegaCmdExecuter::getDisplayPath(string givenPath, MegaNode* n_param) { char * pathToNode = api->getNodePath(n_param); if (!pathToNode) { LOG_err << " GetNodePath failed for: " << givenPath; return givenPath; } char * pathToShow = pathToNode; string pathRelativeTo = "NULL"; string cwpath = getCurrentPath(); string toret=""; if (givenPath.find('/') == 0 ) { pathRelativeTo = ""; } else if(givenPath.find("../") == 0 || givenPath.find("./") == 0 ) { pathRelativeTo = ""; MegaNode *n = api->getNodeByHandle(cwd); while(true) { if(givenPath.find("./") == 0) { givenPath=givenPath.substr(2); toret+="./"; if (n) { char *npath = api->getNodePath(n); pathRelativeTo = string(npath); delete []npath; } return toret; } else if(givenPath.find("../") == 0) { givenPath=givenPath.substr(3); toret+="../"; MegaNode *aux = n; if (n) { n=api->getNodeByHandle(n->getParentHandle()); } delete aux; if (n) { char *npath = api->getNodePath(n); pathRelativeTo = string(npath); delete []npath; } } else { break; } } delete n; } else { if (cwpath == "/") //TODO: //bin /X:share ... { pathRelativeTo = cwpath; } else { pathRelativeTo = cwpath + "/"; } } if (( "" == givenPath ) && !strcmp(pathToNode, cwpath.c_str())) { assert(strlen(pathToNode)>0); pathToNode[0] = '.'; pathToNode[1] = '\0'; } if (pathRelativeTo != "") { pathToShow = strstr(pathToNode, pathRelativeTo.c_str()); } if (pathToShow == pathToNode) //found at beginning { if (strcmp(pathToNode, "/")) { pathToShow += pathRelativeTo.size(); } } else { pathToShow = pathToNode; } toret+=pathToShow; delete []pathToNode; return toret; } int MegaCmdExecuter::dumpListOfExported(MegaNode* n_param, const char *timeFormat, std::map *clflags, std::map *cloptions, string givenPath) { int toret = 0; vector listOfExported; processTree(n_param, includeIfIsExported, (void*)&listOfExported); for (std::vector< MegaNode * >::iterator it = listOfExported.begin(); it != listOfExported.end(); ++it) { MegaNode * n = *it; if (n) { string pathToShow = getDisplayPath(givenPath, n); dumpNode(n, timeFormat, clflags, cloptions, 2, 1, false, pathToShow.c_str()); delete n; } } toret = int(listOfExported.size()); listOfExported.clear(); return toret; } void printOutShareInfo(const char *pathOrName, const char *email, int accessLevel, bool pending, bool verified) { OUTSTREAM << pathOrName; OUTSTREAM << ","; if (email) { OUTSTREAM << " shared"; } if (pending) { OUTSTREAM << " (still pending)"; } if (email) { OUTSTREAM << " with " << email; } OUTSTREAM << " (" << getAccessLevelStr(accessLevel) << ")"; if (!verified && !pending /*Do not indicate lack of verification for pending out shares*/) { OUTSTREAM << "[UNVERIFIED]"; } OUTSTREAM << endl; } /** * @brief listnodeshares For a node, it prints all the shares it has * @param n * @param name */ void MegaCmdExecuter::listnodeshares(MegaNode* n, string name, bool listPending = false, bool onlyPending = false) { assert(listPending || !onlyPending); auto printOutShares = [n, CONST_CAPTURE(name)](MegaShareList * outShares, bool skipPending = false) { if (outShares) { for (int i = 0; i < outShares->size(); i++) { auto outShare = outShares->get(i); if (outShare && (!skipPending || !outShare->isPending())) { printOutShareInfo(name.empty() ? n->getName() : name.c_str(), outShare->getUser(), outShare->getAccess(), outShare->isPending(), outShare->isVerified()); } } } }; if (!onlyPending) { std::unique_ptr allOutShares (api->getOutShares(n)); printOutShares(allOutShares.get(), true /*to not list them twice*/); } if (listPending) { std::unique_ptr pendingOutShares (api->getPendingOutShares(n)); printOutShares(pendingOutShares.get()); } } void MegaCmdExecuter::dumpListOfShared(MegaNode* n_param, string givenPath) { vector listOfShared; processTree(n_param, includeIfIsShared, (void*)&listOfShared); for (std::vector< MegaNode * >::iterator it = listOfShared.begin(); it != listOfShared.end(); ++it) { MegaNode * n = *it; if (n) { string pathToShow = getDisplayPath(givenPath, n); listnodeshares(n, pathToShow); delete n; } } listOfShared.clear(); } //includes pending and normal shares void MegaCmdExecuter::dumpListOfAllShared(MegaNode* n_param, string givenPath) { vector listOfShared; processTree(n_param, includeIfIsSharedOrPendingOutShare, (void*)&listOfShared); for (std::vector< MegaNode * >::iterator it = listOfShared.begin(); it != listOfShared.end(); ++it) { MegaNode * n = *it; if (n) { string pathToShow = getDisplayPath(givenPath, n); listnodeshares(n, pathToShow, true); delete n; } } listOfShared.clear(); } void MegaCmdExecuter::dumpListOfPendingShares(MegaNode* n_param, string givenPath) { vector listOfShared; processTree(n_param, includeIfIsPendingOutShare, (void*)&listOfShared); for (std::vector< MegaNode * >::iterator it = listOfShared.begin(); it != listOfShared.end(); ++it) { MegaNode * n = *it; if (n) { string pathToShow = getDisplayPath(givenPath, n); listnodeshares(n, pathToShow, true, true); delete n; } } listOfShared.clear(); } void MegaCmdExecuter::loginWithPassword(const char *password) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); sandboxCMD->resetSandBox(); api->login(login.c_str(), password, megaCmdListener); actUponLogin(megaCmdListener); delete megaCmdListener; } void MegaCmdExecuter::changePassword(const char *newpassword, string pin2fa) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->changePassword(NULL, newpassword, megaCmdListener); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EMFAREQUIRED) { MegaCmdListener *megaCmdListener2 = new MegaCmdListener(NULL); if (!pin2fa.size()) { pin2fa = askforUserResponse("Enter the code generated by your authentication app: "); } LOG_verbose << " Using confirmation pin: " << pin2fa; api->multiFactorAuthChangePassword(NULL, newpassword, pin2fa.c_str(), megaCmdListener2); megaCmdListener2->wait(); if (megaCmdListener2->getError()->getErrorCode() == MegaError::API_EFAILED) { setCurrentThreadOutCode(megaCmdListener2->getError()->getErrorCode()); LOG_err << "Password unchanged: invalid authentication code"; } else if (checkNoErrors(megaCmdListener2->getError(), "change password with auth code")) { OUTSTREAM << "Password changed successfully" << endl; } delete megaCmdListener2; } else if (!checkNoErrors(megaCmdListener->getError(), "change password")) { LOG_err << "Please, ensure you enter the old password correctly"; } else { OUTSTREAM << "Password changed successfully" << endl; } delete megaCmdListener; } void str_localtime(char s[32], ::mega::m_time_t t) { struct tm tms; strftime(s, 32, "%c", m_localtime(t, &tms)); } void MegaCmdExecuter::actUponGetExtendedAccountDetails(std::unique_ptr<::mega::MegaAccountDetails> storageDetails, std::unique_ptr<::mega::MegaAccountDetails> extAccountDetails) { char timebuf[32], timebuf2[32]; LOG_verbose << "actUponGetExtendedAccountDetails ok"; if (storageDetails) { OUTSTREAM << " Available storage: " << getFixLengthString(sizeToText(storageDetails->getStorageMax()), 9, ' ', true) << "ytes" << endl; std::unique_ptr n(api->getRootNode()); if (n) { OUTSTREAM << " In ROOT: " << getFixLengthString(sizeToText(storageDetails->getStorageUsed(n->getHandle())), 9, ' ', true) << "ytes in " << getFixLengthString(SSTR(storageDetails->getNumFiles(n->getHandle())), 5, ' ', true) << " file(s) and " << getFixLengthString(SSTR(storageDetails->getNumFolders(n->getHandle())), 5, ' ', true) << " folder(s)" << endl; } n = std::unique_ptr(api->getVaultNode()); if (n) { OUTSTREAM << " In INBOX: " << getFixLengthString(sizeToText(storageDetails->getStorageUsed(n->getHandle())), 9, ' ', true) << "ytes in " << getFixLengthString(SSTR(storageDetails->getNumFiles(n->getHandle())), 5, ' ', true) << " file(s) and " << getFixLengthString(SSTR(storageDetails->getNumFolders(n->getHandle())), 5, ' ', true) << " folder(s)" << endl; } n = std::unique_ptr(api->getRubbishNode()); if (n) { OUTSTREAM << " In RUBBISH: " << getFixLengthString(sizeToText(storageDetails->getStorageUsed(n->getHandle())), 9, ' ', true) << "ytes in " << getFixLengthString(SSTR(storageDetails->getNumFiles(n->getHandle())), 5, ' ', true) << " file(s) and " << getFixLengthString(SSTR(storageDetails->getNumFolders(n->getHandle())), 5, ' ', true) << " folder(s)" << endl; } long long usedinVersions = storageDetails->getVersionStorageUsed(); OUTSTREAM << " Total size taken up by file versions: " << getFixLengthString(sizeToText(usedinVersions), 12, ' ', true) << "ytes" << endl; std::unique_ptr inshares(api->getInShares()); if (inshares) { for (int i = 0; i < inshares->size(); i++) { auto node = inshares->get(i); OUTSTREAM << " In INSHARE " << node->getName() << ": " << getFixLengthString(sizeToText(storageDetails->getStorageUsed(node->getHandle())), 9, ' ', true) << "ytes in " << getFixLengthString(SSTR(storageDetails->getNumFiles(node->getHandle())), 5, ' ', true) << " file(s) and " << getFixLengthString(SSTR(storageDetails->getNumFolders(node->getHandle())), 5, ' ', true) << " folder(s)" << endl; } } OUTSTREAM << " Pro level: " << storageDetails->getProLevel() << endl; if (storageDetails->getProLevel()) { if (storageDetails->getProExpiration()) { str_localtime(timebuf, storageDetails->getProExpiration()); OUTSTREAM << " " << "Pro expiration date: " << timebuf << endl; } } } if (extAccountDetails) { std::unique_ptr subscriptionMethod(extAccountDetails->getSubscriptionMethod()); OUTSTREAM << " Subscription type: " << subscriptionMethod.get() << endl; OUTSTREAM << " Account balance:" << endl; for (int i = 0; i < extAccountDetails->getNumBalances(); i++) { std::unique_ptr balance(extAccountDetails->getBalance(i)); std::unique_ptr currency(balance->getCurrency()); char sbalance[50]; sprintf(sbalance, " Balance: %.3s %.02f", currency.get(), balance->getAmount()); OUTSTREAM << " " << "Balance: " << sbalance << endl; } if (extAccountDetails->getNumPurchases()) { OUTSTREAM << "Purchase history:" << endl; for (int i = 0; i < extAccountDetails->getNumPurchases(); i++) { std::unique_ptr purchase(extAccountDetails->getPurchase(i)); std::unique_ptr currency(purchase->getCurrency()); std::unique_ptr handle(purchase->getHandle()); char spurchase[150]; str_localtime(timebuf, purchase->getTimestamp()); sprintf(spurchase, "ID: %.11s Time: %s Amount: %.3s %.02f Payment method: %d\n", handle.get(), timebuf, currency.get(), purchase->getAmount(), purchase->getMethod()); OUTSTREAM << " " << spurchase << endl; } } if (extAccountDetails->getNumTransactions()) { OUTSTREAM << "Transaction history:" << endl; for (int i = 0; i < extAccountDetails->getNumTransactions(); i++) { std::unique_ptr transaction(extAccountDetails->getTransaction(i)); std::unique_ptr currency(transaction->getCurrency()); char stransaction[100]; str_localtime(timebuf, transaction->getTimestamp()); sprintf(stransaction, "ID: %.11s Time: %s Amount: %.3s %.02f\n", transaction->getHandle(), timebuf, currency.get(), transaction->getAmount()); OUTSTREAM << " " << stransaction << endl; } } int alive_sessions = 0; OUTSTREAM << "Current Active Sessions:" << endl; char sdetails[500]; for (int i = 0; i < extAccountDetails->getNumSessions(); i++) { std::unique_ptr session(extAccountDetails->getSession(i)); if (session->isAlive()) { str_localtime(timebuf, session->getCreationTimestamp()); str_localtime(timebuf2, session->getMostRecentUsage()); std::unique_ptr sid(api->userHandleToBase64(session->getHandle())); const char *current_session = ""; if (session->isCurrent()) { current_session = " * Current Session\n"; } std::unique_ptr userAgent(session->getUserAgent()); std::unique_ptr country(session->getCountry()); std::unique_ptr ip(session->getIP()); sprintf(sdetails, "%s Session ID: %s\n Session start: %s\n Most recent activity: %s\n IP: %s\n Country: %.2s\n User-Agent: %s\n -----\n", current_session, sid.get(), timebuf, timebuf2, ip.get(), country.get(), userAgent.get()); OUTSTREAM << sdetails; alive_sessions++; } } if (alive_sessions) { OUTSTREAM << alive_sessions << " active sessions opened" << endl; } } } void MegaCmdExecuter::verifySharedFolders(MegaApi *api) { auto getInstructionsNeedsVerification = [](const char *intro) { std::stringstream ss; ss << intro << ".\n"; ss << "You need to verify your contacts. \nUse "; ss << getCommandPrefixBasedOnMode(); ss << "users --help-verify to get instructions"; return ss.str(); }; auto getInstructionsNeedsLogin = [](const char *intro, const std::set &emails) { std::stringstream ss; ss << intro << "."; for (auto &email : emails) { ss << "\nYour contact " << email << " may need to resume using his MEGA application."; } return ss.str(); }; { std::unique_ptr shares(api->getUnverifiedInShares()); if (shares && shares->size()) { broadcastMessage(getInstructionsNeedsVerification("Some not verified contact is sharing a folder with you"), true); return; } std::set usersWithNonDecryptable; std::unique_ptr inSharesByAllUsers (api->getInSharesList());// this one should not return unverified ones if (inSharesByAllUsers) { for (int i = 0, total = inSharesByAllUsers->size(); i < total; i++) { auto share = inSharesByAllUsers->get(i); if (!share->isVerified()) // Just in case { broadcastMessage(getInstructionsNeedsVerification("Found some not verified share"), true); return; } std::unique_ptr n (api->getNodeByHandle(share->getNodeHandle())); if (n && !n->isNodeKeyDecrypted() && share->getUser()) { usersWithNonDecryptable.insert(share->getUser()); } } } if (!usersWithNonDecryptable.empty()) { std::string title("Found some inaccessible (in)share"); if (usersWithNonDecryptable.size() > 1) { title.append("s"); } broadcastMessage(getInstructionsNeedsLogin(title.c_str(), usersWithNonDecryptable), true); return; } } { std::unique_ptr shares(api->getUnverifiedOutShares()); for (int i = 0; shares && i < shares->size(); i++) { if (!shares->get(i)->isPending()) { broadcastMessage(getInstructionsNeedsVerification("You are sharing a folder with some unverified contact"), true); return; } } } } bool MegaCmdExecuter::actUponFetchNodes(MegaApi *api, SynchronousRequestListener *srl, int timeout) { if (timeout == -1) { srl->wait(); } else { int trywaitout = srl->trywait(timeout); if (trywaitout) { LOG_err << "Fetch nodes took too long, it may have failed. No further actions performed"; return false; } } if (srl->getError()->getErrorCode() == MegaError::API_EBLOCKED) { LOG_verbose << " EBLOCKED after fetch nodes. querying for reason..."; MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->whyAmIBlocked(megaCmdListener); //This shall cause event that sets reasonblocked megaCmdListener->wait(); auto reason = sandboxCMD->getReasonblocked(); LOG_warn << "Failed to fetch nodes. Account blocked." <<( reason.empty()?"":" Reason: "+reason); } else if (checkNoErrors(srl->getError(), "fetch nodes")) { // Let's save the session for future resumptions // Note: when logged into folders, // folder session depends on node handle, // which requires fetch nodes to be complete // i.e. dumpSession won't be valid after login session = std::unique_ptr(srl->getApi()->dumpSession()); ConfigurationManager::saveSession(session.get()); LOG_verbose << "ActUponFetchNodes ok. Let's wait for nodes current:"; auto futureNodesCurrent = sandboxCMD->mNodesCurrentPromise.getFuture(); bool discardGet = false; LOG_debug << "Waiting for nodes current ..."; if (futureNodesCurrent.wait_for(std::chrono::seconds(30)) == std::future_status::timeout) { LOG_warn << "Getting up to date with last changes in your account is taking long ..."; if (futureNodesCurrent.wait_for(std::chrono::seconds(120)) == std::future_status::timeout) { LOG_err << "Getting up to date with last changes in your account is taking more than expected. MEGAcmd will continue. " "Caveat: you may be interacting with an out-dated version of your account."; sendEvent(StatsManager::MegacmdEvent::WAITED_TOO_LONG_FOR_NODES_CURRENT, api, false); discardGet = true; } } if (!discardGet) { auto eventCurrentArrivedOk = futureNodesCurrent.get(); assert(eventCurrentArrivedOk); LOG_debug << "Waited for nodes current ... " << eventCurrentArrivedOk; } std::string sessionString(session ? session.get() : ""); if (!sessionString.empty()) { // Verify shared folders to brodcast caveat messages if required mDeferredSharedFoldersVerifier.triggerDeferredSingleShot([this, api] { verifySharedFolders(api); }); } return true; } else { sandboxCMD->mNodesCurrentPromise.reset(); } return false; } int MegaCmdExecuter::actUponLogin(SynchronousRequestListener *srl, int timeout) { if (timeout == -1) { srl->wait(); } else { int trywaitout = srl->trywait(timeout); if (trywaitout) { LOG_err << "Login took too long, it may have failed. No further actions performed"; return MegaError::API_EAGAIN; } } LOG_debug << "actUponLogin login"; setCurrentThreadOutCode(srl->getError()->getErrorCode()); if (srl->getRequest()->getEmail()) { LOG_debug << "actUponLogin login email: " << srl->getRequest()->getEmail(); } if (srl->getError()->getErrorCode() == MegaError::API_EMFAREQUIRED) // failed to login { return srl->getError()->getErrorCode(); } if (srl->getError()->getErrorCode() == MegaError::API_ENOENT) // failed to login { LOG_err << "Login failed: invalid email or password"; } else if (srl->getError()->getErrorCode() == MegaError::API_EFAILED) { LOG_err << "Login failed: incorrect authentication"; } else if (srl->getError()->getErrorCode() == MegaError::API_EINCOMPLETE) { LOG_err << "Login failed: unconfirmed account. Please confirm your account"; } else if (checkNoErrors(srl->getError(), "Login")) //login success: { LOG_debug << "Login correct ... " << (srl->getRequest()->getEmail()?srl->getRequest()->getEmail():""); if (srl->getRequest()->getEmail()) // login with email { // If login with email, here we will have a valid new session // otherwise, we can asume that session is already stored. // // Note, if logging into a folder (no email), // the dumpSession reported by the SDK at this point is not valid: // folder session depends on node handle, which requires fetching nodes session = std::unique_ptr(srl->getApi()->dumpSession()); ConfigurationManager::saveSession(session.get()); } /* Restoring configured values */ mtxSyncMap.lock(); ConfigurationManager::loadsyncs(); mtxSyncMap.unlock(); mtxBackupsMap.lock(); ConfigurationManager::loadbackups(); mtxBackupsMap.unlock(); ConfigurationManager::transitionLegacyExclusionRules(*api); long long maxspeeddownload = ConfigurationManager::getConfigurationValue("maxspeeddownload", -1); if (maxspeeddownload != -1) api->setMaxDownloadSpeed(maxspeeddownload); long long maxspeedupload = ConfigurationManager::getConfigurationValue("maxspeedupload", -1); if (maxspeedupload != -1) api->setMaxUploadSpeed(maxspeedupload); for (bool up :{true, false}) { auto megaCmdListener = std::make_unique(nullptr); auto value = ConfigurationManager::getConfigurationValue(up ? "maxuploadconnections" : "maxdownloadconnections", -1); if (value != -1) { api->setMaxConnections(up ? 1 : 0, value, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() != MegaError::API_OK) { LOG_err << "Failed to change max " << (up ? "upload" : "download") << " connections: " << megaCmdListener->getError()->getErrorString(); } } } for (auto &vc : Instance::Get().getConfigurators()) { auto name = vc.mKey.c_str(); auto newValueOpt = vc.mGetter(api, name); if (newValueOpt) { if (vc.mValidator && !vc.mValidator.value()(newValueOpt->data())) { LOG_err << "Failed to change " << vc.mKey << " (" << vc.mDescription << ") after login. Invalid value in configuration"; continue; } auto previousErrorCode = getCurrentThreadOutCode(); if (!vc.mSetter(api, std::string(name), newValueOpt->data())) { LOG_err << "Failed to change " << vc.mKey << " (" << vc.mDescription << ") after login. Setting failed"; setCurrentThreadOutCode(previousErrorCode); //Do not consider this a a failure on login ... } } } api->useHttpsOnly(ConfigurationManager::getConfigurationValue("https", false)); api->disableGfxFeatures(!ConfigurationManager::getConfigurationValue("graphics", true)); #ifndef _WIN32 string permissionsFiles = ConfigurationManager::getConfigurationSValue("permissionsFiles"); if (permissionsFiles.size()) { int perms = permissionsFromReadable(permissionsFiles); if (perms != -1) { api->setDefaultFilePermissions(perms); } } string permissionsFolders = ConfigurationManager::getConfigurationSValue("permissionsFolders"); if (permissionsFolders.size()) { int perms = permissionsFromReadable(permissionsFolders); if (perms != -1) { api->setDefaultFolderPermissions(perms); } } #endif ConfigurationManager::migrateSyncConfig(api); LOG_info << "Fetching nodes ... "; MegaApi *api = srl->getApi(); int clientID = static_cast(srl)->clientID; fetchNodes(api, clientID); } #if defined(_WIN32) || defined(__APPLE__) MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); srl->getApi()->getLastAvailableVersion("BdARkQSQ",megaCmdListener); megaCmdListener->wait(); if (!megaCmdListener->getError()) { LOG_fatal << "No MegaError at getLastAvailableVersion: "; } else if (megaCmdListener->getError()->getErrorCode() != MegaError::API_OK) { LOG_debug << "Couldn't get latests available version: " << megaCmdListener->getError()->getErrorString(); } else { if (megaCmdListener->getRequest()->getNumber() != MEGACMD_CODE_VERSION) { OUTSTREAM << "---------------------------------------------------------------------" << endl; OUTSTREAM << "-- There is a new version available of megacmd: " << getLeftAlignedStr(megaCmdListener->getRequest()->getName(),12) << "--" << endl; OUTSTREAM << "-- Please, update this one: See \"update --help\". --" << endl; OUTSTREAM << "-- Or download the latest from https://mega.nz/cmd --" << endl; OUTSTREAM << "---------------------------------------------------------------------" << endl; } } delete megaCmdListener; //this goes here in case server is launched directly and thus we ensure that's shown at the beginning int autoupdate = ConfigurationManager::getConfigurationValue("autoupdate", -1); bool enabledupdaterhere = false; if (autoupdate == -1 || autoupdate == 2) { OUTSTREAM << "ENABLING AUTOUPDATE BY DEFAULT. You can disable it with \"update --auto=off\"" << endl; autoupdate = 1; enabledupdaterhere = true; } if (autoupdate >= 1) { startcheckingForUpdates(); } if (enabledupdaterhere) { ConfigurationManager::savePropertyValue("autoupdate", 2); //save to special value to indicate first listener that it is enabled } #endif return srl->getError()->getErrorCode(); } void MegaCmdExecuter::fetchNodes(MegaApi *api, int clientID) { if (!api) api = this->api; sandboxCMD->mNodesCurrentPromise.initiatePromise(); auto megaCmdListener = std::make_unique(api, nullptr, clientID); api->fetchNodes(megaCmdListener.get()); if (!actUponFetchNodes(api, megaCmdListener.get())) { //Ideally we should enter an state that indicates that we are not fully logged. //Specially when the account is blocked return; } // This is the actual acting upon fetch nodes ended correctly: //automatic now: //api->enableTransferResumption(); auto cwdNode = (cwd == UNDEF) ? nullptr : std::unique_ptr(api->getNodeByHandle(cwd)); if (cwd == UNDEF || !cwdNode) { auto rootNode = std::unique_ptr(api->getRootNode()); if (rootNode) { cwd = rootNode->getHandle(); } else { LOG_err << "Root node was not found after fetching nodes"; sendEvent(StatsManager::MegacmdEvent::ROOT_NODE_NOT_FOUND_AFTER_FETCHING, api); } } setloginInAtStartup(false); //to enable all commands before giving clients the green light! informStateListeners("loged:"); // tell the clients login ended, before providing them the first prompt updateprompt(api); LOG_debug << " Fetch nodes correctly"; MegaUser *u = api->getMyUser(); if (u) { LOG_info << "Login complete as " << u->getEmail(); delete u; } if (ConfigurationManager::getConfigurationValue("ask4storage", true)) { ConfigurationManager::savePropertyValue("ask4storage",false); auto megaCmdListener = std::make_unique(nullptr); api->getAccountDetails(megaCmdListener.get()); megaCmdListener->wait(); // we don't call getAccountDetails on startup always: we ask on first login (no "ask4storage") or previous state was STATE_RED | STATE_ORANGE // if we were green, don't need to ask: if there are changes they will be received via action packet indicating STATE_CHANGE } checkAndInformPSA(NULL); // this needs broacasting in case there's another Shell running. // no need to enforce, because time since last check should has been restored mtxBackupsMap.lock(); if (ConfigurationManager::configuredBackups.size()) { LOG_info << "Restablishing backups ... "; unsigned int i=0; for (map::iterator itr = ConfigurationManager::configuredBackups.begin(); itr != ConfigurationManager::configuredBackups.end(); ++itr, i++) { backup_struct *thebackup = itr->second; MegaNode * node = api->getNodeByHandle(thebackup->handle); if (establishBackup(thebackup->localpath, node, thebackup->period, thebackup->speriod, thebackup->numBackups)) { thebackup->failed = false; const char *nodepath = api->getNodePath(node); LOG_debug << "Successfully resumed backup: " << thebackup->localpath << " to " << nodepath; delete []nodepath; } else { thebackup->failed = true; char *nodepath = api->getNodePath(node); LOG_err << "Failed to resume backup: " << thebackup->localpath << " to " << nodepath; delete []nodepath; } delete node; } ConfigurationManager::saveBackups(&ConfigurationManager::configuredBackups); } mtxBackupsMap.unlock(); #ifdef HAVE_LIBUV // restart webdav int port = ConfigurationManager::getConfigurationValue("webdav_port", -1); if (port != -1) { bool localonly = ConfigurationManager::getConfigurationValue("webdav_localonly", -1); bool tls = ConfigurationManager::getConfigurationValue("webdav_tls", false); string pathtocert, pathtokey; pathtocert = ConfigurationManager::getConfigurationSValue("webdav_cert"); pathtokey = ConfigurationManager::getConfigurationSValue("webdav_key"); api->httpServerEnableFolderServer(true); if (api->httpServerStart(localonly, port, tls, pathtocert.c_str(), pathtokey.c_str())) { list servedpaths = ConfigurationManager::getConfigurationValueList("webdav_served_locations"); bool modified = false; for ( std::list::iterator it = servedpaths.begin(); it != servedpaths.end(); ++it) { string pathToServe = *it; if (pathToServe.size()) { std::unique_ptr n = nodebypath(pathToServe.c_str()); if (n) { char* l = api->httpServerGetLocalWebDavLink(n.get()); char* actualNodePath = api->getNodePath(n.get()); LOG_debug << "Serving via webdav: " << actualNodePath << ": " << l; if (pathToServe != actualNodePath) { it = servedpaths.erase(it); servedpaths.insert(it,string(actualNodePath)); modified = true; } delete []l; delete []actualNodePath; } else { LOG_warn << "Could no find location to server via webdav: " << pathToServe; } } } if (modified) { ConfigurationManager::savePropertyValueList("webdav_served_locations", servedpaths); } LOG_info << "Webdav server restored due to saved configuration"; } else { LOG_err << "Failed to initialize WEBDAV server. Ensure the port is free."; } } //ftp // restart ftp int portftp = ConfigurationManager::getConfigurationValue("ftp_port", -1); if (portftp != -1) { bool localonly = ConfigurationManager::getConfigurationValue("ftp_localonly", -1); bool tls = ConfigurationManager::getConfigurationValue("ftp_tls", false); string pathtocert, pathtokey; pathtocert = ConfigurationManager::getConfigurationSValue("ftp_cert"); pathtokey = ConfigurationManager::getConfigurationSValue("ftp_key"); int dataPortRangeBegin = ConfigurationManager::getConfigurationValue("ftp_port_data_begin", 1500); int dataPortRangeEnd = ConfigurationManager::getConfigurationValue("ftp_port_data_end", 1500+100); if (api->ftpServerStart(localonly, portftp, dataPortRangeBegin, dataPortRangeEnd, tls, pathtocert.c_str(), pathtokey.c_str())) { list servedpaths = ConfigurationManager::getConfigurationValueList("ftp_served_locations"); bool modified = false; for ( std::list::iterator it = servedpaths.begin(); it != servedpaths.end(); ++it) { string pathToServe = *it; if (pathToServe.size()) { std::unique_ptr n = nodebypath(pathToServe.c_str()); if (n) { char* l = api->ftpServerGetLocalLink(n.get()); char* actualNodePath = api->getNodePath(n.get()); LOG_debug << "Serving via ftp: " << pathToServe << ": " << l << ". Data Channel Port Range: " << dataPortRangeBegin << "-" << dataPortRangeEnd; if (pathToServe != actualNodePath) { it = servedpaths.erase(it); servedpaths.insert(it,string(actualNodePath)); modified = true; } delete []l; delete []actualNodePath; } else { LOG_warn << "Could no find location to server via ftp: " << pathToServe; } } } if (modified) { ConfigurationManager::savePropertyValueList("ftp_served_locations", servedpaths); } LOG_info << "FTP server restored due to saved configuration"; } else { LOG_err << "Failed to initialize FTP server. Ensure the port is free."; } } #endif } void MegaCmdExecuter::actUponLogout(MegaApi& api, MegaError* e, bool keptSession) { if (e->getErrorCode() == MegaError::API_ESID || checkNoErrors(e, "logout")) { LOG_verbose << "actUponLogout logout ok"; cwd = UNDEF; session.reset(); mtxSyncMap.lock(); ConfigurationManager::unloadConfiguration(); if (!keptSession) { ConfigurationManager::saveSession(""); ConfigurationManager::saveBackups(&ConfigurationManager::configuredBackups); ConfigurationManager::saveSyncs(&ConfigurationManager::oldConfiguredSyncs); } ConfigurationManager::clearConfigurationFile(); mtxSyncMap.unlock(); // clear greetings (asuming they are account-related) clearGreetingStatusAllListener(); clearGreetingStatusFirstListener(); } updateprompt(&api); } void MegaCmdExecuter::actUponLogout(SynchronousRequestListener *srl, bool keptSession, int timeout) { if (!timeout) { srl->wait(); } else { int trywaitout = srl->trywait(timeout); if (trywaitout) { LOG_err << "Logout took too long, it may have failed. No further actions performed"; return; } } actUponLogout(*api, srl->getError(), keptSession); } int MegaCmdExecuter::actUponCreateFolder(SynchronousRequestListener *srl, int timeout) { if (!timeout) { srl->wait(); } else { int trywaitout = srl->trywait(timeout); if (trywaitout) { LOG_err << "actUponCreateFolder took too long, it may have failed. No further actions performed"; return 1; } } if (checkNoErrors(srl->getError(), "create folder")) { LOG_verbose << "actUponCreateFolder Create Folder ok"; return 0; } return 2; } void MegaCmdExecuter::confirmDelete() { if (mNodesToConfirmDelete.size()) { std::unique_ptr nodeToConfirmDelete = std::move(mNodesToConfirmDelete.front()); mNodesToConfirmDelete.erase(mNodesToConfirmDelete.begin()); doDeleteNode(nodeToConfirmDelete, api); } if (mNodesToConfirmDelete.size()) { string newprompt("Are you sure to delete "); newprompt += mNodesToConfirmDelete.front()->getName(); newprompt += " ? (Yes/No/All/None): "; setprompt(AREYOUSURETODELETE,newprompt); } else { setprompt(COMMAND); } } void MegaCmdExecuter::discardDelete() { if (mNodesToConfirmDelete.size()) { mNodesToConfirmDelete.erase(mNodesToConfirmDelete.begin()); } if (mNodesToConfirmDelete.size()) { string newprompt("Are you sure to delete "); newprompt += mNodesToConfirmDelete.front()->getName(); newprompt += " ? (Yes/No/All/None): "; setprompt(AREYOUSURETODELETE,newprompt); } else { setprompt(COMMAND); } } void MegaCmdExecuter::confirmDeleteAll() { while (mNodesToConfirmDelete.size()) { std::unique_ptr nodeToConfirmDelete = std::move(mNodesToConfirmDelete.front()); mNodesToConfirmDelete.erase(mNodesToConfirmDelete.begin()); doDeleteNode(nodeToConfirmDelete, api); } setprompt(COMMAND); } void MegaCmdExecuter::discardDeleteAll() { mNodesToConfirmDelete.clear(); setprompt(COMMAND); } void MegaCmdExecuter::doDeleteNode(const std::unique_ptr& nodeToDelete, MegaApi* api) { char* nodePath = api->getNodePath(nodeToDelete.get()); if (nodePath) { LOG_verbose << "Deleting: "<< nodePath; } else { LOG_warn << "Deleting node whose path could not be found " << nodeToDelete->getName(); } MegaCmdListener* megaCmdListener = new MegaCmdListener(api, nullptr); std::unique_ptr parent(api->getParentNode(nodeToDelete.get())); if (parent && parent->getType() == MegaNode::TYPE_FILE) { api->removeVersion(nodeToDelete.get(), megaCmdListener); } else { api->remove(nodeToDelete.get(), megaCmdListener); } megaCmdListener->wait(); string msj = "delete node "; if (nodePath) { msj += nodePath; } else { msj += nodeToDelete->getName(); } checkNoErrors(megaCmdListener->getError(), msj); delete megaCmdListener; delete []nodePath; } int MegaCmdExecuter::deleteNodeVersions(const std::unique_ptr& nodeToDelete, MegaApi* api, int force) { if (nodeToDelete->getType() == MegaNode::TYPE_FILE && api->getNumVersions(nodeToDelete.get()) < 2) { if (!force) { LOG_err << "No versions found for " << nodeToDelete->getName(); } return MCMDCONFIRM_YES; //nothing to do, no sense asking } int confirmationResponse; if (nodeToDelete->getType() != MegaNode::TYPE_FILE) { string confirmationQuery("Are you sure todelete the version histories of files within "); confirmationQuery += nodeToDelete->getName(); confirmationQuery += "? (Yes/No): "; confirmationResponse = force?MCMDCONFIRM_ALL:askforConfirmation(confirmationQuery); if (confirmationResponse == MCMDCONFIRM_YES || confirmationResponse == MCMDCONFIRM_ALL) { auto children = std::unique_ptr(api->getChildren(nodeToDelete.get())); if (children) { for (int i = 0; i < children->size(); i++) { auto child = std::unique_ptr(children->get(i)); // wrap the pointer into the expected type by deleteNodeVersion deleteNodeVersions(child, api, true); child.release(); // the MegaNodeList owns the child, we don't want to double free it } } } } else { string confirmationQuery("Are you sure todelete the version histories of "); confirmationQuery += nodeToDelete->getName(); confirmationQuery += "? (Yes/No): "; confirmationResponse = force?MCMDCONFIRM_ALL:askforConfirmation(confirmationQuery); if (confirmationResponse == MCMDCONFIRM_YES || confirmationResponse == MCMDCONFIRM_ALL) { MegaNodeList* versionsToDelete = api->getVersions(nodeToDelete.get()); if (versionsToDelete) { for (int i = 0; i < versionsToDelete->size(); i++) { MegaNode *versionNode = versionsToDelete->get(i); if (versionNode->getHandle() != nodeToDelete->getHandle()) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->removeVersion(versionNode,megaCmdListener); megaCmdListener->wait(); string fullname(versionNode->getName()?versionNode->getName():"NO_NAME"); fullname += "#"; fullname += SSTR(versionNode->getModificationTime()); if (checkNoErrors(megaCmdListener->getError(), "remove version: "+fullname)) { LOG_verbose << " Removed " << fullname << " (" << getReadableTime(versionNode->getModificationTime()) << ")"; } delete megaCmdListener; } } delete versionsToDelete; } } } return confirmationResponse; } /** * @brief MegaCmdExecuter::deleteNode * @param nodeToDelete this function will delete this accordingly * @param api * @param recursive * @param force * @return confirmation code */ int MegaCmdExecuter::deleteNode(const std::unique_ptr& nodeToDelete, MegaApi* api, int recursive, int force) { if (nodeToDelete->getType() != MegaNode::TYPE_FILE && !recursive) { char* nodePath = api->getNodePath(nodeToDelete.get()); setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << "Unable to delete folder: " << nodePath << ". Use -r to delete a folder recursively"; delete []nodePath; } else { if (!isCurrentThreadCmdShell() && isCurrentThreadInteractive() && !force && nodeToDelete->getType() != MegaNode::TYPE_FILE) { bool alreadythere = false; for (const auto& node : mNodesToConfirmDelete) { if (node->getHandle() == nodeToDelete->getHandle()) { alreadythere= true; } } if (!alreadythere) { if (getprompt() != AREYOUSURETODELETE) { string newprompt("Are you sure to delete "); newprompt += nodeToDelete->getName(); newprompt += " ? (Yes/No/All/None): "; setprompt(AREYOUSURETODELETE, newprompt); } mNodesToConfirmDelete.emplace_back(nodeToDelete->copy()); } return MCMDCONFIRM_NO; //default return } else if (!force && nodeToDelete->getType() != MegaNode::TYPE_FILE) { string confirmationQuery("Are you sure to delete "); confirmationQuery += nodeToDelete->getName(); confirmationQuery += " ? (Yes/No/All/None): "; int confirmationResponse = askforConfirmation(confirmationQuery); if (confirmationResponse == MCMDCONFIRM_YES || confirmationResponse == MCMDCONFIRM_ALL) { LOG_debug << "confirmation received"; doDeleteNode(nodeToDelete, api); } else { LOG_debug << "confirmation denied"; } return confirmationResponse; } else //force { doDeleteNode(nodeToDelete, api); return MCMDCONFIRM_ALL; } } return MCMDCONFIRM_NO; //default return } void MegaCmdExecuter::downloadNode(string source, string path, MegaApi* api, MegaNode *node, bool background, bool ignorequotawarn, int clientID, std::shared_ptr multiTransferListener) { if (sandboxCMD->isOverquota() && !ignorequotawarn) { m_time_t ts = m_time(); // in order to speedup and not flood the server we only ask for the details every 1 minute or after account changes if (!sandboxCMD->temporalbandwidth || (ts - sandboxCMD->lastQuerytemporalBandwith ) > 60 ) { LOG_verbose << " Updating temporal bandwidth "; sandboxCMD->lastQuerytemporalBandwith = ts; MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->getExtendedAccountDetails(false, false, false, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "get account details")) { MegaAccountDetails *details = megaCmdListener->getRequest()->getMegaAccountDetails(); sandboxCMD->istemporalbandwidthvalid = details->isTemporalBandwidthValid(); if (details && details->isTemporalBandwidthValid()) { sandboxCMD->temporalbandwidth = details->getTemporalBandwidth(); sandboxCMD->temporalbandwithinterval = details->getTemporalBandwidthInterval(); } } delete megaCmdListener; } OUTSTREAM << "Transfer not started. " << endl; if (sandboxCMD->istemporalbandwidthvalid) { OUTSTREAM << "You have utilized " << sizeToText(sandboxCMD->temporalbandwidth) << " of data transfer in the last " << sandboxCMD->temporalbandwithinterval << " hours, " "which took you over our current limit"; } else { OUTSTREAM << "You have reached your bandwidth quota"; } OUTSTREAM << ". To circumvent this limit, " "you can upgrade to Pro, which will give you your own bandwidth " "package and also ample extra storage space. " "Alternatively, you can try again in " << secondsToText(sandboxCMD->secondsOverQuota-(ts-sandboxCMD->timeOfOverquota)) << "." << endl << "See \"help --upgrade\" for further details" << endl; OUTSTREAM << "Use --ignore-quota-warn to initiate nevertheless" << endl; return; } if (!ignorequotawarn) { MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->queryTransferQuota(node->getSize(),megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "query transfer quota")) { if (megaCmdListener->getRequest() && megaCmdListener->getRequest()->getFlag() ) { OUTSTREAM << "Transfer not started: proceeding will exceed transfer quota. " "Use --ignore-quota-warn to initiate nevertheless" << endl; return; } } delete megaCmdListener; } multiTransferListener->onNewTransfer(); #ifdef _WIN32 replaceAll(path,"/","\\"); #endif LOG_debug << "Starting download: " << node->getName() << " to : " << path; api->startDownload( node, //MegaNode* node, path.c_str(), // const char* localPath, nullptr, // const char *customName, nullptr, // const char *appData, false, // bool startFirst, nullptr, // MegaCancelToken *cancelToken, MegaTransfer::COLLISION_CHECK_FINGERPRINT, // int collisionCheck, MegaTransfer::COLLISION_RESOLUTION_NEW_WITH_N, // int collisionResolution, false, // bool undelete new ATransferListener(multiTransferListener, source) // MegaTransferListener *listener ); } class SelfDestructingTransferStartCallbackListener: public MegaTransferListener { std::function mOnTransferStart; public: template SelfDestructingTransferStartCallbackListener(Cb &&cb) : mOnTransferStart(std::forward(cb)) {} void onTransferStart(MegaApi *api, MegaTransfer *transfer) override { mOnTransferStart(transfer); } public: void onTransferFinish(MegaApi *api, MegaTransfer *transfer, MegaError *error) override { delete this; } }; void MegaCmdExecuter::uploadNode(const std::map &clflags, const std::map &cloptions, const std::string &receivedPath, MegaApi* api, MegaNode *node, const string &newname, MegaCmdMultiTransferListener *multiTransferListener) { bool printTag = getFlag(&clflags,"print-tag-at-start"); std::string path = receivedPath; unescapeifRequired(path); if (!pathExists(path)) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Unable to open local path: " << path; return; } MegaTransferListener *thelistener = multiTransferListener; std::optional>> promiseStarted; if (printTag) { promiseStarted.emplace(); auto onTransferStartCb = [&promiseStarted](MegaTransfer *transfer) { promiseStarted->set_value({transfer->getTag(), transfer->getPath()}); }; if (multiTransferListener) { multiTransferListener->setOnTransferStartCb(std::move(onTransferStartCb)); } else { // create a listener for the shake of printing the tag. thelistener = new SelfDestructingTransferStartCallbackListener(std::move(onTransferStartCb)); } } if (multiTransferListener) { multiTransferListener->onNewTransfer(); } #ifdef _WIN32 replaceAll(path,"/","\\"); #endif LOG_debug << "Starting upload: " << path << " to : " << node->getName() << (newname.size()?"/":"") << newname; api->startUpload( removeTrailingSeparators(path).c_str(),//const char *localPath, node,//MegaNode *parent, newname.size() ? newname.c_str() : nullptr,//const char *fileName, MegaApi::INVALID_CUSTOM_MOD_TIME,//int64_t mtime, nullptr,//const char *appData, false, //bool isSourceTemporary, false, //bool startFirst, nullptr,//MegaCancelToken *cancelToken, thelistener); if (promiseStarted) { auto [tag, path] = promiseStarted->get_future().get(); OUTSTREAM << "Upload started: Tag = " << tag << ". Source = " << path << std::endl; } } bool MegaCmdExecuter::amIPro() { int prolevel = -1; #ifdef MEGACMD_TESTING_CODE auto proLevelOpt = TI::Instance().testValue(TI::TestValue::AMIPRO_LEVEL); if (proLevelOpt) { prolevel = static_cast(std::get(*proLevelOpt)); LOG_debug << "Enforced test value for Pro Level: " << prolevel; return prolevel; } #endif auto megaCmdListener = std::make_unique(api, nullptr); api->getAccountDetails(megaCmdListener.get()); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "get account details")) { std::unique_ptr details(megaCmdListener->getRequest()->getMegaAccountDetails()); prolevel = details->getProLevel(); } return prolevel > 0; } void MegaCmdExecuter::exportNode(MegaNode *n, int64_t expireTime, const std::optional& password, std::map *clflags, std::map *cloptions) { const bool force = getFlag(clflags,"f"); const bool writable = getFlag(clflags,"writable"); const bool megaHosted = getFlag(clflags,"mega-hosted"); bool alreadyAcceptedBefore = false; bool copyrightAccepted = force || [&alreadyAcceptedBefore]() { return alreadyAcceptedBefore = ConfigurationManager::getConfigurationValue("copyrightAccepted", false); }(); if (!copyrightAccepted) { auto publicLinks = std::unique_ptr(api->getPublicLinks()); // Implicit acceptance (the user already has public links) copyrightAccepted = (publicLinks && publicLinks->size()); } if (!copyrightAccepted) { string confirmationQuery("MEGA respects the copyrights of others and requires that users of the MEGA cloud service comply with the laws of copyright.\n" "You are strictly prohibited from using the MEGA cloud service to infringe copyright.\n" "You may not upload, download, store, share, display, stream, distribute, email, link to, " "transmit or otherwise make available any files, data or content that infringes any copyright " "or other proprietary rights of any person or entity.\n"); confirmationQuery += "Do you accept these terms? (Yes/No): "; const int confirmationResponse = askforConfirmation(confirmationQuery); if (confirmationResponse != MCMDCONFIRM_YES && confirmationResponse != MCMDCONFIRM_ALL) { return; } } if (!alreadyAcceptedBefore) { // Save as accepted regardless of the source of acceptance ConfigurationManager::savePropertyValue("copyrightAccepted", true); } auto megaCmdListener = std::make_unique(api, nullptr); api->exportNode(n, expireTime, writable, megaHosted, megaCmdListener.get()); megaCmdListener->wait(); auto error = megaCmdListener->getError(); assert(error != nullptr); if (error->getErrorCode() != MegaError::API_OK) { auto path = std::unique_ptr(api->getNodePath(n)); std::string msg = "Failed to export node"; if (path != nullptr) { msg.append(" ").append(path.get()); } if (expireTime != 0 && !amIPro()) { msg.append(": Only PRO users can set an expiry time for links"); } else if (path != nullptr && strcmp(path.get(), "/") == 0) { msg.append(": The root folder cannot be exported"); } else { msg.append(": ").append(formatErrorAndMaySetErrorCode(*error)); } LOG_err << msg; return; } auto nexported = std::unique_ptr(api->getNodeByHandle(megaCmdListener->getRequest()->getNodeHandle())); if (!nexported) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Exported node not found"; return; } auto publicLink = std::unique_ptr(nexported->getPublicLink()); if (!publicLink) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Public link for exported node not found"; return; } auto nodepath = std::unique_ptr(api->getNodePath(nexported.get())); if (!nodepath) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Path for exported node not found"; return; } string publicPassProtectedLink; if (password) { // Encrypting links with passwords is a client-side operation that will be done regardless // of PRO status of the account. So we need to manually check for it before calling // `encryptLinkWithPassword`; the function itself will not fail check this. if (amIPro()) { megaCmdListener.reset(new MegaCmdListener(api, nullptr)); api->encryptLinkWithPassword(publicLink.get(), password->c_str(), megaCmdListener.get()); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "protect public link with password")) { publicPassProtectedLink = megaCmdListener->getRequest()->getText(); } } else { LOG_err << "Only PRO users can protect links with passwords. Showing UNPROTECTED link"; } } const int64_t actualExpireTime = nexported->getExpirationTime(); if (expireTime != 0 && !actualExpireTime) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Could not add expiration date to exported node"; } const string authKey(nexported->getWritableLinkAuthKey() ? nexported->getWritableLinkAuthKey() : ""); if (writable && authKey.empty()) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Failed to generate writable folder: missing auth key. Showing read-only link"; } const string nodeLink(publicPassProtectedLink.size() ? publicPassProtectedLink : publicLink.get()); OUTSTREAM << "Exported " << nodepath.get() << ": " << nodeLink; constexpr const char* prefix = "https://mega.nz/folder/"; if (authKey.size() && nodeLink.rfind(prefix, 0) == 0) { string authToken = nodeLink.substr(strlen(prefix)).append(":").append(authKey); OUTSTREAM << "\n AuthToken = " << authToken; if (megaHosted && megaCmdListener->getRequest()->getPassword()) { OUTSTREAM << "\n Share key encryption key = " << megaCmdListener->getRequest()->getPassword(); } } if (actualExpireTime) { OUTSTREAM << " expires at " << getReadableTime(nexported->getExpirationTime()); } OUTSTREAM << endl; } void MegaCmdExecuter::disableExport(MegaNode *n) { if (!n->isExported()) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Could not disable export: node not exported."; return; } MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->disableExport(n, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "disable export")) { MegaNode *nexported = api->getNodeByHandle(megaCmdListener->getRequest()->getNodeHandle()); if (nexported) { char *nodepath = api->getNodePath(nexported); OUTSTREAM << "Disabled export: " << nodepath << endl; delete[] nodepath; delete nexported; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Exported node not found!"; } } delete megaCmdListener; } std::pair MegaCmdExecuter::isSharePendingAndVerified(MegaNode* n, const char *email) const { if (!email) { return std::make_pair(false, false); } std::unique_ptr outShares (api->getOutShares(n)); if (outShares) { for (int i = 0; i < outShares->size(); i++) { auto outShare = outShares->get(i); auto shareEmail = outShare->getUser(); if (shareEmail && !strcmp(email, shareEmail)) { return std::make_pair(outShare->isPending(), outShare->isVerified()); } } } // just in case: loop pending ones too: std::unique_ptr pendingoutShares (api->getPendingOutShares(n)); if (pendingoutShares) { for (int i = 0; i < pendingoutShares->size(); i++) { auto pendingoutShare = pendingoutShares->get(i); auto shareEmail = pendingoutShare->getUser(); if (shareEmail && !strcmp(email, shareEmail)) { return std::make_pair(true, pendingoutShare->isVerified()); } } } return std::make_pair(false, false); } void MegaCmdExecuter::shareNode(MegaNode *n, string with, int level) { std::unique_ptr megaCmdListener(new MegaCmdListener(api)); api->openShareDialog(n, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EINCOMPLETE) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Unable to share folder. Your account security may need upgrading. Type \"" <getError(), "prepare sharing")) { return; } megaCmdListener.reset(new MegaCmdListener(api)); api->share(n, with.c_str(), level, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EINCOMPLETE) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Unable to share folder. Your account security may need upgrading. Type \"" <getError(), ( level != MegaShare::ACCESS_UNKNOWN ) ? "share node" : "disable share")) { MegaNode *nshared = api->getNodeByHandle(megaCmdListener->getRequest()->getNodeHandle()); if (nshared) { char *nodepath = api->getNodePath(nshared); if (megaCmdListener->getRequest()->getAccess() == MegaShare::ACCESS_UNKNOWN) { OUTSTREAM << "Stopped sharing " << nodepath << " with " << megaCmdListener->getRequest()->getEmail() << endl; } else { auto pendingAndVerified = isSharePendingAndVerified(n, megaCmdListener->getRequest()->getEmail()); auto pending = pendingAndVerified.first; auto verified = pendingAndVerified.second; OUTSTREAM << "New share: "; printOutShareInfo(nodepath, megaCmdListener->getRequest()->getEmail(), megaCmdListener->getRequest()->getAccess(), pending, verified); } delete[] nodepath; delete nshared; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Shared node not found!"; } } } void MegaCmdExecuter::disableShare(MegaNode *n, string with) { shareNode(n, with, MegaShare::ACCESS_UNKNOWN); } int MegaCmdExecuter::makedir(string remotepath, bool recursive, MegaNode *parentnode) { MegaNode *currentnode; if (parentnode) { currentnode = parentnode; } else { currentnode = api->getNodeByHandle(cwd); } if (currentnode) { string rest = remotepath; while (rest.length()) { bool lastleave = false; size_t possep = rest.find_first_of("/"); if (possep == string::npos) { possep = rest.length(); lastleave = true; } string newfoldername = rest.substr(0, possep); if (!rest.length()) { break; } if (newfoldername.length()) { MegaNode *existing_node = api->getChildNode(currentnode, newfoldername.c_str()); if (!existing_node) { if (!recursive && !lastleave) { LOG_err << "Use -p to create folders recursively"; if (currentnode != parentnode) delete currentnode; return MCMD_EARGS; } LOG_verbose << "Creating (sub)folder: " << newfoldername; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->createFolder(newfoldername.c_str(), currentnode, megaCmdListener); actUponCreateFolder(megaCmdListener); delete megaCmdListener; MegaNode *prevcurrentNode = currentnode; currentnode = api->getChildNode(currentnode, newfoldername.c_str()); if (prevcurrentNode != parentnode) delete prevcurrentNode; if (!currentnode) { LOG_err << "Couldn't get node for created subfolder: " << newfoldername; if (currentnode != parentnode) delete currentnode; return MCMD_INVALIDSTATE; } } else { if (currentnode != parentnode) delete currentnode; currentnode = existing_node; } if (lastleave && existing_node) { LOG_err << ((existing_node->getType() == MegaNode::TYPE_FILE)?"File":"Folder") << " already exists: " << remotepath; if (currentnode != parentnode) delete currentnode; return MCMD_INVALIDSTATE; } } //string rest = rest.substr(possep+1,rest.length()-possep-1); if (!lastleave) { rest = rest.substr(possep + 1, rest.length()); } else { break; } } if (currentnode != parentnode) delete currentnode; } else { return MCMD_EARGS; } return MCMD_OK; } string MegaCmdExecuter::getCurrentPath() { string toret; MegaNode *ncwd = api->getNodeByHandle(cwd); if (ncwd) { char *currentPath = api->getNodePath(ncwd); toret = string(currentPath); delete []currentPath; delete ncwd; } return toret; } long long MegaCmdExecuter::getVersionsSize(MegaNode *n) { long long toret = 0; MegaNodeList *versionNodes = api->getVersions(n); if (versionNodes) { for (int i = 0; i < versionNodes->size(); i++) { MegaNode *versionNode = versionNodes->get(i); toret += api->getSize(versionNode); } delete versionNodes; } MegaNodeList *children = api->getChildren(n); if (children) { for (int i = 0; i < children->size(); i++) { MegaNode *child = children->get(i); toret += getVersionsSize(child); } delete children; } return toret; } vector MegaCmdExecuter::listpaths(bool usepcre, string askedPath, bool discardFiles) { vector paths; if ((int)askedPath.size()) { vector *pathsToList = nodesPathsbypath(askedPath.c_str(), usepcre); if (pathsToList) { for (std::vector< string >::iterator it = pathsToList->begin(); it != pathsToList->end(); ++it) { string nodepath= *it; MegaNode *ncwd = api->getNodeByHandle(cwd); if (ncwd) { std::unique_ptr n = nodebypath(nodepath.c_str()); if (n) { if (n->getType() != MegaNode::TYPE_FILE) { nodepath += "/"; } if (!(discardFiles && (n->getType() == MegaNode::TYPE_FILE))) { paths.push_back(nodepath); } } else { LOG_debug << "Unexpected: matching path has no associated node: " << nodepath << ". Could have been deleted in the process"; } delete ncwd; } else { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Couldn't find woking folder (it might been deleted)"; } } pathsToList->clear(); delete pathsToList; } } return paths; } #ifdef _WIN32 //TODO: try to use these functions from somewhere else static std::wstring toUtf16String(const std::string& s, UINT codepage = CP_UTF8) { std::wstring ws; ws.resize(s.size() + 1); int nwchars = MultiByteToWideChar(codepage, 0, s.data(), int(s.size()), (LPWSTR)ws.data(), int(ws.size())); ws.resize(nwchars); return ws; } std::string toUtf8String(const std::wstring& ws, UINT codepage = CP_UTF8) { std::string s; s.resize((ws.size() + 1) * 4); int nchars = WideCharToMultiByte(codepage, 0, ws.data(), int(ws.size()), (LPSTR)s.data(), int(s.size()), NULL, NULL); s.resize(nchars); return s; } bool replaceW(std::wstring& str, const std::wstring& from, const std::wstring& to) { size_t start_pos = str.find(from); if (start_pos == std::wstring::npos) { return false; } str.replace(start_pos, from.length(), to); return true; } #endif vector MegaCmdExecuter::listLocalPathsStartingBy(string askedPath, bool discardFiles) { vector paths; #ifdef WIN32 string actualaskedPath = fs::u8path(askedPath).u8string(); char sep = (!askedPath.empty() && askedPath.find('/') != string::npos ) ?'/':'\\'; size_t postlastsep = actualaskedPath.find_last_of("/\\"); #else string actualaskedPath = askedPath; char sep = '/'; size_t postlastsep = actualaskedPath.find_last_of(sep); #endif if (postlastsep == 0) postlastsep++; // absolute paths string containingfolder = postlastsep == string::npos ? string() : actualaskedPath.substr(0, postlastsep); bool removeprefix = false; bool requiresseparatorafterunit = false; if (!containingfolder.size()) { containingfolder = "."; removeprefix= true; } #ifdef WIN32 else if (containingfolder.find(":") == 1 && (containingfolder.size() < 3 || ( containingfolder.at(2) != '/' && containingfolder.at(2) != '\\'))) { requiresseparatorafterunit = true; } #endif std::error_code ec; fs::directory_iterator dirIt(fs::u8path(containingfolder), ec); if (ec) { // We need to check the error directly because the iterator // might not be end() in certain underlying OS errors return paths; } for (const auto& dirEntry : dirIt) { if (discardFiles && !dirEntry.is_directory(ec)) { continue; } #ifdef _WIN32 wstring path = dirEntry.path().wstring(); #else string path = dirEntry.path().string(); #endif if (removeprefix) { path = path.substr(2); } if (requiresseparatorafterunit) { path.insert(2, 1, sep); } if (dirEntry.is_directory(ec)) { path.append(1, sep); } #ifdef _WIN32 // try to mimic the exact startup of the asked path to allow mix of '\' & '/' fs::path paskedpath = fs::u8path(askedPath); paskedpath.make_preferred(); wstring toreplace = paskedpath.wstring(); if (path.find(toreplace) == 0) { replaceW(path, toreplace, toUtf16String(askedPath)); } paths.push_back(toUtf8String(path)); #else paths.push_back(path); #endif } return paths; } vector MegaCmdExecuter::getlistusers() { vector users; MegaUserList* usersList = api->getContacts(); if (usersList) { for (int i = 0; i < usersList->size(); i++) { users.push_back(usersList->get(i)->getEmail()); } delete usersList; } return users; } vector MegaCmdExecuter::getNodeAttrs(string nodePath) { vector attrs; std::unique_ptr n = nodebypath(nodePath.c_str()); if (n) { //List node custom attributes MegaStringList *attrlist = n->getCustomAttrNames(); if (attrlist) { for (int a = 0; a < attrlist->size(); a++) { attrs.push_back(attrlist->get(a)); } delete attrlist; } } return attrs; } vector MegaCmdExecuter::getUserAttrs() { vector attrs; int i = 0; do { const char *catrn = api->userAttributeToString(i); if (strlen(catrn)) { attrs.push_back(catrn); } else { delete [] catrn; break; } delete [] catrn; i++; } while (true); return attrs; } vector MegaCmdExecuter::getsessions() { vector sessions; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->getExtendedAccountDetails(true, true, true, megaCmdListener); int trywaitout = megaCmdListener->trywait(3000); if (trywaitout) { return sessions; } if (checkNoErrors(megaCmdListener->getError(), "get sessions")) { MegaAccountDetails *details = megaCmdListener->getRequest()->getMegaAccountDetails(); if (details) { int numSessions = details->getNumSessions(); for (int i = 0; i < numSessions; i++) { MegaAccountSession * session = details->getSession(i); if (session) { if (session->isAlive()) { std::unique_ptr handle {api->userHandleToBase64(session->getHandle())}; sessions.push_back(handle.get()); } delete session; } } delete details; } } delete megaCmdListener; return sessions; } vector MegaCmdExecuter::getlistfilesfolders(string location) { vector toret; for (fs::directory_iterator iter(fs::u8path(location)); iter != fs::directory_iterator(); ++iter) { toret.push_back(iter->path().filename().u8string()); } return toret; } void MegaCmdExecuter::signup(string name, string passwd, string email) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); size_t spos = name.find(" "); string firstname = name.substr(0, spos); string lastname; if (spos != string::npos && ((spos + 1) < name.length())) { lastname = name.substr(spos+1); } if (lastname.empty()) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Please provide a valid name (with name and surname separated by \" \")"; return; } OUTSTREAM << "Signing up. name=" << firstname << ". surname=" << lastname<< endl; api->createAccount(email.c_str(), passwd.c_str(), firstname.c_str(), lastname.c_str(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "create account <" + email + ">")) { OUTSTREAM << "Account <" << email << "> created successfully. You will receive a confirmation link. Use \"confirm\" with the provided link to confirm that account" << endl; } delete megaCmdListener; MegaCmdListener *megaCmdListener2 = new MegaCmdListener(NULL); api->localLogout(megaCmdListener2); megaCmdListener2->wait(); checkNoErrors(megaCmdListener2->getError(), "logging out from ephemeral account"); delete megaCmdListener2; } void MegaCmdExecuter::signupWithPassword(string passwd) { return signup(name, passwd, login); } void MegaCmdExecuter::confirm(string passwd, string email, string link) { MegaCmdListener *megaCmdListener2 = new MegaCmdListener(NULL); api->confirmAccount(link.c_str(), passwd.c_str(), megaCmdListener2); megaCmdListener2->wait(); if (megaCmdListener2->getError()->getErrorCode() == MegaError::API_ENOENT) { LOG_err << "Invalid password"; } else if (checkNoErrors(megaCmdListener2->getError(), "confirm account")) { OUTSTREAM << "Account " << email << " confirmed successfully. You can login with it now" << endl; } delete megaCmdListener2; } void MegaCmdExecuter::confirmWithPassword(string passwd) { return confirm(passwd, login, link); } bool MegaCmdExecuter::pathExists(const std::string &path) { LocalPath localPath = LocalPath::fromAbsolutePath(path); std::unique_ptr fa(mFsAccessCMD->newfileaccess()); return fa->isfolder(localPath) || fa->isfile(localPath); } bool MegaCmdExecuter::IsFolder(string path) { #ifdef _WIN32 replaceAll(path,"/","\\"); #endif LocalPath localpath = LocalPath::fromAbsolutePath(path); std::unique_ptr fa = mFsAccessCMD->newfileaccess(); return fa->isfolder(localpath); } void MegaCmdExecuter::printTransfersHeader(const unsigned int PATHSIZE, bool printstate) { OUTSTREAM << "TYPE TAG " << getFixLengthString("SOURCEPATH ",PATHSIZE) << getFixLengthString("DESTINYPATH ",PATHSIZE) << " " << getFixLengthString(" PROGRESS",21); if (printstate) { OUTSTREAM << " " << "STATE"; } OUTSTREAM << endl; } void MegaCmdExecuter::printTransfer(MegaTransfer *transfer, const unsigned int PATHSIZE, bool printstate) { //Direction #ifdef _WIN32 OUTSTREAM << " " << ((transfer->getType() == MegaTransfer::TYPE_DOWNLOAD)?"D":"U") << " "; #else OUTSTREAM << " " << ((transfer->getType() == MegaTransfer::TYPE_DOWNLOAD)?"\u21d3":"\u21d1") << " "; #endif //TODO: handle TYPE_LOCAL_TCP_DOWNLOAD //type (transfer/normal) if (transfer->isSyncTransfer()) { #ifdef _WIN32 OUTSTREAM << "S"; #else OUTSTREAM << "\u21f5"; #endif } else if (transfer->isBackupTransfer()) { #ifdef _WIN32 OUTSTREAM << "B"; #else OUTSTREAM << "\u23eb"; #endif } else { OUTSTREAM << " " ; } OUTSTREAM << " " ; //tag OUTSTREAM << getRightAlignedString(SSTR(transfer->getTag()),7) << " "; if (transfer->getType() == MegaTransfer::TYPE_DOWNLOAD) { // source MegaNode * node = api->getNodeByHandle(transfer->getNodeHandle()); if (node) { char * nodepath = api->getNodePath(node); OUTSTREAM << getFixLengthString(nodepath,PATHSIZE); delete []nodepath; delete node; } else { globalTransferListener->completedTransfersMutex.lock(); OUTSTREAM << getFixLengthString(globalTransferListener->completedPathsByHandle[transfer->getNodeHandle()],PATHSIZE); globalTransferListener->completedTransfersMutex.unlock(); } OUTSTREAM << " "; //destination string dest = transfer->getParentPath() ? transfer->getParentPath() : ""; dest.append(transfer->getFileName()); OUTSTREAM << getFixLengthString(dest,PATHSIZE); } else { //source string source(transfer->getParentPath()?transfer->getParentPath():""); source.append(transfer->getFileName()); OUTSTREAM << getFixLengthString(source, PATHSIZE); OUTSTREAM << " "; //destination MegaNode * parentNode = api->getNodeByHandle(transfer->getParentHandle()); if (parentNode) { char * parentnodepath = api->getNodePath(parentNode); OUTSTREAM << getFixLengthString(parentnodepath ,PATHSIZE); delete []parentnodepath; delete parentNode; } else { OUTSTREAM << getFixLengthString("",PATHSIZE,'-'); LOG_warn << "Could not find destination (parent handle "<< ((transfer->getParentHandle()==INVALID_HANDLE)?" invalid":" valid") <<" ) for upload transfer. Source=" << transfer->getParentPath() << transfer->getFileName(); } } //progress float percent; if (transfer->getTotalBytes() == 0) { percent = 0; } else { percent = float(transfer->getTransferredBytes()*1.0/transfer->getTotalBytes()); } OUTSTREAM << " " << getFixLengthString(percentageToText(percent),7,' ',true) << " of " << getFixLengthString(sizeToText(transfer->getTotalBytes()),10,' ',true); //state if (printstate) { OUTSTREAM << " " << getTransferStateStr(transfer->getState()); } OUTSTREAM << endl; } void MegaCmdExecuter::printTransferColumnDisplayer(ColumnDisplayer *cd, MegaTransfer *transfer, bool printstate) { //Direction string type; #ifdef _WIN32 type += utf16ToUtf8((transfer->getType() == MegaTransfer::TYPE_DOWNLOAD)?L"\u25bc":L"\u25b2"); #else type += (transfer->getType() == MegaTransfer::TYPE_DOWNLOAD)?"\u21d3":"\u21d1"; #endif //TODO: handle TYPE_LOCAL_TCP_DOWNLOAD //type (transfer/normal) if (transfer->isSyncTransfer()) { #ifdef _WIN32 type += utf16ToUtf8(L"\u21a8"); #else type += "\u21f5"; #endif } else if (transfer->isBackupTransfer()) { #ifdef _WIN32 type += utf16ToUtf8(L"\u2191"); #else type += "\u23eb"; #endif } cd->addValue("TYPE",type); cd->addValue("TAG", SSTR(transfer->getTag())); //TODO: do SSTR within ColumnDisplayer if (transfer->getType() == MegaTransfer::TYPE_DOWNLOAD) { // source MegaNode * node = api->getNodeByHandle(transfer->getNodeHandle()); if (node) { char * nodepath = api->getNodePath(node); cd->addValue("SOURCEPATH",nodepath); delete []nodepath; delete node; } else { globalTransferListener->completedTransfersMutex.lock(); cd->addValue("SOURCEPATH",globalTransferListener->completedPathsByHandle[transfer->getNodeHandle()]); globalTransferListener->completedTransfersMutex.unlock(); } //destination string dest = transfer->getParentPath() ? transfer->getParentPath() : ""; dest.append(transfer->getFileName()); cd->addValue("DESTINYPATH",dest); } else { //source string source(transfer->getPath() ? transfer->getPath() : ""); if (source.empty()) //fallback to use parent + filename { source = (transfer->getParentPath() ? transfer->getParentPath() : ""); if (transfer->getFileName()) { source.append(transfer->getFileName()); //Notice, this may differ from name of the source file } } cd->addValue("SOURCEPATH",source); //destination std::unique_ptr parentNode(api->getNodeByHandle(transfer->getParentHandle())); if (parentNode) { std::unique_ptr parentNodePath{api->getNodePath(parentNode.get())}; std::string parentnodepathS(parentNodePath ? parentNodePath.get() : ""); if (transfer->getFileName()) { if (!parentnodepathS.empty() && parentnodepathS.back() != '/') { parentnodepathS.append("/"); } parentnodepathS.append(transfer->getFileName()); } cd->addValue("DESTINYPATH", parentnodepathS); } else { cd->addValue("DESTINYPATH","---------"); LOG_warn << "Could not find destination (parent handle "<< ((transfer->getParentHandle()==INVALID_HANDLE)?" invalid":" valid") <<" ) for upload transfer. Source=" << transfer->getParentPath() << transfer->getFileName(); } } //progress float percent; if (transfer->getTotalBytes() == 0) { percent = 0; } else { percent = float(transfer->getTransferredBytes()*1.0/transfer->getTotalBytes()); } stringstream osspercent; osspercent << percentageToText(percent) << " of " << getFixLengthString(sizeToText(transfer->getTotalBytes()),10,' ',true); cd->addValue("PROGRESS",osspercent.str()); //state if (printstate) { cd->addValue("STATE",getTransferStateStr(transfer->getState())); } } void MegaCmdExecuter::printBackupHeader(const unsigned int PATHSIZE) { OUTSTREAM << "TAG " << " "; OUTSTREAM << getFixLengthString("LOCALPATH ", PATHSIZE) << " "; OUTSTREAM << getFixLengthString("REMOTEPARENTPATH ", PATHSIZE) << " "; OUTSTREAM << getRightAlignedString("STATUS", 14); OUTSTREAM << endl; } void MegaCmdExecuter::printBackupSummary(int tag, const char * localfolder, const char *remoteparentfolder, string status, const unsigned int PATHSIZE) { OUTSTREAM << getFixLengthString(SSTR(tag),5) << " " << getFixLengthString(localfolder, PATHSIZE) << " " << getFixLengthString((remoteparentfolder?remoteparentfolder:"INVALIDPATH"), PATHSIZE) << " " << getRightAlignedString(status, 14) << endl; } void MegaCmdExecuter::printBackupDetails(MegaScheduledCopy *backup, const char *timeFormat) { if (backup) { string speriod = (backup->getPeriod() == -1)?backup->getPeriodString():getReadablePeriod(backup->getPeriod()/10); OUTSTREAM << " Max Backups: " << backup->getMaxBackups() << endl; OUTSTREAM << " Period: " << "\"" << speriod << "\"" << endl; OUTSTREAM << " Next backup scheduled for: " << getReadableTime(backup->getNextStartTime(), timeFormat); OUTSTREAM << endl; OUTSTREAM << " " << " -- CURRENT/LAST BACKUP --" << endl; OUTSTREAM << " " << getFixLengthString("FILES UP/TOT", 15); OUTSTREAM << " " << getFixLengthString("FOLDERS CREATED", 15); OUTSTREAM << " " << getRightAlignedString("PROGRESS ", 22); MegaTransferList * ml = backup->getFailedTransfers(); if (ml && ml->size()) { OUTSTREAM << " " << getRightAlignedString("FAILED TRANSFERS", 17); } OUTSTREAM << endl; string sfiles = SSTR(backup->getNumberFiles()) + "/" + SSTR(backup->getTotalFiles()); OUTSTREAM << " " << getRightAlignedString(sfiles, 8) << " "; OUTSTREAM << " " << getRightAlignedString(SSTR(backup->getNumberFolders()), 8) << " "; long long trabytes = backup->getTransferredBytes(); long long totbytes = backup->getTotalBytes(); double percent = totbytes?double(trabytes)/double(totbytes):0; string sprogress = sizeProgressToText(trabytes, totbytes) + " " + percentageToText(float(percent)); OUTSTREAM << " " << getRightAlignedString(sprogress,22); if (ml && ml->size()) { OUTSTREAM << getRightAlignedString(SSTR(backup->getFailedTransfers()->size()), 17); } delete ml; OUTSTREAM << endl; } } void MegaCmdExecuter::printBackupHistory(MegaScheduledCopy *backup, const char *timeFormat, MegaNode *parentnode, const unsigned int PATHSIZE) { bool firstinhistory = true; MegaStringList *msl = api->getBackupFolders(backup->getTag()); if (msl) { for (int i = 0; i < msl->size(); i++) { int datelength = int(getReadableTime(m_time(), timeFormat).size()); if (firstinhistory) { OUTSTREAM << " " << " -- HISTORY OF BACKUPS --" << endl; // print header OUTSTREAM << " " << getFixLengthString("NAME", PATHSIZE) << " "; OUTSTREAM << getFixLengthString("DATE", datelength+1) << " "; OUTSTREAM << getRightAlignedString("STATUS", 11)<< " "; OUTSTREAM << getRightAlignedString("FILES", 6)<< " "; OUTSTREAM << getRightAlignedString("FOLDERS", 7); OUTSTREAM << endl; firstinhistory = false; } string bpath = msl->get(i); size_t pos = bpath.find("_bk_"); string btime = ""; if (pos != string::npos) { btime = bpath.substr(pos+4); } pos = bpath.find_last_of("/\\"); string backupInstanceName = bpath; if (pos != string::npos) { backupInstanceName = bpath.substr(pos+1); } string printableDate = "UNKNOWN"; if (btime.size()) { struct tm dt; fillStructWithSYYmdHMS(btime,dt); printableDate = getReadableTime(m_mktime(&dt), timeFormat); } string backupInstanceStatus="NOT_FOUND"; long long nfiles = 0; long long nfolders = 0; if (parentnode) { std::unique_ptr backupInstanceNode = nodebypath(msl->get(i)); if (backupInstanceNode) { backupInstanceStatus = backupInstanceNode->getCustomAttr("BACKST"); auto listener = std::make_unique(); api->getFolderInfo(backupInstanceNode.get(), listener.get()); listener->wait(); if (checkNoErrors(listener->getError(), "get folder info")) { auto info = listener->getRequest()->getMegaFolderInfo(); nfiles += info->getNumFiles(); nfolders += info->getNumFolders(); } } } OUTSTREAM << " " << getFixLengthString(backupInstanceName, PATHSIZE) << " "; OUTSTREAM << getFixLengthString(printableDate, datelength+1) << " "; OUTSTREAM << getRightAlignedString(backupInstanceStatus, 11) << " "; OUTSTREAM << getRightAlignedString(SSTR(nfiles), 6)<< " "; OUTSTREAM << getRightAlignedString(SSTR(nfolders), 7); //OUTSTREAM << getRightAlignedString("PROGRESS", 10);// some info regarding progress or the like in case of failure could be interesting. Although we don't know total files/folders/bytes OUTSTREAM << endl; } delete msl; } } void MegaCmdExecuter::printBackup(int tag, MegaScheduledCopy *backup, const char *timeFormat, const unsigned int PATHSIZE, bool extendedinfo, bool showhistory, MegaNode *parentnode) { if (backup) { const char *nodepath = NULL; bool deleteparentnode = false; if (!parentnode) { parentnode = api->getNodeByHandle(backup->getMegaHandle()); if (parentnode) { nodepath = api->getNodePath(parentnode); deleteparentnode = true; } } else { nodepath = api->getNodePath(parentnode); } printBackupSummary(tag, backup->getLocalFolder(),nodepath,backupSatetStr(backup->getState()), PATHSIZE); if (extendedinfo) { printBackupDetails(backup, timeFormat); } delete []nodepath; if (showhistory && parentnode) { printBackupHistory(backup, timeFormat, parentnode, PATHSIZE); } if (deleteparentnode) { delete parentnode; } } else { OUTSTREAM << "BACKUP not found " << endl; } } void MegaCmdExecuter::printBackup(backup_struct *backupstruct, const char *timeFormat, const unsigned int PATHSIZE, bool extendedinfo, bool showhistory) { if (backupstruct->tag >= 0) { MegaScheduledCopy *backup = api->getScheduledCopyByTag(backupstruct->tag); if (backup) { printBackup(backupstruct->tag, backup, timeFormat, PATHSIZE, extendedinfo, showhistory); delete backup; } else { OUTSTREAM << "BACKUP not found: " << backupstruct->tag << endl; } } else { //merely print configuration printBackupSummary(backupstruct->tag, backupstruct->localpath.c_str(),"UNKNOWN"," FAILED", PATHSIZE); if (extendedinfo) { string speriod = (backupstruct->period == -1)?backupstruct->speriod:getReadablePeriod(backupstruct->period/10); OUTSTREAM << " Period: " << "\"" << speriod << "\"" << endl; OUTSTREAM << " Max. Backups: " << backupstruct->numBackups << endl; } } } void MegaCmdExecuter::doFind(MegaNode* nodeBase, const char *timeFormat, std::map *clflags, std::map *cloptions, string word, int printfileinfo, string pattern, bool usepcre, m_time_t minTime, m_time_t maxTime, int64_t minSize, int64_t maxSize) { struct criteriaNodeVector pnv; pnv.pattern = pattern; vector listOfMatches; pnv.nodesMatching = &listOfMatches; pnv.usepcre = usepcre; pnv.minTime = minTime; pnv.maxTime = maxTime; pnv.minSize = minSize; pnv.maxSize = maxSize; auto opt = getOption(cloptions, "type", ""); pnv.mType = opt == "f" ? MegaNode::TYPE_FILE : (opt == "d" ? MegaNode::TYPE_FOLDER : MegaNode::TYPE_UNKNOWN); processTree(nodeBase, includeIfMatchesCriteria, (void*)&pnv); for (std::vector< MegaNode * >::iterator it = listOfMatches.begin(); it != listOfMatches.end(); ++it) { MegaNode * n = *it; if (n) { string pathToShow; if ( word.size() > 0 && ( (word.find("/") == 0) || (word.find("..") != string::npos)) ) { char * nodepath = api->getNodePath(n); pathToShow = string(nodepath); delete [] nodepath; } else { pathToShow = getDisplayPath("", n); } if (getFlag(clflags, "print-only-handles")) { OUTSTREAM << "H:" << handleToBase64(n->getHandle()) << "" << endl; } else if (printfileinfo) { dumpNode(n, timeFormat, clflags, cloptions, 3, false, 1, pathToShow.c_str()); } else { OUTSTREAM << pathToShow; if (getFlag(clflags, "show-handles")) { OUTSTREAM << " getHandle()) << ">"; } OUTSTREAM << endl; } //notice: some nodes may be dumped twice delete n; } } listOfMatches.clear(); } string MegaCmdExecuter::getLPWD() { string relativePath = "."; LocalPath localRelativePath = LocalPath::fromRelativePath(relativePath); LocalPath localAbsolutePath; if (!mFsAccessCMD->expanselocalpath(localRelativePath, localAbsolutePath)) { LOG_err << " Unable to expanse local path . "; return "UNKNOWN"; } LOG_verbose << "LocalPath localRelativePath = LocalPath::fromRelativePath(" << relativePath << "): " << localAbsolutePath.toPath(false); return localAbsolutePath.toPath(false); } void MegaCmdExecuter::moveToDestination(const std::unique_ptr& n, string destiny) { assert(n); char* nodepath = api->getNodePath(n.get()); LOG_debug << "Moving : " << nodepath << " to " << destiny; delete []nodepath; string newname; std::unique_ptr tn = nodebypath(destiny.c_str(), nullptr, &newname); // target node // we have four situations: // 1. target path does not exist - fail // 2. target node exists and is folder - move // 3. target node exists and is file - delete and rename (unless same) // 4. target path exists, but filename does not - rename if (tn) { if (tn->getHandle() == n->getHandle()) { LOG_err << "Source and destiny are the same"; } else { if (newname.size()) //target not found, but tn has what was before the last "/" in the path. { if (tn->getType() == MegaNode::TYPE_FILE) { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << destiny << ": Not a directory"; return; } else //move and rename! { MegaCmdListener *megaCmdListener = new MegaCmdListener(nullptr); api->moveNode(n.get(), tn.get(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "move")) { MegaCmdListener *megaCmdListener = new MegaCmdListener(nullptr); api->renameNode(n.get(), newname.c_str(), megaCmdListener); megaCmdListener->wait(); checkNoErrors(megaCmdListener->getError(), "rename"); delete megaCmdListener; } else { LOG_debug << "Won't rename, since move failed " << n->getName() << " to " << tn->getName() << " : " << megaCmdListener->getError()->getErrorCode(); } delete megaCmdListener; } } else //target found { if (tn->getType() == MegaNode::TYPE_FILE) //move & remove old & rename new { // (there should never be any orphaned filenodes) std::unique_ptr tnParentNode(api->getNodeByHandle(tn->getParentHandle())); if (tnParentNode) { //move into the parent of target node MegaCmdListener *megaCmdListener = new MegaCmdListener(nullptr); std::unique_ptr parentNode(api->getNodeByHandle(tn->getParentHandle())); api->moveNode(n.get(), parentNode.get(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "move node")) { const char* name_to_replace = tn->getName(); //remove (replaced) target node if (n.get() != tn.get()) //just in case moving to same location { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->remove(tn.get(), megaCmdListener); //remove target node megaCmdListener->wait(); if (!checkNoErrors(megaCmdListener->getError(), "remove target node")) { LOG_err << "Couldnt move " << n->getName() << " to " << tn->getName() << " : " << megaCmdListener->getError()->getErrorCode(); } delete megaCmdListener; } // rename moved node with the new name if (strcmp(name_to_replace, n->getName())) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->renameNode(n.get(), name_to_replace, megaCmdListener); megaCmdListener->wait(); if (!checkNoErrors(megaCmdListener->getError(), "rename moved node")) { LOG_err << "Failed to rename moved node: " << megaCmdListener->getError()->getErrorString(); } delete megaCmdListener; } } delete megaCmdListener; } else { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_fatal << "Destiny node is orphan!!!"; } } else // target is a folder { MegaCmdListener *megaCmdListener = new MegaCmdListener(nullptr); api->moveNode(n.get(), tn.get(), megaCmdListener); megaCmdListener->wait(); checkNoErrors(megaCmdListener->getError(), "move node"); delete megaCmdListener; } } } } else //target not found (not even its folder), cant move { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << destiny << ": No such directory"; } } bool MegaCmdExecuter::isValidFolder(string destiny) { bool isdestinyavalidfolder = true; std::unique_ptr ndestiny = nodebypath(destiny.c_str());; if (ndestiny) { if (ndestiny->getType() == MegaNode::TYPE_FILE) { isdestinyavalidfolder = false; } } else { isdestinyavalidfolder = false; } return isdestinyavalidfolder; } std::string MegaCmdExecuter::getNodePathString(MegaNode *n) { const char *path = api->getNodePath(n); string toret(path); delete[] path; return toret; } void MegaCmdExecuter::copyNode(MegaNode *n, string destiny, MegaNode * tn, string &targetuser, string &newname) { if (tn) { if (tn->getHandle() == n->getHandle()) { LOG_err << "Source and destiny are the same"; } else { if (newname.size()) //target not found, but tn has what was before the last "/" in the path. { if (n->getType() == MegaNode::TYPE_FILE) { LOG_debug << "copy with new name: \"" << getNodePathString(n) << "\" to \"" << destiny << "\" newname=" << newname; //copy with new name MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->copyNode(n, tn, newname.c_str(), megaCmdListener); //only works for files megaCmdListener->wait(); checkNoErrors(megaCmdListener->getError(), "copy node"); delete megaCmdListener; } else //copy & rename { LOG_debug << "copy & rename: \"" << getNodePathString(n) << "\" to \"" << destiny << "\""; //copy with new name MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->copyNode(n, tn, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "copy node")) { MegaNode * newNode = api->getNodeByHandle(megaCmdListener->getRequest()->getNodeHandle()); if (newNode) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->renameNode(newNode, newname.c_str(), megaCmdListener); megaCmdListener->wait(); checkNoErrors(megaCmdListener->getError(), "rename new node"); delete megaCmdListener; delete newNode; } else { LOG_err << " Couldn't find new node created upon cp"; } } delete megaCmdListener; } } else { //target exists if (tn->getType() == MegaNode::TYPE_FILE) { if (n->getType() == MegaNode::TYPE_FILE) { LOG_debug << "overwriding target: \"" << getNodePathString(n) << "\" to \"" << destiny << "\""; // overwrite target if source and target are files MegaNode *tnParentNode = api->getNodeByHandle(tn->getParentHandle()); if (tnParentNode) // (there should never be any orphaned filenodes) { const char* name_to_replace = tn->getName(); //copy with new name MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->copyNode(n, tnParentNode, name_to_replace, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "copy with new name") ) { MegaHandle newNodeHandle = megaCmdListener->getRequest()->getNodeHandle(); delete megaCmdListener; delete tnParentNode; //remove target node if (tn->getHandle() != newNodeHandle )//&& newNodeHandle != n->getHandle()) { megaCmdListener = new MegaCmdListener(NULL); api->remove(tn, megaCmdListener); megaCmdListener->wait(); checkNoErrors(megaCmdListener->getError(), "delete target node"); delete megaCmdListener; } } } else { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_fatal << "Destiny node is orphan!!!"; } } else { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << "Cannot overwrite file with folder"; return; } } else //copying into folder { LOG_debug << "Copying into folder: \"" << getNodePathString(n) << "\" to \"" << destiny << "\""; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->copyNode(n, tn, megaCmdListener); megaCmdListener->wait(); checkNoErrors(megaCmdListener->getError(), "copy node"); delete megaCmdListener; } } } } else if (targetuser.size()) { LOG_debug << "Sending to user: \"" << getNodePathString(n) << "\" to \"" << targetuser << "\""; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->sendFileToUser(n,targetuser.c_str(),megaCmdListener); megaCmdListener->wait(); checkNoErrors(megaCmdListener->getError(), "send file to user"); delete megaCmdListener; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << destiny << " Couldn't find destination"; } } bool MegaCmdExecuter::establishBackup(string pathToBackup, MegaNode *n, int64_t period, string speriod, int numBackups) { bool attendpastbackups = true; //TODO: receive as parameter static int backupcounter = 0; LocalPath localAbsolutePath = LocalPath::fromAbsolutePath(pathToBackup); //this one would converts it to absolute if it's relative LocalPath expansedAbsolutePath; if (!mFsAccessCMD->expanselocalpath(localAbsolutePath, expansedAbsolutePath)) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << " Failed to expanse path"; } auto megaCmdListener = std::make_unique(api, nullptr); api->setScheduledCopy(expansedAbsolutePath.toPath(false).c_str(), n, attendpastbackups, period, speriod.c_str(), numBackups, megaCmdListener.get()); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "establish backup")) { backup_struct *thebackup = nullptr; bool sendBackupEvent = false; { std::lock_guard g(mtxBackupsMap); if (ConfigurationManager::configuredBackups.find(megaCmdListener->getRequest()->getFile()) != ConfigurationManager::configuredBackups.end()) { thebackup = ConfigurationManager::configuredBackups[megaCmdListener->getRequest()->getFile()]; if (thebackup->id == -1) { thebackup->id = backupcounter++; } } else { thebackup = new backup_struct; thebackup->id = backupcounter++; ConfigurationManager::configuredBackups[megaCmdListener->getRequest()->getFile()] = thebackup; sendBackupEvent = true; } thebackup->active = true; thebackup->handle = megaCmdListener->getRequest()->getNodeHandle(); thebackup->localpath = string(megaCmdListener->getRequest()->getFile()); thebackup->numBackups = numBackups; thebackup->period = period; thebackup->speriod = speriod; thebackup->failed = false; thebackup->tag = megaCmdListener->getRequest()->getTransferTag(); } if (sendBackupEvent) { auto wasFirstBackupConfiguredOpt = ConfigurationManager::savePropertyValue("firstBackupConfigured", true); if (!wasFirstBackupConfiguredOpt || !*wasFirstBackupConfiguredOpt) { sendEvent(StatsManager::MegacmdEvent::FIRST_CONFIGURED_SCHEDULED_BACKUP, api, false); } else { sendEvent(StatsManager::MegacmdEvent::SUBSEQUENT_CONFIGURED_SCHEDULED_BACKUP, api, false); } } std::unique_ptr nodepath(api->getNodePath(n)); LOG_info << "Added backup: " << megaCmdListener->getRequest()->getFile() << " to " << nodepath; return true; } else { bool foundbytag = false; // find by tag in configured (modification failed) for (std::map::iterator itr = ConfigurationManager::configuredBackups.begin(); itr != ConfigurationManager::configuredBackups.end(); itr++) { if (itr->second->tag == megaCmdListener->getRequest()->getTransferTag()) { backup_struct *thebackup = itr->second; foundbytag = true; thebackup->handle = megaCmdListener->getRequest()->getNodeHandle(); thebackup->localpath = string(megaCmdListener->getRequest()->getFile()); thebackup->numBackups = megaCmdListener->getRequest()->getNumRetry(); thebackup->period = megaCmdListener->getRequest()->getNumber(); thebackup->speriod = string(megaCmdListener->getRequest()->getText());; thebackup->failed = true; } } if (!foundbytag) { std::map::iterator itr = ConfigurationManager::configuredBackups.find(megaCmdListener->getRequest()->getFile()); if ( itr != ConfigurationManager::configuredBackups.end()) { if (megaCmdListener->getError()->getErrorCode() != MegaError::API_EEXIST) { itr->second->failed = true; } itr->second->id = backupcounter++; } } } return false; } void MegaCmdExecuter::confirmCancel(const char* confirmlink, const char* pass) { auto megaCmdListener = std::make_unique(nullptr); api->confirmCancelAccount(confirmlink, pass, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() == MegaError::API_ETOOMANY) { LOG_err << "Confirm cancel account failed: too many attempts"; } else if (megaCmdListener->getError()->getErrorCode() == MegaError::API_ENOENT || megaCmdListener->getError()->getErrorCode() == MegaError::API_EKEY) { LOG_err << "Confirm cancel account failed: invalid link/password"; } // We consider ESID (bad session ID) as successful because of a data race in the SDK else if (megaCmdListener->getError()->getErrorCode() == MegaError::API_ESID || checkNoErrors(megaCmdListener->getError(), "confirm cancel account")) { OUTSTREAM << "CONFIRM Account cancelled successfully" << endl; megaCmdListener = std::make_unique(nullptr); api->localLogout(megaCmdListener.get()); actUponLogout(megaCmdListener.get(), false); } } void MegaCmdExecuter::processPath(string path, bool usepcre, bool& firstone, void (*nodeprocessor)(MegaCmdExecuter *, MegaNode *, bool), MegaCmdExecuter *context) { if (isRegExp(path)) { vector> nodes = nodesbypath(path.c_str(), usepcre); if (nodes.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Path not found: " << path; } for (const auto& n : nodes) { assert(n); nodeprocessor(context, n.get(), firstone); firstone = false; } } else // non-regexp { std::unique_ptr n = nodebypath(path.c_str()); if (n) { nodeprocessor(context, n.get(), firstone); firstone = false; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Path not found: " << path; } } } #ifdef HAVE_LIBUV void forwarderRemoveWebdavLocation(MegaCmdExecuter* context, MegaNode *n, bool firstone) { context->removeWebdavLocation(n, firstone); } void forwarderAddWebdavLocation(MegaCmdExecuter* context, MegaNode *n, bool firstone) { context->addWebdavLocation(n, firstone); } void forwarderRemoveFtpLocation(MegaCmdExecuter* context, MegaNode *n, bool firstone) { context->removeFtpLocation(n, firstone); } void forwarderAddFtpLocation(MegaCmdExecuter* context, MegaNode *n, bool firstone) { context->addFtpLocation(n, firstone); } void MegaCmdExecuter::removeWebdavLocation(MegaNode *n, bool firstone, string name) { char *actualNodePath = api->getNodePath(n); api->httpServerRemoveWebDavAllowedNode(n->getHandle()); mtxWebDavLocations.lock(); list servedpaths = ConfigurationManager::getConfigurationValueList("webdav_served_locations"); size_t sizeprior = servedpaths.size(); servedpaths.remove(actualNodePath); size_t sizeafter = servedpaths.size(); if (!sizeafter) { api->httpServerStop(); ConfigurationManager::savePropertyValue("webdav_port", -1); //so as not to load server on startup } ConfigurationManager::savePropertyValueList("webdav_served_locations", servedpaths); mtxWebDavLocations.unlock(); if (sizeprior != sizeafter) { OUTSTREAM << (name.size()?name:actualNodePath) << " no longer served via webdav" << endl; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << (name.size()?name:actualNodePath) << " is not served via webdav"; } delete []actualNodePath; } void MegaCmdExecuter::addWebdavLocation(MegaNode *n, bool firstone, string name) { std::unique_ptr actualNodePath(api->getNodePath(n)); std::unique_ptr l(api->httpServerGetLocalWebDavLink(n)); OUTSTREAM << "Serving via webdav " << (name.size() ? name : actualNodePath.get()) << ": " << l.get() << endl; { std::lock_guard g(mtxWebDavLocations); list servedpaths = ConfigurationManager::getConfigurationValueList("webdav_served_locations"); if (!ConfigurationManager::getConfigurationValue("firstWebDavConfigured", false)) { sendEvent(StatsManager::MegacmdEvent::FIRST_CONFIGURED_WEBDAV, api, false); ConfigurationManager::savePropertyValue("firstWebDavConfigured", true); } else if (std::find(servedpaths.begin(), servedpaths.end(), actualNodePath.get()) == servedpaths.end()) { // Send event only if not already on the list sendEvent(StatsManager::MegacmdEvent::SUBSEQUENT_CONFIGURED_WEBDAV, api, false); } servedpaths.push_back(actualNodePath.get()); servedpaths.sort(); servedpaths.unique(); ConfigurationManager::savePropertyValueList("webdav_served_locations", servedpaths); } } void MegaCmdExecuter::removeFtpLocation(MegaNode *n, bool firstone, string name) { char *actualNodePath = api->getNodePath(n); api->ftpServerRemoveAllowedNode(n->getHandle()); mtxFtpLocations.lock(); list servedpaths = ConfigurationManager::getConfigurationValueList("ftp_served_locations"); size_t sizeprior = servedpaths.size(); servedpaths.remove(actualNodePath); size_t sizeafter = servedpaths.size(); if (!sizeafter) { api->ftpServerStop(); ConfigurationManager::savePropertyValue("ftp_port", -1); //so as not to load server on startup } ConfigurationManager::savePropertyValueList("ftp_served_locations", servedpaths); mtxFtpLocations.unlock(); if (sizeprior != sizeafter) { OUTSTREAM << (name.size()?name:actualNodePath) << " no longer served via ftp" << endl; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << (name.size()?name:actualNodePath) << " is not served via ftp"; } delete []actualNodePath; } void MegaCmdExecuter::addFtpLocation(MegaNode *n, bool firstone, string name) { std::unique_ptr actualNodePath(api->getNodePath(n)); std::unique_ptr l(api->ftpServerGetLocalLink(n)); OUTSTREAM << "Serving via ftp " << (name.size() ? name : n->getName()) << ": " << l.get() << endl; { std::lock_guard g(mtxFtpLocations); list servedpaths = ConfigurationManager::getConfigurationValueList("ftp_served_locations"); if (!ConfigurationManager::getConfigurationValue("firstFtpConfigured", false)) { sendEvent(StatsManager::MegacmdEvent::FIRST_CONFIGURED_FTP, api, false); ConfigurationManager::savePropertyValue("firstFtpConfigured", true); } else if (std::find(servedpaths.begin(), servedpaths.end(), actualNodePath.get()) == servedpaths.end()) { // Send event only if not already on the list sendEvent(StatsManager::MegacmdEvent::SUBSEQUENT_CONFIGURED_FTP, api, false); } servedpaths.push_back(actualNodePath.get()); servedpaths.sort(); servedpaths.unique(); ConfigurationManager::savePropertyValueList("ftp_served_locations", servedpaths); } } #endif void MegaCmdExecuter::catFile(MegaNode *n) { if (n->getType() != MegaNode::TYPE_FILE) { LOG_err << " Unable to cat: not a file"; setCurrentThreadOutCode(MCMD_EARGS); return; } long long nsize = api->getSize(n); if (!nsize) { return; } long long end = nsize; long long start = 0; MegaCmdCatTransferListener *mcctl = new MegaCmdCatTransferListener(&OUTSTREAM, api, sandboxCMD); api->startStreaming(n, start, end-start, mcctl); mcctl->wait(); if (checkNoErrors(mcctl->getError(), "cat streaming from " +SSTR(start) + " to " + SSTR(end) )) { char * npath = api->getNodePath(n); LOG_verbose << "Streamed: " << npath << " from " << start << " to " << end; delete []npath; } delete mcctl; } void MegaCmdExecuter::printInfoFile(MegaNode *n, bool &firstone, int PATHSIZE) { char * nodepath = api->getNodePath(n); char *fattrs = n->getFileAttrString(); if (fattrs == NULL) { LOG_warn << " Unable to get attributes for node " << nodepath; } if (firstone) { OUTSTREAM << getFixLengthString("FILE", PATHSIZE); OUTSTREAM << getFixLengthString("WIDTH", 7); OUTSTREAM << getFixLengthString("HEIGHT", 7); OUTSTREAM << getFixLengthString("FPS", 4); OUTSTREAM << getFixLengthString("PLAYTIME", 10); OUTSTREAM << endl; firstone = false; } OUTSTREAM << getFixLengthString(nodepath, PATHSIZE-1) << " "; delete []nodepath; OUTSTREAM << getFixLengthString( (n->getWidth() == -1) ? "---" : SSTR(n->getWidth()) , 6) << " "; OUTSTREAM << getFixLengthString( (n->getHeight() == -1) ? "---" : SSTR(n->getHeight()) , 6) << " "; if (fattrs == NULL) { OUTSTREAM << getFixLengthString("---", 3) << " "; } else { MediaProperties mp = MediaProperties::decodeMediaPropertiesAttributes(fattrs, (uint32_t*)(n->getNodeKey()->data() + FILENODEKEYLENGTH / 2) ); OUTSTREAM << getFixLengthString( (mp.fps == 0) ? "---" : SSTR(mp.fps) , 3) << " "; } OUTSTREAM << getFixLengthString( (n->getDuration() == -1) ? "---" : getReadablePeriod(n->getDuration()) , 10) << " "; OUTSTREAM << endl; } bool MegaCmdExecuter::printUserAttribute(int a, string user, bool onlylist) { const char *catrn = api->userAttributeToString(a); string attrname = catrn; delete [] catrn; const char *catrln = api->userAttributeToLongName(a); string longname = catrln; delete [] catrln; if (attrname.size()) { if (onlylist) { OUTSTREAM << longname << " (" << attrname << ")" << endl; } else { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); if (user.size()) { api->getUserAttribute(user.c_str(), a, megaCmdListener); } else { api->getUserAttribute(a, megaCmdListener); } megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), string("get user attribute ") + attrname)) { //int iattr = int(megaCmdListener->getRequest()->getParamType()); const char *value = megaCmdListener->getRequest()->getText(); //if (!value) value = megaCmdListener->getRequest()->getMegaStringMap()->; string svalue; try { if (value) { svalue = string(value); } else { svalue = "NOT PRINTABLE"; } } catch (exception e) { svalue = "NOT PRINTABLE"; } OUTSTREAM << "\t" << longname << " (" << attrname << ")" << " = " << svalue << endl; } delete megaCmdListener; } return true; } return false; } bool MegaCmdExecuter::setProxy(const std::string &url, const std::string &username, const std::string &password, int proxyType) { MegaProxy mpx; if (url.size()) { mpx.setProxyURL(url.c_str()); } if (username.size()) { mpx.setCredentials(username.c_str(), password.c_str()); } mpx.setProxyType(proxyType); std::vector megaapis; //TODO: add apiFolders to that list megaapis.push_back(api); bool failed = false; for (auto api: megaapis) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->setProxySettings(&mpx, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "(un)setting proxy")) { //TODO: connectivity check! // review connectivity check branch } else { failed = true; } delete megaCmdListener; } if (!failed) { ConfigurationManager::savePropertyValue("proxy_url", mpx.getProxyURL()?mpx.getProxyURL():""); ConfigurationManager::savePropertyValue("proxy_type", mpx.getProxyType()); ConfigurationManager::savePropertyValue("proxy_username", mpx.getUsername()?mpx.getUsername():""); ConfigurationManager::savePropertyValue("proxy_password", mpx.getPassword()?mpx.getPassword():""); if (mpx.getProxyType() == MegaProxy::PROXY_NONE) { OUTSTREAM << "Proxy unset correctly" << endl ; } else { OUTSTREAM << "Proxy set: " << (mpx.getProxyURL()?mpx.getProxyURL():"") << " type = " << getProxyTypeStr(mpx.getProxyType()) << endl; broadcastMessage(string("Using proxy: ").append((mpx.getProxyURL()?mpx.getProxyURL():"")) .append(" type = ").append(getProxyTypeStr(mpx.getProxyType())), true); } } else { LOG_err << "Unable to configure proxy"; broadcastMessage("Unable to configure proxy", true); } return !failed; } bool checkAtLeastNArgs(const vector &words, size_t n) { if (words.size() < n) { setCurrentThreadOutCode(MCMD_EARGS); assert(!words.empty()); LOG_err << words[0] << ": Invalid number of arguments"; LOG_err << "Usage: " << getUsageStr(words[0].c_str()); return false; } return true; } bool checkExactlyNArgs(const vector &words, size_t n) { if (words.size() != n) { setCurrentThreadOutCode(MCMD_EARGS); assert(!words.empty()); LOG_err << words[0] << ": Invalid number of arguments"; LOG_err << "Usage: " << getUsageStr(words[0].c_str()); return false; } return true; } void MegaCmdExecuter::executecommand(vector words, map *clflags, map *cloptions) { if (words[0] == "ls") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } int recursive = getFlag(clflags, "R") + getFlag(clflags, "r"); int extended_info = getFlag(clflags, "a"); int show_versions = getFlag(clflags, "versions"); bool summary = getFlag(clflags, "l"); bool firstprint = true; bool humanreadable = getFlag(clflags, "h"); bool treelike = getFlag(clflags,"tree"); recursive += treelike?1:0; if ((int)words.size() > 1) { unescapeifRequired(words[1]); string rNpath = "NULL"; if (words[1].find('/') != string::npos) { string cwpath = getCurrentPath(); if (words[1].find(cwpath) == string::npos) { rNpath = ""; } else { rNpath = cwpath; } } if (isRegExp(words[1])) { vector *pathsToList = nodesPathsbypath(words[1].c_str(), getFlag(clflags,"use-pcre")); if (pathsToList && pathsToList->size()) { for (std::vector< string >::iterator it = pathsToList->begin(); it != pathsToList->end(); ++it) { string nodepath= *it; MegaNode *ncwd = api->getNodeByHandle(cwd); if (ncwd) { std::unique_ptr n = nodebypath(nodepath.c_str()); if (n) { if (!n->getType() == MegaNode::TYPE_FILE) { OUTSTREAM << nodepath << ": " << endl; } if (summary) { if (firstprint) { dumpNodeSummaryHeader(getTimeFormatFromSTR(getOption(cloptions, "time-format","SHORT")), clflags, cloptions); firstprint = false; } dumpTreeSummary(n.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format","SHORT")), clflags, cloptions, recursive, show_versions, 0, humanreadable, rNpath); } else { vector lfs; dumptree(n.get(), treelike, lfs, getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, recursive, extended_info, show_versions, 0, rNpath); } if ((!n->getType() == MegaNode::TYPE_FILE ) && ((it + 1) != pathsToList->end())) { OUTSTREAM << endl; } } else { LOG_debug << "Unexpected: matching path has no associated node: " << nodepath << ". Could have been deleted in the process"; } delete ncwd; } else { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Couldn't find woking folder (it might been deleted)"; } } pathsToList->clear(); delete pathsToList; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Couldn't find \"" << words[1] << "\""; } } else { std::unique_ptr n = nodebypath(words[1].c_str()); if (n) { if (summary) { if (firstprint) { dumpNodeSummaryHeader( getTimeFormatFromSTR(getOption(cloptions, "time-format", "SHORT")), clflags, cloptions); firstprint = false; } dumpTreeSummary( n.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format", "SHORT")), clflags, cloptions, recursive, show_versions, 0, humanreadable, rNpath); } else { if (treelike) OUTSTREAM << words[1] << endl; vector lfs; dumptree(n.get(), treelike, lfs, getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, recursive, extended_info, show_versions, 0, rNpath); } } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Couldn't find " << words[1]; } } } else { std::unique_ptr n(api->getNodeByHandle(cwd)); if (n) { if (summary) { if (firstprint) { dumpNodeSummaryHeader( getTimeFormatFromSTR(getOption(cloptions, "time-format", "SHORT")), clflags, cloptions); firstprint = false; } dumpTreeSummary(n.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format", "SHORT")), clflags, cloptions, recursive, show_versions, 0, humanreadable, "NULL"); } else { if (treelike) OUTSTREAM << "." << endl; vector lfs; dumptree(n.get(), treelike, lfs, getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, recursive, extended_info, show_versions); } } } return; } else if (words[0] == "find") { string pattern = getOption(cloptions, "pattern", "*"); int printfileinfo = getFlag(clflags,"l"); if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } m_time_t minTime = -1; m_time_t maxTime = -1; string mtimestring = getOption(cloptions, "mtime", ""); if ("" != mtimestring && !getMinAndMaxTime(mtimestring, &minTime, &maxTime)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid time " << mtimestring; return; } int64_t minSize = -1; int64_t maxSize = -1; string sizestring = getOption(cloptions, "size", ""); if ("" != sizestring && !getMinAndMaxSize(sizestring, &minSize, &maxSize)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid time " << sizestring; return; } if (words.size() <= 1) { std::unique_ptr n(api->getNodeByHandle(cwd)); doFind(n.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, "", printfileinfo, pattern, getFlag(clflags,"use-pcre"), minTime, maxTime, minSize, maxSize); } for (int i = 1; i < (int)words.size(); i++) { if (isRegExp(words[i])) { vector> nodesToFind = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodesToFind.size()) { for (const auto& node : nodesToFind) { assert(node); doFind(node.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, words[i], printfileinfo, pattern, getFlag(clflags,"use-pcre"), minTime, maxTime, minSize, maxSize); } } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << words[i] << ": No such file or directory"; } } else { std::unique_ptr n = nodebypath(words[i].c_str()); if (!n) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Couldn't find " << words[i]; } else { doFind(n.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, words[i], printfileinfo, pattern, getFlag(clflags,"use-pcre"), minTime, maxTime, minSize, maxSize); } } } } #if defined(_WIN32) || defined(__APPLE__) else if (words[0] == "update") { string sauto = getOption(cloptions, "auto", ""); transform(sauto.begin(), sauto.end(), sauto.begin(), [](char c) { return char(::tolower(c)); }); if (sauto == "off") { stopcheckingForUpdates(); OUTSTREAM << "Automatic updates disabled" << endl; } else if (sauto == "on") { startcheckingForUpdates(); OUTSTREAM << "Automatic updates enabled" << endl; } else if (sauto == "query") { OUTSTREAM << "Automatic updates " << (ConfigurationManager::getConfigurationValue("autoupdate", false)?"enabled":"disabled") << endl; } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("update"); } return; } #endif else if (words[0] == "cd") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() > 1) { std::unique_ptr n = nodebypath(words[1].c_str()); if (n) { if (n->getType() == MegaNode::TYPE_FILE) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << words[1] << ": Not a directory"; } else { cwd = n->getHandle(); updateprompt(api); } } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << words[1] << ": No such file or directory"; } } else { MegaNode * rootNode = api->getRootNode(); if (!rootNode) { LOG_err << "nodes not fetched"; setCurrentThreadOutCode(MCMD_NOFETCH); delete rootNode; return; } cwd = rootNode->getHandle(); updateprompt(api); delete rootNode; } return; } else if (words[0] == "rm") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() > 1) { if (isCurrentThreadInteractive()) { //clear all previous nodes to confirm delete (could have been not cleared in case of ctrl+c) mNodesToConfirmDelete.clear(); } bool force = getFlag(clflags, "f"); bool none = false; for (unsigned int i = 1; i < words.size(); i++) { unescapeifRequired(words[i]); if (isRegExp(words[i])) { vector> nodesToDelete = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodesToDelete.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << words[i] << ": No such file or directory"; } for (const auto& node : nodesToDelete) { assert(node); int confirmationCode = deleteNode(node, api, getFlag(clflags, "r"), force); if (confirmationCode == MCMDCONFIRM_ALL) { force = true; } else if (confirmationCode == MCMDCONFIRM_NONE) { none = true; } } } else if (!none) { std::unique_ptr nodeToDelete = nodebypath(words[i].c_str()); if (!nodeToDelete) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << words[i] << ": No such file or directory"; } else { int confirmationCode = deleteNode(nodeToDelete, api, getFlag(clflags, "r"), force); if (confirmationCode == MCMDCONFIRM_ALL) { force = true; } else if (confirmationCode == MCMDCONFIRM_NONE) { none = true; } } } } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("rm"); } return; } else if (words[0] == "mv") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() > 2) { string destiny = words[words.size()-1]; unescapeifRequired(destiny); if (words.size() > 3 && !isValidFolder(destiny)) { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << destiny << " must be a valid folder"; return; } for (unsigned int i=1;i<(words.size()-1);i++) { string source = words[i]; unescapeifRequired(source); if (isRegExp(source)) { vector> nodesToList = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodesToList.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << source << ": No such file or directory"; } bool destinyisok = true; if (nodesToList.size() > 1 && !isValidFolder(destiny)) { destinyisok = false; setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << destiny << " must be a valid folder"; } if (destinyisok) { for (const auto& node : nodesToList) { assert(node); moveToDestination(node, destiny); } } } else { std::unique_ptr n = nodebypath(source.c_str()); if (n) { moveToDestination(n, destiny); } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << source << ": No such file or directory"; } } } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("mv"); } return; } else if (words[0] == "cp") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() > 2) { string destiny = words[words.size()-1]; string targetuser; string newname; std::unique_ptr tn = nodebypath(destiny.c_str(), &targetuser, &newname); if (words.size() > 3 && !isValidFolder(destiny) && !targetuser.size()) { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << destiny << " must be a valid folder"; return; } for (unsigned int i=1;i<(words.size()-1);i++) { string source = words[i]; if (isRegExp(source)) { vector> nodesToCopy = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodesToCopy.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << source << ": No such file or directory"; } bool destinyisok = true; if (nodesToCopy.size() > 1 && !isValidFolder(destiny) && !targetuser.size()) { destinyisok = false; setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << destiny << " must be a valid folder"; } if (destinyisok) { for (const auto& n : nodesToCopy) { assert(n); copyNode(n.get(), destiny, tn.get(), targetuser, newname); } } } else { std::unique_ptr n = nodebypath(source.c_str()); if (n) { copyNode(n.get(), destiny, tn.get(), targetuser, newname); } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << source << ": No such file or directory"; } } } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("cp"); } return; } else if (words[0] == "du") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } int PATHSIZE = getintOption(cloptions,"path-display-size"); if (!PATHSIZE) { // get screen size for output purposes unsigned int width = getNumberOfCols(75); PATHSIZE = min(50,int(width-22)); } PATHSIZE = max(0, PATHSIZE); long long totalSize = 0; long long currentSize = 0; long long totalVersionsSize = 0; string dpath; if (words.size() == 1) { words.push_back("."); } bool humanreadable = getFlag(clflags, "h"); bool show_versions_size = getFlag(clflags, "versions"); bool firstone = true; for (unsigned int i = 1; i < words.size(); i++) { unescapeifRequired(words[i]); if (isRegExp(words[i])) { vector> nodesToList = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); for (const auto& n : nodesToList) { assert(n); if (firstone)//print header { OUTSTREAM << getFixLengthString("FILENAME", PATHSIZE) << getFixLengthString("SIZE", 12, ' ', true); if (show_versions_size) { OUTSTREAM << getFixLengthString("S.WITH VERS", 12, ' ', true);; } OUTSTREAM << endl; firstone = false; } currentSize = api->getSize(n.get()); totalSize += currentSize; dpath = getDisplayPath(words[i], n.get()); OUTSTREAM << getFixLengthString(dpath+":",PATHSIZE) << getFixLengthString(sizeToText(currentSize, true, humanreadable), 12, ' ', true); if (show_versions_size) { long long sizeWithVersions = getVersionsSize(n.get()); OUTSTREAM << getFixLengthString(sizeToText(sizeWithVersions, true, humanreadable), 12, ' ', true); totalVersionsSize += sizeWithVersions; } OUTSTREAM << endl; } } else { std::unique_ptr n = nodebypath(words[i].c_str()); if (!n) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << words[i] << ": No such file or directory"; return; } currentSize = api->getSize(n.get()); totalSize += currentSize; dpath = getDisplayPath(words[i], n.get()); if (dpath.size()) { if (firstone)//print header { OUTSTREAM << getFixLengthString("FILENAME",PATHSIZE) << getFixLengthString("SIZE", 12, ' ', true); if (show_versions_size) { OUTSTREAM << getFixLengthString("S.WITH VERS", 12, ' ', true);; } OUTSTREAM << endl; firstone = false; } OUTSTREAM << getFixLengthString(dpath+":",PATHSIZE) << getFixLengthString(sizeToText(currentSize, true, humanreadable), 12, ' ', true); if (show_versions_size) { long long sizeWithVersions = getVersionsSize(n.get()); OUTSTREAM << getFixLengthString(sizeToText(sizeWithVersions, true, humanreadable), 12, ' ', true); totalVersionsSize += sizeWithVersions; } OUTSTREAM << endl; } } } if (!firstone) { for (int i = 0; i < PATHSIZE+12 +(show_versions_size?12:0) ; i++) { OUTSTREAM << "-"; } OUTSTREAM << endl; OUTSTREAM << getFixLengthString("Total storage used:",PATHSIZE) << getFixLengthString(sizeToText(totalSize, true, humanreadable), 12, ' ', true); //OUTSTREAM << "Total storage used: " << setw(22) << sizeToText(totalSize, true, humanreadable); if (show_versions_size) { OUTSTREAM << getFixLengthString(sizeToText(totalVersionsSize, true, humanreadable), 12, ' ', true); } OUTSTREAM << endl; } return; } else if (words[0] == "cat") { if (words.size() < 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("cat"); return; } for (int i = 1; i < (int)words.size(); i++) { if (isPublicLink(words[i])) { string publicLink = words[i]; if (!decryptLinkIfEncrypted(api, publicLink, cloptions)) { return; } if (getLinkType(publicLink) == MegaNode::TYPE_FILE) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->getPublicNode(publicLink.c_str(), megaCmdListener); megaCmdListener->wait(); if (!checkNoErrors(megaCmdListener->getError(), "cat public node")) { if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EARGS) { LOG_err << "The link provided might be incorrect: " << publicLink.c_str(); } else if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EINCOMPLETE) { LOG_err << "The key is missing or wrong " << publicLink.c_str(); } } else { if (megaCmdListener->getRequest()->getFlag()) { LOG_err << "Key not valid " << publicLink.c_str(); setCurrentThreadOutCode(MCMD_EARGS); } else { MegaNode *n = megaCmdListener->getRequest()->getPublicMegaNode(); if (n) { catFile(n); delete n; } } } delete megaCmdListener; } else //TODO: detect if referenced file within public link and in that case, do login and cat it { LOG_err << "Public link is not a file"; setCurrentThreadOutCode(MCMD_EARGS); } } else if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Unable to cat " << words[i] << ": Not logged in."; } else { unescapeifRequired(words[i]); if (isRegExp(words[i])) { vector> nodes = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodes.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Nodes not found: " << words[i]; } for (const auto& n : nodes) { assert(n); catFile(n.get()); } } else { std::unique_ptr n = nodebypath(words[i].c_str()); if (n) { catFile(n.get()); } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Node not found: " << words[i]; } } } } } else if (words[0] == "mediainfo") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() < 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("mediainfo"); return; } int PATHSIZE = getintOption(cloptions,"path-display-size"); if (!PATHSIZE) { // get screen size for output purposes unsigned int width = getNumberOfCols(75); PATHSIZE = min(50,int(width-28)); } PATHSIZE = max(0, PATHSIZE); bool firstone = true; for (int i = 1; i < (int)words.size(); i++) { unescapeifRequired(words[i]); if (isRegExp(words[i])) { vector> nodes = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodes.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Nodes not found: " << words[i]; } for (const auto& n : nodes) { assert(n); printInfoFile(n.get(), firstone, PATHSIZE); } } else { std::unique_ptr n = nodebypath(words[i].c_str()); if (n) { printInfoFile(n.get(), firstone, PATHSIZE); } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Node not found: " << words[i]; } } } } else if (words[0] == "get") { bool background = getFlag(clflags,"q"); int clientID = getintOption(cloptions, "clientID", -1); if (words.size() > 1 && words.size() < 4) { string path = "./"; if (background) { clientID = -1; } auto megaCmdMultiTransferListener = std::make_shared(api, sandboxCMD, nullptr, clientID); bool ignorequotawarn = getFlag(clflags,"ignore-quota-warn"); bool destinyIsFolder = false; if (isPublicLink(words[1])) { string publicLink = words[1]; if (!decryptLinkIfEncrypted(api, publicLink, cloptions)) { return; } if (getLinkType(publicLink) == MegaNode::TYPE_FILE) { if (words.size() > 2) { path = words[2]; destinyIsFolder = IsFolder(path); if (destinyIsFolder) { if (! (path.find_last_of("/") == path.size()-1) && ! (path.find_last_of("\\") == path.size()-1)) { #ifdef _WIN32 path+="\\"; #else path+="/"; #endif } if (!canWrite(path)) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Write not allowed in " << path; return; } } else { if (!TestCanWriteOnContainingFolder(path)) { return; } } } MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->getPublicNode(publicLink.c_str(), megaCmdListener); megaCmdListener->wait(); if (!megaCmdListener->getError()) { LOG_fatal << "No error in listener at get public node"; } else if (!checkNoErrors(megaCmdListener->getError(), "get public node")) { if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EARGS) { LOG_err << "The link provided might be incorrect: " << publicLink.c_str(); } else if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EINCOMPLETE) { LOG_err << "The key is missing or wrong " << publicLink.c_str(); } } else { if (megaCmdListener->getRequest() && megaCmdListener->getRequest()->getFlag()) { LOG_err << "Key not valid " << publicLink.c_str(); } if (megaCmdListener->getRequest()) { if (destinyIsFolder && getFlag(clflags,"m")) { while( (path.find_last_of("/") == path.size()-1) || (path.find_last_of("\\") == path.size()-1)) { path=path.substr(0,path.size()-1); } } MegaNode *n = megaCmdListener->getRequest()->getPublicMegaNode(); downloadNode(words[1], path, api, n, background, ignorequotawarn, clientID, megaCmdMultiTransferListener); delete n; } else { LOG_err << "Empty Request at get"; } } delete megaCmdListener; } else if (getLinkType(publicLink) == MegaNode::TYPE_FOLDER) { if (words.size() > 2) { path = words[2]; destinyIsFolder = IsFolder(path); if (destinyIsFolder) { if (! (path.find_last_of("/") == path.size()-1) && ! (path.find_last_of("\\") == path.size()-1)) { #ifdef _WIN32 path+="\\"; #else path+="/"; #endif } if (!canWrite(words[2])) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Write not allowed in " << words[2]; return; } } else { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << words[2] << " is not a valid Download Folder"; return; } } MegaApi* apiFolder = getFreeApiFolder(); if (!apiFolder) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "No available Api folder. Use configure to increase exported_folders_sdks"; return; } char *accountAuth = api->getAccountAuth(); apiFolder->setAccountAuth(accountAuth); delete []accountAuth; MegaCmdListener *megaCmdListener = new MegaCmdListener(apiFolder, NULL); apiFolder->loginToFolder(publicLink.c_str(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "login to folder")) { MegaCmdListener *megaCmdListener2 = new MegaCmdListener(apiFolder, NULL); apiFolder->fetchNodes(megaCmdListener2); megaCmdListener2->wait(); if (checkNoErrors(megaCmdListener2->getError(), "access folder link " + publicLink)) { MegaNode *nodeToDownload = NULL; bool usedRoot = false; string shandle = getPublicLinkHandle(publicLink); if (shandle.size()) { handle thehandle = apiFolder->base64ToHandle(shandle.c_str()); nodeToDownload = apiFolder->getNodeByHandle(thehandle); } else { nodeToDownload = apiFolder->getRootNode(); usedRoot = true; } if (nodeToDownload) { if (destinyIsFolder && getFlag(clflags,"m")) { while( (path.find_last_of("/") == path.size()-1) || (path.find_last_of("\\") == path.size()-1)) { path=path.substr(0,path.size()-1); } } MegaNode *authorizedNode = apiFolder->authorizeNode(nodeToDownload); if (authorizedNode != NULL) { downloadNode(words[1], path, api, authorizedNode, background, ignorequotawarn, clientID, megaCmdMultiTransferListener); delete authorizedNode; } else { LOG_debug << "Node couldn't be authorized: " << publicLink << ". Downloading as non-loged user"; downloadNode(words[1], path, apiFolder, nodeToDownload, background, ignorequotawarn, clientID, megaCmdMultiTransferListener); } delete nodeToDownload; } else { setCurrentThreadOutCode(MCMD_INVALIDSTATE); if (usedRoot) { LOG_err << "Couldn't get root folder for folder link"; } else { LOG_err << "Failed to get node corresponding to handle within public link " << shandle; } } } delete megaCmdListener2; { std::unique_ptr megaCmdListener(new MegaCmdListener(apiFolder)); apiFolder->logout(false, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() != MegaError::API_OK) { LOG_err << "Couldn't logout from apiFolder"; } } } delete megaCmdListener; freeApiFolder(apiFolder); } else { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << "Invalid link: " << publicLink; } } else //remote file { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } unescapeifRequired(words[1]); if (isRegExp(words[1])) { vector> nodesToGet = nodesbypath(words[1].c_str(), getFlag(clflags,"use-pcre")); if (words.size() > 2) { path = words[2]; destinyIsFolder = IsFolder(path); if (destinyIsFolder) { if (! (path.find_last_of("/") == path.size()-1) && ! (path.find_last_of("\\") == path.size()-1)) { #ifdef _WIN32 path+="\\"; #else path+="/"; #endif } if (!canWrite(words[2])) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Write not allowed in " << words[2]; return; } } else if (nodesToGet.size() > 1) //several files into one file! { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << words[2] << " is not a valid Download Folder"; return; } else //destiny non existing or a file { if (!TestCanWriteOnContainingFolder(path)) { return; } } } if (destinyIsFolder && getFlag(clflags,"m")) { while( (path.find_last_of("/") == path.size()-1) || (path.find_last_of("\\") == path.size()-1)) { path=path.substr(0,path.size()-1); } } for (const auto& n : nodesToGet) { assert(n); downloadNode(words[1], path, api, n.get(), background, ignorequotawarn, clientID, megaCmdMultiTransferListener); } if (nodesToGet.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Couldn't find " << words[1]; } } else //not regexp { std::unique_ptr n = nodebypath(words[1].c_str()); if (n) { if (words.size() > 2) { if (n->getType() == MegaNode::TYPE_FILE) { path = words[2]; destinyIsFolder = IsFolder(path); if (destinyIsFolder) { if (! (path.find_last_of("/") == path.size()-1) && ! (path.find_last_of("\\") == path.size()-1)) { #ifdef _WIN32 path+="\\"; #else path+="/"; #endif } if (!canWrite(words[2])) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Write not allowed in " << words[2]; return; } } else { if (!TestCanWriteOnContainingFolder(path)) { return; } } } else { path = words[2]; destinyIsFolder = IsFolder(path); if (destinyIsFolder) { if (! (path.find_last_of("/") == path.size()-1) && ! (path.find_last_of("\\") == path.size()-1)) { #ifdef _WIN32 path+="\\"; #else path+="/"; #endif } if (!canWrite(words[2])) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Write not allowed in " << words[2]; return; } } else { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << words[2] << " is not a valid Download Folder"; return; } } } if (destinyIsFolder && getFlag(clflags,"m")) { while( (path.find_last_of("/") == path.size()-1) || (path.find_last_of("\\") == path.size()-1)) { path=path.substr(0,path.size()-1); } } downloadNode(words[1], path, api, n.get(), background, ignorequotawarn, clientID, megaCmdMultiTransferListener); } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Couldn't find file"; } } } if (!background) { megaCmdMultiTransferListener->waitMultiEnd(); if (megaCmdMultiTransferListener->getFinalerror() != MegaError::API_OK) { setCurrentThreadOutCode(megaCmdMultiTransferListener->getFinalerror()); LOG_err << "Download failed. error code: " << MegaError::getErrorString(megaCmdMultiTransferListener->getFinalerror()); } if (megaCmdMultiTransferListener->getProgressinformed() || getCurrentThreadOutCode() == MCMD_OK ) { informProgressUpdate(PROGRESS_COMPLETE, megaCmdMultiTransferListener->getTotalbytes(), clientID); } } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("get"); } return; } else if (words[0] == "backup") { bool dodelete = getFlag(clflags,"d"); bool abort = getFlag(clflags,"a"); bool listinfo = getFlag(clflags,"l"); bool listhistory = getFlag(clflags,"h"); // //TODO: do the following functionality // bool stop = getFlag(clflags,"s"); // bool resume = getFlag(clflags,"r"); // bool initiatenow = getFlag(clflags,"i"); int PATHSIZE = getintOption(cloptions,"path-display-size"); if (!PATHSIZE) { // get screen size for output purposes unsigned int width = getNumberOfCols(75); PATHSIZE = min(60,int((width-46)/2)); } PATHSIZE = max(0, PATHSIZE); bool firstbackup = true; string speriod=getOption(cloptions, "period"); int numBackups = int(getintOption(cloptions, "num-backups", -1)); if (words.size() == 3) { string local = words.at(1); string remote = words.at(2); unescapeifRequired(local); unescapeifRequired(remote); createOrModifyBackup(local, remote, speriod, numBackups); } else if (words.size() == 2) { string local = words.at(1); unescapeifRequired(local); MegaScheduledCopy *backup = api->getScheduledCopyByPath(local.c_str()); if (!backup) { backup = api->getScheduledCopyByTag(toInteger(local, -1)); } map::iterator itr; if (backup) { int backupid = -1; for ( itr = ConfigurationManager::configuredBackups.begin(); itr != ConfigurationManager::configuredBackups.end(); itr++ ) { if (itr->second->tag == backup->getTag()) { backupid = itr->second->id; break; } } if (backupid == -1) { LOG_err << " Requesting info of unregistered backup: " << local; } if (dodelete) { MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->removeScheduledCopy(backup->getTag(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "remove backup")) { if (backupid != -1) { ConfigurationManager::configuredBackups.erase(itr); } mtxBackupsMap.lock(); ConfigurationManager::saveBackups(&ConfigurationManager::configuredBackups); mtxBackupsMap.unlock(); OUTSTREAM << " Backup removed succesffuly: " << local << endl; } } else if (abort) { MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->abortCurrentScheduledCopy(backup->getTag(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "abort backup")) { OUTSTREAM << " Backup aborted succesffuly: " << local << endl; } } else { if (speriod.size() || numBackups != -1) { createOrModifyBackup(backup->getLocalFolder(), "", speriod, numBackups); } else { if(firstbackup) { printBackupHeader(PATHSIZE); firstbackup = false; } printBackup(backup->getTag(), backup, getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), PATHSIZE, listinfo, listhistory); } } delete backup; } else { if (dodelete) //remove from configured backups { bool deletedok = false; for ( itr = ConfigurationManager::configuredBackups.begin(); itr != ConfigurationManager::configuredBackups.end(); itr++ ) { if (itr->second->tag == -1 && itr->second->localpath == local) { mtxBackupsMap.lock(); ConfigurationManager::configuredBackups.erase(itr); ConfigurationManager::saveBackups(&ConfigurationManager::configuredBackups); mtxBackupsMap.unlock(); OUTSTREAM << " Backup removed succesffuly: " << local << endl; deletedok = true; break; } } if (!deletedok) { setCurrentThreadOutCode(MCMD_NOTFOUND); OUTSTREAM << "Backup not found: " << local << endl; } } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Backup not found: " << local; } } } else if (words.size() == 1) //list backups { mtxBackupsMap.lock(); for (map::iterator itr = ConfigurationManager::configuredBackups.begin(); itr != ConfigurationManager::configuredBackups.end(); itr++ ) { if(firstbackup) { printBackupHeader(PATHSIZE); firstbackup = false; } printBackup(itr->second, getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), PATHSIZE, listinfo, listhistory); } if (!ConfigurationManager::configuredBackups.size()) { setCurrentThreadOutCode(MCMD_NOTFOUND); OUTSTREAM << "No backup configured. " << endl << " Usage: " << getUsageStr("backup") << endl; } mtxBackupsMap.unlock(); } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("backup"); } } else if (words[0] == "put") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } bool background = getFlag(clflags,"q"); bool autocreate = getFlag(clflags, "c"); int clientID = getintOption(cloptions, "clientID", -1); if (words.size() < 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("put"); return; } string targetuser; string newname = ""; bool explicitRemotePath = words.size() > 2; std::size_t numberOfLocalPaths = explicitRemotePath ? words.size() - 2ul : 1; const std::string &destination = explicitRemotePath ? words.back() : ""; std::unique_ptr n = explicitRemotePath ? nodebypath(destination.c_str(), &targetuser, &newname) : std::unique_ptr(api->getNodeByHandle(cwd)); if (explicitRemotePath && !n && autocreate) { const auto posLastSeparator = destination.find_last_of("/"); string destinationfolder(destination, 0, posLastSeparator); newname = string(destination, posLastSeparator + 1, destination.size()); auto baseNode = (destinationfolder.size() > 0 && destinationfolder.front() == '/') ? std::unique_ptr(api->getRootNode()) : std::unique_ptr(api->getNodeByHandle(cwd)); if (makedir(destinationfolder, true, baseNode.get()) == MCMD_OK) { n = nodebypath(destinationfolder.c_str()); } } if (!n) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Couldn't find destination folder: " << destination << ". Use -c to create folder structure"; return; } std::optional foregroundMultiTransfersListener; auto mayCreateForegroundListener = [&]() -> MegaCmdMultiTransferListener * { if (background) { return nullptr; } if (!foregroundMultiTransfersListener) { foregroundMultiTransfersListener.emplace(api, sandboxCMD, nullptr, clientID); } return &foregroundMultiTransfersListener.value(); }; ScopeGuard g([&] { if (foregroundMultiTransfersListener) { foregroundMultiTransfersListener->waitMultiEnd(); checkNoErrors(foregroundMultiTransfersListener->getFinalerror(), "upload"); if (foregroundMultiTransfersListener->getProgressinformed() || getCurrentThreadOutCode() == MCMD_OK ) { informProgressUpdate(PROGRESS_COMPLETE, foregroundMultiTransfersListener->getTotalbytes(), clientID); } } }); if (n->getType() == MegaNode::TYPE_FILE) { bool replacing = words.size() == 3 && !IsFolder(words[1]); if (!replacing) { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << "Destination is not valid (expected folder or alike)"; return; } unique_ptr pn(api->getNodeByHandle(n->getParentHandle())); if (!pn) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Destination is not valid. Parent folder cannot be found"; return; } auto &localPath = words[1]; #ifdef HAVE_GLOB_H if (!fs::exists(localPath) && hasWildCards(localPath)) { LOG_err << "Invalid target for wildcard expression: " << localPath << ". Folder expected"; setCurrentThreadOutCode(MCMD_INVALIDTYPE); return; } #endif uploadNode(*clflags, *cloptions, localPath, api, pn.get(), n->getName(), mayCreateForegroundListener()); return; } assert(n->getType() != MegaNode::TYPE_FILE); for (std::size_t i = 1; i <= numberOfLocalPaths; i++) { std::vector paths{words[i] == "." ? getLPWD() : words[i]}; #ifdef HAVE_GLOB_H if (!newname.size() && !fs::exists(words[i]) && hasWildCards(words[i])) { paths = resolvewildcard(words[i]); if (!paths.size()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << words[i] << " not found"; } } #endif for (auto &path : paths) { uploadNode(*clflags, *cloptions, path, api, n.get(), newname, mayCreateForegroundListener()); } } return; } else if (words[0] == "log") { const bool cmdFlag = getFlag(clflags, "c"); const bool sdkFlag = getFlag(clflags, "s"); const bool noFlags = !cmdFlag && !sdkFlag; if (words.size() == 1) { if (cmdFlag || noFlags) { OUTSTREAM << "MEGAcmd log level = " << getLogLevelStr(loggerCMD->getCmdLoggerLevel()) << endl; } if (sdkFlag || noFlags) { OUTSTREAM << "SDK log level = " << getLogLevelStr(loggerCMD->getSdkLoggerLevel()) << endl; } } else { auto newLogLevelOpt = getLogLevelNum(words[1].c_str()); if (!newLogLevelOpt) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid log level"; return; } const int newLogLevel = *newLogLevelOpt; if (cmdFlag || noFlags) { loggerCMD->setCmdLoggerLevel(newLogLevel); ConfigurationManager::savePropertyValue("cmdLogLevel", newLogLevel); OUTSTREAM << "MEGAcmd log level = " << getLogLevelStr(loggerCMD->getCmdLoggerLevel()) << endl; } if (sdkFlag || noFlags) { const bool jsonLogs = (newLogLevel == MegaApi::LOG_LEVEL_MAX); loggerCMD->setSdkLoggerLevel(newLogLevel); if (jsonLogs) { MegaApi::setLogJSON(MegaApi::JSON_LOG_CHUNK_RECEIVED | MegaApi::JSON_LOG_CHUNK_CONSUMED | MegaApi::JSON_LOG_SENDING | MegaApi::JSON_LOG_NONCHUNK_RECEIVED); MegaApi::setMaxPayloadLogSize(0); // Max size } else // revert to defaults { MegaApi::setLogJSON(MegaApi::JSON_LOG_CHUNK_CONSUMED | MegaApi::JSON_LOG_SENDING | MegaApi::JSON_LOG_NONCHUNK_RECEIVED); MegaApi::setMaxPayloadLogSize(10240/*PAYLOAD_LOG_DEFAULT_SIZE*/); // Default } ConfigurationManager::savePropertyValue("sdkLogLevel", newLogLevel); ConfigurationManager::savePropertyValue("jsonLogs", jsonLogs); OUTSTREAM << "SDK log level = " << getLogLevelStr(loggerCMD->getSdkLoggerLevel()) << endl; } } } else if (words[0] == "pwd") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } string cwpath = getCurrentPath(); OUTSTREAM << cwpath << endl; return; } else if (words[0] == "lcd") //this only makes sense for interactive mode { if (words.size() > 1) { LocalPath localpath = LocalPath::fromAbsolutePath(words[1]); if (mFsAccessCMD->chdirlocal(localpath)) // maybe this is already checked in chdir { LOG_debug << "Local folder changed to: " << words[1]; } else { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << "Not a valid folder: " << words[1]; } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("lcd"); } return; } else if (words[0] == "lpwd") { string absolutePath = getLPWD(); OUTSTREAM << absolutePath << endl; return; } else if (words[0] == "ipc") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() > 1) { int action; string saction; if (getFlag(clflags, "a")) { action = MegaContactRequest::REPLY_ACTION_ACCEPT; saction = "Accept"; } else if (getFlag(clflags, "d")) { action = MegaContactRequest::REPLY_ACTION_DENY; saction = "Reject"; } else if (getFlag(clflags, "i")) { action = MegaContactRequest::REPLY_ACTION_IGNORE; saction = "Ignor"; } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("ipc"); return; } std::unique_ptr cr; string shandle = words[1]; handle thehandle = api->base64ToUserHandle(shandle.c_str()); if (shandle.find('@') != string::npos) { cr = getPcrByContact(shandle); } else { cr.reset(api->getContactRequestByHandle(thehandle)); } if (cr) { MegaCmdListener *megaCmdListener = new MegaCmdListener(api, NULL); api->replyContactRequest(cr.get(), action, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "reply ipc")) { OUTSTREAM << saction << "ed invitation by " << cr->getSourceEmail() << endl; } delete megaCmdListener; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Could not find invitation " << shandle; } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("ipc"); return; } return; } else if (words[0] == "https") { if (words.size() > 1 && (words[1] == "on" || words[1] == "off")) { bool onlyhttps = words[1] == "on"; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->useHttpsOnly(onlyhttps,megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "change https")) { OUTSTREAM << "File transfer now uses " << (api->usingHttpsOnly()?"HTTPS":"HTTP") << endl; ConfigurationManager::savePropertyValue("https", api->usingHttpsOnly()); } delete megaCmdListener; return; } else if (words.size() > 1) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("https"); return; } else { OUTSTREAM << "File transfer is done using " << (api->usingHttpsOnly()?"HTTPS":"HTTP") << endl; } return; } else if (words[0] == "graphics") { if (words.size() == 2 && (words[1] == "on" || words[1] == "off")) { bool enableGraphics = words[1] == "on"; api->disableGfxFeatures(!enableGraphics); ConfigurationManager::savePropertyValue("graphics", !api->areGfxFeaturesDisabled()); } else if (words.size() > 1) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("https"); return; } OUTSTREAM << "Graphic features " << (api->areGfxFeaturesDisabled()?"disabled":"enabled") << endl; return; } #ifndef _WIN32 else if (words[0] == "permissions") { bool filesflagread = getFlag(clflags, "files"); bool foldersflagread = getFlag(clflags, "folders"); bool filesflag = filesflagread || (!filesflagread && !foldersflagread); bool foldersflag = foldersflagread || (!filesflagread && !foldersflagread); bool setperms = getFlag(clflags, "s"); if ( (!setperms && words.size() > 1) || (setperms && words.size() != 2) || ( setperms && filesflagread && foldersflagread ) || (setperms && !filesflagread && !foldersflagread)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("permissions"); return; } int permvalue = -1; if (setperms) { if (words[1].size() != 3) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid permissions value: " << words[1]; } else { int owner = words[1].at(0) - '0'; int group = words[1].at(1) - '0'; int others = words[1].at(2) - '0'; if ( (owner < 6) || (owner == 6 && foldersflag) || (owner > 7) || (group < 0) || (group > 7) || (others < 0) || (others > 7) ) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid permissions value: " << words[1]; } else { permvalue = (owner << 6) + ( group << 3) + others; } } } if (filesflag) { if (setperms && permvalue != -1) { api->setDefaultFilePermissions(permvalue); ConfigurationManager::savePropertyValue("permissionsFiles", readablePermissions(permvalue)); } int filepermissions = api->getDefaultFilePermissions(); int owner = (filepermissions >> 6) & 0x07; int group = (filepermissions >> 3) & 0x07; int others = filepermissions & 0x07; OUTSTREAM << "Default files permissions: " << owner << group << others << endl; } if (foldersflag) { if (setperms && permvalue != -1) { api->setDefaultFolderPermissions(permvalue); ConfigurationManager::savePropertyValue("permissionsFolders", readablePermissions(permvalue)); } int folderpermissions = api->getDefaultFolderPermissions(); int owner = (folderpermissions >> 6) & 0x07; int group = (folderpermissions >> 3) & 0x07; int others = folderpermissions & 0x07; OUTSTREAM << "Default folders permissions: " << owner << group << others << endl; } } #endif else if (words[0] == "deleteversions") { bool deleteall = getFlag(clflags, "all"); bool forcedelete = getFlag(clflags, "f"); if (deleteall && words.size()>1) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("deleteversions"); return; } if (deleteall) { string confirmationQuery("Are you sure todelete the version histories of all files? (Yes/No): "); int confirmationResponse = forcedelete?MCMDCONFIRM_YES:askforConfirmation(confirmationQuery); while ( (confirmationResponse != MCMDCONFIRM_YES) && (confirmationResponse != MCMDCONFIRM_NO) ) { confirmationResponse = askforConfirmation(confirmationQuery); } if (confirmationResponse == MCMDCONFIRM_YES) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->removeVersions(megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "remove all versions")) { OUTSTREAM << "File versions deleted successfully. Please note that the current files were not deleted, just their history." << endl; } delete megaCmdListener; } } else { for (unsigned int i = 1; i < words.size(); i++) { if (isRegExp(words[i])) { vector> nodesToDeleteVersions = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodesToDeleteVersions.size()) { for (const auto& node : nodesToDeleteVersions) { assert(node); int ret = deleteNodeVersions(node, api, forcedelete); forcedelete = forcedelete || (ret == MCMDCONFIRM_ALL); } } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "No node found: " << words[i]; } } else // non-regexp { std::unique_ptr n = nodebypath(words[i].c_str()); if (n) { int ret = deleteNodeVersions(n, api, forcedelete); forcedelete = forcedelete || (ret == MCMDCONFIRM_ALL); } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Node not found: " << words[i]; } } } } } #ifdef HAVE_LIBUV else if (words[0] == "webdav") { bool remove = getFlag(clflags, "d"); bool all = getFlag(clflags, "all"); if (words.size() == 1 && remove && !all) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("webdav"); return; } if (words.size() == 1 && !remove) { //List served nodes MegaNodeList *webdavnodes = api->httpServerGetWebDavAllowedNodes(); if (webdavnodes) { bool found = false; for (int a = 0; a < webdavnodes->size(); a++) { MegaNode *n= webdavnodes->get(a); if (n) { char *link = api->httpServerGetLocalWebDavLink(n); //notice this is not only consulting but also creating, //had it been deleted in the meantime this will recreate it if (link) { if (!found) { OUTSTREAM << "WEBDAV SERVED LOCATIONS:" << endl; } found = true; char * nodepath = api->getNodePath(n); OUTSTREAM << nodepath << ": " << link << endl; delete []nodepath; delete []link; } } } if(!found) { OUTSTREAM << "No webdav links found" << endl; } delete webdavnodes; } else { OUTSTREAM << "Webdav server might not running. Add a new location to serve." << endl; } return; } if (!remove) { //create new link: bool tls = getFlag(clflags, "tls"); int port = getintOption(cloptions, "port", 4443); bool localonly = !getFlag(clflags, "public"); string pathtocert = getOption(cloptions, "certificate", ""); string pathtokey = getOption(cloptions, "key", ""); bool serverstarted = api->httpServerIsRunning(); if (!serverstarted) { LOG_info << "Starting http server"; api->httpServerEnableFolderServer(true); // api->httpServerEnableOfflineAttribute(true); //TODO: we might want to offer this as parameter if (api->httpServerStart(localonly, port, tls, pathtocert.c_str(), pathtokey.c_str())) { ConfigurationManager::savePropertyValue("webdav_port", port); ConfigurationManager::savePropertyValue("webdav_localonly", localonly); ConfigurationManager::savePropertyValue("webdav_tls", tls); if (pathtocert.size()) { ConfigurationManager::savePropertyValue("webdav_cert", pathtocert); } if (pathtokey.size()) { ConfigurationManager::savePropertyValue("webdav_key", pathtokey); } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Failed to initialize WEBDAV server. Ensure the port is free."; return; } } } //add/remove if (remove && all) { api->httpServerRemoveWebDavAllowedNodes(); api->httpServerStop(); list servedpaths; ConfigurationManager::savePropertyValueList("webdav_served_locations", servedpaths); ConfigurationManager::savePropertyValue("webdav_port", -1); //so as not to load server on startup OUTSTREAM << "Wevdav server stopped: no path will be served." << endl; } else { bool firstone = true; for (unsigned int i = 1; i < words.size(); i++) { string pathToServe = words[i]; if (remove) { processPath(pathToServe, getFlag(clflags,"use-pcre"), firstone, forwarderRemoveWebdavLocation, this); } else { processPath(pathToServe, getFlag(clflags,"use-pcre"), firstone, forwarderAddWebdavLocation, this); } } } } else if (words[0] == "ftp") { bool remove = getFlag(clflags, "d"); bool all = getFlag(clflags, "all"); if (words.size() == 1 && remove && !all) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("ftp"); return; } if (words.size() == 1 && !remove) { //List served nodes MegaNodeList *ftpnodes = api->ftpServerGetAllowedNodes(); if (ftpnodes) { bool found = false; for (int a = 0; a < ftpnodes->size(); a++) { MegaNode *n= ftpnodes->get(a); if (n) { char *link = api->ftpServerGetLocalLink(n); //notice this is not only consulting but also creating, //had it been deleted in the meantime this will recreate it if (link) { if (!found) { OUTSTREAM << "FTP SERVED LOCATIONS:" << endl; } found = true; char * nodepath = api->getNodePath(n); OUTSTREAM << nodepath << ": " << link << endl; delete []nodepath; delete []link; } } } if(!found) { OUTSTREAM << "No ftp links found" << endl; } delete ftpnodes; } else { OUTSTREAM << "Ftp server might not running. Add a new location to serve." << endl; } return; } if (!remove) { //create new link: bool tls = getFlag(clflags, "tls"); int port = getintOption(cloptions, "port", 4990); bool localonly = !getFlag(clflags, "public"); string dataPorts = getOption(cloptions, "data-ports"); size_t seppos = dataPorts.find("-"); int dataPortRangeBegin = 1500; istringstream is(dataPorts.substr(0,seppos)); is >> dataPortRangeBegin; int dataPortRangeEnd = dataPortRangeBegin + 100; if (seppos != string::npos && seppos < (dataPorts.size()+1)) { istringstream is(dataPorts.substr(seppos+1)); is >> dataPortRangeEnd; } string pathtocert = getOption(cloptions, "certificate", ""); string pathtokey = getOption(cloptions, "key", ""); if (tls && (!pathtocert.size() || !pathtokey.size())) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Path to certificate/key not indicated"; return; } bool serverstarted = api->ftpServerIsRunning(); if (!serverstarted) { if (api->ftpServerStart(localonly, port, dataPortRangeBegin, dataPortRangeEnd, tls, pathtocert.c_str(), pathtokey.c_str())) { ConfigurationManager::savePropertyValue("ftp_port", port); ConfigurationManager::savePropertyValue("ftp_port_data_begin", dataPortRangeBegin); ConfigurationManager::savePropertyValue("ftp_port_data_end", dataPortRangeEnd); ConfigurationManager::savePropertyValue("ftp_localonly", localonly); ConfigurationManager::savePropertyValue("ftp_tls", tls); if (pathtocert.size()) { ConfigurationManager::savePropertyValue("ftp_cert", pathtocert); } if (pathtokey.size()) { ConfigurationManager::savePropertyValue("ftp_key", pathtokey); } LOG_info << "Started ftp server at port " << port << ". Data Channel Port Range: " << dataPortRangeBegin << "-" << dataPortRangeEnd; } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Failed to initialize FTP server. Ensure the port is free."; return; } } } //add/remove if (remove && all) { api->ftpServerRemoveAllowedNodes(); api->ftpServerStop(); list servedpaths; ConfigurationManager::savePropertyValueList("ftp_served_locations", servedpaths); ConfigurationManager::savePropertyValue("ftp_port", -1); //so as not to load server on startup OUTSTREAM << "ftp server stopped: no path will be served." << endl; } else { bool firstone = true; for (unsigned int i = 1; i < words.size(); i++) { string pathToServe = words[i]; if (remove) { processPath(pathToServe, getFlag(clflags,"use-pcre"), firstone, forwarderRemoveFtpLocation, this); } else { processPath(pathToServe, getFlag(clflags,"use-pcre"), firstone, forwarderAddFtpLocation, this); } } } } #endif #ifdef ENABLE_SYNC else if (words[0] == "exclude") { bool excludeAdd = getFlag(clflags, "a"); bool excludeRemove = getFlag(clflags, "d"); if (excludeAdd == excludeRemove) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("exclude"); return; } { SyncIgnore::Args args; args.mAction = (excludeAdd ? SyncIgnore::Action::Add : SyncIgnore::Action::Remove); std::transform(words.begin() + 1, words.end(), std::inserter(args.mFilters, args.mFilters.end()), SyncIgnore::getFilterFromLegacyPattern); SyncIgnore::executeCommand(args); } { SyncIgnore::Args args; args.mAction = SyncIgnore::Action::Show; OUTSTREAM << endl; OUTSTREAM << "Contents of .megaignore.default:" << endl; SyncIgnore::executeCommand(args); } } else if (words[0] == "sync") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } if (!api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } bool pauseSync = getFlag(clflags, "p") || getFlag(clflags, "pause") || getFlag(clflags, "s") || getFlag(clflags, "disable"); bool enableSync = getFlag(clflags, "e") || getFlag(clflags, "r") || getFlag(clflags, "enable"); bool deleteSync = getFlag(clflags, "delete") || getFlag(clflags, "d") || getFlag(clflags, "remove"); bool showHandles = getFlag(clflags, "show-handles"); if (!onlyZeroOrOneOf(pauseSync, enableSync, deleteSync)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Only one action (disable, enable, or remove) can be specified at a time"; LOG_err << " " << getUsageStr("sync"); return; } if (words.size() == 3) // add a sync { fs::path localPath = fs::absolute(words[1]); if (!fs::exists(localPath)) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Local directory " << words[1] << " does not exist"; return; } std::unique_ptr n = nodebypath(words[2].c_str()); if (!n) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Remote directory " << words[2] << " does not exist"; return; } SyncCommand::addSync(*api, localPath, *n); } else if (words.size() == 2) // manage a sync { string pathOrId = words[1]; auto sync = SyncCommand::getSync(*api, pathOrId); if (!sync) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Sync not found: " << pathOrId; return; } if (deleteSync) { SyncCommand::modifySync(*api, *sync, SyncCommand::ModifyOpts::Delete); } else { SyncCommand::modifySync(*api, *sync, enableSync ? SyncCommand::ModifyOpts::Enable : SyncCommand::ModifyOpts::Pause); // Print the updated sync state if we didnt' remove sync = SyncCommand::reloadSync(*api, std::move(sync)); if (!sync) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Sync not found while reloading: " << pathOrId; return; } auto syncIssues = mSyncIssuesManager.getSyncIssues(); ColumnDisplayer cd(clflags, cloptions); SyncCommand::printSync(*api, cd, showHandles, *sync, syncIssues); OUTSTREAM << cd.str(); } } else if (words.size() == 1) // show all syncs { auto syncIssues = mSyncIssuesManager.getSyncIssues(); auto syncList = std::unique_ptr(api->getSyncs()); assert(syncList); ColumnDisplayer cd(clflags, cloptions); SyncCommand::printSyncList(*api, cd, showHandles, *syncList, syncIssues); OUTSTREAM << cd.str(); if (!syncIssues.empty()) { OUTSTREAM << endl; LOG_err << "You have sync issues. Use the \"" << getCommandPrefixBasedOnMode() << "sync-issues\" command to display them."; } else if (SyncCommand::isAnySyncUploadDelayed(*api)) { OUTSTREAM << endl; OUTSTREAM << "Some of your \"Pending\" sync uploads are being delayed due to very frequent changes. They will be uploaded once the delay finishes. " << "Use the \"" << getCommandPrefixBasedOnMode() << "sync-config\" command to show the upload delay." << endl; } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << getUsageStr("sync"); return; } } else if (words[0] == "sync-ignore") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } if (!api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } if (words.size() < 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("sync-ignore"); return; } bool ignoreShow = getFlag(clflags, "show"); bool ignoreAdd = getFlag(clflags, "add"); bool ignoreAddExclusion = getFlag(clflags, "add-exclusion"); bool ignoreRemove = getFlag(clflags, "remove"); bool ignoreRemoveExclusion = getFlag(clflags, "remove-exclusion"); if (!onlyZeroOrOneOf(ignoreShow, ignoreAdd, ignoreAddExclusion, ignoreRemove, ignoreRemoveExclusion)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Only one action (show, add, add-exclusion, remove, or remove-exclusion) can be specified at a time"; LOG_err << " " << getUsageStr("sync-ignore"); return; } SyncIgnore::Args args; args.mAction = SyncIgnore::Action::Show; if (ignoreAdd || ignoreAddExclusion) { args.mAction = SyncIgnore::Action::Add; } else if (ignoreRemove || ignoreRemoveExclusion) { args.mAction = SyncIgnore::Action::Remove; } // Show cannot have filters if (args.mAction == SyncIgnore::Action::Show && words.size() != 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("sync-ignore"); return; } string pathOrId = words.back(); // the last word is (ID|localpath|"DEFAULT") if (toLower(pathOrId) != "default") { auto sync = SyncCommand::getSync(*api, pathOrId); if (!sync) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Sync " << pathOrId << " was not found"; return; } args.mMegaIgnoreDirPath = std::string(sync->getLocalFolder()); } auto filterInserter = [ignoreAddExclusion, ignoreRemoveExclusion] (const string& word) { if (ignoreAddExclusion || ignoreRemoveExclusion) { return "-" + word; } return word; }; std::transform(words.begin() + 1, words.end() - 1, std::inserter(args.mFilters, args.mFilters.end()), filterInserter); SyncIgnore::executeCommand(args); } else if (words[0] == "sync-config") { using namespace GlobalSyncConfig; if (words.size() != 1) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << getUsageStr("sync-config"); return; } auto duWaitSecsOpt = getFlag(clflags, "delayed-uploads-wait-seconds"); auto duMaxAttemptsOpt = getFlag(clflags, "delayed-uploads-max-attempts"); bool all = !duWaitSecsOpt && !duMaxAttemptsOpt; { auto duConfigOpt = DelayedUploads::getCurrentConfig(*api); if (!duConfigOpt) { LOG_err << "Failed to retrieve delayed sync uploads config"; return; } DelayedUploads::Config duConfig = *duConfigOpt; if (all || duWaitSecsOpt) { OUTSTREAM << "Delayed uploads wait time: " << duConfig.mWaitSecs << " seconds" << endl; } if (all || duMaxAttemptsOpt) { OUTSTREAM << "Max attempts until uploads are delayed: " << duConfig.mMaxAttempts << endl; } return; } } #endif else if (words[0] == "configure") { std::optional key; std::optional value; if (words.size() > 1) { key = words[1]; } if (words.size() > 2) { value= words[2]; } bool found = false; for (auto &vc : Instance::Get().getConfigurators()) { auto name = vc.mKey.c_str(); if (key && *key != name) continue; found = true; if (value) { if (vc.mValidator && !vc.mValidator.value()(value->data())) { LOG_err << "Failed to set " << vc.mKey << " (" << vc.mDescription << "). Invalid value"; setCurrentThreadOutCode(MCMD_EARGS); return; } if (!vc.mSetter(api, std::string(name), value->data())) { if (getCurrentThreadOutCode() == MCMD_OK) // presuming error would be logged otherwise { LOG_err << "Failed to set " << vc.mKey << " (" << vc.mDescription << "). Setting failed"; setCurrentThreadOutCode(MCMD_EARGS); } return; } ConfigurationManager::saveProperty(name, value->data()); } auto &getter = vc.mMegaApiGetter ? *vc.mMegaApiGetter : vc.mGetter; auto newValueOpt = getter(api, name); if (newValueOpt) { OUTSTREAM << name << " = " << *newValueOpt << std::endl; if (value && *value != *newValueOpt) { LOG_warn << "Setting " << vc.mKey << " resulted in a value different than the one intended. " << *value << " vs " << *newValueOpt; } } else if (key) { LOG_err << "Configuration value is unset: " << *key; setCurrentThreadOutCode(MCMD_NOTFOUND); } } if (!found) { LOG_err << "Provided configuration key does not exist: " << *key; setCurrentThreadOutCode(MCMD_EARGS); } } else if (words[0] == "cancel") { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->cancelAccount(megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "cancel account")) { OUTSTREAM << "Account pending cancel confirmation. You will receive a confirmation link. Use \"confirmcancel\" with the provided link to confirm the cancellation" << endl; } delete megaCmdListener; } else if (words[0] == "confirmcancel") { if (words.size() < 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("confirmcancel"); return; } const char * confirmlink = words[1].c_str(); if (words.size() > 2) { const char * pass = words[2].c_str(); confirmCancel(confirmlink, pass); } else if (isCurrentThreadInteractive()) { link = confirmlink; confirmingcancel = true; setprompt(LOGINPASSWORD); } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Extra args required in non-interactive mode. Usage: " << getUsageStr("confirmcancel"); } } else if (words[0] == "login") { LoginGuard loginGuard; int clientID = getintOption(cloptions, "clientID", -1); if (api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Already logged in. Please log out first."; return; } if (words.size() < 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("login"); return; } bool accountLogin = words[1].find('@') != std::string::npos; bool folderLinkLogin = !accountLogin && words[1].find('#') != std::string::npos; bool resumeFolderLink = getFlag(clflags, "resume"); string authKey = getOption(cloptions, "auth-key", ""); if (!folderLinkLogin) { if (resumeFolderLink) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Explicit resumption only required for folder links logins."; return; } if (!authKey.empty()) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Auth key only required for login in writable folder links."; return; } } if (accountLogin) { if (words.size() > 2) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL,NULL,clientID); sandboxCMD->resetSandBox(); api->login(words[1].c_str(), words[2].c_str(), megaCmdListener); if (actUponLogin(megaCmdListener) == MegaError::API_EMFAREQUIRED ) { MegaCmdListener *megaCmdListener2 = new MegaCmdListener(NULL,NULL,clientID); string pin2fa = getOption(cloptions, "auth-code", ""); if (!pin2fa.size()) { pin2fa = askforUserResponse("Enter the code generated by your authentication app: "); } LOG_verbose << " Using confirmation pin: " << pin2fa; api->multiFactorAuthLogin(words[1].c_str(), words[2].c_str(), pin2fa.c_str(), megaCmdListener2); actUponLogin(megaCmdListener2); delete megaCmdListener2; return; } delete megaCmdListener; } else { login = words[1]; if (isCurrentThreadInteractive()) { setprompt(LOGINPASSWORD); } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Extra args required in non-interactive mode. Usage: " << getUsageStr("login"); } } } else if (folderLinkLogin) // folder link indicator { string publicLink = words[1]; if (!decryptLinkIfEncrypted(api, publicLink, cloptions)) { return; } std::unique_ptrmegaCmdListener = std::make_unique(nullptr); sandboxCMD->resetSandBox(); api->loginToFolder(publicLink.c_str(), authKey.empty() ? nullptr : authKey.c_str(), resumeFolderLink, megaCmdListener.get()); actUponLogin(megaCmdListener.get()); return; } else // session resumption { LOG_info << "Resuming session..."; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); sandboxCMD->resetSandBox(); api->fastLogin(words[1].c_str(), megaCmdListener); actUponLogin(megaCmdListener); delete megaCmdListener; return; } return; } else if (words[0] == "psa") { int psanum = sandboxCMD->lastPSAnumreceived; #ifndef NDEBUG if (words.size() >1) { psanum = toInteger(words[1], 0); } #endif bool discard = getFlag(clflags, "discard"); if (discard) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->setPSA(psanum, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "set psa " + SSTR(psanum))) { OUTSTREAM << "PSA discarded" << endl; } delete megaCmdListener; } if (!checkAndInformPSA(NULL, true) && !discard) // even when discarded: we need to read the next { OUTSTREAM << "No PSA available" << endl; setCurrentThreadOutCode(MCMD_NOTFOUND); } } else if (words[0] == "mount") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } listtrees(); verifySharedFolders(api); return; } else if (words[0] == "share") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } string with = getOption(cloptions, "with", ""); if (getFlag(clflags, "a") && ( "" == with )) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " Required --with=user"; LOG_err << " " << getUsageStr("share"); return; } string slevel = getOption(cloptions, "level", "NONE"); int level_NOT_present_value = -214; int level; if (slevel == "NONE") { level = level_NOT_present_value; } else { level = getShareLevelNum(slevel.c_str()); } if (( level != level_NOT_present_value ) && (( level < -1 ) || ( level > 3 ))) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid level of access"; return; } bool listPending = getFlag(clflags, "p"); if (words.size() <= 1) { words.push_back(string(".")); //cwd } for (int i = 1; i < (int)words.size(); i++) { unescapeifRequired(words[i]); if (isRegExp(words[i])) { vector> nodes = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodes.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); if (words[i].find("@") != string::npos) { LOG_err << "Could not find " << words[i] << ". Use --with=" << words[i] << " to specify the user to share with"; } else { LOG_err << "Node not found: " << words[i]; } } for (const auto& n : nodes) { assert(n); if (getFlag(clflags, "a")) { LOG_debug << " sharing ... " << n->getName() << " with " << with; if (level == level_NOT_present_value) { level = MegaShare::ACCESS_READ; } if (n->getType() == MegaNode::TYPE_FILE) { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << "Cannot share file: " << n->getName() << ". Only folders allowed. You can send file to user's inbox with cp (see \"cp --help\")"; } else { shareNode(n.get(), with, level); } } else if (getFlag(clflags, "d")) { if ("" != with) { LOG_debug << " deleting share ... " << n->getName() << " with " << with; disableShare(n.get(), with); } else { MegaShareList* outShares = api->getOutShares(n.get()); if (outShares) { for (int i = 0; i < outShares->size(); i++) { if (outShares->get(i)->getNodeHandle() == n->getHandle()) { LOG_debug << " deleting share ... " << n->getName() << " with " << outShares->get(i)->getUser(); disableShare(n.get(), outShares->get(i)->getUser()); } } delete outShares; } } } else { if (( level != level_NOT_present_value ) || ( with != "" )) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Unexpected option received. To create/modify a share use -a"; } else if (listPending) { dumpListOfAllShared(n.get(), words[i]); } else { dumpListOfShared(n.get(), words[i]); } } } } else // non-regexp { std::unique_ptr n = nodebypath(words[i].c_str()); if (n) { if (getFlag(clflags, "a")) { LOG_debug << " sharing ... " << n->getName() << " with " << with; if (level == level_NOT_present_value) { level = MegaShare::ACCESS_READ; } shareNode(n.get(), with, level); } else if (getFlag(clflags, "d")) { if ("" != with) { LOG_debug << " deleting share ... " << n->getName() << " with " << with; disableShare(n.get(), with); } else { std::unique_ptr outShares(api->getOutShares(n.get())); if (outShares) { for (int i = 0; i < outShares->size(); i++) { if (outShares->get(i)->getNodeHandle() == n->getHandle()) { LOG_debug << " deleting share ... " << n->getName() << " with " << outShares->get(i)->getUser(); disableShare(n.get(), outShares->get(i)->getUser()); } } } } } else { if ((level != level_NOT_present_value ) || ( with != "" )) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Unexpected option received. To create/modify a share use -a"; } else if (listPending) { dumpListOfAllShared(n.get(), words[i]); } else { dumpListOfShared(n.get(), words[i]); } } } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Node not found: " << words[i]; } } } verifySharedFolders(api); return; } else if (words[0] == "users") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } bool verify = getFlag(clflags, "verify"); bool unverify = getFlag(clflags, "unverify"); if (verify || unverify) { if (!checkExactlyNArgs(words, 2)) { return; } const auto &contact = words[1]; std::unique_ptr user(api->getContact(contact.c_str())); if (!user) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Contact not found."; return; } auto megaCmdListener = std::make_unique(nullptr); if (unverify) { api->resetCredentials(user.get(), megaCmdListener.get()); } else { api->verifyCredentials(user.get(), megaCmdListener.get()); } megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EINCOMPLETE) { setCurrentThreadOutCode(megaCmdListener->getError()->getErrorCode()); LOG_err << "Failed to " << " set contact as " << (unverify ? "no longer " : "") << "verified, your account's security may need upgrading"; } else if (checkNoErrors(megaCmdListener->getError(), unverify ? "unverify credentials" : "verify credentials")) { OUTSTREAM << "Contact " << contact << " set as " << (unverify ? "no longer " : "") << "verified." << endl; } return; } if (getFlag(clflags, "help-verify")) { if (words.size() == 1) // General information { OUTSTREAM << "In order to share data with your contacts you may need to verify them." << endl << endl << "Verifying means ensuring that the contact is who he/she claims to be." << endl << "To ensure that, both of you will need to share your credentials," << endl << " i.e. some numbers that uniquely identify you." << endl << "You can see a contact's credentials (and yours) and instructions on verifying," << endl << " by typing \"" << getCommandPrefixBasedOnMode() << "users --help-verify contact@email\"." << endl << endl << "To see which contacts are not verified, you can list them using \"" << getCommandPrefixBasedOnMode() << "users -n\"" << endl << "If you want the above listing to include information regarding your share folders," << endl << " type \"" < user(api->getContact(contact.c_str())); if (!user) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Contact not found."; return; } auto megaCmdListener = std::make_unique(nullptr); api->getUserCredentials(user.get(), megaCmdListener.get()); megaCmdListener->wait(); if (!checkNoErrors(megaCmdListener->getError(), "get user credentials")) { return; } auto contactCredentials = megaCmdListener->getRequest()->getPassword(); if (!contactCredentials) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Contact credentials not found."; return; } std::unique_ptr myCredentials(api->getMyCredentials()); if (!myCredentials) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Own credentials not found."; return; } auto beautifyCreds = [](std::string x) { auto nspaces = x.size() / 4; for (size_t i = 1 ; i < nspaces ; i++) { x.insert( i * 4 + i - 1, i == (nspaces / 2) ? "\n" : " "); } return x; }; OUTSTREAM << "Updated verification credentials were received for your contact: "; OUTSTREAM << contact << endl; { std::stringstream ss; ss << "Your Contact's credentials:\n"; ss << beautifyCreds(contactCredentials); printCenteredContentsT(OUTSTREAM, ss.str(), 32, true); } { std::stringstream ss; ss << "Your credentials:\n"; ss << beautifyCreds(myCredentials.get()); printCenteredContentsT(OUTSTREAM, ss.str(), 32, true); } OUTSTREAM << "Compare the listed credentials with the ones reported by your contact." << endl; OUTSTREAM << "This is best done in real life by meeting face to face.\n" "If you have another already-verified channel such as verified OTR or PGP, you may also use that."; OUTSTREAM << endl << "If both credentials match, type \"" << getCommandPrefixBasedOnMode() << "users --verify " << contact << "\" to set the contact as verified." << endl; OUTSTREAM << endl << "Important: verification is two sided. You need to tell your contact to do the same for you, using MEGAcmd or MEGA website to verify your credentials." << endl; return; } if (getFlag(clflags, "d") && ( words.size() <= 1 )) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Contact to delete not specified"; return; } MegaUserList* usersList = api->getContacts(); if (usersList) { for (int i = 0; i < usersList->size(); i++) { MegaUser *user = usersList->get(i); if (getFlag(clflags, "d") && ( words.size() > 1 ) && ( words[1] == user->getEmail())) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->removeContact(user, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "delete contact")) { OUTSTREAM << "Contact " << words[1] << " removed successfully" << endl; } delete megaCmdListener; } else { if (!(( user->getVisibility() != MegaUser::VISIBILITY_VISIBLE ) && !getFlag(clflags, "h"))) { auto email = user->getEmail(); std::string nameOrEmail; if (getFlag(clflags,"n")) //Show Names { // name: auto megaCmdListener = std::make_unique(nullptr); api->getUserAttribute(user, ATTR_FIRSTNAME, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() == MegaError::API_OK && megaCmdListener->getRequest()->getText() && *megaCmdListener->getRequest()->getText() // not empty ) { nameOrEmail += megaCmdListener->getRequest()->getText(); } // surname: megaCmdListener.reset(new MegaCmdListener(nullptr)); api->getUserAttribute(user, ATTR_LASTNAME, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() == MegaError::API_OK && megaCmdListener->getRequest()->getText() && *megaCmdListener->getRequest()->getText() // not empty ) { if (!nameOrEmail.empty()) { nameOrEmail+=" "; } nameOrEmail += megaCmdListener->getRequest()->getText(); } if (!nameOrEmail.empty()) { OUTSTREAM << "[" << nameOrEmail << "] "; } } if (nameOrEmail.empty()) { nameOrEmail = email; } OUTSTREAM << email; if (user->getTimestamp()) { OUTSTREAM << ". Contact since " << getReadableTime(user->getTimestamp(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822"))); } OUTSTREAM << ". " << visibilityToString(user->getVisibility()) << endl; bool printedSomeUnaccesibleInShare = false; bool printedSomeUnaccesibleOutShare = false; auto printShares = [&, this](std::unique_ptr &shares, const std::string &title, bool isInShare = false) { if (!shares) { return; } bool first_share = true; for (int j = 0, total = shares->size(); j < total; j++) { auto share = shares->get(j); assert(share); if (!strcmp(share->getUser(), email)) { bool thisOneisUnverified = !share->isVerified(); std::unique_ptr n (api->getNodeByHandle(share->getNodeHandle())); if (n) { if (first_share) { OUTSTREAM << "> " << title << ":" << endl; first_share = false; } if (thisOneisUnverified) { if (isInShare) { printedSomeUnaccesibleInShare = true; OUTSTREAM << " (**)"; } else { printedSomeUnaccesibleOutShare = true; OUTSTREAM << " (*)"; } } else { OUTSTREAM << " "; } if (isInShare) { OUTSTREAM << "//from/"; } if (isInShare && (thisOneisUnverified || !n->isNodeKeyDecrypted())) { OUTSTREAM << email << (thisOneisUnverified ? ":[UNVERIFIED]" : "[UNDECRYPTABLE]") << endl; } else if (isInShare) { dumpNode(n.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, 2, false, 0, getDisplayPath("/", n.get()).c_str()); } else //outShare: { string path = getDisplayPath("", n.get()); printOutShareInfo(path.c_str(), nullptr/*dont print email*/, share->getAccess(), share->isPending(), share->isVerified()); } } } } }; bool isUserVerified = api->areCredentialsVerified(user); bool doPrint(getFlag(clflags, "s")); if (doPrint) { std::unique_ptr outSharesByAllUsers (api->getOutShares()); // this one retrieves both verified & unverified ones printShares(outSharesByAllUsers, std::string("Folders shared with ") + nameOrEmail); std::unique_ptr inSharesByAllUsers (api->getInSharesList()); // this one does not return unverified ones printShares(inSharesByAllUsers , std::string("Folders shared by ") + nameOrEmail, true); std::unique_ptr unverifiedInShares (api->getUnverifiedInShares()); printShares(unverifiedInShares , std::string("Folders shared by ") + nameOrEmail, true); } assert(!printedSomeUnaccesibleInShare || !isUserVerified); if (!isUserVerified) { std::stringstream ss; ss << "Contact [" << nameOrEmail << "] is not verified"; if (printedSomeUnaccesibleInShare || printedSomeUnaccesibleOutShare) { ss << "\n"; if (printedSomeUnaccesibleOutShare) { ss << "Shares marked with (*) may not be accessible by your contact.\n"; } if (printedSomeUnaccesibleInShare) { ss << "Shares marked with (**) may not be accessible by you.\n"; } } ss << "\nType \"" << getCommandPrefixBasedOnMode() <<"users --help-verify " << email << "\" to get instructions on verification" << endl; printCenteredContentsT(OUTSTREAM, ss.str(), 78, true); OUTSTREAM << endl; } } } } delete usersList; } return; } else if (words[0] == "mkdir") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } int globalstatus = MCMD_OK; if (words.size()<2) { globalstatus = MCMD_EARGS; } bool printusage = false; for (unsigned int i = 1; i < words.size(); i++) { unescapeifRequired(words[i]); //git first existing node in the asked path: MegaNode *baseNode; string rest = words[i]; if (rest.find("//bin/") == 0) { baseNode = api->getRubbishNode(); rest = rest.substr(6); }//elseif //in/ else if(rest.find("/") == 0) { baseNode = api->getRootNode(); rest = rest.substr(1); } else { baseNode = api->getNodeByHandle(cwd); } while (baseNode && rest.length()) { size_t possep = rest.find_first_of("/"); if (possep == string::npos) { break; } string next = rest.substr(0, possep); if (next == ".") { rest = rest.substr(possep + 1); continue; } else if(next == "..") { MegaNode *aux = baseNode; baseNode = api->getNodeByHandle(baseNode->getParentHandle()); if (aux!=baseNode) // let's be paranoid { delete aux; } } else { MegaNodeList *children = api->getChildren(baseNode); if (children) { bool found = false; for (int i = 0; i < children->size(); i++) { MegaNode *child = children->get(i); if (next == child->getName()) { MegaNode *aux = baseNode; baseNode = child->copy(); found = true; if (aux!=baseNode) // let's be paranoid { delete aux; } break; } } delete children; if (!found) { break; } } } rest = rest.substr(possep + 1); } if (baseNode) { int status = makedir(rest,getFlag(clflags, "p"),baseNode); if (status != MCMD_OK) { globalstatus = status; } if (status == MCMD_EARGS) { printusage = true; } delete baseNode; } else { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Folder navigation failed"; return; } } setCurrentThreadOutCode(globalstatus); if (printusage) { LOG_err << " " << getUsageStr("mkdir"); } return; } else if (words[0] == "attr") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() <= 1) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr(words[0].c_str()); return; } bool removingAttr(getFlag(clflags, "d")); bool settingattr(getFlag(clflags, "s")); bool forceCustom = getFlag(clflags, "force-non-official"); string nodePath = words.size() > 1 ? words[1] : ""; string attribute = words.size() > 2 ? words[2] : ""; string attrValue = words.size() > 3 ? words[3] : ""; bool listAll(attribute.empty()); std::unique_ptr node (nodebypath(nodePath.c_str()) ); if (!node) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Couldn't find node: " << nodePath; return; } auto isOfficial = [](const std::string &what) { for ( auto &a : {"s4"}) { if (what == a) { return true; } } return false; }; if (settingattr || removingAttr) { if (attribute.empty()) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Attribute not specified"; LOG_err << " " << getUsageStr(words[0].c_str()); return; } auto megaCmdListener = std::make_unique(nullptr); if (forceCustom || !isOfficial(attribute)) { const char *cattrValue = removingAttr ? NULL : attrValue.c_str(); api->setCustomNodeAttribute(node.get(), attribute.c_str(), cattrValue, megaCmdListener.get()); } else if (attribute == "s4") { const char *cattrValue = removingAttr ? NULL : attrValue.c_str(); api->setNodeS4(node.get(), cattrValue, megaCmdListener.get()); } else { assert(false); LOG_err << "Not implemented official attribute support"; setCurrentThreadOutCode(MCMD_INVALIDTYPE); return; } megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "set node attribute: " + attribute)) { OUTSTREAM << "Node attribute " << attribute << ( removingAttr ? " removed" : " updated" ) << " correctly" << endl; //reload the node for printing updated values node.reset(api->getNodeByHandle(megaCmdListener->getRequest()->getNodeHandle())); if (!node) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Couldn't find node after updating its attribute: " << nodePath; return; } } } //List node custom attributes std::unique_ptr attrlist (node->getCustomAttrNames()); if (attrlist) { if (listAll) { OUTSTREAM << "The node has " << attrlist->size() << " custom attributes:" << endl; } for (int a = 0; a < attrlist->size(); a++) { string iattr = attrlist->get(a); if (listAll || ( attribute == iattr && (forceCustom || !isOfficial(iattr)))) { const char* iattrval = node->getCustomAttr(iattr.c_str()); if (getFlag(clflags, "print-only-value")) { OUTSTREAM << ( iattrval ? iattrval : "NULL" ) << endl; } else { OUTSTREAM << "\t" << iattr << " = " << ( iattrval ? iattrval : "NULL" ) << endl; } } } } // List official node attributes: if (listAll || !forceCustom) //otherwise no sense in listing official ones { bool showOficialsHeader(listAll); using NameGetter = std::pair>; for (auto & pair : { NameGetter{"s4", [](MegaNode *node){return node->getS4();}} }) { if (!listAll && ( attribute != pair.first )) { continue; // looking for another one } auto officialAttrValue = pair.second(node.get()); if (officialAttrValue && strlen(officialAttrValue)) { if (showOficialsHeader) { OUTSTREAM << "Official attributes:" << endl; showOficialsHeader = false; } if (getFlag(clflags, "print-only-value")) { OUTSTREAM << ( pair.second(node.get()) ) << endl; } else { OUTSTREAM << "\t" << pair.first << " = " << pair.second(node.get()) << endl; } } } } return; } else if (words[0] == "userattr") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } bool settingattr = getFlag(clflags, "s"); bool listattrs = getFlag(clflags, "list"); bool listall = words.size() == 1; int attribute = api->userAttributeFromString(words.size() > 1 ? words[1].c_str() : "-1"); string attrValue = words.size() > 2 ? words[2] : ""; string user = getOption(cloptions, "user", ""); if (settingattr && user.size()) { LOG_err << "Can't change other user attributes"; return; } if (settingattr) { if (attribute != -1) { const char *catrn = api->userAttributeToString(attribute); string attrname = catrn; delete [] catrn; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->setUserAttribute(attribute, attrValue.c_str(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), string("set user attribute ") + attrname)) { OUTSTREAM << "User attribute " << attrname << " updated correctly" << endl; printUserAttribute(attribute, user, listattrs); } delete megaCmdListener; } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Attribute not specified"; LOG_err << " " << getUsageStr("userattr"); return; } } else // list { if (listall) { int a = 0; bool found = false; do { found = printUserAttribute(a, user, listattrs); a++; } while (found && listall); } else { if (!printUserAttribute(attribute, user, listattrs)) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Attribute not found: " << words[1]; } } } return; } else if (words[0] == "thumbnail") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() > 1) { string nodepath = words[1]; string path = words.size() > 2 ? words[2] : "./"; std::unique_ptr n = nodebypath(nodepath.c_str()); if (n) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); bool setting = getFlag(clflags, "s"); if (setting) { api->setThumbnail(n.get(), path.c_str(), megaCmdListener); } else { api->getThumbnail(n.get(), path.c_str(), megaCmdListener); } megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), ( setting ? "set thumbnail " : "get thumbnail " ) + nodepath + " to " + path)) { OUTSTREAM << "Thumbnail for " << nodepath << ( setting ? " loaded from " : " saved in " ) << megaCmdListener->getRequest()->getFile() << endl; } delete megaCmdListener; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << nodepath << ": No such file or directory"; } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr(words[0].c_str()); return; } return; } else if (words[0] == "preview") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() > 1) { string nodepath = words[1]; string path = words.size() > 2 ? words[2] : "./"; std::unique_ptr n = nodebypath(nodepath.c_str()); if (n) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); bool setting = getFlag(clflags, "s"); if (setting) { api->setPreview(n.get(), path.c_str(), megaCmdListener); } else { api->getPreview(n.get(), path.c_str(), megaCmdListener); } megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), ( setting ? "set preview " : "get preview " ) + nodepath + " to " + path)) { OUTSTREAM << "Preview for " << nodepath << ( setting ? " loaded from " : " saved in " ) << megaCmdListener->getRequest()->getFile() << endl; } delete megaCmdListener; } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << nodepath << ": No such file or directory"; } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr(words[0].c_str()); return; } return; } else if (words[0] == "tree") { vector newcom; newcom.push_back("ls"); (*clflags)["tree"] = 1; if (words.size()>1) { for (vector::iterator it = ++words.begin(); it != words.end();it++) { newcom.push_back(*it); } } return executecommand(newcom, clflags, cloptions); } else if (words[0] == "debug") { vector newcom; newcom.push_back("log"); newcom.push_back("5"); return executecommand(newcom, clflags, cloptions); } else if (words[0] == "passwd") { string confirmationQuery("Changing password will close all your sessions. Are you sure?(Yes/No): "); bool force = getFlag(clflags, "f"); int confirmationResponse = force?MCMDCONFIRM_ALL:askforConfirmation(confirmationQuery); if (confirmationResponse != MCMDCONFIRM_YES && confirmationResponse != MCMDCONFIRM_ALL) { return; } if (api->isLoggedIn()) { if (words.size() == 1) { if (isCurrentThreadInteractive()) { setprompt(NEWPASSWORD); } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Extra args required in non-interactive mode. Usage: " << getUsageStr("passwd"); } } else if (words.size() == 2) { string pin2fa = getOption(cloptions, "auth-code", ""); changePassword(words[1].c_str(), pin2fa); } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("passwd"); } } else { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; } return; } else if (words[0] == "speedlimit") { bool uploadSpeed = getFlag(clflags, "u"); bool downloadSpeed = getFlag(clflags, "d"); bool uploadCons = getFlag(clflags, "upload-connections"); bool downloadCons = getFlag(clflags, "download-connections"); bool moreThanOne = !onlyZeroOrOneOf(uploadSpeed, downloadSpeed, uploadCons, downloadCons); bool noParam = onlyZeroOf(uploadSpeed, downloadSpeed, uploadCons, downloadCons); bool hr = getFlag(clflags,"h"); if (words.size() > 2 || moreThanOne) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("speedlimit"); return; } if (words.size() > 1) // setting { long long value = textToSize(words[1].c_str()); if (value == -1) { string s = words[1] + "B"; value = textToSize(s.c_str()); } if (noParam) { api->setMaxDownloadSpeed(value); api->setMaxUploadSpeed(value); ConfigurationManager::savePropertyValue("maxspeedupload", value); ConfigurationManager::savePropertyValue("maxspeeddownload", value); } else if (uploadSpeed) { api->setMaxUploadSpeed(value); ConfigurationManager::savePropertyValue("maxspeedupload", value); } else if (downloadSpeed) { api->setMaxDownloadSpeed(value); ConfigurationManager::savePropertyValue("maxspeeddownload", value); } else if (uploadCons || downloadCons) { auto megaCmdListener = std::make_unique(nullptr); api->setMaxConnections(uploadCons ? 1 : 0, value, megaCmdListener.get()); if (!checkNoErrors(megaCmdListener.get(), uploadCons ? "change max upload connections" : "change max download connections")) { return; } ConfigurationManager::savePropertyValue(uploadCons ? "maxuploadconnections" : "maxdownloadconnections", value); } } // listing: if (noParam) { long long us = api->getMaxUploadSpeed(); long long ds = api->getMaxDownloadSpeed(); OUTSTREAM << "Upload speed limit = " << (us?sizeToText(us,false,hr):"unlimited") << ((us && hr)?"/s":(us?" B/s":"")) << endl; OUTSTREAM << "Download speed limit = " << (ds?sizeToText(ds,false,hr):"unlimited") << ((ds && hr)?"/s":(us?" B/s":"")) << endl; auto upConns = ConfigurationManager::getConfigurationValue("maxuploadconnections", -1); auto downConns = ConfigurationManager::getConfigurationValue("maxdownloadconnections", -1); if (upConns != -1) { OUTSTREAM << "Upload max connections = " << upConns << std::endl; } if (downConns != -1) { OUTSTREAM << "Download max connections = " << downConns << std::endl;; } } else if (uploadSpeed) { long long us = api->getMaxUploadSpeed(); OUTSTREAM << "Upload speed limit = " << (us?sizeToText(us,false,hr):"unlimited") << ((us && hr)?"/s":(us?" B/s":"")) << endl; } else if (downloadSpeed) { long long ds = api->getMaxDownloadSpeed(); OUTSTREAM << "Download speed limit = " << (ds?sizeToText(ds,false,hr):"unlimited") << ((ds && hr)?"/s":(ds?" B/s":"")) << endl; } else if (uploadCons || downloadCons) { if (uploadCons) { auto upConns = ConfigurationManager::getConfigurationValue("maxuploadconnections", -1); if (upConns != -1) { OUTSTREAM << "Upload max connections = " << upConns << std::endl;; } } else { auto downConns = ConfigurationManager::getConfigurationValue("maxdownloadconnections", -1); if (downConns != -1) { OUTSTREAM << "Download max connections = " << downConns << std::endl;; } } } return; } else if (words[0] == "invite") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } if (words.size() > 1) { string email = words[1]; if (!isValidEmail(email)) { setCurrentThreadOutCode(MCMD_INVALIDEMAIL); LOG_err << "No valid email provided"; LOG_err << " " << getUsageStr("invite"); } else { int action = MegaContactRequest::INVITE_ACTION_ADD; if (getFlag(clflags, "d")) { action = MegaContactRequest::INVITE_ACTION_DELETE; } if (getFlag(clflags, "r")) { action = MegaContactRequest::INVITE_ACTION_REMIND; } string message = getOption(cloptions, "message", ""); MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->inviteContact(email.c_str(), message.c_str(), action, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), action==MegaContactRequest::INVITE_ACTION_DELETE?"remove invitation":"(re)invite user")) { OUTSTREAM << "Invitation to user: " << email << " " << (action==MegaContactRequest::INVITE_ACTION_DELETE?"removed":"sent") << endl; } else if (megaCmdListener->getError()->getErrorCode() == MegaError::API_EACCESS) { ostringstream os; os << "Reminder not yet available: " << " available after 15 days"; MegaContactRequestList *ocrl = api->getOutgoingContactRequests(); if (ocrl) { for (int i = 0; i < ocrl->size(); i++) { if (ocrl->get(i)->getTargetEmail() && megaCmdListener->getRequest()->getEmail() && !strcmp(ocrl->get(i)->getTargetEmail(), megaCmdListener->getRequest()->getEmail())) { os << " (" << getReadableTime(getTimeStampAfter(ocrl->get(i)->getModificationTime(), "15d")) << ")"; } } delete ocrl; } LOG_err << os.str(); } delete megaCmdListener; } } return; } else if (words[0] == "errorcode") { if (words.size() != 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("errorcode"); return; } int errCode = -1999; istringstream is(words[1]); is >> errCode; if (errCode == -1999) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid error code: " << words[1]; return; } if (errCode > 0) { errCode = -errCode; } string errString = getMCMDErrorString(errCode); if (errString == "UNKNOWN") { errString = MegaError::getErrorString(errCode); } OUTSTREAM << errString << endl; } else if (words[0] == "signup") { if (api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "Please logout first "; } else if (words.size() > 1) { string email = words[1]; string defaultName = email; replaceAll(defaultName, "@"," "); if (words.size() > 2) { string name = getOption(cloptions, "name", defaultName); string passwd = words[2]; signup(name, passwd, email); } else { login = words[1]; name = getOption(cloptions, "name", defaultName); signingup = true; if (isCurrentThreadInteractive()) { setprompt(NEWPASSWORD); } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Extra args required in non-interactive mode. Usage: " << getUsageStr("signup"); } } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("signup"); } return; } else if (words[0] == "whoami") { MegaUser *u = api->getMyUser(); if (u) { OUTSTREAM << "Account e-mail: " << u->getEmail() << endl; if (getFlag(clflags, "l")) { std::unique_ptr<::mega::MegaAccountDetails> storageDetails; std::unique_ptr<::mega::MegaAccountDetails> extAccountDetails; { auto megaCmdListener = std::make_unique(nullptr); api->getAccountDetails(megaCmdListener.get()); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "failed to get account details")) { storageDetails = std::unique_ptr<::mega::MegaAccountDetails>(megaCmdListener->getRequest()->getMegaAccountDetails()); } } { auto megaCmdListener = std::make_unique(nullptr); api->getExtendedAccountDetails(true, true, true, megaCmdListener.get()); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "get extended account details")) { extAccountDetails = std::unique_ptr<::mega::MegaAccountDetails>(megaCmdListener->getRequest()->getMegaAccountDetails()); } } actUponGetExtendedAccountDetails(std::move(storageDetails), std::move(extAccountDetails)); } delete u; } else { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; } return; } else if (words[0] == "df") { bool humanreadable = getFlag(clflags, "h"); MegaUser *u = api->getMyUser(); if (u) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->getSpecificAccountDetails(true, false, false, -1, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "failed to get used storage")) { unique_ptr details(megaCmdListener->getRequest()->getMegaAccountDetails()); if (details) { long long usedTotal = 0; long long rootStorage = 0; long long inboxStorage = 0; long long rubbishStorage = 0; long long insharesStorage = 0; long long storageMax = details->getStorageMax(); unique_ptr root(api->getRootNode()); unique_ptr inbox(api->getVaultNode()); unique_ptr rubbish(api->getRubbishNode()); unique_ptr inShares(api->getInShares()); if (!root || !inbox || !rubbish) { LOG_err << " Error retrieving storage details. Root node missing"; return; } MegaHandle rootHandle = root->getHandle(); MegaHandle inboxHandle = inbox->getHandle(); MegaHandle rubbishHandle = rubbish->getHandle(); rootStorage = details->getStorageUsed(rootHandle); OUTSTREAM << "Cloud drive: " << getFixLengthString(sizeToText(rootStorage, true, humanreadable), 12, ' ', true) << " in " << getFixLengthString(SSTR(details->getNumFiles(rootHandle)),7,' ',true) << " file(s) and " << getFixLengthString(SSTR(details->getNumFolders(rootHandle)),7,' ',true) << " folder(s)" << endl; inboxStorage = details->getStorageUsed(inboxHandle); OUTSTREAM << "Inbox: " << getFixLengthString(sizeToText(inboxStorage, true, humanreadable), 12, ' ', true ) << " in " << getFixLengthString(SSTR(details->getNumFiles(inboxHandle)),7,' ',true) << " file(s) and " << getFixLengthString(SSTR(details->getNumFolders(inboxHandle)),7,' ',true) << " folder(s)" << endl; rubbishStorage = details->getStorageUsed(rubbishHandle); OUTSTREAM << "Rubbish bin: " << getFixLengthString(sizeToText(rubbishStorage, true, humanreadable), 12, ' ', true) << " in " << getFixLengthString(SSTR(details->getNumFiles(rubbishHandle)),7,' ',true) << " file(s) and " << getFixLengthString(SSTR(details->getNumFolders(rubbishHandle)),7,' ',true) << " folder(s)" << endl; if (inShares) { for (int i = 0; i < inShares->size(); i++) { MegaNode *n = inShares->get(i); long long thisinshareStorage = details->getStorageUsed(n->getHandle()); insharesStorage += thisinshareStorage; if (i == 0) { OUTSTREAM << "Incoming shares:" << endl; } string name = n->getName(); name += ": "; name.append(max(0, int (21 - name.size())), ' '); OUTSTREAM << " " << name << getFixLengthString(sizeToText(thisinshareStorage, true, humanreadable), 12, ' ', true) << " in " << getFixLengthString(SSTR(details->getNumFiles(n->getHandle())),7,' ',true) << " file(s) and " << getFixLengthString(SSTR(details->getNumFolders(n->getHandle())),7,' ',true) << " folder(s)" << endl; } } usedTotal = sandboxCMD->receivedStorageSum; float percent = float(usedTotal * 1.0 / storageMax); if (percent < 0 ) percent = 0; string sof= percentageToText(percent); sof += " of "; sof += sizeToText(storageMax, true, humanreadable); for (int i = 0; i < 75 ; i++) { OUTSTREAM << "-"; } OUTSTREAM << endl; OUTSTREAM << "USED STORAGE: " << getFixLengthString(sizeToText(usedTotal, true, humanreadable), 12, ' ', true) << " " << getFixLengthString(sof, 39, ' ', true) << endl; for (int i = 0; i < 75 ; i++) { OUTSTREAM << "-"; } OUTSTREAM << endl; long long usedinVersions = details->getVersionStorageUsed(rootHandle) + details->getVersionStorageUsed(inboxHandle) + details->getVersionStorageUsed(rubbishHandle); OUTSTREAM << "Total size taken up by file versions: " << getFixLengthString(sizeToText(usedinVersions, true, humanreadable), 12, ' ', true) << endl; } } delete megaCmdListener; delete u; } else { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; } return; } else if (words[0] == "export") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } ::mega::m_time_t expireTime = 0; string sexpireTime = getOption(cloptions, "expire", ""); if ("" != sexpireTime) { expireTime = getTimeStampAfter(sexpireTime); } if (expireTime < 0) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid time " << sexpireTime; return; } const bool add = getFlag(clflags, "a"); auto passwordOpt = getOptionAsOptional(*cloptions, "password"); // When the user passes "--password" without "=" it gets treated as a flag, so // it's inserted into `clflags`. We'll treat this as hasPassword=true as well // to ensure we log the "password is empty" error to the user. if (!passwordOpt && getFlag(clflags, "password")) { passwordOpt = ""; } if (!add && (passwordOpt || expireTime > 0 || getFlag(clflags, "f") || getFlag(clflags, "writable") || getFlag(clflags, "mega-hosted"))) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Option can only be used when adding an export (with -a)"; LOG_err << "Usage: " << getUsageStr("export"); return; } // This will be true for '--password', '--password=', and '--password=""' // Note: --password='' will use the '' string as the actual password if (passwordOpt && passwordOpt->empty()) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Password cannot be empty"; return; } if (words.size() <= 1) { LOG_warn << "No file/folder argument provided, will export the current working folder"; words.push_back(string(".")); } for (size_t i = 1; i < words.size(); i++) { unescapeifRequired(words[i]); if (isRegExp(words[i])) { vector> nodes = nodesbypath(words[i].c_str(), getFlag(clflags,"use-pcre")); if (nodes.empty()) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Nodes not found: " << words[i]; } for (const auto& n : nodes) { assert(n); if (add) { if (!n->isExported()) { LOG_debug << " exporting ... " << n->getName() << " expireTime=" << expireTime; exportNode(n.get(), expireTime, passwordOpt, clflags, cloptions); } else { setCurrentThreadOutCode(MCMD_EXISTS); LOG_err << "Node " << words[i] << " is already exported. " << "Use -d to delete it if you want to change its parameters. Note: the new link may differ"; } } else if (getFlag(clflags, "d")) { LOG_debug << " deleting export ... " << n->getName(); disableExport(n.get()); } else { int exportedCount = dumpListOfExported(n.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, words[i]); if (exportedCount == 0) { setCurrentThreadOutCode(MCMD_NOTFOUND); OUTSTREAM << words[i] << " is not exported. Use -a to export it" << endl; } } } } else { std::unique_ptr n = nodebypath(words[i].c_str()); if (n) { auto nodeName = [CONST_CAPTURE(words), i] { return (words[i] == "." ? "current folder" : "<" + words[i] + ">"); }; if (add) { if (!n->isExported()) { LOG_debug << " exporting ... " << n->getName(); exportNode(n.get(), expireTime, passwordOpt, clflags, cloptions); } else { setCurrentThreadOutCode(MCMD_EXISTS); LOG_err << nodeName() << " is already exported. " << "Use -d to delete it if you want to change its parameters. Note: the new link may differ"; } } else if (getFlag(clflags, "d")) { LOG_debug << " deleting export ... " << n->getName(); disableExport(n.get()); } else { int exportedCount = dumpListOfExported(n.get(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822")), clflags, cloptions, words[i]); if (exportedCount == 0) { setCurrentThreadOutCode(MCMD_NOTFOUND); OUTSTREAM << "Couldn't find anything exported below " << nodeName() << ". Use -a to export " << (words[i].size() ? "it" : "something") << endl; } } } else { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Node not found: " << words[i]; } } } } else if (words[0] == "import") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } string remotePath = ""; std::unique_ptr dstFolder; if (words.size() > 1) //link { if (isPublicLink(words[1])) { string publicLink = words[1]; if (!decryptLinkIfEncrypted(api, publicLink, cloptions)) { return; } if (words.size() > 2) { remotePath = words[2]; dstFolder = nodebypath(remotePath.c_str()); } else { dstFolder.reset(api->getNodeByHandle(cwd)); remotePath = "."; //just to inform (alt: getpathbynode) } if (dstFolder && (!dstFolder->getType() == MegaNode::TYPE_FILE)) { if (getLinkType(publicLink) == MegaNode::TYPE_FILE) { MegaCmdListener *megaCmdListener = new MegaCmdListener(nullptr); api->importFileLink(publicLink.c_str(), dstFolder.get(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "import node")) { MegaNode *imported = api->getNodeByHandle(megaCmdListener->getRequest()->getNodeHandle()); if (imported) { char *importedPath = api->getNodePath(imported); OUTSTREAM << "Import file complete: " << importedPath << endl; delete []importedPath; } else { LOG_warn << "Import file complete: Couldn't get path of imported file"; } delete imported; } delete megaCmdListener; } else if (getLinkType(publicLink) == MegaNode::TYPE_FOLDER) { MegaApi* apiFolder = getFreeApiFolder(); if (!apiFolder) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "No available Api folder. Use configure to increase exported_folders_sdks"; return; } char *accountAuth = api->getAccountAuth(); apiFolder->setAccountAuth(accountAuth); delete []accountAuth; MegaCmdListener *megaCmdListener = new MegaCmdListener(apiFolder, NULL); apiFolder->loginToFolder(publicLink.c_str(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "login to folder")) { MegaCmdListener *megaCmdListener2 = new MegaCmdListener(apiFolder, NULL); apiFolder->fetchNodes(megaCmdListener2); megaCmdListener2->wait(); if (checkNoErrors(megaCmdListener2->getError(), "access folder link " + publicLink)) { MegaNode *nodeToImport = NULL; bool usedRoot = false; string shandle = getPublicLinkHandle(publicLink); if (shandle.size()) { handle thehandle = apiFolder->base64ToHandle(shandle.c_str()); nodeToImport = apiFolder->getNodeByHandle(thehandle); } else { nodeToImport = apiFolder->getRootNode(); usedRoot = true; } if (nodeToImport) { MegaNode *authorizedNode = apiFolder->authorizeNode(nodeToImport); if (authorizedNode != NULL) { MegaCmdListener *megaCmdListener3 = new MegaCmdListener(apiFolder, NULL); api->copyNode(authorizedNode, dstFolder.get(), megaCmdListener3); megaCmdListener3->wait(); if (checkNoErrors(megaCmdListener->getError(), "import folder node")) { MegaNode *importedFolderNode = api->getNodeByHandle(megaCmdListener3->getRequest()->getNodeHandle()); char *pathnewFolder = api->getNodePath(importedFolderNode); if (pathnewFolder) { OUTSTREAM << "Imported folder complete: " << pathnewFolder << endl; delete []pathnewFolder; } delete importedFolderNode; } delete megaCmdListener3; delete authorizedNode; } else { setCurrentThreadOutCode(MCMD_EUNEXPECTED); LOG_debug << "Node couldn't be authorized: " << publicLink; } delete nodeToImport; } else { setCurrentThreadOutCode(MCMD_INVALIDSTATE); if (usedRoot) { LOG_err << "Couldn't get root folder for folder link"; } else { LOG_err << "Failed to get node corresponding to handle within public link " << shandle; } } } { std::unique_ptr megaCmdListener(new MegaCmdListener(apiFolder)); apiFolder->logout(false, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() != MegaError::API_OK) { LOG_err << "Couldn't logout from apiFolder"; } } delete megaCmdListener2; } delete megaCmdListener; freeApiFolder(apiFolder); } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid link: " << publicLink; LOG_err << " " << getUsageStr("import"); } } else { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << "Invalid destiny: " << remotePath; } } else { setCurrentThreadOutCode(MCMD_INVALIDTYPE); LOG_err << "Invalid link: " << words[1]; } } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("import"); } return; } else if (words[0] == "reload") { int clientID = getintOption(cloptions, "clientID", -1); OUTSTREAM << "Reloading account..." << endl; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL, NULL, clientID); sandboxCMD->mNodesCurrentPromise.initiatePromise(); api->fetchNodes(megaCmdListener); actUponFetchNodes(api, megaCmdListener); delete megaCmdListener; return; } else if (words[0] == "logout") { OUTSTREAM << "Logging out..." << endl; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); bool keepSession = getFlag(clflags, "keep-session"); char * dumpSession = NULL; if (keepSession) //local logout { dumpSession = api->dumpSession(); api->localLogout(megaCmdListener); } else { api->logout(false, megaCmdListener); } actUponLogout(megaCmdListener, keepSession); if (keepSession) { OUTSTREAM << "Session closed but not deleted. Warning: it will be restored the next time you execute the application. Execute \"logout\" to delete the session permanently." << endl; if (dumpSession) { OUTSTREAM << "You can also login with the session id: " << dumpSession << endl; delete []dumpSession; } } delete megaCmdListener; return; } else if (words[0] == "confirm") { if (getFlag(clflags, "security")) { auto megaCmdListener = std::make_unique(nullptr); api->upgradeSecurity(megaCmdListener.get()); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "confirm security upgrade")) { removeGreetingMatching("Your account's security needs upgrading"); OUTSTREAM << "Account security upgrade. You shall no longer see an account security warning." << endl; } return; } if (words.size() > 2) { string link = words[1]; string email = words[2]; // check email corresponds with link: MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->querySignupLink(link.c_str(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "check email corresponds to link")) { if (megaCmdListener->getRequest()->getFlag()) { OUTSTREAM << "Account " << email << " confirmed successfully. You can login with it now" << endl; } else if (megaCmdListener->getRequest()->getEmail() && email == megaCmdListener->getRequest()->getEmail()) { string passwd; if (words.size() > 3) { passwd = words[3]; confirm(passwd, email, link); } else { this->login = email; this->link = link; confirming = true; if (isCurrentThreadInteractive() && !isCurrentThreadCmdShell()) { setprompt(LOGINPASSWORD); } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Extra args required in non-interactive mode. Usage: " << getUsageStr("confirm"); } } } else { setCurrentThreadOutCode(MCMD_INVALIDEMAIL); LOG_err << email << " doesn't correspond to the confirmation link: " << link; } } delete megaCmdListener; } else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("confirm"); } return; } else if (words[0] == "session") { char * dumpSession = api->dumpSession(); if (dumpSession) { OUTSTREAM << "Your (secret) session is: " << dumpSession << endl; delete []dumpSession; } else { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; } return; } else if (words[0] == "history") { return; } else if (words[0] == "version") { OUTSTREAM << "MEGAcmd version: " << MEGACMD_MAJOR_VERSION << "." << MEGACMD_MINOR_VERSION << "." << MEGACMD_MICRO_VERSION << "." << MEGACMD_BUILD_ID << ": code " << MEGACMD_CODE_VERSION #ifdef _WIN64 << " (64 bits)" #endif << endl; MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->getLastAvailableVersion("BdARkQSQ",megaCmdListener); if (!megaCmdListener->trywait(2000)) { if (!megaCmdListener->getError()) { LOG_fatal << "No MegaError at getLastAvailableVersion: "; } else if (megaCmdListener->getError()->getErrorCode() != MegaError::API_OK) { LOG_debug << "Couldn't get latests available version: " << megaCmdListener->getError()->getErrorString(); } else { if (megaCmdListener->getRequest()->getNumber() != MEGACMD_CODE_VERSION) { OUTSTREAM << "---------------------------------------------------------------------" << endl; OUTSTREAM << "-- There is a new version available of megacmd: " << getLeftAlignedStr(megaCmdListener->getRequest()->getName(), 12) << "--" << endl; OUTSTREAM << "-- Please, download it from https://mega.nz/cmd --" << endl; #if defined(__APPLE__) OUTSTREAM << "-- Before installing enter \"exit\" to close MEGAcmd --" << endl; #endif OUTSTREAM << "---------------------------------------------------------------------" << endl; } } delete megaCmdListener; } else { LOG_debug << "Couldn't get latests available version (petition timed out)"; api->removeRequestListener(megaCmdListener); delete megaCmdListener; } if (getFlag(clflags,"c")) { OUTSTREAM << "Changes in the current version:" << endl; string thechangelog = megacmdchangelog; if (thechangelog.size()) { replaceAll(thechangelog,"\n","\n * "); OUTSTREAM << " * " << thechangelog << endl << endl; } OUTSTREAM << "Full changelog available at https://github.com/meganz/MEGAcmd/blob/master/build/megacmd/megacmd.changes" << endl << endl; } if (getFlag(clflags,"l")) { OUTSTREAM << "MEGA SDK version: " << SDK_COMMIT_HASH << endl; OUTSTREAM << "MEGA SDK Credits: https://github.com/meganz/sdk/blob/master/CREDITS.md" << endl; OUTSTREAM << "MEGA SDK License: https://github.com/meganz/sdk/blob/master/LICENSE" << endl; OUTSTREAM << "MEGAcmd License: https://github.com/meganz/megacmd/blob/master/LICENSE" << endl; OUTSTREAM << "MEGA Terms: https://mega.nz/terms" << endl; OUTSTREAM << "MEGA General Data Protection Regulation Disclosure: https://mega.nz/gdpr" << endl; OUTSTREAM << "Features enabled:" << endl; #ifdef USE_CRYPTOPP OUTSTREAM << "* CryptoPP" << endl; #endif #ifdef USE_SQLITE OUTSTREAM << "* SQLite" << endl; #endif #ifdef USE_BDB OUTSTREAM << "* Berkeley DB" << endl; #endif #ifdef USE_INOTIFY OUTSTREAM << "* inotify" << endl; #endif #ifdef HAVE_FDOPENDIR OUTSTREAM << "* fdopendir" << endl; #endif #ifdef HAVE_SENDFILE OUTSTREAM << "* sendfile" << endl; #endif #ifdef _LARGE_FILES OUTSTREAM << "* _LARGE_FILES" << endl; #endif #ifdef USE_FREEIMAGE OUTSTREAM << "* FreeImage" << endl; #endif #ifdef USE_PCRE OUTSTREAM << "* PCRE" << endl; #endif #ifdef ENABLE_SYNC OUTSTREAM << "* sync subsystem" << endl; #endif } return; } else if (words[0] == "masterkey") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } OUTSTREAM << api->exportMasterKey() << endl; api->masterKeyExported(); //we do not wait for this to end } else if (words[0] == "showpcr") { if (!api->isFilesystemAvailable()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in."; return; } bool incoming = getFlag(clflags, "in"); bool outgoing = getFlag(clflags, "out"); if (!incoming && !outgoing) { incoming = true; outgoing = true; } if (outgoing) { MegaContactRequestList *ocrl = api->getOutgoingContactRequests(); if (ocrl) { if (ocrl->size()) { OUTSTREAM << "Outgoing PCRs:" << endl; } for (int i = 0; i < ocrl->size(); i++) { auto cr = ocrl->get(i); OUTSTREAM << " " << getLeftAlignedStr(cr->getTargetEmail(),22); char * sid = api->userHandleToBase64(cr->getHandle()); OUTSTREAM << "\t (id: " << sid << ", creation: " << getReadableTime(cr->getCreationTime(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822"))) << ", modification: " << getReadableTime(cr->getModificationTime(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822"))) << ")"; delete[] sid; OUTSTREAM << endl; } delete ocrl; } } if (incoming) { MegaContactRequestList *icrl = api->getIncomingContactRequests(); if (icrl) { if (icrl->size()) { OUTSTREAM << "Incoming PCRs:" << endl; } for (int i = 0; i < icrl->size(); i++) { auto cr = icrl->get(i); OUTSTREAM << " " << getLeftAlignedStr(cr->getSourceEmail(), 22); MegaHandle id = cr->getHandle(); char sid[12]; Base64::btoa((unsigned char*)&( id ), sizeof( id ), sid); OUTSTREAM << "\t (id: " << sid << ", creation: " << getReadableTime(cr->getCreationTime(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822"))) << ", modification: " << getReadableTime(cr->getModificationTime(), getTimeFormatFromSTR(getOption(cloptions, "time-format","RFC2822"))) << ")"; if (cr->getSourceMessage()) { OUTSTREAM << endl << "\t" << "Invitation message: " << cr->getSourceMessage(); } OUTSTREAM << endl; } delete icrl; } } return; } else if (words[0] == "killsession") { bool all = getFlag(clflags, "a"); if ((words.size() <= 1 && !all) || (all && words.size() > 1)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("killsession"); return; } string thesession; MegaHandle thehandle = UNDEF; if (all) { // Kill all sessions (except current) words.push_back("all"); } for (unsigned int i = 1; i < words.size() ; i++) { thesession = words[i]; if (thesession == "all") { thehandle = INVALID_HANDLE; } else { thehandle = api->base64ToUserHandle(thesession.c_str()); } MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->killSession(thehandle, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "kill session " + thesession + ". Maybe the session was not valid.")) { if (thesession != "all") { OUTSTREAM << "Session " << thesession << " killed successfully" << endl; } else { OUTSTREAM << "All sessions killed successfully" << endl; } } delete megaCmdListener; } return; } else if (words[0] == "transfers") { bool showcompleted = getFlag(clflags, "show-completed"); bool onlycompleted = getFlag(clflags, "only-completed"); bool onlyuploads = getFlag(clflags, "only-uploads"); bool onlydownloads = getFlag(clflags, "only-downloads"); bool showsyncs = getFlag(clflags, "show-syncs"); bool printsummary = getFlag(clflags, "summary"); int PATHSIZE = getintOption(cloptions,"path-display-size"); if (!PATHSIZE) { // get screen size for output purposes unsigned int width = getNumberOfCols(75); PATHSIZE = min(60,int((width-46)/2)); } PATHSIZE = max(0, PATHSIZE); if (getFlag(clflags,"c")) { if (getFlag(clflags,"a")) { if (onlydownloads || (!onlyuploads && !onlydownloads) ) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->cancelTransfers(MegaTransfer::TYPE_DOWNLOAD, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "cancel all download transfers")) { OUTSTREAM << "Download transfers cancelled successfully." << endl; } delete megaCmdListener; } if (onlyuploads || (!onlyuploads && !onlydownloads) ) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->cancelTransfers(MegaTransfer::TYPE_UPLOAD, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "cancel all upload transfers")) { OUTSTREAM << "Upload transfers cancelled successfully." << endl; } delete megaCmdListener; } } else { if (words.size() < 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("transfers"); return; } for (unsigned int i = 1; i < words.size(); i++) { std::unique_ptr transfer(api->getTransferByTag(toInteger(words[i],-1))); if (transfer) { if (transfer->isSyncTransfer()) { LOG_err << "Unable to cancel transfer with tag " << words[i] << ". Sync transfers cannot be cancelled"; setCurrentThreadOutCode(MCMD_INVALIDTYPE); } else { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->cancelTransfer(transfer.get(), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), "cancel transfer with tag " + words[i] + ".")) { OUTSTREAM << "Transfer " << words[i]<< " cancelled successfully." << endl; } delete megaCmdListener; } } else { LOG_err << "Could not find transfer with tag: " << words[i]; setCurrentThreadOutCode(MCMD_NOTFOUND); } } } return; } if (getFlag(clflags,"p") || getFlag(clflags,"r")) { if (getFlag(clflags,"a")) { if (onlydownloads || (!onlyuploads && !onlydownloads) ) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->pauseTransfers(getFlag(clflags,"p"), MegaTransfer::TYPE_DOWNLOAD, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), (getFlag(clflags,"p")?"pause all download transfers":"resume all download transfers"))) { OUTSTREAM << "Download transfers "<< (getFlag(clflags,"p")?"pause":"resume") << "d successfully." << endl; } delete megaCmdListener; } if (onlyuploads || (!onlyuploads && !onlydownloads) ) { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->pauseTransfers(getFlag(clflags,"p"), MegaTransfer::TYPE_UPLOAD, megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), (getFlag(clflags,"p")?"pause all download transfers":"resume all download transfers"))) { OUTSTREAM << "Upload transfers "<< (getFlag(clflags,"p")?"pause":"resume") << "d successfully." << endl; } delete megaCmdListener; } } else { if (words.size() < 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << " " << getUsageStr("transfers"); return; } for (unsigned int i = 1; i < words.size(); i++) { std::unique_ptr transfer(api->getTransferByTag(toInteger(words[i],-1))); if (transfer) { if (transfer->isSyncTransfer()) { LOG_err << "Unable to "<< (getFlag(clflags,"p")?"pause":"resume") << " transfer with tag " << words[i] << ". Sync transfers cannot be "<< (getFlag(clflags,"p")?"pause":"resume") << "d"; setCurrentThreadOutCode(MCMD_INVALIDTYPE); } else { MegaCmdListener *megaCmdListener = new MegaCmdListener(NULL); api->pauseTransfer(transfer.get(), getFlag(clflags,"p"), megaCmdListener); megaCmdListener->wait(); if (checkNoErrors(megaCmdListener->getError(), (getFlag(clflags,"p")?"pause transfer with tag ":"resume transfer with tag ") + words[i] + ".")) { OUTSTREAM << "Transfer " << words[i]<< " "<< (getFlag(clflags,"p")?"pause":"resume") << "d successfully." << endl; } delete megaCmdListener; } } else { LOG_err << "Could not find transfer with tag: " << words[i]; setCurrentThreadOutCode(MCMD_NOTFOUND); } } } return; } //show transfers std::unique_ptr transferdata(api->getTransferData()); int ndownloads = transferdata->getNumDownloads(); int nuploads = transferdata->getNumUploads(); if (printsummary) { long long transferredDownload = 0, transferredUpload = 0, totalDownload = 0, totalUpload = 0; for (int i = 0; i< ndownloads; i++) { MegaTransfer *t = api->getTransferByTag(transferdata->getDownloadTag(i)); { if (t) { transferredDownload += t->getTransferredBytes(); totalDownload += t->getTotalBytes(); delete t; } } } for (int i = 0; i< nuploads; i++) { MegaTransfer *t = api->getTransferByTag(transferdata->getUploadTag(i)); { if (t) { transferredUpload += t->getTransferredBytes(); totalUpload += t->getTotalBytes(); delete t; } } } float percentDownload = !totalDownload?0:float(transferredDownload*1.0/totalDownload); float percentUpload = !totalUpload?0:float(transferredUpload*1.0/totalUpload); OUTSTREAM << getFixLengthString("NUM DOWNLOADS", 16, ' ', true); OUTSTREAM << getFixLengthString("DOWNLOADED", 12, ' ', true); OUTSTREAM << getFixLengthString("TOTAL", 12, ' ', true); OUTSTREAM << getFixLengthString("% ", 8, ' ', true); OUTSTREAM << " "; OUTSTREAM << getFixLengthString("NUM UPLOADS", 16, ' ', true); OUTSTREAM << getFixLengthString("UPLOADED", 12, ' ', true); OUTSTREAM << getFixLengthString("TOTAL", 12, ' ', true); OUTSTREAM << getFixLengthString("% ", 8, ' ', true); OUTSTREAM << endl; OUTSTREAM << getFixLengthString(SSTR(ndownloads), 16, ' ', true); OUTSTREAM << getFixLengthString(sizeToText(transferredDownload), 12, ' ', true); OUTSTREAM << getFixLengthString(sizeToText(totalDownload), 12, ' ', true); OUTSTREAM << getFixLengthString(percentageToText(percentDownload),8,' ',true); OUTSTREAM << " "; OUTSTREAM << getFixLengthString(SSTR(nuploads), 16, ' ', true); OUTSTREAM << getFixLengthString(sizeToText(transferredUpload), 12, ' ', true); OUTSTREAM << getFixLengthString(sizeToText(totalUpload), 12, ' ', true); OUTSTREAM << getFixLengthString(percentageToText(percentUpload),8,' ',true); OUTSTREAM << endl; return; } int limit = getintOption(cloptions, "limit", min(10,ndownloads+nuploads+(int)globalTransferListener->completedTransfers.size())); if (!transferdata) { setCurrentThreadOutCode(MCMD_EUNEXPECTED); LOG_err << "No transferdata."; return; } bool downloadpaused = api->areTransfersPaused(MegaTransfer::TYPE_DOWNLOAD); bool uploadpaused = api->areTransfersPaused(MegaTransfer::TYPE_UPLOAD); int indexUpload = 0; int indexDownload = 0; int shown = 0; int showndl = 0; int shownup = 0; unsigned int shownCompleted = 0; vector transfersDLToShow; vector transfersUPToShow; vector transfersCompletedToShow; if (showcompleted) { globalTransferListener->completedTransfersMutex.lock(); size_t totalcompleted = globalTransferListener->completedTransfers.size(); for (size_t i = 0;(i < totalcompleted) && (shownCompleted < totalcompleted) && (shownCompleted < (size_t)(limit+1)); //Note limit+1 to seek for one more to show if there are more to show! i++) { MegaTransfer *transfer = globalTransferListener->completedTransfers.at(i); if ( ( (transfer->getType() == MegaTransfer::TYPE_UPLOAD && (onlyuploads || (!onlyuploads && !onlydownloads) )) || (transfer->getType() == MegaTransfer::TYPE_DOWNLOAD && (onlydownloads || (!onlyuploads && !onlydownloads) ) ) ) && !(!showsyncs && transfer->isSyncTransfer()) ) { transfersCompletedToShow.push_back(transfer); shownCompleted++; } } globalTransferListener->completedTransfersMutex.unlock(); } shown += shownCompleted; while (!onlycompleted) { //MegaTransfer *transfer = transferdata->get(i); MegaTransfer *transfer = NULL; //Next transfer to show if (onlyuploads && !onlydownloads && indexUpload < transferdata->getNumUploads()) //Only uploads { transfer = api->getTransferByTag(transferdata->getUploadTag(indexUpload++)); } else { if ( (!onlydownloads || (onlydownloads && onlyuploads)) //both && ( (shown >= (limit/2) ) || indexDownload == ndownloads ) // /already chosen half slots for dls or no more dls && indexUpload < transferdata->getNumUploads() ) //This is not 100 % perfect, it could show with a limit of 10 5 downloads and 3 uploads with more downloads on the queue. { transfer = api->getTransferByTag(transferdata->getUploadTag(indexUpload++)); } else if(indexDownload < ndownloads) { transfer = api->getTransferByTag(transferdata->getDownloadTag(indexDownload++)); } } if (!transfer) break; //finish if ( (showcompleted || transfer->getState() != MegaTransfer::STATE_COMPLETED) && !(onlyuploads && transfer->getType() != MegaTransfer::TYPE_UPLOAD && !onlydownloads ) && !(onlydownloads && transfer->getType() != MegaTransfer::TYPE_DOWNLOAD && !onlyuploads ) && !(!showsyncs && transfer->isSyncTransfer()) && (shown < (limit+1)) //Note limit+1 to seek for one more to show if there are more to show! ) { shown++; if (transfer->getType() == MegaTransfer::TYPE_DOWNLOAD) { transfersDLToShow.push_back(transfer); showndl++; } else { transfersUPToShow.push_back(transfer); shownup++; } } else { delete transfer; } if (shown>limit || transfer == NULL) //we-re done { break; } } vector::iterator itCompleted = transfersCompletedToShow.begin(); vector::iterator itDLs = transfersDLToShow.begin(); vector::iterator itUPs = transfersUPToShow.begin(); ColumnDisplayer cd(clflags, cloptions); cd.addHeader("SOURCEPATH", false); cd.addHeader("DESTINYPATH", false); for (unsigned int i=0;i 1) { proxyType = MegaProxy::PROXY_CUSTOM; urlProxy = words[1]; } else if (autoProxy) { proxyType = MegaProxy::PROXY_AUTO; } else if (noneProxy) { proxyType = MegaProxy::PROXY_NONE; } if (proxyType == -1) { int configuredProxyType = ConfigurationManager::getConfigurationValue("proxy_type", -1); auto configuredProxyUrl = ConfigurationManager::getConfigurationSValue("proxy_url"); auto configuredProxyUsername = ConfigurationManager::getConfigurationSValue("proxy_username"); auto configuredProxyPassword = ConfigurationManager::getConfigurationSValue("proxy_password"); if (configuredProxyType == -1) { OUTSTREAM << "No proxy configuration found" << endl; return; } if (configuredProxyType == MegaProxy::PROXY_NONE) { OUTSTREAM << "Proxy disabled" << endl; return; } OUTSTREAM << "Proxy configured. "; if (configuredProxyType == MegaProxy::PROXY_AUTO) { OUTSTREAM << endl << " Type = AUTO"; } else { OUTSTREAM << endl << " Type = CUSTOM"; } if (configuredProxyUrl.size()) { OUTSTREAM << endl << " URL = " << configuredProxyUrl; } if (configuredProxyUsername.size()) { OUTSTREAM << endl << " username = " << configuredProxyUsername; } if (configuredProxyPassword.size()) { OUTSTREAM << endl << " password = " << configuredProxyPassword; } OUTSTREAM << endl; } else { setProxy(urlProxy, username, password, proxyType); } } #ifdef WITH_FUSE else if (words[0] == "fuse-add") { if (!api->isFilesystemAvailable() || !api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } #ifdef WIN32 if (words.size() != 2 && (!getenv("MEGACMD_FUSE_ALLOW_LOCAL_PATHS") || words.size() != 3)) #else if (words.size() != 3) #endif { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << getUsageStr("fuse-add"); return; } bool remoteIsFirstArg(words.size() == 2); const std::string& localPathStr = remoteIsFirstArg ? std::string("") : words[1]; const std::string& remotePathStr = remoteIsFirstArg ? words[1] : words[2]; if (remotePathStr.empty() #ifndef WIN32 || localPathStr.empty() #endif ) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Path cannot be empty"; LOG_err << " " << getUsageStr("fuse-add"); return; } const fs::path localPath = localPathStr; #ifndef WIN32 if (std::error_code ec; !fs::exists(localPath, ec) || ec) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Local path " << localPath << " does not exist"; return; } #endif std::unique_ptr node = nodebypath(remotePathStr.c_str()); if (node == nullptr) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Remote path \"" << remotePathStr << "\" does not exist"; return; } const std::string name = getOption(cloptions, "name", ""); const bool disabled = getFlag(clflags, "disabled"); const bool transient = getFlag(clflags, "transient"); const bool readOnly = getFlag(clflags, "read-only"); FuseCommand::addMount(*api, localPath, *node, disabled, transient, readOnly, name); } else if (words[0] == "fuse-remove") { if (!api->isFilesystemAvailable() || !api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } if (words.size() != 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << getUsageStr("fuse-remove"); return; } const std::string& identifier = words[1]; auto mount = FuseCommand::getMountByNameOrPath(*api, identifier); if (!mount) { setCurrentThreadOutCode(MCMD_NOTFOUND); return; } FuseCommand::removeMount(*api, *mount); } else if (words[0] == "fuse-enable") { if (!api->isFilesystemAvailable() || !api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } if (words.size() != 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << getUsageStr("fuse-enable"); return; } const std::string& identifier = words[1]; auto mount = FuseCommand::getMountByNameOrPath(*api, identifier); if (!mount) { setCurrentThreadOutCode(MCMD_NOTFOUND); return; } const bool temporarily = getFlag(clflags, "temporarily"); FuseCommand::enableMount(*api, *mount, temporarily); } else if (words[0] == "fuse-disable") { if (!api->isFilesystemAvailable() || !api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } if (words.size() != 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << getUsageStr("fuse-disable"); return; } const std::string& identifier = words[1]; auto mount = FuseCommand::getMountByNameOrPath(*api, identifier); if (!mount) { setCurrentThreadOutCode(MCMD_NOTFOUND); return; } const bool temporarily = getFlag(clflags, "temporarily"); FuseCommand::disableMount(*api, *mount, temporarily); } else if (words[0] == "fuse-show") { if (!api->isFilesystemAvailable() || !api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } if (words.size() > 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << getUsageStr("fuse-show"); return; } const bool showAllMounts = (words.size() == 1); if (showAllMounts) { int rowCountLimit = getintOption(cloptions, "limit", 0); if (rowCountLimit < 0) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Row count limit cannot be less than 0"; return; } if (rowCountLimit == 0) { rowCountLimit = std::numeric_limits::max(); } const bool disablePathCollapse = getFlag(clflags, "disable-path-collapse"); const bool onlyEnabled = getFlag(clflags, "only-enabled"); ColumnDisplayer cd(clflags, cloptions); FuseCommand::printAllMounts(*api, cd, onlyEnabled, disablePathCollapse, rowCountLimit); } else { const std::string& identifier = words[1]; auto mount = FuseCommand::getMountByNameOrPath(*api, identifier); if (!mount) { setCurrentThreadOutCode(MCMD_NOTFOUND); return; } FuseCommand::printMount(*api, *mount); } } else if (words[0] == "fuse-config") { if (!api->isFilesystemAvailable() || !api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } if (words.size() != 2) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << getUsageStr("fuse-config"); return; } auto configDeltaOpt = loadFuseConfigDelta(*cloptions); if (!configDeltaOpt) { setCurrentThreadOutCode(MCMD_EARGS); return; } const std::string& identifier = words[1]; auto mount = FuseCommand::getMountByNameOrPath(*api, identifier); if (!mount) { setCurrentThreadOutCode(MCMD_NOTFOUND); return; } FuseCommand::changeConfig(*api, *mount, *configDeltaOpt); } #endif else if (words[0] == "sync-issues") { if (!api->isFilesystemAvailable() || !api->isLoggedIn()) { setCurrentThreadOutCode(MCMD_NOTLOGGEDIN); LOG_err << "Not logged in"; return; } bool disableWarning = getFlag(clflags, "disable-warning"); bool enableWarning = getFlag(clflags, "enable-warning"); if (!onlyZeroOrOneOf(disableWarning, enableWarning)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Only one warning action (enable/disable) can be specified at a time"; LOG_err << " " << getUsageStr("sync-issues"); return; } int rowCountLimit = getintOption(cloptions, "limit", 10); if (rowCountLimit < 0) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Row count limit cannot be less than 0"; return; } if (rowCountLimit == 0) { rowCountLimit = std::numeric_limits::max(); } bool disablePathCollapse = getFlag(clflags, "disable-path-collapse"); if (disableWarning) { mSyncIssuesManager.disableWarning(); return; } if (enableWarning) { mSyncIssuesManager.enableWarning(); return; } auto syncIssues = mSyncIssuesManager.getSyncIssues(); #ifdef MEGACMD_TESTING_CODE // Do not trust empty results (SDK may send them after spurious scans delayed 20ds. SDK-4813) timelyRetry(std::chrono::milliseconds(2300), std::chrono::milliseconds(200), [&syncIssues]() { return !syncIssues.empty(); }, [this, &syncIssues, firstTime{true}]() mutable { if (firstTime) { LOG_warn << "sync-issues first retrieval returned empty"; firstTime = false; } syncIssues = mSyncIssuesManager.getSyncIssues(); LOG_warn << "sync-issues retrieval returned empty. Retried returned = " << syncIssues.size(); }); #endif ColumnDisplayer cd(clflags, cloptions); bool detailSyncIssue = getFlag(clflags, "detail"); if (detailSyncIssue) // get the details of one or more issues { bool showAll = getFlag(clflags, "all"); if (showAll) { if (words.size() != 1) { LOG_err << getUsageStr("sync-issues"); return; } SyncIssuesCommand::printAllIssuesDetail(*api, cd, syncIssues, disablePathCollapse, rowCountLimit); } else { if (words.size() != 2) { LOG_err << getUsageStr("sync-issues"); return; } const std::string syncIssueId = words.back(); auto syncIssuePtr = syncIssues.getSyncIssue(syncIssueId); if (!syncIssuePtr) { setCurrentThreadOutCode(MCMD_NOTFOUND); LOG_err << "Sync issue \"" << syncIssueId << "\" does not exist"; return; } SyncIssuesCommand::printSingleIssueDetail(*api, cd, *syncIssuePtr, disablePathCollapse, rowCountLimit); } } else // show all sync issues { if (syncIssues.empty()) { OUTSTREAM << "There are no sync issues" << endl; return; } SyncIssuesCommand::printAllIssues(*api, cd, syncIssues, disablePathCollapse, rowCountLimit); } } #if defined(DEBUG) || defined(MEGACMD_TESTING_CODE) else if (words[0] == "echo") { if (words.size() < 2 || words[1].empty()) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Missing message to echo"; return; } std::string str = words[1]; #ifdef _WIN32 if (str == "") { str = "\xf0\x8f\xbf\xbf"; } #endif if (getFlag(clflags, "log-as-err")) { LOG_err << str; } else { OUTSTREAM << str << endl; } } #endif else { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Invalid command: " << words[0]; } } }//end namespace MEGAcmd-2.5.2_Linux/src/megacmdexecuter.h000066400000000000000000000334671516543156300202240ustar00rootroot00000000000000/** * @file src/megacmdexecuter.h * @brief MEGAcmd: Executer of the commands * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef MEGACMDEXECUTER_H #define MEGACMDEXECUTER_H #include "megacmdlogger.h" #include "megacmdsandbox.h" #include "listeners.h" #include "deferred_single_trigger.h" #include "sync_issues.h" namespace megacmd { class MegaCmdGlobalTransferListener; class MegaCmdMultiTransferListener; class MegaCmdSandbox; class MegaCmdExecuter { private: mega::MegaApi *api; mega::handle cwd; std::unique_ptr session; std::unique_ptr mFsAccessCMD; MegaCmdLogger *loggerCMD; MegaCmdSandbox *sandboxCMD; MegaCmdGlobalTransferListener *globalTransferListener; std::mutex mtxSyncMap; std::mutex mtxWebDavLocations; std::mutex mtxFtpLocations; DeferredSingleTrigger mDeferredSharedFoldersVerifier; SyncIssuesManager mSyncIssuesManager; std::recursive_mutex mtxBackupsMap; // login/signup e-mail address std::string login; // signup name std::string name; // delete confirmation std::vector> mNodesToConfirmDelete; std::string getNodePathString(mega::MegaNode *n); void cancelOngoingVerification(mega::MegaApi* api, bool start_new_verification); /** * @name forEachFileInNode * @brief Traverses through all files in the given node with the provided callback. * @param n - the node object to traverse * @param recurse - whether to recursively traverse directories in this node * @param callback - the callback which receives child entries. Should be of the form `void * (MegaNode *)` */ template void forEachFileInNode(mega::MegaNode &n, bool recurse, Cb &&callback) { auto children = std::unique_ptr(api->getChildren(&n)); if (children != nullptr) { for (int i = 0; i < children->size(); i++) { auto child = children->get(i); if (child->getType() == mega::MegaNode::TYPE_FILE) { callback(children->get(i)); } else if (recurse) { forEachFileInNode(*child, true, std::forward(callback)); } } } } public: bool signingup; bool confirming; bool confirmingcancel; // link to confirm std::string link; MegaCmdExecuter(mega::MegaApi *api, MegaCmdLogger *loggerCMD, MegaCmdSandbox *sandboxCMD); ~MegaCmdExecuter(); void updateprompt(mega::MegaApi *api = nullptr); // nodes browsing void listtrees(); static bool includeIfIsExported(mega::MegaApi* api, mega::MegaNode * n, void *arg); static bool includeIfIsShared(mega::MegaApi* api, mega::MegaNode * n, void *arg); static bool includeIfIsPendingOutShare(mega::MegaApi* api, mega::MegaNode * n, void *arg); static bool includeIfIsSharedOrPendingOutShare(mega::MegaApi* api, mega::MegaNode * n, void *arg); static bool includeIfMatchesPattern(mega::MegaApi* api, mega::MegaNode * n, void *arg); static bool includeIfMatchesCriteria(mega::MegaApi* api, mega::MegaNode * n, void *arg); bool processTree(mega::MegaNode * n, bool(mega::MegaApi *, mega::MegaNode *, void *), void *( arg )); std::unique_ptr nodebypath(const char* ptr, std::string* user = nullptr, std::string* namepart = nullptr); std::vector> nodesbypath(const char* ptr, bool usepcre, std::string* user = nullptr); void getNodesMatching(mega::MegaNode* parentNode, std::deque pathParts, std::vector>& nodesMatching, bool usepcre); std::vector * nodesPathsbypath(const char* ptr, bool usepcre, std::string* user = NULL, std::string* namepart = NULL); void getPathsMatching(mega::MegaNode *parentNode, std::deque pathParts, std::vector *pathsMatching, bool usepcre, std::string pathPrefix = ""); void printTreeSuffix(int depth, std::vector &lastleaf); void dumpNode(mega::MegaNode* n, const char *timeFormat, std::map *clflags, std::map *cloptions, int extended_info, bool showversions = false, int depth = 0, const char* title = NULL); void dumptree(mega::MegaNode* n, bool treelike, std::vector &lastleaf, const char *timeFormat, std::map *clflags, std::map *cloptions, int recurse, int extended_info, bool showversions = false, int depth = 0, std::string pathRelativeTo = "NULL"); void dumpNodeSummaryHeader(const char *timeFormat, std::map *clflags, std::map *cloptions); void dumpNodeSummary(mega::MegaNode* n, const char *timeFormat, std::map *clflags, std::map *cloptions, bool humanreadable = false, const char* title = NULL); void dumpTreeSummary(mega::MegaNode* n, const char *timeFormat, std::map *clflags, std::map *cloptions, int recurse, bool show_versions, int depth = 0, bool humanreadable = false, std::string pathRelativeTo = "NULL"); std::unique_ptr getPcrByContact(std::string contactEmail); bool TestCanWriteOnContainingFolder(std::string path); std::string getDisplayPath(std::string givenPath, mega::MegaNode* n); int dumpListOfExported(mega::MegaNode* n, const char *timeFormat, std::map *clflags, std::map *cloptions, std::string givenPath); void listnodeshares(mega::MegaNode* n, std::string name, bool listPending, bool onlyPending); void dumpListOfShared(mega::MegaNode* n, std::string givenPath); void dumpListOfAllShared(mega::MegaNode* n, std::string givenPath); void dumpListOfPendingShares(mega::MegaNode* n, std::string givenPath); std::string getCurrentPath(); long long getVersionsSize(mega::MegaNode* n); //acting void verifySharedFolders(mega::MegaApi * api); //verifies unverified shares and broadcasts warning accordingly void loginWithPassword(const char *password); void changePassword(const char *newpassword, std::string pin2fa = ""); void actUponGetExtendedAccountDetails(std::unique_ptr storageDetails, std::unique_ptr extAccountDetails); bool actUponFetchNodes(mega::MegaApi * api, mega::SynchronousRequestListener *srl, int timeout = -1); int actUponLogin(mega::SynchronousRequestListener *srl, int timeout = -1); void actUponLogout(mega::MegaApi& api, mega::MegaError* e, bool keptSession); void actUponLogout(mega::SynchronousRequestListener *srl, bool keptSession, int timeout = 0); int actUponCreateFolder(mega::SynchronousRequestListener *srl, int timeout = 0); int deleteNode(const std::unique_ptr& nodeToDelete, mega::MegaApi* api, int recursive, int force = 0); int deleteNodeVersions(const std::unique_ptr& nodeToDelete, mega::MegaApi* api, int force = 0); void downloadNode(std::string source, std::string localPath, mega::MegaApi* api, mega::MegaNode *node, bool background, bool ignorequotawar, int clientID, std::shared_ptr listener); void uploadNode(const std::map &clflags, const std::map &cloptions, const std::string &receivedPath, mega::MegaApi* api, mega::MegaNode *node, const std::string &newname, MegaCmdMultiTransferListener *multiTransferListener = NULL); void exportNode(mega::MegaNode *n, int64_t expireTime, const std::optional& password = {}, std::map *clflags = nullptr, std::map *cloptions = nullptr); void disableExport(mega::MegaNode *n); std::pair isSharePendingAndVerified(mega::MegaNode *n, const char *email) const; void shareNode(mega::MegaNode *n, std::string with, int level = mega::MegaShare::ACCESS_READ); void disableShare(mega::MegaNode *n, std::string with); void createOrModifyBackup(std::string local, std::string remote, std::string speriod, int numBackups); std::vector listpaths(bool usepcre, std::string askedPath = "", bool discardFiles = false); std::vector listLocalPathsStartingBy(std::string askedPath, bool discardFiles); std::vector getlistusers(); std::vector getNodeAttrs(std::string nodePath); std::vector getUserAttrs(); std::vector getsessions(); std::vector getlistfilesfolders(std::string location); void executecommand(std::vector words, std::map *clflags, std::map *cloptions); //doomedtodie void syncstat(mega::Sync* sync); // const char* treestatename(treestate_t ts); bool is_syncable(const char* name); int loadfile(std::string* name, std::string* data); void signup(std::string name, std::string passwd, std::string email); void signupWithPassword(std::string passwd); void confirm(std::string passwd, std::string email, std::string link); void confirmWithPassword(std::string passwd); int makedir(std::string remotepath, bool recursive, mega::MegaNode *parentnode = NULL); bool IsFolder(std::string path); bool pathExists(const std::string &path); void doDeleteNode(const std::unique_ptr& nodeToDelete, mega::MegaApi* api); void confirmDelete(); void discardDelete(); void confirmDeleteAll(); void discardDeleteAll(); void printTransfersHeader(const unsigned int PATHSIZE, bool printstate=true); void printTransfer(mega::MegaTransfer *transfer, const unsigned int PATHSIZE, bool printstate=true); void printTransferColumnDisplayer(ColumnDisplayer *cd, mega::MegaTransfer *transfer, bool printstate=true); void printBackupHeader(const unsigned int PATHSIZE); void printBackupSummary(int tag, const char *localfolder, const char *remoteparentfolder, std::string status, const unsigned int PATHSIZE); void printBackupHistory(mega::MegaScheduledCopy *backup, const char *timeFormat, mega::MegaNode *parentnode, const unsigned int PATHSIZE); void printBackupDetails(mega::MegaScheduledCopy *backup, const char *timeFormat); void printBackup(int tag, mega::MegaScheduledCopy *backup, const char *timeFormat, const unsigned int PATHSIZE, bool extendedinfo = false, bool showhistory = false, mega::MegaNode *parentnode = NULL); void printBackup(backup_struct *backupstruct, const char *timeFormat, const unsigned int PATHSIZE, bool extendedinfo = false, bool showhistory = false); void doFind(mega::MegaNode* nodeBase, const char *timeFormat, std::map *clflags, std::map *cloptions, std::string word, int printfileinfo, std::string pattern, bool usepcre, mega::m_time_t minTime, mega::m_time_t maxTime, int64_t minSize, int64_t maxSize); void moveToDestination(const std::unique_ptr& n, std::string destiny); void copyNode(mega::MegaNode *n, std::string destiny, mega::MegaNode *tn, std::string &targetuser, std::string &newname); std::string getLPWD(); bool isValidFolder(std::string destiny); bool establishBackup(std::string local, mega::MegaNode *n, int64_t period, std::string periodstring, int numBackups); mega::MegaNode *getBaseNode(std::string thepath, std::string &rest, bool *isrelative = NULL); void getPathParts(std::string path, std::deque *c); // decrypt a link if it's encrypted. Returns false in case of error bool decryptLinkIfEncrypted(mega::MegaApi *api, std::string &publicLink, std::map *cloptions); bool checkAndInformPSA(CmdPetition *inf, bool enforce = false); // Provide a helpful error message for the provided error, setting the current error code in case of an error. std::string formatErrorAndMaySetErrorCode(const mega::MegaError &error); bool checkNoErrors(int errorCode, const std::string &message = ""); bool checkNoErrors(mega::MegaError *error, const std::string &message = "", mega::SyncError syncError = mega::SyncError::NO_SYNC_ERROR); bool checkNoErrors(::mega::SynchronousRequestListener *listener, const std::string &message = "", mega::SyncError syncError = mega::SyncError::NO_SYNC_ERROR); void confirmCancel(const char* confirmlink, const char* pass); bool amIPro(); void processPath(std::string path, bool usepcre, bool& firstone, void (*nodeprocessor)(MegaCmdExecuter *, mega::MegaNode *, bool), MegaCmdExecuter *context = NULL); void catFile(mega::MegaNode *n); void printInfoFile(mega::MegaNode *n, bool &firstone, int PATHSIZE); #ifdef HAVE_LIBUV void removeWebdavLocation(mega::MegaNode *n, bool firstone, std::string name = std::string()); void addWebdavLocation(mega::MegaNode *n, bool firstone, std::string name = std::string()); void removeFtpLocation(mega::MegaNode *n, bool firstone, std::string name = std::string()); void addFtpLocation(mega::MegaNode *n, bool firstone, std::string name = std::string()); #endif bool printUserAttribute(int a, std::string user, bool onlylist = false); bool setProxy(const std::string &url, const std::string &username, const std::string &password, int proxyType); void fetchNodes(mega::MegaApi *api = nullptr, int clientID = -27); void mayExecutePendingStuffInWorkerThread(); }; }//end namespace #endif // MEGACMDEXECUTER_H MEGAcmd-2.5.2_Linux/src/megacmdlogger.cpp000066400000000000000000000270261516543156300202040ustar00rootroot00000000000000/** * @file src/megacmdlogger.cpp * @brief MEGAcmd: Controls message logging * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdlogger.h" #include "megacmdcommonutils.h" #include "megacmdutils.h" #include "megacmd_src_file_list.h" #include #include using namespace mega; namespace megacmd { namespace { constexpr const char* sLogTimestampFormat = "%04d-%02d-%02d_%02d-%02d-%02d.%06d"; thread_local bool isThreadDataSet = false; std::string getNowTimeStr() { return timestampToString(std::chrono::system_clock::now()); } } ThreadData &getCurrentThreadData() { thread_local ThreadData threadData; return threadData; } const char* getCommandPrefixBasedOnMode() { if (isCurrentThreadInteractive()) { return ""; } return "mega-"; } bool isCurrentThreadInteractive() { return isCurrentThreadCmdShell() || !isThreadDataSet; } void setCurrentThreadOutStreams(LoggedStream &outStream, LoggedStream &errStream) { isThreadDataSet = true; getCurrentThreadData().mOutStream = &outStream; getCurrentThreadData().mErrStream = &errStream; } void setCurrentThreadOutCode(int outCode) { isThreadDataSet = true; getCurrentThreadData().mOutCode = outCode; } void setCurrentThreadLogLevel(int logLevel) { isThreadDataSet = true; getCurrentThreadData().mLogLevel = logLevel; } void setCurrentThreadCmdPetition(CmdPetition *cmdPetition) { isThreadDataSet = true; getCurrentThreadData().mCmdPetition = cmdPetition; } void setCurrentThreadIsCmdShell(bool isCmdShell) { isThreadDataSet = true; getCurrentThreadData().mIsCmdShell = isCmdShell; } std::string formatErrorAndMaySetErrorCode(const MegaError &error) { auto code = error.getErrorCode(); if (code == MegaError::API_OK) { return std::string(); } setCurrentThreadOutCode(code); if (code == MegaError::API_EBLOCKED) { //auto reason = sandboxCMD->getReasonblocked(); std::string reason; auto reasonStr = std::string("Account blocked."); if (!reason.empty()) { reasonStr.append("Reason: ").append(reason); } return reasonStr; } else if (code == MegaError::API_EPAYWALL || (code == MegaError::API_EOVERQUOTA /*&& sandboxCMD->storageStatus == MegaApi::STORAGE_STATE_RED*/)) { return "Reached storage quota. You can change your account plan to increase your quota limit. See \"help --upgrade\" for further details"; } return error.getErrorString(); } bool checkNoErrors(int errorCode, const std::string &message) { MegaErrorPrivate e(errorCode); return checkNoErrors(&e, message); } bool checkNoErrors(MegaError *error, const std::string &message, SyncError syncError) { if (!error) { LOG_fatal << "No MegaError at request: " << message; assert(false); return false; } if (error->getErrorCode() == MegaError::API_OK) { if (syncError) { std::unique_ptr megaSyncErrorCode(MegaSync::getMegaSyncErrorCode(syncError)); LOG_info << "Able to " << message << ", but received syncError: " << megaSyncErrorCode.get(); } return true; } auto apiErrorString = formatErrorAndMaySetErrorCode(*error); auto logErrMessage = std::string("Failed to ").append(message).append(": "); if (auto mountResult = error->getMountResult(); mountResult != MegaMount::SUCCESS) //if there is mount error, prefer this one for log message { logErrMessage.append(getMountResultStr(mountResult)); } else { logErrMessage.append(apiErrorString); } if (syncError) { std::unique_ptr megaSyncErrorCode(MegaSync::getMegaSyncErrorCode(syncError)); logErrMessage.append(". ").append(megaSyncErrorCode.get()); } LOG_err << logErrMessage; return false; } bool checkNoErrors(::mega::SynchronousRequestListener *listener, const std::string &message, ::mega::SyncError syncError) { assert(listener); listener->wait(); assert(listener->getError()); return checkNoErrors(listener->getError(), message, syncError); } std::optional> stringToTimestamp(std::string_view str) { if (str.size() != LogTimestampSize) { return std::nullopt; } int years, months, days, hours, minutes, seconds, microseconds; int parsed = std::sscanf(str.data(), sLogTimestampFormat, &years, &months, &days, &hours, &minutes, &seconds, µseconds); if (parsed != 7) { return std::nullopt; } struct std::tm gmt; memset(&gmt, 0, sizeof(struct std::tm)); gmt.tm_year = years - 1900; gmt.tm_mon = months - 1; gmt.tm_mday = days; gmt.tm_hour = hours; gmt.tm_min = minutes; gmt.tm_sec = seconds; #ifdef _WIN32 const time_t t = _mkgmtime(&gmt); #else const time_t t = timegm(&gmt); #endif const auto time_point = std::chrono::system_clock::from_time_t(t); return time_point + std::chrono::microseconds(microseconds); } std::string timestampToString(std::chrono::time_point timestamp) { std::array timebuf; const time_t t = std::chrono::system_clock::to_time_t(timestamp); struct std::tm gmt; memset(&gmt, 0, sizeof(struct std::tm)); mega::m_gmtime(t, &gmt); auto microseconds = std::chrono::duration_cast(timestamp - std::chrono::system_clock::from_time_t(t)); std::snprintf(timebuf.data(), timebuf.size(), sLogTimestampFormat, gmt.tm_year + 1900, gmt.tm_mon + 1, gmt.tm_mday, gmt.tm_hour, gmt.tm_min, gmt.tm_sec, static_cast(microseconds.count() % 1000000)); return std::string(timebuf.data(), LogTimestampSize); } MegaCmdLogger::MegaCmdLogger() : mSdkLoggerLevel(mega::MegaApi::LOG_LEVEL_ERROR), mCmdLoggerLevel(mega::MegaApi::LOG_LEVEL_ERROR), mFlushOnLevel(mega::MegaApi::LOG_LEVEL_WARNING) { } fs::path MegaCmdLogger::getDefaultFilePath() { auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); assert(!dirs->configDirPath().empty()); return dirs->configDirPath() / "megacmdserver.log"; } bool MegaCmdLogger::isMegaCmdSource(const std::string &source) { static const std::set megaCmdSourceFiles = MEGACMD_SRC_FILE_LIST; // Remove the line number (since source has the format "filename.cpp:1234") std::string_view filename(source); filename = filename.substr(0, filename.find(':')); return megaCmdSourceFiles.find(filename) != megaCmdSourceFiles.end(); } const char * loglevelToShortPaddedString(int loglevel) { static constexpr std::array logLevels = { "CRIT ", // LOG_LEVEL_FATAL "ERR ", // LOG_LEVEL_ERROR "WARN ", // LOG_LEVEL_WARNING "INFO ", // LOG_LEVEL_INFO "DBG ", // LOG_LEVEL_DEBUG "DTL " // LOG_LEVEL_MAX }; assert (loglevel >= 0 && loglevel < static_cast(logLevels.size())); return logLevels[static_cast(loglevel)]; } void MegaCmdLogger::formatLogToStream(LoggedStream &stream, std::string_view time, int logLevel, const char *source, const char *message, bool surround) { if (surround) { stream << "["; } stream << time; if (!isMegaCmdSource(source)) { stream << " sdk "; } else { stream << " cmd "; } stream << loglevelToShortPaddedString(logLevel) << message; if (surround) { stream << "]"; } else { stream << " [" << source << "]"; } stream << '\n'; if (logLevel <= mFlushOnLevel) { stream.flush(); } } bool MegaCmdLogger::shouldIgnoreMessage(int logLevel, const char *source, const char *message) const { UNUSED(logLevel); if (!isMegaCmdSource(source)) { const int sdkLoggerLevel = getSdkLoggerLevel(); if (sdkLoggerLevel <= MegaApi::LOG_LEVEL_DEBUG && !strcmp(message, "Request (RETRY_PENDING_CONNECTIONS) starting")) { return true; } if (sdkLoggerLevel <= MegaApi::LOG_LEVEL_DEBUG && !strcmp(message, "Request (RETRY_PENDING_CONNECTIONS) finished")) { return true; } } return false; } bool MegaCmdSimpleLogger::shouldLogToStream(int logLevel, const char* source) const { if (isMegaCmdSource(source)) { return logLevel <= getCmdLoggerLevel(); } return logLevel <= getSdkLoggerLevel(); } bool MegaCmdSimpleLogger::shouldLogToClient(int logLevel, const char* source) const { // If comming from this logger current thread if (&OUTSTREAM == &mLoggedStream) { return false; } const int defaultLogLevel = isMegaCmdSource(source) ? getCmdLoggerLevel() : getSdkLoggerLevel(); int currentThreadLogLevel = getCurrentThreadLogLevel(); if (currentThreadLogLevel < 0) // this thread has no log level assigned { currentThreadLogLevel = defaultLogLevel; } return logLevel <= currentThreadLogLevel; } MegaCmdSimpleLogger::MegaCmdSimpleLogger(bool logToOutStream, int sdkLoggerLevel, int cmdLoggerLevel) : MegaCmdLogger(), mLoggedStream(Instance::Get().getLoggedStream()), mOutStream(&COUT), mLogToOutStream(logToOutStream) { setSdkLoggerLevel(sdkLoggerLevel); setCmdLoggerLevel(cmdLoggerLevel); } int MegaCmdSimpleLogger::getMaxLogLevel() const { return std::max(getCurrentThreadLogLevel(), MegaCmdLogger::getMaxLogLevel()); } void MegaCmdSimpleLogger::log(const char * /*time*/, int logLevel, const char *source, const char *message) { thread_local bool isRecursive = false; if (isRecursive) { std::cerr << "ERROR: Attempt to log message recursively from " << source << ": " << message << std::endl; assert(false); return; } ScopeGuard g([] { isRecursive = false; }); isRecursive = true; if (!isValidUtf8(message, strlen(message))) { constexpr const char* invalid = ""; message = invalid; ASSERT_UTF8_BREAK("Attempt to log invalid utf8 string"); } if (shouldIgnoreMessage(logLevel, source, message)) { return; } if (shouldLogToStream(logLevel, source)) { // log to _file_ (e.g: FileRotatingLoggedStream) const std::string nowTimeStr = getNowTimeStr(); formatLogToStream(mLoggedStream, nowTimeStr, logLevel, source, message); if (mLogToOutStream) // log to stdout { #ifdef _WIN32 WindowsUtf8StdoutGuard utf8Guard; #endif formatLogToStream(mOutStream, nowTimeStr, logLevel, source, message); } } if (shouldLogToClient(logLevel, source)) { const std::string nowTimeStr = getNowTimeStr(); formatLogToStream(getCurrentThreadErrStream(), nowTimeStr, logLevel, source, message, true); } } LoggedStreamDefaultFile::LoggedStreamDefaultFile() : LoggedStreamOutStream(nullptr), mFstream(MegaCmdLogger::getDefaultFilePath()) { out = &mFstream; if (!mFstream.is_open()) { CERR << "Cannot open default log file " << MegaCmdLogger::getDefaultFilePath() << std::endl; } } }//end namespace MEGAcmd-2.5.2_Linux/src/megacmdlogger.h000066400000000000000000000400561516543156300176470ustar00rootroot00000000000000/** * @file src/megacmdlogger.h * @brief MEGAcmd: Controls message logging * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef MEGACMDLOGGER_H #define MEGACMDLOGGER_H #include "megacmdcommonutils.h" #include "megacmd.h" #include "comunicationsmanager.h" #define OUTSTREAM getCurrentThreadOutStream() namespace megacmd { // Provide a helpful error message for the provided error, setting the current error code in case of an error. std::string formatErrorAndMaySetErrorCode(const mega::MegaError &error); bool checkNoErrors(int errorCode, const std::string &message = ""); bool checkNoErrors(mega::MegaError *error, const std::string &message = "", mega::SyncError syncError = mega::SyncError::NO_SYNC_ERROR); bool checkNoErrors(::mega::SynchronousRequestListener *listener, const std::string &message = "", mega::SyncError syncError = mega::SyncError::NO_SYNC_ERROR); #ifdef WIN32 inline ::mega::SimpleLogger &operator<<(::mega::SimpleLogger& sl, const fs::path& path) { return sl << megacmd::pathAsUtf8(path); } template inline std::enable_if_t, std::wstring>, ::mega::SimpleLogger &> operator<<(::mega::SimpleLogger& sl, const T& wstr) { return sl << megacmd::utf16ToUtf8(wstr); } #endif // String used to transmit binary data class BinaryStringView { public: BinaryStringView(char *buffer, size_t size) : mValue(buffer, size) {} const std::string_view& get() const { return mValue; } std::string_view& get() { return mValue; } private: std::string_view mValue; }; class LoggedStream { public: LoggedStream() { out = nullptr; } LoggedStream(OUTSTREAMTYPE *_out) : out(_out) {} virtual ~LoggedStream() = default; virtual bool isClientConnected() { return true; } virtual const LoggedStream& operator<<(const char& v) const = 0; virtual const LoggedStream& operator<<(const char* v) const = 0; #ifdef _WIN32 virtual const LoggedStream& operator<<(std::wstring v) const = 0; #endif virtual const LoggedStream& operator<<(std::string v) const = 0; virtual const LoggedStream& operator<<(BinaryStringView v) const = 0; virtual const LoggedStream& operator<<(std::string_view v) const = 0; virtual const LoggedStream& operator<<(int v) const = 0; virtual const LoggedStream& operator<<(unsigned int v) const = 0; virtual const LoggedStream& operator<<(long unsigned int v) const = 0; virtual const LoggedStream& operator<<(long long int v) const = 0; virtual const LoggedStream& operator<<(long long unsigned int v) const = 0; virtual const LoggedStream& operator<<(std::ios_base v) const = 0; virtual const LoggedStream& operator<<(std::ios_base *v) const = 0; virtual LoggedStream const& operator<<(OUTSTREAMTYPE& (*F)(OUTSTREAMTYPE&)) const = 0; virtual void flush() {} protected: OUTSTREAMTYPE * out; }; class LoggedStreamNull : public LoggedStream { public: const LoggedStream& operator<<(const char& v) const override { return *this; } const LoggedStream& operator<<(const char* v) const override { return *this; } #ifdef _WIN32 const LoggedStream& operator<<(std::wstring v) const override { return *this; } #endif const LoggedStream& operator<<(std::string v) const override { return *this; } const LoggedStream& operator<<(BinaryStringView v) const override { return *this; } const LoggedStream& operator<<(std::string_view v) const override { return *this; } const LoggedStream& operator<<(int v) const override { return *this; } const LoggedStream& operator<<(unsigned int v) const override { return *this; } const LoggedStream& operator<<(long unsigned int v) const override { return *this; } const LoggedStream& operator<<(long long int v) const override { return *this; } const LoggedStream& operator<<(long long unsigned int v) const override { return *this; } const LoggedStream& operator<<(std::ios_base v) const override { return *this; } const LoggedStream& operator<<(std::ios_base *v) const override { return *this; } LoggedStream const& operator<<(OUTSTREAMTYPE& (*F)(OUTSTREAMTYPE&)) const override { return *this; } virtual ~LoggedStreamNull() = default; }; class DefaultLoggedStream { std::unique_ptr mTheStream; public: void setLoggedStream(std::unique_ptr &&loggedStream) { mTheStream = std::move(loggedStream); } LoggedStream &getLoggedStream() { if (!mTheStream) { mTheStream = std::make_unique(); } assert(mTheStream); return *mTheStream.get(); } }; class LoggedStreamOutStream : public LoggedStream { public: LoggedStreamOutStream(OUTSTREAMTYPE *out) : LoggedStream(out) {} virtual ~LoggedStreamOutStream() = default; virtual bool isClientConnected() override { return true; } virtual const LoggedStream& operator<<(const char& v) const override { *out << v;return *this; } virtual const LoggedStream& operator<<(const char* v) const override { *out << v;return *this; } #ifdef _WIN32 virtual const LoggedStream& operator<<(std::wstring v) const override { *out << v;return *this; } virtual const LoggedStream& operator<<(std::string_view v) const override { *out << std::string(v);return *this; } #else virtual const LoggedStream& operator<<(std::string_view v) const override { *out << v;return *this; } #endif virtual const LoggedStream& operator<<(std::string v) const override { *out << v;return *this; } virtual const LoggedStream& operator<<(BinaryStringView v) const override { #ifdef _WIN32 assert(false && "wostream cannot take binary data directly"); #else *out << v.get(); #endif return *this; } virtual const LoggedStream& operator<<(int v) const override { *out << v;return *this; } virtual const LoggedStream& operator<<(unsigned int v) const override { *out << v;return *this; } virtual const LoggedStream& operator<<(long unsigned int v) const override { *out << v;return *this; } virtual const LoggedStream& operator<<(long long int v) const override { *out << v;return *this; } virtual const LoggedStream& operator<<(long long unsigned int v) const override { *out << v;return *this; } virtual const LoggedStream& operator<<(std::ios_base v) const override { *out << &v;return *this; } virtual const LoggedStream& operator<<(std::ios_base *v) const override { *out << v;return *this; } virtual LoggedStream const& operator<<(OUTSTREAMTYPE& (*F)(OUTSTREAMTYPE&)) const override { if (out) F(*out); return *this; } virtual void flush() override { out->flush(); } }; class LoggedStreamDefaultFile : public LoggedStreamOutStream { OUTFSTREAMTYPE mFstream; public: LoggedStreamDefaultFile(); virtual ~LoggedStreamDefaultFile() = default; }; class LoggedStreamPartialOutputs : public LoggedStream { public: LoggedStreamPartialOutputs(ComunicationsManager *_cm, CmdPetition *_inf) : cm(_cm), inf(_inf) {} virtual bool isClientConnected() override { return inf && !inf->clientDisconnected; } virtual const LoggedStream& operator<<(const char& v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } virtual const LoggedStream& operator<<(const char* v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } #ifdef _WIN32 virtual const LoggedStream& operator<<(std::wstring v) const override { cm->sendPartialOutput(inf, &v); return *this; } virtual const LoggedStream& operator<<(std::string v) const override { cm->sendPartialOutput(inf, (char *)v.data(), v.size()); return *this; } #else virtual const LoggedStream& operator<<(std::string v) const override { cm->sendPartialOutput(inf, &v); return *this; } #endif virtual const LoggedStream& operator<<(BinaryStringView v) const override { cm->sendPartialOutput(inf, (char*) v.get().data(), v.get().size(), true); return *this; } virtual const LoggedStream& operator<<(std::string_view v) const override { cm->sendPartialOutput(inf, (char*) v.data(), v.size()); return *this; } virtual const LoggedStream& operator<<(int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } virtual const LoggedStream& operator<<(unsigned int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } virtual const LoggedStream& operator<<(long unsigned int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } virtual const LoggedStream& operator<<(long long int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } virtual const LoggedStream& operator<<(long long unsigned int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } virtual const LoggedStream& operator<<(std::ios_base v) const override { *out << &v;return *this; } virtual const LoggedStream& operator<<(std::ios_base *v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } LoggedStream const& operator<<(OUTSTREAMTYPE& (*F)(OUTSTREAMTYPE&)) const override { OUTSTRINGSTREAM os; os << F; OUTSTRING s = os.str(); cm->sendPartialOutput(inf, &s); return *this; } virtual ~LoggedStreamPartialOutputs() = default; protected: ComunicationsManager *cm; CmdPetition *inf; }; class LoggedStreamPartialErrors : public LoggedStream { public: LoggedStreamPartialErrors(ComunicationsManager *_cm, CmdPetition *_inf) : cm(_cm), inf(_inf) {} virtual bool isClientConnected() override { return inf && !inf->clientDisconnected; } virtual const LoggedStream& operator<<(const char& v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } virtual const LoggedStream& operator<<(const char* v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } #ifdef _WIN32 virtual const LoggedStream& operator<<(std::wstring v) const override { cm->sendPartialError(inf, &v); return *this; } virtual const LoggedStream& operator<<(std::string v) const override { cm->sendPartialError(inf, (char *)v.data(), v.size()); return *this; } #else virtual const LoggedStream& operator<<(std::string v) const override { cm->sendPartialError(inf, &v); return *this; } #endif virtual const LoggedStream& operator<<(BinaryStringView v) const override { cm->sendPartialError(inf, (char*) v.get().data(), v.get().size(), true); return *this; } virtual const LoggedStream& operator<<(std::string_view v) const override { cm->sendPartialError(inf, (char*) v.data(), v.size()); return *this; } virtual const LoggedStream& operator<<(int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } virtual const LoggedStream& operator<<(unsigned int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } virtual const LoggedStream& operator<<(long unsigned int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } virtual const LoggedStream& operator<<(long long int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } virtual const LoggedStream& operator<<(long long unsigned int v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } virtual const LoggedStream& operator<<(std::ios_base v) const override { *out << &v;return *this; } virtual const LoggedStream& operator<<(std::ios_base *v) const override { OUTSTRINGSTREAM os; os << v; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } LoggedStream const& operator<<(OUTSTREAMTYPE& (*F)(OUTSTREAMTYPE&)) const override { OUTSTRINGSTREAM os; os << F; OUTSTRING s = os.str(); cm->sendPartialError(inf, &s); return *this; } virtual ~LoggedStreamPartialErrors() = default; protected: ComunicationsManager *cm; CmdPetition *inf; }; struct ThreadData { LoggedStream *mOutStream = &Instance::Get().getLoggedStream(); LoggedStream *mErrStream = &Instance::Get().getLoggedStream(); int mLogLevel = -1; int mOutCode = 0; CmdPetition *mCmdPetition = nullptr; bool mIsCmdShell = false; }; ThreadData &getCurrentThreadData(); const char* getCommandPrefixBasedOnMode(); bool isCurrentThreadInteractive(); inline LoggedStream &getCurrentThreadOutStream() { return *getCurrentThreadData().mOutStream; } inline LoggedStream &getCurrentThreadErrStream() { return *getCurrentThreadData().mErrStream; } inline int getCurrentThreadLogLevel() { return getCurrentThreadData().mLogLevel; } inline int getCurrentThreadOutCode() { return getCurrentThreadData().mOutCode; } inline CmdPetition *getCurrentThreadCmdPetition() { return getCurrentThreadData().mCmdPetition; } inline bool isCurrentThreadCmdShell() { return getCurrentThreadData().mIsCmdShell; } void setCurrentThreadOutStreams(LoggedStream &outStream, LoggedStream &errStream); void setCurrentThreadOutCode(int outCode); void setCurrentThreadLogLevel(int logLevel); void setCurrentThreadCmdPetition(CmdPetition *cmdPetition); void setCurrentThreadIsCmdShell(bool isCmdShell); constexpr size_t LogTimestampSize = std::char_traits::length("2024-12-27_16-33-12.654787"); std::optional> stringToTimestamp(std::string_view str); std::string timestampToString(std::chrono::time_point timestamp); class MegaCmdLogger : public mega::MegaLogger { int mSdkLoggerLevel; int mCmdLoggerLevel; int mFlushOnLevel; protected: static bool isMegaCmdSource(const std::string &source); void formatLogToStream(LoggedStream& stream, std::string_view time, int logLevel, const char *source, const char *message, bool surround = false); bool shouldIgnoreMessage(int logLevel, const char *source, const char *message) const; public: MegaCmdLogger(); virtual ~MegaCmdLogger() = default; virtual void log(const char *time, int loglevel, const char *source, const char *message) override = 0; void setSdkLoggerLevel(int sdkLoggerLevel) { mSdkLoggerLevel = sdkLoggerLevel; } void setCmdLoggerLevel(int cmdLoggerLevel) { mCmdLoggerLevel = cmdLoggerLevel; } void setFlushOnLevel(int flushOnLevel) { mFlushOnLevel = flushOnLevel; } int getSdkLoggerLevel() const { return mSdkLoggerLevel; } int getCmdLoggerLevel() const { return mCmdLoggerLevel; } int getFlushOnLevel() const { return mFlushOnLevel; } virtual int getMaxLogLevel() const { return std::max(mSdkLoggerLevel, mCmdLoggerLevel); } static fs::path getDefaultFilePath(); }; class MegaCmdSimpleLogger final : public MegaCmdLogger { LoggedStream &mLoggedStream; // to log into files (e.g. FileRotatingLoggedStream) LoggedStreamOutStream mOutStream; // to log into stdout bool mLogToOutStream; bool shouldLogToStream(int logLevel, const char *source) const; bool shouldLogToClient(int logLevel, const char *source) const; public: MegaCmdSimpleLogger(bool logToOutStream, int sdkLoggerLevel, int cmdLoggerLevel); void log(const char *time, int loglevel, const char *source, const char *message) override; int getMaxLogLevel() const override; }; }//end namespace #endif // MEGACMDLOGGER_H MEGAcmd-2.5.2_Linux/src/megacmdplatform.h000066400000000000000000000002561516543156300202120ustar00rootroot00000000000000#ifndef MEGACMDPLATFORM_H #define MEGACMDPLATFORM_H namespace megacmd { #ifdef __MACH__ bool registerUpdateDaemon(); #endif }//end namespace #endif // MEGACMDPLATFORM_H MEGAcmd-2.5.2_Linux/src/megacmdplatform.mm000066400000000000000000000043331516543156300203740ustar00rootroot00000000000000#include "megacmdplatform.h" #include #import #include #include #include #include #ifdef __MACH__ namespace megacmd { bool registerUpdateDaemon() { NSDictionary *plistd = @{ @"Label": @"megacmd.mac.megaupdater", @"ProgramArguments": @[@"/Applications/MEGAcmd.app/Contents/MacOS/MEGAcmdUpdater", @"--emergency-update"], @"StartInterval": @7200, @"RunAtLoad": @true, @"StandardErrorPath": @"/dev/null", @"StandardOutPath": @"/dev/null", }; const char* home = getenv("HOME"); if (!home) { return false; } NSString *homepath = [NSString stringWithUTF8String:home]; if (!homepath) { return false; } NSFileManager *fileManager = [NSFileManager defaultManager]; NSString *dirPath = [homepath stringByAppendingString:@"/Library/LaunchAgents/"]; NSURL *dirURL = [NSURL fileURLWithPath:dirPath isDirectory:YES]; if ([fileManager createDirectoryAtURL:dirURL withIntermediateDirectories:YES attributes:nil error:nil] == NO) { return false; } NSString *fullPath = [dirPath stringByAppendingString:@"megacmd.mac.megaupdater.plist"]; if ([plistd writeToFile:fullPath atomically:YES] == NO) { return false; } std::string path = [fullPath UTF8String]; chmod(path.c_str(), S_IRUSR | S_IWUSR | S_IRGRP | S_IROTH); int pid = fork(); if (pid) { int status = 0; waitpid(pid, &status, 0); if ( WIFEXITED(status) ) { int exit_code = WEXITSTATUS(status); return (!exit_code); } else { std::cerr << " failed return. errno=" << errno << std::endl; return false; } } else { char **argv = new char*[4]; int i = 0; argv[i++]="/bin/bash"; argv[i++]="-c"; std::string ls="launchctl unload "; ls.append(path); ls.append(" ; launchctl load -w "); ls.append(path); argv[i++]=(char *)ls.c_str(); argv[i++]=NULL; execv(argv[0],argv); } return false; } }// end of namespace #endif MEGAcmd-2.5.2_Linux/src/megacmdsandbox.cpp000066400000000000000000000062361516543156300203630ustar00rootroot00000000000000/** * @file src/megacmdsandbox.cpp * @brief MegaCMD: A sandbox class to store status variables * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdsandbox.h" using namespace mega; namespace megacmd { bool MegaCmdSandbox::isOverquota() const { return overquota; } void MegaCmdSandbox::setOverquota(bool value) { overquota = value; } void MegaCmdSandbox::resetSandBox() { this->overquota = false; this->istemporalbandwidthvalid = false; this->temporalbandwidth = 0; this->temporalbandwithinterval = 0; this->lastQuerytemporalBandwith = m_time(); this->timeOfOverquota = m_time(); this->secondsOverQuota = 0; this->storageStatus = 0; this->receivedStorageSum = 0; this->totalStorage = 0; this->timeOfPSACheck = 0; this->lastPSAnumreceived = -1; if (reasonblocked.size()) removeGreetingStatusAllListener(string("message:").append(reasonblocked)); this->reasonblocked = ""; this->reasonPending = false; } std::string MegaCmdSandbox::getReasonblocked() { std::unique_lock ul(reasonBlockedMutex); if (reasonPending) { std::future f = reasonPromise.get_future(); ul.unlock(); try { return f.get(); } catch(std::future_error) { ul.lock(); //already retrieved or broken promise (promise is replaced): another state. This is unlikely } } return reasonblocked; } void MegaCmdSandbox::setReasonPendingPromise() { std::lock_guard g(reasonBlockedMutex); reasonPending = true; this->reasonPromise = std::promise(); } void MegaCmdSandbox::doSetReasonBlocked(const std::string &value) { broadcastMessage(value); if (reasonblocked.size()) removeGreetingStatusAllListener(string("message:").append(reasonblocked)); if (value.size()) appendGreetingStatusAllListener(string("message:").append(value)); reasonblocked = value; } void MegaCmdSandbox::setReasonblocked(const std::string &value) { std::lock_guard g(reasonBlockedMutex); doSetReasonBlocked(value); } void MegaCmdSandbox::setPromisedReasonblocked(const std::string &value) { std::lock_guard g(reasonBlockedMutex); doSetReasonBlocked(value); reasonPending = false; this->reasonPromise.set_value(value); } MegaCmdSandbox::MegaCmdSandbox() { this->overquota = false; this->istemporalbandwidthvalid = false; this->temporalbandwidth = 0; this->temporalbandwithinterval = 0; this->lastQuerytemporalBandwith = m_time(); this->timeOfOverquota = m_time(); this->secondsOverQuota = 0; this->storageStatus = 0; this->receivedStorageSum = 0; this->totalStorage = 0; this->timeOfPSACheck = 0; this->lastPSAnumreceived = -1; } }//end namespace MEGAcmd-2.5.2_Linux/src/megacmdsandbox.h000066400000000000000000000061001516543156300200160ustar00rootroot00000000000000/** * @file src/megacmdsandbox.h * @brief MegaCMD: A sandbox class to store status variables * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef MEGACMDSANDBOX_H #define MEGACMDSANDBOX_H #include #include #include #include #include "megacmdexecuter.h" namespace megacmd { class MegaCmdExecuter; class NodesCurrentPromise { using Promise_t = std::promise; using Future_t = std::future; std::mutex mMutex; std::shared_ptr mAccountUpToDatePromise; bool pendingCompletion = false; public: void initiatePromise() { std::lock_guard g(mMutex); assert(!pendingCompletion); mAccountUpToDatePromise = std::make_shared(); pendingCompletion = true; } void setCompleted() { std::lock_guard g(mMutex); mAccountUpToDatePromise->set_value(true); } Future_t getFuture() { std::lock_guard g(mMutex); assert(mAccountUpToDatePromise); return mAccountUpToDatePromise->get_future(); } void reset() { std::lock_guard g(mMutex); if (mAccountUpToDatePromise && pendingCompletion) { mAccountUpToDatePromise->set_value(false); pendingCompletion = false; } } void fulfil() { std::lock_guard g(mMutex); if (mAccountUpToDatePromise && pendingCompletion) { mAccountUpToDatePromise->set_value(true); pendingCompletion = false; } } ~NodesCurrentPromise() { reset(); } }; class MegaCmdSandbox { private: bool overquota; std::mutex reasonBlockedMutex; std::string reasonblocked; bool reasonPending = false; std::promise reasonPromise; void doSetReasonBlocked(const std::string &value); public: NodesCurrentPromise mNodesCurrentPromise; bool istemporalbandwidthvalid; long long temporalbandwidth; long long temporalbandwithinterval; ::mega::m_time_t lastQuerytemporalBandwith; ::mega::m_time_t timeOfOverquota; ::mega::m_time_t secondsOverQuota; ::mega::m_time_t timeOfPSACheck; int lastPSAnumreceived; int storageStatus; long long receivedStorageSum; long long totalStorage; MegaCmdExecuter * cmdexecuter = nullptr; public: MegaCmdSandbox(); bool isOverquota() const; void setOverquota(bool value); void resetSandBox(); std::string getReasonblocked(); void setReasonPendingPromise(); void setReasonblocked(const std::string &value); void setPromisedReasonblocked(const std::string &value); }; }//end namespace #endif // MEGACMDSANDBOX_H MEGAcmd-2.5.2_Linux/src/megacmdshell/000077500000000000000000000000001516543156300173215ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/src/megacmdshell/megacmdshell.cpp000066400000000000000000001734011516543156300224600ustar00rootroot00000000000000/** * @file src/megacmdshell.cpp * @brief MEGAcmd: Interactive CLI and service application * This is the shell application * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is distributed under the terms of the GNU General Public * License, see http://www.gnu.org/copyleft/gpl.txt * for details. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #include "megacmdshell.h" #include "megacmdshellcommunications.h" #include "megacmdshellcommunicationsnamedpipes.h" #include "../megacmdcommonutils.h" #define USE_VARARGS #define PREFER_STDARG #ifdef NO_READLINE #include #else #include #include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #define PROGRESS_COMPLETE -2 #define SPROGRESS_COMPLETE "-2" #define PROMPT_MAX_SIZE 128 #ifndef _WIN32 #include #include #include #else #define strdup _strdup #endif #define SSTR( x ) static_cast< const std::ostringstream & >( \ ( std::ostringstream() << std::dec << x ) ).str() using namespace mega; namespace megacmd { using namespace std; #if defined(NO_READLINE) && defined(_WIN32) CONSOLE_CLASS* console = NULL; #endif // utility functions #ifndef NO_READLINE string getCurrentLine() { char *saved_line = rl_copy_text(0, rl_point); string toret(saved_line); free(saved_line); saved_line = NULL; return toret; } #endif // end utily functions string clientID; //identifier for a registered state listener // Console related functions: void console_readpwchar(char* pw_buf, int pw_buf_size, int* pw_buf_pos, char** line) { #ifdef _WIN32 char c; DWORD cread; if (ReadConsole(GetStdHandle(STD_INPUT_HANDLE), &c, 1, &cread, NULL) == 1) { if ((c == 8) && *pw_buf_pos) { (*pw_buf_pos)--; } else if (c == 13) { *line = (char*)malloc(*pw_buf_pos + 1); memcpy(*line, pw_buf, *pw_buf_pos); (*line)[*pw_buf_pos] = 0; } else if (*pw_buf_pos < pw_buf_size) { pw_buf[(*pw_buf_pos)++] = c; } } #else // FIXME: UTF-8 compatibility char c; if (read(STDIN_FILENO, &c, 1) == 1) { if (c == 8 && *pw_buf_pos) { (*pw_buf_pos)--; } else if (c == 13) { *line = (char*) malloc(*pw_buf_pos + 1); memcpy(*line, pw_buf, *pw_buf_pos); (*line)[*pw_buf_pos] = 0; } else if (*pw_buf_pos < pw_buf_size) { pw_buf[(*pw_buf_pos)++] = c; } } #endif } void console_setecho(bool echo) { #ifdef _WIN32 HANDLE hCon = GetStdHandle(STD_INPUT_HANDLE); DWORD mode; GetConsoleMode(hCon, &mode); if (echo) { mode |= ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT; } else { mode &= ~(ENABLE_ECHO_INPUT | ENABLE_LINE_INPUT); } SetConsoleMode(hCon, mode); #else //do nth #endif } std::atomic_bool alreadyFinished = false; //flag to show progress std::atomic percentDowloaded = 0.0; // to show progress // password change-related state information string oldpasswd; string newpasswd; bool doExit = false; bool doReboot = false; static std::atomic_bool handlerOverridenByExternalThread(false); static std::mutex handlerInstallerMutex; static std::atomic_bool requirepromptinstall(true); std::atomic_bool procesingline = false; std::atomic_bool promptreinstalledwhenprocessingline = false; std::atomic_bool serverTryingToLog = false; static char dynamicprompt[PROMPT_MAX_SIZE]; static char* g_line; static prompttype prompt = COMMAND; static char pw_buf[256]; static int pw_buf_pos = 0; string loginname; bool signingup = false; string signupline; string passwdline; string linktoconfirm; bool confirminglink = false; bool confirmingcancellink = false; // communications with megacmdserver: MegaCmdShellCommunications *comms; std::mutex mutexPrompt; void printWelcomeMsg(unsigned int width = 0); #ifndef NO_READLINE void install_rl_handler(const char *theprompt, bool external = true); #endif std::mutex lastMessageMutex; std::string lastMessage; bool notRepeatedMessage(const string &newMessage) { std::lock_guard g(lastMessageMutex); bool toret = lastMessage.compare(newMessage); if (toret) { lastMessage = newMessage; } return toret; } void cleanLastMessage() { std::lock_guard g(lastMessageMutex); lastMessage = string(); } void statechangehandle(string statestring, MegaCmdShellCommunications &comsManager) { char statedelim[2]={(char)0x1F,'\0'}; size_t nextstatedelimitpos = statestring.find(statedelim); static bool shown_partial_progress = false; bool promtpReceivedBool = false; unsigned int width = getNumberOfCols(75); if (width > 1 ) width--; while (nextstatedelimitpos!=string::npos && statestring.size()) { string newstate = statestring.substr(0,nextstatedelimitpos); statestring=statestring.substr(nextstatedelimitpos+1); nextstatedelimitpos = statestring.find(statedelim); if (newstate.compare(0, strlen("prompt:"), "prompt:") == 0) { if (serverTryingToLog) { printCenteredContentsCerr(string("MEGAcmd Server is still trying to log in. Still, some commands are available.\n" "Type \"help\", to list them.").c_str(), width); } // When main thread is executing a command (procesingline), do not redisplay here. // The state listener runs concurrently with command output; redisplay would use // readline (\r, control chars) and interleave with stdout. // The main loop will show the prompt after process_line returns. const bool redisplay = !procesingline; changeprompt(newstate.substr(strlen("prompt:")).c_str(), redisplay); comsManager.markServerReady(); promtpReceivedBool = true; } else if (newstate.compare(0, strlen("endtransfer:"), "endtransfer:") == 0) { string rest = newstate.substr(strlen("endtransfer:")); if (rest.size() >=3) { bool isdown = rest.at(0) == 'D'; string path = rest.substr(2); stringstream os; if (shown_partial_progress) { os << endl; } os << (isdown?"Download":"Upload") << " finished: " << path << endl; #ifdef _WIN32 wstring wbuffer; stringtolocalw((const char*)os.str().data(),&wbuffer); WindowsUtf8StdoutGuard utf8Guard; OUTSTREAM << wbuffer << flush; #else OUTSTREAM << os.str(); #endif } } else if (newstate.compare(0, strlen("loged:"), "loged:") == 0) { serverTryingToLog = false; } else if (newstate.compare(0, strlen("login:"), "login:") == 0) { serverTryingToLog = true; printCenteredContentsCerr(string("Resuming session ... ").c_str(), width, false); } else if (newstate.compare(0, strlen("message:"), "message:") == 0) { if (notRepeatedMessage(newstate)) //to avoid repeating messages { std::string_view messageContents = std::string_view(newstate).substr(strlen("message:")); string contents(messageContents); replaceAll(contents, "%mega-%", ""); #ifdef _WIN32 WindowsUtf8StdoutGuard utf8Guard; #else StdoutMutexGuard stdoutGuard; #endif if (messageContents.rfind("-----", 0) != 0) { if (!procesingline || promptreinstalledwhenprocessingline || shown_partial_progress) { OUTSTREAM << endl; } printCenteredContents(contents, width); requirepromptinstall = true; #ifndef NO_READLINE if (prompt == COMMAND && promtpReceivedBool) { std::lock_guard g(mutexPrompt); redisplay_prompt(); } #endif } else { requirepromptinstall = true; OUTSTREAM << endl << contents << endl; } } } else if (newstate.compare(0, strlen("clientID:"), "clientID:") == 0) { clientID = newstate.substr(strlen("clientID:")).c_str(); } else if (newstate.compare(0, strlen("progress:"), "progress:") == 0) { string rest = newstate.substr(strlen("progress:")); size_t nexdel = rest.find(":"); string received = rest.substr(0,nexdel); rest = rest.substr(nexdel+1); nexdel = rest.find(":"); string total = rest.substr(0,nexdel); string title; if ( (nexdel != string::npos) && (nexdel < rest.size() ) ) { rest = rest.substr(nexdel+1); nexdel = rest.find(":"); title = rest.substr(0,nexdel); } if (received!=SPROGRESS_COMPLETE) { shown_partial_progress = true; } else { shown_partial_progress = false; } long long completed = received == SPROGRESS_COMPLETE ? PROGRESS_COMPLETE : charstoll(received.c_str()); const char * progressTitle = title.empty() ? "TRANSFERRING" : title.c_str(); printprogress(completed, charstoll(total.c_str()), progressTitle); } else if (newstate == "ack") { // do nothing, all good } else if (newstate == "restart") { doExit = true; doReboot = true; comsManager.markServerIsUpdating(); // to avoid mensajes about server down sleepSeconds(3); // Give a while for server to restart changeprompt("RESTART REQUIRED BY SERVER (due to an update). Press any key to continue.", true); } else { if (shown_partial_progress) { OUTSTREAM << endl; } cerr << "received unrecognized state change: [" << newstate << "]" << endl; //sleep a while to avoid continuous looping sleepSeconds(1); } if (newstate.compare(0, strlen("progress:"), "progress:") != 0) { shown_partial_progress = false; } } } void sigint_handler(int signum) { if (prompt != COMMAND) { setprompt(COMMAND); } #ifndef NO_READLINE // reset position and print prompt rl_replace_line("", 0); //clean contents of actual command rl_crlf(); //move to nextline if (RL_ISSTATE(RL_STATE_ISEARCH) || RL_ISSTATE(RL_STATE_ISEARCH) || RL_ISSTATE(RL_STATE_ISEARCH)) { RL_UNSETSTATE(RL_STATE_ISEARCH); RL_UNSETSTATE(RL_STATE_NSEARCH); RL_UNSETSTATE( RL_STATE_SEARCH); history_set_pos(history_length); rl_restore_prompt(); // readline has stored it when searching } else { rl_reset_line_state(); } rl_redisplay(); #endif } void printprogress(long long completed, long long total, const char *title) { float oldpercent = percentDowloaded; if (total == 0) { percentDowloaded = 0; } else { percentDowloaded = float(completed * 1.0 / total * 100.0); } if (completed != PROGRESS_COMPLETE && (alreadyFinished || ( ( percentDowloaded == oldpercent ) && ( oldpercent != 0 ) ) )) { return; } if (percentDowloaded < 0) { percentDowloaded = 0; } if (total < 0) { return; // after a 100% this happens } if (completed != PROGRESS_COMPLETE && completed < 0.001 * total) { return; // after a 100% this happens } if (completed == PROGRESS_COMPLETE) { alreadyFinished = true; completed = total; percentDowloaded = 100; } printPercentageLineCerr(title, completed, total, percentDowloaded, !alreadyFinished); } #ifdef _WIN32 BOOL WINAPI CtrlHandler( DWORD fdwCtrlType ) { cerr << "Reached CtrlHandler: " << fdwCtrlType << endl; switch( fdwCtrlType ) { // Handle the CTRL-C signal. case CTRL_C_EVENT: sigint_handler((int)fdwCtrlType); return( TRUE ); default: return FALSE; } } #endif prompttype getprompt() { return prompt; } void setprompt(prompttype p, string arg) { prompt = p; #ifndef NO_READLINE if (p == COMMAND) { console_setecho(true); } else { pw_buf_pos = 0; if (arg.size()) { OUTSTREAM << arg << flush; } else { OUTSTREAM << prompts[p] << flush; } console_setecho(false); } #else console->setecho(p == COMMAND); if (p != COMMAND) { pw_buf_pos = 0; console->updateInputPrompt(arg.empty() ? prompts[p] : arg); } #endif } #ifndef NO_READLINE // readline callback - exit if EOF, add to history unless password static void store_line(char* l) { procesingline = true; if (!l) { #ifndef _WIN32 // to prevent exit with Supr key doExit = true; rl_set_prompt("(CTRL+D) Exiting ...\n"); #ifndef NDEBUG if (comms->mServerInitiatedFromShell) { OUTSTREAM << " Forwarding exit command to the server, since this cmd shell (most likely) initiated it" << endl; comms->executeCommand("exit", readresponse); } #endif #endif return; } if (*l && ( prompt == COMMAND )) { add_history(l); } g_line = l; } #endif #ifdef _WIN32 bool validoptionforreadline(const string& string) {// TODO: this has not been tested in 100% cases (perhaps it is too diligent or too strict) int c,i,ix,n,j; for (i=0, ix=int(string.length()); i < ix; i++) { c = (unsigned char) string[i]; //if (c>0xC0) return false; //if (c==0x09 || c==0x0a || c==0x0d || (0x20 <= c && c <= 0x7e) ) n = 0; // is_printable_ascii if (0x00 <= c && c <= 0x7f) n=0; // 0bbbbbbb else if ((c & 0xE0) == 0xC0) n=1; // 110bbbbb else if ( c==0xed && i<(ix-1) && ((unsigned char)string[i+1] & 0xa0)==0xa0) return false; //U+d800 to U+dfff else if ((c & 0xF0) == 0xE0) {return false; /*n=2;*/} // 1110bbbb else if ((c & 0xF8) == 0xF0) {return false; /*n=3;*/} // 11110bbb //else if (($c & 0xFC) == 0xF8) n=4; // 111110bb //byte 5, unnecessary in 4 byte UTF-8 //else if (($c & 0xFE) == 0xFC) n=5; // 1111110b //byte 6, unnecessary in 4 byte UTF-8 else return false; for (j=0; j lkrlhandler(handlerInstallerMutex); if (procesingline) { promptreinstalledwhenprocessingline = true; } rl_restore_prompt(); rl_callback_handler_install(theprompt, store_line); handlerOverridenByExternalThread = external; requirepromptinstall = false; } void redisplay_prompt() { int saved_point = rl_point; char *saved_line = rl_copy_text(0, rl_end); rl_clear_message(); // enter a new line if not processing sth (otherwise, the newline should already be there) if (!procesingline) { rl_crlf(); } if (prompt == COMMAND) { install_rl_handler(*dynamicprompt ? dynamicprompt : prompts[COMMAND]); } // restore line if (saved_line) { rl_replace_line(saved_line, 0); free(saved_line); saved_line = NULL; } rl_point = saved_point; rl_redisplay(); } #endif void changeprompt(const char *newprompt, bool redisplay) { std::lock_guard g(mutexPrompt); if (*dynamicprompt) { if (!strcmp(newprompt,dynamicprompt)) return; //same prompt. do nth } strncpy(dynamicprompt, newprompt, sizeof( dynamicprompt )); if (strlen(newprompt) >= PROMPT_MAX_SIZE) { strncpy(dynamicprompt, newprompt, PROMPT_MAX_SIZE/2-1); dynamicprompt[PROMPT_MAX_SIZE/2-1] = '.'; dynamicprompt[PROMPT_MAX_SIZE/2] = '.'; strncpy(dynamicprompt+PROMPT_MAX_SIZE/2+1, newprompt+(strlen(newprompt)-PROMPT_MAX_SIZE/2+2), PROMPT_MAX_SIZE/2-2); dynamicprompt[PROMPT_MAX_SIZE-1] = '\0'; } #ifdef NO_READLINE console->updateInputPrompt(newprompt); #else if (redisplay) { // save line redisplay_prompt(); } #endif static bool firstime = true; if (firstime) { firstime = false; #if _WIN32 if( !SetConsoleCtrlHandler( CtrlHandler, TRUE ) ) { cerr << "Control handler set failed" << endl; } #else // prevent CTRL+C exit signal(SIGINT, sigint_handler); #endif } } void escapeEspace(string &orig) { replaceAll(orig," ", "\\ "); } void unescapeEspace(string &orig) { replaceAll(orig,"\\ ", " "); } #ifndef NO_READLINE char* empty_completion(const char* text, int state) { // we offer 2 different options so that it doesn't complete (no space is inserted) if (state == 0) { return strdup(" "); } if (state == 1) { return strdup(text); } return NULL; } char* generic_completion(const char* text, int state, vector validOptions) { static size_t list_index, len; static bool foundone; string name; if (!validOptions.size()) // no matches { return empty_completion(text,state); //dont fall back to filenames } if (!state) { list_index = 0; foundone = false; len = strlen(text); } while (list_index < validOptions.size()) { name = validOptions.at(list_index); if (!rl_completion_quote_character) { escapeEspace(name); } list_index++; if (!( strcmp(text, "")) || (( name.size() >= len ) && ( strlen(text) >= len ) && ( name.find(text) == 0 ))) { if (name.size() && (( name.at(name.size() - 1) == '=' ) || ( name.at(name.size() - 1) == '\\' ) || ( name.at(name.size() - 1) == '/' ))) { rl_completion_suppress_append = 1; } foundone = true; return dupstr((char*)name.c_str()); } } if (!foundone) { return empty_completion(text,state); //dont fall back to filenames } return((char*)NULL ); } #endif char* local_completion(const char* text, int state) { return((char*)NULL ); //matches will be NULL: readline will use local completion } void pushvalidoption(vector *validOptions, const char *beginopt) { #ifdef _WIN32 if (validoptionforreadline(beginopt)) { validOptions->push_back(beginopt); } else { wstring input; stringtolocalw(beginopt,&input); wstring output = escapereadlinebreakers(input.c_str()); string soutput; localwtostring(&output,&soutput); validOptions->push_back(soutput.c_str()); } #else validOptions->push_back(beginopt); #endif } void changedir(const string& where) { #ifdef _WIN32 wstring wwhere; stringtolocalw(where.c_str(), &wwhere); wwhere.append(L"\\"); int r = SetCurrentDirectoryW((LPCWSTR)wwhere.data()); if (!r) { cerr << "Error at SetCurrentDirectoryW before local completion to " << where << ". errno: " << ERRNO << endl; } #else chdir(where.c_str()); #endif } #ifndef NO_READLINE char* remote_completion(const char* text, int state) { string saved_line = getCurrentLine(); static vector validOptions; if (state == 0) { validOptions.clear(); string completioncommand("completionshell "); completioncommand += saved_line; OUTSTRING s; OUTSTRINGSTREAM oss(s); comms->executeCommand(completioncommand, readresponse, oss); string outputcommand; outputcommand = oss.str(); if (outputcommand == "MEGACMD_USE_LOCAL_COMPLETION") { return local_completion(text,state); //fallback to local path completion } if (outputcommand.find("MEGACMD_USE_LOCAL_COMPLETION") == 0) { string where = outputcommand.substr(strlen("MEGACMD_USE_LOCAL_COMPLETION")); changedir(where); return local_completion(text,state); //fallback to local path completion } char *ptr = (char *)outputcommand.c_str(); char *beginopt = ptr; while (*ptr) { if (*ptr == 0x1F) { *ptr = '\0'; if (strcmp(beginopt," ")) //the server will give a " " for empty_completion (no matches) { pushvalidoption(&validOptions,beginopt); } beginopt=ptr+1; } ptr++; } if (*beginopt && strcmp(beginopt," ")) { pushvalidoption(&validOptions,beginopt); } } return generic_completion(text, state, validOptions); } static char** getCompletionMatches(const char * text, int start, int end) { rl_filename_quoting_desired = 1; char **matches; matches = (char**)NULL; matches = rl_completion_matches((char*)text, remote_completion); return( matches ); } void printHistory() { int length = history_length; int offset = 1; int rest = length; while (rest >= 10) { offset++; rest = rest / 10; } for (int i = 0; i < length; i++) { history_set_pos(i); OUTSTREAM << setw(offset) << i << " " << current_history()->line << endl; } } void wait_for_input(int readline_fd) { fd_set fds; FD_ZERO(&fds); FD_SET(readline_fd, &fds); int rc = select(FD_SETSIZE, &fds, NULL, NULL, NULL); if (rc < 0) { if (ERRNO != EINTR) //syscall { cerr << "Error at select at wait_for_input errno: " << ERRNO << endl; return; } } } #else vector remote_completion(string linetocomplete) { using namespace autocomplete; vector result; // normalize any partially or intermediately quoted strings, eg. `put c:\Program" Fi` or `/My" Documents/"` ACState acs = prepACState(linetocomplete, linetocomplete.size(), console->getAutocompleteStyle()); string refactoredline; for (auto& s : acs.words) { refactoredline += (refactoredline.empty() ? "" : " ") + s.getQuoted(); } OUTSTRING s; OUTSTRINGSTREAM oss(s); comms->executeCommand(string("completionshell ") + refactoredline, readresponse, oss); string outputcommand; auto ossstr=oss.str(); localwtostring(&ossstr, &outputcommand); ACState::quoted_word completionword = acs.words.size() ? acs.words[acs.words.size() - 1] : string(); if (outputcommand.find("MEGACMD_USE_LOCAL_COMPLETION") == 0) { string where; bool folders = false; if (outputcommand.find("MEGACMD_USE_LOCAL_COMPLETIONFOLDERS") == 0) { where = outputcommand.substr(strlen("MEGACMD_USE_LOCAL_COMPLETIONFOLDERS")); folders = true; } else { where = outputcommand.substr(strlen("MEGACMD_USE_LOCAL_COMPLETION")); } changedir(where); if (acs.words.size()) { string l = completionword.getQuoted(); CompletionState cs = autoComplete(l, l.size(), folders ? localFSFolder() : localFSPath(), console->getAutocompleteStyle()); result.swap(cs.completions); } return result; } else { char *ptr = (char *)outputcommand.c_str(); char *beginopt = ptr; while (*ptr) { if (*ptr == 0x1F) { *ptr = '\0'; if (strcmp(beginopt, " ")) //the server will give a " " for empty_completion (no matches) { result.push_back(autocomplete::ACState::Completion(beginopt, false)); } beginopt = ptr + 1; } ptr++; } if (*beginopt && strcmp(beginopt, " ")) { result.push_back(autocomplete::ACState::Completion(beginopt, false)); } if (result.size() == 1 && result[0].s == completionword.s) { result.clear(); // for parameters it returns the same string when there are no matches } return result; } } void exec_clear(autocomplete::ACState& s) { console->clearScreen(); } void exec_history(autocomplete::ACState& s) { console->outputHistory(); } void exec_dos_unix(autocomplete::ACState& s) { if (s.words.size() < 2) { OUTSTREAM << "autocomplete style: " << (console->getAutocompleteStyle() ? "unix" : "dos") << endl; } else { console->setAutocompleteStyle(s.words[1].s == "unix"); } } void exec_codepage(autocomplete::ACState& s) { if (s.words.size() == 1) { UINT cp1, cp2; console->getShellCodepages(cp1, cp2); cout << "Current codepage is " << cp1; if (cp2 != cp1) { cout << " with failover to codepage " << cp2 << " for any absent glyphs"; } cout << endl; for (int i = 32; i < 256; ++i) { string theCharUtf8 = WinConsole::toUtf8String(WinConsole::toUtf16String(string(1, (char)i), cp1)); cout << " dec/" << i << " hex/" << hex << i << dec << ": '" << theCharUtf8 << "'"; if (i % 4 == 3) { cout << endl; } } } else if (s.words.size() == 2 && atoi(s.words[1].s.c_str()) != 0) { if (!console->setShellConsole(atoi(s.words[1].s.c_str()), atoi(s.words[1].s.c_str()))) { cout << "Code page change failed - unicode selected" << endl; } } else if (s.words.size() == 3 && atoi(s.words[1].s.c_str()) != 0 && atoi(s.words[2].s.c_str()) != 0) { if (!console->setShellConsole(atoi(s.words[1].s.c_str()), atoi(s.words[2].s.c_str()))) { cout << "Code page change failed - unicode selected" << endl; } } else { cout << " codepage [N [N]]" << endl; } } autocomplete::ACN autocompleteSyntax; autocomplete::ACN buildAutocompleteSyntax() { using namespace autocomplete; std::unique_ptr p(new Either(" ")); p->Add(exec_clear, sequence(text("clear"))); p->Add(exec_codepage, sequence(text("codepage"), opt(sequence(wholenumber(65001), opt(wholenumber(65001)))))); p->Add(exec_dos_unix, sequence(text("autocomplete"), opt(either(text("unix"), text("dos"))))); p->Add(exec_history, sequence(text("history"))); return autocompleteSyntax = std::move(p); } void printHistory() { console->outputHistory(); } #endif bool isserverloggedin() { if (comms->executeCommand(("loggedin")) == MCMD_NOTLOGGEDIN ) { return false; } return true; } void process_line(const char * line) { string refactoredline; switch (prompt) { case AREYOUSURE: //this is currently never used if (!strcasecmp(line,"yes") || !strcasecmp(line,"y")) { comms->setResponseConfirmation(true); setprompt(COMMAND); } else if (!strcasecmp(line,"no") || !strcasecmp(line,"n")) { comms->setResponseConfirmation(false); setprompt(COMMAND); } else { //Do nth, ask again OUTSTREAM << "Please enter: [y]es/[n]o: " << flush; } break; case LOGINPASSWORD: { if (!strlen(line)) { break; } if (confirminglink) { string confirmcommand("confirm "); confirmcommand+=linktoconfirm; confirmcommand+=" " ; confirmcommand+=loginname; confirmcommand+=" \""; confirmcommand+=line; confirmcommand+="\"" ; OUTSTREAM << endl; comms->executeCommand(confirmcommand.c_str(), readresponse); } else if (confirmingcancellink) { string confirmcommand("confirmcancel "); confirmcommand+=linktoconfirm; confirmcommand+=" \""; confirmcommand+=line; confirmcommand+="\"" ; OUTSTREAM << endl; comms->executeCommand(confirmcommand.c_str(), readresponse); } else { string logincommand("login -v "); if (clientID.size()) { logincommand += "--clientID="; logincommand+=clientID; logincommand+=" "; } logincommand+=loginname; logincommand+=" \"" ; logincommand+=line; logincommand+="\"" ; OUTSTREAM << endl; comms->executeCommand(logincommand.c_str(), readresponse); } confirminglink = false; confirmingcancellink = false; setprompt(COMMAND); break; } case NEWPASSWORD: { if (!strlen(line)) { break; } newpasswd = line; OUTSTREAM << endl; setprompt(PASSWORDCONFIRM); break; } case PASSWORDCONFIRM: { if (!strlen(line)) { break; } if (line != newpasswd) { OUTSTREAM << endl << "New passwords differ, please try again" << endl; } else { OUTSTREAM << endl; if (signingup) { signupline += " \""; signupline += newpasswd; signupline += "\""; comms->executeCommand(signupline.c_str(), readresponse); signingup = false; } else { string changepasscommand(passwdline); passwdline = " "; changepasscommand+=" " ; if (oldpasswd.size()) { changepasscommand+="\"" ; changepasscommand+=oldpasswd; changepasscommand+="\"" ; } changepasscommand+=" \"" ; changepasscommand+=newpasswd; changepasscommand+="\"" ; comms->executeCommand(changepasscommand.c_str(), readresponse); } } setprompt(COMMAND); break; } case COMMAND: { #ifdef NO_READLINE // if local command and syntax is satisfied, execute it string consoleOutput; if (autocomplete::autoExec(line, string::npos, autocompleteSyntax, false, consoleOutput, false)) { COUT << consoleOutput << flush; return; } // normalize any partially or intermediately quoted strings, eg. `put c:\Program" Fi` or get `/My" Documents/"` autocomplete::ACState acs = autocomplete::prepACState(line, strlen(line), console->getAutocompleteStyle()); for (auto& s : acs.words) { refactoredline += (refactoredline.empty() ? "" : " ") + s.getQuoted(); } line = refactoredline.c_str(); #endif vector words = getlistOfWords(line); string clientWidth = "--client-width="; clientWidth+= SSTR(getNumberOfCols(80)); words.insert(words.begin()+1, clientWidth); string scommandtoexec(words[0]); scommandtoexec+=" "; scommandtoexec+=clientWidth; scommandtoexec+=" "; if (strlen(line)>(words[0].size()+1)) { scommandtoexec+=line+words[0].size()+1; } const char *commandtoexec = scommandtoexec.c_str(); bool helprequested = false; for (unsigned int i = 1; i< words.size(); i++) { if (words[i]== "--help") helprequested = true; } if (words.size()) { if ( words[0] == "exit" || words[0] == "quit") { if (find(words.begin(), words.end(), "--only-shell") == words.end()) { if (comms->executeCommand(commandtoexec, readresponse) == MCMD_CONFIRM_NO) { return; } } if (find(words.begin(), words.end(), "--help") == words.end() && find(words.begin(), words.end(), "--only-server") == words.end() ) { doExit = true; } } #if defined(_WIN32) || defined(__APPLE__) else if (words[0] == "update") { comms->markServerIsUpdating(); int ret = comms->executeCommand(commandtoexec, readresponse); if (ret == MCMD_REQRESTART) { OUTSTREAM << "MEGAcmd has been updated ... this shell will be restarted before proceding...." << endl; doExit = true; doReboot = true; } else if (ret != MCMD_INVALIDSTATE && words.size() == 1) { comms->unmarkServerIsUpdating(); } } #endif else if (words[0] == "history") { if (helprequested) { OUTSTREAM << " Prints commands history" << endl; } else { printHistory(); } } #if defined(_WIN32) && !defined(NO_READLINE) else if (!helprequested && words[0] == "unicode" && words.size() == 1) { rl_getc_function=(rl_getc_function==&getcharacterreadlineUTF16support)?rl_getc:&getcharacterreadlineUTF16support; OUTSTREAM << "Unicode shell input " << ((rl_getc_function==&getcharacterreadlineUTF16support)?"ENABLED":"DISABLED") << endl; return; } #endif else if (!helprequested && words[0] == "passwd") { if (isserverloggedin()) { passwdline = commandtoexec; discardOptionsAndFlags(&words); if (words.size() == 1) { setprompt(NEWPASSWORD); } else { comms->executeCommand(commandtoexec, readresponse); } } else { cerr << "Not logged in." << endl; } return; } else if (!helprequested && words[0] == "login") { if (!isserverloggedin()) { discardOptionsAndFlags(&words); if ( (words.size() == 2 || ( words.size() == 3 && !words[2].size() ) ) && (words[1].find("@") != string::npos)) { loginname = words[1]; setprompt(LOGINPASSWORD); } else { string s = commandtoexec; if (clientID.size()) { s = "login --clientID="; s+=clientID; s.append(string(commandtoexec).substr(5)); } comms->executeCommand(s, readresponse); } } else { cerr << "Already logged in. Please log out first." << endl; } return; } else if (!helprequested && words[0] == "signup") { if (!isserverloggedin()) { signupline = commandtoexec; discardOptionsAndFlags(&words); if (words.size() == 2) { loginname = words[1]; signingup = true; setprompt(NEWPASSWORD); } else { comms->executeCommand(commandtoexec, readresponse); } } else { cerr << "Please logout first." << endl; } return; } else if (!helprequested && words[0] == "confirm") { discardOptionsAndFlags(&words); if (words.size() == 3) { linktoconfirm = words[1]; loginname = words[2]; confirminglink = true; setprompt(LOGINPASSWORD); } else { comms->executeCommand(commandtoexec, readresponse); } } else if (!helprequested && words[0] == "confirmcancel") { discardOptionsAndFlags(&words); if (words.size() == 2) { linktoconfirm = words[1]; confirmingcancellink = true; setprompt(LOGINPASSWORD); } else { comms->executeCommand(commandtoexec, readresponse); } return; } else if (!helprequested && words[0] == "clear") { #ifdef _WIN32 HANDLE hStdOut; CONSOLE_SCREEN_BUFFER_INFO csbi; DWORD count; hStdOut = GetStdHandle( STD_OUTPUT_HANDLE ); if (hStdOut == INVALID_HANDLE_VALUE) return; /* Get the number of cells in the current buffer */ if (!GetConsoleScreenBufferInfo( hStdOut, &csbi )) return; /* Fill the entire buffer with spaces */ if (!FillConsoleOutputCharacter( hStdOut, (TCHAR) ' ', csbi.dwSize.X *csbi.dwSize.Y, { 0, 0 }, &count )) { return; } /* Fill the entire buffer with the current colors and attributes */ if (!FillConsoleOutputAttribute(hStdOut, csbi.wAttributes, csbi.dwSize.X *csbi.dwSize.Y, { 0, 0 }, &count)) { return; } /* Move the cursor home */ SetConsoleCursorPosition( hStdOut, { 0, 0 } ); #elif __linux__ printf("\033[H\033[J"); #else rl_clear_screen(0,0); #endif return; } else if ( (words[0] == "transfers")) { string toexec; if (!strstr (commandtoexec,"path-display-size")) { unsigned int width = getNumberOfCols(75); int pathSize = int((width-46)/2); toexec+=words[0]; toexec+=" --path-display-size="; toexec+=SSTR(pathSize); toexec+=" "; if (strlen(commandtoexec)>(words[0].size()+1)) { toexec+=commandtoexec+words[0].size()+1; } } else { toexec+=commandtoexec; } comms->executeCommand(toexec.c_str(), readresponse); } else if ( (words[0] == "du")) { string toexec; if (!strstr (commandtoexec,"path-display-size")) { unsigned int width = getNumberOfCols(75); int pathSize = int(width-13); if (strstr(commandtoexec, "--versions")) { pathSize -= 11; } toexec+=words[0]; toexec+=" --path-display-size="; toexec+=SSTR(pathSize); toexec+=" "; if (strlen(commandtoexec)>(words[0].size()+1)) { toexec+=commandtoexec+words[0].size()+1; } } else { toexec+=commandtoexec; } comms->executeCommand(toexec.c_str(), readresponse); } else if (words[0] == "sync") { string toexec; if (!strstr (commandtoexec,"path-display-size")) { unsigned int width = getNumberOfCols(75); int pathSize = int((width-46)/2); toexec+="sync --path-display-size="; toexec+=SSTR(pathSize); toexec+=" "; if (strlen(commandtoexec)>strlen("sync ")) { toexec+=commandtoexec+strlen("sync "); } } else { toexec+=commandtoexec; } comms->executeCommand(toexec.c_str(), readresponse); } else if (words[0] == "mediainfo") { string toexec; if (!strstr (commandtoexec,"path-display-size")) { unsigned int width = getNumberOfCols(75); int pathSize = int(width - 28); toexec+=words[0]; toexec+=" --path-display-size="; toexec+=SSTR(pathSize); toexec+=" "; if (strlen(commandtoexec)>(words[0].size()+1)) { toexec+=commandtoexec+words[0].size()+1; } } else { toexec+=commandtoexec; } comms->executeCommand(toexec.c_str(), readresponse); } else if (words[0] == "backup") { string toexec; if (!strstr (commandtoexec,"path-display-size")) { unsigned int width = getNumberOfCols(75); int pathSize = int((width-21)/2); toexec+="backup --path-display-size="; toexec+=SSTR(pathSize); toexec+=" "; if (strlen(commandtoexec)>strlen("backup ")) { toexec+=commandtoexec+strlen("backup "); } } else { toexec+=commandtoexec; } comms->executeCommand(toexec.c_str(), readresponse); } else { if ( words[0] == "get" || words[0] == "put" || words[0] == "reload") { string s = commandtoexec; if (clientID.size()) { string sline = commandtoexec; size_t pspace = sline.find_first_of(" "); s=""; s=sline.substr(0,pspace); s += " --clientID="; s+=clientID; if (pspace!=string::npos) { s+=sline.substr(pspace); } words.push_back(s); } comms->executeCommand(s, readresponse); #ifdef _WIN32 Sleep(200); // give a brief while to print progress ended #endif } else { // execute user command comms->executeCommand(commandtoexec, readresponse); } } } else { cerr << "failed to interprete input commandtoexec: " << commandtoexec << endl; } break; } } } // main loop #ifndef NO_READLINE void readloop() { time_t lasttimeretrycons = 0; char *saved_line = NULL; int saved_point = 0; rl_save_prompt(); int readline_fd = -1; readline_fd = fileno(rl_instream); procesingline = true; comms->registerForStateChanges(true, statechangehandle); if (!comms->waitForServerReadyOrRegistrationFailed(std::chrono::seconds(2*RESUME_SESSION_TIMEOUT))) { std::cerr << "Server seems irresponsive" << endl; } procesingline = false; promptreinstalledwhenprocessingline = false; for (;; ) { if (prompt == COMMAND) { mutexPrompt.lock(); if (requirepromptinstall) { install_rl_handler(*dynamicprompt ? dynamicprompt : prompts[COMMAND], false); // display prompt if (saved_line) { rl_replace_line(saved_line, 0); free(saved_line); saved_line = NULL; } rl_point = saved_point; rl_redisplay(); } mutexPrompt.unlock(); } // command editing loop - exits when a line is submitted for (;; ) { if (prompt == COMMAND || prompt == AREYOUSURE) { procesingline = false; promptreinstalledwhenprocessingline = false; wait_for_input(readline_fd); bool retryComms = false; time_t tnow = time(NULL); { std::lock_guard g(mutexPrompt); rl_callback_read_char(); //this calls store_line if last char was enter if ( (tnow - lasttimeretrycons) > 5 && !doExit && !comms->isServerUpdating()) { char * sl = rl_copy_text(0, rl_end); if (string("quit").find(sl) != 0 && string("exit").find(sl) != 0) { retryComms = true; } free(sl); } rl_resize_terminal(); // to always adjust to new screen sizes if (doExit) { if (saved_line != NULL) free(saved_line); saved_line = NULL; return; } } if (retryComms) { comms->executeCommand("retrycons"); lasttimeretrycons = tnow; } } else { console_readpwchar(pw_buf, sizeof pw_buf, &pw_buf_pos, &g_line); } if (g_line) { break; } } cleanLastMessage();// clean last message that avoids broadcasts repetitions mutexPrompt.lock(); // save line saved_point = rl_point; if (saved_line != NULL) free(saved_line); saved_line = rl_copy_text(0, rl_end); // remove prompt rl_save_prompt(); rl_replace_line("", 0); rl_redisplay(); mutexPrompt.unlock(); if (g_line) { if (strlen(g_line)) { alreadyFinished = false; percentDowloaded = 0.0; handlerOverridenByExternalThread = false; process_line(g_line); { //after processing the line, we want to reinstall the handler (except if during the process, or due to it, // the handler is reinstalled by e.g: a change in prompt) std::lock_guard lkrlhandler(handlerInstallerMutex); if (!handlerOverridenByExternalThread) { requirepromptinstall = true; } } if (comms->registerRequired()) { comms->registerForStateChanges(true, statechangehandle); } // sleep, so that in case there was a changeprompt waiting, gets executed before relooping // this is not 100% guaranteed to happen sleepSeconds(0); } else { // Empty line (user pressed Enter with no input): show new prompt like bash requirepromptinstall = true; } free(g_line); g_line = NULL; } if (doExit) { if (saved_line != NULL) free(saved_line); saved_line = NULL; return; } } } #else // NO_READLINE void readloop() { time_t lasttimeretrycons = 0; comms->registerForStateChanges(true, statechangehandle); //give it a while to communicate the state sleepMilliSeconds(700); for (;; ) { if (prompt == COMMAND) { console->updateInputPrompt(*dynamicprompt ? dynamicprompt : prompts[COMMAND]); } // command editing loop - exits when a line is submitted for (;; ) { g_line = console->checkForCompletedInputLine(); if (g_line) { break; } else { time_t tnow = time(NULL); if ((tnow - lasttimeretrycons) > 5 && !doExit && !comms->isServerUpdating()) { if (wstring(L"quit").find(console->getInputLineToCursor()) != 0 && wstring(L"exit").find(console->getInputLineToCursor()) != 0 ) { comms->executeCommand("retrycons"); lasttimeretrycons = tnow; } } if (doExit) { return; } } } cleanLastMessage();// clean last message that avoids broadcasts repetitions if (g_line) { if (strlen(g_line)) { alreadyFinished = false; percentDowloaded = 0.0; // mutexPrompt.lock(); process_line(g_line); requirepromptinstall = true; // mutexPrompt.unlock(); if (comms->registerRequired()) { comms->registerForStateChanges(true, statechangehandle); } // sleep, so that in case there was a changeprompt waiting, gets executed before relooping // this is not 100% guaranteed to happen sleepSeconds(0); } free(g_line); g_line = NULL; } if (doExit) { return; } } } #endif class NullBuffer : public std::streambuf { public: int overflow(int c) { return c; } }; void printWelcomeMsg(unsigned int width) { if (!width) { width = getNumberOfCols(75); } std::ostringstream oss; oss << endl; oss << "."; for (unsigned int i = 0; i < width; i++) oss << "=" ; oss << "."; oss << endl; printCenteredLine(oss, " __ __ _____ ____ _ _ ",width); printCenteredLine(oss, "| \\/ | ___|/ ___| / \\ ___ _ __ ___ __| |",width); printCenteredLine(oss, "| |\\/| | \\ / | _ / _ \\ / __| '_ ` _ \\ / _` |",width); printCenteredLine(oss, "| | | | /__\\ |_| |/ ___ \\ (__| | | | | | (_| |",width); printCenteredLine(oss, "|_| |_|____|\\____/_/ \\_\\___|_| |_| |_|\\__,_|",width); oss << "|"; for (unsigned int i = 0; i < width; i++) oss << " " ; oss << "|"; oss << endl; printCenteredLine(oss, "Welcome to MEGAcmd! A Command Line Interactive and Scriptable",width); printCenteredLine(oss, "Application to interact with your MEGA account.",width); printCenteredLine(oss, "Please write to support@mega.nz if you find any issue or",width); printCenteredLine(oss, "have any suggestion concerning its functionalities.",width); printCenteredLine(oss, "Enter \"help --non-interactive\" to learn how to use MEGAcmd with scripts.",width); printCenteredLine(oss, "Enter \"help\" for basic info and a list of available commands.",width); #if defined(_WIN32) && defined(NO_READLINE) printCenteredLine(oss, "Unicode support in the console is improved, see \"help --unicode\"", width); #elif defined(_WIN32) printCenteredLine(oss, "Enter \"help --unicode\" for info regarding non-ASCII support.",width); #endif oss << "`"; for (unsigned int i = 0; i < width; i++) { oss << "=" ; } #ifndef _WIN32 oss << "\u00b4\n"; COUT << oss.str() << std::flush; #else WindowsUtf8StdoutGuard utf8Guard; // So far, all is ASCII. COUT << oss.str(); // Now let's tray the non ascii forward acute. Note: codepage should have been set to UTF-8 // set via console->setShellConsole(CP_UTF8, GetConsoleOutputCP()); assert(GetConsoleOutputCP() == CP_UTF8); if (!(COUT << L"\u00b4")) // still, Windows 7 or depending on the fonts, the console may struggle to render this { COUT << "/"; //fallback character } COUT << endl; #endif } int quote_detector(char *line, int index) { return ( index > 0 && line[index - 1] == '\\' && !quote_detector(line, index - 1) ); } bool runningInBackground() { #ifndef _WIN32 pid_t fg = tcgetpgrp(STDIN_FILENO); if(fg == -1) { // Piped: return false; } else if (fg == getpgrp()) { // foreground return false; } else { // background return true; } #endif return false; } #ifndef NO_READLINE std::string readresponse(const char* question) { string response; auto responseRaw = readline(question); if (responseRaw) { response = responseRaw; } rl_set_prompt(""); rl_replace_line("", 0); rl_callback_handler_remove(); //To fix broken readline (e.g: upper key wouldnt work) return response; } #else std::string readresponse(const char* question) { std::string questionStr(question); size_t pos = questionStr.rfind('\n'); if (pos != std::string::npos) { std::string questionPrev = questionStr.substr(0, pos); std::string prompt = questionStr.substr(pos + 1); COUT << questionPrev << std::endl; console->updateInputPrompt(prompt); } else { console->updateInputPrompt(questionStr); } for (;;) { if (char* line = console->checkForCompletedInputLine()) { console->updateInputPrompt(""); string response(line); free(line); return response; } else { sleepMilliSeconds(200); } } } #endif } //end namespace using namespace megacmd; int main(int argc, char* argv[]) { // intialize the comms object #if defined(_WIN32) comms = new MegaCmdShellCommunicationsNamedPipes(); #else comms = new MegaCmdShellCommunicationsPosix(); #endif #ifndef NO_READLINE rl_attempted_completion_function = getCompletionMatches; rl_completer_quote_characters = "\"'"; rl_filename_quote_characters = " "; rl_completer_word_break_characters = (char *)" "; rl_char_is_quoted_p = "e_detector; if (!runningInBackground()) { rl_initialize(); // initializes readline, // so that we can use rl_message or rl_resize_terminal safely before ever // prompting anything. } #endif #if defined(_WIN32) && defined(NO_READLINE) console = new CONSOLE_CLASS; console->setAutocompleteSyntax(buildAutocompleteSyntax()); console->setAutocompleteFunction(remote_completion); console->setShellConsole(CP_UTF8, GetConsoleOutputCP()); console->blockingConsolePeek = true; #endif #ifdef _WIN32 // in windows, rl_resize_terminal fails to resize before first prompt appears, we take the width from elsewhere CONSOLE_SCREEN_BUFFER_INFO csbi; int columns; GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi); columns = csbi.srWindow.Right - csbi.srWindow.Left - 2; printWelcomeMsg(columns); #else sleepMilliSeconds(200); // this gives a little while so that the console is ready and rl_resize_terminal works fine printWelcomeMsg(); #endif readloop(); #ifndef NO_READLINE clear_history(); if (!doReboot) { rl_callback_handler_remove(); //To avoid having the terminal messed up (requiring a "reset") } #endif comms->shutdown(); delete comms; if (doReboot) { #ifdef _WIN32 sleepSeconds(5); // Give a while for server to restart LPWSTR szPathExecQuoted = GetCommandLineW(); wstring wspathexec = wstring(szPathExecQuoted); if (wspathexec.at(0) == '"') { wspathexec = wspathexec.substr(1); } while (wspathexec.size() && ( wspathexec.at(wspathexec.size()-1) == '"' || wspathexec.at(wspathexec.size()-1) == ' ' )) { wspathexec = wspathexec.substr(0,wspathexec.size()-1); } LPWSTR szPathExec = (LPWSTR) wspathexec.c_str(); STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); ZeroMemory( &pi, sizeof(pi) ); si.cb = sizeof(si); if (!CreateProcess( szPathExec,szPathExec,NULL,NULL,TRUE, CREATE_NEW_CONSOLE, NULL,NULL, &si,&pi) ) { COUT << "Unable to execute: " << szPathExec << " errno = : " << ERRNO << endl; sleepSeconds(5); } #elif defined(__linux__) system("reset -I"); string executable = argv[0]; if (executable.find("/") != 0) { executable.insert(0, getCurrentExecPath()+"/"); } execv(executable.c_str(), argv); #else system("reset -I"); execv(argv[0], argv); #endif } } MEGAcmd-2.5.2_Linux/src/megacmdshell/megacmdshell.h000066400000000000000000000026511516543156300221230ustar00rootroot00000000000000/** * @file src/megacmdshell.h * @brief MEGAcmd: Interactive CLI and service application * This is the shell application * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is distributed under the terms of the GNU General Public * License, see http://www.gnu.org/copyleft/gpl.txt * for details. * * This file is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. */ #ifndef MEGACMDSHELL_H #define MEGACMDSHELL_H #include #include #define OUTSTREAM COUT namespace megacmd { enum prompttype { COMMAND, LOGINPASSWORD, NEWPASSWORD, PASSWORDCONFIRM, AREYOUSURE }; static const char* const prompts[] = { "MEGA CMD> ", "Password:", "New Password:", "Retype New Password:", "Are you sure to delete? " }; void sleepSeconds(int seconds); void sleepMilliSeconds(long milliseconds); void restoreprompt(); void printprogress(long long completed, long long total, const char *title = "TRANSFERRING"); void changeprompt(const char *newprompt, bool redisplay = false); void redisplay_prompt(); const char * getUsageStr(const char *command); void unescapeifRequired(std::string &what); void setprompt(prompttype p, std::string arg = ""); prompttype getprompt(); void printHistory(); std::string readresponse(const char *question); }//end namespace #endif // MEGACMDSHELL_H MEGAcmd-2.5.2_Linux/src/megacmdshell/megacmdshellcommunications.cpp000066400000000000000000000543431516543156300254340ustar00rootroot00000000000000/** * @file src/megacmdshellcommunications.cpp * @brief MEGAcmd: Communications module to connect to server * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. * * This file is also distributed under the terms of the GNU General * Public License, see http://www.gnu.org/copyleft/gpl.txt for details. */ #include "megacmdshellcommunications.h" #include "../megacmdcommonutils.h" #include #include #include #include #ifdef _WIN32 #include //SHGetFolderPath #include //PathAppend #else #include #include #include //getpwuid_r #include #include #include #include #include #endif #ifdef __FreeBSD__ #include #endif #ifndef INVALID_SOCKET #define INVALID_SOCKET -1 #endif #ifndef ENOTCONN #define ENOTCONN 107 #endif using namespace std; namespace megacmd { #ifndef _WIN32 string createAndRetrieveConfigFolder() { auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); auto dir = dirs->configDirPath().string(); struct stat st = {}; if (stat(dir.c_str(), &st) == -1) { mkdir(dir.c_str(), 0700); } return dir; } #endif #ifndef _WIN32 #include bool is_pid_running(pid_t pid) { while(waitpid(-1, 0, WNOHANG) > 0) { // Wait for defunct.... } if (0 == kill(pid, 0)) return 1; // Process exists return 0; } #endif #ifndef _WIN32 bool MegaCmdShellCommunicationsPosix::isSocketValid(SOCKET socket) { return socket >= 0; } SOCKET MegaCmdShellCommunicationsPosix::createSocket(int number, bool initializeserver) { SOCKET thesock = socket(AF_UNIX, SOCK_STREAM, 0); if (!isSocketValid(thesock)) { cerr << "ERROR opening socket: " << ERRNO << endl; return INVALID_SOCKET; } bool ok = false; ScopeGuard g([this, &thesock, &ok]() { if (!ok) //something failed { close(thesock); } }); if (fcntl(thesock, F_SETFD, FD_CLOEXEC) == -1) { cerr << "ERROR setting CLOEXEC to socket: " << errno << endl; } std::string socketPath = getOrCreateSocketPath(false); if (socketPath.empty()) { std::cerr << "Error creating runtime directory for socket file: " << strerror(errno) << std::endl; return INVALID_SOCKET; } struct sockaddr_un addr; memset(&addr, 0, sizeof( addr )); addr.sun_family = AF_UNIX; strncpy(addr.sun_path, socketPath.c_str(), socketPath.size()); if (::connect(thesock, (struct sockaddr*)&addr, sizeof( addr )) == SOCKET_ERROR) { if (!number && initializeserver) { //launch server int forkret = fork(); // if (forkret) //-> child is megacmdshell (debug megacmd server) if (!forkret) //-> child is server. (debug megacmdshell) { signal(SIGINT, SIG_IGN); //ignore Ctrl+C in the server setsid(); //create new session so as not to receive parent's Ctrl+C // Give an indication of where the logs will be find: string pathtolog = createAndRetrieveConfigFolder()+"/megacmdserver.log"; CERR << "[Initiating MEGAcmd server in background. Log: " << pathtolog << "]" << endl; freopen(std::string(pathtolog).append(".out").c_str(),"w",stdout); freopen(std::string(pathtolog).append(".err").c_str(),"w",stderr); #ifndef NDEBUG const char executable[] = "./mega-cmd-server"; #else #ifdef __MACH__ const char executable[] = "/Applications/MEGAcmd.app/Contents/MacOS/mega-cmd"; const char executable2[] = "./mega-cmd"; #else const char executable[] = "mega-cmd-server"; char executable2[PATH_MAX]; sprintf(executable2, "%s/mega-cmd-server", getCurrentExecPath().c_str()); #endif #endif std::vector argsVector{ executable, "--do-not-log-to-stdout", nullptr }; auto args = const_cast(argsVector.data()); int ret = execvp(executable, args); if (ret && errno == 2) { cerr << "Couln't initiate MEGAcmd server: executable not found: " << executable << endl; #ifdef NDEBUG cerr << "Trying to use alternative executable: " << executable2 << endl; argsVector[0] = executable2; ret = execvp(executable2, args); if (ret && errno == 2) { cerr << "Couln't initiate MEGAcmd server: executable not found: " << executable2 << endl; } #endif } if (ret && errno != 2) { cerr << "MEGAcmd server exit with code " << ret << " . errno = " << errno << endl; } exit(0); } //try again: int attempts = 12; #ifdef __MACH__ int waitimet = 15000; // Give a longer while for the user to insert password to unblock fsevents. TODO: this should only be required the first time using megacmd #else int waitimet = 1500; static int relaunchnumber = 1; waitimet=waitimet*(relaunchnumber++); #endif usleep(waitimet*100); while ( ::connect(thesock, (struct sockaddr*)&addr, sizeof( addr )) == SOCKET_ERROR && attempts--) { usleep(waitimet); waitimet=waitimet*2; } if (attempts < 0) //too many attempts { cerr << "Unable to connect to " << (number?("response socket N "+std::to_string(number)):"service") << ": error=" << ERRNO << endl; #ifdef __linux__ cerr << "Please ensure mega-cmd-server is running" << endl; #else cerr << "Please ensure MEGAcmdServer is running" << endl; #endif return INVALID_SOCKET; } else { if (forkret && is_pid_running(forkret)) // server pid is alive (most likely because I initiated the server) { mServerInitiatedFromShell = true; } setForRegisterAgain(true); } } else { #ifdef ECONNREFUSED if (!initializeserver && ERRNO == ECONNREFUSED) { cerr << "MEGAcmd Server is not responding" << endl; } else #endif { cerr << "Unable to connect to socket " << number << " : " << ERRNO << endl; } return INVALID_SOCKET; } } ok = true; return thesock; } #endif MegaCmdShellCommunications::MegaCmdShellCommunications() { #ifdef _WIN32 setlocale(LC_ALL, "en-US"); #endif #if _WIN32 WORD wVersionRequested; WSADATA wsaData; int err; /* Use the MAKEWORD(lowbyte, highbyte) macro declared in Windef.h */ wVersionRequested = MAKEWORD(2, 2); err = WSAStartup(wVersionRequested, &wsaData); if (err != 0) { cerr << "ERROR initializing WSA" << endl; } #endif } #ifdef _WIN32 std::string to_utf8(uint32_t cp) //TODO: move this to a common place { // // c++11 // std::wstring_convert, char32_t> conv; // return conv.to_bytes( (char32_t)cp ); std::string result; int count; if (cp < 0x0080) count = 1; else if (cp < 0x0800) count = 2; else if (cp < 0x10000) count = 3; else if (cp <= 0x10FFFF) count = 4; else return result; // or throw an exception result.resize(count); for (int i = count-1; i > 0; --i) { result[i] = (char) (0x80 | (cp & 0x3F)); cp >>= 6; } for (int i = 0; i < count; ++i) cp |= (1 << (7-i)); result[0] = (char) cp; return result; } string unescapeutf16escapedseqs(const char *what) { // string toret; // size_t len = strlen(what); // for (int i=0;i that's only one gliph // i+=6; // } // else // { // toret+=what[i]; // i++; // } // } // return toret; std::string str = what; std::string::size_type startIdx = 0; do { startIdx = str.find("\\u", startIdx); if (startIdx == std::string::npos) break; std::string::size_type endIdx = str.find_first_not_of("0123456789abcdefABCDEF", startIdx+2); if (endIdx == std::string::npos) break; std::string tmpStr = str.substr(startIdx+2, endIdx-(startIdx+2)); std::istringstream iss(tmpStr); uint32_t cp; if (iss >> std::hex >> cp) { std::string utf8 = to_utf8(cp); str.replace(startIdx, 2+tmpStr.length(), utf8); startIdx += utf8.length(); } else startIdx += 2; } while (true); return str; } #endif int MegaCmdShellCommunications::executeCommandW(wstring wcommand, std::string (*readresponse)(const char *), OUTSTREAMTYPE &output, OUTSTREAMTYPE &errorOutput, bool interactiveshell) { return executeCommand("", readresponse, output, errorOutput, interactiveshell, wcommand); } #ifndef _WIN32 int MegaCmdShellCommunicationsPosix::executeCommand(string command, std::string (*readresponse)(const char *), OUTSTREAMTYPE &output, OUTSTREAMTYPE &errorOutput, bool interactiveshell, wstring /*wcommand*/) { SOCKET thesock = createSocket(0, command.compare(0,4,"exit") && command.compare(0,4,"quit") && command.compare(0,10,"completion")); if (!isSocketValid(thesock)) { return -1; } ScopeGuard g([this, &thesock]() { close(thesock); }); if (interactiveshell) { command="X"+command; } auto n = send(thesock,command.data(),command.size(), MSG_NOSIGNAL); if (n == SOCKET_ERROR) { if ( (!command.compare(0,5,"Xexit") || !command.compare(0,5,"Xquit") ) && (ERRNO == ENOTCONN) ) { cerr << "Could not send exit command to MEGAcmd server (probably already down)" << endl; } else { cerr << "ERROR writing command to socket: " << ERRNO << endl; } return -1; } int outcode = -1; n = recv(thesock, (char *)&outcode, sizeof(outcode), MSG_NOSIGNAL); if (n == SOCKET_ERROR) { cerr << "ERROR reading output code: " << ERRNO << endl; return -1; } while (outcode == MCMD_REQCONFIRM || outcode == MCMD_REQSTRING || outcode == MCMD_PARTIALOUT || outcode == MCMD_PARTIALERR) { if (outcode == MCMD_PARTIALOUT || outcode == MCMD_PARTIALERR) { bool useErrorStream = outcode == MCMD_PARTIALERR; auto &partialOutputStream = useErrorStream ? errorOutput : output; size_t partialoutsize; n = recv(thesock, (char *)&partialoutsize, sizeof(partialoutsize), MSG_NOSIGNAL); if (n && partialoutsize > 0) { StdoutMutexGuard stdOutLockGuard; do{ char *buffer = new char[partialoutsize+1]; n = recv(thesock, (char *)buffer, partialoutsize, MSG_NOSIGNAL); if (n) { partialOutputStream << string(buffer,partialoutsize) << flush; partialoutsize-=n; } delete[] buffer; } while(n != 0 && partialoutsize && n !=SOCKET_ERROR); } else { std::cerr << "Error reading size of partial output: " << ERRNO << std::endl; return -1; } } else { //REQCONFIRM|REQSTRING size_t BUFFERSIZE = 1024; string confirmQuestion; char buffer[1025]; do{ n = recv(thesock, buffer, BUFFERSIZE, MSG_NOSIGNAL); if (n) { buffer[n]='\0'; confirmQuestion.append(buffer); } } while(n == BUFFERSIZE && n != SOCKET_ERROR); if (outcode == MCMD_REQCONFIRM) { int response = MCMDCONFIRM_NO; if (readresponse != NULL) { response = readconfirmationloop(confirmQuestion.c_str(), readresponse); } n = send(thesock, (const char *) &response, sizeof(response), MSG_NOSIGNAL); } else // MCMD_REQSTRING { string response = (readresponse != NULL) ? readresponse(confirmQuestion.c_str()) : "FAILED"; n = send(thesock, response.data(), response.size(), MSG_NOSIGNAL); } if (n == SOCKET_ERROR) { cerr << "ERROR writing confirm response to socket: " << ERRNO << endl; return -1; } } n = recv(thesock, (char *)&outcode, sizeof(outcode), MSG_NOSIGNAL); if (n == SOCKET_ERROR) { cerr << "ERROR reading output code: " << ERRNO << endl; return -1; } } int BUFFERSIZE = 1024; char buffer[1025]; do{ n = recv(thesock, buffer, BUFFERSIZE, MSG_NOSIGNAL); if (n) { if (n != 1 || buffer[0] != 0) //To avoid outputing 0 char in binary outputs { StdoutMutexGuard stdOutLockGuard; output << string(buffer,n) << flush; } } } while(n != 0 && n !=SOCKET_ERROR); if (n == SOCKET_ERROR) { cerr << "ERROR reading output: " << ERRNO << endl; return -1; } return outcode; } int MegaCmdShellCommunicationsPosix::listenToStateChanges(int receiveSocket, StateChangedCb_t statechangehandle) { assert(isSocketValid(receiveSocket)); ScopeGuard g([this, receiveSocket]() { mStateListenerSocket = -1; // we don't want shutdowns after close! close(receiveSocket); }); while (!mStopListener) { string newstate; int BUFFERSIZE = 1024; char buffer[1025]; int n = SOCKET_ERROR; do{ n = recv(receiveSocket, buffer, BUFFERSIZE, MSG_NOSIGNAL); if (n) { buffer[n]='\0'; newstate += buffer; } } while(n == BUFFERSIZE && n !=SOCKET_ERROR); if (n == SOCKET_ERROR) { cerr << "ERROR reading state from MEGAcmd server: " << ERRNO << endl; return -1; } if (!n) // server closed the connection { return -1; } if (statechangehandle) { statechangehandle(newstate, *this); } } return 0; } #endif int MegaCmdShellCommunications::readconfirmationloop(const char *question, string (*readresponse)(const char *)) { bool firstime = true; for (;; ) { string response; if (firstime) { response = readresponse(question); } else { response = readresponse("Please enter [y]es/[n]o/[a]ll/none:"); } firstime = false; if (response == "yes" || response == "y" || response == "YES" || response == "Y" || response == "Yes") { return MCMDCONFIRM_YES; } if (response == "no" || response == "n" || response == "NO" || response == "N" || response == "No") { return MCMDCONFIRM_NO; } if (response == "All" || response == "ALL" || response == "a" || response == "A" || response == "all") { return MCMDCONFIRM_ALL; } if (response == "none" || response == "NONE" || response == "None") { return MCMDCONFIRM_NONE; } } } bool MegaCmdShellCommunications::waitForServerReadyOrRegistrationFailed(std::optional timeout) { return timeout ? mPromiseServerReadyOrRegistrationFailed.get_future().wait_for(*timeout) != std::future_status::timeout : (mPromiseServerReadyOrRegistrationFailed.get_future().wait(), true); } void MegaCmdShellCommunications::markServerIsUpdating() { mUpdating = true; } void MegaCmdShellCommunications::unmarkServerIsUpdating() { mUpdating = false; } bool MegaCmdShellCommunications::isServerUpdating() { return mUpdating; } void MegaCmdShellCommunications::markServerReadyOrRegistrationFailed(bool readyOrFailed) { if (!mPromiseServerReadyOrRegistrationFailedAttended.test_and_set()) // only once { mPromiseServerReadyOrRegistrationFailed.set_value(readyOrFailed); } } bool MegaCmdShellCommunications::registerForStateChanges(bool interactive, StateChangedCb_t statechangehandle, bool initiateServer) { if (mStopListener || mUpdating) // finished { return false; } { std::lock_guard g(mRegistrationMutex); if (mLastFailedRegistration && ( (std::chrono::steady_clock::now() - *mLastFailedRegistration) < std::chrono::seconds(30))) { // defer registration attempt return false; } } // if there's a listener thread running if (mListenerThread) { mStopListener = true; triggerListenerThreadShutdown(); mListenerThread->join(); } mClientIdPromise = std::promise(); auto resultRegistration = registerForStateChangesImpl(interactive, initiateServer); if (!resultRegistration) { markServerRegistrationFailed(); return false; } mRegisterRequired = false; mStopListener = false; mListenerThread.reset(new std::thread( [this, fd{resultRegistration.value()}, statechangeCb{std::move(statechangehandle)}]() { bool everSucceeded = false; auto stateChangedWrapped = [&everSucceeded, statechangeCb{std::move(statechangeCb)}](std::string state, MegaCmdShellCommunications &comsManager) { everSucceeded = true; statechangeCb(std::move(state), comsManager); }; auto r = listenToStateChanges(fd, stateChangedWrapped); // Logic to consider registration again: if (r < 0 && !mStopListener && !mUpdating) { auto errorLine = !everSucceeded ? "\nWarning: Unable to register to state changes.\n" // This could happen if for instance, the server rejects registering a listener because max descriptors allowed for it has been depleted #ifdef WIN32 : "\n[MEGAcmdServer.exe process seems to have stopped. Type to respawn or reconnect to it]\n"; #else : "\n[mega-cmd-server process seems to have stopped. Type to respawn or reconnect to it]\n"; #endif setForRegisterAgain(); std::cerr << errorLine << std::flush; } // In either case the above may have failed before receiving server readyness. // This will ensure we don't halt main thread execution if that's the case: markServerRegistrationFailed(); } )); return true; } #ifndef _WIN32 std::optional MegaCmdShellCommunicationsPosix::registerForStateChangesImpl(bool interactive, bool initiateServer) { SOCKET thesock = createSocket(0, initiateServer); if (thesock == INVALID_SOCKET) { cerr << "Failed to create socket for registering for state changes" << endl; return {}; } bool ok = false; ScopeGuard g([this, &thesock, &ok]() { if (!ok) //something failed { close(thesock); } }); string command=interactive?"Xregisterstatelistener":"registerstatelistener"; auto n = send(thesock,command.data(),command.size(), MSG_NOSIGNAL); if (n == SOCKET_ERROR) { cerr << "ERROR writing output Code to socket: " << ERRNO << endl; return {}; } ok = true; mStateListenerSocket = thesock; // to be able to trigger shutdown return thesock; } void MegaCmdShellCommunicationsPosix::triggerListenerThreadShutdown() { if (auto socket = mStateListenerSocket.exchange(-1); socket != -1) { // enforce socket shutdown: this will wake listenerThread ::shutdown(socket, SHUT_RDWR); } } #endif void MegaCmdShellCommunications::setResponseConfirmation(bool /*confirmation*/) { } void MegaCmdShellCommunications::shutdown() { if (mListenerThread) { mStopListener = true; triggerListenerThreadShutdown(); mListenerThread->join(); mListenerThread.reset(); } } bool MegaCmdShellCommunications::registerRequired() { std::lock_guard g(mRegistrationMutex); return mRegisterRequired; } void MegaCmdShellCommunications::setForRegisterAgain(bool dontWait) { std::lock_guard g(mRegistrationMutex); mRegisterRequired = true; if (dontWait) { mLastFailedRegistration = {}; } else { mLastFailedRegistration = std::chrono::steady_clock::now(); } } void MegaCmdShellCommunications::setClientIdPromise(const std::string& clientId) { mClientIdPromise.set_value(clientId); } std::optional MegaCmdShellCommunications::tryToGetClientId(std::chrono::seconds waitForSecs) { auto f = mClientIdPromise.get_future(); if (f.wait_for(waitForSecs) == std::future_status::timeout) { return std::nullopt; } return f.get(); } MegaCmdShellCommunications::~MegaCmdShellCommunications() { assert(!mListenerThread); } } //end namespace MEGAcmd-2.5.2_Linux/src/megacmdshell/megacmdshellcommunications.h000066400000000000000000000120231516543156300250660ustar00rootroot00000000000000/** * @file src/megacmdshellcommunications.h * @brief MEGAcmd: Communications module to connect to server * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. * * This file is also distributed under the terms of the GNU General * Public License, see http://www.gnu.org/copyleft/gpl.txt for details. */ #ifndef MEGACMDSHELLCOMMUNICATIONS_H #define MEGACMDSHELLCOMMUNICATIONS_H #include "../megacmdcommonutils.h" // In the server, OUTSTREAM is defined in megacmdlogger.h: #define OUTSTREAM getCurrentOut() // However in the exec and cmd apps: #define OUTSTREAM COUT #include #include #include #include #ifdef _WIN32 #include #include //PathAppend #else #include #include #include #include #include #endif #ifdef _WIN32 #include "mega/thread/cppthread.h" class MegaThread : public ::mega::CppThread {}; #else #include "mega/thread/posixthread.h" class MegaThread : public ::mega::PosixThread {}; #endif #ifdef _WIN32 #else typedef int SOCKET; #endif #ifdef _WIN32 #include #define ERRNO WSAGetLastError() #else #define ERRNO errno #endif #ifndef SOCKET_ERROR #define SOCKET_ERROR -1 #endif #ifdef __MACH__ #define MSG_NOSIGNAL 0 #elif _WIN32 #define MSG_NOSIGNAL 0 #endif #define MEGACMDINITIALPORTNUMBER 12300 namespace megacmd { class MegaCmdShellCommunications { public: using StateChangedCb_t = std::function; MegaCmdShellCommunications(); virtual ~MegaCmdShellCommunications(); virtual int executeCommand(std::string command, std::string (*readresponse)(const char *) = NULL, OUTSTREAMTYPE &output = COUT, OUTSTREAMTYPE &errorOutput = CERR, bool interactiveshell = true, std::wstring = L"") = 0; virtual int executeCommandW(std::wstring command, std::string (*readresponse)(const char *) = NULL, OUTSTREAMTYPE &output = COUT, OUTSTREAMTYPE &errorOutput = CERR, bool interactiveshell = true); virtual bool registerForStateChanges(bool interactive, StateChangedCb_t statechangehandle, bool initiateServer = true); virtual void setResponseConfirmation(bool confirmation); bool mServerInitiatedFromShell = false; int readconfirmationloop(const char *question, std::string (*readresponse)(const char *)); // returns true if did not timeout bool waitForServerReadyOrRegistrationFailed(std::optional timeout = {}); void markServerReady() { markServerReadyOrRegistrationFailed(true); } void markServerRegistrationFailed() { markServerReadyOrRegistrationFailed(false); } void markServerIsUpdating(); void unmarkServerIsUpdating(); bool isServerUpdating(); void shutdown(); bool registerRequired(); void setForRegisterAgain(bool dontWait = false); void setClientIdPromise(const std::string& clientId); std::optional tryToGetClientId(std::chrono::seconds waitForSecs = std::chrono::seconds(15)); std::lock_guard getStdoutLockGuard(); private: virtual void triggerListenerThreadShutdown() {}; virtual std::optional registerForStateChangesImpl(bool interactive, bool initiateServer = true) = 0; virtual int listenToStateChanges(int receiveSocket, StateChangedCb_t statechangehandle) = 0; std::mutex mStdoutMutex; std::promise mClientIdPromise; std::unique_ptr mListenerThread; std::mutex mRegistrationMutex; std::optional mLastFailedRegistration; bool mRegisterRequired = true; void markServerReadyOrRegistrationFailed(bool readyOrFailed); protected: std::promise mPromiseServerReadyOrRegistrationFailed; std::atomic_flag mPromiseServerReadyOrRegistrationFailedAttended = ATOMIC_FLAG_INIT; std::atomic_bool mStopListener = false; std::atomic_bool mUpdating = false; }; #ifndef _WIN32 class MegaCmdShellCommunicationsPosix : public MegaCmdShellCommunications { public: int executeCommand(std::string command, std::string (*readresponse)(const char *) = NULL, OUTSTREAMTYPE &output = COUT, OUTSTREAMTYPE &errorOutput = CERR, bool interactiveshell = true, std::wstring = L"") override; private: bool isSocketValid(SOCKET socket); SOCKET createSocket(int number = 0, bool initializeserver = true); std::atomic_int mStateListenerSocket = -1; std::optional registerForStateChangesImpl(bool interactive, bool initiateServer = true) override; int listenToStateChanges(int receiveSocket, StateChangedCb_t statechangehandle) override; void triggerListenerThreadShutdown() override; }; #endif }//end namespace #endif // MEGACMDSHELLCOMMUNICATIONS_H MEGAcmd-2.5.2_Linux/src/megacmdshell/megacmdshellcommunicationsnamedpipes.cpp000066400000000000000000000631561516543156300275040ustar00rootroot00000000000000/** * @file src/megacmdshellcommunicationsnamedpipes.cpp * @brief MEGAcmd: Communications module to connect to server using NamedPipes * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. * * This file is also distributed under the terms of the GNU General * Public License, see http://www.gnu.org/copyleft/gpl.txt for details. */ #ifdef _WIN32 #include "megacmdshellcommunicationsnamedpipes.h" #include "../megacmdcommonutils.h" #include #include #include #include //SHGetFolderPath #include //PathAppend #include //GetSecurityInfo #include //ConvertSidToStringSid #include namespace megacmd { bool MegaCmdShellCommunicationsNamedPipes::confirmResponse; //TODO: do all this only in parent class bool MegaCmdShellCommunicationsNamedPipes::namedPipeValid(HANDLE namedPipe) { return namedPipe != INVALID_HANDLE_VALUE; } void MegaCmdShellCommunicationsNamedPipes::closeNamedPipe(HANDLE namedPipe){ CloseHandle(namedPipe); } using namespace std; BOOL GetLogonSID (PSID *ppsid) { BOOL bSuccess = FALSE; DWORD dwIndex; DWORD dwLength = 0; PTOKEN_GROUPS ptg = NULL; HANDLE hToken = NULL; DWORD dwErrorCode = 0; // Open the access token associated with the calling process. if (OpenProcessToken( GetCurrentProcess(), TOKEN_QUERY, &hToken ) == FALSE) { dwErrorCode = GetLastError(); wprintf(L"OpenProcessToken failed. GetLastError returned: %d\n", dwErrorCode); return HRESULT_FROM_WIN32(dwErrorCode); } // Verify the parameter passed in is not NULL. if (NULL == ppsid) goto Cleanup; // Get required buffer size and allocate the TOKEN_GROUPS buffer. if (!GetTokenInformation( hToken, // handle to the access token TokenGroups, // get information about the token's groups (LPVOID) ptg, // pointer to TOKEN_GROUPS buffer 0, // size of buffer &dwLength // receives required buffer size )) { if (GetLastError() != ERROR_INSUFFICIENT_BUFFER) goto Cleanup; ptg = (PTOKEN_GROUPS)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwLength); if (ptg == NULL) goto Cleanup; } // Get the token group information from the access token. if (!GetTokenInformation( hToken, // handle to the access token TokenGroups, // get information about the token's groups (LPVOID) ptg, // pointer to TOKEN_GROUPS buffer dwLength, // size of buffer &dwLength // receives required buffer size )) { goto Cleanup; } // Loop through the groups to find the logon SID. for (dwIndex = 0; dwIndex < ptg->GroupCount; dwIndex++) if ((ptg->Groups[dwIndex].Attributes & SE_GROUP_LOGON_ID) == SE_GROUP_LOGON_ID) { // Found the logon SID; make a copy of it. dwLength = GetLengthSid(ptg->Groups[dwIndex].Sid); *ppsid = (PSID) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwLength); if (*ppsid == NULL) goto Cleanup; if (!CopySid(dwLength, *ppsid, ptg->Groups[dwIndex].Sid)) { HeapFree(GetProcessHeap(), 0, (LPVOID)*ppsid); goto Cleanup; } break; } bSuccess = TRUE; Cleanup: // Free the buffer for the token groups. if (ptg != NULL) HeapFree(GetProcessHeap(), 0, (LPVOID)ptg); return bSuccess; } bool MegaCmdShellCommunicationsNamedPipes::isFileOwnerCurrentUser(HANDLE hFile) { DWORD dwRtnCode = 0; PSID pSidOwner = NULL; BOOL bRtnBool = TRUE; LPWSTR AcctName = NULL; LPTSTR DomainName = NULL; DWORD dwAcctName = 0, dwDomainName = 0; SID_NAME_USE eUse = SidTypeUnknown; PSECURITY_DESCRIPTOR pSD = NULL; // Get the owner SID of the file. dwRtnCode = GetSecurityInfo( hFile, SE_FILE_OBJECT, OWNER_SECURITY_INFORMATION, &pSidOwner, NULL, NULL, NULL, &pSD); // Check GetLastError for GetSecurityInfo error condition. if (dwRtnCode != ERROR_SUCCESS) { cerr << "GetSecurityInfo error = " << ERRNO << endl; return false; } // First call to LookupAccountSid to get the buffer sizes. bRtnBool = LookupAccountSidW( NULL, // local computer pSidOwner, AcctName, (LPDWORD)&dwAcctName, DomainName, (LPDWORD)&dwDomainName, &eUse); // Reallocate memory for the buffers. AcctName = (LPWSTR)GlobalAlloc(GMEM_FIXED, dwAcctName * sizeof(wchar_t)); if (AcctName == NULL) { cerr << "GlobalAlloc error = " << ERRNO << endl; return false; } DomainName = (LPTSTR)GlobalAlloc(GMEM_FIXED,dwDomainName * sizeof(wchar_t)); if (DomainName == NULL) { cerr << "GlobalAlloc error = " << ERRNO << endl; return false; } // Second call to LookupAccountSid to get the account name. bRtnBool = LookupAccountSidW( NULL, // name of local or remote computer pSidOwner, // security identifier AcctName, // account name buffer (LPDWORD)&dwAcctName, // size of account name buffer DomainName, // domain name (LPDWORD)&dwDomainName, // size of domain name buffer &eUse); // SID type if (bRtnBool == FALSE) { if (ERRNO == ERROR_NONE_MAPPED) { cerr << "Account owner not found for specified SID." << endl; } else { cerr << "Error in LookupAccountSid: " << ERRNO << endl; } return false; } wchar_t username[UNLEN+1]; DWORD username_len = UNLEN+1; GetUserNameW(username, &username_len); LPWSTR stringSIDOwner; if (ConvertSidToStringSidW(pSidOwner, &stringSIDOwner)) { if (!wcscmp(username, AcctName) || ( #ifndef __MINGW32__ IsUserAnAdmin() && #endif !wcscmp(stringSIDOwner, L"S-1-5-32-544"))) // owner == user or owner == administrators and current process running as admin { LocalFree(stringSIDOwner); return true; } else { std::wcerr << L"Unmatched owner - current user -> " << AcctName << L" - " << username; #ifndef __MINGW32__ std::wcerr << L" IsUserAdmin=" << IsUserAnAdmin(); #endif std::wcerr << L" SIDOwner=" << stringSIDOwner << endl; LocalFree(stringSIDOwner); return false; } } return false; } HANDLE MegaCmdShellCommunicationsNamedPipes::doOpenPipe(wstring nameOfPipe) { wstring serverPipeName = getNamedPipeName(); if (nameOfPipe != serverPipeName) { if (!WaitNamedPipeW(nameOfPipe.c_str(),16000)) //TODO: use a real time and report timeout error. { OUTSTREAM << "ERROR WaitNamedPipe: " << nameOfPipe << " . errno: " << ERRNO << endl; } } HANDLE theNamedPipe = CreateFileW( nameOfPipe.c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,/*FILE_FLAG_WRITE_THROUGH,*/ NULL ); if (namedPipeValid(theNamedPipe)) { if (!isFileOwnerCurrentUser(theNamedPipe)) { OUTSTREAM << "ERROR: Pipe owner does not match current user!" << endl; return INVALID_HANDLE_VALUE; } } return theNamedPipe; } HANDLE MegaCmdShellCommunicationsNamedPipes::createNamedPipe(int number, bool initializeserver) { wstring nameOfPipe = getNamedPipeName(); if (number) { #ifdef __MINGW32__ wostringstream wos; wos << number; nameOfPipe += wos.str(); #else nameOfPipe += std::to_wstring(number); #endif } // Open the named pipe HANDLE theNamedPipe = doOpenPipe(nameOfPipe); if (!namedPipeValid(theNamedPipe)) { if (!number && initializeserver) { if (ERRNO == ERROR_PIPE_BUSY) { int attempts = 10; while (--attempts && !namedPipeValid(theNamedPipe)) { theNamedPipe = doOpenPipe(nameOfPipe); Sleep(200*(10-attempts)); } if (!namedPipeValid(theNamedPipe)) { if (ERRNO == ERROR_PIPE_BUSY) { OUTSTREAM << "Failed to access server: " << ERRNO << endl; } else { OUTSTREAM << "Failed to access server. Server busy." << endl; } } } else if (ERRNO != ERROR_FILE_NOT_FOUND) { OUTSTREAM << "Unexpected failure to access server: " << ERRNO << endl; } else { //launch server cerr << "MEGAcmd Server not running. Initiating in the background..." << endl; STARTUPINFO si; PROCESS_INFORMATION pi; ZeroMemory( &si, sizeof(si) ); ZeroMemory( &pi, sizeof(pi) ); #ifndef NDEBUG LPCWSTR t = TEXT(".\\MEGAcmdServer.exe"); if (true) { #else wchar_t foldercontainingexec[MAX_PATH+1]; bool okgetcontaningfolder = false; if (S_OK != SHGetFolderPathW(NULL,CSIDL_LOCAL_APPDATA,NULL,0,(LPWSTR)foldercontainingexec)) { if(S_OK != SHGetFolderPathW(NULL,CSIDL_COMMON_APPDATA,NULL,0,(LPWSTR)foldercontainingexec)) { cerr << " Could not get LOCAL nor COMMON App Folder : " << ERRNO << endl; } else { okgetcontaningfolder = true; } } else { okgetcontaningfolder = true; } if (okgetcontaningfolder) { wstring fullpathtoexec(foldercontainingexec); fullpathtoexec+=L"\\MEGAcmd\\MEGAcmdServer.exe"; LPCWSTR t = fullpathtoexec.c_str(); #endif LPWSTR t2 = (LPWSTR) t; si.cb = sizeof(si); // si.wShowWindow = SW_SHOWNOACTIVATE | SW_SHOWMINIMIZED; si.wShowWindow = SW_HIDE; si.dwFlags = STARTF_USESHOWWINDOW; if (!CreateProcess( t,t2,NULL,NULL,TRUE, CREATE_NEW_CONSOLE, NULL,NULL, &si,&pi) ) { COUT << "Unable to execute: " << t << " errno = : " << ERRNO << endl; } // Sleep(2000); // Give it a initial while to start. } //try again: int attempts = 10; int waitimet = 1500; theNamedPipe = INVALID_HANDLE_VALUE; while ( attempts && !namedPipeValid(theNamedPipe)) { Sleep(waitimet/1000); waitimet=waitimet*2; attempts--; theNamedPipe = doOpenPipe(nameOfPipe); } if (attempts < 0) { cerr << "Unable to connect to " << (number?("response namedPipe N "+number):"MEGAcmd server") << ": error=" << ERRNO << endl; cerr << "Please ensure MEGAcmdServer is running" << endl; return INVALID_HANDLE_VALUE; } else { mServerInitiatedFromShell = true; setForRegisterAgain(true); } } } else if (initializeserver) // initializeserver=false when closing server. we dont need to state the error { OUTSTREAM << "ERROR opening namedPipe: " << nameOfPipe << ": " << ERRNO << endl; } return theNamedPipe; } return theNamedPipe; } MegaCmdShellCommunicationsNamedPipes::MegaCmdShellCommunicationsNamedPipes() { #ifdef _WIN32 setlocale(LC_ALL, "en-US"); #endif redirectedstdout = false; } /** * @brief Determines it outputing to console (true) or pipe/file (false) * @return */ bool outputtobinaryorconsole(void) { HANDLE stdoutHandle = GetStdHandle(STD_OUTPUT_HANDLE); if (stdoutHandle == INVALID_HANDLE_VALUE) { return false; } DWORD fileType = GetFileType(stdoutHandle); if ((fileType == FILE_TYPE_UNKNOWN) && (GetLastError() != ERROR_SUCCESS)) { return false; } fileType &= ~(FILE_TYPE_REMOTE); if (fileType == FILE_TYPE_CHAR) { DWORD consoleMode; BOOL result = GetConsoleMode(stdoutHandle, &consoleMode); if ((result == FALSE) && (GetLastError() == ERROR_INVALID_HANDLE)) { return false; } else { return true; } } else { return true; } } int MegaCmdShellCommunicationsNamedPipes::executeCommand(string command, std::string (*readresponse)(const char *), OUTSTREAMTYPE &output, OUTSTREAMTYPE &errorOutput, bool interactiveshell, wstring wcommand) { HANDLE theNamedPipe = createNamedPipe(0,command.compare(0,4,"exit") && command.compare(0,4,"quit") && command.compare(0,7,"sendack")); if (!namedPipeValid(theNamedPipe)) { cerr << "MegaCmdShellCommunicationsNamedPipes::executeCommand ERROR, named pipe not valid: " << theNamedPipe << " errno = " << ERRNO << endl; return -1; } ScopeGuard g([this, &theNamedPipe]() { closeNamedPipe(theNamedPipe); }); bool isCat = command.rfind("cat", 0) == 0 || wcommand.rfind(L"cat", 0) == 0; if (interactiveshell) { command="X"+command; } // //unescape \uXXXX sequences // command=unescapeutf16escapedseqs(command.c_str()); //get local wide chars string (utf8 -> utf16) if (!wcommand.size()) { stringtolocalw(command.c_str(),&wcommand); } else if (interactiveshell) { wcommand=L"X"+wcommand; } DWORD n; if (!WriteFile(theNamedPipe,(char *)wcommand.data(),DWORD(wcslen(wcommand.c_str())*sizeof(wchar_t)), &n, NULL)) { cerr << "ERROR writing command to namedPipe: " << ERRNO << endl; return -1; } int receiveNamedPipeNum = -1 ; if (!ReadFile(theNamedPipe, (char *)&receiveNamedPipeNum, sizeof(receiveNamedPipeNum), &n, NULL) ) { cerr << "ERROR reading output namedPipe" << endl; return -1; } HANDLE newNamedPipe = createNamedPipe(receiveNamedPipeNum); if (!namedPipeValid(newNamedPipe)) { cerr << "MegaCmdShellCommunicationsNamedPipes::executeCommand ERROR, receive named pipe not valid: " << receiveNamedPipeNum << " pipe= " << newNamedPipe << " errno = " << ERRNO << endl; return -1; } ScopeGuard g2([this, &newNamedPipe]() { closeNamedPipe(newNamedPipe); }); int outcode = -1; if (!ReadFile(newNamedPipe, (char *)&outcode, sizeof(outcode),&n, NULL)) { cerr << "ERROR reading output code: " << ERRNO << endl; return -1; } bool binaryoutput = isCat && redirectedstdout; bool shouldPrintAdditionalLine = false; while (outcode == MCMD_REQCONFIRM || outcode == MCMD_REQSTRING || outcode == MCMD_PARTIALOUT || outcode == MCMD_PARTIALERR) { if (outcode == MCMD_PARTIALOUT || outcode == MCMD_PARTIALERR) { bool useErrorStream = outcode == MCMD_PARTIALERR; auto &partialOutputStream = useErrorStream ? errorOutput : output; size_t partialoutsize; if (!ReadFile(newNamedPipe, (char *)&partialoutsize, sizeof(partialoutsize),&n, NULL)) { std::cerr << "Error reading size of partial output: " << ERRNO << std::endl; return -1; } if (partialoutsize > 0) { std::unique_ptr outputModeGuard; if (binaryoutput) { outputModeGuard.reset(new WindowsBinaryStdoutGuard()); } else { outputModeGuard.reset(new WindowsUtf8StdoutGuard()); } size_t BUFFERSIZE = 10024; char buffer[10025]; do{ BOOL readok; readok = ReadFile(newNamedPipe, buffer, DWORD(std::min(BUFFERSIZE,partialoutsize)),&n,NULL); if (readok) { if (binaryoutput && !useErrorStream) { Instance::Get().enableInterceptors(false); std::cout << string(buffer,n) << flush; Instance::Get().enableInterceptors(true); } else { buffer[n]='\0'; wstring wbuffer; stringtolocalw((const char*)&buffer,&wbuffer); partialOutputStream << wbuffer << flush; } partialoutsize-=n; } } while(n != 0 && partialoutsize && n !=SOCKET_ERROR); if (isCat && !binaryoutput && interactiveshell && !useErrorStream) { shouldPrintAdditionalLine = true; } } else { cerr << "Invalid size of partial output: " << partialoutsize << endl; return -1; } } else { DWORD BUFFERSIZE = 1024; string confirmQuestion; char bufferQuestion[1025]; memset(bufferQuestion,'\0',1025); BOOL readok; do{ readok = ReadFile(newNamedPipe, bufferQuestion, BUFFERSIZE, &n, NULL); confirmQuestion.append(bufferQuestion); } while(n == BUFFERSIZE && readok); if (!readok) { cerr << "ERROR reading confirm question: " << ERRNO << endl; } if (outcode == MCMD_REQCONFIRM) { int response = MCMDCONFIRM_NO; if (readresponse != NULL) { response = readconfirmationloop(confirmQuestion.c_str(), readresponse); } if (!WriteFile(newNamedPipe, (const char *) &response, sizeof(response), &n, NULL)) { cerr << "ERROR writing confirm response to namedPipe: " << ERRNO << endl; return -1; } } else // MCMD_REQSTRING { string response = "FAILED"; if (readresponse != NULL) { response = readresponse(confirmQuestion.c_str()); } wstring wresponse; stringtolocalw(response.c_str(),&wresponse); if (!WriteFile(newNamedPipe, (char *) wresponse.data(), DWORD(wcslen(wresponse.c_str())*sizeof(wchar_t)), &n, NULL)) { cerr << "ERROR writing confirm response to namedPipe: " << ERRNO << endl; return -1; } } } if (!ReadFile(newNamedPipe, (char *)&outcode, sizeof(outcode),&n, NULL)) { cerr << "ERROR reading output code: " << ERRNO << endl; return -1; } } DWORD BUFFERSIZE = 1024; char buffer[1025]; BOOL readok; do{ readok = ReadFile(newNamedPipe, buffer, BUFFERSIZE,&n,NULL); if (readok) { buffer[n]='\0'; wstring wbuffer; stringtolocalw((const char*)&buffer,&wbuffer); int oldmode; WindowsUtf8StdoutGuard utf8Guard; output << wbuffer << flush; } if (readok && n == BUFFERSIZE) { DWORD total_available_bytes; if (FALSE == PeekNamedPipe(newNamedPipe,0,0,0,&total_available_bytes,0)) { break; } if (total_available_bytes == 0) { break; } } } while(n == BUFFERSIZE && readok); if (!readok) { cerr << "ERROR reading output: " << ERRNO << endl; return -1; } if (shouldPrintAdditionalLine) { WindowsUtf8StdoutGuard utf8Guard; output << std::endl; } return outcode; } int MegaCmdShellCommunicationsNamedPipes::listenToStateChanges(int receiveNamedPipeNum, StateChangedCb_t statechangehandle) { { std::lock_guard g(mStateListenerNamedPipeMutex); mStateListenerNamedPipeHandle = createNamedPipe(receiveNamedPipeNum); if (!namedPipeValid(mStateListenerNamedPipeHandle)) { return -1; } assert(!mStateListenerNamedPipeResetPromise); mStateListenerNamedPipeResetPromise.reset(new std::promise()); } ScopeGuard g([this]() { if (namedPipeValid(mStateListenerNamedPipeHandle)) { closeNamedPipe(mStateListenerNamedPipeHandle); std::lock_guard g(mStateListenerNamedPipeMutex); mStateListenerNamedPipeHandle = INVALID_HANDLE_VALUE; auto promise = std::move(mStateListenerNamedPipeResetPromise); promise->set_value(); } }); int timeout_notified_server_might_be_down = 0; while (!mStopListener) { string newstate; DWORD BUFFERSIZE = 1024; char buffer[1025]; DWORD n; bool readok; do{ readok = ReadFile(mStateListenerNamedPipeHandle, buffer, BUFFERSIZE, &n, NULL); if (readok) { buffer[n]='\0'; newstate += buffer; } } while(n == BUFFERSIZE && readok); if (!readok) { if ((mStopListener || mUpdating) && (ERRNO == ERROR_BROKEN_PIPE || ERRNO == ERROR_OPERATION_ABORTED)) { // expected errors after shutdown: return 0; } cerr << "ERROR reading output (state change): " << ERRNO << endl; return -1; } if (!n) // server closed the connection { return -1; } if (statechangehandle) { statechangehandle(newstate, *this); } } return 0; } std::optional MegaCmdShellCommunicationsNamedPipes::registerForStateChangesImpl(bool interactive, bool initiateServer) { HANDLE theNamedPipe = createNamedPipe(0, initiateServer); if (!namedPipeValid(theNamedPipe)) { return {}; } ScopeGuard g([this, &theNamedPipe]() { closeNamedPipe(theNamedPipe); }); wstring wcommand=interactive?L"Xregisterstatelistener":L"registerstatelistener"; DWORD n; if (!WriteFile(theNamedPipe,(char *)wcommand.data(),DWORD(wcslen(wcommand.c_str())*sizeof(wchar_t)), &n, NULL)) { cerr << "ERROR writing command to namedPipe: " << ERRNO << endl; return {}; } int receiveNamedPipeNum = -1; if (!ReadFile(theNamedPipe, (char *)&receiveNamedPipeNum, sizeof(receiveNamedPipeNum), &n, NULL) ) { cerr << "ERROR reading output namedPipe" << endl; return {}; } return receiveNamedPipeNum; } void MegaCmdShellCommunicationsNamedPipes::setResponseConfirmation(bool confirmation) { confirmResponse = confirmation; } void MegaCmdShellCommunicationsNamedPipes::triggerListenerThreadShutdown() { std::unique_lock g(mStateListenerNamedPipeMutex); // this would cause the wake of the listener thread: if (namedPipeValid(mStateListenerNamedPipeHandle)) { std::optional> fut; if (mStateListenerNamedPipeResetPromise) { fut = mStateListenerNamedPipeResetPromise->get_future(); } CancelIoEx(mStateListenerNamedPipeHandle, NULL); // if we were extremely unlucky and above cancel occurred when still not in ReadFile, below wait would fail. If that's the case, // a second attempt should work g.unlock(); if (fut && fut->wait_for(std::chrono::milliseconds(200)) == std::future_status::ready) { return; } g.lock(); if (namedPipeValid(mStateListenerNamedPipeHandle)) { CancelIoEx(mStateListenerNamedPipeHandle, NULL); } }; } MegaCmdShellCommunicationsNamedPipes::~MegaCmdShellCommunicationsNamedPipes() { } } //end namespace #endif MEGAcmd-2.5.2_Linux/src/megacmdshell/megacmdshellcommunicationsnamedpipes.h000066400000000000000000000051361516543156300271430ustar00rootroot00000000000000/** * @file src/megacmdshellcommunicationsnamedpipes.h * @brief MEGAcmd: Communications module to connect to server using NamedPipes * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. * * This file is also distributed under the terms of the GNU General * Public License, see http://www.gnu.org/copyleft/gpl.txt for details. */ #ifndef MEGACMDSHELLCOMMUNICATIONSNAMEDPIPES_H #define MEGACMDSHELLCOMMUNICATIONSNAMEDPIPES_H #ifdef _WIN32 #include "megacmdshellcommunications.h" #include #include //getusername #define ERRNO WSAGetLastError() #include #include #include #include #include //PathAppend namespace megacmd { typedef struct structListenStateChangesNamedPipe{ int receiveNamedPipeNum; void (*statechangehandle)(std::string); } sListenStateChangesNamedPipe; class MegaCmdShellCommunicationsNamedPipes : public MegaCmdShellCommunications { private: bool redirectedstdout; public: MegaCmdShellCommunicationsNamedPipes(); MegaCmdShellCommunicationsNamedPipes(bool _redirectedstdout):redirectedstdout(_redirectedstdout){}; ~MegaCmdShellCommunicationsNamedPipes(); virtual int executeCommand(std::string command, std::string (*readresponse)(const char *) = NULL, OUTSTREAMTYPE &output = COUT, OUTSTREAMTYPE &errorOutput = CERR, bool interactiveshell = true, std::wstring = L"") override; void setResponseConfirmation(bool confirmation); private: bool namedPipeValid(HANDLE namedPipe); void closeNamedPipe(HANDLE namedPipe); std::optional registerForStateChangesImpl(bool interactive, bool initiateServer = true) override; virtual int listenToStateChanges(int receiveNamedPipeNum, StateChangedCb_t statechangehandle) override; void triggerListenerThreadShutdown() override; static bool confirmResponse; std::mutex mStateListenerNamedPipeMutex; HANDLE mStateListenerNamedPipeHandle = INVALID_HANDLE_VALUE; std::unique_ptr> mStateListenerNamedPipeResetPromise; HANDLE doOpenPipe(std::wstring nameOfPipe); HANDLE createNamedPipe(int number = 0,bool initializeserver = true); static bool isFileOwnerCurrentUser(HANDLE hFile); }; }//end namespace #endif #endif // MEGACMDSHELLCOMMUNICATIONS_H MEGAcmd-2.5.2_Linux/src/megacmdutils.cpp000066400000000000000000000726161516543156300200720ustar00rootroot00000000000000/** * @file src/megacmdutils.cpp * @brief MEGAcmd: Auxiliary methods * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdutils.h" #include "mega/types.h" #ifdef USE_PCRE #include #elif __cplusplus >= 201103L && !defined(__MINGW32__) #include #endif #ifdef _WIN32 #else #include // console size #endif #include #include #include using namespace mega; namespace megacmd { string getUserInSharedNode(MegaNode *n, MegaApi *api) { MegaShareList * msl = api->getInSharesList(); for (int i = 0; i < msl->size(); i++) { MegaShare *share = msl->get(i); if (share->getNodeHandle() == n->getHandle()) { string suser = share->getUser(); delete ( msl ); return suser; } } delete ( msl ); return ""; } const char* getAccessLevelStr(int level) { switch (level) { case MegaShare::ACCESS_UNKNOWN: return "unknown access"; break; case MegaShare::ACCESS_READ: return "read access"; break; case MegaShare::ACCESS_READWRITE: return "read/write access"; break; case MegaShare::ACCESS_FULL: return "full access"; break; case MegaShare::ACCESS_OWNER: return "owner access"; break; } return "undefined"; } const char* getSyncPathStateStr(int state) { static std::vector svalue { #define SOME_GENERATOR_MACRO(_, ShortName, __) ShortName, GENERATE_FROM_SYNC_PATH_STATE(SOME_GENERATOR_MACRO) #undef SOME_GENERATOR_MACRO }; if (state < static_cast(svalue.size())) { return svalue[state]; } return "undefined"; } const char * syncRunStateStr(unsigned e) { static std::vector svalue { #define SOME_GENERATOR_MACRO(_, ShortName, __) ShortName, GENERATE_FROM_SYNC_RUN_STATE(SOME_GENERATOR_MACRO) #undef SOME_GENERATOR_MACRO }; if (e < svalue.size()) { return svalue[e]; } return "Unknown"; } string visibilityToString(int visibility) { if (visibility == MegaUser::VISIBILITY_VISIBLE) { return "Visible"; } if (visibility == MegaUser::VISIBILITY_HIDDEN) { return "Hidden"; } if (visibility == MegaUser::VISIBILITY_UNKNOWN) { return "Unknown visibility"; } if (visibility == MegaUser::VISIBILITY_INACTIVE) { return "Inactive"; } if (visibility == MegaUser::VISIBILITY_BLOCKED) { return "Blocked"; } return "Undefined visibility"; } const char * getMCMDErrorString(int errorCode) { switch(errorCode) { case MCMD_OK: return "Everything OK"; case MCMD_EARGS: return "Wrong arguments"; case MCMD_INVALIDEMAIL: return "Invalid email"; case MCMD_NOTFOUND: return "Resource not found"; case MCMD_INVALIDSTATE: return "Invalid state"; case MCMD_INVALIDTYPE: return "Invalid type"; case MCMD_NOTPERMITTED: return "Operation not allowed"; case MCMD_NOTLOGGEDIN: return "Needs logging in"; case MCMD_NOFETCH: return "Nodes not fetched"; case MCMD_EUNEXPECTED: return "Unexpected failure"; case MCMD_REQCONFIRM: return "Confirmation required"; default: return "UNKNOWN"; } } const char * getErrorCodeStr(MegaError *e) { if (e) { return MegaError::getErrorString(e->getErrorCode()); } return "NullError"; } const char * getMountResultStr(int mountResult) { #ifdef WIN32 if (mountResult == mega::MegaMount::BACKEND_UNAVAILABLE) { return "WinFSP is not installed. It needs to be installed for the operation to succeed. You can get it " "from https://github.com/winfsp/winfsp/releases/download/v2.1/winfsp-2.1.25156.msi"; } #endif return MegaMount::getResultDescription(mountResult); } const char * getLogLevelStr(int loglevel) { switch (loglevel) { case MegaApi::LOG_LEVEL_FATAL: return "FATAL"; break; case MegaApi::LOG_LEVEL_ERROR: return "ERROR"; break; case MegaApi::LOG_LEVEL_WARNING: return "WARNING"; break; case MegaApi::LOG_LEVEL_INFO: return "INFO"; break; case MegaApi::LOG_LEVEL_DEBUG: return "DEBUG"; break; case MegaApi::LOG_LEVEL_MAX: return "VERBOSE"; break; default: return "UNKNOWN"; break; } } std::optional getLogLevelNum(const char* level) { if (!strcmp(level, "FATAL") || !strcmp(level, "fatal")) { return MegaApi:: LOG_LEVEL_FATAL; } if (!strcmp(level, "ERROR") || !strcmp(level, "error")) { return MegaApi:: LOG_LEVEL_ERROR; } if (!strcmp(level, "WARNING") || !strcmp(level, "warning")) { return MegaApi:: LOG_LEVEL_WARNING; } if (!strcmp(level, "INFO") || !strcmp(level, "info")) { return MegaApi:: LOG_LEVEL_INFO; } if (!strcmp(level, "DEBUG") || !strcmp(level, "debug")) { return MegaApi:: LOG_LEVEL_DEBUG; } if (!strcmp(level, "VERBOSE") || !strcmp(level, "verbose")) { return MegaApi:: LOG_LEVEL_MAX; } int i = -1; std::istringstream is(level); if (!(is >> i)) { return {}; } return std::clamp(i, (int) MegaApi::LOG_LEVEL_FATAL, (int) MegaApi::LOG_LEVEL_MAX); } const char * getShareLevelStr(int sharelevel) { switch (sharelevel) { case MegaShare::ACCESS_UNKNOWN: return "UNKNOWN"; break; case MegaShare::ACCESS_READ: return "READ"; break; case MegaShare::ACCESS_READWRITE: return "READWRITE"; break; case MegaShare::ACCESS_FULL: return "FULL"; break; case MegaShare::ACCESS_OWNER: return "OWNER"; break; default: return "UNEXPECTED"; break; } } int getShareLevelNum(const char* level) { if (!strcmp(level, "UNKNOWN")) { return MegaShare::ACCESS_UNKNOWN; } if (!strcmp(level, "READ")) { return MegaShare::ACCESS_READ; } if (!strcmp(level, "READWRITE")) { return MegaShare::ACCESS_READWRITE; } if (!strcmp(level, "FULL")) { return MegaShare::ACCESS_FULL; } if (!strcmp(level, "OWNER")) { return MegaShare::ACCESS_OWNER; } if (!strcmp(level, "UNEXPECTED")) { return -9; } return atoi(level); } const char * getTransferStateStr(int transferState) { switch (transferState) { case MegaTransfer::STATE_QUEUED: return "QUEUED"; break; case MegaTransfer::STATE_ACTIVE: return "ACTIVE"; break; case MegaTransfer::STATE_PAUSED: return "PAUSED"; break; case MegaTransfer::STATE_RETRYING: return "RETRYING"; break; case MegaTransfer::STATE_COMPLETING: return "COMPLETING"; break; case MegaTransfer::STATE_COMPLETED: return "COMPLETED"; break; case MegaTransfer::STATE_CANCELLED: return "CANCELLED"; break; case MegaTransfer::STATE_FAILED: return "FAILED"; break; default: return ""; break; } } string backupSatetStr(int backupstate) { if (backupstate == MegaScheduledCopy::SCHEDULED_COPY_FAILED) { return "FAILED"; } if (backupstate == MegaScheduledCopy::SCHEDULED_COPY_CANCELED) { return "CANCELED"; } if (backupstate == MegaScheduledCopy::SCHEDULED_COPY_INITIALSCAN) { return "INITIALSCAN"; } if (backupstate == MegaScheduledCopy::SCHEDULED_COPY_ACTIVE) { return "ACTIVE"; } if (backupstate == MegaScheduledCopy::SCHEDULED_COPY_ONGOING) { return "ONGOING"; } if (backupstate == MegaScheduledCopy::SCHEDULED_COPY_SKIPPING) { return "SKIPPING"; } if (backupstate == MegaScheduledCopy::SCHEDULED_COPY_REMOVING_EXCEEDING) { return "EXCEEDREMOVAL"; } return "UNDEFINED"; } const char * getProxyTypeStr(int proxyType) { switch (proxyType) { case MegaProxy::PROXY_AUTO: return "PROXY_AUTO"; break; case MegaProxy::PROXY_NONE: return "PROXY_NONE"; break; case MegaProxy::PROXY_CUSTOM: return "PROXY_CUSTOM"; break; default: return "INVALID"; break; } } int getLinkType(string link) { if (link.find("/folder/") != string::npos) { return MegaNode::TYPE_FOLDER; } if (link.find("/file/") != string::npos) { return MegaNode::TYPE_FILE; } size_t posHash = link.find_first_of("#"); if (( posHash == string::npos ) || !( posHash + 1 < link.length())) { return MegaNode::TYPE_UNKNOWN; } if (link.at(posHash + 1) == 'F') { return MegaNode::TYPE_FOLDER; } return MegaNode::TYPE_FILE; } const char *fillStructWithSYYmdHMS(string &stime, struct tm &dt) { memset(&dt, 0, sizeof(struct tm)); #ifdef _WIN32 if (stime.size() != 14) { return NULL; } for(int i=0;i<14;i++) { if ( (stime.at(i) < '0') || (stime.at(i) > '9') ) { return NULL; } } dt.tm_year = atoi(stime.substr(0,4).c_str()) - 1900; dt.tm_mon = atoi(stime.substr(4,2).c_str()) - 1; dt.tm_mday = atoi(stime.substr(6,2).c_str()); dt.tm_hour = atoi(stime.substr(8,2).c_str()); dt.tm_min = atoi(stime.substr(10,2).c_str()); dt.tm_sec = atoi(stime.substr(12,2).c_str()); #else strptime(stime.c_str(), "%Y%m%d%H%M%S", &dt); #endif dt.tm_isdst = -1; //let mktime interprete if time has Daylight Saving Time flag correction //TODO: would this work cross platformly? At least I believe it'll be consistent with localtime. Otherwise, we'd need to save that return stime.c_str(); } const char *getFormatStrFromId(int strftimeformatid) { switch (strftimeformatid) { case MCMDTIME_RFC2822: return "%a, %d %b %Y %T %z"; break; case MCMDTIME_ISO6081: return "%F"; break; case MCMDTIME_ISO6081WITHTIME: return "%FT%T"; break; case MCMDTIME_SHORT: return "%d%b%Y %T"; break; case MCMDTIME_SHORTWITHUTCDEVIATION: return "%d%b%Y %T %z"; break; default: return "%a, %d %b %Y %T %z"; break; } } const char *getTimeFormatNameFromId(int strftimeformatid) { switch (strftimeformatid) { case MCMDTIME_RFC2822: return "RFC2822"; break; case MCMDTIME_ISO6081: return "ISO6081"; break; case MCMDTIME_ISO6081WITHTIME: return "ISO6081_WITH_TIME"; break; case MCMDTIME_SHORT: return "SHORT"; break; case MCMDTIME_SHORTWITHUTCDEVIATION: return "SHORT_UTC"; break; default: return "INVALID"; break; } } string secondsToText(m_time_t seconds, bool humanreadable) { ostringstream os; os.precision(2); if (humanreadable) { m_time_t reducedSize = m_time_t( seconds > 3600 * 2 ? seconds / 3600.0 : ( seconds > 60 * 2 ? seconds / 60.0 : seconds) ); os << std::fixed << reducedSize; os << ( seconds > 3600 * 2 ? " hours" : ( seconds > 60 * 2 ? " minutes" : " seconds" )); } else { os << seconds; } return os.str(); } const char *getTimeFormatFromSTR(string formatName) { string lformatName = formatName; transform(lformatName.begin(), lformatName.end(), lformatName.begin(), [](char c) { return (char)::tolower(c); }); if (lformatName == "rfc2822") { return getFormatStrFromId(MCMDTIME_RFC2822); } else if (lformatName == "iso6081") { return getFormatStrFromId(MCMDTIME_ISO6081); } else if (lformatName == "iso6081_with_time") { return getFormatStrFromId(MCMDTIME_ISO6081WITHTIME); } else if (lformatName == "short") { return getFormatStrFromId(MCMDTIME_SHORT); } else if (lformatName == "short_utc") { return getFormatStrFromId(MCMDTIME_SHORTWITHUTCDEVIATION); } else { return formatName.c_str(); } } std::string getReadableTime(const m_time_t rawtime, const char* strftimeformat) { struct tm dt; char buffer [40]; m_localtime(rawtime, &dt); strftime(buffer, sizeof( buffer ), strftimeformat, &dt); // Following RFC 2822 (as in date -R) return std::string(buffer); } std::string getReadableTime(const m_time_t rawtime, int strftimeformatid) { return getReadableTime(rawtime, getFormatStrFromId(strftimeformatid)); } std::string getReadableShortTime(const m_time_t rawtime, bool showUTCDeviation) { if (rawtime != -1) { return getReadableTime(rawtime, showUTCDeviation?MCMDTIME_SHORTWITHUTCDEVIATION:MCMDTIME_SHORT); } else { char buffer [40]; sprintf(buffer,"INVALID_TIME %lld", (long long)rawtime); return std::string(buffer); } } std::string getReadablePeriod(const m_time_t rawtime) { long long rest = rawtime; long long years = rest/31557600; //365.25 days rest = rest%31557600; long long months = rest/2629800; // average month 365.25/12 days rest = rest%2629800; long long days = rest/86400; rest = rest%86400; long long hours = rest/3600; rest = rest%3600; long long minutes = rest/60; long long seconds = rest%60; ostringstream ostoret; if (years) ostoret << years << "y"; if (months) ostoret << months << "m"; if (days) ostoret << days << "d"; if (hours) ostoret << hours << "h"; if (minutes) ostoret << minutes << "M"; if (seconds) ostoret << seconds << "s"; string toret = ostoret.str(); return toret.size()?toret:"0s"; } m_time_t getTimeStampAfter(m_time_t initial, string timestring) { char *buffer = new char[timestring.size() + 1]; strcpy(buffer, timestring.c_str()); int days = 0, hours = 0, minutes = 0, seconds = 0, months = 0, years = 0; char * ptr = buffer; char * last = buffer; while (*ptr != '\0') { if (( *ptr < '0' ) || ( *ptr > '9' )) { switch (*ptr) { case 'd': *ptr = '\0'; days = atoi(last); break; case 'h': *ptr = '\0'; hours = atoi(last); break; case 'M': *ptr = '\0'; minutes = atoi(last); break; case 's': *ptr = '\0'; seconds = atoi(last); break; case 'm': *ptr = '\0'; months = atoi(last); break; case 'y': *ptr = '\0'; years = atoi(last); break; default: { delete[] buffer; return -1; } } last = ptr + 1; } char *prev = ptr; ptr++; if (*ptr == '\0' && ( *prev >= '0' ) && ( *prev <= '9' )) //reach the end with a number { delete[] buffer; return -1; } } struct tm dt; m_localtime(initial, &dt); dt.tm_mday += days; dt.tm_hour += hours; dt.tm_min += minutes; dt.tm_sec += seconds; dt.tm_mon += months; dt.tm_year += years; delete [] buffer; return m_mktime(&dt); } m_time_t getTimeStampAfter(string timestring) { m_time_t initial = m_time(); return getTimeStampAfter(initial, timestring); } m_time_t getTimeStampBefore(m_time_t initial, string timestring) { char *buffer = new char[timestring.size() + 1]; strcpy(buffer, timestring.c_str()); int days = 0, hours = 0, minutes = 0, seconds = 0, months = 0, years = 0; char * ptr = buffer; char * last = buffer; while (*ptr != '\0') { if (( *ptr < '0' ) || ( *ptr > '9' )) { switch (*ptr) { case 'd': *ptr = '\0'; days = atoi(last); break; case 'h': *ptr = '\0'; hours = atoi(last); break; case 'M': *ptr = '\0'; minutes = atoi(last); break; case 's': *ptr = '\0'; seconds = atoi(last); break; case 'm': *ptr = '\0'; months = atoi(last); break; case 'y': *ptr = '\0'; years = atoi(last); break; default: { delete[] buffer; return -1; } } last = ptr + 1; } char *prev = ptr; ptr++; if (*ptr == '\0' && ( *prev >= '0' ) && ( *prev <= '9' )) //reach the end with a number { delete[] buffer; return -1; } } struct tm dt; m_localtime(initial, &dt); dt.tm_mday -= days; dt.tm_hour -= hours; dt.tm_min -= minutes; dt.tm_sec -= seconds; dt.tm_mon -= months; dt.tm_year -= years; delete [] buffer; return m_mktime(&dt); } m_time_t getTimeStampBefore(string timestring) { m_time_t initial = m_time(); return getTimeStampBefore(initial, timestring); } bool getMinAndMaxTime(string timestring, m_time_t *minTime, m_time_t *maxTime) { m_time_t initial = m_time(); return getMinAndMaxTime(initial, timestring, minTime, maxTime); } bool getMinAndMaxTime(m_time_t initial, string timestring, m_time_t *minTime, m_time_t *maxTime) { *minTime = -1; *maxTime = -1; if (!timestring.size()) { return false; } if (timestring.at(0) == '+') { size_t posmin = timestring.find("-"); string maxTimestring = timestring.substr(1,posmin-1); *maxTime = getTimeStampBefore(initial,maxTimestring); if (*maxTime == -1) { return false; } if (posmin == string::npos) { *minTime = 0; return true; } string minTimestring = timestring.substr(posmin+1); *minTime = getTimeStampBefore(initial,minTimestring); if (*minTime == -1) { return false; } } else if (timestring.at(0) == '-') { size_t posmax = timestring.find("+"); string minTimestring = timestring.substr(1,posmax-1); *minTime = getTimeStampBefore(initial,minTimestring); if (*minTime == -1) { return false; } if (posmax == string::npos) { *maxTime = initial; return true; } string maxTimestring = timestring.substr(posmax+1); *maxTime = getTimeStampBefore(initial,maxTimestring); if (*maxTime == -1) { return false; } } else { return false; } return true; } bool getMinAndMaxSize(string sizestring, int64_t *minSize, int64_t *maxSize) { *minSize = -1; *maxSize = -1; if (!sizestring.size()) { return false; } if (sizestring.at(0) == '+') { size_t posmax = sizestring.find("-"); string minSizestring = sizestring.substr(1,posmax-1); *minSize = textToSize(minSizestring.c_str()); if (*minSize == -1) { return false; } if (posmax == string::npos) { *maxSize = -1; return true; } string maxSizestring = sizestring.substr(posmax+1); *maxSize = textToSize(maxSizestring.c_str()); if (*maxSize == -1) { return false; } } else if (sizestring.at(0) == '-') { size_t posmin = sizestring.find("+"); string maxSizestring = sizestring.substr(1,posmin-1); *maxSize = textToSize(maxSizestring.c_str()); if (*maxSize == -1) { return false; } if (posmin == string::npos) { *minSize = -1; return true; } string minSizestring = sizestring.substr(posmin+1); *minSize = textToSize(minSizestring.c_str()); if (*minSize == -1) { return false; } } else { return false; } return true; } bool isRegExp(string what) { #ifdef USE_PCRE if (( what == "." ) || ( what == ".." ) || ( what == "/" )) { return false; } while (true){ if (what.find("./") == 0) { what=what.substr(2); } else if(what.find("../") == 0) { what=what.substr(3); } else if(what.size()>=3 && (what.find("/..") == what.size()-3)) { what=what.substr(0,what.size()-3); } else if(what.size()>=2 && (what.find("/.") == what.size()-2)) { what=what.substr(0,what.size()-2); } else if(what.size()>=2 && (what.find("/.") == what.size()-2)) { what=what.substr(0,what.size()-2); } else { break; } } replaceAll(what, "/../", "/"); replaceAll(what, "/./", "/"); replaceAll(what, "/", ""); string s = pcrecpp::RE::QuoteMeta(what); string ns = s; replaceAll(ns, "\\\\\\", "\\"); bool isregex = strcmp(what.c_str(), ns.c_str()); return isregex; //TODO: #elif __cplusplus >= 201103L && !defined(__MINGW32__) //TODO?? #else return hasWildCards(what); #endif } string unquote(string what) { #ifdef USE_PCRE if (( what == "." ) || ( what == ".." ) || ( what == "/" )) { return what; } string pref=""; while (true){ if (what.find("./") == 0) { what=what.substr(2); pref+="./"; } else if(what.find("../") == 0) { what=what.substr(3); pref+="../"; } else { break; } } string s = pcrecpp::RE::QuoteMeta(what.c_str()); string ns = s; replaceAll(ns, "\\\\\\", "\\"); replaceAll(ns, "\\/\\.\\.\\/", "/../"); replaceAll(ns, "\\/\\.\\/", "/./"); return pref+ns; #else return what; #endif } bool megacmdWildcardMatch(const char *pszString, const char *pszMatch) // cf. http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=1680&lngWId=3 { const char *cp = nullptr; const char *mp = nullptr; while ((*pszString) && (*pszMatch != '*')) { if ((*pszMatch != *pszString) && (*pszMatch != '?')) { return false; } pszMatch++; pszString++; } while (*pszString) { if (*pszMatch == '*') { if (!*++pszMatch) { return true; } mp = pszMatch; cp = pszString + 1; } else if ((*pszMatch == *pszString) || (*pszMatch == '?')) { pszMatch++; pszString++; } else { pszMatch = mp; pszString = cp++; } } while (*pszMatch == '*') { pszMatch++; } return !*pszMatch; } bool patternMatches(const char *what, const char *pattern, bool usepcre) { if (usepcre) { #ifdef USE_PCRE pcrecpp::RE re(pattern); if (re.error().length()) { //In case the user supplied non-pcre regexp with * or ? in it. string newpattern(pattern); replaceAll(newpattern,"*",".*"); replaceAll(newpattern,"?","."); re=pcrecpp::RE(newpattern); } if (!re.error().length()) { bool toret = re.FullMatch(what); return toret; } else { LOG_warn << "Invalid PCRE regex: " << re.error(); return false; } #elif __cplusplus >= 201103L && !defined(__MINGW32__) try { return std::regex_match(what, std::regex(pattern)); } catch (std::regex_error e) { LOG_warn << "Couldn't compile regex: " << pattern; return false; } #else LOG_warn << " PCRE not supported"; return false; #endif } return megacmdWildcardMatch(what,pattern); } bool nodeNameIsVersion(string &nodeName) { bool isversion = false; if (nodeName.size() > 12 && nodeName.at(nodeName.size()-11) =='#') //TODO: def version separator elswhere { for (size_t i = nodeName.size()-10; i < nodeName.size() ; i++) { if (nodeName.at(i) > '9' || nodeName.at(i) < '0') break; if (i == (nodeName.size() - 1)) { isversion = true; } } } return isversion; } bool setOptionsAndFlags(map *opts, map *flags, vector *ws, set vvalidOptions, bool global) { bool discarded = false; for (std::vector::iterator it = ws->begin(); it != ws->end(); ) { string w = ( string ) * it; if (w.length() && ( w.at(0) == '-' )) //begins with "-" { if (( w.length() > 1 ) && ( w.at(1) != '-' )) //single character flags! { for (unsigned int i = 1; i < w.length(); i++) { string optname = w.substr(i, 1); if (vvalidOptions.find(optname) != vvalidOptions.end()) { ( *flags )[optname] = ( flags->count(optname) ? ( *flags )[optname] : 0 ) + 1; } else { LOG_err << "Invalid argument: " << optname; discarded = true; } } } else if (w == "--") { it = ws->erase(it); return discarded; // cease to look for options & leave the rest } else if (w.find_first_of("=") == std::string::npos) //flag { string optname = ltrim(w, '-'); if (vvalidOptions.find(optname) != vvalidOptions.end()) { ( *flags )[optname] = ( flags->count(optname) ? ( *flags )[optname] : 0 ) + 1; } else { LOG_err << "Invalid argument: " << optname; discarded = true; } } else //option=value { string cleared = ltrim(w, '-'); size_t p = cleared.find_first_of("="); string optname = cleared.substr(0, p); if (vvalidOptions.find(optname) != vvalidOptions.end()) { string value = cleared.substr(p + 1); value = rtrim(ltrim(value, '"'), '"'); ( *opts )[optname] = value; } else { LOG_err << "Invalid argument: " << optname; discarded = true; } } it = ws->erase(it); } else //not an option/flag { if (global) { return discarded; //leave the others } ++it; } } return discarded; } #ifndef _WIN32 string readablePermissions(int permvalue) { stringstream os; int owner = (permvalue >> 6) & 0x07; int group = (permvalue >> 3) & 0x07; int others = permvalue & 0x07; os << owner << group << others; return os.str(); } int permissionsFromReadable(string permissions) { if (permissions.size()==3) { int owner = permissions.at(0) - '0'; int group = permissions.at(1) - '0'; int others = permissions.at(2) - '0'; if ( (owner < 0) || (owner > 7) || (group < 0) || (group > 7) || (others < 0) || (others > 7) ) { LOG_err << "Invalid permissions value: " << permissions; return -1; } return (owner << 6) + ( group << 3) + others; } return -1; } #endif std::string handleToBase64(const MegaHandle &handle) { char *base64Handle = MegaApi::handleToBase64(handle); std::string toret{base64Handle}; delete [] base64Handle; return toret; } std::string syncBackupIdToBase64(const MegaHandle &handle) { char *base64Handle = MegaApi::userHandleToBase64(handle); std::string toret{base64Handle}; delete [] base64Handle; return toret; } mega::MegaHandle base64ToSyncBackupId(const std::string &shandle) { return MegaApi::base64ToUserHandle(shandle.c_str()); } }//end namespace MEGAcmd-2.5.2_Linux/src/megacmdutils.h000066400000000000000000000122551516543156300175300ustar00rootroot00000000000000/** * @file src/megacmdutils.h * @brief MEGAcmd: Auxiliary methods * * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of the MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef MEGACMDUTILS_H #define MEGACMDUTILS_H #include "megacmdcommonutils.h" #include "megacmd.h" #include namespace megacmd { using ::mega::m_time_t; std::string getUserInSharedNode(mega::MegaNode *n, mega::MegaApi *api); /* code translation*/ const char* getAccessLevelStr(int level); // Parameters: // - name // - ShortName // - Description #define GENERATE_FROM_SYNC_RUN_STATE(GENERATOR_MACRO) \ GENERATOR_MACRO(RUNSTATE_PENDING, "Pending", "Sync config has loaded but we have not attempted to start it yet")\ GENERATOR_MACRO(RUNSTATE_LOADING, "Loading", "Sync is in the process of loading from disk")\ GENERATOR_MACRO(RUNSTATE_RUNNING, "Running", "Sync loaded and active")\ GENERATOR_MACRO(RUNSTATE_SUSPENDED, "Suspended", "Sync is not loaded, but it is on disk with the last known sync state")\ GENERATOR_MACRO(RUNSTATE_DISABLED, "Disabled", "Sync has been disabled (no state cached). Starting it is like configuring a brand new sync with those settings")\ // Parameters: // - name // - ShortName // - Description #define GENERATE_FROM_SYNC_PATH_STATE(GENERATOR_MACRO) \ GENERATOR_MACRO(STATE_NONE, "NONE", "Status unknown")\ GENERATOR_MACRO(STATE_SYNCED, "Synced", "Synced, no transfers/pending actions are ongoing")\ GENERATOR_MACRO(STATE_PENDING, "Pending", "Sync engine is doing some calculations")\ GENERATOR_MACRO(STATE_SYNCING, "Syncing", "Transfers/pending actions are being carried out")\ GENERATOR_MACRO(STATE_IGNORED, "Processing", "State cannot be determined (too busy, try again later)") // Note: STATE_IGNORED can happen when attempting to get the state, but it fails to block the sdk in a timely attempt. // Also with excluded paths, but root shall not be excluded. const char* getSyncPathStateStr(int state); const char * syncRunStateStr(unsigned e); std::string visibilityToString(int visibility); const char * getMCMDErrorString(int errorCode); const char * getErrorCodeStr(mega::MegaError *e); const char * getMountResultStr(int mountResult); const char * getLogLevelStr(int loglevel); std::optional getLogLevelNum(const char* level); const char * getShareLevelStr(int sharelevel); int getShareLevelNum(const char* level); const char * getTransferStateStr(int transferState); std::string backupSatetStr(int backupstate); const char * getProxyTypeStr(int proxyType); /* Files and folders */ int getLinkType(std::string link); /* Time related */ const char *fillStructWithSYYmdHMS(std::string &stime, struct tm &dt); enum MegaCmdStrfTimeFormatId { MCMDTIME_RFC2822, MCMDTIME_ISO6081, MCMDTIME_ISO6081WITHTIME, MCMDTIME_SHORT, MCMDTIME_SHORTWITHUTCDEVIATION, MCMDTIME_TOTAL }; const char *getTimeFormatFromSTR(std::string formatName); const char *getFormatStrFromId(int strftimeformatid); const char *getTimeFormatNameFromId(int strftimeformatid); std::string secondsToText(m_time_t seconds, bool humanreadable = true); std::string getReadableTime(const m_time_t rawtime, const char* strftimeformat); std::string getReadableTime(const m_time_t rawtime, int strftimeformatid = MCMDTIME_RFC2822); std::string getReadableShortTime(const m_time_t rawtime, bool showUTCDeviation = false); std::string getReadablePeriod(const m_time_t rawtime); m_time_t getTimeStampAfter(m_time_t initial, std::string timestring); m_time_t getTimeStampAfter(std::string timestring); m_time_t getTimeStampBefore(m_time_t initial, std::string timestring); m_time_t getTimeStampBefore(std::string timestring); bool getMinAndMaxTime(std::string timestring, m_time_t *minTime, m_time_t *maxTime); bool getMinAndMaxTime(m_time_t initial, std::string m_timestring, m_time_t *minTime, m_time_t *maxTime); /* Strings related */ bool isRegExp(std::string what); std::string unquote(std::string what); bool megacmdWildcardMatch(const char *pszString, const char *pszMatch); bool patternMatches(const char *what, const char *pattern, bool usepcre); bool nodeNameIsVersion(std::string &nodeName); std::string handleToBase64(const mega::MegaHandle &handle); //node handles std::string syncBackupIdToBase64(const mega::MegaHandle &handle); //sync handles mega::MegaHandle base64ToSyncBackupId(const std::string &shandle); /* Flags and Options */ bool setOptionsAndFlags(std::map *opts, std::map *flags, std::vector *ws, std::set vvalidOptions, bool global = false); bool getMinAndMaxSize(std::string sizestring, int64_t *minSize, int64_t *maxSize); /* Others */ std::string readablePermissions(int permvalue); int permissionsFromReadable(std::string permissions); }//end namespace #endif // MEGACMDUTILS_H MEGAcmd-2.5.2_Linux/src/megacmdversion.h.in000066400000000000000000000035531516543156300204630ustar00rootroot00000000000000#ifndef MEGACMDVERSION_H #define MEGACMDVERSION_H #ifndef SDK_COMMIT_HASH #define SDK_COMMIT_HASH "@SDK_COMMIT_HASH@" #endif #ifndef MEGACMD_MAJOR_VERSION #define MEGACMD_MAJOR_VERSION @MEGACMD_MAJOR_VERSION@ #endif #ifndef MEGACMD_MINOR_VERSION #define MEGACMD_MINOR_VERSION @MEGACMD_MINOR_VERSION@ #endif #ifndef MEGACMD_MICRO_VERSION #define MEGACMD_MICRO_VERSION @MEGACMD_MICRO_VERSION@ #endif #ifndef MEGACMD_BUILD_ID #define MEGACMD_BUILD_ID 0 #endif #ifndef MEGACMD_CODE_VERSION #define MEGACMD_CODE_VERSION (MEGACMD_BUILD_ID+MEGACMD_MICRO_VERSION*100+MEGACMD_MINOR_VERSION*10000+MEGACMD_MAJOR_VERSION*1000000) #endif namespace megacmd { const char * const megacmdchangelog = "Fix: address potential loop in sync engine with mtime changes within 2 seconds""\n" "Shell UX improvements: empty Enter shows a new prompt; no duplicate prompt while command is executing""\n" "Sync engine improvements: prevent re-uploading data when local drive fingerprint has changed""\n" "put: Fixed -c (autocreate) not working when destination is an absolute path""\n" "Fixed syncrhonizing updated empty files (on top of 2.5.0)""\n" "WSL bash completion speedup""\n" "mediainfo: Fixed audio file duration not being displayed""\n" "Transfers: prevent failures on resumption""\n" "thumbnail/preview: Print error when the requested file does not exist""\n" "share: Return success (exit code 0) when no shares exist below the current folder""\n" "passwd: fixes issues when 2FA is enabled""\n" "Path and string handling fixes (trailing separators, trimming)""\n" "Expanded unit test coverage""\n" "Fix: Improved restart-after-update reliability on POSIX (server PID changes after update)""\n" "Stability, memory, typos and other improvements" ; }//end namespace #endif // VERSION_H MEGAcmd-2.5.2_Linux/src/sync_command.cpp000066400000000000000000000363041516543156300200600ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "sync_command.h" #include "listeners.h" #include "megacmdutils.h" #include "megacmdlogger.h" #include "configurationmanager.h" using std::string; namespace { bool isSyncTransfer(mega::MegaApi& api, int transferTag) { std::unique_ptr transfer(api.getTransferByTag(transferTag)); return transfer && transfer->isSyncTransfer(); } bool hasPendingSyncTransfers(mega::MegaApi& api) { std::unique_ptr transferData(api.getTransferData()); assert(transferData); for (int i = 0; i < transferData->getNumDownloads(); ++i) { const int tag = transferData->getDownloadTag(i); if (isSyncTransfer(api, tag)) { return true; } } for (int i = 0; i < transferData->getNumUploads(); ++i) { const int tag = transferData->getUploadTag(i); if (isSyncTransfer(api, tag)) { return true; } } return false; } string getSyncId(mega::MegaSync& sync) { return syncBackupIdToBase64(sync.getBackupId()); } void getInfoFromFolder(mega::MegaNode& n, mega::MegaApi& api, long long& nFiles, long long& nFolders, long long *nVersions = nullptr) { auto megaCmdListener = std::make_unique(nullptr); api.getFolderInfo(&n, megaCmdListener.get()); megaCmdListener->wait(); if (megaCmdListener->getError()->getErrorCode() != mega::MegaError::API_OK) { LOG_err << "Failed to get folder info for " << n.getName(); return; } mega::MegaFolderInfo* mfi = megaCmdListener->getRequest()->getMegaFolderInfo(); if (!mfi) { return; } nFiles = mfi->getNumFiles(); nFolders = mfi->getNumFolders(); if (nVersions) { *nVersions = mfi->getNumVersions(); } } void printSyncHeader(ColumnDisplayer &cd) { // Add headers with unfixed width (those that can be ellided) cd.addHeader("LOCALPATH", false); cd.addHeader("REMOTEPATH", false); } void printSingleSync(mega::MegaApi& api, mega::MegaSync& sync, mega::MegaNode* node, long long nFiles, long long nFolders, ColumnDisplayer &cd, bool showHandle, int syncIssuesCount) { cd.addValue("ID", getSyncId(sync)); cd.addValue("LOCALPATH", sync.getLocalFolder()); if (showHandle) { cd.addValue("REMOTEHANDLE", string(""))); } cd.addValue("REMOTEPATH", sync.getLastKnownMegaFolder()); cd.addValue("RUN_STATE", syncRunStateStr(sync.getRunState())); std::string folder = sync.getLocalFolder(); string localFolder; mega::LocalPath::path2local(&folder, &localFolder); int statepath = api.syncPathState(&localFolder); cd.addValue("STATUS", getSyncPathStateStr(statepath)); if (sync.getError()) { std::unique_ptr megaSyncErrorCode(sync.getMegaSyncErrorCode()); cd.addValue("ERROR", megaSyncErrorCode.get()); } else { string syncIssuesMsg = "NO"; if (syncIssuesCount > 0) { syncIssuesMsg = "Sync Issues (" + std::to_string(syncIssuesCount) + ")"; } cd.addValue("ERROR", syncIssuesMsg); } cd.addValue("SIZE", sizeToText(node ? api.getSize(node) : 0)); cd.addValue("FILES", std::to_string(nFiles)); cd.addValue("DIRS", std::to_string(nFolders)); } std::pair, std::optional> getErrorsAndSetOutCode(MegaCmdListener& listener) { std::optional errorOpt, syncErrorOpt; int errorCode = listener.getError()->getErrorCode(); bool hasMegaError = errorCode != mega::MegaError::API_OK; auto syncError = static_cast(listener.getRequest()->getNumDetails()); if (hasMegaError) { setCurrentThreadOutCode(errorCode); errorOpt = listener.getError()->getErrorString(); } if (syncError != mega::SyncError::NO_SYNC_ERROR) { if (!hasMegaError) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); } std::unique_ptr syncErrorStr(mega::MegaSync::getMegaSyncErrorCode(syncError)); syncErrorOpt = syncErrorStr.get(); } return {errorOpt, syncErrorOpt}; } } // end namespace namespace SyncCommand { std::unique_ptr getSync(mega::MegaApi& api, const string& pathOrId) { std::unique_ptr sync; sync.reset(api.getSyncByBackupId(base64ToSyncBackupId(pathOrId))); if (!sync) { sync.reset(api.getSyncByPath(pathOrId.c_str())); } return sync; } std::unique_ptr reloadSync(mega::MegaApi& api, std::unique_ptr&& sync) { assert(sync); return std::unique_ptr(api.getSyncByBackupId(sync->getBackupId())); } bool isAnySyncUploadDelayed(mega::MegaApi& api) { const bool isSyncing = api.isSyncing(); if (!isSyncing) { return false; } const bool syncStalled = api.isSyncStalled(); if (syncStalled) { return false; } const bool pendingSyncTransfers = hasPendingSyncTransfers(api); if (pendingSyncTransfers) { return false; } auto listener = std::make_unique(nullptr); api.checkSyncUploadsThrottled(listener.get()); listener->wait(); auto [errorOpt, syncErrorOpt] = getErrorsAndSetOutCode(*listener); if (errorOpt) { LOG_err << "Failed to get the list of delayed sync uploads " << "(Error: " << *errorOpt << (syncErrorOpt ? ". Reason: " + *syncErrorOpt : "") << ")"; return false; } mega::MegaRequest* request = listener->getRequest(); assert(request != nullptr); return request->getFlag(); } void printSync(mega::MegaApi& api, ColumnDisplayer& cd, bool showHandle, mega::MegaSync& sync, const SyncIssueList& syncIssues) { std::unique_ptr node(api.getNodeByHandle(sync.getMegaHandle())); if (!node) { LOG_err << "Remote node not found for sync " << getSyncId(sync); return; } long long nFiles = 0; long long nFolders = 0; getInfoFromFolder(*node, api, nFiles, nFolders); printSyncHeader(cd); unsigned int syncIssuesCount = syncIssues.getSyncIssuesCount(sync); printSingleSync(api, sync, node.get(), nFiles, nFolders, cd, showHandle, syncIssuesCount); } void printSyncList(mega::MegaApi& api, ColumnDisplayer& cd, bool showHandles, const mega::MegaSyncList& syncList, const SyncIssueList& syncIssues) { if (syncList.size() > 0) { printSyncHeader(cd); } for (int i = 0; i < syncList.size(); ++i) { mega::MegaSync& sync = *syncList.get(i); std::unique_ptr node(api.getNodeByHandle(sync.getMegaHandle())); long long nFiles = 0; long long nFolders = 0; if (node) { getInfoFromFolder(*node, api, nFiles, nFolders); } else { LOG_warn << "Remote node not found for sync " << getSyncId(sync); } unsigned int syncIssuesCount = syncIssues.getSyncIssuesCount(sync); printSingleSync(api, sync, node.get(), nFiles, nFolders, cd, showHandles, syncIssuesCount); } } void addSync(mega::MegaApi& api, const fs::path& localPath, mega::MegaNode& node) { std::unique_ptr nodePathPtr(api.getNodePath(&node)); const char* nodePath = (nodePathPtr ? nodePathPtr.get() : ""); if (node.getType() == mega::MegaNode::TYPE_FILE) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Remote sync root " << nodePath << " must be a directory"; return; } if (api.getAccess(&node) < mega::MegaShare::ACCESS_FULL) { setCurrentThreadOutCode(MCMD_NOTPERMITTED); LOG_err << "Syncing requires full access to path (current access: " << api.getAccess(&node) << ")"; return; } auto megaCmdListener = std::make_unique(nullptr); api.syncFolder(mega::MegaSync::TYPE_TWOWAY, localPath.string().c_str(), nullptr, node.getHandle(), nullptr, megaCmdListener.get()); megaCmdListener->wait(); auto [errorOpt, syncErrorOpt] = getErrorsAndSetOutCode(*megaCmdListener); if (errorOpt) { LOG_err << "Failed to sync " << localPath.string() << " to " << nodePath << " (Error: " << *errorOpt << (syncErrorOpt ? ". Reason: " + *syncErrorOpt : "") << ")"; return; } string syncLocalPath = megaCmdListener->getRequest()->getFile(); OUTSTREAM << "Added sync: " << syncLocalPath << " to " << nodePath << endl; if (syncErrorOpt) { LOG_err << "Sync added as temporarily disabled. Reason: " << *syncErrorOpt; } } void modifySync(mega::MegaApi& api, mega::MegaSync& sync, ModifyOpts opts) { auto megaCmdListener = std::make_unique(nullptr); if (opts == ModifyOpts::Delete) { api.removeSync(sync.getBackupId(), megaCmdListener.get()); megaCmdListener->wait(); auto [errorOpt, syncErrorOpt] = getErrorsAndSetOutCode(*megaCmdListener); if (!errorOpt) { OUTSTREAM << "Sync removed: " << sync.getLocalFolder() << " to " << sync.getLastKnownMegaFolder() << endl; } else { LOG_err << "Failed to remove sync " << getSyncId(sync) << " (Error: " << *errorOpt << (syncErrorOpt ? ". Reason: " + *syncErrorOpt : "") << ")"; } } else { auto newState = (opts == ModifyOpts::Pause ? mega::MegaSync::RUNSTATE_SUSPENDED : mega::MegaSync::RUNSTATE_RUNNING); api.setSyncRunState(sync.getBackupId(), newState, megaCmdListener.get()); megaCmdListener->wait(); auto [errorOpt, syncErrorOpt] = getErrorsAndSetOutCode(*megaCmdListener); if (!errorOpt) { const char* action = (opts == ModifyOpts::Pause ? "paused" : "enabled"); OUTSTREAM << "Sync " << action << ": " << sync.getLocalFolder() << " to " << sync.getLastKnownMegaFolder() << std::endl; if (syncErrorOpt) { LOG_err << "Sync might be temporarily disabled. Reason: " << *syncErrorOpt; } } else { const char* action = (opts == ModifyOpts::Pause ? "pause" : "enable"); LOG_err << "Failed to " << action << " sync " << getSyncId(sync) << " (Error: " << *errorOpt << (syncErrorOpt ? ". Reason: " + *syncErrorOpt : "") << ")"; } } } } // end namespace namespace GlobalSyncConfig { void loadFromConfigurationManager(mega::MegaApi& api) { const int duWaitSecs = ConfigurationManager::getConfigurationValue("GlobalSyncConfig:delayedUploadsWaitSecs", -1); if (duWaitSecs != -1) { DelayedUploads::updateWaitSecs(api, duWaitSecs); } const int duMaxAttempts = ConfigurationManager::getConfigurationValue("GlobalSyncConfig:delayedUploadsMaxAttempts", -1); if (duMaxAttempts != -1) { DelayedUploads::updateMaxAttempts(api, duMaxAttempts); } } namespace DelayedUploads { namespace { template std::optional makeApiRequest(RequestFunc&& requestFunc) { auto listener = std::make_unique(nullptr); requestFunc(listener.get()); listener->wait(); mega::MegaError* error = listener->getError(); assert(error); if (error->getErrorCode() != mega::MegaError::API_OK) { setCurrentThreadOutCode(error->getErrorCode()); return std::nullopt; } mega::MegaRequest* request = listener->getRequest(); assert(request); Config config; config.mWaitSecs = request->getNumber(); config.mMaxAttempts = request->getTotalBytes(); return config; } std::optional getCurrentLowerLimits(mega::MegaApi& api) { return makeApiRequest([&api] (mega::MegaRequestListener* listener) { api.getSyncUploadThrottleLowerLimits(listener); }); } std::optional getCurrentUpperLimits(mega::MegaApi& api) { return makeApiRequest([&api] (mega::MegaRequestListener* listener) { api.getSyncUploadThrottleUpperLimits(listener); }); } } // end namespace std::optional getCurrentConfig(mega::MegaApi& api) { return makeApiRequest([&api] (mega::MegaRequestListener* listener) { api.getSyncUploadThrottleValues(listener); }); } bool Limits::isWaitSecsValid(int waitSecs) const { return waitSecs >= mLower.mWaitSecs && waitSecs <= mUpper.mWaitSecs; } bool Limits::isMaxAttemptsValid(int maxAttempts) const { return maxAttempts >= mLower.mMaxAttempts && maxAttempts <= mUpper.mMaxAttempts; } std::optional getCurrentLimits(mega::MegaApi& api) { auto lowerLimitsOpt = getCurrentLowerLimits(api); if (!lowerLimitsOpt) { LOG_warn << "Failed to get the delayed uploads lower limits"; return std::nullopt; } auto upperLimitsOpt = getCurrentUpperLimits(api); if (!upperLimitsOpt) { LOG_warn << "Failed to get the delayed uploads upper limits"; return std::nullopt; } return Limits{*lowerLimitsOpt, *upperLimitsOpt}; } void updateWaitSecs(mega::MegaApi& api, int waitSecs) { auto limits = getCurrentLimits(api); if (limits && !limits->isWaitSecsValid(waitSecs)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Delayed sync uploads wait time must be between " << limits->mLower.mWaitSecs << " and " << limits->mUpper.mWaitSecs << " seconds"; return; } auto result = makeApiRequest([&api, waitSecs] (mega::MegaRequestListener* listener) { api.setSyncUploadThrottleUpdateRate(waitSecs, listener); }); if (!result) { LOG_err << "Failed to set the wait time for delayed sync uploads"; return; } OUTSTREAM << "Successfully set the wait time for delayed sync uploads to " << result->mWaitSecs << " seconds" << endl; ConfigurationManager::savePropertyValue("GlobalSyncConfig:delayedUploadsWaitSecs", result->mWaitSecs); } void updateMaxAttempts(mega::MegaApi& api, int maxAttempts) { auto limits = getCurrentLimits(api); if (limits && !limits->isMaxAttemptsValid(maxAttempts)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "Max delayed uploads attempts must be between " << limits->mLower.mMaxAttempts << " and " << limits->mUpper.mMaxAttempts; return; } auto result = makeApiRequest([&api, maxAttempts] (mega::MegaRequestListener* listener) { api.setSyncMaxUploadsBeforeThrottle(maxAttempts, listener); }); if (!result) { LOG_err << "Failed to set the max attempts for delayed sync uploads"; return; } OUTSTREAM << "Successfully set the max attempts for delayed sync uploads to " << result->mMaxAttempts << endl; ConfigurationManager::savePropertyValue("GlobalSyncConfig:delayedUploadsMaxAttempts", result->mMaxAttempts); } } // end namespace } // end namespace MEGAcmd-2.5.2_Linux/src/sync_command.h000066400000000000000000000040351516543156300175210ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include #include "megacmdcommonutils.h" #include "sync_issues.h" using namespace megacmd; namespace SyncCommand { std::unique_ptr getSync(mega::MegaApi& api, const std::string& pathOrId); std::unique_ptr reloadSync(mega::MegaApi& api, std::unique_ptr&& sync); bool isAnySyncUploadDelayed(mega::MegaApi& api); void printSync(mega::MegaApi& api, ColumnDisplayer& cd, bool showHandle, mega::MegaSync& sync, const SyncIssueList& syncIssues); void printSyncList(mega::MegaApi& api, ColumnDisplayer& cd, bool showHandles, const mega::MegaSyncList& syncList, const SyncIssueList& syncIssues); void addSync(mega::MegaApi& api, const fs::path& localPath, mega::MegaNode& node); enum class ModifyOpts { Pause, Enable, Delete }; void modifySync(mega::MegaApi& api, mega::MegaSync& sync, ModifyOpts opts); } namespace GlobalSyncConfig { void loadFromConfigurationManager(mega::MegaApi& api); namespace DelayedUploads { struct Config { int mWaitSecs = 0; int mMaxAttempts = 0; }; std::optional getCurrentConfig(mega::MegaApi& api); struct Limits { Config mLower; Config mUpper; bool isWaitSecsValid(int waitSecs) const; bool isMaxAttemptsValid(int maxAttempts) const; }; std::optional getCurrentLimits(mega::MegaApi& api); void updateWaitSecs(mega::MegaApi& api, int waitSecs); void updateMaxAttempts(mega::MegaApi& api, int waitSecs); } } MEGAcmd-2.5.2_Linux/src/sync_ignore.cpp000066400000000000000000000203761516543156300177270ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "sync_ignore.h" #include #include #include #include "megacmdcommonutils.h" #include "megacmdlogger.h" using namespace megacmd; namespace { const char* BOMStr = "\xEF\xBB\xBF"; #ifdef _WIN32 const char* NL = "\r\n"; #else const char* NL = "\n"; #endif void trimSpaces(std::string& str) { auto end = std::find_if_not(str.rbegin(), str.rend(), [] (char c) { return std::isspace(static_cast(c)) != 0; }).base(); str.erase(end, str.end()); } std::unique_lock getFileLock(const fs::path& path) { static std::mutex mapMutex; static std::map fileMutexMap; std::lock_guard mapLock(mapMutex); return std::unique_lock(fileMutexMap[path]); } void executeAdd(MegaIgnoreFile& megaIgnoreFile, const std::set& filters) { // Only check the format of the filters when adding, to allow users to remove invalid filters from the file for (const std::string& filter : filters) { if (MegaIgnoreFile::isValidFilter(filter)) { continue; } // At least one incorrect filter format must cause the entire command to fail // Otherwise, if we allowed partial filters to come through, it could result in unwanted sync states setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "The filter \"" << filter << "\" does not have valid format"; return; } std::set toAdd; for (const std::string& filter : filters) { if (megaIgnoreFile.containsFilter(filter)) { OUTSTREAM << "Cannot add filter \"" << filter << "\" because it's already in the .megaignore file (skipped)" << endl; continue; } toAdd.insert(filter); OUTSTREAM << "Added filter \"" << filter << "\"" << endl; } megaIgnoreFile.addFilters(toAdd); } void executeRemove(MegaIgnoreFile& megaIgnoreFile, const std::set& filters) { std::set toRemove; for (const std::string& filter : filters) { if (!megaIgnoreFile.containsFilter(filter)) { OUTSTREAM << "Cannot remove filter \"" << filter << "\" because it's not in the .megaignore file (skipped)" << endl; continue; } toRemove.insert(filter); OUTSTREAM << "Removed filter \"" << filter << "\"" << endl; } megaIgnoreFile.removeFilters(toRemove); } void executeSyncIgnoreCommand(const SyncIgnore::Args& args, MegaIgnoreFile& megaIgnoreFile) { switch (args.mAction) { case SyncIgnore::Action::Show: { OUTSTREAM << megaIgnoreFile.getFilterContents(); break; } case SyncIgnore::Action::Add: { executeAdd(megaIgnoreFile, args.mFilters); break; } case SyncIgnore::Action::Remove: { executeRemove(megaIgnoreFile, args.mFilters); break; } } } } // end namespace namespace SyncIgnore { void executeCommand(const Args& args) { if (args.mFilters.empty() && (args.mAction == Action::Add || args.mAction == Action::Remove)) { setCurrentThreadOutCode(MCMD_EARGS); LOG_err << "At least one name filter is required for add or remove"; LOG_err << " " << getUsageStr("sync-ignore"); return; } fs::path megaIgnoreFilePath; bool isDefault = true; if (args.mMegaIgnoreDirPath.empty()) { megaIgnoreFilePath = MegaIgnoreFile::getDefaultPath(); } else { megaIgnoreFilePath = args.mMegaIgnoreDirPath / ".megaignore"; isDefault = false; } std::error_code ec; if (!fs::exists(megaIgnoreFilePath, ec)) { setCurrentThreadOutCode(MCMD_NOTFOUND); if (isDefault) { // For the default file to be created, a sync that DOES NOT already contain a .megaignore file has to be added LOG_err << "Default .megaignore file does not exist (will be created when a new sync is added)" << ( ec ? std::string(": ").append(errorCodeStr(ec).c_str()) : ""); } else { LOG_err << "Mega ignore file \"" << megaIgnoreFilePath << "\" does not exist" << ( ec ? std::string(": ").append(errorCodeStr(ec).c_str()) : ""); } return; } MegaIgnoreFile megaIgnoreFile(megaIgnoreFilePath); if (!megaIgnoreFile.isValid()) { setCurrentThreadOutCode(MCMD_INVALIDSTATE); LOG_err << "There was an error opening mega ignore file \"" << megaIgnoreFilePath; return; } executeSyncIgnoreCommand(args, megaIgnoreFile); } std::string getFilterFromLegacyPattern(const std::string& pattern) { return "-:" + pattern; } } // end namespace bool MegaIgnoreFile::checkBOMAndSkip(std::ifstream& file) { char bom[4]; file.read(bom, 3); bom[3] = '\0'; if (strcmp(bom, BOMStr)) { // If there's no utf-8 BOM, seek to the begining of the file file.seekg(0); return false; } return true; } void MegaIgnoreFile::loadFilters(std::ifstream& file) { mFilters.clear(); for (std::string line; getline(file, line);) { trimSpaces(line); if (line.empty() || line[0] == '#') { continue; } mFilters.insert(line); } } fs::path MegaIgnoreFile::getDefaultPath() { auto platformDirs = megacmd::PlatformDirectories::getPlatformSpecificDirectories(); return platformDirs->configDirPath() / ".megaignore.default"; } bool MegaIgnoreFile::isValidFilter(const std::string& filter) { thread_local std::regex filterRegex(R"([-+][adfs]?[Nnp]?[GgRr]?:\S+)"); return std::regex_match(filter, filterRegex); } MegaIgnoreFile::MegaIgnoreFile(const fs::path& path) : mPath(path), mValid(false) { auto fileLock = getFileLock(mPath); std::error_code ec; if (fs::exists(mPath, ec)) { loadFromPath(); } else if (ec) { LOG_err << "MegaIgnoreFile existence check failure: " << mPath << ": " << errorCodeStr(ec); return; } else { createWithBOM(); } } void MegaIgnoreFile::loadFromPath() { mValid = false; std::ifstream file(mPath); if (!file.is_open() || file.fail()) { return; } checkBOMAndSkip(file); loadFilters(file); mValid = true; } void MegaIgnoreFile::createWithBOM() { std::ofstream file(mPath); if (!file.is_open() || file.fail()) { return; } file << BOMStr; mValid = true; } void MegaIgnoreFile::addFilters(const std::set& filters) { auto fileLock = getFileLock(mPath); { std::ofstream file(mPath, std::ios_base::app); for (const std::string& filter : filters) { file << filter << NL; } } loadFromPath(); } void MegaIgnoreFile::removeFilters(const std::set& filters) { auto fileLock = getFileLock(mPath); std::string newContents; bool hasBOM = false; { std::ifstream file(mPath); hasBOM = checkBOMAndSkip(file); for (std::string line; getline(file, line);) { trimSpaces(line); if (filters.count(line)) { continue; } newContents += line + NL; } } { std::ofstream outFile(mPath, std::ios_base::trunc); outFile << (hasBOM ? BOMStr : "") << newContents; } loadFromPath(); } bool MegaIgnoreFile::containsFilter(const std::string& filter) const { assert(mValid); std::string cleanFilter = filter; trimSpaces(cleanFilter); return mFilters.count(cleanFilter) > 0; } std::string MegaIgnoreFile::getFilterContents() const { assert(mValid); std::string contents; for (const std::string& filter : mFilters) { contents += filter + '\n'; } return contents; } MEGAcmd-2.5.2_Linux/src/sync_ignore.h000066400000000000000000000030021516543156300173570ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include "megacmdcommonutils.h" #include #include namespace SyncIgnore { enum class Action { Show, Add, Remove }; struct Args { Action mAction; fs::path mMegaIgnoreDirPath; std::set mFilters; }; void executeCommand(const Args& args); std::string getFilterFromLegacyPattern(const std::string& pattern); } class MegaIgnoreFile { std::set mFilters; fs::path mPath; bool mValid; bool checkBOMAndSkip(std::ifstream& file); void loadFilters(std::ifstream& file); void loadFromPath(); void createWithBOM(); public: static fs::path getDefaultPath(); static bool isValidFilter(const std::string& filter); MegaIgnoreFile(const fs::path& path); bool isValid() const { return mValid; } void addFilters(const std::set& filters); void removeFilters(const std::set& filters); bool containsFilter(const std::string& filter) const; std::string getFilterContents() const; // without comments, bom, etc. }; MEGAcmd-2.5.2_Linux/src/sync_issues.cpp000066400000000000000000000623061516543156300177560ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "sync_issues.h" #include #include #include "megacmdlogger.h" #include "configurationmanager.h" #include "listeners.h" #include "megacmdutils.h" #ifdef MEGACMD_TESTING_CODE #include "../tests/common/Instruments.h" using TI = TestInstruments; #endif using namespace megacmd; using namespace std::string_literals; namespace { bool startsWith(const char* str, const char* prefix) { if (!str || !prefix) { return false; } return std::strncmp(str, prefix, std::strlen(prefix)) == 0; } std::string getPathFileName(const std::string& path) { auto pos = std::find_if(path.rbegin(), path.rend(), [] (char c) { return c == '/' || c == '\\'; }); if (pos == path.rend()) { return path; } return std::string(pos.base(), path.end()); } } class SyncIssuesGlobalListener : public mega::MegaGlobalListener { using SyncStalledChangedCb = std::function; SyncStalledChangedCb mSyncStalledChangedCb; bool mSyncStalled; void onGlobalSyncStateChanged(mega::MegaApi* api) override { const bool syncStalled = api->isSyncStalled(); const bool syncStalledChanged = (syncStalled != mSyncStalled || (syncStalled && api->isSyncStalledChanged())); if (!syncStalledChanged) { return; } mSyncStalledChangedCb(); mSyncStalled = syncStalled; } public: template SyncIssuesGlobalListener(SyncStalledChangedCb&& syncStalledChangedCb) : mSyncStalledChangedCb(std::move(syncStalledChangedCb)), mSyncStalled(false) {} }; class SyncIssuesRequestListener : public mega::SynchronousRequestListener { std::mutex mSyncIssuesMtx; SyncIssueList mSyncIssues; void doOnRequestFinish(mega::MegaApi *api, mega::MegaRequest *request, mega::MegaError *e) override { assert(e); if (e->getValue() != mega::MegaError::API_OK) { LOG_err << "Failed to get list of sync issues: " << e->getErrorString(); return; } assert(request && request->getType() == mega::MegaRequest::TYPE_GET_SYNC_STALL_LIST); auto stalls = request->getMegaSyncStallList(); if (!stalls) { LOG_err << "Sync issue list pointer is null"; return; } SyncIssueList syncIssues; for (size_t i = 0; i < stalls->size(); ++i) { auto stall = stalls->get(i); assert(stall); SyncIssue syncIssue(*stall); syncIssues.mIssuesMap.emplace(syncIssue.getId(), std::move(syncIssue)); } onSyncIssuesChanged(syncIssues); { std::lock_guard lock(mSyncIssuesMtx); mSyncIssues = std::move(syncIssues); } } protected: virtual void onSyncIssuesChanged(const SyncIssueList& syncIssues) {} public: virtual ~SyncIssuesRequestListener() = default; SyncIssueList releaseSyncIssues() { std::lock_guard lock(mSyncIssuesMtx); return std::move(mSyncIssues); } }; // Whenever a callback happens we start a timer. Any subsequent callbacks after the first // timer restart it. When the timer reaches a certain threshold, the broadcast is triggered. // This effectivelly "combines" near callbacks into a single trigger. class SyncIssuesBroadcastListener : public SyncIssuesRequestListener { using SyncStalledChangedCb = std::function; using Clock = std::chrono::high_resolution_clock; using TimePoint = Clock::time_point; SyncStalledChangedCb mBroadcastSyncIssuesCb; unsigned int mSyncIssuesSize; bool mRunning; TimePoint mLastTriggerTime; std::mutex mDebouncerMtx; std::condition_variable mDebouncerCv; std::thread mDebouncerThread; void onSyncIssuesChanged(const SyncIssueList& syncIssues) override { { std::lock_guard lock(mDebouncerMtx); mSyncIssuesSize = syncIssues.size(); mLastTriggerTime = Clock::now(); } mDebouncerCv.notify_one(); } void debouncerLoop() { while (true) { std::unique_lock lock(mDebouncerMtx); bool stopOrTrigger = mDebouncerCv.wait_for(lock, std::chrono::milliseconds(20), [this] { constexpr auto minTriggerTime = std::chrono::milliseconds(300); return !mRunning || Clock::now() - mLastTriggerTime > minTriggerTime; }); if (!mRunning) // stop { return; } if (stopOrTrigger) // trigger { mBroadcastSyncIssuesCb(mSyncIssuesSize); mLastTriggerTime = TimePoint::max(); } } } public: template SyncIssuesBroadcastListener(BroadcastSyncIssuesCb&& broadcastSyncIssuesCb) : mBroadcastSyncIssuesCb(std::move(broadcastSyncIssuesCb)), mSyncIssuesSize(0), mRunning(true), mLastTriggerTime(TimePoint::max()), mDebouncerThread([this] { debouncerLoop(); }) {} virtual ~SyncIssuesBroadcastListener() { { std::lock_guard lock(mDebouncerMtx); mRunning = false; } mDebouncerCv.notify_one(); mDebouncerThread.join(); } }; template std::string SyncIssue::getFilePath(int i) const { assert(mMegaStall); const char* path = mMegaStall->path(isCloud, i); if (path && strcmp(path, "")) { if constexpr (isCloud) { return CloudPrefix + path; } else { return path; } } return ""; } template std::string SyncIssue::getDefaultFileName() const { std::string filePath = getFilePath(0); if (filePath.empty()) { filePath = getFilePath(0); } return getPathFileName(filePath); } template std::string SyncIssue::getFileName(int i) const { std::string filePath = getFilePath(i); return getPathFileName(filePath); } template std::optional SyncIssue::getPathProblem(mega::PathProblem pathProblem) const { assert(mMegaStall); #ifdef MEGACMD_TESTING_CODE auto pathProblemOpt = TI::Instance().testValue(TI::TestValue::SYNC_ISSUE_ENFORCE_PATH_PROBLEM); if (pathProblemOpt) { auto pathProblemEnum = static_cast(std::get(*pathProblemOpt)); return (pathProblemEnum == pathProblem) ? std::optional(0) /*first index*/ : std::nullopt; } #endif for (int i = 0; i < mMegaStall->pathCount(isCloud); ++i) { if (mMegaStall->pathProblem(isCloud, i) == static_cast(pathProblem)) { return i; } } return {}; } std::string_view SyncIssue::PathProblem::getProblemStr() const { switch(mProblem) { #define SOME_GENERATOR_MACRO(pathProblem, str) case pathProblem: return str; GENERATE_FROM_PATH_PROBLEM(SOME_GENERATOR_MACRO) #undef SOME_GENERATOR_MACRO default: assert(false); return ""; } } SyncIssue::SyncIssue(const mega::MegaSyncStall &stall) : mMegaStall(stall.copy()) { } std::string SyncIssue::getId() const { assert(mMegaStall); const size_t hash = mMegaStall->getHash(); std::string id(11, '\0'); id.resize(mega::Base64::btoa(reinterpret_cast(&hash), sizeof(hash), reinterpret_cast(id.data()))); return id; } SyncInfo SyncIssue::getSyncInfo(mega::MegaSync const* parentSync) const { assert(mMegaStall); SyncInfo info; info.mReasonType = static_cast(mMegaStall->reason()); #ifdef MEGACMD_TESTING_CODE auto reasonTypeOpt = TI::Instance().testValue(TI::TestValue::SYNC_ISSUE_ENFORCE_REASON_TYPE); if (reasonTypeOpt) { info.mReasonType = static_cast(std::get(*reasonTypeOpt)); } #endif switch(info.mReasonType) { case mega::SyncWaitReason::NoReason: { info.mReason = "Error detected with '" + getDefaultFileName() + "'"; info.mDescription = "Reason not found"; break; } case mega::SyncWaitReason::FileIssue: { constexpr bool cloud = false; if (auto i = getPathProblem(mega::PathProblem::DetectedSymlink); i) { info.mReason = "Detected symlink: '" + getFileName(*i) + "'"; } else if (auto i = getPathProblem(mega::PathProblem::DetectedHardLink); i) { info.mReason = "Detected hard link: '" + getFileName(*i) + "'"; } else if (auto i = getPathProblem(mega::PathProblem::DetectedSpecialFile); i) { info.mReason = "Detected special link: '" + getFileName(*i) + "'"; } else { info.mReason = "Can't sync '" + getDefaultFileName() + "'"; } break; } case mega::SyncWaitReason::MoveOrRenameCannotOccur: { std::string syncName = (parentSync ? "'"s + parentSync->getName() + "'" : "the sync"); info.mReason = "Can't move or rename some items in " + syncName; info.mDescription = "The local and remote locations have changed at the same time"; break; } case mega::SyncWaitReason::DeleteOrMoveWaitingOnScanning: { info.mReason = "Can't find '" + getDefaultFileName() + "'"; info.mDescription = "Waiting to finish scan to see if the file was moved or deleted"; break; } case mega::SyncWaitReason::DeleteWaitingOnMoves: { info.mReason = "Waiting to move '" + getDefaultFileName() + "'"; info.mDescription = "Waiting for other processes to complete"; break; } case mega::SyncWaitReason::UploadIssue: { info.mReason = "Can't upload '" + getDefaultFileName() + "' to the selected location"; info.mDescription = "Cannot reach the destination folder"; break; } case mega::SyncWaitReason::DownloadIssue: { constexpr bool cloud = true; std::string fileName = getDefaultFileName(); if (getPathProblem(mega::PathProblem::CloudNodeInvalidFingerprint)) { info.mDescription = "File fingerprint missing"; } else if (auto i = getPathProblem(mega::PathProblem::CloudNodeIsBlocked); i) { fileName = getFileName(*i); info.mDescription = "The file '" + fileName + "' is unavailable because it was reported to contain content in breach of MEGA's Terms of Service (https://mega.io/terms)"; } else { info.mDescription = "A failure occurred either downloading the file, or moving the downloaded temporary file to its final name and location"; } info.mReason = "Can't download '" + fileName + "' to the selected location"; break; } case mega::SyncWaitReason::CannotCreateFolder: { info.mReason = "Cannot create '" + getDefaultFileName() + "'"; info.mDescription = "Filesystem error preventing folder access"; break; } case mega::SyncWaitReason::CannotPerformDeletion: { info.mReason = "Cannot perform deletion '" + getDefaultFileName() + "'"; info.mDescription = "Filesystem error preventing folder access"; break; } case mega::SyncWaitReason::SyncItemExceedsSupportedTreeDepth: { info.mReason = "Unable to sync '" + getDefaultFileName() + "'"; info.mDescription = "Target is too deep on your folder structure; please move it to a location that is less than " + std::to_string(mega::Sync::MAX_CLOUD_DEPTH) + " folders deep"; break; } case mega::SyncWaitReason::FolderMatchedAgainstFile: { info.mReason = "Unable to sync '" + getDefaultFileName() + "'"; info.mDescription = "Cannot sync folders against files"; break; } case mega::SyncWaitReason::LocalAndRemoteChangedSinceLastSyncedState_userMustChoose: case mega::SyncWaitReason::LocalAndRemotePreviouslyUnsyncedDiffer_userMustChoose: { info.mReason = "Unable to sync '" + getDefaultFileName() + "'"; info.mDescription = "This file has conflicting copies"; break; } case mega::SyncWaitReason::NamesWouldClashWhenSynced: { info.mReason = "Name conflicts: '" + getDefaultFileName() + "'"; info.mDescription = "These items contain multiple names on one side that would all become the same single name on the other side (this may be due to syncing to case insensitive local filesystems, or the effects of escaped characters)"; break; } default: { assert(false); info.mReason = ""; break; } } return info; } std::unique_ptr SyncIssue::getParentSync(mega::MegaApi& api) const { auto syncList = std::unique_ptr(api.getSyncs()); assert(syncList); for (int i = 0; i < syncList->size(); ++i) { mega::MegaSync* sync = syncList->get(i); assert(sync); if (belongsToSync(*sync)) { return std::unique_ptr(sync->copy()); } } // This is a valid result that must be taken into account // E.g., the sync was removed by another client while this issue is being handled return nullptr; } std::vector SyncIssue::getPathProblems(mega::MegaApi& api) const { return getPathProblems(api) + getPathProblems(api); } template std::vector SyncIssue::getPathProblems(mega::MegaApi& api) const { std::vector pathProblems; for (int i = 0; i < mMegaStall->pathCount(isCloud); ++i) { PathProblem pathProblem; pathProblem.mIsCloud = isCloud; pathProblem.mPath = (isCloud ? CloudPrefix : "") + mMegaStall->path(isCloud, i); pathProblem.mProblem = static_cast(std::max(0, mMegaStall->pathProblem(isCloud, i))); #ifdef MEGACMD_TESTING_CODE auto pathProblemOpt = TI::Instance().testValue(TI::TestValue::SYNC_ISSUE_ENFORCE_PATH_PROBLEM); if (pathProblemOpt) { pathProblem.mProblem = static_cast(std::get(*pathProblemOpt)); } #endif if constexpr (isCloud) { auto nodeHandle = mMegaStall->cloudNodeHandle(i); std::unique_ptr n(api.getNodeByHandle(nodeHandle)); if (n) { if (n->isFile()) { pathProblem.mPathType = "File"; pathProblem.mFileSize = n->getSize(); } else if (n->isFolder()) { pathProblem.mPathType = "Folder"; } pathProblem.mUploadedTime = n->getCreationTime(); pathProblem.mModifiedTime = n->getModificationTime(); } else { LOG_warn << "Path problem " << pathProblem.mPath << " does not have a valid node associated with it"; } } else if (std::error_code ec; fs::exists(pathProblem.mPath, ec) && !ec) { if (fs::is_directory(pathProblem.mPath, ec) && !ec) { pathProblem.mPathType = "Folder"; } else if (fs::is_regular_file(pathProblem.mPath, ec) && !ec) { pathProblem.mPathType = "File"; } else if (fs::is_symlink(pathProblem.mPath, ec) && !ec) { pathProblem.mPathType = "Symlink"; } auto lastWriteTime = fs::last_write_time(pathProblem.mPath, ec); if (!ec) { auto systemNow = std::chrono::system_clock::now(); auto fileTimeNow = fs::file_time_type::clock::now(); auto lastWriteTimePoint = std::chrono::time_point_cast(lastWriteTime - fileTimeNow + systemNow); pathProblem.mModifiedTime = lastWriteTimePoint.time_since_epoch().count(); } if (auto fileSize = fs::file_size(pathProblem.mPath, ec); !ec) { pathProblem.mFileSize = fileSize; } } pathProblems.emplace_back(std::move(pathProblem)); } return pathProblems; } bool SyncIssue::belongsToSync(const mega::MegaSync& sync) const { const char* issueCloudPath = mMegaStall->path(true, 0); const char* syncCloudPath = sync.getLastKnownMegaFolder(); assert(syncCloudPath); if (startsWith(issueCloudPath, syncCloudPath)) { return true; } const char* issueLocalPath = mMegaStall->path(false, 0); const char* syncLocalPath = sync.getLocalFolder(); assert(syncLocalPath); if (startsWith(issueLocalPath, syncLocalPath)) { return true; } return false; } SyncIssue const* SyncIssueList::getSyncIssue(const std::string& id) const { auto it = mIssuesMap.find(id); if (it == mIssuesMap.end()) { return nullptr; } return &it->second; } unsigned int SyncIssueList::getSyncIssuesCount(const mega::MegaSync& sync) const { unsigned int count = 0; for (const auto& syncIssue : *this) { if (syncIssue.second.belongsToSync(sync)) { ++count; } } return count; } void SyncIssuesManager::onSyncIssuesChanged(unsigned int newSyncIssuesSize) { std::lock_guard lock(mWarningMtx); if (mWarningEnabled && newSyncIssuesSize > 0) { std::string message = "Sync issues detected: your syncs have encountered conflicts that may require your intervention.\n"s + "Use the \"%mega-%sync-issues\" command to display them.\n" + "This message can be disabled with \"%mega-%sync-issues --disable-warning\"."; broadcastMessage(message, true); } #ifdef MEGACMD_TESTING_CODE TI::Instance().setTestValue(TI::TestValue::SYNC_ISSUES_LIST_SIZE, static_cast(newSyncIssuesSize)); TI::Instance().fireEvent(TI::Event::SYNC_ISSUES_LIST_UPDATED); #endif } SyncIssuesManager::SyncIssuesManager(mega::MegaApi *api) : mApi(*api) { // The global listener will be triggered whenever there's a change in the sync state // It'll request the sync issue list from the API (if the stalled state changed) // This will be used to notify the user if they have sync issues mGlobalListener = std::make_unique( [this, api] { api->getMegaSyncStallList(mRequestListener.get()); }); // The broadcast listener will be triggered whenever the api call above finishes // getting the list of stalls; it'll be used to notify the user (and the integration tests) mRequestListener = std::make_unique( [this] (unsigned int newSyncIssuesSize) { onSyncIssuesChanged(newSyncIssuesSize); }); mWarningEnabled = ConfigurationManager::getConfigurationValue("stalled_issues_warning", true); } SyncIssueList SyncIssuesManager::getSyncIssues() const { auto listener = std::make_unique(); mApi.getMegaSyncStallList(listener.get()); listener->wait(); return listener->releaseSyncIssues(); } void SyncIssuesManager::disableWarning() { std::lock_guard lock(mWarningMtx); if (!mWarningEnabled) { OUTSTREAM << "Note: warning is already disabled" << endl; } mWarningEnabled = false; ConfigurationManager::savePropertyValue("stalled_issues_warning", mWarningEnabled); } void SyncIssuesManager::enableWarning() { std::lock_guard lock(mWarningMtx); if (mWarningEnabled) { OUTSTREAM << "Note: warning is already enabled" << endl; } mWarningEnabled = true; ConfigurationManager::savePropertyValue("stalled_issues_warning", mWarningEnabled); } namespace SyncIssuesCommand { void printAllIssues(mega::MegaApi& api, ColumnDisplayer& cd, const SyncIssueList& syncIssues, bool disablePathCollapse, int rowCountLimit) { cd.addHeader("PARENT_SYNC", disablePathCollapse); syncIssues.forEach([&api, &cd] (const SyncIssue& syncIssue) { auto parentSync = syncIssue.getParentSync(api); cd.addValue("ISSUE_ID", syncIssue.getId()); cd.addValue("PARENT_SYNC", parentSync ? parentSync->getName() : ""); cd.addValue("REASON", syncIssue.getSyncInfo(parentSync.get()).mReason); }, rowCountLimit); OUTSTREAM << cd.str(); OUTSTREAM << endl; if (rowCountLimit < syncIssues.size()) { OUTSTREAM << "Note: showing " << rowCountLimit << " out of " << syncIssues.size() << " issues. " << "Use \"" << getCommandPrefixBasedOnMode() << "sync-issues --limit=0\" to see all of them." << endl; } OUTSTREAM << "Use \"" << getCommandPrefixBasedOnMode() << "sync-issues --detail \" to get further details on a specific issue." << endl; } void printSingleIssueDetail(mega::MegaApi& api, megacmd::ColumnDisplayer& cd, const SyncIssue& syncIssue, bool disablePathCollapse, int rowCountLimit) { auto parentSync = syncIssue.getParentSync(api); auto syncInfo = syncIssue.getSyncInfo(parentSync.get()); OUTSTREAM << syncInfo.mReason; if (!syncInfo.mDescription.empty()) { OUTSTREAM << ". " << syncInfo.mDescription << "."; } OUTSTREAM << endl; OUTSTREAM << "Parent sync: "; if (parentSync) { OUTSTREAM << syncBackupIdToBase64(parentSync->getBackupId()) << " (" << parentSync->getLocalFolder() << " to " << SyncIssue::CloudPrefix << parentSync->getLastKnownMegaFolder() << ")"; } else { OUTSTREAM << ""; } OUTSTREAM << endl << endl; cd.addHeader("PATH", disablePathCollapse); mega::SyncWaitReason syncIssueReason = syncIssue.getSyncInfo(parentSync.get()).mReasonType; auto pathProblems = syncIssue.getPathProblems(api); for (int i = 0; i < pathProblems.size() && i < rowCountLimit; ++i) { const auto& pathProblem = pathProblems[i]; const char* timeFmt = "%Y-%m-%d %H:%M:%S"; cd.addValue("PATH", pathProblem.mPath); if (syncIssueReason == mega::SyncWaitReason::FolderMatchedAgainstFile) { cd.addValue("TYPE", pathProblem.mPathType); } else { cd.addValue("PATH_ISSUE", std::string(pathProblem.getProblemStr())); } cd.addValue("LAST_MODIFIED", pathProblem.mModifiedTime ? getReadableTime(pathProblem.mModifiedTime, timeFmt) : "-"); cd.addValue("UPLOADED", pathProblem.mUploadedTime ? getReadableTime(pathProblem.mUploadedTime, timeFmt) : "-"); cd.addValue("SIZE", pathProblem.mFileSize >= 0 ? sizeToText(pathProblem.mFileSize) : "-"); } OUTSTREAM << cd.str(); if (rowCountLimit < pathProblems.size()) { OUTSTREAM << endl; OUTSTREAM << "Note: showing " << rowCountLimit << " out of " << static_cast(pathProblems.size()) << " path problems. " << "Use \"" << getCommandPrefixBasedOnMode() << "sync-issues --detail " << syncIssue.getId() << " --limit=0\" to see all of them." << endl; } } void printAllIssuesDetail(mega::MegaApi& api, megacmd::ColumnDisplayer& cd, const SyncIssueList& syncIssues, bool disablePathCollapse, int rowCountLimit) { // We'll use the row count limit only for the path problems; since the user has added "--all", // we assume they want to see all issues, and thus the limit doesn't apply to the issue list in this case for (auto it = syncIssues.begin(); it != syncIssues.end(); ++it) { const auto& syncIssue = *it; assert(syncIssue.first == syncIssue.second.getId()); OUTSTREAM << "[Details on issue " << syncIssue.first << "]" << endl; printSingleIssueDetail(api, cd, syncIssue.second, disablePathCollapse, rowCountLimit); if (it != std::prev(syncIssues.end())) { OUTSTREAM << endl << endl; } cd.clear(); } } } MEGAcmd-2.5.2_Linux/src/sync_issues.h000066400000000000000000000174451516543156300174270ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include #include #include #include #include "megaapi.h" #include "mega/types.h" #include "megacmdcommonutils.h" #define GENERATE_FROM_PATH_PROBLEM(GENERATOR_MACRO) \ GENERATOR_MACRO(mega::PathProblem::NoProblem, "-") \ GENERATOR_MACRO(mega::PathProblem::FileChangingFrequently, "File is changing frequently") \ GENERATOR_MACRO(mega::PathProblem::IgnoreRulesUnknown, "Ignore rules are unknown") \ GENERATOR_MACRO(mega::PathProblem::DetectedHardLink, "Hard link detected") \ GENERATOR_MACRO(mega::PathProblem::DetectedSymlink, "Symlink detected") \ GENERATOR_MACRO(mega::PathProblem::DetectedSpecialFile, "Special file detected") \ GENERATOR_MACRO(mega::PathProblem::DifferentFileOrFolderIsAlreadyPresent, "A different file/folder is already present") \ GENERATOR_MACRO(mega::PathProblem::ParentFolderDoesNotExist, "Parent folder does not exist") \ GENERATOR_MACRO(mega::PathProblem::FilesystemErrorDuringOperation, "There was a filesystem error during operation") \ GENERATOR_MACRO(mega::PathProblem::NameTooLongForFilesystem, "Name is too long for filesystem") \ GENERATOR_MACRO(mega::PathProblem::CannotFingerprintFile, "File fingerprint cannot be obtained") \ GENERATOR_MACRO(mega::PathProblem::DestinationPathInUnresolvedArea, "Destination path (or one of its parents) is unresolved") \ GENERATOR_MACRO(mega::PathProblem::MACVerificationFailure, "Failure verifying MAC") \ GENERATOR_MACRO(mega::PathProblem::UnknownDownloadIssue, "There was an issue downloading to destination directory") \ GENERATOR_MACRO(mega::PathProblem::DeletedOrMovedByUser, "Deleted or moved by user") \ GENERATOR_MACRO(mega::PathProblem::FileFolderDeletedByUser, "File or folder deleted by user") \ GENERATOR_MACRO(mega::PathProblem::MoveToDebrisFolderFailed, "Move to debris folder failed") \ GENERATOR_MACRO(mega::PathProblem::IgnoreFileMalformed, "Ignore file is malformed") \ GENERATOR_MACRO(mega::PathProblem::FilesystemErrorListingFolder, "There was a filesystem error listing the folder") \ GENERATOR_MACRO(mega::PathProblem::WaitingForScanningToComplete, "Waiting for scanning to complete") \ GENERATOR_MACRO(mega::PathProblem::WaitingForAnotherMoveToComplete, "Waiting for another move to complete") \ GENERATOR_MACRO(mega::PathProblem::SourceWasMovedElsewhere, "The source was moved somewhere else") \ GENERATOR_MACRO(mega::PathProblem::FilesystemCannotStoreThisName, "The filesystem cannot store this name") \ GENERATOR_MACRO(mega::PathProblem::CloudNodeInvalidFingerprint, "Cloud node has invalid fingerprint") \ GENERATOR_MACRO(mega::PathProblem::CloudNodeIsBlocked, "Cloud node is blocked") \ GENERATOR_MACRO(mega::PathProblem::PutnodeDeferredByController, "Putnode deferred by controller") \ GENERATOR_MACRO(mega::PathProblem::PutnodeCompletionDeferredByController, "Putnode completion deferred by controller") \ GENERATOR_MACRO(mega::PathProblem::PutnodeCompletionPending, "Putnode completion pending") \ GENERATOR_MACRO(mega::PathProblem::UploadDeferredByController, "Upload deferred by controller") \ GENERATOR_MACRO(mega::PathProblem::DetectedNestedMount, "Nested mount detected") struct SyncInfo { mega::SyncWaitReason mReasonType = mega::SyncWaitReason::NoReason; std::string mReason; std::string mDescription; }; class SyncIssue { std::unique_ptr mMegaStall; // Returns the cloud/local file path with index i template std::string getFilePath(int i = 0) const; // Returns the file name of the cloud/local path with index i template std::string getFileName(int i) const; // Returns the file name of path 0, with preference for cloud or local template std::string getDefaultFileName() const; // Returns the index of the first path problem of a particular type (if any) template std::optional getPathProblem(mega::PathProblem pathProblem) const; public: // We add this prefix at the start to distinguish between cloud and local absolute paths inline static const std::string CloudPrefix = ""; struct PathProblem { bool mIsCloud = false; std::string mPath; std::string mPathType = ""; mega::PathProblem mProblem = mega::PathProblem::NoProblem; int64_t mModifiedTime = 0; // in seconds since epoch int64_t mUploadedTime = 0; // in seconds since epoch int64_t mFileSize = -1; std::string_view getProblemStr() const; }; SyncIssue(const mega::MegaSyncStall& stall); std::string getId() const; SyncInfo getSyncInfo(mega::MegaSync const* parentSync) const; std::vector getPathProblems(mega::MegaApi& api) const; template std::vector getPathProblems(mega::MegaApi& api) const; std::unique_ptr getParentSync(mega::MegaApi& api) const; bool belongsToSync(const mega::MegaSync& sync) const; }; class SyncIssueList { using SyncIssuesMapT = std::map; SyncIssuesMapT mIssuesMap; friend class SyncIssuesRequestListener; // only one that can actually populate this public: template void forEach(Cb&& callback, size_t sizeLimit) const { for (auto it = begin(); it != end() && std::distance(begin(), it) < sizeLimit; ++it) { callback(it->second); } } SyncIssue const* getSyncIssue(const std::string& id) const; unsigned int getSyncIssuesCount(const mega::MegaSync& sync) const; bool empty() const { return mIssuesMap.empty(); } unsigned int size() const { return mIssuesMap.size(); } SyncIssuesMapT::const_iterator begin() const { return mIssuesMap.begin(); } SyncIssuesMapT::const_iterator end() const { return mIssuesMap.end(); } }; class SyncIssuesManager final { mega::MegaApi& mApi; bool mWarningEnabled; std::mutex mWarningMtx; std::unique_ptr mGlobalListener; std::unique_ptr mRequestListener; private: void onSyncIssuesChanged(unsigned int newSyncIssuesSize); public: SyncIssuesManager(mega::MegaApi *api); SyncIssueList getSyncIssues() const; void disableWarning(); void enableWarning(); mega::MegaGlobalListener* getGlobalListener() const { return mGlobalListener.get(); } }; namespace SyncIssuesCommand { void printAllIssues(mega::MegaApi& api, megacmd::ColumnDisplayer& cd, const SyncIssueList& syncIssues, bool disablePathCollapse, int rowCountLimit); void printSingleIssueDetail(mega::MegaApi& api, megacmd::ColumnDisplayer& cd, const SyncIssue& syncIssue, bool disablePathCollapse, int rowCountLimit); void printAllIssuesDetail(mega::MegaApi& api, megacmd::ColumnDisplayer& cd, const SyncIssueList& syncIssues, bool disablePathCollapse, int rowCountLimit); } MEGAcmd-2.5.2_Linux/src/updater/000077500000000000000000000000001516543156300163405ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/src/updater/MacUtils.h000066400000000000000000000002241516543156300202300ustar00rootroot00000000000000#ifndef MACUTILS_H #define MACUTILS_H #include bool downloadFileSynchronously(std::string url, std::string path); #endif // MACUTILS_H MEGAcmd-2.5.2_Linux/src/updater/MacUtils.mm000066400000000000000000000011031516543156300204070ustar00rootroot00000000000000#include "MacUtils.h" #include bool downloadFileSynchronously(std::string url, std::string path) { NSString *stringURL = [NSString stringWithCString:url.c_str() encoding:NSUTF8StringEncoding]; NSURL *myURL = [NSURL URLWithString:stringURL]; NSData *data = [NSData dataWithContentsOfURL:myURL]; if (data == nil) { return false; } BOOL result = [data writeToFile:[NSString stringWithCString:path.c_str() encoding:NSUTF8StringEncoding] atomically:NO]; if (result == NO) { return false; } return true; } MEGAcmd-2.5.2_Linux/src/updater/MegaUpdater.cpp000066400000000000000000000153161516543156300212500ustar00rootroot00000000000000#ifdef _WIN32 #define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING #include #include #include #include #include #else #include #include #include //flock #include #include #endif #include #include #include #include #include "UpdateTask.h" #include "Preferences.h" using namespace std; namespace megacmdupdater { bool extractarg(vector& args, const char *what) { for (int i = int(args.size()); i--; ) { if (!strcmp(args[i], what)) { args.erase(args.begin() + i); return true; } } return false; } int extractVersionArg(vector& args) { auto it = std::find_if(args.begin(), args.end(), [] (const char* s) { return !strcmp(s, "--version"); }); if (it == args.end() || std::next(it) == args.end()) { return -1; } const char* versionStr = *std::next(it); args.erase(it, std::next(it, 2)); try { return std::stoi(versionStr); } catch (const std::exception& e) { return -1; } } #if !defined(_WIN32) && defined(LOCK_EX) && defined(LOCK_NB) static int fdMcmdUpdaterLockFile; #endif #ifdef _WIN32 void utf8ToUtf16(const char* utf8data, string* utf16string) { if(!utf8data) { utf16string->clear(); utf16string->append("", 1); return; } DWORD size = (DWORD)strlen(utf8data) + 1; // make space for the worst case utf16string->resize(size * sizeof(wchar_t)); // resize to actual result utf16string->resize(sizeof(wchar_t) * MultiByteToWideChar(CP_UTF8, 0, utf8data, size, (wchar_t*)utf16string->data(), int(utf16string->size() / sizeof(wchar_t) + 1))); if (utf16string->size()) { utf16string->resize(utf16string->size() - 1); } else { utf16string->append("", 1); } } void utf16ToUtf8(const wchar_t* utf16data, int utf16size, string* utf8string) { if(!utf16size) { utf8string->clear(); return; } utf8string->resize((utf16size + 1) * 4); utf8string->resize(WideCharToMultiByte(CP_UTF8, 0, utf16data, utf16size, (char*)utf8string->data(), int(utf8string->size()) + 1, NULL, NULL)); } #endif string getLockFile() { string configFolder; #ifdef _WIN32 TCHAR szPath[MAX_PATH]; if (!SUCCEEDED(GetModuleFileName(NULL, szPath , MAX_PATH))) { cerr << "Couldnt get EXECUTABLE folder" << endl; } else { if (SUCCEEDED(PathRemoveFileSpec(szPath))) { utf16ToUtf8(szPath, lstrlen(szPath), &configFolder); } } #else const char *homedir = NULL; homedir = getenv("HOME"); if (!homedir) { struct passwd pd; struct passwd* pwdptr = &pd; struct passwd* tempPwdPtr; char pwdbuffer[200]; int pwdlinelen = sizeof( pwdbuffer ); if (( getpwuid_r(22, pwdptr, pwdbuffer, pwdlinelen, &tempPwdPtr)) != 0) { cerr << "Couldnt get HOME folder" << endl; return string(); } else { homedir = pwdptr->pw_dir; } } configFolder = homedir; #endif if (configFolder.size()) { stringstream lockfile; lockfile << configFolder << "/" << "lockMCMDUpdater"; return lockfile.str(); } return string(); } bool lockExecution() { string thelockfile = getLockFile(); if (thelockfile.size()) { #ifdef _WIN32 string wlockfile; utf8ToUtf16(thelockfile.c_str(),&wlockfile); OFSTRUCT offstruct; if (LZOpenFileW((LPWSTR)wlockfile.data(), &offstruct, OF_CREATE | OF_READWRITE |OF_SHARE_EXCLUSIVE ) == HFILE_ERROR) { return false; } #elif defined(LOCK_EX) && defined(LOCK_NB) fdMcmdUpdaterLockFile = open(thelockfile.c_str(), O_RDWR | O_CREAT, 0666); // open or create lockfile //check open success... if (flock(fdMcmdUpdaterLockFile, LOCK_EX | LOCK_NB)) { return false; } if (fcntl(fdMcmdUpdaterLockFile, F_SETFD, FD_CLOEXEC) == -1) { cerr << "ERROR setting CLOEXEC to lock fdMcmdUpdaterLockFile: " << errno << endl; } #else ifstream fi(thelockfile.c_str()); if(!fi.fail()){ return false; } if (fi.is_open()) { fi.close(); } ofstream fo(thelockfile.c_str()); if (fo.is_open()) { fo.close(); } #endif return true; } else { cerr << "ERROR figuring out lock file " << endl; return false; } } void unlockExecution() { string thelockfile = getLockFile(); if (thelockfile.size()) { #if !defined(_WIN32) && defined(LOCK_EX) && defined(LOCK_NB) flock(fdMcmdUpdaterLockFile, LOCK_UN | LOCK_NB); close(fdMcmdUpdaterLockFile); #endif #ifdef WIN32 _unlink(thelockfile.c_str()); #else unlink(thelockfile.c_str()); #endif } else { cerr << "ERROR figuring out lock file " << endl; } } }//end of namespace using namespace megacmdupdater; #ifdef _WIN32 int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR szCmdLine,int iCmdShow) { int argc = __argc; char** argv = __argv; #else int main(int argc, char *argv[]) { #endif vector args; if (argc > 1) { args = vector(argv + 1, argv + argc); } bool doNotInstall = extractarg(args, "--do-not-install"); bool emergencyupdate = extractarg(args, "--emergency-update"); bool skiplockcheck = extractarg(args, "--skip-lock-check"); int currentVersion = extractVersionArg(args); #ifdef _WIN32 if(!emergencyupdate) { AllocConsole(); freopen("CONOUT$", "w+", stdout); } #endif if (!lockExecution() && !skiplockcheck) { cerr << "Another instance of MEGAcmd Updater is running. Execute with --skip-lock-check to force running (NOT RECOMMENDED)" << endl; return 0; } time_t currentTime = time(NULL); cout << "Process started at " << ctime(¤tTime) << endl; srand(unsigned(currentTime)); UpdateTask updater; bool updated = updater.checkForUpdates(emergencyupdate, doNotInstall, currentVersion); currentTime = time(NULL); cout << "Process finished at " << ctime(¤tTime) << endl; unlockExecution(); if (getenv("SLEEP_AFTER_UPDATE")) { #ifdef _WIN32 Sleep(15*1000); #else sleep(15); #endif } return updated; } MEGAcmd-2.5.2_Linux/src/updater/Preferences.h000066400000000000000000000032701516543156300207540ustar00rootroot00000000000000#ifndef PREFERENCES_H #define PREFERENCES_H const char CLIENT_KEY[] = "BdARkQSQ"; const char USER_AGENT[] = "MEGA/MEGAcmdUpdaterTask"; #ifdef _WIN32 #ifdef _WIN64 const char UPDATE_CHECK_URL[] = "http://g.static.mega.co.nz/upd/wcmd64/v.txt"; const char EMERGENCY_UPDATE_CHECK_URL[] = "http://g.static.mega.co.nz/eupd/wcmd64/v.txt"; #else const char UPDATE_CHECK_URL[] = "http://g.static.mega.co.nz/upd/wcmd/v.txt"; const char EMERGENCY_UPDATE_CHECK_URL[] = "http://g.static.mega.co.nz/eupd/wcmd/v.txt"; #endif #else const char UPDATE_CHECK_URL[] = "http://g.static.mega.co.nz/upd/mcmd/v.txt"; const char EMERGENCY_UPDATE_CHECK_URL[] = "http://g.static.mega.co.nz/eupd/mcmd/v.txt"; const char APP_DIR_BUNDLE[] = "/Applications/MEGAcmd.app/"; #endif const char UPDATE_PUBLIC_KEY[] = "EACuusrffoqCAsjS824EsQ04pvuDKHUd8PCAfPLsowLBMGWmcxmX-tgk05EXkdyHZPixEda96XadqudlQOEYLBlxMgcAwDkewKoW1XtBQVm3wXeHIvEeBimpWWU6Z6qYP5BiCbW-wCTDS67f4LdkrbA4hcJiVTxQxRUxoJU-I-DCh0ZLCxdrXHpWBrXGv9hFfxMFhr01YGxcW1tgqRx5r6q3YPpFaGo-q9ib3YIBE2HMAc_n_ayz4g5HMAq-C61WT_vhHzPnoCUwpRH68TCoop-3VlYTo8Ps-Xzno1OazCH6VM5MiCLS0X5jhh54RveVZn44MRMLDdj3jzUed4-hFgOXNYLLX1kDRlXiDwGtht-wPJF7BLNVkRolfOUrsONmw3Tbz_ywB-TK7pjhlYoMo7enwABT1iBQoub80OEi-1ltMnzFRWu6o7KCsCqnDtJpALG04B6E1aWvO2HK0-UQNIAPfbErtG4pVVirIaSq4vX5BlmYJ_XCAsaFuLufJvBQBIEwCJRdQ96o4plgzHuJwlaEeYd2dMEjafOi3DBPV7OjN9H7yI0NyHDrqV_hDAmMqHHPu3hdhqkdrSFmcMVGsxXkaOnXDNmJfdwr_mostPY-Uwx_g2vRHKgLpkntlIlvh0GALEzLpukdmnKgXrUNRXrIyyjoRXGNMlBTdV8vAMlGVQAFEQ"; const char UPDATE_FILENAME[] = "v.txt"; const char UPDATE_FOLDER_NAME[] = "eupdate"; const char BACKUP_FOLDER_NAME[] = "ebackup"; const char VERSION_FILE_NAME[] = "megacmd.version"; #endif // PREFERENCES_H MEGAcmd-2.5.2_Linux/src/updater/UpdateTask.cpp000066400000000000000000001102451516543156300211140ustar00rootroot00000000000000#include #include #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #include #include #include #include #include #include #include #include #else #include #include #include #include #include #endif #include "UpdateTask.h" #include "Preferences.h" #include "MacUtils.h" #ifndef WIN32 #include "../megacmdcommonutils.h" // Platform dirs #endif #include "../megacmdversion.h" using std::string; using CryptoPP::Integer; using std::cout; using std::endl; using std::vector; enum { LOG_LEVEL_FATAL = 0, // Very severe error event that will presumably lead the application to abort. LOG_LEVEL_ERROR, // Error information but will continue application to keep running. LOG_LEVEL_WARNING, // Information representing errors in application but application will keep running LOG_LEVEL_INFO, // Mainly useful to represent current progress of application. LOG_LEVEL_DEBUG, // Informational logs, that are useful for developers. Only applicable if DEBUG is defined. LOG_LEVEL_MAX }; #define MAX_LOG_SIZE 1024 char log_message[MAX_LOG_SIZE]; #define LOG(logLevel, ...) snprintf(log_message, MAX_LOG_SIZE, __VA_ARGS__); \ cout << log_message << endl; #ifdef _WIN32 #ifndef PATH_MAX #define PATH_MAX _MAX_PATH #endif #define MEGA_SEPARATOR '\\' void utf8ToUtf16(const char* utf8data, string* utf16string) { if(!utf8data) { utf16string->clear(); utf16string->append("", 1); return; } DWORD size = (DWORD)strlen(utf8data) + 1; // make space for the worst case utf16string->resize(size * sizeof(wchar_t)); // resize to actual result utf16string->resize(sizeof(wchar_t) * MultiByteToWideChar(CP_UTF8, 0, utf8data, size, (wchar_t*)utf16string->data(), int(utf16string->size() / sizeof(wchar_t) + 1))); if (utf16string->size()) { utf16string->resize(utf16string->size() - 1); } else { utf16string->append("", 1); } } void utf16ToUtf8(const wchar_t* utf16data, int utf16size, string* utf8string) { if(!utf16size) { utf8string->clear(); return; } utf8string->resize((utf16size + 1) * 4); utf8string->resize(WideCharToMultiByte(CP_UTF8, 0, utf16data, utf16size, (char*)utf8string->data(), int(utf8string->size()) + 1, NULL, NULL)); } int mega_mkdir(const char *path) { string wpath; utf8ToUtf16(path, &wpath); wpath.append("", 1); return _wmkdir((LPCWSTR)wpath.data()); } int mega_access(const char *path) { string wpath; utf8ToUtf16(path, &wpath); wpath.append("", 1); return _waccess((LPCWSTR)wpath.data(), 0); } FILE *mega_fopen(const char *path, const char *mode) { string wpath; utf8ToUtf16(path, &wpath); wpath.append("", 1); string wmode; utf8ToUtf16(mode, &wmode); wmode.append("", 1); return _wfopen((LPCWSTR)wpath.data(), (LPCWSTR)wmode.data()); } int mega_remove(const char *path) { string wpath; utf8ToUtf16(path, &wpath); wpath.append("", 1); return _wremove((LPCWSTR)wpath.data()); } int64_t mega_size(const char *path) { string wpath; utf8ToUtf16(path, &wpath); wpath.append("", 1); WIN32_FILE_ATTRIBUTE_DATA fad; if (!GetFileAttributesExW((LPCWSTR)wpath.data(), GetFileExInfoStandard, (LPVOID)&fad)) { //DWORD e = GetLastError(); return -1; } return ((int64_t)fad.nFileSizeHigh << 32) + (int64_t)fad.nFileSizeLow; } int mega_rename(const char *srcpath, const char *dstpath) { string wsrcpath; utf8ToUtf16(srcpath, &wsrcpath); wsrcpath.append("", 1); string wdstpath; utf8ToUtf16(dstpath, &wdstpath); wdstpath.append("", 1); return _wrename((LPCWSTR)wsrcpath.data(),(LPCWSTR)wdstpath.data()); } int mega_rmdir(const char *path) { string wpath; utf8ToUtf16(path, &wpath); wpath.append("", 1); return _wrmdir((LPCWSTR)wpath.data()); } string UpdateTask::getAppDataDir() { string path; TCHAR szPath[MAX_PATH]; if (!SUCCEEDED(GetModuleFileName(NULL, szPath , MAX_PATH))) { LOG(LOG_LEVEL_ERROR, "Couldnt get EXECUTABLE folder"); } else { if (SUCCEEDED(PathRemoveFileSpec(szPath))) { if (PathAppend(szPath,TEXT(".megaCmd"))) { utf16ToUtf8(szPath, lstrlen(szPath), &path); path.append("\\"); } } } return path; } string UpdateTask::getAppDir() { string path; string wpath; wpath.resize(MAX_PATH * sizeof (wchar_t)); if (SUCCEEDED(GetModuleFileNameW(NULL, (LPWSTR)wpath.data() , MAX_PATH)) && SUCCEEDED(PathRemoveFileSpecW((LPWSTR)wpath.data()))) { utf16ToUtf8((LPWSTR)wpath.data(), lstrlen((LPCWSTR)wpath.data()), &path); path.append("\\"); } return path; } #define MEGA_TO_NATIVE_SEPARATORS(x) std::replace(x.begin(), x.end(), '/', '\\'); #define MEGA_SET_PERMISSIONS #else int64_t mega_size(const char *path) { struct stat statbuf; string localname = path; #ifdef USE_IOS if (PosixFileSystemAccess::appbasepath) { if (localname.size() && localname.at(0) != '/') { localname.insert(0, PosixFileSystemAccess::appbasepath); } } #endif if (!stat(localname.c_str(), &statbuf)) { if (S_ISDIR(statbuf.st_mode)) { return -1; } return statbuf.st_size; } return -1; } #define MEGA_SEPARATOR '/' #define mega_mkdir(x) mkdir(x, S_IRWXU) #define mega_access(x) access(x, F_OK) #define mega_fopen fopen #define mega_remove remove #define mega_rename rename #define mega_rmdir rmdir string UpdateTask::getAppDataDir() { auto dirs = megacmd::PlatformDirectories::getPlatformSpecificDirectories(); return dirs->configDirPath().string(); } #define MEGA_TO_NATIVE_SEPARATORS(x) std::replace(x.begin(), x.end(), '\\', '/'); #define MEGA_SET_PERMISSIONS chmod("/Applications/MEGAcmd.app/Contents/MacOS/mega-cmd", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); \ chmod("/Applications/MEGAcmd.app/Contents/MacOS/MEGAcmdShell", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); \ chmod("/Applications/MEGAcmd.app/Contents/MacOS/MEGAcmd", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); \ chmod("/Applications/MEGAcmd.app/Contents/MacOS/MEGAcmdUpdater", S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); string UpdateTask::getAppDir() { return APP_DIR_BUNDLE; } #endif #define mega_base_path(x) x.substr(0, x.find_last_of("/\\") + 1) int mkdir_p(const char *path) { /* Adapted from http://stackoverflow.com/a/2336245/119527 */ const size_t len = strlen(path); char _path[PATH_MAX]; char *p; errno = 0; /* Copy string so its mutable */ if (len > sizeof(_path) - 1) { return -1; } strcpy(_path, path); /* Iterate the string */ for (p = _path + 1; *p; p++) { if (*p == '\\' || *p == '/') { /* Temporarily truncate */ *p = '\0'; if (mega_mkdir(_path) != 0 && errno != EEXIST) { return -1; } *p = MEGA_SEPARATOR; } } if (mega_mkdir(_path) != 0 && errno != EEXIST) { return -1; } return 0; } UpdateTask::UpdateTask() { isPublic = false; string updatePublicKey = UPDATE_PUBLIC_KEY; if (getenv("MEGA_UPDATE_PUBLIC_KEY")) { updatePublicKey = getenv("MEGA_UPDATE_PUBLIC_KEY"); } signatureChecker = new SignatureChecker(updatePublicKey.c_str()); currentFile = 0; updateVersion = 0; currentVersion = MEGACMD_CODE_VERSION; appDataFolder = getAppDataDir(); appFolder = getAppDir(); updateFolder = appDataFolder + UPDATE_FOLDER_NAME + MEGA_SEPARATOR; backupFolder = appDataFolder + BACKUP_FOLDER_NAME + MEGA_SEPARATOR; #ifdef _WIN32 WCHAR commonPath[MAX_PATH + 1]; if (SHGetSpecialFolderPathW(NULL, commonPath, CSIDL_COMMON_APPDATA, FALSE)) { string wappFolder; int len = lstrlen(commonPath); utf8ToUtf16(appFolder.c_str(), &wappFolder); if (!memcmp(commonPath, (WCHAR *)wappFolder.data(), len * sizeof(WCHAR)) && wappFolder.size() > (len * sizeof(WCHAR)) && *((WCHAR *)(wappFolder.data() + (len * sizeof(WCHAR)))) == L'\\') { isPublic = true; LOG(LOG_LEVEL_INFO, "The installation is public"); } } #endif } UpdateTask::~UpdateTask() { delete signatureChecker; } bool UpdateTask::checkForUpdates(bool emergencyUpdater, bool doNotInstall, int _currentVersion) { LOG(LOG_LEVEL_INFO, "Starting update check"); bool hasOverride = getenv("MEGACMD_VERSION_OVERRIDE"); if (hasOverride) { try { currentVersion = std::stoi(getenv("MEGACMD_VERSION_OVERRIDE")); } catch (...) { hasOverride = false; } } if (!hasOverride && _currentVersion != -1) { currentVersion = _currentVersion; } // Create random sequence for http request string randomSec("?"); for (int i = 0; i < 10; i++) { randomSec += char('A'+ (rand() % 26)); } if (!appFolder.size() || !appDataFolder.size()) { LOG(LOG_LEVEL_ERROR, "No app or data folder set"); return false; } string appData = appDataFolder; string updateFile = appData.append(UPDATE_FILENAME); string updateurl=emergencyUpdater?EMERGENCY_UPDATE_CHECK_URL:UPDATE_CHECK_URL; updateurl.append(randomSec); if (getenv("USE_UPDATE_TEST_FILE")) { if (updateurl.find("v.txt") != string::npos) { updateurl = updateurl.replace(updateurl.find("v.txt"),strlen("v.txt"),"vv.txt"); } } if (getenv("MEGA_UPDATE_CHECK_URL")) { updateurl = getenv("MEGA_UPDATE_CHECK_URL"); } if (downloadFile((char *)(updateurl.c_str()), updateFile.c_str())) { FILE * pFile; pFile = mega_fopen(updateFile.c_str(), "r"); if (!pFile) { LOG(LOG_LEVEL_ERROR, "Error opening update file"); mega_remove(updateFile.c_str()); return false; } if (!processUpdateFile(pFile)) { fclose(pFile); mega_remove(updateFile.c_str()); return false; } initialCleanup(); fclose(pFile); mega_remove(updateFile.c_str()); currentFile = 0; while (currentFile < downloadURLs.size()) { if (!alreadyDownloaded(localPaths[currentFile], fileSignatures[currentFile])) { //Create the folder for the new file string localFile = updateFolder + localPaths[currentFile]; if (mkdir_p(mega_base_path(localFile).c_str()) == -1) { LOG(LOG_LEVEL_INFO, "Unable to create folder for file: %s", localFile.c_str()); return false; } //Delete the file if exists if (fileExist(localFile.c_str())) { mega_remove(localFile.c_str()); } //Download file to specific folder if (downloadFile(string(downloadURLs[currentFile] + randomSec).c_str(), localFile)) { LOG(LOG_LEVEL_INFO, "File ready: %s", localPaths[currentFile].c_str()); if (!alreadyDownloaded(localPaths[currentFile], fileSignatures[currentFile])) { LOG(LOG_LEVEL_ERROR, "Signature of downloaded file doesn't match: %s", localPaths[currentFile].c_str()); return false; } LOG(LOG_LEVEL_INFO, "File signature OK: %s", localPaths[currentFile].c_str()); currentFile++; continue; } return false; } LOG(LOG_LEVEL_INFO, "File already downloaded: %s", localPaths[currentFile].c_str()); currentFile++; } if (!doNotInstall) { //All files have been processed. Apply update if (!performUpdate()) { LOG(LOG_LEVEL_INFO, "Error applying update"); return false; } finalCleanup(); } else { LOG(LOG_LEVEL_INFO, "Do Not Install requested. Perform update skipped."); } return true; } else { LOG(LOG_LEVEL_ERROR, "Unable to download file"); return false; } } #ifndef WIN32 #ifdef __linux__ string <rimEtcProperty(string &s, const char &c) { size_t pos = s.find_first_not_of(c); s = s.substr(pos == string::npos ? s.length() : pos, s.length()); return s; } string &rtrimEtcProperty(string &s, const char &c) { size_t pos = s.find_last_not_of(c); if (pos != string::npos) { pos++; } s = s.substr(0, pos); return s; } string &trimEtcproperty(string &what) { rtrimEtcProperty(what,' '); ltrimEtcProperty(what,' '); if (what.size() > 1) { if (what[0] == '\'' || what[0] == '"') { rtrimEtcProperty(what, what[0]); ltrimEtcProperty(what, what[0]); } } return what; } string getPropertyFromEtcFile(const char *configFile, const char *propertyName) { std::ifstream infile(configFile); string line; while (getline(infile, line)) { if (line.length() > 0 && line[0] != '#') { if (!strlen(propertyName)) //if empty return first line { return trimEtcproperty(line); } string key, value; size_t pos = line.find("="); if (pos != string::npos && ((pos + 1) < line.size())) { key = line.substr(0, pos); rtrimEtcProperty(key, ' '); if (!strcmp(key.c_str(), propertyName)) { value = line.substr(pos + 1); return trimEtcproperty(value); } } } } return string(); } string getDistro() { string distro; distro = getPropertyFromEtcFile("/etc/lsb-release", "DISTRIB_ID"); if (!distro.size()) { distro = getPropertyFromEtcFile("/etc/os-release", "ID"); } if (!distro.size()) { distro = getPropertyFromEtcFile("/etc/redhat-release", ""); } if (!distro.size()) { distro = getPropertyFromEtcFile("/etc/debian-release", ""); } if (distro.size() > 20) { distro = distro.substr(0, 20); } transform(distro.begin(), distro.end(), distro.begin(), ::tolower); return distro; } string getDistroVersion() { string version; version = getPropertyFromEtcFile("/etc/lsb-release", "DISTRIB_RELEASE"); if (!version.size()) { version = getPropertyFromEtcFile("/etc/os-release", "VERSION_ID"); } if (version.size() > 10) { version = version.substr(0, 10); } transform(version.begin(), version.end(), version.begin(), ::tolower); return version; } #endif string osversion() { string toret; auto u = &toret; #ifdef __linux__ string distro = getDistro(); if (distro.size()) { u->append(distro); string distroversion = getDistroVersion(); if (distroversion.size()) { u->append(" "); u->append(distroversion); u->append("/"); } else { u->append("/"); } } #endif utsname uts; if (!uname(&uts)) { u->append(uts.sysname); u->append(" "); u->append(uts.release); u->append(" "); u->append(uts.machine); } return toret; } #endif bool UpdateTask::downloadFile(string url, string dstPath) { LOG(LOG_LEVEL_INFO, "Downloading updated file from: %s", url.c_str()); #ifdef _WIN32 string wurl; string wdstPath; wurl.resize((url.size() + 1) * 4); utf8ToUtf16(url.c_str(), &wurl); wurl.append("", 1); wdstPath.resize((url.size() + 1) * 4); utf8ToUtf16(dstPath.c_str(), &wdstPath); wdstPath.append("", 1); HRESULT res = URLDownloadToFileW(NULL, (LPCWSTR)wurl.data(), (LPCWSTR)wdstPath.data(), 0, NULL); if (res != S_OK) { LOG(LOG_LEVEL_ERROR, "Unable to download file. Error code: %d", res); return false; } if (!fileExist(dstPath.c_str())) // URLDownloadToFileW does not create an empty file { //create empty file FILE * pFileEmpty = mega_fopen(dstPath.c_str(), "wt+"); if (pFileEmpty == NULL) { LOG(LOG_LEVEL_ERROR, "Couldn't create empty file: %s", dstPath.c_str()); return false; } fclose(pFileEmpty); } #elif defined(__MACH__) bool success = downloadFileSynchronously(url, dstPath); if (!success) { LOG(LOG_LEVEL_ERROR, "Unable to download file %s to %s.", url.c_str(), dstPath.c_str()); return false; } #else string dlcommand = "curl "; dlcommand.append(" -A "); dlcommand.append(" \"MEGAcmdUpdater "); dlcommand.append(osversion()); dlcommand.append("\" "); dlcommand.append(url.c_str()); dlcommand.append(" -o "); dlcommand.append(dstPath); system(dlcommand.c_str()); #endif LOG(LOG_LEVEL_INFO, "File downloaded OK"); return true; } bool UpdateTask::processUpdateFile(FILE *fd) { LOG(LOG_LEVEL_DEBUG, "Reading update info"); string version = readNextLine(fd); if (version.empty()) { LOG(LOG_LEVEL_WARNING, "Invalid update info"); return false; } try { updateVersion = std::stoi(version); } catch (const std::exception& e) { LOG(LOG_LEVEL_ERROR, "Error converting the version string to an integer"); return false; } if (updateVersion <= currentVersion) { LOG(LOG_LEVEL_INFO, "Update not needed. Last version: %d - Current version: %d", updateVersion, currentVersion); return false; } LOG(LOG_LEVEL_WARNING, "Update needed"); string updateSignature = readNextLine(fd); if (updateSignature.empty()) { LOG(LOG_LEVEL_ERROR, "Invalid update info (empty info signature)"); return false; } initSignature(); addToSignature(version.data(), version.length()); while (true) { string url = readNextLine(fd); if (url.empty()) { break; } string localPath = readNextLine(fd); if (localPath.empty()) { LOG(LOG_LEVEL_ERROR, "Invalid update info (empty path)"); return false; } string fileSignature = readNextLine(fd); if (fileSignature.empty()) { LOG(LOG_LEVEL_ERROR, "Invalid update info (empty file signature)"); return false; } addToSignature(url.data(), url.length()); addToSignature(localPath.data(), localPath.length()); addToSignature(fileSignature.data(), fileSignature.length()); MEGA_TO_NATIVE_SEPARATORS(localPath); if (alreadyInstalled(localPath, fileSignature)) { LOG(LOG_LEVEL_INFO, "File already installed: %s", localPath.c_str()); continue; } downloadURLs.push_back(url); localPaths.push_back(localPath); fileSignatures.push_back(fileSignature); } if (!downloadURLs.size()) { LOG(LOG_LEVEL_WARNING, "All files are up to date"); return false; } if (!checkSignature(updateSignature)) { LOG(LOG_LEVEL_ERROR, "Invalid update info (invalid signature)"); return false; } return true; } bool UpdateTask::fileExist(const char *path) { return (mega_access(path) != -1); } void UpdateTask::addToSignature(const char* bytes, size_t length) { signatureChecker->add(bytes, int(length)); } void UpdateTask::initSignature() { signatureChecker->init(); } bool UpdateTask::checkSignature(string value) { bool result = signatureChecker->checkSignature(value.c_str()); if (!result) { LOG(LOG_LEVEL_ERROR, "Invalid signature"); } return result; } bool UpdateTask::performUpdate() { LOG(LOG_LEVEL_INFO, "Applying update..."); for (vector::size_type i = 0; i < localPaths.size(); i++) { string file = backupFolder + localPaths[i]; if (mkdir_p(mega_base_path(file).c_str()) == -1) { LOG(LOG_LEVEL_ERROR, "Error creating backup folder for: %s", file.c_str()); rollbackUpdate(i); return false; } string origFile = appFolder + localPaths[i]; if (mega_rename(origFile.c_str(), file.c_str()) && errno != ENOENT) { LOG(LOG_LEVEL_ERROR, "Error creating backup of file %s to %s. errno=%d", origFile.c_str(), file.c_str(), errno); rollbackUpdate(i); return false; } string update = updateFolder + localPaths[i]; if (mega_size(update.c_str())) { if (mkdir_p(mega_base_path(origFile).c_str()) == -1) { LOG(LOG_LEVEL_ERROR, "Error creating target folder for: %s", origFile.c_str()); rollbackUpdate(i); return false; } setPermissions(mega_base_path(origFile).c_str()); if (mega_rename(update.c_str(), origFile.c_str())) { LOG(LOG_LEVEL_ERROR, "Error installing file %s in %s", update.c_str(), origFile.c_str()); rollbackUpdate(i); return false; } setPermissions(origFile.c_str()); LOG(LOG_LEVEL_INFO, "File correctly installed: %s", localPaths[i].c_str()); } else { LOG(LOG_LEVEL_INFO, "File correctly removed: %s", localPaths[i].c_str()); } } LOG(LOG_LEVEL_INFO, "Update successfully installed"); return true; } void UpdateTask::rollbackUpdate(size_t fileNum) { LOG(LOG_LEVEL_INFO, "Uninstalling update..."); for (int i = fileNum; i >= 0; i--) { string origFile = appFolder + localPaths[i]; mega_rename(origFile.c_str(), (updateFolder + localPaths[i]).c_str()); mega_rename((backupFolder + localPaths[i]).c_str(), origFile.c_str()); LOG(LOG_LEVEL_INFO, "File restored: %s", localPaths[i].c_str()); } LOG(LOG_LEVEL_INFO, "Update uninstalled"); } void UpdateTask::initialCleanup() { removeRecursively(backupFolder); } void UpdateTask::finalCleanup() { removeRecursively(updateFolder); MEGA_SET_PERMISSIONS; LOG(LOG_LEVEL_INFO, "Version code updated to %d", updateVersion); } bool UpdateTask::setPermissions(const char *path) { #ifndef _WIN32 if (path && string(path).find("/mega-") != string::npos) { chmod(path, S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH); } return true; #else if (!isPublic) { return true; } string wfileName; utf8ToUtf16(path, &wfileName); wfileName.append("", 1); bool result = false; PACL pOldDACL = NULL, pNewDACL = NULL; PSECURITY_DESCRIPTOR pSD = NULL; DWORD sidSize = SECURITY_MAX_SID_SIZE; EXPLICIT_ACCESS ea; ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS)); ea.grfAccessPermissions = GENERIC_READ | GENERIC_EXECUTE; ea.grfAccessMode = GRANT_ACCESS; ea.grfInheritance = NO_INHERITANCE; ea.Trustee.TrusteeForm = TRUSTEE_IS_SID; ea.Trustee.TrusteeType = TRUSTEE_IS_WELL_KNOWN_GROUP; if ((GetNamedSecurityInfo((LPCWSTR)wfileName.data(), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, &pOldDACL, NULL, &pSD) == ERROR_SUCCESS) && (ea.Trustee.ptstrName = (LPWSTR)LocalAlloc(LMEM_FIXED, sidSize)) && CreateWellKnownSid(WinBuiltinUsersSid, NULL, ea.Trustee.ptstrName, &sidSize) && (SetEntriesInAcl(1, &ea, pOldDACL, &pNewDACL) == ERROR_SUCCESS) && (SetNamedSecurityInfo((LPWSTR)wfileName.data(), SE_FILE_OBJECT, DACL_SECURITY_INFORMATION, NULL, NULL, pNewDACL, NULL) == ERROR_SUCCESS)) { result = true; LOG(LOG_LEVEL_INFO, "Permissions updated"); } if (ea.Trustee.ptstrName != NULL) { LocalFree(ea.Trustee.ptstrName); } if(pSD != NULL) { LocalFree((HLOCAL) pSD); } if(pNewDACL != NULL) { LocalFree((HLOCAL) pNewDACL); } return result; #endif } bool UpdateTask::removeRecursively(string path) { #ifndef _WIN32 string spath = path; emptydirlocal(&spath); #else string utf16path; utf8ToUtf16(path.c_str(), &utf16path); if (utf16path.size() > 1) { utf16path.resize(utf16path.size() - 1); emptydirlocal(&utf16path); } #endif return !mega_rmdir(path.c_str()); } bool UpdateTask::alreadyInstalled(string relativePath, string fileSignature) { return alreadyExists(appFolder + relativePath, fileSignature); } bool UpdateTask::alreadyDownloaded(string relativePath, string fileSignature) { return alreadyExists(updateFolder + relativePath, fileSignature); } bool UpdateTask::alreadyExists(string absolutePath, string fileSignature) { string updatePublicKey = UPDATE_PUBLIC_KEY; if (getenv("MEGA_UPDATE_PUBLIC_KEY")) { updatePublicKey = getenv("MEGA_UPDATE_PUBLIC_KEY"); } SignatureChecker tmpHash(updatePublicKey.c_str()); char *buffer; long fileLength; FILE * pFile = mega_fopen(absolutePath.c_str(), "rb"); if (pFile == NULL) { return false; } //Get size of file and rewind FILE pointer fseek(pFile, 0, SEEK_END); fileLength = ftell(pFile); rewind(pFile); buffer = (char *)malloc(fileLength); if (buffer == NULL) { fclose(pFile); return false; } size_t sizeRead = fread(buffer, 1, fileLength, pFile); if (sizeRead != fileLength) { fclose(pFile); return false; } tmpHash.add(buffer, unsigned(sizeRead)); fclose(pFile); free(buffer); return tmpHash.checkSignature(fileSignature.data()); } string UpdateTask::readNextLine(FILE *fd) { char line[4096]; if (!fgets(line, sizeof(line), fd)) { return string(); } line[strcspn(line, "\n")] = '\0'; return string(line); } #ifdef _WIN32 // delete all files and folders contained in the specified folder // (does not recurse into mounted devices) void UpdateTask::emptydirlocal(string* name, dev_t basedev) { HANDLE hDirectory, hFind; dev_t currentdev; int added = 0; if (name->size() > sizeof(wchar_t) && !memcmp(name->data() + name->size() - sizeof(wchar_t), (char*)(void*)L":", sizeof(wchar_t))) { name->append((char*)(void*)L"\\", sizeof(wchar_t)); added = sizeof(wchar_t); } name->append("", 1); WIN32_FILE_ATTRIBUTE_DATA fad; if (!GetFileAttributesExW((LPCWSTR)name->data(), GetFileExInfoStandard, (LPVOID)&fad) || !(fad.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) || fad.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) { // discard files and resparse points (links, etc.) name->resize(name->size() - added - 1); return; } #ifdef WINDOWS_PHONE CREATEFILE2_EXTENDED_PARAMETERS ex = { 0 }; ex.dwSize = sizeof(ex); ex.dwFileFlags = FILE_FLAG_BACKUP_SEMANTICS; hDirectory = CreateFile2((LPCWSTR)name->data(), GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ, OPEN_EXISTING, &ex); #else hDirectory = CreateFileW((LPCWSTR)name->data(), GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL); #endif name->resize(name->size() - added - 1); if (hDirectory == INVALID_HANDLE_VALUE) { // discard not accessible folders return; } #ifdef WINDOWS_PHONE FILE_ID_INFO fi = { 0 }; if(!GetFileInformationByHandleEx(hDirectory, FileIdInfo, &fi, sizeof(fi))) #else BY_HANDLE_FILE_INFORMATION fi; if (!GetFileInformationByHandle(hDirectory, &fi)) #endif { currentdev = 0; } else { #ifdef WINDOWS_PHONE currentdev = fi.VolumeSerialNumber + 1; #else currentdev = fi.dwVolumeSerialNumber + 1; #endif } CloseHandle(hDirectory); if (basedev && currentdev != basedev) { // discard folders on different devices return; } bool removed; for (;;) { // iterate over children and delete removed = false; name->append((char*)(void*)L"\\*", 5); WIN32_FIND_DATAW ffd; #ifdef WINDOWS_PHONE hFind = FindFirstFileExW((LPCWSTR)name->data(), FindExInfoBasic, &ffd, FindExSearchNameMatch, NULL, 0); #else hFind = FindFirstFileW((LPCWSTR)name->data(), &ffd); #endif name->resize(name->size() - 5); if (hFind == INVALID_HANDLE_VALUE) { break; } bool morefiles = true; while (morefiles) { if (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_REPARSE_POINT) && (!(ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) || *ffd.cFileName != '.' || (ffd.cFileName[1] && ((ffd.cFileName[1] != '.') || ffd.cFileName[2])))) { string childname = *name; childname.append((char*)(void*)L"\\", 2); childname.append((char*)ffd.cFileName, sizeof(wchar_t) * wcslen(ffd.cFileName)); if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { emptydirlocal(&childname , currentdev); childname.append("", 1); removed |= !!RemoveDirectoryW((LPCWSTR)childname.data()); } else { childname.append("", 1); removed |= !!DeleteFileW((LPCWSTR)childname.data()); } } morefiles = FindNextFileW(hFind, &ffd); } FindClose(hFind); if (!removed) { break; } } } #else // delete all files, folders and symlinks contained in the specified folder // (does not recurse into mounted devices) void UpdateTask::emptydirlocal(string* name, dev_t basedev) { #ifdef USE_IOS string absolutename; if (appbasepath) { if (name->size() && name->at(0) != '/') { absolutename = appbasepath; absolutename.append(*name); name = &absolutename; } } #endif DIR* dp; dirent* d; int removed; struct stat statbuf; int t; if (!basedev) { if (lstat(name->c_str(), &statbuf) || !S_ISDIR(statbuf.st_mode) || S_ISLNK(statbuf.st_mode)) return; basedev = statbuf.st_dev; } if ((dp = opendir(name->c_str()))) { for (;;) { removed = 0; while ((d = readdir(dp))) { if (d->d_type != DT_DIR || *d->d_name != '.' || (d->d_name[1] && (d->d_name[1] != '.' || d->d_name[2]))) { t = name->size(); name->append("/"); name->append(d->d_name); if (!lstat(name->c_str(), &statbuf)) { if (!S_ISLNK(statbuf.st_mode) && S_ISDIR(statbuf.st_mode) && statbuf.st_dev == basedev) { emptydirlocal(name, basedev); removed |= !rmdir(name->c_str()); } else { removed |= !unlink(name->c_str()); } } name->resize(t); } } if (!removed) { break; } rewinddir(dp); } closedir(dp); } } #endif SignatureChecker::SignatureChecker(const char *base64Key) { string pubks; size_t len = strlen(base64Key)/4*3+3; pubks.resize(len); pubks.resize(Base64::atob(base64Key, (byte *)pubks.data(), int(len))); byte *data = (byte*)pubks.data(); int datalen = int(pubks.size()); int p, i, n; p = 0; for (i = 0; i < 2; i++) { if (p + 2 > datalen) { break; } n = ((data[p] << 8) + data[p + 1] + 7) >> 3; p += 2; if (p + n > datalen) { break; } key[i] = Integer(data + p, n); p += n; } assert(i == 2 && len - p < 16); } SignatureChecker::~SignatureChecker() { } void SignatureChecker::init() { string out; out.resize(hash.DigestSize()); hash.Final((byte*)out.data()); } void SignatureChecker::add(const char *data, unsigned size) { hash.Update((const byte *)data, size); } bool SignatureChecker::checkSignature(const char *base64Signature) { byte signature[512]; int l = Base64::atob(base64Signature, signature, sizeof(signature)); if (l != sizeof(signature)) return false; string h, s; unsigned size; h.resize(hash.DigestSize()); hash.Final((byte*)h.data()); s.resize(h.size()); byte* buf = (byte *)s.data(); Integer t (signature, sizeof(signature)); t = a_exp_b_mod_c(t, key[1], key[0]); unsigned int i = t.ByteCount(); if (i > s.size()) { return 0; } while (i--) { *buf++ = t.GetByte(i); } size = t.ByteCount(); if (!size) { return 0; } if (size < h.size()) { // left-pad with 0 s.insert(0, h.size() - size, 0); s.resize(h.size()); } return s == h; } unsigned char Base64::to64(byte c) { c &= 63; if (c < 26) { return c + 'A'; } if (c < 52) { return c - 26 + 'a'; } if (c < 62) { return c - 52 + '0'; } if (c == 62) { return '-'; } return '_'; } unsigned char Base64::from64(byte c) { if ((c >= 'A') && (c <= 'Z')) { return c - 'A'; } if ((c >= 'a') && (c <= 'z')) { return c - 'a' + 26; } if ((c >= '0') && (c <= '9')) { return c - '0' + 52; } if (c == '-' || c == '+') { return 62; } if (c == '_' || c == '/') { return 63; } return 255; } int Base64::atob(const string &in, string &out) { out.resize(in.size() * 3 / 4 + 3); out.resize(Base64::atob(in.data(), (byte *) out.data(), int(out.size()))); return int(out.size()); } int Base64::atob(const char* a, byte* b, int blen) { byte c[4]; int i; int p = 0; c[3] = 0; for (;;) { for (i = 0; i < 4; i++) { if ((c[i] = from64(*a++)) == 255) { break; } } if ((p >= blen) || !i) { return p; } b[p++] = (c[0] << 2) | ((c[1] & 0x30) >> 4); if ((p >= blen) || (i < 3)) { return p; } b[p++] = (c[1] << 4) | ((c[2] & 0x3c) >> 2); if ((p >= blen) || (i < 4)) { return p; } b[p++] = (c[2] << 6) | c[3]; } } int Base64::btoa(const string &in, string &out) { out.resize(in.size() * 4 / 3 + 4); out.resize(Base64::btoa((const byte*) in.data(), int(in.size()), (char *) out.data())); return int(out.size()); } int Base64::btoa(const byte* b, int blen, char* a) { int p = 0; for (;;) { if (blen <= 0) { break; } a[p++] = to64(*b >> 2); a[p++] = to64((*b << 4) | (((blen > 1) ? b[1] : 0) >> 4)); if (blen < 2) { break; } a[p++] = to64(b[1] << 2 | (((blen > 2) ? b[2] : 0) >> 6)); if (blen < 3) { break; } a[p++] = to64(b[2]); blen -= 3; b += 3; } a[p] = 0; return p; } MEGAcmd-2.5.2_Linux/src/updater/UpdateTask.h000066400000000000000000000052041516543156300205570ustar00rootroot00000000000000#ifndef UPDATETASK_H #define UPDATETASK_H #include #include #include #include #include #include #include #include #include #include #include #include #include #include #if CRYPTOPP_VERSION >= 600 && ((__cplusplus >= 201103L) || (__RPCNDR_H_VERSION__ == 500)) using byte = CryptoPP::byte; #elif __RPCNDR_H_VERSION__ != 500 typedef unsigned char byte; #endif class Base64 { static byte to64(byte); static byte from64(byte); public: static int btoa(const std::string&, std::string&); static int btoa(const byte*, int, char*); static int atob(const std::string&, std::string&); static int atob(const char*, byte*, int); }; class SignatureChecker { public: SignatureChecker(const char *base64Key); ~SignatureChecker(); void init(); void add(const char *data, unsigned size); bool checkSignature(const char *base64Signature); protected: CryptoPP::Integer key[2]; CryptoPP::SHA512 hash; }; class UpdateTask { public: explicit UpdateTask(); ~UpdateTask(); bool checkForUpdates(bool emergencyUpdater = false, bool doNotInstall = false, int _currentVersion = -1); protected: bool downloadFile(std::string url, std::string dstPath); bool processUpdateFile(FILE *fd); bool fileExist(const char* path); void initSignature(); void addToSignature(const char *bytes, size_t length); bool checkSignature(std::string value); bool alreadyInstalled(std::string relativePath, std::string fileSignature); bool alreadyDownloaded(std::string relativePath, std::string fileSignature); bool alreadyExists(std::string absolutePath, std::string fileSignature); bool performUpdate(); void rollbackUpdate(size_t fileNum); void initialCleanup(); void finalCleanup(); bool setPermissions(const char *path); bool removeRecursively(std::string path); std::string getAppDataDir(); std::string getAppDir(); std::string readNextLine(FILE *fd); void emptydirlocal(std::string* name, dev_t basedev = 0); std::string appFolder; std::string appDataFolder; std::string updateFolder; std::string backupFolder; bool isPublic; SignatureChecker *signatureChecker; unsigned int currentFile; int updateVersion; int currentVersion; std::vector downloadURLs; std::vector localPaths; std::vector fileSignatures; }; #endif // UPDATETASK_H MEGAcmd-2.5.2_Linux/tests/000077500000000000000000000000001516543156300152475ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/tests/common/000077500000000000000000000000001516543156300165375ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/tests/common/Instruments.cpp000066400000000000000000000121451516543156300216010ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "Instruments.h" TestInstruments& TestInstruments::Instance() { static TestInstruments instance; return instance; } void TestInstruments::clearAll() { std::lock_guard lock(mMutex); mFlags.clear(); clearEvents(); mProbes.clear(); } bool TestInstruments::flag(Flag flag) { std::lock_guard lock(mMutex); return mFlags.find(flag) != mFlags.end(); } void TestInstruments::setFlag(Flag flag) { std::lock_guard lock(mMutex); mFlags.insert(flag); } void TestInstruments::resetFlag(Flag flag) { std::lock_guard lock(mMutex); mFlags.erase(flag); } void TestInstruments::clearFlags() { std::lock_guard lock(mMutex); mFlags.clear(); } void TestInstruments::throwIfFlagAndReset(TestInstruments::Flag flag) { std::lock_guard lock(mMutex); if (mFlags.find(flag) != mFlags.end()) { mFlags.erase(flag); throw InstrumentsException(); } } void TestInstruments::onEventOnce(Event event, EventCallback&& handler) { std::lock_guard lock(mMutex); mSingleEventHandlers.insert_or_assign(event, std::move(handler)); } void TestInstruments::onEventOnce(Event event, EventCallback& handler) { std::lock_guard lock(mMutex); mSingleEventHandlers.insert_or_assign(event, handler); } void TestInstruments::clearEvent(Event event) { std::lock_guard lock(mMutex); mSingleEventHandlers.erase(event); mEventMultiHandlers.erase(event); } void TestInstruments::clearEvent(MegaCmdEvent event) { std::lock_guard lock(mMutex); mMegaCmdSingleEventHandlers.erase(event); mMegaCmdEventMultiHandlers.erase(event); } void TestInstruments::fireEvent(Event event) { std::vector handlersToExecute; { std::lock_guard lock(mMutex); auto handlerIt = mSingleEventHandlers.find(event); if (handlerIt != mSingleEventHandlers.end()) { handlersToExecute.push_back(std::move(handlerIt->second)); mSingleEventHandlers.erase(handlerIt); } auto range = mEventMultiHandlers.equal_range(event); for (auto handlerIt = range.first; handlerIt != range.second; handlerIt++) { handlerIt->second(); } } for (auto &handler : handlersToExecute) { handler(); } } void TestInstruments::fireEvent(MegaCmdEvent event) { std::vector handlersToExecute; { std::lock_guard lock(mMutex); auto handlerIt = mMegaCmdSingleEventHandlers.find(event); if (handlerIt != mMegaCmdSingleEventHandlers.end()) { handlersToExecute.push_back(std::move(handlerIt->second)); mMegaCmdSingleEventHandlers.erase(handlerIt); } auto range = mMegaCmdEventMultiHandlers.equal_range(event); for (auto handlerIt = range.first; handlerIt != range.second; handlerIt++) { handlerIt->second(); } } for (auto &handler : handlersToExecute) { handler(); } } void TestInstruments::clearEvents() { std::lock_guard lock(mMutex); mSingleEventHandlers.clear(); mMegaCmdSingleEventHandlers.clear(); mEventMultiHandlers.clear(); mMegaCmdEventMultiHandlers.clear(); } std::optional TestInstruments::testValue(TestValue key) { std::lock_guard lock(mMutex); auto it = mTestValues.find(key); if (it != mTestValues.end()) { return it->second; } return std::nullopt; } void TestInstruments::setTestValue(TestValue key, TestValue_t value) { std::lock_guard lock(mMutex); mTestValues.insert_or_assign(key, value); } void TestInstruments::resetTestValue(TestValue key) { std::lock_guard lock(mMutex); mTestValues.erase(key); } void TestInstruments::increaseTestValue(TestValue key) { std::lock_guard lock(mMutex); auto it = mTestValues.find(key); if (it == mTestValues.end()) { return; } mTestValues.insert_or_assign(key, ++std::get(it->second)); } void TestInstruments::clearTestValues() { std::lock_guard lock(mMutex); mTestValues.clear(); } bool TestInstruments::probe(const std::string &str) { std::lock_guard lock(mMutex); return mProbes.find(str) != mProbes.end(); } void TestInstruments::clearProbes() { std::lock_guard lock(mMutex); mProbes.clear(); } MEGAcmd-2.5.2_Linux/tests/common/Instruments.h000066400000000000000000000277771516543156300212670ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once //#include "EventsDefinitions.h" //TODO: Have the above use MEGAcmd definitions! #include #include #include #include #include #include #include #include #include #include #include using MegaCmdEvent = int; //TODO: instead have MEGAcmd events used struct InstrumentsException : public std::exception { virtual ~InstrumentsException() = default; }; class TestInstruments { public: static TestInstruments& Instance(); void clearAll(); // // Flags // enum class Flag { SOME_MEGACMD_INSTRUMENT_FLAG, }; bool flag(Flag flag); void setFlag(Flag flag); void resetFlag(Flag flag); void clearFlags(); void throwIfFlagAndReset(Flag flag); // // Events // enum class Event { SERVER_ABOUT_TO_START_WAITING_FOR_PETITIONS, SYNC_ISSUES_LIST_UPDATED, FETCH_NODES_REQ_UPDATE, }; typedef std::function EventCallback; void onEventOnce(Event event, EventCallback&&); void onEventOnce(Event event, EventCallback&); void clearEvent(Event event); void clearEvent(MegaCmdEvent event); void fireEvent(Event event); void fireEvent(MegaCmdEvent event); void clearEvents(); // // Test Values // enum class TestValue { AMIPRO_LEVEL, SYNC_ISSUES_LIST_SIZE, SYNC_ISSUE_ENFORCE_PATH_PROBLEM, SYNC_ISSUE_ENFORCE_REASON_TYPE, }; using TestValue_t = std::variant< uint64_t, int64_t, std::string, std::chrono::steady_clock::time_point>; std::optional testValue(TestValue key); void setTestValue(TestValue key, TestValue_t value); void resetTestValue(TestValue key); void increaseTestValue(TestValue key); void clearTestValues(); // // Probes // bool probe(const std::string &); template void setProbe(T&& str) { std::lock_guard lock(mMutex); mProbes.insert(std::forward(str)); } size_t probeCount() const { return mProbes.size(); } void clearProbes(); private: std::recursive_mutex mMutex; std::unordered_set mFlags; std::unordered_set mProbes; // Only triggered once, only one allowed std::unordered_map mSingleEventHandlers; std::unordered_map mMegaCmdSingleEventHandlers; // Triggering does not imply execution std::multimap mEventMultiHandlers; std::multimap mMegaCmdEventMultiHandlers; std::unordered_map mTestValues; public: template void onEventOnce(MegaCmdEvent event, Cb &&handler) { std::lock_guard lock(mMutex); mMegaCmdSingleEventHandlers.insert_or_assign(event, std::forward(handler)); } template std::multimap::iterator onEveryEvent(Event event, Cb &&handler) { std::lock_guard lock(mMutex); return mEventMultiHandlers.emplace(event, std::forward(handler)); } template std::multimap::iterator onEveryEvent(MegaCmdEvent event, Cb &&handler) { std::lock_guard lock(mMutex); return mMegaCmdEventMultiHandlers.emplace(event, std::forward(handler)); } void removeEventMultiHandle(const std::multimap::iterator &it) { std::lock_guard lock(mMutex); mEventMultiHandlers.erase(it); } void removeEventMultiHandle(const std::multimap::iterator &it) { std::lock_guard lock(mMutex); mMegaCmdEventMultiHandlers.erase(it); } /** * @brief general purpose scope guard class */ template class ScopeGuard { ExitCallback mExitCb; public: ScopeGuard(ExitCallback&& exitCb) : mExitCb{std::move(exitCb)} { } ~ScopeGuard() { mExitCb(); } }; template auto onEveryEventGuard(Event event, Cb &&handler) { auto it = onEveryEvent(event, std::forward(handler)); return ScopeGuard([this, it{std::move(it)}](){ removeEventMultiHandle(it); }); } }; class TestInstrumentsFlagGuard { const TestInstruments::Flag mFlag; public: TestInstrumentsFlagGuard(TestInstruments::Flag flag) : mFlag(flag) { TestInstruments::Instance().setFlag(mFlag); } ~TestInstrumentsFlagGuard() { TestInstruments::Instance().resetFlag(mFlag); } }; class TestInstrumentsWaitForEventGuard { bool mEventHappened; bool mDoNotWait = false; std::mutex mEventHappenedMutex; std::condition_variable mEventHappenedCv; public: TestInstrumentsWaitForEventGuard(TestInstruments::Event event) : mEventHappened(false) { TestInstruments::Instance().onEventOnce(event, [this]() { std::lock_guard guard(mEventHappenedMutex); mEventHappened = true; mEventHappenedCv.notify_all(); }); } bool disableWaitAndGetValue() { std::unique_lock lock(mEventHappenedMutex); mDoNotWait = true; return mEventHappened; } bool waitForEvent(std::chrono::duration timeout = std::chrono::seconds(30)) { std::unique_lock lock(mEventHappenedMutex); if (mDoNotWait) { return mEventHappened; } mDoNotWait = true; mEventHappenedCv.wait_for(lock, timeout, [this](){ return mEventHappened; }); EXPECT_TRUE(mEventHappened); return mEventHappened; } ~TestInstrumentsWaitForEventGuard() { waitForEvent(); } }; struct TestInstrumentsTestValueGuard { TestInstruments::TestValue mTestValueKey; TestInstrumentsTestValueGuard(TestInstruments::TestValue key) { mTestValueKey = key; } TestInstrumentsTestValueGuard(TestInstruments::TestValue key, TestInstruments::TestValue_t value) { mTestValueKey = key; TestInstruments::Instance().setTestValue(key, value); } virtual ~TestInstrumentsTestValueGuard() { TestInstruments::Instance().resetTestValue(mTestValueKey); } }; class TestInstrumentsClearGuard { public: ~TestInstrumentsClearGuard() { TestInstruments::Instance().clearAll(); } }; class TestInstrumentsProbesGuard { const std::vector mProbes; public: TestInstrumentsProbesGuard(std::vector&& probles) : mProbes(std::move(probles)) { } ~TestInstrumentsProbesGuard() { TestInstruments::Instance().clearProbes(); } bool probe() const { for (const auto& probe : mProbes) { if (!TestInstruments::Instance().probe(probe)) { return false; } } return true; } }; class TestInstrumentsEnvVarGuard { private: std::string mVar; bool mHasInitValue; std::string mInitValue; public: TestInstrumentsEnvVarGuard(std::string variable, const std::string &value) : mVar(std::move(variable)), mHasInitValue(false), mInitValue() { const char *initValue = getenv(mVar.c_str()); if (initValue != nullptr) { mHasInitValue = true; mInitValue = std::string(initValue); } #ifdef _WIN32 auto envStr = std::string(mVar).append("=").append(value); _putenv(envStr.c_str()); #else setenv(mVar.c_str(), value.c_str(), 1); #endif } virtual ~TestInstrumentsEnvVarGuard() { if (mHasInitValue) { #ifdef _WIN32 auto envStr = std::string(mVar).append("=").append(mInitValue); _putenv(envStr.c_str()); #else setenv(mVar.c_str(), mInitValue.c_str(), 1); #endif } else { #ifdef _WIN32 auto envStr = std::string(mVar).append("="); _putenv(envStr.c_str()); #else unsetenv(mVar.c_str()); #endif } } protected: explicit TestInstrumentsEnvVarGuard(std::string variable) : mVar(std::move(variable)), mHasInitValue(false), mInitValue() { const char *initValue = getenv(mVar.c_str()); if (initValue != nullptr) { mHasInitValue = true; mInitValue = std::string(initValue); } #ifdef _WIN32 auto envStr = std::string(mVar).append("="); _putenv(envStr.c_str()); #else unsetenv(mVar.c_str()); #endif } }; #ifdef WIN32 class TestInstrumentsEnvVarGuardW { std::wstring mVar; bool mHasInitValue; std::wstring mInitValue; public: TestInstrumentsEnvVarGuardW(const std::wstring& variable, const std::wstring& value) : mVar(variable), mHasInitValue(false), mInitValue() { const wchar_t* initValue = _wgetenv(mVar.c_str()); if (initValue != nullptr) { mHasInitValue = true; mInitValue = std::wstring(initValue); } _wputenv_s(mVar.c_str(), value.c_str()); } virtual ~TestInstrumentsEnvVarGuardW() { if (mHasInitValue) { _wputenv_s(mVar.c_str(), mInitValue.c_str()); } else { _wputenv_s(mVar.c_str(), L""); } } }; #endif class TestInstrumentsUnsetEnvVarGuard : TestInstrumentsEnvVarGuard { public: explicit TestInstrumentsUnsetEnvVarGuard(std::string variable) : TestInstrumentsEnvVarGuard(variable) { } }; /** * Convenience class that tracks the occurrence of events within its lifetime. * * Caveat: onEventOnce only allows for a single handler, * this will install/replace event handlers for tracked events * These handlers will be removed after EventTracker dtor */ class EventTracker { using TI = TestInstruments; std::mutex mMutex; std::condition_variable mCV; std::map, bool> mTrackedEvents; void initializeTracking() { for (auto &pTracked : mTrackedEvents) { std::visit([this, &pTracked](const auto & event){ TI::Instance().onEventOnce(event, [this, &pTracked](){ pTracked.second = true; mCV.notify_all(); }); }, pTracked.first); } } public: EventTracker(const std::vector> &events) { for (auto &event : events) { mTrackedEvents[event] = false; } initializeTracking(); } ~EventTracker() { for (auto &pTracked : mTrackedEvents) { std::visit([](const auto & event){ TI::Instance().clearEvent(event); }, pTracked.first); } } bool eventHappened(const std::variant &event) { std::unique_lock lock(mMutex); assert(mTrackedEvents.find(event) != mTrackedEvents.end()); return mTrackedEvents[event]; } template > bool waitForEvent(const std::variant &event, std::chrono::duration timeout = std::chrono::seconds(30)) { std::unique_lock lock(mMutex); mCV.wait_for(lock, timeout, [this, &event](){ return mTrackedEvents[event]; }); return mTrackedEvents[event]; } }; MEGAcmd-2.5.2_Linux/tests/common/TestUtils.cpp000066400000000000000000000006721516543156300212100ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "TestUtils.h" MEGAcmd-2.5.2_Linux/tests/common/TestUtils.h000066400000000000000000000201571516543156300206550ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include #include #include #ifdef _WIN32 #include #else #include #endif #include #include #include #include #include #include "megacmdcommonutils.h" #define ULOG_COLOR(color, fmt, ...) \ do { if (isatty(1)) printf(color fmt "\033[0m\n", ##__VA_ARGS__); \ else printf(fmt "\n", ##__VA_ARGS__); \ } while(0) #define ULOG(fmt, ...) ULOG_COLOR("\033[38;5;250m", fmt, ##__VA_ARGS__) #define ULOG_ERR(fmt, ...) ULOG_COLOR("\033[31m", fmt, ##__VA_ARGS__) #define ULOG_WARN(fmt, ...) ULOG_COLOR("\033[33m", fmt, ##__VA_ARGS__) #define ULOG_NOTE(fmt, ...) ULOG_COLOR("\033[38;5;81m", fmt, ##__VA_ARGS__) namespace gti { enum GTestColor { COLOR_DEFAULT, COLOR_RED, COLOR_GREEN, COLOR_YELLOW }; static void ColoredPrintf(GTestColor color, const char* fmt, ...) { #ifndef _WIN32 va_list args; va_start(args, fmt); #ifdef WIN32 static const bool in_color_mode = _isatty(_fileno(stdout)) != 0; #else static const bool in_color_mode = isatty(STDOUT_FILENO) != 0; #endif const bool use_color = in_color_mode && (color != GTestColor::COLOR_DEFAULT); if (use_color) { printf("\033[0;3%sm", std::to_string(static_cast(color)).c_str()); } vprintf(fmt, args); if (use_color) { printf("\033[m"); } va_end(args); #endif } } class GTestMessager { using GTestColor = gti::GTestColor; std::ostringstream mOstr; GTestColor mColor; std::string mTitle; public: GTestMessager(GTestColor color, std::string title = {}) : mColor(color), mTitle(title) { } ~GTestMessager() { gti::ColoredPrintf(GTestColor::COLOR_GREEN, "[ %8s ] ", mTitle.c_str()); gti::ColoredPrintf(GTestColor::COLOR_DEFAULT, "%s\n", mOstr.str().c_str()); } template GTestMessager& operator<<(T* obj) { if (obj) { mOstr << obj; } else { mOstr << "(NULL)"; } return *this; } template ::value>::type> GTestMessager& operator<<(const T obj) { static_assert(!std::is_same::value, "T cannot be nullptr_t"); mOstr << obj; return *this; } template ::value>::type> GTestMessager& operator<<(const T& obj) { mOstr << obj; return *this; } }; // Fancy message defines #define G_TEST_TITLED_MSG(title) GTestMessager(gti::COLOR_GREEN, title) #define G_TEST_MSG GTestMessager(gti::COLOR_GREEN) #define G_TEST_INFO GTestMessager(gti::COLOR_GREEN, "INFO") #define G_SUBTEST GTestMessager(gti::COLOR_GREEN, "SUBTEST") #define G_SUBSUBTEST GTestMessager(gti::COLOR_GREEN, "SSUBTEST") // For some reason, the regex matches included with GTest fail to match against // regex expressions using ERE syntax. The following two custom matchers use std::regex, // which provides consistent, cross-platform behavior, as opposed to GTest's regex // peculiarities (https://google.github.io/googletest/advanced.html#regular-expression-syntax) MATCHER_P(MatchesStdRegex, pattern, "") { *result_listener << "where the string '" << arg << "' matches the std::regex '" << pattern << "'"; std::regex regex(pattern); return std::regex_match(arg, regex); } MATCHER_P(ContainsStdRegex, pattern, "") { *result_listener << "where the string '" << arg << "' contains the std::regex '" << pattern << "'"; std::regex regex(pattern); return std::regex_search(arg, regex); } class SelfDeletingTmpFolder { fs::path mTempDir; public: SelfDeletingTmpFolder() { mTempDir = fs::temp_directory_path() / fs::path(megacmd::generateRandomAlphaNumericString(10)); fs::create_directory(mTempDir); } SelfDeletingTmpFolder(const fs::path& subPath) : SelfDeletingTmpFolder() { mTempDir /= subPath; fs::create_directories(mTempDir); } ~SelfDeletingTmpFolder() { fs::remove_all(mTempDir); } std::string string() const { return mTempDir.string(); } fs::path path() const { return mTempDir; } }; #ifdef WIN32 /** * @brief Google tests outputing needs stdout mode to be _O_TEXT * otherwise low level printing will fail. * This is a custom listener to wrapp writing routines */ struct CustomTestEventListener : public ::testing::EmptyTestEventListener { std::unique_ptr<::testing::TestEventListener> mDefault; void OnTestProgramStart(const ::testing::UnitTest& unit_test) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestProgramStart(unit_test); } void OnTestIterationStart(const ::testing::UnitTest& unit_test, int iteration) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestIterationStart(unit_test, iteration); } void OnEnvironmentsSetUpStart(const ::testing::UnitTest& unit_test) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnEnvironmentsSetUpStart(unit_test); } void OnEnvironmentsSetUpEnd(const ::testing::UnitTest& unit_test) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnEnvironmentsSetUpEnd(unit_test); } void OnTestSuiteStart(const ::testing::TestSuite& test_suite) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestSuiteStart(test_suite); } #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ void OnTestCaseStart(const ::testing::TestCase& test_case) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestCaseStart(test_case); } #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ void OnTestStart(const ::testing::TestInfo& test_info) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestStart(test_info); } void OnTestDisabled(const ::testing::TestInfo& test_info) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestDisabled(test_info); } void OnTestPartResult(const ::testing::TestPartResult& result) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestPartResult(result); } void OnTestEnd(const ::testing::TestInfo& test_info) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestEnd(test_info); } void OnTestSuiteEnd(const ::testing::TestSuite& test_suite) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestSuiteEnd(test_suite); } #ifndef GTEST_REMOVE_LEGACY_TEST_CASEAPI_ void OnTestCaseEnd(const ::testing::TestCase& test_case) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestCaseEnd(test_case); } #endif // GTEST_REMOVE_LEGACY_TEST_CASEAPI_ void OnEnvironmentsTearDownStart(const ::testing::UnitTest& unit_test) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnEnvironmentsTearDownStart(unit_test); } void OnEnvironmentsTearDownEnd(const ::testing::UnitTest& unit_test) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnEnvironmentsTearDownEnd(unit_test); } void OnTestIterationEnd(const ::testing::UnitTest& unit_test, int iteration) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestIterationEnd(unit_test, iteration); } void OnTestProgramEnd(const ::testing::UnitTest& unit_test) override { megacmd::WindowsNarrowStdoutGuard smg; mDefault->OnTestProgramEnd(unit_test); } }; #endif MEGAcmd-2.5.2_Linux/tests/integration/000077500000000000000000000000001516543156300175725ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/tests/integration/BasicTests.cpp000066400000000000000000000114711516543156300223460ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include "MegaCmdTestingTools.h" #include "Instruments.h" #include "TestUtils.h" using TI = TestInstruments; TEST_F(NOINTERACTIVEBasicTest, Version) { executeInClient({"version"}); } TEST_F(NOINTERACTIVEBasicTest, Help) { executeInClient({"help"}); } TEST_F(NOINTERACTIVENotLoggedTest, Folderlogin) { { auto rLoging = executeInClient({"login", LINK_TESTEXPORTFOLDER}); ASSERT_TRUE(rLoging.ok()); } { auto rLogout = executeInClient({"logout", "--keep-session"}); ASSERT_TRUE(rLogout.ok()); } { EventTracker evTracker({TestInstruments::Event::FETCH_NODES_REQ_UPDATE}); auto rLoging = executeInClient({"login", "--resume", LINK_TESTEXPORTFOLDER}); ASSERT_TRUE(rLoging.ok()); ASSERT_STREQ(rLoging.out().c_str(), ""); ASSERT_STREQ(rLoging.err().c_str(), ""); ASSERT_FALSE(evTracker.eventHappened(TestInstruments::Event::FETCH_NODES_REQ_UPDATE)); } } TEST_F(NOINTERACTIVEReadTest, Find) { auto r = executeInClient({"find"}); ASSERT_TRUE(r.ok()); std::vector result_paths = splitByNewline(r.out()); ASSERT_THAT(result_paths, testing::Not(testing::IsEmpty())); EXPECT_THAT(result_paths, testing::Contains(".")); EXPECT_THAT(result_paths, testing::Contains("testReadingFolder01")); EXPECT_THAT(result_paths, testing::Contains("testReadingFolder01/file03.txt")); EXPECT_THAT(result_paths, testing::Contains("testReadingFolder01/folder01/file03.txt")); EXPECT_THAT(result_paths, testing::Contains("testReadingFolder01/folder02/subfolder03/file02.txt")); } TEST_F(NOINTERACTIVELoggedInTest, Whoami) { { G_SUBTEST << "Basic"; auto r = executeInClient({"whoami"}); ASSERT_TRUE(r.ok()); auto out = r.out(); ASSERT_THAT(out, testing::Not(testing::IsEmpty())); ASSERT_THAT(getenv("MEGACMD_TEST_USER"), testing::NotNull()); EXPECT_EQ(out, std::string("Account e-mail: ").append(getenv("MEGACMD_TEST_USER")).append("\n")); } { G_SUBTEST << "Extended"; { // Ensure there's at least a file around contributing to ROOT usage: auto result = executeInClient({"import", LINK_TESTEXPORTFILE01TXT}); ASSERT_TRUE(result.ok()) << "could not import testExportFile01.txt"; } auto r = executeInClient({"whoami", "-l"}); ASSERT_TRUE(r.ok()); std::vector details_out = splitByNewline(r.out()); ASSERT_THAT(details_out, testing::Not(testing::IsEmpty())); ASSERT_THAT(details_out, testing::Contains(testing::HasSubstr("Available storage:"))); ASSERT_THAT(details_out, testing::Contains(testing::HasSubstr("Pro level:"))); ASSERT_THAT(details_out, testing::Contains(testing::HasSubstr("Current Session"))); ASSERT_THAT(details_out, testing::Contains(testing::HasSubstr("In RUBBISH:"))); EXPECT_THAT(details_out, testing::Not(testing::Contains(ContainsStdRegex("Available storage:\\s+0\\.00\\s+Bytes")))); EXPECT_THAT(details_out, testing::Not(testing::Contains(ContainsStdRegex("In ROOT:\\s+0\\.00\\s+Bytes")))); } } TEST_F(NOINTERACTIVEBasicTest, EchoInvalidUtf8) { const std::string validUtf8 = u8"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"; #ifdef _WIN32 // Required because windows converts the args to UTF-16 before sending them to the server, // so we can't pass an invalid UTF-8 string all the way to the executer; we need to escape it const std::string invalidUtf8 = ""; #else const std::string invalidUtf8 = "\xf0\x8f\xbf\xbf"; #endif auto result = executeInClient({"echo", validUtf8}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr(validUtf8)); result = executeInClient({"echo", invalidUtf8}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(invalidUtf8))); result = executeInClient({"echo", "--log-as-err", validUtf8}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.err(), testing::HasSubstr(validUtf8)); result = executeInClient({"echo", "--log-as-err", invalidUtf8}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.err(), testing::HasSubstr("")); EXPECT_THAT(result.err(), testing::Not(testing::HasSubstr(invalidUtf8))); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(invalidUtf8))); } MEGAcmd-2.5.2_Linux/tests/integration/CatTests.cpp000066400000000000000000000052401516543156300220310ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include "MegaCmdTestingTools.h" #include "TestUtils.h" class CatTests : public NOINTERACTIVELoggedInTest { SelfDeletingTmpFolder mTmpDir; void SetUp() override { NOINTERACTIVELoggedInTest::SetUp(); TearDown(); } void TearDown() override { auto result = executeInClient({"rm", "-f", fileName}); NOINTERACTIVELoggedInTest::TearDown(); } protected: const std::string fileName = "file.txt"; fs::path localPath() const { return mTmpDir.path(); } }; TEST_F(CatTests, NoFile) { auto result = executeInClient({"cat", fileName}); ASSERT_FALSE(result.ok()); } TEST_F(CatTests, AsciiContents) { const fs::path filePath = localPath() / "file_ascii.txt"; const std::string contents = "Hello world!"; { std::ofstream file(filePath); file << contents; } auto result = executeInClient({"put", filePath.string(), fileName}); ASSERT_TRUE(result.ok()); result = executeInClient({"cat", fileName}); ASSERT_TRUE(result.ok()); EXPECT_EQ(contents, result.out()); } TEST_F(CatTests, NonAsciiContents) { const fs::path filePath = localPath() / "file_non_ascii.txt"; const std::string contents = u8"\u3053\u3093\u306b\u3061\u306f\u3001\u4e16\u754c"; { std::ofstream file(filePath, std::ios::binary); file << contents; } auto result = executeInClient({"put", filePath.string(), fileName}); ASSERT_TRUE(result.ok()); result = executeInClient({"cat", fileName}); ASSERT_TRUE(result.ok()); EXPECT_EQ(contents, result.out()); } TEST_F(CatTests, NonAsciiContentsWithNewlines) { const fs::path filePath = localPath() / "file_non_ascii_newlines.txt"; const std::string contents = u8"\u3053\u3093\u306b\u3061\r\n\u306f\u3001\n\u4e16\u754c"; { std::ofstream file(filePath, std::ios::binary); file << contents; } auto result = executeInClient({"put", filePath.string(), fileName}); ASSERT_TRUE(result.ok()); result = executeInClient({"cat", fileName}); ASSERT_TRUE(result.ok()); EXPECT_EQ(contents, result.out()); } MEGAcmd-2.5.2_Linux/tests/integration/ExportTests.cpp000066400000000000000000000266131516543156300226120ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include "MegaCmdTestingTools.h" #include "TestUtils.h" using TI = TestInstruments; class ExportTest : public NOINTERACTIVELoggedInTest { protected: void SetUp() override { NOINTERACTIVELoggedInTest::SetUp(); // Do not assert the output of this; we just want to ensure a clean state in the setup executeInClient({"rm", "-r", "-f", "testExportFolder"}); executeInClient({"rm", "-f", "testExportFile01.txt"}); auto result = executeInClient({"import", LINK_TESTEXPORTFOLDER}); ASSERT_TRUE(result.ok()) << "could not import testExportFolder"; ASSERT_TRUE(executeInClient({"ls", "testExportFolder"}).ok()) << "could not find folder testExportFolder"; result = executeInClient({"import", LINK_TESTEXPORTFILE01TXT}); ASSERT_TRUE(result.ok()) << "could not import testExportFile01.txt"; ASSERT_TRUE(executeInClient({"ls", "testExportFile01.txt"}).ok()) << "could not find file testExportFile01.txt"; } void TearDown() override { ASSERT_TRUE(executeInClient({"rm", "-r", "-f", "testExportFolder"}).ok()) << "could not delete folder testExportFolder"; ASSERT_TRUE(executeInClient({"rm", "-f", "testExportFile01.txt"}).ok()) << "could not delete file testExportFile01.txt"; NOINTERACTIVELoggedInTest::TearDown(); } }; namespace { // We'll use these regex to verify the links and authentication keys are well-formed // Links end in #, whereas tokens end in #: // is simply alphanumeric, while and can also contain '-' or '_' // Since GTest uses a very simple Regex implementation on Windows, we cannot use groups or brackets (see: https://google.github.io/googletest/advanced.html#regular-expression-syntax) const std::string megaFileLinkRegex(R"(https:\/\/mega.nz\/file\/\w+\#\S+)"); const std::string megaFolderLinkRegex(R"(https:\/\/mega.nz\/folder\/\w+\#\S+)"); const std::string megaPasswordLinkRegex(R"(https:\/\/mega.nz\/\S+)"); const std::string authTokenRegex(R"(\w+\#\S+\:\S+)"); } TEST_F(ExportTest, Basic) { { G_SUBTEST << "File"; const std::string file_path = "testExportFile01.txt"; auto rExport = executeInClient({"export", file_path}); ASSERT_FALSE(rExport.ok()); EXPECT_THAT(rExport.out(), testing::HasSubstr(file_path + " is not exported")); EXPECT_THAT(rExport.out(), testing::HasSubstr("Use -a to export it")); auto rCreate = executeInClient({"export", "-a", "-f", file_path}); ASSERT_TRUE(rCreate.ok()); EXPECT_THAT(rCreate.out(), testing::HasSubstr("Exported /" + file_path)); EXPECT_THAT(rCreate.out(), ContainsStdRegex(megaFileLinkRegex)); // Verify it shows up as exported rExport = executeInClient({"export", file_path}); ASSERT_TRUE(rExport.ok()); EXPECT_THAT(rExport.out(), testing::HasSubstr(file_path)); EXPECT_THAT(rExport.out(), testing::HasSubstr("shared as exported permanent file link")); EXPECT_THAT(rExport.out(), ContainsStdRegex(megaFileLinkRegex)); auto rDisable = executeInClient({"export", "-d", file_path}); ASSERT_TRUE(rDisable.ok()); EXPECT_THAT(rDisable.out(), testing::StartsWith("Disabled export: /" + file_path)); // Again, verify it's not exported rExport = executeInClient({"export", file_path}); ASSERT_FALSE(rExport.ok()); EXPECT_THAT(rExport.out(), testing::HasSubstr(file_path + " is not exported")); EXPECT_THAT(rExport.out(), testing::HasSubstr("Use -a to export it")); } { G_SUBTEST << "Directory"; const std::string dir_path = "testExportFolder"; auto rExport = executeInClient({"export", dir_path}); ASSERT_FALSE(rExport.ok()); EXPECT_THAT(rExport.out(), testing::HasSubstr("Couldn't find anything exported below")); EXPECT_THAT(rExport.out(), testing::HasSubstr(dir_path)); EXPECT_THAT(rExport.out(), testing::HasSubstr("Use -a to export it")); auto rCreate = executeInClient({"export", "-a", "-f", dir_path}); ASSERT_TRUE(rCreate.ok()); EXPECT_THAT(rCreate.out(), testing::HasSubstr("Exported /" + dir_path)); EXPECT_THAT(rCreate.out(), ContainsStdRegex(megaFolderLinkRegex)); // Verify it shows up as exported rExport = executeInClient({"export", dir_path}); ASSERT_TRUE(rExport.ok()); EXPECT_THAT(rExport.out(), testing::HasSubstr(dir_path)); EXPECT_THAT(rExport.out(), testing::HasSubstr("shared as exported permanent folder link")); EXPECT_THAT(rExport.out(), ContainsStdRegex(megaFolderLinkRegex)); auto rDisable = executeInClient({"export", "-d", dir_path}); ASSERT_TRUE(rDisable.ok()); EXPECT_THAT(rDisable.out(), testing::StartsWith("Disabled export: /" + dir_path)); // Again, verify it's not exported rExport = executeInClient({"export", dir_path}); ASSERT_FALSE(rExport.ok()); EXPECT_THAT(rExport.out(), testing::HasSubstr("Couldn't find anything exported below")); EXPECT_THAT(rExport.out(), testing::HasSubstr(dir_path)); EXPECT_THAT(rExport.out(), testing::HasSubstr("Use -a to export it")); } } TEST_F(ExportTest, FailedRecreation) { const std::string file_path = "testExportFile01.txt"; const std::vector createCommand{"export", "-a", "-f", file_path}; auto rCreate = executeInClient(createCommand); ASSERT_TRUE(rCreate.ok()); EXPECT_THAT(rCreate.out(), testing::HasSubstr("Exported /" + file_path)); EXPECT_THAT(rCreate.out(), ContainsStdRegex(megaFileLinkRegex)); rCreate = executeInClient(createCommand); ASSERT_FALSE(rCreate.ok()); EXPECT_THAT(rCreate.err(), testing::HasSubstr(file_path + " is already exported")); auto rDisable = executeInClient({"export", "-d", file_path}); ASSERT_TRUE(rDisable.ok()); EXPECT_THAT(rDisable.out(), testing::StartsWith("Disabled export: /" + file_path)); } TEST_F(ExportTest, Writable) { const std::string dir_path = "testExportFolder"; auto rOnlyWritable = executeInClient({"export", "--writable", dir_path}); ASSERT_FALSE(rOnlyWritable.ok()); EXPECT_THAT(rOnlyWritable.err(), testing::HasSubstr("Option can only be used when adding an export")); auto rCreate = executeInClient({"export", "-a", "-f", "--writable", dir_path}); ASSERT_TRUE(rCreate.ok()); EXPECT_THAT(rCreate.out(), testing::HasSubstr("Exported /" + dir_path)); EXPECT_THAT(rCreate.out(), ContainsStdRegex(megaFolderLinkRegex)); EXPECT_THAT(rCreate.out(), ContainsStdRegex("AuthToken = " + authTokenRegex)); // Verify the authToken is also present when checking the export (not just when creating it) auto rCheck = executeInClient({"export", dir_path}); ASSERT_TRUE(rCheck.ok()); EXPECT_THAT(rCheck.out(), testing::HasSubstr(dir_path)); EXPECT_THAT(rCheck.out(), testing::HasSubstr("shared as exported permanent folder link")); EXPECT_THAT(rCheck.out(), ContainsStdRegex(megaFolderLinkRegex)); EXPECT_THAT(rCheck.out(), ContainsStdRegex("AuthToken=" + authTokenRegex)); auto rDisable = executeInClient({"export", "-d", dir_path}); ASSERT_TRUE(rDisable.ok()); EXPECT_THAT(rDisable.out(), testing::StartsWith("Disabled export: /" + dir_path)); } TEST_F(ExportTest, NestedDirectoryStructure) { { G_SUBTEST << "Directory"; const std::string dir_path = "testExportFolder/subDirectoryExport"; auto rCreate = executeInClient({"export", "-a", "-f", dir_path}); ASSERT_TRUE(rCreate.ok()); EXPECT_THAT(rCreate.out(), testing::HasSubstr("Exported /" + dir_path)); EXPECT_THAT(rCreate.out(), ContainsStdRegex(megaFolderLinkRegex)); auto rExport = executeInClient({"export", dir_path}); ASSERT_TRUE(rExport.ok()); EXPECT_THAT(rExport.out(), testing::HasSubstr(dir_path)); EXPECT_THAT(rExport.out(), testing::HasSubstr("shared as exported permanent folder link")); EXPECT_THAT(rExport.out(), ContainsStdRegex(megaFolderLinkRegex)); auto rDisable = executeInClient({"export", "-d", dir_path}); ASSERT_TRUE(rDisable.ok()); EXPECT_THAT(rDisable.out(), testing::StartsWith("Disabled export: /" + dir_path)); } { G_SUBTEST << "File"; const std::string file_path = "testExportFolder/subDirectoryExport/file01.txt"; auto rCreate = executeInClient({"export", "-a", "-f", file_path}); ASSERT_TRUE(rCreate.ok()); EXPECT_THAT(rCreate.out(), testing::HasSubstr("Exported /" + file_path)); EXPECT_THAT(rCreate.out(), ContainsStdRegex(megaFileLinkRegex)); auto rExport = executeInClient({"export", file_path}); ASSERT_TRUE(rExport.ok()); EXPECT_THAT(rExport.out(), testing::HasSubstr(file_path)); EXPECT_THAT(rExport.out(), testing::HasSubstr("shared as exported permanent file link")); EXPECT_THAT(rExport.out(), ContainsStdRegex(megaFileLinkRegex)); auto rDisable = executeInClient({"export", "-d", file_path}); ASSERT_TRUE(rDisable.ok()); EXPECT_THAT(rDisable.out(), testing::StartsWith("Disabled export: /" + file_path)); } } TEST_F(ExportTest, PasswordProtected) { const std::string file_path = "testExportFile01.txt"; const std::vector createCommand{"export", "-a", "-f", "--password=SomePassword", file_path}; const std::vector disableCommand{"export", "-d", file_path}; { G_SUBTEST << "Non-pro account"; TestInstrumentsTestValueGuard proLevelValueGuard(TI::TestValue::AMIPRO_LEVEL, int64_t(0)); auto rCreate = executeInClient(createCommand); ASSERT_TRUE(rCreate.ok()); EXPECT_THAT(rCreate.err(), testing::HasSubstr("Only PRO users can protect links with passwords")); EXPECT_THAT(rCreate.err(), testing::HasSubstr("Showing UNPROTECTED link")); EXPECT_THAT(rCreate.out(), testing::HasSubstr("Exported /" + file_path)); EXPECT_THAT(rCreate.out(), ContainsStdRegex(megaFileLinkRegex)); auto rDisable = executeInClient(disableCommand); ASSERT_TRUE(rDisable.ok()); EXPECT_THAT(rDisable.out(), testing::StartsWith("Disabled export: /" + file_path)); } { G_SUBTEST << "Pro account"; TestInstrumentsTestValueGuard proLevelValueGuard(TI::TestValue::AMIPRO_LEVEL, int64_t(1)); auto rCreate = executeInClient(createCommand); ASSERT_TRUE(rCreate.ok()); EXPECT_THAT(rCreate.out(), testing::Not(testing::HasSubstr("Only PRO users can protect links with passwords"))); EXPECT_THAT(rCreate.out(), testing::Not(testing::HasSubstr("Showing UNPROTECTED link"))); EXPECT_THAT(rCreate.out(), testing::HasSubstr("Exported /" + file_path)); EXPECT_THAT(rCreate.out(), ContainsStdRegex(megaPasswordLinkRegex)); auto rDisable = executeInClient(disableCommand); ASSERT_TRUE(rDisable.ok()); EXPECT_THAT(rDisable.out(), testing::StartsWith("Disabled export: /" + file_path)); } } MEGAcmd-2.5.2_Linux/tests/integration/FuseTests.cpp000066400000000000000000000154311516543156300222270ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifdef WITH_FUSE #include #include "TestUtils.h" #include "MegaCmdTestingTools.h" namespace fs = std::filesystem; class FuseTests : public NOINTERACTIVELoggedInTest { SelfDeletingTmpFolder mTmpDir; #ifdef _WIN32 TestInstrumentsEnvVarGuard mEnvGuard{"MEGACMD_FUSE_ALLOW_LOCAL_PATHS", "1"}; #endif void SetUp() override { NOINTERACTIVELoggedInTest::SetUp(); TearDown(); auto result = executeInClient({"mkdir", "-p", mountDirCloud() + "/"}).ok(); ASSERT_TRUE(result); result = fs::create_directory(mountDirLocal()); ASSERT_TRUE(result); } void TearDown() override { removeAllMounts(); } protected: void removeAllMounts() { auto result = executeInClient({"fuse-show"}); ASSERT_TRUE(result.ok()); auto lines = splitByNewline(result.out()); for (size_t i = 1; i < lines.size(); ++i) { if (lines[i].empty() || megacmd::startsWith(lines[i], "Use " /* skip detail usage line */)) { continue; } auto words = megacmd::split(lines[i], " "); ASSERT_TRUE(!words.empty()); const std::string mountId = words[0]; auto result = executeInClient({"fuse-disable", "--", mountId}); ASSERT_TRUE(result.ok()) << "Could not disable mount " << mountId; result = executeInClient({"fuse-remove", "--", mountId}); ASSERT_TRUE(result.ok()) << "Could not remove mount " << mountId; } } fs::path mountDirLocalPath() const { return mTmpDir.path() / "tests_integration_mount_dir"; } std::string mountDirLocal() const { return mountDirLocalPath().string(); } std::string mountDirCloud() const { return "/tests_integration_mount_dir"; } std::string qw(const std::string& str) // quote wrap { return "\"" + str + "\""; } }; TEST_F(FuseTests, NoMounts) { auto result = executeInClient({"fuse-show"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("There are no mounts")); } TEST_F(FuseTests, AddAndRemoveMount) { #ifdef WIN32 // Windows expects mount dir to not exist fs::remove_all(mountDirLocal()); #endif auto result = executeInClient({"fuse-add", "--disabled", mountDirLocal(), mountDirCloud()}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added a new mount from " + qw(mountDirLocal()) + " to " + qw(mountDirCloud()))); result = executeInClient({"fuse-show", "--disable-path-collapse"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr("There are no mounts"))); EXPECT_THAT(result.out(), testing::HasSubstr(mountDirLocal())); EXPECT_THAT(result.out(), testing::HasSubstr(mountDirCloud())); result = executeInClient({"fuse-show", "--only-enabled"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("There are no mounts")); result = executeInClient({"fuse-show", mountDirLocal()}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::ContainsRegex("Enabled:\\s*NO")); result = executeInClient({"fuse-remove", mountDirLocal()}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Removed mount")); EXPECT_THAT(result.out(), testing::HasSubstr("on " + qw(mountDirLocal()))); } TEST_F(FuseTests, AddMountEnabled) { #ifdef WIN32 // Windows expects mount dir to not exist fs::remove_all(mountDirLocal()); #endif auto result = executeInClient({"fuse-add", mountDirLocal(), mountDirCloud()}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added a new mount from " + qw(mountDirLocal()) + " to " + qw(mountDirCloud()))); EXPECT_THAT(result.out(), testing::HasSubstr("Enabled mount")); result = executeInClient({"fuse-show", mountDirLocal()}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::ContainsRegex("Enabled:\\s*YES")); result = executeInClient({"fuse-disable", mountDirLocal()}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Disabled mount")); EXPECT_THAT(result.out(), testing::HasSubstr("on " + qw(mountDirLocal()))); result = executeInClient({"fuse-remove", mountDirLocal()}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Removed mount")); EXPECT_THAT(result.out(), testing::HasSubstr("on " + qw(mountDirLocal()))); } TEST_F(FuseTests, EnsureUniqueId) { const std::string dir1 = (mountDirLocalPath() / "dir1").string(); const std::string dir2 = (mountDirLocalPath() / "dir2").string(); #ifndef WIN32 fs::create_directory(dir1); fs::create_directory(dir2); #endif auto result = executeInClient({"fuse-add", dir1, mountDirCloud(), "--name=name1"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added a new mount from " + qw(dir1) + " to " + qw(mountDirCloud()))); EXPECT_THAT(result.out(), testing::HasSubstr("Enabled mount")); result = executeInClient({"fuse-add", dir2, mountDirCloud(), "--name=name2"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added a new mount from " + qw(dir2) + " to " + qw(mountDirCloud()))); EXPECT_THAT(result.out(), testing::HasSubstr("Enabled mount")); result = executeInClient({"fuse-show"}); ASSERT_TRUE(result.ok()); auto lines = splitByNewline(result.out()); ASSERT_EQ(lines.size(), 5); // Column names + 2 mounts + newline + detail usage const std::string firstMountId = megacmd::split(lines[1], " ")[0]; const std::string secondMountId = megacmd::split(lines[2], " ")[0]; EXPECT_NE(firstMountId, secondMountId); // change names result = executeInClient({"fuse-config", "name2", "--name=name1"}); ASSERT_FALSE(result.ok()); // not allowed: name clash result = executeInClient({"fuse-config", "name2", "--name=name3"}); ASSERT_TRUE(result.ok()); // allowed { result = executeInClient({"fuse-show"}); ASSERT_TRUE(result.ok()); auto lines = splitByNewline(result.out()); ASSERT_EQ(lines.size(), 5); // Column names + 2 mounts + newline + detail usage const std::string secondMountId = megacmd::split(lines[2], " ")[0]; EXPECT_EQ(secondMountId, "name3"); } removeAllMounts(); } #endif // WITH_FUSE MEGAcmd-2.5.2_Linux/tests/integration/MegaCmdTestingTools.cpp000066400000000000000000000056041516543156300241570ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include "MegaCmdTestingTools.h" std::vector splitByNewline(const std::string& str) { std::vector result; std::string line; std::istringstream iss(str); while (std::getline(iss, line)) { result.push_back(line); } return result; } std::string joinString(const std::vector &vec, std::string_view sep) { std::ostringstream oss; for (size_t i = 0; i < vec.size(); ++i) { if (i) oss << sep; oss << vec[i]; } return oss.str(); } ClientResponse executeInClient(const std::vector& command, bool /*nonInteractive: TODO: give support to shell execs*/) { // To manage the memory of the first arg const std::string firstArg("args0_test_client"); std::vector args{const_cast(firstArg.c_str())}; for (const auto& word : command) { args.push_back(const_cast(word.c_str())); } args.push_back(nullptr); OUTSTRINGSTREAM stream; OUTSTRINGSTREAM streamErr; auto code = megacmd::executeClient(static_cast(args.size() - 1), args.data(), stream, streamErr); return {code, stream, streamErr}; } bool isServerLogged() { return executeInClient({"whoami"}).ok(); } void ensureLoggedIn() { if (!isServerLogged()) { const char* user = getenv("MEGACMD_TEST_USER"); const char* pass = getenv("MEGACMD_TEST_PASS"); ASSERT_THAT(user, testing::NotNull()) << "Missing testing user env variable. Ensure that MEGACMD_TEST_USER is set!"; ASSERT_STRNE(user, "") << "Missing testing user env variable. Ensure that MEGACMD_TEST_USER is set!"; ASSERT_THAT(pass, testing::NotNull()) << "Missing testing user password env variable. Ensure that MEGACMD_TEST_PASS is set!"; ASSERT_STRNE(pass, "") << "Missing testing user password env variable. Ensure that MEGACMD_TEST_PASS is set!"; auto result = executeInClient({"login", user, pass}); ASSERT_TRUE(result.ok()); result = executeInClient({"whoami"}); ASSERT_TRUE(result.ok()); ASSERT_THAT(result.out(), testing::HasSubstr(user)); } } bool hasReadStructure() { return executeInClient({"ls", "testReadingFolder01"}).ok(); } void ensureReadStructure() { if (!hasReadStructure()) { auto result = executeInClient({"import", LINK_TESTREADINGFOLDER01}); ASSERT_TRUE(result.ok()); } } MEGAcmd-2.5.2_Linux/tests/integration/MegaCmdTestingTools.h000066400000000000000000000075021516543156300236230ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #pragma once #include #include "megacmdcommonutils.h" #include "megacmd.h" #include "client/megacmdclient.h" #include "megacmdlogger.h" #include #include "Instruments.h" #include #include #include constexpr const char* LINK_TESTEXPORTFILE01TXT = "https://mega.nz/file/YfNngDKR#qk9THHhxbakddRmt_tLR8OhInexzVCpPPG6M6feFfZg"; constexpr const char* LINK_TESTEXPORTFOLDER = "https://mega.nz/folder/saMRXBYL#9GETCO4E-Po45d3qSjZhbQ"; constexpr const char* LINK_TESTREADINGFOLDER01 = "https://mega.nz/folder/YPV0nCKS#bSruKSPPubdCmm5harBJOQ"; std::vector splitByNewline(const std::string& str); class ClientResponse { int mStatus = -1; OUTSTRING mErr; OUTSTRING mOut; #ifdef _WIN32 std::string mUtf8String; std::string mUtf8ErrString; #endif public: ClientResponse(int status, OUTSTRINGSTREAM &streamOut, OUTSTRINGSTREAM &streamErr) : mStatus(status) , mOut (streamOut.str()) , mErr (streamErr.str()) #ifdef _WIN32 , mUtf8String(megacmd::utf16ToUtf8(mOut)) , mUtf8ErrString(megacmd::utf16ToUtf8(mErr)) #endif {} int status() { return mStatus; } bool ok() { return !mStatus; } // returns an utf8 std::string with the response from the server std::string &out() { #ifdef _WIN32 return mUtf8String; #else return mOut; #endif } //returns an utf8 std::string with the response from the server std::string &err() { #ifdef _WIN32 return mUtf8ErrString; #else return mErr; #endif } }; std::string joinString(const std::vector &vec, std::string_view sep = " "); ClientResponse executeInClient(const std::vector& command, bool nonInteractive = true); void ensureLoggedIn(); void ensureReadStructure(); class BasicGenericTest : public ::testing::Test { }; class NotLoggedTest : public BasicGenericTest { protected: void SetUp() override { BasicGenericTest::SetUp(); auto result = executeInClient({"logout"}).ok(); ASSERT_TRUE(result); } void TearDown() override { BasicGenericTest::SetUp(); auto result = executeInClient({"logout"}).ok(); ASSERT_TRUE(result); } }; class LoggedInTest : public BasicGenericTest { protected: void removeAllSyncs() { auto result = executeInClient({"sync"}); ASSERT_TRUE(result.ok()); auto lines = splitByNewline(result.out()); for (size_t i = 1; i < lines.size(); ++i) { // After an empty line, there are only user-facing messages (if any) if (lines[i].empty()) { return; } auto words = megacmd::split(lines[i], " "); ASSERT_FALSE(words.empty()); std::string syncId = words[0]; auto result = executeInClient({"sync", "--remove", "--", syncId}).ok(); ASSERT_TRUE(result); } } void SetUp() override { BasicGenericTest::SetUp(); ensureLoggedIn(); } }; class ReadTest : public LoggedInTest { protected: void SetUp() override { LoggedInTest::SetUp(); ensureReadStructure(); } }; class NOINTERACTIVEBasicTest : public BasicGenericTest{}; class NOINTERACTIVELoggedInTest : public LoggedInTest{}; class NOINTERACTIVENotLoggedTest : public NotLoggedTest{}; class NOINTERACTIVEReadTest : public ReadTest{}; MEGAcmd-2.5.2_Linux/tests/integration/PutTests.cpp000066400000000000000000000400541516543156300220740ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "MegaCmdTestingTools.h" #include "TestUtils.h" #include #include #include #include #include #include namespace fs = std::filesystem; namespace { std::string stripTrailingNewlines(std::string s) { while (!s.empty() && (s.back() == '\n' || s.back() == '\r')) { s.pop_back(); } return s; } std::string makeUniqueRemoteBase() { const auto* ti = ::testing::UnitTest::GetInstance()->current_test_info(); std::string name = std::string(ti->test_suite_name()) + "_" + std::string(ti->name()); // Keep it filesystem/MEGA-path friendly for (auto& ch: name) { if (!(std::isalnum(static_cast(ch)) || ch == '_' || ch == '-')) { ch = '_'; } } return "put_test_dir_" + name; } std::string readLocalFile(const fs::path& p) { std::ifstream in(p, std::ios::binary); return std::string((std::istreambuf_iterator(in)), std::istreambuf_iterator()); } } // namespace class PutTests: public NOINTERACTIVELoggedInTest { SelfDeletingTmpFolder mTmpDir; std::string mRemoteBase; void SetUp() override { NOINTERACTIVELoggedInTest::SetUp(); mRemoteBase = makeUniqueRemoteBase(); // Ensure a clean remote sandbox (void)executeInClient({"cd", "/"}); (void)executeInClient({"rm", "-rf", mRemoteBase}); auto r = executeInClient({"mkdir", mRemoteBase}); ASSERT_TRUE(r.ok()) << r.err(); r = executeInClient({"cd", mRemoteBase}); ASSERT_TRUE(r.ok()) << r.err(); } void TearDown() override { (void)executeInClient({"cd", "/"}); (void)executeInClient({"rm", "-rf", mRemoteBase}); NOINTERACTIVELoggedInTest::TearDown(); } protected: fs::path localPath() const { return mTmpDir.path(); } void createLocalFile(const std::string& filename, const std::string& content = "") { fs::create_directories((localPath() / filename).parent_path()); std::ofstream file(localPath() / filename, std::ios::binary); file << content; } void createLocalDir(const std::string& dirname) { fs::create_directories(localPath() / dirname); } std::string remoteBase() const { return mRemoteBase; } }; TEST_F(PutTests, SingleFileUpload) { const std::string filename = "test_file.txt"; const std::string content = "Hello, MEGAcmd!"; createLocalFile(filename, content); // Upload into current remote cwd (mRemoteBase) auto result = executeInClient({"put", (localPath() / filename).string()}); ASSERT_TRUE(result.ok()) << result.err(); // Verify file was uploaded + content matches (normalize trailing newline) result = executeInClient({"cat", filename}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ(content, stripTrailingNewlines(result.out())); } TEST_F(PutTests, SingleFileUploadToDestination) { const std::string filename = "test_file.txt"; const std::string content = "Hello, MEGAcmd!"; const std::string remoteDir = "dest_dir"; createLocalFile(filename, content); auto result = executeInClient({"mkdir", remoteDir}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"put", (localPath() / filename).string(), remoteDir}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"cat", remoteDir + "/" + filename}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ(content, stripTrailingNewlines(result.out())); } TEST_F(PutTests, EmptyFileUpload) { const std::string filename = "empty_file.txt"; createLocalFile(filename); auto result = executeInClient({"put", (localPath() / filename).string()}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"ls", filename}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_THAT(result.out(), testing::HasSubstr(filename)); } TEST_F(PutTests, MultipleFileUpload) { const std::string remoteDir = "multi_dest"; auto result = executeInClient({"mkdir", remoteDir}); ASSERT_TRUE(result.ok()) << result.err(); const std::vector files = {"file1.txt", "file2.txt", "file3.txt"}; for (const auto& f: files) { createLocalFile(f, "Content of " + f); } std::vector command = {"put"}; for (const auto& f: files) { command.push_back((localPath() / f).string()); } command.push_back(remoteDir); result = executeInClient(command); ASSERT_TRUE(result.ok()) << " command = " << joinString(command) << " err=" << result.err(); for (const auto& f: files) { result = executeInClient({"cat", remoteDir + "/" + f}); ASSERT_TRUE(result.ok()) << "Failed to verify file: " << f << " err=" << result.err(); EXPECT_EQ("Content of " + f, stripTrailingNewlines(result.out())); } } TEST_F(PutTests, DirectoryUpload) { const std::string dirname = "test_dir"; const std::string subfile = "subfile.txt"; const std::string content = "Content in subdirectory"; createLocalDir(dirname); createLocalFile(dirname + "/" + subfile, content); auto result = executeInClient({"put", (localPath() / dirname).string()}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"ls", dirname}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_THAT(result.out(), testing::HasSubstr(subfile)); result = executeInClient({"cat", dirname + "/" + subfile}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ(content, stripTrailingNewlines(result.out())); } TEST_F(PutTests, DirectoryUploadToDestination) { const std::string dirname = "test_dir"; const std::string subfile = "subfile.txt"; const std::string content = "Content in subdirectory"; const std::string remoteDest = "dest_dir"; createLocalDir(dirname); createLocalFile(dirname + "/" + subfile, content); auto result = executeInClient({"mkdir", remoteDest}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"put", (localPath() / dirname).string(), remoteDest}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"ls", remoteDest + "/" + dirname}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_THAT(result.out(), testing::HasSubstr(subfile)); result = executeInClient({"cat", remoteDest + "/" + dirname + "/" + subfile}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ(content, stripTrailingNewlines(result.out())); } TEST_F(PutTests, UploadWithCreateFlag) { const std::string filename = "test_file.txt"; const std::string content = "Hello, MEGAcmd!"; const std::string remotePath = "new_dir/test_file.txt"; createLocalFile(filename, content); auto result = executeInClient({"put", "-c", (localPath() / filename).string(), remotePath}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"cat", remotePath}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ(content, stripTrailingNewlines(result.out())); } TEST_F(PutTests, UploadWithCreateFlagAndAbsoluteDestinationPath) { // When cwd is in a subfolder (e.g. /put_test_xxx) and put -c uses an absolute // destination path, the path must be resolved from root, not from cwd. const std::string filename = "file01.txt"; createLocalFile(filename); const std::string absoluteDestFolder = "/" + remoteBase() + "/newfile/"; auto result = executeInClient({"put", "-c", (localPath() / filename).string(), absoluteDestFolder}); ASSERT_TRUE(result.ok()) << result.err(); const std::string absoluteRemotePath = absoluteDestFolder + filename; result = executeInClient({"cat", absoluteRemotePath}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ("", stripTrailingNewlines(result.out())); } TEST_F(PutTests, UploadNonAsciiFilename) { #ifdef _WIN32 // Skip on Windows due to encoding issues in test environment GTEST_SKIP() << "Skipping non-ASCII filename test on Windows due to encoding limitations"; return; #endif const std::string filename = "\xE3\x83\x86\xE3\x82\xB9\xE3\x83\x88\xE3\x83\x95\xE3\x82\xA1" "\xE3\x82\xA4\xE3\x83\xAB.txt"; const std::string content = "Content with non-ASCII filename"; createLocalFile(filename, content); auto result = executeInClient({"put", (localPath() / filename).string()}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"ls"}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_THAT(result.out(), testing::HasSubstr(filename)); } TEST_F(PutTests, UploadFileWithSpaces) { const std::string filename = "test file with spaces.txt"; const std::string content = "Content in file with spaces"; createLocalFile(filename, content); auto result = executeInClient({"put", (localPath() / filename).string()}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"ls"}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_THAT(result.out(), testing::HasSubstr(filename)); } TEST_F(PutTests, ReplaceExistingFile) { const std::string filename = "test_file.txt"; const std::string originalContent = "Original content"; const std::string newContent = "New content replacing original"; createLocalFile(filename, originalContent); auto result = executeInClient({"put", (localPath() / filename).string()}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"cat", filename}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ(originalContent, stripTrailingNewlines(result.out())); createLocalFile(filename, newContent); result = executeInClient({"put", (localPath() / filename).string(), filename}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"cat", filename}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ(newContent, stripTrailingNewlines(result.out())); } TEST_F(PutTests, ReplaceFileInSubdirectory) { const std::string dirname = "test_dir"; const std::string filename = "test_file.txt"; const std::string originalContent = "Original content"; const std::string newContent = "New content in subdirectory"; ASSERT_TRUE(executeInClient({"mkdir", dirname}).ok()); createLocalFile(filename, originalContent); auto result = executeInClient({"put", (localPath() / filename).string(), dirname}); ASSERT_TRUE(result.ok()) << result.err(); createLocalFile(filename, newContent); result = executeInClient({"put", (localPath() / filename).string(), dirname + "/" + filename}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"cat", dirname + "/" + filename}); ASSERT_TRUE(result.ok()) << result.err(); EXPECT_EQ(newContent, stripTrailingNewlines(result.out())); } TEST_F(PutTests, MultipleFilesToFileTargetShouldFail) { const std::string file1 = "file1.txt"; const std::string file2 = "file2.txt"; const std::string targetFile = "target.txt"; createLocalFile(file1, "Content 1"); createLocalFile(file2, "Content 2"); auto result = executeInClient({"put", (localPath() / file1).string(), targetFile}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"put", (localPath() / file1).string(), (localPath() / file2).string(), targetFile}); ASSERT_FALSE(result.ok()); EXPECT_THAT(result.err(), testing::HasSubstr("Destination")); } TEST_F(PutTests, UploadToNonExistentPathWithoutCreateFlag) { const std::string filename = "test_file.txt"; const std::string nonExistentPath = "non_existent_dir/file.txt"; createLocalFile(filename, "Test content"); auto result = executeInClient({"put", (localPath() / filename).string(), nonExistentPath}); ASSERT_FALSE(result.ok()); EXPECT_THAT(result.err(), testing::AnyOf(testing::HasSubstr("Couldn't find destination"), testing::HasSubstr("destination"))); } TEST_F(PutTests, UploadDirectoryToFileTargetShouldFail) { const std::string dirname = "test_dir"; const std::string targetFile = "target.txt"; createLocalDir(dirname); createLocalFile("temp.txt", "temp"); auto result = executeInClient({"put", (localPath() / "temp.txt").string(), targetFile}); ASSERT_TRUE(result.ok()) << result.err(); result = executeInClient({"put", (localPath() / dirname).string(), targetFile}); ASSERT_FALSE(result.ok()); EXPECT_THAT(result.err(), testing::HasSubstr("Destination")); } TEST_F(PutTests, PutSingleFileRoundTripViaGet) { const std::string filename = "roundtrip.txt"; const std::string content = "roundtrip-content\nline2\n"; createLocalFile(filename, content); auto r = executeInClient({"put", (localPath() / filename).string()}); ASSERT_TRUE(r.ok()) << r.err(); // Download back and compare bytes (stronger than `cat`) SelfDeletingTmpFolder dlTmp; r = executeInClient({"get", filename, dlTmp.path().string()}); ASSERT_TRUE(r.ok()) << r.err(); const fs::path downloaded = dlTmp.path() / filename; ASSERT_TRUE(fs::exists(downloaded)); EXPECT_EQ(readLocalFile(downloaded), content); } TEST_F(PutTests, PutCanRenameRemoteFile) { const std::string localName = "src.txt"; const std::string remoteName = "dst.txt"; const std::string content = "rename me\n"; createLocalFile(localName, content); auto r = executeInClient({"put", (localPath() / localName).string(), remoteName}); ASSERT_TRUE(r.ok()) << r.err(); r = executeInClient({"ls"}); ASSERT_TRUE(r.ok()) << r.err(); EXPECT_THAT(r.out(), testing::HasSubstr(remoteName)); SelfDeletingTmpFolder dlTmp; r = executeInClient({"get", remoteName, dlTmp.path().string()}); ASSERT_TRUE(r.ok()) << r.err(); const fs::path downloaded = dlTmp.path() / remoteName; ASSERT_TRUE(fs::exists(downloaded)); EXPECT_EQ(readLocalFile(downloaded), content); } TEST_F(PutTests, PutDirectoryTreeShowsUp) { // Local tree: // tree/ // a.txt // sub/b.txt const std::string treeDir = "tree"; createLocalDir(treeDir + "/sub"); createLocalFile(treeDir + "/a.txt", "A\n"); createLocalFile(treeDir + "/sub/b.txt", "B\n"); auto r = executeInClient({"put", (localPath() / treeDir).string()}); ASSERT_TRUE(r.ok()) << r.err(); r = executeInClient({"ls", treeDir}); ASSERT_TRUE(r.ok()) << r.err(); EXPECT_THAT(r.out(), testing::HasSubstr("a.txt")); EXPECT_THAT(r.out(), testing::HasSubstr("sub")); r = executeInClient({"ls", treeDir + "/sub"}); ASSERT_TRUE(r.ok()) << r.err(); EXPECT_THAT(r.out(), testing::HasSubstr("b.txt")); } TEST_F(PutTests, PutPrintTagAtStartPrintsDecimalTag) { const std::string filename = "tag_test.txt"; createLocalFile(filename, "tag\n"); auto r = executeInClient({"put", "--print-tag-at-start", (localPath() / filename).string()}); ASSERT_TRUE(r.ok()) << r.err(); const std::string out = r.out(); // Must contain the prefix const std::string prefix = "Upload started: Tag = "; auto pos = out.find(prefix); ASSERT_NE(pos, std::string::npos) << "Output did not contain expected prefix. out=\n" << out; pos += prefix.size(); ASSERT_LT(pos, out.size()) << "No characters after tag prefix. out=\n" << out; // Parse consecutive decimal digits after the prefix std::size_t end = pos; while (end < out.size() && std::isdigit(static_cast(out[end]))) { ++end; } ASSERT_GT(end, pos) << "Tag was not a decimal number. out=\n" << out; // Optional: sanity check it is followed by "." // (keeps it aligned with the format, but still doesn't validate path) ASSERT_TRUE(end < out.size() && out[end] == '.') << "Expected '.' after decimal tag. out=\n" << out; } MEGAcmd-2.5.2_Linux/tests/integration/SyncIgnoreTests.cpp000066400000000000000000000241121516543156300234010ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include #include "megacmdcommonutils.h" #include "TestUtils.h" #include "MegaCmdTestingTools.h" using namespace megacmd; using TI = TestInstruments; class SyncIgnoreTests : public NOINTERACTIVELoggedInTest { void SetUp() override { NOINTERACTIVELoggedInTest::SetUp(); TearDown(); } void TearDown() override { removeAllSyncs(); writeToDefaultFile(); } protected: SelfDeletingTmpFolder mTmpDir; void writeToDefaultFile(const std::vector& lines = {}) { auto platformDirs = PlatformDirectories::getPlatformSpecificDirectories(); auto configDirPath = platformDirs->configDirPath(); const fs::path megaIgnorePath = configDirPath / ".megaignore.default"; std::ofstream file(megaIgnorePath); ASSERT_TRUE(file.is_open()); for (const std::string& line : lines) { file << line << '\n'; } ASSERT_FALSE(file.fail()); } void readFromDefaultFile(std::string& contents) // cannot return string or asserts won't work { auto platformDirs = PlatformDirectories::getPlatformSpecificDirectories(); auto configDirPath = platformDirs->configDirPath(); const fs::path megaIgnorePath = configDirPath / ".megaignore.default"; std::ifstream file(megaIgnorePath); ASSERT_TRUE(file.is_open()); for (std::string line; getline(file, line);) { contents += line + "\n"; } ASSERT_TRUE(file.eof()); } std::string qw(const std::string& str) // quote wrap { return "\"" + str + "\""; } }; TEST_F(SyncIgnoreTests, DefaultIgnoreFile) { auto result = executeInClient({"sync-ignore", "DEFAULT"}); ASSERT_TRUE(result.ok()); result = executeInClient({"sync-ignore", "default"}); ASSERT_TRUE(result.ok()); } TEST_F(SyncIgnoreTests, AddAndShow) { std::string filter1 = "-:some_file.txt"; std::string filter2 = "-fp:video/*.avi"; std::string filter3 = "+fng:family*.jpg"; std::string filter4 = "-d:private"; std::string filter5 = "-:*"; auto result = executeInClient({"sync-ignore", "--add", "--", filter1, filter2, filter3, filter4, filter5, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw(filter1))); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw(filter2))); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw(filter3))); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw(filter4))); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw(filter5))); result = executeInClient({"sync-ignore", "--show", "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr(filter1)); EXPECT_THAT(result.out(), testing::HasSubstr(filter2)); EXPECT_THAT(result.out(), testing::HasSubstr(filter3)); EXPECT_THAT(result.out(), testing::HasSubstr(filter4)); EXPECT_THAT(result.out(), testing::HasSubstr(filter5)); } TEST_F(SyncIgnoreTests, AddAndRemove) { std::string filter = "-N:*.avi"; auto result = executeInClient({"sync-ignore", "--add", "--", filter, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw(filter))); result = executeInClient({"sync-ignore", "--remove", "--", filter, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Removed filter " + qw(filter))); result = executeInClient({"sync-ignore", "--show", "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(filter))); } TEST_F(SyncIgnoreTests, AddAndRemoveWithExclusionArgument) { std::string filter1 = "n:*.mp4"; std::string filter2 = "fp:pics/*.jpg"; std::string filter3 = "d:private"; auto result = executeInClient({"sync-ignore", "--add-exclusion", filter1, filter2, filter3, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw("-" + filter1))); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw("-" + filter2))); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw("-" + filter3))); result = executeInClient({"sync-ignore", "--remove-exclusion", filter1, filter2, filter3, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Removed filter " + qw("-" + filter1))); EXPECT_THAT(result.out(), testing::HasSubstr("Removed filter " + qw("-" + filter2))); EXPECT_THAT(result.out(), testing::HasSubstr("Removed filter " + qw("-" + filter3))); result = executeInClient({"sync-ignore", "--show", "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(filter1))); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(filter2))); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(filter3))); } TEST_F(SyncIgnoreTests, CannotAddIfAlreadyExists) { std::string filter = "+fg:work*.txt"; auto result = executeInClient({"sync-ignore", "--add", "--", filter, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw(filter))); result = executeInClient({"sync-ignore", "--add", "--", filter, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Cannot add filter " + qw(filter))); EXPECT_THAT(result.out(), testing::HasSubstr("already in the .megaignore file")); } TEST_F(SyncIgnoreTests, CannotRemoveIfDoesntExist) { std::string filter = "+fnpg:family*.jpg"; auto result = executeInClient({"sync-ignore", "--remove", "--", filter, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Cannot remove filter " + qw(filter))); EXPECT_THAT(result.out(), testing::HasSubstr("it's not in the .megaignore file")); } TEST_F(SyncIgnoreTests, NonDefaultIgnoreFile) { std::string localDir = mTmpDir.string(); #ifdef __APPLE__ localDir = "/private" + localDir; #endif std::string cloudDir = "cloud_dir"; TI::ScopeGuard cloudRmGuard([&cloudDir] { executeInClient({"rm", "-r", "-f", cloudDir}); }); executeInClient({"rm", "-r", "-f", cloudDir}); auto result = executeInClient({"mkdir", "-p", cloudDir}); ASSERT_TRUE(result.ok()); result = executeInClient({"sync", localDir, cloudDir}); ASSERT_TRUE(result.ok()); result = executeInClient({"sync-ignore", "--show", localDir}); ASSERT_TRUE(result.ok()); std::string filter = "-d:.vscode"; result = executeInClient({"sync-ignore", "--add", "--", filter, localDir}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter " + qw(filter))); result = executeInClient({"sync-ignore", "--show", localDir}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr(filter)); result = executeInClient({"sync-ignore", "--remove", "--", filter, localDir}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Removed filter " + qw(filter))); } TEST_F(SyncIgnoreTests, NonExistingIgnoreFile) { std::string invalidSyncDir = "some_sync_dir"; auto result = executeInClient({"sync-ignore", "--show", invalidSyncDir}); ASSERT_FALSE(result.ok()); EXPECT_THAT(result.err(), testing::HasSubstr("Sync " + invalidSyncDir + " was not found")); // Must also work with implicit "--show" result = executeInClient({"sync-ignore", invalidSyncDir}); ASSERT_FALSE(result.ok()); EXPECT_THAT(result.err(), testing::HasSubstr("Sync " + invalidSyncDir + " was not found")); } TEST_F(SyncIgnoreTests, IncorrectFilterFormat) { std::string validFilter = "-fp:video/*.avi"; std::string invalidFilter = "video/family/*.avi"; auto result = executeInClient({"sync-ignore", "--add", "--", validFilter, invalidFilter, "DEFAULT"}); ASSERT_FALSE(result.ok()); EXPECT_THAT(result.err(), testing::HasSubstr("The filter " + qw(invalidFilter) + " does not have valid format")); } TEST_F(SyncIgnoreTests, CommentsAndBOMNotRemoved) { std::string BOM = "\xEF\xBB\xBF"; std::string comment = "# This is a comment"; std::string filter = "-nr:.*foo"; writeToDefaultFile({BOM, comment, filter}); auto result = executeInClient({"sync-ignore", "--remove", "--", filter, "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Removed filter " + qw(filter))); std::string contents; readFromDefaultFile(contents); EXPECT_THAT(contents, testing::HasSubstr(BOM)); EXPECT_THAT(contents, testing::HasSubstr(comment)); } TEST_F(SyncIgnoreTests, UseExcludeInterface) { std::string pattern = "*.pdf"; auto result = executeInClient({"sync-ignore", "--show", "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(pattern))); result = executeInClient({"exclude", "-a", pattern}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Added filter")); EXPECT_THAT(result.out(), testing::HasSubstr(pattern)); result = executeInClient({"sync-ignore", "--show", "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr(pattern)); result = executeInClient({"exclude", "-d", pattern}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Removed filter")); EXPECT_THAT(result.out(), testing::HasSubstr(pattern)); result = executeInClient({"sync-ignore", "--show", "DEFAULT"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(pattern))); } MEGAcmd-2.5.2_Linux/tests/integration/SyncIssuesTests.cpp000066400000000000000000000352451516543156300234420ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include #include "megacmdcommonutils.h" #include "TestUtils.h" #include "MegaCmdTestingTools.h" using TI = TestInstruments; // This class ensures that the sync issue list eventually // reaches the expected size (before a certain timeout) class SyncIssueListGuard { uint64_t mCurrentListSize; const uint64_t mExpectedListSize; bool mTriggered; std::mutex mMtx; std::condition_variable mCv; public: SyncIssueListGuard(uint64_t expectedListSize) : mCurrentListSize(0), mExpectedListSize(expectedListSize), mTriggered(false) { TI::Instance().onEveryEvent(TI::Event::SYNC_ISSUES_LIST_UPDATED, [this] { auto syncIssueListSizeOpt = TI::Instance().testValue(TI::TestValue::SYNC_ISSUES_LIST_SIZE); EXPECT_TRUE(syncIssueListSizeOpt.has_value()); { std::lock_guard guard(mMtx); mCurrentListSize = std::get(*syncIssueListSizeOpt); mTriggered = true; } mCv.notify_one(); }); } ~SyncIssueListGuard() { { std::unique_lock lock(mMtx); mCv.wait_for(lock, std::chrono::seconds(5), [this] { return mTriggered && mCurrentListSize == mExpectedListSize; }); EXPECT_EQ(mCurrentListSize, mExpectedListSize); } TI::Instance().clearEvent(TI::Event::SYNC_ISSUES_LIST_UPDATED); TI::Instance().resetTestValue(TI::TestValue::SYNC_ISSUES_LIST_SIZE); } }; template class SyncIssuesTests_ : public NOINTERACTIVELoggedInTest { SelfDeletingTmpFolder mTmpDir; void SetUp() override { NOINTERACTIVELoggedInTest::SetUp(); TearDown(); auto result = executeInClient({"mkdir", "-p", syncDirCloud()}).ok(); ASSERT_TRUE(result); result = fs::create_directory(syncDirLocal()); ASSERT_TRUE(result); if constexpr (runSync) { SyncIssueListGuard guard(0); // ensure there are no sync issues before we start the test result = executeInClient({"sync", syncDirLocal(), syncDirCloud()}).ok(); ASSERT_TRUE(result); } } void TearDown() override { removeAllSyncs(); fs::remove_all(syncDirLocal()); executeInClient({"rm", "-r", "-f", syncDirCloud()}); } protected: std::string syncDirLocal() const { return mTmpDir.string() + "/tests_integration_sync_dir/"; } std::string syncDirCloud() const { return "tests_integration_sync_dir/"; } std::string qw(const std::string& str) // quote wrap { return "'" + str + "'"; } }; using SyncIssuesTests = SyncIssuesTests_; using ManualSyncIssuesTests = SyncIssuesTests_; TEST_F(SyncIssuesTests, NoIssues) { auto result = executeInClient({"sync-issues"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("There are no sync issues")); } TEST_F(SyncIssuesTests, NameConflict) { #ifdef _WIN32 const char* conflictingName = "F01"; #else const char* conflictingName = "f%301"; #endif auto rMkdir = executeInClient({"mkdir", syncDirCloud() + "f01"}); ASSERT_TRUE(rMkdir.ok()); { // Register the event callback *before* causing the sync issue SyncIssueListGuard guard(1); // Cause the name conclict rMkdir = executeInClient({"mkdir", syncDirCloud() + conflictingName}); ASSERT_TRUE(rMkdir.ok()); } // Check the name conclict appears in the list of sync issues auto result = executeInClient({"sync-issues", "--disable-path-collapse"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr("There are no sync issues"))); EXPECT_THAT(result.out(), testing::AnyOf(testing::HasSubstr(qw("f01")), testing::HasSubstr(qw(conflictingName)))); } TEST_F(SyncIssuesTests, SymLink) { const std::string dirPath = syncDirLocal() + "some_dir"; ASSERT_TRUE(fs::create_directory(dirPath)); std::string linkName = "some_link"; std::string linkPath = syncDirLocal() + linkName; #ifdef _WIN32 megacmd::replaceAll(linkPath, "/", "\\"); #endif { SyncIssueListGuard guard(1); fs::create_directory_symlink(dirPath, linkPath); } // Check the symlink in the list of sync issues auto result = executeInClient({"sync-issues", "--disable-path-collapse"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr("There are no sync-issues issues"))); EXPECT_THAT(result.out(), testing::HasSubstr(qw(linkName))); { SyncIssueListGuard guard(0); fs::remove(linkPath); } result = executeInClient({"sync-issues"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("There are no sync issues")); } TEST_F(ManualSyncIssuesTests, FileAgainstFolder) { const std::string fileName = "fake_file"; auto result = executeInClient({"mkdir", "-p", syncDirCloud() + fileName}); ASSERT_TRUE(result.ok()); { std::ofstream file(syncDirLocal() + fileName); file << "Some data"; } // Start syncing once we've setup inconsistent data in cloud and local { SyncIssueListGuard guard(1); result = executeInClient({"sync", syncDirLocal(), syncDirCloud()}); ASSERT_TRUE(result.ok()); } result = executeInClient({"sync-issues", "--disable-path-collapse", "--detail", "--all"}); ASSERT_TRUE(result.ok()); auto lines = splitByNewline(result.out()); ASSERT_THAT(lines, testing::Contains(testing::HasSubstr("Unable to sync " + qw(fileName)))); ASSERT_THAT(lines, testing::Contains(testing::HasSubstr("Cannot sync folders against files"))); ASSERT_THAT(lines, testing::Contains(testing::AllOf(testing::HasSubstr(""), testing::HasSubstr("Folder")))); ASSERT_THAT(lines, testing::Contains(testing::AllOf(testing::Not(testing::HasSubstr("")), testing::HasSubstr("File")))); } TEST_F(SyncIssuesTests, IncorrectSyncIssueListSizeOnSecondSymlink) { // This tests against an internal issue that caused the sync issue list to have incorrect // size for a brief period of time after creating a second symlink. This is unlikely to // affect how users interact with MEGAcmd, since it happened over a short timespan. But the test // is still useful to prove the internal correctness of our sync issues is not broken. // Note: required sdk fix (+our changes) to pass (see: SDK-4016) const std::string dirPath = syncDirLocal() + "some_dir"; ASSERT_TRUE(fs::create_directory(dirPath)); // The first link doesn't cause an issue, but we still need to wait for it { SyncIssueListGuard guard(1); fs::create_directory_symlink(dirPath, syncDirLocal() + "link1"); } // The second link causes the issue { SyncIssueListGuard guard(2); fs::create_directory_symlink(dirPath, syncDirLocal() + "link2"); } } TEST_F(SyncIssuesTests, LimitedSyncIssueList) { const std::string dirPath = syncDirLocal() + "some_dir"; ASSERT_TRUE(fs::create_directory(dirPath)); // Create 5 sync issues for (int i = 1; i <= 5; ++i) { SyncIssueListGuard guard(i); fs::create_directory_symlink(dirPath, syncDirLocal() + "link" + std::to_string(i)); } auto result = executeInClient({"sync-issues", "--limit=" + std::to_string(3)}); ASSERT_TRUE(result.ok()); // There should be 7 lines (column header + limit=3 + newline + detail usage + limit-specific note) auto lines = splitByNewline(result.out()); EXPECT_THAT(lines, testing::SizeIs(7)); EXPECT_THAT(lines.at(lines.size()-2), testing::HasSubstr("showing 3 out of 5 issues")); } TEST_F(SyncIssuesTests, ShowSyncIssuesInSyncCommand) { auto result = executeInClient({"sync"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr(" NO ")); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr("You have sync issues"))); const std::string dirPath = syncDirLocal() + "some_dir"; ASSERT_TRUE(fs::create_directory(dirPath)); { SyncIssueListGuard guard(1); fs::create_directory_symlink(dirPath, syncDirLocal() + "link1"); } result = executeInClient({"sync"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Sync Issues (1)")); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(" NO "))); EXPECT_THAT(result.err(), testing::HasSubstr("You have sync issues")); { SyncIssueListGuard guard(2); fs::create_directory_symlink(dirPath, syncDirLocal() + "link2"); } result = executeInClient({"sync"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Sync Issues (2)")); EXPECT_THAT(result.out(), testing::Not(testing::HasSubstr(" NO "))); EXPECT_THAT(result.err(), testing::HasSubstr("You have sync issues")); } TEST_F(SyncIssuesTests, SyncIssueDetail) { const std::string dirPath = syncDirLocal() + "some_dir"; ASSERT_TRUE(fs::create_directory(dirPath)); std::string linkPath = syncDirLocal() + "some_link"; #ifdef _WIN32 megacmd::replaceAll(linkPath, "/", "\\"); #endif { SyncIssueListGuard guard(1); fs::create_directory_symlink(dirPath, linkPath); } // Get the sync issue id auto result = executeInClient({"sync-issues"}); ASSERT_TRUE(result.ok()); auto lines = splitByNewline(result.out()); EXPECT_EQ(lines.size(), 4); // Column names + issue + newline + detail usage auto words = megacmd::split(lines[1], " "); EXPECT_THAT(words, testing::Not(testing::IsEmpty())); std::string syncIssueId = words[0]; // Get the parent sync ID result = executeInClient({"sync"}); ASSERT_TRUE(result.ok()); lines = splitByNewline(result.out()); EXPECT_THAT(lines.size(), 3); words = megacmd::split(lines[1], " "); EXPECT_THAT(words, testing::Not(testing::IsEmpty())); std::string parentSyncId = words[0]; result = executeInClient({"sync-issues", "--disable-path-collapse", "--detail", "--", syncIssueId}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Parent sync: " + parentSyncId)); EXPECT_THAT(result.out(), testing::HasSubstr("Symlink detected")); EXPECT_THAT(result.out(), testing::HasSubstr(linkPath)); } TEST_F(SyncIssuesTests, AllSyncIssuesDetail) { const std::string dirPath = syncDirLocal() + "some_dir"; ASSERT_TRUE(fs::create_directory(dirPath)); std::string linkPath = syncDirLocal() + "some_link"; #ifdef _WIN32 megacmd::replaceAll(linkPath, "/", "\\"); #endif { SyncIssueListGuard guard(1); fs::create_directory_symlink(dirPath, linkPath); } // Get the sync issue id auto result = executeInClient({"sync-issues"}); ASSERT_TRUE(result.ok()); auto lines = splitByNewline(result.out()); EXPECT_EQ(lines.size(), 4); // Column names + issue + newline + detail usage auto words = megacmd::split(lines[1], " "); EXPECT_THAT(words, testing::Not(testing::IsEmpty())); std::string syncIssueId = words[0]; // Get the parent sync ID result = executeInClient({"sync"}); ASSERT_TRUE(result.ok()); lines = splitByNewline(result.out()); EXPECT_THAT(lines.size(), 3); words = megacmd::split(lines[1], " "); EXPECT_THAT(words, testing::Not(testing::IsEmpty())); std::string parentSyncId = words[0]; result = executeInClient({"sync-issues", "--disable-path-collapse", "--detail", "--all"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Parent sync: " + parentSyncId)); EXPECT_THAT(result.out(), testing::HasSubstr("Symlink detected")); EXPECT_THAT(result.out(), testing::HasSubstr(linkPath)); EXPECT_THAT(result.out(), testing::HasSubstr("Details on issue " + syncIssueId)); } TEST_F(ManualSyncIssuesTests, AllSyncIssuesDetailEnforceReasonsAndPathProblems) { // Configure a conflicting issue and iterate over possible sync issues reasons and path problems, // to exercise code paths for all: const std::string fileName = "fake_file"; auto result = executeInClient({"mkdir", "-p", syncDirCloud() + fileName}); ASSERT_TRUE(result.ok()); { std::ofstream file(syncDirLocal() + fileName); file << "Some data"; } // Start syncing once we've setup inconsistent data in cloud and local { SyncIssueListGuard guard(1); result = executeInClient({"sync", syncDirLocal(), syncDirCloud()}); ASSERT_TRUE(result.ok()); } // Get the sync issue id result = executeInClient({"sync-issues"}); ASSERT_TRUE(result.ok()); auto lines = splitByNewline(result.out()); EXPECT_EQ(lines.size(), 4); // Column names + issue + newline + detail usage auto words = megacmd::split(lines[1], " "); EXPECT_THAT(words, testing::Not(testing::IsEmpty())); std::string syncIssueId = words[0]; // Get the parent sync ID result = executeInClient({"sync"}); ASSERT_TRUE(result.ok()); lines = splitByNewline(result.out()); EXPECT_THAT(lines.size(), 3); words = megacmd::split(lines[1], " "); EXPECT_THAT(words, testing::Not(testing::IsEmpty())); std::string parentSyncId = words[0]; for (int reasonType = static_cast(mega::SyncWaitReason::NoReason); reasonType < static_cast(mega::SyncWaitReason::SyncWaitReason_LastPlusOne); ++reasonType) { for (int pathProblem = static_cast(mega::PathProblem::NoProblem); pathProblem < static_cast(mega::PathProblem::PathProblem_LastPlusOne); ++pathProblem) { if (pathProblem == 19) { continue; // deprecated } TestInstrumentsTestValueGuard reasonGuard(TI::TestValue::SYNC_ISSUE_ENFORCE_REASON_TYPE, (int64_t) reasonType); TestInstrumentsTestValueGuard pathProblemGuard(TI::TestValue::SYNC_ISSUE_ENFORCE_PATH_PROBLEM, (int64_t) pathProblem); result = executeInClient({"sync-issues", "--disable-path-collapse", "--detail", "--all"}); ASSERT_TRUE(result.ok()); EXPECT_THAT(result.out(), testing::HasSubstr("Parent sync: " + parentSyncId)); EXPECT_THAT(result.out(), testing::HasSubstr("Details on issue " + syncIssueId)); } } } MEGAcmd-2.5.2_Linux/tests/integration/main.cpp000066400000000000000000000061441516543156300212270ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include "megacmd.h" #include "megacmdlogger.h" #include "megacmd_rotating_logger.h" #include "Instruments.h" #include "TestUtils.h" #ifdef __linux__ #include #endif #include #include #ifndef UNUSED #define UNUSED(x) (void)(x) #endif #ifdef __linux__ static void setUpUnixSignals() { sigset_t set; sigemptyset(&set); sigaddset(&set, SIGPIPE); pthread_sigmask(SIG_BLOCK, &set, NULL); } #endif int main (int argc, char *argv[]) { #ifdef __linux__ if (getenv("MEGA_INTEGRATION_TEST_ENFORCE_SINGLE_CPU")) { cpu_set_t set; CPU_ZERO(&set); CPU_SET(1, &set); if (sched_setaffinity(getpid(), sizeof(set), &set) == -1) { std::cerr << "sched_setaffinity error: " << errno << std::endl; exit(errno); } } setUpUnixSignals(); #endif testing::InitGoogleTest(&argc, argv); #ifdef WIN32 megacmd::Instance windowsConsoleController; // Set custom gtests event listener to control the output to stdout ::testing::TestEventListeners& listeners = ::testing::UnitTest::GetInstance()->listeners(); auto customListener = new CustomTestEventListener(); customListener->mDefault.reset(listeners.Release(listeners.default_result_printer())); listeners.Append(customListener); #endif using TI = TestInstruments; std::promise serverWaitingPromise; TI::Instance().onEventOnce(TI::Event::SERVER_ABOUT_TO_START_WAITING_FOR_PETITIONS, [&serverWaitingPromise]() { serverWaitingPromise.set_value(); }); std::thread serverThread([] { std::vector args{ (char *)"argv0_INTEGRATION_TESTS", nullptr }; megacmd::LogConfig logConfig; logConfig.mSdkLogLevel = mega::MegaApi::LOG_LEVEL_MAX; logConfig.mCmdLogLevel = mega::MegaApi::LOG_LEVEL_MAX; logConfig.mLogToCout = false; logConfig.mJsonLogs = true; auto createDefaultStream = [] { return new megacmd::FileRotatingLoggedStream(megacmd::MegaCmdLogger::getDefaultFilePath()); }; megacmd::executeServer(1, args.data(), createDefaultStream, logConfig); }); auto waitReturn = serverWaitingPromise.get_future().wait_for(std::chrono::seconds(10)); UNUSED(waitReturn); assert(waitReturn != std::future_status::timeout); auto exitCode = RUN_ALL_TESTS(); megacmd::stopServer(); serverThread.join(); #ifdef _WIN32 // We use a file to pass the exit code to Jenkins, // since it fails to get the actual value otherwise std::ofstream("exit_code.txt") << exitCode; #endif return exitCode; } MEGAcmd-2.5.2_Linux/tests/megacmd_create_dir_tree.sh000077500000000000000000000021641516543156300224060ustar00rootroot00000000000000#!/bin/sh # This is the directory structure expected by some of our read integration tests # We can use this script to re-populate it if it gets deleted from our exports account for whatever reason set -e mega-login $MEGACMD_TEST_USER $MEGACMD_TEST_PASS TMP=$(mktemp --directory) cleanup() { ARG=$? echo "Removing $TMP" rm -rf $TMP exit $ARG } trap cleanup EXIT mkdir -p $TMP/testReadingFolder01 for i in 01 02; do mkdir -p $TMP/testReadingFolder01/folder$i for n in 01 02 03; do echo $TMP/testReadingFolder01/file$n.txt > $TMP/testReadingFolder01/file$n.txt echo $TMP/testReadingFolder01/folder$i/file$n.txt > $TMP/testReadingFolder01/folder$i/file$n.txt mkdir -p $TMP/testReadingFolder01/folder$i/subfolder$n for n2 in 01 02 03; do echo $TMP/testReadingFolder01/folder$i/subfolder$n/file$n2.txt > $TMP/testReadingFolder01/folder$i/subfolder$n/file$n2.txt done done done echo /file01.txt > $TMP/file01.txt mkdir -p $TMP/testExportFolder/subDirectoryExport echo /testExportFoldersubDirectoryExport/file01.txt > $TMP/testExportFolder/subDirectoryExport/file01.txt cd $TMP && mega-put * / MEGAcmd-2.5.2_Linux/tests/megacmd_find_test.py000077500000000000000000000146511516543156300212670ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- import os, shutil import unittest import xmlrunner from megacmd_tests_common import * def setUpModule(): global ABSPWD ABSPWD = os.getcwd() def initialize_contents(): contents=" ".join(['"localtmp/'+x+'"' for x in os.listdir('localtmp/')]) cmd_ef(PUT+" "+contents+" /") shutil.copytree('localtmp', 'localUPs') def clean_all(): if not clean_root_confirmed_by_user(): raise Exception("Tests need to be run with YES_I_KNOW_THIS_WILL_CLEAR_MY_MEGA_ACCOUNT=1") if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) #~ rm pipe > /dev/null 2>/dev/null || : cmd_ec(RM+' -rf "/*"') cmd_ec(RM+' -rf "*"') cmd_ec(RM+' -rf "//bin/*"') rmfolderifexisting("localUPs") rmfolderifexisting("localtmp") rmfileifexisting("megafind.txt") rmfileifexisting("localfind.txt") def clear_local_and_remote(): rmfolderifexisting("localUPs") cmd_ec(RM+' -rf "/*"') initialize_contents() def initialize(): if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_es(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) if len(os.listdir(".")): raise Exception("initialization folder not empty!") #~ cd $ABSPWD if cmd_es(FIND+" /") != b"/": raise Exception("REMOTE Not empty, please clear it before starting!") #initialize localtmp estructure: makedir("localtmp") touch("localtmp/file01.txt") out('file01contents', 'localtmp/file01nonempty.txt') #local empty folders structure for f in ['localtmp/le01/'+a for a in ['les01/less01']+ ['les02/less0'+z for z in ['1','2']] ]: makedir(f) #local filled folders structure for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: touch(f+"/commonfile.txt") #spaced structure for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: touch(f+"/common file.txt") # localtmp/ # ├── file01nonempty.txt # ├── file01.txt # ├── le01 # │   ├── les01 # │   │   └── less01 # │   └── les02 # │   ├── less01 # │   └── less02 # ├── lf01 # │   ├── lfs01 # │   │   └── lfss01 # │   │   └── commonfile.txt # │   └── lfs02 # │   ├── lfss01 # │   │   └── commonfile.txt # │   └── lfss02 # │   └── commonfile.txt # └── ls 01 # ├── ls s01 # │   └── ls ss01 # │   └── common file.txt # └── ls s02 # ├── ls ss01 # │   └── common file.txt # └── ls ss02 # └── common file.txt #initialize dynamic contents: clear_local_and_remote() class MEGAcmdFindTest(unittest.TestCase): @classmethod def setUpClass(cls): #INITIALIZATION clean_all() initialize() @classmethod def tearDownClass(cls): if not VERBOSE: clean_all() def setUp(self): print(f"\n=== Running test: {self._testMethodName} ===") def compare_find(self, what, localFindPrefix='localUPs'): if not isinstance(what, list): what = [what] megafind=b"" localfind="" for w in what: megafind+=cmd_ef(FIND+" "+w)+b"\n" localfind+=find(localFindPrefix+'/'+w,w)+"\n" megafind=sort(megafind).strip() localfind=sort(localfind).strip() #~ megafind=$FIND "$@" | sort > $ABSPWD/megafind.txt #~ (cd localUPs 2>/dev/null; find "$@" | sed "s#\./##g" | sort) > $ABSPWD/localfind.txt self.assertEqual(megafind, localfind) def test_empty_file(self): self.compare_find('file01.txt') def test_entire_empty_folders(self): self.compare_find('le01/les01/less01') def test_1_file_folder(self): self.compare_find('lf01/lfs01/lfss01') def test_entire_non_empty_folders_structure(self): self.compare_find('lf01') def test_multiple_names(self): self.compare_find(['lf01','le01/les01']) def test_current_wd(self): """.""" cmd_ef(CD+" le01") self.compare_find('.','localUPs/le01') cmd_ef(CD+" /") def test_current_wd_global(self): """. global""" self.compare_find('.') def test_spaced(self): megafind=sort(cmd_ef(FIND+" "+"ls\\ 01")) localfind=sort(find('localUPs/ls 01',"ls 01")) self.assertEqual(megafind,localfind) def test_multiple(self): """XX/..""" megafind=sort(cmd_ef(FIND+" "+"ls\\ 01/..")) localfind=sort(find('localUPs/',"/")) self.assertEqual(megafind,localfind) def test_multiple_2(self): cmd_ef(CD+' le01') megafind=sort(cmd_ef(FIND+" "+"..")) cmd_ef(CD+' /') localfind=sort(find('localUPs/',"/")) self.assertEqual(megafind,localfind) def test_complex(self): megafind=sort(cmd_ef(FIND+" "+"ls\\ 01/../le01/les01" +" " +"lf01/../ls\\ *01/ls\\ s02")) localfind=sort(find('localUPs/le01/les01',"/le01/les01")) localfind+="\n"+sort(find('localUPs/ls 01/ls s02',"/ls 01/ls s02")) self.assertEqual(megafind,localfind) def test_inside_folder(self): megafind=sort(cmd_ef(FIND+" "+"le01/")) localfind=sort(find('localUPs/le01',"le01")) self.assertEqual(megafind,localfind) def test_non_existent(self): file = 'file01.txt/non-existent' out, status, err = cmd_ec(f'{FIND} {file}') if not CMDSHELL: self.assertNotEqual(status, 0) self.assertIn(f'{file}: no such file or directory', err.decode().lower()) def test_root(self): self.compare_find('/') ###TODO: do stuff in shared folders... if __name__ == '__main__': if "OUT_DIR_JUNIT_XML" in os.environ: unittest.main(testRunner=xmlrunner.XMLTestRunner(output=os.environ["OUT_DIR_JUNIT_XML"]), failfast=False, buffer=False, catchbreak=False) else: unittest.main() MEGAcmd-2.5.2_Linux/tests/megacmd_find_test.sh000066400000000000000000000163301516543156300212420ustar00rootroot00000000000000#!/bin/bash GET=mega-get PUT=mega-put RM=mega-rm CD=mega-cd LCD=mega-lcd MKDIR=mega-mkdir EXPORT=mega-export FIND=mega-find if [ "x$VERBOSE" == "x" ]; then VERBOSE=0 fi if [ "x$MEGACMDSHELL" != "x" ]; then FIND="executeinMEGASHELL find" CMDSHELL=1 fi function executeinMEGASHELL() { command=$1 shift; echo $command "$@" > /tmp/shellin $MEGACMDSHELL < /tmp/shellin | sed "s#^.*\[K##g" | grep $MEGA_EMAIL -A 1000 | grep -v $MEGA_EMAIL } function clean_all() { if [[ $(mega-whoami) != *"$MEGA_EMAIL" ]]; then mega-logout || : mega-login $MEGA_EMAIL $MEGA_PWD || exit -1 fi rm pipe > /dev/null 2>/dev/null || : $RM -rf "*" > /dev/null $RM -rf "//bin/*" > /dev/null if [ -e localUPs ]; then rm -r localUPs; fi if [ -e localtmp ]; then rm -r localtmp; fi if [ -e megafind.txt ]; then rm megafind.txt; fi if [ -e localfind.txt ]; then rm localfind.txt; fi } function clear_local_and_remote() { rm -r localUPs/* 2>/dev/null $RM -rf "/*" 2>/dev/null || : initialize_contents } ABSPWD=`pwd` currentTest=1 function compare_and_clear() { if [ "$VERBOSE" == "1" ]; then echo "test $currentTest" fi $FIND | sort > megafind.txt (cd localUPs; find | sed "s#\./##g" | sort) > localfind.txt if diff --side-by-side megafind.txt localfind.txt 2>/dev/null >/dev/null; then if [ "$VERBOSE" == "1" ]; then echo "diff megafind vs localfind:" diff --side-by-side megafind.txt localfind.txt fi echo "test $currentTest succesful!" else echo "test $currentTest failed!" echo "diff megafind vs localfind:" diff --side-by-side megafind.txt localfind.txt cd $ABSPWD exit 1 fi clear_local_and_remote currentTest=$((currentTest+1)) $CD / } function check_failed_and_clear() { if [ "$?" != "0" ]; then echo "test $currentTest succesful!" else echo "test $currentTest failed!" cd $ABSPWD exit 1 fi clear_local_and_remote currentTest=$((currentTest+1)) $CD / } function initialize () { if [[ $(mega-whoami) != *"$MEGA_EMAIL" ]]; then mega-logout || : mega-login $MEGA_EMAIL $MEGA_PWD || exit -1 fi if [ "$(ls -A .)" ]; then echo "initialization folder not empty!" cd $ABSPWD exit 1 fi if [ $($FIND / | grep -v "^$" |wc -l) != 1 ]; then echo "REMOTE Not empty, please clear it before starting!" #~ $FIND / cd $ABSPWD exit 1 fi #initialize localtmp estructure: mkdir -p localtmp touch localtmp/file01.txt echo file01contents > localtmp/file01nonempty.txt #local empty folders structure mkdir -p localtmp/le01/{les01/less01,les02/less0{1,2}} #local filled folders structure mkdir -p localtmp/lf01/{lfs01/lfss01,lfs02/lfss0{1,2}} touch localtmp/lf01/{lfs01/lfss01,lfs02/lfss0{1,2}}/commonfile.txt #spaced structure mkdir -p localtmp/ls\ 01/{ls\ s01/ls\ ss01,ls\ s02/ls\ ss0{1,2}} touch localtmp/ls\ 01/{ls\ s01/ls\ ss01,ls\ s02/ls\ ss0{1,2}}/common\ file.txt # localtmp/ # ├── file01nonempty.txt # ├── file01.txt # ├── le01 # │   ├── les01 # │   │   └── less01 # │   └── les02 # │   ├── less01 # │   └── less02 # ├── lf01 # │   ├── lfs01 # │   │   └── lfss01 # │   │   └── commonfile.txt # │   └── lfs02 # │   ├── lfss01 # │   │   └── commonfile.txt # │   └── lfss02 # │   └── commonfile.txt # └── ls 01 # ├── ls s01 # │   └── ls ss01 # │   └── common file.txt # └── ls s02 # ├── ls ss01 # │   └── common file.txt # └── ls ss02 # └── common file.txt #initialize dynamic contents: clear_local_and_remote } function initialize_contents() { $PUT localtmp/* / mkdir -p localUPs cp -r localtmp/* localUPs/ } function compare_find(){ if [ "$VERBOSE" == "1" ]; then echo "test $currentTest" fi $FIND "$@" | sort > $ABSPWD/megafind.txt (cd localUPs 2>/dev/null; find "$@" | sed "s#\./##g" | sort) > $ABSPWD/localfind.txt if diff -B --side-by-side $ABSPWD/megafind.txt $ABSPWD/localfind.txt 2>/dev/null >/dev/null; then if [ "$VERBOSE" == "1" ]; then echo "diff megafind vs localfind:" diff -B --side-by-side $ABSPWD/megafind.txt $ABSPWD/localfind.txt fi echo "test $currentTest succesful!" else echo "test $currentTest failed!" echo "diff megafind vs localfind:" diff -B --side-by-side $ABSPWD/megafind.txt $ABSPWD/localfind.txt cd $ABSPWD exit 1 fi currentTest=$((currentTest+1)) } function find_remote(){ if [ "$VERBOSE" == "1" ]; then echo "test $currentTest" fi $FIND "$@" | sort > $ABSPWD/megafind.txt } function find_local(){ if [ "Darwin" == `uname` ]; then (cd localUPs 2>/dev/null; find "$@" | sed "s#\.///#/#g" | sed "s#\.//#/#g" | sort) > $ABSPWD/localfind.txt else (cd localUPs 2>/dev/null; find "$@" | sed "s#\./##g" | sort) > $ABSPWD/localfind.txt fi } function find_local_append(){ (cd localUPs 2>/dev/null; find "$@" | sed "s#\./##g" | sort) >> $ABSPWD/localfind.txt } function compare_remote_local(){ if diff -B --side-by-side $ABSPWD/megafind.txt $ABSPWD/localfind.txt 2>/dev/null >/dev/null; then if [ "$VERBOSE" == "1" ]; then echo "diff megafind vs localfind:" diff -B --side-by-side $ABSPWD/megafind.txt $ABSPWD/localfind.txt fi echo "test $currentTest succesful!" else echo "test $currentTest failed!" echo "diff megafind vs localfind:" diff -B --side-by-side $ABSPWD/megafind.txt $ABSPWD/localfind.txt cd $ABSPWD exit 1 fi currentTest=$((currentTest+1)) } if [ "$MEGA_EMAIL" == "" ] || [ "$MEGA_PWD" == "" ]; then echo "You must define variables MEGA_EMAIL MEGA_PWD. WARNING: Use an empty account for $MEGA_EMAIL" cd $ABSPWD exit 1 fi #INITIALIZATION clean_all initialize ABSMEGADLFOLDER=$PWD/megaDls #Test 01 #destiny empty file compare_find file01.txt #Test 02 #entire empty folders compare_find le01/les01/less01 #Test 03 #1 file folder compare_find lf01/lfs01/lfss01 #Test 04 #entire non empty folders structure compare_find lf01 #Test 05 #multiple compare_find lf01 le01/les01 #Test 06 #. $CD le01 pushd localUPs/le01 > /dev/null compare_find . $CD / popd > /dev/null #Test 07 #. global compare_find . #Test 08 # spaced find_remote "ls\ 01" find_local ls\ 01 compare_remote_local #Test 09 #XX/.. find_remote "ls\ 01/.." find_local .// compare_remote_local #Test 10 #.. $CD le01 find_remote .. $CD / find_local .// compare_remote_local #Test 11 #complex stuff #$RM -rf ls\ 01/../le01/les01 lf01/../ls*/ls\ s02 #This one fails since it is PCRE expresion TODO: if ever supported PCRE enabling/disabling, consider that find_remote "ls\ 01/../le01/les01" "lf01/../ls\ *01/ls\ s02" find_local .//le01/les01 find_local_append .//ls\ 01/ls\ s02 compare_remote_local #Test 12 #folder/ find_remote le01/ find_local le01 compare_remote_local if [ "x$CMDSHELL" != "x1" ]; then #TODO: currently there is no way to know last CMSHELL status code #Test 13 #file01.txt/non-existent $FIND file01.txt/non-existent >/dev/null 2>/dev/null if [ $? == 0 ]; then echo "test $currentTest failed!"; cd $ABSPWD; exit 1; else echo "test $currentTest succesful!"; fi fi currentTest=14 #Test 14 #/ find_remote / find_local .// compare_remote_local ###TODO: do stuff in shared folders... ######## # Clean all if [ "$VERBOSE" != "1" ]; then clean_all fi MEGAcmd-2.5.2_Linux/tests/megacmd_get_test.py000077500000000000000000000320311516543156300211160ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- #better run in an empty folder import os, shutil import unittest import xmlrunner from megacmd_tests_common import * def setUpModule(): global ABSPWD global ABSMEGADLFOLDER ABSPWD = os.getcwd() ABSMEGADLFOLDER=ABSPWD+'/megaDls' def clean_all(): if not clean_root_confirmed_by_user(): raise Exception("Tests need to be run with YES_I_KNOW_THIS_WILL_CLEAR_MY_MEGA_ACCOUNT=1") if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) cmd_ec(RM+' -rf "/*"') cmd_ec(RM+' -rf "*"') cmd_ec(RM+' -rf "//bin/*"') rmfolderifexisting("localUPs") rmfolderifexisting("localtmp") rmfolderifexisting("origin") rmfolderifexisting("megaDls") rmfolderifexisting("localDls") rmfileifexisting("megafind.txt") rmfileifexisting("localfind.txt") def clear_dls(): rmcontentsifexisting("megaDls") rmcontentsifexisting("localDls") def safe_export(path): command = EXPORT + ' ' + path stdout, _, err = cmd_esc(command + ' -f -a') # Run export without the `-a` option (also need to remove `-f` or it'll fail) # Output is slightly different in this case: # * Link is surrounded by parenthesis, so we need to remove the trailing ')' # * If path is a folder it'll also return the list of nodes inside, so we # need to keep only the first line # Note: We can't rely on the exit code, since we can't get it reliably from shell commands if b'already exported' in err: stdout = cmd_ef(command).split(b'\n')[0].strip(b')') if b'AuthKey=' in stdout: # In this case the authkey is the last word, # so the link is second from the right return stdout.split(b' ')[-2] else: return stdout.split(b' ')[-1] else: return stdout.split(b' ')[-1] def initialize_contents(): global URIFOREIGNEXPORTEDFOLDER global URIFOREIGNEXPORTEDFILE global URIEXPORTEDFOLDER global URIEXPORTEDFILE if cmd_es(WHOAMI) != osvar("MEGA_EMAIL_AUX"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL_AUX")+" "+osvar("MEGA_PWD_AUX")) if len(os.listdir(".")): raise Exception("initialization folder not empty!") #initialize localtmp estructure: makedir('foreign') for f in ['cloud0'+a for a in ['1','2']] + \ ['bin0'+a for a in ['1','2']] + \ ['cloud0'+a+'/c0'+b+'s0'+c for a in ['1','2'] for b in ['1','2'] for c in ['1','2']] + \ ['foreign'] + \ ['foreign/sub0'+a for a in ['1','2']] + \ ['bin0'+a+'/c0'+b+'s0'+c for a in ['1','2'] for b in ['1','2'] for c in ['1','2']]: makedir(f) out(f,f+'/fileat'+f.split('/')[-1]+'.txt') cmd_ef(PUT+' foreign /') cmd_ef(SHARE+' foreign -a --with='+osvar("MEGA_EMAIL")) URIFOREIGNEXPORTEDFOLDER=safe_export('foreign/sub01').decode() URIFOREIGNEXPORTEDFILE=safe_export('foreign/sub02/fileatsub02.txt').decode() print(f'URIFOREIGNEXPORTEDFOLDER={URIFOREIGNEXPORTEDFOLDER}') print(f'URIFOREIGNEXPORTEDFILE={URIFOREIGNEXPORTEDFILE}') cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) cmd_ec(IPC+" -a "+osvar("MEGA_EMAIL_AUX")) cmd_ef(PUT+' foreign /') #~ mega-put cloud0* / cmd_ef(PUT+" cloud01 cloud02 /") #~ mega-put bin0* //bin cmd_ef(PUT+" bin01 bin02 //bin") URIEXPORTEDFOLDER=safe_export('cloud01/c01s01').decode() URIEXPORTEDFILE=safe_export('cloud02/fileatcloud02.txt').decode() print(f'URIEXPORTEDFOLDER={URIEXPORTEDFOLDER}') print(f'URIEXPORTEDFILE={URIEXPORTEDFILE}') class MEGAcmdGetTest(unittest.TestCase): @classmethod def setUpClass(cls): global URIEXPORTEDFOLDER global URIEXPORTEDFILE clean_all() makedir('origin') os.chdir('origin') initialize_contents() os.chdir(ABSPWD) makedir('megaDls') makedir('localDls') URIEXPORTEDFOLDER=safe_export('cloud01/c01s01').decode() URIEXPORTEDFILE=safe_export('cloud02/fileatcloud02.txt').decode() clear_dls() @classmethod def tearDownClass(cls): clean_all() def setUp(self): print(f"\n=== Running test: {self._testMethodName} ===") def tearDown(self): clear_dls() cmd_ef(CD+" /") def check_failed(self, o, status): self.assertNotEqual(status, 0, o) def compare(self): megaDls=sort(find('megaDls')) localDls=sort(find('localDls')) self.assertEqual(megaDls, localDls) print(f"megaDls: {megaDls}, localDls: {localDls}") def test_01(self): cmd_ef(GET+' /cloud01/fileatcloud01.txt '+ABSMEGADLFOLDER+'/') shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/') self.compare() def test_02(self): cmd_ef(GET+' //bin/bin01/fileatbin01.txt '+ABSMEGADLFOLDER) shutil.copy2('origin/bin01/fileatbin01.txt','localDls/') self.compare() def test_03(self): #Test 03 cmd_ef(GET+' //bin/bin01/fileatbin01.txt '+ABSMEGADLFOLDER+'/') shutil.copy2('origin/bin01/fileatbin01.txt','localDls/') self.compare() def test_04(self): cmd_ef(GET+' '+osvar('MEGA_EMAIL_AUX')+':foreign/fileatforeign.txt '+ABSMEGADLFOLDER+'/') shutil.copy2('origin/foreign/fileatforeign.txt','localDls/') self.compare() def test_05(self): cmd_ef(GET+' '+osvar('MEGA_EMAIL_AUX')+':foreign/fileatforeign.txt '+ABSMEGADLFOLDER+'/') shutil.copy2('origin/foreign/fileatforeign.txt','localDls/') self.compare() def test_06(self): cmd_ef(CD+' cloud01') cmd_ef(GET+' "*.txt" '+ABSMEGADLFOLDER+'') copybyfilepattern('origin/cloud01/','*.txt','localDls/') self.compare() def test_07(self): cmd_ef(CD+' //bin/bin01') cmd_ef(GET+' "*.txt" '+ABSMEGADLFOLDER+'') copybyfilepattern('origin/bin01/','*.txt','localDls/') self.compare() def test_08(self): cmd_ef(CD+' '+osvar('MEGA_EMAIL_AUX')+':foreign') cmd_ef(GET+' "*.txt" '+ABSMEGADLFOLDER+'') copybyfilepattern('origin/foreign/','*.txt','localDls/') self.compare() def test_09(self): cmd_ef(GET+' cloud01/c01s01 '+ABSMEGADLFOLDER+'') copyfolder('origin/cloud01/c01s01','localDls/') self.compare() def test_10(self): cmd_ef(GET+' cloud01/c01s01 '+ABSMEGADLFOLDER+'/') copyfolder('origin/cloud01/c01s01','localDls/') self.compare() def test_11(self): cmd_ef(GET+' cloud01/c01s01 '+ABSMEGADLFOLDER+' -m') shutil.copytree('origin/cloud01/c01s01/', 'localDls/', dirs_exist_ok=True) self.compare() def test_12(self): cmd_ef(GET+' cloud01/c01s01 '+ABSMEGADLFOLDER+'/ -m') shutil.copytree('origin/cloud01/c01s01/', 'localDls/', dirs_exist_ok=True) self.compare() def test_13(self): #Test 13 cmd_ef(GET+' "'+URIEXPORTEDFOLDER+'" '+ABSMEGADLFOLDER+'') copyfolder('origin/cloud01/c01s01','localDls/') self.compare() def test_14(self): cmd_ef(GET+' "'+URIEXPORTEDFILE+'" '+ABSMEGADLFOLDER+'') shutil.copy2('origin/cloud02/fileatcloud02.txt','localDls/') self.compare() def test_15(self): cmd_ef(GET+' "'+URIEXPORTEDFOLDER+'" '+ABSMEGADLFOLDER+' -m') shutil.copytree('origin/cloud01/c01s01/', 'localDls/', dirs_exist_ok=True) self.compare() def test_16(self): cmd_ef(CD+' /cloud01/c01s01') cmd_ef(GET+' . '+ABSMEGADLFOLDER+'') copyfolder('origin/cloud01/c01s01','localDls/') self.compare() def test_17(self): cmd_ef(CD+' /cloud01/c01s01') cmd_ef(GET+' . '+ABSMEGADLFOLDER+' -m') shutil.copytree('origin/cloud01/c01s01/', 'localDls/', dirs_exist_ok=True) self.compare() def test_18(self): cmd_ef(CD+' /cloud01/c01s01') cmd_ef(GET+' ./ '+ABSMEGADLFOLDER+'') copyfolder('origin/cloud01/c01s01','localDls/') self.compare() def test_19(self): cmd_ef(CD+' /cloud01/c01s01') cmd_ef(GET+' ./ '+ABSMEGADLFOLDER+' -m') shutil.copytree('origin/cloud01/c01s01/', 'localDls/', dirs_exist_ok=True) self.compare() def test_20(self): cmd_ef(CD+' /cloud01/c01s01') cmd_ef(GET+' .. '+ABSMEGADLFOLDER+' -m') shutil.copytree('origin/cloud01/', 'localDls/', dirs_exist_ok=True) self.compare() def test_21(self): cmd_ef(CD+' /cloud01/c01s01') cmd_ef(GET+' ../ '+ABSMEGADLFOLDER+'') copyfolder('origin/cloud01','localDls/') self.compare() def test_22(self): out("existing",ABSMEGADLFOLDER+'/existing') cmd_ef(GET+' /cloud01/fileatcloud01.txt '+ABSMEGADLFOLDER+'/existing') shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/existing (1)') out("existing",'localDls/existing') self.compare() def test_23(self): out("existing",'megaDls/existing') cmd_ef(GET+' /cloud01/fileatcloud01.txt megaDls/existing') shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/existing (1)') out("existing",'localDls/existing') self.compare() def test_24(self): cmd_ef(GET+' cloud01/c01s01 megaDls') copyfolder('origin/cloud01/c01s01','localDls/') self.compare() def test_25(self): cmd_ef(GET+' cloud01/fileatcloud01.txt megaDls') shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/') self.compare() def test_26(self): o, status, e = cmd_ec(f'{GET} cloud01/fileatcloud01.txt /no/where') if not CMDSHELL: self.check_failed(o, status) self.assertIn('is not a valid download folder', e.decode().lower()) def test_27(self): o, status, e = cmd_ec(f'{GET} /cloud01/cloud01/fileatcloud01.txt /no/where') if not CMDSHELL: self.check_failed(o, status) self.assertIn('is not a valid download folder', e.decode().lower()) def test_28(self): cmd_ef(GET+' /cloud01/fileatcloud01.txt '+ABSMEGADLFOLDER+'/newfile') shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/newfile') self.compare() def test_29(self): os.chdir(ABSMEGADLFOLDER) cmd_ef(GET+' /cloud01/fileatcloud01.txt .') os.chdir(ABSPWD) shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/') self.compare() def test_30(self): os.chdir(ABSMEGADLFOLDER) cmd_ef(GET+' /cloud01/fileatcloud01.txt ./') os.chdir(ABSPWD) shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/') self.compare() def test_31(self): makedir(ABSMEGADLFOLDER+'/newfol') os.chdir(ABSMEGADLFOLDER+'/newfol') cmd_ef(GET+' /cloud01/fileatcloud01.txt ..') os.chdir(ABSPWD) makedir('localDls/newfol') shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/') self.compare() def test_32(self): makedir(ABSMEGADLFOLDER+'/newfol') os.chdir(ABSMEGADLFOLDER+'/newfol') cmd_ef(GET+' /cloud01/fileatcloud01.txt ../') os.chdir(ABSPWD) makedir('localDls/newfol') shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/') self.compare() def test_33(self): o, status, e = cmd_ec(f'{GET} path/to/nowhere {ABSMEGADLFOLDER}') if not CMDSHELL: self.check_failed(o, status) self.assertIn("couldn't find file", e.decode().lower()) def test_34(self): o, status, e = cmd_ec(f'{GET} /path/to/nowhere {ABSMEGADLFOLDER}') if not CMDSHELL: self.check_failed(o, status) self.assertIn("couldn't find file", e.decode().lower()) def test_35(self): os.chdir(ABSMEGADLFOLDER) cmd_ef(GET+' /cloud01/fileatcloud01.txt') os.chdir(ABSPWD) shutil.copy2('origin/cloud01/fileatcloud01.txt','localDls/') self.compare() def test_36_import_folder(self): cmd_ex(RM+' -rf /imported') cmd_ef(MKDIR+' -p /imported') cmd_ef(IMPORT+' '+URIFOREIGNEXPORTEDFOLDER+' /imported') cmd_ef(GET+' /imported/* '+ABSMEGADLFOLDER+'') copyfolder('origin/foreign/sub01','localDls/') self.compare() def test_37_import_file(self): cmd_ex(RM+' -rf /imported') cmd_ef(MKDIR+' -p /imported') cmd_ef(IMPORT+' '+URIFOREIGNEXPORTEDFILE+' /imported') cmd_ef(GET+' /imported/fileatsub02.txt '+ABSMEGADLFOLDER+'') shutil.copy2('origin/foreign/sub02/fileatsub02.txt','localDls/') self.compare() def test_38_download_file_from_inshare(self): """get from //from/XXX""" cmd_ef(GET+' //from/'+osvar('MEGA_EMAIL_AUX')+':foreign/sub02/fileatsub02.txt '+ABSMEGADLFOLDER+'') shutil.copy2('origin/foreign/sub02/fileatsub02.txt','localDls/') self.compare() if __name__ == '__main__': if "OUT_DIR_JUNIT_XML" in os.environ: unittest.main(testRunner=xmlrunner.XMLTestRunner(output=os.environ["OUT_DIR_JUNIT_XML"]), failfast=False, buffer=False, catchbreak=False) else: unittest.main() MEGAcmd-2.5.2_Linux/tests/megacmd_get_test.sh000066400000000000000000000202341516543156300210770ustar00rootroot00000000000000#!/bin/bash #better run in an empty folder GET=mega-get RM=mega-rm CD=mega-cd LCD=mega-lcd EXPORT=mega-export MKDIR=mega-mkdir IMPORT=mega-import ABSPWD=`pwd` if [ "x$VERBOSE" == "x" ]; then VERBOSE=0 fi if [ "x$MEGACMDSHELL" != "x" ]; then GET="executeinMEGASHELL get" CMDSHELL=1 fi function executeinMEGASHELL() { command=$1 shift; echo lcd "$PWD" > /tmp/shellin echo $command "$@" >> /tmp/shellin #~ echo $command "$@" > /tmp/shellin $MEGACMDSHELL < /tmp/shellin | sed "s#^.*\[K##g" | grep $MEGA_EMAIL -A 1000 | grep -v $MEGA_EMAIL } function clean_all() { if [[ $(mega-whoami) != *"$MEGA_EMAIL" ]]; then mega-logout || : mega-login $MEGA_EMAIL $MEGA_PWD || exit -1 fi $RM -rf "*" > /dev/null $RM -rf "//bin/*" > /dev/null if [ -e origin ]; then rm -r origin; fi if [ -e megaDls ]; then rm -r megaDls; fi if [ -e localDls ]; then rm -r localDls; fi } function clear_dls() { rm -r megaDls/* 2>/dev/null rm -r localDls/* 2>/dev/null } currentTest=1 function compare_and_clear() { if [ "$VERBOSE" == "1" ]; then echo "test $currentTest" echo "megaDls:" find megaDls echo echo "localDls:" find localDls echo fi if diff megaDls localDls 2>/dev/null >/dev/null; then echo "test $currentTest succesful!" else echo "test $currentTest failed!" cd $ABSPWD exit 1 fi clear_dls currentTest=$((currentTest+1)) $CD / } function check_failed_and_clear() { if [ "$?" != "0" ]; then echo "test $currentTest succesful!" else echo "test $currentTest failed!" cd $ABSPWD exit 1 fi clear_dls currentTest=$((currentTest+1)) $CD / } function initialize_contents() { if [[ $(mega-whoami) != *"$MEGA_EMAIL_AUX" ]]; then mega-logout || : mega-login $MEGA_EMAIL_AUX $MEGA_PWD_AUX || exit -1 fi if [ "$(ls -A .)" ]; then echo "initialization folder not empty!" cd $ABSPWD exit 1 fi mkdir -p cloud0{1,2}/c0{1,2}s0{1,2} mkdir -p foreign/sub0{1,2} mkdir -p bin0{1,2}/c0{1,2}s0{1,2} for i in `find *`; do echo $i > $i/fileat`basename $i`.txt; done mega-put foreign / mega-share foreign -a --with=$MEGA_EMAIL URIFOREIGNEXPORTEDFOLDER=`$EXPORT foreign/sub01 -a | awk '{print $NF}'` URIFOREIGNEXPORTEDFILE=`$EXPORT foreign/sub02/fileatsub02.txt -a | awk '{print $NF}'` mega-logout mega-login $MEGA_EMAIL $MEGA_PWD mega-ipc -a $MEGA_EMAIL_AUX >/dev/null mega-put cloud0* / mega-put bin0* //bin URIEXPORTEDFOLDER=`$EXPORT cloud01/c01s01 -a | awk '{print $NF}'` URIEXPORTEDFILE=`$EXPORT cloud02/fileatcloud02.txt -a | awk '{print $NF}'` } if [ "$MEGA_EMAIL" == "" ] || [ "$MEGA_PWD" == "" ] || [ "$MEGA_EMAIL_AUX" == "" ] || [ "$MEGA_PWD_AUX" == "" ]; then echo "You must define variables MEGA_EMAIL MEGA_PWD MEGA_EMAIL_AUX MEGA_PWD_AUX. WARNING: Use an empty account for $MEGA_EMAIL" cd $ABSPWD exit 1 fi #INITIALIZATION clean_all mkdir origin pushd origin > /dev/null initialize_contents popd > /dev/null mkdir -p megaDls mkdir -p localDls ABSMEGADLFOLDER=$PWD/megaDls URIEXPORTEDFOLDER=`mega-export cloud01/c01s01 -a | awk '{print $NF}'` URIEXPORTEDFILE=`mega-export cloud02/fileatcloud02.txt -a | awk '{print $NF}'` clear_dls #Test 01 $GET /cloud01/fileatcloud01.txt $ABSMEGADLFOLDER/ cp origin/cloud01/fileatcloud01.txt localDls/ compare_and_clear #Test 02 $GET //bin/bin01/fileatbin01.txt $ABSMEGADLFOLDER cp origin/bin01/fileatbin01.txt localDls/ compare_and_clear #Test 03 $GET //bin/bin01/fileatbin01.txt $ABSMEGADLFOLDER/ cp origin/bin01/fileatbin01.txt localDls/ compare_and_clear #Test 04 $GET $MEGA_EMAIL_AUX:foreign/fileatforeign.txt $ABSMEGADLFOLDER/ cp origin/foreign/fileatforeign.txt localDls/ compare_and_clear #Test 05 $GET $MEGA_EMAIL_AUX:foreign/fileatforeign.txt $ABSMEGADLFOLDER/ cp origin/foreign/fileatforeign.txt localDls/ compare_and_clear #Test 06 $CD cloud01 $GET "*.txt" $ABSMEGADLFOLDER cp origin/cloud01/*.txt localDls/ compare_and_clear #Test 07 $CD //bin/bin01 $GET "*.txt" $ABSMEGADLFOLDER cp origin/bin01/*.txt localDls/ compare_and_clear #Test 08 $CD $MEGA_EMAIL_AUX:foreign $GET "*.txt" $ABSMEGADLFOLDER cp origin/foreign/*.txt localDls/ compare_and_clear #Test 09 $GET cloud01/c01s01 $ABSMEGADLFOLDER cp -r origin/cloud01/c01s01 localDls/ compare_and_clear #Test 10 $GET cloud01/c01s01 $ABSMEGADLFOLDER/ cp -r origin/cloud01/c01s01 localDls/ compare_and_clear #Test 11 $GET cloud01/c01s01 $ABSMEGADLFOLDER -m rsync -r origin/cloud01/c01s01/ localDls/ compare_and_clear #Test 12 $GET cloud01/c01s01 $ABSMEGADLFOLDER/ -m rsync -r origin/cloud01/c01s01/ localDls/ compare_and_clear #Test 13 $GET "$URIEXPORTEDFOLDER" $ABSMEGADLFOLDER cp -r origin/cloud01/c01s01 localDls/ compare_and_clear #Test 14 $GET "$URIEXPORTEDFILE" $ABSMEGADLFOLDER cp origin/cloud02/fileatcloud02.txt localDls/ compare_and_clear #Test 15 $GET "$URIEXPORTEDFOLDER" $ABSMEGADLFOLDER -m rsync -r origin/cloud01/c01s01/ localDls/ compare_and_clear #Test 16 $CD /cloud01/c01s01 $GET . $ABSMEGADLFOLDER cp -r origin/cloud01/c01s01 localDls/ compare_and_clear #Test 17 $CD /cloud01/c01s01 $GET . $ABSMEGADLFOLDER -m rsync -r origin/cloud01/c01s01/ localDls/ compare_and_clear #Test 18 $CD /cloud01/c01s01 $GET ./ $ABSMEGADLFOLDER cp -r origin/cloud01/c01s01 localDls/ compare_and_clear #Test 19 $CD /cloud01/c01s01 $GET ./ $ABSMEGADLFOLDER -m rsync -r origin/cloud01/c01s01/ localDls/ compare_and_clear #Test 20 $CD /cloud01/c01s01 $GET .. $ABSMEGADLFOLDER -m rsync -r origin/cloud01/ localDls/ compare_and_clear #Test 21 $CD /cloud01/c01s01 $GET ../ $ABSMEGADLFOLDER cp -r origin/cloud01 localDls/ compare_and_clear #Test 22 echo "existing" > $ABSMEGADLFOLDER/existing $GET /cloud01/fileatcloud01.txt $ABSMEGADLFOLDER/existing cp origin/cloud01/fileatcloud01.txt "localDls/existing (1)" echo "existing" > localDls/existing compare_and_clear #Test 23 echo "existing" > megaDls/existing $GET /cloud01/fileatcloud01.txt megaDls/existing cp origin/cloud01/fileatcloud01.txt "localDls/existing (1)" echo "existing" > localDls/existing compare_and_clear #Test 24 $GET cloud01/c01s01 megaDls cp -r origin/cloud01/c01s01 localDls/ compare_and_clear #Test 25 $GET cloud01/fileatcloud01.txt megaDls cp -r origin/cloud01/fileatcloud01.txt localDls/ compare_and_clear if [ "x$CMDSHELL" != "x1" ]; then #TODO: currently there is no way to know last CMSHELL status code #Test 26 $GET cloud01/fileatcloud01.txt /no/where > /dev/null check_failed_and_clear #Test 27 $GET /cloud01/cloud01/fileatcloud01.txt /no/where > /dev/null check_failed_and_clear fi currentTest=28 #Test 28 $GET /cloud01/fileatcloud01.txt $ABSMEGADLFOLDER/newfile cp origin/cloud01/fileatcloud01.txt localDls/newfile compare_and_clear #Test 29 pushd $ABSMEGADLFOLDER > /dev/null $GET /cloud01/fileatcloud01.txt . popd > /dev/null cp origin/cloud01/fileatcloud01.txt localDls/ compare_and_clear #Test 30 pushd $ABSMEGADLFOLDER > /dev/null $GET /cloud01/fileatcloud01.txt ./ popd > /dev/null cp origin/cloud01/fileatcloud01.txt localDls/ compare_and_clear #Test 31 mkdir $ABSMEGADLFOLDER/newfol pushd $ABSMEGADLFOLDER/newfol > /dev/null $GET /cloud01/fileatcloud01.txt .. popd > /dev/null mkdir localDls/newfol cp origin/cloud01/fileatcloud01.txt localDls/ compare_and_clear #Test 32 mkdir $ABSMEGADLFOLDER/newfol pushd $ABSMEGADLFOLDER/newfol > /dev/null $GET /cloud01/fileatcloud01.txt ../ popd > /dev/null mkdir localDls/newfol cp origin/cloud01/fileatcloud01.txt localDls/ compare_and_clear if [ "x$CMDSHELL" != "x1" ]; then #TODO: currently there is no way to know last CMSHELL status code #Test 33 $GET path/to/nowhere $ABSMEGADLFOLDER > /dev/null check_failed_and_clear #Test 34 $GET /path/to/nowhere $ABSMEGADLFOLDER > /dev/null check_failed_and_clear fi currentTest=35 #Test 35 pushd $ABSMEGADLFOLDER > /dev/null $GET /cloud01/fileatcloud01.txt popd > /dev/null cp origin/cloud01/fileatcloud01.txt localDls/ compare_and_clear currentTest=36 #Test 36 # imported stuff (to test import folder) $RM -rf /imported 2>&1 >/dev/null || : $MKDIR -p /imported $IMPORT $URIFOREIGNEXPORTEDFOLDER /imported > /dev/null $GET /imported/* $ABSMEGADLFOLDER cp -r origin/foreign/sub01 localDls/ compare_and_clear #Test 37 # imported stuff (to test import file) $RM -rf /imported 2>&1 >/dev/null || : $MKDIR -p /imported $IMPORT $URIFOREIGNEXPORTEDFILE /imported/ > /dev/null $GET /imported/fileatsub02.txt $ABSMEGADLFOLDER cp origin/foreign/sub02/fileatsub02.txt localDls/ compare_and_clear # Clean all clean_all MEGAcmd-2.5.2_Linux/tests/megacmd_misc_test.py000077500000000000000000000401461516543156300213000ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys, os, shutil, filecmp import unittest import xmlrunner from megacmd_tests_common import * def setUpModule(): global ABSPWD global ABSMEGADLFOLDER ABSPWD = os.getcwd() ABSMEGADLFOLDER=ABSPWD+'/megaDls' def initialize_contents(): cmd_ec(INVITE+" "+osvar("MEGA_EMAIL_AUX")) cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL_AUX")+" "+osvar("MEGA_PWD_AUX")) cmd_ec(IPC+" -a "+osvar("MEGA_EMAIL")) cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) contents=" ".join(['"localtmp/'+x+'"' for x in os.listdir('localtmp/')]) cmd_ef(PUT+" "+contents+" /") shutil.copytree('localtmp', 'localUPs') def clean_all(): if not clean_root_confirmed_by_user(): raise Exception("Tests need to be run with YES_I_KNOW_THIS_WILL_CLEAR_MY_MEGA_ACCOUNT=1") if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) #~ rm pipe > /dev/null 2>/dev/null || : cmd_ec(RM+' -rf "/*"') cmd_ec(RM+' -rf "*"') cmd_ec(RM+' -rf "//bin/*"') rmfolderifexisting("localUPs") rmfolderifexisting("localtmp") rmfileifexisting("megafind.txt") rmfileifexisting("localfind.txt") rmfileifexisting("thumbnail.jpg") def clear_local_and_remote(): rmfolderifexisting("localUPs") cmd_ec(RM+' -rf "/*"') initialize_contents() opts='";X()[]{}<>|`\'' if os.name == 'nt': opts=";()[]{}`'" def initialize(): if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_es(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) if len(os.listdir(".")) and ( len(os.listdir(".")) != 1 and os.listdir(".")[0] != 'images'): print("initialization folder not empty!", "\n",os.listdir("."), file=sys.stderr) #~ cd $ABSPWD exit(1) if cmd_es(FIND+" /") != b"/": print("REMOTE Not empty, please clear it before starting!", file=sys.stderr) #~ cd $ABSPWD exit(1) #initialize localtmp estructure: makedir("localtmp") touch("localtmp/file01.txt") out('file01contents', 'localtmp/file01nonempty.txt') #local empty folders structure for f in ['localtmp/le01/'+a for a in ['les01/less01']+ ['les02/less0'+z for z in ['1','2']] ]: makedir(f) #local filled folders structure for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: touch(f+"/commonfile.txt") #spaced structure for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: touch(f+"/common file.txt") #weird chars makedir("localtmp/odd") for f in ['localtmp/odd/'+a for a in ['file'+z for z in opts+"X"]]: touch(f+'01.txt') #~ localtmp/ #~ ├── file01nonempty.txt #~ ├── file01.txt #~ ├── le01 #~ │   ├── les01 #~ │   │   └── less01 #~ │   └── les02 #~ │   ├── less01 #~ │   └── less02 #~ ├── lf01 #~ │   ├── lfs01 #~ │   │   └── lfss01 #~ │   │   └── commonfile.txt #~ │   └── lfs02 #~ │   ├── lfss01 #~ │   │   └── commonfile.txt #~ │   └── lfss02 #~ │   └── commonfile.txt #~ ├── ls 01 #~ │   ├── ls s01 #~ │   │   └── ls ss01 #~ │   │   └── common file.txt #~ │   └── ls s02 #~ │   ├── ls ss01 #~ │   │   └── common file.txt #~ │   └── ls ss02 #~ │   └── common file.txt #~ └── odd #~ ├── file;.txt #~ ├── .... #initialize dynamic contents: clear_local_and_remote() if VERBOSE: print("STARTING...") class MEGAcmdMiscTest(unittest.TestCase): @classmethod def setUpClass(cls): cls.bar = "" if not CMDSHELL: cls.bar="\\" if os.name == 'nt': cls.bar="" cls.imagesUrl = os.environ.get('MEGACMD_TESTS_IMAGES_URL', "https://mega.nz/folder/bxomFKwL#3V1dUJFzL98t1GqXX29IXg") cls.pdfsURL = os.environ.get('MEGACMD_TESTS_PDFS_URL', "https://mega.nz/folder/D0w0nYiY#egvjqP5R-anbBdsJg8QRVg") clean_all() initialize() @classmethod def tearDownClass(cls): if not VERBOSE: clean_all() def setUp(self): print(f"\n=== Running test: {self._testMethodName} ===") def compare_remote_local(self, megafind, localfind): self.assertEqual(megafind, localfind) print(f"megafind: {megafind}, localfind: {localfind}") def compare_find(self, what, localFindPrefix='localUPs'): if not isinstance(what, list): what = [what] megafind=b"" localfind="" for w in what: megafind+=cmd_ef(FIND+" "+w)+b"\n" localfind+=find(localFindPrefix+'/'+w,w)+"\n" megafind=sort(megafind).strip() localfind=sort(localfind).strip() #~ megafind=$FIND "$@" | sort > $ABSPWD/megafind.txt #~ (cd localUPs 2>/dev/null; find "$@" | sed "s#\./##g" | sort) > $ABSPWD/localfind.txt self.assertEqual(megafind, localfind) print(f"megafind: {megafind}, localfind: {localfind}") def check_failed_and_clear(self, o,status): self.addCleanup(lambda : cmd_ef(CD+" /")) self.assertNotEqual(status, 0, o) def test_01_special_characters(self): for c in opts: with self.subTest(c=c): megafind=sort(cmd_ef(FIND+" "+'odd/file'+self.bar+c+'01.txt')) self.compare_remote_local(megafind,'odd/file'+c+'01.txt') @unittest.skipIf(os.name == "nt", "only for non NT environments") def test_02_unix_special_characters(self): def cleanup(): #revert original situation cmd_ef(MV+" "+'odd/file\\\\01.txt odd/fileX01.txt') shutil.move('localUPs/odd/file\\01.txt', 'localUPs/odd/fileX01.txt') #Test 15 # very special \ character c='\\' cmd_ef(MV+" "+'odd/fileX01.txt odd/file'+self.bar+'\\01.txt') #upload of file containing "\\" fails (SDK issue) shutil.move('localUPs/odd/fileX01.txt', 'localUPs/odd/file\\01.txt') megafind=sort(cmd_ef(FIND+" "+'odd/file'+self.bar+c+'01.txt')) self.addCleanup(cleanup) self.compare_remote_local(megafind,'odd/file'+c+'01.txt') def test_03_move_and_rename(self): def cleanup(): #revert original situation cmd_ef(MV+' /le01/moved.txt'+" file01nonempty.txt ") shutil.move("localUPs/le01/moved.txt", "localUPs/file01nonempty.txt") #Test 16 #move & rename cmd_ef(MV+" file01nonempty.txt "+'/le01/moved.txt') shutil.move("localUPs/file01nonempty.txt", "localUPs/le01/moved.txt") self.addCleanup(cleanup) self.compare_find('/') def test_04_new_empty_file(self): #Test 17 touch("localUPs/newemptyfile.txt") cmd_ef(PUT+" "+"localUPs/newemptyfile.txt"+" "+"/") #shutil.copy2('auxx/01/s01/another.txt','localUPs/01/s01') self.compare_find('/') @unittest.skipIf(os.name == "nt", "only for non NT environments") def test_05_unicode(self): for fname in UNICODE_NAME_LIST: touch("localUPs/"+fname) cmd_ef(PUT+" "+"localUPs/"+fname+" "+"/") self.compare_find('/') def test_06_copy_and_rename_2(self): #Test 19 #copy & rename cmd_ef(CP+" file01nonempty.txt "+'/le01/copied') copybyfilepattern("localUPs/","file01nonempty.txt", "localUPs/le01/copied") self.compare_find('/') def test_07_multicopy(self): #Test 20 #multicopy cmd_ef(CP+" *.txt "+'/le01') copybyfilepattern("localUPs/","*.txt", "localUPs/le01/") self.compare_find('/') def test_08_multicopy_with_trailing_slash(self): #Test 21 #multicopy with trailing / cmd_ef(CP+" *.txt "+'/le01/les01/') copybyfilepattern("localUPs/","*.txt", "localUPs/le01/les01/") self.compare_find('/') # ~ #Test 22 #multisend # ~ cmd_ef(CP+" *.txt "+MEGA_EMAIL_AUX+':') # ~ print "test "+str(currentTest)+" succesful!" # ~ currentTest+=1 def test_09_copy_folder(self): #Test 23 #copy folder cmd_ef(CP+" le01 "+'lf01') copyfolder("localUPs/le01", "localUPs/lf01/") self.compare_find('/') def test_10_send_to_non_contact(self): o, status, e = cmd_ec(f'{CP} *.txt badContact{MEGA_EMAIL_AUX}:') if not CMDSHELL: self.check_failed_and_clear(o, status) self.assertIn('failed to send file to user: not found', e.decode().lower()) def test_11_multicopy_into_file(self): bad_folder = '/le01/file01nonempty.txt' o, status, e = cmd_ec(f'{CP} *.txt {bad_folder}') if not CMDSHELL: self.check_failed_and_clear(o, status) self.assertIn(f'{bad_folder} must be a valid folder', e.decode().lower()) def test_12_copy_into_existing_file(self): #Test 25 #copy into existing file cmd_ef(CP+" -vvv file01nonempty.txt "+'copied2') cmd_ef(CP+" -vvv file01nonempty.txt "+'copied2') copybyfilepattern("localUPs/","file01nonempty.txt", "localUPs/copied2") self.compare_find('/') def test_13_move_into_non_existent_file(self): #Test 26 #move into non existing file cmd_ef(CP+" -vvv file01nonempty.txt "+'copied3') cmd_ef(MV+" -vvv copied3 "+'moved3') copybyfilepattern("localUPs/","file01nonempty.txt", "localUPs/moved3") self.compare_find('/') def test_14_move_into_existing_different_file(self): #Test 28 #move into existing (different) file cmd_ef(CP+" -vvv file01nonempty.txt "+'copied4') cmd_ef(CP+" -vvv file01.txt "+'moved4') cmd_ef(MV+" -vvv copied4 "+'moved4') copybyfilepattern("localUPs/","file01nonempty.txt", "localUPs/moved4") self.compare_find('/') def test_15_move_into_existing_equal_file(self): #Test 29 #move into existing equal file cmd_ef(CP+" -vvv file01nonempty.txt "+'copied5') cmd_ef(CP+" -vvv copied5 "+'moved5') cmd_ef(MV+" -vvv copied5 "+'moved5') copybyfilepattern("localUPs/","file01nonempty.txt", "localUPs/moved5") self.compare_find('/') def test_16_move_into_other_path(self): #Test 30 #move into other path cmd_ef(CP+" -vvv file01nonempty.txt "+'copied6') cmd_ef(MV+" -vvv copied6 "+'/le01/moved6') copybyfilepattern("localUPs/","file01nonempty.txt", "localUPs/le01/moved6") self.compare_find('/') def test_17_move_existing_other_path_different_file(self): #Test 31 #move existing other path (different file) cmd_ef(CP+" -vvv file01nonempty.txt "+'copied7') cmd_ef(CP+" -vvv file01.txt "+'/le01/moved7') cmd_ef(MV+" -vvv copied7 "+'/le01/moved7') copybyfilepattern("localUPs/","file01nonempty.txt", "localUPs/le01/moved7") self.compare_find('/') def test_18_move_existing_other_path(self): #Test 32 #move existing other path cmd_ef(CP+" -vvv file01nonempty.txt "+'copied7') cmd_ef(CP+" -vvv file01nonempty.txt "+'/le01/moved7') cmd_ef(MV+" -vvv copied7 "+'/le01/moved7') copybyfilepattern("localUPs/","file01nonempty.txt", "localUPs/le01/moved7") self.compare_find('/') def test_19_thumbnails(self): #Test 33 #ensure thumnail generation #1st get images selection print(f"using images URL: {self.imagesUrl}") cmd_ef(GET+" "+self.imagesUrl+" localtmp/") #2nd, upload folder cmd_ef(PUT+" localtmp/images") #3rd, for each file, download thumbnail folder="/images" o,status,e=cmd_ec(FIND+" "+folder+"/*") fullout="" fullStatus=1 for f in o.split(): if b"." not in f: continue # Ignore folders rmfileifexisting("thumbnail.jpg") o,status,e=cmd_ec(THUMB+" "+f.decode()+" thumbnail.jpg") ext=f.decode().split(".")[-1].lower().strip() allowedFailure=["ai","ani","cur","eps","exe","gif","heic","html","idx","j2c","jpm","md","mj2","pdf","psd","sgi","svg","txt","webp","xmp", "pnm","ppm", "tiff", "tif", "x3f"] if not ext in allowedFailure and b"saved in" not in o: #note: output code is not trustworthy: check for "saved in" fullout=fullout+str("missing thumbnail for:"+str(f)+"\n") fullStatus=0 print (status, ext," missing thumbnail:",f,"\n",o, self.check_failed_and_clear(fullout,fullStatus)) @unittest.skipIf('SKIP_PDF_THUMBNAIL_TESTS' in os.environ, "only for systems where pdfium is enabled") def test_20_pdf_thumbnail(self): print(f"using pdfsURL: {self.pdfsURL}") cmd_ef(GET+" "+self.pdfsURL+" localtmp/") #2nd, upload folder cmd_ef(PUT+" localtmp/pdfs") #3rd, for each file, download thumbnail folder="/pdfs" o,status,e=cmd_ec(FIND+" "+folder+"/*") fullout="" fullStatus=1 print(f"output = {o}") split = o.split(b"\n") print(f"split output = {split}") for f in split: if not len(f): continue rmfileifexisting("thumbnail.jpg") o,status,e=cmd_ec(THUMB+" '"+f.decode()+"' thumbnail.jpg") allowedFailure=["very big sheet size", "protected", "non-pdf-file","with-password","_TFG"] if not True in [x.encode() in f for x in allowedFailure] and b"saved in" not in o: #note: output code is not trustworthy: check for "saved in" fullout=fullout+str("missing thumbnail for:"+str(f)+"\n") fullStatus=0 print(f'{status} missing thumbnail: {f}') print(o) self.check_failed_and_clear(fullout,fullStatus) @unittest.skipIf(platform.system() != 'Windows' or CMDSHELL, "The `-o` argument in `cat` is only available on Windows and in non-interactive mode") def test_21_ascii_cat_to_file(self): ascii_string_list = [ 'Hello world', 'The quick brown fox jumps over the lazy dog.', '0123456789', '!@#$%^&*()_+-=[]{}|;:\'",.<>?/', ] for i, file_contents in enumerate(ascii_string_list, start=1): file_name = f'unicode_{i}.txt' file_path = f'localUPs/{file_name}' with open(file_path, mode='w', encoding='ascii') as f: f.write(file_contents) cmd_ef(f'{PUT} {file_path} /') cat_contents = cmd_es(f'{CAT} /{file_name}') self.assertEqual(cat_contents.decode('ascii'), file_contents) cmd_ef(f'{CAT} /{file_name} -o localUPs/cat_output.txt') self.assertTrue(filecmp.cmp('localUPs/cat_output.txt', file_path, shallow=False)) @unittest.skipIf(platform.system() != 'Windows' or CMDSHELL, "The `-o` argument in `cat` is only available on Windows and in non-interactive mode") def test_22_unicode_cat_to_file(self): for i, file_contents in enumerate(UNICODE_NAME_LIST, start=1): file_name = f'unicode_{i}.txt' file_path = f'localUPs/{file_name}' with open(file_path, mode='w', encoding='utf-8') as f: f.write(file_contents) cmd_ef(f'{PUT} {file_path} /') cat_contents = cmd_es(f'{CAT} /{file_name}') self.assertEqual(cat_contents.decode('utf-8'), file_contents) cmd_ef(f'{CAT} /{file_name} -o localUPs/cat_output.txt') self.assertTrue(filecmp.cmp('localUPs/cat_output.txt', file_path, shallow=False)) if __name__ == '__main__': if "OUT_DIR_JUNIT_XML" in os.environ: unittest.main(testRunner=xmlrunner.XMLTestRunner(output=os.environ["OUT_DIR_JUNIT_XML"]), failfast=False, buffer=False, catchbreak=False) else: unittest.main() MEGAcmd-2.5.2_Linux/tests/megacmd_put_test.py000077500000000000000000000234011516543156300211500ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- #better run in an empty folder import os, shutil, platform import unittest import xmlrunner from megacmd_tests_common import * def setUpModule(): global ABSPWD global ABSMEGADLFOLDER ABSPWD = os.getcwd() ABSMEGADLFOLDER = ABSPWD+'/megaDls' def clean_all(): if not clean_root_confirmed_by_user(): raise Exception("Tests need to be run with YES_I_KNOW_THIS_WILL_CLEAR_MY_MEGA_ACCOUNT=1") if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) cmd_ec(RM+' -rf "/*"') cmd_ec(RM+' -rf "*"') cmd_ec(RM+' -rf "//bin/*"') rmfolderifexisting("localUPs") rmfolderifexisting("localtmp") rmfileifexisting("megafind.txt") rmfileifexisting("localfind.txt") def clear_local_and_remote(): rmfolderifexisting("localUPs") cmd_ec(RM+' -rf "/*"') initialize_contents() currentTest=1 def check_failed_and_clear(o,status): global currentTest if status == 0: print("test "+str(currentTest)+" failed!") print(o) exit(1) else: print("test "+str(currentTest)+" succesful!") clear_local_and_remote() currentTest+=1 cmd_ef(CD+" /") def initialize(): if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) if len(os.listdir(".")): print("initialization folder not empty!", file=sys.stderr) #~ cd $ABSPWD exit(1) if cmd_es(FIND+" /") != b"/": print("REMOTE Not empty, please clear it before starting!", file=sys.stderr) #~ cd $ABSPWD exit(1) #initialize localtmp estructure: makedir("localtmp") touch("localtmp/file01.txt") out('file01contents', 'localtmp/file01nonempty.txt') #local empty folders structure for f in ['localtmp/le01/'+a for a in ['les01/less01']+ ['les02/less0'+z for z in ['1','2']] ]: makedir(f) #local filled folders structure for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: touch(f+"/commonfile.txt") #spaced structure for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: touch(f+"/common file.txt") # localtmp/ # ├── file01nonempty.txt # ├── file01.txt # ├── le01 # │   ├── les01 # │   │   └── less01 # │   └── les02 # │   ├── less01 # │   └── less02 # ├── lf01 # │   ├── lfs01 # │   │   └── lfss01 # │   │   └── commonfile.txt # │   └── lfs02 # │   ├── lfss01 # │   │   └── commonfile.txt # │   └── lfss02 # │   └── commonfile.txt # └── ls 01 # ├── ls s01 # │   └── ls ss01 # │   └── common file.txt # └── ls s02 # ├── ls ss01 # │   └── common file.txt # └── ls ss02 # └── common file.txt #initialize dynamic contents: clear_local_and_remote() def initialize_contents(): remotefolders=['01/'+a for a in ['s01/ss01']+ ['s02/ss0'+z for z in ['1','2']] ] cmd_ef(MKDIR+" -p "+" ".join(remotefolders)) for f in ['localUPs/01/'+a for a in ['s01/ss01']+ ['s02/ss0'+z for z in ['1','2']] ]: makedir(f) class MEGAcmdPutTests(unittest.TestCase): @classmethod def setUpClass(cls): clean_all() initialize() clear_local_and_remote() @classmethod def tearDownClass(cls): if not VERBOSE: clean_all() def setUp(self): print(f"\n=== Running test: {self._testMethodName} ===") def compare_and_clear(self) : def cleanup(): clear_local_and_remote() cmd_ef(CD+ " /") megafind=sort(cmd_ef(FIND)) localfind=sort(find('localUPs','.')) self.addCleanup(cleanup) self.assertEqual(megafind, localfind) def test_clean_comparison(self): #Test 01 #clean comparison self.compare_and_clear() def test_no_dest_empty_file_upload(self): #Test 02 #no destiny empty file upload cmd_ef(PUT+' '+'localtmp/file01.txt') shutil.copy2('localtmp/file01.txt','localUPs/') self.compare_and_clear() def test_dest_empty_file_upload(self): #Test 03 #/ destiny empty file upload cmd_ef(PUT+' '+'localtmp/file01.txt /') shutil.copy2('localtmp/file01.txt','localUPs/') self.compare_and_clear() def test_no_dest_non_empty_file_upload(self): #Test 04 #no destiny non empty file upload cmd_ef(PUT+' '+'localtmp/file01nonempty.txt') shutil.copy2('localtmp/file01nonempty.txt','localUPs/') self.compare_and_clear() def test_update_non_empty_file_upload(self): #Test 05 #update non empty file upload out('newfile01contents', 'localtmp/file01nonempty.txt') cmd_ef(PUT+' '+'localtmp/file01nonempty.txt') shutil.copy2('localtmp/file01nonempty.txt','localUPs/file01nonempty.txt') self.compare_and_clear() def test_empty_folder(self): #Test 06 #empty folder cmd_ef(PUT+' '+'localtmp/le01/les01/less01') copyfolder('localtmp/le01/les01/less01','localUPs/') self.compare_and_clear() def test_1_file_folder(self): #Test 07 #1 file folder cmd_ef(PUT+' '+'localtmp/lf01/lfs01/lfss01') copyfolder('localtmp/lf01/lfs01/lfss01','localUPs/') self.compare_and_clear() def test_entire_empty_folder_structure(self): #Test 08 #entire empty folders structure cmd_ef(PUT+' '+'localtmp/le01') copyfolder('localtmp/le01','localUPs/') self.compare_and_clear() def test_entire_non_empty_folder_structure(self): #Test 09 #entire non empty folders structure cmd_ef(PUT+' '+'localtmp/lf01') copyfolder('localtmp/lf01','localUPs/') self.compare_and_clear() def test_copy_structure_into_subfolder(self): #Test 10 #copy structure into subfolder cmd_ef(PUT+' '+'localtmp/le01 /01/s01') copyfolder('localtmp/le01','localUPs/01/s01') self.compare_and_clear() def test_copy_exact_structure(self): #~ #Test 11 #copy exact structure makedir('auxx') copyfolder('localUPs/01','auxx') cmd_ef(PUT+' '+'auxx/01/s01 /01/s01') copyfolder('auxx/01/s01','localUPs/01/s01') rmfolderifexisting("auxx") self.compare_and_clear() def test_merge_increased_structure(self): #~ #Test 12 #merge increased structure makedir('auxx') copyfolder('localUPs/01','auxx') touch('auxx/01/s01/another.txt') cmd_ef(PUT+' '+'auxx/01/s01 /01/') shutil.copy2('auxx/01/s01/another.txt','localUPs/01/s01') self.compare_and_clear() rmfolderifexisting("auxx") def test_multiple_upload(self): #Test 13 #multiple upload cmd_ef(PUT+' '+'localtmp/le01 localtmp/lf01 /01/s01') copyfolder('localtmp/le01','localUPs/01/s01') copyfolder('localtmp/lf01','localUPs/01/s01') self.compare_and_clear() @unittest.skipIf(platform.system() == "Windows" or CMDSHELL, "skipping test") def test_local_regexp(self): #Test 14 #local regexp cmd_ef(PUT+' '+'localtmp/*txt /01/s01') copybyfilepattern('localtmp/','*.txt','localUPs/01/s01') self.compare_and_clear() def test_prev_dir(self): """../""" #Test 15 #../ cmd_ef(CD+' 01') cmd_ef(PUT+' '+'localtmp/le01 ../01/s01') cmd_ef(CD+' /') copyfolder('localtmp/le01','localUPs/01/s01') self.compare_and_clear() def test_spaces(self): #Test 16 #spaced stuff if CMDSHELL: #TODO: think about this again cmd_ef(PUT+' '+'localtmp/ls\\ 01') else: cmd_ef(PUT+' '+'"localtmp/ls 01"') copyfolder('localtmp/ls 01','localUPs') self.compare_and_clear() def test_put_create_flag_absolute_dest_path(self): """ When cwd is in a subfolder (e.g. /put_test_xxx) and put -c uses an absolute destination path, the path must be resolved from root, not from cwd. """ # Test 17 #put -c with absolute path cmd_ef(MKDIR+' /put_abs_dest') cmd_ef(CD+' /put_abs_dest') cmd_ef(PUT+' -c '+'localtmp/file01.txt /put_abs_dest/newfile/') cmd_ef(CD+' /') makedir('localUPs/put_abs_dest/newfile') shutil.copy2('localtmp/file01.txt', 'localUPs/put_abs_dest/newfile/') self.compare_and_clear() if __name__ == '__main__': if "OUT_DIR_JUNIT_XML" in os.environ: unittest.main(testRunner=xmlrunner.XMLTestRunner(output=os.environ["OUT_DIR_JUNIT_XML"]), failfast=False, buffer=False, catchbreak=False) else: unittest.main() ###TODO: do stuff in shared folders... ######## ##Test XX #merge structure with file updated ##This test fails, because it creates a remote copy of the updated file. ##That's expected. If ever provided a way to create a real merge (e.g.: put -m ...) to do BACKUPs, reuse this test. #mkdir aux #shutil.copy2('-pr localUPs/01','aux') #touch aux/01/s01/another.txt #cmd_ef(PUT+' '+'aux/01/s01 /01/') #rsync -aLp aux/01/s01/ localUPs/01/s01/ #echo "newcontents" > aux/01/s01/another.txt #cmd_ef(PUT+' '+'aux/01/s01 /01/') #rsync -aLp aux/01/s01/ localUPs/01/s01/ #rm -r aux #compare_and_clear() # Clean all MEGAcmd-2.5.2_Linux/tests/megacmd_put_test.sh000066400000000000000000000147511516543156300211370ustar00rootroot00000000000000#!/bin/bash GET=mega-get PUT=mega-put RM=mega-rm CD=mega-cd LCD=mega-lcd MKDIR=mega-mkdir EXPORT=mega-export FIND=mega-find if [ "x$VERBOSE" == "x" ]; then VERBOSE=0 fi if [ "x$MEGACMDSHELL" != "x" ]; then PUT="executeinMEGASHELL put" CMDSHELL=1 fi function executeinMEGASHELL() { command=$1 shift; echo lcd "$PWD" > /tmp/shellin echo $command "$@" >> /tmp/shellin #~ echo $command "$@" > /tmp/shellin $MEGACMDSHELL < /tmp/shellin | sed "s#^.*\[K##g" | grep $MEGA_EMAIL -A 1000 | grep -v $MEGA_EMAIL } ABSPWD=`pwd` function clean_all() { if [[ $(mega-whoami) != *"$MEGA_EMAIL" ]]; then mega-logout || : mega-login $MEGA_EMAIL $MEGA_PWD || exit -1 fi $RM -rf "*" > /dev/null $RM -rf "//bin/*" > /dev/null if [ -e localUPs ]; then rm -r localUPs; fi if [ -e localtmp ]; then rm -r localtmp; fi if [ -e megafind.txt ]; then rm megafind.txt; fi if [ -e localfind.txt ]; then rm localfind.txt; fi } function clear_local_and_remote() { rm -r localUPs/* 2>/dev/null $RM -rf /01/../* >/dev/null 2>/dev/null || : initialize_contents } currentTest=1 function compare_and_clear() { if [ "$VERBOSE" == "1" ]; then echo "test $currentTest" fi $FIND | sort > megafind.txt (cd localUPs; find . | sed "s#\./##g" | sort) > localfind.txt if diff --side-by-side megafind.txt localfind.txt 2>/dev/null >/dev/null; then if [ "$VERBOSE" == "1" ]; then echo "diff megafind vs localfind:" diff --side-by-side megafind.txt localfind.txt fi echo "test $currentTest succesful!" else echo "test $currentTest failed!" echo "diff megafind vs localfind:" diff --side-by-side megafind.txt localfind.txt cd $ABSPWD exit 1 fi clear_local_and_remote currentTest=$((currentTest+1)) $CD / } function check_failed_and_clear() { if [ "$?" != "0" ]; then echo "test $currentTest succesful!" else echo "test $currentTest failed!" exit 1 fi clear_local_and_remote currentTest=$((currentTest+1)) $CD / } function initialize () { if [[ $(mega-whoami) != *"$MEGA_EMAIL" ]]; then mega-logout || : mega-login $MEGA_EMAIL $MEGA_PWD || exit -1 fi if [ "$(ls -A .)" ]; then echo "initialization folder not empty!" exit 1 fi if [ $($FIND / | wc -l) != 1 ]; then echo "REMOTE Not empty, please clear it before starting!" exit 1 fi #initialize localtmp estructure: mkdir -p localtmp touch localtmp/file01.txt echo file01contents > localtmp/file01nonempty.txt #local empty folders structure mkdir -p localtmp/le01/{les01/less01,les02/less0{1,2}} #local filled folders structure mkdir -p localtmp/lf01/{lfs01/lfss01,lfs02/lfss0{1,2}} touch localtmp/lf01/{lfs01/lfss01,lfs02/lfss0{1,2}}/commonfile.txt #spaced structure mkdir -p localtmp/ls\ 01/{ls\ s01/ls\ ss01,ls\ s02/ls\ ss0{1,2}} touch localtmp/ls\ 01/{ls\ s01/ls\ ss01,ls\ s02/ls\ ss0{1,2}}/common\ file.txt # localtmp/ # ├── file01nonempty.txt # ├── file01.txt # ├── le01 # │   ├── les01 # │   │   └── less01 # │   └── les02 # │   ├── less01 # │   └── less02 # ├── lf01 # │   ├── lfs01 # │   │   └── lfss01 # │   │   └── commonfile.txt # │   └── lfs02 # │   ├── lfss01 # │   │   └── commonfile.txt # │   └── lfss02 # │   └── commonfile.txt # └── ls 01 # ├── ls s01 # │   └── ls ss01 # │   └── common file.txt # └── ls s02 # ├── ls ss01 # │   └── common file.txt # └── ls ss02 # └── common file.txt #initialize dynamic contents: clear_local_and_remote } function initialize_contents() { $MKDIR -p 01/{s01/ss01,s02/ss0{1,2}} mkdir -p localUPs/01/{s01/ss01,s02/ss0{1,2}} } if [ "$MEGA_EMAIL" == "" ] || [ "$MEGA_PWD" == "" ]; then echo "You must define variables MEGA_EMAIL MEGA_PWD. WARNING: Use an empty account for $MEGA_EMAIL" cd $ABSPWD exit 1 fi #INITIALIZATION clean_all initialize ABSMEGADLFOLDER=$PWD/megaDls clear_local_and_remote #Test 01 #clean comparison compare_and_clear #Test 02 #no destiny empty file upload $PUT localtmp/file01.txt cp localtmp/file01.txt localUPs/ compare_and_clear #Test 03 #/ destiny empty file upload $PUT localtmp/file01.txt / cp localtmp/file01.txt localUPs/ compare_and_clear #Test 04 #no destiny nont empty file upload $PUT localtmp/file01nonempty.txt cp localtmp/file01nonempty.txt localUPs/ compare_and_clear #Test 05 #empty folder $PUT localtmp/le01/les01/less01 cp -r localtmp/le01/les01/less01 localUPs/ compare_and_clear #Test 06 #1 file folder $PUT localtmp/lf01/lfs01/lfss01 cp -r localtmp/lf01/lfs01/lfss01 localUPs/ compare_and_clear #Test 07 #entire empty folders structure $PUT localtmp/le01 cp -r localtmp/le01 localUPs/ compare_and_clear #Test 08 #entire non empty folders structure $PUT localtmp/lf01 cp -r localtmp/lf01 localUPs/ compare_and_clear #Test 09 #copy structure into subfolder $PUT localtmp/le01 /01/s01 cp -r localtmp/le01 localUPs/01/s01 compare_and_clear #~ #Test 10 #copy exact structure mkdir aux cp -pr localUPs/01 aux $PUT aux/01/s01 /01/s01 cp -r aux/01/s01 localUPs/01/s01 rm -r aux compare_and_clear #Test 11 #merge increased structure mkdir aux cp -pr localUPs/01 aux touch aux/01/s01/another.txt $PUT aux/01/s01 /01/ rsync -aLp aux/01/s01/ localUPs/01/s01/ rm -r aux compare_and_clear #Test 12 #multiple upload $PUT localtmp/le01 localtmp/lf01 /01/s01 cp -r localtmp/le01 localtmp/lf01 localUPs/01/s01 compare_and_clear #Test 13 #local regexp $PUT localtmp/*txt /01/s01 cp -r localtmp/*txt localUPs/01/s01 compare_and_clear #Test 14 #../ $CD 01 $PUT localtmp/le01 ../01/s01 $CD / cp -r localtmp/le01 localUPs/01/s01 compare_and_clear currentTest=15 #Test 15 #spaced stuff if [ "x$CMDSHELL" != "x1" ]; then #TODO: think about this again $PUT localtmp/ls\ 01 else $PUT "localtmp/ls\ 01" fi cp -r localtmp/ls\ 01 localUPs/ls\ 01 compare_and_clear ###TODO: do stuff in shared folders... ######## ##Test XX #merge structure with file updated ##This test fails, because it creates a remote copy of the updated file. ##That's expected. If ever provided a way to create a real merge (e.g.: put -m ...) to do BACKUPs, reuse this test. #mkdir aux #cp -pr localUPs/01 aux #touch aux/01/s01/another.txt #$PUT aux/01/s01 /01/ #rsync -aLp aux/01/s01/ localUPs/01/s01/ #echo "newcontents" > aux/01/s01/another.txt #$PUT aux/01/s01 /01/ #rsync -aLp aux/01/s01/ localUPs/01/s01/ #rm -r aux #compare_and_clear # Clean all if [ "$VERBOSE" != "1" ]; then clean_all fi MEGAcmd-2.5.2_Linux/tests/megacmd_rm_test.py000077500000000000000000000207171516543156300207650ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- #better run in an empty folder import os, shutil, platform import unittest import xmlrunner from megacmd_tests_common import * def setUpModule(): global ABSPWD global ABSMEGADLFOLDER ABSPWD = os.getcwd() ABSMEGADLFOLDER = ABSPWD+'/megaDls' def clean_all(): if not clean_root_confirmed_by_user(): raise Exception("Tests need to be run with YES_I_KNOW_THIS_WILL_CLEAR_MY_MEGA_ACCOUNT=1") if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) cmd_ec(RM+' -rf "/*"') cmd_ec(RM+' -rf "*"') cmd_ec(RM+' -rf "//bin/*"') rmfolderifexisting("localUPs") rmfolderifexisting("localtmp") rmfileifexisting("megafind.txt") rmfileifexisting("localfind.txt") def clear_local_and_remote(): rmfolderifexisting("localUPs") cmd_ec(RM+' -rf "/*"') initialize_contents() currentTest=1 def check_failed_and_clear(o,status): global currentTest if status == 0: print("test "+str(currentTest)+" failed!") print(o) exit(1) else: print("test "+str(currentTest)+" succesful!") clear_local_and_remote() currentTest+=1 cmd_ef(CD+" /") def initialize(): if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) if len(os.listdir(".")): print("initialization folder not empty!", file=sys.stderr) #~ cd $ABSPWD exit(1) if cmd_es(FIND+" /") != b"/": print("REMOTE Not empty, please clear it before starting!", file=sys.stderr) #~ cd $ABSPWD exit(1) #initialize localtmp estructure: makedir("localtmp") touch("localtmp/file01.txt") out('file01contents', 'localtmp/file01nonempty.txt') #local empty folders structure for f in ['localtmp/le01/'+a for a in ['les01/less01']+ ['les02/less0'+z for z in ['1','2']] ]: makedir(f) #local filled folders structure for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: touch(f+"/commonfile.txt") #spaced structure for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: touch(f+"/common file.txt") # localtmp/ # ├── file01nonempty.txt # ├── file01.txt # ├── le01 # │   ├── les01 # │   │   └── less01 # │   └── les02 # │   ├── less01 # │   └── less02 # ├── lf01 # │   ├── lfs01 # │   │   └── lfss01 # │   │   └── commonfile.txt # │   └── lfs02 # │   ├── lfss01 # │   │   └── commonfile.txt # │   └── lfss02 # │   └── commonfile.txt # └── ls 01 # ├── ls s01 # │   └── ls ss01 # │   └── common file.txt # └── ls s02 # ├── ls ss01 # │   └── common file.txt # └── ls ss02 # └── common file.txt #initialize dynamic contents: clear_local_and_remote() def initialize_contents(): contents=" ".join(['"localtmp/'+x+'"' for x in os.listdir('localtmp/')]) cmd_ef(PUT+" "+contents+" /") makedir('localUPs') copybypattern('localtmp/','*','localUPs') class MEGAcmdRmTest(unittest.TestCase): @classmethod def setUpClass(cls): #INITIALIZATION clean_all() initialize() clear_local_and_remote() @classmethod def tearDownClass(cls): if not VERBOSE: clean_all() def setUp(self): print(f"\n=== Running test: {self._testMethodName} ===") def compare_and_clear(self): def cleanup(): clear_local_and_remote() cmd_ef(CD+" /") megafind=sort(cmd_ef(FIND)) localfind=sort(find('localUPs','.')) self.addCleanup(cleanup) self.assertEqual(megafind, localfind) print(f"megafind: {megafind}, localfind: {localfind}") def test_01_clean_comparison(self): #Test 01 #clean comparison self.compare_and_clear() def test_02_dest_empty_file(self): #Test 02 #destiny empty file cmd_ef(RM+' '+'file01.txt') rmfileifexisting('localUPs/file01.txt') self.compare_and_clear() def test_03_dest_empty_file_upload(self): #Test 03 #/ destiny empty file upload cmd_ef(PUT+' '+'localtmp/file01.txt /') shutil.copy2('localtmp/file01.txt','localUPs') self.compare_and_clear() def test_04_no_dest_non_empty_file_upload(self): #Test 04 #no destiny nont empty file upload cmd_ef(RM+' '+'file01nonempty.txt') rmfileifexisting('localUPs/file01nonempty.txt') self.compare_and_clear() def test_05_empty_folder(self): #Test 05 #empty folder cmd_ef(RM+' '+'-rf le01/les01/less01') rmfolderifexisting('localUPs/le01/les01/less01') self.compare_and_clear() def test_06_1_file_folder(self): #Test 06 #1 file folder cmd_ef(RM+' '+'-rf lf01/lfs01/lfss01') rmfolderifexisting('localUPs/lf01/lfs01/lfss01') self.compare_and_clear() def test_07_entire_empty_folders_structure(self): #Test 07 #entire empty folders structure cmd_ef(RM+' '+'-rf le01') rmfolderifexisting('localUPs/le01') self.compare_and_clear() def test_08_entire_non_empty_folders_structure(self): #Test 08 #entire non empty folders structure cmd_ef(RM+' '+'-rf lf01') rmfolderifexisting('localUPs/lf01') self.compare_and_clear() def test_09_multiple(self): #Test 09 #multiple cmd_ef(RM+' '+'-rf lf01 le01/les01') rmfolderifexisting('localUPs/lf01') rmfolderifexisting('localUPs/le01/les01') self.compare_and_clear() def test_10_current_wd(self): #Test 10 #. cmd_ef(CD+' '+'le01') cmd_ef(RM+' '+'-rf .') cmd_ef(CD+' '+'/') rmfolderifexisting('localUPs/le01') self.compare_and_clear() def test_11_prev_dir(self): #Test 11 #.. cmd_ef(CD+' '+'le01/les01') cmd_ef(RM+' '+'-rf ..') cmd_ef(CD+' '+'/') rmfolderifexisting('localUPs/le01') self.compare_and_clear() def test_12_prev_dir_2(self): """../XX""" #Test 12 #../XX cmd_ef(CD+' '+'le01/les01') cmd_ef(RM+' '+'-rf ../les01') cmd_ef(CD+' '+'/') rmfolderifexisting('localUPs/le01/les01') self.compare_and_clear() def test_13_spaces(self): #Test 13 #spaced stuff cmd_ef(RM+' '+'-rf "ls 01"') rmfolderifexisting('localUPs/ls 01') self.compare_and_clear() def test_14_complex(self): #Test 14 #complex stuff cmd_ef(RM+' '+'-rf "ls 01/../le01/les01" "lf01/../ls*/ls s02"') rmfolderifexisting('localUPs/ls 01/../le01/les01') [rmfolderifexisting('localUPs/lf01/../'+f+'/ls s02') for f in os.listdir('localUPs/lf01/..') if f.startswith('ls')] self.compare_and_clear() @unittest.skipIf(platform.system() == "Windows", "skipping for Windows systems") def test_15_complex_pcre_expr(self): #Test 15 #complex stuff with PCRE exp cmd_ef(RM+' '+'-rf --use-pcre "ls 01/../le01/les0[12]" "lf01/../ls.*/ls s0[12]"') rmfolderifexisting('localUPs/ls 01/../le01/les01') rmfolderifexisting('localUPs/ls 01/../le01/les02') [rmfolderifexisting('localUPs/lf01/../'+f+'/ls s01') for f in os.listdir('localUPs/lf01/..') if f.startswith('ls')] [rmfolderifexisting('localUPs/lf01/../'+f+'/ls s02') for f in os.listdir('localUPs/lf01/..') if f.startswith('ls')] self.compare_and_clear() def test_16_spaces_2(self): #Test 16 #spaced stuff2 cmd_ef(RM+' '+'-rf ls\\ 01') rmfolderifexisting('localUPs/ls 01') self.compare_and_clear() if __name__ == '__main__': if "OUT_DIR_JUNIT_XML" in os.environ: unittest.main(testRunner=xmlrunner.XMLTestRunner(output=os.environ["OUT_DIR_JUNIT_XML"]), failfast=False, buffer=False, catchbreak=False) else: unittest.main() MEGAcmd-2.5.2_Linux/tests/megacmd_rm_test.sh000066400000000000000000000132331516543156300207370ustar00rootroot00000000000000#!/bin/bash GET=mega-get PUT=mega-put RM=mega-rm CD=mega-cd LCD=mega-lcd MKDIR=mega-mkdir EXPORT=mega-export FIND=mega-find if [ "x$VERBOSE" == "x" ]; then VERBOSE=0 fi if [ "x$MEGACMDSHELL" != "x" ]; then RM="executeinMEGASHELL rm" CMDSHELL=1 fi function executeinMEGASHELL() { command=$1 shift; echo $command "$@" > /tmp/shellin $MEGACMDSHELL < /tmp/shellin | sed "s#^.*\[K##g" | grep $MEGA_EMAIL -A 1000 | grep -v $MEGA_EMAIL } ABSPWD=`pwd` function clean_all() { if [[ $(mega-whoami) != *"$MEGA_EMAIL" ]]; then mega-logout || : mega-login $MEGA_EMAIL $MEGA_PWD || exit -1 fi $RM -rf "/*" > /dev/null $RM -rf "//bin/*" > /dev/null if [ -e localUPs ]; then rm -r localUPs; fi if [ -e localtmp ]; then rm -r localtmp; fi if [ -e megafind.txt ]; then rm megafind.txt; fi if [ -e localfind.txt ]; then rm localfind.txt; fi } function clear_local_and_remote() { rm -r localUPs/* 2>/dev/null $RM -rf "/*" 2>/dev/null || : initialize_contents } currentTest=1 function compare_and_clear() { if [ "$VERBOSE" == "1" ]; then echo "test $currentTest" fi $FIND | sort > megafind.txt (cd localUPs; find . | sed "s#\./##g" | sort) > localfind.txt if diff --side-by-side megafind.txt localfind.txt 2>/dev/null >/dev/null; then if [ "$VERBOSE" == "1" ]; then echo "diff megafind vs localfind:" diff --side-by-side megafind.txt localfind.txt fi echo "test $currentTest succesful!" else echo "test $currentTest failed!" echo "diff megafind vs localfind:" diff --side-by-side megafind.txt localfind.txt cd $ABSPWD exit 1 fi clear_local_and_remote currentTest=$((currentTest+1)) $CD / } function check_failed_and_clear() { if [ "$?" != "0" ]; then echo "test $currentTest succesful!" else echo "test $currentTest failed!" cd $ABSPWD exit 1 fi clear_local_and_remote currentTest=$((currentTest+1)) $CD / } function initialize () { if [[ $(mega-whoami) != *"$MEGA_EMAIL" ]]; then mega-logout || : mega-login $MEGA_EMAIL $MEGA_PWD || exit -1 fi if [ "$(ls -A .)" ]; then echo "initialization folder not empty!" cd $ABSPWD exit 1 fi if [ $($FIND / | wc -l) != 1 ]; then echo "REMOTE Not empty, please clear it before starting!" cd $ABSPWD exit 1 fi #initialize localtmp estructure: mkdir -p localtmp touch localtmp/file01.txt echo file01contents > localtmp/file01nonempty.txt #local empty folders structure mkdir -p localtmp/le01/{les01/less01,les02/less0{1,2}} #local filled folders structure mkdir -p localtmp/lf01/{lfs01/lfss01,lfs02/lfss0{1,2}} touch localtmp/lf01/{lfs01/lfss01,lfs02/lfss0{1,2}}/commonfile.txt #spaced structure mkdir -p localtmp/ls\ 01/{ls\ s01/ls\ ss01,ls\ s02/ls\ ss0{1,2}} touch localtmp/ls\ 01/{ls\ s01/ls\ ss01,ls\ s02/ls\ ss0{1,2}}/common\ file.txt # localtmp/ # ├── file01nonempty.txt # ├── file01.txt # ├── le01 # │   ├── les01 # │   │   └── less01 # │   └── les02 # │   ├── less01 # │   └── less02 # ├── lf01 # │   ├── lfs01 # │   │   └── lfss01 # │   │   └── commonfile.txt # │   └── lfs02 # │   ├── lfss01 # │   │   └── commonfile.txt # │   └── lfss02 # │   └── commonfile.txt # └── ls 01 # ├── ls s01 # │   └── ls ss01 # │   └── common file.txt # └── ls s02 # ├── ls ss01 # │   └── common file.txt # └── ls ss02 # └── common file.txt #initialize dynamic contents: clear_local_and_remote } function initialize_contents() { $PUT localtmp/* / mkdir -p localUPs cp -r localtmp/* localUPs/ } if [ "$MEGA_EMAIL" == "" ] || [ "$MEGA_PWD" == "" ]; then echo "You must define variables MEGA_EMAIL MEGA_PWD. WARNING: Use an empty account for $MEGA_EMAIL" cd $ABSPWD exit 1 fi #INITIALIZATION clean_all initialize ABSMEGADLFOLDER=$PWD/megaDls clear_local_and_remote #Test 01 #clean comparison compare_and_clear #Test 02 #destiny empty file $RM file01.txt rm localUPs/file01.txt compare_and_clear #Test 03 #/ destiny empty file upload $PUT localtmp/file01.txt / cp localtmp/file01.txt localUPs/ compare_and_clear #Test 04 #no destiny nont empty file upload $RM file01nonempty.txt rm localUPs/file01nonempty.txt compare_and_clear #Test 05 #empty folder $RM -rf le01/les01/less01 rm -r localUPs/le01/les01/less01 compare_and_clear #Test 06 #1 file folder $RM -rf lf01/lfs01/lfss01 rm -r localUPs/lf01/lfs01/lfss01 compare_and_clear #Test 07 #entire empty folders structure $RM -rf le01 rm -r localUPs/le01 compare_and_clear #Test 08 #entire non empty folders structure $RM -rf lf01 rm -r localUPs/lf01 compare_and_clear #Test 09 #multiple $RM -rf lf01 le01/les01 rm -r localUPs/{lf01,le01/les01} compare_and_clear #Test 10 #. $CD le01 $RM -rf . $CD / rm -r localUPs/le01 compare_and_clear #Test 11 #.. $CD le01/les01 $RM -rf .. $CD / rm -r localUPs/le01 compare_and_clear #Test 12 #../XX $CD le01/les01 $RM -rf ../les01 $CD / rm -r localUPs/le01/les01 compare_and_clear #Test 13 #spaced stuff $RM -rf "ls\ 01" rm -r localUPs/ls\ 01 compare_and_clear #Test 14 #complex stuff $RM -rf "ls\ 01/../le01/les01" "lf01/../ls*/ls\ s02" rm -r localUPs/{ls\ 01/../le01/les01,lf01/../ls*/ls\ s02} compare_and_clear #Test 15 #complex stuff with PCRE exp $RM -rf --use-pcre "ls\ 01/../le01/les0[12]" "lf01/../ls.*/ls\ s0[12]" rm -r localUPs/{ls\ 01/../le01/les0[12],lf01/../ls*/ls\ s0[12]} compare_and_clear ###TODO: do stuff in shared folders... ######## #~ #Test XX #regexp #yet unsupported #~ $RM -rf "le01/les*" #~ rm -r localUPs/le01/les* #~ compare_and_clear # Clean all if [ "$VERBOSE" != "1" ]; then clean_all fi MEGAcmd-2.5.2_Linux/tests/megacmd_serving_test.py000077500000000000000000000262421516543156300220230ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys, os, shutil import ftplib import unittest import xmlrunner from megacmd_tests_common import * def initialize_contents(): contents=" ".join(['"localtmp/'+x+'"' for x in os.listdir('localtmp/')]) cmd_ef(PUT+" "+contents+" /") shutil.copytree('localtmp', 'localUPs') def clean_all(): if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_ef(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) cmd_ec(RM+' -rf "*"') cmd_ec(RM+' -rf "//bin/*"') rmfolderifexisting("localUPs") rmfolderifexisting("localtmp") rmfolderifexisting("megaDls") rmfolderifexisting("localDls") rmfileifexisting("megafind.txt") rmfileifexisting("localfind.txt") def clear_local_and_remote(): rmfolderifexisting("localUPs") cmd_ec(RM+' -rf "/*"') clear_dls() initialize_contents() def clear_dls(): rmcontentsifexisting("megaDls") rmcontentsifexisting("localDls") def check_failed_and_clear(self, o,status): self.assertNotEqual(status, 0) if status == 0: print(o) clear_dls() cmd_ef(CD+" /") opts='";X()[]{}<>|`\'' if os.name == 'nt': opts=";()[]{}`'" def initialize(): if cmd_es(WHOAMI) != osvar("MEGA_EMAIL"): cmd_es(LOGOUT) cmd_ef(LOGIN+" " +osvar("MEGA_EMAIL")+" "+osvar("MEGA_PWD")) if len(os.listdir(".")): print("initialization folder not empty!", file=sys.stderr) #~ cd $ABSPWD exit(1) if cmd_es(FIND+" /") != b"/": print("REMOTE Not empty, please clear it before starting!", file=sys.stderr) #~ cd $ABSPWD exit(1) #initialize localtmp estructure: makedir("localtmp") touch("localtmp/file01.txt") out('file01contents', 'localtmp/file01nonempty.txt') #local empty folders structure for f in ['localtmp/le01/'+a for a in ['les01/less01']+ ['les02/less0'+z for z in ['1','2']] ]: makedir(f) #local filled folders structure for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/lf01/'+a for a in ['lfs01/lfss01']+ ['lfs02/lfss0'+z for z in ['1','2']] ]: touch(f+"/commonfile.txt") #spaced structure for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: makedir(f) for f in ['localtmp/ls 01/'+a for a in ['ls s01/ls ss01']+ ['ls s02/ls ss0'+z for z in ['1','2']] ]: touch(f+"/common file.txt") #weird chars makedir("localtmp/odd") for f in ['localtmp/odd/'+a for a in ['file'+z for z in opts+"X"]]: touch(f+'01.txt') #~ localtmp/ #~ ├── file01nonempty.txt #~ ├── file01.txt #~ ├── le01 #~ │   ├── les01 #~ │   │   └── less01 #~ │   └── les02 #~ │   ├── less01 #~ │   └── less02 #~ ├── lf01 #~ │   ├── lfs01 #~ │   │   └── lfss01 #~ │   │   └── commonfile.txt #~ │   └── lfs02 #~ │   ├── lfss01 #~ │   │   └── commonfile.txt #~ │   └── lfss02 #~ │   └── commonfile.txt #~ ├── ls 01 #~ │   ├── ls s01 #~ │   │   └── ls ss01 #~ │   │   └── common file.txt #~ │   └── ls s02 #~ │   ├── ls ss01 #~ │   │   └── common file.txt #~ │   └── ls ss02 #~ │   └── common file.txt #~ └── odd #~ ├── file;.txt #~ ├── .... #initialize dynamic contents: clear_local_and_remote() makedir('megaDls') makedir('localDls') #ABSMEGADLFOLDER=ABSPWD+'/megaDls' class MEGAcmdServingTest(unittest.TestCase): @classmethod def setUpClass(cls): if VERBOSE: print("STARTING...") clean_all() initialize() # Initialize FTP connection cmd_ec(FTP+' -d --all') url=cmd_ef(FTP+' /').split(b' ')[-1] server=url.split(b"//")[1].split(b":")[0] port=url.split(b"//")[1].split(b":")[1].split(b"/")[0] cls.subpath=b"/"+b"/".join(url.split(b"//")[1].split(b":")[1].split(b"/")[1:]) cls.subpath=cls.subpath.replace(b'%20',b' ') if VERBOSE: print(" connecting ... to "+server.decode()+" port="+port.decode()+" path="+cls.subpath.decode()) cls.ftp=ftplib.FTP() cls.ftp.connect(server.decode(),int(port.decode()), timeout=30) cls.ftp.login("anonymous", "nomatter") cls.ftp.cwd(cls.subpath.decode()) @classmethod def tearDownClass(cls): cls.ftp.close() if not VERBOSE: clean_all() def setUp(self): print(f"\n=== Running test: {self._testMethodName} ===") def compare_find(self, what, localFindPrefix='localUPs'): if not isinstance(what, list): what = [what] megafind=b"" localfind="" for w in what: megafind+=cmd_ef(FIND+" "+w)+b"\n" localfind+=find(localFindPrefix+'/'+w,w)+"\n" megafind=sort(megafind).strip() localfind=sort(localfind).strip() #~ megafind=$FIND "$@" | sort > $ABSPWD/megafind.txt #~ (cd localUPs 2>/dev/null; find "$@" | sed "s#\./##g" | sort) > $ABSPWD/localfind.txt self.assertEqual(megafind, localfind) if (megafind == localfind): if VERBOSE: print("diff megafind vs localfind:") #diff --side-by-side megafind.txt localfind.txt#TODO: do this print("MEGAFIND:") print(megafind) print("LOCALFIND") print(localfind) else: print("diff megafind vs localfind:") #~ diff --side-by-side megafind.txt localfind.txt #TODO: do this print("MEGAFIND:") print(megafind) print("LOCALFIND") print(localfind) #cd $ABSPWD #TODO: consider this def compare_remote_local(self, megafind, localfind): if (isinstance(megafind, bytes)): megafind = megafind.decode() if (isinstance(localfind, bytes)): localfind = localfind.decode() self.assertEqual(megafind, localfind) if (megafind == localfind): if VERBOSE: print("diff megafind vs localfind:") #diff --side-by-side megafind.txt localfind.txt#TODO: do this print("MEGAFIND:") print(megafind) print("LOCALFIND") print(localfind) else: print("diff megafind vs localfind:") #~ diff --side-by-side megafind.txt localfind.txt #TODO: do this print("MEGAFIND:") print(megafind) print("LOCALFIND") print(localfind) def compare_and_clear(self): megaDls=sort(find('megaDls')) localDls=sort(find('localDls')) self.assertEqual(megaDls, localDls) if (megaDls == localDls): if VERBOSE: print("megaDls:") print(megaDls) print() print("localDls:") print(localDls) print() else: print("megaDls:") print(megaDls) print() print("localDls:") print(localDls) print() exit(1) clear_dls() cmd_ef(CD+" /") def getFile(self, filename, destiny): try: self.ftp.retrbinary("RETR " + filename ,open(destiny, 'wb').write) except Exception as ex: print("Error: "+str(ex)) exit(1) def upload(self, source, destination): ext = os.path.splitext(source)[1] if ext in (".txt", ".htm", ".html"): self.ftp.storlines("STOR " + destination, open(source, "rb", 1024)) else: self.ftp.storbinary("STOR " + destination, open(source, "rb"), 1024) def lsftp(self): data=[] self.ftp.dir(data.append) toret="" for l in data: toret+=l[49:]+"\n" return toret def test_01_compare_root(self): self.compare_remote_local(self.ftp.pwd(), self.subpath) def test_02_mkdir(self): self.ftp.mkd('newfolder') makedir('localUPs/newfolder') self.compare_remote_local(sort(self.lsftp().strip()),sort(ls('localUPs').strip())) def test_03_download_txt_file(self): self.getFile('file01nonempty.txt', 'megaDls/file01nonempty.txt') shutil.copy2('localUPs/file01nonempty.txt','localDls/') self.compare_and_clear() def test_04_upload_txt_file(self): self.upload('localUPs/file01nonempty.txt', 'newfile.txt') shutil.copy2('localUPs/file01nonempty.txt','localUPs/newfile.txt') self.compare_remote_local(sort(self.lsftp().strip()),sort(ls('localUPs').strip())) def test_05_upload_non_txt_file(self): shutil.copy2('localUPs/file01nonempty.txt','localUPs/newfile') self.upload('localUPs/newfile', 'newfile') self.compare_remote_local(sort(self.lsftp().strip()),sort(ls('localUPs').strip())) def test_06_rename(self): shutil.move('localUPs/lf01/lfs01/lfss01/commonfile.txt','localUPs/lf01/lfs01/lfss01/renamed.txt') self.ftp.rename('lf01/lfs01/lfss01/commonfile.txt', 'lf01/lfs01/lfss01/renamed.txt') self.compare_remote_local(sort(self.lsftp().strip()),sort(ls('localUPs').strip())) def test_07_rename_folder(self): shutil.move('localUPs/lf01/lfs01/lfss01','localUPs/lf01/lfs01/lfss01_renamed') self.ftp.rename('lf01/lfs01/lfss01', 'lf01/lfs01/lfss01_renamed') self.compare_remote_local(sort(self.lsftp().strip()),sort(ls('localUPs').strip())) def test_08_remove_file(self): os.remove('localUPs/lf01/lfs02/lfss01/commonfile.txt') self.ftp.delete('lf01/lfs02/lfss01/commonfile.txt') self.compare_remote_local(sort(self.lsftp().strip()),sort(ls('localUPs').strip())) def test_09_remove_folder(self): shutil.rmtree('localUPs/lf01/lfs02/lfss02') self.ftp.rmd('lf01/lfs02/lfss02') self.compare_remote_local(sort(self.lsftp().strip()),sort(ls('localUPs').strip())) #FTPS #~ if ftp != None: ftp.close() #~ cmd_ec(FTP+' -d --all') #~ url=cmd_ef(FTP+' / --tls --certificate=/assets/others/certs/selfsignedSDK/pepitopalotes.pem --key=/assets/others/certs/selfsignedSDK/pepitopalotes.key --port=21 ').split(' ')[-1] #~ server=url.split("//")[1].split(":")[0] #~ #server="pepitopalotes" #~ port=url.split("//")[1].split(":")[1].split("/")[0] #~ subpath="/"+"/".join(url.split("//")[1].split(":")[1].split("/")[1:]) #~ subpath=subpath.replace('%20',' ') #~ if VERBOSE: #~ print " connecting ... to "+server+" port="+port+" path="+subpath #~ ftp=ftplib.FTP_TLS() #~ ftp.connect(server,port, timeout=5) #~ ftp.login("anonymous", "nomatter") #this fails! #~ ftp.cwd(subpath) #~ executeTests() ################### if __name__ == '__main__': if "OUT_DIR_JUNIT_XML" in os.environ: unittest.main(testRunner=xmlrunner.XMLTestRunner(output=os.environ["OUT_DIR_JUNIT_XML"]), failfast=False, buffer=False, catchbreak=False) else: unittest.main() MEGAcmd-2.5.2_Linux/tests/megacmd_tests_common.py000066400000000000000000000365201516543156300220160ustar00rootroot00000000000000#!/usr/bin/python3 # -*- coding: utf-8 -*- import sys, os, subprocess, shutil, re, platform import fnmatch import pexpect VERBOSE = 'VERBOSE' in os.environ CMDSHELL = 'MEGACMDSHELL' in os.environ if CMDSHELL: MEGACMDSHELL = os.environ['MEGACMDSHELL'] if 'MEGA_EMAIL' in os.environ and 'MEGA_PWD' in os.environ and 'MEGA_EMAIL_AUX' in os.environ and 'MEGA_PWD_AUX' in os.environ: MEGA_EMAIL = os.environ['MEGA_EMAIL'] MEGA_PWD = os.environ['MEGA_PWD'] MEGA_EMAIL_AUX = os.environ['MEGA_EMAIL_AUX'] MEGA_PWD_AUX = os.environ['MEGA_PWD_AUX'] else: raise Exception('Environment variables MEGA_EMAIL, MEGA_PWD, MEGA_EMAIL_AUX, MEGA_PWD_AUX are not defined. WARNING: Use a test account for $MEGA_EMAIL') def build_command_name(command): if platform.system() == 'Windows': return 'MEGAclient.exe ' + command elif platform.system() == 'Darwin': return 'mega-exec ' + command else: return 'mega-' + command GET = build_command_name('get') PUT = build_command_name('put') RM = build_command_name('rm') MV = build_command_name('mv') CD = build_command_name('cd') CP = build_command_name('cp') THUMB = build_command_name('thumbnail') LCD = build_command_name('lcd') MKDIR = build_command_name('mkdir') EXPORT = build_command_name('export') SHARE = build_command_name('share') INVITE = build_command_name('invite') FIND = build_command_name('find') WHOAMI = build_command_name('whoami') LOGOUT = build_command_name('logout') LOGIN = build_command_name('login') IPC = build_command_name('ipc') FTP = build_command_name('ftp') IMPORT = build_command_name('import') CAT = build_command_name('cat') #execute command def ec(what): if VERBOSE: print("Executing "+what) process = subprocess.Popen(what, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdoutdata, stderrdata = process.communicate() stdoutdata=stdoutdata.replace(b'\r\n',b'\n') stderrdata=stderrdata.replace(b'\r\n',b'\n') if VERBOSE: print(stdoutdata.strip()) print(stderrdata.strip()) return stdoutdata,process.returncode,stderrdata #execute and return only stdout contents def ex(what): return ec(what)[0] #return subprocess.Popen(what, shell=True, stdout=subprocess.PIPE).stdout.read() #Execute and strip, return only stdout def es(what): return ec(what)[0].strip() #Execute and strip with status code and err def esc(what): out, status, err =ec(what) return out.strip(),status, err.strip() #exit if failed def ef(what): out,code,err=esc(what) if code != 0: print("FAILED trying "+ what, file=sys.stderr) print(out, file=sys.stderr) print(err, file=sys.stderr) exit(code) return out def cmdshell_ec(what): what = re.sub('^mega-', '', what) if VERBOSE: print(f'Executing in cmdshell: {what}') # We must ensure there are enough columns so long commands don't get truncated child = pexpect.spawn(MEGACMDSHELL, encoding='utf-8', dimensions=(32, 256), timeout=None) quit_command = 'quit --only-shell' def has_prompt(s, command): return any(f'{p} {command}' in s for p in ['$', 'MEGA CMD>']) def wait_shell_prompt(): child.expect([r'(?=.+:.+\$ )', r'(?=MEGA CMD> )']) try: wait_shell_prompt() # Having two lcd commands is not necessary and messes up the output parsing if not what.startswith('lcd'): child.sendline(f'lcd {os.getcwd()}') child.sendline(what) wait_shell_prompt() # Stop the shell and wait for end-of-file child.sendline(quit_command) child.expect(pexpect.EOF) # The whole output of the shell split by newlines lines = child.before.replace('\r\n', '\n').split('\n') # Find the start of our command start = next(i for i, s in enumerate(lines) if has_prompt(s, what)) # Find the end of our shell by searching for the quit command end = next(i for i, s in enumerate(lines[start+1:], start+1) if quit_command in s) # The output of our command is the string in-between the start and end indices out = '\n'.join(lines[start+1:end]).strip() except pexpect.EOF: print('Shell session ended') return '', -1, '' except pexpect.TIMEOUT: print('Timed out waiting for output') return '', -1, '' finally: child.close() out = re.sub(r'.*\x1b\[K','', out) # erase line controls out = re.sub(r'.*\r', '', out) # erase non printable stuff # extract log lines as stderr output. This is subideal: but pexpect.spawn does not seem to support providing separated stderr stderr_pattern = r'\[\d{4}-\d{2}-\d{2}_\d{2}-\d{2}-\d{2}\.\d{6} (sdk|cmd)' stdout_content, stderr_content = '\n'.join([line for line in out.split('\n') if not re.match(stderr_pattern, line)]), \ '\n'.join([line for line in out.split('\n') if re.match(stderr_pattern, line)]) if VERBOSE: print(f'Exit code: {child.exitstatus}') print(f'Out: {stdout_content}') print(f'Err: {stderr_content}') return stdout_content.encode('utf-8'), child.exitstatus, stderr_content.encode('utf-8') #execute and return only stdout contents def cmdshell_ex(what): return cmdshell_ec(what)[0] #Execute and strip, return only stdout def cmdshell_es(what): return cmdshell_ec(what)[0].strip() #Execute and strip with status code and err def cmdshell_esc(what): out,code,err=cmdshell_ec(what) return out.strip(), code, err.strip() #exit if failed def cmdshell_ef(what): out,code, err=cmdshell_ec(what) if code != 0: print("FAILED trying "+str(what), file=sys.stderr) print(out, file=sys.stderr) print(err, file=sys.stderr) exit(code) return out def cmd_ec(what): if CMDSHELL: return cmdshell_ec(what) else: return ec(what) #execute and return only stdout contents def cmd_ex(what): if CMDSHELL: return cmdshell_ex(what) else: return ex(what) #Execute and strip, return only stdout def cmd_es(what): if CMDSHELL: return cmdshell_es(what) else: return es(what) #Execute and strip with status code and err def cmd_esc(what): if CMDSHELL: return cmdshell_esc(what) else: return esc(what) #exit if failed def cmd_ef(what): if CMDSHELL: return cmdshell_ef(what) else: return ef(what) def rmfolderifexisting(what): if os.path.exists(what): shutil.rmtree(what) def rmfileifexisting(what): if os.path.exists(what): os.remove(what) def rmcontentsifexisting(what): if os.path.exists(what) and os.path.isdir(what): shutil.rmtree(what) os.makedirs(what) def copybyfilepattern(origin,pattern,destiny): for f in fnmatch.filter(os.listdir(origin),pattern): shutil.copy2(origin+'/'+f,destiny) def copyfolder(origin,destiny): shutil.copytree(origin,destiny+'/'+origin.split('/')[-1]) def copybypattern(origin,pattern,destiny): for f in fnmatch.filter(os.listdir(origin),pattern): if (os.path.isdir(origin+'/'+f)): copyfolder(origin+'/'+f,destiny) else: shutil.copy2(origin+'/'+f,destiny) def makedir(what): if (not os.path.exists(what)): os.makedirs(what) def osvar(what): try: return os.environ[what] except: return "" def sort(what): if isinstance(what, bytes): return b"\n".join(sorted(what.split(b"\n"))).decode() return "\n".join(sorted(what.split("\n"))) def findR(where, prefix=""): toret="" #~ print "e:",where for f in os.listdir(where): #~ print "f:",where+"/"+f toret+=prefix+f+"\n" if (os.path.isdir(where+"/"+f)): #~ print "entering ",prefix+f toret=toret+findR(where+"/"+f,prefix+f+"/") return toret def find(where, prefix=""): if not os.path.exists(where): if VERBOSE: print("file not found in find: {}, {} ".format(where, os.getcwd())) return "" if (not os.path.isdir(where)): return prefix if (prefix == ""): toret ="." else: toret=prefix if (prefix == "."): toret+="\n"+findR(where).strip() else: if prefix.endswith('/'): toret+="\n"+findR(where, prefix).strip() else: toret+="\n"+findR(where, prefix+"/").strip() return toret.strip() def ls(where, prefix=""): if not os.path.exists(where): if VERBOSE: print("file not found in find: {}, {}".format(where, os.getcwd())) return "" toret=".\n" for f in os.listdir(where): toret+=prefix+f+"\n" return toret def touch(what, times=None): with open(what, 'a'): os.utime(what, times) def out(what, where): #~ print(what, file=where) with open(where, 'w') as f: f.write(what) def clean_root_confirmed_by_user(): if "YES_I_KNOW_THIS_WILL_CLEAR_MY_MEGA_ACCOUNT" in os.environ: val = os.environ["YES_I_KNOW_THIS_WILL_CLEAR_MY_MEGA_ACCOUNT"] return bool(int(val)) else: return False UNICODE_NAME_LIST = [u'\U000213e4\ucc90\u6361\U0002569b\U00028106\u1575\u416d\u267c\u11f3\ua091\u38b2\U000201b0\u594d\U00029839\u3f46\u481c\u65b8\u25cc\U00026f3b\u26ff\u292c\U0001d6d1\u7b2b\uca6a\uc23b\U000202e5\u90d7\u7200\u6c2c\U00021cf2\u63e6\U00023cfd\U0001d7f5\U00010305\u4a06\u7716\U000247b9\ufdbb\ua841\U00021965\U0001e8d4\U00026d38\U00023a82\U0001d118\u1fc7\u114d\U000112e2\U0002a465\u90a9', u'\U0002bfb4\ua320\U0002682f\U00028d67\U0002c09e\U0002aaa3\uc703\u937a\U00028fe6\U0002c3e2\u5886\U000278ff\U000266de\U0002928c\u6c62\U0002166c\u15cc\u4fda\U00029cbb\u3308\U0002a5fd\U00029059\u4144\U0001f3d7\U00024d9d\u6117\U00029823\uc063\U0002be26\u254c\u866d\U00024837\u8e36\U0002bc25\U000205c4\U00025083\u606a\U0002323b\u1a0e\u388f\U0002b5c2\ubff5\U0002b26f\U000144f5\u4b17\u872f\ub5f4\ua2d5\U0002863a\U0002abc3', u'\u2978\U00024714\ua343\U0001d954\uff51\U00028694\u1da0\u63a1\u68c4\U0002c23f\u8315\uad85\U0002024a\ucbcb\uba86\u7cb1\u3658\u68a0\ucb6e\u7262\u021e\u98a3\U0002177d\U00025a63\U0001f47e\U000293a1\U000270f0\U00022477\u3701\U0001085a\U00022c60\U00024344\u34a9\ua2b8\u7af8\U0002b288\U00023acc\u08fa\U00013058\U00021e39\U00026f4a\U000275a1\u100b\U0002236a\ucd7b\U0002805b\U00011221\u3cd8\U0002ab7b\U0001e8cd', u'\u5c63\u1684\u8988\U0002ca91\U0002ce04\U000295a9\U00010034\u63a8\ub021\u7ac2\u99df\U0002b983\U00027c91\u32ed\U00023677\U00011156\U00025f85\u8e9b\u092f\U000293d1\u4c84\u6f2f\U00024eb7\U0001f705\u9ecd\U000217d8\U00029064\ufc23\U000222f3\U00026bc9\u581c\u95c1\ua56c\u56aa\u1266\u2f6b\U00022ee0\u5c2b\U00024506\U00022112\u387f\U0001ee2b\U00022ced\ua028\U0002566d\u1c3c\U00021489\U0002ae1a\U00028972\U0002356e', u'\U0002c6f7\u8396\U00024ec9\U0002cab5\U0002389c\U00029663\ub237\U000213fe\u3079\u664e\u1ce6\u527a\u6696\u9df5\u2de0\u6a04\U000282b9\U0002bea5\u6a06\U00020575\ub734\U0002cc4c\U00022487\U00023409\ubb28\U00025a22\U00022ad3\U000274e6\ub86a\U00021d31\u998b\U0002c3d6\U000120a0\U00028188\u26b9\U0002740f\U0002cb90\U00023559\U0002b3b9\uff19\ufe08\ufc4e\u0a71\U00020524\u4304\ua395\u3421\U0001d802\U0002be22\U0002ba22', u'\U00013146\U00029f94\U00025fb9\U000243fe\u58eb\ua42d\u9b0c\ud4c7\U0002afd9\U00020ecd\U0002b10c\U00027562\U0002295e\U00023fd2\U0001f701\U0002c5e9\U0002b12b\u3bd0\u25a1\ud170\U000277e2\U0002828c\u3f27\u949a\u5d40\u5f08\U000268bf\u9851\U000238a7\U0002a997\U00023659\U00012180\U00020e3c\u45ab\U0001f70e\U00010634\U0002421f\U0002374e\u59f9\u044c\u3b42\u3901\U00020015\U00027b6f\u6765\U00029c00\U0002a047\U0002b07d\u23dc\U0001f453', u'\U000102a0\U00029697\U00026514\ua344\U00028bcc\u7c1c\U000293a1\u45ad\U0002ae08\u19f8\U00020114\U0002b2d8\U0002432d\u1387\U000245c4\U00024710\U00020528\U000225a2\U00028f2c\u765f\U0002286b\u4715\U00027e51\U000270d4\u99fb\U00021aeb\U0002aa25\u449a\ub86c\U00022672\ud4af\U000296ea\u511a\u7889\u9cfe\U00024d16\u893b\U0002a362\u3cb4\U00026383\ud3cc\u8750\U0001e859\U00028aa5\u0af9\u056f\u4404\U0002a82e\U00020524\u55c9', u'\U0002151f\U000269cb\u8040\U0002842b\U0001d11d\U0002a212\U00025584\u142c\u2415\U00021cec\U000268e3\U00027392\u5e02\u1b6a\U000233a1\u9a28\U00022dee\u97bd\U000109eb\U0002762e\uce08\U00026d94\u2ba8\u3d7c\u9219\u2bac\U00029398\U00023b98\U00025124\U00024cad\u463b\u8b37\u5265\U00026451\u61ce\ud62c\U0001d7bd\U0001d342\u37bf\U00028105\U00025a01\u7699\u3def\U000276d6\U00011483\ucdbf\u15bc\U000286da\u8dca\ubb06', u'\u9004\U00027165\U000252e6\U00020bee\U00023f5c\uc17c\U00025a8f\U00021c40\U00021e77\U0002ae0c\U0002538a\u0b92\U0002874e\U000233ed\U0001f573\U00027be4\U0001170c\U00020755\u8b8e\u2e06\U0002525d\U0002ab05\U00010666\ub337\u3c91\ucac1\u2ab1\U000212d0\U00020e29\u5081\u18e5\u37de\U00021de9\u0786\U00023de9\u7061\u0625\u399e\U0002043e\u828a\U0002c208\u05ab\U00028859\u0100\ufcb7\U00016861\u4762\ua5e4\U000268d0\u234b', u'\U00023911\U00024084\ua5f7\U0002aaa5\u1798\uc82c\ucfc0\U0002b4fe\U00014456\U000286bb\U0002897e\U000217c5\U0002a0c0\U0002a160\ub5e8\U00022abe\U000285be\U0002cd8d\U0002c36a\U0002c040\ub183\ub7c7\U0002b082\ud724\u7dd5\u0986\U00029507\uabaa\U00021920\u811c\u29c5\u7d3f\U00027831\U000227c2\u1f31\U00021153\u79a1\U0002b233\u8d1d\U000100b9\u8a5a\u9f16\u3e9a\U0002bd58\ua738\U00021110\U00025739\U0002cd05\U0002c7bf\U00024547', u'\U0002afa6\u3eed\u399c\U0002ca82\U0001f3ed\ua8a2\U0002c898\U0001ee72\U000298ef\u24a5\U0002b2c2\u5f30\ub387\u44b5\u7280\ua040\U0001d7f4\U0002270e\u2650\U0002ad54\uc07f\u889d\U0002caf7\U0002a77c\U000132a3\U0002353e\U00026115\u9c5d\uc4a5\U0002ccb1\u6d9c\u15b6\U0002a1ce\U00022dc4\u134a\u3aba\U00010020\U000259e8\u194f\u134d\u6865\U0002b139\U00021928\U000253d0\U00028a77\U0002783d\U00022b62\u36f7\u954f\U0002b6b3', u'\u1d61\U0002be0b\U00029142\U0002b41a\U0002cc5c\U00025583\u512c\u0d91\u668a\ud36e\U00022b9a\u6766\u1ec7\u8d0d\U000218c4\U0002c073\u53de\U00029bd6\U00027727\U0002c87b\u90e5\u967c\ucef8\U00027830\u725e\u445f\u71b6\U0002676e\ua740\uca76\U00028aa8\U00029761\U000280ee\u1bde\U00028c03\ud534\U00013022\U0002b023\ufc50\U0002b5f6\U000262a1\U0002ba31\U0002844c\U0002230f\uc4c0\U00029187\U00027b98\U00026446\U00023cd3\u0942', u'\uc288\u799e\ufe86\U00020b7d\ub663\u3e50\U000115a7\ufeb2\U000222af\U00012351\U000203ff\U000131be\u15b9\U000248b2\U00023206\u3460\U00028076\U0002800d\U0002896f\ua842\U0002ce7d\U0002bad7\u4288\u0489\ufb65\u238d\U00020ffe\U000100d5\U0002c100\u58f5\ucdbd\U000252fa\uc0b6\u7e29\u1186\u8e45\U00029acf\U000271d5\U000133e9\U00021991\U00027e04\U00026111\U00029842\u7724\u26d0\u45cb\U00024507\U00020567\ud006\U000245e5', u'\U0002cbba\u9b3e\U00025a9e\ud6a7\u7be3\ub389\U000203c2\ub501\U0001087d\u5bd9\U0002250d\uacb0\u8082\U00012071\ub2af\U00022b2f\u7c4f\u0cc2\u7670\U00029653\uff1d\U00021736\ud422\uc308\ud46b\U0002a3fa\u2d4e\u7981\ub73e\u5ec3\U00020a56\U000209db\U000240c1\u04a5\U00025d84\U00029cda\u8b52\U000249af\U0002c3d7\U000210ac\U00027944\U00021488\U0001211f\U00021235\ubb61\u6453\U0002651d\u7490\u6160\U00028827', u'\U00028f6f\u62e2\U0002362b\U00028c10\U0002b62a\u99b8\u837e\u5299\U000261e5\ubf41\u7d4a\U00027de5\U00028a26\uc9e5\u561e\u948c\U0002a4e0\U00028c25\U000260a9\U0002b48e\U00028132\U00020fa0\U00028a9e\U0002b09c\U00025a63\uae03\U0002c87a\U00020e63\u8471\U00029b91\U000246f3\U0002ae88\U000264bf\U00021ae2\U0002b3cd\U0001d0b3\uadf6\U0002a488\U0002701a\U00022dd6\u38c7\uacba\U0002152a\u718b\u37bb\U00024d74\u893c\u16ab\U000280fe\U00013404', u'\U00027436\ua44f\uc908\u217f\U00027425\U0002ba8c\uc30a\U00023dc5\ud325\u70c8\U00024bca\U0002914f\U0002b522\u4651\U00023606\U000169dd\u6e8d\u2b81\u3bfc\U00028217\ua1d0\u37c7\U00025caa\u7d9f\U000e0138\U0002682a\U0002543f\U00028e37\ufb79\U00020924\U00023089\u5673\u425e\ua30a\uce45\U000275cd\u4033\U00025d88\u7eeb\u7589\u1e9b\U00027992\uc74e\U00028bd4\U00022670\u926e\U0002ba1a\U0002a0b8\U00022f27\u3a0f'] MEGAcmd-2.5.2_Linux/tests/unit/000077500000000000000000000000001516543156300162265ustar00rootroot00000000000000MEGAcmd-2.5.2_Linux/tests/unit/ComunicationsManagerFileSocketsTests.cpp000066400000000000000000000507251516543156300262300ustar00rootroot00000000000000/** * (c) 2025 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #ifndef _WIN32 #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "Instruments.h" #include "comunicationsmanagerfilesockets.h" #include "megacmdcommonutils.h" using namespace megacmd; using namespace std::chrono_literals; class TestSocketClient { int mSocket; public: TestSocketClient() : mSocket(-1) { if (mSocket = socket(AF_UNIX, SOCK_STREAM, 0); mSocket >= 0) { struct sockaddr_un addr; memset(&addr, 0, sizeof(addr)); addr.sun_family = AF_UNIX; auto socketPath = getOrCreateSocketPath(false); strncpy(addr.sun_path, socketPath.c_str(), sizeof(addr.sun_path) - 1); if (connect(mSocket, (struct sockaddr*)&addr, sizeof(addr)) != 0) { ::close(mSocket); mSocket = -1; } } } ~TestSocketClient() { close(); } bool isConnected() const { return mSocket >= 0; } bool send(const std::string& data) { if (!isConnected()) { return false; } return ::send(mSocket, data.c_str(), data.size(), 0) >= 0; } bool send(const void* data, size_t size) { if (!isConnected()) { return false; } return ::send(mSocket, data, size, 0) >= 0; } ssize_t receive(void* buffer, size_t size, int flags = 0) { if (!isConnected()) { return -1; } return recv(mSocket, buffer, size, flags); } void close() { if (mSocket >= 0) { ::close(mSocket); mSocket = -1; } } TestSocketClient(const TestSocketClient&) = delete; TestSocketClient& operator=(const TestSocketClient&) = delete; }; std::unique_ptr sendPetition(ComunicationsManagerFileSockets &manager, TestSocketClient &client, const std::string &data) { std::promise waitStarted; auto waitStartedFuture = waitStarted.get_future(); std::thread waitThread([&manager, &waitStarted]() { waitStarted.set_value(); manager.waitForPetition(); }); // Wait for waitForPetition to start waitStartedFuture.wait(); if (!client.send(data)) { waitThread.join(); return nullptr; } // Poll for petition availability instead of fixed sleep constexpr int maxAttempts = 10; for (int i = 0; i < maxAttempts; i++) { if (manager.receivedPetition()) { auto petition = manager.getPetition(); waitThread.join(); return petition; } std::this_thread::sleep_for(10ms); } waitThread.join(); return nullptr; } #ifdef __MACH__ // On macOS, MSG_NOSIGNAL doesn't work, so we need to ignore SIGPIPE // to prevent the process from being killed when writing to closed socket struct sigaction ignoreSigpipeAndGetOldHandler() { struct sigaction sa, oldSa; sa.sa_handler = SIG_IGN; sigemptyset(&sa.sa_mask); sa.sa_flags = 0; sigaction(SIGPIPE, &sa, &oldSa); return oldSa; } void restoreSigpipeHandler(const struct sigaction& oldSa) { sigaction(SIGPIPE, &oldSa, nullptr); } #endif class ComunicationsManagerFileSocketsTest : public ::testing::Test { protected: void SetUp() override { TestInstruments::Instance().clearAll(); } void TearDown() override { TestInstruments::Instance().clearAll(); } }; class ComunicationsManagerFileSocketsWithClientTest : public ComunicationsManagerFileSocketsTest { protected: ComunicationsManagerFileSockets mManager; std::unique_ptr mClient; void SetUp() override { ComunicationsManagerFileSocketsTest::SetUp(); mClient = std::make_unique(); ASSERT_TRUE(mClient->isConnected()); } }; TEST_F(ComunicationsManagerFileSocketsTest, InitializeSuccess) { ComunicationsManagerFileSockets manager; int result = manager.initialize(); EXPECT_EQ(result, 0); } TEST_F(ComunicationsManagerFileSocketsTest, InitializeWithLongSocketPath) { std::string longName(300, 'a'); auto guard = TestInstrumentsEnvVarGuard("MEGACMD_SOCKET_NAME", longName); ComunicationsManagerFileSockets manager; int result = manager.initialize(); EXPECT_EQ(result, -1); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, GetPetitionReadsData) { std::string testData = "test command"; auto petition = sendPetition(mManager, *mClient, testData); ASSERT_NE(petition, nullptr); EXPECT_EQ(petition->getLine(), testData); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, GetPetitionReadsLargeData) { std::string largeData(2048, 'A'); auto petition = sendPetition(mManager, *mClient, largeData); ASSERT_NE(petition, nullptr); EXPECT_EQ(petition->getLine(), largeData); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, ReturnAndClosePetitionSendsData) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); OUTSTRINGSTREAM response; response << "response data"; mManager.returnAndClosePetition(std::move(petition), &response, 0); int outCode = MCMD_OK; ssize_t n = mClient->receive(&outCode, sizeof(outCode)); ASSERT_GT(n, 0); EXPECT_EQ(outCode, 0); char buffer[1024]; n = mClient->receive(buffer, sizeof(buffer) - 1); ASSERT_GT(n, 0); buffer[n] = '\0'; EXPECT_STREQ(buffer, "response data"); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, ReturnAndClosePetitionWithEmptyResponse) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); OUTSTRINGSTREAM response; response << ""; mManager.returnAndClosePetition(std::move(petition), &response, 42); int outCode = MCMD_OK; ssize_t n = mClient->receive(&outCode, sizeof(outCode)); ASSERT_GT(n, 0); EXPECT_EQ(outCode, 42); char buffer[64]; n = mClient->receive(buffer, sizeof(buffer), MSG_DONTWAIT); EXPECT_LE(n, 0); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, SendPartialOutput) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); std::string partialData = "partial output"; mManager.sendPartialOutput(petition.get(), partialData.data(), partialData.size(), false); int outCode = MCMD_OK; mClient->receive(&outCode, sizeof(outCode)); EXPECT_EQ(outCode, MCMD_PARTIALOUT); size_t size = 0; mClient->receive(&size, sizeof(size)); EXPECT_EQ(size, partialData.size()); char buffer[1024]; ssize_t n = mClient->receive(buffer, size); ASSERT_GT(n, 0); buffer[size] = '\0'; EXPECT_STREQ(buffer, partialData.c_str()); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, SendPartialError) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); std::string errorData = "error message"; mManager.sendPartialError(petition.get(), errorData.data(), errorData.size(), false); int outCode = MCMD_OK; mClient->receive(&outCode, sizeof(outCode)); EXPECT_EQ(outCode, MCMD_PARTIALERR); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, SendPartialOutputHandlesEPIPE) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); mClient->close(); #ifdef __MACH__ auto oldSa = ignoreSigpipeAndGetOldHandler(); #endif std::string data = "test data"; mManager.sendPartialOutput(petition.get(), data.data(), data.size(), false); EXPECT_TRUE(petition->clientDisconnected); #ifdef __MACH__ restoreSigpipeHandler(oldSa); #endif } TEST_F(ComunicationsManagerFileSocketsWithClientTest, SendPartialOutputValidatesUTF8) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); char invalidUtf8[] = "\xC0\x80"; mManager.sendPartialOutput(petition.get(), invalidUtf8, 2, false); // Invalid UTF-8 must not be sent. char buffer[64]; ssize_t n = mClient->receive(buffer, sizeof(buffer), MSG_DONTWAIT); EXPECT_LE(n, 0); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, RegisterStateListener) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); auto listener = mManager.registerStateListener(std::move(petition)); EXPECT_NE(listener, nullptr); } TEST_F(ComunicationsManagerFileSocketsTest, GetMaxStateListeners) { ComunicationsManagerFileSockets manager; int maxListeners = manager.getMaxStateListeners(); EXPECT_GT(maxListeners, 0); EXPECT_LE(maxListeners, FD_SETSIZE); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, InformStateListener) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); auto listener = mManager.registerStateListener(std::move(petition)); ASSERT_NE(listener, nullptr); std::string message = "state update"; int result = mManager.informStateListener(listener, message); EXPECT_EQ(result, 0); char buffer[1024]; ssize_t n = mClient->receive(buffer, sizeof(buffer) - 1, MSG_DONTWAIT); EXPECT_GT(n, 0); buffer[n] = '\0'; EXPECT_STREQ(buffer, message.c_str()); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, InformStateListenerHandlesEPIPE) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); auto listener = mManager.registerStateListener(std::move(petition)); mClient->close(); #ifdef __MACH__ auto oldSa = ignoreSigpipeAndGetOldHandler(); #endif std::string message = "state update"; int result = mManager.informStateListener(listener, message); EXPECT_EQ(result, -1); #ifdef __MACH__ restoreSigpipeHandler(oldSa); #endif } TEST_F(ComunicationsManagerFileSocketsWithClientTest, InformStateListenerValidatesUTF8) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); auto listener = mManager.registerStateListener(std::move(petition)); std::string invalidUtf8 = "\xC0\x80"; int result = mManager.informStateListener(listener, invalidUtf8); EXPECT_EQ(result, 0); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, GetConfirmation) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); std::thread responseThread([this]() { int outCode = MCMD_OK; mClient->receive(&outCode, sizeof(outCode)); EXPECT_EQ(outCode, MCMD_REQCONFIRM); char buffer[1024]; mClient->receive(buffer, sizeof(buffer) - 1); int response = 1; mClient->send(&response, sizeof(response)); }); std::string message = "Confirm action?"; int result = mManager.getConfirmation(petition.get(), message); responseThread.join(); EXPECT_EQ(result, 1); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, GetUserResponse) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); std::thread responseThread([this]() { int outCode = MCMD_OK; mClient->receive(&outCode, sizeof(outCode)); EXPECT_EQ(outCode, MCMD_REQSTRING); char buffer[1024]; mClient->receive(buffer, sizeof(buffer) - 1); std::string response = "user input"; mClient->send(response); }); std::string message = "Enter value:"; std::string result = mManager.getUserResponse(petition.get(), message); responseThread.join(); EXPECT_EQ(result, "user input"); } TEST_F(ComunicationsManagerFileSocketsWithClientTest, GetUserResponseLargeData) { auto petition = sendPetition(mManager, *mClient, "test"); ASSERT_NE(petition, nullptr); std::thread responseThread([this]() { int outCode = MCMD_OK; mClient->receive(&outCode, sizeof(outCode)); EXPECT_EQ(outCode, MCMD_REQSTRING); char buffer[1024]; mClient->receive(buffer, sizeof(buffer) - 1); std::string largeResponse(3000, 'A'); mClient->send(largeResponse); }); std::string message = "Enter value:"; std::string result = mManager.getUserResponse(petition.get(), message); responseThread.join(); EXPECT_EQ(result, std::string(3000, 'A')); } TEST_F(ComunicationsManagerFileSocketsTest, StopWaiting) { ComunicationsManagerFileSockets manager; manager.stopWaiting(); } TEST_F(ComunicationsManagerFileSocketsTest, StressMultipleConcurrentClients) { ComunicationsManagerFileSockets manager; constexpr int numClients = 20; std::vector> clients; std::vector threads; std::atomic successCount{0}; for (int i = 0; i < numClients; i++) { clients.push_back(std::make_unique()); ASSERT_TRUE(clients.back()->isConnected()); } std::thread waitThread([&manager]() { for (int i = 0; i < 20; i++) { manager.waitForPetition(); std::this_thread::sleep_for(10ms); } }); waitThread.detach(); for (int i = 0; i < numClients; i++) { threads.emplace_back([&clients, i]() { std::string testData = "test command " + std::to_string(i); clients[i]->send(testData); }); } for (auto& t : threads) { t.join(); } constexpr int maxAttempts = 50; for (int i = 0; i < maxAttempts && successCount < numClients; i++) { if (manager.receivedPetition()) { auto petition = manager.getPetition(); if (petition != nullptr && !petition->getLine().empty()) { successCount++; } } std::this_thread::sleep_for(10ms); } EXPECT_EQ(successCount.load(), numClients); } TEST_F(ComunicationsManagerFileSocketsTest, StressMaxStateListeners) { ComunicationsManagerFileSockets manager; int maxListeners = manager.getMaxStateListeners(); EXPECT_GT(maxListeners, 0); constexpr int testListeners = 10; std::vector> clients; std::vector listeners; int registeredCount = 0; std::thread waitThread([&manager]() { for (int i = 0; i < testListeners; i++) { manager.waitForPetition(); std::this_thread::sleep_for(5ms); } }); waitThread.detach(); for (int i = 0; i < testListeners; i++) { clients.push_back(std::make_unique()); ASSERT_TRUE(clients.back()->isConnected()); clients.back()->send("test"); } // Poll for petitions with timeout constexpr int maxAttempts = 50; for (int attempt = 0; attempt < maxAttempts && registeredCount < testListeners; attempt++) { if (manager.receivedPetition()) { if (auto petition = manager.getPetition(); petition != nullptr) { if (auto listener = manager.registerStateListener(std::move(petition)); listener != nullptr) { listeners.push_back(listener); registeredCount++; } } } std::this_thread::sleep_for(10ms); } EXPECT_EQ(registeredCount, testListeners); } TEST_F(ComunicationsManagerFileSocketsTest, StressConcurrentPartialOutputs) { ComunicationsManagerFileSockets manager; constexpr int numClients = 20; std::vector> clients; std::vector> petitions; for (int i = 0; i < numClients; i++) { clients.push_back(std::make_unique()); } std::thread waitThread([&manager]() { for (int i = 0; i < numClients; i++) { manager.waitForPetition(); std::this_thread::sleep_for(10ms); } }); waitThread.detach(); for (int i = 0; i < numClients; i++) { ASSERT_TRUE(clients[i]->isConnected()); clients[i]->send("test"); } // Poll for petitions with timeout constexpr int maxAttempts = 50; for (int attempt = 0; attempt < maxAttempts && petitions.size() < numClients; attempt++) { if (manager.receivedPetition()) { if (auto petition = manager.getPetition(); petition != nullptr) { petitions.push_back(std::move(petition)); } } std::this_thread::sleep_for(10ms); } EXPECT_EQ(petitions.size(), numClients); std::vector threads; std::atomic successCount{0}; for (size_t i = 0; i < petitions.size(); i++) { threads.emplace_back([&manager, &petitions, i, &successCount]() { std::string data = "partial output " + std::to_string(i); manager.sendPartialOutput(petitions[i].get(), data.data(), data.size(), false); successCount++; }); } for (auto& t : threads) { t.join(); } EXPECT_EQ(successCount.load(), static_cast(petitions.size())); } TEST_F(ComunicationsManagerFileSocketsTest, StressRapidConnectDisconnect) { constexpr int expectedPetitionCount = 30; ComunicationsManagerFileSockets manager; std::thread waitThread([&manager, expectedPetitionCount]() { for (int i = 0; i < expectedPetitionCount; i++) { manager.waitForPetition(); std::this_thread::sleep_for(5ms); } }); waitThread.detach(); // Small delay to ensure waitThread is running std::this_thread::sleep_for(10ms); for (int i = 0; i < expectedPetitionCount; i++) { TestSocketClient client; ASSERT_TRUE(client.isConnected()); client.send("test " + std::to_string(i)); client.close(); std::this_thread::sleep_for(5ms); } // Poll for petitions with timeout int receivedCount = 0; constexpr int maxAttempts = 50; for (int attempt = 0; attempt < maxAttempts && receivedCount < expectedPetitionCount; attempt++) { if (manager.receivedPetition()) { if (auto petition = manager.getPetition(); petition != nullptr) { receivedCount++; } } std::this_thread::sleep_for(10ms); } EXPECT_EQ(receivedCount, expectedPetitionCount); } TEST_F(ComunicationsManagerFileSocketsTest, StressLargeDataMultipleClients) { ComunicationsManagerFileSockets manager; constexpr int numClients = 10; std::vector> clients; for (int i = 0; i < numClients; i++) { clients.push_back(std::make_unique()); } std::thread waitThread([&manager]() { for (int i = 0; i < numClients; i++) { manager.waitForPetition(); std::this_thread::sleep_for(10ms); } }); waitThread.detach(); for (int i = 0; i < numClients; i++) { ASSERT_TRUE(clients[i]->isConnected()); std::string largeData(5000, static_cast('A' + i)); clients[i]->send(largeData); } // Poll for petitions with timeout (larger timeout for large data) int successCount = 0; constexpr int maxAttempts = 150; for (int attempt = 0; attempt < maxAttempts && successCount < numClients; attempt++) { if (manager.receivedPetition()) { if (auto petition = manager.getPetition(); petition != nullptr) { // Try to match with expected data for (int i = 0; i < numClients; i++) { std::string expected(5000, static_cast('A' + i)); if (petition->getLine() == expected) { successCount++; break; } } } } std::this_thread::sleep_for(10ms); } EXPECT_EQ(successCount, numClients); } #endif // _WIN32 MEGAcmd-2.5.2_Linux/tests/unit/OptionsFlagsUtilsTests.cpp000066400000000000000000000505361516543156300234170ustar00rootroot00000000000000/** * (c) 2025 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include #include #include #include #include "TestUtils.h" TEST(OptionsFlagsUtilsTest, getFlag) { using megacmd::getFlag; G_SUBTEST << "Basic case"; { std::map flags = {{"verbose", 1}, {"debug", 0}}; EXPECT_EQ(getFlag(&flags, "verbose"), 1); EXPECT_EQ(getFlag(&flags, "debug"), 0); } G_SUBTEST << "Flag does not exist"; { std::map flags = {{"verbose", 1}}; EXPECT_EQ(getFlag(&flags, "nonexistent"), 0); } G_SUBTEST << "Empty map"; { std::map flags; EXPECT_EQ(getFlag(&flags, "verbose"), 0); } G_SUBTEST << "Negative flag value"; { std::map flags = {{"flag", -1}}; EXPECT_EQ(getFlag(&flags, "flag"), -1); } G_SUBTEST << "Large flag value"; { std::map flags = {{"flag", 1000}}; EXPECT_EQ(getFlag(&flags, "flag"), 1000); } G_SUBTEST << "Multiple flags"; { std::map flags = {{"a", 1}, {"b", 2}, {"c", 3}}; EXPECT_EQ(getFlag(&flags, "a"), 1); EXPECT_EQ(getFlag(&flags, "b"), 2); EXPECT_EQ(getFlag(&flags, "c"), 3); } G_SUBTEST << "Empty flag name"; { std::map flags = {{"", 5}}; EXPECT_EQ(getFlag(&flags, ""), 5); } G_SUBTEST << "Long flag name"; { std::string longName(1000, 'a'); std::map flags = {{longName, 42}}; EXPECT_EQ(getFlag(&flags, longName.c_str()), 42); } } TEST(OptionsFlagsUtilsTest, getOption) { using megacmd::getOption; G_SUBTEST << "Basic case"; { std::map options = {{"path", "/tmp"}, {"name", "test"}}; EXPECT_EQ(getOption(&options, "path"), "/tmp"); EXPECT_EQ(getOption(&options, "name"), "test"); } G_SUBTEST << "Option does not exist"; { std::map options = {{"path", "/tmp"}}; EXPECT_EQ(getOption(&options, "nonexistent"), ""); } G_SUBTEST << "Custom default value"; { std::map options = {{"path", "/tmp"}}; EXPECT_EQ(getOption(&options, "nonexistent", "default"), "default"); } G_SUBTEST << "Empty option value"; { std::map options = {{"empty", ""}}; EXPECT_EQ(getOption(&options, "empty"), ""); } G_SUBTEST << "Empty map"; { std::map options; EXPECT_EQ(getOption(&options, "path"), ""); } G_SUBTEST << "Long option value"; { std::string longValue(1000, 'a'); std::map options = {{"long", longValue}}; EXPECT_EQ(getOption(&options, "long"), longValue); } G_SUBTEST << "Option with special characters"; { std::map options = {{"path", "/tmp/file with spaces.txt"}}; EXPECT_EQ(getOption(&options, "path"), "/tmp/file with spaces.txt"); } G_SUBTEST << "Option with unicode"; { std::string unicodeValue = u8"\u043F\u0440\u0438\u0432\u0435\u0442"; std::map options = {{"unicode", unicodeValue}}; EXPECT_EQ(getOption(&options, "unicode"), unicodeValue); } G_SUBTEST << "Empty option name"; { std::map options = {{"", "value"}}; EXPECT_EQ(getOption(&options, ""), "value"); } G_SUBTEST << "Multiple options"; { std::map options = {{"a", "1"}, {"b", "2"}, {"c", "3"}}; EXPECT_EQ(getOption(&options, "a"), "1"); EXPECT_EQ(getOption(&options, "b"), "2"); EXPECT_EQ(getOption(&options, "c"), "3"); } } TEST(OptionsFlagsUtilsTest, getOptionAsOptional) { using megacmd::getOptionAsOptional; G_SUBTEST << "Basic case"; { std::map options = {{"path", "/tmp"}}; auto result = getOptionAsOptional(options, "path"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, "/tmp"); } G_SUBTEST << "Option does not exist"; { std::map options = {{"path", "/tmp"}}; auto result = getOptionAsOptional(options, "nonexistent"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Empty map"; { std::map options; auto result = getOptionAsOptional(options, "path"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Empty option value"; { std::map options = {{"empty", ""}}; auto result = getOptionAsOptional(options, "empty"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, ""); } G_SUBTEST << "Long option value"; { std::string longValue(1000, 'a'); std::map options = {{"long", longValue}}; auto result = getOptionAsOptional(options, "long"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, longValue); } G_SUBTEST << "Option with special characters"; { std::map options = {{"path", "/tmp/file.txt"}}; auto result = getOptionAsOptional(options, "path"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, "/tmp/file.txt"); } G_SUBTEST << "Empty option name"; { std::map options = {{"", "value"}}; auto result = getOptionAsOptional(options, ""); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, "value"); } } TEST(OptionsFlagsUtilsTest, getintOption) { using megacmd::getintOption; G_SUBTEST << "Basic case"; { std::map options = {{"timeout", "30"}, {"port", "8080"}}; EXPECT_EQ(getintOption(&options, "timeout"), 30); EXPECT_EQ(getintOption(&options, "port"), 8080); } G_SUBTEST << "Invalid integer option"; { std::map options = {{"timeout", "abc"}}; EXPECT_EQ(getintOption(&options, "timeout"), 0); } G_SUBTEST << "Option does not exist"; { std::map options = {{"timeout", "30"}}; EXPECT_EQ(getintOption(&options, "nonexistent"), 0); } G_SUBTEST << "Custom default value"; { std::map options = {{"timeout", "30"}}; EXPECT_EQ(getintOption(&options, "nonexistent", 42), 42); } G_SUBTEST << "Negative integer"; { std::map options = {{"value", "-10"}}; EXPECT_EQ(getintOption(&options, "value"), -10); } G_SUBTEST << "Zero value"; { std::map options = {{"value", "0"}}; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "INT_MAX value"; { std::map options = {{"value", "2147483647"}}; EXPECT_EQ(getintOption(&options, "value"), INT_MAX); } G_SUBTEST << "INT_MIN value"; { std::map options = {{"value", "-2147483648"}}; EXPECT_EQ(getintOption(&options, "value"), INT_MIN); } G_SUBTEST << "Number exceeding INT_MAX"; { std::map options = {{"value", "2147483648"}}; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "Number below INT_MIN"; { std::map options = {{"value", "-2147483649"}}; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "Integer with leading spaces"; { std::map options = {{"value", " 123"}}; EXPECT_EQ(getintOption(&options, "value"), 123); } G_SUBTEST << "Integer with trailing spaces"; { std::map options = {{"value", "123 "}}; EXPECT_EQ(getintOption(&options, "value"), 123); } G_SUBTEST << "Integer with spaces on both sides"; { std::map options = {{"value", " 123 "}}; EXPECT_EQ(getintOption(&options, "value"), 123); } G_SUBTEST << "Partial integer string"; { std::map options = {{"value", "123abc"}}; EXPECT_EQ(getintOption(&options, "value"), 123); } G_SUBTEST << "Empty string"; { std::map options = {{"value", ""}}; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "Empty map"; { std::map options; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "Custom default with invalid option"; { std::map options = {{"value", "invalid"}}; EXPECT_EQ(getintOption(&options, "value", 99), 99); } G_SUBTEST << "Custom default with empty string"; { std::map options = {{"value", ""}}; EXPECT_EQ(getintOption(&options, "value", 99), 99); } G_SUBTEST << "Custom default with spaces"; { std::map options = {{"value", " 123 "}}; EXPECT_EQ(getintOption(&options, "value", 99), 123); } G_SUBTEST << "Very large int number string"; { std::map options = {{"value", "999999999999999999999"}}; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "Very large negative int number string"; { std::map options = {{"value", "-999999999999999999999"}}; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "String with only spaces"; { std::map options = {{"value", " "}}; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "String starting with non-digit"; { std::map options = {{"value", "abc123"}}; EXPECT_EQ(getintOption(&options, "value"), 0); } G_SUBTEST << "String with special characters"; { std::map options = {{"value", "12@34"}}; EXPECT_EQ(getintOption(&options, "value"), 12); } } TEST(OptionsFlagsUtilsTest, getIntOptional) { using megacmd::getIntOptional; G_SUBTEST << "Basic case"; { std::map options = {{"timeout", "30"}, {"port", "8080"}}; auto result = getIntOptional(options, "timeout"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 30); result = getIntOptional(options, "port"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 8080); } G_SUBTEST << "Invalid integer option"; { std::map options = {{"timeout", "abc"}}; auto result = getIntOptional(options, "timeout"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Option does not exist"; { std::map options = {{"timeout", "30"}}; auto result = getIntOptional(options, "nonexistent"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Empty map"; { std::map options; auto result = getIntOptional(options, "timeout"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Negative integer"; { std::map options = {{"value", "-10"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, -10); } G_SUBTEST << "Zero value"; { std::map options = {{"value", "0"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 0); } G_SUBTEST << "INT_MAX value"; { std::map options = {{"value", "2147483647"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, INT_MAX); } G_SUBTEST << "INT_MIN value"; { std::map options = {{"value", "-2147483648"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, INT_MIN); } G_SUBTEST << "Number exceeding INT_MAX"; { std::map options = {{"value", "2147483648"}}; auto result = getIntOptional(options, "value"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Number below INT_MIN"; { std::map options = {{"value", "-2147483649"}}; auto result = getIntOptional(options, "value"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Partial integer string"; { std::map options = {{"value", "123abc"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 123); } G_SUBTEST << "Empty string"; { std::map options = {{"value", ""}}; auto result = getIntOptional(options, "value"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Integer with leading spaces"; { std::map options = {{"value", " 123"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 123); } G_SUBTEST << "Integer with trailing spaces"; { std::map options = {{"value", "123 "}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 123); } G_SUBTEST << "Integer with spaces on both sides"; { std::map options = {{"value", " 123 "}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 123); } G_SUBTEST << "Very large number string"; { std::map options = {{"value", "999999999999999999999"}}; auto result = getIntOptional(options, "value"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "Very large negative number string"; { std::map options = {{"value", "-999999999999999999999"}}; auto result = getIntOptional(options, "value"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "String with only spaces"; { std::map options = {{"value", " "}}; auto result = getIntOptional(options, "value"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "String starting with non-digit"; { std::map options = {{"value", "abc123"}}; auto result = getIntOptional(options, "value"); EXPECT_FALSE(result.has_value()); } G_SUBTEST << "String with special characters"; { std::map options = {{"value", "12@34"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 12); } G_SUBTEST << "Positive number with plus sign"; { std::map options = {{"value", "+123"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 123); } G_SUBTEST << "Single digit"; { std::map options = {{"value", "5"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 5); } G_SUBTEST << "Large positive number within range"; { std::map options = {{"value", "1000000"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, 1000000); } G_SUBTEST << "Large negative number within range"; { std::map options = {{"value", "-1000000"}}; auto result = getIntOptional(options, "value"); ASSERT_TRUE(result.has_value()); EXPECT_EQ(*result, -1000000); } } TEST(OptionsFlagsUtilsTest, discardOptionsAndFlags) { using megacmd::discardOptionsAndFlags; G_SUBTEST << "Basic case"; { std::vector words = {"cmd", "-v", "--path=/tmp", "arg1"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "No options or flags"; { std::vector words = {"cmd", "arg1", "arg2"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1", "arg2"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Only options and flags"; { std::vector words = {"-v", "--path=/tmp"}; discardOptionsAndFlags(&words); std::vector expected = {}; EXPECT_EQ(words, expected); } G_SUBTEST << "Empty vector"; { std::vector words; discardOptionsAndFlags(&words); std::vector expected = {}; EXPECT_EQ(words, expected); } G_SUBTEST << "Single dash"; { std::vector words = {"cmd", "-", "arg1"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Double dash flag"; { std::vector words = {"cmd", "--flag", "arg1"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Multiple flags"; { std::vector words = {"cmd", "-a", "-b", "-c", "arg1"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Mixed flags and options"; { std::vector words = {"cmd", "-v", "--path=/tmp", "--name=test", "arg1", "arg2"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1", "arg2"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Flags at the end"; { std::vector words = {"cmd", "arg1", "-v"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Flags at the beginning"; { std::vector words = {"-v", "--path=/tmp", "cmd", "arg1"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Consecutive flags"; { std::vector words = {"cmd", "-a", "-b", "-c", "arg1"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Long flag name"; { std::vector words = {"cmd", "--very-long-flag-name", "arg1"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Option with empty value"; { std::vector words = {"cmd", "--option=", "arg1"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd", "arg1"}; EXPECT_EQ(words, expected); } G_SUBTEST << "Only command"; { std::vector words = {"cmd"}; discardOptionsAndFlags(&words); std::vector expected = {"cmd"}; EXPECT_EQ(words, expected); } } MEGAcmd-2.5.2_Linux/tests/unit/PlatformDirectoriesTests.cpp000066400000000000000000000473251516543156300237510ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include #include "Instruments.h" #include "TestUtils.h" #include "configurationmanager.h" TEST(PlatformDirectoriesTest, runtimeDirPath) { using megacmd::ConfigurationManager; using megacmd::PlatformDirectories; auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); ASSERT_TRUE(dirs != nullptr); #ifndef __APPLE__ EXPECT_EQ(dirs->runtimeDirPath(), dirs->configDirPath()); #endif #ifndef _WIN32 G_SUBTEST << "Non existing HOME folder"; { auto homeGuard = TestInstrumentsEnvVarGuard("HOME", "/non-existent-dir"); EXPECT_STREQ(dirs->runtimeDirPath().c_str(), megacmd::PosixDirectories::noHomeFallbackFolder().c_str()); ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } G_SUBTEST << "Empty HOME folder"; { auto homeGuard = TestInstrumentsEnvVarGuard("HOME", ""); EXPECT_STREQ(dirs->runtimeDirPath().c_str(), megacmd::PosixDirectories::noHomeFallbackFolder().c_str()); ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } #ifdef __APPLE__ G_SUBTEST << "Existing HOME folder (macOS)"; { SelfDeletingTmpFolder tmpFolder; auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); fs::create_directories(tmpFolder.path() / "Library" / "Caches"); EXPECT_STREQ(dirs->runtimeDirPath().c_str(), tmpFolder.string().append("/Library/Caches/megacmd.mac").c_str()); ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } #else G_SUBTEST << "Existing HOME folder"; { auto homeGuard = TestInstrumentsEnvVarGuard("HOME", "/tmp"); EXPECT_EQ(dirs->runtimeDirPath(), "/tmp/.megaCmd"); ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } #endif G_SUBTEST << "Existing non-ascii HOME folder"; { SelfDeletingTmpFolder tmpFolder("file_\u5f20\u4e09"); #ifdef __APPLE__ fs::path runtimeFolder = tmpFolder.path() / "Library" / "Caches" / "megacmd.mac"; fs::create_directories(runtimeFolder); #else fs::path runtimeFolder = tmpFolder.path() / ".megaCmd"; #endif auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); EXPECT_EQ(dirs->runtimeDirPath().string(), runtimeFolder.string()); ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } #ifdef __APPLE__ G_SUBTEST << "HOME exists but Library/Caches does not exist"; { SelfDeletingTmpFolder tmpFolder; auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); fs::path runtimePath = dirs->runtimeDirPath(); EXPECT_EQ(runtimePath.string(), megacmd::PosixDirectories::noHomeFallbackFolder()); } G_SUBTEST << "HOME exists but Library/Caches is not a directory"; { SelfDeletingTmpFolder tmpFolder; fs::path cachesFile = tmpFolder.path() / "Library" / "Caches"; fs::create_directories(cachesFile.parent_path()); std::ofstream(cachesFile) << "not a directory"; auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); fs::path runtimePath = dirs->runtimeDirPath(); EXPECT_EQ(runtimePath.string(), megacmd::PosixDirectories::noHomeFallbackFolder()); } #endif #endif } TEST(PlatformDirectoriesTest, configDirPath) { using megacmd::ConfigurationManager; using megacmd::PlatformDirectories; auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); ASSERT_TRUE(dirs != nullptr); #ifdef _WIN32 G_SUBTEST << "With $MEGACMD_WORKING_FOLDER_SUFFIX"; { auto guard = TestInstrumentsEnvVarGuard("MEGACMD_WORKING_FOLDER_SUFFIX", "foobar"); EXPECT_THAT(dirs->configDirPath().wstring(), testing::EndsWith(L".megaCmd_foobar")); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(dirs->configDirPath() / "session")); } G_SUBTEST << "Without $MEGACMD_WORKING_FOLDER_SUFFIX"; { auto guard = TestInstrumentsUnsetEnvVarGuard("MEGACMD_WORKING_FOLDER_SUFFIX"); EXPECT_THAT(dirs->configDirPath().wstring(), testing::EndsWith(L".megaCmd")); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(dirs->configDirPath() / "session")); } G_SUBTEST << "With non-ascii $MEGACMD_WORKING_FOLDER_SUFFIX"; { auto guard = TestInstrumentsEnvVarGuardW(L"MEGACMD_WORKING_FOLDER_SUFFIX", L"file_\u5f20\u4e09"); EXPECT_THAT(dirs->configDirPath().wstring(), testing::EndsWith(L"file_\u5f20\u4e09")); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(dirs->configDirPath() / "session")); } G_SUBTEST << "With path length exceeding MAX_PATH"; { // To reach maximum length for the folder path; since len(".megaCmd_")=9, and 9+246=255 // Full path can exceed MAX_PATH=260, but each individual file or folder must have length < 255 constexpr int suffixLength = 246; const std::string suffix = megacmd::generateRandomAlphaNumericString(suffixLength); auto guard = TestInstrumentsEnvVarGuard("MEGACMD_WORKING_FOLDER_SUFFIX", suffix); const fs::path configDir = dirs->configDirPath(); EXPECT_THAT(configDir.string(), testing::EndsWith(suffix)); EXPECT_THAT(configDir.string(), testing::StartsWith(R"(\\?\)")); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(configDir / "session")); // This would throw an exception without the \\?\ prefix SelfDeletingTmpFolder tmpFolder(configDir); } #else G_SUBTEST << "With alternative existing HOME"; { auto homeGuard = TestInstrumentsEnvVarGuard("HOME", "/tmp"); EXPECT_EQ(dirs->configDirPath().string(), "/tmp/.megaCmd"); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(dirs->configDirPath() / "session")); } G_SUBTEST << "With alternative existing non-ascii HOME"; { SelfDeletingTmpFolder tmpFolder("file_\u5f20\u4e09"); fs::path configFolder = tmpFolder.path() / ".megaCmd"; auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); EXPECT_EQ(dirs->configDirPath().string(), configFolder.string()); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(dirs->configDirPath() / "session")); } G_SUBTEST << "With alternative NON existing HOME"; { auto homeGuard = TestInstrumentsEnvVarGuard("HOME", "/non-existent-dir"); EXPECT_EQ(dirs->configDirPath().string(), megacmd::PosixDirectories::noHomeFallbackFolder()); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(dirs->configDirPath() / "session")); } G_SUBTEST << "HOME exists but is not a directory"; { SelfDeletingTmpFolder tmpFolder; fs::path homeFile = tmpFolder.path() / "home_file"; std::ofstream(homeFile) << "not a directory"; auto homeGuard = TestInstrumentsEnvVarGuard("HOME", homeFile.string()); fs::path configPath = dirs->configDirPath(); EXPECT_EQ(configPath.string(), megacmd::PosixDirectories::noHomeFallbackFolder()); } G_SUBTEST << "Correct 0700 permissions"; { using megacmd::ConfigurationManager; using megacmd::ScopeGuard; const mode_t oldUmask = umask(0); ScopeGuard g([oldUmask] { umask(oldUmask); }); SelfDeletingTmpFolder tmpFolder; const fs::path dirPath = tmpFolder.path() / "some_folder"; ConfigurationManager::createFolderIfNotExisting(dirPath); struct stat info; EXPECT_EQ(stat(dirPath.c_str(), &info), 0); EXPECT_TRUE(S_ISDIR(info.st_mode)); const mode_t actualPerms = info.st_mode & 0777; const mode_t expectedPerms = 0700; EXPECT_EQ(actualPerms, expectedPerms); } G_SUBTEST << "Very long path"; { SelfDeletingTmpFolder tmpFolder(std::string(250, 'a')); auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); fs::path configPath = dirs->configDirPath(); EXPECT_FALSE(configPath.empty()); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(configPath / "session")); } G_SUBTEST << "Path with special characters"; { #ifdef _WIN32 SelfDeletingTmpFolder tmpFolder("test!@#$%^&()_+-=[]{};',."); #else SelfDeletingTmpFolder tmpFolder("test@#$%^&*()_+-=[]{}|;':\",.<>?"); #endif auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); fs::path configPath = dirs->configDirPath(); EXPECT_FALSE(configPath.empty()); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(configPath / "session")); } G_SUBTEST << "Path with spaces"; { SelfDeletingTmpFolder tmpFolder("test folder with spaces"); auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); fs::path configPath = dirs->configDirPath(); EXPECT_FALSE(configPath.empty()); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(configPath / "session")); } #ifndef _WIN32 G_SUBTEST << "Path with newlines and tabs"; { SelfDeletingTmpFolder tmpFolder("test\n\tfolder"); auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); fs::path configPath = dirs->configDirPath(); EXPECT_FALSE(configPath.empty()); ConfigurationManager::saveSession("test_session_data"); EXPECT_TRUE(fs::is_regular_file(configPath / "session")); } #endif #endif } TEST(PlatformDirectoriesTest, lockExecution) { using megacmd::ConfigurationManager; using megacmd::PlatformDirectories; G_SUBTEST << "With default paths"; { ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } #ifndef _WIN32 auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); G_SUBTEST << "With legacy one"; { auto legacyLockFolder = ConfigurationManager::getConfigFolder(); if (dirs->runtimeDirPath() != legacyLockFolder) { EXPECT_STRNE(dirs->runtimeDirPath().c_str(), legacyLockFolder.c_str()); ASSERT_TRUE(ConfigurationManager::lockExecution(legacyLockFolder)); ASSERT_FALSE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution(legacyLockFolder)); // All good after that ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } else { G_TEST_INFO << "LEGACY path is the same as runtime one. All good."; } } G_SUBTEST << "Double lock fails"; { ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_FALSE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } G_SUBTEST << "Unlock without lock"; { ConfigurationManager::unlockExecution(); ASSERT_FALSE(ConfigurationManager::unlockExecution()); } G_SUBTEST << "Lock after unlock"; { ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } G_SUBTEST << "Lock with very long path"; { SelfDeletingTmpFolder tmpFolder("this_is_a_very_very_very_lengthy_folder_name_meant_to_test_lock_with_long_path"); #ifdef __APPLE__ fs::create_directories(tmpFolder.path() / "Library" / "Caches"); #endif auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } G_SUBTEST << "Lock with special characters in path"; { #ifdef _WIN32 SelfDeletingTmpFolder tmpFolder("test!@#$%^&()_+-=[]{};',."); #else SelfDeletingTmpFolder tmpFolder("test@#$%^&*()_+-=[]{}|;':\",.<>?"); #endif #ifdef __APPLE__ fs::create_directories(tmpFolder.path() / "Library" / "Caches"); #endif auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); ASSERT_TRUE(ConfigurationManager::lockExecution()); ASSERT_TRUE(ConfigurationManager::unlockExecution()); } #endif } #ifndef _WIN32 TEST(PlatformDirectoriesTest, getOrCreateSocketPath) { using megacmd::getOrCreateSocketPath; using megacmd::PlatformDirectories; auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); G_SUBTEST << "With $MEGACMD_SOCKET_NAME (normal or fallback case)"; { auto guard = TestInstrumentsEnvVarGuard("MEGACMD_SOCKET_NAME", "test.sock"); auto socketPath = getOrCreateSocketPath(false); auto expectedNormalFile = (dirs->runtimeDirPath() / "test.sock").string(); // normal case auto expectedFallbackFile = megacmd::PosixDirectories::noHomeFallbackFolder().append("/test.sock"); // too length case EXPECT_THAT(socketPath, testing::AnyOf(expectedNormalFile, expectedFallbackFile)); } G_SUBTEST << "Socket path with very long HOME"; { SelfDeletingTmpFolder tmpFolder(std::string(150, 'x')); #ifdef __APPLE__ fs::create_directories(tmpFolder.path() / "Library" / "Caches"); #endif auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); auto guard = TestInstrumentsEnvVarGuard("MEGACMD_SOCKET_NAME", "test.sock"); auto socketPath = getOrCreateSocketPath(false); EXPECT_FALSE(socketPath.empty()); } G_SUBTEST << "Socket path with special characters in HOME"; { SelfDeletingTmpFolder tmpFolder("test@#$%"); #ifdef __APPLE__ fs::create_directories(tmpFolder.path() / "Library" / "Caches"); #endif auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); auto guard = TestInstrumentsEnvVarGuard("MEGACMD_SOCKET_NAME", "test.sock"); auto socketPath = getOrCreateSocketPath(false); EXPECT_FALSE(socketPath.empty()); } G_SUBTEST << "With non-ascii $MEGACMD_SOCKET_NAME (normal or fallback case)"; { auto guard = TestInstrumentsEnvVarGuard("MEGACMD_SOCKET_NAME", "file_\u5f20\u4e09"); auto socketPath = getOrCreateSocketPath(false); auto expectedNormalFile = (dirs->runtimeDirPath() / "file_\u5f20\u4e09").string(); // normal case auto expectedFallbackFile = megacmd::PosixDirectories::noHomeFallbackFolder().append("/file_\u5f20\u4e09"); // too length case EXPECT_THAT(socketPath, testing::AnyOf(expectedNormalFile, expectedFallbackFile)); } G_SUBTEST << "Without $MEGACMD_SOCKET_NAME (normal or fallback case)"; { auto socketPath = getOrCreateSocketPath(false); auto expectedNormalFile = (dirs->runtimeDirPath() / "megacmd.socket").string(); // normal case auto expectedFallbackFile = megacmd::PosixDirectories::noHomeFallbackFolder().append("/megacmd.socket"); // too length case EXPECT_THAT(socketPath, testing::AnyOf(expectedNormalFile, expectedFallbackFile)); } G_SUBTEST << "Without $MEGACMD_SOCKET_NAME, short path: no /tmp/megacmd-UID fallback"; { auto homeGuard = TestInstrumentsEnvVarGuard("HOME", "/tmp"); auto guard = TestInstrumentsUnsetEnvVarGuard("MEGACMD_SOCKET_NAME"); auto runtimeDir = dirs->runtimeDirPath(); auto socketPath = getOrCreateSocketPath(false); EXPECT_STREQ(socketPath.c_str(), (dirs->runtimeDirPath() / "megacmd.socket").string().c_str()); } G_SUBTEST << "Without $MEGACMD_SOCKET_NAME, longth path: /tmp/megacmd-UID fallback"; { SelfDeletingTmpFolder tmpFolder("this_is_a_very_very_very_lengthy_folder_name_meant_to_make_socket_path_exceed_max_unix_socket_path_allowance"); #ifdef __APPLE__ fs::create_directories(tmpFolder.path() / "Library" / "Caches"); #endif auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); auto guard = TestInstrumentsUnsetEnvVarGuard("MEGACMD_SOCKET_NAME"); auto runtimeDir = dirs->runtimeDirPath(); auto socketPath = getOrCreateSocketPath(false); EXPECT_STRNE(socketPath.c_str(), (dirs->runtimeDirPath() / "megacmd.socket").string().c_str()); EXPECT_STREQ(socketPath.c_str(), megacmd::PosixDirectories::noHomeFallbackFolder().append("/megacmd.socket").c_str()); } G_SUBTEST << "With createDirectory=true, directory created"; { SelfDeletingTmpFolder tmpFolder; auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); auto socketPath = getOrCreateSocketPath(true); EXPECT_FALSE(socketPath.empty()); fs::path socketDir = fs::path(socketPath).parent_path(); EXPECT_TRUE(fs::is_directory(socketDir)); } G_SUBTEST << "With createDirectory=true, directory exists"; { SelfDeletingTmpFolder tmpFolder; auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); auto dirs = PlatformDirectories::getPlatformSpecificDirectories(); fs::path runtimeDir = dirs->runtimeDirPath(); fs::create_directories(runtimeDir); auto socketPath = getOrCreateSocketPath(true); EXPECT_FALSE(socketPath.empty()); EXPECT_TRUE(fs::is_directory(runtimeDir)); } G_SUBTEST << "With createDirectory=true and long path fallback"; { SelfDeletingTmpFolder tmpFolder("this_is_a_very_very_very_lengthy_folder_name_meant_to_make_socket_path_exceed_max_unix_socket_path_allowance"); #ifdef __APPLE__ fs::create_directories(tmpFolder.path() / "Library" / "Caches"); #endif auto homeGuard = TestInstrumentsEnvVarGuard("HOME", tmpFolder.string()); auto socketPath = getOrCreateSocketPath(true); EXPECT_FALSE(socketPath.empty()); fs::path socketDir = fs::path(socketPath).parent_path(); EXPECT_TRUE(fs::is_directory(socketDir)); EXPECT_EQ(socketDir.string(), megacmd::PosixDirectories::noHomeFallbackFolder()); } } #else TEST(PlatformDirectoriesTest, getNamedPipeName) { using megacmd::getNamedPipeName; G_SUBTEST << "With $MEGACMD_PIPE_SUFFIX"; { auto guard = TestInstrumentsEnvVarGuard("MEGACMD_PIPE_SUFFIX", "foobar"); auto name = getNamedPipeName(); EXPECT_THAT(name, testing::EndsWith(L"foobar")); } G_SUBTEST << "Without $MEGACMD_PIPE_SUFFIX"; { auto guard = TestInstrumentsUnsetEnvVarGuard("MEGACMD_PIPE_SUFFIX"); auto name = getNamedPipeName(); EXPECT_THAT(name, testing::Not(testing::EndsWith(L"foobar"))); } G_SUBTEST << "With non-ascii $MEGACMD_PIPE_SUFFIX"; { auto guard = TestInstrumentsEnvVarGuardW(L"MEGACMD_PIPE_SUFFIX", L"file_\u5f20\u4e09"); auto name = getNamedPipeName(); EXPECT_THAT(name, testing::EndsWith(L"file_\u5f20\u4e09")); } } #endif MEGAcmd-2.5.2_Linux/tests/unit/StringUtilsTests.cpp000066400000000000000000001706171516543156300222600ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include "Instruments.h" #include "TestUtils.h" #include "comunicationsmanager.h" #include "megacmdcommonutils.h" TEST(StringUtilsTest, rtrim) { using megacmd::rtrim; G_SUBTEST << "Basic case"; { std::string s("123456"); EXPECT_EQ(rtrim(s, '2'), "123456"); EXPECT_EQ(rtrim(s, '6'), "12345"); } G_SUBTEST << "Empty string"; { std::string s; EXPECT_EQ(rtrim(s, ' ').length(), 0); } G_SUBTEST << "Only trim character"; { std::string s(" "); EXPECT_EQ(rtrim(s, ' ').length(), 0); } G_SUBTEST << "Multiple consecutive"; { std::string s("11223344"); EXPECT_EQ(rtrim(s, '4'), "112233"); } G_SUBTEST << "Special case with next character check"; { std::string s("aab"); rtrim(s, 'a'); EXPECT_EQ(s, "aab"); } G_SUBTEST << "Single character at end"; { std::string s("abc123"); EXPECT_EQ(rtrim(s, '3'), "abc12"); } G_SUBTEST << "Unicode characters"; { std::string s("\xD0\x9C\xD0\x95\xD0\x93\xD0\x90 "); EXPECT_TRUE(megacmd::isValidUtf8(s)); std::string result = rtrim(s, ' '); EXPECT_TRUE(megacmd::isValidUtf8(result)); EXPECT_EQ(result, "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90"); } G_SUBTEST << "Single character string (trim character)"; { std::string s("X"); EXPECT_EQ(rtrim(s, 'X').length(), 0); } G_SUBTEST << "Single character string (not trim character)"; { std::string s("X"); EXPECT_EQ(rtrim(s, 'Y'), "X"); } G_SUBTEST << "Special characters"; { std::string s("test\t\t\t"); EXPECT_EQ(rtrim(s, '\t'), "test"); } } TEST(StringUtilsTest, ltrim) { using megacmd::ltrim; G_SUBTEST << "Basic cases"; { std::string s("123456"); EXPECT_EQ(ltrim(s, '2'), "123456"); EXPECT_EQ(ltrim(s, '1'), "23456"); } G_SUBTEST << "Empty string"; { std::string s(""); EXPECT_EQ(ltrim(s, ' '), ""); } G_SUBTEST << "Only trim character"; { std::string s(" "); EXPECT_EQ(ltrim(s, ' '), ""); } G_SUBTEST << "Multiple consecutive"; { std::string s("1111222333"); EXPECT_EQ(ltrim(s, '1'), "222333"); } G_SUBTEST << "Character not at the beginning"; { std::string s("abc123"); EXPECT_EQ(ltrim(s, 'a'), "bc123"); std::string s2("abc123"); EXPECT_EQ(ltrim(s2, 'b'), "abc123"); } G_SUBTEST << "Unicode characters"; { std::string s(" \xD0\x9C\xD0\x95\xD0\x93\xD0\x90"); EXPECT_TRUE(megacmd::isValidUtf8(s)); std::string result = ltrim(s, ' '); EXPECT_TRUE(megacmd::isValidUtf8(result)); EXPECT_EQ(result, "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90"); } G_SUBTEST << "Very long string"; { std::string s(10000, '1'); s += "test"; std::string result = ltrim(s, '1'); EXPECT_EQ(result, "test"); } G_SUBTEST << "Single character string with trim character"; { std::string s("X"); EXPECT_EQ(ltrim(s, 'X'), ""); } G_SUBTEST << "Single character string with no trim characters"; { std::string s("X"); EXPECT_EQ(ltrim(s, 'Y'), "X"); } G_SUBTEST << "Mixed characters at start"; { std::string s("XXYXXtest"); EXPECT_EQ(ltrim(s, 'X'), "YXXtest"); } G_SUBTEST << "Special characters"; { std::string s("\t\t\ttest"); EXPECT_EQ(ltrim(s, '\t'), "test"); } G_SUBTEST << "string_view overload"; { std::string_view sv(" test"); std::string_view result = ltrim(sv, ' '); EXPECT_EQ(result, "test"); EXPECT_EQ(sv, " test"); } G_SUBTEST << "Empty string_view"; { std::string_view sv; std::string_view result = ltrim(sv, ' '); EXPECT_EQ(result.length(), 0); } G_SUBTEST << "string_view with multiple characters"; { std::string_view sv("XXXtest"); std::string_view result = ltrim(sv, 'X'); EXPECT_EQ(result, "test"); } G_SUBTEST << "string_view with only trim characters"; { std::string_view sv(" "); std::string_view result = ltrim(sv, ' '); EXPECT_EQ(result.length(), 0); } G_SUBTEST << "string_view with no trim characters"; { std::string_view sv("test"); std::string_view result = ltrim(sv, ' '); EXPECT_EQ(result, "test"); } G_SUBTEST << "string_view with a single character"; { std::string_view sv("X"); std::string_view result = ltrim(sv, 'X'); EXPECT_EQ(result.length(), 0); } G_SUBTEST << "string_view from string"; { std::string str(" test"); std::string_view sv(str); std::string_view result = ltrim(sv, ' '); EXPECT_EQ(result, "test"); EXPECT_EQ(str, " test"); } } TEST(StringUtilsTest, split) { using megacmd::split; G_SUBTEST << "Basic split"; { std::vector result = split("a,b,c", ","); EXPECT_THAT(result, testing::ElementsAre("a", "b", "c")); } G_SUBTEST << "Empty string"; { std::vector result = split("", ","); EXPECT_TRUE(result.empty()); } G_SUBTEST << "No delimiter found"; { std::vector result = split("abc", ","); EXPECT_THAT(result, testing::ElementsAre("abc")); } G_SUBTEST << "Multiple consecutive delimiters"; { std::vector result = split("a,,b,,c", ","); EXPECT_THAT(result, testing::ElementsAre("a", "b", "c")); } G_SUBTEST << "Delimiter at start"; { std::vector result = split(",a,b", ","); EXPECT_THAT(result, testing::ElementsAre("a", "b")); } G_SUBTEST << "Delimiter at end"; { std::vector result = split("a,b,", ","); EXPECT_THAT(result, testing::ElementsAre("a", "b")); } G_SUBTEST << "Multi-character delimiter"; { std::vector result = split("a::b::c", "::"); EXPECT_THAT(result, testing::ElementsAre("a", "b", "c")); } G_SUBTEST << "Single character"; { std::vector result = split("a", ","); EXPECT_THAT(result, testing::ElementsAre("a")); } } TEST(StringUtilsTest, nonAsciiToStringstream) { const char* char_str = u8"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"; const wchar_t* wchar_str = L"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"; const std::string str = u8"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"; const std::wstring wstr = L"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"; { std::ostringstream ostream; ostream << char_str; EXPECT_STREQ(ostream.str().c_str(), char_str); std::wostringstream wostream; wostream << wchar_str; EXPECT_STREQ(wostream.str().c_str(), wchar_str); } { std::ostringstream ostream; ostream << str; EXPECT_EQ(ostream.str(), str); std::wostringstream wostream; wostream << wstr; EXPECT_EQ(wostream.str(), wstr); } #ifdef _WIN32 using namespace megacmd; // otherwise the ostream overload for wstrings won't be visible // we need it to ensure the static_assert is not triggered { std::ostringstream ostream; ostream << utf16ToUtf8(wchar_str); EXPECT_STREQ(ostream.str().c_str(), char_str); std::wostringstream wostream; wostream << char_str; EXPECT_STREQ(wostream.str().c_str(), wchar_str); } { std::ostringstream ostream; ostream << utf16ToUtf8(wstr); EXPECT_EQ(ostream.str(), str); std::wostringstream wostream; wostream << str; EXPECT_EQ(wostream.str(), wstr); } #endif } TEST(StringUtilsTest, redactedCmdPetition) { using megacmd::CmdPetition; { G_SUBTEST << "Redact password"; CmdPetition petition; petition.setLine("some-command --password=MySecretPassword --some-arg=Something -fv"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("MySecretPassword"))); EXPECT_THAT(redacted, testing::HasSubstr("--password=********")); EXPECT_THAT(redacted, testing::HasSubstr("--some-arg=Something")); } { G_SUBTEST << "Redact password with single quotes"; CmdPetition petition; petition.setLine("some-command --password='My Secret Password' --some-arg=Something -fv"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("My Secret Password"))); EXPECT_THAT(redacted, testing::HasSubstr("--password=********")); EXPECT_THAT(redacted, testing::HasSubstr("--some-arg=Something")); // Ensure the full password gets redacted, not only the first word EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("Secret Password"))); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("Password"))); } { G_SUBTEST << "Redact password with double quotes"; CmdPetition petition; petition.setLine("some-command --password=\"My Secret Password\" --some-arg=Something -fv"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("My Secret Password"))); EXPECT_THAT(redacted, testing::HasSubstr("--password=********")); EXPECT_THAT(redacted, testing::HasSubstr("--some-arg=Something")); // Ensure the full password gets redacted, not only the first word EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("Secret Password"))); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("Password"))); } { G_SUBTEST << "Redact auth-key and auth-code"; CmdPetition petition; petition.setLine("some-command --auth-code=abc123 --some-arg=Something --auth-key=def456"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("abc123"))); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("def456"))); EXPECT_THAT(redacted, testing::HasSubstr("--auth-code=********")); EXPECT_THAT(redacted, testing::HasSubstr("--auth-key=********")); EXPECT_THAT(redacted, testing::HasSubstr("--some-arg=Something")); } { G_SUBTEST << "Redact login"; CmdPetition petition; petition.setLine("login some-email@real-website.com SuperSecret1234!'"); const std::string redacted = petition.getRedactedLine(); EXPECT_EQ(redacted, "login "); } { G_SUBTEST << "Redact login no email"; CmdPetition petition; petition.setLine("login https://mega.nz/folder/bxomFKwL#3V1dUJFzL98t1GqXX29IXg"); const std::string redacted = petition.getRedactedLine(); EXPECT_EQ(redacted, "login "); } { G_SUBTEST << "Redact login even with auth-code"; CmdPetition petition; petition.setLine("login --auth-code=1SomeAuthCode1 SomeSuperSecret"); const std::string redacted = petition.getRedactedLine(); EXPECT_EQ(redacted, "login "); } { G_SUBTEST << "Redact passwd"; CmdPetition petition; petition.setLine("passwd -f NewPassword"); const std::string redacted = petition.getRedactedLine(); EXPECT_EQ(redacted, "passwd "); } { G_SUBTEST << "Redact passwd from shell"; CmdPetition petition; petition.setLine("Xpasswd -f NewPassword"); const std::string redacted = petition.getRedactedLine(); EXPECT_EQ(redacted, "Xpasswd "); } { G_SUBTEST << "Redact confirm"; CmdPetition petition; petition.setLine("confirm somelink1234 Password"); const std::string redacted = petition.getRedactedLine(); EXPECT_EQ(redacted, "confirm "); } { G_SUBTEST << "Redact confirmcancel"; CmdPetition petition; petition.setLine("confirmcancel somelink123 Password"); const std::string redacted = petition.getRedactedLine(); EXPECT_EQ(redacted, "confirmcancel "); } { G_SUBTEST << "Redact folder link"; CmdPetition petition; petition.setLine("import https://mega.nz/folder/bxomFKwL#3V1dUJFzL98t1GqXX29IXg"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("3V1dUJFzL98t1GqXX29IXg"))); EXPECT_THAT(redacted, testing::HasSubstr("https://mega.nz/folder/bxomFKwL#********")); } { G_SUBTEST << "Redact file link"; CmdPetition petition; petition.setLine("get https://mega.nz/file/d0w0nyiy#egvjqp5r-anbbdsjg8qrvg"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("egvjqp5r-anbbdsjg8qrvg"))); EXPECT_THAT(redacted, testing::HasSubstr("https://mega.nz/file/d0w0nyiy#********")); } { G_SUBTEST << "Redact old folder link"; CmdPetition petition; petition.setLine("get https://mega.nz/#F!bxomFKwL#3V1dUJFzL98t1GqXX29IXg"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("3V1dUJFzL98t1GqXX29IXg"))); EXPECT_THAT(redacted, testing::HasSubstr("https://mega.nz/#F!bxomFKwL#********")); } { G_SUBTEST << "Redact old file link"; CmdPetition petition; petition.setLine("import https://mega.nz/#!d0w0nyiy#egvjqp5r-anbbdsjg8qrvg"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("egvjqp5r-anbbdsjg8qrvg"))); EXPECT_THAT(redacted, testing::HasSubstr("https://mega.nz/#!d0w0nyiy#********")); } { G_SUBTEST << "Redact encrypted link"; CmdPetition petition; petition.setLine("some-other-command https://mega.nz/#P!egvjqp5r-anbbdsjg8qrvg"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr("egvjqp5r-anbbdsjg8qrvg"))); EXPECT_THAT(redacted, testing::HasSubstr("https://mega.nz/#P!********")); } { G_SUBTEST << "DO_NOT_REDACT env variable override"; auto doNotRedactGuard = TestInstrumentsEnvVarGuard("MEGACMD_DO_NOT_REDACT_LINES", "1"); { CmdPetition petition; petition.setLine("some-command --password=MySecretPassword --some-arg=Something -fv"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::HasSubstr("--password=MySecretPassword")); } { CmdPetition petition; petition.setLine("login some-email@real-website.com SuperSecret1234!'"); const std::string redacted = petition.getRedactedLine(); EXPECT_THAT(redacted, testing::HasSubstr("some-email@real-website.com")); EXPECT_THAT(redacted, testing::HasSubstr("SuperSecret1234!'")); EXPECT_THAT(redacted, testing::Not(testing::HasSubstr(""))); } } } TEST(StringUtilsTest, hasWildCards) { using megacmd::hasWildCards; G_SUBTEST << "Both wildcards"; { std::string str = "file*?.txt"; EXPECT_TRUE(hasWildCards(str)); str = "*?"; EXPECT_TRUE(hasWildCards(str)); } G_SUBTEST << "Asterisk at different positions"; { std::string str1 = "*file.txt"; EXPECT_TRUE(hasWildCards(str1)); std::string str2 = "file*.txt"; EXPECT_TRUE(hasWildCards(str2)); std::string str3 = "file.txt*"; EXPECT_TRUE(hasWildCards(str3)); std::string str4 = "*"; EXPECT_TRUE(hasWildCards(str4)); } G_SUBTEST << "Question mark at different positions"; { std::string str1 = "?file.txt"; EXPECT_TRUE(hasWildCards(str1)); std::string str2 = "file?.txt"; EXPECT_TRUE(hasWildCards(str2)); std::string str3 = "file.txt?"; EXPECT_TRUE(hasWildCards(str3)); std::string str4 = "?"; EXPECT_TRUE(hasWildCards(str4)); } G_SUBTEST << "Multiple wildcards"; { std::string str1 = "file**.*"; EXPECT_TRUE(hasWildCards(str1)); std::string str2 = "file??.txt"; EXPECT_TRUE(hasWildCards(str2)); std::string str3 = "*file*.txt"; EXPECT_TRUE(hasWildCards(str3)); std::string str4 = "?file?.txt"; EXPECT_TRUE(hasWildCards(str4)); } G_SUBTEST << "Special characters without wildcards"; { std::string str1 = "file@.txt"; EXPECT_FALSE(hasWildCards(str1)); std::string str2 = "file#.txt"; EXPECT_FALSE(hasWildCards(str2)); std::string str3 = "file$.txt"; EXPECT_FALSE(hasWildCards(str3)); std::string str4 = "file[].txt"; EXPECT_FALSE(hasWildCards(str4)); } G_SUBTEST << "Unicode characters"; { std::string str = u8"\u043F\u0440\u0438\u0432\u0435\u0442.txt"; EXPECT_FALSE(hasWildCards(str)); str = u8"\u043F\u0440\u0438*.txt"; EXPECT_TRUE(hasWildCards(str)); } G_SUBTEST << "Long strings"; { std::string longStr(10000, 'a'); EXPECT_FALSE(hasWildCards(longStr)); longStr[5000] = '*'; EXPECT_TRUE(hasWildCards(longStr)); longStr[5000] = 'a'; longStr[5000] = '?'; EXPECT_TRUE(hasWildCards(longStr)); } G_SUBTEST << "Wildcards with spaces"; { std::string str1 = "file *.txt"; EXPECT_TRUE(hasWildCards(str1)); std::string str2 = "file ?.txt"; EXPECT_TRUE(hasWildCards(str2)); std::string str3 = "file .txt"; EXPECT_FALSE(hasWildCards(str3)); } G_SUBTEST << "Numbers and wildcards"; { std::string str1 = "file123*.txt"; EXPECT_TRUE(hasWildCards(str1)); std::string str2 = "file?123.txt"; EXPECT_TRUE(hasWildCards(str2)); std::string str3 = "file123.txt"; EXPECT_FALSE(hasWildCards(str3)); } G_SUBTEST << "No wildcards"; { std::string str = "file.txt"; EXPECT_FALSE(hasWildCards(str)); } G_SUBTEST << "Empty string"; { std::string str; EXPECT_FALSE(hasWildCards(str)); } } TEST(StringUtilsTest, isValidEmail) { using megacmd::isValidEmail; G_SUBTEST << "Valid emails"; { EXPECT_TRUE(isValidEmail("t@x.be")); EXPECT_TRUE(isValidEmail("test@example.com")); EXPECT_TRUE(isValidEmail("user.name@domain.co.uk")); EXPECT_TRUE(isValidEmail("user+tag@example.com")); EXPECT_TRUE(isValidEmail("user_x@example.dot.com")); } G_SUBTEST << "Invalid emails"; { EXPECT_FALSE(isValidEmail("notanemail")); EXPECT_FALSE(isValidEmail("@example.com")); EXPECT_FALSE(isValidEmail("user@")); EXPECT_FALSE(isValidEmail("user@.")); EXPECT_FALSE(isValidEmail("user@.com")); EXPECT_FALSE(isValidEmail("user@com.")); EXPECT_FALSE(isValidEmail(" ")); } G_SUBTEST << "Empty email"; { EXPECT_FALSE(isValidEmail("")); } } TEST(StringUtilsTest, removeTrailingSeparators) { using megacmd::removeTrailingSeparators; G_SUBTEST << "Empty string"; { std::string path; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, ""); } G_SUBTEST << "Root path"; { std::string path = "/"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "/"); } G_SUBTEST << "Two slashes only"; { std::string path = "//"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "/"); } G_SUBTEST << "Windows backslash only"; { std::string path = R"(\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, ""); } G_SUBTEST << "Path with only backslashes"; { std::string path = R"(\\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, ""); } G_SUBTEST << "Unix path without trailing separator"; { std::string path = "/path/to/dir"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "/path/to/dir"); } G_SUBTEST << "Unix path with trailing separator"; { std::string path = "/path/to/dir/"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "/path/to/dir"); } G_SUBTEST << "Unix path with multiple trailing separators"; { std::string path = "/path/to/dir///"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "/path/to/dir"); } G_SUBTEST << "Unix path with file"; { std::string path = "/path/to/dir/file.txt"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "/path/to/dir/file.txt"); } G_SUBTEST << "Windows path without trailing separator"; { std::string path = R"(C:\path\to\dir)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(C:\path\to\dir)"); } G_SUBTEST << "Windows path with trailing backslash"; { std::string path = R"(C:\path\to\dir\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(C:\path\to\dir)"); } G_SUBTEST << "Windows path with multiple trailing backslashes"; { std::string path = R"(C:\path\to\dir\\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(C:\path\to\dir)"); } G_SUBTEST << "Windows root path C:\\\\"; { std::string path = R"(C:\\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "C:"); } G_SUBTEST << "Windows root path C:\\"; { std::string path = R"(C:\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "C:"); } G_SUBTEST << "Windows path with file"; { std::string path = R"(C:\path\to\dir\file.txt)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(C:\path\to\dir\file.txt)"); } G_SUBTEST << "Windows path ending with file extension"; { std::string path = R"(C:\path\file.txt\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(C:\path\file.txt)"); } G_SUBTEST << "Mixed trailing separators (not fully removed)"; { { std::string path = R"(/path/to/dir/\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "/path/to/dir/"); } { std::string path = R"(C:\path\to\dir/\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(C:\path\to\dir/)"); } } G_SUBTEST << "Mixed separators in middle and trailing"; { std::string path = R"(C:\path/to\dir/)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(C:\path/to\dir)"); } G_SUBTEST << "Single character path without separator"; { std::string path = "a"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "a"); } G_SUBTEST << "Single character path with forward slash"; { std::string path = "a/"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "a"); } G_SUBTEST << "Single character path with backslash"; { std::string path = R"(a\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, "a"); } G_SUBTEST << "UNC path with trailing backslash"; { std::string path = R"(\\server\share\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(\\server\share)"); } G_SUBTEST << "UNC path with multiple trailing backslashes"; { std::string path = R"(\\server\share\\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(\\server\share)"); } G_SUBTEST << "Relative path with trailing separator"; { std::string path = R"(relative\path\)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(relative\path)"); } G_SUBTEST << "Relative path without trailing separator"; { std::string path = R"(relative\path)"; std::string result = removeTrailingSeparators(path); EXPECT_EQ(result, R"(relative\path)"); } } TEST(StringUtilsTest, toInteger) { using megacmd::toInteger; G_SUBTEST << "Valid positive integer"; { EXPECT_EQ(toInteger("0"), 0); EXPECT_EQ(toInteger("12"), 12); EXPECT_EQ(toInteger("999"), 999); } G_SUBTEST << "Valid negative integer"; { EXPECT_EQ(toInteger("-1", 0), -1); EXPECT_EQ(toInteger("-123"), -123); } G_SUBTEST << "Invalid string"; { EXPECT_EQ(toInteger("abc"), -1); EXPECT_EQ(toInteger("12abc"), -1); EXPECT_EQ(toInteger("abc12"), -1); } G_SUBTEST << "Custom fail value"; { EXPECT_EQ(toInteger("xyz", 0), 0); EXPECT_EQ(toInteger("abc", 999), 999); } G_SUBTEST << "Empty string"; { EXPECT_EQ(toInteger(""), -1); EXPECT_EQ(toInteger("", 42), 42); } G_SUBTEST << "String with spaces"; { EXPECT_EQ(toInteger(" 123 "), -1); EXPECT_EQ(toInteger("123 "), -1); } G_SUBTEST << "Out of range values"; { std::string maxPlusOne = std::to_string(static_cast(INT_MAX) + 1); EXPECT_EQ(toInteger(maxPlusOne), -1); EXPECT_EQ(toInteger(maxPlusOne, 42), 42); std::string minMinusOne = std::to_string(static_cast(INT_MIN) - 1); EXPECT_EQ(toInteger(minMinusOne), -1); EXPECT_EQ(toInteger(minMinusOne, 99), 99); EXPECT_EQ(toInteger("999999999999999999999"), -1); EXPECT_EQ(toInteger("999999999999999999999", 0), 0); EXPECT_EQ(toInteger("-999999999999999999999"), -1); EXPECT_EQ(toInteger("-999999999999999999999", 0), 0); } } TEST(StringUtilsTest, getListOfWords) { using megacmd::getlistOfWords; G_SUBTEST << "Basic case"; { std::vector words = getlistOfWords("mega-share -a --with=some-email@mega.co.nz some_dir/some_file.txt"); EXPECT_THAT(words, testing::ElementsAre("mega-share", "-a", "--with=some-email@mega.co.nz", "some_dir/some_file.txt")); } G_SUBTEST << "Quotes"; { { std::vector words = getlistOfWords(R"(mkdir "some dir" "another dir")"); EXPECT_THAT(words, testing::ElementsAre("mkdir", "some dir", "another dir")); } { std::vector words = getlistOfWords(R"(mkdir 'some dir' 'another dir')"); EXPECT_THAT(words, testing::ElementsAre("mkdir", "some dir", "another dir")); } { std::vector words = getlistOfWords(R"(some "case" here)"); EXPECT_THAT(words, testing::ElementsAre("some", "case", "here")); } { std::vector words = getlistOfWords(R"(some "other case with spaces" here)"); EXPECT_THAT(words, testing::ElementsAre("some", "other case with spaces", "here")); } { std::vector words = getlistOfWords(R"(--another="here")"); EXPECT_THAT(words, testing::ElementsAre(R"(--another="here")")); } { std::vector words = getlistOfWords(R"(--another="here" with extra bits)"); EXPECT_THAT(words, testing::ElementsAre(R"(--another="here")", "with", "extra", "bits")); } { std::vector words = getlistOfWords(R"(--arg1="a b" word --arg2="c d")"); EXPECT_THAT(words, testing::ElementsAre(R"(--arg1="a b")", "word", R"(--arg2="c d")")); } { std::vector words = getlistOfWords(R"(command "text\"quoted")"); EXPECT_THAT(words, testing::ElementsAre("command", R"(text\)", R"(quoted")")); } } G_SUBTEST << "Unmatched quotes"; { { std::vector words = getlistOfWords(R"(find "something with quotes" odd/file"01.txt)"); EXPECT_THAT(words, testing::ElementsAre("find", "something with quotes", R"(odd/file"01.txt)")); } { std::vector words = getlistOfWords(R"(--something="quote missing)"); EXPECT_THAT(words, testing::ElementsAre(R"(--something="quote missing)")); } { std::vector words = getlistOfWords(R"(find 'something with quotes' odd/file'01.txt)"); EXPECT_THAT(words, testing::ElementsAre("find", "something with quotes", R"(odd/file'01.txt)")); } { std::vector words = getlistOfWords(R"(--something='quote missing)"); EXPECT_THAT(words, testing::ElementsAre(R"(--something='quote)", "missing")); } { std::vector words = getlistOfWords(R"(command 'unclosed quote)"); EXPECT_THAT(words, testing::ElementsAre("command", "unclosed quote")); } } G_SUBTEST << "Completion mode and flags"; { { constexpr const char* str = R"(get root_dir\some_dir\some_file.jpg another_file.txt)"; constexpr const char* completion_str = R"(completion get root_dir\some_dir\some_file.jpg another_file.txt)"; std::vector words = getlistOfWords(str, true); EXPECT_THAT(words, testing::ElementsAre("get", R"(root_dir\some_dir\some_file.jpg)", "another_file.txt")); words = getlistOfWords(completion_str, true); EXPECT_THAT(words, testing::ElementsAre("completion", "get", R"(root_dir\\some_dir\\some_file.jpg)", "another_file.txt")); words = getlistOfWords(str, false); EXPECT_THAT(words, testing::ElementsAre("get", R"(root_dir\some_dir\some_file.jpg)", "another_file.txt")); } { std::vector words = getlistOfWords("completion", true); EXPECT_THAT(words, testing::ElementsAre("completion")); } { std::vector words = getlistOfWords("completion ", true, true); EXPECT_THAT(words, testing::ElementsAre("completion")); } { std::vector words = getlistOfWords(R"(notcompletion path\file.txt)", true); EXPECT_THAT(words, testing::ElementsAre("notcompletion", R"(path\file.txt)")); } { constexpr const char* str = R"(completion get path\file.txt )"; std::vector words = getlistOfWords(str, true, false); EXPECT_THAT(words, testing::ElementsAre("completion", "get", R"(path\\file.txt)", "")); } { constexpr const char* str = R"(completion get path\file.txt )"; std::vector words = getlistOfWords(str, true, true); EXPECT_THAT(words, testing::ElementsAre("completion", "get", R"(path\\file.txt)")); } { constexpr const char* str = "completion arg "; std::vector words = getlistOfWords(str, true, true); EXPECT_THAT(words, testing::ElementsAre("completion", "arg")); } { constexpr const char* str = " completion arg "; std::vector words = getlistOfWords(str, true, true); EXPECT_THAT(words, testing::ElementsAre("completion", "arg")); } } G_SUBTEST << "Very long strings"; { { std::string longString = "command "; longString += std::string(10000, 'a'); longString += " argument"; std::vector words = getlistOfWords(longString.c_str()); EXPECT_THAT(words, testing::ElementsAre("command", testing::SizeIs(10000), "argument")); } { std::string longQuotedString = R"(command ")"; longQuotedString += std::string(5000, 'b'); longQuotedString += R"(" argument)"; std::vector words = getlistOfWords(longQuotedString.c_str()); EXPECT_THAT(words, testing::ElementsAre("command", testing::SizeIs(5000), "argument")); } } G_SUBTEST << "Nested quotes"; { { std::vector words = getlistOfWords(R"(command 'text "nested" text')"); EXPECT_THAT(words, testing::ElementsAre("command", R"(text "nested" text)")); } { std::vector words = getlistOfWords(R"(command "text 'nested' text")"); EXPECT_THAT(words, testing::ElementsAre("command", R"(text 'nested' text)")); } { std::vector words = getlistOfWords(R"(cmd1 'outer "inner" outer' cmd2 "outer 'inner' outer")"); EXPECT_THAT(words, testing::ElementsAre("cmd1", R"(outer "inner" outer)", "cmd2", R"(outer 'inner' outer)")); } } G_SUBTEST << "Backslash handling"; { { std::vector words = getlistOfWords("command \"text\\nnewline\" \"text\\ttab\""); EXPECT_THAT(words, testing::ElementsAre("command", "text\\nnewline", "text\\ttab")); } { std::vector words = getlistOfWords("command 'text\\nnewline' 'text\\ttab'"); EXPECT_THAT(words, testing::ElementsAre("command", "text\\nnewline", "text\\ttab")); } { std::vector words = getlistOfWords(R"(command "path\\to\\file")"); EXPECT_THAT(words, testing::ElementsAre("command", R"(path\\to\\file)")); } { std::vector words = getlistOfWords(R"(command "path\\\\to\\\\file")"); EXPECT_THAT(words, testing::ElementsAre("command", R"(path\\\\to\\\\file)")); } { std::vector words = getlistOfWords(R"(completion get path\\\\file.txt)", true); EXPECT_THAT(words, testing::ElementsAre("completion", "get", R"(path\\\\\\\\file.txt)")); } { std::vector words = getlistOfWords(R"(cmd path\\\\\file)"); EXPECT_THAT(words, testing::ElementsAre("cmd", R"(path\\\\\file)")); } { std::vector words = getlistOfWords(R"(command "text\" arg)"); EXPECT_THAT(words, testing::ElementsAre("command", R"(text\)", "arg")); } { std::vector words = getlistOfWords(R"(command 'text\' arg)"); EXPECT_THAT(words, testing::ElementsAre("command", R"(text\)", "arg")); } { std::vector words = getlistOfWords(R"(command path\)"); EXPECT_THAT(words, testing::ElementsAre("command", R"(path\)")); } { std::vector words = getlistOfWords(R"(command path\ with\ spaces)"); EXPECT_THAT(words, testing::ElementsAre("command", R"(path\ with\ spaces)")); } { std::vector words = getlistOfWords(R"(cmd file\ name)"); EXPECT_THAT(words, testing::ElementsAre("cmd", R"(file\ name)")); } } G_SUBTEST << "Special characters"; { { std::vector words = getlistOfWords("command file@name#123$test%value"); EXPECT_THAT(words, testing::ElementsAre("command", "file@name#123$test%value")); } { constexpr const char* unicodeStr = "command \"\xD0\x9C\xD0\x95\xD0\x93\xD0\x90\""; std::vector words = getlistOfWords(unicodeStr); EXPECT_THAT(words, testing::ElementsAre("command", "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90")); } { std::vector words = getlistOfWords("command \"text\1bell\""); EXPECT_THAT(words, testing::ElementsAre("command", "text\1bell")); } { std::vector words = getlistOfWords("cmd\1arg1\2arg2"); EXPECT_THAT(words, testing::ElementsAre("cmd\1arg1\2arg2")); } } G_SUBTEST << "Whitespace and empty strings"; { { std::vector words = getlistOfWords(""); EXPECT_TRUE(words.empty()); } { std::vector words = getlistOfWords(" ", false, true); EXPECT_TRUE(words.empty()); } { std::vector words = getlistOfWords(" ", false, false); EXPECT_THAT(words, testing::ElementsAre("")); } { constexpr const char* str = "export -f --writable some_dir/some_file.txt "; std::vector words = getlistOfWords(str, false, false); EXPECT_THAT(words, testing::ElementsAre("export", "-f", "--writable", "some_dir/some_file.txt", "")); words = getlistOfWords(str, false, true); EXPECT_THAT(words, testing::ElementsAre("export", "-f", "--writable", "some_dir/some_file.txt")); } { std::vector words = getlistOfWords(" command arg", false, false); EXPECT_THAT(words, testing::ElementsAre("command", "arg")); } { std::vector words = getlistOfWords(" command arg", false, true); EXPECT_THAT(words, testing::ElementsAre("command", "arg")); } { std::vector words = getlistOfWords("\t\tcommand\targ", false, true); EXPECT_THAT(words, testing::ElementsAre("command\targ")); } { std::vector words = getlistOfWords("command\targ1\targ2"); EXPECT_THAT(words, testing::ElementsAre("command\targ1\targ2")); } { std::vector words = getlistOfWords(" \t command \t arg \t "); EXPECT_THAT(words, testing::ElementsAre("command", "arg", "")); } { std::vector words = getlistOfWords("command \"text\twith\ttabs\""); EXPECT_THAT(words, testing::ElementsAre("command", "text\twith\ttabs")); } { std::vector words = getlistOfWords("command\narg1\narg2"); EXPECT_THAT(words, testing::ElementsAre("command\narg1\narg2")); } { std::vector words = getlistOfWords(R"(command "" "")"); EXPECT_THAT(words, testing::ElementsAre("command", "", "")); } { std::vector words = getlistOfWords(R"(command " " ' ')"); EXPECT_THAT(words, testing::ElementsAre("command", " ", " ")); } { std::vector words = getlistOfWords("command ", false, false); EXPECT_THAT(words, testing::ElementsAre("command", "")); } } G_SUBTEST << "Unquoted text with embedded quotes"; { { std::vector words = getlistOfWords(R"(command path"with"quote)"); EXPECT_THAT(words, testing::ElementsAre("command", R"(path"with"quote)")); } { std::vector words = getlistOfWords(R"(cmd file"name.txt)"); EXPECT_THAT(words, testing::ElementsAre("cmd", R"(file"name.txt)")); } { std::vector words = getlistOfWords(R"(cmd file'name.txt)"); EXPECT_THAT(words, testing::ElementsAre("cmd", R"(file'name.txt)")); } { std::vector words = getlistOfWords(R"(cmd "quoted"and"more")"); EXPECT_THAT(words, testing::ElementsAre("cmd", "quoted", R"(and"more")")); } } G_SUBTEST << "Invalid UTF-8 sequences"; { { // Invalid UTF-8: continuation byte without start byte constexpr const char* invalidUtf8 = "command \x80\x81\x82"; std::vector words = getlistOfWords(invalidUtf8); EXPECT_THAT(words, testing::ElementsAre("command", "\x80\x81\x82")); } { // Invalid UTF-8: incomplete sequence constexpr const char* invalidUtf8 = "cmd \"\xC2\""; std::vector words = getlistOfWords(invalidUtf8); EXPECT_THAT(words, testing::ElementsAre("cmd", "\xC2")); } { // Invalid UTF-8: overlong encoding constexpr const char* invalidUtf8 = "command \xC0\x80"; std::vector words = getlistOfWords(invalidUtf8); EXPECT_THAT(words, testing::ElementsAre("command", "\xC0\x80")); } } } TEST(StringUtilsTest, replace) { using megacmd::replace; G_SUBTEST << "Basic case"; { std::string str("hello world"); EXPECT_TRUE(replace(str, "world", "mega")); EXPECT_EQ(str, "hello mega"); } G_SUBTEST << "Replace not found"; { std::string str("test string"); EXPECT_FALSE(replace(str, "xyz", "mega")); EXPECT_EQ(str, "test string"); } G_SUBTEST << "Replace empty string"; { std::string str("hello"); EXPECT_TRUE(replace(str, "", "test")); EXPECT_EQ(str, "testhello"); } G_SUBTEST << "Replace with empty string"; { std::string str("remove this"); EXPECT_TRUE(replace(str, "this", "")); EXPECT_EQ(str, "remove "); } G_SUBTEST << "Multiple occurrences with only first replaced"; { std::string str("hello hello"); EXPECT_TRUE(replace(str, "hello", "hi")); EXPECT_EQ(str, "hi hello"); } G_SUBTEST << "Replace at beginning"; { std::string str("start end"); EXPECT_TRUE(replace(str, "start", "begin")); EXPECT_EQ(str, "begin end"); } G_SUBTEST << "Replace at end"; { std::string str("begin end"); EXPECT_TRUE(replace(str, "end", "finish")); EXPECT_EQ(str, "begin finish"); } G_SUBTEST << "Empty input string"; { std::string str; EXPECT_FALSE(replace(str, "test", "mega")); EXPECT_EQ(str, ""); } G_SUBTEST << "Self-replacement"; { std::string str("test"); EXPECT_TRUE(replace(str, "test", "test")); EXPECT_EQ(str, "test"); } G_SUBTEST << "Pattern longer than string"; { std::string str("short"); EXPECT_FALSE(replace(str, "very long pattern", "mega")); EXPECT_EQ(str, "short"); } G_SUBTEST << "Unicode characters"; { std::string str("\xD0\x9C\xD0\x95\xD0\x93\xD0\x90"); EXPECT_TRUE(replace(str, "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90", "MEGA")); EXPECT_EQ(str, "MEGA"); } G_SUBTEST << "Special characters"; { std::string str("test\ttest"); EXPECT_TRUE(replace(str, "\t", " ")); EXPECT_EQ(str, "test test"); } G_SUBTEST << "Pattern is substring of replacement"; { std::string str("a"); EXPECT_TRUE(replace(str, "a", "ab")); EXPECT_EQ(str, "ab"); } G_SUBTEST << "Very long string"; { std::string str(10000, 'a'); str += "test"; EXPECT_TRUE(replace(str, "test", "mega")); EXPECT_EQ(str, std::string(10000, 'a') + "mega"); } G_SUBTEST << "Replace entire string"; { std::string str("full"); EXPECT_TRUE(replace(str, "full", "empty")); EXPECT_EQ(str, "empty"); } G_SUBTEST << "Single character string"; { std::string str("a"); EXPECT_TRUE(replace(str, "a", "b")); EXPECT_EQ(str, "b"); } G_SUBTEST << "Pattern at multiple positions but only first replaced"; { std::string str("abcabcabc"); EXPECT_TRUE(replace(str, "abc", "x")); EXPECT_EQ(str, "xabcabc"); } } TEST(StringUtilsTest, replaceAll) { using megacmd::replaceAll; G_SUBTEST << "Basic replaceAll"; { std::string str("hello world world"); replaceAll(str, "world", "mega"); EXPECT_EQ(str, "hello mega mega"); } G_SUBTEST << "No occurrences"; { std::string str("test string"); replaceAll(str, "xyz", "mega"); EXPECT_EQ(str, "test string"); } G_SUBTEST << "Multiple occurrences"; { std::string str("a b a b a"); replaceAll(str, "a", "x"); EXPECT_EQ(str, "x b x b x"); } G_SUBTEST << "Replace with empty string"; { std::string str("remove this"); replaceAll(str, "this", ""); EXPECT_EQ(str, "remove "); } G_SUBTEST << "Overlapping patterns"; { std::string str("aaa"); replaceAll(str, "aa", "b"); EXPECT_EQ(str, "ba"); replaceAll(str, "a", "b"); EXPECT_EQ(str, "bb"); } G_SUBTEST << "Empty input string"; { std::string str; replaceAll(str, "test", "mega"); EXPECT_EQ(str, ""); } G_SUBTEST << "Empty pattern"; { std::string str("test string"); replaceAll(str, "", "mega"); EXPECT_EQ(str, "test string"); } G_SUBTEST << "Self-replacement"; { std::string str("test test"); replaceAll(str, "test", "test"); EXPECT_EQ(str, "test test"); } G_SUBTEST << "Pattern longer than string"; { std::string str("short"); replaceAll(str, "very long pattern", "mega"); EXPECT_EQ(str, "short"); } G_SUBTEST << "Unicode characters"; { std::string str("\xD0\x9C\xD0\x95\xD0\x93\xD0\x90 \xD0\x9C\xD0\x95\xD0\x93\xD0\x90"); replaceAll(str, "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90", "MEGA"); EXPECT_EQ(str, "MEGA MEGA"); } G_SUBTEST << "Special characters"; { std::string str("test\ttest\ntest"); replaceAll(str, "\t", " "); EXPECT_EQ(str, "test test\ntest"); replaceAll(str, "\n", " "); EXPECT_EQ(str, "test test test"); } G_SUBTEST << "Adjacent occurrences"; { std::string str("abcabc"); replaceAll(str, "ab", "x"); EXPECT_EQ(str, "xcxc"); } G_SUBTEST << "Pattern at beginning and end"; { std::string str("test content test"); replaceAll(str, "test", "start"); EXPECT_EQ(str, "start content start"); } G_SUBTEST << "Pattern is substring of replacement"; { std::string str("a a a"); replaceAll(str, "a", "ab"); EXPECT_EQ(str, "ab ab ab"); } G_SUBTEST << "Very long string"; { std::string str(10000, 'a'); str += "test" + std::string(10000, 'a'); replaceAll(str, "test", "mega"); EXPECT_EQ(str, std::string(10000, 'a') + "mega" + std::string(10000, 'a')); } G_SUBTEST << "Replace entire string"; { std::string str("full"); replaceAll(str, "full", "empty"); EXPECT_EQ(str, "empty"); } G_SUBTEST << "Single character string"; { std::string str("a"); replaceAll(str, "a", "b"); EXPECT_EQ(str, "b"); } } TEST(StringUtilsTest, joinStrings) { using megacmd::joinStrings; G_SUBTEST << "Basic join"; { std::vector vec = {"a", "b", "c"}; std::string result = joinStrings(vec); EXPECT_EQ(result, R"("a" "b" "c")"); } G_SUBTEST << "Empty vector"; { std::vector vec; std::string result = joinStrings(vec); EXPECT_EQ(result, ""); } G_SUBTEST << "Single element"; { { std::vector vec = {"a"}; std::string result = joinStrings(vec); EXPECT_EQ(result, R"("a")"); } { std::vector vec = {"a"}; std::string result = joinStrings(vec, " ", false); EXPECT_EQ(result, "a"); } { std::vector vec = {"a"}; std::string result = joinStrings(vec, ",", true); EXPECT_EQ(result, R"("a")"); } { std::vector vec = {"a"}; std::string result = joinStrings(vec, "/", false); EXPECT_EQ(result, "a"); } } G_SUBTEST << "With quotes"; { { std::vector vec = {"a", "b", "c"}; std::string result = joinStrings(vec, "/", true); EXPECT_EQ(result, R"("a"/"b"/"c")"); } { std::vector vec = {"a", "", "c"}; std::string result = joinStrings(vec, ",", true); EXPECT_EQ(result, R"("a","","c")"); } { std::vector vec = {"a", "b", ""}; std::string result = joinStrings(vec, ",", true); EXPECT_EQ(result, R"("a","b","")"); } } G_SUBTEST << "Without quotes"; { { std::vector vec = {"a", "b", "c"}; std::string result = joinStrings(vec, " ", false); EXPECT_EQ(result, "a b c"); } { std::vector vec = {"a", "", "c"}; std::string result = joinStrings(vec, " ", false); EXPECT_EQ(result, "a c"); } { std::vector vec = {"", "a", "b"}; std::string result = joinStrings(vec, " ", false); EXPECT_EQ(result, " a b"); } { std::vector vec = {"a", "b", ""}; std::string result = joinStrings(vec, " ", false); EXPECT_EQ(result, "a b "); } } G_SUBTEST << "Strings containing quotes"; { { std::vector vec = {R"(a"b)", R"(c"d)", "e"}; std::string result = joinStrings(vec, " ", true); EXPECT_EQ(result, R"("a"b" "c"d" "e")"); } { std::vector vec = {R"("quoted")", "normal", R"("another")"}; std::string result = joinStrings(vec, ",", true); EXPECT_EQ(result, R"(""quoted"","normal",""another"")"); } } G_SUBTEST << "Strings containing delimiter"; { { std::vector vec = {"a,b", "c,d", "e"}; std::string result = joinStrings(vec, ",", false); EXPECT_EQ(result, "a,b,c,d,e"); } { std::vector vec = {"a/b", "c/d", "e"}; std::string result = joinStrings(vec, "/", true); EXPECT_EQ(result, R"("a/b"/"c/d"/"e")"); } { std::vector vec = {"a::b", "c::d", "e"}; std::string result = joinStrings(vec, "::", false); EXPECT_EQ(result, "a::b::c::d::e"); } } G_SUBTEST << "Special characters"; { { std::vector vec = {"a\nb", "c\td", "e"}; std::string result = joinStrings(vec, " ", true); EXPECT_EQ(result, "\"a\nb\" \"c\td\" \"e\""); } { std::vector vec = {"a\r\nb", "c", "d"}; std::string result = joinStrings(vec, ",", false); EXPECT_EQ(result, "a\r\nb,c,d"); } } G_SUBTEST << "Unicode characters"; { { std::vector vec = {u8"\u043F\u0440\u0438\u0432\u0435\u0442", u8"\u043C\u0438\u0440", u8"\u0442\u0435\u0441\u0442"}; std::string result = joinStrings(vec, " ", true); EXPECT_TRUE(megacmd::isValidUtf8(result)); std::string expected = u8"\"\u043F\u0440\u0438\u0432\u0435\u0442\" \"\u043C\u0438\u0440\" \"\u0442\u0435\u0441\u0442\""; EXPECT_EQ(result, expected); } { std::vector vec = {u8"\u4F60\u597D", u8"\u4E16\u754C", u8"\u6D4B\u8BD5"}; std::string result = joinStrings(vec, ",", true); EXPECT_TRUE(megacmd::isValidUtf8(result)); std::string expected = u8"\"\u4F60\u597D\",\"\u4E16\u754C\",\"\u6D4B\u8BD5\""; EXPECT_EQ(result, expected); } } G_SUBTEST << "Empty delimiter"; { { std::vector vec = {"a", "b", "c"}; std::string result = joinStrings(vec, "", true); EXPECT_EQ(result, R"("a""b""c")"); } { std::vector vec = {"a", "b", "c"}; std::string result = joinStrings(vec, "", false); EXPECT_EQ(result, "abc"); } } G_SUBTEST << "Long delimiter"; { { std::vector vec = {"a", "b", "c"}; std::string result = joinStrings(vec, "---", true); EXPECT_EQ(result, R"("a"---"b"---"c")"); } { std::vector vec = {"a", "b", "c"}; std::string longDelim = std::string(100, '-'); std::string result = joinStrings(vec, longDelim.c_str(), false); EXPECT_EQ(result, "a" + longDelim + "b" + longDelim + "c"); } } G_SUBTEST << "Multiple consecutive empty strings"; { { std::vector vec = {""}; std::string result = joinStrings(vec, ",", true); EXPECT_EQ(result, R"("")"); } { std::vector vec = {""}; std::string result = joinStrings(vec, " ", false); EXPECT_EQ(result, ""); } { std::vector vec = {"", "", ""}; std::string result = joinStrings(vec, ",", true); EXPECT_EQ(result, R"("","","")"); } { std::vector vec = {"", "", ""}; std::string result = joinStrings(vec, " ", false); EXPECT_EQ(result, " "); } { std::vector vec = {"", "a", "b"}; std::string result = joinStrings(vec, ",", true); EXPECT_EQ(result, R"("","a","b")"); } { std::vector vec = {"a", "", "", "b"}; std::string result = joinStrings(vec, ",", true); EXPECT_EQ(result, R"("a","","","b")"); } } G_SUBTEST << "Strings with spaces and space delimiter"; { { std::vector vec = {" a ", " b ", " c "}; std::string result = joinStrings(vec, " ", true); EXPECT_EQ(result, R"(" a " " b " " c ")"); } { std::vector vec = {" a ", " b ", " c "}; std::string result = joinStrings(vec, " ", false); EXPECT_EQ(result, " a b c "); } } G_SUBTEST << "Long strings"; { std::string longStr(10000, 'x'); std::vector vec = {longStr, "b", longStr}; std::string result = joinStrings(vec, " ", true); EXPECT_EQ(result.length(), (longStr.length() + 2) * 2 + /* "b" */ 3 + /* 2 separators */ 2); EXPECT_EQ(result.substr(0, 1), R"(")"); EXPECT_EQ(result.substr(1, longStr.length()), longStr); EXPECT_EQ(result.substr(longStr.length() + 1, 2), R"(" )"); EXPECT_EQ(result.substr(longStr.length() + 3, 3), R"("b")"); } } TEST(StringUtilsTest, startsWith) { using megacmd::startsWith; G_SUBTEST << "Basic case"; { EXPECT_TRUE(startsWith("test string", "test")); EXPECT_FALSE(startsWith("test string", "string")); } G_SUBTEST << "Empty prefix"; { EXPECT_TRUE(startsWith("hello", "")); EXPECT_TRUE(startsWith("", "")); } G_SUBTEST << "Prefix longer than string"; { EXPECT_FALSE(startsWith("hi", "hello")); } G_SUBTEST << "Exact match"; { EXPECT_TRUE(startsWith("hello", "hello")); } G_SUBTEST << "Single character prefix"; { EXPECT_TRUE(startsWith("hello", "h")); EXPECT_FALSE(startsWith("hello", "e")); } G_SUBTEST << "Empty string"; { EXPECT_FALSE(startsWith("", "a")); } G_SUBTEST << "Prefix in middle of string"; { EXPECT_FALSE(startsWith("atest", "test")); EXPECT_FALSE(startsWith("prefix suffix", "fix")); } G_SUBTEST << "Case sensitivity"; { EXPECT_FALSE(startsWith("Hello", "hello")); EXPECT_FALSE(startsWith("hello", "Hello")); } G_SUBTEST << "Prefix differs by one character"; { EXPECT_FALSE(startsWith("hello", "hellp")); } G_SUBTEST << "Newline and tab in string"; { EXPECT_TRUE(startsWith("hello\nworld", "hello")); EXPECT_TRUE(startsWith("hello\tworld", "hello")); EXPECT_FALSE(startsWith("hello\nworld", "world")); EXPECT_FALSE(startsWith("hello\r\nworld", "world")); } G_SUBTEST << "Unicode characters"; { EXPECT_TRUE(startsWith(u8"\u043F\u0440\u0438\u0432\u0435\u0442", u8"\u043F\u0440\u0438")); EXPECT_FALSE(startsWith(u8"hello\u043F\u0440\u0438\u0432\u0435\u0442", u8"\u043F\u0440\u0438\u0432\u0435\u0442")); EXPECT_FALSE(startsWith(u8"test\u4F60\u597D", u8"\u4F60\u597D")); EXPECT_FALSE(startsWith("hello", u8"\u043F\u0440\u0438\u0432\u0435\u0442")); } G_SUBTEST << "Strings with spaces"; { EXPECT_FALSE(startsWith(" hello", "hello")); EXPECT_FALSE(startsWith("hello ", " ")); } G_SUBTEST << "Embedded null (string_view is byte-oriented)"; { std::string withNull("a\0b", 3); std::string prefixA("a", 1); std::string prefixFull("a\0b", 3); EXPECT_TRUE(startsWith(withNull, prefixA)); EXPECT_TRUE(startsWith(withNull, prefixFull)); EXPECT_FALSE(startsWith(withNull, std::string("b", 1))); } G_SUBTEST << "Long string (prefix longer, first char differs)"; { std::string longStr(10000, 'a'); std::string prefix = "b" + std::string(9999, 'a'); EXPECT_FALSE(startsWith(longStr, prefix)); } } TEST(StringUtilsTest, toLower) { using megacmd::toLower; G_SUBTEST << "Basic case"; { EXPECT_EQ(toLower("HELLO"), "hello"); EXPECT_EQ(toLower("Hello"), "hello"); EXPECT_EQ(toLower("hElLo"), "hello"); } G_SUBTEST << "Already lowercase"; { EXPECT_EQ(toLower("hello"), "hello"); EXPECT_EQ(toLower("hello world"), "hello world"); } G_SUBTEST << "Empty string"; { EXPECT_EQ(toLower(""), ""); } G_SUBTEST << "Special characters"; { EXPECT_EQ(toLower("HELLO@WORLD"), "hello@world"); EXPECT_EQ(toLower("TEST#123$"), "test#123$"); EXPECT_EQ(toLower("A-B_C.D"), "a-b_c.d"); EXPECT_EQ(toLower("@#$%"), "@#$%"); } G_SUBTEST << "Strings with spaces"; { EXPECT_EQ(toLower("HELLo WORLD"), "hello world"); EXPECT_EQ(toLower(" TEST "), " test "); EXPECT_EQ(toLower("A B C"), "a b c"); } G_SUBTEST << "Numbers only"; { EXPECT_EQ(toLower("123456"), "123456"); EXPECT_EQ(toLower("0"), "0"); } G_SUBTEST << "Newlines, tabs, and control characters"; { EXPECT_EQ(toLower("HELLO\nWORLD"), "hello\nworld"); EXPECT_EQ(toLower("HELLO\tWORLD"), "hello\tworld"); EXPECT_EQ(toLower("HELLO\r\nWORLD"), "hello\r\nworld"); EXPECT_EQ(toLower("\n\t\r"), "\n\t\r"); } G_SUBTEST << "Whitespace-only"; { EXPECT_EQ(toLower(" "), " "); EXPECT_EQ(toLower(" "), " "); EXPECT_EQ(toLower("\t\t"), "\t\t"); EXPECT_EQ(toLower(" \t \n "), " \t \n "); } G_SUBTEST << "Long strings"; { std::string longStr(10000, 'A'); std::string result = toLower(longStr); EXPECT_EQ(result.length(), 10000); EXPECT_EQ(result, std::string(10000, 'a')); } G_SUBTEST << "Single character"; { EXPECT_EQ(toLower("A"), "a"); EXPECT_EQ(toLower("Z"), "z"); EXPECT_EQ(toLower("a"), "a"); EXPECT_EQ(toLower("1"), "1"); } G_SUBTEST << "Original string is not modified"; { const std::string original = "HELLO"; std::string result = toLower(original); EXPECT_EQ(result, "hello"); EXPECT_EQ(original, "HELLO"); } } MEGAcmd-2.5.2_Linux/tests/unit/Utf8Tests.cpp000066400000000000000000001031461516543156300206100ustar00rootroot00000000000000/** * (c) 2026 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include "Instruments.h" #include "TestUtils.h" #include "megacmd_utf8.h" #include #include #include namespace fs = std::filesystem; class Utf8Test : public ::testing::Test { protected: void SetUp() override { unsetEnvGuard = std::make_unique("MEGACMD_DISABLE_UTF8_VALIDATIONS"); } void TearDown() override { unsetEnvGuard.reset(); } std::unique_ptr unsetEnvGuard; }; TEST_F(Utf8Test, ValidAscii) { using megacmd::isValidUtf8; G_SUBTEST << "Empty string"; { EXPECT_TRUE(isValidUtf8("")); EXPECT_TRUE(isValidUtf8(std::string())); } G_SUBTEST << "Single ASCII characters"; { EXPECT_TRUE(isValidUtf8("a")); EXPECT_TRUE(isValidUtf8("Z")); EXPECT_TRUE(isValidUtf8("0")); EXPECT_TRUE(isValidUtf8(" ")); EXPECT_TRUE(isValidUtf8("\t")); EXPECT_TRUE(isValidUtf8("\n")); EXPECT_TRUE(isValidUtf8("\r")); } G_SUBTEST << "ASCII strings"; { EXPECT_TRUE(isValidUtf8("Hello, World!")); EXPECT_TRUE(isValidUtf8("The quick brown fox jumps over the lazy dog")); EXPECT_TRUE(isValidUtf8("1234567890")); EXPECT_TRUE(isValidUtf8("!@#$%^&*()_+-=[]{}|;':\",./<>?")); } G_SUBTEST << "ASCII control characters"; { EXPECT_TRUE(isValidUtf8("\x00", 1)); EXPECT_TRUE(isValidUtf8("\x01")); EXPECT_TRUE(isValidUtf8("\x1f")); EXPECT_TRUE(isValidUtf8("\x7f")); } G_SUBTEST << "Long ASCII string"; { std::string longStr(10000, 'a'); EXPECT_TRUE(isValidUtf8(longStr)); } } TEST_F(Utf8Test, Valid2ByteSequences) { using megacmd::isValidUtf8; G_SUBTEST << "Minimum 2-byte character (U+0080)"; { EXPECT_TRUE(isValidUtf8("\xc2\x80")); } G_SUBTEST << "Maximum 2-byte character (U+07FF)"; { EXPECT_TRUE(isValidUtf8("\xdf\xbf")); } G_SUBTEST << "Latin extended characters"; { // ñ (U+00F1) EXPECT_TRUE(isValidUtf8("\xc3\xb1")); // ü (U+00FC) EXPECT_TRUE(isValidUtf8("\xc3\xbc")); // é (U+00E9) EXPECT_TRUE(isValidUtf8("\xc3\xa9")); // ö (U+00F6) EXPECT_TRUE(isValidUtf8("\xc3\xb6")); } G_SUBTEST << "Cyrillic characters"; { // МЕГ� EXPECT_TRUE(isValidUtf8("\xD0\x9C\xD0\x95\xD0\x93\xD0\x90")); // Привіт EXPECT_TRUE(isValidUtf8("\xD0\x9F\xD1\x80\xD0\xB8\xD0\xB2\xD1\x96\xD1\x82")); } G_SUBTEST << "Greek characters"; { // Ω (U+03A9) EXPECT_TRUE(isValidUtf8("\xCE\xA9")); // α (U+03B1) EXPECT_TRUE(isValidUtf8("\xCE\xB1")); // β (U+03B2) EXPECT_TRUE(isValidUtf8("\xCE\xB2")); } G_SUBTEST << "Hebrew characters"; { // � (U+05D0) EXPECT_TRUE(isValidUtf8("\xD7\x90")); // ב (U+05D1) EXPECT_TRUE(isValidUtf8("\xD7\x91")); } G_SUBTEST << "Arabic characters"; { // ا (U+0627) EXPECT_TRUE(isValidUtf8("\xD8\xA7")); // ب (U+0628) EXPECT_TRUE(isValidUtf8("\xD8\xA8")); } } TEST_F(Utf8Test, Valid3ByteSequences) { using megacmd::isValidUtf8; G_SUBTEST << "Minimum 3-byte character (U+0800)"; { EXPECT_TRUE(isValidUtf8("\xe0\xa0\x80")); } G_SUBTEST << "Maximum valid 3-byte before surrogates (U+D7FF)"; { EXPECT_TRUE(isValidUtf8("\xed\x9f\xbf")); } G_SUBTEST << "Minimum valid 3-byte after surrogates (U+E000)"; { EXPECT_TRUE(isValidUtf8("\xee\x80\x80")); } G_SUBTEST << "Maximum 3-byte character (U+FFFF)"; { // Note: U+FFFF is valid UTF-8 but is a "noncharacter" EXPECT_TRUE(isValidUtf8("\xef\xbf\xbf")); } G_SUBTEST << "Euro sign (U+20AC)"; { EXPECT_TRUE(isValidUtf8("\xe2\x82\xac")); } G_SUBTEST << "Cent sign (U+20A1)"; { EXPECT_TRUE(isValidUtf8("\xe2\x82\xa1")); } G_SUBTEST << "Japanese Hiragana"; { // � (U+3042) EXPECT_TRUE(isValidUtf8("\xe3\x81\x82")); // � (U+3044) EXPECT_TRUE(isValidUtf8("\xe3\x81\x84")); // � (U+3046) EXPECT_TRUE(isValidUtf8("\xe3\x81\x86")); } G_SUBTEST << "Japanese Katakana"; { // ア (U+30A2) EXPECT_TRUE(isValidUtf8("\xe3\x82\xa2")); // イ (U+30A4) EXPECT_TRUE(isValidUtf8("\xe3\x82\xa4")); } G_SUBTEST << "Chinese characters"; { // 中 (U+4E2D) EXPECT_TRUE(isValidUtf8("\xe4\xb8\xad")); // 文 (U+6587) EXPECT_TRUE(isValidUtf8("\xe6\x96\x87")); // 字 (U+5B57) EXPECT_TRUE(isValidUtf8("\xe5\xad\x97")); } G_SUBTEST << "Korean characters"; { // 안 (U+C548) EXPECT_TRUE(isValidUtf8("\xec\x95\x88")); // 녕 (U+B155) EXPECT_TRUE(isValidUtf8("\xeb\x85\x95")); // 하 (U+D558) EXPECT_TRUE(isValidUtf8("\xed\x95\x98")); } G_SUBTEST << "Thai characters"; { // � (U+0E01) EXPECT_TRUE(isValidUtf8("\xe0\xb8\x81")); // ข (U+0E02) EXPECT_TRUE(isValidUtf8("\xe0\xb8\x82")); } G_SUBTEST << "BOM (U+FEFF)"; { EXPECT_TRUE(isValidUtf8("\xef\xbb\xbf")); } G_SUBTEST << "Replacement character (U+FFFD)"; { EXPECT_TRUE(isValidUtf8("\xef\xbf\xbd")); } } TEST_F(Utf8Test, Valid4ByteSequences) { using megacmd::isValidUtf8; G_SUBTEST << "Minimum 4-byte character (U+10000)"; { EXPECT_TRUE(isValidUtf8("\xf0\x90\x80\x80")); } G_SUBTEST << "Maximum valid 4-byte character (U+10FFFF)"; { EXPECT_TRUE(isValidUtf8("\xf4\x8f\xbf\xbf")); } G_SUBTEST << "Emoji characters"; { // 😀 (U+1F600) EXPECT_TRUE(isValidUtf8("\xf0\x9f\x98\x80")); // 😂 (U+1F602) EXPECT_TRUE(isValidUtf8("\xf0\x9f\x98\x82")); // �� base character (U+2764) EXPECT_TRUE(isValidUtf8("\xe2\x9d\xa4")); // 🎉 (U+1F389) EXPECT_TRUE(isValidUtf8("\xf0\x9f\x8e\x89")); // 🚀 (U+1F680) EXPECT_TRUE(isValidUtf8("\xf0\x9f\x9a\x80")); } G_SUBTEST << "Musical symbols"; { // � (U+1D11E) - G clef EXPECT_TRUE(isValidUtf8("\xf0\x9d\x84\x9e")); } G_SUBTEST << "Mathematical symbols"; { // � (U+1D538) EXPECT_TRUE(isValidUtf8("\xf0\x9d\x94\xb8")); } G_SUBTEST << "Historic scripts"; { // Linear B syllable (U+10000) EXPECT_TRUE(isValidUtf8("\xf0\x90\x80\x80")); // Old Italic letter (U+1033C) EXPECT_TRUE(isValidUtf8("\xf0\x90\x8c\xbc")); // Egyptian hieroglyph (U+13000) EXPECT_TRUE(isValidUtf8("\xf0\x93\x80\x80")); } G_SUBTEST << "Additional 4-byte characters"; { // Rumi Numeral One (U+1E6E1) EXPECT_TRUE(isValidUtf8("\xf3\xa1\xa1\xa1")); } G_SUBTEST << "Range boundary tests"; { // U+10FFFF - last valid codepoint EXPECT_TRUE(isValidUtf8("\xf4\x8f\xbf\xbf")); // U+100000 EXPECT_TRUE(isValidUtf8("\xf4\x80\x80\x80")); } } TEST_F(Utf8Test, InvalidSequences) { using megacmd::isValidUtf8; G_SUBTEST << "Invalid continuation byte at start"; { // Continuation byte without leading byte EXPECT_FALSE(isValidUtf8("\x80")); EXPECT_FALSE(isValidUtf8("\x80\x80")); EXPECT_FALSE(isValidUtf8("\xa0\xa1")); EXPECT_FALSE(isValidUtf8("\xbf")); } G_SUBTEST << "Invalid 5-byte sequences (not valid UTF-8)"; { // 5-byte sequences starting with 0xf8 EXPECT_FALSE(isValidUtf8("\xf8\xa1\xa1\xa1\xa1")); } G_SUBTEST << "Invalid 6-byte sequences (not valid UTF-8)"; { // 6-byte sequences starting with 0xfc EXPECT_FALSE(isValidUtf8("\xfc\xa1\xa1\xa1\xa1\xa1")); } G_SUBTEST << "Invalid lead bytes"; { // 0xfe and 0xff are never valid EXPECT_FALSE(isValidUtf8("\xfe")); EXPECT_FALSE(isValidUtf8("\xff")); EXPECT_FALSE(isValidUtf8("\xfe\x80\x80\x80")); EXPECT_FALSE(isValidUtf8("\xff\x80\x80\x80")); } } TEST_F(Utf8Test, InvalidContinuationBytes) { using megacmd::isValidUtf8; G_SUBTEST << "2-byte sequence with invalid continuation"; { EXPECT_FALSE(isValidUtf8("\xc3\x28")); // 2nd byte: 00xx xxxx EXPECT_FALSE(isValidUtf8("\xc3\xc0")); // 2nd byte: 11xx xxxx EXPECT_FALSE(isValidUtf8("\xc3\x00")); // 2nd byte: 0000 0000 } G_SUBTEST << "3-byte sequence with invalid continuation"; { EXPECT_FALSE(isValidUtf8("\xe2\x28\xa1")); // 2nd byte: 00xx xxxx EXPECT_FALSE(isValidUtf8("\xe2\x82\x28")); // 3rd byte: 00xx xxxx EXPECT_FALSE(isValidUtf8("\xe0\xa1\xd0")); // 3rd byte: 11xx xxxx EXPECT_FALSE(isValidUtf8("\xe2\xc0\xa1")); // 2nd byte: 11xx xxxx } G_SUBTEST << "4-byte sequence with invalid continuation"; { EXPECT_FALSE(isValidUtf8("\xf0\x28\x8c\xbc")); // 2nd byte: 00xx xxxx EXPECT_FALSE(isValidUtf8("\xf0\x90\x28\xbc")); // 3rd byte: 00xx xxxx EXPECT_FALSE(isValidUtf8("\xf0\x90\x8c\x28")); // 4th byte: 00xx xxxx EXPECT_FALSE(isValidUtf8("\xf0\x28\x8c\x28")); // 2nd & 4th bytes invalid } } TEST_F(Utf8Test, TruncatedSequences) { using megacmd::isValidUtf8; G_SUBTEST << "Truncated 2-byte sequence"; { EXPECT_FALSE(isValidUtf8("\xc2")); EXPECT_FALSE(isValidUtf8("\xdf")); } G_SUBTEST << "Truncated 3-byte sequence"; { EXPECT_FALSE(isValidUtf8("\xe0\xa0")); EXPECT_FALSE(isValidUtf8("\xe2\x82")); EXPECT_FALSE(isValidUtf8("\xe2")); } G_SUBTEST << "Truncated 4-byte sequence"; { EXPECT_FALSE(isValidUtf8("\xf0\x90\x8c")); EXPECT_FALSE(isValidUtf8("\xf0\x90")); EXPECT_FALSE(isValidUtf8("\xf4\x8f\xbf")); EXPECT_FALSE(isValidUtf8("\xf0")); } G_SUBTEST << "Truncated sequence in middle of string"; { std::string str = "Hello "; str += "\xc2"; // Incomplete 2-byte sequence EXPECT_FALSE(isValidUtf8(str)); str = "Test "; str += "\xe2\x82"; // Incomplete 3-byte sequence EXPECT_FALSE(isValidUtf8(str)); } } TEST_F(Utf8Test, OverlongEncodings) { using megacmd::isValidUtf8; G_SUBTEST << "Overlong 2-byte encoding of ASCII"; { // Overlong encoding of '/' (U+002F) as 2 bytes EXPECT_FALSE(isValidUtf8("\xc0\xaf")); // Overlong encoding of NUL (U+0000) as 2 bytes EXPECT_FALSE(isValidUtf8("\xc0\x80")); // Any C0 or C1 lead byte creates overlong encoding EXPECT_FALSE(isValidUtf8("\xc1\xbf")); } G_SUBTEST << "Overlong 3-byte encoding"; { // Overlong encoding of characters < U+0800 EXPECT_FALSE(isValidUtf8("\xe0\x9f\xbf")); // codepoint less than U+0800 EXPECT_FALSE(isValidUtf8("\xe0\x80\x80")); // overlong NUL } G_SUBTEST << "Overlong 4-byte encoding"; { // Overlong encoding of characters < U+10000 EXPECT_FALSE(isValidUtf8("\xf0\x8f\xbf\xbf")); // codepoint less than U+10000 EXPECT_FALSE(isValidUtf8("\xf0\x80\x80\x80")); // overlong NUL } } TEST_F(Utf8Test, SurrogateCodepoints) { using megacmd::isValidUtf8; G_SUBTEST << "High surrogate (U+D800)"; { EXPECT_FALSE(isValidUtf8("\xed\xa0\x80")); } G_SUBTEST << "Low surrogate (U+DFFF)"; { EXPECT_FALSE(isValidUtf8("\xed\xbf\xbf")); } G_SUBTEST << "Middle of surrogate range"; { // U+D800 to U+DFFF are all invalid EXPECT_FALSE(isValidUtf8("\xed\xa0\x80")); // U+D800 EXPECT_FALSE(isValidUtf8("\xed\xad\xbf")); // U+DB7F EXPECT_FALSE(isValidUtf8("\xed\xae\x80")); // U+DB80 EXPECT_FALSE(isValidUtf8("\xed\xaf\xbf")); // U+DBFF EXPECT_FALSE(isValidUtf8("\xed\xb0\x80")); // U+DC00 EXPECT_FALSE(isValidUtf8("\xed\xbf\xbf")); // U+DFFF } } TEST_F(Utf8Test, CodepointsBeyondUnicode) { using megacmd::isValidUtf8; G_SUBTEST << "Codepoints greater than U+10FFFF"; { // U+110000 (just beyond valid range) EXPECT_FALSE(isValidUtf8("\xf4\x90\x80\x80")); // U+13FFFF EXPECT_FALSE(isValidUtf8("\xf4\xbf\xbf\xbf")); // U+1FFFFF (would need all 4-byte space) EXPECT_FALSE(isValidUtf8("\xf7\xbf\xbf\xbf")); } } TEST_F(Utf8Test, MixedValidAndInvalid) { using megacmd::isValidUtf8; G_SUBTEST << "Invalid byte in middle of valid string"; { std::string str = "Hello"; str += "\xff"; // Invalid byte str += "World"; EXPECT_FALSE(isValidUtf8(str)); } G_SUBTEST << "Valid multibyte characters mixed with invalid"; { std::string str = "\xc3\xb1"; // Valid ñ str += "\x80"; // Invalid continuation byte alone EXPECT_FALSE(isValidUtf8(str)); } G_SUBTEST << "Invalid sequence at beginning"; { std::string str = "\xfe\x80\x80\x80\x80\x80Hello World"; EXPECT_FALSE(isValidUtf8(str)); } G_SUBTEST << "Invalid sequence at end"; { std::string str = "Hello World\xfe"; EXPECT_FALSE(isValidUtf8(str)); } } TEST_F(Utf8Test, ComplexValidStrings) { using megacmd::isValidUtf8; G_SUBTEST << "Mixed languages"; { // English + Cyrillic + Chinese + Emoji std::string str = "Hello \xD0\x9C\xD0\x98\xD0\xA0 \xe4\xb8\x96\xe7\x95\x8c \xf0\x9f\x8c\x8d"; EXPECT_TRUE(isValidUtf8(str)); } G_SUBTEST << "All byte-length characters together"; { std::string str; str += "A"; // 1 byte str += "\xc3\xa9"; // 2 bytes (é) str += "\xe4\xb8\xad"; // 3 bytes (中) str += "\xf0\x9f\x98\x80"; // 4 bytes (😀) EXPECT_TRUE(isValidUtf8(str)); } G_SUBTEST << "Long multilingual string"; { std::string str; for (int i = 0; i < 1000; ++i) { str += "A"; str += "\xc3\xb1"; // ñ str += "\xe4\xb8\xad"; // 中 str += "\xf0\x9f\x98\x80"; // 😀 } EXPECT_TRUE(isValidUtf8(str)); } G_SUBTEST << "Real-world file paths"; { EXPECT_TRUE(isValidUtf8("/home/user/Documents/\xD0\x94\xD0\xBE\xD0\xBA\xD1\x83\xD0\xBC\xD0\xB5\xD0\xBD\xD1\x82.txt")); // Ukrainian filename EXPECT_TRUE(isValidUtf8("/Users/\xe7\x94\xa8\xe6\x88\xb7/Desktop/file.txt")); // Chinese username EXPECT_TRUE(isValidUtf8("C:\\Users\\\xc3\x9cser\\Documents\\file.txt")); // German umlaut } G_SUBTEST << "URL-like strings with Unicode"; { EXPECT_TRUE(isValidUtf8("https://example.com/path/\xe4\xb8\xad\xe6\x96\x87")); EXPECT_TRUE(isValidUtf8("mega://\xD0\xBF\xD1\x83\xD1\x82\xD1\x8C/file")); } } TEST_F(Utf8Test, DisableValidationsEnvVar) { using megacmd::isValidUtf8; G_SUBTEST << "Invalid UTF-8 returns true when validations disabled"; { // Temporarily disable validations unsetEnvGuard.reset(); TestInstrumentsEnvVarGuard bypassGuard("MEGACMD_DISABLE_UTF8_VALIDATIONS", "1"); // These would normally fail, but with MEGACMD_DISABLE_UTF8_VALIDATIONS=1 they should pass EXPECT_TRUE(isValidUtf8("\xff")); EXPECT_TRUE(isValidUtf8("\xfe")); EXPECT_TRUE(isValidUtf8("\xc0\x80")); EXPECT_TRUE(isValidUtf8("\xed\xa0\x80")); } G_SUBTEST << "Invalid UTF-8 returns false when validations re-enabled"; { // Guard is destroyed, validations should be re-enabled // Re-initialize unsetEnvGuard to ensure clean state unsetEnvGuard = std::make_unique("MEGACMD_DISABLE_UTF8_VALIDATIONS"); EXPECT_FALSE(isValidUtf8("\xff")); EXPECT_FALSE(isValidUtf8("\xfe")); } } TEST_F(Utf8Test, BoundaryConditions) { using megacmd::isValidUtf8; G_SUBTEST << "Size-based overloads"; { const char data[] = "Hello\x00World"; EXPECT_TRUE(isValidUtf8(data, 11)); EXPECT_TRUE(isValidUtf8("Hello\xff", 5)); EXPECT_FALSE(isValidUtf8("Hello\xff", 6)); } G_SUBTEST << "std::string overload"; { std::string validStr = "\xc3\xb1"; // ñ EXPECT_TRUE(isValidUtf8(validStr)); std::string invalidStr; invalidStr += '\xc3'; // Incomplete sequence EXPECT_FALSE(isValidUtf8(invalidStr)); } G_SUBTEST << "Edge case character counts"; { // Single multibyte character EXPECT_TRUE(isValidUtf8("\xf0\x9f\x98\x80")); // Just emoji // Two adjacent 4-byte chars EXPECT_TRUE(isValidUtf8("\xf0\x9f\x98\x80\xf0\x9f\x98\x82")); } } TEST(PathUtf8Test, BasicPaths) { using megacmd::pathAsUtf8; G_SUBTEST << "ASCII path"; { fs::path p = "/home/user/file.txt"; std::string result = pathAsUtf8(p); #ifdef _WIN32 // On Windows, path might use backslashes EXPECT_TRUE(result.find("home") != std::string::npos); EXPECT_TRUE(result.find("user") != std::string::npos); EXPECT_TRUE(result.find("file.txt") != std::string::npos); #else EXPECT_EQ(result, "/home/user/file.txt"); #endif } G_SUBTEST << "Empty path"; { fs::path p; std::string result = pathAsUtf8(p); EXPECT_TRUE(result.empty()); } G_SUBTEST << "Current directory"; { fs::path p = "."; std::string result = pathAsUtf8(p); EXPECT_EQ(result, "."); } G_SUBTEST << "Parent directory"; { fs::path p = ".."; std::string result = pathAsUtf8(p); EXPECT_EQ(result, ".."); } } TEST(PathUtf8Test, UnicodePathsAllPlatforms) { using megacmd::pathAsUtf8; using megacmd::isValidUtf8; G_SUBTEST << "Cyrillic in path"; { std::string cyrillic = "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90"; // МЕГ� fs::path p = fs::u8path(cyrillic); std::string result = pathAsUtf8(p); EXPECT_TRUE(isValidUtf8(result)); // The result should contain the Cyrillic characters // Note: On Unix systems, pathAsUtf8() uses path.string() which returns the path // in the native filesystem encoding (depends on locale). On modern systems with // UTF-8 locale, Cyrillic characters are preserved. However, on systems with // non-UTF-8 locales (e.g., old systems with ISO-8859-1, KOI8-R, or misconfigured // locales), the characters may be lost or corrupted. The "MEGA" fallback checks // for potential transliteration by filesystem/OS, though this is rare in practice. // Reference: C++17 std::filesystem::path::string() uses native encoding, // not guaranteed to be UTF-8 on Unix (unlike path.u8string()). EXPECT_TRUE(result.find("\xD0\x9C") != std::string::npos || result.find("MEGA") != std::string::npos || // Fallback for non-UTF-8 locales !result.empty()); } G_SUBTEST << "Chinese characters in path"; { std::string chinese = "\xe4\xb8\xad\xe6\x96\x87"; // 中文 fs::path p = fs::u8path(chinese); std::string result = pathAsUtf8(p); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "Japanese characters in path"; { std::string japanese = "\xe3\x83\x86\xe3\x82\xb9\xe3\x83\x88"; // テスト fs::path p = fs::u8path(japanese); std::string result = pathAsUtf8(p); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "Emoji in path"; { std::string emoji = "\xf0\x9f\x93\x81"; // � fs::path p = fs::u8path(emoji); std::string result = pathAsUtf8(p); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "Mixed scripts in path"; { std::string mixed = "test_\xD0\xA4\xD0\xB0\xD0\xB9\xD0\xBB_\xe4\xb8\xad"; fs::path p = fs::u8path(mixed); std::string result = pathAsUtf8(p); EXPECT_TRUE(isValidUtf8(result)); } } #ifdef _WIN32 TEST(Utf16ConversionTest, Utf8ToUtf16Basic) { using megacmd::utf8StringToUtf16WString; G_SUBTEST << "Empty string"; { std::wstring result = utf8StringToUtf16WString(""); EXPECT_TRUE(result.empty()); } G_SUBTEST << "ASCII string"; { std::wstring result = utf8StringToUtf16WString("Hello World"); EXPECT_EQ(result, L"Hello World"); } G_SUBTEST << "Single ASCII character"; { std::wstring result = utf8StringToUtf16WString("A"); EXPECT_EQ(result, L"A"); } } TEST(Utf16ConversionTest, Utf8ToUtf16Multibyte) { using megacmd::utf8StringToUtf16WString; G_SUBTEST << "2-byte UTF-8 characters"; { // ñ (U+00F1) std::wstring result = utf8StringToUtf16WString("\xc3\xb1"); EXPECT_EQ(result, L"\x00F1"); } G_SUBTEST << "3-byte UTF-8 characters"; { // 中 (U+4E2D) std::wstring result = utf8StringToUtf16WString("\xe4\xb8\xad"); EXPECT_EQ(result, L"\x4E2D"); } G_SUBTEST << "4-byte UTF-8 characters (surrogate pairs in UTF-16)"; { // 😀 (U+1F600) - requires surrogate pair in UTF-16 std::wstring result = utf8StringToUtf16WString("\xf0\x9f\x98\x80"); // UTF-16 surrogate pair: D83D DE00 EXPECT_EQ(result, L"\xD83D\xDE00"); } G_SUBTEST << "Korean characters"; { // 안녕하세요세계 (Korean hello world) const char* utf8 = "\xec\x95\x88\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94\xec\x84\xb8\xea\xb3\x84"; std::wstring result = utf8StringToUtf16WString(utf8); EXPECT_EQ(result, L"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"); } G_SUBTEST << "Cyrillic characters"; { // МЕГ� std::wstring result = utf8StringToUtf16WString("\xD0\x9C\xD0\x95\xD0\x93\xD0\x90"); EXPECT_EQ(result, L"\x041C\x0415\x0413\x0410"); } } TEST(Utf16ConversionTest, Utf8ToUtf16WithLength) { using megacmd::utf8StringToUtf16WString; G_SUBTEST << "Partial string conversion"; { std::wstring result = utf8StringToUtf16WString("Hello World", 5); EXPECT_EQ(result, L"Hello"); } G_SUBTEST << "Zero length"; { std::wstring result = utf8StringToUtf16WString("Hello", 0); EXPECT_TRUE(result.empty()); } G_SUBTEST << "Partial multibyte character (edge case)"; { constexpr const char* utf8 = "\xc3\xb1"; // ñ std::wstring result = utf8StringToUtf16WString(utf8, 2); EXPECT_EQ(result, L"\x00F1"); } } TEST(Utf16ConversionTest, Utf16ToUtf8Basic) { using megacmd::utf16ToUtf8; using megacmd::isValidUtf8; G_SUBTEST << "Empty string"; { std::string result = utf16ToUtf8(L""); EXPECT_TRUE(result.empty()); } G_SUBTEST << "ASCII string"; { std::string result = utf16ToUtf8(L"Hello World"); EXPECT_EQ(result, "Hello World"); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "Single ASCII character"; { std::string result = utf16ToUtf8(L"A"); EXPECT_EQ(result, "A"); } } TEST(Utf16ConversionTest, Utf16ToUtf8Multibyte) { using megacmd::utf16ToUtf8; using megacmd::isValidUtf8; G_SUBTEST << "BMP characters"; { // ñ (U+00F1) std::string result = utf16ToUtf8(L"\x00F1"); EXPECT_EQ(result, "\xc3\xb1"); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "CJK characters"; { // 中 (U+4E2D) std::string result = utf16ToUtf8(L"\x4E2D"); EXPECT_EQ(result, "\xe4\xb8\xad"); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "Surrogate pairs (emoji)"; { // 😀 (U+1F600) as UTF-16 surrogate pair std::wstring ws; ws += (wchar_t)0xD83D; ws += (wchar_t)0xDE00; std::string result = utf16ToUtf8(ws); EXPECT_EQ(result, "\xf0\x9f\x98\x80"); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "Korean characters"; { std::string result = utf16ToUtf8(L"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"); EXPECT_TRUE(isValidUtf8(result)); EXPECT_EQ(result, "\xec\x95\x88\xec\x95\x88\xeb\x85\x95\xed\x95\x98\xec\x84\xb8\xec\x9a\x94\xec\x84\xb8\xea\xb3\x84"); } G_SUBTEST << "Cyrillic characters"; { std::string result = utf16ToUtf8(L"\x041C\x0415\x0413\x0410"); EXPECT_EQ(result, "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90"); EXPECT_TRUE(isValidUtf8(result)); } } TEST(Utf16ConversionTest, Utf16ToUtf8Overloads) { using megacmd::utf16ToUtf8; using megacmd::isValidUtf8; G_SUBTEST << "const wchar_t* overload"; { constexpr const wchar_t* ws = L"Hello"; std::string result = utf16ToUtf8(ws); EXPECT_EQ(result, "Hello"); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "std::wstring overload"; { std::wstring ws = L"Hello"; std::string result = utf16ToUtf8(ws); EXPECT_EQ(result, "Hello"); EXPECT_TRUE(isValidUtf8(result)); } G_SUBTEST << "Output parameter overload"; { std::string output; megacmd::utf16ToUtf8(L"Test", 4, &output); EXPECT_EQ(output, "Test"); EXPECT_TRUE(isValidUtf8(output)); } } TEST(Utf16ConversionTest, RoundTrip) { using megacmd::utf8StringToUtf16WString; using megacmd::utf16ToUtf8; using megacmd::isValidUtf8; G_SUBTEST << "ASCII round-trip"; { std::string original = "Hello World 123!@#"; std::wstring utf16 = utf8StringToUtf16WString(original.c_str()); std::string back = utf16ToUtf8(utf16); EXPECT_EQ(back, original); EXPECT_TRUE(isValidUtf8(back)); } G_SUBTEST << "Multibyte round-trip"; { std::string original = "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90"; // МЕГ� std::wstring utf16 = utf8StringToUtf16WString(original.c_str()); std::string back = utf16ToUtf8(utf16); EXPECT_EQ(back, original); EXPECT_TRUE(isValidUtf8(back)); } G_SUBTEST << "Emoji round-trip"; { std::string original = "\xf0\x9f\x98\x80"; // 😀 std::wstring utf16 = utf8StringToUtf16WString(original.c_str()); std::string back = utf16ToUtf8(utf16); EXPECT_EQ(back, original); EXPECT_TRUE(isValidUtf8(back)); } G_SUBTEST << "Mixed content round-trip"; { std::string original = "Hello \xD0\x9C\xD0\x98\xD0\xA0 \xe4\xb8\x96\xe7\x95\x8c \xf0\x9f\x8c\x8d!"; std::wstring utf16 = utf8StringToUtf16WString(original.c_str()); std::string back = utf16ToUtf8(utf16); EXPECT_EQ(back, original); EXPECT_TRUE(isValidUtf8(back)); } G_SUBTEST << "Long string round-trip"; { std::string original; for (int i = 0; i < 1000; ++i) { original += "Test \xc3\xb1 "; } std::wstring utf16 = utf8StringToUtf16WString(original.c_str()); std::string back = utf16ToUtf8(utf16); EXPECT_EQ(back, original); EXPECT_TRUE(isValidUtf8(back)); } } TEST(Utf16ConversionTest, EdgeCases) { using megacmd::utf8StringToUtf16WString; using megacmd::utf16ToUtf8; G_SUBTEST << "BOM handling (UTF-8 BOM)"; { std::string withBom = "\xef\xbb\xbf" "Hello"; std::wstring utf16 = utf8StringToUtf16WString(withBom.c_str()); // BOM should be converted to UTF-16 BOM (U+FEFF) EXPECT_EQ(utf16[0], 0xFEFF); } G_SUBTEST << "Special Unicode characters"; { // Zero-width joiner (U+200D) std::string zwj = "\xe2\x80\x8d"; std::wstring utf16 = utf8StringToUtf16WString(zwj.c_str()); EXPECT_EQ(utf16, L"\x200D"); } G_SUBTEST << "Arrows and symbols"; { // ▼ (U+25BC) std::wstring input = L"\u25bc"; std::string result = utf16ToUtf8(input); EXPECT_EQ(result, "\xe2\x96\xbc"); } } TEST(StringToLocalWTest, BasicConversion) { using megacmd::stringtolocalw; G_SUBTEST << "Simple ASCII"; { std::wstring result; stringtolocalw("Hello", &result); EXPECT_EQ(result, L"Hello"); } G_SUBTEST << "Empty string"; { std::wstring result; stringtolocalw("", &result); EXPECT_TRUE(result.empty()); } G_SUBTEST << "UTF-8 to wstring"; { std::wstring result; stringtolocalw("\xc3\xb1", &result); // ñ EXPECT_EQ(result, L"\x00F1"); } } TEST(LocalWToStringTest, BasicConversion) { using megacmd::localwtostring; G_SUBTEST << "Simple ASCII"; { std::wstring input = L"Hello"; std::string result; localwtostring(&input, &result); EXPECT_EQ(result, "Hello"); } G_SUBTEST << "Empty string"; { std::wstring input; std::string result; localwtostring(&input, &result); EXPECT_TRUE(result.empty()); } G_SUBTEST << "Wide char to UTF-8"; { std::wstring input = L"\x00F1"; // ñ std::string result; localwtostring(&input, &result); EXPECT_EQ(result, "\xc3\xb1"); } } TEST(NonMaxPathLimitedTest, PathPrefixing) { using megacmd::nonMaxPathLimitedWstring; using megacmd::nonMaxPathLimitedPath; G_SUBTEST << "Regular path gets prefixed"; { fs::path p = "C:\\test\\path"; std::wstring result = nonMaxPathLimitedWstring(p); EXPECT_TRUE(result.find(L"\\\\?\\") == 0); } G_SUBTEST << "Already prefixed path unchanged"; { fs::path p = "\\\\?\\C:\\test\\path"; std::wstring result = nonMaxPathLimitedWstring(p); EXPECT_TRUE(result.find(L"\\\\?\\") == 0); // Should not double-prefix EXPECT_TRUE(result.find(L"\\\\?\\\\\\?\\") == std::wstring::npos); } G_SUBTEST << "Path version"; { fs::path p = "C:\\test\\path"; fs::path result = nonMaxPathLimitedPath(p); EXPECT_TRUE(result.wstring().find(L"\\\\?\\") == 0); } } #endif // _WIN32 TEST_F(Utf8Test, InvalidUtf8Incidences) { using megacmd::isValidUtf8; using megacmd::sInvalidUtf8Incidences; // Note: This test depends on internal state which may be affected by other tests uint64_t initialCount = sInvalidUtf8Incidences.load(); G_SUBTEST << "Counter increments on invalid UTF-8"; { EXPECT_FALSE(isValidUtf8("\xff")); EXPECT_GT(sInvalidUtf8Incidences.load(), initialCount); uint64_t afterFirst = sInvalidUtf8Incidences.load(); EXPECT_FALSE(isValidUtf8("\xfe")); EXPECT_GT(sInvalidUtf8Incidences.load(), afterFirst); } G_SUBTEST << "Counter does not increment on valid UTF-8"; { uint64_t before = sInvalidUtf8Incidences.load(); EXPECT_TRUE(isValidUtf8("Hello World")); EXPECT_TRUE(isValidUtf8("\xc3\xb1")); EXPECT_TRUE(isValidUtf8("\xe4\xb8\xad")); EXPECT_TRUE(isValidUtf8("\xf0\x9f\x98\x80")); EXPECT_EQ(sInvalidUtf8Incidences.load(), before); } } TEST_F(Utf8Test, StressLargeValidStrings) { using megacmd::isValidUtf8; G_SUBTEST << "Very long ASCII string"; { std::string longStr(1000000, 'a'); EXPECT_TRUE(isValidUtf8(longStr)); } G_SUBTEST << "Very long multibyte string"; { std::string longStr; longStr.reserve(1000000 * 4); for (int i = 0; i < 250000; ++i) { longStr += "\xf0\x9f\x98\x80"; // 4-byte emoji } EXPECT_TRUE(isValidUtf8(longStr)); } G_SUBTEST << "Mixed content large string"; { std::string mixedStr; mixedStr.reserve(100000); for (int i = 0; i < 10000; ++i) { mixedStr += "ASCII "; mixedStr += "\xc3\xb1"; // 2-byte mixedStr += " "; mixedStr += "\xe4\xb8\xad"; // 3-byte mixedStr += " "; mixedStr += "\xf0\x9f\x98\x80"; // 4-byte mixedStr += " "; } EXPECT_TRUE(isValidUtf8(mixedStr)); } } TEST_F(Utf8Test, StressManySmallValidations) { using megacmd::isValidUtf8; std::vector testStrings = { "a", "\xc3\xb1", "\xe4\xb8\xad", "\xf0\x9f\x98\x80", "Hello World", "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90", "" }; G_SUBTEST << "Many repeated validations"; { for (int i = 0; i < 100000; ++i) { for (const auto& str : testStrings) { EXPECT_TRUE(isValidUtf8(str)); } } } } #ifdef _WIN32 TEST_F(Utf8Test, StressLargeConversions) { using megacmd::utf8StringToUtf16WString; using megacmd::utf16ToUtf8; using megacmd::isValidUtf8; G_SUBTEST << "Large UTF-8 to UTF-16 conversion"; { std::string largeUtf8; largeUtf8.reserve(100000); for (int i = 0; i < 10000; ++i) { largeUtf8 += "\xD0\x9C\xD0\x95\xD0\x93\xD0\x90 "; } std::wstring utf16 = utf8StringToUtf16WString(largeUtf8.c_str()); EXPECT_GT(utf16.size(), 0); std::string backToUtf8 = utf16ToUtf8(utf16); EXPECT_EQ(backToUtf8, largeUtf8); EXPECT_TRUE(isValidUtf8(backToUtf8)); } G_SUBTEST << "Many small conversions"; { for (int i = 0; i < 10000; ++i) { std::wstring utf16 = utf8StringToUtf16WString("Test \xc3\xb1 string"); std::string utf8 = utf16ToUtf8(utf16); EXPECT_EQ(utf8, "Test \xc3\xb1 string"); } } } #endif MEGAcmd-2.5.2_Linux/tests/unit/UtilsTests.cpp000066400000000000000000000450651516543156300210670ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include #include #include #include #include #include #ifdef _WIN32 #include #include #else #include #include #endif #include #include #include "TestUtils.h" #include "megacmdcommonutils.h" #include "Instruments.h" namespace fs = std::filesystem; // Returns a list of path variants for testing: // 1. Original path // 2. Kernel format (\\?\ prefix) on Windows // 3. UNC format on Windows std::vector pathVariants(const std::string& path) { std::vector variants{path}; #ifdef _WIN32 std::string_view pathView{path}; bool isKernel = pathView.size() >= 4 && pathView.substr(0, 4) == R"(\\?\)"; bool isKernelWithUnc = pathView.size() >= 8 && pathView.substr(0, 8) == R"(\\?\UNC\)"; bool isUnc = pathView.size() >= 2 && pathView.substr(0, 2) == R"(\\)" && !isKernel; if (isKernelWithUnc) { std::string uncPath = R"(\\)" + std::string(pathView.substr(8)); variants.push_back(uncPath); variants.push_back(path); } else if (isUnc) { std::string kernelUncPath = R"(\\?\UNC\)" + std::string(pathView.substr(2)); variants.push_back(kernelUncPath); variants.push_back(path); } else if (isKernel) { std::string localPath = std::string(pathView.substr(4)); variants.push_back(localPath); if (localPath.size() >= 2 && localPath[1] == ':') { std::string uncPath = R"(\\localhost\)" + localPath.substr(0, 1) + R"($\)" + localPath.substr(3); variants.push_back(uncPath); } else { variants.push_back(path); } } else { std::string kernelPath = R"(\\?\)" + path; variants.push_back(kernelPath); if (pathView.size() >= 2 && pathView[1] == ':') { std::string uncPath = R"(\\localhost\)" + path.substr(0, 1) + R"($\)"; if (pathView.size() > 3) { uncPath += pathView.substr(3); } variants.push_back(uncPath); } else { variants.push_back(kernelPath); // duplicate } } #endif return variants; } void testCanWriteAllPathVariants(const std::string& path, bool expectedResult) { using megacmd::canWrite; auto variants = pathVariants(path); #ifdef _WIN32 ASSERT_EQ(variants.size(), 3); #else ASSERT_EQ(variants.size(), 1); #endif for (const auto& variant : variants) { EXPECT_EQ(canWrite(variant), expectedResult) << "Path: " << variant; } } TEST(UtilsTest, nonAsciiConsolePrint) { // No need to check the output, we just want to ensure // the test doesn't crash and no asserts are triggered const char* char_str = u8"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"; std::cout << "something before" << char_str << std::endl; std::cout << char_str << std::endl; std::cout << char_str << "something after" << std::endl; std::cerr << "something before" << char_str << std::endl; std::cerr << char_str << std::endl; std::cerr << char_str << "something after" << std::endl; const std::string str = u8"\u3053\u3093\u306b\u3061\u306f\u4e16\u754c"; std::cout << "something before" << str << std::endl; std::cout << str << std::endl; std::cout << str << "something after" << std::endl; std::cerr << "something before" << str << std::endl; std::cerr << str << std::endl; std::cerr << str << "something after" << std::endl; #ifdef _WIN32 const wchar_t* wchar_str = L"\uc548\uc548\ub155\ud558\uc138\uc694\uc138\uacc4"; std::wcout << "something before" << wchar_str << std::endl; std::wcout << wchar_str << std::endl; std::wcout << wchar_str << "something after" << std::endl; std::wcerr << "something before" << wchar_str << std::endl; std::wcerr << wchar_str << std::endl; std::wcerr << wchar_str << "something after" << std::endl; const std::wstring wstr = L"\u3053\u3093\u306b\u3061\u306f\u4e16\u754c"; std::wcout << "something before" << wstr << std::endl; std::wcout << wstr << std::endl; std::wcout << wstr << "something after" << std::endl; std::wcerr << "something before" << wstr << std::endl; std::wcerr << wstr << std::endl; std::wcerr << wstr << "something after" << std::endl; std::wcout << megacmd::utf8StringToUtf16WString(char_str) << std::endl; std::wcerr << megacmd::utf8StringToUtf16WString(char_str) << std::endl; std::wcout << megacmd::utf8StringToUtf16WString(str.data(), str.size()) << std::endl; std::wcerr << megacmd::utf8StringToUtf16WString(str.data(), str.size()) << std::endl; std::cout << megacmd::utf16ToUtf8(wchar_str) << std::endl; std::cerr << megacmd::utf16ToUtf8(wchar_str) << std::endl; std::cout << megacmd::utf16ToUtf8(wstr) << std::endl; std::cerr << megacmd::utf16ToUtf8(wstr) << std::endl; #endif } TEST(StringUtilsTest, generateRandomAlphaNumericString) { using megacmd::generateRandomAlphaNumericString; G_SUBTEST << "Generate string of specific length"; { std::string result = generateRandomAlphaNumericString(10); EXPECT_EQ(result.length(), 10); } G_SUBTEST << "Generate empty string"; { std::string result = generateRandomAlphaNumericString(0); EXPECT_EQ(result.length(), 0); } G_SUBTEST << "Generate long string"; { std::string result = generateRandomAlphaNumericString(100); EXPECT_EQ(result.length(), 100); } G_SUBTEST << "Generated strings are different"; { std::string result1 = generateRandomAlphaNumericString(20); std::string result2 = generateRandomAlphaNumericString(20); EXPECT_NE(result1, result2); } G_SUBTEST << "Generated string contains alphanumeric characters"; { std::string result = generateRandomAlphaNumericString(1000); for (char c : result) { EXPECT_TRUE(std::isalnum(c)); } } } TEST(UtilsTest, getNumberOfCols) { using megacmd::getNumberOfCols; G_SUBTEST << "Base case"; { auto cols = getNumberOfCols(); EXPECT_GT(cols, 0u); } G_SUBTEST << "With default value"; { auto cols = getNumberOfCols(80); EXPECT_GT(cols, 0u); } G_SUBTEST << "Multiple calls return consistent results"; { auto cols1 = getNumberOfCols(80); auto cols2 = getNumberOfCols(80); EXPECT_EQ(cols1, cols2); } G_SUBTEST << "Result is reasonable size"; { unsigned int cols = getNumberOfCols(); EXPECT_LE(cols, 10000u); } } TEST(UtilsTest, canWrite) { using megacmd::canWrite; G_SUBTEST << "Writable directory"; { SelfDeletingTmpFolder tmpFolder; testCanWriteAllPathVariants(tmpFolder.string(), true); } G_SUBTEST << "Non-existent path"; { #ifdef _WIN32 testCanWriteAllPathVariants(R"(C:\non\existent\path\12345)", false); #else testCanWriteAllPathVariants("/non/existent/path/12345", false); #endif } G_SUBTEST << "Empty string"; { testCanWriteAllPathVariants("", false); } G_SUBTEST << "File path"; { SelfDeletingTmpFolder tmpFolder; fs::path filePath = tmpFolder.path() / "test.txt"; std::ofstream file(filePath); file << "test"; file.close(); #ifdef _WIN32 std::string pathStr = filePath.string(); #else std::string pathStr = filePath.string(); #endif testCanWriteAllPathVariants(pathStr, true); } G_SUBTEST << "Path with trailing slash"; { SelfDeletingTmpFolder tmpFolder; #ifdef _WIN32 std::string pathWithSlash = tmpFolder.string() + R"(\)"; #else std::string pathWithSlash = tmpFolder.string() + "/"; #endif testCanWriteAllPathVariants(pathWithSlash, true); } G_SUBTEST << "Path with only spaces"; { #ifdef _WIN32 testCanWriteAllPathVariants(" ", true); // Edge case on Windows, see canWrite() implementation #else testCanWriteAllPathVariants(" ", false); #endif } G_SUBTEST << "Very long path"; { SelfDeletingTmpFolder tmpFolder; std::string longPath = tmpFolder.string(); #ifdef _WIN32 longPath += R"(\)" + std::string(200, 'a'); #else longPath += "/" + std::string(200, 'a'); #endif EXPECT_TRUE(fs::create_directories(longPath)); testCanWriteAllPathVariants(longPath, true); } G_SUBTEST << "Very long path exceeding 255 characters and MAX_PATH"; { SelfDeletingTmpFolder tmpFolder; std::string longPath = tmpFolder.string(); #ifdef _WIN32 longPath += R"(\)" + std::string(300, 'a'); #else longPath += "/" + std::string(300, 'a'); #endif EXPECT_THROW(fs::create_directories(longPath), std::filesystem::filesystem_error); testCanWriteAllPathVariants(longPath, false); } G_SUBTEST << "Path with special characters"; { SelfDeletingTmpFolder tmpFolder; fs::path specialPath = tmpFolder.path() / "test@#$%^&()_+-=[]{};',."; EXPECT_TRUE(fs::create_directory(specialPath)); testCanWriteAllPathVariants(specialPath.string(), true); } G_SUBTEST << "Read-only directory"; { SelfDeletingTmpFolder tmpFolder; fs::path readOnlyDir = tmpFolder.path() / "readonly"; EXPECT_TRUE(fs::create_directory(readOnlyDir)); #ifdef _WIN32 // On Windows, FILE_ATTRIBUTE_READONLY on directories is an Explorer // folder-customization signal (desktop.ini), not an access control flag. // canWrite must ignore it and rely on _waccess() / ACLs instead. // See Microsoft KB326549. std::wstring wpath = readOnlyDir.wstring(); DWORD oldAttrs = GetFileAttributesW(wpath.c_str()); SetFileAttributesW(wpath.c_str(), oldAttrs | FILE_ATTRIBUTE_READONLY); testCanWriteAllPathVariants(readOnlyDir.string(), true); SetFileAttributesW(wpath.c_str(), oldAttrs); #else chmod(readOnlyDir.c_str(), 0555); testCanWriteAllPathVariants(readOnlyDir.string(), false); chmod(readOnlyDir.c_str(), 0755); #endif } G_SUBTEST << "Read-only file"; { SelfDeletingTmpFolder tmpFolder; fs::path readOnlyFile = tmpFolder.path() / "readonly.txt"; std::ofstream file(readOnlyFile); file << "test"; file.close(); #ifdef _WIN32 std::wstring wpath = readOnlyFile.wstring(); DWORD oldAttrs = GetFileAttributesW(wpath.c_str()); SetFileAttributesW(wpath.c_str(), FILE_ATTRIBUTE_READONLY); testCanWriteAllPathVariants(readOnlyFile.string(), false); SetFileAttributesW(wpath.c_str(), oldAttrs); #else chmod(readOnlyFile.c_str(), 0444); testCanWriteAllPathVariants(readOnlyFile.string(), false); chmod(readOnlyFile.c_str(), 0644); #endif } G_SUBTEST << "Symlink to writable directory"; { SelfDeletingTmpFolder tmpFolder; fs::path targetDir = tmpFolder.path() / "target"; EXPECT_TRUE(fs::create_directory(targetDir)); fs::path symlinkPath = tmpFolder.path() / "symlink"; fs::create_symlink(targetDir, symlinkPath); testCanWriteAllPathVariants(symlinkPath.string(), true); } G_SUBTEST << "Symlink to read-only directory"; { SelfDeletingTmpFolder tmpFolder; fs::path targetDir = tmpFolder.path() / "target"; EXPECT_TRUE(fs::create_directory(targetDir)); #ifndef _WIN32 chmod(targetDir.c_str(), 0555); fs::path symlinkPath = tmpFolder.path() / "symlink"; fs::create_symlink(targetDir, symlinkPath); testCanWriteAllPathVariants(symlinkPath.string(), false); chmod(targetDir.c_str(), 0755); #endif } G_SUBTEST << "Nested directory structure"; { SelfDeletingTmpFolder tmpFolder; fs::path nestedPath = tmpFolder.path() / "level1" / "level2" / "level3"; EXPECT_TRUE(fs::create_directories(nestedPath)); testCanWriteAllPathVariants(nestedPath.string(), true); } G_SUBTEST << "Directory with UTF-8 characters"; { SelfDeletingTmpFolder tmpFolder; std::string utf8DirName = u8"\u041f\u0440\u0438\u0432\u0456\u0442"; // Ukrainian fs::path utf8Path = tmpFolder.path() / utf8DirName; EXPECT_TRUE(fs::create_directory(utf8Path)); #ifdef _WIN32 std::string utf8PathStr = megacmd::pathAsUtf8(utf8Path); #else std::string utf8PathStr = utf8Path.string(); #endif testCanWriteAllPathVariants(utf8PathStr, true); } G_SUBTEST << "Nested directory with UTF-8 characters"; { SelfDeletingTmpFolder tmpFolder; std::string utf8DirName = u8"\u4e2d\u6587"; // Chinese fs::path utf8Path = tmpFolder.path() / utf8DirName / "subdir"; EXPECT_TRUE(fs::create_directories(utf8Path)); #ifdef _WIN32 std::string utf8PathStr = megacmd::pathAsUtf8(utf8Path); #else std::string utf8PathStr = utf8Path.string(); #endif testCanWriteAllPathVariants(utf8PathStr, true); } } #ifdef _WIN32 // Regression: FILE_ATTRIBUTE_READONLY on directories is an Explorer // folder-customization hint (desktop.ini), not an access restriction. // canWrite() used to check this attribute and return false for directories // that were perfectly writable. See Microsoft KB326549. TEST(UtilsTest, canWriteIgnoresReadOnlyAttributeOnDirectories) { using megacmd::canWrite; G_SUBTEST << "Directory with FILE_ATTRIBUTE_READONLY is still writable"; { SelfDeletingTmpFolder tmpFolder; fs::path dir = tmpFolder.path() / "customized_folder"; EXPECT_TRUE(fs::create_directory(dir)); std::wstring wpath = dir.wstring(); DWORD oldAttrs = GetFileAttributesW(wpath.c_str()); // Simulate what Explorer does for folder customization SetFileAttributesW(wpath.c_str(), oldAttrs | FILE_ATTRIBUTE_READONLY); // Verify the attribute is actually set DWORD newAttrs = GetFileAttributesW(wpath.c_str()); EXPECT_TRUE(newAttrs & FILE_ATTRIBUTE_READONLY); // canWrite must return true — the directory is writable despite the attribute testCanWriteAllPathVariants(dir.string(), true); SetFileAttributesW(wpath.c_str(), oldAttrs); } G_SUBTEST << "Directory with FILE_ATTRIBUTE_READONLY and trailing separator"; { SelfDeletingTmpFolder tmpFolder; fs::path dir = tmpFolder.path() / "customized_folder2"; EXPECT_TRUE(fs::create_directory(dir)); std::wstring wpath = dir.wstring(); DWORD oldAttrs = GetFileAttributesW(wpath.c_str()); SetFileAttributesW(wpath.c_str(), oldAttrs | FILE_ATTRIBUTE_READONLY); testCanWriteAllPathVariants(dir.string() + R"(\)", true); SetFileAttributesW(wpath.c_str(), oldAttrs); } G_SUBTEST << "Read-only file is still correctly rejected"; { SelfDeletingTmpFolder tmpFolder; fs::path file = tmpFolder.path() / "readonly.txt"; std::ofstream ofs(file); ofs << "test"; ofs.close(); std::wstring wpath = file.wstring(); DWORD oldAttrs = GetFileAttributesW(wpath.c_str()); SetFileAttributesW(wpath.c_str(), oldAttrs | FILE_ATTRIBUTE_READONLY); // For files, FILE_ATTRIBUTE_READONLY *does* mean read-only, // and _waccess should return EACCES EXPECT_FALSE(canWrite(file.string())); SetFileAttributesW(wpath.c_str(), oldAttrs); } } #endif #ifdef _WIN32 TEST(UtilsTest, canWriteWithBypassEnvVar) { using megacmd::canWrite; G_SUBTEST << "MEGACMD_BYPASS_CAN_WRITE=1 makes canWrite always return true"; { TestInstrumentsEnvVarGuard bypassGuard("MEGACMD_BYPASS_CAN_WRITE", "1"); G_SUBSUBTEST << "Non-existent path should return true"; { EXPECT_TRUE(canWrite(R"(C:\non\existent\path\12345)")); } G_SUBSUBTEST << "Empty string should return true"; { EXPECT_TRUE(canWrite("")); } G_SUBSUBTEST << "Read-only directory should return true"; { SelfDeletingTmpFolder tmpFolder; fs::path readOnlyDir = tmpFolder.path() / "readonly"; EXPECT_TRUE(fs::create_directory(readOnlyDir)); std::wstring wpath = readOnlyDir.wstring(); SetFileAttributesW(wpath.c_str(), FILE_ATTRIBUTE_READONLY); EXPECT_TRUE(canWrite(readOnlyDir.string())); } G_SUBSUBTEST << "Read-only file should return true"; { SelfDeletingTmpFolder tmpFolder; fs::path readOnlyFile = tmpFolder.path() / "readonly.txt"; std::ofstream file(readOnlyFile); file << "test"; file.close(); std::wstring wpath = readOnlyFile.wstring(); SetFileAttributesW(wpath.c_str(), FILE_ATTRIBUTE_READONLY); EXPECT_TRUE(canWrite(readOnlyFile.string())); } G_SUBSUBTEST << "Writable directory should return true"; { SelfDeletingTmpFolder tmpFolder; EXPECT_TRUE(canWrite(tmpFolder.string())); } } G_SUBTEST << "MEGACMD_BYPASS_CAN_WRITE not set or not equal to 1 should work normally"; { TestInstrumentsUnsetEnvVarGuard unsetGuard("MEGACMD_BYPASS_CAN_WRITE"); G_SUBSUBTEST << "Non-existent path should return false"; { EXPECT_FALSE(canWrite(R"(C:\non\existent\path\12345)")); } G_SUBSUBTEST << "Empty string should return false"; { EXPECT_FALSE(canWrite("")); } G_SUBSUBTEST << "Writable directory should return true"; { SelfDeletingTmpFolder tmpFolder; EXPECT_TRUE(canWrite(tmpFolder.string())); } } G_SUBTEST << "MEGACMD_BYPASS_CAN_WRITE set to value other than 1 should work normally"; { TestInstrumentsEnvVarGuard bypassGuard("MEGACMD_BYPASS_CAN_WRITE", "0"); G_SUBSUBTEST << "Non-existent path should return false"; { EXPECT_FALSE(canWrite(R"(C:\non\existent\path\12345)")); } G_SUBSUBTEST << "Writable directory should return true"; { SelfDeletingTmpFolder tmpFolder; EXPECT_TRUE(canWrite(tmpFolder.string())); } } } #endif MEGAcmd-2.5.2_Linux/tests/unit/main.cpp000066400000000000000000000022611516543156300176570ustar00rootroot00000000000000/** * (c) 2013 by Mega Limited, Auckland, New Zealand * * This file is part of MEGAcmd. * * MEGAcmd is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright Simplified (2-clause) BSD License. * * You should have received a copy of the license along with this * program. */ #include "megacmdcommonutils.h" #include "megaapi.h" #include #include "TestUtils.h" int main (int argc, char *argv[]) { mega::MegaApi::setLogToConsole(true); mega::MegaApi::setLogLevel(mega::MegaApi::LOG_LEVEL_MAX); testing::InitGoogleTest(&argc, argv); #ifdef WIN32 megacmd::Instance windowsConsoleController; // Set custom gtests event listener to control the output to stdout ::testing::TestEventListeners& listeners = ::testing::UnitTest::GetInstance()->listeners(); auto customListener = new CustomTestEventListener(); customListener->mDefault.reset(listeners.Release(listeners.default_result_printer())); listeners.Append(customListener); #endif return RUN_ALL_TESTS(); } MEGAcmd-2.5.2_Linux/vcpkg.json000066400000000000000000000047041516543156300161170ustar00rootroot00000000000000{ "$schema" : "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json", "name" : "sdklib", "homepage" : "https://github.com/meganz/megacmd", "features" : { "megacmd-enable-tests": { "description": "Compile MEGAcmd tests", "dependencies": [ "gtest" ] }, "use-openssl": { "description": "OpenSSL library", "dependencies": [ "openssl" ] }, "use-mediainfo": { "description": "MediaInfo library", "dependencies": [ "libmediainfo" ] }, "use-freeimage": { "description": "FreeImage library", "dependencies": [ "freeimage", { "name": "jasper", "default-features": false } ] }, "use-ffmpeg": { "description": "FFMpeg library", "dependencies": [ { "name": "ffmpeg", "default-features": false, "features": ["avcodec", "avformat", "swresample", "swscale"] } ] }, "use-libuv": { "description": "libuv library", "dependencies": [ "libuv" ] }, "use-pdfium": { "description": "pdfium library", "dependencies": [ "pdfium" ] }, "use-readline": { "description": "Readline library", "dependencies": [ "readline" ] }, "sdk-tests": { "description": "gtests library for the integration and unit tests", "dependencies": [ "gtest" ] }, "c-ares-backend-curl": { "description": "Enable c-ares backend for curl", "dependencies": [ { "name": "curl", "features": [ "c-ares" ] } ] } }, "dependencies": [ "pcre", "cryptopp", { "name": "curl", "features": [ "zstd" ] }, "icu", "libsodium", "sqlite3" ], "builtin-baseline": "ef7dbf94b9198bc58f45951adcf1f041fcbc5ea0", "overrides": [ { "name": "icu", "version": "74.2#4" }, { "name": "libuv", "version": "1.49.2" } ] }