pax_global_header00006660000000000000000000000064144703577740014534gustar00rootroot0000000000000052 comment=89368f63c99d67cde8868c0269b66a1b0c507397 chiaki-v2.2.0/000077500000000000000000000000001447035777400131535ustar00rootroot00000000000000chiaki-v2.2.0/.appveyor.yml000066400000000000000000000022741447035777400156260ustar00rootroot00000000000000image: - macOS - 'Visual Studio 2019' branches: only: - master - develop - /^v\d.*$/ - /^deploy-test(-.*)?$/ configuration: - Release for: - matrix: only: - image: 'Visual Studio 2019' install: - git submodule update --init --recursive build_script: - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" x64 - C:\msys64\usr\bin\bash -lc "cd \"%APPVEYOR_BUILD_FOLDER%\" && scripts/appveyor-win.sh" artifacts: - path: Chiaki name: Chiaki - path: Chiaki-PDB name: Chiaki-PDB - matrix: only: - image: macOS install: - git submodule update --init --recursive - sudo pip3 install protobuf - HOMEBREW_NO_AUTO_UPDATE=1 brew install qt@5 opus openssl@1.1 nasm sdl2 protobuf - scripts/build-ffmpeg.sh build_script: - export CMAKE_PREFIX_PATH="`pwd`/ffmpeg-prefix;/usr/local/opt/openssl@1.1;/usr/local/opt/qt@5" - scripts/build-common.sh - cp -a build/gui/chiaki.app Chiaki.app - /usr/local/opt/qt@5/bin/macdeployqt Chiaki.app -dmg artifacts: - path: Chiaki.dmg name: Chiaki chiaki-v2.2.0/.builds/000077500000000000000000000000001447035777400145135ustar00rootroot00000000000000chiaki-v2.2.0/.builds/android.yml000066400000000000000000000014531447035777400166610ustar00rootroot00000000000000image: alpine/latest packages: - docker sources: - https://git.sr.ht/~thestr4ng3r/chiaki artifacts: - Chiaki.apk - Chiaki.aab secrets: - 163950ff-2ac4-423d-a280-d2d9edbef000 - f4bce41f-f96b-4633-80d8-0ff5dd74dc2a tasks: - build: | cp -v ~/chiaki-local.properties chiaki/android/local.properties || echo "Secrets not available" sudo service docker start timeout 15 sh -c "until sudo docker info; do sleep 0.5; done" sudo docker run \ -v /home/build:/home/build \ -u $(id -u):$(id -g) \ thestr4ng3r/android:90d826e \ /bin/bash -c "cd /home/build/chiaki/android && ./gradlew assembleRelease bundleRelease" cp chiaki/android/app/build/outputs/apk/release/app-release*.apk Chiaki.apk cp chiaki/android/app/build/outputs/bundle/release/app-release*.aab Chiaki.aab chiaki-v2.2.0/.builds/common.yml000066400000000000000000000024751447035777400165360ustar00rootroot00000000000000 image: alpine/latest sources: - https://git.sr.ht/~thestr4ng3r/chiaki packages: - cmake - ninja - protoc - py3-protobuf - py3-setuptools - opus-dev - qt5-qtbase-dev - qt5-qtsvg-dev - qt5-qtmultimedia-dev - ffmpeg-dev - sdl2-dev - podman - fuse - udev - argp-standalone artifacts: - chiaki.nro - Chiaki.AppImage tasks: - setup_podman: | sudo rc-service udev start sudo rc-service cgroups start sudo rc-service fuse start # Fuse for AppImages echo build:100000:65536 | sudo tee /etc/subuid echo build:100000:65536 | sudo tee /etc/subgid # https://www.kernel.org/doc/Documentation/networking/tuntap.txt # for slirp4netns sudo mkdir -p /dev/net sudo mknod /dev/net/tun c 10 200 sudo chmod 0666 /dev/net/tun - local_build_and_test: | cd chiaki cmake -Bbuild -GNinja -DCHIAKI_ENABLE_CLI=ON -DCHIAKI_ENABLE_GUI=ON -DCHIAKI_CLI_ARGP_STANDALONE=ON ninja -C build build/test/chiaki-unit - appimage: | cd chiaki scripts/run-podman-build-appimage.sh cp appimage/Chiaki.AppImage ../Chiaki.AppImage - switch: | cd chiaki scripts/switch/run-podman-build-chiaki.sh cp build_switch/switch/chiaki.nro ../chiaki.nro - bullseye: | cd chiaki scripts/run-podman-build-bullseye.sh chiaki-v2.2.0/.builds/freebsd.yml000066400000000000000000000006361447035777400166550ustar00rootroot00000000000000 image: freebsd/13.x sources: - https://git.sr.ht/~thestr4ng3r/chiaki packages: - cmake - protobuf - py39-protobuf - opus - qt5-core - qt5-qmake - qt5-buildtools - qt5-gui - qt5-widgets - qt5-concurrent - qt5-svg - qt5-opengl - qt5-multimedia - ffmpeg - sdl2 tasks: - build: | cd chiaki mkdir build && cd build cmake .. make -j4 test/chiaki-unit chiaki-v2.2.0/.builds/openbsd.yml000066400000000000000000000005701447035777400166720ustar00rootroot00000000000000 image: openbsd/latest sources: - https://git.sr.ht/~thestr4ng3r/chiaki packages: - cmake - protobuf - py3-protobuf - opus - qtbase - qtsvg - qtmultimedia - ffmpeg - sdl2 tasks: - build: | cd chiaki mkdir build && cd build cmake -DCMAKE_PREFIX_PATH="/usr/local/lib;/usr/local/lib/qt5/cmake" .. make -j4 test/chiaki-unit chiaki-v2.2.0/.gitattributes000066400000000000000000000001011447035777400160360ustar00rootroot00000000000000/test/*.inl linguist-generated=true /lib/*.h linguist-language=C chiaki-v2.2.0/.gitignore000066400000000000000000000004721447035777400151460ustar00rootroot00000000000000*~ *.swp .idea build cmake-build-* /build_* /build-* .DS_store *.AppImage appdir /ffmpeg* /Chiaki /SDL2-* /opus* /ffmpeg* /sdl2-* /protoc* /openssl* .vs CMakeSettings.json chiaki.rb *.jks secret.tar keystore-env.sh compile_commands.json .ccls-cache .cache/ .gdb_history chiaki.conf /appimage .cache/ /*.app /*.dmg chiaki-v2.2.0/.gitmodules000066400000000000000000000012031447035777400153240ustar00rootroot00000000000000[submodule "test/munit"] path = test/munit url = https://github.com/nemequ/munit.git [submodule "third-party/nanopb"] path = third-party/nanopb url = https://github.com/nanopb/nanopb.git [submodule "third-party/jerasure"] path = third-party/jerasure url = https://git.sr.ht/~thestr4ng3r/jerasure [submodule "third-party/gf-complete"] path = third-party/gf-complete url = https://git.sr.ht/~thestr4ng3r/gf-complete [submodule "android/app/src/main/cpp/oboe"] path = android/app/src/main/cpp/oboe url = https://github.com/google/oboe [submodule "switch/borealis"] path = switch/borealis url = https://git.sr.ht/~thestr4ng3r/borealis chiaki-v2.2.0/CMakeLists.txt000066400000000000000000000146311447035777400157200ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.2) project(chiaki) # Like option(), but the value can also be AUTO macro(tri_option name desc default) set("${name}" "${default}" CACHE STRING "${desc}") set_property(CACHE "${name}" PROPERTY STRINGS AUTO ON OFF) endmacro() option(CHIAKI_ENABLE_TESTS "Enable tests for Chiaki" ON) option(CHIAKI_ENABLE_CLI "Enable CLI for Chiaki" OFF) option(CHIAKI_ENABLE_GUI "Enable Qt GUI" ON) option(CHIAKI_ENABLE_ANDROID "Enable Android (Use only as part of the Gradle Project)" OFF) option(CHIAKI_ENABLE_BOREALIS "Enable Borealis GUI (For Nintendo Switch or PC)" OFF) tri_option(CHIAKI_ENABLE_SETSU "Enable libsetsu for touchpad input from controller" AUTO) option(CHIAKI_LIB_ENABLE_OPUS "Use Opus as part of Chiaki Lib" ON) if(CHIAKI_ENABLE_GUI OR CHIAKI_ENABLE_BOREALIS) set(CHIAKI_FFMPEG_DEFAULT ON) else() set(CHIAKI_FFMPEG_DEFAULT AUTO) endif() tri_option(CHIAKI_ENABLE_FFMPEG_DECODER "Enable FFMPEG video decoder" ${CHIAKI_FFMPEG_DEFAULT}) tri_option(CHIAKI_ENABLE_PI_DECODER "Enable Raspberry Pi-specific video decoder (requires libraspberrypi0 and libraspberrypi-doc)" AUTO) option(CHIAKI_LIB_ENABLE_MBEDTLS "Use mbedtls instead of OpenSSL as part of Chiaki Lib" OFF) option(CHIAKI_LIB_MBEDTLS_EXTERNAL_PROJECT "Fetch Mbed TLS instead of using system-provided libs" OFF) option(CHIAKI_LIB_OPENSSL_EXTERNAL_PROJECT "Use OpenSSL as CMake external project" OFF) option(CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER "Use SDL Gamecontroller for Input" ON) option(CHIAKI_CLI_ARGP_STANDALONE "Search for standalone argp lib for CLI" OFF) tri_option(CHIAKI_USE_SYSTEM_JERASURE "Use system-provided jerasure instead of submodule" AUTO) tri_option(CHIAKI_USE_SYSTEM_NANOPB "Use system-provided nanopb instead of submodule" AUTO) set(CHIAKI_VERSION_MAJOR 2) set(CHIAKI_VERSION_MINOR 2) set(CHIAKI_VERSION_PATCH 0) set(CHIAKI_VERSION ${CHIAKI_VERSION_MAJOR}.${CHIAKI_VERSION_MINOR}.${CHIAKI_VERSION_PATCH}) set(CPACK_PACKAGE_NAME "chiaki") set(CPACK_PACKAGE_DESCRIPTION "Open Source PS4 remote play client") set(CPACK_PACKAGE_VERSION_MAJOR ${CHIAKI_VERSION_MAJOR}) set(CPACK_PACKAGE_VERSION_MINOR ${CHIAKI_VERSION_MINOR}) set(CPACK_PACKAGE_VERSION_PATCH ${CHIAKI_VERSION_PATCH}) set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON) set(CPACK_DEBIAN_PACKAGE_DESCRIPTION ${CPACK_PACKAGE_DESCRIPTION}) set(CPACK_DEBIAN_PACKAGE_SECTION "games") include(CPack) set(CHIAKI_IS_SWITCH ${NSWITCH}) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_CURRENT_SOURCE_DIR}/setsu/cmake") set(CMAKE_CXX_STANDARD 11) if(CHIAKI_IS_SWITCH) # force mbedtls as crypto lib set(CHIAKI_LIB_ENABLE_MBEDTLS ON) add_definitions(-D__SWITCH__) endif() if(CHIAKI_USE_SYSTEM_JERASURE) if(CHIAKI_USE_SYSTEM_JERASURE STREQUAL AUTO) find_package(Jerasure QUIET) set(CHIAKI_USE_SYSTEM_JERASURE ${Jerasure_FOUND}) else() find_package(Jerasure REQUIRED) set(CHIAKI_USE_SYSTEM_JERASURE ON) endif() endif() find_package(PythonInterp 3 REQUIRED) # Make sure nanopb doesn't find Python 2.7 because Python 2 should just die. if(CHIAKI_USE_SYSTEM_NANOPB) if(CHIAKI_USE_SYSTEM_NANOPB STREQUAL AUTO) find_package(Nanopb QUIET) set(CHIAKI_USE_SYSTEM_NANOPB ${Nanopb_FOUND}) else() find_package(Nanopb REQUIRED) set(CHIAKI_USE_SYSTEM_NANOPB ON) endif() endif() add_subdirectory(third-party) add_definitions(-DCHIAKI_VERSION_MAJOR=${CHIAKI_VERSION_MAJOR} -DCHIAKI_VERSION_MINOR=${CHIAKI_VERSION_MINOR} -DCHIAKI_VERSION_PATCH=${CHIAKI_VERSION_PATCH} -DCHIAKI_VERSION=\"${CHIAKI_VERSION}\") if(CHIAKI_LIB_OPENSSL_EXTERNAL_PROJECT) include(OpenSSLExternalProject) endif() if(CHIAKI_LIB_ENABLE_MBEDTLS) add_definitions(-DCHIAKI_LIB_ENABLE_MBEDTLS) if(CHIAKI_LIB_MBEDTLS_EXTERNAL_PROJECT) set(FETCHCONTENT_QUIET CACHE BOOL FALSE) include(FetchContent) set(ENABLE_TESTING CACHE INTERNAL OFF) set(ENABLE_PROGRAMS CACHE INTERNAL OFF) set(USE_SHARED_MBEDTLS_LIBRARY CACHE INTERNAL OFF) FetchContent_Declare( mbedtls GIT_REPOSITORY https://github.com/Mbed-TLS/mbedtls.git GIT_TAG 8b3f26a5ac38d4fdccbc5c5366229f3e01dafcc0 # v2.28.0 GIT_PROGRESS TRUE ) FetchContent_MakeAvailable(mbedtls) endif() endif() if(CHIAKI_ENABLE_FFMPEG_DECODER) find_package(FFMPEG COMPONENTS avcodec avutil) if(FFMPEG_FOUND) set(CHIAKI_ENABLE_FFMPEG_DECODER ON) else() if(NOT CHIAKI_ENABLE_FFMPEG_DECODER STREQUAL AUTO) message(FATAL_ERROR "CHIAKI_ENABLE_FFMPEG_DECODER is set to ON, but ffmpeg could not be found.") endif() set(CHIAKI_ENABLE_FFMPEG_DECODER OFF) endif() endif() if(CHIAKI_ENABLE_FFMPEG_DECODER) message(STATUS "FFMPEG Decoder enabled") else() message(STATUS "FFMPEG Decoder disabled") endif() if(CHIAKI_ENABLE_PI_DECODER) find_package(ILClient) if(ILClient_FOUND) set(CHIAKI_ENABLE_PI_DECODER ON) else() if(NOT CHIAKI_ENABLE_PI_DECODER STREQUAL AUTO) message(FATAL_ERROR " CHIAKI_ENABLE_PI_DECODER is set to ON, but its dependencies (ilclient source and libs) could not be resolved. The Raspberry Pi Decoder is only supported on Raspberry Pi OS and requires libraspberrypi0 and libraspberrypi-doc.") endif() set(CHIAKI_ENABLE_PI_DECODER OFF) endif() endif() if(CHIAKI_ENABLE_PI_DECODER) message(STATUS "Pi Decoder enabled") else() message(STATUS "Pi Decoder disabled") endif() add_subdirectory(lib) if(CHIAKI_ENABLE_CLI) add_subdirectory(cli) endif() if(CHIAKI_ENABLE_GUI AND CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER) find_package(SDL2 MODULE REQUIRED) endif() if(CHIAKI_ENABLE_SETSU) if(CHIAKI_ENABLE_SETSU STREQUAL AUTO AND SDL2_FOUND AND (SDL2_VERSION_MINOR GREATER 0 OR SDL2_VERSION_PATCH GREATER_EQUAL 14)) message(STATUS "SDL version ${SDL2_VERSION} is >= 2.0.14, disabling Setsu") set(CHIAKI_ENABLE_SETSU OFF) else() find_package(Udev QUIET) find_package(Evdev QUIET) if(Udev_FOUND AND Evdev_FOUND) set(CHIAKI_ENABLE_SETSU ON) else() if(NOT CHIAKI_ENABLE_SETSU STREQUAL AUTO) message(FATAL_ERROR " CHIAKI_ENABLE_SETSU is set to ON, but its dependencies (udev and evdev) could not be resolved. Keep in mind that setsu is only supported on Linux!") endif() set(CHIAKI_ENABLE_SETSU OFF) endif() if(CHIAKI_ENABLE_SETSU) add_subdirectory(setsu) endif() endif() endif() if(CHIAKI_ENABLE_SETSU) message(STATUS "Setsu enabled") else() message(STATUS "Setsu disabled") endif() if(CHIAKI_ENABLE_GUI) add_subdirectory(gui) endif() if(CHIAKI_ENABLE_TESTS) enable_testing() add_subdirectory(test) endif() if(CHIAKI_ENABLE_ANDROID) add_subdirectory(android/app) endif() if(CHIAKI_ENABLE_BOREALIS) add_subdirectory(switch) endif() chiaki-v2.2.0/COPYING000066400000000000000000001043751447035777400142200ustar00rootroot00000000000000 GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program 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. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . Additional permission under GNU AGPL version 3 section 7 If you modify this program, or any covered work, by linking or combining it with the OpenSSL project's OpenSSL library (or a modified version of that library), containing parts covered by the terms of the OpenSSL or SSLeay licenses, the Free Software Foundation grants you additional permission to convey the resulting work. Corresponding Source for a non-source form of such a combination shall include the source code for the parts of OpenSSL used as well as that of the covered work. chiaki-v2.2.0/LICENSES/000077500000000000000000000000001447035777400143605ustar00rootroot00000000000000chiaki-v2.2.0/LICENSES/AGPL-3.0-only-OpenSSL.txt000066400000000000000000001043751447035777400204140ustar00rootroot00000000000000 GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007 Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The GNU Affero General Public License is a free, copyleft license for software and other kinds of works, specifically designed to ensure cooperation with the community in the case of network server software. The licenses for most software and other practical works are designed to take away your freedom to share and change the works. By contrast, our General Public Licenses are intended to guarantee your freedom to share and change all versions of a program--to make sure it remains free software for all its users. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for them if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs, and that you know you can do these things. Developers that use our General Public Licenses protect your rights with two steps: (1) assert copyright on the software, and (2) offer you this License which gives you legal permission to copy, distribute and/or modify the software. A secondary benefit of defending all users' freedom is that improvements made in alternate versions of the program, if they receive widespread use, become available for other developers to incorporate. Many developers of free software are heartened and encouraged by the resulting cooperation. However, in the case of software used on network servers, this result may fail to come about. The GNU General Public License permits making a modified version and letting the public access it on a server without ever releasing its source code to the public. The GNU Affero General Public License is designed specifically to ensure that, in such cases, the modified source code becomes available to the community. It requires the operator of a network server to provide the source code of the modified version running there to the users of that server. Therefore, public use of a modified version, on a publicly accessible server, gives the public access to the source code of the modified version. An older license, called the Affero General Public License and published by Affero, was designed to accomplish similar goals. This is a different license, not a version of the Affero GPL, but Affero has released a new version of the Affero GPL which permits relicensing under this license. The precise terms and conditions for copying, distribution and modification follow. TERMS AND CONDITIONS 0. Definitions. "This License" refers to version 3 of the GNU Affero General Public License. "Copyright" also means copyright-like laws that apply to other kinds of works, such as semiconductor masks. "The Program" refers to any copyrightable work licensed under this License. Each licensee is addressed as "you". "Licensees" and "recipients" may be individuals or organizations. To "modify" a work means to copy from or adapt all or part of the work in a fashion requiring copyright permission, other than the making of an exact copy. The resulting work is called a "modified version" of the earlier work or a work "based on" the earlier work. A "covered work" means either the unmodified Program or a work based on the Program. To "propagate" a work means to do anything with it that, without permission, would make you directly or secondarily liable for infringement under applicable copyright law, except executing it on a computer or modifying a private copy. Propagation includes copying, distribution (with or without modification), making available to the public, and in some countries other activities as well. To "convey" a work means any kind of propagation that enables other parties to make or receive copies. Mere interaction with a user through a computer network, with no transfer of a copy, is not conveying. An interactive user interface displays "Appropriate Legal Notices" to the extent that it includes a convenient and prominently visible feature that (1) displays an appropriate copyright notice, and (2) tells the user that there is no warranty for the work (except to the extent that warranties are provided), that licensees may convey the work under this License, and how to view a copy of this License. If the interface presents a list of user commands or options, such as a menu, a prominent item in the list meets this criterion. 1. Source Code. The "source code" for a work means the preferred form of the work for making modifications to it. "Object code" means any non-source form of a work. A "Standard Interface" means an interface that either is an official standard defined by a recognized standards body, or, in the case of interfaces specified for a particular programming language, one that is widely used among developers working in that language. The "System Libraries" of an executable work include anything, other than the work as a whole, that (a) is included in the normal form of packaging a Major Component, but which is not part of that Major Component, and (b) serves only to enable use of the work with that Major Component, or to implement a Standard Interface for which an implementation is available to the public in source code form. A "Major Component", in this context, means a major essential component (kernel, window system, and so on) of the specific operating system (if any) on which the executable work runs, or a compiler used to produce the work, or an object code interpreter used to run it. The "Corresponding Source" for a work in object code form means all the source code needed to generate, install, and (for an executable work) run the object code and to modify the work, including scripts to control those activities. However, it does not include the work's System Libraries, or general-purpose tools or generally available free programs which are used unmodified in performing those activities but which are not part of the work. For example, Corresponding Source includes interface definition files associated with source files for the work, and the source code for shared libraries and dynamically linked subprograms that the work is specifically designed to require, such as by intimate data communication or control flow between those subprograms and other parts of the work. The Corresponding Source need not include anything that users can regenerate automatically from other parts of the Corresponding Source. The Corresponding Source for a work in source code form is that same work. 2. Basic Permissions. All rights granted under this License are granted for the term of copyright on the Program, and are irrevocable provided the stated conditions are met. This License explicitly affirms your unlimited permission to run the unmodified Program. The output from running a covered work is covered by this License only if the output, given its content, constitutes a covered work. This License acknowledges your rights of fair use or other equivalent, as provided by copyright law. You may make, run and propagate covered works that you do not convey, without conditions so long as your license otherwise remains in force. You may convey covered works to others for the sole purpose of having them make modifications exclusively for you, or provide you with facilities for running those works, provided that you comply with the terms of this License in conveying all material for which you do not control copyright. Those thus making or running the covered works for you must do so exclusively on your behalf, under your direction and control, on terms that prohibit them from making any copies of your copyrighted material outside their relationship with you. Conveying under any other circumstances is permitted solely under the conditions stated below. Sublicensing is not allowed; section 10 makes it unnecessary. 3. Protecting Users' Legal Rights From Anti-Circumvention Law. No covered work shall be deemed part of an effective technological measure under any applicable law fulfilling obligations under article 11 of the WIPO copyright treaty adopted on 20 December 1996, or similar laws prohibiting or restricting circumvention of such measures. When you convey a covered work, you waive any legal power to forbid circumvention of technological measures to the extent such circumvention is effected by exercising rights under this License with respect to the covered work, and you disclaim any intention to limit operation or modification of the work as a means of enforcing, against the work's users, your or third parties' legal rights to forbid circumvention of technological measures. 4. Conveying Verbatim Copies. You may convey verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice; keep intact all notices stating that this License and any non-permissive terms added in accord with section 7 apply to the code; keep intact all notices of the absence of any warranty; and give all recipients a copy of this License along with the Program. You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee. 5. Conveying Modified Source Versions. You may convey a work based on the Program, or the modifications to produce it from the Program, in the form of source code under the terms of section 4, provided that you also meet all of these conditions: a) The work must carry prominent notices stating that you modified it, and giving a relevant date. b) The work must carry prominent notices stating that it is released under this License and any conditions added under section 7. This requirement modifies the requirement in section 4 to "keep intact all notices". c) You must license the entire work, as a whole, under this License to anyone who comes into possession of a copy. This License will therefore apply, along with any applicable section 7 additional terms, to the whole of the work, and all its parts, regardless of how they are packaged. This License gives no permission to license the work in any other way, but it does not invalidate such permission if you have separately received it. d) If the work has interactive user interfaces, each must display Appropriate Legal Notices; however, if the Program has interactive interfaces that do not display Appropriate Legal Notices, your work need not make them do so. A compilation of a covered work with other separate and independent works, which are not by their nature extensions of the covered work, and which are not combined with it such as to form a larger program, in or on a volume of a storage or distribution medium, is called an "aggregate" if the compilation and its resulting copyright are not used to limit the access or legal rights of the compilation's users beyond what the individual works permit. Inclusion of a covered work in an aggregate does not cause this License to apply to the other parts of the aggregate. 6. Conveying Non-Source Forms. You may convey a covered work in object code form under the terms of sections 4 and 5, provided that you also convey the machine-readable Corresponding Source under the terms of this License, in one of these ways: a) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by the Corresponding Source fixed on a durable physical medium customarily used for software interchange. b) Convey the object code in, or embodied in, a physical product (including a physical distribution medium), accompanied by a written offer, valid for at least three years and valid for as long as you offer spare parts or customer support for that product model, to give anyone who possesses the object code either (1) a copy of the Corresponding Source for all the software in the product that is covered by this License, on a durable physical medium customarily used for software interchange, for a price no more than your reasonable cost of physically performing this conveying of source, or (2) access to copy the Corresponding Source from a network server at no charge. c) Convey individual copies of the object code with a copy of the written offer to provide the Corresponding Source. This alternative is allowed only occasionally and noncommercially, and only if you received the object code with such an offer, in accord with subsection 6b. d) Convey the object code by offering access from a designated place (gratis or for a charge), and offer equivalent access to the Corresponding Source in the same way through the same place at no further charge. You need not require recipients to copy the Corresponding Source along with the object code. If the place to copy the object code is a network server, the Corresponding Source may be on a different server (operated by you or a third party) that supports equivalent copying facilities, provided you maintain clear directions next to the object code saying where to find the Corresponding Source. Regardless of what server hosts the Corresponding Source, you remain obligated to ensure that it is available for as long as needed to satisfy these requirements. e) Convey the object code using peer-to-peer transmission, provided you inform other peers where the object code and Corresponding Source of the work are being offered to the general public at no charge under subsection 6d. A separable portion of the object code, whose source code is excluded from the Corresponding Source as a System Library, need not be included in conveying the object code work. A "User Product" is either (1) a "consumer product", which means any tangible personal property which is normally used for personal, family, or household purposes, or (2) anything designed or sold for incorporation into a dwelling. In determining whether a product is a consumer product, doubtful cases shall be resolved in favor of coverage. For a particular product received by a particular user, "normally used" refers to a typical or common use of that class of product, regardless of the status of the particular user or of the way in which the particular user actually uses, or expects or is expected to use, the product. A product is a consumer product regardless of whether the product has substantial commercial, industrial or non-consumer uses, unless such uses represent the only significant mode of use of the product. "Installation Information" for a User Product means any methods, procedures, authorization keys, or other information required to install and execute modified versions of a covered work in that User Product from a modified version of its Corresponding Source. The information must suffice to ensure that the continued functioning of the modified object code is in no case prevented or interfered with solely because modification has been made. If you convey an object code work under this section in, or with, or specifically for use in, a User Product, and the conveying occurs as part of a transaction in which the right of possession and use of the User Product is transferred to the recipient in perpetuity or for a fixed term (regardless of how the transaction is characterized), the Corresponding Source conveyed under this section must be accompanied by the Installation Information. But this requirement does not apply if neither you nor any third party retains the ability to install modified object code on the User Product (for example, the work has been installed in ROM). The requirement to provide Installation Information does not include a requirement to continue to provide support service, warranty, or updates for a work that has been modified or installed by the recipient, or for the User Product in which it has been modified or installed. Access to a network may be denied when the modification itself materially and adversely affects the operation of the network or violates the rules and protocols for communication across the network. Corresponding Source conveyed, and Installation Information provided, in accord with this section must be in a format that is publicly documented (and with an implementation available to the public in source code form), and must require no special password or key for unpacking, reading or copying. 7. Additional Terms. "Additional permissions" are terms that supplement the terms of this License by making exceptions from one or more of its conditions. Additional permissions that are applicable to the entire Program shall be treated as though they were included in this License, to the extent that they are valid under applicable law. If additional permissions apply only to part of the Program, that part may be used separately under those permissions, but the entire Program remains governed by this License without regard to the additional permissions. When you convey a copy of a covered work, you may at your option remove any additional permissions from that copy, or from any part of it. (Additional permissions may be written to require their own removal in certain cases when you modify the work.) You may place additional permissions on material, added by you to a covered work, for which you have or can give appropriate copyright permission. Notwithstanding any other provision of this License, for material you add to a covered work, you may (if authorized by the copyright holders of that material) supplement the terms of this License with terms: a) Disclaiming warranty or limiting liability differently from the terms of sections 15 and 16 of this License; or b) Requiring preservation of specified reasonable legal notices or author attributions in that material or in the Appropriate Legal Notices displayed by works containing it; or c) Prohibiting misrepresentation of the origin of that material, or requiring that modified versions of such material be marked in reasonable ways as different from the original version; or d) Limiting the use for publicity purposes of names of licensors or authors of the material; or e) Declining to grant rights under trademark law for use of some trade names, trademarks, or service marks; or f) Requiring indemnification of licensors and authors of that material by anyone who conveys the material (or modified versions of it) with contractual assumptions of liability to the recipient, for any liability that these contractual assumptions directly impose on those licensors and authors. All other non-permissive additional terms are considered "further restrictions" within the meaning of section 10. If the Program as you received it, or any part of it, contains a notice stating that it is governed by this License along with a term that is a further restriction, you may remove that term. If a license document contains a further restriction but permits relicensing or conveying under this License, you may add to a covered work material governed by the terms of that license document, provided that the further restriction does not survive such relicensing or conveying. If you add terms to a covered work in accord with this section, you must place, in the relevant source files, a statement of the additional terms that apply to those files, or a notice indicating where to find the applicable terms. Additional terms, permissive or non-permissive, may be stated in the form of a separately written license, or stated as exceptions; the above requirements apply either way. 8. Termination. You may not propagate or modify a covered work except as expressly provided under this License. Any attempt otherwise to propagate or modify it is void, and will automatically terminate your rights under this License (including any patent licenses granted under the third paragraph of section 11). However, if you cease all violation of this License, then your license from a particular copyright holder is reinstated (a) provisionally, unless and until the copyright holder explicitly and finally terminates your license, and (b) permanently, if the copyright holder fails to notify you of the violation by some reasonable means prior to 60 days after the cessation. Moreover, your license from a particular copyright holder is reinstated permanently if the copyright holder notifies you of the violation by some reasonable means, this is the first time you have received notice of violation of this License (for any work) from that copyright holder, and you cure the violation prior to 30 days after your receipt of the notice. Termination of your rights under this section does not terminate the licenses of parties who have received copies or rights from you under this License. If your rights have been terminated and not permanently reinstated, you do not qualify to receive new licenses for the same material under section 10. 9. Acceptance Not Required for Having Copies. You are not required to accept this License in order to receive or run a copy of the Program. Ancillary propagation of a covered work occurring solely as a consequence of using peer-to-peer transmission to receive a copy likewise does not require acceptance. However, nothing other than this License grants you permission to propagate or modify any covered work. These actions infringe copyright if you do not accept this License. Therefore, by modifying or propagating a covered work, you indicate your acceptance of this License to do so. 10. Automatic Licensing of Downstream Recipients. Each time you convey a covered work, the recipient automatically receives a license from the original licensors, to run, modify and propagate that work, subject to this License. You are not responsible for enforcing compliance by third parties with this License. An "entity transaction" is a transaction transferring control of an organization, or substantially all assets of one, or subdividing an organization, or merging organizations. If propagation of a covered work results from an entity transaction, each party to that transaction who receives a copy of the work also receives whatever licenses to the work the party's predecessor in interest had or could give under the previous paragraph, plus a right to possession of the Corresponding Source of the work from the predecessor in interest, if the predecessor has it or can get it with reasonable efforts. You may not impose any further restrictions on the exercise of the rights granted or affirmed under this License. For example, you may not impose a license fee, royalty, or other charge for exercise of rights granted under this License, and you may not initiate litigation (including a cross-claim or counterclaim in a lawsuit) alleging that any patent claim is infringed by making, using, selling, offering for sale, or importing the Program or any portion of it. 11. Patents. A "contributor" is a copyright holder who authorizes use under this License of the Program or a work on which the Program is based. The work thus licensed is called the contributor's "contributor version". A contributor's "essential patent claims" are all patent claims owned or controlled by the contributor, whether already acquired or hereafter acquired, that would be infringed by some manner, permitted by this License, of making, using, or selling its contributor version, but do not include claims that would be infringed only as a consequence of further modification of the contributor version. For purposes of this definition, "control" includes the right to grant patent sublicenses in a manner consistent with the requirements of this License. Each contributor grants you a non-exclusive, worldwide, royalty-free patent license under the contributor's essential patent claims, to make, use, sell, offer for sale, import and otherwise run, modify and propagate the contents of its contributor version. In the following three paragraphs, a "patent license" is any express agreement or commitment, however denominated, not to enforce a patent (such as an express permission to practice a patent or covenant not to sue for patent infringement). To "grant" such a patent license to a party means to make such an agreement or commitment not to enforce a patent against the party. If you convey a covered work, knowingly relying on a patent license, and the Corresponding Source of the work is not available for anyone to copy, free of charge and under the terms of this License, through a publicly available network server or other readily accessible means, then you must either (1) cause the Corresponding Source to be so available, or (2) arrange to deprive yourself of the benefit of the patent license for this particular work, or (3) arrange, in a manner consistent with the requirements of this License, to extend the patent license to downstream recipients. "Knowingly relying" means you have actual knowledge that, but for the patent license, your conveying the covered work in a country, or your recipient's use of the covered work in a country, would infringe one or more identifiable patents in that country that you have reason to believe are valid. If, pursuant to or in connection with a single transaction or arrangement, you convey, or propagate by procuring conveyance of, a covered work, and grant a patent license to some of the parties receiving the covered work authorizing them to use, propagate, modify or convey a specific copy of the covered work, then the patent license you grant is automatically extended to all recipients of the covered work and works based on it. A patent license is "discriminatory" if it does not include within the scope of its coverage, prohibits the exercise of, or is conditioned on the non-exercise of one or more of the rights that are specifically granted under this License. You may not convey a covered work if you are a party to an arrangement with a third party that is in the business of distributing software, under which you make payment to the third party based on the extent of your activity of conveying the work, and under which the third party grants, to any of the parties who would receive the covered work from you, a discriminatory patent license (a) in connection with copies of the covered work conveyed by you (or copies made from those copies), or (b) primarily for and in connection with specific products or compilations that contain the covered work, unless you entered into that arrangement, or that patent license was granted, prior to 28 March 2007. Nothing in this License shall be construed as excluding or limiting any implied license or other defenses to infringement that may otherwise be available to you under applicable patent law. 12. No Surrender of Others' Freedom. If conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot convey a covered work so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not convey it at all. For example, if you agree to terms that obligate you to collect a royalty for further conveying from those to whom you convey the Program, the only way you could satisfy both those terms and this License would be to refrain entirely from conveying the Program. 13. Remote Network Interaction; Use with the GNU General Public License. Notwithstanding any other provision of this License, if you modify the Program, your modified version must prominently offer all users interacting with it remotely through a computer network (if your version supports such interaction) an opportunity to receive the Corresponding Source of your version by providing access to the Corresponding Source from a network server at no charge, through some standard or customary means of facilitating copying of software. This Corresponding Source shall include the Corresponding Source for any work covered by version 3 of the GNU General Public License that is incorporated pursuant to the following paragraph. Notwithstanding any other provision of this License, you have permission to link or combine any covered work with a work licensed under version 3 of the GNU General Public License into a single combined work, and to convey the resulting work. The terms of this License will continue to apply to the part which is the covered work, but the work with which it is combined will remain governed by version 3 of the GNU General Public License. 14. Revised Versions of this License. The Free Software Foundation may publish revised and/or new versions of the GNU Affero General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies that a certain numbered version of the GNU Affero General Public License "or any later version" applies to it, you have the option of following the terms and conditions either of that numbered version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of the GNU Affero General Public License, you may choose any version ever published by the Free Software Foundation. If the Program specifies that a proxy can decide which future versions of the GNU Affero General Public License can be used, that proxy's public statement of acceptance of a version permanently authorizes you to choose that version for the Program. Later license versions may give you additional or different permissions. However, no additional obligations are imposed on any author or copyright holder as a result of your choosing to follow a later version. 15. Disclaimer of Warranty. THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. Limitation of Liability. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. 17. Interpretation of Sections 15 and 16. If the disclaimer of warranty and limitation of liability provided above cannot be given local legal effect according to their terms, reviewing courts shall apply local law that most closely approximates an absolute waiver of all civil liability in connection with the Program, unless a warranty or assumption of liability accompanies a copy of the Program in return for a fee. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively state the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program 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. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. If your software can interact with users remotely through a computer network, you should also make sure that it provides a way for users to get its source. For example, if your program is a web application, its interface could display a "Source" link that leads users to an archive of the code. There are many ways you could offer source, and different solutions will be better for different programs; see section 13 for the specific requirements. You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU AGPL, see . Additional permission under GNU AGPL version 3 section 7 If you modify this program, or any covered work, by linking or combining it with the OpenSSL project's OpenSSL library (or a modified version of that library), containing parts covered by the terms of the OpenSSL or SSLeay licenses, the Free Software Foundation grants you additional permission to convey the resulting work. Corresponding Source for a non-source form of such a combination shall include the source code for the parts of OpenSSL used as well as that of the covered work. chiaki-v2.2.0/README.md000066400000000000000000000122501447035777400144320ustar00rootroot00000000000000 ![Chiaki Logo](assets/chiaki_wide.png) # Chiaki **Disclaimer:** This project is not endorsed or certified by Sony Interactive Entertainment LLC. [![AppVeyor Build status](https://ci.appveyor.com/api/projects/status/c81ogebvsmo43dd3?svg=true)](https://ci.appveyor.com/project/thestr4ng3r/chiaki) [![builds.sr.ht Status](https://builds.sr.ht/~thestr4ng3r/chiaki.svg)](https://builds.sr.ht/~thestr4ng3r/chiaki?) Chiaki is a Free and Open Source Software Client for PlayStation 4 and PlayStation 5 Remote Play for Linux, FreeBSD, OpenBSD, NetBSD, Android, macOS, Windows, Nintendo Switch and potentially even more platforms. ![Screenshot](assets/screenshot.png) ## Project Status As all relevant features are implemented, this project is considered to be finished and in maintenance mode only. No major updates are planned and contributions are only accepted in special cases. ## Installing You can either download a pre-built release or build Chiaki from source. ### Downloading a Release Builds are provided for Linux, Android, macOS, Nintendo Switch and Windows. You can download them [here](https://git.sr.ht/~thestr4ng3r/chiaki/refs). * **Linux**: The provided file is an [AppImage](https://appimage.org/). Simply make it executable (`chmod +x .AppImage`) and run it. * **Android**: Install from [Google Play](https://play.google.com/store/apps/details?id=com.metallic.chiaki), [F-Droid](https://f-droid.org/packages/com.metallic.chiaki/) or download the APK from Sourcehut. * **macOS**: Drag the application from the `.dmg` into your Applications folder. * **Windows**: Extract the `.zip` file and execute `chiaki.exe`. * **Switch**: Download the `.nro` file and copy it into the `switch/` directory on your SD card. ### Building from Source Dependencies are CMake, Qt 5 with QtMultimedia, QtOpenGL and QtSvg, FFMPEG (libavcodec with H264 is enough), libopus, OpenSSL 1.1, SDL 2, protoc and the protobuf Python library (only used during compilation for Nanopb). Then, Chiaki builds just like any other CMake project: ``` git submodule update --init mkdir build && cd build cmake .. make ``` For more detailed platform-specific instructions, see [doc/platform-build.md](doc/platform-build.md) or [switch/](./switch/README.md) for Nintendo Switch. ## Usage If your Console is on your local network, is turned on or in standby mode and does not have Discovery explicitly disabled, Chiaki should find it. Otherwise, you can add it manually. To do so, click the "+" icon in the top right, and enter your Console's IP address. You will then need to register your Console with Chiaki. You will need two more pieces of information to do this. ### Obtaining your PSN AccountID Starting with PS4 7.0, it is necessary to use a so-called "AccountID" as opposed to the "Online-ID" for registration (streaming itself did not change). This ID seems to be a unique identifier for a PSN Account and it can be obtained from the PSN after logging in using OAuth. A Python 3 script which does this is provided in [scripts/psn-account-id.py](scripts/psn-account-id.py). Simply run it in a terminal and follow the instructions. Once you know your ID, write it down. You will likely never have to do this process again. ### Obtaining a Registration PIN To register a Console with a PIN, it must be put into registration mode. To do this on a PS4, simply go to: Settings -> Remote Play -> Add Device, or on a PS5: Settings -> System -> Remote Play -> Link Device. You can now double-click your Console in Chiaki's main window to start Remote Play. ## Acknowledgements This project has only been made possible because of the following Open Source projects: [Rizin](https://rizin.re), [Cutter](https://cutter.re), [Frida](https://www.frida.re) and [x64dbg](https://x64dbg.com). Also thanks to [delroth](https://github.com/delroth) for analyzing the registration and wakeup protocol, [grill2010](https://github.com/grill2010) for analyzing the PSN's OAuth Login, as well as a huge thank you to [FioraAeterna](https://github.com/FioraAeterna) for giving me some extremely helpful information about FEC and error correction. ## About Created by Florian Märkl This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License version 3 as published by the Free Software Foundation. This program 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. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . Additional permission under GNU AGPL version 3 section 7 If you modify this program, or any covered work, by linking or combining it with the OpenSSL project's OpenSSL library (or a modified version of that library), containing parts covered by the terms of the OpenSSL or SSLeay licenses, the Free Software Foundation grants you additional permission to convey the resulting work. Corresponding Source for a non-source form of such a combination shall include the source code for the parts of OpenSSL used as well as that of the covered work. chiaki-v2.2.0/android/000077500000000000000000000000001447035777400145735ustar00rootroot00000000000000chiaki-v2.2.0/android/.gitignore000066400000000000000000000003521447035777400165630ustar00rootroot00000000000000*.iml .gradle /local.properties /.idea/caches /.idea/libraries /.idea/modules.xml /.idea/workspace.xml /.idea/navEditor.xml /.idea/assetWizardSettings.xml .DS_Store /build /captures .externalNativeBuild .cxx /app/release keystore.jks chiaki-v2.2.0/android/app/000077500000000000000000000000001447035777400153535ustar00rootroot00000000000000chiaki-v2.2.0/android/app/.gitignore000066400000000000000000000000071447035777400173400ustar00rootroot00000000000000/build chiaki-v2.2.0/android/app/CMakeLists.txt000066400000000000000000000014311447035777400201120ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.2) set(CMAKE_CXX_STANDARD 14) add_library(chiaki-jni SHARED src/main/cpp/chiaki-jni.c src/main/cpp/log.h src/main/cpp/log.c src/main/cpp/video-decoder.h src/main/cpp/video-decoder.c src/main/cpp/audio-decoder.h src/main/cpp/audio-decoder.c src/main/cpp/audio-output.h src/main/cpp/audio-output.cpp src/main/cpp/circular-fifo.hpp) target_link_libraries(chiaki-jni chiaki-lib) find_library(ANDROID_LIB_LOG log) find_library(ANDROID_LIB_MEDIANDK mediandk) find_library(ANDROID_LIB_ANDROID android) target_link_libraries(chiaki-jni "${ANDROID_LIB_LOG}" "${ANDROID_LIB_MEDIANDK}" "${ANDROID_LIB_ANDROID}") add_subdirectory(src/main/cpp/oboe) target_link_libraries(chiaki-jni oboe)chiaki-v2.2.0/android/app/build.gradle000066400000000000000000000106361447035777400176400ustar00rootroot00000000000000apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-parcelize' apply plugin: 'kotlin-kapt' def rootCMakeLists = "../../CMakeLists.txt" def rootCMakeListsContent = file(rootCMakeLists).text static def grepVersionComponent(content, varname) { def match = content =~ /set\($varname ([0-9]+)\)/ if(!match.find()) throw new GradleException("Failed to find $varname in CMakeLists.txt") return match.group(1) } def chiakiVersionMajor = grepVersionComponent(rootCMakeListsContent, "CHIAKI_VERSION_MAJOR") def chiakiVersionMinor = grepVersionComponent(rootCMakeListsContent, "CHIAKI_VERSION_MINOR") def chiakiVersionPatch = grepVersionComponent(rootCMakeListsContent, "CHIAKI_VERSION_PATCH") def chiakiVersion = "$chiakiVersionMajor.$chiakiVersionMinor.$chiakiVersionPatch" println("Determined Chiaki Version: $chiakiVersion") android { compileSdkVersion 33 defaultConfig { applicationId "com.metallic.chiaki" minSdkVersion 21 targetSdkVersion 33 versionCode 12 versionName chiakiVersion externalNativeBuild { cmake { arguments "-DCHIAKI_ENABLE_TESTS=OFF", "-DCHIAKI_ENABLE_CLI=OFF", "-DCHIAKI_ENABLE_GUI=OFF", "-DCHIAKI_ENABLE_SETSU=OFF", "-DCHIAKI_ENABLE_ANDROID=ON", "-DCHIAKI_ENABLE_FFMPEG_DECODER=OFF", "-DCHIAKI_ENABLE_PI_DECODER=OFF", "-DCHIAKI_LIB_ENABLE_OPUS=OFF", "-DCHIAKI_LIB_OPENSSL_EXTERNAL_PROJECT=ON" } } } buildFeatures { viewBinding true } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = "1.8" } externalNativeBuild { cmake { version "3.22.1" path rootCMakeLists } } signingConfigs { release } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } Properties properties = new Properties() def propertiesFile = file("../local.properties") if (propertiesFile.exists()) { properties.load(propertiesFile.newDataInputStream()) } if(properties.containsKey("chiakiKeystore")) { println("Enabling Local Signing") buildTypes.release.signingConfig = signingConfigs.release buildTypes.debug.signingConfig = signingConfigs.release signingConfigs.release.storeFile = file(properties.get("chiakiKeystore")) signingConfigs.release.storePassword = properties.get("chiakiKeystorePW") signingConfigs.release.keyAlias = properties.get("chiakiKeyAlias") signingConfigs.release.keyPassword = properties.get("chiakiKeyPW") } else { println("Signing not enabled") } } tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all { kotlinOptions { freeCompilerArgs += "-Xuse-experimental=kotlin.ExperimentalUnsignedTypes" } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" implementation 'androidx.appcompat:appcompat:1.6.0' implementation 'androidx.core:core-ktx:1.9.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.4' implementation 'androidx.recyclerview:recyclerview:1.2.1' implementation 'androidx.preference:preference:1.2.0' implementation 'com.google.android.material:material:1.8.0' implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1' implementation 'androidx.lifecycle:lifecycle-reactivestreams:2.5.1' implementation "io.reactivex.rxjava2:rxjava:2.2.20" implementation "io.reactivex.rxjava2:rxkotlin:2.4.0" implementation 'io.reactivex.rxjava2:rxandroid:2.1.1' def room_version = "2.5.0" implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" implementation "androidx.room:room-ktx:$room_version" implementation "androidx.room:room-rxjava2:$room_version" implementation "com.squareup.moshi:moshi:1.14.0" kapt "com.squareup.moshi:moshi-kotlin-codegen:1.14.0" } chiaki-v2.2.0/android/app/proguard-rules.pro000066400000000000000000000054601447035777400210550ustar00rootroot00000000000000# Add project specific ProGuard rules here. # You can control the set of applied configuration files using the # proguardFiles setting in build.gradle. # # For more details, see # http://developer.android.com/guide/developing/tools/proguard.html # If your project uses WebView with JS, uncomment the following # and specify the fully qualified class name to the JavaScript interface # class: #-keepclassmembers class fqcn.of.javascript.interface.for.webview { # public *; #} # Uncomment this to preserve the line number information for # debugging stack traces. #-keepattributes SourceFile,LineNumberTable # If you keep the line number information, uncomment this to # hide the original source file name. #-renamesourcefileattribute SourceFile -dontobfuscate -keep class com.metallic.chiaki.** { *; } ########################################## # Moshi ########################################## # JSR 305 annotations are for embedding nullability information. -dontwarn javax.annotation.** -keepclasseswithmembers class * { @com.squareup.moshi.* ; } -keep @com.squareup.moshi.JsonQualifier interface * # Enum field names are used by the integrated EnumJsonAdapter. # values() is synthesized by the Kotlin compiler and is used by EnumJsonAdapter indirectly # Annotate enums with @JsonClass(generateAdapter = false) to use them with Moshi. -keepclassmembers @com.squareup.moshi.JsonClass class * extends java.lang.Enum { ; **[] values(); } # The name of @JsonClass types is used to look up the generated adapter. -keepnames @com.squareup.moshi.JsonClass class * # Retain generated target class's synthetic defaults constructor and keep DefaultConstructorMarker's # name. We will look this up reflectively to invoke the type's constructor. # # We can't _just_ keep the defaults constructor because Proguard/R8's spec doesn't allow wildcard # matching preceding parameters. -keepnames class kotlin.jvm.internal.DefaultConstructorMarker -keepclassmembers @com.squareup.moshi.JsonClass @kotlin.Metadata class * { synthetic (...); } # Retain generated JsonAdapters if annotated type is retained. -if @com.squareup.moshi.JsonClass class * -keep class <1>JsonAdapter { (...); ; } -if @com.squareup.moshi.JsonClass class **$* -keep class <1>_<2>JsonAdapter { (...); ; } -if @com.squareup.moshi.JsonClass class **$*$* -keep class <1>_<2>_<3>JsonAdapter { (...); ; } -if @com.squareup.moshi.JsonClass class **$*$*$* -keep class <1>_<2>_<3>_<4>JsonAdapter { (...); ; } -if @com.squareup.moshi.JsonClass class **$*$*$*$* -keep class <1>_<2>_<3>_<4>_<5>JsonAdapter { (...); ; } -if @com.squareup.moshi.JsonClass class **$*$*$*$*$* -keep class <1>_<2>_<3>_<4>_<5>_<6>JsonAdapter { (...); ; } chiaki-v2.2.0/android/app/src/000077500000000000000000000000001447035777400161425ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/000077500000000000000000000000001447035777400170665ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/AndroidManifest.xml000066400000000000000000000051401447035777400226570ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/cpp/000077500000000000000000000000001447035777400176505ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/cpp/audio-decoder.c000066400000000000000000000167731447035777400225360ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "audio-decoder.h" #include #include #include #include #define INPUT_BUFFER_TIMEOUT_MS 10 static void *android_chiaki_audio_decoder_output_thread_func(void *user); static void android_chiaki_audio_decoder_header(ChiakiAudioHeader *header, void *user); static void android_chiaki_audio_decoder_frame(uint8_t *buf, size_t buf_size, void *user); ChiakiErrorCode android_chiaki_audio_decoder_init(AndroidChiakiAudioDecoder *decoder, ChiakiLog *log) { decoder->log = log; memset(&decoder->audio_header, 0, sizeof(decoder->audio_header)); decoder->codec = NULL; decoder->timestamp_cur = 0; decoder->cb_user = NULL; decoder->settings_cb = NULL; decoder->frame_cb = NULL; return chiaki_mutex_init(&decoder->codec_mutex, true); } void android_chiaki_audio_decoder_shutdown_codec(AndroidChiakiAudioDecoder *decoder) { chiaki_mutex_lock(&decoder->codec_mutex); ssize_t codec_buf_index = AMediaCodec_dequeueInputBuffer(decoder->codec, -1); if(codec_buf_index >= 0) { CHIAKI_LOGI(decoder->log, "Audio Decoder sending EOS buffer"); AMediaCodec_queueInputBuffer(decoder->codec, (size_t)codec_buf_index, 0, 0, decoder->timestamp_cur++, AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM); } else CHIAKI_LOGE(decoder->log, "Failed to get input buffer for shutting down Audio Decoder!"); chiaki_mutex_unlock(&decoder->codec_mutex); chiaki_thread_join(&decoder->output_thread, NULL); AMediaCodec_delete(decoder->codec); decoder->codec = NULL; } void android_chiaki_audio_decoder_fini(AndroidChiakiAudioDecoder *decoder) { if(decoder->codec) android_chiaki_audio_decoder_shutdown_codec(decoder); chiaki_mutex_fini(&decoder->codec_mutex); } void android_chiaki_audio_decoder_get_sink(AndroidChiakiAudioDecoder *decoder, ChiakiAudioSink *sink) { sink->user = decoder; sink->header_cb = android_chiaki_audio_decoder_header; sink->frame_cb = android_chiaki_audio_decoder_frame; } static void *android_chiaki_audio_decoder_output_thread_func(void *user) { AndroidChiakiAudioDecoder *decoder = user; while(1) { AMediaCodecBufferInfo info; ssize_t codec_buf_index = AMediaCodec_dequeueOutputBuffer(decoder->codec, &info, -1); if(codec_buf_index >= 0) { if(decoder->settings_cb) { size_t codec_buf_size; uint8_t *codec_buf = AMediaCodec_getOutputBuffer(decoder->codec, (size_t)codec_buf_index, &codec_buf_size); size_t samples_count = info.size / sizeof(int16_t); //CHIAKI_LOGD(decoder->log, "Got %llu samples => %f ms of audio", (unsigned long long)samples_count, 1000.0f * (float)(samples_count / 2) / (float)decoder->audio_header.rate); decoder->frame_cb((int16_t *)codec_buf, samples_count, decoder->cb_user); } AMediaCodec_releaseOutputBuffer(decoder->codec, (size_t)codec_buf_index, false); if(info.flags & AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM) { CHIAKI_LOGI(decoder->log, "AMediaCodec for Audio Decoder reported EOS"); break; } } } CHIAKI_LOGI(decoder->log, "Audio Decoder Output Thread exiting"); return NULL; } static void android_chiaki_audio_decoder_header(ChiakiAudioHeader *header, void *user) { AndroidChiakiAudioDecoder *decoder = user; chiaki_mutex_lock(&decoder->codec_mutex); memcpy(&decoder->audio_header, header, sizeof(decoder->audio_header)); if(decoder->codec) { CHIAKI_LOGI(decoder->log, "Audio decoder already initialized, shutting down the old one"); android_chiaki_audio_decoder_shutdown_codec(decoder); } const char *mime = "audio/opus"; decoder->codec = AMediaCodec_createDecoderByType(mime); if(!decoder->codec) { CHIAKI_LOGE(decoder->log, "Failed to create AMediaCodec for mime type %s", mime); goto beach; } AMediaFormat *format = AMediaFormat_new(); AMediaFormat_setString(format, AMEDIAFORMAT_KEY_MIME, mime); AMediaFormat_setInt32(format, AMEDIAFORMAT_KEY_CHANNEL_COUNT, header->channels); AMediaFormat_setInt32(format, AMEDIAFORMAT_KEY_SAMPLE_RATE, header->rate); // AMediaFormat_setInt32(format, AMEDIAFORMAT_KEY_PCM_ENCODING) AMediaCodec_configure(decoder->codec, format, NULL, NULL, 0); // TODO: check result AMediaCodec_start(decoder->codec); // TODO: check result AMediaFormat_delete(format); ChiakiErrorCode err = chiaki_thread_create(&decoder->output_thread, android_chiaki_audio_decoder_output_thread_func, decoder); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(decoder->log, "Failed to create output thread for AMediaCodec"); AMediaCodec_delete(decoder->codec); decoder->codec = NULL; } uint8_t opus_id_head[0x13]; memcpy(opus_id_head, "OpusHead", 8); opus_id_head[0x8] = 1; // version opus_id_head[0x9] = header->channels; uint16_t pre_skip = 3840; opus_id_head[0xa] = (uint8_t)(pre_skip & 0xff); opus_id_head[0xb] = (uint8_t)(pre_skip >> 8); opus_id_head[0xc] = (uint8_t)(header->rate & 0xff); opus_id_head[0xd] = (uint8_t)((header->rate >> 0x8) & 0xff); opus_id_head[0xe] = (uint8_t)((header->rate >> 0x10) & 0xff); opus_id_head[0xf] = (uint8_t)(header->rate >> 0x18); uint16_t output_gain = 0; opus_id_head[0x10] = (uint8_t)(output_gain & 0xff); opus_id_head[0x11] = (uint8_t)(output_gain >> 8); opus_id_head[0x12] = 0; // channel map //AMediaFormat_setBuffer(format, AMEDIAFORMAT_KEY_CSD_0, opus_id_head, sizeof(opus_id_head)); android_chiaki_audio_decoder_frame(opus_id_head, sizeof(opus_id_head), decoder); uint64_t pre_skip_ns = 0; uint8_t csd1[8] = { (uint8_t)(pre_skip_ns & 0xff), (uint8_t)((pre_skip_ns >> 0x8) & 0xff), (uint8_t)((pre_skip_ns >> 0x10) & 0xff), (uint8_t)((pre_skip_ns >> 0x18) & 0xff), (uint8_t)((pre_skip_ns >> 0x20) & 0xff), (uint8_t)((pre_skip_ns >> 0x28) & 0xff), (uint8_t)((pre_skip_ns >> 0x30) & 0xff), (uint8_t)(pre_skip_ns >> 0x38)}; android_chiaki_audio_decoder_frame(csd1, sizeof(csd1), decoder); uint64_t pre_roll_ns = 0; uint8_t csd2[8] = { (uint8_t)(pre_roll_ns & 0xff), (uint8_t)((pre_roll_ns >> 0x8) & 0xff), (uint8_t)((pre_roll_ns >> 0x10) & 0xff), (uint8_t)((pre_roll_ns >> 0x18) & 0xff), (uint8_t)((pre_roll_ns >> 0x20) & 0xff), (uint8_t)((pre_roll_ns >> 0x28) & 0xff), (uint8_t)((pre_roll_ns >> 0x30) & 0xff), (uint8_t)(pre_roll_ns >> 0x38)}; android_chiaki_audio_decoder_frame(csd2, sizeof(csd2), decoder); if(decoder->settings_cb) decoder->settings_cb(header->channels, header->rate, decoder->cb_user); beach: chiaki_mutex_unlock(&decoder->codec_mutex); } static void android_chiaki_audio_decoder_frame(uint8_t *buf, size_t buf_size, void *user) { AndroidChiakiAudioDecoder *decoder = user; chiaki_mutex_lock(&decoder->codec_mutex); if(!decoder->codec) { CHIAKI_LOGE(decoder->log, "Received audio data, but decoder is not initialized!"); goto beach; } while(buf_size > 0) { ssize_t codec_buf_index = AMediaCodec_dequeueInputBuffer(decoder->codec, INPUT_BUFFER_TIMEOUT_MS * 1000); if(codec_buf_index < 0) { CHIAKI_LOGE(decoder->log, "Failed to get input audio buffer"); return; } size_t codec_buf_size; uint8_t *codec_buf = AMediaCodec_getInputBuffer(decoder->codec, (size_t)codec_buf_index, &codec_buf_size); size_t codec_sample_size = buf_size; if(codec_sample_size > codec_buf_size) { CHIAKI_LOGD(decoder->log, "Sample is bigger than audio buffer, splitting"); codec_sample_size = codec_buf_size; } memcpy(codec_buf, buf, codec_sample_size); AMediaCodec_queueInputBuffer(decoder->codec, (size_t)codec_buf_index, 0, codec_sample_size, decoder->timestamp_cur++, 0); // timestamp just raised by 1 for maximum realtime buf += codec_sample_size; buf_size -= codec_sample_size; } beach: chiaki_mutex_unlock(&decoder->codec_mutex); }chiaki-v2.2.0/android/app/src/main/cpp/audio-decoder.h000066400000000000000000000025721447035777400225330ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_JNI_AUDIO_DECODER_H #define CHIAKI_JNI_AUDIO_DECODER_H #include #include #include #include typedef void (*AndroidChiakiAudioDecoderSettingsCallback)(uint32_t channels, uint32_t rate, void *user); typedef void (*AndroidChiakiAudioDecoderFrameCallback)(int16_t *buf, size_t samples_count, void *user); typedef struct android_chiaki_audio_decoder_t { ChiakiLog *log; ChiakiAudioHeader audio_header; ChiakiMutex codec_mutex; struct AMediaCodec *codec; uint64_t timestamp_cur; ChiakiThread output_thread; AndroidChiakiAudioDecoderSettingsCallback settings_cb; AndroidChiakiAudioDecoderFrameCallback frame_cb; void *cb_user; } AndroidChiakiAudioDecoder; ChiakiErrorCode android_chiaki_audio_decoder_init(AndroidChiakiAudioDecoder *decoder, ChiakiLog *log); void android_chiaki_audio_decoder_fini(AndroidChiakiAudioDecoder *decoder); void android_chiaki_audio_decoder_get_sink(AndroidChiakiAudioDecoder *decoder, ChiakiAudioSink *sink); static inline void android_chiaki_audio_decoder_set_cb(AndroidChiakiAudioDecoder *decoder, AndroidChiakiAudioDecoderSettingsCallback settings_cb, AndroidChiakiAudioDecoderFrameCallback frame_cb, void *user) { decoder->settings_cb = settings_cb; decoder->frame_cb = frame_cb; decoder->cb_user = user; } #endifchiaki-v2.2.0/android/app/src/main/cpp/audio-output.cpp000066400000000000000000000075261447035777400230250ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "audio-output.h" #include "circular-buf.hpp" #include #include #include #define BUFFER_CHUNK_SIZE 1024 #define BUFFER_CHUNKS_COUNT 32 using AudioBuffer = CircularBuffer; class AudioOutput; class AudioOutputCallback: public oboe::AudioStreamCallback { private: AudioOutput *audio_output; public: AudioOutputCallback(AudioOutput *audio_output) : audio_output(audio_output) {} oboe::DataCallbackResult onAudioReady(oboe::AudioStream *stream, void *audioData, int32_t numFrames) override; void onErrorBeforeClose(oboe::AudioStream *stream, oboe::Result error) override; void onErrorAfterClose(oboe::AudioStream *stream, oboe::Result error) override; }; struct AudioOutput { ChiakiLog *log; oboe::ManagedStream stream; AudioOutputCallback stream_callback; AudioBuffer buf; AudioOutput() : stream_callback(this) {} }; extern "C" void *android_chiaki_audio_output_new(ChiakiLog *log) { auto r = new AudioOutput(); r->log = log; return r; } extern "C" void android_chiaki_audio_output_free(void *audio_output) { if(!audio_output) return; auto ao = reinterpret_cast(audio_output); ao->stream = nullptr; delete ao; } extern "C" void android_chiaki_audio_output_settings(uint32_t channels, uint32_t rate, void *audio_output) { auto ao = reinterpret_cast(audio_output); oboe::AudioStreamBuilder builder; builder.setPerformanceMode(oboe::PerformanceMode::LowLatency) ->setSharingMode(oboe::SharingMode::Exclusive) ->setFormat(oboe::AudioFormat::I16) ->setChannelCount(channels) ->setSampleRate(rate) ->setCallback(&ao->stream_callback); auto result = builder.openManagedStream(ao->stream); if(result == oboe::Result::OK) CHIAKI_LOGI(ao->log, "Audio Output opened Oboe stream"); else CHIAKI_LOGE(ao->log, "Audio Output failed to open Oboe stream: %s", oboe::convertToText(result)); result = ao->stream->start(); if(result == oboe::Result::OK) CHIAKI_LOGI(ao->log, "Audio Output started Oboe stream"); else CHIAKI_LOGE(ao->log, "Audio Output failed to start Oboe stream: %s", oboe::convertToText(result)); } extern "C" void android_chiaki_audio_output_frame(int16_t *buf, size_t samples_count, void *audio_output) { auto ao = reinterpret_cast(audio_output); size_t buf_size = samples_count * sizeof(int16_t); size_t pushed = ao->buf.Push(reinterpret_cast(buf), buf_size); if(pushed < buf_size) CHIAKI_LOGW(ao->log, "Audio Output Buffer Overflow!"); } oboe::DataCallbackResult AudioOutputCallback::onAudioReady(oboe::AudioStream *stream, void *audio_data, int32_t num_frames) { if(stream->getFormat() != oboe::AudioFormat::I16) { CHIAKI_LOGE(audio_output->log, "Oboe stream has invalid format in callback"); return oboe::DataCallbackResult::Stop; } int32_t bytes_per_frame = stream->getBytesPerFrame(); size_t buf_size_requested = static_cast(bytes_per_frame * num_frames); auto buf = reinterpret_cast(audio_data); size_t buf_size_delivered = audio_output->buf.Pop(buf, buf_size_requested); //CHIAKI_LOGW(audio_output->log, "Delivered %llu", (unsigned long long)buf_size_delivered); if(buf_size_delivered < buf_size_requested) { CHIAKI_LOGV(audio_output->log, "Audio Output Buffer Underflow!"); memset(buf + buf_size_delivered, 0, buf_size_requested - buf_size_delivered); } return oboe::DataCallbackResult::Continue; } void AudioOutputCallback::onErrorBeforeClose(oboe::AudioStream *stream, oboe::Result error) { CHIAKI_LOGE(audio_output->log, "Oboe reported error before close: %s", oboe::convertToText(error)); } void AudioOutputCallback::onErrorAfterClose(oboe::AudioStream *stream, oboe::Result error) { CHIAKI_LOGE(audio_output->log, "Oboe reported error after close: %s", oboe::convertToText(error)); } chiaki-v2.2.0/android/app/src/main/cpp/audio-output.h000066400000000000000000000011141447035777400224550ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_JNI_AUDIO_OUTPUT_H #define CHIAKI_JNI_AUDIO_OUTPUT_H #include #include #ifdef __cplusplus extern "C" { #endif void *android_chiaki_audio_output_new(ChiakiLog *log); void android_chiaki_audio_output_free(void *audio_output); void android_chiaki_audio_output_settings(uint32_t channels, uint32_t rate, void *audio_output); void android_chiaki_audio_output_frame(int16_t *buf, size_t samples_count, void *audio_output); #ifdef __cplusplus } #endif #endif //CHIAKI_JNI_AUDIO_OUTPUT_H chiaki-v2.2.0/android/app/src/main/cpp/chiaki-jni.c000066400000000000000000001047141447035777400220310ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include #include #include #include "video-decoder.h" #include "audio-decoder.h" #include "audio-output.h" #include "log.h" #include "chiaki-jni.h" static char *strdup_jni(const char *str) { if(!str) return NULL; char *r = strdup(str); if(!r) return NULL; for(char *c=r; *c; c++) { if(*c & (1 << 7)) *c = '?'; } return r; } jobject jnistr_from_ascii(JNIEnv *env, const char *str) { if(!str) return NULL; char *s = strdup_jni(str); if(!s) return NULL; jobject r = E->NewStringUTF(env, s); free(s); return r; } static jbyteArray jnibytearray_create(JNIEnv *env, const uint8_t *buf, size_t buf_size) { jbyteArray r = E->NewByteArray(env, buf_size); E->SetByteArrayRegion(env, r, 0, buf_size, (const jbyte *)buf); return r; } static jobject get_kotlin_global_object(JNIEnv *env, const char *id) { size_t idlen = strlen(id); char *sig = malloc(idlen + 3); if(!sig) return NULL; sig[0] = 'L'; memcpy(sig + 1, id, idlen); sig[1 + idlen] = ';'; sig[1 + idlen + 1] = '\0'; jclass cls = E->FindClass(env, id); jfieldID field_id = E->GetStaticFieldID(env, cls, "INSTANCE", sig); jobject r = E->GetStaticObjectField(env, cls, field_id); free(sig); return r; } static ChiakiLog global_log; JavaVM *global_vm; JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { global_vm = vm; android_chiaki_file_log_init(&global_log, CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE, NULL); CHIAKI_LOGI(&global_log, "Loading Chiaki Library"); ChiakiErrorCode err = chiaki_lib_init(); CHIAKI_LOGI(&global_log, "Chiaki Library Init Result: %s\n", chiaki_error_string(err)); return JNI_VERSION; } JNIEnv *attach_thread_jni() { JNIEnv *env; int r = (*global_vm)->GetEnv(global_vm, (void **)&env, JNI_VERSION); if(r == JNI_OK) return env; if((*global_vm)->AttachCurrentThread(global_vm, &env, NULL) == 0) return env; CHIAKI_LOGE(&global_log, "Failed to get JNIEnv from JavaVM or attach"); return NULL; } JNIEXPORT jstring JNICALL JNI_FCN(errorCodeToString)(JNIEnv *env, jobject obj, jint value) { return E->NewStringUTF(env, chiaki_error_string((ChiakiErrorCode)value)); } JNIEXPORT jstring JNICALL JNI_FCN(quitReasonToString)(JNIEnv *env, jobject obj, jint value) { return E->NewStringUTF(env, chiaki_quit_reason_string((ChiakiQuitReason)value)); } JNIEXPORT jboolean JNICALL JNI_FCN(quitReasonIsError)(JNIEnv *env, jobject obj, jint value) { return chiaki_quit_reason_is_error(value); } JNIEXPORT jobject JNICALL JNI_FCN(videoProfilePreset)(JNIEnv *env, jobject obj, jint resolution_preset, jint fps_preset, jobject codec) { ChiakiConnectVideoProfile profile = { 0 }; chiaki_connect_video_profile_preset(&profile, (ChiakiVideoResolutionPreset)resolution_preset, (ChiakiVideoFPSPreset)fps_preset); jclass profile_class = E->FindClass(env, BASE_PACKAGE"/ConnectVideoProfile"); jmethodID profile_ctor = E->GetMethodID(env, profile_class, "", "(IIIIL"BASE_PACKAGE"/Codec;)V"); return E->NewObject(env, profile_class, profile_ctor, profile.width, profile.height, profile.max_fps, profile.bitrate, codec); } typedef struct android_chiaki_session_t { ChiakiSession session; ChiakiLog *log; jobject java_session; jclass java_session_class; jmethodID java_session_event_connected_meth; jmethodID java_session_event_login_pin_request_meth; jmethodID java_session_event_quit_meth; jmethodID java_session_event_rumble_meth; jfieldID java_controller_state_buttons; jfieldID java_controller_state_l2_state; jfieldID java_controller_state_r2_state; jfieldID java_controller_state_left_x; jfieldID java_controller_state_left_y; jfieldID java_controller_state_right_x; jfieldID java_controller_state_right_y; jfieldID java_controller_state_touches; jfieldID java_controller_state_gyro_x; jfieldID java_controller_state_gyro_y; jfieldID java_controller_state_gyro_z; jfieldID java_controller_state_accel_x; jfieldID java_controller_state_accel_y; jfieldID java_controller_state_accel_z; jfieldID java_controller_state_orient_x; jfieldID java_controller_state_orient_y; jfieldID java_controller_state_orient_z; jfieldID java_controller_state_orient_w; jfieldID java_controller_touch_x; jfieldID java_controller_touch_y; jfieldID java_controller_touch_id; AndroidChiakiVideoDecoder video_decoder; AndroidChiakiAudioDecoder audio_decoder; void *audio_output; } AndroidChiakiSession; static void android_chiaki_event_cb(ChiakiEvent *event, void *user) { AndroidChiakiSession *session = user; JNIEnv *env = attach_thread_jni(); if(!env) return; switch(event->type) { case CHIAKI_EVENT_CONNECTED: E->CallVoidMethod(env, session->java_session, session->java_session_event_connected_meth); break; case CHIAKI_EVENT_LOGIN_PIN_REQUEST: E->CallVoidMethod(env, session->java_session, session->java_session_event_login_pin_request_meth, (jboolean)event->login_pin_request.pin_incorrect); break; case CHIAKI_EVENT_QUIT: { char *reason_str = strdup_jni(event->quit.reason_str); jstring reason_str_java = reason_str ? E->NewStringUTF(env, reason_str) : NULL; E->CallVoidMethod(env, session->java_session, session->java_session_event_quit_meth, (jint)event->quit.reason, reason_str_java); if(reason_str_java) E->DeleteLocalRef(env, reason_str_java); free(reason_str); break; } case CHIAKI_EVENT_RUMBLE: E->CallVoidMethod(env, session->java_session, session->java_session_event_rumble_meth, (jint)event->rumble.left, (jint)event->rumble.right); break; default: break; } (*global_vm)->DetachCurrentThread(global_vm); } JNIEXPORT void JNICALL JNI_FCN(sessionCreate)(JNIEnv *env, jobject obj, jobject result, jobject connect_info_obj, jstring log_file_str, jboolean log_verbose, jobject java_session) { AndroidChiakiSession *session = NULL; ChiakiLog *log = malloc(sizeof(ChiakiLog)); const char *log_file = log_file_str ? E->GetStringUTFChars(env, log_file_str, NULL) : NULL; android_chiaki_file_log_init(log, log_verbose ? CHIAKI_LOG_ALL : (CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE), log_file); if(log_file) E->ReleaseStringUTFChars(env, log_file_str, log_file); ChiakiErrorCode err = CHIAKI_ERR_SUCCESS; char *host_str = NULL; jclass result_class = E->GetObjectClass(env, result); jclass connect_info_class = E->GetObjectClass(env, connect_info_obj); jboolean ps5 = E->GetBooleanField(env, connect_info_obj, E->GetFieldID(env, connect_info_class, "ps5", "Z")); jstring host_string = E->GetObjectField(env, connect_info_obj, E->GetFieldID(env, connect_info_class, "host", "Ljava/lang/String;")); jbyteArray regist_key_array = E->GetObjectField(env, connect_info_obj, E->GetFieldID(env, connect_info_class, "registKey", "[B")); jbyteArray morning_array = E->GetObjectField(env, connect_info_obj, E->GetFieldID(env, connect_info_class, "morning", "[B")); jobject connect_video_profile_obj = E->GetObjectField(env, connect_info_obj, E->GetFieldID(env, connect_info_class, "videoProfile", "L"BASE_PACKAGE"/ConnectVideoProfile;")); jclass connect_video_profile_class = E->GetObjectClass(env, connect_video_profile_obj); ChiakiConnectInfo connect_info = { 0 }; connect_info.ps5 = ps5; const char *str_borrow = E->GetStringUTFChars(env, host_string, NULL); connect_info.host = host_str = strdup(str_borrow); E->ReleaseStringUTFChars(env, host_string, str_borrow); if(!connect_info.host) { err = CHIAKI_ERR_MEMORY; goto beach; } if(E->GetArrayLength(env, regist_key_array) != sizeof(connect_info.regist_key)) { CHIAKI_LOGE(log, "Regist Key passed from Java has invalid length"); err = CHIAKI_ERR_INVALID_DATA; goto beach; } jbyte *bytes = E->GetByteArrayElements(env, regist_key_array, NULL); memcpy(connect_info.regist_key, bytes, sizeof(connect_info.regist_key)); E->ReleaseByteArrayElements(env, regist_key_array, bytes, JNI_ABORT); if(E->GetArrayLength(env, morning_array) != sizeof(connect_info.morning)) { CHIAKI_LOGE(log, "Morning passed from Java has invalid length"); err = CHIAKI_ERR_INVALID_DATA; goto beach; } bytes = E->GetByteArrayElements(env, morning_array, NULL); memcpy(connect_info.morning, bytes, sizeof(connect_info.morning)); E->ReleaseByteArrayElements(env, morning_array, bytes, JNI_ABORT); connect_info.video_profile.width = (unsigned int)E->GetIntField(env, connect_video_profile_obj, E->GetFieldID(env, connect_video_profile_class, "width", "I")); connect_info.video_profile.height = (unsigned int)E->GetIntField(env, connect_video_profile_obj, E->GetFieldID(env, connect_video_profile_class, "height", "I")); connect_info.video_profile.max_fps = (unsigned int)E->GetIntField(env, connect_video_profile_obj, E->GetFieldID(env, connect_video_profile_class, "maxFPS", "I")); connect_info.video_profile.bitrate = (unsigned int)E->GetIntField(env, connect_video_profile_obj, E->GetFieldID(env, connect_video_profile_class, "bitrate", "I")); jobject codec_obj = E->GetObjectField(env, connect_video_profile_obj, E->GetFieldID(env, connect_video_profile_class, "codec", "L"BASE_PACKAGE"/Codec;")); jclass codec_class = E->GetObjectClass(env, codec_obj); jint target_value = E->GetIntField(env, codec_obj, E->GetFieldID(env, codec_class, "value", "I")); connect_info.video_profile.codec = (ChiakiCodec)target_value; connect_info.video_profile_auto_downgrade = true; session = CHIAKI_NEW(AndroidChiakiSession); if(!session) { err = CHIAKI_ERR_MEMORY; goto beach; } memset(session, 0, sizeof(AndroidChiakiSession)); session->log = log; err = android_chiaki_video_decoder_init(&session->video_decoder, log, connect_info.video_profile.width, connect_info.video_profile.height, connect_info.ps5 ? connect_info.video_profile.codec : CHIAKI_CODEC_H264); if(err != CHIAKI_ERR_SUCCESS) { free(session); session = NULL; goto beach; } err = android_chiaki_audio_decoder_init(&session->audio_decoder, log); if(err != CHIAKI_ERR_SUCCESS) { android_chiaki_video_decoder_fini(&session->video_decoder); free(session); session = NULL; goto beach; } session->audio_output = android_chiaki_audio_output_new(log); android_chiaki_audio_decoder_set_cb(&session->audio_decoder, android_chiaki_audio_output_settings, android_chiaki_audio_output_frame, session->audio_output); err = chiaki_session_init(&session->session, &connect_info, log); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(log, "JNI ChiakiSession failed to init"); android_chiaki_video_decoder_fini(&session->video_decoder); android_chiaki_audio_decoder_fini(&session->audio_decoder); android_chiaki_audio_output_free(session->audio_output); free(session); session = NULL; goto beach; } session->java_session = E->NewGlobalRef(env, java_session); session->java_session_class = E->NewGlobalRef(env, E->GetObjectClass(env, session->java_session)); session->java_session_event_connected_meth = E->GetMethodID(env, session->java_session_class, "eventConnected", "()V"); session->java_session_event_login_pin_request_meth = E->GetMethodID(env, session->java_session_class, "eventLoginPinRequest", "(Z)V"); session->java_session_event_quit_meth = E->GetMethodID(env, session->java_session_class, "eventQuit", "(ILjava/lang/String;)V"); session->java_session_event_rumble_meth = E->GetMethodID(env, session->java_session_class, "eventRumble", "(II)V"); jclass controller_state_class = E->FindClass(env, BASE_PACKAGE"/ControllerState"); session->java_controller_state_buttons = E->GetFieldID(env, controller_state_class, "buttons", "I"); session->java_controller_state_l2_state = E->GetFieldID(env, controller_state_class, "l2State", "B"); session->java_controller_state_r2_state = E->GetFieldID(env, controller_state_class, "r2State", "B"); session->java_controller_state_left_x = E->GetFieldID(env, controller_state_class, "leftX", "S"); session->java_controller_state_left_y = E->GetFieldID(env, controller_state_class, "leftY", "S"); session->java_controller_state_right_x = E->GetFieldID(env, controller_state_class, "rightX", "S"); session->java_controller_state_right_y = E->GetFieldID(env, controller_state_class, "rightY", "S"); session->java_controller_state_touches = E->GetFieldID(env, controller_state_class, "touches", "[L"BASE_PACKAGE"/ControllerTouch;"); session->java_controller_state_gyro_x = E->GetFieldID(env, controller_state_class, "gyroX", "F"); session->java_controller_state_gyro_y = E->GetFieldID(env, controller_state_class, "gyroY", "F"); session->java_controller_state_gyro_z = E->GetFieldID(env, controller_state_class, "gyroZ", "F"); session->java_controller_state_accel_x = E->GetFieldID(env, controller_state_class, "accelX", "F"); session->java_controller_state_accel_y = E->GetFieldID(env, controller_state_class, "accelY", "F"); session->java_controller_state_accel_z = E->GetFieldID(env, controller_state_class, "accelZ", "F"); session->java_controller_state_orient_x = E->GetFieldID(env, controller_state_class, "orientX", "F"); session->java_controller_state_orient_y = E->GetFieldID(env, controller_state_class, "orientY", "F"); session->java_controller_state_orient_z = E->GetFieldID(env, controller_state_class, "orientZ", "F"); session->java_controller_state_orient_w = E->GetFieldID(env, controller_state_class, "orientW", "F"); jclass controller_touch_class = E->FindClass(env, BASE_PACKAGE"/ControllerTouch"); session->java_controller_touch_x = E->GetFieldID(env, controller_touch_class, "x", "S"); session->java_controller_touch_y = E->GetFieldID(env, controller_touch_class, "y", "S"); session->java_controller_touch_id = E->GetFieldID(env, controller_touch_class, "id", "B"); chiaki_session_set_event_cb(&session->session, android_chiaki_event_cb, session); chiaki_session_set_video_sample_cb(&session->session, android_chiaki_video_decoder_video_sample, &session->video_decoder); ChiakiAudioSink audio_sink; android_chiaki_audio_decoder_get_sink(&session->audio_decoder, &audio_sink); chiaki_session_set_audio_sink(&session->session, &audio_sink); beach: if(!session && log) { android_chiaki_file_log_fini(log); free(log); } free(host_str); E->SetIntField(env, result, E->GetFieldID(env, result_class, "errorCode", "I"), (jint)err); E->SetLongField(env, result, E->GetFieldID(env, result_class, "ptr", "J"), (jlong)session); } JNIEXPORT void JNICALL JNI_FCN(sessionFree)(JNIEnv *env, jobject obj, jlong ptr) { AndroidChiakiSession *session = (AndroidChiakiSession *)ptr; if(!session) return; CHIAKI_LOGI(session->log, "Shutting down JNI Session"); chiaki_session_fini(&session->session); android_chiaki_video_decoder_fini(&session->video_decoder); android_chiaki_audio_decoder_fini(&session->audio_decoder); android_chiaki_audio_output_free(session->audio_output); E->DeleteGlobalRef(env, session->java_session); E->DeleteGlobalRef(env, session->java_session_class); CHIAKI_LOGI(session->log, "JNI Session has quit"); android_chiaki_file_log_fini(session->log); free(session->log); free(session); } JNIEXPORT jint JNICALL JNI_FCN(sessionStart)(JNIEnv *env, jobject obj, jlong ptr) { AndroidChiakiSession *session = (AndroidChiakiSession *)ptr; CHIAKI_LOGI(session->log, "Start JNI Session"); return chiaki_session_start(&session->session); } JNIEXPORT jint JNICALL JNI_FCN(sessionStop)(JNIEnv *env, jobject obj, jlong ptr) { AndroidChiakiSession *session = (AndroidChiakiSession *)ptr; CHIAKI_LOGI(session->log, "Stop JNI Session"); return chiaki_session_stop(&session->session); } JNIEXPORT jint JNICALL JNI_FCN(sessionJoin)(JNIEnv *env, jobject obj, jlong ptr) { AndroidChiakiSession *session = (AndroidChiakiSession *)ptr; CHIAKI_LOGI(session->log, "Join JNI Session"); return chiaki_session_join(&session->session); } JNIEXPORT void JNICALL JNI_FCN(sessionSetSurface)(JNIEnv *env, jobject obj, jlong ptr, jobject surface) { AndroidChiakiSession *session = (AndroidChiakiSession *)ptr; android_chiaki_video_decoder_set_surface(&session->video_decoder, env, surface); } JNIEXPORT void JNICALL JNI_FCN(sessionSetControllerState)(JNIEnv *env, jobject obj, jlong ptr, jobject controller_state_java) { AndroidChiakiSession *session = (AndroidChiakiSession *)ptr; ChiakiControllerState controller_state; chiaki_controller_state_set_idle(&controller_state); controller_state.buttons = (uint32_t)E->GetIntField(env, controller_state_java, session->java_controller_state_buttons); controller_state.l2_state = (uint8_t)E->GetByteField(env, controller_state_java, session->java_controller_state_l2_state); controller_state.r2_state = (uint8_t)E->GetByteField(env, controller_state_java, session->java_controller_state_r2_state); controller_state.left_x = (int16_t)E->GetShortField(env, controller_state_java, session->java_controller_state_left_x); controller_state.left_y = (int16_t)E->GetShortField(env, controller_state_java, session->java_controller_state_left_y); controller_state.right_x = (int16_t)E->GetShortField(env, controller_state_java, session->java_controller_state_right_x); controller_state.right_y = (int16_t)E->GetShortField(env, controller_state_java, session->java_controller_state_right_y); jobjectArray touch_array = E->GetObjectField(env, controller_state_java, session->java_controller_state_touches); size_t touch_array_len = (size_t)E->GetArrayLength(env, touch_array); for(size_t i = 0; i < CHIAKI_CONTROLLER_TOUCHES_MAX; i++) { if(i < touch_array_len) { jobject touch = E->GetObjectArrayElement(env, touch_array, i); controller_state.touches[i].x = (uint16_t)E->GetShortField(env, touch, session->java_controller_touch_x); controller_state.touches[i].y = (uint16_t)E->GetShortField(env, touch, session->java_controller_touch_y); controller_state.touches[i].id = (int8_t)E->GetByteField(env, touch, session->java_controller_touch_id); } else { controller_state.touches[i].x = 0; controller_state.touches[i].y = 0; controller_state.touches[i].id = -1; } } controller_state.gyro_x = E->GetFloatField(env, controller_state_java, session->java_controller_state_gyro_x); controller_state.gyro_y = E->GetFloatField(env, controller_state_java, session->java_controller_state_gyro_y); controller_state.gyro_z = E->GetFloatField(env, controller_state_java, session->java_controller_state_gyro_z); controller_state.accel_x = E->GetFloatField(env, controller_state_java, session->java_controller_state_accel_x); controller_state.accel_y = E->GetFloatField(env, controller_state_java, session->java_controller_state_accel_y); controller_state.accel_z = E->GetFloatField(env, controller_state_java, session->java_controller_state_accel_z); controller_state.orient_x = E->GetFloatField(env, controller_state_java, session->java_controller_state_orient_x); controller_state.orient_y = E->GetFloatField(env, controller_state_java, session->java_controller_state_orient_y); controller_state.orient_z = E->GetFloatField(env, controller_state_java, session->java_controller_state_orient_z); controller_state.orient_w = E->GetFloatField(env, controller_state_java, session->java_controller_state_orient_w); chiaki_session_set_controller_state(&session->session, &controller_state); } JNIEXPORT void JNICALL JNI_FCN(sessionSetLoginPin)(JNIEnv *env, jobject obj, jlong ptr, jstring pin_java) { AndroidChiakiSession *session = (AndroidChiakiSession *)ptr; const char *pin = E->GetStringUTFChars(env, pin_java, NULL); chiaki_session_set_login_pin(&session->session, (const uint8_t *)pin, strlen(pin)); E->ReleaseStringUTFChars(env, pin_java, pin); } typedef struct android_discovery_service_t { ChiakiDiscoveryService service; jobject java_service; jclass java_service_class; jmethodID java_service_hosts_updated_meth; jclass host_class; jmethodID host_ctor; jobject host_state_unknown; jobject host_state_ready; jobject host_state_standby; } AndroidDiscoveryService; static void android_discovery_service_cb(ChiakiDiscoveryHost *hosts, size_t hosts_count, void *user) { AndroidDiscoveryService *service = user; CHIAKI_LOGI(&global_log, "JNI Discovery Callback got %llu hosts", (unsigned long long)hosts_count); JNIEnv *env = attach_thread_jni(); if(!env) return; jobjectArray r = E->NewObjectArray(env, hosts_count, service->host_class, NULL); for(size_t i=0; istate) { case CHIAKI_DISCOVERY_HOST_STATE_STANDBY: state = service->host_state_standby; break; case CHIAKI_DISCOVERY_HOST_STATE_READY: state = service->host_state_ready; break; default: state = service->host_state_unknown; break; } jobject o = E->NewObject(env, service->host_class, service->host_ctor, state, host->host_request_port, jnistr_from_ascii(env, host->host_addr), jnistr_from_ascii(env, host->system_version), jnistr_from_ascii(env, host->device_discovery_protocol_version), jnistr_from_ascii(env, host->host_name), jnistr_from_ascii(env, host->host_type), jnistr_from_ascii(env, host->host_id), jnistr_from_ascii(env, host->running_app_titleid), jnistr_from_ascii(env, host->running_app_name)); E->SetObjectArrayElement(env, r, i, o); } E->CallVoidMethod(env, service->java_service, service->java_service_hosts_updated_meth, r); (*global_vm)->DetachCurrentThread(global_vm); } static ChiakiErrorCode sockaddr_from_java(JNIEnv *env, jobject /*InetSocketAddress*/ sockaddr_obj, struct sockaddr **addr, size_t *addr_size) { jclass sockaddr_class = E->GetObjectClass(env, sockaddr_obj); uint16_t port = (uint16_t)E->CallIntMethod(env, sockaddr_obj, E->GetMethodID(env, sockaddr_class, "getPort", "()I")); jobject addr_obj = E->CallObjectMethod(env, sockaddr_obj, E->GetMethodID(env, sockaddr_class, "getAddress", "()Ljava/net/InetAddress;")); jclass addr_class = E->GetObjectClass(env, addr_obj); jbyteArray addr_byte_array = E->CallObjectMethod(env, addr_obj, E->GetMethodID(env, addr_class, "getAddress", "()[B")); jsize addr_byte_array_len = E->GetArrayLength(env, addr_byte_array); if(addr_byte_array_len == 4) { struct sockaddr_in *inaddr = CHIAKI_NEW(struct sockaddr_in); if(!inaddr) return CHIAKI_ERR_MEMORY; memset(inaddr, 0, sizeof(*inaddr)); inaddr->sin_family = AF_INET; jbyte *bytes = E->GetByteArrayElements(env, addr_byte_array, NULL); memcpy(&inaddr->sin_addr.s_addr, bytes, sizeof(inaddr->sin_addr.s_addr)); E->ReleaseByteArrayElements(env, addr_byte_array, bytes, JNI_ABORT); inaddr->sin_port = htons(port); *addr = (struct sockaddr *)inaddr; *addr_size = sizeof(*inaddr); } else if(addr_byte_array_len == 0x10) { struct sockaddr_in6 *inaddr6 = CHIAKI_NEW(struct sockaddr_in6); if(!inaddr6) return CHIAKI_ERR_MEMORY; memset(inaddr6, 0, sizeof(*inaddr6)); inaddr6->sin6_family = AF_INET6; jbyte *bytes = E->GetByteArrayElements(env, addr_byte_array, NULL); memcpy(&inaddr6->sin6_addr.in6_u, bytes, sizeof(inaddr6->sin6_addr.in6_u)); E->ReleaseByteArrayElements(env, addr_byte_array, bytes, JNI_ABORT); inaddr6->sin6_port = htons(port); *addr = (struct sockaddr *)inaddr6; *addr_size = sizeof(*inaddr6); } else return CHIAKI_ERR_INVALID_DATA; return CHIAKI_ERR_SUCCESS; } JNIEXPORT void JNICALL JNI_FCN(discoveryServiceCreate)(JNIEnv *env, jobject obj, jobject result, jobject options_obj, jobject java_service) { jclass result_class = E->GetObjectClass(env, result); ChiakiErrorCode err = CHIAKI_ERR_SUCCESS; ChiakiDiscoveryServiceOptions options = { 0 }; AndroidDiscoveryService *service = CHIAKI_NEW(AndroidDiscoveryService); if(!service) { err = CHIAKI_ERR_MEMORY; goto beach; } jclass options_class = E->GetObjectClass(env, options_obj); options.hosts_max = (size_t)E->GetLongField(env, options_obj, E->GetFieldID(env, options_class, "hostsMax", "J")); options.host_drop_pings = (uint64_t)E->GetLongField(env, options_obj, E->GetFieldID(env, options_class, "hostDropPings", "J")); options.ping_ms = (uint64_t)E->GetLongField(env, options_obj, E->GetFieldID(env, options_class, "pingMs", "J")); options.cb = android_discovery_service_cb; options.cb_user = service; err = sockaddr_from_java(env, E->GetObjectField(env, options_obj, E->GetFieldID(env, options_class, "sendAddr", "Ljava/net/InetSocketAddress;")), &options.send_addr, &options.send_addr_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(&global_log, "Failed to get sockaddr from InetSocketAddress"); goto beach; } service->java_service = E->NewGlobalRef(env, java_service); service->java_service_class = E->GetObjectClass(env, service->java_service); service->java_service_hosts_updated_meth = E->GetMethodID(env, service->java_service_class, "hostsUpdated", "([L"BASE_PACKAGE"/DiscoveryHost;)V"); service->host_class = E->NewGlobalRef(env, E->FindClass(env, BASE_PACKAGE"/DiscoveryHost")); service->host_ctor = E->GetMethodID(env, service->host_class, "", "(" "L"BASE_PACKAGE"/DiscoveryHost$State;" "S" // hostRequestPort: UShort "Ljava/lang/String;" // hostAddr: String?, "Ljava/lang/String;" // systemVersion: String?, "Ljava/lang/String;" // deviceDiscoveryProtocolVersion: String?, "Ljava/lang/String;" // hostName: String?, "Ljava/lang/String;" // hostType: String?, "Ljava/lang/String;" // hostId: String?, "Ljava/lang/String;" // runningAppTitleid: String?, "Ljava/lang/String;" // runningAppName: String? ")V"); jclass host_state_class = E->FindClass(env, BASE_PACKAGE"/DiscoveryHost$State"); service->host_state_unknown = E->NewGlobalRef(env, E->GetStaticObjectField(env, host_state_class, E->GetStaticFieldID(env, host_state_class, "UNKNOWN", "L"BASE_PACKAGE"/DiscoveryHost$State;"))); service->host_state_standby = E->NewGlobalRef(env, E->GetStaticObjectField(env, host_state_class, E->GetStaticFieldID(env, host_state_class, "STANDBY", "L"BASE_PACKAGE"/DiscoveryHost$State;"))); service->host_state_ready = E->NewGlobalRef(env, E->GetStaticObjectField(env, host_state_class, E->GetStaticFieldID(env, host_state_class, "READY", "L"BASE_PACKAGE"/DiscoveryHost$State;"))); err = chiaki_discovery_service_init(&service->service, &options, &global_log); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(&global_log, "Failed to create discovery service (JNI)"); E->DeleteGlobalRef(env, service->java_service); E->DeleteGlobalRef(env, service->host_state_unknown); E->DeleteGlobalRef(env, service->host_state_standby); E->DeleteGlobalRef(env, service->host_state_ready); E->DeleteGlobalRef(env, service->host_class); free(service); goto beach; } beach: free(options.send_addr); E->SetIntField(env, result, E->GetFieldID(env, result_class, "errorCode", "I"), (jint)err); E->SetLongField(env, result, E->GetFieldID(env, result_class, "ptr", "J"), (jlong)service); } JNIEXPORT void JNICALL JNI_FCN(discoveryServiceFree)(JNIEnv *env, jobject obj, jlong ptr) { AndroidDiscoveryService *service = (AndroidDiscoveryService *)ptr; if(!service) return; chiaki_discovery_service_fini(&service->service); E->DeleteGlobalRef(env, service->java_service); E->DeleteGlobalRef(env, service->host_state_unknown); E->DeleteGlobalRef(env, service->host_state_standby); E->DeleteGlobalRef(env, service->host_state_ready); E->DeleteGlobalRef(env, service->host_class); free(service); } JNIEXPORT jint JNICALL JNI_FCN(discoveryServiceWakeup)(JNIEnv *env, jobject obj, jlong ptr, jstring host_string, jlong user_credential, jboolean ps5) { AndroidDiscoveryService *service = (AndroidDiscoveryService *)ptr; const char *host = E->GetStringUTFChars(env, host_string, NULL); ChiakiErrorCode r = chiaki_discovery_wakeup(&global_log, service ? &service->service.discovery : NULL, host, (uint64_t)user_credential, ps5); E->ReleaseStringUTFChars(env, host_string, host); return r; } typedef struct android_chiaki_regist_t { AndroidChiakiJNILog log; ChiakiRegist regist; jobject java_regist; jmethodID java_regist_event_meth; jclass java_target_class; jobject java_regist_event_canceled; jobject java_regist_event_failed; jclass java_regist_event_success_class; jmethodID java_regist_event_success_ctor; jclass java_regist_host_class; jmethodID java_regist_host_ctor; } AndroidChiakiRegist; static jobject create_jni_target(JNIEnv *env, jclass target_class, ChiakiTarget target) { jmethodID meth = E->GetStaticMethodID(env, target_class, "fromValue", "(I)L"BASE_PACKAGE"/Target;"); return E->CallStaticObjectMethod(env, target_class, meth, (jint)target); } static void android_chiaki_regist_cb(ChiakiRegistEvent *event, void *user) { AndroidChiakiRegist *regist = user; JNIEnv *env = attach_thread_jni(); if(!env) return; jobject java_event = NULL; switch(event->type) { case CHIAKI_REGIST_EVENT_TYPE_FINISHED_CANCELED: java_event = regist->java_regist_event_canceled; break; case CHIAKI_REGIST_EVENT_TYPE_FINISHED_FAILED: java_event = regist->java_regist_event_failed; break; case CHIAKI_REGIST_EVENT_TYPE_FINISHED_SUCCESS: { ChiakiRegisteredHost *host = event->registered_host; jobject java_host = E->NewObject(env, regist->java_regist_host_class, regist->java_regist_host_ctor, create_jni_target(env, regist->java_target_class, host->target), jnistr_from_ascii(env, host->ap_ssid), jnistr_from_ascii(env, host->ap_bssid), jnistr_from_ascii(env, host->ap_key), jnistr_from_ascii(env, host->ap_name), jnibytearray_create(env, host->server_mac, sizeof(host->server_mac)), jnistr_from_ascii(env, host->server_nickname), jnibytearray_create(env, (const uint8_t *)host->rp_regist_key, sizeof(host->rp_regist_key)), (jint)host->rp_key_type, jnibytearray_create(env, host->rp_key, sizeof(host->rp_key))); java_event = E->NewObject(env, regist->java_regist_event_success_class, regist->java_regist_event_success_ctor, java_host); break; } } if(java_event) E->CallVoidMethod(env, regist->java_regist, regist->java_regist_event_meth, java_event); (*global_vm)->DetachCurrentThread(global_vm); } static void android_chiaki_regist_fini_partial(JNIEnv *env, AndroidChiakiRegist *regist) { android_chiaki_jni_log_fini(®ist->log, env); E->DeleteGlobalRef(env, regist->java_regist); E->DeleteGlobalRef(env, regist->java_target_class); E->DeleteGlobalRef(env, regist->java_regist_event_canceled); E->DeleteGlobalRef(env, regist->java_regist_event_failed); E->DeleteGlobalRef(env, regist->java_regist_event_success_class); E->DeleteGlobalRef(env, regist->java_regist_host_class); } JNIEXPORT void JNICALL JNI_FCN(registStart)(JNIEnv *env, jobject obj, jobject result, jobject regist_info_obj, jobject log_obj, jobject java_regist) { jclass result_class = E->GetObjectClass(env, result); ChiakiErrorCode err = CHIAKI_ERR_SUCCESS; AndroidChiakiRegist *regist = CHIAKI_NEW(AndroidChiakiRegist); if(!regist) { err = CHIAKI_ERR_MEMORY; goto beach; } android_chiaki_jni_log_init(®ist->log, env, log_obj); regist->java_regist = E->NewGlobalRef(env, java_regist); regist->java_regist_event_meth = E->GetMethodID(env, E->GetObjectClass(env, regist->java_regist), "event", "(L"BASE_PACKAGE"/RegistEvent;)V"); regist->java_target_class = E->NewGlobalRef(env, E->FindClass(env, BASE_PACKAGE"/Target")); regist->java_regist_event_canceled = E->NewGlobalRef(env, get_kotlin_global_object(env, BASE_PACKAGE"/RegistEventCanceled")); regist->java_regist_event_failed = E->NewGlobalRef(env, get_kotlin_global_object(env, BASE_PACKAGE"/RegistEventFailed")); regist->java_regist_event_success_class = E->NewGlobalRef(env, E->FindClass(env, BASE_PACKAGE"/RegistEventSuccess")); regist->java_regist_event_success_ctor = E->GetMethodID(env, regist->java_regist_event_success_class, "", "(L"BASE_PACKAGE"/RegistHost;)V"); regist->java_regist_host_class = E->NewGlobalRef(env, E->FindClass(env, BASE_PACKAGE"/RegistHost")); regist->java_regist_host_ctor = E->GetMethodID(env, regist->java_regist_host_class, "", "(" "L"BASE_PACKAGE"/Target;" // target: Target "Ljava/lang/String;" // apSsid: String "Ljava/lang/String;" // apBssid: String "Ljava/lang/String;" // apKey: String "Ljava/lang/String;" // apName: String "[B" // serverMac: ByteArray "Ljava/lang/String;" // serverNickname: String "[B" // rpRegistKey: ByteArray "I" // rpKeyType: UInt "[B" // rpKey: ByteArray ")V"); jclass regist_info_class = E->GetObjectClass(env, regist_info_obj); jobject target_obj = E->GetObjectField(env, regist_info_obj, E->GetFieldID(env, regist_info_class, "target", "L"BASE_PACKAGE"/Target;")); jclass target_class = E->GetObjectClass(env, target_obj); jint target_value = E->GetIntField(env, target_obj, E->GetFieldID(env, target_class, "value", "I")); jstring host_string = E->GetObjectField(env, regist_info_obj, E->GetFieldID(env, regist_info_class, "host", "Ljava/lang/String;")); jboolean broadcast = E->GetBooleanField(env, regist_info_obj, E->GetFieldID(env, regist_info_class, "broadcast", "Z")); jstring psn_online_id_string = E->GetObjectField(env, regist_info_obj, E->GetFieldID(env, regist_info_class, "psnOnlineId", "Ljava/lang/String;")); jbyteArray psn_account_id_array = E->GetObjectField(env, regist_info_obj, E->GetFieldID(env, regist_info_class, "psnAccountId", "[B")); jint pin = E->GetIntField(env, regist_info_obj, E->GetFieldID(env, regist_info_class, "pin", "I")); ChiakiRegistInfo regist_info = { 0 }; regist_info.target = (ChiakiTarget)target_value; regist_info.host = E->GetStringUTFChars(env, host_string, NULL); regist_info.broadcast = broadcast; if(psn_online_id_string) regist_info.psn_online_id = E->GetStringUTFChars(env, psn_online_id_string, NULL); if(psn_account_id_array && E->GetArrayLength(env, psn_account_id_array) == sizeof(regist_info.psn_account_id)) E->GetByteArrayRegion(env, psn_account_id_array, 0, sizeof(regist_info.psn_account_id), (jbyte *)regist_info.psn_account_id); regist_info.pin = (uint32_t)pin; err = chiaki_regist_start(®ist->regist, ®ist->log.log, ®ist_info, android_chiaki_regist_cb, regist); E->ReleaseStringUTFChars(env, host_string, regist_info.host); if(regist_info.psn_online_id) E->ReleaseStringUTFChars(env, psn_online_id_string, regist_info.psn_online_id); if(err != CHIAKI_ERR_SUCCESS) { android_chiaki_regist_fini_partial(env, regist); free(regist); regist = NULL; } beach: E->SetIntField(env, result, E->GetFieldID(env, result_class, "errorCode", "I"), (jint)err); E->SetLongField(env, result, E->GetFieldID(env, result_class, "ptr", "J"), (jlong)regist); } JNIEXPORT void JNICALL JNI_FCN(registStop)(JNIEnv *env, jobject obj, jlong ptr) { AndroidChiakiRegist *regist = (AndroidChiakiRegist *)ptr; chiaki_regist_stop(®ist->regist); } JNIEXPORT void JNICALL JNI_FCN(registFree)(JNIEnv *env, jobject obj, jlong ptr) { AndroidChiakiRegist *regist = (AndroidChiakiRegist *)ptr; chiaki_regist_fini(®ist->regist); android_chiaki_regist_fini_partial(env, regist); free(regist); } chiaki-v2.2.0/android/app/src/main/cpp/chiaki-jni.h000066400000000000000000000006171447035777400220330ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_JNI_H #define CHIAKI_JNI_H #define JNI_VERSION JNI_VERSION_1_6 #define BASE_PACKAGE "com/metallic/chiaki/lib" #define JNI_FCN(name) Java_com_metallic_chiaki_lib_ChiakiNative_##name #define E (*env) JNIEnv *attach_thread_jni(); jobject jnistr_from_ascii(JNIEnv *env, const char *str); extern JavaVM *global_vm; #endifchiaki-v2.2.0/android/app/src/main/cpp/circular-buf.hpp000066400000000000000000000056131447035777400227440ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_JNI_CIRCULARBUF_HPP #define CHIAKI_JNI_CIRCULARBUF_HPP #include "circular-fifo.hpp" #include #include #include template class CircularBuffer { static_assert(ChunksCount > 0, "ChunksCount > 0"); static_assert(ChunkSize > 0, "ChunkSize > 0"); private: using Queue = memory_relaxed_aquire_release::CircularFifo; Queue full_queue; Queue free_queue; uint8_t *buffer; uint8_t *push_chunk; size_t push_chunk_size; // written bytes from the start of the chunk uint8_t *pop_chunk; size_t pop_chunk_size; // remaining bytes until the end of the chunk void FlushChunks() { for(size_t i=1; i remaining_space) to_push = remaining_space; memcpy(push_chunk + push_chunk_size, buf + pushed, to_push); pushed += to_push; push_chunk_size += to_push; if(push_chunk_size == ChunkSize) { bool success = full_queue.push(push_chunk); assert(success); // We should have made the queues big enough push_chunk = nullptr; } } return pushed; } /** * @return bytes that were popped */ size_t Pop(uint8_t *buf, size_t buf_size) { size_t popped = 0; while(popped < buf_size) { if(!pop_chunk) { if(!full_queue.pop(pop_chunk)) pop_chunk = nullptr; if(!pop_chunk) return popped; pop_chunk_size = ChunkSize; } size_t to_pop = buf_size - popped; if(to_pop > pop_chunk_size) to_pop = pop_chunk_size; memcpy(buf + popped, pop_chunk + (ChunkSize - pop_chunk_size), to_pop); popped += to_pop; pop_chunk_size -= to_pop; if(pop_chunk_size == 0) { bool success = free_queue.push(pop_chunk); assert(success);// We should have made the queues big enough pop_chunk = nullptr; } } return popped; } }; #endif //CHIAKI_JNI_CIRCULARBUF_HPP chiaki-v2.2.0/android/app/src/main/cpp/circular-fifo.hpp000066400000000000000000000062131447035777400231100ustar00rootroot00000000000000/* * Not any company's property but Public-Domain * Do with source-code as you will. No requirement to keep this * header if need to use it/change it/ or do whatever with it * * Note that there is No guarantee that this code will work * and I take no responsibility for this code and any problems you * might get if using it. * * Code & platform dependent issues with it was originally * published at http://www.kjellkod.cc/threadsafecircularqueue * 2012-16-19 @author Kjell Hedström, hedstrom@kjellkod.cc */ // should be mentioned the thinking of what goes where // it is a "controversy" whether what is tail and what is head // http://en.wikipedia.org/wiki/FIFO#Head_or_tail_first #ifndef CIRCULARFIFO_AQUIRE_RELEASE_H_ #define CIRCULARFIFO_AQUIRE_RELEASE_H_ #include #include namespace memory_relaxed_aquire_release { template class CircularFifo{ public: enum { Capacity = Size+1 }; CircularFifo() : _tail(0), _head(0){} virtual ~CircularFifo() {} bool push(const Element& item); // pushByMOve? bool pop(Element& item); bool wasEmpty() const; bool wasFull() const; bool isLockFree() const; private: size_t increment(size_t idx) const; std::atomic _tail; // tail(input) index Element _array[Capacity]; std::atomic _head; // head(output) index }; template bool CircularFifo::push(const Element& item) { const auto current_tail = _tail.load(std::memory_order_relaxed); const auto next_tail = increment(current_tail); if(next_tail != _head.load(std::memory_order_acquire)) { _array[current_tail] = item; _tail.store(next_tail, std::memory_order_release); return true; } return false; // full queue } // Pop by Consumer can only update the head (load with relaxed, store with release) // the tail must be accessed with at least aquire template bool CircularFifo::pop(Element& item) { const auto current_head = _head.load(std::memory_order_relaxed); if(current_head == _tail.load(std::memory_order_acquire)) return false; // empty queue item = _array[current_head]; _head.store(increment(current_head), std::memory_order_release); return true; } template bool CircularFifo::wasEmpty() const { // snapshot with acceptance of that this comparison operation is not atomic return (_head.load() == _tail.load()); } // snapshot with acceptance that this comparison is not atomic template bool CircularFifo::wasFull() const { const auto next_tail = increment(_tail.load()); // aquire, we dont know who call return (next_tail == _head.load()); } template bool CircularFifo::isLockFree() const { return (_tail.is_lock_free() && _head.is_lock_free()); } template size_t CircularFifo::increment(size_t idx) const { return (idx + 1) % Capacity; } } // memory_relaxed_aquire_release #endif /* CIRCULARFIFO_AQUIRE_RELEASE_H_ */ chiaki-v2.2.0/android/app/src/main/cpp/log.c000066400000000000000000000055271447035777400206060ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "log.h" #include #include #include #include #include "chiaki-jni.h" #define LOG_TAG "Chiaki" void log_cb_android(ChiakiLogLevel level, const char *msg, void *user) { int prio; switch(level) { case CHIAKI_LOG_DEBUG: prio = ANDROID_LOG_DEBUG; break; case CHIAKI_LOG_VERBOSE: prio = ANDROID_LOG_VERBOSE; break; case CHIAKI_LOG_INFO: prio = ANDROID_LOG_INFO; break; case CHIAKI_LOG_WARNING: prio = ANDROID_LOG_ERROR; break; case CHIAKI_LOG_ERROR: prio = ANDROID_LOG_ERROR; break; default: prio = ANDROID_LOG_INFO; break; } __android_log_write(prio, LOG_TAG, msg); } static void log_cb_android_file(ChiakiLogLevel level, const char *msg, void *user) { log_cb_android(level, msg, user); FILE *f = user; if(!f) return; switch(level) { case CHIAKI_LOG_DEBUG: fwrite("[D] ", 4, 1, f); break; case CHIAKI_LOG_VERBOSE: fwrite("[V] ", 4, 1, f); break; case CHIAKI_LOG_INFO: fwrite("[I] ", 4, 1, f); break; case CHIAKI_LOG_WARNING: fwrite("[W] ", 4, 1, f); break; case CHIAKI_LOG_ERROR: fwrite("[E] ", 4, 1, f); break; default: fwrite("[?] ", 4, 1, f); break; } fwrite(msg, strlen(msg), 1, f); fwrite("\n", 1, 1, f); } ChiakiErrorCode android_chiaki_file_log_init(ChiakiLog *log, uint32_t level, const char *file) { chiaki_log_init(log, level, log_cb_android, NULL); if(file) { FILE *f = fopen(file, "w+"); if(!f) { CHIAKI_LOGE(log, "Failed to open log file %s for writing: %s", file, strerror(errno)); return CHIAKI_ERR_UNKNOWN; } else { log->user = f; log->cb = log_cb_android_file; CHIAKI_LOGI(log, "Logging to file %s", file); } } return CHIAKI_ERR_SUCCESS; } void android_chiaki_file_log_fini(ChiakiLog *log) { if(log->user) { FILE *f = log->user; fclose(f); log->user = NULL; } } static void android_chiaki_log_cb(ChiakiLogLevel level, const char *msg, void *user) { log_cb_android(level, msg, NULL); AndroidChiakiJNILog *log = user; JNIEnv *env = attach_thread_jni(); if(!env) return; E->CallVoidMethod(env, log->java_log, log->java_log_meth, (jint)level, jnistr_from_ascii(env, msg)); (*global_vm)->DetachCurrentThread(global_vm); } void android_chiaki_jni_log_init(AndroidChiakiJNILog *log, JNIEnv *env, jobject java_log) { log->java_log = E->NewGlobalRef(env, java_log); jclass log_class = E->GetObjectClass(env, log->java_log); log->java_log_meth = E->GetMethodID(env, log_class, "log", "(ILjava/lang/String;)V"); log->log.level_mask = (uint32_t)E->GetIntField(env, log->java_log, E->GetFieldID(env, log_class, "levelMask", "I")); log->log.cb = android_chiaki_log_cb; log->log.user = log; } void android_chiaki_jni_log_fini(AndroidChiakiJNILog *log, JNIEnv *env) { E->DeleteGlobalRef(env, log->java_log); }chiaki-v2.2.0/android/app/src/main/cpp/log.h000066400000000000000000000011441447035777400206020ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_JNI_LOG_H #define CHIAKI_JNI_LOG_H #include #include typedef struct android_jni_chiaki_log_t { jobject java_log; jmethodID java_log_meth; ChiakiLog log; } AndroidChiakiJNILog; ChiakiErrorCode android_chiaki_file_log_init(ChiakiLog *log, uint32_t level, const char *file); void android_chiaki_file_log_fini(ChiakiLog *log); void android_chiaki_jni_log_init(AndroidChiakiJNILog *log, JNIEnv *env, jobject java_log); void android_chiaki_jni_log_fini(AndroidChiakiJNILog *log, JNIEnv *env); #endif chiaki-v2.2.0/android/app/src/main/cpp/oboe/000077500000000000000000000000001447035777400205745ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/cpp/video-decoder.c000066400000000000000000000145361447035777400225360ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "video-decoder.h" #include #include #include #include #include #define INPUT_BUFFER_TIMEOUT_MS 10 static void *android_chiaki_video_decoder_output_thread_func(void *user); ChiakiErrorCode android_chiaki_video_decoder_init(AndroidChiakiVideoDecoder *decoder, ChiakiLog *log, int32_t target_width, int32_t target_height, ChiakiCodec codec) { decoder->log = log; decoder->codec = NULL; decoder->timestamp_cur = 0; decoder->target_width = target_width; decoder->target_height = target_height; decoder->target_codec = codec; decoder->shutdown_output = false; return chiaki_mutex_init(&decoder->codec_mutex, false); } static void kill_decoder(AndroidChiakiVideoDecoder *decoder) { chiaki_mutex_lock(&decoder->codec_mutex); decoder->shutdown_output = true; ssize_t codec_buf_index = AMediaCodec_dequeueInputBuffer(decoder->codec, 1000); if(codec_buf_index >= 0) { CHIAKI_LOGI(decoder->log, "Video Decoder sending EOS buffer"); AMediaCodec_queueInputBuffer(decoder->codec, (size_t)codec_buf_index, 0, 0, decoder->timestamp_cur++, AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM); AMediaCodec_stop(decoder->codec); chiaki_mutex_unlock(&decoder->codec_mutex); chiaki_thread_join(&decoder->output_thread, NULL); } else { CHIAKI_LOGE(decoder->log, "Failed to get input buffer for shutting down Video Decoder!"); AMediaCodec_stop(decoder->codec); chiaki_mutex_unlock(&decoder->codec_mutex); } AMediaCodec_delete(decoder->codec); decoder->codec = NULL; decoder->shutdown_output = false; } void android_chiaki_video_decoder_fini(AndroidChiakiVideoDecoder *decoder) { if(decoder->codec) kill_decoder(decoder); chiaki_mutex_fini(&decoder->codec_mutex); } void android_chiaki_video_decoder_set_surface(AndroidChiakiVideoDecoder *decoder, JNIEnv *env, jobject surface) { chiaki_mutex_lock(&decoder->codec_mutex); if(!surface) { if(decoder->codec) { kill_decoder(decoder); CHIAKI_LOGI(decoder->log, "Decoder shut down after surface was removed"); } return; } if(decoder->codec) { #if __ANDROID_API__ >= 23 CHIAKI_LOGI(decoder->log, "Video decoder already initialized, swapping surface"); ANativeWindow *new_window = surface ? ANativeWindow_fromSurface(env, surface) : NULL; AMediaCodec_setOutputSurface(decoder->codec, new_window); ANativeWindow_release(decoder->window); decoder->window = new_window; #else CHIAKI_LOGE(decoder->log, "Video Decoder already initialized"); #endif goto beach; } decoder->window = ANativeWindow_fromSurface(env, surface); const char *mime = chiaki_codec_is_h265(decoder->target_codec) ? "video/hevc" : "video/avc"; CHIAKI_LOGI(decoder->log, "Initializing decoder with mime %s", mime); decoder->codec = AMediaCodec_createDecoderByType(mime); if(!decoder->codec) { CHIAKI_LOGE(decoder->log, "Failed to create AMediaCodec for mime type %s", mime); goto error_surface; } AMediaFormat *format = AMediaFormat_new(); AMediaFormat_setString(format, AMEDIAFORMAT_KEY_MIME, mime); AMediaFormat_setInt32(format, AMEDIAFORMAT_KEY_WIDTH, decoder->target_width); AMediaFormat_setInt32(format, AMEDIAFORMAT_KEY_HEIGHT, decoder->target_height); media_status_t r = AMediaCodec_configure(decoder->codec, format, decoder->window, NULL, 0); if(r != AMEDIA_OK) { CHIAKI_LOGE(decoder->log, "AMediaCodec_configure() failed: %d", (int)r); AMediaFormat_delete(format); goto error_codec; } r = AMediaCodec_start(decoder->codec); AMediaFormat_delete(format); if(r != AMEDIA_OK) { CHIAKI_LOGE(decoder->log, "AMediaCodec_start() failed: %d", (int)r); goto error_codec; } ChiakiErrorCode err = chiaki_thread_create(&decoder->output_thread, android_chiaki_video_decoder_output_thread_func, decoder); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(decoder->log, "Failed to create output thread for AMediaCodec"); goto error_codec; } goto beach; error_codec: AMediaCodec_delete(decoder->codec); decoder->codec = NULL; error_surface: ANativeWindow_release(decoder->window); decoder->window = NULL; beach: chiaki_mutex_unlock(&decoder->codec_mutex); } bool android_chiaki_video_decoder_video_sample(uint8_t *buf, size_t buf_size, void *user) { bool r = true; AndroidChiakiVideoDecoder *decoder = user; chiaki_mutex_lock(&decoder->codec_mutex); if(!decoder->codec) { CHIAKI_LOGE(decoder->log, "Received video data, but decoder is not initialized!"); goto beach; } while(buf_size > 0) { ssize_t codec_buf_index = AMediaCodec_dequeueInputBuffer(decoder->codec, INPUT_BUFFER_TIMEOUT_MS * 1000); if(codec_buf_index < 0) { CHIAKI_LOGE(decoder->log, "Failed to get input buffer"); r = false; goto beach; } size_t codec_buf_size; uint8_t *codec_buf = AMediaCodec_getInputBuffer(decoder->codec, (size_t)codec_buf_index, &codec_buf_size); size_t codec_sample_size = buf_size; if(codec_sample_size > codec_buf_size) { //CHIAKI_LOGD(decoder->log, "Sample is bigger than buffer, splitting"); codec_sample_size = codec_buf_size; } memcpy(codec_buf, buf, codec_sample_size); media_status_t r = AMediaCodec_queueInputBuffer(decoder->codec, (size_t)codec_buf_index, 0, codec_sample_size, decoder->timestamp_cur++, 0); // timestamp just raised by 1 for maximum realtime if(r != AMEDIA_OK) { CHIAKI_LOGE(decoder->log, "AMediaCodec_queueInputBuffer() failed: %d", (int)r); } buf += codec_sample_size; buf_size -= codec_sample_size; } beach: chiaki_mutex_unlock(&decoder->codec_mutex); return r; } static void *android_chiaki_video_decoder_output_thread_func(void *user) { AndroidChiakiVideoDecoder *decoder = user; while(1) { AMediaCodecBufferInfo info; ssize_t status = AMediaCodec_dequeueOutputBuffer(decoder->codec, &info, -1); if(status >= 0) { AMediaCodec_releaseOutputBuffer(decoder->codec, (size_t)status, info.size != 0); if(info.flags & AMEDIACODEC_BUFFER_FLAG_END_OF_STREAM) { CHIAKI_LOGI(decoder->log, "AMediaCodec reported EOS"); break; } } else { chiaki_mutex_lock(&decoder->codec_mutex); bool shutdown = decoder->shutdown_output; chiaki_mutex_unlock(&decoder->codec_mutex); if(shutdown) { CHIAKI_LOGI(decoder->log, "Video Decoder Output Thread detected shutdown after reported error"); break; } } } CHIAKI_LOGI(decoder->log, "Video Decoder Output Thread exiting"); return NULL; }chiaki-v2.2.0/android/app/src/main/cpp/video-decoder.h000066400000000000000000000020431447035777400225310ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_JNI_VIDEO_DECODER_H #define CHIAKI_JNI_VIDEO_DECODER_H #include #include #include typedef struct AMediaCodec AMediaCodec; typedef struct ANativeWindow ANativeWindow; typedef struct android_chiaki_video_decoder_t { ChiakiLog *log; ChiakiMutex codec_mutex; AMediaCodec *codec; ANativeWindow *window; uint64_t timestamp_cur; ChiakiThread output_thread; bool shutdown_output; int32_t target_width; int32_t target_height; ChiakiCodec target_codec; } AndroidChiakiVideoDecoder; ChiakiErrorCode android_chiaki_video_decoder_init(AndroidChiakiVideoDecoder *decoder, ChiakiLog *log, int32_t target_width, int32_t target_height, ChiakiCodec codec); void android_chiaki_video_decoder_fini(AndroidChiakiVideoDecoder *decoder); void android_chiaki_video_decoder_set_surface(AndroidChiakiVideoDecoder *decoder, JNIEnv *env, jobject surface); bool android_chiaki_video_decoder_video_sample(uint8_t *buf, size_t buf_size, void *user); #endifchiaki-v2.2.0/android/app/src/main/java/000077500000000000000000000000001447035777400200075ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/000077500000000000000000000000001447035777400205655ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/000077500000000000000000000000001447035777400223575ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/000077500000000000000000000000001447035777400236075ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/000077500000000000000000000000001447035777400250775ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/AppDatabase.kt000066400000000000000000000040431447035777400276050ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common import android.content.Context import androidx.room.* import androidx.room.migration.Migration import androidx.sqlite.db.SupportSQLiteDatabase import com.metallic.chiaki.lib.Target @Database( version = 2, entities = [RegisteredHost::class, ManualHost::class]) @TypeConverters(Converters::class) abstract class AppDatabase: RoomDatabase() { abstract fun registeredHostDao(): RegisteredHostDao abstract fun manualHostDao(): ManualHostDao abstract fun importDao(): ImportDao } val MIGRATION_1_2 = object : Migration(1, 2) { override fun migrate(database: SupportSQLiteDatabase) { database.execSQL("ALTER TABLE registered_host ADD target INTEGER NOT NULL DEFAULT 1000") database.execSQL("CREATE TABLE `new_registered_host` (`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `target` INTEGER NOT NULL, `ap_ssid` TEXT, `ap_bssid` TEXT, `ap_key` TEXT, `ap_name` TEXT, `server_mac` INTEGER NOT NULL, `server_nickname` TEXT, `rp_regist_key` BLOB NOT NULL, `rp_key_type` INTEGER NOT NULL, `rp_key` BLOB NOT NULL)"); database.execSQL("INSERT INTO `new_registered_host` SELECT `id`, `target`, `ap_ssid`, `ap_bssid`, `ap_key`, `ap_name`, `ps4_mac`, `ps4_nickname`, `rp_regist_key`, `rp_key_type`, `rp_key` FROM `registered_host`") database.execSQL("DROP TABLE registered_host") database.execSQL("ALTER TABLE new_registered_host RENAME TO registered_host") } } private var database: AppDatabase? = null fun getDatabase(context: Context): AppDatabase { val currentDb = database if(currentDb != null) return currentDb val db = Room.databaseBuilder( context.applicationContext, AppDatabase::class.java, "chiaki") .addMigrations(MIGRATION_1_2) .build() database = db return db } private class Converters { @TypeConverter fun macFromValue(v: Long) = MacAddress(v) @TypeConverter fun macToValue(addr: MacAddress) = addr.value @TypeConverter fun targetFromValue(v: Int) = Target.fromValue(v) @TypeConverter fun targetToValue(target: Target) = target.value }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/DisplayHost.kt000066400000000000000000000035121447035777400277030ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common import com.metallic.chiaki.lib.DiscoveryHost sealed class DisplayHost { abstract val registeredHost: RegisteredHost? abstract val host: String abstract val name: String? abstract val id: String? abstract val isPS5: Boolean val isRegistered get() = registeredHost != null } class DiscoveredDisplayHost( override val registeredHost: RegisteredHost?, val discoveredHost: DiscoveryHost ): DisplayHost() { override val host get() = discoveredHost.hostAddr ?: "" override val name get() = discoveredHost.hostName ?: registeredHost?.serverNickname override val id get() = discoveredHost.hostId ?: registeredHost?.serverMac?.toString() override val isPS5 get() = discoveredHost.isPS5 override fun equals(other: Any?): Boolean = if(other !is DiscoveredDisplayHost) false else other.discoveredHost == discoveredHost && other.registeredHost == registeredHost override fun hashCode() = 31 * (registeredHost?.hashCode() ?: 0) + discoveredHost.hashCode() override fun toString() = "DiscoveredDisplayHost{${registeredHost}, ${discoveredHost}}" } class ManualDisplayHost( override val registeredHost: RegisteredHost?, val manualHost: ManualHost ): DisplayHost() { override val host get() = manualHost.host override val name get() = registeredHost?.serverNickname override val id get() = registeredHost?.serverMac?.toString() override val isPS5: Boolean get() = registeredHost?.target?.isPS5 ?: false override fun equals(other: Any?): Boolean = if(other !is ManualDisplayHost) false else other.manualHost == manualHost && other.registeredHost == registeredHost override fun hashCode() = 31 * (registeredHost?.hashCode() ?: 0) + manualHost.hashCode() override fun toString() = "ManualDisplayHost{${registeredHost}, ${manualHost}}" }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/LogManager.kt000066400000000000000000000033741447035777400274620ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common import android.content.Context import java.io.File import java.io.FilenameFilter import java.text.SimpleDateFormat import java.util.* import java.util.regex.Pattern val fileProviderAuthority = "com.metallic.chiaki.fileprovider" private const val baseDirName = "session_logs" // must be in sync with filepaths.xml private val dateFormat = SimpleDateFormat("yyyy-MM-dd_HH-mm-ss-SSS", Locale.US) private const val filePrefix = "chiaki_session_" private const val filePostfix = ".log" private val fileRegex = Regex("$filePrefix(.*)$filePostfix") private const val keepLogFilesCount = 5 class LogFile private constructor(val logManager: LogManager, val filename: String) { val date = fileRegex.matchEntire(filename)?.groupValues?.get(1)?.let { dateFormat.parse(it) } ?: throw IllegalArgumentException() val file get() = File(logManager.baseDir, filename) companion object { fun fromFilename(logManager: LogManager, filename: String) = try { LogFile(logManager, filename) } catch(e: IllegalArgumentException) { null } } } class LogManager(context: Context) { val baseDir = File(context.filesDir, baseDirName).also { it.mkdirs() } val files: List get() = (baseDir.list { _, s -> s.matches(fileRegex) }?.toList() ?: listOf()).mapNotNull { LogFile.fromFilename(this, it) }.sortedByDescending { it.date } fun createNewFile(): LogFile { val currentFiles = files if(currentFiles.size > keepLogFilesCount) { currentFiles.subList(keepLogFilesCount, currentFiles.size).forEach { it.file.delete() } } val date = Date() val filename = "$filePrefix${dateFormat.format(date)}$filePostfix" return LogFile.fromFilename(this, filename)!! } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/MacAddress.kt000066400000000000000000000031711447035777400274470ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common import com.squareup.moshi.FromJson import com.squareup.moshi.JsonDataException import com.squareup.moshi.ToJson import java.nio.ByteBuffer import java.nio.ByteOrder class MacAddress(v: Long) { companion object { val LENGTH = 6 } constructor(data: ByteArray) : this( if(data.size != LENGTH) throw IllegalArgumentException("Data has invalid length for MAC") else data.let { val buf = ByteBuffer.allocate(8) buf.put(it, 0, LENGTH) buf.order(ByteOrder.LITTLE_ENDIAN) buf.getLong(0) }) constructor(string: String) : this( (Regex("([0-9A-Fa-f]{2})[:-]([0-9A-Fa-f]{2})[:-]([0-9A-Fa-f]{2})[:-]([0-9A-Fa-f]{2})[:-]([0-9A-Fa-f]{2})[:-]([0-9A-Fa-f]{2})").matchEntire(string) ?: throw IllegalArgumentException("Invalid MAC Address String")) .groupValues .subList(1, 7) .map { it.toUByte(16).toByte() } .toByteArray()) val value: Long = v and 0xffffffffffff override fun equals(other: Any?): Boolean = if(other is MacAddress) other.value == value else super.equals(other) override fun hashCode() = value.hashCode() override fun toString(): String = "%02x:%02x:%02x:%02x:%02x:%02x".format( value and 0xff, (value shr 0x8) and 0xff, (value shr 0x10) and 0xff, (value shr 0x18) and 0xff, (value shr 0x20) and 0xff, (value shr 0x28) and 0xff ) } class MacAddressJsonAdapter { @ToJson fun toJson(macAddress: MacAddress) = macAddress.toString() @FromJson fun fromJson(string: String) = try { MacAddress(string) } catch(e: IllegalArgumentException) { throw JsonDataException(e.message) } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/ManualHost.kt000066400000000000000000000032531447035777400275150ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common import androidx.room.* import androidx.room.ForeignKey.Companion.SET_NULL import io.reactivex.Completable import io.reactivex.Flowable import io.reactivex.Single @Entity(tableName = "manual_host", foreignKeys = [ ForeignKey( entity = RegisteredHost::class, parentColumns = ["id"], childColumns = ["registered_host"], onDelete = SET_NULL ) ]) data class ManualHost( @PrimaryKey(autoGenerate = true) val id: Long = 0, val host: String, @ColumnInfo(name = "registered_host") val registeredHost: Long? ) data class ManualHostAndRegisteredHost( @Embedded(prefix = "manual_host_") val manualHost: ManualHost, @Embedded val registeredHost: RegisteredHost? ) @Dao interface ManualHostDao { @Query("SELECT * FROM manual_host WHERE id = :id") fun getById(id: Long): Single @Query("""SELECT manual_host.id as manual_host_id, manual_host.host as manual_host_host, manual_host.registered_host as manual_host_registered_host, registered_host.* FROM manual_host LEFT OUTER JOIN registered_host ON manual_host.registered_host = registered_host.id WHERE manual_host.id = :id""") fun getByIdWithRegisteredHost(id: Long): Single @Query("SELECT * FROM manual_host") fun getAll(): Flowable> @Query("UPDATE manual_host SET registered_host = :registeredHostId WHERE id = :manualHostId") fun assignRegisteredHost(manualHostId: Long, registeredHostId: Long?): Completable @Insert fun insert(host: ManualHost): Completable @Delete fun delete(host: ManualHost): Completable @Update fun update(host: ManualHost): Completable }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/Preferences.kt000066400000000000000000000143711447035777400277060ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common import android.content.Context import android.content.SharedPreferences import androidx.annotation.StringRes import androidx.preference.PreferenceManager import com.metallic.chiaki.R import com.metallic.chiaki.lib.Codec import com.metallic.chiaki.lib.ConnectVideoProfile import com.metallic.chiaki.lib.VideoFPSPreset import com.metallic.chiaki.lib.VideoResolutionPreset import io.reactivex.Observable import io.reactivex.subjects.BehaviorSubject import kotlin.math.max import kotlin.math.min class Preferences(context: Context) { enum class Resolution(val value: String, @StringRes val title: Int, val preset: VideoResolutionPreset) { RES_360P("360p", R.string.preferences_resolution_title_360p, VideoResolutionPreset.RES_360P), RES_540P("540p", R.string.preferences_resolution_title_540p, VideoResolutionPreset.RES_540P), RES_720P("720p", R.string.preferences_resolution_title_720p, VideoResolutionPreset.RES_720P), RES_1080P("1080p", R.string.preferences_resolution_title_1080p, VideoResolutionPreset.RES_1080P), } enum class FPS(val value: String, @StringRes val title: Int, val preset: VideoFPSPreset) { FPS_30("30", R.string.preferences_fps_title_30, VideoFPSPreset.FPS_30), FPS_60("60", R.string.preferences_fps_title_60, VideoFPSPreset.FPS_60) } enum class Codec(val value: String, @StringRes val title: Int, val codec: com.metallic.chiaki.lib.Codec) { CODEC_H264("h264", R.string.preferences_codec_title_h264, com.metallic.chiaki.lib.Codec.CODEC_H264), CODEC_H265("h265", R.string.preferences_codec_title_h265, com.metallic.chiaki.lib.Codec.CODEC_H265) } companion object { val resolutionDefault = Resolution.RES_720P val resolutionAll = Resolution.values() val fpsDefault = FPS.FPS_60 val fpsAll = FPS.values() val codecDefault = Codec.CODEC_H265 val codecAll = Codec.values() } private val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context) private val sharedPreferenceChangeListener = SharedPreferences.OnSharedPreferenceChangeListener { _, key -> when(key) { resolutionKey -> bitrateAutoSubject.onNext(bitrateAuto) } }.also { sharedPreferences.registerOnSharedPreferenceChangeListener(it) } private val resources = context.resources val discoveryEnabledKey get() = resources.getString(R.string.preferences_discovery_enabled_key) var discoveryEnabled get() = sharedPreferences.getBoolean(discoveryEnabledKey, true) set(value) { sharedPreferences.edit().putBoolean(discoveryEnabledKey, value).apply() } val onScreenControlsEnabledKey get() = resources.getString(R.string.preferences_on_screen_controls_enabled_key) var onScreenControlsEnabled get() = sharedPreferences.getBoolean(onScreenControlsEnabledKey, true) set(value) { sharedPreferences.edit().putBoolean(onScreenControlsEnabledKey, value).apply() } val touchpadOnlyEnabledKey get() = resources.getString(R.string.preferences_touchpad_only_enabled_key) var touchpadOnlyEnabled get() = sharedPreferences.getBoolean(touchpadOnlyEnabledKey, false) set(value) { sharedPreferences.edit().putBoolean(touchpadOnlyEnabledKey, value).apply() } val rumbleEnabledKey get() = resources.getString(R.string.preferences_rumble_enabled_key) var rumbleEnabled get() = sharedPreferences.getBoolean(rumbleEnabledKey, true) set(value) { sharedPreferences.edit().putBoolean(rumbleEnabledKey, value).apply() } val motionEnabledKey get() = resources.getString(R.string.preferences_motion_enabled_key) var motionEnabled get() = sharedPreferences.getBoolean(motionEnabledKey, true) set(value) { sharedPreferences.edit().putBoolean(motionEnabledKey, value).apply() } val buttonHapticEnabledKey get() = resources.getString(R.string.preferences_button_haptic_enabled_key) var buttonHapticEnabled get() = sharedPreferences.getBoolean(buttonHapticEnabledKey, true) set(value) { sharedPreferences.edit().putBoolean(buttonHapticEnabledKey, value).apply() } val logVerboseKey get() = resources.getString(R.string.preferences_log_verbose_key) var logVerbose get() = sharedPreferences.getBoolean(logVerboseKey, false) set(value) { sharedPreferences.edit().putBoolean(logVerboseKey, value).apply() } val swapCrossMoonKey get() = resources.getString(R.string.preferences_swap_cross_moon_key) var swapCrossMoon get() = sharedPreferences.getBoolean(swapCrossMoonKey, false) set(value) { sharedPreferences.edit().putBoolean(swapCrossMoonKey, value).apply() } val resolutionKey get() = resources.getString(R.string.preferences_resolution_key) var resolution get() = sharedPreferences.getString(resolutionKey, resolutionDefault.value)?.let { value -> Resolution.values().firstOrNull { it.value == value } } ?: resolutionDefault set(value) { sharedPreferences.edit().putString(resolutionKey, value.value).apply() } val fpsKey get() = resources.getString(R.string.preferences_fps_key) var fps get() = sharedPreferences.getString(fpsKey, fpsDefault.value)?.let { value -> FPS.values().firstOrNull { it.value == value } } ?: fpsDefault set(value) { sharedPreferences.edit().putString(fpsKey, value.value).apply() } fun validateBitrate(bitrate: Int) = max(2000, min(50000, bitrate)) val bitrateKey get() = resources.getString(R.string.preferences_bitrate_key) var bitrate get() = sharedPreferences.getInt(bitrateKey, 0).let { if(it == 0) null else validateBitrate(it) } set(value) { sharedPreferences.edit().putInt(bitrateKey, if(value != null) validateBitrate(value) else 0).apply() } val bitrateAuto get() = videoProfileDefaultBitrate.bitrate private val bitrateAutoSubject by lazy { BehaviorSubject.createDefault(bitrateAuto) } val bitrateAutoObservable: Observable get() = bitrateAutoSubject val codecKey get() = resources.getString(R.string.preferences_codec_key) var codec get() = sharedPreferences.getString(codecKey, codecDefault.value)?.let { value -> Codec.values().firstOrNull { it.value == value } } ?: codecDefault set(value) { sharedPreferences.edit().putString(codecKey, value.value).apply() } private val videoProfileDefaultBitrate get() = ConnectVideoProfile.preset(resolution.preset, fps.preset, codec.codec) val videoProfile get() = videoProfileDefaultBitrate.let { val bitrate = bitrate if(bitrate == null) it else it.copy(bitrate = bitrate) } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/RegisteredHost.kt000066400000000000000000000064231447035777400303770ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common import androidx.room.* import androidx.room.ColumnInfo.Companion.BLOB import com.metallic.chiaki.lib.RegistHost import com.metallic.chiaki.lib.Target import io.reactivex.Completable import io.reactivex.Flowable import io.reactivex.Maybe import io.reactivex.Single @Entity(tableName = "registered_host") data class RegisteredHost( @PrimaryKey(autoGenerate = true) val id: Long = 0, @ColumnInfo(name = "target") val target: Target, @ColumnInfo(name = "ap_ssid") val apSsid: String?, @ColumnInfo(name = "ap_bssid") val apBssid: String?, @ColumnInfo(name = "ap_key") val apKey: String?, @ColumnInfo(name = "ap_name") val apName: String?, @ColumnInfo(name = "server_mac") val serverMac: MacAddress, @ColumnInfo(name = "server_nickname") val serverNickname: String?, @ColumnInfo(name = "rp_regist_key", typeAffinity = BLOB) val rpRegistKey: ByteArray, // CHIAKI_SESSION_AUTH_SIZE @ColumnInfo(name = "rp_key_type") val rpKeyType: Int, @ColumnInfo(name = "rp_key", typeAffinity = BLOB) val rpKey: ByteArray // 0x10 ) { constructor(registHost: RegistHost) : this( target = registHost.target, apSsid = registHost.apSsid, apBssid = registHost.apBssid, apKey = registHost.apKey, apName = registHost.apName, serverMac = MacAddress(registHost.serverMac), serverNickname = registHost.serverNickname, rpRegistKey = registHost.rpRegistKey, rpKeyType = registHost.rpKeyType.toInt(), rpKey = registHost.rpKey ) override fun equals(other: Any?): Boolean { if(this === other) return true if(javaClass != other?.javaClass) return false other as RegisteredHost if(id != other.id) return false if(target != other.target) return false if(apSsid != other.apSsid) return false if(apBssid != other.apBssid) return false if(apKey != other.apKey) return false if(apName != other.apName) return false if(serverMac != other.serverMac) return false if(serverNickname != other.serverNickname) return false if(!rpRegistKey.contentEquals(other.rpRegistKey)) return false if(rpKeyType != other.rpKeyType) return false if(!rpKey.contentEquals(other.rpKey)) return false return true } override fun hashCode(): Int { var result = id.hashCode() result = 31 * result + target.hashCode() result = 31 * result + (apSsid?.hashCode() ?: 0) result = 31 * result + (apBssid?.hashCode() ?: 0) result = 31 * result + (apKey?.hashCode() ?: 0) result = 31 * result + (apName?.hashCode() ?: 0) result = 31 * result + serverMac.hashCode() result = 31 * result + (serverNickname?.hashCode() ?: 0) result = 31 * result + rpRegistKey.contentHashCode() result = 31 * result + rpKeyType result = 31 * result + rpKey.contentHashCode() return result } } @Dao interface RegisteredHostDao { @Query("SELECT * FROM registered_host") fun getAll(): Flowable> @Query("SELECT * FROM registered_host WHERE server_mac == :mac LIMIT 1") fun getByMac(mac: MacAddress): Maybe @Query("DELETE FROM registered_host WHERE server_mac == :mac") fun deleteByMac(mac: MacAddress): Completable @Delete fun delete(host: RegisteredHost): Completable @Query("SELECT COUNT(*) FROM registered_host") fun count(): Flowable @Insert fun insert(host: RegisteredHost): Single }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/SerializedSettings.kt000066400000000000000000000203461447035777400312600ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common import android.app.Activity import android.content.ClipData import android.content.Intent import android.net.Uri import android.util.Base64 import android.util.Log import androidx.core.content.FileProvider import androidx.room.* import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.metallic.chiaki.R import com.metallic.chiaki.lib.Target import com.squareup.moshi.* import io.reactivex.Completable import io.reactivex.Flowable import io.reactivex.Single import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable import io.reactivex.disposables.Disposable import io.reactivex.rxkotlin.Singles import io.reactivex.rxkotlin.addTo import io.reactivex.schedulers.Schedulers import okio.Buffer import okio.Okio import okio.buffer import okio.source import java.io.File import java.io.IOException @JsonClass(generateAdapter = true) class SerializedRegisteredHost( @Json(name = "target") val target: Target, @Json(name = "ap_ssid") val apSsid: String?, @Json(name = "ap_bssid") val apBssid: String?, @Json(name = "ap_key") val apKey: String?, @Json(name = "ap_name") val apName: String?, @Json(name = "server_mac") val serverMac: MacAddress, @Json(name = "server_nickname") val serverNickname: String?, @Json(name = "rp_regist_key") val rpRegistKey: ByteArray, @Json(name = "rp_key_type") val rpKeyType: Int, @Json(name = "rp_key") val rpKey: ByteArray ){ constructor(registeredHost: RegisteredHost) : this( registeredHost.target, registeredHost.apSsid, registeredHost.apBssid, registeredHost.apKey, registeredHost.apName, registeredHost.serverMac, registeredHost.serverNickname, registeredHost.rpRegistKey, registeredHost.rpKeyType, registeredHost.rpKey ) } @JsonClass(generateAdapter = true) class SerializedManualHost( @Json(name = "host") val host: String, @Json(name = "server_mac") val serverMac: MacAddress? ) @JsonClass(generateAdapter = true) data class SerializedSettings( @Json(name = "registered_hosts") val registeredHosts: List, @Json(name = "manual_hosts") val manualHosts: List ) { companion object { fun fromDatabase(db: AppDatabase) = Singles.zip( db.registeredHostDao().getAll().firstOrError(), db.manualHostDao().getAll().firstOrError() ) { registeredHosts, manualHosts -> SerializedSettings( registeredHosts.map { SerializedRegisteredHost(it) }, manualHosts.map { manualHost -> SerializedManualHost( manualHost.host, manualHost.registeredHost?.let { registeredHostId -> registeredHosts.firstOrNull { it.id == registeredHostId } }?.serverMac ) }) } } } private class ByteArrayJsonAdapter { @ToJson fun toJson(byteArray: ByteArray) = Base64.encodeToString(byteArray, Base64.NO_WRAP) @FromJson fun fromJson(string: String) = Base64.decode(string, Base64.DEFAULT) } private fun moshi() = Moshi.Builder() .add(MacAddressJsonAdapter()) .add(ByteArrayJsonAdapter()) .build() private fun Moshi.serializedSettingsAdapter() = adapter(SerializedSettings::class.java) .serializeNulls() private const val KEY_FORMAT = "format" private const val FORMAT = "chiaki-settings" private const val KEY_VERSION = "version" private const val VERSION = 2 private const val KEY_SETTINGS = "settings" fun exportAllSettings(db: AppDatabase) = SerializedSettings.fromDatabase(db) .subscribeOn(Schedulers.io()) .map { val buffer = Buffer() val writer = JsonWriter.of(buffer) val adapter = moshi().serializedSettingsAdapter() writer.indent = " " writer. beginObject() .name(KEY_FORMAT).value(FORMAT) .name(KEY_VERSION).value(VERSION) writer.name(KEY_SETTINGS) adapter.toJson(writer, it) writer.endObject() buffer.readUtf8() } fun exportAndShareAllSettings(activity: Activity): Disposable { val db = getDatabase(activity) val dir = File(activity.cacheDir, "export_settings") dir.mkdirs() val file = File(dir, "chiaki-settings.json") return exportAllSettings(db) .map { file.writeText(it, Charsets.UTF_8) file } .observeOn(AndroidSchedulers.mainThread()) .subscribe { _ -> val uri = FileProvider.getUriForFile(activity, fileProviderAuthority, file) Intent(Intent.ACTION_SEND).also { it.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) it.type = "application/json" it.putExtra(Intent.EXTRA_STREAM, uri) it.clipData = ClipData.newRawUri("", uri) activity.startActivity(Intent.createChooser(it, activity.getString(R.string.action_share_log))) } } } fun importSettingsFromUri(activity: Activity, uri: Uri, disposable: CompositeDisposable) { fun loadFail(msg: String) { MaterialAlertDialogBuilder(activity) .setMessage(activity.getString(R.string.alert_message_import_failed, msg)) .setPositiveButton(R.string.action_import_failed_ack) { _, _ -> } .create() .show() } try { val inputStream = activity.contentResolver.openInputStream(uri) ?: throw IOException() val buffer = inputStream.source().buffer() val reader = JsonReader.of(buffer) val adapter = moshi().serializedSettingsAdapter() var format: String? = null var version: Int? = null var settingsValue: Any? = null reader.beginObject() while(reader.hasNext()) { when(reader.nextName()) { KEY_FORMAT -> format = reader.nextString() KEY_VERSION -> version = reader.nextInt() KEY_SETTINGS -> settingsValue = reader.readJsonValue() } } reader.endObject() if(format == null || version == null || settingsValue == null) throw IOException("Missing format, version or settings from JSON") if(format != FORMAT) throw IOException("Value of format is invalid") if(version != VERSION) // Add migrations here when necessary throw IOException("Value of version is invalid") val settings = adapter.fromJsonValue(settingsValue) ?: throw JsonDataException("Failed to parse Settings JSON") Log.i("SerializedSettings", "would import: $settings") MaterialAlertDialogBuilder(activity) .setMessage(activity.getString(R.string.alert_message_import, settings.registeredHosts.let { if(it.isEmpty()) "-" else it.joinToString(separator = "") { host -> "\n - ${host.serverNickname ?: "?"} / ${host.serverMac}" } }, settings.manualHosts.let { if(it.isEmpty()) "-" else it.joinToString(separator = "") { host -> "\n - ${host.host} / ${host.serverMac ?: "unregistered"}" } } )) .setTitle(R.string.alert_title_import) .setNegativeButton(R.string.action_import_cancel) { _, _ -> } .setPositiveButton(R.string.action_import_import) { _, _ -> getDatabase(activity).importDao() .importCompletable(settings) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe() .addTo(disposable) } .create() .show() } catch(e: IOException) { e.printStackTrace() loadFail(e.message ?: "") } catch(e: JsonDataException) { e.printStackTrace() loadFail(e.message ?: "") } } @Dao abstract class ImportDao { @Insert abstract fun insertRegisteredHosts(hosts: List) @Insert abstract fun insertManualHosts(hosts: List) class IdWithMac(val id: Long, val mac: MacAddress) @Query("SELECT id, server_mac AS mac FROM registered_host WHERE server_mac IN (:macs)") abstract fun registeredHostsByMac(macs: List): List @Transaction fun import(settings: SerializedSettings) { insertRegisteredHosts( settings.registeredHosts.map { RegisteredHost( target = it.target, apSsid = it.apSsid, apBssid = it.apBssid, apKey = it.apKey, apName = it.apName, serverMac = it.serverMac, serverNickname = it.serverNickname, rpRegistKey = it.rpRegistKey, rpKeyType = it.rpKeyType, rpKey = it.rpKey ) }) val macs = settings.manualHosts.mapNotNull { it.serverMac } val idMacs = if(macs.isNotEmpty()) registeredHostsByMac(macs) else listOf() insertManualHosts( settings.manualHosts.map { ManualHost( host = it.host, registeredHost = idMacs.firstOrNull { regHost -> regHost.mac == it.serverMac }?.id ) }) } } private fun ImportDao.importCompletable(settings: SerializedSettings) = Completable.fromCallable { import(settings) } chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/ext/000077500000000000000000000000001447035777400256775ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/ext/RevealActivity.kt000066400000000000000000000034431447035777400311760ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common.ext import android.content.Intent import android.graphics.Rect import android.view.* import android.view.animation.AccelerateInterpolator import kotlin.math.max interface RevealActivity { companion object { const val EXTRA_REVEAL_X = "reveal_x" const val EXTRA_REVEAL_Y = "reveal_y" } val revealRootLayout: View val revealIntent: Intent val revealWindow: Window private fun revealActivity(x: Int, y: Int) { val finalRadius = max(revealRootLayout.width, revealRootLayout.height).toFloat() val reveal = ViewAnimationUtils.createCircularReveal(revealRootLayout, x, y, 0f, finalRadius) reveal.interpolator = AccelerateInterpolator() revealRootLayout.visibility = View.VISIBLE reveal.start() } fun handleReveal() { if(!revealIntent.hasExtra(EXTRA_REVEAL_X) || !revealIntent.hasExtra(EXTRA_REVEAL_Y)) return revealWindow.setBackgroundDrawableResource(android.R.color.transparent) val revealX = revealIntent.getIntExtra(EXTRA_REVEAL_X, 0) val revealY = revealIntent.getIntExtra(EXTRA_REVEAL_Y, 0) revealRootLayout.visibility = View.INVISIBLE revealRootLayout.viewTreeObserver.also { if(it.isAlive) { it.addOnGlobalLayoutListener(object: ViewTreeObserver.OnGlobalLayoutListener { override fun onGlobalLayout() { revealActivity(revealX, revealY) revealRootLayout.viewTreeObserver.removeOnGlobalLayoutListener(this) } }) } } } } fun Intent.putRevealExtra(originView: View, rootLayout: ViewGroup) { val offsetRect = Rect() originView.getDrawingRect(offsetRect) rootLayout.offsetDescendantRectToMyCoords(originView, offsetRect) putExtra(RevealActivity.EXTRA_REVEAL_X, offsetRect.left) putExtra(RevealActivity.EXTRA_REVEAL_Y, offsetRect.top) } chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/ext/RxLiveData.kt000066400000000000000000000010171447035777400302410ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common.ext import androidx.lifecycle.LiveDataReactiveStreams import io.reactivex.BackpressureStrategy import io.reactivex.Observable import io.reactivex.Single import org.reactivestreams.Publisher fun Publisher.toLiveData() = LiveDataReactiveStreams.fromPublisher(this) fun Observable.toLiveData() = this.toFlowable(BackpressureStrategy.LATEST).toLiveData() fun Single.toLiveData() = this.toFlowable().toLiveData()chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/ext/StringHex.kt000066400000000000000000000003731447035777400301550ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common.ext fun String.hexToByteArray(): ByteArray? = ByteArray(this.length / 2) { this.substring(it * 2, it * 2 + 2).toIntOrNull(16)?.toByte() ?: return null }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/ext/ViewGroupInflate.kt000066400000000000000000000006131447035777400314710ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.common.ext import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.annotation.LayoutRes fun ViewGroup.inflate(@LayoutRes layoutRes: Int, attachToRoot: Boolean = false): View { return LayoutInflater.from(context).inflate(layoutRes, this, attachToRoot) }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/common/ext/ViewModelFactory.kt000066400000000000000000000005131447035777400314610ustar00rootroot00000000000000package com.metallic.chiaki.common.ext import androidx.lifecycle.ViewModel import androidx.lifecycle.ViewModelProvider inline fun viewModelFactory(crossinline f: () -> T) = object : ViewModelProvider.Factory { @Suppress("UNCHECKED_CAST") override fun create(aClass: Class): T = f() as T }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/discovery/000077500000000000000000000000001447035777400256165ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/discovery/DiscoveryManager.kt000066400000000000000000000071041447035777400314220ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.discovery import android.util.Log import com.metallic.chiaki.common.MacAddress import com.metallic.chiaki.common.ext.hexToByteArray import com.metallic.chiaki.lib.CreateError import com.metallic.chiaki.lib.DiscoveryHost import com.metallic.chiaki.lib.DiscoveryService import com.metallic.chiaki.lib.DiscoveryServiceOptions import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.addTo import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.Subject import java.lang.NumberFormatException import java.net.InetSocketAddress import java.nio.charset.Charset import java.nio.charset.StandardCharsets import java.util.concurrent.TimeUnit val DiscoveryHost.serverMac get() = this.hostId?.hexToByteArray()?.let { if(it.size == MacAddress.LENGTH) MacAddress(it) else null } class DiscoveryManager { companion object { const val HOSTS_MAX: ULong = 16U const val DROP_PINGS: ULong = 3U const val PING_MS: ULong = 500U const val PORT = 987 const val DEBOUNCE_EMPTY_MS = 1000L } private var discoveryService: DiscoveryService? = null private val discoveryActiveSubject: Subject = BehaviorSubject.create().also { it.onNext(false) } val discoveryActive: Observable get() = discoveryActiveSubject var active = false set(value) { field = value discoveryActiveSubject.onNext(value) updateService() } private var paused = false private val disposable = CompositeDisposable() private var discoveredHostsSubjectDebounced: Subject> = BehaviorSubject.create>().also { it.onNext(listOf()) }.toSerialized() private var discoveredHostsSubjectRaw: Subject> = BehaviorSubject.create>().also { subject -> subject.debounce { hosts -> if(hosts.isEmpty()) Observable.timer(DEBOUNCE_EMPTY_MS, TimeUnit.MILLISECONDS) else Observable.empty() } .subscribe { hosts -> discoveredHostsSubjectDebounced.onNext(hosts) } .addTo(disposable) } val discoveredHosts: Observable> get() = discoveredHostsSubjectDebounced fun resume() { paused = false updateService() } fun pause() { paused = true updateService() } fun dispose() { active = false disposable.dispose() } fun sendWakeup(host: String, registKey: ByteArray, ps5: Boolean) { val registKeyString = registKey.indexOfFirst { it == 0.toByte() }.let { end -> registKey.copyOfRange(0, if(end >= 0) end else registKey.size) }.toString(StandardCharsets.UTF_8) val credential = try { registKeyString.toULong(16) } catch(e: NumberFormatException) { Log.e("DiscoveryManager", "Failed to convert registKey to int", e) return } DiscoveryService.wakeup(discoveryService, host, credential, ps5) } private fun updateService() { if(active && !paused && discoveryService == null) { discoveredHostsSubjectRaw.onNext(listOf()) try { discoveryService = DiscoveryService(DiscoveryServiceOptions( HOSTS_MAX, DROP_PINGS, PING_MS, InetSocketAddress("255.255.255.255", PORT) ), discoveredHostsSubjectRaw::onNext) } catch(e: CreateError) { Log.e("DiscoveryManager", "Failed to start Discovery Service: $e") } } else if((!active || paused) && discoveryService != null) { val service = discoveryService ?: return service.dispose() discoveryService = null if(!active) discoveredHostsSubjectRaw.onNext(listOf()) } } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/lib/000077500000000000000000000000001447035777400243555ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/lib/Chiaki.kt000066400000000000000000000322101447035777400261030ustar00rootroot00000000000000package com.metallic.chiaki.lib import android.os.Parcelable import android.util.Log import android.view.Surface import kotlinx.parcelize.Parcelize import java.lang.Exception import java.net.InetSocketAddress import kotlin.math.abs enum class Target(val value: Int) { PS4_UNKNOWN(0), PS4_8(800), PS4_9(900), PS4_10(1000), PS5_UNKNOWN(1000000), PS5_1(1000100); companion object { @JvmStatic fun fromValue(value: Int) = values().firstOrNull { it.value == value } ?: PS4_10 } val isPS5 get() = value >= PS5_UNKNOWN.value } enum class VideoResolutionPreset(val value: Int) { RES_360P(1), RES_540P(2), RES_720P(3), RES_1080P(4) } enum class VideoFPSPreset(val value: Int) { FPS_30(30), FPS_60(60) } enum class Codec(val value: Int) { CODEC_H264(0), CODEC_H265(1), CODEC_H265_HDR(2) } @Parcelize data class ConnectVideoProfile( val width: Int, val height: Int, val maxFPS: Int, val bitrate: Int, val codec: Codec ): Parcelable { companion object { fun preset(resolutionPreset: VideoResolutionPreset, fpsPreset: VideoFPSPreset, codec: Codec) = ChiakiNative.videoProfilePreset(resolutionPreset.value, fpsPreset.value, codec) } } @Parcelize data class ConnectInfo( val ps5: Boolean, val host: String, val registKey: ByteArray, val morning: ByteArray, val videoProfile: ConnectVideoProfile ): Parcelable private class ChiakiNative { data class CreateResult(var errorCode: Int, var ptr: Long) companion object { init { System.loadLibrary("chiaki-jni") } @JvmStatic external fun errorCodeToString(value: Int): String @JvmStatic external fun quitReasonToString(value: Int): String @JvmStatic external fun quitReasonIsError(value: Int): Boolean @JvmStatic external fun videoProfilePreset(resolutionPreset: Int, fpsPreset: Int, codec: Codec): ConnectVideoProfile @JvmStatic external fun sessionCreate(result: CreateResult, connectInfo: ConnectInfo, logFile: String?, logVerbose: Boolean, javaSession: Session) @JvmStatic external fun sessionFree(ptr: Long) @JvmStatic external fun sessionStart(ptr: Long): Int @JvmStatic external fun sessionStop(ptr: Long): Int @JvmStatic external fun sessionJoin(ptr: Long): Int @JvmStatic external fun sessionSetSurface(ptr: Long, surface: Surface?) @JvmStatic external fun sessionSetControllerState(ptr: Long, controllerState: ControllerState) @JvmStatic external fun sessionSetLoginPin(ptr: Long, pin: String) @JvmStatic external fun discoveryServiceCreate(result: CreateResult, options: DiscoveryServiceOptions, javaService: DiscoveryService) @JvmStatic external fun discoveryServiceFree(ptr: Long) @JvmStatic external fun discoveryServiceWakeup(ptr: Long, host: String, userCredential: Long, ps5: Boolean) @JvmStatic external fun registStart(result: CreateResult, registInfo: RegistInfo, javaLog: ChiakiLog, javaRegist: Regist) @JvmStatic external fun registStop(ptr: Long) @JvmStatic external fun registFree(ptr: Long) } } class ErrorCode(val value: Int) { override fun toString() = ChiakiNative.errorCodeToString(value) var isSuccess = value == 0 } class ChiakiLog(val levelMask: Int, val callback: (level: Int, text: String) -> Unit) { companion object { fun formatLog(level: Int, text: String) = "[${when(level) { Level.DEBUG.value -> "D" Level.VERBOSE.value -> "V" Level.INFO.value -> "I" Level.WARNING.value -> "W" Level.ERROR.value -> "E" else -> "?" } }] $text" } enum class Level(val value: Int) { DEBUG(1 shl 4), VERBOSE(1 shl 3), INFO(1 shl 2), WARNING(1 shl 1), ERROR(1 shl 0), ALL(0.inv()) } private fun log(level: Int, text: String) { callback(level, text) } fun d(text: String) = log(Level.DEBUG.value, text) fun v(text: String) = log(Level.VERBOSE.value, text) fun i(text: String) = log(Level.INFO.value, text) fun w(text: String) = log(Level.WARNING.value, text) fun e(text: String) = log(Level.ERROR.value, text) } private fun maxAbs(a: Short, b: Short) = if(abs(a.toInt()) > abs(b.toInt())) a else b private val CONTROLLER_TOUCHES_MAX = 2 // must be the same as CHIAKI_CONTROLLER_TOUCHES_MAX data class ControllerTouch( var x: UShort = 0U, var y: UShort = 0U, var id: Byte = -1 // -1 = up ) data class ControllerState constructor( var buttons: UInt = 0U, var l2State: UByte = 0U, var r2State: UByte = 0U, var leftX: Short = 0, var leftY: Short = 0, var rightX: Short = 0, var rightY: Short = 0, private var touchIdNext: UByte = 0U, var touches: Array = arrayOf(ControllerTouch(), ControllerTouch()), var gyroX: Float = 0.0f, var gyroY: Float = 0.0f, var gyroZ: Float = 0.0f, var accelX: Float = 0.0f, var accelY: Float = 1.0f, var accelZ: Float = 0.0f, var orientX: Float = 0.0f, var orientY: Float = 0.0f, var orientZ: Float = 0.0f, var orientW: Float = 1.0f ){ companion object { val BUTTON_CROSS = (1 shl 0).toUInt() val BUTTON_MOON = (1 shl 1).toUInt() val BUTTON_BOX = (1 shl 2).toUInt() val BUTTON_PYRAMID = (1 shl 3).toUInt() val BUTTON_DPAD_LEFT = (1 shl 4).toUInt() val BUTTON_DPAD_RIGHT = (1 shl 5).toUInt() val BUTTON_DPAD_UP = (1 shl 6).toUInt() val BUTTON_DPAD_DOWN = (1 shl 7).toUInt() val BUTTON_L1 = (1 shl 8).toUInt() val BUTTON_R1 = (1 shl 9).toUInt() val BUTTON_L3 = (1 shl 10).toUInt() val BUTTON_R3 = (1 shl 11).toUInt() val BUTTON_OPTIONS = (1 shl 12).toUInt() val BUTTON_SHARE = (1 shl 13).toUInt() val BUTTON_TOUCHPAD = (1 shl 14).toUInt() val BUTTON_PS = (1 shl 15).toUInt() val TOUCHPAD_WIDTH: UShort = 1920U val TOUCHPAD_HEIGHT: UShort = 942U } infix fun or(o: ControllerState) = ControllerState( buttons = buttons or o.buttons, l2State = maxOf(l2State, o.l2State), r2State = maxOf(r2State, o.r2State), leftX = maxAbs(leftX, o.leftX), leftY = maxAbs(leftY, o.leftY), rightX = maxAbs(rightX, o.rightX), rightY = maxAbs(rightY, o.rightY), touches = touches.zip(o.touches) { a, b -> if(a.id >= 0) a else b }.toTypedArray(), gyroX = gyroX, gyroY = gyroY, gyroZ = gyroZ, accelX = accelX, accelY = accelY, accelZ = accelZ, orientX = orientX, orientY = orientY, orientZ = orientZ, orientW = orientW ) override fun equals(other: Any?): Boolean { if(this === other) return true if(javaClass != other?.javaClass) return false other as ControllerState if(buttons != other.buttons) return false if(l2State != other.l2State) return false if(r2State != other.r2State) return false if(leftX != other.leftX) return false if(leftY != other.leftY) return false if(rightX != other.rightX) return false if(rightY != other.rightY) return false if(touchIdNext != other.touchIdNext) return false if(!touches.contentEquals(other.touches)) return false if(gyroX != other.gyroX) return false if(gyroY != other.gyroY) return false if(gyroZ != other.gyroZ) return false if(accelX != other.accelX) return false if(accelY != other.accelY) return false if(accelZ != other.accelZ) return false if(orientX != other.orientX) return false if(orientY != other.orientY) return false if(orientZ != other.orientZ) return false if(orientW != other.orientW) return false return true } override fun hashCode(): Int { var result = buttons.hashCode() result = 31 * result + l2State.hashCode() result = 31 * result + r2State.hashCode() result = 31 * result + leftX result = 31 * result + leftY result = 31 * result + rightX result = 31 * result + rightY result = 31 * result + touchIdNext.hashCode() result = 31 * result + touches.contentHashCode() result = 31 * result + gyroX.hashCode() result = 31 * result + gyroY.hashCode() result = 31 * result + gyroZ.hashCode() result = 31 * result + accelX.hashCode() result = 31 * result + accelY.hashCode() result = 31 * result + accelZ.hashCode() result = 31 * result + orientX.hashCode() result = 31 * result + orientY.hashCode() result = 31 * result + orientZ.hashCode() result = 31 * result + orientW.hashCode() return result } fun startTouch(x: UShort, y: UShort): UByte? = touches .find { it.id < 0 } ?.also { it.id = touchIdNext.toByte() it.x = x it.y = y touchIdNext = ((touchIdNext + 1U) and 0x7fU).toUByte() }?.id?.toUByte() fun stopTouch(id: UByte) { touches.find { it.id >= 0 && it.id == id.toByte() }?.let { it.id = -1 } } fun setTouchPos(id: UByte, x: UShort, y: UShort): Boolean = touches.find { it.id >= 0 && it.id == id.toByte() }?.let { val r = it.x != x || it.y != y it.x = x it.y = y r } ?: false } class QuitReason(val value: Int) { override fun toString() = ChiakiNative.quitReasonToString(value) val isError = ChiakiNative.quitReasonIsError(value) } sealed class Event object ConnectedEvent: Event() data class LoginPinRequestEvent(val pinIncorrect: Boolean): Event() data class QuitEvent(val reason: QuitReason, val reasonString: String?): Event() data class RumbleEvent(val left: UByte, val right: UByte): Event() class CreateError(val errorCode: ErrorCode): Exception("Failed to create a native object: $errorCode") class Session(connectInfo: ConnectInfo, logFile: String?, logVerbose: Boolean) { interface EventCallback { fun sessionEvent(event: Event) } private var nativePtr: Long var eventCallback: ((event: Event) -> Unit)? = null init { val result = ChiakiNative.CreateResult(0, 0) ChiakiNative.sessionCreate(result, connectInfo, logFile, logVerbose, this) val errorCode = ErrorCode(result.errorCode) if(!errorCode.isSuccess) throw CreateError(errorCode) nativePtr = result.ptr } fun start() = ErrorCode(ChiakiNative.sessionStart(nativePtr)) fun stop() = ErrorCode(ChiakiNative.sessionStop(nativePtr)) fun dispose() { if(nativePtr == 0L) return ChiakiNative.sessionJoin(nativePtr) ChiakiNative.sessionFree(nativePtr) nativePtr = 0L } private fun event(event: Event) { eventCallback?.let { it(event) } } private fun eventConnected() { event(ConnectedEvent) } private fun eventLoginPinRequest(pinIncorrect: Boolean) { event(LoginPinRequestEvent(pinIncorrect)) } private fun eventQuit(reasonValue: Int, reasonString: String?) { event(QuitEvent(QuitReason(reasonValue), reasonString)) } private fun eventRumble(left: Int, right: Int) { event(RumbleEvent(left.toUByte(), right.toUByte())) } fun setSurface(surface: Surface?) { ChiakiNative.sessionSetSurface(nativePtr, surface) } fun setControllerState(controllerState: ControllerState) { ChiakiNative.sessionSetControllerState(nativePtr, controllerState) } fun setLoginPin(pin: String) { ChiakiNative.sessionSetLoginPin(nativePtr, pin) } } data class DiscoveryHost( val state: State, val hostRequestPort: UShort, val hostAddr: String?, val systemVersion: String?, val deviceDiscoveryProtocolVersion: String?, val hostName: String?, val hostType: String?, val hostId: String?, val runningAppTitleid: String?, val runningAppName: String?) { enum class State { UNKNOWN, READY, STANDBY } val isPS5 get() = deviceDiscoveryProtocolVersion == "00030010" } data class DiscoveryServiceOptions( val hostsMax: ULong, val hostDropPings: ULong, val pingMs: ULong, val sendAddr: InetSocketAddress ) class DiscoveryService( options: DiscoveryServiceOptions, val callback: ((hosts: List) -> Unit)?) { companion object { fun wakeup(service: DiscoveryService?, host: String, userCredential: ULong, ps5: Boolean) = ChiakiNative.discoveryServiceWakeup(service?.nativePtr ?: 0, host, userCredential.toLong(), ps5) } private var nativePtr: Long init { val result = ChiakiNative.CreateResult(0, 0) ChiakiNative.discoveryServiceCreate(result, options, this) val errorCode = ErrorCode(result.errorCode) if(!errorCode.isSuccess) throw CreateError(errorCode) nativePtr = result.ptr } fun dispose() { if(nativePtr == 0L) return ChiakiNative.discoveryServiceFree(nativePtr) nativePtr = 0L } private fun hostsUpdated(hosts: Array) { val hostsList = hosts.toList() Log.i("Chiaki", "got hosts from native: $hostsList") callback?.let { it(hostsList) } } } @Parcelize data class RegistInfo( val target: Target, val host: String, val broadcast: Boolean, val psnOnlineId: String?, val psnAccountId: ByteArray?, val pin: Int ): Parcelable { companion object { const val ACCOUNT_ID_SIZE = 8 } } data class RegistHost( val target: Target, val apSsid: String, val apBssid: String, val apKey: String, val apName: String, val serverMac: ByteArray, val serverNickname: String, val rpRegistKey: ByteArray, val rpKeyType: UInt, val rpKey: ByteArray ) sealed class RegistEvent object RegistEventCanceled: RegistEvent() object RegistEventFailed: RegistEvent() class RegistEventSuccess(val host: RegistHost): RegistEvent() class Regist( info: RegistInfo, log: ChiakiLog, val callback: (RegistEvent) -> Unit ) { private var nativePtr: Long init { val result = ChiakiNative.CreateResult(0, 0) ChiakiNative.registStart(result, info, log, this) val errorCode = ErrorCode(result.errorCode) if(!errorCode.isSuccess) throw CreateError(errorCode) nativePtr = result.ptr } fun stop() { ChiakiNative.registStop(nativePtr) } fun dispose() { if(nativePtr == 0L) return ChiakiNative.registFree(nativePtr) nativePtr = 0L } private fun event(event: RegistEvent) { callback(event) } } chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/main/000077500000000000000000000000001447035777400245335ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/main/DisplayHostRecyclerViewAdapter.kt000066400000000000000000000107501447035777400331660ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.main import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.view.animation.AnimationUtils import android.widget.PopupMenu import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.RecyclerView import com.metallic.chiaki.R import com.metallic.chiaki.common.DiscoveredDisplayHost import com.metallic.chiaki.common.DisplayHost import com.metallic.chiaki.common.ManualDisplayHost import com.metallic.chiaki.common.ext.inflate import com.metallic.chiaki.databinding.ItemDisplayHostBinding import com.metallic.chiaki.lib.DiscoveryHost class DisplayHostDiffCallback(val old: List, val new: List): DiffUtil.Callback() { override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int) = (old[oldItemPosition] == new[newItemPosition]) override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int) = (old[oldItemPosition] == new[newItemPosition]) override fun getOldListSize() = old.size override fun getNewListSize() = new.size } class DisplayHostRecyclerViewAdapter( val clickCallback: (DisplayHost) -> Unit, val wakeupCallback: (DisplayHost) -> Unit, val editCallback: (DisplayHost) -> Unit, val deleteCallback: (DisplayHost) -> Unit ): RecyclerView.Adapter() { var hosts: List = listOf() set(value) { val diff = DiffUtil.calculateDiff(DisplayHostDiffCallback(field, value)) field = value diff.dispatchUpdatesTo(this) } class ViewHolder(val binding: ItemDisplayHostBinding): RecyclerView.ViewHolder(binding.root) override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ViewHolder(ItemDisplayHostBinding.inflate(LayoutInflater.from(parent.context), parent, false)) override fun getItemCount() = hosts.count() override fun onBindViewHolder(holder: ViewHolder, position: Int) { val context = holder.itemView.context val host = hosts[position] holder.binding.also { it.nameTextView.text = host.name it.hostTextView.text = context.getString(R.string.display_host_host, host.host) val id = host.id it.idTextView.text = if(id != null) context.getString( if(host.isRegistered) R.string.display_host_id_registered else R.string.display_host_id_unregistered, id) else "" it.bottomInfoTextView.text = (host as? DiscoveredDisplayHost)?.discoveredHost?.let { discoveredHost -> if(discoveredHost.runningAppName != null || discoveredHost.runningAppTitleid != null) context.getString(R.string.display_host_app_title_id, discoveredHost.runningAppName ?: "", discoveredHost.runningAppTitleid ?: "") else "" } ?: "" it.discoveredIndicatorLayout.visibility = if(host is DiscoveredDisplayHost) View.VISIBLE else View.GONE it.stateIndicatorImageView.setImageResource( when { host is DiscoveredDisplayHost -> when(host.discoveredHost.state) { DiscoveryHost.State.STANDBY -> if(host.isPS5) R.drawable.ic_console_ps5_standby else R.drawable.ic_console_standby DiscoveryHost.State.READY -> if(host.isPS5) R.drawable.ic_console_ps5_ready else R.drawable.ic_console_ready else -> if(host.isPS5) R.drawable.ic_console_ps5 else R.drawable.ic_console } host.isPS5 -> R.drawable.ic_console_ps5 else -> R.drawable.ic_console } ) it.root.setOnClickListener { clickCallback(host) } val canWakeup = host.registeredHost != null val canEditDelete = host is ManualDisplayHost if(canWakeup || canEditDelete) { it.menuButton.isVisible = true it.menuButton.setOnClickListener { _ -> val menu = PopupMenu(context, it.menuButton) menu.menuInflater.inflate(R.menu.display_host, menu.menu) menu.menu.findItem(R.id.action_wakeup).isVisible = canWakeup menu.menu.findItem(R.id.action_edit).isVisible = canEditDelete menu.menu.findItem(R.id.action_delete).isVisible = canEditDelete menu.setOnMenuItemClickListener { menuItem -> when(menuItem.itemId) { R.id.action_wakeup -> wakeupCallback(host) R.id.action_edit -> editCallback(host) R.id.action_delete -> deleteCallback(host) else -> return@setOnMenuItemClickListener false } true } menu.show() } } else { it.menuButton.isGone = true it.menuButton.setOnClickListener(null) } } } }FloatingActionButtonBackgroundBehavior.kt000066400000000000000000000046101447035777400345720ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/main// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.main import android.animation.Animator import android.animation.AnimatorSet import android.animation.ObjectAnimator import android.animation.PropertyValuesHolder import android.content.Context import android.content.res.Resources import android.util.AttributeSet import android.view.View import android.view.ViewGroup import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.animation.addListener import androidx.core.view.children import androidx.core.view.isGone import androidx.core.view.isInvisible import androidx.core.view.isVisible import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.transformation.ExpandableTransformationBehavior import com.metallic.chiaki.R class FloatingActionButtonBackgroundBehavior @JvmOverloads constructor(context: Context? = null, attrs: AttributeSet? = null) : ExpandableTransformationBehavior(context, attrs) { companion object { private const val DURATION = 150L } override fun layoutDependsOn(parent: CoordinatorLayout, child: View, dependency: View) = dependency is FloatingActionButton override fun onCreateExpandedStateChangeAnimation(dependency: View, child: View, expanded: Boolean, isAnimating: Boolean): AnimatorSet = AnimatorSet().also { it.playTogether(listOf( if(expanded) createExpandAnimation(child, isAnimating) else createCollapseAnimation(child) )) it.addListener( onStart = { if(expanded) child.isVisible = true }, onEnd = { if(!expanded) child.isGone = true } ) } private fun createExpandAnimation(child: View, currentlyAnimating: Boolean): Animator { if(!currentlyAnimating) child.alpha = 0f val animator = ObjectAnimator.ofPropertyValuesHolder( child, PropertyValuesHolder.ofFloat(View.ALPHA, 1f) ).apply { duration = DURATION } return AnimatorSet().apply { playTogether(listOf(animator)) } } private fun createCollapseAnimation(child: View): Animator { val animator = ObjectAnimator.ofPropertyValuesHolder( child, PropertyValuesHolder.ofFloat(View.ALPHA, 0f) ).apply { duration = DURATION } return AnimatorSet().apply { playTogether(listOf(animator)) } } } FloatingActionButtonSpeedDialBehavior.kt000066400000000000000000000065111447035777400343470ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/main// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.main import android.animation.Animator import android.animation.AnimatorSet import android.animation.ObjectAnimator import android.animation.PropertyValuesHolder import android.content.Context import android.content.res.Resources import android.util.AttributeSet import android.view.View import android.view.ViewGroup import android.view.animation.AccelerateInterpolator import android.view.animation.DecelerateInterpolator import androidx.coordinatorlayout.widget.CoordinatorLayout import androidx.core.animation.addListener import androidx.core.view.children import androidx.core.view.isInvisible import androidx.core.view.isVisible import com.google.android.material.floatingactionbutton.FloatingActionButton import com.google.android.material.transformation.ExpandableTransformationBehavior import com.metallic.chiaki.R // see https://github.com/lcdsmao/ExpandableFABExample class FloatingActionButtonSpeedDialBehavior @JvmOverloads constructor(context: Context? = null, attrs: AttributeSet? = null) : ExpandableTransformationBehavior(context, attrs) { companion object { private const val DELAY = 30L private const val DURATION = 150L } override fun layoutDependsOn(parent: CoordinatorLayout, child: View, dependency: View) = dependency is FloatingActionButton && child is ViewGroup override fun onCreateExpandedStateChangeAnimation(dependency: View, child: View, expanded: Boolean, isAnimating: Boolean): AnimatorSet = if(child !is ViewGroup) AnimatorSet() else AnimatorSet().also { it.playTogether(listOf( if(expanded) createExpandAnimation(child, isAnimating) else createCollapseAnimation(child) )) it.addListener( onStart = { if(expanded) child.isVisible = true }, onEnd = { if(!expanded) child.isInvisible = true } ) } private fun offset(resources: Resources) = resources.getDimension(R.dimen.floating_action_button_speed_dial_anim_offset) private fun createExpandAnimation(child: ViewGroup, currentlyAnimating: Boolean): Animator { if(!currentlyAnimating) { child.children.forEach { it.alpha = 0f it.translationY = this.offset(child.resources) } } val translationYHolder = PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, 0f) val alphaHolder = PropertyValuesHolder.ofFloat(View.ALPHA, 1f) val animators = child.children.mapIndexed { index, view -> ObjectAnimator.ofPropertyValuesHolder( view, translationYHolder, alphaHolder ).apply { duration = DURATION startDelay = (child.childCount - index - 1) * DELAY interpolator = DecelerateInterpolator() } }.toList() return AnimatorSet().apply { playTogether(animators) } } private fun createCollapseAnimation(child: ViewGroup): Animator { val translationYHolder = PropertyValuesHolder.ofFloat(View.TRANSLATION_Y, this.offset(child.resources)) val alphaHolder = PropertyValuesHolder.ofFloat(View.ALPHA, 0f) val animators = child.children.mapIndexed { index, view -> ObjectAnimator.ofPropertyValuesHolder( view, translationYHolder, alphaHolder ).apply { duration = DURATION startDelay = index * DELAY interpolator = AccelerateInterpolator() } }.toList() return AnimatorSet().apply { playTogether(animators) } } } chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/main/MainActivity.kt000066400000000000000000000164321447035777400275020ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.main import android.app.ActivityOptions import android.content.Intent import android.os.Bundle import android.view.Menu import android.view.MenuItem import android.view.View import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.metallic.chiaki.R import com.metallic.chiaki.common.* import com.metallic.chiaki.common.ext.putRevealExtra import com.metallic.chiaki.common.ext.viewModelFactory import com.metallic.chiaki.databinding.ActivityMainBinding import com.metallic.chiaki.lib.ConnectInfo import com.metallic.chiaki.lib.DiscoveryHost import com.metallic.chiaki.manualconsole.EditManualConsoleActivity import com.metallic.chiaki.regist.RegistActivity import com.metallic.chiaki.settings.SettingsActivity import com.metallic.chiaki.stream.StreamActivity class MainActivity : AppCompatActivity() { private lateinit var viewModel: MainViewModel private lateinit var binding: ActivityMainBinding private var discoveryMenuItem: MenuItem? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) title = "" setSupportActionBar(binding.toolbar) binding.floatingActionButton.setOnClickListener { expandFloatingActionButton(!binding.floatingActionButton.isExpanded) } binding.floatingActionButtonDialBackground.setOnClickListener { expandFloatingActionButton(false) } binding.addManualButton.setOnClickListener { addManualConsole() } binding.addManualLabelButton.setOnClickListener { addManualConsole() } binding.registerButton.setOnClickListener { showRegistration() } binding.registerLabelButton.setOnClickListener { showRegistration() } viewModel = ViewModelProvider(this, viewModelFactory { MainViewModel(getDatabase(this), Preferences(this)) }) .get(MainViewModel::class.java) val recyclerViewAdapter = DisplayHostRecyclerViewAdapter(this::hostTriggered, this::wakeupHost, this::editHost, this::deleteHost) binding.hostsRecyclerView.adapter = recyclerViewAdapter binding.hostsRecyclerView.layoutManager = LinearLayoutManager(this) viewModel.displayHosts.observe(this, Observer { val top = binding.hostsRecyclerView.computeVerticalScrollOffset() == 0 recyclerViewAdapter.hosts = it if(top) binding.hostsRecyclerView.scrollToPosition(0) updateEmptyInfo() }) viewModel.discoveryActive.observe(this, Observer { active -> discoveryMenuItem?.let { updateDiscoveryMenuItem(it, active) } updateEmptyInfo() }) } private fun updateEmptyInfo() { if(viewModel.displayHosts.value?.isEmpty() ?: true) { binding.emptyInfoLayout.visibility = View.VISIBLE val discoveryActive = viewModel.discoveryActive.value ?: false binding.emptyInfoImageView.setImageResource(if(discoveryActive) R.drawable.ic_discover_on else R.drawable.ic_discover_off) binding.emptyInfoTextView.setText(if(discoveryActive) R.string.display_hosts_empty_discovery_on_info else R.string.display_hosts_empty_discovery_off_info) } else binding.emptyInfoLayout.visibility = View.GONE } private fun expandFloatingActionButton(expand: Boolean) { binding.floatingActionButton.isExpanded = expand binding.floatingActionButton.isActivated = binding.floatingActionButton.isExpanded } override fun onStart() { super.onStart() viewModel.discoveryManager.resume() } override fun onStop() { super.onStop() viewModel.discoveryManager.pause() } override fun onBackPressed() { if(binding.floatingActionButton.isExpanded) { expandFloatingActionButton(false) return } super.onBackPressed() } override fun onCreateOptionsMenu(menu: Menu): Boolean { menuInflater.inflate(R.menu.main, menu) val discoveryItem = menu.findItem(R.id.action_discover) discoveryMenuItem = discoveryItem val discoveryActive = viewModel.discoveryActive.value ?: false updateDiscoveryMenuItem(discoveryItem, discoveryActive) return true } private fun updateDiscoveryMenuItem(item: MenuItem, active: Boolean) { item.isChecked = active item.setIcon(if(active) R.drawable.ic_discover_on else R.drawable.ic_discover_off) } override fun onOptionsItemSelected(item: MenuItem): Boolean = when(item.itemId) { R.id.action_discover -> { viewModel.discoveryManager.active = !(viewModel.discoveryActive.value ?: false) true } R.id.action_settings -> { Intent(this, SettingsActivity::class.java).also { startActivity(it) } true } else -> super.onOptionsItemSelected(item) } private fun addManualConsole() { Intent(this, EditManualConsoleActivity::class.java).also { it.putRevealExtra(binding.addManualButton, binding.rootLayout) startActivity(it, ActivityOptions.makeSceneTransitionAnimation(this).toBundle()) } } private fun showRegistration() { Intent(this, RegistActivity::class.java).also { it.putRevealExtra(binding.registerButton, binding.rootLayout) startActivity(it, ActivityOptions.makeSceneTransitionAnimation(this).toBundle()) } } private fun hostTriggered(host: DisplayHost) { val registeredHost = host.registeredHost if(registeredHost != null) { fun connect() { val connectInfo = ConnectInfo(host.isPS5, host.host, registeredHost.rpRegistKey, registeredHost.rpKey, Preferences(this).videoProfile) Intent(this, StreamActivity::class.java).let { it.putExtra(StreamActivity.EXTRA_CONNECT_INFO, connectInfo) startActivity(it) } } if(host is DiscoveredDisplayHost && host.discoveredHost.state == DiscoveryHost.State.STANDBY) { MaterialAlertDialogBuilder(this) .setMessage(R.string.alert_message_standby_wakeup) .setPositiveButton(R.string.action_wakeup) { _, _ -> wakeupHost(host) } .setNeutralButton(R.string.action_connect_immediately) { _, _ -> connect() } .setNegativeButton(R.string.action_connect_cancel_connect) { _, _ -> } .create() .show() } else connect() } else { Intent(this, RegistActivity::class.java).let { it.putExtra(RegistActivity.EXTRA_HOST, host.host) it.putExtra(RegistActivity.EXTRA_BROADCAST, false) if(host is ManualDisplayHost) it.putExtra(RegistActivity.EXTRA_ASSIGN_MANUAL_HOST_ID, host.manualHost.id) startActivity(it) } } } private fun wakeupHost(host: DisplayHost) { val registeredHost = host.registeredHost ?: return viewModel.discoveryManager.sendWakeup(host.host, registeredHost.rpRegistKey, registeredHost.target.isPS5) } private fun editHost(host: DisplayHost) { if(host !is ManualDisplayHost) return Intent(this, EditManualConsoleActivity::class.java).also { it.putExtra(EditManualConsoleActivity.EXTRA_MANUAL_HOST_ID, host.manualHost.id) startActivity(it) } } private fun deleteHost(host: DisplayHost) { if(host !is ManualDisplayHost) return MaterialAlertDialogBuilder(this) .setMessage(getString(R.string.alert_message_delete_manual_host, host.manualHost.host)) .setPositiveButton(R.string.action_delete) { _, _ -> viewModel.deleteManualHost(host.manualHost) } .setNegativeButton(R.string.action_keep) { _, _ -> } .create() .show() } } chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/main/MainViewModel.kt000066400000000000000000000036531447035777400276020ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.main import androidx.lifecycle.ViewModel import com.metallic.chiaki.common.* import com.metallic.chiaki.common.ext.toLiveData import com.metallic.chiaki.discovery.DiscoveryManager import com.metallic.chiaki.discovery.serverMac import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.Observables import io.reactivex.rxkotlin.addTo import io.reactivex.schedulers.Schedulers class MainViewModel(val database: AppDatabase, val preferences: Preferences): ViewModel() { private val disposable = CompositeDisposable() val discoveryManager = DiscoveryManager().also { it.active = preferences.discoveryEnabled it.discoveryActive .observeOn(AndroidSchedulers.mainThread()) .subscribe { preferences.discoveryEnabled = it } .addTo(disposable) } val displayHosts by lazy { Observables.combineLatest( database.manualHostDao().getAll().toObservable(), database.registeredHostDao().getAll().toObservable(), discoveryManager.discoveredHosts) { manualHosts, registeredHosts, discoveredHosts -> val macRegisteredHosts = registeredHosts.associateBy { it.serverMac } val idRegisteredHosts = registeredHosts.associateBy { it.id } discoveredHosts.map { DiscoveredDisplayHost(it.serverMac?.let { mac -> macRegisteredHosts[mac] }, it) } + manualHosts.map { ManualDisplayHost(it.registeredHost?.let { id -> idRegisteredHosts[id] }, it) } } .toLiveData() } val discoveryActive by lazy { discoveryManager.discoveryActive.toLiveData() } fun deleteManualHost(manualHost: ManualHost) { database.manualHostDao() .delete(manualHost) .onErrorComplete() .subscribeOn(Schedulers.io()) .subscribe() .addTo(disposable) } override fun onCleared() { super.onCleared() disposable.dispose() discoveryManager.dispose() } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/manualconsole/000077500000000000000000000000001447035777400264475ustar00rootroot00000000000000EditManualConsoleActivity.kt000066400000000000000000000063041447035777400340160ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/manualconsole// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.manualconsole import android.content.Intent import android.os.Bundle import android.view.View import android.view.Window import android.widget.AdapterView import android.widget.ArrayAdapter import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.metallic.chiaki.R import com.metallic.chiaki.common.RegisteredHost import com.metallic.chiaki.common.ext.RevealActivity import com.metallic.chiaki.common.ext.viewModelFactory import com.metallic.chiaki.common.getDatabase import com.metallic.chiaki.databinding.ActivityEditManualBinding import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.addTo class EditManualConsoleActivity: AppCompatActivity(), RevealActivity { companion object { const val EXTRA_MANUAL_HOST_ID = "manual_host_id" } private lateinit var viewModel: EditManualConsoleViewModel private lateinit var binding: ActivityEditManualBinding override val revealIntent: Intent get() = intent override val revealRootLayout: View get() = binding.rootLayout override val revealWindow: Window get() = window private val disposable = CompositeDisposable() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityEditManualBinding.inflate(layoutInflater) setContentView(binding.root) handleReveal() viewModel = ViewModelProvider(this, viewModelFactory { EditManualConsoleViewModel(getDatabase(this), if(intent.hasExtra(EXTRA_MANUAL_HOST_ID)) intent.getLongExtra(EXTRA_MANUAL_HOST_ID, 0) else null) }) .get(EditManualConsoleViewModel::class.java) viewModel.existingHost?.observe(this, Observer { binding.hostEditText.setText(it.host) }) viewModel.selectedRegisteredHost.observe(this, Observer { binding.registeredHostTextView.setText(titleForRegisteredHost(it)) }) viewModel.registeredHosts.observe(this, Observer { hosts -> binding.registeredHostTextView.setAdapter(ArrayAdapter(this, R.layout.dropdown_menu_popup_item, hosts.map { titleForRegisteredHost(it) })) binding.registeredHostTextView.onItemClickListener = object: AdapterView.OnItemClickListener { override fun onItemClick(parent: AdapterView<*>?, view: View?, position: Int, id: Long) { if(position >= hosts.size) return val host = hosts[position] viewModel.selectedRegisteredHost.value = host } } }) binding.saveButton.setOnClickListener { saveHost() } } private fun titleForRegisteredHost(registeredHost: RegisteredHost?) = if(registeredHost == null) getString(R.string.add_manual_regist_on_connect) else "${registeredHost.serverNickname ?: ""} (${registeredHost.serverMac})" private fun saveHost() { val host = binding.hostEditText.text.toString().trim() if(host.isEmpty()) { binding.hostEditText.error = getString(R.string.entered_host_invalid) return } binding.saveButton.isEnabled = false viewModel.saveHost(host) .observeOn(AndroidSchedulers.mainThread()) .subscribe { finish() } .addTo(disposable) } }EditManualConsoleViewModel.kt000066400000000000000000000036611447035777400341200ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/manualconsole// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.manualconsole import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.metallic.chiaki.common.AppDatabase import com.metallic.chiaki.common.ManualHost import com.metallic.chiaki.common.RegisteredHost import com.metallic.chiaki.common.ext.toLiveData import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.schedulers.Schedulers class EditManualConsoleViewModel(val database: AppDatabase, manualHostId: Long?): ViewModel() { val registeredHosts by lazy { database.registeredHostDao().getAll().observeOn(AndroidSchedulers.mainThread()) .doOnNext { hosts -> val selectedHost = selectedRegisteredHost.value if(selectedHost != null) selectedRegisteredHost.value = hosts.firstOrNull { it.id == selectedHost.id } } .map { listOf(null) + it } .toLiveData() } val existingHost: LiveData? = if(manualHostId != null) database.manualHostDao() .getByIdWithRegisteredHost(manualHostId) .toFlowable() .doOnError { Log.e("EditManualConsole", "Failed to fetch existing manual host", it) } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doOnNext { hosts -> selectedRegisteredHost.value = hosts.registeredHost } .map { hosts -> hosts.manualHost } .toLiveData() else null var selectedRegisteredHost = MutableLiveData(null) fun saveHost(host: String) = database.manualHostDao() .let { val registeredHost = selectedRegisteredHost.value?.id val existingHost = existingHost?.value if(existingHost != null) it.update(ManualHost(id = existingHost.id, host = host, registeredHost = registeredHost)) else it.insert(ManualHost(host = host, registeredHost = registeredHost)) } .subscribeOn(Schedulers.io()) }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/regist/000077500000000000000000000000001447035777400251045ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/regist/ChiakiRxLog.kt000066400000000000000000000013701447035777400276110ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.regist import com.metallic.chiaki.lib.ChiakiLog import io.reactivex.Observable import io.reactivex.subjects.BehaviorSubject import java.util.concurrent.locks.ReentrantLock import kotlin.concurrent.withLock class ChiakiRxLog(levelMask: Int) { private val accSubject: BehaviorSubject = BehaviorSubject.create().also { it.onNext("") } private val accMutex = ReentrantLock() val logText: Observable get() = accSubject val log = ChiakiLog(levelMask, callback = { level, text -> accMutex.withLock { val cur = accSubject.value ?: "" accSubject.onNext(cur + (if(cur.isEmpty()) "" else "\n") + ChiakiLog.formatLog(level, text)) } }) }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/regist/RegistActivity.kt000066400000000000000000000130351447035777400304200ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.regist import android.content.Intent import android.os.Bundle import android.util.Base64 import android.view.View import android.view.Window import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.metallic.chiaki.R import com.metallic.chiaki.common.ext.RevealActivity import com.metallic.chiaki.databinding.ActivityRegistBinding import com.metallic.chiaki.lib.RegistInfo import com.metallic.chiaki.lib.Target import java.lang.IllegalArgumentException class RegistActivity: AppCompatActivity(), RevealActivity { companion object { const val EXTRA_HOST = "regist_host" const val EXTRA_BROADCAST = "regist_broadcast" const val EXTRA_ASSIGN_MANUAL_HOST_ID = "assign_manual_host_id" private const val PIN_LENGTH = 8 private const val REQUEST_REGIST = 1 } private lateinit var viewModel: RegistViewModel private lateinit var binding: ActivityRegistBinding override val revealWindow: Window get() = window override val revealIntent: Intent get() = intent override val revealRootLayout: View get() = binding.rootLayout override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityRegistBinding.inflate(layoutInflater) setContentView(binding.root) handleReveal() viewModel = ViewModelProvider(this).get(RegistViewModel::class.java) binding.hostEditText.setText(intent.getStringExtra(EXTRA_HOST) ?: "255.255.255.255") binding.broadcastCheckBox.isChecked = intent.getBooleanExtra(EXTRA_BROADCAST, true) binding.registButton.setOnClickListener { doRegist() } binding.ps4VersionRadioGroup.check(when(viewModel.ps4Version.value ?: RegistViewModel.ConsoleVersion.PS5) { RegistViewModel.ConsoleVersion.PS5 -> R.id.ps5RadioButton RegistViewModel.ConsoleVersion.PS4_GE_8 -> R.id.ps4VersionGE8RadioButton RegistViewModel.ConsoleVersion.PS4_GE_7 -> R.id.ps4VersionGE7RadioButton RegistViewModel.ConsoleVersion.PS4_LT_7 -> R.id.ps4VersionLT7RadioButton }) binding.ps4VersionRadioGroup.setOnCheckedChangeListener { _, checkedId -> viewModel.ps4Version.value = when(checkedId) { R.id.ps5RadioButton -> RegistViewModel.ConsoleVersion.PS5 R.id.ps4VersionGE8RadioButton -> RegistViewModel.ConsoleVersion.PS4_GE_8 R.id.ps4VersionGE7RadioButton -> RegistViewModel.ConsoleVersion.PS4_GE_7 R.id.ps4VersionLT7RadioButton -> RegistViewModel.ConsoleVersion.PS4_LT_7 else -> RegistViewModel.ConsoleVersion.PS5 } } viewModel.ps4Version.observe(this, Observer { binding.psnAccountIdHelpGroup.visibility = if(it == RegistViewModel.ConsoleVersion.PS4_LT_7) View.GONE else View.VISIBLE binding.psnIdTextInputLayout.hint = getString(when(it!!) { RegistViewModel.ConsoleVersion.PS4_LT_7 -> R.string.hint_regist_psn_online_id else -> R.string.hint_regist_psn_account_id }) binding.pinHelpBeforeTextView.setText(if(it.isPS5) R.string.regist_pin_instructions_ps5_before else R.string.regist_pin_instructions_ps4_before) binding.pinHelpNavigationTextView.setText(if(it.isPS5) R.string.regist_pin_instructions_ps5_navigation else R.string.regist_pin_instructions_ps4_navigation) }) } private fun doRegist() { val ps4Version = viewModel.ps4Version.value ?: RegistViewModel.ConsoleVersion.PS5 val host = binding.hostEditText.text.toString().trim() val hostValid = host.isNotEmpty() val broadcast = binding.broadcastCheckBox.isChecked val psnId = binding.psnIdEditText.text.toString().trim() val psnOnlineId: String? = if(ps4Version == RegistViewModel.ConsoleVersion.PS4_LT_7) psnId else null val psnAccountId: ByteArray? = if(ps4Version != RegistViewModel.ConsoleVersion.PS4_LT_7) try { Base64.decode(psnId, Base64.DEFAULT) } catch(e: IllegalArgumentException) { null } else null val psnIdValid = when(ps4Version) { RegistViewModel.ConsoleVersion.PS4_LT_7 -> psnOnlineId?.isNotEmpty() ?: false else -> psnAccountId != null && psnAccountId.size == RegistInfo.ACCOUNT_ID_SIZE } val pin = binding.pinEditText.text.toString() val pinValid = pin.length == PIN_LENGTH binding.hostEditText.error = if(!hostValid) getString(R.string.entered_host_invalid) else null binding.psnIdEditText.error = if(!psnIdValid) getString(when(ps4Version) { RegistViewModel.ConsoleVersion.PS4_LT_7 -> R.string.regist_psn_online_id_invalid else -> R.string.regist_psn_account_id_invalid }) else null binding.pinEditText.error = if(!pinValid) getString(R.string.regist_pin_invalid, PIN_LENGTH) else null if(!hostValid || !psnIdValid || !pinValid) return val target = when(ps4Version) { RegistViewModel.ConsoleVersion.PS5 -> Target.PS5_1 RegistViewModel.ConsoleVersion.PS4_GE_8 -> Target.PS4_10 RegistViewModel.ConsoleVersion.PS4_GE_7 -> Target.PS4_9 RegistViewModel.ConsoleVersion.PS4_LT_7 -> Target.PS4_8 } val registInfo = RegistInfo(target, host, broadcast, psnOnlineId, psnAccountId, pin.toInt()) Intent(this, RegistExecuteActivity::class.java).also { it.putExtra(RegistExecuteActivity.EXTRA_REGIST_INFO, registInfo) if(intent.hasExtra(EXTRA_ASSIGN_MANUAL_HOST_ID)) it.putExtra(RegistExecuteActivity.EXTRA_ASSIGN_MANUAL_HOST_ID, intent.getLongExtra(EXTRA_ASSIGN_MANUAL_HOST_ID, 0L)) startActivityForResult(it, REQUEST_REGIST) } } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if(requestCode == REQUEST_REGIST && resultCode == RESULT_OK) finish() } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/regist/RegistExecuteActivity.kt000066400000000000000000000100641447035777400317420ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.regist import android.app.Activity import android.content.Intent import android.os.Bundle import android.text.method.ScrollingMovementMethod import android.view.View import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.metallic.chiaki.R import com.metallic.chiaki.common.MacAddress import com.metallic.chiaki.common.ext.viewModelFactory import com.metallic.chiaki.common.getDatabase import com.metallic.chiaki.databinding.ActivityRegistExecuteBinding import com.metallic.chiaki.lib.RegistInfo import kotlin.math.max class RegistExecuteActivity: AppCompatActivity() { companion object { const val EXTRA_REGIST_INFO = "regist_info" const val EXTRA_ASSIGN_MANUAL_HOST_ID = "assign_manual_host_id" const val RESULT_FAILED = Activity.RESULT_FIRST_USER } private lateinit var viewModel: RegistExecuteViewModel private lateinit var binding: ActivityRegistExecuteBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityRegistExecuteBinding.inflate(layoutInflater) setContentView(binding.root) viewModel = ViewModelProvider(this, viewModelFactory { RegistExecuteViewModel(getDatabase(this)) }) .get(RegistExecuteViewModel::class.java) binding.logTextView.setHorizontallyScrolling(true) binding.logTextView.movementMethod = ScrollingMovementMethod() viewModel.logText.observe(this, Observer { val textLayout = binding.logTextView.layout ?: return@Observer val lineCount = textLayout.lineCount if(lineCount < 1) return@Observer binding.logTextView.text = it val scrollY = textLayout.getLineBottom(lineCount - 1) - binding.logTextView.height + binding.logTextView.paddingTop + binding.logTextView.paddingBottom binding.logTextView.scrollTo(0, max(scrollY, 0)) }) viewModel.state.observe(this, Observer { binding.progressBar.visibility = if(it == RegistExecuteViewModel.State.RUNNING) View.VISIBLE else View.GONE when(it) { RegistExecuteViewModel.State.FAILED -> { binding.infoTextView.visibility = View.VISIBLE binding.infoTextView.setText(R.string.regist_info_failed) setResult(RESULT_FAILED) } RegistExecuteViewModel.State.SUCCESSFUL, RegistExecuteViewModel.State.SUCCESSFUL_DUPLICATE -> { binding.infoTextView.visibility = View.VISIBLE binding.infoTextView.setText(R.string.regist_info_success) setResult(RESULT_OK) if(it == RegistExecuteViewModel.State.SUCCESSFUL_DUPLICATE) showDuplicateDialog() } RegistExecuteViewModel.State.STOPPED -> { binding.infoTextView.visibility = View.GONE setResult(Activity.RESULT_CANCELED) } else -> binding.infoTextView.visibility = View.GONE } }) binding.shareLogButton.setOnClickListener { val log = viewModel.logText.value ?: "" Intent(Intent.ACTION_SEND).also { it.type = "text/plain" it.putExtra(Intent.EXTRA_TEXT, log) startActivity(Intent.createChooser(it, resources.getString(R.string.action_share_log))) } } val registInfo = intent.getParcelableExtra(EXTRA_REGIST_INFO) if(registInfo == null) { finish() return } viewModel.start(registInfo, if(intent.hasExtra(EXTRA_ASSIGN_MANUAL_HOST_ID)) intent.getLongExtra(EXTRA_ASSIGN_MANUAL_HOST_ID, 0) else null) } override fun onStop() { super.onStop() viewModel.stop() } private var dialog: AlertDialog? = null private fun showDuplicateDialog() { if(dialog != null) return val macStr = viewModel.host?.serverMac?.let { MacAddress(it).toString() } ?: "" dialog = MaterialAlertDialogBuilder(this) .setMessage(getString(R.string.alert_regist_duplicate, macStr)) .setNegativeButton(R.string.action_regist_discard) { _, _ -> } .setPositiveButton(R.string.action_regist_overwrite) { _, _ -> viewModel.saveHost() } .create() .also { it.show() } } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/regist/RegistExecuteViewModel.kt000066400000000000000000000060541447035777400320450ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.regist import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.metallic.chiaki.common.AppDatabase import com.metallic.chiaki.common.MacAddress import com.metallic.chiaki.common.RegisteredHost import com.metallic.chiaki.common.ext.toLiveData import com.metallic.chiaki.lib.* import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.addTo import io.reactivex.schedulers.Schedulers class RegistExecuteViewModel(val database: AppDatabase): ViewModel() { enum class State { IDLE, RUNNING, STOPPED, FAILED, SUCCESSFUL, SUCCESSFUL_DUPLICATE, } private val _state = MutableLiveData(State.IDLE) val state: LiveData get() = _state private val log = ChiakiRxLog(ChiakiLog.Level.ALL.value/* and ChiakiLog.Level.VERBOSE.value.inv()*/) private var regist: Regist? = null val logText: LiveData = log.logText.toLiveData() private val disposable = CompositeDisposable() var host: RegistHost? = null private set private var assignManualHostId: Long? = null fun start(info: RegistInfo, assignManualHostId: Long?) { if(regist != null) return try { regist = Regist(info, log.log, this::registEvent) this.assignManualHostId = assignManualHostId _state.value = State.RUNNING } catch(error: CreateError) { log.log.e("Failed to create Regist: ${error.errorCode}") _state.value = State.FAILED } } fun stop() { regist?.stop() } private fun registEvent(event: RegistEvent) { when(event) { is RegistEventCanceled -> _state.postValue(State.STOPPED) is RegistEventFailed -> _state.postValue(State.FAILED) is RegistEventSuccess -> registSuccess(event.host) } } private fun registSuccess(host: RegistHost) { this.host = host database.registeredHostDao().getByMac(MacAddress(host.serverMac)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .doOnSuccess { _state.value = State.SUCCESSFUL_DUPLICATE } .doOnComplete { saveHost() } .subscribe() .addTo(disposable) } fun saveHost() { val host = host ?: return val assignManualHostId = assignManualHostId val dao = database.registeredHostDao() val manualHostDao = database.manualHostDao() val registeredHost = RegisteredHost(host) dao.deleteByMac(registeredHost.serverMac) .andThen(dao.insert(registeredHost)) .let { if(assignManualHostId != null) it.flatMapCompletable { registeredHostId -> manualHostDao.assignRegisteredHost(assignManualHostId, registeredHostId) } else it.ignoreElement() } .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe { Log.i("RegistExecute", "Registered Host saved in db") _state.value = State.SUCCESSFUL } .addTo(disposable) } override fun onCleared() { super.onCleared() regist?.dispose() disposable.dispose() } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/regist/RegistViewModel.kt000066400000000000000000000006121447035777400305140ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.regist import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel class RegistViewModel: ViewModel() { enum class ConsoleVersion { PS5, PS4_GE_8, PS4_GE_7, PS4_LT_7; val isPS5 get() = this == PS5 } val ps4Version = MutableLiveData(ConsoleVersion.PS5) }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/session/000077500000000000000000000000001447035777400252725ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/session/StreamInput.kt000066400000000000000000000171101447035777400301050ustar00rootroot00000000000000package com.metallic.chiaki.session import android.content.Context import android.hardware.* import android.view.* import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleObserver import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.OnLifecycleEvent import com.metallic.chiaki.common.Preferences import com.metallic.chiaki.lib.ControllerState class StreamInput(val context: Context, val preferences: Preferences) { var controllerStateChangedCallback: ((ControllerState) -> Unit)? = null val controllerState: ControllerState get() { val controllerState = sensorControllerState or keyControllerState or motionControllerState val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager @Suppress("DEPRECATION") when(windowManager.defaultDisplay.rotation) { Surface.ROTATION_90 -> { controllerState.accelX *= -1.0f controllerState.accelZ *= -1.0f controllerState.gyroX *= -1.0f controllerState.gyroZ *= -1.0f controllerState.orientX *= -1.0f controllerState.orientZ *= -1.0f } else -> {} } // prioritize motion controller's l2 and r2 over key // (some controllers send only key, others both but key earlier than full press) if(motionControllerState.l2State > 0U) controllerState.l2State = motionControllerState.l2State if(motionControllerState.r2State > 0U) controllerState.r2State = motionControllerState.r2State return controllerState or touchControllerState } private val sensorControllerState = ControllerState() // from Motion Sensors private val keyControllerState = ControllerState() // from KeyEvents private val motionControllerState = ControllerState() // from MotionEvents var touchControllerState = ControllerState() set(value) { field = value controllerStateUpdated() } private val swapCrossMoon = preferences.swapCrossMoon private val sensorEventListener = object: SensorEventListener { override fun onSensorChanged(event: SensorEvent) { when(event.sensor.type) { Sensor.TYPE_ACCELEROMETER -> { sensorControllerState.accelX = event.values[1] / SensorManager.GRAVITY_EARTH sensorControllerState.accelY = event.values[2] / SensorManager.GRAVITY_EARTH sensorControllerState.accelZ = event.values[0] / SensorManager.GRAVITY_EARTH } Sensor.TYPE_GYROSCOPE -> { sensorControllerState.gyroX = event.values[1] sensorControllerState.gyroY = event.values[2] sensorControllerState.gyroZ = event.values[0] } Sensor.TYPE_ROTATION_VECTOR -> { val q = floatArrayOf(0f, 0f, 0f, 0f) SensorManager.getQuaternionFromVector(q, event.values) sensorControllerState.orientX = q[2] sensorControllerState.orientY = q[3] sensorControllerState.orientZ = q[1] sensorControllerState.orientW = q[0] } else -> return } controllerStateUpdated() } override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {} } private val motionLifecycleObserver = object: LifecycleObserver { @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) fun onResume() { val samplingPeriodUs = 4000 val sensorManager = context.getSystemService(Context.SENSOR_SERVICE) as SensorManager listOfNotNull( sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), sensorManager.getDefaultSensor(Sensor.TYPE_GYROSCOPE), sensorManager.getDefaultSensor(Sensor.TYPE_ROTATION_VECTOR) ).forEach { sensorManager.registerListener(sensorEventListener, it, samplingPeriodUs) } } @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) fun onPause() { val sensorManager = context.getSystemService(Context.SENSOR_SERVICE) as SensorManager sensorManager.unregisterListener(sensorEventListener) } } fun observe(lifecycleOwner: LifecycleOwner) { if(preferences.motionEnabled) lifecycleOwner.lifecycle.addObserver(motionLifecycleObserver) } private fun controllerStateUpdated() { controllerStateChangedCallback?.let { it(controllerState) } } fun dispatchKeyEvent(event: KeyEvent): Boolean { //Log.i("StreamSession", "key event $event") if(event.action != KeyEvent.ACTION_DOWN && event.action != KeyEvent.ACTION_UP) return false when(event.keyCode) { KeyEvent.KEYCODE_BUTTON_L2 -> { keyControllerState.l2State = if(event.action == KeyEvent.ACTION_DOWN) UByte.MAX_VALUE else 0U return true } KeyEvent.KEYCODE_BUTTON_R2 -> { keyControllerState.r2State = if(event.action == KeyEvent.ACTION_DOWN) UByte.MAX_VALUE else 0U return true } } val buttonMask: UInt = when(event.keyCode) { // dpad handled by MotionEvents //KeyEvent.KEYCODE_DPAD_LEFT -> ControllerState.BUTTON_DPAD_LEFT //KeyEvent.KEYCODE_DPAD_RIGHT -> ControllerState.BUTTON_DPAD_RIGHT //KeyEvent.KEYCODE_DPAD_UP -> ControllerState.BUTTON_DPAD_UP //KeyEvent.KEYCODE_DPAD_DOWN -> ControllerState.BUTTON_DPAD_DOWN KeyEvent.KEYCODE_BUTTON_A -> if(swapCrossMoon) ControllerState.BUTTON_MOON else ControllerState.BUTTON_CROSS KeyEvent.KEYCODE_BUTTON_B -> if(swapCrossMoon) ControllerState.BUTTON_CROSS else ControllerState.BUTTON_MOON KeyEvent.KEYCODE_BUTTON_X -> if(swapCrossMoon) ControllerState.BUTTON_PYRAMID else ControllerState.BUTTON_BOX KeyEvent.KEYCODE_BUTTON_Y -> if(swapCrossMoon) ControllerState.BUTTON_BOX else ControllerState.BUTTON_PYRAMID KeyEvent.KEYCODE_BUTTON_L1 -> ControllerState.BUTTON_L1 KeyEvent.KEYCODE_BUTTON_R1 -> ControllerState.BUTTON_R1 KeyEvent.KEYCODE_BUTTON_THUMBL -> ControllerState.BUTTON_L3 KeyEvent.KEYCODE_BUTTON_THUMBR -> ControllerState.BUTTON_R3 KeyEvent.KEYCODE_BUTTON_SELECT -> ControllerState.BUTTON_SHARE KeyEvent.KEYCODE_BUTTON_START -> ControllerState.BUTTON_OPTIONS KeyEvent.KEYCODE_BUTTON_C -> ControllerState.BUTTON_PS KeyEvent.KEYCODE_BUTTON_MODE -> ControllerState.BUTTON_PS else -> return false } keyControllerState.buttons = keyControllerState.buttons.run { when(event.action) { KeyEvent.ACTION_DOWN -> this or buttonMask KeyEvent.ACTION_UP -> this and buttonMask.inv() else -> this } } controllerStateUpdated() return true } fun onGenericMotionEvent(event: MotionEvent): Boolean { if(event.source and InputDevice.SOURCE_CLASS_JOYSTICK != InputDevice.SOURCE_CLASS_JOYSTICK) return false fun Float.signedAxis() = (this * Short.MAX_VALUE).toInt().toShort() fun Float.unsignedAxis() = (this * UByte.MAX_VALUE.toFloat()).toUInt().toUByte() motionControllerState.leftX = event.getAxisValue(MotionEvent.AXIS_X).signedAxis() motionControllerState.leftY = event.getAxisValue(MotionEvent.AXIS_Y).signedAxis() motionControllerState.rightX = event.getAxisValue(MotionEvent.AXIS_Z).signedAxis() motionControllerState.rightY = event.getAxisValue(MotionEvent.AXIS_RZ).signedAxis() motionControllerState.l2State = event.getAxisValue(MotionEvent.AXIS_LTRIGGER).unsignedAxis() motionControllerState.r2State = event.getAxisValue(MotionEvent.AXIS_RTRIGGER).unsignedAxis() motionControllerState.buttons = motionControllerState.buttons.let { val dpadX = event.getAxisValue(MotionEvent.AXIS_HAT_X) val dpadY = event.getAxisValue(MotionEvent.AXIS_HAT_Y) val dpadButtons = (if(dpadX > 0.5f) ControllerState.BUTTON_DPAD_RIGHT else 0U) or (if(dpadX < -0.5f) ControllerState.BUTTON_DPAD_LEFT else 0U) or (if(dpadY > 0.5f) ControllerState.BUTTON_DPAD_DOWN else 0U) or (if(dpadY < -0.5f) ControllerState.BUTTON_DPAD_UP else 0U) it and (ControllerState.BUTTON_DPAD_RIGHT or ControllerState.BUTTON_DPAD_LEFT or ControllerState.BUTTON_DPAD_DOWN or ControllerState.BUTTON_DPAD_UP).inv() or dpadButtons } //Log.i("StreamSession", "motionEvent => $motionControllerState") controllerStateUpdated() return true } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/session/StreamSession.kt000066400000000000000000000074371447035777400304440ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.session import android.graphics.SurfaceTexture import android.util.Log import android.view.* import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import com.metallic.chiaki.common.LogManager import com.metallic.chiaki.lib.* sealed class StreamState object StreamStateIdle: StreamState() object StreamStateConnecting: StreamState() object StreamStateConnected: StreamState() data class StreamStateCreateError(val error: CreateError): StreamState() data class StreamStateQuit(val reason: QuitReason, val reasonString: String?): StreamState() data class StreamStateLoginPinRequest(val pinIncorrect: Boolean): StreamState() class StreamSession(val connectInfo: ConnectInfo, val logManager: LogManager, val logVerbose: Boolean, val input: StreamInput) { var session: Session? = null private set private val _state = MutableLiveData(StreamStateIdle) val state: LiveData get() = _state private val _rumbleState = MutableLiveData(RumbleEvent(0U, 0U)) val rumbleState: LiveData get() = _rumbleState private var surfaceTexture: SurfaceTexture? = null private var surface: Surface? = null init { input.controllerStateChangedCallback = { session?.setControllerState(it) } } fun shutdown() { session?.stop() session?.dispose() session = null _state.value = StreamStateIdle //surfaceTexture?.release() } fun pause() { shutdown() } fun resume() { if(session != null) return try { val session = Session(connectInfo, logManager.createNewFile().file.absolutePath, logVerbose) _state.value = StreamStateConnecting session.eventCallback = this::eventCallback session.start() val surface = surface if(surface != null) session.setSurface(surface) this.session = session } catch(e: CreateError) { _state.value = StreamStateCreateError(e) } } private fun eventCallback(event: Event) { when(event) { is ConnectedEvent -> _state.postValue(StreamStateConnected) is QuitEvent -> _state.postValue( StreamStateQuit( event.reason, event.reasonString ) ) is LoginPinRequestEvent -> _state.postValue( StreamStateLoginPinRequest( event.pinIncorrect ) ) is RumbleEvent -> _rumbleState.postValue(event) } } fun attachToSurfaceView(surfaceView: SurfaceView) { surfaceView.holder.addCallback(object: SurfaceHolder.Callback { override fun surfaceCreated(holder: SurfaceHolder) { } override fun surfaceChanged(holder: SurfaceHolder, format: Int, width: Int, height: Int) { val surface = holder.surface this@StreamSession.surface = surface session?.setSurface(surface) } override fun surfaceDestroyed(holder: SurfaceHolder) { this@StreamSession.surface = null session?.setSurface(null) } }) } fun attachToTextureView(textureView: TextureView) { textureView.surfaceTextureListener = object: TextureView.SurfaceTextureListener { override fun onSurfaceTextureAvailable(surface: SurfaceTexture, width: Int, height: Int) { if(surfaceTexture != null) return surfaceTexture = surface this@StreamSession.surface = Surface(surfaceTexture) session?.setSurface(Surface(surface)) } override fun onSurfaceTextureDestroyed(surface: SurfaceTexture): Boolean { // return false if we want to keep the surface texture return surfaceTexture == null } override fun onSurfaceTextureSizeChanged(surface: SurfaceTexture, width: Int, height: Int) { } override fun onSurfaceTextureUpdated(surface: SurfaceTexture) {} } val surfaceTexture = surfaceTexture if(surfaceTexture != null) textureView.setSurfaceTexture(surfaceTexture) } fun setLoginPin(pin: String) { session?.setLoginPin(pin) } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings/000077500000000000000000000000001447035777400254475ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings/ItemTouchSwipeCallback.kt000066400000000000000000000033141447035777400323360ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import android.content.Context import android.graphics.Canvas import android.graphics.Rect import androidx.core.graphics.withClip import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import com.metallic.chiaki.R abstract class ItemTouchSwipeCallback(context: Context): ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT) { private val backgroundDrawable = context.getDrawable(R.color.item_delete_background) private val icon = context.getDrawable(R.drawable.ic_delete_row) override fun onMove(recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder) = false override fun onChildDraw(canvas: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) { val itemView = viewHolder.itemView val itemHeight = itemView.bottom - itemView.top val bounds = Rect( itemView.right + dX.toInt(), itemView.top, itemView.right, itemView.bottom ) backgroundDrawable?.bounds = bounds backgroundDrawable?.draw(canvas) val icon = icon if(icon != null) { val iconMargin = (itemHeight - icon.intrinsicHeight) / 2 val iconTop = itemView.top + iconMargin val iconLeft = itemView.right - iconMargin - icon.intrinsicWidth val iconRight = itemView.right - iconMargin val iconBottom = iconTop + icon.intrinsicHeight canvas.withClip(bounds) { icon.setBounds(iconLeft, iconTop, iconRight, iconBottom) icon.draw(canvas) } } super.onChildDraw(canvas, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive) } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings/SettingsActivity.kt000066400000000000000000000035761447035777400313370ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import android.content.res.Resources import android.os.Bundle import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.Fragment import androidx.preference.Preference import androidx.preference.PreferenceFragmentCompat import com.metallic.chiaki.R import com.metallic.chiaki.databinding.ActivitySettingsBinding interface TitleFragment { fun getTitle(resources: Resources): String } class SettingsActivity: AppCompatActivity(), PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { private lateinit var binding: ActivitySettingsBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivitySettingsBinding.inflate(layoutInflater) setContentView(binding.root) title = "" setSupportActionBar(binding.toolbar) val rootFragment = SettingsFragment() replaceFragment(rootFragment, false) supportFragmentManager.addOnBackStackChangedListener { val titleFragment = supportFragmentManager.findFragmentById(R.id.settingsFragment) as? TitleFragment ?: return@addOnBackStackChangedListener binding.titleTextView.text = titleFragment.getTitle(resources) } binding.titleTextView.text = rootFragment.getTitle(resources) } override fun onPreferenceStartFragment(caller: PreferenceFragmentCompat, pref: Preference) = when(pref.fragment) { SettingsRegisteredHostsFragment::class.java.canonicalName -> { replaceFragment(SettingsRegisteredHostsFragment(), true) true } else -> false } private fun replaceFragment(fragment: Fragment, addToBackStack: Boolean) { supportFragmentManager.beginTransaction() .setCustomAnimations(android.R.anim.fade_in, android.R.anim.fade_out) .replace(R.id.settingsFragment, fragment) .also { if(addToBackStack) it.addToBackStack(null) } .commit() } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings/SettingsFragment.kt000066400000000000000000000143371447035777400313030ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import android.app.Activity import android.content.Intent import android.content.res.Resources import android.os.Bundle import android.text.InputType import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.preference.* import com.metallic.chiaki.R import com.metallic.chiaki.common.Preferences import com.metallic.chiaki.common.exportAndShareAllSettings import com.metallic.chiaki.common.ext.viewModelFactory import com.metallic.chiaki.common.getDatabase import com.metallic.chiaki.common.importSettingsFromUri import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.addTo class DataStore(val preferences: Preferences): PreferenceDataStore() { override fun getBoolean(key: String?, defValue: Boolean) = when(key) { preferences.logVerboseKey -> preferences.logVerbose preferences.swapCrossMoonKey -> preferences.swapCrossMoon preferences.rumbleEnabledKey -> preferences.rumbleEnabled preferences.motionEnabledKey -> preferences.motionEnabled preferences.buttonHapticEnabledKey -> preferences.buttonHapticEnabled else -> defValue } override fun putBoolean(key: String?, value: Boolean) { when(key) { preferences.logVerboseKey -> preferences.logVerbose = value preferences.swapCrossMoonKey -> preferences.swapCrossMoon = value preferences.rumbleEnabledKey -> preferences.rumbleEnabled = value preferences.motionEnabledKey -> preferences.motionEnabled = value preferences.buttonHapticEnabledKey -> preferences.buttonHapticEnabled = value } } override fun getString(key: String, defValue: String?) = when(key) { preferences.resolutionKey -> preferences.resolution.value preferences.fpsKey -> preferences.fps.value preferences.bitrateKey -> preferences.bitrate?.toString() ?: "" preferences.codecKey -> preferences.codec.value else -> defValue } override fun putString(key: String, value: String?) { when(key) { preferences.resolutionKey -> { val resolution = Preferences.Resolution.values().firstOrNull { it.value == value } ?: return preferences.resolution = resolution } preferences.fpsKey -> { val fps = Preferences.FPS.values().firstOrNull { it.value == value } ?: return preferences.fps = fps } preferences.bitrateKey -> preferences.bitrate = value?.toIntOrNull() preferences.codecKey -> { val codec = Preferences.Codec.values().firstOrNull { it.value == value } ?: return preferences.codec = codec } } } } class SettingsFragment: PreferenceFragmentCompat(), TitleFragment { companion object { private const val PICK_SETTINGS_JSON_REQUEST = 1 } private var disposable = CompositeDisposable() private var exportDisposable = CompositeDisposable().also { it.addTo(disposable) } override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { val context = context ?: return val viewModel = ViewModelProvider(this, viewModelFactory { SettingsViewModel(getDatabase(context), Preferences(context)) }) .get(SettingsViewModel::class.java) val preferences = viewModel.preferences preferenceManager.preferenceDataStore = DataStore(preferences) setPreferencesFromResource(R.xml.preferences, rootKey) preferenceScreen.findPreference(getString(R.string.preferences_resolution_key))?.let { it.entryValues = Preferences.resolutionAll.map { res -> res.value }.toTypedArray() it.entries = Preferences.resolutionAll.map { res -> getString(res.title) }.toTypedArray() } preferenceScreen.findPreference(getString(R.string.preferences_fps_key))?.let { it.entryValues = Preferences.fpsAll.map { fps -> fps.value }.toTypedArray() it.entries = Preferences.fpsAll.map { fps -> getString(fps.title) }.toTypedArray() } val bitratePreference = preferenceScreen.findPreference(getString(R.string.preferences_bitrate_key)) val bitrateSummaryProvider = Preference.SummaryProvider { preferences.bitrate?.toString() ?: getString(R.string.preferences_bitrate_auto, preferences.bitrateAuto) } bitratePreference?.let { it.summaryProvider = bitrateSummaryProvider it.setOnBindEditTextListener { editText -> editText.hint = getString(R.string.preferences_bitrate_auto, preferences.bitrateAuto) editText.inputType = InputType.TYPE_CLASS_NUMBER editText.setText(preferences.bitrate?.toString() ?: "") } } viewModel.bitrateAuto.observe(this, Observer { bitratePreference?.summaryProvider = bitrateSummaryProvider }) preferenceScreen.findPreference(getString(R.string.preferences_codec_key))?.let { it.entryValues = Preferences.codecAll.map { codec -> codec.value }.toTypedArray() it.entries = Preferences.codecAll.map { codec -> getString(codec.title) }.toTypedArray() } val registeredHostsPreference = preferenceScreen.findPreference("registered_hosts") viewModel.registeredHostsCount.observe(this, Observer { registeredHostsPreference?.summary = getString(R.string.preferences_registered_hosts_summary, it) }) preferenceScreen.findPreference(getString(R.string.preferences_export_settings_key))?.setOnPreferenceClickListener { exportSettings(); true } preferenceScreen.findPreference(getString(R.string.preferences_import_settings_key))?.setOnPreferenceClickListener { importSettings(); true } } override fun onDestroy() { super.onDestroy() disposable.dispose() } override fun getTitle(resources: Resources): String = resources.getString(R.string.title_settings) private fun exportSettings() { val activity = activity ?: return exportDisposable.clear() exportAndShareAllSettings(activity).addTo(exportDisposable) } private fun importSettings() { val intent = Intent(Intent.ACTION_OPEN_DOCUMENT).apply { addCategory(Intent.CATEGORY_OPENABLE) type = "application/json" } startActivityForResult(intent, PICK_SETTINGS_JSON_REQUEST) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { if(requestCode == PICK_SETTINGS_JSON_REQUEST && resultCode == Activity.RESULT_OK) { val activity = activity ?: return data?.data?.also { importSettingsFromUri(activity, it, disposable) } } } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings/SettingsLogsAdapter.kt000066400000000000000000000027761447035777400317510ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.metallic.chiaki.R import com.metallic.chiaki.common.LogFile import com.metallic.chiaki.common.ext.inflate import com.metallic.chiaki.databinding.ItemLogFileBinding import java.text.DateFormat import java.text.SimpleDateFormat import java.util.* class SettingsLogsAdapter: RecyclerView.Adapter() { var shareCallback: ((LogFile) -> Unit)? = null private val dateFormat: DateFormat = DateFormat.getDateInstance(DateFormat.SHORT) private val timeFormat = SimpleDateFormat("HH:mm:ss:SSS", Locale.getDefault()) class ViewHolder(val binding: ItemLogFileBinding): RecyclerView.ViewHolder(binding.root) var logFiles: List = listOf() set(value) { field = value notifyDataSetChanged() } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ViewHolder(ItemLogFileBinding.inflate(LayoutInflater.from(parent.context), parent, false)) override fun getItemCount() = logFiles.size override fun onBindViewHolder(holder: ViewHolder, position: Int) { val logFile = logFiles[position] holder.binding.nameTextView.text = "${dateFormat.format(logFile.date)} ${timeFormat.format(logFile.date)}" holder.binding.summaryTextView.text = logFile.filename holder.binding.shareButton.setOnClickListener { shareCallback?.let { it(logFile) } } } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings/SettingsLogsFragment.kt000066400000000000000000000056601447035777400321270ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import android.content.ClipData import android.content.Intent import android.content.res.Resources import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatDialogFragment import androidx.core.content.FileProvider import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.metallic.chiaki.R import com.metallic.chiaki.common.LogFile import com.metallic.chiaki.common.LogManager import com.metallic.chiaki.common.ext.viewModelFactory import com.metallic.chiaki.common.fileProviderAuthority import com.metallic.chiaki.databinding.FragmentSettingsLogsBinding class SettingsLogsFragment: AppCompatDialogFragment(), TitleFragment { private lateinit var viewModel: SettingsLogsViewModel private var _binding: FragmentSettingsLogsBinding? = null private val binding get() = _binding!! override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = FragmentSettingsLogsBinding.inflate(inflater, container, false).let { _binding = it it.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { val context = requireContext() viewModel = ViewModelProvider(this, viewModelFactory { SettingsLogsViewModel(LogManager(context)) }) .get(SettingsLogsViewModel::class.java) val adapter = SettingsLogsAdapter() binding.logsRecyclerView.layoutManager = LinearLayoutManager(context) binding.logsRecyclerView.adapter = adapter adapter.shareCallback = this::shareLogFile viewModel.sessionLogs.observe(viewLifecycleOwner, Observer { adapter.logFiles = it binding.emptyInfoGroup.visibility = if(it.isEmpty()) View.VISIBLE else View.GONE }) val itemTouchSwipeCallback = object : ItemTouchSwipeCallback(context) { override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { val pos = viewHolder.adapterPosition val file = viewModel.sessionLogs.value?.getOrNull(pos) ?: return viewModel.deleteLog(file) } } ItemTouchHelper(itemTouchSwipeCallback).attachToRecyclerView(binding.logsRecyclerView) } override fun getTitle(resources: Resources): String = resources.getString(R.string.preferences_logs_title) private fun shareLogFile(file: LogFile) { val activity = activity ?: return val uri = FileProvider.getUriForFile(activity, fileProviderAuthority, file.file) Intent(Intent.ACTION_SEND).also { it.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION) it.type = "text/plain" it.putExtra(Intent.EXTRA_STREAM, uri) it.clipData = ClipData.newRawUri("", uri) startActivity(Intent.createChooser(it, resources.getString(R.string.action_share_log))) } } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings/SettingsLogsViewModel.kt000066400000000000000000000016441447035777400322550ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import com.metallic.chiaki.common.AppDatabase import com.metallic.chiaki.common.LogFile import com.metallic.chiaki.common.LogManager import com.metallic.chiaki.common.RegisteredHost import com.metallic.chiaki.common.ext.toLiveData import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.addTo import io.reactivex.schedulers.Schedulers class SettingsLogsViewModel(val logManager: LogManager): ViewModel() { private val _sessionLogs = MutableLiveData>(logManager.files) val sessionLogs: LiveData> get() = _sessionLogs private fun updateLogs() { _sessionLogs.value = logManager.files } fun deleteLog(file: LogFile) { file.file.delete() updateLogs() } }SettingsRegisteredHostsAdapter.kt000066400000000000000000000021511447035777400340670ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import android.view.LayoutInflater import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.metallic.chiaki.common.RegisteredHost import com.metallic.chiaki.databinding.ItemRegisteredHostBinding class SettingsRegisteredHostsAdapter: RecyclerView.Adapter() { class ViewHolder(val binding: ItemRegisteredHostBinding): RecyclerView.ViewHolder(binding.root) var hosts: List = listOf() set(value) { field = value notifyDataSetChanged() } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int) = ViewHolder(ItemRegisteredHostBinding.inflate(LayoutInflater.from(parent.context), parent, false)) override fun getItemCount() = hosts.size override fun onBindViewHolder(holder: ViewHolder, position: Int) { val host = hosts[position] holder.binding.nameTextView.text = "${host.serverNickname} (${if(host.target.isPS5) "PS5" else "PS4"})" holder.binding.summaryTextView.text = host.serverMac.toString() } }SettingsRegisteredHostsFragment.kt000066400000000000000000000063301447035777400342550ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import android.app.ActivityOptions import android.content.Intent import android.content.res.Resources import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.appcompat.app.AppCompatDialogFragment import androidx.lifecycle.Observer import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.metallic.chiaki.R import com.metallic.chiaki.common.ext.putRevealExtra import com.metallic.chiaki.common.ext.viewModelFactory import com.metallic.chiaki.common.getDatabase import com.metallic.chiaki.databinding.FragmentSettingsRegisteredHostsBinding import com.metallic.chiaki.regist.RegistActivity class SettingsRegisteredHostsFragment: AppCompatDialogFragment(), TitleFragment { private lateinit var viewModel: SettingsRegisteredHostsViewModel private var _binding: FragmentSettingsRegisteredHostsBinding? = null private val binding get() = _binding!! override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = FragmentSettingsRegisteredHostsBinding.inflate(inflater, container, false).let { _binding = it it.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { val context = requireContext() viewModel = ViewModelProvider(this, viewModelFactory { SettingsRegisteredHostsViewModel(getDatabase(context)) }) .get(SettingsRegisteredHostsViewModel::class.java) val adapter = SettingsRegisteredHostsAdapter() binding.hostsRecyclerView.layoutManager = LinearLayoutManager(context) binding.hostsRecyclerView.adapter = adapter val itemTouchSwipeCallback = object : ItemTouchSwipeCallback(context) { override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) { val pos = viewHolder.adapterPosition val host = viewModel.registeredHosts.value?.getOrNull(pos) ?: return MaterialAlertDialogBuilder(viewHolder.itemView.context) .setMessage(getString(R.string.alert_message_delete_registered_host, host.serverNickname, host.serverMac.toString())) .setPositiveButton(R.string.action_delete) { _, _ -> viewModel.deleteHost(host) } .setNegativeButton(R.string.action_keep) { _, _ -> adapter.notifyItemChanged(pos) // to reset the swipe } .create() .show() } } ItemTouchHelper(itemTouchSwipeCallback).attachToRecyclerView(binding.hostsRecyclerView) viewModel.registeredHosts.observe(this, Observer { adapter.hosts = it binding.emptyInfoGroup.visibility = if(it.isEmpty()) View.VISIBLE else View.GONE }) binding.floatingActionButton.setOnClickListener { Intent(context, RegistActivity::class.java).also { it.putRevealExtra(binding.floatingActionButton, binding.rootLayout) startActivity(it, ActivityOptions.makeSceneTransitionAnimation(activity).toBundle()) } } } override fun getTitle(resources: Resources): String = resources.getString(R.string.preferences_registered_hosts_title) }SettingsRegisteredHostsViewModel.kt000066400000000000000000000015441447035777400344070ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import androidx.lifecycle.ViewModel import com.metallic.chiaki.common.AppDatabase import com.metallic.chiaki.common.RegisteredHost import com.metallic.chiaki.common.ext.toLiveData import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.addTo import io.reactivex.schedulers.Schedulers class SettingsRegisteredHostsViewModel(val database: AppDatabase): ViewModel() { private val disposable = CompositeDisposable() val registeredHosts by lazy { database.registeredHostDao().getAll().toLiveData() } fun deleteHost(host: RegisteredHost) { database.registeredHostDao() .delete(host) .subscribeOn(Schedulers.io()) .subscribe() .addTo(disposable) } override fun onCleared() { super.onCleared() disposable.dispose() } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/settings/SettingsViewModel.kt000066400000000000000000000010421447035777400314200ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.settings import androidx.lifecycle.ViewModel import com.metallic.chiaki.common.AppDatabase import com.metallic.chiaki.common.Preferences import com.metallic.chiaki.common.ext.toLiveData class SettingsViewModel(val database: AppDatabase, val preferences: Preferences): ViewModel() { val registeredHostsCount by lazy { database.registeredHostDao().count().toLiveData() } val bitrateAuto by lazy { preferences.bitrateAutoObservable.toLiveData() } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/stream/000077500000000000000000000000001447035777400251025ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/stream/AspectRatioFrameLayout.kt000066400000000000000000000031061447035777400320310ustar00rootroot00000000000000package com.metallic.chiaki.stream import android.content.Context import android.util.AttributeSet import android.widget.FrameLayout // see ExoPlayer's AspectRatioFrameLayout class AspectRatioFrameLayout @JvmOverloads constructor(context: Context, attrs: AttributeSet? = null): FrameLayout(context, attrs) { companion object { private const val MAX_ASPECT_RATIO_DEFORMATION_FRACTION = 0.01f } var aspectRatio = 0f set(value) { if(field != value) { field = value requestLayout() } } var mode: TransformMode = TransformMode.FIT set(value) { if(field != value) { field = value requestLayout() } } override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) { super.onMeasure(widthMeasureSpec, heightMeasureSpec) if(aspectRatio <= 0) { // Aspect ratio not set. return } var width = measuredWidth var height = measuredHeight val viewAspectRatio = width.toFloat() / height val aspectDeformation = aspectRatio / viewAspectRatio - 1 if(Math.abs(aspectDeformation) <= MAX_ASPECT_RATIO_DEFORMATION_FRACTION) return when(mode) { TransformMode.ZOOM -> if(aspectDeformation > 0) width = (height * aspectRatio).toInt() else height = (width / aspectRatio).toInt() TransformMode.FIT -> if(aspectDeformation > 0) height = (width / aspectRatio).toInt() else width = (height * aspectRatio).toInt() TransformMode.STRETCH -> {} } super.onMeasure( MeasureSpec.makeMeasureSpec(width, MeasureSpec.EXACTLY), MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY) ) } } chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/stream/StreamActivity.kt000066400000000000000000000263271447035777400304240ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.stream import android.animation.Animator import android.animation.AnimatorListenerAdapter import android.app.AlertDialog import android.graphics.Matrix import android.os.* import android.view.* import android.widget.EditText import androidx.appcompat.app.AppCompatActivity import androidx.core.view.isGone import androidx.core.view.isVisible import androidx.fragment.app.Fragment import androidx.lifecycle.* import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.metallic.chiaki.R import com.metallic.chiaki.common.Preferences import com.metallic.chiaki.common.ext.viewModelFactory import com.metallic.chiaki.databinding.ActivityStreamBinding import com.metallic.chiaki.lib.ConnectInfo import com.metallic.chiaki.lib.ConnectVideoProfile import com.metallic.chiaki.session.* import com.metallic.chiaki.touchcontrols.DefaultTouchControlsFragment import com.metallic.chiaki.touchcontrols.TouchControlsFragment import com.metallic.chiaki.touchcontrols.TouchpadOnlyFragment import io.reactivex.disposables.CompositeDisposable import io.reactivex.rxkotlin.addTo import kotlin.math.min private sealed class DialogContents private object StreamQuitDialog: DialogContents() private object CreateErrorDialog: DialogContents() private object PinRequestDialog: DialogContents() class StreamActivity : AppCompatActivity(), View.OnSystemUiVisibilityChangeListener { companion object { const val EXTRA_CONNECT_INFO = "connect_info" private const val HIDE_UI_TIMEOUT_MS = 2000L } private lateinit var viewModel: StreamViewModel private lateinit var binding: ActivityStreamBinding private val uiVisibilityHandler = Handler() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) val connectInfo = intent.getParcelableExtra(EXTRA_CONNECT_INFO) if(connectInfo == null) { finish() return } viewModel = ViewModelProvider(this, viewModelFactory { StreamViewModel(application, connectInfo) })[StreamViewModel::class.java] viewModel.input.observe(this) binding = ActivityStreamBinding.inflate(layoutInflater) setContentView(binding.root) window.decorView.setOnSystemUiVisibilityChangeListener(this) viewModel.onScreenControlsEnabled.observe(this, Observer { if(binding.onScreenControlsSwitch.isChecked != it) binding.onScreenControlsSwitch.isChecked = it if(binding.onScreenControlsSwitch.isChecked) binding.touchpadOnlySwitch.isChecked = false }) binding.onScreenControlsSwitch.setOnCheckedChangeListener { _, isChecked -> viewModel.setOnScreenControlsEnabled(isChecked) showOverlay() } viewModel.touchpadOnlyEnabled.observe(this, Observer { if(binding.touchpadOnlySwitch.isChecked != it) binding.touchpadOnlySwitch.isChecked = it if(binding.touchpadOnlySwitch.isChecked) binding.onScreenControlsSwitch.isChecked = false }) binding.touchpadOnlySwitch.setOnCheckedChangeListener { _, isChecked -> viewModel.setTouchpadOnlyEnabled(isChecked) showOverlay() } binding.displayModeToggle.addOnButtonCheckedListener { _, _, _ -> adjustStreamViewAspect() showOverlay() } //viewModel.session.attachToTextureView(textureView) viewModel.session.attachToSurfaceView(binding.surfaceView) viewModel.session.state.observe(this, Observer { this.stateChanged(it) }) adjustStreamViewAspect() if(Preferences(this).rumbleEnabled) { val vibrator = getSystemService(VIBRATOR_SERVICE) as Vibrator viewModel.session.rumbleState.observe(this, Observer { val amplitude = min(255, (it.left.toInt() + it.right.toInt()) / 2) vibrator.cancel() if(amplitude == 0) return@Observer if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) vibrator.vibrate(VibrationEffect.createOneShot(1000, amplitude)) else vibrator.vibrate(1000) }) } } private val controlsDisposable = CompositeDisposable() override fun onAttachFragment(fragment: Fragment) { super.onAttachFragment(fragment) if(fragment is TouchControlsFragment) { fragment.controllerState .subscribe { viewModel.input.touchControllerState = it } .addTo(controlsDisposable) fragment.onScreenControlsEnabled = viewModel.onScreenControlsEnabled if(fragment is TouchpadOnlyFragment) fragment.touchpadOnlyEnabled = viewModel.touchpadOnlyEnabled } } override fun onResume() { super.onResume() hideSystemUI() viewModel.session.resume() } override fun onPause() { super.onPause() viewModel.session.pause() } override fun onDestroy() { super.onDestroy() controlsDisposable.dispose() } private fun reconnect() { viewModel.session.shutdown() viewModel.session.resume() } private val hideSystemUIRunnable = Runnable { hideSystemUI() } override fun onSystemUiVisibilityChange(visibility: Int) { if(visibility and View.SYSTEM_UI_FLAG_FULLSCREEN == 0) showOverlay() else hideOverlay() } private fun showOverlay() { binding.overlay.isVisible = true binding.overlay.animate() .alpha(1.0f) .setListener(object: AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { binding.overlay.alpha = 1.0f } }) uiVisibilityHandler.removeCallbacks(hideSystemUIRunnable) uiVisibilityHandler.postDelayed(hideSystemUIRunnable, HIDE_UI_TIMEOUT_MS) } private fun hideOverlay() { binding.overlay.animate() .alpha(0.0f) .setListener(object: AnimatorListenerAdapter() { override fun onAnimationEnd(animation: Animator) { binding.overlay.isGone = true } }) } override fun onWindowFocusChanged(hasFocus: Boolean) { super.onWindowFocusChanged(hasFocus) if(hasFocus) hideSystemUI() } private fun hideSystemUI() { window.decorView.systemUiVisibility = (View.SYSTEM_UI_FLAG_IMMERSIVE or View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN or View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN) } private var dialogContents: DialogContents? = null private var dialog: AlertDialog? = null set(value) { field = value if(value == null) dialogContents = null } private fun stateChanged(state: StreamState) { binding.progressBar.visibility = if(state == StreamStateConnecting) View.VISIBLE else View.GONE when(state) { is StreamStateQuit -> { if(dialogContents != StreamQuitDialog) { if(state.reason.isError) { dialog?.dismiss() val reasonStr = state.reasonString val dialog = MaterialAlertDialogBuilder(this) .setMessage(getString(R.string.alert_message_session_quit, state.reason.toString()) + (if(reasonStr != null) "\n$reasonStr" else "")) .setPositiveButton(R.string.action_reconnect) { _, _ -> dialog = null reconnect() } .setOnCancelListener { dialog = null finish() } .setNegativeButton(R.string.action_quit_session) { _, _ -> dialog = null finish() } .create() dialogContents = StreamQuitDialog dialog.show() } else finish() } } is StreamStateCreateError -> { if(dialogContents != CreateErrorDialog) { dialog?.dismiss() val dialog = MaterialAlertDialogBuilder(this) .setMessage(getString(R.string.alert_message_session_create_error, state.error.errorCode.toString())) .setOnDismissListener { dialog = null finish() } .setNegativeButton(R.string.action_quit_session) { _, _ -> } .create() dialogContents = CreateErrorDialog dialog.show() } } is StreamStateLoginPinRequest -> { if(dialogContents != PinRequestDialog) { dialog?.dismiss() val view = layoutInflater.inflate(R.layout.dialog_login_pin, null) val pinEditText = view.findViewById(R.id.pinEditText) val dialog = MaterialAlertDialogBuilder(this) .setMessage( if(state.pinIncorrect) R.string.alert_message_login_pin_request_incorrect else R.string.alert_message_login_pin_request) .setView(view) .setPositiveButton(R.string.action_login_pin_connect) { _, _ -> dialog = null viewModel.session.setLoginPin(pinEditText.text.toString()) } .setOnCancelListener { dialog = null finish() } .setNegativeButton(R.string.action_quit_session) { _, _ -> dialog = null finish() } .create() dialogContents = PinRequestDialog dialog.show() } } else -> {} } } private fun adjustTextureViewAspect(textureView: TextureView) { val trans = TextureViewTransform(viewModel.session.connectInfo.videoProfile, textureView) val resolution = trans.resolutionFor(TransformMode.fromButton(binding.displayModeToggle.checkedButtonId)) Matrix().also { textureView.getTransform(it) it.setScale(resolution.width / trans.viewWidth, resolution.height / trans.viewHeight) it.postTranslate((trans.viewWidth - resolution.width) * 0.5f, (trans.viewHeight - resolution.height) * 0.5f) textureView.setTransform(it) } } private fun adjustSurfaceViewAspect() { val videoProfile = viewModel.session.connectInfo.videoProfile binding.aspectRatioLayout.aspectRatio = videoProfile.width.toFloat() / videoProfile.height.toFloat() binding.aspectRatioLayout.mode = TransformMode.fromButton(binding.displayModeToggle.checkedButtonId) } private fun adjustStreamViewAspect() = adjustSurfaceViewAspect() override fun dispatchKeyEvent(event: KeyEvent) = viewModel.input.dispatchKeyEvent(event) || super.dispatchKeyEvent(event) override fun onGenericMotionEvent(event: MotionEvent) = viewModel.input.onGenericMotionEvent(event) || super.onGenericMotionEvent(event) } enum class TransformMode { FIT, STRETCH, ZOOM; companion object { fun fromButton(displayModeButtonId: Int) = when (displayModeButtonId) { R.id.display_mode_stretch_button -> STRETCH R.id.display_mode_zoom_button -> ZOOM else -> FIT } } } class TextureViewTransform(private val videoProfile: ConnectVideoProfile, private val textureView: TextureView) { private val contentWidth : Float get() = videoProfile.width.toFloat() private val contentHeight : Float get() = videoProfile.height.toFloat() val viewWidth : Float get() = textureView.width.toFloat() val viewHeight : Float get() = textureView.height.toFloat() private val contentAspect : Float get() = contentHeight / contentWidth fun resolutionFor(mode: TransformMode): Resolution = when(mode) { TransformMode.STRETCH -> strechedResolution TransformMode.ZOOM -> zoomedResolution TransformMode.FIT -> normalResolution } private val strechedResolution get() = Resolution(viewWidth, viewHeight) private val zoomedResolution get() = if(viewHeight > viewWidth * contentAspect) { val zoomFactor = viewHeight / contentHeight Resolution(contentWidth * zoomFactor, viewHeight) } else { val zoomFactor = viewWidth / contentWidth Resolution(viewWidth, contentHeight * zoomFactor) } private val normalResolution get() = if(viewHeight > viewWidth * contentAspect) Resolution(viewWidth, viewWidth * contentAspect) else Resolution(viewHeight / contentAspect, viewHeight) } data class Resolution(val width: Float, val height: Float) chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/stream/StreamViewModel.kt000066400000000000000000000027171447035777400305200ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.stream import android.app.Application import android.content.Context import androidx.lifecycle.* import com.metallic.chiaki.common.LogManager import com.metallic.chiaki.session.StreamSession import com.metallic.chiaki.common.Preferences import com.metallic.chiaki.lib.* import com.metallic.chiaki.session.StreamInput class StreamViewModel(val application: Application, val connectInfo: ConnectInfo): ViewModel() { val preferences = Preferences(application) val logManager = LogManager(application) private var _session: StreamSession? = null val input = StreamInput(application, preferences) val session = StreamSession(connectInfo, logManager, preferences.logVerbose, input) private var _onScreenControlsEnabled = MutableLiveData(preferences.onScreenControlsEnabled) val onScreenControlsEnabled: LiveData get() = _onScreenControlsEnabled private var _touchpadOnlyEnabled = MutableLiveData(preferences.touchpadOnlyEnabled) val touchpadOnlyEnabled: LiveData get() = _touchpadOnlyEnabled override fun onCleared() { super.onCleared() _session?.shutdown() } fun setOnScreenControlsEnabled(enabled: Boolean) { preferences.onScreenControlsEnabled = enabled _onScreenControlsEnabled.value = enabled } fun setTouchpadOnlyEnabled(enabled: Boolean) { preferences.touchpadOnlyEnabled = enabled _touchpadOnlyEnabled.value = enabled } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/000077500000000000000000000000001447035777400265155ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/AnalogStickView.kt000066400000000000000000000061641447035777400321160ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.content.Context import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Rect import android.graphics.drawable.Drawable import android.util.AttributeSet import android.view.MotionEvent import android.view.View import com.metallic.chiaki.R import kotlin.math.abs class AnalogStickView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { val radius: Float private val handleRadius: Float private val drawableBase: Drawable? private val drawableHandle: Drawable? var state = Vector(0f, 0f) private set(value) { field = value stateChangedCallback?.let { it(field) } } var stateChangedCallback: ((Vector) -> Unit)? = null private val touchTracker = TouchTracker().also { it.positionChangedCallback = this::updateState } private var center: Vector? = null /** * Same as state, but scaled to the circle */ private var handlePosition: Vector = Vector(0f, 0f) private val clipBoundsTmp = Rect() init { context.theme.obtainStyledAttributes(attrs, R.styleable.AnalogStickView, 0, 0).apply { radius = getDimension(R.styleable.AnalogStickView_radius, 0f) handleRadius = getDimension(R.styleable.AnalogStickView_handleRadius, 0f) drawableBase = getDrawable(R.styleable.AnalogStickView_drawableBase) drawableHandle = getDrawable(R.styleable.AnalogStickView_drawableHandle) recycle() } } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) val center = center if(center != null) { val circleRadius = radius + handleRadius drawableBase?.setBounds((center.x - circleRadius).toInt(), (center.y - circleRadius).toInt(), (center.x + circleRadius).toInt(), (center.y + circleRadius).toInt()) drawableBase?.draw(canvas) val handleX = center.x + handlePosition.x * radius val handleY = center.y + handlePosition.y * radius drawableHandle?.setBounds((handleX - handleRadius).toInt(), (handleY - handleRadius).toInt(), (handleX + handleRadius).toInt(),(handleY + handleRadius).toInt()) drawableHandle?.draw(canvas) } } private fun updateState(position: Vector?) { if(radius <= 0f) return if(position == null) { center = null state = Vector(0f, 0f) handlePosition = Vector(0f, 0f) invalidate() return } val center: Vector = this.center ?: position this.center = center val dir = position - center val length = dir.length if(length > 0) { val strength = if(length > radius) 1.0f else length / radius val dirNormalized = dir / length handlePosition = dirNormalized * strength val dirBoxNormalized = if(abs(dirNormalized.x) > abs(dirNormalized.y)) dirNormalized / abs(dirNormalized.x) else dirNormalized / abs(dirNormalized.y) state = dirBoxNormalized * strength } else { handlePosition = Vector(0f, 0f) state = Vector(0f, 0f) } invalidate() } override fun onTouchEvent(event: MotionEvent): Boolean { touchTracker.touchEvent(event) return true } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/ButtonHaptics.kt000066400000000000000000000015511447035777400316460ustar00rootroot00000000000000package com.metallic.chiaki.touchcontrols import android.content.Context import android.os.Build import android.os.VibrationEffect import android.os.Vibrator import androidx.appcompat.app.AppCompatActivity import com.metallic.chiaki.common.Preferences class ButtonHaptics(val context: Context) { private val enabled = Preferences(context).buttonHapticEnabled fun trigger(harder: Boolean = false) { if(!enabled) return val vibrator = context.getSystemService(AppCompatActivity.VIBRATOR_SERVICE) as Vibrator if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) vibrator.vibrate( if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) VibrationEffect.createPredefined(if(harder) VibrationEffect.EFFECT_CLICK else VibrationEffect.EFFECT_TICK) else VibrationEffect.createOneShot(10, if(harder) 200 else 100) ) else vibrator.vibrate(10) } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/ButtonView.kt000066400000000000000000000047341447035777400311730ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.content.Context import android.graphics.Canvas import android.graphics.drawable.Drawable import android.util.AttributeSet import android.util.Log import android.view.MotionEvent import android.view.View import android.view.ViewGroup import androidx.core.view.children import com.metallic.chiaki.R class ButtonView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { private val haptics = ButtonHaptics(context) var buttonPressed = false private set(value) { val diff = field != value field = value if(diff) { if(value) haptics.trigger() invalidate() buttonPressedCallback?.let { it(field) } } } var buttonPressedCallback: ((Boolean) -> Unit)? = null private val drawableIdle: Drawable? private val drawablePressed: Drawable? init { context.theme.obtainStyledAttributes(attrs, R.styleable.ButtonView, 0, 0).apply { drawableIdle = getDrawable(R.styleable.ButtonView_drawableIdle) drawablePressed = getDrawable(R.styleable.ButtonView_drawablePressed) recycle() } isClickable = true } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) val drawable = if(buttonPressed) drawablePressed else drawableIdle drawable?.setBounds(paddingLeft, paddingTop, width - paddingRight, height - paddingBottom) drawable?.draw(canvas) } /** * If this button overlaps with others in the same layout, * let the one whose center is closest to the touch handle it. */ private fun bestFittingTouchView(x: Float, y: Float): View { val loc = locationOnScreen + Vector(x, y) return (parent as? ViewGroup)?.children?.filter { it is ButtonView }?.filter { val pos = it.locationOnScreen loc.x >= pos.x && loc.x < pos.x + it.width && loc.y >= pos.y && loc.y < pos.y + it.height }?.sortedBy { (loc - (it.locationOnScreen + Vector(it.width.toFloat(), it.height.toFloat()) * 0.5f)).lengthSq }?.firstOrNull() ?: this } override fun onTouchEvent(event: MotionEvent): Boolean { when(event.actionMasked) { MotionEvent.ACTION_DOWN, MotionEvent.ACTION_POINTER_DOWN -> { if(bestFittingTouchView(event.getX(event.actionIndex), event.getY(event.actionIndex)) != this) return false buttonPressed = true } MotionEvent.ACTION_UP, MotionEvent.ACTION_POINTER_UP -> { buttonPressed = false } } return true } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/ControlsBackgroundView.kt000066400000000000000000000007011447035777400335110ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.content.Context import android.util.AttributeSet import android.view.MotionEvent import android.view.View class ControlsBackgroundView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { override fun onTouchEvent(event: MotionEvent) = true }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/DPadView.kt000066400000000000000000000072251447035777400305260ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.content.Context import android.graphics.Canvas import android.util.AttributeSet import android.view.MotionEvent import android.view.View import androidx.vectordrawable.graphics.drawable.VectorDrawableCompat import com.metallic.chiaki.R import kotlin.math.PI import kotlin.math.atan2 class DPadView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { private val haptics = ButtonHaptics(context) enum class Direction { LEFT, RIGHT, UP, DOWN, LEFT_UP, RIGHT_UP, LEFT_DOWN, RIGHT_DOWN; val isDiagonal get() = when(this) { LEFT_UP, RIGHT_UP, LEFT_DOWN, RIGHT_DOWN -> true else -> false } } var state: Direction? = null private set var stateChangeCallback: ((Direction?) -> Unit)? = null /** * Radius (as a fraction of the entire DPad Radius) * to be used as a deadzone in the center on move events */ private val deadzoneRadius = 0.3f private val dpadIdleDrawable = VectorDrawableCompat.create(resources, R.drawable.control_dpad_idle, null) private val dpadLeftDrawable = VectorDrawableCompat.create(resources, R.drawable.control_dpad_left, null) private val dpadLeftUpDrawable = VectorDrawableCompat.create(resources, R.drawable.control_dpad_left_up, null) private val touchTracker = TouchTracker().also { it.positionChangedCallback = this::updateState } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) val state = state val drawable: VectorDrawableCompat? if(state != null) { drawable = if(state.isDiagonal) dpadLeftUpDrawable else dpadLeftDrawable when(state) { Direction.UP, Direction.RIGHT_UP -> canvas.rotate(90f, width.toFloat() * 0.5f, height.toFloat() * 0.5f) Direction.DOWN, Direction.LEFT_DOWN -> canvas.rotate(90f*3f, width.toFloat() * 0.5f, height.toFloat() * 0.5f) Direction.LEFT, Direction.LEFT_UP -> {} Direction.RIGHT, Direction.RIGHT_DOWN -> canvas.rotate(90f*2f, width.toFloat() * 0.5f, height.toFloat() * 0.5f) } } else drawable = dpadIdleDrawable drawable?.setBounds(paddingLeft, paddingTop, width - paddingRight, height - paddingBottom) //drawable?.alpha = 127 drawable?.draw(canvas) } private fun directionForPosition(position: Vector): Direction { val dir = (position / Vector(width.toFloat(), height.toFloat()) - 0.5f) * 2.0f val angleSection = PI.toFloat() * 2.0f / 8.0f val angle = atan2(dir.x, dir.y) + PI + angleSection * 0.5f return when { angle < 1.0f * angleSection -> Direction.UP angle < 2.0f * angleSection -> Direction.LEFT_UP angle < 3.0f * angleSection -> Direction.LEFT angle < 4.0f * angleSection -> Direction.LEFT_DOWN angle < 5.0f * angleSection -> Direction.DOWN angle < 6.0f * angleSection -> Direction.RIGHT_DOWN angle < 7.0f * angleSection -> Direction.RIGHT angle < 8.0f * angleSection -> Direction.RIGHT_UP else -> Direction.UP } } private fun updateState(position: Vector?) { val newState = if(position == null) null else { val xFrac = 2.0f * (position.x / width.toFloat() - 0.5f) val yFrac = 2.0f * (position.y / height.toFloat() - 0.5f) val radiusSq = xFrac * xFrac + yFrac * yFrac if(radiusSq < deadzoneRadius * deadzoneRadius && state != null) state else directionForPosition(position) } if(state != newState) { if(newState != null) haptics.trigger() state = newState invalidate() stateChangeCallback?.let { it(state) } } } override fun onTouchEvent(event: MotionEvent): Boolean { touchTracker.touchEvent(event) return true } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/TouchControlsFragment.kt000066400000000000000000000123361447035777400333540ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.Fragment import androidx.lifecycle.LiveData import androidx.lifecycle.Observer import com.metallic.chiaki.databinding.FragmentControlsBinding import com.metallic.chiaki.lib.ControllerState import io.reactivex.Observable import io.reactivex.rxkotlin.Observables.combineLatest import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.Subject abstract class TouchControlsFragment : Fragment() { protected var ownControllerState = ControllerState() set(value) { val diff = field != value field = value if(diff) ownControllerStateSubject.onNext(ownControllerState) } protected val ownControllerStateSubject: Subject = BehaviorSubject.create().also { it.onNext(ownControllerState) } // to delay attaching to the touchpadView until it's available protected val controllerStateProxy: Subject> = BehaviorSubject.create>().also { it.onNext(ownControllerStateSubject) } val controllerState: Observable get() = controllerStateProxy.flatMap { it } var onScreenControlsEnabled: LiveData? = null } class DefaultTouchControlsFragment : TouchControlsFragment() { private var _binding: FragmentControlsBinding? = null private val binding get() = _binding!! override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = FragmentControlsBinding.inflate(inflater, container, false).let { _binding = it controllerStateProxy.onNext( combineLatest(ownControllerStateSubject, binding.touchpadView.controllerState) { a, b -> a or b } ) it.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) binding.dpadView.stateChangeCallback = this::dpadStateChanged binding.crossButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_CROSS) binding.moonButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_MOON) binding.pyramidButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_PYRAMID) binding.boxButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_BOX) binding.l1ButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_L1) binding.r1ButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_R1) binding.l3ButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_L3) binding.r3ButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_R3) binding.optionsButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_OPTIONS) binding.shareButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_SHARE) binding.psButtonView.buttonPressedCallback = buttonStateChanged(ControllerState.BUTTON_PS) binding.l2ButtonView.buttonPressedCallback = { ownControllerState = ownControllerState.copy().apply { l2State = if(it) 255U else 0U } } binding.r2ButtonView.buttonPressedCallback = { ownControllerState = ownControllerState.copy().apply { r2State = if(it) 255U else 0U } } val quantizeStick = { f: Float -> (Short.MAX_VALUE * f).toInt().toShort() } binding.leftAnalogStickView.stateChangedCallback = { ownControllerState = ownControllerState.copy().apply { leftX = quantizeStick(it.x) leftY = quantizeStick(it.y) }} binding.rightAnalogStickView.stateChangedCallback = { ownControllerState = ownControllerState.copy().apply { rightX = quantizeStick(it.x) rightY = quantizeStick(it.y) }} onScreenControlsEnabled?.observe(viewLifecycleOwner, Observer { view.visibility = if(it) View.VISIBLE else View.GONE }) } private fun dpadStateChanged(direction: DPadView.Direction?) { ownControllerState = ownControllerState.copy().apply { buttons = ((buttons and ControllerState.BUTTON_DPAD_LEFT.inv() and ControllerState.BUTTON_DPAD_RIGHT.inv() and ControllerState.BUTTON_DPAD_UP.inv() and ControllerState.BUTTON_DPAD_DOWN.inv()) or when(direction) { DPadView.Direction.UP -> ControllerState.BUTTON_DPAD_UP DPadView.Direction.DOWN -> ControllerState.BUTTON_DPAD_DOWN DPadView.Direction.LEFT -> ControllerState.BUTTON_DPAD_LEFT DPadView.Direction.RIGHT -> ControllerState.BUTTON_DPAD_RIGHT DPadView.Direction.LEFT_UP -> ControllerState.BUTTON_DPAD_LEFT or ControllerState.BUTTON_DPAD_UP DPadView.Direction.LEFT_DOWN -> ControllerState.BUTTON_DPAD_LEFT or ControllerState.BUTTON_DPAD_DOWN DPadView.Direction.RIGHT_UP -> ControllerState.BUTTON_DPAD_RIGHT or ControllerState.BUTTON_DPAD_UP DPadView.Direction.RIGHT_DOWN -> ControllerState.BUTTON_DPAD_RIGHT or ControllerState.BUTTON_DPAD_DOWN null -> 0U }) } } private fun buttonStateChanged(buttonMask: UInt) = { pressed: Boolean -> ownControllerState = ownControllerState.copy().apply { buttons = if(pressed) buttons or buttonMask else buttons and buttonMask.inv() } } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/TouchTracker.kt000066400000000000000000000022451447035777400314560ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.view.MotionEvent class TouchTracker { var currentPosition: Vector? = null private set(value) { field = value positionChangedCallback?.let { it(field) } } var positionChangedCallback: ((Vector?) -> Unit)? = null private var pointerId: Int? = null fun touchEvent(event: MotionEvent) { when(event.actionMasked) { MotionEvent.ACTION_DOWN, MotionEvent.ACTION_POINTER_DOWN -> { if(pointerId == null) { pointerId = event.getPointerId(event.actionIndex) currentPosition = Vector(event.getX(event.actionIndex), event.getY(event.actionIndex)) } } MotionEvent.ACTION_UP, MotionEvent.ACTION_POINTER_UP -> { if(event.getPointerId(event.actionIndex) == pointerId) { pointerId = null currentPosition = null } } MotionEvent.ACTION_MOVE -> { val pointerId = pointerId if(pointerId != null) { val pointerIndex = event.findPointerIndex(pointerId) if(pointerIndex >= 0) currentPosition = Vector(event.getX(pointerIndex), event.getY(pointerIndex)) } } } } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/TouchpadOnlyFragment.kt000066400000000000000000000026671447035777400331650ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.lifecycle.LiveData import androidx.lifecycle.Observer import com.metallic.chiaki.databinding.FragmentTouchpadOnlyBinding import io.reactivex.rxkotlin.Observables.combineLatest class TouchpadOnlyFragment : TouchControlsFragment() { var touchpadOnlyEnabled: LiveData? = null private var _binding: FragmentTouchpadOnlyBinding? = null private val binding get() = _binding!! override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View = FragmentTouchpadOnlyBinding.inflate(inflater, container, false).let { _binding = it controllerStateProxy.onNext( combineLatest(ownControllerStateSubject, binding.touchpadView.controllerState) { a, b -> a or b } ) it.root } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) touchpadOnlyEnabled?.observe(viewLifecycleOwner, Observer { view.visibility = if(it) View.VISIBLE else View.GONE }) } private fun buttonStateChanged(buttonMask: UInt) = { pressed: Boolean -> ownControllerState = ownControllerState.copy().apply { buttons = if(pressed) buttons or buttonMask else buttons and buttonMask.inv() } } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/TouchpadView.kt000066400000000000000000000124771447035777400314720ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.content.Context import android.graphics.Canvas import android.graphics.drawable.Drawable import android.util.AttributeSet import android.view.MotionEvent import android.view.View import com.metallic.chiaki.R import com.metallic.chiaki.lib.ControllerState import io.reactivex.Observable import io.reactivex.subjects.BehaviorSubject import io.reactivex.subjects.Subject import kotlin.math.max class TouchpadView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : View(context, attrs, defStyleAttr) { companion object { private const val BUTTON_PRESS_MAX_MOVE_DIST_DP = 32.0f private const val SHORT_BUTTON_PRESS_DURATION_MS = 200L private const val BUTTON_HOLD_DELAY_MS = 500L } private val haptics = ButtonHaptics(context) private val drawableIdle: Drawable? private val drawablePressed: Drawable? private val state: ControllerState = ControllerState() inner class Touch( val stateId: UByte, private val startX: Float, private val startY: Float) { var lifted = false // will be true but touch still in list when only relevant for short touch private var maxDist: Float = 0.0f val moveInsignificant: Boolean get() = maxDist < BUTTON_PRESS_MAX_MOVE_DIST_DP fun onMove(x: Float, y: Float) { val d = (Vector(x, y) - Vector(startX, startY)).length / resources.displayMetrics.density maxDist = max(d, maxDist) } val startButtonHoldRunnable = Runnable { if(!moveInsignificant || buttonHeld) return@Runnable haptics.trigger(true) state.buttons = state.buttons or ControllerState.BUTTON_TOUCHPAD buttonHeld = true triggerStateChanged() } } private val pointerTouches = mutableMapOf() private val stateSubject: Subject = BehaviorSubject.create().also { it.onNext(state) } val controllerState: Observable get() = stateSubject private var shortPressingTouches = listOf() private val shortButtonPressLiftRunnable = Runnable { state.buttons = state.buttons and ControllerState.BUTTON_TOUCHPAD.inv() shortPressingTouches.forEach { state.stopTouch(it.stateId) } shortPressingTouches = listOf() triggerStateChanged() } private var buttonHeld = false init { context.theme.obtainStyledAttributes(attrs, R.styleable.TouchpadView, 0, 0).apply { drawableIdle = getDrawable(R.styleable.TouchpadView_drawableIdle) drawablePressed = getDrawable(R.styleable.TouchpadView_drawablePressed) recycle() } isClickable = true } override fun onDraw(canvas: Canvas) { super.onDraw(canvas) if(pointerTouches.values.find { !it.lifted } == null) return val drawable = if(state.buttons and ControllerState.BUTTON_TOUCHPAD != 0U) drawablePressed else drawableIdle drawable?.setBounds(paddingLeft, paddingTop, width - paddingRight, height - paddingBottom) drawable?.draw(canvas) } private fun touchX(event: MotionEvent, index: Int): UShort = maxOf(0U.toUShort(), minOf((ControllerState.TOUCHPAD_WIDTH - 1u).toUShort(), (ControllerState.TOUCHPAD_WIDTH.toFloat() * event.getX(index) / width.toFloat()).toUInt().toUShort())) private fun touchY(event: MotionEvent, index: Int): UShort = maxOf(0U.toUShort(), minOf((ControllerState.TOUCHPAD_HEIGHT - 1u).toUShort(), (ControllerState.TOUCHPAD_HEIGHT.toFloat() * event.getY(index) / height.toFloat()).toUInt().toUShort())) override fun onTouchEvent(event: MotionEvent): Boolean { when(event.actionMasked) { MotionEvent.ACTION_DOWN, MotionEvent.ACTION_POINTER_DOWN -> { state.startTouch(touchX(event, event.actionIndex), touchY(event, event.actionIndex))?.let { haptics.trigger() val touch = Touch(it, event.getX(event.actionIndex), event.getY(event.actionIndex)) pointerTouches[event.getPointerId(event.actionIndex)] = touch if(!buttonHeld) postDelayed(touch.startButtonHoldRunnable, BUTTON_HOLD_DELAY_MS) triggerStateChanged() } } MotionEvent.ACTION_UP, MotionEvent.ACTION_POINTER_UP -> { pointerTouches.remove(event.getPointerId(event.actionIndex))?.let { removeCallbacks(it.startButtonHoldRunnable) when { buttonHeld -> { buttonHeld = false state.buttons = state.buttons and ControllerState.BUTTON_TOUCHPAD.inv() state.stopTouch(it.stateId) } it.moveInsignificant -> triggerShortButtonPress(it) else -> state.stopTouch(it.stateId) } triggerStateChanged() } } MotionEvent.ACTION_MOVE -> { val changed = pointerTouches.entries.fold(false) { acc, it -> val index = event.findPointerIndex(it.key) if(index < 0) acc else { it.value.onMove(event.getX(event.actionIndex), event.getY(event.actionIndex)) acc || state.setTouchPos(it.value.stateId, touchX(event, index), touchY(event, index)) } } if(changed) triggerStateChanged() } } return true } private fun triggerShortButtonPress(touch: Touch) { shortPressingTouches = shortPressingTouches + listOf(touch) removeCallbacks(shortButtonPressLiftRunnable) state.buttons = state.buttons or ControllerState.BUTTON_TOUCHPAD postDelayed(shortButtonPressLiftRunnable, SHORT_BUTTON_PRESS_DURATION_MS) } private fun triggerStateChanged() { invalidate() stateSubject.onNext(state) } }chiaki-v2.2.0/android/app/src/main/java/com/metallic/chiaki/touchcontrols/Vector.kt000066400000000000000000000016071447035777400303230ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL package com.metallic.chiaki.touchcontrols import android.view.View import kotlin.math.sqrt data class Vector(val x: Float, val y: Float) { operator fun plus(o: Vector) = Vector(x + o.x, y + o.y) operator fun minus(o: Vector) = Vector(x - o.x, y - o.y) operator fun plus(s: Float) = Vector(x + s, y + s) operator fun minus(s: Float) = Vector(x - s, y - s) operator fun times(s: Float) = Vector(x * s, y * s) operator fun div(s: Float) = this * (1f / s) operator fun times(o: Vector) = Vector(x * o.x, y * o.y) operator fun div(o: Vector) = this * Vector(1.0f / o.x, 1.0f / o.y) val lengthSq get() = x*x + y*y val length get() = sqrt(lengthSq) val normalized get() = this / length } val View.locationOnScreen: Vector get() { val v = intArrayOf(0, 0) this.getLocationOnScreen(v) return Vector(v[0].toFloat(), v[1].toFloat()) }chiaki-v2.2.0/android/app/src/main/res/000077500000000000000000000000001447035777400176575ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/color/000077500000000000000000000000001447035777400207755ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/color/mage_text_input_box_stroke.xml000066400000000000000000000007201447035777400271510ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/color/stream_material_button_icon_tint.xml000066400000000000000000000003641447035777400303340ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/000077500000000000000000000000001447035777400214405ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/drawable/avd_add_to_close.xml000066400000000000000000000031421447035777400254330ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/avd_close_to_add.xml000066400000000000000000000031361447035777400254360ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_analog_stick_base.xml000066400000000000000000000011111447035777400273440ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_analog_stick_handle.xml000066400000000000000000000011111447035777400276650ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_box.xml000066400000000000000000000015501447035777400261060ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_box_pressed.xml000066400000000000000000000015501447035777400276330ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_cross.xml000066400000000000000000000013641447035777400264520ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_cross_pressed.xml000066400000000000000000000013641447035777400301770ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_home.xml000066400000000000000000000011671447035777400262520ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_home_pressed.xml000066400000000000000000000011671447035777400277770ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_l1.xml000066400000000000000000000013001447035777400256230ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_l1_pressed.xml000066400000000000000000000013001447035777400273500ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_l2.xml000066400000000000000000000026001447035777400256300ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_l2_pressed.xml000066400000000000000000000026001447035777400273550ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_l3.xml000066400000000000000000000031151447035777400256330ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_l3_pressed.xml000066400000000000000000000031151447035777400273600ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_moon.xml000066400000000000000000000016311447035777400262660ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_moon_pressed.xml000066400000000000000000000016311447035777400300130ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_options.xml000066400000000000000000000025561447035777400270200ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_options_pressed.xml000066400000000000000000000025561447035777400305450ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_pyramid.xml000066400000000000000000000012401447035777400267570ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_pyramid_pressed.xml000066400000000000000000000012401447035777400305040ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_r1.xml000066400000000000000000000024241447035777400256410ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_r1_pressed.xml000066400000000000000000000024241447035777400273660ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_r2.xml000066400000000000000000000036261447035777400256470ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_r2_pressed.xml000066400000000000000000000036261447035777400273740ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_r3.xml000066400000000000000000000042131447035777400256410ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_r3_pressed.xml000066400000000000000000000042131447035777400273660ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_share.xml000066400000000000000000000037161447035777400264260ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_button_share_pressed.xml000066400000000000000000000037161447035777400301530ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_dpad_idle.xml000066400000000000000000000026001447035777400256250ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_dpad_left.xml000066400000000000000000000026001447035777400256420ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_dpad_left_up.xml000066400000000000000000000026001447035777400263460ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_touchpad.xml000066400000000000000000000010101447035777400255210ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/control_touchpad_pressed.xml000066400000000000000000000010101447035777400272460ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_add.xml000066400000000000000000000005051447035777400233650ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_add_close.xml000066400000000000000000000015641447035777400245600ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_add_manual.xml000066400000000000000000000020211447035777400247150ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_bitrate.xml000066400000000000000000000015141447035777400242700ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_button_haptic.xml000066400000000000000000000013771447035777400255100ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_close.xml000066400000000000000000000006071447035777400237450ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_codec.xml000066400000000000000000000026211447035777400237130ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_console.xml000066400000000000000000000010211447035777400242710ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_console_ps5.xml000066400000000000000000000024031447035777400250650ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_console_ps5_ready.xml000066400000000000000000000030451447035777400262540ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_console_ps5_standby.xml000066400000000000000000000030451447035777400266140ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_console_ready.xml000066400000000000000000000014201447035777400254600ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_console_simple.xml000066400000000000000000000012631447035777400256520ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_console_standby.xml000066400000000000000000000014201447035777400260200ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_delete_row.xml000066400000000000000000000005631447035777400247720ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_discover_off.xml000066400000000000000000000012241447035777400253040ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_discover_on.xml000066400000000000000000000007001447035777400251440ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_discovered_on_secondary.xml000066400000000000000000000007421447035777400275320ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_display_normal.xml000066400000000000000000000006431447035777400256550ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_display_stretch.xml000066400000000000000000000006101447035777400260330ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_display_zoom.xml000066400000000000000000000011651447035777400253510ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_export.xml000066400000000000000000000007371447035777400241650ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_fps.xml000066400000000000000000000017561447035777400234360ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_gamepad.xml000066400000000000000000000011671447035777400242400ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_host.xml000066400000000000000000000012361447035777400236140ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_import.xml000066400000000000000000000007621447035777400241540ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_launcher_foreground.xml000066400000000000000000000037431447035777400266770ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_log.xml000066400000000000000000000007771447035777400234310ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_motion.xml000066400000000000000000000013271447035777400241450ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_overflow.xml000066400000000000000000000007451447035777400245060ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_pin.xml000066400000000000000000000011211447035777400234160ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_psn_id.xml000066400000000000000000000006371447035777400241170ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_regist_console.xml000066400000000000000000000021521447035777400256540ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_register.xml000066400000000000000000000010251447035777400244570ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_resolution.xml000066400000000000000000000011641447035777400250420ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_rumble.xml000066400000000000000000000007641447035777400241320ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_settings.xml000066400000000000000000000016131447035777400244760ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_share.xml000066400000000000000000000013211447035777400237340ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/ic_triangle.xml000066400000000000000000000010131447035777400244350ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/drawable/selector_add_fab.xml000066400000000000000000000012701447035777400254220ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/000077500000000000000000000000001447035777400211745ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/layout/activity_edit_manual.xml000066400000000000000000000102071447035777400261140ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/activity_main.xml000066400000000000000000000161261447035777400245640ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/activity_regist.xml000066400000000000000000000244711447035777400251370ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/activity_regist_execute.xml000066400000000000000000000051561447035777400266600ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/activity_settings.xml000066400000000000000000000025731447035777400255010ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/activity_stream.xml000066400000000000000000000126361447035777400251350ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/dialog_login_pin.xml000066400000000000000000000007561447035777400252230ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/dropdown_menu_popup_item.xml000066400000000000000000000005111447035777400270340ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/fragment_controls.xml000066400000000000000000000265001447035777400254470ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/fragment_settings_logs.xml000066400000000000000000000035601447035777400264710ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/fragment_settings_registered_hosts.xml000066400000000000000000000044711447035777400311040ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/fragment_touchpad_only.xml000066400000000000000000000024321447035777400264520ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/item_display_host.xml000066400000000000000000000111521447035777400254360ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/item_log_file.xml000066400000000000000000000057161447035777400245250ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/layout/item_registered_host.xml000066400000000000000000000043301447035777400261260ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/menu/000077500000000000000000000000001447035777400206235ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/menu/display_host.xml000066400000000000000000000005731447035777400240540ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/menu/main.xml000066400000000000000000000010711447035777400222700ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/mipmap-anydpi-v26/000077500000000000000000000000001447035777400230375ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml000066400000000000000000000004131447035777400260330ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml000066400000000000000000000004131447035777400272420ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/mipmap-hdpi/000077500000000000000000000000001447035777400220645ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/mipmap-hdpi/ic_launcher.png000066400000000000000000000030331447035777400250450ustar00rootroot00000000000000‰PNG  IHDRHHUí³GâIDATxÚíœ LÕUÇ/„[pïåaÈ{%’( ¹¢"ÆKÞO³²`.k̹4í,Ö–Qæ”eùÈ .=›@Úû±”{±P^5ך³­-qX0r¦^ì×ù¹ .¢Üÿ®ÿ?çlßýÿ÷þÏùÝóýð;ÿÿáÿR©DEQD‘w!R9Iå¤$ÁÓxÁqTðÞqÜtkV;¹né íë?’vG;i_““Ðgôýº×,›!™¶’Ö“6¶ÿ«%¨íšü5èÅhì×zJ‚4t|²@ Ø: 5)IðÔÔ¯id-=ß²`'†å‰ËÚ3%dŽE™š/iéàOš‡z¶Ãñ‹Ú2¥b2µ\ÕÒ¡ÓšÝð*ccŸæm³P‹É•Žöy¡ç.úá’Ûmˆ5Ë Óê÷àU 'c¦\ ùüŒ7m­›C”,¦Å+–QTV*Ef¤‘.7…RO â=‘ôÎñ{¨‘³WPm—ú}îU C¦ÂZ@ŸþêC«Kch^j:ùDæQ`l6Eç¤RÜCÉ_D‹¬Ðä òŸGw/Ì¡øÂDzù@.L·  º.õ’ÕŸ×è­ô¦a…§¥“t.Å>LÏU†Su{îö¤¦¿Ý©ù²5ôzpˆ{¾ ¢•›binb&‡PúÆ™“¨¦Sýá¤ÚR3—ÂRÒisU(íΡԜò£ÍÕ¡´¶,š{)†6¾I{ëgÑásžt‚;ô‹/ÿ~&Ë´5ÛtÊ}qÖ›N^qåÙ”¼:g†²Ê_—K~ì³wD>…$eкóéË®–«®TÝ`—!6é€ ?$€Y^GÛÍ¡ªÖžMå lÅwØ^áùJûÛì¶“¶ VŸŠ^YÀ`ýFu0üž~+‚"ÒÓ¨îg¿©jþÇm´]þÀdCëX¿‡Uà-cÈ¥>;ãÃçB I?œ£-b –¢!Sж.àûœÙMJ  Ú"b!¦b}ù›-Íâæ.O!ãŸÖgÚ -b b*þíØ°3Š3kû'ÁÔfM±ºh34b"¶ì}óû >yj³fköE¨‹6Cc &bÛÐán­%6ÞMXJѦòðaÆ Lw4樋6–q[j¿˜L˜Ðè(±4‘Ê^»H‰^~qœ Kk•ûäRšŸ5˜9ÆÇ2ÍBlü†”¾åodžžZBËVÍç€=•Ðu@ž!™ztdFxžéF”·˜§yùäqo4èY€ hj Ž)¤¼ìgéþœÊÎ|†u+G­‹m¨ƒºhƒ¶Š´"·„.VÿA×j.йwÏPBòúQëbê .Ú ­$ @$ÙPxìjZWXFV½JkÞÊÝ7™ð:¨‹6h+&Šb&-)Ðx0»•rÖ/¥ ¸ìQM`êLÄoÛtÂl8!óÿÃ;[Ÿ„ëõò„”a_(¿raÝÆk^ÊÄïöèw§´¢x.¬+þî):xÚ—kJÜþ"‡û¤ H€ h 2œ·þY ¹ªë´áY Cr3Èü8TÍ)2èH·f—Ò¨Û×좗 ¨ê{õ£æ`m ‚3pý‘̦~ mßïò¼V´ª¦YûPïL¾_Õ´#ƒR€àž>jSw2ðjõ‹jk9 ÷ûrj»Ô½:y… 7“¼…au¬OCÕ-ê®%™NÉðXZjÅð~î^u'[ø1EmÚåòüÞ¯÷W6¸Ô×;×éÎU…aøºåç±Ö™ˆ˜XVëÐwx€x‚·ØX•³-/_pÐéT.léÃ4›)ŒižÌ6èÅ;"B¥†G›ßqÁ M‹JT¹ëTžA*/9 àž&â}  ‘(¢ˆ"Š,Ê®Ëeðªî2FIEND®B`‚chiaki-v2.2.0/android/app/src/main/res/mipmap-hdpi/ic_launcher_round.png000066400000000000000000000065411447035777400262630ustar00rootroot00000000000000‰PNG  IHDRHHUí³G (IDATxÚí\ TUe>*÷Þs./ï‡âEH QDP Ò^6e>èe¦S¶´å̳¬™^VÖd3š•9.)ÇLÅ|&â AɬU“ùêåcÐ1îeÏÿý÷: p9W”ÎZ{{Ïù÷þ÷þÎÞûœÿ?‚p "¡‹L]› ~_è,Œ- ¡Û§$8áÜR>5Ï <ÆáÜØýC$¸”‘d:Hº 2r Ù~K&Ük‹ÌëâPžºúZ I=>#1µœ¤§-e´“ÑaFûk ÷×J—mÄWÈ÷vÊeg‚2Ô2[ë×üŸl]$ƒÏ~’&1ú˜yŠN }ÖÖ‘ÂŒVC&d«Ã·áép£vyf@"3ämFgÕ ì·JÖ2‹d±ÿ–ýÉŠkŒj÷PF)ëjÀ u .uøu8R?¹rSÊɸ‰)®öÅ@kk=ç O’†Ìú`¡N1¥1®iV¼æ¹õb | ¦áSoo‚l,µW}]êçð£Œçß¼Æøøg$]â¡$+­%0M¥ÔÉ@ª†NéêPpÊÈÃm_­´Vå15 •/ýÕHE?{ЖÓ=hûy*«1j –¢ƒœ÷ÖAG‡‚¤Tt€Ähö¤ŽA(¥ä—]Ýiõ·¾ô÷"èž§Qòøºùö៛F‰co¡Ôû’iÒ¼8zi]8­ÿÞ›v_rÓ£¬* Ž•]6ôsHJâÛWcL‡+à(žò^i›™HÉäÝ/çª="îûK<çcr´ó&«T½ëã(M“·‚~©E‹D¬$aœ×õ¡ñs(xÐhnxTê(Êž:„ž^b¦wö3ò¡M'L´ê_úWqÍx#–2JaC2É'&‡ãÆÐ]³n¦¨H¶$Î@Ñ9ñNM<©.çÔ¸lèOïõ%¿›²)tp=úrZ~ €‡ÂgÛYOž64ñsÑ9*©v£ܹçLy6Ž{€êŸ9‚Þݤ HÜÛk$ÚzÚ˜Ù® ).Yz™çœê†à€–í¤[§¦÷÷Ù<Éx~a8Ý={Ï?½“3)8a4E¦dÐлRiâ_ãè­¡TrÙÈdiåW~”3-‰òž¨eòæ í½,V¯;j¸©]ÂMéCì!O#’œs,)°ównð+ëÃ)éŽ[(ˆ… ¼"4)‹nbžŸ“F±#©' C\`铇Ñ‚{YþÚÉÊ)<à‡ÍZ²¨ÌÓ:Ïð@>@î!7‡x›³Ïk Ppÿ±Tüüºðþœ¾VNñÃ&7˃û(§ð€r´(«Rò‰¼ )4!‚¨²Ö¦™‡a{_ÞKÖœ½ù%% ›Ò,Â~m‚Í óè*C`tÌ•õŠ‹ü  sì¹LJ²B•Z‡XǨ.Ä.ˆ¾æ¾*€l­ºØ  S¿”yÚÕ=$D=ÜPÆ’—YÛf¾C¤4ó‘éGž ¼ÌY;´ì(vh€”ŽbäðŒÛÕEe¨¡3õÍX¦%@þ¬O3ë×hÁôeœžÉ[H}Æ7˃û(§ð€ßÿ*}'»†½S>ꡆ2XíÞ#2mN笲Ñ|hÒ³|¨ÑÈ`ÕÉ#tp– Pç¢hšxr ˆ½XÔÈk]]Ýýz²ñØOoÂ,‡'èQé']$SÍ ·<Øs3Ee¬é„#z[þ OÞˆQWCï±u‰òùEý]OöžÆçjô³Ú3'ÝzäÅ|ñBsÊã>Êi©ÇŒ×c¬Sç÷£Ì‰!³€A^Þ@çFwâ°“sÚÝ£Jª¤ÓíñÚ§%ôÌò(ò•_,6$\Ç}Mu°Ø^ûløA¬ˆጅUÎMî(Ê/àEž2,ml%™„%·ýq0_+Tj$‡_Ç}u°”þ*Ñâmº`»ŒA³¯žõ³_q &ea¸Ö ­üÚ‡ÖÁˆÿ¸®±÷ðWÏÛΈôàœîca{þ§WYÀñߣå»þ¸¸ÅQ^¤,UÞ£áŒÿXmÆm[Zª/f6ûɶ7ÈJ³èÆ•T;΋° 9Îøïï©é¡g\ÿ›óÞjáÊ×” ‚+;ù¯üR\ûö. j)­8À|âìˆexH#‹¶éñ6Õ_¶¹…+Ì x.’FÝí4¤è¬T){‘æ-Zi‘¯¥.Õx?‡Òr+“³Rak~~+×)NÈçˆú¾´JŸUX $‹ƒZj·¥øœHùK\Ÿƒãf°ÁiŽ.‘I^„|®ßw„[ÞàðÐZ\¤ÛÂl “mlÛNjÙí<¼„ØÂ£âᦶ<]/Äw%±tñáAÓŸ0¶ååÙ¹%aLž g'Ÿìû»em>)V"vÕô·w“Ý×/dÞÙ-6ɶÙdŒç3lÍÓOÜö?Ñz½¤€Ã†Ö¼9ú™-A²Míö‘‚.)¹l”+!3çëÛrÊÏI–ŽsV 8SçéfÀ†!Y‚G{‚£]û á‚CÎ×Oþä{ñ¼¼£¯c‚$'d䜵GÄÊI³¹ç„šù„¼f}»& ðåƒ^Y÷ºd¯úÊp½íòZÖG²hßOjU?‡é„ý GFë~+t–u×|t×ÄtþzêBüÛÅúÛIrµ×ÔÍC :½µE·Yg «¬³Ã¶ˆw˜&`7q£èüÅâ¼Âcâ9<±k” è°î¨xnÎBÃߘnØÌ ëêð¯Æt8PЛz Xô‘˜ê’¾p“~íÖÓ"ßú(eÑ4ôäOWðº,Øn)Ò›ôëâS\°7ºAÇkŽúpê“Àc;˜‘ùþ®,Ùa(BKÇóq²Öeg×bû4d*ƒºPç=3\'Aè"ëÔa>v½ɻ—€¯±„2йýA×{_+Ô¬9l8¹ãüo^%ºÂR÷=€V#'y5ÕØ>nR÷”Z›§ð>X ¶9ˆÙ¨ã¶)|ºKVB¡CG𚦎nუvÊfvM}jëŸmÓoX}Èðfï°yDÛÕÖ¡™FÙÝEl ¿5ü°¸Hÿ dB¶ì1¡¨uC‡ëá3BÝ0ìÍ=*ˆVlõ êå4ôÞ'\'Ï}G÷Â?6êV.ß§ßͺ ߬;jøiãâ™Í§Äó ü.ÉC`ËBÈ/:‡‹ ¾‰ƒ7Iò!˜rÃз‡¯³ŸÃ›P<‡1NßNœf‘pŽÆÙž±ë £œzp:Æ>à©Ý0£€ÄÃ20É ¡8ûEHŒ³«cãÆâ ï[àÀßÌÓ“ºË§rÉ\S =ñd{Ïë­¡)%t¥ï¼ „œd±ŸèÊ“¹Š è\T6:Å"rœùõfÖ<ÚˆûŸ½®MnÔ57¡þáF<³£‡.ЧOÀ­#-Žü°\ ݰ£kØ‚ÞóF ¶›·ï}^ ßóN4<áR§Ûù© ü(Ø›ÖÂæ~¶†µüx°õíj|yÉ€‘¥iý ¥UaSk^鲣ﻜº’/nï_¦']x§Ï*ILîÈü§’±àèOá÷È”^2–â(^5èmä|¬/u:d‘¢8Ч´¸C2žüGñ”GùiÐ6ðgãË{ÍeƒÅÑÏ£3XÌ‘•«•ÃR»N D¨å¿{NÜ&KíäOÄRåK]_à,Fûñ¢ØÖ¶G2×Ôâv ›³Ì\íšù!6Wù8ÁJÀXåû›¡àN?ø|ñx¾üÉñ”/Ù‡ÀÁÓªcù¥«É\Å”8Ën©ðG…ìÍ\rgŠ@àÐ ƒÃË·dHüê!¬¬{ÖÚ(˜æ£:µ“ŸâT) Å· ±Àøf÷×°T=’â£:µ“ŸâT)`ÃúVpÇñ}ÇQÔN~ŠËÈA•ó)¼¸ežÛ°ÆÊõ©ï{¾Ní䧸Ìk4]_b1˜ø/®Sõܯ%ûK<ß¹v+AדBžêÔ>×kÉž ýÛÍôÕÖû_”Âô×<‰,Õç³>^°Ùt ñÓäÛîšeÚ¬:„ã—–áž–FÁªrQ/Áß–¨wWb¡·3þ7änî.´Y›»û‚̦Öxm^ÅŒ‡oÊ)¾ÆÆ…•p„Áp2¢›xaÇâ’™w%þ9bZ|ø[]ÏÈ5J$!d•@¢ïá« Ý¡Üyn9rÎȲ*×híûGt‡û/ë"ƒQvåd„ÅÈ.$}öë"³¹}õZúûdÉ=©Ìá±¢þ¾ì&ÿÓ‹¼ë6g)êûnO¶‡¸Ìz÷§‹hiÑhùŸy<ô #¸Ìëà–Žæ&%1ã›)*)ÞÂBíFÛ¶IEND®B`‚chiaki-v2.2.0/android/app/src/main/res/mipmap-mdpi/ic_launcher_round.png000066400000000000000000000041201447035777400262570ustar00rootroot00000000000000‰PNG  IHDR00Wù‡IDATxÚÕZ PTu_ 1vß[@]À#9WT$åÐÑñÄÀµÃ1Ç©ÔJI»Æ‘;<²ìPÇÔ1µÌ22@Y×hF5«é3Q±Ù·_ÿßßç,ìÛ]BÙ™oöí{ßñûþßñ?Þêt^~ˆt>ÛIw«…tðíŠ_Í YÝú0ã·‘Î×Ù³cd,¤ïZE‘ \ãž3^耮 ücͰ’¸Öj‹Hâ)FÕ캄kÜÃ3ð€2mîB¯e+§± {°ZFÄ@j&ÈpY¦£ŠB Îl´æ¨û(ùk+ ³,’xB Ú*‰v«M”4ãU;Ãu1JMÈÑhúPf“ÚÅr8"Ylb¾ÝýædÚÄrØpfÛkðGɘˀÛ`¨òŠQ*>ßÉVðS0½{0œÖFÒ–£=hß™.Tz9Üu†9bSqØ0æzí„ZÐ*ßÁ¨W6é“ã¡ ³W$ÚÓr2¨û€ñÔ-ñn Oɤà„,Š:†2B/ïèEÌAw#bGD”ß•Wĵ;¡îVIÈxŒÐ‹Ûb¥¸ôÑtçÔa4ge"m( §¯~1Ñi×ézåÓXš¸ •úŽIɆÓûanGC®Êza ƒàã–êâ±ØŒk8xYiÑ_èͯ£hϯ&Ê·ö ¹¯÷§ ¹i”9gÝ÷l2-ý8Ž;„góßîËs×¥>`×¥µâ:Å M…­ôx‹dœ§ŒüõE:q~…'gÒ‰©O§Ð‹QÖÜÁd>šâÒÇÐÚâH€_ïk’¥A¤âq¾›Ë>ÏŠtR°ÊH¨iÅ1´jw4žíLeÿÐÁÚ@NŸJ³–  %›{»X^ -Ø ®m{ÓZœ'Ôyϼ.—»Cƒ+#û/±ÜïÕø…®e„!Y Šc(¹ fÐn¹k“Ô©¼"<¢J»++ b(~Øhú¨ª»æô/d «¥;!•XW¢¯sšJŠGê¦g£BéÍ®”WÔiÄŒ¡Ò/‹f¾x‡¦´x!YèÐ4OØyN®ÞÝÉØ$ ŠG¥—Ó”Ñ×2’…S÷¤ñ|ˆ¹k,üâR<à… d¡C‹-DÕü μ& êÖTQ'ìÕšû.Qö¼ÁˆB(à–jÏÀ£–èÒZ …Õ†}ªZðÑåääð bâÜä˜É‹RkÑ”E)¾["´M´R5ÌÄh±ÍÉàxÔ2Ð]®ìÓ”'™Ž'’kGMïgfö¤‡y[2Å›œMÁ}²ìj7ÙM}î¦ÎÑÃçð”áØå˜Ì™ë9“9[ºi¶>YÔ9nä{|v–±ããc2?Ð.H€£1ÌW[©Éœ.°ÐœjdS—ÞcO„%5:Ð96£; ÍOé›M §¯¢ƒËKißKE–8© îáxÀ O0õάŒH‰ht :#ŠE༧„20«s7“´í]üðWŠLšÜ„÷ð <à õÂ.æÌ1"5®ÑcÏ»bÚ›BØ@s£A=‡„±ªn/˜ÌãÎÜžu5…‚LfÏ‹¸Í#7ö´ D«×sMæ±=.bF#§Ù÷¾BMYJÝúMhƒ{xð†xÓFãG–3ÌzôôtôS_Ö[7µ—‰,(fØf†¹ƒ»c)áÃZécœ K‰›q9áÀÄ—"Óð™Ø•Å\ê˜èÄÉ “/j]Ì5G“¤RÏÁãšÀ=<óTïdy1wOî KG¤8’‡E@µœŠÎ …Z—ÓÍ.™¯iîýùyQcþ³kÜÃ3Oõ*˜>;aؾsÍV@Þøn(ñüˆM>çÔ°lvŸ\DÃÚè®qÏãS ÛV’h¯øW¤×vú#}|¯ÙV*Û³>u·—Ôˆ'µn)[¢Mea|íµ7º”-垟…SqýuN7ö²G·­/Ô?ƒ³&àU°÷·º'-{å7õòè¯Ú©_ŒNχTuÝû»hñ¶N9y9úrî V†­?fÜÞÌ1£ìYÇ«ü²Ë. õ›·©ä U6ˆ66úTr^¨Ÿýœ_°­³¸x";øÖnýÒŠ:‘¾#6÷Ïÿ½&f¶ËþhÅÿWÉåÑ¢Òšrrxˆº}PfÈÇQS$µ©ðp}‘ÿV`&Íomäz@¨"ó+ »äHð¶UÚÀæ{‡ô CO`i6ï]¼àèÈ(jÃÿ-åÿ8œàEeó¼;µÔë¡66ë ùÈGC^‘†Ôqö‘áDÄʆWKj„:~JFòÛ”Öpä*p®«øœP·|«alz^Nf³Îy8ã)¿{w~§· èP*G$wæ Îks¼äƒè‚ÎOë-ÓùÝ[°évÚ´TØyÛ¹8 ˆù#áù/4œD¨åˆ8HrýŠ< ?d¡º^Ê^`º{Ãlý/C{0R*4ФKÌÛ f[•aÑŸÂŒ fpùMãU§dR^Í‚³jñ9ñ¶o û¡º SSŸohÈFü…0ê5jê­ã^x_¿xc‰aëŽã†r¬Y « ŸÎp½çáÔÎï åà/d˜lœ¬Ã:óònÌ&àŒQ‚‹ïÒU—4p˜ïÐŒlß‘ \ãžÉ ´ÌÁŠ$X¡f¼¾Rj‚¯À—Ó Xëßg`sdn?ƒ×UpP[¢*×]æ†^óHrÂøš ŽŽWÀ~AˆÙ¹ Èg*d*нZ’ôëœ^ 'è¡W’·|V‘†Uxƒ r*]NÒ ýÈ­PÜ8_$ö´'èi^(´oË*¹‰å”+žg•)JYÅe$Ezž 7Š·6ý :KÖôI²Jí?Æ–Ï*+a•UP«¡TzR’ùLn+–I@¿{•vH°Ë*s‘0PF†—Þ›£÷ä×’¦¢¡‡fµþïn´R³Ä9é2E9™]C/`Þà(qò¾øhñ6[Ù½@W¸ÅÖóbÖÅŠ€iN?P/Üкz'€–éÇå> àr©=œ/v„ï·…ã;ÁÞ›®pø/g8ý¨-œ-l—žÛ7;§òÅ¢¹ŸË‚Ñ;)X¥í—ûI €•Üô5'¼`â'A>²¨ûÄ€‹ï0hïS)·žq ÉïjaQFWa5‹¯(ž“&Ó¢wMÀÑ»ÎðÎÊÐD ª2ÛuÔÆ@ò-lÎôà @…CÌôUþà©­2U}GEBÊÒ Xyж^vgCPØyUëN©aæ:_:9Ô!1UeTq75ŒUÀD¡±}ûƒ«_<7±sĘ´8v_Sò¡(«´æ²Ÿ:ðmBê¦ÂrðaŠÉ;|(¤Ÿñ$¦è›_]¡Gô ðŽ…Ñô†ý·]øxŽÚwËV°Ö?ùÓ@HšCÞ ‡„¡0~~/X¸«+lËq«„ĆSÚÁüíž+bt$œù§ ¨ „Õǽ ó™7~ÓEHœÝú Wÿxãc?ké^lã96Vè¤ë-ö|øÙqEECP}têa[˜¸¨'ßëA“]ذԕAc{BØòÇ| ‰¬'ôŸ~ƒòí„~¯èT-»çD{AæüÈÅ_uÑ? ‚¢`îæî¼E_xâPm~€c?¶ü~ã" C؆³žÀÜ:v^0¼½,NÜ7­5Ÿ)hS?ó‡aÓCiЇ"pC»÷óìá¶#ÓŒY1æÜÒÀsˆfàd~;о[/¹Kžsbn¬ƒÔ y_jøö!~šôC æÄÜXxIëç³Ý 8Øó‹R²Ü˜ sbî†ìÍîégʨQï÷–äàæÀ\ú¼XÖE „‡žqfk8 sïËgÌææÆ˜Ë07Ö…uðP„20®ÚL8eI\*©/À²˜ãżXÖI˜Î9BÔ›FEà·CwœëËbc¹±N¬Ûâ¬=éUmˆ0ÔŒ4¿zm ° –­)/Ö‰u7iIIÀðij¿9é>E³7øÀìôîåüU"…%÷{é1ÝúæFÖ5/–Á²/ËuK¹.èÍœ>0}¥¦82YÅè<¬/JŽê`¿ö> Eü‡wO(¯Ë?Y%îM8i†Û«|9‡€@  yðî9|ûŒ¯R·ÞcÀÅ7¡Ör¸ .kXs€:È…­ÄÒ)_Àïë¯WißGGÀ# ©Ö²¸ .kXsaN`*ÖŠ7ÎÊ€òÝ«tqùEð |½Ö²¸ .kXs™Ò{ €@€ÅϤ¬‡+«²«´=õ[¶ŸhÂ< ‘/kXsÑ<€E@ Më´S5iItÔÆšp=q,_öUüFÉOKiìÓÓ_&¼@¯-« .ƒËÒ2 <ÕP »1áwæœÊHLPÚqã§2âgø]#ÖÀÂ+ç',èU ~†ß€FБÄí\¡;²åw“§ÙŽF¯Bãz'HÖÊ΂{õÖF¶°b¯lÇ®ÜÖ¿úC,8š'r,O^Œ¯–$ý:þS,D/–í‘í êk7=rõðAn’>SIÚ¹w”X“o{¥uè ¶#†O6N–l‰ŠgëŽ8+­ÃÐôFç‘”­_¸GÔª½ZpqpÔì}'¦nL zÐ =AoÐ#W H7Êr•Jhçì)¸:u:8¹ J‹[wô½@OtÞ´!ZðS¯+Ç9 —µÎ‹F1ž‚‚‚‚‚‚‚âÿÿçâV3ÚÊofIEND®B`‚chiaki-v2.2.0/android/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png000066400000000000000000000113471447035777400264530ustar00rootroot00000000000000‰PNG  IHDR``â˜w8®IDATxÚí] tTÕù ÙfæM’I2IÈFöm’!‘@ÖÈRÛTñÚ¢rÚ*VÚÚSÍ¿n¡F”P©D ‰€@€©r( Jd ‚uI&sÿ÷wç¾ð’Ì “d†™„É93¼yïûîý}÷[îwß»O\®¿ý"¸Qr­%ÂK$‡k\Èõp÷:"x€jOùàZ‰xºµ0ÂÖA"xZü S&bpñt˜¨“>!¢„ïÆcb0α¤I†ËBd#´3GˆàÕHÄ îí”f"êeMD]K??¥tšÒeJßSú¾_n"¾_ã~î2\ àž•Þ[ 볦:ÞD”a¬;(x‹ßCÀk”H“á:5¶YOò댼|›ÀÛ(Cfj Ü#^üQ¤n"â/qéœp˜zJ­2ÂÿõMmê69IÇMœÛE)FYâ*ÈF̵¯ßÿâKGd☠Ðåº3êMZåÑIA•q mA›ú"$?{=ˆúÅÑQ÷2íts;ðF[lx7Ò"ÉãŠhFÛÐF¹«ì³ÁZ<]:Êž¦¼"/¹‹›º%eÈ]WÄ´m6Õ—>1ê‘ê]®â´S'dÀwñÍNBRüq‚fUS®[¯àéôÖ ÍTñýS¢ ¡X#¾…›>qf’ܾ³¶Ó> /RlpÚ ùÝ CÈÂÚ²áDùø{Gƈ)c:Ø*>A»èæTqAjFmðr | v‡QàŸY—DŠÈ'±yIpzù )$£œ¤Ÿ@*ÿ|YTC~öuˆ"¤¾ _ZÔ+ªêŒ}v¸¤`‹ÉL£Aü€}bÄ_óE(yðÅ!dPÎä.G ŸLGüXj…¤dÆ(2áþ|’W³†°¡e]·…ÌY®#u—Q%ìo·m?¡ñ“cà°‘ˆøû2¨÷qßžVîúNCþou É*KBÁÄgRA )}p$©Z•BV'[NkIíù@²óІYɇç‚È{_†¥{£È_^M'£¦Q‹™Ô®„ð¡¥d̽äõ݃Ⱦý’¶2KøYݰõ´o€C,A¸ûBš6f/À—»œígƒÈ]åÁ×GqÊèb2ó¥L²æ?áä@«õ†ÿmW4¹{v³‰ÜØâ¢æ’ „}?¨÷-­ó÷¿©J2æó âÖÎ೬¦Õ—{ÿ'’šcªi6±) l¿¬ñ£&öw=6/%#×Ͻ} ™Yiwweú’äŠê/©OÌÛ¤êuPæ»ÑÑÿwîzìRÇþÝDæã‘½ûy¨ÝÀoÈ€,È´KP6¨õ ?Q·y\5ØõXÒ…»®øÅR¦—YÖ£·}=sƒq¿-hOIY8Øn oÈ€,È„l›+€b„ÁZIl~í#1JÅ»žø~·ý-bµ=G?s$ÍŽ¤5¹°˜ì¾f{÷žà-ÉLȶ×ê¬`ãqå"`ØíX ]PwÖ'šŽü‹öýHEQ~è<ñzœÎ¤²…-¼À³³ÈÞk‡‚°b±à¢xéåM^ÉÀrñÁnÌ $ß¿ïG¾¸b§¥ÄEõÑ&ËÔ#ï,"œÑÚLxgg96Ø£o·6LÎÖQ>Û­X Õ2Ö "etÄž™OÅÌ<“u ÐÁålñÆV²À ¬:8PÀÃzʪ*+Ÿ+}€Ý:¼|¿ê9fJ7iSU«\Ñ–x6´ëƒ8†ßœbÓ?ãèoÛuE$s×)KŽ©uÜ ùNžæ9|÷Uñœ½Òëéƒ}·ÏÑÁá;Žíu×#{TuÃçªóùeùÀ²ä!+Ü|RVX)ˆô3lU£rö@8äD{~b»ì'ßKÎÜ6޾ØÂ&½Xãó&0äXvoß®1ͤ»=Fì¼"~ëLV7óÜú$–ëƒðÝYö•FÍ1Õ…‚2"`Xx¯àÓ“‡åÝ’òP:"–ìTÍǃÇÎd;¿Ó°ýƒ@øîL£g³Hþ±Úç_ÀŽcس]SèÄ ± $RHûà´xÔYæa:Sí?M•°¦QùEØ ¯«rKVWÆ4^õº÷ï?¾&{>¸Ý§‰»žígDòðóÞf9%‚oG¿ìÏ#"‚-£Å­Ü¯\W„A\ w™õê1@_ޤج8f6Ù5Ë-«”å°¡‰™žÙ›O©Nòr« |5iÇ‚~®jRŠO÷¸ Xé {ùXøsO)à…Q=çsïŽ b«3eEÎõl>©jýÍ_½g#Ž•ÍwOôŒË‚Qµž÷oÕ\Dú[>pð?<'’'ßPTŽ‘]ö“v£~M¡R ¸¯%yñÅL60åÆÔûŸ•ê/‰dÞ;ŠõÀØ„…1wm·7m¸ÇdzȎ¥µôå{•Ûö|/ƒò­¤=Û5W¿û;‘,ܪØA±È&»¿ac@Tº1xz ™oPî¹¥” O­ÿÕZeÅ XpLnÊ›5ØÓ”ñC-ýŒV*…¬û”{%wÔ¯c‚Ñç·aä/®UîW(„áÀ€cáaO×cò pb( YR¯ÜÞ˜õ,.ô¯<ÿúf|ä•ÍÌíà6óYнéoX‚@¯˜4oÂ[è¿ü¾bmí·F%H¹qÉóY¶sV$/¬c[Äò¾{9üJg&KHj™bÞ–SªlT_É\’¾oÜ|Õw6WµÌ^ÄRÍtô•÷Ù¡àwpGááB ŸS‚núcÊûV7©NÂWöIkzôaeƒòËi³Ø$K‡>¢¯Žr;• Ñ~¡Ñv†J‰Jô¹à=EͶoD¼yˆ•iÙÚ²Þ¹GÑV|ßzšæøë#تV úæï/ø;ør% S…Å ‘ô3ùñžVÌZuPu´þ¢h|E íÒ§J-d <ÐÒ¶®hP›Q¥ø3ÏñxŸT¼NýJCLD|‚c„¿`o&Mõ ðÌ}j¹â•uŸ)Ï!Sâïj4ðú¹cb÷ñhÚై¾öSå¹'ßðùÚŒ¶£è »«Yè;綾nôU‡Å QÜÒ‡Žòž0wr)UÄYŒ2¶Öl|G+wO»*úïrÎ|<Ž!µD›ž[­\6$Ï»„ÚÞvµ³ºk]’Oh¨  ÄtL:-Ç{|ÕŠ—V4( Fð™4SsmF7Å3(®»@] çž’‹‘öùGZ‰6T-Q,Ðe{sw“„¶¢Í|Ôè‹àw™9à !Q‰lÎE¤{zz¿¶âáêÅ»oV}@°¨!YF;x:HÝF¯DLIzcp—ˆ½Û` ¤rPyÊÚêS Ù´ 9|Ä'¡mh#÷õ}xS±Á“)‚úTž-Á5é(ƒ%y͘£˜5obåò=ÊÆšcâ…Ús"[àÆhÝÿsûÊSGåȈ½@TÏÞ÷È^ªŸ^{^lÛø…x~ù^e#xCdA&d£ h ÷ó*Ë÷ï÷/E(‘O„ 4·–¬" ÀPÊÎï]:ý1ÅÃO¾®˜ÿâÅÛ¯Õ)êÞ: :ôÎgâñš£Êo6ŸP}»å+ñ"ßkŽ©¾Áo«è9¯×+êª7*ÖP×2ÿ¾Ç3Á <9èØ­$ 2!›çôÊ[xs1‚=“Ÿ‹ ‡{R±°ú:+ƒ—I) îb`¤G~Ê0ïqÙ£½KG•z•ƒðÇèo£p?7“ûô4Î+¼!ƒûw‘ËÐß\MOáÎ}.QÑÑ©ÑF ¡È½á¸…Äq—•Ä¥È(™ÿ†sâp ®ðOîb¼¹,÷[xk‚Z‹Àa–; „ øk€*'Ão8çr°œ‡ ð^*DRŠ;w8¨r’Ž»ËÀvzÀÿ½©gQó“vŽIEND®B`‚chiaki-v2.2.0/android/app/src/main/res/mipmap-xxhdpi/000077500000000000000000000000001447035777400224445ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/mipmap-xxhdpi/ic_launcher.png000066400000000000000000000062001447035777400254240ustar00rootroot00000000000000‰PNG  IHDRçF⸠GIDATxÚí TTçÇŸ ³²‰€¸²ŽŠ ‚ ‚‘­[ŒV¢µMb5&mj䘪9zK[=ÕDÛº«Q[”ˆ[TTÐ.ǘZ5Ѩ±µÍrܹýîóM Ì€€òÞÌø¿çüÏ;óÞwgþ¿¹ß}ËÌ“$@ @ @ Ѩ ’Zµ,&©¤ØöÂa )%É…“ÆGÈî¼i©xcŸ0qrµ»ÿ•<Úÿ™¼:Ÿ&ïNúâ÷ž=`/êóJóàRiIì4'íº tKèÐ}H=P<¸ x2ÁÅ3»§‚ )gÈø™H’,ª¨‚ìEOØ£“fCª]@dI ¼ÒsL5hÌå抇ƇBU]è!{ÂbÄ’ã9^Sˆ,¥i®ÏN²kñ´FÇïiûE}¦&=‘¥“_yJr=]e<x"^î»j8_0]ò¨î©šÕ§Åñ»Æ‰Õ¦-ã@¾™}c  †WØK.ªS‹V啯ÝÊœ €Lü¡?qßH[ÎêK…—.ÅÅ*õBJ©k1kµd‰\’+У& Æ8@¼“#öζ×_É~IògOU™Æ,ÕgÝq·®U†Ûòn¢èôaŠÃTÅþÝ—uwf/uaOU©BE¥rÿã²æˆ!’Ë rPU>èã¯ôæŸ-÷H`O WªÐ)¹.Û©â=/äØí¹¢7¿¶È#‘=U e·…ÅúX{è¤Ù 4 )s=’ØÓ‚"©µj-Ø ‹³€>ù§/­ú´#Íþ]݇ML¡ø!ƒ(2}0EEfdQßé4djš<ßD ¶t§u§CèÓ[ÞH¨°È#ù™hïu?zWñÓ~•Iú ¥€¨¼©mL…& ¡^¹4y‰>8Öï €TÈ]m€NUiëù@úñâ8Š:ˆÚÅå6šúÔ1a(¥ŽM¥_÷ ’¯ýže€Ü g×åšö~…§ ¶]U¢ó(,9‡ârрѩôÜ«I4þí>4~NóV‚<}õ+H£¨Ì,[یɥÄçÓd~Û9@Go{Ó¢mÝäŠcexl.õHLy¯$ÑÜ=hý™`Úÿ/_8[Û*»ïI»¯øËSÖÌQ”2&•:÷bµ]®lY“кŠçn ÒûÐ8QE‚â‡YÜ{x:Í^I;¿¨˜†ì¡­Í47Ö݈ÜU‡+ÚœuÈQâj›YcšŠßý¨»ãesª;ñÀ“Žßõ¢}¢ÉÞüY;íÚÒþ›>TvÏKþ¹ àö^ó—§ÈФœå‹&9ð6sE´ldH¯a²ÁG¾·îMxwü×û;Ó”…ñ”"úŸ`Ó0›=N¨˜®Ò'¤Ð«ËbäéÎVåâ&}Ø´dÖ‚×Ñ9:@lòü?u—óÔ6|ï5?zmy E¤gÉ pcö¼x웟F‹¶[W³£âñ’Üÿ ä³²V[ÇÅTT´>œzʲê[« 7ÓkÊ:Ô¦©}²s€ö}í'ïuÕn¬Y]S²å)ªð]“Ø+ §¥{ÃhåÁNôÞŽ®ô Ñp»óI/ ´yÐ1Lô>¯¯Œz¶ŽN?kñnxþŒD«c7}óÓé­5‘´í¢Gª€S¢Âðž÷?|ºÇÀšÇ”‚”ÿ €œ¹íú2@žºäŠ3 ‡fü&ZÞãjJoµåó@y/+X©fÜ4þ® röhÞ¦îÔgx}p´Ã7ºÜ@¿¹ª'ýàç õV/äD±ö|åß7ˆ6Ÿk÷؆¸¹æSJå•Ènjˆv\ Ï‹•ÜðÕ4Ÿóà|4uQ¼|@°h]¸¦yðøœç€ ¾È¬s⣥ #ÒåÇZåÁãsœVy FöÓ—ÇÈŸzË94>š­E.ó8<ž­<8?µ«!jè™ûMÝ뢷H9°Þ³ïƒ ûËœ5ëÕbû–=ž:¿Ñw(­:Ò±Yóàíó8õ~µHäÉù ;èÐwmêì9j+ï'IÍ6}ðvyû Ƀó=¤åÉ[ôýj(µ‹mØU‰\þPÒ,yðvW}þwU¤È—ó@Äñ×ps%bs]ïÌÛmLœ·f±iÉd’ŠÉˆˆËžÒÿAΔþ”ýrrUö˼T_ǧÈÝ7Æ8¾ðžݧ™o¯® úëçÍùkòÞ&W±wÇ&˜CM¡2@‘‘‘ͤäݱWœÔðQÃ) g^ÕÓøš1¤¢dφ“Ox–ÙÔMH@‚€@‚€@‚ ŒNQý^$SÿIVŠè;ŽÚòkhÂvy=^ßÖvy<9@¡¦‘´ëº°â¬•>œµ™Bbó›´]^×·µ]Ç@NP—Þ£èÌ’rzøÇ›VÚ9·„BâšX×·µ]Ç@ €@ €@ €z@½FQÙ{et{Ýu+m³ç‰Î…ñú¶¶Ëãñ¸È)ÎÆ?G &SJÚ4+Å'O¤¶M­Añóøù¸é.ªùƒåŸ„R§ÇüP8ÿŸŸ‡»6 ë¥Üó¢IózÕ ÿŸŸ€Mí¾âO}•ûœÖÿÿûÆ zµl_¨Õ¯ßócþ»Ó¼NÔ¼÷üz±¨w €øqsßk 9‘ö^÷£ØìL^òc§zH½²¶Ñ¹Î±×€Ô×I³§|ÿS^  A €€ €@@‚@@‚@Íкx9>@Sçº÷W  ¢"É…›»Ú5¦¢Êp96@;.êî¼ô†K?ö´°P.ÍR+,)W :qßpYè!Lq,±gì]ñݵˆD© {šš*‡f–‰‰’‡XúþÖPÊIœª4V¨ÊXYv×H¿= ;!¼ôSÁRˆXv+Zm˜÷Ñ9=¿ó¨4ÊâÆZtúöRfÙ—²{žr=Í\챈½ó ’Ú³—Чª$)s%—<_¯)L,#ôŽÇôè¯î¸¨§£· 1é}ˆæ—ô´²DmÒ[­g±gŠw¾Š—-%£…Rò˜Ü@£¯ÔC,£|\ß\ê±dù.ÝéµGu76ýMwwÛy}å¶ÏõfH}mý»¾róYÝݵÇt7–íÔž±Øc©ðˆùD)ž*ºªY}ªW!n¦½…‚•f¬§««k¬P|p˜KZF~ërƸÎ*€´PÎ(÷Ñé#Z îè’&<1±7ì‘âU°â›ÚÕ§zj¥”?N$ÈÍMêÒ¦­ÔS¯—¢Åãh&Hc±ì {ñWŠg-$¢:DžBþBÜXw‰v7¤pC©'¤¡„‹nì‰â¿â•æðÔ†ˆOÄé”ä¸1 PæØvŠ‚ Ueyß/Ø/Å£ÖöOuˆ, ¹*󪇒¬^‘RU–÷]§xá¦xÓªš_v–ÄZ*jÙ…,~Ø-8 ÒV@ @ ÄÅÉ k©ÈÌÃIEND®B`‚chiaki-v2.2.0/android/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png000066400000000000000000000164511447035777400266440ustar00rootroot00000000000000‰PNG  IHDRçFâ¸ðIDATxÚí] xSUöÐ6yy/]Ò¤-mè¾ï-”­@)P¶²ª¸¡Î8Î8êŒ3£Œ3óqwPdEeUPY*PZö‚ã8l #«,B—û¿¿›ûJi›¶iû’¼|ßùš¯yy÷Ü{~9çwÎ=ï=F}©/õ¥¾Ô—úR_îú"DÓŽJ{È¢éPŸÈÇá;êÊy!H‚¢ñp@´kÎ9œO—'F6lCÇ &ÃWD ÝM£vCòn"fí%¹¼·þ/0 ÇàØ†@"K”›F5Ž>ßM$óâß•Ê]ÄB1¼C߯£÷PùŽÊé=Äp™þ­¤RM…pÁûJþÙi~ìþÝwp.œçÆuª¹O}µ"hðË·z ÿ{¨aߤÆ/§Æ>aŠZÙ]Ótqp>ŒQFAõƆÐE“ò€Ã“íÿZ(XQN§€ÙÉ=Æ @©¨1Tïª6Tr©‚ì®6Ts©i@Øqò÷äó°ÿ;t€.VüAG[å0§Z´¼ °—Hýè/þ5j¤C#YI }OZBd€Ù«Ê—:]÷©Ðö z¥~Ù/.-5ÆST¾²M 0-–Æ€J×ÍLÐý)ÌÅþG¢Z¼…€C<Ÿ†„ùôï;OSÉýDÉÂu¬´ uøœòU ¹8¶ HSéDúÜÎÛȆ¸©ÈžÉÆ+aŽEu­ƒúr‚çØrƒÝÄЃ.ì'öÀQBxrq˜³›sO;²­ò£ú^¶À© ÑÜ­Ë *sâḒM7káhÔ—¯ƒ÷tŸ ‹wÎÆãTypno6éÖDö@ª7²ã:6¹'¯™xd¨jnhÛM¤]¶aÍë¹ÑN¢ñ•ßï!þm•[dT­™¹áÇt-¬ùOt´†^WÄû½$ †.ÊF»ÌªÉ‹½³Êãù‘ü#ÛˆµsTêðø-ùý®*éVºgm¼ŽÓáªä”‘ÌÝI¦¬H$ãßN'NÍ%¿}1—üfRgòÀ”\2îLòüÉdÖ¦h²ú¿!,Ví¾æÎn¿"Ýæhm=žïÐô|²³^Æÿä»òúúXrÿäΤÛèþ$ºG1±tN:æŒ aY#HHÆÈë$4s$é˜=‚DÐc"»#™ƒ‘ÛÇw'“–&‘¥ÂÈÖËãvT^¤KÚΣy‘œeí#¿]5†¥rjÎ76.ÒæsAdþŽNäÞ‰]HÞȤSÞ°€ÒXز$£ëIf¬‰cžlG¥¿;gjl{dëφe«ÿ¥Ñzdª/½²sþFÞVQoÈÚr!7ž ¸·€y悦>éqsòäì ²þD°Û‡´W [W4˜<Š\Ë¿†òˬ0¸Ÿƒçª£Å(»@^ù<Žô½»/õ6u¡)¹ïÒó–~dðý}ÈéF~?#‡üáÍL&½’M~ùLö»^¤÷…4| ¬ˆƒÙC’¿-Hu[ Q¹ÊÂÙÃÕ‡â<ÂÉ D/Nîx]à‘9ŒÕÍq˜ §FNè3„ÜòÇŒÇ,ª°µ?˜Èö+þõp'¢>Úß‘¼üYùÕs](PŠHDîpÆ‘nƒþ¿ÿ/ Ȣݲýª¿ƒH:¾æˆ˜éÖ ’]èÖ+R*Ôÿ8Y¾<Œ›^4È!pÀ{†Üß›L]‘@6ühlö"o£ã½YCÆþµI(âpL€žlÓÙ ·ѶˆW}+f¹e8“Q¿å2ëÙ9VxätU¾¼>Âl/·þ©‰¤¡ãÑW²Èæó7z¤ÚK†‘ño¥3ò âÛ˜l ^5¤·©WqÄ›°)ËIî°"–zDÑ‘ÿp7ž1l|ºFPt±Ñ¦”ÞŽ*þacÀA˜1¶÷:;¨‡øø?¡ä¾ç»ÌÁ çøÞCÉMãz’yÛ"Y³÷FkµFA´³Ò@6œVPÛ´·³•âBZ1ž—ë<Í<À4ñ½dVøsuý'¶g1ùõ ɧž¿[c¨Üö³¬;.NƒÊd–¿«Ê0ºv{¢™mŸ33^‚”ûpORpW_r×ߺ’§¥°úöÆî²PnC^ø0‰íe è0mÇÿzŽéGÞ*òø¶ØdËOYùx‡¢23Í%g£©’§\Ѷî)~°·Ã"ö´{-‹eÃÉà·!6ž "Kt$§^·K—Ùýæþ^Ó ¶ñ´tzÖfC¢"HµïÙèŠv Y^§^äú´zyäå,²î„©Éç,ý)L[•@rŠ‹®;7 Œ^ÑWDm³ãª¬=&•Q›uhs>Äk ívVJϸŠ÷ØÊŸç¤³Ôº`l_òÞ—¬ØÜs"ÛB{B¶7~7=‡”»ÿμÓ•]ÈŠoÄ)°]›Õ‡dÒ\~É¿›«x½¬>B˜šKÖ1; gwÖ‘õ¡=dû•ÖÛ²€nmÝ—$ó¡/NIdÁ©/l8¡¤•AdãöÚWÔ¶º2t5‹x5“©+Ùž tTJ(û쨸‹ÚзÕC™ºv\õ¬%BW“„þ²Ÿ|+í¼»bÏÌÕ tÜU¥ŒPVz^"í3<Õª¡ŒW2Û­=.DR$Ÿæ¡«Íà±3l ¤µ#¥:ÉtUH£>Íx¥3/¯Ò&À¦­R¥æÜ§=åo)%tAþ27­v{£Ç-ý*lC+t’{ «R²²­— dùqlÚâi½Lœ7óï*ßÁK ×maK"×&5ÏAž_¢/] “¬tµßFiKB½þ¤T=»¤5wqð>Ë”ä}þþq ÅÁü1ýHÙÅÀ6× :@{ý ³’¶9–× 6ÔbaLö>¥g¤B¹!^ °þd0)¼§à¡âüâòÄ6M›16tpTý†ÎÐ]!µ¡šõ'$2§D?¬Å¼ì}h± RÊmUÐÍXW¿óÀû Ȧsm×Uˆ±¡ƒ#Ý 3tWÊ6óBûŵ-â…j¹ÏŒûÅpŸ‹ìʺ/áIfnŒn3ý06t¨K?èŽ9(… ­û^"3?• ]î…j3¯«†YJò>¯®e­¯õµm`SvóùÖçBÓц°}Û.æ .TU~Q"Köº8#“ë>« Jªû Wm¬ öýä%³7µ¾˜»!ý0%\%+×…ÖüW:ûô[ÚxÖ7´Ä âÊö[.þ ¤{õ ÃÙîÄâ‡zµ*™ÆXÓÙ+e1%Tò©}«6‘È;åú °ùÌÍìâû#Ÿ•Öûö(!|!5¾íÉîNwâ2\ëÕZúa¬º®os$˜‹Jph]~@ü’Ú\Ç«ÓíšÍ}JNzÕÞ UäùÝ I¬ãš®ºz¡1!¯UÚ60ÆrÔY—`.˜“bÈôyýq0lß,2Í]X‡­— Ó”¾nm„÷‘%¦g1ë)jiý0Æj¬~˜ÓNel²V¡õuáý?`û&‡19|=4Á,­ýÞ´€Ÿoª¦ïI[ʼíå}l—N·´~£)ºaN˜[[¯/lüùq™[xpÐc“ÃØ˜1cXøÊ*.(ÌUD˜ŒÐæ’Úp£ÂÃu—IwNºŒh9ÝpîN]†7ù’#ÌM k [g. ñù9#€¾}û6!ŒY¿äcNöBHÆ(:ÉQU-y›U”$£ªÌiÃHPlŸ×€M$g_~!é#J­©È‹DíN‚ûï lðàìkÛ÷2ÇöIIyŽ(}dº°^"ÌÖ£HpRÑOÙÙÖ+ZÇ4¢¨Ø¹3˾L)ƒo·‚gTµº°^ x¡jSÊÓó~v PZš_cùoHZñt5|y72ÆõžÍïÁƒÚñ‹Î´!i#Ö«òndŒ/ÜÂyP'y•ÿÂMæô‘‡Õæ­a 6EŒ‰EÇc„Åʃ&´w6|u0Å÷Ë¥'¸ªh/'Ò)ƒ*-9ÌY¹±SÚǘ4ð¾Tðx/‘®‘6Du½Õƒœ"ÒVù™Ó†ŽgJS×׈†1sj1 ŠÍŸL8 ëAZsZñë*V‰´9m8 Šë=˜p2•gHI¶B 32±¸4Ûë96|á }HÚðmjóríi(3&0plԛʷ·dô§ÈÛïÎ ÍEzü–Œö¤CLÛ`Ïîé¸  Xô³?ˆu$F3Ô®¡«R‘ç‹:]`THÚˆÿ¨m­^ÜΊP|áQ­Ö€ÈŸ-ÖàÕ©øÁ¡¦Ôâµjc½w7ÔÓ l ¯éª]«™Íýk2% œ¡Èk/*¬Â5aQÝæ í•,czÝ£r /¾*5™莙°í¼;#Òzs|=Ù)õ Þyc…à„þguAz³^Ó0¶%Ò¾,mÓh"Ì©C7ªDÚû4ç?¸Å]$Ç‚¯¦·¹ë@.$ N0Y÷]Ï ˆ–γLiŒFg t- E&fŠÉMž7ª¨ ·~í2r@"nCëÉ:°ÞG19+8Îå)ëÂlLmYÔ«ªcRìX`ÀÜ]ÆâãÙÖ} •èߘöâIßoû»JV #CèÝä{N[¯~ÉÎsyʺàFãŸ5‘+ƒPÛãiÎ ºÙ8+(fôÒ}ðOq:{NFUÛ?æÉ¥ÏÜØÓ¸‡¢Ø ¾‹sxÌšà‰=5†ê/~”Ȥ…º·aû´Ø…oøšx‡<()Ÿ]Pò‡Ú!;+ W”ò°Wʳ3Hxnãï.ïໞ´@ìa+ËŠWÇŽó» ¶ï¦i4ÿ±m.Ó š`„±u'¤rOôBxðíÀßôi4€ð¥<4×eZ¡ÞÏN¹^»qÄqÛkË®Kç¹ ‹˜µAü3ž%…A<êWGeÁ. ‰éáüvpì‚]Oó>xROõgG%òԺɰyrW ߦ„¯Ú0––¦Éë뛽ù¬ø=c¢íWüÉŸfÒP–Óðq ŽÅw;f&½o/d‚÷žê}ðˆïgç±Ì+>"^cáíÌ>®ô>×¥ô¡‘iy¾yŸ1Eª<¯¸Èj"&ž8·ŠjC5’¡wJÅ’²}pó¨ÈðpÉ©{ƒWlp¤Æ½°X÷Ø;*˜ž¸ÈxŽ»žåÞRUçU‡Dòø4¿çaË–ö>×q!lñ ‚¦ý›üÞ^qe•ž" ]•øá¿´R¿Ú0…Û2°%¸O™9Z†šÁèßh‡}vD‰)V홞È·,n×_t#α-•yÕç…XÏtX´&šþMšö¡8 epOÜhõ¸ÐEm´â‘ŒUx ¶ã6”{žÛkZá%{!v¡€ nŸ:¯LX·å'Éc³2OÚïšö‘°6ã¶3r[¶Š÷¹P›LÌýÅÅgøôøh¿xý$*ˆ” žm— dV‰x<&ŧlFmÞĹ!B ‡²Ÿïýô°X­ò!åñV0Ü#V}\ûlżO@kç†B™Àî©hÑÄÃ-N^$N]{\âk<±Jí¦;í5ˈä‰W„Wa#n«àF>λeCüý™b鯯–¬?¡ò!¥„®Õ߉dâ\ýJ؆Û(¤-CW]¡Ì ×³˜ŠKA2f•%èîÇTc¶x ¦,J©MpŸçA`[Q†¶ ]޼P{^ ÔD!ÆRÉž»E¿ +®vU©Fmíb!2®Ëõ_â)(° ·M ÍvE;B^¶|Ȫ‰E•:*ާǼ­Â7›Ïª jmðl<-‘×VëÿëÓ ¶à61*÷4ćôìrX+QKÉÊ×Îߪÿ¶Ö©Fnð¼ñ©øß”<ÝØ€Ú"ÝãÇj%‚ÇþÎ hf93ˆæ– UNÔòœgÃIæyqðÈ—¹1·¨S©†¢ìr ŽþÔÈ8Ÿü™ëô»Ð‚‰ª)¾kSu¬)®éšþ‘~o§ŸÞ< <ã’Zs«Â• 2°{-Fhéß4__ßÜ×>6¬9l­±½3•5ÏëX‹„5+’I‹…Mt»`­ùš‡rø*4;›™ùñ „LlB©t‚ÙS—  M,¤© jrÈB[ñÒ¯E2áa]Û¬1_ë0»tÝmÀSˆBy+…N4ëoÿþŽ+Ê.¨¼¨©àAÖ¢bÕ¸¿ ¯`M±¶|CÝ<Ž@„8lÖé41’Q“FßgÞõ˜î×s6ë£j95¤9²ªÁ%ßü\<:æíƒÖ”®m,'Ì’’ …®äD"O'#a D¨SL_*¬G .RSýúStü]¶ŸòwÅ/,Ñ>XÃÐNšt~/C“M¶åÖž§.OäËkØÈëDA”Šýð¢'^¦,Ú)^`i”¢é[õF¼ Œe”AÞ)/<:E˜Ž5ÃÚñb'¾¦zO£b#ª¡¸ûY¸Á Iƒ4pÃ…£ýF¾´B(]~P$ˆïˆó^Öx¸ÂÀ3ÃëLY"”åûÝ„µÂšaí°†|-¾¶í5þ²íhôç„/:(”¹a)ç‘uO¿½I<‚t_ÎÔXݨÊk€S#gXŸ‘ȬõⱞÑMäYV_«h¾vþmÑQ¨Éäî×BQI¢hõF;ùôž8WX°p»t~Ý÷’µ1Šr€ÝžÚ®yœJ4!±X°U:ÿי¢0‹Oó:"ó:ÉX+¾f2Yö*ð8âEß%³óFÙ½‡øš´HXùÞnýÏÈ<8ªj9R•{ƒFæ8lN8à€‹wé~n¾þã^ƒýF;ð:a|­Oç;õFZ^»@&aÑj5‰A!šL¤ûXÄacuwN^¬[M‰öE¸uðK· o6a )9ÂôçÇ$Ôt.¾°P¿¦øÝ]8™X¬÷:&¾FZoõ:Îz£ß#á²CX3Tµ%‘ÞÌÙ(E5»ô<+D²ËU ŠSo/­¶ê oƒ"*¶ 0—ÿ›%,ì9Ôïfœ,Ì™‡«(¾ª×i7yv—%Išd²G ñÉd’î¹—Vè·ÓðƼRùEV``âž a®mÅ#gR2hpe¼Íûú‹ÐýwÏéž2ûô’=戹rà„ñ5½™ë4ÕùpW-ñF(\>_¥Mh˦ҹèfáŽñ¯éf¾¶FÜ»xþ2²7x&v@1®a ªær¨ªë笮° ¼#< Í—úËк¸Iw'tçõª¸Ç‰æs5ò¹kmÒs<.óHŒ#…j2hf‚ÐÆÂv¢‡Þ©»û‰—…×§/¶Ì+O ¦„¾`ŠÝ¦˜ÔJ5O•«jÁUÅÅ ²ëd·ÍçÖK–®}—XÁ˜þ•ÿɼ2ý‰Ë…Rè4x¬îTÇ<®+²ª,ÌsÙãÈÀÑ©Àq=t|qƒxŸ ˆe,uù©øûùÕz%(7>];ðîqÂ#yS7kê‡BÉìý¡Å»Ås0,B2 a…ß÷Ñ`ÇâJ|w÷‚wYõo‘¼¿G<7»D84Ž…1ïz\x4>M;ˆ{è” ¡+t†î|!|NªÇi% ùñ²½?ÏL:ò½ 8L6ž©PTºwíï7jìcÂÃLÖ¾øôÛúy“ÞÕ}òòJ¡|ÖzqßœMúÿÌ/×¥iôI †S|)žùð+ñÌ’½â)ʳN.Ü&}g³ðí¬ â¾WV å“ÞÓ}‚s<ú¢n2Ήsûøøôàcåð±­žæh⸮¹î|.~*pZHxF"{¥0ao(†††$)H“ÎTË›ìA•Ë=DŒáS—¦œÞU[œÛK;‚÷ø>ãéŠpióýZ°p"lõ2tlè]¸N¶ ‘Ô/Ÿ‹ œ6’½W²S0OÃù/€J@†#ƒÊ¡ÉFºlõVµËÖsÙŠÍgÖïà»8‡ œcpÀDò±C¹.¶ ±÷6*p &=/¼rrjæD5‚{„(nlp‘8Ÿy-€Ì*©\R88’8@âøwbø9:ñs†ñ1Œ|L×A›‚©7š/'§¯©Hœ?ÉÀ æ¡ÅÌ m(ƒ­„òÏÌüØ` øósŠ| -ÓÇ.<© qs@Ù‚J–7¸Ž_à^Ñȟëøwül€b 0^*{pµ·š­8:Æþ<^÷úXx¹¤Î²IEND®B`‚chiaki-v2.2.0/android/app/src/main/res/mipmap-xxxhdpi/000077500000000000000000000000001447035777400226345ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png000066400000000000000000000105101447035777400256130ustar00rootroot00000000000000‰PNG  IHDRÀÀRÜlIDATxÚí xTõ¹ÆOB’™df²‘I ˆkÈN K °$QDÅëUk{ÉM´>xÕ"}pkp¡µ`[±RAªMÐV‚e‘B ‹Ýì­µ RK[ëU I&ßý¿Ç3T®½'K®H/ò¨é[ÓøÜ9rÏÚ$yãoib°t•¥^»e©f3 ~nÖî¶æ˜ ôÍaüÙÿ•Ó+¦oIÃ2 åöÕi²ï£(šÙsØ üÌ€ÝLìøsŒ,Z6Y®˜Ø~›v•d_Ÿ+7.Ÿ,÷ÿ$AÖî./«ñÁ¾³QrXue v_ÿÀ)›j®ÐÁ$Ý1U&äÍ‘˜¤¶¿Ï+”'È‘ÿ §© @ÏéíÏÃåá-ãÚ5æ°É…2·dš|ë…qòÊ»ƒô>{U]çfsŽªïþsåùÊ+U-Ÿ*™×Ì’AÉ­+0æÈS­ ¢± €ÇµçC§ÜðÍÉmöó“çåËO¤Êö߯Ê[¬1àÅTê3‡ËÕwNÑk-‡±3æÉŠÍãäX-gŒ€•·8Gb’[6]bþ}ög÷ûÑ=>o–áUË/¼;[´”Ï•“ åù£WÒàÀsZ¡º>Íçòã&ÈWWdèÓŸ™–<úE˜>s³ë½h}`Ûobum'Vï*apàŸ‘‚khrnž!ƒS.í•|'æ&=¾h &/œ%?RÚ¶ÌŠµÌЬ?'·¯J•y¥Ó$ãêÙ2&gÞ%hŒ'ÆSÿc¦\÷,}À¼Mqè_mÏùøG¤ÜýÃd‰Ÿ:_?VjAž$ÍMzDl«ÏUœ‰jµ¿þÖ§áò¬2ýM÷gJÂì9]žæÄ ÒÔfÊ7~”$;ÿ#Ç.„¶zNl³È/žNó€¾Ó‘ÏÂeåKc”iseP²gçüÑB`ߺJ\&¦†üÁž‘2ñªÙ=¾ø5$½HJ¾®¯ÐÀ Ïµ÷´S ï˜zÙ@´% Ï.Ð7¸a:õë«Sõ®ÍR%lkXüèD}ã\zQž ngÆ )óòeÑal @ßéXm¨\µdJ›FMœ“¯ïèÄŒ ¶ÐMjiQ FÆÜ=v’îz/Fyq¬Ü>­Í9ÿ¸¬}‰F&}¦'vºÌ˜¨ÁgÜ’#+_#oœ’ãu][ÀÊóöwKñÊt}{tóó\{Ov«cŠôš°] Ôø™ gÉ㯌–ƒÿŒôÜVkÐKïÄÊ¢{³ô1€{ñ bš˜˜B÷=7Aþ[ N÷|àìѽH˜eʺ.Wvüo LÌw7X§¶5|&û?îäž~¬3ôñ®OäŒÜ è–Ê«†ÊË3;½S´Oï|S¹"gäN@·n¡\´,KFdè7Á{KÞÈ9#÷ª~0'}¤-¿¢ßç‹-¶VxKÞÈÕ}2Ê@@—Æ 7=yÉ™7Ìç#GäêÎeðö…8ÐÂöçæóú_yh’éóFŽÍÝ‚²Ð)?6ñ²[*Q³šy''rkZû»WºQ@:,lk—;·Åm¥§™6oäÖÒ}Ð( ÊD@‡„'>´vk%fW:½.ÐKóþ#šÕþÁUeA™hWxÊøYsÛÜ鉢fX"äÔæƒºT™P6@ÚÔ²õÚ|´‰ÛLØ5jšÚ_åÒ´(ÊF@«Âö…ŽÞù`y‚)Zä€\:’3Êö–>˜‹ô’ð@­öžòæVzÑlýf÷¾Î9 —ŽäŒ²¡Œ€´¸é-e~^§n}|tû˜>Ï9t&g”ÑÛ6É€^Ðw_Ýé{§,ÊíÓVçFÍe%à’¾?mÒY#a`‰åöUÞ8w{ö–„²zÓX€ô°ÖTŒì’‘ Ü[sôcõvÎ8'ÎÝ•œQV”™9üi¸ä/žÞõG ¤ÉSûFôzÞ8'ÎÝÕ¼Qf”x€•›ÃsöuÖU|ä”=§®Š3N1»ð{ŦuïÁÓÞ^ûKt¯åŒsáœÝÉeFÙ½á;‚—”¯¤¼2²¾ô!‡ùˆMÕˆÏJÍI+Ì«K+Ê—”¢|—z-fרéó»ý ,˜ ]ï­œq®îB ¡ìÞðé^RžJ˜9¥>6!^ &)Æ<h±é:áqY9ÎÄuщ $:a«¯þ["ªŸI÷Ò‰“WïˆIÐÐb’EEEEEEEEEEEEEE@'÷þ'/”ô©‹ÛÔØI7yü¼8f{çEn€ô¨2¦ËûëÿЦ~x×&ŸÇlï¼È€UVN©¸¶žkS›–¿êñóâ˜í¹@ €@ €@ €@ €@ €@ àr˼Y¿9¥-/zÔãçÅ1Û;/r#€"€"€"€"€"€"€"€"€"€"Ý 6=V >+5'­0¯.­(_RŠò]êµø¢FMŸïqà˜¾z=u/)O%ÌœR›¯“cJÊ4€•›ÃsöuÖU|ä”=§®Š3NñE­3N†fzÌü8Žé«×^R¾’òÊÈúÒ‡:·,ÕÌÀÚÝÖœšFG’Ô48\'\ñEU78äë«S%&©ûæÇ1p,ÓW¯'¼tRòêmõKWY€7èÍO"$óšYÝÇÀ±|ùZ/Õ³‡‡É°Ì®w…ðYÃׯ#ðb¯LïRWŸÁgy €Wkÿ¹È.u…ð|–×x½ÖŠ“¸É6?Þ‹ÏðÚ€~¡ãu¡RòíŽu…ð¼Ÿáµ#ýF{O;%ûúÜvÀ{ð^^3Ðïôô/†Ë°6ºBøÞÃkEú¥*χIñc[òƒúÞÃkEú­ö|è”Ì…—Ï áwø¯ð®Ð’^tÑüxßñڟбÚ0¹µ,ã"xßñÚŸÑ/>(‰ùùºðš×„øœž98\¯ðÙmÓ¾¼Í™P (@Q€¢EŠ"E(ŠP€P€P€P€P€P€P€P€P€P€P€P€P€P€P W¨'”OpýÝZ0’Z³Ë:M™ÿ< <©“.‡ žúùïlµw}ÇR¯•è•®9˜ñUͪ~Úî\4¡ºÞ~´Ê“T×;dSuÈßNY×ë•®)ðOHЂ€’óèçö€ò˜×ÛŸÙeÃAÛo•džÀkññšÞ3Jñ™Z(¨8cû)š+PË/ò§í²êåàð˜áµS>[ CrOî°ÞRuA%-zòü©n €]ŽFT¨[OÙå®ïZ–Àc)3´p3€~X@LŒÞŠRŠ{í=Gõ±Z½u'øôcªµ?¦Õ÷l—5;lï(o„ÇœNÍnàg(LÒ¢ÕÏ¡®³£ÉÂÀ…cª;]Ÿãu)Û&·=l¹Þ>A‹× Ï™ kX˜© U¯G=õšµüµ÷l¢ ШCÀ–€ê¤ùÑýÙrÂ&e‚·ÁSð<¯™ ÷83A¡QQZ¬ú9Bi“;ƒw¾ò›;ÿeS†é ªÓë]ž/ûüuGÂüÿ$¤^‚§Ôg€B ¯ù› €@c*4*,F`ŒRÒÊÍÖ-[jl²ïÌ—]"}QXàh |Yð€.Ãð¾qÖ.϶Ƀë‚_RJ†— OE 4Ëø²nfƒ9¢´ÑêçøÀÀÀäÒ²à¥kvÚ~¢Ñ-:ü‰]@¸¾È!”/ †G?ÿ­Oíòú_í²é¸MVm·ýþk˃–Á;ðá¥A†·L×ýi©¨t…áµÙ´DD)£ôëòG7†T<µ3äÝ ûCÎ) .l=ekØz2¤žò=½xÒÖ ¡¦ßy˜á»á «á•o6~sš¶ÆTVѼYŒBS¾'÷÷dx" Yïõæo ÿ&@PTSOô;ãw Ê·Å`0 ƒÁ`0 ƒÁ`0 ƒÁ`0 ƒÁè~ü?<¢~Û/Õ\õIEND®B`‚chiaki-v2.2.0/android/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png000066400000000000000000000244521447035777400270340ustar00rootroot00000000000000‰PNG  IHDRÀÀRÜl(ñIDATxÚí]xTÅÚ^ Éîž²©›@ ©@ZB  Ñ«W‘‹íÞ+öö_/R쨀¨ˆHWˆ…ªˆtÐBÛµ]¹6éióÏ;;'6›d7uOvÎó|OBØ=gΜ÷y¿2sL&qˆCâ‡8Ä!qˆCâ‡8Ä!ŽÚ„˜šQkžGL-`ÛˆÉÏÓ¾‡sà\¢GÅáÕ h ˆÉ_m=\‹]×Ð"È!ŽFÑÝ9Àú! >L¬Ñ‰-éC"§"¶n…Dé{ˆ(‘ÀÁS8þfë†Ïà³ø¾‹s¸KA qÔ˨‹·²Ï&2jB!‘³? êuÈuýýmjùÔ>¥ö=µßõýYD­”Z5­Œÿ­ˆæ7þOù9ÞÆ9qnÇ5äl\×®¬]úYBjç]€‰Â ô¤¨Œ¸§}¸Gܫ޹vÕ'âh¢2Gÿ78’T.L¦ÀØáô¥å²Ã ï.!´{pA†¸wôó¬ äQ–9åe ÀBåx7QªÉ%§{F,DŸèg!šH4G¯íάºÕÙqmª wƒ ÎõV‡óü§¯ ¢G—:{Iˆ:7Ó‡{ÈÅh_bDyS—2©<ÂtqßоRn) ÁB̹Õþ$þ'N '6òù*è«ô*Î Ÿ õ 7á,{©Î× ~”Ø®>DÔüšAŸ©F_ÛUú>þŽú¨§¡S÷F'à—àט%ÏÊFô±˜ ¼à¸øR$ÏÔ^Ð#¾s]Á1#hýz}>wõ,ÄÑУ~‰m}(Gœ€/Füú“FZ?Aߋ٠µþŸ£~P,‰Vê£:¾Êläª.jd[‰gáꉣ¾$O‰òÚùG…ÜñYtÏDH¢z’<Ú¨‚¸ô!b{AÈï”E…D}QËè#sâ¨ɳ¯XÍ¢|¸.Gý}çÉÖã!äíoÂÉëŸD’×G‘%ûcÈbnË £ÉŠ¢Èê/[’M?†‘]‘‚üjfƒCùgÕžBÕ¡ä¡<‰vì) øozúÛÈž³dãvòÜærûsIî?z‘ãú‘n£³IûCI›¾ÃIën#Ë-¡ç’Üoé8l0éó—d褾äºw%3^O!+?Š$»N‘}l‚ºò ^*~jßyåF!‰j ~¤Þé´:³6£þΓÁäÅíñäïÏt&ý®éOZuÎ%áé£jmF‘ö— %WÝßLËK!ëŽD0’‰Ù œd_‘út^žc$ðüù'm!´W;Õî¸õvŸ"yG’ÌêD²Æ $ñY#`ëø®,²KIÍB.¿+‹ÌÚ˜H¶üêëR©D#Áž³êšuŸ«a‚ž€ÿ¼-IWÊ€Ît;¼¹hokò—ûzP93¬Þ_åÌÐ1—ô§²êßËÚ“¿û´$Ò­”ƒ~P“ ÜHn, Ì ÷µ'zï¹@&s†ü­o£€¾2ƒOqÿ‚4æwøj”ˆ?C²ï¼zd˶n"iVE˜³°X¾„vÖÏüEÕIžýE6òÖg­ÈX*=’ú w[»ÇQI”F% Û¿>ØÜõbòÔº6dÞŽ8²¼0ºÜÒÙdΦ2ey;2é± 2ü¦>¤óˆAlv‰tÓ—€<ʺ| y|u[òþÉ`_õ ° Ù^ýyë1yˆ“êÀ¯Õ˜–¨¹´“N» ~Dt\”Ê´·»@ào£~Á [ãYèÓc§•êú÷©¬9¦¾ÖŽ\~giã&ñà|½;‹¼õyKß&ÁõôÖcÊeZÃgI ù›Q`]Ê7„ª6Òç!ÈìëûUÑè{]1ü“‚Àiê2R³ï¼lý%”Ì|;‰äü½wµ~fæaJ8ê¾!Ú^9·õGå <{Ÿ ¸æøsÜ?ìÙ I$37»J ÅtIú^5€<¹¶ y÷{{ƒDdè%bÈ„i™L޵ìX99‘c˜0=“%á|•{Ï*çÞýN øœc¬¿ X Op¹æLì5¢Jð÷ûk2s}6Ú7ÖC~“ú%ãîJâzTÞVH·7>ôé\Aþiõôú#Ì'ðhàßsFêB;á'O\s·$¸tx; L\˜Ê4º»#~•CÛN„u_GF±ò‡ù;ãÊmA~,Óûô{GÃX´É݇ŒÏ¢´ÙãèÌœ í]Zãó 3üÜuR9öæ§Ö>A}œŸ‚þ+w^W$ˆÊÈ)w.¡¿à‚jô=ˆ‘Ogdmg¼‘̲¸¯ëG2r²IÛ~Ø4qv\茓6xéuåV:DAŒ¿e[)Áà¬k¤…pÙí=Y†ZdÕ"XøMýúÕ”&'ÐB; ¦7~ ¦à× #túàÁä®Ó«"ˆ‚Ü;?9ÅuQ‘Ü÷¯nŒŒÕ%¼@<\ò àµCI°í¥ð•÷{“, Óm§ÑŒÞð›uUÍ wïùÊe €ùÒûqäÒɽ`[vÊ­ódt~ϱÉ´•)Õ:Ü(‘Øù‡ù XØw^%›~TÖPŒ´pÂŒñÃøéÍ>¡ÛÞ»Þêøê\z0šŒ¼µwYSo%TÚ Ïi%J¦k”1.ÝsF!¾Qf+NØiáÎëõûnÖgÚ¾U F{„.c»,·èŒœ‘aðľ,$*ˆàq95œb²öKå–&ákàß}ÆÖ•‚þw­¸­>:QTbv2¸Ê¼6Z£B´ËÈA̱½ó…äÙwYdU¤šA·£mEŠëÌpfvc–†z ¨vå6H´a–ÀÌ€Uc®®{ÏKéBÕ»OQ)ô•ºÒáÉùB³ý”+B÷ëí¶ÙHT—œòšgÞI"Û­Ÿ²a•N¨Õ'¼P*FÿÚùT ‘¼åñl uãm™Þ$}šm;a¦Òç[môoȼw~: ObÞv¢aêmöœ deÓ·‚t† 0×r8PD¥ÐwòÏo¶à%ͦlór@7M5?X¢,k¬={CéÂþ.Xßw¡fuDXŸÇyûoÞWäVÓ{jìü¤Ðš/”×uùf^õ¡ÒçJÝË䌵oÕìX³ù§¦3‚ã^pOKŒ—`Ž_²â|½WG…4é³ù˜AAÿycHŸº0ƵÏB¦¯Li2À½àžpoF ½ó?å«™«­1^+…øöÍ«O{º‹ƒ·$ ŠÝP2'6ÿL áÁ{À½àžpoû‹l†Ììü]!«ÿ£¼Œi[­x_‰óY[wݲÆRãI…P–ÀÒV“Í~/ÁðÀ=Dò¨î ÷hĨPA±JÞûA>³x—2X›Wà%Q!-Þïp|Õ5F•>ˆ×cq¼>ŽŸ=¡_½…OÂÐv܃þžpFÌMh¹Uÿ‘7R¬ùiùoÑþÍ÷žUÆÖñ¥öηál-=XP ô¶xÃmw®gÂ=â^ úB?²ùG…,Þ#_ǤPcgˆyÉj³§óLV:úçuô‡a#+WërníMöœ3ž/€6£í®v§À½57€ŠÑÕŸÉî1©|h¼²i®Ãšï=§N0òèòˆÎù,gÀŠ0#ÎhsB%ë§q¯F\—À·c§~ŒB–î•oö¦ä™uôŸ»Í¤,U ë³Ò³¾µ?6­ªª°môm½ ¥›ÑV´¹ª"=ܳA}6 |.|ó£¦`V,×Q!môÏ?cìÑ¥®­ºŠ!DTåžÐÖêV¿ážªL¤^fê ,Ü%O<"¤þ㧘,Tûï1²öG¡œ;‹g®ùW7¶ Þëãþ´hkµ;ÕÑ{ƽu %f7?‘ {å:|x&®ùîSÆŽüàC&öu{<ÊŸ½ýžÐF´Õ{½£Œz÷;…,ØÆªE›7XvX÷÷+(V×yôŸý^b•›W9Ûø)]½Z7£mh£' úÑFvý¡¼ÃòŠÅ€Ë hÚë1µWù‹© øzR,œ<ѳíÔ±››7ûh›»›ë×/ñÍ6È£¸ï#rÑœõlw¹†‰q­Õbÿyå9£F~`([®ní°«EóÿœÕÑ+ƒ6¡m5¹'ô…Ag’í'²|Ÿ´˜¬w?@Óþ¯}d9Xª|õ¿á°›êÞ1wfÕhÇìðöž.vA›Ü}G‚³¡/vÑ ØÃ~B«?“~¸ÿ%s[`sÒ¼zŒq´È?ÅÞÚèp~Kçüb÷‡ÄÞÃk¼VšyÓ,€¶ M5½ô…÷*ÕB¢›Ž*dþvùn`³Þœaú„ù(V7ÙùÅ[aj³ V÷K/ñªz´mªÍ=¡OŒì ¯8$o£Ø´£õR¡þ¿‘2(ëNÕù}õPt¥»8x¢›x%Íkî mñTûWóÒ>AߎeŽRéµ_)§žÎ³ôFëEqÃ/ÿ´zŸQëý±dâ#µ ¬ë¨l²ã·Æ¯§AЖÚÞú}cÄ3Àâ–c Y°Ãú(0ZçÎð”)ù“5Öd¥lÛÐ ÎùÅ6% ½FÔÉ^ ØzeÚÊvšÀµÑm˜Úúƈ[¹ÀÎ?MeÐÒÞ¤î& ‰N©CÔJ&®¼3µë„é™'o˜‘In˜žQŠ×üÉ<ûWg¨ªD⩱î×®¬Šµ¦†>2Ús,NË cïH?5plì@`5cRFÊ  v2¿°ö#ïOM;jtYxÚ¨2oz'¯06†ÅÑea톒 ø^SÙŠ±Œº#€ý °§ZË P":^˜wÙè{êH’4`‹ âV[ýã?m{'ØÓG}+ Ì[ ž–KBÚ^rTŽNOgiÕÉ,Àå=yØåütÊ]*:\˜wÉ `r4 MBc{Ld2(5µÖµAÍèàÇäOjÎcœü¼u( k7œ'ôyÁQ!ʰ[› ѱ-øžŒ–ðÔœÍBþóbGøO? ±_>ŬâÀn¿Úê?[bV’ÐÿÂŒáŒrøQ©k r|Ù?$%{ˆCúŒ&"ü)ÌËá$4yp©-&ó/Ànmü€fœaíGÜ%ô¿0ƒÈ Räã{Î`~€ÃÍjÿ‡²ØÛ\ ä0ÃøíG øÞx§€…c¸yÍ ¦ÚÓrw 3Ž#œG¸Àdc/Ù«)˜ìÙ5Æž&`as„Û 8ª†%'3?ÀTG˜ëÿÄ=éIO‰˜0C%Ä’³OÛZvÆü€8ÂÍLqý¡ŸÌövƒ¯ü3,"@  JB‚ãºÝ ›¢³¬ž:Â,Ô£¾ÝA~a†ñ•¡±Ý§2G¸FHJ2£ª.¬ýð™Bþ3^(t8 ŒÏz™U†:°ì!˜ó`’í©#_°0#–D'ôY s,{D€üKJxZî&F€T13Ž#ì…öÝM1lãXnái”zÎÁö´Üý¾N€¨N—‘ŒÞ7Tk{Ž'‘/«·vàܸ†;mA›}ši9$8±ïGÃXö(Ê`–Â’#íi£>õuôè7‰|<çpµ¶qúVÐújÎk¸Ó´Ùg ¬¦å’à¤_™mÑI,äšñ¸)ýn§6ôDßø:ú ¼•”®<^­}ñüÇ$³Ï õÖœ×p§-h³o` m3ðÙÞ¦#€ްFKptF:=á1AAà •EWÓ²X(4.Îâ>x4°u÷ {ú¨ßŒG€Ñ”Ù'•–)ýY(´&°ÅõîNOxZ@Àˆm{ÉY9"=Ûs8>,…Äfõ¤Zêœ € €1 }ÞÖ*u(°lŠŽ¶ºOGêX ŽïÕÇž>ºH@À(yP±­eÚF€È É]4×€žè‚ € €!g€äì"'4w $·îÞ›žè¬ € €1%Рs¶–톳r‡r“ŽËjl·,á Ú OÌ)yL€À˜n™öôQ¿ 3 zÉïJDò@Ï À%Õ¹cxÚ¨ ™k3ð«=¡·çˆ@LNOÍ=" `ÄRˆ¤ßKa­3<'€‰%ÂdKP«Øð´ÜOŒF;Šáû} „¶s¬ `ƒº»p,†¡fOÍÙ' `ÄõÁ }>¤ŽâXð”pÂÂÚÜ$ `¨aŒXÖ bìËþî ™c3!»â Àðå‚‚†#Û.k0̱ìç~)ߎþ Kò”¯/Š0â¢øa$0¶ë+À0DzGha IÂZÊ6ïòõmQŒ·- öRcº`ƒÜSpB _ììlÚNèûW_ß«ïÀ[Èù׎UkŸ>÷!ɨGàܸ†;mA›}zc¬äAeJdÇ¿Ã|ð𜃔èÎýèIOú² jÛíj2yÜSÕÚ„+¦‘„Œ+ë­87®áN[Ðf_Þ1¤Í€?¤ÐäQÀ0Ì="õ–Yâ Пž–ûµØE˜‘ć$õûÞ?( ë©ü)/ƒp{o æŽ•ôlO•VöÔÛ¸ 6ÇfˆM±‚â{ ØmÍ1ìvLO¶/ýÖnèËbw8aF!€#Ôý `—c8 &ð§.0¾ÜfÀÝå‘ ±C´0ïv€ËBS5ºócÀ.ǰ¿§Ðç‚bzä–¯ ›ä óv¸í%E²=õ:– ±y’¸˜ï9DŽïž–ó_á óú 0àľßYC"{²€‡I°‹C¡ØNa$“)ÊÞ~Ä»Âæõ0J â²P˱+yu …šÌüEc­B“=&üaÞ®ÿÃR†ÀÖ/³»fOC G‚ƒáMÛb³®¦*~€0/×ÿ%RËÔ[YÈA#@G‚N„]ŠëdO)üaÞ» -‡„$Qý¯FöbeÐ5Œ9•E3 J-ÆÞnØ[‚¼ÕÆk‘Bâ³6sýʱëgªá›â5GØbRÕ0ú328±ßÝ⑼¸Ž¨‘ÿ4)Šg€[Ԇ̊ ‚7Ý23;ºÿø©]~¾aF&™0­Ké„éô§°r»âž,Û}d½=hœ×}}±Ý@±xýÔ 2ê–ö¿&÷ËV[3ß5 ¦ðE~€ÝnRøÒ²¸ÍG•÷> *)(QK–ªDØŸ–&ˆ ™õFœ×}­³•–©%ÛO(dö:)Ÿb4X嘭±þwö¬-“bï’à-+,UËÄC¸Ø¶%‡®sðãœ8·èã‹ ¤rÙÚ/eòÀ\óSÀ(Ǫµ6úßÙ0G§šRŠŸ¥þõfµT<„Šöøª¶$®Çˆ:?Î…sо­h”ª¥û/¨dñåDεæ‘ÀhT s€ÍµÑÿò!!¬¬oÜ‹爼V»¸xmßù@rí¿»Öp.œSômEùóA™Zºå˜Bž^%oãò'<8ØX›ø¥áÐø4”—šZÏZoýÇ"zq¦ A¶îëÒutv­Ásà\¢O]ÊŸR*ÅÉ›ŸÈdò“–›q©¦–µ VŽvȠ̾þ·P?ÃÅ… rmÅ*yrmÙ%·ÆàÇwqœKô©ëÑ÷)…ÌÛ*iŸáßÉŸ(&,u%œȘԘdS$dÐòƒÒ> TaWÝßDtðüø¾+ú° Pì­û¯L¦,²,&96Õº”?dPD"óbÆßgºû¤ú»AUÛ[Ÿµ"ÝF_â1ð|Wôa%Îo™Ãù]ºWù㲉—“áñL¢×©ü© 2IcZÒ›Ÿ*«0 Ѓ‘âÁ¸6Ș–Ý—Bø,¾#ú®ÊØñÆïòdž´ X&ͺŒþT¶g¨bcŽFÜý/XÆíúC)³@Õ¶ût¹úÁîn‘ŸÁgñÑw•þ Áò¹ô†Í·‹a±¦VÀf]$¿ªMŠÙlÌަÖvÍòv> ˆÌp¶æ«’>¸ú>ƒÏŠ>«:ó»ù'…<³JÚO1˜,ª*s~­õ!*ÔÁшn˶N˜ºÄ|DHÔ ›ñF2‰ÉÌ©üø?|FôUõ£ÿÊC ¹yšùn`0*‰ Æj]Ôþ¸í SÆ¡B4 \ý…’‡DÌUÛÎ?‚Yd§2àÿðÑWUþH|=³Zú€b¯=0¨(å[ ûÕ'ø/r†±ãVd"#@â”—Í·ìøU)cyQT¥­ý:‚$÷VüøÛZ‘ðª¶î$XQ(—ÝøpÀ½À^dÛü*°>ßJß Ã™‡´ËûHÞºïŸDD¨ò훯S)ÔõϲiüŽ¿ˆ~«vôï…<‘'íá£kŽA¹>ßÊʘLA!QL%Ýñ„åÚ­Ç” ZŠZ<´ª£B—ÝÞ³œø]D}ª×þ¶,Ù#]§ù&`.$’) úÈüº-S|å{¥7šfErb4«ÒV~IÒ a†ßEŸTO€·ÈdÆ2é]` ˜ã£¿>ôÙ`Мaý,xéæ¡þ'SEPõRè‰5m™ éã^ÍÏü-Òñì+.ÖœF¿†¿sH”½K,¢µ)þLž½ÞúÌöã [0C/â*lï¹@f¢/ªv|¥7>–ɽsÌØï'9<†•=‡qì4ôèïÊ eyD9ÈÔñõåÂüÓŠ(‘V'%Hz=½JþD 4e°Ñ?„)ŽÀÆÐþ®fí¡Ú,0ù ËøßÊEL ‡XX-¤"‹‹wËE×ÝmÆfWÉc¡N‘ŸF!@…¼[Ȧ§vÏo´,Úö‹âðÄ, ¬&k})ÞúT&Í·æS6›) k踿'/Ö fy6a‘¦.y‡äQ&!rÂjTïó#ê}¬_„¶4u¦‚‚؆W!ž¾øº¡f^nfLM¹iªeüú¯¥s(“Q!ažHŸ½gU²à}éüÕ“Í7KSmøšt­æÇ+Fÿ •¢<4ÕJ 3µE¶îéUÒdï蕊2 aîJ»Ý7WZ q,µâز6FØÓc‡˜OWhx‡E»å÷á°Í´„VôYÿµL}•:w†(–â¼ÉñuÇ!¶±-Õí)Ô„_vÞaùÛ]'±£œ°*Á¿õg…ÌY/ÿÐ}P‹áÀÇPÇ”ÙÛ¤+‡X/…"©3œŒiìöÇ¥›V.…¶þ€0Wº¹£—wHç&Üg½˜á؉t’>ÍM^|TBlµN([µ“6}™õqLoÌ)ùa:ð#g´l¿Lî˜i ¬pÌDAúT%…XT…Kì†Òg­µ.ßðŒ½nÄÞ¢ÂÊ÷˜Í;¬‡^’ÞF€Š™x]ÔÇë¥OUÅr,AÆ“íàØ¼øžuË»ß)ä`1K’ øxÄgÕg2yd™uÅF' /‹7F}<‘BHZ`¯öH5ÌáÄ%ù÷X°C:ˆD‡pŠ}zô/ÁÆVO®”>jà×›‡<5Ýì”ð2\UŒ2 4’I¡ÔÞÙ–ì…»­_`}§ o‚÷ ™¹Êúuf?ó0`"´SšîoÔJÏúòØÊ–l9[ZÎ5£—앾Cè‹’ X÷6µšµV:zÉelW·4މÖ#†ÔýîøÚë±1¦48<—N²Ž]’/$𙑿•³ÖÉ?¼ÆòW` "Ú”nr¼Ø.œcÄb„§§RHËòÄFœF‚17Z¯Z´[:Šºo!‡š¶ìÁÈÿìZéXÎxË8øãtN¯>ÞßÌÔD½S¬%ÉpÃñÁŒšh½ò•òw«%"DÚäVu• üýìé¨6òógϱ %»ü›ø«Š ¡À)ž_0úåmò,OP$ŠçšˆÞ/Ã& ë¾’ÉÌ7­ÿí?ŠiþáѦü­šBħVáQj ¼C:tímÉž»A:ˆðØþ ,I"2ÆÎðbâ–G_•wÈ2eàbEn Ná΀¦~WáQ™/p`$ Sbº£ƒü²ž]cݺê?2AíØrј…m(yYñB^dÝé× Ï68œ tøC8|ü®ÑèIPîøûûw™¾ÌòjÞ‡2A© ±œ]lc²dL|Áúž%×üé\ö8ƒ¿…/¿*0Ÿ@ .'A§ž“ŸX¾_>«%Ì„_àÅ£>wvÍ›¿U:wÛcÖgð ñ,ù3Õ4¿Ïƒ¿2hŽ1výjà ÁĤ[ço‘¿_p ÈáT Ðy§ÞÇ «Ÿ]-}7n²u2žž!ž%uj¯ޱ"5›MÉAᦎ´#;vécòÌ[ÖzI$fïõQËÿjL¦-¶ægö5Ç3 ²›:ñ*àX]¨S‹öðWA-YÆv˜àŽSÚ©xÞòü¢|ù ªI ŠÕR14î¨75"¹5o‹t掙–—¸ÞלÝ6üFðgê¡ÎºJ–òºì™$;"D Á7Y&ÌY/Œíò°í Òëb6hðQ¿xÏ… Žÿ‰<ùSúLþ†gƒgÄŸUvv]†W€ßƒ² /ŠÂìuLTK¦bëEhK«Õ¿Û¿çK‹çËgQUÈÞY\&fƒú¾¶K3^„‚ŽîýÏÉËé³èg‚gƒgÄÜQüÙ©Nµ=üÀÌËbµ©¶š_€çª[-Ÿ]#æ–ÉöŽè„,ª¹C¥À¿ów…Åö[!ó7óMxšÞ79v‰ÓEzþ økH}„(ˆkI&‰èH“¦ÍÔ2ïeýâfé'¬.‚CÇLÌuÝ¡}‰=:Ñ·sÞ–~ºíqë\ÚçÝt£~šNòDðg¥ôð×2Lªù6$BL9Y?ôjκÈúÖÂ]òi,¾ÇCcŽš ‚gR§äÏ~+(VÉ;ÿ“ÉËÛ¥Óÿ7Ϻ&kpÀèòQ?œ•4$óg¡I›Nï‹HO=ø %·ä†¤€S*‚;óÙ ËØ-7<±BÞ¶d¯\„Â:AÌî}àCç/Ú-M_lÝ1f¢eú}Œ¾FŸóQ¿5ÁüٽߒH •êgƒ¶r°©ƒ,›:iDw—uò“¯K{—î•‹ñz¶'‘žb—º ÀG0A…%{äâG–Kû®™l½C>ú}̵¾~ÔÔ´ ÉÓ@¡Rýl ù‰tdj]*ËŒ˜2@„G_³¾¿p—tnõçå¡Ó²‹äQ‰ïÊêà–!¤‰’åWvJçf,µîäÀÏÐäú}‹>Öi}ý¨/Bœ8@w†òèC,—Eí™ÐüŒb—O²L|x¡´vÞféøëÉË0µð©–Êo²D(ù3†¯'>"go~"“y›¤ÿšo]7æo,žßEÝÜiÏåN,ïãPÞçbÔoD8‡KµH‘OÍǵáþÁEDè=2àÒ{æXæ=»ÆúÙ²r)f>+”K¤r2”4г{#*Áhßhù¹äéUÖÏï~Æ2¿÷ €K€ß‰ëü6¼/£xßjçð¦#Ïβ(\ç0"` b˜A öëuý½÷L[$mxñ=ù(¶ä†þåaÔòØ·aáb”g÷@AÿËM‘/Á½NY(m¸ö®€{ÑðÑ7\êhÀ×t~¸ ¹#F}/ð0œªó¢µóÃL]¸³ÌÈÐ¥¿yä-Ó,ÓYjÝ¢‘Žóû¿q™Dþt+¢¤ñÀ^a„w€žý5ùˆä0Ðo’N_bÝróÖG:÷5çêFûNè ô‰É±sŸ6âG뀯ò> ãÈ"g"h3B,׳ɲlê«s˜Š.™̹7M±L™òŠôöìµÒ—‹÷Êg°¬E_l‹÷⊄@ö¹°Ô1œÍCp;["Šk¹4Ð;î±\æ´å}К÷‰]¿éAáqëPžÀÑ䛘¯ ;$RÝ¿³^&amí×ø8ËxŒª¾`}õÑWå³ÖÉŸ/Ø._¶O> 0bQœLcǯ‚ÀñÜw^erÊålPâ6ˆ½ùù…7ë`æÙ0 ½Z Ÿ}e‡||özùs\m@[†_c¹mCYˆ^Þà˜Äq€¾½n´×dNKÞ¼oð›84gY Ÿêg…=˜¿ÀeR`˜¿Þgè¬Y3í­üú@6™d¾õæ)–iwÍ´<ÿà<é ŒÆ3ß’öQõ1FgªÃ¿¡àýþ•òO‹wË¿,Þ£_²W9Žßî’¢ÿ~Þù›¹¤/g¯“>ÂwY&mú¿—¤×qN*˦ã3ôš}u`ï¢kW'´U'oÚ9>Æi´×™šs+€ïDhQɬÂõo+ÝÌÈÃ:‚¦TÔadR£«$•OO Í28H»©Á~}’RÌC:ô0çt0&kPÀؾ#®„áwü ÿ‡Ïà³¼Ø,S§Û»8ƒ×fm€¬¡mBÛÐF´•·9Q7Ò·â÷RÉhßBß÷¢FúYÁì‚ v.¢¸NÖ‚ÍLX÷ÊÊ(ÃZ™2[Åøg2éèßʼn ¾‹sà\8'ÎÍÎÖÚr¯ðzÀ·æmnÉïÁôf§Ñ^DuĬP>+èÉ s‰Äu²FˆH.%by¬<‘KŒ¶Œ)˜XØŸÆ Ò‘YÃ0jëMû»ö9pŒæíù¹Rø¹Ûòk%òkÇò¶DêÊÛlã÷à z1Ú‹Ãm2è|Ú ÆeEK.1¢8[s`Æq&èH¢Y'Óÿ_"ÿN chiaki-v2.2.0/android/app/src/main/res/values/colors.xml000066400000000000000000000012711447035777400232020ustar00rootroot00000000000000 #162d50 #000128 #ffaaee @android:color/white @android:color/black #77000000 #fafafa #333333 #22ffffff #88ffffff #B71C1C chiaki-v2.2.0/android/app/src/main/res/values/dimens.xml000066400000000000000000000011221447035777400231530ustar00rootroot00000000000000 88dp 176dp 24dp 16dp 64dp 48dp 32dp 48dp chiaki-v2.2.0/android/app/src/main/res/values/ic_launcher_background.xml000066400000000000000000000001701447035777400263510ustar00rootroot00000000000000 #CFFF0D chiaki-v2.2.0/android/app/src/main/res/values/strings.xml000066400000000000000000000220741447035777400233760ustar00rootroot00000000000000 Chiaki Chiaki åƒç§‹ Settings The Console is currently in standby mode. Do you want to send a Wakeup packet instead of trying to connect immediately? Session has quit: %s Failed to create Session: %s Login PIN: Entered PIN was incorrect!\nLogin PIN: Reconnect Wakeup Connect Cancel Quit Connect Settings Discover Consoles Automatically Address: %s ID: %s ID: %s (registered) App: %s\nTitle ID: %s Register Console Add Console Manually On the PS4, navigate to Settings →\nRemote Play Connection Settings →\nAdd Device On the PS5, navigate to Settings →\nSystem → Remote Play →\nLink Device to obtain the PIN Register Console Host Broadcast PS4 < 7.0 PS4 ≥ 7.0, < 8 PS4 ≥ 8.0 PS5 About obtaining your Account ID, see https://git.sr.ht/~thestr4ng3r/chiaki/tree/master/item/README.md#obtaining-your-psn-accountid PSN Online ID (username, case-sensitive) PSN Account ID (8 bytes, base64) PIN Register Please enter a valid host name Please enter a valid PSN ID Please enter a valid 8-byte Account ID in Base64 Please enter a valid %d-digit PIN Share Log Export Settings Regist successful. Regist failed. The console with MAC %s has already been registered. Should the previous record be overwritten? Overwrite Cancel Import Cancel Import Registered Hosts: %s\n\nManual Hosts: %s Failed to import settings from file:\n%s Dismiss Manual Console Entry Save Registered Console Register on first Connection General Stream Export Registered Consoles Session Logs Collected log files from previous sessions for debugging Export Settings Warning: These resulting file can contain your secret Remote Play keys! Do not share them. Import Settings Import Settings from JSON Currently registered: %d Resolution FPS Bitrate Codec Verbose Logging Warning: This logs a LOT! Don\'t enable for regular use. 360p 540p 720p 1080p 30 60 Auto (%d) H264 H265 (PS5 only) Swap Cross/Moon and Box/Pyramid Buttons Swap face buttons if default mapping is incorrect (e.g. for 8BitDo controllers) Rumble Use phone vibration motor for rumble Motion Use device\'s motion sensors for controller motion Touch Haptics Use phone vibration motor for short haptic feedback on button touches Are you sure you want to delete the registered console %s with ID %s? Are you sure you want to delete the console entry for %s? Keep Delete Edit No Session Logs recorded. No Consoles registered. No consoles added yet.\nEnable Discovery to automatically find consoles on your local network. No consoles added or discovered. discovery_enabled on_screen_controls_enabled touchpad_only_enabled rumble_enabled motion_enabled button_haptic_enabled log_verbose import_settings export_settings swap_cross_moon stream_resolution stream_fps stream_bitrate stream_codec chiaki-v2.2.0/android/app/src/main/res/values/styles.xml000066400000000000000000000135341447035777400232310ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/xml/000077500000000000000000000000001447035777400204575ustar00rootroot00000000000000chiaki-v2.2.0/android/app/src/main/res/xml/filepaths.xml000066400000000000000000000004611447035777400231610ustar00rootroot00000000000000 chiaki-v2.2.0/android/app/src/main/res/xml/preferences.xml000066400000000000000000000077051447035777400235130ustar00rootroot00000000000000 chiaki-v2.2.0/android/build.gradle000066400000000000000000000012241447035777400170510ustar00rootroot00000000000000// Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = '1.8.0' repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:7.4.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } chiaki-v2.2.0/android/gradle.properties000066400000000000000000000022131447035777400201450ustar00rootroot00000000000000# Project-wide Gradle settings. # IDE (e.g. Android Studio) users: # Gradle settings configured through the IDE *will override* # any settings specified in this file. # For more details on how to configure your build environment visit # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. org.gradle.jvmargs=-Xmx1536m # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true # AndroidX package structure to make it clearer which packages are bundled with the # Android operating system, and which are packaged with your app's APK # https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true # Automatically convert third-party libraries to use AndroidX android.enableJetifier=true # Kotlin code style for this project: "official" or "obsolete": kotlin.code.style=official chiaki-v2.2.0/android/gradle/000077500000000000000000000000001447035777400160315ustar00rootroot00000000000000chiaki-v2.2.0/android/gradle/wrapper/000077500000000000000000000000001447035777400175115ustar00rootroot00000000000000chiaki-v2.2.0/android/gradle/wrapper/gradle-wrapper.jar000066400000000000000000001520711447035777400231310ustar00rootroot00000000000000PKA META-INF/PKA(MÆø?TMETA-INF/MANIFEST.MFóMÌËLK-.Ñ K-*ÎÌϳR0Ô3àåòÌ-ÈIÍMÍ+I, ê†d–ä¤Z)¸%¦ä¤bȵšè™ñrñrPKAorg/PKA org/gradle/PKAorg/gradle/wrapper/PKAïzZ—ïÕ -org/gradle/wrapper/BootstrapMainStarter.classVYwÓVþË–#DgH !ÄÎbSJiIh ¸ œ@c5¡žv²”Ê2$ݺ÷ðÚ—¾–›–SzúÚÑ?B;W²opšœs—Ù¿™;#ÿýü÷g^ÁO2Bx[ÆaÌKXpAÆ .ÊXÄ%—‘âË’ –e\ÁU¾¼Ä §¤ƒ¸&Ẅ)ÝX•pCÆ»ÈH¸¹ýX“p+ˆ÷¸¹Û|yŸ/w‚Pe¬#+!ãǼŒC(HØ8£š='À­ “fŽ èNi[.×™uM]׉J™YU_U-ßkDÑÞÐJb)Ó*$ –šÓYâ¥nn2+qÞ4í’M—%U3Ò¶jÙÌšà/ñ£€£ÑµÔ]õ¾šÐU£HÛ–ff]Šf&4Í:ñ¨V<ôµ »./šEŠ¥«QY@§Ë½¤Z}Ö4l¶e'uµTJ™jŽ1ìjÌN\_IÕ±¸r‘¢vHzë|;$îšó—˜½aæ Õ X,¯³¬py$9ؘ¸íM/yýÍfÏLÌqËó[Y¶ik¦Q’ Q)òš‘K©e#»Á,Ìp´)OÍÈżæTGµ¬£d`­…¯3ƒ¢€rÚ,[Y¶àh…Û.Î-(8‚Q3 û^:J=GÁ]Ü“ +(Â`*ØÄ ,¾´”q_Ál0zFq·jq½†8~Á¹óXlãCŠž§ž`5eOÁGøX@Ï.ùÊú]ª„„O|ŠÏ¨Ž^’ºYb¼ >Ǩr-?Ô º¶ÎÃûBÁ—øJÁC|M€Ý¸¦½¸¦ã·(+–„o|‹ïèìz^)¶Vd;•0Ÿ4Ëz.b˜vD§÷`³ˆ½Á".¶ˆg3réÜJD3V+ø?ðÐ~0þ?{Žšg7°ºˆü¶y}…^@O4Vß‹³%\¬I¦Z$S$9ÐTïô˜Þ.Ù¬ØØqž…f §]™}Uµ˜AÃ!æ ÏÓ ´ø„¨+øµ ‹©Ô{³e‹òîý n]*¾Äìd›¹0}‰»NεÁ0mJ-kмYq¶ÎZ‹Nìeeÿ‹x4Í5ã¾yÞðéz7n#4¸©‘b­$ªw–÷‡€Ñ¦9Ó¬“z¦œÏ'e4Ö2l$¿¬ò ÝX†)ÞÓL#¢jSCÅv)¾I@ó¦EBM@Ûä³ ÐÏm¯Ògù0}ŸùŸŸy´¥[‚vvÿDÂc:t`ŒÖ€CÜc´*®Æ¥2&HŠ+?'9‰öüÄTËOáˈ@Ìø¦+ðWH?TA°ŠÎñ ä°XÁž°R*Ø;ãûC]$Ýñõ¡']AïL ˆÊø&éÞw#,þ…þG\ï7 xìÏ£;†NZ‡Èûr“ôå?‰a\ÀVÁmˈã¿èFX‹žŸ&1å ÊcqBÀJCœl"‰ãô[F$k'èÿUBÍmžÄk$uª– —÷:ñÞ ŠH”Ód…¾ µ”VÉc€öËO1˜™ í«bᥩgs¾Sâ€xègŒL ˆ'x* ¨àà#Âþ_ŠÂ/ÿþó‡2¡a/O0REäÏ ’[ž€š&HÇé|Š q¨sä6‚œ!0~t÷M¢u —4ßÂYØO•?G'‘‡·“’ËN"ø;8ïøIþPKAh‚df£Õ#org/gradle/wrapper/Download$1.class}ŒM Â0…ßh5Z+v/‚ ׆žÁp!.M”ˎʘµq¹§d#c-l¶–̈0Öb¼\¦­ù7p™¬K^\‚«d‘NüPKAñÎ&!org/gradle/wrapper/Download.classY `×u=OÚÝFVH°`ðbÀúƒ- F’Z$²`l´#ia5#ÏÎr[7ŽCâ4MÜ´q>Nb'NZ÷_ì† Nì¦-nÓÖý7m“~Ò6ýºiúM?iÒóÞ~´Zm§¶õæ}î}÷¾{Ͻï¾õç¿ùéÏØ).Hàºa¼TÃÞgdóYÙ¼,›Wäê/èøœ_Ä/iøenx¿bàWñyÙüš¤ùuÙü†Ûñš†ßÔð[šðÛÂø¿‹ß“Ë¿/›?Ðñˆ?’ÍËæ‹¾„?1ð§ø3Ùüy E}YÇ_øKü•†¯èøk[ñ7AÈkàïð÷µø¼nàñU3ræŸäN_“3_ÓðÏR™‘Í¿Êæßdóï²ùÙ|]6ÿ)ú/ÿmàþGÇ7tü¯†o؇—t|‹_Áã&„½*ÚHT8"º"$4]蚨‘S†.juajx—&ê Q/tÑÈ]ÅM„5Ѥ‹µºhÖD‹.ÖëuÑŹïFj"nÒÅ&]lÖÅͺˆêb‹.nÑÅV¹Á6Ml×Ä­š¸Mæ ãØ^ÊJ§í´@xÔs/-ôfüYÛñ“S–ïzõ£cÇ Äbö9& êú]'í[Ž?a¥2vµ´£@mßø¡CcÆOT­œ ¥Ü™›»lr½™îÏJ¤ì5?o{ÝCjq¯€Æñˆ5gS…¡sÖ«;e93Ý1ßK:3\6¸yŽLÒÇrî®ãހ奒’ª¹„ª›ážÂò#;ëJ8TîR äYÃxʤ,ß/šá–ÊÞX~fe6Ge0}ž;^t=%¼l;Lµ­w0äÜ„í$dÎ­Í òoÍÒRq.ä¦s ³ÆM—NözSijs3Þ”-£‰0.`¸Kîcâ"•Í›MÌãaÒ&|ÙdpÁÄ÷ãʹݬïÏwÍË< 5×ÄS´á9®U2϶•·åˆvMt˜¢Sti¢Û·‹¦¸CÜiâ ¼ÅÄñ´)v‰»˜~ QѧBÖN”ƃ®4C”.I»e³Gw›âÑcâ#xÆÄ x‘†êw*Ëkb¯)îûL±_ÜgŠ¢W}¦è51`ŠCâ°)ŽHÅž’\mRæ/3ïÛ M5Å11$ÐT ÝãE¨ D ˆ^´ÒÑÆ.©ÙäÙ‡M1"ŽkbÔ'Ę&b¦8)ÆM1!†LqJÝ,…™)Þ„M—ÍiÑkŠ3²w¿lβᾘøü¬@Pú*mŠÅC—OõŽ ŽŽŽ§ «è‘“'G£*AD—gˆ¨{Áö¢–CmÓös~t) D}7ZH¹Q2E+G¼Q¼ädFÒtEGS6ÓƒdK'<ÑLQ`¬‹˜“â\/ùH>­+G|_&™RÁÊ©'­Cl~ Ï™bRžrJ$La‹iæÉÛE±©®>•‘41cŠYÁLi,¥&ñ²¨6Å9q>œRömEŽú\ª9éætÊ‹*M8šH™bNðÁñ“‡: 0WÌ/£+°6UÈBQ9{©ëÒ\ªk2é$ºZ¾å/ÌÛLÁt€ºiÖÌs?§Z¯Doùri³1^HÉ9»dϳ¸IƒWðM:z1éÏ®âûd:ê¸~4™Ÿw©C"ʹ&ŒèщaÙ‡™ºrAÞ•rF¼n–OŽæôgŠ´ 8•¹º.äó˜™åóSCn8·4£¹é®\Ú4Ø[6m©L¶q{º{{:Úº=½Wý·£¤k _dH²JNb^©°:¸´¼iµ„¶“›—elÁñ­K%®(ÅÁë-&ªZB’‰ûø êòXU€º€[Š2ÊJo#mûíi+“â½±±äZF§ö0Kó#ãOjay¤É —ÎRš;ŸHziUÙ&¾}—¥A åRYµ¦uemi­\ä,é’çg”ÑNI±¡LIJª¥ò IcŒÙgX8.Ù÷¶ EIåò¶ž))¸˜’JL²¼“Lÿò‘6,Mÿ¥”¨\z‹„¦]oÎòËŽPÁRާÂ$0 !lÀ9œg?  s;%caùD`?,_ êëç¿|+ðkö".±]àhAø­ik‹/¨mQ„Ul£Ð)þ{ØkËâ{ñ}êw¸%H¨žU¥zRXµñh^Ä\‘¿Ümn[DU[ûUT·u^E -¸Š`[ÇU„¸ -ÉÝ íVJÛÆý¶£·b-nC­Ø„J—]¹‹ºl.ê²Y³Jõ<¥‹ìI­œåK)¯Õ!¥%°6¬_CÍ Ô_‡‹¨½sI—zÅßAt¢ ÝJ¶™ãËËx o!uΘՊ¾¡#‹º,êOµµw,¢¡|»;¸ÝìïRÛEs,Å£4àq¼U‰hÀe¼œog?À™1öŸ(«'äOxu¬äz‚í×ИŚžÐu„ã×ѧോh‰„²hé ´µG‹XGK¯ïÑ"p$¢e±!ÈbcOpM+^Ò{t9ºi·Q³§¶fO]$ѳØß]Sõ,æ®as7Í/"Þ’Å-×±5Þ¶ˆí/·Ô5×\¶öÔµÔªomKíZÜ:WóÞgÐÞöIT‡[³ØqJMÚ{j9º°ü´7—[ê>…¶:#zusMíÏ늇öëŒo@³èê¼¶Î,ºŸÇÖž†Êëš\4¼ü‚ÂÚkx&{_Ußœé˜hîæ¨‡÷Òüûˆ‹ýÄ×}ôï:¥{ÑÇû1ˆŒ!1ÆŽ0øhG‰¬cDÐ02‚'qO“ê8Ÿ¦k~žÔŸ#õkˆã 8/á ¾Œ³ø  q|sßÀÁ·€âaÂRî75©Ç+x~€½Æ;‰U/ãñ.Bå!ø»â5”ö(åžgdÆÈûCxj)ñÏöÔñ$¯âGð^¥¢®'öòpb/§*Q‹§ð>T ‰äGPèx?>@Ë,M—/ý<²Qº„ä–ë¸=Þ–ÅNÁæþÝÉ¿]ü»‹»±çJÑà!Åp®$d¶àCTE&%ŸýyÏä3Ñþ¶öEÜ=Òù*/„ïi§¬,zž†©¿—Žïß{ûâ‹Ø¾/‹mÌZ½üfÑGD—§‡z¸4Ø\ýÉbp¤#|TŽ8ŽW7a(ÆÙž@§ Áp#=ÁH äêp¼º=|<‹QŒ¼‚WÈ“¬'ËX#Q‰¼'pãñð„ŒóS/SIÈã¿1æ¼ÇTòxDÙ`ûV®¾ ëy¨n¦”¢oŒø‹q爹Lj·Ç‰4i¢ûéùõ¤ø8‘^Mê­øQöœYÃótÚ9š57÷8ýãø öbŒ°ŸdO¦¶'‹æ}R™’2åþ£†X”¿‡ä3ò;8’îØ~3òp8Îv¤ãnf|oÌ{œ ±'‹Ó9_!>Î,a®E] OÑ#ï£*ïg’þƒûé_ï,*³S¡‘÷3Úñsêú2BW”¯«ä/Qyµ¾È=%’Άï§BCá³J¹¤ráÙöÂÉO0lÉO(<Ù¨+÷°X<ÀO0§—cñP„=-ŠÅõöX¼1ÔÁFëŒ]ÃÔ•2Ø>Cµž¥Båµý1Þ|Ï¶çø u”#9…òG á³´«IR%̈½ªŽÁAdÕí%ìÙ rŸÝ¸Æ^ˆ”ŸR’?YU"TašÙºü¿^HÂø?PKAÔN/Ý¡Ê1org/gradle/wrapper/DownloadProgressListener.classuÁ ‚@Eï+ÓjDËöEÐкe$B‘Ô~Ò‡)âÈ̘ÿÖ¢è£"¶ÝÅánçõ~<¬0ðàyè&±ª‹\É8´ÒVfs“EÂ1a< 2y—¢`+ΧýÚ÷çÂ0T•Žx—æL˜nêQ«D³1Aj,¬—­IX(ˆDË8gQkY–¬Å?…0úæò&/׌#ë´#‡Ð…Ó>ôvà~PKA~ˆ0^å 3org/gradle/wrapper/ExclusiveFileAccessManager.class•V[sç~>YÒÚë568Ç5ÐD2Ø‚ô@*»$FÁT s²qã„BÖÒ‡½xµ«®V€KOIKÚ¤mzJÚ†rÓ›æ"Ó™f&Ï„\µ3½n§¿ —¹éMgzQú|»²‘¸Ïø;¾‡ç}ßç{WýïG8„Û:žÂ¹<‰ 5Lj8¯#Ž) _Ó‘Ä9µyA­¦Ûñ¢š_R'Ôðu5\TÃ% /·ÃRË=(é4UÖ ÛqYÇV%¾³:æ`«›+:æá´£¢ì¹íð:QÅ7tø¨éPO@ýu}®WqMÃu ¾)ÐSoûDæ)H=¾å–½J$¶mÙ×¹Uw4§5Ñ.»^A>ÚP¶oeIªKeÙ·1ê‘ÉÉá#Ô×Y"Y lr†T™°g]+¨ûԙ̭Mô‘ÏTªÈI†#³=+ƒI2qÜvÅ—¶t†•Ú\±fdÞñjòlÝ–Ãtõ=ô^DE'/;JK[ÇÖ‘a4^Ý/5ë¹ûÑìRʆpÃÀ~00ˆFkh¾…o <¾ú…­ÛNYú¾ƒïø^!O†œÒ¼WÕÁ¾oà¸ià55ü7Yì‡6ÎÕ]õ—“.p0ïÕ²ézYò¥H³j©$šå%™—=ßT´2/—iàG‘£× œÀI'E%˜ÍÀø±†Ÿø)Þ4Pĸ†Ÿø9~!Ð9µÓ»lªX~ÉglDiN–Ík–0ÞÐûòK1£7k^&gjø•·ð¶†_ø nhø­wpRÃ-¿Ã Vêaô-a~¦nÁ7´šŠ!ƒ¦"^ 3…ܓά~ÇENY^nIgÖk™Iåß-UzíõZ&ÔüèH`ïº/c…!¢MVæY׈þ/†]Ë®ÜvÚµ–†ÑMÀ£35Ï©òŒÌ l]íé”Ì/u‹þ¥è6è;7`®¡vÏ]´ÖìŸ-%™œ#k˜¿DÍ‘²Ê‘>¡ÐíH6ÊÞÎ ›­°³9«‹¶Üñ·=Ãð¥#­š\rb¡È «æZ®§¨Ïþ³¦‹0ˆ°Í Ÿë§ø)nC id 0À] :zUÏàºWµ ÎqÞ !Ëñ wÓ”iSŸð;Û?Dl`LJh{?T>ªÅ9ös܃ìÅ&ìÃÓ<1#5|_ˆ~„nD¸RŽb\_¢ÝÄÊH  Ï,">½¿Ä"’Ów qÙÞ@G¯Î¡Î;0N ò6OÅ躅CjÞô:ÕÜ} ý‹è™nêön¦¥{—t»/r ‘K2”- vÓ:¬‰\Gªã/Ug}Ú[·qx[§{ûîàñ\"•hà‰\2•l  >ø{*yÛR 4Ñvó.¶¿ûàeb°ÕõúT.ØÙ»‹ëý+`¸‡Ý9=Å34HT¡M|è ¥ÿ)×¹¾LçýœÑ"hÜgþÿ‰OE7sØ-6«e™p¿_ÍÌ´ª×k¬H…=¤"Âs¬ËEVÄbÑË”¨²z5ÖìUVçMÖçmÆm|¿GÀ0ÞÃÔZÄ(=ç8Ž¡€³}ÿ'ñEÃi¡á Q}(ˆí8!v±¹ïå]†wq&äÈ2¦Š{ôð 4zmÐOŽgäÁo¸¦G®¾‚#äÍÚ|–gmH‹"aìþAôG5=ÃR+ȃ»É¹Íw¾sæÌÌï??~Xª‚QÌÉx¢à)žIˆ)`^F\ø‰F° Ṃ½zQFRhMÂK K “[úöúA*_ÚÉ®o¥ôÒANÏ–vÓŸt†pêØ854˰«ZÎsM»ºÊ0Ý+e²éŒžÍK{z‘ahÓ±ža{Ãjrâ¿…×÷ >4¸fÚ¦÷‘¡?ž(06 %Œ¤L›ï7k‡Ü͇}8eÃ*®)üv0à™ †DÊq«ZÕ5*×>»F½Î]m§å4¸»ëÔxÊqNšuj}¸Úg'ü-šŽ¶mZœ0òZÙjw¥äœ¦[æb!Ú‹3)’UD0A\>y²IˆäA$¼R±Œõf Mðxƒ÷f˜èžûFÓ´*Üe]Ó«x‹wÔ¯–ô «x ówuð¿Hú𘗽ŽPî¬áñÃ`•{×!ïŒ!¿}%½nÉx/ qè¸}J†hÍ®0,Þ‰²=q@žã‡îÇ{ÔÆ,ÝúQzýˆŠi’Åi“ÝGã7ü !™8C’“ÑH3Ò `_[(É`+8Ž$U€)<$Â4µ“OZdô4Ã}—è/îý‚z…@‘¨¾„ƒ—:CÂøY˜×…"D "Vˆv IÎ †¹ëÂ(&ö%Óê¿®—)[|SW/ „©þ9Ôð‰s ‡,öÂnì%Br¦Uvö/PKAë¬j“¦ 4*org/gradle/wrapper/GradleWrapperMain.classX|×ÿ?}òùlƒl0" A/l…‘„؄Ա dlcbHBù°E$‘NŒfu$I›¶t&Ý3I'I[ٓδéN÷Þ+Ý{ÿ»;˲t€ý?ÝûÞ·×û^žüÏÃØ 6©Ø†»UlÄKäòR¹¼LÁi%\‚—+x…¯ôãUr÷j¯Á=~ÜëÇk¼NE•ĪÂëåáT¼oRðf5ø-*¶ã­’çÛäòv¹¼CÅ}¸_Á ÞéÇ»$èÝ*–ã= Þ«bÞ§bÎ(xPÅÉå><¤àý~|@E>¨"‹ ù5)—Éåa?¦üxD…Êýc ΪxVñ|TÅÇðqŸÀ >©àS*¶àIŸÆgüø¬¤ùœŸWðùùEyø”<ü’dô”_–Œ¾âÇW|MÚr·\¾îÇò÷~|SÅ·ðmßñã»’ø{*¾Èå‡*~„«ø ~ªàg*ñsÚýí‘®Cûºúíìëé:Ô·g°»¯W 9ª×Ãq=9°R±äh›@E‡™L[zÒÒãC TDÞÙ5ØÞéêÌñ©vQöîëîÌA—Í‚•n%cÖ6ùõ C¾s„Òª"±¤Ñ›I6Rƒúá¸!•4£z|HOÅäÞú¬±XZ`]ÄL†GSúHÜŸHéããF*¼ÃÞîwv=z,I£| þ ,®?Xl²-]O’_µÇ±€êrÞ¥§*Œ˜Þ‹<­O™<´bFZB””iZ1â–Žë©´ÁÕùzFã±p‡™HèÉi쇌ʢfò8I‚K N¥-#±''*AÇ4y(æ¸cüzž¶Ôç2/ÓÓí©ÑLÂHZR-ÇWÎGb£™ kmQÛ-6F^y%öÔ1Wk<Ç‚<2»éñ*5¬ü[qÉôU<((î#põ.Š<.ìŒm {9De¬vÙõõ…¸4võ…G *ËZÜ_x³;ÝjsÑH0§Ùd¶e÷[±×½‡Î……² »þ¼Œ½.…éÆïy:«ÇÛö‚¦ôÊOνãyæu/Ør.öÍ ]ÐèÁ²ðžÝÉT‰Ëñ§š9xá°8ƒìÜÕS¬;'æe¹½¼, «W—á–2ÆãºJRil©ŸS½Æ¶º¹‘Òüªh‡¼8iÅ«€ ÓtÞ-«§«-ÍØ¥bÖ©p!Å®8?†ãùÊr†/>Њ¸Îœ’ß’s±—‘S$7ç&dçr´MÏîž-É2yéaÊyyI¾³ÇRæ ù³½“Ï¤Û Û@t̰ßƱŒ§¿å“;Wh[Ã"°ä:ãx…G0zÐxr‘­]CvYcN¸ú‹†ò/ºs ê>gh[Rïy.¥•Ï´ÞS|òž›÷lå«=ø1Ѹ)/‡Æóçèì@ÞnE]œÁáí6}Óyº1Ùê©ú…xçîÂusÃäóŒsÿç…×(»cÖ;6bš7fƇú CX…ØÀ‡ †°ŸÃð5ÜÍC÷Ãy{•ûyû îæí+I!ä†ëõ„„!k ¤qâAå×R¸7pÕè8Ìß2D1B,‹ÓWNØã“˜išÄü.¾Þ)” O ´Õôe¡ìúJ…x~ l`ØP²(ÏB›WHp¥ïŸB)´–K$í ¯1‹@ké$ª[• Bhéjˆ²(‹ÅYÔy²¤Õô7O"(7K[ËÖOâ¢V5¨6NaÙp°l ˹VLbåBSX5ôO`õ.žÂrZ›Åº»w!Àu-Ý¼Ž–ÖÑ] ¨E#–£ ›±;Ñ‚½tÚ5Ø@ßl‚AèI\†Û°w /ÂVœÆ•8‹vÛw㎈wÄÞ#|6ŽÑŸe˜@Œ_2 ñ9†ù”ónDœX{a"$}~ÿ3É¥”âRP(«Ãçü”¶™³ ¹¦^Çq‚ñ8iËèá7_on˜£ä5¿uôäê†õh˜Ý[낚ò@3©¤b@'ªÑE—l·Zì°ÂMTö×QÛ(U¾„]—ºyUNvMο3ÙÕ—]å¶_@·äX´»xµ¶ÂY¬ç_s %Îâ’ l(dדǮ6ÇŽ¯t—ÝýtÔ{W56f±)‹ÍY\šÅe»ïCEd [†›&pÅYÊh ´e±õ^,‘ÀÀ•¾G±mx~ãÀ$®šÀ3κʴOàê3¶¬ôÍå®&+( lˆÐAÔ`Sg?“èVï[Ã=º€·áYÜÕ0xÏÆsÈi9š]˜_¾]­Ÿf0Kø;D­Ytîn|¶f]Ž:Û™Ä;"MÔigS ;‹]=ë§1vKŒõ½<Š4Ÿi•µ úÎî¶ÏzYð}gÉ}%Úèjéîû¸ŠeÐÃï]ö¯cÙFzü*£ lµL©•LÊ5Lì&z9L_Áø·1w1uw3m¥µ”ÐÄŒ¹ƒ^ݪÏÃó _Iè ˜Î‚˜åôÀ íh¥q§k÷;‰éÑÆ@Y{îA“¶ÜìÍ¢_z39àä©E ,e!Ìä »€$w w¹Ü·¸Ü+§0H¦”0}…uS—J—‹`ÑI¬ÿPKAçìXsªÛ"org/gradle/wrapper/IDownload.classEÁ Â0 †ÿÌéæ¼ ^õbñ¼« APô^·26J;êt>›À‡;•É—üùó|Ýè{èz~¢+%5O“é&çWΔ(Ùa…_Ê4[gR„³#!XÝbQ”™Vg=Ë{}1±¨÷„A´üYÍëCÂX›”¥†'R°Êð¢†5Âðc/¹JÙö”‹¸$Œþ£æS‡@pP¹„\ËmKuíØôlïÀPKA«øÔ6"org/gradle/wrapper/Install$1.classWû{W~Oö2Ëf€Zp[hÑFØ, ¡P mC—@Bcu²;l&3ëì,—ªõ†·¶j«V¥j½T‹w©’%më­Úú‹ÿ€¿úWø¨ï7³›Ýl–æyöœ9ß|—÷|ß;ß9yû߯¾`þ¶ [𸠔áC22LÉO"‹‚3‰Nj(&‘DAÓòd%pJæÓ"±e˜‘Á‘ÁMb¥$> /²H|‘T8#&g“8‡ó"y¢ÁGEác²|²Ç':ñI|J†O'pAÄŸIâ³ø\Ÿ—`“øBO%ð´<>#ÃÅþKIBþ²†g5<§á+ ]g »Çvó†}Â*=h٦ŠÜ)㌑µÜ¬¬w+tŠNÁ*ûÖ§°º¾ò¬©Šo¹Î¸gÏ9¦Ÿl„F«D-ï:'­bÅ3DO¡7çzÅlÑ3 ¶™=륒ée'Ây¨Y•ö©Ö0cÓFÿŽc•…î0˜m8Åìœ" âþ´UîÙª°®]”§ì¶-zƒ–cù{.¤—R\˜„v«ú^ozS‹Q÷Sˆ¹f}eÎrÌÑÊÌ”é5¦¤Ý9)Ë1ód]Fe— PÐG‡l£\6)¹k‰Íôlã¾£tÆBu¥{[ë›ôgJóÕ¤ÈVÂm¡"³ogG|“»p=QŸ1¼Ó¦ª/wL³PvÏ:¶kÔ 2¤lœ4‡[¢ûn)gž1m²ˆx»šœç¨+=×õÖ,Ü÷ùR}ïZLnd¯`;p.o–$fYÃW¹…únƒ¬ž:eæ%Ò²1«è~Å£×}‹šâÁùŠç™ŽŸbþH»°cnÅË›aJôZÖ·ˆ {ÀÉÛn™å>dúÓ.[Å×t<¯ëÀný¥_ÇvîÃ;q¿Ž÷`—ŽA|ƒ¾šCéø&TXÛJ£ýË.˜žŽ‹xAÇ·ðmVq‹{ZÇwd=ˆu|ßÓñ}~ ²—ðC ?Òñ2.)Ķ” Ï×ñcyýü”Qëõ¤ó âñg~®ãø¥Ž_ᲆWtü¿Ñq³:ª¸ªaNÇ5¼ªáºŽßŠŸßÔ^=lÚ¦/NH*&ÖõÎÓÝkx]Ã:~?hø£Ž?áÏÌà¸ó„U*‰.‰°Áw©ø&þ¢ã¯xKÇÛâò€l~ÝR,'«Zk©°~ÉbdÃdž< wÜ8Áæ=ÓðŠ+ìjÛFÚ6€E_^$-`yÑô+$Æõ¨1c¶Ò·Ñêķï­/ݦ§,ÕøAÄï†"…{ÒízZksê´ÊÃõÒpùyÇ­rˆs%qî›*»vÅ7þ4cäóf™]x+ûpî–ûk›m4rugg¾£IÏ÷,6ÂôÂöÜÛz2Å ÂJ³v› m_Æ:Ú¶'WÎ-ƒ´.(C­‡,U†Ô 1ǶËêÜÞ®°Çûòà­C©gl÷ >¥FF…ùÇ»[Rº°4‚+Aö’±G]ü-ÄÊÔaoÿß°[ŒŸ+JÛªM<:Ò½íϬîÅRrfÚ(šçè"êSæ}³ïV`r›n² „ßMóñØt(7Xª7¯Ðv´GoZ3snæK¯Ø)vÿßW£fW÷ßr¥†½uÔ<+"là}5ËÛÎVÄ»ºä°8o¯Í<2ƒ™§f0óà fž¬¼ºGøÄZïåÓt@ã¼1³y*sï,:2}³ˆdRÑYD3©Ø,b™T|ñÌUh¯P³pŒÓŒÿ^Žzð¼û0 ¹ƒñH¢½w<…˜xW/_Gâxæ :ªXvÉãWÑ®ô*–w¯àPÅÊ«¼ýP©bÕE¬ß\E÷E¬¡@‰0|±z·]-»_€½„hd×Ñ9Ü>ºî"N/gÍ|œh*ZÅÚ ñ>‡wÔT»STè«â*Uqgør¸OE¯a}©hèí®‰:¬9Ü=¼åù<KŮ኎=òô.…7ˆ·¹‡ARqî%DS ”ŠÏ¡gâÒ^¯yŽUñî*«Âxüñå¦7iš‡hÄQwo¸Œ´ú­9 ÐL3w¸‘yˆqcsØÌ\ß;‘Š]Ø!Õ}k9ö#MNí"ŸrdÒ$yT ‡¦É¢çäF]a•ߤÅß±ÿÀþ…aµÔ&^J2xX á ªàu‡ÔóU/â°z ¬™Ä2úy1N”–›ñ0Ÿâø'Y4‚ƒdySãTZ=‰GøVaR$šCäWAíÇ(™aä·p˜LŽ2Æ*zï§íc5^†ïÆá(%QJÆ»ö‘¡ÇB†_‘°7–©¢ïòôŽÕ Ì»á8è¿ǃùÞ¼›Ä˜ ðUÅÏ4øû/PKA ¹@$ö) org/gradle/wrapper/Install.classY |åµ?'÷æÎÍͰB¸¬#Év4(’ ±! a1 â$w’ŒÜ%ÎKëVVZí¢u·w¨¥UT4*¶u×ÚZ­¶ÖÖgk}í«}¯oé{¯o)ïfnnn’AÀä—of¾å¬ÿs¾ó}yõoO=KD ù£õq@Eš 4yÒ„òÐäK£Ê縕òx…'øˆß~.D!ž(c“¤)ñdž"Maˆ§rQˆnãiÒ„ž¢)›Ï á­VáU!Z^«“¦^š¡°Z(œä5ÒÓ¨ðy .ÈMA^+Í!:‡×I³>Äçó…[B´†Çy£<7ISâͼEá n•I[C´Ž·…¨™/Tx{ˆZ„o3_äòq±4• ë!jå6…ÛC´Û‚ ²ä‘·3»Ø­. òNyFE˜˜ÂñuÀ’hùÜÍ—Jc)œ ÑNnÆ–‰)…w)Ü¢n™›à^YÐ'Š^âÏóåòy¹¼]!>¹\á+™ˆImŒÇ «.ª'“F’)\ß°ºvSÓÆõ-74®Ú´±q]óŽõµ×04]¢ïÒ«£z¼³ºÅ¶Ìxç ¦qu‰xÒÖãöf=š‚.W1¢‰ÎNÃbšÑ”°:«;-=5ª{,½»Û°ª›œA¬ F=ñhB0ÍöšØXŸ.ݺÝU cmQ¡<×kÁúì9X4Ýèm¦’æ.cµ5jÛÛdr­×Ùª½(4sÈÎ4㦽’颒OÑëÓ59¾Ø¥›™üu‰ˆÁ4¡ÉŒÍ©X›amÔ1(H´ëÑͺeÊwºÓow™ðÜLOÎâ›hÒ‡Ú-C·z3i3á©Á÷ ‡v˜)K·ÍD|E©ët3Q-6W´g3•ž0)h{ËlKÉ÷&+Ê4Þ%7ìêM1¥0{JK—¾hé²–TŒiRTT¯ÏTøjt7îfZr\+ϳ œá\oZ¡†uVæ[Ínù†-£[–%þÜ‚ÁöTæÍxnÉH*¥^Ñãë2z™ØÄ_#<Ùáω!$f¹Ó“F{Ê2í¾êµÀ"€XovI[VvˆÓ 3<ãÝ)t =†Q†m©ŽzζUˆ¶¶>x_·u¦<0u%`š6FªUÎ*ИÙiصñÈfÃ2;ú²mµ!‘†ŒÒo¬zc S”íÛz#Ùn™Ý®ËüÓ‚:ÝV7™ŽžSGB¾¯{öÚ¨¹gŽä¶RÖîreOG_]—Ѿ3)¾YZ2VÚãjƒÀTb®`C½ÝNéQÇÓyÉDÊj7<ç½ÝF»mDœ‘`Ô…TӼ᭪_·¬y’m£íæq ä˜hòZÌθn§,c¬ FÓô0É´¤a7ôT¶Xq½aÅÌdR€ŒPMm³°Lf0‚~Fdƒ¡GÜœ˜´#‰”¢ÃzuŠé¶íLðG‘Ã@§» ù8˨뭄d×U)3êRžF“ÇNcÎ×e‚oEΊÆ8XZ©n?{JÈMk1Ðç~Ô%b1=Ž(S±"a­ÍxÕLn1ãØ— µ¯¤t+L$›uY™1¢†äOËÃR˜¨$SÎ~yñlï‚b–hOÞæø!”›Š_fBñ9ž±”íˆ\#n[}_8vÆÒj䤑$Gdr€Î‘uYý’ç„”)›}Q±†x*fdµÏË1d·P.J|Ec¹§!:¡=ÑÝ—•ƒ˜ªJL³°Ù&$›Ui éW³Z²¸fôb“Žöi 3óúªPc ó_×v ºU~ˆ÷‰Áö«ümÞË´ý˜B¤y'Á"¡Å>›*?ÌßQi/Ý£òþ®Ê߃U¸Ë)³Ìv'k‰ÍK†ŠœR/Ž·£žsbzŸÖ¥ï2´6Èk¶ë– [ë1í®ªâ¸S[1ÍîÒm4†6߳ܞ¯u[ ,´û4XºOx¹H«L#­*=µ5)Z53 ãX¢#‘%šnA´t6FvéåZ‡•ˆiºf[©¤ØË- ªD1-»ÒÔPSÕhÅÉâøPZÔ¤”!·;cñötmWã8 d´Z§@3 ò#‚ÆGU>È)ü¸ÊOˆãq?¶êá´YkYzŸäN•è•ó“*?%oƒðýLj3ãéø<ÝùXÎØ ÕÞ¹í]±Šßò¥KU~†÷•gU>ÂÏ)ü}• `,kiŠZ‹aaCµœÖ=\Ìi «F“èû¡ÂÏ«üïŠÚ1UÎüû´;¦ò‹ü’Hõ²4¯Œ°P¦ÊSùUÞƒbAü!±ôÚд‘՚ʯ˴ٟ^°1•Õ%RшêÉã(ˆ­z}ÔГ‚3MNÁ“p:"Îìp0Ø£Çm‰ÆæþÒ³©‰@I$«â¨íTþ¿¡ðUþ ¿©òOù-Œõ¸e ÊoóÏT~‡ßE êYû¨ô;þ¹Â¿Pù=AÇ/ùý!K©ÑTþ|Ì¿ìÌíŒu#Š·iÙ)9{Hüð¸[Ðé…?Tù7|Ê¿åÛ‘[½' öê‘Gõ·èäOÉCžuÜ—å3ÔÊR£–46Êsþ ^ jÄs$ý‰%¥£o¦š”uÆžRâyªÖާÓŽ“¹ùL× £ÄvNõ†+Ñæenvæ²g¤ÕNX9ïz, §Ï2µžÙØ ÛSÈøq»ºÂI„ޏãp7W(8ãS.2p`†úŽ~ñvè¿Ðã`^zœ›Éé éˆ`rÛªÒFh”êŽè¶”?èpaˆ¤Eð—”Ê É¤‘™É¹%Ì·k†/K K=ñÀq¥Óîrâ@x‰åt9£¤nìüÌýJűuõš´CrŒYÞC)3Ùë¶q> t8iÙ9ÄŒ¡¾m¬{<õ)ô’Lî%“æe0¡.cŒŒ»Æ¥HÁÉQT†ØÉ‘Ú=I»Ñ_Û–LDS¶!ñ4r“ìCe?ú°EdŸÿ×Cšá³ìdn˜£[¾¢r¯dôšŽ‡]ãËI}yr/#€v®=JÇ\¸ä›Éú¡‚ "è8óÔãßwÅDèT§Çq”rQW©©%7N¾ê-Ç’Ù†¾ø˜4¦S6&Ý´±õ:Çš‚ÏÐKø˜ÇV9o'VN(fÅPQV¶y¿8Íûp/ZMJ_IoP±ɹ :ó¤9æFIòeæÂF²Çút©ÊtÚ ™dÅÎÜ’Ô-7T›Z2ÿáÈXá䀦D' aÙsš6Hó[ JüÏPi«¯¢å0ÝåG0ZT²7=\9zØ÷$UåP@¾,Yh“Ùhw>=T ½9£i³ vÞÂ"9X¹†£ÇAï ôªŽ¤çz²uê§´NÏÀµ¡òEª+« ê¥ ~Á´€X¸¥`‘âˆ^ÞÒêGÇâ–ÖÜÊ–Ö@Ø/ªÔä>FKOKý‡iÙpÌÎuœr^EùˆÇ)ˆÈ0¢ñtįöopb €>±xÉG$<鬂@5è)'çÈ›à?Çytâ$[©§¡Œ«Ô›xJ¬ÕÒr`ùt î3î ÅxÔ4W>»Ìï[–[ˆh¸´ÊÂÜE5p ŸVÜAjE8ð$™C[vçÉT ûf¶Cðf¨u |s+•ÐmëÛ!ð­t6Ä ð ý'H§P9=KG°~pþœƒºðé÷ñ–+Âe¬Mû1j⽜Œ÷ÜžCèùcÚâïyzÁM§ü>¸ä¡ÿc ê,䊃ƒTÔZ^°r€Î^Ë̓tNkàªmõ¬‚ë êà8ø¯¾e€Üü¶ù ®;÷N: N¤50VcÁyýô9q4ýÔÔOk÷ÑêAjn¤u­2ý?@$S´`ÁÆEÌ·©µ&ø"…•‚Í.ÔÃÁ–~Ú²yEÂÍûhªËv+^óÝ× ›»ÒlæÛG3—Á‚‹ðrº"¢÷#ÈóqälQÚ{`ý{a±û±é<€ÑbD} æ¯BÌ·!Â{çW#¾¯GLïEÄ<ˆ(Ø:ÃÞâýqXúbcp< ¾àý°ßvœ=ˆÆé%Xýjl?/Ó+งfÑ«€bÜ,z^‡—kh'ýˆÞ€—ÆÜÓOÐwÈy{ÓöÇÏL?u:V@˳èCdÌ@écÐú=%è ô{ÔaÿZŸ ®ù(}‚|úOŽE7Àó°Ý~H¿m·c›ý-V@·`þ¶…­2½‰þ!½…ÜšÀñåÎ Ü&˶büàåfÙëÑ'`)žäGuÑ\^‰ª¢u™ÿ._QéÔ=ûŽþ °èE<§F—sÿ‚öß¡ö_PÔü »¿BèÿÎ@D3"CÁýŽˆÅPñ#g—›ãìÝ>¦ˆþÙɬ'éÏ îŠØ€9¢°RVŽ­-8\”‚3†š;…þ5ÍP¡KÛDˆ²­fvÿ ýG:Xªñ”Y¹’¢¼I«î—4ÿ't»8pb‹ÿ ¹‹kÒé à"Þ«Ýpd´ ¸ZÎÿÐÿzÑñ8I:ÿGK›y=¬#I'3£2öô¤ä–/Á ¥ (¹ûzvv÷õ ¹¯O ÂNìéÎo6Ÿîλ²Ü ¬pû¼ŒÁÞ´a ÊaQ-‡séóNÎAÂsn㩨øÿPKA¥y0ºVorg/gradle/wrapper/Logger.class…“ûoÒPÇ¿—Ç*¯1ÆpL˜ EW†o1&†d  f&û­”›®Ki¡ÿŠ…ÅÄüü£Œç¶ X³žžsï9Ÿó*þþú àO“Hàf—p+Û¨&Qƒ,D]ˆ;BÜ•p A‘Ð`ˆ§wØ ÃÚ3Ã2Üç ±êIí˜^m{À²]Ã⯧Ã>wÞ©}“N6»¶¦šÇªc;8Œ¹§Æ„¡Ôµ]Ñu`r壣ŽFÜQº¶®s§Å5m¡Píž©TÅT-]鹎aé-‘PòÉDÕ½ +TŸ€Y†Æb|ûTuz|<å–Æ[µ…‹ž·(N$Ö&c†bXC3”Ùé„RãWuÄô:”Á+m§Úõf=m†dÏž:?2ÄØRþlDL¦‘BZB3{¸/áAQH£ˆGB<â å 2ÃÆÿüoúg\£·Î+‰j®Š±/ø÷>M\>¤ {JQ¿ÃVÞÒ \ZW‡ÔHþœcÚÞHX¦Å \´ŸâáÅÓ_‰)ÎG½t… }ý РéÙã¤Fœô ÖIfÉ:B„~@Rþ &—~ ò•¬6H®#Jò2bØ&J9Ïò¼‰–¹ìà‰=WÙ-øíÄüºPKAbøi+è&org/gradle/wrapper/PathAssembler.class•Vù_×ÿ.HZY¬m,c;`HeL!ªÝÆmMâ–+¶”+ÅNB´눕²»²¡Wz¹Mï+=Òº÷}“Ö‘ÜÐOó{ÿ¨¶ßÙ]K ˆ&ùAïÍ{š7óïÌ›·ÿþÏëÿpÿŒá<ŒC”®ÇPÀFŒ’)à žWQ”íMYX*J1Ä`ÈNY¤¢°evbPáÊvE†›*nÅp[1lËçð±(>Ã'ðÉ>…Eú´ŠÏÈüÙNãs2|^Åm_ˆâ‹1$ðR_å/Ëð1ôU‘¾Å×eþFߌâ[1|ßç/GñÝ(¾''_Vñ}?Pplº´®'Mǵ͵Šk–,ZÖ² {¢¨;Žá(8uy~lrzjuiaj~õÊlnjuaq>;sYA|ú†~SÏu«Y «0ªàðDÉr\Ýr—õbÅPpdn~ö‰©‰Åú©#[Ï%ǰ¯”6EÃ7c–2›Eƒ&"š–é^RО\Vš(å©vtÚ´Œ™Êæša/êkECü øeÝ6el†Ü “¨û§Kv!ã»ÊܲõrÙ°3sº»1ƨ6©iÓѱä~×âíhÁp÷ó±šleë)f´×ÍBÅÖEwtð-½¼‰pál}¯-Í´t¨ º¦;ÆŒ.DFó4ë‹v©Ä0l¥Ê\ÒU³¬`6ùæì½ƒ8[d^­ØÅ+º³A‰úÒC-¼´<|xÓp½`LšÃqôùJޱ^±Mw;“Ûû7õÃkÛ®TgÛµq c<±ÇêÔÖºQø‰8ž &Ö66K7©-×°æå±£ %K΂ÌûœõÈ-ÃÍ,ÍgYè\²‹õ"¾¯Mãe¦]AŒFÇ™!ýþƒÙhTHʃ ¥Š½nÈ&+}_ È £xTÃqQÅ+&ðC ×𴆧0«!‹i^ä½–5üw4<WºÅxÅ,æ [ÃEç'ø)Éhø™¬Fñs ¿é—¸£àü;¯p±ñ+¿Ö0ƒYÞêÜä#*~£á·øŠßkøþ¨áOø³‚.Ø&ÍeÆÍBÖr‚ ú‹(Œâ¯‚hGÁñ™VÐÓØ¯X®¹iìù³w¢T)æVÉMl°0¦U®¸ ¿4FÄö«Œ˜Âßðw wñš†ªD|WÜu67@ 5ÜcòƒÎÆ‹Wa3É›¶Šhx]0Š]Öždþb‚¥•0DÅzÞ*Ý"˜Ä[QHŸ`f×n뼿ÍËÉÃÉÁæj<ÞÔÕÆ½ëJ¶¬êfå9¯’#âÊÊ+~[w:()éPni!¸ƒg›n CËþaò1 ÃXËV¼¿­·ò°·Ák{©Qpúÿô¿'d½÷lXÎùª³ù ‘žà·¯PrPX¤RÎë.=„“ׯd$ˆ$³þΉd¶e²R­úxcgqÃ.Ý’—Ñ‹½ƒ:ãÉ[³×Åd‹pHÉ!§²v¿kžLf[û•†ñBE/:Möü²¼ºŸ‚mÇ56}^çì³çndgøUtž_`íèÆ#¸ïçª I®?°gâ}r”{l‹ã꽜ÎáT Ê«žê%Ž1Î@Bx¢¤ùJø0Æ8‹ñÀÀãÔݘH¥_C[ÃÊÂ?¥B„yýž¥“¾v`I$% &0Øü/=©œo§ÒU´×Ê¥†jϤ†Ó5D.†v¡®È_Ñí"¶RCWZ‡ãG8t‡8Tq´†Î‹áûºÇöéÆ÷ézÒPãPdÇWRÝáîH ];õpzá˜d(ƒ8JFO!MÐCØÂ°Út=´Û˜"=¬~Ÿ^f.Úxê&µ.–S°ø] 5¤ò R¦Ãx’R„š|œ2Ê\…8¤ˆ°½Š5œœiDâƒöÁï4%ðwÞÖòmÔ± x8Ošò’¨áäKm)·®tülõÞA8½“nï­âÝ ^â^4O2SÓ´œ#㳞ÿ„¶î¡ õ<¨ÔXÁU¯Èùéø²©-vzÈÇC¹!IÁÀ¥>:Úê =WÅà 'K˜qhŒ¤“Øã´ÞÈJOÝkžalq8U¯b4^"ñ/YáwIàÿ%žF&Óñdƒ¯ šº‹¶t<å­:¥èãé{`.†w$-A½ÄGX'^ÑdîWû{ÞhBú4ëõz}–9Xeuè{®ídé$Ö‚ ¬{çóÌ T_FV»ÊÿPKAdzÌß’= 0org/gradle/wrapper/SystemPropertiesHandler.classV[S[Uþ6I8!ʽ4H[¤µ„[R/H%´*$%¥^ê!œ&‡†sâÉIoõúZ_gêƒoÎ8ÎÔ—0ÈŒ}÷G©ßN"äÖÊd²öÚk}{íµ¿µ×Nþúû?¼ˆo}èŤ‚)ê0éÃuL+˜ñÁ#où `VN"R»¡àms æ}h¤Q9.H±(ÅMT,Ix¬Ëx§+X•â–Üä¦k>ÜÆ»R¼'ÅûúA#îàCš‚u¶ØZlyzþÎâÒÂ"ÅôLäs›Ú}-”ÒÌD(æØ†™ 4MYfÆÑLgEKeuú Ã4œk®ÀÀŠ€{ÊÚ µyÎ0õhvk]·—µõ”.ƒYq-µ¢Ù†œn'id†ç,;JØÚFJmÛZ:­Û¡ØnÆÑ·m‹ÇÐ3³šI·ÍÚºSé8(¤kX¡#¥‡ Ó¬c¤BóZšë¼†ÉcèÚ–€¿ 1ÓY§à"L0±Î#daz'®§Ã2ésÝÓwH³Ù-ÝtÊ9ZXßÔãQuÆEŽ’ý#ŽnkŽ%“?•>ÊYnMCyÚEÄ.³–LV×.9õé÷1aé(ã{7ýç£å'ª‹\m¹Æ€ 1#ajNÖfŒégs}☾˜•µãzˆž§T<(—ª¸ˆZ÷™Õ2Iî¥ ®b\ßQ‹ ®§TZF¼«"¤ CÆn¯QrîãÄ—²¦clé%ήÊSMfÔ†n \˜¶mËîÝNêfoÊÒ6èë=®[ï]ærUÅ&îI‘R±S&d©Hã#¶Š Y÷¡«ØÆ/F戠 ‚]ãŸâ3ŸãŠ/𥂯T|oOÞR-•—X@-¥mn¯+Ûü6ëPydëËs œ9v•ö•Dxâ)+#ƒÉtLbGÕ÷b ÊT$5\/¶Û³ð^Ç*˜x;Õ@"kdPbYNÚÖ¶ì›|þõìþ˜îÈã—ÞxšäÃXf¯M±éÙ‹eð’Ç ­Ú* $µLTßa·™ÊS?zeZ*g?ñe¶Ìªá$ù†Õ"—µ«OéfBXÊû:“]Ï×w"5Yr%ä‰.ýûG™5•½\Îk p¥ÆòÄó8Ï2€—‹zÇ œÕÁϯå%ZBGÏà>ÄïyH?e}ÞèG€R-0€AŽ Â0Q\,¾ƒ›Hà·CÔ­íÃ57˜ƒûGx†ÂCCýü!”5FöF‡Grhà×·uÜ-¿ûÉz£‡P×ÑDô©¶æZ¢5‡¶‘}´?ΡãÑ‘œx„ëTºÆÝ~wgÚü9t?ÂðÑä¹zÆ=~µŸÐ9ä÷ä]gé=À9V÷þ9z ùèG‰q9?ú1†q4Ò#E;åYxqÍ䱕 úÉ_Yëçgˆ´9ŽQ'-a³ŠØ´> £õþaù¯àWŒæI\b´>tä.aôw™ÚCtÙGzm¼Š—ð2)Õpƒ+Gé%µ´Žqôâg\Ák,…ßs×0K0Q,NÁw•Úµ|_§öF^{ó_PKAÌ ^F‘ù-org/gradle/wrapper/WrapperConfiguration.class“mOAÇÿÛçÖƒ>‚€¢¢"í!œ à3 U1U H|C®p–#åŽÜ]5ñSi"1ñ…Àeœ½[ ¬ÛÄ73³3óŸýí\ûûÏÏ_æð(‡K˜É`6‹Œ îq?ÇÍ<7÷¹yÀÍB‹iÿ~y»¬Vb¡ôóç÷Þ¼™÷›ãÍÌ[½òŸ_°ÿá±ãÍ2êðDOÊ✠OñÎ[Bxko áí2žÆ;d4à‹q.„wÊXŠs $ù.ÞÍÃ{øà{yxs߯x>Ï;äÕ‡Âx–çóð‘0žãù³ŸçÕGÃøÏçáa|’çOñðé>ÆgـϱøçeìÄØÄ‹¼ú"¯¾Æ—Ùü¯°ÀWCøÏ_gö3!¼ cæ˜}IÆ7ðM½,ã æe”q5ŒoIh9Ü›êíîêO ¦z††G%DúNª§ÕΜšŸêL[¦žŸ: aI·‘/ZjÞ:¦æJš„Ö*€®CéB53uhø¨‡¹ºŠ™>zh|Çî=ãé‘~ «ÆzSãéáÁ¡žZD§N.˜FA3-]+JXi›^²ô\gÊÝ'ó+RGôÙßhKêF'Ó$QŸ1ò“ú”„-}†9Õ9eªÙœÖyÆT t®ó¸=w ™’©Zº‘§CM“†IzNjë°nÒh˜³vŪÁï„ØsVË”èº,Y¶´OÏk¥™ ÍV'ØÖHŸ‘QsÇTSgÚÙd¿½S²ÃLÕ8ZPÏëÖ6×Xåª-Ç$Ht¬Ù“=g3ZÁñ8`Mëèö»sieÁÔ ª©Ö‹”H%1u Ëb[lyÍêêå (%3S¹š Gv (†ð"墩©YiŒ˜9:3ÔlÊ“a=O‰«©3®äto¾P²ìí!,P §4ËkYE;UW,!ûò!¤ ßɉ±·–‘R/—U.çËë2 ‹ìS ý*{¤š–fŠ ¨æùÙ䣃ŒÐmH mwR(aÅ„þm À׺[ì¨1C>/¦ð9×@U°)v«q[üìUœÚœPe¯Ï¹»EÊj“j)w³Gí»+¤1_¨°©*QIg©Æ$OÛ͔φiõëÅ"ÉUœ•Ó"yí’[QS[_Âúÿ]2ä‚·F%Äjäm²Ã!·Vºš‚4¾MªýŠšy/ñ0¬àe\£þ\qx¨”·ôÍ­0 IǦh<:IÆD7o,nŽf "ó†ÕÎRél¥š©` NpC á; ¾‹ï±ÂïSÛ¹ËêQð¼VÁ¼ZÁQô*x˜ÍŘ‚à‡¤'ë)Õ.µ¨)¸Ž ÿ~Äšª$Rª5­àÇ,ñ 3›½Ìô´JoNº4£à'6FIÁOYLyT/¤é"4[ÃϘûó*† ü fü’M>}’‚Øm”rY(nNÑ3>15Ó­©_)g_ÍÀ¿ÁoüŽW¿%ßÒlUû̱Á§ÌâÔÍ|qz¥`ÐcéÍ!OÛc=PðGü)„?+ø 'Ec!üUÁßð÷þ¡àŸø—„CFT$|ôŒnMGÑfíË/´Œ>©kÙ¨ž÷uéfšP^¬ñ–žÍ[êYO|šÜ®<èÙÝàûDU•=5¿E1ëE9V•†¶(IУ8£Zþ}ÀÛ9í¼õo)Í~]ŒÔ/-Ö>ËcÕïK5Õ<1œUT¤1_UME?áZο[eíÝÕ5²nž«x[–L§Æô‚­N.z ›cƒ;›ˆß¹µO›ÆþNQh ˜tfZãßú"È[vƒs?*_bÍ®xÚη  k Zŵh÷óŠD®2ò2æûÜ‹«ðaf&g°§­·(Éó [â#F$ÓÝ~Üâ™_/ô{XÉ®¢%|n÷ýŒ¨qëèë1ýÊi@ ÀƒD½Š¨:l#ú‡^Et—‡^Ct·‡¾‡èÃz=Ñ=z#"Ü iá-fêÚ4/!Ý}è'É¢ºQO+ eÒèêFã‘Ee-£¾ŒÐœ€¤ÑÜ„Š}¯Ð rBHð’ñy„ŸÇê4ŒFäÀKX<º(ž¾ ¥Œ%×XYÜOG#Ñ'ŒÚÐáÑ•tÜ?޶.é Éhg.^F#á-%¼eW°<ž¼‚HÁÞw”¿v‰ìâY<‡˜ãw–Ѹ¼Ù@?·cvPtw’ÔnºÊ=Ĺ®{/^}˜Á~œÃ:ÿ!ÄÜèÚS"r¢WbÇD$çpœÎ@¬8~’XqbÔÑ=Ù4ò­eé\Íí DE-yƒS‚Òá2šæÑA;[)-æÑ9—¨ÜVDD¿›~¾¬'lÅJËÑĽ87î7 ù!⻺Ób"°‘ȶyl¿9ÙVÆŽã Ø9*–»ÊØ]›&ý¤tM¤²’&ë¥U2ž8ªž slòÚì%WïëO$ç±—þ÷]„<ÀsÝNet#šI°™|ivÕ¶R €À(º¤&Bl¦¹|a¢Â¬µn¦®‘¦®J÷©b‚Pnš•¡zÏšÙA3¶ógmÍ=ìq0ì8(Aäs¾Ó9ä󵇧<‡ƒîá)L;1É‘ÑA¾Ì¤­ýÀþ@G¢…®úग़x?B±Ìa9% #î²O¹ Ž“BK„$s""$›§³2™mPPn8ñé Èqà “~áxB P•ÕúPð¤UØÕ†):#¤#„´ÈFJú!Yž‹º‰W­êfÉÁ™BHÑhBªÒÄÇe×m`— C£Âߢ/4ÑÄà2ÞYP–´ôaçÞ9{ï¹sæÞÝ?þpˆ# ìèØ5ÁŽÏ•÷By9yE†xÅõ\Yeˆæò§ ZÝïp†Õ†ëñ“a¯ÍEËjw I7|ÛêžZÂUû ¨ÉÏÔð…c:Âêt¹iw]³ÖHaÙ²î÷z–×Qduß;çBrQfظÌõµÿŸïè&D•V«\%6Ý# ǹƙun™]ËsÌ·¢XË3Ø»ö·e9†H‹%Ò²¶ˆ‚®IÒk.Õ=,È÷-1à‚ak^ÀÌÁß1½è”•¬)…ë9¶(id0^}±y_º¾7бÇp«é:ž%‡‚®ì`i6¢Êt*­ã°ŠjºBL¨ FÓ ›¿vU³Wõm_ÕIÂÀm†ÌuוD ûI˜8HâŠ7˜†Ô¼&†í%D…ËÌDÕ„3ìqON›B ¡üä:ACvs×Ï€úÒbÁÌ0¼\8´ùy’ ³3CEwþ&T*µÔôkYú+$@Bèß!KÍ¡5I»YF6V¸ûANwh`+´&ÇXEŠìÝKHš,£Î­Qž¢ûFV#»ù ‘ˆžJ#h…Rq„ØÞñïÓ +dAy ¬Ó~#¨TçN*)oÞ°À»OO„¢Sx€‡”«Î‘ 86'çÇ?šÆ?¦ø'äk„<ų@z†ž±—ÅV`·ÿPKAáyÆ0Lç ;org/gradle/cli/AbstractPropertiesCommandLineConverter.class­V[WUþN2a`˜r‰¤¡Ô„¤Ä ¥µIÑ”R Mikì$ÂÐd&ÎL0ü ß]Ëw_Û—Q\KWŸýþuŸIH&Ò”%Yœsöž}ùöÞgï™?ÿþíï£!á>ñ‰„‹Hó厄UÜ•°†{œü”ŸîKÈà3 Ÿ#;Œul c[|ùb_Jð!7ˆØÀWœØæËŽˆ¯¹þ®ˆ‡"1 ¤4]³Wü‘è6ƒ°j”T†Ñ¬¦«õjA5(… q‚Y£¨T¶Sãt‹)ØûšÅp#k˜åDÙTJ5Q¬h‰tÁ²M¥ho™FM5mMµVjUÑKÜ쪡S5“ ãeõDèh³fk†Î0‰f”C%QQôr"g›š^&ÑIè]ÕV´ŠZb˜îñÌ*šZËâPÑÐ÷´rÝ$ÈáÈi°жÓ"\<5÷Ì0÷jy’6Z®Î’n"#i±ØLÃ×d©C+ÙLFÝÖ*‰u¥–Œž¢©r5ƒŠÀ2T¤§êѶR©«kš©Z– )Ø+›>mž2Ýa*CQlƒ#6ƒ±zDãEÇ ÕÚUæç4º‹Ýç¨vry®w‹¦¼0½œîo­QT›E<¦êæ´²®Ønuxí|öé6zN°÷ûäjnÔ¢ŒzY ¥ÿê²^½•:^7½9£nÕ{¯Q¬¿N^ä¶d¼‰I†±Óve¼³˜ñŒw‘ñ­Œ' 9þ¤€¢ˆ¢ŠØ“QƾMÆžŠ¨È¨B—a Fwü¶Œï@M luòå{† ]ñʈb®Ø¹æ…ý™öJwH¥Ír½ªêvûÊ2̼jœÐ<<òV'ÚÏd9ÃøÉx•÷ë5ì|¤/Ã#¤Õ5S—#ÿDO?0¤ú±íÑk{¸ÚŸ$Mzm¸ã’òŒt¶xV³xËtsµÖ˜¤¹Ö¥Ð1>ƒ^.ÍTÊ߆ڰÝ÷ìCzsê.Ñý®k·º¨é%µ±¹Çꕊ ŸùuR¿ñj÷9M†¬:¿Ôd‡’Éô|ç†"½øÂ,}@\ÿÁx×ÓúQ Ú©7Xøì9|˜¢uÀe†0 Þ·®.ã |4¸ûlkŸã;ɼƒù–ÑIûi¿ üß®Á?·+Ð&äÖãÖãDŠw^z B uŠ€NÓï2Âä‘#˜iZk"pOaúg$7J(BÚŒ’âÞÿ"ï´çcܯƒ!Ò1†6®Cføkt¸Àð¾[¤q0º~ÂxœÈ±cŒû±ó3¦ˆò‡‚“B( ™ùÖp1 Y¢Iõ¥¥¾ÌTÀ®¹ñÛúËØ©”Q„cB… óWì~Í¿ËDÊc¶¸D yý få@Ì]õtžÓ»ÓîLA^ìýŠŽ%«6uåVõ©1«Òúš¥8(c]3 «2gÝèy½»íÎñ¹Ÿ°=Ý´oa³²ÌÃÌ©Š kqÓv×>PKA'H g)org/gradle/cli/CommandLineConverter.classQMKÃ@}ÓÖÆÔ¯ª'Ï"4 F¯M)HQ Þ·éºlI7²Ý”þ6þ”¸M¡“B–y³ï½aæç÷ëÀ=Îtœœ$S ® ¡ß §lÁü”)á¿®Ù8åA {Oyb¯ :Ë„™©¹ƒ3‚I¡˜É5'ÜÕ JXd´T"qxöž{a¦…/4›¤ÜORé¿1=ç“Q6›15 ¥Ú¹³ë¤6¾®Æ‡EÛWb‰RhèÀ{'ôq¿j<¬R”å:áO2µú%¹Ñz \ß®X„ËíΛ¯„î ÂÍvâƒùŒ+³ÙT›@h`uš-B-›íÙ¬eñ65°_TÜšJÇVpXÄkäÇÅ{òPKA´íÓÃ7&org/gradle/cli/CommandLineOption.classV[wUþ& ™4ÚhÓr ¤ mÔZ@ZA(·j/Hk+E„i2¦ƒÓL˜L¸ˆŠ÷ë/àÅ7åÅp ¬ÊZ.Ÿ|ðgøCÔïL¦“I&‘.zfŸËþöwöþöiþüû×ß¼€ïbØoÅÂB;¶ãb;qIXo‹árïàJW¡ŠaIF.Ž<4ïÊ(ÄÐQõZ–.¬kQ¼ãד•(ŠbÇCI ×…·%†² [FE‚l–lÝ,–%tN^So¨ÙŠ­ÙYÍ•Ð>«Šª]±4 {ëwǪSC-²³¶¥ £Ç表V¡²¢í¹Û%:mò7Ôr™G¶4®¥…g<¯•s–î‘ÂKˆéÅ\eIµ9“ -’_Á2+¥Ý^–0ÜÈÏ´ Ù‚¥æ -›3ô츹²¢ó“zQ›q‚8|cy­di9ÕÖò"czQ·IH¦|á'lÍR— mt`^BxÜÌk"U„™®¬,i֜؄͜jÌ«–.æîbÄt¯Òû½‹; PÛ´H!l/ëÌþžg®ÏÇKBO}p¦Þ%Ðì-*—Y÷Y‘‡XA³gÖ„³)5ξƵaãËjù„« #©€`Ö“—#?!ªu¹ö§ÖuLññä•;xÿS~ÁnY»o½d#–V®¼Y_`÷dE7òšPÀFµTÒŠù)­\V ¬Z6Õòðb0ˆ(G¤ŠÀn^Yé á:†‡‚¨ëËP‚w=aæMÚRlÀ­ÞÖo©— ÍwDÑI Ö]œNøúW¡ëÙZûŽõ²®N¤¤'Òq(õ?°YÏš+§ÑEóôN Tqƒ¢¯E8§–—EÁNì’qSÁ-ìU°G bå¶‚÷qGÆ >Ä”‚pWBWc1d|¬à|ÊÒÕ 'õ2Å“l!û°_Á9|¦ ƒ“z©öž]Vpg¨nÔÞNn|Žq_àKáû•‚¯ñ‚oEèÝÏJTñ™¥kZÎvÄ0¿FÛÙ˜7uV<'hdƒ  2ƵWpÌyƒ_ABNgD&x÷Š9ËtN;P=ÕcWÙ­L«Xé÷¸w¼ÊQ„9Ìq¦=½ñµ@!_ !ºg}œÛÝ@N4ÙØ dØá× ä$Æ];¬ƒsö):XôÎIf¯ë(ñ}ŒM ia%›Ÿ`‹cv'zhf#Y ·•Y eI:Y’^^u/s:D®µd »á£å)œ&xª\"×9¢ìÛ~IÂ÷~X¦k÷cô-d‘‡^¸V„$NˆŸ³^jcMWñêÒç†Ö9ê,äXŽê$ú¼î†?î/|W •S 9Ý¢ð¢…ô&yª vÔ­LóaSý9|á¶ŸTyÁWœ.¯8ÓÍqXä[àÌ7ÅÉxJqqätøË-òr—|²q 9Dwâ !®6…˜ñnãoÐDãòMTÂù¦ÎÝÎËMœE/7{䯧Áhù4\p:~ÖÑ\…$Æ­|ú„™^Å6šµ'°ƒ_ Di^§Z,Ÿj’·¤û°×ž ±’öž‹9Zo:Öü¿PKA2_e¦è(org/gradle/cli/CommandLineParser$1.class…ŒA Â0EÿhµZ v庈kCÏPEÁÄv¨-iIõp.<€‡S\ºp>ó?fÞëýxȇCD„èln¶àm­˜°ÈMÛJ]îkÍ'iÛu#ï’0ßèBWëêÀÝÕ”!f„¥±•¨¬,‹BÕâçy•@ˆwZ³Í•tŽ!é‘BI]‰ã¥á¢#¤ÿHIê9|gèߌ|{Ÿúü õ-™|PKAØ:Ü<Ê ;org/gradle/cli/CommandLineParser$AfterFirstSubCommand.classÅVëNQþζ°°-P*Þ+^ØDÀ"ZP.RZH•ÿ-e­ e—lñ|ß *‰ñŸ‰âCçì,º…øçÌœ™9ß™™™=?ý e ­›i‰Khƒ,‘lȇaÜ1"â>׌I1.∠>LJðHÄc)†FëµV ÅzÓ†Y ¦²^Tå|Q“§­-E_Okºº¤˜%ÕL’õ„¦kÖ$Ãl¿»ù¿¶x½Â.9°Âà6ÖU†6.Èìl­©æse­H’Ž´‘WŠ+Š©ñ}Yèåî2t¦^Yª9£™%+·³V†dðÏëºjN•RI%«QWC'áPœ¾ü_ËRS C‹¡ç,Å´²Û–fè"¦ÚÞ¹Š”a½ìOo(o¹¨è9g™š^HVKÜ=¯Â&<ŠYà‰«Â£/gØöäTEhÙ²¬Ö·wl’"ž0€aóB>¼{x »8„·q¾$ø2Ī烔3v̼:£ñŠ VÙ òôøÑK~Ð.â©3˜1çÇ<ž1ô¸eƒaÜÕ‘ú¦nìê'”@÷i*?®á:wl‘j×õ‚…Sàƒ§)buÖ”S3ÔM•[îV†/Y†‘sµU=197¦vS=ÓiŠ¡³÷ •»{Õ,LjêLÉçÕR)4§*®£1œÎܱ´¢¼¨ló©qL@\P-†¾Ê!‘]ÛPóÖáÙJ‘ˆ%UÇB{wÒx¹€v¬œ3õ6ïB]£®^´_ç<µ+¼–yyêý¯ÔEÏ‚ŠúË·Ñ{€| çÀçÍëNÚÍÑÞCÔŽ|‚ŽD÷áù@{]´¶r›E›ƒÍ#H² éÈ—q°9šL$c¸A·9¨ïÑ/ÑTø#„ÏðF¿ AÀw4fb?Ðqq5Bš¦0ÛGóÞ¤Unwßj$J"ìPÙ²wäJd‹hgt±,BlÙv'ì\täN ·ÑKnpîqGwá p”þ²‹Y Ÿí˜Ùߘùa6S.‹ 8fsa;jÎEµ³³1q…èe •^\Ý$¹Iô–WBQšèD£àO­’¤÷}þHK`Ê+`hÚ+ýPKAxûëÚ¤)3org/gradle/cli/CommandLineParser$AfterOptions.class­•mOÓPÇÿ·ëè(ˆÏ ‚@ ”¡¢ˆ1|ÉDd^˜\¶:ªÝ­éŠâGð»øB•D?€ÊxnWGe[ Æ4é=çÜsçœ{Ïmþúö@KTLjHcª—$]Å´†$f5˜˜SQT1Ï©¸õ:Õ’-,†Ñ’ëÕ̚ǫŽeVÛ|ʽ†U]9ôYbHݱ…íßeŸŒwŸ*3$WÜ*ÁsÒ°¶[ß¶¼g|Û!Ë`É­p§Ì=[ê¡1éïØ †ì½—¾å=yãۮꪖ·âðFÃ"Õ<93H‹®§¬óuþ~ÛZ÷¹ç7 C“¥Wü-7.jæºïÙ¢¶4µÅà^M&×6ÉÐçŠBÅ5†¦ÜŒJ“>Õ°ÕÜ!V|ml¹ÿn˜Æk®øSMæ¯ –;Õ/IÅu0¬ã˜ãÉÅ ”½9ù*2Œg ƒ¶îîzë¡-[c¸ÍgV™EYùº‘E/4 ‹±ô ñZ¸ïD‡Óé6%cÜTq+‹EÜf˜9Q2LŸdûæOÞtƒãw•a¢íD»W!ÎáC§^ÿ mÅM·-.Ý`^­>Øó=^æÎ®Õå#PF¾˜iÈö”=ERÙgdé#íi @Ñ/H쓪 ŸÞýHÐÊçèa›ÐØrdnº#S@ I,£ç4†BèÒKI|l±R—ðE„¡´ YÎŒœiEGî;’›†þ ™aϧ#ÀJ,4][À\”Ò’’/ârˆ^kÖ$ÕøŠ”~HÕä ÛAšÙ‘TµYk’ó²ðÑwŸ|dü”n€íÉp#’aªÅIáJ°mRÃxÑÕ`å Ó9©00@^gi<—”?@—h,Ј|šþf ýPKAS¦6éê| <org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.classÅVmSW~n²pq³hH •¶h¤A /„*IP Ô·‰m”6¨m7aMW“]g³©þ…þ„þ ;ÓZƶß:Ó/ýýž»C0 Ž3ýr_Î}î9Ï}öܳ÷¯ý @eœÄÒ1j22ÂXâÈɰ,#‹K\ÆŽOÄd…cUÀ>•!ã*ǵ!\ç¸!ã&>“1Œu޼Œ68 ·íïôFtŽa"oZÕTÕR·kZªRÓSkf½®ÛyÝÐn«VC³r„^Ö Ý¾Ìp}Úþ&Â1owàr3› Òš¹­1œ†f½¬YwÔr,¡¼YQk›ª¥‹yË( º áUí¡ii×t«a›å–Oå¦ahÖZMm44‚-y’ŒötD' Tö =Äé> ðimÕ² OlÝ48¾`qÇn,Z´É×Ötþ‘ú½šª©F5U´-ݨæº-3ÞÔ»|¿jU…t]þèÛ™žDrîM û¦©~·tHUhÅ8,›\LŽ£È†Çï$•¼Y§tó=›MZ4ó Ñ~ö1ÈE³iU(MDŽvaf…Ü NaLÁ(Þç¸Ã<’Œbó]›ø’ã+%l1D¼$Tp÷2ž‘î ó©Ñ#O´¤à,&«oâX±ªÍºfØWŸU´Ö§?Ûri¥E²F¸ˆ›s‘©ÉÆÔ,Cp/? åGZÅæøVвˆXa¸èy¤õ4Ú{Aø¥úpáíêA?„Ü+OUKÛOè …ù£_pºWÞézh⸠†õ¾ŠP¿—JV+­Ñˆ.ÍÑåZèã>ϸ±š¶^KÝRŸˆâ¹Ï@…¬ªÙ ç:iº™òzo§iAF0˜ì‡Áéاî½Ty¥§³F÷«iðM&TÁ)5ë*É’éÁóÞáJµ«u¸Ç^(ÿïÀÿ%nâ(^¡U˜Þa,åF~øDµ§¿×4»As?õJ,þ |±xbþŸhîÇÔkllv‘m”Öqò gDÕ–l ã\ËëßÂõÚ.¤R<Áv0°û¾L¼÷á e¥1éO¤]ó±Ú…\ŠÓ4#¼ò|Ã¥ÐqéN”üÉâ w0òû.B%±#9&½F¾÷¼M÷48ÑÍÕ,ÆYl v 9v…Þ‹«ýE—X›¾†)Lm1š¡‘l!†}œäIbR$Yºu¸­HÔsG-¶§Ö pÃæ01ÒÃ1Oê3g´àè%F‹8ï| Ž‹8Cý*iw’žÃ§É¥~RÏå,âô*NQàÄsy â1œÅ-Â…©ÿ\òáõ_KòPKA¿¶ ª=ÖForg/gradle/cli/CommandLineParser$CaseInsensitiveStringComparator.class¥SÛnÓ@=ë\܇†´ PTZJ ¹Q7}A(QDBŠRª¾o’Ùʱ+Û©øþ!/¼‰Ä3„¸ÎÚVM H(ÊÎìøÌ™9ãñ§ïï?¨ã(Å VÔ‘Â=uÜ×±¯Â%U5†tS:2h1$Jå†dÛ †µ®tÄóɸ/¼cÞ·)’ïºnŸpOª{L¯¤Ï°Óæ¾è8¾p|ÈsÑ <éXmw|Æ=¸ƒÑqáµmîû‚žv]Ï2-malivÌ¡ªú’{¾ðŠK( ú ¼Qû¥î)?ç¦ÍËŒùH¹C9îY ]§®ôÌfHÙPŽF ¬s‰ýEÿT ‚Æ|¤ÜÑñ€!~©ºzC [{}ÈPü4ÃjOZ&JoóO Mi›¿†Ôœ×Ø"ªLÏxñLªWX˜+w ’ dpÅÀL‡0r—© ¬cCòñÿ¾Ìߨ#A ‹1ì-ŸÃz¼ÇnÇr\O¨ú › ÖD-Åê Ͱ»Œž¦¡ÓGEYô™%¡©9ÑÍ ›I–6©Ê;hoÉÑ¥3­‚ì3®’oD¬!µ+4Â8yDè$Ù|µvDkû RÛSå'§3¦¼B°/H³¯È°o0صeƬÊÛD!¬”Çuò4êÁÀ ÜD"÷„jnÅ5"A? [©~DªFÿ ¤§i<•ÈToÇ$Èj±j¶Xu!ÌúKá6vèy»!þöB{מ5q™ªláYäV~PKAo\9¿ß°=org/gradle/cli/CommandLineParser$KnownOptionParserState.classÝXéwUÿ½6í„tÀ(XPŒÒÒ6Ý ‚VKE©´-‚·!ÓÁt¦ÎLÚ‚+*î;ˆ”ÕE\AmK׃¸ÿ ÏñøG¨÷ÎLÒ%´|ôË›÷î»ÛûÝ{ß}Éïÿ|ó€FŒPe Û#*!€*Sä!ÎC7Û™ÿ! ?z$è,†€Œ^ž=ì‡Y 63%¨@/û%ì`>ñãÑjðXã Þy2€]xŠŸöã¦ì.³xއç%¼ÀÛ/òöKEx»%¼Â¢¯JxMÂë²Ñkk†Þi›š—ð&Q6Œ£Ð²M×U³5¡X–j Ô·f¼>n*±„ZMhõ­FO¢ÇÚ5]ݨ˜–j–—_%PèZ¸æ"¢® qELjYD±q‚$R`ÙŠ­JØCÒ® L¨Ëíë8~vµOI$ù”ÅíÛ•>¥>ik‰úvͲioF§×;i’â²IÛ«ÝuBÑãõÞ¹›YÝ­Ye ?¹ës¯ÖtÍn8_™›}šQÈ|n §fÕf_«#´.c–H²g›jnR¶%ˆl7¢Jb³bj¼öˆ>FK`ÞzÝè×]¯&Dsen²‹¶Co1ãÉU·ÖTf†«jº©âWÒú‚™êf1öŠiGÔ›L 4TNÛÆ¬¸j¯S¬1Ïó+«îvC’½ •Q)pRV O+˜;./ÛlÕTlƒ3«È°»UsƒW†r¯ÚÔ2#Ù2"ïeˆ„½øûÿž¹¹Îhà¡‘‡&–ò°Œ‡kù˜‚ X§‘4£ê-§ù¼ ž:šŒfÜ(c5nàÙ[sÆBÙbšÊ¾gxkŸŒë°RF5êe4 QF–ÊX†2ÚÑ!P}aŸR™´v ªzá_êm×&h?ä^Õ¡Šr«"3T+¤vÈVRCŠJe|Ýc¿aÛv5Jž½ýìÞ Œ8(°ºE©=½öŽ´X¨_±B½¦Ñ§ÅÔXèAà E/`ºNÂ!‡qDFëeE‡ŒwÐ!á]å9!ïÐ,‹²ÊÍ:²w”d¥³Ïï‘Öˆq)ŽÊxÇ$| ãC—ñJ8!ãc|"ãSFsG2akT«iíV¨_5Õ)ëÿ ŸKøBÆIÆà¾œ€½[>2¾bؿƄaP®b’1‚Ó+.ñ:hšbuOš…V;­kB f:5Nm7wu Tä¾Î¼»€n_ )`= ]Æ+³´‘­í“ ƒ:K–îP’­±ò„ªÇínÇV5€‰Ï "+±Ø$é”j Aê-‰„ÑŸnÔO%ÍZËuxÑÄpÏ)°u `döשX¤D£ªe•5.k [µuʶÒ=: ’“•ÑèåF ¥ºÝ}Y€ÏÝ}2:÷…z$½b,m'Ù\25rŽb¶Ù{u+«2ß ÒAM]%ã‚ë×¼.O}e‚ð¸î̤RVt+?MÈaÝùÌ­¬ÊL*Y,6öþÉ—[M#Ù»Eã$=Ád§Ê3'HÄT{Œ¾ôqË/ôÚ›¢?aúqUˆ 7:š¹×9_jwΗ:žó¥nH¯’ëiž‡UÅÅÜBÉ<s­ö!Ÿ(@M¸zya1‚üðøºFP0„ÂpͤpíüáRßf„K‰8åhl¡q$zø@@ìG‰8ˆâ®‡Q.Ž ZÅâY†ÖV¬œûçÌØó|gƾûœ{_@ÞÝ‚[Ó>J$<Œ¢XxrWp¦ï[ÌêÊ ©ó4.Añ÷ÕØÚfnÓ¼°zsò°…Í=™>ÅF@¼I#ï?ÄqÍâÚÄÇÎ æ¹ÖÓ'ˆ`ÚÈ7Û°Þóq yO@”“ÿ0JQÊöF1O`3Ï`~ƒ{ùɉ¦gññÅÄu!ñ¥cNvyæ¿]<#MŽQP4\#Ÿ¦õ2ôÉûÓò‘”“bÉ ÿÁ@¢bœ‡.j¥YQ›ÁëÓXàZ]ØîŠ]Aªa\éLðK|Q*WeÀ(5£¸šÍ–Ðä°8R];Œ²ãÿþåª)¥0Œñ]žâ«ˆ°CÄZyüß?iò‰NqsÄ·”|?PÄýâ'ô‹sô@ÿƒâ<‰_qVü†sâwü"þpðj&ôöRÊm  æcb#n'g Ã;œ=A‰îÒ;×f¼ŠNl‚(æù/B&é’8áêšÚR_iÁÄ©IQÚãX]çò¥“JÆ]TžÂ™uy"ãn¯@dlõ DÆ=Nðì^Üç”óýŽ…Pç PHE4€Zp-}—ûøÿ’ÜLwÒÅ~̧ïNð_2xÃøPKA9Ká÷¤÷<org/gradle/cli/CommandLineParser$MissingOptionArgState.class•mOÓPÇÿwÝÖ(ˆL‚²d ‘! ‰Î‡'š`0ÁWÖÌšîo ÑøÆ7úi|!‰ŽÄ~?”ñÜ¶Ì – –&í9·çüÎcÚ?ýPªŽò:’($IšQêM)̪³¢’æâ˜ãƒæìx–#âX`~áË/¹tM¹îqÏd0ž aÊŠÍ]×tªŽ¬ë’×l³¸m[ÅŠÓhpQ«Z ü¦ŽAV(ʪ%,ïC9Û ·Á«85ÊgH®í6¶LùŠoÙt2Ru¶¹½Á¥¥ôð0æ½µ(ÝÑç–ëZ¢ ïËzXÕRï,ºzR)éÿ¸e’&½àEÉVßñ=^´¹¨×=In+¹M†(—u•ß±— ƒŽè@lvAtö×ý”#Öq*Õ1ßÝrï¦3@Úm&DjÏæ6â¸Í†7} ½·OÉ_ŒÈ‡9u+1LÄ…A_wvå¶ùØR‹2vÌfVõÃÀÒê¶h@ÇeŒX—pÙÀ2&â Öb{Ä0sš3ÌŸ¾ “½ÛÁ0}‚áNXîáéþÀwlS…™Ëžzat¿» Sx ™^ÎÈÐ, µJ#j$iˆ¨ ÑÉ0iOH‹Ð3•gˆä ?Ý'5Bæ ó(yî`€½‡Î$ÎÒÙX`Žs$Á—–Ñuã!t9„jùB±o-žµÔ{m­ÅÑp}mIÈyFñ) æ ÚÄ@a¦ íûÜ'— [¸Á§$¤ÉW0‚ï† &˜rŒ…~nË1Ù‚&[9fp-D•}=DQޝÿ·OWîì ì«3×Ma*„<$Ëhа°ý#É4Ú*loØu¿ñJºi¿¢¬ï™£šIÄh8%1õ+aêVÂUÒ'é‰tâPKAƒú©™ª=org/gradle/cli/CommandLineParser$OptionAwareParserState.class­UÙnÓP=7qãÄqI(mXÊRÒ”&î’6¨”.,¥¢¨RT‚"•·›ÄÇF×˧ð¼ðD%>€BÌMMH• —Š—ŒgæÌ9“;sí?¿}°ˆ» $1©AGN>MiôsMÃ4ò 0TÌhP1§b^C *U”’u·ÕâN£l9&C¶ìŠf±)xÃ6‹uÛ*>âÂ3›0k 1ÿ™åå {pB!Ñë–cù·äÃááò…*ƒ²é6¨Ù” ì´[5S<æ5›"#e·Îí*–ôƒ "ÛeÈ<|á[®³ñŠ‹@­âsŸòú¶ã˜bÓæžgn%´ËÜ`&ú¯éS3Éþ!†a,_Þã/yÑæN³Xñ…å4× O¢\4eÃ}I‰ëì¸Îo‚ä‘fï ¢ ïøh›ZÅm‹º¹eÉãÉô¡ç¥‚ŽÒ:NcIÇ0Né¸qË:nbEŪŽ5¬3,…*o<õM±e ϯ´kAšatPXªÝb˜;çáùÐÀô^WrЮ-Ÿp† ³ÿr–*î0€a:|µs‹Õ[ÞïÁN„í:Ã0o4î¿ö¯r»mþe™ªýT}ê4s^¯›ž—[Z ‹;uŒ«(—ôù¹²Ç=›í>µ“seÃqʽ!uzwF0*WH§åÒS$ …öh„&{†¼2!¢dÓÆÌ>˜Á¾ bÌî#ú1¨ÕRže¡±I¤XcËPŽjÈž:OR#Bœ00¯’/Q1cæ3”÷]¾äZå{xb]ž.âå.c"àÙÃPU2>!JTCdÙWÄÞ"suWz2CÇß!u€Änàjºššd`sˆ³ùÝRW·èFpµS“Å9²)'éûrV‰ÐYpE‘_™f ‘ [$Þëd‘ŽÿPKAÔÆJÁ­7org/gradle/cli/CommandLineParser$OptionComparator.class•UmOÓP~îÖÑQ6¯Ê|AqÊ Œ2@ŠÎh–,`2CâÇ2šyI×’¶#þ _üFÃgÿQ¿Ï]œlRL¶ÞsÏyÎsÎ=çÜöë¯Ï_ñBA3 úÅ£³2æH˜Wȶ cQÆ’‚¤Ø'±,cEÀŸÈX•±&CgèYç6÷7âyu—A*9û&Ã@…Ûæv³±gºoŒ=‹4C§fX»†ËÅ>TJþ;î1dv}îØ%§qh¸†ï¸ ©²m›nÉ2<Ï$ÄbÅqëZÝ5ö-S«Y\#lð÷E˜×†ë™nî2å&×Z; ô*Aà©G#Ô2q:-¹È0íp_ ³6¸ðªG†fv]«ú.·ëz`#ÈT¾Í¸³w`Ö|½S£–e¬3 …,KQm‰½ŸgÈ]ÍÐ[åuÛð›¢n•%Ôô¹¥ý)özt-6ˆZ©:M·f¾ä¢ùcáçu  ¦ð2ž1¬\³ñA-ÛGh¬»Aðçdl¦°…ç4{—ÛÁ°²dxfÙöLÛã>?2;cOD RG‰á^TÕ.ËPüïéÿë`AçFºµŽ9z,¨uuÓ‚ÐuÌ«mcP5}ýʳ, £íñ-‹r èâ4þTö|¥›½ûÀéjçd^º@áíêÔ¨eÌÓ[¬Ÿnн%ÄÄÈÑnˆv­t¹˜>Eì# 1 Ó³G(Ù7Œœ ÅMˆkH- ?Y‚Öå™ÄÏ ½e§H|BÏ9äíÙÕšt†¤Ø÷Æ¥(ÇÑú'âïf?0Å~¶¢.ÌaT!ÝÂíV&˸C’ð|€»˜ ß):Ø=’¤Ìew?Ìn…,Ä‹ôôÌ9úfé‚ÔñGLÁ2â— IVi…õaÝë3.2Mà!‘]ä%ðy¨­u7h¤š¥Q ¯,ÉŠ•$M‘¥ON‘ý PKA#t´§¦8org/gradle/cli/CommandLineParser$OptionParserState.class•R]KA=³Y³vMM´šâwŒ)F)n_$"h@‚ ‘<ø6I†íÈfVf'%¡?§O…>øú£Šw6 ivλçžË=wþüýý à_|d°éÃŦ‡’‡m†ì©TÒœ1dª{m·÷C¾)•¸ô;BßóND™ÅfÜåQ›kiïã¤k¾É„aáöÉÈXÝqÝ2ÜЯܵRB7"ž$‚(ÇÍX‡A¨y/A7’A#î÷¹êÙ>£ºÊ;‘:Ã|¬(ÔæF ͹=”æÞô©U÷&K¿õcEZƒ¾P†á¢Ú|äßyq-£¥ ëS+·Â\ñäU•Ì|HQåS$Œð°Ã†Ýêdíú݄3¬1Tþ‡MZñ@wÅ¥´K)¾ãØ s˜AÖC…áhúU0^]ºí<Š. ùu—Ê“Ga(M"¹%zÂ.ì—…cg"W=º„d1föÁùIƒÙ”d}ÿçFøø¸´6,¤¸ˆO).a9Å¢Í,se,~BèŒÅÙ¿Å‹#ÂH9 åóœ0aæòÁ1 ðZÍÃ|eaŽàÕÂ%Õwª­û»AÍ~刡vT˜WaèÈbH˜Ç:aórYÅ‹Xb;_úÅ®ãÖí@ÇS,븉 VÖq*ž1”/EÁø_mkÇ®E S½gFo¹ ÆmœgGºÃˆQøÞ‰¶Fº\nñ½rÞjÙ^èv;БŠ5ÓTs½¸!G?.C¿U¡‰Ò8ÉËŠ)Óš’¹!zsÃmR” uÐÊX2¿#™M¢ï+&~BÝf6)K+˜–¶€qy% Ýî}\ƒ†[´ÂHÿPKA¹–G;~U=org/gradle/cli/CommandLineParser$OptionStringComparator.classTÏOAþfvÛ…¥…ŠP-"Vh)²BJˆ¤‰I“FL0$zʤ YvÉî–ø¯ÀÉ›{ñ‰&Ƴ”ñͶ¢R´ÆÃÎû1ß{ï›7oöë·Ÿ”±jc³6l½X(X˜³ab^/-,èm’Ž…E e†ä†òT´É`Š» fÕß— #uåÉç­£=¼{.yFë~C¸»"PÚî:Íè@… ÙíãHùÞN(¯YõŽE "?`HÕøøGÏmÙdƒiÒž÷œï|çœÛß~þp×F;6rØÉ£jã žZ¨[hr/}éǯ™zã„`v¡GXíúÒ;¼÷=õAôö”»á@'BùÚž8ÍøÌ…c¡"Oõb³³ø^JOuE¶º¡¹#%†çßí„ã±C]!Í«N¥· ÎX|é{l©øèc쇒°^ïž‹O „¹½XùrÔnœò~t’j¤YÎÄVB9…fa—PJõk¼Oç™Svq;3ØÌ¡ÊÃP^’}3¯Ÿ¥çÊ©·rh¡I¡V_ uÐÖÛ6>?#Tÿ'š`÷ 5ðÞùzñ31-ÝPò«þ:jì·šöŠØGÉB‹°·L{ÜÝ¿õϽALx¾üä Û‹›»V,Ý÷0ñàL_àÊ"³ÂWú±`èðn±å²ä »ûÆ7V ØüÍi'9(°^LX®&3A)*³LAÚœehèf9óæ×0k ÌF’Â$Ú¬p÷àûØ„¾®Ø5›ß›Ì¶¦˜Q éhȇ“Ä,I[3ÉΟìŸ,¡’¤=Nâ·q›å&2|RÊisF wYn±„“ÿ PKA]4Ýán?org/gradle/cli/CommandLineParser$UnknownOptionParserState.class½UËRA==É$a2@ñ…ˆ(Éá¡"ˆ"¥¥UZ…²`×$Sãèd†šL”_ð_\H*~€+7¾nܸÑ_°¼=™ B%qáæÞîÛ÷œ¾}îÍäýï·ïäq[A ã :0ÑA«œ0“ÂäÅÁ”‚iÌDq5Šk rÙãžÅCüw˺»& êÛÖÝe‹—Ëz™abÅqœáò¢¥ç –™[vJ%nWL[¯âFêàó !î É•güÏYÜ6rkžkÚÅ ‡X†á£Ì>O±ŽŸ ‘Ó6½E=}œ±9A{ÅgÖÂËN‘Šë)«•Ò¦î>æ›–.^丵Î]Sìƒ`Ø{j’HOìç¶óÒ~¸å™Žý—œ-”p˜žßeèÞ}^^rJI·=R7Ù °cS†ë­êÛÞ’{2i·OŠcÒÞi nÛŒ1^ã#rÊÞ²t1b7Àðê?4°yvÞo²´=)L^˜)a¦FZÓËÖœŠ[Ðý©c9â*zÑ'̼Šn$Tô ©BA—Ša F± â&£¸Å0÷ÏÓÁ0ÕÛÔÓ –mGdúá6Ša4Ýj3†š C'/ïn{._çV…öýƵÕ±+1DÂúX† ¡UR´È÷Ô%òH¢}4±ý´+Ñ.L¾_c´±=„´ìÂÚøä:"›‚L3þ2û…}F7û‚>ö§èL«`g%.dþJ\)ù+QLˆ¢gq.¸:K^dIá×µ{""¾ù¼jõ4àe8Á™ ²¶È›#àïu`¹¾@ÊTÁs䥓À?|pªšP{‘Œ‹þ‹˜ï€f‘rÄ m—ÔÚEhQrò!£"XØOÄÙ¯º’UVêH/.\¤ 鋘6–?Û9RÕ?SÍ©UÕ@çFcHû:‹UÆïŒ„1Ÿ-‹NòÉcjXücÎâ4Uy‰<blfq=¬üPKA¼\oYš¯(&org/gradle/cli/CommandLineParser.classYy`TÕ¹ÿ}™åNn.!Œ DH${%BØ 5JÃ"Þ$7ÉÀ0g&B\ê^«µÚº¬ÕÒjªÕÖ5!¦Ò¾Ö­>[û^ûžïuÑö-¾Å¥­]l­OÞïÜ;3™I.&öÜsî9ß÷oýÝïL^þ虣Ë“¹Øƒ·ÔãmõxGÇyxWÃotøð®Žßâw:—ßÓð{ ÈÃñ':Þב‹?kø‹Ž||‡¿âÃ<ü>RcšâZ‘€äè˜.M¼:f‰/ ~õ®©G@Qäêè= yjÅP)j%? S©‹dš&…:Jñ.O–éšÌÐQ†wRÄQfªÇ,Å1[=‚JÀ Jî‰êq’ÒÓæ›“'seøP“bur²&óu,“š”hRªc…œ¢£^*Ê2MÊu¬¡¤BGƒÚ©“JMªt¬§@©–y©¡W¤Ví, ªNY¬Kt9UNS³¥šÔåa£œeš,WÓzu䊀¬Tz¯ Èjõ¾F“3t´)Á ø3YË(³Úd–&ë²^ÙÕ¨c·œ©fgälå&]ΑsuÙ Íi¡&Œ‡lÔe“lÈyj³U“-Œ¦HÄŠ­ ›ñ¸ÌÜØ›E#­‰X(Ò½.º¯×Œ™‰hL“óóÖ™q«)·"ñP"t‰5–HPàpgòmÌ>?²7Ýq67™±¸kM˜ K“m<ñÜãì] ˜æ²Ü&(jÅã<ÚÙmˆuÛ[´¥¡+aŜո&Û3ì•3C±x¢µ¯zí3#°ÖêŠÆ¬1ëšìH; a¿³²ÎÝ)ÈËZØÅ3½%˜¾qÓ–¦-»[šwojز¥ñ¼ApÃó³¶/ ׯ¬në@í&3A­"+S£Ž²kûS2¦fP7›½¤Ém uGÌD_Œ6fï®t^Ãf¤»Ö°bC4Ö]Û3;ÃVmG8T›´mC(b9Ê®XM™ÓÌp8º¿9tÀêLºK ü5Ý^ÏŠw¦—¨ìˆÙoëCq³=lщþ•¡H(±Zà)+g”½ë¢–ÒŸ'µôík·b[¡ pC´Ã o5c!õž\ô&zB”<ÿcÔuœMe}½j&8½lÇx{ËÇJ°Ù:3äPB^Çè+ÍqCXj<Ða¥RçBÁ²² ª&ÆK)>¹ã [á¤g§Mhdɸ<§¿édn30ML‚h*Ó”C]Ô—@sˆ“7š<Ûc* 9¡ÖBFîØö°>W¤—³Íd†ôŽ5Ì%ZnÆë6c²"k&6=Ûè™ÙÉÒß›J·h¸¤¿Jî “¦T4çÖ ±"™Iñ†Èhå””ä–Ǻ-h# ±k²Éì&ÆkÆb §7lE8Lë[à_UIH' Õ/'"žC­V‚ §f¯¬œÒè½´,q~Üìfƒ™‘ièíe†;UEü0¢YX:#ë´b©"rV•Z½1«ËEj¥ C­ ¡¸ÒÔ³×ê'l\b†ûx¨ÏŠ$bê½Ñ‹²1´Ä^V\Ѿ„J@W Yübì³;[Ä™©eÒäg)Må|azƒ£gŸy@°`¬]Ó·dŒAÇ![áf†ÛÁ•{éÄW>ïžhˆ¶²,ƒ]4¶:숻¥´ Xùˆþ*È™H¶±}…(ܳ7ãéPŒ=ƒ¡ˆ[é–ÃßÞ×Õ¥b2{ÜAkíu\—úÐg‰G®¬P†­q·HmNÒ¨O\ÑéRÔÍŽ+/Yºh‘ ´lb(ç§:çÀ¢QÎeŠóÔÉpŽk/R"–+•ds¾êzk´/ÖÁI¡ïÌq’j”·â7â&ŸS³/à6BÒèg›ñ£ÉnC.Ò_O„ºãd°Z4i7¤C:yˆXêA­›ðëâÚè)înMz ~4÷h²×°ì3$"QÂÉØÒ+ÓÝÕՆĄiY=á¡™m¨:‹©§UWï¸pÕ®JCúäbC.‘ý†~C.•ˈekâåIŠU5†\.W(¢Or¥\El´÷Õ¶ÚÅçq {šäZõ®š fj¥zµÆX,3äj¥ô¬ñÅ wªºÚu\kÈur½!ŸVޏA.3ä3r£!7ÉU†|·r³|N“[ ¹UIÀqImÈçå ì´\`R%Éw³¼%fY °`ñ$û¤Ñû…òîmêq»!wÈ);“ØÙku&3å9Iáco5†Ü%wg™Ò‹™ý ™5ù"£ªØÀ?០9¨xHî1äKr·&÷ø±|Ùûư§ÁÚûUÆyK㥑¬Äs Ð¯HÔÃòURjGékL¤xq±b0äUk3ÝAO“ý{ŒVˆ Öm†ÙSöíã71Ýï²ÅqL/^X_XŠ›á˜evöwò[±:k”_Wn~ȇU5Ô¯3#‘h¢Øìì,Žfðšä¤V:šxÂŒ%Š÷‡=Å «Ö¸ŸÑä†<"jòMUû;&)±8 ÷wD# 3¡¢½=f„æÄBÅ=ŒXS,ÎüTgÙÃî…5›°Nð5ù–!)EN*Û¹æò½—5„)÷ŠéYõî]å†<.OЩæ{ð3&$šð>½|BÇ»ZO&ßÝ/Þ‚%Ÿüº2(>Î¥}éäàtÜ~²õ<ö&/¨ú$w’Éà}ö¯•ǧw)½‚1¸Btõ›q….ªØ1¾A*ßïNÉ °;_Jš]V~¼*xœNµâ³Ü¯¾ÜÙ;‰câ;ÕÄ—ÂÅöi…ãµ`‹JÞ] ~YæeÜi ǯ9{Ìx‹u aÿ`Áʱ_f”•»u¡ûÌþvu%Rת¢2—þn»º¨_Üg†ãcRá"AÓ8¯ýí>ÑøíèQÁÍ÷µÇ“9WTÖäÚ“NQi™aÂvþ–k¨ëùÉÔ“í.Mâ^<æþ¯…"ÖuAöÒ¤&ã&wÓtDìr¬u Í'=;/ùU‰Ÿ«®~Ó¾ý±þ]e§Ÿ¢˜@"š¾Ä–¹ªžßm%Ø—Œª¯;=MØRxãçž;Ñc§)´D#©Ø”)3•~žnÕ;â–{n‰vÓåá—ÉÔ‹öõn ©s 3¡AÝýUÞ-œ¸ò“:YR_3{ÏÏÃÂá–‹NƒÒ7èiY5îü‘Ÿ€ŽC×[ñŽX(õ³W¯ºË/sñÉ$½äßkõÛîÉÝl6•w|*!—€ý³‚Màñ[üœ:éãü\0zUÎL `=ó'…“Ü*{4Ù|]á¾8µšáæM~ê&™»É‹òòO¤kvR»¢#C®Ûý_ÜI­Œö<ë§ð4®Åìk쨠uìéZ‰¯V¤ÃÊò‘ÃÞì0­p‘Üœ’75Cšú71¥ÓЇbVgú¦¤ ZÓÕ¾ð~LÑ»ü“±çðáÕÞr–£nÅ|ÖžßÌ?^íù­j,˜­nq|ŸBÞšù¼okááŒÛCðVŒÀ×6ÿÓÈyÜæ¼ƒÏ|RKáÅ2LÍñàN¾îÂݯæ%û ©•¼Us8æVT6ˆÀciA~›©Ñ0Ó!J P³C¸‡û_âÜËñ^þñæÎ£)ÔsÍÌ£ïrÛF ·U<…œaä †` aJóòÛ*ªdS[*‡QÀë‚7èÆ4ÁAyEÍ ßÅôz_uÐ7ˆåÑ ¯°h3¢`³Úëì–¹—ËÁAœp'2è#ñ‰ƒ8©Þôb .'Á\› &è+X5ˆyu~‡²ˆÅŠV jA¾y/²yO&ÓYdšo3lÓz}IRŠ úüiºyO`Á!‘º„Ô‡7‚R†ã”ï…Dõ~evÐ?Œ…9ô÷L%ËŸ<ÑÖ?MÊ®×lJ-IyuõÊ(¨¼°b•ЏrUj<©> ¢ú ƒ”¹T7©åš_]nQ®rYía,£U|Sv×ëÙ"õ¤H=-²¦åº\8öÜÖPÉT7¹?€Ò‰ôRDº²E--ªÄâ*•O;Ÿž@Ÿ›1›…°­hÀœƒóùÜ Û° m¸ÛY;˜w;ñvá)\ˆ¿Ãnüá¤|íx8†N™Kf¡Kæ [ŠÑ#åØ#§c¯´",;°Oö *½è•+p±Ü„˜<ˆ¸<Â÷§±_¾~y—Ê«ø”¼…+åw¸Vþ€ë寸A>Â99,O•ûƒ(¤^~܇ûù¼óðæìLµ×4jf8»ÔÅ¡ÓxÚ||_ƒ.q¬!íaäR«v{7Àss“³r¼„I§Q‡7@ËÞÃ×ühgðuÎ|¨”Ÿà!<Ìjc]¥ê³Cøko¶¼Gð(«tüßÄ·èóÇR…oS=žU­è<Áù“ô¯-K¹¢*^«ð> OÅ(èvñßB%nÍ@-©„pÕU„Œq;EÜá"âj…OµGÐ\çcz(––ñ,½i–Ê ÃØd³Û‡ŸXU¸Ùû,Îkó¨VAë ¶Ð åU){Χ)E½­…Û£|YämÞ¤D‡ñØÍLà O§à¥L,°xsY¾A–n9‹w SbKÖd‰FX¢ûYaw±Hîc™eÂýŒéõK¦Ê›LŸw¸òÓå#|Ot|Ÿøœày9 /ÈxQÖá%éÆd?^–[ñŠ<ÉKxU^!l¥àí.¬'ĬpW¥l.Ï~ߣ|§ßŽïã9¦ç›(Áó¤Ëå©sð‚ͱ‰º ðÏz8åãÙ† ~šÌµËâaBc7aüEü€k›)Ñ^SI* Î^Æß3åså9¼‚²‚ò~D ZÙ\utµ§Î[äsû«Š¼Kê}6²ú’½Hp»Û /J€¯õÌ!´³ÃQEÞ‘Úï»ÿ,å™®AtJÒôŒ¥¹ÎKÀ¾qumªõB¨¹ÊŸLüž[.e¯­—·*…oT~^êØ%oaÞ&¤¿ÃÎ÷7ôÍoÙP¼‡.ü—sïü‰zŸ•ögÖÿ_X=¤¡}zlh÷QÞU6´çp~… íúùRÚ½äbçµ—ÍnIÚ¦¡ýhÚoa|UMäðoø÷ä×±–£ŠŒò°ç‘1}öÒŒï¢ÿ¡’ù?Yrã™sÆ6éîÌÿåz²Lâdšüßé+G½œ0{±—pì€×ó$†`ß“°·Û€ÑïüR¦ygÿcŸô¿èµan*¡l­XÇ‹yŠqŒs\Á1Á±ã%”±Ÿãrös¼Ô«ã2Ž—s}Ç+8~Šã•ÜÏçxÇ«9^ãÍÁµ¯#ýõ?Mºø#^òçþ?PKA[xn˜”Ç&org/gradle/cli/ParsedCommandLine.class•WÙWþFÛÈÒD±UÇŽÝ&UÓ8–e9†$Ðx©‹ã&MÛ)qIpZ k"Og”Ñȉ[JK¡Ð…¥¥š–}3‹¤4 &?–7øñÎo¼ðW¾;3KÖ¸1/3çÞ9÷;ç|g¹Ò?þûÇ?ø0ÞO † 3ŒäQ–q)¨»°Ä£"ÃN ÅÝ©&±„ËI\Á²x<#ãYŸK FÛñ\ŸÇeÏ'ñ¾Ç‹2¾˜à±/%ÐŽ—d|9nq|E¼_Žãñ~Uh¼&N~5‰¯á²X~]|CÆëq¼‘@¾™Ä›xKè|K<¾-oÉøŽ„ífÙÖM£rdyÖ¶t£È©‹ê’:XµõÒà´Z‘Ð2« Õ®Zš„“_GÝeI5Šƒ.ÀÈ”i‹–Z(iƒó%}ðqÕªh… sqQ5 Sº¡r,ŽŒ9U¶´ŠfØîV¥Ñø¬fSåÁƃ¥-šKZÁJiWlK·ŠÕEâs£µgJ¯è½¶6ÁŽê†nIèÌÖ)œ°5K=_ÒFúÎHˆL˜MxÏðfª‹ç5ë ñMBzÊœWKgTKko³Ååœ&„B“M !}¯„ö:ïc¶iñ›Rvøt•Ý*ÝŒÃôÎìÙx&H;b/è•Ý&|êÊföö †$t4Ò°\®Qq8@ôîŒecKgEÆâ¶Y+øöl_P”KUÓÖÆÂ¤© ¢ƒ“t2VñeW¨î«v¹jKèj:p¤ª— šH­¬WŽéV…ZÒ9‘Ù ð+tt˺þ¶,¨•Z=íÈ6kôÑ›ÖÕ«¹Ón§‘ 7–k'»²u;a–Jڼ÷8½½d§´%­ä÷gG°²„\à‡M¶ú¹ DÕ¢Ûzµ5û膹’®UOýdÙ×´¹IÛÔBÁA<£–ªÚ&ô³\£Kî÷ê×:@÷îåÿ„«¸Cµf¯§iÖ Ó×ĬYµæµcºhðŽ&øýÂi‡ñ6 ]'é¸ZYà…¢`û›>pð+¼o(8„îYÿ:nYê² XÁGðQW¼ƒwe|WÁ÷ð}?À%dîæ73¶5Vü?–ñ6ÄFîeüTÁÏðs ½q8œé©ä3‘»×x[‰½ÀSç/²Ìà”‚ü‚WÏ&SƒwE>£à—ø‡F¯‚)L+˜ùý5VeüFÁ'1§à·øGyÝŒ`§ÕRÍ«£Wæ5‡®O™ÞžJoÆ0íLA»Àè ûEÆ.ȸ¦à:V¼‡§ü«Íä61'!œu‘nžQœÃºwµ±Tš¦îÊK7ïrXrúÌ[­1œEã0w‰$D‚ëÏž¶CîÏŒm  kV%8Óûp¶¼y'ЃØÓZT‰1жO~0ÈúÍ¢–ËšQX|ƒló«%>o¶ª‹èwÄ l𤠼(èØt((ÌTãØãyN,áx¡0^*QpKðWj'DG ƒ\…ð!®Ùèþú ׇ6¬Ùèþú!$ù>Œ!ÊÀ4€0dî¼’»)w¡¹[ß@„b”bìäu1N±…bâ’ýkP$Lç×°MÂUœ¤’ðWlŸ¹Vê´ Gn"½†{$ G»¢ž^FHŽbûp,÷>"]±®Èv„qvåοVî¼w΄1Âç(|v3äü­ßA©“?Íw2ä{1‰û0‹]°±/â~¼„ ^&I£ÝûÊèC9$èE–—g­dÐÃ$}œuvœNrgš5&<g±SвÒF2#ÂSŸÌÓ¤XçÉÓLBˆèÇñi ×,´ÎøŸ¥ÄAì|‚;"Am¹þ›Èœì2úBXõiL8 ÂGÇ:ܾmÌ÷á$œûØx0ì$aOÞöI<ååêM¾}ÛS×!ݵiŸÉ±3¼Šhduåοë~ :H¢¨§nR±‡$쥯½ôX˜Î´› ƒ¢e3~ÝöùîôáS¬÷úº;Ÿöiý %^v^ü¢„…ŽhC:»7DçZ§óÃÎÛè™Kï‹8ÕÜ/ özÿ’_¯Ú´aM¦Q¾@''3.`C.?)¶¬h½åó˜÷˜t˜¢¢I6¶D©®%¢ EOFÝ(õ²¨F‘eõ\ßÀ2KûR]ßAEÇA0ÝC4¼înàeF”]Þ™h}41°îoÊ ZLœ*§Ò’Ÿ-"øvv;ÓHr¤ ÇçZJÄÙ‹ø¬gû ÏöPmvúõ“­«º2°†\ˆÛ)Q·\ô‡Äýçzèn1=Ã!ù,ÝyŽ·Àóœû/øîíâ(}Ø)¦{¿VLC¾ËCŽ£"C%sñPKA“¼¼ ,org/gradle/cli/ParsedCommandLineOption.classS[OAþ¶·-í"¥\A(¡-ÊŠ¼P«1!iĤƒoC;Y†lw›Ý- Ï&¾ø ‰JD}öGÏì.¥I|™9ûï|ß93¿ÿ|ÿ`+)dPPQL!‚Bú0Ÿ¢å†Š›I,¤€žÆ-,&q[~器+¿÷䲤⾊ {ÌlqWA¦²Ëö˜Þò„©W„ë-+è© Ãb^Ëá fº~—‚³É,C¯zްŒå2¥$JÂ^YA4_ØT[µë”ÜWÑjlsçÛ6)’­Ø5fn2GÈsŒy;‚”ä+¶cè†Ãê&×k¦Ð_2ÇåõU»Ñ`V]Rm4=a[T.ipoSP0˜/œ—DNDœ=tšœ=¼ÀZšÕë+ŽÑjpËS0”?’Ž“¬ ÉþKOr‡¹¡bjÑ©ªÝrjü¹»Àê‚dÒ0„a§jW‡íKÉú‘Õp³ &N«®›&7˜Yõ˜Ç×ÞÖ¸ÏEˆ€4W·¹›³l/·ÃöxŽYû9ÿ2,ÈBS*jx’<ÂIy®Ñ2=Ñ4y€t ZÂcº<ÝN5”ñDÃS)höÿÆy†ec{—ר‡—ÎŽ†îˆ+Þ½[§•†+G±Þ9ú •tGi`]ƒ ÿɾ«Â]k4½}LÒ›ÉЃ¢É.Òw€N "N{j9­—)RF”v@¦x¥xŒÈÖ!¢_û죯Ð*ß!(#F9#´Ó<®bÔçõ«r-¿!~€Þc$¶²ê!’?‹_;B}†S'áèÒü‚ö©]q˜4‚j©T£ŸøÇ©BÕ—ÚÕÇ)ñ«ët’ÿâ’õ”,á§;’ãarÐÅ&1ZxFiW“$óGèàuw+æ&9#¾PòÉÝ4f|tgCÆR(+ôà’‚¨±düc—ÆùÙ¶Á9•ÿ PKA‹A5l| :org/gradle/cli/ProjectPropertiesCommandLineConverter.class’KOÂ@…ÏD|?PâìÀuã#QŒ+¢$÷C;–1m‡  ÿJW&.üþ(ãª1ØDã,îéœ9ßôv¦oï/¯ö±[@yl汕G)‡ívÙ }FHWkw„LSºœ°Ü!¿]®nY×7ÎZK:Ì¿cJDóØÌ螎ZRy¶§˜ësÛñ…ÝVò;ÚHŸ+-ø )ƒ€…n´kS†#cruLXõøgh|Ó×B†„j­õÀFÌöYèÙ­Dè™èÎè%×LøÜ%”ÖŽñŽ…Ž*‡_‰¨å½?õÖˆ:("‡<Ú„bJÕö ®­ØŠtòfë^*K÷¸Õ ßµ¦ XUÞðV½Œ£Üi01Èk ÂÁp8ƒwZ±ß8T0gî?Pôa¦Î›™m”ŒÎí=ƒžÌC S³s ¦§£‹| Ë1\áôZêq-}CÓ_èJšžEˉèjš™E+ ¨ùw'©õPKA“;™|ü9org/gradle/cli/SystemPropertiesCommandLineConverter.class’ËJÃ@†ÏØ«mµ¶ÖjÕEÜ5BDÄ…R/Pé~šÓ‘$&ÓBÞJW‚ À‡'i©AÄYœ3óÏÿÍœ¹¼¼¾Àl— "l¡Y„Íl E Ê<&Ï dÚú@¶ËÇH ÚgÞLÝŠ{:r”Rïs‹:C*X4NĬœ°€ÀQŸ Û´;hZ3a ѽÜG!]îºÔG‹v¹7S"Š5eb o}ɸG ÑÖûtFM‡z¶9‚y¶²¶~X{()spL`7e.°KV, øTXxÉ¢Šõ¿”fDT E¤G ÄPÇWãJm®h~²­Æ49Aíjx­µÑ° ­ÓsÃhöÌ gÔ™¢n8üÇ5©Û] .FÔ’¿s°9õàQˉ΢ⲙ*•sû/@žUg J*æc±e+sƒÊ+1¾ Õî$p¦¾ô´€6¿¡™/t-Í,¢;©h-Í.¢Z ª>kìZÿPKAÿÃWgradle-cli-classpath.properties+(ÊÏJM.)¶å**Í+ÉÌMµPKAbuild-receipt.properties+K-*ÎÌÏó+ÍMJ-²5Ñ3PKé>”óPKA META-INF/PKA(MÆø?T)META-INF/MANIFEST.MFPKAšorg/PKA ¾org/gradle/PKAéorg/gradle/wrapper/PKAïzZ—ïÕ -org/gradle/wrapper/BootstrapMainStarter.classPKAh‚df£Õ#Vorg/gradle/wrapper/Download$1.classPKAÊo:s@4:org/gradle/wrapper/Download$ProxyAuthenticator.classPKAñÎ&!› org/gradle/wrapper/Download.classPKAÔN/Ý¡Ê1éorg/gradle/wrapper/DownloadProgressListener.classPKA~ˆ0^å 3Ùorg/gradle/wrapper/ExclusiveFileAccessManager.classPKA©zÝ\Q-ˆorg/gradle/wrapper/GradleUserHomeLookup.classPKAë¬j“¦ 4*/"org/gradle/wrapper/GradleWrapperMain.classPKAçìXsªÛ"-org/gradle/wrapper/IDownload.classPKA«øÔ6".org/gradle/wrapper/Install$1.classPKA ¹@$ö) 5org/gradle/wrapper/Install.classPKA¥y0ºV}Horg/gradle/wrapper/Logger.classPKAj j´V8Korg/gradle/wrapper/PathAssembler$LocalDistribution.classPKAbøi+è&Morg/gradle/wrapper/PathAssembler.classPKAdzÌß’= 0FTorg/gradle/wrapper/SystemPropertiesHandler.classPKAÌ ^F‘ù-&Yorg/gradle/wrapper/WrapperConfiguration.classPKAÚþ‡Ç”(\org/gradle/wrapper/WrapperExecutor.classPKAã…Ð_#egradle-wrapper-classpath.propertiesPKAneorg/gradle/cli/PKAÈô–<S1eorg/gradle/cli/AbstractCommandLineConverter.classPKAáyÆ0Lç ;(horg/gradle/cli/AbstractPropertiesCommandLineConverter.classPKAè# òGK1Ílorg/gradle/cli/CommandLineArgumentException.classPKA'H g)cnorg/gradle/cli/CommandLineConverter.classPKA´íÓÃ7&Ãoorg/gradle/cli/CommandLineOption.classPKA2_e¦è(Êuorg/gradle/cli/CommandLineParser$1.classPKAØ:Ü<Ê ;¶vorg/gradle/cli/CommandLineParser$AfterFirstSubCommand.classPKAxûëÚ¤)3Kzorg/gradle/cli/CommandLineParser$AfterOptions.classPKAS¦6éê| <@}org/gradle/cli/CommandLineParser$BeforeFirstSubCommand.classPKA¿¶ ª=ÖF„org/gradle/cli/CommandLineParser$CaseInsensitiveStringComparator.classPKAo\9¿ß°=%„org/gradle/cli/CommandLineParser$KnownOptionParserState.classPKA9Ká÷¤÷<_‹org/gradle/cli/CommandLineParser$MissingOptionArgState.classPKAƒú©™ª=]Žorg/gradle/cli/CommandLineParser$OptionAwareParserState.classPKAÔÆJÁ­7Q‘org/gradle/cli/CommandLineParser$OptionComparator.classPKA#t´§¦8g”org/gradle/cli/CommandLineParser$OptionParserState.classPKA tŒB”œ3d–org/gradle/cli/CommandLineParser$OptionString.classPKA¹–G;~U=I™org/gradle/cli/CommandLineParser$OptionStringComparator.classPKA‰YMû»2"œorg/gradle/cli/CommandLineParser$ParserState.classPKA]4Ýán?yžorg/gradle/cli/CommandLineParser$UnknownOptionParserState.classPKA¼\oYš¯(&·¡org/gradle/cli/CommandLineParser.classPKA[xn˜”Ç&•³org/gradle/cli/ParsedCommandLine.classPKA“¼¼ ,m»org/gradle/cli/ParsedCommandLineOption.classPKA‹A5l| :s¾org/gradle/cli/ProjectPropertiesCommandLineConverter.classPKA“;™|ü9GÀorg/gradle/cli/SystemPropertiesCommandLineConverter.classPKAÿÃWÂgradle-cli-classpath.propertiesPKAé>”ókÂbuild-receipt.propertiesPK22_ÄÂchiaki-v2.2.0/android/gradle/wrapper/gradle-wrapper.properties000066400000000000000000000003461447035777400245460ustar00rootroot00000000000000#Sun Feb 05 16:25:19 CET 2023 distributionBase=GRADLE_USER_HOME distributionUrl=https\://services.gradle.org/distributions/gradle-7.6-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME chiaki-v2.2.0/android/gradlew000077500000000000000000000122601447035777400161470ustar00rootroot00000000000000#!/usr/bin/env sh ############################################################################## ## ## Gradle start up script for UN*X ## ############################################################################## # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" # Need this for relative symlinks. while [ -h "$PRG" ] ; do ls=`ls -ld "$PRG"` link=`expr "$ls" : '.*-> \(.*\)$'` if expr "$link" : '/.*' > /dev/null; then PRG="$link" else PRG=`dirname "$PRG"`"/$link" fi done SAVED="`pwd`" cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" cd "$SAVED" >/dev/null APP_NAME="Gradle" APP_BASE_NAME=`basename "$0"` # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS="" # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD="maximum" warn () { echo "$*" } die () { echo echo "$*" echo exit 1 } # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false case "`uname`" in CYGWIN* ) cygwin=true ;; Darwin* ) darwin=true ;; MINGW* ) msys=true ;; NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables JAVACMD="$JAVA_HOME/jre/sh/java" else JAVACMD="$JAVA_HOME/bin/java" fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else JAVACMD="java" which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi # Increase the maximum file descriptors if we can. if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then MAX_FD_LIMIT=`ulimit -H -n` if [ $? -eq 0 ] ; then if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then MAX_FD="$MAX_FD_LIMIT" fi ulimit -n $MAX_FD if [ $? -ne 0 ] ; then warn "Could not set maximum file descriptor limit: $MAX_FD" fi else warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" fi fi # For Darwin, add options to specify how the application appears in the dock if $darwin; then GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" fi # For Cygwin, switch paths to Windows format before running java if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` SEP="" for dir in $ROOTDIRSRAW ; do ROOTDIRS="$ROOTDIRS$SEP$dir" SEP="|" done OURCYGPATTERN="(^($ROOTDIRS))" # Add a user-defined pattern to the cygpath arguments if [ "$GRADLE_CYGPATTERN" != "" ] ; then OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" fi # Now convert the arguments - kludge to limit ourselves to /bin/sh i=0 for arg in "$@" ; do CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` else eval `echo args$i`="\"$arg\"" fi i=$((i+1)) done case $i in (0) set -- ;; (1) set -- "$args0" ;; (2) set -- "$args0" "$args1" ;; (3) set -- "$args0" "$args1" "$args2" ;; (4) set -- "$args0" "$args1" "$args2" "$args3" ;; (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; esac fi # Escape application args save () { for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done echo " " } APP_ARGS=$(save "$@") # Collect all arguments for the java command, following the shell quoting and substitution rules eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" # by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then cd "$(dirname "$0")" fi exec "$JAVACMD" "$@" chiaki-v2.2.0/android/gradlew.bat000066400000000000000000000043241447035777400167130ustar00rootroot00000000000000@if "%DEBUG%" == "" @echo off @rem ########################################################################## @rem @rem Gradle startup script for Windows @rem @rem ########################################################################## @rem Set local scope for the variables with windows NT shell if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%" == "" set DIRNAME=. set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. set DEFAULT_JVM_OPTS= @rem Find java.exe if defined JAVA_HOME goto findJavaFromJavaHome set JAVA_EXE=java.exe %JAVA_EXE% -version >NUL 2>&1 if "%ERRORLEVEL%" == "0" goto init echo. echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :findJavaFromJavaHome set JAVA_HOME=%JAVA_HOME:"=% set JAVA_EXE=%JAVA_HOME%/bin/java.exe if exist "%JAVA_EXE%" goto init echo. echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% echo. echo Please set the JAVA_HOME variable in your environment to match the echo location of your Java installation. goto fail :init @rem Get command-line arguments, handling Windows variants if not "%OS%" == "Windows_NT" goto win9xME_args :win9xME_args @rem Slurp the command line arguments. set CMD_LINE_ARGS= set _SKIP=2 :win9xME_args_slurp if "x%~1" == "x" goto execute set CMD_LINE_ARGS=%* :execute @rem Setup the command line set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar @rem Execute Gradle "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% :end @rem End local scope for the variables with windows NT shell if "%ERRORLEVEL%"=="0" goto mainEnd :fail rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of rem the _cmd.exe /c_ return code! if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 exit /b 1 :mainEnd if "%OS%"=="Windows_NT" endlocal :omega chiaki-v2.2.0/android/settings.gradle000066400000000000000000000000511447035777400176070ustar00rootroot00000000000000include ':app' rootProject.name='Chiaki' chiaki-v2.2.0/assets/000077500000000000000000000000001447035777400144555ustar00rootroot00000000000000chiaki-v2.2.0/assets/.gitignore000066400000000000000000000000621447035777400164430ustar00rootroot00000000000000screenshots chiaki_square.png chiaki_function.png chiaki-v2.2.0/assets/add_console.svg000066400000000000000000000101711447035777400174500ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/chiaki.svg000066400000000000000000000367431447035777400164430ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/chiaki_android_fg.svg000066400000000000000000000140041447035777400206010ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/chiaki_function.svg000066400000000000000000000230011447035777400203270ustar00rootroot00000000000000 image/svg+xml åƒç§‹ chiaki-v2.2.0/assets/chiaki_macos.svg000066400000000000000000000477171447035777400176300ustar00rootroot00000000000000 chiaki-v2.2.0/assets/chiaki_macos_simple.svg000066400000000000000000000222501447035777400211620ustar00rootroot00000000000000 chiaki-v2.2.0/assets/chiaki_simple.svg000066400000000000000000000235071447035777400200060ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/chiaki_square.svg000066400000000000000000000204071447035777400200110ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/chiaki_wide.png000066400000000000000000000751721447035777400174370ustar00rootroot00000000000000‰PNG  IHDR׌~sBIT|dˆ pHYsbb8z™ÛtEXtSoftwarewww.inkscape.org›î< IDATxœìÝy|ÜU½ÿñ÷™ÉžÌ$é’¤iÓ¤+]iÓZAîEeQDë\AåÊO储 ÀU”¥ºQ(Y‹e§”´I7º·tßÛ$“=™ïùýÁb¶I“™93“×óñà¡4É÷¼( ýã|¾çˆ[ÖÊ·BÙ½=™ÞaÙBÉ_ yyF&OÒû™|ÉË“LŽ‘Ò¬””òþÇS%åtrù:I­’ª%µ©ÖJ-’ I¾jÉV[éà{·Õïÿï^¿ÌnŸìÞQªßcŒl×t„qtW¶8K õ÷Éëgäë'ÙR#S"©¯'õõI½­Ô[’ßuk'…´×“öú¤íVÚfe·™-VÞ6¿|[ëÚr’Q£ëP 0DÑBÛ#˜¦ðPŸÂƒ¬4X2ƒ­4È' ±R‘ë¾8±ÓJë´^Òz#»!,ÿúl¥®fö…\lj‚ ÚÁTµðÉŽ²ÒpÉŽ4ÒpÉôwÝ–à6i•¤•ž´Ê/³¢Q)«&™µ®Ã€xÃpŒ*m^žQx”•odÇ[i¼¤a’|®Ûº‘’Kf±Ovq³¼·O4õ»\G.1ÅR[˜Výx#3IÒ$I'Jêë8 ‡·ÍJ‹Œ´Ðʾå)X1ÁìhpÄ À!–ÛÌ’°RO“t²•&Iv”¤×]è”6É,—´PÒë>µ¾<Æ4nsD è֖جb#ßÉ’ù¬¤S$pÝ„¨Ú)™×Œì|ɾ>ÖÔ­tD èV*l —_öô÷7ü?'©Ìq2Ò.+óª‘ߦð“LÃN×M@g1€¤¶À*%O9§X™3%{†‘+Éçº qÉ“´DÒ Vö¹Õ½~ºQ›ë( £@ÒYiƒ=Zäý§‘9ÛJgIÊwÝ„„tP2óì|¿¼'F›úÝ®ƒ€£aIa©ÍàÉ;ÏJçé$I~×MH*m’^7Ò<+ÿcå¦ú]×AÀÇ1€„µÌæ Ëž-Ù ôÞ¦?ßψ•w$3Û“7s¼©[å:Ø0E‚©²¡VöBÉ|MÒ×=€¤Vv–•oúxS»Þu º/÷Þ²žéÒyVºD¼éøöŽ‘¦¶)á «ÌL~$ézI=\÷è´ýVº¥F¡ÿ;ݨÉu ¢‹|ÈZ™*åœ/™ßKàº@dX™­’~U®ÚiÆÈºî@t0IÒbœä“ý“¤“\·ˆš—%ïêrS_å:‘Ç@7WeC­t›¤s]·ˆ‰°¤û}²¿cêö¸Ž@ä0ÐMUØâ,¿ê®“ìÏ%¥»îsu’ùSŽjobÔì:]Ç@7´ÔÎödï–L×-œ[/ÙÊMÝl×!躑%6{Œä»ËHŸvÝ ¾Xé_VÞ5ãMý2×-èº7¬23¼^²7HJuÝ nµÙ¿eß0Æì®w€cÃ@’[bsN52ÿtœë cƒ•÷½q¦~¾ëtIªÒæåIáßKú®ø÷ àØY#=Ô,]3Ñ„ö»Ž@ûØNBKmàlOú›¤¾®[$6#íòd®gj§ºnÀÑ1D*lVŸùï²Òy®[$§|jûþÓ¸ÍuÏç:]g­Ì¼Ä/ÿ 6ÿDÉYžRVTÚà­åÏ€xÄ ®Ò‡XÙûŒôi×-º—Ãò}g‚©Ùà:ÿÆ[œ l‰ ^"Ù%lþˆ±Óü /«´Á»À¿q@ª´yyRÛ_%s¡ëÝ›•k•.ŸhBû]·tw $˜¥6ç?<™%õsÝ’d¤]a™ËÆ›Úg]·tg $ˆ «T¿‚¿”ìâêñÇÙ»RU÷³‘F-®cº#@… óÉ>ldƹn‰µ¶6ŸBÕ© Õ¤¨¦&U¡êTµµùd­TJùðsZ[Œ2³Â’¤ôŒ°RÓ¬$);§UÜVåå·*×úáçˆ+-O‘÷ÍãMýr×-Ý qn‰ ^bdÿ*)ÛuK4ìÝ¡[3µggºvmËÒžÚµ#Cûv¥ëàt5Ôù#º^jš§`n«òz¶¨¨o“ ‹›TXܨ¢~*,nRqIƒÒ3¼ˆ® tC’ùÅXÕÞiŒ¬ë€î‚€8µÄæô62÷K:ËuK$46øµ~u@[ÖçhãÚlm^Ÿ£MërT÷þ[üñÂç³êÓ¯Q«Ó€!õ*ÒÀãêTÔ·Q†ŸàXÍm‘þ{¢ íwа¥‡–ÚÜqž¼9’Ê\·tÖþ½éZY™§••¹Z÷N@kVÕÖêsÕiY9a7ªF#Ë«5ª¼F#Ëk”–Îu@{¬ÌVŸtþXS»Èu @²c μäÿ=’2]·‹šƒiZòf¾*^ï¥% óu`oºë¤¨JIõ4dDHã>µ_'žr@CGÕÊçã¤sàš%]YnB“]‡$3âÄ:«ô:î”t¹ë–ްVZ½,W _î¥ÅoôÔ†Õ9ò¼îûíÈkÕ¸IûuÂ)tÂ)û•×£ÅuwŒ4­A¡+N2jtÝŒºïŽmYj3ûyJyTÒD×-íÙ¼![¯<_ Ÿê£[ꂘñù¬†©Ñ©ŸÛ£ÓÎÜ­üž 0ÒbOþóÆ™êÍ®[’ Ž-±9§™™’ ]·ÉÆ5=7·^{¡@ûö$÷Ñþ‘æ÷[•O<¨O~·NýÜnee‡]'ñ`Ÿ•wá8S?ßu@2aÀkeª¼J²”êºçãêB)zé™"=ûX±Ö½p“2³Â:õÌÝúâyÛ5lt­ëÀµ°‘~9F¡ÛŒ‘u p`¥íÓ¢æû%{ë–[½,WóföÓ«Ï÷VK³ßuNÒ0¤N_8o»>{Î.eç´¹Î\z"¬”K'˜ƒ5®C1Vasùå=)i¸ë–xžÑ¢W{jÖý¥ZY™ç:§[ÉÌ ëô/îÒùßÞ¢¾ý\箬ôÉwöS³Éu@"c †–ÚàDOvž¤×-’T_—¢g-ÖÜéýµwgºëœnÍï·:åŒÝ:ÿÒ-:2ä:pa¿¤sËMèu×!‰Š€©²¯XÙ‡$“庥¡Î¯¹÷×cÓú+T›â:3vâ]òƒMY^í:ˆ)#5IöÛcMÝL×-‰ˆ€¨´ÁKövI>— ~Í›ÑO³(U¨&Õe : |Ò]vÕ7ªÖu KV2¿)7µ7¹H4 DÑ,+ÿÿ"ÙºìhmöëñGúiÖ¥ U³ñŸHŒ‘&ž¶Oß¾rƒ ­sÄÒ½Õ ýàt£6×!‰‚€(Yj ³Ãj˜n¤³]v,|¹—îùýPíÜ–é2]äóYþ¥Ýúî5ë•ß«ÙuVö¹,e\0Ìì ¹nH DA…Íê“"ÿ“VïªaÍŠ î¹m¨Þ©Êu•1™YaòZ•›Ûª`~«²sZ%I9Á÷^ NIñ”šfÕØà—$55úÕÖjÔÚêS¨:U55©ª=˜ªPMªµ}iŒiÜæ: Þ%önhZjsFyÒ?%ÓßÅúµÕ©úû†êŧŠd­‹‚c—•VÿAu*)kPaßFõmRaŸ&7ªWAKD7ºk«SµwW†vïxï¯]Û3µk{¦6oÈÖîí 3 зƒ®¸n&žºÏu  Û%ï¬rS_å: ž%Æng‚¨²9§[™¹’‚.ÖŸÿd‘þþ‡¡ª­Nu±|‡äõhѰãk5lt­ ©tp½Šú6ÊÄÁwbcƒ_›7dkÓÚ€6­ÍÑêåA­_P8qGpÚ™»õýë×*¿g‹ë Új¬ì¹ãLÝË®CâUüîl&˜%6ø#;GRf¬×Þ¹5Sùí0U.ìë¥ÛUÜ¿Qã&í׈15>¦FÅý]'“æ&ŸÖ¬ÈÕÊÊ<­¬ÌÕòÅùjjô¹Îúˆ@n«.ÿé:qÎθ¤¢¨ÙJ_gBó\‡Ä#¶ #`‰ œc¤Y’Òc¹®ç=>­DSf,—>¢Ì¬°ÆœxPNÞ¯ 'íWŸ’ÄÚðoOk‹OËç©âõžZôZOmݘí:éCå“èš›V©°¸Éu M-Vö¢q¦nŽë€xÃ@UÚàE’}PRJ,×ݳ+CúÕpU-rÿÖvN›&¾O§ž±[ã?uP©éa×I1³k{†^}¡P¯"5=¬Ov¯>sænûÔ¥¦yÎZâÅÎm™zå¹B-xºP›Öå8mùÌvëªW+;§ÍiEÖÊüxœ©½Ëu@¼` “ªlðJ+{§bø{ØPç׿®OÆjÉO<,¤Ïu§NÿâN‚l.Éêe¹zfN±^z¶HM1ùPAq“®ûß•=®ÚÉú@ X#ýt¬ Ýî: 0Ð U6p½•nåš›7dë7W¯m›³b¹¬$)5ÍÓ~i—ξp› Å|ýDÖPçׂgŠ4oz?½»>ö§ø|V—ýxƒ.øöf~Ú‘¤¬ôûq&ôs×®±%xŒªlð7VöÆX®ùò³Eºý×Ãcþ&y^}þË;uÎE[Õ« 9¦k'£•yšu©½ÒKÖÆvíI§íÓu·¬äJ$³ÛÊMèz×.1ÐAÖÊT)x·d«5ÛÚ|º÷Oƒ5÷á’X-)I*,nÒ…ß}WŸ={§RÓ¼˜®ÝlXÐì)¥zùÙy^ì~KÖë×w,WÉ€ú˜­ Ä’•½»\uW£ØÄ:ÀÅæ¨&Uÿïêãµ|q^¬–TAq“.úî»:ãÜJIaã?Ú¶lÈÖ´¿ Ы/ÆìD€¬ì°®¿e…&}f_lbÌÊÞ=ÎÔýÈu€ t@¥ üAÒOc¹æÛ¯õÔ?“á½›uñïêó_Ù¡”T6þcm㚀¦þu€Þ\Ð;&ëP·ÝW)Ÿ—¤‘´î(7¡Ÿ¸Žˆ5Ú±Än5’“{¥¼{ ùÇ€¨=?-=¬¯|s›¾ñß›”•ŽÚ:è˜Õ˃úÛ­Çiõò`ÔÖ(,nÒ]ÓßVn~KÔÖâƒýU¹©»Ùu@,1p•6p³¤\­o­tËõ#õò³E}®1Ò§ÏØ­ï\³^E}›"últçý럅š|ûÜŸÑgge‡uÇ´ • ®‹ès8ö³rú£ë€Xaà*mð&ÉþÚuGK³_?½lœÖ¬ˆÌ[á%ëuõ¯WkTyuDž‡è¨¯KуwÒ“3úÊóºþcêóYÝô—ešxÚ¾Ô ÃJº¼Ü„&»ˆ£ÒæüP2w»îøÀ½éºê›´wWF§Ÿ‘’âé¼K¶ê[?بÔ4/‚u±ÑÖêSmuªjkRU[ª¶V£ºPª$)Ü&µ´ø”™õÞ?WZzXééž²sÚÌoQ0¯UYÙ‰yÅÁª¥¹ºã¦áÚ¼!»KÏùÁ/ÖèÜ ·E¨ H(žd¾Unjqm |L• ^le”äsÝr¨õ«ºöÒ jj<ö¬ckô“›V©d`}Ê"gßžt½».G[6fi÷ŽLíÚ–©Ý;2´gg†êëRºôì”TO=z·¨¨o£ŠŠ›TXܤ¾¥õ*\¯’ JI‰ß¡ˆ¶VŸfL.ÓŒûJÕÚrìÿþ?ÿÕúÉM«¢P$Œ°d/,7u³]‡D‡Xbçiޤ®í6GÉkó tóOGuøHx¿ßêÂË7é›W¼+ŸÏF7îÜŸ¦wªrµ²2OëW´qMŽB5©NZRR<• lÐÀãê4üø*¯Véàú¸û=Û¼![·\?J›ÖætøkŽŸpP·ü½J)©ñ;àÄH‹d¾RnjŸv- ¼¯Êæœ.™§­Ôùsöc`ú½4å®í~^É€z]ËJ ŠAUûêB)ZòfO-~½‡–-Î׎-™®“Ž*+'¬cª5nÒpÊ~õ§'´4û5ùöÁš7£Ÿl;ó %e ºã¡·¶Å&ˆ{¶Á'sæzÕu @40 i‰Íad^—”纥=ÖJøÕH½ødÑ?çKl×?[«ô ·o}ïÜ–©Wž/Т—{iÕ²\…ÉûíVPܤNÞ¯“ÿsÆN<(¿ßíé‹^í©?Ý8BÕÒûñ@n«þòp…úöoˆq÷j}²'1u+\‡DZâîÈFÈ"›]”*ßBI¥®[:ª­Õ§_\1VË*ò?òë©éa]yÃZù•ŽÊ¤=»2ôʳzù¹"­]pÖMÁ¼V}úŒ=:íó»5zBµ³«öíI×ï®­UKs?òë))žn¾g©ÆžxÀIÞM‘7i´©ßí: ’ºõÀV™™ ,4Ñu˱ª­NÕUßÍúŸÛ—jèÈØùïyFKåëéG‹õú‹ ý¦ÿ±ê]ؤÿøÒnõµm*(nŠùúá°Ñƒw ÒÌûÿ=¿rÕ«õ¥ ¶Ç¼H0>e}fŒÙ÷{D@÷Ù©ýkå«R`ޤ/»né¬-²uõ·&hdy®¿u…r±½ëýàþ4Í›ÑOÏ>V¬{Ócºv¼ñû­NºëæãtÎ×·ëòŸ®‹ùú@‚zjB_þšQØu@$tÛ€*›s§•ù‘뎮ں1[}Ëbz ý– Ùš3­¿^|ªH­-¾˜­›(†ŒéüK7ëÓŸÛ#¿?–ÿ^rÔ¯¬^¾® $;ÊMè'®#"¡[TÙà5Vöv׉fÓºMûë@½ñ¯Þ²ì1·«¨o“.ºb£>{ö®˜86Væªq¦ö.×]Õíªlà,+Í•äwÝ’(¶nÊÖôÉeZðÏBy^·û–é²Ââ&}ã¿ßÕ™_ÝÓ“t˜'é¼ršë: +ºÕnî›;ÁÈ{IR¶ë–DªIÕC÷ Г3ú)îVß*QQ2°^ß»n­&œtÀu €OjôÉœ>ÆÔ¾å: ³ºÍ®n¥Í+“ %ºn‰wmm>=?·¸sj«S]ç$‰§íÓ÷¯_«>ý]§8„‘vyòOgª7»nèŒn1°Ôf{jX(i”ë–x·zY®nÿõpmÞÀ! Ñ”šÖÅW¼«ó¿½E))žëÿ¶4¬ÀIÌŽ×!Ǫ[ ,±ÁFöë®;âYs“Oß3P³§ô—çu‹o‹¸0`h®¹i•ŽUë:À‡ìôrSw‘ë €c•ô;½KlàZ#ýÑuG<[öv¾þpãíÙ‘á:¥[òù¬.¸l³.ùÁ&¥¤r¬ÌUãLí]®;ŽERTÚÀÉ’Hâ"ûÃhkõiêÿ%Î[ÿYÙar[•Û£EÙ9mÊ ´É+Š”–橱Á'Ijnò«>”¢ššT…ªSU[šÿ|CF„tý-+U2 Þu ©ÕÊ~vœ©{Åu@GÅÿ®h'Uج>~ùKêãº%mÛœ¥[¯¥u«®S>"#ÓSé : <.¤²Áõ*êר¢¾M*,nTfV¸SÏ ‡öïN×®™Úµ=CÛ6ekãÚ½».[{wÇשéž¾wÝZ}ñüí®SH»ÚÆ5ü@€„”V©~þ%é×-ñèͽuÛ/Gª¡Îï:E½û4ëø 5rLF”W«tP½|>³õk¦éª\­¨ÌÓ;U¹Z³<¨pØýÅçìÔU7®QZzç†DÌ›i }f¤Q‹ë€ö¸ß錂*ü›•ýžëŽxãyFSÿo€fL »=öðû­Ž?á N8e¿N8y¿úНãîëB)ª\ØCo¿ÞSo½ÔKÕÒœµ Òw,Saq“³’‘½k¬©»Êu@{’n Ê/¶²Ó\wÄ/lô»kGéõÄ|mŸÏjô„jöùÝúô{ÌkyCgxžÑ²·óõÒ³zm~B5©1oäµêö)‹Õ`| JÝÐeå&4ÅuÀÑ$ÕÀ›=ÆÈ¼!™,×-ñè…y}ôÇ_ˆÙz=z7댳wé çoWŸ~1[7Z[|zó¥ÞzúÑbU½Õ#f'( Ò¨Pz†›–‘šŒ|'15K\·IÒ ¬´Á-²‹%•¹n‰g“o¬ÙSJ£ºÆ°ãktÞ%[uÊg÷Èçst×@m}7KOë¯æ©¥Ùµu Š›tçÃo+¿'WqbƒäŸPnª«]‡NÒ TÚàLÉ~ÍuG¼ó<£ß\3Zo.èñgO¦)w ÔsËó:ÿ£uùµëtÞ¥["X Âê$3®ÜÔ®sp¨„X`•’§Àk’&ºnIDëÞ èÚoOPs“.ÛªK¯Ü¨/ž¿]~¿R]âZ¿: {nªåKòŽùk?wîN]ûÛw¢P ÂÞ+tò£V×!Hè€J¸YÒ ®;Ù+Ïê6J¶ƒûøOÛ§«n\­^ÍÑ KpÖJ/>U¤{þ0T¡êÔ}ÍèqÕºå•JMó¢\ 2Ìÿ+7µ7¹®ø@^J±i IDATÂTÙÀ)VzI’ßuK¢›ú×zøžGýœü^ͺúVs/ý1Ú¿7]wþf˜¾Ü먟WÔ·Iw>ò¶ró[bT Ú$VnBo¸t ÂæçúÕV%©ÌuK2°Vºõç£ôÒ3…‡ýø„“èÚß¾£½y뿳æ?Y¤»~7\MŸ¼n!+'¬?O{[¥ƒê”è¢MÍJ;ɨupl—¿Ç ¿Zÿ*6ÿ#ÆéÚ߬ҰÑÝ¿JMóô£_­ÑÍ÷T²ùßEŸ={—îž±H†Ö}ä×}>«Ÿßº‚Í q HWë]®#¤<`‰ ~ËÈNuÝ‘ŒîK×.š ½»2Ô»¨Iÿsûr ÅK­‘ÔÜäÓ7Ђ§ß;má‡7¬Õ9ßØê¸ @WY™‹Æ™Úé®;@÷–PKmîO^•¤ ë–dµau@÷ýy°®¿e%÷ÑGÑã•h×¶,}ÿçk\§ˆŒê°RÆL0·¸ÝWB TÚœç%s†ëŽdç…|~ë:#éYûÞõ ’ƒ‘žkB_pݺ/Ÿë€Žª²ËØüDÛüokóiEežëŒcÆæbZQ™§¶¶„ùO'bÈJgVÙàÅ®;@÷•»X6ÐËJ·¹î@|Zðt¡þvËPÙÄš[@‚úûmCõÒ3®3§¬ìŸ—Ú¾A€ 1à—ù?I½\w þX+Í~ TëWT¹°‡ë$¹ÅoôÐÚ•͘\&ÏãVOOæO®#@÷÷•6øEÉ~ÍuâÓë/hó†lIÒŒûÊÜÆ é}ð=¶uS¶Þ\ÀLŽèâ¥6p¶ëÐýÄõÀBÛ#h¥{\w ~ÍžÒÿÃÿ¿tQ¾Þ©ÊuXƒd¶zyPËÞÎÿðï8ÁÑx²w¯´½s\w€î%®ÒÕv‹‘-qÝøT¹°‡V/ûè†ÿÌûËÜÄ éMÿÇ€üýÚAU½Åµ8Ó¿E¿u]º—¸Xlƒ“$û=׈_3&—~â×Þz¹—6­ã¥[DÖ– ÙZôjÏOüúôÃ|ÿf®ª´“\W€î#.ÖY¥ûdïSœöÁ½5+‚ªZôÉ·¯­•fÝϦ,"ë‘{ÈóÌ'~½ê­Zµ”k'pD>+ݳÒ*Íuèârƒ½^Á_Jáºñkú½eGüØKÏjÇ–ÌØÅ ©íÜ–©Wž+8âÇg=ÀÀ ŽÌH£[•sëÐ=ÄÝ@… ³²×»î@üÚº1[o½Üëˆ÷<£G§öa’ÙìJòíÿ¼¹ ·Þ]ϵ8óËÅ68ØuH~q7"Ý!q\2Žlúä²ÃÇ~¨ççkÿÞô!YÜ—®æõs¬å•2|²w¸îÉ/®ªlÎW­t¦ëį]Û3ôÒ3…í~^k‹Os*‰A’Ù£Sû«¥Ùßîç-øg¡vnåÚ ÕY•6ø%× ¹ÅÍÀV™Væ®;ßÚ;ŽýPóf”(Tå"$«PMªžžÝ·CŸëyFs¸ví²Y`•áº$¯¸ÈTðzI\w ~ÜŸ¦çŸèÓáÏojôéÉ™ý¢X„d6oz‰êÛûÿÏ>^¬\;£”§ÀO\G€ä•6¯L²×¹î@|{¬ƒÇ±äk.Qcñ} ÐÜäÓÓ;ööÿZ[|šû0×N ]7,µ™L&€¨ˆ‹#ïI\ #ª¯KÑ?;xû¡BÕ©zö±â(!™ýsv_ÕL;æ¯{rV?…jS¢P„$’í)åw®#@rr>Peƒ'ZÙ¯»î@|{â‘Õ×uncu΃ýÕÖêü[ ¢­Í§Ç*íÔ×6ÔùõÔLN@»¾µÄæNp’ó]Q+û'IÆuâWs“Osîü‰Ù{wghþSE,B2›?¯H{w¦wúëçLãÚ ´ËgäýÑuH>N–Øœó%â²ñï™9;ŽýP3&—Éó˜3ÁÑyžÑì:÷öÿBÕ©zîq®@»N[b縎ÉÅÙÀJ«4#s‹«õ‘ÚÚ|š3­—Ÿ³sk¦^›_"$³WŸ/жÍY]~ΣS¸ví3ÒmV©®;@òp¶CÕ¬à’»Z‰aþ“EÚ³##"Ïš~o©¬È£¤ºúöÿöîÎЋÿ,ŒÈ³ÔŽKQιŽÉÃÉÀR[˜í“½ÁÅÚHžg4gj×ßþÿÀÆ5-~£gÄž‡ä²èÕžZ·*±ç;Ÿk'Ð>+óë [Üõc'ähÀSýÕV*r±6Çkó ´eCvDŸ9crYDŸ‡ä13Âß[ßÍÒë/öŽè3‘”úøú¡ëb>Pióò$sm¬×Eâ™udŽc?ÔòÅyZQ™ñç"±­^–•ï‹é÷–qí:âËln¾ëøœþ…$6:pT¯÷Ôºw"wû¡fÝùÁ$¶‡ÿ> *Ïݰ: ÅoöˆÊ³‘Tò=Ùk\G€ÄÓ€E6»H²WÆrM$¦hÕÿÖ+½"z×;ÛÆ5½ýZϨ=?ÒW 9YÙk–ØîŒ]Ó€Tù®“LV,×DâY½,WËG÷˜þÙôêó‘8fÜWÕcú—Uäk%×N }9\º*fËmv¡d¯ˆÕzH\ü£,êk¼ú|¡¶oa¥»Û¹5S¯>_õufÞϵhŸ‘®äÐ1Ë÷3ÞþG{6­ÍÑ¢W{E}Ï3œ͸¯Lžg¢¾Î¢WziýꜨ¯ƒ„—md®qWL*l —•xûíš>9ºÇ±jþ“}´oOzlCÜÙ·']óŸ,ŠÉZÖJ³(‹ÉZHxWq 謘 ø¥ë$ñú+Žjç¶L½öBaÌÖkmñé±iœÐ]Íy°Tm­1;E¯³ÏuâTÍÁ´ÍÏÎíó¨ëàÖ1 ?»W[‹§¤”(õ€N8¦+Â-)_›ÿÄc¼s£“º¢ÃWôûÔ™-u­û$eE±tB‡Oh­où¬Øü .uxÀZsV4C@çutÀHúb4C@çuh ÷˜sÆJêåÐI; ì;3Ê  :6à3gD¹tiïŠÇŸÕÖâ? )== Ú= µÅšØü ®µ;`ÄñÿÄ»v$ËqÎíƒEåôöÚZw·÷yÀ­£žà…[O›ÿĽ£ÙSc:ï¨V†À÷ÏAnjKë~Iþö€N8â i­-§ŠÍ‘¯°¾“cغ åȲ“b—@ä¼ú½ß© {ÄO]ü²nþ×£1,оÃ\pß®nãHýòzJ’¶Uïw\_†ô*Ò7Æ|ZÕõºë§¶äfd+/#ûˆÏLMaMlv ÷;­£åSN¬c e¤¤êSýÓ ¥Ó¯!½Š´½ö€Îyð–n?Ÿ•£/7NßsŠN(üᯇš5eñg]Ƙ£~ÜZ£’Ø9ì€ñÙ‰ÒÑ3 ™ éÕG§­ÓÒI¥Ç)#å£oŒ÷ öÐìoþTçL¹E{ëkUºÑ;;¨/§³†OÐI¥Ç)ÅçÿÄçüᄅý !=¹ªÂA¡ÔÎþR:ü€|­’oÚ'Åç×ÈÂX2D'– ÑÉeÇ©gV Ý¯Ø£P³/þ©¾<õ÷ªn¬A©>c4º¨T§¡SŽ8â¦ÿ¡üƧ¿}år…ZõÒ†•1*ý7_;^n‰vÀʞ눕^ÙAMè7HK†è„~ƒ5¦O©ÒR:w'üð‚~zèë?Ö×þ“Z›#\êΠ…:yÀpR:L§¡ü¬c¿E>ÕŸ¢Éçý@_z›–íÚ…JêÅãÏÎjkÑ01iÅÁ|*,ÕñÅ¥]Ø_£û”ªo°GD×8¡d°¸àJ]<ó/j ·EôÙ±à3FCzkB¿A:©ô82`¸Šrò"òì@z¦¹è=åm:°;"Ïìˆö®°6ùŽøÄ@¸5õxÉ;ìɯ|ƨ4¿@£‹J4º¨L£ûô×ñE¥:Ê?>3h¤þö•ËuÅœ{¶^LÖì¬^ÙA+¨ñýj|ß[<@ǫ̂­×;;¨™ýDgM¹Y{êj£¶Î¡Œ=ú€U7°òÊ]„þ?{÷gW]æü9wfÒ+é„„Þ …P¤”*  Ø" ¨ëº–…]w×ßêªë®¸ØØqEPšô"½)Ò{2%mfîùýAY ɽwfî½gÊûýOfîyÎ÷ûÉ ¼òÇyÎóJ‘K’?dDì;blì;bLì;blì3bçØgøÎѧcüËå”ý§EÃIçÄÅ7_ÙiÞ0ï][ŒSÇîùúÿñCFTmÿÍ-ÍqÛóÓãÚÆš¦Æªí›Ð9~;åµí›þi:%¢È,€ ëU[»{{ûŽØùõý}ëzeïMšó­ñäâã¾ù³âÞùÏEÙ<`3phLµKL5.&ŽFî{ µ¹šªæhnm‰{çÏŠ›ç<7Ï~"ê·lªêþ%4t’rÚ¦ ‰dJ÷ûkQ]®&Æ »ï42öØitì1lTì1tTì1ldŒ<,j’\ÖwhÞšåqßü™qï‹3ã¡—çDã–ÍUÝ¿ccÊØ=bÂȱ1aÔ¸˜8r\ í7 ªÞhÃæñÀÂÙqÛóÓã/ÏOÏä¡ÿkèŽÞÜpì±µéšô€rÚo@Œ<<Æㆼòçø!#b÷FƸ!ã®Êo§·Gš¦1wõ²x|ñ¼xlѼx`áìX²aM¦™Î<舸àˆ2Û¿5ÍÇ3KÆ=/>÷Ì.žZu_·iø‡»®‹Ÿ>|[äÓžû¢ó³Fy«—Åó«–Æ‹k–Ǽ5Ë»ì±åRS¬ ;0rvón‘$}² TÞ½ógÆâõkb—!Ã²Ž²¦­[bẕñÒº•ñνŠ>µuëë·lêÑÿ#"¬]çýþ§YÇètjr5¯·¦Ý¸ jÒ½"ïíèîòi7Î~<¾ð¶ã3ÙEÆX¸þ•‡ü ×­Š—Ö­Š…¯~½ºéÿÆö?wñŠ6Àöä’$rE&´vç ‘ÆžæªèιÏT¤ ¹µ%–Ö¯‹byÃúxiýÊxiݪXѰ!V4®yk–õ˜3èÉN±·ÿ#^ùoµ»yC@¢zˆÇÍ‹­-ÍÑ«Ä7ì›ó­±ª±>–7¬‹UMbyÆXÙ´!–ׯ‹•õ±²iC,kX+6T89W›Ë­Éwë#"Ù+¢gŸ=Es¾5æ¬^ûë75ÅòÆu±²aC,o\+Ö¿úç+oí¯hX«šê»å™étOu%LhÉw¿çãohH÷Ê.Pm'ÿú»±¥¥ûA‡\ ºã¯ý­“ˆØ=Ë @uyøOwUÊ€M-[«¤ºr£:}DDôÍ8 tX]Mñ€Íݵ 5MÇe¦ì¼{±Û~1rÀ v¯Ñ«¦®hÍæææv¯ÿš½ûÆG§¼=ÆÖáµÊ¡6""¡€Ì}îð÷Æiˆˆ ›7Æ‹k–Ç «—Æ‹k–Ǽ5+➟MÍ…ßÞïS[B@KÇŽÛ{RüÛÉçFDļ5ËãÞŸ‹{ÌŒ‡Ή¦­[:¼~[ÕFD¤iŒK’ªï o2vÐN¯=¸O¿˜:v˜:v×?›öï_‹EV\£O]¯¢ûllîøú÷›úú×{ { çúîhnm‰ÇÍ‹{ÌŒ;æÎˆY+ux¯RÔFD$‘Ž‹Ð@¶v²ãqúišÆŠ¦ E×(eÀ¦­…§”²Ç»ö:p»×êjjãˆÝö‹#vÛ/†õß¾ý;´W©r‘$»Te7غ\MŒ0x‡×7lÙ[KÝß«¦¶hÍ–ÖŽ5¼cÏ£_]ï¢uWM¿¿Cû´E.""‰Ø¹j;ÀvŒ2yȻʺæ£Ç­yï>SbÌ ¡ÞëºÇó«–lóù^à 7,,±`PŸ¾¯oìÀÛÿ§ìHÑškg<[ZZ:´O[ÕkY:2¢6©ê®´ÛÈCâ‹GœXõ}ÙcB³Ç„¯óÔ’ÛmØwÄØ‚÷½´nUIëèÕ§àõ ››JZg{úÔÖÅû&oøÍôûÛ½G{Õ&i¯Qùªo Y:tÜ^qظ}ª¾ï£‹^ˆÇÍ«ú¾]ß @ÏV“äbâ¨qk®/­``ïÂÖojÀ ûNAEÖäåâ…UKÛ½G{Õæòùááýz˜cvŸ_9æÔªïûýûnô°yüNz¶½†‰¾u½vx½%ßsW—öP½Øú ›7¶)Û5騢5ÿóÔ½í^¿#rI.Ù)“àU“ÆìVðú‹k–Ç–––’ÖÔ§_ÁëëÚ9`ÌÀ¡qôû¬Y³±!þ<ûÉv­ßQ¹4C2Ù^uИ] ^ŸµrqÉk èݧàõúvNøà¤#¢&ɬ¹jú}±µ¥¹]ëwT.M4­·ß§àõ™Ë•¼ÖàÞ…'¬ÝÔXòZotæG¼Þšæãžº¯]k—C.ùÁ™í@7¸O¿ØÔ.kf,_XòzCú(x½=¦í²gì=|tÁšÛ_x:¯_ÓæµË¥6MbH¤™í@5mÝÏ,[X–µ’$‰ƒF¿ÿš%õkcuS}‡÷Üð–ð‡Žß»àhýÖ4O.™_òú# ,x}};ΚtTÑš_?qw›×-§Ú4C’$Ó ´ÁÜÕËâ=¿¸¬,k±Û~ñÇ­¤Úÿ|èÖøåãw•eß7e¿oÁë³V,ŠÆ-›KZ«Wm]Ñ#6lj*9[DÄÀÞ}ãô‰‡¬™·fyÜ¿`v›Ö-·\ä’³è¶><©ð¹öÕpÜÞ“ ^ôå¹%¯5¢ÿ Hм¿® gM:*ôîS°æÊ'îŽ4Ívü~.I£o¦ ÈÄÀÞ}ã”ý)¹~üeϰûN£bïác Ö<¶x^Éëè_xüDľ…'¼Q’$ñ‰CÞY°¦ië–¸vÆC%¯Y)¹ˆ(ýo@·qú‡Eߺ^%×ö°ãŠŽÂo«ã÷\ðzkšûÌ*y½‘ý‡­ÙwøØ’×{ÇcÏF¬¹úébÃæ%¯Y)µ‘DßÈv Pf™|TL»gÖ1:d`ïâÃÌ?pÀáqÐè]«¦rZò­ñõ[¯Êdï³&Õ¦ú$IâGïûd¼¼~U<¹d~Y2¼wŸÂ O.žë66–¼ÞðÅ'ì?r—’×ûä´w¼ÞšæãÝYòz•T© ÐݹÛþqÆoË:FÅ>~Ÿ8|ü>YÇèæÖ–L=>»G›ïëS[ÿó¡ ã„_}7^^¿ªCÆ ‡+üû»sîŒ6­9j@ñ û*­`·¡#ã]{T°æ¶9Ócẕ%­WiŽèÎ;¤ð›í… ï?(~{Ö—JšÒPÈY“ŽŒ\’¬¹sÞ3mZsüEkv:¢¤£>1íEó]þè_JÎVi¹ˆèuªgX¿ñþ:6!bŸ;Çø|Ô$¹vÝŸ$IœyÐkæ¯]3W,jÓº» -ÞP“äbŸá;¬é[×+ΚtdÁš§—.ŒÇÍkS¾JÊED]Ö!¨žs~Gô®­íð:ïÜó€øê1§¶ëÞwì11v-ò°þÚµyÝ]‡ /©nÿ‘…øØ”·Ç¾ý ÖüÇC·”œ«rQ“uª£.Wg|LÙÖûòQ'Ç©ió}uRÁëišÆž}¤Mköª­‹1ƒv*©v¿cwx­.WŸ?ü½ïyýª¸eÎSmÊWizÓ8,Æ Z¶õ’$‰žòÉ¢oÔ¿Ñáã÷‰·ß·`Í#‹^ˆ—ׯjS–ñƒ‡E.IJª-”÷¬ÉGÅØÁà ÞÅ£wDkšoS¾JÓÐCä’$¾tdá7ïÛ£¯Þñßüb í7 ¤ú‹~_Ñš_?qO›s;RàvÔP›«‰/qbÁ{W6ÖÇožº¯MÙªA@qòþÇÞÃÇ´ûþÙ+ïðÚ®CGÄ姦èø'ïwp³Ç„‚5/¯_7Íz¢ÍùvßiTɵ£Þî$„÷pxÑF‚Ÿ¨wßøî -ºÏµs¼~[Ž!ˆˆ8xìqÓœ'_ÿ>—$qa‘ +6Äÿ<ÙöéÕP›u ü^^¿ªÍç§w6ÍùÖ¢5‹7¬g–-¬x–îà½ûLމ£Æíðú¼5Ëc¯a£ ®‘OÓ¸äæÿŽ;ÎûvÔæ¶ÿ®ùEGŸO-™wΛ±Íµ·ï>!†ô)ÜÔ±fcC\=ý‚5;rÀ¨ñmªŸ¶Ë^oj8eÿi±÷ðÂ?ƒÿxøÖNùöÄ+Gÿ¿€.+I’¸è¨“wx½~˦øÝÓ¥=tŸµbQüì‘Ûwx=—$ñŸ§}:ÆÙvŒþMsžŒ)?úJüó=×ÇŠ† Û½ÿ_îýcllÞRR–7ªÍÕÄ~#Ƕéži»ìù¦ïï_8;.¹éÊx`Á¬íN èÌoÿGhèöNØwjLÞy÷^¿ê©û¢a˦’×ûþý7œ01¤oÿøå™çGïÚm‡Ò¯ÝÔ?úëMqðO¾ÞøË˜¹bÑë×f®X¿}êþ’s¼ÑžÃFGŸÚº6ÝsИݢ×îY·±1®š~œqÕ÷ã ^_¿õªxè¥ç#ÿê1 ?yè–Nûö„€n­6WßxÇvx½9ß?ìÎ6­¹©yk|ýÖ« Ö4z×ø—ã?¾ã}[[âšÆ;¯øNœqÕ÷㎹3â›·ÿn»oÞ—â€Ñ;>Þ`Gz×ÖÆ!»ìµÝk«›êã×OܧÿÏ÷bÊ.‰¯ßzUüæ©{Û•­ZrÑ’u*ãÓ*x®ý3‹¥õkÛ¼î]óžg>V°æ#SŽŽL9ºèZ,˜ûßÅC ç´9Çk5¾]÷½Û~Ek–7®_?qw§~û?""—˜Ð-õ­ë—¼ý}k~öÈíí^ÿ›·_6o,Xó/Ç<½k»÷(ÕAcÚ·ÇÑ»O(s’ìäRº¥Oúî3pè¯ÿuáìxvùKí^ec}üãÝ¿/XÓ»¶6~yæù1¤OÿvïSL¯Úº˜¶ƒQþÅLÞy·Ø»o™e#—FlÎ:å5rÀ øâ‘'¬ùé÷uxŸ«žº/žY¶°`ͦ歱µµrï¦OÛeÏèS[×®{ks5Ýf @.‰(<€.çÛïú` *ðfûœUKâîŸëð>ù4oÜöÛHÓt»×›¶n‰óþpyllÞÒá½väèÝöëÐýïÙû 2%ÉV.’Ø”uÊç°q{Ǿ­`Íåÿe‡íÛê‰Å/Æg>ºÝk_¹ù¿ã…UK˲ώµ[á7ø‹ý=Û{Rä’¤œ‘2‘‹Ô€î¢&ÉÅ?Ÿð±H <Ð^°vEüþه˺ï?ÜuÝ6où_ùä=qýs”uŸ·êß«wL»{Ášg–½T° axÿA1uìåŽVu¹p@·ñ‰CÞG+XóÃnŠ–|kY÷]Z¿.®xôŽ×¿z邸Öíÿ[Ö=¶çðñûD]®¦`ÍÝ/ΈÛç>S°æ½ûL)g¬LäÒÔÝÁ˜CãkÇœV°fÁÚñ‡ ½•ÿŸÝë66ƆÍã3×ÿ,¶¶4WdŸ7*åÁý]óž»æÍ(Xóþ‰‡œšÐÔ&I4d€Žû·S>ƒûô+XóýûÿTö·ÿ_S¿eSüä¡[bÁºUñÒºUÙãjs5qÒ~S Ö¬ßÜÓ—,ˆ$IbÃæ;üùì2dXLÛeÏx|ѼJD­Š\¤±>ëṫ'ïÜó€‚5sV-‰?>÷hEsüô‘¿Ä-sž¬è¯9r·}cxÿAkî{qf´¦ùhɷƽ/>W°öô‰‡•3^ÕåÒH4tacKûPѺ¼ëºhMóÍ’¦iE×£Ó&`×¼g_ÿúÎ7|½=§N8$js5Ε•\’¤²@û$Iß?ùœ¢£ÿZ8'î˜;£J©*¯®¦6NÜ¿ðøÿ|šÆ=óÿï¡ÿ]ófD¾@ƒÂðþƒâ½ûN.[ÆjË%ီ곇ïÞë ‚5išÆ¥w][¥DÕqìžcHŸþk\8;V6Ö¿þýš ñðKs Þsö”cË/¹|ª +š:vøæ»Î,ZwìÇâé¥ +¨ŠÎ<ðˆ¢5¿ö‘m>»vÆÃïyûb·¡#Û+K¹$’uY‡ m÷éW|àsQWäÌú¦­[â²;»×Ûÿ£ ‰÷+<þSóÖ¸iÎÛ|~Óœ'bcó–Þ—K’8ûàc;1¹HceÖ!(]’$ñ£S>ã/Zû£¿þ9–Öw¯÷Â?>õ˜¢·½0=·lÞæóÆ-›ã–9O¼÷cSÞ{÷íPÆ,äÒ¨]‘uJ÷õcO÷;¸hÝüµ+âgÞQ…DÕÓ§¶.ΙöŽ¢u¿/0êÿÚ¼wpŸ~qNœ[5!VED>ë ÷¡ƒŽŒ/urIµwÛockKs…U×G&#ú*X³ª©>î?s‡×X0»èT„Ïúžè][Û®ŒYÉÅu×µFk³@aGì¶_üàäsJªýý³ÇÝ/>WáDÕU—«‰ó8¾hÝÿ>ó×hÉ·îðz>Mã÷ÏîxB@DĨƒãÓŽnsÆ,å"""IÐÉ;õب«)þVúê¦úøÖ_þ· ‰ªëÃSŽŽqƒ‡¬iηƯ¿«èZW>yO4hˆˆ¸èí§D¿ºÞmʘ¥W"ÕÐÉ]z×uÑ´uKѺoüåêX»©¡ ‰ª§_]ïøÊѧ­»iöEÇûGD,Ù°&nxîÑ‚5£ ‰Ïv\ɳöZÀ²lcPÌ’ kâ_îýcÁš›æ<7Î|¬J‰ªç³‡¿'F \´îò‡ÿRòš?}ä/‘¦iÁš Ž8!†õXòšYÊED$‹²@q¿|ìÎxzé‚í^[Z¿..¹éÊꪂ±ƒ‡Å…GžX´îÎy3â™e K^wÖŠEqÏü™köî_?öô’×ÌR.""M4t­i>¾vËo¶ys=Ÿ¦ñ…ë75e”¬r¾ûÞG¿ºÞEë~øÀŸÛ¼öT´nס#â_O:»ÃûUÂ’yÙÅ€ˆ1‡ÆÏÏ8?êr5EkŸ\2?®zê¾²í}Ù×ÅúÍŇçŸ>ñ°¸àˆʶo¹ü_@š×@fõîWøË1zÀ¢µ›š·Æ—þô‹ÈÛß«›êã»wÿ¡¤Ú¿{çqÒþÅ(¨¦ÿkHâÅ sЃÕÕÔÆ¯ÎüBL5®¤úKï¼6æ®^^ö¿yê¾øëÂÙEërIÿyê§còλ•=C{½Þ$Ž úêjjãø|½û„’êï˜;#®|òžŠdIÓ4¾ôç_EÖMEkûÖõŠk>rI8z׊di«×rÍ9 TÕkÿßwJIõ/¯_ÜøóHË8úÿ­¯_wÛÕ%ÕéÛ?®ûè%qÀèñËSªÚ×¾X6û E#|º)"úg˜ªâ±Åsã§ߖɾlŸß @ÏÓ¯®w\ñÏÇq{TRý–––øÔu?õ›š*œ,âšÆá»î™|TÑÚ¡ýÄï?ú•øðï~Ó—.¨x¶©ý¿/ÿ>qÚó15³4P%÷ÍŸ÷ÍŸ•u ÞÀï gÞP\uÖ—bÊλ—TŸ¦i|ùÏ¿ŠË_ªp²ÿó··þ&&Ù5&ŒW´vh¿ñdzÿ&.¸áçqÓœ'«n[¹7}—ÄÌLRÐcì7blÜü‰o”üð?"âŸï½>®î‘ ¦ÚÖæ–æ8ûšŸÄª¦ú’êûÖõŠŸŸq~\xä‰N¶}ojHó1;“ô§N<4nùä7c·¡#K¾ç¿Ÿ¼7~ü×›+˜jÇmXç\óï±¹¥¹¤ú\’Äß½óŒ¸òƒÄN}V8Ý[ö~Ó7¹¼ ”]ïÚÚøÇ÷~8®xÿ碯Þ%ßwÍŒãë·þ¦‚ÉŠ{rÉü8ÿ†+¢%ßZò='ì;5îùÜ¥ñöÝ'T0Ù›½© ßà ¬=>n?ï;ñéCkÓ}×?÷H\ô§_G>M+”¬t7Ï~2.üÓ/Û”eô€!qÍG/‰=ñìÚo@Ó½âM «&ô^M߀n¯Wm]\òö÷ÅmŸüfì7bl›î½zúqÁ ¿ˆÖ4_¡tm÷‡g‰Kn¾²MM¹$‰³>69ÿŸãÓÞ5I®øMíô敯»®5"fTl7z„£wŸ÷~ö²øÚ1§E]Mm›îýñƒ7ÅÅ7_Ù©þ¿æêéÄç®ÿY4·¶´é¾!}ûÇEGㆠ¯P²·6DD¤1½b»Ðí îÓ/¾óî3cÏFµé¾æ|küÍ-¿‰ºûúH;ÁØÿ¹qÖãñ±k~[6—|ÏŠ† qúÿüK,\·²b¹¶iHr©ÚmÃæqÒ¯¿¿öá’ïY³±!>xÕ÷ãÊ'ï©`²ò¹÷Å™qÒ¯¿[ÒýÍ[âã×ü8^\»¢¢™¶ihM tÈ–––øâ¿ˆ_?qwÑÚ§—.ˆ÷þââ¡—ž¯B²ò™³jI¼÷—ÿ÷ÍŸµÃš4Mã 7ü"žY¶°ây¶i•¯{6"¶V|gºµ|šÆßÞöÛøÍS÷íðú>|[œ|å?Ç¢ ««œ®<Öojг®þAüÃ]×EskË6×þØqËœ'«’e›€™3¯ÛIì¸=J”¦i|ý֫⎹3ÞôùÒúuñ¡ßþ .»óÚí>8ïJòiÿñЭqÒ¯ÿ)ž_µäõÏg®X—Ýõûªåئ ""Òx¬j èÖZò­qþÿ+mXišÆu3Šw\ñí¸A÷z7ý™e ã]Wü}|ó/¿‹¦­[âïn»ºªÍ Éö>qÀéŸL’ô—UKð}JôïÕ»`Í-sžŠ§–̯R¢îmêØ=âÄý¦¬¹íùéñÄâ۽Ǵ]öŒš$.šÛî5ºŠaýÆš UÝs» £'ž:!ŸKfV5 ÐnÛmˆˆdä§­ˆ!Õ ´OnŸ§ñx5ƒí·£€ˆˆGª–è7äÒ«˜è€6¤-½Œˆæ*fÚi‡ «f^×iL¯f }v|@DD.¹¿J9€(ØD^t¶ä’""_¥,@;lXÿô 듈éÕ ´OÁ€W¤wT>ÐÅ’œèäŠ6 o­ýkD4U! ÐNEfμnk¤ñ×j„Ú§ø¯p tb%5äÒôÖJÚ/)µpä§Íˆ½*˜h§Rˆ$Io©d ýJnHó¹›*h¿’F¤µ÷EDC³íTrÀÌ™×m4n¯d }Jnx¥:ýS…rЦ€­¹äO±µBY€vJÚzù—rk¤q|%Â@w–Ï'qçŸGGKsÛoôµuùx÷)Ë#—K³Ž]Îúµ½=t÷ˆ»²Îd«Í ÓÓçEÄÏ+º½«.ß#~sùîYÇè”ÎùÂüøÈgdºªs§$ ÿu [m~¹5ↈh©@èö>ü™±÷þ YÇètöØ·!>ø©—²Ž]Us¯Hþœu {mn˜–4¬Žˆ¿V t{55i\|Ù쨭Íg¥Ó¨©IãâKýL ½ÒHԯÍ:½vFžFzm¹ƒ@O±Ç¾ qæ'¼íþš·0öž`*´_r]Ö €Î¡] ½#wMDl-sè1>ö¹…±Û^YÇÈܸ=šâ#çi†€Ø’DͲtíjxuÔðeÎ=Fm]>¾úO3{ôØûšš4¾ö³¢®wkÖQ ËJ#nž’¬_Ÿu shWÀ+’ß•/ô<{í×ïÿø¢¬cdæŒs_Š}¨Ï:tq©‹€×µ» }oˆ3Ì¡ÎþÂü¿gSÖ1ªnÜnããŸ[˜u èêê7GãÍY‡:v7LJV4E¤*gèiêzåã’KgG.—f¥jr¹4¾|él£ÿ¡ã®?"‰MY‡:‘ÜoÊzªýÚ§}tqÖ1ªæô/Ц8²:*©ƒ€7I:rsšFnz Z˜D:®\ 'Ú²9Ÿ?ã°Xòr¿¬£TÔ.»nŒËÿXôòö?tÔÂÉѰg’D>ë @çÑ¡ IùĈÐa½ûäã«ßÕ­ÈåÒøòßÏöðÊ"½ÒÃà­:ÔðŠäʈè¾O-¡JöŸ´!N9kIÖ1*æ}^lô?”AZ5šï€mt¸`JR?7øk9Â@O÷©/ÏÇoÊ:FÙÚysœûųŽÝBÉÝ%ægè|Ê0 "ñër¬=]ï>ù¸è;³#I²NR>IñåïÌŽ¾ýŒþ‡2¹2ë@çT–€–xMD¬+ÇZÐÓtȺ8ñÌÅYÇ(›“Î\Sß¶6ëÐ]¬o‰×gèœÊÒ0-Yº1‰ôªr¬D|æ’¹1f—®ÀÈ7ǧ.š—u è6Òˆ_MK–nÌ:Ð9•¥ "¢5âòˆH˵ôd}úæãË?§K$_úöìè×ßè(“´&⊬CWÙNgGÄåZzºÉ‡®÷œ¾4ëívüû—Ä´#Œþ‡rI"¹{RÒð|Ö9€Î«l i¤——s=èé>÷•bÄèÍYÇh³a#¶Äyýå”Fþ¿²Îtnemè×GÄŠr® =Y¿­qá·æd£Í.üÖœ0°%ëÐ,kƲtnem˜˜ÄÖˆägå\zºC^ï>eyÖ1JöžS—ÅáÇ®Î:t+i¤—OK¢9ë@çVÖ€WÌÿ4‰èz3Ë¡;ÿoŸá#·d£¨Fl‰Ï|õ…¬c@w³¥.Ò+²t~eo˜”4®L#®)÷ºÐÜHíÓIDAT“õÐÒ%ޏàÏÇÀAFÿC9%W˜49^(ªì I´þ¸ëBOvØ1«ãØ:ï3Àwž´<Ž|ת¬c@·ÓùÏ:Ð5T¤`r²qzDÜ_‰µ¡'»àoŸ¡Ã¶fcƒ‡nÏ}mnÖ1 Jî<8iš‘u  k¨HÀ«~XÁµ¡G8¤9¾ôíÎwÀ…ßz>í| Ð ü(ë@×Q±€ÉÑpcD̬ÔúÐS½í«âèãVfãuǼwEõîΓº‹4âÙÉQKÖ9€®£b IiñƒJ­=Ù…ßšCvÊþûACšãó_!ëÐ-%‘|/I"Í:ÐuTò€h‰†«"Ò—+¹ôDƒ†4Ççÿ&ûï|ãù:,ûFènÒHµFýµY纖Š6LK¢9‰äÇ•ÜzªcOÈvôþáǬŽcŽ_‘ÙþÐÍýë´$š³t-mˆˆ¨‹>WDÄÚJï=Ñßx!®þ3Â[â‹ßšSõ}¡‡X¿Ì:ÐõT¼`b²ª1"ý÷Jï=ÑÐá[âs_«þQçÿíó1|ä–ªï =ħ%K7fèz*ÞÑu?ŠˆuÕØ zšwŸ²<Žx窪íwØÛWÇ»N^^µý ‡Y»%êþ#ë@×T•€iɺ I$?©Æ^Ð]ðwÏÇÀA-ß§ÿ€–øâ·ž¯ø>Ðs¥ÿvx²¶>ë@×T•€ˆˆ–¨ù·ˆX_­ý '6bKœwÉÜŠïóÙ¯½#Fm®ø>ÐC­¨ýϬC]WÕ¦%ë6¤‘k rüéKcÚ‘k*¶þäÃÖÆ{N]V±õ¡§K"ýÁ”d½F9 ÝªÖÑ;⇱¡š{BOrÑ¥³cÀÀòÐo@k|å²Y‘$e_xÅÚ–¨sTÐ!Um˜˜Ô¯M"ý~5÷„ždøÈ-ñÉ/Ï+ûºŸ¾xnŒ³¥ìë¯ûÞ´d9 CªÚ‘DÿFÄŠjï =ʼng,‰ƒX[¶õ&º.NøÀ’²­lcYk tDÐaUo˜”¬hJ#ù§jï =E’D|éÛ³£_ÿÖ¯Õ§o>.úÎl£ÿ¡‚ÒH/›–,ݘu ë«z@DDï¨ÿYDÌÏboè Fí¼9ν°ãG|ê¢y1fܦ2$v`aïhüUÖ!€î!“€‰IlˆÈboè)NùÐ’8hÚºvß?aò†8ùƒ‹Ë˜ØVòÍWÿMè°Ì{§iä¦Ç€Ç“H¦f•º»åKúÄç>pxlÚXÓ¦ûz÷ÉÇå¿4ÆŽ7•*'yzrÔœ$‘Ï: Ð=d2 ""I"_ñÕ¬ö‡ž`ôØÍqö^ló}Ÿ¸pž‡ÿPai´~Õàœ2kˆˆ˜”4Þ·f™º»Ó>º8˜²¾äúýÚ§~Ä訰§&Mwfè^2mˆˆÈGzID´dº«\./_:;zõn-Z[×+—\:;r¹´ É ÇjI#ýFÖ!€î'󀃓ÆÙiÄ/³ÎÝÙ¸Ý6ÆÇÏ_P´îœ æÇø=›ªz®$Ò˧&³²Ît?™7DDÔEþ;QŸuèÎÎ8çå˜0yïï{@}|àì—«˜z¤u-‘\–u {ê &M+’ˆK³ÎÝY.—ÆÅ—ÎŽºíP×+_fô?T^ú­iIÃê¬SÝS§hˆˆX ÿžF<›uèÎÆíÞýÌKÛ|þ±Ï-ˆÝöjÌ ô(3×Gãeè¾:MÀ;’h‰È_”uèî>øÉ…±ÏĆ׿ßs¿†8ã\£ÿ¡òÒ ^ù· 2:M@DÄÔ¤é®$âYç€î¬¦&‹/µuù¨©Iã¢KgGmm>ëXÐÍ¥WOIïÍ:нÕfà­òQsI-'D$ý²ÎÝÕîû4ÆYç-Œ$’Ø{ÿ†â7ÑDëײtIÖ¶gz:ð+ñ¯Yç€î¬¥ù• µuÞþ‡JJ#¹pjRÿ“¬sÝ_§:à5s£á‡ñDÖ9 ;«­Ë{ø•÷輨ÿiÖ!€ž¡SNˆˆx2íP.rODD]ÖY ¶&‘Nœ4ÎÌ:Ð3tÊ 'M3’ˆdÚ'ùgÿ€jê´""æ¦Ñ»1Nˆý³Îmðüúh˜üŽ$6gè9:퀈ˆ½“Ø’FúùˆH³Î%Ê'çyøT[§nˆˆ˜š4Þ¿È:”&¹|rÒð׬S=O§oˆˆhÚ¯FÄ’¬s@K#rßÌ:Ð3u‰€iɺ i¤_Ê:qþ”dýú¬C=S—hˆˆ˜š4þ!¸>ë°=i$×LInÌ:Ðsu™€ˆˆ–È!"VeÞbEMä/Ì:гu©€C“¦åi$çDDšuxUšDœ7)i\™u gëR S“ú[#’Ÿe""’H29i¸)ë]® "b}Ô_œF<›uz¼Y£ñëY‡ˆˆH²Ð^O§ý¦¤QóHDôÊ: =Ò–4ò‡MMšžÉ:@D19Ù8="¾™uzªäo<ü:“.; ""M#÷L º=ô]Yg 'IoŸÇ'I¤Y'xM—‘$‘h>'"Öd€cukäÏõðèlºt@DÄädÓ’$âÓYç gH#>5-Ù¸,ëoÕå""&' L"~™uº»äò©Iß²N°=Ý¢ ""‰~_Šˆç²Î@·õLk øJÖ!v$É:@9MOí‘>C²Î@·²®5r‡LK6¼˜u€é6""¦$õssgGD>ë,tùˆäcþ]·jˆˆ˜”4ü9䟲Î@÷Fz锤þ–¬sÓ­ŽxMšFîéxSDœuº´›&GéIb² Ðùu» IùšÈ}4"æg€.káÖˆs=üºŠnÙqP²a]ù÷G¤³Î@—³)‰Ö÷–4¬É:@©ºm@DÄԤ陈Üg²Î@—óùÉÉÆéY‡h‹nÝ1%©ÿmDòÓ¬sÐU¤?ž’4üwÖ)ÚªÛ7DDôŠú‹"⡬sй¥´FãW³ÎÐ=¢`b[[#NˆyYg ÓZPéÓ’hÎ:@{ôˆ€ˆˆiIÃêÖˆS"b]ÖYètÖæ"N˜”4®Ì:@{õ˜€ˆˆiIÜ4ÒÓ"bKÖYè4¶&‘ž1)ix>ë Ñ£""¦&÷§‘žiÖYÈ\šDò©ÉIã=Yè¨×15iü߈ôÒ¬s¹oNNê¯Ê:@9$YÈJšFòt üUDœ›uª/øÕÔ¤áSYç(—9 ""I"m†ÏD¤wd€ª»§w4|>ëåÔc""¦%Ѽ%z‘F<›uªfVDÍû'&±5ë åÔcx£gÒ¾»ä£ö‘ˆ›u*jYkÔ>-Y÷rÖAÊ­GOxͤdÓâ\äÞ²Î@ŬÍGþxÿ€îJÀ«&%žJ#Nˆˆ¦¬³PvMñ¾ƒ“¦Y¨ o05ix8"wz„s¡º‘MéÉS’†³PIÞbJ²áŽˆä‘Ï: ¶5"9sJÒxoÖA*MÀvLIê¯N#½ "Ò¬³Ðn-IÄYS’ú›³P v`jÒxyDrQÖ9h—4‰øìä¤áY¨ LIêœD\’uÚ$M#=rÒ𫬃T“€"&' ÿ–Fú¬sP²¯OM–u€jÓP‚©Iãei$ÿ˜u K#ýΔ¤áÿe IÖº’§Ó“FüKÖ9ØVñ½©IÃ׳Î môt:è‚4Ò?;€Î"M#¾:5iøAÖA²ä!v;<ølÉOà YKÓH¾45©ÿIÖAþ{÷ã‡]×qüõùÞ­[{?Ú æ`‚¢ W¶ÞÝŽì‡üÁ©ŒÉœ‰BÄ©ˆÄLô@u22(2H¦ ¨›C–Ì9`2ÑÉ®½V~Ä2Ètt¡í}ïúcÝ}?þQ¢ d®ëõ>ßGÒ4—þóLïûßû•Ï 5€Çi¡N_™Ô?K2Þº`D­$¹j¶tÿ´u@?08ÛêÔKJrC’[·Œ˜‡jê•seé¦Ö!ýÂàm«Ó/*©7%Yߺ`4Ôý½t^v^Y¼­u @?1XÛêäóJÊ-I¦Z· ¹åšÞåseùZ‡ô€U²­nœ/éÝ–ä ­[†ÔÞš\:WºwµèG«h{Ý0›ŒÝZ“'µn2÷×ô.+Ë;Z‡ô«Në€a2Sö/$Ï'e{ë€!rïJÆ/tüxt«l¦øÚú¬{^’¿oÝ0øÊí+Î|Ùó•Ö%ýÎà8xfy°»7Ý—Ôä=­[Øõ+Y¼t¾ìÙ×:`”ÖÃn¡N¿>©×Æÿ5ÀcU“ò;³eñÍ­C‰£ôX¨“W””÷×ä¤Ö-}îPR~a¶,þEë€Ac°FêÔEInNòÄÖ-}ê5õ¥seé­C‘ÀÚZ§Ïì¤Þšäé­[úÌ}+É‹çK÷ ­CU§uÀ(9¯,îOï¹I>Ùº ÜYS/pü86k윲üÀÞtŸ_“«[·ôëÖ¥û¹²´»uÀ ó -ÔéŸKz×%eC뀵T’ƒI^3Sº×·n-Ô‰™¤sS’lݰ6êWjÆ^6WöÝÓº`˜ø €ÆfËòöu)Ï.Ém­[ÖÀ­c›qüX}^赦ìÈÔkò{1̆O­ÉΦû[¥¤×:`ô™…:ýâ¤~ ÉÉ­[VÉb’WΖî‡[‡ 3€>´µNŸYR?T’sZ·£Ï¬¤óÒù²ïK­C†§æûÐyeq×X6\˜ä}­[¯š¼g%S:þ¬ /ô¹íuê§jòÞ$OhÝð=˜äªÙÒ½¹uÀ(1Ÿ­§=œÎõI^ÔºàÑ•Ûk~å\Ùë€Qc0 jMÙžé×%õê$'¶îø6‡Jò¦-é¾µ”ôZÇŒ"€³½Nn®)Lrnë€oú|Ò»r¶,oo0Ê:­8:3eiçÞtÏ/©ïHR[÷#­&¹n%SóŽÿíy`€m¯Ó?VS¯OòäÖ-ÀÈÙ]’WÍ”î-­C8 l¦,~äpzsI>ܺ%åÆNê³ÿú‹†ÄB¼")”äÔÖ-ÀÐúÏšúÚ¹²tS뾓†ÄlYºq,³’\׺:µ$X—ò,Ç€þå€!´½N¾´¦¼+É“[·ƒ­$_Hò‹3¥{gë†ÐLYúÐJƨ¤¾#ÉJë` ®ÉÕéÎ8þ / ¹uã\/½÷$™oÝ вÐI¹jKÙ·­u À¸£f|S¦ÞäMI&Z÷}k©¦üölßUJz­c8:#d{]ÿ½Éøï×äåñ»þWMÊ߬dì7æËž¯´ŽàñqA uòâšòŽ’œÓºhî_“üÚlé~²uÇÆ`DùZ€é_Mê[’llݬ¹ûKò–-é¾ÏsÿÃÁ`Äí¨“ßSÓyKM½*Éxëà¸;PR®)Yõ–òÀrëVI’uê¬^Êï&õŠÖ-ÀqsK'×m)ûþ½u«Ï€GØV'^X2vMRgZ·«£¦nKò†¹²ôO­[8~ ø7ÔŒ==S/Oòæ$Ok[ƒûJÊ›¶dñƒ¥¤×:€ãË€ïêžšÆ3õóõÈàÉ­{€ÇlwIÞ6‘îÛŸ^r¨u kÀÿ×=õô ãé¾¶&¿™ääÖ=Àwõ¤¼s}Ö½í™åÁnëÖ–Ùê§æÐk  ïtkòÇ%c0[öîm@5Cè‹5y·Ã?‰ÇàžzòÆN¿¾¤¼>É)­{`„<˜Ô·ʺw^P¾±Ø:€þ`À1ÛQO›èåÀUIïדò}­{`ˆ}9)×v²þ}[ÊË­cè/¬š{jNèdúgKê“lnÝCäÞšòÖ^ÿr¾äpëú“«®Öt2uYIÞäâÖ=0¨jòñNrí–tÿ®”ÔÖ=ô7Ž«…:1“t~%É+’¬oÝࡤÜ\’kfÊâ§[Ç08 XŸ®O:!c¯Nê«“œÖºúMIþ«¦þI'y÷–²ôõÖ= ÖÔΚueòò¤óKI}a|q%Ùšäº=é¾ÿ%[÷0¸_if{zF/yUI®Jò„Ö=°†ö%ùë±ôÞunYþl놃ÍÝSOß0–îI^•ä¹ñ¹d8Õ$Ÿ¨)×Ìâ•hÀpqh¥¯|¶®êJƯ¬É/'ùÖ=° ¾V“?ï¥óÞù²ïK­c^ô¥ZÓÙ‘?RÓ{E’ŸL2Ùº ŽB7ÉßÖô>0›å—’^ë †Ÿ}“NÉÔ%½”W$õò$ëZ7ÁÿáP’Õ”ỎÚ\v/µ`´0PvÖéS§þtR~¦¦>?Éxë&FÚÃI½#)7Œ¥sÓ¹eßžÖAŒ.ÖÎ:}ʡ䲒zE’K’œØº‰‘°’äSI¹q<+uNY~ u$ ‰…ºiSIï²zä+~4Étë&†Ê¾¤|4ÉÍ+»e¾ìÙ×:¾C熚±gdêÂ^rYI~"ÉÙ­›H÷%¹½“Ü2žîG6—<Ô:CoG:«—òãI½$ÉÅI&'ÑŸ–’ücMùhIn›-‹ÿÖ:ކ#egͺ‡2yQR.IrI’¹$c³hc%ÉÖšòѤ÷±^–îš/9Ü: /FÚÎzêä¡ì¿ dì9I~8©ÏMrbë.Ž‹‡K²#©ÿR“;Ç2vû¹eßžÖQ°Z à[쨧Môrð¢’úœ^zç—”ó“ljÝÅã²§$w×”»kVþ¹—wÍ—û÷·Ž€ãÅE­)Û2ùÌNÊù5¹àÈ  nNrBë6ápRî=rð¯ŸZIî>/Ý/–’Ú: ÖŠ¥;jÆOÎäY½tÎë¤w^Mçì¤Î%9¥uÛˆX*É“|®¦l-©[÷§»õ¢’­Ã %X%Ûê†Ó“rvÉØæ¤žds’s“L5NT%Ù•”I>—ôv–äs[²ôùRÒkýÆŽ£ZSîÍú§¬dìÌšrFMÎì$gÖ”3’zFŒ“r_Rw•dWM¾”Ô]¬ì:7¾æ xì  ¡ÏÔ''?¥—Î÷÷RŸZRžR’§&åôšzZ’S¿ù§Ó8õhõ’ìN²»¤<ÔûkòÕšúÕNÊtÒûòJNøêlÙ»·u( ès7ÔŒ=-§ž”œZSN]IN))›’lÊÿüÝÛ”” I™JêI%YŸd¢&ë’lÌ#'åÈ¿«I~ËϽ$ûÊ‘gø—{Éþ’r(©Ý¤îO:{“ìMêÞšìIêÞ±dOIÝ}0Ùýì,Ý3ý°¶þÏ µ"@­óýIEND®B`‚chiaki-v2.2.0/assets/chiaki_wide_simple.svg000066400000000000000000000162051447035777400210130ustar00rootroot00000000000000 image/svg+xml åƒç§‹ chiaki-v2.2.0/assets/console.svg000066400000000000000000000056661447035777400166550ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/console2.svg000066400000000000000000000071141447035777400167250ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/000077500000000000000000000000001447035777400163205ustar00rootroot00000000000000chiaki-v2.2.0/assets/controls/buttons.svg000066400000000000000000000207761447035777400205530ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/dpad.svg000066400000000000000000000124501447035777400177530ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/l1.svg000066400000000000000000000024501447035777400173560ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/l2.svg000066400000000000000000000042071447035777400173610ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/l2_raw.svg000066400000000000000000000051111447035777400202250ustar00rootroot00000000000000 image/svg+xml L2 chiaki-v2.2.0/assets/controls/l3.svg000066400000000000000000000045231447035777400173630ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/l3_raw.svg000066400000000000000000000030061447035777400202270ustar00rootroot00000000000000 image/svg+xml L3 chiaki-v2.2.0/assets/controls/lr12.svg000066400000000000000000000121501447035777400176200ustar00rootroot00000000000000 image/svg+xml L1 R1 L2 R2 chiaki-v2.2.0/assets/controls/options_share.svg000066400000000000000000000152601447035777400217220ustar00rootroot00000000000000 image/svg+xml O S chiaki-v2.2.0/assets/controls/r1.svg000066400000000000000000000037741447035777400173760ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/r2.svg000066400000000000000000000055541447035777400173750ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/r3.svg000066400000000000000000000057731447035777400174010ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/r3_raw.svg000066400000000000000000000030251447035777400202360ustar00rootroot00000000000000 image/svg+xml R3 chiaki-v2.2.0/assets/controls/stick.svg000066400000000000000000000036201447035777400201570ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/touchpad.svg000066400000000000000000000160031447035777400206500ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/controls/touchpad_surface.svg000066400000000000000000000035351447035777400223660ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/gen-icns.sh000077500000000000000000000017411447035777400165220ustar00rootroot00000000000000#!/bin/bash # https://gist.github.com/zlbruce/883605a635df8d5964bab11ed75e46ad if [ $# -ne 1 ]; then echo "Usage: $0 " exit 100 fi filename="$1" name=${filename%.*} ext=${filename##*.} echo "processing: $name" dest="$name".iconset mkdir "$dest" convert -background none -resize '!16x16' "$1" "$dest/icon_16x16.png" convert -background none -resize '!32x32' "$1" "$dest/icon_16x16@2x.png" cp "$dest/icon_16x16@2x.png" "$dest/icon_32x32.png" convert -background none -resize '!64x64' "$1" "$dest/icon_32x32@2x.png" convert -background none -resize '!128x128' "$1" "$dest/icon_128x128.png" convert -background none -resize '!256x256' "$1" "$dest/icon_128x128@2x.png" cp "$dest/icon_128x128@2x.png" "$dest/icon_256x256.png" convert -background none -resize '!512x512' "$1" "$dest/icon_256x256@2x.png" cp "$dest/icon_256x256@2x.png" "$dest/icon_512x512.png" convert -background none -resize '!1024x1024' "$1" "$dest/icon_512x512@2x.png" iconutil -c icns "$dest" rm -R "$dest" chiaki-v2.2.0/assets/ic_launcher-web.png000066400000000000000000000321121447035777400202110ustar00rootroot00000000000000‰PNG  IHDRôxÔú4IDATxÚíÝœ\e½ÿñXH6ÙMï! BKï!’ é= " pEêÅ+¢¨tT)WÊéMD@i¥—„^üÛQ±áµ€xQ¸Ï~';ÞaÜM6›ÙÝ™Ù÷÷õú¼€”ÝÙó<œßç<ítê$""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""²¡Ü:½ãÛ©ëÐgRυϤîŸx&Õ}ù™ÔãéÜ¿ÿ>Çë9 äü~ý½6î¹qïí¹0îÅqOV™¤ÕòdêÝóéÔ}UŽ[ýOåEÜ›ã÷jK6;)uzÛ³©Ç E*KâÞ÷p•L6¹ð7 ïÿÞÿLPÉS=iVžNµsæ9ÿã@Õð\ÜÛU8i4÷¥N5Ϧîg•døé»§§Þ”š¸¿¶ôÞ÷ø¸×«xòÏ<òZÝè–®ÞWì ¢¤àõ¸ç«|ò¶'Þ辺%…ßÿtP™2ðÔÝÓ½¨{WÔe°þà©7ë>äi:–Äï­ýK]zà¥Ú#òõ@YìPÅ¿ûQ ?tLˆ_ø•ºt×oêN žü õ@•ÒÔTÀªKßøyíÇH@(þÍó÷ÔÕ-qŸìoÝÓ=¿«K·=W· ¨ÒÂ4¬öWüÀ”À?Gyc=ÀšêÒußÍÎ x¨²âÑ“º5g«ŸÿA ãˆ@üóñ×ÖOÜú\í'ßЩŽTQñÏñö§ßì~¶â(”€ìßßèžýk÷t÷‹ué+Ou»8j ¨’â¿îÕn“@S¸ùµé¢ûºîB*_Þ¾çžÞ±±³ýÍù@Ç&ࡗׯøÊSÝ^ˆÚA*¸øý½ÇbÅÐ$o¬€G^­K÷ÿ¡.ÝòãÚtÑ=u{æë¨À¡ÿ¹s;½sc¯ôÕùy ˆQ€;~V›®Z×í¥¨!F*°øçxÇÚWºï¤øšÃÿX¿%0~õ;µéüÛkG-!•5ô öÎ'ßè~»¡@sGâ` X ÓÞÕõ¡¨%$ ‚æý£±.º¯{?Oÿ€Mxð¥õÓW?Ú-u~·!`=@¹ý‡±=ü—ºwyúlê4@,Œi€ëŸ­MgÝ\sˆQ€ úϱņ†ÿurÀ†¦b7@¬8÷¶®k£¦4!RfOÿ[ì´g§®†ÿ-= ¿à’ûº¥©+;ukSeþôßùº'»ŒRü-xø•ºôÍ_ÕÅvÀtÜ9'Dm1 PÆ ÿ ­ËÝ/v_A-ÈÞ ðÛºtåÚnéä+jˆÚb ÌŸþsÔ<òj÷ã,þlÎ4@@Œœö•®çGm1 PÆsÿ †Öõñ×ê®÷ôØ,x±.]ûT·töM5wGmidÀŽ€rzúÏÑ-×xÏÀæ@ì¸éûµé¼;º>µÅ(@y @ZíÓÿÛý°¹ oûim:ÿŽnŽÚÒPc@-þ{gÁðZ÷\±6g!`'žG×7¢¶4Ô˜.çX XFÃÿah=,”b'@Ày·wMQ[jŒi€2€. C3u9zzú”J>ÿõLz6Ô˜üb@Pð–áÿ½`s ¸ýùÚtÖ™ôjdÀn€vžÿÿçêÿ†!šÞP ˆE€ л¡Æï° \æÿsô!€ @ëÊwû_]ÃM_(±ôµ <çÿós4ý ÄЯ¡ÆÔmäT@i§€1GÓŸJ,ýjÌÆJ@þ €ñäÝÓãÿè‘{-Çß{¦Gÿ¶žGþÚ3­{5èUÀú_Ïÿ™Çþ¾þï=‘ûûñu\O€4ÔžÂìh§ÿ\˜cè¸ûv×å ÷½¿ï›îøÅ€tó¥ë¾½eºòÑáéœ;G¥¯“?wR:ìÌ)ißvLû;3½ë£;§¥‡ÎI‹œ“vý·ú´ø 9iÙ¡³ÓGîœýþ¾'î˜>xöätÄy“ÒI׌Içß5*]õø°tÝÿÛ2ÝüãAiÍ Ò½è“ɉ‚6ªZl`! å°€t¬§ú_înúÑàtÁ½[¥“¯ë÷53+è;½{^»`q6}E0~uɱãŠ4~Ñâ´óžóÒ’C椽Ý1~Τô©ëvH?82}ý'ƒÒC¯ô2Zt0 ÐÎгa•æ@P½ÄýWrOõŸÌ=ïòô´ìßg§Y{ú «KZì›ËÀÜ÷>cEš°xQš½÷®iùa»¤?=-úÕíÓW¿7$›JÐ~@E ÀÀ‚ Œ¶€*äñ×z¤‡sOÒ÷üw¿ô…{¶NÈÔ»ÏOÛÌ^–ÛÁ“VµK±o.ñùb´`Û9˲тCNŸš._7"÷óôMÿ¥W¶&A;+Þ Xng€ /ú¹¢x×oûeóì'\5&ívĬ´}ýÒv{²o‘‚±ó—¤=?¾S:åÚÑÙhF¬!xòu2TÔ€«î¯|lx:æÒqi÷ìœÆäŠd5ü1yùÂl±a¬¸é‡ƒ­€€ŽÁ/÷Nç~këôîí”ÃaÓWvˆÂ_<*°õÎ˳E‹øÔôtÉC#ÓÚÿé¥@6Q€ò^¹¿öÕ^é/ HG^0!M]¹0›Ï8qu‡+üZ7°ãîó³m‹ßúm?[ ò€A€ …<øçÞéòG†g[õÆ-X¬à7cd`úêéO_~fËìŒýhWèGÊGº @?P†ÿåž`cQß¿4#M\²( š¸Jß”QÉ«ÒôÝæg}éÉaÙz ý ( ðB €F‡û_ïžnúÑ ´ÿ)ÓÓäe s…_1߆äD ÖI¼ÿäéÙaC €€²{â9þÏ=±n³Ë2Oü%&®çÖ³–§~abvq¼Û@¿ÚLz€FøÝù«þÙ‘¼±ˆm`™ìÝ:ueÚ®~iš´lQv ÏÜýê³£‚—2;-?lv¶í0Þ ð®#wN»çþgÄ ƒñû ¬OõûÎÍVèO\º(;ÔgÈ”•e#³Þ3/;O „K@G€^ ýxâõé‚{·N+?´KÚjçåíVGî´<Í|×üôîï”@{Ù¸ôÙ¯mŸ½Ä'Ná»þ;CÒ-Ï Jk~Ù?;pèžßõM½Ò;;™/¶ÞÅɃ±X1~=~Í/dÃíñòŸËÖŽHç~sTúÌ ;¤£/ŸýÜ”Lb¡Þˆ+Úïgž¹<{'Áy¹Ÿ1Þd¨?€€6!N²;âü‰iì‚%mþÔûçã-~ÿñŸ“ÓÞ±Mv²ÞmÏÌÞØšÇíæ)¾;' ·þt`ºö™-Ó™·l›úìÔ4ç½sÓˆ™m/£ç-I:-Ýùëþú%@h=¢Àž×ÖÙ°zkþøúñ¤;náâ4{ïyYÁ¿âÑáYŽ©‡rY—ÿ,¼Ô;]üÐÈtÀ§§gÃôñ²¢á;®h³ÓϺmÛôП{ë§ :si‰!ôäžú·žµ¬uW¾OY•¦¬X˜ö:zfv0Nlƒ‹¢_1×*“>™¬{ù¸´Û;g[!ck_k^·8Qñ°3'§8ØK‡@P‚¡ï\1‰=ý1÷=tÚÊV,`+²…xÇ_16û~¾\O³15qùºáÙ‚XˆØš"°åÔ•ÙôHŒ8; -æ±×zdóìñDÞ¯âUícæ-I|zZîIh6¿þh•nq‹­’±ÈðÒ‡G¤ýNœ‘½ñ°5¶KÆÔIì\ø÷3¦X €–=¹ù… ¹'Ö•­²Š=Ö娬èwÄë{׋ýÒQ—ŒÏ¶OÆõh X|Мôåg†fò¡O€`#§ùõH7ÿxPÚï“3J>ä…nñÁsÒqWŒMßø…}ì±xðÖçæ®Ç¸ìº”zkaHÀÌ=æg»L €`ƒéš§†fOŽ¥.þ»ì½k:ãÖíÒí?m©s½ßºÎ"®Ëç¾¾]ªïÜ’O Œ¿8sé8× Msõò×õ–êU·±ïãNÈN®{Âêô ®”»>±Û"FH²%ZwíyÃw‡¸Æ Ø0ç}kTÚ~îÒÍzŽÅ}~fZºå¹®i ˆ#–>mjš°xóE N3tM@Ð,>ÿm²дd;ßòî’ιsTÙõÇTÇïôÎŽÖ½Zžç <ö÷ÙáB{33mµSË Ö¿onºéGƒõi€4Ÿ8õoSŠÍ6³—¥}±a¸ÿõíVÜïz±oºîÛ[¦ îÝ*;Ç?0ÚÿSӳÅvûð¬´úðYi顳ӒCÖ/Š_ö=qFv¼o¬Ð9ùK‘-Š|àåÞírú`|Ï»_ì—½ß FU6¥=b‡ÁÍ?¤/€`ÓˆÃxFí²ñ“ÿ¶œ²2{{^¬h«Õæ±µ-ŠrÇø¾Ç]>6+ðQôv˜»$“‘xIQÇäÄ0zsŽ/ŽxqXO,‚‘û»1 ²íœ¥iÌü%ÙÓôA§NÍÄàkßœîýï¾Ù)…mqò^Œ¦Üøƒ!iuNRbNc?ËøE‹³w6èÇ h_ýÞ4uå‚ Îõvæ”ì›Ö~ŽóöoÊ=Ñ^üàÈtÄyÓüÔ·Û›NX•Fïº$íqäNÙëy¯|lxºýgÓ#­|øNLYœò•ÑiæóÒ€&$ ÎXøÖoúé¿ Ø<â<þi«þU⵸gß¶m6ŸÞš§ÆüÉ_“ÞwüŒ4gŸ]ÓÈ™í÷*ÞÆG V§æ.M ¨ÏNà;çÎmÒ7sø‰×[i·Àë=Ò5OMK™Ýè–Á3oÝV¿@iˆmd1¬^¸¯ÿꜴÖB¿X˜÷…{¶ÎŽÍ'Úr+úšBØa×¥iî~õé?ΞœM´ÖÚØañþ“§g /óßÕá³²SõY€”°à ÊæŸ÷9vÇtûÏ”¼°ÅÙõñu½|löþø^ƒ&­ªˆÂßè› '¯J£f-Ë^»*¢0—t½@îú?ôJ¯tÒ5c²9ÿ(þkÿ§—¾ €Ò/ <æ²qé¾?–vqY­8ððs&¥IËfóë•Zô›ȉL,"<íÆí²'÷ÇJøÒ£±ËÖ×G@@eE0 ÿ¡Ÿ›’¦­\ЬUú•N ×Ï{}:êâñÙ©ú@„t(îÿSïôás'eCýC¦¬¬úÂ_Ll1œ³ÏÜì”>o뀀ê>ëþõéžÿî›N»iû4iùŠžß/݈ÀÊìP¢K׎ÈÎÐO  ªˆÅo±?ª•úMƒÕÀÖ³–¥ž=9ÝöüÀv9q h…áþ>鄫Ʀɹ§~Å~ûb4 ¶?¶Õ‰Š@«'÷íùñ–¿Ì¦T º2MZº(í´ç¼ì ƒÅÏI+>¸KÆüýëÓÎï™—fî1?]°¤ÝÏ3qúð¹mé •Gìé?ýæíÒèyKÚä$¾xgA¼:7Þ°êð]ÒÇ.˜-°»öÙ¡éžßõÍ†Õ yªˆÂß‹·ðÝñóéªÇ†¥3nÙ6xê´ì”¿i«äaq³Îâ/õûÎM7|oHöyô)€PöÜ+¸q˜O¼ˆ§µŠc¼Ü'Šñ‚\aÞÿ”éÙÂÂkŸÝ2Ý÷§>­2‡k¾ùëþé²u#Ò1—ŽO{33ÍyïÜf½,©åïX½déœ5Û  åM,b{ÿI3ÒÈVò>}E6düUcÓ%H·ýl`›o£ ÁxèϽÓ?œ2Äùÿ1òo,ùÏœ“€ñ‹§£/Ÿ½A eIyCä¥>Eo‡]—¤ƒO›š®xdxúÖoû•M1 xø/½Ò7^ÎËÉ@¬)SW•t´#DÃî€PÖåØì ›ÍþÞzçåÙa9G_2.;†¸RÎ:¸ñƒÓ§NÍÞ–XŠCŽŽ¾tœ~@*ƒ¯Óòíp¹¢«ôã½÷q\n%>ùÆšxƒâÏš’‰@K=š¼laº|sþ@@ñ‰‹ÆoòS |Lî‰7æö«aÈ;öó_ýİtàg¦e‡ýlÊõˆ×/éÉaú@¨,â ¸ð]õî?è³ÓÒÍ?Tugãg‹_éó¹ûÍM[6cZ ¦PâúéG  "¹àÞ­6x@ \ÿÞ¹éÂûGvˆëk޽l\šïBhb¡àÄ%‹²-ú@¨hÎûÖ¨´íœ¥ÿRè¶«_š9}JúúO:Öù÷1ÂqÙÚái·#vntmÀGÿk¢~@ªƒxPa‘=oi:ûŽmÒý/õé°×$8ò¹)oÙ69ë=óÒ-Ï Òg@@õ̃ÇH@¼ðfö>»¦/?=4[)ßѯK(ô©ëFgÇO]¹ Ý÷Ç>ú @¨.bß¡Ÿ›š­ðw=Þ*G—®‘(äz@Zûéû•Þ鱿{ín5ííìZ€ cÝ«½Ò‰_›núá`ףЉövŽöv=@íÉŸ¶jA:ôsSÒÖ"T%ѮѾÑÎT @ö4xø9“ÒÀ «²ÓöîüU×¥ ‰vövŽö6 @ÐÁ¹õ§Ó¤¥‹þ¹õîÈ/Øw_D»æÛ8Ú;ÚÝu èÀuñøìøá|qØq÷ùÙë|]›ê!Ú3Úµð¸éhw×€ ƒrÏ÷McŠŽ&Ž÷yÁçT ÑŽÑžÅvöw@:Ü~ûéèKÇg¯.>~·~ß¹Ù9®Suœ7íÙØk¦£ý£¸N ˆ;~>°ÑÂûÞ)׎v.@ìûvŒöl¬£ý£¸V è´½S¾2:mµÓò&ßL¸ðÀ9雿éçzU0Ñ~ÑŽMµq´ôƒŽôò)€ÍmÏL ¨o²0äŠvãv®WíW¸À³1¢Dp½@:À¢°ÓoÞ. obX¸YïÙ5­û«i€Š<ß!×nÑ~kãèÑ,ú ¨rx©wZtМ†`ФUé‚{·rÝ*h·h¿æ´sô‡è®@sá}[5ºò¿)–6;­ý§ÆUÑ^ÑnÍmãèÑ/\;€j~µgš¿}³ C°]ýÒtÖíÛX(VA <£½¢Ý6¥£_Dÿp Aª/Þ»U¹•ÿNL\•öüÄNéÞß;4¦ˆvŠöŠvÛ”vŽ~ñEÓ= ÕG¼þ=Ÿ˜¹É…!jÜE÷4 POÿÑNŧ;6Wô¢D?q-Aª…\aøâ}[¥ñ‹oraÈo ü·“f¤^VÊzg®}¢6¶õ¯)¢D?yŠèT÷ÿ©OÚ÷Ä–†ìИ—§/=å=òåL´O´SKÛ8úGô“è/®'@ _ùèð4vÁâ†<ï;aG×´Œ‰öÙÜ6Ž~ýÅt@¥ÿOü·žéàÓ¦nÖÓžmf/K·<çÔ¸r$Ú%ÚgsÛ8úIô—è7®+ Ì­ÏL[ÏZ¾Ù…!¿P,ŠƒSãÊïtÇh—–,ðlŒè/·:˜€ þ½{VJQòLY±0]ûìP×·Œˆöˆv)e;G¿‰þãú@P|ý'ƒÒ„%‹JZ†N[™Ž8oRzÄ;Ê‚h‡hh—R¶sô›è?®1 ·ø¯GúÈùK^‚Ù{ïš¾öƒÁ®sííQê6Ž~ý'ú‘ëL@qÃ÷†4ëmp-að¤Ué˜ËÆY(V <£OZÕ*íý'ú‘kM@¥ ç ÃQo•§ÿ<3v[Ö¼0ÀõnGâúG;´VGÿ‰~ôÑ#€ 2¸íù©þ}s[­0¬ß.¶*ríh×»‰ëíКíýè6; (žx½G:õ«Û§-§¬lÕÂì¸û|¯ n'âºÇõoí6Ž~ý)ú•ëN@óà˽ÓôÕ Z½0䇈O¹v§ÆµÃéŽqÝ[sЧèOz åÍ™·nÛ&E!j܂ԧoý¦Ÿk߆ÄõŽë^ŠÓ›Kô+מ€2å—z§ùû×·YQÈ|úÍÛÙ.Ö†Û;ãz—âØßM!úUô/m@@röÛ¶yaˆ§Ð=ŽÜ9Ýõ¢Q€¶ ®s\ï¶|úÏ‹^ô/m@@™q÷‹}ÓòÃviÓ¢gÄŽ+Ò¹w޲P¬ xÆuŽëÝíý+ú™¶ € Œ Ãç×l“¶¯_Ú.…!Xõ¡Yé¡W ·&q}ã:·WGÿŠ~Fô (îýCŸ´÷±3Û|X¸á3V¤«¦=Z‘¸¾qÛ«£E?‹þ¦= (®|lxÉ^ù»9ÄÜ´-­·õ/®o{·qô³èoÚ„€2þ_ýáYí^‚Q»,K—?¢8´q]ãú–C;G3 @@;oƒk«ašó’ }OœátÀV8õo¿Üum­—þ´ä(oƒ$€ Ÿþ÷?ezY…ö²qéIÛÅ6íé?w½âºµç±¿›º# ú¥¶#€ ùÔu;”Ý–° ¿à€útûÏh»M ®W\·VWD;GŒ~©í h%¾ùëþiöÞ»VDQøç(ÀŽ+ÒÉ׎IÿÃ(@sˆë×køŽ+*ª£_FÿÔ†@¹nGX󫩘o¼€JçŽ_ HG_2>mµóòŠ* A<Í^óôPíØ â:Åõª´6Ž~ý3ú©v¬ny®ºb]ßtÂ%= @¥ÀÒCg§b–‚Šçà9iü¢Åe¿*¼1†M_™ê÷« ›A\§¸^•ÖÆÑ/£F?ÕŽÕÁ¢g¥ú}¦§)‹F€J€ãwKÿÊjšMÿ±+Sßí¦ž#f €  \ B@€!@€ € @ @ @@€ @„€ B@€ € @€€@€ @! @„€€òcè¤=Òˆ){¶ Ã&¿»ª¯]ü|­uí¢]ôO@Ð* ž°{:`ÏϤÿ<üªVá#ûM¨Îþ?Wü|­uí¢]¢}ôS@Pr¶œô®týñ·¥7¯ÿC«ððkÓ‰ïªÊk?Wü|­uí¢]¢}ôS@@@€Î @@@@@@@@ €@@ €! €€ @ B@@€@@ €@@  :3 €@@ €! €€ @ B@@€@@ €@@  €€€€€€€€€€@ €€@€@@„ JàêcnN¯|é×­Â=Ÿ½?W(w¯RØ=ûùZëÚE»@Ð* š°[Z±ìãéCï;£UØkõñÙ÷¨Ök?_k]»h—j½v € @€ @g  € @€ B@€! @„ @€ €€€ @@@ÚK–:;³ä ¼Y|ðœ4qÉ¢ª¾¡ÆÏ?§öF%°èÀY©~ŸéiʢѠR`ͯ¤b¾ñPÞÜñ‹éô›¶KÛ첬*‹ü\ñóÅÏ©½Q Üò\ÿtź¾é„Kz€J€gR÷TÌSoåÏ/÷NŸ65 ž¼ªªŠü<ñsÅϧQ)<ú×îé¶ŸÖ¦³nìJÐú|ý'ƒÒüýëÓÀ ÕQüã爟'~.í  h‚'ßèž>ÿmÒ¨*™ ˆŸ#~žø¹´/€`¬{µWú·“¦W…ÄÏ?v4ƒ;Õ?M]¹ ¢‹|þø9´'€ ™<ñzôù5£Ò¶s–VdñÏŸ?~í  ØîûcŸôOMK[NYYQÅ?>o|îøüÚ@Ðnøî´Óó*JâóÆçÖ~ B€–î x½G:ë¶mÓV;/¯ˆâŸ3>þA„›¹à=ÒûŽß±" >g|^í (7ÿhPš¾º¼wÄç‹Ï©½@„%â±×z¤ÏܰC1sEYÿø\ñùâsj/!@‰wìÊô4¤ÌÞŸ'>—Uÿ €­Äõß’f½g^P.ï È}Žø<ñ¹´ @«Ô=vãöiË©åq6@|Žø<ñ¹´ @+gë¯úÐ.e!ñ9œõ@ÐFÜúÓiÊÊ…íZüãûÇçÐ €musú{Ïôéëwh·×Ç÷ïŸC{€´!wÿ®_Ú먙ið¤¶Ýß/¾o|í@ÐÖÇ¿Ñ=]óôÐ4yyÛNÄ÷‹ïß_;€´m¹+ ¿êßu hgù[Ï´òC³ÚDâûÄ÷sÝAÊ€/=9,M\º¨U‹|ýø>®7 @¹Ü¬rOå'\56 ŸÑ:ï ˆ¯_ÿQOÿ €åÅ=¿ë›ö:zf\âwÄ׋¯_ßu (Ó©€Rï ˆ¯g耠Œyü=Ò‰W)©Ä׋¯ëú‚”1q6ÿ¢礛ùÆÀøûñuœõ@P!|ùé¡iÒfî ˆ¿_Çõ ¨ Q€c.—FÎ\Þ¢â/þ¾§@€ ãÎ_õOËÛe“§âÏÇß‹¿ï:‚TqVÿÕKoÚT@üùø{Îú ¨`޽|\³ß.þ¼ë@PáÜ÷Ç>iáõÍ€…ÖgÞu ¨‚©€‹™FÏ[²Áâ¿ÎÐ?@P%<òמéèKÆ5ù®€øõøýøs®@PE¬ùeÿ´òC»¤Aߺ þ;~=~ßuªËÖŽHÛ×/}‹Äǯ»> @•òØk=ÒáçLz‹Äǯ»> @óÀ˽ӂÔ§VeÿŒÿv]@€jßðztÑ#Ó®ï¯Ïþÿíº€€‡^é¾öƒÁÙ?]€@€ @„€ B@€@€ @  @€ €  @„€ B€ @@€@€@€ € @€! @„€ @@€   € @€ B@€! @„ @€€€7tf@3ÉÕŒG^­K·þ¤6ùUPIðºÀæÀÚ¿Ô¥[~\›Î¸¡ë Bàé7»ÿ‘ZÊÿèžz¹.ÝôýÚtúu5!å-=óðøkÝ¿C-%WGÒý¨K×=S›>󥚟€ €œµÝ\,Oÿ¯ hý­{ºûźtõ£ÝÒI—Ô¬%"w¾P÷;›#k^¨K—Ü×-ó_5W@OPÆpåºÚ}ìl΀۟¯MçßÑ5þÙ.!å'‹ o4Ò§m16gàÍ?\Àž½s^Й”™ôÜiDÌù›´døÿžß­_xê55©çÀN[5@_PÞ00ÇЇþ\ww£ 62ü¿æµÙüÿ‰wy6jJCm!• W=Òí ØÆ j°)ÃÿqÐ9·vM‡ŸÞùPa°`ÏÎãã§€Ù H<ýgÛÿ~[—®}ª[:íÚš4cáÓ@y @m‘l™cäš_ÖÝ/s( €¦žþ~¥.{Ð…wuKÇ}±Ë·£–4Ô”B¨%å!5MÀˆÏ^ÕõÝü©.›Ï1 ØØÓ,þ»áÛë_tÀ15‡D-iBj@ù@}r È @—.¶¹÷wu/ÅqŽavÅ­ÓŠŸþcñß'/©ùŸ\ Ù¶@4Ô˜ }àí€!9†çØúôë»üÍ_Õ¥ »Ë !:>Xùÿj]6÷[ÿâéÿÐOv=:jHC-²x;h[ ˆ‹¾EC#tËÑ=Gïýs Î @Îà¶¿åGÝ~[:bQà¿H€ÎšX,‰qðOÌýŸpaÍ:wî´C n¨-½jM·†Ú³E¼´í4À G16&ÃrÄá ÛqFç=oþAmŠ‘€âɦÞ0†þ»g‡ñ/þ‰ƒö>|‹¢v4ÔaM@—†dø¿ ¿°WÃQƒ¶mÄêÍmrìpñ=]¯÷:ß÷ûº”ß¼EªøÇÐÿ·~]—®¶6sK×tÔ9]ÑP;F6Ô’¦ÞHÊô,€-oTŽíGŒî4åúo×¾yëOÖK@ô Ÿd::æ¼ÿ‹uékß­M_¸³k:ñ¢š7‡m×izÔŒ†ÚÑØ@/ª€CVoÆÎv9F¿ÿ÷ˆ!ž˜ˆÅ!qNÀ?GHtˆâ÷þxŒyÿXõÊ5i··Ø/jECÍØº¡†ll (ƒÝ§Ñu C:cý¯šã.½ÿÿ$àÁ—Œ@G-þQ>ó¥štЉOÑP+ššÿïQ°Ð€2\ØÔ:€Ò“cü©×tý¯hôXß"˜ß!`MT÷œöÅÿ²×/úûÐg;_µ¡¡Fl¿ùÿ-$í0 ÐeëÞ2 c\Ž 9ã»üâ{»¥¯~§6­y¡.³ÁØ!@ z‹ÌùÇp<Fñÿðé5×GMh¨ ÅÃÿæÿ+pÀ§LoâI—tùâßìšüpûóµYÇȯ °CªcÈ?ìâ/VûÇC_<ü}úªÜ“ÿ§;_µ ¡&4gøßü®hj``ÃΈ†oÈ1é#gÖœ¯|ŒÅñúǘÈï°@*·ðçŸúã8ø;~V›=ì}aM×tÒ¥5é€ã:Ÿ5 ‘§ÿQ 5ccÃÿæÿËp;`SÇ7: `Ã:ï{Æõ]ߌ• ÑABbZ :Í¿¬ Pö…?àâA.êb½×åuKgÝØ5s~—7W|`‹4ÿ¦žþ‹ÿõÀ ™(<°p1`ñ(@¡L2ªÓ¬ã.èrgœ"‡BÄ™1d"ÃGF 2 LéÆÃÜ5wKçßÑ5ÛæwÄçºÜ=dëN»Ä=¿¨øoèé¿øø_P&°¡S{Œ®(ÜðÏ©€†1e¯nqèI—Öü1N„Š¢1"«Eã˜ÈX9š?@Ȩ”GÑûqÜ—c[w<´Å=ûÚ'»e‡ûÄB¿£Î­ùÓ»Þâƒqo¸×ý®ü/œû/|úߨé  G ×î(ž x‹l±E§i[óÉ/®y5FâåW­[¿c FBÂ.£³ÅAgtÀ·,$P²BŸ/öqŸûmÜwãþÛ¸ãL—xoÜ£ã^}Þí]³E~GÛå¯û}¬ó)qOo¤øý¯ü/žû÷ô_Æ‹‹G ×äwäÏhl*à-Ð Ó÷9¼ËG>qn—ï}êÊšôù¯wÍŒ2FbŠ ¶’ÄSt¼˜gŠ‚èŒ1JP⾚ûÜÃW¬ÑŠûnÌíǽ8Š~,î;íÚštü…5é£gvùþž‡u92îáùûyÅ¿pè?¿ï?¿ò¿ðä¿Æžþ @…Œô-XX<°A È15·ã;íLç3rë'\T“NÿJ×ô¹ë»fïŽù¥‚˜kŠÎx÷כhÿØ<âÞÃúW®í–.º»[öâžÞ?ñâštôy]¢èÿ`ÿ£:Ÿ1vÆ;çïÛÍ(þÅCÿù…}=ýWîZ€ÆÎ(œ ÞL øºöè´ãœ•ïxÏÞ‡w>õÐOv¹é£gv~úèój~sü»¼zÂ…5o†wAM:ö ¹Žy~@)8¯Ë«?§æ·qÏ=ìS]n|ï?=gÅ;öŠ{rá=º¨ð7§ø/úolß¿§ÿ (^Xx8РfJÀÄFF¦u²Æ˜h6vÿÒÈSÿÄfÿAECÿÅ ÿ<ýWÈ(@ñT@ᮀþE[“€q…ç´PmCc…¿pŸÿ¸&Šá–¿þE«þ76ôOÊ|A`ñz€Æ$ p$`»†¡cš hlj€@ûûƆú{êÓpoß®èÉ¿±â_<ïoè¿ ¦j‹66+A·mb4 /É@SB(=“›(ú……¿ø©Û†{|cÃþ…‹þj›1ôO*d* ) èS$±td§õ{A GŠE )hL ¥£ø~[\ô‹ áSÿÖ ÷øaÌù+þL §båç¢uùÑ€BÓ„ L(’‚b&6‰¦î§…÷Üâ¢?¦¨ð>õççû‡4Üó‹‡ý ‹¿yÿ*Z_Ø”Ķü‘ÁùÑ€ÆD`ûFd /ãŠÄPZ ïµc)úÛ7QøóOýù#~ûmBñ7ï_Á£Mäwä·ö- \°@0/ù©bÈ A^ ÆÉ`ó(¼·Ž.(øÅE??ÔŸ/üù…~ƒ žúûvú¿}þùÕþÍ)þ Š$ ¦Hz *˜ÈŒ,QEB—‚BvlÅ÷ÕíŠ þ¨‚¢?²à‰??Ü?¨è©¿WQñ¯ibÎ_ñ¯b Èo,œhLL Ë@¡ä¥`T6ŸÂ{ëÖE¿¸èç‡ú›*ü…Cþ…[ýÿ(…£…kzˆ@~j`PCÇR$à ¦ åPF ë/*øC Š~~¨?_ø{Íõ>õ+þH w45Ÿ(ȯÈËÀ€"!(”‚- ä°ùÞ[‡Üwó@AÑÏÏñ÷*(ü…sý=õ7¶Ú_ñï £]‹Fz4t¤^#…B—‚¼2Ð"Šï§ Š}aÁïSTô{=ñwõÔ/MI@sD pT XòRƒ¦èØ º‡ö)(öÅ¿GÁÓ~s ¿âoJ`ƒ"И  A^ ŠÅ )z6Ȇ…¾{Á}¸¶àþ\\ô›[øÿ.Å"P<*—¼KA!u€’P|-,ö] îË]yÚo¬ð+þ²I"ÐØÈ@±Ë 4ßg»ü⢯ðK‹D )hL¶(ƒÆèØ$6tO-¼÷6Vð7Vô~Ùd(–ƤÐú4v/~»Â/­!M Á†ÄPzšºoèÞ-RRhŽJKsïË"m.€öA„€"/"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""­—ÿ•&ž9ºUIEND®B`‚chiaki-v2.2.0/assets/regist_console.svg000066400000000000000000000057611447035777400202260ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/assets/screenshot.png000066400000000000000000036611231447035777400173540ustar00rootroot00000000000000‰PNG  IHDRYì'ŽzTXtRaw profile type exifxÚ­œi’9r…ÿã:àØƒÕL7Ðñõ=d’l²{Æld"›¬bVfw‹ÑîüÏ_÷_üê>—rm¥—âù•zê6ø¦ùϯÏ×àÓûûóéË÷Õß^w™Ë½ïŒ—ôÝç_¾œï¯ç_¨éç{ÝÕõùÆÚ÷Bßpá÷+êÎú~ù½P´Ïëáûo׿å/Óùþ±õ½ì÷âþ;Ucg®ÍÙ‰!ú÷·}îEìqðµñ7ÿ6½’ù>ò¯Áwÿ°~î;ŽðO ØÖÏiþ¶~þÇÈâ¯åø\èÇ´Êëô}=ä?^?oo¿(Ø÷-öëïýѾ+ø÷õ»w·{Ïgv#‘G=•ï¤~Lñ}Ç'ËßÇ ¿+2ß×÷»ó»ùáQÛLu:?ùGÆŠßÂ#ÜpÞ×CLv¬òÕlY|¯µX­ÛzAIú®UG|6ѱ¸ˆ\äeû9–ðîÛu?nÖ¸ó¼Ó#Æ¿ÿv¾ðýýÛ…îU¼CÐb¶Oˆ×[p†¡ÈéoÞE@Âý®i~ëÜç‹ÿó—‰`~Ëܘàðós‰™Ã¯ÜŠ/ÎÑgÇ[“ÿÔK¨û{–ˆ{g"ð…Ä%øjVC`ñŒÜb²IBvÙ6£´c!8Íto>SÃ{¯eû¼ ¼ˆK¬„†"X)åT¨·F —cN9ç’kn¹çQbI%—RjNkª¹–Zk«½Ž[j¹•V[k½n=cÙõÒko½÷1¸éHƒk Þ?xaÚŒ3Í<ˬ³Í>Ç"}VZy•UW[}m;n Àí²ën»ïqÂ!•N:ù”SO;ýŒK®ÝxÓÍ·ÜzÛíwüŒÚ7ª¿GíÏÈýû¨…oÔìJï«¿¢ÆËµþ¸DœdÅŒˆY D¼*$´)f¾…”L‘SÌ|·èbÌÆ(³‚³ƒ"FÓ –oø»_‘û—qs¬î7û§È9…îÿ#rN¡ûKäþ·ˆÚnã ª5!#åwÈZ›%”yÂÔ­Ó\m¤Ú繋Kk…zÞs×r‡¿g欌P£­Ä –æÖè€ SõaÕüº5¦»m„4çN%4+k¦RcÏ‹‹X™#çígºµø1K¬Ê³Ã^ÝêÕÒ°@ÓÂ,{rΕ6ô眳ï²ÍÕ±¸´,»#nz[ãÇŽu]̧1X‚•Ê$ yQ½]FzWé­1ß×Ü7¼½»¥ÜÖždkdÁíi1Þ¶kè¤eŸ)þä;‰®±þàt©$õ9\ÈÖZ·z!D`·jÐ ¥Ýèæ…Ef#X4¨÷,*ôù½b!…;!âŠñÝRòUplŒX{6c¬ôé݇›ßè\#Ýï,&ï «P¸¬5UW ‹tLͧ;Jí£× ¹³¼Û•ËO×b¯“§¤ÃM@Þ¥ye‡ÄŸ\Ó:cmø,©1Û^YÔHœŽáfbõÂ!·ÓŽut å²Zô-2¤Æ—¶JŒçø› ' f¼Ä:®Èè[LÕ"ÀƸïÙ^3g@%ÜÓæ­õܡë8äO¼yP’ž*¹7of’2a?5Øà]}ÍQl…¥M§—ªlµÚNN =6‹o…”?ÕÒ½5¡Î*ð~}¿öòe´¹nCÙ¥XÛvÁ˜w#O’™Ú-!˜Ë´‡ ‹»ˆ|º`öçW÷ç ÿò+’`•ö‚oŒ§^âÏ2P2³‘¨®- þáGÆ}c÷àsÂMP/ÌŸçÝaê z;7ƒÉ…T­ì~NÙŽl"ß(·´°8C‰»ö›Î²>r ±T%÷ôM "Î5,-®j”S¼`hZý‚ˆŽµJ­u-¾Ñø‰0 u±¼ûîøFäsÚ$ÿ²4I†{îé[¯7òͱ¢ƒYŽs'Ùú>hÁ:…¥AŸîäuôPÝv*8¹=€°Èè¸R´ñ¦ÊD™Æ@G7€3&rq«Ô S¸ÑµNZ°´Ñxn&ÂÍ€ãâC)¿†W–>:ÔüÔ[ÿö6r÷Œ1—qcè$Ò%˯¹•H.Ó#6>Ç“|þáóQШNšF)– ](rí—ôBöÎ.Ó\ ²ý-.T¶X×¹) ˜âc51g˜x#‰˜å,c[6ë½JÙæ|më‚;)qâÌš!Å*ä>ˆß\dD¿Rš¢¤q3yXÀª Ð’VpÝ\0ŒSáyäè&¢§VêÕ ÄÞ$„YÃhBYpÙ¬J+È‘‚'XpCõñ@ƒs»ÍÂìÀ½‡n‰ %x›ëÝèÄÝYn ‹•M½3–Ni°¸MR˜‰´zgìw¹3:0í²"eç[,gœ-.„·‰ß¬‚™Ø yAù.¥ÝI$¤BÞ¨Ú ˜µÏ¡ñ‘P$1‡r=c'c'fŠ`Ò¶ÏÏ“=½“)§r³TŽ Ê^dè<…â91ß<©h8M‚jöD‡Ág@*§ÀD .C8£Ï ®e‡¾-Y´;‘W s6© k>ƒÁø÷`ð£^c¸,ñg]HÁùÉ5p”åžT8¢yñí¦WÖ“Ë€ vÄ´EuPæ騵4p™ÆoI%Åï¦üaœÏʵæÆF/òâ)¤,F¿8 *„AÍx7´…T‚Õ¸ ?¹¡!žˆ9È ¦!"NÞÍ-r£Ïï÷†‚Ãà€˜DšŒ… ÑæˆI;ª¥#!ÞåR µ'S3 ž¸¶À’€ýH8h̽5_Ì«ÂGkAïø´QHº¥½) >RGìÙì¡^ÂBeÄ€J~}üˆÑ† ÏòàŽ=ß1ooaº‡B"ì2Q1m†ü¤œ÷sH9—÷†î[â±TºL(å–gˆÌêÂfH»Ž¬µ5.idzG°U–¢y)P^„ óq±´çµ:n‡s¶À0¾Dœü‹*o¬_ E€Ûj"ë]±V |´–OM¦®Jew¾yfÒÄ‘Ò8{|vQŠrù|믲uRõ9Çâú£ãI‰^~¢ªœ'ZTŸO¾³š¾ïÞ¡<þ@iœ°©è„UµœžM0=šá"&Ëv uÉØ¼(Cæ@ ¯š Boœ.W°|½°>€*e*ꇔž}èªØÉÁb;^fÀ,J²L>¤ŒÖÉã{,lŸßíñ%ªê7ü.ù°$¡¶;Fø:Ã\qH Á»>³Îƒ/u{Œ b.³r¬+bPœuJÁ%D*cG2àûKØô6êùðì/Vü;‡ù#;,!cqÌMéq&An€ƒƒ¶ú ºßhÈŠ$ƒÇì¡™«êœV!—ÐTVK(§]E”3,® æbªdÃAVlù€î¸ ÅÆ¤hüt0ºpƒlCÞ5tOL²bÈþ¤¦ ð€y;D…аÂèkv‚ê›Á¿Rßj’³t eÚddê@Ì!ð˲ØpÔö•›B'È¢!©?Ð+¨Õv'âa„ a5ɨ®åb¬€¬xJ^€ÑE\Õ™Â40Ù¨ ô3Ü eׄâŒþMJ‰Ä»ñðÒ¡”™ÂŒpÅ@eÏ=6õ8¨–•!00S¦4G“(­ð˜»1HÏ DÏØ+’•$È CZÛIS„5€›ì i,‘†ÔöÙãâÖà3õ;1³XD¿¼ÒwWÅ9e&~¥gY]/;— <ˉ –y 3”XG nÀúÙpEm‚óÇ©öËL®³dõ=Jž±UÄ¿:±0D_/­qêÒ€ .‹BBPt™KÝ£l €ïânº=éFm²Œ FgùF$½/k‰¼dm â†lAa€é8²”æFP …ÉFГŸb!2Ƈïj ±1+Dv$»eÓS©7b†ÕÃÿ¼Ïv¦vËGštènñB‘—LêÙÃU¬ °˜‘J7s¿fjOÒ¨DR*p ¿V{‘.be‰Ö"‡'€† ÂwÙ¾$™Q÷|cH+  аãJ06ŽjvèÀªmð¿’Ù`‰YDˆµ}ò‹oaS¾”·”ÿG.ÿ0¾Ì•S£±-€6AÛ±" $<˜ ¼E ó… LêOZvbÚ¶EÝIZ;RÎéU€­®œ˜ vO.Õ¸4P0 /à&s±öL3˜Ç·ü‡ÏrÄçPš ÃBµÈƒ7Hôª‰SâÂShtòGWDՌʲS®»¹(h=mÂèø›•¨&U™·ÈéZ™ê-˜d)¸Nh•³°rÂ(Š×*0?ÿî€có&™¬ÝÈEÉeVG†—!fþ¯«V{ qûÎèz‡ "ßžÀ?óz¶å˲“øÙv!·ðГ\€iîŸ0`y àÝòýÀΑњ²)QAþ8¥;ñôê}¬h78ð8ªž÷\ 6ÀŸwE.+átQ‹H3‹Q t4Àe!aC€ £3qý,qÚ¤A¥R6,E|×P·DØA '-ã9oí4#˜Œ2 –mÀDj\N½•†’Фœ¦D¼A‡\1y Òˆ¬žÛ–`B eŸöŒ=ê&hËFã'–  E¨Í\ÕP'x‚Ù DÖ ”Ï/ü†¡ú8 ÝÛP@öIYòy!°$æBã;ɉ"¹“´SqÈ|¼Ü&^´&H ‡"Ú Ç4¤±ÖÌT=º°"èÐX"¾wbl ³Ú¤i™xb¡¸±îÆj©,:,YÈÎ’„¹­¦¹­|éä …uÈl\Á¾‚ Ì#Þƒj¦BJƒÏ`×£^ÏVÛãÇÃaNSsŽd].ârì×Fë®æÔ ¨Ký[®¨yëÈG3W´ÀVKx°<ê¡–kŸMVzN¸Ã€‚S‰h8O0AÄ– ø€„€”¥A¨4L,‚ü¾N/!Þ,SM&®„·ÛäMű¶õƒ@2yLÐkÀСŒw+¾C` öþÙE,þ·Âÿ^Òµ‡‚>'›ñ÷6¢#ºÏHAŽÉêíþ äĘ£z– }|&ÅŽ~¥$ó·\d¾Ã休†üŠm›dVPH¬ÚT‰ršøQÖ>…­šáîÜ×pG Ë ùá‚à a0ù†? ãÓa‹OÕK˜× µã6¼£uVa̽ÌÓp剸 (%þ;¯ -½œƒô`¤§å7)*„h×ÁíÓS[.Q9°B&–Á‹k« þT«GQ ~¹i{î‰á% ÎÚ²Ù, ^(‘é²F× ¯¨ÁÒ ¥Ùc×fÒò™îjZc±‘'d^³µwÝ™Žêw‡;N¥Ò_ÿ Ä›ok.0”²–ȦW+“æ‡€Š·lŒ6š_Êm«Ü\t¡h5408  ddò›”í‘!EÒE9Ð~PŒ€‹:Øø )¸®.jmƒAÔ0L æDíh JDÕüöoŠE[VˆÌ­?È_ü+…·P‰hŠ[–Ë(<ÆÈ'«—})Ú¿ÜÔ×”ºA¨yÌ.2 BaÈÀI8-Šˆ[E™Ü¬åq¹€y´(Iˆ€ÛdÓáFªl–ݱ¾À”H`ÖTŵ±ÐêÝL˜ L,Ó¥æuE;™‚ÆDM,m¨GYà »€9Æ[&íJ¢|ˆ4ã¢üG‹šùÌÖŽ}t’`8d–ÚßÉ]õÇ`?Še+ˆ(­°!TØÄáKøCÃq‘õÀà9]Ã2¨‹;_;= Î#/fç€|Ö f¬ 8Šn@"°’*(‰ŒÑeá°¢:$DÊ~Cs\´ŸŸQ¬¶(YÐwWâ õ¬Ð"^¡7àh ‚'p„ð‰ ´ÇDëmI†[HàÔê´ p-~©dµûáÓ­ÆmD̶@©c: ¹ëR‚Œ`@cd¯½†^+€·gVc†rk@5Úͳ®ðÊã µ¡UaS|8ÆäU›=^ÊìÔn`Uª;ÞQ ß&ó1IWW•«ÈT»ì:6Ç©ü(¼,¿^ïx"á¨Â fƒã!OÙ¤ŒÊayÈÓ6µ›0ùÉY(Ü´]¤>$Ë mÑ¡º­—ýéi¢ÒÕãe¥3É2ÐF±+¼‰š%1_+™Ê<ÙiäÈ 4?Ò‡Ȳ!98n„bóêÁ’†¤ÎY»ªp-ä…\““­D³û!Çgi÷C›Çò.íŒ[ÂÕ6 ªZ'&{p…Šj@{²‡É§nª¦¢Z<Ä=U¢Ñ†îX´MštNÈW?G=‰‰žµ¥Šæ¤\"àCR¢Ø[p ½øT?8\è?†òï` å˜[b.½ õ_•Td*‚BÓ¸ã>mªŸã6"uËROmÆç¨s9¬{ÇÄnõ÷Xê$ŠÄPC ”5I˜Ðs˜H¸ÁWgvÔD·!ªJ,:[Vʤˆ(h;r˜†¦EvlŒiР޾‘÷c逮×îøB,Á¶#‘¯vJ¡—ù¢“SÄÿð˜Pvƒ}¬‰FGš£ˆŠNÄ`àâIdLþ$=AU7 »ˆCìL Ìj ÚKáF•â Yt‚[ÀÕ)µLBØ“S0r|j 3׈)ÞO°Yhjìêè$'¯4cñ“{À‚nÒiµá "mÓXȪù|þœ´(Ä? µ€p6Jð yr#.ÔÕóbuÂv> @á6´†N¦º¬©ý+x^›Ôo# mÿr#hÇ èP r5‡yÕV–æ…Æ»xVb¬²`†`°õ9‹ü´d{WC¿Iåˆ E‘yQ‡ŠV>Ž„ZF Â>÷É›2˜{9 õ—¥ýÿ¥[2ŒD­é,VE¤ÈX@X+ãí±À‡h%™¿=WÓ'R'œ2Á~.þNX²OkÂ=½q=ÿW{b…ÿŸXÿîèüÛk\&’L¥Øýà.Q¾o{`¼Èè0„òj$›öó=)§zL¼J•j|F¹[èP:,èLä`ü‰Xõf/qÃ`3¬Á!kñ°õ¾1ÕUò™Â1ÉôARV( îÝqœ$ÏmÚ’Ÿy‚·Ðáooè€ÿD×Y¼¨¢ Q`ÁñÉWˆWÈ«d†Ü‘:ièÐ2DvÎ ’ ’SLÅ|z?ÐÔÄyg£¨aò-è,ÆÑqB ¡8ƒT§z29©¡À4¹X5ÍZz¾ *a1£;U§ëè¼­RY2\$º Å›±U|Zòc8ŠñÁ\ƒ½Õ¿6¿¶áb ´(ª¦C#èQèã]TAòöÈ)t¶Š`m3„2d®ðgð=º¶4¯mZz–¥ð€HÀ´%‡´fÕÐ5Ú%Gàãé+!DêiQ”æ%«Á†P@œ/´c˜¸:`¢¦…z(‚ë0´˜+̧7H” «:Ø Ÿ~ЫN$ˆ-ƒBìIsB ¥Î¿³š ¦5pr½JDag”ôýìA²f…q×¹F`–7Œ÷Ó¡ó> ÁOm¢y½Ão‘ÐÈsÈ­–¼6XÕÜ…öƒïˆù4—ÌfޤÜ+@.QñÐHÑæ±';ÜåG%V¯&à- ¬J¤âX#¢ƒUÂKÛ¼§í«@š|Á· ±^Úò©(0x|ã'uº7J‡Dí`OϯۅÔá„lY‡±˜:9ñlxmí9¸¡¾i|ÝuˆòÕ©Í ÌÌTJ}~îu#µy¶¡|´i{Ç€m=È wrÆI{Ø,íðDý¨‰szÆVûÐÄGhðÄŸzá Ââ3–IW´¬‹ƒœŠä5€B¯rwwF •è €@¥©í‰¨Ç D5½at÷|gè6L‹hÝ8`*™4ªìz>2 ‘i»áUP¾,¯y ÃßÚÜÈŒù`pd3‘”-ŠäÀ¡É8tê;퉜!àø¹ kÈì 6êB/ÞwÕb¯Ž’0]¤¯NÏÂÒÛæq„açîÕhSü ©ƒ*.u?õ8ŠÎC÷ˆfc‚¨¸ÌX›Ú«h%T kp]&Îh) ‚ÄOU¶ õÃÅ<×CjãMûšø•'2*êQP mh^ª¼ã2WÆ…‰zäÂ÷mÃi$k$[[3:5‡ÂÌÂp)Å¡ I¨Ë°ù˜E·ßùEá2Yéç“Ø°¨ªƒ±¼.ê#Md3rOÛô—Ê@tÐ0uí!ÃýzÚfN]ƒTŸó×XÜüà׫Ëq ]§Äü†nY^R \3,ú|ø¸ïg|Òÿø¬¾ùãÓê†ÿ峿ߘNJ¶yÐå:?×Ee™ƒ¸¶öºÊ™(÷„ƒ•DÓ¡&ZšViQ»Ï 5|tÂc °YmÛÕHµ"™BKÇ¢N)èÚî#ãí=h!±Q«s·|ÖÃÊ@«°&ºÄt’Š|ÔE;n¡±(³øº¯¨ Ggs«|%°±l#sU`”µ¥ò›Î®g¨/XZÙ¤é:èE–±}µÁŠŽu¡Ë(#yÓá²|dúQ£ žÕCK5àÓëë¿Ç᜔ãу蓃xCÕè”¶KrE-’¨uðñ¤g‡xÃ~Ð*õ$½Å5ô=´¡S©äð1qU·>¡(qU†×™_¦€TU2]ÕHàÑs’ ÙuF[Þá.Æ«XB.:ਠxT|82,UѦaZt¸Rßaa”Ë\@ú¡)tR‘xå ¶$žº,›w (hçűš¯Úu«"ýŠú‰@ž„ò:7¢»JlD˜Ãu}aÙ!FÒ7È|¬d>u°‘â30KYuÆ;µ§Ã›e¦Õy¼PäØB>IK¬h‰ÚoƒMÉðw–UÇ¢ô •I i8w /;ÊDé£}Åþàxk¿ÒV­’ºdèÁÞ™û|‡ÉмÒLK Ór”±vœ§Ú×Å7 ÒxÊr’ÈÜUêó<á6%SÎ+‚âU*eCÑö­]F€FnL¥¾±Ô? Tã`²¶¦±UÏI°rü¬ÜI}m¼«Y{ uëpæÒ^!h„Ô3›×ükv=úñž¾ÐÙ‘¼<*:=áY툂7Þ¹¿õÐUÖŽ7U ÚŽñ =xí€Ní=¾ãÞs<nmx&V³ní4õKS”wÓ‚Ž“_™‘^uè8 LðôÔAÅ7£Ù›ÛÌ Ó¤éY 9@Ž\]n¼»ñq,†ÎÈ!V·Šæ° ³V¶tÜÅãótˆ¦CbÚxæþ:ŒÄ¾öiD↖ò³hÿ)¨1¦¦®N©kçõxaÞïĕυ’¶pG$œTÞ“ß'N=°„4] Qõs=H›âZ6Y9Õ‘¿# ˆ ‰:À¤¢G)6äaXzÈe`Q£$uùmbÄtbUt¶Êôê˜u› éR *œÀª[-ŇXÖ¯ƒ)UI¨œi4=³ÚÐ7ëhXщm˜ûŒ¨Óþç@;ÐxRRMRkØa=îÒ¨Æuˆ%u Pbb´Í¬ÓÐÚ#½l9R<·§B—‡†ªvéLÇ2©ÃðvS›Âà5í*^ œˆANún`(¡~(«³@CS¸Hµ-Ô!¥ ªždCˆÁRàˆ§S‚GhUõÐ i›l.}è¤4}‹ÊÒÊ:FÝ舨…u`å¡Ôªó5ˆTUrKÏ©‚ëÚV:œ/Ô(üCUÒñ­k° ÆPÅÚ×J‰¢ÔPAä:™zçÑ-~÷Kj¥am£žµ”Ñž`a|Ú4[ÏÚôðp8åƒXƒ#qž*Àe· ÂÑ“7@š\ ˜s{˜ul×Á0†d:b+½Œ«Þq‰ÊBø¹'ŒŸTóë”—÷èzý´XZ—:ÜFؘ7Äêt³v`ÕžÖ™=-‹#IÎëñ$¦W/) Ïb Y?hG¢Ç"(‘òu{’mØ[©¬™ÔìZ¯ÓYä_ÕSYz Û|VðC çNbÄ0>–Öyæµ?OŒ=¤G,2Ò ©Ú•oRAÝ ˜Cç×߉§)!—|Ö¡³ƒâ’†øÞýç刡Ó#F¢¹ôè‚ÿËåÔ,W­á¦Õz5ü°,%  6`ø‰Îg§Íô§Û£û÷h¹® ü~~”uêoÊßèŒ[§ñ¼‚®3²¯w«>ß¼Y2(§#Ò˜¿wdõo+@«57ƒŽBè’z­ÌXÿÇÈéŠHHï‚îÇõ4„¦Y*ƒ¨Äˆ¨Ô3Y'¡›uâ…µ9ÊËZ(„3_ǹ£+Ý]ÎU"vwƒSÿ´eê°?_†2ב⷟-äõ»KMêj¡É¢¬’žÄ.ÒÞYÿ ¬M¯õwCª Öm鑿 R\oT×rd–*q§# ²jë¨>mq±ÛeúY %¤º«NréyvIz: ƒœÛ.£Ñ¢KzNd,øì±‚äžžRÅ‚i³Z£÷Pɪ§‚Û®ûâ uDèq€QFSPø/î¶åb‰¶vø†|ïêø&5HúPÓ³uð+h¥ pND Ou« ‹ ö™U†}°EüPÏW3Ѻz–¡mjjÇ ËÕb½ºvAjL Ë¬•qT1×tê¬mî-øöTtjo+)yôÔÿþ?s'=]šáPˆLqI ¢M/TT‰òAA«Š}ë਩GT$dÑoX‹÷س0cJ+´HÉzì:s«@¿š!Ú¾Óã•Ò—ï¤FöϳQlh¸¨Ò¤Ä¦ç1 :]´t j8ê1â-pw¢G éQ‘Æ/ø¥'9t6[ì×5†¡ÝWª·­Ù—`ꈷþ6ýô™«3åßJPçÇ“ˆ¸~€Ö@”á·u¢­¼ÇkZ‹Þý/΃0òX(ÔåhzTXtRaw profile type iptcxÚ=ŠÁ €0 ÿ™‚R;@;NÔöÁû «B8Rìøb×ýtÛ–â0Ö@´š_@鞊IÐYØ0äU[÷¢]tŠìLÒT§¢ëá«{÷Tf…ïÊr„iCCPICC profilexœ}‘=HÃ@Å_S¥EZ ("˜¡:YqÔ*¡B¨Zu0ý‚& IŠ‹£àZpðc±êà⬫ƒ« ~€¸¸:)ºH‰ÿK -b<8îÇ»{»wר(šÕ5hºm¦“ !›[B¯ƒGý–˘Å|Ç×=l½‹³,ÿsލš· Ï*†ioOoÚã}b^)I*ñ9ñ˜I$~dºìñã¢ËËäÍLzž˜'Š,w°R25â)☪é”Ïe=Vo1Ö*5¥uOöÂH^_Yf:Í!$±ˆ%ˆ £†2*°§U'ÅBšö>þA×/’K&W 9P…ÉõƒýÁïn­Âä„—IÝ/Žó1„vfÝq¾§yŸ+½í¯6€™OÒëm-vôn×mMÞ.w€'C2%W Òä àýŒ¾)ôÝ=k^o­}œ>ê*u£EÊ^÷yw¸³·Ï´úûUr›nvmDiTXtXML:com.adobe.xmp fj*¨ pHYs.#.#x¥?vtIMEã 2æ„®ô IDATxÚìÝwxUÿ÷ñ÷f7•@ ž@B•"R„Ð¥ª„ž Ü„®tD@AD"E”"%j¤©r#Ò›¤#„&!z'@ „Röùƒ_ö!dAoŸ×u-dgæœ9sffwv¾sÎ1”.]ÚŒˆˆˆˆˆÈ¿(22Ò ZÉ=Lf³â """""òï0gÉmLªyƒlll2]&!!„„U–ˆˆˆˆH.§`?~¶nÝÊèÑ£Y´hÑÿ<‘§‹‹ #GŽÌ2ØpðàAfÍš¥ÊÉå2l  Ûšhé–ŸöÝð°5q%)™ÿ^¾Æ²«1\LJ&5“n—l àé MjÙðZ=#nù :VmIaýöT.Ç@j&=6 `r…~FÜêÛbÊÉq³)™˜íÉ$Ç@v{{òñña̘1”.]šS§N@ãÆiذ!ÇϰüõëשP¡B¶ò~\ùˆˆˆˆˆ<ílll² 4FU”ˆˆˆˆÈ³ðûàþ …mM|è]„~Å QÌÞ{ŠÙÛѯ˜'z¡°mæ!<]¡ºø)ìvvPغ¼n¤_ O×Ì br…¢oØR¨¥-vî`cvîPÐßDѶ˜\³·A¶¶¶|óÍ7Ì›7š5kðÈ•óõ×_³oß>~ýõW6l˜a~¡B…hÖ¬™Ž"y¦e6´tËOƒù°½oÐ6[ƒòÑÒ=ó»þMjÙàWو龇—L&¨]Ù†Æ53ê©€Ÿ‘|Ï1Ü—Ö`‚|ÏqõË^OU«Våüùó¬_¿>ÃÀׯ¾ú*»víâ÷ß§Aƒ.\˜íÛ·³gÏ^xá…tË¿ýöÛT©R…)S¦Ð¯_¿tóêÕ«ÇìÙ³‰‹‹{`>"""""""""""¹Y†»ÿí ºe4¤±5hçY ÓÌ^«—1ÐÆd‚×êelp«oÊhHc0kÝì5¿.R¤çγ:oõêÕÔ¨Qƒ>ø€þýûpñâEüüüعsg¦M¼·lÙBþüù-ï«V­Ê„ èܹ3Û¶mËv>"""""""""""¹Q†»ÿ[¸›2¿‘îš/ë•e5ßô€´&—ìmÐ7ðôôÌr™#Gޤ XãááÁ‚ ؾ};ëÖ­K7oïÞ½:t???A"""""àëëKãÆ±³³SeˆˆˆˆˆäR‚ W““³LÕü˜¸¬WÅüä¤MŠÍÞíÞ½›êÕ«S¯^½V—•jÕªOݺuiÒ¤Iºyf³™¡C‡Ò¯_?J”(¡£HDDDDžI©©©¤¤¤šššé+99___^}õUœUi"""""¹T†f ÿ½|~Å<­v¥”d6³øòõL3[µ%….¯±Ö8"9VoIÍ4m̦ ú›0XIkN†k[R²µAׯ_gÀ€¼ÿþû+VŒcÇŽÑ®]»L—¯_¿>&L _¾|Ô¨Qƒ“'OÒ¾}{6nÜHÓ¦MÙ´iF£‘øøøté®]»Æ‡~È_|Áo¼A­Zµ¬æ#""""’[ÅÆÆ2fÌlll0 äË—/Ã?‰‰‰ÔªUK•%""""’ËJ—.m¾w å¢v¶|è]$à ÑIf3¯Åñéé œ¿“d5³BnÐ/ÐHíÊ6éÉɰí@*Ó~J!*ÚzAlÝ hÛ»ƒDߓ֜ qûS8¿0‰¤hí0‘'‘ÑhdذaV»+M FŒ3†˜˜ ‘‘‘ÕšˆˆˆˆHî‘¡ÁŤd>=}ƒñ‰´ó,€‡ÉÄ•¤d_¹Æ²«1\Lʼ¥Ë10í§Žœ6óZ]Ü\ DÇšYµ%•õ;R¹“yA’càüÂ$N›q­kÄ”’®ßmѳ=™äí,‘'™ F£Q!""""ò ÊlH5›9'‰™¢˜y!ê¡2K5CT4|¿*•ïW¥>TZ³’¢!je2Q+“µgDDDDDž"f³™{[Lgø­ðc8ˆˆˆˆˆH%‘G‘/_>LÖpãn°!66³Ù¬n”DDDDDr!“ª@DDDDD‡¸¸8U‚ˆˆˆˆÈ3Êdúô‘ˆˆˆˆˆÈã–’’¢JÉelT"""""""""""’ 6ˆˆˆˆˆˆˆˆˆˆˆHŽ(Ø """""""""""9¢`ƒˆˆˆˆˆˆˆˆˆˆˆäˆÕ‘¡ÝÜÜ(S¦ öööÿèÊoß¾Mdd$ÑÑÑÚ"""""""""""O)«-þ@€½½=¥K—Ö^yŠY 6ü†4Ú """""""""""O1Ù """""""""""9¢`ƒˆˆˆˆˆˆˆˆˆˆˆäˆIU """"òä2 øøøP¸pa.^¼È‰'0›Íªyb(Ø """"òÊ›7/={ö¤eË–xzz¦›wùòe–-[Fhh(7nÜøg0˜LìÚµË2ÖZbb"5kÖäÎ;ÚI"""""b‘ãn”ìíí)T¨eÊ”¡L™2*Tè_`ZDDDD$·©V­kÖ¬¡gÏž žžžôìÙ“5kÖP­Zµ´,^^^–@€ƒƒÅ‹×N‘t©eCž €···eÚôéÓÓáУG¶nÝš£rFöíÛ‡Ét÷¹¤úõësåÊ•tËxzzòçŸw»W}þùçIIIÉö:4fƒˆˆˆˆHîcó0 § êÕ«Ç!CÒbbbˆ‰‰±¼/Uªƒ¦~ýúéÒŠˆˆˆˆÈ“íþ®”÷ò"""""’û˜%ѹsç¸sçf³™%K–°gÏnݺ€““U«V¥M›6 Ξ=«Zy€‹/¦{ïåå•n0è´›­ æÒ¥K9*ƒ‡‡“'OæÞ–ÏþþþéºQhÑ¢…åo£Ñȼyóxçw2´€‘gÇ#Nž<ÉäÉ“¹qã×®]K7ïÖ­[lÙ²…ððpòæÍË™3gTË"""""pâÄ ®\¹òÈã6\¾|ÙÒ…é£1bDºñÀŠ+€»†´iiªV­ÊðáÃ4hv¤ˆˆˆˆÈ3Êô¨ Ó‚F£‘FQ¹re8Ào¿ýƵk×2"DDDDDÄ:³ÙÌÒ¥KéÙ³ç#¥_¶lf³9Ge˜={67N×-’­­-C† I7 ´µ²Ïž=[;QDDDDäf“Ó .L³fÍðññÁÇLJfÍšQ¸paÕ¬ˆˆˆˆÈC %::Úê¼éÓ§3}út«ó¢££Ó .ý¨öïßoiÁ’’ÂåË—3]6**ŠÔÔTàn ãï¿ÿÖy†å8ØpîÜ9¦M›Fbb"‰‰‰L›6sçΩfEDDDDÒ78p IIIæyyyáåå•azRR àÆ¥ Ÿþ9S¦L¡Q£F¼üòË|óÍ7–ùúë¯yå•WhÔ¨_~ù%_|ñ…vžˆˆˆˆÈ3ÎPºtió½À4hÐà¡3òññx¤~b7nܨ=!""""òªU«ÆÔ©SqssËr¹èèh Àž={þ±²øúú²råÊtÓ^}õUNž<ùÈy¦¤¤iОÉ=lWF'NœÈñ€t"""""aaa4oÞœÐÐP«]]¾|™ÐÐPš7oþΞ=Kbb¢å}bb"gÏžÕN‘t[ˆœPË‘L.Ø |||(T¨—.]âĉ9 úI-DDDDDr“ª@DDDDäÉe6›9~ü8ÇWeˆˆˆˆˆÈËFU """""""""""9¡`ƒˆˆˆˆˆˆˆˆˆˆˆäˆÕ`ÃíÛ·ÿµÜ;Øœˆˆˆˆˆˆˆˆˆˆˆ<}¬"##ÿ•€Cbb"GÕ^yŠY :::šíÛ·«vDDDDDDDDDDDä4fƒˆˆˆˆˆˆˆˆˆˆˆäˆ‚ """""""""""’#&€›7oª&DDDDDä_áèè¨JÉe,c68;;«6DDDDDäåììLll¬*BDDDD$—Q7J"""""""""""’# 6ˆˆˆˆˆˆˆˆˆˆˆHŽ(Ø """""""""""9¢`ƒˆˆˆˆˆˆˆˆˆˆˆäˆ‚ """""""""""’# 6ˆˆˆˆˆˆˆˆˆˆˆHŽ(Ø """""""""""9¢`ƒˆˆˆˆˆˆˆˆˆˆˆäˆ‚ """""""""""’# 6ˆˆˆˆˆˆˆˆˆˆˆHŽ(Ø """""""""""9¢`ƒˆˆˆˆˆˆˆˆˆˆˆäˆ‚ """""""""""’#¦§¡ÚS"™(_¾ü3µ½ú<Ñç>Dôy """""OÓÓRÐÞ½{ko‰Ü'$$ä™ÜnÝ@ÉèY½ñ®Ï}ˆˆˆˆˆÈ“AÝ(‰ˆˆˆˆˆˆˆˆˆˆHŽ(Ø """""""""""9¢`ƒˆˆˆˆˆˆˆˆˆˆˆäˆ‚ """""""""""’# 6ˆˆˆˆˆˆˆˆˆˆˆHŽ(Ø """""""""""9¢`ƒˆˆˆˆˆˆˆˆˆˆˆäˆ‚ """""""""""’# 6ˆˆˆˆˆˆˆˆˆˆˆHŽ(Ø """""""""""9¢`ƒˆˆˆˆˆˆˆˆˆˆˆäˆ‚ """""""""""’#&UÁ³Íh42}útRSS¹rå +V¬ ,, £ÑH@@UªTÁÉɉèèh˼4nnn >œ7²bÅ J–,IëÖ­)^¼8‰‰‰¬^½šÍ›7«¢EDDž"vvvìß¿ßr}pþüy¾ýö[-Z„ÁÁÁÔ­[ggg¢¢¢ eÑ¢E–ôeÊ”aþüù,Y²„qãÆQ§N @©R¥¸uëóæÍãÛo¿UE‹ˆˆˆˆˆä" 6sçÎåìÙ³4hЀ.]ºpîÜ9êÖ­KÅŠ™;w.7oÞ¤D‰\¸p!]º®]»âäädyÿÜsÏÁÏ?ÿL­Zµ äàÁƒ\»vM•,""ò” æÐ¡C¼ù曌1‚C‡@Íš5ùä“OˆŽŽæùçŸ'222]º±cÇâììly_§NvíÚÅäÉ“ñ÷÷çwÞá?þàĉªd‘\BÁ >>ž .°hÑ"üüüðõõ¥páÂ\¹r…ˆˆΞ=›.Í믿ŽÉdâüùó–i«V­²üKƒ ðððP°ADDä)ÇÞ½{9|ø0M›6¥zõêx{{sáÂÖ®] À®]»Ò¥ùàƒ0™Lé Ÿ}ö™å﨨(Z·nMÉ’%lÉE4fƒXØÙÙáççÀ±cÇØ°aEŠaøðá4kÖŒ},Ó¼½½Y¼x1§NâìÙ³ÔªU‹_|‘M›6qðàANž>žvíÚqãÆæy/£ÑˆÁ` ..Ž3gÎXÖ!òo $%%… àïï ©©©ôïߟ:àààÀ¹sçhÚ´)ƒÆÓÓ“„„®]»À²eË0›Í.\˜={ö0cÆ >þøcJ•*ÅéÓ§=z4{öì¡G‘7o^NžM‰%HJJbáÂ…Lž<7776lØÀÀqqq¡oß¾¸¹¹±wï^Þ}÷]6l˜.m÷îÝÙ»w¯eêÔ©Ã|€——/^¤cÇŽT®\™¡C‡R¤H"##9r$GŽaÙ²e¤¤¤àååÅíÛ·ùí·ß¨^½:E‹%""‚¾}û£YþqþþþìÙ³£ÑH£Føá‡ðõõeìØ±”-[–›7o¦K“ÙgHDDûöí£lÙ²|óÍ7\ºt)Ãy”È¿ÿ|?~®]»F¿~ý,×GYåy/[[[lllˆŽŽfçΜ9sF¢ˆˆˆˆˆH¨eÿÈd2Q©R%öïßÏßÿMÙ²e-7:wîLrr2'Ndûöí–4eÊ”¡eË–,_¾œI“&qëÖ­tyÆÅÅ1}útŽ=J—.]XµjãÇÇÍÍ-ZЬY3\]]=z4³gÏæðáÃTªT‰zõê1uêT&MšÄöíÛIJJâСC~h_¼x³ÙœnZTT5jÔÀÛÛ›Zµjakk‹§§gºe ,H8|øpºéW¯^åÎ;é¦y{{“ššJëÖ­™ÎWZ´hAÿþýyûí·Y¶lñññìÞ½›ˆˆˆtùïÛ·/ÃõÁ¹sçhÒ¤ ~~~üç?ÿÁÞÞ>CP¡bÅŠxxxd9r$Ã6TªT ³ÙÌ Aƒ cýúõ¼òÊ+|ûí·)R„uëÖñã?Êñãǘç½ÂÃÃY¶l&L`É’%”)S†©S§ê€yD 6ü‹^|ñEììì8räGŽÁd2Q³fML&¥J•bÆ œ;wŽððpKš*Uªpþüy¶mÛÆÙ³g3<µ·cÇŽ;FÑ¢Eqpp C‡¼÷Þ{*Twww"##qwwÇßß“ÉÄåË—9yò$·oߦmÛ¶x{{[Z,X° ÃÍòƒ;¼ IDATk¾ÿþ{4h5jÔàÎ;$&&ZæF‚‚‚'222[7Ylll8qâS§N%&&†.]ºwIIIDFFrûömüüüÈŸ?ÿCÕ»““Å‹'""‚¸¸8 (@5t@Ê?ÎÇLJŠ+²{÷n®^½Ê… hÖ¬ 6äĉÌ›7]»vqñâEêׯ““ãÇçï¿ÿÎpN†……ñ믿réÒ%J•*E³f͘?>õêÕ£`Á‚$&&rìØ1Z¶lÉ믿ÎÎ;­Nƒ»Ý“LŸ>=C¹SRRøá‡زe 'OžäÔ©Slݺ•%K–àèèHÉ’%Y³f µkׯÅÅ…jÕª±xñbvïÞM‘"E8p ööö„‡‡ãççGÞ¼y™6m“&MÂÎÎŽ%JœœÌäɓٸq#¿üò åË—§pá¼ôÒKlÚ´‰ºuëâèèÈ Aƒ˜3g^^^-Z4CÚ{5hЀæÏŸo™–V§Ë—/§|ùò–~ñ###Ù¹s'ëׯÇ`0°páB¶oßNdd¤e}"ÿ¤ÀÀ@ؾ};Û·oÇÖÖ–víÚáèèH¥J•X´h»wïfË–-–4™}†¤Y¹r%þù§åX¿ÿ<²v¾þõ×_$$$0hÐ *Uªdyøá½÷ÞKèÈÌ'Ÿ|‚££#3fÌ Q£F$&&¦{HÂÎÎŽÑ£G³k×.~ÿý÷æçììŒ ¤ÿþDEE1jÔ(*W®ÌíÛ·Ù·o 4oÞœ’%K>T½{xxPºtiöìÙCLL øûûë€yDêFé_ôâ‹/b4=z´eZÕªUÙ±cƒ[[Û iŒFc¦IßëæÍ›˜ÍfÆŽËÕ«W3üø¯]»6o½õ›6mbéÒ¥Œ1‚:uêЬY3j×®Í_|‘íí8}ú´å©`gggÆ—®ED·nÝÈ“'Õ›˜ÖDEEa6›Ù¼y3 lÞ¼™·ß~Ú´iÃÊ•+ùã?,Ot7oÞœ d»¼/¿ü2nnn–~˜k×®MÇŽùóÏ?ÓID·ÀÀ@ŒF#ï½÷ï½÷pw°Slmm­žóvvvØØØ`ooO|||¦y_»v¤¤$BBB M7/ €ÀÀ@Z´hÁo¼AóæÍ­N‹ŽŽ~à6¤uùwoð§Y°`½zõbÔ¨Q\ºtÉrôرc´mÛ–±cÇR³fMnܸÁÕ«W-ŦiÕªUº÷Û¶mãܹstèÐJ•*1aÂËÑ;väÈ‘#™¦½—µsÓêÔÁÁÁró355•”””tË%%%¥{ÿ|‘JÓ¦M1,^¼Ø2­aÆüôÓO–σûeör¿´Ö€÷ŸGÖÎ×1cÆÐ¼ysÞxã ‚‚‚xýõ×jŒ£;vðÚk¯P¨P!Ö¯_Ÿ.`:mÚ4òåËÇ[o½•íëÔÔT¾ûî;¢££)T¨Ÿ~ú)®®®ôîݛٳg3sæLìììX¹r%½zõâý÷ßÏvy»wïNÁ‚©W¯pwLª!C†0gή_¿®SDDDDDä!©eÿ$þü”.]š9sæÐ»woz÷îÍâÅ‹ñõõÅÎÎŽÓ§OS§N\]]ñõõµ¤ §H‘"T®\OOO (`5ÿ£Grýúu^{í5,Ë—+WŽâÅ‹³aÃ:D™2epww§ZµjìÝ»—7R¢D ŒF#”+W.]¾ööö–›NNN˜L&ªW¯Ž··7^^^qþüy8Ü 4øøø0kÖ,ŒF#NNN¸¸¸Dþüù1™L8::b0°³³ÃÞÞžýû÷sýúu)V¬U«VåâÅ‹$&&ÏóÏ?O©R¥ðõõÅÉÉÉr ­¼Öò¼w±±±äË—ºuëR´hQ¼¼¼HHHȲë%‘Ç¡aƬ^½šòåËS¾|yÞ|óMœœœhÓ¦ [·n¥D‰´lÙ’çž{Î2¾ÉæÍ›¹}û6}úô¡dÉ’øøøXÍ;55•Ý»wãïï··7µkצI“&ôêÕ‹ãÇ3~üxœñóóËtZïÞ½iÛâããÙ²e Í›7gýúõÀÝ.£*T¨ÀܹsÙµk/¼ðk×®ÅÃÃÃrS¯k×®™P7nÜHÏž=9uêdÓ¦MDGGÓ§O\]]iÙ²%*T°švܸq4iÒ„;vX“>>>´k×.]V®\™¶mÛ²wï^}ÈÁÛÛ›J•*lù¬˜9s&•*UÂÙÙ™#GŽàïﯯ//¼ð‚%]fŸ!÷Ëì<²v¾–-[Ö­[ÇÏ?ÿL¹rå°³³³œ_÷rqq±´ruuÅÑÑ‘:àççGÍš57n'OždÙ²eÀÝ–T*T`øðáØÙÙááá——S¦L¡dÉ’8::âææ€ƒƒ...¬X±‚˜˜FEµjÕxå•W8}ú4111ÄÅÅQ¯^=^zé%êÕ«‡³³³åa‹´òZËóÞu^¹rWWWºwïNÕªU)W®ñññÆÆ‘ìQˆI:u¸yó&»wï¶LKë¹V­ZÌ›7Î;3jÔ(.\¸`y¢öÀ¬Y³†   Ìf3qqqVóOJJ"44”7Þxƒ &pùòe–/_NÁ‚yå•WprrâÌ™3,]ºwww^~ùeÚ·oÏåË—Y¼x1666TªT‰ØØØtã, 8ÐÒ-Á¸qãØ°aNNN<ÿüó$''sìØ1K †jÕªYº'>|8p·ÕÂ?ü@ÅŠÙ±c5²ô·Ü©S'ê×¯Ïøñãùúë¯éر#C‡åÂ… Ìž=¸Û's@@ýû÷çÎ;ìÝ»—uëÖakkk)oÅŠ3ä¹xñbË:7oÞŒ»»;¯¿þ:NNN\ºt‰ÐÐÐtOl‹úè#ÆŒÃÏ?ÿÌÉ“'--Œ–-[fõ3ä~™GÞÞÞÎWooo0`çÏŸgúôéØÚÚ¦;¿ÒÌ™3‡òåËwÇWZ²d yóæeèС$''sàÀÞ~ûmànk«´A§¿ûî;àîøÁÁÁÔ¬YºvíJûöíxÿý÷iݺ5-[¶dèС|øá‡Ìš5‹“'OZÎÝáÇ3tèP¦NJbb"›7ofòäÉé>êÖ­›!ÏI“&YÖ9kÖ,Š+F·nÝpvvæÌ™3Œ1"]+.É>CéÒ¥Í 8;;?±…Œˆˆxä§oEr³ËÍžgEDDÄ3·ÍOª™3gbooO÷îÝU:7´Í":7²ÍÙÙ™ØØX"## Ú["""""¹‡ºQ‘‡æææ†ŸŸ«W¯VeˆˆˆˆˆˆˆˆˆºQ‘‡®ÿxy¶©eƒˆˆˆˆˆˆˆˆˆˆˆäˆZ6<E‹Å`0`0°±±ÁÆÆ&Ë¿3{–ÿïÿÛl6§[çƒÞg6íQ–¹·YM»7¿ýpðàÁǾ/¼½½)Z´(Û¶mÓ)""ÿSµjÕ²|ÿÆ,ÿ¿ÿšáA×Y}Ÿ[ûÎÍìo+a~ÀuBf×*Ù½>¸ÿïûËûË/¿<ö}áççGÙ²e™;w®L‘ˆZ6U«VeÆŒFBBB aæÌ™|úé§têÔ GGÇÌ+ñÿnÜ{Ãàþ›h¸wÚ½?Þï_6³÷™M³öʪlÙ)÷ýeÍj›2» a0øðÃ)R¤HŽ÷eåÊ•y饗2_¦LZ·nýG-Z´`ĈäÉ“‡?þ\"YèС{öìQEÈ«]»v„‡‡`ggGDD:tˆ?ÿü“É“'ãææ–iz“ÉdyFËÿ÷¾õ!ÓW6¿ÿ3}ÝWžû¯e²zˆ"³íÈê'«`Š «V­z,]¶5hЀ6mÚd:¿Q£FŒ5ê9ކ ÆêÕ«)X° ¿þú+ùóç×É%"""""¹’‚ ™˜;w.#GŽä§Ÿ~¢xñâ 80Ó§õ²ú!žÕï¬nÊ[û~ÿ´œ¬²ÉN!«€Ã½iýüüprrââÅ‹9Þo+V¬`ܸq™Î/Z´(ÕªUûGøøxxùå—u"‰ˆä2ÁÁÁ´jÕŠI“&QªT)fÏžõË©û Ö‚ jÍð ïý × Y\g<އ²šnxÀº³Û "MPPÎÎÎìß¿?Çûmܸqøûûg:¿téÒ4lØð=v¢¢¢¸yó&={öÔ‰$"""""¹’ºQÊD||<ÑÑÑDGGsæÌ>ùäªV­Êõë×yë­·øöÛo9zô(@†'³`xkÝÜßµ®–²›ÿãpÿºÌf3ƒ!]Yîvï¼4/½ôÛ·oÇl6óÁàææÆáÇùá‡øÏþCÅŠ‰ç—_~!,, 777:w·7ÑÑÑxxx0xð`š7oN… ;v,õêÕ£yóæ899qáÂBCC  $$„¹sçrêÔ):uêDñâŹxñ"ßÿ=çÏŸÏPŽ•+WZ]®\¹râêêÊíÛ·‰‹‹`Ë–-¼öÚk¬^½Z'“<‘>ýôSªV­JÞ¼yqpp`Ë–-¸»»óÜsÏqåÊFÅŽ;˜9s&U«VÅÞÞž°°0ú÷ïOÓ¦M2d7oÞ¤P¡B„‡‡Ó·o_<<ƒÁ@‘"EˆŒŒüÿ¥ ß~û-+V¬ uëÖäÏŸŸqãÆñÛo¿„½½=;w&99™‰'²ÿ~L¦ôq3£ÑH@@¿ÿþ;cÆŒaõêÕ\»vÅ‹C¿~ýøë¯¿èÞ½;gÏže̘1\ºt‰Ž;Z-‡µåèÞ½;áááŒ7Ž3gÎXÒFDDP @\\\tÉËÑÑ‘1cÆ0mÚ4š6mJTT={öäêÕ« 4€Í›7óþûï3`À*UªD=(P ?þø#}úôÁÛÛ›¾}ûf¹®ÌòyšbĦOŸÎ°aÃpww'((ˆ… 2|øp\\\&))‰=z°eËlmmÓ­ÓÁÁ°hÑ"˜={6'Nœ`ÆŒDEEñüóϳ`ÁÆGdd$œ>}š#FX-‡µå\]]=z4;wî¤S§N–‡S6mÚ„»»;^^^:DDDDD$×Qˆ‡˜˜Èõë×™3gÎCÿÈ~üÛeÉÎú ,ˆÉdâÒ¥K–i‡æÈ‘#ÀÝ1ÜÝÝ-- ìììðððÀ××—¯¾úŠsçÎáàà@³fÍÒå›’’ÂÙ³g©_¿>&“‰Í›7ššŠÙl&%%GGGŠ/ާ§'5kÖÄÆÆ†ÄÄÄ åÈl¹²eËâààÀ²eËHJJâôéÓ–~˜cbbHNN¦X±bÄÆÆêä‘'ÒÕ«WY·nƒ b×®]„……±cÇÚ¶m À…  ¢X±b8::âááÁÙ³gIIIá»ï¾àèÑ£+V,ËuYËçÊ•+Ú òÔ3›Íܺu‹“'O>T‹¬i­îm…U‹„Ì‚ úûq0üß?™e›Y€$³A¢ÓT¨P[[[Ëõ@XX¿þú+UªT¡páÂÌ›7{{{Ê”)CÅŠ6l»wïÆÙÙ9ÝCi×rÇŽ£eË–ØÚÚòÃ?X®îܹƒ››¥J•¢hÑ¢4iÒ£ÑÈ­[·2”#³åêׯ““ãÇ'>>žˆˆêÕ«ÀñãÇIJJ¢R¥JéRÉ lÈ\]]9~üx–?¤³óCþÞ÷Þ<ÈnkˆÇÙrÁz9 ¤eó07$²zúÒÚÿiÒÞNJJ²šï­[·Ø¿?³fͲL³³³Ã`0dxZñ~Ÿþ9Õ«W§N:4nܘ‘#Gf¸áœœÌ’%KØ´iS¦ùd¶\µjÕ0 F«åO hˆ< RSS-''''O&OžÌìÙ³>|8_ýµÕ´i7éÒÜnf7‘§—— Ìt óÔÔTlllÒÝPO;×lllHMMÍr|†Gm1™ÙuÉã4XíVÉ `Îp°v UÀáþk/€„„«å¸yó&[·n¥OŸ>–iyóæî²@`` -Z´à7Þ yóæéæ_»v¤¤$BBB Í4ŸÌ– ÀÆÆ{{{âãã3¤KNNÆÙÙY'ˆˆˆˆˆä:êF)ŽŽŽäÏŸŸòåËÓ«W/¸ÿ{ýÞ÷i¯äää ïÓ¦Yû;«WVù¦¤¤’<²›ßÿ_.ÅêvYÛž•ààÁƒ˜ÍfÊ”)cu?lÞ¼™_|‘:uêPºti¹qãGŽÁßß___^xá«i{õêÅñãÇ?~<ÎÎÎøùù‘€³³3E‹¥@ìÞ½¼½½©]»6Mš4ÉOjjªÕå6oÞÌíÛ·éÓ§%K–ÄÇÇÇ’¦`Á‚8::rìØ1L"""""’ë¨eC&ºuëFJJ ÑÑÑ„……±råJ<<<¨X±";vìàúõë–›÷·VÈllkO*fgðÅÌžj´–׃Š~ГY ™YÚµdÈì)ËÄÄDnܸA¡B…Òõsæ÷ß§@ôéÓ³ÙÌ‘#Gؽ{7óæÍ£K—.|üñÇܼyÓ²î½TµjUZ´hÁ­[·øóÏ? ÇÎÎŽ*UªðÉ'Ÿ°jÕ*æÏŸO§N5j”å)ÉÇg(GfËÍ›7víÚѰaCKà pᤦ¦¦›&ò´9þ>>œ1ÇDZë—/¿üò]OHHåË—¦>´"""ž¹mѹñtns­ZµÒ%Ðð°A†,¿ïÍfÌÙ¼xÐuHVeÉøÝ·‹¥ÿ\øÿï­]3üñÇL™2WWW‚‚‚²½­>>>-Z” .ЧOÊ”)C‹-ž˜cbÊ”)¸»»óŸÿüç™>7œ‰%22Ò€ˆˆˆˆˆäjÙð\¸pA•kÖ¬aĈxzzrùòål¥ñöö¦E‹¸¹¹qöìYfÏžýÄl££#/¼ð!!!Ú¹""ϰ¤¤¤ Á…¬ ÙmÕÙ4k×@Ñ–²Ý}“e9¬­Çhø¿€ÇƒZ@|õÕW,\¸çž{ŽC‡e«œUªT¡gÏž*Tˆ£G2|øð'æxpss£^½z¼÷Þ{:9DDDDD$WR°Aþç®\¹Â?þhé);öíÛǾ}ûžÈíINNæçŸ&22R;WDä¦JÈÇ3qâD®\¹’í4K–,aÉ’%Oäö$&&2sæL~ÿýwí\É•l'ÂÎ;sͶ$%%±eËíT‘š?~®Ù–øøxfÍš¥*"""""¹–ª ÷óöö¦víÚªùG¨eC.UªT)ÌÀ©\¹2+VdÛ¶mOEÙßyç®\¹’«žf|–¥¤¤<ÖüÊ”)£Jѹ¡Ï‘§øÜˆM+§Y{KDDDD$÷P°á°bÅ V¬X¡Šÿ™ÜóÎ;=zt†é 6ä&“‰R¥JñÕW_qîÜ92RRR8{ö,õë×Çd2±yófªT©BXX‡²,Èþýû‰ŒŒàÕW_¥råÊlݺ•!C†àììL•*UØ»w/eÊ”ÁÁÁ:`kkKtt4G%99™uëÖðâ‹/Z]®J•*œ?Þ2¦„Z5än6…LF^sq¦e¼xØš¸’”ÌÒk7Y{ƒKÉ)¤šÍ™¤f^®žJãš)¸åƒè8X¿Ó† »ÿ{ocÙuÖýþÖZ{8cÝÕ“»Ý¶Ûvâ!Nrƒà’^]„È{ùÄûÁ  ". ])(¤H  _øö¾ ñ&!. crÃu&c»»ÓÚS5×™ö°ÖºÖÞûìsêœîª:ín;ÙÿV©ºªÎžÖð쵞ÿóüÅõ ™¢þ,¨EKû{,íïµxsnÃÎW;O ô†ÀîQ9úôéÓ|âŸà¾ûîãÕW_å§~ê§øÀ>ÀüÀL4´[[[¼ï}ïÛÓ¹oÕy*T¨P¡B… *T¨P¡B… *TØ/„7$ÀµOBE6|‡@)…ß÷oø¹Ï|æ3<þøã¼ÿýïçƒü ¿ñ¿QHŸ¯|®$IHÓ”‹/ríÚ5ž|òIΜ9Ã_þå_²¼¼Œµ–O}êS¬®®Ç<öØc#çìt:?÷“?ù“x^5¿[pÔSüêÑe¾¯ÝÀÏÒ±N>]Yà¡zÀg®¬q)I'{xÑòÑÿ–ð=Y¼Ì¦]†ÿþ!Í™»,öY«ë“S¼Ô¢åÐÿihú(_úÒ—ªS¡B… @ØÉ¶ IDAT*T¨P¡B… *T¨Pá- Y5Áw¢(â•W^áýï?KKKÜwß}?÷|€«W¯ò?þÇÿ Ñhpß}÷ñòË/óÞ÷¾—3gÎpòäIî¾ûnΟ?Ï£>ʉ'xâ‰'8zô(_ÿú×øú׿·?üa._¾ÌÕ«W¹pá›››üèþ(µZw½ë]¬¬¬ìºö´Ï=÷Üs?~¼øyqq±êÐï`üè|k„hÈá Á÷µüóí©Çþ—ÇÍÑÃóà‰‡ ?ø^=õØö÷Ø¢!‡ð ñ°¥ýøÞHƒÇ{ŒK—.ñÿø»ˆ†~ðƒüË¿ü ó7Ã÷ÿ÷pôèQ¾ô¥/ñå/™w½ë]#ŸÿøÇ?Î÷}ß÷ñÇüÇ|ô£ùÛ“O>Éýѱ½½}ÓóT¨P¡B… *T¨P¡B… *T¨p§Q‘ ßAø‹¿ø Ÿüä'y÷»ßÖ£Ž×V«Å{ßû^~ù—™}ìcüë¿þ+Ï=÷ý×͵k×ø¥_ú%~æg~†{Ïþó\¼x‘_ýÕ_åÃþ0õWÅË/¿ À¿ÿû¿c­åk_ûà²þìÏþŒ'NðéOšû±ãÈ‘#»îoÚçžyæþîïþާžzŠ_ûµ_#MÓª3¿ƒñã‹í]DC_~|±5õؾOï"rx|è{o@6|¯ÙE4ä´ßgötÿGåÒ¥KÿöÅ/~‘üÁ䓟ü$?÷s?À•+Wøáþaž~úé©)f_ùÊW˜ŸŸ/~~ì±ÇøÍßüM~þçžÿøÿØóy*T¨P¡B… *T¨P¡B… *T¸S¨´k¾ƒpåÊ>ýéOïúýç>÷9>÷¹Ïð»¿û»»þÞëõøã?þã]¿ÿó?ÿó‰×ÙÜÜäñG~÷òË/ó©O}j×g?ö±íés_øÂøÂ¾PuâwÝD2ë7Ý‘¾4wãsßèïÞMŽõæ÷vÿN‡Ã‡ßð3.\!&ayy™ßùßáî»ïFA¯×+þö­o}‹Ã‡óÄOð·û·Õ ©P¡B… *T¨P¡B… *T¨ð–Â#<Â#<Âg?ûYƒPe6T¨Pá6cõ&™+7úûúöϽvƒ¿§796ÙÚÛýãßà=ïyO>ùäM‹åÜïyÏ{è÷û|èCâÃþð®¿âŸàgög9uêT5h*T¨P¡B… *T¨P¡B… *ÜXkIÓcÌÔ¯$Ixä‘Gxê©§˜›FøV™ *T¸­øìF‡®,L”RJ¬åsÝ©ÇþÃW%ÿýCšIÉi _üêô¬ˆ¯Hÿ«AL8Ö¦ÐùêÞˆƒ­­-~ý×üã?~œ—^z‰§žzjêçŸ|òI~ë·~‹v»Í{Þó^}õUžzê)¾üå/óC?ôCüýßÿ=J©‘ÌpD¿ýۿͧ>õ)>ò‘ðøãOìðzãÍ…‹ÉÚb-3 Îyga„”vÎu£Mæ´“A@š¦˜Á€4MIÒ”Á`@EÔëuêõ:ZåùììtñŸÓ'O±¼¼Œ6åùÄiBب³rt…A<`Ðï³ÓíÐlµ‚€f«Ewg‡õí°?# ¬pÏ£<…ò<¤R·©q@;êÈSÆíÍÖAå>+Þ9]-¾ç£¤âÄñ(¥PžrŽU!JâyJ©‘~O’£ ƒhPœ×÷|jõZáØÍÇˤ{Ìû$''FH ;$$´Ö¬­­²o‡5_™dÉǰ1mÜóØ4ÅZã|ÇÐlÖYšŸç葚ÍfÖfØ“OÍI,ô{}’$¡ÛéÐï÷‹Ï— Ïó9Ù!R8ÂØZã¦\‰ð”Rfó.û½ÈŸC#¥D)¥¾#›½¾çµ ¤V«eNóLƒ]Ø]Æûõ×_g}s!%©1¤&›–b¿",™C_177G³Q§Ù¨á+åHa‹ÍPÑΙæ{þs>ó6,ì”±…³?ÿü[í „@Ig«9ÙªB!¬Ê÷PYßZkét» ¢[[[x¾‡çûœ:zŠcÇŽÒl5Â`8N1©û6zYåqt nÊvFfý(´¶£±6Æ!Ô€fK³r¤Åü‚±Vc­ãsŠíu6$ â¤ÎÕË çž{sÿ©y㢠ÑxE!C –$éÇ;¤q‡°ÞãÌsÜ{ÿ=ÜdiÉš˜Wߨá›ßz•Õã\º$¸|u“Z¨Ð±Dâ!QÙ$°oMÛˆŒ¼¶©fu­ÇV§Çú–ââËšûîYäÌmŽÝõNz0b¾v••C^zAòú+ÛDÛ×ðô£…RÐhÖÊg{{W_»D?Iñ!š€#'ÛH¿Ã ßÅš$ºO¢!¤Êl¨P¡B… Þ¤7þ~?£Ad$ƒhã1è׸v Î?ßçüÙ”Õ«M¢AOÍáy-,ª!ݽÁs <ÁÁ|F·&³aæÃßÚçÊ[8³aÖÈxq+2ö™-Plä#ÎŒý¶…µ¶Øœí·]óëN;~Öëïéxc‘R1Ëfrd½r™ ¸¯™Æžd–Ì%Äwmfƒ›j†ùk‡Ù}û¸‡<òÜe6È,³mï™ .Ê{¶ö·Œ90³ˆÕÇ377ÏÖæ:Zkƒˆ8NHSRÏS¥{Úÿ˜›ælŸÅ&ï'3áfNýYÞ[î\wn>8§`]Mæ‚T’8ÆhƒÂ9Ù¤,ˆ„rTrþÚ´6ŽD0nt–Ûùu°‚4M‰ãÄ,Ö—$)q’Å ÚX‚°†’DúQB­Þ ÙžG)圣R¡­¦=×&^‹¹øòË\¹z•Å¥%–-³²²B£Vckcƒ$ŠY˜_À÷}R­±Æ‚TÔuü0Àx ”$ͦoFäQÙR*¬FµçýPnK)¥s~¥\†ƒøÅçÆÇSš¦ôûýâ|9‘ÿ}Ü\8Ö® Ò4e}}¥TæW»îEL±%. `˜Ù`ŒÙÓüº•ïáƒuD—ÑcQØÐnµXY^d¡Ýf¾ÝFZC§³ÎI ¥)¥žòð|¯ ¬â8¦ßïGQÑÖÊó°Ö‘HAÙ:¹ÃÝe’’‘ €5#ÄOÑY¦&-2´FàhãÈ )Ív›f£Qð Æ‚ÖnFIc¡Þh0ˆc®\½J'»_ Ôjuúqä™"W#°xRÒk4êuæææ|OI¤ktvßé(©£õI3N~ ÂݹßËkÊr†Dyî¨Òùf]¿ç÷ëÞ‹£$•’ʵ‡Ê²› ²Á‘Lî8÷þµÂbuJEôúŽ|Šã˜¥¹6ÇOœàÔ©“„µ€$u¿·Yf…K,{ûmeÖ|,z¸´e:—-§-:uï‚(ê mŸåežçáwÁò‘U¤`ËT¾±`MHg»Æ¥× ÿù.Ï|C³~Ð+UCz)$i¡Í6‰¾Æ]w78q²Î™wXxg“¥%ÁÆú6/¾œðâ .(®\9Jg[¢uzÐÆj%kY¶ªf(Mðfîÿ¾g´„pö  <^{1áÊ+šíË!½µy^œ‹yø±EŽŸg~é* G/Q›ßâås[tÖ¯&‡ÌS÷ÛH¯RÔX-ÙX[ç™§{lm x쉧î»Y{ 6°¢‹Í^ÙP¡B… *Ü1ïwi&òE˜Gªº;ŠkWθp.e}µ1‹4‡i4aL¶ °ÙÂmŠ#]dx½µƒz« g5ö-év;Ɇò†d–§s(ßÚã}õ_ÉÙ¹_²¡pˆdÿöç0µYtŸt›´±ÈϽ´éŽŸõú{:^æÑ‹ìûøüJÉ©ãâ¶“ 8\~ד ³Ì_˨òÇÞe”f%\ å,$§™G¹lI«Õb~~žng›^¯C¿7`m}ƒÅÅ9|ß#æÆœØ=‘ “¢µßN¶4ãò¬`[8q†ïåbjÛ[<_Æ$°l¶ÎpòF–8‰H’­ãÅ.оäUÊÛ%=徎ùÅœCo(2A_Êœ.bxè„“ NS¶wºŽX’(MYÛÜbaù¡RÎV*I <676¹|éýn_*6V׈ú}6®¯øëׯ":r‡v½á²"’„ æ„5¼ÐG+…ÎIëK鲯2œ/l)~³~Éß·ygædC¾~Br3žç8]Ç¥’nDŽ•ïC)…ïù4ꣲ&sl§éð~ÊQçÙeý3ŒRwY6¢È|(_oÙàžSr7#ÆßÏÓ2¡ö:ß]»¦ÈŒèЩžËh¼À£Q¯säð2 í­zA¿Gˆ}çt—’ZøÊSE;åã<ŽcG¤©{æ,ó!¬…4"+ÅÉŽéÂRç„C¾Î_Wº5€œã>ISÒ"ÛL¾ÌIDÕÂ0hÔëÅ|AÇDIB'XÀóúQÄÕkרév‰µF[ÐÒÁå{HáÞjž¤QD=ð˜oÕi6x š$ŠPJò9&“*Ûƒ\r*—N*?_APŠéRX“²³Š1!ÝÚMÌhG²{ÆÆ–“ŒËÞmÙ`JÆØX›’ÎVEƒ˜^¯GÇXù÷Ä÷¾ùùyææçéö»Å{Úó|·r.¤ߎ"Ìác­Sô,ÙBg΀ÕkpÒ?j‹ùù”‡ß}„÷¾o‘#wmà×"¬LŠ÷Œ!BLì1Ô¹øbÄ7¿¾Í…³°¹àqœ v£=7ŽL4Ù&J/sü.É{ß×â¡Gæ™__¹Îõ«–úÒk¼öj8>…IÁ¨L X`­û’Bb1 ̘´á[i!3 J'çeŒ"M iªhÔj\~Õãò«oМÛ&ê{¼û‰Íùyî¿?àèÑ/ܵÃ+/¤\8{…Ímb}ˆš¿ 4i4Ä‘Àš6Ö:ln®£u‚Ö-ŽŸ>Žj{h³ƒ•1P‘ *T¨P¡ÂíóìÚè %„kƆDQ+— çžxñ¼`s­ä0ú!Œ Qž‡0 SÃtÂÁ-Ëœæt7s'ÍŒ‹u!ßj»œm3çNe6 eð%–kñî×w¼3ÁTg鞎Ÿõú{>~ÿý_þ¼´Ó¢9÷2.r'ØÁkˆ™3kÄ-™GwrÏ|{Èç­5™¦»=¨ ¶ûÎ,r‘âCGÕp ˆ½]9C͆’É/´ç:L:Äêõ«´Ûm„ôz=ºÝsíÖÄk–í63Je™ŸQ{žU5fsDÉ‘Yê;ÁPî~6±»~Ø4'ç®»Ù¿!–"XÏúRL~¯¼Ù¿Io Há1ôXߨ$IR´ÖN‹|¢‹'´åp^”ër!‘”ò‹g,Ö*s®{Ê9ŽúÑÀ‘˜™­â”8Ùv÷”¤ò‰’  dVoÂÕdPJ±µ±‰D0×lNÎA¿OÚ³Hc©!ÂB·ÛE6[$:EÇwŸ:‰<)î{ø"D$ÚùœÆ[OÎfër§”ÃöÊåyÊïÔ`ùp£5ˆÍ׆S†’»–¹–ïûE !@§ Q•!‘Õ@P™=ËÊÈ®¡<…Ô!Ad2Y>B@ªS‚ pÒ>Y$ùø\ÏΘԆÓÈÈIí¯$޲H{‹5“¦ŽlŠ#‡–9´´ŒIbzÝX ÖP«……ÜQNAPdŒDƒˆþ O;"ÎÕE=‡f«éÚ »§4I2‚! ÏìFy®g?î| %Í2„´6Ù~"?Ƶ—ç¹qS¯×ÑZgL.ƒ#5†8Nðƒ°Vgck“KW®ÐôÑÖ’ë2>DVŸ%Iñ|_JêÏÜB›@IßGIƒ)A „³_ŒÖY(Krå™ãc8ÿ®”"5zdœ—ûµLäÒR¹­Ò9ÿ=©Öî?)3;Fg×H’$ËÂr×ñ3IµüZ”ÆÉH#c`ùð!¶¶wØØÜbÇDqD'YYáôéÓ®æŒRÄI‚çù#Rr`j”ð{[ì}Ê_6ϯ·C‚2'˜µEç·F“¦[Ì-Dœy°Î£+ŽÞ ¨]¹…µiFHâHoëcuƒ­ Ÿ+—ÿùˆgž†¤?Oÿ)À†(ϲ³³‰Ñó‹†VÐåý?x/>jj¯1Hçž¹Æ g#®]nòú+§ÃbE «¥sÜK]’ËêNˆ·f¸@$øYÍIàK<åè°8!Ö×<¾ú• ^µÇ±“†'ÞŒ#Ç5ᣯsòTŒ±¯óÊK6ÖvHz]š»ˆ¢¬‡ICjþÛ; ^:Ÿ’&k—8yºÍ ¿µÛî=Ry€*T¨ðÝå܇s¸Â[ÊWÿwó¢¯"@ª“DQ“«—áÛg#žÿÏÛëK(yß[¤^_¼Âq£ò¨=!¦Èmˆ"²ç ¢ÅwPfÃA7þ³FF;l?øÐ›l3‘ n#9&‹²o‡½¼É„Sý“Ÿõúû=þà}8î8Ýlïe\ÎF6¸e%{ (nÑ<¼# ag’‚›¥`ùAÉ™mÈ]Ø`.{³·àaV€‹*Ÿj¿ÄÞ_ÐEcVˆµÙlR¯×‰¢¾“‰bz=÷ÿ0 JsΖJ›ê>ï¾hù÷ö†7—GØO_ŽŸ;€n¼ˆÌÛÓŒ}Î`Þe×Ívü©Æ¥šÊEÄ(AbíXëØÒ÷rMè±ÿÛR…cÙ銎#<¤ôèõ»ôz=êõaX+ÿã™|E„vÉnåzÿƺ:yöWÙ!lE]<¿” +ý(¢ÑpNÚ$MI’„v{ŽC‡S«Õ‰ã„0 ©7Ô ”§ Ù')k««`-ç¹Hk툹Lƒ?VŠÔˆ}¶66IãåûZZdqy Y ]Q뢮¥YAÎ’le‘<.#r“ù+¦“¢DДk3ìÅ^޼?öÅšÛ‚ŒÉÏS.-„ÙÚÚ*¢Ö‡…­mižY§½?–µ`ŒAf¤£òPyfG£ÑÉèv»»¤„¦Õš˜êD.9¬±áˆ)!åI‰úÔk-î9}7‡——‰z=b£É-“TR¹öBâù^V¨Üdòpúý>ƒhP"<ã>aâyžË>(‘9Öè›OW"+-$V´ÔçÀŽb'÷•]B¢¤B RŽØð}GäkÑ©.²-»½a½ŽòV77¹zýÛÝ®#l–q—(1“¤øaÀ\³Á\³N(-¾amÑ~EFŸ‘™ Ö¢›F|•³ÆßKå÷ß(jvÉ(•תyV¥ØÇöLŒ!cM!—–Ï…œôCL6×-Ãém-XáÞ]¯]zƒ^@¯?@yŠö\›3gÎpìØ1ú½a:òGPhì.ûù¶ÜÿŽØÙáûÛÊÌ6@šŒ¶Xb’¸‹f“…exà¡y–ެ!¼-„×zk°VaµÄÚ%Dq›k—4çþ³ËKç=ân_žÄ“+`}–ÎÞeî`‘£wIŽœ\áïª3¨ÇµÕ.Î÷ùâß]£·Ñ¦¿bÍQŒi¢±áHSŒÈHÙ<èè­ß#y-!·†󎼶h«ÖCˆ9¶6ÀÄ5ºÛš­õK<ù¿¯ðŽGï&ð¯óøû<Úsë\8·Ãêµë¤:Dë6JÍáù-Œö ƒ6×¶éõ×Q!`ÑÝYûº›7• «B… ß5ûülE8Tx“Æ‚-¸Ò€1 £ôu^ÕröÙÎÂÆê"Ø£øÞ2A8‡R!ÍV›~?ÂH³”ïI.!JÜ$Ü*%¹K»ó6¯y÷‚=MŠãÎ;<…sðÌ2t˜X²ËÁ)ľÆB^³1ê ”cç0S™b¢ãOŽ,öÅ0’oOÇï«nÑñû}ùŒõ˜L6°§Œ™¼’ã¯Ä¢œ£úÅð„.£´Ë»y“qxçÖ ³ "Ó÷½E™!ûŠŽ!å îzåΙIޏRTíTÛ½Çþ#‹µbÚl6YZZæÚµkaIbMšê¢XièZ¼'9êLß%õcGúlÜäê ¨Bü¦ÝfGÏgoR Ó2–Ù`íÔ¹3ÝùÌ=ëèé*,ÈãL¨ QNô°yñÖ’”…-"óöÐc5 †ön”lȲ#­ë!Rù™¹ÄóCÂZÃ9;K²(EÍ"(¢”qf¡Óë"„¤Ýn#ÕPHk’OyH)ÙØÜ Ùj±²²ÂÜ܃Á€f³‰”²ÐrÏïÕÉ ÉÑ÷…tç”B&1W/]ƦÎÁ¬µ&Ö/#$Zµ0 Öna´fÐë³½½Étã{ƒ¾tNL+@e2yJŠBjjH6Lpcîl(K…M³J¨ƒÛ}ð\+~$Û.ËTÈ•åõ2Ù`ŒÆhMš‡^+ IDAT¤¤©.ž-MSlšEÎÆJ%GÖ³Æ:N)°Fa!OXÖúÏçF'ˆ¬ÏËQïål Ö0Æe) Ö|%¨‡ í6‹óóJ²³µITæ¼üJ¹ÂÜåqÇNN,M’$!Šc—-‘e{žG«Õ¢V«e…£³FÌl‹€]ä¼s¦— W *“e2! òÔh×öÆ"<¨ÕÉà)å8Â蜈tû‚°Ñ@¯¿ñ×W×5œ41nØ* ÒææXhÏ1×jÑ=LÔEZƒ±Ú¹5³¨|‹Ì²!†¼Ð3E†òØÔY¦K^ó£Ü§Æ˜Qk^"ʤSy<” dÄfé¼å7ƒ1HëÒ¸I2)'åûEñn›e¨XᤪŒÍ²?¬-2Ƀ˜n¯ÏV§ B†!KËËœ9s†V³‰ô$Ív“ꢶ…ÀbÒ4+E 2œ’”éÛlãl-X™½ë¬ëCAÊ™4ÅÒÃ÷#Ž©óð£5î9£˜_¾†ô®4HÀ‰Ñ kB-â¤Î¯¾õµçŸMØÙZ¢æAˆ6:•hÝë5îºÇãÞG"y-*¸Î«—ú\8ßãËÿ²Ã+Û´j iõ”СQÊà’kD1–Fõ„s[šß‹e–$ XÈdŸŠš!Ætvj z1—^_“Æm?ÆÉ“1õFƒV{—¾½ÃÅÞÀØ%<á!Uˆ¡ô=¤iÑ列v‹4Þak[`œj\E6T¨P¡B…ýxžo³£ø;¡ÙÄd¢Áäk¢Ó퀫W,Ï|s‡³Ï Ø^?L³qš4m„óøA!%ÛÛz½>Zæçæo¼™_Ée”†‘~¶(&x'ˆ†i¤ÁÛ…l˜uþ”+Û!°¿š ÃÍb$¢mœl¸ÙÍ_SŽO*{ãvº³2>³(γäöcçQr/Ä,ŠÅ¨Öÿ DË)Ï¿W_õÏŠš¥Å­™ÃûÌlY›JTö³Ù0%‚t¨ç}ãö¿™ýÌ#Z¥”Ù;‚çÎ襥%7&¬%Ž#ú½.:IãO‚¯K óZ\¤†YnQµ€Ð÷ôqdU~J)ýƒÁ€4IŠâÇR´µ^€RŠF£Q*ä]Ê„šP×¢ü칬N’É–YqœÉú0šº$… ÙlaáÏ#óóc<ÏG*!$ýhÀå«×¸|õ*çûŽˆ%$ž’Á¢hÔk4µ D KÔïá‹|Lä6ÆbÄÕÚ82„aM’2a0JP™ŒÔÍe`l–ѱû}5šÉ@Q÷c('›S¶Y†Æ”Y¨ÇꋉüåiA#ùí)—É’µg^"¯Ñ`¬EgÚ:’"MSR­i¶Z9vŒÃ‡³¸¸èä®2­†˜T;y­"ÛK‘èX‹´3d'ϸƒ¶Ü…Òe®P¶E€UŽ´Îl¥ÕÆÑai9æÌóУ Ë„õ“ÕzŒËl0º†IçxíbÂÓ_]çì·,ýCÔ‚£HÑB[ˆ¢iºC­sònÁ;]äžwhNÝruí:ko xú?®ó­oXz;‡ ¼»è÷šH ¬F ƒ¦?v— ei<¿E aµ¥Rn¤°%K"pÊÖø¤Ú'MžZáÜs]z½U~¬Åéû%‡§ÙhÓl¼WxååËX­y¤Ú['[øá2içÏnÒéî`+²¡B… *ìÕYù]ß·êTyÔaVwU‰1!IÔâò†sÏõ¹xAÑÝ^A'Ë$¢Éòò1,ªXä(OÒžó÷Ü3rÆ<¸£­T ùŽí•ÅôŸíMúø€Å7ìöà‡– í[ûÜ“»¯ãÇ‹ŒïG+K9.—6•v¢,œVÐq, TȲ3c(³"­ÙÓñû—ºÇ .§"ŠçÎuê‹Mt¹¼—âã¢(ò<ˆu—Ëžaú˜¹ÙœÕþÜg[ž›uð{™¡¸£Ûôï'³(ï}›gL¶o“L¤Mw¸‰S~2Ù`Êó<ËjF »Ó.,.rùò%´Öt:]®]_Eyª$’\v¢McÒ=¢¨Ë ŠâÂŽì°¡29³‹ ½ÿ¼ðª3½6‹\ô¼ s†Ù‘¯ñf*Ë ²Èg9”)KÅ µðÕ.2W`ÑiJÇX£ ¡8Ζ¸®`¦Ö™TIV+ÄXƒï+¬Õ¤©ÁZqíH_§©:ÇÂ0Ä÷?@JEX«³¹¹éž+Mñý€Z­ÁÒòa¤TÔju§·/e!çX´g–åàûþÐIWŠ0ϵê¥tºçÆfQ½ŒÖãÊDŠ‘¨R9òzvY©Öî^mR÷~>8ûüó¼òòËxÒ‘BºÏÎ6¾ï$I£QwŽm¥|À‘:¥%½(âúµ«¼øòK4Z-~è‡~˜ ¡ˆQöŽ© ÍL“~Ê\»}ë·Ý÷3©U>åò{(ewe=ä„‚)H.»«u^žo¹Ð4›”¯Â™œEÍçëkׯgzñ©X<)<ÉB»ÅÊáEÚÍ:¾T˜T…«mRL”îB’$¡³Óq™ QDšI{I) ‚€f£A£ÑÈæ–_rªï–‘wÊ‹ªgÿׯ¢%I5Q;ºc”]ÁælŽyžÂ H’¥Ù‘kFÞ€ÖÉH¡Ó 'wb¥“ͲÂ/5¡tº„aÅ¥FA*8ÒBÏày¾Ë8ð|¤T,.Μ³:s(ºgPY¤/b´6Oþ%ÆËîù]¸DÊ0¢[ŒÔ¢:µmA*Œ÷Ëä1᜖yû[k¹vå*5?È4å Fk'—b Úh¢8bkgËªÎÆM”È¡„‰RîœI‚ISšõ:J@¬Ó"¢:+LrÆáö³[¹6Ér´î™»Ý.QeE‡ÍDnR”гO’‡*×…š´~ÛOf×4âs4»Bƒu5Ïc®Õ`¡Ýbi¡M«YsÂÆb=¹kû((Ë™A4ˆˆ¢—M†añ•K™å‘ý¢´vωW€Q;c ÚíH†^¿ŸIÍ)„’…Œ—§<—Iä;»'©+¤.%I’`-a(MÙÜ\cck‡nבH´É3Mœ$“#àj¡O»Y§î+iÉXXÑ©Ë^06“NÊî?sdÚ‘Ö+;ÿí.»]Îj)ülÍÄ1““ 埇cȶÄÝ“)êù:ù* G·5¦È˳3#i)2²Úd„¨°”"ÈHÔN·K”ÄlloaŒ!¬ÕÂ>øZíva¯sº?'Im.ë”EÏãÛE ŸÃÞ¸ºÐ›¹dµâàÕ¾Êõ~° ƒDX‰KäiIuéw9z\ñàÃ-ŽÝÔ60l€Ïs}–AšZ¬©³½ésá\—³ÏhÖ¯µhÖO¢dË2A›.ÈuVŽ7xô=+¼óá&ÇN4xéâ+üó?¿ÀÕËu6×–¹z©F»y! ’cS27¬PdJKû˜·‰?ÉÕx)ÓE…È_¡àF!©d£h0ØHHuÄævŸAÜ£7œyǧIŠI:¼ñêU¬©3ˆ B,ѨÏÇ!Ö(LVdC… ÞFwøø wðeùê>qðÃF\¯n ²IÜo°z=àüóÎ>qõRÀ;„‘sÔëó(¯žmâgp‹™Sf"ÞªÓïÍ—Q·`ôÚ¡vëAïÀÞW¹ØOŠŒµYÑR;LK“å`„˜œŸGî5rE©hµ˜xÍñ±W>þ ÓÙg¬@öþûψÑÍtáÃßãýÌ*';SfÃnômP³A ±V™4û/nœ³â ¶;¯/ öoÛòÈ|!ö?ÿËãU*¹ïš#e:ìæ™c:wŒ-,,°°°ÈÎÎ6ý~D·7 N®ãûž‹x¿ ½9Ù FkŒý.—]uR¶Á¸î{¹@íÍɆÑïy›¶ÛíBNÅó<._¾<Åî;7ÙÑ#‡¹/‹ö<¥<°‚T§HéS¯· ÂIœÒjÍQ³"{ÆÃ+Â-EõÊU¤…³y¹Œ•Ì#=¥}©ç‘Õ™3ÖŒ8dóśȂYÿ›<Ò—]1šý”â,ÙŽ¼Húˆ³d·¼£`(É"…k+ÏóHâ˜Ëo\bmu•ÃKKèTgºáŽdh4›N¦CBj5[x%[kŒ&ÕºÈôH2©¤…vŒ-œ†Å“Ëü}moÉzÀZ{‡¥'“y{ÇqLE4,£@L$ '2ãY=r$³a¯Â4ì*BmË3 ”(é­–…v“c+‡i5B%QÖ ¬Ëvp3eû5”ø²ÖÒëvI“$sX»Ï))ñ¤Ë詇5ÂLŠ)—ÔÚ rçvFØäÙSù|r2=†Ô8‰“e5hc2ÂÎ%)=”'©…!¾çág[œe/ùËPòé¡e}sƒ7._%I5B*^VOÁf¤s„·[MæhÖCL!MŠ'‡c@ÐYÝ—¼à¯µŒ¶–YfBŒ ã5\rœÛÐ4M ûZ®96NNó½4_ËDfN(8MñUÎJ³ÖŒ­­ÊkSéž1¯Ç`ÌÈ|Œã˜Þ Oœ¦nœÉ=÷ÝÇÊÊ ˜››£Óë¹{DôK±®*²[±v×òizÀÔ,YO{Y;Ξ”¯¥Ìd ›‚M0¶b‹CG ><ǽ÷[wP~o¤³±`´"‰=v6C^87àÛÏÇl¬¶i„G‘2ĘL% MA©{Û<üX®³¸pîük<v›×_«óÆ«>: Àó‰mŒÊêlƆYVª(lþvö¡Lî;âaÉ¥¢4áI<ë”ÕUIj"¢Å‹œ¾¯Á;îoÊ‹|#\ç…óW1”j Äž¦ cÆdw•+«B… öà%®ðzYÞ¦îe_Éþîx[r× ‰ÖuҨɥ7 ß|z•óÏ'ìl,RŽ ä2a¸ˆRæN{çZ¢"î(Ù`³F‡'S¯£V›ÇóêHåZÎw¼!ÅLMqgX7!²Yu³;k#î»fCVÈQÜ‚çß—O飩NwmŽÆ£ÐÊ0ÏóFœGf$rtú3Lṳ́ã÷õ̳À{àãí˜Sív9h*”ûA¨í‡›8}`‡¡(ýg¿D—-n»ï¸‰‡Ì>3­@tq/Å;qè—BÒh4˜Ÿ_ Vk`´aÐ±ÖÆ.’<—CšôwîO#äÊúðãNéòg‹¢ž%9”ñÚ ÖZVVV ‡Ðø¸hÖÅÅEoØg¹³Ì÷}甉®urƦ¤É¬.œüÃÏ §C.$à9mq¥\´v$5ºÐ3Ï ³Q‡œÁS^ÑG£ùYV–1»2FòhÏrÖV¹˜ö4 GÀ ”P &“ÐãcI–tÖGÏ3fe¡i3ŸÄè”kW¯Òív2G³k?­]Æ‚µ†À |å{Ôk!iù=úý~qþ(Ö ­9'•Ä1'ﺋ4M çTQ[bj:îVã¤zùýx`û1Ù0­>ƒçyY”¦)ÛÛÛ#u„˜l'ì„ÈðáuÞÌEzQf½pú*a9¶²Â‰cGð¥À&1ÂhüŒaÊ€‰1'döœÆddCNºé$Å÷a°Â‰Sš§jĶÏöà5.¿Aêìf< ŠJ“ÙP¡B…;oo¡Sr¦Òãµ§lž§]ë†uáò”òïâ~¶·¹oÅ-º¹±½ÆžNUHF”O/Ò´FæææŠ¢²ã‘®BŽ;6BL’k—<»Q— ™R8YòB”NÎ@`ŠŒYŠÀu‘º²ÐG·VäL1ŒqO9!jWH'6rN†ÙœRŽÚêá±£õÊŽñ¡ºñïË?߈l¸Ù»{¤Ž€cüJªS:;Û\»v…8êӪבJ&YæF&—­S¼À#ôA€©×‰#§ÅßíõÑÚ07W¡èuû,,-áû©6xÊiÜçµ3rbÐŽd4Ý<:¶LjO{¾Yìæ~í×Hf…±ÃÚOÆZö:Mé÷ûS¨CçVV,X5õ$˜¾Wö”‚·{=wãw«(ʤæ…ï{mçÛZZÄ ú“"¬)$sGܰ>ˆÍl¾_ ý~¿CkÔê„A@àùøž—ÉîhW¨¼Ô&:«Û ›ÕÐÖÇ ±Ö$Z£ÁA­†1†(Š ºz½N­rsIšÒëõ2¹&‰P%=®\¿Î•«×Ùé ÐV¢­@(ÏóPB “˜ÀW,ÍÏÓjÖ©~[äa‹N°c qbÜÌɳ¬ÈȆòÒu”ÜΉÌ\FJH‘Iɺ±dͰþ͸ã\(™e5€òR¹/‘ufN$äëÈàÞ{—8yj­+XÑ‘älµËjІ\»’ð·®_ö1é|ucƒ,S/¡×_#¨orïƒó<òî%Z †^¾Ì×ÿ¿×¹x~‰¨£ç1º†T®¦6m€ä†öÃ~‡¨[Œg™—%ÏF÷ÂY½ª\ÞV„ðHt~_sñeÃÜ|¤Ç½å®ÓkÜ·Ç]®¼ú*¾ô…´%*²¡B… ·ÍȽéþˆ‰Žý½/ʳÚQEº÷îuo&ÇX©1¤YawÏó2RPºú=Z»k>µZ ;w·×¥?ˆ©×`sc‹^?bucƒÍ­.~¢üÔh´µ˜$¥†Ôë!JB­sDf 6)læ N°è¢.…åz4 ­ &)¿ilQ»Db„«¡µÆ ½œ£E KdÃøûW('çyÞH€ŠÁäB~Tœ¦#¤NY’)'l¶)±9û$E‘e¬%Õ)Iœ:ù9ãî+NcúƒAV°ææÛ<ðÀ´Úmjµ½^¡$a¢ÍðžÌˆT-"öó,º<³-Š¢‘Bé²dû”ÅiR6Ÿ+4¾kÿ3#ù`"ã(lAúzjHRZcHã„¡ÝnqüÄQæç7©7=¬ ±6A§Ö‘ÜB‘¦««)çÎö¸pº;+Þ ¬™ÃšD ê‘ÚUN4¼ó±KG®¯¯òì·®óâ9ÉöõÃèh![;q–í8)0™IU‰é¶çíœÕPd–î"Æž1“5±£¬4®@ºÖ B¶6SÎ=7À÷jMå“÷>Ð"‰5ë}’þ5,!]DUdC ?ñ?ÁÜÜ\ÕÞ2X[[ãóŸÿ|Õ{uþLñø— òû$ñËL§N`qû9Fõ@`0fTšgZ”Vñ÷iË⛽·ì>ÿ–í½b÷sꃴÝûmOäylîäÛÛ%læ+È¥“@bE^7äò¥” çb.œ°zµ´‹Ôýe”lc4EZ¶‹Ó(å!¥—mæÍ¨ OäA y¤Þd²ÁZsãÆ7rÿ?{oúkÉ‘žùý""3Ïv׺Ud«ŠE²I‘liÔÝêniÚ{ ž ã±?þî¿hþ a cðÌ’¦»ÙM5›j6wk_î~Ï–KDøCDdFžånUdW‹•@¡nÕ½÷œ“‘±¼ïó¼ïóØS‚äbÙ´M;óÉdÃÌŠÈòœ¾Nï¾é˜K¶O¡9n¢}daÀyŠÏ&ÄifÚqpã|`xþpÞß :ÅÌž&–¤ÿž.±‹Ÿ÷âOcŸ"EÌöÄy¶†3íQ‹~K,:ŒÎÈ·€ÃY‰¯¾ê¿®¶n±ågÝ៨ßpŽhˆçØÂUeÏöì–&Ó-Öžûó/ë'ŒßÕr|]ÂKUdH*]£œðàOoð-<(M @¼üßÝ,åµW_E;ÛÛlnn¶öÚ·Þz{f×hßù7éa¿O…ÖUm:ºH³;–嘭.·¢Ñ ·³$âÊêq|gÈñOÒï¬5i«ÁƒzáóHb2¬yX:–ÑóûFläPlƒ7I ÷G;εÆÔÊáñëâ&–BYTQo#=w×íÖ–t˜Ì–‘8'UôïR›& Enyøà>£á½n!Akxk[9cX%‘ÒÝG¢œ¶z"•#¸léL_­@kKž—©È²—.½ˆ’ JšÈôuV*ÐÎì%ÇC•(òŸ|tÛŸ[¶ï¯2>HIÓS w˜nÞœ(ù•c.¬äøêó„ñg|ù|Þ6yIÝ3#ÂŠŠ€¼< ëð0H•`MÂÎö˜?˜’t,ßd¼xé2úMÃí[PŽV±Vamùœlˆ¯üàü‹ñ/žÄó뙺þý¿ÿ÷ÿhî¥ÑÉöا¹ŸÏÄõ>ò@…ô-ôºIÿm]°ˆA l :*¥“m2kª"!Ë 2ÛE$9…69JéíˆI‡:1³Oñ¾þ]Ë Ïã:ž¦:ãXZ× Ž’[˜‹ÿY¥FlÀä°ËÃðñ¯'üäï†Ü¿ º„^fèuG.i•©Ów—¼¤ ›`–òÆ·žšºR\)ÕB‹²5 Ya#‰ ³äÅCáOn™ÝæAºy_Í'…¤V…Xж¹ ü{Ò†;ù-¿×ãf…±3àkü] Ê.M:#íÙ;ŠUbI)] .%"Iæ:Ug•Z9~í˜zƒ«e`ˆ*´bÐÛ‰ô ¸)0u嘮ò¯•PÙ¶™«1†¢(k½Ýcp–ABy‘ãå#Í1 &i$ŒIy3Û92[.|%¶iÏj+NõlVµž@rÍjÇÀܬãâµïdI PÄRÇ™†Ç²0aÝ·Ýù9?«Õì€LY€AŠ+Ö_®.h¥É9ÓžŸ¡ÊrÖ8Œ­–m¹I\!Ib¿€ð¹ýž:GE thp0ï4ðà™õ»iÕ¦£ÀU’Vº¿g+í­µH Â4•¢-¢JÊ–DÎ" ýãæ™1–ŽáVóÌš¨Ï›Øë`Ùõ+à[¯¾Ê·^}unÞº=Fº½0’ñ cy÷ö¥û=E”yܾi|%ïIgÖqëHùg¹ìÄ@ þ.µ¿…m6/ïéÇìööøÇFدDàÔž8n‹:INÜ)}5vQL9ØßÁK¯×óæ¬ÚT”¥Ϥ’diB–e¤‰“TQ‘°ÖNºF{ W% ëx©7`8ñá¯?ò•ÒOŸð=<8Z5¶Kâ—Eë·õµmàüétZKÞ¤YÊ£GùôÓOH“ áM·¥”TUYïÚhò<÷Þ¡;Ü'J¡{§nÏÎ=ó£°¬ã#–«ÍPq>ÒO‹)ã|‚¶ JBâÛÌ*Saª3q•èY–1Ýë¦ %%U¨„–B—TV#*®*’$iä|")·°~C<¨µëˆ)½OŒóðÝ R‚„D*@»=¤ÈsT¢¨´“›)uÅp2a2Í)+Ãáѽ~©nm-Â8i k-eUÕÄEÖQ”º U’$•Tº¤²M¬VŸ3]ÇRJGVI¥µÿ¾‰â^kT0’Ü›PëˆTp猩·)X¾²²ÂÁþI’¸ •ÕØ–á³›oyž³ººŠÑši1m$‹„ŒâR×a±²Ögt4k)µÅVÍϯž²,GTeƒ Vú\¼t‰Á`àÌâ±Lói³ž¼Ì©û}W0–¥©ëÆðeDvKéº5j‘ÊÈïdV‚®,],+ËrΟ(ô 6Ý_M¡šöž4.ž‘uNÒZ'²yo£M+‡‹ã%¡D‹,6QŒ%¥t²\>çÄ:Ù©Éxöó#ÖV×PB1޼ôŸâæç÷¹sç=~ôß]fûl]Ö Ö²ÞÀI\‰uÜ+ùÿþó”‡wF‡«¬ V(ª’²ÊÑEŽÊƬ^(øÞ¾Ä+o€LùâÓ|ñé”·W™m’¥} ¹ólA"¬ôó5÷î×þ¾g[Dm\÷õX 6óТK…ó¿8CÌÑ~†(ju¿ˆ†‚ž+ó1¼;RÝþ.I9{I Ê,’2Ù êj«Y иB³e”§m݆o¥œ« ^F4ا¸Ìç%êŠ+á«¥ݘ­bLSE%P0‰]b­n’$Õ–MÂØ…F¬'é\Ÿl§ò— ³çÇ"óZë+ÚŒÑ~£u ][EpFËí':wgÁáÓè€ÀÙ ¼\,³È¥& 3•Ën¼’`Î8SÉÜŒ£q&uÆ`µŸ_Ö´îeVò¦…°°ÌK9­ÅÙýF;Å”9ùœ@Xm ‰ »Œ˜KÞ„¯8%êFÁšZo¿Ày±./2¼Å ÚoµN¶iº…„…ÔçÉ‹Œ‘ñ.Á²Ýá4Æœ¡Ú}Yeúyv"6¶ºã~“Ö^´ôÌ[~¸Ÿ†l°âœdƒWi{ˆ\j ºü~ÚdÃivîóép~µdÃWöÕÚëXÒ4¡ÛËÒ2èwÉRå´Â­¯®÷`¡JN‡n§ã@Ah¿P­ ÝN4ëòðþ#†£1Z7*ê_…†ëޏ_/Ù`c«ÙOs]‰Ö“é˜^¯‹R•²,Åú½F*A¢ýÁ*£ÑÈWˆã»u¼„R$²¶x¢õkÏ6c\÷„[y7?*«I³Œ¼ÊÙ9,ÂRæ%J ROH'IŠÂËŸZò|‚¶ñŸŠÎAâÓæ¥.[çn0 u ¹® ÷pkÐND«–®’(ŒHa‘‰ëÎÐÖbÁ´*ÐÆÉ8•eÅêÚ;‡ûììPU°4q]‚–lJS¶ÖÖBÒëvô{ ãј¼œ8˜ÆÖ^ÖÆWî'J!…t„‹Ñ”º¢¬ªz Uõ&2•8šŽjù(ŠidC‚7> ’Òhvöw]ç@ራD'¾Å´ Â8ïìíÌPOh¹÷P(`ï`×UÝ ~ΑäÎZ[HÜ÷666¸°uÑys¤)JJ‡‡í˜UˆºÉÌ…š†¢Ê)uQK&Å…D¡ ,îj> ÚEJá÷c2_Jé};_©ð³îuM¶À2²;Œ§mí§ás.:G₪²E^6kqÞR ¤"M3ŽŽŽÖ"±$2EWš"¯`¬xÿç‡Ü¿ ¯”¼òz×ߺD6èbŠïþôö·SŽöTÕ€½r rJUh3ac«äûô¿ûÝ l]óèñ¿øùß½ÀþNÁÆŠ¬—± ¬¨¾^Ðay¦å»–OØ ÅÂÐÆ¥–äY‚ZQü¬&ݹ8:Ï–÷Þ9d°ºÂëßérãÆ Üÿ{îVlßßÁ[G='þôOÿ”ÍÍÍçñüzf.c ögöþ>ÅM ÏÂB„NÏ™¬Ž Fc-h y VYŒ.™NàóOÆÜüHqóE9på¥ ®ïÁ•— W¯Zúƒm´‘IP¢‘K² ˬýfBÿVÌAK!|°5[unZ‰ž˜Õ?ŒŸ·ØÃ\è÷68ØÍ¸÷¥à£÷ >|ÞV ²W¼¸N÷å¤PLƪª"ÏsvövÙÙßwU0¾H©¦|þ” dKJ üý~Ÿ²,O#B µ\ù2½èyÐDkÍÊÊŠ®=0fDKëÿìÝOä:`dXjP^,º¥P¾CÁpÆa^Æ#þÚUÅùVp@[(9&è”OlB <© …×èÖšª¬¨ =÷ùETý«½¹k0 •Òrk-º0 +ïc Ó™÷©(áŠèµ™ªÁe€·Ëþœî{lò»p~œ Á¼Gb°ÚUkú9­2%Q „äÙ4A‹È†x:S¾s’¿øŒ¾ï™ÉŠ{£†t<™lð8»OLmˆ†n•JkmÉšE‰°D ’¤öu‘ LnCòWý)!kHª T†[_Mi£q23².ÂÛ¦´Lë® ÝêrJ‘z@"¼Ÿ®Jò¼l~¡cL ‡S…ÚÞ0½Âi…«m³"ª¤QB’ˆHþf–l°Â¿ÖÙȆE/§%Žó28+PŠueuÊ‘VõA+×UÖºb© ¢8YÐ`ÏG6X·_HëËãdÏN¾{Jýmqâs<ë6sºþ«¯î—â¤>ÚϤ#¦“œ^7EWFùn<­”–Ñ^^Ëu5dYæ´ñµv@¹ª2”¥¦ª ÖË(õTÊÊÊ* ˜Ls/µÄWf Z °S®%;eµ[7RKÇ΀à2cîÜëö¸tñ"×^¾ÆÆÆIJ-I%•@*ÊIÝh]1™Lë‡&¾>1ôù:Ššýª!?6(étò;Þ÷ MÌZáuó³,ó k»/ag»O³—VUÉd2ñ± ©?×lüWŽ[kÙÚÚb<×çMðÇ(Ë­5½No½õãñ˜ªÒî¼i"ß-$‰…t>%iêºÞ¢è1U8SkBÄÖÅʃÐR´ApwCS3)^È`À<ÿ )‘þL  fs4qHý,°u‡@ðƒ©Í§#™¦†p¯­‚—'îu3¸ûrVÖï,c0fŽŒ d’4IÜ9ïÉ•ÊË icš¢¬àÏàåœfW^ð¹ ÷V‚Bk÷»ä‘¾K".œŠ•˜,ükº×®%º*]ÇÎJJºÝ.Y–ïº(ËÊË-‰9ߣø}y(…¯ÝïÒD‘ç:ib"˜N0º@ ƒÕÌR\#IÅQɃé>Ó¡a÷QÅêFŽšéÑUÞüël® 6/Ü Ò–¢oÍ0•â׿< ²C.]Úbå 7¾µÉÍЪzN6ü›óoæçç×óë7y ‡Cþò/ÿòù@|›e¬‹ˆ@ˆ.£aÆçŸH>þHóå— û{[$â*F÷8ª,BdܹUr¸/xt[ó鯧|ïûWùÎ÷º(õ9Ân;écÒ1!žÏâå$<Ñ`ÊJ„©ë]¸(`ª}Ë·©+ýç‘f÷«k2FÃ_~ZðÎßùà—p÷K8Üs?>ícíl…@óÃüFdYJ’(R)è­®±µ±é*[|°>Øßßg{{›Éd‚ÖÆ·ÿ‡VÌÐ6¢AÂÈ'áqM¬ŸÐÙ }e ”¢ È#0j8¤¯Nw:¢þkÄh¶Œ|xÚáY«žz èÀT/ñhBE¾=”Ÿ…Ü_¢³.6ŒeÝ|l¿§©‹tÜ|¨$© ·ªjº”“ĨÚTÝžU¥[9鹿_¨˜›ÑQ­ ¬ð^ÖëW´ó`A»SaxYÿœhãegæŸ+PÒs]¨Ž”‰~^€JdMWÚu1YìŒ,XølퟋcI¥d-£oŒ¦ðgLø@‘"tûoÑt,Äó*5¢»Fk¾Q3*ZI-òbŽ€sãa0u'nˆß´©Z¯ò'9&HUÒŠ}[wÖƒ ±¬¨çŸ.ªHÞJcM‰°9ÓIŽÑ Ø)I:¡Ó‘öv(Ê]¦¦ a‹nïmúý‹¨d©®0­vèG ,ÝÞ ýÞ%ÖV·ØÙ™’W‡L§;L«»\X\¹!étR~ý»¼û_8ÜÞ„òE0« F8¿ƒÎr™¢ßø9g±¢€È(ð1‹g“Ž5þZ>%q‘›+ùX±soÀ/ß™òÜåµo½Âû/ü‚Êìo4ÊþöÛoóï|ç9âöüz¦®¿ø‹¿`2™<ˆ§ºW°ƒÑ3XIYÁðHòÁû#n~>àþƒ.U¹N–eXRÚËôžetX2<Êè$/u¹|¹ÏÊZˤfýcý 'iÝÿ£Ïؽ‡¢ÙÈ-Im†B¹¶oët;µ6 Míl½ÚLa2Ú@e2&£ŒÏ>óîOJ~öc¸ýèVû!70&¥(\eP¯×åÖÍ›N36Qôz]ºýI’øö]E§›‘öºl®÷¹òâŠW¯“ç9y^’çãјÑh켞µËŽÎzE5{Œˆ¤‡XØeó$dCè°¢ñ!ª½Ë¢± õÙ…¥q!ÈlÃìÏÍ>‚Ùê#Žçíüž‡ˆ€Q9ï®>¯>‡ÅÎàêvÑCiEÖõ9Üʧd{ýÏÆWµÐU»óÁú.ºÐ¡`#¢oöçêõDÓy  $¶&š>Yûç¬3àïçÆÄÎHùĉÔÒÈZ¬vy­–$‘F£ŠÉt—nÕ …y r—étŸjº‡0«T•A°† E©›ëd cƒÁ:®8Ç2n3™>demÂÚEƒêöG|þñ_~Ã…RH…P +Œ7z^´çHæ‰t…—6c ²Ž¢ÓMI¼ÉA©„VUi¬M<1~¶ÏÇLçIj¯ÅÚ“$yùf$‚”²è²÷Xñé¯s^ÿö&W×6/®’ôö¿Ùdƒ”’ûoÿísöùõL]·oßæoþæožÄÓŽ9­Æ¢AF>Zr4sÿAÁîŒG)‚ ’tmBXK…qçþª7æ­ß»ÀÕk—¨ª"-‚†øFlI|ƒ ¢m;V³ÏÐÇrù¡A`´åÑýòàõ·zl¾°Éîá¶k®»!äµ$;oÑVPäŠ"ÏxxOòþß—¼ó_áÁfõº%V"¡²ã’ëCBm)­k>8:ò’#Š´“ÒívȲ”n/£×ë!•d0èÓíW­vñº2hm™Ns†Ã!£ñÄ{5ÌT´ÚY`iñøÔ•D¢ @.KVC"ü ´7_k‚ùîXž|JÄSIJë*¦súlYk°B.ÌB€/œÁ¬`NÈÇ÷Χ¡6Ê5õÆôbuå*쪪ªÇ¦,K¤0^BÁUw[»8™ŸÓ¾ÜoHJ%gN8¥Ø•”dJ‘(7»ÝnËÀüx ÕÍíÁ`°0Y> Ù ‚­åÌdƒ“ hìÑZß_$Æ<‘(E–¤$Ê×BHªÚ‹ÀûÊQ—p*”L=ðí*Û¥°5é§™³Ð¢Êð§ÑÙëM/Z³1AQ0Ç'; j-š‡ñ³ñ RÇ‘ ËîO`‘µÕñdƒXàçЊ&‰çy0x_ØÙ¶©ïYÉaÙ£uÚëY›Ð˜Ì5e#߃֢2~ŠMÿ ¡à@ -ÌßdC=î3Ïÿ$@ûIêóÊa¿0Ö¦Ê:@e–lÐÚÍáRÖÂÿÛÏ?ã~'ITË‹£½‡3g¼U¯,i¢ZsúÔç–4‘t; ÝNŠ5²¾¯Xš*ÜÄêq¿Y²áIUì9ÎÝÆDUz¯€¶_ŽH£Z:Ư'©$N†¡ËÐÔ&ï@m­”3¾ 1‰Tõ]é‚J—d„$q¾YÖh×­ $‰œ¹A±”Ü=Ï d¯’n ŒñÄï)ÏѦ»NÔ’zK‰…ÿ'föàù¹ä­2ò<ç—ï½O‘”yÁï÷;¬«U”76ä¡ükS2ñ$žhÝITCî1´t}ÖV–s&î\M…|óµxâ=» Z€l»ïÅ6Ëqܶ$ÑuòmçÈ…S93ä¢؉èìç÷œd“”õš¯åˆhÇ s÷sõþb óÝxCo<ì²_¯WÑp3ì‹ÿ9Ùx[4ÏѾ`l¬F‰ÙJ3³¯{ò¡e>h[gXmZ½è5jOZ]w¢N'cÊbBYMQéþÚ„­ËSD:¥4»ŒÇÛL†‡ä‡=Šá>“É*®uÖÈzèô:\ÊðhŸÃÃ=ªr‡$Ýç…+pá…‚ÑpÞÀ­Ï¡*$JõжD˜ Aâ×NBÛ—¦M*Ô”ÎB?›¯xK®42I¸òâ%Vú}†ã1wïÝ'/¦t:k`eó9¿&|D0_‹aãýÈ8iU•hta(ŠX~ö·cV¯Óï^¤ÓÝó &þù?ÿç\¾|ù9 ûüz¦®ÿðþÃoMåÑo Ö*Žøî{Œ†J'ŒÇ†£C˜ŒStÙCˆ.§›‰0uK£Ò·xBYfŒ†Šƒƒ Ë,»> `óú j)«Ÿè|~}õѼ֖$UÅÝ/aÿ>ì>‚œ¦2•[¹JCé@CÍ-í±ã$Ye:ɸ{;罟íóîO`ÿô³›ôtd¡H³J%˜ÊµU]EÁe9¸*ÍIå;l*•@ ÅÚÚýÞðZ®*¥ÓéÐï÷ÙÚÚœ>ñÑÑ;;»õ<ŒÍLÅ1 ‚¶¡B‰ºŠMÛv“ˆ’ººÇZÒ4ÅE“´’nN¬Ø–&|ç×›^”@Ÿ>èj¢…•ó!aÀÎZþ‚•Öý©WÖ6ôŽõÒç†ÖÊëKk× ^w@Ì >¡n@á c¨úyÄÆ·ËÀ¶Ä¬v;YŠ’Â™ &N–æ4ƒéÆCùy-Ï»Dk“åe ô¢{±1µ(óíïs0¤m*;E汤Hr:ÐED’IØU*Hæ€5Þ ¶u*ˆV‚WªE€P _Î0n6î–‘ ³ÀçÜø„ñ– 䤽£që’ ¸Šò¸ÛgöùÙ#Ç…2JX7öÇj³äIC2²¥Iu6¨%¥O²o´ôЭn*‚½¬Mði© ]ˆÈH2̸=³ØàéÉŠedC@ÔðÒÉꈥëÿ©Ä^OÐÙàö Bú*Kã»LEÝ5§+f¦^NÄ“õµi¸vsOzY·¤ëfýoÚÕaÞkJž3.·d©"K‰r¨@Îbá~Ú27ª9G”ü‘ OC.ú³Z¤¨I4c_ k4º™¦ÎñÀ8chc JJ’DÕ·Òî¥U½{YÛȹ½ÜÛÊûx)¼Â…m£ÁO*ÄÀ,Zæè§•4›‹©ŽÝ£–“©6"zãoÕ~ÖIö,ü išrak !®±µµéÏ5é—›9ÇÞrÞ1lÖ·ˆþݼ¿uUÏaÕ?cZî±%• ‘ÿ¿HDgî$~Ò´³ÝÁm#Ÿ,±ŽK}mf#á;Äå)æÃ¼ïÅi<‡g!R”eµ RšŸsB,&æç¾ž1ª¯;stóÄ^*³¯-ê u+4 È+z“kakrÅu#Éù}IDñ¦?÷í"Çû@6,gÂøÜÔŸ­ÖNš®"¡(¦XŽH;¬n²~q‚)õ.~ÁêªbÜßåp×0:XÅ”ÑHªj@UUôz:>;Û¹ÿ Tg—•MÍÆ¦B%»»G¼û³!·n‚µr%:X«À9%±8r¶1t¾\‰° aE]Ìe£"œPÒ$ž`ŸÒF TÊÊ Ã…žÿï „¤ÒÐyRðH¯ åaDåg¿Zú;‹åd›eïrƒÆ K¥a2NxÿÝÇ|ë[’Ép“Gpíâ7”lX]]å_þËùh{~=S×;ï¼ÃgŸ}ö| žb°¦ƒ’lþ ‚étÕC‰vïÒË®€éyÀ¨À™ ù*U‘ ŒõކîÊùxŠ.7\[µXEhƒJ#…y•±Äã\÷þ7Šð±Kã¾ß(ÑàLkA‹ ™ú]¸ýäc¸ÂUd‘cÓ)F ´7j •²àqÁ‡ÄV]îÝ.x÷§G|ð x|¨V‘báý èV;ÐùÖâ(`¬#ZÀª1T¦dûñJ푦ýÞ€Á`…é´@JE§ãÈŒ$IØØØ`kk ¥ŽŽŽ( W}&„ , "Ùõš²I¢0Zû ªà 1·CãòižGÄB”«®„ÛÐð+L\~ö45®x 2&g{ ['úóÕ‹³•§øi°ÔR"dTåmEí«!„EJ,¾Á}Ï>uᬢ¤TÄa®³ÐÂ×—IGY–µ¦y 3àbÞð8tÂ$J‘(WU,%(eIdœž|/›£³%­×™‘ÏXÔ’¿(­½ìâuQµ~MÚÄš¶ÆéõZkerDÉ,P·Ÿ RjÀÉ`aÙ±b®»ÃÔ*íukÎÛ˜$°gƒæ¤|R^+Ö:ÉDl¤]«X i‚ÓŸ×eÕHÉF[¸Ö4®+ä ‘ò1‰Ý²»§ªéš%BmÝ™`VÔò* A•ã@[ÙtÆœ,ós‹îïš ©%QuŠÅ†Ìîç´°µîyóym#w°$[{¯œC lë™·Çái»Ø%Ÿì"’੎MRÕòIQ6¡×éPwùy8N1–ºÛ!žmшºLÂþ]Ï#&š³~~ë¤$œX¼&£úe¡ÄŒ¡uX¶Õé&ë¢õ$ˆqÖÃóÜdQ,­"¥¬M^Ï>ƒP¨C;ãæºÃÔ˜¨ØR9E1¨;ñóÝCuL€7}MšîøÀ¡9›³ÑXgª*B‰y¨ò^°ÙóJˆ¶\£ó_8Ç.•Ï›ŸR³ÓKŠöZQ¬£uãO>å‡~Äöö6ÿîûw(%¹òÒ‹L‹QMÄÛ¸*zÑ–°°(þ ö¤¥ú­¶t>s9S£É¿|ݹîé{z f!€}î1Çý[´æDãaÑ&Û¦Ó)y^ªÔu¥ )'}W:3æ$M‘A¶öÒxÎW£j}€Øh;I¤hb¢(P*¡ª*O0ºó´ÛqÒ´ƒ•Ó<ǸÄé4o¤M&MºÝ.m6C¿×§¬ªú¾´Ö”eEžç˜J×{R®këBJ>zÀÆÆFmÚ:­†Ã!VVVVÈËÜ9£å,Ë0F3ŽÇt»×y¥ý~ÏÝ»¦Ó‰;Û¬u˜C–¥u·Éd2aŸÍÍMg m-RIçe,k«klo?&ÉRúýª&ì`^´ÖK3¡J'6kRdèÒr´?åðà€Ê>fmk—• ;$½]z},Sö1U—j£dmcÂã{’ýŤOY#±V±·wÀî²S.^ê±2(yüpL>^G›)y!¼rcºØÞ¶ó'Çâ³Å(ŠDg£0×EŠE‡:4ÊÎiBc%ÖvÁ¦J¤3˜Lr´QTUâ:SÏÙÕ „Áâ¥ýû¸*ªDá`+<9sBŸï`©ñ ‹%g4ž¢GŸ\`¸NªßqxÂ7„üWÿê_Ñëõž£±Ï¯gæÊóœ?ÿó?>_EÐæs,cÁ;Ããû–Ѱàñã’í‡öv$˜W¯dESƒª[I)Qp+KËÝ;þáý}Ö7 Ö×66WPÉTZ$½^$qÝR%$IJ·ÛåÂ… H!1Úù/¾ø"EY2™LœôRQh]9½HÓT4φ&‰Š*eLÍA4 hðlˆ¸åÕIÂzXÑþÏóV†µß¯9{ÒW¿Ž]Þj/‚XiÞS<> ÖW7»ÿlëñ ¡[/k¼4´bl4XCýŽþýDCrÉXÖ's³&´ñ| ‰œ1%BX”—Ÿ“ÒUñÈZ÷ÕžÈ2º8TÖäÙ¿>ÎV52LÒÿ™ì j£.wÛ¸­»êXÀKã+Õmý.µ|A0C®ÇF8ù iûç@Ñ™…bhÒ[럕,s‰ûÉUK»fÞSXëö„²¢­éü)DD‰¿òË ±Ä“  ˜£çÁZÑlàœ†‰+ÙÎÜÆî}„m 晑$h‘\K –çÀÊZªÂ{áYk£½Q´=ñ™ŸT> Èy¶×õç ×^L„Ä—¶®k5€ ‰’5vÞì!¢½‡:šgv0‘†ÓÃÆÒ;m×(Åïüô§L&¤R®‹Þço¡ ass“üàH•DfY}>9OK¶îÊkˆXªP9ÐZJ¤7ª*í÷ƒ!èöéöA=Ĉ=¿Ü4BBÖ3ô­ ”rt8&/†$J£TÊdRø?cŒ9`ó’ ÓaLÅîÊŸÿô!û«X»Š¥«ÌPa“†E¯6hëšóÂC¸â• {)|ª'”O²ºI’ ]Áx4&eÊx¿ž©ë¯þê¯888x>O3D›­¦`´âÞ]ͯþFCzL/£ó ¬^CW¡)ê¶³&Õ¯¬¥,4`èt»Ü½7a4~Ì‹—Çl\ñíß[akk)¼´ÓºûF_Ϩo…PZÈ”gE ØZŒ4hQÕ`W¨Ôv”ÀT)e9àö9û×SÞv@9I±Õk2¤PHéAôtj%¢¢}€G&^ÔUvæm˜ßÎ @»ê’&&ŸN(ò!¥7w“$IÊ`0 ÛíÖFªiš’¦)«ëk\¸¸EUUŒ†#†GGLó GÃCò鄪r20ÆW9_é*Þmr‡ÏÙh²Ë:J™m#žŽÃmÏÊ«´ˆƒ'Î=çÍmOû»VœT3:"Xl ´ÑF!\¥ªXšL&JEà­ótp•«+Ÿgöv+ŸüÄš_1eH»Ý…’)! )ËÒK~´^¨µ‚Å c=ØÄÙÍÍò%–ÙSÅBÍië’PRáve¦mýQËŒµñBsc`›jõ˜ò‘³@¨±­×Y×n¯Í¯µ–ø,ÉRô1úú§üì‚1[LÏÊêà«Ý b†DŠÍ„E[`ºŠYyNÒÐ"°-³ÌåÏÑYëÄ'Ù6‚wÅù€C;·ïŸ„fœNó3álˆ…@ïI¯ñ›4ˆnð?';UkZK±tXi$!‘ç ‘¥‘ 9õé*£Î°%r Æbªª–§H’älÏÞ#¶–@œ×7Ÿ3Bõÿ0A>/ª¶gQ9ØmãùÍ£Ó^2[ÂW<[ï/u†÷·Öøn’ÂÁÇÆX/ÕFÝÖëuYYÔ„ ›qŒt e·“¢d ¡øU䪲@W%FWˆ4%ËRÒ4k:cØ6«!¿`݈@JýøÜ{D'ËHT RRiãIBÁ—7ïrõê5Þ|ëm¤”üò½_Ï ¥'žY–Ñét¸zõ*o¼ñë[¨ÄIíF#>ýä3~ñ÷Ïp8d2Ω*Ãööëë›|yó/¾x™·Þ~›ë×_FW†ûwwøÅÏÅí[7¹rùƒnŸo½ò ‰— 5Ö"„E&’ý]ööùòË/¹uû.ü ï°¹±å=×4›Üº}Ÿ7ß|‹·¿Ýcëâ–#0Ë’½ýG|ùåM>øàWìììðèÑ#¬5ŒFC666¸ùå-®^½Æw¿û]®]½Êþþ>üê>xȯ¿ÎÕËW0•F¥)XA¥ »;{¼û³w¹}û6—/_æÂÆ6×7ØØØ`w{—/>û‚/G(@zâÝhŽxóÍ7øöÛoÒïuÉ Q'} ¬5NÊS]›Fû¤Y pNšéäˆápÑéM¬æ$Ù)§NQÀ UN¥5y!™ä)EÙÁøsVHE1­˜N F£#’t—M¬ ™NÇl?´|úë1Óщ\¡0©‹WQuç¸õtÀÒÖO-¿‹E "Ç'ñŽÈAŽH>ù2·•¦cyt÷€m=ÅCn$ZöH» ƪ½30Hi¥Ž|±Þ»BTþOáîÝvN…“ˆ¹MÁË?ÖÅN6·×_ãÑ£=M·þ7ŠlRò?þïÿçSÓ#}~=¿žÆõåAÎþ/ÿåù@|•kßc6ÚÀt·n—ŸÃtô˜|bIÄ :(ô+Wí$}Åv Čє£Š›_Ý»ÏþÁ”W_\vÙ¼"D‚µ¹ÛçEÓÊþ¶âx·Üh45ÚÝ?×öÂïR „ÈP¢Gž§ÜùrÊ»?ñþ»pÿ A‰uŒÈ@JŒÕ˜ÊÉèýá–9•¯ZˆqŽ68W>3§[kÐ6ß3^ëßù‰—ÃÆÐL’„õõuVWWét:dYF¿ß§?èÑëw=±pm*òé”ÉxÌþÁeQúöd]W2Å•aÂD»ÿ—Ñço4˜é¦7Ev³Ú â|Á èâCåsú6œÐißò¡ˆ€5k±V“¨ö"¨5È—Ä·REf`Q2.êØØ4 «%¤Lm:lÈ#YO5ftmóÛP=)[ jôJô·öX¥6¸("Àõì O–x0ÃÌC-6¾_›j×JAÌ0%PCí‹E€Ž£‰O‰šD4íû‹ÍÃs >§_Þ¿œ«G]ôIkðg†(’R†v#O`Ù…à¥$Sæô‰½;ôyÖp˜£Ú˜S‘ K&’—P:§gˆe¹ïÇ©é’'MHíS8íÎþ>¿I²Á¿Q—_c4ÛÚwbЖ<œ“ý 牠uÕêl°¾Ó¥i“ZaþÅþD§—‚ó¯*£sÛ´ñ‰ˆå–Y{|?>ö< àMþ×_D8žg";2ÀœÙoËÁ˜XÚD`|u´ÒÉ©(E–%ôzŒI0:ó1»igèTñ˜óchŠA´®(ŠÜlRÔźªj Íü/Ô<’µ+ZçÈ,È%ùòÎá%¦ódƒpÚn®ÃÖF ëÖÙááGG”eA§“"¥`}k4q†š[é«m«Z^†ŽXÑÈ >µÛŽÌ•ƒ¥=ÓÊúzs&±äû"Bâìegõùfà"’eÞ$n}„.ÃñxÂtZRšµþŠó³JRú=·^øèÃϧôë\¸pk%ZC·Ûe}}m\·Ñtêȃ½½G<|ø˜²Ô\ºô"ìïïqûÖ-ÞýùÏxøàý^ŸAÙS¬ 6Èó’{wpÿÞ#66.òÂ¥—°Æ 5ìîpxpÄ /0Ž0e ©D OB G¬éRsçÖþþçïñÅÍ[¤iÆÖ…HÓU©I”e:)x÷Ý÷˜NKº½ÖJ®_¿Æ­Û7¹ùÅ-~ýá¯ùñ\w™÷û=ò|k-{{{X ?üáÑ>¦'Îx½(|lÞŒ½.+ŠiÎððˆédÂx<æ`Ÿ¢(0ºÂ芃ƒ=zÄå+/±yá2II…åêK/ñÒK—Q*i<Ú<™oâbéºsÅ‚üµé„’j’"Ÿ²³ó˜ííôWŽÈ:º½œ4­À–u¾'¥#Ô«Ê2NºTÚÒíöYYYCJE¥ ¤¬md¨dJMcì!;ÛG<¼Óeÿñ€,]EÊØëÏ*AìáuÜ23ddüµëJGj_$A¤œOi’öó¯1©š KGdª ¬Jª©/–’=$ê3ásI°™ïjHý·šÎ†àÝàÈyâ½_1aDmSë IDATí¤B™ôÿ–XcP²óÍ#>»òOù?ÞÀ{ÏÁ×ç׳s}ûÿkeù| ¾‚KyŒAG ÿ•+ëhs€6f dJ•ûªUßí4fç¥$I°ÖWt«Šà{št*[Õ‰«µAž‡ºrê}…¤ßÒH‰›!ÅU¾Êí/ŽøÙOöyïgðà6˜”\¥*]ë¯M‹±Kºå\°Ö€‹mð²©þuD,ÎâûhÈ ¤ !#CÔ`êS†È(tÅöãœíÇ”eI–elmmÑï÷ét: VVètR!ɲ”Õµ^¸ü‚kñœL(‹œÑhÈxùÖIŒT%T…BÐçûßû!×®_£ÓÍx´ýO>û„Ý>ÿì&뛵ÄV ú^ûÖ«¼ýö[¬¬¬°»»Ã¯~õ+þîïþŽ¢(xøð·nÝaÐ_e<ÌùÕûrçÖ#•²uá%¾÷Ýï±¾¾ÎþáŸ~ú)=æÁƒüíßþ-I’ò{¿ûm„€~¿‡ñçÄÊZŸñäˆ$1dYê‰/EQjöv÷ùðƒOøô“/™Lr^ã?úÑÃÆÆZk>ýìs>ýôSúã)Ÿþ—¯¼Äõë/3988äλ|üñÇH©xã7øÞ÷¾Ç /¼@’(~ñ‹_0¹rå išú˜ ªÒùN¸sË ”@ë,Åc©çS¤°dY‚µÚý ­K²NFoÐçÍ·ßäÛ¿ûOê"#×ñgȲ¤–‰›Ëg‚¤Mçoä$¥òÅlÒźEIY¬¬t鯥d½)i6E F6Å—ÞK³,a2¶S‰°]Vôú+þL6h;ÅʲÕmÒž¥¬ >üÕ}Þw•ÑÁ:j}• \œÕN²PªV!ÞÙ/ƒ%Pòý?ü½nÆÝû÷ùø³»þÞjè¼Dƒ”NíIjû\{¥äí7¶(«Š÷?|ÈÇ·‘tœQÄy`ë;læþˆŠ²ÊyûÍWxùÕ5F“!?þ»÷ý}¤ÞDúä=¡Î‰ 4è¡óÙ°ä¹zß,²¡LºüÍËÿ3ã½çìóëÙ¹®ïþе›?~>_Ø-5ݾåOþ´Ãèh‹Ï>O?ܽy€±V¤>i¨`âÙm†^?ãúUÞ~ë7^ÉYÝØæÒ‹9Rî·$FZ…·vF³ûü1åoN߀¾Ì×P…àEü¦ç†4fM)ƒ ´Ë—%ØZ¯së‹‚ÿí~þc̓;PLAÐGÈ.Æz²ãÌÛlÀÄó"üÐwŽÉ†Øe ! ùªrC"è¤T¦4ÏwB4‰ˆR’ª*¹ÿB¸Vå4MÉ:Iª¸ví*ƒÁ€,Kév;³NUUèÊu9äyNžŒ'Æc'»äª\X$#ìZ/tAdÉ'Y{ª¤p©æ|„µWó8Tsœ®Ç²ÆWC«‘ÒÔÚÓáuZ¬Ñk´4çMÓA:~…MD=SK‰9P6&Î#@°Pùyœaá¢ñ ¿cÎjn™ ÆdÉB@oÁ¿cÓuZZÑBô_‹°Ö'Éÿ’Óîg¥ŽŸ·²ynbÁœž÷Os%‰ªMKjÓë`ØìŸªªæÀ|áÁþeÆCsò(óâ®­*å3¯?Ýô$ÍJD,ÚÏfÁRºÎL…µoìŒÙü‰§s°“H|>Iû„dÄ“”O«ül¯ÓZ›h7@¤ÛÛ"ª0H>“PÊû¢/ Æ9î2ŠIú³Ü—µmÐÜ‘#íg2O6Dû¦¿×æü”gë§ÑÙà:AĹ¼"j²â˜ýû¸ç/…j?(n2Ú™¦ a‰òRG I¢°ÖPUe½ FDcê®™°ï㺺Ý.“É”i^:¢ØwØàÑ`YH4œÔéwÞ5¸¼›õt¯±Œô8¾3,êlA’¯‰SM+¦Š?+õs²Ÿ~ú{û{ ßÓ†K—.yy<ëóáüL„`Q÷ =×Î}ÜÔ>´ü~Ûs,æ¥Ùž”l8ÃÐ.üŰçUÚ¢µ`°²Î믿ÉÖ¥ åó/>g8<¢ª\GŒ”ÂUçC¢R^xá2.\ॗ®b |þùܼyå=Ȫªb{{›Ãƒ#„di—×^}ßÿýï28³á‹/ò“Ÿü„;wnsxtÀÞþ£Ñ°Î}¤uGwQ”eêüÊTte¦Ü½{ŸÃý![_àÅK—yùú ®_¿N𦬬¬b­åððˆ[·osëÖm‘pö=ÑøÚ KÜH…H-( ƒ5ê›E6üìåÿ‰q¶öt}~=3—´š?þìÿ~>_˜:r¥‚¬7âíïl Åcî>¼…I&ÑkÚã„Wíä1½Ñ«ÅŠ [—úüðG/rýå#Æ£Çt:!r àÕI1Û7¡é¡)6^Pî¿©ˆ_ø L CÜgö…l2¦G1érû‹CÞ}g›wRòÅ'®ðKÉ AUWÌ9ÍaæDWÛíÂÑÑ| œ1료5†m€1cZ^ í3XZE –1ÎìÕ•»xsEW)#F.¹Üyü!akk‹­­ ôz=ºÝ.ƒÁÀW"¹ÏYiCžçL§S&“ ÃáˆÉØI0߇PqÒ˜H7ã!¢ éøo¹¤zdx*„˜éÚÆ¼öD°ÈÎÈÝ`ÛUc­è+"ˆtˆƒŒZ£}v !’H—Z4¤„Qh)X¨9^WÉsƒVŸü›x*Šy£Ï†àj$&bSÑ<ËåÄ鳚ì•3/&NÀbk)^‡í}KC´,Úlc²¼Œ¬ IÛ"²!\Y–´r•¼4Ýv‹æ~$?³¬bÎWæ$𢵭t‰O©ºò„5?¿†‚Ѻ<Õ”³ ,;cN;ŠJÙ2 7-Ù'{ŠÄö|TÁ¬ÏÆi@¥'©Œ>/p%žÔ´Ô„ñ·3{スaÅb¹±…õvöeÆS…†d 枘­XpßµÁ}  ‹qR‹˜7³süd¿•ã‡Eÿ> 9$Ž¹Ï“0ÊózGªZ‚/]Dä¦R YšÒI3Ò,ñ~G³ž2¶îlB¸.f¹¨ÁRÒ4cm-ÁXA2“¦)£ÑÈÅ-ÊËAJ5×Õè«™êùÐøŸ0…™9oOZG³ëm¹$áI•¿MÁU,iÖÄŸÍý¶Í‰÷HI GìííóøñIædRþè¿Ïææ:Y¢‚£Lý|ÛgMä¿tì=Ÿ|‰â³8¾«¿÷[H4X;³çœáŒ<íÙcÏqfƒf’(mÁ8Qꂪ*(ÊœJèÊy¤XS‘e©—¼ÓŒF„HHÓei©JMUZªÒÐÎwNa1ܽ‡{î’&)W®^æÍ·ÞàâÅ Žt” ¯Ü¸Î;·øøã£É„Ýmo?"ËR'™ƒÔBRH¬ô ¿DkËh4%Ÿ–ôz]®_¿Æ«¯¾ÂÊ OQäTUÉ¥K¹~í7oÞäÁƒqÿî}6Ö׸õå—ܹuä¥Ë׸~õk+”¹&‘)/_»Q×Ft¥1`•÷ P…a4ÊI”¤ßë#ú²¬G¥AAšô2CÈ cE^T ' 1QJ²/aÐïR•%¬ã€â@.Æ«ÝG6ˆÚÃtnEa¬EK^äŘ^7§¿bYÛ0dÝ)0u0Öa1X(rÁtœ€]¡ÓÙ¤“­a¬dZäŒ'‡äÅ!›—:\zqÒrû–äÖÍÃBuHTgÿ¡1Z{ŸB¼ò…ùîˆã÷‹»÷o³uaI^ mªÎaò2+A%QR1æüÿì½Ù“W–æ÷;÷ºÇš‘ @‚ @²¸U×ÒÕÕ¬¥§Ç4=c=ôËÌÃ<¨ÌôèOÑ G½èU#ë¶iÙ˜ld6šî–4KU×^ÅV±H$±'{,î~ïÑýîá‘  ^ÆJ ‘áqý.ç|ß9ß—ØG{ ·~oÉó„{ŸÄ÷0¤áìñsöñêœ{“M—u%I4¥(J)pe8̸ÿ€‡»÷ÆH|=ˆªŠ¸jÄNÔ¤+ã²zaáÙ°ßÙáW7þÛ ë‹ë¹º¾õé`£ÿàÅ@|Á˜T ˜ÄáÜNú9££§CŒõ!©õ“%¢Î>èöûø3Š÷Œé3Ýå¤ÿ„Ä>&îÒn¤$Ö¢Þ`Œ'‘š¤’ŒóúA¶p£ßÌmº.9"úW7¯¨›LÊõWÉ#V®ë«,#ËxSÁøÀ;yð®Mÿ¸Å½O þãßßåW?ƒ{Ÿ†‚#@gÜin¦d{tò)OëHj¥_;*Œ¦Oª½F-‘˜êÑSUäõßy Ø”¦›¦V9H„z%¾ãáÇ«¥üb¤Öuú×M©o;§ Zcò8]½ºÐóó:kß/XPø)2cNKsM˾”®#‹ÈÏÈ9 çb3E'·SUº« bæŽÏä˜Ê…€¸Ï<&X¥«£”›oåtÜd÷ŠTã?·«†¥þÂzÆèÍ~–cÓé9÷_KÌ}d'‡ø}ÍûdÖûUEsÇUç“+W7ËSèlV{ ©žs8Oc i|¥ oLðk°6×Ó’nÓ­jcP\§À°GïacÃÍðÂÅ ë$š!‡6˜ÛN“)dQÿW²¬éb{ÌÌãûoMZÅÅû©qãî”hL‡ýcœó¤IƒQžñû÷oáUè´º|ó›_ãòöibª.M¡4¢žOÔó‹8]±¤rêU&¾¡Ÿé6ùù$i:ëÌÁUW&zåTiÓŸ;ì}a=Œò!ǃCöóþïñéÝÞåãoq|rÀúF‡«W·¹ze›O>ùï£QÆÃGyï½ßa­e4òû߿σéõÖ¹|ù2­V UÇááGlomsí¥zëkôÇE 0¼/°î©±¿ÿ„ÃÃ}®\ÞõúqÍzÕH¢Y¼¼šè Œ†y^ŽÍÍM¶··Y[ë!"UWÃK/½Dv’„Ñp@¿ÀÉÉ ‡‡G$‰¥Ó^£Ó^cØ‘ç9…+(ŠkZ­6F„Ħ¸ØÕ b >EiÒ m´Éò>bœS¼cÀbl1)»÷ÈrÏ“'ûXÛÀ˜_s||£Ý]v®]a­Ûæå—¯sãåë4 TÃþé¼bËÎé²#¬*ž*ÝA$v$Å‚ÌèÕ’e#ò<Ãû e@»#t{¦#DAš(æ(²„þq‡áÉ:â¶iu®’$=œƒÁ°ÏÑÉœîse§ÃÆVðÁûCvw[XébÒ$tNãÁ9ŒqÁo3Ü]¼W3aÌS Õ†JÂû|ÂþÑ1Þ;<|¦ƒÅ`$ìuB¤¤´4Ž1kòsȆøw ÙŒåÑ£>Ç'Îñ`÷Ó¼rv\Zži% ¯6Þƒ²§‘ c58ïñê¸sïo0É€{÷ïÚ.‚ùNeA¢V õm¦æ £2“û‰ñüƒ þã›ÿ=^,/®×óru²¾óñÿùb >oàÛY‡Ä$¸Ürr J¤jŠÐÄhZòâ¡åV…àQÍ@rýVrDNX_7 žôñX,­µÞ÷c«wì>›ŠzE'â…ƒß/ùAȳKÖ]¦@u]й@¼F§c%ãdF 1Á(VÈQ“ã Æâ.ëðÉ-Çÿó.·~'ì=R\nq…%i6¢j)Ãíˆ#*2­åÔ±ìöX¥N%à+ötF£ó+ïƒÖ²©F³°Ö|}‹Ž±ãi\Ñ~Ö!9¶y‘Z–®|vÕÁ¾é×)=Vê23¢J,®K¥Õ[úe9²mŒöÌ&Ú& ‡y4Ÿø5ko½ˆŒL8—<ãÀñÙXJÊÅONK·ÕÎɹ†¾Œ‚Sã«§@ÊSS}†Ê_¨þ,mƒ¿’׺‡Ní̉Ïíä䄵µnµ‡•}6±sÌÙ!Ó t$U&ÖÄJ+`^gßó×T`ôêÚÖÖÊÄ>ïcL’ZK»Ý¦Ùl†Ø#±$ÖVC!Óݤ§:êþ±»Õ„ƒÀO§»V+ŒPœ›ÛyE§æÞqóƒ}Yy !æôûË´uýüù©'cÉã+&|ÛT«Y–×b8::æW¿ø ‰mƒ¦|ýë_åÊå-Ò4Hy">«u‚ÛU]œk‘Iiîypüÿ™[6|~„ÃYD“°:ÙX¹‹úþÔ lšÐé´£(JÎ{¿û5ïÿþ7!ÈGÒn'\ÝÙäúËWؾ²‰ŠÇ©Çgï¾û.ûû ‡C\‘³»û(ùCT•«EA«Õdm­ Nú'”¼äúÆ:ÃÑ€f« NޱiJ#µ´š¡‹ÂVÒ`qþ‹˜$tU$MŠ"HÂÞóàá#Àp|Üg4Êév{Œ²Œ,Ëi4Z¡¨*/ð.ǹ"xÀäiڨγ­Í-ZÍÇÇ'üíßþ-YôhsÎÑívyýõ7xãõ×kšøAÓ{èõ6£—„Áûà!Sz&…$ùƲ¾¾‰*tÚëi°÷ä€ÿ:ú-Y>äñ“‡\¾|‰µµ¯¾z“´‘„ýPƒ/„ÚPté)÷ÅxCžÐqá ‚ &ÆŒÈFœs¤ h¶dˆ59"#D²ØA_ §äÃy²« ×1\ß!ËY>¤ÙV¼É8ppxÂ[œÐiÝd0²€‹^<.šOk¼ÐcÇ]X3ɆYD€ š¢Xœ¤ÜÛa$'m6Ñ"Ã’aíb¾s-|ÑF|iœƒ9‰ù·Ôö©qüb"§xÍ(tÄñh$®z)ý|ˆK°Æ±“rzPëö,PMm ¾âTɰÉkHÌ=zkmööGì>< ·u…Ÿ &EìN<‰ÑsöWŠËjl®L/­Ÿ¯ dÃáWþœí׿Îö ¼õÅõ]Wô7¤ÅðÅ@|^—Ö±Å˜ÐÆePRœ·xMPgBÅçD†5«#+š÷¹Pµi!M,­­.Ö%P$x 1q×3øZQ÷0x^¸¹hø¬Œ‰• Æ% >Vþñ™aά:œx(¡Ô¢ôSrv„XXatÔæÎ팟þðˆŸý>¾‰iÑH6hl6Ér‚.)ÁiOi ]$O$|çé<ÊÌùq.ê¡g}z™HÀëÕ˜fFëz˜HݘX0¯I¾TºüÞ“e9·nÝ Ú©ÐõØ”v»C§ÓammV«M§ÓåêÕ¼÷EÁp8$Ë2†Ã!<ààà &žLu.h¥¡¬5½Hª`Ë'pn’4KFiÒˆùlžiyŠ1éqþª©Z’§ªPëÀÅDK³êd-N½òLfãÙ¥uײ+¸\UçB ÆÉt ª§Ç®6lõ*ÞEsÞI¢Ñ“}Jš¤Î”º¢cPn¹}£îÙ³è¨ãâ˙}Î4ª^Ò`¹~†LÂäËm²^W”—¨¯/+míu‡uáÓiÖ¿éÊòr®Rì~®µ9·ØS'qÏ{f³tºg09=Ÿ…|Òø3 §+¼'AlUªòüþgÍ‹õµzÏÚ~ä£ÄžVçØXš¬:'Dè®­‘$vìÑpŠ$˜êz8E€Ÿž+ZÉÙ•VÀÄç[VF)‚î²¢®õt—aý>Œ ¦Ðív‹f³‰1fBur¡§^8_=*t: œ÷ Ò4å(V¶*2‹<-?“å¢pV^‹³bœÅN@0f¯ÿ[éeT¬H·2Æàœ£p>þŽa8Èùí{&-ò<ç›ßü/]»ôáu,©4î¤++jÏ3GŸM4L싲Jó%r^ù÷W“ÞSux ò©IbðšÓa„(IYÐ[osóæË|õ«oóÚë¯sÒ†®ò·fyΧwî°¿·G£‘¢ê¸re›o|óÏøîwßáÚµkícÁùÕ”a6`” 1V OHÓ„½£NúLj#еB³™_½Hf:çBU¿MQ …Súƒ,Î Ñÿà¤?äøä„£££XÉŸãœa0è‡XYÇ'û›ÓÛ0´;"`ŒwÙxLgyB>jPŒ:ø¢G»±M3ÝÂû„Ñh€ó#l:d}« ÕÍ ~ûÛœkâ°ˆñˆWD|,JÐXÞ'µbŸ²`aˆ>Ñ·SË¡T‚Ù1‡ Þ@Æ`LAyyg›—¯mÓüìןà}Û²0 (Möæ®%HÁ‰\º¼Æ«¯¾AQäüîýìPŸÆ®;?G“©NóòüÉyýˬ¯¥<Ø V‚—^Û“Éʶµ³w×)äésvöYÿ¥&’4åúÀ+/°Ö×ósýìþ ÿËÿñÃ?­þçí*ó-ÄåØ4'/ˆ`¥5x4èò1–qΣâõØ$ÍÞYðMÄ'X³I^hrÆ„|0DCÆ`nÌÏš¤iƒµµN‡f³‰µ6IB·Ûekk+$+.éŸ|ú1{{{•ô’µ¶JdA±ÖâÕWUˆÎ¹šSäÊ< ë:06 Ü-k–Z'9˜é„Aî)ßkæÞ[IøTR"§…Çk>:„V‘Œ™ÍüLµg_buY’º´QÕÕ0çþ ËÉyTÒ)vèu°QÏ' jë[k{ù*{®¯!Þ‹Þ¿Sí[þ Cíóþ¼9qÖ ” Ñås%б4¨^½:W/tnéœÊþ³æ²ÖäútQY“ÚË‘P\PóÆ5sý,ê"fZYëž#«|v‰£ÍòµÏU  ®L~W:;'æ“ 3È­Ê;uÒÓ Nà—Äôì’yD«,ðùÿ™S~±z\5t8xd)ŒæV$T¼´ÚmˆÞ0¦–Æ;W̉gÏéœ*å.V,^Q}:ª¿àëLw½ªÎXw IDAT*išÐj·h4Rkâx®îR’ ÆØØQ:ªJ‰È,/Èò|æþy– b=f¸¨Qôêñ¿.°FÏÿýª [eb2ñ\©Š@ð‘ j³¿¤i\y±6t}þþý÷c M —¶7hµÒ)T‹ÉÂ+™G7Ì™à•B–\h'Rž¦,Ö³àtÅ94­Cµ A«1/Q’Ôbaç¥+¼´sµn›ÄÂÆfííKܸqƒV»Í­>ÁA ¬u×xíµ×ÙØØäöG·¹{çFÙ€þ°Ïæ¥M®î\¡Ûë0Ìúl_¾Äε+ìïðéÛ|pë÷llöh4äùO>¹ÍG}î%1\ÞÞbc}~¿OšZ¬F£,vI²¬ˆ³ÕåºÝ.¯¼ú Ÿ~ú)‡O¸uû^ýÊMvvvP {ûùý¿cw÷!{¼ùæëlnôè´[4ÓÍ4%MS>xÈp8äÚÎ5þø›ßâÚÎKüøÇ?áÝßü†$Ié÷ObGAÊåôOxòä ïQžF£ÁÑÑ ‡‡‡4M’4!MÚVì ùF£Ñ`}½G’Z¾úµ¯òþì{²±Ùc8Ð[ï2 v;ú j«UåÏð‚+ÉE ’™Þ8—#¤©Gur€±}Œéc(ºDtùÈ“ s¼SÒF“´ÑÀ©2ÊäÅ1¦yÌúvŸKž÷~uÛ·8öp.'i6c„[Ô‚ÅÓ…a2ãü×…bÔÉŽ:€ÿz¯Íµk/sý¥—åÊOù1^sÐa­Kf„hQ Ž÷ÑqLçÔ£®`c+áðè„ÍÍËÜ|e‡,Ë8<:æÉÞ§(9Ð:gß’ +¨CŒ)»ç3´p¨W®í¼L§-8²·oð}K¡FY$04 `Šœ¹Á~©É†ÿîŸÿs^Ùh¾@X_\ÏÑ™¯ü_ÿëÿ‹Šå^oê«w© Ñ £NpzïÉó‚²EÄ"bi6Q6ÆóþïÞÖ(ôµ·ØÙ¹L»Ó“ÛÓÓ:ßéŒvëêÙëü´AW]È_ôÊÀU§Žž,ž;ª!V+ŠcàòåK¼ó§Â_ù /]Û!õ«bœ4Mð.ü†sFØÜÜॗvxçïðƯñ÷÷sÿþ=FYŸû÷ïññÇ·Cw‚Í­ Öz]î?¸ÇpÔäÎÝO¸zå2½^þÉ1·?þˆƒƒ}Z­ ¹¶±±Îúz““c’Äb­e0PŽÖ(ëk¬uÛ\ÞÞâÚή^¹B¿ßçÞ½{|øÁ¨WŒn޼ɇ~ÈÆzN§E– Xë6Yßè¦A’7/F±··‡óDØÛßãð舃Ã}ž<~„êkl¬wIˆyõ#ll®Óh6­Æ ÑHi4‚¾¿sûûûlnnFɦÁ›"J WzS]tca;%tj@L2f@³9¤ÙaíˆzS±zpNös'9E.¤i›v»‡µ)ÃAŽ+2ÒhwFlmu EÖ*@î”Ôe _òóæçä×Å–µÖº<"m¡†,s ú9ƒÇ`TÄïç(}¬ ÷áŠF=Fç{*Yk1ýÍF—ÑHyø`ŸQ–±0M’é!gܧC9Áš@.Çø a{¸_P ÷sFlù “9OgãŒlØÜÜä/ÿò/_€¬/®çêúOÿé?qûöíñŒðî<ÝbnØãÉÃïSŒ Ýܦ$¨)4âB•ÃXG#V¸Z𠊬Éáã„Gw 6wÖ¸ríeƒ>br¼øš&¿Öâ=©tø¿H\ƒêS\ŸÇi“{S"éµ?jñêW 6óœd–Ÿýjÿç?;Þý¸÷QèhdYNš6ð^'5éË䨹1Èô\AV$©r>¾ö~¥¯g8p÷nŸ»wï "lllÐl6«Î‡V«I¯·ÆæÖ&ÖZv®íPÁTÍ9ÇoþëoB;³÷¾7fÉ›ÌN§M%§+¹eB¶éìqƒÑp^}¥[]ïn˜&&Á±rlKí²DoaqVäçk²WˆÎ$g,eÇ‚ÁhìN=E¾”`Úl #˜³É‚ÛÇ$¢Õþ[~ËÇÄtY²á"hTÙç>3‰ ÚóøàiØI’op½u ç\x¶³æ…€_‹/Ê74Qâó¢‚ë9K¤¦ÖB]È‹,Èû‚á°ÏÖæ:›=ŽƒŸ±†F£Ép”‘˜¢ƒa88as£G»•ðÊ+×øÞ÷ÿ„ÿðv9>îóë_ýœËÛ[¼öÚ«ˆÀÛo•ÇsçÎ?~Ì/~ùKvíråòeF£wïÜáñ£]7oÞäÆlll°··ÌåE‡¼÷Þ{ÓétšÍ6ý“!ßùÎwyã7é÷|zçSŽON¸{ÿ.ÿÿþ=·nÈñÑ!=¢ß?a}½Ã믿ÂWß~ƒ«—ú¼öêMøõ¯ßåÑî?ÿùϹ{÷Ýn—““vwwArœëséR‡¤á¹ruƒ¯ó-ŽOö ¹{÷'ýaìOxüx—ÛßìÕà ÈF0¢šé&iÒEHñEŽ÷›(vŠhÆþ“Œ|ÔàþÝh'Þ@Ô<. “|=Ö‘§pz×6³ÔWåð`ÀÇ·ïsôxÈ`¤ª¼8¼œp2Ü ÕêD‚5™[|á½Ã{P×&I<¸—sxðçwîbd kÚc§$˜ëçdp0B2Ä:N†¡Õì… µ¼ûË»¼IHd““‘àp¥ûó)O†ÏâúÒ’ ÿê_ý+šÍ] /®çç ü›óo^ Äç$×Áò2 àÝŸî±÷ÈñÉ £ã˜Õ2AZ«Ç4³¥sÂý»ü–CŠ\è<¾Ë7mZí&–>ˆ«Z~eº*hž!ôóJ4\˜`Ö*uÅz•².la° f5@QBWƒê@ÎÐN9ÎF|tÈ?ÿ Üÿòch4f4ærgÞØ,Ài^Â(sðP¹X7NtJÇZD0 …WŒ± Ýã¸bYƒÓc¢§¥NêR—–'ÆÝ eGC–e†4màtªó³^‡? è_dÞ}îsöÌ{8-G"RêÄ—:Bá ¼wEQÅŽyQDÐlÒÔ¾ßðþûTg|Q\ÚÞbm­;[Çr„ªZ™¢Y[ÆñA%±6-=§Oá ø"·6(OÇ·a*i•ydÛ„A"išÒj5iµƒ¯J  ýÁŒÁÚD)œÇKQX‰ Þ ­¦ÅXÏ¥õßøúW¹{ç6?ûÙ/8<Øã׿ú9ívÊ÷ÿì{looòíoÿ1ªŽ÷ßÿ=·oÝæ7¿yÌ¥K—ôŒ†C.m]âæ›|÷»ßá«_} ¡?8&Iƒ1ü½{wȲ!·n}Èúú:F{m5»¼õÖÛ\½z•·ß~‹¿ø§Á­[·øðÃy÷Ý_sçÎ' žÑhD·Óæßøo¼þ:o¾ùFÊÖÖ&N§êÆúõ¯Åáñwî°ÖÐl69éÐëµyùÆ5®¿¼C³™’$†7ß|“á`ÄýûøÝ{·IîÜÇ& 6P‡ˆ²½}‰7ß|7ß|µµ.÷ï?d­·ŽµBšZZ­Oö“¿—qõêeúƒ#z½.ªŽõõuþñ?þóÐÍáBÞ‘6œw§3­{ÿh­ˆM Š"ÃC\üÚm¥ÝñˆâýkÆÓ#˜C ù(¥ÈZzl°k¨·ÁÛà3ÒšÍ&t‹ûw ð­€Õ ¡ê_“è7p^—ö*ˆK‰]DI0õˆ*­f›½'‡<¹¿ÏÚÆY–c›BÒpt{wv…§Èï·î~cdÂ=ME1X¼·¸"¥ßÑïP…Än"´I"qTú@Næ‰Nb ’X[Ð]kŒªð™C‹EÖ&!E­EM˜7TþVþsÙß¾”dÛo¾É÷¾÷½hë‹ë¹ºþí¿ý·¿ˆg’¸Œ«þ1üî7pçÖ!w>Y'ѯ0Ê[AÛQ]ñ“‡“ÔÔ(Š¢ ‘Xúüîø Yáyéõ#vn¬qóF‚`Ü8¶•ºâøÙ“ÏØÃAžu±D©‚¡ö¾ˆöúEÃd©å–Ýߌ¿WB1a”ÁGŸ(?úøñOàîG` K£ÑŽO0$?AGÙF8;³LøNu~’÷4Ɇ:y€1‰ñ4! t?̺ꕬ3?»”¨rJvCÆf!¸5–<Ϲ{÷nåë‚ö&ªJQŒF#ƒÁ©1³Ö=á%“÷éêáeɆZ4~®©°ˆœz>3ßs¥ŠÈÒ?$°f œšÕÍ0ùìx jâ³ï…çœSý\5À^Ê‹KˆÉ”FòBÍöóëlª*¯eH©§ÑÙ0]¾üÞ–Ÿp«^äþ¼~ozŸ˜8Ãt•—YMB¨’ûŽ$Ý"UÁó>óY{ùYRLgûçÍòg»H«¼.%Cv¶QõSªÔ_ ½(TïbYnÿoAFʯZUÖQ­ÙYÖŠ*߇y{Û ól=ÝG&òt:[>ËgvÖy*>ŽOìL£öyZJR• óFªò§š?©Ÿ5rŠ€ÑØ%é½R0’$>T£Î!êþ2Oc¬Ò©qê,VžºgX}]k+"Öûà›U¸<È+Å(¨ÏqNH$E½!¬„0ò=‰¦é–Yv :¤ÑT҆Øœ’_—zέ]\Ö¦­at“Fr kºxŸPä9ê DrÄxÓàöí‡Üþ²QõŒ‰_S çž~fë7…0m¥&#i¦¤iBqâhtR®ß¸Âúz €£Ã!w?=däKœÃT¹¸èØûΕE5LaªdÈÁ«Å»RúÔÇ3ÎP&DAUAÈ‹œf[xùÆåøþÂÑAÆÝO)rC6TR4œ‰[©è纷}éÈá?øÁ tõÅõ\]÷îÝãïþîï^ ÄçbMa|Qî“áŽáÑC°¦ƒ š…M½4‹FðZà#£¬(Ÿ'p‡Ç켜4޲xP‡*¶©FÊ.ùY²²º÷ÅÝ”Ëg1Yù©1ú8Õ9ñ”½Ê\ÃÌÐr­'Dò¬ÇÇ÷ùÉOà‡ÿ~ÿˆ61tQoBÇÊTNTTÉ\ðpHô3Ëuä, ÆÏN AÄŽ+ÖÎÑêžuMWèÏ“ )Û˜ë÷QJaL›ŸæyN–eW¯?K¦£¬¢dºã`©³†øè¿R“|9«[e¹Ç'ËO Z«aß²±*ÐÌíJ˜ï¹ÚŠ|8ø®W“VÝ ^'Ìu„8Ǥ‡!×Ë$Г¾)ZDµ úìΆñ{OJM-ÇÖU‹VÃêj^9µû[Éôiž+o]ÊÅEõ©lžåþ¡3¼OæÒªã®0ÛZ2‹Ì• Ðf)¸È5O’dñy°œ_É¢=Ÿ_,ølÞ_dê?*­ÊÞ±‰Æ„h*>ÛÜKÏ ®˜el5î2;ûì™G®_¤³r–wÓªÞ¥,Wš¦Xkh·[U¥pݤ½”)œ–[ö}CñƒAÕ“G©Æf³»Š D-÷é1Ñp:Ÿ%7¶Z…íêó~uÂbÞóŸ,BIÓ(b ¢Âh4ŒÏ?xi­w×(Š<\¾ÚSÔ C‘{vw÷ùà÷ŸP8ؼ´ÅÕk—IðÖ€Ušš{xM•ÒÈyZóÕLy¨}~€ý³’o{:óG¦ö=uŽ=RÆ?;±öPÞ|óMvvvÈsG§½Æ¥KÛ(&v­(Zþ¼€±†^¯ËŸ¾ó-þäÛß$±)ë½8¿2Œ8^zé W¯þS†ÃIjh¶š¨ÏAS+\Û¹Âö¥m¾õÍor||Œ+›¨ƒÄ6Xïõåððc,ÛÛ—øÎwÞÁÚ„4m bôG¬÷zdYÆÑñ ªÂúúÞgòê«×¹zu“7ß|…¢pôOäyÁåËWètÚ´šàÿà Zív(„ŠÛôÖÖ:ßÿþŸrÒ?¡ß?Á{ÇÖ¥-Ži¤ 676év»Œ² ‘àçÐë­sãeÇ[oôûœ/ñ±µIo­Ë`ЧÕj"GÇG4’P]ýúuFQæçò‚K—¶év;tºmö÷÷H’”Á`ÀÕ+WY[[‹ÏÕ.¸”\ÆWç˸»8žiª õ9Þðnˆ×!iZ¦h*Qâ¬Tî±ä£”lФÈÖ0ºA#ÙÀHB8rŒä¤ÍœN'ûOr=ïº4’5<T›Ÿ€šÐÝvJéóâ${5»µr@c0¼*ÇýcœË±¶I¯×ãÒ¥^\$‡X{È`pB·»b‚Œpܯ„(èCàTb·–ï8êð V©Šæ×LGµC7$IÚ¬÷Ö¸ti=jÍcí!GÃc6=ðw1i^p¯§ØÙ0Ýhù¥&þÉ?ù'ܸqãÒúâz®®ý¯ÿõ…M_\³¬…µ5áòŽÒ?†“CÇ;w±ÉUÄ'ˆ„O Åâ‰æ¬`’Di¦Pd#lâX¿Òbk;c}³E£¥x\8„|­KmFÊ(gÝë—šp`f•½~DCù’U­ÊûˆƒÚ‘#…¬ßâö‡ŽŸühÈOÿ <º2cÚ˜4;~‚Z=(ä<Á¤lÄ´¶õ™2JŸsªQ™6N€“fÀªçÆÉê,Pÿ, ¢üùRç{05=6õï×=êÆ¬¥±4Àh4ª~>I’ÊdZ£éædr´Üé=“í1g¦µŽÅ×’°Z òT2š{椋²ê<6w5¡[ËÈÜ÷ŸYm]ûœñÞ“$ç¼óYïý {˜^¨3º"ËÙ.Ì2Ø]Õàô¢YŒ"+½¿”paé­ÚY]ùøÊ_FK°lÂ|}’Œœöupêâ<š,S/T­ÉVk²ª¶6¾.‹Ví?Ï8%ÊýÚ¹Ixî‚ ›,º×œ³7-;Óó¹ß…IyÀ©}¤&Tɽ͔2’Ú92;`” Âav\qÞ½×; §Ï…Už[ÝDù"†áe1†V£ÉÆÆ:nc¥>&åÂf?k1“ÄK°ËÅnê»"BáýÁ¼Èétº¨'V>3×+ežÊé_n_xûÔUò9Wõêɲ “lí€qчÄ;Çáá6IB·*`l-ÇÐë­£*xÿýÛ¤M‹IG|ã_f½* 4 qAÎÒÐa•¥@GEk¾Á ˜˜Û­ÞÜ%uYVFpW?»ËÏ(’Z ÑÙ ódôʱ.MlkÀeŒá»ÝN;Æ"&˜ã0>v.×D”$±\ÚÚD"‚1¡›Å¹1Ž­í¨×O/*d™ `lÜGiB#Mé­uÃ{ú$‹yÁ;‹÷6IðÎÓi¯sióJ<çbç½±º÷ž«àÔ¡Ñü¸Ó±äÅ1íNB›& lmõb×cèåC’ÔçÁ£ÂÚ$’”B’Òf‹v·‰èŠÇ«cm­$ÃTÕs98Ø {_;¡Ómpi»ƒ'ª¥$_/íTùZBZ‘³—øÖ·6£¡pR]•[]ݹŸã0å$‰ÁxöKÅD¢¡ˆs@À˜‰}Ô”þtä¨fÀks I2Cð]ð»ü´E6Jɳ6¸u¬¹„1]T<6qx_àuD£Ùgm#!+ ™nÑ[k±×ß e·Èó.o`ÓI‚IýØ{ Öe¦/’Iü¸-C/ÉXÁß;mÅñŒÁ€`ã0’ƒˆˆ±¡sKlØÃp1fµxq ‰6H7±µFÉAFiX‡¾×Ó0(J˜!EÒG4;X,z°ÔÇj™\êlÜBk*º:m¾\dC§Óá_þËù\}q=W×ÏþsÞ{ï½ñŒ ‡2Þk4…o};å¥->ú°ÇþÑy6$ÕÎ+BZ°ˆª Õ1¾pxTac½Ë[o¼Â×ÿ8¡½u‡^o@’h蜹Ï’Õ/íÐþéÏ)§Çæ3à9ª®Áêý£&h^@Q€s|ü‰òë_ ùÕOàöàòí´Ú4Í$X0Ö@®U ׿X_$Ù?Ï4÷¢ Ö÷:2 ܯ‡P’‹Èi9˜e»JÃåe@¡yÀYý*5§¿?©«®˜©ª«eôz5øòÚÏfpZ0ƒ—«<ÿšátÍøò¼ñ/Á²’\ò²h5±ï^였;Ê“~=?Z^謦ç]6dÈ`Å2w(SÝ#+éÜ׿úžÁôû¯¶†.ÖYPƒ¯¾–`ñOjZ™ÛÏ3Ò›Ÿe K¦‰ØñŸ]Ø?ôb†‡O£ªvYߦy}Ê Æ½zþ^uÞü½(ذºŒ’R©ØÍ܇dÁÀGΈ¬”º™ú)RMŸMõÊ,9ÆU.k-£ÑˆF£A·Û© & <ô|À~¦n÷tKm$÷ÇwÞk<{ ­V:wÍÏZk³ôôçšhnÀ[ŒOƒ4ì)Ð\'öô‹þÕ£ªZ<º’ÄR䎣Ã!¢A*ýèhˆwJ«Õ"ÏÆ&• HèÒ1¸0ß$‰s(’ø°>Ć¼ËƒR¸ 8ª_…à˜&AìèpˆøކøÂÓj5È\kZc\b…I–À,f]_*²á_ü‹A·Û}¬¾¸ž›+Ïsþê¯þêÅ@< w<+’ÔóÊW¶H“6÷öñìaÌf5L¨ì6.0ò&‹6Ñ Œ60Ò@}C_põZ—¯}½‡4ï¡&m&L|ÌéÍ\뀆~ɽVL&gIE}Æù°Öbæò6L,Ò [|rKùÉxïÊû–Dz$npŽ6áWdFòUO#¡óÍ3—f%µ«&©¾fÔ霛)m4¿bvºâzy 碉ÓIíyIqIn”`•¯Kò¬–ΗX$I× Õ-¬üþ¥ôòdÇØÿâ,²áL°¬ø-+Á£+ºËO¬›8«N VÌßõÂÛØâŸdjœõŸÿ"ë§ÍâWs‘çpކ•ï_ƒÓO™G¯–éêGL)RÂä‹zLËÑLG½â{úç'AÌ‹“ O0.÷UãU=GÆ]«O‹l¨?£¥V_Ð_wtVF”Û¼ppµ˜gón—]…¬©_ÖZÒ4x5ÙÄTg“12Sêmf'i¥ñ0«b_jµŒÿ®BQ$6 ïeŸÓ拜'‹Ÿßõÿ‚¼lãj…aÇñö«m Î_‹ðUpk/ñ`ŒIÓ 5àToŒ,|ø$5´ÓËü7~“ÍcGÙIøÝصà±jC QÅ—{vìHXì"«H†ÔºÖÄ/;ðµäóY%¾eUõYšörî^vš±(¿ç«sQý¬ñõˆŒ08JRAŒ©d1E êSP/ ŒVj†ß1‚æ|µõ÷5±ÓÂŽïQŠPu/±KLNÆ@ÚT”,¶Ý‡¤P㘉 {†±Q×€’$´¨å€ñw´vnãÇMê"X_„s ^} r9Þ#b+I pÞ*ÖŒ;yCá—NL­’Traa=UÔ@EƺàÑ Áû¦{UÞÇgH”v+U]x‰°V ãb ‰Ç™Åéçúx7B$§ÙTZmÁÚ(Æw*ˆ¤@ƒ|dȇMD»4-’Ô€:¼Ëðn„19I’ãÕp°ÂãÇ}ŽŽ,¢–<˰Ҍ÷c8-ù5=½u ¸èy;¹G¦I WwïÜça’T±]Q€bmZI‹ä$&t÷¨*¾…Wƒ“,xkã¸c1Uúf@r {©jŽóÖ4qÜùô!“=PÁ9Þ_’"ÿ§}iȆëׯóñ/Õ×suýûÿïÙÝÝ}1Ï$À®Î1, ŠH¬­;¼y@΀8:ü‘W»‰ƒúû¨¿#Ö"ê±&ÁEuˆ$#rw€²I¯“!F0âÈ‹bì§ä ÓÒ5¿×ÉB9û¢©+âä©c€ ÇÚRkís. Fºø¼ÉÛ~ôùÉa÷.àÖIì&ŠÅØŒG͸ڭž¼MƒÀª·»¡^¤SÎpKƒåï[æÞŸö®Y7l­ä8–xΓº ‰º>Ý!c²¡,¯¾é±ìدZE{j|„PÉ…¬L6Èö Âb†¯“¾%z渎UýŒ5¯ٰ̳8Ýéu1ƒÙ2W]fT~9•ÌÂEöñq§à2û÷"ÛŸ}¢J~±”Ý’ÓøÅ¬ró0Â3+õ—ß8Jù¯§VŸöZ}Ü1$IB’Z¬-»%’ fB¦ižWDe’=0ž,FÇ ®ð¤IÝÇêbþËþîÓ 7žÙ@Ì_Be´jÍñZeœå _ Þûàs§å›q§C¬ÔÕ¤ª: Ÿ“BÊ'·öøÛâXkîðío¿Åöe“#ÙUj0šåeüDìoÊJsÑÕÉ?,„>‹ø·ŒÁlßÍ÷a濆‰œ¨ã2µ¿ùøú° u3é7ÀÁÅq”Êø4ø5ƒv}”{ Ó"ˆ½”À=Ñ$÷t«[]æ§hPY 1–xÀ!ÆWDp9¢jƒœrì0À€/_¿*ª%ï>˜ú†Ïc«.„±|ký pˆÑ 3{ñ¥ù¯¯:}Æï>oÕ#3‡ŠL²aüªüÓ×0tú%t‘x¢gJÿEÂböš›`Â.»9 qÖbzqa­àÜ1ÎàÜ!ЧÑ(h4 ”a”ùqÕA§ ®päyðÂãh´ lrL®#òbä˜$Ñéš±ûè G‡9bøŒ¸§xÄè‚àS0Åœ.œŠ²¸Aæ2ìƒÙÈsxp@«Õ Ï“$,ô·Æã}ÁÚZJ£a”ÁqF#iÐXkY8WPŠ+@ GJFbc-ƒL¡08o"–"¦+2œÂÑþñäû‹ÅÚô™#H_²á?øÁÊÕ3/®×gqíííñïþÝ¿{1Ïñ®iŠ@Ò€ãá.½mxímx÷=p.çøp#mÐ6à½CM8¨ÁˆÇ3ÂØ>ëëÇl^îÓYϰ ‡hŽU‹âȲŒF§<ó›AÇOÊVI‡Š¯µåù/­MÃó6 Ê%cÀûLJ~ÿ^Ÿø/~û+xø)à»XÓ†Øæ‹$1 ©þÓIÜTBýv6ˆê)óäR¾CUOu;Ô½Îûþg•ì~f)ØdÁEî{ t±RgCýçJ=ØU‡Št‘%öšÒ ×kLÚjþœÝ]¢LΛÕFQ¨¿“<ÃrÂìÛ/ºçÔäÇìflºhGÒb¯³b•ú…ɉE ¾ÒB^ö>¦Mw˽·¾žgùc”UÄå~=  Ïë€ñ†µeäV,& ÓE.k d§ôÜÍÒãþlÉ©,~jøÇì‚ÊÙ˜Æ6æššóYÿ&±ˆ5•¶_bíð[®Ëº™ôôÚ:·#R©UðŸ.ȸˆG}§™öi6s†Ã>üðCŠÛ¤0cJ#ÆHbÈÓ39^nq[êOê”n;øgäy16„Nõa5¬uÚì\ëqó•Ë G?ÿéo9<>ä¥+×ø£¯½Ižçüê—¿å“Ovi¥ þÙ?ûDùðÖmþëï>A’Kà›qžT-ê[à…n§ß?ø‰±§¼úžÅõ¥ ÞyçÞ~ûíˆÚ‹ë¹ºþú¯ÿš,Ë^ D  Öóž+EûÔƒlµ¤k=xù†ðï+O\á½w ôñÚE5D¨Xc1ÆÑë.m§|õëW¹þò¯½ú„4ÝG4oðšÐL{øÐ< ÿ™ºö+‚Y§^OëJÓA7÷óìlXä³.~ŽË3íŽ2•ÞórIÓžî\¨ïdz \‰’%ZUUOÿ7ë=½ú ¯ƒYés—$5°gÖûÎêt«~V—#§OϳÕÞ³%¨@¦JÿZµ¶³M­G¡Öùðe‹ÿué¯?'kùm­è.cé+ÿ÷2.«´ŸŽdæ+ØE„"VÞfY6῵j,vÑŽˆ§W.û:%ÑP/v(¢/Lv{øÈì–ç±_8l’T ã=d¼Ô'ÁÌ_u1¢†Ä´,Ÿ~rÿ´×¾Æ¥Ë_¥à„f3Gå‘ñ`$êÎ×b]%øŽiåe²"Ù uÏ•Uý“>ïËŒ †Xý-3½4T1ã¼BCµ¼ä”¾õµ©eGƒo¡‰Î†’h^R™Úy!cËÎ yH$Êw6àÓèc5ÿgå~–ºŽ”93áþ%vHÔɆñ綈OðÎb4úÄr©€mäwí8žTŸ ®‰8[—Æ–:~âž µ@\0¹6N«&Ôðû5yÞx^lm>Õ|)Tª¸Þ”ã§±ÀQ*{HÒP¬uÑãÂO¨ü à½Ãù Ï!Iò„Fç!I{„ÏvÉu/†VÇÐíe<>8ääÄ1€ªÁy©yO} ¦ã„º´Ò’'êÂ’ÓãH1Õp?Ö„=ÏTž&>t„yGš4ØØØ¤Ó퀴eh䆵^‡õõ.Y–såêevw‡à :kÐH<—®tXÔäÑÁLc|AhŒ¥&5Ìklå{w¿š§u})Ȇ›7oò£ýèºöâzn®ÃÃC~ü㿈úîK½À)ðüóBœ©ü•0:-hìtøÇ¾ÉO.óèÑ]í£ÅÞµ€&¢+ñ‘z½‚×ßjðÍ?µ\¿Þ Û̱éIh#õ]ö›|øÃ7Éó.È(Þ5SLšÎïÓnÁ+¯m°µ-˜ä`œr^㟔r–/®¥””ú²®E‘­qëƒc~üÃc~ñ¸û1z@“z;±z‹j#Èi3®ðš•˜|Œ8êA{š¦´Z­‰D£ôvpª•Ñ_ý÷Œ1E1D–X¤’oÚlñ<Íúew¡4Z[NFéé’ K9K²a5ÀAžiWÀÓš¯:¡Ç¶èçw—\ŒöðË5bb…UûÞ¢W)—ºKª´°³¥m.fT_˜Y¶}6•½PÛæÚs擳Ȇéÿf¡Õ>PÛ§÷Éúï{/gŠë,‚; L§‰‘™òôßOUpתš—ÙwË›Vëy6^ ‹ýþ\ùè/F±ôê=ëÙÍZ+ãsZé¶»ôÖº4)¶"¾âŽVîK&z{à U׌Jå±ãu\|‘ç9y$ò<ëÊ/$9ý3õ8é"òKga,âeuÖÏœµ¿×c@U­:-KÖ‹óAÂÈ9âÆ2í’@Í–!ÕPõ«ÍzQñѪ2ýää˜÷Þû-5G«•±s=çõ7Hr§‡¡ûË3U¨gÓÈHüº<ÙÔsäB1œG—Ž[/¼©I0 6Q{Z¿½ëgíQãÎU7Ym_ÉãÔ¥1wªoð -,F‚&?±{¡"´Ö£.t„t¬¦ ¶lEìŒs2øvÐ7vBÓ‡x» i“Fg Û(ðºO^„^¤…÷I6¢!|”1ÂFÙMG`ÜÉ#9OÏëŒÕr^Æ9Ÿ€;~o 7¢ŠºŒ“£Œ;Ÿ>BñŸ 8>jbä*û†[·öɲŒ?>d4lÑH”?zH³á¹sƒC‡§’‚&ˆZP‹­-ç$ëäÌD›º_ƒ,±èk}‹§îùPB¾‹6FL¡«bhãöq½Àx_ôù,gö<]µ<d›ýÛº8;ëõjuw§þvÐtU°ì"@ñ„Áó›.!ƒ6 À;«ÚþÔøL!ÒfâwæÇB6ÊvUOÿ¬ýø¼™\i Æš‰ªñ™Ÿ¥œ¿ŒÝË÷Ð×jÙÍ)Ï4ª¸ f¾‘Êä~V—Þ©çcd\)¡‹ŽÙùçêYs÷³é’É=m&i¤¢á>ÃßKSæµµ.­V“$±ãŠßØÊPÎU˜Kú²›D™zÍúšªwñ¨cã,Ë) w Üœ.Œ8{Ÿ&NVÛ'ÏzŸiƒì‹îÁ³Oç=DÂAÑj][+Ñè9€ñÎ)…ó±ÃÄÄÏ^#ÊlÚ¨Dm|žfbÍìÎ1qÞóãý‚»wÃ;¶Ewã-6.ï!ö1IªØ¤”¥uå¬ ÿ/ ù>{':oG]Í{aò·–#©fͳ¥×žÚБmú@õfÌŹ24:EFèÔ¾+ï£a÷äÏhøGä9xÄŠcON+ÿƒd‘ ¥7XRŒ$ ¦¶ˆ¤$È9ÅÏæÉC•¾†|ÇŸq,5&7Áhè‚1|~d˜ê’="üWŸ`é"$a¬ÅãÕUþ&¨à·”M–±¯ˆðÿ³÷fM’$וæwUmñ%öŒÜkEPAl.ÓMÎP†23¿`æõkÿ”™‡y‘nrF„l@ba¨*TVîKdfì¾™™ê537÷p÷ððˆ ¬$¥²*ÂÍÍÔÔ®^=çÞsaU¾ fXéeWEù©Óð,]Õ¥3VIÇQS‚ÝcY©*ä:q¡»Y#ÆÄ¯/ɤ4 þ4»J)%Svi Lt˜B÷‡v°QJ«“‘¶zùˆ¼Èp>%.ã­Ê¸SÆãÉ‹,ÄkÛÃ&-¢Ö!&ÌK3¨““çŽ×oŽ9£ÌS "–½WC^à½çÕ«’xUøü³'ØÈqØË88)HÚÛˆ,y”ÒR¬ZGu:3¨ˆµªË¢AüNá_×ñ;ãÙp}\×Çov%:–ÚH;¿.¸Nu²ƒB_šû>B‹ÂDñ‘à×`M b1GÁcŒ7U|qŒ•!â=u*¦†V{ƒ,;&mÝc8¼I»µËñx?Ýc”ŒF}"sHÿä ¾¸z2•\N‚G*—X~Ï !šÜðˆQ“]¾ülÈþñ„O/ŸÀ¨ßBýB 16¤BZU† ƒ2 öDñ FËŠ†6WàøÆ¦ªüolAŸÜ@4¶@µ®³Î¬f×&7€‰%±Y›œ™&ÐÞ×ÊùÆÚIi6–ë¢bÑ}‘ô´Iå¸*]Ï'æÀœÍxuMé¤Uöm2µI9ûÓóªFd‰èøõ½Ä«iv–¹4+‹uN—ñ0³çW“ñYf|—‹ «‘uÁ„ô"×ì§*ÕçÉ(-|*©2¯Zj”/÷Ý2Άùꜟüù…¿Ðþ¼{1Ó Ú’Ÿ«ÛÀÕ¯ ¼œWu|ÞÛ7iË#+Ìß³`ïô¿uÊS‡f®2ã³³î¡éo0­Yod¨^êjdY¤˜6ã{SZOU…Þ—ü2ß«k]Æ5 ß ”/€ª+×ÔFÅéDíœgÍd—Å*9Ô¥M΃cãõÏO̓YÀ±Œ;JÎ][fÇGZ¿V½—ÕüÅeâú¦çxóZjsôø³b°‘!m%´ÛíRF©ap[UíÖã8^›ÅTª1“ USfâÚ*/%LHíÔ1ŽÈòçµ– šÝy¤ ×ó¦iõeS–ñ‰Y$EµºtS•“Ùªâ Wç\5¡ /Š50f¸ÂÕ1Hjr’Úh¶ó@ˆõxokàÐØPemDñÞÑï ’¶bJ™®ÄíÊêvcÇ t( $hÚS’¯£M5F°a^iðapšqXÛ6ßBÔ9Z{@ŒãhL‹µ(‹ÔªŽHªîŸ@îˆ6Æ]ƒl•ª†¹aÊ{5jGÄ71Î ÏE<ê-"í°>Ú!*Em'b ¢…h«ô%ép\-^Ëœ‘RZKIàòË5B%-+óËw¦i„ ˆZt²n%H?‰Å¹YvÂ`ا( ¦ÓÚAÕ ÖQ87ÑH<΃¤Qláôõ†Î€@ÌM®¨jjr0£òý©æ–”cë“"©¢Áï1dO|2¶Í±¶ž]S8áÍ~0xŸ‚B‘W¹ÐnÝd˜(YÖ Gbènt8=2¬ubîÞ²¼y³‡1; Fq£4‰•ª»È•(•/»lÔLù»naqTÄ5Ùp}\×ǯ æk} ‡0YñÙüFAdDƒ1#Œ´R I ®Ö-7*%7œc¥¨k)Bá{Q¶P‚‘¥Zú¤´g”jãR$š ø†uT‡¥ÑT1sWž÷×}¢Y8–PkQ:—0è§<{œó£:áÇÿ¯_.ÅØœoáË„Pª ¹ºš§m¼ÖÉï4pPC :©1¶’ÎVöéÂ]ÏÒÝKè‘-SE5»²jþç*0Pú_çé/ÏúïÅ€ žñ*©+K+$›zˬ´[Í oY pJÆcö†6]:Ýîý5¿!_Sô\¼V&  'T™¼Ã‹lÚ¥ÚíèUiíéœ ñùº®º$^u$øRRâ¢U§cý~p~?œ?0¯@媲k Ðˬ(MýàÏpIò«2šž÷yÓ+ߌï+½=35ãÏ'&f‘ 9š:ó” Î*ã4&”mxú4ü꿽++7«ù/Ôò4U¨öM”©9äfR*ªîf*e0+>¹)iµÌs9Cj‹^l– Ä–E×°Üû;;^M]ÎþZù5d`«È§-ÎiÆñ±’DwìXk‰"K’ÄuG5ù]ðã„1RϽæðÖDo 5Á¨ð,BFom„wJ–ôûôòµ7ÁŒó"ëÎ%Âïee¼®.d1Ô²”µŸŽ‡ÈDêçuR2®!‰%M“ÙÚÊUÎZõŸ¦Œ*¨7¨DäY£‡Cþöo>Ç눿ø«ûܹ¿@H)0ñ$Cjñ¢±8ªÌ¡íä¼ýª¬àw4FòÏ¿¥9ïÜÌs邽só—%“뜖Ï۟ɼ¦_Õ<<%ñ©tø«GbDb\¡X-—4õ¥?Q؟٨\£0(•r’x÷¥Iµ Fbâ(ÂZ(¼cä5]ù:†ªy:OQä¡Á¡$"¬€5ª d†'/×È0¦¹Îi‘•í¾4nöXSÀ-¿¡ E^:^(.p/DÆal)ge‹º8Ý*Dµ$’+Ó]é9° |èü ÷ êJ¦’äC1bJφòÝ­K‘¨$œ'í°VKÚ`,D¬MËŽ'?ž^ÕC7žÜóa_%Æd¥ôO5aX£(±xï‰,Á×C|éaÆ]PÕõŠiÉ2c¬ –Ç*æÌú±ÅKTŽoiªAðïR)½<ã‚¿ª D=¢iï¼s“­Í˜ý×O98èq:Œñ¤¨ 35åh7ˆ)ñˆä®Ÿ A"[›->zÿïßw¼ySðð±#M×é F% â§<Š¢ñØH¥Ò`ê{6jU˜Ùõtñ½Û5Ùp}\×ÇïÍÑÜã‰NòÍ\O¼Ç”íhF‚‰”jh9 «ˆk$=fœ#7*»1à}"h¥# †Á˘Z7Ô+¡’Âg)0Öc¬)uÍl0ìÚzÙ=yc¸,ØÇ»£ IDATB#kø¢ÍÓ‡§üäÇüìǰ÷\¢mð¦Qp¢x7 „ä¼Ü¼ZBòµ@Ö ìõ§Aˆù5«n8¯JÎHs7,2y½Ù -¾mlR'}#ª—¼Tg_P³#áÂ2J2¿sdéMâ¥Ò˘´\ÄãàßSüÖ¨¹hgÀÅ@ãy$Äø(œgY²A U˜Î¹ “ •i»êXª¢"]™óVŸqÞOÌüqgÅøºxgƒÖç_¯¹îÅÀúK- +ë^í}ž‚ÉEÏWVØ…6ÿ9}q3ü`ÎÌÛÆ«*®ðuçÍD¾%¦öû¡Ò‰„î^W©æfE ¡ØÝ×À°4’»ñk=y½³Él-»ŽüÇM½²Dm^‡a öùýå¾öò`õjòµÌÊ\O’jNùÚè¹ÝnaÐj¥Äq ¬µ91KɤÁ­aêsR Š©«ó£8¡ x58ç)Šb¢«á2 ñªñs\ýÿõŘ …H(µgŒi51àq¹Å9˜qÁ@éi-©2)ÎØœg2Þ£U›«²NØy:Å›œ‡G‡ÈFÂ_ÿo÷¹yk‡4uı3 ÀjÉG¹zϦ31ÇECÓì­\5óbJÂKææÌ•QºôXí\5l«ËE·É÷L+ì•©e¤V˜¼&©ü£1vÒÙ@%tb<ïMÊ}Šw9>Š1&ŠÉJ¯D‡+=TÀ{ðÎ š ¶…µ]’D ð (F@6¶XÖˆl‚µGF6Ì[:”ƒbL´£ä¨s…#ŠâØ7x•°ÇôÁhѹÖ¨¢(®ò7F]°},á¯m<Ž|”S¶76Ë÷)C$Çûp-Áè&^£rÕ[ïA}Bá6pÅ`z õBžH);•¤qùY߀ìƒg‡‘I¿“ð,‡ÑQhbŒ`¬ÅH„S›×'ô þ;M ¶„>Œ ìý ÆF§~ŠH¾H¾T’4øÙ]w*ºæ:¬ þ®ÊIŒï0ÍΠúV•N+æÛߺŭŸþìKz‡¤¦Ã0ð…‚‘’;ëM§Þb0w%4nÄZâyï=Ç»÷lnÀ«WŽO£à/©2s”/ …ÓÚ“ÃFà|3Þ` CbÓ€r5ºb¥25UgÄêyÄ5Ùp}\×ÇïÅÑ\†êmdYÉȅʈUËvN_J(i£)o*é.[Ý=à¥d{ &z‰Þ›³²ªÇk`Ã]YeaÄa$ü.’Q`QÚ^ƒ¡üÿB^ÎK“ÏÅ£ËÊ ¤ˆt)ò.¿ìñOÿðšý <Ù¬YMCu…øñâNÙZVa¡^ø46s3ªÔ•«’ ÜOÌܼ¬²Ñýö,~Àó%>V¿±¦ìÄÙ{ÒÊÒëeåk‘æ†ó£ËYç*+ÓV›—•a’‹½Û5H>iŠû›:Î'+ô¼8÷9Lÿ¿ „uÎ_øž³,Ÿ1Þ“ºßÓæëM©¦& ×ü{ýû\¬K¤Ö6† ¬_5UÕ³??»ë*|*šß¹ê»0~~Ëÿ¾4€~UL*›o™ïLK97ÙŠWŒËnç,’üMó$ÏûL“|)GÔŒÃg»Bµ–ÃhµZ¤iJš&Xk²]rá÷j2?k¾Á´Ø[wƒ‰i€ã:îÌX•l¨§U×™^¼CæË ­ò WËfŸTòH‚`ÅP¨+ý½±¦îX‘Y¹ÓRDYeâ]É‘”õk¸|Äá›!?üïoÀ{þ‡ÿ´Ã‡ßØ ài…½“cüe'ûÙ×W–»ŠË?9/霟]vý¹ø¹¦ùwYú{¦îQÇõÒµ±qó9è¤ò@…oVÛ®~Ù`ÈZ§CdSò¬…(¶˜8"jwؾ¹FÆ£šbŠÜ¢ªË ×b4°ˆÆDÖÐîÄ´:]Lr„÷¡-륜‘µìÞì’vJ’B†`3ò^¼€Q¯ ÓŠø,•1q‹áÀ‘ç0 16&‰Œ¬¢ÈÒî Póv/LÐÛwº$íLËq҃Ѱƒs[8ù¨Çæº!ÚÜúx-ˆ$!+2²,áø­áøÇ›;ÛmÚi†óðæ ¼}•QäÆn„®ÓC"O»mé´Ö°Q1ûDqPr°bp•DUè5k˜Ê8»$JD!‰!ŽbJ‰4üÄü¨H¯•|”Ø<à0¾¨Ÿ}ðŸÐZ‚.Ì’äl¼‘•L§_©ô¾òàÈ'^-ãXP›ž¨ "V)(tä¦L­ÛGSªLŒà]¸þÃÃ#"z§½Rn+Æ©¥ðUWÞÙ!¥Þ‡n‡€…ëôöÙß{ËFÚçøèu4>®±tÙx“Ò—²–˜SN‚2Ô)µR¯–ÝZý¸&®ëãúø½=´Tép妺Ú9çÆí²8W_IÀ'ñŸÿKLßcÐ f·»†wÁtn8Èè´;äÙksâd€È!ê ¼©ZÛ$, ÁþŠšÑß~y%Y,sËÌâô¥\YM©­ž’ç)¾èðìɈÿà?üGxþ|¢-Š"BŒ” NbÂæ³ªd«t•MHL©ÁYi ÿ&7ûÁK'ü.\,~æÉÒž'Ÿ´Ê8Ì2']¦òýª*£g˰\æ.O2­,GsÙ{^l«@ͪJß_àúk ½<À½ X6À3ÑœRª‹È; ­’4q¬u '''ˆ;›»ôz:­êC\=c£Uåðè-ív›8Nkïœ`Ž]É,­®É†ëãú¸>~ɆòßEáBë¢÷Ëm:µ’rlùÇcM›4]Ãûˆ$‰‚ô’!²¨Úi xŒí´…‘1]T·P_éŠA$C89EdXÊ8ýî2{H—㪔š 0(ª ®hãò5¾üâ˜ýã[>ý<}£>$QŒ¦Ô€ú³•¶z%7Ñܰ´ˆ”YÂ¥ó¥…ª‹”3mÃ3A Y´˜ý=Ëf««‘ ç_ûòIaõù x¾è=]ŠlÑËüør+«å“`ÑŠ2PÍû[ & D}CÄsQ ?|o]-ý &®e Dž f­¿LWÑ<“E÷1W–gÕë¸$ØvÀÿo’¨XUÆëÒ:~o–Qzš&aEÆÊåAOZj¯ª<¯þîœ+ÿΓgE6°ˆÁ ;!Ib’$¡ÕjÐßFA§™ ·6Žˆ“„8¿'1Ææ~¿O61Ù‡ƒƒýšTSUz½ÓRSÚS¨'¶¡`£Žÿø +mc ±-Aéõ%P]­çË¥ÍùçÉÿœß—™ÿMb¨IøT¯\m¬=çû͉ñuk ¯¾öû©ñX%~ΓaÑXo;Ja®cên®P‹S™CÉ€ycëg¶Ï6%ÆÊì±ôÊɲŒ<Ïëî´éóë ÷MÂaµ8¦„×Ô¯¿e%²·áõ£“’j¡Pgò{Š¢`8ÖzábÆU«%[z6ÿ«|=TÀ[ŠB "lħÿrLÃ_Ú›¼÷Í»dV@Žð¸RÎMÑ9ÉzÁ «“³îè·cƒvDc ãfWMÉS¥¡™¥• b,ÎEŒ†-^>ñðÁõõܾý nÝÓácFù ^¼:`ÿóC6¿\㛟lðÉ·R¶7SºÝ!ja”C¯çyù|Ä—_d<ü2ìźm¥ÛqûŽ¡³½Žµ”*–ì½€ý×°³ÕáÞýmv:báõë#>ÿå1>ŠÁïܽÃýû·ô˜­ÃC|±Æh°ÎÓGo9x{Ê훼ÿá=6vG8Mévíî£ÂòúµòÕ)wïÞàýs²Ìá <|Ðãѯ`³Û¦cr6×ڜނ¤Q Iœr|êÙß‹ù—ò<ûê yÛ·-N×ñãÅ1ʇìÀèx“hk—›:Ûë˜ä5Èþ´»'qÀD)òibËÂqú·¨Ÿ»¦Šd,;ffu¹”ÿ¶¥)vU¨)&×ҋ"Óñ‡2þUûS“Ï•Q÷ê/–/‰ ÅFBÇ¥L’â ð.#>àFŽ(q§§¤Úùä#Zé&®°4ÓDï=Y‘“¹Æ)ˆZRc<ÁÓ" ]®ì˜®´ f e µãNé÷F´ã@(Þ•¹œmä~AŠ*‰Sì‘ê1†˜áAH:}T Ò¤,zµ–[i·ÌCF8'8Ö‘JêÉ^“ ×Çõq}\«¤EEî(ŠùdCssîjýn›€–‡¯×øôç#"ó.Â:ÈcÕ4‚ʨÜ0‰Ê¸õÔ„6[_‚οfçæ)Ÿ|û6Êsâw¢³aþælꘙk3c)ÿŸWƒj„×aá åÙã?þÁ[þùŸàõË@̧qŠ÷-›lmÎ3cìÔÜŸ*cÝfü[Dv,G6pE —‰»çDT¤‚‹b¢8!²¦–ú’ÚÀÃ×’•ÌÆtli8³ò¥Ù5FI´yF%ùU½•ôÄê ãÜm•îU_Ë …s®j,, å@®òÞWÕå\Ä–ù`é×€˜0~YNáÜØP¹"YÕÏ2#ŸGµ‘[è„O‹zhDµñ|õ ÇñÉ!QjélÞgû–`b0ñ1"Ý襜Ïrþ;T]óª}•õÈo!Ù05+ç^MbA˜³Ò–†¿¥¦%oãÉqDäêØ²{w‹?Ùრ†y‹ÞHØÛËxöö^e°ÞÙ"ò–õö­îˆÂ89éñà«·¼ÞS »»ÛŒ†Çìè÷áøÈÓî¦Ü¸ ýw ÖÖ/ŸÂ£¯Üy7§sË‹ãõ›C¾zàœÂý;;¼÷aÊ­{tn"¤ñ_}áxø(cÿ-t»>úø7ÞF{3e½#('¤Œ|„²˜c”Qirž“A¼åp/ãK^óÑ7ïpë¶áÖç,ÇÇ}ö÷=¯^XÔÅ$É.YqD¦†Âäô³lz#OÜqû=øã¿è²ûîˆt3åðpˆÍasm4ÒN…8²x_ŒãUÃoùŒ²àÂú¥I“úWË—ÍÚ°&å>È\‰äeõüô†rìqb º*qEc1|_íýÔº«2InÝÚem­KQŒ†#Ž÷Op¹ãöîM¼Ë8>|Ípð1'ܼÕe÷ÖN‡†½Ã„“AÌp0¾k iÜ"±†Û»ktZ#Nž3ʤiĨH9O–¹Ê³;ì`Ì-%fdl„mED‰§÷ö¼×æöý¾çõÛ”âÄŽ Ë%Hv¥iÄî¼³c}Ê˼ÙÛÇ;G«s‹­»D-ÃÞÁgäú–õÍlï좪œžöxùê ÅУš)©Kä×dÃõq}\¿÷dƒs&0ë˜2¡/J½¾‚qz$x'xgq ¶áô¢1ŸúŠÿûÿÌyýü5Â&qëÖ.Î ÇG=ƒ›››lmmrxxÈÉÉi؄džÂe+´Ò½Ác¾ó}øÎýdî "ƒß-raŽ·r³Ó}:·™È J„sI0ƒ~<à'?zÃÏþöžƒËA´ ´›6üjSêK³Ì†|†JÙþ^’M4¼;ÄLmäf\¥6‰†yfÒ:åZ>‹Ðð‰×ùLÍU’ ‹2u dúªÈ†ª³aL]._0iKóe”tÑIÎ!Î,›àÇ"`id¸J²áŒz½+ ÿž9Ã…IÙ–¥ÇÔë•=ÕÉu 3ˆl×,²ήêz/ž!s|@TfvÊ9óp¾Áô¥;Êʯ-Ô/|UEÓÛAP¼óäyL Eꪴ¢(êsy?îˆã„(Šøøþ}ÚíiÚ¢Óé°»{“n§K·Û¥»ÖåæÍ› BÇcb¾çk²ÁrWP8Çp8ÄZS¶çÇc³ó&¥J>ÊÄiB– "V8>>âÅ‹¼xþœÓÓSɲŒþ ‡sAj©Òšž, )J ²jœJP¿;{TÏyÚÐø|²³„ñø¥–gœ|õl¼Sû3@îÙñ÷üwP/+_x‰¸´ÈôºªPõ>Œo’¤´ZírÆ`ªˆ©ò™,™AÌŽ Ò'GK+© 1p·ª28==¥×ë…ŠV]žä]”7¨º†‘òEÆQgÌ—‹㎒…)â‚å"€†Þ•R€ÁSÊ– Ø˜à±RÉÑêE:æøl Z» kõ÷Êt¸,ÎBÅd¹2Ê-'}øoÿõ+$Uþì/n²{ç.qÛµ^;©ÑR^ ÒHqVÌžËçß®B1½º7÷z:s€\ 67FYŠ@fID¡9&±lì¤lÝ4ܸ›cAì:÷#Òd‡þà%~uÄöF‡»»;x?¹CNŽGî[^¿R¬lðÑGïrûn‡7o^ðúå_|ö†îv›VkpóV‡?úc¥È<vă¯^sç㵞|åyù 6·Ú|ó“Mnß;¥»uÈF¢ŒŒèZ’4€ãÝÎ[Û]î½µ‡tRe0ìÓ^K‚ ¶Ï988Àš¬-@3’8`ÛwÙØˆ8>TŽ…µuÃÚF‡~Èá¾cÿ 8·Áæö- £x— . ¾´ÕÁùSNˆ[žµ-CÒ9åþ{1ë[`‹ë=±i‰ÇûÁD¸©eÌ‚÷CÏv84ýš{Ö±ßå¸ "n‰—Qæ¢QIbJ]è¹z|¬ÈóÖZ:.ëë¨*ýÞ)ÓYŸO¾uŸAï×É1ý~‚óï¿wƒ{÷oÓËR¾úۺɴäa¿?`ýF‹?øäCÞ½×æÓŸŽxµ×ÇzF®@\À&sv™ÚÔ .F}™ìˆClxT\Y¼[V¸–<³¥aPbƒæ¿ïc’Ô2ÒJn£þˆcÿ5‘›tÛB‘ÁÞ EµM GÁ±PøCÂàÔ`ÄÓM ÄÔÚ—¿ÜιàÊD~1çwšUCÎ+£‘ðìñ!?ýçC~ð÷Ê£/"AØ,ÊñÆrRâ YÅ8K#9T62A4H…Pq¶£aP¯ãê´3 ÔÀùleÚj(⥠†Ï›| ~|s×Yšñçø5hNP“#t>°Pöæ\¢Áç©è¹`f ”Õ•ÈêZ›çÍ.³óÇN´ÉéòÓN¹’ ·êüƒV“uGM°|zNWdØ¥»¸Ë^ÿ¸’Úœ¹6].T,|þçvøÌ™ófJªòŸ8oŒªó-;¦³:9fÕ÷7cüB“^1ç?,™?ïV5µVáætfóú*y_™–ÿÏ«âŠ0xJc磚—Œc³ïV«ËÝû÷ØÞÞfkk‹ÍÍM¾÷½ï‘Æ)q¤lâR7?Žãà•™‰x¬þ,Ñé´”¢QØÜÜœèJó>è'HiüjÊñoµZt;¼z²(¦•¶X[[ÇZƒSÇ|òxïéõN988àÕÞ+NNNxúô)/^¼`ÐïsrrBžç´Z­@B˜quüXƒ,õb±®˜œé~2ÞŸ_®gÊëˆÑÐÜŸW”PËELÜÂbÄs«²W y—މX3Ï^{9G\A“ÄmµZlllÐnwêç3ùêù jgÑP?³Zº(¬jJ žŠxÐ10srrBže^ªs»Ø.Ìuƒh?•éŠß½š”¥zz f­åÜŒ¢u¾”IÒ Ÿ˜Ü;œ”E9ŠU2ùN0e>;#ÓÐ  º$jñ²ëÑ;0Qƒ˜Ö*/^ù›ÿöáÈòWý->øÖ-2ówˆÉ0m‹)÷wSï‘ÌIÏ/¹Ý‘¯¿ùöë#dÒdûkÙû™zq+ßk0Ö“¢Ä±ñ¨ñ¨éÓÙp¤ÝZÝ­v›½W}²âˆý=xò•ðñÇ-vïŨ;Æi›Ã½<ƒÛàýî±{ï„ãÁÙÈóâ‰çß¼Ã{ïtñî+Äðþ7 Ï_ò«‡#=~»ÿèyƒO7!{ÇßÚäÛßn½{„D{´‰ ¬DˆOp…PäíXÙ½¹†Ëް*¨+° †#Ö×na<ˆ3XX!KeÓïd{òÂs’ÕkòÎLóî]–œµ<ïI‚ß”9f“l)Ày‘ÄÏUÉ)™ úœ÷ý«4¸Œ /fp:Ô-ø¼.Ñ•µˆè›¾ÿyæ°ó€¾¦ǬïPUÄèJ!rI™…o½WpªeߌkkœÞ•†ËÃá0øH„ˆÅŠÅÚ˜8J‰ã„?þ˜ííí²Ër‹7nÐY ›D6ó&I‚52%µDYeÞ˜ÿÒX«Îš€‚Lž¦.›4¥LLÕé ÀÍ4IIHË-·Ÿx>v—;»¼sÿ]F£'xÂÉÉ {{{<}ú”7oÞðvÿ yž3ô±QT¶U5½ª¯œöz(Ðjµê‡U–VR0 ¥ÑÆ=ÎŽì^µ,ÄÖÅÄÒ48kLnc IDATÉø÷›ŽŸËœ¯’¯ ¾1q’$IIéXf´O™~·\g†W¾Y€ÇñKXò<§ßgyãäíA†•Z}æ†(m“ç‚jʰïy½wXvv™™ç´$ŽtåXpM6\×Çõñ{TûºÐîq£ª¥ȯ—l˜•Üê9Ÿ¯*á—ÕÚŸ]ü¹UqJVš‹M°xÖ}J/6°U“MçÝÿee‰. Šé ²aµ÷øbA²ªT·¥QêE¾g&p¾ÙrŽn¹œS <«;c™Î†‹ÎûésÎ"æÅÃy„†ê2]WëÙ ¥tˆ–ïVVäˆ5dy~æ~›²rÕõçÞÅ1ö:Û›;ìÞ¸I·³Nš´Y_[ç£>bss“ 677ét»õ{&"5¨(¥d‰÷®Qa}ŽT×Üq˜cÃZµ'6bsŤÑ5f\é.BdbŒÖ»äyÎîÎMò<ç~ÄÑ·yüèÏž?çøø˜§Ïžrxt@¿ß++³Ã»ä|Qçb +òõŠL*;ÍXökñ³Ÿ/0Дfš5ósB§z¼¦3›ì]Æ4ü*âçeó…i9ªºû¥4G QE4¤I0†¶+™QøQÏGY˜ß4"ÁÄw«êBáB–ådYNžç8W’^%™fŒEÕ,$ÛÏ¿o™ 3Ã}û cÕ↑çgŒ•ÚW£žÁ*5Áyåu±È}ªªyÊÁdNÞ=µ'h”Ù‹qˆÉ_‡ðÕ—Ç}ÊÁÉí­ :k[´McóÒ÷ð•[›Î܈^½3nnþíß´]xâ5ÆRÎúßÖÿ®j†Ìx;#>/Pq@rŒ)ˆ¢‚¢8A5#Ϭ­m°¶.tÚm|‘ ÚEÔãó”l˜óvï„Hàöˆ>l³µ›sc·Cw ^??àåË Z´Ö„‚!ƒá>Ý­˜÷?îðæmŸ<³<{ÒÈp÷Î.ïÜksë†ÃÊ+œËÃ< u‡$6TˇEOœÔ ȳcŠÂ!Öqxò:̪ņ¢#X£XQ²aŸ$ιww—#ž>}—Ÿ'|û?ä³Oðö |ðAÌ­û1Ÿ~9 7<¦ @#mY2ç8=G0ÈSÞ¾,øù^ÓÙØ'iÓ#¶žoÿáM¶?‰0ö-øÑüÇ<¯žMMéô<5G¼<ÆŒåɪíÔØð¹Œ *u¾Å®ŒAqð•ht=_&.†/¸ö^½åí›¶;W”­†ï£>Gˆˆ¢¨z^ž)Ç'Ž|Ÿ=ß'r“ F8c *qˆÚàË0¨º:?ÊsǨÑ?“­sø|ŽOúÄ“¦ª ²Qƨï9yÛcÔ?‹17P‰88öì½AÅ µ5NN>*ñð>Ho©§k¥ëãú¸>®ËÂJs0K™Ð«0Ôqõ“¼¡“.¿Aò7uþ„©Úôš5A‡*Š-•NJ<Ä@Òá"«Á…ÿþrÕy Óº¨j9ÒÔ4¶h‘ Úa8lóôáŸþø˜ýgØ{Åð@Š”Íb™Ð^ÆÞ{ŠRNÃ6d:& 'Lý„öþx³+ ¦e*Ê–í±–%Fw9òªA¾¯{æEÁññq ®õûý´6°eȆ•“R•ƹw6ÌQ—©È^ôû5xb“ÜÊS ÔU–¯?zøReÙ{ZXÄÁJŸ¹0>ëžWûÊxX !æv\l¨%HäŽÁØi°¾ž‡\ÞT{ÙÎŽY¿7)›wqR`šX^6~¯ZYÞ$ªÚÀÂ9²<Ç9GÚJk™§Ás!²¡¡Óé°¾¾Îúú&ëÝ îܾÏ÷¿÷Ç´Ó6IÒb­»N§Ó™_«ñ }ñ ZV˜—å¥ïAƒdás˜öÕ‘‰yоà…Ru74Á[ÇìJÏ_}ÙAQu¹• ÖX!MRÖÖÖÙÙ¾Á‡ïÈéé){o^óøÉc^¾zÁã'Oxûö {{¯È‡#Œ-½›ŒKÇaJ²e¢ÛBV Æ]!WyG“p˜”ý qºé9 SÕ„dÚo€l¸Š.‹ªX£6ÁHÒ„´•ÅIÝ}bÄ”÷îÇï™(‚)%±äL‡is(DƒA1µâŸ˜ñuôû}z§ý:ÖFQ4Ó þÂ~?0Ñ9)‹¸üØO“¿–ÑÔ3¯ ±ª÷¿ÑUñeìðÞ—Õëgç‹ cÃÙ¥v³ã‰Nφêf(ºTŒÄxg9xãxþdŸ£Ã}l²ÃŸÿ§MîßY£½9BÝÆ*†4à‰ä¨xTü¸“抆úwEývÕ{‡±â¬iø_0ÝÞâ‘ÒÑY–ÕÏÜ‹µ¢B‘9ŒÑÈ`5ÓR] $¦œðúyÆéa„hŒ/éqÚ«:“”×{ωOö‰Û`,$Þ}ïa‹U®ëãÜdÛ â§Lþ˜’ÓQ¼Ë|òGÿù¿ÄdÃu"é”Ű8zÒ‹-7JÖ@šF úG #v¶ÖÉó #Ž(Êñþ b;øÉXçj‡7½ÁªÊôfûË„|Ô&®ñôñˆÿà-?ÿgåùõ ê×QMË•mñÖâÁØ`*g,Hd,1[b£<\ ¸ºê³©ÜÜ`Ž7Ѻ$X¶ Ù0¥ñx)“&è7N®t©Êâ«"®’´hޝH sÈ‘ËmÔ…å€ðæ}VUÂÓ@ÈÙM¼”&gãïhzŒ[Wun/þô|«+qËx³ªAô¬ù3oç S.mc5ôw8<=~—i•¾ °Leºâx¹ïlVð®(\ü;ÏzÒ\•gÅlŠ °k×ÕýÖ:ýÞŸ!_ΓFjž¯(Š uBLW¢;ç&Þ©iðuÚ@ºšs‹Håe7²«Äkkž t»]ŽONð.¬CÙ(£ÓíÔã|ëæ-677ÙÝÝåîÝ»üÁ|›V«Mµè´×X_['2Q76æZ{ÅqâŒQ:ÝÖ$TË#5 Z/¨Û_•õžYòe*NW7>%‡5®ªœ,Uh®ÝyžOÙ­V‹[·nÑévøÖ'ßä´×ãÅ‹çüôg?åÁƒœœœåZ8œ*ˆ¥ Ù—†Ò˜Ú49?r™‡¸M&:Ó~4ÙPuPã_S {Æ©uþÜ«æßUÅÏU Ûi`¼®(Î9â$ÅZ‹b¢( €¢QD«‚ª<§ˆŸéø6뻤)‰¡°D¨‰ŸápÈÁÁ£Ñˆv»]Æ/_fêáéî›)Ri<Ò´³”œREÆ8çØtdÃ…Ö¯2÷‘²¸ªšO¡Ó&ÄclýÎù 4ÒØCɸƒøJÉELа©×!'( êZdCǨoyôÙ1ÿÏÿµOâ×Ùüë÷ÙêäÄQ‚õ'#g"ÅTËõ^ëok•ØeM¢uÒ³B˜3>¸!0súƒ 0|nñEÌ‹ç‡Ü½ßFŒc8ÈxõrÄhuÃÆNÁöMÏúFÊþ—]~üOyùd‹~¯Å—ŸsròCl:b0Ì9:ç"¾üü-ï¿w—¾µƒº×Aæ&²¹ ~cÇç [-þð»ïÒÝø…¾ÅJVÛ ód \”<‚/°:km¼ÒTɲ@2XëñÔ[¢¸2*÷­)ÞåXã0´Sðá·bž¾„~ïÃý_~±Çwÿø¾ÿîòôå°§¥ÌPׂ,¢êé®%Œ² kz¤Ýþã_}ƒ›ïlppúáþ½˜#Æ„îÔók¦õ:µžÉt![°QÑyûDƒzðÞ`£cF¶ ¾ƒ¥»æ0Ö¡deµ¿`lŒP”±§`UZ¯yýQ5r?ó%‹$-œZ†ý‚8î’ ¡ D G§1I¹NMå6…£»ñÝïÜåî­”_þëyñâk¶89ò"ÄJ#fü4ÇWq >`QbHRºÏέ}°ËÁÁ1?ÿ·‚á`ŒTkž ½‘ÁÉ:^„ׇQÔ%ïçå×8ÄÄe.¹±±ÑPn¨1VίɆëãú¸>~»Àÿy›ÌYͦ—yùµ”âK^%ôãꙣÅ64ÖZ¬€54I±¶ƒowC¥‚±±±]3šøg0XŒx`@gD¦‡µo‰4QÒ ìðw‚x˜¶ ¬Ô*ê„´Y\TîùÄ$X68¥|þËC>ýùÿòCxú%£a%©IŒñH¹é6Æ¢g¬xË ¾‘ )i%c£P-¢vÙÀL²!/‚édd-Îûº{bYÂÁZ °ŒIh8ïkoÑŽw(¨7¹Kj _†,˜þüj癿ùÓ‰Š=kBYš$W‰àjà«”$áj{²EcPª3®mÒ¶Qþ%º0an äSñfubç<²!TNˆ± QåQ3çþÍd©z ôÒ»Þ‹ƒ-Íï€ÈŠÝS3o¼¬d®>]í»ÀuæÂŽSæI Í!!&æåPpÙø3MÜ-?î• Îüß™gb;&$ä\ƒèy„gÕ}P¸ˆM“ÚÍï5Æçyhá÷aÝ*œ£pŽÁ( ’Œ>å[›[|ðÁ¼ûî»llnrïÞ]:›››lnlbŒ%²1iÚ&¶q] ZmDLjRJøq~E(4ïÁ‘£e絩ƒ:'g«âo®¹¢SóF9PsUÕÖg×ì*Ö$IÂf´¢Ü¼y“›7orûöž½xÎ_|Á£G9>>b00Ž(Š‚8ŽHÓ4ä!^—$J`|îoH9L9.ÒqÅãçÒ˜ïamhê‹ÌȇuöÀ6Ɇf½LL’Ktx‰HMn¹Âá¼'/ œó¤6ÜeYZ­´|ì!¿ Ÿm\·VææaöŽM”ÏJR¡Ì*MC”ÊçIç•,Ë)œG¬#5äæ•Úø¼Ip\L†R&öUg€™ÊçuziÃ\üªÈ†óˆ3†Aëe³¡iÀ„xåK3iÅãb.¿i©cÀt簔Ʊ%pé êÀå£]4^?;âÿý¯O8:ð¿ÿßeg{ƒµn±}<ÈjaB*ã½´SÆS¿¹M·®þÑ&L©~¼.œ‘©¯:$H^AŒem½ƒºc|ÙÐ0ZnÞ¾ þŸDXž?>áäÚm¸uGhwèöØ•³ÿ|–p÷öMÞùhÄÎmëéõû¬­õ89Žß$¼zÖçÕÓ”w>jƒ ÕõÖiµ¢¨jA§#´;9q«‡ÓCÄµÈ ¤­”v×bMÈÉ0¦à´wBÜQºíˆB@4åE¦øD#,`Hœf ú¡‚±ÝJÙÞé°q£Åí{ðüçÑÃ_±½µÉÎÎQÜÇF'¥Q2S ä.hEx?-èvîÝÛáƒové8@!ˆ÷5Ñ z†KK`5‰‚ÒʲÑì÷áOÈ-$帉g,WBÜKWƒËc"Ûš‚(r¸òQA>J‰mJ·Ó'N<Èk¢qµ©˜<¹^ Ñ'5é¯x$Ha‹ÁKQýùO°?s(EQÐnw‰¬am}“µDÆáqa¢UšZgÞµRZ”Ø*ÎxŸ³±µÁÎÍMÖ·†xb0Çhé!ZyU9‡*8À[;Q<äˤXˆJŒa–Ìi³¸ör{™k²áú¸>®÷ùŽÎÈàdfF7Ö¯G|£µ¯Y¨9&k=… ,vífn` Z~U;Lê…N8~»Á§?‘Dw€5Ä Àܵx•`l† >”B""“cÍ!Î÷ùòMœÙÃDoÉ©:–u©AYíÊ¿ïç»~W*]Ç|‡Ñ¨ÅËç9?ûÉÿúSxù ²Q‚Ñ[Ó fq&­´6hþªW¼‚©ÕY˜i£"C¦6‹%X f¢ý ÐVvM¨*q’ÖÄ@tîæTg.öfª{¢ÆÄƒx¼ø¥Áþi]rìy],—«Œ¾õ˜4¯¯ù·eÈ™çe!ˆ¨0vâùi ÒyïñEI²6lb½+ó7î>¸wg‡Û·oó'ò'Ü¿Ÿ;wî¶RZíQdIâ„ÈFuû{“p”F›E@Ÿ7¶õ8G¦j^Þ1Ñ¢guÑ+0i6Íx_ÅB èOvÜ(MgÑð³ñó4%P :íï½÷>wïÞåwÞá—¿ü¿øÅ/xõêGGGä.§ÓI°bË<¯16ºLÔ™käô8c•Efj]+¥èÊ/°RÞ·ÔÅ2ýŽ7ÈÄêÿ›†ÿX Ÿ#QsÞõ/ûÙi"¯2ûôµìN¸W•GqLâÄÒj' ‡}*¨'<Ëisq?`Ëé7ym̪Ÿ"eaÑh”1匲@x„!6ãÙ¤Á¹tÅrNÌž =êñ¯„ÝKi=‘ÙÉN9‡£@¾\r_f­jæµõ^ÊØºË!Ä÷ÉüØ•W¦êÎÑñtSõµÜåEó?©ŸšNí9hü#м$¨FˆL!&Æ-¾ø|ˆ—c:Ýü/ÿë&wï§t×!Qx‹'*µó›¾4:a|{Yâá÷òÐÉ-zmö=ó—MÕÎò@kpyÏAsô ýÓ—oqðvÈ‹gû¼Þ>û©ƒ|››»|˜Ð]{ÍéɈ7ÏÚŒŽ-;[mþøOwøöŸÐÙ<ÀDƒaÌ«Wðà#~þJyðˇ¼ûÞ î½ÛƤP`#HK;‰iÅŽ(ÊPŽsŒÒÃËøžœƒƒÃûûÐéB·k°vDQœâ‹¾€|hˆ¤C7íÐI¤¶C+ê0êe¤Qã i”ÒJ†ä™2äVGxÿ}xû ?èóç¶Í;ïl°µ™ñüe†xôÀʈ$ò¤‘2*k­”HF´[[´ì§ocöÈu(IIlB ±é6r$v²0cÜÝ×Àô}ÓWq\ `í8¬y'¸B0‘ {Õ©ýµˆRmk½_¬ã‹„8ÎI’Ãôû#:ÃÖ­VŸn£!b¢šxÔR"jr–MJ;-óÒÎߣ)j2<DJQÍ_þâT0z3R ~…xúbÈÑqÄ£'Êá‘¥?*°iA¹ á”DÍÔ>GKÒÓ“FàE‰§(`ï¥g»“`œaïõ £¬×’l(?[S¥ŽGÉØê+°*õÚy†³Ö›k²áú¸>®ßÚF¦Áwi´þMìBfƒs*à¼+Í’h[þÝN&A8Ààðÿ³÷fÏ’e×yßoí½ÏÉÌ›w¬¹kèh¡1P$$“$EˆrØ¢Žð‹ôoð~óƒÂoŽðb?P=*l‡F ‚@ ˜‰ÕCuuUÝ93Ï9{/?ì}ÆÌ¼CV7Ð4ïA\tUÝΰ‡µ¾o­ï#:¡¶%?4ã'öŒñ¿—¿|IUî8ãöÝÎNçœÏçXgS"«oŒZ, 2wN6‚[ÿã>OÞž2š,¨Â«6Í’—!Ø:ŒT–ó,êä!ã« Å|‡§¿Xð£žð³¿€Ÿ¿‹swÕ˜ “Ÿ‰æq"ˆ8VõÆhGÚ ßúY¼ºҺЂ,_bI[Ѹè¬ß9|ºA¹µn)‰¿ŽÒP/yøçu j`¨nL8„(˲£U}õD}5˜5Ý×ùbtð>¡s5À¸­éVj_å½ËÕÕëú±Ö[ôÍÁ{æ¬r£àNe0›6®•éÿW“5­_£iª¡»Õ´uÕ²EiºJG¯¼C½Éêuï*÷¨±ÞKÝiÞu—Œ£\[Ic¸õ ¿ûJëwc”'¨J“Œ\lXÛýÞЦeÇÂU. Y·YTuÆç BkýXï\j`YóUY¯Û¡wß®@´Ó;/M-â]Ão:D õú¼ò<$U—™ÕDÇÿŠúýFÍ߸Þù4•ÍêA„Je婼vü‰À¹œ,ö¹{÷.>äñãÇüý¿ÿ÷Éó¼ùc©š* E´‘p´F"@0XGk?"YAŽ ç§~.õ¹ºôè¸~uªÙ³Lû†&݈F.§Ì 7b+Ë>xƒéd‹÷b§ÃûïÿŒ>úˆ³³SÎæçí~ˆž²(/˜çºvœuÉèÝ`­Ã¹ZzŒfÜÕòy¡î£2«ãŠééÇ$šà¦"{°µ(×­ÊßÄîù³t*,µÓi;&\fA”³³ÎÎ&8k:S}Ee˜ÔÕÀÚ½µ1gîþ±ø#Vé{8?Ÿ1›ÍñA‘¤ïCH÷«SBÓA¹ŠlèÇZÝx²½÷µ(‘vd ûûô2ïÐÄ™Bª¾EMb¤à­{é÷Ýùqñ¾¹b¬u»2zÄI»‘iz>Þ‡ÔAÒÞñ®ÁùêͳÝ!¥·õ?§%ò–É©‹1Ø'HêÒŠD‘±6“²…µ9ÏŸÁwÿãsnÝÉX„Œ‡Oö˜lŸ%3rí «Ú›BhBA¹Æþ?LMÿªúšï•UKø0ÜnÏøwë„ÊÏÈG°`(Ë>üðc?!ø¼z9çô´ÜfÇòµoì𛿵ϢøK^~Ï>=å|ï}«àÉWÎyôæ;>ÇØŒ²„ííœ0‡÷tÆ«Ï99Dct‚r‚µ‚¸3*}…8oµG %¾J{J'3%€f30Ö“ á%Ö(“ш²ˆˆ‹bL(9c2}Áöî²|„hÆ8³µ5c<ä#¬{‚³3>„âÛpç.|ó[Žûæˆ9fk¸u Ž_ÂöNA–/RI†èŒÌñG,f/ùôã³Ù Ì甋W|ý[÷Ù½½…‘Ÿ<è€Ò1ŽÐN,ÙÝ‚R·²mBœH$Gõ+1ö¬kM”H@÷ö 0Ÿ{ŒòlÂhtFP89.™lììíðÆ¿øY‰3 T*0%!hômj î”U••qÕ” &a'ç¢jHÈþo£q28„ª–èÛ¡?ûù§LÆ9Ï>>§¬<&«˜Œæ[R•+±kÌûE(ƒšHdMOQ„ žr†xÏÙé„O?;FÝOÜ×DMzFÄÓc¬‹³c~·^sÁ°Ê¯ðº±Ä ÙpsÜ7Ç_™ g˜[è*æaP¤Ótû®À*TaQÌ aLô‘³¨Z¬›ÄîLÚªlj󀇑†Â,é•fä#Ë|vþ6Qñœ¾ˆ'5®ñ™}c,¢CAU>g÷Ö ¶&wQùˆ",¨ñ &[Õ*l–L¤#—Ô©Æ{IÝÎæ³=ž}$üçÿü‚óóñ/£ž£„Œ™€ÚÜ IDATÔFíL1mLcu‚\œ­Ò7W½8Ä^WéÜ«F¦6†Ô5à\Û*ß%>†u }]Û“Y¸ ê¼þ)}(¹LC¾'aõ–Àªëƒ*èuCåð·îÉÀÔl ˆïTÜ7à”\1m꘹û Wcùd@Pe “4ø$Õ$±µ<¥®Àî\Ÿ^ñV¯ºi+«’5ÒªFWÍŽ’oÁêï ƒŠý^Uzú»©ÇrW\cÅN0Ò45 U7ï‚ëW!´®hNG1ï2 %.bL¼Àlºò ¨¯mÚìCGNXÿLšyšÚÍ£vk;3ú¤áRÇRo ð­Põ—šèkšô©& k ®ðín >„þ3ª" ¨O÷oÝÚ»Ž°𪨑þ^ɺÕÊóÐ’ õjaDC}ÿRò:4N6"H¥MWÜðûU$ŽááR{<5æ°b›ßÖû ñùúd>å#вb6/(Ë’ýý}¶§Sîß¿Ï{ï}'OóäÉöööØÞÞiæn<>xlf™& õ³õ±Å_À¾¨^Ðq'ýM.É+u ó¡ÿÒ>h$™7ö_דi.ÁL ­½êßÑñp¢ãÑo˜è—ÑÖ]ªÝI'¬âÞÞ{{{¼ûî»|ó›ßäG?ú3>øà~úÓŸrxxHžçk[è3áÚ®$AÝ-4ðäéεBªfœŒ'T ©šÍιuûóù"~¦5Iš"`ŒkîYÐö~iè¶{©®´ Ô{å}¿_âú14›^«£Þ]'×xZ «—;Æâ 5aeÒCL¥âb…ím¦Ó ÷îÝe¯) è;´ÌdóGíT5csHdu@ýæÏ!V}ñêÕ+ÊÊ7&eÕñ…Ðʪ&™³Ö8}ýv»ä¡]ÒDšË¿Š_Ãò#ÑÐ}þK~g|0€áÖuµu ߯‡´öu+ü5®wí9˜&>jc–Ú|»[’#)’ÎøÓصš¨mAh©‰€î5@«tb`M”+- ß6¤IôÈÀ3øà'ü«õ …¾…›¼ÅsÊÖøc¬9¢ék‘ Q„2®;Ýæ6¹: º‚/õ±¡œR/ܸ¨AP–†DŠ{<[ÛŠA¶(yÉŸýø%N`:ÝŒƒ½_{÷6ÞÜáñÛŠË?ÁU~y6ø÷¼÷·ŽØ½[`Ýg A=ÖòÌpë¶cçV‰Éàdö!?úñ þ«ïÜbVÎP­È· ò¸ó&;ÏM£Þª-ªòœñV‹/K€éÄpïA`>‡Éö§LwöQ*йÇÁÙŒãìíÁ£wÀN~ÎÇ9vd !'!›ÀWÞƒûȲ_`í wîÁî>ü½aÝKÊòS‚Zœ›1Ù‚ý[0Úz‰Ø|5ALŽ1g¯¾'ã±.> càç??æ½ß€‡OàÞ½£|«‘|Ô ¨”3_–½ê¸Ä.‹ÄK|Ž‹qž k“„$–ÊÓø\ŠD¢"½ Y6"ËFTÕ" ÃxäøÊ[;üé¿ÄRP†2ÎRq‰]œ&Åm¡³ÿ·„íê³É<6(FÖåÌ!IŒ „I”tÄ”(%U¨ðÁR–3¶wï¤1sŒsxvÂ$C(ɲ¬óë8:Z`eᬠA,ÆdTÁ’à‘äÇN Qƒ/¾Ö%2 ˆLvd¥­q ãĨwõÖ%a¡ÃBK|­Žb·„H[ݦ&þ$Ô1õ•T”¾°w£û¥M›$G|·H¯‘^ © ¢ª&”å>ï¿_ðÝÿðü½Š÷뎳èV¬’ÅÕPDÐFIÁˆÆ€A$ú6¬ÓÊíþÛ%æÎ%èCy¥%†V–¦K4ÔÀ”1ÒI»b5sUVM«úÐhøJ›½IIJª/;º@€í<±«CmöÞý¸`t®îlЦ ·÷ÙWŠ5$aÚ TÝTVH^ãõë4/S帮®_NW7›Õ]]ë•gª­‰ßêS”Ë<¸ÛÐ[ÁJ¿’HuŠK ºMKz ÔMk>7à‡ºÓ©–˜<ªŠëd¶¡SŽZG]ðs•A|¯‹¹’Ô̺¥2$@Åwe>%ãÙáZy¾÷I5jøw4¼ëu¡×=$Ñë#ªvø¤A|ñÜ>uNÔd¦vÚª/zß:KbWH¶†¨v ¬ds“ŒV¸Â}¯eh„¾ÄŒï Úý}Ü µHìÍ>MËç :ètc›-ßû@ðmŦh4û (UåQUŽO8;?cww—»÷î³½½Í{ï½Ç£7Þàî»Ü¿ý½]ö÷÷~Q‡ÞˆVlú~Óš‹#ýÎ%½Ì‡ _’­½Jåe2ûÊK ® dý>‹t¥˜{tä%ß[w¬Èr5r:ggAb%ôh4âûØßÝãkï~½=~ò“ŸðôéSNf'ܺ}›=ž‡‡‡”ñd‹étŠ÷—P ”ÞGð¶CÄýz…‰|Áú*ÆFðœ.Ø52^çt óµs´;¶dY¢ ¾W,‚Ok“a:°»»Ãt:Á9ƒRW¦÷ÏmuNpU=Ñ´Ï&9M€¢¬˜/ŠøŒ|ÀZKfXkcçQt›Y½ôŠ è{Ÿ°rM¹Zw™vÈÝ–rÑ׬{F–~߬; ½®'ZYØ$ÝD·»LÇï¥ù·dZǦýøx9N•uëÌÊ¿ÓÏ«e”"™.„¶(C%‚›¦õŽPB†WKXÀÓ§çüáþ9O?™óßý£·øÊ›Î䣱‹ÔQ%ÓÝþ3¼nô'_xBöyæi_ÌÇèUïÁR,Y1ÝÿöÃÙéeª*K(+îݽÅöÔ°µÈÇGìì §d¥áá#a+ÏXÌKî?ölïž¡TUŒ/ R²»/ü“ÿá>³Y™³w ¨VdÖ1{îÞS~ᅦã#Ø™‚q/@Ѝso-Öú$©e…ö÷GüƒhyþéŒQ>âàÎŒ¢xÅxÖ*E¹ ÏÆ|ó›·¹{÷%!(;GTTŒÄrëVÎwþ”loƒË?ŘyÖÉÊ$Çûµ³¿û»–çŸzîÜ}†+ðøñˆßú[ v§û„j_¸(qäK‚ø0cï ðößqûŽe<±”å¢)ÐŒ†Ú¨[uc¥:7 (b!Åî|0¨æä9d£œ²ZàC ©Û(yœS¼BY‚J…1†,säÙ±GqVØšÆ9h8Ëvê(»£4-™­Ù¥È¦BºÒkÇvèä–¦ùN5un'ˆØTȰÖóøáîÜ»GUx~üÃg”EÉÁrÿËÓ_òòE”Œzò•‡L÷Ƽ:<ãã_RÌ¢ÉsF)·ð´’rYC‚ÔÊ { › %_ý¸!nŽ›ãæøRúyøŠIßHO:F*¯gƒvªÏ% ªŽClƒHU? „p. òÑ-f„芩+»jTR‹®b¤ÀØ3Æ[Y7‰ “<´í+]ºÿjTÍt*KëM™õ›w‚æ„0¥*wù|Ìø÷ŸòÝ?‚‹™´ã­‰Ý1¥Æër»¶E´dX“vU9œUÿÝ|,÷‰aeh·s¡{~]0±þ¹ìººÖb%U²œ»Ú¶/°ŠÔ2$Vݾ§Âj3ÔËÞ•LD¯@4ŠÞÉÉL®%£´¼é¯NOk°Ç_¨uîœ[©ôÖeÚKü7ZC‘µêù:\ŒÃæše=(¨+:"ýæ„„D-âéó½ôïm ¨Ö$@Ý 18‹¢hæC—D0ÆçùÊñWUÕ’¤™ˆ4óBú¥¿m¨ák­±"9^»OÝ E’«Ï÷"½óP‘Än;UÓ€…µBw­XÕÙ=Ř€‘€ æÒsî é€`iþ~åU?u„Ð5r¿ÞáQ*SKI]­¸c«;¿º¤mw¼u‰ØngƒÃP]¤Ûï¼ðÁS%i‘´©üõUE¡é,sÎEpÓ:Þzû¾þõ¯óö;o³=Ýæ­7ßä`Ÿ½]œ³lMÆIŸ¸«Ê«8[ϺrØô€è¡ßÍuÆoS-«É½Ž—ŠÐ#íºËöEçdèvN]îï±ö÷ƒ})®#¶™CÎeŒFc²,g{{kÏž=cº5åþƒüÖo}›ƒƒvvvzëEð¾\»{sUUøª¢,ËhB=›qøêï½÷G'Ç|ôчdYÆÑñ UÌ%ù(0›Í™%.s8gQ²¦ëF;d]ã9ÚŠò ÈóUð½õ§ãiÜwcƒ¡‰úU=fºkjhÌC£!´¾ÙJ\f±Ö’ç.™°šî „ÕÂÛ^.9ëg_w@ÔÞk¢¬(Š’²ª"§ÛÕYÿÙ9‡ñ¾ùûÐxû²1xÕ×]e.õžIíA¿«yOèt× öõáz¹´îƒM¾F ·c³‚K¯Ñ ïQ¯Oˆ®”gÛÄe8¹>'#ðÆÓ¥9ÿØÖÝŸ£üN“j¡ÔןÞêE±Íá/OùnxÆÎdJö ÝÅ寢i´À>664°ÝUc0ý2¸BoxË_'OïßéÅÃ׉_òßÃÁ-ØÛw„*õ˜`1d8NpÆzÄÌpÙ ªQFè«ïÞÜ‹q' óXØ&•8¶°½“s÷A@Õ#ÏKT*òîÝ»w2P›ö‹çQȪ$1ÔQ·³ÊÁmÏÞÁ˜¯¼;Žc–—±ÈQ*¬­©a2 ìyôè^Zg<ÈKªP2šTü÷FdY–FÞJôo›v­Ëm$$vw`:Éyû<ªÙOqvµGo>ÞA½CCênõîb€Y öÉ=³"¤D?m‹á¥HU¢AÀ:ÈòØÝ@_A‘ Ð&ÀXK6áò9‹ŠrFFQNÈz&[‘„¨Ê4àl4ÿ¡ΗâRßY#. ÈVVR½¾éq/nè“JñÏe–TcÁ¥P2ÙÊÙÝ›ðæ“ÊÅœ¿üñ„jÆöΈGwÉ܃¡Zœ3[xÞzó1ÙÄâýg¼Í(fPy;DD€1 ¢Y4ŠB° 9b•¤w¿èã†l¸9nŽ›ãÿ§,ÅÅ‘˜&¨¶£Ö±iz=‡î1!õ=`+ÊO*’ÚY¬~ÐìEcNA5í™EhÅÄîwò)ØüÈ1"Õ@žX{R½Ýj™Ë ë¾,A¬6Èêèzê–…Au‹b1åçïÏùwÿúS¾û]øè)”„Ê"äT•",ÊD, «“ Ö€Ñ*Uöºl¼Š‡Àë$Šë¼†DÁP%S®v|6V‹+7yçÈÇ9.wX¿F{zp`¼¤Bš¤YlÁênbÞýÝUd †@±ˆ\›$h)®Tí¹AXëN‡kN´¦*ÿ²¡¾7]Y«U㦮v·cn=YÑ­:«R;²O•¨ }"}°ièp‘,WHÆ!uÖTUÕ—þ¡m6Y7Wj0pÒ×ó`x6_,–˜ú§áêßÕ²(«î¹‰R4¬JÛUT)«Š ¡=o–dHÄ$Se“€z/”ø Iï=þt+¨W1ñþÄ{Ð1sÉ©7¤fªÄ¯Ég,&ÝWsÝ50ÍMɨ`µŒ×ºóOµvzw½ªÁþáó7"¥Ø¸Ö Xb­yFÚJê¢(#q•îG=šl–³»»Ëßþßæ7ð¯wÞy‡£Ã#ØßÛÛdì´¹‹CÐÐH§@b ‘»j~]¸rÖæúë\¯i[ÏéFÖëšëö8dªšØÙD„Î:$öøöo}AøÑÌÓ§OÆìïðàÁxï™N§QfiÅÚÔ3qN>’”YQqt|ÌŸüÉÿƒ˜è0[,8??g<žDïˆós&[¼¯’¾µö%âšêûŽ'3ûS†„Ñ Ì^ûE õ8ïþ¬"®Jìô÷õÖ/#®ó±++sŽÜ9F££±c²5&Ë\³§Ô×XÖ´„áŠqx‰¼K»0,2ñ>PÕk@2lö>"«$ç‹¢§s½jlx‘ÔÔuçQ¯c¶[ø´‚liŸñkŠSê1[ïGõg[‰ Ì9¬ÎÌx‚3®®‚Fy¼*¨õ~Qw2†kÍÖu»g·8D¯”xôdš$¤Jãng£áì4 ðâø7ÿçSŠã)¿ûïòè+»LvÏq[óXìEÛØÙ%VŽÁÞ¸cèsÿë#^óHzÖ]°y-¡Ò“9kóëÚþN¯sÞÉtXÄVˆVMƒmfÁ*heu¨‡Ùl«"Ñ$AÏ£¼¡2ÃX±q ùZnÎ Pbò³š«MëNñI6Žª%"e"÷ú÷¦wÊŒ)@<ÖZ‹‚¦9 ù9ñ†±‹¨é¯a0Ö£Z±(”­iŒoçó çêŽø>eñ§ò3¬-bÁ¤FYãÀ9Øßßã³çŸõæFŒ£Ç€RQzŸâ$A2xÖÃù%µ$\œå1Н›ÍàôlÆtwÌéùæç›</©ø]>ÔJ·JžgX+d ‹Ëâ˜+ËØyfŒ`lüïÏÝÆˆIyC õ9X=è{ýˆès›” åcQé‹ôÜm+£gâú|zzÂá+ååg†Ùù9ÖfXë™0› •3œyŒ“eàK‡q–óÓ’Ó“a‡lë™Kó­Š3éû1 iÒÏùzoȆ›ãæ¸9nŽk‡´!m¶µFu,™ÔÎÝ›—4±ƒ4Õ¿ïý†ãŸÿ/‹Ù6Îl§d¥]âhS‘$Œ)c‚`lØŸb³²‘[¨Ûÿ¸š­ç—špX– éV–‚o9GY8æsÇGOgü›ý‚ÿoᣡª€`a%¯¨¥)ZíÞ¾Ÿs@E1T=P6ÉöÕ—Ïq¬ ýa‚ÞMüê×/WÓœ»¼R¡Ob@YÆ Ë«^sólˆ&£5Øh%ß„Xíóí$éÖ4À/«^ò/Æ4úÁ5¨z•kØ,Qê ‘ I{½Ö[¾Æ ! >,Éö¬gj2¢§ ½†¬ºê½èV°Öï+Š¢÷½5Ø4Aݱپ?`l¿ê3a-Ñ4\'5%'5è^UUC8D}ùeY—nµ~³Üt4¹»ß1´¢³fH6 _ß•QZ%Ó“uºæÞ$ÇŸÎßk²Æ]NkpYFPÓ#Y†ãd¨ñÝ'©¿âyk:„І€¯I³kΠÐyn›‚Ö*²Ö#gýÌ­«ü—É«.ÑWßÏš´Y5WÅ]lÈm;ÆÄXT%uLF¹ étÊÖdÂb±àöíÛL§SîܹÃïýÞ?âÖ­&ã1.˸wï~”u©<@> ÷Ö±]°»-ˆH2+"WÇ£´¶Ö+¨¯ól¿¨£KŒU2´¾OUU5àK}_­µììì0™LØÝÝå+_ý*ßûÞ÷øäÙ3¾ÿýïówÿîßåÑ£GBàììŒ,Ë–ÆS×'ÀÔs^ã\-·³œÝ½}vvöxúÁS‹EUòìÙ3>øàìnï0[Ì8>9ÁeUUR–eëa‘öfU˜í±ÆFœ¤{n„ÖÇÀZ·D°va·(b$äåk_}4mü “­)ã±#O$Ö¹ÖäÚj߆k:å¬é;ó¦–¸*Ë2BUÁ£h³Ïõ¾±&‹:{㪽â‹"V{7tNiýD–æ@§»õ²Â”îy51!àŒ!sãVþSkÈàC`>ŸS”e2¶×hFo>¿ªá×GËC"k}ÓÙRгSf‡÷_“Us¶FYv‹‡oÆ[ôJÌ9ŒM€¥¹ »U.Ⱦ\KãÆyr÷:uÕïÚQMÁùŠîØ+QM±!9êܧÐ"拟ÀUËh”$ØBKö‹ ˆVXW$b.'Ò‚ˆD ˆþh|æ]n:ÙöÄ×$Ûæ‡ÎùVq|Œ'>ú„9¢rº–ÊÇõع¨ñIª9¤u(~ŽÍ`Q-¢ß`ª”:I¸@³C§ó÷â—pƒ-Ï\Ï_%°=ýEUú(¹#ѯ‚t-ª‘Ñ ¼Ýï‰fÏ>q ÆÆû{>+(}`gk‹ÉtÂbqŠ÷¾¬¾@Ä &J/UÌ 8:=e{:Á8K>†E ³Åœ£ãcö÷ûûðä-xÿgçñ<ƒ‰*øø£u@½Jõ‹›€±»Ê€Tˆs6?`<ÚBL–ö±xŸj• gG¼|1ãèÕû †ªÚŇ)'ÇÊŸüÉÛÛÃWtþøûï( j0lÔ5*Ú U žÅâˆb.™ç„`¡LRŒö×¶.ß 7ÇÍqsÜJÒhíûéZP½Ú#¸àb2iª9Ön1o!dñm5BúlSka³@ì1"³hì§­¡Ycþ¦­×Á—N.é*'¤«Y ©KRÊìC„q­ËPbdÂ/qÌ¿þ¿ÏøîÁGÄŽ†ÐN@]G'[×àÖ†´‘hÐy¯ð«è5^ÀF`B`a Ø•7Xõr餋€úìsýÊR•Å¢¬%HV]ïÒ÷w’ÝU²%+‚5€ûUӕσlè: ê5N!¤Ì¦&.èº÷¥[i=$š6%j¤+õÑ€’K®–^ߌ»*&6+;Rº’lhŒ$¥Ið†úΨ’¬n–*75œTSUÕ'VÉ@°âóVÎ]òbx’i„ê`›´Ib ú®Z:WdµJPÓVü¦svˬ•´‘€hH`›-óžXM½  ¬´2YºÁZ+€„MɆHÎ^EvnÈï_ô²X7÷EÁúŒ•ĵlK”e1dyÎÖÖßxƒððáÃhP¼»Ëý{÷È2G–edÖ5@y-a¥I–lü¡P¸øŽË€°¶is%ÙМqtȆ[µ²«â„%ÉZ¶··yøð!ßùÎwøÁ~ÀÙÙ?ùó?gwg'ÊŠY ªTeÙ[¯­1M•¼56zؤÑPÏcë—åL&SníÝâôä}–À;iL¡£|Ž…4Λ“š˜ÔHHøNüÓ%p‡ë ׎T}-¤'OdÞ"Æ‚1 ø«ÇK]®ì †É% ñ£1X$ù½Ê{ʪŠÃê×T(ýŽ’öu‹Ý÷þ;üóÅ÷äz±cí[ÑúWèUƒíUðíµ'`½¿:çšnn$B•÷T!þ´Ÿ²ºˆöÚ…µPLÓÁ£KëJÝ¿ºÎß*‚lšv21i†€z‡a—Ó£œÿøïžÂ9ÿÍ?¾{p%y^ª^üÝÞéVЮû•zU—_=CðúŸç®!5=6s£Õëë?_YCLÈŠA kêjK¥]•5c!U!xALt>q’@yÔ âcwdZ/C¨Éà€%Âfêù<©vdR“¤P|}¼’²jIºâë ŠÅ«k;ËÇwh2Ô âÀT„PKçÙ6 šº= Ô”m3"m×^&­_IßHB#¿5’lºÖbÉt~‰8Kß+XÄ:P‹ÍŠEìDÉã cJï(JÅ–ž¢ôQÎØD#èÃö¶åðÈsz §g°·?Âd;P.PSáõœù¹²½¨¸OØÞ‡½Û‚{:§*’yuÝÕ@¸tqÙ„0¿lÝŠ{H@$å‚qž­QüWª"à+=4l¼‡Á ‹RY¤˜ÎKðï-çEì|~utŽ‘kbà¼(ƒWÅH–ž›¤.äŠÀ‚|¬Œ·"a.bðeE¹°øJZaÔ,ßÜ 7ÇÍqsÜ¿Â#%ø:ˆ¥½š†àV¬þ)PPu¿ØåÏ~¸ ³@·Q9#*¢›ÆÄOPœ1X{ÄÁÃÛ_¹¼À˜Ót“žû úº>±¿BB[èWškjwpMN`™rt$¼ÿ/ùO´à{Ï?ñ`Ù&¤`·®Ö Ú×t^•ÇNؤi=hjÀ^¨l|DÖ„Ö2œ» a½wÏó:ÁRÆÄ¡xmž£kÑË+ô.òevk|Ñdƒô¬[7#j(h›|\‡ìÞ³U @Sa[ƒ\5<Ô”¿îXj2×@ ®‹A $ ¦£Ã<“õÿd ×ÐŒ­Ô¥Ò»ÖÚkÆHï¿bL¯C¤ t@”æ¶^eÄÖË!)¶Nzl8ÎzëŠm<-®»öÕjFÆfæ¯¸Ž ±ó$Vìéµ1„ >Uú—p´î<»ø›WÉ‹´ñ4Ð õ÷LgY¼^²¨=h#¬E@“êºûcÓ:^UUªr`A>š°½½Ã»wÙÞÞæÍ7ßäÉ“'¼õÖ[ìîìçy’4k"Hm„ŽsT–UØa èK:zîÒ÷}éÎ6•÷¯ É  kŸ‹nøÜ?oЭu^£«Ö“¤uò<ç­·Þb4ñóŸÿœ³³3NOOÙÛÛkˆáUŸÓH[ÑÊßiïó”Ì:¶Fcæó9·÷ØÛÞáÕá+öö©‚çèä„>þ?þ˜W¯^JQ,¾JÏÆ´Ï_5½kHU¿‘h¤Û¿Ni»yå‹j‘è5ÉsÁ9ËxDYI›GĬŒ°&qiîzŒb‘¥õÈ¥ï;¬ FQ?G’ÿG$2„@…HÕTîÇq¢t²8T-Q‹_*1!ñsËBé:‡ô;4žkå£ u35ðozD¤ı&š^Š‹ Æ‘ R zThp90ÍðÞ@ ¦ŸQ MšBÆ ã4fM'ï¡“¯›ÎŠ$I~)2Œ³X%ª\6[PTž¢Q•ï…$DÂAÆx²Lšî‘ÅÅö°™`\Ž×—,ÊsŽN vgç¼÷7ßæù‹c~þÁ'/T!îŸ$ ¸zl^N_^Ÿ‡SYÉcÉŒe¾˜3vßeg/àä¨à£§Ç„J’y7Ø­|Ÿù<§ %!”(U²„3tKÒ”åêG•ZþfY÷ÿu¨ÍȆÕOouÕšôÎóÚž)áëJéç-Ú¯ !%™ƒN…ú϶#s:àN]ýYWúWeù…‘ ºØ€l¨+Aêq» ÙpÑQ߇ÑhÔ\_mz¼Š”ØhmH¨tx¨y“ÚÖµ‘ÈjÆ›$©«Z–ª–Å‘Hý ÄºÖb¥5dIúëÚ%SB|Ñöý=B@¤§×?${W‚N Ð.+;kÖ½gÙ ^^KÈ.t²éUV·wåÀ»#–¶58ÕM:Jv6hg]½ìëx¡+ÉA¬ÊÚüîÕlŒÒË„/=Lg `3R‘”ôyÄšµ+¸15ùƒ'˶p.ÃGžùÖ7¿Á7¾ñ îܹ˃ØßßÇ9ÇÎÎv§x!É)„e’AÒZIî¦çÒ•DëâJ½ä:¬—c¹xí Ö`~\ml\ô­›5W9©³DÀN»f‰ÂÒ=© nUk,[ã ÖZÞ~ë-nÜâðð°%Áš ÒÐ<ƒ¦_“gCtvv$­×Ѹ¸,‹óÝÙ(Ks|Ìh4âv~‹ pûÎÞ|ò„O?}ÆÓ§OyùòÏŸÊññ1•CcÜTãÁ¶ ¾™Ï6\a,\D–_:E0XÛvìeY†³Ž,Õ¶Aãþ÷¥Z’lH ¯^û†RMÚû[+hLŒ£_W¼ŽÅ"jZ×þ7µ¹±°Ü B¬Ê(ýJs”¡œRçZÚ{#íy“½Ã»tênDKò“Æ ¢J^ÚíÈ^Ž`/¤b¤·:¬1h¼ô•Ɇ“ðÂPZ A¢©k¨ëx˜¿ø‹CŠÿãGÌŠwùÛço<Ù{XBåÑ*Êúd‡"MnããOM6ÔÆÁ¦t³ÍÀ>]^gè%ô”»È†øÿ†¢¨š{,)Ÿªå}‘H6HhäÏ„¦•‘ªþƒ¼¹¶ žsU9Q2˜÷ž­ÜFiŸ:‘‘*JŸ)Q«– ©I€˜sŸŸÏ¢dˆØä}•E²Ab|Ôn Iz OÐEôš q}ˆ×kÑ`@m$¡Œ€DO@0Teò4Ñ!vWÖÚMc,Þ—T¾ÀØâï ÕÖƒK5~bbu;%êópœ@¨üŒ 1Šcd„0FƒK¸†Çë‘2ca0>VwÉÒkHc„ ÔÔQy¡*£ÏâÑ«Š£Ã¸Vf9L·sÆ[Â|^¹Š<#’V1F±ç§pü f§ ^|ºÀØGG#·9?7 [<|¼Ïh`:zÆóìCöpÔ€`‚°=~JnO8|Y"ÖÄJ lšÕÊ|SðäóÉz®¯J ùÑ” jcµŽ£ÃÀÏ~ò?þÓÀwÿ-üâ/¡8õœÂ#×UÖ P’¤K ²F ®ˆ'oL—ìpWJð6I´×}κ›YK~¬~¿Ù(Á­å¤'‹£Vy¯ü­‰ý9#ÉUšýÃïîVГôU¦Ï]Ù ¹"a³~ ¶ KJSÕȕɂºu8þuÌÝõÕè ××Õüþ€¯~ÏÙÙYs?jðcìÏu<7êŸUZÓ®;à´~¦OPtKðE;ãTzÁx#ñc—Ë+EÁ‰i@Qk×êË›.(¢­éqèYɤV}Hfש…X/_~LÓ!ÐÕ,_޵ïiƾ@Bò Ðk-} ‚…í¹›TÕ.¹±©B>4s7&¸ÕµŒ™—a÷MePÒ³NÆÕ«€¯¡ |oŒ!8¡‘”ÑkƒÅéÎ]ÁP~yOÏ[’‘éuo_}MAõkMÐÅFyÆññŒ¢¨¨ª’Ñhăû÷ùÆ×¿É·¾ù¼ýÎÛܽ{¡ödQ|‡hס£+ß+õ=X§É^'¤]Sb]Zçi¤HÖU©Ëš1Ò½Ó ö3 TM7$䯞lhAþetXåß×-@B ,+F£{{ûL§Û ´Ö¦ØÁ$ éÄx Ý@ƒ.IߘIg±ò”9*”‰nãÆ9ǧLj*£,£´%÷îÞewg›ù|ƳgÏøèãùôùsŽNN’S";š‚™H°‹˜• Ÿí¬•Pzȹ,y˜H”˲h =᲌»wâš+}yͦè§'ú¾~„tá±^å·F˜¦±Ww–P|øáÇœœœPUÑÈ5t}•‚jÏ‚úù¤ÁY»AŒG_‚îº{H½–^Pp`¿ 8?³6©ÛR6 ]ªªðIBi%÷¨Ã¹»N[©^çôÂXn#?ñàfÎ"OÞ|1¦3Tåc„íÉ}þâ'ÏOÿ6¯¾úcgå9•Ÿ±·Ÿ£TxðA“‡@ÇÿJ;dƒ© Nb)zM¯Ž dû®¾öm¶nöÖN †>r6żf`LR¼é©*OUø´'J”:j:-Úg]¿OChdâ 5—¯ UlÔkãPçBs~!(³óÛÛQ«^}} [)ü7±XgSnPµïðIÊZ»v$ú9 %4…ºÃ£íÒHý›K…xÄ»ï~Goo×ôÀrX¡×ßÛçWÝn’ Q[{>/xþÙ‹Ô ëÖš~!Egí«»3ëJ~kmÿžnª~å5Œ+íq½¿–Sº.aí¬Å K$KÝÙZ–e”¤JÐåÐ#Y–HËé¢Õ×^ïÞŠ¢hª”Ÿ*k U˜îÍ­é}~þþ‚çÏÈÎŽåá£Û]àuFsÄÄØÛØá vÉïO¤ Mˆ+= Œëîa¯ß¹]wõ‡ìÇ1dh;~ëÙ`)4%‚ÏÁ×…|éµµ2Îõøq>$ITk¬sq­*Ÿ:|Ç'">7M„@íóÁÓ4™„ËFt7øðwΦB£Cw­ëÿt÷NM“ÚL" Ó‰““¿µ–$ÒM P¿¦›7Ô„•׊”,álŽHæóÛÛS|(ÒýPT©!K^‘9"ÁbŒGC$j‚.@J‚Vm|”‡n‘C-ÙP µŠCãÛ`â÷ã U¹@)(ËU8ak:æþƒo}õ;ªŸu|/|Šç *áÓa~ZôŒ@…e%…áṵ̈{뜃)û··ù›Kø“ó§G‡d²E¹ˆñtKZ®Ö¸ìßdm U]‹Ñ 4’ †‚º/!s_zN爞pr2'øÀx<¢,Q"³Î•{}\ÅEÊX+L2œiâ«´]D±³¤õºT¼‚HNYŽ=育œsrRà=ŒÇªÂ“5y\+,Ä Tq}ú‚±¤²áæ¸9nŽ¿öGUÑ’ b蔪Qjã&•¦rÀ{ÁW‚H”¥„¬D äãsByF0#¡A´Ö| ‚uǸlކyjá4¬’º¥?\²‹þšŽUyL7Gh ½¥úr„1§'–Þ?çO0çG?ˆ‡Å²=½…2µ8£Q¬•6ØÔØÄZ‰ƒWÓºëŒ/Kö¾(¢aH6\7¡¼4Mm7ÝDeä®:¬µ PZik\ƒ¼µ‰ñe@÷¸}‰°NOh†{õT-iú¨*×–#ŠcË5Ö2¨äêËþ ¯É°|=‰™TAÙýïE~¿ ðb)Ht–l”áœ]™í^ú‰AceyÀ¹é±“A3äÉ“'üßù¯¹uë»Û»L&ãv-NÕæ='ÊJimXÙLî&¿Ãõ[‡qÁ*]®Î¿ë°­GõÊPà°äa¥_×XÏq座<óôzK4¶×gÖ¡vuNà•¶ËAŤΆö'Áž$ßÇyÊþÎ.ªÊÉÉ1U±`±XD0'TØôžqž“ß¾Ëí[÷Øß=`gºËît—ÃÃWœžž AqÖ0™äŒF¦î ­‘æ0æø"Ȇzý ªIŽ.Pe_dYž¤µÔµÆä—€±Œá($TÞ³(*fç3NON©ªèÅáŒc4Î#é`ÛŽÍúÙyï©|…¯ÉqZ™Èë "òZûø:9Éu’Ãxªîܸ.Ù ÚÀ‘ `îĢɣÆ{÷æNu´1f…KòÆW!q¥Ô¥Tû~4Ä©I^\Q (ˆâ ] JqræÉÆ[Ìfç¨QŒƒm¥YPÓQ÷Sº¦ÑÍ\ÓÏñ\{ÿê‡\¯Ë¡~ì`u·Ó¨5–F¢¯&ik3sCêø5Mÿ]2õ­_o™ÍæŒÇ[¨¯Õ"ˆ‹.,bý!¢ÛHÉÂК8n½¨|> :R¦U<¯Ú³ ù÷ÐuËpÒnÒÚïú•šÓe!!¸ÔI`zÅ<ô àÁkT4˜•&vऊ!cöR hŽ[ºÅX—º×rP‡ÛÈ-5>RE A‰À9€•(ë$©£¶>צRM‡lÐ$Ýz;Äûc¡È][ÊÊr~îyþ¼âüÌQÌÁ{‹±&y{Ä9çœãàܺïçgŠ÷#‚nt„š Exþ┟üô3¾ú;ñdŸ¯}ý ùã_òɇ‡ˆÔø`\4®77‡®B×§EÉrÁ¯=hµ_ >}†s/š½ÏWI=AÌ¥±jî£L*J–9—‚aáËHQß¿NÛ†¦gl”ªRž>}»¤SÎ|ì~ÉG'%j\Œ_}è˜æW‚!Ý 7ÇÍqsüµ?æs¢©^OŠG†Ñ.µzæ„*ÃW†`#á ÉÐG 0“?CªO£1W'®sr£`-¸`^b¤jûº\¾¬ÉûºvC]½W7×-µ,Cl÷ÄnQ[|øËs¾÷ÏùÓ?FX¹…Ø)S&§¨o•Z¤‹gö呺'[-ÕW^%üÂE ÙuÚ €5ô½*BÇÐwàP‹[Ó˜;«têOïzItÁß‹N·T· M÷>è’¡¶È&· WˆÀÆõ=ºz¦"¦!V°]ÿŠF¶HY ^Ÿ{|ÔÞ ë¤¤® ° í7<’ ;›I¡DYÜö]D6˜Nõ³M­Ùeí#”<ËÈò¼|.»: ¸1æB €*cUY¶ÏŒ¨¸þÈIc¥ÓÅ`’¼P“ §N¡î³¶©ûãüü<Þ³×À,pæúBA•*„uã}M26ò""œžž6ã¬5z5 +«âB”5ÙÈs! lJ6@’Q 6>ƒÜyïïc _ýêWyüø1¿ýÛ¿Í“ÇÉ\Îd²Eæ² z~LK‚"I›œ¡«÷ÝÒËñ¨¦£’ëy6t¥™6Þ€øòÆ2r…Ó—kü»tÖ1IpF$u4´•ö5YÔš"wd°)4re> T©âŸ##‚uã2œË'ܾu›/^ð³Ÿý%‡‡‡hðTEÉ8sáJfÖºÞ^|²áºG½ÆÊ÷*®%U…OY,8?;ãø8Ãewgç²ä[»€oS¤•ZÞ0Ê&(¾¬X,Ц’Ú¦5j”åÛÆ &uá‰bmz~}榛¨Ó%s¡%lìS8‘w m‡‘tˆëaP.B¿kjƒêø@ò©}1ŒA‚oö˞̞×}îÔa"1<ÿ Ȇƾ ªãÁRî•å9Îf”¾Â¸ð¼ÿþGìíï“O¶È²iÔ\—(­)É XƒO¢iŒtŒiK¥7-zíõͬZ¹ôêKwc.^ÏBßÜc1¦éÞÀ€‹$\ô)^ÕRï«$§›ö@SûÊX&Û·’ É4=’2uÕÔdV¬*Ï2×Lú+²ž›µÉãAŒiƒ5u'Õ{†•Ô b#A@•|1,ÖŽ@ÛÛ»x;$¢ÜW@lÁl~LUE» ­b|´O.›$Uw<¨(!TÍîï½icÜtÞÖÎÎ(cŠ"§ª„²ò‘iKc`ggÄÝ{ ¦;ðÙ3¯2Ð0S±žããC>úðœgŸ,xëԑ玃;Êî­ŠóE›g½&¡»jÕ$.Ú1É–ŠÈÕÌ0fF&ž²4”•à+åøè€ñxŒ‘¸F›] ‹@Jl£Ñ‚j~ ùx—ÅÂ@UÄ‚µgFs~b±ÇIU•œŸÍ?¼<Ï£”1XS x0.úm„þ·\ÖYvC6Ü7ÇÍqs|NGž·½½ 7üIˆµ= T ~LUE퉉À·¾ ÿóÿj(f{8ÙiŒw´ úc*j°Æ“es¿À˜E“Œ’6bÕ/ç½ZgR¦€ õý©Ûj+o©Ê1O±à{tȾO‹™c2¾‹³[ˆÍ¢ S(‰}°Ý¾ÞpSÀ³зQAýJ1‡_UPWŠ\\[—tnHÕõVÖ´ÚÃ1ñï’õ½hïÇhœ7ïÒ&žuP¼|MÒèžÖ€ÃðÚšŠÑºkbÍ%ÕšØõ{âëÙÐ W“ÉÚë?ÃÐèºÚÞ¹tõܽ÷íïõêR\"BQ_ÈØ»2©5dl¿=|ðIRu¡µærnÃ|Õê»:k¶ñŠÅâZs¸þœÅ_?” νº’T;IâªNç\œ%‚d2™D)Vç*ÃêãuDŽV~#²¢–éΡBGß<¬$pŒÁ{|"ê*ækÍߎtOHfº×?›±«I7{ ¯1TÞSVU”d©*Š¢`gg‡ßøÖ·øÝßý]¦Ó)ï¼óÖZªÒ'©ƒ³nù¼ÒßÊ|õ¾¾ÄQŸ$èuT5Häê}­ÿž+‚ï:ØAeý5¬<ïý^ûdů‹oÐ5cK¾à³êr&í¾c ÉÀ§ù/4dxk„<ËØµ•CUFÂ!™‰—ej”j¸}û6£|DQ,¯^~†/HˆÒ#ÎZ¦Óm¬“ÆÈ•dμj•a•Ì@S鬛.Ϩ²ÆžMëX¾âåá ÆãŒ{÷ïrÿî=F£ÖFù’äHh´Ø7ÙÃê'|vvÆññ ÇǧÌf³æsê8Ck-ô |O"®^çtÅ~#×8‡ Qûëâ†t~²®µ¸©¸^÷Q¿Ä盧m<|4C·$r]5¾ÚkK_s_d³†lè»…ÇØ¥cŠбQÃ?„,ú*šF[“*ÐF£œÓ³s&šedù¨Ë"1GTžòXk𢙆.3¿¦ô%¶á:ç!ý%¤\¡íèiV1 †|2æää#.îÕ¦Ž} Þ»DPHò@ðÍÝ  Xl ž­É˜ÏçTÞ³5ÝeQÌb±Cêf×Ô5¢ÄªþZÚÈeúä¶¶¦M^wzrLž'2BFµ22çP©°´žf±»B¥QKÆ&µ¢äG|šu‰tˆäREðcÐmŽ^-øèéKÞùê>„†F¢©r|o`k:æÖåöÝ‚Þ/©|%šÅBC³Àš1§¯f<ÿÈsøYÎî­[üæß>ç“?áã÷?`+ÛÇ'óEìç’ rC–Y2çæü¯>àîýÇñƒÿòKL•3/<Ó­-€è¡dL#gµªâ¢&§ÜD—ܳ|ãkoƒ þÓ9úxÁöîanàbÇKC8ÔkL­ôãñ¨)N)ËãQFfó7Þaow—çŸòÓŸ}DnÆTš±¨d×ù²á¯åa­åŸý³Æ·¿ým¶¶¶xñâÿò_þK¾ÿýïóOÿé?å‡?ü!?ýéO×¾ÿk_ûßúÖ·øÃ?üÃ_ëu¼ûî»üÁü¿ÿû¿ÿ….7Ç_ïc¹2ZYŸª‚³3 ÎØÎmš`¢•»°Ñä*xTcÛœºT]!QÛWa{{B˜lAp|H¬†|08 “Té]B(±¶¤ªÎP-㿤7s9‰_ç×ÔšÀ?Ï¡*ÇœŸd|øô„ÿòÇgüàá“_Âìd„µ·¢Ñ‘s±’#µi¢UlÙ õ¶›dí˰ZJ©®Æ2Kdƒ|î•%ná’ôó’dzƒsíVO’Ìt}YP%­O3ÐΑ†ˆè$ëL#»÷²§u¿âõW¹ïÝ÷劮{Ú÷éÆ ÞP²ä2íÿæ÷Ú¿†ÄX÷¬×ÉmD²¬hÞ„lhªn7,Ï4wYsE«Þ½º€œÙ„p¹öÚô½Wx6Ãc(¡UÖ¬î®zL¬º¿ůÀÓ¶Ú « ¡‡@¥IW¬Û„$LRdF°u‹Ö`ÍYµFôÎ]#ˆd¯A64òrɯÁ¤¬¡7Ë IDATák4v¼ÌçQcþÉ“'üæoþ&¿ó;¿Ã›o¾‰sŽÌ&¯¬m»o´ý›KèÏÇ.éºÊóâ¢ZTí$Ë{²¾ÆB×ÿ~¹JgÍàD¥¿™üÚÚdxm:ü‡Ï缆@kßËA›µP;ûyí¬uF„ Bf]2TQX´+E§IW_b¥þ81™l‘ç#ž~ð ^½x†³P•Eì+ËV…Ž„RXÓ~²Á¾Q“‹!ŠÎ{Œ1ä61в¤( fç§¾âù³O¹}û6ÛÓ){{{ììlGcSÑD Ì—æx{M£Þ®5ÒÛ´‹EÁb±ˆfY’9×J ¥Št— jÚ êz?ꮯr…8`™ÜÚ|\]Ô°r:lÔ)ÙtDE1¥ñ˜:t0·eíj®ºÑNÊUd”šbçŠJÈGÍzÓ$*Q% &4`ó|Q çóhrl¢Ï–55Ȭ¨O÷#„æß ÍÙÍeë+Ð×^7x_º¾äKÑvÇu÷«èƒ°XxD2¼¯É—-ÒTÉ“AtÀZLÜß}ˆò¡¥÷1÷Cæò$'wš mm“TSlp0‹€1–²ªP-ÉrGæÆXhIÔgŠ1Ët:mæÃb±H23‘ 0T¨@µŠ†Ô'È #Û49‘¤=Þi¤‘(›4žl1™ŒÈ²Œý½»Qºið\¤‘ÛëÞvE%zDúD(ă5.v|ø$ªÑøÙ˜zŽ[„s?ùÀA$ck²ÇÞþ#Qrª*5b Žëû[UÙv§UUAYÿ{ocÉužwÿÎ9Uu·¾½N÷L÷ìqÑhdWmŸHÂK¢Ž!%%J(Ûßç ‘ #ÀImA`@‚á(!dG‚å˜ñKŸBÉ¢R")R܆³öô6½Þ¾{Õ9çûãTÕ­{ûÞžîž.R× ÑÓÝw«S§ÎyßçyßçA›Ð­"éB—Hé;¯‰È`´ÀŸz­Îf%¤Ý”ç ︛A¥4å‰Éˆâ¡Via´Æ¼¤o#ñ[9®^n2?++02&8t®œÓˆv  Ү8‘v£÷“ÝÛ=ÛÝ Âu‘”Gò”Gs JŒÌ»qÀC ÖwجTq³(ãE‘£Ä¢¨S(Nä òÅ€z}¬§ (aªßg™£C&*¥œ´Æ}ÖaŸf”£<’§±> n9ÑûdÃ;üøèG?Ê™3gøò—¿LµZåĉÌÍÍpÿý÷³²²²-Ùpøðaî»ï¾·œlØ?ö7(·iÑ:‚° ÖŠÔè+©Jt€ì´nÆw¤M d£Ý&j<6–‡xéÅ¥ü4:vQ‰fªpíÙJZ„p•ú m¬¨¢ü6ï{ÿ)šá%¤·‰Í‹-v¼9Èyïm‘euc*Ý&–T”J×&ˆH ´š‹ó!/ü°Æ‹ÏAe„¢<4B9Ya@¸È%|&6saФc˜+é;6N/9ù\ÝÉGÆ‹> ›í£i½“my+ðeû¼Šíòý´‡ë~‰cVòh·dƒ1²Ö ’vÜä»ìkuiúfõY“vÞ=°Y­_Ð5hÌûý~·`yÒQt³§-F®}“t¶TCö#bv üÞ À¼ŸÖóà*Å퟿µB–>]G»8×l;ûM ú‰ˆ;Ëä}3•g{Mñ“öø´;§÷þî™÷]>¶vK]¢=fÞý–Ýæ½~.²‡‰Ü©,Æ^Éš.sÝäòïeþÇdC? | fc a+"2ß÷]7C³Eyhˆ|à9r„3gÎpüøqJ¥R—ßJ;$‰f*»B†ôì"D_mü´ƒlÀu¹¬Ô!ë2;ä¯„fæo¿{»ªì·m˜Øg=ÜB„ ú>fÐsÓ»8›1Ž5ÝÇçï"‚ÀUK'‹àû¾[4©SÒ‹%å²ÇÑ#G)òl¬³´8G»ÝBkM«Õ¢²Y!ŸÏ»J`ÏK»ª´6]$bo‘íft_§œ¢Ó)–I¤› οÁWŽ˜ó|A­VåÚ«ëäóyr¹år™R©ÄÐУc£ql¾4rÀqæ>²‰y«Mav;t„C³KÙ¹Ž#Ȩx£ÌD‹=–VJz÷»”ˆ5È{‹vLBìpnñ¿Éø'dMmÓõ:íÌpä‹u°×özëgÚ=,Djmh‡Fg^»ö·½Dƒ` øØ6îöÛuFìÆÃGÄû¥ìŠÄeæuÒ;%©i'"h¬EFmZã<£r T,ßšt¤[Ùm@ß¡Û⩽\ÑI¸öDR 0þÙñs%ôÞÙÔ¦T,qêä)J¥!–––xñÅÉ DQäW©R¹ß ˜˜errœ‘á!„´q˜ÁБ“'ªÕªÔj5Œ±L’" œ<“ ±¢±M×i#Ö$rMß+²±¦9~d˜ÈTð<ëÚØc}}ƒÓchR«52 ‰3ænµÚ4uêõ:õ†I¥N¤,°©ƒ6ö·‘Ôj!sWWYZ(Rjrp:Am,‹Fy–rÙçÀTÀðh“…+U„iá ±|¯ïåÀ sáü*“? ¸íÎã”F<Ž¿K1{.`åj(¾Ì ^"eÐñ•؆´ëQ\ï¾p¾aÔÀتeiÅ`=I¥Rs¸…ð\aJü¾‰*FçùÞÃz  x*Çê’e>"¬. |¦ˆL.~nØ·è#qrpÒ^ÂAÊØ·CÀµ•%ZQk+U*Õ ­0Ù¹ ]Ï›´_É´01±j±ûdÃOÃ1==͵k×xùå—¸rå ¿þë¿ÎØØŸøÄ'xøá‡ùüç?ϧ>õ)Ž=JE|ç;ßá©§žâÑGà‹_ü"_þò—yî¹çøä'?É™3g¨Õjü÷ÿþßyöÙgù'ÿäŸ „à‹_übúÞwß}7ŸúÔ§˜ŸŸgff†ûoÿ-gÏžåá‡F)ÅSO=Å7¾ñ þößþÛ<ôÐC”Ëeæææøò—¿ÌÂÂããã|êSŸâøñãikë¡C‡øßù>ûÙÏrþüyî¹çþá?ü‡ü‹ñ/Ãpÿ‚ï{{RŒ¼§è)Y c”Û„­ˆ7ªN×e %¤é6N&àµ—ÖøúPßx†j¥€Öš‰ÐÆÐ¨×QR bÃ+µ(ä‹4ÛuÚLMÙ><Ž1 '¹ÁM ì Ú ‡Ä†°ôT>:·l§I¤“ ’k}Ú­"W.Ôùëÿ]ã‡+K t£‡°ÆGz+\ "„S —J`‘q…oä*E¤£¸ªDvéÄn!–b0Ä gòhðös®—|mU7ÜÚIÑÄ%Á¤Ùò*ÝmÆ4£×ŸVk}CdCÒvìù.Áî5yÝþµãVñ®1²]Ÿ=ûsÒRÜÑëmwZoü¼=BÖ¯Ò9{MÒl79Û‰ã È\RÚÉÕvO‚Üi’¢o;o7‘äd+ìu“ýëϩR)®‚î¾ì®µ®ùÞÆ"sþJöˆD‡ {»“o¶K[Ð!=—\zßm<@ΩKW}€ŒÒ^Yù¤Äø7;_¥’7lvz=ɸ-&ò6#IѸîl]dWöP]¢»RÊù1´âŠðV«…JÅ"'Oœä‘‡fxx8–® œ1Dñ:+•K;r\QŠÄ 2Áòâ ¤¯çQrnéžÛ JÛ>ºä½óÜfϯg_¼Y×®##±3#ö·& ìuÌ;X×wÎÌtø¸Žno¬ ²c/·Çþ:UØNÜ÷} …BZ­–óA‰ßÃÄÒ†Z;0mx¸Ly¨HûÐçÒ¥ ¬­­B Úí6AÄ~6•Z±d;lzçaç{G’k+©¢âÎc AK×#'WääV”ó›ã)ós)@[­TY_]wÕ¾Çää$ï~÷]±vv·¼˜ºmêÙe„龬+ð©×ëT7«˜XDÅþ=¾ï£âŽ…l´íªuãî¬ëI¥:e 䉤«b@¡Ë’®[ö,Ÿ“ì”ÆØŒÌJçú$DC¯DfçÚeÖÏ ·Ôƒ+îÊê¬!±,©1iLšÄ†ÝÞó%ÝØÈdýדBºù‡í³t×ÿf'x'8tcè¾´q2?FCjtµÎÐÐFj^ªÙŸ9sµ‚ÑŠëŸv»±±{ŸîqzÛë<_$zõ™c ‰ÀâðÐ(¿õ[ŸæàÔ!¾ùÍo2{ež0 ,’PxÊ-Ý"œ8~‚ÿçÿþ ™f³²Žµ–ˆ0 ÛNŠèòåËÌÍ͓ϸ÷ÞûyýÜy„•¼ð‹X žïÓljJ…÷ßw<ò0×–—ùÖ·¾Åúú?ÿósÏÙ»™# [Ôêš:õj­5ü¿ÿëqunžb±ÈÙŸ;Ë?ôaNŸ>ÃåËWøÂ¾à íS;xÐ2UwR:£tÏ\'@Ô¢Ïsçw–0jP¯×ÐÚÍf3&d\üEQÚ )¥¤ÙlFš»îº‹k×®9/,€Í9²€!5ÚÔÐÆ'º½'éP°èH224F©4ĵåˆ|Á£^o`ÛaMO¢û,_ûÚ×øùŸÿyþÕ¿úWcøøÇ?Îèè(ÿæßüNŸ>Í?úGÿˆ_|‘×^{­o°ÏçyþùçùÓ?ýS:Ä#<Âç?ÿy<ÏãÓŸþ4o¼ñ—.]â«_ý*ëëë|âŸà£ý(_úÒ—xì±Çˆ¢ˆÏ~ö³Üwß}|ä#aaaóçÏó¾÷½óçÏóàƒòÜsÏí ûÇ>Àa\­ã*p¦RÆ‚õ"ÀX™‚FG u¼ˆ?ϦIHì´¿N@à+šõ º}€Bp 4ë.ø Öâ’m¤3±²h[Ü(m øh»UŽcPgCøOtçEï¤ÊÔI9?©Ž5[€ùì§*—Ë!¨T*}ÁÚ¬4ÊNåg‚¶ñóµè8 Mf¯d ¾é~R$°ºë¼·5€¦#ñ$[JŠ$Ûñuýç~ ´ ÐF§@©MMÌdš¦ßNA°´ÒíÆa)¥«<…î6ߌ&r@é Öï±R2'eÿ×Ïzd;AI '!@jbÚ”îûv¤ÈNåöNÇ3[õ%zMÓǘîb[`;2& »*Þ­«Ôrà ØU%ev¾îbi÷¨I~¥Ÿ'‘úDÙ{[dµÌ•R(OáÉΞX¯×wçaÑh³Û]'±UpCdqk»‘ý]×›˜4½t~‘äÁ±äŠe¢,޹H;Y€Hkt¤)•‡¸ûî»ùà‡>ÄÁ©CŒŽŽR*•ð9 UŠØ ;þÞYÿ]Jnc/ëm“‚¸=2€©ŸC_7i»#¸ÊÆ^ a”-ÝU B† ï?¶®î]ÄjŸŠù·"ì"y·áP;•¬o”Ûz<Btu28OÛÕ¡u=©dãJèS9†œ ,žOMHêÍQ³™é^t2 ‘€| ôçò>…b‘Ña®][âÂ…‹\¾|éy´Úm™g³VEJ×å E–ù(¥Ãv»ïa⺒|‰w‘R*•ÃítÉIdÆ#*1`5Æ r©Ùp>_ Ùl:ð­1?·ÀúúÇçðáéÖy»ÝF©¤ò¸ÇH:öVÒh£©mVÙÜܤ^ktíOŽlQN‚JvHIÑ%­D ”«ä1¢[ŠHy2%WDf“žÜÒѹW³íd=J::dO‡dÎv&:ÆZ'}ÓÃL&{Fbj›È‰žuȺO»îx$‘p‰Í•ewäÌ)dç=zÕ­v@6$ÒGÝ$˜Ø ˆgöŒŽ-u‡iï’À±Ü?íù¢‹sH '%Ê#Œ ›LärÆf£ér”+¨JÏWÄyéŒu‚[^Ç7G°U>ÝZn0ßÛ™ÅúvWNØe Vwâmâx`cc­ÛÔêJCyr9E­Z!ŸËÅ÷¦+òRBâ{ %%Íf‹v3due—~ò…¼G;lÒhÔÑ‘¥Ý6\8™©©CÜ{N?Éèð(híÌrµf¸Xbzjšé©r~ÀúÚ*/œ,9ß§TÊñÆ?áüù×i‡MŒ±l¬UÀJÚí6×–—Ra‘\¹:‹”’C‡±¸t —CƒP¡VGÝù¡)Ž¢‹Dqa\½^E*G¯­®Å×Õ­íVD»‘Ëñºic??Ý£´ÖLMMQ, qçwrçw24TFIE»²°°ÀÜÜUVV— ÃvÜU¡Q*!þŸ A¨×ØØ¬ä\ÇYxñý c9 AЉó…AÎÇoK‚À£X̳°°Àúúzú|‹FÛVgY¤òÐ:@Ø2ŠO³:Ž0%$- ÛƒT€) ¦¦}fŽIÆ_7´Z«X¹  ­°mlÒ®¸tN12~˜Ñò3Ç_áÜù+„k›1 ¶„ÀIy9•™’ÿR€îQ¦NšuLߘÁ U!jH³ÂÔq¬-°´TÅ+æ¨lZê­lÝŽDq¢eºãyK/Å‘r‡Îÿ«N­Y#†|Iu}Ùu •† u…F"…ŠóÈ ‡ˆ$C°tÇ›­@¡lžzK¶óñ ÍÁÉ2ÍââR±ø±”Ø1ܔȉ%õhR $![x^|~qÉ=vŸlx‡/½ô¿ó;¿Ã>ðxà>ò‘ðµ¯}ï~÷»é‚‘€ZkþÁ?øŒ0>>žVÆ%¹ãŽ;8pàŸùÌg‚€ññq¾õ­oõ}ÿ(ŠøŸÿóðÉO~’b±Èoÿöo®ÕðСC<óÌ3üÝ¿ûw9~ü8ããã,,,àyïz×»øÒ—¾Äìì,ù|ž|ä#<ýôÓüò/ÿ2ú§Ê»ßýnþÃøûzÿØxnýAd6ƒ$‘vížF D&ȶ¤¯ebIctjÌÓ‰9 BÆzy"‡µŒèðî­M&(I‚ú|\…TS±óÒ¦Sý6S!èT¨›®¡NlÔ4‰u‘öñä8—.Tyú{þæ{°xÚMÀÇšÈc\5ŒÓõÐÖįŸ6o»/›¬kÖy9dÔ`•Týš :U±=ÙNÖ´ÀÒmÔ¹…[ +}äÀWå¼9„ÓY΂½Ge³'I6%&DF/³cÈÛ¬îª2<5’¦I›üKÏÁvkÁo)г©¹ÞNåÞªcÒ+¸3é•A€ó ?+Ð ÌÛX#:MZÙK ÝÞõþÓ®‰î–×b§Ä‹½)•Â[ ^MJ’u“½÷ùö¯—<¿)–5³5vo¾–“Qˆf;Âv0-é.j5»ån—{3gçvòVÛÍÙô:F!¢Ýý7B|î ܾ)cg{ç¬ærg wû‰Iù­#W%ng166ÎíwÞÁƒ¾ãÇŽ344D©TŠ5™î+26pìœC6ñïtžôóº>àx=ò¬Ÿ|ÏVÙ¥½¨( ¶’!?övAíŒè{ëÁ†¹[÷mÛ÷ïƒ÷¿žµKØnŽH^Ÿr¶{¿”R’ÏçÓ5¨…)°›‚À±X¤ÈÈ6(ÏgrêÅÒžŸ§<<Ê«¯¾J³Ù¤<ìªg…”ËeÚ­VO×(%ñ¥O£^£/ìHÒ®·³—,O*ò’lµ½µày~ZékŒ¡²±ÉK/þ„¥ÅkLLL0<<Ìèè(J:(ß œ;8sUmØØ¨P­8²¡Ñh¤R”J©Ž}æžÜ‰$\_ÎÉÚÎzÂÖ¢•Ý®Á½‡ÚÐ÷T«gæÇ¢?Ó±å$£º»ÆDJ"'{!„í0Ý=“9¢7gêoÚÝeŸhÑgdžíó±A+øÖŸîýª'ª¢“»eɲ; @O¦¬E»¢„G“&…'½”lI¾dºbfŠ\úh±Ú¾àþîÆgÇqÇ  _ôO•Eœ %´©Èd÷]ž2éVÂÜîw®«È%œ½Qh˜½|•ïþï¿FG-šÍí°Aäð½ëk›äü­fƒbÉÉ"ž™fîêB FÊîw‡ÄÃ¥ ¨mn21>F.ð±‘fanž§¿ÿ4 ‹ hmÛNú+r¬oTpþ*3@&Íã¥:HÁ[A¶ƒId¼û{V9óp÷ÝóU(‘Äžç¥>J)´Ö´Ûm'9ãg“““L:ˆR^Ü9•ÊÓjWYßXÆ•d$]ÊIlŸP×î’1 `R Z)1IA[o !c,OQ,ð}z½F½^e#£®çh›xVøXS Ù€Å¹6óW=Ž/¢ü b‰ä¸@Fµ˜8gú°ÏØÕÍa6‰Ú%´ÂXk¡¬,iæ.G;9Âá%Þ}æ$sóKÔ*-êëHácu‹‡°žÃ ºªö·¹º‹%,Ɔ(Ñä®wÍ0>6L³å!¬bñZ K­Ë1áRudC¿»ZdT52˜ƒÅ‘´J „o€##'î:…°‚‹ ˬ®4PAÑÆcÛç<’¹hÓx¬¹(¬)ƹ¾;¯©Ã™™ (ÆÊy^¿°„ °Û†½ŠY…›zûE(Yã¶ÛF‘žå¹ç÷ɆŸ–CkÍw¿û]¾ûÝïò›¿ù›<ôÐC)Ù§OŸæãÿ8_øÂ¸|ù2ðÐ÷µêõ:Ï?ÿ<ø‡¸ëÏQ¯×Y__ç_þËÙõûöÏþ«««|îsŸãoý­¿Å‰'\À'ëÛ{<ýôÓ|ìcãÑGeyy™ .ì_äýãÆ™¤;A˜X¶ܹ¯¤u6Nô2zŒ¤f¹Žhˆt€H×Òl%[Ï`%¹Z4R©„´[/dœ{¹æ7Mç Aw5$oÇ<]$¤‰éÖ?D „Á¦EŽh6$W/4ø›¿^áÿ< ³W YO– QHãjáµhÓpºŽ"ÂU©wL˜î$KtŒ7»/t¸}Ämwøûø=TÒÕÐkâ5à9Æè¸ªQ¤&ŒÛ àÂfZvã÷6Vo%ö ³“d7«¯|k%Li")vð¸U—6£ýÕ?–Ú.Õí­NÜ9°ßùõhz¯M? ¨Þϱr¡Ÿ¼IjfGMèžï6£šý|½àiE}ˆ! nÊü³ƒå·z¿ÍDv̾ƒôç÷J6 —xú[É™½ómëܳ} æwdù”½vqþ)éÈ„hí4ºµîHÌŽŽ222©S§¸÷Þ{™9r˜r¹œÊÙ¤ÝÆlü²qjìP²»›·»óö&jòn·xö[gÞÞ÷‹Ýáßw§[9ðœÅîÆ:[…î `\¼/‰_«Õjuæ¸.FëÄ,+‘6¹“gðsE¤—cyy™k×®Ñj;O’0²Ödï%Cd Ê÷â¯eûÈ¶íªºL¿é"w9©G)'¥"Š"–—ØXßÀ&ÆÇ™œœdhhˆ±±±˜Lp/¶5›•Íf‹0Œh·Úc`ìÖÚ´kCôöY½ßœNH×~ëYÚM™í °7V,0H¦Ðwc\GpˆXkQΠ+%’Éäyžë0A¸¢CkbÃÒD–ëºuÈÎX#½ìmÔAضzšìý.µ{Øw²þVdr­ØT6{Ë'|Ê=J[„•èÐPo7ÖuWû¾O]ã]mÆvùv¼7ðñ:æÙ7*5e¯¨î¥š-µ²ÎÃ"ëçÜÉ4Σ\1ŸÕŽp¨Vê\¹p•u¤°ÎWXqÀZNM±¸8ÏÉ“Žazú óWg↑‘2c£Ã4êu–—Ða˜¦§6„ ËÜ¥e.]™GJ餚ÂШA€Ÿ œç€°”ˆPʲqY\ø×_ GÈᮇ àkuìg¦D”'R<‘tï8ù`©ÜJ®GŽ¥Z­òÚk¯u±f6ë•"²…÷ï*‰o†í6Û Yn r>MÑ[¬­­9ÜÛ Às’i*‘²SX£©V×™­pá§î(2:QÀ—9„¬§ocl?WàðÑ"'W ÷Û IDATNµX]†ÚÆ2–"Ö+0FÓCÖÖš¼þÚ"5Åò8ã‡F8vb’+—f©×Ö±Ñ0¤å'šXÚHá#P}%a퀎«³±’#‡oc¨”gaqk1- #G'z;¸7û)¡9©.‰‰<Œ®02f9|Ì‘>k-K{>Ä…gc®/r”Ïtý]F.ÆUâ9îy¦&P(Œòú…¥›’c)¥PÒP(´9}æ QÔ‘_Þ'ÞáÇC=D»ÝæÒ¥KŒŒŒpäÈ._¾ @†LLL8“­ÑÑ´þŽ;îH7†V«E±X¤\.EÏ?ÿ<çïüNžÄÅ‹9uêTú:aòÜsÏñÁ~p߸zÿ¸ ‹àø³WBÓŠîÏö|®jCƒ6 Ml–´Ä‰ÈÀø ýe„¿Ü©ýߢW.ÓíkÑ-9Þ4Èu¤¨¥E;èú¿i®ÆTt¼KÝIºSS'rèÈgmYòÌ–ùñsPYs•ZÅâJŽRÈi‹Ö‘ ñ±X¡Aê¸#±£›¶¨ÇÉÒÊ ítâÛ“4ls$ÁfúyÙ|$]&­²Î&­7›làÍ®2µž’ÝbN‰˜ŽJ/j2ìYp[ W±ÔIü{nå]f¬;5Äd÷VzŠë˜ún¥Ÿ|C?ÓIcœ\ Ð%-Ñ;¯û‘ ½€´±[ÎU€y»ñY©´A×ÚZK»žï4²¡¹°“Ÿwzèdë5@2Üè¹'ÀOBŽl™«ÈT¢Á²¾¾Îèè(Åb‘£GòÈ#033㪨}ßɃ$òl‚¾òGÛ‘+·Š<{;Í·Ÿ†£±õfAïþTÁfAl€jµJ£ÑHÁÿTîH8ðXB`, % Å!“Ü­Ìܶ{­«úLÌ¥“µCGÍF“‹/1?¿Àðð0'Nœ <<ŒçyD‘& #¢HÓn‡4š­¸KÉ:õ¬ÚB.gâ-÷m/‘)eß}.Þ·Ý÷rŸòB1Æå#ÙîŒDÑÚ¸=ñóÀ”™ë”•]Òñµì¬“®’;ñ*26ö6²mi²ÉøelG~twôJEîbÛ£GSê°·¥  Û•Õ ¥mb´ÚfHtèdEëÕ: …‚ó±±myw¥Ø´vô"Ó%¶+ÊäV®«»Ë,³„R"ßå)'Ô›#ubÿx.ÌcPR1\fzz†\ÃS ­q;l£fc£Â…ó癚œd|l”ƒSð|Ej†JEœÄÍÜìU®-^£Yo"¬ ÕhQ,gúÐ µz‹|>GØnQoÔØ¬nÆÔ’ËÐE´ “éÔ³=sd·{®í¢ûùRöHÒÆ ±ç)”rÝ‘¾ïS¯×X\Œˆ¢jµÆÒâ5šæCú¿Áóüž"¡nûól7ù`)Ñž[«Ç$MÐéŸK?÷ÚÚZ܉aSi7G ŠBq”Vs™«³5æÚ”G†ðL )ëÑŠ;ª,Òk3~ ÈÉS>—·Ô7+Q†°Æá AÃ`Yœ¯ðò‹!ú”FN:Á¥ «\[¬cš5g”#<’ë*E¯½ó™n£ÕðZ²ºÜbi¡j‹÷î=3ÖÅœBX›Õ×–×V°¹Y'Š Â»þ Ò®/ÒNé<lÀÒÂ:cCÔsšVKÄòIr—Þ0nM¥|Âv›`ØCªˆé£Š#'|f/7ÒusŸlx‡Åb‘Gy„Ðn·ùÉO~ÂW¿úUþâ/þ‚_ù•_áž{îáñÇç¾ûîãŸÿóÎÚÚ•J%%Ξ=Ëã?ΟÿùŸóWõWŒñ[¿õ[XkyõÕWyæ™g¸ë®»®K6\ºt‰ÿò_þ ¿üË¿Ìßû{ÙÙY^zé%þìÏþŒG}”{ÅÅÅ4 ùÊW¾Âc=Æ¿þ×ÿš¹¹¹TÊ œ<Ôý÷ß¿¥CcÿØ?n?¶¶{ƒ51y­ŸçÈÑ!fެ±pÂÖˆ@¡$ADŽv±pµÆë/_cêÐ3Ç&xÿî¤Õü1ÏýŸ”7„ãèPâxv•b5»‹p%‚<ÂúüÍ_Ÿsø(1BdƒŽf¯³¥œŒUÛ4H.Ÿ¯Ñ\Q4›-–+Ud®„± ,ÅNg†Ý é¥;h’ Pb„ çV¸|îZìG—ï±ë×vÒã’\Pdañ gî.rÿ‡2y¸ÅÕ«´®vŸlx‡O>ù$O>ùdß¿=ýôÓ<ýôÓéÏÿñ?þǾû¾ÐõóO<ÁO<Ñõ»/}éK[ž÷üóÏóéOºëwßûÞ÷øÞ÷¾×õ»gŸ}–gŸ}vËóøýßÿý¾ŸéìÙ³¼üòËÔëõý‹¼Ü‚Íßí"ósgC5½å^Æ`Ñ#SÍR)cÝ\é#eß/>Ø!ãdÊ$º—"–ÝKÌRGl`°‘F 3Z›ÙþÛ·ÏømÙЬAX]ÐÌ]mñ7O7ùîw`ö<#ãñ«#d3C¸ÈØX:©^3Î'£K#óÍ9zɆÄái§ÉóvA]op™$sé×­vÅÍKxwsîî»Üb2¸]2“M^R“êÌÏY ¼¬è2ôY»ÀÁŠÁ·B±¬È™€Û“ƒÇpïIN6¹•JEQW%cÌIgiö\ÅÞ÷3¼ÉscdC?лwÈÎÙ[q:J¼ec7P6i›Ït3È—lwÔVÂNÄ]k[«Ešz½I¹<Ìé3ïáÌ™3ÜwÿýLMM¹|>ã“xÀl¯q»O0ì7+.é5NÖ‹ Èår4›Í-±Evï±_ ­5ApàÀŠÅ"ApõêU®\¹Âòòrü8b¹Ì¤Ê=ö€Òù” »dú®#ÿ—¼{ïý.IÉ~rF±ÔŠŽ"™›Ÿghhˆ¡¡!<ÏsÆÐFgÏÂiÌ{ÅR‰(ŠœŒR|´^§kH/”É ]×ëMºï³‰ÉW>ŸwçË$&.¾ïƒ±]{}r$±@òz~O!Cj­#G^eMÎeb.öNómÙ-°FIløÛnE!Ö–:>W\°KaHdîOâÂwÑ×ÒaÇPâΰ]Kï.»ºöÒØW/í¨êt8%b‹°&î† ãî÷©4gƸ[ÝE>ŸC Áæf…óç/PkÔØ¬Õ¨×š,,,±¸°ÄÑcG˜žžfzzš¥¥kŒOŒ3::J†,.-°QYñ!&~ýSeÞ-Opöþ;ñÅææ:çνÁ3ÏdmM’*JXÙDЊãÄ¥"Læ8~Rpᜥ¾¹‰µÀwfÑVb¬BŠ"µ¯üx‘ÇsLŒ˜œ(säH‰«7¨®mÖ*é^‡7Joì*\ç«Q“G&R²RbQ1€´»qïk!•ÀóÐj»Nƒb!‡†È"¢’˜x/+DÆ£«ÀæÁ1¦db ±ÁùñV‰©ÉŠ 4êëŒOxœLL7ƒ–†¤„|ŸlØ?ÞvG¡Pà½ï}/_ùÊWöcÿxS€s£‰Éƒœ0‰ÉBÇÀÎ:]GkC¬ b,Ú¦¸°’¥2/ý¸EΟDë"È:B긘åXìVÆFZQ¸Ìø¸àݧO‚]ÆÈ*ˆoBDØÄ„Hì4ÒÜ 2³óñê–T8¹k(vdÂØÄÈhö#<ÏïK>czÈ†í ‡[—¦öOÔL¤ÌvZö»Mܳd3–ë&̺ƨGš#;Ö½ ù^‘Þ×{gí{¿7u†\ïzßÌûï­|jï`>ÝŒî‡HØÑÑÎJ›…¡Ã0BJEihˆ£ÇŽqÏ=÷ðž÷¼‡Ûn»0t>@Q¥Ëýº”v{~ûÇþ±›5hžïûäóyZ­Íf³/hžVǦËÉ<.•JŒŽŽ:€ZJjµ×®]‹; ¹|à€@%±ÖЊ $ùœŽQd<ï¥è2(î{&$kìá×û¸^¹Ì.‹L•§3+Õ„QÈÊêJ|o‡i%?€òžï9Ír%Q(D$Pžêê>t$I'0pÝ"Ž3\%1IGt¢ÍѳhkÞ¼¹a JJ ù¾ß1ÖÖQ\£‘èê{Nê"/³cT„'ëšçÅÆÐIŒ‚ÀCd#BÝ]¨ðÓz)\˜tI½Û,ˆçþFn\ë ‹D®Ç°;Þ‡ºŸÖ…æ ±Mj·OÛ®¯~2Èó¡—âØÛ~åÖÝggŒ“¶!¨6V4±²Îze–ó—‚ %aØfym…•µk4[M –…ÅE^~åeFF‡9xð ·ß~;¾055…çyÌÏÏ3?•z½Šï+´mci‚jP©Íseáªõ ”/ÑQ›¹¹kTjkXaÑFCÆ>Ž,SJ:/…-ç_(Û;f¦g<ÝE2¬bÇÞÙŽ…ä{¹\fzzš©©)Úí³³ë\½z5þ(ÛË<Ý,ï§ì¾ãyår9ýÝêê*Õj5í¨K\Pt$i6®\ªqõJ‰‘±ùÒBÖ0²æ¾–\ÁãØ‰2ÇNTX[†õÖBcß?.òÈ!ì0›+¯<·Â‘™1¦Ž î8u˜ÚšÏ‹?ª³^ßÀ€ÉcŒŒÓǽŒpÄ‚Éc­r¤T\¸g¹Ñ”Q päA£Ñ 7”ãС1FŠífz›Í¥Mj› ÆÊ¥=ÙªtÏËdnª˜pnêÊl+öÉÜ 4äŠeÓ®C@ZÍhÙãÔ©2gïæÐÑ6k \¼z Û»í“ ûÇÛîh4üÓúO÷bÿ¸å@H²ÑéÈ‘ " í–ªEÒæ“˜0È`ÒÂJ^ûÉ"_"d}y•z­ˆ Z?y„kË«Ô ”¯âÍÛµøa\ue©˜§ÙXæî{}Μ~€–n¡dè>Ÿ{4>o 0ÚU‹±mµf\Ä$º·±0„v«Àü¬áê%+$„%Nßq'››9<¯ŒŸóðs )%¢U<–1€¬b`”7·;I tB6d’Þ~æv7eÆ`¼¸eàTb°}ãçÞÁNÑE&íTq‰Ÿrc4 ÃdP@,…è“ ¤Ä-:ÿA o?σA†”{;•£³ë•«H*{ ·‰÷”½SÁ×%²äY?²áV’0o²a»N¤[=½îÔÓ%&’«V«qáÂEVVVcrrŠŸû¹Ÿã~éœa­RŒ ¹ªñŸa)¤TòqÛTtŸX¹Õûhv Éþß÷}|ßOõ³ð8ä;~}'+y1<<ÌØØ333äóùXF>¥¡"ÅbR©äªVã=ÃXëø»R² ÈîíFèRÊëCò÷~{TâC€Þ½ßWWר¬T¨T*´Úm''8p€C‡uÈš H} âA#1ÙÔZw:âs]"çö–ÎúÈEŠÌ˜%RÄÆ8“gF4 ––v,Ùõ˜ nŠã䨴Ö)ÁdEŸy o ¥-¥¹6öuÿÜüt¯k½þ-ÙCg¼KZkòù<žçeÆÄö3ÓZùA*/IQÛ6#*¶ý³ÈœëÖu;)˜ëœ×î{,ÜzàL›¡»»!]¯¤s>ô õf…òßþÖ_qþÂ%”ôbÙâk|r…QµAes+³W¸kýŽ9̱cGñ<‰ÔjU.^¼ÀêêJ|&šH;àTHÍ…‹¯ó­oý%¯‹%äP2G´CÁ€‰óP)º;„q…~Qr#"z¯œèù¤×ó¡³fï|<³÷éèè(SS“:t0;;Ëòò2µZ-ößâ/!A’õ; ôÃ.%† 0ºÀÒ|‹o4˜9<ÁØÄFm¢hci ÀJm&&sÜ~g‘…ù:õZ•°]ÃksHå»™lò˜¨ÄêRÄùWÖ/3sp†µ ο¾ÌúÚ¤N M%s›=šŽvü;«ûN÷˜fÂ$Ö"1Ì6±Äœ‰U(lZí¿ÛÀJàŒç=¥ÈrGŠx ažlà …'%‰B/-¬ã Jc‘茷&ΟI€‘±çØõ®sfEw¦Öî>X°m?dr*äÔ’ï’¬¬-séR…×_¯7í“ ûÇþ±ìl9¶:}T!WžÇÔrîeX˜-"“2Ü'öýcÿø™;-Sb+­“Šýt éŒ# ¤p”Ö®³A/ &Œ ÓªI)|°râ@ŸTÓRIJ6Ž@ˆÕe)òX#Aj×r*4 ßµ%;‹¸I!|× ’ØÖ€5ơij—Ú<ûƒyžýA¡O£6Ž’cQD*•1± Ì6°®í w¿‰¿ã械[H»£ºqèÍ«ì ÓÞçõ uÁÍj$¿5×Àøþf~~êïÀÛ;2ïð±ßûšÓiÅÒù•Ô ªµ:aQáè‘#¼÷½ïåÔ©S”J¥”ä5Ƥ[¬½Îzö³|l¿@ï 7í@j%:û###H)iµZ˜V+­|'–QJçmàÉZK±X¤Ýnsûí·£”âõ×_C/]£Ýn£µaddÔM¾Wj‹.?¨7ãܳÝ`†Žq§0ÃpŠrù#£#¬¬¬P¯×Sï‚F³ò Fa™/„HSw9K$Úh"u?V½MŠaúu%Ê,﩯'Ô·›1Ó!š^–­æåo¯ÔöÿÊõõÕàï×Ñà~Þ΀7KÎhQ«U)œ´U. ¬Ø‡ :⃳¤ª~ðúº]Uµ¸Îþdm†pØUݩַÖIy9<Ãٻߋ”*–¾´[!µz•Ù«W¨Ö6ØÜÜd¸<ŒR>ccxðÁÒn‡4[!žÊy67+\¹r…ÙÙ«˜H³¶±ÆÂÒÕê&333¼çÌitd¸té"sssÔëõø~v„šó0ŒŒŒñЇž»«Uæ—1Z266Ž%â•W^a~~“ŒÚD¬­¯R(æ8óÞÓøžë.PÒ™2W«UæççY_]£ÝnÇ÷’î)ä± fÿÍ^wýîׄ`. ŒqÇwP(R¢sh¨„‚ƒR¯×b÷7g îíÆMÖ“b±ÈÄÄBVVVhÔê(ßÇ“‚¶±°pU3{±ÍÑ“>¹ÂÖ¶œ‚²°X"TåGŒO>ÎA³^Çš&R¡mÏW‰y¬˜½ÜD©eã¶Óy¦¦ŠÜv{ÀfµÍÜ¥M<Ý¢æB(§™^y½¶Í¸84Üre¥wrOë“+ƒ±( ZGTëuƒ¤Vk‚5žŒ÷ڤϢÿÚ*ìv|øǯ6‘±pë„c"!Æl2:¦xàÞqÞswÀô«K¼ø\À Ï(”½ƒBÐ÷Ɇäøð‡?̯ýÚ¯ñä“Oòo|㦾¶RŠÏ}îséB²¶¶Æ+¯¼Â×¾ö5±ÕÏê˜ô£å«_ý*Ï<óL×ßNž<ÉÇ>ö1Ž=J³ÙäüÿÁSO=Õõ˜ßýÝßåèÑ£€k‡á…øã?þc´Ö|âŸàá‡îzü~ô#þðÿÏ}îs|þóŸçÅ_ܲþê¯þ*÷ÝwÃÃÃ,..òÍo~“ÿøÇ]ûßø xàþý¿ÿ÷¼úê«û×ø•¬¹/­3&s‰’éT=ÛÄèÉ&•ቄBk“ú;¸$LL6à‡X A¾a#\ƒ6þ¦ Ï ¢"±B¤¨âûK-nO‹[çúíÙewÞ^7†B 7^…¢¤Q´ÛyÂf‘Õkðܳ<ÿ£ˆ¨]FèI”Ay'%mLÄ$=Ñ·ŠFtZ&~† Û“Lߨ1ðÛ it37t>"«Ûµ€bP »èÎ=ÅÛn½}+:÷6»n¿.š}úýãÍ:d\=½ëõ4݃BÐn·™Ÿ_ Z­a ¤R´Ã‡1–¥¥k¬®m`í,ÊS4›u®][déÚwÜq;ccc¼öÚëÌ/̱¾¾†Äë‘#«›5ÚÍ6“œ={FV×+´Û&Ýß7« 6«MWÿ&œÉw¥²A©Täýï‡g¦i5[¾O¡P`aaï}ï{¬­®¤ )}››Ã l܉í:Ç"vZ4—y›››Xk)—ËLNN’Ëå‚ ½wGF‡ÉåsŠyÚa“+W®¼e¹I²f(¥(•Ji^«ÑÄJ…°?Û¦ºqåR•Ûæs ñòEŒ©¢‚Ȇ[SmH¾(8qÛ ³!k«Uj›‚\Ùz‰ðrˆZ.¾Ñâ…g*x~Ã'ßÅÝw+¢è­j“ÚÚþP‰¨­i¶BWš-Ö±¤gfþw­ƒ;H›n(w´O ´Ž˜_XBÅQdÐÚ¦ûz·Ì›µü9Â:ùîH‹ ,Bµ(…šisôvÃÁ£’K–yí5Í¿Ÿciö0Qk‚ÕåE††÷;Òã Š"Ξ={ÓɆäøò—¿Ì¹sç8|ø0¿ò+¿Âoÿöoóû¿ÿû?“ ÉßÿûŸûî»b±û×éÓ§yùå—ù“?ùÞÿþ÷óñœ_|‘µµµ®Ç=õÔSüÅ_ü§Nⓟü$«««|ó›ßàòåË|ñ‹_L›°ÑƒŽÇ{ŒcÇŽñµ¯} î¹çþñ?þÇüçÿüŸyá…§zæÌ¢(âÁLɆýküNKÞ²ÉJgWq”DÛ¨k—I*?œ7A„6…*ÅÇ ®=È`ôJjÞe¬AIÇc'­–ÂÆAq± €šFˆ B„Ìë€È7J8dÀׄßBäÑZR¯Y˜µ¼þò&/=ßbaNR.SFùC(O¡<°B:}Ì¿‘xûM˜[¸uÞ«K3·'ø±{øìÖÂ[—ŠîÀ¹Q5­~ã·¥žMÜ:ÂaH´ãt÷žsSíÝû{ßÛ6ù8çŒ]«Ý& CÖ×7ØÜ¬"¥âر£Üu×]¼÷½?Çðð0¾ï†!JyÝòYbë’ÖÅÚë¿ÿÏ‚ÌÒþñæ<½`Oøø¾OEäóy”RÎwªÑ@hí$•` áz¶J51Bw Q«I½^£²Q¡X(¥r#x*½€Þ¾Åë˜ cÞ—Œ+ߣàw´ó œÌç¾î{Øþußöm67³íD«UoÜàÚ“è®»á4Ö¢uìa¡äÀ’ ^ÂAðNÞlZ¬±}WCç>Êα„´Ëår]ííjHÆh`åò®ï‡¬¼’ð÷~µÍv‡s-ëÝgiµš´Ã‡Ì`´ÅX”>Z:£#cl¬oà{yjÕí¶atô~P¤P(Ð Û¡ÐÚ’/”(?ÿ<¾ï;cr²¾±Æ•ÙËÌÍ Š4—/_baažF£N.—£+Òj6£ÕÐh-)‡±VÑŠ"&Æ÷s4[!­vÈó/¼ˆ+麙ŽŽrúôéT:)l·QJ199Éù7Þèºß:s¡Ö&ÝWw¹tåw׉W²æëžç‘Ïç©Õj]sÏIÚyäó9––Šoê¾30¯Š»ÆÊå2­V‹µ•UÚº‰E D€@ÒhT˜]ãÊÅaާœk£íÖ4ñ|§r¤(òÉ#ŒyòóÌÍ®0::ŠôŒ±(O m[¢º©øá3×Pþ(§O1y ÆÉ“æ/¯q¹>²ä<„ZA!‚øz„8 c£;o~¼&¥ë\°&¢Vk¥’; ˆ¥»ãîà­H§²s\H 4ÈçjÜv[À{ïÎqâvC­¹ÂÅómþêÉ%*« \|«­WÜ\Þß`||œS§Nñ_ÿëå×~í×8vì—/_àóŸÿ<çÎãøñã,//óGôG\ºt‰Ï|æ3DQÄÌÌ ­V‹o|ã<ýôÓüÒ/ý?ü0?þøp»V«±²²ÂÊÊ —/_æñÇçÞ{ïåâÅ‹|êSŸâèÑ£DQÄw¾óþìÏþŒG}”;R©D>Ÿçûßÿ>O<ñ¿ø‹¿È/þâ/›››¼öÚk<ùä“}_çî»ïæŸøFƒ‰‰ Ο?ÏúOÿ‰f³É¿øE^}õUNœ8Á׿þu®^½ÊÇ?þq&''¹|ù2_ùÊWX^^æ3Ÿù Zk¦§§ ïýë|ÿûßçÑGåöÛoghhˆ\.ÇÓO?ÍO<Á™3gøØÇ>Æää$•J…?ù“?áG?úQ:Égûwÿîßõ½&þçžþccƒGy„ÉÉÉ-dC»Ýfmmgžy†øÃLNN¦ÓZ³¾¾Þõx•5ˇæà÷~ï÷˜ŸŸàÒ¥K”Ëe~õW5%|ðA´Ö|ë[ß⡇ÚRy:è?ûì³û7ÚÛèHZÊó‡êYT;‡"nsѵÚ‘!2m$VxhÓéœ|ÏYø½?´#HQîè¥ÇÄBº‰YÓÕÑøsŒkDþÿàuZôdWÎsË“8{÷1ÖÖB¢Ö8Ë‹¯ý¤ÁO^YZ¥ B\¹Š9bclð [ó`I­¡[­ž»Ï¼÷Zëþ±‡³ÏéÓ³Fû,—ÜÝçìqïzÞ÷}žú¹8<&ü<Œ~ÔZ“£½xÔ ­]‰”’T*‰eK„ ³# ‹L>¼èõ$ÌÓaÄpø®Ó¨D5+ÃÌbGÄm´«u4‡Î–D"ÁÔøÄì ?I+ËÖx®‹´?4µ™2Q;Ôe&Wµ4XœˆêÕ0ç]öGcPžç‹“+9lÛ®®'×€:î8 ÇMhO‡àø‡>ô!¤ð÷ªþñmÆøYÍZŒ8N‚“'Îñ‰ÿûS”Ë%´Q)ý@;Ë ˜d°ÏTQF³1ðâ‹/rîÜY¾÷ïøœýÊDº¾C£ŒÇøÂÿù ÿïçþJ»xÊC 2þ>DXVЕL$0Àèè(ŸúÔ§¦gŒ™Ð1¤ƒŸÂd®_Ïȃ€Á„:ÆÇÇÂAJ{Îþ£-ÏóRräÈΜ9CWW‰D"š»ÂcÊå2“““œ?þ¢Û¯µšµŽ•ð9Ù>Æ*•Š?gJ°ÂPö\F8r°ÌÆM]´´va¬!ŸiBƒ-“”*-&;8}N½X@{-d³’\~ÛvH$Ú}G:`I "‰IrùÇBö'ýl}E…Ë–qã ¯4Bßñc䊺q¬Ú•~ß%„åù4N±½a}¶ß%·YƒÛ8ŽCË+¥ ©ÛjÛï2ÎÂDÑ€D£‹$“yÚÛó\¿¹ƒmÛ³8ÎgÏæ8´O“¿í­¡·A¸Ø ×·-šæÜu×]ŒñØcñú׿žW¾ò•‘³AJI___þò—yÓ›ÞÄC=ÄŸÿùŸ¾ÈÜ_ýÕ_±sçN|ðAŽ=Ê™3g8xðàœQôãã㌌Œ°nÝ:žþyžzê)þíßþ5kÖðÐCEàt:æË_þ2©TŠßýÝßeïÞ½ÝÏ×¾ö5Μ9Ã{ßû^ÀågºN[[ßüæ7à½ï}/¯{Ýëøæ7¿ Àää$ŸùÌgçþèxê©§xâ‰'xðÁy衇øë¿þëè}?ýéOsë­·ò¶·½§žz €––>÷¹Ï‘J¥xßûÞG__}}}|ç;ßáܹsÜsÏ=¼ímo«q6 Ï»}vîÜI¡PàÔ©SÓ¾³,_¸lÆ ¬^½šŸþô§Ñw×]w]Mf׿üåè™ë˦M›"N¾x9tè·ß~»)¤·Ýv‡âé§Ÿæ ox7ÝtS䈘­›Î†+i,ÅAËúÅ1p8h¨j5˜ª°lx¦ÐÑDï8)´’(í/¢–å€VH)0RͦÑé ÆØÔ’ãEªwdäÄ(’)O‘¶ñ 6M”Qoôš†» ùÌÓ0èi‹_]=‰Úï)R‰Nu9r(ÇÁý&ÆV"L7‚n„å ¥@Za)ßà02ŠøhFyÎ Ïa, ™©¼DêdŽsE#@²Qm\bA_AÀq)º/g ô¥¢ÙðÒYÐgn¨m“¿v¥Rahhˆ‘áa”Òlß¾‰oØÎ–M›é]ÙC¾XˆÄC»RÖHw.|Ùḧ9hÉ–º6.LXȹ³=›¨Ÿ[ã?E5b°¹þ_à/ö{œ';ûo"‘ ­5*øG.A®=•¶eIZ2ŽÍ¦M›Pž"—ËcÛ6¥r ËHKD:e£ÿ.¥>jæèzúÁÚ4®j!j6 b†±Pc/‚ñWÓºŸs‰n¥B.—‹ÀmaXð3×k¸žWÍbÑ&à[÷÷83Ñ'UûÚå¦F­ï"ýÍôï£Í¡˜ã: ëã!MY=dÛ¶Z/hNœ‰(Iª 3çDˆYr&ªUÕŒÑ~ Ø´¾ã¿›‰ˆÜ SãlT·Äh1¾³JkÏ æ.­ü‡œ qÀ×híæásÚ—JÏrÁÈŒ mSÍ>q+ÊõEçC]sZ¥£sÜŠ[]»è¡££«ˆÀ,~ø·mûðêäÄ…BæÁëì… ã8N4¯Ç¥aD¥R‰úWÃyk ΆøšÐÈÙPÿ¼áñ¶mãV‚(}ãk[£±,A¥¢8zd˜•¿ÈÒÞµ†e«{Ñz U)S*f9{Êpx_ŽÃû]ŽöЪ•d2E*IJRxJ€±P:¤„“$ÚX ô—ÐOÓҙᆛ—±i‹…1ùü(cbL eJgÂ!á8`<Ïõõ‚Î`ÙõÚ³ê –®-Î1’ÉBJÜäJYLQ† ÆŸeŒB3I"9ÉÎ]«¸~«ÄÈ)ò…4O>u†çžO3x¾•lKÉl'÷%·à‡¦ù»wïæèÑ£d³YŽ?ÎÍ7ße>|˜ááa{ì1>øÁÒÞÞÀ™3g¸pá?úÑxÃÞÀ 7ÜÀOúS><ï{—J%<ÏC)ÅoüÆoÐÙÙ øÙà+»>NÅ-“ËMaÛ'aa…‘ÚÄ4ÌÕW_3—ZŒ÷‡ÑÑQR‰DÍ´)Z¤FóVm]Å\·B`xZEÀÂò©`ë2K®[?ê´ êþ6!URý|(jW͵ýªaËår Þ0—P›bæ\§Sß3gÇÖ¶Õ‚Ó‚™(< J™HzBÁ¡³Áìw}±dŒDkp]åožö•&Œb«! öu u »â;T´RxÁDê&Š˜x9øŽUuCL'1&ô{£"Á舌€ª-`kÀElÆ`år™b±Bà™u ÇžeYxžÑ1Uçu+Ê^ û—OÓfœèYç¬Å;dMÖ*Êh‹ëþض…mûÎåy Á ÑÆ`9›$c#e^Ø;ȪuídZ»ii¿á ƒœ8œç…gÆ9|@15ÞA1׉‘‚\¹Îîv,2XBàØÑ{k£|Æ ×¦¿_pè€ÆÉÖ]ŸaË«©¸)Žì/pêhU*`9Ë1&‰6E´Ò#£~l„ „›ã´ÏU“…0}ôëYF熫ÁÇHŒŠ[Âò}m—lÿ0uš‰4fÂŒE)4‰„!Ój³qk7ÞÜIÏš}§G8v,Ës{Û)± §}5"›ÍPž”à8@ÓÙÀ¦M›X±b+V¬àŽ;îˆ>ß¼y3ÇŽ«96L=u]w mŒ™öùl¥½½®®.^|ñE¶oßÎÛÞö6~øaNŸ>ÍßüÍß4<'4BNÍú²ÐëÔ—0Âq”RT*•†éRõ)¸õ×v]—7¾ñìØ±ƒüǤ··—w¿ûÝ n›l6Ëûßÿ~Ž?Î~ðƒ†Çü×ý>ú(ôGIJe˦=ç|i”Nœ8A6›eýúõôõõÕôƒþþ~Œ1Üu×]H)yûÛßÎÛßþöègºf¼›åjÙuér91P,*ŒAÀÓ,T@sdêR‰Àñ)-#ϳ??[98Æÿ÷'žfj"§+t/ïÆs}±¨Šç‹šoHYh¤,±u»ÃÿõÐt¯°°I*p(KfÕl˜ÇÆNÌçó¸@™©šnJƒçfœ†bÎ0>\áÀóã<ÿL™± ‚å]˜(f2…´A #"}CÅh±`*—Ëœ0x5ìŒfiЗ9X¹„ð±ÀþöR…·Ä’r®õ‘õò?â ×À’î.Ð#aØZçæÔÔÊUôôô°gÏ­ìÚµ‹L&C±X¬±ßdlchLì©o{DËdj½ÿ2²k˜–D PÁß3 ø¬ê#×g—ê[HfC½@ñŒ[Ö†ÔQ†ªßgqNç¦Ó¡¶ê õõ#¥Ä±m´Öd[Z(—Ê>¬¦Áôö|KÊš +_LY±|ùròù<ƒƒƒ”Ë%Ǧ3ÙQ÷l"°!ÍEqÒÎÕogÓBªïgñc/Õ³]]&“arr’ô²åHËòY]Tu_#âôŒ±z©·Ò£L|ºç‹mׂ½4ˆ°Ÿ/èv©*¢ÞÑ >S½“Á˜XšK(dŽvÜ”òð<—J¥Œ”e4BZ¾nŸh›`æÎ«43Ôk=u©hø¸U >ÕgÈå3ŒÅ)ÅbvzœòÅבS!d ¨ÚÛþ~¸~]˜ªíœj´ž¡Òuu T£çDÞP'ÛDãbÆ64µôQó]«ŒVhËú1³w&?ÐOGDüx£ Yë, œ*3][,Ò–ñ6*?j„ ×é !ÈD¸†ÑžÿŒF#sRcºi%Ñ&ÍȈâðÁQ4«×'Ù·o’}Ï\à\Ÿ 7Þ‰-»I&Ûv‰îÞÕØ —ɉQòÅQ,»LHûÍR`´…6’R)Í‘Ã9< (a³e[·ìé P8Äð… ムZ1ªŠ*ú¿iZøL^hõ>:"£ù¤¶ß!ôÌA3“6žÉ Œe^™¸“G²ôì‰Æsr¤;&tð<:;4–ôVŽt¶È†Í)nu/]½‚‘É'N—xòçšÁáå8™u8-«I9Ý ®° ákÕ¼ì wÞy'5’‚O|âÜ~û푳áÖ[oepp;3“'OR(øi![·n¥··—M›6aŒáàÁƒlÙ²…]»vñµ¯}mÚ½Òé4ôööòk¿ökìß¿Ÿ£Grçw"„ P(°eË–9ñýû÷s×]wqóÍ7sþüy:;;¢££cAש/GŽ¡R©ðº×½Ž_üâÜ}÷Ý9rdVç@oo/Û¶m£\.³nÝ:~øÃ²k×.TÀS¸aÆiçØ¶ã8·d2™$•JñÆ7¾‘o~󛸮ˇ>ô!r¹<òÙl×uk¢âå‘GáÃþ0»víâÙgŸ|ÇB6›Ž …šÀ§~êèð e×u9uêÏ?ÿ<ïz×»xôÑGdçÎÜqÇ<üðÀŸóÓŸþ”ù—`ÕªUüéŸþ)»wﮡ½jÔÆÍrE–È®‘áIl½Ä ”¢‡†¥¿QÒ˜@ÈÁ7QìØÄ/AØA„Ähé/¬Â?¾% \¬ +ËÉ$Ö€,RÉ 06Ž‘Ñ£±$H\¤!aYtw­ÂN\k M)Xw¤á5¶Q¨½[ïÇŽégFßÉíjhfX68t0^H³ï¹Qö=]¦RX‰-Z)äÓd²í>m”ôSVq@Ù tÄ%i JCÛ/н¨åɼ|.±y¶…Þef1QqQ¸¯ÄûâEt›E¥7ͼõãé‚]3ÖÇ%L•]ªtçtÎÐ+ÑþK\Œ¹(pûBÇÐÕðþ"F x¥ž $z¸ކÙDIM ðPZ3<<‰'XÖÕÍÖ­[¹ýöW²gÏž ³WP©¸X"àÏ6##Ö†º ½öØ3>ÁBi!A@Å«"Ó~4¢çùÜÑñÌ˲bAC¢FÓ©ž+¹>@h¦€¡Fct&Ðu¡}·ªc5ó2Öx†IDy±DqùË™at5Ñs9¶‰k6c|‡ƒRt¶wP©¸”J%r¹\dSáÓ ™º6£UCaéD"ÁêÕ«I¥RtvvröìY†††)‹ôöö€¶´£±òŠO¯ïùÛ€óÕH©uëƒxµ¿_ʲxpýœ{±×Ïúù"¾W/ twwûm(\$«F7Οu´Ö‘¡:— m+ÒlÐÁ¢_ª8/¤%O· cÖÄëZ,¸–ê˜45ÔY~°XýšRëdÓþ¾E ¬2 W¹˜²¡ì–±ÇI`; ,K"EL †ñ 1s?³¸!BÃR"íþ³ìÍ {šjõë:'BýâWïÌ01gFܸQÿ¨žçg0mŸ¬52ö¦*H#j3TLì½}€^ƒÓ꟮qß4ÕĘEÎÙ®ëF¿sõýªS^Ì@ÅXãq[t¦ËNßS.$‹+þ.2&|¿v¨ƒÎí*X{BÚ-ß"¥AH1ÒNc'5ùBž#GG›,‘ÿï1Ξ¹ÀÔ˜-–cÛÝ@ #<„]¦âN‘n•d;ʾÁsÁt€@KÌh!m­c#y˜$™n¥½Í¢£»ÄÎÝ«H:6÷Ž3xz•B;Rd±¬VJ_ûc⌔ ŒíS6îѸ®3… 1 ó‰"LI3=Ü­Jý%°bNÓé&²™c÷Óa’@Ïgƒ‡”K „)5¶S¢cY‘ë¶yÅí-¬\—cªäñôÞaž}¦ÈÄT/ʬ@˜6l«ÛjÇÕ´H‚•h:,Ëâæ›oæûßÿ~Íà|öÙgÙ³gO4@·mÛÆîÝ»9sæ _üâ£c;;;ùÈG>ÂÄÄ_øÂÈårlذ;vH$¦Ñþ¼ë]ïB)ÅÈÈÏ<ó ßúÖ·xꩧؽ{7þð‡crrrÖçÞ·oßùÎwxÇ;Þ t‰RjÁש/¹\Ž/}éK¼ùÍoæ—~é—8~ü8ÿüÏÿ<çyRJÞóž÷àyßÿþ÷Ù·oCCC¼ç=ïáãÿ8gÏž6i>ðÀÜwß}üöoÿ6wß}7>ú(;vìàÉ'Ÿd÷îݬ^½€¿üË¿|º§/}éK Ÿ¡¯¯'Ÿ|’7¿ùÍìÛ·€uëÖñÉO~2:æ¹çžãŸþéŸxç;ß}~àÀ>ó™ÏðùÏž7¿ùÍüÖoý™L†þþ~~øaŽ=ÊÆY¹r%Ÿÿüç£óúûû9uêT³a¦6n–+SâmhT éÌ:XP yPÁBcÀx1ãNRïiÆX£Êz#:X|­J¥¡Jƒ1 ÀF cd„NQÁ˜¤oô Rc„[µËTpÏY¼ ó…¡Å,Ã5¬ƒ"ˆýA¦·˜æô©§Ž•9u\36ÜJKj-™v¤LG"rF€A€ƒï¹ý÷‹‡®ÕÙ3PóÝœ,†—Z̹Ïo4ßãÌ÷Y*WÖâ²1_:€bÎVœÉp3—ý©®Îë_‹t@¦©´À•ÍNY¤£´AP©©›û…©í“!=‘çyäó&ÆuPÆâ IDAT'HØ V¬XÉ®Wìb×+^ÁÊ+¢µÚ ýà‚ÑfÀ/F̺1€VÆx¤ X,úέ°m{NáÁzGCü³F¢Àó@ëÁÐùŽízñÝ™ºRÜÉàsyëhü ñR[K®N§Cü÷0^kWñÐJù”$uCLj5<Ü€ÚhR‰$]]mè@kC.—'—Ëã8--N"r6D¼Þ1Ðé’Ï438.ÏJ{¹ï3}Έÿ=55…çy$l§zL熙_³R¬Ä€Å0 §Qªf°ˆªrhLL·¶Î¯†,3¯v©óKÉu­¾³‰—µÖxžësÙ I"È€“ÆÂ ê*~~£ˆçÆû·3rˆ7õB=9I¢D|LM¯6afÞkâÜjÕ–ˆ;9DÝ÷õï(j¶~3íeê32Ì‚Z6;izv€YD\ÈyuÙBbzÀÙü†T}h†¹(#)ü½qTŒBH¤4`\@TD6B:(`hÈedtœRÙÅu»qd–lÁh‰§§²BºÍ¥k…aó¶.GŽä87F)¯Ð*&‰ ¥ ®Ê8 G”hk-°y»Í† =Üv{'­-'8Ü~ž‘ÁçÏ^ 7ÙŠ“Xã?—c”D‰Àá ‡K]¡kN«9‹ ,ªÇˆú>ŽÝFsÓB0Šìºv%е÷!¸´u@[g‘­7µpã+ÚéXC#üx¢ÌsÏU8?°ôjl§¥ZqD žk!HbÛ ן͛7›b±X~µ•C‡ñ¾÷½ïŠÜû³Ÿý,ÿ÷é&„å#ùGåë_ÿúy®-[¶022B{{;¿ÿû¿Ï¿üË¿Dý—³¼õ­oeݺu|êSŸjî®Pÿ¼á†®êgTJqûŽcü?ý"õC´u.š£ì pBšé˜º‰ƒ °ãE,B?{Ôá¤O4™ƒgž‚Ûaèüj*n;Ú¤#´] ÆFã‹zeÛsܼÛåŽWI6oĶN … Æáù}.ÿûƒ¥—¡Üµã‘“ñù ÑK„p±ìa¶Þïyÿˆäs»ÏOã„öÅÞ,ŠÎ³.cQ}Ö×kÜ~52f8 Z@Ùƒ‰q˜]Æã?æÄ1ȧÁ]MÂ^I2•EZNÚés êÞ2ج 2HÏ[Lfƒï¬ÕèÒ‹´](˜Ú(êe®§™9Òîâ>÷|Î_ìý/yTÿegrÿ† ÚK¡+™Ï÷¦©hr)?Pð⌿k)³!Ü<ùŽâÚªÿíNÑÕoŸCz8ŽC¹\&—Ë3<<ÌÔÄíííüÒk^ÞÝ{X»fM”Màâ¡!b¢õÊŽymŒ¯»dKÔ·mIiƒQ ­jŧòSxž RÐÙÙ >†aæD˜ÙÐè_½E\ ±¾ŸÆ?¯wVÌÔ'g£uªÉ¬ˆx«Í4 Ûó¼X½êi€ÖÕ0–:Þ¯gI¼?„Îx›‡õ/„ð3‹eJ¥2år™©©)\×­É„ æxÿŠÚQŠ€‚Éà8…b‘_|‘.\¸@6›¥µ­•–– +V¬Àu]‰D@ä0F£ÑÚÅÍl˜ëø8ïþÅ^açÎl˜î]ŠÌ†ø¿ç=“ÉðÂóÏSÌåI%’8¶ƒÐc)6~ãí>›eYAÆ‹ic¤DZùR‰¡áQ<­‘Æ¡Ÿ½e‘àÚ9ùRÙ‘‹i#=¯g3Ô-ˆÙúì{ct•¹)ðî…ugÛ6©TËv°m'ˆ2®>g*•Bk…e"Å3¼G=eR•¾Èï÷RÌ"N,Ì¢çÃ90újo˜Ï¼/æ ñ3 µ°MÍÞGÈÅ9½BÝŠÅ8ÍBÁlto³Í!kï8_Í¥™ÎõLv¾ßïÒ·³ŒÆh¥Êãúbá¦djØXV!l´ª`LD²Hg·bÝõÛv:lÜÜŠŠý/œæ™§*œ?nþ:Œ·#H+…Jy(Ê“ö'Y³.ÍŽ›–sÃY6^¯ðT?gϽȩ““Ú §O€vo@«n¤-ƒñ¬0ÚÝá‹[‹<ŸJ©Zº/_›²äÿlX!†$g™ãQ—‰š>´¸R ú¬¹HŸÞ 1%”ò°¬Z{ØŽ!•rI%&Y{`ëM‚wvÓÒ ýì}~‚ƒà|ÿ**• hÓƒ˨˜’©n´ë†GqâÄ~6wmÒ(]«å5¯y ›7oÆó<~ðƒ\GC³4˵SÂFD.ÿ´Ï›`ŒVqïÿLQ~þ‚¡T*QŒðÀaƒc#½±X4xTN©M@£¤‘Øiö BC,£(¡– öÄÀDäµ1µâÛQ–«D$$))˜5ì¶Äéã’©Ñ4Ig-–\¤+LÇõ#9EÖø‘žUÁ¬%ƒ âêc¿–"5/Ƴ.ö›_üRƒ£ûzb>ã³9I7Ë ýþ¢ŒÝ+þ w6Ô ÓpÜ„h¥£Œ†áá¦&¦X¾|9w¼ò•¼"Èh°, Ëfðµ“Fèjìaá c÷÷#{ã‘ú¢at¹¡ªõ0>>N¾P`dt˜®î.ZZ³}¨žæ´˜ÙÙ°”~PTÌ”UQL=Ò\×;9âΆ8­OS$ýòÍ !@f7([á8~»Ø¶=M_0£Âs#UHߦSžR`Y6mmí\ý&ŠÅýýäó'AÂI25™'‘Hñ‘™°o]ûJÛM—úÞóÑ>¹÷Œ_»\.ûtÏÆøš4aXƒgkDÅ­5X>{‚2º¦§½W8yŠ+g¿Í°”p%º\m÷vRȺ«r¹ŒôRºHa¾ƒ0™L’ÉdPÚŶìj& &¶~ˆæu1«(úôÚ™ë=vüâú¾Xâù¯W;6ÄÇ–Xâ\ ñü,ÑÙÀß¿»À¼Nô…Õ¥ð ZŒH™@‰ 0iÿsmûãøX‰2Ù6—Þ5ë®K³ù†$ë6)ìÔ‰„`wºÌO{ÎŒášЊm§–Á¡ìBP*–9y|¡”r*yØp½Ã† +q’Z°pâèi„çH"E ÏsüŒ|%!¬@4:ÌêŠ1^ˆ8=Ø v·Yx‰Öã%Ì¡‘•yB-ß–ap]tÇqðLÇ)ÓÞéÒ³ªÌ/½n­Ý$3.#£†£G<ž}Ê0<Ô‹Ö[Ðf5F´aD R&Q®åáUrh¯^hj6ÌYfʨø«¿ú«+ú\ŸûÜ箊úyä‘Gš¤Y^ Û7꣟´ãF(·/ W]NL±rÃŽ,ñ—IŒöé…*ˆHQ4Û²Hˉ6b–È`ñÙÆK•)®‹ås©úÂD"ËŽkZ(€$®›exÐâÀ³£<û³2•â*,Õe/DÚ6à‚ÚADN ªEÖ!¯š^Ê&óåNÿ°'Õ~'.gÛkcæåp¸ZëñÚï¿/ãwöCW2uæRÕ¿ €mǶñ<‰|±Ñ1&Æ'ikm冶³{Ï­ôô¬$‘JNÓRJß!lñ¨µ8ïa¨F‡@Ž1Z’ØJmÛ6 c'lz{{1‚½ùÎ-õ m}Cü¸FŸÏF‘ÔˆŠÉ²¬H ¸žFIQ#ªŠ Ç ñhȪfÓÒ£4¯fáj(aý‡˲H$€=Æ`Û6™LÏó¢l”úõ1µ/,¥DÚZk ù<©TŠõë×S.—yþùçQJÑÞÞî§RR(,K¡Í5èRõ×zAH#§µŽhâ,iùÔ A‰ks„Z!åV8Vu˜1ô¥pŒKiEtpÓ2©šM2m~m4§TiÆ<”Ò(dÕi¿Ëå2«W¯&™JQ‘ùcØŠæfÒ䉶éŘ/gfçÅ:±¢ðK•ŸÍáÕúüK:ß,)}V á„øú—àDàZö@y%ì„K÷Šë79l¾ÁaÍu.½k4™Ö"o„Çšu]¤“½(·ŸŸN3zÁÃë‘2ƒí$AJ„%ñ”¡­­ £mÎLŸpÉ´0:˜dÇžåÜxÃ*6ldíÆòîý§a[]·¡;ƒµ/‡Ï«`Êl_;AyÊg½–bÖöŽ4E,i!õgŒÝ…ƒ/¢YÕ5BTV^WA¢°hep´bYW‚‚w‚;ﺞ·/ÃÉŒàzŠ£Çó¼ðl‰ƒ/Xä&·£ÜH{ÒêÀÓÆH„¶0ÊŶ äŽÎyß&n.ÍÒ,ÍòÒ¶øÀçiŠ?š[òiŽ˜¯åÓóÓ†k#€ü„-­%`,]6ÑÏúõ(äËmø¸iÏ1k…ºbŸ¯n"`4I±äÂy8t ÄñC’Âd§ŸR(;1:D®ù/`L ˆ©CµÂˆž¥nB¦ÕóŒKóźÏ좚Æ\[´cÓt­ƒ1WÜñ1ÇÕÌlh–+Ñ÷®P­Ñ"âÓQX(Ï#_ÈG‘Ö–´¸yç-Üyç«Xµj5‰„S£àƒì²!wù,Q+‚i FT8~ôGkͳÏ=ÇÄÄmmm¬Û°ÇI`0‘¦D(œußb ™ófËxˆG.ÇŸ;µ=ÏÃu]”R~Ä\Ñ?¿éh¸<ï:{¾VO¥jüÍÖqçТ ¡£©««‹ÞÞ^ÆÇÇ`llÌ$ö<Ç©fÈsÉusšÁ µc+‹ÉdjÎú‰;^CgC8—™€NÎx¦J½%D3øa¡v§ JÉdUÍF 8t°yž‹”‚d"A¾Ã±%RVƒ¸ª4zLË‚‹ßw6ê¼El¢¯˜í}¥ÏoÎO‹é1‰Xg0F"Ü!dˆÐZ!…ìQRŽbݺ6vÞ’bÕ†Ë'Hg§Pª€c»(®7L÷òe¼bOgÇ(—rèòR´ ¥Ò!™„”H"¥V­l„Q œ‘82Åøä·VºÙ´}7Þ”$W8Á‰ãE½0ÊÔè8Nâ: ¡R@°°„…hEú7FôÑõhK­ñ½”Þg,;ÓÎ1î®: u3~ÝÛRcÛ­\¤=Ek·KïZ›{¶³yG -ÝE†F]ž}z€S'lú^ì`ll èm± ϤÀ$€DtSAŠ e0ÃFb h:®ŠòÚ×¾–gžy†ÑÑÑfe4K³4Þç׉I-r‰Dñ %0Úò FΉ* i­½ êÏŠž'îÇ«Ré@‡bä'žX“n¦.ÊÚGX¨nE´NC3õ4í!m@+(—lúû öå8°Îõ ²™Nl+ Ḳª"íÓGèÆá³"þà—J[÷èÌF©`¶XókÑp¼’zWÒàŸ‰‹üª›ß˜›j©Y–°M~9{sÄ•íCK­ÿ¹€óèaxt‰ä¦›nfóæÍôööbÛ¶™]Ã$^]üB~òª §h.ªÙ HÄ+øà›¿qó¹Ê=Ïò,JÅ"ÅB‘ÉÉIΜ=GGG+WöÐÕÑåSËÌ]Ðà]ÑÍ6‡5rBÌ>-†?º¾Ä3*• å²Ï½¬”"‘HTy߀mñ‘¡M0h!%t(¥"pØu]t±cÛ6Édrš6Ã\m¦@älH$¬Zµ Ï󘜜d||ÏóX¹r%Æ Ë’WE»¾Ü‚BJ¥RÔÞÑx5¾ö@}ýÔdjNÂhþ0Õ96ÔƒˆÏOMÁ÷ùµ‰ˆí%¾Ø¶¯}P³˜ÄDG»Ž-I86é®.ŒVªš'¦Ó÷â9fž¯T†sÓÙp-‚6UjH#³ÖþZø‰¾®£©Jº»lºº vrcrH¤I*xÖ0½kÒÜþjp]<5[îDv N2éGÚ áS‘¦œw1nšþ³çm*n­VÐÚUáækYÙsžîîQNÑœ;ñ"–£Ýå [Ñ:IŒ‰e(_GRXþ;øuM-…Y ~9ÎhîþZ'Åè–ÍŽ,Tj“Ò Už‹P¡%¤0híb·X8 …eUXµÜbõ¦<«¯Ó캫‹©Üç[8r(Í3O¶Ó¶Ã6r….’éU ÓËCÊ ¦èrPDXS(w˜Lj˜„Sà,ç•MgÃå(kÖ¬áOþäO~÷w÷wÜwß}ŒQ©TxÓ›ÞÄ׿þuòù<{öìáío;úЇæuŸ?þã?æèÑ£<úè£üæoþ&÷Üsàsòío›çŸ~Ök$“I~ý×íÛ·ÓÞÞÎÄÄßûÞ÷8uêò'ÂÇ>ö1FFFرcï{ßûxÿûßeY¼õ­oå–[n!“É022ÂþçòÌ3ÏD×þ_ÿë‘ÍfùÃ?üÚôÝ;vðæ7¿™ŽŽ<È¿øÅˆStÅŠ<øàƒ¬_¿×uùïÿþoÚÚÚ¢w Ëää$ŸøÄ'xË[ÞÂÖ­[±m›§Ÿ~š¯~õ«,[¶Œw¾ó¬Y³†þþ~¾øÅ/ráÂ…fç|9-¦*>m‚¿Ãì7£Bm a¬@4GÆÝþo2TŽô#µjÄ%À„¡Ÿ@šZAüQcŒTQÓ(a‰¶Š©|ªÞˆA{\J‡Á~Í}9žyªÂÄP¶µ’rY’îhAÊ4®+‚¨9…‰¸ ÃzØti/(Ô×ÛÜ´ðˆÊPÔ«ñó‡àI³4ËEµÍçÆ‹›e)õ*ÌEj\碚%o®`ªÒù™Å_!œshT*eòù¹\Žl6ËêUkøå_þe¶lÚBWWÙl–b±ÚÔ.«"¤úZCáÜ®ŒFhû® ¾É JÕˆp¸å ¥b‰S§Nqªï4-Ù,ë×oàº×ûQàÜ#\çZ?e,ÌZÌþÍ”µ0SDì\MÜÙàº.Åb¥TÑÞpóÜ\3/ °ÏnðúúúøÚ×¾Æë_ÿz~ï÷~¿ø‹¿hvΗâX:˜Š‡ƒ1 5£H8ItE#I LÈ)ˆ#ˆpƒ & ´ö‚ÍsÂBÄ3L„ø÷ œÛFÌc‰9 ­™T2Zñl^p¹²‚²gqþB†ýûJÙ§ÉM´cÔ2,§! J9 -„eVøˆÆšY£A,UÝÙÌ|Ùye+,ÌhspY-ÔáÐL;¿ò›õf¼ŒûÁ’©Üél¸ˆopùϼ¸õ¿ØÅ;<7\'ý¨/Q+•*e&''(•JlÙ²•×ÜûKlÚ´‰®în\Oáº^½×Mä&Ìxˆ¥ÿ9ŽƒR O)DH;F’bÔHC"™b¢4A¥RáØ±c¼xò$+Wô°k×nÚÚÚ|J™„íoBEmöA£9)þ]Ï5wÕw<„‘Êq0²Fк.:¶þóšï!¢*‹¤ÓiŒ1är9H§Ó,[¶,âs€ĬW˜{MÛºuÑì‘­&âÚÏd2¸®K>Ÿ÷Å£9tRÔ˜–”xJ5tJLNNbYÛ¶m£T*qöìY”RAÿHÍØ·/wû½”Ú¹‘0}<ÁÃØØXUFùÔH"ÈH–A”l}{׃¢QVRÐâýDEý¡iS͹òì»LÓØßWŠÀ™eÇ… Ø¿?'OžäWõWY¾|9Û¶mcÅŠ|ò“Ÿ¤T*ñÈ#ð‰O|‚M›6qüøñf})®s¢áÚyÛ£”g(5ž ÂXTs#MÇM-AQ©¸„Iãgе!…B›ŠO/„à ¤ö}ÐÖô5¦!%Òl!¨ Äø‚ÐÁBïi(”ÎÛì!ÇÁ}Š‘,¸+I$z0*e,Ð>€¡ß“/™Ý"¸”±µW*j²­ymnÒ—ÒÞÍr-oû/ιæ{ökÚv6µŽ†zÀrbb‚áá!ÊÅ2===ìܹ“-[·H$ÐFc ×SUM…ºuÉóǵ¬‹ 7±q_Ci¤¿Á „p'ÆÇ¼p¾¾>ÚÛÛÙqÓMtu/ À>EtÇ7¡sÍGõÚ ¢XëÏ‹3Ç#Ðç;oÍ:?üà!èè8¾ÀãÔÔض]£ÕÖãB…°¯¥õàê´{ýv¡P°Wñ°,¿Âl‡8ÕU£Lšz³¾¶\×îÕÑÑÁêÕ«ÉårxžÑ8¥RIßÞ¼3ØËÁöZèØ õ8Bj7¥K×jÚ6rVÔö£F}£YæÑ>ÚÔd%ÔÖ7¥’ÿ½&™HN¥0Ƨž©jÕ¶ÑìTÕ=וn¯—sfÃËÝâ€eIŸE"Ê&•nN´ÐH ¤å e¥*œ;=ÉÑC–¯\ƲUkPºxضíë!ÑÊ ¤Kgg‚›-„hAÈ1N 8UÆ‘«‘Éå 3Ëò… £#gÉåŠKel˦5½–óg5ííiº:ÚénÍb:ò¬êmeùŠËVdØ´uŒÓ'мð\JdX–éò5l*6•ŠÀ˜Ä`G¾®9…±ª™ ÓpEHk=½ø–ÐíÎ%ÃQ€FEv¦_%®«0º ”qM:ãÑÖ«×&Ù~Ó2º–WXµ6‰å@ÉÕÝ7JŸÃçÚ8׎A®Ä¶³ 2¨@Ú'ø0XØé¡TÛAp‚ÞÞ·Þ–dÛ †¾¾ œ v·él¸ŠÊÃ?ÌÇ?þq>þñ3<<Ì®]»¢ïvíÚŽ÷ÞË?üÃ?`Û6øÀxñÅ#p}>åøñãÜvÛm!8zôè´ |ãÆôõõEFÅBÊüczè!þøÿ˜gŸ}–Ç{,Êΰm››nº‰ÿøÿÀqxàR©¥R‰•+WÖhUô÷÷“J¥èèè`Íš5(¥øÈG>BOO}}}|á _¨qÔÜÿý:th%ÒÊ•+éììäðáìY³†\.9(ÆÇÇ)•Jôöö6 ׌Ñáó4¾«)À¡÷\2‰$‰[¨ M ÚÕä§òíD¼x¾˜Žl¸p£Ñ r“ùI‹üD†L¦™ðNa[¡#4^ðÌzžÏ2MˆZ=ê…¼úœõÒU‹ÀÑP®¤ì—<ÿlžýÏÁ䈅P+°Är¤hÃJ:Yñ© "àG`Œ ¢NÍ<à0q‰û‡¸Bý²i7ë©Yš¥Y.G mSÏó¨T*ŒŽŽ2<<ÌÊå+¹ýöÛyå+_IOOý&%–´"Çœ¶‰Á³0¢;òÊ}ß IDATpGi÷J©ÌäÄ'Nœ`dd„ŽŽ®Ûx=-Ù,BH¤´21<9°‘öB˜¡ÿ>ŒXÁå°n …©TjšPóL”)îßès£«@Y˜½0>>N>Ÿ§­­t:EÕÇß!4 ®&pøjªëŸo¾ëgØ„8Žƒëº”J¥@W#GKKKäˆ5¶úz©Ÿëûgxd2Ɇ ¨T*œ9s†B¡@:"“IûQÝ—A$úe ç5pB†Ž;¤4 7B¦ñµ’R.XƒÔ6TÒärI§½#ÅN»–Îh h…1, ¶¥Ñ¦‚6.ímlÛžAÈ2ÊËqêØ(Å©2ù©¥R†©‚"WpQX$’iÖô¬aUOÖö²º·Ä$Ù¤a°¯Âèà8î±ã¬¹ÞbýÆNº{ʬߒ£m% Ÿ/0pºÀp¿¤RÌ E]Ë®ct²Œm§A¦q•ðÅÞM@«¤ÁÒiÊó1jýTЦâ |Ö¯½B#…Áˆ`mÖŽO™d¬@“Bb„ÆI*^™0@ÖÏd“$ím- eí†V­ô¬öX½¶HÏÚ!:WdŸ,qöl’Ã*ì}Æ0:ØŽ*lÆu—cYìT c$‰Æ§gDk„qAäb'qš•+yÅ®$Ûn¨°bE‘3}ã‘“¡él¸ 7R¾ølmÇÛ¾};™L†~ðƒ€ŸæÝÓÓ³ gquþèG?šö]hx.¦8p€~ô£ÜqÇÜzë­üʯü >ú(?þ8·Ýv‰D‚#GŽà8¶msûí·ó“ŸüĒ޽k¼’É$Ùl–¯ýë”J%|ðAÞò–·ðùÏ€®®.vìØÁÃ?\ó,–eñŽw¼ƒpôèQÖ¯_ß°®£ãfyÉšy>í‘@ÒåRŠr!M1×N>ŸàÜù úAéLD´!"ê†F›qÖ’‰1ÍÄH’‰¡•L ;%HdKØ- œ"BN‚ „¨™Î`iš¸¹zQmß`ŒYT*,]]]tuuETJù|Ë’´w´5ò2ØVa›‡c4l¥ý /f‡ž+Ã*ÌT1 ‚°šÎ‡ÅnÂfÖµBÐÙÙI>ïënH:”_ÇÓö^Œ³a±Ï°Ôó¯Õyü%4;ÍÐ~~FLÝ£ñçe,,»!^Ø;Jk{†u›:Èv@Â)£õH!½ ºÞEXSˆŒËuh ¡û÷æy¥Ú±œå\¿ñz®Û|ËV®â•¯¼ÛhU¨'^<̱ã}œ8ö"c“}d»ÆØ±«…·µÐÒ&É´f¸ë5×SÌ%¸pÎã§?9ÁÈPåUÐú<Ë3iJeM©TBkǧ“Ö ‰@ÊÒEkƒ§|aiË’±zñ©êj#KÑx¡|êH Œ`Ð!%BxX(¤v}ç‹vñL…„鄦¥5É+Ö$¹e×2Ö^ÝË Ò*àjãG‡oeïÓeNH32¼ãmDp–Ó¶}$LéWZƒÖ.Ú« DÇ)#­4}¬ßX`Ç pÓÍ.+–’LX]B¯Õt6\#¥P(0>>ÎÇ>ö±E_cãÆœ={vÆïOŸ>Í«^õª(ë ^&&&hmm¢»»»k´%”R<þøã<þøãüÎïüwß}wäl°,‹?û³?‹ŽÝµk?ùÉObëÖ­Ñç+W®¤P(055E‹=÷Üsìß¿¿æØû￟ÁÁA8®Â…!¸0Ô‚[ÉúÞcâ)j3`l¸Ì÷¾u€COÃÍ;WÒÕÓβµ´÷”±2C¤ÛÊ*HR „gâJ¥3.Ès}¼d“>| -)RôØx¾Ä¡½0:ÔAJ´"­v0Ili‘Hú|½žRæ…YTæS³4K³,}³r5l6›¥Y.wÑÚO3WZS,#~øl6˶mÛ¸õÖ[Y¿~}5j QCf74¢S ž¸èq£ÈßzFJI*™äTÿ)<Èðð07ï¼…žž^‰$Ò²Q¼/vÌÖƒÁ!®Á¡C¤T*qá„´··ã8Î’3jÀÈšhgÍää$‡¦X,ÒÑÑA6›­¡æ±,«æZñº½–çÑËñ|ñ¾WßçªÃúãâ™®ëräÈÖ¯_O6›¥µµ5ŠZ¯T*Óú\È9­•F_î>s±X¤­­ 6pòäIFFFRÐÚ–EZÍ9ìR”xfS86C¦€8šRÊ×jˆÑÃÅu:ÂŒ¤Z=†é:0á|Q45ËEmKÏóR’N§I¥Ò”JÅ™Åþ®94>W,fî]êùWSÛ^ ëÏEî)‘æe÷´Jè ÓGiPF`ŒÀ¶%N2…§ZÀ«pæt‘gŸf| 6mkaeoi—QzÛVØ6þÚb*Øv…ö››,„Q8œ<¶ì »ûF6l¼“[vßtZ(–¦È&9zô0#£ƒüÏc?¶\8?…°RTÎ Köô¬n㵯_K÷rtÚб|˜7=x+çú/p¾‚ ƒœ=™§âJðR$é ‘hè\·­%Ø<¥1$0Ø Uà(¼€ˆÚŸ§u4× ¤ðEãÑþOí‚Q>½·1(ÏEò¤BSÀ0§‡YÞã°l¹Åwnaõê$–3J¶}ˆ–¬ƒ”-Œ ¦9qÜåÀAÁà… gÏZhzðLÂîFˆ$RÈ@" 7àU\´*#( 垤»s’o’ìzE+[®Ó¬\>Lᕾ£4ˆén:®¢R,p/—ËÑÂã8Ï<ó ÷Ýw¯~õ«yöÙg¹å–[øÙÏ~6+ðgYVdTÞrË-ìÙ³‡¿ýÛ¿àÞ{ïEi%|ï{ßã¶Ûnãƒü ßþö·fíÚµ qòäIN:Å<À׿þu:::xõ«_Í /¼ÀÝwßM¥R‰xk׬YÃéÓ§éèè`óæÍ|á _àç?ÿ9÷ÝwozÓ›hmmåþç¸çž{¸ï¾û8rä÷ÝwO=õ=öwÝu÷Þ{/}}}lÚ´‰“'OH$¸í¶ÛøÖ·¾UóÎïz׻ظq#?ü0–e‘Éd8pࣣ£¼ímoã{ßû¯}ík9}ú4§Njvºkoý ÒHë’ê?müÈOcKRšJ/¤9vx‚“ÇrL KƳŒ¦(•2T< Æ #j£NbºŽÕ›cƒÊâi›‘ ~þÄ8+Ödè8mXu½Åòu¬Xmã$ *8Áb"à Fתû)¦3ƒÏÇΜ3iÂDK? ¥”—dxö?—gßs&F–ã–:H§Ú°­4ZÛ ! B›èb1FÓbˆf_n°µ±5¿zlÖS³4K³\ª¢µöíaKR©TÈçó(¥È¶dÙuË.ºººÁ€-m$²F9mMí6Økã4FásŒóÄO066Æ7ÞȆ X·~=JiSYGY"¢´ÅêBX–Ãg›9Ë¡>#!|.¥Bòù<¥R‰l6ëë'ض_³8f›»gú,|ÿ‘‘¦¦¦°,‹îîn‰DTGRÊ蕌1ˆæÚ°àzŸ¯ÎE£ãêîâV*xžGBÚu§¨¢g?¼œì Ѩ]ë2³lÛcð\—B>%e¤A3“³5®ñÒp¬ÇúPHÿáÓÃɆsåËÚ.® ÙŸ…X Íá!še"´&–ú>ï¾ù²šöÿ¥Ý‡^ª5gþí:Wfº˜qmÒøÙ9&+‘‹ó‰ÖD¥ÆrRغ•RQsêd‘BI!dÉd ÙŽ ÉtÃx °¬CÇ£«Ë¢õ–º»áô–…\' ;ƒa‚ÿyì;¤Ò½¼°ïSSœ=7ÀèÄ© -EÙk•`|ÒàÑŽòº™œ,Sö&é^žcíÚ,Û¶o$ÕZaÓö®¿A3ra„3/öSš2LjƆ ôŸ`êÿgï]b$ÉÒzÏß9ÇÌüíñ~GfVeV>ê UtÓ}û¢f¦5W@ !±‰‘رd…Ä ,4b  Á±˜™Å€@³¹wºoCQ]]UYYùªÌÊÌxGx„¿ÝÍìœ3‹cænîùΪʬò¯”ææfÇÎùÎÿûþÿCâ™)Tn©rr4Û],~âç¥À¦E´d–•æˆÂ8Ù(£Ás’TÖF R*<”"edéYŸåµs Ó,¯•(–bVVó,/U#k7nîpåãÏiì/°q·Èµëzý9‚Ò ^~–Ðø€ø‡ X,ò‹¿ø‹ÌÏφ!Ÿ|ò ÿ÷Ï~ðZ­ï½÷Þà}~øÃò«¿ú«|ç;ßá_þå_ø›¿ù~í×~_þå_æÃ?äÿñ¸wïû·˯üʯP*•¸råÊàý~á~k-ÿí¿ý·Áqß}÷]¾õ­oððìììðGôGüÅ_ü¿ýÛ¿Íïÿþïs÷î]þò/ÿr2à^¨Yf+ž!dY½i¡!6àùáW0q‰Ï®u¹õi™O?–|~»Cèwóäƒ9bë¡n‘`‘CÇ$ÙÆfôž“ʼ- O§Ý§ÓîpØŒÉݵܺ-yåõNŸÏ³zªÀìL)ëX¡±X„ˆÇÉ3Y_ähú*ìƒ  Î44ƒ¶:Êö ìí>þi“kjÛe|o_•ð½ Jù‰/ƒE›ØÉAI×Ùf“«aŸà<_åøyÒdøQOú›lO6œ“ø&ŒïG•{RÍõI¿î©î¿Ž5qÓïô¨×ŽXœ[ä­×ßâÍ×ßbyi!$žJ@väAQØã÷â~`g– 1.O†!­V‹ËŸ|ÂÁÁKKKœ?žjµŠ’Ò1+’ µ;Vö=‡ºõYY§áæûþ¬‹qiœT´×ëE;;;XkÉç (Ïw~"1ÀÎøEŒw£¯qã2Oã¯OÍg·¶¶8<<äå—_æÔ©Sôz½áu•bPhpŒ†¯téŽrXûH?»ßßô{Ùñšý>Û¹¾´¼L«Õbccƒëׯ³°°Àúú:RJrA@ÅN‹9S(Jó6áî!»Q¶OEär9|ß'ªÕ*ý~v»Mã¨Îìü¬+’ùÙ›¬tÌIãö/Ò\œDf³É%[¼‘BkŽcÂ^ŸÀóQÂÍÖ<å9“âô¹`¬c‹¥ÅÁì¶ÇXãºÁçÝ)”Ó ·æÅ»–y®üzënŽàaÏ·=q_›÷ÖZ …*aǹù>ÙŠˆGü ò‰÷A#Œº‡üÞ=ÄS>÷O{~öŸ×—½{Ouþƒ¬åA³Ô‰GK{(lvÍH˜ Ã> …yŒ‰¢&Z»5ÈÏåñ<^¯ÉíÏŽ0¶N.ïñæÏ,‘› ˆtŒ1M %Ýó¡©²ÁúË%ŠSší=öw5—?ú)ï¿R¯Ïaí~½Ou´òðdŽn't¦ËV!¬ ¾"¤AÊ!båi¼ ¢R (ÒÈúxù:"¨S™…s¯L³¼ºÌÊÚ$æßâüùó6•–y^ãÊ•+üîïþî$[Ä$ÆâÏÿüÏyõÕWŸësÔZóóo\çÿ?þDþ_1jc°6™´©Ïå½ÈñN¶É¤“LÒÆÂ”7M«]ä÷~ÜäÊOŠt› Dqcò˜8@Èa]â,¤I¾“+ôn‘L3C‰4 eÁC#Ñôã.ùr€UšB¥Ë¥·r¼ñv‘—^ÒLÏ´bÏë ‰Ä bÀ$Ÿuè -ÅxbuøCâ>IKZÎÐt :ÊÑmç©øðý#>x¯G»>‡ÕËQEª¹|¥$–¤8"Ò.&Žú(OäÄ?ŠIô“‡©}Ùéê³+6g{{‹•ÕV×Vð|o`,nHÌp +cïÊ>íý´™n—/kü ߯>éÔwlþ±™ýHzT)AÐïõè÷ú\ùä“ÃI"ˆ£(ñlŒ+Tk‰¢È1R¹µ,Ì1¦$Qlh÷úÔ›m4‚ —)óØ̶£{1º‘y&28âÉŸ;ó&õƒBN²ólì¾ÿ¸µŒvˆ>£Ã±Ÿ³/\¸Àêê*-œ§žy˜§.˜<þçÏÌ%_!œ.Ÿà™}9ŸHü²ÏÛÈp´pÿíÓ_§™³ÒbåÓì9m ÐÜïÁ´‚ûy\b-Jú0Ò¨#œÌµPé#l„%ŠXÑw¦É:¤ßíÓjÖi·êXj¼õ³Óüçï¯òÖ;yJÕ`8Dy®à ’y×±†vWrë¶áÆU¸vþýÇ`ôVŸFÊ5Q¿ÈÛ1‡1û{‡5ˆbŽ-Ö*ŒNc¾È ̘ÛÝ&Ê‹‘Ê ”Äó-AÁ²´<û?÷³hÛ£XQ”¦bDnM“(¶Ü½wH¹tŠ£Ô-½¿Ïæ­"º·N«YE‡óó§1¶„–>}Àæ}z:"¶1Ò‚C^J´î‚ ‘ E Ä.åÊkë ÞüYŸ×Þ¶”§îRÚ$§šx|@ vÿ÷_÷ùßþ×6~îü„Ù0‰ILâyGŠFíìÚè¤~÷§ÙâY>üIÄÜeow‘f­¦‚µž{qÒcqw&)³‹c ‚,šIª@c¥ÆXÐHŒ•àé†+ 2y>þ ¤ÛòhíŸæô™˜ ¯·è…—ñ¼:B†H¥)lò®Î hÐØ%Ƙ™ùüöøÇ wƒ ðBѦÀQ]rù£&W?ö¨ï/áËSX]O"¤r ˆÖaR$4Å¡žµê><_l±ÁbŸ®Ð`SFÊãþ_.Hü ¬1ØÌÏÓyó$Ù¹ôÞÆq<¼bFïËCŒãÀ¬O·†Û=Äm™%$Æ$Â2ûCÞÉò(hó(£.S<Æór…<‘ŽJ v=ƒõÇ+ X0O4ï ;ÖS9µ'Ë/ÖÿÅä¯Ïf®OYŠêØég¸‰¡3Z€¹Ž_M³ÉÃŽó°"à ,T°®3ÿÄŸ¸Ü#6ñðYH÷âH7™ï[”R„ÆP(T¨×hµbêõ½nHØ üe¶î¸úQÙéYο:PARü¬!¥Mò-‰ÕBAy ^{£ÂÊjž¥Õ>s‹}®}rÀþ®&C0!6šGÊi|¿ŠE<éc…ÏÃHÐÆ'Ö!|rù9â¸E¿^# {üè¿>ù°A©\bqA°²°²Tba¾ÄT% :cP²Ïò鵃{„˜®¬³»WÃórù<‘‰mkbˆz­°6‡ò+¨œ¡Õib¥Â rø¹ßËãy(¯ˆº¡¥yT¤Ùò8:Ôlmh5rìîXê‡Í£¢v«çr??C,+X‘'V "£A*OZ‚¼EGm4=¤h"e“\pHuªÆârƒ‹—4/)ÖVCr¹–Ò$Ì»ÓÆŠö`èOŠ “˜Ä$^ô.³]È®¤ïÔþ4ŽÙÐëçùøý®].±³±Äþ^@ί"PcyÔЇ Ý„[Nê¢0 û!Mœ,ƒI’o)Æ ¬p](a$èîÇnÁ‹,˜•é>…j…¼ìà)1 B œ1’÷Pâdiqlû™fâ*I ô01O¾j#°ºÀîŽáƒŸðÓ÷ u0z˜<”Ò ‘ÉyI‘xcŒuƒ ûдþ¹ZLÆÿÓæŽ#Èxu=™ì0½§Éø“Ò–B Ê•2~àó3ïü,ÿýG?âó;Ÿ³°´ÈÊÊŠ{6¤„Čݎ°bðÔØ »!SìHÀißóÈOO³º²B†XcévºDQL.ŸÃ$l ÷Ì&çˆt¾i'j†¾È9ÖIüãÇÍZ³ß'y9nsL§!úßl4LkÌq6p´OïÛ¸™û@Ú*9ƃ|!ÉW·­OZð_íÇ Ûlõàb×ÐSÃ’Ëå(‹CFÃ`èØÇBv Söôû¦§ÏŸýŸè4žh.°OÍM‹ñ'uî§ì.+’ œ0¹«‘{›4»KZÝwªø"¶¿ÜŸI÷pfCÆSàÄcùÌèšIó‚H­¡SshƒP’8ŽãˆN§C½ÑÄóÿì.íF(ìu#â.%ªB&Å?‰ëÕ/£TDŒ}¤'ê7Ùßir°ÛAz9>+„LOiæç"Šù]JEM¹¨)›Ì-t˜žŠ¹tvBà15=ç‡1ÝN—V«ÃÑ‘¡Û•hS ~d9Ø7Ö:mn§ˆRóxråU^D KC€±µƒæT7:R‡1},u, ÷Éj,/÷8^pþbµµKË]ŠÅ:J¶ˆÂ)ÀKŠ Ú€5’8VXë$?'ņILb/ØÆ,“Àd’™nâØçp?ǧW:\¿*ˆzKäý—ºÛ\v IDATŸ”gåyDF3Ké¶c…u‹àáI÷ä Åsz§µ£7>»^ ¬¹ðZ•;H| ¤2J=º-yÜäÚJ°¹äÜ:#…$ôCIýÀòÁ‡\ùšMÐQIm=¤ôJ"<í$”2’QüEÙLJýbmþÄð–¾ð`çãlò&1‰I|±Ïá× Ð|ئûËüìig­Öšn·‹Ñ†£Ã#zÝ.o½õo¿ý6‹ ‹H¡Ü>_¦e†1@"Q)’RŒ1Ì}uÇSo)%JJ”¯h6›\½z•«W¯bŒáí·ßfm} /ð!Ö ‘!ÝJæ'bÀˆ´XëŠi÷ù I;°ñ7I粂0 ¹uë;;;ÎP4ðñ|%=„”xBºk’ü!-=œø %x†€YÇøžçÎSJúý>wïÞåêÕO9::âwÞqFÔJÈM d}–È4³|5ýå/Îóx¿çó¤Îü=ËYÏzh¤¹ —ãõ×_§V«qõêUnÞ¼IÇ,,,$,¡; ZdçÝ{&÷>ð¹äêê*qsocƒ^¯O¿’Ë哎mW›“J9ÐéÌÓ§ïˆ~QÍŒ³vêÛ5{O%‘R9¶F½Ž'rè%¾ocÇ5ÖÃÈ{ |W$ÖX¢(FÇÇÙ+ˆãæäÏ“‰ðø}vï}BQAÜçßýž8q­ÈQ.–\<½ÏÖ~%çó×$as>xr¶ýq†áñ‡ÈÉÊ ¤H °öd‰°éÏP´{Èþô©d”2çþx^b©¿‹=†ŸŒÌÖÉæ_ϼy‘qX‰@¡µ¬ õFH;öÃÙ³ëü—ÿò?³¼²ÊÒê2Õ©Œöh5Úìll°qïîíìF×yé\Èëo–˜]\Cú ´9@Û6ž—0*M€1 !Còù.§NW©V§™›Ëqe¹Å«5v·BZÇxH$zp=„òðdà˜|ÖE¬-`m˜ÁØ>6ŠhÇ=:Í›w[()ð½’Ï[¤jñÎÛg }š¸ßÁû!Òƒsç×A‡v«ÎÁNn3¢Z)â©­NŸHWP¹†õº¦vØ¥QïÑl†t:†~(‰µG¿ïÑëzDq€ç•ñsSYDÊÒ±&ÀX+¼¤)&Õј¨çNm„ÑmŒm#¨‘ϲ°Ðbm½ÅÙ³š³/Ö×4•J‹\®´m„ð„@X‹çzYˆ´" Kôº@0)6Lb“x!@žá6L˜øÎ„FÃæËG?iq÷¶O³^FÚOª¤ƒÊ>0…9¾ù~„…|pÜ¡Á]j¨ƒ•Ôj-nÞh±¸4ÇÒr?_A©>ÒÓHB1#‚ÑÙü5{~'(ûd· ®kÂ81¦ÁÎ!¶D»eùàý·®CØ”K+ôÍ<ÄE¤ô\—™2nS:hŽM´ÝN¼x@÷ r<-Úè}'1‰I<Ùó:‰Çc ý^v»ƒ‚ùùyÞxã Ö×Öû@kÔ‰B£×~üO¶/k=\ƒ”îgûû\¿qz£Îé3§YZ^b~aaÆ+)œ,Rfí2ÀI,X„®˜Ÿ SMhñ€ù= Ç:ÆXC£ÕÄXÃÚ©u‚ @yJy‰_ƒH:Õ“¯B º GÊ ˜ey§t˜f½ŒµÔëuvwwi6[”Ëe¦g¦ñ|§)néœ81­N i•Àªø‚×â¯cœ$uR~šõäa# «X#óP¡PàâÅ‹ÄqÌÆÆœ:ujp¬ì8ŒZq<µÃ–%SSST«Uz7o&²_]ŠÅò©3 }æÆÇ$ŸyœõD$ÏšÀyfH)i·ÚòùÁ&àAæè4W‡÷ßI2éŒTÖ‹”w>ûóLfMqŸÂHÖܽR©P.—i4“AþH»uz]%;éuRÊ¡?Jbž-™Ø±S?¥“ŠÃS¶_†à çó°kr|I¤3ņtŽpÅ„T[Mý-¬Å‹ÑnJ™“: ‘Rqpt@·²_;Â|„„‹—.ñ½ÿü=Þ|óMJ¥2¹|£fƒ£z“ Wäó;¼÷oïqõÊOi4îÐnßæôÁQão¾=Ãúé2Õ™<±ÙDè®S0ÒùÔˆk# G¥ZäÕ× ,,LsêT̵O5·®ïq°×#ì51vÁ –‘¢ˆ%9¬ôÖKØ¢ Am‹H Öh !ÖöÀô0„˜¨GØmÓnÖ0FR_?Mmw•^»Îÿùýß4Û-~æÝŸ%ìçAÅ|øáwo la5R–ðƒÚ*¬2†q ¼*Öz„¡&ìƒ1>žWF©~>‡ð<ƒ@Ûcó£°V&³U"û%4’>R7¶‡¢hA¹ùˆó.\,±¼²²Ò¡T< ç¡d‡àƒÕ¬ÅÄNY$ðËtÚ9òìl÷Iˆ “bÃ$&1‰Œ­@‚´Eî݈ùé;ý·QV DBóhWGy”'Hfœ¼>g™Ãc¸¤\!¬‡Šz­ËåšX£øö/̰°P¥ÞC¨kCDb¾dÍãmć社ÓULduœ£Û-²µï¿wÈÇ?b‰~¯ˆET Qžóg°b²|}Á>ñûù0'‰ILâ«{&'ÏßãoˆÇ7½žï³··‡‰ ï¾û.ßþÖ·üœ[ù´Æó¬óBÈè£Ë“ 3÷ƘÄ4q m›€¬¥\W~«ÕâÞÆ=vvv¨T*|ï{ßc~~žv»M±XB*ÄÊ¡÷“یی9£¥«`$\ÆQÐOœ”Œ&RJêÍ×®^eo|>ÏÊÊÊ@:åÄñ—š{fº¢…tçbô¸|Š+hDQD>—ÃZËÆÆ÷îÝåÓO?eww—ïÿûT+SοIHŒ±Ï !d*É|,'b&?X:hø}Çïyöç÷ëðÎårÌÏÏS©T‚€ýý}¦§§iµZø¾?ÂlHÇÈ‚L™ó¯ôçåR‰©©)NŸ>Í;wh·Ûθ81’B$ "AÇXÌä¦?ñ>ÈÇ1N‡r©4Ò-øš•FJYV#Œ‰Ä¯#Ò1Úh¤ò0Ék-d ¢Ås÷Ì<{6×s¾sssôz½IÞðægÙyô~÷#5½WÊc¨t@â_$Éçóô¢øØ\<^ }Þ›L²Ÿ÷aÞF#¬*›æ#ž[ó #Ç8Öš’Î rscƒR©Èîö&q¤i´»”+Óœ>}šo}ë[¼|î%^>÷2Åb ß÷‰¢˜ÝÝ]nß½ÃöÎ?úïÿÆÖÎ6qE!xò õ£ïÿ{•^/O9÷J‰éé"ZßÁÐF 1i³ô0´Èår,¯•¨ÎäYY“¬Ÿ ¹yc—;5jµ{„ý§¹xö?QÌ Žvc6ï„ K¼|úûØ8ÀÄ®_¹ÁöVÀòÒE¬.`ÐV …Oa„Äàð RHéá‰/ŸC˜RäP^øb´uk–À™Q›´±U#pçgL )šsH>_§\ÙamÝ&…8u&¢X= P¨aÍ.„ø ”«/Œ± 5Xí££9v6=®~j¸yÍ…P`Rl˜Ä$&ñBoȘH²q»Gm{ÛŸáà@):ÇšûmbÆM Ò/ÆŽlîF´pEö—3=‚#ÎÒI±é¼lÍJ–Ö`q¥€ÊIPŒ!a*>‡}Ð5X“t„ý2[–?jqù0áB/a™A TÎumú:BF;O¾P/f,¾Á½”OeÊ7‰I<`óñ$ãð›úüMâÑ" ˜cèt:tÚ¤”,­,±ººŠ”*Ñ|O»¢#b™PúeL3Õtw&»Ã®¼!`Z›ÐEý~Ÿíím®~z•f³Éù 8uêSSS’ûÝo¡D¦@dŒHLY‡ÏÔÉœY •vêv»´šM¶··1ư¼¼ 0讔™½X 8f‚L¾Èߤ²Ib˜Ã åX :aODqÄáa££Cj‡,,,0;;7¸þB&ò #¹’=&õ’eŒLæÏ'7޾¯ Öð;nÚ;þ;½^ß÷YZZ¢^¯Óëõh6›Ôj5fffð“‚Àƒº`(ùe ~àS©T˜››ckk‹8Ži6›K¥ä ܸ3“ÜäiÆ•1)Ýn¥ÔÀëæøø÷½‡ã­8RItOF‘›ç²ÒIß´k<¸6‚“€¶?}¦]ÑÜ#—˰”&ñåähé<—æq“Ëå0Æ¢µ“sŒc6ß÷iw:φXk„’hc’}´ýzQøF¤Cv‡“C"ã9)„Âh7'µ;mj‡uúý½½=*åÖhùþ§o³¼²Æ¹W.pú¥3„q—v·ÍÎÞ6µÃ:}x™ÏïlpçÎ&­v‡Ýƒ]bcÈJ”KÓÌÎÆ“¤õÙÜèaˆˆµ$+\zµL.oQ…Úali,R9¶ªÂÒö¨TŠÅ ³óÖN+nߊøìæ÷îÒ8Ú& —0ñZÏ⋬)9”ð0VºT¨$¹RHå% %IL¤’2‹óy.]z7øà½Ëô{9^ó––.15;ËÍ[7hwæ(–çÁ;ƒTÐFšbtÏ‘xpIR!”'rëcÄ E;_0+<,a%hÏù˜1‚>Ø6Š‚´Þff¶Çé3‚åeÉË/KNŸ1ÌÌÕ(–kÈ`)ë(éRF_9Um-ÚÙš¡G»=Åæ]ÍÕ+Š+ŸD|ö™ ŒÜ|6)6Lb“xÁ¾l'°Æ£×ó¸þI‹ŸôhÖ–ˆLαlü„\qL¿Èm˜õ<‡à½”>­Vý=ØÝöéuŠ*&(†îèú¡grâ'H÷î5¬@k£»;‚O/7øéO"¶7aqz ô<Ò«"}å€icL‹Þ°;aìú’M¶_Øq3ý&ñõÙ=-Ø5‰/÷M®ÿãg¾ï£µ¦Ùh:#=+xå•W8wîr¹BHTxkmrhž:¢#nƃÌvcK'«˜GB ×6c,ÚXŒÖôû!»»»]ûB¡À™Ó§ÉårÇÀ:w¤,!1…”"ÃlÈH.ÀÀ€5•/ŒÉ™³cèv»loo³··ÇK/½Äk¯½†ç9é$¥”+6¨De` Æ$)rØ(¥ 6Îgʤ>Æ`Œ& ûÄqX®ß¸N¿×gmmÙÙYl"¡¤t`‹t†Ä=w€.“zÛãÏú:“˜9§V)P9nú›}}vl­¬¬P¯×i·ÛÔj5ªÕj26ä€1£MüÀsM9ªë/(•JÌÌÌP,©7Îbq‘(Š’swc_ ázOí³Ÿ‡G¤P¾&1˜'̰Ùh4`õä`Ók¢¤ä˜]}¦K;Š"†34—¶ë'ñ ífÚÈýä{ û#Ïia¨ÓqõR©D¯×x)5)<|‘ys*¡xÒ<Öï÷±úaÄþþý(Â$ņjµJ©X"(t¬±Úá ÞÀÚ>óñüeýþ([-퟉<¤kðB:¼Á¤xo·zDQ̽{÷h6[Î×ÉóyùÜ+¬®¬òÆë¯qéÒ«ù"³óókÙÞÛf¯¶ÍçwnóÞü„7nQot0:‡ÕÅ„IP¥T*‘/ÌR,ÎS®¬b"…Ž QÜas£A§Ý¦ÓR„½<«§–Y^óÉ#4-e%‹’Âæ¢¸‹}¦g å³Kе3pçóˆ[7ÛlmP?š¡ÝZ"°bÊ™,‹_£Tl‘Ï·êT©@¹TÚ5øF2Æ£Ù ¸yMðÁ´¹qMpt8Ïa=O£ÝfžI±a“˜Ä •1ŒånVƒU´êŠÃ}è¶Ü•ˈ­‡Ž2ö s¦á"›I ³,q¿d},Ÿd(×ãòda–åò,Íæ!‡Š^§„*8+"qŸÔ4ûqá8óÁ‚3ÆD …JôU-:̱³óÁOÚ|ò‰agªåÓ˜¸Œ°>Rxå#d ‰&u @ Áj3ÞÿDÊ|° `/^¤MÛ}ºý¾l ö«ˆÅs¢:‰óþMb_6˜…!õz£-kkk\¼x‰å¥ ùQ»ëI€n‘˜Úáæ7½Å±bó°COùŸœOºÇ„¥Ýî°»»G§Óáüùó,..ŽHH)‘R9ßC3<ò ;Õ’Ñ;´HåÐnó'F¬•é!P+•똋¢)%½^v»ÍÖÖÕj•••¤”ø¾O±Xt×#¹&6a3›S:‰HkmÆ›&³±®ÀÇZk –F³A†ìíïQ¯×™™aqq‘ÙÙY'õ‘D)5Z`Ë]&2JÏ0÷Í|M Æ8ãp„¤”NV,Ó82.w”~_(XYYáðð½½=X[[£X,“Ö¹? u²¡tú|äóyòù<‡5ºÝnâeMÉ'kè“äS㟦ÙlâûþˆÖ< Y/S4=S4Ö¼ÜVæ››¤æ¶vĪû¤Û“s¨1A@.—#Š¢“·½öɧ§„ªŸák¾š5@ŒyÖŒ¯áÀ€yÕétèõzîߥ$Ö†V«M·×'ÖÆˆ¤të3 u Bã{ ©d"Ã,GšŸw¢Ã8+.eÛ¸ïeFBfþ¸ßi4ŽØÝÝ£ßñ½\ 1œ>ó2oÿÌÛÌ/,òòKç8sæ%¦ªzý~±µ³Ï{ïÿ×®_ãó»·88¬†1Ý^„ç—Ð6‡ïÏQÊUÈ—‚|‰\nOU”ˆ,h!Dc«Õxÿ?ö¨5yå¢å·gX9¥)–|¯‹T!Èmú` ¾¯Èm4±í"T—yOQ*±¼šgý4Ü»#Ø¸Ûæó[wØÛÝ!ŒªÄ¦Š¥Š´S@ kòX Då)„UxJ€1´›‡ø~µµy„Œ‰MHíèé ÖN­05S¦Ù¸·µK±J¶¢ ²MÈÒ_1¬õѦH·›ç°æqóºæÃ 7¯W¹÷ùÕêy„lblLŠ “˜Ä$^ÄMWº6*ˆûš{wz4ë†dŒ¡‡j¤?fbeÅP£1sê¬ñx aO¨¤ò&–lÞksóZ·¿]AšÂô?t&¯aܯà + –J%Ïþ~Ú^Èå,?þ¯px˜ÃŠ´7‡õÊ ‘*B*0éç´ÆiåšøDK‘&NøƒTú…ª5 ÎytLâœêîô<601‘ÓšÄ ¤µÛmj5úý>Jz¼óλœ;÷ s³s®Ð }ß‹F#¥ F'ÝúZ#¥u]þ æ&2i)å@úgˆÉ¹gD'ÚçGGGìììp÷î]Ξ=ËÅK—X][ÃO˜$nãå:ük"Õ-ƒ×9ˆô½ž'F:Ì­M=$RðÖfä¡`©Õj|ôñG\¾|™‹/:fC¦HÍí°€uF– <†ì ÷^:Ñ6à%í<ÿüή_¿N†¼zéU–——}Gñ7‰ÇCëù«TJd ¢'õÒÇúƒ¾€‘c¦é¸‰¢ˆ0 “ÎsçyV+„I<54POïoö...:æAb¾··ÇÒÒù|ž ,kÌ1é°´È0óIdH²R0J).\¸@§×¥V«qýúu^~ùåÄ\=)ºeÊkÛ“bÃ$&1‰7¤„0Š9ØïrTƒ8²är‘°Šñcgf'4° ’wË1}ÜãÉVCÆXÂ~rÙÃh‰Ž0y„ñ‡ {µ\» í#ÐýYd0¦Š§"”0(éZ0…Íè¸ZÝâ¯A þ?"z6n"铘Ä$&ñ: hÇ1Ýn—f£Ö†…ù9NŸ:M¥\EJ…Õžçgº£EŠ©¤SídkÍÚ¤¢š4;ô(HùtŒç†![[[üô§?esk‹oÿüÏsîìY*åò ã1‚c9š?ˆá$¬JÎC ¾ä¬H úLelh¶šììì „`~~žéééè(ï?GRC*¹b¹&kÍ€Aa­Å&Õ›éNã˜^·ËÁþ>{{{AÀâÒ¢ s9ºÝîP®åa÷ô9[é×/«ÃýaFµZh8Io?û3c­cšð}+`ä VŒ^ IA¡Xd~aƒZ£zB±ˆ’ —CIɃJ㦼)è3¤”LMM±¸¸H£Ñ@kM¿ß' C„´ø¾÷…'h)ãøk5Wf¾OÍ¡KùÂC N_Çe”â(a8Y‹}ñETŸÙn"»:.­dŸx{$¥¤P(Œÿ>£õ«¿sc ­lóMZÀ Ã0 ‰ã˜jµŠŸ ÐÆ¢­ÁXWð5BàK…x´{¨Yæçæ0Ö u«¹bÃažúy&#÷!ÇI Ô&ñ’4¢(ÆÏå8SÓ R>ûðÏ›U"p¾Ž:Ð}I}·Åæç°wwØâûy¼|‰\®„'#|Ïà©<†L¿…uàˆÆÜgK‘zO¼˜›µan•¡¾û"‡¯â½'1‰ILâ¹Ïä8Žé÷ûôz}¦§¦yíÕט™ž%ðtœl‚ɦ>ñ°€ÓZ‹0`0xr´=2kµÖcœ7øI#Š"nß¾Íææ&Οgiq‘R¹ŒJ4¶G ž3àãbp$”V ¥éB¸îa+°Æ ¤t"‰^~EkhÔ¸zí;;;¼ýöÛ¬­¯S*•r9'ë Nê§µ™ë;dM`ÍÀ48e6¤¢ÏóRÒh4ƾo½õk«k”Ëe<ßCH1è¨rF›3KŽcç p’ÉíãDzœçim}\À(ûúq0a7h­“qä féõK¿Ž>ÆÁLß÷Y__gww—;wî8}ì|žr¹ì@6£“TŒuãÚøéßµÖôº]¬µƒs˜››cooÍMz½Ýn—|!ƾ@Prä9|Á#+o•^ÿn·;âïr’‘ø±cà ¯á¾&Þ XK¬c¢8Nž]ñµX_žf.8‰Ï0Þp/ñÙsJ™AJ)òùü×'ñä÷þa×4;/Ú¤x+=E¹Z¡X®°w°O¤+HA¹\fóÞýz ç“òhm±iä1?'û|Œÿq†óøü2j†¯ìí°³»G¯Q*OaŒåÂ…×Y]]åìÙ³œ:uŠ¥¥E–——hµZä ZíNŠ4ÚmîlóÁO?â½÷ÿ­-‡t®^ IDATúaL¾<¶HàÍQʯSAm!²ÂårÒà TÎÉD¦ TëŠ Hå2@a„ÀÄ ŒG?T´ZšV«Eã(fõ†âÒk³\¼4ÇÊj—|a‡Ølbu O$ÂPÂ”Ãø“{ÖÅæ,å’f~¡Èòª Õ–Ôc¶·"6îê‡=÷ë´9º=^×Ònõ‰ºZ„«§ ÃmîÜÞãÚÕk^Žù¹t¨Ùß®qýÊgt›¥JÑI&bL)Úô‰£6Ø¡4˜)z`c¬éá«áE˜Øàû–\.¤P)ûŠ-¦f{ÌÎõ)OµXYU,/I*•ÅBHà÷‘¢‹!Rh—H§ æ†1Y„láÁ&ŽÙ¯"‘^Â:clÉœÍÍM¶¶¶(—ÊÌÎÌRš¦:5M¯×£P( 3ÖYcDºâ>@ÛIc +Éó,ÖÒ“@”¯Ëš>žcņ^¿O.ùÌÆZ—;ž´Èa‰ç{,¯,³°¸ÀÍÏnrX?bn~mô@æHÞ¯ Äñb†1Æ=I—¶RŠ©©)J¥Æz½µZÕµe¤”Äqœ0†¿¸uó¤ó~‘çLg0ïîO¶Øð¨Ÿq0Ç$ÿI„kD‚(ŽƒëµZùBd#Åè_†[Š´ý~ž ö¾Ïo:ç¥÷ìëÅhx~ræûï«å@z`~~€ÝÝ]†óòÕ©*‘Ž9jÖéG!ÓA•|1G¯Ó¥Ñl Ê(­ žRCÖb ãø\A(cûc Zk:ÖZêõ:­V›X»ÜÄrœyégÏ]`jj†wß}—™™fffðܺõ9õF­5íN—^sãæm>ûlƒ­­:F«,R-ä-SS‹”Š‹äüyl\Áè€Xk燑¬·®!ýdn²H¤c8¤@H‰’OÑ¡Dy>Ræ1ºÁ½{Ô û1µ}7ßžgýtR¥€%b}¶…O¹bƒ§Ò1ÖöDhÛ¥ZUË‚ÙyÉú)ŸW^ñiIj{–f#¦ÙìS¯‡ìíqpТV‹˜ž‹PÞ:µÃGõ˜ši1;עѼL½m¹yãGtZŸS*Iò¹zk“ 7‹TÓ˜¨Ú`¢Rk¤ÐHÙCPÇ÷ëLM‡äƒ>a¿ÍÔTÀâRž¹yr9¢:­™ž©i(”$¥RÀ?BŠN¢t#°¨"©¨M.¯crS"Šªt:eöv=®\érùã;[eZÍt¼ v !æAÌ‚,8sk´-Ý›&1‰I¼°a ¹Ï G6*qlкÅ)Õ‹##Y&‚Íhû[k@X„'ÀJRhƒ@ÏóRcÑX«“”Â=¶t]ŽfÐáç Ú …"¹ œèáI§·,D¢ý<š•xž[ü¬ÁÑëÜÜ"{Юk6o79ØÏ“xÊà{ E!r( …5Úu\ …‰N³pQcA åŠúë J¦Öö)Ô/ t˜t4Mb“ø&EÊfÈêý·Z-šÍ&ApþüοrÁÉ'eÌmAʸÿf:óÉ2l°ÒI,j­‰uL¿×H#u»]666ùàƒœWùs|÷;ßaue…N·K¹TH ŒÏÝRŠ‘BÃèû?ôKŠYÝäüøè£¹sçRJN:E±Xdii‰8Žr5êˆM5ë’Q&Y“b3‚ƒ{Q«Õ¸yó&}øv‡3§ÏP©Tñý€0 Œ†ñkœý>>­àX1èA×!Žãýÿ k< ºü3Eçq]}V h*¹’•DBk¢(x‹œÄ@0c !AðÒK/Q;<ä³›7Ù*)ä T+•ãÅ÷¼ccy §•=~R=Ëòkòù<333ÌÍ͆!ù|np¯]pb"þ°Ü0+s¢¤Ä 0Y?Ž,Ü Å!ÅèýJ š‚Ô³Áéœø"‚àϪhùEÞÏ,›oaaaDvlÏvŒ¯Ùb¿1ÆÉÏYKÌÍÍ¡”âîÆÝdÞS„ºÂP*"½2Ö†”ÊØa ý~—¸âKEµ:5ðAIkÿR&ÍŽöËÿüã¨Ç1feÂ>ë÷ûìïï;6@£A©Tæå³çY_?ÍòêçÎgyeJeŠ8Žñ‚>žLŠ E¬q~ N…3ÀÚû„q™n§Êîvž ÉÍÏ"nÜð88XuEVi¤_ÅÚˆBúXc¤ÆÈ+ͤØ0‰ILâÅNÄ%yåÇHiÑ:B/Ó­?Ôu>¾ó_‚¤;Q±û3ð2À-‚ÆÃ$Õ‡”)áº+cÇR,íÖI(Yˆ­M(zšBAøŽ*‡Ð †Ç³°V"„D[ƒÖ‰‰%í†æp;dósƒ‰ÀW>*ŽñÑ(©°Ê $9jœÀX6c`•|6)\±ÅŽ#ödóILb“ø2ÁµI!îëný³„aD·Û£Õjsþ• ,..eÀ}š§Ö lLÕÆZ¤M$ЬÅXRc#GV"¢0$Š¢”…Öšîܹƒïû¼rîsssàÍulnÚS#èúâØXwŒ'K ¥ò.C†„De>[³Ùäàà€í<Ïcqq‘©©©8ìò‰’I·_†©9¡Íè0Û—ƒM iñÁCÇ´;¶wv¨Õj,--±¾¾>`Ÿÿ1žçQ_‹ûûÓîÊc 5<2—ÕàÎêŸ?ˢÃæ²ù0œô{'•>Î|©’.ZcŒ3ôµ°JÇqbÂì®]–pŒ¥`û¦R®°²´ÌÆÝ{±WÞ£ÏÎÇóÃË£{SŽ÷5‘ˆ@aʕ݈>èòÖÛ3¢Æ©´ÚSâx„!EÖnîö}'k3’1r…­Ø%{XÓf8<=Žxx_ðàKÁý{–½Ã³t)¯8É$Öa ¡b Fˆ†ó›BY€ôÒ˜«mΪ­Úª½âPQC’´@*MQäa0HU.åå¦c¹´_Ô‚()B‰P9BM‰cƒRäÏRÃdl£P"ÄøRIã}°E¡@9­vH#ɈâVœbE±„è—&—¥üª)A°0’Î3ɳ1>šsxT…^¢0­IÏršfÁ )'nA—Ó4,³ϹO{ÐCŠ?u´j/T|ß6ìõ¬d€V}±jßü9úîŽ c4y®IÓ‚ù,' \¿v“›7_£ÝîxPU.2æk¦¹U~›/û~%„ÿ›5^1FPh Y㌨çsŒ.J’e‡‡‡|öÙg ‡CÞ~ûmÞ}÷]'¤µÛ$› 6:CÙ:ÀÉ’,£ôëj…Ù‹¥N„Î3Áÿ>äã?æè舷ßy››7oÒöÞrÉàuA6øÝxM‡Z uáãŸ't@£.´“~ð¦Øy–qxpÀÑá!….ˆ¢ˆ èt:_+ã¶’‘p×çL„/ÒŽ.¼tK™iyÖàEž‰’l(v¥TåAñužŸg~^­r£Œ_äý_•a{Ö´÷l?]tÍõ¿cÈŠ|©Ÿ•'¬¯~yˆêÌÃÝn—ÝÝ]®^½Ê§Ÿ~JÒh°½µå|¬¥È‹¥ŒXk­ýù”†ã¸*ép©dE6ôz=ŽŽŽ˜ÏçŒÇcºÝazÙ°³²jækÏ{çÉ>qγáYRCÏúœ—=–$¬FK€´Ès¦“ AEQ9Ï_õõ¼ë\òßðàž«øÒhc(¬qIVbAN|Õ±^Õuóy¯_c=«w’µvɰÆÚZÎUJ):v%÷‹yº¬Æ^µ?%}ÏJ7–ÿ'“ EáÖ½$ir:qfÈí^ )A$ d 2`6ƒ"×責¼±´5lí\áÎÝÛ\¹z•Ÿ|ð’FƒÍ­Ë3žåœL&¤™æéñó7ó7ôO†LÇ)º4›×hF:Ý Ò4£Õn‚A´² ¶…1!V(WÕ`µSœy¶ã¸-r¡B!Aî¤årõ[™¸ œß±ÆËgJD Ù CO$-„ (L“ÁIÉhÂþ£”/?·ÞiñúoOI}lÔ' G`XN ‹÷t¨ÖÌZÏ À¦( ƒk C;<á?ÀZØØTN-#›bmNn5k[¨#r³ÌÒêuxý¨Áç¿O™ Ž)NcŠ4ÃèŠ9¡ÈYëH¶73„ Ã>*˜ $^ o!+.¬ô‰°c¥LR9TB¬m‘çmÒq‡ÁI̽{†÷Ü‹8Üë1uÉÍ"XGª.ˆV"d„ ¢\eœWÿ0Rƒt‰:+²aÕVmÕ¾û[í«]N®! Û1I'C„SL>% [㜠DMna‘ˆê,B¤ÌˆBC«ehµsÚksz=MoM€(O5Gû)ƒ¾ Ïzè¢å˜ø’p¨C0R3Gä$MËæv›(N±Ì F,Ø¥ µüoJ`‘è\‘ç1ý£GÇ>€ ‡PC«ÝÐ’FaSTa”3´¶¶ÀJ BùŒP»èËêß"`Y _*½É2{€—üŠouü¼ À•™½j,ØðMÆÒŠ˜Xµï8P­wE®™Næhmi6Û¬­m°µ¹ÍÚÚ:ãñ¿€³T…X¾Y·-Q~!Ý· ¡”7>ÕUxžç` Æh¤„ÉdÌ£Gùì³OÉóŒ[7orùÒe¤dyF‡(øÒú…Aµµ 2Áoï–¾ºñò%õ÷™Ú·Y¶Õ5Z¬ÑŒNG#¥âò¥Ë\Ú¹TIn,Ì[ÖPU—aá+/]¶ 1Úg·Ù¥5±ôm2Ö2›ÏÐF3™L§ch$ v._" Ã…÷Ås€œ3˜| Ø­Å8¢ø” A­"ᬙeåIðŒuõ,dŒ¡ÐÚÝ#!–*E¾‘9lMnFÔú­$¸ä hä×%S¬µ•ldz*!–¿–RŸ‹ûu¶“q•*óùÜUèFktQ¸ó{–¤”­p8Ïn§Ãk·nqxpÀññ1Óé”^¯‡±–Â{H!*Ï[ôM ÁÐÆë‚ ‰E†„aH¹ääÒÜï•XT Ø2:cÿø¸s´½8¬Wà|'÷?ž 0Æ(E‘„JbµÁhMÒHÜï‹‚F£ íÒkÏírá²ý=²-L¥qÕ å<‰,÷]¶¼Û/L0,ý]¼ú+•=¿CZ½Ï¼È3 ]by®êtÚÄáùb!©ö“ß—}ƒ°+ì7î÷?vïu®Ë÷ëÌ›ØO§SŽ9>>ÆCEåÔd¨Ð…&O¡Ùn‚5(%Ñ…% Yà’ [ã‡ýu[ã‰#·ÖŸï†RÐæâQSOFbñ—…ÏQPµòÂã>xø„££#´6´ÛF§Sn½ö·ïÜæ?ø!ë\¹z•V»…±–( yøpŸ¿ûù¯øÕ¯ÿÀd’‚ˆ8|:âðÀõQ·»Foã qÔFŠfs hÆ.i1Œ‚°G– ´VH”sk•ïIåL´ÁÇveFCz[)k; ã9f6D© láö=¦Ò„¶•Ž"VWÒBdäú)Q2æµ7{üø½ Ö6S67Aˆ!–cZ·øÇð³¿-8Ú#åuŒŽ°òv8Û¤Ò¥0Ä Ã¥ÝîZ æXò¥k,E£­E‹K“yÑäp_ñøó9£})$lô›MˆÂˆÑÒ,ÇšÐ1ÏÆ- E¡‘ÒºU±F+,¶q‹Í]=¤~#b1•Á¥} dƒ@yƒì¯+ß°¸š¯{ÞÏxÿpÏÊz|ââû*?oÓõÏqí/«2ã,ðöm±¾yüÏ›ôøs¬ìùêk>C×øï%óyJž¼õÖÛloï£Ñ€ÂjH–üBM¾HØRÊÅû˜E¶µkrŒµè¢ ÍrŠ¢¨ÎO 0:'Ïæ<=<`r:âÝwßå×ï¢d); rH¸ ãB®g¡Y/¥¬ÀtÇyØ*;Âa° àÉXíþƒ5c\X‘œŽF GCö÷Ÿeo½õ·^»M§Ó% ã |¯²ÊU ü×åEF·”¬Ä±dp]ž÷`Ð'ËœfsšÎÙßÛãÍ7ßdww—<Ë<&.4ªÖÐ,ûÀVÕ(\ x á¯!ù$„¬|9Jòˆçè°/.ÙWlø E)ùbdíÙ Œêg?î„”NnÚKU„ÉâEzÉ©R\X×išbŒa¢'!h4®jGžomYšƒ«XXœ—{})EÇ1Ež#„àt<&C”R¨ pR[õûfìÂT¸Œ÷ü9A@·ÛåèèˆðöÛo»Ïõר½ ’¾J³ÕétJš¦)è­­‘ç¹32‚+W®0Ùßßc2™rýúu¶¶¶é÷ûgˆ£2†–Ôòú¿á|hÏŒ•‹Ì¨ísæ©—ƒ–Ÿ%ŸÜ}3Xÿ̈@Qhç§QY¡«Ô[w¹qÑx¸’pÔXr£)J/—òy•å>†šTÝÅÒdƧ/iíù&Õ+K±–ˆeNµCŠíPøâ«Ëóß!*¨}¶u®s‚PÑëu«1YV •s gæï"ñüsòd—ˆ?Ù3ô|i»‹Ö-€¢(˜N§•¬›ñs´‚|^ ÂiÇG}Ö·6˜f4šR€² )Jd¤Xa)LNa5‘ðU_Î$ £s¬0Ho½|‚j±ç¯«´u2AB „Xdòc0Ú"„ò2yŽðÂE1Z»¤Ñé„þ`À<͘ÏçXI³Ãÿð?þO¼þúë¼ñÖ[KÎxü`ŸÑ蔟ýüç<=òå½£¥šh›“f1ëëopýúuF£RAˆ±¾BWñ!TD®R„1i6qñ“t1ˆRÒ¯Ë.^2ÚV„8H7V¬K²”B  G2a‘ÊɺU$Žë!'½d¦ªò(±‰±‹BŸqo3¬±á:R&Œülħ˜qýzÀí[]nÞêqérv·RÅ}$3„Ln…\ »Êï@¸@ObªDMk½ô’õrEÒe…±‡ã M$ FÀ<· †4Û-’hJ äù†”›`lôÈ­vŠS„öòH~zµ5T(뤌¤ È½t’Ц)68¶Ù{qïËœ½'1OŸ¶ôŒ'-¦³6ºXGˆM”êaEL è2®ž@"À"áàÇ´5F+ÐÁŠlXµU[µW ½¸8ÌC@D  R„ÐÞ˜I ePeVº™Ô‚81§Ùžñæ;MÞû ÁÝ7gtׯÁ ÂŽ=(Yò£÷,—vÖù÷ÿç€G÷hM¬Už 0Ô%š\¼oÂÐhXIJÒ”aº`ß=F"©Êò6]ý­0‚ù\ñôî©9z±nÑU–†ÌiC,4Š‚0ˆ¼é#h!Ö{1ˆe³¾*Óë3Né&U´ƒ¨Cöÿ¼[áËPí×ÍŽ+°sÕVmÕVíEäh^Þ¢.1º¨¼šI›íËlmn»¬ÑKà`)×"Å8”%QI&–Ò#níSÊe÷Ïç)išU$a–,ËØ{ü„G \Ù½ÌúZFUFÅ ðÛ-‰n³ï³öÕ2ð^V c1XŸÍg—Ȇ2ÓÑ]Å'ÈÓLgSž³··Çl6¥ÛíÒj¶ØØØDÁ¡L°¶’(%s¬O¹3¥ÐØêsꄃ‚Ùl†ÖƒÁ€ýý}Iƒv»M³Ù¤Ùl"•Z’mºé_^oMýÛúuS“): E®)rRe<$ÝáëX¬Ydõ×–x!_­yŽ1–0Œ–ª%¾ Èk<`$¤ªˆ.c¹˜hñ?—ÄIåÅåA‡,sÖ%Ù†n\c—²ÅK3ïºF~(‰ŽRv«ÔéŸMgA@ÅL¦q¼ä¹ðŒ‹]ŒJÿLôz=._¾Ì½/¿äøø˜ÑhÄÚú:¡?EµA)Á#jñ!n¼ Wq1ˆ¢ˆÉtJ’$¬­­ñôéºÐL&S=zL³™e8QÚK¡Æã kë¼sãüŠ\ó¯ÿÍÉýßü·´Ú>ÿòÇOûŒFc¾üâ}ôNÇŽŸÎrrèë´éô6èô6™Ì 2Üô²ïá’Œ A Ú „’>íÞ'g”æÎe\$$b ‡X¼åúerÅyÍ)Q%$,WU>šÒ8¥Wî Ñ@)ÖÈò)OöNxútÄ—_ÌØØ˜rãFÁí; ºë[ì±VES5ÇÚ)VäÎSX ÂU€wÎÒåH0BÔ`‹ ÖUJ%*é#éAy)À˜)I¤i%‡[Þ¡“+²DPfñˆzÌ¥2rI§8O­ &˜Í"ŽŸJúý„G4_~>æð džö(ò5Š¢‡±]¬h!‚‚¦«‚1–+$¶%C„q„tñºHÂJÊ@ð•!þê¯þjµc\µU[µ ã˜8‘ĉ¡‘ølÂ*{ITFCÞÙ/n¦bÆ¥J¹z#á'^æÍwr6¶ú ûX;$%È ‹"gkzmÅãÇ1ÃÑãÃ&˜.B„Þˆ²fDWå eA+t;‚f³ÀÈ)R¹ÊŒ%ÜÅúÀ+Ëî IDAT^9Ýir|ñðKËÑ~L>“¬·5 §§š*CXíý)|e ZY¤u¼³8·s¾9#ý´LI|Ç@ª²C^pÛù§<ã—Ù+âäϯ­ –Wí{³\Wº÷¥¾¾AkËh4&¬õ¶¸yó6;;»`ˬi]•Ñ—Àk¹?¯dWl-+* `c ²p`u–edYæåEœ®¼;‡œÏ>ûŒýýÚí6—/_fm­G³Ù!}&ž¬**Üu”²/rxõ@†“Nrç£Bå$ÄŒ.Ag­8`}¥D‘çL§S>ûôS<|HÒL¸{÷.—._^»Úp{I„Ûh –ÉOÊX)jšà‹Lx÷ßÇ ÆãS†ÃXgk­Z_Ï€¡ÙP *–*3Œ.p µ“yô€j©co­uzÒÆpãÆ 666èõzäYæ€|%+¿€Ê úŒI¤+ª´¥ð“O4Àl¥$ C¢0âøéSNOÇœŽNQA@³Õ¢ÙlÒîtÂÐ}–@^Ô(ºÚË ^.0å,¥†ò¢¨®­Ô¢¾hޝK“œíï*¡Â&“ Aà€žxQRb½„P)«U'ê熱5bËÝ㲊@kí ’ýÏeÕ‰­ÅoËã½vŸ¥@"]Å€'m KS‚ @k팿s'Ù)¤tFçu2ÃZ””^bÔy¹´[m676988 Ïsâ8fccƒélz±Ùu9¶­E*å$œ‚€ñdB³Õ" à ÔÛò¦ÓÖZúý>N§½K Êz©Óo{ ŸðT””’\kÒ4½Ðÿã«úÀÖ÷ žD5Qj=¡+Î9^­þûÖÆå\…Íó Q¢f,¿XûÁØnwøºÔŪ};-ŽcW¹'%AÔâCa …¶Lç3NÇcŠÌ‘Ä24´L@ @*T‚F³Át–’eãÉ„^»³PV íj$ªìý¥j;[fÀÛ* ÀZ‹RZO6ød‰Ü‘òóùœ4ͧ(2O¹uë6ÿÝ¿ûïùÑ~Œ1†0Œ\eÿðÿýG¦³Œ;·_çµÛ¯3O þ·¿þ?øÙßÿ’ÙÜ`ˆ¸vý?¾ñ–€¢(˜å… 1&tfÏ6tRE2ðä´D G6ˆ¬¶5“JÎTãßòøþ´<%¹Œ’H]ÌY.s )wòT€ D°Ž°ÛäzÄ÷ȇŠO?³ÖËÙÙQ¬oh6¶Bz›-Ö6BÚë ’æœfSÓŒ$R["Ø”(‚¤!TѧdWQQùHoŠm±B{ÈCƒ¤Ñ I¬—èÊÒË4̲„Âl»c™¹«‚!a>—¤YHžÅÌç!ý“á Cÿ$`o/ãÉcËt’07Èóƶa›0nbL cc¬ 2x kU‹”Ø,^Fi¹ZG’ %Á]ýi%£´j«¶j¯&Е1‚f# I‚¥T©©[J–ÿŒ-A CÁµë]67JͱvN:m;·Ávß PŽ8¸ùZ‡õ­!ÆöjI cž½1²ÖÒéthµ,Æô±|(?# Ýä­ _•XÄ(Ûexl9x3|rƒb”G1Ƙ E3›!IŽaU6ÊÒFµÌZ³«äæUû32¿í çŠÔXµUûvŸMgÒì$ æó9aÒj%ܼy“õõuÒ4%iÄH)Éò)f¼ç+îì¹gµÌˆÁ|ž2OS²Üe–^Šèt<¢( >úè#æó9›››¼÷Þ{t»]¯ÿïµÌµ§Ú¥Y2ƒ^ïÎÄZ”tÈâÌùòrNuÃUc\õÅÇÌýû÷ ÃwÞ~‡ÍÍMúý>íVk9+²vÌsf¬¶ÔÓw²ŒJ)´^€äõ×w»]úý>‡GGH!xû­·¸{÷.Í$! CŒ1î:j/ÒJßsÎ× ü{š¦XO:ØR^“”‚,Ï—<1ÎÜrÔ€¾Ýj1Žªsÿ&ów•A.}V¡?§étꪯ­ËßGQDžfUß•¾eeK)ƒT¾§$ê„ËÙ1V–5©¬IÓ”V«Eá_Ž)p™Ôºð=w?ëãPÁåË—9<:äàà€V»RÊ˾Ès}eYT ”äIloo“çyuåñïܹÃÇÿž,Ï<¸æÆWQUÔ9»c+ß ë«?&³)yQ Î<ÏÏ›/”?ªÍ¥ÏžX¬Æˆßl}Ý9à¥ì kÏI]vêe¬}îù„N§Ã›7.¬ME-$a‚ ²,c<Óét¼\RÓù´ZÌOæ¹Q>Gß” ú^Ç:‹ EUaTVi]DªÕ«l.~ÖÜ\P¾®ï ÓpŸ½\î!^±Ûñ]6R.׉0 ¿ÑÜôÇÄž/ƒxù®ÇãÉó•x1†^¯Çt>!7R8à5IœÄbºßµZmúêÔ“»)… 05…R*¨Œ=\ÕCàŒ•}Bžk&“±K¼h·y¼·Çéø”\çŒÆ®êpçÒ.ïþð}®]»Î~ð#’¤E»ÕE©ÁhÆÓ“S’FÄ/~ñ ~úÓ1F3 ‚€»w_G©Ï?¿Ïp8§Ýk5Ö¢‡¦:P˜€@FÎüWxÉáª4¤¯lp³©ð k íª7D(—`ƒ—‚'ÔåÉ\ücX¨þùŠPaÂÉý(åºM2AX'shè¢@3 2›fŒ¦3Žî=„C:h5'ªÏk7Ûüð×Q NO‰´".]Ú ÐsWb$¡jÈ!¼Ì¦ÔXiÑ m‡á(¢0-rÓÆ¨&"jƒáHñÉ'ŠYšº*”‰$k†§sF#Èò&ÆtŸÆÌ¦ BµƒÖÎoA†RÆÞ÷Ab…¤0Î{Á \" ÊU±ø±.¬¨Hƒ…ж‹Ëg§)¹Ò*{{E6¬Úª­Ú÷ +9W‚]©ªª¡.$¼„’¤ Õ ˆcƒ3,SŒÍ–·ï>©±ÒˆŒÎ#p•—¯£|ùX¤ dà ×J¯Ië«&°`r( Àä$¢Øep²AÞ&é­aä”V¨i·íHØi–u «M‰=¿Øš‹v â,`!žõ‚U[µU[µU[µo­•Y´ãñ)%;;;ܾ}Û´JUeñ.³Ö€©ì«õU”"JfYdOÃx2e6›‘¥)Y–‘zƒÞV«EšÎ89pïÞ=ޏzõ ·^»M»Ó­Ì‹m¡}æ¸3´Ò.eBEQóh¨W580A”:ÌVº* /¯¤µ×F/t–”’7=â—ÿôKnܸÁ‡~Èúú:8v&Šr@W†ØVË †0ü~ÊÉ*aÄw¨¶_áéñ²ÏÙÚDW#!£($Ž#L=ÛýŸ¹Ÿþ‰‡³s×ÅýQJýiNOG¤iJZ¤<}j°t0¦EÒlÇ Yîã(Œ1F3ŸÏIÂ6Ü3©¼£v®ÓEáæØyš1 iµÚ GÇEÎÓ§O ´ZmÖÖ7¸zí:¯¿ù&ï¼ûCÂFÂÖÖ6BöùøŸrppį>ú EaGÄaÀxÜçî[¼ÿ“ŸHøë¿þ_¹võ ÿê_ý9üßÿÏâ·Þ§»vM mšh›`2 &$–È΀µ…O^òÙúlÌÂõÈ…wXö}¬$^‚´BÚó÷ÞÁ5^ B ´ÇH,HgÎn­ÄXáL‘eˆ Ha°6GS 3Ó%O'̦'ÌÆsò¹¥)osyýut1çç?ë³·÷ýøÞxë5ÀðóŸÿ‚ÓÑœ8î’$ëH‘ dH‡¨¦Ù¬(ÈuDp•´Ø ˆw1¢ªÉxÒà—¿ðë&`#0m_© i Ȉ2Œ(PˆPùDWeƒÁÞV) ”¯TQÞÃÇ–Ô}H—åÞj‘àR"1–@ ”P¯žAôª­Úª­Ú³š”!Râõs}Ùœð• 8Â}o]-”cçÛ­.Q ó TèJÀdQcÀ<…PäØ6ÌiÄ8ÆÀ.l.Ê'’""b‚`† ,"XÆ‚Î!K!O[œµèïu™/‘Í·ˆ£š6…ÑÄJ;­h[ „3á‘€1Æ:S&XÒ v>‹MÅ2‹²‘/-}·j«¶j~íÙ^,{³jÎc©z¤iÊd2a­·Ák¯½F¯×ó ¤+Ë Vœ!Ç—ŽêÁ3°8Ù£5…÷ƒÈó‚B{C…6dyÁptÊ£ÇOHÓŒ·ß~‡ÝÝ+\Ãz“;¿ç²î\µ —r‚5.ãÍg¬+¥œTM‘#å5Ï¿Î[ O®8’Å’{pO)Ešeñäñ’$agg‡8ŠÙÜÚ&ÂJ.²ž9îˆyÁ&ûü3h}æ3= ÇÄqÌíÛ· ŽÏžVÏêÏ‚4åÏÚêïRR90°EQ ¨DuMB T„^:PéJ÷E-ó½Ä,–Œ!ýñòŸ{vq*–^÷‚µÊ€´æó9ÇÇÇ„Qt¦‚TTÕõy®* éâ²’P)Au·17Õø)e§ê`Xé—q¶¢¡î Q2ÓÛî÷ûΔY ­‰YH#Yc½e­?jç]ž{†UÂææ&˜L&œœœ°¶¶¶DŒÔûÃú±Y£4]-¼AvÇ(¥*²¡<ç,Ë*ýô³R«vþ¹Ë²Ì{“H¥*èEú®¥~ÌåFSoV/Êÿ<àÃ~BCÝâéqŸó ÃaL«{‰fs h‚ J:âCµA Ú$µPk"„ŒÀDäE+Ö …M T JF B¤ ±R€´oT]:€¤“ø¢”žt®• £çŠh¨U5œŸk²ÝU̓Å{£ú¾öãaE6¬Úª­Ú÷ ‘g&Ä2ÀÓž­]l< ~rõÁÄýûOøÇ8F…=vv·PB ¢!†tQ!P8›Ì:÷>+øò“ŒþÓk¢j±=ËùºÍhÈl’3fŒÇ}¤Ê ´öFКÍÙ¬Éã{!ƒÃmÒÑ âàW®ì$]äÅœb<¹… ‰sšvs|™½X}î™ ©ö¬ƒÒ"ˆ«•.ÿ¹üÊpXµUûSmj^ö&yÕVíO9¶ëÙßõñ]Óé”ÉdÂOÿò_pëÖ­%°áLM¡‘ÏY\%#ÎPÑhÒyÆhtÊ|žbtiÊéë „$M3¤TU&ü›·xã7Q-Ž0Ö"Kð\kg˜jÝñ‚@†N"æèèˆétJ»Ý¦ÙLj›0ƒÖÖW[–YýÆØÚ÷°]°·¿Ç¯~ý+Úí6·oßæòå]â(®6ÅõŠÅ’9ÛõÙ¤Ìv¾Ü½Ì¬/[E<|ô˜/¿üÒùC¼óqca¨¬.0„¾PB§n|j-a,Wzºz])“T’3ÊËû(ŸÙ_~•RVÁE™ùëUá7þõqI’ð‡?ü!QWã­4þª¹µ7-mÂ-diŽRAeb,¥r‰v9¹CœïJHWã%¢Êë/y¥T%sTöIR\èÓQ¾ß°rRJÇ1£ÑˆÑhÄÆÆÖf³”8NTXŲ,U½/´Ö„þ~äyÎÁÁ½µNgÉPuéœjãEJI†ôz=ùòË/¹{÷.ट667x²÷ÄIAÌf´ÛmÞÙ3UÂþ<ÿÜÉj£MUYR“É„8ŒªD¢¯ßgÇ‘±.S©ÀPXCn4È2—Õ‘©n¯ä¥4¾cû€ÉÔ¯kôûã§Ìõ­UÚ]ÃU‚qî93\¢Øk·n’çYuÞù}5Ø^ÒLâêÃïnüi_ ¾=`úl¬wîÜátrÊ“ƒ=£>ÚòÌ0ÌPJ’f’$!ab2úÃ!QØ¢ÛˆâCA6›‘æ9³é!¿ýÝÒëtÙÞÞâêÕ«üèÝòþ{ïÓívIZ-¦YÁñ`Àïþþœ üÓ¯ÇÁá‘KV° +cÍV'´Û;¤©áêõw¾àÖk·i4üíßþGNO‡ü‹ÿü_ áÉÞ½õm„jpø´6M,!¶Ôé7ÖW/Œ÷”°F P`C_ù€Kæ´NJÉ zãqs~|¾lÃÈ ªû¦80Ý@€ZJõšÎÊ.`áãM)B%6#ÏR ¸õÚ Þxë ÚÍ€½ýÇŒ'nܼÅüŸ±¹µÎƒGL' \"Œo‚ê!Dàd„ôSB!U©š@Œ”!"´94’†‹gæ,˪ƒ°9J(„µH !v%«á¯²6aYCH¶”ÀôkÂyŸ4wï­Õ‚Џ±UfëJFiÕVmÕ¾7M¡ [™0ùòj(ú",7X(¬QL'‚û_ÎØ½Ò#Ž{¨­)¤"˜a1híYäk<~`øÇ¿ïsÿ `)Ÿpq çª bŠB‘¥š¢0D±ÏÞ²£cž<” û FýmŠì:R\§ÙºF«ÛE5b&©ö ¡ãtq« ?/©àŽç®MJ‰­4XºÒVœ”Ë…÷l¸Zkÿq쪭ڪý›¿ñ°jß+°¬–­½?Át:¥ÓépíÚ5¶¶¶ÎCçס³SéI`+r6›3ŸÏ™ÏS mÐÖ •“1Æߓɔ£§ÇdYÆ•+Whµ;¨ ¤Ôš­Èበc°y^IôÌf3ïû0eŸ8ŽiµZY¢”B**Ù$m½/ƒ'ÊL:!Y–1›Í˜ME…\º|‰V«UIœ”Yôu0d)è‹à媴v•5ÉŽÑhDÿä„ÙtJ’$lnnÒnµ*)#Y#ĆÈåñKCß:éPŸÃT P(´ÑhOÖ ]l¦”"C””$I²$TÞí ÎË@ÖÊNKìþ`ÀÓãÖ×׉âFì­«¾~QI¥ú¦[A¿?àä¤ÏöÎuŒ²ò¥q­}Ö-¹ð3J9®4M—Ì¢+óÒ’lXeK’XuB¯|ïx<^•b&´Å;WårÑÚRÿ]Y™Ðj·ÙÚÚâøä„££#úý>…Ö„ÆTÄHy~ÖZ'ÍP«¾QJÑét8<_ü\‚ã–*f‰¢¨Ì«ó§Îúêk4J)F£³Ùœ¢Ð¤YÎÚzäH ˆ×e¾*ž0ÆT> ¥¡vIŒE^Fiö_P0zæÔ= Ê>½È¹$DM^ꢨülãSK‰¤ <É6g<³¾¾N(g¤ÃkŒ—LXeeCý\Í$áÊ•+œôûôû}Æã1ÚK>•¦ÓöL'”Ofi Ž0JÓ”ÙlæÍ¢Û$IB’$<}ú´ò°H’ä;p~÷ô’(ÓZWdÒ’\××í³Úþ¡ðR^õЇ´ÙW¦ÎÎSß•1´$1ç çÍÍM?mí‰Yµ—¹‡¬¯]V€69¦ðφ)M½]œ TÄøtÆl6e÷ÊÖ¸9.ŠBNG)ûû{<~t ='ÏszÝ n½v‡ëׯóÞ{ïqãÚu.íìpzzÊh0ä7¿ÿ=ÿþ÷üö·¿åd0¦?J™§ D›8Ygsm—No“4Miwzˆ Ƙ˜ùLÇ æéÉ|Jw§‡ c&ÓG‡ûÜ}ý.—¯ìrxxÌï÷ Q|‰œ„†­8çgYè²\k¸ÍE׳³ô*V“4LJH2n\Ý¥Æ<ó»ßüåí·Þ¢Óé’ë‚O?@š+âæ&V¶A „rØ” Þ€»N^–1ˆÅ YU@ (é¥ÃÝkå¹EóÚö¬GIy|Y»Î…F¥°Ëx­ñuDIÈ’pN¹Ü Ÿd°œØ±"VmÕVíU‡4˜ÍR¦Hç )c¤ÎØÇ.6No°¾’#eétÊgŸ É2 agW²siƒN»Cö÷9<Èøì³9øýŒþq‹"ïÆj>Í0 eÀlfHg1EaŠ&Úfã“á:§ÇŠìqx nÐîn’4[È ÀØbqζ²Áö¿:¿À?+À~~8+ª,†úR"¾CAply‘rEP¬Úª­Úª}‡Vj¿ÒZ3›Í˜L&´Û]Þ}÷]¶¶¶¼üNEX턵>#M±(‰_lÏÜ¥ Q–Â{·Ûë1÷¦ÑW®Üb÷ÊUÖ×7ªŠ†2{¼¬BÂeÎçy^™°fYÆx<æèè¨KàÖ¬),Å0mK=')ÀxmÜÁ`ÈÇÑÆðúoÐl¶–À~ë7’‹ Üùlã3‘€ë'Q—l2@9韜0*ðkgggI§28®ôÏ6£fIë"sÄ…”(å䜔—Ü)Áöê8åqk%ü%8_ä…vÃI€ö÷O*¹¨l¨ù¼H3ÆT^Zk&“ §§§ÌçóçöÃÙøë,ÁqQ–äOi¢œ¦i%%´$ë7ÎU5”ÇðÇNÓ”étÊxâÉã=?zÌ|ž’¦)¤C§{‰­mâÆÆ6i$h#i·$º£C´QaD@Øh3žX>øË™Íæüá·¿foï ?üñ‰¢ˆ'O¾`2™ÑŽBŒQ©0Hg lkR`åºã³ú]‚ƒáûDˆU1‰r~JƺùÐýQ\  Ô0¼šµ¥4£Ñ7/µ¸|i ‰`ïñ_|þ9kk=îÞ½Ãl6ãi¿Ï“ýC -‚¨…VÈÈU$ ADX¡Ü÷Ôý&´7³–>%Ô^k,{N¼ð#x–§† ù++λʔrR“QÎ3UºÊ)ҮȆU[µUû~µV«Åx|Èx,±¶]-&ÖŠÊÀ¹2¾©Âk_&g"¬‘ä¹äÞçSŽsýz‹Ýݘn×ÐlJúý€GÆ—•逻ð%J’éøø˜µµ5®ß¸Îd<]òƒpäÂÂË¢ôÿ8KæXkÉò­5kkk¬­­€{÷îñæ›oV×[—Sª>§ví§§§DQ„”’û÷ï{i¥vå1‘eJ©Šx9;ÎÆœžshY TÞ÷$I˜ÏçÕó¢½ù¶üŠlþ¥yDP%I)!±Ú8/}µŠ9–ïÃ×î Q‚p‹Š÷²ªA)E»Ýf>O‘RÔ$ÛV{™o;v>;×>¯-ÍÿÒݯƒƒr]pÒï“é‚ Ã©Ýn¥,Öº5¡¾¶ôz=>üé¿æý÷Â[o¿…RJ6Où§ú_~qŸýýc>|Âp8ÄZAmÒî6Øi62$nt²]¬MÈRy¦2™ ¥Â %'MÿöÞüIŽ#¿òü¸{yVÖ]¸I‚ÝÉfwK¶#ɶwÆÚÖ4»?Ìïú'G?ïî˜f5&ÙØHõ¡ÖªÙd¢êÎ;ãr÷ýÁ="#³²p¼Ð+C!‘Gd„‡ï}ß{ ׯ_çÿøÑZWk¡¿ø‹¿ ( ÎÏÏA ]`…qÊKm|F¹ÄJíÆ3ŸO^D®¿é­*J¡žYPõ¢Å_kîC`ÑÆHú´Ûï½ÿ=öö¶Ð:çÓÏî‘å97nÜ`ÿ`Ÿ$KøÍo~Ãd2ecó&(‰P+KåˆpJ dIïÌ?Îg~Y÷\u-ìÙ=•ᆵ5ìëj¢¡¾†Ä[:¹÷µóŒ*Ÿ'%¤#i¤H+°V"¥Erá8Ödú­Ûº½™‹‰ê'b8L a63E]ê&U“-{ÀJŒ`C1:o3f|qßðäaBeh=%ŒBÒ¬Ãt m„.B´ ¼zâÅ‹­5ãQÂÅyÀx4›d™!v)Òm¢à€8Úegëq³…T cÊ0ÇùÆUÛÕ' »rº,«®æ™Ú„¹ÞJ¬Ûº­Û›´q\·7÷üÕÁÈÉdB¿?ÀZ[ÙIÌ«©ç r}>cé;¸÷sùLZ›Ê6©¬ø­²üæÊëÔ„3WuxzzB»Ýfc£K üfÎç<9yø´1†"ÏÉóŒ,K9=?ã‹G_pz|â{ò›FKQäžä7äyA^hS k•Ûs0ŽŽO899A)Åë7ˆÂ„DQ\m€ÂÕQ‹ÿ¬Ë-^‘a«ÏÏ2Wµ†![[[lnn.„þÖ†e»¤åÿ[îgËvJ%­½UKÙ¤”Háµå„' êê•yÕ¿­,|f³„Y2c£×£çša¸J;Oh”ç¾$µ–×Måg¸^üÇcúý>Úè à]e1µêwá7å§äX¶Rª¿OùÙe•ºÞÚ•–.ÀÕù¶NÅaÍ<;!ËsF£…·;*I¼ ìs ¥ê3ìêû5PŠ0 ét:t»]NNOè÷û.{!nT–fR¹÷4µìŠRyÑít0ZEiš2˜L&´ZMZ­ív›étZïœèZì{hm~¿{ÒÉ:uS–¦äyN†!ª{ªžã"^ô¾bn³a}ž –KýñMœã¾;Ç?ßw3¿¯[­–³ ³%ØùÕöïUcòË® ¾‹×þËÓÕß]°8‘.ßeFŽ«úŸŒGdiAÇ`EfÑŒó)¦"Œ5Xƒ’‚n§ÍéÉ€ ~ô£s÷î{ùô·øõ¯ïqzzÎññ YZøðß º½m”Š £6AUŠL+#„h`m˹0…±ÂÙ=Š2Xb(°&C³³ÝãÖÍë4¢ =âú›lïì1™¦üóÏ~I§»I.„#°¥;R*í•iÂ|ü©lýüÜ1Ÿƒ X]¡1—îú"À,žëÅt£«ï«ƒÓ_©ùcZ~Tx÷ 9WŠ«-”–ßQ Á$†’÷ßû>N‹“£#¾xðk,ûûû4š1ÆZž3Ksv¯m€p .»üQ[#­Ê<˜WÛ1±H:ˆW<ßó§¹#°ÞJ[ˆùo ,¥ZC}Ö…ËRÐÚÙÇ$SŒÕhíÀÎÒxO Pa@6™2›Î äiJck‹­^°î½Œ®6zÆZ´)ªÜˆ,KÉò”4OÈó”£#þ÷ý?z— T¨ÀmÔG£!]çE‘sÞ¿ »Ññ›ZUNEQe9‡O99>¥Ûírûöq“8ŠªÅþýu€±<ÇfɺÉZ[…SZy;›Ó“Â(b{{›ÍÍÍeƪJüò3ìv9W]÷²R?ó¾üq£QÿaàÓÐ[ÂÔɆrÓ\·Q2PY,JJúý>ãñ˜[·o³½½M†„AH(”ô>Â5Ë™z_[çJò£<öÃÃC...ØÙÝacc£²{’Bz pîu-—TBzã1'OÂ0¤Ùl"¥¬² Êc©[^U*Ú¢zÊ`K÷¸ UÕOŒ1$‰#_fÓJÍI¤:¸YÚrI!ª Œz˲Œ¼(ˆ¢ˆ 677yüä1ƒÁ  *.Î¥”¨@U ˜W —*¦FNé¦)N›F£A£Ñ`:’eYEL)UöAGJ!*ïêokßñå!®/?fÊà•ù«³ôšÎØèv°K}™zÈéR-R2?߸£ÓÚ`´·éðVroÊšõ;KBU÷æål–V«å³‰t5¿,[†]0^õø*ÅÔ¥~ëŸ^WÕ•ã]9n”ʱòÅò Bö›Ý7-ªÅž÷v«€âÅÊü¹½rås_ñÍóܲ# ŽÚܺ±Ét–0™%)‰É%2pª2$Ë¢8BE!ƒÁÿëÿù/üæ“'<|0`4](ŒÝ¦ÕÜ¢ÙlïîbQOjXœ"L›Â©ÔŒD „HB( ¨l!µÕX›#Ð`2¤qûÆ;ô6Ú<{úˆ_ôþ—÷ç "ŽŽ.øìþnÜþ€iÑ µ+A;€‰”^)籆ҊÑ] .ת\†i¤¦Ègh]8{H8âØnìV „aჃÉ-…Á[É#fY\ðâqVùZà²bAéÓ*Ý]i ìêÁ[Øåÿr“.R:íwîÜbpqÁùé)ÏŸÑl´xëíwhušœž¸ÿàw4Z›Ä.2h`EˆAa­täƒÿþó°x_*ã¿n¸Š€¯¾ÏÊ@ïÅçQ›ì*àë-¥¢ðQÕ>¸õCiÇ'¼ ‡S68kM6¬Ûº­ÛÆ0Ì7Wnq`°Z€i“§Y:à 6ÂàTsñÂE¿a%X‰± A ¶E«¹Ež´u c´w0°U†‚›¨VOqøì£&cÁñqÊÞ͆‚¸%‘(šmIÜp“½ÛZD)®ÞyqÁô²›k­«ªSpiZ±KóÐ*FߊJ6¸&¾×¯ÉŠu[oè×íÍîCÎÓu6›ÒïÐ…¦Õjq°N«C $aMEˆ—^ûs0Åx Õ͇Æh´ÑyÎl6E9Æhg b›w1ABç'ÇG\\\Ðëõ¸qã»»»ÌfΖ¤}ük- *Šœ4KIÓãÉÓ³º.ûû(%QJ¢u $ÓéÄKº@[G*hãëÔ„DÑ–©þ÷åÍíâcqùo Fú}}Ô §hp`½\° º*Â╵ÇË(éBkŸ=c–$ÞÚBAõãÈQUñ×ß¿°×=kgœóós&“ ;»;t»Ýy¶„G€­ëçªÊר©rÊïØl6«c(I…ôZ¥)A?»zTA¾B(B %ÑX.ÆC¦YJn4Ay¥•·°*•$n™g.‘ªçDQD¯×£Ûé2›Í ììì8+¬:9¤5RØ¥LŠØ e tžáȦf³‰’ŠÉx‚ÑNáîEɼböÛ5š¯õɯ·~“e¶‚1HÉlŠÂçZˆ­õe)æ{&QßG‰ùº¾üÕh[ÙÀ T-œÔí‡xCÖŸßåªüR9g­¡Ýny‚H{•ªúøU}f•=Ûbðýü1k'hY 1²<¯Æ™º]¡r›ÃŠÐµZhSˆßÖuñ–2¢”®&¹çã¯t>÷ÕãêIãqåû,’Ö±RDAƒ4Ët;›´Û`4kHÓ)J‚ ÃZ…@!„¡Ýiqx8 {ø¿{2c÷TÐ%Š; "Š\†YÚX” ¯B´Wñ™Ò–¹º‰Ú¡¬ˆÂ"L†59ÊÏmÆfܼ¾Ëàâ”d6åìì”w¿÷=šÍGÇO ¤è`´b„"@ª š_Ýüb\ÖÒýÔ”ÒÃÆÎôÇ`FIMaf˜bŒ!4V“̆X«‰›1ºj)šXRnLõäFݲ§>ñ•ý×Ú«û‘¼ôø ¥¡]tµX¨ú¿Wq6µl£êw—·…5„ ÎÏŽù³?¹Ãµƒ}´.øì³Ï8::b£×åߟf«Éч|üɧ„}P „j`mŒµaYâáêÀí…uJ]Mºâ^«~slÌÁcr53Q}Œ¥¶ø5G9' i‘Êõ éí½]mC¾&ÖmÝÖíÍiuNZJÄ gQ¨_<ð¯ÿ2e<Ø& b´î DË=wmQ±äÁW ªÂãÞÛËФ ÖWT¹¿=ïïMùàiÁP¹îI©Ü„Žàâ|ÌÃ}nÞ5llj®¿&‘IbGp艡0™cþ}Ïó&Ÿosy¶óÍem’µÕvª¶±«AGû%2ä^±IÅö¿Î–ïu+lÖʆuûC$ ^§ÿ®‰ŠßæU}{ÿ¼2»í'ÓÓé ¬`ooŸk×®…0¦m°Þƒ^ _M%Æh_àëæ ã}Ü1YŽ) Lᤠ¡Í\Ý(•«G̘•÷¹”žX°ÕI­QåR7¾•cN™­QÚ0FQă™%9ÚÀµë7øßÿãO¹uû6ÏžñÅÃÇÜ»wŸÑ(¡ÙjƒIÑ…ÀÚX66Ÿ‘e°¹¹å¬å”Ĉ!ˆÈMi›c+—~ô+$‰ÁW–‹Ü­1„ÂQì )´#nÝ„JrçÖu¤´<þÝCšÍ{{üüŸA·½ ºž —÷… ™)BUó ’²d÷Ý8¬-JH—¯d}1mS¬-PŠ|D‘©¶ £ˆélÈÙù!Y‘rãÆ;ÑAÐ ?¾;û%©\5B]x‹¦ ¦¸L5‹%|þ<¯ý‰­E+,•*Klq±ó× Qs„ÍI¦}òl»ï¾E)6Z-~÷ø±#ö¤d£×#ŒþùçÿL4âÚ»¨¸MªÆÆc)üg¯„œ+ æã×¢Eå‚A…·ÃÂÎÏY½€Ô®Ì¡°éàn©9Ò&j$#.çØPI8X|ïˆ[¹|©°øõ®°Õy_“ ë¶nëö&>hÐZ¬™N%OOyøyNÿ"@›Ö6°XS“ÔÙç…(Ïà ¬Ð‹Ïõ }Éõrè´°žp¨Íq~{è AžÅ>3l°½£Ô”0œ Ò“%X›Òû§ºÍž«¯Î7ø9E¬òrµ‹9“ ÿ+–Äk”•­Áöu[·u[·?˜¹º¶y0;ÉRF£1“É”^o“×oÒÛØð¤ú¼ªRI—Yäæâ9ñ¦ ã-«¦ó<#+\ù&ŠÒ¾Ð=Ta9ßú‡ÂÎ ­5³Ùm Q±½µE§Ó©ìoVúõMjiû1œü´Ùyæ†Ñ)çggœŸÑi· }6„¥$µMH}S]Y„ÔÎAùóùƒŒÆcTÅ1AÎIå¢f5?n¯”rè(ÕÃáÇW¡ÐN‡° -«@kÉ.ìQT6`¥²£R (Uóaúê}Q€,gdT?^c}ß6þšÛ2ºÑ“I.ÜP’´È9ô9»8çÆþ´ì<„ºô¨u@µvíWUO¶Ûmâ(" ŠNÝSÚÉØùÞßÃÃó`_1–4K<题Φôû}¦“)h¶ÚüÉŸþ?øðG|ðƒÙÞÝA†Šø‡ä·ŸÞg4ž T„Y–Dkq¤0±egg‹Á¨ 0+BÈÐt÷&ù IDAT˜uÖÍØdá+üØÐý¿n|—Ç…•#„4R8¢YIÐEÊîV›­^“vSòßÿûß³³»Í­ÛwŽRà JµI…’m„Œ<É * é]®› M„XÒ ”å3\¥³N’Öb)Ðù„lv±ç„*Äê€\Kf“c¬bÌ )'D‘F)‚ÐçØ_gCýŸ¶V÷(j}Ⱦxl­ƒ•}áØ4¿k®éáïMc‘ (0zÊdpÌæF“;·¯Ój5xðà>|N¯×ãÃþÝý==zÄÓ'G BÚÛ"dab¡ÿÜ¢VTZƒ`¬] ÉêEWòµ³bŒ?G5åSI@[OØäÂ}W®ƒeYà!ÝM,J¹\#5Ïg( n•”X´glÔ±&ÖmÝÖí»ßìâömIpz"yô(çô ²$ÀÒÆØÈOóYÃX»˜UpÅ‚õådÚbiëï÷nÖ/ †,“=3üö#Ãææ6;×Rå;@r-BlÑAÊÈ©$ Í‹'Ëç©X:âùĺâÅ¢2Ê¥îZ¥ümÛ }™×¯Õëö]¼‡VõËõïU•Îëö‡Ògð„!³éÔU4k˵k×¹ûÎ;t»Ý*˜¸ÞWJ¿v)¬tk›Oë$üE‘“$3Ò4%Í3ça,Ê /c±yF¤IÂññ1C %[½¦(ˆãØm•¼’ÂzàÖ8Úƒ>ÃaŸÁ¨Ïx2äÎÛܼuk J¹ªÒ<ÏÑÞ&Ë2’$%/ 66{L§3F£Ýn·Êk˜Ì¦qzzÊ|ÀÎέf“0 Ÿ{,ç(Póû¯Îûr×-3Š¢àéÓ§DaH#ŽÙÝÝ­@oXTÔ-@êáÖ.Ý×K… õ€cWÍ+è÷ûH)ÙÝÝçÔ/—¢¥”U¨ðÇÉ󜭭-Úí6­VËÙÌø0g˜[5-úË}ÎZK’$t»]F£.g"Ži6›lmm¹þR®ªO,oYM[yX÷Ù±r¤QÇñB^CÙ’$© ÷£–^ÒºÚA+ò•š•€ô c-£ñ˜4M]*™T­Ñ…SBm \ ÜߟtQTß5Ž"¢(¢ÝnÓï÷9==¥Õn»jØ@-ÞÃviÝ tºz›=îþ9½¤G’&´Z-§ä‘]h²<ÃXC’¦Äqäª^õ·»þ4ˤÌ7€±××,-É4V»oUÚá”çÆg¨Zu¢ zuÄCQ8ð+¼Úd™t´¿óз·¶¶æ-*²²ÌYÿ.çàØàµÞÊ`ð’`Fäyî”C³)ƒá¤WN…N5Åq¥@*íÑÂ0¤Ñh`­%+ >E³dÆF§ËÖæ&aÐZ#¿îkUU™[±X±Î|nŸûÛ×b[=n­uŠ4[ªK;A]›£—M“ç$I»ï¾ËÝ»wùàƒðáÿ„Þæ6ƒá€³ó3~õë_ñw÷÷>=áübÈtš0³µÝF‚vG¡TH)T2(0ä"¤è¢‚ÚF`JÕPàìˆTîÈ#2r™SÞÆ@Ñð6z¥µ’D Q"@Xƒ”#Fƒc~øþ]â àþgŸóäñïøñŸ|H³ÝáÞçOyøè)ÍÆûÌR qL5\^Ì °ÐÁÆ–ê(éTŽ5vJP ZX“2ž2œ"åVÜÁäúƒ£á1ÃÉ|ø­vDLó±SØ™€XÅHPhƒ 𘵬n‹®H§º‚Sˆ’dóy%éZ!áWï7³¿q¥º]—ë{aK›'§@Áj”´"'/†PŒ¸¶·Á­ë{˜"e4ìsøø º(ø³?ÿw¤IÎlœóùý'4š›4Û›6pÄ ±6p !Ü÷·ÂÓ+«³G–ÂÜãæùDŠY*à¨Æv)+%DyŽm}îð¹ Žä5+¥ºþÃ+ç*%¢·™’sûï5Ù°në¶noF«­™cÌÆ-ž=Ö= H“€"ï`òÆD89Ú— 9»ò5âÊpUùM99 Ю"ИÏ>ÎÙÚLøQ+¢³aQj„ÏD®2o¹ÉWü Ä—µQªÏ õ#µ/(¸ªWþ>‚¦kÀÝÖíë!žw/ý! oú8òe«Eàì^?NFL'SÂ0¤×Ûäúõôz›˜Âø º¢¬¬º 2:UCA–¥EA^¸ hSØEeâÈ€$™1¸8?ÃÍõk\;Øwö3^Â.¥ò vajŸÎ¦äyÆéÙ)ç„QÈÁõ6|U·TSøPíl®ÑÆr~~BPhô`³. ¦Ó)gggEÁf¯ç@(B¦Ð¼lEôrUsý8/gã*Í„$I3ž># Cvvwi4ШÙ­ºîËï¿h–à@í9%€>N‚ñxL³Ù¬@üUAÔ ïǼÊÎS#S#´ÖŒF#?~ŒÖš*³¡ :- JÎÕ‚ÕáÖå÷Š¢ˆÙlÆññqJµÛmz½^¥H¨€}ÁJ²A–ïo|s +» ˆ¢¨²5)Õ1åßåùq¶UWs_ië•@åFßÍd2q ¤( ¯¥Æ«³*ê%)V*PÂ0$Žc¢(âììŒÁ`0· 2r!«ÂTÍsB”Rt<Ù6žLÈ‹©A¢‚òmÌ\TȲé[¿å1ØUmÛŠ Ãp"-%EQTvUËÏW‘² eÁFc±_¬ ^{óZkqWä®­…1_}o¯^o•cI9>Íf3†Ã!³ÙÌ‘Õ8%‘ %MÆŒ¦“*£ÇZKÄqLáó#¦Ó)ÆÛÿÍ’„n»SY¡-Ï_fŸõ¼×¯ ȶs…ßâÜ>/‹[E8”ãW–e¥*²AkÍÑÑQ¥QJñöÛoóöÛoóãÿ˜›7oÒl61V2™ü·¿ÿ¿¹ÿ3>{pŸÏÞ'`Cf™¤ÙÞÅÚkCм@GnVÒlô'Sr3ÃXB56r€º•Þ}Á mY®\î$ )”'ÅRV£À§ÊËÒa3q.¦Ü¾¹OšŒùüþ=...øÿÇÿÉp4æøäaÃÙöøŒ+jCÍÊÉ ¸e‘6 d© 4s§a1Æ‘ ýÁº˜ UÎgEÂdÚ2¶zN)¡$ÆÎHÓkfHÑ&ŠÃJ½a—J#KÕ¦µvefÌjëj<ñ\|F¬ÌwWܹ•QâÜÖS$˜b&åæõî¾ýŸ>­”³›››$IÂd’Ì z½}¬UŽÄ©©EÕ‡kßþåfžërqùDUú´å Q&=—§¸Šç±µŸ(!eµ/ϳ¤f]eee}hŒE©’ÈX+ÖmÝÖíM#„ gê¶nðôÜû·}*A_Ã[ 76D† ˆ¼>&K “¤ÎRKá¡Ïsî’ríf“n§I¬º@Ûae`—Z"ÖmÝÖmݾ}ÀüyÞÈõÇV=ïReöïùyû}øž¯J88ÒU¿ _…>B µfwoîF4ˉ¼w²]¾uÒòå÷,í•´ÖEQµ%ÀV÷±¤·!‚áhÈÓ§OÀ>xŸƒƒ}²,¥Ùlø¼€2Tº|ï4MÑÖ{çç<=WúâcéI IEdùÔ>gŸ“ÉÄÉÆðÙgŸñôéSnÞ¼É;wèv»WöŸê»Õ€[«ˆ_Î;¸üãQI’rrrB»ÕâÖÍ›¤iê*m­%¨å5,íi«××dÕã5 ªÕš4MɲŒ_ÿú#¬Y–]ROÔm„*‚d9¸Ùtý=´Ö©2vÒ4åç?ÿ9QÑívÉ‹5)U®Tyfa=በšÂ+ø¤W??~ä †§™alгÂ+˜¥cÂHƒT4Û=Úímf³œ'Ÿÿš,…f¼ÍöÖ¬ÙA£‹™ÏÂTÌ™…'"Ên°h…ýMð̉=ƒ)2TCTkÏápÈ{ïý”Á`@¸Õá—¿ü%üå_þ%4›Mþæoþ«["gÙˆYZß1'W®²”|¹½˜x©½ÈËìåÊw[þ½Ì7©Ñ$~|’óî²0¢f¥±&ÖmÝÖí»»X,'^¿Òò~÷pÀGÿšqï7SFç{ÛÛÆå)d_aLÀ¼roiD~áà^úØZÏþyi’óôw9Ÿ},ØÚì²½Ÿ¢‹ !BFHÕšȿKÝ?u]i¿në¶nßPî6tv!¬«€ÈzËó¼ª.¿Ë»âXëß­^™Kí­ê§%øXž¿$Iªk¨”"Ï ¤\Îu˜[e9BÂúœwþ·jÕËÆ\ þ®ƒŠà3Œ]ßëTI¢µÛíêeYF£Ñ¨”*—«'ç   ‚ÊFFkÍx<ÆÃÆÆÓé´²•Z·Õ÷ƒñ}£<Ï嵯ƒ³J©ªïT¹!+÷%vAÅRY-äšü~å++æ¿¡ÏuJ|SwÍfs%¹yµ²áj`°®èõzh­i6›L§S0n¾ DT)aÚJ’ú {gù§ˆú:É ¦)yžÓl6]^Ci­âûÜ)ð¼ó`æ*½—YKx¨ÙC™‹kžJIåm €jÌÏóœ~¿‚ÉdÂ`4ÄZ8=9c{{›ð>øànݺÅ;wØÚÚ" C¦Ó)Fƒ¢(øÕ¯~Å_ÿõ_óùçÏèöôˆã&2îÐloEmBÓŽ[Êptô)ãñ„ñÈ  ‰•† ²¨ G›)…N²SA-?±ô»/êÖÌó\k5%-`¬¯´×K‚°9'§ÏØÛÛ& £aŸùåÏùþ÷ß%ŠB†Ãƒþ)c&ãlž:ú@–‘eq‡+j4þz ë b# ?9 ¢Ð9…aF¡'äz2Ãú>c™!”!- `8b̦CŠš6Ƥî3µ¨ìw¬‰ÏϪ…/Üßâ>BJ‰ €¦é”ݽmnÜpâçŸÎÇØÚÚ䭷ߦÙè0™dL§ÓiN¯ÛBª´¨òȾ©Õ¼Xú½t«‰.=çªýÇâд¬º±~m–³ÎlX·u[·ïþ‘û>,Ph˜Œáßþõ˜{Ãèba¶É2‰ÂI¿PþŠ¢—ü˜…M­Õ“3ìß5øþ÷{lïÎÈòg„á![ ·¢ƒµ «Eµ&¾:íUžûmo¶^¬âµÞÿU_ÿ"þ×õðÑëË] n®Û—ë/ÖB¡Íâ9×¥EC=h° e ¤˜+²”œWÅÔÁ«„®_×ñqÿ®Ÿ¿²ï½Ô|©™§œý/Ú¢8ÛûÚcÇó,nVmÄ2–€­àBðöÛo³··G«ÕBç¬@ åm[tU-/e½ºsn!Rx³L¬`%©SK[aȲ”ÑhÈx<¢Ñˆ‰â¥äyVEuœ³dF–§ÎZb–òùç_$ï¾û.››[DQÃo®|¥:¦RD$IBš¦ŽpÈ „¨ IÚà*»K›žýý}š¾b¾¬–“R…QUÕZU/×åòo]þîÁ$!„ÿN I­ªµü[Õ¼ÃëÕþõ@å:ÙÈ à¼ŸÊ ikœ%Çp8äóû÷ùá~ÌÎÎNu_”ïU©_eÓo­e0prrB–eppp@è«o—ß[—°¬ Ð]üìÂ[\qrr‚1–F£AÇ(UŸgª­ö UÆ* sÙŽªÒ—þëyž/\£:ÙS¿ÕXë-¼ò,£È 676ÒÙ{ͦS:[. ¤(ŠJ’¦)A V¬sV©´ÖÄqL»Ý®I’Çñü˜–úfÝf«ÇÌf3Úí¶³Tó™N‡V«E£ÑX°f¿GUö¯;Ÿ”ç"˲²¡®$©+Kª¾bŸ¿n+ǼJýT{Ÿß'¥Wµ}üª>³ÌýÁçÆÔ•QÏ'^Ü'ê×) C®]»Æd2áÙ³gLgÓjK³Œ0Žˆ› ‚ p9Õ5Ÿ÷£åu˜±–$Myrø”v«E§Ý! ‚…ì¿U­¾îv+EYAë<çüÏspj¨N5è§>W—*Ÿ2l¾$øKeÜhríÚ5þýÿöxï½÷xû­·ØÞÞFJéæÃéŒÆfLžf|þÙ}~ýë_óÿþíßr|z‚¶¡³1ûw ãT£ƒŒZ! ¬Bç6:ï0›ÌÈÒ>GGCv®ƒŠa ÉlŠ.¦ $˜c „U(«Üï2GHë ¯TSeVZ>òZ”uk¬™‘çcn\¿Åæf‹ãgO1:á'?ù3¢(äè¸ÏÅÅŒ8¼¦5 ­3'(Ÿwàl}’ÙÔed‰ÂÏó¡Ÿ#’Ag¿$TF®sfÉ9ÓäÃ)ŒQX›bÕÔû""I&›’ætß¥Ó i·"§šÈõܬȂRÒ3*~î!¬sµ¨ñ÷õj~q)GóUV×â¥îµRµaMF#RX2ÒlÌÎv‹n]|úÉ'LÆÞ½û6~øCšÍ->»ÿ1Ÿ}ö„<h·÷Ä¡|GµÀGدg¤-ï¹K{d±˜m!ëìµ/Üë—¸Ï*ÁÛG¾@§Ð2ð*äµ²aÝÖmݾÛ+lŸ™c®e´Ëká7Á`Ð$/zX:`#(m„\}`Ë€gYÜSê-mFŸC8Ø¥Ç_f¢(åÊRL§9LøÙ?~"nX1Fª „Úè ŒvQ¯M ¼¡Å|£úU§ö[ýoâÆ¹;Ÿ×¯YI\õ½¯ ~žlÔ>g£¸ Š”€ØrNÀëöWëCõ¦Ó™+u^£s€ÃÝ–JÎ ç×髸|ø¤»6šÜâ(¬€’ºg{i;òe³¾þóñê †µ. &¿,Ñ`Ý®ÿe]\=ª<ùc_ËCPH‰/ДՎϳÒJÓ”FÜdgg—ýý}”R¤³”^gƒ"+|P©ö~çû꼚õ€YªÊ~cêUõu`Iâ+µ ƒAŸÙlJ¯·áC~#—càA c Zž,ðàEš’å9I’rzz®ß¸ÉFo ©çÃotåm«u6³˜jcÆÅqE˜ŒÇc’$¡Ùl²¹¹ÉF¯‡ÒyÖç9q,)Œ&ð¨‹óÌ•ó dï¼JÑP)4ŒFí¬<¼õÅÅq£ÁÞÞ›››diZ†®ÂË¥œ‡tõ—¿vÙÏìRˆÛb?^¯‰¾<Áa+Âw™T}ñzçùùåkG£ív»º—i–2™N"IS‚<£0.ˆ¶$2— «:!¤{,Í3޽íÞt6£ÕhÒnµªq«²ˆ«[I6ø¯ª1µ*jqå÷,Çl)eÇœ»Ô ò7oÞâOÿäO)ò‚FóìÙ3¹wï§Ç't»]ÎÎÎøøã9?;c0Òîv8ØÛçäbŒˆš\»I wi¶nPÈM€±‚¼(€.Ýmúƒ.ºp™T͉&h„AÄ8ϰvÌÙ`C_ì­Â`m†NÅh |P»Eˆ!¼m•(v؆œ+ö[0Øè½KZþþïþ+FÀíÛ·ØÝÝáoÿÛ?aŠ0h·º$™ô*9wR% Œ C¶EBf&XÆ(%ˆ¢.J:páB½‘ÆØ„ Ió ¤š€HAˆ1 ÚLݺ SH²²\5"ÂFH§š@¥¤‰¦Ñj¢@)‰¶Æj¿þ\TËéuÛ¥ŒËùϽwKE­-×{ÊŸÿù¿g‡Fd999a8è³ùá‡Ü}÷mrOŸ0ž¤È Mv¢A #kh¤•Þ$Ûe”­žw„»\edŸ3W¹àé2l¼D¹ü†z¾FªÕúÌþXÞë¶>ù5´1¾ ÊøuKIÉ5Ù°në¶nßeÀË¡Òv É /ùü¾á“O EÚ&·m2„jº A&~3i*ÿ¸«&ë-–² ±«L+Ä«m[J=sxåç •TŽÝ¶!ÓIƃûÜý£[t{ŠVk„SìèùŸpÅ1½â¢÷ åJ‹†¯êèߤ Öox½j£ºü¹Ò®¾U…zý-sÿß²ªaÙzC›K6Ë›«2Ъ¬N¦¶1ªû^/ƒbu0{hZ~¿0žN™prrÂd6c0EÎw])… ÍQ(EEU€h0DAšÌÈó) Šö÷v@’ò§´Õ(ù¢(ªcù܉•œûEÕýÖÛVDQD>Î}eÏÜ~dÙsýy„W™®]5˜ ”˜¯VÔÁx9ÿfY«uÂòw©€|oÉSžëÞï•ô¢Ÿ½c ­ EAÔùÑ~D„•÷¯®ÞÛõ½ÉdFªé Ì\!SÚÕ- *Ã#Q'Ì߀º ÓÉÉ1Y–ríÚuvv¶+ €GXCQä$É cBdÒïóèÑ#â8fs{‹[·oÓö 6¶´ÈPUhuQ䵊.ëðíÖyž†!£Ñˆû÷ï3NÙÛÝq^Êd-ûDéÁ]^.cÒJ¤]Rø?ÆÎ¿ƒ„#lŒ·úío˃h6›$IÂÅEŸV£éË%ç•ÌåøZ*6Æ ½m…mk ¹?çaè®iº@èßþö·|üñÇìîí9+Ž0¤Óép~~¾p­êãyýÞ(7ÁåÆßøð`!ãñ¸"3îܹC³ÙtdV£Ál6cccãJ0)œ…Dé,¤\t>ýôSÎÎθ{÷.~A§Óakk‹ñx¼@:±Ú&®º>fü¸j.ªÛ‘”ç nqrñR‚ƒ…Ñ $V:P¯ÕiÓ°‚[×oÒ¿èót8!™ÍªqhùøêÇò¢ز¢8 C¢("INOO¹}ûö%¢¨¬D–R¢­E(‰ÉŠ…PܺeY9cF´ZÍ*”ñuæ5ˆWX!{Å*yž“¥iu®êÄØUY'W]ÃÊvËÒ4©lj…t™0‹}y­0ù²ÝJ…·Á[°©êÚ½Xy(*µ‰WgO´ÛíK*·ápH’¦4ÚŽ„-Œ®,ëÅõµ_}=]Zå…³Ð9>9a0ppp@«Ó&n4Üü  6/vÞWC@ʲ‰«×›BÈùÜ¿¤Ú3ÆA£­v‡ó~Ÿýý}NÏÎÐZs||ÌÔtzÜyë-nݾÅÿú“Ÿ°¿¿O’$üÑ÷¾Oÿ¼Ït:å—¿ø¿úÕ¿òìðÇGGÌf3Œ.ˆÂP¹`çÍ- £ª ÄUd¹fcgDDì Ht‚Tm&dzB` çgÓiBcdØ ›Ä¢ƒ²£Ç&(á׸F‚Èá„vË’$3°!R´iÄ !sŒÍ½Wàçd•…’‚e-–€óþ ï~ï&½Í˜‹þ1N››7obüâÿBšš½6y‘&"@©ÒVÐzÌÅù§dö­N̆ºÎFó[ÄHÑõ8„òꘔÁèÃ!,SD EñaÙVÏ@X‚ BJJºÝ£þ)Y”G xùŒ‰x IDAT¡wi]TÜ@M®2R3£Ýé2±&@¢+» ñ\Õ¾üÊþåndš °A¥ ˧D±àƒ¿6 ƒá˜û÷?csk“Ÿþô?¤CúÓ!÷îÿ 2 i…[!GÒI¡kÊ]á—#/"½_p;‹ßiž‹æ¡«é° qY•%áæx‡µYã,“œŠÔÝ·Öù‡®É†u[·uû.ƒ­Ì-#$:\\<|0%M¦ØFÛ¨Ð|+R¿;™@eQ‹+¢å?W>^ûyÉñ_å¼­E0ϸ÷Ûs¶÷{lïX5Bª1VÍЦ_é¦eݾâàÛxýÊ Ë¥Åþª÷¯ƒ®šÁË1WJZ¨ÙÿPÉÔ—É¥º²¡~ªóc-ã锓ãcNON¹{÷.Íf‹0ˆ*ŒõŠy(s,êß³|/S§®…0W×^...8;;c4žpó–#&“É%åÙUІåñ¾lY–1™LǤiJ§Óass³R6”UòÔ@þúœUöÒÕ‘ÔÏ#ÀÉÉ ‡‡‡ ÍfeóSú­/ßGåõ)/àÚ,€„âŠ|ŒzŲÚkåf߆%å$àìüœ<7üàý²ÑÞàÙ“C²tx®:Ïåµ3¾ãÕ-ËÊïR n4´Z-†Ã!ÆÆã1NçÒ÷ ¼‰ó÷ÿ_™¥…OøERJ&“ Óé”f»éúÖ·¼þú¶ì„ꥥõK݆l™˜{R $’Ÿ7Ž^&pí»®ùÖ8‡ŠDÕlooÓív™Íf—î•çaWÏq«ÚÁÁy‘óäéÓj¼D óÌq…uZy&âØ-\¿qƒ›·oñþ°½»Ãá³gä^áñOÿôO|üÑÇüÏø'ž:K¹Y‚’’V³E¯ÛCIQ%e]¡[ó ¿^“Úx ,Úh¬ÉÐ&AØŒ$+HÒc%EžåXqÜ fdYÝ"IQBQ 2AgL&N da Ir3Š(ÜCÉFX$ #ŒS@wœÚHQpëöÝG>åüâˆf3æéã'<;>g6Ë1º6Ò (¯–,”$/4J 'Ù)§d9L¦‚œV´ ^¹(1XÒ|D’]€œaIQFÈDB!50á®oÇÄAHÔjG ¤,°¦Ö£§˜ÄY^j;ÈœþðÑE Ed„TR½ª]Òk²†HÏGžøÉ™Îìîm°·¿ B3 xúô ûûìïï1÷ÉíŒ_Ü'I4ÝÍR6D`Ê5€qUÖóÖ~õ_Ë^¶B*mÊ*t«Æµ/ŸÙý{qïakj³ðì5Ù°në¶nßÙ¦W° …Ržüî)îzS4±VùJî&88æ[,ñ³¯»Ö´¯;¹•\Ü$l͈´§šÃ§ŽBnÝ(Ð99Q\²zSÝëöÝÚ|Õ•ój·ÅÿwÒH몳Œ½\Þ¼\ekTßd¬_V‘ ÆW–W!°µMÊ*‚¡Z¥”Up¥ÖzeVÀ7a³´¦ú2äÐË>þU ‹UÕ‚ £ZC–„‘aˆD€6‹/±¶(gÝy.rÍh4q>ù£ÖhÆ£!† Š-»Uç¤ìa.Ø,­²#Xö–·K–:¯¿J7UODˆÊzgÕ1;ß]Kš$4›m¤T$ÉŒg‡‡áúc£Ñ¬¬D¢(zþŒá«¢u¡+Ov±¢ß_º—æ¼U>ï/ÛŒ-A3÷JgÝ0™NIÓ”f³I¯×»ôÚ ›Lg…fks›[·n/ØöH)µÚc …¤(2@(<çÀ¶¢"ªï¶Ò¿ì –ñxHš9«… h4•ÒÄøÞ̃î³ Æã §§g<{öŒ»ß{—kׯÓjµ|5¦ÄXíɲbž#‘e dH .}uriûpqq”’ƒƒ¢("Š"߇«¾¯'ëä‚ñI%h»0öZfÓç}Æ£ ÍF›í­]wr• ­¬ëVeß]’ fáuZkÆ£gggœžž1ÙÛÛ«LÍ’åÞ‹,õêvÁ¥ÒÅÅý~ŸÓÓÓ*`xcc£/”R cÏY½Õ×Wåžûää„gÏžùûµA§Ó¡ÙlVÙ/ 0.ôÉ¥jæUù²Ò²ÿªù@kMg³Ë`4ÀX7MaL«ÝÅM³Ùb6KH’t‘X(B5¢ÈÖˆª’XV^”!·Íf)%ÕPö·úw’J¡±È™U×KK—28ZJÉl6sÖ(Yî^k( û‚¹óë˜ËË ÿWÝH¼î1•w@yµ3ow•Ò«ŒíÖ–cŒ#rË<%±Ô×¾ŠìŸï ©ð0Xªy¢$Ë÷÷÷/)rëÇ}µ’Ó¾Ô÷–Òsh­¹uë8>;­ G–ÏAý>­Í%)YŽ›ÚhB¿V9ï_Týq<#´¥)ÚQƒn·ëŠ´^°W2%i/¯™JÒ,‘ þ‹@BIÞ{ï=Þzë-~ò“ŸðÖ;oW¤™P’O?ù-¿úÕ¯øì³ÏÀZÎOÏ9>:r™ÆÒl4ØÜØkét:$³AP2 ’¤ ID´ÛjÖ„6#K&äéa2”°LF9Ø¥X‘`DA³¥h´,Óé9IrÝCšÌÈŠ!™~жc¬…í­ë˜|ÊÉÉB%Dq“Þtº{dEŽP!Bh¤…)R¬‘&gH™ðÑG?ççÿxÈÿ÷¯?£Õêð×ÿù?cU›g‡gê†'šHÙÂaJZô)Œ!KJjò¬ÕS-ãrfgèÌm·CªçEAå GǤـFœ¡ƒ Bo+éÖËÂûrù`VŠ<%,–”,0™%º@› C†PÄ ¤lcŠa¸KÔØF‰¨¶V‘_Ÿ5<§´i*ûA’N˜L.xç­ëlÓn·øŸÿãSŽž=ãÏÿÓBH‹”‚ã§g|ñè,ß¡ÕÚ% 706@*åm³¾ªëÕœ ¤´Ç£êVÕâùVÅWSŸË{wqi¶&ÖmÝÖí;Û„'”³LsxxÈáS˜ Áê.˜VÍ»ÏPÙ]ˆÕáw`)Leë€ÀÖm,×gØï1A«¡r† †Ø"Ù¡Òû¯Û—ëG¯±Éx°øMÛˆ !*;­5aAUi«üD\òe­¿§Y‘Ù°Š|Xz.^ÚbùŠ,_z{ ˜YRj-Íf“ÝÝ]„$IÂÆÆÆ%âa•Oyùø×u­ëŸ± â\ÕW¿lÿ}‘}ÔUÒüº5Là«ï£¨á¤¾Öeç¸ìgн½}· T—ÑjÆ#]UNžctNÿ‚@q~~N³Ùd{{›V«UÏõ ïª*U«H±U åWwíÊ~küBÜVU¹«Î¥Ë0Dqàs³™«ä‚€ÐKÉË ]ûœŠRëíÈ0%%Ú?¸L¶-÷)æ!oåy(¯¡}E%<ÙgY OF)¥Ü÷QŠÓÓSg¯ÐjÑï÷«êÆ2v2™gáfH«ÕZ¸ÖJ*§1Ôókvzz‚ÙÞ&Š:í&’‹ëKY–Ö@|é«/W“VåcýþÀìÍ&Ýn—RªÊÇV”€‡qs´Ö¦ªžï÷ûäyN§Óa¿D—Aÿ’H(³$Q (ÿH)±Æø&³Y•3°µµUUt—uÒl9¼L6h­I’¤n+"Ço’gÓ„d6c8¢¤¢Õl­Ün/‚ߥ…¯¨0Ö"*{-ã,‚üšË` üçŽÆcÎÎ/8:>fk{›v»Mì+eËëV¿ç_¥»ôï÷ûœŸŸÇ1Ýn·º/K›·KDø Bª>Ç çäÆááaeËÇ1RJšÍfe½uy¼¶WžG뫉—7òËÖƘKª¼:ø¶jŒ+¼MËÙÙ)2 *Pdgk‡ÍÍM„µlmmUaÐu¢¶>ßVýY)´Õ öFËÏ1ÆT$Œ”²º¿KeCèÞ{= Ã\‰X’¬išVê‰8ŽÈœ<ÏÑE”> ´´$cµõË×¹Þw@‹})à·>¯/R_~ÛP~bæ¯aýs®Ê(¹ÊùµNH—ötîü½ºÕÞ›²æ]¾ï¾©u¼»&A•¥Ðív ‚€ VÃòÚfþñRû›úúW*ÉÎÎIž1žL*Åqý\Ô‹nJ«®’x¨ì&n4(jd—ö kÝÜéÒívçãXíû•ë7i—®Ey~\(Çðj]*dE8­i·ÛüÕ_ýï½÷ž#ד”ãÓÎÏÏùÙÏ~Æ'Ÿ|ÂG}äíî&\?¸Îk7˜Ž'袠7ÉÒŒíímÆÃQ¥3í @…±·½š«V+›B1Ÿ“]!CA âFDÔP 3Thˆ›šñtH¡ÿöÞìÇ’$½òûÙâ~·¸±æžµveUw³›M)‚‚$¢ˆ™7a èIÿ¤ óB¤D( gDõV]ÝUYY•{ìqßÌLfæn~ïÌȬb5[oDçR‘7üúu7û¾sÎwÎ1Uý’º^PÕKÊú #ލê3ªªf2Q83aY<ǸÃfÂx<r_Cƒ0™P ¹ X>gvñÿ÷?>gvü„7vØÝ¹Á£/¿âáW'䃻ŒF;Û~žŒ5³SŒ;ŘHÙ`j…޲<¹£!,ëŠÆÌ8›ìíÜñ!ÖŒ©vÉ|q¢d4Vh%Ñ¢FØÆ_gqÎ \Ö BTá~p”eMÓøýYj ”Vˆ¬ÆQPÖ ¬kÀH„"Õ.¦.ÙÝݹ:YßVú&ÿN´˜h×IÇb1CË»ïÜáÖ­}†™âñãÇc‡‚ß~þå¢&Ï'ŒÇ;h= ±ÞžkÓyq™CÆë2ºïëýÙÑÚ%­¾p¬ Û,Ä4»!ökɤ¬¯IÑFõJÌášl¸>®ëã÷â8zéxù<øÃG²A†‰†K€àp·þÛ¤lM&-iTÅ‹gGÏ7&85ÇÉcžlߌl¸6¹>6(ÑûúåË—-൳³CUUÁSÒ*Jʈù6GQk!›¯=Wá•QWy–Ë%MÓprrÂd2¡ª*Þyç¦Ó)‹Å¢mh¢ºrSá¶ZÔ}“ætõu"@bŒiÏE¬dZ|[DY Lnj²W•d.ñ^…ëh4òÊëÆƒ§« •RŠåbÉh<ê5½óù­5EQ´U]ùÏçøø€gÏžµ€ëîî.·nÝZ E*ñ´Íp Vàî¦)šoƒpð…¾Áë¡’¬%2…1P–Ó)X?Íp~vl”|Èo>Èxo_¹fK„·/Xñ¯‡=_åö³‹Ó P˜ÚmĦâMî)%MP5I!(ËÊ‘šºf6›ñäÉ>þøcö÷÷ÛŸ9›ÍiŒa>Ÿ· ô?ú£?ê… [kQ¬Öà,ÚL GCæóY 毪y•TÁߨ$÷¹k¯×"€-Zg|ðÁ‡•zMÑUü§§§Œ'ÎÏÏøüóß²»»Ë½{÷ØÝÝ]hR§ÿå}k¥T­¼Ì9BV Û[~]jAÖÐä¥y3)@¿J@¬ÚÄÍf³V¯•B) N°X,ùõ§Ÿòôé3ª²fk²Õ–FÓ锦iÚ÷Þ­Il $^¡â:_q)ý ¤âWŸþšÓ³sÞ}÷]z!È´¿1›“B·oßáoÿöï8>>a{{‡½½}¼š. :VÀù J*Øt‰h³GÂ{ùüóÏùì7¿iƒ'[[í¹¯æuD‰ÛH$c:‹®Ä2nuJkÕÆf•D÷_Ý÷Ç©)D6 v–ÊtÓÓéáàVùòE/x9þüTͼJÖ7Xós­m’”’ÅlÆùù9ï½÷^ `ÇÏM:ç•òt¹NqÝN3_âZ¿â31QJ2Ÿ] ¥ SYOíÏÏßÝ):ß®í‘hü3õŠûÕ«i°òÛŸŸˆñ¾Ø™T\\ÌØo! ÷ŒgBà§ÅOÝ9PBùÕ/<›}ð[´™6u] ­S¯O28þ¥ôQorÝ6YK­)çÿY›>È‚pÇgl±\L·§½µ0­ÿz$UOä´¹]­W#¾X,|ŽƒsÜ»w§Ïž±(–>Gbeâ+>oi`ûj­(•ŸPŒÀ| ÐKÙ½VY–­}Ý:aò*ë§îùH×צ©±B°»¿Ïé¹Á~ðà'''üÕ_ý'ÇÇüâ¿ðÄu¨Wøà>7Æ8êEI¦¼¢¾ düÉñ1Ó­)uY"TMãÉp×M*•±··Ç`0 (úÄ•’A>@fEÅÅyE¥ R5äG>©jœ¬ÙÝϘÍ/XÏ8=dgú./ž t͇vY†/¿|DežÓTCÐ猇–²œ£³»8†Ìçgœ_,Éòm¶¶2C¸%æ,OȳŌO¾ÿ>¹Ôœ-9yô”A>%˶¸yð.Ö „.¹˜Ì–åsŽO‹i–äzŒ‚EqˆÔ%E9Cèœa2ÝÁ¸Ž(1¶äËÏ¢f¼•¡³šL)¤s8ç' ¼PI`aY³³=%ÓŽª,¨ªSûé‡Á(c4²³¿ .f Ül†1޲p,Kœóu#¢BªH8¡õÞ2JÖáD«°BkÅb1ç?û³?¥ªJNOù‡ø?¹}û6ü1ÃÁˆÆþã?þumx÷;Á›V´ëBñyDß–ßeS’—ýY¬Aj"Ù“Îz2®Çt‹k¥ëãú¸>~Wà{\³\ýŠ5´UÒZ°õìì(Ìi¦ÞpbÍà—Âßà.¼—®h;^gX,ç¨Ì 9gÇ ³ó¦ÑèlŽ“§ æ8*À¬ý±w½?]šÄ•xòÙU_/ƒ¾n€U?}ùfWñõãÁWÆ;Gäˆ\•ÝùV7æMïíªß/Þ´n£ 74LW=Ÿô~I=„Â:u†‹‹ ò>æàà€?üƒƒýЀ'*¥ðçÕ‚®mäì7ênæ*QæÙz˜è&uö7`xZÓ áº±&…Qr=#P*¤ÏF †.æ‹¶Ñ!¤-‚zyž#E0ˆ`8r|xFQL&NŽ‘Â2h¬_jʲâü|ÆÑÑ ‡‡GìîîrppÐæE(¥‚?øÃÑFÞ3‘e¹e8³¾ wî›EdÀ"d°Ðl”âT‚] t柣­É˜—ÏxüÕWH©ÉTîâÚ»+<ûÑO^)… @¢‚ºªìʳԪŒí.RÉöù+Ïñk¶®68ÔûK$ÓT,—EkÃ1ŸÍyñâ%BÈ–ØóD…¢,+ŽN˜nMyïÝ÷ØÛÛGë¬cH]|›¦áââ‚,Óܹ}ð–MÖ6Ôuåó0’ ç¼ ’–Y±o°ÖPUÞìλÞAH„òêLk¼B¿®Š¢h3Ë%OŸ>¥ª*¼ÿ>·nÞdç¨ÆÑúMC²êºÆX‹é)›`²²(8:<$Óšƒý}rí§=`-*p®ý5½—SBÎCY–,—KL¢k)ÑR©9‡‡‡Ë‚íéJŠV¥:›ÍZXiM¶ît}Åm¸ç£"žRÖÐËÑÉ gç¨Ls÷î]`Þd ´i¿H‰±yÐ)Äc>Ÿ³\,ÁÁîÎ.Ãá¨%â—”¢µˆ€)l“ýPÁéù_>úÒƒéÓ);;;,‹¢]ƒ¤”èD¹ï\WXÅ "¿f¸µÀV—›wÞ®%9R¢jH\ÝK£ÍÂçmܺy‹¯Ÿ÷÷î`o^»Ï¯“xËí'ܬÖ–³Mm8Ø›r~~ÞÞËBÈä>\Ém¸¤±R ¬À˜hÓÚkέ×ù— !þEõ”ÿì ¯ËîÛ|N"(’÷÷÷©ëšçÏž·VŒ©` ®¹ë9jç i†Îjœ†ƒÇçèâ₲ªüDÀxLUUŸž`ƒ…”ÝšÖ4 555*üÙÛ‰äÜü´‚Ç^­él%Mø»6S$Ù»ºûÑu¡Ñ‰-ª¿}]oz*}_§ggë¸ÿ>üô§?å§?ý)Ö.ÎÎùàƒh¬%S~jD¸ %NPÎOª` ØÔh¥z>B€qc%*‘ ¶PÙQe›yEºdn€ ö4Ù`@6ଟüÍ9–!-ã­!g'_/9Ÿ=¦ª 5B&[P¥ç'1vH–WèÜPÕ³ùc¤¬9;yÉÅl‰Ö[`Ϲ{ïf'Ì—GÌg_sïÝŒ>ºOS–<ýê1'Gï½û1¿ýâ˜[7ï"E8Êú†ìœùò9eõ) euŽÀ ¥C*°T8»ÀÔ3l³DéÜ’by‚Î TCž‰¢±aow)ƒA†ÖŠñ´no) o-D³AÆ`8 ¬ËÐsx‚ãìdLØÙ¾O>¸Ápx€C%d©ÄZñšçt ú&¢­€SIGUÅwïî3KŒ]òøÉ#ŽÑdÌ{wiŒå˯óäÉK†Ãmà *Ë[«0ÿ̈¶Vè ‘D‡ö5Ý÷ÉW@çUCí$ÖçbHtÀ£¢”ŬEºzI®v6ü]+ºpïjk™ðϯɆëãú¸>¾SÐ=2R¢V¼‚pp–K(æÐ”S0°C?ÙàLDÆ=ØæËjÃïôèà{N¶e‚P>hªqÔµa~!XÎ$¦0.pâDB‰|ߺ¯Þ˜› ²ä¯[ëƒ(…è6'6lÈneó žá‘—ÛkŠÇ×ãoWêKüquun÷óßÒ3×­ºæ¾žTØø=oy=Úq÷׌O^Þ F…o÷«±±qáÐûwŽÇ£6Ü©, ²< S Û±&x~Š®yhí4Bèc¨ÈZ°>½ò¡é°ÖbÓ?wÑoå*Qá»ãÍõ¢uÝsïÀ‡±`oŒNOÏ9?÷þáø‡?æü4¦v}Ðk“Ï´¥î›«­bc@h×x¹WPEßd ÚÜ$§ÁÃñR´¾üB1M9<:å³ßük y6…Då½èe¿YŽ ¹á`Àx<â‡?ø>øãñìÙ~þ³âøø˜¢¨˜ÍÞNIÝ8^žprzÁäð„Ųb:òàÁ÷¸}çûû{()˜Œ1q޼³‰º8Ž+åU…—°WݳœÅÒxÂ7ø†ËÕ`[úãÅ™Ê)—Êi´ÔH!Ñü•!«çJ¸HX¥ ê*ç-•„Ã^z£ˆÞH¶ ϶îJäoKòºh¡íL$Me°óæ&!ýñä蔓“³¯¿5–û÷Þa2ñªÜ<øW³%dømš†ÅbÎt:‰ÎiŒ‡#ÎÎŽiê ÓÔ¥ ×d¡kQédMñDäñÉ RjvvvÙ?¸Á`0lUéi°Æµ>ñeY’ç9OžŸ³½5å`Ÿƒ½}2”x‚g°!C¢.ýŽÃyॕˆ°öÕeEY”ìíîqãÆãñ^w•´×D ÙŽ«ƒ·CHÁZÓ4]8uÓø5THPÐ4†¢XòâÅs¬m˜lA8jSsvv†”²Í;h›ëT,»Â@&ë–1ƃR‰•M´súì³Ïøú믹qãŸ|òIOÉ{Ù½·F$»ÕiÙæ]|ñùœŸ •æÝwÞeœX‘îOvE¥-úkŸ÷^ÓTlmm1›Íøü‹/¸˜]ðÑG‘ç9_}ý5ãñØsBöšñ–Ðsý•»gëgl÷¹YKÝÔ~ÄZOÚXÛ+g6åtxr£?}æß«'ôÎNÏhªS5ä:Ã65Z &“1ûüêW uURU£á°µÃŠau°D‰9#1 „XŠa°Æ–Ë%UUõ'4âÔÏJVÖõ‚ª#‘×ÑhÄ‹gϹ°†óó3Šb‰Ö*ÜoõF õê{à7œ¬ªÏ/û¾o£îm'Ká¼53Ž˜ÏçëÓjoò3…ÿLg©Mã÷N)Ûû+Úɸ+ÚF}§ÝÔ+>¯Ë®øvì¡ÄÕþ.\ã¢,©+¤>~ü˜§OŸP–Z«Vèòú÷zu²¡g³Öl­µŽ„z^ Æ¡ ‚ŸU® GH©X.—ÔUã­å, ý„Vžiÿ¬*±•¿c IDAT–ÆY_óK‰Ð^˜âZÀ2™´L²ÖÊѰg»Ìì“vþ[Œ1àOþôO99;åŸ~öÿÒ4 ƒ<çÁƒ, ”¨L¢…¯¤h¥ýZ+Aæ΀ ÂÛHç   ªj+°LÈòлTv!ØWŠ!½¸\Ø·3cGY/(–”MMQ R¡2/bx÷½ïáì OÏ(Ê©ÙÞÞb:ÕX`{[S• tÓé˜ñDp|tF]òüé £á“[Ò, l!8zþJU|òÉ-Þ{›éVÆø÷ŸRÌjþó?ÿo¹w÷^þ ÛÓ)Î)ª‚ã_Ñp¢Dˆ ­ ]¾†’ dÃp ‘lYR7¦^"l‰kf¸f‰° %ÃÜ1ÈÂ:0- ŽÆ6dÃã‰fggÊ;{Hå˜]ÌÛÏÚ’ù|ÁÉ©A)Íl^rôr³C4÷r›\¾Ã@탠ä%r2ôÝ]å+áTõªUì ÞºD ²‚jÆñáCþâ/~ÌÍ3~ù«ÿ‡ã“#¾ÿgsãönìð÷ÿðŸxúô„¢ô)8d‹ÜˆèK,bw.pb=?ª«àåÖbÑ‘‘CÈ)n’üÚŠcŸ@_d×–Nɔպ8¯guS¼ûÔ5Ùp}\×Çw¼¯Ón]|³i95 ”…ÿj𠿦{%';PÅuþv¯ß\DYv=&÷jŠë?Ç­ ¢÷ók c6]ºÅ½E‘þ&Í^ïpWk¬Ú†< uz›¦)n¶2là×#^Y©¤ïü-šœÐâ쥯Ÿ^Ý>éà’b,\g±¶ Í*¡y÷cJ ë Î)ßDtØZ³÷ª±ïÕs³¡k!8JE;ŠäÜSŸçö÷ô=,Ū½Q ,ùÆÈ‡ „PAe=@ DzX2ÝÚâæÍœž£´BJ±qÄ{ÍãÛ"ð6/©ÍBʈ¦>ã«?Ë~ãÌwé3)Âyù ïÝ<È5Bú 3ÓT¾x´¥d›(%ÚßK!Â7paùmßÛ·oðá‡ðýO>âÇ?ú!OŸ>åúŸÿŠ1šÅbTÞ·8Ñ45ç Î~ùk”’üü—¿@+Á~ð ñßü×lOï°¿¿Û =áÐHGµmžk”ÒmÀòÛ‚‡Ôy·î ×Zµ¶ ºË•ð“Ö>3ÄZËáË’{w¶Èuæ­mY€ÛüÜô×êN2® ïu>Òtк}]ÙNô§Û®Ôu…5ÞEëŽâ›0MïYÓØv?Š`g½íÓt:ewápˆ–ÊÎ…0Áî˺ÂhLVº,–4Æ´ªu#b^Áº_{\¤ôÏÒÉéiðSÎØÝÛg:Ýdƒ'Êœ­=ÈÐ4ÓpzzÂt:åìì”ó³S¤RìlOÙÙž¢•$¶V8Û‚Æuåá…ð@Œ3V­Š”‚Æ8ª²d±˜ƒ³ž<›Œ™ŒÇdÁÃÛïÛA06ƒ$}Îù¶ÓÚV¦oÁ6 .Ø[9!üD‚4uÍùÙ³‹ cÈ´@s>P”e D™€po-q‰ê¶ “Dñœ”RaÅrttÀÖÖ{{{½, ~oc°gbG”âP}‹¿î4aZÌgÌgLÆ#Þ¹á`€–ÒCÎaê@HI¹²–ŠÞDB¼”ÒœŸŸóüùsÎÏÏ1Ö2™LR2›Í¹uëv›·Ò= „së~Æ")ÿâ”Ãañ×MJéAx’)Â6æz¿"Â&`iû«ôœ@c uYS, ò, ÷Õˆá çÎí[h%)˲2kIec¨êš¬iÐZû©œ@>˜@† ÄÆàH˜`“VE_Ù/» °¸æÄM@0&Z+ás¡âßÇÜ“º®qXšºÊê·¿Ý ¾"^+–Y­kÒ÷ÕŸjY¯ÙR2훨íE¸<‘t8>>ft÷ÖZŠ¢X—/}×É“º`Ð@ć1!u¨m½*©ÓÈü˘h¸ì¾îsü6ŸônC/ã’Þ­Õ}þÞÇÁN2XÜioV–å¥!ð齫”J<ã/éáC´fóK [WH©Ð™Ų ,+F£Ãá,Ëü¤R–S,‹½'›»LcýžìŒñ;­ëÖt¡dk¥×ëéC‰(pk­P´[à².vm~O½sï|ð÷¿ÿo<~ü˜ò,c{{Ûìô'Cºç#\—–4 ymô• @H…q%Ë¢¹M6ØCªm¬"T–¬»ÂÛ…÷hý÷hLÁ²8äb~ÂdO“ã[U]Q75£qÆp$1u‰V‚ÁÀ²µ¥©jÉh¨0MÒ†íŒí!U¹àìdé³ÍöròÌbÅ Ï99úšºd<ÑHe‘„@gç…R ”r€ 9 P[ƒ­+„­)–ÇóŠ%Z”äÚál…p œAHƒ”–<lMr¶wÇììŒPÚO«Ì0›Í¼õjQ±, ®„ŸÊœ;2±r‹|¸‡Ö;Hv1õ%2¤Î(¤Ôên`¦›í=!¡VÆB_$ ·+QŒå'š-¦žƒ]r÷ö{»;,f'œŸ^Ð4†|8)9»˜óäÙKœË8¸yçF8‘µbØøèt }«mëW‘¬'¢÷ÿ«ë‡<¯­OݺN4¤õ½ÄFѨ# ã¯v…tAèê3댵Ý ~â‡tM6\×ÇõñÑ ‰•GhÒ"jÅ:@âBÑëÁ0E]ª¬+ùku òÅBd¶»‰bq¨;ãÿ&º×WZ“%ÓBÎ:L°ËRJq÷Îmnß¾åbδ£"Lÿåê8,‰Šå’º6ÔÆb,ÁæÅµÁñ5Ú=ܬk8¿8§( v‚=WYVH¡¼åº6˜¼[kÙßßc>ŸóèÑ—(%¹ÿÎ}îß¿‡eРùÏÆêªï3¬•N´öEÖÙöEÁáË—¾{{»ìï3ZÅ·36LNtª2AÒ(Z’XÛ ¬ÅÖÑÕ¢ÀÕ¦GÈZk¨ëŠÓÓSв丸¸ÿ» xéÉWå'›¦NTÎ~ T¨ðÚ4 ÅrÉ(ØpøgZ0nóé§Ÿòð‹/ɳ·nÞöä±­-“1¦ ,Oÿë$JÛ°ZÎÏÏøÍo>ãÉ“Ç|ôÑGìîl“)I¦$Z ”À«ûCø­¿âsCO< UT}rrÌÃ/¾äá_òñÇsóæ-ž?NÓ²,kÉà8¥çÕ³$¯³^í)‚:Ð:ÎnT!Ó$¶4Æ¢¸æqÐ?R"U§‚)˜&Ò©Àyùé–¦ªYÌæ|ü £Ñ°µ;ºyó&Æx çæÍ›-hf­¥,Köö÷Ú)±¢(z–tÖZt–a£mVBÇï™Íf­Mbj™â’{Æ&9Zz²³Œm¯•LÄ‘þÞT!@„Ì ×­Ë½õÒ]R;v“–þù|uvQú¾Òç#zá÷@¨Ô\%&6‘3ozÄ©†v ¦y˜LµÔÁ+ÚSµçLœÆuY(sþ6„ì ΈðBw³¯ÞòÍö€[ùmØHº××¼¯#6ÚL¾âÇ×V>«7m`Ý F¹rf=U²_s:bª¬K„ôç­«L2á»);¨kÎ\ë…žf«€_úoÕû glW»[Z¶hS5Ìë¹'H¡<ù´2IÜ>3q6â*TÈRy²!^QÔ cˆ³ç+}ëÚØÿÇ#ô%.yùR nß¾ÂñìÙ3´ÖÔ¦!Ïsʺò{X¬MdGªy»:_#F‚Ù¤bˆVÙúkiœC憣m[ÔµÆà³#¼¼OÐUâ„D 9=-rr„µ9EQ2ªð^j´Vlooq<œ³˜-Žò[ÓU= Ï$™†A.˜ŒZ+òL#Å’áxIJ:£¨L=ñVx™`0ʹ{wÊh$øÿ×?±˜9òÁ„ÿâ¿ü¯ØÙÛá—Ÿþ?çü¼¢6Á’é$Cjoñ×dë Z! BX„ DFb¤' ªêœùìé–ÀÉÆW¡Îxá§jTÜÚÛ!ÏŒÇcvvwÈrÍ|~Î|1c¾X´ãUm¨kG]å4ňLNn‚R[h5Ƙœºq Ê ûVO.È„AvëS ®Û—]b×-„ìœ0^UûFÑf¨¿¬õÄ~]Vkø“Ÿü+¤™P-üú—xÿ½üÙŸÿ9USq~>ç׿ù-Bç£zÂO6´{{»â†*Þ…¿é…D»ví½Š|EˆÙ²~b#R×&!â"æZRg¼Jf¦ûe(ímûlï:‰XŸùÀ jÛ LC*'¼&®ëãúønáÖAŒd!um‹úT*©ƒŸ¢^ñ/ª¤ AÉ/7zÞ½z_¤³ëßÛéã¯J8¬ð+h¦hŽDÕ€W™+]éßOë/Ü„iް¹‡á8ZøC"0(gÑÎ`œi72ë¼κõùáÜå—I¤dF¢ûк´Á^“«têÙˆYK±‰§¸2bë^ÿA^rÛ¹•܇·%ËÄ•ÏuõjzàéÍH’648"¸zå­w™Ô9ü7<ãáÕצ-6¢µ %¬Ü/›š£«6Ô—…õuëûÊ‹>P*’%D¬>Á{Òz+¥Ô’žo¿õ`g°%‹àñÆó•¾I’"4K—{Wè´ÛqÜîç‹sõþì/BD+Ž3¿eöŠûÛ­,~![Æ6- †õ!§RE­pí4C´žé{”œõ )œ%Ë3²,CëÄ ‡òa¤Î‘iÍl±`˜¼=MÙ0Ì-“ƒ ãá­$ÆÔÁ ¬í(ÂùDå©AiÕ5B Xò&à.QâIo'dPf»¾¯pKË?­AhP2­ÈµnŸ7l’Á ¥ô`‚Ø ˆ¬¯áݸƒ[å˜_<)ƒFhY…-ñ'¥#Îó¼’q>àÏËvð¿†è`Ôž¶5Áò!@ ÖxOhk0¶A0¦é&H°ñý§°©í‚kUcñuÎÎϹ}ç.Óé6ãñ„ºnRÑ4@­ª cj^ úüÅ3ŽŽŽÈóœéÖ­-„mà…3~"È“¨ñþëü÷ipB uÆÑÑ!GLJáœc{{Êp8hƒêc k»ÂĬÑ­aqº¤Ÿé`±¦ñ™aÚÁO§yc9ŸszrB±\°··ËÎÎvK8ÇçÁ®ûI¦V¢ÕœÎ´Í@€àüüÜ(Ãh<ÁßlŸðôÉ3NŽO888àûÞ:«( „乜‰Ÿˆ‘øg© Zî¯X.±Ž,+‹‚Å|ΠϹuó&£Ñá@K…–Þ£;’Þ.° ís·¢ØŽà÷ùù9>äåËCŒ±ä¹ =?¿@JÉxċԔ”%Ë¢À †äy„ý‘¼rm–CcÖiÕZYE/}'º kHP%$MU“iÍîÎN›Á×§ƒ78<<¤ª½…“LÈR‹c¾X ¥¤¨J–¥Ïv0®$ëlWDÒ!þŒ&!ëD~‹x%ù’B¶¹5mI˜xTÂ{Îcü÷I§Û0hYµÄz5ج”òÞìR´¡çW±½lr3‚ðéõÝD6|ùÑ´KÇÀóðLD˰«Y(‰¶?ð °c©jã.„¤±'EkW)¤ù—Óð6EüÛÿS±þ®ík]ïG´õO*pqB kA¼–ÀdS0+íýÚ®õb3¹NE´ömaÏŽv*Lþ:ë°µÏÜiƒ>»%©+Od¹$¯µR‹­–Xãk­ur²²#ezüR¬é+ƒŒ¡ÿ¥›=wníšk­øÑþ€ÉÖ=êM‚x_xOÌÆÉ ¢H-ºÐ‹þt² ××&ă1uè™%*£³mc«±„r ¾-@(¡ A>œà„#ì²8{Âbá%ƒ@Š,LiÂd¢99.ÉsÃh$yî5Öh†CÉd"ƒ Ðe)K²,§Ê,ÎÔdÙ€eyÁí;Ûܽ»ËéÉKÆ£ËEÉötŲä¯ÿæ¯yøåo˜/jƒ‰'ª$HJ:´òBƒiñ9 ´‚FdzL-T˜@³(a¨Ë3psrÝ€²hiÂàc;CÍh¬}Vƒ‚e1£ª/_¾¤(ËVàk9c,Mm°F „B+Ÿ$¥"— „Ɖ,ìy݃·ç”~Z…dê3N7„Ìo½z¹ÞÔï,[ü@`B lmMUÌøðýûìmo1PCž?9âÙÓCt.ÙÞÝ£¶†g/_ðâð¥‡è|Œu9ˆ,à0´÷fOš*\˜Sìîÿh…*\áªØDJiAê uåå²í­ßœ[=—XƒÄ)<ÔRÊëɆëãú¸>¾ûjoäØ˜rï6«uJì(,]2– ­Ò²–}›!qo 1¦>BôýŠÚ°ÖŠH´Ì°fu~”'ÁjpÎɰGË çê(íL•ˆ@„uhWÒ¸’Æù¦Ñ€ãÔ¶/¡):µæ¦&Ìu!Þ‰T¾m\Âß÷ƒé0ºÍú|lÅÕm”R²AðM•f¢I=Œ_ª÷~ž¼Ú8}ªÖKAÛ4—6Æ«ï»â»¼Ö„ÎÙÖg?Ë2¯oÁT¯+,Z(z(Í*•’€A= lÓó“\™Úsµ™ßn³Úz5Û%y´¥!äŒñöƦĆ Ë&pS"¥ÃÙ:¨‡Ýådƒˆí¾MÞ×›“ â-’Îc>%òVÏÃ%ë˜K;4û6·oïåû÷È&[. …´„ êvõvt9¨ï­1-èÙ4 £á€á 'Ë4JzòéÓg …ÖID¸ëÆ‘gcŒµh=`(Zg8uU’© ¶.“TÿL¿¨hû‚ vó¢jů7I³`& t^öx÷×Í66Lô@¦´W¢J‰il4aiÁ£Ël”:UU‹‹tüú¿Y%+£ý5víû^{'§Ó0áÖ³ÖaWSI¡ÂTžCJÖ9Rj¤Ô]XнÝ]†ÃœédÊp8jÄ–¢Iì¤l’/– šfŠ1 Âyо®+¬5mVCàƸ»59ä°±\RU%ƒÁ€Á`Ä 0Ý«þ˲ ±5©¨*´>}ú„¢X2È|ïÃï1ÌdJbÄ“šÖOVT5¦ªƒ%“_€Dôª çsvvÊ‹—/xñü9'§§ìlOŽAY/QR¶ážgphäöøœÿ¾Sõu´œéB³R)„tœñøë¯¨ëŠ[·n2Ú PPU•'›]$$ÖÆ),½Ë²¤®fó9eY’éc@iÅÅù9OŸ<ã믾f>_ðà£ÙÛÝçâbæ§É”o¤c€©© šYÉ" !Xü[.‹Šå|Éb¶àÉ×O8Ø;àýwßGKO†h¥ˆø7'D[T? )h‚mP õv8¾~ü5¿|ÈÞþ?üƒ"¥äâ₪ªØÙÞf{{›<ËÑIþDoÏ?FÉnŠQJ‰L´³™Wwv¡íýš+ÚSÅ믵öµÅB­Œ×HBSUœœ…A6 Ó>¨þÖíÛd¿ÊÂJ‰‚,ËÚŸk­åââ¥u]³\.;ÃÌ´+`¦Rª%ÊŒ1þ:®Ø¦kRoZ@lÎ'ÉóœñxLžy€Î«÷%=±§XÍs¯&H'c/·JÏ=%¿"!µJ6t pWPÛ• ¦M¯ý&[v»g¹`=H•Zî$õ+×\ôj/Ñ{ÞkhœM EOâ°š›õ»´Sú6&E¾ëóvz‘TÈó ­úö/—õ4ñ~ hk`á.½«"žÖƒÝ‰öþˆ6„±ã‰u'@iÍb±„uämáÝö#T¦°h¤s(™‘e¹¯ÁœC9çó!'lÛŸ 뤄L£s´\»"€ÄÆvvvyÿý÷ùÅ/~ÁáÑBÊ–ð“r~ЧÿlÊ`-œŠ¥ˆ¢+×#«º¦n¬ ô•ïbÔÓH?$„Zµ#òà3$HòÁ–euF]+\ZæÔu…RšÁÈ0™²¼ ËJò\#EÉöt€¤FJÃhdáSç á*gTå%§L&ŠíɃn tÅ˃; æ’üð‡üö·_ð7ó·¼µµž Í´•˜Ú¡Dผ&J†] ļ„HØt^›T‚bƒïsŠ)^*îÖRß{¥¡U^8™píßÅ5¤ij”ŠkÄër<6€‚7VÈõh£tœU¼ªÜcmò¡ÿõæÀÅ*ËÛ³ŽX#ƒÆ9òL£Uu¶µ‰ž÷iˆi ûŒ^îu]óøñcþøBQœžžò×ý×A -‘Rco»õ¯—UÕàL–—/^ðÕW_±3†I}ÑÝTO-ÂÂêÈÛæ¦tnŽ4Äü’õÂÁ Ϙ—KêªödMl†Ã9¤6Loµþ‘L™ñŠ †Ën—7¸…¤ÉëGÐjó_Jùœ O&xR¢ªjö÷÷ Þ/>ÚA%4«žèËå2äpXO †\œ]S¯®Ewx }6» iö÷÷ÙÚÚBë,ó>pÖÆ{£, ...8<|éAæmîß»ÏxŸ·Ù.5nAä–Tq9$„è,Oag-uݰX,9;=ãâü‚;wî°»³‹÷›” )T°íãþíZfÛÛ7z€ë`;S7 ³_<|ÈÉé)ï¼ó7nÞäâüœÓÓSò,cooÑpä3W”êñqýi‰tÙr–!Dµ êŒF£ža*. ¼†R*Lù5'ÚZª·ï:‡DR••Ÿ@1Ö?‡ÒïÝMÓ0QZù‰0YžõÀÿ˜‘P”¥Ic.ˆK ½¾€"Úø¤–\ñ½Ä} ]C]gƒ(Vê”ØÏóœÉdB¦3LfÂ>#zõ§HÈ'^M6¸ö½¤º×W×BlzþÉþc¯Ø\·’‚^fÍ7Ç“¼glïZëñòú×Oj}Ñ­¯Þ¿Ëä µ9úÿÓ4Ãwxtêÿ𿤞ϲ–a¢gÍ2i³Ø¥Ž•ýÂsÓ¿Ù”9æ×Á¾È"f5&¬O‹Š¢D„).-qÂö2焨Ìç{8™ÈPa²¡1éy›_å×`k-:ØñŒÂcLèeKâÅõM+oýëœa2™0ùâÑ#ÎÎÎÈó¼2o­Ÿ0 ÏiK88oOêßCŸè‰YD1c¬1 µij‚ÎÇH=¢v~" K ”Çk戢3*÷¢ 5D©Ea( ƒIô@ùiÛL¢µe<ÑŒ’ÑH!…a4Î0¦ Ë$£ñÉ$ç¤8GIK–9ªri$¸'fX'øÉÿ€áHó嗱ƒeš<ÏØÛÛçåá1Ož>e8·Ò= IDATÌ‘ÒhB;ç³B¤%~_ 9)ÈrÈr…”P× ÖÙÎqé÷œ†QJ ´a÷@û`h7;—Ц45 Ñ"…Fí CpT.©-œ,à_žpf•}ŠE㌷e²ÎõPÞ« ›š¹´QNUjqê{ù¿Ù°¦t©-‘½”„XûwoI6¤Êi¾ËWðÌßDDÓ«øË®)&Wò6l랯1ƒÁÛËDÿe×»Rz‹ ×h¤ Ê"£°u¨Ð^™€C´~±ÿ<4^[¼¼Q bô†J2Ó#6Œ±-0½Xø‚Ó¶÷{ççýºuG8ñ¶Þ_ßÞú÷æñg!V›[—¥+Ó:QYçœe0ôŠËº® kS âþýû-xÚ{¯ˆÙ³ósÞI”Å©b?ÝgäÊzß½-ˆzrrBžçÔMÃp0ôøeéï+Óx ¤8ɃàÑ£¯8;;Ã9Ë;ï¼ÃdkŒV*´„Ær± ,*ï†À_ã:dUÔÖððáC=ú’‹Ù9Y¦Y–…·ÉQ>ìPJ†ô±’ß'z×*õÒoŒ¥¬j‹Zkв!1Mµ;ØžNÃû%¨£C~ˆì‚4Áõ2ü{ñ„ŸæhÖ,dâtÏéé)¿ùì7Ü»{‡¥(—¸rÙ‚!#;lï — é}ÝÖ8BçšÆg üâ—¿$ ¸qó&ãɤµÐˆìU«Æ'™‘ýkèœ#˲ÖþçåË—<}úç“É„<Ï9==¥ª*?pëY–]J²§àzü}—±à'¡¬ñAÇóù¼w/ƒ'#›$#žkK\$¢•Ö ±óYÁ…@ú¦iZ›„h§ n޼ɓ§O’¼ŸBï” Ži]a‚]X;å`ûžþé÷¦Y«kT¼6qR ñççyÎ`0 ÏsªºJ^»ûÙnu²ã’éĸßÉ8³›Ö¯î«5•’ $þ›ö} zùe2Q’G€¦µÔâ›DËÖþÅÿ>”ÇÉ—ô]*_©.±Ò×ÅgƒXoó¦MüÙÍü~ üîº7×9«ûPT{W¶ûUˆ„µú%>-)울+½oÓ:lLËöØXëZë>k-È@¢"5Ïs¤–TuÑÚiyÔOjåyŽ–iD;‘½ø]Þõ€Â¹v‚Í¥@° vÂ2ØÅ|’°¦Ôu Ð/—üð‡?äÎÝ»ü/?ý)yž÷&Œ"1(„@kÝeBIfoG,œÀZÓ’î(ßK»0-Y7¥ß •`2™ uFe<#¡dTˆ÷ôÞþy”ÚO%ÑÀ`0 ®UµÄÚAòŒš–P½yóƒÁ€)Ÿ|Ù>¿yž·9g±G«K‡³ÛÓ1J[îÜÝc2•ŒÇCf³{{7Ùšìòèá þôOþŒŸþô¥( òÆlvÁƒ>D‡óùå/~Àp8èòÙV‰„•ºO ün'É fAØÐþÈž™øZFd¯'Ý”†u×dÃõq}\¿/PÄ(Z¹ïö<.¯ŠöüÐÿJ£ªçììØÙkp¢Ä¹ Ø1Âe§ºüKû{œlq°èç©2(j8_ÂÌZ©ZÖovM!Û©¥›β7E@\Ù dCúß¿ ¥^3Ô£=@.\æËɆn‚äMÈ)e%cè¯ëîpIÓæÞïl’µáJ®D6¸°h[UŸ÷jM'3š*„Á9Ze¨ dƒ@âlÁv½0ñoDO°”õ‡N¬?„"ùÐãç-FV±c<¸Ï|ÐæQ4Þ¯-6Ý¿Nó-#.u”¯È1HGñ‡ù€ýý}?}‰µ–ñ`4*Ý„ƒŸrèjeY²»»Ë;ï¼X>ÿüs=zÄx<  ˜jóh¤JíÙXÌÇã!çç³óá{^M¾JT­rkëÇ·¿Y¬6÷ñF¼|~ÈóçÏÙÝÝiÁ[ûªÜ•W|>©uI ¸§€ÓUÖÏMçúêç›õø¤ ñ¦#’ ƘÖÿ{8òÞ{ï±··Gžç?—v S éû_%Rj»øÚ8ò–Ë%“É„d!è66ÓËeá›^çÃg˂ãc–EÉí;wØ?8hϳîÁâZ똨ú‡u²Ã9ÇéÉ)‡‡‡\\̘Ífìì³5»Šd ÎÆ½Òõ>ÛM 였ž”„H½‘cxïp8`gg›,A—½lÁ0ÑóYìö¬è¹/CÁìbÆÖÖ´1,æs^¼xAYlïn£³Ì×nR`LCcDÏ’@»'’ážçø*Šë,Ïž?çÉ“'TUÅÞÞž·‰H€~?)a{Ó8.Ô Èn²(^»¢(X,§ø[¥sø7u âç•ÄRù욪®[uo{߇IMƒuqO;::¢(½:y4‘õ»€0™#(–EgÅ•‘äˆDRT6Zk©c^̆gß[uyÀÏ¢(õpp-8@òõ畞5“Öº}Þ„HÂè…X#Þ/ÃÃW“³dÒì)2/#|_óZ¬”B)‘ÜæT|@û3\Wó¶÷JZó_¡.î‰h!Ú—Y‹Êtb›Áf+ËëãöëÖ$Q$“Ð6´l ©““«5O×ÇÄ\½~°ñ꾞¾†µ6Y3\˜Â‘$1 -Y'ì£mÛp4$ÏrT¦0³:$导‹t!4œ`[‰Ä6†ºªpÂ1 Áß+•Þ,Éñ³‚Ò¿/# )¤¤6¦­NNNøõ¯Íh4 –ªÝüä×±D[[Ä=,™|¶Þ¸±-ec°hòá­#¡!P„—N“kƒ ÞÛ†[KI],˜TV,¥Ÿî ýÇÅÅMcBÝÜøu]·¿7¦áüôœÝÝ=nnsëö>ÛÛ[<|ø%G‡§üøGÿŠ_ú9÷ï¿Ë›ä¹ÏL 䃬·­¾¿Ù½¿Ï,B:”vÓ ´@i¢FiPÊ<»»»èL2P*N44Ÿ0_T(™SUÐ4çb ÖaEh°¬ã&ü7ëÀJGž«5×€ïê™ gkŒ-3¶·§Ü8àÓO?e>›ñÎý»Ü¿w—L+¾~ô˜å²2FÃ)ÆDà^ÆÍ¡[g]ÀèÈ8)6Û(ýî:ÎPË0+A¯þ‘¢sú5þó“ðÖâL ¶º&®ëãúøý8”¶ŒÇ‚,·HwÉïZvsõ,‡þ¦Ñ)Ÿ|`Sž;vv3¶wNÔX2œ"\Žz£ÛxëK)Ê …T5µÁj›a­ßÜMmZÌM4ˆ†þ»ìÿ·z%C iðbÛ‹ V”oÆØ‹žz¼øØŠu²Á]J6à}“yKï\ÑJ­*zO8Ï5K#±î$^Cnз¥’Ñ?âmkHÄsŠç ” Þúª ƒéêjs³æ•½ñîí,6â—A-•ñÞ76 „B?~¿pab ןU¿f›”þ½híËÁ†°LëXÕöáûû{ìîîbše Jõ¼Ž7~’õàæoHª¸·X`ÒGÐÑSUn"ã^·‰+¥12"Ë3J)šÆòÙg¿á‹‡_v‰§*íôNÿ¤ô“9UYstXðõ×ùàýw׬¹ú÷¯kólÞö™¢aÓŸÉÅbÁd2éY,DÏÚ79âó>ûoúÞÒ€é7mØ\B]fýÛ#¸R75Y–1˜N§lmm‘ç9¦nÖ^Û_/Ÿ=P–%&ì/°ˆ6/6Yç^u+¥h– Ëå’ºª¸qï&ãñ¥”®ð_Ï“ NOÏX,–EÉÁ›Üºu›,ËÃ{²­²Ñ‚Á8ëÃUEÊic˜¼ áÃgg·Ä„RºU6ÊDå‡ ¶Ð ³iÁèYó%€• À½  m‚¯çó9¦©ÙÛ»ÁÖÖ„ÑhèÁŸDU.¢a xÝŽŽØÚšcŒ5¼<<äÙ³§>TZëvr@µ>åþ\cIÖĪ:~øõYB‹å’'OŸðìùsîÞ½ËîÞ^;ÑÑZ$Ó41@Lø\ÓZ ­oâ$€ë“&R)T¦‘ZaqUIm ™eºý7Zk–‹ƒ|Ðû¼ÓZ¥ ¢lH‰ÕW®™îrÂaµVn—Œ×d­NK¥„cZ£¥K[9žøæmêN×Õ»­h…Ί~Yî6‰ ‚ÈF¸Ö»?~U×TMìg¦iZ¿û×Mà^§„hŠÄMÌ&ÈVñ¼Zw{é*Üå àº\·²/¬æjl¬ö}Â.Ô¶RºÎ–-ü¬ÑhÄx<ökcÆTM‰Á¦þc-Q¡”D"©­·_“´¤¥1Æ{þK‚<˰MÓ´!Í147ì¡B œ5UŽûïðƒü€¯?æììÌO¢!}NeòŒôë‰3v#A¶]è­ ¶°¬%0l£³QØy‚g°wÚ(”Ày‡Z  v™©m°†r)˜n q¶Û—Ù­%‹Å ~Z@)²@pÄ}Q„ë›2¶wÆìîî°»»Íþþ‹yÉoóˆLØÛ½Érù þò/ÿ5wîÜb8Ê(«wïÝb4qzzŠCöÈíTÌàÏKöÖ­H`K)²Aç5UȘlŽ5£ GšÑhÄ`0„ŸR6p~¾àäôœ‹Ù’ù¢Dé¦éîõ¸® M JiœPH%F Ý­§¹C–o‘å#†Ã±'¢•ºò°ùÆ<¼7!”ÃØ’eqŒ±sòÁˆ7öý:Z,ç3¾÷à#>xï=šªægÿôs^>?c:½‹RS`ˆ“8Õ'èBÕ;ìe~2¾IŸb½r0ôÚ=îcBÃ\'Ô똢ü³H/êŽr1Ç–à×dÃõq}\¿08v*^<9£ª¶nàUÄ@@ê ×~ ·ù‰or"€@w)B˜ü) ¸Mbå„HÑ0Ùrìhvö2œhpnˆc !ôë}þÃë› >—!“ÇF¡S>àµýþõ¹öÌÖl‰d’ÈÛ «`“\!zçì$ÜJ#wµ"aÓ¯P‡&Ø9׎Ç@´4ʨÍ->áo•æíwa$߃1h/ýÌ¥X)¤X#@ÜßoÃoI"Šò•8ô¼â$„pi³)Û8ªè;úºfR„&)N5"0/zÈw|-ÍO]†ž(¨|H¹hÕÎqަ À ‘ô×zõ™é=‚b-#³fbàV M,æó9ÃA ®d-³š‘ :àS”߀m`ÝF絟çF"o½qÚ|Áa¿³ÚHÔåqôÛ‡ï=øh¼OûÎîßûÞ÷¨êš²,8;¿`±X"U† jylÁ”U?=“²¬ØÛÝ"ÏɹÆÂu2÷²gëÛQ.#:âßE+©A˜±Özõ³|ói¼¨POÜ—ýÜW6,¯®ºémZÛWU£/u$Fšº!Ër´Öìïï³³³ãIÁK‚0ºJ@Ϩ¸N•â«kåêgÑNàÁÔÆyÎ7ZÕ`lèã5iššùbÉÉÉ)GGÇ€àààûûäy$6 qÚ"%y³‰_»oʪªäy…n¬E*?´³½Ã0úøyc°Aݘ>‹m®¢çÞfîФ®ë>è¢$*L;,‹‚²,¼g´VLy Xu Rª(){A·„ýNàÕí‹Å‚ñxœ|F> çðè%GÇGäyÆ`#•ôßB£[-í6†NòZ_üà)oš¦Š<:<⋇i¬aº³Ít{Êl>÷ïi2éMÝØðÕ®œ.Ñxˆ÷Ób±àè舯¾úŠ7nð£ýˆ;wîpqqá§XÞz€_2É”N<¬Z}TÑl¨ªªgSÏÑXKÊô³6Æô2ú ‚æë'xʲdkkê3‘¤Ã´ÎQ"Ó²%œsËeKĬZ±¤‘üTPʲ¬“çÖ(ÎDÂǯ})¹•~¥“:Zë.㦵}1k±Z__²ç¥ö™kV‚¯Zß“k¼ºÖû f×i@ø&o}÷ ö™hÃÓMhˆÞôÁ•¬9@–°¦Æú5Z|vdã5Ùðf¤Ö+„Á‚Dë¬íÁÒ©…«ÉC:QͪÕeÛ•]šÙ&úb·YeC’R~ØÙÙAçš“³ŒãÓ#”ðâÇ„ S™ÈÖ÷šüì½i“%Çy¥ù¸{lw͵–¬K„H-$[’úóØL›ÍÐok©?ŒõØÈÚ´°»EJb *€ªÜó®±¹{p÷XnÞ¬DSc²4ˆUY÷Þˆáþ¾ç¼ç)ÐÚ­'EY:«/!ˆ¤DÄQKÌwÖ˜ÆV*ŒG ¯ €† ›îî€üíßý=y^0žLzŸ=¬Í¡÷jɆÎõóÙ]âFHÞXVeŲª‰»Déˆ!‚ÄYþX7l¥Ý°]k¬uVLR$$ÑJìbMMU×h“`¬!ÂYAK Ž«õ m%´[óÜ^\û:ÏÕÖ.?o2š¦ UUQ——¹a<>`>_¢TÌþþ>——œœ¼d:3IÓ”õ:¡^­ ª®ÍŸº®I’ÌÉÝ\aÒ"UŠ+ÒAM’DLvƒQÄhœø½>Å7üyu¹ ® ''ç,–k´U›QV¸PrÖj¢X"D|1èZ£Œ$R)R"ÆÊq4E¨1ƒl‡8Êš Þr]ï’Ù(!¢FÛœåâaK>xü U]2Ÿ×\^^`tÍd4"Ž—W3~ûùoY¯KŽŽˆ¢ Ú¤XƒŒÚ°æJˆ~­}Ó:þ^ýÊkS{mèá(øþÚ§f‹öaƒ´AÔnÈ‘šX‚­*”6·dÃíq{Üÿ6ŽDIö%O~\sqvÅz¥ ˆ©õKŠ Mžd0R{pU´ íÛúؼ€|»—jÞºµ#vòf㦆£5wîÇÄYå>¿aÍÈ5‘õ¾´7Æ‚ÆM%©˜F5!‚@σÂöºãÞ5¢Atÿ,xY{ÂÁM‚¶ÞʲãSÜ%º 8ÆO(·Õø›büÍCÓ¥µFwB“µmÑÆ¢¯÷A7.Ðú›ožóÅ—_ Ò˜Õrå†!pÖd‰ŠÆbª«b?Íi{v€aÏ#Ø+u”tÝPöîs#½7¸1Æ)V+¢$f<3Y®VL&“fmvçãì1„jÁÕ0Wµ&IÖë5§''¼øî;Æ“i›•"Ãá€ù|†N 5™Ž ª‡H¨æþ×®{?wý¤›Üƒ°¯zµ(J¾zö”/^ ¼/öÙù9wïÜa24dEjêp·é­nêI„cvw?æòªf•_2[jÔ@'¥I,‰=¼X\a¼EšÛ¯ÜwYQ”bMD-4BXŒ©'ÌgKž}L¾6ìLRþîo‰”’;wî2f¬ó%e•clM’Ž©êcuSo…¡†@êÔÞê*X"2RX *†é^еÓQÂÁÁ”ݽ1µ^E’ét‡²¬)W9g§ç¼|qÉ|¶»!V¤X‘`Sç—E¥¢ª Ód2&ÍÖë¥S‘±·óaöL"™aEŒRqÓošwèåß}ùÕLGŠoVç¬çWüÙ/þÃ,£ªüö‹Ï±Öðþÿ;åzÍ|vÅ×OŸ±¿ÀÎî–!–!ˆëñ™þ~ :ýeûßþß‹ßqd tO †vdw´¢Á”_á`o-BX,!j†|9g2(£:½%nÛãöø·QàmØÙ8z ÷¿³“Kn¡ªB€•/„÷(Î$³ 9{· ªÏQ¼n®…­@~¯™Aø|Z‹´†41ìîjîÞˆS‹ u9±6EõZ|ÒMÆYŒu˜]ëÖÓ¹?냉}uCat¬ê„­öeZ?ûmÁÅt †·Ý0;2b7ì•*~¢LwB´²c»Å.&HÑßEÔ@;=ØUf(¥ÖR‡.ÖvÃ6Vi[û'kßêl¼€_Ó¬v³8̆=PwÚ—7 ,¼65'èd$ø¦«£bèNå^·Qê6â]©Ï¯8h~/Ùæî´]Œ±÷ï»ÙµTk‰ã‚½É–ûõw¾€m•ßGüʆwýܾ½j&‘7(¥TeJ'TUÙ™Pu@TPªH%½²ÆMC ®õuY6×-3º6(‘¦™ÝÞŽ¸ù]××Hcѵ³.‹TÔ‘ü‹÷zî}cÒö}ì<ºS’ô‡ è…3úØÀïî»ç-TOíÖª Œ *†²,¯Ù«t§Öûç²Ýî$XX­V+’$e2ž`´³1ò¢òªi<ïç‹J)îܹÃáá¡Pq¹/lh¼¨{¡œ¦ ² “þyž“ç9EYB;u—å€Â8ŽÝ¿-)TgÞï!&€X4›Ý=¹žÝ½GÀå,©Ë%£Ñ˜ÝÝAÑÍÆù¹;»Tݼ–”é®éx<æÙÓ¯8;;c2u9$ÆLmY¯×|ýõ×ÌçsŽŽŽH³ !Š$Š"F£Q£nØ$Ì®í÷»µ–ËËKž?ηß}ÇÞî.iš¢”b6Ÿ“xÕŠ6º­[Ûvú?^ÄX,<{öŒ‹‹ ŽŽŽxôè{{{”eÉ_|Ázµf<³ï3,×ï¿z ú™(=ÊZ¬”,ýý”5›ê˜ÒO×uÍ`8DE.l³¨*"·¯µñ,¸{Óý{!Ãá°ì#'¸§µæêꪹ~];ÊzCµÓ|Gû»ËùP½ç^HA6´ ËTL-Ðè~aˆ¨npn– ÝwK?Œ²›‰q]Sp½\`½-P¸i‘Øzíwƒ` tÔŠa#°·Y[¿°†-$·5Û3'n¬:Dÿù Aåuíž]ÄŽˆœ IDAT²^zK2¼A9ǦÒA´aâÖ%i’8[0éíP;„ñ«†]D§i Êe¶äãõjƒ …¹«§6”uDKЛÆÞ-X òäÉþÇgy™³ÎswjX”ïK¤ÈH¹}­Ö~µM}Ú„@B”µWâRï{HÓ(±Ý𜌇ÓC¹¸¼d¹Z9"ÂØÆ²ÕhÓ8l³Lè„i!”jã€öA-"âl‡(ÝÁ!l„¥òC-n00dŸlåÇâÉ+,£á——ÇÌæ¤Ãt7Âhƒ±5ˆÈ ãT%eQ6aÝaª®k_$X“°Zι\œ2(ŠXE™CYÌs‹qìÔ_ÿßßü¿|óÍ3vw' ‡ÖjÒ4fµ^7Ã#v#ç ÑïóÂz±rL¦1“ID68+1Z±Z<þ‚żd>+©JŸé¡R„"dælx­A©!ë|ImV jVë5qR UMÅìŽÇÄÉ.Ê"™"d‚‘0”q“}ñCæ Åú’|}ÎÞîˆ$–¤YÂÙÉŠ_ýêÙ™NØßÝAIÁwÏ¿áêòŠ4Ù#ì`ÅC†Á©¹ÛÚm³w°¹€×ÏÑþNÎ-¼•ìH.–ÒÚ»µÈQs LDv?» Ù%ÙЪŠH– 2qK6Ü·Çíñû *,®8¸wÀ·Ï ËÅ%BßGŠ CA¯’ø½¨HۮßU¯£BI‹”5ÃAÍO~ºÇþ¾¦„SV#Ð#„Mõêw`0 +6°.ñÀ†r!L†)ŸØhVl³AJŒ°×±‘3° äëNÿ½-€·ù_)\p”ô…çM¸½÷}æ©{Í6›KiŒŸxi›Âm2eÞ’dè½·¸.•¾rn±Xh?Ç&È(zÓÎbKóÑ{N¥³Ùšw¥Ë-˜Ú™þó… õ¶}ÂͶÿÎx"«; *ÄÆ{Ú~fC÷Þ$”›.ê—kKǾÉsŸC¨ckàvý Ïþß7ßÎ(nXXÂ5ÔÕõ@S@©˜8N‘R¡TÔLšÕuÅ`8lÀ¤õjÅrµ&N´v…«õ kýt% ±±ÎYïo´%I2O6Èמñ÷ÝS7 ±E}Ô‚BJl$ÀæX‹Wc¼ßžt“eÓ›MG~ÖQBl±oòfåaú¸ª*gÓ"%wîÜáþýû€»e^´Ö =ò <‹¢hȆ fx“\™î”ëuN'ŒG’$iÀÝà+Ý%1NOO™ÏfL§SîÞ»×øÞ×UI¥ëÆFÈZK­ë l ÛZçC]Ugç眞a¬&Ž !8 #¡$*Šq„ÛÒÒSv€`äÞßùHk£{vPx6 ˜ˆ›ªªÇìïx¢Nx[Ž›§æ¶YeYrrrÂéé)ŸüèÇuaUU\^]2›]Ç1û{{ÄQ„ìL°ÇqLâƒÃÄ|÷þiÀιª(bµ\RÕ5«ÕŠ““òþ€>úˆ¼Ìùöåw¼8þޏ vAmqÞWÛЇ:bÝz{5cœò,ûWþ¯ÿðHã[×|ûõsŠUÁd‚5# ¬¤ÛÜZ;"ÛÑqwÉËÐyß5¹K†÷ðã뛼ƒÆ«Î%±ÆD‘ÆP9 ¬Û"Xílê’ªXR–3ªüœÙâKTz~K6Ü·Çíñ{²‰dÏh?ú |û.ÎÌ«%Ô# öì¬o4…Þý'àó&à ŸÑ„ê5~c)ÙÛ—|ü£1>ɘîH„˜bª}”ÙÐøžn„ºF)„)ËfZ(0\aÊ\ŠNadÛÏ„«CÀûv Ñ °c£a{ÅôÞµ¬»‘sÑû~ÚëdÍõPÛ7 VþÞ‰‚ÿUüç«þ|kdƒsêZ{•˜íÝã*LA£B!…n@âáÐ5QQ…ù$ =Øumh=öí+<.¨7jìDÞªÀ~ïkgÐj«zgãûޤb½Z·j ñ=„Œodãüp{°èï+Ý5ncÒ;9‡?‡Ü¹s§·o·ühAÚår”¢±‚ äÁÖðù-™ aúm±X¸ì]&“ iš5 hÈÀZ™­µL§S1 Ü=‹Ï½1um­¤„+=Œ`Ò$a>›qr|ÌÙéiž-¥·,ñSá±#âH)d×׾͠iÀÔŽªB)g®M°íp?<(³^¯›ãét§6*²M˜ "79.¼¸ ¬jŸ $0¼ª+Ë9W³+ƒŒÑhÔÛO¤jÕOJ©f8-dY«pãRJŠ¢àêêŠÙlFÇÜ¿Ÿƒƒv½Â!K]ðpðùß¼wÙ¬:êºæüüœgÏžq||Ì`0àÁƒ<|øÐ…¯9;;kTÁÖȇzt?cS½‚l°À÷VEÖÚ&Ì9ÜA5ºlèë[ÖŸº®™ÏçÌf3¤RìzK³Çùº#Žã&§b<wÈOT…û¹˜† Ûm×Uy¢A Ÿí¤ ÂX¦£1§/1Z³»»K¤ó¢@ùùmdC¨5Â~±I¦æëuo ÜšÝ`\¦÷mÈfÄz‹?yÍ–©k×´ID„áå%ÃAµa=ˆ¾Cáï±mkóMƒ3Û”p-¬· mê0ÿÙož« ÛÉDª{„R zß„¼¸=Þm0@øçZzP1òÄÚ«jÃM%a“Až)®)|¶ÕµÒÉîࢗ“¢¼ý¸}p6›1ŸÏ  Æv÷wØßßçüêÂ)è=qIålá÷|RZJI0M ·Ä©L“§FC˜Ð±yÓÞ~RHÉp4d<ó7ÿå¿°X,ˆ“”,kŒ”vÃLÅ’Ëí5~òZ(¬«Ï…p“ö.'Ç ­$I‡dƒ1i6¦ZG+:ª~¿÷ž•Ž™ʤŒ"5 ކ¤ÉÁ’|]0u–#0Â^Ç R8«Ð0tÇ1ºÖEAU—ìíOÙÛÛ¡*''çÜ»ó!GGøê«§dÙk+þê¯þŠ—'_óÇüGD‘¢, j]A£È3D묔S-ºz¬Uf‚e2™0ž ˜LvvFĉ ¬ÖÅš¢)R³ŠÓ“9³Ë‚õÊPW’X¥`c‡wØØç^dˆ(FF, FC]k–«9ˆ’‹«o ’Æ÷bŠˆ†£"GŠ˜Zÿ/ÀžÚ|¼XRÕk>¼ÇÝ{èzůýk¤€ýý=¢(bµZñùçŸ#ED–ŽAÄ£°Rùz‹ë$4aÐÆ4ï×Ô6Xн_Ã×ì9‹Ž&ÿÇ? Ö´xAÈgÀj„ÑjŒ]£Dް’Ê=kÚP™šuU’ç+ꪠ*הŒ¢¸"_ŸbêS–ù ¹K6Ü·Çíñû\¸µë´’0½£?^òíóŠË³o‰’ cØ ]GжAòÕí<~Èbº ¨(¬ñM¾Õ@e}Êp'åƒOî3Ý_£@ûH>ÀT{Xùü†ÊŸË›MëZ» l{•‹} >)¸Ö˜±%°³°w§åßÑ¿vówCÞ•ü·ÍX<éN‡)ádèïÒ9ð6é#½b³‘ìy¬š¾ÇïÛ– ößuèI­Ý™àëß ­š¥ÛhtÏá&¢dóÿßq[»…·U» b{Ãöî ¿·ògc½U]:Ë ùS.ï“ Ýsa{‡S²`Ü&±gÞ(ðš-647ƒòÂ{y —Ws, këÎ䦗¦7ÁãÊ+TÏ÷9LK†æªãZpØ5§¢Óð„÷w!Ð, ô&XÔ??Ã;û¦Ýp½$ýœ†7ñ ÿõ?ý‹¥(Špþ>ÆæÚø¶Ê†kª´·|¾Ä†*Áy Gïß u>88ð ÷ü$:„­ð@„ñöUUr~~F)âHQ×ÚÔÍCãÀòγ@ÿ~ÞëÒ$awg§:»-¥d2™°Z­|¶Ë!>l3p9)ˆSÕTU…®(¢Mëßîs„ / .//Y­VLÆSTêÔ?Ýû&X'{½9гÊð`“© ×öYRÆÔu›Ÿ$¥Bü„™a‚BU×=pÙ²]×$hîóŽ}ÐËãcNNN‰¢¸QgdYÆñÉ1¿þõ¯Yçkt­ÙÙÙid!™·ì ÓðÝgˆ-dC À»ûkµZñ·û·<}ú”>üˆýƒÃa³¦L'“ÖŠªCduÏ·‚Ȧ/¿ü)%Ÿ|ò  qSóùœ½½=îÝ¿ïˆ ©0Z£;jmuÀ枦ǵ֜±^¯`?Ô0 çž!yžûß×½pÒî3]×5ÇÇǼxñ‚ÃýCF£Qs}j?SW=ЀèÐä„tí]^µîÔuݼÆ`kÔ©-ª6¬.®(çKVš{÷ï;""¢™¬ßF2v ªM{°@@tk•7J±}‹Br,Í‚Ó~[vr3„k´³{¾5aàÿùds½ }½¾ ç%zÃÖï¯ÆâlkèçP¼®jhÉÙ©L¿0ÉÛfó{8ú$NK¬GQÔL.¿._i[î]ï^ ϬÿÚèkÄbø=Ù8j׫ë f| ¦¡ª+¤|ùå—ÄY̧?ùq£–Z¯×dƒ´Q Qc´{ž‚˜´›ûuÏV¤ä†í`ßöUtˆôËËK´1ŒÖ«5ÿò/ÿÂ_ÿõ_3Xç…#$BþˆÖèºv}c¨K„6ª0á¦÷C}²5è(º´·ˆË²Œòúè#F#—Edý³^×µ_ÇTïž2ÆÄq¬H’ckò|E’Äìììx%…Æ¢©kHâ”ÙlÆÉñ%/¾½¢Ì#¬P©S-J®;d..êª çâ@L6HÈÒt•¢ä€zÇR×kîÝù)!§X=BÊ|NE°{³nüàí k·ªr_U/‹Î”ëjµââ₃ƒþà§?qøƒÖ|ñÅç¤YÂ'?zB'\^Îøì³Ï©jÍd²ƒR±¿Âån!u[‡äëî õ=lP­ÕެÀ ê,9¥ ×G#¬A \Ρ¬QÊ ÑHY%‚œº¸¤,–n ãü„º.1¦¢¬rꪠ¨Ö`+ªjÁÝ»cæ‹+¢h·dÃíq{Ü¿ßlCÛ'‹86|üIÆ·_ç䋳‹3Êåk$‚ÌÙ³XµåEì ¤ƒåú<Ôë`CñJX¸ï—*¼³DJCƒ1sv÷KžüÁ€ÇO$Ãq‰„¾ú¶ž`m„.xçí6X'íwÅìœâ >çv#ü¶Ã0X?c£W`7~¦wÄýnzmEù¿ïÈ ''°ßp­‘Üœ6l¦í&Ò/¿#²ËÚþO[À‡o^°ðÛýüÆÚË·0µÛÿ3ÓùBÛæ¸)œ6Îr3LóZÈݦMÄ”e^†5BXuëéÙ&µ·ÛÅ7¦¾ÿoímó¡Å« ¸7C=ÛËàxCšË7ñŠÖþsçüé]cf{ ®¶aÁlè6ÃÖúÙ6†Œo?‚±•’h]{’Cx^Ñúñ6Å÷;ùo:VSo²î)¥X­VœÓÞóù[ë¤ÍÆi“4|W¯±^±ý)¿É΄4M׳vÒêÃCç·Ç1qõö€nË·%ÒZ³Z.Y.|À¬€ª,<Ü®©¢¿mòÛ—×°^çcG(5Ïþ¦…’1–ó‹sªª"M3îܽçÏ-˜ û©®Ëž²,2Ât‚æËªBkÍ‹/xñò%‘RÜ»w«²hž„Ä~Úßê6üw{.Eû<oQ¡­¡(KŠ¢`½^“$)BbORV5W—œ_^ ”rdW$QÒ!§=ïΔf“yÚ EU²Îs´1Äiâ¦/açÌK„ŒF.„Zú¬!%q’\ÛGøc·Øÿ¥IL>??ç›çßP•ÃÁ€ÃƒƒìÂZмh<í@Ûê´u€ÂKU\^œszrLÇÝ¿ÇÎt‚À’çkª² * Ò$a:÷%›Êœæºa{ÏfoêV¸€ëÙÕŒÕjEše½Œ„°Î†œ ­ucQPû|‰Ä§+ô¬n¬µäyÎr¹tàQ’0ôöu G×Ü‘Ÿ]²¯»h­©µ&‰=P"äÖ•+døXc›Ï+E¾\AY³89§ÈsravöˆñV2„|1ãÂeýÏfF°íïÍ` õjy^?ÓIÒ*¯¬­ý¢½^'XÛ/`B·éUͰÈFVLø÷Íó*¶×äm+b_i‹ÑÖJÆy•¿×ÐE{bhк ‡Ê£M£\ý¡-”^÷~Öç±Ùw* ¾§º[¼ê}·ç’åÀ+£ý­!•|íµÄWºBtö:Å~³Þtz¢î}jõ¹Ü¯Å›{ËgáYcÑhªUÅùÙ/¾óèÃÇìíîrxp@m*G´[5aܽ%”S9 έ²Ã×àZ»sÞþ(’._±t¯­öŠƒ±†l8à_?û̃¾k,‚õzÝ>wÚí#‚î Y ¢,OרíJJoëdѵÅA§Þu@ctáBÔ¥Ël"˜«VIm غ™LwkMøN4Yš1ŽXç’ÕjMU¦`„ 2ãÕRÍþQùúa½^“çk){{{Ÿ3Ÿ̯*.Î*ÊL]aD›ŠªÒL&ûH•"•B‰6‚rc‹“˜d‡ŒÆU>bR’Z—h{害Í0:uXŽ¢ÉîsûžÂ Þ GtNðªžv-lz ¸†ûŸ—…Ÿì—J0%”åŠÉ8áÓ‚0»¼äâü‚½Ý}îÞ½Çp4á~ù,WÃÑ”8"EÜ*I7êøVÅЄ¢³‰&tÓŸ}ãÐÐÏgìÖÄb+ÙÜb>¶q@Ä ±鈇@zX[cªœJ¯ÐuŽ®,'TÅ:¿DWkʲbµ^Å.ô\*A¢,‚œªÊ9¸;f¾xI–Ábá ù[4óö¸=nßwÂÁÙE¡„äèþ€O>)X\¬X-ŸÁâ%R¬bmVaŒ¡¼¡6É‚ ¼×²mV=ôÙ†ä] ƃ ¢X MN]Ÿ³w°æÇŸ&üäO$÷º&Ú”‡˜ò!FßCùLíÁb7¥bß vî†$‡BÔúéàkȲÝr­7Éž€TŠ>)óº ÍR\¾+ÀuÃ{I¿ÁšM{KéÑ„…½e#%„l8»èo‹—¸¹a®î=ŸÆõ|€õ&Ù`-[C¥·yÙoS9l¿A6Õ1Û%øv‹ R“Óp f}ø·mƆâÚûŠ{º;»ù®¬Õ­ãMH²ámÚÐéN°õ6"g{dúw„iµ×o­(¹ é‚eBHT³.kVëU]€ˆzÑÌÚûð–uIœ&”UA^ذmmY–ëÜùO`UÛF1¤„ðî^6½‚Ò4A)I–¥ä¹ij•ošÂÔÎ&™*Þùú\kþeHzy: [ßrßô´ ÕÛ‘ÝIÞ͉ޛÎkóyÞ´K{W¡±òD¥ð¾ÌMÆŠ—áG‘âþý{Ý'Ibbµæiav7‰ jô3³ÙŒ¢(ØÙÙiY€&¯ BDcÛ&HÝ‚•šõr5¥’$EkƒÖ­2!œY<ý곫;;»|ôá²lH9ŸeéA”ªª(«ÊEÞXG˜ÚÅŠÊÅççç¼<9fçÜ¿wæg§>Z¦)iš©ˆXEÔ¶îynwmkS€ñÁœÚ8{Š¢,)«Šª®ÉC”õ ŽR ³ù‚Ë«£ñ„ÑxÜZ y¥Dª0¥ß!Æ;á¸d·Ö2ŸÏ‰Ó„ty[¨¢,X­×œœœ¢TÄþÁAOÁˆ•k Û·#ÚÌ!ˆã˜²,yy|ÌÓ/¿b¹XpÿÞ=Àî2ÄqܳÖêªOÜ'1UE鯭ÂÝ=÷šJHŒvç– ÈÙŒ}ò#îòù?ÿ†Ùw'  ¥Uèý£«W«q–R\œ7j—ÆJÌ_Ó¸›>)¢3êáÍÔ±GË`ófèÙ?ʆè+{ÖSÚÒ¾ ½iÁj¬^Þ 2†ÚZsO–Ú×tbn›àk)•ƒä{[ÕZSûP\+¶t?ƾ©ýCõ€o¬îþ>ëïÎÀÕëVMmHÒ„a–‘Ä‘÷È·`'ìÖOÜS~zÛÝ"¤ÄXŸ}Ò! ðÔ¶yg휛8³F7Ê:Kľ•H ¤_UsvrÊ`rïÞ]= /×<{þ”ùjNm4 …@¢…EÄÒÙyu«SäÕLµH¹€s#°Ê"I©«f_Œã˜d6kÿ`8d¹^òâåËÎ/<ˆȱþ Uä\œ#‚êØšùÕÁ6¾1TZS×c$Â"¡0e¬@'`bÚaÒ‚H¼;A°K«‘¢iÀ¤ˆ0¶p¬4 ³Œ,ðå·Ç|ðDPæ%Z§ŽœõªDw‚ãË?*Š‚år±5{»»Ü¹»µ–óó Œ1üìÂ=â¯ÿÓ_3_^2e ‡)ÃaFQ.8;;mî!­5RZÆãÌ÷G!S­¦®+âx@YâØ‚ÐL§SvwwH¨ÚÔ\ÍVœž\ñÝ·Wœ®Y¯˜!¦NqGŠ$‰QÑ»\5£ºŠX+æ«3æë9ë*çð°d2ømvbìÔ7ªt½›¡M쬾pýÂ}ξQùì‰îß¶Ÿ6`]xûè~eß W`:†4‹Yͨ$&_Ͱ6ç`ŸA*¦æ«/¾äüä’?ýw?ãÞ݇¡øÿúWó5ƒÑY¶Ci …ÙÉ»¤£fáÿ¬ÇŽüZß8âC›6 Èn4ûÒöM»ńРj‡Y6ñëG DŠ I¥ÄšÊ)QÊ5WW§äë+Öë+tµ„º@ÚœHäDÒ2ˆ"’‘m†Q‘+42©IAšÀÞ£Tõ‚“Ç·dÃíq{Ü?P­(6€ðîöXGZÖ)•²$CËŸÿùcîHƒ—ü·_žR¬3t¹b@·EB;¯Rs¹¥,}•·óƒì-æþuB¢;ÃÂçºÐ¿vs©ëÈ ²Ñ%ô³}~ñg;<þÐ UI±Þ…ê¡wÁŽÜ¿o+ïkŽDÛöZn6\[Clh\Dg*kóôý5¶›É] ïz°/n¨üߥu7ÀsoÙ½sÏ$š"Õv.v7‡ÁvØë{D§ïÿ!:„É–F¶âîˆÂ[+µªÓ›b줠ø{Kt¹úM]Ç®¾G4ôeŸv;HÛÆ‰t’oÛ'¶,ÛŒñE»è| tÂŒ;ß‹½é‘’ËO2v퇤JoöNnšû½ÜH¯UTØ×€Ýß'yñªóí6»Š¢Ì)«’º®ˆâ¨'ó5ÆRÕE‘»¸ºj¦Æ¹c|8j8w)Qk¥mîS%ÛÉW74f¿i%!/–Ü»Èh4 ª–Í$¸±5Û55ßÓ:B¿(Ò IDAT`¯_»†zÝ[†)ßë¾éáz¾ èÔÍLè‚ ozlg/o‚EýšáÈ7¸Î?ÿÎÝCŽŽî£"§H  v£Žê¼¶»GÖÌç3V«e‡ ´þ>«Û€w¶œa @ó|±ÀØv‚ºÖ†ªr¡ÉØ–@Zç9/¾û€ƒƒöÈÒŒ(rªë³pœÍMݱ1q` =–”Þãÿòò’ó‹ F“1=d8bO xâ"bƒq##…°¥¢f´ÂyrÓZ¨„ ?G·XO˜Ú0+¥ ŠÒºÚ¡ªkæË»»»Äi‚Tí:ÿ\0¬æð – ªi'°‹¢àüâ‚Ë«+ŽŽŽ8¸sè&ö½Âc6›‘e™Ë ð9 Ñ¢Ëþ6Ö‚¶ÍØéæé PRQg'§|óÍ·!9Øßç`Sk&Ó Yš±»³ÃÎÎ ?>ž®•‰µNpvrÂÕ슧_}É“'OøèØŒFj*Ï×,s¬5ŒG#¯žè„ݽ¤Kˆvk«–s@sYVÌçsŒÖ.»BJ­ÿxY¹è²(š©hŒõ÷Ô˜Æw½Y}¥äøø˜ÕjÉj¹ ŠÓɘÉxD+¤ 9^íç4ÆP…¡úÙ‘Rä‹1)$"jÉ•¼÷äP°{Š“˜½]îÝçðà€ß¬ d^¡W2•š,JÈ󜋫K’,£ÖšÉδgoÎÉ©èÜ5Uì(ý°‹ðÝ‚îÝ/7Ð~C‘ =*6ˆ†ÍÚÖt†‹,îëꆦ2ïÙÙÜ<œÎ~ÍÔæuÚá×P4Öpí·ÇÍÃZm€Úš& ¸[ßô68ûï#³êýËÑS ¿ù6/^Óœ¼É Ùޠ˶_ljOÖ•³Jãˆ$Ž|Þ‹q½a³¶oÖöÆ æ¾³ªéâ¿óéAÕó¿¶±Ô »gb“~}W¡ßôÿ_Þš-ŠR@eÜý%1KU8… ÖÅ+VUI]Ö ‡Cd¬ÈÒ”,˰ ‹ÁPV%W—,V ”Œý³ï­ªd›Ç"üž%#·ïTºF–¥ß×:“â"ä÷ámÁ] E$$FTÕ9±ªA$Xm(ë‚ÚX«€!Qä”’BJƒ­Ðz‘ )2Œ‰IÅ0Ûa<8ÀÔç.÷Ì´dI{$ŠÖš"/0Z{KLjá0coo—ÅbÅÙÙ9Úh>&K>ÿâ7üÓ¯þå–l¸=nÛã‡9Œhë~ii˜XÝLì]¯Æ!»ä„1@Nm4ƒ<ú0â®Yä5_}ñ5«+©± +ƒÚÉ5›W»fÄÒr·{—«¶¬t[TȵÂb”k âÈ)Ê2÷>‹µkV,WçLöÎøøSÅÏþ,ãÃOIb±åS<ÁV±6CJÝ™ô Þ¿€P.¹ÁOÊ š¨ûìƒí‹…fÂôYŸíåøöŠ[lþÖö¨^qéÑH¶ß¶k±Ý@h±ÑC: O›àñlˆdŠRØÖ¢ñÓ½ ¿êíE›Õ`Û ù®åD"…'›lk·$ý¯ô¿h:ÅÍÖžæ†e»aj[þ^6Ó>[lˆšIVÛ sí5Û¦ÉE™í4¢ƒõÀÆ—rÂ6Í½Ø  ¶’8ٸѺyòt7\SJ””Tº¾"+Egâ£SRö†€pöî± ²G(1 (”$±Ÿ847ªb¬ÑX+š€Èm`ý›=Ct”¼Ý÷îwûz5¯ød›^ý›Ÿ+µaê-»BHТ丸ESÈ:‹¤È7Mn"ýâ⌫«KWøz;—ÙlF’ÄNb]×,Wk²tàBxˆ1Œ­Ü³aÃóf±F»p2aQÂG ia: uá8ß7vy­å•SGèþ}iß 4 O†v’?nN†¶¤¯mhR T$éî>Ü´¼‚h Þ¾]/q»Åÿü&[šf½ðÄG‹}£Ì‡5Û‡@*a ÆhÆèü£µÑìO÷88Øg<¹[L _„p ¬söf£kæ³+Ö«¥ØÜ9k­ÝĤèÌü6œí¤·õ ¼Áðâø%ë|Mœ¤Þ9lÀû¢(©j”8ðBʲ d¬WKö™LÆ>ˆÜM•YSZØè, â(ÂV5išrv~Jœ$,—K®f3Vùš»wï2™NM¥¡¬‰³ˆAâ<Ž…R)°RPÔ¥›òV(§òA¹ç/ ­[Û´BHãÖ&ÚÚÖu#…ʲäâê‚u¾f_íEʯwÚ½Ž1H£Vcµ©°²%ÏW3¸ÉpÖ†—/‰ã„ûGÈ×.‡$_|þù>~ÈÞÁŸ ô9Ò7Ño:ßÊZb³ë×ÎÎg6›s||Â_ü–åbA–eΚb0Àj§T(<@ßUDÞ‚ á|‰ƒïõéé)¿üå?)ÅÁþ>‡nO“`¬¦¬ –½ý]²aÖ<›B ÷³ÅÚJBhãy¶^¢ÕLÝzµAä ']VÆÛª˜Ú`ª… “-`£mlY´ó`ñô«ßrvzJ)=zÈd2òõ®Fx¯~!¼ž1¬V«&P[kMäˆ*Ê’LëFGF»Ü%d“ Ç1µÖLwv¸tD]iƃ!‹¼F®+vlÌn”‘§”ß>ãüâ’áxŒ†£1ŽŽ<àFC^Þ:M I9Oô0KÐ#‘Ø0~}-v^åu­ 1®î\£–ýÀYk[¶ f§û­1Ñomó-[¾l¬0©Ú%}œrÄ“¢Ín˜fÏà5Æ«0íÛ± &´Âb¥@ K¼ó-(ÚA.‘@ÜP+ŠV?úöûè{e]ÙÞ }‹·ë¢næÕ›õ|Ø­ÝOo¨Æèæ/˲ 6!%‘”(׺TcJ ´îZ›ÒOv>£ì[*iµÒ׉5Ù­×kYß#ÕÆí¾l¯f´a±áùˆ¤"Jçgg|þÙ¿òãŸ|J)FÃ!/N_øzÀÝ«ByÒLA¤$–šRk´-ÉóŠl¸Ït:Áèš‹ósê*çüêœ4I‘J²Ê—ÈHp0qa»_=;aÿàïŽ_’—q–ºý„H+šŠOIE™ŒG#Ò4ÅÔÚ À”Æd©[Ël°Ø³Ô¦F7Ä[ÔXˆÍf§œ_R+ïÜ!IF\ήX3¬€'Ÿ|J ¹¼XP—†ªÒX±BÅ眜¾dœ>àÞá0Î>@—#vFG<¼ÿ)‹òïàÃG8Øßçãž0ÈR«9ç§ìî‘$1QE’(–¤iÂlv…wÙ½%nÛãöøÝÍxße¨7“d_àµÌ3€ÁP`1¤©å'˜')i:ç³~Îìb‰àeGX¹ ^u’ãz^DæÚÌŠØnpkœ¬ÏJïkÚ¹*ãåc¹\òÁ‡q÷Þµ¶|þÛ/8>9egïc&;wY)¿·…<9ÇȵÖCa€É^·€²MXí:¢(Q{ÔJ¸¼»Æš%bGRëCM­ËyN™_‘çç\\~M]Î膢‘B"(a™_]qÿþ]=pöV˜K‡ uX$ÁP!ØO#ê-Ʀ(UðÛ=æêô ]ÞÇ–w0djŒ0-ÜØÙ 6d™qon¬v„ƒoœëªB#¬r1;V …EJK$4I$ˆ”e0¬Œ|ð‰æ'?«yðØp¸?Aê1¦|B¤:ë¤H TLU÷­&œmƒ³mºßð‘{ÿm$w[Óæ¼[9I ‹– ¹ëNÑü‡ Ùo¦¬n'¶ÞòsšŽ¢aóü›×–­E•Á"·+ÿÐ϶¼Æ+>Ó6§¾œ]€ôÜI×à:=lFZ¥õ§ÖJ¢ÿ>]ÏkŒE(Ñ€›¢ØÐõÛ Çnœ[óÚBx +°0cÅßçµëbWüÀßá6RˆwÜX87ÿ{í9qk…ð¶"ËÕšZ–Ëeèi­  ‡Cç³›$Þ'Ü©E”r“¤eU“çÃaÌt:a<1»\ø WÓCáà&Œ­Å{‚ë†$úèãOøôÓ{ÐÆÛZøÙí€zQxŸ¯¯ "~‹GúåË—,W+¤÷%·Æ¾×=Ïðgm¸ì›“ýgîmÎßöÔ†6„¦ú b)7I^WÞBI1d i–ô(@bC@°i•V§§§\\\ ¥$Š¢D¾î§§Î‹x<÷µ‰‚+(в ÁͲóDåϽ,K0ˆüD{^\Ífìï0™LIÒ´ žV‘ûÞ‘Ò.í)7´@}ñÅ|ùÛ/‰£ˆ?æèþ}&ã±»îiJ–¦m¶@‡hß5]Õ^¿ýâKž>ýŠ4‰ùôÇ?âÑ£‡ŒÇ#ʲh®y™çX­™ŽÇŒFnM H‚ò¢“Õ ¶¸!X8X)EÑd4ììì4öAáY¶>K!d4L&“æ™×ºvŠ—¬"…@C¾ZSäkвdw—éî­ë–,÷ʬ@»¡‚ªwýƒª!ìÛݵE"dÖy¢#Ýù, V«?âÏÿâcÿÎ!ë«9?æÅñQY’8!Ë2ùÙèç¬Ðüý/ÿU¾v÷EçsDQD^ääEÑœÆë’ºÖTuÉl=c<“&)é0åâêœHE¤£ « óÕ‚²*IDâÔ{Ú)XÃ]°³ µ}U;06Š"ÖyAU–() ¤YJ’¦ˆH5ù9Æè&€¾¨*êZceÌÁÎ.ó9¨’á@3ÄXV«HEì²Ê¬Å;W¢¡"ŽTd‰â„Xf¬çkªâ’ÜœRU¹ V1ƒÑ"G8Ä‘#ã­q{@Q~ŸuJË{÷î2X,æ<{ö”$UÌfšÿúßIUÕ<|øˆÇ“e)W§Ý[wªÓee@)²rßOœE#²,ÅZÃrY‘¤®îÏ‹9õÒb´àìlÉéùšÕ*Æê=°#‘SëŠtí@qQbå’B×Ôë4sVù1•='Éîpÿñ.Õ‹CÖe‰ÑãÿÉÞ{õH–äY~?3»ÒExèHQ•YYÕUÕ=5œf÷ìpf9Ü]ÌgrwòÓñ…€‚ïˆ!—#wZ‹Ý%S†vWšÙ>˜Ýë×=#R•ê&âÌŒŒð«Lžó?çÐë`lŸÊ¤HáŠÞ4…{Ò“ Mq¥·Pº¬èyE5—Ù¸µûNá”¶K{ïÒ¯¸r„Ȩê3dP°¹=àÆÍz½˜Ï>½ÏÙ錿þ«ÿH˜gš_üò‚¨‡Š†”:Àˆ!C?)GtuÉno‹mm„5N—¯üºteïì´æHQ¡„EZ§ÝhêzŠ5 òÅ]/(Š1y1£(J×Öuá¬”È l F£ë„DûÜž0‰ù³?~wÞy‡?|ï¸yó¦³Ü –k+c]þG»u–®š&í%œŸ{·^wÙVNqjt@ ®É†ëãú¸>¾…ãUqØN!³„%``r66àÝïöÙìlÏùð—çGGdSE]¨¬ÜÛ °R-~Ee’XÆ $B)¬èÊ`¬!n±à< ˜ m 9QT²1ܸ-yëÝo|Grãµ’Á ¤XÄ„ìCý:¡º…FúÉg=·{Åó%ºX 0îþM¬I¤E×ó9ñhßhóé€â›õ;•øWÅ%_¶Eý¦Ÿ‰hJå^âwXÏ(«¶;M5'Æ<wwsë Ë’äK2b0Z«m*Ö½ŸúU$Z7ôí²ëiª¶ÜÕU8íîîx[ȵ®bÏk›ua¿Ýöþª¿û¼¿¯¿ÚÍ[IV”œžF!*¨‘ »!Ò®"öììŒ (Ëm4‹EÆÉ‰áâbJ¯·ÍÎÎ;;[YEžiï«î«ë0-n¼=Œ ˜[žãÖíÛlmm!lé}»í+Ó/¯2t¾¬êç?ÿ9Ÿ~ú97ö\ſхÌ+öíN{íÏ"×ÁÝ—3W/.‹‡w–Jnc"©*Ö5i:`00ܰ´[[Úž,sYì Q]–%ãñ€$IˆãÄYŸÁb‘qxxH¸â0 WÃå;}¤ª*æó9BÒ4] ¦7ÖÛ³yƪÊû{ìïïG‘_…¢®*wŸZ·d«$wç ‚€Z×H)™g ŽŽŽ¨µv•é>¿ ÖºUŽõz=_1¯Úln¿»tòó°ëîÿа Ö ÖF£­³Êi*Ú«º&Ž¢¶â³;ö¶*8K‡œ-XÞ(æ´÷ú¢$Iˆ¢ˆ¢(˜N§dYÆÆÆÆÊ}5àµË³PO+*ׂxm ªºÊû““îqŸñ¹S!lŽF„ÊYùH!ý†#„¿Ÿ®“{G†"wJ$¼ÿþ¯99>rvO[[ܼqÑHB,ɤ²$ôÓÂ{š‡aÐÚR6 öó”CÝ9¥yv:¬×ëµZ7cb>Ÿ£µfkk«½g¨ZQv€òºv žÙl†Ö5»»»ŒF£6×¥r¼nQµ^Éßœ¯Kvµ1Zw¼ýÝ;ÚØØàb>ãàæ ^{ã.;û{ô77ìróÍ» ´„YÎÍ›7yëûïïí'|qrHòÁ¯™œ¯ŽG^5¥Aûwx’Á©Kܨá˜]qµ¶Si¾$–ý©QººêY»F6\5^®ÖK•µæ¥æk-FŒtá±ËëõÖaJú¼Š¥ÅVóÞÂ0$[d$q²,Àø’êJG\Ú–\ ŸVˆ]¾Žøöv—ý_z?ùrÛΧÎßͶ*°¦ïÄIìæéæç¡nååÇõÌ,'Ñ4ª$„ÓÉ4sc³Ì…maI›ãÓXÎâÄýR´6žlp„B³©1 }禱t±œõc¶v·¤}67FäÅŒÚT(%ÊÒ¦TÚ)0 E:LV0>Ÿ0Ïܼ¼½½‚×ïÞ¡*K$’éÅÔåwAkÿj=1çÄn’²®Àjò!5]5¶_•WÛ–që‹‚íí-ööɲŠÇÓë¥AÈæV„R£Ñˆ7n¸uz–¡Ñ ËîØãzê(‰Áp#E-4½^ ˜NgHQäžciUi¹˜äL'†|ÈmP;XÓc¾ÈÀ”H*”¨PX9–Œ(´Ä‘Dª1‹lÊ< SÉ"  †Dµ6IÓ] FŠØ«ÚÖø7=±ëõ£PK¤õžrõ¸Ø ÍVw}¢ì| IDATÔZ(5FÈCF–…ðo1èÇ=à·½O‘ålnlÑï¹ÿð>}ðEQ±1ÜCÊ„XÍ QBµŸni Xm›'(„Ëž3¶ôÖy (Ád[bmí²tE•çÌæ ª2£(Æh='T5y>&+ÎѺp[R¦1VÔ.³‹ %a/n‹PÂ(àÖÍ›ü‡ÿ?±··ÇöÖV«¬¬ªŠ²ªÐºô*dÍýûÇEAQâoÿöoIÓ!Rís=>>fËWn7 T°ÚÞÞæ||Ê/ù+þ qñÞ{ßãÓ¿ÀZ'Ï7Ö€­‘ê²ö’c÷ùMû°À÷¾÷=þüÏÿœ““öwGpü¡ËßÄ‘¦©÷­÷€zÅBìeˆ¢ \ï£Ýþò"ãåúï½hÛh³jÖ>·±‰if­5EQ°³³Ã[o½Õh+ç^»î†tªë𣣣v£²³³KšôȲ¬µë)« åë÷Ô½ŸÆ’@JÉh4Zµ»ýÝmð]Át:eŸÁ`ÐQE-sl²EŽÑvåw×ÁÚ³³3æó9Qq÷îÝ•ëk22"Of<5–uúPwGtÉ,c¨}‚ñª“ºÖœŸŸ¹¼±¼ön%[S©ßwº€uSlŒA\Ò–»Ïôââ‚?þ˜'Ož„!½^¯µÎjˆ¶v|èêMöƒöyišÒï¥<|ø€Éx£G˜N§üå_þ%wïÞe6sáÙ‹Å‚0 ¹ÿ>UU9’È^ógóŒŸ76çn!p}yž·¡ìJ¹ðkéÇØæ˜L&!\ ·W"ˆög–¡ÚmenQ0›Í˜^¸¶›¦)ÛÛÛ.G¡Ó6Öó†ºc€ôdXWå µnƒ½×Çk-½^­5ýÁ€½­[üWÿê‡ ·7©$ìÞ½M’¦<  ìîí¡wd€póðl1çÿüßÿæ©`ð¦=ÍçóK”}â™ÅM†…èX^6Á«–F±×ü¸]±QzÖ«»&pmûåæÕ@9;­ë²5ðd)m8ô*HE1Ù"ÿZþ¥E”½tÍvYÆÏRÅs½!¹jž5vIðÅqÜŸ[kZU°íŒ Ý1²«f[™ÛŒ'0ä²6ãHkQÙdø‰¥-_Kdâ÷’Mš±O \¡nqĈ¢,+ʬ`ö©«ŠÙ4e1› ¤ ,ˆ? ?G‹†*ñÀ§"MR¢ ÂȲŒ0 é÷ûÌŒáðñ!a®­Ç%B-e%Ö4óDí,­Ïªµ·†´—2}î˜e<™ ëš0 ™M/œê!I|~ö⥳eÛ»)ý‘@Å%IVIÊ¢&J-©ŠˆSÅÆ(e0Œ@¸ÂBY[ÎÏ.P*¢Òg`-E™³¨z\ dDQŽ¡óéáÚ3¶íÜwîÜaccc…€ÐVÅ*HèõúÔuÍÅô¢}GAøõ³ 2ÖøH§ V¡B(Á<›£EY•äE‰1’´7Ä‘¤)E¡9?ŸRå)Ó‰¥.¢h‡(ÞÃÚ¼^BÖQ#EE@gÏUgÄAÄäì3ÙœÚôãD0" Vãì7{ǺÒ>hÛ´¦HÚ¸@è¥!ñË»'tt ,-õšþ*½}ò™šõ²ÅÛžÊRä§(1çÎíŠÅ9³ÉÎŽ¿àömÞ~ëÖ”>¢.rÒ !QC„I|èµpzQ+‘V¢šL áJK5ºõw™8š8²XS9-(ÌÑå‚2ŸQgSæçÇäóUUdֹ˖h§¤EXM¯— ¤$c^»}›÷Þ{ápÈ`0àæÍ ‡C¢ Äš„`6uVZ½AŸ³óýæ·<9:ä‹/¾`<sttHžÔ•Ekе¥® uµ|OÆX…AzM6\×Çõñ{v\: ×É·yd%g¡ ›|űáY*œ¯½mˆ§‰©&,¼©^o‡8ŽéõzÞS_òt¼æ2ôÓY@Ôœœœ0±ÀÞÞ>R*'ݶ†ªt–E³ÅÎú£ãë;~ÙKQV”>¸¹©°r pg,3í½ô‹¢`{{›Á`Ð*ªº ²Ö-‰R×õJUxz;å…»~ÆŽF#†Ãa ÆgYÖ*!úýþSÀõº­ÍeäP7°¶9/°H²´›Ï¦cmŽZÂ% ‚%@ÕÉ8hªrÛjwßÇœE™@×5óù°ÞCßúÓé”étê30¢VÙÐÊ[ˆ9B¹öýV¬½ @ÒDM¶Áññ1u]ÓïõZY3G„ž@¹ŒDj€8)¥«ø¯+ÎÎÎøÇþGÎÏϹ}û6ûûû„aèªÇ³¬%8..œÖp8\yö]¨\ŸÕÿìš‚¤Éûh@]¥Ô²Ú.UbµÏQF-øë<—‹¬º¬°Ö²X,˜Ïç, òüÎ6ë+$¬AwT`W=/º~ûf×÷´*ŒKm]Åóפ_÷VÔŠÆÖÓ[È…2Ÿ+Ò’öb™³Ó8Î_fÙÍAë\¡zkÀÔ&zÙŽEŸA!RZävÕ=Þ2W\2ïûK ƒˆ|Qp|xB§ 7l¤CŠÁ‚E±#(òÊ›²lÇË@…„A@/©« äEFU• ›gX,µvvrbvÉÕÆï^Éa¼Œ³3EÆ`èr.fcߟ<™'ÚVTºÄ Ee$µ­@¹|1ÀÅì+ E•Ó#ö1š(v™®_ÒD¡¡Ö j]P×%Z‹¶Pp¸‘’ç5QXaô#4Bhâ4BªÆÆ)hçﺮ}ÐRQœ¦=ƒ!R*ŽŽŽxòä1 ~ô C­UäÓëAßÖpî Bºù!ÙØ1ŸO Ȳ¬©ª­kd hŠÜ’/î)óÃÁ †ƒÛ„Ñ냚ËÊ|Žj[!…A"Œ³{3ºÀRc…EËDH¡UDK\÷ggÑçò4šX˜&¥Y¯´?/^®6c†¥ `÷¶lð¡ÔÂ[e/­8]³›NÇ”ù”;··9Øß¦® ?æ—¿øÿí¿þ·¼ñÆ]lðÁû2™Œ9Ø»ÍÍ·)ê™Úì‹­+g‡¤*TàÏ¥K¯XÒX ¬¨(ŠU•Q–yvA1?#Ÿ_P,2¨K”ÎQ§Š‘% al]kc¬À  £˜ýý}nÝ< $7op÷õ;ØÚðƒü‹‹ vvv¼Ý’cNOOxpÿ ¦Ó nߺÉùxÌ'Ÿ|ʃ‡8>9åÉñ1‹,÷"e—%e´Âh‰1kqÔ'PN}GNu“å£k²áú¸>®ß’¡ãÌÒX~WÆ}Ü÷ò…`™sðzÂÎÍ]ÞxwÁã‡sîß?ãÑ£š‹ 0Õ¦Ú¡*zTeŒ°ÎMÓ,ƒ}-(O([;²Áp)AAh z9JÒd¼v·Ç7#^{Ópp[„EQqøpÎçŸTó-î½övã6"ةײº•'>ø¹E©^`j%_áÐ’$Їú2ûKÜg]ú7š9÷ ÍkkžC‹ xÒA|ƒ7%:U}OŸ+m,žúž^Ú×ý’Œ—P»`ÇWBþ¬ýO9ާŸˆâÊ>ÓµgXÏøkdÏ+;Ä} DC·J{ýžƒ ä‹Ïïóøñâ8¡ªjPo¨Êв,Ùn „ Š"ª²Â†–ª¬Z÷0 Q*`2™rëµÊËá}ý’8î0ìïðGßýƒ}ªªbo‡­Ñ€A?ua ¢ #T¿óãÄb± ŽE ´J¥pò£g¿‹Ë*ð›`ßnõ÷‹*š Ön5ú+,턺çi«d­iÁÒÑhÄæh«³vs´ðç2Ü]b,œ™ÎæAÈþÁ ’Zû Dz$÷äV×z­ 7$@ã_U#Ò4íT»7Ön¬ÔuMU”˜Z; ùö6ý~Ÿ¼(B9 \/AW ¹ †4çª*jWUÅÞ`ÀÖÖ[[[N^^VdY†ô^ÒÎ*!útÕùS`ú ‘¥Å“Yª^’ ,KoÉS³±±á• ’( Û¥ö9Ö¸ QÀÙ½tHˆ¸Ï+òÜg`8ò&Ë2NOO[‚¥ßï;û _ÍÛ(ºÿ—Ì? qØ´s„™óÙgŸQ”;ÛÛ|÷»ßm­’”R zõ”ýT—ÈÈóœÙô‚/¾ø‚¦)ï½÷^káá¼…Ý5dYÆÅÅeY²µµµ¢P辫š‡×삵.à( ’0j­š¯ éz­%UCÀ€EIራҵÁÉdÂx<æôô”ªª888`kkk¥Ï·VY¬Ú(­“ñ- íßE3V4uìu­QRRåçcæÓ“ asãÖ-zAD½ÈÑÂb”³!]Y¶’” ²"C…!q’°»»Ëx<æüè„{¯ß! _# ³9óÙœù|Þ’]Zk¤ðÿVc…ËZWãØŽnu|t6JÆ*7ÿ[»FT7äÑåÊ$6/aÙw™ec…$¸Ü&mÝV¬c¿*ÀÜxÅRw쾬èãúxÂÁGI@"°ÞÞ4Ö[ƒÞÞîKØ¥w{£ £S.ZrÙ¿?Ì*Ú%Z—lÐ^%_×kþÞ-¸jÕjLCˆ(”„2¯8;:G¡xë;ß¡`K3ËgÌ9•WÜ5×!Âí£…³BÓ¦f>›“¦©#ûË ]9{ÀVùå­£„T-Pl…ûTí׸.%Q( “iatI©DaˆòJ ÷ô FT”ºD÷w+BU %Š!Š¥Ëµ‘M®¤}…T8Ò8Ï*ò¼¢®,ea°V†›[C„PHá U©Ü{‘B;²ÁZŒuùµ6ÈZ#”UírY”DHEQVX[!¤`sk !Œ~ˆÖ][ªj™!µ^,$¤õ$‰'¿T€RE^;Fe(òš"w…*0h]2¿€óÓŠñiÍöÖ»Û÷r€%¢(Kte(Ê!c_üãCŒMˆ mJŒ­ÑÆ¢­¦—aB¿¿MšîÄ#,!V7áØÚý¦Ý<7k´¯6ê$QúïË¥r_wØRBpzrÆðñlïn“ÿð?agç6ö¯ÿ-EUQóøñ ‹¬ààF¼X ÂIá²µWaš)K„ÍÁh—ejŒ-)Ê)y5æøôE1ñdÁè]ͱ•Á”!¡ ˆcôbŽ ú„‘$I6FlŒ6ÙÜÙa¸1bwwŸ›7o°1LÙÙÞ@)ÃÖhD òENÅ|ü›9<:åäôœ³ó3æ‹G‡OOé%+Ä)kYÁ|Q•5A2$í%äùÄ9z%™ ˆ ’!½ÞJ襪£cæùȯɆëãú¸>¾`Ë®q¨„ríü¼õ˜? j F¸?… NŽæœž^0ØØT¼öÚ-öö3Þ|{—ɤâáƒ'G09szrL6 )³k¢xk7W„ª‘â DZC¯ö’^ÀÖ¶âÎÝ×Hû›;[»Š-ÃgŸÈé霳SøâS6e£“ºÜBØRÄ@á–¨¶±7ðòö&ÔÙJžv»ÿæä¢‹° Û²#RìzÉŠK.ïyî!­ àêróoM=ÑpÚl¢]púÅÖLâ9ŒŒXíDÝ$ž `^ö8ÅÀ  |%’’}Iå[KˆÙËt—m°»Ð^®óôBù²8Ä¥Š„æ³¼$[Jšöòj˜¦æ©ï¯d9|ýöW^ô÷ëŒÇ’$!/MkËÑTd52ý tUíŸþ9A´Ïõüüœƒý}¶·vÂ)C>ûì >þä‚ rÒeQ:Ù°©ÙÝñÃüwï¾îªÈë %=á*áe¾ÃïJˆåeGY–$IÒÝò©Dœ#`yÝ’èeÞ÷—{N«ŸÓXõ´ó¤­õ‰1†~¿ßʳ•R`õ‚´ýÜ µq´4..¦\\L‰¢ˆÁ`°báRùÊú0±Kzþ Ú úªªI{=à ¤t~ÄZëŽÍŠ· ò?¿³»Íp8ôʪŘ澗rüÖŠ¤®©kÍxóÄœtJ £[{á}÷×ç8«¹ ¬³zªLI‘;EÇt:m30ÀåbdYFžçí{ïÞO’$Ä‘³‘Íû²«ïl=¸\kÍÅÅ=b±pJ§í§rŠc¤’H% £Ð…Ê+Ù‚)]àœWY¦|úÉÇüêW¿"Ë2ÞzëMnß¾½B¼5DC£pDk°B64}ïEûѺÕcC¢tÿMH *W•ó8¢˜áp£m?]²Q†.+¤®ItvvÖØÞÞagggí™.•NQ\邨 ATkMäÁ:i©½šåüä”*/ˆÊŠÐ@laS K©œO{("PŽ(ÌslmЕ&Œ‚Ê#™Î3ªé‚z– {yN¶X°˜Ï½ý‹S›Ù ¤õéÀ[WaÑ>dye a—VˆMfÛUïñ2·“ºáŠL{YJ—ÎÒûƒ7Ê ³ÒŸ•·±8âP×ÂâÖžl6Æò*C¹ë]–OÅ/ºÖú63– 8­½Ý V™|$Šw{øªbüû¯êÊ­sÀeøŠéÆú´µÕ2¸J}±¾ÅsëVé3tºÏ¡!ð[BSšj»B$ëËçŒ ÃmÆš&GçYJÝF!•‚&צ¨™œMɦ9é "Bª $ÆÌóŒ\çÔ¦r¶¯Z7FÓð{Æh„„E6ÇhÇÐXŸÉàúˆl­ œ¢££.öÅw®Ë¶VKÃÖö&³ÙE‘Ó¥ô’´µ.lÈr#Üïµñ‘!AÐë)š¤¦Ö–žà†@) RYT ÐÚR%Ù¢B×­-JP’¤3·kã”]¬€Úèv˧}uUy€^WL§Î&G©€Í­m¶¶wÝØe ,+ªJ3›Í¨j6åÊ\ÚWBXŸsc;V]–²ÔD×Îþ¦,5E¡™Ž‘2b:¶Ìf°³sÀöÖ.Q±Èrù‹|Ît~Pn=*T¤Âj. Y"l”!bú½›¤½¤é6a4 Œ•oIÝ6ÀVuM~¤±—ïÂ^ÚNI¸He—aÑОŒq½IäÛ”;–Í™^Œé÷z|ïÝï2ô9ÏÜð€Íí-nܼ‰±–ÉÅ„,ÏA â4FÈ©JGdØoW‚™’/Æ3£®3fóŒÅbޱóŘJÏIzksŒ·QB£lNÒ둌z#Èúƒ>·nnß¾í®çÆ T±wp‹^oH­-››,æcÆã#ŒÉypÿS.ÎÇýìçãUmÛ,Ÿ<Ï0ºD‰Êe&±Ëž¶RR›T6@†Š$ Q*aÐß&‰‡¤Ñˆ~oD]»£>峇Ç×dÃõq}\ßÌ!¬R€örÒæ{líE–²Ú8{ŠÚ@ á 5llIînøàÍOþ ŽB¨.ø¯ÿø&7nçl߀›·÷¸};ekû>ºÎyüø§g%ÙÎakãY^S%µÖNÉ ÁšdIh6z!q ý^È`3Ú²³›0ÍHRÅÅÅŒÓøõÏsŽž„<~¨˜^hfsØÛÝaݤ,*…“Ðëüæ}@´Ä-²Üä'<Ù ÖæoпÈ.·žiì¼õñA¼Ðþý2”ûY!«‚çÝÎÓ`Lz]eýó•Ïj£}˜¸êù=—K¸ºØ+ÐÓm`½RMØKÀøgl®Ÿ·ù¼ìºv³\\ú;võ¼]pµ©2ý2GÓºœ®Aâe´¢%ú€µÏRW<“e¥Úó Û§7tÞPæ9mP¼2p|Ù;»LEÒæŒX§< Àa Ú4a„î76aàìM¢(jµ<ωˆ½½=ŽÓYÎ~ü3߇j¬ÕmHVò§ö'ü»óßñæ¯;O^4Bá€_@ŠÀmë½÷{C~ü®»»»Ìçì6ÏZ ¬ð>ºO÷·•jÄŽLÓOœÜ^>×>ªÛö»ý» Ô¿p»±«ŒšíØ÷4ŸRn8>>&ŽBvvvxûí·ÙÜÜ|°ëx–k­ÛŠüÓÓS>ùäGPÐëõVú³1†‹‹ ¤táEQxÐÛXëCc¡Öšù|΃¼š#pDCG}ÞãÚ3 eY¶6J ݶ{ëæ_ml»AmlÂ0D›0äyÁÇR±½³ÃööB¸,cœ=Âù*K©‚°õ7¶!ÑVKGt#³êkŒÓê7Àk·?»*ù(tUa¦ªõ2DÔ:²`2™´ãe]×à­–¤”Þ¢Aà¬{ÛÊ|k išr1žðèÁC”ÄQÔ’ B¢0tÀ‹Ÿ4­qï]z¡®¡;ŸsûömÞúÎ[”UENÑ a!¤l}Æ»„¸#šœÒä“O>áïÿþï)Ë’7ß|“wß}—»wï¶ï°ªªÖJéW¿ú‹Å¢%ººí¶µšjU`‹“5Psýw›¾{vvæÆËNCC$c8=;c¾˜³³»ã*P‹²íuU‘-XëÂÌ6··øì‹Ï©tÍÁÁ¯¿~‡4u¶eRvKÈ[JµBvÃÉ»ã…Ë›±­e‰P^HúCª¼`’—Ä*@–š³‘a€ ¶ÓÛ!’ØUÒç%:+P’ ¦8‘浨¸Ñ1Ô’½¸O† Î^,~¿ uoôp®-;óÚê¥âª®Öú‹½¤·b’¾šõrv½ºUÝ`Úño½0¢ABmÇcÉX‹ñ€® ú”ÞÆ·u¹´w”M;næeë,£´öç4]{°WÏLPJµ ­KƒR¯$ÄzåÏõÑy6ntã°ñëíº¬ÜºÛ8@+ÀÔKòOÐÔ~_lýþ´mü©z"J†+m¯0uKuX„˰K{c´W¢ o‹æò+À¦¶û*O‚tUQË1ÌëF[Ò¤‡@29¿`¸qK°P•JIO„¡+FÁ¬´Ó“°HåÔBê¢ö×/B!‘­¥Âõ£5¦öëŽÚø%a“eãÖN§§ÇÃQ8IÐFcCgËHE– „ 0Ú¢¤›G¤”Dq„Ť`¥! %y6'Šý8î‰rg«(œ:Pƒ0 ¡ P€5ƒaêÉ}7W×uÞ*<Œ±žëÔº¦¬Jz½•vùKZ×èÚ‘ XË“Ã#—7Ô°½íæƒ ŒÈó‚¢rä¿5†¡4ãs;ÌJR¬¬´6TUA]7ÖŽ%“Œl‘£Æè‚² ‰â”$RX1ç|òEU±¨N©t…Q!VD¤ Ä”"Ïjúé€ý›»ô{}>úà#zÉ&iô:i¼Kï ‰°Vµ0Rt6·+ìJñ⪋€Y¶‹KÆÀgNKíí’ø$¥òö„A€°¡+|±µ³'’0_Lù“?ÿ#îÝ»G™|öÙ'Áæ`Èkwo ¤&/.Xd¤ Pa@”‚6SdhŸYä3Š|L½8AØ9E~NžÏÕV”P•nm“*( BW4‚BÊÆìîîÒKìïíq°·Ã›÷î±³³Ëp0" nܸI^ä”e…T!³Ù‚ã~ò£C¦Ó3žÞçñãO©ê9ùâœù|NžY.&Æ&Xz¢Ôú½\B„d‹UV&1Y‘!Ô7Þd0ºÇ` ƒX”´”ˆˆÕ&Ú(¤2”Zc¤¢Â7×dÃõq}\ßÀ²Œe…³'šbnñÂàæ ¥ Na^À0ü݂߾?þGÈ&ªÇ?&î6šÓ IDATW¼û^Â{¼ñÆ>·_Ûø‚wÞ¾Ã` EÄô<$› ò² /J²,$‘L• íI’X„‚4 èõbªª¤(*Æ“SÊBpødÎãG ÎN?ýÏçÇ kP*`{w ô6Ö&HxTÓØ6Y+;Ax˜òÛóÕ©ô²êöoèÝ5r]·XðUcT´z`qõûÿø€çYŠ|¥¤Ëßt¼Xm'PUˆu>â 2çjHÚ ‰Ÿsaö™÷zÓ¥ u‡¨XUž{û+ÒסÁPÕ~Eíó²ŠD!–¡|ÿÞ«ŸèÙ„ÃË·ÛgS_Qÿµ\)±Y¯ 6zù§Ö®ò»ª Æ.6»Àf†(¥H’äRàÛ‘’_|þ£ÃSŒq‹S„«¤‘Â×½ý{ìîlbtÖàòã4í ÚFÒü^GGGôz®:¹¬J’(ný»¯z Úü;Š¢ÁËM—÷ñн‹oùæËŠ¥…O’$ÔUÉp8äÎ;K+¿¡\WmoßS{ÕÂd2!677Wìq´&Y–‘$ ƒÁ %–Ní¢}0ôl6\u{èƒXm—Ôš8 ™ÏÔuM’$lnn¶–?B,Õ ]ßkZÒY¶YÆX2Nka4ÚdgwoI GV©£8à@H径ô–bçÜç—Œ-Ž’«Õù²CžVUMžDáR%’Rw/1èwC£Ë¦Ïz°i¾XÚ cH☲(©JgÕ„,‹¦Q»ki®]kg“°€ +ÖÆ8•Ëáá!ÇÇÇ-™µ»»Ëææ¦#8:¶@ë6j˰o¦)¥˜Íf|øá‡œœœ†ûûûlnn¶„]Y–íóšÍfœžž°½½½BÎ5@íËö¿.9QEë¯Ýëõܘ¨vž­µ&Ë2ƒ'½_œQ¹¢j—éUUîºçó9ãñ)%ûûûDQDÅ(¥ˆ¢x¥Ÿuçî»]¿Þ†À}JE%\°”’À´÷z=0–z‘óðãϨæd:!ÙßâµwÞbcw›0(§3~rBO†ÄV2Ÿ\ðý7ßa¾X ÉùÙ9½›;mÕuW],qù*RúJpãÆmkoS³ì—ëUßÖZ¬öª+üŸµÍê±æ.ÔC…σÓW'\fk·,Ž@ ÕfËYCÇ#Üg­)|josÖ_rÖ³¢THuåüè#òbÁ£Gyøð!ÇǧüöãOÙØØ`<3™œ¢Âšª^`tL"ý;TAж.<^›Š¼,‰ÅÛï¼ËÖö.YYò“Ÿÿ”8Ýf8ºÍÆæ›Ä#C ¶À”Sz½¡ÚBØK2ÇÈG ãk²áú¸>®ß§•ÝË–*@C/éñð±åÃ_üøŸj~ý ‡á[±‰±±›Lë9ïÿ\óÅÇc~>,¸s'g´¥xým‚xÊüá-¢0£ŒÏxãÎЇô„H RX¤Ìt!Y, ªJ’g–Ç.8zRðÙ'§\L ›Ã|*99‚8ê»J±¸°)ÖÆ^.º hø’’ÕÅ¢—Ù>¿â}_—»ÈªM]•‰w€ÍËB£Û­½¨ý½!Íì*Â.šÇšço[—ñM‰O¾äK¿,(z š<‰÷*™ Æu†/÷Ú¢ãŽ_÷¥hñ•u‚Ë2^–pø]²Z­<„¢®`9›/2òÚ ‰²­L–ÒYšÄqÌæææŠ²¡(ж’Z©€ßüæcÆã ¢0ö!y®êMë’7ßxwßy‹8L'gôû©Wº€RMȧÛ6›ôß¹é©cùcåý÷ßo7ØKKg€’Z·à{WÁ°nY´bköïô«¾Ç–hðƒB[¥.Ãá½½=W‰Õë¹{°ÂW&¯‚ýÍ=EÁt:åÉ“' —/à§Ð=/r¦Ó)Ãá$M‰£h©„jÀv¥Èó¼ Í ÂБ AèÆfo·c½ýBžçŒÇcÊÒ$ý~io$¼bÀvžç+àm÷ýdYÆl6#Ë2‚ `00[àÖY¹gEQKÎ=Oe"º6‚eFCtX³$?ºïº,K‹Œ(‰ †(¬ Nh1µf>­^7D‚Úh¦³9,æsÂ("ŽcªÊe¶ŒÇcf³{{{íïvŸSUU`,º[i.eˆÚ­ü7Æpÿþ}îß¿Ïl6ãÆlnn†!UUÑ÷9Í3\Ñnò4švñÁð³ŸýŒ²,¹yówïÞåæÍ›L&“ö}_\\ðñÇóùçŸsppÀÆÆ†'Žlû,Üùì3I;} ZÝÇeY¶6_ƒÁ€(ŠVÈ¡ºªXd îܹÃ`0h­„€Édìí¿ ÀÙ‚œŸŸ3éõzܾ}›Á`І^7¤YsMÝl“.8¾8W¾ÍFq¼BBJy§ …BGÜ 7ØHû”‹ŒŸÿø'TEÉ$_°yç&* ÉóœÞ O½È9??ç§?ý Õé”×ÓMîܺ͟¼ó i8YL9O0J´yEž“& ë•6‡}'ØÖ63’hm‚¬¯ÌR®Ü{GߎµØ+çà•< –Ïë2eÃUóùº£Dˆ†@õá­ÞF©«Dm¸%á"Ú¾/„üÒcwW ø´Õ¤¸&^ñ¨}ÑLC‘ ¥HÓ„P‚еËhl[„q`°Ï\X±ç´Kn»†5+,ÆVË’X v™#bÅ&Õì|»³Æ®¨šöäl‹Äë·æB¡¤hƒÙumÉsTË‚RW`j Æ ½´óA{’Ÿ ሠtíÜV%­;°ª ¥v}Õ)C„óC‰&~Bƒ¡$ŒQ*‰’€ pj¦nÎN¥,ýaŒPÞ’NZ‚À„–0nÖîÚ“7k•#U$åÖ M¶QYfµ²hé¡ÅÂeíÖGàv¡Ý Z;+Ûª­qDƒ°^!ã÷ïV²Ü až#”lóÜ|SUÔuÕf#9u€FkAYBc§Tä9¥/¦ÔZP×]…˜:¡®ué2z‚ÊjŽ¥!½›„bc´EÚ¿…ŠwQÁH0tY`Fª!a’ö ‚ 1H¬þOÑÙ’‰+¨„Õ}¡ù…R(¬ –ÅÖb<ëÛäñH_üYéŒJ_0ž1ÜHxçï ”â||ÆûïÈ|V²·w›¢ÔœO8<<æáÃ'hm8||HQ“e5››Äª$’˜e-Ò@’¤XBò¬¢ßï³µµÃÖö7nÜ ×K¹÷Ö=‚0doß#í¥„qV’å9§ã ‡‡Gžr1¹àÁ÷9;?&Ë&>lí­Ìæ§T¥ÀX‰0Š(aÍŽ t–mV$ SÒ8%é%=& *Þ¸wƒÿåþ÷Œ6wøÛÿ÷ïøè㇠7ïbÕˆÒ$ÉR * ¬­‘*¡0вv*tGÀ–”vb<º&®ëãúø=:„S D$èRðÙý’?¬ù¿ÿ/ͯî*”„ÝÑÃÉ"¯‘"$Ëã3ËQòäá *(9¸uF:ÈùÑ¿<ª½%í[âXÑKS„U"±TÕUYQÌyÓ‰¡*àüŠ Š,äb¬6FÊkad‰¢Ä‡y©½’‰Õ^ÉØ·Y/òXV⯑ðW‘@¯¾Y¯¨xø¶7H¢³°ko²Ùd~“ײþlì:AôŒèóì”^¸|•wÑ€i_ ´âu/–w.¾&ðõ[is¯ø°®ÊÌx |®2ªªj‹l9fIéª3Qmu«T’@KËg64`—ôAžµ1QU5I·¬R” ÙÚÑë¥ÄqD/UX«‘¡òÖÆoÇ%¿ËІœóÞþ=bk´à,§ì²*ý* ¨Özź¥ ÛàŽ¿ÿËöǯcœì~¦ÖšçŸ¦iÛ&te0âi §øœÍfÌf3Œ·æÙØØ ßïS×KB¢!±‚ `8¬œ[úJAéŸÕ|>g6›¹¼¦á0Pͳ쌋5SQ¤é£ÑȽ¼oƒd=áÑTº768Í=4N&÷z=Ò4õ›yì4í=Žo;Öö×­„ÖŸmKø Ù'Ë¢‚åsʪbá‰0ŒÐÚ, „µ÷Öd»Jƒ¦ ºÖšùbÁb±@שtû>ÎÎÎÇmžBWq „Ž`”&ðßož]sŽnn–e|öÙg<|ø(ŠØßßg4­ ] }Ýö¦¹—&ÇàÇ?þ1ççcö÷øÁ~Èööv{QµÏ|<óäÉêºf4µc[C64Ä—ñ¶%WÍWf-{(\uo“ÉPEü¬”rïP{xRJfÓY{ÓéÔ}¾µk‰¢a>™LÈóœápè|›½"¨yNÍsëeM[ë’—RJêªrßo”.~þìZ¶)!±M›í¥üð¿ùvF›üóßýOŽÈ.fô†zQÌøø”GG‡TºFjK6õRN>„8œiøþì?RöB~vÿc²SI]9;³"w•—i’"…%I"¤¯ú¶F‘`M«¾0\.‘P–%˺Æb½7¾}1’ÖÁË,µ†(¸lÜo ‡XWA¹sj­Ok&Û*Ÿ<‰ÒX×øplÑø˜cw«jX®–’ëãKOþ­ÕP*”T û" ¦,\ÎÀÚjݽzµJc/%ö1^Ù,lg&Vö¢mùÝ÷+–*¹Ž•àòÿäÚZù²ñÌ©1TàÇ,ëlŒŒ±dYN­ Œ4HásëÆ+‹Eøœ˜8ŠÚþ(ém¡*«öüƯðÚ|½Ú'ä¦&ÊYb "E(TèH†¤ Cëé<úeàžo$[=‚j¯:ÀÛtº¨Ä†2èZßi¤4"h7¹Æh´©:}^ºÜ„WF ¬‘KU•ãj¼²E4<ÚW¼£µ#PY’§´6X¦Žƒ(tŽCV#¼"XíÛ„ï߯Û$ú,#W̵©1¥¦®+¬ÅeCxå#T¥D×V‡˜:Àh§¦¢&N#‚ æâ"ÃhÐZ$66vPñÈJ¦ F—X]ùwŽ•aB­¡nˆÿ†-/V öU¬ö}l…·/•Žhðv|ã2€Œ©Tôú!C~ýánÄܼqÀéÉ)óü ¿ùÍoxûíïr÷î›>Ëpz|B‘e”•&MýþL‰Ð3be‰"AöÚ’&!·ní°1ìóÆo²±±ÅÎΣ­-z½”þ Ïæö&<¡8ŸL8Ÿ3¹˜òøñøeÁúà“÷Aéñ¸b¸‚ª›õB†«œ'¢±ä§5ÍÃÃc†#å&n½¤)lŒ"B%¨Êœa? ›OQRp1¶T…¥Ì ,@W°1bMà˜s,'IaT`lኮŠá«|ºÈo\» ùºÁÿËÂ4›MÓ7N<øÍ¤´Â‡5ÕJc_ó5kÑ-€±¬Y·Š»–¶u™·ô³Xªe¶ÀWÌŠÖ>Ä^jíð2,Kã/i*˜„@úR!ƒµ®šH ÛÖ~[ ôï"qÑX£AÈ´X´ Yœí†IŠ%`%…Ëj°Ö’¤ IšPäqûÀÓˆª®øñÜúèëºnÁõ$v¡§ßÿþ÷[ÖøŠ­%!ò»=7]6îJ)FäyN?,+G/e4ϘN%r—PXúÄseÿ½êzº}{ÝzæUÛn“ÙÑ\CUUD¾’ùÞ½{¼ûî»Ë åµvÖõTã¸N?øàŒ1loosëÖ-š0Pm…¼1† ƒ«ô^Q^Ù•0ÝápØœøJbF)Åd2!ËæÜ»wwåù´UøJ¡ü5_]Þ­ÜWJ±X,xôèûûû ƒ64YkÍùùY»ÑW2XÉh@ Ë,oŒ·NYþ K‹>_ÁßÜ·RŠÙdB´b´æüü¼ÍU ‚€ÙlF´9"C—¥õŠ’­«fèRM+Ë’‹‹ î¼q—ÅbŠÓÓÓVÍÑXuÕ8‹Å‚<ËH¢˜Øƒû‹Å¢gš ä8ŽÉóœ‡òäÉŠ¢à­·ÞâÍ7ßd4Ϋy'iš®ä4m[)ÅÖÖgggüú׿æÉ“'lnnòGô}îÝ»Çp4hóEšàP€Ï?ÿœßþö·ÄqÜÞCÓ¾Û ®ùjŸs–]›³æÚ\nFÈl6ãäø˜,Ëœ…R¶ÙÚ_Y­êB)ÕZV5U¬RJ XiãY–1yçwØÞÞn¿ß„Òw¿®²þé¶Åõ±¤ûþº!pc·”µæprFº9dxc—¹©H=nßyk-§§§˜H¡¢P…Î>$±IÈb6'GsQåÌæ3]"’]:URQ­$P‚^¢°Ôu墭«o«ô»$¦W.5mF7ù2ÆRUŒAˆiÍŠšàêç#éVÞ6k†%zÛ/+@ÛÎøa[u_wLlìÚ±A©€( }xªhAêW9²,[yÏ+ ŽkUךÿ…(ë­ ÜØÝ£EDXú½>óÙ2ô¶6V¬Ôr·¹Uþ½8u‘h«Ø«ªÂZãU`E'K„Ž]˜5íï-mùœgA8Å%¦SÈ 19¥;Ÿ®‡ˆ»œœÐUý0ÂpttHY/ØØMm÷0ÞÒÈTBê¶ðB „qY RRÙ¥2P E6ËÒ_Ò¸¥OWnÈ:Ñ*Í q‘¤2„ cFJðËŽ•P$HbEÒS”eÑö3gWV´} ë,/‹²ðögaœ}’”cµ³`ó¶HÖ«NšM—5`1+ã#új„ [¥"Ö­oZ›,ᔬäÄ8«¼´ßc †rYeºcHÒ„²,Ñ¥³\Ó>tZ*éóF{ÒÂ6Ù“g9eYºõ—–nŒ´†ºª!+YRÖù$£ª-ƒÁ&º¬1Ú’gû •]×T¶pYV¢dä‹\nGYÖX”Wx´ ê+Ù«¼ØÖЫáÐ'gõ…p9ÒÖ„!kÀ–ÌçÇhs©güñþ˜­m.&OøéOÿ!,ï¼ó6wïÞuÅ%Jò£ýgŒ.Õv,˜_')iû{»l {Œ6¼ý·Ø ÙßÛfccÈÖæRX\¶WY—œóþ‡ïsxxÈéÙ˜/î?ääìœE–1MXdREH cÚc)*§<´ô‘bQD0ÚÛ% †¼±sƒ8Þ ‰7ƒ©Æ´­ÒÆD¡0Zó'ü¯ÀZ~óÑŒÇç€`c¸é².Ù«â‰/SåÛ6¿WZäˆçÊE¾Þ¸î«Cú„83{ï ŠðÀpÇÞÊŠ+û[ j®È÷YÙܳ`üêwº¤.+¸ÍSÕ¼Où΋˟·±¶ýB`|õÌzÀÖúü‚¯wœû}Û¶·ïÃ×w5@dUUËÐ\é·BJ¤r?'‹ UYµ¿c­³úˆÂ˜(йÿ>ºv™ 0™¦ RnÝÜçæÍ¾Éyskm.™ ~&0q5á×lŒû ë½ÚØä+ð/ùÖoÞo~»UÉë}äel”.#g¿ü´ÜÀŠN61–Ý]îÞ¹ËÁÁA[!í6ôÆÍ™k@­ó4†óósæ‹BJúƒa›e`ñ¡†Æp>ž ¤b02¹ðùMåxYd³ùœZkiJäAåb±±V¨*æó9Râ*Ú• Øl‚¯Ñ,³ÙÜ]«¿:ãL£¤8==e:r' ù/ì½W—\Ibßù‹ˆkÒ—…@;´™9\ uWÚ—=úÚo»Ú—=Z‰"9äÙ¾Ñè ”¯´×E„ÂÜ›YÓfz(Ü9  ¨ÊÌkÂüíöö6ý^årI¿ßgà߇° ¤+Rà‚5³ûÖ±JiÿgW’ÙD·D‡†Ã!ÖZNÏΘN§EA/Ï£[Dãr›mLV*¾vÓQ>K)ãc0ˆ½-ãÉ8º6Yèz­X#³\!uS¯ƒñÏÙ4 §>Šéø‡‡ä½;»»±œØøÅŒñ ïºi.D*„çáñ“'|òé§|þÅÌæsþæoþ†ßüö·.ó:M#¸bvŽŽŽx~p€6†ÉÖ£ñ8*ÍÓ4Eª©\$€êifŒ‰¤vP©Û ¢oU¬ÐëŸí^žG .YŸžž:"HHªÒE.u‰k-Öþ¹hX,—3ÙÚâú †CN' R)?F«xí%cÎfy¼\+)¶¤ädTÚJ–ðÅ£‡Ìë’ƒž!‡=¶ú£!ÙÖˆ:4‰ëyHÔýš“Ù”ÓjI³8¥·Úá² áÙô”¢*{7Ðb¹tñy‰BI鮃¬ fº[.Úëoh ²H²„¿³ µub#_ÚºcÙfqwK  ñÍ1u³³!ä¶ÇïE`êÆ‹+B~»ˆ`cw=f×ÙæŸGº·} ¾{igÇKWŸo¸ˆ—® B9s¿×g<ž°5èQ-f˜Æ0èõiTƒ”‚ÄÏîy2Þ]àzý„¨$‰‘mI’å=ßaåãôDGˆÑ!]W¯l;ÊTFÕhŽONã|!bQ|{ÏK¿¯ 1¸Ö¯•CWŠmš¸6™L&.îm¹b¼ÝwD*£1Š¢)ݳ§Z7®ËÀ÷S@A/S#Y-K¦‰0í^WJ‹¦e‡üuk#Cš*’,qH²uq´=S•¤H)È{F+’ÔÿËåcµ# lâ÷;ísè:ðDƒûyR*··Gúçȉ˜â~é~vו"Ü9°ë»(û‚g6t¡ÅˆÂNwߦÅá )³@JKmŠÒ9Å”RX*Éé ߦZ[ŒÆuSH E‚CT’°Z5œžºXÊ&Ì1‰BÉ ¬D…® Ñq’á­6oX¬ëÈÆÅÏ/ëë·àp»„„¹ +Pʯý¨hR%‘¸8/•\¢]ÖKLUprtÀjyÆÙÙTÕ[ñÑûo!mÅßþ×ÿÂÉÑW¯ìñλïzHŽÏÏ88zNÞKÙÚÚâÊ•«ìíîsõê5îܹÃ×ÙÞš0|¬¨`µ\0›Nyúì„Ù|ɳgÏ98<âùás¦ósž>scBQ5MpÊ`IÓ I2DÊŒªÔhã]"þºK•’õäyÁpBšIÓ-’dŒ} ™¡U‚‘l DÊŠ$inf5WöwÎNÏ8=;g6[ ³mò|iŽR Ú_o%%Ò*”MP¤‚Ä‹:|ŸŠ³Þ oŽ7Ç›ãO¿ašxyÍsw ¾PÍj°:¡n`>Wü÷ÿ6çÿŸý3d `2¤²$Ò:«¥ûÍÛçcá ß‚eå º‚]Y;åf±lÀ$J€Õ˜ÌÛ*(!Ág8Z µÛüx0Ië\ aÕä ¥L2¹¼Æ×¾À#1¦’=€%ü"7ªŽ»®Ø`ïå—qØ_¡Älpyªøé€¼½zµÕ.ºCžµt–í.n~:Øf7ˆ·P•íÝÆô %šø qùûr$S§(Ñø¨®N̆ríÓÉè÷›%­ß«x_kñKïûj"¼–ÞC ñÓÚÈ㹆NÙXés–ý%j›Ë ¥_Eó¼èß‹ÍûR¼â¾Ä•óÒÏK$_^ðüóŸí–X*› )Z»âߺÁ©ïe†µÎy „%Mu]1›M}aŸ¥ªÊ¨D?>>æè𘃃ÃX|'•ÄèÁ ùÍo>¢×ËÞ:ž(Im *QÀ{ŒµÍópÁµñ3>!^ìšN§XkÙÛÛs›d!}”¼@8×^啺 ?ùùÒàâ6¸Í# IDATª~Šsë—S«´#µ´Ò$¡ßëóÎÛïpóÆ çôÓÆç/‘(÷ùŠ7óeUÓ4š³ó©ÏÐ1ŽP*¥,k@PU5ÓÙŒóéŒ4Ë'°a¼˜N§Ìf3Š¢ ®kƒSïa°ÚÆyAx"¡, ”’(%é÷dYŽÑÆ÷+hêF³\.X.ÑÕ:‡‚2^kÍr¹ŒeÃÁ€º®#Øã„öh¹X8¢§iÜfÞ?ûUUqt|³ç”UÍý«×¸qã&Y–#<'¤ò$‰É{>|ïÁ²,/¸R»˜îXj°X­ilCc]4‰©á›ï¾å³‡_Q×5yªlOP½Œ|ÐwíV#ÂDIަg<9?f±¹,WS²Á+4Ò€’‡‡G R²l@Þ› lÆ`´KžŽ‘2£LŒI@äH•2šŒÜÚ2í‘&9B&® ]¤›`E†¶’&ôV`HdBHaH3 ¢¢,¦Ã¾A<}ú”•/ÏH$2–"îïíðî;o“H·™¶ïJk ­ß ¾°]þGœmñÉû’Ül)ÝFµÑÆ•ª¬#å8ØÊÝë›gÖx‚Çl¼ÄÚõùž¿á`ÛÈ)]~sÓÔäYN/ËxïwÙÙÚŽêýª®#Neͺ¢ÝGÞ?{þœƒ×å±»»Çp8tòZ£”dUœžQ–%»»;ìîî’x°Ðe û ¯'Šª ¨ ,†ñxD¯ßs9Ë&M³¶8ÓŠÂð‡†C§:3hhš†¦Ñ4uEU•¾¡%ò<§¬*¬€UQ0›Ï ˜\® –óÏž=c2™pðì9G‡$J‘(Iš(rŸÁ¬¤W:G‚4”àJ¯&mïøðg—5ìr†ÃŸƒÂ¬›Y¯”b>›ñý“'`,óùŒ€ºº±µÒf!× ­ÐOqv~ÆùtÊÑñ1W®^c8šŽ|4¶UÄ÷rù“’f)Yš‘e™ÏèÖ±:€¹u]srvÊùtJšgÞM ˜Îg®ˆZ7hÿ=<·Ö²X-½CDÆh¯g?<ãË/¿ääì”kׯó¿ÿûσŽFd½kµ†ÀSV5OxÆñÉ©+¸ßÙ%Ë{©ü:2qŘÖEW(ÿ,ƒ‹hãFl«Vï÷«ÕŠ¢(™ÎfœŸ‘fi¼ÏÜç0¬Ê³ùŒþ ÏÖöã­1u]ј†²*âøÊÒ‚é|Æl± ?ríÆ &[Ûhc}1j©Ð«£5ISýuŽ»1¼LTbŸ‚c`Q¬˜Îf, ~÷ñoyÊJ×4‹9ª—a„¥, L§÷cº˜£ÁJYJaHS‰¬-‰T4Ú0Í(|¤Üt6sq)ÖºY£cÊGʰ&ü°kqJáŽÏ²Ö”¥s %=é“y¥²t‹ÏâÁâõ!šE­b/šËÃ^#¬È‚ãT)Kbñ‘Ž£=agÚ˜¶ºªÀ¸bnÕ‰ ±×ìÕó¡ˆë¼né´µ—¯jºEÅëb‹‹»Er¿ŒÐáu›×ÇFßûZ¯ø¹ë·WɌ֯w fñyûNÍŸRTš¦ª‘º!ñß7›.±Â üºT[ãÖ ÆÄëa´;Ï‹ÅÒu—}.-$¸Ø>”ë‚‘ÞéàÖÎþ=šv³ñýz£ª›XÌã˜ü_x§_Õ¹õ±w3+áe.Æøõ¶DKšg¬Ê›XV‹’þ 'Q I’"*‰1߬42Æbqd]Óé3M B¡¼²Nxb4MÝïºiP´ûg'>¦Ø‰˜Üa×ø(kÜy].—ÝPU¥_Ïâb_¤+‘"ÁÑÙɶ¢,aA(OÆø¢c)¥+u6`´+!6îm7W ”õ_³—»[»ãE‡]¿“ûì!>Ktþû½ÐЭ1\ÜT¢w9„'EÉ %{4ZP,W+©SGDäîõŒYbtÍ|¾âÚ5ØÚºFÕ$|ÿü+,iÖ£ÑÆ ½F¨6²6<*q°…i‰×÷ÑÄ{­O7çO,û~ÐUaMƒµ JtÇWOÂYãˆ#ëâ =S’K….ç<;ø]ÏYÌyþì{vww˜ÏÎÔHé1­KÐ n޺ɿûý¿áöÍ+<~ü˜Çß~Çb¶à·ß¥×RkC6èñÇùP’»o¿Í_üÅ_%9 8:>c:=ç»'™ÎæŸrz6ç»ÇO©jMY87MpÔYúôú¬-hêŒç'šþè&ÃÁƒá.y¾…R#†ý]ÆÃ]° Ý€µ c3¬X¡]¸”·â㬠„ÂJ…•¢Sd!4HY±*ÎY.g³b2vóãÉÉ ß=~Ê`¸Ã`x !'‘;‰…ð=-¹y¤uNªØ-Lý†lxs¼9Þ¿Ò¡ tÚ*BhUÊÊ*¿pô%H[4Õ®‹A>¢ªž|;çoÿ+|ú ,äC°=¯üie;2.ÿÂfÝOyaÒ¶³(°~f=Oà­Ôq9)[µ…_½*o/E¹í½•Dµ ð. _’*üï~îüÞ]ÈnLy’Kµu,¢[œi¢áK¾ˆ…dmÜxA •íþÜ._áîPV)W(e¢"šm”φÊÏÈü·â’mGPÿZÙz§X¥d'§ñçlŠü¢\‰´¦-æj\üI¸lÛ˜M7ç!^ýÙí‹·:q!zIq¨õy±ñœû\oÙu3Øvãéãf-‡Úw¿7Ö‰ôd2DÁz4ÓÚ¦ L̾|óèâ0,GÂ!ñdœv …½.‰^σ-qC‰B§Â Néοò×$MÓ¶ !ùê;Q¼€ä¹|3û ‡huvÐö%€ñë–x 5d8 £AHƒT–Û·oqr:§®Úƒ“F[„’®Ðl8 ijNOOH“Œºª˜NgTeÅöÎÇGG, ªª"M“ዼ÷WvwãfÞ`ªˆÈxßJ)~8±^ïÁŸŽ6øñúèE´s9 }8ÔLÆÛ€o ôJ·.fa£rVE‰P"Ft#iºÅ»—}æK{7.9/rÉxíÝö4cA¤hO<()øíoËG~ÀÎö6‰R¬–+¯6st¿Ë‡6¼bËy¿ÿþ)ÖZîß¿ÏÖÖ!]ÌFRÕóÅmj>üà®îï;`%–ô:u¹ðV?—Ç캚¶¶'  wKZ+"`ß4 R)F“ýaŸª©HEæˆ2!ÐMÖ5Ú8Äzgж.ŽÅ ÁéÙ9ÓùœªÑô¤¢,+™N§¤iÊ“'ßSóù«ð]V³R’<ÏÜ…ûZ r¢"´s-¥'VupþÄ‚CãádâúOB_D–¦4uÃáÁ!Ϲklt„뺀“ñ`GšD•|¯×çá7øáùsò^Ïéeé\f‹9G‡kÎŒÑpHžå$ÞÐ.™N§¶Jp!˜Ïçñß—eäз ¥dæÿít:¥Ð‹Å‚åjÅí;wŽGTMÍp<¢ŽêSåI@É|¾àèè˜4͸qã&[[ÛŽ2þ²ÖÅ}­Š%‰:é>s®HÔ‰[BÎzã U]óøñc¦ÓsÞÿ}öövãù©›Š“Óc]síúT*)*K%¶z80YëäR…¤ªjGÆ hjÍ×_~Í»÷îÓ”5MÏ©N¥wBX%è÷z$RqzzÊß>&1°³µÍ­«×É…$E Át±àÛ'YUµ1P×<}þ¼»e]ßœg£%îÔ‘My/a±*¹yçgÓ)ggSŽŽNé÷FÜ¿÷*é£dÎáÏ™Ÿ³½½CY×|þÅ×,—%§GÎÕúäûG®L"G¨1ùð*™H ç­ê†ªªÑÚ²Ò ‘î2Êѽ··Çp´EšdIΪJ$Áë;1Bb“Ô‘;¢/¹=s¢ «&à„ÆHƒD¦µLÆþí¿ý[oÔðð›ÇÌ’÷¼1[櫱nþtwxûžTã!8‘x2¯yC6¼9ÞoŽ_ó>wU´°¬ð`Œw6ki¯HWîkó<óù'KþðwðõÐT¦CÓÃÊaLTÿûâ&„¾xwŠßk€jˆ^Ýȧ¸©Ð>ÂúrGŽiÛ…o°*ó;xiJ.ÿÈZÛugƒ¸¸&ïZ£¢Ã/جõï¹¶¹|пëj„Œ[ã¸ÅÞžßíf9ï/§0º´p4¦­€'–cýRدëJ¦¨êlv>Æ"¸^”Œ1DcÿÉg¼Ÿ£ÊL\Ø­êÚpG;ÒÅßÅRȵ{Äíß݆7¨ƒûÁÒFtaÛ»%ÄwuÝ ‚Öm…¸(@·DGCKİ$Äoj?i­º?&⾗ŸOj¼2Ðxe¼Ë©+4Æjò|H¯çT«¡,ìµñþWEHý ‡xÁóô*‚áUÏÓfî´Û %€[¾õÖ[|öÙ#NÏÎQIæÿdذe—A¿‡5šåbAQ”ÔUƒn4XÁ‰Õ<~ü˜ó³3¿aÕk‘y–ò›>dg{‹ºZEK¿6•&~ÓÑæi_:^q^Ö÷ñs‰ÇÍ×µF …W!øä“Oùá‡gìî\Afj}<²íl,4ÚÒhãŠc…òE°ág'Iò“\ ¿ô=+À_ë™Á»»»Ü¹}‹Û·nÑË3§È•îÙ”²q¬Yÿ^!_}õ5?áÞ½{ŒF#Æã‘Ï•6,—+¾øòKޏ}û6W®\¡—÷œÚÍgalJS· YçJ©¼¶qNÑîÈç¢É{9Ãá4Mc$PU¹Î‘º®qЃj¿‹ÓÆ0[Ì™Îf!|Qôìïï³·»Çp4bow—ÃÃCÒ$åÑ£G¨9-e̲σ˧9p Dg¬‹gðsŠ$ZÐÐF3_.899áèèm ÃáGâÓØ@ `{¤òüý)…P ãÁ몪ý:X0 i‚M:ÇTL ©V‹%Õª`xå*£~Ÿa¯€JÎç3ΦSŠªB[‹´6ö¾ÑUðþ¹ŠkVÓYǙ蜃Aé ?_3œ‡@ /0š/Çë½I̲A åb¢Ò”D&ným…'Õ MS;`Èó„$U(%I¤`83_,QH‘DÂÄÅÀk’ºUSxvZ·¨]»Åúÿ]2òü2sÉQZF Z;ükÏoö•jž×'D×Umãn,4!Ëz,K"¥ÂP• ÆöYÍŒ_³¾j'´q]DëB‘!¦UJh IY!ÑÎuŒïtˆ1²¾Av:Ò¼`ÃÆñ–è„€&öýi혺nÈóœ^¯çǵmw/ÕMÜ_ +(W%EQ²=ìceŸùR¹õ¸§Xa"‰Õ~¦öP‰'Gõû\ß¿`k*%×zam#žÝàÜ1¾[A[K¡‡,œ3Jk«èÔó µvþ¥WëÅ~¿™vµ ®‹Ààb°œxBùD¿±ÆîÆ »ÏØK"5žPmrݲî0Gv{šÖÇ£-çóE$”³$ñ—uUR¬ê2c4ºJ!’‘+ Æ®X¬Ž1fÅ0_ÎY¬V4MNžïb¥B›ŒÙ¬¦Ÿ»²s%¬Pa1"Óq´õã·zöëBÙ ‰¬ÅØfíÙ°ÊÔ¦DP!Eƒ55B4®àÀÖP•3–Ë3šjfÅr1¥i iš°¿3f<y½÷ÞçÁûoñÁïpåêUŽùÛ¿ýï|õÕWܾ}›]>ùäS‹9ï½û>R$|õå7œLyëî]Þ¾ÿÖšÆpðìÏ?ûšUiù»¿ÿ­ eÑPWn/àÖ–{ä½YoLÖßÕÇÊÌ/ïhÒZ;‚G»{1ˆ‹œ³'Eˆ DŠÆ* ‰„•í„V„m…ñÖ¶(Þcnÿn­a¬ˆ©XÍéñs$ ÷ïÞbwg‚>ûüKfó%Û;oÓëïQèéñ ŠŽ+ƒQa¬ö,ݲáÍñæxsüJGÈ ÞLî·~rÕV·€¼r1o‰ÔMr)ùò³%ÿø÷Žh(– u†Lúq»êp#,DGYt©”†®²«óײ£f!ž¨û¥X/ݔʑRrÁ (¥ˆ…JÂGO¼8²ÒƒËVêóö‚²Òµ,Qûz@¤]ç]^¸VYøA¡Ržèp/(!&dÓ¾ |X(ظ\›oRŠÎ¢yLýŸ×mˆš¸˜8Õ€ìämÓ^RùS^oíuZ‹jPžºûݬÝÇ—Ý)ƒZ‡¶$Zø¨àJa}>¬»–º1ñÏmÜÖæózyˆR(±jc".Bf."dógÚ5Pá²âµ®Ùu8øx/£¤±±ÞÎa¬áÖ­[ôû=åžã{îí¿Âá'“e—\/:QUá&ž$ âþý·yÿÁ!G'Gšö¨ƒL$ÛÛ;ìììølö„ÕjÉ|>wÇ*uá¶!MÒ4£ÑÆ—'N…-%×®^áÎí›Îqf5Jª|õ¬Ö‹â^ö<¿èÚ û㟻®2¶Íè¾8~„çIÉb±àþáȲÌ}cZ޶@Ï Ñjc©%ñ$Y’e1G)E1Ÿ“çùwßgoU‰Zk&ã1ï¼ý6ï¾ó޳Ôû­b$$Ûx„ùÁzPVkÍéÙ9§'§dYÆþþ>Ãáˆ<ïù2]·Q>?Ÿ"„dgwÁ`Hšf˜¦" y±þÎh&)ËŠ²t±^J%Þ^ß’û¡|Ü1š<Ïèõú¤©s44MÃb1§òÀ¸1:FT+h´ûo©‹Õ‚Ó³Sê¦B%’ÉxÂ7øàƒøøã)V+²,ã믿æèè(½<¿4+}í4›Ö È{]Î6¥Æ8•_YUÌf3ʪ"I®_¹Âõë×¹{÷.»{{ úÒ4#ó¯…Xíç-)ä¿æÝ-Úÿ½ÞˆBZ­V<ýþ{rÿ³ûý¾‹­¥ÂÀÞî.i–uÜ&ºÒ,sDOíº!6=áž Ýáý- ¦Óit$iÊ`8ä|:ECU×óœÁ`À`0 KF£_=|H­5wïßçö[o‘õzíƃêµÖ ª½ª×Ø %훀søºÖš§OŸ²\.ÙÞÞ&Ë2wž½Ó¦©7~ª„ñp»<\|FÒž;k)ë ¬äÛï¾ã|>çöí[ܼs‡ñÖ6A¯ï °“4sqSREO¬ñ$–ÒÍ‘Öø9´U4#`µZ9p=IH:åôaÌ+딋8«ýùîõûäƒ>½ñ$uïÝH§Ö ãâb±`Y¬¨›•&ô‡£a ÌKæ‹%'§§Ì †Èuw­[­`il×ÈbÑɶ7~ÝJMýë‹¡=læÕàQV#ÄKæ6‡<$Ɔ’ÙN‘µwŽJá!`£ÑUÅ›7ÉU⢻üJ.vg½4ïÞƒÁ-: ºB”­g.tC‰Zÿu¦{QðAX˜Ÿ±³¿è{³Ö:wŸ‘PkÈÔe¥0V!Eô|lPh_zµò¨uÿ™xß Á%¼{RРÍI‰ò^c´/64^øCì,Þ ¡Þ…Õv"ë]C¢%KÃ:\)E?ïygc‚Ö uÝHƒÖ¯¹k–Ë•Üç†áVÎp8ÂÌg˜Ú»xb©µ‰³ÑA´‰t²|Õ¾s@´s–>ZÓÇ-û(*ã]?q~Ñn_n„Åh5µ‹ôAí}A8â×ÄRÈh:icXýÞ¸¬z¬E…¢hÑ~¿1Î!”ˆÝyÝy#¬ŸBtiÀDZǦë…ç” P „DÐËòö¾1–ÕbÕŽIF¢E]kVå’¢0X=ÀêŒT% cFƒ«äÙ„^oÈbqγƒo89{RP Ë¢@ª>ˆBôH’Ĉ¦I"Áˆ+Fh¬0]ÿ=Ájï­´='æ´îüjÓøþ¶ÆE% »J,%M5ÅêC5M½ XN™Ïç¬Ú IDAT4M‰1K0%JYÒÄbí’Q^1Úó›ßü†¿þëß3 ±Æ0ôÙÞ1™Œ1Æpewýí]Nÿ×ܼy“ƒƒCþøÿÄ»wßfw²ÇjVòßþËß‚ìíì3ÁZ¦³_|õˆé¼a8¸ÆáAEÞÏbÈd{43^e<¾‚Júˆ$AËÚõ ‰ëJò{mkT+¶ób+$†Äw)/,‘è΃þ¬¥×ë1™L°Öòüàcak{‡ñd+ÆÒÄþ)OfÕFXß`×íé#ÖZmŠ¢àøø„²¬ØßßwkAقƺiÈ’Ôc^`AùÒn° uÓPW5Mc˜/æ î¿ýÛ;»È$Á Ac Ûã±ï0ñþ²Ú)|Î ‚ÙµØÆ¢s)%£áÐe¤{@Ëú|y­½“Õw ¬V+úý>£ñ˜ÄGiá‰@ŒIéœ!Óé”F»÷÷zký ®Û¢à|6¥1+}4„1k‚“.É`Âôæ€öuAÃA>"е5eSm‰­ÿŒJ%®…HJ×&D,÷µ¦uH[ç§ôîÿ7lL¥$Ïð*É‘*CªÄ)Ô…/ Ñ)/èK¸0o„û±iX.—?~Ýû¯n÷hï?o‰d/pï>ö1%Í{ì_¿O’_E¨XåÇh§ɯþ,Ýù@Š6zǽ ¦.Î8>øSŸ¡l¤qñ—Ö"¬ò±…¶CЄ½S ³=XîKŽCÏž†r÷¸rýƒB:w´ôJk,(Z *]ƒÐTMÃùÙ9ÃIÆp+#Ï{TMƒ±%u]{sຣ^^k°F$Ÿ½îºÎÆgÒu)ÚXÎÄu¡ÿo«QB*éE ¡ÐÛïé_ÐY£”Œ…ØçOÛ¬Ó ¼„ žçH $+ïÞ¸õ‚‹0„3µ1¡­³ªo×F¹µck;w»Å»´–ÔÁщÜ5ÔMEª’L’õ2—ñ/2ò|›DÍA @äX½ƒP{ô»dù‘(wÏ›>FgX›tzô´¿6ᤘ¸âmµõ…ïÕ´ P¡M…¤vêRÇÖ cJÊå!U1ãäô€¦^"ô«Ý:bow›Û7ö¸}ç=Þºs“«WvÙžô©JG¸¼óÎÛôz}ò<'Ïsó9Ū@«å%»Û;äiÆáó>ýäS~ý5ÿ×úOlO¶™N§,Kò<çæÍܹ}‹Ùrβ\ñÏÿòY¾Å•«o£uÆÉÙ”ñd›7ï#åLKÚdΠ! Œ²¡¦ )º…vësGøž¸Øò‹îª[^×]´­€/Ó^µ ×z)… Ž™´".jí+ì×?¬ìþ )7¨ùº_¾œz3æjóú½’¤£“=Ü}ýîäòx“uÍe@}Pêt’FkÒ4]Ë ¯±=skg|u®·{éF`¼ì{×6Ë/9ÏñßZiɃ`é–ÂG³€BHò¼×«ÿÌ=çÿÄïÚuk¥´B$”e¤eY²Z­P*wêý}öööʲZÍ9:~Æýû·¹wïžßÀ(vw÷ùþóÿËÁÁs”T-('\<Æx¼Åoû[b5£Ñ¼ÝšÆ§ÖtÇ7flD°tïç?͹òJoIœSºÏ@y’À‘_ÓéÔ“_f 4îÆ¬Ü‹‹åßalµÖ2#ðfl„Ä/v¯Ð’›8Uvc W¯^e{{ÛGlVx:njŒ!nžµ.öæûï1ư··Çh4ò÷‚¥,K¤”<}ú!%ÃáûwïEРßï³X,Ü5—îgÖ>ßj³¦w‘Eë;3c ‡‡‡\¿~=ÆDtUêÌ·žÄíÎç²sT¢h´æ­»wyðà}ô{{{TeÉ`0àää„~¿ÖÚÅ:a Ôh7˜ÊÇÇlÎi¢Û×½¤’Øšx/ºÒf½uëÖ-îß¿O’$ôCdM’Ðï÷לr#ã?üüápÈùù9óùœÙlÆ÷OŸR‡‡ÌsWÔ¼X8 ÓB–¦±Saóþ‰Q¡`¸±³Z9P`oo/ÆY%IB–e$>«ªªøýIÒ‚*EQPUW¯^åî[wÉrç8??o´–E‰’’ù|Îáá!u]³\.±ÖrzzÊW_}Å`0àúõë$I²F¶Xw „@¥*º ×ÀðÎï˜T×5Zvvv£à$'Zk¤”ŒÇãxŽºóq]× FC’4Õ<ùþ´n¸uã÷îßsà½/ñ ~FwmŽà$é˜Zkʲd>Ÿ3 ¢ó#Ü—ági­I¤òqaO9;;ãöíÛ\½z•,˨ªò‚È <χ‡‡q,›L&ñgæyŽ’£“cʪò©víšéEá>¯=†…hÁ…ç(¬}»¤õ$W³„D5”•>—]b­¤1€v™é!’2®½m+αBt@9‹JÒŽ¤#¬­ Iš"dêú,4L­]º¾{Æ^ »ç¼;vÿ;(²Ó ôæxåàí ÷Ž‹ Sh›RkA|Ýý±b ¬ï&´µým«–\ˆKzñë»»¤7°ZÎIl‰­Žxöø zIBj²$¡ñ·]*R¤Pž$ÔÓ¸˜!Ñ须ϋDè0U;'ƒ°ä£Œe5wÂéÔúR)× !R•¦Ÿö©êu]Ç΀4Ïxþü›[GÏ‹\A—þ÷æšÉq¬4a k/Œ=Æ„w~ëÚÇúx¡n\\wM¢Ó‚³#à»RÊ6j°ãNŠ"¥bc‡ƒ«Ä¹%ƺ¸AÛØ¸§%Æ#R¥H÷+Ë\Ö†ªªèöÿ…}Z÷\*•`|oŒXò}vÆÇÍ&IJmÀRÓ˜ÚhNÏ%®™M ”tÎÃýÝ»déˆ,ßy ™ŽQBÅ©2Ð9–c¼Z^{ E/Ì0¡Á®B$(k¢$‘x$¬Š)e9c±:§n–”匦qÎÒ'¿E¡I¤qt­©PÒf’×v¹qã*ÿñ?þŸ¼ûîÛ ú=F£!Ö4è¦f±˜³½½‰š°nèF0~÷íC¾ûî '''>òÀ¹yú.1ã“Oþ…ãg¤™àãߣ,æ,S–ÃîÝ}@–_Cˆ=¶w·@ô1¢‡¶Òúî—6aû©’`-÷»•ÖÅ Ò÷PºýOWøê0’U®8ÔG* wÔi'¢©ê£\píê-Ò´Çwß}ÃtvB’_C7í3†¸dÿþš¯7dÛãÍñæø“2¨ÁcÑk»‘0€HœX ¨¡)r¨øú³ÿø÷%O¾…bRŒ"'IRŒ4ÔµFa0hP%­+æ²¹A4ü4Å«$A´:Š–µ•R´å;kÎ… ‚3BòkÈ”’Ö;ô.®W[GB„^EÜl]¦‹åmûòæ‚®ûïíÆ¢p­¸NØÏ%ŠõÆ(… ¹á^¸aà^HùòUÓˆáõÓgíe{ Z‹¯}Áæ ÆMxKr”&ÐöJðÊ.‰MÀ®³Yµ¶íÅ€˜ã/ºj=Úkl¼¢os¡?Cç¼GÐÉØEà.kt, ·g×u¨YAÐÉ9è44zÖlŒÜ]'å.#ÖOªÈè„h¢Á~|))d[Ðè§Áÿ«ëê¬lû6BòÉ'Ÿr~~Ε«7™LƤ™WA ͳgÏxçÝ{¼ÿàvvƱ+æ‡ïŸóìÙc †UI’¨¨ ÿðÙL&(Æ4žH­’Œõ²ó×&$ÿÔ˜ƒ®¢Ðиâ:cl$ûvvöB’xÕ¼S&vNžÄÑ~| l êª~­1qóóçP¥†ç-(­µäyÎÎxÄÇÌG~Dš¦]ûòh:›pÓªŠýÔ_W5gçç<üæвdwÏõÿ7ZST%³ùm4ãñ˜ÉdÒ)T4œ1Ž'¨Ä¥Œ‘>RJl·k¢¾…ƈº®ýÆ~=AàÔ‰Ü%ÇçgØÞÙÞæÎíÛlomQWÚÿü^¯G¿ß%´àÀšn‰røsw.‹EÜ@D\BÎÆïAÚÙbΪ(@ò~ÉÖÛÛÛôC×;¦ ‡C’$a6›¡”b8:zQ°Z­X,ÔuÍ_|ÁÙÙGGGœñÍ·˜Íf®³!Qñ½õû}êªv V.ÆEôz=ƒW®\qD‡R”UÉÿøGæó9EQÄÈ¡à°ÝMݬ­=¡µ&Ïs®\¹ÂƒøðùqãÖZæó9Ëå’óósNOO™Mg¬V+êNSY–±ßãË/¿$MSnÞ¼Ééé)½^ñxÌ`0p×Mµï)<²SÚÞ%ƒZµ®kNOOiš†ñxÌh4ŠëÑp¯†>–ðl‡5D "Š¢`±\q>qvv†”N­¹¿·ï¢Õ¤"Ïrò,¤ntuú7½S”¥/ÃlÏgUU‘P‡¨$‰„W¸M,VÌf³H¨öûýH.]Fn¸”ä nLô×\Öb±ˆóMà_*Røñƒkq¯9îm®ÃÚ®¶õbm÷Y¨ÑÉvóH¾ 6ˆŒûºE"d‚±‚F[TT6ûŸýŠ ©5²G´Jf­ —”ØýϳDiGÀ_ý¥×ö6ë}k]4 "¡Ô‘ ©õ#ÈÝZÖ€ÝpÖ­»±ÅKß„E2_*”ÈIÕ’ž>DIE*%‰†Dø\´ŽòÁ¿1; 8Åz¼!•#°D‰• (PŠ“Å9©p±jík`3•»x%1в ±%vê½aÊáñ‘WhKªJ“úˆ¸ØJ¸!†2¢¹ø÷¢]|k‘vÓðq8hÇ0û‚CÈø£°—ß\…!„ï²Ó—/"ûÜøÞfðÇ>ŽølÚH6ˆN4s˜WƒÓ®i´'µL‡`PG­Ûèè^0®cKk‹©ï+JH“­ÆóгÙeÕ Äˆž0n‘gc²t‡$ÝDz‡•=P VU j'|óû=ëÏ’Â;Ë+„„Dùˆ Q¡¨È„AÙ £gh]1/ ‹ÅŒÕjÎjuNQN©›%‹ùY\CæR(A¿—Ñïå¼uë.I’`°.öåôŒ²(H“„½½½¨PŽF<öŒ¼×c±\"„`2™PÕ5;iꀛ p"¸ =®Å•+¡"pÀCŒ CU×LgsVe‰LS²^Ÿ$ÏÑÖÍáü‡Ïì 8==CkÍññ1_~ù%OŸ>åààíãrš¦A[# ‚Š3t!¤^¥=™L‡ŒÇcz½^<¿ý~Ÿ²,]an–Ñ4 {{{¸žÏç|÷íwÔMÍl6[{é®kžç¤iÊØÇ¹½÷Þ{Ü¿wŸF7dYÆ`0¸PÚ\%óÙŒÊß'‹Å‚gÏžqzzÊ·ß~ËùùyÌÆNÓ”<Ϲví[[[ :1L£áЕ”o¨’»ÄQÓ4eÉÁÁišrãÆ ß¹âÖ„Ô*Š"º9ÖHõ.f«å’çÏžÑ4 ñ—ÉíÛ·QR’& Yš’¥)y–µ9àá™í”[ãî±ÙlÆt6câ#—À¹/VE±&6X#½;ÔZb¬Öb±`8Òï÷éõzkN Íc¹\F·R–e±›ÂZËr¹d:²* êFû)HøÌúõ®&)^ÕVðç½×Aº­ˆ_(µë:¶[bíÙn&²Ýü6mØ?çƒS _Ü×ê¯í3¿ ö\8:/Û}Ÿ¯uD§“úÏ3u$/r}?·Vjý§ƒ¶³ ØÜÇíìï3Mª‡5}¬ÎÝõ’*vú™0·F¨ÙWÌ¿6ÁÚØ‚Š)§'GÓ Œ‹ÂXé3ßÍF7¢mE~q!ÓàܤC„²XUbU…*d’¡äÀ•'kAcšSiR¡I¬F© „¤6e³"ëI„´”eAÚ“4.ž©$i&bá½è ²óç_õ°ž÷îC+ñÿNu ­ÅšÆ‰tpj*/tUëz}h]pxæ»b‹î:â²xÞ®#lóZnÖRîs…1Xû2k­ë!8-„/â5ÖÒ8;+X—áÖßU!)&\Ü—5)ºÔuÃrUP×DŸ­{ û×éçz½!YoŒ69 Ëþ·RaeOLpnåÉ%-uSz¥JKšò˜ª<¢*Ž©ëF»ˆÉ¢XQ¬VS#dš. A’dŒ'[ü‡ÿððW¿û߸võ*ççg<~üc,ÇÇ'ŒF#nÞLCuÝ0=Ÿrrr·ß=á˯òÍ£ï8<8æ|ºàô|Eš¸ž‹étJžfHã¥'„êõ2æóŸ}þ e¹âwîsåÚªªdk{‡ÿû?ÿhrTºjˆ”} ©°´mÀW|- ‚k‚$bUîvÑE)º)‡Úa2!fž‰î¨ÿòqO†®ÿ3mųJ”©XÌé÷à½wï²³µÅ|6åüm{Œ¶obåmuÈÒ šÁß—È'Ë$¬qzC6¼9ÞoŽ_oݨÝRKX¯¸@[%ǘOŸÔ<ü|Êçÿ¬yòz¹BÒG%NUf|Ѥ1†$±hÝáJO8tU¤?¿ë„C$º ‹îÄ`/LÒ»8BæâŸšlª†°8ÒÆZXíÊt­Å±ðº°k ·ñeÄÖ÷3¸Ò-¹–Ý^GvNºƒØÅZŸsŒ‘MŽ].…ͱ ¨±ºßr›4kA[g»>/¸6Æ©†ý}҄ϲ¡¼{!Ùp¡èNÌÔÅCkwŽ ¡; ¨úÁ`!íó~cîâ…×{‘=Rtœëà¿1Ýu øeD£w 9¥±öŠÜp­»¹ÅÚ¿f"•Û°G’u•PÝÞ !6R'Vzò0܇~“®Up؈XR ³Vå×–CŠ6Kù²û=ȯ-.^Júƒ>ï¼óÛÛÛôòåsYiB®A‡4qñYIª8>9á˯¾â“O?¥n®ß¸Æîþ.Ú¤œMÏY.VLç3ê¦áÆÍ›¼õÖ[äyŽ®k÷>6Àø0®- æóù²AÆñ¨oM'.! x íÜ(ýü‚S¨y²a¹\²X,è÷zä©QŸ=îzV+nܸáÈ&¥È{=f‡¾!âúÇt˜J)"øÎˆ4MQI».(•Ãè)ÜÏ ]“í-úÃ!y¯ïÊÉ¥@xkø\³ÙŒ““SŽŽŽ999á»ï¾‹.†¦iHW¦|ëÖm²,e²=!ÏsÆ“IŒ8 jõ4I©Ê’­­-ò<_ëmýá3V>j£ª«èz˜Ï]TÇb¹X‹Ajú~ŽJö÷÷1Æpûömƒ‹å‚ñxÉ®z¾ª*7ç^»æt:åÖ­[œŸŸsçΣprr⻎ùá‡ØÝÝeÐë3èõz¤IB/ï1 Z§CÇ}žçårÉéé)Ãá]OD-—óø~ªªŠß¾78%º‘^•/ýžÍf|øá‡¼ýöÛloo#„ˆ@¯×[#<6#tºJÛÕjÕv:ø{°ª*V«¢uLJIÝyF„·>—««ÕŠíííèŠicÖÌ…HKç\1œŸO¹óÖÝèô1ÆEŠ”U#Ѭu%ÝÝéÊn‚¾?a,ÿ)㨮Kc}f¯1gl¼vøþn µïé}hݬvñ?Ø{Ó&9Ž4ÏïçîqåY7.IìžirZœî•L»«]³‘é£J¦o0ï´Z[›±M7›Í ‚ÄQ¨»²òŠËÝõÂÝ#"« ²Ù=63’`¡*+2"ÒýyžÿÕù™nXvWn/ìŠf\tß/‚c áÇÚ¿øú%„¯æR°Â–qíðjuÅyQŠ$Ô§>3Àú`o,ÃÁi:Dˆ£µqŸ§¢_‹ê±I¼äô]P±‰J 4Œ†'³ !ê– fÏ]/ÑyV¬ðaðÓÐ{\o³g› ”A¨˜¤×gk몳cª+ªbÉb.Xœ9µ¡1¥Ï±±X©Q1 Ç}Œ5L¦gÌò©'¸L¸nöJS£YûÒ»#;àëê ¿£Â²!´ Ñ!ÎáÉÛá®ðk•ÑŽllÜ9Dþ• V6–Zï„#ÛY¹Zâ2ë§®R±®k|Öt‡tulp$É.á+€eYy€Ñ­Ð‘Rølißç»së°Âš¨Q¡k ¦vaÙÆJêtÖ(–EI]Ä úln¾ÃxðƒÞÒ4¥Ö†²RޏG都ݟ%PÙÄý½±¸¥º&ËÙËåÂÈïÞe IDATå‚ZŸaõ¶>FW§½DWcE*&Rq¦ˆ¢˜$îÑK{H!¸sçwî¼Ë­7oóÎw1ùôÓO)Š’8ÉÐÚ°½}…^o€ŠÇOžðßþÛåþW÷X.—ŸL(*ÐFamŒTBmPwÒ~†05؃¥Ÿ%\½v‹áøä§O#¼ýÎ[dYŠPkãoŸ‘öÖH{ëÛǘԫ„_ÞÁN¹š‹<é²k‰ù]{‡ñŸcªÎ^PD\\4Ä…lGÑùªEIå׃´†:Ÿ±˜Ÿ ÐÜ|ãWvvxþl—ç{ÇTuÄpt’>ÆÆ?3j?Ç-¡H¬L}$Â÷^ƒ ¯×Çëãç™^€Š¼‡¥quFŒƒ¤Ì{Ì&Cîß=áÿ¢yöt‘ª”HH~(njÏ´¬¢¤@¢&ó¥Þï?áØÉ Ëy!Ãἤ1.4)¶Q'èé' 1í 褢 VJµÊÞ$,ÚZÇ6·vÕ.ih¸äüŒ·æi䟢ÃÜèŽ5„1Ö1ù­Åêºüt{e((ƒG®9¿a®†|‡_%Caø‚ˆœÕ‚/°k£›F­®t†¨Wò¨íÈC«ÀƒµÒËGkH'7¬mûÝÂÖM8d[H¬¶2â…€ƒó n¼I=`TêÊ73Žu†|Ú˜Ž\Úb¡…L£ i2|S¢HcI¼÷°ŠÔ p~Ξ/vš„¶àªÛFÁ£MVø°DÖ3HZfŸìyÏ÷އjP‹t=7à €J¯ ßu˜‹Œ ÍA uésG4IÒc÷ù3?~‚öŒîñxDÖKѺFE’8R¼óÎ;œœœ8–ðéu]ñüùsž=Û£,+@e©Kvø;wÞassƒ³éJº ¸º®I’ÑÀt?` ð‚üO5 ç·óûIk1âžêù|A¾Ì›aµíºN)|ÎÄææ¦³ÉÚØ`8’$ ãñˆÁȱð“4¥×ï5`R.ÇÀøk§µ&Ïófè¾\.)Š¢gæ‹óż±2šÍfN¨TcñBºÃuʲŒ$IÐZszzJÇ|óÍ7DQÄ`0à7Þàý÷ßçÆMVÆ`0@á€'­q’°½³C]×Ü~ë-g§tïûûû3™Lxöì™ó×β&7BIÉ|6grzÚÔ}Ë<'_.WŸ-­ÙÛÛãÖ­[ù­kÆã5êªd2™°X,ØØØh,¼ÜçßÙ+-—Kf³išòôÙ3&ggDqÂ;w\¦D76A¹s˜ _ vmB®ªºC­¼(˜L&lmm'i£”ÝT[ÿYš/Bh}}½ Ûóê–q/:¿+BëUK0wþš½ý=gÍ2j‚å 3xT7‡éçu‹ïOZºh­â~P›Ö¶´ÛN´ª5DžÝ¬<ÃÍ­AÅx¶o›²jçr^‰%„ÀjC]ë6p½«T™C»qN“+ĤKB…½Ð¤©.äó ñãº@ôk­q6rë€p¾ô‹²))ËrA”dX]bˆVºÌ¢È{óÛòRr“´/Éjj³$I y~ÄÑá"Yb)}–‡è¨‘m«j ª¢Ó[_a±¢@%.Ú)5S"Ùc܃-éúX2Ó%2Žˆû=DaÁ‹9i/¦7L%©{ eY1Ìú !Šb¬­Z&·oo‚Ь!x[šõ©ymÇ>Ö[Á´·<ôÛDq„ö}öj&Äj—' ¤;ov_{»ÎîZåÀŠZC…&Ž#„ðj>ëúëÕáv¥×5+ŠðóÀ¯ÖQ ÊÈáÁI)I)×5kdçÙ°‚²ª*rµRQ;i¬kÝ{ÈóÊ«"Ï0wÀ¾©j„MÀô¡JQõc"ú²b}c ©®’Šë {·A&äµAªSK—` Æ–(¥‰DE,4Ø„%׺*ÈóyyDQM89ݧªr_OÕäË9V*z™«)–.t9Ízô£„7nÜ Ž#n޼ŕ+׸óλ\½z•,KÙÜXçÞÝ/ùâ‹Ï˜L&UÉb‘“õl¬orÿÁ×Ü»ÿÁ`ÈÇÌÝ/¿pêW]£$Š×HÒM„"U+ÝSUëãã1Šœ££œMžñ›ßþc4‡‡‡±sõ ·ßzËí¥µáùþ!wï=`ûÊTµ@Å ‚!‰1k%ÆJ„ˆ]{,dã,°\œPI—ñrÞJZI¸@ryÎVìbcb9¯Â€^yÂÓ 5u½ Ì§ùœ7®^ãWõUQrr|ÂÙdÁ›·Þc:3dãVKG&쮿Þ6ÛBÄÞö¯‚s˜¯Á†×Çëãõñ³€ ÖH¬4(Ï^²Î6’2<{Zrïó]þø{ÍÁ.h3$IG(j°ÄP› c¥ó®óÞ~¡(9ï¦~\âÕ Ö4Õ¸8Ǻx±”3¼ÂÏc£Ô6¬È>5˜0àö|ݱ^`X]òΛíl•eÒhÁPvŠzÑanZ¿Š0˜>×,ùøy°h¼†Wª  úÀ†>ï" Ù-­u  }¥‡¶)”;CÇËÞe£lh›lyZ~A°¥²/V®|Øä4,´Ö€Ôž=¾X.éõûmƃ+>ú]ë¥p³"å‡B¥#ÂÏ̦sžïîrzzÊÎÎY–±¶¶Àææ&½^ñxÜ(Âõ‰"…P¢ñï¯uíÁŠ9yž#”>dx¹\2N9::Z¡ïe3pJÓ´̤iJ–elnn6¿?äp»«¢([Tf³Eî,”TÌçsÖÖÖX[[£®kzÞ)NœUQæ‡ë›˜8‰‘BòÆsvvÆÑÑ_~ù¥râ˜È³gu]£kG+N§.kÀ+5šýÓ,iš2ž±»ûŒº®œ•V‘óôéS€æ{o­åP]×L&–yΕ«WÙ¹r•Ñhä,¤’”,ë5ê.¸ÐýóJˆ©TuE^äMrxžÊ²¤¬*z½½^ã‚Áî+ùáz/¼5Xš¦  ±¢rmêrël-æó9I’4ª†ðÙšL&ì>ÎÙÙYóÙlsÅVÇ) 9þú<\¼âϼʾۜ·NéU¦9Þ~BI…lÀÛÚÞxÒò{½;l;Ë®¦¸T'ú¯¤y|Ùy7oK¼àg\m`:ŠëÀ(wÖ6+µ¯¡¤H,Ëm4‘DÔª~D·†nOþeŸR †^ªÐÕ! Š|BÚ«¢v–:(V˜¶¯³ ÓÎܰӱµÜž["D™@(° Ö¸ü]W âˆ8k*([ƒT…DÄ–$‹ˆ{  ¢HQ› m ÚbʃÞEQú\'»¢Ê³æ\¯M>”1–¶õêXðÊ@ìpQ[®L“Áã,9Ýï–q„©+êZ£„³@ Ù N¥D^r…b-è¬uVF2êd.ŠË?ëÝ5·ÛSi­‘ÊÕ .0„MÔ(Üüõ’^Ò}-¶¦’-àîZJÿYwSš ©I˜Ÿ $=¤]GŠ5úý1;W6‰â1*ºŠPC·î¢A @U¨)1:Çš‚r9ãlyˆ©—yÅb9§(– Œ8ÃØy9ÃâööÑpĵíYº°.Ÿ-RÐë9›ÂÛo¾ÅÍ›o²>Þ`4³¶¾A]Æã5ʲäë¯ò?þéŸùÿüO]²¸OUkjm(Ê­- 2Æ)«kŠÂ’$=â,fs´Ex…,»‚RëȨG©+jëj'SU c”*8›åŒÆcÖ××8==櫯î2ö®¹zý:VC]YŽÏ˜ÏkvDc{(‘H|¨~°¶ÞƒÎzêòq‘¼då’]¼ß+’^¦Ð³«Ê%/¼êb8èQæSæ'3¤¨¸ýæ;ln¬±˜ñøÛÇ,æ5Woí £µI¼*VžáeÇâÐ;Œ„plê¦x­lx}¼>^?ß¡B ÐÖy Æ1”5Læpr¬yøÕ‚?üî}é‡Ó¦"KF©Dù£(KŒUh+=Z,] pSSúB¨» ÏöWfºZÇ`ñ-ÏŠŠ×^2\œûƒ0íBýs(–»9aà8îÚÖ^–+WÞâeÊí¬÷<аjEt™ý‰ìøÚ¶ž—1gçz!¸ GµþÞ­0Oº?Ðô•h±Ò¨¶2SZ›§Ò⸤oâk_Èòâ@b@Ëe7º{^ ¼`;‡—³¶ âêþ}£Èæù—熮áyõÅ]ÍÂhžWÿ>µ°ÌŠe[Üû°IV¿íðNzV™QÃŽ ¯)¥ ‰#²4%V‘\¹¢÷„"â ÒX…øš8Ï⺼ Ê&k_‡Aç³Ý}ìüó‘&)Óé’?|ü)E©Yߨ ßïÓëe$IDQ,X,füö·¿áü#wïÞãôtâ®»leíRFÍÇ@)ÇÜ­Ê‚{wï’¥ŠßüæC®^Ù`¹˜’çËVê.~¢÷õ“-¦ç)Ÿ«VJŽ…ÛxŠ¢äìlI¯7À&Y ëvšÏª6TÞžîúõë¼õömîß¿ÇþÞ.Óé”õñ¸ùþóA´êç¡»ŸéZ{¿~¨êšþ`À_ÿõ_ó‹_ü¢bGòâg-ÚjòEŽŒ&·£Ñˆíím²,k<ôã8&ŽãF}²ëº&Ïsâ4&ÏsŽON˜/æXk9Ø?`oã£c|ÆC¸nI’4¯?¹yó¦óùï÷ MEx_÷ïßg<sëÖ-6Ö7È‹¼É†9Ýkîk°ð<øë{õF­›àå jÈ‹‚ª,Yæ9KŸCðÅ—_¢ëŠ'Ožðüùs’$¡,r¯£Æ…Pì6Ìçóæ¹ ‡¬¯¯sëÖ­æ’þ<«ªjÔ%ý~Ÿ¢(.>üõ],—,óœ¢,}HwÙ„e'IBêïUw­ `EøÜ % %Ž$º÷&(TÂyõ‡ƒ&ãCk÷ùL&0* „T+‘/“íXÛ~nKºVA,^ Œ‡Àðð´>ÏÇ©~-.9»… ¾ë}©ÐÆRÕó¯c8ž|"ÅŸx÷u|]C‡€[o¾…AR—. !M“¦°è¦Ç¹¤…|»Ü"ëýQ#SYËÁþS”ªP¢F ½õ˜<[}Ž^3ŒÊÊÖR(ŠQ¢ •FÎÏXt¥)u…¶†+¬ÔXUcd…JR5Š¡ê!#P¡Üþ\ÕŽ3]U‘ˆü'I’Ø=ƒR „‚zUu~î~NXÊ iªÝ³MCÚŠ+¥œ=O–eX+(uº„ §Ürµ©”âÂïwJ_ã†öÊ6Ä0ÑØUÙBVw?µOèºàƒ³U­Œ¥è‡ó¸8Op6‰umšþIëóD<ãmN¯xR@‚µ)…‰°"%Ín’Ä;$ñ&ƒþ–K†P.³CÈÖÎÁ,1¶B×S—Ë)ùr†´–åü„º^¯Ÿ­èN2Æàl$Š9Tž~ ‡ûðÙàñ×àɱDB' B:Ë¥ÊÛ|ø„j!߆Áe]@l×OHñ#À†0‰“HqÎöæ\±ÔI46KB´, Õ †üS5<•áÉlnàï‡ÁJHŒ—Ñ]fšJáÔÆ˜Vºl/rs/¼k/‚þ˦Ã<²¾çœúÄ^>Æ¿ôšYûòžcE$ ^ézJÄŠÜý; …K®0àÂßùûª¶ã‚±'ÝǯÍ2ðD—¼ý 8 ˆf¼ôöÜõ8™½m€Ó6J­?B£Ri‹aë%Ú+œ-I7´kYÈÒÂû\ ¢ŽH£òMPã6ì}mƒ2 Bà¹Àêd:=a>?áûÏÿ+ëã>±’îçÿr¯ÒÊ3Ø¥æœwo$ÝõûERó ûC)E,Ëù‚$I¹~ý:}ôƒRŠé¬¢(tâg}”;ZûÁ>QŒÖší«¼õöÛܹs' - Cϲj¡"¥£íQQsôì¿~@Qä\»qƒµõ1BB/ëa-Lç3Ç–_Ì0ư¹µÉÖÖVc+àÂíZc8Ϻ®\È­g¬O§Sz½ž³<êìm]æ÷t:m¬dÂÀv™çÌçs϶ÐÛÖ+=dÍt}ð1Žñžç9×®]ãí·ßFHÉöö6eéB«ªâþýû/Üû»CâÅbÑøúkHÍE ‘B8eÁb6g1›a77‰¤rùUÖyW§iÆÚxÌöÖëëë Þð—yaø=›¹¬ûï3™œrxtÄb¹h®wàgYÆUŸ‹¬¬Âp9Ë2†Ã¡¦& Iꀈ"/Ø}¾ë^­°¾¾ÎΕÆî'ÏóÅI°n àÈãÇIÓ”/¿ü’Éd‚’Ê´õåiÇÍ×»VB¡þèõzTUE–e¬{ÕNCRž}j}øf€ÓäÌf3f³|ðÓ锓“cæó½^Ã}À6*…`S¥µæøø˜ÙlÆ|>op^¥SUŸþ9i/#ж·*¥×ë5aÙáž6uÜ9oñ,TUÕ<“yž7 ]¨O­¦º€Cx*Š¥T£Hq@¡nò@ºG°ÔHÓ´ ï¶Ö²¿¿Ï|>oò+„”nIù7B8ïGß B—Rb„9Ç õõÏKjÙUßxéðs„¨Ë~¶+2ýYGø¯²ÿü@ƒÖ;F¾±Îò*qcU†ŠûXªZduåÃ{e·>>°õ’ÓÿŽöd¹,¨óœýýgd1.ÿP؆Ee Mþ‡4Šö¶hYÑqѤ¨D’ëÚ‘D,+DU¢b(ë‚²Ž¼ª±À ƒ béBu#‰T mé,8½Mµ^uW:åGE 0à!ây íåhŸc)%*R”Uq1oDˆ†˜”¦)u]3 HâÔÛòUMFÆ8›!sžVw9Ì#¥¢!ë§Hr5›ñ¼*¼ÍGéÔ+ýŽÿ)VÀ†ÕPùU«ew ܹ¸s7*¼éÁ0(%ˆb”E^3npx¸d:­HãF£Äñq²F–1•ÒµžauŽŒ,—‡TÕ!*vwŸ²XNYÎÎÀhv¶v˜œaëi¢Ð•åêÎ&·oßæ7¿ýˆ1Wv¶ ûììl;›K¡ØØØb29ã½·Þ"IêZ³\æ @PäyQòæ7ùì³Ïùø÷Ÿðå—wùä“O˜Íç,Š‚µuö÷‰Ó„Þ`Àxmµµu¬b€”}¤ê±¹Ý£ß_c}}‹ét QH Ð6ÁšÔY+ë”<Â)†¬)1zÉl¾ä׿þ5ƒá€÷qt|È`0à—õ+úƒ!Ë“Je<þö) (+P )·ÖJ<1Ѷ³¢ j¡…~µQÛôâ"›Û™9œOùYµ4 D>c,‚m ”´lm޹uó:q$8<>âÉã'HµŽ)B$,f%£ÍµÆB¬y=Ž lèf‰®µÇk°áõñúx}üLe¢l=.­…Ñ0ã«{9{àwÿ<ùL‘0êeÄq† ÒZ¤¬Q ´•¥¨kç0oeg#ÒyÓY‹°¢r7 ŸýLç0à ,qA'ˆO´ƒÕs~ûJÉÖgRˆfØfíOkù|:W› 8HßÀ)2f‘DÒÉåÔàîÓ)Š­°HÙ¢6`DgK“êå[‰yaÄ2/mœÂ†)F±{¿—ÿùûÚUIH{a óƒn½ížjýâ;šÈöϲ1~ñûo3¢¹ø—5Yr¥(Ž“¤ ½TÚ‚ qràH)\`†\¹¡00 œåD`e»Çå2æMðSuJ£PuV•tak³åÜy“JIê¾R¶ÁеÑD_Ö•axí„}ÁóÑžO£ä›(^’Eòo¶†vÉriùì³O1º¦?§)q’e)uUG1o½õ§§§L&§ô²ÔßézÅ(Š#t]5ŸÝž„ýÝï±%ÿÇÿþ_ègé÷`.þ¥^?ã}…ož\xp’¤+0¶;d2åO°¯yÿý÷9›œÄn˜zzzê†zIâ|æUô¶}¯ 6Ëè>µÑÌNçô†#þæƒyï½÷ W)?Œ5(¶±Z Cc I’Ïf<~ü˜ÝÝ]¹ ÁÌnðéT §§§¥Ê_ýò¯V,fB3†Ò]'°¨1¼ñƤiºšíÒ¯²2|íÚ()ÿßîÚú5<òûhðN·Œ¦$Iˆã˜íímÞ¸y“÷ߟež7ìï;wîðôéS>|ØÜóð{Bí®À|>çððÆÊÆY˜&[¢;¬ ƒøåbÉr±pƒ ±ŒÖ1I…uv8›H?¬Ã`ݱ§ªëšÅbAE<¾Ç|>çÙ³gœžžòôÙSªº¤( Œ5ôû}ƒóî¹ýæ›Ôuí¼ÿ½õQ÷Y 6U.·aN¿ßçôô”‡rÿ«û¨H±¾¶ŽÀYô„󪪊étÚ€ ! YÁd2áììŒÊÛýûÿïFH)Y.—ŒF£œê¾Ïçî½”nÏÓÚÚÚJŽ‚©5Â+}ʲ!š÷¸¢€1¦vvv0ÆpvvFQäh]aô/VúM@ó’““ŸÓæ DqLY–, ,—q’2›ÍUÄÚÚJ)nݺÅp8d45¡Ûç‡aý¾~vvF^äŒG㜠Ù%Ý5@JI¯×ãààÀKYFÇÍßé ¹ „- gq¥;;;ıSÇÌfSž?ÞXm5 ‰±²=î¼r뇿ÈE€à§º¤ˆ.àsa¶a°ó}k϶7 5«b%|5;¢öù—4ü©€ŠïSµ¹K+^sßbŒI©M™/ i–Ñ5®²æÅŠÛ†äób¨ƒ,‹)¦D$Z¡cKÉâFg9lü¾Üc0%”u…´–b™“˜# ýAÏåh Š"(¬IlL¤"’, •1€¦6­mJQí`Òú€[ÙZ +eY·Þkr$C +À÷Ùvª¿X¢ˆõõu¢(vÁÖÖ²Xä+ À`;ä@‡6ÿ-(e`›ïÓ*­=ÙÁo +_¸¶tk‹nݱšÇ%Õœ1.*R #¬SН(¶[ËG#Â{04¸¡ÐîÉ!5IcŒbwwÇßž²¹y‡×ßb{ãB¬3Ï fó’¸&ŸŸ2;;d6;¦Xž¢T‰Ñg,—§S¡"Á¸çj)]ï£ÄÖ7\–Ôßþæoøû¿ÿ{nܸA–&ÎîÒŸ™4ÂËätÎé锺*к¦,ë•Ðzk\oû/ÿò;>þø|üûOØÛÛgSµßÿ IDAT}}ÑhÁ( ØÞ€ŒPqBœôX^%ë­£âu¬`LŠ=T4`YK¢ì*ÚX´‘^ÅûùSî¯!F)¾º÷€wß}—wÞy‡$IøüóÏ9::bûÊ5Þzë"•e '§güîw¿ãöí·ü}¼ØÚ†íϹpæ?s×áÞ»éÉd“'OøÕû[\¿~k-Ož<æøø˜›ï¾’Z†ƒ!Fë–àÛÙÃ.#B½h| 6¼>^¯Ÿ¡Ö«1VcDŒŠàÉ·9îÂç¿wÿ¤±Û§—Ȳ!,VWHë,TâÔÍ¡˜•^ )_¢V5lìÀðï~ÌrÝÚðãY¬m0žŠö}‡‘d± =Ç:P¶ñеßÿW²¹Þ Do®ò7)•øIÏnwƒðàÝ}q ŒÛñEJ¾äd/QpHñ}ÞÚÅïí¼Xø¥ „–.ïá°Áý:¹ÚØ«W6 o—â@¬ïnX.*>ÄŠO÷Åœ#É‹ºÛ¢¬¹œál^Är“]©¥@ú0µö´.Þ£îû >Õ6€7Ì À <ëÇûÆ:¥i†©…€€J»¢ZJIí-Ò8,FX"ÿþew(ÛaG„'sUtîm­„ËpYÞ\JI`“¬<'?§éó_Ò`|å¿¢ñŒ¬2(³ÿíSž<{FQ•¬÷ûØŠcF£!‡ûX£¹rå üŽŽéõzÎV(Ÿgb΢¶‘Õ HH!™Í|ñÅ—Üyç6¿ùè#êªîH®Ì¥¶n®ëõÝ@ºhÖ|Û1è–R"­‡I›¦4|>´gzÇôþîïþŽÃƒ}>ÿìœgMƒÜS?>¿áû^Ã0h ìçGW5J¸Ù8öƒ¢ð½Â R"oÓÒ½×!?!X8cøã?åôtÂþþ>“É„«×®f o¬¿ÁxmÌx>n‡ô›¨f”•“®N§Sxòä GGGܺu‹^¯ÇÓgOÒ Ú–Ëeμ¹¹éÃæ Ož<áððýý}ò<çƒ>àÆ$© ¤ŸL&Ìæs†Ã!ÆNOO¹ÿ>Y–ñË_þ’~¿ò€YÈ V6Ý ã8ޱR¡œ´†~¯·¢h:?€ì8º®IÒÔrÒ ‰8G1ÇÇÇܽ{—½½=æ Çò*ƒ^¯G’¦ÄqÒØ¶X¢Ç±{^ʲdww·QYŒF#vvvØØØhB·ƒJÁÕ…í{;99áôô”ªªè÷û$iÒ¬wM`³ÿ¹ÅbÁÉéiÂÞ}Ž¥$xõ™³Ø(šœŽ8IÈz=’$ÁZËÉÉ)''§,ó‚ûâs4‚Ñx“,`H<ÙUxe^›©#›,ÉÐ ¨¦sÿ®õ¨%ÿÐ|–E°]ݵÁ®Ì„m;å•UÏ«”]yîÔ‘ÒÌÎQ¢âÆõ67¶X.j¾}²G”ôèÇXÿYŠT„‘`Î!kˆõ½ÿ/ºóÙ¬ýÿׯÁ†×ÇëãõñóE¥1VaíO¾yÎÝ?½ÏàÛû0L%Ú(¬X’Å)ÒÖ€v>dVDTuÐÎ j?뇔ÒÙÁ˜d¨] “ˆW.¡[:,¨¹i.Ø´´ë¿Ow0m¡—ei¤ÒÎçò_PúMÊvýûXùýŽ)êÀ§lðrj륚6È«»¯ÈÝñ^;ünlrï¶?–©ÞJq¿j!"^6Xñâëo…c*+e…5TµkÖ­m™¸ ƒ¤=Å-¯Îlwª™öÅPÓØ /sBßÕ…ÂEv²ìË¡ÎÒŠ•_f;#g+\á»Â¬R¸  ¾àõ½ªA°`!Þ>ÿƺ׶>Ä®,+T­YäJ â("ŠHIb¥š€-gæÿlà Ä{çáš7*JÀ³£»±yþ¬è ‚LK+^ <ùW4„B®:É«†„¤æ¥æó»_1/YÛØb02èõ2Ï0>ãÎ;dIÂÉÑIè%å¹AŠõƒwåZ5•A[÷Üìí1=[Ðë ™ä“•œ©Bàz’âÂ@áügðû2N­x…-à;GV[”lÖwš»Â’sV5R¹& I677xï¿äøä”û÷¿¢×ËÌí3Qd'+æEž­?<€Y–±X,Úœo¶p@åŸßµuTùY÷ÜuÕ Úƒ5ÇÇÇh­Pãm¥ouá­ÿóáÞg=ì¥YFUÕs6_  hðÊF^@žèú“¿ª£œøIöPûîÇA æê8%±tV’Öh¿ÖÛZ[|÷¹YUURécYQ34ðÑýØë÷2…Èåv©/K5èlnâU€ˆòµ¹ üg¥G¿¿A’ 0BRW9JXl­=±À©í•YÑRŸ ãeê’¨«ÎÇjbQRÌèÅÆ)DäÕÐÂ×à«”!+ZAH—Õg¥i°J»ú^B­Kb; OB$%HK”FÄiì³T¢ª©µ&p–¬±Tº¦(ýšÜ©DI…R1I’¹úß3Á•´ÈDt²ÊU•u‡eq*©¤W*[êºZ±2”>¸6ÏsêZùõ1—]Õ‚¿'Ö5KVwL‡£8RšpJ|Ù8.€©Ðc}³%¼ÜßÓ(ÑÔÐAiaMíö€R£Ë tbRo¥d%RFDR‘ÆÅr^2=™3ê­3ÈúœíòàÞ—D*ål2§,k"‰) ‰,Q=W« 3z½5†ƒu¶¶vxãæMÆëcÞ¸y­í-66¶8::fgç ÿôOÿÄÉñeYðæ›o²¾¾ÎÓ§OùøãyüøŽŽŽ`(ŠÖjŒ­b˜S˜8Õ1+ Ù #I¢È"TIØx-,”Ú/,óBͨx(ºÂúød$#U‚°–H:ROUWXcY.'ÔúÕ¤iб 'gæ³çüO¿þÏ$‘dZW‚ï·¿ý-£Ñ!%½áþÝÐ6f¸¶Cš¨ê „r}³Žtêû÷ {à˯۶;ù>3á:¨Í.: ¯tŽX×Ég°íº”»°¢&&çdÿ!›ë’ÿð¿|D?2==ã›'‡äZAœ ãS ¯’ò¶ÚrÕòËÕIÁ­nffRXJ$Øü5Øðúx}¼>~žÃx¾{J- ÀÇÿÏ –=’Á:¨¡ [›ò|AG.Lψ†a-#¿á‚óˆUžmhݦ.<âï6e$%ºÃpñÒŒxak<ÀÐ2þÛ G·; x;ÈÂyù 1%Nzï}Ï»5tòÔ™‡="0»Ýy+° áQâna),7¤“×t90Å ÒWW¢aƒ4°íèY\ <²í4:¢)Û"ÜŠUÛ£pî¢AÙWÿÛX ¸¤1B I¤¾¨tÀ’0+¯´²ÁJq>”¯eÚÿ°6ñ±…°ßÑp^Îd_Z\¬òÍ/·D ÷B¿Z×|‰å|^âëla[~SdHåXÒ‚PH¯À ´%\|Öº:ܶÌÀÞSؘŠÇ>®#ƒòϱîuº9(ªÃÞ°H„(±"s²I³è>«MãO8qþΚQüÈŸýi™"„‡t_¢¼ÝOãÜ‘û‘R€6š,PÕ–³©ûŒo¿ý–ù|Þä t-ΫUBòb±¸ÀG¸ƒEc½WwðãÈÙ(K´©ÑV7A³XæK‘rvÖàŸ(?Dr¤ ¥§“ΦööØÛÛgmm)\S¾XÎÉó%Ë|IU»òb±hØëeYRäùrÙd9„ë¹\.[pÅûU`%÷‘½~ŸGß~Ë·OŸ4ÁÒª“¹Ñï÷ùÝï~GæÃ¿…Ìf³&è!¸uëR)’,mjýý=ÜÀ³§OÇ\½z•÷ߟÑhä¬>üÀ*ø ¯ ]†-n Ù_Ò¯Gt‡cÝ”eе 7pÈŽ\#¥"NÜàj4^CªˆÍ­í öšÁVn6ŸÇ1µÑœM)+—rzzê2N¼rhww—^¯×\‡,„6í>‘{N«33¤IÚäj„uA[§F j~TuÅÑÉ1ǧ'EÁÖÖVkA"‚µ˜] w 6>ÖZ^ñS%Oww988¤(Ê&L·1Q+õÛ¥PÁ´¼5ð•vÑÎgT5`/‚ Á¢§FŠ”Û1ÞtS˜FïÚ±.2¯«> ‚­híà„ð ç&“‹&BˆË´ m3~JÐáEöEûÂ<5?Š Ò*Ôý H‹Š%FK¬¨¨OQ*ÁZˆdMYÍ(‹ P!Ä*AÊ>‘L}.]/'c`ûÏøÚUIålûÂЃ©Î¨‹#”ÈIúʳ¶!°îÜÎÔ·yQº!çYa -Y?u!Ñ^6.;µœ±:Ö¼U]3=›R,K”¸ÏlUWÔºµOrψh¬Š`Úö¦‚(r¤5­Ý9i+±ÚzËÀÎ5×®×ìú4K@HŠ¢‚²ö6¯•W¹Œv¿³5JEÍú¤"…© R¹õWHã%²Í@!¨Œ<8@»†YÇ\¨ôE»¤Ëþ?RÈFaoëÛrcˆø~R´dÂÖ~ÐÙßm©k·6zÔ&Ì}XQ*e^¸ë]XæÓ‚ñvŸ>ó÷ÃP CšâÐ I ư¾–qýÆv¶·Y__ã­Û·¸²sõëôûc¾·šÅrÁý_3›Íø?ÿ¯ÿ›?þ˜åbNY\½z•,K999¡(r_«†Ä P‘ Ö2ŸM©ëŠ8Nˆ¢˜8Q$"UQ[CY8‹Š<à%Ãõ5¾’œÍ¦Tõ 0c{ë—¾f®±B …ÅØ (1fÆÓg_³\S•„0¼{ç”&¢Xœ’%–í5ó3ŽyðàY–qåÊ677™Ï,fSž>ßC‘öÆh«°RºO]cÿ+š~Mø5·18 ¤WÑYK~àÞa;Vwm'býò&iWªðý¦±á”R´ŸSe~Š.'Œúš·o_'Ž$‡GÜ»ÿˆÍ›ÎšJô°>èÝí?¡Œ“x`M4ja5R” ”X‚X¼^¯×ÇÏsô²ŒºÌ¸ÿpÉçŸÂþS(DY&±JsóÖ›¹¡V]•Þn@c¨;Á> k$ÚâåaÖ/znñSÒ!‹Õ`¬p›òCDŠÍÑVSLµÙ«¹çÁš4Méõúôz}êºfßQ>è]XH¢¤õ5¿P£´öö÷Q)~ïìKsÂ¾Ç „u{%—V£,‘¨`ÙjDYUòÄ9ÂŽðö8+ö+žÄQÕµ§Y§C¡n Óa¤¯Ô93/~:á;j£ÙØ´¹iæ…•›X9çóçÑ®ý]ÏòïMô°¾ƒ¦²¥cc!eÊææ 66®c¬Âè AN>ÂÑÁÔõ)VÕ\¿~“ÉL0Ÿ• †CÖÖ¯ÐK·¢‡TÎIØ`o›àTk±r•[szò˜ºEŠ”XdÔ¥f>[`ôû}¢D9{j©ØÙ¹Ê­·¸vå o¿}“õq,¹ze%½lÈî³÷8<>b¾XðàëœNN9:>d:=su@¹¤65Qs|zìíÆt“oÑ& ¦2 ’ƒñ‹ÅŒµ$¦ÖZWR3Š"§˜“å•Áô®¼]/$q"!Ï —gcÖ7ÖXæ%kk‰ñ„@(M×,Ç,«gìÿw„X"%2ªz‡Íëìžðᇿàö›70zŸŽD°³µÍí7ßt9ƒ‘äÁ×¹ÿõ×l\ýk1ÚH*Vj„pÖ`²C°íâ Þ œªÐ÷f›ùYi¡r }6V]¢éÉÂó+…%ðZ‚ÊBW5µÎ™Íùèƒ[l®÷‰âš‡ßÜãøìŒ;×~…µ›h½† Ö:¢9KX[Ð`ÆŸ“1(i0ÕkÎÀžœ¾^¯×ÇÏsLN*>þÝCîÝ{Â·ß¸áæ ¡dBkú£ŒÛ·¯3ØÙ#…bz6AI/§Œ$* «¦¡ ”UMYXScL"9Ö¤P”yåJy»€¡Ž² Ü6  ®/4J`©uA]çÔ•cÃ)9†šgÙ…b8„å¶r|7ÕFg}&g•Û4¬½àÎoÏ‹VMœd«ÿÇ•¿3Ó6¾(ƒ;wn³´7 6é÷zÄ‘+ܤŒÜvš&/Å a[AÆo¬ðƒ–Ú79t0¶òL4 \€´rC©b¢(vï];v‹è þm­©+?ˆ0šº® &ŠUcYá }‰ Aʘ,ë#£ýIÉ|9áIÎ> $ÚúfaŒkJ^ÑN©ëú≾xáߨïbä½ô¼.±ëú^ïAœûVñÂ_-¾ëu„¸ä×¶e¹ì°{¬Dt¿÷B°ölÅùrÖ¦FÔn¸Ì Ç—Š4‰IÓ”ìÀIÒ[©iße¤i­éeׯnrç;¾4ÿ6_+WX™Øña¡*f¾(°Ròùݯ¨´emcL”$$iÂÖÎG‡Lggüæ7¿¦ßï1™œúÇÁ´òsc±Bùüš0ÙolFÛ[.\y]W¬¯o'=„ˆÍˆC8ƒŠ$MX¤ƒ’à;¬Ã¾Ç§áUU  aA¦Üf5!ØÙÞn,“Š¢D …PÿU‡N€µÄ±Â˜ÚÛÿ~Éի׸yó“ÉÔ+Ü~g;kDhhZf^Û|ˆîç°Î‡®µu2>ÇRû°Â¼(Çüæ·¿å׿þ5W®\!ŽcªÊYZéZƒ”w½±ÖÛ€ a-'§þðÉùüóÏIÓ”ím6×7ôûn˜ŽË ©«Šå|Ááþ>JH®_½Æ°?`Ðï“$ UU56JXÈY9i/逇Ù|†1ÎÞeÐïƒ%d°5ƒ?pͬl†°J)¯ŽX8 ;Þ2Gûû4ŸÏ=³’&pÙÃÁÁŸŸ³±±Á‡~ÈÚÚß|ó ÿøÿØZÎxåV÷JµÀ6a±áöI?Róy•®ˆe‚¸pN µ®‘R$1óÅŒÉY²XÂñ1ÛW¯Ð H²´±i(ŠÂy÷O&Ìn€]–%Új¾¸û'''œœœ°\.)Ëb%kâ²£›wqø{Ñ÷‡½¾(K¢à`ÂZo±Ú‚w`¦ªkÖ××ÑÆ ‹‚ ñ© IDATƒÃC²,ãþƒŒ×ÆdYæÂ–GcÞ{÷]Þ{÷]~ñþ/ôûDQÄÉÉ ½^P×5·nÞÂBc=t~hº2 îÚ|¼àíIzK”Ï(«š×r W›sb|ý& D´­ ù#þ:eYF¿ßg{{»y=ºœSМå”D*Å|±hòU‘µžmß®ÐRˆËë~„°“瀸2Ì~%aäeºÛ ,#åˆB]Õp'&«Q‚^ô7_j‡ñÖâT)Æ`DÈ\Ã8²îÙ ù`®>¾ zý^ie?´ùþû¶W¨Š—‘.ÛÛ»]’Àþ`K¥öûý+¼Ç>!"ÊÒE Ë¢ælr‚¶{äËÇ,g÷I’’J—ì??B˜”"×UÄéÿÏÞ›=I’ä÷}w+ﺺŽ>gº{Žár—<‚iFš¤‘4Mïz‘韓ÑL¢(Ñ(#E p r;ÇvÏôô]gVfå‡zpÈÈêîÙ£ ÛŽµ²šíªÊÊŠŒ ÿù÷œtÙÝbÿ6y®™/ Ò$%ËF¨hΡós‘)-ºšbõÁ‚¨ãEBøµÖ6.™°õ ;¿.c±¤ÓÍèºt‡²®ÏÅ·V"ůmUU…¢g‹Ö‹eŽ B1WwØÖÌSÉUT_}ßá'œ3íïY'E†ø:ïÜ ûeæHÿ‡’Ù­”Ó2Ä´äG±ÂánÆ^,H¸zŸ"Tè‹p~}Ž£ÖI¬I°˜ Œ‘T¥ÅT¡t9ˆA„“áµ¥q¬ú›V×àËÖÀvÏF»ØZXó±6¸H(ìûÒ¼ R&^4XßF;Ëæ‚ÑÚb­d¹Ô,—š'ÏŽÑUI¿ßãâÂÝ,£ßï!ô{t•7ßëirŒ·Ç¯>ð`â9oq·Æ«ž#7©¾@™&® ~¿D‘¨‹"Ç9Ç|>GJ…Rûûs63Ÿ/H66ÐÆ B¶wó¼¾âï¨ÁÀ&F©Þ¸ˆUw‡ ïÓʬ )hÝØÚäÊ•]Þ¾s›ÛwîÐétЕ!‰|.¼jEy@Ø“„2òåZÆãs>|ÄÙÙ˜ýý}®^½J·Û¥*ʇUY°\æ\L'ÓëõxëÖ-:YF'õÎ…*ijÌf³¦py¹\2X.—TF³\,©ÊŠ,Ié¤ÙZÙjÅ•¡©<ÈEqãN°Ö†¢dÓ8ýš@¨ö}©.©¶¶‰©É²¬×ONNxúô)eY²¿·ÏíÛ·I’„'Ož¬ð5˜Û&6êŒûÚÕ¦)QˆòßÄ v*5ïéPÈìãp–ÄIÒ€‹ãñ(tE·ßc0’v2´ÖMÑäbÊŸüéŸrvvÆÙÙ'''MF]È\ÛäÛ®†ËÃeׯå¯_ž«Úï/%„¿Ÿ_º¦m=kY×$uÁÎÎ[;Ûì_=À9Çôâ‚ù|N¯ßgk{›?ü¿ñ£3ކäËœEˆ9ûøã9<áéÓÇœœœ0›Í©*M¤R–ù‚Ê”•FߛᬦÛHq$‰%²"ËÒà6õs°'LÂu†áðô1yQÇ1*ŠI3‰ "(/üˆšèÜË0Æb´/,¯IP/pá422X;ÇÙ Ÿ¢äs¬‰™M'g™LŸ³\œÐéh¢86­!’9&?æðÉgÏxðàÏI“ ¿ó;?âÁƒ/‡¼÷Þ{ôz=ªeÎÙ䜟}ü YoHo°MYI ícEMcŠ•hÄjö ";×"œåÞ8qùÞü"9ü"‰Ýþ·º,)‰¤âbzÂéѶG1ïÜ} ]•\œ_ðøázƒm²ÁD)¦•3Ö­yX üz%\è~̙͟¡dÁ /H®î ªcž»xãlxs¼9ÞßÃq11|òñ#„0loB,S¤„8†4sĉ@*KšIË)FCÅ¡LT”R–Ú;jæØÕQDµÝ=€ËM¼‘ Š}‹Õ%Z—^Í+Áò³Wã~È‘kŠpos­ ¿Ñj2•ƒ»Àµ"?$Aaa5N&”Ph£@ÿNËkk}ΡµV ˜Kp9ÎEX!@DàbÎÖùºõ2"Ô*ç>œO[—¿FªÉ¯\)D]S´hÅiƒ3ž”PQÔÉBÖÙ˜nEd¸U鑾‘!âjE^ÄIÌb1'I–ìm ô;X«É— ½nx J4+r¤Ý'á Cš_¯$ö«"kVkþ/ÏÕw¯ˆÄYõ¿k4\´2Ž]û‰üŠ?][Bm–_nU÷Ù²'ë|0‹°í2Àu ~{(÷ƒºx|ŠBöýQƒÓ‰ 4†Ê®®?OHHv J’„A¿ßd¼[à¯Y,¼Rù<[c˜Î—\Ì<|øˆå2§(5‹eÎã§O*!I; G#F£.Xæ9ï¿{—ª,Ð|´Ö¬œuGkCõ²kÅ%»/HM¨*ÃþÑä?ýôÏQʃSqáµÖ\»ºÏûÿIš…{Ó·w¦|×pŠ·½G!3ØC?¾7'Z)•/ATƲ,âJœ#Ë2²¬ƒ’’›7nðóŸŒ@/stOûh %* @xSdòÂù~™~ÓÇŽ‰ÖæÇ5å¯eU‚’©¸˜ÍØÝÝã~Èû?ø»»»¹îÄ­ÈþcMs_=?ŸpïÞ}ŽOȲ7nÜ`05yÄLÏóœª,¸¸¸àìô”Û·osíÚ5z½ÞмÎÚ5¡Žl©ªŠù|¢|W’r­ìןÓdI;GªÖ DcÚñþ³¬ïo 9àcN¬µˆft»]¤”˜NÇH)¹sçÌçóµûš«\æösôe™¾lSJ¹~7³Nóü×ó£M8õ½X)Åhcƒ~¿OY•LÆcîÝ¿O^U$©OWU…RŠÃÃCNNNšªòñWQQ–%Iâ‰]Üfiš6îǶSãedC{}xÙP_¨íÍùú÷®"^œµ~Ž_>Y,òš\ iÅ1£ ?wÎ.8>:Â9ÇÉÑ1ã³30‡ìîî6ý¿ì}þÍåõ¿½}¾~•ÇhÇŸ9çç1…ZÅ ŸM>HdŒím´Ötºº½.×o\g<sttÄóÃÃ@¬ù×p>ŸszzÊÖÖƒÁ ¹–g³™wœä9“É¡<ØØét°Pòe7ÕvÉt’$¡sbÊd2¡ªtÝùr—̯ÏBë^¿ ŠoÖ‡4‰‰#…4v-ªñe×ȺÓfýAkRs¡´"Ú1„«ùØýæ /üý¿Â÷ ×Nu®¾_GXë†è*§*‹ù)ƒ¡`o„Ð ÖhTš‘¤Cóc677ØÞ°Ì-OŸ0ŸÕ‚ÍQ†¤¤ª&>?'íJÒì…^ «ç¦L'OH"C$#¬­"su€±êC«gŠÞ ÏΕm:ƒ;’n„•¾óÇ…ˆ;ŠéÛEuɳDAÖ¢Æïg[Ä»1M”’ îm ÂØFˆç¬ïüjÏøu v=Cj­‘Ê3ÿôŸüsî¾ý¬OYVÄiÂÙäŒùò‚{÷î1›Mxôø!Ÿ|ò ‹yÎt:c>[bc:™3‰ïT(б?ÇÂ"dìÆI‚æ‚J—lïŽÐ:gr~NÒ‰¸²7 :°ª¢b2™"¤FHÿZhkÙÞÝ$Nʪ (–ž+kõyÔçÆÚÐ1btãöƒç*JTƒ’šéô]j¬½O¯·©`¹\€ÌI3HG)5PR•ù¢dV\ äœbY¡¤£*w Þãþ½O9?“Ä1ï½÷ÞJÜ’ç<}öœ¬Û£Ó`EHG/J‘Ò; DKùO+¶t-ºôkm#[÷yÙ²¹½¤gT¼låt´ˆŽ(Ĉ–8[p~öœÛ7Rîܾ30>=ãâbF§{•nļTMÌqMˆû¢vÙêl°XmYæ ŒÖL&GœœÞG¸%E®r$PoȆ7Ç›ãÍñú£%[›Û9ck#&Q}ŸË[´-üÂ$ ¤ÒlŒº\Ìrœ1D‘òÀ£¤Y—bY„· 2dýg¯è ƒC3øÅ,Žc nn–u$’Q(jEÁ„ìÁU)©mòîÛöæáüàÎUMª±i Y(’¶¯Œ!ø.4 ÒÑïw¨* NËm+ @@YV¨H`LE·æä¨€ª=`9WàD P´HÒƒüRúï¿ÿ>ÃÑ)%e^©( W«N¢Y(}l¡’ŒÇc>|ȃR®lûÎÇñZóh4âÑ£Ç<~ü˜,˸sço¿ývC"ˆ:Š%êu/Gûw×À©Ã‘u;>â%¼`®Í­ ߤí*H5yú¶yœ¶*ßoòV}ê—ïãµ¼þ­5ÆZºÝîZ qýs—Ÿ{»·Á9Çr¹lˆ(?«°F"´ ‹úÐuï„ ( vww©tÅ£Ç9<<äó/¿d2úŽž*×ήÕ'PÇJÕ@@M6Õñ7q“€ÿ²K£Óéø¸»K×H}˜Íf ] :¬µ¨HQUYQEóšÖ]=µ²¿þÙ<ÏY,äEÞÌ,5Àt||ÌÆÆ?ûÙÏøè¿þW°žÌ›žOÐUÅ[·nq÷î]ØÛÛk€qqéþª„À¯2?´ ¢¶3äëäÇ;Ö¯¥6QDZÀ2¦ù÷ƒƒöv÷ÐFóðÑ#v÷ö¸~ý:=bg{›Gñüùs¬1\L§$qŒ”’Ùl¶*ø%ÞÆZ†ÃAèð‰›¿AÀZˆàÖÚmS¿^UUq||LY–͵ÿ}ÌÁ¿60wkÆ­=E½nÖ="’¯ŽïZ¿nZDkÎëú>+Z70ÁúÚôkÆëüÚ¾n¦‰Ùàq”—†4MØÚ’Æz ›Ã!yq:æÊî&‡Ç¨ÜœÞFL¡-G§O‘âàà:E™qøìˆ¼œ³»wÑf££3Ƨ§;vrfã]-À̉å+ &€œg ¬ A›ø¼û8–”eŽRN’„N§Ã¢š³X.±Rû¢h)ÑZ7ïóš|¬N´ºÏpëaõ5Ó¬•vµŸ¶Æ¢+íja¿)„ð1xUé£w” ½M+˜RÞµ…˜ãúú•R‚Õ ÖÕ„ˆ¾´Oiµ…{cÇ^ðÑH³cª²ÄTºù=eY"¤öâB6í¹­.xö¿Ë®¹%뽿h±íºæy†xe/fXßÛ8ç(‹’ÊT”UEÖé4œÖ+YÎ;…$IÊt9g~±àÝ»òOÿé?cgë ÆX<ø’££cŽOOxzø”ÉŘÇO¾¤(hã],³ÙŒNÖE*I¾,Øí°XÎÉË9ˆyP?N{Ìç%cvvö(M—´cnD<>&ëH®^Û%Kc¬©XÌ—…/ŽAÖ b£AVå<Ì8IãÐlö˜õëi]ˆÚjG–¶¶œáß”‚~/B©kJæsïàëtAF%Îi’8Æ–ÍœnµM²N„³%wîÞâoÿŸð/ÿ÷ÿƒ(Vlll°½½‚n·Ç³?åèø˜«7? äIªHn!ò×’¯¡Ï¤–j.fg[ðþû)¬Ü»÷9ãñ˜ýÛïçyi-rp57„Z ,ã8¢ßëÐéH†ƒ]ÍÈgœžp4{ˆPK ÿ†lxs¼9Þ¯ÿ¨JG§3 ×ß&—˜R“Æ1*•¸Êa]…s¾ÄØaÈÒ)V…A>ÎGÓíG^cR—M5‚pësÃðá7ö®‰ð.!RIcA¯ãj Iȸ‹ÛEcqrU]+ø.å÷ ×ÚTÔ¬$NEX!±­²ÐïVI´Š5Â/Â[[›ˆTÂ`0òÊD'1¶Îôç)NcF#f³9Óé"Š(˪Y`¤SiYk6Fqkó#剫•ºœ]©W¼ÝÎ…b÷ÌŽX·ÊÛWu&9) Îi¢Hyµ–ƒá°‹¤Cšf¤ %!•& ¦yën á"„‰D_tômÈa~%ÿ•dƒS¯iç ‚…ý•,ä/Ä\´Ü=¾V®%(;‡ïNÑ–ÒX´6(ç°ºò9¬áç­ûåÕX¯Rñ¹ nZé·ºîW1ëï;ù’èŽËe¹…x‚K÷ ñ D åðñSþãŸþóEAUé`o¼ÍÖÀöÎ6ÛÛ;ôû”Š0Ú†hÅG?û ž>}ÂßúÉïp÷î]nß¹ËÁÁU¾|ø©bâmg›²¼6!+p^´¢7lÈoba(QPqFi4ÏŽŽùô³{|ðþà~2/b¾-(ø@D±:¿B†Ã!ÖZ¯â"ÿ^¹$‡SJQ„ o­°÷÷(ŸTJ’& ·nÝâ“O>åøèk4ZÇ8kˆDu&±ðZK¥V;çw§ øçïǵgÍ—@úý¯ÿ~m-óÅ!%oÝ~›÷ÞŸ>ø€·ÞzËƒŠ¡ä½.“¾ü¾ô‘…þýhµãÑ£GüÙŸý'''ììì4…½õs¬_+­5³ÙŒù|Îùù9ׯ_ggggå–³6œu¬Z­2kÈ„ d/Š‚4M}´ZØì× }Ó)2¢ÑkÀr/“ç¹wÖÄ16¬Uþs«Ì1\Ç5ÁYæí®#)ƒÁ ù¨—ɆŠÌkz#j²¡½Ô&]êëÏ÷Ùæót:E©¨ùY¥½^íímÎÆçØ/¾àüüJ,«ªb±X4×eû}à¹Ç•ðNŽN§Ã`0h@äú¼×®’8Ž›h©úqM¥)‹ÂˆeÙ>£Z…HDï´¡Kb6›Q”%EUz‚È9Ë%yY0>=c4¡ÂL/–Â_HIÇüçŸþ”n·‹Õ†8ŠØÜØ`oŸßú­ßâ¯}ø!·oß&MR†£¡ßŽKù½˜ß¨v¼>_îZhßgj;v1?üá}¡ôÉ |úé§t»]¶¶¶xþüyãþ³,;??çàà€¬Óá³Ï>ÃC¯×CIÙªþý,[Äñê:­]:5É8›ÍB÷GÙ ß÷=û/q ©ó¼ýzñ&ÿ©*Ö„TõÜåç¶uáÖ‰úËÒß÷â÷ü¥^ÿ¬¾¿êùý.ß÷X ÚT€DëŠ'à8bcó›Šñ8åÙ“c†Ã˜í-žŸ=%/sv÷¶9?›0™LG G¤ØäÉÃ9gãgô7®qó­æ‹{±ŒÐTB/—TE‰pIä‰7«1¦Â¹ºI ”ÄЕiÜíˆ(×Ìp®‰X2†®Vä{!–j‘ ÎÊÐô!—ª¿eUäm´ ÒÚÄ qœøßë‚ËÂI´öX„S~®ÔZRu6ØÚ¹ÊÃGÇüú ŸßŒ®`>Ÿs6ã„õ¶~éÒ6@Y§‡T«!M¤ÉÛÛ7°bÌxò”årHŠ\ d—ݽkTeÁlqA·ßÇYMšFÄID¿—E gFW8gHÒ.qùk4‰ÑÚGê™iîX¡ïÍÁ†uD¯‰/êyź.`RJø˜m¡CÁ¸EÉ ©,ˆœŸ‹‚MÂcKREøÈÊ|Éó÷ÿ€ÿî¿ÿÇX[ò?ÿˆ££#~ïoÿ>óù‚Î|AÜòñÏ?ÅZA·;<Ù ¦³†?}~ð]­um›Dk·þ±~w—¢.>·`—L&‡*~ôã¿N¿?¤ÊvÍ LSL^YI! Ä8'‚’uŽÉZ©îíRà*¬·¾Õ¥µR†ìî×–Sƒþn1™8åœ~ߟ—Ùl†T Î¥€"V1Y7åwosíÚ>óùŒO>ùŒû_<" Ù܃DxY!œ§0e+>*NHJIŸõ)QX§š2k £×z/„ÀàC4 ¸ÀH`ù¯Â¹­Óé çRF¾ÓÃ8òRûá_ZŒóƒd{õÝ\i£UôÈ×9«¯­_¶ãùªú¹_¾±~]ïvéâ/ÿ/‹¹XýÝâ…¤à öé²ÒäU”Ó~Pi,¥îëÿuÖ² »ë\(v-V´H+°¥Ž{xÀÏë¦`¶Q?Êou ë¸wï>=Æ:oäeÇ IDATm7F£µ!Í:¡(KIœa´ci ÊR“¦º.ÅrÁ¿ýwÿ¼¨øàƒù»ð÷øG|ùð!EQø÷€T È^´uùŠ]?w6¼×^©ű­ÆÍáñ1¼÷k¾Ÿ¾_00ÏsÊR£”¢ª*ʲl6ímWD –•F¨ …«u¬]GìïóÁ0›ÍøìŸ• ©¥s~] $|,%èU,]È8ðÞ/BH*Saiç%‡ç¢ƒÁ€n·Ë;wïòÁ~À•í FóÊf»V,”Ï6Ò,ÖrYòàá—|òÉ'œ±¹¹ÉíÛ·ÙÝÝ%ËRŠ…×l¹\¢”b:rvv†”’k×®qppÐm^ÑäÐ{E$ƒa6›…rKÿZt:µëª}?+à]“ 58^…wØàrÕTïU[½N5y¥)I’4SQdYÆÎÎÝn·ðWJÇVüL l¬‰ˆ<ϱÖÒëõu©1fuîBarM¤4eÍn¥L’¤ÉÞ{tëÖ-²N—BkË%GÇG$IÒ¨Ìk¤%Ô>?½^~·ÇÎÎý~¿ùÛºÝ.ý~Ÿ4œ‡à®Iœ¢((—9eQpôüg-J*/ %•WÊ«ÈwBhƒ *Ûež3_.X9‹c2ø‚ë²DZ‡®t˜ùQ"WdP“õú ~÷'¿ËÝ;wx÷wØÛÝc0 ¤ î‰×_ÿ¶÷«vç@ÛáÒþP!>ä…5$\{išrpp@¿ßg4qãÆ îß¿µ–Ç3N›ø®úZª¯Ù,ËØÛÝ%’ŠÉùùxr¹³&ê÷ŠÖš³Ó3&“Ip^(‹ÅK$¿)‡hÜGQ؈öÙ"è_ <­À¸ú%¨‰Ï5(Jˆ—?Ž{±\Y¸upÌ}óÎ+¯{A³‡øª§à^ÓûÕ5åË5øéãEœµ(å8ÇjK¤2ßÓ¤Y#•Ÿ9ã$”îaH-tp ðêÿmºÃ:îD(G–«H]G»åì*êÉ9/ìq¡£î¼rÆ;ð­]ø÷®ÑWùXd¬Â!1Nañi ó… ‰#~úŸïñàÁ”ªäKGQh¬¶T&CD’,É(«%ÃÞ€,K±vÉlþÌÇgš„~wÞý=ªJóðÙGÌgg¡x[Ñï^¡?±··Í½/þ¥,ƒAŠeFС×MéõºdiŠÖ†ùlIš¦XcZë¼À„5E©­ýß\•k½ÀHÊù¼X¼È$®ªÿVÂDú;ý=Õàð…Ä®q &ˆ#/,Pʰ³s…ííÿú_ÿŸ|òÉÇÜ¿ÿ ªRóoÿíÿËÏþ1ÿã?ÿŸøÑïþOŸž’e#úý¤ì`]Ôà:®Ù,Úâ#ÚÏíŽÐo±+wÚêæ]c*$¬®açja^ B ”a¾8æüì ÝnÄÎÎ&UUrz6æ“_Ü£3Ø É†XâššïSÁª{¤ÕÝ€B[EQhÎÏOY.ÇX½cp¥¡—‚+3({„–™7Ç›ãÍñæx½‡Šâ$¥Ô¢Y‹*ÇYŸËg}ÆyÇÞ6hœöÑ¡x6KýA~¯ïÕwÍÐ#0Z3ŸÍЕf¹\’çy¡©òÊ«ù %Ét^¨k+Ú6ÌH)ªª ŠŸÑéœ$‰£µM€zXÍPx/ Ÿ…­’•%jb¥ÜáÃ~Ëqy•èó!Š “iš0›_`¬f±,X.gàb”ŠyûÎ-¡’$ÄeFUZf³%Æ.ãZ"j;¶Ï(”¨V¡³ðýBúÜh|¦¦ói—$JªO©¼kÜøÒ¢€TÒ—‚a›s][N­€) îÃÍ Š¢d2½À¹,¨;JM­riëÕU±C8³¶Ò ±ÒèÛZ¹Û‚çÛ_ٺٟ!.õ6¸¯ 6Øï¾ :ĉ¯±Y\'Ä »Ò6èíhG;ØÆrn…¬µbý;róÔÆŒZÙ"X©VŒvnªn2P¿ÕœÇJÉþWK¹R»H!yðàK„ð‘7qš4ÀmUjœäÅ)YÖa8E1ÎYÒ´Ãp°Áéé YÖ#Ž$øGB’uøíßù ƒáõ¯þ/ÎÎÆT•&Ï‹P>+½‡h^·v¿jŸKÛ䙫PBìç‹ü‚ÙÅ ¾A1ô÷ !éd?ýé1Né÷‡­Î†Kïÿ š¼ ‰Ó°ñ‘k`gG$›)ï½û§§'Üÿâ~¸¿ú(‚zÍ“R [ÊpŸÌaVJ?cC~±`¹X"UÔËulP¿ßçîÝ»|ðÁܾ}›ƒ«W±Î²œ/V›g·*•nƒV•Öˆ²¤Ò†ÓÓ3î߻σèt:¼ýöÛììì„8ƒp^Ý6ŠeYòìÙ3ŸÒï÷Ùßßgggg HuÎQ”eHÎsŠª$Iâ4ÁTš,˰α··ïMã•ìµÒÚšp^%”•*¨Áú¦3᡼ŠBð@ÖoÚ«.ˆŒ­£¡j£Óé°ú.Ç¡ÔßÓŽºüukmãÐh®¯5ðÑ5Ͽޔ{’·j=§U—k*Åææ&›[Ûˆ(â|2a±\4ñrI’4)uS–eܸqƒÑhÄh4ò½IJ'ËFMn–e+Oëu« ‡Ó“ŽŸ’ÏŒú„uôº]âpFJ‘ÆÞbë(¯ 1?æeÁt>c02¹˜2™]0›ÏyðàóÓÙIûÞ‚8F(IÚñ‘\×®^ãÆõëܼqƒ›×oøBéÍM/pÉ‹æïGðkëjX#x9ÉÐ2Öb»Ü*z¬¹ö”b4Ñëõèõz\½z•¾üÒ…“É„³³3œuœžžzOÞlon1éu{«ßqéÎþ2R>Ïs.f ™ö2Âù7‘lp­%Ú5 ¹Šlëùõ—f9÷’µÞ³ŠWkwºñ"Þå¢_Gó½|~øK&eÂóp_9ç¼Ê¡MôÕçïïÃA'X!éucŒ›ùšÅä…áäxÊÖî€ÅÒ²\lnì %§§'”Õû{{lnoa­ådüœñxL¿ŸqçÎ5=zN;t»ûܸµÃýÏ.Ð…k¢p£HqóÖ5vv7øè£ÐnÁùø‚(ÍF6ÎþÙlî sÐCöµå@Iåç”0ÖK!‘N!lˆ,4`*G¾,ÑxŒ¢«æJ­ïƒV$WpMˆpþ{yèF’þ1"ù¸FJF§!ŠmHŠÕsµ®w(’.+L¥›H9¡áª5‘Œ •1 !ª†lX›M×úØ×ËÝ×âȨù+7 wÒ¨óÅ¥£5Öï—LpL8I¾(Ñ µ­-Îdã„ð)eŽ>»ï“&lo^¥ÛÙd>·<{~LY,ѶÂXŠ7ßÞ%Ëb”tå)_ÙaÏ(wC(IQ\ðÿä?øØÆ²bÐÑM7˜],øì³ÏÉgŸÞã£>!錈¢!Ȩ̀0P?´sâׯï~é—…—>4ÑÆn½ÏÁÕØ’bs9ÂÎ(óS~øãÛì^ÙF)ÉóÃ矎I² :½@ ¬Gïµ›W¿Ñ“G¬Gº gw"áPÎÑ4÷äœÇ?Ê7dÛãÍñæxý‡Œ*ŽNú’fA«t´3TÎ`°hŒWƇbZ¥"œ3à,Ú867¶FÞ*xzº/Ðëtɺ=zÃ!ËeÎñÉ)ó¢Ä¸ç*ŠzZ‘M¤’i†y©$H°D$3ï‹!Ó›7)$z%8C†Œ²(pV "SþW‚EÈÑàd+:ÇÕ7›5†['z=Á?ü›¡øì³ÏxòøÂÅ -½Á€Ê?yŠ•Ÿ>¦˜kž?;¦ª 7ø¢E5ùÎ.Xb/„V΢⣈ˆ$Ê7€3µE‘ká-¢‰ÅTK*’8é(uEšÄ!Þ#lb…ÄÉÄŸg*P±·—"HÒ ç2,‚<(è´q!® l+àÑRwx˜zm ’jm‹¢/•v¯¾~YYa›aR´îËhk,_âþîɆv™d=óûeàmuIíÞçß2Γ€íM u¢QGÓÝ`иƾ¹²¿~S’ÁÏQ! ð"üÜ m78 ¾É¸Úì»W‚)ßùƶ 0}G¯KÍâbŽÓyµUÅR-Šã&Úf2™°µµMYV ¬±,—9Óé„kW÷‰’˜£ã~ø×ÈÕ«Wù‡ÿððÇü'|üñ'TUÓ£ª4ׯ_ãɓ硯fýœÉ5E4]£Â9L¥‰„$étP¢Ç6jËçåû"^Ì`ovñÂăéqƒ ª½K¹ÿ+¥rˆå tJùÍ¥5[[¼õÖ-Þ{ï]ž2 ØÝ½ÂÅÅ=B:(uÙ,R ²4YscÕ¯‡s [À}·×ã½÷ßcccƒ·n½Åûï½çc¤qêï»N¬Ê"[s­è2Æ2›/89=á£~ƽ{÷‘RqåÊ.[[Û4®-ñ¦ù¹ºdøÁƒc¸²·ÇÎÎóùÜ“­÷¶/ž› TÄùxò–c¤TÌ‹i–aŒe8Ñï |†6!žÊÂÙ¡M¦ àDýÑVƒ_s•]XßÛn)%ÝnׯAÍŸe›› !Q_/[[[kΖ6PÑŽ}š¢vÑdûùÔ½ unír¨Ý, Ùž/@’Æôz]®^½ÊúézAE(„`4‘$ ·oßæîÝ»žÚÛgss³!!’“Tÿ½5±PƒÚµªÚ†’ùä‚3sB/ë #veAõ¬båh°Ö‹M¬óB tÒŒN§ƒ’A¿Ï¾³”UE/ëp|zÂáÉ1~ R²X.lŒôìðî;ïpóæMÞ{÷]²Äg…—5AÒRÿ¿ܽdÝû&÷ª¦Lµ½î´ÉÚÖõ~ ÔåçÖ4HuíÂ’R²»»KÇ ‡CnݺÀgŸ}ÆéÉ)Úh¦“)³ÙŒ­ÍM~ü£ÑívŸqqqb [}4!*åòu-¥d¹\r~~¾F„|“Âí¿Òäâ•¢Ž:ölE*¹æ"¨Æë—{-⥙i¼š\‰ Å8ã÷0ŒóÃñK"Ak!@C8¼ ÄÿõLðb”Ü7ž¿AMÓ²jà !­ ‹z”•CêˆþfùrÆäü”´“b]—ÓÓÈýa†%óÅŒn·C¿L(Šœª*é:ô† Ú ˜M§Œú]v6·©JÍÓ§Ï9?çl<`o—ãÃS.ÎÏHT(ªÊ2½˜sëö>·ßÝçñóÏÐ㜪´ô{Û,—>¢r0r>=ç|0®D)‰bˆˆü+ƒÎO¸XŽ™ˆØ_ëoȆ7Ç›ãÍñ½ÌŒçÓs*=ecT¶ø.éP¡À±N2 ”@×ং~¿ÖšñxÌññqƒ µf82ØÜÜ$É’,!Š%¶ Ñ+!0 3~qa°2~ó¾¼5ÓãËg}.¿±/fˆ:ç;’m±D…žeJ"”Ä:0e¢ç¨‚úõ7¡M\†õ†öž"뤤Y –KKW1qF”H~þÉÇ­IeFU9œJOfXçVùýõ&ñÛ‚Án³nålõ£°î0z@ô÷£ô]UQRæÎX?ø IɦŃU­ ³ÙœÑh“N§KUYŠB3mq~>AÇÖöæ‹%'gg$IÌõë×ùGÿÈJŸž…•|ð!7o¼ÅÿñŸðó?Å–ºÛtE¡„qUb.ÀÌgí ¾=`÷:zc[“ iš†â;ÛÂþVoEÀïàæ‹œ%dC§d”7¯ñÞ{ï²È 76¸óî»ÄqD§ß#_.ŸbëRXçÐU‰ÕU³ VJ‘¦èv½šygg‡ëׯ³pÀææ&[››¤qB¬âUÔUxžFûø!Bª¦ 1qttÈÇŸüœ_Ü»‡1–›·nrûöm’4%ŽÖš¦»^ß&“ ‡‡‡”e‰sŽ·Þz‹ƒƒƒ•R?”.EAUU~}·žÜ˜^ÌØÚÞÁ!X,—Ñétètº!ÌŸ{Vш|&rUéˆÉ—öòÈyï׃Uñ«>gY†±ÞYQŸûúzÇMQöË:Fjõ9°æl v2àÖî 5ÉP•+…§@EÊ—^JŸG-¤ ¥ï6·6ØÜÜlòôÛeÅ;;;ܺu‹?ü·ß~Û'Ñw/$¾ÃA ¹F´"Mip]\\iì;H¤B:G"”„òªZ)1ˆ:VÚwe Bô¯ƒdF*EGÐwóƒ^A¿O¯Ûåá“ÇD¥ïf¸qý:7®_çàà€­ÍMú½¾Wç+µÖ³õ²õýû&,¿îϼP`þ¡@}=µÁÂæëÜn»i²,ãêÕ«|ðÁœqÿþ}v·w™N¦à;;;Þ1EkEžÆZ?Ÿ…¸ˆö9mÏG‹Å"€‘ví¹]&ù~c¶B—î7ñKJÉkPru¿X íû‡»”×m­¥2ºUpëÒ—u0ØV¿Ü« ‡¿äc-ßIü’oß™xç•¡ 1ÀV±»{›ÙŒ§Ç”,éú FšóÉÝÎYÒa69g4Ü¢ßë0_LYæ366.ŸŸ¡”àÊîQ '''<~ò”k×®úhÃþ”ÙtÆáñ3’T±·…ÉÙ’b¡HÎ'îþWzd}Á•ýG'çèÊ2_ÎÀùYb¹Ì‰£Ä;õ4hë8y~ÖÜ·¥”­â„WœÛ°ˆâ(ĵ9œbÕíà$¢V‹µÏY}qYB÷X‹UµnÕ]àŒ ® Ö\¾cÈ;4½‹®&2A RbŒß³y±Y‹5Lã„Íѽ^4‰Iï´´Ö;NæóüRtÏKÎBÝU!Ö‹©ýï³këßJ­ïB¼ÔÊÝ2²~X“Xu¾7¢Ý‡³*“÷"Im@Áp´ÃÖÎUzÃ+Ý'JGà†X:AôµÄ‘K 26H.¨ŒŸ‡’T¡KI’FÌó)¥]€²ˆHqç­ÙÙ¹ÅôÂðìù •ÉÙßê²³;`8ŒÑF!ƒSÅËb±àb2c>[’/«à†Þ‰¡-‹mqØÊÙÅ+ö£B¸ÆSw::k`-†’FÌâBGƒ»ä FÕûF‰Œ¼x¾(G$IŠ3‚édÆÙÉk?þñùÉO~—ƒƒ«ü‹ùï(rË ¿‡s”Ì0ÎÏÛ°)•××½Úë®›nÄ+ºÃüçB J½`2>d|úˆ,±Üºqç,óþ_þ yY‘v 3 AŠè%"»K̉[a_‘JAY-1zÉdüŒéé真“uP½!ÞoŽ7Çë?¤òùˆi§L‘5°€€(NƒŠÞÛC«Ò†E% ͹–Œ.1Æ/ç¡xÎkQ€³S¬©ô»ì\¹Âr¹àüüeD“ýé„m¬±ýA'D=ø2½¢(ÖUÖçƒCE~³—$ñ dPª±W–eÉr±ðEGR{5¨ŠPQ„ŠŒ‰âˆ8þîn»>×áð*$I v¢m–ËËbÁhsÀÛw( Çb!ùòáR”¨4ãúëdYÚrx4æðtIò¢EN,–DÂ2 éw;d±A Ë2_’ç–³ó%ù…AÅ)E©‰cI^Ìùk?x‹Hä2›Í¶¶6 ú8 òjÎ,_rržÓívÉ 1«€V)ü@#}+B¾.)µñ-V½\^Ž>rµÐ…Òå„ÛWïr^B­)ëKp½¹k“Oþ³m†ëïb“úuAÖ¶±s5#¬´LîZ6?W»•mX¸† Ymtñ±-Â5›^'DSÌÝìÏÄJåä^²áþ•I“K¯ÇåÈ•ËdÊËŠ5Së E‘“uRqe|é;RzÐAø²h)#ÊR3ležG I,Ý4CG&£¦lZEj刯³ÖkL(æô×­ï zI†Š"L^¢ô{}z=¯B|ðøÎXâ8æàà€Ý+Wô ¡Y+j/;ྡྷá2±ñuïCm‚ì«ÖÏ—íퟩÝSMáxíˆ]é¦À¹~ŽF#nÞ¼ÉÎö6³‹YCÖÔÑaµSê²c§î6Bpqq6+’ÏÇìýæÆ(¹Èß܃‚P¦Ý²>Á¹fÆüªk§¾Ç´ï"¸³…[wǬ]W¬ºkÅ«±®_ ÎáûxjkŽVW+«ëè×˜í½›\½ùc‹!<}ÈéäÏ‘ñ’N7¦ÈgH&(Q’é¸b´•¥Ó‹1I³³³Íd2á|zN§Ûas{‡¼(9::bYVtº]v¶wÑ¥æäô˜4‰¸uãm¶vú<|ðœ8rÌ NÇϸÙqõæ>ϧ>»ÀK¥^ &T(Ë à¨ª²Í¬Õ¾oÔäÃZä¯ô¢@!FÛæšM’ÚQœÝN'Ϊ Qw‡4ÓÐ¥n)(^pamp¶…ߟe¡IØÐ‰èÁU?£Hâï+‹œ‹ ×Vi’peç £á^·‹®4QxîÎy·îbž3™L±&ÄFY/‚|ÚŽPjÿ›ßÖäC»{ [²v/j øBMö×î$º\õ:5Ÿ¥DÈc%•–h#Ø¿¶Ë`4@»ŠŠ!2VxçCMÐáœ@DÆ•”ù’¢€8¶Ä±"ŠÖ:¦g'”yI÷ô®$C”L0:g2="í8ö¯n°se@žŸ#…Ç;NOÆäË’Å|É|¶¤, ‘ŒÛ»hVIhTÓìáÅ8€“noÖçöÚÙ"Ÿׇ¿†¼³¸~íü¨é÷1€[ˆÕ4 nÏNç R$Lƺ4Ì&Sp‚?ø»ÿ€ò?ü3®\¹Âù4çË/ŸÐïo!eè e†µQ(†®Ÿ¯|Í;Lñá°ö5'š´Žõxî:¼Ë’%‚“ÅÅbÌ•ýï½{åâbÂéÙ IÖó1QÎ¥ NR»Op^ \ómõþ>ŠR°–²ÊévbËsfÓÇ,/bíÅ’ÅìF½7dÛãÍñæø~ÆÅ$¡Ø@’ IDAT2(ÛlØàG’R[¢H¢¤™£Há,¡4Ú¡¤Ÿ5Œ%ÖV z½Œ,SD‘Á9¨»!£H¢uA¾œãE®æ-H;)Yæ7н^¯)8¬7üóù­5§§§äyŽ“)< Ÿ$Š8ñ ÐÞÞqä;#ª}qqA òePJ‹)5Û;›ÌfŠ8é2 ^ÃÆ/4~P„ÝÝ]΋œn¿ËÍ[·8¸zHùâ‹cŽÏæXióð{ ¶*ù7ÿÏ¿çd²l$¶*Ø¿²ÁÛ7÷¹qã:½nF¯£0ºd:²\>ÿü9ÏžOY–’‹EÊa%Û[üöoÿ5v·Ÿ}òs>¿÷Œí­}n^¿E·“Ò$LgÌ‹ >úø.Y,  |L¸µÕ2Ÿu££VL„¸$¾ O/ï<œ[cp_c{"^ò@mûëjcò2²Á½â‰|} ½ ¾ Päµ,UѲ¿ˆ—oêlî4Žh%k$Kcœ­¬ÍUîfc–~ ;Â_Ø4À®ýîFÁï $ùn~Ïjä=Úa\ QN¤ŠPQL¤"”TT¥w^%IÊùù„|± vßõRGÙäKß¹#€4MØ 1º¢ß¿@t0F“/—«òÿgïM›ä8Ò<¿Ÿ»Ç•WeVÖ‰“»INwϹšYÙî/¤°2ÉôB¶ŸMû%dÚ•ÉL2“LÚ™–ÍÅ>¶I6 €@PgÞG\î®îY(ðÙ3=Ö3Á*äáþ<ÏÿÚ0sê¡()jö͸Šn·ó¯‘ß¼bó}EQ´y=»Y¶ÔQ~ð§Ë]–N¦_±¢¬Ü€|0è³;ðñçü/ÿñ?ò«O>A†!ò'ÂÞpÈ ¿S¿òt:![­X.G½N·òíõz¾ÉSµß|±ÄhM¤Ü?3Æ „ôð­tCB¥ÆÎÎÏxúô)Ÿ~ú)Ó锣£CŽŽHZ-–«IGE‘×ÞÉXОÁ¿Z­Rr÷Þ]†Ãa=¸Ïs—Áã·ò¡Ú“W«U=ÈHÓ”õz1†È‡K%7ë—p™AAEm`¬u D8kGå˜VPÕkÆf0°9Õ°¥RAPƒ‘ç9;;;u`s5<(ËòVV·ö€Q•ûÐ@¨Áw÷J)×Ô6-„¨ë™êž‹ã˜B—ÄqÌp8äàà€§OŸ6²),ý~Ÿýý}‡5è„g­Kál™ªÌ깫Ï_½^žI)*%Mi% ½N¥²!Û@O0•eI!]-U”î{мJ%+r´S¥H¢cÚ„‰ûl­v›ÅzÅåxD–¦ììííÑët]MèI!·åþs ¾›ßÙ×­O·ªo¾Á°´Îó×k5Ô‰"—ÙSíëõš§ÏžòìÙ³úúÝÛÛãþ½{ÐétÈÖiý}U¤œ7ÿËå’,ËX­VNÙÐ5~§†-‹ë|êå-–R†úÞ«ê¸7 ‚²¤¶÷W±Éƒx­~ûæ»›ý­=§ß?à° ä‚£»Ž)Ä1VƨhÀÞaBff\>aA¯·K™Ï)òŒPu¸¾š¢Â.Gwú¬Óãñ˜ýý}ƒ£ÑˆÉt‚±–N·G7M¹¸ºæ‡?Üeÿà£K^½›;ž)Y®V¬W ƒÁáÞ€Ñh…)í$¡Ûî¥)yšR¥ë.Ï̤Tõ¾U­B„³/ªÖâºØ)6K¡š¾Þ«6Ö\®ø7µZ¦¨mH%·äÃÙ*@Ùú!±¨³¿„j’RÜøšA…Ñ‚Lº´’’Ï::<¤ÛíRx I«ÝÞ¾^çäyÁl6g¹\…-¯R°7À†êð¹Š7ØëÕG­Û¼G«Ì†Ú‚Ò?·Sçuo² })$Úzë:/_>g2K‰;3JÝáÎßCH‹U¡¢z†¢„…‘2öYŠN§MœXÖK ¤XS DA»(h·$ivÉ|yMiιÜe°ÛF)Mž¹Ì§åbÍxˆªÝj!ÐHiQÊÆZöiud…¬ÏÃb±`÷{,ŠÙøåºÆNOO v£BÅ'Ÿ}Ž%d½¶,—†¤Õfµ\ Ð,¦#Ð!I Q6'%‚tÁÑ~¿ø7¿Ï£‹Åœ‹óS泄cO>¸?þã!‡§ç|òë\__!ãÖ ¢(DP²˜]щKþô?äêjÉó/Ÿ$-º½ˆè `3›œ2±åÆŠ¨Îˆ°()kßfß .ÐÖxùùo°—}S£ü›²¸ÉÀ|ëÜñzxÕ×Y1øOFS ró1•¢ÁX÷>õk`L¾-hfNS;¢¦UÒ›.·=ÇÖ`Ã~GV¼µµOèoz@õ›²öƒˆA—«ñ´¶¾¨,Vd%íšå qœ`­eµZQø!h, ..,/ÏN89y¶Dà¬9²tMÛƒ¹ögÆîî,+k·ó»®ZK’Äôûýߺý¬\ ‚$Ièt:µ:.Ž“z­’B¹ô»aË›²@È€ù|ÎÙÙ+ù„$Iø¯þÕ¿âð`ŸåbA·ÛåñãǬæóz (ýZµZ{‹‚êÚ’‚ ]–v–(F@®Ëz}µ‚Ú*ÀØ’ÙtÊË—/ùì³Ï¸¼¼¤( ŽŽŽ¸ÿ‡‡>ðZù—Ý|^cƒñx“'O¸¼¼äG?ú?xÿµ QÅz.Š‚ÑhTÞÛí6ggçu^ÙÀT Dœ$°·¿Oá÷ñºw­ìàhãm|êk (?,¯˜×Ía|“ .ÄëA½ív›8ŽYž-9¿¸`o¿nÚív=,Š¢ë½YUÏÇñfÐ_ƒoÒMßv[{ëŠ9®Üù©l’š çv»ÍÁþ|ð'''|þùç(储/..X­V¤iZ_ÇÕð©Ræ‰Æg¾©fRn}†²,¹¼¼$Ïs>|ˆIs"$‰ ¥B¾6ØrïÓÕcS:í‰Wª¤y†È$x%©«óB:JQ,ç`¥ ·šõÏ>f:²^¯‰¢ˆN§Cš¦;Á[Öïߤºá¶õü6¥ÓW=®©bif3¼IÝ×ü™xíÖ{0ÆÔ*€$N¸¸¸`<××Mžçæ‹ãñ£K~ò“£÷¾ÏÏÏÈó-C´6(6j¿±­,pMãž·FƒÕdyN¶^ÑïöhÇ!«Ù3V³9ýþ“Éå;°áÝñîxwüÓÆh‚ÀÙ(é¤B†0’Ha8K– °]`´E*Wä9„ÜÖ>~ÖºçÛÝí×Òok-í¶S(%˜ÍÌæcÒtU“²»ÝJZŠ|Mš¦\__³X,}@*vH)š~¿Cž/°6gÐïÒí$D¡$Ms&ã+Š¢ ôrñÅÂ10\®ƒ³{j·ÚììtaÀt±`¹²@Ëoø¯¿®MiŒçnoNëbÊR“¯Ö¨(bµÊxöüe)Ð:#‰£a!ŽBe‘R+¤(±¤t;}þí¿ùSîÜépúü Ÿþ„«ë9“™f¹,ØÝÝeÁqÿÁóÅœëшEVúá”ówŽ€XÀ—O¾àäÕ”ëqŽ’á^—V/b8ì†ç5ËÁ5I ‰@I‹•·¼ôaÐ.è»jʶ˜[bƒò7´È‚o~Îß4ľm(ÿUµß¥ ù>‚pÝÙ‘ßêõ¶‡© ªÆ‡j&HßÀúoÐ#fóûí@†o2²_¡qLjg¡ò} ’ì¿ØæÜ}'íNÂûï?æì§ÿà,Þ‚ ByÆX…Da@YÞ3Þ1å£0`9_°\.HÓ” t:-¢$ M3¢P¢K7@].—Ìf3””¥æ/ÿâ¯@œŸŸûa¤ Á³vÛNè&ØP×°tÚ-Ú•dí·÷3›Í™L¦´Ûz½ÊR7†´¶þ»òÃr„¤YÁb±a:v:íÚ“5NZÎî [³Çßÿ}iÆùÕ'|öég,ç þð~Ÿ»wïíVBšfÞ«ß1Çk¶HhœšÖaE}‹Æ÷P5ÐÚXnõ(³œ‹‹KžÿüóZå9ŸÏ™L&¬V+â8Þ0âoÄÛn 0o¬Íœ€õz]ƒƒá¥-!’ ²O¸qÿWC×(ŠøòË/Ù;Øçðè$­¥5”F£­¡Õj¡­ež®ÐXîܽKÜiSbùòÅsÎÎÎX.– »¯eļɒïûn)Mé¶õïæïšƒ«f(yužìpkÓ°e«@¹æuW+qTPÿ¬°óùœ'_8p>›;¥Š…0ØßßGaÖ€`Ó~©Êšï¿ÕÖëµ 7͆Áü;§l¸¯××;‚8ŠêY+A»È7OÕí`Ù¦23Ö’¹[Kám·3äÖÿKÿ>Ä*mqãïoWÙ °ÒÙ°DE1åÕ«_Çkv÷i%îßÿ«¦Ï(KA§½C¢5‹ÅŒb´$n)v÷Út:ÝoµÜ óòò’$iÑiwèõºLg:]g ¸»»‹À2]s÷ÎGC²¼ÀÎÜy¹\1žÌ‰Z1ýÁÇwöxþì]”¬³5­¤E§ÓF—…ËíÂ`ÑÞšH`pâ˾¾Î¤#J a4z³ ðéTvN!±ù^÷yw$p‹Ñ›úÂ`)}ÆVfaÎjI¸uΚjýccëtôÞ¼§Ê6GÇJ ²,­ûbæ+I’‹Å‚ )ÄJÇX—øúÀ½v }î’5ÎJÙ‡cW,ö&È{3ÿh+lo{ÈדŚöŽ*”„¡ l…h ¥5Î25(k) M^,ÈÓ —†nž·Ž\}TZŠR!qv©¡ŠˆBÅE¶@)÷½i­²@›…«Z’EºÆhË?àè¸Åƒ‡‡±F—†ÉxÌ:]¦9E^øà©«dM ¤ª^]ÞÒ“UaÚ¾›Ü\;µêExp¡¼¨ßXY»””ÓšéÌ)íXÉ~ôûüÿýÿHž–ü‡ÿù? åààm ­N›'§œ¼:CȈno©"¬PXá®/šÈí~Ylû׉|æÌu¾¢ÿ·oš}Õºæï%4ËŘ2_"EÉÝ»‡ÄqÌh4âó'_°JSºý„ˆ±6Ä`¥ÁJ¹õ®›3”ÚµÀŒvêìn‡õlÊËËgL®Ÿ8 ×d—BïÀ†wÇ»ãÝñO7 ¥% J¤ÑH©0B{™e 86AÀx–Ón»ð4%…gÎfo‰EÝn›$‰kQ—µ]Ájµâüâ%óùœÅÂ!ùNé¯Hâ€VºfÉþ“™ a ”k®J ‚N[Ç!û{»HaY.f,3””äù&TJ<Ó^)A§Ûb0Øa¾N Â!µ/V$¯;é}ã*‘Û\¶û·k´vÃ…(i“§št]R–N>¨ØÙ¦Hg§Èn7a1½bµš»­^•<~ÿ>ïÿමæj4âädÄr-ÈMDØÞa¼(øüé+ÚÝ÷ŽìtØßOXŸ—„qÛ¹2–îO`^¾q5.Èm›0lq9^1žæôû]tQÒjµ@μ¾0(饕ØÒ¡êZ—ÈÐûúa˜¨½zn ³+¨PßÏ°Ù¾ÞøÝÖç4ÿ}äDo”oóæ…«ýfƒû7·ýÌl ø|w×m7_Ç-:÷o:¼“¢ã«7™ƒßk[ûóo«Lù®ŒÛêŠ1V£¤àƒqquÁ‹'Hï[ëäņ$ŠkÊÂ@²ZÎxòÅÖëYºÂhMº^yúã»Ç ;|u¶9ZkÖË%XËË—§\]Ø?8¬`Õ:y#¤Ñ84ø°ívÚ wo}¾‹蛟eÉÉÉ ž>9%Ž#ò¬t2ö&Ü)\€bF(¶(‘Òðé§Ÿ†÷îÝØ! HÚÝZ ’V»ƒ1†ápõÇÂþþ?ýéOyþå—”yÁåùï½÷@*Â0BUC¿Ò`¼š.M«|#]± 7ÃP§^Øx¯Ãb±`µZ±^¥|úég<}ö”<Ï9<<äÑ£G¢uIQæäy¾58¯þ›®3º½ãñ˜O>ù„óó >úè#îÝ»Çp¸·Õ …~EA\Ft»]¦Ó)ƘÚbH—Î_¾Óé°ëÁ†8ŽÒyÄ !\(¥5[ÁÓ•E’’Š¢(É3·ÿ ¦Ôh e^`Û›ë³)——BEQÇP"J)vwwÙÝÝåìì¬fˆ÷û}RÇ5£òMª¡rú¼ Ä5rá­d "ý`Ä1­ oسHál@ÐïíÐëtëÿV›óWgœ¾8a2sçÎ$‚(·†(¼aXóh2ß{½Ê€R ë½Èn½íÕ\å_,—KÇL CÂ$v,X\ŽÃ:s$‘åzM’${{{$6×Ó1<ýâ }ð!‡õü«À†¯Û—¾ HÞ|L­2ò,Ø:<û†G5a8KϦõUà»/ö¤ßÛ‚ pÌ]ÿ3…»g¥”µzc-©€ò<§Õja´áòò’Ï~ýggg5@øðÁ?zÄ ·Ãr¹tlµ´é±Ý2ªÏ]ƒÞ¶ÌðÏÆýÛ6ß\n ýwhÊÂ×øŽbü ØGmî=Û¨i©„ ~À¦ …Ï2«óT¤tÏÙZ½6èû@Ú÷Q}e}õ ßœ½¥À~ÛwTל[S`:2$T H™M?C›SJýˆ=ù˜~÷sç1a°X””zJ;Ìh·$¹Ñ\^^"ä.;ýÓ|Êj™±³Óc¯Ë‹Õ Î^q|ç˜ýý}.¯.9=}Á£‡9¾{ˆ6i¾¢(sîÞ;b>Ÿ³ÎVèÌ2Ÿ¯È²œ,KiuöúŒÇ .^͘ÍGtÛmzý.Y¶"Ï×X«Ao‰çzU¤uQÞ®%‚zxj¬ö×£ûéÙÜR g­'½[ؾ¾k{!,Aà,pµÞdÆ\È<@`<ñÁ‹+²HŒauM.«úÂ@I„·Õ ”D g½†Fdëei(ó­Á¢Óꮜ=c&ìöV«Ô‘CŒA†ß[…#6ú*NT–5þ¸ ãF¤í–š»y¸÷(Ýs5²1¶¯{éÁE¸;ˆA(‰ ¤)[†•È)€ ±¶S ³%&[u ‰2XãêKlî†Â…¦,rÊ|‚’9*…qDN4Q¤ £Œ0ÈÐ:# ÛÆöõ;°áÝñîxwüÛÒ8•‚uM§Æå1([Ûã JZö†a½ÁHÆn£’ ´É1¶ Íœ¼ÛíEŽa¸^/™N§ÞÎÂmàEá”I¢èt"Š¢ Žwh·Ýß+X•ã`Œa±ÐÊ5ÇíVLœ„h]¢MR€5. j»&6$qˆÖRdù Sth·Úq¶õhVTA?ˆ­Ùì&´ÍI9mý"›B¨i§`1ž `ÂIa+f(„T+Ó*É‹‹ i´8vŽû÷ètÛÌFL¦3V™&Ó¥ ]€ŠÐÄQ›v§‹)wœ7Ÿ(È‹ÝöXAžä™Fˆ˜ÒX ‘¦†v#TŒË,õlQÇDu"]£( ¦ÄšÒ«[¤gÒ(Àytbn„(‰fFA%sügd§×—®sÞþõßVGÓ@mn4„N/QyJ!ÐÖn/yä¨ý¶§ï›¼ÿ¦•ƒ”Ò1b˱¸¯JûmOÈÛ}ûí®ÛÈ/ø./(¥àèè€ÿö¿ù+þŸÿ÷¯ùüóϱVnð'E€5%qÑnÅ\^œqöê”t£µuï~ ¼Xºáóãǰ¶$¢(D I·kfÚË—/éöv˜L&5¬æÎ‰¦ïé†ÕäòœÍDÐïí°ÓÛôwôTvso<|ýcf³9a¨h·:^B~ƒÝ·•(H¢„4+I’×××”ÚY 鬭ª ÞøsG,Wk¢0â£>$T?ûøc¾üòK.ÎÏ8;{ÅåÅ?xü>»»ŽÍ]©z©¼_°qÖJ4Â\MÕ¼Ëz¨éŸsÖë5YšòâÅ ~öñÏÆ ‡Cîßa8Òëö¼¾E*6•E±É|¤WdYÆó/¸ÙîñÁ‡ÑÛé“´Z!œ í[¿¶üF þ×g'Hn“©oÈŽ©„¬ê‚°F:¾‚ ÷Uçç¦ÏpS¦|óyšìP üëÿúÏÐV;v‘pŒ0Øœª†h•Cü†€ñÂÉ­µ·¾èV–Á7¸–n²¬„°´ÚBíðçþ¯9:ÚãË/Ÿóòåa” ¤%Ž[;[/ù/Ï¿äòòš^¯OQšÚG¶Z§V« Øéï’eë/ÜFXK«•0]ûAæÚ¥Æjëý7‡˜›ïM`pìÞápØÚÝÂâV/ôÍѰz vrÍR·|wUå/,íN!%Òƒ¸ jþ‘mŽ•¥và›¿‹£„,/xþü­V›Á`@'²’ÿwÆX×,™ S–âè舳³³zmzSîCÓVikXí6sgqal=0A^Ú_©Wš¶DR*¨@mxúô)—ÄQÄãGØùå/Ééé)“Å‚‹ós~öñÇðá‡b=h¤‹ÒRR:ËŠÆý'+e X)\ˆc.¸µ÷;e”uΦsYp u•ï“$ ?øÁ(µ®=ž¥t’ÑÒ¯ÑI’Pè’"5tb7 ïõûð“ÿ˜Ÿÿüç\œŸóòô”>ø`K(Äöà¦Ïø­{ã2¾É¾Zy“ÏsÒ4e6›qqqÁr¹dµZ‘eÝn—ÝÝ]ööö‡ôû}¬€ÙbŽÖš4K ‚€ñxì,ÓÚmŒµ¼zõŠÝÁ€ËËK¤”¼zùŠ;wïPQäSBв$ C&“ ý×ÖšýèGô–Ë%Ï_¼`±\¢¤äpÿ€(tV\`q“žíín^a€$)µ¯×¤m0ò—” n0µ2Ê×Úª€( jæ(~Pëüákþð¦,¾¥–l^×e•Iã  ¤ê¸ùlâ;Œñ72¯çle©m Ô¶Ë¿zÍøÊºåæ;{;’€ôûveôUù]Âïa·?#%yYú¼1í†ÐD*tõ\Yús^ ÔŠóó Òõˆƒýû û\›}Ö«˵¤;ˆ)—9Y¶fµZy`1¤, ÒlÍîp—ñdÄrµdh‡D‘³ ´h„ìw™Lö¸>a­ ?èðàÑ1Ÿ~J–¹ ã¢0´wJ]²»×£ws}žRÚœ êÐíw0¸L$á-f²4Ç ÑVbKêA~5PBz äcœ%^†n¯Ü~`ëuŽÆæˆoÕ÷fJíJGã¾c´:’ÅíwÎ>É€m ÖXT(ÑÂÙ*[?ˆwj‹h öE5tµ^VB™{…•ó¥t ʼ$]ç´[]Þª:xZVÃÝj°ëçl6¹[äÊB¶‘I±U³×릩U ÜØ‹ª7_j—U”Bi’VH^‚("ÐYžºç‘%‡¢X±\Ÿ°Î/È K^X²´¤(JÊ2Ãh·ú´“Ræ„¡ÆZY“¥´ììt(uA b†{CŠ¢äôô„B¯ÑÆ©¦ªuÅb‘Äh[Z{ gie*ŒH%êï×ϼ"΂5²^ߌ5X[Y"o€mcœýV5£qçvží.UgŸìÔuð-0F“åcRŒ±JrxxȧŸ|ÆÞpŸÓ“3ŠÂ²·¿Ç»ÇäyJ©ág¿ø9V*úÃ}´ P"¢s!éÂÙ*Igïäòµ¾ÑZòõ\qù­Vjñš Ðõ]Õã•ôÊÖ­åQùßI:e£’P¦k¦ã3’Èr¸H&X#øå/‰%À؈ý£Ç¤…€ @˜e ´Žüé` YCçNARÝç“Ù%ãÙ ƒÝãÑœ½Á]’Î1AzAÅÈ}6¼;ÞïŽß<Ø 4Ry$×AU”tVG 'Û ¹Âʤ¥$,äš<ÏȲr˜NÇ1,»»}ÒÔÉ(“X‘.¼ÙÚ’¢pÞãëõŠÑh\ûY7!ë¢IX´¶SR™÷TþÞ¯ÐÍà*¯G·“‚ÖÚä(0[LXÌsy‡²Ð¾Ñ®Ô žõÑýɄ²> »1ÆuEVg‹j#wm·[äÊÒ½J¬-°8‹%¤“ÏF­ˆåÜ0[¬°(´‘œ_^‘f¸°ç „Äа9R„$qˆšårÁl4f:[QjçÍèjAÃt>f±^2[.°²ƒʱ[0®`1ŽñWæŽq"…ª%‡‹6.£[:Ë+ëäåÖ#ëÖ‚ªá…¦ ¹)ZÄ÷65þgjXíÛÞwRæ­ñá‡ñ·Ù(y+še2¼m“øfÀá› {*«! Ýé µ[/6, n€Qö&6õ½}ßµ°·¨HÞ~íõk©RtÄn÷.û{îÝ=âoÿatÎb6&‹Râ¸Åã÷¢¤b4š UX‡Ik½±»s|‡Áp@š®ÉòÌÛàçÿ¯3&“ WWWÞVÕ¾½Ö¾œZa­k0•(Ðn·hµ²lßQôݬÄ×üNx S` >P\l¤iõ¸ÉýûŒ;ÇÇìîîrtpH+I8<:¢Óvövív›¬Èý½»™¿, –Ë%“ÉÄ DÏϹ¾¼"Š">xà-;=â(Ú QvÍÇ&üÚ5öîŒâåùŠñdÂxq+¡ÔšÕ:e½^³³³C Ò1E©€  } ¡NÂ…á&—B€õV^°Q …H¥n½V¶ØïÚ©ÃÆî(/ J£Qa€’’ããc®¯¯Y¯7¬õ¦=қ€›ëÖM~k£Sù!PyîKEi,AàY©ÖÖö<î5%R^ñà~¶ÓÛÁËO~ü:ü1§'§¼<}‰’Ë‹K>þǹw÷wïÜ¥ÛuÃÈ[拏àg¥˜©muü½Ê ¤·¬^iA™ÕcTõÒ‹_Š0töeY²X¯hµZtû;®™ z½wïÜååË—\\\ðüùs Û·±¸ýÖ¾u°_¿ŽÜ¦€¨@7á—ùrÁ—_~ÉÓ§O9yqÂèúšW¯^1™Nî yðà?úÑxøð!ï¿ÿ>I’°w°¿ÉY)Ýärµbüò%iš’¦)/_¾t¶cJF!‹Å‚þð‡€éõˆ¢ˆÉtÂó/Ÿó‹ŸÿœO?ý”(Š8<<$Ësþîïÿ¾Î!Yûçì´Û´¼-ižçP)¡<ð*¤D*å†0*+…ƒq¤Ñ´ñ; 44.žM¾˜«Ë pçÅ÷ã–¢®§¶€É[ÀS±~äEAQj¨ýÄeC1¸¹O¿‹¶Ï~mòæÇŠ·Ü£ßž¨³]ë}­ª£á”j°()huâÍ K‡X I«Å2M±ÂÐCA¤Ì矱œ¿à`ïý~ !º\\"ãN­HÇ.ÔÞò¼àåË1÷îßãèøë«kf³‡ÇGî3_2™Žxï½G ‡»LÇ3.¯/ùpÿ!ƒÁýÝ)g¯®I³œÅrE»¯¢€N/f§ßb:NY®§´»!*‚Á°‡µ°Z­”ÞFØq´,V`ÛÍೊÁs*>åÃe•¯qز¤¡Ò± âX H>YÙ¸0”ŒZ!¼å05PnˆÂªVOí¬‰µÖ[{I¥,0%X º¨,åD xä¦ tm£X½ÇfžÉ¦Û–u;†M^ƒM¾Õc5nýÊ>èÍ¡ìv+ïÆTä‚ÒDg„A’!r‚вZ_±XްÊŠ´($Rı¤Óq¤¼Åü9²½‹’‚¬õ5Za(Y­ÞÚ-ðÙyžQø¡ý¦.q=µñ`’±4ÊN¡a}†ÆæzðÊ^4T3 c*BEµ_:µiýó-kªJí¢Üúhᬿš¸'¡I¼2T"‚M¯Qä9Ó鈿ùéfÐßÇZA«Õæ‡|@Gi9yò%§¯Îhwû$í†Aˆ¡_Ãd£Y kºæ{mxSTàñ EKE€õÉ]‡âƪÕKý°CJÑØOE êmÉuŽ1I /žŽ0+âÐð{þP¬óŒó³sм$lµ £>¨‹ÚYOyb‹›ÎÅømóñܵ}òâ9eiX¬JÂhH«}ì‘ëQmaýlxw¼;Þ¿ñC*ü,¤“óKáYžAHKÒ ‘Â`u5prh´°ÎÐj”’X«±V†ƒa¹ša) ´Ú‡G{NùPj”´£ËÌ 9 á=Ç3ˆkïChkF@»%Y.¦ôº-¢(¢•Dyˆ`;¯ VX«1¦@ë‚ •¡ÂYÍAçmM˜Ýª~«b¨)S½1ª öT°g†¨Õ!ŒàîÝ»\_Ÿúç+0&p€l!•¦Ô%VHÂ(Y•9'/ϧôC<¸ÏÙ«+F“”4[bLF/éñã°¿—¯¼89g>×h€Þ~ª Nó…&êD,+4R š(”u1¢u#ϺÁ@º¢ËtQ:I³·‡²BïꨳäÆpÇ7Âÿ²Áº·{ÿõçË/6¨Â­ïéd…¥úÌë8{cˆc¾ÀáëÎEÓ¤oðÌüg?|Mãü&ÛŽ·öºöŠ) ÖŒµž1lyøð.ƒÝãñŒtc­D1­¤Ãáá!ÿù¯Ê?~üKÏfr,žÒ”H°·w@§Ó#ÏJ’V‡(‰|i"\œ½pùRx%[úp¨ÝÌ&TÜ,†( ØßÛ%Ï×ßdøM|¯W9‚À7CÔöM_ÖÊêÆh竟e ùõ§¿æ½‡9:¾‡T›!zÝà‹ÚÊÇbÚéïô8>:äñ£GœžœpqqÁÅţшÏ>ùk ï½÷ÃáÁNŸn·[W'_|ñ“é”åjé*aÈÞp÷?âèàгöCâ8$Ž"â8j0$ ×èû{¯ˆ|rrÂÙÙ+>ûì3Ò<ãÃDZp@«Ý& CÒ4ÅCœ$, ^½zURJò,c½^³^¯ÙÝÖH‹ù¬ewwÈp8ôa¸¾É“ÔAäJ9ðª¶VS‚8‰Ü9¬ü¢ƒ ¶dк¤(òz?¯,ˆšËÕ½XÙI)Iâ„õrÅÁÁ>d4±\.½:’Ú^©²»ùª{¿úÜétœ²@k‹£ë±ã,R”4DA¸•å û^• Ü:0ÖÒn·yøàæÞ=ʲ$Š"Ü¿Ïû3h% ëõšgOŸòÓ¿ùö÷öøÓ?ýSz½ž ý¾P|s}j‚4AxKI“‚XÝóUã,´ôÆçH×àzƬÆ[‹Ê©$­Sƒf¹3ÃVÂ=ŸÙárM†|øÑ‡¨@qrrR¿—ÍÀV¼Õ¾úMÿÝmÙBiš2žNȲŒv»ÖšëÑ5£ñˆÅjÉx2f<S–emY°³³Ã;w äi†Öš8IØ÷öDeYÖõg¥<«þÿààÀ]3Þ6ëôô”øûàìÕ+Öë5Ýn!³ùŒÓÓSæ‹R):íNÇåhC–f5Øc½/´±áB¿hÌ]جq@ƒö{{Œ¸µbýë¶²_ ?\õ}Ì©ˆµbàÆì¼®÷$¥Rk ­)³|QÒÝGPßÔó-ñusùÞfØîêèjo³ÜÂÛ·— 4>×·-cÞöÊoñ@)]OR–¡rÃùN¯MäeÆb9#ÍJJ¬(°Âkû{-Ö%‹ù5—ã1ƒÁ*éô‹)Ý^DÅ£ê0w!5J ®GWt:Zí×£kTÐïw)ò6“Ù„ÖÅýÁ‡}&ãÓé.‡ÇL+Fã ËÕŠõ:¥Ô ­DÒ‘ƒa‡Ù4e4:gÿ ‡PÖç h›cEÉ:³èÒb(=[{£„VR¹5Û+Ù”ÚØ&9·œ¦$o›j7J;Y£ÕwÓ Ýè¬W¶Öu¯qª︌)ÊÓz+(]”X£½­‹·Ò1’2·¹¡(´·%C¯ž¬WyÃNl…?o¬‘D#OÌý¬¶ù}ÃÚ¿­öúº ñ&9Ë4˜ã (‚РMX¢8&Ïs7¨¯oº ¶Þ”ÒY$Sb´¥ß³`G´Z⤅.3´Î]>”‚u¶b½^Ój%Ìç†,KY¯WXAÅãÐcUI€ü÷åI}j“O°ýÇWÀi“pa í £]f˜S:ˆú\×$Oͬ,¨\&!Š7#l!7ç»ê÷„·oƒa'aµZñÿº”\ϸ÷;;;Þ}âWŸ}Ê*Ëì?$éìƒìclXçSˆf. Ñìk ¡­m³œVlK,Tà‚@ ­hNòëëÑд]j*Ûð}ÁF})¥S[cÈÒV¯ÑåŒýÝ>ï=<¦(S.//9==EkÍáÞ>R& ,.“B*…‡vŒwÇÖõõ ÈRM¯s„êí½]¢pƒ¢´1ÈèØðîxw¼;þ©†¥¥œÙJBà¦%¯l°h”´(% B醂`³’+%QÀØ’ LP NBŒ#rʲ`µšÓí¶ÒÒé$hÝg4ùõÙPꌢ HZ!;ý.I+&K³Úç¶ å3ÆÔ¾·RJ‹‚Õj”]‚ `0Ø!ÏóúqM‹÷ØcKŠ2%Šƒƒyž“¯â(ú–U´ðxY³£¶I;¶&x°™Õ2'Ú‰Ø?اݰ¿wÌd¼àåË1‹EI‘»2FZK¤B$ ‚Ämn6äìÕ5Ÿüê)æñQØå¯þò/yñü%˵!Nºôz=îß;f6½à‹/ž0š¬X¥„ıFYV„,³#,–@(ÒT3­Y­ ïéÁ¬u>Î;Ðy)I!½cÅè²5²/…Ä4{FgV±Æ6™ßqèþ–fñi»šfæ­?…xÃÀ¥V“àš +@7 JÛl0Ýwù&vÏ÷9®íÄ|8¬ª¶áA4ÿÍoJÊðÛ¶öV×€Sˆ…aTšwvúì`¬•,nåø,«Õ’¤Ó¡ ^“Òe„aT{;+À5r*`µZÓëõHåCþµ¥KµNU÷‡õŒ²jŒa­f0²0l(•¾»ªáûÜÚ\…¤V_)o‡ÄÆŽÌ7Õ ïââ‚/^pïþŽïÞ¥(J‚0vÍs¥²e›áòqÓn·év:ìí™ÏfL§SNOOFL¼ªàää„$ŒhµZnXY±è ü†=NE¬¹ 4U÷^†Ns]ÿ=š!ϾtÙ2ªÊO­kÄ7írò¦õJ5¬òõ‹¶ÆÈëaZÚ¯ÌKßì#lj¾[¾ó7e¹TõGsðoßbï~«}[|ÇZ§¬W dÃþIÇY’奡³ãrŠtY€±ôvb†{!Ó™d6Ï™LNÑE@¯7 ,…SÙ·Z´Z1“ɘ0RĉBHÉb±ð {‹°(¸ºº$IB†ûCž=óüÅ ~ðþcz;-¦3ËÅå5»Ãö÷‡M8;›’¹ë¯‚€(èvHÚ3ÂXJ:Ý.¦´,s‚Ph…RÒešÙª6·¾×ôù@BÔÖ^Vl$ ¦º7ì³[ÀšuÏn²„p¯a|Í[Ý£FoômÈD¯Ûž5m`oZÖý“p¤•²4(åîé@*’Vä-%£ZEZÝëiš:Ûi$¡ AY´Ô¸lµ8ÖH™SØ„€kmI’˜ìñêúŠÏ?{ÊÕÕ„Ù²@†¬ ÑŠÒ ƒ„BuÈX!ÂkÊÒIû½!˜6Z»³4–7˱„A@Y”+‰£ÀÙ°xDÅùÆšÚ¶JJé| +F‹÷^­|ž¿!ãwù΄øºbôë!nø£n˾ýçß ¯{ë×pô-Åó·Íø¾‡¦G5ðP>D±I¼Íã·w¸9¿ÙÌÓÇo¾£×•50Š˜V @žç¹“½—eÉl6ÃCEõÀ©zn·[K®g³¥Î| eÌÞî<ÏQJqx¼O0àòbììð‚p‹9öúgª¼ÛKîÞ;f0èÃo먪nžÜ~eqùaÖ6C7ï¥Ê£WWʹƺòë_ÿšýý’¤… BÞ(å%ÓÆ+¶¨íu*ÐÙYòI²;Ø¥•´ØÝrïî=–‹%yžóåógÌ&Sò,sþ»õíÂÛÝI«E§Û©‡ÔQÖƒù²(7yDžA­µ¦ôþÓaÖAÏÕ`}¹\2Ÿ/ÆÜ¿Ÿããcç'8›£8ŽIÓ´VA, ƒIœ`´e±X2Oèõú*Ü ÌXÃÐYR¡ëaë&7 { IDATÀp{ rsmªl‡š„ñ¬lå°Ê¦)vã%\ÙN9û07È_.—ôz=´Ö¬VŽ-Ø ªá@3İùÿÍ÷×dV$ˆ›kCÍ1Сú·à•Þ¡¨Ÿ§AöööȲŒ?üápèBˆý¹½¾¾æ§?ýiÍ®?88 Õj‘¦éû¾ùÞ›‡RŠ>úˆëó ?¤q–VJ¨­µª¤ ÜûÖ¦ÞK´1È0h€K¦ÎÑZ39¾w·Îoâ¨ý¢(âÇ?þ1×××pÚ¾Í>Z3s¿aÐZí6ëtíBÃGðûùÏÎÙÙóù¼ÜEÁz½æììŒétÊz½fŸÁ`ÀÞÞ¾Gìììù,”æàß…ºg¬V+–Ë%WWW|þùç¼zõŠë«+^ž¾¤•8Vçõõ5½^ÙlÆ2]3huÚ´Z-”¿^ªZ6Ž"¤-cÝ}ÑT¶4¯×æ5Ñ<¿Zk¨TGâwÉFi»¦i’Nš×þ&›Ç3po„Èß<¿Ûj¢M8wîíÕ6aÆ¿[çú{ÙÒ+⃿Æ/.®ˆg(cI«Òî&ômd œÝL*Q"®mƒvú‚(F!ãÑš¢\ aÑJ¢0 ×…ëÑ%B¶#A§ÝûÿÙ{Ó&¹ŽôÞï—™g­µ ;Èá6#ŽdIw¤«a9ÂŽáëp8ìª/`;B/d]Ï"ÏI‘$ˆ¥±4º»ö³äâ™çÔ©ê$gFƒÀÖÝUu–Ìçyþe]’å ?;;åì,'KwÇŸ°X­ØeŒÇCæÓŠÙtÁ`0 Ëc”‚ù|Êr1$ËbÒ,f<ÚáÊ•’ã'Ç”eÁx´K¥×àxwÏÓºn­‘k°*ù NWIÕ=šu÷\ýÙ"h®íÎ÷6â|ílÎgá©hÖœU~0ÝæD««pVbðj ºößÙX !i"œZsË­Z»ÉXÛc§—ìaºŸcͰߧ®Väé‰DI‰î¼)%X¶Iç6ú—V_á{û®!á%Fòž@a€ê Øðæxs¼9~œCŠ¢, R>÷À+çCfƒða¿J9¢H`#¼ûü†˜g9u]áÐ!ÄGS–5ÖÖ>çA „t!È«f6›´MXB©ušª.|ø’(Š;Ì@ÙîÖšð~‚ÇväSš0Ôª*Î}_]×hí­~’Äû;ëºÄ¢AÆÔµƒÀøüžKä0d_34о¹{ij§ nÞº6sž>}‚³1Öúy‰âÎ÷Q‘`:©™O*ªÂ ï-ܽóˆã£ÇD©f¸Ó'J–«Uè/9;™SƒÂ†k)A±Zqôè)Ëå)Ÿ d‚DÈ„D¦ØJòôñ„ÅYuµ·!qÄ‚)IG’^j[9a¤$8KǨ("ƒ¢’RZéoKIé2¾óýûzÛó‚_ºi•Ýaì« ®q´ŒŸïØ2¿(WÏ+äÚ*Áuƒ|Oýî&(òÆÂÁ­ÓŸ3üðrã(V(ë‡{Ëå’ª®QQX^¾©SJ±³³ƒP^’+• Ö@½>Ëå’qŸÁpÈûï¿Çtò[?Œ¿`ˆÒÞ£x@Úíîðî»ïÐëå>d®Q§8ûtV×ê˜>ù †ª›õ³Úêg:)ŸK±Àï}iš²Z.¹sçýþ€›·nS¶v+‹ר±rAàB¦¤BIE%íõÕ»5ÆnÞ¸AY¬0uÈZPŠ8I˜ÍÌ «åF´ˆ!¼1ä´á®]Vm°Jªµ"’4 ìÃd2áÓÏ>åë»wýÀ7Rܸqƒ^¯çÉaÏl†£Í÷8縴‰,Í©ë: ì ´6ä½Ü qäsãˆ<ϽÕPg@ß4å‚Íá‡R Eþœ…¯5Ὣ0xéfXáÏï¶}I³ï—eɳgÏ(Š‚(ïµ “8Ž }Ê¿üæ7üæ_þ…³Ó3®^¹Ê ?àääÄw!»j:2Nyøð!ûûû ¸ÿW"dYÆîîn« 2Á§¼®k&“ ?¦,K>|Èéé)³Ù ­5{;»­½Yš¦äyNYU”eÙÞ+yžo÷Ú›Ñëõ˜+n Éݹc3€êª}³,§Òõ+V/ÿž‡­av°&ÙØ:w.;d›àâÎ3$‚ýŠh•d/KJxs\|\¬Á9Ÿ‘„·UrB¤ k=ƒ<ÍüZšD)U)¨JÍbâÅea¨ê!b–Ë )$‹…f±(ˆã ‚‹ú˜ Fƒ!I*)‹ŠéÙ<„¹§L'SFƒœá`‡Ua89°;îÓë X-©rÀë51Mßz„ù¤*¿¦6¹`¶µ ¶Ö¦»'cúœ ‡µˆRÐëçÄq„P×eŒdÈÃÐhís"Ò,óêÖ^$I˜L'cBƒ ÊPþmmÚ¦ Fc18+Âõ µH2Æ…IP›o=*DNE R„ZÌhêzB&ÜŸç¹ÏlšÍû¨X…gו½·”–‹!ÿÞ|]ž&)eYSW:d€Á££#Þÿà]?:æèè)qÜÇI’gX»¶:r/Ëóñ¦VmóïÏû1®£¬jN®_ç7ç<Éb¼„Ÿ…M&'hSsygÄõë×Á|¾âÎW_SkÃîþ»{WXûk€”Ï(iSÝ:ïÐ}„Do''Jb­2©0uÕöloÀ†7Ç›ãÍñƒJI’8Â8E¬¼}N/8RG~cˆ#CHU@š–¢˜c]éN’¦1Bù¾¯¥ «ålƒ5E„ÍÊ/Â^Þ ÚÔ犌¦alÔR5“^/ßÇœgo5ÅŠ\ˆ6äÉ8ƒt EÒ²–~ÿð —sõ<ƒ“¥æÙñ“é’J/)*?øR‰aN$àŒ÷Ž RhÓ9¿ùÕ¿P늲68"„PV9…¨àÙÑ)'jEY/=ZŸÍ!AÉ%%‘„Xú€©ªòŽp†X…Pqé•Ö8œ¾ÀÎ7ÍbÛÛðu†µ¿ßïß_¾t¡Û$g‹×øüëêÊÿ(¹!3×Fy²m NkCvƒmxtW*ýc ×_¤”ø÷n£´ƒlÖqá•mòMbU­©jMQ•äyNU{–™p¢-ö{½^ ¬â,F[¦ÓYj ÌfSÞzû:JI>üðC~÷Å×Nν¿µ%œ_£X±,J®]¹ÍÏÞ†ñÚêÖ‚âî\ãU 2Z{7C Çšá$ºòiÁ+ÝÔšI9áÁýû^a<ãœm½ïEÝS‘lÁ†î/ðíÖgÝ뺼™gi×Z³X®(WFk¢ s€uR6>ºk«d ¥ém˜ÊbEY–sÿÁîܹÃÉÉ qó7û Þy÷].]ºD'g4¨è>ú˜o¾¹ÇxŸ'1Q§‰ÏCX.Q!8I’sƒû‹ìm¢("¿ìF² KÓÀ€·m…ëØ4ƒ|ðÁ®yîÁÓÓSŽé߸Iš¦ ƒö×G}äß{Ì7Ãá‹Þk·žè&¶e‘96Ò¼/r7‰íz¤Qøµ~¾áÿâØ‡j—eIUUð‹_ü‚ƒƒŽŽŽøÝï~ǽ{÷˜L&h­)Š‚7nøÐè­ì†íµµ$«¢àÑý‡ ²<„Ë{v@“=¥‚¸ Ù RÈ6 Ú:‡ ~ÅJIæ«%ONŽ)«ŠápÈþÞ.ýá2¬ Ø)´ñÏ ²þ!Žæš)¥Ú<’Ù|Îã'ùÍo~×_|A]UüÕ_þ%iê-XîÞ½ËÝ»wyvr² `Ír¹d¹\rrrÂÇÿú½^^¯×Þ{ €Ö«@)Š¢¤”dY智B°éR ~}þ»Ïyôä1ÃáG¤iJ$uUµ™ BIŠº‚0 —ÊÛ¾xÿ~Ù¾†±vãWQ–¾VÆ«äÖLÞ?Q°k ísb"oOA°I¶ý{s?µà•µʬfذ°ëZo0ò¬úâß °ÑÙûšÜ†4MÈó”Á 釙° LŒ©#œUEÅÙÙ’ù¼`µÐ ¬‹Ch±D¸\Œ «5+Wyå`¡2I¹°`@š$ "ŠpVS­YÓëyüäˆãã;£&qÍ|>§*-{{‡ŒÇsîÝÀôl…½¡Ò ¥$Ïs†Ãóé’º.ˆâ)i‡Òž)½fµƒ#м«@–Åd™gÌ×µõÁïÆ®³ Ø´Sû¶¡ûE@Äóþ¿ô[ZŨ6†8‰1ƇD{¯o¯¤kKUtí<8bÀZ¬{Åyöü·±Ô·žÁ—é^ÔgHÙÍdx¹ïï*­» ¦æ¼hÝdK êºB)_¦YDšEíµ‰BnRwí(+¿7D2ò×Ôúyˆ»ð¼u]k’8¡ßë3_ÌZ éÒÐ,3F‹`‘êpVà\°‚í£©Uéü×.¼-’H&¨(AÊØƒ(!$:I2ŒY¡õ „!Š'™NI’±³“r69 q‘¤Þ–Ì)‹Rø‘¹ à¬À +yƒÓ|õÕþöoÿ†édÁÓ'Sö.#UŽ1X²'üLÁmôS[@‚èät´öµa|ð‰‡­L@ø òõØ¢ÓÃm´ªë{Úÿ|šlJƒ£Wszú˜$ñ΀½ý=Ò4ãþý#îÝ{D” è¯g»eAz:8 ÓH§iämx5‘'ŒX…O®“ÆbL…ÑÜ›€è7Ç›ãÍñ£ ‚$‰pD(ö6Vø¥Q*A+¤D±@kS{öØ6k9ŒÕØÀM’¡"\ðµ³Ö ¤B‡<ŠNûá´aP#d‡9áÚÀ!ìšš¡j£lØf¦o»êx6Œ [ëK)‰‚w²h|S»’Rñ|Öï2Ìö RŽºöO¯ç­Œ ª ‡?—hŒ-)%I$Y3$é¹+kœÌ‰#…µÞKÐI‰uÖ7!Ú!XH/wL„Fàèç>üT8 µg&Ä(¤‚D!)W Ò ŠÅ© vÞZ$AÂ’HEÃCñá^2xÉk”ˆÖÛbÈq²‘ºÍbà5z"ñ{ÜfñÊß)α+^哳–U¯jZ뺖EÒËqÃsÝÍ û¶€ã¢ymíhÒ­Ä9pìäzù}œï¡û<«"ZK)XAJÉ“#9›,9==Å¢¡±sÖ!¬hm<ʲ ~仜rôð·n¾?Èó n½u3X¯œnä4¬½§]û‚ÿøwÃþÿ.±ZÎýÚé~Ÿ¬X÷|00’,Á®jîxÙ[ÂD$ðïÍFrÏãÙÆ>,z:›óøñcž³»»‹‚4M½MLUá%îQ’Ü€QnΩj<ê«M«¸+‹]y)zGÞ÷¾®Û d¹esÒX&‰ÖËÙ€k°½e#:Çl>çÉ“'|õõW?{Æ|¹ IÞyçÞ}ï}nݺÅp8l¯¿RËeÁÙÙ„‡B’¦ý~¿RÎf3o»”¥-3{0´Ç£ÑÈk6ò`dP$)ÚPJ%Y–µ¬â® @Ç-(ÐXDw†~t¥”᪊º®)˲ý÷( yžãœãÑ£Gœœœ´ÊÇnfÃö€¥ù»1fm“ÓZoÍ·‰I’l"-جéØO9ç¼’fµjC®‹Rz`ðöíÛ‘e~ŸÍfüã?þ#§§§üâ¿àý÷ßçðð°U”4ï©Íih‹qŒÆc³9B[V)Úž5dM…5Hú<*B¸z¯ßcY„QårÁ²*™ÌgÌ v/í“ú$ÁBÉÇ×Ãï×Üò_kÛØ<5Ùg§gŒ†#þüçÎÞþ»»»ŒF#NOOùüóÏÙùø“OÚkÑFÖZ–Ëeû¬5ÖvÍÿmí„­•Ns?ôû}6CUW,– ŽŸsxxÈéé©Ï<¹tù2I’ðìøØ{>7 à&g©ú-¤hA®²Wƒ³–ªª(«ã,I–¢µi þ2’¸ ^km\ðƒÞ8¡ôƬsyžC˜x^ä·ësö)Õ ¶B|ë>æÎŦëÎwn sì(RK YçæxûŒþ(e±:Ã8ƒs’bi1¶¢Ö%«¢b6/Ð6"ކôòËäùÚ „°DrI$­gk;K]Î)Vs꺦Xž}_kTì‡{RøA«6†Áp©r&“D‚ª4<;ž°·s‰ÝÝ=‹%÷ï?äç?ÿsvww¹wï>‹Å’ùlÁx7GJE–&¤iÌÌVÅ‚ÝñRy…¿VD‘ÂZÝ’O”’¤™"Í"²<Áa(Ê%Ƹ`m|±Ò ç€ Y„u¿®¤­3!ÙyUƒ ÞþÁBɇÖÞJÇÚ`»d=0äIPë@ÛFå·ýþºûÆórx^eØ>?¯ªlXƒ Û+66wBxûSŸÓ‘ø¡{EªCžÐÔ•WÙù̃º;¥ô{µ?w£ «eA¥jzýœ<Ï@X¯†ÀžUD›i!„ÖÇ¡&,^É` -1µÂhEõɲ£Ñ€,KÛþÒZ‡6°X”¬tÉr¡ƒ².B)‹5ÚxK§¢,ÉÒãñ>Y¾ÃÓgϰVøÊ0”HåïgNYŽ ^=]a!>Kag<³ÙŠåRs³™("D‚”¾ÿ‘¢ý¸¶¬ۡج‡Ž¹@çr®É@A„À6©osí›J÷gÊ Ñd«øžO“fŠbQ2™>EHÃááe.€ƒ»wï1.Pñ€´w‰y!°"ZÃ"ÂBQ{aÿb­šhëI³(|®‹ÀÒ,¥˜×-‘í Øðæxs¼9~œ&Ìúük­g®G±ß!’Ž$‘Au 0D‘Ä)?4PÒY”¬CÀEÒ0•ÝÈ)…s–4]˽Ó4€Ÿcçœ"ZTænÝÚg{«@ÏÜnÐ <”l|/ün$Hç0+ »žƒl¨½zsÛpÇ%R ÒÌ‘¤Uaà§$ÆF›±X,}†TQ… F‹‹C!‡ M3D°Öer,–Z×ÁÞªa»âm;B‡’ŠHJ„µô¤¢¶–ašz‹!ÀÌGÒ‡RÛ’A2B[˜pŠ(N1Æ’$*øGúó§@‰%±rd1ÄN`µoØTäíFš L!š!3¸Ö‡èÕ›Ýï£=~fÌ…&À³*^ý½ ç#`Å +.t7Y ëAžÃ¢C3+H#‰s>(JȈUQaL±~D7TðÅ  ï»a•Ý /_K ˜5z…x½ðV=tø6À¦B­í\ëµ»wËÁ«u¥}^–ÅÓO¤Ô‚^–°X,ØÙÇ1ô)ÇOϸqÝ3¥©}ŽŒ4Ôº ËÒu2‰“ŽíVSà:®\æù_ÿ y¢XKöfC³–X?.«òâà¿&úÐ7ì½þá ’ÊÍD«îé¬'aj‚ÕëºV3Žßþöÿcww€k×®yõA]¡„ ®5¶¬[%k­ÏHb¤RáºX¢ÓͰÞ?YUžÑÖÁÎFJÙ>ë­ÍVh|m'8¹X,IÓ”4I(«Š³é„G¹sçß|óÑ,KöööxûŸðöÛ?¡,+`Nš¦AàYàM˜u¿ßçÒÞ>uUGq«l˜ÍçŒvwZ›£År‰uŽ^¿Ïþ¥K­Sš(¥0rsÝj›õJÜx7Ãá,h†ºÍ³ÖUº_WE„;›Í(Ë’ñpÔ²IÛ»ä׿þu°^¬ZÆ{¯×»Ðf¢y?w`ã=l[+­Ú  ¶4 쬅mîF£ÒV]>pÒ1…Âǹÿ>;;;Ìf3îܹÓÚã<}ú”Û·osóæÍdèZ8µ{`Ó?=z„TcWà r­¾kr„ ISŒs FC&‹9gg§g9™œQÕ5ƒñˆÃkWI²)°>„›°Çà:ô»ïaO¹h vá~sAhržeܼqƒ·nßö@Ùp賬eoo4M¹´‰ñpă8>>æÙ³gÌf3Ÿ—£"Ÿi&6s£šáXs¯6ï/ϽÕX? H’„²(HÓ”ƒ4ýøñcúý>µÖ\¾|™?üÅbÁéɉ·C j‹#IS´ÖDqìÃÒ¥Üx¦D¨o±þš`écœÅ)ß'*âOQÖЮü¶©Ï!V’4‰1¦& v=ÁµbÃÆçyµ@ã¿mç:Ϲ¼ï„ çÁ¼çaæâ<ààžSŸlcÿ¨ó!Dhp®íýâ8&M¼õ]Uj„ˆ1µc1/™Í§8—)QÜgç' G×è÷ÉóCÊN&ÇÌO)«S ;»Sàt‰ÕUèƒ%B*m˜O*FÃ>½\S•+Ò<$N%”•FhíÕç‹‚£‡ÙÛÛCáƒàŸ>¢×Oïô89yJQ\§_ÅdY„HSvwFœžœ²\ÎÙï"¥`±X&¹·ÃDqzzæAýØãñ^P8Ôaп&å5µd³_6î‚Ý µ­ÕöwQ–ÒúÞ¬{|^U«ä±Î“_œÃÐÚ`Œö_otûõíÞÚ ¶õ3€ÍgËîvÃïy–…ÕëýÞ<ÛØî…ýà¶J¤ Žlœ—Q¢®½ ’ bg<&ËcœÓD±"V1¡M‚•×$¿ÿ{uÊ¢ÂZÝ^ïª*I²˜Ñh€# µñ_P•æ}…CãDåÞF‚K…•±H‘#Üg2ŒŽ99™¢bèõ2ŸÖGC"Y0™œñìéSâ¬"ËBhÒÄסU]âñðŒáèŸÜ¾Î“'§ùäS„H¹téq´ƒ¡ÉÞcÝ/®{)׸?†å¤£lèö*Nvz²ncß±7v"ü½WÛé×ü®bZÒ†êPvno«Uë‚ùâŒLZnߺI–¦,æ ¾øÝ!«M1Þ¿…SCJmp¬‘ò­r¨ßšÜ¯&7ÄmöÖöTÊFHçû=á4ÖTiCÞ†{6¼9ÞoŽçˆ"E+‘g«‰@a‘‘À8íYÓâ8G¯ùબ¨Sˆ»vó=_H» éb;'qÝÁ¼ÜðØ…àJבà ·U85 ðßëœÃ„F2’ª-d]6<!ÙNø>8_žÅÀeIÁ0ëG‰ÏABÀrÙ,+½áéoDE§k@Æjp 'ÖMZkØˆà … A\³Á»·s¾q¡Bu é"¤pž¡âQÚ€ R5×[ø¡¶ÄQì¥ÅiLd"‰qRx…‹h˜ö›¡vcÐúrgzmñòúƒÍïÐ,ÄÚB) ý^ö'5à‚p‰åEê×ñ«Ý,®Å†sWÍ „D‰Ø?«"Bª% –Ë%Q£Mµ¥Clü±zÈpíÖC"/QÝP8ˆçµÔ@Ê簿^ö{»Ãù•w¾×Æ%Ër… c|^ƒ·kð,%)E[p&IÎ’ç9I’P×57oÞÂZFÌç3ò<'Í’ë°Bë: ~Ï_ ã÷+ðë„s\»~•ÝÝ1ÂTDÒ£`Í=ÔÿIAVmLð]·:¬‘5RzÛÇæ-ç6~÷2ûHA-<ãÌjÍWwî°3ÞÁjãYˆÖâB@ŸL­[°A(‰3Æ{Ü7/d×~ó,7ív3˜oƒ¢]cYè‡Ní÷t½Æ›€ÄÐØdyŽ®kÎÎÎ8N¸s÷k>:âáÇÌçó0ðŠ88>nYçW¯^%íü¬íáq,ÜÜoînZ£[£´¡’Þ\¹ è힣æ5+*oÏPóðáCþîïþŽ<Ï9>>æÞ½{ IDATcèõ{()ïî0ŸÎX-—¡ŒÂÝ¿¶æÎa¬£Ò^}SžÖ,ÊEU1™MÉú=nÝ|‹+×|(t’eîÿ懵¾Uú|@öwYw›óÛÜ÷ÛÌÙFùpýê5öw÷øéûïóõW_óë_ÿšÇsttÄl6£ Ÿ½7ðÀ@sí» Qó³š!t£®Çíëõòœ7npùòe¦Ó)÷ïßçôô”˼óÎ;ìííy+K¥˜M§m®IU×Þ¾,IȲ,¬ïó `)Ž"të SmŒ’±ñ,þiÞ÷Û¯÷Í6Øn„½ä" ¸‹îÝm¶´uŽZkÿ$ul.[Öì·ÔŒN4J»?Í+Ô€²ÍP·ñ¬Ç9NNÎX®–T¦Ä:G¤2$1iÖg4¾Dšé¯»ŒÆ7r§j'1åJQ”]UX ¦4à@©˜(N0uã‹Þg±’½b0”ÔÒ`lͪ8õ{޽‚$ÑÚqr2AkKQ”?=áðÊz½«¢`µ,©‡šH ¬ÕŒ†}Ò4öÊ2«½m`"§iBÀÅ$ñ¶;IÓë§ÄqÄjU´ßg¬ß»¥Ü §é… û ¾UÝÐ ý}Me±Î´¾ûžum€_‡a»EkÓ‚~¦+A¦Iõç†.©`s ï^ÙöíyößàÞR5tÏmðXëÕ©u¥qV´DBo·)pÆg:ÅŠÕª 5¼·Ö˲¬­éYÓašý©,-2rĉò^‚Pk5OŸzƼu­Áš±auÈÂrÞ–ÕIý—÷wÈ’]$#@2›c œMŸ1JT”pr2%O÷èõ†ôMÎ%ö™LŸN˜Cª){{—©kòX0ßçÚ•Ÿðþ{Æ•Ã[Ü»w‡Éé–Óšz y–´$£µ_i­¤4Iœrëæ þÿýãðÊU„Ü»÷€$é#e㜓> "Ôùë È (™Í<÷œÉN‡„ѹ#ÛüÂùÄEʻΠi5ÿ«Ùƒ…´œœ>AE–ŸÿÙüÕ_ýe›3öèÑcªÊ°{pHÞ»De¤H°ÈN–\CìRM” ÛŸÙ a;(–$v kpØÕ°áÍñæxsüXEø1‰GÀ+^(ËÓyõƒôz)Ëåg á ^%àÔ±h;a9â|¡¼fIÃp'ÃTm åB¸ •÷›÷ÁÒbÃß]8±Q`5=ç|µ`ý½¾!ôym|f„}·‹|è×EÑ2ÀråXÚ3†ƒZƒÞ B8åÀ:ƒRQ»/zvˆà–RGʨÂàÖöa$"T¤ÖçÕ:Œ­1¬²Yšpaë‹CaÂiŒÆßÂ9 ç0ÆR™µ6¾ ’(JHÓ •$ÔÚ_¡ª¬qv‰´‚ÈD_Š¢ãù†êäï7±øµ” 0íUN§díðȹ`à̹ÂÖK'PgTãŸa…•>t®¬Vd=®+œ1X+;Kî?ïϳa:gC þ˜×Ðç[M=Ÿ9õü43ÀAÏKm†G~œí‰%N¤>LZ¢(Fɸ »½|ù2½^J)FÃ>W/3èç|ñÅg\½¶G¯×ÇáY|óåÒ³-ÔºîX®Øà.©*ÃáÁ‘ôϸ·¥íZòmAå/jþ¾oæ¥s.ø—G,«² ÖÞ®¨fÀ[zjÒf–Bçí(!‘±¤(y–QV_õ»;»¤IBžç ú}´1ë훦Eë[û¼šÖÚ¤æ»,ÂÀ°Sa-7Ö+Œ±-ÐØÚ#uYÿ-`Ù€Ú~_­uÍñ³cžÎ¹ ÐBt”ð¥yu]S×þù|ï½÷Øß÷ùÓé”»wï¶Ê•³³3þíßþ»wïríÚ5ö÷÷¹rå W®\inŽŒŒvvˆâ•xeÇjµB8Pøausm¬³Ø08/MÍt¹ 2šKWÙ?¸Loú¨]{ã8fg<&MÎNOY-—èºn³$¦Ó)J)F£;;; ‡Ã`ÃQµ¿÷{=”8e7Àº&´Œ5Vdü ‡;áó¤Œ[Vx§A 9rî…ûÖ9Ká÷­MkýúC© ž†À÷¯Lý±l™l'Ûj9fYÌç Ëå c«Ê²³»G%ı¢×©í”E±àÁ“û¨äWäòÁ™ í^'\¢\îSW(Ë3êrŠ.瘺 `l‰3 îDŠ£¤ª5g'3œã„Åo“˜E1qäÕôªBSƒ³1gÏäÙŠXõ0õ)Ïžž1ô‰"~)Ò4¡,5ÚTäyJ]—>넼—µ¬í^?g<’¦1Q$©*áªÁ“½ʺ{ВϺönm‘»l¸hè~_›'ÐÙÓvèÚâ¬A‹Ö–º²AÝà¼ý²m«Û6J†P[çè8¸ A‚Í{ýÛço»W_ô:ßõhÔˆ>c#j¶_{ýý¬µEâk9]{›èÙlRU¥)Šª%Ð âîÆx5€ç4ÆT€e0LI³˜édÅé³E ŽqN µ¡®*t]“§ á‡<þÜKÂÈ%I“™ÔAWÚ[62g0pýúuvv¯’<Ž899&Ëte‘B…y¾%I%Ƭxúì²,g<ºFòÖßpÿÞËŪű¬QªÆè&碤,*?_°ð³Ÿ~À_üù‡Ìæ î|}—ÓÓ97PñKŒ”ð.еܹõØ­­”\'ºE{µF¸¶'n,нS€e6lßgűët2ôuB%’“Ó'ŒÆ9ÿóùŸ¸yó2Öz[Ï'OŽÑZ1Þ¹‚¶1È EŽt±'ápÁ[¡Nzבæ¦jT‡ðs )ÁøgÒ8®@Ù«åEñ)goÀ†7Ç›ãÍñ㺮<ÛS´®P6ZŽ¥b…Ö2Žèõ2z½`»a×L5hY í¦Øe}ÓY¤ÅfÁ.š†ZxÁ& ©)4iýî.öFõ…•j¿o£p´ÒC»e‰à?cØn˜+¾Lûr6*ðá‡o±´ #’Ä«"QV¦-*ºþÂM±¢”b±Xx›k[Fkãé¸Î ò×ÄZ/†™k¸ÓÁÒ3LE ŠxÙŸW´ÔuM©kÏ‚2¨X"pU_–%‹E…C1_¬("'¨«š$ËqÂnwkHˆW· Ú’³þÞš'ñ݇䭠Sˆç2×ZÆ lŽ›†”.<ƒþëL+)ëUU³\Þ¶Å?ÄìxT²%Õ‘eÐ뜳æç¨Hmاü©9œ[—«›ëGÇbÌ­Y•Ö:"©Ðºæ³Ï>e2rùà&Ö 5B@–eäy@¯—“$ ç JAQ,xò¤æë¯ïÐë+>þø²Omô†M†PÖî?àñãÇܽ{—§ÏŽ©Â Ý:Kšy¦ä¥Ë—yûí·¹|pàí›:yUUñäÉ>ûì3êºf00ŽǬV+V«“É„ÙlÆÞþ%®_÷€E¥ëÖ£¸É´hšoÂ9Ù°h`­rð·²U.¬ƒ·eÛt[ë‡ÝÝAH“åнöI’& “Ù”étÊb± ®ëÖ¾¦ßïsûöm¬µÄqÌoûÛVñQUU›KÑÞ[¡ß]€a[´ÙX>tïÃf€Ü]7[£óuÛÁßÍyhÎW¯ß{ï=vwwqεÞÿ­uÒ|>çøø˜o¾ù†»wïrõêU®^½Ê•+W888ðf¥ˆ£©$q’0H{9Ñ"¡*Jl­©ŒfY•~Ð]ÕÞRIú¬«ÑîY¿ÇÎî.—°Á–R4ö3¡æŠƒ­å¹ÖkÂÜÍs…{5û¶.K·ûêª^×¶ý݇xF—.]bggk-ׯ_çää„ÉtÂÑ£G\½~*ØŠ­ýºýý_Uãñ˜¢(8==EkÍ“'O8::bµZ1)‹‚gÏžµ@AøýÍ7ß°Z­ZÏÓ§OI’„“Ó“6¼aÁÞ¾}›8І˜0PRB’ÄñZ1ÕµlkžÅ?ÕTè î¥Fé¡‚ÍÑùµs[5ÃÛ‹êÿ.Û!¼¢Îèv_ß“}Ø«ÔǬ‡뇯UNk´Ñ¸Â­÷Gá÷Œ8ޏrõ2½^Âp”ñàè!OOæ$Ù˜¼?$ïpBâ¤"NS¢¤G/ÏÁâ¨0z…Ó8ŸÉ³ZN®Àa©­dµ|Æý;ÿDªoIb+p–Ê–”¶DH² XöÚÐu„dr¶"ŽsÒ,#V}ŽŸN¹tiß«Ÿ;‘¦e9§,KvvvHʘ,K‘"EkKžgHÑëõȲ ç RI’$ ý¡6ÙÎ0ôGW xn`o=¸úJ P ZøšE"ðü1ÞâGJ…®LP5€1£½Å¯À…û&»Iv âu..²5{±åûèÿÖĨà б£I’¥Z«u62djtíZˆ® fÓÖ‚Ö–,ÍÛ¨:]i¬ÞÜÿχΓ˲@‡5BX’4¡×b´Ï0©J5 läk=-ˆT.ÂÇl6cî4Jx+'c—h;ÇÚE±$KÆd‰D(M]ŸðèÑ’á`›7®ÓËzœMž1›ž1g Í#⌙P¬NùúîG¼uSñÁ;ÿ=ýô_âÙ³/)‹‡~æTÒ$£ßSH–ÌgKöööx÷Ýw9;;coÿ÷îý¿¬ÚÖm( Z%~[ȯØl°]p‘ÈÀ´ßS ‹©íB¾ŽWð…Ž°ž¡jŒ=gWм¦Pòù¥hâ^‡Ý`­E]Pð‹Ž½ˆä Š¢¤®Ïˆã”8ŽAx……6nlð™>v£Q<›UaƒôÖ² 5Zl¶)ÃÐ —E° .„vwÇ×%óy Öxk&|ÄçJ°þÜ[ãÐÆR%Fņ˜$ŽÉã>vcSln:Z9íw6o]Ã×›V¿Ž²á»Ê]wyØ /,Â×…Ìš…!Pr«)°†,É[ïSathÔ\‡qzþ |îeŸÇtΑ&éÚBFzÿ|óû‚þÛÎÇEàM×FIŠóò\ý¬·6 ëjc Ó0fóÞ€$õëW¯×#MSƒAûýÆjÊjÉdz££Ç|yç }ƒTe±ot‹ê<ë< zUX—Ò4e41™LH“]­Â×{F¨u›:/ÓØmÛÜ}_‡µÖââŒO?ýôük6 hsßoõ¹‚&!¨¤"’ ‡ KR’ý”årÉçŸΓ'OØÝÛã­·Þbgw§õ–]¿ã–-XØ~ȶ_¿‰FZÞÍdð É:d7–ûðé²*™ÎçÌ– N'güë¿þ+UUy` *Iâ˜Õ|Õðwvvøàƒ¸~ýºW;¤Þš¯ êºæ«¯¾âèèˆ<ÏyëÖmÆã±—-Kʲd:ÒëõFŒF#„\ÛÆ!ØÝÝmïÆWUU»§á|Ýa› ëսݲ‹;7]ð]tì_6†§¸p«Š’÷îSkMoÐoÁy¥‡‡‡-1™Løçþçs?¿û\T4wzcI³ Ðüœ$IÎùM77tîÅí¡ÂöEA¿ßo‡YM u–e\½z•®_¿N]×ÌC xY–ñøñcV«UËàϲŒ½½=²$A8ÈòŒØ&¤ÆÐëõ°ÚPeQ0™ÍpRæIœx0'K‰’„(ñáÝËbE”&> ú‚ϲm5±æ¸ åÞë®Ç/òÏHîf|ÛÚDZ?wyÆxg‡Ã+W¨t݆Œ7áé@ @L&“V•ÐäoXk™ÏçDJ‘¦¾LÓ”4M7î·(ŠÈ³œwß}×Û0 †L§S¦“ “É„ù|οû‡‡‡­)V+¬µdáçDRµû‹ {Š>O«±CýS>Û çÖ6c-# é_¶†·ÛëB7C¦]ΔUí-K„DÉîž Ú}æuk÷‚ÿû>U Ï{¶~(`£±Ú±Ár×ðÃëš'j,–á0çæ­K GEµàôlÂÇG7dwÿþà’!‚œ J‡•AŠ QÔo-Æ=Kʪ r‚^ùŒ‡÷>§‰„E6ùiLikøÐ+Ÿ› Ãšn±œ<’õ*êjc8=Y°·¿N‘f}Æ£1g'êºÆ9Çîî.Ui(VE›ñRUU±\ ’´ç÷$B)O´“Òç8·ùu°vÛV4´{g(9´1-à°iSt^‰×íMóÖÉ~›V-(ƒ2ß95£ñy€V~ŽÌì½uogÒ»¼ìZÞZ°¾L ó þíeŸn¿âIz“ô"oÑ,\Ü*!c¹\¢k‡³Ê$‹œ4‰)«U¥™M'DQB±*°F€³çr3Ö¯ÇÆ+åçÚ;ÔºÆQ¡” ßë1 ö.‹gœ.8y¶¤Zù÷aêŒù²DÊYjQ*æð`]I><¢ªg¤¹AÅK}¶'¨õΕÌÎ4˜±P¼uë-Ž%(™2›Ï©ôœþö/õôS²&gÇ<~ü ÊöxÿÝÿH–PQÂ7fÔ«%7nÜbЋùü³Oéõܺõ?ûé‡$q†Ö–¯¿ú†,í!ðj ‰+½³°ù-ÒVCæÏ›}Iï}zî>y±¿ÝFïBƒ+' çí°üò.:–áÞÒu2=ãøø)÷þš~¿G­}þÝé驯ÏG;ìì솹‰$ެSXaZëïu]löÚ½³pBVàfT«)§O°˜=¢ŸÏYMïÐWLõ¸ülxs¼9Þ?B±-*òC~%ñE±éý𴮨jo¥äœ/6Êʪ{'X³­*èZµ4¶mÑß¶ákØ@pÛÞt|’·Š†9¨µF éíy`3¬±óýÍѰ/…ˆ°V`-&«Œ ]Ëlð…¿}A£êe¤ÿõW_s²ôÖMR& ½(Ρ:yîœEûríço” 2 ì]§‰÷}>g[ Û Ñþ½coü}½ÅT>v5¶eÓ‹ nP"ëå—Em</Æ)´õÖZ¶ /ÚÔ¸ ©ÅòZû×íu¶ßÛ+vD/ýúÏ»Ÿì†Â`û½uAî£ÜµÃê5cÏa½¨”k7K÷j9¯Û¤®SÇdzÖ†©É蟅÷|`…áC\Ö¹'ë@n5î~ëA]Ïú†ù|Á|¹`µZ‘º„þ@„XBQ”œžž’e9Iœb¬÷‹½wï~ùËÿÊéé)TRÚÐ$ ¯a›¡§ó,,î_ì—_Þao<`ÔOˆ:áÐÝLž—>¸×ú^ÔdYŽ”Š/¾ø£-JE-¨,‚uÒ‹pÁÁÀ‡T’ µAë’GGyúô R)?}Ì|Àþþ¾Ž#tå‡r‹}䯭d# ¨c ¡”ß_¡uhmýß­õCMk8›M9=;ãl:ádrÆ“gÇœµv)B@U× Òš<ËùÅø¼ÿ>”eÙ²¸³Ì7È¿üå/ùøã™N§üô§?mC£›ë;N™L¦€·–òVšºª¨«ŠñhDš$¤IêèP˜`ßÒuºMžhc¼½O`Ý{nEé[{Óêm‡±:ë÷ö8Ž1Z³X,|vÅé)ƒŽb¡ñìoì…Æã1Zë–IÞ ŸîÖÖMv­21Á⪠|˜pß$IÒf&,C.B£lh,%·­š.€4ÿEѹ¦·y_yîm­¹téu]óöÛosÿþýÈiU|‰8IˆºÆgÆZö|3íhí¿|ù-›XÊs@Í«( ~¨5ùy€CLb‹%u€ !qìíu’`Œ!Íý½pxèÕSÖP”%½^c wîÜáŸþ韸sçÃáý½=â(òìå$¡?xû#k©kŸ 3 ÚÚ4˲֒i4±¿¿”’ÕjE–f,æsîܹÃ'Ÿ|Â_|Á;wX,ŒF#nݺEEÌçó ¾ hÎ5 àhxu©» Þ5|Ñ5ØøýÈŠ¸5«U4•1Hâ¨á4µ h›éÓ!4`èEû ¶?Æ:êZ‡{lë\¹ö~ÕAêë¾ÎMòð÷« z½Ì3†—–«%“³½|Dx ïM°FúnC^" ç| é}ƒC`¦¶Ȉ^šño_}NUzYŒr’XÅHú Xâ”÷Â÷ ÿ ôwÞÖåéãd$‘QBÖKY­*ÿµªºB©„~ˆR£á˜ÅbᕬQ(zýžWîã `M-C^G^½¤›>k«ºlÉ}[8Û¹wƒÍL÷T¯ÕùÞ‹­¬=k›ê ÓžÔ$çB>]ð–oëá-"Hãz š¼ËEÿšdþl@J¼p­?„°Ìmzú·¯áÚºÂÎÖ^aPTÌf æs‡6%‹Å”º^yk=#‚-µÜèû»×Ð9Û©Id°?’ÔµmÕ?*JˆTŒR=¬M(V!z,3Î&šùÄ’¥c”f~Ö¡`ÿÒöö¯S’ӳ崤6ƒ *_¿ægYJY¬˜ÌN°Ä\½úo½õS>ûÝ|ùÕgÌæ+¢Ä‡GçYÂÞ¥!óÉ”ãg_³»s…ݽŸðNï§$Ù‚>þ‘ù0OPàøÙO?d8Üqv¶â‹/ï§C’Ô[(y“G¬·ýšÛÜ×¹3lƒÍú¾ 2x[qñ—è† Û8;ÈK¶Bë§'G\»²Ëµ+ûd‰Ÿ¯Ì—K>ú䬓ô‡»ÄIŸR$'=déð J÷5Âü¦±’RøÙ5D‘£*—Īæë¯?¦Zá¬áúÕ>g§Q¢ ¬—8SùyØ›1è›ãÍñæøáÁP‘ÃiKAäd[XB ¬­!HÁ%°±a·Ç~cr­"as^ ޵=ûÚfÉ:‹Õ ”ñ™ ¢+K>`t«!l€,óA•ž¬´žôuQ`ÿ{ƒ†[¬«1Æ«"¬ ,%·(Ä· ›»€Ãó»hë‡ìJ2AÈ„V""ʲD©°*//-Wyž¯hϳ nV¿{óžºI›žÆkŠm­-L›/!ñaÙM‘)å:”ÔXÓ6RBøp)‡Ã…a‹¤ÄGKŒSëòtkZ. M)‹xÅýæ™}]zØk4WÎu ò­Úeé\ø:]Ïu±1œ>÷UÔš‰hüÒx–PÇ•Då\3Ì–X,H¹fZwCfÅy@ãeØ? Æš½þy{/Îï¾û.iµ÷úÝœ¾hòÃYÈk¹“ËÖu1¬:ï¥yF½P“©‘D ÆjÎ&Sfó9RÉ((ÈÒŒ~H¿?bww<ï¡TŒÖ†²Ô›ñèÑ#Þ~ûm²,c8P–%Æú0ëÁpÀ_ýõ_ñÅ—_P¬ ÏF4i¼— ¡®ëVЀO°¶Ué2»JµB]•Eqní€ ®&ßbwÑ @Vä`0@kÍÍ›7‡ôû}êºn¯ ¸ÒËò pE4÷ŸŠ¼74.8fŠ æecŤX‡á¶ã§ >Ç÷=¤ll”Äw†v×ýµ/¶ÛP“¸-ÛÍVí¥Q%1Ƙ6 e¹\’ ½šàøñ>ûäßøúË;çøÙûðî»ï2 PJy@2¬ RJ–Ë%¯Rq±.ÐëõH’Ä++v÷X. n¿õ¿þ¶=µ IDATõ¯ùå/ÉgŸ}FU×1 ôú>w¦£ŠÚfèÊÀ8â|ë«Û I¬Õl½¸€û6>GëÕþ{°á“’•ˆH•B5u©kH1ÞJÔ¢m Ú¨Pso綉ðãl!U«JkΕè0šú†Õì cF£!‹Ù1•.‘ `hôlxs¼9Þ?R±ígÄiQ‘@ïÿd'ÜZVÜHHU·MÍy¤Î ýºŠ„î@­•jJˆcˆš(×)½_¶èØ]f•åQ;x•jÓÞÆ9_LÊNH£o®ðî¤b³°Ï™•m‚¢ô¯YK«\‡;Y3#ˆ¢ ëÔšñì½|è÷·–¬öó¤=²‘†=Õ ?Ø2(BBáÞ´ý>àÙ^hU°FÆí:Ï¢ay9‡q¦•ÛŠ¦+ E©gШ֚IJIÜ€Â+œ¶mÞ¶ûˆæZ q¾ÙØhô¿íþ}Æê"µÌù¯q/ƒIœÿÉâÛ“õHóù¯âs£ ؉ d"œÃÖZIµÍ@sá|¸Ô¸ð÷Xx™ ¾u¸ï6˜íޱ…””UÉ_þå_ÐäþöÞìÉŽ#Íòû¹{,wÍ›2‘’`±«Šªµ{Æd­‡Ù4c&kÓ*™L&½Lêžn³î*Éb‘U$±'ÛÝcqw=¸{DÜ›™ H¬îD¬ `æ]bqÿ¾s¾sŽc<éô @ƒýž~ö%_ly¢7œÔ$ k‚i„×[ï9*<ë&jÛ3!y¡"BHÓ6ó¹v–†(rRûíKÛܸñÝn—(ŠÉó‚Ù4ãèhÔ€nø“$-?AæÓüüX¤’ ² f3k<øX=·â무ìé$UhV_éz,zÍsZí„Á`Õù+7èÔxß!3Å.±Æï ¢ÑT[£)½¥\«ÓÁËêê€yž1™N¹ÿÕ=ŽJ`Ê’ [[ÞöÆg&Í`¥_=wI’°¿@;mWëXaœTZùµs<™pxtÄxêÂŽçYÎññƒ£#އC†“1ƒÆ[††N tQ¢p¡ÑÛ/qãí\ã:››çÈsŠD*¢,J>ÿü îܹËÍ›·x뭷ؾt‰­ =L^p<ñäÙ3ïíq<Ò_Yq“ôÁJÑ8Ú¬$l®­!mme‹&>+°Ò˜j¿•ÒíƒE©1¶1¹è3¢8®ÔËVJ¾T©¤”Ž0·0›Íxò䉳pò*€R)I[-Ö76èözWÊ m ±Š ŸV)äÂZ§”Â4l+¤rÀ´ò69Óù¬"&\ ¦#<¾Îžíëììš9a ?˲Jå`ŒáâÅ‹ÕÏ•eéÀm?ÁßÜeÃNCø ¬·šVOU†EÃÆ±i&Ä7'¾ ÀóeV,ðVSŽË÷gCQ¦ 2X ²íêõzL§S„ܺu‹;wî0øŸþú¯ùË_ÿšÍM’$ÁhÍêÚ“Ù”Rk’$¡ÝnW1äy^sƒ³9ÑZ)ÖÒi·Ñº$IbúýƒÕ«k®\Ýå·¿ý-~ø!Ÿ<&M®î^¥ÓnW §Š”'…ë|/ë§ ¡’Kë«=cûôqn¯/·ÕÚ³îaì÷ã xѨy#%‰#§Ô uó‰âmƒ Œ¬óp«xµ¶n¨¡„_“ªIZkN0âÂáe걪†¬öo΀ž›Zè»!Åâ~ÊçmVA=eû›5 £kYV’%Xgëvp8dïùM¢äFØj"A`*Ð@¨ZŠ6wcÍ’UÏéïSÅ2°É²ÑÄ5§þji¤­^;l¼õû4%ÎvI*›“à¢&XÂ&î¦,VZ¬ôÍ¡!pPF˜j­lVýg,µv> (ï¯ÂJê©fí7 ’Ò@^@¹ÏT”†(n!ý®ÀY¥˜Ò"PD"öçÀ6|ÿ|õdz l¾e1ծϪú½/ƒZ‚–§¼¥V ¤oZÅ‚å”ÎòCùîH4š¸³fÕBsä¦Qõ‰&×6¿‡8»tƒ ß\Û|írGwÚ4óf²§–1§¾ÿ‹¦µBWiu’9åµ›dK5µ]]Wÿ=ŒŸÄò¡tÁLjÐ6h´Õ jUŒ¥ö‚¯HqFóxÊÕÔ¢¿‹ª€òå³ ˆÇR—h]2MéuÒÊší4eЉ ßS®5ËÿþuMñËy}¿¨¼Z?…uÓb(¬¤i‹v§‹•E*ï3ë÷kà[? Y›£ÎñÅý‚·é‹Á“DVõn‘› ¿N¹&\U|*ªmlÂÊç® ¬^¾™–Âÿ‰]ñï›ð8V´Û)++=¬µ<üê“ã#v¶w¬­Òê´‰“„•~½ç³Ê«Û‚;÷sÐ¥³`ÑZ“eY¹0›13ŸÏFL¦3ÆÓyQ’—…"±È¨Ã—·$µSª8a{ço¿õ6ïýô=”T”Eéö+ Fkn}q“?}ú'î޽˹sç¹pá"/mƒ£R2™Ï¹uûKÉŠm-ÚL¶’„‡<{ÆÎÎi!üë; Þ_/)î‰@Dq„²²ö1žŒ Y!¤ÙúÆ0LÕJÈø?øàI)Üäñt<åóÏ>ç—¿ü—.mSjŸâ<1ÎrK )Jí<Öƒƒ–TáíçüŽvppÈÆÆÆÂ ÒT€1Üë2Rá²D–Áì ÌÐÍLƒ—ýN[çBpv+ЇSÑï÷ë§ñ ’h º Wc-2rϤVá4• vi¿Z ,|÷m—€þ ÄåÛ©Ë&ÏÚ·OžÕõjz’Ÿ¹O4kʙŒÒ!ܳY–Ç1óùœÉdÂh8dcm7ß¸ÎæúXË|æ²SŽŽPQDE]Òj¥þu *V>ß+«>_Gn ê„ FµÎb¡Ûí°»{™^¯‹Ö%ü1wî8[¥ .²»»K+n#•B—%øi}Gøºa X«î%åfµvûU÷¬¼ž—Îã ƒLbѳýÌê;"§d „EHã²UX¬µ¥”Ú #é÷‘:KÎÿùFêl*]-W”5)*ñІÆ$xýUí7"N yë=í¿—nðH|ǧî¬\*)¿]æÇ²‘¢=¥Ô¢™ÓW%¹ë RqéÒEF£‘_—b·?«cæzÈ<›%™«S„A[¯áöµG$K$ÒfÄ”`gd“cfÓ1E>äÉã/Øv“ÕŽŽÝð…5ú%cÐÆÕ@JF.E¬Ä)üÀP¯×¥Ûkst|ÀÑñ+ý.‘j!EÄd2å`ÿye¹W––,+°Æxù'N)Ö_qç¹/D‰ñAäZ› \]Ìr¤·Ëy•-cYº —idªú0ün^”~‹@¬6áÏ?>¨é3ë‡YA(—%!<áÐä«ZWáuAÖ Umш©$IU¡öõ¹Ë®(²¢êï«Á¦ê¾1 ëV™éâ @Ù÷òxû'÷i ¤B*wDqRYZFCŒ][)ë•Ĺÿ€{û>í ±ÐçUØGX™ýž$ 2;§ÝRX«xpÿ1î”­­ L'9ÙDcLÂtZ0/L4Fv˜ë„éX ãs\Ú]sˆ±X™°w8'ŽSÎ]ºA”öO2f³)FÞg^ ä Õ-6Ö¶øâË»äE„T¡Žx¾ÿG¬s£óoØ<¿Kgõ VnðÕƒ?aÄ>“ù1ä%±ŒOGž3žpî|Ÿ‹6ùø£kQ*bsó<çÎwë©üæýß±²zŽó[W°6Å œJ_h?e"*ÅEk¾Z)"Nɲ ™Ž C°ÖºÚÚYf.Síþÿ­^0²y5¿°i㣠Ť`÷âU:HÓb>ró‹;èRÓê¶8á È´ÅÍÔõV*u·®×Šã˜²,|OW`Ìã» 'éw$Ãý§”EΓñ…XÛ¼ÂÆÆ&ÏžÜçöW`öšlx}¼>^ßÿ!%H2®lUˆ #˱]ƒ—-{¾YéYY@Vª[‡ÝTž’⋱ì3‰µ_ VU6O^žf¬Æ`^Ea~—ˆÅ¸†ÐmƒìËm÷jìA/ë^’8EÓŠÈ5X^-ù¦&è2¨„iˆE¥’Á;šå4»X¬/÷Ís!Ý»…€Á"YR¤TÅd­lÐi¼l˜P·>½"Xˆžœ— ¥cî-Kd üHÃë€ý_wŠ>»pm+0Äˠϲk¨žŸ3È{š²aÁZHx 1ß¼/ø§6ž 'Ü%u7“µ#l•wRIÿqrähë@I«ME(ØF0µåL>åL˜× N'–I¥‘✶œ²"Ž#B.¾ÁŸÑ±6 dz@8ÕúÓ¾êÐmýŒÙ…àgkAkËoßÿ€ÿö÷ÿ@»Õ¦•$tÚ)RXæÓ N›´•§ Ïžï³±±Ál6£(J?9¬X[Û IÚX{{¬­®qt<¡Óv¶0iœ©„8N¼_½ÂZM©sŽÐÚ8b#ê±Ç ¥¯”¶¡¶p°».K¿Æ(ߨÆlž;ïÈ û¤`ÕØšžºËàÓ‰ëcÅ I…ƒUµ’,ÜÓAÆ)g$pfÎVT¤ˆË“1h¿Þ‹9Ö„BªCÞ¤´ÎªÀZ’XyÀ„y6çp¿`6Ó[é“vÚ¤Þ§Í­õë§Àj(KÍt6£ôVI“ñS0 ¨ýõ–(J9{UC0N‘á§#!Q>/àÆÛ7øå/~Å…óH’]”UãþäÉ~÷»xpÿN—·®¿ÅÅ —H“*ŠH¤dŸGŸ°·¿Ïáá¡ ¡µ5áÏç̦f“ k««>t?‘%)KíÀ˜¡ipdƒT’Ø[ {­u¥> O’„ÜT‡ä²,‰¢¸¡X š*Œ#g%öôéÏž=çx4"i·)| ¦” Œ%ŠZí6n—¼(ü¾ ˆâ˜"/¼µm™Ogè¢ÄÆ Þý¬Ê׸_½¾Œã¸"–-|šUßõ°w-4ÐgxžWï)ÎØdCµ 2¹¡=µT¤÷‰÷²†ŸÅì®ðo¯ |žBN Ä ¤Ó§šö=Mw5±@0ИèmnîáµÃ´m+u¹(ÝN‡$Ž1ÚPÏŸ?gïéSÖÖÖª)Ä,Ë\Pt)‰’a$B‰êy²ÒÔ;Ô9K÷IœÄO.?žv»ÍßüÍßpõêU~ó›ßðÕW_1™MŽF\ÞÙ©ž#)œÉY+Ö¶¥'l”N©Î© ¦Ù3ÀgN¶¾pªáû²"Øx ’H¢„ÏN¢î3¬WËÙ`VHŸ|>-KÍ<Ï*2tD\Ðѽ:#Ð$î~Hû¤WþÜKäikÐi߯í¥b²yÁp8ö¹7Š(N(m„’ I,O]pr¯×CI‹R%%SßÑh„))‹9£Ñ>ùü€lvÈlºÏltÄøøˆ$ÖÀ[ì“Dë~Ï,|—$*3LéßßÕ Öe.)÷L#,FjŒ´D±$Ic¦Ã‡Ŏ°6f>+˜Ï¦L§ÎªPkãIáÏ¢ˆ(–H‘¯ï9íTŠ„Ô¾·‹¾ôA‰æbÒVŠP–eœb‚@]4È´º¶•• ÁÕ5/‘‹ù& ¡k¥³7¶êámÓzmá)°^}âk«éDZòEa(Kíõ1ÀYÅüiVJË#w§O³Ù…<y 5C÷y³lŽÅeóªtáØáüCyá?¿·×‘RTÐ2–Ñ´»uu¢ÝíÇ ÉӧϘÏ4Ãá)W¸ùù}Ò$Æ'=D©è­¬2Xß%j­cU©R Æš),I’Í3ÒÞJ5¸¸y¡Kžk¦ó!ÏOŸ¡bÍlž³±µÁ×Wx¼÷‡>§&dù”ãã§ì={À¥Þ½•-®\ëÓîŸg8ºÅt´‡ÉJb!iu<~ü„s›ë¼ûî òlƧŸ|첋ò‚ë×ßde°‚6pt8bÿ`L«½²‹&;K;áj³fÞÙâòWÛƒ5í’BíQ)½ÖxnB/±8l°|‹4T2•½ô⊥¤ðC ‹œÑñ›«}.l¬Òï¶ÖòìÉ3†GcJ +ƒ PJc½Ý[Èå Jª0@ëWò<÷ „f2~Æã‡Ÿ1X‹9ØŠÊ&l¬ŸgvTráÒuVÖÞ`e°N^¦Xþôšlx}¼>^?Ìáê"K¤,R¤-- Å×YÈØS€Âïr¤¦HÕ %N)$ÎjÎ_T;µ«¨Š·zò¨!s®¦à^D¤4äŽg|ýàºP–x@ÏOW’jQ™ …)/7­¤%Y}z8¹.â…`¯gË×…(\‘£SÙÆ6J}kÑ~‚îälS(ÍðuIÛ¢ðš¶ZËà€b¤8 ô.¿åí&„ðr`»ê/Ö,ž×åÖØœœØÓúï…—®í_êGHž˜ö -ÍBx¨À"ŒSeBc„õM²+|šDƒÄ)OtååZOoX!ª ÚoúTŠ¥óp&g`ý”pvR°Vûfê; ^a2ö»nÐÝ”²;Ei(KCž—(¥éuS’VŠ´†n;%I"Þ}÷JÓNAë’Nš2Z¦Ó‚H)Þûé»\ºt­#&ÓÌùs¿ÿ!‘ÍLj•>­¤GštH“ %E1g<R%JDÞfKúiQà¢y\‡³H”JˆTÂ<Ë‘R±½s™(nU÷iMÌÕ÷”h>ÝÖKÂ7!@Z„•XMe÷jû˜So¸ W ëÒúiÒr!ÑÈ…\7 ¨Ñ”äÔü•°FU!€aªSeÅ‘#c“¸M¯Óª¦1Ç.ì8ŠœJxu‘5ÂKÆËšÀm€GAêƒi¥ŠÏ2æyés)l ZëžÞÆ«««ìloóÞOßãâ… ”yD¤ ãéŒÙtƧø”?~òG„T¼yý-¶·/Óñ¹Z;[§gÏ÷yº÷œy–»0s¡a>Ÿ#¥$ŸÏ|ˆ“¥'ô;]á'…ÑäeAQ–N HÓÎÍ­ q’ âˆÒÿì<ÏèØn5=ž¦© ¼Ȳ¬ ÔŸ×$kåƒõùÇL§SnÞºÅÖ¥‹¬®¯3Íh·ZDÊ5ðq’ÐévIR7]ê€étZ½^P$EAžçt:*‹by?•RÒ0®v×½ñYPØ/ ¾õ¾v È~Ö:·ìe]íçç͉c»D<œõî@Ù¦Ò¢úU%ÝkˆSì;¥Ÿ`À…5Ö+DÜÄðúêëë|öÙg|ú‡OXéõi¥ÎW» 3ׯy®LTQTe5H>-(HÄ¢2Äz{ÙPbtº]ÚIš²º¶ÆßýíßrïÞWÜþò6óùœ^¯W“(RTA˜âœW»”ÆwœÿÐ÷H³L•©=3GC+évs%ÓÑk½„ÈæÞZK×c@Ö)Ù'­P @EÊy¾‹`£SÐZIév[H%HÛ)kjápÈxðö•ÊZxEÆg?º^:Iº=—Uãê&M^8RÅÙa6ðÔ´†²/$Ý_æ*þÉ ”EF‚Rçä…)ç%r5²vš5¦õ$Ex^•¿{|OGä®M$ÔƇcm’”²ZÐ%LÆÙ<âèhÂ_üÅ{HÙá·¿ýˆµÕ5¬P¬$mÎmí°Ÿ#élÑê_¨°AbA[rQ»Gf\@³1k`óâu [RÞ–ì?»Å¼òìhÌê…’«ï°zîM„\e2ºÍ|¶Çd6ç«·ÑÉ&»o¬³ºv¡zlœ»ÀlzÈÑÞ3„Îi·-Oö?ã¯ÿòß°sa‡ÉôƒÃç£év»Üxë-мÀÉ7ïðÅ͇¼qãßbUcÚhím£}nNÈZq묬‡Ïhä64î¦ = îY¿~Ÿ¦v¬‰*¹0ÜVõ<õ”lE„sŸÃ€(±fÆlòœµ®æòvŸµu…Χ|yósž^?È!%å” x ¥õôò‹ Ú—mW¾×¶áQ[OðW ÆT}½‘ÔSv ª7.ñ5€{¿yY^PRxV]»F•å© Ñ˜P©ÌjCll¨Á:§‚Ðla^ÐÈÈX×ðno²#a¶1ØÂT&äM-}É«³|^βOùºFôU›YB¨_œÒÀÕÓ~⬞è%¿¸=í¬¨md<ˆ«{á%,Â6Ï—#¤q i. M¯“ L ¶DÚ ¤@쀩¯M~SÂA¼ÔóÙôÄw9,Qeµùηo~¿-áð]6Ï¡Á Vž|XîVžã¢¡Æ d€~6õšg¥Ëœð õ¥‹;ÎßÕÆ Ch*MEš.sUqoN™.óÏ×wxî›A‡³éŒããã ð•ÁbG*„'TWíY´›ðý KÈÕA ²,'Iߌ֖9EQ²锼ššvÊ«pÒJÛÄJ+µR•†ðŠˆ¢ô$¢!ª½ç_ç9*ŽIÓt:Þ{ï=ÞzóMº‘åC>Ëí[·ùàƒ1Æðî;?âòå]:­¶SÃHÃt6CDŠýý\8¹p^©K´5> ð€<Ê IDATº Ë2„…V’’¦i ªKw_Hå@™J%¥[ûŒE*[e2äEQ…\‡l€8ŽQJUÖRyžÓn·«çMk]«pA»­´ÅñpÈ|>çÖ­[\ÚÙæ'ïý”þJŸ^·Çh8D)—3•¤ieÏdBÙÜWWWÙ{ºÇ|>§(‹ê~ÓM²¡(-”·SiM7Ÿ‹*Wb)ø»¿îïg‘ ßt=üç2K}Ög¯‡HN¦„Ôzüáë¿X¥^õ0†ñ™)BÚí6ׯ_çÙ³gܹs‡Oÿø)íN¥—/_öV&î~˜Ïæ ©~VÕ:å”K*Š\v «QjõLSÓ €¾´}‰4MY[[ã³?}ÆßýÝãÞW÷\ÀzY¸€ô(ªj:³T_,Ü/b‘´YPž¡6þçN4,Ö¿.óJIA¤Z—îß¼½©TõyPM5Éêæy²> ÔÚ…ìzÛÓ†kõ)ŒÃ?Kàû?œ]Ï7$*â.mm³µu£ã!Ãñ˜ƒ£çt»\½z‰ÕÕm²\2/&;I¸á(!mºq’ÐîtPJU¹K¦ÊcúùfaOt[§®i,,ß/xŽÄ”;8¥…PÖìZKQæ  Aó|³0~S_­5F[o‘û:ÇïWÖåï…,‡¢(ˆ“ÔÝóZ`¤àÑÓ=¦SA‘ÃùÏÿ+ÿþßÿ'þ¯ÿû¿"øy–Ðí¯ƒìÐé®Ó\…xƒ´µ†PmïP ]œH$ÁºìÅÒ@i\F\6·tÓëW¹4-9Úwƒó¢àh4d7íp®»…”«üÓ?ƒ,Ȳ=ÌxÌêlŒ6SB§»‰+ zIÅ3Šù¦|Nµ¸²{•8ŠùòËÛ<~üm4[›[\ܾˆÁ’$)|ø{ú+¬ ÎaE‚±ïÔ`‚¡]é,µÊ²¬†‚òðÔk¿ „qÚ ZµîÛÅ{Æz¢q¡Ÿ©î{g¿$(£é"󯝰¶ÖÆ’1žòìÙ#¦“kºdÔ¡4‘—×áBÍ ÷Ü•` …Θ Ÿ“M÷é´ ”ꦀ ÉÁÑ„¿ý&Q¼Ž6gƒf#/½yM6¼>^¯ªèó~‰ª’ì„^€:bÿe~qa+ŸØ¦'ë×ù‰'yÁ°øz>CJ”ð&b!Œ0I’jJE é¼ÃE]45Ü«Ü4 º*€+€ºvKA.]OQo”¡Q @™°å-*šà¼aBã«óbˆ’²r À“g3J;£Ý•\ÞÝ&Š_Ý{Àýû,UN<ÿÒ¹=W·gÊ ©¹5îéÓ§|ô‘æ³?ý‰ [›\»v…‹[縰ua-½n›¢œGÞJ@ºI›H),NiE‘kœâØçΊ…L„WÝB‚ýN¸¦úìOüðC>ùôS„”dEÎ`0`}}$Iü”¼#Øò¢ ñY‘·ÞЬ%"r÷JWÏÙiaëÍÏY%ƒÁ€Á`ÀJ…(Šùøã¹yó&óùœ²,QQLžH?A}–õTEÞú)d4Áú¦¢íÛ‚äžéüf@MÖ˜l­Œ¡dƒ Áµ¶zo¿j¼rÅÛ¬˜*HWµ9 yßÒAÒÚo•wò/í·§<ÛNqsak›KÛWØÞq>îþþ÷̲’ýý<öˆÃÃcŠ2§,3ŠrN °%Å|B;‰ÙÝÙå—¿ü%;—.a´¦Ói§1iš)ÉððÿÃâ("VªR «=I%±>£+c¥¢(ˆU‚6ÚY¨˜’ÈÈDa¥e6›aŒaccƒáñk-ý~¿šŽ/½¢µu t°l ϼ Žk¥²]ÌVY¸_ýïWŒÞÞ0ø½ ázÏp?5÷µåº^á,‡­œq±+fÉ¢ÔÖj/íi¦ šñe5RÚʦ)ä 5É‘<ÏFÛV €~¸CzpÈ5nã–¢Î'ø×ZφüH š¾p>¬\lØl ±`O䢓4A‹d‚°ÞP©é%ˆ³hPJ‚’>˜T.4%raBج¥'í~ûjoõºhí¦qÖH¡H“¤’ô˲¼!7¦àhVLæÄdI#Âç?hëÁB'iõ„«” iÛ yþ×Þƒ Úèê;•ÞãJú©Û0]@þÊ›´ùÅüƒ=i5t"³¡òÏæ9e¡Ý´µ¨ë™Ò†èFQ s­q 1®¨=·±Î{ï^a­¡ó­8¢Ô`ˆy°wÄ­{°TÜ&Ëræy 6–o«Pªûò?®eå7ôglf¿f=© é¦[ÊR£¢”v»Ãt2&Ïæ´Ó (µe>/0.ïì²³³Ã•«» ÎgØRPs"9cÐüäÇ׸õÅxúô˜RkdE«µÁúZB+uy+ý­4S"…Wµx_ÿ*­ÃO‰…âüTRE ¬ÑŒFc²yÄÝ;wøã§ŸÑïvè´SÖÖVÙ:¿Éå‹l¬¯²¶¶F¯×Ř҇d‚TŠ,Ë\^€1ÞN¨1…ö .J¢–à-AYàíIÚ¸ÕÆMÔiíâ(j}«÷WJQ4‚›ç0V‘S Úª–ÛcÜç‰$B<{Á:?C—¦â¨snB¦L°nRJ±½½Í/~ñ ~õ«_qnc“(Š˜N§”E6†?þ˜ßþö}>ÿü ®^½ÊÏþs.\Ø¢‡p€Éáñ>äèèÈ”ºDyu„ôRv¤¬²Ö76Jy FQM}={¶Çáñ››› •‰¨Ï N$ EQPäye3$„ ÓéÐív+ )Ïó 4 d£³Ð@¡”"I\Ã<ϸ{÷.ü1?ÿùÏQR¡¤dùôSVÖ„”Ú8%FQj”·œÂ«{ë9H¹0ýη–Z4ܸ7Œ=eÈN,‘ béß›X ,™†º,óù ) E‘3™ŒHZ½~Ç÷"‚½½gÜ»—Y>gk°ÆÚÚyÆ™D åçÒÙÀâ eÕ£Yß;k„)Ðå”l~ˆÛÛ™ŽaæHÙ8÷&+k׈º[¦Ô ]NÑÅœN¯ <{M6¼>^¯ïÿ^Õ7¨¢!@WRg%Ø3æ?kú ¿*+ÿò“ÿ-€Xò@¬«B¹LB²Ü¿$ÂûçWÁ«øÙã¤ÛBÖ!ÄnSñ˜^º­”Bɨ’ .È÷—Â邲מr+/w­%¨ø€bfkÜ!"¤öÞ·Û{î+á<‚²ú®áÍLãÍ,Âëûc¼5ì½?§¨ƒ§¥T­©Ð)k‘AŽ*-'d(Ì<ÈoNÇ¿öŽqSg¶1ç¦L´.]É,-±—CŠ‘Ó ÄSW 'œø¹ðoõmÒ–T@°êµ©n /¦q'][gÁ%)CžMÉ(=Åé #¤ÍPB;oâ`}uòùVMëËžö¦UÈÂt¯1(ä+=ýßÔúãûö‚2¨š–A$-â8!Ï5I*˜g%³YNžÍIb7A— "am­ËlòŒýgšo]ÄäGx­VJ V×loo³³³Í•+— útº-´)Qqƒñ²yÿÜ…äWœŽm6×Õ„ªo•’•Z@ÑÈ`p“x…Î1â$>ÕïþëRE–=ámÃïX éÖÝø®©ui•uJã KTʫس² ×…·~Â[·Ôjˆ8ŽÙÜÜäW¿úo¾ù&ƒ•¸ÙXFÃ!÷ïßçøO}hí•+WØÙÙAoÓä÷•ÃÃCî~u›7o2™NÈ3g_TN­ “é m-›«k®‰F ”Âz w2“Íg,iS–¥·E ¹%‰b’8&ŸgäYÞP¹9¥B·Ûu½Ö5˜gëfÑš:Ì»¶è´Û¤IÂîåËìrxxÈ¿û€+W®°±¾Rª šît:•õS ØHÉdB+M˜ÍæÌçóŠ ¨~giªTø‡ªÓé,)óùü„ZâõñÝ‚’„,ò‚ñx\]ƒjý—œ©lx©ýã„Ebm×àDÔ]¼x‘_ÿú×kùð£9:>æÃßD»ÕB X__c÷гVJZ)QW~êÉ…ÍÍMƒËch·É󜕕›8u, ­©¦‚ÃýÈ)$½nv»M’&¬¯¯3ŸÏùøŸ0žLi·Z̳¼Z¹ ‘ŠPÞ½ÚüzT ô¥ê¾.ìù´\.÷™õ)¿ÿý[••’ª:—u-V_kãÕ Òƒ±‹ÏùâßÖEéò‚¤X¯B:˜xõÎå¿ëç[*ºß»÷9Ÿ*Ø+ÚÂJz„(‚ÕµÒ8ew÷2++mV×ÖXYÛ@E e–1›Ìxôè IÔ"›|úé§Œ§ÇäÙi LJû$q„ÑšX)ò00áý`#!—7àêŽ<ÏAºu¡ÕI±”îÓ]‰Ý‹·F%­4¥ßoQ–%Y–£§B¢ØÛùïže¹#æ3ÊÊÜRä¸ýÔÔDCS ¬{ª0Yÿ:Y–¡µS]¤iŠ”ªún§Õ׋Ïn3ÌÎøÇ d°˜ 6G+Œey@ WšÊ.Mbx:úïfÖcŒuåKÕûË}Bõw± ¼xþFK’$¥Ýnûõ·Y“)QW™†u€·Ô2 Ã|¡®pƒF%”®m”‚µ¬ïÓ´Åx4­‚Ã{½>‡nO{ëúÛtÒýîŒG?z÷×l_ú1Ya”¡” !Û•šÝ AX ´É\ýIZgs6l­oµ{tºët»ÑzLŸÇÒCË¡„pnç=z›ï"dìì¥T-"ˆ ÆHb©ÐeFžMxúô>ÿù?ü'º+ _Þú„çû{¬¬(²‚7~„R…¶|öùdEÉ`u)#G^ ‰…µe=p'ƒ˜ N$¡« ^ë‡5O©$'°©J+N% š}ž=…„@¬.=Úc)uÎÞ³G¼sý×ßzƒR—tÒˆÛ_Þáp4!í®Ð[=G^J±Œ0Rƒd +&‰·ePM«“p|°ÏÑð1«ë]&³=æs˜L +ƒ5º«oѼÁÜÄÞ¾´Ä–9E>g:ÁêkeÃëãõñúøç¡®0B¡"ôD±­ÐÑFi,N3¢µÌ†W :³ß õ­²²ù )‚U`A¿¿Âþþi«EGt;¯.(«æ_A¯×£Õj¡¼¥Ët6­,œÚi‚5¸ÌÿÙxGÎùêÕ«|öÅçܽs‡»wï2X°}éR¥Žh·ÛDQ´²B%Lƒöû}Joe³ `,XYxrZ)Þ{Šø,ÚMükFy¥úìUÈã0¡[ºÔ/þÙ&`üM¢†²¨¬œ]½v !%7Þ¹Áƒ‡¹wï¿{ÿ}=|Ä`u…ÛwnEqš¦iMv!ª|‡íím¶wvX]]åÊ•+¤iJY–•jCEŠV»]«ÖD ˜[Pªlo_"Ibò<Ç"øýï?vŠ6£kuéîÛ(qVN»»—¹qãFõ¹îß¿ÏWwï1™Lȳ¬R5„}S€ô@%W0eØ'-•¿öËì×ßǽ#p$oP°ž(Úl ªH¼´Dm‘å^½¤ª0Ñf h•¹ñ5}ýÃ\®Àèï½?õ÷ˆnÁI’P”%I¢Èó1­VÊ`°ÉÆúEÒö€•Á›çVY¬G Fk¦ÓÓéœ'{·xöì9Ï÷ž1ŸÍ¦H¡0Ú)$Ü=lPh²Ì‚Õ¨TIŠ"Oj/Ö´õ`žW6$ŠN»ÅÊê W®ì"An¦”dômT Æä̳eîBÓ4F*H£ØÙ=ÎÜçˆ"UÝ yžƒÐENYtéì–¬­‡š$v“lûÎ|>÷Ê']²Q䬂ÑÔ§ôË$« ¶záD>‚hvÆ ÒÉZRõ ¢&*ÕsE®ddYvÂi™è{ñô‚ç_ÖÁM…bðÞ¼ÂÀØ<™L±~Z][ç>pÒ¦Ø}®f–TøÈc¬³ÁÂz²µV¹»säÝf³“Éôz}¶¶.0›>¤ß]áÂÖÇÇC>ÿâ6³yÉúæ%ÒÎQ«ƒˆc¬” ?ðWeX‰ÊeøûFG=çlœ“V‡N cVHZkDi¥ZXƒè¥}Ú½”RKG`‹±RºïGdzÎlöœ8ÉØ¹¼¢àË»·9:>b8rm÷[[Á;wø¯ÿÏÿÇl^Ðí®"„·ÿ sxëoážEéíŽ2Ç6,Ö–õ íÒ@V,evˆ³€‚…ÿVDKé&Ñdý•A`J`tN6ŸpýúÏ ú̳!:7Üýê>³B“t¬m^BFm¬Hår pV›B ")‘B8b<HY KBƒ0ŒÇ#Vû†%ƒµóL ÉåkÁ`m+{þ3:,CŠˆHº!YxM6¼>^¯ŠlˆbŒQ(¿( V?ù.^Ð/Ú—ÚÔ_êsü~Ûh0Â6 ¨Ì›–@ 8µáÝcÑnc±Nr馸 –‰>Ane¡)m­ý{¸ ­òå.`*Ë l–/|Ó7ž%-C³¿_r†ZŒá Áþ/¶’$ñ3+–Ò¦u騅l‚q§h)¬8ñÙÄRUŽA6©jZ×âe ¶–È.ÜmÖ¾RSUIæïÛ,0|8›ÉbÖƒXí^n’ξCÅÉQ¬/¦nBj)’Ö«0ÌBQ+­kŒ°%A)¼ Öht¨©tu2+E‰iZßÚJ¢¦‘N : ¢ö(çË41êXç–.—Cã¾é=µœWQ4@Hc Ý^ÑxN«ÝöÓ7‚(Ž‘J’vÚ¨H0šÌP¢Mš®ÒëCËêú:£é>þ ³bB^Ælœßá“ÏnqpxŒÖ’¬PÄI³ý#â4EÉ”ó›ç‘zF›)raÀÓN5YŠol$I"ºÝQ$øÅÏ~Ì¿ý«_Õ*ž@<Š“ÏÌ79oHÓá ƒp%±“p›& *…·n+)MYY…ûC6lrä) wð4–B ü uȳµNŠÞ ×ÏeÒÒ“4ìhSáSj烌 4 ~âý•~úÓŸò“Ÿü„Ú6ÆJc¸ÿ>}ø!>¤ßïóÎ;ïð‹_ü²² Ù GGG<|üˆ»wïòôéSr]ºûVJâ(®™4qàh»ÝâxtŒ5†­‹@I´€Â”¨$ÂŒ óùŒ,›Óív˜Ïç$IìkëÁÿÿ¥.0V“Y¥Â"ªÂqC37žLOÆô{ýÊNIY’Û¥ðÌw»]®\¹Â­Û·ùè£Ø½¼Ë•Ý]´kÃkgYæl2ϳ1¦²ž˜L&Ìf³Š®!(um§d¨(B(×|GqLâ•EQxµ ­,û¾ Ò÷Ÿ]]ù=ó §‚™Ö@ IDAT`Ëà´ÖšápH«ÕZ¸ÎMRé,âá…{b%­´g¼ÆJ­‰ã˜.^¼ÈÅ é´Û|öÇ?1 hµRVWWÙßßçðð€ .ÐïõÇÌf3´Öìííqëöm®]»ÆÁÁ?ûÙÏè´Ût:¢(¢ÕZ¡, ÿ(Ô)–Aš&ŽèË2öööxüø1‡‡OèÍgsÖVWIÓ±Ÿà ¬¬ôÙØXçÊ•+¼ýöÛ´ÚmFãOŸ>å‹/¾àÁýÜ»{—ƒÃ}¦“Ie‡†¯á\ð´W} éw»@ÆH!JKñBý» °ÖV„o ˜+K4qzÍÙ_‹ÖK`Ôe¹Õrà:ñ<œM¶|]xüi¤ø¿&Å”ëaüs‹$R‚¢,)òœN·ÃåË—É‹9—¶·yã7IÒ.B¶™Ïs°–»_>`:™0 yòä1RIFã)EQRæJEUÞF𤍍Ã[o¾‡10›q󳈋µ¹ Á >n–y>3Êgu:Þxë×®_%Žc’NÄñdŸi>ˆœn/¥Ý^c8šYx +C6™åÙó'¬¯­pns(’h ‡ÇÇ|öÅ-†³œ^šÐœG¨Ô5ÑÁ*gñ•Xå®M•ûå®™¦Rm<¶Oš²$î¬ô:¨‘!íGÆ)B(”ŒV”å”4í¼&^¯×ÇwHá`7]oQ¶aB? AgÉÎ_±h¸½J÷ðmÑû"žL9°–…Ü5~ÚEÈßJcêpí°A%”Z;é%Ž•v>¹t(uL^´J:ÑÄÛå¹ÞO bö?×€„ +õ‚_í±â1k—èÑ$`N†]V†AV¸ß÷ –´µ¸¼,LÕw5-„µXh¾Ä+Þz¢µÔæHÞ á>»Il¥ßø±hͲøÅA¹ÈÂõ›gÙ´`sc“þÊ·nÆÎîy¾¸ùŸ<Æš’Õ•>+ƒ ž>{ŸÙ¬‘Rj判iÁÿt›{w²ÚïÓïté¶]€mÔN=åê•ó ×fä¹¥È ÓùŒ,/J1Ë Ò¤E¡%…u“=˜`†ë'C˜>¼Ìú­ÁY¾µE ðÖi’ynÈŠ1ÍgŸßâ?ÿH…’µºJ}G—EJÉl¬jÜk¿|»Ðß06<ÿžÇ4ÔL/0Ñ«” RÈÖ,b¹WY  w¨…8ùŒ7šz êµ¨Á®_kee…ëo¾ÉÏ~ö3Þ~ûmVVVȳÌMØj̓¯îóûßÿž?ü8ŽùË¿ú+Þxã:q“¦.ÄÐZ°ïïï³··ÇÁÁ›€–b¤ªðFk4‡G®Š"Tä‚:¥äeN1Íxº÷ÔO—;R=c¤p óÙ”H9{À8ŽI“„ããc´·I ×,Š"««œ;ž½½=§Ô˜Ïéu{.—ÊêùÓZÓõ–3B¸òÆ5ÖÖÖBðÉ'Ÿpaëk««\ÞÞAA·Û¥çÞ`s¤ËSùg;p`’eÌæ³š§ö¶×@¨¦¥—›PïõzÌçsF£‘#2Zí`¢}ßðJk°5®örÓªÂ[’d•ºA*G44ŸSñm«A­¼\ÊšÁÑ‘R”RG‘³Fò*¨^·Ë;?z‡Ý+—¹sç·oßFÁ/ñ 666˜ø|ýgÏyº÷”»wïrïÞ=.ï^FkÍOògEX,Q‘$ÉÂGTJqp°ÏÑÑ1_~ù%|ð÷îÝãÉ“'äyÁùs›$i‹k×Þ ß[akkËgîô¸xéëëkt»]ƒ³ùÜYaù«¿úKnß¼Åûï¿ÏçŸÆí[7F¬­­9²WHÆêÚïó,¯× ëìãŒÑ(餡& Ýš“¶”áK__·ý8Þ^©KÖ*ÚœX-}ž—Q©é¾®7yQè˜WÇý÷l·zY%ù ¢(fww—Ý+WÑZÇ GG?¹Çpœ1N( 7…žgsTäÔy¡‰¢6­´Í`Ð"Ž$û{ܸñ½^—§Ï†¼÷³K»ÝçΗŸòûÞgµßByÛ–‡×L9“B`Œ Z.µ#Ò²<çéÞS„‚Él‚¡D‹ ’–bg÷"ZkƒÿŸ½÷ì­+Ió<qܵô¤¼K#¥SV–¯êêt°Û æî‹ù‹vv±@O£²§«§º|¥7%¥ Eíq±/"ι璔I[]<“)J$ï=&âyž¿[¤Ô…Ò{"N·ÛAk§>(вf÷O¼aYhŒ±hm^žlÔÒ7÷ïjpÇq­jÌóY–Q–ÎV)Š¢ú¹¨ˆM`Í©Ì=«¿IÆò{šR²î9 îyGJTè€Ç@îéqžÁ3ճϋhZVJ‹™µâó®Ùöððä½ã¤§¬ÊV*ËÂÔ+õ»©mxŒ±3UjsØl½rÁº}G)G¨RÔª )Q¤æ®Kîι­ë k ƒÁ!‡‡`>ûì.ÿí¿ý+¹{ÿÎ\¼ÁÙ ç3J£TìÏ©·³ª•Ò¿Þj-uý£³Â’óáõÒ1€‚8F!úH V„uæ›Å98pÕ»0TaàBR (tFKdÙ/¾x3g–ÙÝÙæÑ£-¤RH¥xíµ×)Š‚ñdÊ'Ÿ|Ìx’rýµË´; ”DH`|Ý®ÔL~*6uÄ¡ëÌkBjŽ[‹™ë‚æd ù,žæ×ܳà,š =ëÞ+ÐH ÑÎæÉZgq¼¼ÔãÜÙ5(ÉÖãÇ G$íÖ6.Òî®`Hˆ[ VHÏ5•H ¡¤³¼šC†hi ¤`mm•¥EnH^f¼pýúË d+R9e»5š0Vlï<Àr}zœ§Ç7 6¸­G*÷¹Ú›+‹çKÿ³I µ$x»ÙZž] °Žç'Hž¹eE= ÖÖ çJ«ýÐÝÛy¯ëcŠOæÊñù¯ŸèxuÒëê?O°mš»ƒŽ4\ÇCÿì\ÎBƒyØøÓ±&²ù,œ`±vLš]ÛN}s¶£¾ü_F!st½h6LEYpxxH:™(Å ×®qîü9o?àà`—íGm2¤×ë’^ϱ±oÝÚÄE·Óemu!$««g¸s÷ãINDŒ')qjH‱ñp@¨¦èòJ º Σ|a¡E ,ei<˜åš´„4ƒtj™f0NK mêÆÎ½+…3ô¨€‡& az ¤Š]?ÿ¼;i¿óRu²b‹5%q«GÒꆬÆV¥®gö}Ñ#MÓÚc_kцÉÚ-׌›®³kœíUÅè«Ã›½äût€ê¸ô^׌(Ѱ°'Ü[Æ];뇋yž×lmÃK/½Ä›ßù—.]"Žc¦Ó)J8¦þöãÇüáàwß¡ÛíréÒ%®^uÃ÷Ô½OÁöö6wîÜáÖæmF£‘Szj&“E!Z—lmmyÀ£ÇÚÚ*”(!˜fiŒ9ÐEÎh0`yyÙ=ï~¨ÐJZ aÐnµI'Sм¨m*p¥ßﳺºÊýû÷™L&Eá³,q×ÿ¾º†QÅäyÎÊÊ —/_æÑã-þéŸþ )ÿùþ0 é÷ûµ¾ Þt™*MÛŽ (òœ,Y:Ðém*WæòC„ ÛqៃÁ€ñxLš¦,öžÉ\>=žs 6óƒ_ëÙ£eYÖj”R—D*ò ü£šAû¥ö¡£ö+7ðϪiø¸ïîî’yï÷Å…z.qÕý^¯ÇÂÂQ‡«KË´[-²¢àÓÛ·øäÓOi%-¤…7Þxƒ…¥EʲD[MQµ%˜”’ÝÝ]>|Äoû;Þyç¶¶¶RréÒ%Ο;Ç™³œ=žõõ Ú­6ý~ß©[c€„÷¨/ýàÝÐi·Æðê+×é÷:¼pí ÿïÿc¹{÷ßÿÞ÷X[[£Ûë3Žy´õ˜ÃÃ{{{|öÙ´ ‘7¦fÑ !hµZŒÇw}ªµF¶† ”U×Çj‰/[„APˆ¼»ük­ãë}`_+ÑEÒ[IAµ°6n¨êe½JâÙñ•’X†hÖÙi$Ö*&YÆh<áõW¿Õ°½½ÃÃG[”ưÐëqãÆu‚@±¹ùwïÞ¥ÕêÐ_XBªI„T!V(ŸeaBB! ‘2 -q¢°)¡ð Ž`ž/*v\þöuèÉ`NQ“D« ÷L‰z-rVxÆ×zNù-­¥T–EÎÁÞ?|ë2K -L9E)˽{÷88!’6.½D÷Ѻ…"ÆŠ+̼ŠN‰ RR‚ ¥6ΜE KY¤ðX¢‚ˆåµ‹X[e I¤°X]`MÉðð1Yy€P“S°áô8=Nopð’b#¨k]ñÿ”¡ê·ö0#«Ða{¤@yž7x<8¨ùܰ JoS«8jûYv‚=2ˆŸÇbžk~ý{ÿ¬Éºø\¯û¤¿;éõÙ•¯|ñ^ósý»/úº©VÜ™'38v‡®ˆ*ž‘ãëÌ*èZ4 k)¾Ÿß“Â_+¦>½.òþLÜ*f¼ðL· yåÆu’¤…±’å¥>þÓCòÜù×GaL–çĉbi¹Ï÷¾÷]²|Äã­]°E–i–—W‰ã„Ÿýìoü÷ÿ4P”‚ñ¸¤(£QN( ½et©(KI§±õx8K‰’´²,¥ßïSjH (u€.B²B0çLÓbf#£5¥¶¥¥(KtÙô—³Ç‹rftËÌËÔTƒ#,ýþ"ëë,,,RfÏ|U6Óuc­5þÓŸX]iÕ65s¿v6UHiÊzH$¥—ø ñ\k³É|®çh.ÏÆ7ÂRÔvqö˜o¸@SÛÜ©@! Q{ÂÿàßçÆ+7¸zí­V‹8ŽÙßßg2qûöm>þð#nߺE†\¹t™7Þxƒ ò¢$/ oÍf988`só6ŸÝ¿çÔºôŒ(UçüTç,I: ‡CŒÑ¬¬,Óí´=”dYÎp0 (rºí‹ J¹~–³¸à¥Hg÷RÙU\ekUÙû-..Òn·ë ˆ²,I’ðØ PÝn—n§Ëd:eoo¥•e®^½Ê4KÙÛÝãW¿úv››7o"½­ƒµ–Éd2Ç­†7ŽáX:Y~u/y/êš«€ªz0áîïÅÅÅ: z:Ö U)%¥_3¾ŠÁé_#ÐÐ ì‘îŠ[ üž_!…ÏQÇÈO³SjîmGƒ•µ†Öš4M¹wï^ ~­¯¯†!ºÔÄQÄâÒJ)²,# CQ&“ ÝG…ØhÄŸÿüg&Óñ˜·¾ÿ=ú‹}â$&I²,cŸ{÷îñë_ÿšÇ·Ùß? ßïóÓŸþ”••^zé%º+Ë+„QÌÒÒòÜ@±x]ÙUù#étJ… l=zÈÇ}H¿ßãþ÷ÿ¿ù›¿aqq‘0Œ(µe{g—­V«Þß+Û¥Jñy´ž¯mÛ*kÍFH ’Žä¡BåìÅ,) #”rIƒƒl®žlfßµRúrÜSòV8žåÖ¼ŽÍßo sJ’£ÍËü3³fs.æÈšÒg3¸ûÇ2¦^iê˜òu±Õõìàà`iÏx/)uÊ$  ´{C×_)…%#„ ð `uÏì"ªªSÌò}ïîåéG¬¹Œ±ÞŠ×¢êk/kbª’µÛ“=01 ^}õuÊÂòÑGŸ°¿äâ¥K,,-`lÁ‡¿ÁÐjw ã6B†N­/•·Ô4$jP¢¼JG„#q¢S[œÏT–ÙBJ”P%Ä9G¯þh:6Ô¢gQ+¹_Ÿ;;>ÿs­¡ÓN(nß¾K¨J®^:K§§#¦“Ÿ}vùð#>úè#6oÝfqa×_{~ÿõàSMš¥Xm888à£>âÎMvww˜N'n n®dÍâ¯îgW5egg›$ŽX^ZÀ˜Ò% ‚ àððmtYÐé¬ÖψcMGs `!œÝPí§îßgõzûý>‹‹‹AÀ$ˇ”k¥Ë*M­\©‘…….\¸À{wF ‡CÎ?Ïp<ÂhÃÞî.¿üå/ÙÝÝåÆõ´Û.O¢r„Þ–©ÄqìzÆŒ—sÔZ¤÷«³6`.g¢DfYV7Ÿ¾yz<Ð0g‰täù³Ö²»»K·Ûe2ž$ÉÌ_QÛ.UàBÓ¾§ú¹Ï•áð„º¥ºî•zhŸ½½=â8fmmÍ©eŠÂ $ƒ€µµµzhY–%K¤æÕnàšsûömtY2ÉR¾÷ƒïqæì™úç}òÉ'¼óÎ;lnnE1o½õçÏŸgccƒ‹/ÖëÖ‰ªì’ê~ož‡ ‹ã¸ÎùðÃùàý÷øè£ØÙÙáõ×_ãõ×^åÚµk„aHYj’¸ÍÆÚãñ˜3+k\»p™?þáO,/,òÞ{ïqÿþ})±ÆPæÝN‡W^y•8ŽIÓ”ÃÃÃZ2N±ÖÇ1“éä+­*‘šò²&htRÂQ²†°8¹Ï¿¿ áç|½BΞ½@où B%²º~ —¯Ó[<ƒ-ò²z¡p¶IaŒ*ŒAŒ!¥É‰[mÒ‹K-´™PèŒó—Σ’€n;@%FO)l‰RÞŠ¦òµò*„ªƒØ«g¥ºîY–SÚ’¢ÌYXêÓiu cç¿ଊ‚ "Ë3¶·÷Ȳ‚á`Š1ív‹v'!ŠÚDQ@»¡‰±kLÆ)£QÊàpÂh˜Õ=¥”3Kž ˜ÏÜk2ö-“É”¢¨T nm ‚  ¯¾¿™qãò†üºèsæ*ÛÍf]lqv7Q¤Þâ5 ƒFvZAQdhãÔ à2£”Rõ:sÒ½QúÏ V5{ÈY?Ò*û¼Æ£ê qB-wrMçêf¨uU?6ó᎒¬uªGmðä/Èó’<ƒ"wê¤$Ib¦Ó‰¿û,J*–——IÂ>lQ…MY\½J§½D%h#ȳ! ‰£.P Xüyæ?ufDܳÀñÙzXßBa¬ô_/œU“um- „ñvC·òÒË×h·ºL'ÜTò_yå––ûè2c{ç!ƒág.^¥Ý^ðöÒ>ŸÐàƒPEA Á”‚0‚ 0Ä­ÈÛ^ùÜ C#Zø÷CÝ—ŠÆëž•Œ¿/fmÓÓ¨œšHy2Į̂:›æH;e<Úae9!-½VD "÷Æ|üÁ‡+yùÅtÚ b4µ:I ã@#¡0T¤SÏ씫0¥% òL³¸¸@žgÕvÖ´jfK-­A’ñä,¡”=NÓãôø†–¾¾–R(jÃlHtRxN¬˜ÂSÃ௄ hE.ž`%ŽOŸ6ž`¶ã/µynO‡ÏÓT}“gékÿ]öËÿ)|á—3×AçŽaRÔ¶8¢Ê·óŽôÏÍûÚ>×Y™]¦þ~Á –c•›œõ#×®]ãâÅ‹.x-pÅž0ßÞ{¿éÝ^¿ Z­$NÌ~6' qÌåŠÔ0è0ìeCH’˜$h%­ÚâåþýûŒ'SŒ±´’6ãi‰Ö•ƒ)œw·…išEn"Ä (Ëkü}â½[K㬕†ƒ=Æ£ Y)Aâ ‚Ò8‰t Ê’Z‰bqMÒ,Œæ þÚÞžËx‰qY¬®^àµW_¥•„`rwïÔ6±â«x B°°°è%=;×íU fÛh6¢Ð Ý´ÑÎ_Ü”ã52nšëô| s%³.µ©‡ Usë"0ìlèÌ,xZÔ!¤¾™²Žiå˜ÅŽ-¥A{†dQ– §SÂ8fmã ?þѹyó&Ý^—…¥E¤”looóàÁÞyçþøû?P‹ËKüè?äµW_¥ÓnS–%i–q80MSFƒ!wïÞåν»ý~Ÿ·Þz‹ÿøG\¼pÞl$±¥4¥ ´Oâ˜ógÏÑïö¸±sƒ–WEíìl£æåë×yýÍ7ùá~Äêê*ûûûlnnrëÖm677ÙÛÛewg‡ñhä×M[µOtðbe¦D¢D€’* JÑJº´ãˆw'œ=¿ÂÞá6KkˬŸ=ƒ—ø¿ÿ¯ÿLN’HB\6ѱhj¨Þ -Æ jƒÊ~Èó‚¢( ƒˆv£uI¿»HQdt; „AJQ–”…%Åp÷Î#z,.õèv[h“ÓnÇã†;í.QØ¢Û±ôº9ŸÝ{Äx”Q§0×ÃíyrHůôE^b¬Aëb4(WwFaDªSŒv{”Ñó–.Xëþ+OTTÃ})„ü~ïÉwŽ1o1F#P5©£_ª)Ž*>ÏýÔìì4yŽ=¸ pW{}5;pƒ¨?¬u¶¶.ÌÖƒbg«äú!c4V Œv¶£E®™Lœ²8ˆívB:5X¡¤¢, ¤i·züðû?fooÈ¿ýæ7´ºgX;w“ÅÕ—)lWÁÚZ!„k®Ï™W‚1ÍZ÷è5ÝúÒ[h5–T‘Š—W„A)ȳœÏî|Èùù¥×m³·µÇ¼O’ÄŒó ëëëL¦Œ.øðÓ[DÚ½5ÚÝU¦™Â‡¯yEˆëŸ¢ÈõP‰’†¥,Bj÷YTÀ ‘Fv‰Xã×eK‘aŸ°Zokk’”׋T¶L´â(Æi:äâÙ%Ο]!]þèᇖ–Wèõ—i%=´‘aV!q¶Ç(¢¶I;~_ÚšdåH1xE‡rà”ty)uf£5ìïðΟÿÄàð€"Ïu 6œ§ÇéñÍ€ RJ”tò3¡ý†$ô\3%ì ,qB6€ýæ^÷ÉüÏS¨»"¨b4Û@>W@tUI)>øOušžs¬ý¿Z×çJ@ø+xÿŸ¡ð÷l ]!¯@ í¥ÿh0Fz³Á °•¿~5eÖ]1|ž\ˆÛ¹bSV„ÏuQ^†!BH&ÓŒ¢(‘ð¾–î{–—iÅ’ÒçGP­¿‰Fù«Èjh¦VŠÌ#!e™»æOXò|ÊàpŸÉtD§¹â/p…¯ Bt™±´Øg2£dˆÆA YYY1 P1ÃIAYzÙ®;…‹EØ)Ƥé>e‘„(0V!mTƒÆ„L&%ÆZÐÚ‚Ð¥Fãr?¬ ÐF#… ]sºk<HÎÖyÃÌïµ\9åLÍö7« ÖV—Iâ«u¥)«™_6·£¢Y!(Êœ¢(IâÖ,HÝê„Çj„$BŒ5äE‰6V[lYb¥¡¡ë 3ËëÏ¥trq+ê)UÍlÐFû}Æ7åõÑ7SÚ:l»ÌrÇ’—ÒùB I^fŒ§Â0bemþÒ¯¿q“W_}³gÏDÓ4%MSîÞ½Ë;ï¼ãýÙqó›Ü¼y“®]£ÕnSjÍþá!Y–±··ÇÎÎ.›››ø€ÍÛ·)<À29<<¤×íÖC„8v5ív›i:e4±°°@ØPÓ4‡-¢¡l(˲ä() †Œ†#Ÿ7ažˆû¬!ÊWµVþGªµ}:Rl(Š‚ ®\¹RýžTuÔ膒È6†uÎ+ÙeDXãÚxüà©N#;¤,K†Ã![[[ܺu‹,ËØXß Ûé’g9¥.Ƚ?y™Ï½J)ð¿§ L­†Æ–rçñÎ6¿ûíï˜L¦Ü|ó ¶··†l¬oð‹Ÿÿ‚ÕÕU|>ÈüÀBÎ1¡ë{ø„=R)Åd2áÞÝ»üÏþg>þè#ÖÖÖøÛ¿ý[®]½ÊêêŠ{î¬Lk0º`2™ºu׋;6¸öâ5ö÷±VsõÚ5þþçÏÕk×8wþâÆ›—ÙÚºÏÚÆ„ ˆÅý»w°eéÆpžPPé8+=« >¯ªáÅ/þ[±É÷w÷ €ť>IQf­»= V”ZShÈ&)ƒý “QJ·×¢ÓIÐ…e<2´Û aÒnwqHiL0Œ8ØzŸ]«µ.ýýYöÒ‡Ä týŒ»s*`Ga ‰’ + qÕkÛ,(½"I|d‰¶¾TÂK ½êÏ´õaÚ¥qìo$a(§@äSŠ¢¬UÂÖΫ6êÇ”™B´Ù‡? °?Éúèi÷ûQá p0 qua#3o¦ZtÃijÓȤðAà¬Q† E {hcŽFHáê0©@JKÑ’ˆv§Kšƒµ=®\ù.—_þÒ¢G^¶ÐF`ÉÜk’1RD+ýP|,²Þªs¦ß“s^' ³c×»?Ji%€4¥ëdI©‡t¢œ3+ Ò¦<¸¿ÉáÀe\½t‰®^ciy•·ÿå²ùp‘,qåÅïP˜#"§W!!P’P*”pÙ`n}õ9!¾¨.kÕ­¬ž¬qY+¶²².€ÙºET€œû¶™RunO4s=K¹Uê|%ýWŒ#XeÓ”õµK,/w÷éwï½ÿÃɘÞÒοD´Ð:Bˆ)CŸ£ê2/f¤¤&P$êð[½qY½wU÷<Æ“^ª0oŒc:íñúYöÞ>NÓãôø¦Q®QnÑðÓsÏ¿Ôk>Þ.~N©;œK?$æ ?óé鮈ða…s¯ÍÎc Ž«–å/7lÿÒ—Ðþ…~¹ý÷r¾¢fñ$ÖÍ õ³è•*Tä㪰p štÅUeiÓ‹Z+ŽKýŸðºŽ\M¶±SVH¢ DÝV ­ Ù4C‹Ù=^5cVzyzèd§æÛ¿~ž$·®‚ÝÊ2' C²l¶ÄÚÀŸ9³­gSŠÜö¦é%-Qr÷î&¯¿~“2ßãà`€±1EiPJ:ë/± ¼¿/äl?~€’‚¢¨†Gª |úÖ ò<'T‚$Ž1´Ét€• ¹vEê4ÖÃ’: ­á_ꬎø VMUÍr…ÿêê2W._@ 냡Ý:k´QŸÕàüè#>|Èx¿!Šc–——Òù=·Ûm¢ÈÊEY1‹"gp8 ËrZ­QÏ…ìQù7dé’ô{]Š<£,rÇ4ƺà{£I’˜ÕÕ>û¬EžeµíQ <3Ò«,-† P´Z gÏle)ƒÃòtŠ’V’°Ðïqãúu’8æÖíÛ7׌áè­üõWJ9?k¥P@Q–édÌÖÃl YœW¼1ÞÎì$ò€=¢8lfŒùk§”œë)š¬•af}z„-^[EJ¯jÐuppu~…> ?Šc®¡bnÄn¿HÝxB­öù [û{zŸôûEƒÌá>¥6„Þ&&Í5¹.È2@„³ú!¯|ç§„aì§”´¢i!Ä\Xܬ²5Ñ¢ºÎŹ(%É‹‚í­Æ£1ý~0äåÌþéó~ ˜å£aêÀƒÒ:2š<3ÀÌIâî©•å”r!¹“ÉÄÙ –Ægµ5{W9·ž‰ÙKŸ»?ݾ4âš[1ff›ii/fŒxYÙ#Þ¦FÂkD{GQhÊÂ"e@&„Q첌Œ@¢¼…¤¯“­DR µE ÜÙîñ§)ž~ŸŸü÷Çs*Ä,¨V‹8RT‚0ªÔiiÒ ÇÕiìÖÊÒ KƒÕŽ”#DaÄÚÚÆ†Ã»„ªOšgP’D2HbÅx4áø=Û»CÒ\£Â6qÒaœ‚2ˆ°"r)Ê)f1s@su‘3°ÜΟ–§¥& Ü›’ àÉÚJéB Íõ[!·ÞÿˆÅ^D¯‚÷ßý“É0R\¸x–U¬µ|òñ²Ì‘vã¯îä¨Gîñ"P<#ø6f9Ì5‡' —š9ÐóÁ±bbÉ }pE•Ñ¥ ˆÆ1‡±è*w¤pËjà+f~B9ŸU¦ÃìLW¼®*hLøÂ-NZt“„nË…·jSÖÃg°ë SOéÕc&å±!ÑYžçÚý75€ò.f'J¯+ß^{ò=[ ¤•’ëYóF7üm÷GuŽ"Õ((›5 +Ë‹t;-öööƒˆ¬îG(ÑPM…hë,+¤t9X ¯‚•w¼ÁØ!5‚’Å^›nw‘ÜĤ:@Ä]F“ ]hòiŠ4Næ-¬´k«(²ÌÜ Õà§ñ×Ò’¯]½ ”X¡Ñ¶²Þ’õýf¿ÀÄ Ó°tr ºv»HŒ) •@y±ÎWÕz+ÑÚ"¤B©©Üy4% -%š©ÊhE1* ÐÆ e@™çhm½ìšZ)$=(A¼ÓÆ K¯º0Þ–Ãj(uéÁg›b¤ÛO1ììî±´´ÌÂ’ Õ¾|å*/½|KW® ¤Bã,bvwøýïÇ|€1†n·Ç«¯¾ÊøC–––è¶; ´q­ƒÁ€½½}>þøcïl3Í¦äº n%˜*ÉE øh¦{ÅÅÚÚ^—¼È98Ø'Š"ZIB‘çDAè®·”XcÆYŽÊ«„°ñ*T]X[[åöíÛìííRêrîï­5\»v•÷Þ{—ÑpÀh4d:éG¡÷·ªzm ”{½Ÿ|ò ƒƒövvX]_lp½±±Áââ".\`ssÓƒQ9ßêªÞ Ü TkÍÞþ/^¬¤•'²YݽM/øj𨵮Íu®ú7GË'Ù3~•@Ä×jØgüù«þµEšW&diZ3㇣··QJa!B*úŸò¾ëXœª©üµðÒ ÀøQŒ·ÕQþ¾48júv#œ…A^Üø€Û››ììíråÒe½íYš¦noJDaäÀ„­^G^–”¥&ÏB#σ)ÙØ8C–åÜÞÜäÝwߣÓé°´´L·ÛóC~7 ¬íÞÊ’(ªTFÖ3@m½¹ŒB'1ÃÁ€ÍÍM~ÿûßqûö-Ο?ÏO~òc®\½Zg¬L§SÂ@‘g9q“3²éíÕBV@*C>ýô=¢Óéð½ïŸ·¾ûÖZH[S[)Ȧ9Qpåò%~ö7?áñÖCŠzÀ43´Ú}J=b8xv%ÛȰMZ §ðYÞµQŸ7ƒ±­Ðüë¬GO{ºµNSØ‹¢4nˆ/„B`²1ƒÇ\8³Æ…sç`|¸(®¾pž 4¤ã1ïþñÚÑn¼ô‚ֆ؃÷¡¼µÐI–‰õþ]‘Xð„j;<ƒqçÀ÷•Âa¶îÈáÓZ¢xâHeåfíLeU)ßPÚÛ2ÊšŒ$…%i)~óÉ{Ä‘âü¹3XS"”!ÍGììb hµWˆ¢¬<ѵpÙ† ž¼ X+ÁV!ß.˜»¶€lÔÐNÉa¼m”'t ‹ŠÒ:ÅÃêê:+K!;«{ 6œ§ÇéñML<ÝF‰Ï–؆T‘¹1‡óR…{>5<ï™ÕèW3$ò |“µ¾¹ð(²5 3‡û#ÕþÓ` SÎÞ‹¸˜…£{Ï>u†EÛ“­DÄ×zé¿à_ÅP¾Ø5´G®ÿ±ð³¶é}þy+”Û~¡+ žòþí ‚‡&CJçM/wOí%n-¥6hcA[UcôdÅQÈCÔ£˜…†ƒ’’N·C+Šˆ„Ä9¡”sÀDXqßh8pþ•;ü 5üjA)1kêÅ,ðwvÝ,y‘Ñj%L§“ÆàÔÌì&µÙhçyÎòò2+«‹ 4Óé´Ô*€…H_Të,Y´q AT+! ¡t%·Å`|¾@»•ðâÅó »ƒ’ˆ˜Ï¶w¥q˜îgU…öÌþÆ2›eøfηbÚÊæË¯K‹}âH!…ñwâüjg¿Ðb7[c]m°FÎÊ+Šb¤°>@½b2‰zOs¸€DJˆ¢˜È®Zk)µÅ˜ÜûE[´‰Âï ‚A4>ìKZúfD[Ci-Ú”±H_ügyᮕֈ@’f)Z;»•¸Ý&Μ;ËÅ‹—¸þò Ξ=Çå+W‰’„d8±¹¹É§Ÿ~ÊGÌîÞ.ÖZ.^¼È7øÁ~@¯×ÃZËÞþ;ÛÛ †C<|ħŸ~ÊþÁ>ÛÛÛéô:XaNã“zhkDeqá˜VQE!q3˜ŒÉ‹œÅ…VWÖh·:õ`kFìïí!´[m¸an:ê¡[Ù°•eÉÁÁXK–¦$~0ßîvJrþüyò,c<1éõzµõSó”"‰bÚI‹4ÏØßÛcii "‹)5Q°¾ºêžc˜L&L<Ó|šN TP? ¬¯¯sçÎ&‹ ¤YŠP²¶Ç ç¡ß´R«ÀãAG)y–1L˜ŒÇt{=Ç•bΊéIyT_Çúøµ®¹_çö¯»ÐQ!¥¬3<„LÓ”ÍÍMv÷öð‘ @—š$Iæv8)D­¬=ý+¹ <—ÚÕ†ZkÇHu^u b}P¸Ön¡½UÖ­[·¸{÷.q’°²²B»Ý& °Ö«h ,˜à¬Nœß¿ñÃÊiš‘f9++«œ9s–Ç[±†£1ë®^¹FYjö÷ØÝÝåñãm†Ã‘ó«¶3¢óx–5¨€3‡¯D£È'c ûûûÜúôSþñÿ‘­­-^|ñE~ñ‹_pýúuâ:`ÚzpÄÇfÓŒ²(ÀÛNEqLšgL&cöövùãÿÀþþo~ç;üà‡ßwkJRæ¹ãMØ™×xä•$gÖ×¹þÒKüà{ßå—¿ü%édBéAcŸçF› M"…Tʃ>bŽÔ,´D=”›…Ëψc5VJò²pàCµ/Š'g{PìÓŸû̯=5!žQ¯Šç®—Žûº?oñŒ¾k¾³:YáPýj㕸EµÈrM®-H…a °BÖ¾ùƒò¬ß*SPx¶±š¬Èxp“3gÖØÙݧÓ[¢Õê!“á¤đ¢,sgOYÕ QÌôð{¿ šŸ†$¶Y º´”Æ}ee·Ê d¨ë¸&q¸,‰Ä”‚ÂXJ¡kå„)r"l(KKQz½aÒj%H i:­Cr­töSÆç͸Òòx?d Ks‚ p¥­v56õ{'oª5Fʆ"Ì€5N}¤µ!ÏKÊB3çyIF„ÊÕk (KCõ‚¥O¶¶¡lð>vƒpr ó3 ^0—±õ´Þà8è0ÿ3”ruäŒ`j¡ú1“¾`´¬A00^" F+œ9s… ^bgg‹{Ÿ}Š. ”¤ù”,Íq—dÊ»ïý–{w8wáuú%í´[.\Yz€™†jL3ÿüÎõŽú9ºãÙ€¿Ú÷Dž¯@ŒÎ¶PzÌ¥³—hÅ»ÛØ~ük5ÅÕ«‰¢€Í08Ìèö.bè¢Â.BÄ Œä* ×=Z»ûSHwŠ­Ë*U©°30,hj÷!§ òÊ1Ÿ·U¨.TÚº×éÁFëgeºú}Âÿ½ï霚H ѤÙÈ9~õUŸ#!ÙÞÞçþƒ‚øç.¼ˆµ‰j¼šÁܤ´sÊq8bïè•·¦±' LmÀ+°Ÿii£B³¼“N¶1å¤ä)Øpzœ§Ç×T¹ÒgI? °^KfÃäj0.åL¼nŽTŸw–'Ä—Ó>»V~æ{¯ptûyƒsÿjï ¿èù™/þì罃þ²çÁ‡¥}±_ç‡2@Õ¾•Ž a¬c.99µ­¤V:Æò,WÌ…JDë¥Ò¢Üÿ{ô- D@§×¡Ýjè(K¬Ñ„AàìT¼ZjÆÃn¥@ ˜Ïí·<ר/ø}ͯ ñ\ÿöÉ §˜kœgÍ‹£zµÛ-Æã‡‡‡~]žbgAsÐbXg8wî,Bò|Jš¦Äq E(ß4H‹”Æ ð…tþÞ™¥Ôž=¥qQ© œ"Z´DBІP@…”Eæ=±-((‹’ÒuS-UÓ> Q [9›*8¸qýEzÝJd%Á7_`Pñ”fP…T!Ÿln:k“Ò$AÍúD4¯Ï¬A²çPä”Ú±þ”d“1EY’…QG‘~TÁ­Lðƒ²ÀZ‚0DIÂm-¥1”Ói ÌXc|¦Šk.Ò,EIIoq‰Å¥eΟ?Ï‹/¾ÈÙ³çè÷H’q+!MSv÷öù·û ·nÝbgg­Ýàôúëܸqƒ³gÏÒív)Ë’ýý}òbw{‡+—.S¥gVÖPívBǃ<ûûûî¼e9ª¥j¤×ëÑëõØÞÞæü¹sL&’$AÁ,¶4T,ÌÊZ) C¢(b<»è4­ó(êáÌ `ÃQ&æ× ž~{<ÏkeÉd:áÑÖ#Þ}ÿ=´Ö¼þúë¼ôòËÎÞ Ü ¿ÇtLHS{ÇË:¤4|hi•Ëç9Ù4¥²1Œ½Xå×Ýétìííñá's÷þg¬.¯°¶¾ÎâÂ"eQ Ói6ð·ÚØã K }Þ|ãuvo1LØÙÝsÏÞ‘!àÓ‡V~Uð{E„8‘4#ì±Á¼».&BŒ5u®ÆÜ`Ïï•óDañ•— ßV˵FØüwV`Õ y)P!1Q+ Í! c7H÷À¯¶¶òqùIºÞg´ÖÄ‘¢˜fìn=àú•ïrçÎ&o¼ù}D2yôp“n;@çc‚ Ê60H« Þ¶rUõU_l-¶´ž'î,ŒÌexH¯ôµÚý÷Z=&ÚºpØŠœR =Se '%“8c2É( ë†ô²|Zº=§ì”2c2žzPÔ`~PjŽdlÕ¾õÒÕ‘Æg4X]YýØ#ͲAµ-]82ÆÖº÷ç¥.Ü÷…SQTêg¹vüžnî}OË\;I…ð|u£x.€m¶6ûÏÂ6òfIÎb³²¤¶õ>1S:*„ üpÚå:Xã,fqj´ƒƒC’d™nw3gº“ILm•¤½†¶NÙƒTÎ2ªüU„Ô hÀÎÎx…J#Ãß[*HS[\a<°¿{«÷¸·ù'ö}B¯Uñ)Øpzœ§Ç×84^`•uÿ_1 Ä X ²Xòëp99—Ÿd8ÆÒŸ¤/N,®?ÓíP`fRrûåÄþ}ËY á‹¿Ž/‰R}EçaÆjŸóûl]Tžô“Ëâšv#ðáÐÎV§i™t\gSeˆzÈ(ýϑ QÝÏ·´¢˜8މÃ8 êaš‚ ¬ÙeuPµµs¿Q)I $J¸Nðí…òªfÍ>±)q2é>øˆ?þ”¢pŒœÊãù(ØQÉuKm £˜N·‡%£ÉˆÑhÄt:Em”PžÁcQÊ"…Æç÷EŠ0ô…¯Ph@ ¤k€télµÊÂÒí¶¹ÿÙ#'ÙûH ¥Â;YPê+,ÚƒDãgö^íœÅW³SÒ½†¢(Xèw8{öÌÜs2GØ_| Ÿþ,Ýnù—_±»³G§Ý¦ÓMæT?Ï:T`•¤,K7p”‚´ÈfÖ*¢LjÉóÂ5ÛÖ5êÊ"á$ä¹Ö䥯Xƒöj#7ÐDAHQÈzû ëk´Z-^zù:këÄqÌÂÂe©iµÚܺu‹O?½ÅÃG[|ðÁL§S:.\à…_äÂÅ \¹r…V«Å`0ààà€­­->ûì3>üðCyK™Ù@¬ñì[Ö’e)I’ø&˜F°œ#•’œ;{†N»E:°¼¼ÌÅóYY^uÏþ,5†ÝÝ=vw÷hµÚ$IkÖ ¯ŒªBé«"ÀÕ備^^^®Ï[囿¸¸H'”eÉt:­Ïiè­*©»R ¥$ý~Ÿ0žu=»ÿ¬1¤i: ÷Ò4%÷~õ•„ÄqÌ`0`8±¼¼<¿ï‹ÐPY&UÏyºµ±( †Ã!ãñ˜¥¥%w¿YÛðtfÎ’§9iÚôµ‰øw[|¸¾?*ëªñxL»ÝF)E–eÜ»wßþîw ‡C~ö³ŸñÖ[oqíÅ#Ÿæ™7³A‚>ó<'MSÆã1ûûû¿ýío¹|ù2?ýéOyíµ×èt:³gų+ñ¯WF;[))}ŽEYpppÀÇŸ~¯ý¿ØÙÙæÇ?þ×®]%I’9Ug=\¬|Í‹‚4ËH§¢0dei™ çÎsëÖmvvvçö¡*Cç)ÜǼ¸pèÀ[<¡™Ï{8j½'v^”õu¬U{'9³<õAyþcRúõ×8_ÃO;1'iÇæ‰k ã˜þè'¥¡0– Š×} Þ.ÆÕ›J(7R2·ÒçE• wI"ÅB¿‡’Ë—¯Ç1étÂoó¯(¡i%e6ÅVC•ŠáÈ¢f¼ý£ÁY®UžíVx5TÅN–3–µRn *V“¦Î}P~Ð膘Ú̲¯üt%%¦„Ñp â€ÑxH·ß& Bâ8vÖ—B‘gÆ”akp`n»¨ E#”ÙåE¹=·²±Ç€ïê¼Tké,À–z¯wŸµÏ4rõ ©k!·Gº=Y Ër¦zyBfÑœÑþÍç¹gŸ–yrôŸÿ{[Û'Õ`C¥0Æ)ܤ•þŽqû¹TÒ_$F[_g»õBÉ%¤Œ) ÃîÞ#ú‹+,Úe¤²D‰âÒ¥ó´BËx”°{ø©BJ`ˆ)…¢•Äì?¤(JâÖ"“ɘå•këC–åqõ‡}¼ãIûQý½„s—¦>VJ‚Àbò‚éô€Éà1íDrý¥È&S¶·¶Çh%yù¥l¬p÷îC¢¤CÜéC¢Kˆ¤³þAHO¤«z$GfC¸°s+%(ål–|nš¬rH¥;ÿ*uN‰5`”ñ¤Q׳ùT¥t¡„n€Ì2.¤î­—X¸L•1»; ”`ey~·yÆx4æö­Ï$¬,Ÿe}ã<ƒAY[±VÒ {Ì0¯!“b¶‡Yÿüš9®·åÓIIž§ {<ÞzÀýÏ>¡tb‹.&dÓ°v 6œ§ÇéñM Ì<  RÔá0ã‹êÚž°ö·ó68!ûüàÂIþ£Ú¯°~2sðô8=þ?Á³&‚y¯M£Ë9ÖI€ÚÌõèß9€Qy‹e ¡T´ã˜(ŠPR ŒAX •tô„ዟ~ô“XO³¡ËWׄÏ]ÂþÞ,Õ`vwK«ÝFÎÂ!Š+VÏl2’^·M'XÜ€Kë’ ®yõ’3k…÷Hµ*p °23¹±08‰GvYM–—,.¡ÀþÞ6j“ 2$£;UëÜ7‹Þ.çó+kOÔYX9 ¦\5tQJÑï÷Y]]ÅCVfâ š›Û4ˆ'[7ÉþöÞûÇ®cÁóûTÕ 7÷íÈnfRù=½0;; »Þ1þ Ø¥áŒa{ž´³OéIz’HŠ¡Ù9Ü|Oª*ÿPuÎ=·Ù)RO3»Ó $Ý7œPá…ßä»ßÌfS-)ìëñA LµnD!išÐm·&ÉœÈh×Q9;œÂOø¬Za4¹Ñ˜Ù´r©ÄqL«Õ¢×s*ä( ƒN§ƒÅÒíu¹uë&«««llnU%Ê{{{Þzý >âéÓgœŸ#„à£>âÖ­[ܾs‡µõ5677ét:œŸŸsppÀƒxúôiU[êAT -%Tàózã(Äè¢Rw !(ò‚d6gkk“í­-îܾÅh0Ä8fks“؃>%>™L*À󯬮®.¨ÕÆ}‘o_Ô;ãñ˜g»»looÓóà{ùïÝn— . ¥¹ïY°ŠüyÞÚÚbooÏëë | E­5Ó锳³3Ö×Öɲ¬êeh6›8) WæíI—1ubmm““†Ã!“ÉS:b^—ôßòšDü |ƒRÊõ)´ò<'I†Ã!Ÿþ9Ÿ}öÃá­5£Ñˆo¿ý¶R²A€ò¥â®„U“$ ³Ùlá2˜;7Yê‹Èˈ&×ໄ+.ŸN§œøÒï½½=ÖÖܾ֨F³ÙäóÏ?çððëׯÓív‰ã˜Ù|æJë=ùä²ÝuL é²¢% ó̹®‚€v§CE¬m¬³rrÌàìœÑxÌæÖÖZº½wïÝãäôÔ¡y¾DŽV÷VY¤)œ²Ï´ÖUùùgŸ}ÆþðšÍ&ÿú_ÿkÞyçODšEg 0 ‹.4“Éi©"¥”X]ððáC>ÿâ þøÍÙÚÚ¢»Òcëڵ厒ZœÆ;À2_FÿñÇóå×_sr6`8W Wy”ŸïÅçFTSŒ ¤ öF_:_Fä•Ϻªj\sY÷Y¢–ŽP¹°†òÃÌÀü›¸Œô¨E."~òµÒËÆ²Ÿ–|Xv„Ö#(nJWAˆ1– ÉSMÜhr÷Þ}Œ… Œ°Hc”Û¿SÊõ–I‚«(b4qr|Èl:çÞ½{œŸŸÑl:²Z E»ÕÁJA£-¹Ü)(±ÂÅOZ]TvÐ>6ËÔòïµÉÝœ¦@ ‹.B1Ýü†.â¯Tõ×É„z™ûEuùÅsßl6™Íf¤dEB³ÓjÇH©‚€8v`M¿uî½ú}J3npïî]æ³U®J»äTxÕØì…P}ÎzÄ]š§X=ãÁƒÏÙßÛ¥w¸ÿ}Zì~ ‚Àõ–]‘ WÇÕquü<CéFÒ?Æ;ê“mm+}Ž­®Ù¾‚Ìà5þýÇ*œ—o£´(OZHm óU|Ò…þ[ù‚ŸþxÓó .|ûƒ¯¾ Îúß,mÞµgµŒ*ɲe°áEÕŽX"jUqHïn(²œv3¦×nº"Ø<'(Ë}Ø"·´W1Q+#«oˆSýÞBßöÏ!Žëí~öbJ#n"œ]–·ÏÍM3CÅ"ÍÁؼÚX ÑÙ ÝYe:Ï™§sÒ¬@ a¼³AzÅ^àJ¸ýYàãŽ|„‘ð› ,„aƒ$„-º«›Ü¹±Ãã'Oy~tÎáÙ4×X4ÂhŒÎ½â÷räÐZª’k[?/–%{ùýû÷è¯t C-r¤µKVå’8xuYåÅÃ,eq #Ò$õYÜ‚"×\ ‚×zæÝ5<Ðà Š¥ ÓjCæó„"Ë0¥JÖ+ù”TX\¹£ŠBVÚmÚí6qÓ_é³µµÅÖæ&[[[J¡¤SËaPÅ'DQÄh4"M3xüø ÓéŒÝÝ]f³9óyÂí;w¸qãü1[[[ô×V+ñÇÙÛÛãË?|ÉÿøGC§Æ®o*KÕ¼’m´/Ásÿì6n.Πï›QÌ|>gmu•ßüú×´[-vŸ­V‹,MY[[ãÝwße2KÈŸ>%Í2G0Ö”ŸNu—HÕsHoQÿØ9¿Vì…幕BøàœÒqñ²&eû–땚; Ö}óã×¥ö ÿíu×ů"ìÒ ÔõÎZ¬-R1OR„ ‘q„À‡Š\[¢ @)‰Æe“yF3‘Ö‘{{|õõ—¶6·hÆ’gOrûÖû»Ü»s›fAñüïÿ'E>'öcËÞ’Ö‘Ô´.æ ƒñ%ÒJ)P‚0 ÃJÒ|îö˜J ¥„>ž²p½@æÅóu¯¯+ÝúYUâ©\4fQL§š@…€DkK£Ñ@k‹Ö¾ˆØ”d‚ñB _è|h(Ç„Åû-ƒÎ¥Xàekß:h]=!q*¥#{K7Y­T‚óÿ‹Ïáe„ŸkíïÜ‹¾/ÀÔZkL­wÑÒÎù¦µ¨‘Ö9ZU@§Ó Õne9ÓIB–jŒÉi´c&ãŒñô“¹[Ÿ ÎO±æœ_¼û>ínL܈*¢»²Åêú=D1Ï2Ò$%+4óÌ Tƒ¬0r¯'ÜÍ‹¬u½-GG—Åàåü°è”Z\$ %HJƒ’€Ä6''G4"I¢ƒÁ!þ«?§×[A GÇgt:=º««¼ûîh#88<áÛïñÑoþ’Õþ:¢ÑG›€E/¨Æ•.˜Ê¹_]Úäα„@Jã\CÂwÇQ+çöîîr¯J=Ö³ì‡1^¸g<˜‰ÓA»änvý ž44! g§GÜݹG»¢(hž=}Ìþþ+ëwèvûä¹qŽáû­x$lq_–Ï«´®?¢Èszý>×¶¯Ñk¯…äSvŸ|E^ÛtE6\WÇÕñ³lÖXXü|¯±-Ëp"¨e0²†Jyy‰ík½1õ¼¹Ëò»_¾Šßtù RÙ¥ÌE÷eäÒ†âêx› ÅkÞ?ëçÿ<ÎC¹ø³e‰‹Íi³‹¬ªÖ͹,‚‰®:„ÀÕJòÂTd"¦¦â2ÇÑbcªB)I³Ûv Ë0@ CÃ.Öl©Ø©2gÚ^Øœ\Ü(k”¬2®§ì…ÍËOLp\ÌM’”?üÖ NOO9;;s.)¿¤iêȺ,[r1-Ížì+táâœü}y||ÌÇ |üñÇüæ·¿e}c£Rðª ð=mˆÃò=„ 7yQ°pÀ_ÿÍf:²¾±N;íÐëõè÷ûU””ô ¥¨¢€S’%ÑRív¥}ôã霃£# ­1Yvµ?¼>³ µñk¯ìòß•eâå\VøóìÈcÁ›ÃF¯·ÎtãUvü+; hÂ|¡˜¹—óŠ|Å)t%åv)¦Ê-6€Î¡XŠ3þžR´.È’ŒÿåýßhÆ-5Y:!šÎg Q$"tn¥,ax~Æ÷òìùS¤”lmn¢lÂàøÓÁÞÿ_ýáK~ýÑ/™Î1áŒ'¾Æsd(°Fa¬+ýµ˜ª`Úz9±\,“>ÆDH‚( QGŽlˆQ[`ýª\IEž™¿Á)~/E­(ZF*©\*TXcÉM8’$ c †;wSÓã׾ļÜç×åÿ¿¨ø_cžd¤©E ’ĵ&k‘¤ŠÇß>嫯v¹¶î:#JRE"Y!)´YdþJ×),Ú%6GŠñdŒ [„QƒY–“A«Ý%ˆZdYB*-£3r9‘Sž—YÔÒG!\‡)|Ö¯0„£ "t;Mv¶7Ö9 â8B9/6ƒ¿ÙàzåZ[Vê9n‹¥2ÃåLo±9VÖ& Ê+_…P#ISÃt2&KS>{E0Ö¢E[Kì7èG'Ǥyæ ŽÏÎ*€¬åãw0Öm,“k,ódÆl6c<‘eãÉ´ú|÷ïßgsk‹µµu¢0âúõëܼu«RŸžžrpxÈwß=`ÿ€½½=_nœºnm|q.¼Z²*Ï ÷¹ŒÑ/t4ãëkëôWúDaÄ|6wñNPŸË@ˆæôô”4MY__w%Ê>Öª+w“pùºå8P>WåÏŸœ0误Ñl·Üûhƒ #Öú«l_»Æ£‡«è£f³U9(ꀙ1¦R§†CF£“é„ }·É"vKJé Úuõû¥’»ÙlÒjµÈ‹‚ÉtJ’¸Ž‹8Š\îô…!½ á@!€ÑxÌh<¦Ð…Ëã¯)9¯È†w$IÂîî.OŸ=á?ÿíß0ùå/Iš¥|óÍ7\¿~ÝÅÛyôF*…©¹ ´/ðL³¬"RGÃ!ÆhQŒ”’;wîp|zη0õ!WR+_± +zƒw¿½á@ºó(‰- ³CÕ±P‹‹æ™×Ûã¼îú²T_þsË=K—/Dÿ” 0[…™ œ.;Rê›I).¬äÅâZ5 ‚Ðòí·d4›“’ ¹Âýšk×¶é­¬L `:ðÿý§ÿ›ïþø5ƒó3 mi·Û\ÛÚäþý{<úÎpz¼ÏƒoCFƒ3Žöøë¿þköŽOy¾ûåÁÈ’­¿Ú IDATäB˜šëBV sXᜠ8ƒ)a$‰ãQÒˆ#¢8`žÌ°X«=H‰#¬ëÊóìo厎ç.À=Š •ËÔÍ]¶º¿¸úûÙl^ÍóuÑÞ«ýrL,ç$·F°/pÔܽõïEQ!J*æóùÀz±«èblR]Á½Lxp XþdÂîïÅ\2ÂÌ»?|?žû‚ñxTÛJ)¸ê܉¢f+¦ßï Â‚Ø‹°‚Á`Äp ¥bcc•4qÛ­fH–N99=äøh@¡AȈYš’Ñ-BnÜÚ¤ÑZ!/ívŸy’#”ë=Ц,­–KÄŒÂG[]•|/õsX9(%è÷Û4­VH 4؈üÚ k«!ÍP2:ßCIÍ{ïÞ#PprrÄéÙ1ºÈxï÷ØÚØb0òûÿú *j²¾u"°¾‹¡AZ‚PzUMaj÷¢%K¢¡$`øN©E‘·”5<‹²¶}ùZK#—É·"Ë2'°Ö)Ë äš]^*ÿ× nS-¬/{ôÊ·8tàÞÚÚ:}ô«ý>_|ñR $·nݪü¥ë%ISN¼Úz{{»êÍ(ÕÚeq²”®$ó²ø¬ÉdÂÙÙGÇÇ<}¾Ë­ûw—2½a,×·w¸{÷.SüAP]ãRU¸0_é´ºÊw°°O¯¿B·×!iÄ1iž‘e+++ŒÇcŽŽÉóœN§ƒ®);Ûí6ƒÁ€ÉdRKcX4U)¸”´[-Z­³ÙŒÁp€ôÎS#êàI ,Õ  «cùHÓ”<Ï £»wïrûömšÍ&ý~ŸñxÌx4"Ï2Ö×ÖWVªó¹XJ瀪-KùäâBfº¿ß«8~))tQáUZkZ­7oÞdum•¢(øû¿ÿ{NOOyþü9JJÖ×ÖI’ă Ž€íöº¬¬ôjkQƒ±ºÏê Y!Úíkë«ì?ßc<1ŸÏh·Û¼ôÊÆ,KýÏ/"íJ`ÞxPßèSäH!˜M& ç ÇCÚÝ6n‡0PUþ=Ö‹Œ#ZôqÞò<çÉÓ§|ùå—œœòî{ïòλïðäñt¡‰ÃˆF;åi­³EkSE[¤iJ Çççqxx@»Õds}ƒf³I§Óa}}û÷ï3žLM§¯õ|TYøµÂÖ7ÛK'‡ëpN¢ŒÜ«9û^ç×<¡/ÛGÙòõXîËk)Ä«^ûU„Ãë­k~,éYºÁ²,§(rïPYˆºªçHŠJ°¤½p¥\Ú!†‚¯¿ú’/þðZ„XÙàäøˆÿ—‰9 8:Üç?ýÇÿ‹¯¿üŒùxà^Ï*ƃ!çÇÇ<øæ”’¤ÉŒýgO‰£H…ì1N°EæE:€uDë^^`á$Q€ $* MÔ‘‹Ë“R!¥Àˆ”$KÜ|+JFmÉ2 Ö­ÅÒ$wàè%Ì‹dgIz—Êë’ØO“ ¥”1OÄ_¸-N|Ñé¶ýùuóbž nï Sõ¤Ô †‹®(×uãû0”¬ÈËzäRù§Z—ÎÁ ˆÃȹõ‹Ñ_¥X¤rRy¤ët1ª©"†.œ»ú\ÿåû¸×—KÏF]dP@ן)­ïÔ¡Z?ÖŸÅò³‹Æ+süƒÀEkåy†T‚ÉÄ`LFµíF’$ I’ºuK(±F±±q £¡ÝšÌ÷Ž Sº½ëôz[Œ'n‰‚t„E+n’%®t»(Àú‚r#4×Å&EàצÖGñÂE”Ý]$„¤ÝnÐë6‰Š0€,O Tˆp«x_ç´¢˜À$ŒÏܽ}ƒn§IÜùô³ß“esÖÖúlooc C1KØ{ºG£ÑG„ ´-"ó.Š&a£áx¢F@êrîr$7¶Œ>Òµì¦ëÄCR /LõD9é:™(|¨…¬Ê Ë)˵EZ‹ôûŸ:Ž1no£MÊÉñ>·¶×ÙÚZ¥Ñdó)ÃÁ9çççÚróÖfówªçÞ A”ûk_j¿ œ›c1_¸ñH¢±µÏ/„òsµðsŽòõ§M6Þ#R­-.ªêŠl¸:®Ž«ãçÁ|KÐEB­k¦bOki.‹å‘¸°´ý1&¿€~ힸ€3ÕÞïM€ÂÛK;ÇB¥!¹D›ÈŸZ†-~ˆ“ùHˆâ÷ÿ¹‡…ÌVêë(±FW¹’ÆZ”Ø pô¢ TÂu•’ !ý³ìò9Ó4«@üåéš» ÕJ¥œr8P„AèJ,­f‘ ¼4h¸^帰Ua•ö1J€†õ‹5·`ìõzŒÇÇ‹Ïay! à§*:|òàm~fYæÊ•ÁS"»R Ò4a>›Ñët™Ìr¬ï¿ÑÚrz6âøäœãã1·o¿Ooeƒñ$a4›£Ó9ãñ˜ PèÜ …"I_öëüA"‰!*h ¤‹×˜%9B…¨ b2™¢³H ,Iš0ñ/y^D!aúͣˠwJMyás÷›D£ Q¨ÈÒ„þJ‡{woÒj†nƒc §¶Yêl0où ×,Äö÷÷9;;e>ŸÓj¶—œ7¢VZ*ÚÊøžR)G«IkQÞ@Dy–9’Ï*l!BHŒs `ð˜ÌcAJI(ÿ<+¿.Ê~€f%­f“µÕU:í­V‹­Mš­aÇ.vg6›ù¨¤=yú䉋*šLŒF$i†®è2¨¤b¼P†¾{¬ñe·8²AI·Y1ÚÐŒ›)¸ï>wïÜ¥È3çç̦3¶7·ˆ£˜8Š*P$Ï2òÕÖÒ¢"ŽÄ+H²‹Nã’Yî‹0î åB\$%UÁ®ô10..0tׯj„•‹þ7!jdäåÝK@¾å…Þ†:ÑPwÔ2V1Ï‹Ê Uþ)÷>—¼s©Ë¡ÞAó&ÎcìË Àùqñÿ—¢ž¼\H|¯“sªÅqäIÕå×Hæ iZög)’yQÅIk˜NR¦Ëx4¢ß“ŒÇ3“Ñ”,-"$n¬ÒélÅ4mŒ–ÌgvÛÇ"ù5©p½XS#+]KŠiÕ‚l‹þ—²”Y ”$ކB)”†BgžÔòQD¢„uñX:åÙ“GhÙÙ`e5 ]WÇŸl©c÷>ÎLHšQD¨¤<…@•.¿° ¤Fçs RXdU½Xt§Y^mcJ@ø¢=º²#³¨ç ¤‹W‘B‚-(#ž–¼rïdÓ/nüÏ^´bO&“…ÂY„µÔOC2ü˜ÌÖŸ,³/%Ü¡”³‹+¥*¥Öl>çìüœµµ5Vú›ì>?"n´ äyÎùÀ©U­¦‹j Àͭuä©A…nð”4â“Ù¡Ëè.œâ2 CÏá‡@Z¡-¬¬]óÊIš¤S‡§ gƒS„€Õ~—>úÁàŒd>g<iš2Î0Ú2O\¤€ °eù¨£3°×¶ÖøÕ/>DZ¤À‰êÍR)ùO}<{¶Ëññ©Ë¥µ5Ï´]æ kS»fe†3nã{,2œª1މÂÐe©[µ@㊂µÖØB3Ë&t:–wÞ»O£ÑX ­µ´›-N=Öíth·Úh­™L&Ÿœ0™ÎÈ‹‚ ŒFŒ†#ÎÎÎ0º MS†çúù¬yçdrêc¿OÄÔÕ¬¥ZT–ƒqQWÊãÚúM³¨ŠÝã0ä½÷ßçƒ÷Þgme•¯¿þŠï~O#jpëæ-:-.‡:MSöž?gp~NE¬­­ %›Ï ’õ$¿Ñ+ÏK5n¥)“锢(xôèï¾÷·nÞ¤Õh"ƒ°rÕ¬¬¬ Åúú:ƒÁ½ý}§˜ó„ö¥#AHÁÎÎÏvw9>>æüüœf³…R.'¿Óq™òGGGŒÇc&w#I)ét:4›Mööö8::bgg§×t©–”þ~2vUœR2‡œŸÓ[Yy3¥Ä¿Pra(rcI¯×«ÀÌ2ª«Ýn³¹¹Éà ‡Ì¦SZÍ&y^xeª¬JäKÇ` YìK‹IËø аÖw ä#]WVVX]]¥Ùl"…à·¿ù ÓÉ„¿û»¿ãé³g´Z-:íXȳ¬*-¯'p x‘å PŠ"wéIÊÍMž?Ûe4rxpÀÎö6R„A@2Ÿ3›NÑÞ=µÀý¹óñGN%j}œR”Š0ŒŽÆìïðÛ_ÿ–@…Ž T{w€. Š,'MSž=ßåû'ø·ÿîßqëÖ-Æ£GGGY×ëv+7Üeëc išòøÉc>ûì3ÖVû¬­­±¶¶FäÉÍV«ÅÎÎü1Ižóý“gdY¾Ô±P¿ŽŽÈž „*𤎭ÕÿÈyß:`.×¹.*ð|©ÇJºëøJ²\¼š‹X€«Ø!qá¿?–×°¼h¿°?Ésî\Dn~ÙÜܬz8’$œëu¥¿Fš¦ŒÇc \çR9aKRÅZC§Ý!#ηH›‡–~¯Áïÿñoùüó/8Üß'›ÉÓ9v“­Í-ŽÑ:Çí"Ȥ!n8×Ï|: Ž¡(æäéLŠ XÄ<-uœ‰%’,óyÊÞó#T(È ,ص¨šMÓ!B”jü! –¢¤Âªû¨,/s›çš434ódF’¦4› úý>Æj_€®¼ÛÂí ,†(vQkÖ†.ŠÆ—G¿¬·ãUŸ£Ê¯¿„h¸H”ª­5óùœ4I—~¶®^¿,Rð"Éð²µÿ‘d?ô»ßÇ-OÌáS:¿ëŠw„E „›ã]Axè#ñ]yžûµŽ@ʣƣ­ É<ÃZè÷û¤‰f4̘Nrž>úš ]™ts…I”‘f°²²ÍÆæmD°Â8AEÝÙpñ½ºI®Ž?ùQ x›~Üh |Dƒ4Ö+ø„JRcLî‹êüý,BI2Mµ°u›_ùÂ&Â.õC,,RÊJ-¤¤¨Ü—=A‹x$Q[èX_~*êí'(¥‹S†m°Âü¤°ó?eÆù¥ž”ªÛŠX¸è!NȲ1ý~›wn°pÈh8! %E‘2ŸÙùåGÜçÓéÄ«ñ-'§gî£TÀpe<špmk‹ík;´Zm¿¹ÉR×ñq||Œ1î~_[[EIØSWÎús$”DH…)´ï•C ÷å¶“É„““GäÔ€¥«««Ö°±¹Éù`ÈÞÞÞÙPŠ2PU^t¯×£ÓéprrÂÞÞ½Þ BHÚ]ç,év»LÆ’$¡(Š $)Ë¢]$BÈÉÉ “ÉÄZ—‘Ö¢}0°¬î;áKL#Ët°ÏÉé©+¡/%ÿÝu5¼ Ç|ïZ^‹‘åpýúuVWW  ‡CWª^ó\Áº¦K[—g×Éò’H²Æ©I’0:pttTÝ—N¥ív›»wïrttħŸ~Êéé)ãÉ„N»Së–q!8öóÅ"Üõ¹Œ«"ì ‹Òî`´¡×ë1N .FÍ¿f–eU÷Hù¼T€ŸÿNyž»²jEá¾Ë³g»ŒÇ²<çè踥¼X`»ˆ¼)ç½$Ixüä añÑGqûî„…óósfÓ)v‹^·S¹$°/FõyÁl6c2™°·¿O’$Ü»w>ø€ÕÕÕê+Ïó|ÀÞá!§çC†ÃÑR±5ÖGkøuŽï†yÈj¿Ëí[7кàà`Ÿ³ó‚@rïþâ8b2Mùò«/éõ»\ÛY§µÒ¤aJF„*& #4†Â„öó°žÐ Üÿ / A)G8(Tníé:n!ãž(IïR>`C¨­õˆ™’4òñJ¢tt€/ÜVèB2œqãú6×¶Öi5b„™st|Æã'O‰ã«kÄ6V7ÈEDXÚP•^¿õQ•€§YƣǙÏÇ„¡Àf^H%-Qäî‡+²áê¸:®ŽŸixÉP¼H \•ôªùýRrá''JÞbX®Ps¯Ž«ãg½â_[WÞØ ŒAXôE_é‰Ú8•Iívå—¾ «b åKïoSËͽzýðfÇ}&UÛ,ùôÒZ'„ôq)N !þçŽÑa³´kSÛôÛ·:o?Ô½©¢öe¿·¤´º„ÄYþÙ…ÚËÅ7€@‡–Áh@Qhš±d2zÆdäü ¡Ê\´ÌØXkÓnÅt:aŒEç¸ÇÙɰÙƒ+«ÔâÎ6<ŸÏ‘2«lêÎöëî )¥½Ûíòî{ïpçîM6·Ö¸wû&a ͈04M#ŽXë·Ù¹¶¶PøÙÅ8ªTà}Êt:¥ÓéÐíu«8 ©0žN8:>¦ÐšÕv‹N§.2¬Õ©·~3n® kK@t>Ÿ“ç9EQ€5ìïﳿ¿Ï»÷ßYŠp8??GçV8<<âààÓÓSÖ××—®—’Ò$JI³Ùd}}ÑhÄÉÉ çççÄqƒ†ÖäEQ‘Išpttäz)jðL˜L&ì>Îo’déy7ÆPè¥b¤RíÊ·ËX©ÕÕU„þþXåŸåò²î\žÞ’l´¸¨¡²¯¨¢‡šÍ&×®]ãàà€££#nß¾íJÏ›MæI² Ã^ŒPz ðZe}K‰Å’¦ £ÑˆããcÒ4åÎ;/d÷û}677ÙÜÜäèèˆÉxŒ¸¶”’ÓÓ¬u€¬ë2‘‹€„²@kÒ4åùóçlllÐjµ@:bõþýûüÃ?üB«‚êÙl¶˜§/©:Ê—Å{Åÿd2á»ï¾«â˜‚ `ïù^U²½T{!WÝÖ^o4Ñlµè¯®ùâô$™ÓhÄèB²ºÚw « j}MT@m¡ ò¢`ŸããcnݹÍÍ[·èõz•*ºUyÁýû÷99=r|rB ÷AQDQ„5Î}PJ*§pø²£7ÛwH!Éó¬ê‡BUÝ*c0~&½Ž–Ά…ƒâOãý1ãÎËžK?FÖ\l’N§K·ÛáèèhéýêÿuÝ#RJîÞ½Ëéé)­v“´ÈI²)§çš ²B2KRæÓ­F›^w…Ùlî£=Ýø…!·nÞa÷ù3WÒ.$AÑl¶(´!ñc¹サ׺{-ðÎb¥EYºŽÅJ—`=¤µFÙIL3jSd™wf í"BÐ ²,GŠ€…’z…xñzÔ…,ÖúX)ÈuV‘•Óé”( @ŽtÀ† ©,ÂG*)¥ÐÒºxšZ”å"¢k¹ˆùâgp½ ÒE¡!ª®‡ËÄ6õïSöLXmˆ¢ÔŒ¾WbAæ¿°¾®uA\¶G©“ ²rz¾Ü ñ²µú‹?¿ˆz¬“h Y}ž(j5„²¾#=‘ IDATÃb±*rãÉZÖ­K‡Œð‘W’<×äYÖ†<ŸûÇ)Y¢Xéõé¯ôùËÿ?Ó_íñäÉc¬ Q²‰ ¶Öi1iQ i‰ÁØ9J!12p‘fVú5m€0ï*­ÂíòH"¤rý&YN)/\q.À„7vkáÎ :g6óÅ>å½»·è÷WQ*äøä”$Íè´ZÜ¿¥ ÇG{»]˜þìKLl kõbÃ)0%Câä½®L:”nºMu†w8ÈEÒ—«k´teÎeƬ{T%B4‚n§ƒÎrfó„ÉdJ£/ 4q}-F\Ü8Û*Oy9“|ñ´WØÉR)[ :Ýkëk|ü«Y][ežÌ`{|„T’õ º½B ´Õ>nÀ2O朞Ÿ²¾±ÆÖµMŒ)*¥³¯»±ÉÅ \kiš:Gu›º³ÓSvwwyçî=·YÆ)Ê¢("ˆ#ÖÒ”íím8==euuÕ“z~ó&Ü÷4@Eܸqƒ³³3ž?îÁÔ ¤hµZAÀl:e0婯˴^¯G»Ý¦Ès†Ã!ׯ__8+Å¥¿Ö¥]¿Ì«Ã4MÙÝÝåÉã'¬ôVXéõȲ¬"3J¦,4~Õ8öO¶||­Ïd/!KàÄËÁÎלCKª>ÞAÀ½{÷xøð!ß~û-~ø!N§"tï%~ô¼/•+†N’„“ãcÆã17nÜ Ùl:¢µÎ‰ä¯c«Õbccƒ½½=æó¹ª)P–J#ýJWn9™Ïæ)˜N§.nÉZ”tqIkkk¬y÷ÆÁÁ‹Qñspš.bJÊû¨NœU®D ÉlÎùÙÖZîß»Oš$®·aŸwÞyÇE˜•ÝB |‘¬|åu‹¢¨ŠµrñJŽ êu;/؇ܼpqT'g§L&nÞ¼Éöö6ív›$I–€Ä0@ Þ{ç]NNÎ8=9áøø¸"$Úí6Ò+±µ–Þ‰"ª~ŠJQ_ -9ï–rÕgT`d–å¹u99ø„ƒxSçô‚<²úŸ§@ªÁܳÇ ŠBWŠá@¹H-wÜŸ(Š—È1pîpÄZ³Ùd:ºó--a(h6Cò»A #7Æ6›-gÃê:K) }^æ‰ì rªmm´# ¼CØu4¸>´ŠP)0Z×ë„/V6Øê÷„t?…J ŒÍѶ ŒÂ8ÀZíË|]Üa–KǫǢe›Xé,{X´ÖäyY&[þ$¢:á¶,ÔÕx·¤­Ì.Nü`–Š˜ÝÜdé¾÷’áeû‡ú3áÜT†étºØßyÑb¹*Û²ˆ¸\òàÔ‚%é"•¬Ê˜«låªdÑ3aíòž¡®^¯à†’hpýjB–QHQCÑlµhwšÄÍ \gGéÖÈóÜ—n³D–X‹+™šf³YE)¥(Š‚ñxLQd¹àôô„ßþ‡ÃÇÿ k Ÿ~òy¦ùõo~É{ï0M°!Ø€(”dÉÁð)&Ÿ’况Z½-lÐBˆÈ¹uý:G8W†Í«(éE\XYjí€ï ( J‚µº*I®F/k<ðni5š<{xÌl6å_ý«ßÒît˜LÇüá_¢TÀÖµm®_¿µ–¿c:rçÎ]šÍ&h`ˆj÷ `5R87…5¡¼«Ð•¤¹ø*œó8¨ÈÊ—Š´‹¼n?HY5`­û£ë‘wÂVqõ1M‹Ú“¬¦ÕŽ9?=%O§lm®ÒˆÆdhkÙ;8d:Ky÷Ã_Ðêô1Ö5å}% Õ½FmoïnHñYážX¨¡t¢îÓ–FÐ_éòÍ“SB©¶Ao¥Ïx¶Oa®œ WÇÕquü¬\C°4äØK—55]ü´„ÁÛ-jßæ·eŨXû¶ÄE­´íe F»üy¯Ú ^…Ì‹7ü½7»~õbÁ×%xJµø‹ ‹ý1Oàò=Hë€D©$ãÖë”}ÔݾN}íjÝÏ EVäèjñ$j “úâZ,ºÁ.ÉJ-q˜ºúÙrIÌ„{ƒ‹1ØÅB_xiñ±"N-ã6É– Px};—Á>ö•c×2/%.D3 ÅÒFE^R>ck±A½—ew¿ ±Q4“¦sZíaè6¡øQ…/%´ÀÆzL£sçî]t _º-ùmòKŽŽÑVóÅ@É€$I/l\…Ïð·K'ËVÀsA’ï¿sÛ=ÞZo,JH¬ÕÕ/|éw–N‰c1¹ü$qÔ Ï2ê‘/œ•²œ [•®½ÙÜUº5Ü_¤iæÉQ‘ eLÞb!ÏÒ†ÂEhwÿI±(°ÄǸ]íâÁ ŒS¹)ᔬe$ŠÖKNF E Kïhp¶o‹‚ÂW•›5ëÝ Úº¿™ ‡£Q^õgY”ÕIO4TÕrKêñ…½|ñÌÚ -SQÊm|EJ¡¤bûÚ5ÞÿànÞºE«ÝfoogÏw9:>f¥ßgçúíŽë@0ÖptrÄh0äùó]¦Ó ëk«¬¯¯½è¢QÊ_(¼òÏ«†‘‹I³Œó³g§çÄQƒõ.…Ñ$³„áÙ€éxJ3ˆ}ŒUYt§ÓáöíÛìï°¿¿O·Ûekk‹ * ´^¶|ýúu9;;ãé“'t»=T7t{=šÍ&ƒÁ€sÿ'Š"Q\‘kkk¬®®rttÄsÝÔéviÄ1¹/å­ ªËçÌZ"G£á?|ñý•ÖVW‰ßy‡vÛu`\T”¾ÌéðOI@,Ýkör±ƒû|þÁ\"x¡¤ÙÚKÆÙ²Y\üðw-ÁDcLu¯—.²•~©‡‡‡Uo@³ÙDøè0ëãÆÉ÷/_ •àšð„X2wq?y–;÷ÂÆÍF³Rè‡AH^äXc诬°¾º†Õ†<Ë1ž FXЗ`¾ñ ~^Ìçs÷~IJžf諪PÒj4‰ÃˆþJŸá`ÈÞîsvvv*b¡,ˆ¾¬O(™Ïý÷wΆ4IHfsºí7nÝäôø„ÁÙ9'''ŒÇcZæÅËÖÖÇÃÍfS’ÙŒÙdJàI7׋ú¢O{åÕ¥åQ¹Š’„ûôSŽŽi·ÛtWVÈò‚4ËJúsW d@® IV(¹49 ± MêÊËÖ§ŽP* 3Y›[=ìóƒ½o⟻·IzõžêmÖÔ Â& #’$A©£áäøÌwṸ$%ƒ*Ng©xØ.ŠÈ­Ì;EQp||âˆÄP²¾¶êc€\ìžÕŽ(h6Z(¥8;;sëLc‘JFÆZ×áÉHW9¦Aà\Þ± ÎI I ¤sðúµ¢„q$¿5N=ŒFHÁJm ÃóótN®Ý³®Â€F#b¥ß%!ºÐ袌f*]Gâ¥ä§½Ð_ÁÿÏÞ›=Ù‘¤Ù}?wín¹¯ØU…*ÔÖ¨ªæLs(šd4™$šÌ¤ý‡’éQ|јI²¡I”†3²9];jA–Ld¹ÞýÆâîzpåf&€Úº9CC´Áª‘ȼyo„‡Ç÷s¾s¬ §-…n›-'¡ Èܽ˜Ê)!Š‚PU–ªJ„FI´Ìèêçݤ¡À}Àr’PaÀXAa-J€ÖÛ𞼊h¸huWEõÇý{©ð¾ôoÖ÷emFÕwÕ–¯5Àl.¯FaÖ9¶úŸk™Ôåµo-ÂXTPÏߺ5'hwÚtz]z½­Nhoc}P¼³»téÖ+æùc1ÞºT!¥"Š’$$Ib—ÉS$‰d4LéŸeŒG3t1C Cw¡ÃÞÞ#Š<#ŽBf“)Q´DžgH q«Åß|Ãî·Ílüœ( øoÿûÿ‰<‹ TäíRÝçWJÒe’Q[f—ÖªÒgQ(åj—$ÒerŒ¶Îé¦(´ÆÚ(ÈtÁ×_~…‚›7o:ÚÆhööö0Ʋ½}••5„P<~¼O¶Ù¾v!b„ŒQ2ÁèZ­_¿nZ¡Ü#0#|ÞÂå“㯷‡ÊçEUƒxK´ú¾)-A6^QÍEh}¶U¶ˆFƒÑ9èŸ?#‰ ×·–‰#Ð:ãø´Ïg_~ Zì¼ù†mÚH¥\½5Ü–‹S âMpíXPOb”mŽE ƒlF‘Ž˜F¬n.3›L)l—‚6D ¯É†×Çëãõñ§ëE­5&ócJNkÿÓ‚æ•í÷Ïê¹í<ø5÷uS —¼M+2y>üvîç«‘¼y5yõ˜Ýd°àß«ðè«ú• ”_õº?°øu¬.?0¯~“ö¥Í¯×`Ù*´ðÇ}ÎWM^¼zôÁͦü¢.]+]CùõfÑ,=É ½’R£ÝtCVhŒ­ÕÍ‚ÒãWTIM˜4íM¼jºy_‹Ë÷¹ô{Fí%ã‹§êÞô`™+°*dYJ§ûÜ‚?Õ>!戢 Ô‘bNõù³^×cWZ8UbšyÅãd\En^ Û¼x?ÿ1ɇ¾nC™r‘¬ ð§ ÜôŸŸ&U€Z©B´ì.?‹‹‹Î‚H)ŒÏذÖ„Ýž ý>;=åË/¿daa8ŽkEpIˆ Á‹L×Êçg©ð5Æx{ ”ƒýÂ0`ÙÛ é³^Œ@HQ©ü“$¡·Ð£·ÐóªL¦ŽÇcœÇ¨Ò Ê„.•%@§ ]“÷>¨º×íÒJf³ý~ßMII–çsÖ'¢æW«ëe´ÆÁYÿœÁÐÙ½mmn’MgLÆcÎNN ‡l­o\zî éüæ×¤”Œ†#&ã ¡'vTêÿÒ¾FŠzz§TáT‚1•IGDqT~ï•:¢!¸yíöÉ'¤ã1ÂZ†ã±óÛW’8I°ÒY’¥h!™eh)?)fë0wã­2„RU>R³ÒkÞ …6~J‹Ä*-â^VÓÿÂÊõâýRiWÖ¥âˆy~ÉÐÜ+ÊI†^oka8U~öJ)«é›Ú§žÚH´ÑH)èv»UI4\T_›Œ¹%¬b¡·€Öú‚-’ Óé0MI³ ©œ"^ÒY k%2À€)œ'}5åoMC”䟭©Ý:1–ÓÓ,š\kG’ù:½P0L(òršÃy½ ¯™_Õψy¶ )ëk=wdº¨&FÀ„’8Žª,AàÔê¡&2ʃÿ¦|î•áUÝêÖt5‘ˆÏ[ð¢"Áe ¿&jÀ¿(rŠ"÷¢(6Ú×@¢*çªáÑ ²Å|Í'¤¯„ËJ(-¢Ê÷W1_‡•ÛL9R’eÖ´&+ýîn‚Mø:-Œz‹UýƒÐUذ)m1¡(²Jì!¤³*U*ôëV! i·ÛÄIÈÒâXAš¦ôzŽ1zÌl:äÿþþŠããÞÿ}ööž`ÑüðÃw´Ÿg¼y'BÅÐn/2ôÙô9ãþJÎP²E;Ñä"£Ó³Œfc—=‚$ D•Y#)|Àd2&IZÜ»÷ÆÂÑóç|uÿD°uíIÒeæ „2WAª8éþRÕµÕµòu½¢þ™r*¢"ÆEc‚±üBU»Ë†,—ö0¤ªz¨ætsi ìÞVA†ìï=bs}™ÍõeÚº)õýƒC ²¸vB„Xou+¼-j3tþê:Kðâ¼ùÉ8»ºHÑzÄîîøú«¿Cˆ‚gG'´’Œê°²y‹Ù7óšlx}¼>^ ® Ì1ë™ùzÔþ õOxüÒi„úzŽ_X¯èÕîœØFwvi£¯¿®*¯X;?öV*ÕEó±áA_dUäØŸ œ7ŠNñsΛ­¼¯lã1ïå*~@8wH°ª¡j¼¨¼7þZ˜_Ю½à¼úëz ¾ ,²öŤë‰ˆs!<èa.Ö^XdqÎ~pكɚ&öR­²*ÞC7¾ë=6µ1 Te+b<èè~M ÆJSjû`ga¡0º/Ë¥æ )ëÉ_=¡­öÅ  YßÉrdÛÚ½9eŠi(W”¸” _rŽËÆo?ä¦×ëUŸÓ8®ÒyAá›÷hžN§þRJ´5ŒGcNON>[áÎ;Xßÿ=“É”‡±¾º†•®ÙÓ8åàx4Âí78?=eoo,ñÑÇ;߈*V)Ešf,--±½½í&NOx¸ûQ£­!Í2ríÀÝ'³¶¼Òðé•´[ºÝqÒâàðã“Þ^Y©Ôš ²ÎB‰†jn4aµvjj,qqvzÊçŸN§Óáw¿ûÝ¥ìÙ£”lŽ&¹ Dczë [¸‹ì?'HóEÿÖ¬#šþÚXn­»'æ±ÑòyF5ñRJ– Õ„DÕ9¶ Ð5Ëó¹sSžrR`gg‡½½=>ýì3vnßfumÍ‘*@™³ØòaÂ/ªˬ©”ŸH9~~Dšflll°²ºêBÂK{Üs·( †³¾›N«½'M™Ì¦ôº]z½Þœ’> ÊؘN§ÙXyž;{EO"ܾ}›ñxÌwß}G¿ß'Œ",x«>=ÐV jŸx÷·¸ÓfZdÕz[YYa¡×coo³Ó3ì›óÓSeý`6¬BHZ­6ãñ„þyŸ@…Xm«‰†ÉdÊl–Vá¶I’8qBe1RÚé„ÞoŸ7ß|“peÕí}~¿HòYJ.3§&NgܽóCšÎØýá¡#B¤¤Õn‘t;Œ'Sú}÷»Rm(¦)ÓYJ 8¦“´ÖåL9u}PÌ—'’%­µvª÷4·¥2¿"ì‹ï#{ÙºéJLI\ìwj`JÌýx9Ù`_¢Öú…-Tó}‰Ê¦Ê€,-¯0šŒéôºL§S¬qJDý ðž9nO´5Þn&ÀXœõÇhT…§+)ɳ £ùf MÇd³‚…^étâ먚Ôêõzôû}7y(ÜóIHgÁ"tZ-â0&e ·>Éٲ芸§ªŸ­­ƒ¤qA¼hWO•ûu)j)×¶”¡ûÞ*™Þ[‰À÷‘bŽŒm.Sm“¢ªE„´~BÈ“pƒ.4i:«ò«Œ6®²ï($Â*†0«±³# £]ßQð 2XJŸ/å?“T¥tââDF ¶ûg4›ƒÐ[ Ð…™³{4M¬|Žary-A*Q :JÙâ¦ÍóGu¬ïÍÏ‘s§ßTýŠðÖuƒ¾rµ’^·ËÒr)!]–Ÿ ÿL³ÚO[ ¢¨ÄUÎîMÇ1íN‹VËåá¬,­ºgW–ÒíöÈÒ‚,Ë †dYÆh4 NBÒ©aoï»»ü³ÔððÑ·Ü}w™µ5Åâr›óAŸÁùý³oÉó¬‚Í­7¹}û&F(Î‡ÇØ¢¨Cwˆ"åžc*À*…6ÚOSk_;j¤4îßñS)¯u­_Ê]Ç8j“N¦c‘BòüðÇÏŽyÿî››HQÐïŸ1™º,‘›7oaLg)ýá˜ÕÍ-Tœ m9Ù[8ëKëÞS%0õ}6/Ñ,^p'…mX/–*T¼ ZÖM4šrO¬öi/ü)§ï„# k WÐUýžIv?*I§GG¼sga q”0Õ°·÷„“Ó3VׯÑê­ …#Ç…U+çsDæ,•ítå¢ý «§J UéížœÁ •aïží}‰4g´º-f™A´ºÜ¾û!]êõk²áõñúx}ü !{^ýkQñÙ HðÆØ^&æ ¦.ûR^å¿køfâÁ8}(þ¢¡ú½?c¢A Se#É õy@«¨¿pÕý„ õâuû²~Ñy—_»T°Zk¯xâç.°WŸRÑ\žãRpa-ÚÔ ŒmØ‘j§~/)냣=lmV:sD“­ýô«÷!æ&ÊëoŒ­-ïiÚúþ0Ö^“èÇÛEþŽ?gáHÓÀ®K€èÒ=sA’/ÂʦN\ך[Ãëµ Ô•ÊÍS7·Â’ )as#®Îjit–ž®Fk7¶/V;µÒblŽ ¬! ƒqœ`4Œ#”Šh%yá#m`étBÕÞÚ¥R§i©$Ó(R–^Ãõ9–BÐí´˜åv÷ýÒÖ÷{ƒ¤’Ry嚛Ȱî,^áßûëM!ͽ¢ÏÜñXó·ÿ©Úí¦Ð^Y_¯s—g/¦îþr=¨k"œý—#3le±Fu>š ¯Acq¤©ðÍxI²(!ê&xŽTõÓžà*'å?‡¦mtM¬­äêž¡ñ<ÈÛ$µëÒP)¹<—giE ,ËKKܸ~ßý“?ãæëDAÀéé){O9=9&Kgìììp{çÝN ¹³:é÷Ï9<<`:óÆí–—½Õ‰³.rêÃÐ)Åt©R2›M8<8äÙ³g$I­[·h·;X››[|ûíwÜ¿ÿ ï¼ó[[¶Î: ½N‡t:åí·ßæûï¿goŸ•Õ–——èt:L&oÝä<Àz]®_¿Ît:åÓÏ?ãûï¿£?Òîu9;;#Í2öö÷¹szÊùù9­$Aùà×v»C’´ˆã˜~¿Ï³£ç¬®¯ª€0Ö]÷r_,ﻕ•§d—Š@)´.8;=å›û÷YZZbgg‡ Z­V€µ %¯®€¼‹>ù¥Ø+o^¬¸*7áU$„’étB»Ýv`»që)óëËs—Ö—Å ¥µ1µ—vœÄ>SÄT—³¬É/}ŽÔç¦zÍr–’­í-–W–ùôÓOùæÛoØØØ`ssÓå4²BªA;q…¢¥Aò úžÒï÷¹yó&ÛÛ[„aP®ªÈÛb:ešÎ@ ¢$öä®›è‡UÆHõl‚4˘L&cXXX¨²JÅvèÅ-Râ0bqa¥‡‡‡,íV»ò¿xÝšS~åsq2Òï÷Y^^¦Ûé’«+«LfÓÊ7.$¶d-¤ ¢˜Å…%¤œžœqvzÆÒÒív‡V»Ãññ1³4#/ T0NPª1aâ>C¸v IDAT'_â8¢ÕJ°Ö0 ,/¯T¶ÒÓÀÕô'–V"¤`çÆuÞ¿ûý~ŸGûOiõz4,®¬§)ÙdB¡ y:Cx;­(J\x®)œÎE”F#æR ,p¥Ú[«ioÕñ¢PÚù{@ü,ÙÎeÁÏ+&^dçôK´Bâe¿OTb‡v»C¿ßg6K«¯Åqìïi] 2ê½ÌVE!h·ºôz >;¨,A`ü”wäÄ–Vìöå³ÓS¿_¸µå¦‡"ÎÎOÝs)ÄqL·×Eë]ä çg§äi´ÒÛì4÷š7Æz’ÉÝ Êéb qY“imª‰äÆ]è_×^Y×^Þ‹E%"©,~T@FUb­§Z¥ T1¡Š)2Æ!B¹‰ËÂ(Wƒ–‚Q *¨É:@¸¶|¡‘ Õ=YSMl—õ“ ”·Y³ÕØ´PÂO“Ö„†½ ê»Hÿ–™ ÖÛP–VuJ\0g‡ãïËò½Y[ «@Þ’4Ç`¬ ^ÛX£ÛmÓ鯾¶-{7MѬËgr»Ýª®y–åDq@œ„t»m’$&Š"œ½#‹§Ó)ýó1ÃÁÑpÌp0¢Ès’8ña†0„,M‘ÒG )&d³#ú'J…<~ðúŘ›×oñÏÿÙŸ¡H¹ÿs?Ù'Ë››7ùgñ_F+4V‚–…WàKBd•‘á ÆOß*…³è¤0Xr¬…Y6d:3õ¶àñ» Ïû|ü›{ä³[vw0N¸wïwlm_£(4?æÑÞ¾s—¨Ý£0[åvt¥T›FU>#°r*)ÒVë¶$ódÃ]BxÚA4È1sa²zŽP§ûÙÊé£\®Â“Þå }vxH:›òÆÎ ’X‘¥ÒÙ„'‘¦9wÞ{“¨µÄ¸±(7¹\ÚjûL1mí ¶+”¿Â^úš›†7(r&“c~xðgÇOØÞ^eR6oìpíÖ{NNÏ«ã5Ùðúx}¼>þøx»`Þj¾>'? ø²5ã^ÏR¹•…_Sx<×€ˆÿ´'Ü=@Å…)‡Ëàà ˆØ¼¼Ij‚sÍÒ\ÓÆÕ õaª ´+¯‹¸ rVŸ©j¾…'ó$ÌËÞÿe^MðÕ>¢e³]6&eP™*¿¿R‘ÖD˜ _vEšÁºð)³\;²¡lxÅUá…õT©l€òγóB“ý NÇú°¼Â?‘á—²Às– NJI5Té?'übÿ|¥b·éÝ).Ÿ@T!ÜMñ«î÷‹¿S^Ô]ü¯Öº ‡N§dY†1…·”È(‘d „¡úW—WH¢ f6I€P…LƤ²h[Ðê´98دT¢Î÷ÝÎMßQüø¾#ª ÒB $K*ZQèAÒ‚Ö¬™š˜ªîcl•‚kKïZc_ú\7Ñögï»ÖÛY¯NÒÆEi ÉòŒ@úéYâüuðgÕÆz›ÝpÝýTûoKQ-Íüaq ¨«÷«”i]€€(÷¹=_ø&—±gª<§ärM±±†Bk§šõY*¸*@K8»5c4ÒO?”Êð¦( ÌH’„"ÏÑF³Ðë±½µÅo?þ„;o¾ÉÖÆȳ”gOžq}s“¿ø³?ãÖµkî3ùð@k4=äùá‹ =V–—\ãW–ÊæÍŸ5ÓØËµ1¤iÊññ1Ÿ<¦ÐšÛo¼Áµë7X\ZFkCµèuyö옧û‡¬¯m²¸¸0·–J0ßZËÝ»w¹ÿ>_}ù%ò1q7žÓÆß‹†^·ËÎÎççç|úÅïÝ}×YŽùLãUÙÛÛÛ<|ôgggqãÚõj’ꪣÈs‚ÀTL¦@ðìð÷¿þšëׯsïÞ=ŒEQ4Ü|ßÕúl|­¾®î‘+Ôú¿´Î¹¸µ–ÓZ¥‰”’$‰ÑiŽ $(Aa5ÆX¯èµž´sb€š(˜Î&´Z-Ÿ}â¾Væe8ÿo9CYkæåÊ6PJ:IÂÊò o½õß}÷÷ïßçÍ7Þdc}³'ªü¬EÓ¶iž0u» O3NON˜N§,//³²²‚ðáßYžÍ‘DÆO6ãQûý>ÓéÔ‡Kk†C§b-'î¤r¤‰ òÙŒÙl†1†¥¥¥*Lw8Pll¸5`,ív›Å…Eyúì4ÏX^^&ÍRfiz‰øm®aa<Ó??¯¦Ø¢0¤Ål¬¯óù—_Ð??g4±¼¼| ü´ÔÁéJ)zÝ.JH¦“ ƒÁ€n·K§Óqû@Íóœ$‰‰ãÈ¿—lt§?íNk-§§§œ÷¬O&.ÇÒgùà­‘8ò±×jqç78ï8xþÜÒN'ˆ0B…BZ­YœÏRÌL‘‘†išSä¡ ¡lN‘yJ^ìW–e>DשٛÏXc™Ëk¸úî—kú}øMíUÔî¹Ç íV‡½'O½úÞ[[Å €³¶òS²nÏ2à-…ѸÀg—£SN”8aŒó–Ï´ñ º jÅ$qÌp8ðÓšî-EIB0òÓ>JºŸÅÒÙ”áp@žf$aâTÚ•‘¢õ’°†Í‰®ž2•@À"”r¶˜þ³”ûVøé[QM/æ°­¯¨Qçrzl)åUýA¨ªI(!£ ë&ú¤D… J†ä™!KS sÁ¿‘&Š#â°…Xí…·z²VÌe­Ô³ں©ùÈs9 Þõ>ûe~R†Äqì&‚ #ÐèÂÖ×;G7ˆÑYNtÖõŒ‚K»3[NW—6PÖß—¶$“"²ø0Ÿ)$,n‹V+ba©Eœ(DP`M1_×7È ª3ŒÕ£É²œ4M‰ã˜$‰˜L&L§3ŒÿÌaa ä©&-(Ú­R*Þzë&Ö NŽÏ)音ž<þ†³“>úÍ?%#~÷òé1–àîë„bÊ¿þ?ÿßîÞ§?bmÌæê±šÈÞÒ Ó,'3-…‘N¬¦¥Ï`ðÖ¨Ò™ŸÜqkTZƒ(rÎÎNI§9“áÙða ö=d{cßý“ߺ¹fc88xŠ1†;wÞ&ަ³ŒÏ¿ø‚0Ixç½â™ +½µu÷X÷P¢ªÉM55ê§–/ÔÍÃ4>—Ü9*j‚r§¶“ »%éûÓØê|5ƒåää½nÄÊRIF  ÈSvwwIZ]®Ýx“܄Ȱƒ6‘stð=° œW8h¼j`¼=«-€œ@e<Ûÿ޾ûŒá`Ÿµ¥¦cÍæ­{ÜùàÏQq¾¢ßï㇩^“ ¯×Çëã?_‚c~ÓÿÇO8] B¯R±uŒ^Sù!.áØM²ÁþäÆá—æ&4ãÍqîKÀ0ZÙ,~¥|×ñ놫¬Œ÷þ,¿Üï–®À)C‡MósZ¤¬Õ4B Ì[0Ìy+^xwYá‹Ñæë ûês,®°©øé×â‚ÅE£Èh‚C`çÁlÑ}›ŸGHTž¤YN­€’°÷ª÷)EíWZ?ˆ/[‡@·JëÁNkŒ³Å¨€ZQ;•ÎÂé§Ýâ•÷ÇUD‹ó,µBêÇL5ˆ+¤ã/ù^Ѱ«(¨jb£Ãýÿwãõ®1£˜v7¡·y~øœ¸%™MNÀF Ì™7ñ)ÉÞÁ#¾øò3‚ p`Uƒ4©;j.|.€ÂËkcˆ£v+q4`‘*Y0¿ôs ~b¡üËA ¨,ƒ„„¡ªl6ð@b†Õ¾VÝZ¾IÑÆÎ5²ÒB gP,4&ŠìkƒÊàØ­ó—ìsé<517ýRïaƇÆ42( hEŒ:¸Âpaš§‰a5^Wú`ÜÒû½·¸ÄÍ7øðÝw¹÷áoØ\_Ãb9;=ãððï¾ù€·ßºÃ»ïÜ¥ÛîT øx2¡?8g÷Á÷œžžr{g‡ÅÅEZIR[•6nþ)‘RQ¹›Böyô臇¬¬¬°µ½Íææ&qÒB©€­­mÎϳûÃ#ÖÖÖét:Õd‡”¼Âõõu>ùä&“ _~õÏŸ?G)ÅÒÒ³Ù¬ºGJ›n§Ã79:=cïà)Ý^—Vœç9gggœžžrëÆ Â(\8p«Õ¢×ë‘g9ƒÁÀYÛ(UØ\ÜW½ ;‰b pJ¶B·Z­988àoþæoªs»³³Syí>‡ ´%ºh±T/p"ûµ‡«î{)eeyÓ$A”RH%ÉtÆ`ا(2Š[ )8¢AºÍ÷HsVysýW¾ÜȃåD…­rDl•w#) Só"ר@Ðé†H dD ÀÎ2Æx´VŠ73y<Ô.ypR\zßî¬ÉଅÜu.Šœ^¯?P^¿`ÿø¿ó?÷£,«ÉjñësW¡KóÔÃ%?è²8 ‚àŠfÇ^A ¼œt˜Ü-R(WðáÍ’D(•NaeQ’7e1P~]"EPÆjïéXƒó*°×w3BØ9²¢0^„•þÚœs6R\=¤”>8øÐêUÆzïИ`­ñ#䶺ߊ¼ðcÄLc°Ò«K;k}øš÷ÙÖ¶1èm_ycmê ö¥uaP5:%Á#N-#^NLý²íE„ÁU¯).Lô¼ÌFäâ{«cq%Puñ5J@©üZžkÒ¬PHÓŒ8vù 8LØyãM¬†£“çÄ- ¢…’yV t{-ñ¿ÿåÿÆþþà@:Û˜,(§„ìÁePPm kr"%ÙÙÙ™{Ÿ/»¯…Ÿ¦±âjÀüÕ{ÀÏ;\Ö*¤…% "ò@£„"nEXíÖ°mfÑ7ÑaLiËáæˆ¬ŸÐ0èj»õ¬¹"À­aÝUZœ”{eEΑ³r.ÀûEö…¥¢»¶E+Ûœ:í°ä茭§£j«>;׬]¼FkZIÌB¯Ç½>äŸ|ü ëkëélqž=çûݳ¶¶ÆÚ†ø£(Âz°2Ë2žJ >Ñì«…õ!ßþ<¨ ^KV×½P•qa|·ë³Œ-Ð&ÇX A ˆ¢˜N§Íâb×$7y/•˜ðHél3• )§yA WƒQÎ2´ôSÒ™ BÎÏϘ±` ,›ÁÆzLŬ,o ‹#òl„5‚³³>GAá“e9a"EÀáá!£‘›ÖI’k-vwŽr¤  S6·oð_ý‹ÉÝ÷>"Ï,ˆˆYfHZ!Öän:X;ôÚ= Jh¬ÉiE“ñáé!OŸ>æÛo¿a<‘ŽÇ„*dqaN²D«Õá¼ÌÙùÛ×ÖI³1q±¿¿ÇÓ§OùàÃØÚÚ¢Õjñìþ7ìîî²}óQ5,!Åål± $Ûe[V{I wÕ¾y¹±àó&¶POMSf­”uU#Çúua-Œ'S?zÂ?ÿó{lo_su‡Tôûúç~óñ‡t»=O´ÆÌ2ëž%¢ì‘%â'fÖ¹©UoâZ›‡–ï¿ÿ†ÂätÎ4·Þþ„›ï#‚Yš’8ö=¡ tXxM6¼>^¯×Ç?z2Ç4?[+.Juªµ%Ã#~4Çslÿlüòw]Ê¡³ØÝ,L]¸›kÍ„HßPÓõ•ˆfðRc:bN‘à Øštñ¾¿¥‰!”¢TßÚÚJÈè¹æ²:W ånùús'å‡m،Ԓïú+¬÷[7sÉ sEJàXúJ`öʯ¸‚¹„ ›Úç‹ÅÑ‹VsÌ•;Íø†AWkT×ÅÔçæBóÿcs@šÊ#ÛPŠ ‚†aHžeÕ3ÆøÑfÞö§ç޼‚tø)ä×™hø¥@@3ðϨ†Dq‹çG§®±¡ZU3µ¶ºÎÞãôä)FkŒ™9Û$=£(2’(¦Õjóoÿæßðìpß{¤'dÙŒ@Åskí2™fÉuŽÎ4™(ˆãSäl߸ÁÇL’ÄdÙÔM yÀîEÎE²åeçå*ÕðÏ=ï%Y…ÏÚzvvN§å û(öÖn¹·É¹Ø,]½>Å‹6‡*³(4EÓ–ÇÎ[Ìca+¥ùír~g¨÷ucˆ£ˆµÕ5>üà}Þ{ï=¶¶¶ÐZÓ xþü?ᇇI³Œ7Þxƒk×®†!³ÙÌÙä9OŸðþÃï™N§Üö$•òá˜MaA9•Wó{Y&FöŸðdoŸã“g㉆8޽B>`ey™ã…”RœñdoÍÍ Þ|ã¶ k´rî¼µZ-Þxã Fã!ýþ9ß|ó EQpëÖ­zúÇÛž¡"iµ™¦3nܸÁ“§ûdyÎp8$MSÚI‹4˘¥)­¤Eè›ãR­Ùn·9?ìszzê”êI %$a|.ïýrR¡×ë±°°ÀÉé)AÅ V ƒ_|ñ+++tÚmÞyçÚíveµó" ÓZ‹ôû| Ì‹?½Jé­‹ÂY(ùkßï÷9=9æäèˆï¿½ÏáÁ>þÀt<ò ˼ñÖÛt I›v¯GÔj>À;­>k–e;‚àÁf³7oÞä£{÷xû»DQL ‚êÖ̱hž§$IX]]åÝwßå÷¿ÿ=øô¼õÖ[¬¯ox`t^Œpñ|?þœ“““ /‰†ò^nª´…W[ éÞÿãÇÙÝÝe0°²¼BÒrS3£Ñ˜ ?µ ¥$Ïs¯·œœœpvvÆt:e6›±¸¸è&iò|NRN?ÄIÌÚÚ;;;Ÿž¸0ò –NMÐQkM^dþw–k¬Ûíºi °½½MüUC¡È™Í¦HIVEÆIå" [‘KKKlnn†a•×RäÆT$1–0I\ wžcò‚ÜFÓ‰ «‚ròV”µ‚›†, ím”.Oüþ±ˆ&P&þæ•!»U³¶Æéé© ñöZ.ÜY‹½(Ÿ ¹ï÷¶HÖ ^%o-äE^…ƇaH†ŒF£ŠÔ(§’ÄMW¤iê&\¥1Ñb_ 8)ÕÔÖh,ønÅ‘³òÑ. ¹­bÖM „¥‚ʦT‰ÕPš<7º…ù®®ù»Ë L·æËû¹ ð$D“ümîk¯SQh&“A’$q5­”ÄgÉØˆ=»T»ˆ†2±|ýæû´Þ«œFÌfSÒ,%ËRŠ¢ Ð)â0ÁeRÛÆÄ”¯e¼¢¤9ÅãJˆ²®(3\_E!º°…©&<ŒnØ`á z2K ’VDÒ gGÕj‡„‘ªk5©ª¼±–žÖ‚´(ÈsÍlšºžiîûý8ê2OÐF ¥#ÈR(r ž\²¬ÎPbH§cÜ>Y(!Ö*W‡ÌÜ„RÆšnat~~Æl–’$1A`‰bA–¥hcˆã6î|À¿ø¯ÿ%üæ·X$qbmH‘Yß+@¤B:˜¼p„•’Sd<¾ÇññSö÷vy¸{ŸÇ8BY*¶7¶QR3ìO8zöˆ@(úg}V–{lo¯ÑîÄä:ãì쬀”DàýûßpvÖç_ü7¢TàrL”¢(ììÉæma«lÁ ûÈ*gDШŠ6Iœ9c©1†²~5>‹Ð7Eã«ÚN»ÍɳŒ.ØÞÚ$(§çPìíÅm¶¯Ý"i- U—,·µ=“;٫Л¦‚ë ‡†rÿ’µB玞s>Òé.alÁÎ[oróú]âÖ"³4g4<æë/þ=±L‰CYa2¯É†×Çëãõñ§Åíë°†_»èÍG-V7W¢†û_9u}ªu¦ï˜D±sØ9;Œ÷$­ŸÃ娪{}W4™F_B4Ȇ²˜U•eKSeIŒ—V#³(ÿ`×^°kA‹Ê»ÖÌÍL‡¦wDó‘<—C"ì…:^øpD¢¨È!œZ¥ôê­£¼'«‡XæÎÁOºpâÅÍ£a^x}u‰qù¨H;?’=\X_öRswqñ8Õ¬ô5sÎØ/ Ólåy:ï -*\Y5IU`4µæUaë¿ôÞû1ûYé—Ü_õ³-q~,GÒTm¼w÷}66¶ŽF<~²ÏîîC&ÇCŠ¢ Ý޹q«ÇÊÚ½^ÂÎí2Óô1f3M+þþÓ¿& ®oo3ô‡)q¸°C|ƒFí‰]ùáJþ¥%“§¬­.óÿôwlmmTïÓýÊX*ÇhZ6½ôœÿ:׸lª² J°ÛÖûk¾ÚÙI™o^Í]õ¬,‹ì¼•Rs\¿\3%ÀQ*-› âÁá/[›•Bí*û "çŠÉ›FKù¾£8bsm÷îÞå£{÷xóöÄQÄh4b4™pÚïóôðã#ÖW׸µs›Í- •œœžqpøŒ~ÈÊò7nܨ@Ó&ñ\‡Z»©§„Å`4ä|8àùÉ1ãÙšl IDAT+à¬ïüá—–R¢(ÆhME,/-±¸¸Èáóg|÷à{zܸqˆ­$RàccÝþ×ëõ¸{÷.³tÆgŸ}Æáá!½^•••ÊöÅ=ßïÊÊ wßy‡ yðÃ.£ÉÄÙMYÃÉé)ýá šì(¯gd}vvÆp8äììŒd=$ˆâ à)'TšVH •‚\HÉ[7ÑÆðäÉNŽùìŸÒŠb–—–Y^Y&òêõ90“yEwÇ^±ŠW]kâ ¾2ýšub©4•B!£É˜çÇGì>xÀý/¾`pzÊéóge,Æ1k‹-Š¢ )$£ÃcžNsd¦YZ]¡·¼LÜn!¤› TÆ…!áÊ °Ün³÷ä ßß¿Ïl8duq‰­m—!‚RsáŽå¹Š¼í1†µµ5Þxã þþïÿžðÅ_ðÑG³²²Z]×ò(m[„” GC£!VÀúæ++«>§"ôY ئefŽ[äß}÷_~ù%BÖ7ÖiµZŒÇcÒ4ekk›Õ•ÎÏÏyòä {{{•-ÕÓƒ§• Óé©#¥‡Ã!£ÑÈB±¬€ö¤•FÓtÆãÇkXcȳë}Œ³òÓZ»i ã€óós’8fqq‘8Ž …$IÂЩqK«°«¦ÞJ€¿ù+›µñ˜ápÈÊÊŠ³Wkµª{euuÅ…¢4÷.¥”›Ú°S„¢ÝJ˜ŽÆÄaäHKcÜDA©â–’Y–Òîõ`&Éòm Š"GAUõh)oB"¤"ŒÝ=[XŒfº@å¹·Ÿ´Â×1~S5Ö’k]O„Kñ« ~-aÅŸº,3©2í¦jÃÐYŒœœ’eYu]£(ªÖ_m+yAˆàÅ0q±¸¸Èýo÷½P@F!¶\xÒ¬¼g“$áøø¨Ê(m¾â8®'¤@„ ”$Cd.˜d™# ÊͧHÿ“M0ÒW¯Ö–Ö_.3 Mg câ8¤Ûë‘ëˆYž¢mŽ%CJgI£”@zðYçÆÛ¹ºÚ¬¶SªEM+¥rç­kéR `æìË+ïË&á]ÖmÚhÆfBç-¤òJFS[°š¹º¢Î=»<­qm*¥ˆâc úý~U÷»u Q*$"tùa>pÙ½Žœ¹Ìq©* ©„ŸªÀ9²‘gáìÝÔ¥(4iêˆÙ¢p„@œ„Lg’V;&I"’V<—íàê9wµMïG-Fƒ.±pvÒg6sÙ-F¿¾c§d/«ÐÚÚ‚¢˜a­ËРʀ‘ä¹`4*ÈÒ EO1›t ‚€µÕ-ÄõõMŠ\ÓŸ é´\œšÑ$­©Ü",+Ë l_ßáîÝ÷X\H8=yÆúú5—?& Œ"‚(¢È§¤éN]–W Øß{Â7_ÎãGß±·÷-“ñ ÌéÆîïu±¦Ïã½CLájðN«Çl–²³³ÃÖÖ` †#—ùðƒß¸Ö^vwÑj-°¼²A§Ýs¤­Ñ 0?aÿóÒܧK™Bv^ì5ò]šµ­¬òîÉàEz¢\»ÚY¤yŒ$ŸM9ÜÂÒB‡õwo Áx’òé§_bEÌö;ä:Âa¤ÏÓ3²Êi¤®_ô\Ý-Ô™‡î}‘B!7n¾59««k,-¯u×H³gƒ¾ûú÷ ÏŸ²vsƒ½GŒì¾&^¯×ÇŸ}üR¡©`½BTp×¢üšð–Aåƒã§L6Ø Ëy1Ue;7¦'„òã{‚@)”ÒAAZ’Äyå–#„õºìêCÖ*ÊÀÖæÚÌÊ—¡õ>šZ›Ê¯±au¢5nÔQ¦RGÕJ|AzÙ G qI•Ólf+{Q¸‘ZmЭ( …-’]*¬*â¢QÌXjÇ 5«ˆñ’¾N¾hæÅJ*׸P+¹\‘,*òjÝVóË‚Á…·yùjõèéÜk4l«Œ%Pª¶î²âWÚ·ÄͶà§ìâe \£‰.I;.íN+àÚõ›XŸþÃá¢èðé§Ÿ(Ëï½Ö)_}ý=âÆ›lo_sÞÔ««\»q›w߻ǽÎ8<<åþýoyöìˆÙ4§(´o-"@ùÆMÂ*×<ÀÛo½ÁG÷> •„dYJ*çQ*Ä íßê°ÌŸ@¸ýìïŸÿÙ²‰vÖi d€Ö£9û(Š0Z7óËê¾æ R*m¯ð¯P’ŠúþiÚ”\¼þª 4÷qÅ:ºH ¸&é¢÷¬i4û—É‘†î˵—~»Ýfme•?ø€ÿâŸþÛ[›­+eþx2áèè˜gÏÝèþ;oskç6aaQDšç Çc¾ùöT xã7X[[' TüT½’¹6ÔÖ-ÆZ¦ãž<áÁî.ÏŽž#•"Ó¥¿sŠ,÷ª·€••U¶¶¶Ø?<àèø„?ìò›{²sóf}Þç0Žc667ùíoËt:eooï¾ûŽ>úˆV«å¼ñ½÷ý4Ñj%,..ðö·˜¥Svw§þZZNÏNH³m´›À“Î';‰c666hµÆ£!§§'¬.-¹0H)(ò«ál¥ºSR±°¸HÒj¹ï) 666ØÚÞfqq‘Ï?ûŒ‡?ü@že,..ò›îqãæÍʪ´ë)לöë{:’ç9Ïž?§ÛëÒít½Ý˜ùãE§XGî ‡C¦³{ûûü¿ýÿñý·ß2:9%QŠ–R(²ØêÐmµÉÓŒ¼ÈQ™fzzΣéŒÃv‹ ŽÑ^qª”ªHCámÌdà?÷,ÅÎf¤ÃãÁ¶¶¥rßgfXk)¼jÏ”žðp¼{÷.Ÿ|ò ¿ÿýïùÛ¿ý[VW×èv{U€ió>tëtÄþþ>J)¶¶¶\Vˆt„ _»9ÅV!ó ((Š‚ÝÝ]>ýç<~ô˜ÕÕUÖ×Ö‘BÒ?ï;(k9ï÷ùúþ}ŽŽŽRÒmµh%-‚Édìì¦Ójúàüü¼ ÏÂi-ÓÙ €›7ort|ìö¢¢`6›‘¥ie…¨}ضÖÚäÖ½^ÿüœ$Iè´ÛÄQ„)4I»E·Ûå¬ïȆ4M+UºlŸÍÚ«(ŠÊF©ßïWë³´2;88àääÄ…QèüÚ}¶ à³\ŇQVZ“É„ÙlÆl2% Zq‚-4ÆÛí­±XÒÿüsþýßý-û{HÓaG(è´&“éôœÁÙ Ù,ÃÁúÚ&ëkë<vÌíÛ7Y]YÂ×{|ùå—ÄqÌ»ï¾Çx2e0ðÃÃGll^ãÍ·Þqv¨Æ=kÝ€j³Öµ—Öÿ%¢ÁŸÏºm†?7óò*y^cxB­¼ïê{ObŒ˜·ÌÓÆçJ„i|?a ýð=oÞÜ¤Ý QÒ2ôÝsî´Ïâò­ö ³±ÂJAžþ={{V®N^&æ?{åˆa5š ¶¶¯³´°@$I‹YZpr>"M<øþkž>}ÄÇï½ÃÓ'é-m2ùþñk²áõñúx}¼>þ±R:OzcÜhž 5HéGXêV_Ñ—Ìû ÎX@¥°ºÜø)a}À°î­ ƒ€Y:eq1`çÖ*o¼µrŠ ŸkÂŒÖX­}€öjY…RA#Œ«ll‚¸Ó¼"\.¼w¦ôMŸñ£À^åUù¶|{³uG4h´Öh]Žáá0A¨:_B IP‚©Ö\©vÏyí¬”„f:Í™ %wGè‘£@{õR «F¡ú̇ͅ«‡«bsëqÞú零÷(g‡t•ÉV9eÙGç?_Så!æ¦*ÏoQϹÄUÃ|Å[4߃Á¸  VÛ¹‚¾~õø³ îõžHo… ÅÔÏk„/7f?òçJ/%k7'øÑJà ˜2W(áí‹¿Vê:@C[M»ñÛ?àÝwÞäñãÇdéŒÙtijƒç<{ú)YjèÄÛ¼÷öŸ³´¼LEäEïÜYåæ‚­ÍMþ—ÿù%KgA„°‰@RŽìaÀêÚëëkX«Y[[â£Þ§ÓNÐEŠë½ÂNú°a}¹Yµp!÷å²²þ—©¿øÐÚ‘¥2UÉ_ýÕ¿ž»~n$\ú}ÇT¹.õăœ÷am^c§§|ýõ×¼ÿþû´Z-„„¬ÈÜþn,½^—V§Å[³7Ѻààà€,ÏOÆì=ÝãÚµm%Q$ÏÐÚyp/.-0 8:zÎέ›a1Ò’Û¢"ük’ÝÄA’´Z̲c4ËËË|øá‡è¢àë/¿bŸ¿þë¿&n%tº]¶··±Ö2™L¼_¹#•µ1´ÂétÊhäȶñhÌÚÊ*¶´—Áþ*$ìe²Þ=’V‹Ý'ù?þêÿâïþîï(¦3–“6q7¡ÓJ0™Ë'†„Êy¥çiV“C¿†ë ORa œ¯z£¢å¤ýÿ³÷¦Íuéç/ólwÇÅžÜEm­Z»ÊUíšöDÇDwDÏ›Ž™/êWãq—§Ëm»íªÒZ*‰W Hbîz¶Ìœ™çÜs°$Ù*·ÝÁ¡%w9Kæó<ÿ…îaØççÇ]™Kxçª ¦Ùlòî»ïrzzʽ{÷ø›¿û[ü0äúõët:2p9ÉR&±Žc¨×íà½`íØVø60Y@®a2ñ=‡òñÇóøñc°¾¶ÆÚê*‡Ä“‰µŒJS¶Ÿ>eÿà€ÕÕU®^½J³Ù¤×ëa´æåË— ú}¶··ÙÝÝu÷ñ OŸípãúu[ë¸a~ê˜â%` µµHJÒÒ’(cF£Y–’e)yšq|rB–e´Úm›c£4õFÆoJQZÞTÙÑ…ST¬A‹óEív›ÃÃCeƒ_´@›æ(Y6¿šsÄ!á”jöºÈrQö´IJÅÆÃhÏ’ ŒÄ0‰ÏPyÂü|È2Gé„/Ÿ“¥Š•Õë ÇNq¤m¶“2-”uKPÒ+õëèËbÝ„ï2»œ‚E–kü¨ Æd ?ðɆC~÷Ù' ÏØÜ¼É8‘4;«´š5>ùðs@½ÞoŽ7Ç›ã…ÃPµ>˜e¢øVÑ@çYÜee5ä›BÕP4¹ŒÇô <<‚Ééu›Üy{·Þš§ÑÌ-“_.@Ù¨Úe"èÀJ\ØP²ØP°‡‹`7û!” .GÚ^ùwí简ˆÐdö\ÉY‰¤k²Š>é& ES&+!cE†@•ñeJ¥‰Âˆ#rÒT¡²ÍzÈÓ'cöGÔ‚‰2Æ2¨ËÒks9PTå–‰×ôhUGØê Dz²ÂÐþÃM¤ïšójƒ6=oÕ0ÇsCò¯ÍzvF”f˜êQÚrMï“ó6J…G)Màû%HVØÚTîØÖgR0kEòOaýÏñy@Ë”Á"Ó"Ø+0²gŽ ËK=„ܺq•<ËQyæ6…V •a¸“O½f&Í2 šZ°²ÜãßÿûŸóìé.''§dYNÿlTaûž•Y¿ûÎ[ü‡ÿð¿c´"%õºRvðø¾óë­ï¯ ‚ÿ¶CÌïJybˆ~é±*¥´Öîϲ_6'ÕÜÁ¥~Ñçsl.M±>™™gº4;pÌiß÷Ëa‡ïûä<¨_¶”*3U)ç->!ä…¯ý¬Ó¡—Ñ–å¹¼›Ðå ,]¿Æµ«[\½z•÷Þ}Ÿ¥Å%jQã£#ÃZkƒ/_½äÅ kßrýÚ ºÝy‚ $ðC•f÷¾ºÏW_Ý'WšÍ+[Ì÷zÖ{W¸ÜmÀ3™åçÆ0ôyôø GÇÇVÑç6» V§Ý™³ìñb·ð­ A-ŒÐmí[79íŸÒôy²½ÍúÚ*wÞºMP¯Ï²ÒµeŒæ*g}}÷Þ{?þ˜ƒƒ=zÄ{ÿæ}k#­Âa<#¥¤E\¿~½ôÿ~ᆣµ(¢Ùhpóú t™+‚Ð'ˆ|ºÝ® Ñ==álЧ=×AúÊåÈŠí…µñ™ëÎÑíÍóôéSNÏNÉUÎÖÕ«4 Ïç÷Ÿν{÷Ðâ$á§?ý)kkkå=æûŽá;™0ØÙÙáñãǬ¬¬pãú Æã1Ífó‚âì» „v<™ppxÈGÄ_þ×ÿŠ®ml²ÔlÓ>:‰ñ°>Ï2° ržf$iZúy§iJT«S«×¦$ mˆMIÓ”ýý}Ò4¥Õj±¸¸8“}Pì©qœ”5†çyÄqÌx2fïå+>üðC~ùË¿b8²¹¹É­[·èt:äË/¿d{{›/¿¼Ëx<ææÍÌÍÙg&@[û¨ããcvŸ?gww—¥ÅE<)QZ»Á¢NŽŽyöì/^¼@ÁÓ§Oi·Û¬¬®¢±ß)Ë2k3kXµŽ¨Ú·!lh¼çñ·û·v-Ìsƒggg<|ø[·nÒíu ß–ÝêIéÜ6í¹Ç<~ø¨\ó‰ÇÞy熣!aPÔ’,N‘¾ÇöÎýîsî?|@–g%0—åÀ™ˆ0²õÊY™HOÌîãZ¡€8ͬ“7GÔŒ*ª‡åÅ^"^;%úîj›‹ûGÅ߯Z8_¨BÿhÃÅ×-Ô Æ@£Ñ`2™¸,“iˆxŒÆ1I’”÷ÔùÚ Z/..Ä“ò¾j6ÄIB’$Î>K€‘øO£Ñ°Jž4+AÏd2v¹V¶¶¶ iMšHêµ:y–q:ã;jF¡XÒ•uE+gUd¥7H_’¥)Òó/ÊÖk*UŒâQìµB‚ÈC†5‚¢šÇxì1Æ6;(0…: Ÿ*U¦ŠSÉiª^b;œ,,þÐz]€f­NgÕ©vÌ\ïaãSò‘žµ¦=×›T¥ÅÏ´ë…ÐeŒÖª £H3«°‹–àQ(}ß#wa×…’¤PU_þÕB«&D—ù…J¢È(sÑ„Íi ‰Hr•90>·ù-¡çˆ,9£QŒÀG)S[¢(²ŠáÈGà‘Ä)±IÉ2ek΂-_­É\®†¨Ø@ig)„>¾oÿüþûßÇ“ëWYè­ÒjuØß?" t»‹L&)ýþ££²tb•QD»Ó&ˇŒÇg_¾RP‹¬âÔãÑ>ƒþˆÍõ’ñ!ý«»üö·¿áÙÓ'Ôë!Rj|iÕ°ž 5žï“+Ú>BZÍ6APãôø”ñ0f¼ *&oÀ†7Ç›ãÍñæø—~\°Q:2ØEº&ÚYˆio\Ý ÿPsaÎä’ibá'*+¯!ËA›xHi›2ž”äévËçƒïmpåJƒzmˆQëéhÆX/MƒB ðDYÃ7ûÕ¤Ëw(¾¿¬|öb¼Tñ 5.@®¨´(=ýmf³)%˜Â³VIöÛ«rp¢µcÒ#ðC (]ÍMeXWø¶ «w.³ö\9f˜Î(Xž64›‚ÚÍyæ:MîÞ}Áp˜0¦@„/CŒÑH9µY˜/N³Ï·æ0â²(Oß÷/­~Ýý÷z¸C”²ç’%åä(—e6L‡æ›`3¢Wéšua¦@˜(,„àÚõënè…µ~òÜoëÿ)Ïïw6|Ýý²Ÿ t9“Â¹Ç ƒ1 ?øAÝ5{Nõ£­ôÚz+t6¡Þ¨,3[úß³^­òÓòþ{o“¥9ýþ€Á`DšXÏÚ‚±ãæuºs5ò<ÅEšŽñ<çAžÛ@oß÷­åÒ¹ÁÒ¿Wk´(‚§!„ÕAX1X¸|mž†¬•ÇëX©V®¨úÃN±¸jnеx°ƒÍ<ÏÉœô¿ø<3ï!¦ 5Œ¾`–‚3);Óÿ²ë¿vJ3œ=@`Õ,ÛáäôŒùù.­V› Kû¨™ad9¸³Ÿ¹°Àë÷û¼xù’ÁhÈ|¯Ç$;G§;Ç\·[fƒc‰ÀsÍóÊê2 ‹ œžžðdû k+l¬¯Òi6gŸZkgg-•Þyçþîïþާ;ÏÐnܼI£Ñ$w…‘³Òi5šlmm¡”¢^¯óäÉvvv|;ŠZ^\r¹š0 YYYáää„§OŸr||ÌR%ô×TÔ^Å~íyÍf“Z­VúðŸõÏøàƒï±¼°H =BÏçþƒ<¸ÿ€ÈY×üÉŸü KKK¥I½^'MSvžïðÙgŸqzzZ«=úm"…¾ P[Øð…~ÀÁþ>/w_`´feu•ååe¶zK˜qLCz§ç„žGžeÄq\qM¶Ÿq4“gižÙkQ¯¡ò-Qd¿ÿ8IŒ"hÖé--"}¯Üs΃†ê'wÞ“$¡^¯sóæM~úÓŸ¢´áþýûdYFlmm•÷èp8tÊ6 ¥-|Ýí³,Jïv Än°útû¿ýͯùõ¯ÍÉÉ)›Ü¸~ÅÅEâ8æôôtÚm¾¼{µµ5îÜy›Û·ß" 0Ù£Ýî ²ÌYuÕYZZbuu•_ýêWùäwüøßþ”VsžÁ`À_ý·ÿJ«Ód<qvÖGkÅááI< }ÖÖ6ðPjí'˜¤R0‚<Í©Õ"ÚÍ€Á°Oä òÐúŠ¿üÿœ£Ãc’$¦Ýð©×}²,£‘J%Š,3X'Fß ñý#a4HÈò1Y®£œd2¡ÓéàIMzÔëu^½ÚCkM¯×ÃBÆã ÷î~Å\·ÇÖÕ›x~ UZ/[ ™iŪJåêcïÑ PáÈ[ö\OmM…›-èrÀâ,¡]ó¥±G+kµTÌ Œ)@Å2ÝŒ"Mr<q:Dš Ïwžq|t€Ñvƒ4O&œÿ¢â’ì„8Ž­O¯ôð…äÚÕ«NîÚ”’5&þ—ʹx¯_îm,¤S96gÙÐÏ©ha§U€b– êÑAH®l€fÁX­EzÏ…yÂp8"Šê¥™'ãñ•OÈU†”øÓA6›ÿ×jOÌÿB”,ãÔR¦ôçT ¯¿NTTAbêmÌŒ/¬3@Bñ:QY+cHóŒ\+¢(B:¦°”•°nì™óϳ™zÉJ)F[+>15>“ÒúûÒ/­ŠŒcöm¬®²ÐëñýïŸ+¬./±Ø[@)E<‘$ýÁ  ƒç/^ðèÑc¾úê>Ýùy666YߨÄ÷¤ôP¹f8ñðÑ#¶··1ÀÖÖívÛ(r¶)4Ó¯®€#ûûû|õÕWŸÐé̱º¶Î$IždqqÑ* |Ú­ %µÓi4ꬮ,óêå âØ†?o]Ùdui¹ ˆ®†c çÑÝl6¹vížçñáÇñêÕ+ pëÖm¢ZÝ…ŽR®yµ0bmu•¹N‡( yòä <äìôŒwÞ~›õuêõi’ÑëõJ‹ããcÎÎÎh·Û•k9]Û•²þÕ­V‹……vž?'IÆ“ YžÕ¼ÿþûtZmê=äÞÝ» ”âÇ?þ1kkkå`moŸ>þˆ'OžpûÖmjµZ ²™™†õñ Âd2Aç9¾'i7›xBÐíÌ1ßí«SÂCŠ©5ÒdÔ@væ™$1ÒóJõI#nd©eŒkM¦rR•£c… C”Ò†$:ç½;·ØºqF»vAY¹Çªv~ç}॔dYF½^çƒ> Œjüõ_ÿwvvvøó?ÿsÞ~ûm–——i·Û,,,ÐëõÊè ðŠeqçnyvrÊññ1Ož<á·¿ý O?ÂÃ;w¸}û«+Ë„aÈãÇ ´Z-¢0Â’å¥nܸ‰ïDQmÊvà%ÀÂÂÍf“¹¹9Z­ü1Ÿ|ò1_Þ»Ë8ž0X__§ÕhâyKKKôz=ž<~Ì_üÅ_ðoÞ{Ÿ·ÞzËRòüùs~ý›_³½½M§ÓáæÍ›œñt{›6¯\Á÷}æææB0ÙìˆN§3]+ûñ™óܲŠóóóܼy“•••ò5ž?NO888˜Éɰ×m ÄzžEûŒ{_}Å Ièv»€¤Þh1Oˆ“Ôy¤Ç(e¨×hmm8gîmž‡ç  qš& Ò³áÝYn¯}¡N|sÌ’*šÍ&a2˵¸ý–ROâKÁ“óà µ%•vaÅÀ¹Óép|tT’sÂ0Äó¼òýŠ{ªîo“ɤ$?ýügÂßüͧ¯r d2Š-^̪‰ÏµeÀº c¾‡ð~Ò™ïà‡– ¢µ·žd4ŽñC‰ôÃ’€&¥O½’LÉ$öB¯!­]¨Å„xMyyVØë®Ñ,É’± PUº Û$I¦ô sNÁ *ÖR•×÷œ2Û||Ϫ<Ï‚Lý~ßY`宆²$šÀYB;pPÛõ¤Vk „¤Ñh8u¯U&HÏ’—Ò,!M2âX‘&™³_Ò4š~à!¥-™¥g3-à iœ”ª«¼®è÷ϘÄ1žgßN±j ¥•Ukä _ú.g"G`U< ’¦)Z'¥B¤ ÐÇó$Æøh-8>:ãÚÕ[üàûÿ–(j°´´Ì÷¾÷=0¿ÿýï9::`ss“•Õe”R¼xñ‚( É3A–%ì…>Ãá)õZPÚÊOT“‰ arjQ ]óy¶ýñ$¡QoÓ¨…HiHã‘b€Ñpb­…`¬"1KòJž‡À`Õ•Æ©~ôÃïóóŸÿœëׯÑnµØÙÙáÊÖnß¹ƒ”/^¼`{{›V«ÍÒò*§g61hDnpþúu¥úo]XDj*Ê.S±sƒª}°ž®h[_—õžFk* ]ñükðtÑYð&W(£ñ±Öc{{45zósÄ“ž4ìïïóàÑ#n¾õ!Y&дpŽIbJ›š_Òa•® IÕ¬¼é À”W!%³yN‚)C溋ø^î•a­lôÞ€ oŽ7Ç›ãÍñ¯~è8;ì Ç Ò²PôSKçõèXa…À»°˜Ui£ÑÂØâ·2+íi–‘e98Nžai¥ÍµëËD5È3ËÄG}òLXI¡óò¿´+ ‚Ð_•s˜Ë|¡geö3CVgyd‡I?0„¡À÷¡Ñl0¦$Éc¹ÊœÚA–M Æs9॔jmÈ•.eùÊy’Ú‚*Îo^€ 2 Œ¨T“Óh\¿Ù£?<&ž¤„a‡d–k«,Øð ç9²Ú(1#¿7TEb‹ý)£é²quIލ4—ÅÙÁsƒ8unxJ%k €œol çR ãÜûW½ÉƒÀ·Ã_gǕ繻'© r‹ùÛ?_%ëìÒÀÛ”–æÒ¦pz8ëi,ÂèÂ=âeEAl°!ŸNòã K‰A¹ m4BÚ¦PJI†¨ù„8މ¢hjb¦‹Õs\ “…¬®®ò‹_ü‚ÕÕU´Ö ‡C~ó›ßðàÁ}Ã!ÃáV«‰3ââ¾-ÎõÖÖ?úñY]]¥ÛíZßu!K—6šÇóÑ'ŸðÅWwQ. Þ÷­ŠÁzÀ[ë;0´Þú‰SÅ”!Jùü{„µ:©€<‰í@r8,-K³,saØÁL}ö]‘&¾ný—FÎ(®yQ¿¶9vÈ?­%{½ÆFãa–ßIyUF„aÈééé´~ô$§§§$IBìc±ÂXEŒ;G¾ïÓétJÕEñ­¬¬Ð¬7FdÊ*RB߯,k¦TFSX´Rî#Úh”QPQM&I‚Ô]Æý¬Yf‡ÝãQN®Œcmk«,”‚Z¤H'£­ÐeÏÀù´óõv9ø}]ãyU]I BZ»׋L-X ¢­uÐË¥¯Qï”û§çøµBÊrúÉØ“Ì­ÑÎ J‚'ZL¯™6¹#Î(jµn·KšæÌÍuËpé ÄÉ?ð GÒ$CkÏQä Aà17×ÁÀ÷­5PäìÓ²,Gk˜8¥Ùd2¡Ù´}fZ 'cìµ4FÒ?ljû}Áð”$ÎIãœÀ‹ð½BX˹Âj¯  €XQß)¥ÐÊ£ÙèpåÊ5òÜð›_ÿ–Í+ô'l¬_a4>CøÉO~H²Ôž¿½½] œ{‚,QJã8›¸)™lšs1µŠãØeaIæk]Tnï‹$I™–^?¨Y»(ßc cv÷æyÂÀù=\ÏÔi¾Í¼dÍ4æuYUÂZ¢™©Í•ªäNÏ¡íÌ6Ð]+ÑYÓŒ$iš°ûâ9[›\½zµ|ÏçÏÑB0¿¸ˆDâ{Ê€rê!,AQJD1ÿhÎVUmdªDNËÔ!Kcꡇ'¼ ‰5žg×"Dþlxs¼9ÞoŽo9šÝhôÅŸ_´;5ßìžѢ/^†jJKO‚ïÛð;M€çζȠ “9¾Ûhß'ðƒK¿Lõ}<Çê¿ H߆E’Cc4I2amµÍ~ôssLFpr4&K ôçñ=¯bßa_Óa£„ÈúrÃêù´E–(=Õ- À9ÅC1@›†+h€<`B A2;\«^:a ë¦sì´Š¼_—̆*‹N•RC‰DJ)*`HÁS„!¬ot8>9áþ=CžˆÂ.Röœ .·È1Ó»¨l´*ùáBç4JkÇŽœÞ3¾çáI¯T^ü¡[^\h>Ìt`•Aq!8Z;/þËšÆoúÈJÃ#]ÅãŒ#KæS–ç´Z­r8?3ÄþWÌ œî]2 ¸$¸OV3+˜²ÀEåúTŸé‰ ÅN̶YdÐTÎ"Ã68Ži§Qdm]¢(<ŽèÒ÷¼L^œüc‡#_÷÷þñC“éù+B[‹¦®Tü×7Ú¸µ£ðÓ¥üÝRtyŸ2£2+À®*C·°‹ÈòÜšÄA’¦dyîÔe˜Àz₳=š†. j­ÝúXfÚ˜ic!°ƒ•ĬG5ÖVW¸~ý:oß¹ÃæÚ+KËvøŒ!™LF F£± Ô•(Åîî.Ož<áìì”…^wß~‡[7nR«ÕHâ„F½Æáñî?àÅî.ÍFƒ­­-ZͶĸÏXSíWxB% “8áàà€§ÏvÈóœÕõMææ:Ÿc´¢E̵;t;L¦J–i’$(mÈ3Ë휞Ùa†8MØÛ?`÷ÅKz½újÍyŠðÚ\[?eÏóèv»øaPZù<|øˆ,³Ã¥¥¥2{¥‘¢ ÄëÌQjÔj5î~u“ÓS~÷ùçòö[·Y]¶ÃÚÍÍMvvvè÷ûL&º9âJàw®U¸[ –Ûí6ÇÇǤI‚ÊQÇ2ü<ßgye…_t»Ôëu>ùìSžïîòË_þ­5N‡/^°pÀÞÞ?ùéOØXß ^ àŠuVë‹b¦¢«û'X¿ØAœ½oïܹÃúÆÆ¾üÝçì=~†ÈPŠÁ(¨R2𧛥0d*cOȵ"7¢\+â,¥?#Ÿ¥«Wùwú§lݸE{®‹,X•Îþĸç¨Úõì°ÂCìÇžcîzRòÖ[· Ü¿wß}ú)ãÉ„»w¿äÑüóÎ;¬®®Î800Ž-ÐðÙgŸ±¿¿jõëëll¬³¾¶Jà2SÒ4e8ès|tˆïù,ôz6¯Ç]ŸÑpHæüÒg¬ß*ûFñÝšëëŽ|!ñƒ€Çóé§ŸÒï÷ùá~ÀüüTŽ g‰l ‹ó¥-\ž&d‰"NrKtË*›X5~ád€™é‹ ðSkj>i6ºüà? jÜýò¯^½"W ¿ûÝ'xžàî½ßãûwîÜ¡Ùè°²¼Æ`0àïÿþo¸w÷3 )‹‹ó@JŸ9 j>Ç´–­æ‹–¨F+»¹¬DaEäöeOpÖ?£VoÓl.Ð[gsã+Kk,-öè-ÌÑíµøå_ýÝn—µµ5jµžçóìÙgŒF#n\¿Až+ †¯¾º§3×#¬5™Ä!}òÜ€œ* t™ÿ§_ 6Š©ê¸úìÿá¾D8w‚‚¼å2ƒ´™ézÏÿªÖ­° Îé÷OúÌuֈ ¬Å¿zð/ˆèö­Í𰀏9g‰]¾“8ÿœV²pÊÿ-gSLmº¥³ò+ݰäi~è;{^Û[u»$ŽÇ¥•ذáÍñæxsü3 Ìà_µøu–õÿ˜\4#¾å¹3—2OŠfÜy[PŒÄ­%„´L?é±nñ3kû`Y[‚)C¢(Æ‘¢´9±þøŽ½Pe½Há¼M•UèÌ"ô&§×kqãÆ: <9F¥œ¤4ë=$ëQ)ýsœ)Þ[ Œç6êÙÁ³pßÛhƒÒc<«ÀÌŒ 4v î²rmf"!ʳaý¿+²2ªl1¥ÈÂh<3 Ê6Hg‡ ‘ž‡¹³…€Vä9FçÔkŠ«[s¼x~Êd½^Ïî1çî;¥5QÍ^ŸN§Ãéé)iœ0i×ÈFÃZ9ÕjÔëuîܹC®­êñåË—üò—¿dkk‹f³I½Vãí;wغ²E£Ù ÙlÚû¬l )ZL·8É2üüÛ¦².åªðÞ6ô-ë~oï'Œ& >IYìÏž šô|Ï©ú4ÃqÓhÖYX˜§×] Ó™c2‰9::ÄB´žªfjQ@’$ÄqBýþOŸ>¥Ûíòðá#êµßûÞ÷B0ùì÷_2¿´ÆâêU´ˆÐ }4¾³CtY ÒTÔàÓ|µâž-€ˆ"ÿQ8+E}‰õåý†³§«,  =/ îG“+cUrÚδNÙ{µƒÑ wn_§ú sÎúgìî¾`n~ž¹^LùVÑ@îžEYæ4Îê­Í·B¡]9Æ¡Q S±Î RH¡•SkI¤íu7vþòlxs¼9ÞÿlbÑxÂeîpß}M,Ä9 ã[`ßíG3ç‰KŠ3#*×.ù̆&_Ç 5³hyA ±lÖ)UÕ†Í9I©Ö”Þ{åë;t½28?‡Õ»˜cU®¦9iš‘e O*šÍ:[[ x^Œç)âIÂñÑ’ß$Õ‚ÐóÑF¡ äÊZmH$I’ÚAŽÒ=õ„®JoÖdYJžÛ÷ÕJ–EÀL@1.|Ih÷ÿeŒÅ<±ôG/ ‚ãŠ}í˜ûžç—ö%žçáû>ï…¾ç:–ÓÔ^ÅC eð$Pz„ú 4ž ѹ 4 -67ÏØ~l¬Ï}nϸïK^ëNa.¶Åý Ü„_J‰Î²Ò†jvRm.y.N²=éš[9á ‰¢Òø =ó¼ ƒ© Ò‹PgQ¾Þ4ÁÜú‹ª‹6N®©xúÛ†Û“‰D¹;XH !+,ZSZ˜ôψtVÄÅ?jíšµ×I×…˜zü_Ȩf¥þõ£½Š*æâÏ…kŠÆ&âXc”Æžc1é̺œT®aõÞ5•ZüÆõ;Ù€¾åï´c¿ÙuîÕÞKö_íáûu;ËÕ”å|î¼®c\^ÃþLvM´€A¡Tª=@i!¥,½<ÏÉ’Œ¤i­ÉeFàßrYZ|øAˆÒ–µ/¤°C/ù~Hà{ÔjsoݾÍõkWYßXcqa‘……Tž3I“„8ŽÉÓŒ$¶¡ŒRJ|aC)G“?âùîs²<ã·ßáÇ?ük«+äYJø(•³³³Ã£‡ÙÝ}Î{ï½Ïµ«Wé´Ûçöµ)«R{à‡Ãш/ïÞåÙ³g„QÄêê*‹K‹ †Câ8¦Û™c®Ó±MœÊñŠ5¢¢ð|ýƒ#vvwyö|×y7‡ Î2^îïsrÖ§ÑjÑpa”ûfѤºÁ–T6ÀðÊ•+4êM—øìwŸñå_°¸´Äúêëëë4êuð O3ßçúµk¬®®òjgÏž±³½Í¨?`aaÁpX¾ÇþÁ››n€i™Ÿžgß7NR<ߣV«Ñj6i4šdYÎÉñ1Ë ‹H!J6<ÀÖÖ&É„W{¯˜LÆÔj5ÖÖVYXXäîÝ»,..Òív©EV‰R¨ãÊT®KüâÁ6ÆLM¿œ½|È5evçFÖ"Ò,£V«±µµEÿè„/ŽŽyòü)„ž?«’Sø_EæxÂaÒètÙ\Z¢3?Og®ÃÒê ‹ËlllÒl4ìP:×DqŸD¹7ÎÛÉèY¯ær@Át zxxÈógüõ¯~Å'ÂÙñ1X[^àäô½ ,›¿V·BRà» ‡î\‡ç»/0Zí&ï¼}‡ÞÂae)J+G)¯^½´vFJÑë0×i“¥)ëëÜûê+þúWÿ$Iø·?ý «kkÎrM©ÜZ•˨×íçYZZ¶ŠA!˜ŸŸç‹/¾`ûÉ6§'§¼}çN. prt\Ú9ÕkµÒ*ËÒrÖn·8u€Ùd2¡^«ã{“qÌp0dqA‘‹œÀ·ŒM•çdiBžedḬF<³²¼È•Í jaˆçÖÉ( èÎuè´ÛŸœÐ?;#jQè—9i–¡´a0a€NgŽZ½A³Ù"M3|? M3NÏúóÅï¿äw_ÜE °Þ¤Ölä9FHjõJiD®Àe{Õj ÀZ–—,{ß“PdöÌÜçáyx~ˆV9I–Ù5ÜÙSYyi!øõl'Se.\2|•¶ÄœûeŽùºîIüQØde‡bDY£Ãv»ÍÉé)¹Êì3®r Þb†NQ”ʇ¬¢ÈÔ‚0¢ÕjóøñãRE²¹y…V«Mw~ž{÷îÇ Z™’\3OF%Ø_ä' ´ÒÔZ5677ÙµÇx0°¤¯ @«ÜÕbÒ)¥R€ªZbºû³Ì“ÒÕÖÎ>ÊË$ÇÙ„ °%“ Ï·ù|Bt¹g}AU`*Ī’”%œµ¥ÎËu[º»ª/é¦b 3 f;·v›©â^kåêBSúõOÉ*r† f×Ñâ= †?£è,²V”J±Á~Ï0 1Z8û"…ô$ÆäÌÍ5évôšÌuÛv½‹x^ˆ'm}”çšÃƒ#öö™ŒSÆã Jå´ZuÂУÞèÌÕh¶"Z­:B‚V)ynëª<רÜÚ %IÆééƒÁBjõ:k«k\ÙÚ Õlsz:`8st0@J |4u:íV‡$‰IÒ˜,IÇÔë!£aÂð,%MR0¡;7®³=Ýh4`scƒ÷ߟ>ø€fc›ããvv<úƒSNÏÙÙyFgü§ÿôvwŸñûÏïñÙgŸsvv¨<ŽDÔë>aTc2ŽRZk:#QÂæzUU FZ%‘+×ÏÒY³ZB€ÄÇ“!QT#Ë2úýS|Ïc88åøè÷¿ú”Ýç;òÿýÕ/ùÏÿùÿä Mù‡ø{ºÝ.dYÆóçÏ9<:fóêmšyÒLÓh7‰ÇÆÝËU0¡$ T,†Ê2ÄLrÓŸ‹ 5ˆõÎEС¤î9RÌôµÎ¯›ž³FW^ÝhÒdÄÙÉ>QëËøÒöH/_¾âätÈ•›PkÌ“}§á™ÎmÊYǹ4-ÅÄ7ÜGª³¥KàìP± ߪAÉfqoÀ†7Ç›ãÍñG?dIb†ÿ–¨«¹}ø§’¿s‹õK”3ÛÉ_SWr#œ ŸZC¶rd°†œÙÌlˆ±)™£e±¡Eéo\  “§Že^°h*ôh [-ÀÏï7¢Ú¨ˆÊ¦#Fk´)²$RZmŸ­«‹,,Gs‚ð gƒ>ýᄵ…´É m¤äðè„Iœ“Ä9Y¦P¹õvLÓŒÌ1d ?ñrÃ>?$51üâÜÙbÚ錼¤ xýæ+¥cýa\Ã8Akëñ«òܲ6+Òâ0 ©×"bqq‰[·o³¶¶†‚ °Cƒ³³3îÝ»Çãí'Ì÷æéõæ©×"«Vròx)ŠsçÖ®Ü+E…ôvžïpxxD®4›ë\½z• lèqž…6Á"ÁvçI¿2±éI’ðòÕ+¤ç¡ÌÍÏcâɘ—{ûgg§±ó|‡ ð¹yóFÉ‚õjápÈÞÞ^©\iµZåpY¹µžÊ9RN­•Š< K…óëç¥ «xQDTo0ì€_æ{ l^½J®5‰ÑäIÊÑá!ÛO¶iwÚ,,.²°¸H½V#p–†Ahm¥:ss,.-±°´D½Ùdem éKÂzÍ)<3Çt¶{I€³‘t~îE-¢ÑNíi-Š!u¬ÖÉh—_üžû_ÝãþáØõŠz-¢×ëqóæ-Îúr¥˜ŸŸçúõë,tç­š"ÏKK¬ÁhÄ`<â¤Jo±G{®M½‘g9F+¤oÊ£Ñýý}NOOÙÚÚbaaF½'´[mV–—yñò~ø!™ÊYZ^¦ÓépçÎ[ôzóŽi= ’Z¥ oK)¹óö;Ôju‚ äу‡pï«û¤iÊææ&QQ[_C+]ZmwFž+7”SAÈÁáKúý~iõe‡šðêÕ>ss]6Ö×-Ãw2FJIžeäyJpÆóç;äYB¬®,Q‹‚’T#¥ Ù¨³¼¼ÄÑñ;;;üèG?$ â4Aå“dÂ(ã>§ggÔ æææHÒÄÖvJ1žÄœœñɧŸñÅ—÷N&x~@·Ù!S ç(–‰Z8IúÒ·Cm$¡X6½R(£u‘“¥¦ûo Hü $3à ôZæ}é’T`ÁmõÚßKÙ(æîùÁ“9×,‰s`ß7þ,©UaQÓ !@jší~è³óüÙ S¾Õj!$Œ'£™šÃC„Înľv§Ó ? !Œj\¹zV»ÃÁÁ>‡ÇÄI†ô<ü $B’8!ªE6«JB­9&{N–å~H§=Ç“GOœªËî»Rkñæ,@m=nflO ÖºvzÒ·Êja|Åw‘îšheŽ“‰FzéÙ ber¤çOUÉÂåË•µªT¸KÇ$ª J˯¼  À+I*Ò©¥”ë) ðU8;9cT 2u[Ñ[ª*v¶Åwõ<‰ô|·VxdyNžçŽT¡^1@v]†”Da@’ŽI¯×ask‘……9²ÿâKz½~ôs‚Z€í¸lllÐï÷i´šøA@†K%¦^,풘ؒ–„Ë»XŸL€Q©x¦Ë»óŸŸKÕ™²ˆ6N¥±•}Ú`B µÄRÆ]BJ"g88eo“v«ÆòÒ¢Ñhp÷î]~úÞ}æ:3ÅuÐŒ†ö÷÷xõê%£Ñ{÷î±¼´ˆç¹dIR13+µ(A³ŽÇc¶wwxüõ×ôûæçX_¿Šëy±½½Êsæ™éP <ò$e<áyu\Ë®,ØŽON8>9!NRÇuÑlÏ…$¦Ûïóàñc×ã£?d~v–$Ñ*ÃsíâþʪI &)žï1??Ç{÷ßñ],i±¿¿ÏÞî.µZ™¶¹ÎNÇØÕkÄãV½uå +KKlï̲¹µÅÉÉ I–E1Û;» $£qÈÌÌ A- Ùhš QË*”4‚V³EàÄQÌÎö6«KËÔj5ŽOŽéút»§ô‡4pýÆuVVV°,‹—/_òàÁWlmm²»»kÂS»wï²¼¼L«Õ"ŽË@Ëiõ¡zm.šÎùùÞÏmÁTq<ÇóHû}¢8¡(jµë7n°¸ºÊ{|ÀÁÁ>DÔ®_¿ÎúÕ«\»vz­†#Ì®"ðÇw©J–…(Z¼ÎP©ÖŒ<¯šµ ô$x}¢l0Í‹8ŽØÝÝáñ£Çüÿþ¯<ùú1áxD³VãÊê*ï¾û.kkWxñbƒãã#£´‘¿}ÇÁvòb3縵z€ï{ÅïË /lÊ2\×eÐëŽG¸ŽÍµ«ëtZmco–e\»zÕ¬»ŽË³ç/ØØ|…eYܼy“ÿò_þ/>øàgÌt:¤iZ]ŸR=eÛ¶QY¡ö ‹üò¿buy•ßþö·ñäéSÂ0äÊ•+ °CcÔl6‰¢¨Ú3æyNVTIb˜É¾ï37;ËÞÞ>OŸ<¡Õl€ÖøžGÇØ–±˜Žúlm¾âóÏ>% Çܹ}‹ù¹Œga×`ÌÚê2{{» ú=¶6_Q¯!ÍïÌsº½./7_Ò X[[ÃqlÇa4“ç9ûG|üûOyüô2A£…°lÆIf€ÈÊNÂÏj¡ª&¶”žçJdÁx<&IìªÌn¨€¸b¿j9.JQ€¶ÅëóžU ¯¯Éßm•¤ÅŸª:úÓßf Z¯×‰ã¸bq—àKé‡_Ú N7…E&‚ùþv»ÂØ\ !™›c~aËvèõúìíí“eŽcW*Ÿ8‰ ÐPÜ~ß÷ÍZ'X–M§3ý{ïðñï~G»ÑÀ’¦Ùšgé¥Å®!‹MëÓ~øiÀ,1½5óLig#¤ ‰ÒŠTb;Çu°l‰Ð•k%]ØžÏ~•Š‚)Bƒ±ãqP9ä™ 97YޱzʳóÙxZpQ‘¯5>JÕ)“˜„åš)¿ø-'D9(‚‘“j®-Õ%øarî}0<Ãó-Í€«×V™™­á¸–x˜f¹€ý½C†ÃÞÙˆÓ“iªp‡F= |ê —¹…õ†Kž'ô{lÛ&ŠDaNšhN‰ÂŒ$Ö¸n`Hj¡4˜››aia¹ÙTžÓ?ðjc‡íWŒÇ ž°;:e<ȈÇ9õ†ØtfÌÌ4i4šÂ¶m¢0' ãa8 Y“t’)EŽí£µæË/¿ G4›m?~‚íØø]dñõÕöö+¢(Æ’.µZÛÑ€QÀA"„Cšè"ôØ“û:ÎÕX¦–,-ºŠû+eéôLš)Tn¡•ÖØÒ#OãAB®3FaŽ$K¢I’e®#¸{÷~ð3<ÏåóÏ>#Žcîß¿Îz}6^¾¢Õžáî½ûô!^½]Ø+u°dÊLù<`ðú~dz¼N2õ%¦D»¶ós”žªƒÍóWö5dfZ™¬K¸H[£HP©b88c4êrÿîmæÚŽÅ ßç¬×éâù³äÊáh_Ìs9yþÊ:BL{—¨×ÞX¿îß+ĤrÕ嵩lÖt•W­Ëo[ o·ÇÛãß¶ÿ—8üéÞîøæ T °—>õÓ +Q6íôyœ£\LÓ„­®µB ÃÎ+àm?¦Ï_P†¬™æ³.¼¼ä9ž¯¹zm–¥åYv†ëhOOIãœV½n²´Ípœ±{Ðçàø„0ÎüFÅ ±m‡4É+«‚sžæÅZ9]tM+y¹pÆe#VQzŠKaŸ7—l¶>Ò®M_yICÅdAX„qÆ8ì#Pô‡1{§Ü¼v…¹N›$Npm :#Osl?ö, kll Q:‚ÌÁö¼0ú~¡'Óï£ >/ÏÔÄzJ Sx™WþÓæßUSY¿Þ 6V3F5 §l¸äÔ¾¦cÊs*m]Ê)¥óï­dU/»´¹2ÊŒ’…Ï…ño0·üà€bñí§ø]™o8Wˆÿsүŗ¨kMöÀ¥àòQù†!üm@Íy¦‘~#úÍ÷@ÿ½’B%Rd¸H!±¤4^ݪ\Ät ž~ ÌÑúüXœXMMÀ\qœÓ%ëqê™)‹ÞÊb*ðÑwŒUˆU„«¦yŽk»Ü»}—Ù¹yüzÓØr ˆ±—PØ–ah6Ƌزf:Ê&N+SÀæyn¼¯•"‰cÓáœSÍæ4MÙ;ØçÉÓ§ìîï!¥à'?y‡>ú€ZÝG© çµ:ãñˆož~ÍîÞ6ív›µµl[¢òÛrª@UY(éʦ¥.ÂWŽOx±±A÷ìŒF£É›7YX\"ŠBNNNȳ”v³ÁâÜ,íF¡Rhê ¤ÀI’Ð=ë³tLœ¦øµµFËq–ÂóM&ÅÖö.APgiiǶp,‰%Ǿ(ÂÖKV¦©$i’bIÉÂü×®\©¥¥°8::äáÃ<~ò˜N§Í­[·˜é´Å’´Œg´:o5‘›$k’$!MS^¾zÉææ&~-àÊ•+¬¯¯Ól6yôh—ã£#¤,--±´´4VË)¥ôô‚n÷ŒÞ`ÀY¯Òæ:µz~,±=:‚³n—'OŸây.*O¹}ëÍz“$ŽÐ*GOœ™Î©·¤´¨5–%s3³\Y]ãÞ»°»³ÃË—/ÙÝÝe{{›­­-ü `v~Ï÷YXX`fn×óhŒG¬]¹Â`8`gw—~¿Ïéé)Ýn—³³³saœžã"…iÂuOOÉ󜗜›‹™3³3¼÷Þ}nܾÅâòq’°¹¹É_~IžçÜ¿ŸåÅe66^²½½Í“'Oˆã˜““~þóŸóÎ;ï ¥¬Ⱥؔʎ€¸hw6 "¾iî,õ+¶c#-‹0ŠÈµ"Ís²¢ah96–mã(Åòê 'ÝSüZ@£Õdqq‘<7yRHÒ$©@± ›ïÓã¿lT™7S’À0~u‘‚°8;뱿·ÇÇøê«/ùüóÏF4&(üêÚkK‹ÌÏÎâyÃþ€F½F»Õäàè4Žq,«AÎLèh$$q„ãºø¾gTÁ*Ç÷\ÂѸRÇ&@üÞ;÷h¶šX–$Ï +; ÇØŽ‹ïûxžÇÑé ŽëpxxÈ¿þ뿲»»Ã¯~ùKÖW×X\\äúõë8ŽsnŽÓÅ{.×î4I¸sçAàóøñ#>ûì3=~ÌÙÙׯ_gnf–ù¹9c!#%ŽGZ4u<ßÅrìâõ¶c177K³Ñàå‹ þù7¿¡ÝnѨװ,Ép8 Mú½.IsýÚUîܹ͵kWñŠ,•Oáq’pýÚUvvwyùò%ü±ùÚ›ÄiÊÑÑ¿ûÝïˆã„«×®qûîê‡GGlmoóàÁv÷–Ëìü<–烴@J˜säa2Á„É](íÃJ&+Bà™+‹{U®åø+çS!-¤¥‘8ʰáã8ÆñœK>šŒ„¿øjªP,4›- ±f±ð}ÓD †…§½U°ò_ßÿÙ¶C³Ùdïà ¨_$óó •çÕ«W™½­e‘e)Q–š½¸0ßol‹IW÷t4ñ·û·X–4ªÏ«¬æªXÕ‚#´š¬ÿèׂ‘'5ˆªÆxZIœTÁÀ%J Œš!MP(2™{±ß8¯@(ƒ©«9°$*¿$t1–jZÇñ…=ŽdâO¯§” çÕØúR1Enš|¯QOL5p…Ä’VPL+@tqÿ ЧH³V;`yežVÛ7 Q&ÑX¤ h[²±³ÃÎöÇG}$u„°q‰í8´:.­fÀìl‹ZÍ'ÍBN9>îrxp„eÙä¹mJ}ÏÐæ•Æv$µšGP“,-β¸0‹ç9DaÊîÎ!/žoÑ;K°d­²”¶mðZ–$NbFÃ)<‡(¥™[ôA³ÙÄ÷‚ZF8V -Ç%ÏS¤2Ù;å|›$1F«îà8.ƒÁÛ)Õ?ív›ñجql,Q-K’$!¾ï$ žgŃe‘eª²áª-…½žãXØ–ÉS©QðÍØæeiZ€DÎúˆ$óÏÿüÏ þ÷ÿãÿduuËqÙÝû’~À»ïÿ¶æ&K…´°þšv">—Ï _ËQ˜š¨¬ˆ.Îóý/Ïs¨ªl1q8GšÒÚÀv “¹‚ ÞÖ*ãôôϵ¹reDZ!S<¾A÷lÀýþ Û­“kÛõQUcM\¤þÉúQo\}„ºTâé·`ÃÛãíñöøóe±ùöøq×®Ú¬‰Þ<¼Ì~ä\£ê;t/ §M3|—æ9Z{hS«ÔêJÑR3&ŒG)Ö2–4Ò³~£ãS¤å€Îˆ’ßqQ… 8ϳÊÓ³\¬M“ˆ*Sbºð/W=ñ†Õ° t?<°÷\D¼Î¸|ÓõÂËZç&/Â22Ìn¿‡ãØÜ¾~m‰BÖ)ÈsP&íiiVVçÙzu„Ô¹)NÿˆÝ´Oêwƒd9ˆÜü]( J/ù‹Lóéûá8Z寡r÷ý~?•'äôIiM^dH¬"ó¥HDø,Ú?Àð¦1ðZÃ^ˆo C}ó3ûm@ÆÛãÍ Îó>_,p«ñ9 2¼Lì¦ÇüD A•§RÙÓÓ^²ç¤êS¯“«!-À*IÝó‘"Á¶v6·Òâl0âæ­;ÌÍ̲²¼Œïz¨<ŲÌÏåy^5íÊ9,IÂ(&ŽMs? C3— b« où“î)g½Ï_¼àøø˜³³.®ãðÎÝ{|ø³ŸqûÖ-:ÍQ¡…Y6^mðèÉc‚7oš°cY„Xc2pòÌ€¶m,ôD‘£“¦)/^¼`gg!×®]ãÎí;ÆÚ'ŠF„ãf£ÁÍë7ñ]¿ ¥/›§¶%Q Â(¤ßïsvvF¯×Ãrm|ߟ4ËLÏ£Ùj1ùæÙ3šÍfÐx®ƒW(KÊæ’*<¯-Ë ãѸj•!ÇžgB¸—––ØØØàèèˆÝÝ]lÇawÅ¥%˜™›Å²m–V–IÒ”z­Îúú:I’pttÄÑÑý~Ÿ0  „aˆ-•t^¶Åõ\\\dýê:·ïÜæÞ½»ÔuÂ$fgg‡'Ož°··ÇÝ;wøè£X[Ycnnžz½Nžçlnn29>>f<óÎ;ï˜Ì×-ÈÕk™ ç-M¾}_2=¾Ó4Åv¤”x¾G·Ûevv¶zE¡´ô<•fH 3­6®´!W+¢,2~ßæZU –mUa¤¨Xçìí”2¬M­Š`í(ŠPJ3c>ùøž>yÂÇØÚÞd0Ôê\Y_ç'?y—…ÙYꞇRŠ0 £ ÅE’$Æ’Êu‰ã˜\)¥ äJ1ÛlâûÆzÂX†•Ñh4boo ˜_\`aaÁXe)Qáº.–í0éõz ‡Câ8FÚŽãàyý~ŸüÇäÊÊ*kkkœžžòÎ;ïP«Õ¨×ëæ>ÁµŽãTAуÁ€õõuóljÍ£GØÞÙ!InݺeÄE‚繄qˆïû$šòd×J³´´Ä;wÆñâÅ ‚ÀÇul’ÄØ¸Ìδ¹ví*~ðA ZÚÁ•õE¹^ÆIÂÕ«W9;ëñëúG¾üòK¶¶wPÀîî.q³´¸Ì»÷Þ1¶—½3¾øêKý5û‡ÔMÛ¯×È”±ÔÔ“tÜI®Ra±©J•š”E>Õxr¤Mæ8ÄYFše›liYUJêcY0ïÇAû>–¥•ŠÆ¾`]ø?KýS²Î…0ºApvvvnî(‡ƒÁ¹½nÕìŸÚGù¾‡ïôû}Ó€õ\ÖÖÖØÜÜäÑ£G|úé§ŒÇ#lÛ4išÐëu…mKÒ4ƶÛ8Åø´ó»÷ööŠÌžÇsMàsqnckv‘4`T úÍ6‘â’:ª¼“‹ûú¼°}Sşʦ¨´åšRÊÖºFÊó %­òÊo]ªóËÎozž¿ê\¦¦þÙJYiK„“~Ü[*„(¤&Û¥TS– F[#’™¹íNz=(ö4¶_ǶŽOôMôéI­%y66ÊÀ¦C{& Õv¨×=Æa^¯O¯?dû­õÑG\]¿‚í¸äYJZ¬a¥g»RÚ|ª×³G<ÏãÖ­[\¹r…›7or||ÌÇ98<äðøˆ—øAÀæÖ&Žç±ñrÏ÷i44šMסQ¯ã:³33t»]^†¡™ûsÃ*´¤M-¨1?7ÇÚêZH¼¼²ÌòÊ2Žc3 Çñ૯øúë¯Y˜ŸçÝwÞáέÛxžÏ½»ív›Z­ÆgŸ}F·Ûåã?&I޹sç·nÝ¢ÑhL=#ÁÅÜ•Ë ÒË˲ȕ¶m²4ãððÛ·oãº.áxLE4êutfÆcÙ¸¶c‚Ó¥EžeÆJ©R*LžY‚ eÁ/Œ DI9šŠWZª\3èõ‰bc'µ±±ÉãÇOøýï?awg›ápˆeI|/Àw}æh·Û4›MZµIV èz½N½^¯ÆÚx<®šB˜°ò41ùAa[¤”"ÓFU4›Æüéé)·ïšàuß7^ݣш$5^îJi†Ã!ã04Š–N‡0а=‹Z­ÆÏ~ö>{»»lmm±µµÅη‡‡Ü¿Ÿùùyš­B«)ÇuȲŒ(4Žïûܼy“F½N§Ýæ³Ï>ãää„Ç3èõY^Z¢Õl’¦ ãhLœ$ÄQlXÊ…ÅŒçºÔ˜mϰ²¼Âîî.ûäYŠm[ø¾G½°¸0ÏÌLÏué%¨;ÝL–R"-Éìì,WÖ×¹ÿ>_|ù/_m§)zƒ{÷îñ×ý¿`9'§]~ÿé'<~ò”ÁhdF‰eKz½3”Êñ½:‹‹ó|ñÅgüÃ?üa8FZ`Ûõš_ìƒ3Ï<«¾ãæ{ÛôgF9`KÒ,5öJ¶C®rTž€HŽs^ØMƒtRè̼U#%±JUöJJkÛ®æXY€¤J©K‰êuÄedqé†Û€ ¡…a´+=e7E–—5`_M¾m¼V$Ž\TçªT^Ü;óLY–]äÆYÆòª²ÎÒHe4uffÛ45ææfÈò„Á GšÄŒ]—,•„ã.ÛÛ»E B@½^§Õª17ß¡Õöi4]”ްmRfŒu †á8A)cÇ#Š|A³\(’4Bh6ffêܾs• 0ù ½³Ïvxöl‹(Ì+[¯rl–öOB›N)M¦K4ÎØßëšœL³²:K³Þ¤^â¹cÂQ‚Ò’ñx„ãZ•ET¹ÃT:'I"ÇÆ²¶c–ßÿ}>xL«Õæþý÷øû¿ÿ;ò`ss“Ï?ýŒí­-~ùË_’Æ ÷Þ¹‡ëºØ–ã:瀇s¶<—4¢Þ˜ÙR€2ãѨ ޽ˆ³³3NŽY]^¡Õj¡•¢æÔƒ­f À°*K Æ‹!îE3OQ_ÄÏ(^ò¡4²j´àQçš$Ixñì9/^lðÕƒG|õà1G‡ íV“Ng¦²Nð][ÚHaìG’Ô—óFÙ ÊTN8À÷}„”DIL¯ßãäôÔ„Á[6®ãM$s>'§]±m‹ÙΠضMÇÄq\]ï0 IÓ”q8Æq–VWØßßgÐïã¹.õZ»wïruí '''ó›ßü†½½=þóßü 7<— VCŠSYøÕPÄŒŸµµ5j¹ö=âùóçl¾zE¯ÛÅql\ÏE£ˆâ˜ÑpH8£sè¤QŒåûÔƒëkk¬./Ó=;Å*-]Ðx¾‹Ð†ñï{Þ·®Cåør]—Û·o“kíúlïìqppHš¦4›mâ4¥wrÊç_}ÅöÎÂv¨5[ÄiF’)ŽŽOIs¶ç•2ª|¦KÅZOÙ~š=±%%ڲЅõžeY¦©œgdyn”aYv>G¤²àœØì¨ªe <×!ËjuŸë7V™_ –Âqmzg!¯^ðì›-ý”F£U©6&êŒâzI]øÝv<§G#vü¤65BK¤°p‰¶ÉÀ*”AåEfγ{vZÙ*Y–àù‹oø—ùgŽOޏ~í§§'&_$ɪ5©TÙ…aTímKÈXfa¬…±P¹BH£ËªH1yQï9VšÜ-¡q\Ç«c¹5úãËv ‰QN Ë< éžîÐïPó-õÏuxðð!£qÈOî¿ÏÊÊ2i¦ Gl¼Üâî½û¬¬\#ÏKr`"5ç¥ÌÌ©µœn“WÊo«q^Ït¸¼æLGÆU`Æ…ÐôjO¡¢ø0¯³·óœ$êq÷ö¢Ù¨á8Ú;`{g—™Å«xAƒY5÷Å¿³NœKH4ïMðš•Ú[°áíñöx{¼=þÒ7ìß³9ù]~íoz™Š…ÿ­ ÖÄÖHi ‰¤D2Dza¦Sñ!ËB㜥 žë“%’8Nô&˜³P,8¶Íõk×™››gowÞÙ*Ï £i” b%7uÚ)‘j“}i™£§ìþ Mç‹«°@çf6Y–3ŽŠóPÆ‚@ÚņC‚Î  ߇h @+¤øÃ|”ÄùNýTöF‰Ç܈iúGQœK~–Âl¨¦l^$ßž/ðGíý^ª¦ž¢ ±3ö±¥)Ákð¿=þ”sØùÍûÅ<‡ó󔸴ø.Pãò9Sÿøç·øÈ³œá0äŸþéŸètæŒ_r’N½¯ y8l–¾uª‘%ŠŸÍµFÏ–”d*Ÿ€ …¯ri-TÅLÛ`ز¶c‚¥´ˆ“”8Šxúä1[[›|õ ÃÜÂËËË´[­Š­, «¢04àÃp<¢×ï1ˆ£˜n·Ë`8`8Å1išâùíV›»wîðá‡róÚuóZ€ÊM8ì«W¯øøÓß³¿¿O«ÕâÞ½{¦Q\xSO[2äZ!¤iŠ¥ «qïðqx|ÌÊÊ ·oßfmeǶQyÎQ·Ë7ß|C’$\]_gyyÙX å a™k „,®«±¯IUN4D ð|aÛi¡ Ok) ã„\CPoÐÊÑhÈÙ`Àï?ýŒ( ùÅGrëæ ÃÂWª,‹A‘ƒea]’Yç9a¬B‹õõuã†t»]´ÖÒë÷é÷ûìííÑô‰â˜(Ž•ƒÊhÖ,-,Òn·™››Ãu]f:ü F«Õfff†N§Ãx<®ÖB­5ãñ˜÷1ß|óÏuùÕ/~ÁÏ?ú9A òß÷‰"ÓxXYZ¢Õh0;Óáùóçüþ“OÙÞÚ&MR¾yú ¿úÕ¯¸~ýºQN,/Ð&Ï_ŠÏ3o/Ï1MS­ûžGŒF£Ê% Cú½>peYFœÿô,ËLƒ{Š‘øšÍ€4Y hUää&¡hÎåyŽEþI’Ò;3öTß<{Ê'ŸüžÏ7ØÜÚa0 ™™aq~–+««,//spxÄñé)y–cI y•+¦ù캷v IDAT.AP«ÕŒ%ÒxLŽÆ–’0Š8ëõ8>>&ðšõ&¶e¼ÙmÇfoÑhL–+V×Öð|ŸÀó±mÛv…-‹QlÃãñ˜Z­ÆÜì,âáÇ1yžsu}•嬮®²¹¹É‹/øÝï~ÇÁá!÷Þ}‡{÷îqïÞ½Ê*˲ml'Ç’fÝÍÒ”v«Í‡|ÀÚê*+ËËìîìðâÅsüull×"ËrÒ,7Mt¡(<×F HâÛ²©žk!‹pܬ`Ý ô…|ÖdY~.GHkmT·Ê4HïܹK»3Ëh±¹µÍY·‹ÒšÏ>ÿ‚“Ó.›;;äh‚FÛqÇ1½Þ€áh ¢ÙnaÙ–í"O]†žM,<§ÎKNåô”¬à IcUø¤›qjšƒy:Èi{)Â’ÆŽ'‰É‹°VÛçÀKñ=÷Nÿ~kŸÉ}µ,‹N§CÇçæÇq¨Õj„axéz[þ»¼Ö333t»§&‹À’ø¾ËÎî&¶ µºËÁñ¥%žï)ç9´[uÇfv¡a€Ã$-XÝŠñ84–†‰&ÍR,ÏÁX6Ñ86v‰JK…(,º°ÿ”¶„̼7Dz)·û¥…ßÄÿÝtý-Ë2€e±Å•¶eˆi E^ކ ¤E‘ù ^ŸoÏ]¢©í²RÊŒmEaQ67ED,É [›‹Í×K 6vU¦.…ÓXÁΞxͽBJp»ÈßHȲÌxÚ£ðÁó<¤eÎw<Q+lÝ£!פ©*TD’éòþG‹¸AQ"Ñ¢ ‘B¢Šsãœ@£¸æc¼©  pÿ|=p™’aú8?ïN@¯…P—çS¼¦ñ~H Oév÷AŬ./ µ&Žb>ÿìsÂ0b­9‹. cÿ¨ ëÔ²LúKÒâÒÈê=ˆ©§z2ˆ |x 6¼=Þo·ÇÛãèÀ·6Ž•2ZDé¼ Ë™›¡3ÓDiÂ(4äI‚¥eåŽcTš#-› ³Á²m‡z½ÁáÁ!§Ç'diVXŠÈªUòMQ.†!_^qé©¿þ0eÃ=$K°D)Pâ(!I"¥!W9¶TEƒB1/þouïÿ#(xôzöÀtƒžKÃÖ/~þ]ÓŒÅ×ÏYÿhze9þ„0M!ß7¡ÑhˆÂ¿TNq¾V~¥;/f¾L«´J€¡òc/ŸY“C‰-¤a.)]5Ou‰ ʲXÒS3žž³*Ç’6 UN» ŸQÒïwÙ?Ü£}8Ëó/i·;4 ‚ 0wiBš›t00é¨<'.šm×1 €mQ«×¹qó?ýéOY\Z¢V¯W÷ W9»»»<}ú”ÝÝ]X[Yean¤ KÒsÕ˜©ç ÃQX‚(MØ=Øãéógìì3??Ïúµ«¬¬¬P t®P¹¢wvF8ÓétX]YÁ÷\„z} ”öGÝ.[ÛÛô‡C°$õV“T)”eaÙö„y†@¡ˆâÔä,tfÈÒ)`…à'ï¼K§Ý†âuóÌxbg…o³Ùàöí[´ÛF=ðüÅÛÛÛìïïsvvÆ|`l{Æc®^½Š°¤iœhýƒæ]„K)i5š ßë1 U(õ¸°SÊòÜd X…Z¡ ä¾IÝV*Œ•’ùÏ÷HâÈdm8AÅôÎú¼|ùŠ'OžòäÉ×lno±»³G’d ŒeÏ­›·XY^¤^¯q||„ʳ*ûƒÂ—M0š#´Û:33ììì ”bqy‰z½Žã{ŒÇ#T–Ñ™›£QØ-eYFFqÖ;£ÕjqíúuVW×Ò" #Ò4C^ì¥öÑñ1Ãá¥AÐl6ÙßÛ#IlÛf<Sjø¾ÏÚÚÇÇÇœœœðÙçŸÑí™&®€ë7n›$­lÀ´ÊI ;Z­Æòò²QP,,°¸0ÏöÎRB’ë’““SŽŽŽ–"ËBÒ,Äw=,ÇFëŒ$ÍA@šDÕs# fºU„0—÷4MÓŠm[î ,Ë"K‹ï‘f?ÕjµhÍÌb¹.OŸ<áÙóç|óì¹Éê‚N§C¦5©Ê©ÕêE¬¬@¶,ͱ¤ƒ´m£ -¬"ÎßÂn³fÒHD<)Í|-i’bçv‘QVÎå $±T`[e£UJ–¤…ï¿Â–²ΩVßHÐÿ1¢¤KkªF£Áþþ~qïE¥±m›ãããoe×—ãÃó\º›],[r||ÈßýÝÿC”„d*¥Þpð|Ûh‘â¸6aÒ'Œs\×£V¯Ñ™kÔ´Öô½"ÈÜ„€ƒ@b“¥6ÒÕØÒ#Mé $/Úp%{ßu"¥°çµ½ŽÀX¡–óY f•ÖŒv¡˜Ç…­y>lËä9dÊÌÙŠ‹ëN™5UEMåCdE~“Ä(;'×êÃôsÕT–K÷aÓZùõrͳ-Îí›$úzÉwA+òL‘ç)I24íö\‘c3è8::)'`[¾Wg4Œê±èQJáû6ï¼{“ÎLÇq‰¢”0Lèž!dÎÒR@JÎÉq“ãý^D®Ì>À²œs„¥4ynŠ«k‹ÌÍ·°e ’DÐëõÏp\ :%M£â¾›ÚV Ò>W¯šy‹* [JM’†äY“,´‹Ö6¶m2_l›b6`ƒÉ ɪ14;;C¯×/Ô š½½]„°øû¿ÿ;jµ:õF•å•*‹I)E½^/ž9¥ÄPÅø³ÈsE§3Kr¡tZú$Ó¶ËB(,a€S]b£ú€Le®(\“û 2<7`së%Rj––æQ*ccã[[[ÌÏÏsãÆ Ò,!Ésvv÷¨7š¬_¿Iª$9Z[h,–±¾R†4¢§}„ #¥Uqî“ÿ3c¼¬'cüòÌ©K,P‹ç»ç^!”.TES^äh!eL<îqt°E§Õ`qn”™/6_½BJ‡……uâX¢]0(†Å~•Ë›#oÌÆúd?Äy@¡X¸ŠuZ½^£kó[°áíñöx{¼=Þß¹ÈèB›+Mš™`hi‹j‘©×|\T#…6 {.8H,”„aŒE(ž,›Û’½½}FÃÃáhŠ(ÙºÜ_`ª¿¥ñ[áÏ_p™Fke[$J†£ Ý’5Q5ëMCÂ4%üÀÂ,° ÏSs´ü™ ÅçúõQT£u“M„>ï 9Ýà, @cI1ñÄþS5½Ï5êDÉè6‹6 óM–—'oršÅÿ1*îGÀCÙ૚2?r“ûo ¾Ji#,‹$‰Èóœ °qlϰí‚•U0£¿õ:\ŠÓ,B.W Qª¢tåå^1^á\xñô­Â KŸg•#ß±RÊ’¸ŽE’™âûøäÅ)ÖþAålÛ6Y–˜•œ<ÏÈ/(l×ÞAÁ–~ïþ}~þáG,Î/Ði·QYŽÂØìîìðÕW_ñbcƒ¹ÙYÞùÉ»,/.Ö„£° ’f^fʸ҆qÂñé /77yþrfmý ëë븮k£“„ÞÙÛ[[ ËK‹¦a^tƒ±m)ü­•†(I9<<âåæ&Ý~¯ÞDy¤±ZÒ…ß„†‰—f9J*ê­Žô{]º½¾~B0â£>â§ï½G³^+ÂpM eº™0ý|\´˜˜þ»´ÉóßõX\X`nv–[7o’+ãlš´«Oöï6 9oQ4xL`¯Çp8äÙ³ç|òÉ'äYÊOß{ÿíoþ†Õå ÃÞ £4ËplÇžXZ--.Òl4˜™™amí _}õ€'OŸòrcƒƒý}ž?{Æ_ýâüìg?caq¥BåPÚ™|[(ôe–RJ?`4Q¯Õ«FEš¦`Û£ÙøE«*á¢ÙôïÈËðFEÖÅqbõ¹¢ßïÓ?ëqzzÊÃyøð1OžWׯòÿ³÷fO’ùßÇÝãʳîîª>n Ç`8C.)Û¥­Ù>­Lû “ždú3VˆLú3ô¼Z#wM2iI9ÎâìFßU]÷•YyÅåîzpÈÌêj 1ÀÌ£³ ÕyFxüü{*g9iê×utÎÍS–%i–Ñjµ]ñs³I£Ñ ¸8ªn§ƒŽt}nT¯'MSNOOù»¿ÿ{¶÷vù³?û3nÞ¼ÉåË—i4›Ø²¤Ýnƒ±„žD ‚€µÕ;mÖ/¯ñgþ§LÒy‘¡uÉ?üò8=9"ÑeîhàráÎÎÎfŠ‚mMf¦iú ð7U…ë|‚€Á`Pw:iíº~º mÂ8@‚(–Ị$œ;o<™0è,´Iš1ÍvA”øN•¢ ,5º„,õë³Qä™q„à(Å®ÔU©À­CROrB®ËcC3 ð~/AÐl4È=ÉWGHUŽaëÙ|6vq^ˆ!ü!]_‚uÑ­ZkˆZ~Úúšš^£úÂïl®‡y7ÃìyY¹ê˜áb”¤ q¢Uw ]"0„äÒ¥K¬¬¬!»;{¤iÆd”Õqi4e1®A_°4[I£Íõ—XßXEJÁñQÍû ‡#ŒÍét,tKúé)'Œ†9Z[´k¤ßã85¹– ‰:ëë—Y^î'm&hqrÒãÅ‹—h£=§í>…¢(_q«»ïÔLÉc°Æ‰%i4bŠÌ²?8%/$ãINšåÎ}Xuix‚ÙZí#žÜ,WÝ¥ÞA¡ÀJ†ÃišrãÆM.]ºT»G†Ã/ ÓN¾ŠœÇu µZ]Q¡ªóÄ‘EUþ€Õš—ÐHš´›-Œ6 -JJL- «œÿ–@ NNŽùòóÏY]Yäç?û¥ ×ëqxxćÊÆ•+ÄIÂÖË]>ü†å•5–W×Ñ6À>-À­¿~/ëSæ] SQÚìϪX k¦2žº#pŽL›möÜü^O|•Smn/.…6Îáä8h‹)sö6ɲ3Þ»½Î¥µIÌãÏyúô A“4Ñ6D8’D¿Ÿ¿]]Ýì½î<éP;üÚ+ß:Þo·ÇÛãüñ#lÄtX^™o,Ú@© a \·…n‡0´HQ Hy©H’%”ˆ)µà´?D éb”¬³6J©89í1™¤³hÙ´„ï5¶…ïóNíïmÃ5c¶¢Þ™º‚m‹$FZƒD8K´Íʆš(Ò ¡, ¤~œ {³Á~ÿÏEJéò%}n©ôC£ý=äFZk}ñªåÒ¥K,¯,cËáÜWà6óyú¿ïkU|Ÿˆ–ó{ú^¾cVýÁïëM?·‹ÊÝ¿×+¶®àÍ)coU×u®pÕr>Nì•Gz Ó"f£0ªÛ¥jÔ}ÖÖ ±ÉŸÃ”ßqxeœË¦·s¾¥Fœ0§.O€¶–²,uä­7é¦ÚJÏ’|Ù¥¡Ûépãúu>ùècõK—h& W„œõÙßÛåoþæo8:>aeu•»÷¸Ö¢‹ÒuÒÌ„Ú á”Ra0O8éõøêÁC¶^n¹ûNÒl¶h¶Z„aè\tEÉÁÁ>ý³Ýn‡V«IHÜãè¢¤Ú kãb‹öŽŽy±¹ÅîÁ*Š‘Q„b¦‡cºw³Xl]UƒŠ’ÒZ¢¤É‚R¤£1Ÿ>c8NIóŒîÞe±Û¥Õˆ ¤ ¯v]Tš\]3¬TU¸'=ˆD1˜¤)RJ_Îhë˜›Š˜2~C¬µÁjíâ\ˆ^¯Ç£Gßðå—_!·oÝâ“>f±Ó¥‘$NÙ/%Q¡Ëq.ò¹×îÊ(á“O>¡Õj³¼¼ÌgŸ}Æp8ä믿æôô”ím>úøcîpŸËëë4›Í9a–°>OÀœ'¥B¥)Öò,ÃhÍÙdÂ$MÑÆP”ÓLüÙ´„‹HcŒ»¶}–ºöŽc ½ãö¶wøê‹/yúô)=æä¤Çéi¤‘pýÆM’¸Á`8 Í2ší&íN‹iª©¤Õê°´¸BQÊÒ*·Ví߇nM2ЈR‘Sš(I|÷K\˜™x!!\'…) Ê"ãô䈵Åׯ®3èŸòüÙSÂ0dcã ­V›0Œ9>>åù‹MÞ»÷)R5H3‹ÂJ´q1}ÎAàâ”,S࿺¾Ì9Œ`ÚÑ0ïg{^ýçyq„˜y¬é(nÅìL¯0&@[ ”^D$(ŠœÉ¤°®]Ye±Û¤,2vwwØ?8 µt¸ÑÅ#eˆ’@…ÌÞÄk‡×Æl'~òú»‡óskƒxK6¼=Þo·ÇäñÝÑàâŸ}[gC­Ìµ¦Î t‘ž–ÀƒaI(á‰0´‘DqË[-ÃIŠ¶Ò«FoEé°*"d<ûÚ,{îVú}€Ç¹ZÛïùôçï÷î3V^±ä6­Æ”\ï…uH)\v£ ŒŸm\·€8¿ßçܵ‚ÂEb ýÈ»ÙzpšèÄ›PV¹!·Ô%RŠ ôVÿ¯Óßðm}.oBŠü˜¯ñÛˆ‚‹:.—fA„‹HÖWã~ðVÚºó¼,KºÝöT9>ûš¾åó•B¼Rp^%—9ÍÕ«×¢ŽL:®Ì=Joå­íÖNYQ¹¨D]d]=VY” §€ºt …ð >%¤Š²upF\Z[ã“>æÆµkÜzç]ÖVV‰Â« Úhùì³Ïxúô £ñˆë×opïÞ]¢8Âhí ÷=V‘ÕûÌó‚¼,8<9æáãÇ<}öœÓ^$Žétº¬­®…¡{aކ ‡¬µ\¿~õK—‰ƒŒuQ•Ío€²¼àøø„ã“c‚0DÆ1q£1ŸëïwˆÖ¸ ñî>¬Å”Õ÷f ¢ˆ0(2—žùr ]–Œîß½ÃÝ÷ßsëØ牘!7f ”gÿ˜R»ç‚0NêM«±NMï70ŽDgÈá aw7Ærxxăøü‹ÏÙÛÝá§?ý)Üÿ€wßy‡( )ó;@'Öº±e1½#>fʹ}š¨»ׯ_gccƒÇóÕW_±»»Ë`0àÙ³g<ñœ{÷ï³¾¾ÎG}ôFàâ,ÑP¹"*@¹"TŒ1¤iJQN•k4Ƨˆõ×±òëÄ, #¥œìyl2™e<`ëù v¶^òð뜜œ0ŽH-–WVRr÷Þ=”TâöíÛ$„Ò;O„¤iJš¦ÄqL¯×'Šz½ž¥:6®l8²ÁG&¥©+ÎÒ”$ŽkgÀòò2v‡I–2N'\¿qƒv·ËóÏÙÚÚbëÅ&ÿâOþ”wn\g}m"ÏÆx²(é/·­ JS†ôíV« ׯ^›®ávºîŠ©î)ýcV`é9çÏÔ–IMUùò'§§|õà!Ÿõ5[;{œœö‚€V§CGôÏΈM@Ç lž»âx * ,9"«êYp¡¬‰Wì,±Í\‘[å»Weé€ÌYž#=1†(øòzW¬”rZga eL˜Åèe{瀳Ám$JÆzr…©ð©rÎ(—«”wXZBa­&ÍJ&ãm Ú +üÛÿö¿c4ðŸÿó_1öI’ГD%q,QJÔQ˜R*¤T(¥È²”0Œ0FÅ!X·7ôè1kkëÄQ“á`â@]‚0sÀzµŽ¹(Æ”², "'㈢)ƒ:Ôõ34ÈË>“ÉfsÁÏ:rFh3uÊ)¤BÛ‚‡NÆÜý“?¦Ój¡ËŒ_üâDQÄŸüÉŸ‚¼(yøÍ#&“”[·Þ# ˜ ‰&v}’èsבýî=ç9¸áÜÎbÎv~O2%Äk~>ÿA© RyÁQàȆÏ?ûGÛܾõ$–š0 ùô_Ü£ÝYdbJQ~+îó]{¿ïú¯ö{ì¨ÅT”S}€oɆ·ÇÛãíñ{Ìá(ý°µ"å ³ÈŬÂO¼þ&ißð¹°«f†MSgAW BXŸY)j$“t„¶^Ñ€DH§øñƵåÌãžÏ¿opc¼¬fVÙ\Ù)¿ßFé‡VÌÎ~o`j°r¶hì< †!B”ÄqL0£Øù!çÌqî‰0¨&„˜ª¦§@ΰ®,ÞUåù(%oˆµsCÜ< ‹­ß®‰ÿüÈÓW3×ÏG­¼n]{Óaû»ŽóÅ?öuõm¯ûb¯™‰5ð× =×]a§„eÖýàòqxð|zíXœ2¹–ºÐ„¡¢,J¢0 Žb:íW®\áîûïsÿî=.­®Ñj6‰T@‘å,ƒÁ€ÇOó𛇠†CÞ»}›;ï½ÏB×u gP¯'Â3uO†6%ƒáGóäù3F“‰‹£Ði·1Z»´4érÛ_îlÓ;ë³véëëë$QìÖÒøØ7·ž,HÉx’rp|Ä`8„(üÖs©Š¦@Ì*Öl­&«6à®3üm> IDAT ÛE®lmm1:ësÖ;¥Ì3n^¿ÊB»ðÑs`é9€æ¼ n3gf F먖éßuÑ ¢V–)Ú8Õ{lm½äåËmþñ׿æðð€•å%Þ{ï=®\½Bäïv»vÒT±8¡¹Òþ¾žç9¢(jµíêê*ggg|øá‡t»]’$á‹/¾ààà€/¿ü’“Þ)›[[Ü»w^¯ÇÆÆøžÍ]×3eÒç¯ùê¹´ÖuAlU®í [sz½yž£µ& C”t1ú\Iµ”’²p.º¬÷Í­-ž>}Êææ&»;;¼xò”ÉhŒ‚•åe’F k©KÏÛͦ[‚)¦Q/uÿŠ¿;é²Äê¡Ä\~sE|(å@ÔÓ~ÍÍM_^{J’$4 Í“tB¿ßgsk“õuVWW¹vý:eQ„“IÊpà ¬Á}ßFƒÓ^Ÿ§OŸÒn·Y\^¢Ûí†a]~zzÂh4¢,Ëú\Ân߸~/¾ú’Ó^õ+WÐF3F|ñŤã ?ùø#>ùðC:]ZIùNlå"|€7ư¸¸È‡~ˆDxÅ­x-ù\9„/ðž-`¶3êo<ðY”„΋’“^GOžñõ7xðø ¹64»:ŠÇ±!QJ4ä¥+€µÊBSjMÒH'Œ'T`¥ ¬ãËf¥µ0ÇL'H!À*´ åÏÅê5TØlWKµ&TÓªñJØ$IÈŒ¦Ìr7‡iƒº,}Ž¿üƒŒ1DaÄ•+WØÚÚªÉ!QÑjµØÞÞž[g×ÈŠPJ±²²ÂöÎYn@D,,®‘9ÃÑÓÓ¬öñ¥ÆÅ›ø5§(r_ÀÒêtG¤#W¤…!ýaF?ó½1RPÁ)A`¬A*EÇDaB––.~F¸?a#tQY¢!1º$Tný*Ë H#ü½ß7I«é A^zF ¢$F[=íub*lø®Y©*ОíÁ¨Ö)ç’3=pÓ= 9Œë7³.†é½²ŠE;¿ŸŸ£$QÒ]h‘¦†¬ —Ò;·F£1ºtßY–äy‰R¡¡ó„u. åæų§›ìí9bæäøŒÉ¸ Z`Cò¼tk¡ž8’Éjç@ñô5[S»j´Ö¡ÁˆŒáø˜VÑ"ŸŒSv÷ŽØÚÚCk…1îsti›bnƒèþU{w‡ª"î3P`Y^2ŒYè®òÓŸýúçÿ’µK—CÿlÈW_}ÉéÉ!‚k Èadr‚ ¤Ñˆ ÃÄ“¶©$ÖÇ5i­AD4’yf ¤â›ï±·¿ÃiïF#ò"C÷ªŒ1\¹r•õõË|ùÕçt:M,…#“KÍÆÆe†Ã!V;Ïx<ÆXK«Õ"Ïݽ²žŸ0þ^É4êÒGwmnnRjÍý>@ÉÙ`ÈÉÉ)qœ°ºº Àd’òòå6ív‡¥¥eߟa(q‚®ûÆøŽ8s®¤yÚ§öšrç9‡å|ËÜüýg6&ö‚²ô ÄSîGÞ}ƒÂØ’<+8;;#ÏsÚ-É|à„iƣǼ£W‰@‚¯ˆ)_Ù÷~€³ûûïÕ¤tŽ–z–o o·ÇÛãÿ‡ÄÃïpüñžðµ ™}µ¼è¢2°ó7Ñ‹T˯S2W‘ ÆPW:ÂC)I:õ« Õ»REQäUƒ)išˆ0ÖÅAà ].¢ß€Ïd¼ÿ˜àÝôÆÿæLƒ˜9y¾/`)Îݳʆ¢Ô€ðyÞÊyG«ßNE!Q4áähÈR'¹x3þíù÷ó ©4}ƒˆ×w|V=ë¿—B`|¡¤@xÕ³qD‘ÏÆ5°v¼¾в,s¿#¤Å`8äåË—<}ú”²õò%ë—/ñGôG\½z•N»C–¹òFåɵÀŸWJ© (ÍÔà:´ËžÏSB°´°ÈúÏ/³~ù2W7®ð«ü;»»ñm¾à«/¿àÞ½{|ôÑG|üñÇ\½z•v§ãÕý²§ªó²" ªÌû(Š\—„Õ­u‘Yš1 H')y–“ûî…Ú©âï.mê8è÷ÏŽF|öÅç|ñÅìîîºîý$Ž',..r÷Þ}â¤ÉÉÉ ƒÁ€F£Aœ4h4 Fc&iFYjŠ[|k†£‘ë•h$ºó*ò¡Ûí3 9;pvvÆBw……‚  ßïóìÙ3šÍ&|ð×®^s׿”diF–¦dYæQåvv¶ Îhwº,/.ÑL”„¢Ýv]½^~¿ÇÂB×Ýç… Ùh°²¼ÌêÊ*'ýÏŸ?œã"I¬±lnmrzrB:žpçý÷Y]Z¦™4jFBG¬iß½ „‹¥qÀ ‹›2¶Š½’;Ó5é3ä]±§­g\Ã,8éþž” £5ã‰#¡Žyðèÿõ‹/ØÞ?@#h/.' â8ÁZKQ¾+Æ ñxâ;[œÕÆ8åxE@XË8ÐRåAX1¹fgf,žÉéôí×X·žHÂ(ª#«˜îÎMY¯á‰õ ÷NÃ(vd°iæW4Q¯Vˆ:~ç·°ýø½Ýç-•# "Š"ÎÎÎæÈ¨Ê4™L.ìh™}¬0 ‚€^¯Ö†8iòî­÷¸~ãy‘ó×ý_8:اÌr–X]]a{g›R»h„deu•n·Ë‘>d” eÈ¿úóÉ?üý/‡DJa3(Ðää)(M”‚(IܽHºø“¤A W—ÈÒ ù$e]ׇubluÿr³v³Õday‘,Ë8:8DE® ¢8v„›˜&ÓÏGIZw8V„Ž.µ/ñU$Iƒ0I'“2ÁÔJq[o¬E-¨O»êº8÷S÷ê¼ÈZ‹TÒÇV…så»Ó~8‹Õ–2/)ŠÒ÷ˆº§ÁÅLŠd•ÒÇùç„›Œ5㑦wj¸Ï¡}¬sth²¼ ,gp–¹XE!pQUZí&ÍVL^¤ôÏ ÒlÌÙÙ„ã£>£aAY¸Bek/"y„þ«½µ¨Ë¸…”H$Ea)JËÆ•ü»÷?ò¯þâßÐì,1É\ÿÍÿ?üO¬ÿõáÿýþov¶_ D@«Õeey‰Éd@¿JœH)‰Öåt ô{í›7ßEÉ„,3dYA§»ìc~,ýþ Aèb8•AÄÕ«ïÐi·IÓœ~@£¡TD»Õ% ¤È pŽY­-ÖºžÆîÂ2aÜtÅÍþñ±ÒßÑ ÁþÁ'G4â«W6ˆ¢¿ýÅ/˜L&üùó3Úí6ZFã”§Ï^°¸¼ÆÒÊ% `…ÖßW…TÎMb|äϹ~[·&ÎÆÎDÉ9ÂáU™øNÜgÖUá\¢º>/Çg ú§Ùkï]cyi![/_rt|B»»ÄÊÚ:REØB‚Xù׺˜Î¨?Ú¾·Þ>ˆ¹¸?1m`©¯Yþ¥½%Þo·Ç8ôOã ÏÞoÄýðê\Ö*g_ˆY­¿½!?¸Š©åû~•“¢*'ÕµÒÓ Ja h6"¤L)‹ q¨ÈóÌY5£UºÏÙ‹ê毵õ7ZëÊŽpJìl!“‹ðxSÆ«ï^üæçìLžúo Ú:zHø¬Ì¼Ð¤YŽ Q…!…ƺÀÐHB‚¯Ê±¯f}Ûo'ÄÜŽàÕŠ¶:g±.m˜Àý†¸*mŒbŸ )ì”$ð ä²,*©7+ð/˜U~ø‘NLA´zÄ«دÎJöp~–´¨þ¾œqL©ýµ2M+µ\è{FÿdÖ+ñÏŒ¯‹&ú]¿ÿó9õ¿•OI¼Ž0³ßú;ßõy4 þÓú?Ç$VéQÒ=η<曾ÿ¹Ïlæñ]¹¬S–eéìJùuÁÌ(Û}ü‚'÷j™ ÈóÌÅ%Œïn°Xbè&QÄâB—N§ÍÆú%Ö×Ö¸ýî-VWWé´Û´Mw½+·™Ü?<`ww—¾agw¥}üï\¿ÁòÂ"yš¹ˆ¢ïpEÔ½ã4g÷à‡ßâá×_' TÐé.EyšqtzÊßüý/É ÍÇ}Œ ,.ž&ŽbJ«±FD@èÒ„®ÄeV»8M+¤Š©„ÖϺ>LE°;ØY„qe˃ñ„ÓÓÿð«äë‡ßpØ;%H:KË„4–ÈRGĉ0ARW îGéPaè"®Œ±4®+`4;"E*"! ¤˜»îª×^¹®„Ÿ§¤Xåf¤J-^ÍLè´®ÃAh‚ÀÅiZ\&iY)ˆP¡!"À‰N3ŠÒÖâ@T%´v. äŸc9ôìQ¹÷â8¦,KGÞ1WK’Äõ¤éÜ=}ê¼Æ}Æqìâò”Rkºq̧Ÿ~Ê_üÅ_°õò%_|öû;;„2`¡Ýfuy‰Ï_¥9RAEÎé8Ÿ5†µ•U|õ5¶Ôtš-k1¶Ä? Ma2ŠÒ‘[v…" CÚí& Km„„£ƒ#¤´ Cš{€ñ=w×1S C)42’h¡±Ò‚/ë5ÞÍX©]?ž¨î.Î߯â£ýy¨€F£I#qÎ „ÎU3S‰w6Ìö©Ô=˜‰>{u2å Ýk•2ðq?º´no(ÜZ –%ëWÞåÆ;÷˜ŒÆ˜2DŠ„<Óı¤ÓYA›€Ñ¨¤Ès´6>3¢ÔŠFk…(YÀbÐÆ­ùxQˆ- LVp°»ÍþÎwo_åê•K„qÈËmÆ“ ÷?ø€N§Mši¶¶¶Ù;8ágúh"¬Œ0;Ï„ß×N×å"RL÷ÅÆºÙxº öäG-âœHÏ!B ¬øÎÙ}ê ©ð Q§R¸.-[ÐŒ,£“mòá!Ÿ|ø¯i7D*àùæ&»‡Ç¼óÞ‡r=í½V"À×?3#ââ"âãUN|çîóÕT‰Ù9M̤ THƒ¬;Çì[²áíñöx{üî°²ïÂú¾»¤æ‡QßÛïñb¾Òý#vöÛ>àZhrn›1ÓNÄ|^÷E à¼2~6ƒ¯@›eé]©W+¤tEi®ÔÎÎÏÕ¦J§œ¬JFm­j›¾®3ž¤Þ ~ÏIü†çéE'•”Ê 3•tVàÉé ¹ü`ìToî×ZÍÄ‘ uôôŒzÀVÊã7y]¢Þ $•6Wà%a§î¢¹DµÇ§ªÏ’JLÁ}ð¯þ0fšLUÿ1&äÜÆWÌ?ðÖíYÌiL˜­³žì2ÓØg%%Æ8†JÔ`ªr‡0Þ³1]€*Õom©û±»ì«Y ³1Roú\ÖZþŽÙµê7镸>äKUÄ(¥"CÒ,›ŸË)ž~mó*æÙ8˜W¾›©\nÝæÕtÓx ¯öV²îÉÉ<¸’e™;·kPA:Ð0 ]©1Ó’kc,Ò Jmë¥ë÷ C’$\º´ÆÚò2·o½Ëêê ë—Yh·é¶Û$IBžeŒFC¬µœöz<~ò˜çOŸqrzж†Ëëܼq“;ï¿B’¦)e^Ô©r¸•¢Ô.w¿?8ãÙæ ^îl³½³ÀÊê*AaGC’ Ãµ+¬®¬Ä1ZkNOO8==auu•µKk(¯D¬¢m¬˜“C³wxÈÓçÏ8ì@èâ * üfm ÒTK [›é£]’­‹´0®œ1ÏÈÓŒ¢py×Qœ`F/¶¶9íõÙÚÙåÓŸþ1ã¼ ÛéaíþϸuP{¥üôµ8ð¥,ó) ä¿¿R»ïw<ÓîtÐÆ²¹¹ÅÉÉ)_|ñ‡‡‡ ‡CZÍ&KW—Øßß§Ìsv^nóþíÛŒÇc‚@Ñévé÷ûuöxubAHùî /·‚À«N}GéïÝÝv‡$ŠIâˆË\½²ÎÇùꫯ8<:bûå§'ÇììñìÙ3Þ»ó>÷îßçúõë>ZÉ“:Æ‘¹/!®ÀÃ*FEJÉââbýïKKK3ó†S6â[m-“É„½=vvvÙÛßçïþîln¾àøøm-E«Õ¦é˯ƒ…1<~þŒv§ÃéI"ÏNÆ,•%íN—FïŒ;îõXZ^q%¸Ò¢`8N韽@ÈrÍ|@«Õfa¡KZŒü¼¡}vº#µ¬„Ò9Šê{ƒ˜‚{xÀŸkRÌdo[>Q‰Q´±S²¹õ’òüù ¶·wŒÇÄåe¬R &YNQh” PÒ)`µuN!íg éÉ\Çã)—¯@—ãI.ãUò—3n°Xm¼°?kUs“œÃ\d\„>›Ý y–S…û|¤œ*V­/.ÚIІ”A‰–%yi¼zÛOZâUźøiüÐyùâCúH”V«Å$`¬ÆßAXš­Ú””º@*á·ÖùÙŒµ4â„¢(RÒ]è0ž1™ŒQJ±´´Èí[a¥Ýj‘$ ÒI6S0](ÉB·ƒP9 X]Y!OõÏÐEI„þâ²ó¥¹õ)¡0—“¤R’4"¢(`ee‰@A Š<'P‚<+)ÆÚƒém5ãñI6!ˆÒ»†‚PaÊëc¹Â0$UM4T÷­KOâMøRû$i…qíZ3ÆÖB…é¾@œÛ¯áJÓ­E¨i¯JÕ?a™ºÅlžc2Öuåâaò"'ϵ#}µu€Ú KS Lõ!*ÑZºÂƒÂîUû>ë®=G¤ Tà:+м Ë GâáïA>BŠi$eUb0i3g “II¿7&K5—©_ÅZºër6êÌŸÄBaŒÆjÐFûÏT»âC«PAÄÇßðþãà^¿J«³äî³(òšíE>ùôç,.­²·³°†V3æËÏɯ-(‹œ²ˆœc­Ùò i-òÁÁ!Ý…e6®Üâô´Ïd<$ ±Ö­SC©5Æ –W7¸{ÿ~ý«¤Ý]u¤>íö"ƒÁˆ<7híÈ,‰Â˜DHga…•µ Œ0¨Ú1bqÅÓÒ8‡dïdŸ<ðîÍOY¿¼Îógßðôé3—¸qãY–Qxþb“^Èâò%w‰[rÆÖU´3³®T9u M¡y̸ÔÌ”ªI6{.!bn§úšp&ÞÎÎí7líMSÂMzœí°º¸ÀÍ«×Ð¥#Ï¿yü«B݂֯ CQ*´ÈJôâ¯ýº ãÂø‡ä0‹¹„ù}”¬5+¦$‡Ö½mù6Féíñöx{üN;g7þÝRnÄöÂå"°øÕRÞ)Ubí<Ð\žÎÄNI$V¿ž4°\ìNø.‚ã|Lšü ¢Ï¿§oý¼Þðçßær›û¹™:c.z]u' ¯:'^W}ÑóÎuÌ\Áb&£?ŠbŸ•?ÝÈV›]k\„v~u±þJ4ßò~í̲fÅybÂÇÀÌÔ½“$ N‡,ÏŽF.‰i@†dEŽ ‚ZëJB£ h¥Ö„*@HKÇ\^_gye…õË—Y_[cue™ÅۆÑdÄp< Ë2ý3léÔ¤§½›[›¤“”N§ÃåõËÜ»wK—.ó¡ËØ×¦&#ÖÔƒÑxÌþá{‡‡<Û|ÁîÁ>QÑívi¶Û '#Ò,e©ÝáÚõk\ºt (ÎÎÎMFîw;–ýÑÍYîÊ+H^ò|k“³ñ”biqÂzÂTØ9˘ôÀNEÖJïüPÊejc-FÒ<ÃhMžN(²œF³EG4â˜0p¥Œè †|þõŽû}nݺÅåÕ5nÞ¸A³‘Ðm·i%©9±p Š;Ý|¤’袘–îižÐ,a¡ewoçÏŸóâÅ&[››ìííÑh$t»]®_¿N«Õb<¢Ë’áp@–¥Á’˄ϲÚ9c±î={+¥PeìLòl>wUÄAÉÔiwhµÂà–—èvZ|í]£Ñ€o¾yÈÑñ1»û{œœžòÑdz¶¶æ>&YÅé0“W­#Fƒ4M þzññB E^¸,îã“SN{}<øšÍÍ-ž>}ÆÎΥΑAHäsµWVÖˆãƒ`R¤LÊ‚´×c809>9¡ÙlÒh4X]Yaww—ýƒV×Ö]ÌtY@E>qÄ‘ÕíÏ¡j‘.rcˆÃ˜n»ã:€¨‘ À³Ñ€Óþ)«ËËܽw‡åå%¢0pJ]kȳÔÝwÑ”:GK–ç¼|¹I¯ŠT‚ëׯ±ººB–N '%J ’$¦Ùl¸âÐ!”'šÖ%E­Ä¯:R˜—PVŽW…°]”(Å º(Ðe13J×P‘®5äÇéÐú¡º«ß@Xe°þÚ\¹v…þY4K}7œ{wKËKå~íò§«8.£ Ë+Ëœœžx`9'ŠBö¸|ù;;Û”EQ;·;‹‹ìíí:爔hã"c„ÃÃC7ë°.¬·¸˜#mŠ© ÆGøÉ p÷ Aèg×lœ¡‹’<Í2Ú„îbBÒŒ¸Ö¾Âh8 P’Ï·Ü$]ÿÒíå‚ÚÁlR`tY»—¤tUñtÕ9Ûh4È2ÔKžÆ,FQŒ. ãñã lcgcef{ïÄLܬ…àˆƒjÏX‘Ó¢o9Óõà\XÕmÖZSÇJä¹+k7^anê>9O8Ì®vãk÷µJ IDATõW¥[x‘´ˆRamHQ”níÕîÖX·ïð;VH¤R¾¿P¢µ w2&Ë3Š\€ °¢tŸƒaºkóŸ‹™5)ø—jî”R1ŒˆBwÞŒ&güú³_ðÉñÓŸý9*la­s])é«×®péò2ºÈ<~ò+’¦äÊÆOŸ|C³Ý¢Ói†!£Ñˆ¼Ì1&¤{?AHÜh#UÈîîGÇ»Ê`0a„¶!·Þ»K¡¹Äű»_µ;––9¦h+8ŽXZ^ÄšCI¡-+««$­ÞÁf,P:A€4˜Ò­ÅÏž? NwîÝc2)èØß;ä'?ù W®\% Š´àÑãǬ]Þ`íÒ,w¢t1©ÏQ;ãè5vØ™q3ˆÊ}àþ[[ }AøìÌÿª@É~‡èËŠóû‚*†Ò‰)¤• 4§½}ö¸¹¶ÎÍëwˆÃ{û"71פ…s¨"ÂÚ‘qQCÃù@cñØÅ,ö%xUä*¦òO˜M÷é‹f޼yK6¼=Þoß¡Ìeš×øOIhkÏ¥ÙYäWΤÑ\@bœ'ì4ûû¡Óo0|Ûï¾EÌ9ªé*FcþEÏ‚º.ºa¾Ðx:„NIjRÀXëTÆÅ()¥ÝÐ#’ÍE(…SÜÐgû ÖýÕÁ¼5Úf¦äÊÜmM~oår­j±Âƒxö{o¸.Ô¼!fkýÓ©ú¤Wy;.ä“Ûp"×Ò–Œ) 1Wž5m5ïzgÀœo€9õ»·oV‚ŒYëh@‹ús1µJCÌÐXKªzãä6Ò+žü n¾=¦fVÉT“Õ€2÷Ýœ•Mõ;Ú_ƒªîL­š)¦®Á¯ÊLz>>J¼Á—(^ù&X‡ˆxÍÏÄ÷øÛ?ŒÁü¡ü§ø¶×k¿ã•ËWIüâãÇXGÏ»^Ç@W·)É‹¥²¢p1cÑ`=y4sݽÂQ¿®°ZÌ“ æBÌÖ1Õà_EJH!0‚‹±Ñe‰ÁRè’4÷ŠÌ p¿«Jã®#¡]ôG§»@³ÓAkÍp<¢™$¬­®põêUVWW ¥¤ß;eg{‹ÉxÄd2®AÝ"ËÑyNqÚj4¹÷·nÝbqq‘f³Édû\D¥ÏæÇóøé3Žz=‚8F†¡sM]¯¯U\‹¬Jøê{¿­ Ëš<4Öå—†ñxŒ®p¶ÕîÐH°m I«‚À»Û^ììpÜ?c¡ÝagŸ«,-,Ðn4é´Ú„Ò•HJ†Aà”©Úø¼l`Qäa3É&ôºþè䘧OŸðäÉö÷ö––¹yã7®_ga¡ëФû}^nm±ýr‹ÏŸ±´Øuæš²t€sE yø¿¡<a”ª•©ÂŸÖ„¶Ô^ië¢ ’å¥ÂP±Ðí°qùÿ¿dÿà€ƒãcööv9>=áÙ‹ç<øæ÷ïßçî{¼ûÎ;´Ûí:"Ì)÷ËŒªþt:Žé÷û´Z­:úÆ ÁÉiݽ}Žyòì?áÑ£GL&ÒÔ“IÓ¹uÂйLª|~T@˜4°Q@^øXˆ(‚IÊáñ1A°¶ºF^äEÉáñ){G\»q ¸2ó,KG,믤®?R.2Äj„(k1‡ ²¼àÅÖÝv‹K«ËÜ¿ŸÛ·o“ç9Ežƒ±yÎx4D›²ŽøÐºd<sx|Èp<`qq‰fÓ—+Yåt; 2Ž\¼† $£ñˆ¼È)uÂÇC  Ý.­V›^àr͵v`‘”„IBEï´ÇÖÎÛ{<|ò”f#qΉV‹( œÀѸè‘f³áɈv]î[}þI’ÔÑ#ÕÜiŒq­.‚M¿–X ­9é÷øúÁC6·^rxÚ£Ùl„f›¨Ñô®RåD BøònïÊôÿÔ¶"…ÝLR¹€¬\Г?ß³,£¤`88C A»Ý©×ù Üž½˜Z%"êX‹ðqIÂ)õýºSE DŠwC'CPó÷­/öàeÕQGþ¾ef¿ÙÐRíìµ´ZM’$æåË—EQÇQU ãñø‡c›T•Ÿ‡aH»Ýæôô„NŽùßÿ·ÿ•ÿïÿv¶·È² RXB_þ¹»¾p`~EH¥œ›ˆ“ˆápÀæótÚí)ühít6+@ªãsü±Œ.)r×4ínBG4š £aŸf»±e飅‰1Úúî³¶ºfLMNK I¹¨Ï()PRPV"k¨rm©Üœàc½êÝsäÂT¨QEŽsß¶ÅøýÉ4¾¦0í´ÖL÷%ÂÍ@Y‘»½Ei|\š‹µ.vqŽd@\8ç9¢ÂÔ„ø ìï’€È@ÖÎcœ£Á§ÌwDƒwZÍIJJ‰ïIr¯'Ïœš¿È$¦”-óÑ=3I¢*÷µ!Ò´àòÆN—N»K³ÙäåÖ¾ùD…[/·øË¿ü?YY[çνOÈ êŽå–ÒZ­{[üÍßþ-wîÜáÏþôù+ [/·99í³°°@§»Hšf!‰’˜þ`ÈÒ$£ÑîÂxÄÖÎ ¾3)ÏJ>úÉÏøè“ŸÓh-ÓYX¡Ý^ Ë ¤2Dq É ‹%`qy RdY. Ý%–×.S0Ra¬‹ÃX´)\_0œ±¹ù„;wÞáç?ÿ)Ãá›/)JË'?ùm5í¸Åó­m~ý_?ãÊõ{• m@Òh3œä3×`EXÖ’µ¹Xaã·Ï•ÛÏΫõVÌ èö5@À·íMfÂ|çg¶îäl 6£ßÛ#9·ß¹ÏêÒ28<8d4NYYÝÀʦû#"Þ­$§ÅêÖÌâÐŒ°›çÓxo¶—qú\oɆ·ÇÛãíñ»b~ï Ã!ð&hœxó·öíøåoù}ÏF$]ØÙ0eóç.[P¶ê˜!O쌲ÛÌl¾¬˜Uá»(…0(i°Òxu{áÔ«U,1ž4` v¦ 3-×3^ùµÍ|¶mù{Á”v ý’ý§|‰{Ú“;e•'õðï6—SÔU"M5C Tß­¾C¯â¨ìôÖÖ”©â6fŠæˆ™tòª0K¢jRIÒ«–f¿—ý©u6%²*¡µ¯û ½X8°;O2‰s›²×^¼–1ƾ…WêȢ̨PBñ¾}ñÚãûƒä•þn Õ×B¿­×òCJ¹«sÝÎ0Á³Å±¿‹>ú Ž\C¯ÜóïMÎ nCÿêÊûzBã»ÝÒÿ)Í´½Šu@†,t»ž`ÈÑF3ÑÆÐhµè..²Ðé²²º†F8`*/I’f“0 yñâÏ_<'O'ì¾|ÉÞö6Ýni-yž9@ÌTÙë.·ºÓj³võ Ý.¬­­Ñh4h6›”eÉx4"Ks&ãt격€>cHÓŒƒãc¾yü„—;; Çc&EN4hu;¬\^§Ì2&YÚðî›Ü¸zv£YŸV›(év:()üƵ$‰cŠÒå¥ÏÚI{gìsp|Bi-q’5¡4S(„ð@¹W+×å…~Åò ¬Ñš²pE•Z»õ:Š"’$A!2t$F冈MŒTQÈx<æ,Íè Fžöˆ£/Yèvé´Ú\ZYeýÒeV–—Yìvi·šÊ”’è²p%l9œÑë÷ÙÞÙæù‹Ñë÷ ÎÈ')ïݾÅí[·¹yãíf“0P ®l¬3|aô׬¬,qçý÷‚ÜGn0Gf;ÐUÈ©ã:8¬±.•ÂT‘ ü÷]]’tÚ-Ú­&«ËK´Û-¾yò˜o?fwï€q–qr|Äßóüù3ž>}ÊÏÿøç¼÷Þ{¬­®ÒHEAQ¤iZ«À­µ´ÛmÆã1·nÝbee…8ŽIÓ”qšñðÑc¾~ø/¿~ÀÓç/˜¤Y–1]v{Q& V*ŒhyQ:5{^`¤"Ž# cI"EÆÄqBžf<ßzÉéÙ]h†ã1yžÓÜnÓêv ¢„äl8âèè„N«E·Û" x£‚%¨%1Û{»ìîïs6Æ{{ûD¡by¡Ëû·ßçÆ›H$A¨|ÔGÆY¯‡.‹:²ÒúÒ÷ã“#N½z{yy‰f«éÀ±jÎÀRIÒhDNì»X´áhH§ÑÄ”)â(b±»ÀòÂ";;{äyá@?%h¶Û+¡ÑZ`4¡Ë’íýC”’>òMú2R÷üÒ—ý†®€6 0ÆÒj6Y^^auu•åå%ç’Á©×ÏÎÎ<ÙS’ûïÎZË$˧)£Ñ˜Ý=²¼ Ý] Ñl' R G©À]·†¹X-k«,uEÝ.UÅCúh—Íî„2FkZÍ&“4u¥Üq‚.ŽM qnܯÊßëùFV„±ªÝ J)ŠEž»çGlÕ¢‰é>CÎÍ)EÖÝ›Œv1`3BHç^©úýmýÞPPßûý>! C´w[5›MwŽùˆ ?æJÚÇãÿ½7’ã:ì-1±¿¿`šét̵k×0¦bo÷)ø¥ Ë4KUÍp‘ÌSJ’f)ž@8yï»ÈÁÝg;‹=e=P^œÛšIN<*t%Å{Ð9Gi 'ÏÇ$i‚u ÖÕXã ÔfF3­ã¾AÒ8Cã àÀÕ¶+qä°Ä{‹³ýuìâß¡/ÀE’UP–%ueö‹^Ì—ø­#AÅ¢t! Éœ³X?'5Ú²r/Ûø0Ñ»óÝçܵ×ÞÆ„5k}ãÔŸ½$í…[ÜÞ3ç¼ N„øƒs7¿èœJ ¤H£ŸâžÊpNâ¬û ‡” £Z[ÈàºÐZ£TB9kŒ±4£*-ÞÊ.Ñ{3“1ÂÉ;T)È@:l_»ÆúÆ%nݾƒ‚Ë—.q÷÷ñ>ãÞ½û4!/–øêÁþÓúÏ,­\f}ó-œë6‚é^@Ó8êZ°·wÊø³¿àûßý.»Oøê«§Xï±FRÎ Íp8âÖ­Û”MÍÎÞ[[ÏOÇœÎj¼àdèÚººÍÝ÷¾G’¯Q5’,_Æ{I]YPžË[o¡ÓI:b0¬Ù¾v¡-ÿ÷‡-=×®_gãÒ[8‘áС$Ž;æÑ‘O="Ó’o¿w‡"8ëùÙÏ~Îòòwß}—Á `<=ãÑãGœžMøÝ·È‡«4§Ó {<\{íc'Cp ûÅ}}tNuÂ…làR|/Îö¢‚{É &çñvˆ^ªvŒç²áÒ;l=æpç>]ó»ÛäºAKÍ'ÂÉñ„÷ß¾ÔC¼*P2]sçy[½Øùá¼_H#˜' ¿¦;ý\û«·Á~ˆÑJáÛ7dÛãÍñæøm!]a@3Ö¡õ«ßÆÂ·?¶¶ùôâQ9¯ìšçÞ¿8¿œó¿½ö²÷Ë¡Ï,·Î:•¿ðʱ`˜ Ïïb”B†ÿl6&M Ñ*ªDBf(õÜrŠ.ý¿ÊwT_,ú¿ÖùÇ)ÈëÀÒ "`„ˆŠ!ЉFˆ°ÐŸ½”ì°Ìyæéй€µÐ¯Nûj¢{6/úQG'IwŸ¢/ Ö4ó˜žø5.*ãíÅ µ*Õ¾RøeW(Dx´%b‹±çV"F{%JS>zë,Ñ£%¾ÉðÏu8þo°¿á×éexÕk}ÝÂìöûÓ,c6›ÅÍ·¸¸Ùœ—Ï%¯ó¾úý"v0ô¿§U^‡èE‘ç(cBÿ1à<ÆYò,g}mƒßýßaûÚuPc,I–¦¬¬¬`ŒaïÙ._=øŠ§ÏžQVeTÐ 1æde%2':c›››dYÆh4byy™T'dY†÷ž¦i0uÃl2¥‰} UScŒA©,ñðÑ#ïìðtçgã ^Ê@4,-±~éÖ;¦åŒÉdÂ¥M¾ýî·¸²¹IªCl>tKy¶89çCw€u(`bÞò³Ý}?yÊédJ±k£Ñˆüàlm_ek{›O?û‚Ï¿ø‚³É„élÆþîÇϸ÷ù¼sç.ëëë|ðÁŸpzzÊÑÑ›››Q%¢Œ®_¿Îl6#MS?~ÌÞþOŸíòãŸü”'Ïžñlgm8"/A±Yל'Ì¢Ë!‰%×yžÏóÍë†D'À™Ä’Ø““Ž¢PÙcãäôŒÃçG¬®,ã<¡sáô”³ñ˜/¯~æÿéRÊN}tÑ{½h{%évQ/Æ9÷Éâ5œ«†[EåyÒëU(NEwþy:çtÞyÒ”v_w/p²÷\¤IB³ò½±4Öà‹œ'TUÅå«lllâ#‡ÎZÖ––Y]^æí[·)˲!ò<#Ñ&¡1(pûq3íæ¾pêºf<‡˜8©º’ ç=³é”Ó³3>|Èã'O88|NYרDc•(Ò,CkÍd:åèè9£<ç­·n²²²Ê°†Lêèx³ÖÒT%£á4QL§“8¢»65Ó²æùóc>¿wIY¡Ó•Ð8¯PQe¬äâ±)=ÆØ¸etÛ`lìœb­%I“Ž:C’$ ÅxÎ{œ7Ý5•qêβ)Û¢ã_T–%Gg§à=;{»HïÈMž%xgÎá#0äœ#Ërʪ1 Z±±±AQìprrŒNbwGU±±¶J]–cB6¾Ö¬®®rýúu>|À_|ÁÖÖËËËŸ¤)Z©ŽoÇ´´ÒI‚g,ްñuý±Iø®;Hú6"0>áÆ$Iÿ=zÄx<&Ïs¦Ó)|õÕWìîíódç'gc&eÅ`0àòÖUê&¼÷<Ï;Òh6›Ñ4 Óé´¾“$auuµë7h;¦¤ÒˆDPVùp@¢LÕðüðï=ÇÇÇ<~ü˜édÓª²æàùÛW/ÓÔC\–Fp9œcëÿþÏÿV×.q6™²´ºAž$ň»ßú.µU<ÙÙãÙ³‡€å`O?ù~øCÖ6® p8ëñ"ì­Ê²äÁƒ‡¬¯]b}ã2Bj=Ùamc‹ï\»ÆO~úSÆg§§x~4fr6feÕ’h‰çß~ÿöv׆YÂûïÿKË—˜–°¨Tb¨)äÃK+k(™3XZfiuk7Þâ£_þ„¦¶•2\^a0Z Z–Ž„ka~ç Ò[ööžqíÚ6W¯^E ÉÇ¿ø˜Ó³3î¾ûn'9rÿþ}–F#VVV¨£u«åÍñŠvŒ—€ äm>vúÞw{T!iþ îgú=áƒps×ÏïÝÚææÍ›!88Øçøô„µuÖÖ7I’ŒÆŠ–: ÷öKzôD¿ÐYœ'G^$^¹_ê >» ‰Þk/ %Âõö,î³áÍñæxsü 8ã€^$!ü¹ïéúÝz²x^"ÿš¡oRIô«-ÿZï¤cñýÜ>+Ô¯êÄ ÄF[º¦d/Ò¿êÄ÷/[µ€èÃÊ/9cýÜ}Þ-û«ÏÙozλ·Ô×.ø¯}½»MT\\¥lÜ )7ãn®P¤Ít~õgB¾ð•¥^,Ń~ùl(Œ6Ö¢£ËDtU¶½…Xï!蔜@(Ô=¶ç®hs\» }/2©_Æ+zÍîù >m»çpqCáÚv‰~V~ì°­¡x®Ð^u÷ìo‹ìƒÕ¤æ¥wŠÿ÷–䢌Ð_ xÙƒê_=ˆ~Ý“'Ä«W±¿Áø›8O^ççÏŸ×Ï>ûŒGE‚P,¨…û]¾ö{ÿ:ßß¿6¾g÷ž¿^kL ŸÇ:Gª4ÉpDÕÔTaog‡ÿ¼·ÏíwÞáλïqûömÖWVae<ÍP1Šâ­oáZÅ!DoØ´¸Žpq¤QÕÝ‚ÖZʪb<0›•!êÆʪB)ͬ¬89;e<™°³»Ë“§;0iŒ ÅÛÑM •"M¼³œÁqÁ“ IDATžœ€wl¬­qmk‹Õ¥e´R¡ÐÕ‡í ”Ý‚Æ8Ò¨J7Öጥn_޻ϽûÙÙÛGçk›—0Þ!U"ã¤À¾n|é:ÚŽxîã9pÎb­éâ*B$L¾@Vzï°®¿Ù 12´Ži–fiÈmÀv-xÑ4çÎRƒw†ÉéiTB+–—C4Vš¦]Öýæú:Õ,-øôÓO9=9ÅC•Ó}PàòåËÔuÅñÉ1Ÿ~þ:M(†~°þt¢C·Pk²‹cjèRĬpi)£[<.(w…œéúùøß*‘/ml²´´ÄÕ­-.mlòå—_òìÙ3ž3OØßß§œN9ØßÇXǵk×Ï(Ë’~üãw‘Jœžž2NO¦ HÍÒÊ ù`È`8¤ˆ„u æ†( EY–1ƒ[0›Í°ÖrttÀ nGˆÏhŒ:IÃs"$«kkÔUEžç<~ò˜ç‡$ZÒ˜†ƒÃCžííRä)Y@!¥aVVþäsvv¹y÷» —Ö¨šPLîlŒ&óó„‚EÅwK6è9į© ]Ø—ûsÛXqáNRªVÅûÆÙðæxs¼9þý¼úöH¸Èýï{ š,zÖ¸~“øÆ ïs‹ó—Å$±H¤ô'Ü<*‹y²_°¼É9QàûJ£9»ï{ÍCι3é}÷{¤(¡:‹h_­«BØe E¢mÏÉà&ìy®a[žÖ¯0þ: ð}:ÃÿºwŠhm!ZøWÑmÔÑË7UmÒ.J½*G×à±HåÒEO’¤óºµVY#Ú›2žŒyÃbA´Rïcž¶Ÿ/JLTt&2¨pC‰¶ow±d<(”1C8lÜœBª÷!’NuשT|×"Ñ}ng1õ:@ëy¢¢=§­Z26<ñ*nÐÂùs¾a×EŸˆs`ýoèóÍJ¯wÄ¿”¥:OT,D¯Ä_u,<‡ Ö ç—“Œýñàk‘ HΗÿZþBÉ?xÜUü݇‡³¾qyþ»ýë;Jº8k/,¨~åýK ;’Mõœ-¾§”„bU¢Ž­"ˆ«ùüóÏØ=8àÞý{ܾu‹»wîryãRP2[G¢u(ÍŒå¤sE®CJk¥ 1"Aá(0ÆR–e]q|r†u0¨ëš““SŒ³Ÿœ²wxÈ“§O99;c< êñÆy„RÔÖ }PšfI‚Âs|xÈäô”+kl_¹Â¨(Þ#œCG…ek_o•ÌBj„³4µ!Isœkxöl—q:™à¤Ä+Gk"¢À¥`cìS+'ÏEíøãÏŬ´ªä´iÁü9Ù8î­µC­L[°%I ¡ˆ ¯mLS“¥ Þ†Mël:Á ¸rí:ßþÖ{ ‹Aˆx’á À˜†DJ÷öØßÛc6™Î³à•¤ŠùçJ)Š¢`umËW.srzƒøôÓO¹víZ¸Ò,ºdÜWΩ$Þ«nÁ#­E9Ý•î:7°é\yn~Ï;ç¼"Ù•§ü`ûÊ?~Ìã'OÙÛÛgc}feþ̦1žÃqrrÂýû÷99>Æ9×)«ª¢¬j²ÁåÕkkë FKï©AöÆ"¥Y‘“9³Ù 5Ó¨Xë½Ç[G9+Á9„T!ÿYJAê£Ze0eYP: Á¬*™Lõ¨Ê’݃}ŠAN6ÈY]]ÅzCžííóøÉNNNpÎò­»wùáïþ.ï¾}‡Ñ`Þ…kï<³É”édÒRÖÕ¾¥Í‡GG|õð1“i‰Ö)ƒÁ0Ä ¥9J§ã;*D')YV°¹¹É4,§§§HÃ|Э¸””¡Sd4DKIÓTœ‡Þ”åÒ,M«1¯(&s†žªNé„ Um:dŒ[hœ%M²"GjÕËC— YîZ…¥‹ Õ¶·F§Õh¼i(›UkP¥ƒ+ÀX‹P ˆX¹Å¨Îv,½Ûa)óµVøP1ÆŽàÐͲŒ¦n(§3Š¢déÂF`®òxaÎj£v¤D)×)󳨨÷¾íão Ãæ{)ÂÚÚY…Ó D ˆR c 2®ƒþ)1íø(ÏÅ&µý/ kf!ÙܼÄêÒ2??ø‰”4Ö¢… HS2­99: D‘1 ‘QaÝiQR)I®4§‡ÏÆ¢=øºÁˆ†Úûø|Kò$%WšTJÆ''h!px)I•ÆÖ Õt†!hÏÔMìðidzEaVëŠ:í]¯”ÖõÈ¡ ¤&ô,¸H*Ô Iª(\Jš&øÆ2Ъ0‡ ß÷>ÆÜI©˜LfŒ'g/ˆÚΧ<Ï»H¥àè %ê!.N‡×nɫث'¢õ_*A’èX¤Ý‹Ý‹ûçB´žÒ Ji¤P4u éoIÃÅóe¬A8èŠf“@V¶{Cáæ»»dŠƒØõX *ôI¨ÐÇ s‰J$: suë²·Öv¶sŽª2”eÈ×ÉØ¸Ï’´‹ÖÓ’Öm|ÒbGHøÛ:sÁÝ`#à-dYÁöõ[|÷{¿Ëå«Û•aœ$-ÒM(\cpR2\Zæ;¼ÏÇÿ”ý½§oϨ« ÅkÖ:Œõ(áØÛ}ÊÁÞS~ôÃÿÀh4äý„ýÃcþÍ_üo£uÞýö÷ø«ÿ÷o¨Ê†µõKx©hœÃ A>†è£4£È$É)Òáã™A鄼Xb23ÈdjÈÒêe¤.HHؼ¼Âh4¢2в‘l^y‹<É,mV0.&x\ªÞ ”7c÷!Õì„?ùãÿ5ôóÔ3?~ÌÕ«[¼õÖ[q^P|òÙ=öO¹ûÁ-’lDiUá}?‰.:É{Ù[³‰ž´K,Š[ða!9"† ‰¹ãá¤Á_4¼ŠsXBÇ{@*œ­ÑÒ"|Åôì€a!y÷›¡{G&|õh™,³~ù-Tº„3)^$H¡ƒ›QÚN~E?~uQ¬·ðŽÅ…°ÑK÷ ¿Ð¿×êÈúcš G|ÈøKzãβáÍñæxsüó&úb hY³NƉc¾0?o®ݨÜ*<úżç@g!ðX„4a¥Ú2Éo´¤[|_¼qh ¨.²_ˆ °H6tL{{>â÷´ÖC±`ç胟t@ªŽ€} "=B!WR \c^ ÎåWùó…‹ _ÛÙð›âËþk~U¼.µÑ‚"D‡#⦡µxk­!B¡\Yà_, ¢ç?X´{Áb#ž“ƼˆyÀ²]¬ÈH Ì#3t,€½’,‡‹ ” ÀK—KIåc<.(ƒ*¼Í‰íƒ­þ•ׯíª«=?_Dvê̘_¬Z‡¸A|±ó¡üíÅ ÌɶŠékÝ:TˆßèFî é0wHýJ Ü‹Þ˜²xo½ÖÃ÷¾÷WÛEùÅqD¯þ_çs´_ h­I“$ØžÏQüÅ|Q¼7ç€6ÎáeÓàÅüj%%ÖÙ.‡ï»LÔnûÒTÇ´±·AË æ4Îa€§stôœÇòéÇŸpuë*wßy—õuÖÖÖX[^AÅ çVGÚˆbn}U×Lg3Æã1Óé„g{{c9<<äô4”O¦SNÇcfeÅñÉ)UÓ âØ&•ޝº_TšRΦLÏ4“rÆ•uÞ{çwnß"×)Rx¼·Ý+bKUU(DÐF t¤,Ù=<䎨Ùߣj,V(ªÙ Ÿ¦è4Aù@΄8‹’ŠÆ6ÔuMš¦ØJE¾‹Ù®§ú\¼VýŒðˆèæÏÀ0Ïmqr”ÌÎ.Ò¥íãð‚$KÉò4€£ ¤yˆŠñ8òbÀhi™Këë`CGª5Ö4äYÊõímŽ9<Øçìô”åÑ¥2ˆŠ¢(H’„ÍÍKܺu›³³3ö÷÷ùä“OØÞÞf0‘eEPMãIµ˜ߎ'"ÒÄÏÝž#k#hÖÆ^á;§^[.Š?=UY"ð¬,/3( ._ºÄ[7n°øœgÜ¿Ÿg»»œŽÇ¬.¯Ä(•íQ–3êºÂËp0¤X-8;;CM§46”ÀVU…Î2l$î|Ü@·ñl®§WZ³6b­¥ª*šªgO¦è$z&y^tý ¶nPZ£“”4ÍHÓŒ²œ1>;¡l„’UdYÎòò y¾ÏøôŒ““–ÃØÉ%Щï&V——¹´¹Á£§O¨ë’³“VV/úà¡è­áâšÒº-Ü\Ä€IR£“¬{Žêºéˆ†-—:®Ãe8geË–CQm ó\$|$y@ë\£­ÃKó®_=3µse·Vó>eQÚýÚ*´V˜ÚP•eŒ®!teˆ ²iq}Õ5ýq@J¤’H¥Ö†Nˆº$‰kŸG¢óù*«ç‚ $…'I3š¦‰kmbvpl|=©Îo‡l¥ÝÌ‹€}‘”ú–Lkvw9ÚßÇ7 H¥d˜çh!ðÖ"*ªÒû¸$t‡$J¡¤ÀšgÍ kئab ËK#œ18Ó ¤$‘’Di´T4U3Ep♺ QsÖ‚só¯vî¶aí©ìÝs™)Ú:Ã:\J…Ö BHLv>'¶ïɹàDòÂ/™] e9àçû!á@†û(85dçÔPJ’$JTÖvK·æÔVAÜ%<øàº0ꪡ®›ÎáœíH”p_É…ñ¡뚦Y Úµ¿Ž ç=JÓ4­ü§ÿšý៲²¶Ž'ô „8ŸðYm(F k·ºæÎ;w¹té2ÿÓ†åaA’¤”UÅññ1:àmz {;4Õ”|ÿ»œžžðÕWq^rçîwð"c¸´Áöõ·±uÅÖÕK¬­¯¡’ãiÅÚ%‰N2òbˆŒÈóE’˜–6D× ˜Îj„pùê-Ö7·Y^»‚9ÃÁ2J)Œ­øðûÀl6Á[¸qóu‘T* ’…Ç™šÇ¿äÝ»·¹ûΪªæ«/>çÑ£GÜ~û.W.oâ|MU•|yï+²b™õKש‰ŠÐ $çQy‘ði»*_ku~¿H ÷ÿÛ÷0——"ó¢·û½ø«Î»9YÝÃQˆïØßÛawç·¯]á[ïÝ%Ë vžîñó_~Lš¸²}‡i%i¼@¦ÑâCìáþű°6^,lóñåxäU§ùÞjîÊœ>Û>GºqF ±Ði÷†lxs¼9Þÿ¬Vña q”¥ 6A¹0 ÃBÕÙ¢T5…waó¤UŒ„4-¤Ñ+¡$ùPf3„,£}n¶ÿÃ*¾ ÑÏÿéØtgçxR(œ˜Gq¨˜íÚ*vÛÏ'c~[«ÐÏ›êª};§wA•ïCU(M PÙ¼ì),4Û¬b‹Ek‡* |‚˜µ òÈìòY[[ö9ÎÁ1ÏÅ¥‰Ô~FßC©•V½uX{…Ö9¬w8ïQ‚NÑz¸ûBÿÃk@ïávóÑžO|ˆèÞoŒóJÒŒûoÿ{œ•x— „FÈšå•!ãÓ¯SuQ®õëØ¼rÑ&Bw¿óVì—¾¾séÛ6ö×£¿.Pÿ·ùû-~Š·þ¥×lñõæÄ‰”j!ôÕç¥u68îµÏÙ¿$fáü˜'¥\¸Ç^ ÛΗõ?¼ðÔ·sGT×U¤/âô’Å|_!ß–G†¢Hß©ëÄÂÙ‹ý.ÖÍÁëÞ&¨ý. `„¤I¤ ljÔê Æ9ÊÉ„/?ûœãÃ#=|Ìõ×ÙÚÚbccƒË—/w±<Öµ­ó¶‹Ç”³’Ã燜ž9;;c<>ãììŒÉdB]×ìííÑCÕ4±$:lØÚnŸî¼{H”¥l]1>=&/ ®m]áúÕ«ŒlSƒŒdµá¹;~”`ê´ª0¦)8LøüÑW<|ö„YS‘Cê2|mV•¤ÂQ6U§†ÔJ3FtÊÔºªº‰n41z'MSêºîîÖÍѾêDÍnîrê²a ¯ïæÄ@&9¢ ˆQJHŠÁ%%û»ììì°º¼Ì ËåYxÒLðŽ¥AÁöÖef“ÛÜ¿Ÿ/ï}ÁúÚEQàÜÜMáœ'IR¶¶®rvvÆlVòèÑc~üã¿c}ãËË+])jÿºµ÷ip¼{’¦È™T7uOD¸FÂ]´&-ÛùȆ¼lçH”&Qšë×®³uu›í«Û¬¯­±»·ÇþóçX#ˆêš$Ñܼù»»»¬®¬²½}édz< (ò˜¿®)«™f8<1]\ŽèžóÐMÊ,v`„5‘”Šº,Iò€ÚÊqÓE®¤*Aªpo[ï)F#¬w ýu5Å4à9¹÷àNÞ{÷]žrxxÀéÙ)o߾͇ïÀ;ïÜa¸4$ÉLÆhÏiûTÚÂ× ^·ÈX¾··×]Ÿ¢(º±®,+†ÅƲ$cFtV& ÛW·yúä)'Ç'ìpõòV—ÓÜÆ“xÖÊW·®pvvÊþóçÌ&„PäY” ¥çÊa)ÙÔædwë !Ð2EK¾G¢¾ý#" {=!nÒ#ºþá%ÃaŠ÷P–^H’$EÅtVâ¼ ,‘çeY†È‰èT dè‚kDt´ B |‰q=àFÞ³Áaiè™$šº¬(Ë“IB>(>¾N|ïá4øn]å\øwë†ñZI)IÓ4ÎÖ¡›B‰ þÝVmDˆ‚ ë-I’’å9 ¦[•oبO$þñ‡ŸÓJϣʼÝPµ@½áj)øò³ÏÎ"¬!Í2[•ì3=; ¹`!º±ucz<ƒaÁîÞÆÖ!îGÄh1¹¸’O“„ãôìg]p/´}Þ3Ã{“’ñ郢ÀÔM·v·Á‰v¾Ïx¨µ^÷FÝIsPO7®’à<ÓjÚ‘ªe=#ËRƒYžâ\4aïƸŽ,=a˜RŠÁ`À`0¡3Âû0Ó PX!uoÝÚŽ#.DÓx‹TP Ò¤ˆ„cÜÝx‡T•²\ ¿Ëš’*IÄâú°wr„=UU54M IúB¡óq_}a‹â‹…~çp^FÂÁá ‚c ƒbÈÊÊ ôGÄÍ·o‡yÆ…®7Å­+B pÖ ¥dV×l_{‹Á`…ª.AâbeuÊxjã)Š!GûOùòóORÖV—Á{~üw?åúµÛx§"ÃZÅ­Ûߦ*g\¿qƒ¥å%’áh„"Ë <‚ª¶‘´¬03‹!šëìä)Û×o£•äæí;Œ–7 –8;›âX4×oÞ ŸÃ „LpèðœÆqÖX‹ðÈpÏßûòsþÕ|Ÿ<+(ggüüçQW%ïܾmJ„²?çÑ£GètÀÒêUj›‚R8Bw™õóg»lyú÷"…v¡½aÑÂçbÞQà±3â-´B BÅsÚ 4®f<~N]qeã&ëK«8ç™U3NÇϱ$äà œ!HðÂâ½A …"Cyõ¢sÁ»ìÉã.|ïþìrŸ„%®'|㲡““F’Aº(ì:¼!ÞoŽ7Ç?ëÃû®£†¦†ÃC89S”e ŠB²uu‰r6¡œzÊYŽóB$!³Ù‹ÕâÊ #ŽÝÎ:¤ò$9¬m(†Ë–ÁÀâE×¾L¿Báåàž_ü¼Ž˜çë{™¡qáÔ}­-° "¡t,®ó]ÞdX4½¡w ùv;£â‚Òû9ál¬!W5MRòE‡“ÉNáéˆååaQî|?Ï6¸B‘[ )” êê8±1_[7b÷ð€{qxrÊÊÚÃ¥e†Jc©š†ª®„ 4)ß¿žB嘌jNÑ’š*Æ&ø Z¶ÅˆX êèJªaî ô=[~¸·[›¹_ˆÔJ/›ó QYIšP—ãi–søüˆYYv=I¢ñÆ¢µÂYÃåK›”ÓÇÏØ{¶ËgŸ}Êûï@ž]Y¥·,.Þ¾óÓYÉ/~ñ ~þÑ/XY]#/ >üð{@P^]¸Ç¢*»µ-çÞ¡¼ оx£Jd÷ôcSº..*Á´`-›››\¹r…gÏØÙÝåàùQȰ—‚õõunܸÁõë×¹qã[W¶xðÕîß¿r稪’l8Ä ‰õ!þÏö¾.’ì>€**ru,^'æŠÏf3꺉¹ý ¯@+{N"‘e!mIAU Ê™¥¶–³É„O>ûŒÓÓS„sìíí±µµÅ~ð¾uç.ëk«ˆmJ`œgVΘ•³P »7¤”çщfV•Ü»ÿOvvhb—ƒÐ4áßiš\Š e]Ò/: ”R4MÃòò {{ûL'Ó%¯±ŽÅÇÈÒ„­+—9>>b:òüä”*öi,× ƒÑˆ4Ëã';¢ÂØ8~Ee§1–…x=¡ºyQc£ /F}J¥bÜêáëD8Ü4Ti°^0™Îp.Zé d–‘d?çŒó=è©[EWf[r&eE$`b,dˆRªñÞQ–³°^Ó*Œ)ÛI,B>Ñ™%¤ëº>ˆºwÞù7„žWX Ö-ti⥇r2a©(ÐôÎO’PNÎØ¾|‰²ª˜Uå<ÖMªØ'Öªæ=u9£ÈR%çïž«,Mã×cXäh)ÐIB–夑¨[ŽH•f”½ŽÙ‘ N€q–ª®qÞÎ&²§–m÷è¢ù1¢QñEš#„ÇFuihª“y,j·Pç\ óΓ›cÛ IDATd‘1²N)ÕÅÎ'L¿Ðœ”Ñ-1Ùš ´–$©"ˬ­»9YJ÷—&Ès=!£_¶±zÂ&¶ŽŸ*>ã!,Λyì§ð¤™ŽÄBF’H†Ãi6ˆBtXœ·áól—,MÂcGÉå]ˆÆ ¬ 1D.v.Œ1}Å» ;×Zë.>é¢î‘¡äi¬£*kÒlÀÕ«[\»vƒµµ5¶®Þ@Ê ¥B·õA4Õ®™úšÀ£UèÆÓ*¡*E'ë›[ç©‹±ž²<¥,g|úñGü«?ü67Vyðð ;;{üÿËÿ‰ÔJç4.]ÞfVU¬nl±²²œ`Å€áh9øÁQ=2€å.‚óÞ1 ØX¿„–¡;Ê #Á8P•$ t›#ɋĨè¶B,ƒðŽ“ãCL=å»ï¿Ëpó³OÆ_ÿÕa:³uå2â lÆ<ÝyÊÃGOY»òÙ` ãS¼/|èÿAÒ3“vbŽ4ÉÎ¥ÛÊŰ[Ñ:ó<Žž"F, /^²ê¤|XëñÂ"¤¢®k %H¤àþ—#}Åï~ÿCÒ$¡¶‚O?û‚ƒ£#¾õá#ôˆÚ&ˆ$‰ˆ°®o árÍKÍe£$z‚ D/Öó•€Å ÿOœÛ£.’ Ì‘šÞ)çDuoȆ7Ç›ãÍñÏúhݳ3˜M‡‡ŠgCi:äí·¯ðäÉ>Þ8ÚLÇiv…YÉ@(b €„ÅÞÖKk5ÎÏhlM¢%:9ÁËoêîW¯ÂElpxo;fÛ{÷*æ]Ï'  Œs˜àå\X4-FÁ¥ŠqaóÔrÿÞ¥YP¾‡×ÏÒ)ø¥)£á$9¡n,2Zûç“_\”ˆ ƒEZ¿Ä×,‡þM;zÅJ/ùšxñì¿ú£EDÆr5&QéæQ ¤Š÷V·ñîƒï‚*Ð:·/z rû¡÷\ ÀŠ‹;ÔV¤ábÔBâqóÜɘQ‹9ÐJI†ÅéËd3Ü_íÏËÎåàÏÆíUH“é~®u»¼ Ï÷½²9ß· ©>ñ¼«Ø7â@Ôñü…¬Õ+ç îo…à¼@‰ß]›_}K¥qñ(%ñ™ýõÞ‡;WŒÝ1=„úåêþ¾ÅØÁ ݯãlðZx¿.Áãÿ2°^õší½Ö!×bÓ§¶ÅÆRÊ~%Çžs¿òóu›V#u|Ï-£¶Û¨‰‹ßû<»:<0©RdiBm,UmhššÆ4xgV²wpÀÑé ÷|Õhˆ`¼ÖšºŠêÙlÆl6 ñsm‡ìî­qžå²Ú•R$YÎh4Ä™&ÙÖWV¸qý7oÞäÊ¥K(ïqMCž&‹.b„‚s!ÿ]'88<âàùŸî°³¿‡A3Z^ge}“|8¤j ¢n("ÑÝ‘êÞãŒÅÙ¿Ü@>dž‡rÁ¨üô‹;!²AÇØ ·¨öŠ1?R¶¹Ý¢+Üö¾UM‹.æl¡µŸ;ÞN¤JHÒœÜyªrʳg»ÜØÞ¦H4"ÑaŽÕ!â*ÑšúÊÎNϸwï>dii™·Þº¹²:çiš „¿qãÞ{>þøc~ùñÇ $R%ܺ}‹b0êÞЋlÕ®m$ F8G®$6Õ$Æ4oc•5 ÐÎYe}”‹y­ºâîkW·CLQ^`|pRÀÖöU?|Äh4B)ÉÁá>©#X>Ÿmm¨Îam˜Û͹rÔìÅ®—Ÿ¦Y9éÄÎyfÓ•¨¢ƒ"8‚Bil è’D‘9ƒA5uU†²ôgϤ)7®_ç»~ÈÝ;ïpùÒ&Þ†ËËŒÇcêªb6+)Ë’r#ƒbƺ@ádwgŸ£“Sïì`¬¬­stô!³²æððˆƒýC†Å0€¯q!¤è\išqíÚuÆã1÷îÝãáǤiÊÆÆFøüRâ¬íʡߺv kB<ÖédŠ©KÎN)«’$͇x‹¥â­¶ÅXr¡óÀK‰^Æ禎ÝbRª¹ÂT%u w ¾ðH,ÊI´“x™P¨S7L¦ãñŒA^àS&þîPzÝÆ€±YHçî¥_»àbWG;$sàÑ9ȳœÆ„¢è6_ AÝ4Áz~ßÅæµà·’]$©s!žÔ;MÓTà-U©Ðñ}Ë–¸­+* «:Mqê²ÄÖÖ[”ôhéb.~ݹò›pj÷Ǹa1à± ²÷ú2®»Ï*™^š•2¬ër­QÀ M{Ïl¿Ð×#CeÆJãz½r‹cvü~ë^°\ ðyÑí‘TMSÅ É:p®{ÏRÐ8ˬ©qUÕ oZ'„ì—ÒFBDSóèö¼”U…p‚aQÄ=–‹1d.ºÔéúÕÚBéŽÞö­›N"e4y×9²,ëæð–®sw¡&¬¥]7‡¥™$/:ñ8o±µ‰c‹ÂK0¦î¢’B¿Aû„‰Âª˜j-±Î t”8y2Ì«yž£µ¢nj¤Rh•‘e9y>eÒ²,±RÖtÄ„.<)uGt ¤HÁltã±&ŠA"YßIÅċѱÓ:r."l$½D‚” ëë×øó?ÿŸY߸„÷žå•«”uÃlbÐ: ˆn­ï½ý8¤TTUÍòê*›—CoØ[wY[¿Âdj0‘€L’„O|…5ßûà[d Ü¿÷^(K+ fµaiuÑÊuS³ººÊÒÒ2UÝàcW ÑY aÍæ½ìÐûö3^¹r•+W®Få{èñ*K‹÷Šª²‘•áj"D‚zÞbn HÃÎÓ{lo­sçöuªÙ)?ýÉ¥®gŒFC.]Ú¤iÂ5ù¯û¦¥á÷î~‡²]¤cÞV |Ï͈…h{kº={»+7 ¶ÝˆE[§“z¡À“ÞÏ^ø¥Ž¤–1ëLÄûψI­'û<}ü9wnmq÷ÎMðŽª²üÝO?Bgˬ_º×«IDÚË/ˆ¢Z<'¨S:7ÇbÔ+0²óäÂB·xQÁÛ'dºh%Æf¡Ú}ã²áÍñæxsü 8…ÑÐ¿ÄÆÉd<åÞ§÷>Ÿâý³R‘¤É@à\,{%€Zò|Æýé Š|3›Mª!êÞ þ›-лÍÕ+•óé#!s;Ú– åIÞEåDorR2+«Up_¹(£%±Ëæ÷¾Ëñl§‹ .˹ (Wµ®»î¢ÈPZBmc<Ó<³÷W]»>”ÿÚ{sÀ÷×¾0ü‹_ó>¯IiˆH6dY†TŒ'TqÌYçu]PU%#¼Ä Û+¿s‹`_Wðx÷]ŠD±µ¹Ž5 e]1OXYZæÎí·Á{îÝ¿Ï/ùK¬uܹs§û¬*ÑèDa¬ecs“ÁpHše|ùå—üøÇ?ÆzÏŸýùŸsëÖ­ÐK EGˆ6þ…Võ:d£ç¯Îì¹ñÂîÍ‹bÀbε‹“¾ð¾Ë9Ãá°»†ÖZª²ä8< Þ9²,£H3LS‡ç( „ ,ˠΗ{P:Q‚˜÷ðùX¸­T8÷Eš‡{R꺦ªª®”ü…ˆÊîLжd’Jfš,Ó”O’ »Ö5(•“f kLtÅÏ–g,-Љ¢(R’TEsœÇù@è¦iFQ€#+ŠPŒë%'ÇcNNJʲf6›výRÖ¤Š1d.8Mãh|z¨l¸¶y^„½°u˜Æ„çgØÎÁAÖ+Ûíõ]´ãH[4}ѳÒ4†$€HØ­ñüïÿÿÝþ UÖ4Ô5È$£¬ê¯Ó¥!×Kˆ ŠšB³±y…>üš¦áý¾ÇÒê&6ºÀQV%û·ËöÕ->üîûÔÕŒ¿üËÿ››·nóÝïý‡g5B%¬m\¦ ‘sÎqz6a´´Håx/Yáêö™”`Œ7_›tãOëàeîœlÝš"öWàæ‘FÞÑ4ÿ?{ïõdו^yþ¶9îšôH8 QEÊP¾£%=vÄD?ÌDÏ<ÏÃüŸ£ÍDLKê©*©JUE²È"ám"í5Çí½çaïãnf YÒDTãD02¯9g›o¯µ¾µ’ȱ,Nùü׿àO>¹ÃÞµË<úþÙO89ó—ñìííQ×§óSþõ—¿b4š°si¥Š2ìã49œ½¾ãÐ5áCÆû¢§¡uR/M‡ÛÐz(½IHØúœÿO4ÕÿÓd)ImJ>ü†åâˆÿõÿøß¹uëU]ñóŸÿ+¿øÅ/YßÚåÖ‡?"^Û†<Áà |¥h-ªB¡©Á½§ë2†ýzçž#ÏXÙ¾/9?$ºË‹¯¡þk‚Kß“ ï¯÷×ûë÷ŸlP;89­¨ª)Ë¥#_(¶6®QUS” ÛŽ+©Ë˜²ÚÀÙ ¥¥0}1¦ÛHiœE:Çhä˜ÏSp k*´J,[RYùÃ?ÿJ¡ÿ]@5¿ÈÐ9 p&xù‹îµ›â¼ÿÚÆ˜îP„|†Õ–Aï-k† X(̼¥$±W‡BÍ"„¦Qˆž?ð[[ý~®¦h"OJu ]W$x+×ÉhÕ¶^Y7$‡ÁJku/¹^{ãk]…”PÁžÁ¼©wÞß¿‹òþ,ˆÌ¹`øÛæñw <~IÒyn»ïAB0¨î+ßö†D˛׶Η—Ⱦhý[õÌ]½_çýþp¼ÛAnÃEc±í¢±–/^EÑЊʳ«íëÊ ˆSÿ~=µf,Fc­ò®ÿ{}’©µM߯9è‰î/x.ÿ«ëºÌëºa¹ ‚«›?;7ü{kRu]-p¸¢–u½`s%„÷•—Š$IX__'Ë< ºX,ØœN¹~u—›{{\¹´íAU^ ÃEöTg;°¸2–'OŸrÿÁcî?zŒ•£é”éæNJ¬Æx@ÐѨú…ÒÄ©·‡Q¦FH…DR•e^´d† Ùlº£"^ð¥;³/œÝûÛ¹¯¼•Ê6679:<$‰c´T­M¥µý=hˆ.‹ƒe@õVÉÖ\ð³Šü†èSˆs÷°$IüyÆÖ”Ë&äæ¼‰ô~›HaPk~OQÆ0SÀ¹I£Ñ ‚õ« äb-ñÙaô@N¥µ˜*ÔÄM÷™8º¯¥ßŸTï68Ë4óØ:T”6]ÀÎx"ÁÑZª ëHtÔZ!u‚×î­^u/ˆ£Ø“Í¡–½VìWúDTß²ëˆtäC¦Ãïê@XÈ8!wp2Ÿ!#íÏÊw‘ŠÖª*ØÇ`ÑZ¶9.—/_æàà #|977KÑ®¢³ÜôáË~/Çb¹hókœ…¢(¨ëc}ƒÒ‡A¨ŠõÍ!,q³±±áó'Æ)Q¤ˆbE)„peŽsŽ$£µ&Ï—Á .âädNmTõÂÛÑäÞ Ê«ÿ+¦Ó5¬”Ö²\.áÝ|ÆË,Œ-ŸgMC6øýH†Ž™Žd6­ªéjhöù¦óÕ9GQ×ZËå+—ù³?ýk>ùä“Áúé…d’"/CW¸ÅÉ„ô¤Ið±`Œ#˦X‘pëƒ{cع¼ÇébIœŒ±ÎÛÐ-KŽŽŽØ]ËØÞÞæÛûß²X,¸ùÑ.Æ tœRYÔ­¤hÏwY¦C ëÖ[g±¢ç>Ðn5lCÚ¶€="Ù“ ç$Æ ëJšÜ™†ä3ÆðèÁ}ޏ{÷Îö_rtxÌñ¬æöOZ¡´àé³'<{öŒt²º^4ÖéAÍÁà\ <Ñ Bìvß‚WtFIn5iÍ­Ò‘î{ Ûu< NøšÆ¯ãZ:8ØgkcÊÞµ+$i†©r¾ùí—ùœë; "Š¢$/q:i;I”²6ëf] ]ëó£ûÁ:Ëîû¸®+÷±WC¦ Û¦~ýþz½¿þG Zõ ¡­Õ@ šbA*IU[#¥E ƒ•Á+Ó³#2Á¨5´÷ÒÁYƒ55ÎÖhÕµ” ðí×î‡u6È@Ê{2Ûž!RÎß&¡½7 Aá:ýÆß¯kó?­B;w«ôt«à—m=ç‹¥oÁm™t_”öYZ+´’DR`ë©“ |mȘ‹QÑ xßaw¢;Q»³7ê{£áë»¶Mò¼ŸìZå=9ã[-ýŽ¢Ø+…D+Mî ZË`¡äï°©-Á&š(Љuä»),màß @w¥È±u’u]ÐS?úVFç«ç#dmÈàeÙ‘uKµÎ+Þß Š»ö¿3ê_!Þð»€+Ot…ü +FtžöíØìÆá˼pïÞu¼åç:%Éð0wÄ8OÙ>ö¸uÁ›:Þô,ÞñgßñVþŽÉ×wùBŠïô:Í·vÎQV5Q·­îg1($òœïÛ<Ã~¸ódè}Žž…¹³^ÅízëbkqÁk¼Ë=kÖ‰Æþ¨ &½àxqfz6¡{í} '¶~huGœv‡8ŽI’„qš¢¥âäðg ;›[|ôá\¹´ÃÎæ&i¤[Û§Æuï{ËH3›Ï9™Íxôôß>|Ì‹WÔHÖ66™ll¥ &غAFJßQ"„!¼õ““ÍO…PÌEÔXÖ‰ ˆÅ>Éåœ# *˺®0uÕ‚ày¾l}²ó¼ ®|‰ÔŠ,óY ‘îËÎuÙ7¶Ÿ-Ýø»W%yžóí·ß²{i‡ËÛgMƨ(¢¬½•ÕÕ«W99=¥(+=zÔz“_ºt)ˆª–¼RR²½µÅŸ|öŸñ%OŸ=çŸþñIÓ”¿ú«¿"Ž¢6|˜Þ˜jð¾¼Oè*Ý'üŒóv6"@à{MÝ¢\JÐt¢¿ñþ:Ô }/r!ZyaÃëý}²É”¢®QQì-C7^U”Ã9Ý(KEC¼ùp_oh'ÍwN§T•Ï+ñ T‰©Kª¥·Ð2EA±˜“ÏOÙ»¶Ë'?ú1ðé§Ü¼qÝ稔>ŸÁGæ‹Ë÷ã¢sd”F˜ú9!W¬æ8·e®µÖ¨4 A!ï3g¿Nú³¬VEAYøŽ3œ¯'â( b˜Ïs"­¸}ëù—Îx’bmÅéì˜,#¤ûñ"%®éP炽œó@¸u–E^“×Ù»‘!„d4žàeX¤€Gïsx°ÏÿòŸþ'ªªæ«¯¿áàð˜ÏþäO9:9ÅEœPHŸ¤í;Uçç’ëò:ìê¹Ä#šê„%ZqF#Pô"G‰su²%{Ńð¶f¹˜¡•àãîP×_õ%óÙ)ë[ܾ}ÛÅË%_|ùya¸zk—ñt“Ee¨1(éσýŽ1ÚÚ”¹åVÎ[âÜLÀ3ÿïìÀ ༵Rœs†+~D¢Ý›D V-ùâ˜ãƒ—|öÉ=ö®íRËééœ/ó’4ãÞþ8™P8Žâ^­ˆ2gÁªVœ!€»ÌNñëÛ7£DŸpnà¢!ú¿;p×èç½È÷dÃûëýõþúãòÞ•–4…8ÉY_·œœÔ$é)ÙxÄ1é¸`ºQseÏP• êºDH‡RÃPWß.è•Ò¶·5›Z-Ð*G ‹À´þÎ^õýÈå@;¨ßË“Å{5mZ }Ñhœƒž¿´Tþ@,[f:´ Ù U]ûÔÞ TÏG°˜ÔƵ„! Q,P Ò8%K24 lšmÛï;'ú›e#ç·mßEö3âœÑ>žcóñ]Æ Ã„³?°Ò…±Ú•‰~ðµ@iÅt2A ¯¼CÔ^¤DÛ‰bj‹ñç+²dD$C8”þð}ºH¡]CE× Û_Úb[ûpà»È†E*핃‡ϩPe{a¶Þ~ ÄÕ E!z(½gC‘ôfØž45€“jãÚé›VÍ \(tm§ ”.ñcß}Gä[œ%ºî]ÀÿŽ´[-õ%øJÚó5ó€Îw‰b~Áð6Ÿf¸ð DKjŠhÛŠ{ÏvEó& cðgq>Ÿ÷¶×臧7Š´•0‘7ÓEÎçÈÞï)¥P=ð¹ßoþÛ| hÖ·ªI¡í4è«§"ø¢Î›Áº·Ò#BNAHcÛÆï6huð †^öÖvªÀ¾ üÂ. ÞÁ¯É‹P0†j¹ÄU[ܾqƒ{w?"RÒ7º›.BÕáIê(Žƒ%…£¬-óÅœÙbÎã§Ïxðø /_¢£Œµµ ²µ T ÂàLݶ!¯  $ü{JDû<»)ÞÍEÙ([Wñ-°Ù¥ì@Æ»QV6Êêù|Þª"‹eNYU))ŠÒûþkïñßõÈ@„NHI”³ÎZŽùü‹/¹}óI¤X_Ÿ"ÇÞÒHÕ(­¹~ý:EQ0ŸΣÇ}׃ó7p IDATlïl3žŒ†–ÎqóÆ ò<§( ?yÊ/~þsÖ¦S&ã1Yš¶ûn«b\™‡6Œ×FÍÅq6:rÀÏUÑú&ÛµaŒ¢]o}0©ï\(kžAs¯±>£÷a¯QR)‰©+ʪ–Þ>D ‰tÞSÙ+þ¿9¤{…¯9 t°NVÑJ ¥£ªÀÚ g UiJ²˜ÏÐ>¾s—Ýû˜}|„Ë"X€X´äEIQ”˜ÚrzzJœÄ^ÕÞ^¾:äÕë×Üð€×GG”•’×צ¡CÑgc˜º!Ó<ÑõêÕ+¶¶¶¸yãF«zVmgH…”‚µµ)×®îòòÅs^¼xÉóçϹqãëëkíÞ®¤„ƒb}:åêîŠ2G¶ª¸wç“4c¾Xp|zÊb>#Q"u­£. 'øY§i‚) ò3 cÇbqBG̳"":‰ÃõdOÊÙ°oJ!‘Æ…ðw-%ùr|Ò‡õ¶ ™V”V-Q¿¶\]嫊Ö*”Ä*Xž$I‚© ‹ùœI H­³ˆ@Ú¸þzÛFë}ó|œ,Jk–‹¢µ$iüÜ•’œ¿ñùï¥LD2Ë:oaÓ Á¦þÞíÞ©óòû×$](1¡–tƶö§ÖkCZó9;’¯·Y…úÕ†t]Ñôô÷ÁެmÊÑë"–Bbʺ%»5éòXÍyPajTQõº›}¡±NjÈéÞ$1éÆDQ^ˆ¤} ÝäÆXtÈ,IbEf,ª®XËv_r=€Ï—ØéI’¡tÌélÁÉ露¨‚mè“«Ý´Á5xÌK-Q‘D(Dz˜SKœ3$q ª *JT\KÇx’²¹5bûRÊÚÚ!+y¨ýc´òãÏw6iÊÐßXÿJ©0µ`ÖÇÅ"§ª|Ø}š%\¾²C]9¬…"¯øöÛŸ²\.ÃØ8+ÛsÜP@!¼¸«é2ÖÊV`­¿Ï XÞÔp Akeßy&Qlޜϭ3”eÉúFÄìäßüæ—<þœ§/^RÁ~ô\¾²G’M)ë ¥8çmà|WA3^Eû8ÆkH¡0µ¥® ¶®06'YÌ9ØF¤áîÝ»,ó’g/ö‰’ÙhŠÖ1…  |è²íqõ"!•@êMWs¶v"¿„+nÉÌF(›q/œ@ å-n]rLÁ¯ñ3þòÏÿ˜í Š|ηßþ–XÃæZÂöƈ$Öœœ”|ýÍ#¬Ê˜l]CÄS¨pÚ[O D]åd“Ä`Ï=5åýM†ÄÛÎ;çü[5k ´’H'p¶ætv@•sóú¥ ZÃýGùæÁcÒñÛ—÷¨­Æ T~Üy‚Á„=D½e­ ýçØsÈqÁkôs×Îj |.d“—á·×Pk¿'Þ_ï¯÷׿Úßå8Ñ}®·Ø¿¾û€½pŒFP0—|pg‚TK¦k5W¯Trʺª‘·$ ÖhÀ·|6Š"˜`µà‹ ¬­)²ñ“iM¤—^3)úà­x+Pv~›žxët6„^ÓhM¬'Z4ÆvL´Ç‘:})…/Œ[_â&<е¶8‹«­žÛ{`ÁIªÚáœDJ:­WÈ©,R Ö×ÖØX[ãàtá¯Q õ Ñ*î]gzæ^¸³Xð€Çw]os®ñ]äœC¨xCÒ¦+ÐW†ÔuE–¥Á:#¢2Lò „ò I+(==.-K˜D]8ô°ö>™mOA«ôgí`ÖXc­žgvç9ÞÏMoÑ`› :ÙV‡ICô%PÝRӡѶ¶_c»åÓˉ Õz =Th+mÁ«öðnÏ)²ÞnÔGúÓà †³¯7TÌ»‘ÿ9ø!áαkg3HÞ¸V|·ÅùMd\¿ÛéÝWáÎnkXô¾ËlsÈ®G<öÇÛj·†=Àz±ŒÃgï×@ÿgŸ—âͦÍ^ÐtRÈÁ‘ì"²û<û'zTh{×ð£±ðYxº.4ûÀÇyæ¿uëÃ]Zã„ð€p¯­\ 9 ߦ†ƒ;,[ÿéæ—ª²"‰bª²$J×vwùø£»ì^ºD¤5Y’àL©KL]· {e,U^øµ˜-rž<{΋W/ùí·÷ÉkƒŠÖ7·HÇSj@Eµ5Þ¶%(Áš|¡¾…Œj;þú·Kœ¿B4 þ~öÍXYAìÚ@Qèú1)Eœ$Œ'–Ë%‹Å!Ëå²uYaêÏö®»®A±µ¨«š²ðÀùKµÏã§ÏØÞÞdkg ‹ðžØëk¨(Bj…Žý}9<>âó_Áƒ÷CÉ‹Ù܃(‚ 6×h)¹º»K]×Ìf3¾üâKªºfcs“$MÙØØàää˜étJ’$Áæ§oÁ%:{X¿”ˆˆÂݵáù8ë‹1àë*€ïÅ­HÒĆΠʲþã~‡PiÇ4 }øOkÍ¥­mFã)˲dÿõk¢8Æ”%Iš‘DÚg;ô{kCfD ¶Öá„@éþºlZpãÁúétÂ|>÷uÍÉÁ*ËÖðÑGwù³Ï>ããî2Ê2„T…·~Šã„Å|ÎÑlæ»aŒa±\¢#TÚÍù’¼(xõzŸü§ÿÎÉlÖ’#8(–K„s²¶¶æïSž·– §§§rõên»¶ùõ”ŠƒJÙϽ۷os|tÄìô„'OÇ·C`¼lç€RŠ­ÍMªÊ“T=æt~Èúdʇ·n²\.yñjŸ—/_²œÏ0eAše>ÐYi¤ >Þ²4¦*cª2ÇÚ:€„’<_¦£zëìÕ¸n`ïÐWfì3¤S¡"…¬‘¾³‹\K‰0]vB@®`ÛŒ#‰°Ö{c;>JçGŸ¤{lÅ]ÞF?g¢_¼Š ë ñæ5Eׄ?d u¶j[âé”Ö[BBoºCúΆ¶¸kÚMÉ#ìY-Џ€dp%¥ì g×ÿ½@^ÈÕl‚nn®’ Öž;¥›ûÃîá•gA™-åЦõ mîÏ…êÿ³*¥a«mªœ ¸?á»tõ vPîµîŒÂ¿ª J‡ûîq2ÊPqä ²"_,[ ge^i•ÅŸ¹“eB‚©+–ó’ºö £–вªùú›oX_›píÚUÒQŠq“J1±Î±¾±Á'Ÿ|Bž/ypÿ>ÑCÅÖÖ·oÝ"ÖªµÂ,‚Hi._ºÄ|ú ¿øÕ¯xòì)ÿõÿú{„V|öÙgÄÁ‚£!•YÉKq+{¢Ã!µ$‹²ÖÛÜÔ5®„Úo~=BÈ+›µí¸ª÷Ïó%u]µI¯5¢%8¬3(4Âù€æ?üƒO¨ãWŸΫW/RQä¹ÏI“gÆÉNð€Ãذ> ç Ù'—ú„–WÇÆZ#Ó”£Ã¢H#Ü»w?ÿ“ϸu}$öõÕ8!ñJûª\R•Uåj'qõÒ[ëëlL'<}ú”—û¯(ò%Û;—¨kßm#µË,ë+,:Ñ^nJ´Œ±¶a)Ê©"ßU)dO™Ý2ØdJõHi%Á¢H#e†Ž4ËÅ‚¼(¼Ç¾1Ä€«ê°ÍIß"@¶*c×뺕½9/=`ìÁ<™Àè8 ™†E¾ÄIÈF™÷{ÖaO;¢}™Ûݶ6ÞUJ„SH‘¦’<_’Ú8tû5]úî,»’mäÿ^¢ãœa9÷󻵿!ËÆöëC@w64Âúní Ý`™e—¤ó÷6΢š gáÚgšW%eY…7MmŒßÓzÝoݨëPð{Ÿl‰â>eÁ ª»W~µv…¾3Öÿ|¬#"QWJ+â(jýùa–Þb¶¬*ʺj K%¥ï]å$EÈY±?uÍϸ.Óf5WÊû2çœï¢0u½­ÐVª r^µHôbÉññ1E°Y³¢ëf·Æ=·¦}ÎÂÎuìÆT8§BÆM”‚Ííu¶wÖ˜Ný\-‹"M'ÄQ²kêjêŸW"$Tõ ©cQ›Ÿ°X,Б"Š$ƒþûìïï3Ÿç,%Z/XÌD*AË„íímŒ6¬¯M˜Œ3Žg쑜HXD°?Æ9¤v8QòÉPo…ܯ|tÅÔ5µp@Š”‚²ô¹X/lqT !*²Lð×ógDɈgÏNxðàPܸv‹k»7ØÞ½u)JM¨ÃRCP«#TÛAêB§´Ph»'žÆT¡àôø”—ÏŸñ¿ýÏÿ‰$I83/k®Ý¼M^ÖhÙå-Já ²æœ8dÓÔj­·ö;s.YR"…jC–›³®R:qxâØùR¬ 5’·WVòí7ß°>ÉøÑÇ"0P” ”|üñÇdÙç$/÷÷™-NHFìîÞ$_ZDè4^9ðwÖ˜V0< EŒbàÎÈíÏÛÞï¼{ž¤è‡P7“çç,%‘«øÍçÿÌözÌÍ{XkÉóœ_ÿòs¤ÈøàƒOq"õT¢FQ†¹(Úïm…k"×ë>è~,âlG’®Gw.çzsÀtB§&$„óVM¾Éàõm»Æ¿'Þ_ï¯÷׿ßÕºå 諾×?Ü®)`<% Ò0ùœ) tT¡#_4V­ÛBÝ—Î"œ/š¬­p!PWJ…R ¥AiI[’Ø/‰À(·jð·©‚ÄžÙ²»íötU™o=m°©P²Sw¸IGŠ$É|x¢¬­o´-º•©}AXÔíÛXcÂkxâĺ¾RÛoħ³Um{L¸EkA–)œõvTãIÆd: l» …m΃ýDÛ~ØcDßÃµßæíVBÕÎQüî+1÷ß80ÝyCuØxÝeœØVQü®–LCrÅ/àëmñ\—c4XÖzd×àf^`á’2{dœ>EJ¯þ€¥¦’ª*[aejÊÊ+Âã8¨m“ã­žŽ—KNNNyñì9Ïž¿àÕÁ‹¢ ˜ll’Œ'¤ã‰ß'Âë6aƺN¡éO„U뻾ÿ»ë):/ŒÛ!VÆ®çú#J[cWB…­#d&©UE–(ó‚2„äšÚøP@c<É(}  ¤–PÀ•+WØ»z…Ùì”ç/_ñË_ÿšñt̽{³¶¾N6#•ö´º±™3üÑý!‹ùŒÃÞ>{•K;è­áI6Ke Ò$Æ:Ë|@^•üòóÏùùÏÎh4b:rýê5Ôd‚VºU„e‰!šM}³?¸ Ä:ÁæáþH3Ìài ²“ˆ¢ˆ8IºÜ‡ž=›µÖ¨6öSH´bcmÊtœ1ž¬aMMiž<}Fij²lÔv6]œú؃m3»†ëƒ „f]–ݨ2`.‹kj67Öøäã{|úñ=nݸÉÚxDéÖ—ÝZë;GNOÛ¿sÁZDiÁ²ðÁÆÅ2端˯¿øœý£c¢(Bæ¯ÌÍÆ†¤ßU&$UÁáá!>DJÉæææ ¤ÙZ¯\,ŒFwïÞáÛo¿åÉ“§ÜOS¢(b:™¶9gÖZ´’!ÄÝqcï¿ùò7î¿"’‚ñdz½¹IšÄHá3!ž¿xI¾œ#µÂ…0 iêÚ"%D‘ÂÙ@¸8‹RšÅb†%@XÕŠd†öuîÌØiîR¢"Mã‚cÓ'|NÉ|>ÇTY”t¶§RzQ Æ×ùk@èï ÷®É‘Ò[N‹%eU‘˜g ªoœm"ç2«×‹×Ȥ¥·ê‘N¡”C)äzzzBxÒF)¤RƒÌ®N]ìÕHJh A•%uU¶Õ¤iì{s¯±0kó zY?ˆp¸`oj:Є„eóÖZ“/—TÆøõ+ü|U×Íd8`5ŸH© å°#9ì©M§`3v½uŽõ€xÈ0iö¿²®ÑÊÛ³Ôm ½ÁVŽL¥(íï9ÖTçeI^Ô!ø[EºÝŸeO`{ÙL¢gA×<-cÌ °¹,K°S׺`qÔaÿ4Îâ,èH!œ.Vá{ B*Le˜Ïæ]îžDR÷r d×=ÜX("²Û·”ŠÑ‘À¹š¼œ±¶žqmo‡ËW6X,ÛÜDIoŸëñjo1Ūëtv–8ÉÈ—5UYç òeÅéé)Y–0ž¦ÈÚ`LÅ2/pN`jÿZ¦†ÙiÎëý#67·‰¢˜4ɲ„ÑØ‹ŠÜ Îb.œ :ë`M³|cC„=“•æ»îI‰¶K±®+œ5h1œÆÖ^,a l^Þâλü?ÿðß9=5¡UD–fìì\aëÒUÖ7¯R™`±,l ΋AÒØ½…PucZ‹(DJ!PHéxúä!;›küùŸ~Æd2æïþþ¿²,+nÝù¤ÁæI¢„'¥šl„ˆBÈ œ-yÞ M‚mîЗ¿wO]çªÐÌ!¥\×­åeýmî_Ó)žÆ1îË'÷>âÆµ+ØjÉç¿þyQ’¦ {ׯ“2–ËšŸÿâ—,‹šk;Œ&Û,K­<ÛÎÏUðŸý»Õ³'!78·FRo:ålú8ˆ¼’áÕ“',N_ñÿäY_#ìï¿bÿ5R¦¬m\Aéo?i1á,+WÞ¨g¹úu&­°°±½êjW!8×&°#‚fJ†ê>d<Œî¡zåM]ýžlx½¿Þ_¿÷—kP™@KÈ|›º.ˆcMšJ6øÂWÄtkDëý¤„Fˆ¸]P­5žTÞ*!Ò­ RÔ=ÍyÁÂß­`àÕPA}ÙÅÎ¥(kQ:Öd£)U[ߨ`2 #@ÄqÌÚúºoEÍsŽNŽ1ÆÄeYprrÂë×û”UM}:Ã:ã8‘Â9Ô¾«Jì3¼RH+A¤¡®s>,:‹åbN§]뢰o°è°­2ÙÑzêm”]Ô9»oæßlÇ…Æ7Ø1Ì—âÔa“•ê®ÿ`œ KcÒ$öm÷5J7µ±W‹X[c $é4]èx Þ¬ÀÄýnÛó—mÚµûþùí+ßÁX‹Ô W›Ù´¾Ò3×µ¡ª o… úÅŸ} þ@-Õ°ƒå]°ÿF‘d^}Ôz® ,¾H—€V‚ºªq6 dà;‚í éVÃ÷ Ïìßf…ä~ÐÚñ]È´‹;¯~ï)†íØî‚`ÏæßÎ|Ñ#Îð±o^¿ ¡ÑùhwJÉýWûTeEÓS® q–4ìQúîM”èj¼´oéÈ?-‘lm¨ë2 µ†ׯr{ï:ŸÞû·oÜdm4B‹Î°ÎÔ5eQPä]þDˆHho6_px|Â|¹ä˯¿æÙ«},Þc¼oƒ©e„‚¼X†ñá°¶nÉç,Eáë¹4MÙÚ:a:bã¨&…·gÔ‘¢,Jv.í0_Ì9<<äñ“ÇmÇDšeh(­e³Ùœµ5ö®îR—óÓžŽ#8::âɓǩpÑg7Æg ´*xºŒ€~(uKži!óStÐæÐ•ÿ°<ŸQäÿÔáÓé„8IHâ¥$uUQæ9UUò|ÿ5O_¾"Ë2â8&K“žÒÊ«u‹¢`6_ek„Ö%E jy‰Zæ$Öç•ÞJ‚ÈûóV òsºO?°ºê-•â ‰y ÈëV8EÇÙ=Ñø„¶òÕw€ô>Œ§t°RM'äË%‹ÙŒ|¹  wÌNgŒ²Œ­­->üðC®^»Ê®»‚5¿ùü×|óí}.í^a2’e[››!xÕ¢Õg Y–ñé§ŸE_~ù%_}õ¯_¿fookW¯’eYèú÷ãk>[°¹±ÉîP>ä§ÿïOxýjŸ¿ý›¿áƒ>`ïúõA×Mmj$Þ&Çsèr0Çœ¶bÊy GÊÁ 7A-nË:çs”ÖÌf3êºöV'=à/Žcty²AJNON¸{盤IBEܸ¾ÇÁÁ¯öpÆbª«Pcõ‚kC*‰3"€×…‹›OÌ8(– ’PWݼ}›?ÿ³?åæµklolRÌ—,—KÒ8F;@k-Ë!¤övs!ÙbÛ5È~‡ýý<»Åï³×6u`m ‡‡ ]'1£ÉÄÛ³ËéÉ,(«%:òóTkœVU… ¿[YÛ’g*òÖ}èԶɃðµaÎ+Q¬Q:"Gí:ÛŠnÈÈŸm˪d‘ç+Ï^ #Ýÿ^CR/sËöºXİ«²o£ÔxêK­NGq›ñS×>'ÅÓKFYæÇ´oý¥°ãj¯Êw«„ÌÆÎR {ä”'ù”òë° ÖqNT(í‰ËéúˆÉFB” nÝÞ#M5JYò¢ Ž#ªÊ´åˆÅÿŽ’‘Ï 4g%e!99©8xýœ¦, ΂RšñhƒÑ(e4š€syEQÔ,RF(e‰£k!‰5uU3›-H³„Åâ”ùâ”ÅbNY–(5B ¨ÊÜBÅq¢ˆc…Ã`¬ dBcUí Ýùà óFò<§,=ÙàÝ"Ÿ³g+’$æðõ ¿øù—TEDmP,·¶›Ï±Î±Xæ8YÓ­fÞ¶bÙˆ¥¯ª„ì‰Ûz½áAÙ^W9u•óÇú8ËãÇùæÛûü賿dm}ƒe.A ´ðÏW,àT3^Ù0X3àÚö¹AýÝ™4¿7†~xÙìᜦZ(W_‘ÄŠÿøþ*ÔyöôEY3ž¬1žN¨­áÁ·xòä)i¶ÁÖΆ§"”VÝ\ âÙ|¾‹Ö+wN…Ü+´ÏÔõïn¡tæÜH=©"$WŸðìÉ}0%7÷®‚µTUɳgO9>>æúGk¤£)µóÇY¤>¡¹×²Ë‘JxQì…×÷D˜ kÐàCgm”ÎêãD J…Õ?͸ÎzI)Ù … S9_Gà ÖÂ÷dÃûëýõþú½'š¢¡A¤®»wªÊ[f—p|\Q—1ùÒQ`­j\€A†pc ÒùÍ[)IÃh$™®iÆc…1‹®ð燅[Ÿ[¤÷=ÖÅ m ¾4MùôÓOùàÎÇŒÆuPäè8j[½¥X[S5RB’F¡XPÞWxœ1%\½z™>¸Í‹WüŸ÷÷'xI,rËåç´'‚ËZëUïH´òÀ“1uh V7ÎâB¯±÷Ìí}7÷.Ê„ ¶ús‹ßå4ß¿gjÚÕ» »µµ5’$Á…N×€½S_Qøp‘çLÓä>ÄÐóŸ3ÀÖê=M\€èy’7@YZJ[”æ ­åÃ@0gÞÓÚ.7AàΧï:æ] ðØÁÁÌõ¼UóbÉj¡p×ð74ÎïMŸ,X?ç}ö3 ¢ÚâôŸëEÏçM$Ag¥Ókñ|·àßâzÓ|(ä/ǽ{pÑÏöýøs>÷î÷Üàp!ÔuE”Ääyqîë·'†#l5‡®ë8œ ü›ÏyŸÆ¡O4()ÏoŽy‡½°2&Ø \ýýÖ¶>£*D“dqNŽ2’$a22]_k­!óÖx@£ AšKc˜.B^ƒ®Ù:"O=h$“(b™Ô''äË%I#œ·C‰“„(‰QÐM´ä£·9é[¯ mñ~—6^ç‘…ýÜ‘ÕykC8ǢȽMÞ$ˆâˆI5&_æÔU…©*ïµB$³,#M3êºäÚµkÌŽøæ›ßòÓŸþŒ4ËøÑ½{ø[©1µï:ØØØ`6›aêš»wïð«_ýŠ£“cNf§$Yʶ$I‚P’º*Ñ*F ¸té2R*²,ã‹/¾àçÿò/ÌNOùñÌßþíß²sé“É¥yQ0¼×¸ÔÅvŸ¤Ó× i¶mPkóÿÖZ^¼xÁËWû©JEq›!')»»Wùâë¯QJÇ‚$ŽQJ“¦™' ¥dc}í­-vv¶99]´s«{ÿöé0 \ì&‹µé¶ª9<8dsmÛ×oðã{?bkk‹í­M®l_ ¹’8IBFE…ÖšEQ°( –eIY–¾ûDHJSRójÿ5÷=â›oïs|zŠ” ¼“ý=íþÖܳ¢,É2Ÿ‡Ñt5ÔuÍr¹ ÏÞoüù‹glmo°½µÉ|6B㣱œhÁÜ(ŠØÝÝõ-÷ððÑ#tù\¯,cmº†Ž8Iq.GIÉöö6RJ¾}pŸGc|ðá¦këè4æö·ÙØØàéÓ§Ìf3f§§í"%1Rk!5NÖ”•m­êœÈÐ$X~EQ»ôÖÑF¹ÞßL˜hˆú8ŠQkk”yA¾\z;š@ÐÔÆ ­j ‡‹öùóöî¶ËF)â8ÆÔ5óÙ g Yš"•B&Q».¸sö¶þgõùPA˜žKš¦m&Ž1†ªòcª­‹zs«#[A«ˆ8IXò¥ñþïÒùŒ!PbhOÕcA_šò®‚‘ó ýŽH1Î"¬Á†0æ¦Ü_æKÒñˆËÛÛ¼>h 1›O‡î¥¢ð–KM7\cKÖ€ñ›[[ܾ}›Gž°X,[€¾ô­Q¡µj-þšúV(Åd:e<qúÕWXçÈ‹œ$I5tY–¡“J,¾%² ëz³[ë¿oGN¸¶ÓÁ28Rr5V- š{©”"ÍÒ¶“KJO<ÔU Â9*ŽýÝ ™ JI«zZ|©0µÃ9ÿ~J9Œ­@”貑fg7æÒî:£IÂtÍÊãÓñ˜ªÌx7çlèFs˜Ú!"…V1ÎjòÅ)ÏŸÌÈsÇb~Š‚4M‰"ÇÚÚ„4mæEÍéé)óyá-ЬmÁÏ<–R#PœÏÊ[ÝYQ”„‚Õ\cÛëp®ò`¨²¨  ~p(hºDÏm±Ÿ×âÅ~¾É@0:gügt5Ö•+899¡¶Š½«a¬æõ«×g©lÍÓ§O¹|óÓa]ßK=èÖOYÂÙ°]šµAàð€î“çÏyüø1{ÿå?ãœãÙ3¿¶~òÉ'Ìæ§èhÍÿ¬r’9¤C(O° 'ÛàÃæû6VpRv5Í?ÖˆsÖDzB=!„Ïž uŽáö™¯öŸ3™d$©ÆØš±ÿútœ±··G–ŽPJòüÅNfǬo}È•+·°Î[Š¡d+VôV>MÇ’ûÿ÷ŒÓ÷mèHÞ²N8IUŽ÷_°ÿú%W¶w¸té RJ‹ÿú¯ÿÊÚÚ~ø¡ßÃãFH FÒ[‡Û€fÑu[Ëþ:Û‰Nm“çÐvÿ‰3‚¨³Ç….ûÂõÉ$'AÔýg?¨ëÄHO6¼¿Þ_ï¯ßû«_@Ñb­j¡ªáè¤f±€Ù,¦^fy.CÈ”ÙbA:a©¼¢Í[}" ‰¨U]£cI× RšÁñÃI†‹@¹‹®Ñh<4-Æ”¡\÷€¶q5VJ”SXÙó÷£ïAm‘*„òZÃúƘÚYÖ7¦¼>:„B¤c™X«Ñ: B8¢–§3ªjA¤3²QJœÄä•mC¨„—«ג5¦Ôû]Šˆ>8pÿo ¨úÙµæ†1'ñDÏ/¨ƒwfÓriƒ§¯`¾Èq¦Ó©·Œ”Tït†AÂ+à®èŒ7{î4gÜ`VõÕû×ϾØwËo%ÜEDJßUuU…s)ô>½88¾íƒºsì~ÜJ€sûÝ]4ìV_[¸Ð†,Ϫ¦YñǼ¿ýN€æ¿ý€=°wyÿw#u~ÈüºˆzÓCuï2o{ãÎ9˜L¦^×¢ÛA1íÏ6–Õ3Žè“+à×»|·Æ3ØÔ» þ´]k»xÇ9äZQ’íYxüÐíɇÔÖú #­I²”ñdBœ&H­qR‚ÔÄ™ÀK‚4…î(ïÙìUâ´@»1Æ[¬„Ž…æydcßݳŸçÌf3ªª"Ͳ½TcAk>ÿâ >zDU×ܽs‡Û·o“FkQÒgh87¯ß ‰"´R<}ú”ß~ýÏž>áÑ£‡|úé§üøÓO¸yó&ÙhDjnˆ¢¨ýÞ>Û+ËEo6„ƒí…œz²$¢,–Ÿžð«_Î<Ï999åƒÛ0O8Í999eïêW®ì…l”ÅbÁÆÆ&UUéàÑ£G¬¯¯Ç1ãñ˜sm4é²¢œi@_/ÊÖ¾±Q[k±UͲ,1EÁíë×ù£O>áæõëlml¥™¥‘IJár¬5Ô¦æt6ó¾âeéE0ç9ÆŽyúô)‡GŸ€R¤ÙˆÚêʶëÊÀ­P„Ú²dm2¥ ¯í­ˆJ´V¾3+¢¯ùö·ßÆ »»W¼­iAIoodÂ\̲wïÞ¥® ?áù³ç,—9·nÝ"‰Spà×Z3©ã ijgùòë¯xôø1NHnÞºÍö¥._¹ÂÆÚ:£,c<sx|ÄËýW¾>`<ŽG-¤âtE¤Um©ƒª¸OHi­½•P¸/%•ëÙ-6µ`7N*¬Rh©ÚðbNm‘Fi…mÀÑYã\´×¬ BÄYK>s^ÄIâCp¥ sÊ?ÈÆzìÜõ»¿äHŽ#"S–ÞÎEŸí@ ¡\ÿ Я÷ÞöÀº'›)Ù*±œ*›‡aïâw&ghŸC†nD. ànùÿØ{Ó&9’ôÎïçîqæYwn4}‡spI¹K[[šiModÒÐ;}L™IZ“qV¦Ù‡=ÓƒîF7nT¡®¬ª¼ârw½pÈÈDáênÒD1†A5ª²2#ÂÃýñçYÂ("ŒB´1W½’’8ŽU¢µf>Ÿ7Ä—úJ)IÓ”7nø¦²·µL&“F¥½2äÆÄqijgÏ(Š‚,syvišpëö-Æ“IceèlÄV@ßä ü3¶T›Ôµ‚åR¾&ÈÛMü͘vóÕb<é:먪(Ê‚^¯G’¤„QR8G÷²¢Ò¥WÀ ‚0ð¶X5ñÍÏ©~²sÖI‚²r×WC(*l¯ow@…%k› »{ktºMžO™Nf zC²y‰ "¸æ» !³YÁñÉ“qÁÙ(çâL£µ È=¨Zz½„4M‰c§®º_0ŸçäY ÖR•k<ëߥ$ÆŒÄqб%qÜ¡È5Öxªgz[ãÈ‚JI„4~ ¢©;‚P¹Æ°ñ0I3¹Ú::ÅgùH¦“Y+—Ï.29¬AM¿?tãÛ*~õËßE®Ñÿ_þÏÿÂh|Ît–S–jG®c`\lÏZõ¥4MŸS&,ØøZW¼8Øgksƒëׯ!°Ü»÷5i§Ãõ7›|)gñe B×0–RBm7Û:oûƻة­ìžµCJª\óüù#~ù‹Ï‰B‰®*îßÿ¥¤üâ¿@JÉd2áÞ7÷(+ÃÇŸüœnw¥”6ô øWçñ-ï}ÍK-uÛú”áš:¶¥t°?œÆÕ\s/I©Œ&+æ gœÉælßÞ寛X‡/yøè A˜2nE160Âþ¼3-eC­vQB4UKû’†Qè~PÊe÷ÁºhÕ`¢=ã׿OÒ€_‹[ß«ËõQ­q{&ùlx¼?Þÿ¶‡ö"è{Dh epqa¦ãÓ³§!UÙEÛÊFhÀxI³sWŒ¤¤“j†Èœ('‚ ”X¡Šü6°›"èÒ_ºÌLp¨·¡)Êʇ<¹`±ºP6V- ¾[8òbNU•`>/˜ÏÇTUÞ,BuSDkÃ_ý5R >ºû!7¯ß “$() È ‰¢˜î~ÄÚÚyQÐív9>>æÛû÷™L§\»qƒõµ Be]# ˆ¢+{{DaHEÄqÈþþsþø‡âttÌÅäœÑè„›7o²±¹Eœ8FE Ø…/§tñÚþÆ¢¯npJ·i5Z3Ë3Î..xðø1¼wþp@VäŽ%îÙÞµýXš¦looóâð<((ËŠ2/è÷zeÉþþ>Ï÷÷ýnÝ­ÇBXh* Rña½ÍŽñ¼j«±Æ©tª¢@W›kkìÞºÅ×oðɇ²½±AäßÊhª,w¿Rx€!c27çYƒp6s|rÌéèŒñdÂáá!yîò;⸃Š¢@EQúM4Þ‘Ææó¹³Aꤜ/0؆­Ÿ&‰óÉ6t’”‹ó3=|È`Ð'ŠCÂ0ðaÏÂYYH,Ðloï +KÄÓɘ¢(˜ÎgtC…,K×l÷6c¯.„Ï…rIiY6ÇMQ•&¤íÈd›Ú¥e½§$!!eYÔí!ç«È&È´¶¶e«"—ìª~˜•ÒªrÑŠËëº@¤¾©_ÛÕ`Q¯ßgkkË©Œa<™4J„ ‚ŽÂ8ŽÙÛÛ£,K²,su¯µt»]´q–bRJ676ù›¿ù ³ÙŒétÊ‹/¼JAÒëuY__ãälÔäFÔ`ƒ”[ÏaRzv±¤Ÿ}“åªXxÕ`}=‡T§ÏU¥Í­„i‚ŒBP’Yž9_ucÀ8%˜öÙ!NXl|3²Eº¨*´ÕòcIb…$IÒ4¢×O¹vcÝuTX"‚9a¬1fÎ|:a2ÍÉ3´ a 8;zËa‹R(Ù½²Kž—œFIÎ îâ|JYjŒ– ei©J¨Jëån<ç™FëZ¢)K÷³FW”…A —‡Dàj0T͞܅„;uO¨là÷lŽŒî¯½!ФD¡«ÿò¼£Ü7á@ Si:½ˆ«W¯°¾¾IY„¬ ·Ø½r‡ýûlïÝ‚ø„Ê”öêq“ñQÿÄÒØÀ²ÿLõÞÔu$f“ ¾þê\¿ºK¿›rqqÊ¿ºÇGŸ|ŽöçæT€ ¤\jBÛ[âzn[­ÛØ·,¤ÛÆ®ü÷*cÿ·”’ªÌ8|ñ”ÿøK‚Ppt<â»ï¿£Óé§!;Û[()8›NùÓ×÷‰Ó7o "ââ|LÒ |Èr“¼9'±êŠ`/k—¼QªÝ`˪{ÑnN!‚®ˆ”³L.æ#l5ãÓO?Á]rÃógû\¹yƒnD) ¢B‹<"Ñ3ÜÇU´È´r‰Oè¶^Þ»ª³ü7ÄÊÞL¬žƒhb&YÝݺ9ÐÍvJøLÇfhÕÙ/ªyñ{°áýñþxü«8Þ¹b—'æ6鸮›£%£QÅÅYÈÉqÀ‹}xüÝ„ÙE‹ó3ŠBPQ‚RBÿK4ÊZ”± ‡†_þå:ÝAÊ|>¡Ò* t…4?I×Bðš`U±hÌ7®8Â*—eŽŽÕ!¥F™Ú—S ¼‰âRã²)6 eéØvFk‚^¯ë=SEƒb{þX…5)÷»ØŒÍ9¿8ecãCnܼÉÎî.GçhmQ*lVDÑj 7,ïuXü›m5Œ¬¡·`-ÿT@•]¶~XÚ,Y–l \È:[%aAIÁÚp€S1¬­€ éÙ+BIŠ\¸‚´ÌrÑØüÍ®úq¨%ׯË0~©ékÁ{u!g›æ©jBmÛïõ&ä“únÈ‹ î@›0 ˆâ!ôBa`W«(û#âåuÕ&Ç.I—ìëGœ°ï0q½ÌŠ_µ.x3Ûº]pÛ7O’?Õ$–‹ÕË^þÏtýÃ>}ýж›3 ö˜SË8_á¶5OCi{K@ù]ÎYùÆn{Ó'¥øA6d«G þT×ÔZƒT Þk»ë6ÃBP”AälnDàü³…R­Ýk³½‡zm…a­Eû | :Ô¾èA†šÁpóósf³yó¬W• íõzÞcŸÆÊ®~/Óæ,{·@{ÁkÅ<¶^ÅåãûM×y) ¶•¡#Z¡®eY"„ N“f#¹¾±Áèô„“ÑÏöŸ£MÉöÖ&Iš’$1ëH)yøýC¾ýæ[ÆTEÉk×ô¾) a±¶¾AǤiÊ£Gxøð!ÏŸ?çþýï89=ã£>âÊÎIâüæç³UU1ôùìóOÙ»²Ë7ßtyôè!ß|ó5/_ðõ×÷øË¿ü+>úø®ß¸Þ¬×íµç%pI¹My¥5a8»E!ÈŠœ“ш‡OóåþÈÅø‚µuŒS ÖMÛÚ&êÊî>b<™‘$ ;;;ÄqÌúæýÁ€{÷î‘tRæóQ’åsÂnï¬O IDAT8òB°ÜX8™ ¬A—¡R¤QD)$×o_მ7¹qõ*7¯_£ßé€ÖˆVC;/Kßu`Ãx2¡ôüRkæyAVäoÃJ ’Ø©î} ¦rÊQ¬t § qryX¤) RZŒÖ>›B6ª{åI¥­èv;$IÂx<Ñã‹ü‚½£1Ú Ö·®pži~õ—¿AÈÈ5‰}½So¶ìoZ UNí¬´Ëv[U€¦,2¾»ÿ ÿùùŸ É“'O8<<æ7÷÷DQJ·Û§¬„ð䆅U \d zò–5ˤŒú³Ùבó.­©¤WLxÕ¦PLgc:IÈáÑI¬øàö ¬Ñ^ÍwJYܽûݽK’&<~ú¾{ø„»Äic±Ï%²Þ"ë%¤´•ZòÕD*± ®®Ð7©Þzž“έ¡ÎFÄXÖ×dóãÉ)úÃïHcɯõK¬±äyÆÿý»ßq>™ñ‹+7‰’&H°R!•@Y7»Ö~k}“>ƒÑ.2;­9§•¤°äBeÕ\{É|´$ps„v‰˜è v‘åÆ]𼨿¯ßƒ ï÷Çûã_È`Äk—ì™—¾¨( yÙëBË,œÄR‘3æó)4jŠÈ¦¡¥öSÖt¿Ì~¹l\ø»hÄ [²=ö,ÆV\¤¼PQTo jÙ–Ó¢”ÒÝ£öX•—„ïо |± î[ؘ5^³¢¶«ÐKAßB\Ί|›FÝ„®ñ¯º~«_ ñ6ÏË¢ ¥ó¯uƳÿêñ¢ÀŸñèÙe-¥Ùꈕ¯w[ÍPûö7,@&ƒ]²Ö¨Ùù¢<½Vá} S2+VïjToxÜüoA:eÚí8ær9¥‹Ít„l±T6wnµZÃvb…³²ÞßZÚÓÚ4`k-*pëL§Û#ŽòÿôsÖ{C¾ûî;|ÿÉŘ?ûÙçüügæs¨*ïWÐï÷ ‚õ úß?xÈ‹ƒ&ã1Üass‹ÝÝ=œ*%EU¢”b8òë_ÿšÁ`À³çÏ9<:äáÃGðÁ×_ó׿ù ·o€” ‰kâ)%Fp›M©½w{^äh]1žŒy¾À“gÏøÓ½{|ûýw„AèòŒíä‘Hx@^‘Ä)[[Ûô{ŽŽJ1\_£ÓëÒ øüóÏyþü9ß?|@V”L§S’ÞÚ¼Ì]Wœ0¹˜R%¡”TóŒA§C…|øÁܺ}›­ÍMÖû}Ò4!ŒC ]"ŒA5j'A©Kf3g±™—…Ën’®±=ÏrŽON9òàáCNÏÎ˜ÌæDQÄZœ`,UE¡5N+•W á¬`ü¬Õê),‚%®Y)…lXàTi5J ¦Ó)_ݻǿëýš(TÄQØŒÉf-²Öà–a¹óÁ-Â0 ,Kæ³Y£‚ÙÝÝ¥Ûí’$ UU' ›Dq„Eðí·÷™Íf˜JsýÚ5ºÝ.½^a§ã€HÏî}úì)e–Qæ%XIÒé"¥% ÊÐ0è÷›º´Ès8p8I°Úøðh§Êj¯{Ì+íÐŒ1X­ Ç Ìrâ „0rAb„@­¨Ã^þ¶çïÚ*(í¤äYÞdh!H»” åéjC¾"o´qÌ`éY¤Ë,RQU%E^ „#:‰¦Ù]ÏÕ4vJx¦m 4 Q”UéÏ¥ôÊ),’Eî‘ý Õ^be3&|](gmåš¶‹1†wî|ÀÎÎ6ûûû.L=Šçâ­€‚ÁpÈÎö6ÿíw¿CWÆXâþ?ÿÅ/9:þ_›· ûTUÉùùYc±$„`8rõêUŠ<§˜g.E[º®[ƒ}Mȸ'Wò¶^ÒÏJ±”¿Tg0(¥°ÚýŽÈg¢T~nÎó¼Éç¨Á e‰.]Ø·’½N„Rbµ¦›v@H¦ÌÉÊÒ“‚„·R^Ñ㬆æÙ„Íí=’4À ÍtzÁÞ•u%iÚE؈§Î9;›3™j¢8b°6àülÆÅù„étŽ.—/Š"&ã‚Ñécž=; Ÿ ºu4Ë’Èæ$‰;Ç(–ÄqHœTUÉl6e<žaM€µ!º’äYE‘ ´¶-%±ËªÎss“5.°YW¾NÆïS´a5APo”ëÆ:è²""×0 „Wº¦©1%Q'Š¢¨¼òAú=‘òµJE¥3¶¶> Ï Î/&ܸ½ÇÞõm4iƒÐ|ØÛ`}ë:eeQÔru‘¡-dPj9·¥2.HÛ—Cy™a1œœHK¯“GOžüž«WvÙÙÞ$÷îÝ#ÏsT0 ƒˆJö)µd÷êM‚8vÀ¯rs¦µf¡¤·>¯ v4³|M-»`¢¶UIí$)!j¤ðmöŒ `[ç$‘$)ólL‚.Çä³3nîm³6`±\ŒÏ8xq@omÝk·°"Á[y›CZ¶jvÙv ÛìÝÅ’&ºmn´¤dX Œ—Õ¸b‘ù –¾ç•L^ÕäÞÊ‘(…¬°¢Y½Þï÷Ç¿‚ãM½zñ Â²T°®ô¦)KÈs8ž?-99RYŠ®"’(BV*p E]o ¬FL…cŒvyª%É~qh‡yþàk`}ÃѪ KÛOÝÉEi!ò.„ÙYXh] Ùj È&¸×6ƒcÈTFcLååš4Í£E#¹FÆ“iÎéhBžã¼¡õpþÐq¤Ÿ B‰ #>¼{‡?ÝÂôþ3„äyN*Ï®`)änuƒÓ°éW`µíÈjÍj¬/²–¸ ¯°QZ*šZRÐUI©õöQ5!¼Á.±°„]°£0 TŠ¿þ«¿ ×KÂ[•äÅÄÙ(ùœ œçœû;äÙ(¶5~Ð!ë†ÛÔË–<Þ¼¶q»h¶ÕÒâö†[6ákö_f2h3Ñ[YaøÐmÓl"<på¾¼Kþ‡X*ž— ¢Åºü÷-‡¿eÖ]ünÁÂ{³¶¿bÛöLû‘ ÎëQN»Þêr-¶—yÖÿ³’·ÈFxÓ‘$Î2/Ïs÷ø´6,ÚZ‚Fmõvù¯ºÂ«3Pkšø`åUbl}ó]€‹F/0í*!ßþ€QãwÇq’&±óéWÒ…Ízé mïíyÂë ~œkZŠ9üæE,e*4¯uÿHÇhÿ\TUEže̦S mQ„õØnÞSMØUÁk`qÉs,^óè\‚¯¿Énÿüe÷®yÖWôÚÆG•Ö$Ùl† #ªªb<™òôù>ëkCÒkW]øªô:]>ûôSn\¿Î½o¾áÛo¾æ‹/¾ Ÿg|òÉ'lmmyßó$IÈæs®^¹ÊÚ`íÍmvvvyðð!|÷Ýw<}ú”õõ Ö76ÙØÜ`m}0tÁËRJ>úøS6·v8<<äÁƒsþÿüž‡sõê5nÞ¸ÉÕ+W¸ví*iš°¾¶F„MÃ-ÏsNOO_œs~6âàà€ýƒNNGLf3ž=N”Ä\»~+ òì{¥¢(&ŒbÀ5*oݸŕ½=<~Dš¦ìîî2 èܼy“¿ýÛ¿etvÆw`µf2¾`žgQLœ$äÙœ"ËÆÅ1W¶·ù胸~å Û[› †.s ¶/0>°[¨EÀ¨µþœF#§Ø ­©´æôô”ãc9xñ.ÏD)„ ÈËÅM¾PQ–®µDqBX”·Þ8K·ºÞìtºTºjØá53:Š"òÉëC‰€jOÆ %_}õݽÃîÎö"´œºÁ–$N(¥³³¹yãqñôéSŽONxüø1ÇÇÇ vvv‡lûÝNÚåÖÍ[DQÌÑÑã1üãéõz|pçƒá€í­-ÊÒY$I!xüø±?ßÈß_7+!Q‘S`dY^…á”eDת—ÅCh_òË·íçPJd œ*ÃZªÂ5rç³™oøXB!0Þ“ÿµ ô¶òAJ„Èëûárj r¥\Ðp‹­þª9½Q!H_sx/ð0ŠÐZ“iMY ¸E‘WæÔŒ^ÑØÌ×€^p¨í:‚ªrù¢E`°%l‹$~Ú5Úz0ŘÆ:(MŠj:½ È½õš„QHÚIÑF“óùŒyž‘v: €WºÐáõõuâ8æâüSUTƲ³³CFL¦3·†*É­[7é÷{œQø€õ(Šètºlmm!„`6›!½2owH+»Iâ¬Jmû¼L[½\Ÿ—Ð>kD´Àç:캾.Xwï¬WéªB §`H“¸’(d:ûím-³:áÑÆC®\Ù# 'û°?hÖõ,˘N§1_pvvF–”Z“ç9ƒÁ€«7n°³»Ëññ1EVÍsÊÒ©4µq εµ5Ò4åî‡òdãm„j §4M¹{÷.Ÿþ9ãñ„'Ïž9ÖQ€ 76褒ݘ͵u†½>qpçæM®ìl/Øÿ‚ÆÇ^Ce*’(f6RU“É”¬¨˜Ng®‘®5£‹‹&“áøä”¼,ÑÆ=ëi§‹ÍÝù̳DÎHJ*íìÆ¬¨0$ív3AžÍë¹& C–»œë›Q +´ªµKQè¬Z&YÆt6ãûï¿§“ƤIL§ÓÁbª#Œ\ÃD« T€,R\¿~ƒõõ ž>{ÆóçÏ9[›ù|Îp8äôlD¿?@¡c«…³~yúôiÃî_[[ãøðÈ=_Ú¸Pm ¥Ñd³ ‹c‹ Ä š{YeU‘ç9yQøi[I×RXŠågSx•€ôþéõzT!qšP%Y‘F‘H ¼í›x…¥ÒjCYø@n´ÆÊ[ãh­)ËÒ…;+‰ d ^+–jQÿ§&ÖHhY¸ñ_.í ­U@Â\ƒRI‚0$C¤*š X½L0ø)VóJJ¯–ÄaD„ðkC½~ŸÍMæYÆ<ËÈŠ åǺi©þâ$aww—““...|èrÈææ&ãñ˜¯ˆ<˜g*Ë÷÷Ÿ1™LɳŠ'OžQ%)Âv˜OfŒN3ÀY·‰ @ãšñRäy’!e¥ ‚Øg%HBúqÒív‰"EžÏÉóŒ¢( ¯]Øï[baË‚uc6HIDmÛ©ZcÜÞÔ”èR{Æ~…1Iв¬œb"×¾>²^Í ˆ¢:Ó.ÁÎâ`8ì„ã‹©ž|â²Ì²,g0X#P=¢8¥ÐQ4àñãCNÎÿ‘Oþì/ؾr›¢R@€!ÁmYlX,ª¦ÕúÐ+*ݲմ„QÀÙè˜~'eØëp>:eÿù3ön~Œ r/ÿþZ.È’nÍiÅÊ­Ôëµ}“ô„]²QâõaÒvIåW!আ³ÑˆùdÂíבXŽNN899Á`‰’˜»wï2Θ/‘AÂÞÕ[ "¤ŒȆ ×//Ûˉ·!•½j/øj™x#༰{®ŒF ¤!R°ÿü{2n\Ù¢“ÆEηß~Ëx2c÷Öa2„ vÄQ[ž.2uj`› Ó&wÑ·  ÚoËdK]%V.Õªj¾­´¦Q·-Ã3¢X-,ÛVôË÷™ ï÷Çûãýa äh­˜Ï,YæÐ÷^¶65;;ŠÁ0JÚ1‹œp‰"% zýSú=ˆ‚ÌI1½õˆ¸„­ôCƒÕ–þ\º´.75]Ñj÷1^²é™u`ýJÔ4ï­ DB Sj4˹· p֮炔;ËKÎÎg\¿ÚuÅ“uVJÝNÈÙé˜ÓÑ3vv7ˆ£Ÿ|ü!¿ù«_ñ»/þÀ‹£ZXë`÷ÙSPI·`µýÌúE`_¹¶ ŠÃùw‹Kükí[‚ V¶ñö)+Å•]/ÚÅ—ó_µ^þìØ wïÞå?üÝ_ÓëÇX&h3'ËÎ!µó6†@)&Óyæ–u×D×K,ßwCÖ7FL+hV¾ Q}esÔ>ÚÞï«ã{ulJ ·zkëky'«±Æ Ê[µuŽ„÷—{!_Îëx}Ai[L¶åëÿê°évããíNpYMP¿ÖæÒFæ[ßåõâçøºŸ_0~µÁKÖi?ñáž5$@0ŸÍɳ‚(IZâƒRˆ7o>êÍÜe¤UÁK=‡ÔÁÁm°¡~nE‹ûvHã¢YïR?ΜpñËëUœ$DIâ¬ùÈ@5kËêæsaAf–Üq¥ -RŸ»bZÁÊ,_ë|YÞwƒéíóùœ( ½·smÓ´¬Fk[„Õê.±²\æÏþCÆl³~òjoöÕ÷X²ns-ñŒAq’b+M>Ÿc ¼àé³ç„7o’&)Q£+g3òÉ'Ÿ0\ð‡«Wù?þ·ÿßþö·œŸq÷î]nߺÅ`0pu‹tŒ×Ôƒ këë\»v³ó3ž=΃yòä)O?¦ª*º½ýþ€í­:ý~Ÿõu†Ã5>ûìs –y–1™N™N§L&S~ÿûßS•…S%øu=ŒB²ÜYÌÄQˆúý>»kë)O&¬olðÁ‡2\[çw¿ûóÙ«-I3è÷)Ë’élÆÆšËs¸qý&·nÝæÙþsÊ¢jž©íímò<çã>f4:gžåœ;`cÐí±»µÍõë×ÙÛÝ¥ßí1ì÷¤¤Ç„rñ,•‚ÀÙÏÌæ3¦LÅÅÑÉ Ó,g<™qtxH–œ^\0:?'ój©´Ûu ‚·ÜI„D›•ÖdYæ¼áÇà¥ÕÐNÓÔ5ŒtIY8PÒH‰6Ž%Úž#£(Âèʯ™²±¢‹¢ p~øEžóðá#Ò4!Žc®\¹ÂEqÞŒMWW¹†GJ’,ËCº½;;Ûœ_œ³¿¿ÏÑÉ1ǧ'(¥ètÝø°ÖºŒå<õ£(âââ‚ÑhD·Ûe}}½ÉŠ8??ošF»ðø²Ò1È@6Íô8ŽÝü(„ Öº±'‹c¯rñaôuùXϡ픞¹)±Ò¥d)­I¥df§ó9BWȪBy•Y]cÖä†WÕHMóXŒ”H嬢\°s†Ò©æ¤ ítP"ð{†WïêÏo­uj k £¨ŒÈ³¹³¡óuY;¯ÉzÒ̪VUH×P¬'>©Üç\djÍîõW ‰f LªåëÜ‘8އ2›ÍÈóœ0 ]fWÇͧ3Ö†ƒæç ?׬­­±½½ÍÙÙ™ Ob666Ø\ßàðèãC?vRÂ0bss“íí-¾øâwŒ'cæ³9Ã^ï¥^¦h©@ê+µ°Ñ»|ýh¯áƯ÷Æï©´1äEA^¸Ï]y $¥7~T@’¦() ¥"TÎÐzuDUVäU‰ñ*«BW¨ôc×hG†“JT BɸÉ|6æÞ½¯8::D¸{÷.››[„aÈûÇ/xöì9×ïþŠî`¬Œ‚„J ÎÎ\p,ïõ-âµûñš¯mSoÖÊÓ×妵ÿ­¾†*1BbíœýçO9?;fmØåη(Ë’ñx̃ˆ“”?ù3Œ TàŒwË$?*…™]rX¨Í-ê{%ëìK2K¥x…]R ί‚0¢kÑ •f¹&—Ò=WBZ„m‘ìÞƒ ï÷ÇûãßÚ±ôk,¸L´ i¦©àæ­Û·#67§DÑ*œ£ÍÜwg%Ö†¾)e sÖ7RÒ4÷+\…#AˆDô–Þá?°y(DÃÐh/íÆ•Û4º&³ÑñEN…—g/¸µ|·Îm0ÞÎAƒ±ë­™¤ô¿O9iëÉñR1Z;ß>!ètRÖ×KNG¹výS §›Æüõ_ý; ¿ûâ÷Lg%E®)«Ê…°Uè0Um‰®–ˆÕ¢ÕðŽâ˜Ó“cz½žWcØ¥¦–\ ñ»ìëËÀ‡ö¦Êš–•Scñ´¼!”R’¦©»ÖA€”‚8R„äÆõ+üûÿðî|x8”Zs1>æätŸ@Vþž,6š8Bœóµ¶¦z©Yõ¦†±° –t»P\È×—ó/VýîW™Ä €Îµåjö\›E·ô÷evK 6ÿyD+ã u»¶Ù@kƒh3ËV À¶ºâMÌ”ý<þÈ×7ãÏÿOØwg¼ll´C¦,hñ6ïYž?ôº´ÇaÓdy‹ÏÞ¾†íÏð¦ëÓÎÂm$£ lÚòµMÂjæÁ›Æ’”ÂyË¿ Ô„%µVûy\½_Í?ìþ]6ÿùNÏ¥ÀãeAÊòÉ:¯è$Iè÷ûM€ö­Zçµt?írCÍy¯›%OÿúuÒ7Vëù¨n’ÇqŒ©­Š‚²,©´kŠ·7Ð Ƹ¾’ ?\/~Rõu·¬dýðç¦}Ž«ç´º5c^øPO[Ϲ>xÏ[*¥ œŸžòôé3â@)E„C…­4“É„¸“påÊÏ‚MøíoË—_~ÉÑÑeQpûöm6Ö7Üç”’4IÈ‹‚(tìÓN·C·×c{k‡?ú„§OŸòäÉÎÎÎyòø)'ǧXkÙØØ í¤looF^MÖÖ7(Š‚"›!„e>›RÓÉ”ÑhÔ„`onn²6ÐõV&³ÙœÑèŒ?¸Ã[7¹yó'§#îÙ”ÀÚ`ÈÞÞ/öÇMˆ{’vš59Šb¢0FJÅl6g0²¶¶ÎíÛ·9Èó‚yV0ñª¥“ñ˜Û7o9» ð›Æ!i7c Ë2ìÌ +g4™N89=E É4Ë8s|2bt<"+J k‘aHÔ:àgcLå-75¡·¶ªíÛú>£`uHÒSHa)çó¦*‹ª™GŒuÍÛBW+ë7—¹@`µatzÆ£G)òÜ«^ßÛŽòÌZ|CßàúB¦³);;; †ƒ†9~xxÈt6ãb2e:›{›ë¬9}͆ÎBk6›1ŸÏQJ5Ïh†”U†‚ù<#L¤1„ÞŽ(Ë2Ot‰P^±2ÍȲ )¥›¤tõS+å²g¯–- )Áh¢4ÁV®ùk„óÆ/ª IGÍç>W€•íòóîYÈBèÊ];_Ïf3¬µ Ö†/e@\ößõùÔócóµ>œ[7u»ÖzL7 m–šU p[[Dzr‹S­ºÌg* {‘éaP}Ð^Ÿëù{pXºÝ.¾á^¿fww€ù|Ît:%Œ"ò"w¡Þ"ÓZÃ`Ðgww‡{úóùÜ©r—/ó‡¯þäÆ6t»]úý>O÷Ÿ"$ØŠ—±÷vc×ZóR£ÏÛfBH/qmÉvëÂF-7<¬qœÆ{Ý U¥ÑVùsqïYCÚ{ÑNgeéÞÃÉf]èàöNÄÁÁ/^|ÃÞ^HUĬ{üÝ¿ÿKnݾÊh4&Ë*FgS줬rŒgàH +ƒÖ†‹€à: YÈCdµ`öµVJ/ˆ%0©Ž½RB6lYw^Æûß.ì“ì;^¼U†á¿L&ÅåŸAüйã'zûŽ`ÁróÅòS¸/¼êÙý)·i²hë‚άgŽÖ™)®‘cZs„|‹5èõ65«¹½‰xÒö{~„=BfEÖ0ãÚ€ã»J‹êy²¢8F†áÊ5Y,®õ(n¬M¤Bµ,\X£Ï¿’À{ùk]7ô¥Œ_)›9ËÙjвlÖÀ0 \vDÍ~m‡¼+騔Î%ˆá¬ZãͶÂ?›Mìj® `ÅK›í¶²§n(¼jðk®–µ/3kå™ÛÀæö6gRpxt̽¯¿fow;tçz1žöºlmmr÷îG z}666ø‡ø^ðÛÿú_¹ÿÝwüùŸÿ9[›loocçó¦Üëõ(«Š0Šé÷†ìí\¿~»wï2:;g:›1Øßßg6Ÿq1¾àìüœ¢(ˆ“Ãõ5,Ðëv z®‘&$Ý^Aßyükk\³~2!Ï F'§„aÀÞÞ~ñ‹_pýúuÖ76év{œž!}²ÀÙÔ()]ƒº,)Ê )£³{»{|øá‡¬­­»¦™ ™Íæ$IÂææ&›ñ€^·>|ùþýûôûö÷œEI ‰Ã$ ôœeT¥5Ú8ÎÜ+7ò2çâÂyYQhË<+Ð¥¡QˆŠc´µW  Œ&*£©Êв¬È²œ(IÜsï V©œPÅ,º(±Æ8K)ٲðnÔÆ6µ®ÑžýïKBPiÍÑѱó#îܹð?¤ª4q£dÐxç oíÈ!!Ö:½ná`Èææ&ÓÙŒéCª€ªˆ@ÇLQM=6ŸÏɳŒ@)¬1t:ݦpn7ß]ŽŠÏÄ‹Ú@x+#m-AVÆZŠªB”’2/ A)¬W*,Íœ¶e7Ò ‘ ÕñÊ¡šÑ>ŸÏ½â!dáøÔ²0¼Ä²¢Qgø\ŠÈ7|·¢qÊÕú|Æh§†1ºí²$Z¬•'UU-Íkö­•¯¨AÅ2g»ÝsÍÕÅN¹sz:¢(Êæß»Ý.;;;ü9@®µ/2ÆÒëvÙÝÙa:rrr¢8¥?¢”âb<,I³»»ƒ”Òe‰œ_ø†ºc²ß½ó!Öjˆã„@-[®—®…àÒ·& ‰V]»ÞÐzÄ ÕÒƒ‚(HÄ4JˆÇz6^5­kð_Àl>'¯J7whíÆjY…Shc› s¥œS Çs¬±œœ\¸±9+±Æ3´•Ë;˜MgK*âF'c-VúzßÛZcÀU¯•F ­FÑít)2ÍÑÁˆÙ¤DŠi+úƒyQ’$!R„.ØÚ¸Œ SÊ¢ôª&‹ÕÚÕZ¢u‹æ÷&$.+ÑêùÇ"e¸¤ Âͽ!†@$IB’$D‰%ެ™6au Æâtˆ qw“Ÿÿúo©~ÿ{¬Œøù/ÿ†¸3ÄXI'íRåØåÖ¶œÑÚv²ø[U&Õ”r“R€´šïïßc{sõ5´6|ñûâãO>§ÓP”"A¥-•vïSÕ*/+ÖY^aPÕÄÉû1å}Zä-Zõsgí%„¿W+«Â+³/ŸMùúÿÄ÷Ÿ~C*¦ã÷¿ý¥$Ãþî~ì÷˜_}õ-F ®ß¸ ©{c¥¿NîÍmójûž6qM¬ÔOviâ[œËJR†'eZ´ïÒ=ZvE—ÔôK$E–ÜIBòÙ)§ÇX]°»³E7MPAȃG8¿¸àÆíÏèt‡(»lL3ß8ÅÁj8óËŠŒe0·¾ —…>¿<‡5p—]X)Õö«+[KŠ­Ú‹Ëш…z£XXˆ¾Þï÷Ç¿xóêÿ‡\X¸KQ!D‰c*ÂH„†86 Š0v‹›$Jú}á'á)œ]PX¤¨@˜•Ææ“[Ø`Ú…‰}ù§DSôùk5¾×5È` ^®+6Ji~¥1 EÇš±X$Ö%Ô!…r²Óòî˜À’‹‹Œyfèt…5ÖâØ’¦sF£oÙÛÙ#B¡Øè§Ä·®¢îe©( MUnaÒ›‚²*©ª‚¢Èݦ2ϘL&dYÆlæߪ²l®WÍ´uŸmÀ()_²¥Zm¢©ÚCSIÒ4ÁKš&„c‘ÕÖq†!QFAÍzóh‹’FWt;1E>&‰AÊœ“ñSÆgè¦%RÎFI(„Š˜Î$ã±ÁjJÛ¶ÿð¬ƒ%‹Õ‘ÐöE΀5aœ´§V*,XólS·Y/àdÉŽ ìÒ¬Ñ-« Ñ}¶ní‰eeȫ憶2géÇìŠ=OóGRûY­ýùÖçÑjôa¥ÇÛ>‰?ecQü½ËÏÛwþÞ«æÚ˾þ!ô¯zí?÷¼þ:;¯WÝ»ª¤h>@³¬*¢Àwx-h—vˆªÕ8B¾qTÕ¹2—}õø4¾ÙlìBTßnZ´Õï~Û»n"5ÌùZm_l¼æÌœyˆ B¤R¨@yãVÙ üѵíõ`¤ÁÙòµ½gÝ—²‘(•ß´½læµTZ¤E›Êy8—ºT”J¸ I¬oÀ¨&$³ò¬_j DHç³ëåãrþö5øìš ikUXíIlÜ|he…ÚÆë¸ñÒº”ùP7ÛD›T C³–Ç›]Ÿ’0Œ±RyŸmÃÙñÏö_ðÕŸ¾F‰€õu‚ÀyTW•&Ï vw÷èúAÀW_ý‰‡ðàÁNNN¸}û6?ûÙÏX®³µµBRVÚ«n$IšvR:Ýë›ü/F1™LZ!Ës‚ "‰c¢8"òY½^ÏY¢D!X899a:1Ç`-¯Ä¸sçC®]»NÚéÒï(Š­}˜¥vÀ_štƒˆ²¬ÐÆ’—%U5çÑãÇœŸŸóÙgŸ¹‚Zé„kö˜Ê1Í;iêSB2X_óÖ –i–qv>v K[ª€8ŠˆÃ¨±y±žIÓéÔÕ(F“e9q’"UˆTŽÅk…ÂJIåmþ„j¥-B(T ˆ“ZOÑ•!ÏK„T>sBúgÉ­'J…ØÀ%†ªÈ¨LÚ°±±Á|:Cä¥cW¦iUÔ`c„„A€ÎK?æ “Y†‚òþwX¡¸uóN© gñذþùÔqMˆ^¯G’Ä ‡ŠJc´ËÀÁ7틪lÁ':H)BE ÂÀœe9gçc:”<›sv1]buážGë@ça/úHW8ÌÑUÙ(¯„ThoµÔÄ÷lc í@%‘ÆÙ ÕlöùùZ)Ê¢X¤iã3€ÅRÃ{ h¬6Ýü…®a«µnXæE–“Ä)F€¡ifQ×Þ.-®¥Pv€·ö€ÌûáW„AЩD뜥X?×·Î J"_XtÔy]õ}ÿ!K}خמK[PÕ ÎN[K–>$<Ä”%qœ°¹¹AžgœŸŸ¡uÕXƒ*U$‚$I¹~í:eQpr:Bˆƒ˜áÚ&•¶œžžRU%A7foo—³ó/˜ý¿ì½×“$Gžç÷q*Eéj‰î† €Q»3»;·»<#ïáŒ4#ÿ^>Ðî…F³ãи»3…@7вD—®T!Üîá™UÝ3ƒÞušµ¡tWfFx¸ÿ~¿¯šÍB!¬}–ÃÓ'Ÿ3ÎÃóê{ïyî– Ô¯Zo,)e|õíû$%TÜw”RqÕMMmjkpÂQ6“Ù”&€íG"ýúͲœ,+pÀ|QbñAËíù¢$ÓÉŒª*qñ³´ –@É„D ”P(á=ÙÛ8ÎEõ;Ô”2;_s˜¦RJ!(Š!7vvhö÷ޏ8›sy¾ðû‘*Xèh’D!…ï ËEÃ|^1›ÖàtüóBHŸÉ`ÀšŽ]Ú6oÍ ŒqÔ4~0ê|àtk-çN¾AxÐ2ËRò" AÛ)4Îy{%gUqa8X'/¶¨MA2¼A6¾ÍýïHÎ.¦85@¨xú%A B¢eoØÝû]¨`më&`Ñ”k('§üî×ÿÆßÿí‡ ò”ã—‡ìžðÿÇ£“uãÛ°º±8ãßÃÅ®h͸—»¥ý« ü^D§¤ni¿»¶é µ3tDÇàÖqyvÊñÁ îÞÜaPä<ÿü˜½/ä·nÝæöí;è$çÑÏùÕoþÈ`´Íx¼(¤Jp ÷µ¥ ]¦_³K)Ñhwµaîϯݴ‚sƒÇ´¸ jT·|¸ÎnQІT;„ZðÙï~N®Þ÷¦)©ëš_ÿúWTµå­{ß!/Ö±2E0ÅWèÞ…ñ%FP®#ô´-xÛw.“W:û׎@Óîë} háé¬ñ?Ïõ2ÎÚ^]¸Î“; M,ƒ_@o¢ß¼Þ¼Þ¼¾m°áþ¥?Ý]úÊ97å4©,y!Qº‚R²˜ÕL.,YZQ– ištÃ|œg‡ Y¼Ï4X¤´(—*?ruv9,L¾Ž¥Þ?®–ض“÷MžòÞ¶`@¹ ›tá# íµˆŒ 'zì*¥!mQâ}hýñí„WOx¦•`6³ÌŽÁ0ñ`Cðj´fÁÆFÆññŸüœwßþ;”Ô ,ã¡F(GU7 ‹ë8X«:^ëR`ïAÚé‡Õ†jö6m…?PÕ’‚AJ±2ÿ ×ѵ‘¡v©™ÐZÅ?Û²²œsg|΄³Ñ7ÍRšfF2ÐÔÕ)ZLS²ÿò1‡G$ËjÆ#E]VÈP ¡™N*¦Š„¤+¿A®k™rB…ÃÕ¦§m";p¡c†øA_<à¼t$uÝ„F;ê¦{Ðd?YˆhÕù{¹^¨k1±¼½úìFöó ì`lln…Af¸ßý†Ýýéƒñ¯û÷–ŸU¾¢š[Ú£º Ð]úS0äÚ¿·JOºfOêvWÕBúýí€Ü_vÍb˜¸óÖµñqâ§S‚­îǯ¸¨kTÊWÞñè÷,=³È{œË^ØÛŠ\û«^òž¯«ÅÒXöÆ[±¬žYáë_ . ©B‘è$þ{ Ûä8=ï7gòÚûЗ†GpÅ…¤‚À¼dÕûZ.{ǶƒJ?̪q¦¡©Ã¾†EFK€RÿÅ•öÖ!y^Ïì„$IR”T~Èœ¥¸ÀOÒœ2„± ¼²¯¶…pa8æI"ô[ràŽ{oï‹LëÖó;ìáí^Á¸84–JQC6’SêÅ‚?|öµµ ’,c<1™Î ¦4i‚ÖŠáhÌOÿñyï½÷ùÅ/~ÁÇÿ‚/¾ø‚ý·ŸóüÅ}øî? dYÆp8$IÓxÝ•Ö(­=ÛÁöÎï¾÷^´Cº¸¼dQ.°Æ‘åÆš¦¦ÍZÌ真Ÿs°¿Ï“'O8<<į¢(?üÑùè£X_Û@ë$zï'IreX9™L"ø/”¤ª+>ÿüs>zˆÃñÁße0(â µËñŒß<ÏýÐÝøÙáxHÝxKÇ….ÃñÌLá³²ÂÌæÔMƒT~ø$ET•i´$ùˆ›y¿ôjÁ|ÃñÀ„ ,KÒ,c4òáÖ³ÙÌÛrh…‚4˰ٷy¼z>¨V1 Chr äeîmÀ„'«´¹^9à^Ýå„aŒ¿gÈR¡¥"Ï‹h•U.„WÊ*÷5bíÚÛÃV*lcq!ð^)Mšf·Te ‰Wæ-ň®œY² V’T¤TUÕ³éëT©6¬Ý¯â|¾z¾­fßx œ&䇸L’öž¤!oÃØŽÌäœcmmÌ`0`>Ÿ3™N˜/fÞ>ì .ô,£Ñˆµµ5&Ó)óÅ"€y’Ý·8<:òk%M Ö7Æœœžp~~Áõ¦©°áÑ£/˜ÏpØS=ÇI\Û›º«uQïÛÇ=½_s÷-õZ€l£Î!¤IB–¦ñ¹7΂ih¬a^•ÔÖP6eSy0:·™NHrͰçµµAñ%}ªA«t@P•5¦q8ãí²\ –‡³[z4!J*ŸÑúZëlæîùú·>íLÝø½B(f³)ãµÃá€íímæ³{/^2½,I“ç ®ªÒ«rêʇÚÏç%§Çç”eƒVy8Ëa»À™XD-ÙÑZÈÄÿçh\ @µ¶?NKÂ.H^%’²šÒ˜0èD¢¤ ® ¦6(‘¡Ò„ªv4Æ¢ÓëÛwnÞáö½Pé·ïŽÙ¹ePÚÛ7!ƒ«@t-:0¤ÍžòY‰ªg¡Ö¥7;k£BTI‰4pvrÄ|zÁ‡ï‡#Î.ÏO¸µ»ÁûïÞC Áóç/˜Ngh¥yçí·ÉRýøÉs¦ó†ýÝŽ6)Š1óZcú{a»µ‡pKJ…8±½ŠV,õ–$}²šÏH²2­Ââö.@ÅúÍõênqÑ¡DÃùÉGûÙ]Kx÷Ý·I³„ýƒ—<}ú¥ìÞ¸Kš(­B!—l«xª¡ŸûÖ bùë¬ô íñw5{ÐÅyA0·Îï®UµX·tî-¯¥e’_ûû7`Ûככ×_üÕnC2ÈIÝkl¾ (øÚ•®\øõ¤¹eÈ’õMÁdºàô¨áæî&M³àèøˆÓãšDƒ£ ÄK‰ 2D­%inX[Ï2S”ôMŸtÝ¡çâ öº¢•¡ê5˜ƒ÷õH± cm´Z[¤ØP'H­z¾ö~ÀÒt[F‡·°Ãä•SÑÚáôÃûÓƒÿ½jDÉ|u`Æ:Ö3ñ­kØÚÔ,ûk ØšáA ¡Eš…³ZPÕŸ>æã_}Ìl>åƒ?äÎÛEmÚ!Hkõçþ ucPJR– Ý¥ Ñ®C ijŠ,Cý=Çó”sžIÛTØpO­f=) •l $…çZJœ±è$¥.ëð³­;íó­õ§*KÈ05þ`®Mj´÷f<1_T€£¬+²´ð Ø¨v‰Ò)³y‰CòøÉS¦Óï¾ûi–¡ƒŸ¿ÖÚ¯]ÑÖ׃oþÙQ²øye„1 }k0B£Á«/¬ibÞ@‘g©QJóÞÛosyyɳýCŒ±¤Y‚Nt8ã ÃÑ€¦i¨MM’jR“0L}^I’ÒˆÎrL(I+vu±qÐó.#>+¥©¼ÍMž¦˜ªb1Ÿ¡”PJ-ÔI,É¢7iK#c N\›M`-iæ¬e¹`:™ ¤Ä˜®RD»ÓVY$[@S ¬±*³$!Ï pP.JªªFIIÚWʎ✠œÙNÅê¤[¬E&µà3,Z@—•sóU5M´­ ÖQmnZºhGåpƒA>wš%¬¯¯y&ô‹.'¿É«&£ÑˆÑÚ˜?þñS漀  ‡ Cž<î?CS³¾>f8,øôÓg\^^Fgöµµ1wîÜF)ÅÑñI´M”=ÀWJ_KÛž2Q u¥†£ä-ÕPÔÏz‚·|é ´T¤:!Õ ZëXo—MMU×4ÆPÖ ãÁ'|ÖIQhá÷ÅDkªrS ‹مǶ _j>XÙõû<º`]oU&# °”½æDKE&Z‹Á¶O08Šb@’hnÜØÁ9ËÞÞ>ÓIEUYtbÐZÒ˜kšÆ’ç——S¦—sæóR$8ë‰þs‹ Âo ¶×[¸P—µê6(ó{5–mŸÿnûïÔ¦’ªžR73¤q||ÊÅùcZúf_û½õö{Ü{ïo®Ýa÷ö{”µ,€Û;ÔUþ3ÙŽXÔ%ÆYÿ ´`tß¹W?àÚýKññ/~I‘¼ÿîwȳŒßýîllÝb}ûC!8[„ç××*B8:žŒ–”­ílk©ÓÚ(w­‹;«àÂRÖ”s~]ô˜,Z+þø‡OØÙ³µ9d6ð«_ýš²ª‘¹æÝwÞE8H’”GŸ?fº¨Ùܹ”uí"ÓZu¶YB8$§ÚÁ|¯÷qÁúïZL¸ÇÎ'Ü×Þ¾o[$(\Uv ,Ò†ð–óãŸhô°¸š§O¾@IÇÎö·oߦ¬*ž½xÆÙùwßz—·îSÕèÔï{Â!D ” zàï+È?×öC=ŒeÅš“¾ÝQ¿ êåÝÏWËÖY2ä;»bßyë'„ˆÑÎ Ÿ Cólxózózóú6¨¥+³_—˜ëÄ7{ߥ÷¤›;ßסµD' ëë)ëЧO&ìí³¶¶E’¯“fšŠÁ ÃPwE€õCü4µ¨é%Uí³Ö×3`æÐþF×uB÷U¾s[p¬À­÷êQãx™xò{áúCáö:¹È¢-–îd,Þ¬q ëÂÏ úõ+%¹œÖŸÌ¹}gâ!Œ—à E’x–¼T–ùü€“SËÙÙo±æ MSaZNÛ=. ¶ÚCLk}‹=³‰hÍ!ƒòÔSSÕŽ:°ò3¤HHRi*ªj†1%Æ6~¨'}Q-„ ÞŒP.*ê:„Šâ­ƒæUÍùù%ãá:Y–PV8[R)iRÄu…p™ÐÔ5‹Ù‰®À]Rä \Ó#/xIðÙéó98/h÷Eá×ôúÖâ–†Vtˆ×ÞZEi›-_ˆÛ¥«]óRHªÆ«P:2CïÁZÊkXf[D¿d×5iñïÀµ¾™_¾¥¦e`e"%Ι%YkÜl¾î~ó†ëßú6ú ‚­ÿRG.Pæ[<~^½ZROPG9e¹àçìïäN,[°‰Þ`Ý­0[ûáy«™ýL?T)Õ Ö\ùä_õÚ»H[çY‘µ1¿Å7‚¯rV/w= ”$éÒwï++HŽó Ù’]Ú*hºzÅ€mCëq(¦Â~i)I¢@y€ÒAS6`hjlU’f98«•F؆ÍQ1†|TP× ‰hAJ¦¢ž—4‹)S)pBS †äƒ¥ZNªÃº®´ïU.®Øm,1¬{a®q-°ê>Üýq¬T|3-qR¢’‘¤È$åÑã'$IÂöî6È æ‹ƒANÕÔÁ‚)a0¢”âÆÍ›ì޸ɻ÷xøð!Ož<æ‹ÏqöÅ9=bP ‡C666Èó<†fyA‚˜sTM‡‰eY2™N9;;þü—“s¦³)UYzp§®nߺÅîî.ÛÛÛ>ÒZe…TóhSÐz܈—o»´½½‚“Ó>ýìSʲäðàüàüô§?åþƒûKϪÏõy,Z“&Þê©eÃKØåÂC‰Ö'7ûgI%¼ݰº}ŠDKêèUjb9×£ºÚ¥ú®šE»G¥È²œª¬pÁ.*Ö8­E™% ö.‚TJæ‹×jci,di† à\–e,ÊçeY"ÇCÒD!±~‰·b¯ƒêºáðå³ÙœËÉc-;;;ŒÇcªªŠþþ¦nÚoçk½ÖRÅ4~Ø¥Dx¦;²€@ …ó`máT¸VIèò!-¹¹»Í›7™LgœO.¹8;EiI>(Â{›`»æ×aš&”‰œñ¶½ 'áÃx ¶ ý'LZ.±³MQ€mjæó9uU’d Î%<‘]ŽNT¯¹þÊCEgé¿›ÔŠ4Ë|ÎHSR-ÔY†R-™GÆÒ¥%ýxïîNCÿÓ A’$4UM#ko§$¥W°„këܳÎFš Ï…qþÓÚgÙxèÔ„aeÈB[UV¾M×¢˜z AÆ_~ïóʆétêm”Bí¨´bkk“4M¹¼¼`2¹ Ê.¹k!„`81 yytÄt>Ã"PIJV 988Œ{À­›7ÈÒ„óó3¦!¬[ Á`PðàÁ}ö÷÷888ôVa§HP¦»×ÖE_…ÌÏÿ@Ä‘A}¬„DK‰–*fn´¿*ÓP–%e]Q5÷vw>ï)äÃAMƒ5>§1¥èëê ႘õ “ª›CFF=@0„ G&Y&§y'2oÝh¼eܽ»ËæÆgçG\œM0CËájoƒ& Me™5%“‹9eÙ`¯ h-qåÒsàhUk¶¢ÛëZvz¬2bO¤0¥­”ˆLu*²<%Í5Φ—3f“Âùë$P3Œxÿ»ñ·ƒSäÅFÈS±Öi•5"¨À¤pHé"xÕ³|‹Š@v÷ Ú phŒoº‡™bïÅsv·¶ØÙÜôJûû Ç;4.—aðÊÂuÃrpþœê‰#!Bš“ûrMF¢C$¸«ýY›Ôs§ógm°ÎÑ„œ‹ÓcNŽöù_ÿóOHµàèà”ƒƒ¤R¬o¬óî;ïP×5‡/Ÿòðá#Šá·nßG'ŒKz¤Œe™¿õ¹q^Ò§ó·Û¼»®L]ºz³_WÛž’A¬ôÃKUë ;ÂßsÓ]B 0Hj_<¦žñÞƒ¿!Ï4ƒaÎï~÷fó)wŠ1Jè4¥j-WÃgXíéטˆNÁÓÍŽú`C˜Ù´`Ñ YçÕ=nGŽuMT7šX³GCcÑööòJñlxózózóú«¹?ã<+ött²²¤ Œ†’œõuÃËCË+õ¼ÈÂÛäøÄA`¾k© ›šª¹@*Ãhœ Ô×Zãð§û›»e˜¥Z7úòÑcT9Ð*AàC¶¬­°Ö3±"0وň½Á“q1Â9C·œ×ØÎ¦&Öž‘¢‘\NæŸLY,ŒŠØI÷Ãá)…eüèCŠ" ¤m°¿„@f0(!X¸uó申9£õµ¸Ö\`ûÃD‚ÔQÔ®ÛúªTðÐñ¿uùô¬‚úÂ8 VRʘ‹ Ó¥ës*蝫‡F_g!@kœ1è4ÃJÃÅd†´ R­Û X¯ö3ÆPÕ* öu7D‘`X×¥üJ<>;eQWð‰àöí[ܺu‹Ñh„Pžñìz`¶žEŠvëIîÁÝ[ÇRtЬ– á|25ÆNƇº§J’è„Û»;TUÉ£§™Ìg,f—(%Éjã%NIÒtÖ2ŸÍ½!äB Zxk+!e .nkÇÖ®Æg@ù5îŒc(Š‚¦i˜/¤yFSyå[kA¤{6;QéCoÝÖ©št ëÐJ‘&žŒ2ŸÍÈó+LüYqX†’QcLgËÖ[NRú\1g-¦1Ôe寻l3ܵu† Œk,ü2“°»±5U9ß÷OÊ ëë´v|Rzf~š"µfQUA9à¹ÆÃá­ímêºâòòÂ[ä…3 ]€JùüŸ7n"¥äðð‡WÏŒÖ6i¬ãôì¿—±Ü¼¹ iꆖu>  <~ü”Ål@E[¼®nq¯­_§ä}åcØKeX‹º%Pe¡^¯ššÆXuEYWÔM½x¤óêr¥K9›ûÐøð:@•Úg‘„µZ×õ2éÁ¹B…ˆ'½µkCnR«"Ö)ñ;·µIrÆg ‰Ôšíí ¶·wÀINŽ/8?›!(‚ÍP " ÀIêÊ3Ë…ñjrµÐÍ5Ëmr;,nk…¥@ëP»y ×+Ç’Ä[­%IÂÛlmmÒT–ËË)MãÙišÅçosmƒû÷0qzŒES7¤FK‡áÂÎIoá(,R´0±ÿvŸ7”1u`TÌ:ß“ã¨jZðÙ8ÞÁïÜ`scÄÇ?ÿ„çÏŸñÿÓßSŒ¶XX…±¢³ DzBV Í8Á†ÖåÀÅ;Þ‚¢G:$Zb¶?k l°]H³ˆ5­Áš2<Ç u]1¹<£.'üøGßG8ÃËÃö÷÷hŒáÁƒܼ¹K’(...xþbÍnݾ!ÇH¢OÁÑV@ Õ‹3nÁYbNTp­”Tbå@–={Îpí²\gsׂ ­=WP:‹c™*‹­ç\ž¾àùãߡ܌¿ó£AÊÁ‹g<úì^ísë.Åp £R\Ó¾/IÃ}e±¢ ]o/EG Œê™%P÷Óåu½L8¿¥XæÁ玨Ðo[zJÂáhh=–߀ o^o^o^ßÚëO,¹Wï±ßàsø¿¨Bð Ϙë”<-È2ŸðìÅœûsš¦DëV"Š/ŸÖ×-?ùÉi’a¶jê¦B%2¢ÒŽ¿³¸×\8Â.ûWÇÌž U¶Öà¬ð óJ¯3-#ú–;Ae†²êÖ žC ´ÆX‹Ò—óù€q‘㘂34m8Ÿóì+‡!+yáÿ9¬3±mŒÄ9ÿK tEYÝTÔuí}iCáÜ2ktâHUϯ[J5ÆÕ4—ƒ5æó9Ež"…a2?ñ ¡1 g%ÂåÛä>Üq:ryo¿%ØÞP™9M°;©ëš‹‰¥:®ABšd(‘°µ¹A¢/)çGHi©ë2†œ)!qhfsÇñ ã"Eâ c®†¾NÓ×ZµÍ MŸ aÚ]fÑ7] –þ_S×4uî‹‹¹]£å½Ûµï½G—±× 7¯øÅ_£‚ŠÍçÙhEžEfT»~"¸ ^oômì{«Cÿ×@“ýóÛÚ›ïwÝà~5(ùÕàÊjz5¤‹L4!pÁ‡ßᙃI’†pDA¢T´#è{Û^÷ê ýïÒZÎtÖmÝhy×nÀ°4È_çœ#<“¦òºÎÑÊî\ O9z ¸XÞ[®ÍW ó¼WZ!”Z²j%ß"4‡­QXÆ-5m²³WimÚ¡†–VÖzfž”•i •ñ¬Hg å|F¹Xxìº"•’T)Æë›äZ‘kÅæú:·nÝ¢lýÑhD1 „`:RÕu`¯ ´JpB “„ÉdÂññ§§gì½<æ|2åøüŒùtB)dYNªTË.v¡µ+Ÿyi¸³²®ÅR×»ªÚßóú‘¾Ô¡+¦,Kt’²½»‹3†³Ó~ý›ß2 Þ¥,+...X_[CiE’&1¬´ª+”V Ç#þþþ¿ýÛ¿åòò’—‡ìs~vÆã/srrÂÅÅ…fU^¡ µœÒ,óЇ,#MïϽ³Íúú:wߺËöî6yžÓÔ5'Ç'̧S>ô9œŸŸóøñcf³UÝ B@ïp0d{k‹ÍMZ}zzÊÞÞEQ0_,R0HÓ”Ÿüä'|ï{ßã?øëkk]øj/7Ä?—ç,i¢ÙÞÞb¼?æøô$„¦Ÿu!‘ÑŽ@FËk;÷ˆ¸õd¼^e÷êý¬µ\Ê)Ýð4IlcºàVÛ ¢l-ÏÂ4Úi–S¹’²Z ‚u“±Ö‡šööȶŽËÒáVÕ3¢ À øétÊgrv~ÆË£#¼ý€»»Øá€,I½ÅT«´Q½ÐÉàGÞ*A¤RW®…V ò´RX!bv‚sž”a›†ñhÀÝ;·(MÅÞá³²d1Ÿ‘d©'Gÿ^>ŸÌ†uÖ0ŸÎ¼]¥ßd@ T¨û¿ÚûÒæ1´¿wÚ³›Á!TU9:M|ý¬¯šEØÏDo ™èaŸW3ô­å¢¢ZÔ8Jè% aµî»N1ØŠ•ÑšÌFâ\_iÓ->'Ë¡“”ñxŠÅb¹’Dkf³Ç7ÙÙÞi™•J[1mx=8Ò&Za­ 96. R ÆøšÆç«‚—'xÛ,KY$‚ý/8>:ä»ÿË?R.¦<|ô)Î9Þÿî‡\NæX•⤯]ú–Gù],í÷Ð XŽ/\ ¾B g©[&rÚ˜SéBÞ„¤©ö÷ž2¦ìnm`ª’?þñ÷Ìç3òÏÿüOdyBY–üæ·¿âôô”ï}„u>“æu„ÙËiè³ê£]¥\}þÄkI\Ý>îzAãWm”d¨ÿ¾V—ƒ¦Öz2’Ó,8Ø{Êôò˜ñ0ãæm-9;;cooŸ,Ë×|žS¸7Ö?7Zâú]8¸WÌÁœ[Îh}“üYl_9Us,«?|Ÿb£ÃA?N¨?òùÁFÍö'T€y6¼y½y½yýwñZ™HüAokÃä.Î3N^V,0f›²RhÑ4Ih6lð¿÷›¨ij” G]j¤Èqvá«út¯(­ÿó÷ZVl[@uRI¨ƒ?wÝ4¤ILÝ6ß»‡·Ròެ D L&bg=é%BaDXØß;c6YGï4„ôù Ã,oœ"t™/o¬c8\1^’¾HÄŒ oëI7¸Óè¬O÷›=­ 1S´ÆKŠëHK¢S¬MX,4‹E†`L9³>\—غ›‚+À”‚$©H’)óù„D% rï¥XÎ+ÒÂûX½¬xøè”óóóyÎdR“è’ñ(ãïþî[[Š$u Oqv†S!ìÒB¢ÆÔµãôij™ÓÌ×uø«×k×C¿¿â·ÞrywfUbÉO¶vÖ]§‚oóòðp5tº[[®—áЪ|¥aõ—xÒ·­ÚÝ;·¹{çËï¾úÝáÜ_Ãä®·R¹f¾ü À¥¯ó™úC`±f¸:Äÿ**‹×^¯ùo«=ñóà®mVm‰®û}o \ÿ~`#ý@^º0u\ÚÐ4*/ͳ·’è Sœ×Ë×=ƒ×}ß¾ÿ{ÿùh{Ùc°Š^.ÄkO¢3I®óÿîözvFâ•Aßr…ÉÚÞ µÊllmŽú!ÈöõgY;Ô»$ö®K;ißËÿ¿7 g©«ŠÅlÆlr‰­+ízƒ4ascíMÞ}ð€µÁ€L+­( |Ü‚K­Ì~0P¬ [\°û(6·X ¹¹s“·î–žœð‡G98:¢ªkÎÎÏ(ËŠÑx̓ÒÄ+H¬ó¬í`ÿÐ*ÛutÝmŒÏhƒ„»µúªáÊ|>€j’& ‡C2%yyxÈç²±6äÎ͹·)IÓ4^ÿvHiŒé]¯­1xë­»^ð÷3f³‹Å‚º®™-ü°N@Eňr¤iB–gÁîP‘™_c¸{ç.ÕbÁðCNOO9>>æâüœÏ?ÿœÃ—G¼Øßçää„ÙtÆÞ‹¤iJ–eXkY,äyÎÉɉT6 ƒÁ€>ø€ÿøÇìîîF+§Á`€5~0é®y‹¢àí·ß泇bèv÷œ„•ÎëXÒ-{G÷‚–ÛF]zì¶ærK`Awÿڷ휶CºjQz[©Å‚T'$YÚ³ç SVXí׊¢  Ö0BŠ<û‹ì=ÿiÚZ uC·h™•[(kLÃÉé eUrrzÂÝ]nß¼ÁÝ]6ÖÖQ²§uiUU4Áß9 A·ýëÕÞ»èÞ7®ËÞT•µÜºu‹ËÙ”‹é;Ÿ#´&+rT¢±¶»®u]û÷D0ŸÏ©*ây°,ñCW±²ÇÚ&¼{š¦Xg¨mC’gŒ¤ .+lÓÒ[P2Z‹"xåžÖ3Ú‚$Ip9Ó‰¯¿///YÛ܈€gK±«çuoo¶×œ)Y–Q.æ()©›†úÞ‡.ÛµA IDATgxøð!ƒáˆñÚ:YQp±0¡{µCŸÍÞ«Ûß»oFнYD¼ÖÖBé•uÅÓÇŸñÃïÀx4`>=å‹/Ž»wîðÞ{ïQU š¦aÿI*ùþ÷ˆi,"mb|YŠXyN_Ýg¼ŽÔ$¥\ªÁºZ×;"ø:WÛã:ÊR“$ÅT%Æ8¦“)³Ùœïÿàî?x‡EYóÅãgTµ·ÎÚØÚ u[@ªaÓ…Ð·Ì ï8ðjU{_a´”W×nCÁJɉ6Gíšsª—“ؾ¿¦ƒœì€¬Á¼å_geV×iζv¿z3‚|ózózóúïhè[D÷Í/¬”\N,ggŽÅ<¡®Û¼&I ÂV BX/³­X‹p!RÿÿZmá¾ÅïÖ!ÞH0ðüÙs*£¸wÿ¾—‘Œµ=V© ¦Æ.ýù`T‚[cƒ„ÄÙ†—/{×ÑEölë£Y7pt4åÛˆÀ˜×R{DÝx«'GG'ì$›h™`Ì¢µE¢Ë*ö¾Ü2D²×,÷‹›N/¥@+M–) Áp(Èóçj¬üòãÏøäwަkZh’¬äøOo±µ]ð³ÿú)‡P/:Ûï|wŸüýmÆãˆc}àU’&ÔÍœ“ãŠßþæ%ÖÞââ"çèÈe»Ì¦5ÇG..~LJŽùîÆã¤8ª®@qr2¥©¯•ôÓ±Ñø jÊW¯‘®¸PJyâ^±›^#™$IxïàÑØ³è^fÉ—Þ‡iÇáhO6~ÝýµŸûµCûÎ#4MSò<W÷T;í5s«µç_èðª†ýßÓVèu9ß¶ÔŸœ‘z·üû8TŽÖ]†J;l“Ru5¢í?S.úÕ^ߘ` ²z —”¯øìnåùüúë·õ“ïØÌîܧ+€¯W؈ö¬éñ®¾P¯³Q ¯¤Äƒ°þºÏ§SÊéS•XÓ€i nìl³µµÅöö6ãáAQ°µ¾A‘¦è`»´ôYU¨Ú•0qBlõžÉ©ÒH$ëk› GC£!‡ÇÇ<Û{ÁӧϰuÍäüœ|P+…TÞºE÷mð±CÕÞ%?aÃʇ 6¦é˜Än9a#6’ÁóY;œ¦iÈ‹‚Y°ÜøÝïÿ@‘§$Z2(rŸßPU˜Èz–sºD(’ )2$°j‡ÃÆšðïÆøû$•òñJ¡µŠÍªµ–²*Ñ©önçHtÂhàîÎÎwïÞe6ò½ï}“Ó3_rvvÆÑÑû{{<}ú”—/_2NqÎqzzê–0À,f³Ç''üß?û·nÞä£>â£>ò–2Ö(Ýæûç;M3F£1›<}þÌ+GComÑzT¯X"õYÙWö4Ñå9´b•åAÅ—ï»}ÐA)EY–^ÅSUÁºLw ©íÆHQ ! ÄZÏç],Ñëºöy%ÑjÃûö·ÌÐ6_“!L ñÍÌ%“É„—‡‡l¬¯³»½ÃÚxÄí[7 Š8P׉‰¶Ö@›7Ñ´Zk£m¥Ntô[kÃÀÕJxÕÆäð%>ärrIUVH n: Š ß®a¿Î|€mYúç`>Ÿ£’$>‡#€žÐ² ·ì'¼"CiMšg œ/(Ë2(²d ëŸÇ`‹×ì}!—Äàõº®ý€;MbÞ‚µnÉ~¯]JHœ°]V°âàí˜o#*•¤ªDÜ[Vkh¥Ô˜JgYÎææB8F£1ƒÁ€ªœ/ ƒ¿é˃bc»שŽ·{L "H…·³i.//™N§A­-"hcƒõÍææëüþŸ0ÎPiN–e(­9==ñý™t1{äóG¸¸¸ nj”rŒF#î?¸1†—/_FE¬gÅŸ¡ˆlÁ¸Þ‚„I’P‹¨¦Ý_­EHoWæ3†YP@Ìçsê¦ò*ýD#CFÇ(ËI‚E¦¡.1”¾TÛ÷ý:gr›="ûþ:eÐ2OÈ¡µ? ÎÎNY”s‹ºzc¢`ûóãú²«ï/¯Ôý_ב$Ú|‘þ|=áeùÍ´N×pN2ÎþäÏVcïùLÿþë¿ðÉ>G¨Œ·Þþ€Ÿþófcû6‰*ÂÙª‘¡EM6T,¦ç<úˆñÿr9¹$¬ñ£¿ù;Þ{ÿC´†Æ…ü"Š?³’’Å¢ÂYËÿó³ÿÊxmÈÍ›78<|É>ýœüè§™²(kpº—ÑבNì5,®6׫½#KÚñÕŠÎU[ÐØvY‡m i*©1<{òÿóüß²˜Ï˜N.IÓ„{÷Þbww—¦^pyyʯûšÝÛ(S[°2Øô­Ó@— v—ïï×v—-êúgw ¼µz BÒûöMu]#¬OÎøåÇ?g8(¸sû6£Ñ˜Æ8~ûÉï™Îkvnm‘fV슺ÄÁj2ϵkøË{¨åÁsöÚ ¶XïKVÈ„ÁbYÊ òϿă‘.(ZD–¥`Kšº  Œz6¼y½y½yý·ÿZq$ˆàC]Ãdj©mÂùÄprf)ë k`4í(j„l°Ê $›`jƒ’‚ÑÈP !j¤(ÂøLÑÎì_|ÊÙ÷š.&Ì˧4å;ïÝC8…V­MH'"L pÆFàB/ïv÷‹LӔŬâÉãgì=?À™vˆ‚÷\V=™VŸÎ)Mš%Þÿ×y0BJA]/ÈŠ‚ãã’ûWä‡àë"X2õUÖÜ¢îb©áê¼½ƒÓ:òT¡TÍî¶äÇ»Mž%§1uÊÙ™àÉSG’Hšzˆ­5ãq‚–·pÆrr {Ïýu´V³(kÖ7ÇÔÕÈK#­DgàTƒgRž<¾ .oP›-ÊÚ`Ä‚Y9%MR]pzqÎo?™³»ûyž†§W-Ö 8::gQúv_‰)Ú<÷ ÖC¯„(‰Bø&¨Œ‰—‰Ó7"Â3r|±a¼¹µÙú¿„H®ü-;R¶²çÈòä/öhíóºêl+\ éü+ÿ½ÆøÎ¹ÿŸïŸßnøô_à,ÝûUµD»NZÀT{ gž_zÿeè_Ÿ½]FFûÜÙÞúìûrÿ9®³Z˜Õ#Àþe×G8ˆ%¥Ó×­ÚðD*ì!ÖYf³9³‹ M9CXC–&ܹ{‡Û7wÙÞØ`sm»»A!§ÐJRd)u¹X韅ÇÔÁÛÚ8ˆž}• ÷F ÁpPP7 Ã"ãέ]¶·7YÉ”âùÓœž‚mX,æ ×7ÈŠ"ÜG®léð9¬Násˆ°i;k}öƒ[îôYš¶û¼íšÊŠ%¡®KÎNŽøô³‡EÎÚÚ:IŽÆÑþ(²Þ¥—ÂËžFÞG-u™I8‘Äáq«Kà‰3­µÏWZibû÷"Ë2ÒÀ„ÛØÜâÞƒ, ö÷ö¹¸¸à÷¿ÿ=Ÿ~ú)¿üå/ã0º t†uû¼<äù‹h­¹¸œ°¹µÍÎö–?·œ‹v?2 ·Ò4ÅÇÆÆkkkL¦SŠáÀŸuÁ»?z?"Éu\’.t×] Z}Ý™°ªtê³üÛAl;˜¯ššÄ¤hçÕJý±Kkû”$ †–Aoâš6M—ŸaBèt‘úgÃô”­­“m‰{Ù.dEXUm8=»àøäŒÓ³s66Ö9>;e0( ‡ #ò,§È2_gX¢ÑöG)Ÿ>»qí \PKÝ?hGp~yÉçóäé³ÀÔnêÆ „"+,ÃÑØ«Òšà È$…õVPeY¡ç%‰uè XRB-…-/ÝÑ…/+­PFãKšg,fsæóyhbl° ñ•,)Oúª5O {{°¹É‹‚ºª(+o š5£LP õô'W¬ÕDÌ™ ½¦áÞy jø"œ3P0Æ “`ád *Ø«‚gÍçy†×š.ÎO9<Ø[*V÷¢/;œë“‚:°\ƼÈ܉%‹°öóöÕ «{QŸ¤$‚%c$Y\Ç‚ˆ{»¯üÏuœœœr~~FU—]ÞFTî´ê†ˆ‹ê¿^T ¾^Q²J^‰d-)i%GWU¦ÝžîœYiZPWŽËË3./f^%RÝX¶gyÆÅùûÇ4åí{ȨI\…4‚,+¨«’¼H±fÂtzÎ/þ/ü—ÿãçäh$MyÿÃï“È"\‰mÀº‹Ÿµ%z5¾©k³ùÕâ’~ð!ƒ¢à“ß¼`V:Ö6o¡’µÕHïÛ#µ÷ω.X»ÍêCx&½b%ÓåJur嚯þ¾¯!puÉÙñ>Z”ÜØ!hhšŠ¦iPRðáGßEHtÆÓgûŸ^òàÉ—bE‚u:äZÈÞ©×S/DËže("*n—²ú`«»¦K詈éý]z™eôÕÅ-`#¢‚ÄÙå “‹¦—§ ‹„¿û>‰ÖñÙÃ/˜—†;o½ÃúÖ.Nøï眯S–æK¶O_ôÆ¿·Tìº+Ïêu„¯h î.° é–­–ÛÁÂLe‘8_W”‹7`Ûככ×€CD[Äy.a2©˜L B¤ GŽ[w47oCQX¤õh¯•!nÉiJ:¤Z°³SQ $i‰Ö¢Û°e{°}óa£`5ÔJ\Äí}?ë-„´òÙOŸ½dssÌÆÚ:£ñ˜<°ÏÒ4éÃ5ÃL!°q=ch:[P–“É”'OŸqvqŽkBP+ÉÃûík0ÆR5ŽÓ³’ÙB ó•&¸ºñ‡U° ÇæFÁƒûs¬â\êÙBã‚4Ø^lŸå× µÖz½ÄHX,æ¤ië­î(S²,%I2À!…ÿnÓK‹3PÚJn TŠÅiR‘¥u5G0@ˆ1ˆ†²âÜ€ºšãœô9 Òb¬åé³SööJ”ÜæùÞ #¼t¹(™ÍgŒFCR9f29çáÃ#vw×ÈÓ!Îy–”Šã“ ž<;¥®A©)ïíÜJqõ5ÖÎ’W§[*¥Z~¤_®ä5()I”&Ñ\Ó…[¶Ì,c}#lD¤áä•Ï(úl“?ûpºSl´_8‰uM¯ ¼Úýµ ð_(ø×*ü{¿×ë2®³)Z¾žÑÝþÚEYo³(ýpÞ2™ÎR‡³îÏ$‰¦Ÿ'ÄuÍÁWi„XN½‡·÷va0zÝ:ùªàUÛüç|ˆrßΡŒ^iÏ^â•ì Ð"¸ äÒg´Ö}­û½d‡˜cñþ8GSU,fSæ—SL]1ÌsÖGCÞ}çmîß½ÃæÆÃ<÷›Jõ†{ŽºòVZÉÐ$Iï-ÝkÊÄŠMnë§žëg-Z(Ž\IrU°¨+Ö×¾‹k—SÊÙ”ùä•å™ìïLo£#]’DNÆûÙS]Xc¼Û­~0¹d¥µ²g„½=^»`i“å9ÃñˆºZp1òégÙÙÞ&M3666GXkº€E)QʯAV~^ß"«]«<„U/­M±´¤¤ô`C›E¢¤Ä6&ž5ý÷”JƒäyÎúú:H%9¿8'Ë3²,c}Ã}ë$A)Å|>çåË—ììS–%R*~9úo¿ý6ÿø~ ,0´ÖA%iIÓ„õõuyÁùÅE°uIÂ÷vÐSщžEÁugQÿÜ¥ò[²ôxÕÚ_ÝÇúÏ„©›`OáëÑ–(­pƯ•hLY·§ uP¤H)1MÈÆ CGѸ+LÇ./ ;@ó{£Ly†ÃãcŽON½­è `8°»sƒQÈDYH’%$‰VAÍ ®|¿²,#³}6_0›{[édÂÓgÏ™•%³ù©:I1ÎÑÔ UUûÏõવÞTH©(Ë*ØÑ4^i®£Œ!îßûp V,¯dïuÖ’¤)óùœEU’–)ƒÅ€õÁ˜mAÞz×÷¡îöx`‚ȬH²4ª š¦¡,Kÿ9…‹Öy1xÚÚ¥-[ mß³}Öœóy:Ò{€7ÜÛÆx ¨Þ>"•ŠŠg,I’Pу€ES0 PÊûÇ÷ñW€ûWk«@‰R*·B]WlÛEAYVÁó=X¹ÇlmmQ×óù<œ)Ι8X¾sûÎŽ=€‘ŒFcêºæôô˜¦©Xålnn²X,ØÛÛóÁåZ{ïôш4˘L§LgŒñõ¹’ɵöߨb|¨ÎþJ' BJŸWSù!¬íâEž3¤IŠ@p~~NU–þŒSŠa1`åÈD#¥?/Ó°¨JªºÂòOkéVIPB!#©áºïw=buÚ)ÜÊ:ë¡rk÷úž½‹fˆ€‚W߸kßs5÷éUuU»&¼Z¢=?åk³Ò\ð´¯+ËñÑ''§,ÊPKù_ÎY„òÒªjXÛ“jÇ£O?asçŒï|ð ‰ ''ì?æÿú?ÿ øä7L.ÏhšŠÍÍ{¼ýà÷ïÝE`I…°ÈõÙT~­¤R£µ¢ªJ*~þÙï™OÏù‡¿û Z+þíç3¯,k[7A%¸&ôȢ뾄W8ÿŽ.8ØE8"ì_ý?%VnãÚÕ ú¯• 4K$¿ýåϤ »ÛÛ ¿ùͯ98Øg<sãÆ.UU’êŒ?üþ3Î/füÓ{ ’ƒ¡¡%ý,}€ p}(`¥îÂ%ùºí‹ÏÍr¤–Œ*=3ýÚSà ¦i êzÆ‹g˜ONÙ~ôÃQ×–ÇOžr~9¡6’ûo¿Ï`´Î¼QÐf—ˆÞõ§b¥~ÿz³¯¾µÙëûi±¤^ðêßÖÅÂÅðêNù!zõ‘ˆà¯\SGâʰáÍëÍëÍë¿i€aIúÖûoKg¢U¤*G8IžÃÝšï8vv§dÙ9Z×X³›¬—={&_ƒÒǂẦ¬3½ÃêÏô=\w :䒔Эü!º€ž4IqŽÏ˜Nf¨c„” FCT`¼s÷ãµ”“Ó#&sÊECS[êÚ0›Í˜Ïç$IÂÅå„hVÂ`…£ ¡d°pA y¾wÎÉYÃh=A8ç-§\ x¹¼µ oÝÛàæ]œË°F!…W7x9zãm×xßK2œÂX_Œy°D“¤ ÓÔÁO³ÞÌA"Ï ¬©PÊðIZŽ,¢˜‚ÊY”%‰ªŽJ78g¨+‡1ÅÕ¥JÀ%¤Zà¬D)ÈN$ŒÝ`2³+IrÅöö:Ç/Oiª†²¬I´@ê‚Ó“Ç/ FÅÜ%RÖ$YBY.8¨©ÿ?öÞëI²#Íòû¹¸"dêª,  ¡[NÏpf¶wÉá ŸiFã¸kü'–Fãw{¶ÙÓÝ PZ§u•»óÁýŠˆŒ,Èž™Ö5 ‰ÌŠŒ¸ÂýûÎ9ß9¥WJz¶×z›Xm4^±ž„&kÕ yÿR,…];g©õ õxõE÷Àº¯½/2MÀt¶XͧœžaJè×ãÒÎ6?ÿÉÙ Ù öS\z/;66û2Øãx€V …PíÚä{tŸ³°Ü™z9î­£†HtDQìmm²i‡“£—¸Üå3²¹UUqB,H-—BQ»^Ùr³C@Õá½>X6X$Ö`¥sçò4º¯m¬Ï³HÒãÍ Žxþü¿ýÝï‡ ‡Cúýéö–J!DMÐtU‹í¹p÷j;þÚÞÙÊv²FÜšî¾óŒ®4Íupn®]M (©(«’²2üéÏsç«»lln‘¦)i¯O¯?ðÂY–sppèüû;>>æýžwßy›Þ•«~Op!ý© x·Ì³9;;ÛlmmóøÉSœqD±ÂÅg­®GúI˜®ÅÐù°ùÀZ %Â3À ·ºnuÏŸ¨}úCÈha<áoƒBFØ@ üäM‹„`-Ľ”i¾ðA³Ö‹,"íë"kyYb{‘8.‹¥ü¥æìÜ—µ KX¯´çbŒ ~ë``6YÍ NO¦ôÒ”(òÊÿA¿ðÞÚÚòdôªö8Nxñ⇇êÝ9(+?Á2›M1ÆRïYm,˜"®uDU–>¨S+4-Zøó"¥l,~†Ã!›››<{òdÉCÍÞEG÷þ–Rú½×Y¤lnnP–%y–ã¬h@ÝáhÈx³Dx D'ýiÝ´ÂÔóÙ‰—ï òüýDóÙ»÷²\_ò.aD!ÛÙŽ‚ŸÆ¶Í?Ï4“û®#>Òœ-ˆ´ãöí?âª7®½I¤fóœ‡rrzÊÎÞ-¶w¯xë«( ¯+ÂPŠÖ#º2Á¹Ó%ÜE=—{e¨º·à$L2¶'C†ìçL3ÕຑԮü®•uI“³>¿ý5-ýšlx}¼>^ÿ¶ ‡.»Û!Þë w_,•TÆáÐ$©àÆÍW¯966s66,Jà|hÔ 7d‘ùQPKt$°DÄ z’8¶mx¨ûáM×ÂÏ«¦0BÖ A34õd€ßô§EÖØQYï%n¬e¼¡yòä1LJŸ ”g­Õì,|a¬Ê)´ÔJ¼Ë ¸Î ¨Œãä´äË;Ϲ´ßcØïá\F7Æi”ŒÐiг ‡Æ¹ Ba»²¥Øtڧ‡CWÆ5Þ¼BX´’TÒŸsÝïƒTÆ!„+"*„œ#Äç*²¬Å‚ 7è±XœQ9s~¬Óg[áGýxî¬÷¨6Áö0/ ǧ ŽN,ŽŠÊ ¤ñÞ»½^ÙtŽÖ¾Ë3ËÁáŒl±ƒp)Z(  Žú<|ô£cHÓ>pÒg‚tF_¿ómƒóׯXC𻀡ÕcíTÕÖqm˜¤W y»™Ö.¥8i›ÂÞþàVB®!VƒÊºáXÿRÓßÖ£þ_‚hø·p|Ñpþ{]àêQ­ëCrcÅù/ÿ•ù|”12ZiÁ·ïù¾×Lfˆ„Ö€¦¥õwÞý¢ñ~vœŸð­É?W[{¬ ŠýnžNëi‹pW«ÍÏ‘áD $“³S¦'G,¦36G¼uë&oݺÉÍk×ÀY’Xû fSùF½¿8)š€û<í6c5H¨”o^rÅØ¦yõà„¿.Ô‚4ŽØÜqóÚU&g§|q÷+œ5LNOQÌpc©cÒ(ñ@w°­0Ötië/þ–<õĆ ŸÉ²l³³ ¾Xk)¬ –HŠÍ-„€|>çî½ûŒF Šc’$¦×Oö­ZÚjswˆ ‰ÇZ©/;Ýsì„[ io¾m&JWù-À.:@Ðl1çÓO?åÓO?ÃZÇOú3¦Ó)£Ñk芒ÉtFQ”TÆÅ ƒaŸy6çôìŒÇsmÿJc[(¥hÔµÎùè,ËÙÚÚG‡G¥é ‡­ƒ¯µÄ ¯$n™I¸Jv>õ>áîÂ5d ` ÙIUY„§ÙQ•%*i¦&úêýCJ¿^8K”&óʃÐÎù `O’çÎõè_aÜy2TÈV­ãÃ)Ï[àí`dPÈ:ãmkOùn °”þÙzòìZ+?E£|ŽØt:e:›4¡’®Î Ô?W]1C~Œ¡¬<á‘Eq’z{y²AÈÆúÄbC‘çÌg3Ÿ'Ô³ð¼A IDATá…dwú¤!Öl«©I/%›/ȲŒHé0ä÷”l}®;âú™©ªE'ä»¶RªªŠ,ËX,$iJ’¤ž|–â `ÂtÐ¹ÐøöI¥ÈËÒ“ Êz!F°ÃòÀXÔ€©Î‚3Ž´Ÿ’&‰'Aœ£ßï³¹¹ÉäìÄÛŽuˆF¾cÍRg…8@Gš$IȲŒ,ËÃþjP‘dcsLkNÏÌç ò¼ðvtëT–IÓï÷øê«¯XÌæXIœ2Žxñü‰ŸÎµ%[›cFÃ!wï}Å|‘y¾2 ú}vwwqÀéÙ •©B/ü?D'j­ÃI(²HcÃÄPHî5‘Òþ¿…@á3ïDQ/Ié÷û>çÂYlYø=Åx–uWçò \*I2uÚðV»”°Z‹6ýÝ* ½$iIJOÎrΦ²ž<®§àÎ×gâ\ ï–¬ÜÖ‹[Öå6¬mß/ÚeedÃO@øÜa=ÀŠ¥â¶Ïp6åúë(g@ÃÉñÓYFý’/¿ø#ÿÇú<ú-¶Ì1UÁƨÏOös~õþ·ßû1½a'XÁËgÏ™eÓÙ­%EU1m1m0‰´ãÙ³û¼xÄ›7¯ðÁ»ïðÉÇÿÄãÇOؼö—¯Ýb^ù 'S•DZ- b¢ayÆw9 %| ¸’áðu‹ë({‚] ÇáËÇ<ú€k?{‹Ë—÷9xyÛ·oS–%ãñ˜ÝÝ]Œ±¼|yÈóç/¹ví ®ß|‹Ê2h‰ ^0ˆv²ae3­c–½0­t¥Fô•uk)[›HçÚI°×9OvYkX¤«Èó“ÓC$%¾÷6ÛÛÛœœóÙíÛH¥ÙÚ¾ÄxsªéÌE¨]Ý92á»ôümXôšš{©/r,'™¶ä’¿ßÛ^~É&ÓyñŒ°&Ø~Õµ¨c>=ãÑý{Ä!oó5Ùðúx}¼>þmƒQöœ2ìV€ÓVU©±Â‡B+YÐKJ6G‚HËP° `Áh,CóUyD±D ƒ’¶ÛivØ¿4£ÒõÌ©aû?[K k eáú~ŒÖ`* .¢, ”’ ØbM…TšHÊ`9%PB!eíA…÷— ÊOÄÜpÈÏ~q“~o€ DâƒÎL)¨ª„²"Å.Ø^°d­Ï‡(Š…o¬…ŠhXucLc×ãœùVÊÿœ­j€Í+Y’(b:=äåñ=Þúј$ɘœeXg°Œ°T¦Ä)‰“^e„5^ù%ðÅ: ggrP9'gG혪s $¥É‘ÂxÏE+9=™²11õÈŠ9•±DiÁÙ‰òêIqvf¹w¿¢(}ìRi@6 ¿­…Ôß°¯‹c­<«§V‰†ŽŠOKÝØ™H)0ÝȪWB5¶¢”ùÁ«”d®†¶N-ýM†NÿÒÅÿ]³ÿJl”¾ q°N¼L6­k@D;òÜ-´›f¥õDõ6Úç6Ù`=mðë7³SXµNYVìµA¬®âu_»Q¯_`õMŽ:¯Á ¾IÒU6ƒW4–eIÅÍä…ceº¡!þ¾þþ:÷ü†g7Ï,¦SŠEƨ×co—›×®²iÏÛ²Håý¸ñû•“¸Ðä(­šDc<£¤DkÑþŠÖFEv&JL‡,QAɬ¬!³SúIÊÎÎׯ]çñ³§dyá! k™M¦TŒ…¤×k®©è„…6Êr³î„ JåN§kWüù]gÎßRïý~É-Œ¡?"L&¾øê+677Iâˆí­M$‚~¯GUˆ`sãU¢jùš­Ü›Íû‘jI•zŽ\è|]ƒØ¢žš¨CŽƒ‹pë< µâèèˆÏ?ÿœétÊæÖ›[[szvÖ„E/²Ì«çGCÃ!VÀh4drvÊáñY–ñòåK.íí"”@GªÉò“£×ë1ÙÞÚâÙóçD LN'ĽR+„TH-»§¯[§ºn]g·ÆÿzUu¸úµÏ#ʱƓ¡QMF ?õêÁ¤d22pD‘Æhím¡„¿ç‹ªÄXGYTkéÅ1§"»à3…=܉fÀÅßOXxÐ:ŽÝ¿£üW:‹©Ê–T BŒ¬(©-Iºë B…ZÐîŒ+úbÛ絫WYòù‚,NPQ„TQã„$¤WÄF±·Ã1eÉb6'ÒšL)T¤áÏ‹ö(!„wŠ ÏAœ$YNU–äyî½Þ£0 *\PâºfÂ¥&Ïêý þZ„éY¥$Q eYRæy–‘&ið?íúHSUçè½NJ…R:€Ð†ªò z×(ç£& ×“í4Ãáˆ4í5yJ*F£Qnçy¾òНñÿº½>ŽcÒ4åèdÒØçÔëÏÞÞ½^ÂÙÙ)ÇÇÇ~Ê(Ð ÂÑïõÙÞÞf4ìóüÙfó) oíÐŒxùòi¬È憽œ5T@@_©ÕýC†ÞTP·~?mß×­í׊Ö¼·ó„ƒ;gU5ÀëU‚}­·_ó.:¥ßU—jNƒ’),ýžf6;!‰$g‡ùô¿áðù}¤+)³’$NØÝºÌ‡¼ÏÛï¼ Æñûÿ÷7œœN™Í3ŽŽÈ‹’,/™N§¾?7péêM~þË¿áíwßc<óâé=^<{ÀÏ~õWŒ‡)‡/8>9åí¿ºÆ<«b@ÇQÈ{èA¬ç:9 !`žðu#qmoè:õ†Xé³U}'ïOA…3),‡/“Ïùð½7q¶àåÁ?7nܤŸö™Nç|ñùîÞ}ÄüÈ”Êy'¡B¶T×ˈ.qA¦@7»²}.Ù;V©³ó÷Pø™Ž•ž„‰yÑœ=Ñ(ðB§[‡D;‡³†gO3œb«œ·ß~ƒH ^¾xΣG F\½v“Êdc>rYH!á­ rølN.Ùiþ0b¸zJÃú"ÂÕvò\Cò6€þÙõ‘,¢Á]–4‰yþä1ùlJ­ÓzM6¼>^¯ÃLÃyœSˆ6·AH¢Xö%:ñÀÏÙéœýýÆhï«#¤¨Gám°¹‹ðŒ…3`°mÏ‘ï¯²Žøö€«]S\ÑQ… à­¶eÐ:¢ Á‡Ö:¤Œ‚W¥ñJ'«Em@RðY–A%„Ämú‡ …¢âô4çé“;[Ò(ù%A%)•IÙÞ¾…ä:e‘’åƒáÐÀ†bÙÛ(æ¶ãÎÊ•ÂØ5jÉ"/‰ãœeÆœžü‘ÇO¸zuL ¶ ð+A*‰ŠdãË-þ²:ÐùÆÆ e…%››cž=_©ˆ$Š©ª KI‘ÏQjŒs^©7÷‰SÅ¢ð \Ôë‘ç9y¹Ͱ¯_ÝŸqèûú½Z¨ u\8ù­¸(±¤À¬ªÊ_×WXùh<Šƒ%‰v­oí*˜Ú’CÁ–D´å èX5u½4¿žIó÷½]ò°ïz+ôjÖjˆá÷õÝ}}ü÷B4¯S0uÔÚk ÑXDQÜfðÍï›å{q=xUƒ@m`®Xûs ЋøÖ¹ à¢Ý*ùæ¾ßzâ1O\Æt¬šfÿbvqõóõ@ÁúÜ›É[ÄR²»µÅ‡ï½ÇpÐgrvÖÐï%>0´ªš@]IpYƒÁðœÍBÛ{Š%‚CÖS]Ö6D@õ ( VŠ`%q…%SÒ¤`<“¦)UuHÜë£â”E^’gJÇR]J‰T*ôËnùO–-‘šL‘û¤]MHÉö³ˆÀT[çõài¯¶¶¶™NÎøèŸþ g+v¶·xçíwG”¦ZÚ#’¤Î5pÁÖAœ 1¢UI×ësC0‰•5W´”^öž_µfó9÷ïßçóÏ?GA¿ßçáÇܿŸápØœ‡4MIÒ”ÝÝ]Fã1B+Ò4A)I™ç|yçׯ]eggkIá^ßR´Ö ‡CÒ4õ ‚¬,AJD)Z#*K‚sWï]·æù¢¾G.¶‚û:9­5U°ç±•¯#’$iœ›ßåZ{áE•Ö¥_cªªòBƒ@JçHãØ?V^¸&Ô´IýûDˆñÁÂIJÙ¾—ðO˜iD±†òŒóBÕR¹MXuKy´…nëÇNÈhªŠ g¡r ç #µòìBˆxX÷´ ºYŽÒšPB ¬E;š¥÷)¶ï^Eš8ÒEžS–%Z©f2©kÖ}-Ù!jBO)å­WCýš$ ÙbáAäEFÕ¯<ègm¶Õ¤ž­mL–ž»öÞ“BE±ÏÚ¨*?UV8ëÐg¿9m>+#‰"ÿ<u½~ò *5ãñ¸ÉÛxÕºþmk«$ñ9,EqØœ¯:y4R–%E‘{«,ï &DLóüîîì •äèèç\ÈuÙBÉáÁKæ³)I¬ÙØð–L§''M6Æ0í±³½Íµë×yòô1§§§Íçñ=‰l,WñÎWíÿ«ÙQ5†éœO¤³AP¥µ¦*ü=¤µÏI‹j’#X:ãm¥” {)¥5TÖ•‹ oLǺH— ¿p˲Dà°¦ZÎ×ù×ïëëg±Rcˆ ï“nŸëXºÖdÙ*Á`CæÎEïs9s¦Î÷+ÏKýy n›ú.øÕ£ÐZ†°îe1…'áj+ !Rð§ú-wïÞmö¡|ÒÆæ§gþóþ?999ål2eîg%uCØÖkDÒ"•äøà¼ý&Öä¼|†©r>xÿ]¦“S>ùä66¶ùñO‰%Âásm([¡`C|~²AÐFy/C&"„f#.Î’ÝéÑ™v«ErÎ •åųìl xïÝ·(‹ŒÏ>»Íáá)I”ò³Ÿü»8ÇÓ§Ïéõ†\¿ñI:BÈFFÍû>7YÙà9¶!PÚ{À“’]­§ç!ÖÝG~í<Ê‹fJ±>—²±”¬ïa!À™ SUL'gœòî׸qã:QñèñNO'—ð£·ß%Nz”Bcñv®™Ôðd§ï:ä_(rp™x©Ÿ‹n†\Ý{˺¾a¾Òya¤'æL‡xù|ÆíÏ>E+‰³Þöî5Ùðúx}¼>þí‚M+ÖÁ®µÚö{¨ðaÊÎTô“˜­­„÷gœ;fg#úƒ’ª*‘bJƒ±®Qh€Ã8‹R‚4‰ÙÚLŽRœ=‘‡¦ƒd&:ª°ïbå{EX~ùs]Ÿ Vı"N4à-ê¿,]cµSÆØéPI ¼Õ ”h|¹c­1•c>-xòhÎO?¼ îAV=Œq(¥ÑQé†|öéÙ”¿ùÛ¿¦õßزâË/îqýú5¶¶ÇX[ù '˜Ï2^péÒ%Ò4¦2%R ‹9wïÞgÿ*×®\A ‡©U)ÁÅ(cmÞŒE66?á³'I‚-§¡¡òÍÊPT%ޤùü®*I5Ø¢¤Gı#/ bå(òkt$Éò Ãá€Å"¡È •ÉQQÅÆ¶ÂÉ9ÂOžž0Ÿt1…Æ7.€+S ߨdI3–Y7+ž¨]°µñ஀Î=ëûq.(zõ^lkr.(‰Å¹‚±6Rwþ±çUŸuH` Ž4¾å!/‚¥°Úö3y×5h­°îzÎ_Ô0]¬¼¸©ü>Ïó¿îõÓ}í{UàÞñûÖ5ðnͳpÑtëÞ_íÛîílìŠwzê«ÒدI!;Çñjpõ÷wAÀ¥÷Ül¹xZã¢×þ¶çµ&„¿ë>Ô}ÞExΦÓ)épD$%Ƹåa»Œ5¼Š|Y1ê?ó,£Ìr„qôâ”kûWˆã˜ÇOž0›œ1ì÷yëÍ[ìín#  š”8èZ7ñ5Èç×8¿î{ BAY ç'è@Q„¢žp°Æ¡¥Â9A/í‘ö<ð%1B*â$Á É+Ãd:%©*úý>iš¶I]‚ªY?Û‰Æ÷%0¼ŽEøÌR+¤R~½—2Œº{µfYV¤iJ´³Ci^>çOþ3››ìíí1è÷ˆµj$IÂG¶´rKëwposº÷ÛrÀ.+>öµôp•(î>ƒggg|ùå—œ±·w‰²,yüø1EQ4çouÿŠ¢È{­ AÇdÓŸñ9~ð>×®\A+Eáõ?:Š0ÆÒëõØßßçè舢¬ØØØ + NNO‘QD”ô(«Š^¯&ŸÖû†wóºȈöº­ó¼ï6ùç¦GŸõ5¿ðùìØ£I)IâSTKë›_{ Æ”$qTk\[p¿~ +ªZ•õZÖñvÈÎÍun•¥ܳ«]BöüZe› šì—¦¬‘X3e ã4a6™zû™ U˜& ÙV¦W:„¥[Y§D Ó4m¦$r¡N­ÉØÆ}™L•áŸ:k@ò)¥0eÅ|>GÊcú£NІ ¬‰†Z#j¿t8ÄÜ •⬵g –Võy«Ê ‡C®_¿N’$MÝc‡dY¶vZõÙ ß=¢(¢( ÿþšýR0ôÙÙÙa6›ñìÙómÑ*Zz8ŽÙÙÙáää„“““æÿÇã&§C)Õ<ßUUqzzJEÍgÛÞÞf<ó»ßÿ–¼(Âl˜o­5¡ÿ‘aÒØ~»Z¯kQV[v¾+ÖŸ¹%©'¿:çË ‡‘ ’˜ÊÏÔ“¥5ÄiŒŽt˜ú±D:¦ª*Š¢ÞÏTcÏå÷¶vêÖ:_WÛ5ëÚJØìjvÐÚ¿×YßÖ ê¿g;çgÝ$Ãê÷ºÿ¿±õ“-ùÝ.,Õ¢]Ú~§%2­µO½”ʯ_ú§Ö[»Ïf3ŽOIÓ”!Šagw“ÙlÆÇþ ­z(¡UN“ç >½ýRk~ú“_Räz˜Švr³{OuðŒ:/¬» ‰Î^ѵÕåkrã–3BܲpItê³nßÙßhå,ùÃþÀ`0dgoí]EÅg·¿¤²‚ñö6ýѬ,QK ìe°-Æ I€öSÖ°bô}ú+0£PsÔÏâÊùR4DŸöõû@8óYõë„éz’ Ïs zM6¼>^¯Ôê_éËtZÖ&ã£QD™Ïxú8cc$zƒáX#å(B±)|÷‡NÅ\ØÒaÊœñf‚“y°!‚sŒü·Ù(šPh…ua’ÀWK¢ £§ËB•À¸ ׌ˆÖ@™’Í­M’$a±˜3›ç~CÑŠˆ6@ÉZ¬¸E-ósÖ¸¥q>ã< á\°èq’<3-ôzŒcªÂ’åvöcz‹ÐÖHN§%Ÿ~rHY€u0´¶fÄBS-èŒV®¾nM³×õ¥¯ï§n1ߎ•v 5ׄðùf”æš¼šÌ{KvCÅ:"‰:¯aÅF©§– ñÐùK+…b÷i­ ?cMb×]Rê‘Ýú~KÅs­L–+çb}bÅ_:ãá"üë2¾«ÅÓwµÝ¹èwýs…ZŸ1.+^Ì×êR· ‰s“8ÐzgÛàWæï{¹ŒÕ÷j· ù:{ˆZ¹ºT¬Aï¯ šü&!Ý_w˜ ý}÷îæs8‡)+м Èr„ŠZVhr­è„6z&MçÚˆVY¯quSe!Ÿ/(óœë—opýúuÆLfS=|ȳgÏ8:>äÝ·ßæò¥=6F#ziÊÝ»wÉ ö/]f{g‚2>IªªjT±~OóMTGÍû©ªÊ7{Ö+‡€UJÖû«W$ú&ÜÇý^JÅü„Øxœ2Ë ²ÂPEs½#iMYÈŽœ¬ïI·"½*Ý4Þá>ªßŸl‰åúg<ð"ÐQÄxcƒù|ÆÙÙ)Ÿ~v›+W®ÒïõÙ¿´çI c»”eÈ^­_§\7:XpuIïÚBŠ•gZ)Åt6çáÇ|õÕ݆8›Lxúôiô/Gë©Ø+Ø¥oq?yÂÝ{÷¹yãû—.y0טæy÷6C‚ O¼(¥PÖ2è÷(MÅîî¥1,ò’l±À¡Ï]ž¶c…€o­×j4_vì-Ä׊]k•*/¨­àïsq~z°!Ä”‚(AéŠÊš0áÔ‚leYÑë§!H3df¸`èXpX‡p«ësÇZCŠ5û§hÛVëɧUaP;•à ²­åYP¨6aÕAÙc-¦ª(²¥¼ª˜`‡V‹.TJŽ“ØÛÙTU£êGItgJ˜Žu^÷y«IË(‰±Æ0ŸÎ<˜[äÁ ßÕWÙƒ~½¦4¯ öy"ì=š$I)óÒ‡b—%EQø€â±V¯éõ4‰ 'Ðv„µÈ(,oåT}£(j²€L¦~JÈ[“ú©+ë¼}±­£Æv§¾D&?„[Oš×wå:R¹Î®Çž Y,š¿¯uÄÆxL¿ßcrvF‘—Xë0•ôèd¡ôz=.]ºÄóϘÏ}¾Ü°?`4rtt·Š÷{’$åÅ‹—äEIYVÄq‚Rš­ÍmLexúäóyÖXP­ k~ˆ‰Øú5´ö™ ±ÒÞ‚ÅxrJÕwsTaÍ-MIYUÌóŒÊYdN’’Yzb¤&ˆÊ¢lD;~Úσæ.µÞÅÈK9¾qþÆw`yÕë¯ËÖäG¬'¬û™ö¿%°6-:Y)µ™PÞÙ?—¶ÙT'÷¡“1$¼õ/JS „ôˆʇ/Ålïì±È,²!#O:ZD‚8IÙØÜb8Ú`g÷2—÷¯òöÛo£ã'b6·wqRrrvÊÇ÷yÿGoðÖ[oòñ?âølÊ[ïÿ5ãñ “–K  *ì:ûÄyÒA°Ü’ek ¨–­ÅZŽ'Q¥dÐòàÎŽŽ_ðó÷ß M5g§Çœœœ¦)[›[\»v!Ÿ<åË»wo]&ío Ó¡w!”½ž•[ZW\C:·*êÅÖ6Áƒë2–ÚúX°¼}¹¥ìs:Úú¬>“.¨ÿ«ªÂ‡†Ù䄃çOq¶âÃL’öyñì€û±ÈJ>¼õ½Á‡ÂG²šDƒÝ4dG ÎÏv¦øŒ`yª»ÉsbxM·lÓzNp'›º­¶­ Jd Ò¤p-™L'={ÄÉñ!RÂék²áõñúx}üåq~íû#<\grÌ…àÒ™ „%‰z,¦ (f Çxcˆ5©"œÐ~t;l.视K»kg(UÐ tRÛÎøBï»ehFD¾¨}h»$}P=E`Ä%ÎI¦m>H±2$‰ãàð%Ž‚HGˆ‘P–Æ[EùR­ñÛ¶®3êél³ )–“üF<>ãÞÝSƃ”$ÚÁ¹9B)?¾®JNOOpÀÍ[o £¸€Ê*cž-ؽ´Ãõ›×¿q‹¥0Ïž`ðYN(ò² B!UB’Žph¤JJàœB‘Dý1᳤aý8ÅÚaqqšçX㿯ƒ{¾È© ?¾-𳳑­Îe\½2dkNfÙ%©Ž•ãô`ÂÆx —qýÚe¶wcˆ2œLøòö ŽN ,!Šz€ÆQ…ó­Ã95mGísÜ nÉNü=m\˜©‘Û Ztmᢤ…)JâCVEì­Cj)ë—•qTÖyõžµ)Ûù Ú?EWñy8}|ïü»VM–•ñ Z)Û±¤ÐjûɈ–ÜðJ+"LC8¸më ÄU^Y¸8:û$äÂù"²UÈŠ `·2ò+:Ëžër-áyÞšm™Y×äý%H†U0¢.~ÐM`yºžRk•Û’(NýÚ§(Š:àí7ÿÌ]²á"2bÕn©«”+ÞÃ=/¯úý6Ø9÷oÀÖaªSœ3rõúþ3håýÁKZ,y¿ºõÓ3•]%~ò˜§Ïžsåʨ JG!Ä8#I¤aBuL¿—ç‹ù”X+\°ÄRP”Ö–™mÑM‘ IDATuvEç¹­-&ºë˜R²-\t×ä5 ý4!›ªPÚâ­´V\þ^\"W…@JS ¢ØêE6XI:Gn‰v:X„óûukßhëtÑŽ-ÚùP{÷5 dûz«wŠ;·ÿ¹e” rvyrÃ9ÑNB„uÅ9ª² ,4HÐZ5 Sm÷TO$˜ùœ¢,)‹Ü_“º] Íôpm|fÝi´‰0‰!JbŠª$ËXgýT“ðPŒ°uˆ{˜–êÔõýÒ=¯JGtTMzU”¨Hûl± 6kzd4V/m&FPžW&„ù›(Ò>›M8ŸýÔû½^J¾_¹Ï³u€±£²‚Ê ¬HI°¤±NyeØGµ¤‚f0øŒŠE†p ¥$R’­mFƒî?d:™LÔZÂXÿÙÆã[[[|öéŸ(+Âgž†Cž}ñŒ¢´è(eoï2ãñ·oÁÉ鄬,ü”’Nè÷‡L&SŽO}ý/¢6³ÆÙáÁ7«a^5½$DJy¢¡2¸Ê ðv^J¤s˜`{TTY™cp>cP P‚^/E)EQ–äù¢™’ó–S9Öú,š²,0¶Íàiì¼Â²nM ¥Ö‹ï¡ü&“Øë¬‘D3Au±êÒ¤”K6‰-IàÖjüZ»ÇνÛ!B û|¨£“!tžÆR³±„Œ¿4ñù:×®^aowŸ7ßz›½ý+dyásr`½}—µ~ªNÅšáÆ&IºÉÆæ£ O¶ml ” Çï~ÿ´´üäÇï"üù“™e%·Þz)"OŠ ƒà£C4„u¼u•«§:Ö^.ˆZWƒ=µÍ¤ì€ê-Ê~êÈÚU£ñóöÓÌëüIPú;gýe¶`Ôïa«œH9þtÿK„ÍØÚðÞ;ïb­ãÙ³çcQܸõ6¥Q$iŸªÍÚÝTÃV6ËÞGϵ“‚k¯:uY-0]"òÝ’•*¶kÉíB Â6]?Uá\í]êUØ¡„,%ÒU¾|J¾8Å–§H¹†¯É†×ÇëãõñÏG8´J· ¹€–è↢cÏÜÙœsTæ‹Y¦XÌ ÅÞŸðèÉ•‘ƒ0TÎ[)Õ‹t¬4ý~ÎßýÝqcmJQNÑ©„@6áV+œïÊ“,ùâµÅX=&Ù*Þl jS¢z¤»> ¾€J’c‹ f´XgÉó"oØâš )ÁЂKï˵R»ª„?ÿéׯ¼ÁÕ+{H}Œskâ4b2›pãÆuþîïþÖÚ{W† ï½ÿ!?þÉφSzß@)Q:â­½ÃüŒÝÝË8+Ž6pΑ¦cvv÷ 7‰“>R–%èõc´Vx¤ý>±XÌé§ ­Øj†V–~?|Ÿc´U$}Å /q.kJ°$ã •Y°·—pë&LO&”e ˆtÊXŠ"çäøéä9½á”÷ßû)§TÆqr¿ûÝ„³3ÀÅ¡‚Ò3õ)5¶µôÀY7“ ¯.ëªCCùd›QÓó`‘âd·I¬•ÛÞþH†o6ÞáµâÇ9*FG>UJ bI®&dº÷=®)ÖÕíŒhóŒ4vW¡°õGð:·!Å´# `‘ŠP˜ÚÐ$ÖK¢™4ªÂ3­s߉bø¦Oòºi]³ô*Bá<¸ï.hÖ«üxý8ôêßsÑðM?ë÷%¬µ^¡º¦y½h²áüyZß¶38]õ›b:sz:¡ž„ˆ´òë²™þ¯¤¥ÚÑýºÁ_GÐØp†Xv5¯'3Z²ŽO¿{µ‘“è„¥Ô¹¯¸Ü¯ÜtVmÇZÅ‚5¨Ë#ª"'Šc ð¿¿ªçœõ®-D¬5A¡nqÆÿ¼±–2Ï1eA6_Pd9ÖÁó—/9>;¥´Ö{ë#˜Ì€ãÓÏ¿àôl‚T7¯]cgw—ƒÏyüä ×nÜàÍ·Þb4y¢8ŠPJ6ûxËS–EP†:²,÷žé•!¯Á c1ÆúÌ£Ò¯wþÜzÐÌâH¢ˆ^’k¼±}«ÖƒAŸ*HÖYæó9yž3ˆcuÞÓ¾ÎGXggçÃ2­õÑ‚BàBm‡ 2žL)¡72Ê68:<àü¼ÿ>Wö÷GA)Vl(Ý׬‚neý_å¦ÚºI„¢D®Y/Œ1Ìæ NO} lžg¼ùæôz)R ãš?­5ÍZoLåUØÎâ"RŠ´×#/ îÝ¿Ïí/>çƒ>À”½^Ÿ(š²XdÍg†Ã»»;1œTÄiJÇŒG‚ù|NQX[QÕÖaÖ ¥j,»\,dXwé¨=بd° 2v-p/:ÓZGH¥x+%¥5:Šš SÉegø{ž”ÐäÆ"q^½Ï«rõk¹·D¨•¿‚¥IÅú¹Žçw7 ©þŒËÊÓuôÂÅÄú·Ùo]$ª½´­óAÐUYP ¥ÆT(!•ìì³Þz'/ ò¢ð“-R ã¨ÉkmYê1šs^ôE¦ªˆ“„yU‘å9ZkŒ1¨`oÚ,å7„NJ‰0m^†’êð õ¸*QÚ gŒµ—=®K‚´ö']‹­¼5š õ™â$&Ž£@Ĵ׸&êÚÏ[„xÁ‹RTÖ;‰›°N Y»Š·;âê¾,×]Ýp¯ËYpv:i@]H¢í-Êp}‹ SY¢(!â¶ =ßÚÚ¤ªJ^¼x&G4½^Ÿ8Ò°XdŒ ›››”eÉÑñ1ÎA¬c"1Ž78:<æøø$d߉&sEtîoß¼­ÖÝíõ×R¡Cö„1Røëß(‡ÃDï"[x»­‘'¥òSÚóÙŒ"÷$«t"á0î (AÅÖÞ6yžSe žýþœ—¹R;¸ó:’¡€^U_·•”[;;u§B-eºtkœæµD;½ú³í*ÎÕ!ÝŒ Ž;_kÓÖÔyíÚ%:=ˆ ›/å–À[‡[ ,oû׆‡õܯÞvswg‡ŸüôǼqëG(à„d<Sä•¿ÇA)í‰DkÉò‚¸(ªàðø¤bwï’8ø‹Ï?£*æÜºq…8RÜð€¤?äʵ[ÄIJf:ueˆê«¨eAQg¯…O.‰céæáuç!–å!i‰€Ø Ö±Ö"£X,xx÷.›£õ‹Ÿc­åÞ½{ÌfS„P¼ûî;ìîíP–ÿí7¿aºÈØÙ»„Ž{8`Bî_;¡Y÷uáJólóumÙ'k’<äsº†LïÖPa}j¬ý䀳­H¦qp@îÀO:c(³- Q î…-s.ï^eÿòe¬u^ÿ,DÃwU _Ø*ÃhÄUbs%ÀXÉ¢”TBQZC$&) #AÈz¯§,Æ%³©À¹(d8Èö— ÀU€^£Nþ¦ŸÞ \ãGeÀÒ‚q®Ó Ö„e+J“5¤¸¦©RZ³È2ʪ ‹?'&„†™J¬8ÕÒø–wí§QKxÅ™÷áüð”ßÿîÃx‹´?%J`¶˜2=ÁÉ+Œ·6xðèqâÕ 8…±ˆ¦äÅ‹ç&Q…IEQäL¦@aÑ*æþý‡<|ø!{A¹¸àþã¯(™€.1V"¤äÍ·cöoH*«0¤°ôËdþ©*Þ?áÝ÷4Æ‚ŠEQ²·'IÓB&¥)*¯ÚUÚ’¤?ýé>óÅKnv„©rJ;DÅ1UYQfv¶á¯ÿvŸëWKd“‰âóùg`K|H7'«0:mq&o&YjðH (Cà#ãFåî3Óõ6­‹‰Æf¡µ†‘JÁ»³NP¿UøÔyÆy婟šð¿OkÅ´œâjOD¿mUIux© M­8Î>ÀƒE2(Eë¡õm¡)Æ”ÁÀâ„§Õl$-Ë ­„o‡]-~qµ”‚áx£Y¯Úß'›°Xü‘½½‰#Šj¯sá³3¬¥ÌròlA6™Ry³÷•¡°¯0¯ÕÊþÙÓLg ¾üò{ÛÛ\ÚÙæ7ÞàãÿÌŸ?ù˜·n2ØÚؤÈ3lCÖQTû¢TÚ(ûé€jXaLE‘çdÙ‚,ËÈó"¨ÚÚltz‹š~¯ÏåK—øôöí¤kÈÍX³»»ÃÙÙ‹Å‚,_ ¥WÔã,qš`LM®µM¼èXª;oMP§ o ä}¿ý}¥œ$Ž“°Îú5w4Þ`:rpxĽ{÷yãæ-ööö|#)kgØóåRйQÜR–…è#ÝŠ Þ-/œXwž4±Ö[Çñüù3”’lnn µÂXCœÄA R“=§§',s”ô~ØH1Z+t¤I’„ƒC?Áñèñ®ì˜^¯Çt:íÌ59ú½”7®óðÑ#ŽŽˆ“”"_P–!ƒÁHKâ¨1ÆeÁ|>c0ðÂ)%qéÄŸÂ}]G¾!¤·†€Rþº×>íMG¦ÓH¥½‚¾((LE²bùl¤•uÖRO0T$iŠ5%…gâdÓ3¯hv‚HE”ÅìsLP‰ºŽruI%¼²w g—‰¦¾põøª…Æ}M¥/Âzîÿ¶¹&^ëe™#µD›û?…)l»ÆqŒæ‹Qµ>£­Évi•è.LDèH‡<Ð:"޽hg6R•UåCQUƒã/ƒUõäecu¦º„!„Ûøq+7Ÿ­á¬D ;€“ë]åªu-}¨qVúZÉùq"d{Ÿ„¬Ÿ·cJ››ììlû 6¬'_B?P–†¢(Yd9U˜Ÿ3›Íü{ÑŠí¬3ÌçSâX£µâÒ¥KdYÆóçÏúéë&G$½”é|Î|>¯Ñ´°–ÖÀe=ȽœGóÊòÐvJ¯PךÐW9|¿…pT΄ V ¥Ï iòÑ„#NJk(ª [•ĤTeɬªÐB!Ð*BKí'CâˆÞpÀÙ|Æpcƒÿõÿßøõ¯ÿ‘ÿéOÄQ„–*\w±´¦¯Ún.g4¸%Ñà*ÁÐÞêÖnBHŒ3¬Ž6­fYÔûx7O§®A»Aҵͥ¯\3¡Øì;¸Æ[¾&£»ÂC·”Ÿá:ê·äí/B­l¬ µ‹iìúj¶îéۧТµ$I"Ê"ãÎW_ TDe,IÚ$ƒ^S•”eI0"‰cz:a&Dô†1ÃAÂpÐk,lÊ2crrÌõýK¼óÆ-žÏØÝÚaks%cîܹ‹s‚HkÞ{÷]ªªd¾Èxñâ%;[;\½r¬(ˆ#‰Á‚ û‹çÚlµÚâÒgš¥‹ë-ó|¿©´lë§°æµÊ~)OSÊ4#bª#£hò…+m†c±XøZ×ø×~úè'G/±UÉ­›7ÙÞÚŘ‚‡¾"Š`{w´ï³oTœPÕk‚µ~°6œ¢%7j‡ ç'ÎÝ å'ZœK¬ ¿Ëâ’n-Ñ!£­­ØÉùàuÛ!:¤cxúäÃA½­M_<}M6¼>^¯‡û!œKÜzÔ´B4x€ÝÿYU•ãœ#NTÅBF­õˆhÕ¥BtÆÐ„}vxxc«¾‰ßYé~§Ä†?w!™Óø:( ”UIi}W!kµG°;2ư˜ÏY,ìîn3™œbªŠÅbÁlº@ë8Ô"v´®›d -©SÜŠúCø6j:+ùè£'¤½„÷œríú6‹üÿ÷ÿõkÓ>¸ÖaÜ[c€`ä(›¦Ì‡áùñÏÖ¾ ö5ö¾‡‹EIUV<~rŸ4ÕTfJe|øá>³¬DÊJ[ÞÿàŠG‹d«Š1EI•W 5þäC¯ðÒ"LsH¤p$Zb­B¨-¤ž¢“]¬Kȳ »Ûûüõ//“¤‡|ugÆ<7Xf$Z°¹;æoÿú-Þÿ@aí1G/ þðûüö7S¤“Xb ò…m ®ž°¡QwnIÝêÜŠiUŒ *ËöÞKe[¤tr?+&ßìz5ˆm‰0Ùc\ $UUAGä…iŽ—ÐîÃy4Kö-xÖQÆ"ÇyŠuçL¶¨H{UY„×m2|YPË'h‡ÀEãÇ•;Ë7ê&Ï­[¯öðï¶j¸óÞ·B¬óšàŽkGmEhzløýõ³]Q -ï7á_4ÍrëãÉ90~·k W?ÔaŒAkýˆ‹åKäÎñŽ• ÒZ™å (+¢Ä­•òi™ ˆóï­ö£Wââ÷Û LlΩlí¼Õ‚ƺj´zÅýæŸW±tþêɯFßm«Ý×~  Ž"œµ F#t{+¾ ]²õês¥*<^•%Ež‘ÍÌg3Ê,ÃEƒe«`7¤"¯èVJ¡è ¥d>‘'gSž¾xÁæÆ˜ý+W˜L&|úùmþë¯ÿçï¿ói{z9l}êK>ÄZ)¬< ÐK)Ë’ù|Á|>Ç„fÞ‡CÖ¸§C+Éx8dc4æðø SVØÊ{GIŒŒ"z¦‚F=Ñ5Nü¤F¤ˆâ˜ÒTÁÓ¹%‰Ö=së2YlÕ8Ò êµJyd 驎6˜M§<{ñ’ûrëÖ-â("–*Ï Õš€ç%ÂË…}y}ÎKˆÛÚ¸‰š ^¦~vvÆWwï2™LØØØ MSƒ„Fe¬Ajï+zvÆÑѓɄ“³SÒ^íÆc¤Rþ^ž<{Îoÿðþçÿñb<Ñï÷—2U< ¬Ùß¿ÌÞîYžqóÖ-,Žy–ñòà²È¨ªŠ~àÏÓÆˆ,ϽJµ2yîí·’Sè0é ”BGQGÝ^+lj)Ú)DA‡¨©s¶¤l&jü´’õS¶B ¤ö“+YL¨UðBbñAÂ'§§ÄÒg`åEåÈàÑ_Ue ©EWV#±²:ÛñΦٌšýnÉ–ã»HŠêü§56^´€f綦”…·S* Oˆò€ –•J¢Â:*S¢,) ƒ© oÙXiÔÓ1 Šå@]S•þÏŸ?§ªEY5$Bz^¯ÿ5ÈV«ºä(è%‚1Ì÷y6ÃZŸ €ì6\&ôMµâÖ±¹)é :¢ ”j†ŠÅúp´oýîÿÇÙšÇh·Áu¶%Ö+¥zñ¶ÅŸx/¥¤ßësõê>Ê8)æXW‚¡ ê  ¿®Úe9$´QãÕ`h>\(¥ŒÈ ɯý€›üüÒþ.»{WÉ!¬µh­; jr&õJL)}X[£þ¢±ÑÑÁÇØcÔÒ‡ Z¿J•ÒK£ñ&Ïž¡€ï#¤C(TQ£\¶& JU˜ ïW¦BdS][Œç/4G'žGY‰±†N«Å Û¥×n#¬Åš /%i«À`0 µ°Ö’/—`yž3>9¥Õi{€\ëó'Æoy–¢“ÊX 'ëÎeB„brú°è$CêŒóÖ;XÆ£ÛXgÁkÒ¯¯¼gVT­A-Z‘®UÜ—µ–ñdÌ—_~Éþþ>W®\ass3îÍ‹å’v»ʹÓùŒ/˜-æ,ò¥/º‚“ãcœ€áh¬Õ¦Õî0žÎøæÞ}>|ÿCÖ†ka’+Ž‹,KY é÷{lm¬“hÉ›7±8žíì°³³CY–L&§”Iê‹Yñ¤¢ÁQ,çäùDèŽHRÒVJ«Õ®û¢h¥v‰Ú†`£Z‹Mˆ*TZ‡ÒZCi,IÏ|¬`è4¢vFˆ@² ȤF«„V"ÎR 8™ú¬wæ5kJ’@Î4'ñ™¯  Äë“”ß{ ½àWUT†ï´~-*S¬VÁ bG¥b…',I®qÖ/„aýuuÖFwXµ–ú¹@ìËϧY–1Ïsœ58cpÖ DêÉF%£[¢º×óÏ|ÕÓ|VTˆ>Ò‰"_ZÊÂbŠá¬Y ®Ê`¯ÝMÞÑ£)Šœb± (rÊåÀm©$iš ´ô¿W–ý^‡A¿GY椙/¹®ÖAŠ­—…Á ÈÚò"÷ncHܪ³ïAµÒÛåg¸ª¿"Ë2OXyVÓ4¡×é0è÷yúô §“1yžûë'}¹»'-½~—õ5¾øâsæ‹9H‰TšÑúÏwžƒóe¿ëkë ¾úêKæóEˆ7ôÄÄh´†ŠGaŠ)d}n;›½û=^qÏ·žøI•Fᣩœók³ ÷GÌC—‚D)\šxÇ[èI”&MR2*´ ªÛz`r>rçæ-ÆGGì=}ÆúpˆÄ‘†¨/)`™/iw[¶žã«×»Œ=ˆ.ÅŸ”üò’ç—ÄŠ^4cžU„Lõ/ô­ˆÄŠ( Ä×óØËVŽF¯”p«£¡õŠuS8¤Ð(©¨ìRÈø¬:áîRúµÁš2Ä?ùŸÏ?6ìOërN§Sœó{NÖj!”æíÝ=n½õ>R&lŒÖpÆ1>9Sò“ý[.8<Ø'óú†ž IDATM~þñÇHå;w’,Í<ñá ÄZþÌ/‚ÀÊ›.z1<´ Qg3Ht{DÞcmã5³犸ÖK$•XSpr´ àÝwnƒ+yòä!‡‡/0¶àêÕ+ŒÖÖX,—–3ÄlâLp&¬)€î{z*‹w¥ùg@kí×ÿб@£KÉ_nû ¼3X²NµŠF¿›¨ŸÁí,,HŸD ¢ÈLN^HÃkÛ¼uûZ 89“d]®Ýx‹ùÂaœÆ™ª3ÅúnÍØù$ëâöp QÅïùŽ+ó”B= ¥E|^”Y «_âœÀ-þ½Šn­¾nt¹Ð»epBy1f&yxÿK\¹dkc›«—·ÈRõ†lxózózóúóZÍ®ÀVè´Yâè¶ׯJFƒ¥iaIB힟¤eȤŠl Y»ƒaB¯7£Ý$ÉÑJx%ß/>êì‰íbÀx5W†ì^ßýUô2üÚQÆoÆv‹µÑD+ú½E¾`:YP޲0^ À¿Yy`V‰Ú^hpÖ„ ·ÒóP>uÌKË2|úé î?8¤Õ1d-…kOkð¸™gnêè)<ÑR©*ΣÂ+¥¤”QÅ+…Ï}Í— þð™'‰”Täù"C^‰!£JÇ5Õ¤a€•@"eQë·`™KæKÃ7ÇtÚ ËñŒnG°(BO†ôqMIªB°\ä8cig ‹yÉɱÃ)Y²† ÐBÔ¹ÀÕÉÙUJ¼› ²àÇ{«y+H·¢XR’›2XÀÏf²*GsU$As˜¯2½uU ÿ_HVâzh’L {,Y£ŽûPJÖŠ1)v%¦f‰åγué¹±Ö+1EiÁ/>þ¸ñHHœUä %µÎùrÔÅbÎt:ã‹/¾àç?ÿƒá[Å+5Ǭð¬y…ºœý–ÓË©O^A6¼¢tÕÕ¬Œ ±SÕoT&Æ…U+L˜yQÄç#KÓ:ÞÚsä†àâBâïJ|_ »yŸ®*BWŒ‹:.꘾—:ú-‚sa«ÖÚ¢(Ⱥ>ÎÂúêµßG$‚¥ûlÆXòùŒûsik“µÁ€^Àûï¿Ï'Ÿ|ÂÿøGnݺA»ÓfÐíùȘ²ô‡ÓcS=S2b®üzU0ŒF#’$ññ)ÓiÜ{‹‰Ö´²ŒÑpÀÚÚˆ£ÉkO>ŸwÑ äƒwU–˜ÜRZCÖjyçžV°+]6=—gÿ_Óeè9 Ô…,ï#Z“µÚLçsÆ“)ãÉ„õµõ¸¿,BíOœdh50®¤ôE¨EÁl>ãÅÁ‡‡‡lllÐï÷™L&±ØW†Î¢½½=Þ}÷]”Ö¤YÆæÖJ)9>>FhÅp´†’ÑÚ:ÜýÆG¤]ÞÚ'èõzÌ— JëÝ„Z'h­¹¼}‰ÅbÎÉÉ1o%o±±µÉ¥K[ܼqööö˜ÍæÌË8X á÷¹$I(Š‚e¾!/_/–è$ñŠî,óÿM½¼ ‘}'ãSïbÀç‹«$%Iúƒišz0Þ£L4$!/‹¸&Xã]‰Òtº]œ)9<>âÑã't³”Û7®³¾6¢ÛiqttÈÝo¾æÚkôû} S"«õHÈ‹¹u.ºíŒµç­ÑhÄt: }/¾ìÙ9¯nlµZôû>¦g÷ðˆV¥†“!£WkM§Ó¡le,—K_†]ì’tt7’3•Óél9æÙu¦zfšƒ°,rœ€v«…ÒwVp&IÊ|Áþþ>Jª8#¬’Œ¯zf_dlÄBE ÖZJÄ4My¾ûœÝÝ]f³Y–±½½#Wʲ$MS¬µL§S¯VŠårÉöö6?úÑØÜÜä·¿ý-_ݽË|¾`2™Òj·=pl-'ÇÇ|ú‡OyçÎ[\¹´íÁ„RT„‘‚K—.±·¿Ïx:aooËW¯Ðív‡\¹r…ÃÃC89óøñcfóyP¯Û•kQ‘Óé”Ä”‘ˆJ#”j”€‡ç¶áûDYHJWÆ5Å:{î:œ]gƒÐ?[kúÎ;ïpõò6ùrÉógϸÿõ]úý>ÓÅ"I’„HPª`ñÿ©#€)JƧ§H©hw’(кVÇK­Bg›ÁËr¹ôÎ FùÅ5]Ö±(÷N¬yž“ç9­N'~nµC˜èÐñ ¯wµ§®¸ªŒð«a­ªg f¢ùo ¦,X.sf“)ÂúØ¿øïÓívk¶&², %õ^ŒPÅ 5áããcfóY\µÔà y‘×Ñ—‚oÝëš÷jš&$‰æðð ¾¥Y+em}Dž/Y.äyî×(SÅÖy2»•i¶·/‘¦ /^ìòúý>ÆNNNüú&%›››ÌçsŽëÏ(KC§Óa<sttך³sˆø“öÇêkˆØÿѼ‡Úív#bî|Œ¥pþü¡‚ŠÚ»¿Ó½2†ª(_)Îô.Qu„U¼þsÎRÍÑÑ”ãã=~úÃ`Ð÷N‡ã´Rôû=®_¿Àþþ>_}—$Ièvû¡PÚÏ|Ö…³uo]%Ô°ÖÇË9[`ÊÎÁÑQã3Æä˜*â zSˆˆêž¨e¡îÌœ'=¡ žPÚ;žƒè¨þÊžàÍ´f63™œ ܼu4S,æSž?ßÁ”†Ñh|YÒn%Þ=h}<šÎÿ+ÿn"¹â,ªGBÖ1™µMÔgÄjYŽdÁEb­*• >_VÑÕ2¤Äžµæ 'Âl¡Õ´¿¿Ë‹ƒ]”v¼ýöL1£ÊZxC6¼y½y½yý‡y šÙ¨h( loÃb.XÌÆJ·D&:ˆ$œ!$•ÖÙ¡…¤¤Ót:%IRÆ »JÿgáN.Øj‚ADÛ_ºPXGÈâµñpS(:”(Ê·[ÅÞêí¡`¹{ ΧÆ’JáUü‹¢ðd5€g›¥^±çWà¬Æfû¯çmÁ&âŠ3`–³2ƽ!Ͻ՛ofwÖÃ?§yõ‰WºC³,8–`9V ¯#…_EXÙ0ÐeExŸÊg]: Âb¡Š¸‘N…î åç0k<§`ý}ÔNS2­PÎøÃ`Èò­;?CµlZ\E]p%Ï B¬¨çªŸÑËŠºy@çÏÚEc1¶ˆäͪBZ6âxê ‡• V*pZ5>÷×»×EPvc*¡fŒÏ¨º(”Ôhí#²$DÅC‹qTZK®\¹Ì‹/ØÙyÆ/ÿõ_¹ÿàþàC6¶6eI–$ØŠ8 ¶wY)mªûj¥Æ}Gðö»„ý6ˆÕÌg_²–ÅøŸe¾ J$Ál6çW¿ù ¿ÿýïèv»\ÚºŒØòE´R –!‹y  …Ò gÉ’³Ê«€ýoÅ·¨µ¥”.ú‚ïo­e^,b´ƒÀеNÎÅlÚ×yYk#pK’ÝË}î«âhâú{á{«c5\P9ý…¸üºHx¯ @ž- eQ’/<€'¸jŒ¡(K_òë ÍRt’ÐôiuÚ¥HRŸuoƒS§ì9¬æU‰m°‡¦Ä:‹J4*Ixøä ,ek}ƒDµËWO¹ÿ>ï½ÿk£kÝ>©NVɶ3db<¸] ÔÔZÓív½‚:d¾Û?>F¤»ûyA›xF‹Ö¡¤ï 9ÞÆŠeÉ­µ/±õÅ 8ã"ñ¹¹œ¹ªõ8>£B`\‰‘>žÐÉÑ¡$XE»Ýæx>¥( ž={”÷«$:d¼W¹øââ©ê[Ÿ…f1}S)Ù$çf³ÇÇǰX,ØÞÞ®{„ MRŽ ±Hz¹ô=[Ãá;wîðÁ0™Îæ|}ï^$„’4C‡øûðàÑCÖ‡#†Ã!¥-È‹%F„Ò`çF¬¯¯óàÑC^¼xÁ³§O¹uû6išÒétÐZséÒ6³Ùœwß}—ÓÓSœƒÙlÝ.Ëܱû3žLX.|lQ·ç5H¹Ò{u!‘T [ÊÝéÃE@\c_ª¦œÊÍ&5³ù¥·.ßb4²¹¾Î“ÇOØÝßc¶˜³·¿ÆzûŒ£V8±Ò5JÔ8ËŠó‹Å_˜¯hÎÉ.t^- ”Ò´•é]~éZÝ[Iš2ŸLÉ—K², d± ½-®I¹Zfî(êeÁr>=9"DIáÆØ3 tc–­DQ¿À)±¥ÿ»ÆÒóT K|ï‹¥,-‹Å‚Åb1^„’$ _¸lÊ­½ åIµétJ¿×cëÒ%ƒŠîF‡’£ãc&Ó Ë<§Óí “Ä;%„Œ‘ŸÖ½À u¡ó.ÌívÛ«ëçóH~(¥È²Œµ5Oæ³\.Ÿ»D…Vž<=s|r Ú.ƒÁ€ÅbÁr¹gh·»ôû}ßéȆ¢,I’”ápÀææ&GGGœžž²X,¢ãìÏvî {žmtª(¥D2uOãþ•¢î[SR’Hå $!¼XÇÕ_[JVQRa¬¥t–ÁpHoÐç“ßýŽvˆo«¾GåšyyÍ9VÕìß"òðd\S$"W³•Ù·üJgšpÎ…MÂÈGÄÔ1euÇ_3Ñ@r¾XwÕ¡}±˜ÂÏ-óÅ'ÝÞ×oÜ¡,-Ìgcíi¥:ºJ«sBUíœ@*Í|6ç‹Ï?ãôø„wÞy—›7o±µµEÖj‘¶Zô‡X™¢T†É _~ùóùŒÿãû{zý>ÿ÷û¯Lç ~ò·¿@%)È !Œ•”ÁÑ BÔï r¼\TŸGˆ ªºªõ|ÅÕ»ÿ*Õ» i>.˜7ú—\@x²2gïùL9çÖÍ«$Z/r~ûÛß ”b8rãæu’DóðᎎOX߸ÌúúeòŠr‰“‚,íDâ$L8çç,œÅ”KO2Øg–8[úsv ¬©×1;)<ù[¹g\ãÞp¾!Or©Úm\J”JQ:W‘ ¶N·^ȵóì!ÇÇû¬?þñGayøðh3‚·ßù€$i{\£š›©ˆ9ÛH±¡ÞßëûªzDª~ŠŠ²uäDc®hˆnÝÓ|`dõëÊýr¦[°ÙlbœÁ¥/Žv‚ã£fÓSÞ»}‰w޽ý»_‘/‹7dÛככ×¼Wµð :¥À&fŠnGQqƒÏ²sU’±(!C¤hX/:MкDëD‰|¿Wûaü{Ò'aÀq¸ðÎ$äîSm^„MºŒyü©N™‡¼d]©CIÊ©EÌZ=®VÍù¼b¯þ¨‹ºü÷t6 $²ÒÜ”>?Ò&ÃL8x‰z ;¼[¨ë¯ïâ « õé6–EWCuˆ:ìÉ•gö«…b9Rý»Q ]¥ûC€­8‰ðµEøä\P$Hª¢Xÿë,ñDƒ*:<¨3SEeTl€jù!„ðb‚Xú+VþŽ56*]9ÅJôÚI iÆ_)¥¼ê©y>§ˆ+‡ÉÕDyÿGç#¥ò6ñ?Ö4΀ ƒŽñÅ%U‘¯W/a¨–a³±ìÕ6ˆ·ïH”üê)x¿o¤ÇŠ‹±æq`˽û÷QZG5Øj?Âë}ßZÝ&V\[•úžð…¢²qÍíùÒrÇ·†(ׯJÜ×kl=gV¯«-ÛÆXosw 7MÃҞ脬ݎQI~´ÝÂ5Tüqï ï7«Bâd(€46®qín)GûûÜôˆW®pe}k—¯2™MøúÞ]¾¾{—kW®°Ö.Ù+„eÃÉ÷*2¨ÊŽå©HÓ”år‰RŠ 666Pêeá‡ÔºX.„h«®¡Öš^¿O‘ùîºÝ.išú"ÊŠ°w«qz´BöÛóÊ÷A)N‡,p­a­wÎqppÀÎÎW®\ñ¥èY‚ Ž€x/^$xøŽÏœŸ¡lS‹¢ð''œœœ0ŸÏi·Û±Ú!B¼QB§Óõ>EÉ|¾`>_°X,i·;¤i†Ö o¿ý7nÜäÅÁ!Ež3Ÿ/HÓ–jìííñÉ'ŸÐïtyï½w¯ä·¥·©:¤Ö××Y_[c¾XðàþóW¯^e}}vÖBÉh0òàž))ò’²4ŒÇ!c^zÕûññ‡‡<~ú”ݽ=”Ì'’V‹v§‹"º.zF›ýXÑÙ²ßc䟔ÛôšQ(aþ“JQ”%÷=bccv«M·Û%»~ƒn·ËÆÖ&''Çôû=NNÇìíí3ÍIÓÌG:VeÕ1ß|•øîå³û+îMPÓYÇ|:CIMšµ‚pÀ#³,Ãä¹sÌgsÙ¥Ú!¦J6º4Î+Á¥’H$6IP‰¦(KвD»Jèá#›lX#ýGw¡l.´ºÛÆKYÊÜ ”Å3…Á&@e×k-i’ÐÎ2À1ŸúõFûuËóÙŒD)¶66¹~íZì©ö¥|wQQ<ß}Îþ‹Xki%¾€Øç‰KßwfM¸?\ìÔZÈñ€Æ…bAž!óçãrœƒ^¯K¯×ãÅ‹}&Ó‹ÅÂÏ^2tH8Kž/Ynpië{û/˜Í”ZI•«×˜Ï¦”Å%a8èÑïuÙyö˜ùbs–$Ñw½u;¼Ø  °{ ùïVˆ=»RÆþªõÎÆý¢ú;JJ­CüLÕò@ãÙJ¤B'ëŒw|7!ó°~k±’VÆG?þãÉ„G²6QE\s«u¤é¦¹ðçoÎÆ?f/~ž›±o¬ˆ–š1l.ˆ¿jç³”Õ÷ð®•U€õâ3Ký¬Ø;£”ÿLŒqAµu|ÌË\µÜ­lR#dB¢4ÆiJ›ðŸÿ×ÿwÞû!iÖa6™qt°ÇÑÁ3~õoÿƒƒýz½ÌÏÕAXæIK\9–ÉxÌøô”çÏvxüèkkkhpãæMnÞy‹÷?üýÑ%ÒT’(Åoókò|Æ×¾þæNh:½R·0(Oç;&C”– Ï™òeT˜¦‡Ãª ç`KõÚ5VÚœ"/@)l£Ò \8ßÖ¤—¯Åq´´âу¯hg’;·®’&’ýÝ#^¼ 4†wß}‡^¯‹RŽî3ž.ظ2"ÉX›uúX|…ªægkÀæ˜Âw|9ç Ö,Á,qe ð‚?c,Ö¬­ö- .œ±^HZ%n‰ÐÏ# D1©Wì‹¥,¥ðƒŒ÷¨’6|îk P°³s% ®]½ÌÕëÛ ,w¿þŠçÏ÷è 6é÷·€6Î&!~.` Ò"•ïnJ ¤ dG-â<—_ BkቔAtw¦Í^4𠣋ë.“¦¸&ž;-±Ï£êVñR¾ÓH†Hñ§*ØÚ²¾Ö竲ð=3oȆ7¯7¯7¯¯—ø÷8Œ¬LÉ SÖ/ŒN` ¼R T8ç‹àÊÒyukج¥T)Ȳ„Òhíheެ%ƒÀ6p§RaÙFü‡X9ˆVoLúݳ٘Á÷¢'|9š ÌKDËg”š²Ä9?æÉÕ þŠ ÅEò!ZÙ©Á%%½(/õ ZxÕA3ࢠµ6î¼P¬í"ØuÁ$„[9hœ-‡~Ùb V`,‡u&–ÂÙP’h­ Yµutˆ?8ùþ‹ø|»Êáàe)ëllnðÖ;oñÿôOÜýæ.OŸ=ãŸÆOúS>úàC k1Kïdª¢0´ö.!¥&Äby÷M ¶b‰–» £ß­G¯ZªhÿçÑ]ÔJ1o*q©(-Ÿðùç_ðÕ×_ã” 709óüù.£áˆK[Û(JY9¼5^²hd˜Š•kÉ÷r3ü©çU1L¯úº/+ª\% Jy•_aJŒüê׿®ÕëR}ç¼#^ö›:-%eµ®4~æ*§ý•;§;¯0¶Ôi«U¡ß™KøÚÍ]£û¢ÑY!lTÉD7ÊOºý>­v›$KÑYŠÐ ©4ets¬g®¯T¾SÅZÿ\ Y»MÚjs:™rïá#.­¯3 ñ7?âÁƒ‡Ü¾õQÀ°×'I’¸Æº¸î®4žž»¿š¯ápÈr¹Œÿ*’0’Eéž°–ªàØĬÔÕŒóÃdéôk´ IDATJjÉ" ƯzþìóÏ9>>f÷ùsžïìpãÆ nݺE–µP­¶wŒ*… 2A§Ýò*ô,#ÏsÞyû‡GGlooóùŸ³¿¿) D.Žj° ñÅÊ'éGÊXö)C®3ÒÒÊØ×#Îö*­QZ±<{¶Ãó+W¸´±‰‚T'¬­¯³¹¹TŠçÏŸ³÷bŸGóôÙ‡q–²ME, UhMÿú½îõÕ8ýØçã‘ZyŽ&Å8‹Ô*:­¤”´Z-\i(Biób¾ðk“ÒäE¹¥èpRÉ8¨R#u!Ž)I[t[-ŠÒÄ^«à¬wÖJäÉ¿‚[kBé©ÏMY(­X,sÊÂ`Jï"³ÖĨ7¥N‡4IpÆŠàK´ö aE‰³–õõ ._¾L¯Óõq”y qï(Íf2›Í|ôWø}‡ïÍ*•òq&pn¿ªæf[CWSe#šJÝI"q¶67IÓ”étÎx<ŽêùÍsß?5Y[[ãó/¾`™8!I³6£ÑˆO?ý£Šs†,MÐZ±»·KQäX!H¤ÿ,Z­ )àñãÇþš¢žU/Š*s¯-|ðó±ó]CUñsu-D¹^G&Š3à`èª ¤€ w좪\×.Ȳ„eY4þàC¾üòK´ÖdIŠ+'*„ôdr(“~™Kµž åªÛ»ºš áMõ3K)ÑZ…||QÕ$4rñm˜™ Ulm%«ÅjuL§ QªÍõ¬"œ¢+7éVÝ24Ü /©:úÖ—¿Ç«>?ÅÚú%ZÝ5®^¿E8B©”4iÓí´¹´µÆñÑ òåcæ±#±Ú*1(•P&»i¢™ŽO9:8 MSvww¹ÿàŸ<ço~ö÷¼ûîû`Jvž=áÒÖo½}‡ý{<ßÛåÎÛïðÞâÒkd,‹¯:0"–BûyÌy_ˆ¿Nx—=SÚø9•Ɔ³†?§æÖbÊé’ C{œµA@¥XŠ|Îñá>·o\çÖÍH)øýïÏááÃá>úˆ$I8=óûOÿˆu)ï}ðÚ!ƒõKÌ J. mÊ2Ç–9ÖäùkKŒYbËÊl‰µÖCc‚Ø1Øfª˜§p¿Ù~)Äc‹ªˆY†³»EåÅ{Âàu˜¥Rœ­®+>"C^Î89ÚÖKÞïý³ùŒoîÝCª„­« ×.a¤wÀÈàDr†ó«wɘX°9&Î’IIX_›BE'j²¹ŽD'†­Åe5àXI) ÷±„HhS=œÏ#Db1‹%“£=vž<$K%¼ÿ.iªÉZIÄÞ o^o^o^åãÀ_‡eˆà—ôºV3]%(³VRºŒ“qÉd ó™:”¥ ™™ÐdeÅ©%¦\’ê„nFCK–*œ˜ÆÈ¦ú`çø¯÷>Î),m ÆÛ`3ÎaªR(Q)ÿ«<¾nTêvk‘(–Ëœv™EòAàt”X,“+Ãgøö&ò-­Á˜PRV†Ÿ¡6Áù¤!¡ý°"w9D`ÊÛdø|LØ ¥¨;dÈ)^ù¬n\¾-u„HµóV›vÔ“Îß «!K5­1NP—{mEÈ ±A-`¢.Ϫ‰VزD+ö¬¿^®A…!Ë5¤ïëš?C!ÈÆDQ%KU¼ Ì0Ö…ÂHy€Œ çm·RÚp|î¯W¹xïÇtUÇ9!’®~¬µ-¾u ˆI w¼ÒÔ+N”Öè𵥓¸Ò‘&Îzår"ÑHoðXˆõŠ/³$IZñöû=þáþž£“cN§¦Ë%ÿý—¿äèø„ÿåïÿL*”$ÊŠE‘£´$Ï‹¨ÆÒî&0êBﱄøç+@_4lÌ4ŽqÕu°Î‘$º.þ”Aì@¢±NR˃'Oùÿú/ŒÇ'ô‡’Ôƒ\­vÆññÏN–¦ØráeZb¬ÃZïAÚš"³.®]¶êAqçAüê9W=¸\*pk¼{ÄÁúÚZ( vüÁ”¼8<ÄYŸ±]”¥ŸÜù"Õj²ÂaÃ?u†¿iÔ€ºˆHå ¦p1öéc<Œ))JÃt:ãôô”ng;(=}Éqš¦Üºu‹ÑhÄÆú&[›—¸{÷kv÷öY,–±ûÁùMÔòŽÊáyAݵû~sþKÁ\qþ 7]—•€Ä G‘çL§SÚÇ U}%4Ü6U‡Ê|:c6›¡Í`8Š3‰ƒ•ÁJ±î :*IH²ŒÉdо43Ï—(ò½PR¸xæâ|ÏNÝãcüªò²È)mÉt>­AßB+©É´ï«îq¥ùbÎ|>G A+KÉ/,šL&t:ÖÖÖX_[ó×4DEI!‚«Ê"g|zÊÉÉ ÖZ’TÅ=*Ñ Y÷øX/±²‡Ýûl$=@6™L&Ñ}§ð÷àÖæ¶´L'3–‹Âg¤çšø|1÷h4ÄZï$2ao·;8ÇÇÇ, †ýׯ_¥ÕJ99= €«ÒJuÂö¥-œsžL ѲÎùòè(V xí”~=w¥ïƒRX ^(ƒ³h¥I«˜@S6HE¹"ê¨÷à0›IáæhöÂåïváÝ®AKÅöåm†ƒ!¿þÕ¯XÌçŒz}r[D÷Q¢4©Öõy¡"/ΘXëäL¿BÒ­ºÞÎJJác‰Êª¨ÞùψŽ/å./üµ@ •ÂÈ$Õˆq$º…5–çÏžqøâ?|ûCú½!Öä<¾Çr™3ô¹zõÖÂÞÞÓIÉÖæm®\~¥ÚäEIi"ôω V´¦ôC™R§Àšk ¬1÷k¥9òeò¬Lï> µöÕ$ߪ˜ÎÖ$YxîA:-RhR•úMOY”pøbŸ4Iyë­wÐ:áðð„O?ý¤¤;ÑêvYäžà¨žo­¼ËÉ;iTŒ|Š©R4Vq!Ÿ¸¡#¾àÕïÏE\d…È”œ!eö5gƪÓßM"Äoº`›p¤ BMYäG,æG {-®_½Úpþ¿!Þ¼Þ¼Þ¼þ½ ÷ïûUCF^ÀñQÉx2c±èszœ0'Ìf Öz[„M¨™ß\:K»Ý¡×*¸´•’jK¿o½õO8¤¸èþ oº™ñz(ÚE«kZ˜õy®Ò†mKœ‰cÒ›®ï]1ƆxËóÝ]ǬolrtrÂ'¿ûI–2ÚÜôŸƒ,óœÅrÁþ»¿ãêµ+8kaå#•J)€©âü»7Üw‚V²³Ï”ÿ½W%"ÉW+2}>ï"¥©FÄØw_·«P<B„¨:‹óΣ3'â‹?“‹î¦—y¥±õúòúW­²~´¥T>HNkœR$­ýÑÐǶdYŒZP!BÏ û€\ƒ½ô[­N‡Á`Àt±;dk&Ô~úè,‹ø½’$accƒk×®‘ç9RJ®]»ÆóçÏéõzôz=ý~˜=,Â9´”göÂZ pisÃÎÛ’ûÕ¯98ö¶­Nd²f^DÚXlãœóe±eˆÑ!({9SD[ÍUN|.̳6FC®^¹Œµ&–«ÚPbÝïõülÛí±¾¶ÎÿüŸ¿áÑã',–yø³ŽDûÈ ;=ja£šUÅë$¾ý‰' wÁÊX"bEYìä‹%5A ×‹>~ÅçÞ{‡K¡ý\QäEžûù"ð KÇ9âÝ@¼ÕjQ–%³ÙŒV«…Jt]àÔR«Zy,›s¶£,KŠeN‘/Α´Ò¨zUJûµ2Æà¨0<ù‚ÜZocœS¢¼ÚÜñFó¶6‘$ X ù2/ü¯•e:±ó|'º‘tšÄu§,‚XˆÕ®›è¾À­:GòÜ?­V›ƒƒÊÒ„N/A·Ûem4$Ï—L§Sf³y½ª$k} íö¥-–Ëû/ö)Ê©Ûll^ò4ÇGd©&Q’uf³)Ç'Ǿ$Öú¾šn§ÍÖÖ&ÎYNNŽÂ÷­f”Ÿ™É¹T‘Žßö²Î÷i¦À:ƒÄÇç%J¯Æ5箕òdâYÌ6‘oðáq:™ðþâçå#ãZi¶òŒ¨pÌgs´T¯yx+?[¥ä«Çy× ÿΨ¤ã=Ð,v+DýÁ;™VçÃøîw~æ”Rœëk¨þ@ªóÝß6Ï4¿ŽwÔ8´ÊX. ɲ$Ï &“1iÒ¢Õj£$ù”ÅbÈXsyœ«µH,W¯\#/,G‡GËœù|I’*æóÓñœ>üˆk·îpóÖ-ÖÖ=1½óô)‹ùŒ~ð!i¢ùúÞ7XàÇ?ý™z6–4ÓKì"pˆ(¢´‘H ®zg#!/¨Š¾ë `cJ¯ØÏ óùëóé„D ¬8‘yõ¿Òþlˆ:PË2_àŠ9»;Oq¦àãŸý k “ñ˜o¾¹Gžܼy‹µõ ßtÿ>Ïž=çöûÓémÐí¯‘;_¾íì!ÖCY.™™O‚ËkéɆ àɆ2 u±¸xÃêí\w$5/Î5Ïõ.’ÕÂÓ¾”©o¢=9_Ø­$‡/žƒ]²½½É[¡ß髯î2Íhw:¼ýî8Üa¡BÉ£”Ò sD“h¨Ih÷Š3³nµSÊÕàI=+]t”‰3]ŠžÐ«z¡óbƒ$t±ÓÁÖ¤¨ R9ÐŽû÷?§Ì'lß¾Îí[7H’!¼î ÙðæõæõæõôhZÉ‚ ´Ì§'–££ÇÇmöÛh–y‡|J~­óŽ$Óþ𩽮åæ5A+›Òë–ù‚L+¤,/< }_p§REGÅ\tFË* s#˹(K¯7AµïjU³ îÕSs=t»x¤ŒPÒoÈ©NR’SÁNÄ@ûýáÍǹ3¶á*ç¯V÷Z”¬@(VJ‘›Ê±’ÑYýÚEPÜ—ßÉFÉQóp\Ÿ!U£ØÌÀieÀ=[ ܰ)º%…wj¨E¥¤$Õ i¢<°ØˆÄZâ_N7»Ý9ÁïJ4ËŠ::L\««F^kMNÔƒmd‘WEoΕq8©ìúñ@dƒë¤ù9ºf(ñ€!êÈ~ûA­*ÇBø"Y¥ ú$Y›ÇŸ’/òP„VFeµ §³•Tʃ"²é ¤Ii<áÓiuxïw9<<âW¿ûă£>ÿê+„¼÷öÛ,fsþö'ãU‰¦Å‹Ä÷x‹Ÿs/àWW†¦U½ÙbŒ§•’´Åd¾à“O>ãW¿þ óÅœ¢Ìiw3Zí”V·M«ÓŽ ë²(Ϧܹ}‹|ô´8çA‡² ¾GŸH¥±TêøU„¨ºõª€¿4‘pQiõ«HŽW-¿Î¿[Ÿ§müá]Ê:G_8‰D…ÎÖ,Úë€ Ö—K¿êç!»þ¢âèóÀ±x-úªY4k¬Y‰ûù®Ÿñ ù*^oòÏ®ŽT¢IÚ*Ké´º]”$ã/)ër{×è¾±Í5„Õüùúû5Hçóc @£”$­Ëñ˜ƒGìîîѾ~•õµu¶··yüè!?fò£ ­V‹$IbÞyð©ÅŸkå4ÝH²Î±×I‚±¥5^—yQÐê´Œ†žœbÊÒ»’¤Îà_Ù^]Œ§QZ#•" ‰ÉxÂr™S¦,™N}ÏBUŠI£³yÕk4çºCü½á¯AÖÎ|9¬RŒ'£":Õ^!(¥ï ¢YZXA9âÛ¥ò>¯~Vò<çððgÏž1NÙØØŒYî«ïCzu~^`JG‘—H¡xôè1GGÇÜ¿wŸùlÁÎÎ.y^"¥" $PmæË¤oS,—|óõ×üá ÛíðöíÛÌf³x()é´Úlnl°¿·‡³Ž­õ 20ŸLyxï>Ã^Ÿ~o£³jLVy\1öCkƒêæM^ìïS|sÙ|F’f%ÑiJaí¹}Ľäó¬ú%¬1­âLT¹ãúµkll¬‘ʪÜ—š&J‘ê”ö¥ƒ^Ÿå|ÁÚhÓÓ1LfÓfù ¯º´RÄ8ÉïÖsóç#’Ïð]ÖúEQ Š‚Âx>Ë2ÚR², ƒ¥"M)’œ<ÏYÌç$IŠR¾¨=ÉRJSgÊkÏ P’,%+[§cŒ1L§S²,#k·¢pD ÀÖ’3"4¶(YL¦8kI´&me¾·%ÄÐÅ9žšl¢áà‚bYP”!$i–á€Âøø¤Í ®^¹ÂÖÆfèÀª §«»m<™°ÿbŸÃã#’Áp€N½ÍYË2Ïclœ”*fðÛ¸®­ž¶!1ÆÒëù’uïÞ*â œ$šþ Çl>a¾˜!”Àæn4´¶¤ÓéqýúuNOO™L&©@*úƒ!»{{ŒOI…¡ÛNÙÜXcÿ`Ÿež×9åÖ&šN»Åîîsò|é Æ4©¯ç™5‹†Ûðuf›êkT$oÕ‰¡µý1³“2¬¡/Ÿ*GúÙ) ŠVs/’P’¥)¸|ýŸì²¾žaìDB´à Î1Òß'ÓÖEKo} Nœ›¡šùÿ•­î"@´:,Ô¿·:DWÀÎ*ðSïpòLtŽD(òü?Ó(ŸBÖÙó¾IÖÙÿÐç3‹…8~6c/^¢ ¶U‘X ¤”Âùg•µ}YÔ*!¤Âj?B%p2Dc¨$=6ª+´öŠUB¥”µ†@_èÕü©ì àwÁ€±r 9û³\×ÁÅ!k‹´ÖzE•'¨ ˆ«\m¥ýD,ìuÛÔÙÂÙ•{‡‹ë\ó¡{BíÌå‚:,I4£QŸ““cWb‚êPˆÐ«(_"èš*•zô‡ ²yQprrÊÚpÿôñÇ$­ÿý—¿å3åÿøùç<~ü˜·îÜai HtBY,ÑJÖvUñ’ëR¥y½”t`å93Æ •&/ „P(aŒåÙÎ.ÿåÿ+ŸìùÁP::½>›}ZmæyN^’$e<>¥?èñóŸÿÌg¯æ 2¥(?d+åÕÕEQ"@æTý¼7Ã0¤øöË÷×Ïêþ¾€”À¿¶WJ©°†³r}éÃ÷ÊuÚ­€/Ä/­Ûdœ‰¨ÿžøÖï«tBakƒ¿ sD4úD| ­.tAÒjÑêtè­ iw{$YFi 6æKïH‹áJyõž«=Ž ¢+ªÈ˜FÑ·µ6®å:IXxøø—/m²1°6ðöÛï°¿·ÇÝ»_óÇÏ>ãg?û½n—V«@¢Ê¼YÊëÎÿA-^–èDc–†¬•ÑëõX%ƒÁ€íím=~Ji}WBÌ»Qz*Ð8I:Ý­,c6›Q‹ù S^ɬ4iˆM9K6T‡Îf¼[ü=yž#´:žlÑZ3ùâ‹/¸yí:×®^EâdyºúµÄkßµ’Эì¹Î:ŽŽŽ˜Ï眜œp||Œ1†““ȲýÁ öWh©)L@R–%Ëeޱ–ñdÊ×_S“Fα¶±N«ÕÂ2#éx2a4Z£Ój1›Nyöô)_ý5ÝV‹µµ5ŽÉ2¯NÓ”ë×®³û|—ç;;róæMîÝ»ÇÎÎëëëܹu¢šªk¥ ¥-#ëš­3äpÈ­79OøúÞòå’´­_ †ÄlrÙšŸïoKg=º@*“†¬¢¾’4Å”Þõ¶»»ÇãÇéö;$‰"‘‚²ð‘`Æ–[’¦ÝN‡?þ!;ÏŸóÉ'ŸðèÑcvvwü²%E#úò¯K.¼Î+‚‘ªÊüÏÉ‹‚2n”RèN'’JÚí6eQ°Ì}ŒÐ`0ôªÐÊM{9\]™$¸V Sø¸¢"Ï ‡@ˆ‹Ã]H‹PºÐÍP$M3²Vèµ û‰_Ó-Æ:Œu¤i:Ödí* ÷¨d$œs¤­Œ7nÐïõ(Kïb‘a+Dç»gÏžòtg—}Ê«¯Ü®ëß  .[u|’$HkH‹üŵEësHésæš¼…*3A™ï‹Ò IDAT^J¨hïV‡æ<Ú멽 ò” ËêÜk{°!äDZ'n…©~90Ô¨­EK¡µ¦, pΫ”òœ“£CâN‡N¯Ïr9G èÆ J í}ÉÝ»wꦒxŠ`o“¥ggS>øàxíÕ78>>æ¿ü%GÇGXãèu»Ü¼õ ;·^åÚö ,‚ãƒC>üðCvwwxýömîß»ÇÇ{Üzí-Ö7®b‰pN‘eEp‹s2Ø7–¬Â¶ì—…'Ú BrÖ` ¯¤*‹œ²,X¤=a±,}ö¶DQYb¥QÒ!XiƒS€WEäY6çñÞ}þø›ï²5#…WלMNô{¼ñÆÄQÄÑd¯>ü%JIÖÇ›L¦KdÜA' ee#l2¬Í˜ÎOÉ–\éÁSš Â(kû¤JÙPY‡ÖÏŒðêUà¢=éj-S—þB×l~GU:Tp,pÖÐI:äEF+N§3öŸ2è'¼ýÖëlŒ×8<>æw¿û”étÊwßù6IÒ4EY9/„¬Fk‚g†AbQ2öÝÙR7@¸áùçúYN\ئ4±Ž¢oÏŠ3\ 4\T·öÐÐW©93îsr|ÀpØåÝwÞF)'>Dü%Øðòxy¼<þC Uø.òÔ‘§0ŸEjî|>g9ßáì,AEC ƒGîõ2:#Bžãr9'ÏÁégiJŠ"'î6j8Ñ’”þkrâ²0_^ÖºúmK qYP0m6Kð¶¶i´¿à3û&|õsþ‚çí”t¤°J×,x)%HA^dy†@ EkLiÑ¡ùYËhW<©ie.¸KYÕ^Êy¹ý@š¦µMLé°X6’x)š`¥Š~U‡“Z¯@Q•Õ–RÖÖܽÊ×Û:Wç|¸Ví‡êíF™bC¨™    n/Y¸lSB«ÉÔòÅÆÛ¶Äq[&nÃ)·=Q]yÓ8WyIk…°äÕðTå ûÆÏÙ{ð6 T{Ì*¥Ö]*µ¯Y¿ Já™J1™3Þ\ãÆ«LG ““´„"Ïô†˜Òkä·ÞgÒƒ>fÕÆ)¼×³§ÏøÑO~ÂÎî ¾ûÝïñÞ{ïq6™òáÇ¿©}‰ŽOÈÊ’o¼ó.·v¶É ƒ>#”¦åek/$:ÁIüÊ}jDJ(l²Žâ„¼ôŸ~‡_üòWì=zFQJJSÐéE\¹:æÚõ Ë ¥1”&G È³Œ"ËùÁ÷¾Ëx} E G)Ê€hœCJMÇ<ør»wïñÃþ~'¡(2êÒÔ…n+çäüØ« ûË|šWî÷—²—e\ö.6¿Yõ¾ðú~óa­iQQ¼kËÚ¶ åƒôDF_ãٵ3<‚äøá½5ÜÚlÿ[@›ê5*F_e bÝ×Ïšøªµeåÿ«íŠk2!œ“ž=¬#zÃ~Ÿn¯G·×«C“NBžå+Y—…_Ü rágê,˜–uMûõ’ŽoìNŒáÙó}®lŒöûôû6·®°ÿü÷îßçwßekëJ Š«ö†Nx¶¥«ØÛ—Ü#!D=/Vy íg‡¯¦¨²\ÉÝiŸ›½ÄF«zßððM…,Ë<ë:MÑZ3Ž.¬¶¥–©› R¢´BUÁ¤¡©"ÂÏW!¹ÇÇÇ|ñżõúŒ†C’(n6ï­ûrq,\¦½h«Þ³,ËÚþ%Ïs‹Eðq·üò—¿doï;;;lnmy¦w±X,0Î’—Y‘cœ%Í3P’´,H”ä굫$㪠RÙòØ—!—¡K·Û#M—|úéä?ÿçÿ\ß¿êºmŒÇ¬¯­qxpÀþþ>7nÜ`kk‹çÏŸóù矓D ׯo×j“n·ë›U¢¹þÓ¿:ßíímÏÎxôäEQuV™…öœ‚P4 ¨ÀÏÕ÷ÛYUS¡z+„÷¬¯¬,6¶ÆÄ;Û$Õ«”BHXLgt Hæ¸~ýßùη±Îp6=e¾\—%ÖY¤ZeHþ‹(X·²®-£(¢ßŒÒšÚ¶+ŽãºñÞ‰½Å[¯× ×Ȳœ/šºEÊp¨s´Bã® &v”„NYà¬e1ŸaM Wg´›Æ6ÔkEžS³é¥I§CÜí`·1)¬ó97²Êß ªDëóL¬õ`Ešæu–Œ ªÏ¢(‡Ü~å£Ñ¨^s¬µÈ÷ ”â$?áà`ŸÃ£cf3¯ú ‡M ƒhÕ¸þóŒú=Š,¥ÈoÃù&¾k­=7M)lCX´ ëh°ŠRR„Jn”yˆx’ýƒçEF/¼ûÎ7Ȳ”ûpvv†’»7°¶cqãJœ+qAÝ䴤˽nß{a,!ΩÚû*P ¤$ÑÎâ<ïH|eVƒèB×= ïz!VHF''ÇL&gܺ¶ÆÕkWPZ"­Ÿ*Àä%Øðòxy¼<þ]_É¡»ÌåÁkŒ·šñ® í¬ Ë¼ºá`ß²˜%,æ–XÇX™¡§Ò¡d‰uN1èõXi’ŽC'Å> ë¼7dí‘ØòŸüÃZ&z_ÿÂÔ቗øËV )ïKdض Á¥Ê7ˆƒmÓåʆêíE}ý%¾q/Ø`ÙSŸ¿’` 6\œH*âzq§å í.ÉM¸hÒ#8·™¶ÖÖeV)rS„ _ÕεՑhòÄêk;˜<µïVcÛ¤Cè²oÆÚ¦‰T7¤$i‘£”¬ƒ÷"4¯Ú¾‘ÕÂ]ûŸ".iú½ÈÇ]\Úà]i‚â7Ë‘ÒAòΪoø HU…æuF°Tካñ —5”[Å|ؘ+)¸ ÷¬>·k@¥ªqRÑZGäÖ°\¤Ì¦S†k}¶®Œ¹±s•£Ã~ü“Ÿðío½ÏíWn€”[’å)J9ºÝÖxé¾3•I§Ä”%Û;ÛŒÖÖø—O~Ë<Ëø‹?ÿ þäO~H܉ùÕ‡‚ƒápÄÙtÊÿü_þ ?üÞ÷y÷í·t;(Q\lÀ.±bŸTçd¸&A¬u½€·Lòv>V8Î&S~ñË_ó/ÿŽ,-±Î7oÞºÁ»¼ÍæÖˆÙü”³é1ËeJ‘ûÀÃÅbÎÍÝ]^¿}Û3æÃ&0Ïs¤Æad‘–äúõë,—Ù|Æ"ØÒÔÍÊíím:Ý.HQ[C AhÄ‹šd ¥d¹\’e³ÙŒÉdâÃ:O¸÷ƒ^ŸÛ¯Þ¦? ”"MSºÝ.7nÜ`:rÿþ}ž={Æöö6Y–ñðáÏŸ?g4†mBš.XßœoÝ –’²(ÑB²±¶ÎÖxÌáÉ)¦(ˆâŠò¬Üj¨»cÕb­²MªŸ‰s*’¦6¨ÔR z0ðä§§§^ÕÑí(EǤy†Öšþ çŸ¡ ¼ €Íx}o¾÷:ÒÜ{ð€ã“:*Òg·Ò± ß²çjw9xÚV˜^Z ]þ{Uí\e%å›oqÇ1Y‘× aQ) ´f.%Zª„ó¹ e &v»ÝZêZ OU>:çA‡^¿V’l¹d>Ÿ3›Íȳ”n'! „ªÆÉ²¼¶Äª¸Û!ît(‚LÖ¹kÒ‰Zã›9ÂQšÔ·Æ””¹Ï|ÁÊo0²µµÉÖÖ–·U ײjÎ*¥Y,L¦3=~Âññ1R©zÞq¸rA5gõº¶·w˜OÏ8ÜNÆN3'È•9ÝZK’$uNN¥6RJ“$1£áç|^„·Âqhµº¡ª2'’N‡Ã£cŒ±”®¬ G‡()ˆ¢˜MŒñ¯×(\½béÚµkdYF‘+$zýsO¹he×¼”¿¬¹îZþz}@9ѪëåÕ6{Ô6 m¬ÁÚui,Æeäa}OKCVä¦)èõûœžžñãý„8Ž%ð¿¶EÀ¨WeXµ”+Y@”–µbWÕžø!ßMºúk×Z»šÚÖnÁ5©`«ŠzZs­¬«‹¥âÄZçs×\ÛïžV=+ÏÓåV @L–.3LiPÒ[Þ.Ò óÙ¥5EJiR†ÃEn˜Î&œG²&: IÒ%IºÌ¦K¯:’’££CŽŽHºC²Ò²¶q•­k1Zx`1-r¤Ô(%ù»¿û;f“ ï½ûÎ9>úè#Œ±¬¯)²‚¬,YæqÒåm+³eêÏßV ÆÛôXÎÒï÷}‚µµÚ¯Ès²´`1Ÿ19=$]ÎÈ‹9PÐIbÒ,'K—$IŒ —ÓIR)R$WúÜÆ"Ÿsï³Ñ¢d{{ IŽN88xN)®]Ýbkkç¿ýøwŸñƒ?ûÖׯøpy'|ˆ¶Ò˜²Ä%Öœ18c‘NÔ{B,B5X—ãlŽ5y³WqMæZÅãh‚Êm=7y°Áa XjU=¯ÊçH?ß ù=šõûÒŸ¤”îÝ»ƒ)s®Ý¸ÂÝò¼à‹/îpt|J¯7dmm uüžÏZo)mË𤨕1i]“ê̈€(Ô@ï%=šH{Žhë@ç‹{ïF¯Ðxs7ÏIý”zkÔêù ëqîÃãG1eί³½}½ÎZ.—aÏÿlxy¼<^ÿ÷Mõ¯²“~ÁïÉÀV)K0%”…b¹”L§º]X TwÉéÙ”rÙgc¼Æh­À Ͼ;>ÊpÅ&±Ñëktlѱ@©Æ€Dy[SðˆË„ß ²\ô´%òõ©¶šÀ• ƒpM3¸ÚàT~øÖx+•VnûÛY‡p¶®$.-ª}ƒÿ<ªÅêWíͱ¯ý²å|à³Þ^ÔE [É¢­ßµ­ÀU»[Ù„»À ¥”ž 6R\däÔã&lH«-m=\ê숦mÂÌDˆ‹Z*.]+˜» %¤²Þ¢–ç{5MåÏo›Œ‡Ú†Èµøç‡°¨}«MmÛoôÂæ§•SP…<©À’¶ôyµ—·mž©áœÁÚ’|9§ÇÞžKnJ„Ò­Àlׄ€:·Ò”¬ÆN”-ë ¹]eµò@š€ïª9£‰¢˜Å|Ydì#¤äêµMÖ†=úýÇGGüóÌñ雼÷Þ»Eé]¯”£0 ý]–ík*ÑJñêë¯ñüì˜ý“Cþå“ùÁŸ|ï{ÄJóá‡r6›1 ÉŠ’ÿóþ‘O?ý‚þñ÷xë׈eìmW<5o¥`«<•¥Z‰JÑâ‹`ï«,ÐÚ{¾[=æ¿þó8<:&Í Œ‘EÉæ•u>ø£o°¾9`±œr|rÊälá>‘e%yZðÎÛoÓí$”™gû–Î!u„Ò1EaÉsÇ'ŸÞá'?ù5³©cgç÷âÞ½{ìîì²6Z[ѯ¸KÔˆÂ5ë^“ó# ÖÿgY–t’„8ŠH¢ˆ$Ž‚]A-Koq§µÏ QªV ¬XÑ5Ò¶ú‚WÍNðvx³Ù c]ݰ“RiÏ8ŒÃœ-„·{#ØjYeœåg}%ÂFÖ ”ŠèöòÑo>fmm7ÞxGh!|#©²©’òBu)Q Y"j¡²í+ ŸcQ©5–Ë%Yš2ê¸zõX˜L¦>ËáÁCli)¦ ¤€l:GK¾Lt{µ:¢7è·Br+¶®÷DR"”DEšÉtŠ–ŠùtF/é"qLŽOùä7#\ßÞf<“D ËlÉ•+W˜N&œžœ°··ß#¢(âþ—XßX§?ì#”¨iEí\Y º¢$B0êôØ Ù¹z•ùtFš.°qBÜí²X,ÂùxE¡iÕBƆY)QR^P•µ™JÊš_¹6GQD*k£5úZ“gKÙ?ØgkcL¼bÿVÍ9Ò‡ÒbJ?v®]ÙÂ:ß¿sç.6xÒã*Å+u£©WE«!"¿`\<Ä æõsó¡x5¡œ1DI‚Ö=?GYËl6%Ë2od *XnZc}k‘¥©gâ—Þ*ÀÄ®ìïj{%çø‚ŠtÍ"Æ´>ܼ2–¨)ÒI'!JºƒÎ9`¬kÀº*›#7d¨¯Ö³˜ËSdDJù5Lk®\Ùbgû:£Ñˆ"ا ZÅ~β–É|Á³ƒCŽOO)Œ¡ßíÑíöûSæ[$y–IÅúÚñx2OëçκÕ{^5“«ûÇ1½^Ïç~Ô–'Žn7aëÊF V»í{YÙì\½z•ÉdÂññ1Î :q‡­Í-–‹…Y zF£u¦Óóùg}>™ÖŠ$é°¶¶Æd2a2™"ñ5º »Úh$¨¢e•õ°ÂÚ\–P裡ÐUþt“ŽÏMCú½PõžÁgeÏùª¦”’ÂX c0ÎpÌÛÝV²¼@håŸq)ÑQÌÇÿ–££cFƒ!yQÖû>©4ÆzÅeE–2ÎxeŽ¢õ¬ˆ•½— ”@êF)¤#U U®•uÖ[·R)åÛÏpÕ¼´59§ÍÖ–²ò‡S:¬m«‡W³èzݬ®»)-ÖÊiË×vç·Ð—gb ¬¢(Á`0"IÎÎŽ±®Ä9ÃäìˆùbÂxÛDxj5ç-fþ™ÉÓ9¦\‚MdéhU dŽZ”˜bá-—ŒÃ‡)¬k.çœì?ä×vxåö6FZrSðàþ]ºIÌ;ï|ƒn·Ël–ñÅÝ=T4$é¬#U)ãàa¢Dá×lë ‰òë¶-%>bÆàl‰5%Ö–“bl†5Ö–U¥òÖ¤·®l›i@^!ZÇD:A)R‘Ï“Þ YªBFH£²ƒÆE^)‚ð ‡2åôäg ¾ÿÝïÐétÈó‚½GOPQ‡+×nqåúmRÛ'-ýû+IxÞ$q'FFÚwä¥DhƬkuaý4á)’¢FVÊ^Qw3d]¡V5¤ke—¬ sá™­Öl³bÅ(‚cÍ:çŒ!–°,Ržì= Ò‚Woß"Rš"Ï<(Zäõóõlxy¼<^ÿ~‡4ãá÷‰UµMK–9Šæó’ÅÌûýmowxõõÉ0æÑ£%{÷¼ù櫼þ–ºNÎÎøÝÇO9x’¢d)£ÚuåME³ªšƨã÷y¯¾VÃf«–óí£j×4+T`åžo‚µÙªeY"¤kÍâ2ܼy Þ ŠŠ¸ô³ˆÖF³RøòÚ3hÔ®Xõ"vÛjÑ“¬“ #Ø…ÅVÈš¡Ô¶5NÖçQg&°’Ðpqèˆó‘w+‰Ô«Í3ÑxÞWcM¶l͵ “­Ó•ÛŠ††©Ûd&œ3mYô%X”lì?|ÓÃ_ãjó$*ÆóJø·CH¼/Kº¸ Úv« ¤6d8×” ¤³x[ã²:vÚØ mÙE:F’ŠéÙ̳ZL‰»¶E¿×a{g—ƒýgüê×q:ðÖ›o³¾6ÀWt‚tYë°áüRû¢ÛZãû: ¿þͯÙÚÜàÕ[·øþw¿Ãµ+Wø§ýˆƒ“S’8ÁŽÏ¾¸Ë;wùþw¿ËŸüð\ÝÚ$/2:! ¬g?‡bѺ¦9@Õ°s ãÄ·c!/¿ùøc~öóŸs6ø‚Í:¬³ìÜÜæýÞaëʘe6c¾\0›Í=#_i¬±Ì¦S>xÿ}¶¯]Ç–>¿ÁÏQƒ`²È˜M—üæ7¿ãÿñGÌgJù@÷'OŸòþ7ß@IQæ-µF+hþ_áý/¾@ñÿvˆôWÙ4 ¨&ìV ,@„_m˜CœÏ–Á™–MÉWƒ mÿîU»¬Õ9½rE©¶Q‡ù:HÿÏFtôRa[Û³¡¥îòÑž‹uòƒ^´¢^˜gÏÜ"(ÞDÅøBxˤÁ€Áhä™»Jµ°7×jâˆ&ꌄf~v/ðÔ]ý»R´YÝBz_bW18+Nê©5ǧ§såÊݸË`0@iÍýøæ{ßdûú6:HêEH«vB\°«³nZ}Âö㜣wèwûŒb¥À”8Sxæo]ûEË•ÍÞjX¡¬ï›ÇÆü÷‡£5¢8!].IÓ,ä/Ê¢@KE)$Ý^ N`…­ÏH®X¼!/)/+Ç¥cŽOO¹{ï>_ܹ˼|xm­D¬-¨¯÷LõdÕ:—Òƒ •:ãää„étJºHÙÜÞd÷úký“³3Ò4åè舣ýC:Róìð-cÓ)ù2¥×ëÑM:$IÂp0 Ïr S2°ýXŠâ 8==åððŒ%].¹¹³Ë Û#[.ùìóϙͼöæ¼þúë ‡Ct' »7n.SîܽÃÇ{ìîîrãÆ ?~Ät:¥´Þžb‘¥(!I¢ÈÛX¸Õ²Ê¯¯­±¹¾Î})peI‘-c³­P*äÊ´††’‚"4¬x¥·g‡¶ú¡Ý¬÷a™‚õõu®olprtÀ£§y¸÷ˆí«×ݼU3 ]Åx®wÖ¯ Õ ²»½ãÁ¯ @Ú?:d2›†Ï#Ãy‹K[\Rϯè-¡\Å.³Ø ß—ˆs¬#a¬kXâ8|¤ýßIÇXçó*µKš¦>pÛá×F$I’xpQx&yæŸáʾE4…¦òç7%„ûð\ƒTÒ7~+«¥< d ZGt{=t!”$Š£@Dilø¤[dX/¤ôsT‘åäY†- ¿¦hEGܼyƒ»»ôzÝ”BïsCÜI8==ãðè˜_>Ę’^¯O§×§Óï‘fY‹Ûä°¶ôó¤t;=’Ä«5êHP Tót¥>ªÆ`E „Ï´(Š`Õý~‡µµ!“³cæ‹yx_±B¢B°>Zc4Zãøø¤V@tuÄÎõm–ó¹W iE¯Ûemmý»ûµ‚£ 77Ø{ø2>êÜ›Kö=´h± 8sν=l±AU#ü«jUu³ŽˆºñWp>;44…ÄBP48Jk(#7%Ri¤Vy-‚XŸü¿ÿ‰²4Ì‹à×ïèÆ Ýn/Ø_ù¼¼s¥C³¶ã-Èê¹DJ¤öd:^õ¢}V‚ ÏU•bëœ Ñš—Ú¨t£Zç¬ «F°1Uæ‚õŠ.Ú'ù?¢¶÷¿g}@²=§½v¼ W®îY(Ñéøú ŽcÖÖ†)X.—Ì –³³S¤ÐeÁhÔ÷5² àäðAGñÆ›¯ÑétØÛ{ÄgŸ}N¿¿Æ­Ûï T<·[Å6Ø 9Ÿ—”ÄÑáŒq˜ŠÄ'Ì…¹ÅÛ‹³E«ERþ§”hçÎ…=Ç9›CçB}áZ= ª°p¶®­µX<ÀÇŠ2E`˜ž°ÿl+›k|ðþ{Þþ/2͘L¦õ3ÿlxy¼<^ÿ¿<.äzžS9„Ì>ŠÜ‡™Òàœ¤×Ólï*®mç1%ŠÎˆ’¡D±yÄfloYN3æË9‹EB–iÊÒ3É"š]ïÿ'*¦·¡|žÉRû»†éá÷wþÆÄ¾jq„¦©¬<ê]íÁ_"­5H¡ƒï~E„F®C8Èòœ$‘µÏ½¨?oË:è’ð?Y5¥ÄE–YS<7=y)šÛÒ -&Iú£ xUoë5‰Ò]d6‹ È¨ ãÆO°j¦Xï§_mœòX·²UðŠk½‘/tE]ðW÷¥máÁ pc\ã£Ûö.^ñQtmž¨ƒHÏçf46&µ&€ó¢G窴…†=)ªüˆ0²L‹£.«gàgØ Oõ³ ϰ‘uXÏž·ŒA!Îbj1†DËÙßLÍ«N\¯UÑ/¤Ó®mûªÚ>Dˆú^ª`k€³(¡Iç'ÇSúÝ>‘ޱ6¥?t|úÙçL¦s~øÃ –†^Ò!R±±°b-¥)A)ú½6ÏAG(%ùâÞ\¿¶E¯ÓegûõçÎþ ¾¸{Ÿ~w€ŠÙdÆOþ!óeÆÿø?üwl¬°eî›MÂJiò<÷á¡Õ“[áT°Þ[ÕXKi?ùÙÏùð£ßP˜©ãpß ÖÖ;¼ÿí7éu»œžM8:9äøä˜t™zod,iº`0ìñGßzŸn§bR{ Å÷Ñg“ÿÿĽ{_zÉvd(Ê”‡>ãßÿIÇKî‹¢@G åܹ†•ûƒ€‚æ8wŽ]Æ…fnÕH®ç‹ö\~^q^qîgdË“·ù×Ú\ZÊаðcNb ‘ak}ÊïÍY®˜EQ¬žÓŠíS¬šë¬«¼Öœ*Ü è¼Ê´õ\]©ª¼ßì0U[köºì­D±ÔÙ)⓳¥A MˆA@w0 é÷I:‰÷ì¶Mht¼VL©zŽ k‚—•û¯µh¥Z½-·¢òX±zªï¢¸Ðdõ,k߸ðpu‚§Ïžsëæ.ýNB¿ß£?èñôÙ3öxe>ãÊÆVÈ“ñ ¢FE× Gn5OeŸÕ&ÍgÔxV4ÎgÜ( ‘–¡Q uT79ê¬)‚…“?£Ê6å²ÂÆŸŸ·>étº€ Rš4M‘¦Ó)kkkž)X³C>­‚†ýìbl{txvŸŽÑQÂd¾`oï?ûÙÏ úܾ}‹á üf­çôÖ˜©G®³«ãÆykgüºcŒe±X"•f¹L™ÏÄqÂææݸyÉ0î0ˆ;\]ß ¸ñ ÏöŸ3~¾ÎÞó§()ˆãˆ¤ç• Ež“gyí9^„æ“Ö²~>½··aŸý'O‰t“„+›¤Ë%ûëëžžðÉ'ŸpvvÆk¯¿ÎÕë׆ôz}nܸÉéé=âôø„·n ”âtrÆ£Çyíµ×°ÎûiK!èDq/qÒ+B{5divvw¹ñ|ŸO?ÿ‚éé *Iè ‡¾î“A´ÂrãJŒ0~¯D£ \iÊ{/aýøw]¦’,ËA ®ïì2™Ï˜Nç<~òŒñ–÷ÓwˆªÀf!k¶º‘Z–ô»=^{íU²ó+Ž#6·6QJÖJ“抺‰ª¤d8±µ¹ÅGýÚJRÒévétîÝ¿OYäH,ãñ:BÀ³gO1¦lë4Y[['I:‘y­P©ÙB`KS3ô]‹ôTçʵ^OÔ™na4‚·d§p¶¤wÂ^Å5ªñð;UöJeURgE“¥,kEŒß?E2n«ÒïSnÝ|…ÑhÏ?¿Ã2Ï@ ŠÜ‡GJÛOá]û%gÑ"B8 ÂÛF*ZÖ¶ê, ÂÛÆh!•$ŠuPhWvvAQPí]ªf)fµ^q~þWJÛ°¶¿ÃYOªæë ä9K%OÜsD‘& ÙY–®XÒzÛ™†$â\•7'WÔÓíú¨ó–ËEøœš8Öd™ÖƒHK³%BÀb1Gk𫵦(Rƒãñ¸¶í™ÍçD±oO'G̦§©I:]ž=‰ Gt:]zÝ.Ÿÿîw,ç3¶·¯ãœåñ“' a8pïþŒˆaOѶª@Äö\-¤—eÙ²wµ&X(¬qt(Kz\YÇE*ò™ !_&_.ˆtéô˜47$!RFSzŦ)9=>Ƙ’·ßyÛïÛpì}ù%ËeÆõë×­IóŒ'Ï3[̸zýMúÃ!¹)I—g GÄQLa¬'mÉ–gU 48«°¥Ãš’²0^åcBfƒXµÿ[[CûÁ,½`…VQÜ%NzH#dŒa¯H„„÷…s@ªsJ¬KÑÚ«#Ë¼àæ›7¸õÊ-”ÖÑ…õ×:©Æ’ÙB¥_#e <´÷BîœzG´ë‚jU|”vá™3¶!YW@¯}OIÒ‘(gxôðs"Y2^qesç`¾Ì0V0™.ë>×K°áåñòxyü‡;ªæ‹ ’4)4à%âZK66bÖÖóÅ-—á(ÊY^2sƒœ^_“g –‹y*) |“Û†MŸ|1 ҶǹÌî©ÕR®ƒ»„¸@ £gP{ppÙ뉕xC2 œó›¶ŠÉés ÄŠø•sLÿ•Ž«I/j¢¾kÙ5l^ü´ëºpµ¼~…¿"Ûþ¾•‡akAu ® y®©'[žÛÞ‹[T'\³ïWÁÑÚ¸ÛP„s©æ¡} +¤KW¬†»‰ª¡/Ú,…Õ&Þùá Ù îò|áý!‚U“10oDø·-»%k[ ÚŠ hkVg=ÓÄÔmàg•ÛÖ€øMZÃàö€SËÞ©òˆmŸªk|[+–•ÇÛüÆµÌ *Š8;™{†’þ ¡ÛOèFXööØ?8$].xûÍ7ùOú§^U˜µÎÖ '%»»;|óÝ÷øí§Ÿ2¯óôéîÞ¿Ã÷þè;¸Ò°³}÷Þ}—‡žÞûØ:ÉÙÙ¿üõGgøïÿæ¯Ù¯¡#I‘eÞ"E(JcP:ªé•íuG”ŽO&üýÿõÏܹŸÒx ¦¬ÖÆCÞ~çuk=æÓÏží3M=»2„0š²D øîw¾Íp8 ]ÎQR tìN$Ož>çoÿöïøâβÜÛ¼ø[fèõÞþÆHIͲÂÕ¶íо‹¢áëªþÐ÷¸Ì7ùük¾ø= %ÖXï×-”oÊ:À†¯c_Ô¼µ¡¿|íY ˬ@Ü8jÆÉêﺯqªù¤Y ªæŽ/L'+sW{J5»òâu«-ƒX uL’¥‹ùœétÚ²‚“ç„Þb¦Óé «0Z­ƒÅ¨×Cßäiɶ['°~ìV¦Ê*¢fs á-ߌEéˆébÊñé)išblÉh4dg{›Ãã#ž>{ÆÁÁÃ^ŸN”4Q­jk˜¨\MS±/ÚÓívévS†ƒ>ý^­$Æakê&½½Ds>@¾šÏëõ´n>lºØÈ4Á–Îq6°\.éõድ³.({OŸ"´"Ï3zq„ „l•1El oóèY˜ÍA\Þ¤ð ‰ÊR ¨‘7·6¹rz•‡_>䡸~}›(ñ!É:,þ~Ì™P„ü·|°9óÆë¯!|üÉ'L§S”ŽpR‘tzX㮼ðMzïéoë?äªefÛ(“Ú åü¯­–ªàíÓ“cœ5ÄqÄÎÎËår…¼ uÄÚh0k]S¿‹ ôªö(-ûĶbÙÑX‰`ò^×Âa‘°õâk¥"’¤³ H…h{®À[TÒÖrcÈKÒ+0¤h|jòàµW_çæî-~ýëß0 ýu^,èu:Ø Êét:,–Ëšôå÷8b%{Á—~M+‹"¨¼JG(ŸOEÞî¥,³zoéÃÌWC—m¨ŸDum²Z)d6¦ðÍeWåµrðd@g›šMkìË"c¹L±VúëY«&Ú{»¶‚äòü;ç Ë2Ö×ÇDQÄl>#M3’¤K·ÛEJå• Õó¤KŸiàœÏ_éõúŒÇcÆëë,ÓÔ3÷»1E˜÷ÆR”%i–3­³H3¦Ó>8O;¼÷.7v®óWý—LçS>úͯ‰"ÍÁÑ>ÉbŽ“:Љã¨Ô2B­•煟Õn}_Ô„ÁJùZ‘.±~ít¶ôµz¿âXL™3Ÿ‘–þ@ãœ$R1ÖÊÜ2Ÿžðìɺ‰ä;ßþ€årN)îß½Kiï¼û>ë¸wÿKYÎÕëÛEÔ%Öø¹ ]ä!Á‚õkµp%™ú™ô`” €‰ÿgËШTÁ+[¨°öºÚöSÐÚ?‹QÒ%Š»HÝAˆ)¼E’·ÞƒÂA UŒu1BI´Ù !=à´÷ð>›ã!ßxû ®lmbŒá“O~Ç|‘òÖí÷z@nbJkùεbŒœÏ~¥÷Õ_Ù_KpÂ"á9åSE§ d€Æ¸·QH8ײ©Æ¯¼­¦Ã]P<;kƒ¢©k%ê•*œÚ/?&Øœ:´ÈÙ»ÿ)E:åƒoþ£a¿®õ‹”ÔëõK°áåñòxyü‡Q:´Ôb-€÷r—ÂYZ):qB$%K'RXk8=3?‹t"=cmã5xödÊr¾Nžu±¥À–áb¤-‘†&Ô²_¨‹»Rý~„ä³~ÓԨݪMo·ÛEGlH¢H£"åí4Z>ôBŠ–úI¬¨êF`¯˜ á=~k@Õ`ÿ°H—LfSnÉm’N—+›[ÄIÌÞã=Þzíuv¯o“èȯ¡Î†9H\zÏ÷M£ÑŸË ßc}4"RšXGÌŠc âHµââÃJ²r¢Ð4óý]ûÂ÷­rÁ–DÄqŽ\yžc¬%MS”ÖtºÝÚz¢Z‹œ vˆº™š—'X!Xf)Ož?ãg¿øƒAŸ8RÜØÝÁ9Çl6#Š"¿ñ aÚ•²§ÉŸXUóT–Šßø]¦Kò² +r&³)'“3Ëǧ'$*b˜ttºäá|r±ds´N¯Ûãð舳lA¤4Iì­þÒ…o*özM†ƒ1Þ³:Ë}Ó'Ïs°–H)œ1ôºøÊ²Œ~Üaçê5:Ý.÷?äh6áþã=¦é‚Ešrek‹8Ž989fž§äg%ÏH’„élÆ2[ÒtYÑ: ù•Õ3yý>Q¤) Kœtèöº\Û¾ÆÆÓ'œÍçœÍf ‚„gµW~Ù‡†¸  ]UHÙÖ£BÁ½ú™*`|¹\°¶ö*¯Ü~•³³ Óé”'OŸÒë÷qƒ½$®›}Þ 2„ ‹ÆNQ*Hb®]Ù"M—<{ú)G'§ôGët»=”ÔXë8L)J‡ŠumùXÍ[3íðK˪]/°m}U›¯„GÍ”%eîsB¢8A«&ྺ¦J«Ô¶*ÇYŠÖVIUШ»|ž—U­(›BZ®äð4ªÐþRá4+Ï|ç¬H®2Ïp¨Ê6)ÏÈÒ-E–’.DR2yóµW¹yó£ÑÅrÙd¶„Ïl°L§3f³9“É”Åb‰šN·O·ÛórQÞŠ:cÂC–.ˆ•æêÖÝ4;ç<`"ü^Â+¨*5s­µf00™L¼?}PZ$IÂh4gX.Sf³y ÖW>ëþOÅŒ×7ÈÒ‚³³eéˆI¯Û#].™žž!#Òš^¯Çéé§'g¡ÆVÞ+î0o¦)³Ù¬ž“êL¤ ÞXQt‹U›D¿ œi“½DM”©¯WJŽ´W—T>éu0t*\d͆×)J8¼Ù»'…y Lj‰ !âëãMŽO99:%Š"Ÿ±&„,E,Ò”ÒÙ( ¥5(-êŒoú7ÍzãJ„“h!”Ï#vÂbñ ^KIaŠº–ò¶¶Ò[ÖŠJQYÛ¯ð¡@+?/z"™Äæ%˜֚*}=T =P«`c¦Ò«q±.Z6rç©MvL³®6AÝUNœ’Q3 Ͻ¹, eYzõ¥”t’Äç¬Y‚©C@µuL&÷I’$Ô$ŽH Ÿ¯j³H –³SŠtî¯Ì îßùŒ¿úË¿d0èñìÙSž'û_²»3¢×•(m9=;ãá£=¤”ììì‚P”¦äÓÏîÒ믱±qÕ¿o9AéÊ DŒsS˜@€pX¼µ ³Öá>¤”fIYV9 A5P ÂÛpY[ú1ñà¸lìú¤”(©Dà¢À—ÞVZRžò`…¥Ä9ŸQ‹%Y¾d6Ý'ŽJÞïmŠ<%]ܹ{¶®ÝDÅk×%·EÙéjµ‚u/SÊ«\¥ ´¡w>“ô*ÆÚQBR]Í?«d¦¢Vwxç ÛÜû–BÍ”¦^*"¨¢Ñ#…ž@–ûzÚÚ«,§“Žž?Æ•¯ÞºI¯Û¡,r”Œ8>>b29£Ó‰_‚ /—ÇËã?ÚÐbJUû.©¼]ˆÖH•¡´—¦Ë’²ˆ‰#E¿!¥a1Ï™œ%Œ×{ÄrN'±ží /ñsš²txÒ¢ª Ϫ lûÜ]–ìW³„W¢Û`†”ÁÇ×U62¨ÌWÖÛ:ïjqè]¹ŒÖêK¬,¾ªaØfqËÀÔµE¨›àJ)JkÎ]Ÿ† +ÚKepÎs°ýïºðR ]‘·š|¡ÜT"²“¢e Ò_Ês¾£îçì×óÕSël`ëÖN!ÐQž»†/²4­b𫇨?gÍTÁ”ík)…\ ®f¥jâ•eI½^C¾™æY!AD­æ@K‚.d;æ”*¨RKšªöâ¹~Ää*ÏQI DQLi EQb± ‡#oÅ¡!J¤ß iÍÚúgGGGü×ýˆ¿ú‹¿`mè=(M^–h!1YNœ$uãf}mÃýgÜ¿Ÿ·^‹Ù|Áo?ùÄŸ©À[8‡ÒŠñƳÙ?ûå/ÙÜÚà;ßú€Ñ`H–e!Øß?àá—_òÍw¿I¤4J†Ð-):boï1ÿøO?âÞÃ'Þ*Kze•’ÊgGܾEÐåèäØûÏÒà­.ëg(Ë3®]»ÆŸý韢ˆY.R~ñ«_ðÓŸþœ,3ÄI—N¯ËÇ€8<:ÞXHÅÎÎôÁ·ÀA·Û ¬͹ŽË Ÿ÷¯c£ôû” h˜ô×QB|5@m}á64gÞú¢²»qد ¯HÖÏZˤý§ ^Éw€ _;×Ìç`Õ0·Zí¡áXš24ŒdÐû¯\6›wZÉû!„:Íóàó®}öE˜7\ëÞ{{¯´˜ÍfMÃ4Ò$ILéÚ½Óéø&j¤ÃÆOœ Ün@_Y1¼Ä…²ü ÄIÌr.X¦)Ï÷÷¹µ}WwvÙX_gscÌÑÑ!Üç[ß|¿iµ2Ž*°ƒ“°¹nÅB¥òÿÆù@Þõõuƒ>³ã4Ì¥ÍÕµ¡Yá‚e]­"²>ü“jMkÛ»™ã6ŠãPË(’N‡"Ï)Š’¨úýs€M5^mEë&µVôCòlÉl±à³Ï>'ŽZ:ú=ïƒ^ÙÏ€×Û [åñœ#%øµÄç4,æ ²,ó!ׯ°X,˜ÍfäYƃ˜Ÿre}ƒ­Mý>“ù “”ÖÔÖ€2pÆÚÛÃdYV7M:Ýnð‚÷A…ËùÂ7¤Êiq£YÎl>#VšXy‹¥8Š<"ðÙ8_Î8>:fss³Ö\,çt’˜Ï>ûŒ$N8;=¡(r&g§ôâ8AIXÁô» }ƒ>½^õõ±·ÎèuyýÍ7ˆû}~ý›!öQ”‰V-‚‡oXÈîj+BI:I‡Woß&Ë2>þø·¤Y¼ÊãñZj†BusŒ5䦨:ø‚§ Ç-ÒGÈઈ ‰ ¤–UhÀ­°‹*»¶ê÷Œ1YŽT­2žk ÑÎØ!zJ€ößÒR6s®»oÓ-T h(U+*vy9ù\†Jø,CF£.µÆgWÍ „s^Ýã,ƒ~Ÿë×®qõÊ–·@ÉsŒÖ¾Qìõ c˜N§ì=zÌÑÁ!:Ž*òŠ”*C¥<‘µUŽõòmÖ×FlnŒëÀæó¬i0mÛ¥TNë`xyb4z_üùœ{¤( ´ÒEÁÞÞ§§'\¿~ñxLœ$ ,yžõ°{2E^dÄI!%Y™ƒ3¼õÖ$IÌgŸ}JžgŒFCJS’f©ÏÉ©æ‘ØúFz˜cL =—-åÏE‡'Ö_w¥ÖùŒ0Jz €¦Ô IDAT{E¥<åŒÅ䢴W2ŸóÿÓß0õˆ#Áã'xüø1ƒáˆ÷¾ù>B¾|¸Ç£ÇO­É²Œ££=´ö÷DéIÜó9E"ò–E¬3˜*Ÿ¡,½Ò'÷@CiR$fÅJ¸–ÞËöß¶¶ö.¦Éþ YµâÞ„ ë\òc±®Ä–†¬XÒM<€qrrHžNøá¿Ãûテ–Їïr6™3Ú¸Æí×ÞA%=Ð ]«‡¤pð¡äB)Œ‘Á¦)Ûmr ©ì¹¹Æ+K½roxrXè…ÜFŸCTR:³RóþíLlpõžÛÛ•yàÁYdÉã½{Ì&Çìî\gwgk oY)í19;¡,²—`ÃËãåñòø4œëQ‡¤¤y Ò¡#KºÌ™§ŽÂDh%I%‡û'\ß\ÇݼÆr‘³XÒ\Q:( 0¥Eií Zéýòì «ü<3æ;.Øo´B5_Ô«~ÖËTí…|¾Òzf‹1Þ³Ü÷!« ‰–%RUŒqÑsý²Ð­óŒ‘ª¹ai±BDZ}¹HÂ6Rî¯Ñ´DL¸N&Ù¶•ÃàV¬1Vö’ƒWe“´í.ŒfSèÜ%¡­-Íùsíëvη¸%ñunµ½yž='^ÐX­|++WLÖ!’ÿ{oöIrßy~üˆ+ïP@]}w‹-¢´ÚYíJû4ÿâ좗µÝÙ5Ùˆ’8¢$’ïnvu׉BáÎ;.wß÷ˆŒD¡É%îè FdFFxüü{v@'v2ò]«Šl㋜d¤¬Ûݯ1¾Œ¦ËcM¿GG­èü&…Ú‰âÙ‰½ùDlã·\(y¬R ‘TÆòÑGòòä9Wgô Yßg+F#Ò$!M!ôýß|ðþ»¼ûî;L§Súý¾Ï4´¹æqä{úƒ?ÿÕ/¹{÷>ÏŸŸðôÉziFQYLPÑ µ1d½¤áûÿðîÞ½ BñôéSæóÏŸ›ñáû1ì½bÎ ¬|úù#~ðÃòåÓç c¯ÒŠÖUŒÇ}¼u—¬—rzzÆõlFUû>¥¼º5Š|nYäü§ÿýÏIã”å|Íû«ïñ£ù ËÕÆ;AæVÌ2Cå­ÒÎGIEüñŸ|‡8¨O<@j:׸û½/Íî°æ&Øs‰qÛºôUdFWÙÖJy@ YSµÖ[¥¡ûú$±û%ÇÜXè¨\àã·‘ÍMÂMÒÏs£7BnU›_“Øî’ ²Ómá„ÀJ "”ò€¯RÄIJ'¨H‡5FµV;¯0·m~q ×e…µ–õzÝ)§ôz=Ò4¥7ø¸€Ѩ´ÅúÖJÎk`—ëD¾ MSÊ,ƒºd¹\²Ùl|Ü‹RìM¦\\\p=›±ÞlȲŒÈµÙ‚em—¨. êÚ_3¦ªX¯–àè訃j©(ŠÚk·( NÏÏyþâ%WWWD‘/§*B—Bsþñ1MQQå9uºî´¤°wPm˜ÍfíÚÔ–-wÖkmp0Œ8==õ ”Ö˜Î÷ç³+ïz( ¬‹ÐJã°(í][£QŸþ ãåñ1›|ÖŠ$‰‰“˜ËËsŠ*'R‚ÉÞ˜Á¨ÏÕ/.)«¢uðŒ'#²,áógOX,çÛþ$)vXÙÌñ²¹×>¯ÆÍÕ<‹dç3ô—Ó¶ï)Žãíg{c˜÷®_xÜÝÎú=e¾ZîÌ:— )P–e `o6?~L–ežêÜO"DE6×@Qèd €6å²Í~UiJlƒûàÆ3ÃZÙÞ?>ÕˆÒnµ­%Þݘ¡\ë HMœ$Ôµ¢,j" ‹Å†:8Á­SœÛ:èÚçŽ1åf'ÖÑ:qC€v#BøÆ'PUU+hz}|a|Éb±¢ßz2@úý¾ïF ç_kÍ;w|ŒäzÍl6£®kêºf6›·ûà4ËPJ¢#åÅ>6¸CµôDr¸.NOOB0‘RòóŸÿœ½½=â8n»QìN—¯¹e›×ÕÌZJw]“;3¶ïkÜ’2„=‚¡‘*FE¤îL1ĘZb+‹0‚X(®¯¯1ư··ç#Û |ùå—Ìç3>üàÓé”,ËxõêeY²·Ÿq}uAU[¤jfÍ~¤Ô>ôGïlpÓÊ­©1¦ò®á÷d¾D6«?¢)fdÖ2·E¾ÂX0V £ ¥ãP JFí>^í¡‚ +R8[¡4œž¼`³^ð> RÉ_<æj¶â“ï|—éÁ}VeB-i¿ï® ‰ì¼lM Ö4ÂÉmZ…«ƒ@S"œm£ÚW°37;)q3‹Áxçƒ÷IálE]—-éܬ¦MJ§¯Í‰mge G¥p •+xùüëÕ‚Ã?x›‡ïûëOþ=~üy¾F©7ÑoŽ7Ç›ã?ÑÐUØ5ëªT¾¤'ÍÒL’e’żäòrÃÑaƒ;)Y/"IV\žo8~±"Ërú£Ç/—¼xQë£UâUaqÂ?¬°>sÓZøwˆ ¹uH½•\èì˄ͩ;Y¿ó!ëe>c½Ä8‹rb=ºÊkM(£v;€Î”¼©$î„#9‡kù€Iׯ ¥js³_ù¾¬»¶»¯þŒwH¥¶p¹©  ˆÛ¨Ÿ@‚8ÑÖеÖÒìè57…ëêý|Œ Î[¿;`Í÷´Ú61u„ù[lí×¢ÓK!v@Ì]@³!nDóYë_“ÛB‡Í¹Øf;»Îe!Öƒy‘V;Ÿ¡WOLíó2][i¶ò;ÃìîNÃMçWÌ7Ïfó/ÚžrŸ!êÆÛf³4æùOÊÿûWÿSW˜Ú¢×Úg–öC´Š¨«’ýóOøù/Åý{÷xøð!÷ïÞ¥ßë±\ûBÂþ°ÖŠáhÀõõ5?ú—qvzIY ³y™‡È‹5UPÚEôC...øoßûî߻dzgÏb-ÑQDœ¤(•>ýä䔿ýï?àìê’4ë!¥ÆXƒŽ£Ñ„÷ï’õz\\^s=[²Ù8qÔº cj®..øÎ·¾ÅáÑ=ŽOø§ü˜¿ûþ0NQÕøâ=‰«½ÞP†µVðÝï~“O>ù˜,‰!l.»Ëâ÷¸4w7п )ñ›~ö_{ÔuÍ“'/øòËÇx‘AÙô5ÎÂ-¶‡&Z¢Y÷U ïk±I_óývÕ–]ò¹«`ý]>:àd³(ùœhÔŠÞp@”ÄÈ8&Šâ6CEqë>óÀ¹kÉUÖZ²õc*¿)8ŸÙ\{õZ™{mS$iFšõP!v©‰îirý𸏿cÚQÓ}ú~ˆ²,¸¸¼âj6ã`—W´},]§C—ê~^M\C¯ kÓ w›;ÄHsž¬mIw)epœ$¬COYUüòWŸ2AH’Ôg¯7Àw—4ë®ßþ’v-ÈíÉ+ò<§Èsò͆ùl†³–ÑpÈ7¾ñ YâIÖ³ÓSÎÏÏùâ霵ŒÇcŽ}F¼­©ãôüŒ;w(Ë’¢(È798Çìòªí¨ª’<Ϲ÷ßøècÞ:¼K¬4WWWüêÓO¹˜]ñèË/Hâ¸Uü]^^bËŠTGôÓŒ^®‰Ô z=úý>Y–¡¤@+ì*¥©+CUúh%¤W´Öy¾fµ^±¼¼æêô‚³WçôÇc>úäö§{|çÛßf:óé§Ÿâ‚rÔiE§m¤Š1†HßÌßß Ö´:×ö4ëC,½â½!îö÷÷9:<äêâœ/¾ø‚ý½)Ù»ïÄÒ]ìtˆÜ<¤D‘f4òÎÛosy5£¨ž³Ì V«%½àn´Î'1{ñ>uU²˜Ïpư^­B|Œi•ÚÉRlïqwKŠæîx(nݸÎë‹Ekÿ¼sÖ» ûqóíÜ}3¦bgoœ6bwÝpn{¹ÄçjîZëc9%ê6ÆDR‡Vg eîA¢"ßÐËR&£ö÷¹óû1kRÅÓ½ qqv~êÕáu½ë0Üq$¨€èuH>,¬ì¶!1ðïC)óæX>”¨{߆ýY¸™š½¼ {‹–P"Wk¿¯}×Røu¹¡®Ëݹ1Äå9A‡\ Q©l ¨›¥Ê…óX•kž=}ÌhÐç½wßfÐïS—+êºâôì’GŸÿÚ¯s!=ã Ùðæxs¼9þÃ;@¼$ØÙ,µ]ÓÄ F/s.N׬ìsp ‘Ê2™ ÎÏJ.Î bí.¯3.ÎKöözÄqBÕ *”öù~ÍÆÈIÚ\ÏFö{áT:1A‚T0ÖtfCê•Y?#J"„€¬Ì|§±lÏÛh#_rÖt.u£ŒÅÐNÐP(E£cntNnÁðP`jq;Y©·qžý‡N£R›ƒ|+ï°3xy«Ý?´Å{A^µi ÷Ømn‡žnŽPŒÐ-’nÄÃ-8ÅVáã ¤Wb^ÔÙÛâäÖ]¬’lA/ÿKän‰b{жª!+BªíÐ%}kgOÕ:´Ò¾øO©Ží_181%Î)œ•H­p¶¼Õ­s#V~WuóÀëo»oéœ;O¥à¬!M"¾u?úÎ7ùþßÿJúò¯"l˜´TȬG©4qêmì«uÎÏþ >ÿìsz½Ô ö2–«%NdáHÒ˜“Ócæ³U-Y¯Wh…ëÊ+>"­°Ö!µf4óâø„²¬¸wïq¤¹¾¸ÀT•'ê´k¯®gü÷ø^!㈲.‰¤!Š£AѰ”’ããæ3ý¡µD+Ùfä+¡Ùä9ZǼûÞTµãoþîüâgŸbœ¦6¥cJE¦n®¯! ¸šñhÈwÿè[h…d­m»^*|†ö_Ó*ó¯"~Iànºÿ¦uñ«–\â"„Ä[­sÎÏæ¤½:RÕ%é~™¾.ɸoò›ÏÃNÖîï@®´ï3¼Žº®·.%eïWqñb£ë†‘¸FŽ©èõûdÿ%#Š}ì†èÄ9ÙNtFÛAÞ_UùhŒ(‰Ð&i)¶®1u©¼M~“ç¬×k6y^­I’„^¿YæA FݹC¸n;ºÎŒn†q)%«MÎ|¹f]Œ G<ñ‚ŸýòÞ½Ëh0"Ê;2ÄÎéÖµÎçwÓfq !P¡À2MR’(i?WS¤¥ØÁ‰ ¬¡¨ uUµªä[I¨Û®#¹{ïÄpÝÈ¿ô½©j³AQ›dJGX ª ç—WüøŸB§$iÞétBU{庸„v®«d­Øl6,— ʲÄU]s=›±Z¯™N÷Øßßg2³7rtp‡/?æå«NÏϘkuA/Ë<•çL..˜Ïæ>_´®EÛ'HÒŒB)zIJ¤=2™N9ÜÛgܰ¸žq~yÁ‹—ÇD±wx¹Ú$ ï’¥)i’0èõ‘B)‚,Kd½,c4ÑËR’(jum°µmEUY`꒪̹ž]sq}ÍùÕ5Ï_½ârsʯÜ}ði¯Ï½;‡¬ç ^Ÿ°œÏI{=t!”nÁ­4MI²tëÒì¸(›âOg½ÑYÓÆð4„Amjæ‹%WW׌'Sö(×+.ÎÎ8yu“'Oè÷R¢û÷I“$ÌA¡r¥×nC6ŠP4Þïõ¸ï«MÁìóG”Œtâ… ¾}ÖÇõ…Ž0©½ËÂåA ÒÜÇNlÝC7¢!wJ¤ÅWÖ]Wˆµž|Šª†Ln!UÛм·f6“¡;Æv\±»1âÖrnEhK(o k›Æ.  òùÜmÝzXô’u…©+ŸËÈʽé„ÉhÄÞtBEœ¿:!KîÝ;jcéš×˜¦)eéËwóÇÇ'œ^ ´&Íz †#Ÿ#/DÇ@â|ôV퉭b½òq.ý>G‡ŒFC¤’+X.”Eá3õ…$ðÊÛù¹C^ úÀƒª ÙàLF#²,c±X°Þäá÷H³¤ü5¡TÄt2¡ßëqqyI€æ8NÀÁz½ë¼fooÕjÍl6o•»uYÒËzìM¦Xk™Íf-¡ ¥Úv à¼Öá+„Ÿ7]·ÀÜí”G·S¸ó÷¼ ‘D¢CàFJ…ø¤0U…ÿh;ÎèÁj³f•ç”U RnÝHöå>‚.Žcö§{LÇ„ƒ~ÖóÑ>¡ÜÙ“”5B("4ÆÔísBG¾÷@·²”²u5h-=á^£5ÖwxXßû!%h·ªyc,Eé; °ÞÕ¬txN»†ÌA£dÃu*Y¯6¡“AJEhíBiñöìœEE1I¡µ¢®+Lmƒ{[µ}ÝÍGÝt£¯¡{¯zâÂR–½^çð…ÓÆµ1BH’$õ®Ë@´7D^UU$IÂÁÁUU1ŸÏY­V~ÏgeYcÌš$µ$ik›=ªA(AU—˜jÍb±àÛßüûûûüô§?ãôôŒO¾ùI{þ»½H7¾7Ÿåum°¦™¸#w.m§»ä˜€(¤ÐDQ­3´N"¡¨c¼ÎYêzƒ¤âá[GÞÙCÈŠŸÿôg¼zyJ%|ó?¡, Öë ÇÇ'(!¥kÑJw Òm„Òã˜[Õ ·sÿºe7N¯C6qÒíz+AÊF¬f@„îYaÌD‰£ àºí*‰ %CŸRiPªæäâ³ës¦Ã„^?ÅXÇåå5?áÁ÷¹ÿ”Œ°fJØNh„SÁ%J{"d+ÖN>±}¿_ˆ-BÇcƒ58º\Mâ ?u]bB$—3¾ËšÊ®+¬p!M¢AÔA†u°YÐ=9­˜]Ÿ±˜_‘¦ßýîwÃIWD‘ä‹/¾àÅ‹;¢É7dÛãÍñæøÀ2¼^@‹Aœ‚Ô0Ù‹é–ó™¤,îà¨I3ÁÑaÂÙIÉÅIÁ“/O½2ß œM‰bMœÖèhƒT5Zƒ¥òv7ржU:½.‰ýíDSb 7•ÛX‡› FߪðC´僽^ŸñtLoУªJF“*’,æó @5íFÀ9Pø«Q^µ*¯¯:3Ûy mëØ—Þ ÞîF>oW)lÛ|Óîo«¢lfÍ­ú߆M åŸÍ†Ò»,b5Sng+»¸ý€G[ÝÆ0…"dž(2”™u²Ú tlGÑÖ#Û¿Úù7.€[N¸-“ѼD'Ü·)оëѵîû¢lCGXSƒ“Á*îËBµRÔ¶q6øëÒvdÃ>jÉo<"ĵ½S¢-ÒÝFÓpCQc[•ô×ÊÝ¿¡´&dÅw•ÄZIL]ò­O¾Áñ‹§<þœáp„“Ê›:Ãå¡c (’%q„­j–«9Ož>ÁØŠ´—øNaD=”L÷ö8~qÎ|qM¿?¥ßë³^¯±R{)(¸Ó8e4²··‡TšÚØm!g¬q8ŠªæïÿáøìóÏQI‚ø-côûÞeôìÙsʲ§Ñ:&K£m¶ªEÅ|¾à½wÞ!Ò)ù—ÿ'ÿòÏ?¥®ÀÔ T N ãØ+∼+Énû/Þï]Ž÷‰"©üzµ-8´7”šÿ6ªáëºþÿ'ŸÆÔ8aƒBß¡µ ½j{ïü¶Î‰®Ê5€~­‚ìwT7b鵞–[¾ÿÛþ® âM D“Óì:vÔš7Zñƒª{¿9Q’´}ÙpÈh2Ah… ™ö´ëŽÿßmN¿lIX­5µ1><( ]P`[ë7G6ÒØº†4Ä ,—¸ÕŠªªY¯¼¾*Kª¢$Žc¯€ŒBoL£èWÛn‚-Öà×0‰@hÒùfÅõ|Îõ|A–fD:f<óêô”dz\­XåtÖG†’Ny›3K¾‘µU‡ùsÑëõÈ‚2^ ÙÚ×µs$qL^(¥qµóÅÂ+Ï‹âî;L&ìO§<¸{—ÇÏžp9»"¯ ¦Ó){ûûìO<ñ¡µ¦—ehåÉщãÉÒ¤u7DZ“&q;ÄÚ»z¤Ø*põjúÑxÌGð\^Ïùòé^œžðò윫³+ö¸wïwöö)Ëš—§¯¨MíÁb×€‡þ½7¤Ôιî*«  Æ8ç0eÅõõŒgÏ_f}Ör̓;|ôá‡Ìs^½zE¿—rttˆ(Yš¶$š/ÃºÑ Õ<µfÐpp°Ï:/9=;çz6ÃVu#eân+œó¢:ï¢0ÞúÓºȤhú—DŒz±¬ = ƒužpØä^Ô`j›ä UuØóo­® vd… ªÆ-ÿìóÍÁ‚55C¤ÇÇO°¦äðÁ]ÞzpŸ¢ð3ØÕõ5_|ñ¥Òê:»Þ oŽ7Ç›ãäc Âkª(‡#Ný‘c½)Iû‚¬WCµÆÚK &‰+îìi&CÃÕ«k*cì!5Zd}ËôÀ‘ô—ôzž©F˜Ý~çndõKvMà_ƒ-é'Rt²·*0¿¹Ø}ïMîsó×”R Ç#†“½a¢Ì¡‚8Žp¤8gÈ7›¶<Ìá­ïXÂ`¨ÚZ;Œ;»£Ðo¬ÅÖmau¥U>»ê;Buâ~n*n›^7º)‰Ž,¨ÚŒÐæ|7ñ‡†Ò~à·ahÑZ‰x Ê5à{`ò»›VŸm¹}¶k±'èÀÛRB»#á­¹mìÁ6"`[‚G;Ô7¶ ¥Œ[åñ®’Õ¿–zû{;@”hÀž_,š‚9)} iດò€ £Égµá}ø×ÝPoÏ]Ò~átÂp½ä`ŸTÅÞåøø˜««+ž>ÂÇ(mE¬£¶€´uç5k,»²“Û-ÃÚEŠ$öÊÏÊøuÚ»Î,UŒ±- ßDú’öîcÿõë_²-=½¹¾Þ,ßé{zýÆh-òµµH¥¼†Î9†£!¦*©«á<˜|uuÅOö3â8æððcöô{hõzÌbC6˜•suuÅf½ñ.kY­×¼|õ’¢ô(JI–«³ÙŒW§§|ùä1WWWÌæ3L]¡¥¢ŤqL¿ß§ÇDJ1È2öG#|‡XmcŠš9Ëtk,ë"g¾^!¯/ˆ£È+ oö„x–FE(€;(û$QÄûï¿ÇÝûwyüä/žŸpqü *Ãø`Ÿƒ;ŸŸ²Z¯‘:¢ Ú,ËPJ…òhóÚ=mCÞ»W:(4Ìi^­Qn6¬6Ž_žpÿ¾/„veÁh8äÁ½û|öùg\\^ruuÅx<&Jb´[Pü–Ž”f¾˜N§TÖq~yéÖeÉf“ †à¶ýUJEáèF!rTy÷ËÂ¥qpB¸öÝ6.·*;çì¡dº}SUŦ 7ˆšÞÝ­ ³s‹®š£ûéÜ[²C@ug[Ù}ø®×FzlÙäðÖgÎaëšÙõÒTÃÃþ€½é”étê{ ¢ˆº,¹¾º&‰c¦ÓI£éÏ¥$I26ás~üä çDqL/Ipïæ àfi°Î¡µòä˜5¬7kl]Ó¸w÷.ƒÁÀÇ1óùœù|îãð”$Jb_ânLK¼”UÅx8¢ßï³Ùl¨Š2ˆ<}pp@ElòÓÌ¥Öî<í„pÜ9Øãòâ‚ÅbáËÜ/ø2¡ƒCIÁ ?D ¸¸¼d>Ÿ{ðPBpgoŸ‡÷pv~NUÕ(¥ƒŠWtÆ}¿ØŽà¢éÍñ{ dª°ëT·ŽêÚÔÛž>[ÓKÇ>&«™;ÑK¢Qt… Ì:÷ÑTV:WHûm4Œ¿æÊªjçÎ?úîññçü—ÿã¿°\/YmVþ¿+IG¤IL–¦¡|»Äáˆtx.JÝv—5 £ßߘÖáAèÁ3¶Þ «¬/B¢Ù—æ‚¿†”1^M.œô€¥ô{§4Vôû½–ì²VRlj+Ü&¾WMµçR†^ ­U÷ÓÕ#mÅ{âµ.vŒÆÑâÁUAQÔEÅt2eбÙl $EQû˜&k©kÓ‚ÿEQ´³[—Ø<³«ªò…ÐR ”RmöÓQ¬qŒ ûH%}œÖñÝï~—õzÍ£GŸs÷þ]D“4 ¤“íšF˜ÃšÏ£ý~C˜uzýf['Góe-m§AÌå#~|u¤3„Óyu«¶`jêjÉzsT–?ýÓÿ c /^¼àüü€?üétBY–üð}Ò4 sžàåË~ö³Ÿ·äIóÔ}C6¼9ÞoŽÿ±׉Êïö×¶¾Wöú†Ã;ðoDDL¹shQñ’¬çPÂðÞû=6ËggDBbƼý¶"I/Éz¢¸W¶1öÜØüˆ%þï¨ÞÉÚ÷oi¤m ýão'lk#UZ‘¦ Gw°¸6Ê ) Ê‹20 ue¨KCšÆØÒ…"P" ¤ß 0A­‡Û.RŠÖÍ`šìVãu_°ë³k[áŒÝU…²%¬±ÛLî×Ù6n »SÞÙ:>ì¶³Á…Â;¡ua¡ª«PRç3ucço ™‚ºY”ìM_APþwÜ .DC)å|!]P+øbcçÌk ¸àí¸Td úúÍ®kõ ²SfëÝÈëê– Bµê)E;Œ5aVUU"P>:Gb¬üß«j‹Ò~øiÀfnëj¬ó ‰Åµçf[ÀÚ sºuã/¾² ÷ëƒÄáKÒQOûüX[Ò8æƒwßÃT%ûwß§Ìs´sè8á™&Cfub‘üF q‡÷iÐZR‡T~3™fJÃ|¾BpÅÞÞ>ãá˜u¾f¹Zy¢¦6ãó]뺦ßËÂýaY®WŒÆ#~ùÙ§Ì— ¢4#N„ˆH²ÄßOÖÿ{kýF.Ö@*6ÕB(æó‹Ù’ÑhÌ?þà‡|öÙ#@c¡(+Ó‰2p-id‘Ä:¦*sÜ?þˆ$’Hi‚ ǵ×[Sôõûrü¶¥ßD&ü{9$š{ȃ»†(ŠñKQ£ìó忢)@ìhÁ»ÄÇÍßY×õN)|S4iyÝî~³<óßú~š?Ü=M6m(vý*RÇuŸK¡Ù¯Ä1q–÷ú¨8Avº(Z"5ÄæIÑ%ŠÂý–àļ`a}¤µHáËñhzu¬ N¤ÒD:Fà£7겂F±Êmí»f”RmÏPãÊk@rTø¯ùjÅõ|Iâw&“)wøüÑçù„DÇ¡üW¶ÄÍÍgñM@_Üp6J¦¤µ´[²µùÌmJrÂäæÏ9±‹¡8±K$4Ÿñk.Œ[d ]§ÃÍ{½- ï}8q}u‰pÅL{}ÎÎ/øá~ÌþÁÿÛÿúgžÄuËÑ;¿Ó˜šª,¨«ŠõjÕæcŸŸru}Åþþ>Y?ãÉ“'<~ü˜ããã¶t².+&YŸÁ#îß»Çtãш?üøxùê„gWg()IÓ”H*ò|CQ–”m©xÞªO˲d³Þ ´D6] ©Ð9‡”Pë,Öy 6Öã¬Ï‡ïÀƒøö7Ǽuô?ýéÏxuqîsÂã-5þ¹ÒÄ„$q²í.akyÓ=Û×›®‚ªªÈóœÚªZ²X-¹žÍ‡ ’˜AÀ|ÀñËcf³/ŽI³Œ¬®Jo {ck”ßB"£ˆ” ï¼ýb“ó«_Ne@(E6`*†;!Ãúêê¬oÑqâ£U–+l]¡µòÝcU}«è5·N]ˆI§o¢9uÓ¡è;eÌ.XÚˆÏ.Qn·„B—(~ ïÜ|~råí–ŒUH¬«Ê+¦«Ú÷™9I±7Ðï÷˜ŒÆô{=†ý>.h8Ër± ߬™L&ìï·ýuíãsVë5××לœ¼âøå‰³Šãvm•JµÝ ͬ.Â3D ¬EŽ–‚édÌ ßoçÉ"ô¤EAm :ò¿»ª Öæ-mB©´ $þõÕy¾ ÖcÇd2æá[Èó Ë劢([XCÜ8çØ›N98Øç§?ùiègPm±ôÅÅ…wŒIŃp‚çÏ_P[ƒ Ï%ý¾©|urÂj½¦ªk’(Ζ¼uÄaÜ ’v:R¬kuc;…á*S‡0¿Hâ‰mÝv;a±ÎRÖ%EUP™§dÛQàíæ†&ëRý^Ï‹Oòœ¿øó¿`µZñìÙ³VÅ^Õ5JûH•l2&Š#ìÒ²É7Þ‘¯š8" ÒÒ6@¬ôbc-Q…8+ÕF6 ©4*ÕÄQ„Ž8ÑÔ5Ô…Ù¦öå¼UÈMÅdYDGl6–º4`ΆOëpÒ4a.^yÞ¸ó¡Ë£ÛQ(¶{âŽ@MˆÝ®»`ß!•ŒÈó‚HÇÇ «Õ†õ:GHE¯?@)IYלû¢o`¾\°Î7h­2ô„ly’JI”Ó-aŒ {§¦|Ý´%¼Ö:œ©yòø wïÞåþýûœñèÑ#öïì”:»[/ÝâëÛ¢•¼ÐÍìÌ)Æ”Ò(å÷½ÆØv+B?A£Ë7¤’TµõñÇÎbêá ¦\q}ýŠ;#F£ëõ’þçsvv†V ~øƒÁ€¢¨øÕ¯>ób­´:2{RéFާÇ+‚‚P+O,Y[y'rÐü‹N9ù6а®*”öÏd%½)HÈFŒ¬k{|ï†/V¶õáÀà(„r¢8ÇÒÃXÇ`˜±Y/¸¸xÎp”ðÉ'8V›%_|ù9q3öY¯¯Øäu š%Rø÷ëEªdš€“(éF^àÏO’dÁŠÿQ8È'WQæÖËkÊbMUúç†ÃÇúÕ«é¶h’|4RóëFÝm¿¼ÀJv±2á“ ëbÅj=ÃQñÉ7>=<þ÷üÍßþ/Ž_"õ^­Þ oŽ7Ç›ã?ñ昳×RÐÏùÊ0.yïýå*úƒ9i6'NE^°w(y¿ŠÑI޵3´NØ?0¼ó¶c8ºf80dIAšˆ6·z'¯3†8Ž}ÑÖ¿áØÉ¾ °W2&(¥ ‡‡=¢õ”(éÔoŠ„ AÀr1§25‹Õ ‡m­¡^)ã ƒ(É88‘%™ßl•ÛœqcL°è¹ípÇVÕô ÔÆÛMPyw7k~3.n¤kEýÎñXÝþß¶Œ­SšŒÃ„aÔ†l£¦H®Q}Öu@÷›¹ŽjigÈë¨Jë ÔlòÄ›ìôfàK⨞v¢¦œØ‰*b' Ëî(˜[Õ†m²„=Ô-µ¶Ö¡âˆMÇÒœñxˆVÞBê7k±R’Jø»Ëóç(,¾ˆÖ`‚úÅot¶FNÝ<¬s(^w/üë”é[A`δEYRâX‡ÜO‡3ï>|‹å}›øÇ²©-f±b8ʨ0>/ÍÞ¬V>ç6/s_ræ,ë³/0àËZ-Z z½˜«Ë5«Õ g%wˆuJ¬MØðø¡Î„h­$R8Ÿ -—××|þÅ猧c*8. ÖÖ”¥ d_á³ÈïF*j7+Öf³›uÉáÁ]NOÏyúôÖÊÖ^klgëD«V3@^­Œ)üÇßbÐK¨Ë%Y{{p£.w>Qº¥D»“þ½–Eÿ>Hí¶åv'B÷:ójRoõ£¸Û]¿e]! U³¦t³Ôo³¹³u6ìôSüïñf1o64‘8¿ñð¤]c=¨tD’õŒ&¤½(k[›þßÉ ¹»ié”M‡çÊîÏІëz%º yÙªÚ÷B(̼o½\RÈœ2/Øl6¾Ç¡×óê`c©Bá­"D,Ñf8[<Ðé¬!Éú,–+®f3ò«Þƒ!‡GG|úùg¼ŽcмhÿÖš:¸7L79Ð…ó{S-Ú‚ùÝg¦í8 v®¥fÍ·¯°Íû²ÖmÅ*R*’,#Ùdäë:ò„“Tgçüã?þû †}/zPS›ø¸ŒÍrÉr>§Ês°ãjË—WWT¦¦2¾»áé“g<{úŒeØë3¡¬ÙŸLÙßßgooáxÄbµâåÙ+¬¨HS9ÃÕbN:ïS%*ÄdyŽ­*„TU…uŽËë+.ç3îî°7âŒeo<ál9cµXr||Œ–Š¢()늋ëKÖ› ÖX6›¼U„F!zÑZãAÍàbèÞŸ¦òóŽT~ö¥®^{}qÉl>g‘oxÿ÷yçw0eÍøÅ ®– .×Kb+¨‘Xc±bíA½†jåÛHq qÈk=Hf3!‹åŠWg§ÜÙÛ dCŸ4KyïÝwùâñ#ž={Æáá!ÃÁ:¢<ÐÑ%ØhÁùºö¥ïHE?ëñðÁ[̯®¸º¼är±¦ÊsÒ4õÊ6ŠM„èBGˆ  B°Y¯ÐL]…kܶ3Dw=ù:NÉn¯…/¦¬V+t¡#ïÜh×ÕvŽÜ`½Íiv“<­;Ö¶¯³ÉøoU¢!²§(KUyáMUU­Xá`o;ûŒÇcï&hçOßWµ^-Y.æD‘f8è“e)ZIœ5 ú=¢H3›ÏøÅ/~É_>Fêˆ8ëù}Hp|Z×ê]Ú‚qß=ä0ΓuiœrgÊÞdº£U剆õzMQ•Þ¨}»ßoHŒ³(k‘JcêÊgÝg«Õ*(µýµyçà)%‹Å‚ëÙÌ»«:ÏÅÆA½··‡VŠ“—'÷´kg®ºªH{>Ʀ¬+fóEÛoGG‡‡ÄQÄÉɉòLr^ïQk¼&|»ÿê^Ñ©µ/\­]³¿ñ âXG>BÉ…p—NG ûk-yY°)rªºÂÉfÞ¨P²ð x‰‘#Ìvƒ^ŸÅ|Î_þå_r||Üv$Ü5&¸áó"÷n»X£µ"IbÒ4¡¶U'Ò5¶2ŒÚ“4Z С·Í‚³cÞbïöˆ"TQ¤ˆ"0¥Àz)Í4â"@g…15›uA]³k|µ55UíëÞyáÝ28´­5´Ñ®Öµñ/ݽÚî.\|Åì'Úg±w²IÎÏ/X.W¾ð\Jƒ£ÉdYÙlÖ^ÛÙÓvdL§Ó­¡q  ‰·%Û®¬q®D¢z½^óþû)¿þõ¯ÑZÓäbó°Þ(Ü"ÞÚ;·A Úµ¿¹§¤¬ZñHã†j¢–´ÆÏt®ÂÔKœ(ƒãÈPV¾H9C¾^°Zžñgÿó_ÐË4‘üê¿ð.ÖDðþûï¡…æ|vÅç¿þ‚$ÎÂç)ƒcÅÏHÝÏÇ÷,6,žõÝ~C€ûNONCHœ‘Að¨tX‹tëþ ü½æü¨¦ðÜ™¡&”ÀõÅš4íáX¢]Šu°Ù$|ùå/X¯yçÁ!ï½ÿ6UmxyòŠÓ³3¼ýóå%N$¬7¥_kñ×vßåϵ?Ö¡C3‰uˆK}hœ"ÓBh„Ô(éÝMêBÕ8Ê5e™û褦‹Åßt>fI6Ú­¦CâNÞ²?„}þ·jW£”a¹¸d>;g<pxt½Šããc~õ+ýÇ&<ËÞ oŽ7Ç›ã?ÌÑÁ¯[„@…Ýðh qµEãõΔ(]’$½~„38Éx²ÇÑ=µCÒ4#Ò%ƒAAoýž%I|¡‘V¿2q¤|üïœÝT vU”Í0œ$ “ |<ù˜R<`0¸Ãp8 ›'GY”UAQ–,WKêˆ;,äaó ”âðð÷î#€ÅbÉz¹b:™ptç°º·QîÕpÈk ç\{}e|„wFˆÝNdƒ³®C8¼>Tm‰†Ï-ðÝ<Ðu(S”Ëå’¢ð@•µ–ápتNf×WXãØÛÛc4RB´‘U ‘Ñ<”Mã¤76¹mn· 9Ö~׿+»ó™ù+·›[±»y–t‡G³£Vl²¥ôyŸeQ‘çËõŠù|†Õq£µâúúŠëÙ%‡‡Üð€ÚÀgŸ~Áj±ÁK$}qdC>È+ت&},ÒVA"Ûs.~‹ŠÜ«)_Pu¯Çb½°AÈó! ®K”ôE`ßùÖ7¹{÷‹UÁü#.®N‘Jg=¤òä„Å1[ÌÃpe•Å’$‰p΄X˜„·OgYL–ÆÌ®sl-ˆ£ƒaŸ^:ð%u®äÿL=áàU}eeùâËϨ-L'£`sõ²/­£ÖžíËÈD«`õyöŠ"ß°X,ÉÒïÿáÇã˘÷§Sö÷yøÖúýžÿývëVuø9m½Z’o6Þ¹C¯—y7eGtyyɧ¿þœG_~AQUô#¢8 ±y¹RðÚë—BÿðÎ÷ïÞã`:AâÉ“Fu\UUƒ£”¢6>®ÎÇâ˜íœ í¬½\.ƒø¨&M¦Ó)½,ãââ‚årž€tÖÇÒô²„;EÁ"Dl9‘õz˜¡/„ Š"&“ «ÕŠëÙ¬3Yã#[¦“)›õÆ“$EÑ®± mMj©ä5ÁÀk‘‡¢»·ôJpW;ê:DІìùHk´ÔS·Šâ›sAm e]Q”Eˆ õª8¥i‡bzÖİXóå’á`À_ÿõ_ó«O?e¹Z1 Zaá¼EN\ÜÞi'©ë kõ6.Løù¾!C¼Ð%¸"Åf³nO[5´¿Î ¤²Š"O`Tù²ã·(­ºòåÙÒ+ÕØ¬7Ôe Vû­;Å ­ ¿yÖ5ŸCsmíÞâ–¸ÍÎïn þ›F²d™kEÉzã÷Dý4¥?e=„TÜ‹zý~{­c¨CoÉ&ÏY­×¬ÖkÆã1{{{AÐô º] ·s-\__EßùÎwȲŒ¿ÿû¿g“oÚhO¿ÎÞî þMNáÆ5ÖÄ5š@8Üì™êvCyLjDZ…µ9Ž©"*SS«éy>§,–üÉ›^–ðìé—¼xþœ$‰¹wï.ï¾û.u]óìé3f×3FãýVM/Ûg·#ìMôœkúk|¹±µU»¦,d$¡IB¤=Yå €tßÿؽõ„Û ú -Æ¡ˆµT IDATvt‚º®RQ•3¤ÖQßoðêä¶^òàÞrç`ŸõzÃÏ~ö Ö›œ¬ŸòêÕ t”R×¶aîÚŒÖiè Mâ‚”‚¢ÔZ²^8Ò4CHÊ´½(PHµíÁ4!î0á¹ní¶ä»é[†¯ÝMuWðÓìûÚXÕ†Xµ[ÑLs¾©X.®±¦äã>ááÀ¥ª ?ùÉO8>~ö±ðö;9yyü†lxs¼9ÞÿA×Y~¥h0¯4‘α7‰ˆ´£È‰µ+ Èk¢(e0T¬×û uµÁš%Y½¾e4ŒHH‹³eP’t†IÇÎð÷»t]P¢-]“bGµ+¥$IúºO/™2Oè÷Ça3ç¨m6,!·Ö„ô¥Wu]Q”%›|Ãf³a2žÐïõ|qU1f½Z3ÉÒÔçq6 ÒÕǾ®ªª-øÏ¨´·(Ϻ¡¨üŸÖV,³Á&ÛdÿoMë0Ö ´¢¬ŠB k=µNP׆ñ$£(KVË%µ1 Cúý8XíqÎÑïÚaÜÿ=ÑÚv·„•ÛÉòiŠw”ÄÍ{ðTÈ.yrÃâês2·`’”>šA%awSMïBP h!•¢®=hS׆ª3›õqÃI’áœcº7ĘûôûY¿‡µ’úáyþüUpiWŒz ¥‡·Ò«ïºåÔzì7/\÷¯[_ÿ96ÅÛ¤Ú†`©ª )ZG8aAù° ùìσ½)ÃaŸÇO¾àg¿ü/ž=gÿÎ@T(òÂR½–eA“âJ¤’-šf RÕ–\\\‘ç%“騣m'³9Ͻ’o1_óÙ§_²Z­I³Î)¬­ˆã8¨£¶„– ›åºöç$н£áúšÉxÊ·¾õGüøG?åÑ£G˜©Âav€Îæ;>›Óõƒs”òO>FkIQä¤Za ¡ í÷ã\¸-é·çݵ¡U—~ â«þûM¥oówüšìÃ’´<~üÆúT¿ðlKÔp¿I·ý;7•Í_õóÝBÞ›¯ó7EM}÷Ýü¥t ´D;»òfãÝ%!lP‚%iâå8¾ävÞÓos/u¡_§§CŸuŒ± „/[Wá2Ò 'c®./)Ê’ÙbŽŽcúƒ>2¼÷¦W*µs~¥”˜Ð‡Ð(„W«fÏ»“âØE_ήY.eÁ°×£ÌýZ‡È‘æ™+:±9_ƒå0Mi¯FmÞkèÞQBa]Ý’±tž‰ò‚ÝÁkΑ@¾íœßv}ìÜg7\?J©6VKIé£Tªš$öª÷ÍzE¾ùÿØ{Ï&I’3Ïïçî!STf–êj=ªGarÅqyFò;ü†´ãû5Ú¤-Íhä±À.±Ìôˆ–¥+edD¸¸îY]=À ì všõôL‰îÿeAš¤(!)×%¿üù/È’Œá¯þò/éõz¾ I*꺢(VøïóÖuEž&äq Úp9=c2ñö­;¼ÿðîÝn¢I’PÕ/ON¸œMùúùS^žRT%oç E¹¦¬J¦Ó)çW—È…(Hç¸XΉ”¢§yš¢ËŠã/9Ý¿ÅÞpD&%“ј<͘={‚¥é½,çÑÛ8¸uÈxBïî­[½ù­5½^¯ý,œóÍ èÞ¤7)Î…® B¬)Ctè”΋T¹/ Žôt›Ÿíd°nmÄn¢\Ûaðñz kƒ]U>–TE Bù{p9=ÇiÍ_üèG˜Z³\,øê«¯qÎÇ'yFQ\yR0$;HA'æÙ!Ú¨ä qg´¿.˲‚«)Œòg8g[÷êF¤º1¥êälnäb>¾Ï÷¨\'ã7р╽¦xÞ 2¬Wgk¦³KÒ4æð`Ÿá ç±ˆrÍ'Ÿücjœ úû»XS¿!Þ<Þ<Þ<þÿô¥IÎ,N¸Ó8‰¶"¨UQQU CäËx\„³ kÞ!.‚zÇad¹h x yO!¤Þ”ãm”[E¿Wò[TÀÍÏ"œ>·¯X¯©kC¯ßá˜ÝXÄkŽ^¯¿õ[›’º:«b“EÚ”0k]S×ic­õâÈç©êP¤§>v§—gaPAÕŒhŒŽZW,–K¤J¨ö9œÖ¿ÏÆùÎ矈6m|q_›±ycaîõv±5 ñíT×Íä$qJ¹^†r« ÞP"t„9ŸÓInìq÷Î-îÞ½Ëßþ‡ÿÀÓ§ÏÈû}oÝ"Ib¬,Ë5ÆÖ¬V+œ€¾?ºÚ[у³ßïquQ µ{V«%qÔ#Ê!•—‰¸ ´««’õzÍ?üä'ŒF#†;9ÖÕÞšl,q¼)êRBá„ó±+N¢kM½®Y¯ >üðC>üð#~òãäç?ÿeí¨jƒR¯*«]Û1àU2dtFRòè½wøðƒGd©BI6‡bcƒ¢l{µéŽ­ˆ«áéRø¦ßyÀß½^ýëw¨Š¢à?ÿø?3<Ñ{!+¾‘n Scmõü.ÏuÛéôzæuëÿ†hŇ®9PŠWˆÍMNkwmÜ‘±–A¿O¯?@†Èµ}ˆ½¹Ìûú{óúׯZfDˆKpmyMé)Ž(‰qV‘f™Ï ¯*\ _ÓÇdÁë|fKÈgR)вäòêŠõ­Û ­¥ßï³³³ÃÉùóù‚åjI/ÍÈ“¼“µÝÓ³[P ˜c;j^rهáST*D•ob]À$ÜkÖµ®¹M¡áµwê—7sâoëžèü7km(vm¼JSv/•"I3¯è,V>?ÙÊjÍOÿñ™Ïf”eÅ÷¾÷=ö÷±R±XÌ9¿<÷êÕºÆj4ÅqÂzµæôå ý$gç|üîüùû1é wXU%E½æ³¯¾àåé Çg§œ_^°, Ñ’xµeUUXmˆã˜‡wb®×ÔeI+Ü¿ÇÑá-Ò$&º®ˆ¢ØCÏçLgs¬ƒ$N²0VUõÆ)’fyž³^T•w4c‡ìïæââÂÏ`}Êz8²»»Ë×_}Ét:ó"ë õU±jâÃÃÒ4áìì¬i ÓG££Ñ_~ù%ÅjIS$;%ð~ö¶€ºÖn¯«â†^œí^$·ÕÁ#¸ÁÔùã<å ¥$Ž"Ò4õxœ+E$£0û³Ïjµb¹^³®*¢$"ISÒ4ñ„ÕxäÅ82Äa”â~¦IÒįE²»w¹¬lK®µ_[£HùB[á#>׬àëך²¬HJIÖóç$.Mî¾CÂ.Ôè\^Ý]UõÖàÉ,wÌԭ5í?ÛŸ‰¸qÞB¾VÀWÖ5yžÓëõ¸ºº ®{I¿ßg0´$nó§†;;$iÊx2áòò’õzí… Æ°.K_¨m­_;dÔ:3n¨EAYV¼÷Þ{§ªj†Ã~øÃ‘eÓË¿úõ¯‰“Ä»\s-Ö`ý™MÈÍk7÷O¹ö:sÎïYVë4WJ†rxT¾4<Ž|¯d;¹“ĦW(pÛ­ð¯í4ècÑDA7¤ˆ 6UèH©©Šƒ<ç`wA¿ÏñËüæ7ŸqttÖíµ?C4‰ Ö£n'²4$xüCnä^ÎbLøŒ¬@i…@ Ý¦‹ ÕDºÎßâSŠNi:¶%šïw×\¬×ÏÂ_X»êÊQŸ“g1ßýó?óX±â“ÇŸóÅ[W÷h4æÎ»¨èð†lxóxóxóøÓÁýâ_/õû&@¤IpN0›æË„å"£\¦,æ’ªN€é<ðê„óe>Ö— ëbM±*4-I’ /ØTEmôĺm ®¿® ÀÕºFk‰Á KMQÎùúÉoX, &“ I3™ŒqÖ—¾%qÄh4òj»Hù×è÷Jzë]Q¬Iâ˜,óÊš¢Ôa3>[ÕJ”r˜¢& [žûh™årÙFr¢«üõE[ŽªªÑÚlm>Ķ›ekŸ˜oú–«Ÿ~ú)źdw¼‹”ŠÁÎ¥$ëõ’áp@'$‰·ßª÷ÙØ’½˜´öC~œ c]k´6Þæk¼*-‰}Ö©”"ä{¦TuÍbQn@!Á–;VQ›ÓŒs¬–K ³u›ûìËëâ6bÈ6‡h!pNâ¬`¾Xò›ß|Æt:åöíÛ()>ç³X2õ‰bI”r’È“8J"•%NVER‚$‘Ra,!+R@(­ªµÞ”ÉŠp·'•1¬+ã‹®Tì©"ÊÄk/Z¸‰öÏo‡Z»oXGÜVæ=øÈ« J*J]ùƒŽ±X ûüwÿÍËÿôïÿg³%JúRR„¤®eU£Í)gà$ƒac qì£@¬°d™/ŠÆ9t]SÕ——k&»;¡à/(t¤@XC]k¢Ø1ŸÎèõQ“e k½óg>+0V’Æ=ÚdÌÚ`e>“%9ÿößþ ï¿ÿˆøñOù§ÿïçhC«nkmö¦‡[`R4ùËÆ2õùþw?f4Èq¶‚¶ Î@rÔÝH44¡@‰küƒøVôèŸzèÆÏ]ÿÝþÚ±Á^î(P±¶rÍ+w¿ý54‡¼æš¡ëæzüÂMßÿÚ¨†ßph ïŒkôLtcüz$ù¦íG„R¢¢ˆ¼? ïõÛ\ìæYÙ&ƒü: ù Ïﺋm;F©{ðéÄB å]ðÎ+è:~oâ$Åí YÌ=I´. q¤ˆÃšêÂ×êºI>&,„%_ÄrU°X^y. Ë2F;;()9==åòòнñ.‹ì^ÕÝT†æ¿‡²S!بπH*OÜôzìô¼8>!BøÙÁZlçÇIáv‡t®;ÑQª»W>Ç×u‚Üt½½âxhbÂ:w~Ñg7PT÷’ž,— êÊz ØÀbåK€Q«²âý÷‘Å Åj‰¶¾˜8KR´u¨$e¹ZqvzÁìbƤ7â½·Þæ­£{<¼ó)¥'.Ny~zÌWÏŸ2[.X­WdYÆá#_ ǨàR1ư7žä•ÑåšEU“§½4ãÞ{ÜÚÛCJÉy¯ÇÕtÊéÅ'ççQJQUçÈz=T/)¨jͳ—/‘a¿—Ü¿ºt¬ðjä,ô1MvwIÒ”ù|N¹®°¦q6T>^Èx  ®„^¯Çhg‡aÖ#l­QLíIîăuS× û=öövùò‹ÇáŒáÏPY’2ípyuÉt:m×(‰ðîrãкf<Ú!MSNOϰø¸,õqBë¢û‹ñçg™N¯ZgCCdÇ#²4áøä%‹Å<ˆW¼˜È»‰ñÛµã®ã´îÆÍlÏ¢¼iÖ~… QQ8klfÖ ºé~#ˆÑb!ˆ¤ ®0MªBS8«8¼³¥¥ôz9ï½÷?ûÙÏ|¯F1»ºÂè*¸~¼8)ŠcT$Q‘_“¬Ó¨X"Tp4˜ÍÝa­£® u©‘=Î «»Êp¿%m¨k‹Ñþ½TB D„@‡}Ò¶%mד38çcYº„@Dw!BwSß)öu„¾†@Ø‹kó óQ—p²9øþ‘Aά>Æk0Ü¡ßïobÅšî§ æï‚ ¼›f½^·„Cã4TRµ±TÍÙÕ41ºÖðÆŠÕšªªwI’ŒÏ?ÿ‚UQRUµ_ÏÑiJ›íöóú-û3Ü7EÊÛ1qâ•ØÎÍ·5çÃá´¹@|Ô˜õÄÐw¾ó¢(¦Ö5/O‘*FÅí£;TUÍl1çôâIÒ4AD`]…Ó²IB†>î×Ö¹Ö ÿœ#„H},Ypå5IΉøs¬«ÑµÆ2vUÔð5]ØM¼Ôõyu“â©Úó¥ÑW•”Ë%Þy÷îãœãùóç>b<&޲ÓËèDˆ­´›¦‰ }݈œ®Ä^øGˆ´Ò•¿çUpë¶~vé“|¥KÔ>op8éüMp¸»@:ZÑŠôñHÛ„½ªYã¿ÖZH“g+t½F`¹uxÀƒçÔƒäeUR•‡ûL&c^¼xÞÚ·EÈím†Ã(Š ܽ{‡ù|΋/X­|¯µ>ö¨‰°èõzôû}¤TÌçsŠåª-ªn†¡Mñ&k²R…ÄÇjUðòø8Øb=!¢”Âb±¦f<ÞÁZK/ϑҿWcB ÿµe]¡uÍ­[·è÷û<þÂ[ÕWé]ƒõdC’$L&öö÷Y,æ|þÅDqìßã¨â|LA?ïÑ˳Vñ<½¼ £ì¡B‰•ljk-ÚX¬k¡X—œ]°^—|úéWHω¶†ÚT¤yL’Fäiê•€*F׺Õr8Ö•ÿ½‡{äyƳç/ÐFðâå ‹e‰*di›Ö¾.¤ …Œ¾ìÏXP*F¹ãš~’XÅêæ&^¡«|ü]pi×Ucw¾E)…¶P‰”¿^¯kÈM¸Öš]­k”Ü»{‡ï|ô?ùé?sy~…®-ûûûžðAaàòb޵~°íõcpºµõF±@*C]ä½U­Q Šõ‚4‹Hò7%q‘& Æd ãIñ¨Ošyp¥QÀêÚš”’Aíg™]M™ìLøwóïxÿýùücþÓúß)Š ¥Ò<î*—¶€Oל%ÿæ/È»€ÕرMî©Ûúôº ãíïØZ´oø÷ß“ôí‚þ¯Òÿ@¢AˆWòëÛlßö•K1`Iœz¢Î‰ÍWx9¯ãIÚø*ç¾1*è›â£nRÿ®[«ï~ÛŽÓs¦ã’p›ÍA‡´}ÅtTŠ(MÉ}’,ED>VÇÅ»jIyÃû|yrýõuI•MƲÝÊ#Ë"!GLx†>ZÁÒëåXãIó²,)˘,MBü¨|áläÉjã¶Þƒ8IÐUÉrµ ªRÈó“ј4NXÌæ>?¼%šï2Íg7 B‚t¢=ØFqD’xÇ™ ¥·Y¿ßð~ÿ]ö÷÷Ù›Lˆ£˜¯Ÿ>ñ ëµ'ô¥w÷鵡\­°UÅNÞg<áÎþ!½®¤(Ë–‹” ¢ J|F¿TŠr½¦(Ví….DUy÷ò&æq;êeÛ ºÖIcE?KÙ?Ø'IR–Ë%e×eI]ú®‰J*ÚR;ágüº®[ÐQ„²{)Yš0Þ1Ú²30ˆã¤±=xªÑb±º½$ÚmâÑdQe¡×ëc-Hå㓬µ\]Myy|ÂóçÏ(ë„`03Üa;‘76à2¨×[G–³稫§5ƒÁ€Û·o‡üïŽ-+Ÿù_•/O¹¸¸Bªˆ?ÉäAð(ü݃|i–a­e6›å¸w›M&cvv†<}ú´ý‘á\ajßy6ôÙ›ìE'''TebïRêÊÇðcˆ•bŸóósæ³)8O†gö{ìîNp¸¶ÂA›/.¤&_¦*½`ÓÀz7¨æ€<ìºØ€w÷æH©ÙµÝDà:3‰ i¤¢6°!Ñ¢(»Qö#DØóÖDqÌîÁ>ÿãÿ?ð«_ýŠ(òg€ªª(×~ÞJÐë  ÄiÂr¹`±š#¤#ï%ôyÈá×!¦©ïp³ÆµQ0Î8Ö«ò•n/T¥F×–ZyWˆR¾˜×êMDg«°orÔÄyS#HkçTëòî¾ïžÐ£=(»Ù7åÖ=¾qu^Ÿýšî7ÿ<¢H¡"Érµ ËR/˜ë¥¨Èw£DQ¼qaŠMqx]{ ;ŽâØ»Ášk±ªj?C ¿n)yw‹ ïuSôlHp8ž IDAT,uUc­åƒ> ®k>ûüsÆ“1Ö9Ò(B”’ BèÌXöçÒë³™ #I×¹Ó™_"lp’͵ë‚KÔXë»w¤àƒ>ÀËôjÊ‹—Ç,Wï¼ûGG·AJ>ùôS.§—ìíßòÝvÚ…¢cG$”w )ZÒHIëÕ8ŽvvvÚ³ŸwÜ;ßâ°MS¸lM7å ú.hÝ:Ö5dš¿v¼9U´÷\—¼j׆Ð&èºæêâ’Ažsïîö÷ö¨ªŠŸþô§H)O&˜ð¼¢H×…lE-a7X†íÌÅÎÉ6jÉhïP×Ö„.G¼0&Ìï‹°¾¼Ùº@ü·Ð›Èæ y§Û××-Sߊün0+úŽå¬ßÛ˵ßs?xÿ}†Ã!Î9æó9_<~:qœrÿÞú½>RDoȆ777?©Æ´×ÜëpFñ­ÎßN-ef(ý´>ÚXIQXV«ŒùUΧŸÔ¼x’³œKŒ`­"ŽSj£ƒj1ëJ`boOå1ãQÍjyÎd7ñ¶3g D5ÎA¹n좿[#hjyÃÒÑ{4ÏÉZËÕ%¿\pUYJ“‚ð66m5V8J]µb9[Âl¹õ·@¸ - vÀ‹ã³¶ o³¹íS8¤Rüâ“Oýï Å·­ý²S˜ >^¢ù¾ Öµîm'ŠÜCüæ(6Yœ¡tIÛЛhá8>9ßwÒµ ˜&Õ/OOQ*ò…}n#ß‘í°ì‡±$Iˆc?peC„ëCv›‚寮ÞN ífßQ27>öŽrd“5ÚXó}7ƒ`c…ÖuÝf€·>~çPa`£S¸õÅW_"¥ÀG­^D)(mŰ—·‡ZÿY×i‚å9\‡M„µ[£Üp!Ë ÊrV;Dƒ°\A7¸õ+­”$ ®?þˆÐ©bxôèÞ{„uË6yÄ:PR…ÌMÿOsÀˆ#Å_üèG|þÙÎÎ/™^MClAârk‰sÓË‚4)èõ/¹^Æã¨sv'‡ìíS¼|yL±^…(GÇı"‰cv†c”Ü»·ïs-ë gJI’$gg–«5ÎFQW‚ËË+Œ6üõ_ý%Þ{O?ù„ÿûÿú¨+Ÿ=êâÓÔ!¤CÐÆZuôi(á¸u°Ç÷þìC²8B:Ô&”е×ÅÛŽ6'•±ÑÞÏÝxÈßc;VÝש¬oR ¶äâï³bvîµ÷{wáZmŠæƒ8ŠѰáȽcEøKá·݃ËoWœñŠ›áuJ³ëθWK‰½"êz¤VCjÚŽΛÂÅãBø~ë<%1Nú¢Níö›ÒÛ.ïäcäÄ+…ß Õ%›œ³¯’.®É*÷¿«1˜ðöûýö°Ù¸L H=ÀÓÛŸ¿“’8MX­ ªºjÕ©I’’Ä ËåŠu±îXÍ;¯¸!°®]».¨›Ó×Zû½Ü¿o!GØ9Ó¬N-ð"…ĺ.Pâ¶Þá†èÞ¡Q觸®l½Û XùJ„Ò5`Â%j#›ó òæ¾6Ʀ)ãñ)%ÅjIQ¬R2Ü!¥är6gñË_yõ»ÑdyÎþÞ.wïq÷ÎmÃf—S.§W8`4%1FZ.®.yòü¿øìWÌWKÆ{»ÜŸ¼ÅÝ{w™ìMÈó¼äz½çÔ¦¦¨Ö¦BVk‹9¶®Ùí xçþŽöéç=’@ü7bƒº®X-ÄÙë¼B7&B¸{ç.ɽ·9yù‚ùlNµ(øäŸðòø„½ƒ}¾õwß}—?þ˜ÉdâcÈÓŒ~o@5¨q–«%Öi*S¿J¦K‰¾Ì:U!‚RÑ8‹‚¬ßÃÆ:Ò8‚ªòEã‹q“eepîX””^õÜŽ4Êâ„«Å‚b¹B(\!‘|nºCp5›ñòô”a¯‡ÍR¢(b4³··Ç§Ÿ}Ê‹ãcž¿äÞ»(çˆlؤè(·!ŽT«Eø(%%»ã!o¿uŸ«ÙWó9NR×£— pÒ¢mÝ‚Æ>Ç¿Sµö£µGä‘"N|\C±Z¢«js}o$ì†>ÞѺ}2ÚÔäyÊÎhÈÞþI¹*( fÓ)ËÕŠ‹«+êªØ*m²Ïe¤¨µ&QŠ^š’ç9i“gwnß&‰cúý^›Z£µmI{7©sw¦w(;ÚúP@­]{ ô=iQ%EQðäÉ.®.©´Fc½Ë&ÏÐÆ´sn³fã-ÝMôSÇEA]–ÔeE–e¼õð!‡û‡m$`v/+Ž9=9ókA%quÙ¨ô^mµW‡Cj£)«Šu¹öngÙÛÛe<ñÉ'¿¤®õæœFKIööwY,–L¯f^ÙŽj )Ö8ò^ÆÁþ>ÇÇÇ«b³¿†h¯ÃÃC../9;?ßê×"ˆ.D˜‘ýµaqÎl¶;ØDâ¶Êä†vw ëdûµ8KUULvFmÜo‡ê8üµ)8!èåy;7UU…T~ß¶¸WÅG¬"ò<§ð—ý×üWÿõßð÷ÿ÷¾ApÐï÷)®|Gßp4$IÎ.Î(Š•W˜'Š4W8¡=é|ôÕº¬¼\ù¸]V‹%Ö–‹e{¶ñåÆ!ò0ÄÏ.æE $ºòDQEXcÂÕµ@½@¡kÄxñ¹lχmqò ùòÍ>eBäM÷µ$ ßQ“‹Žx¤R…WÛãcj{½yž³·¿ëɧÑ(¤#Š{㡉¿—<™ìg’Xùï4Î:}6£-Rx‡QךÅ|Nžç¼ÿþûÌæsñxëµwg¦6îªS)¹v†ßŽUÃßçœ% BkÜÖ¼ÐRØp°Aê!BvžÖšª¬¸š^ñƒï~—ñx„ÅòÙãÏ}|™µ¼ûî»ôz}V˂dz.K¤§±Ö¨Ôc$!B‰P -€Z[â8Aˆ˜(ŠIÓ^›(àÉÎuPÝgV ùꪦ,×íº¬¥ª5‘’mw£ ±JÍ<ÓÜË~-ð%íq\°‰WT¬ ª™Îg>À†h鯾þºìÔÖxòÑhT$7Ÿth»élñ²³žœnÓÃi]¾Íðà\ˆµþó÷Èþì[›Ê BïE§ô¹éEÙˆQX¹uŽóÑgø±ÀX‰pŽùÕŒ4Nøè£ˆB4XY–œ…øh˰ßçáƒû\^\ Â}C6¼y¼y¼yüI ‡Wˆ÷Í|‚øþÍ¢ƒn:UåX¯ÓKÁ‹çðøsÍô´^w¢]º°W'#ÔZj<¡Ñä2 !;JÝÁG´¤G«ÄÚäWl©Ö¶€Ò†² ¼¡LÐpÎ{eÈi­k‹¤nŸwkIt¢S.娫¢%3Ö°o3ÜZ¯–öAÄÈÿû›ƒJÇ®)6vÊFû}4¿e»”µ–\[~æíäçÁÑ®"W¨ ˜p^'b”j@1¯ôh³Ã±íŸQa­Ï FÄ(†ôK{-šˆŽRL¸oPB_[ºÿîÝA ÖzðTÛp OY‹@XÙÖªÜØLeÈRP”Џ{ûˆþàûüÇÿøà\ž_±¸K+¤’Ô•ÆË/ªàÁƒCLéã²4æã?àƒ>b]jf³Ú”¬×¹?tHˆc‰ g-Q’’¤Z+.Îç\\LHÒ,ñ%k""ëPQÆ‹g/1µáý÷ñÿŒÏžó·û¿p|rNU„Œ·@Ó Ùa ]ÓMãß3I>þè}îÞ9§½UFlb^ü5%·¢Tdûsä·åD¯Ý—ߎ*x]À¿”Ëa èÍR-Ü%>[×ãªåá@È ú73_Šû&ý¦ƒäë¾÷wÚR»@Zã(2öAd¯)3½RL:}‘ôs£Ÿñ$8)6ׇ؆ò®^î5ï{7J¯[žyóN¿Ì›ìs!$HP"Æ)Zcµñ@udµ¦ ý(J)P’$ж ·â/„ Šœ©©BªW:Yääø˜/^P–kÒ(Ä!„˜²WH³vÛ ùÛ88¥¤IÒü[ô¨!Ë­ëpâÆÈ«ŽÕµ1[®ë×™|Í5wSÔRó|]KFvÖæ`´Q„¶EÄiŠ¶Æ“=Î1[¬¼:N‰b_]UåbÉt>çÙó§ŒGcF£1ºÖ”«(Ååb'ÒƒžeÁ'?£Ž÷>ú€;wïÒëõO&>—9öÅUUQkMY•Ì ʺb½^㬥˜/xxû.oß¾Çí½LU“¥ÆyebS°\UµÑ,Ö³UÁj]Q隌P"â`w[“=ŠÅ’Eø§ç§|ýùcž~õŸþò>ýäWݹÍÝ»w9Ü?àÎ;ÄQÄp´ã­ID­KÄJP•eëàQÊ«»E¸þ`ï<í|©*ÖµJb©"zýÆ¡¨û2(4=É.IÒ”8MÚ(áUUz…µDIÜæŽ[ç×¼(NrMYkž¿<æÞíÛŒ„ð%¨IÊ;ï¼ÃË“—\\^ðâÅ úý>»{ÞéôòUÊ ˜£¤ ª+úyÆN¿Gž&Lg3ªrEÚË<ù†wQÚ¿z'nPß7³_Gœ"¤½BH ± ë&.£K‡n°K¹Y ÈžDŠr]P,ç,3&“1ýþQ¿G5èqûð€ÅrÁªX³*ÖÔáš¾NªúŒ”$‰Éóy–’e)·é÷ú­Y­–ÔUIœJÎB)Æ™0¦ïP‘Ò;–CÍV̆1¬Š‚ÕjųçÏ9==¥¬+ßµ3‘örd¬PQŒˆÂ:§ê5å½¾¥—ä,tÅÇÄÙùOž|Íx4ò@¡mÖsïl¨ª5gç'hkH²I’4"Éb¤ôDAY­Y- ªà^!œœõŠu!D çœlÅA¾SÀ¢"©ueCœï&«^¶È­ÍI’´EÖë¢ð‚"ç×+Ú³%­£º“ïÔ‚ÂÖnbqZC\ŸÒÄFá¶udÞŽ}ÔÚ—­'IÂÎÎ!»»»þž4ž¬ñîp¹M…N)ÖO×7t÷Yïâ—¡w/ Ý>’@¬,—K¾ÿýïsÿþ}~þ‹_2›/ ú›¨ŸÎ÷lÜ [›ú+¯éU!íõå:Ÿ Ý>ŒWæï 8Ú\ç–8R,f3=z8öŽœ/^P”%½þ€÷½O’fŸžð›Ï> Qâ‹Æ¶h]\·§Ìµ=ŠR C%¥wP¨ ´¥wÓC]UhS·ÎSWTUéE¡ÖyQƒªyßÛyp³ŠÎû†Áá¹4©›>._´nµf0òÁ‡ïã°<}ú„ÙtJ0À:K–eÔº©›.6‹ÝD¨Yú¹\ âB ·k¢ ]Ÿy‹Ÿtàá\ûžµL­À¤… ±¢«dlÚÂÂòtMŒHBy›ÕTe‰®kÞzøo?|›$N¸¼¼âôì­ýõ:O¸ÿ——mß ooo"Šá5gÑþXqiØüÝ:ßÛ°Z9óˆÓã˜Ë A]¥ˆ(AI?|&Nm+„Ð!WU#TŠ 63H„àA…µÇºƒ »™ÿþ„‰ûFŒOЉ¦r›¨ªÆºª„ØÒ!‹¼î(E‚º%SqÈ*mUÀ" ÕD3Ñ´ IÜ+èÜ–êVt²&átûdgh¯[l^½ÝjÊtí`යágµeØUtÊ—C/B„!G†¹D¶€Ž·š1 ZHÉvœ N°gaƒÝ—6Ò&(¦›˜"!:j›`§d“ì6sd›Éßäš6_äóh7Ñ MÆd“=ëcÃ, :üGàˆ@e½ÛÅXB>eÈA–’1Æ”¡ Z„Èï ò»5äoH‹ QÍ*ø6¹ý®ud€E)z<q,Ѻ¤®Ë¦¥ ;RvîñPJ à4I¢øó?擟ÿ†—'èÊg»'©aP‘Êó„ñx‡<Ï)ËAD–ÅìîM¼ƒFxRͺ:”€yådšô¸¸8÷Ê?-8¼uÀd7GH?DëÚ¾Õ•në²DF+úýËùŠaÈ_üð/°ÆñãøGNN/¨µC©©´u8±¡ º‘JÝâ/!i’Ðï%¼óîC¤rèÊÇ>Ù¦¬LÈ$K¶®µuÁšÖ¶kDG»€_GC·€M·åZù×(‹~ÝC qëdèïmY·ò¾ODŠN÷ß°¦]s|›X¤×O~ëí.¸€l¹×ÉI~Ý×[ç RI²<'ï÷‰³ ‹h]slE¥”N'†sè³í×aŒi#šN…ë_w3ãꞃV­º NyÍŒ,½þk,ë¢Bʈ,Ï‘ÂgGkgÚý¨KEÇIŒ©}„ÞùÅ%³Å‚ƒñ˜HyWÒôªäâÒS®×k º 1ßÝu5¦kwiïñ뢾à7V¾`¶  x¥[cÓ¹â×îm°ts½z/ÉkÀïfïÜì‡Üä–iöHÙÊøBµùÚ¶Éÿu~Ýq"iŤy8͘M§X稌õ kÖC8KœeT•w”ŽÏ/yyv‰5†,NH£ˆ_>~L?ﵛݳÓsF»cã I¯Ê3´«kR µÑ˜Scåë§O¸¸¼¤\®H­àpgŸ?úû·î`ªšR^y[®9?¿äÙó¾`·ªyöò%i’sy5ãxvÅÚ9.fS¢Ó,Ž'ŒwyëÖ¬ÑL8½¼à˧_3;9ç'§ç Ç#îܽËÝû÷x÷Ýw9<ºÅþþ>VÀÞþgg'¾ÏJŸåï||†tà´ñ¤@ø }a¯':ëuÉj±Âu¥4ËÐÖ2X¯Y/W̦SOž©ˆH*ê²$ÎRò^޶]•H&ØRJ¯–o÷p˜ÅYF¹*89¿àìü‚ÉÎÆ²,g²»ÇÁÁŸ=þœ““öö÷‡ÄiŽ“›³ ÓÞsuh–¥ìîNí xyrŒÓ5ºZ#è¡uT¾À8ŠT›Á¿¹ÖEè×òתˆ$¹Š‰¢„ò¤V±Æb¼C„ÍÜÕu7ÊÎ*FŠH@gHµXPL¯˜õrIL¤2¢^ŒÑ†^>ö*YëɽºÖmñg£ìN’ØçâG1Æx5éd4fw´CÇXcH#EH±¢X{aŽñŽÞD)dXE…ØJ?_&qÂz]QÕ~θ¼ºb6Ÿ1_,¹¸¸ ¬*Ò<£—÷ˆ³ "E”&íÚíZ%A ¶œ@8ßß¡«šªZ㌦Ÿ¥<¸w‡»wïøþˆ0GÕ!–ér:ãɳœ!¥"Ë3â,Ç ‰Trt…ÂS‚£.K†Ã¡'[ê mt‰²¿¿®+¦—WÅŠ4M½2>¨Ö•TŒwFðÏ?û™WüKÓ“$ óÅc,Y–3ôÎÎN)Ë5åmùnº,K™^]²\-@8zYNÇ!~Å^‹¤ÙW] ÷F±Apºëc[ÁA¬""¥Z²H¼F¤Ðô4±%¸‘Œ|_Q3× I”xòÂH&=îÞ¹ÍÓ§O8>~É[÷ ÃyÅšÚÇ Ëåô¥iž #E’&ÈÈÏïB Öå’ªZ—¿¦#©ˆ#‰®+ŒV!:QzpúZ‘¬µW L «…'ý˲j;\Úó›£^/#M%³iá÷tµóÊ–c󚣉A¶¶{¦Þîø©Çຘ®ùçQ¬Ú¸»^/'I|,î`0 XW(c,X·ÕÔºû…lÖõ¹2"¬J¡ŸïßÐãø«¿ú7ôz~ýëO©kM–÷=éT×>ÎW4I¯»ÝbÑíjPÍŒ 6¸qm‘ø+³è5¦½Cuíû‡ƒo=¼OÇœŸòùã/P*bggÌ»÷AJNÏ|ü^œ$¨H¢MM’61r>ò' „œTžTž¬ …ÒÆl€tkkêªDW~-ÑÆød£1Ú¶ó”e¹lyÙ%_š~k­Oqè”47îþF(BçÁj1Gàï ØßßŘšÇ?g:½â½÷ᜡ,êлÕq tuíµ»Á¾lçìÔÕÚ."qýºÝk"Ìž~ßµ0-\g‚PÖ^¹F:×­»ÞC³‰BÆZêÊ‹9Þ}÷]öööý}¡ Ç/ϘÏV8'Ȳï¼ûˆ4ëaQØ€'¼!Þ<Þ<Þ<þõHˆ›?&éÐýk(·ªk‡µó¹ïmb@šGDªf8°DJ ‰1&l á4½~Ép4@F5qâÒ"„Ï ”¡?·æÚÚ"¨føº)Σ“ÑÜ<­u“…Ý|M"_Q§¹|wíÁ10ãȉC5VÒ nL“¤Ãˆ-€±)¹j†4kÛd76cûÏpožt“u¼±‰º4ôn‹ŽâŸ›âHDÛ£a]G½Ôä8:3aÑ¥dBšWo·”¢¢u1lÊ¡ƒHÉ«i]hu¥©í8HÂaÆ d„³[2 OnT?Bz墔AmÕyý6(T¥DsÉ XRbt8Ø„Â3'6ùùþºP ¢6Ï~S*¥Z`Ñuè6˸="ð@ˆønð-ûomc[bLˆoyïå"Ä#éZl}¿ìdõ+!©tHŠˆÛ·ù‹ý€ÿõû?Y+ŠbM˜…‚2G¯—òÁûïpûö.U¹"Ïû$IN%”kÍ|¾d¹*¸¼˜úP–%y–RU†²´œÍ¨Ö!ò^‚sšª4ž4Šå¢`:³* Ò^Ž®N[¾÷gßåÞÝ{üìŸ~ÆOÿñŸ|)£hVÖVÂmÑɤ½¡¸÷Öá>ûŒ©@;ôVbc–[äðF%f›Ò›öºë®©×סî+:lòëz þØ×þ^×!"ÃáÕâlDçö ®»oˆ9ú6ϯ9`ü¡dÃMñKÍýè®Âݯk£ ¬%I3¢8i]aÖøx–F¨”ò‡%Á+ëûMäÁõ¯év7¼îë·Õ{a…•€U0Už.µhTI…®k–‹eYµî½,KQªÉ wmœŸ }BIªµáää”étÊAˆzpÿ>Óé‹å’²‰X 1,Öm—2 qsy¸kû¡h3IœlÅ“m %ÝbÑÞ\7v€ÜtÏÝô¹o@ßo¾®DP!o}èªw‡Ïf7Ö"”D‘Æ>cyÞÿ¢X‡ÌjÇÎp@¯? ?"œe¹X°^¯1Ʋ\¯YKÅlõÄG6ªíuA%¿øõo8šÎMF ‡v†}d4Àâ®4MI“„³«Kf—WÄVðààˆGßæ»÷é¥9g«3_i4—³)OŸ?'ŠbFiÀã/¾D¨˜EQ ãˆZ8l]ñôÅs¦—WL÷xxtÄíýîñÎ[oQëš/¿úŠgÇ/9½8çìò‚ŸŸò‹Ÿý3»û{¼óè=îÝ»Çþáï¼ýQøì%>ª¤ù\u­[ÄA"ˆ£%| ¥Öš¢(|ÙtYk”¨ )ò~º¬ ªˆã˜^žS—UP—hë¦Ö­©j¯Xî–ƒ6×T’$cX¯ÖÌKž<ÎÑÁ£!µ6ŒG#nÜâòꊧOŸrpt‹££#Lš!¿Û[Âöeäœmï$Ž˜ŒGŒwv¸œ-¨ÊÒ«Š0lC1ô«§!¢G ä^IÒ k<($dí‹~ÙÄ46b)}LY»9G¤$»Ã!ËùŒH–³WIÌîΉ%ÎR„ ­>b¥ˆÓ˜Þõuߨð5‚$V¸Èƒ²‘ô1F)ƒ1ÞÕ®BöúF”²Qˆ7g¢ºÒÔ•öÎãc¨šéFIݨ¤Õı¢ª×ž¸êFMÄ–Dn:]ëJým¤Â7ÍùÖ9K±^±\.Éóœ(NZ‘Ćt .üÖ}*‚ÛÈïõ@OvôÛóx%„(.œ£®kv†;Ü¿wŸº®yüø1q{q_èžÓƼ2Ï~ÁÖõYÈÞöëˆí9vkî³  3S眞œptë»wïP–>ÉàÉ“'ÄQÌÑч(ñÙgŸSkö÷÷I³Œ,t·$I:ƒ¸Múõ³»?!šþ-MsŒmÖG­5º®°F‡³¼ 1–®……Ùû IDAT#Þ=5á¼do¸ÇÛSˆ6¦ºX{8gqVƒÕ˺®øÎÇs°¿GQ|ñøs|wGD]W‚7à F€¸& c»‡ÙÞcÎuㇻëÓ«âS%7xÈubÓ§¸k±¶Ý벃M¹Žx¦Ímó]>Î9–ËIñƒï}ŸXù¸ÙªÒ<}úŒ2Ì!*ŽxûÝw¼+«ó;ß ooo|RÁݰÀ‹?Õ/ïüÙé†jÀÓªã`µ®(KM;z½o¿½ËÑ¡!Kk"Y¡"‡“^`¬ÅaÎeý‚^¿$ÏA)Å#ìv ³±ü>€ÔMJ˜ëºf}h{Í ì:î!®g6¨~|¦©Û‰„ôdCøÝ:XÀõÿõ|Mß‘aBùц¬hÔC¢akó#ÄE4dÈ ?·yÞö5Œòõð ÚF}ÚSa°òCk»6Ä÷´ƒàÖ@f;’Çg¥- 'Å«l—»Fš4ƒê *ºjöM”’$¨üpmü¯¼FÿÜŒ± 7N[X·é{¥@¡ü§,"´ñ?×h#j›ÝkqVks;ØÞp€xÝuî.Þ›æ`°Qñ:ë3[ÛÌÝ­a< ‹[¥qÞ©¢/Î~ðð6½~Ìrmе”ïâ’ñd„fµZà¬!ŽSŒ®˜ÏÖXWòôÙ©·î†^ )q’á€u©ÑFâð`Öj娪@èšHeÔÆQ––rmp.Bk‡1Ž[»û|ç£(‹5?ùéOY­‹¶ˆ[×5B&Û.F%Ž€Rz¥þ¦`Öòï|ÌpØÇØ*d‹Ö>üöš¾{¼ü6k•cs¯í+èFý¡î‡×•o—‚ŠW^uEüÝßý](ìôâ»Ø^Kh|ÃýûÛˆîó¼Ó^Ь}2”í5äO÷5·ªÖî÷7ù°Ö†\^? B^ñ&÷XÄ1ºª)×k’4#É#_šya±ÉЖ¯¬¹›’:÷Zçú—Ý0”`¡¤òÙ¾!/ÝjÈú}´1¬×k(Ë –Kƒ‚¯yíþP)”@ ²îEÖ>.qÐE«ÕŠÓÓSöÇ»$#ƒ×»Y®¯m=Þ8KǤY†TÊr‚^DXò‡}Ñ7×âæŒ±7^ÝÏàúµÞ8H^Éoîð9Åu]IÁÕbÉr½æ‹¯¿b4qëÖ>woû·$IH£˜á`@žf,®fˆÚðààˆï>ú»·ØI{¬Ë œC;ËÕjÁù|ÊÕrÎh0äÎÑmV«Ó«)EYÓ0‰4ªš«Õ‚ù×KŽ/Nx÷­·¨•ãáí»ìô|øÁ<¸s—UQprqÎéå9_=}ÂÙñ)?=;ç“ÁÏÙ;<à­·ßâ·p÷îœÈ$F(×ņ´>ª£ëÕÆ°*ל_]bœï!iºAe¤È{=ŠåªíÐH³ŒápȺ,Y+ÖUéÁ—†;ŠÒ«MÞ}©vªÅqŒ©*NOÏ89;#ÏR–:Çd4a2sz~ÊñÉ G·o#…`< åˆæšÍÈÝ€&Y–qxxȳÇœ_ÍÚlêë÷ÔÄkw¿p›²û,ˈ”"2^å5—EgM ³HÛ_£5I÷Í’Z×¾C$MˆHqLÑ[÷Ï ëXó\˲l Èa¿ß>ßÕjEEdYæUæiJ¯ßgU¬6ÑrÐîA‹åŠùª`¶\rrzÆr½f6_àá›ö{¤i† Rœ$>â̘6&«Qõ·{Lèõ0¡¸ DO–¦Ý:ä`ÿ€HE¯¬Éu]szrÊééi;ÏùhM¯rnœÑøzv¾‚²ôÝÖÚÖa3é÷ûüöÞ´G’$½óû™™_qå]™uŸÝ=ÓC‡äÌ$°ZäŠ+é£êý¾ ,$¬H+íô ‡ìiVWu×™÷§vè…™YÝ3Í™%Àr QYYYáîæf=ÿëìô˜‹‹‹f¿Òò,ó!ìZ3™LÐX†¾Ö¾¹½1°½½ÍÕÕÓéÔ“hÂgŠ¢ˆƒƒ¢(b2™\› Ec‘·üóÖ*놱Ýe-¯ì/†ÃáRÓ{˜®Ãléìoê{ÓmºÖàx}ÔŸk+„ÑñÅlnlø €àk!¶”JÉz)GQV”eId$’•%ôGCoSSÍ0¦"Íb’$¹*lÜšÚÆ×ã>SÍÿ¤ªÊ`G©û”ÆêÙ¨¼Á« ʲ µ½¡ŽâÈkê„.аnO·º_϶¢zV÷8]Ë\­5———ììì $GÅàXÛ*ýsZ¿vûþƘƦÏÛÁÉÎ{]'Yh­yôèŸ~ú)GÇGœŸŸÓï÷›ý d¦îy-¯Û®Ë^¸VI)XUB6Ú:ƒD4ïw­ äµñ^?÷{{»dYŠNOO™M¼ågŸ}JšÄEÁóçÏFDQÔìŸýâó댩×#_oÔ–—þÑPHtÈ4MMâÕ0¶ 0îìwëÏ}}/Ð>?]»ÓnýÔ­SEȵqÎgLÇc.//‘R²¿¿sŽ““¾ýö[ö÷÷¯:uþ–k,ÔXy~äÚšn•|Óá^[sºjžk@TǢɭ(×í7ºk,ÍÞ>€öÖgS<¸wŸýƒý0v ãñ˜W¯^ùް ‡}öÊ¡"Áí#Øðñøx|<þ¨ ƒû£a «`Çu|C4RL£©²‚4‘|úÙ.Ïže ûG ú3`T¡ÖéfÒN”4* †‚þ¢¨ãQOÇÆüÚ(ýÆ«£e»·z‚Ê„ǺNc=°M£­µQ¨3 ‰xQJ¡­¡²fi]›¥‚¯ðÀC`Û»5ÎÖÇT4Ás} ÚÐa›t µŸµheˆt­¥ÂÿñþÀZe9n½ÅÏ`TƶvKuב@×íÄR—vüéx’ûý³ë×9Ú¼ìVWâ\$ c‘Qï¾›Qû°> ÍÕŲÀ³ì”À ½äñÞ NlÞ×áYõ‡¥KEˆ5Œ‘¶‰Z7¾üÎ Ùº€·MÅTR5>Î>lÎ"MíGlèZœXÓJºò›°^?åñ“{\Žý&7Žönß§ÔsoV•L§xÖ¢P”…a1+©´%/s„TáK ¤¿RzOúóóKòE…ѳYÉåńͭBúàËñxÎÕÕZ‡ðK!1•ã/þâçloíðËÿú_ùúë—8¤glÖö3Kð€£ ÆëlDdmýåØÙÞäó†ŠÖoy-ÜrÎC÷áhþ*¾½½ŽPÜÌJûŽYÿ¥x¸©‰¥ê@R:ê˜)®Ç·³ºÍ¬ßçsý®ÏÅõókAÕßO,ÏGqšd)Bµ [.Ó‹ENO{;—8M–æ±›€‘î5énäÖ ë?«§³9¹4–‡ìF©gÊ&YꙺUåí ]« ól[µLGq™Ís¦³ãé„~š²½½í™±yÎl6ÃXÓ̃ˆõY×€ð`$ Iš¢bÏÚµôßz5[ ¯/m0kÈåC ÍwÅzcß½O7X7mdWïѺM±”’4M‰BÓº,KosP• ³¹1òvBÎ!¤"I•¿‰Á×ZÅâ„$e1›¡‹œàýѧç§rxxÈæÆû{·ˆ…äêjL¾Èùñ'ŸòÓgŸñÙÃ'ÄNàtÙC;Çû“¾yóí,Ãá°iè(¥Hã˜þ`€Lã¦á›/L¯ÆçxvB¡KNNŽysÿ÷îðìÁ#¶77ÙÞÚæÞ½{œ]œóèî}ŽNO8½8çÛwoxñÛâÝë×üæ‹?äàÞ]nì{›©8áj|ÁÙÙUQ²1±³¹MÅ!PZ3/ Sb±Tº¢, Õ6ãÒ4ÅhŠY¿G'¤YFo8ð™yN±ÈYäi’âðMì,˰ÒDË¥"¬u¤iƼ¬¸¼ò=³ùœÑ OÇܹ}›É|›÷o9::âêꊭÑÚÚ…âªëå¾Ô”ÞVLÁÎÎŽŒÒ¡¼µPìúÍyµMÞe{ÌukŠ”é<ˆ¡µnš}Æt¬”:vŸµ%•”-!eÐë ^Ì(óœ/¾ÆIÁíH1ŽÐeE×ú¤­ƒ•Š#€ü4!¦^‰,éõTU…Œ"êHøÁhÄt6#"lhÄcXä‹F=2›/8¿3™ÏÉ‹hçØÙÙ%Žc?g'icGTê’Tvu ¡8g›@7@ªH©ð\TENšÄÜ J•ápаˆ%)Ê’E¾àè舣“c&Ó)Q7ãK÷w ꃆ½*VkÃÙÙ¹¹A)Éîî.RJNNN˜NgÞÿžv®ÒÆE=b<3žŒýþCE¨(f±È©ªŠ,0¦G£_¾~å™õa &!ÌþÖþ>——\\\45éºÆk]Ëw3Ö6ç:ù6.ì%1mÍÆÀK¦Ž<ÏéÕaÑ+dlÆ´.ùË¿ü9'''¼yõÚçW8¯þRe&v¦d0 "EQä”Uáó,œ"Ë’P3Іø%„0¯ªZ¥¿œƒÐØ3âÂÃ5$§úZ™†‰¿lÚ+BMå0ÄI‚ÖŽÙl^Ã6dªn Õ¬õ°aÝZ¸6®›±b×ìܲ·r PU^íå‚zÈÛ!·­LGlÈ0ÍWצi¹ßÐ’/ŒÖäyÎÇɲŒ/¿ü’³³3î=¸¿´®š8ÊšºKÈe@kj´]Ïíµ{Ófâ¹æ3¶ó·õës8?×€Ž_üâçdi‚5†¯¾ü’ªôêî?ùÉçèªd2›ñîÝ[²4!M’¦¬Ÿ=ctpü÷»d³é›óSoAklóùk£š$⮲ºK¾Y"ºvÉ:7(Š5^ÙÐØ »H>Øßçÿæ$I›·o9<:âÞ½{ÄqL¥u«Öp,8…[&Ýtk¾)Ä»@‰ë÷Ùµ –”âZ]Zg†8ñ$V·¢l n‘””eAUUÞBig7€¸1WWWüö·_EÆT<{ö”»wÀ¬©|NàG°áãññøxü±šý̦Қþu;QwŠ?¿€B¬b”3(£~Ì­½˜Í­’~:assŽsTì}‚ëSðÆ#ž9õ#²¾$Š-B–×»˜UÉÜ pðf,ùäúLÙY֣͸N“=¸¿×ÅâJÓÌվ̀Qh~zÓO!%ÆhL`¤„®p»kÙR¤óÞ¤uð•— ¶¯]oà|6wa‘ôwѰÜRc´½ÁV„­ ·òÚmã^ˆ¨ šnB”]/ ,Vüç‹¥÷6Öa‚¯¶6A]ŒÈ•®U/nyC!è?›¬¨…X²OòïІ]×fV²±ƒrM&ȲggÇ'\P˜æ·”ôEdþÚ(,BÖ>ým±å=ŠW™/6¯+ñÝÍeñ¿SfÓú³6ã©6€RT‰÷9®|Hº1†$ñ¾ŸÖi’›¡\]\’ÏfL&Þr|qÆýýÛ<}ðˆQÀ݃ÛlFÜÝÛg<Ÿq÷à6¯Þ¾áÍÑ;ß¾ãøäˆWûÜø€ÍÍ-"qyvÎÉûCzqʽ½nmn£hkÉ«’i± ¯JŽ²Ì±Æ„Qˆ£ˆ^–¡Ë c=º—f%é¥ 2öc{0ÁYÏ¢¶Ö1Ïs¢ªb>_& ½~?„¶¦”IA™{Fý¢(ègVYâ$awg‡‡÷ðüÛ—³¿»GÕÅu–[kÛVÏ‹Ö:âØ+RîܾÍdºàøâ»Xö‡Ä±÷%·åf“ù³:¯w‡¼‡¿Î4Q#}ȇÏmµµ¹Äø¯röz”UÁÕlÊÄhŽß#“'('ƒÿ¼_êy©¶ž°`‰dž—¤I‚JR¬T$ý„ÅbáI•f¡gŒÇcyÎl>c±X°X,8¿¸àää„ÙlÆ|‘Shâ4¥—e$Y8I;6æLšÛuVDT¯¤÷d·¡æŒAˆ]Ì™]y’ÅæÖ&÷îÞakká|S¨VÌ•UÉl>çèä„£ÓT°ïʲÌ7—‚2Ž5Í_ßVˆ‚ÉtÊ"/bÍ`0`ww‡4‰9?¿`±ÈÑÚf)UVJ2œŸŸ3ŸÏ›1$1³Ù¬i°mnn0èÇhc‘Ral…^aÐëõxóú„Ù|Ñ€ŒËYW×óu–5bѽ!ÄXÓ®a6äADQPý]óg ²ÕÊÀk¤…Ð,·ÎQGo0äé³OxþâkHÞëaœñ*s)A Leƒ?¾¤¬ *]6ÍÊ$‰IÓ´mŒ†·©ª £dIQ–‹ÆÖÉóZ–üà»k`‡9ÞììrÍ$$$iÊÆÆ&Ö-²YnV¡w‰Pu­fŒùÎýEWuÂÂßjÆYETUÅÅÅ·öH’c}ÖA¥M³i­v|Î’ ä¹Z•R×õmýö’Ž¥†»ʾ§OŸR–%ïÞ½£×ëy #Œ%Ù±8\WSù±":=ŽUËÅŽ²X.¥…g\s=»ê†VàAâ:ÀCUçxôðFW8kxûú[ªbÁÁþû»;Ä‘àõ7/y÷ö5››$I² A’]ˆ\»')–î«ìÚ%w¬œkƽ螣 ØÁvžQˆ¬ÉrËHÃ’ÕôªÕ¤³¶1>ªmg³QqÿÁnݺEYUüã?þ#q3 qίoÞ&Î[Ü©HQiÝ{ÁJ£µ·)kúCë(mÜNg9]H:Ä:ëè*ý»„"qƒ»Æê3ÑNûšÔIÃlæçÞGuæ*ÃÛ·o¨tÕÌ]÷ïÝ¥ßïûñdtsÍ?‚ ÇÇã_ØQ»¼tep¤©·’Ò"…źÊ{· Ã`$Ù¿Ý÷žªQ Ò3rœsX#pÆ7™…²©Êø[ZæùêÆý‡6¼2àzør—•.»|’NX²ö²ms#°êf‚è4«[Bh›k¶ ©T4”`\fì7œ„ $ÿžçÃi]»A¢04D¶¶/ EjÍ¢YYT—‹ªNÆCýú¶•S.]¯m –ke¨HG±U\‰Î­ãê"ÈÔÛP°*©šFíÈþkæA·QU{´6Y²SÔvNµìŸÚ1ÔW¹ËlX·„ê9QçW´6Rª¶Q,ƒË‰Ž´ÙŸe½Î…`åÀpVžÑåÖ´1?Bûû5Rk•M{Ÿêâ´>‡o '9=9æõ«WÌfsßÔè÷{(%©ªŠç_=§(Jþâ/þ’GŸ ãˆR;þãü_Y,rŠ¢‡² SŒ®¼V$˜M>DÙ)ªÊøpYm±Î`­c&¾p*„Á Ït² M"vv¶²àoèǃÁˆ$ɘ\,•6¤i†Š·ïÞñüëo*F(o_U{Í×lû&x9wI¡°Ö Ë’4‹±àÞ}~þó?ÇïnT?]VG½³tÿD·¨ußû._? o.nðªÿá sg.ÊûùNÖ S5þ°~¿¢–æóï|î¼ïÜ÷Ž#ê6ˆ§sbÇy‡ Õ0å;:Ù4 üWšež)ÅTÆ *©JæÓe‘{&pù&M§².àù¦Ç›À ›¤ÝtA®fÓÙêzõ[ -'YâA†Hz;¥`)Q_#!½­’m@bÅäÖ2™LX,d¶‚$N¹š\rqqés êf}' ²Yרk4ÁÚaˆ¢¸Uc…ç¥kW7}tÇ2© ¶Øº¸ñ1[w/šf’­%á긻-ZÛ0X+®1—~׺%Æúwúý‘Š(u‰1†RkÈ ßä ׯV j­A„Ü)qÓGfk{‡ÙlêÚr|zÎÉñÂY÷ï±»»ÇÆhg<9A[Ëñù9Ï¿}É7‡oy{tHœ¥ z½AQU>€3Mý³çü:E1ýž`1›7V|G©+.gc&ùŒ×ïÞp°³Ç«ÇOøÉ§?âîÞ>½8aww‡íÝmv¶·ùäñ¾yóŠw'‡¼xõ gï9=:ñj5 Q½Ï<æÞþƒ,ÃiíY„¦âb|‰vÆÏùÖP,$iæU:R‘f=òEνrDƒŠŸ#ðj‚x˪b4yÛk)Jßdž/rö÷ö¨¬!Mvvv¸wïoßstxÈÁÞ{ÛÛt9B)ÀmFºöÙQJѼRâübÌÑéVL¥¡çŸQ%TÛ°ìZxpÝÂFÔ5¢À7â!Í2ª² ÊuS³4JÀ';Ï‹’Ò+C¢˜ÜT¼}ý†Ü'èËB:¢mÎÖMamŒ<Âù)%™‰9Yo€CR¥®À¡Î¸ÉË‚ÓÓS¹÷=ÏË‚,ËØÜÚ¢Ũ8F…?EXcˆ”ÂVUȃQ¾Ig;õp qä=þÖLf&——$‘äöíÛܽ{—^/ƒ «•ÊUUq|r·¯^s~Ô‘j¬àþí"䟉•µ»V\è0?N¦3ªJ#„DëŠÑpÈþ­[h­9;;ë¬W¡©m}#¶ Þ¼!_äPƒDÒ¿Žs¾Ñ{÷Îmвàêjš{^eâ¬cks‹~àA<÷)#õ¾` º>ûfýïÔ@“ª†Z1Óïõ‚Ýß2k¿›·× ˜®Uhµm‰¡Ý™Ë¥Ì >}ö”ííþËù_˜ÍælllP•9¥®ÐÆpquI:ÈH²”Å"gQ,Ð΀AÒëeıÏI0Æ’ç…¿?D”¥f7 ”Æš"¼wÔØ™^Ërõ^§}׉Nn]’xžµÞ&g©üË:»›z¯·DòX-¬kóÃkÞ+¬*òêƒE‘SV%ƒA†­t£¨nÈOÎyÏÖP.Øÿø¯å°å°—sæšE×t:ewoŸýùÏOÆüò‹/ØÜÜl3ƒ2ˆeÃue¡mž‰ÕkS¯ï Cil”&v ÐÐöštç÷×eYðɳ§lmm…@öSž?ÿ'ò|ÁOþäÇlïlR9_}õ%óÙ„[·vQÒÏÞâË“ü¢(òÑJú váà•PZkŒ6Ä‘ÏQ¶­™–÷ýPºÎ Z²7åÄ’¥V{ì I¯mÑËpÍ’$¦,rªª¤×ëñ×ý×)ÇüÓóçd½ÃáÀkm£þRJ‘†:¶~W­5y^ µ¡*u7Ë6Pm¿¢“]æZõBwøùV6ãjù[eC=Ç4y8›a–¬ã<»So£&)óùœÝÝ]>ýôS¯š küW_}rÝÃá&OŸ>#Ž’8 –§ò#Øðñøx|<þ•]º>ZbœX¢X¥Žù¢b25eŒ †’8JPJPé‚8NY”Þ›2cïÕ/Ä¥Ê;cµ§¬Èýiº^÷L^=슷ŸA|x³t…–ߪB;/·âmVڻδLrZFMÛ|n¥´*’ˆÊîáRH„óAÊ® "`›€êns² c]:Ç®|ÑmpqÛ(²…¹Y$"ƒzC´¬…¦QTËF¸àsïV®³Rª‘{[Û†%ERuþî:MïÀZê‹£È ’$mØκÞ²N"µvæœ ž•Á¼Å™¦00¡¸ȆÅÞø=[èH¹k›¢š÷ ¤DX¿…Ö5ÃÇJ"¥PByö‰µD¢µRrKyÕ \¤v옿ëøo‚ªDPuëÃMñra¬¿Ê²D‰$x ‡&¢ÕD‘Âa2 ·Û¡”àö=úý!£áˆ4‹ÐUs†,ëaŒcsÓRæc FO¦~“!ß¾yÍd‘SV^iG1elDŠé° £z8¦I‚Õ%·öwøÛ¿ùwŠ&³)ç—Y×8"3Ž?çõá;^¾ãøü '‘Џµ³G?ë3ŸÍY,¨8&Š£ÆúB PQìÏS)Œóë]I²Ä+7z½¦ª8>;a6ŸrtvÂÓÇyxç÷öo3L2zIÂ0ë±ÙòÉÃÇ<»÷ˆ·‡ïy{|ÈÙä’²,ÙŒxöè ?ýü'lF()08¤¼{ÿŽ¢*Hûý,Aƒ÷aw!b¬mqšq5™€(ÈÒ ©|À´y$JEúzHFŠÞp€5†"/ÐÁr¬fófiÚDTŸ0ìeìßÚ%M"!ˆ“”у~Ÿ£ã#ß¿çÉ£‡( KÒeÐa•…Æt–¦”•æ`ÿ€³‹1_ûŠÒX²Ä¯­º4MÈ0öz²×¶&ËtÈ$T±±µÉùéi¨ëÌ«ål§Æ vCRà” íeôŒ¦œûL®“Ã#&ã ‘Š±N`…°Avì>›óu-±±±Á»w‡ôz=拜ÉdBY–TºòMeë 8ZC”õˆ’˜pâ8&NÏ’ž5qÈ•1 ¼Í¢±µ¦ì\ÿÀH¬¡|>'ŸO1U…ŽGO±··G¿×§×ë7MO§œ_žsq’õûÈÈ È`MuÍ[\4 {½ !˜Íflõ ®,ë±¹¹Él:åøøØ[_:p!ÿÈZâ8b4òŠ…‹³‹Æª¨ETeÁ|>Eàýãwv¶¹¼¼äìü¢©s¤iÊöÖRNÏΩ´EEQˆ5y_{¬–€å–ÖV2Í–í×—³‘²,k_#Üc±¦ö•ʳÖM°öªó1¢×‹€ MTIœ”hgùÓ?û)ÖZŽŽý EÀ»w`þë—_'1·÷›{^éÒƒ”J5÷¹ ýƆlG¯”¬}„ÛgÑ+Ôêf»’Qg{qõö}u¾)é$Ç4?s5ØpuyÙÌ'Ÿ}öJ)...¸¼¼d00—ÔNB¶Î^…o›.ŽiQuC¾()Š’ªòãÉu³b‚r]Ÿ8çV^#„TE±DœZú÷t”eÙZÞ¹Ö­Íð«×Üð|YG¤Tcƒyçà{{{Íœ¸XÌ=©'8lnlpçάu”¥×ËÒ]ÈÇÇããñ¯ t¨+ ©ÂF[†Ã”^_r9Î9?[pûÎ.WWBΉÄ%ƒ¤_jL›)i/f0TdDQ( 2^3+~PîÂò.Ú)£Çoê­$Q„ìæÚ£VJß«Hzàzm³Î{ü‡©º!Dª²º)2…R>·A)ò2Ç…F¼Ïtpa¡oÙ‹*X+9 °¡fbÑe«u ¦:4Ì3ЀˆjjðHXDÂûkÖ‹² –LÁnGICÐÞ2ªn¶Zת”˜p]$K‰v¦ sm¿¶¤k›BÃá™eG$%ÆYo±³|s›k E`êDmhf Y!cq¬A$£V*ë|Z[œÛŽ÷¥©Á•Pô)é¯ ˆM}Dx=¿A¯‚OgÓ@–®¤üvìwð]0€CÁŽ«›ÍæüçÿóÿâÅ˯™N¯è¶vöüØÐ†2/Âx’í$ÏŸ¿àýû#~ñ‹C”ôxñüUU2Üù“Êö•jB“Ô[P«nÂ=ŽcAœ:âØžâË,ë1[ž¼ðþÂgç—Ìç9óYÉäªÀÁgóÅ‚ç/_PV%¡ù]ÕÕk£0²ÎªÃ9 2Ó>àoþößñ'?ù¦Ê柔­Õ×òFY4 ö°&ˆ›®æßnž\¡cñôƒîe kƒØ=>ÔÏzpÑt”UîæspkT ×B{¿ã—2¤ü½í”º!yíœ6rbÍtT~iš’õzDQŒsÞ¢e60ŸÎ0•&íeôÞjEÏýïÅ?(Üdû³ÊÈk6~]í†hü$ÒÏîZx7t¥Y°é)‹Â7UË’8N6x&Ê6¼¾Q7$1E¥™LgeEªbý>‹Å‚·oß1¾šPT¸ÐÞŸÖ|ð^5 ©kÔe UQbû”7¦€5×=„×1ëÀ™UÛ$j¥ŽàZøêMOîÒûv2yêsõvzíúBgó*XU©øPP,¬dg#okd!5Ù³šMC ‘MçE"U„“Šþ0"K3„ј²d<™r|zÊxï—¤œœœð›ú-ß½ãøê{?ë³»µC'LÌ„Jko©Å$IÚ¼'!SBJoÃ×ë§$‘kHã„;·o“¦)óÉ”ãÃ#¾yýŠÓó3žo~ÍgOŸqÿ6÷öØŒØÙÜb4²½±Å㻸œN/¦,Šƒ$ã`ïÛ[[ôã§=KÜ:Çx6e^älílg)gWW!W¦áüõ@ThmH¢Ø3$­C„ú¢Î^QQ„TŠ(ŒÙH)϶Ï}@p÷“é4M§Ä‘$ë¥ÎT”F7 ªo¢ùy"‰SºL_ç‘T$qÄ Ë˜¥sèÊ Ã8‰‡^j¨×LŽå-Él¾ N/<  •Ö)I@%1I’%1–pâV¥ ãØ«(dm­ÖfhÙŽµ†”kæUׄ›á¬e62_¢‹œ;·÷yòè1»;»"š0Ð<Ï1Æp5óöÝ{NOÏáÉ£$Yb /‘ Äòüß Ͳ²,¯ºÙÚÜdwg‡×¯_ùûg,qÜó*0ÄqÌíÛ·¹¼¸âüü‚ªòvPIcŒFWÞè`ÿû¼~õŠ*dNÔX€‡0NÇ~A†5À CÍ*n¨=Zµaw¦ìÐZY_F!ü;‰c„]Îs¬Ì‘ÝWìÞ:§ýýZÑã÷,m,·öxùò^¿~Ãöö“é”ñäc ;·v‰³Ôç¶¹WkÅ^i’¤1Iªˆ"I+¢X¡¥,u°©UäyIYV(i‘ÊÑËâfì]Ï"h(VKsÎ*ßÄÛäù{Å•ÖL&sÊÒ«‡ºyXë²êëÓ„©¯±·’¼š¤âÉ[CÝ® ‡Ú% ×£­ —WW|õÕW ‡›lïì…u4ž£mÃFï²Ò±K$©Fmkß'°Å˲¤(rþöoÿ=qóË_þÒwGñPQ7}W}øÛ¿{5†ËVÁÛUEwþŽóØdóiƒ´E·~÷w××Ä>gbÐïsïÞ]ÿÜZËßÿýß3_±··Ëç?ùœ4Kywøž—/_øy¸ÉX×êk-E¡Ûý#-ÁÈšN`cŸTÞà*±Fiß8<(‰5®éytw”$á9V¡ÏÐëõxûæ5‹Å‚¿øÙŸ³µµ…sŽ/~õ+®ÆW|þ“ÏɲÌ×Ý0u!ð.X¦ù»h2RzË¥Hùœ¢(ÑګʬuAÝa¼#…ëäŠe›¬®Ú£¶5î>¦»ûƒUuû ÉǶ×9`ÃçŸN/衮 BÖÎË_# óôéS¶··ý¹,Ì¦Óæý>‚ ÇÇã_ÕÑ%v¦) ú0‹-ƒds#âýûg' ®.z½=œUD2 ¿N×þ48„³(å˜Ï+_pXÃp¤p®ð‹­mNûâùŸ»‰æX&Ö~,X$Ç*44ZVG`ÔKå£úÇ@yÖU“ÚÉp> ,ŽN›¦)-ðÍŸ$ŽüB¥¼UÇjáh­¥ÐeSZªf±—׊noÏà‹E±ˆpaÑ#€ ª–ÒÖ ÃòÖøUvØõÕ«½v­ e0¿[%„÷.7‚ªT>c¡)x:¬ÐZ2è‹0ãsÎaœ&Ž$*ŠûV5¿ç:ßÖ[S’¦É’ “ Ö'"EQ°;2tšý.Øغ á¨Öz`DÔàJhlÊN£P‘÷Óõ½!×x—Æ6òÖeV×rCyÝà‡¢ƒ¶‘Ö+¿ùÊoÌQLgs¾~ñ •Öd½E™7!bUYR,r"!xøà[÷7˜ÏæŒ/¯˜L&ü¿ÿ÷ÿR±½·GQäX[al˜}žE±÷ ¥X[°˜•H™ „£?LnDÈÈ!…b>/Цò>ÅÊ'mr^Ù4_L¸¼³˜EÅlšGœ•žñXiÆã ãñ¤³™meë~#Ø~Ùðl×VR8nínñwÿþ¿çé'0fŠðVYa³ïLwÞp®s–u˜û²û:“æ0³áŽ5¯¨#º×³×ëy‹)=ó*0UéX-|Wsy'þ÷Uº5¿uÔª½@ bp &Z=ÿ(Iˆ³Ì3ïÃF®È .Ï/ȧS”R ûÒ8Y:·Uf˜\m2ÐfatA”å²ûóD`_ÉÖÈ[SÀSüÔ Îù¼¢¨ˆÓÅbî}éSo›I´vrÖZDPB,òœËÉ„¼,Iz1Y¯ÀÙÙ§§g<~ð^–R•/*ªïµX±Q3b[Z«!¼j¤¯MÈ3rM é÷3×)‚êëÜ„iÖ2ÜJãìzFÃêú[?ÕÍõ–×þ¿sׄMMÀd°´Á^¤¶/t¶µšPõØèÌ$u“0ð%„ *3aqœ %ŸÍ¨´aV–œÏ&œœðÕW_ñòý¦¢¿1"uŽ"/ÙŽöú(.X^ë|Øm¤<(@/¥<ÐÐïõØÜq÷`Ÿª,xûú º¬xp÷fk›AÖcv9æââ‚ãÓί.yxï>ú£Ïyrû>ÛAqÖKRú[ [ƒQh¢P³h]!U`×:ËÅtÌé¥I=~Œv†ñlJ1/‰Ã7C\ ²TD!KÄ†Ü ì–@a‘Š›æx;e¤‘Ö³¹3–’¼*ywt„1šÒTìnmr°»ƒ’°½½MúÆ[+¼wH?ÍHBppY–×›ÏJB§ˆð5éh0`4r5ñô")Húq3®–Æß꘯mQ‚ú©;‡&I‚é÷±U‰­J¤]¶-QgÉRÐGÁ¢Ã‹(E,–œuhkèõ¤qŠP ®£êÁ-[Ù@ðáÆÞ§[%±oØö$2Žˆƒr!Š#¢8n<Ùkbг·¨^_7Ãëf¶D°/¥c«aƒ +ó¼¢ÊX]"¬f˜¥Üº{À§Ÿ<åÎÁm²¬Çd6çìü!%q¤X9³Åœ£ãcŽ©t°ˆâd„16dþô Á£5بT„À1ÍÐÚ…µõàà€Í ~}yÁlî­v£*(š†Ã>»»ÛL§S¦ÓYcÏ”eyQ6R¿ß'MSÎÏÏÉ‹¢Q6ÄIÆöÎ;Û›Ì&WŒÇcªJ'ÉÒ8j}õ—ºËóáúy¹M˜•T¤qâU…Ö«élÇvU Ö('UU5ôz.î’ÈüõöŒú;÷îsïþC¾yõ­·øs0ŸÏ°86v6AJ*ãÇUT[¶õEš& *ö¶L¦4K Kk@Wš(r¤Ra;NÛ±ºjÐt‹ Ñì·šçÓµaq‘¤ Î ªÊ!DLÈŽo‡%eB'ÃbYaÕ®±«†möWˆµÀÅêê›Í> {2™ D„R *މã!jû'Û6‚]±ö¡L­†ü†ýœòùqÛ;{ܽ{àÅ×/©LP–•÷û½ŠÚÙëdŸæ½¬§?yÐq,saÏØ'¢“ƒ šùO¡”kr깤föKéb¥$³2çÖÞŸ<{Š‚ét¯õ+vwwÙÛÙÅTš7¯_3›Í GKAé5ÞáŒE•K ÔJü6ÔÛµJÊ6Œ²{¯­k¬­ºûé. íÇi­B£ÓÈ—žµU.)%*<{^E5CJÉg?úq3›ÏùöÕ·ù¨@›9²8ÚÏë•b ™ÈÛ_Ѹ)x@ÖÅOw¼.ŸËòø P´Ž°T‡˜7;w·l…ÖÝÏûq$òaQyI/íñôéÓf.«Šóó3f³)UU±±µÉ³gÏ|nRYa´æèè¨!‹|>Ç¡ÉÓ Tü—ðh(¼^š«‰cÉpÔQpr<çå‹9e1m©Ì{W:ˆâ84-KŒ6KRXz=‡E»Ùê?høïµkÖe/ÂHyÄk|±IwS_{Ú^u+e¦~½ò ™]Z(›&›ð¶ J)¾éÝ„yv $µ¥¡¬G–š5uãEHo“!D^x¿VÝlôj ¡)\È:Ì„DV|ÛÜó@¦ã/\Ÿk­ñM}‰Ñ„ ¿±Sj9À­lnƒ{}àríÔ*¤ ¾ùž5Ü0nj„ëÏG}}”aÑa®ŠözÉŽ„Ô÷EmËrn+߯2ÀÖ›d)½×yÓ[öŠ_tÕ’}¯ ©ƒª—Ç¡ë¸r¸kEкF¬`Ù廯»¥³±Á—5\ |>ó<'IbîÝ¿ƒ”Ž‹‹3ß,’Šƒ[{Ü»s‡ÝmziJ$%e^P–%W“1ç—c¾yýšãÓâ$Ekï\?!Y–Ñï§X,y.Èk zƒŒÑFÂhSaÑX#0Ö‡íÆ*fc³‡s‡€Ÿ©0nG}ªÊç¹®fLÇsâX2ŸO9>>b:6ϯk¤·2°aZV¶³ÁOÝh”<~tÿñ?ü;>ýô!`ˆ"‰³Þÿ»õ™ÿ#=˜R¹à³+þèkÄõt³yÿ<¯½ 6´@×_~É7/_’Ľ–!·„È‚Ðʦëbÿ»æúu2î=?«ïwý3\o”ÜüZX ìè8K‰’­+Œ)˜\]2¾º$ŒÖ4M½ \¬^ËïÚ÷t>K·aPÏ›õÆvµÑ½îWí«|3Ó?‘ò–€2~ê²òç”$Á&F‡ ÈH¡dk9¨¤÷WOC. &Ó)Óé”aÚcÐï³»»Ëéé)Þë»—¥¤iÖQ`ˆf-'µ?|K¨lÌ 5˜ªò^õµ¢Ö2©µg‘KÌÛÕ&ɪ@í•®j_u)¿É^^ºPaw£ÝµGb…¥ñ}´&T½3¾ëg£1Wˆ ¢;æëëËëÕF IGÈ¢@DW³ ¿}ñœñù9oß½c¸1âîíeÁ·¯_#… ßëyÐ,¬CeYz¯ýà¯ì›a±ÿ¹ó!ÿøùÏ™M&L.¯8>:b4rÿî=îüøsŠÉŒã£#Þóæð=¿ü‡¿çj:áðî!Ï>awk›­áˆ^”„5ÖhM±QP–Z³"çåëW\ͦ¤£÷Üãòê’8ŽÐzê›>B°X,ˆ’©$Ãá]Ë6ZuMhÝõgH›ÑëÇÄIŠ1†4ë56:®*)§NÎÏ9ûÿ.8ØÛåÞÁ>[ÁæC[Ët:ãýÑ<aÀ’ª¬ˆ;!áMf˜hOJéõ2F÷d˜ç$Cì: ]bÙØË­ÐºµmóØoz¦Ì…¯×¬^æ¥Çq„o—gmöêC’C³›«¢­!Si¿O’f s œë c)DäÕ1êó`?ÔmŠ®¶²nYïÃݵ ]šs;>ìÞªÈÏ)ºÈ=¡g±À”XÍöÆŸüø3?¼ÇÞÎv¨AU¥ÉÒ„¼(ÈuÁx<æÛW¾Ièœ#Ë2Ò`ïäB“Õ ?N…û°Õ_ÝSJ‘Ïgù«T‚¯ùÆÆU¥¹¸¸$ÏóåbØ_õzÛÛÛ|ù¿õ6–J5Ù7Æhœ5ÄqÌÁÁÖÎÎNCƒ?ö~è•f{k›^–òöÍko9¼ío:K—¥¦´ì¹®¯ÑÚè L˜Ôݯ4{™5вú¾EáíêT›ù&B].¤W¿Ö×vÿà€ƒÛwøßþÓ"ËzœQ”"rhcкj옢(BÝ4#›f2c|ÿ»–x/w_oF‘'=iΣñg=‘¡Va¯Oõ¾ÑçÊÄäEI¥-RD ÛüƒÕ€îÕº¢K¨è‚çÝ=f·¶hÏ×_³[gvŸç(4ý~ð¡ÙΊР÷cz`Ó³PoŒ¯õµ¼wÿ÷ïßçðð³³3†Ãa°ÔõÊ4£Íµ9ðæºûœUF¢[ª{»‡ŸgÚkèÃ}MCŒ0Æ6Ö»ÎXîß½ÇÞÎJ žÿÓ{Þ½{GÇ<}ú´Qn}ñË/˜Ïçܽw?(ö»Î/VrÖXbEJ†ýøõvµ“íXÐAÜ ˜õž§¹×Ë÷·&ý­ÚOzÇaðÏÜ|>g|uE–e<{ö ©GÇG¼|ù’;wïR”¥'T„¬›îkZÛFDZc;9m³1Ög.ép¬{Q¬°Ö×»×òRV®Ùj½ô½ èÐUi]sÁ­÷0Á¾Ù•¿wnsûöm&Eè‹/< æ½Çc­_{ß¼~Å×ÏŸ·J‘mÐÇÇããñG¾÷¶õtÔ[ãý÷£4Æ•±8b¬òòÅœ£CˆbƒuB(¤ˆBQííQtÎæ†äÇŸo¥†~_ «‚8Q¸†F,:…Úêæyƒè‡n˜ RM[‚œ¬3¨Ò8F8³TàFR†K·„q7áTÏ\3îéøQÆq ÆÞX°³Â Z-¼V›Uëþ]t«†Î¿u@bEQ¿§÷A­½.[{‚6Âg()©°ÿö››gmAB¢ˆHªæó°j‰|e°sÁ׳V”´’éëŒUî.°ÓÒ˪ÿ^þsØ ÷bì/ä˦=?à¥ýLc=U;‹ö¦ÁmÆì¡®ÜØýصâBs©ãù,jV‘&I"¤”<~ôˆÑhÈ Ÿ!•c{sc û· ú }È8K’H’8ù”Ý[ÛÜÓš;÷ïðöð½·2P ‡ *G¯— ¤!‰*r J²^ÍíŒÁ0Bź\ TJÖS ’z³*ÐU„®Jö™Ï¦\]äyÎÃGw¹{÷€o¾yÉ?þæK´©˜Í/89=d±˜!dD’Fdýă›FÖYŸß <[ÆËö{»üÏÿÓßðäñÞÞ…GžÀ´ö_ÜZàÖÌ«Û%[˜ø>«™ uÁ?™L8?¿à`? I–æ¶Y)Ñ 0ÿ@~ÝgZ§dXm dhÁQyã\Û¼f—iØÌõÇH‘¹÷»_ä,¦0y¯ü¤×C;KÄrÓ»Ë"ìÎOÝÄîï¬ÞǺñ±n“TƒªÝ¦âjÓÒ:G¥½Š®ÍHªÁéSä乸Ž]`M×6µ½‹0ÍÇùù9›ý!ÛÛÛ ‡C9>9a:™°µ1º6NoT¢tU ¡™©$dqÄdZ!„ÄT%Ò9_w8Ô[âšµFw\—Q_ÿÚ þ³¶÷èuª>|.\ô][¬Ôök+~ÙKcsÍz°d‹{Úÿ!Eœë4 »¡ŸyQ ƒ§ð›·oy§5Ê9†Ã!Ÿ=esw‡o^}‹”’ÑÈg>DQ„kw®±yªYµµu󨪊ÍÍMníîòâë¯ùòË/99>¦Ÿ¤lÞï³9‘ é¥UQòêè=ß¼yÍÙù_¿}ÃÃ{÷ùìÉSîîí³»±E¢|0«Ö†$‰‘B2™Ï(tÅ»ó¾úö¥3<Øßgoo¥qC‹Ã4óM!¨´ö5ŒuÍg÷JÕN–‡½Þ\xe£6ÇX!P@”¦þúV1±(Ḛ\qv5æâüœ4ò66ãñ”¢È™Lg,òm,I$š1åÇ \ [×xEF#â8b’{ÿg•f¨$½†ºîk@á•yÓZ‹MíápÈ|6é<3:.ü®êÌGum; XL¦u®‰M;Gø ^š¶­]e­âPÊ .dp4Œ]Ù‰M+ÄÑàè(ÞÄúu¥®Ëq]è¢ yU2LpÆ0ÈRîÜæÓgÏxxÿ.›C¯ÐER”…5ŒoÔñöýÇ'gôû}†#@Pi{­6¶«ÝÍkÍ­åº5Žt‘7;ݽ[Lf3..¯¨ÊmÖãúlmmÇ1gçTZSiÃFš5 `T ûû·(ò‹ùÌ_íU%QqëÖ-¤Rœž1 ìä,˨ÊEDYR®[s›ÐÔîyPÂZÛx¡K) k¨®%ØòºïÿÝXKQô‚¢®°±ŸiÓi@ïîì «Š_}ñ«vu–*/ÐÎgž$iê³ù´ ™£2Q¬‚〈ØÜÜ Ïó%ePsÞΡ&ŽÄÒ˜\mþ³†,ÕlP²u÷FÞ*¦m¾®>›Ý}N7üxu©•Lõ½X üukÇ+µU4pÁš´( ¶¶<Øàœô¤1[×3öZCyu¨. IDATnê~ÖÕµ¤(Š&¨÷ÙÓ§ôz=޽Ϸ¯^ñäÉßÈÕ®±¤ûÁºq»Lʸ¾Ö¶µÉ2hyÝþª—ÈsRBaC…輿”’Ÿýìg~\)ɯ~õ+ŠªDÅOŸ>¥ßï3yÿþ=Ir]ÛÞ?×!œˆõÖXJ®…«­©l§W ;ÊŒ¶÷beiw\Yk—έ;¦WëÔ<ÏqÎqçÎÕùù9OŸ=k^GX‹0m?¢¶R6°g ô 6\Ö™u‰$¶C"Tª¡;º5Ü*Yd¥ ½‰Úb©uÜp ÔZ)n/”¤(sž={Ú€oÎùgäÍ›7’ñàà€ÑhÔô^Ž9??ojÍ`ÃÇããññø#7˜þ%}_h.æ%WcËtQ䚪„\;fë=hIh­\$Ö)¬Ó§¨*Åù)Ü>ˆ¨ŠÈ«aè¬ÿ  õN–|€ ³ˆµµ C(^y/])¥¹²+¾‰vÙËy‰iêð›°h,‚rÁY϶‰êÀ û¦+Ÿ áN¾I°RØuh­%ϲLžŽ]’h3Æõu›oKÖ¢eœ¸Öæ¨e]´Œ‡»Ö@êúÖªŠÚfIt6©bÉ×Ò¿ž Ö;Îtïy ˆ´ì`ÛuÕŒn“ËXG¥ýyÖŒ»RÖõ“\~ÎÅ5Yë÷n7 +šåA…"½ï¬Ö%IG’ÿüüïSaMÕØT%qÄ­½<¸Ç£GØ ™@¡Þ¤&YÆÅå9UU¢’„"_õ2"“¥ I"ñéç–4‹ØÙ’eQBj|°|„³ÞBK`X¤¡¿(_-xýíÆ—e逢Xpp°ÇçŸÆÕåïߟ`]Éû£·lïlÄâ$¡?HJ€“è°ÏçL&S泉àîÛüÝÿð7<ûä!RèF=â•=º}–¾‡=ûo¶&¸ïõ³<Ùw7<G‘jÔJeYÕ~°\£‡ÝøùÝJ³å`úy}Pù>¶Õ¦}m3d:ìï•wZù `iœ ¥· [ÌçLÇW‹Q¤ØØÜd°±•²Q­ˆWmn˜×5ËëÍRw“×m(ÓdùȵÍgZ…X}£(Âh‚V¬ñA|F{êÆ^Oâ­î¬Ïð¡¨W<ºïˆUÄ`0ÀZËû÷ï¹O8Ø×Hİò}Æp¨+ÅpÐçj:aQV ˜*…ð p) ³‘ô *Ñ()×™™ÖZ¢(ZÚà6Ö,+ª†Zße¸Öá¤7Yxùœ³dmÓ%-¸U%í&Ö6Ëž»î'¿ò:7ùzÓ½ÎúÂhM™ç”ºâäì”íá»·xòä Ož<ñÖ•f±X°±7bcc£9‡ù|Þ4Ž»|†Zùa¬nn‹|ŠÇŸðWõW8çxùõ ÎÏÎÙÝØâîÞ>éÖï= ´†·'Gœ\]ptqÎÙÕï¹»Àž~°×çÖÖÛ£ r­)ª’I™óúÝ[~ùë_ñî䘻òèÑC6‡CœÕ¤q‚5†|¾`¸¹…æù‚$ލBLF¾‰e;5EÍ0¿f"@8Iž¹$ñÀvìÄ"Ž¨ÊœítŸùlJ’fÌg3 S0Í}&ÊÙù%ß¾yËÖæ–ŸK¥¤¬*Ò`U#Xg–Æ•_Ç#ú½>Ãá,Mã)UžS¥¹gÿ6@— 6.¬(mX íʼn†µ)‚?wœ¤ÄiŠ*rLÈ>rXŸugaAC3.¤’(çèeÑlAi Εù%¡Ø6ºHBJ¯° V|®³ÖØp/êúO®Ì‘ÝÆaMþ°Ö´Ù_!8•.€‰C—%º,/æëí.GýŒƒ[·xpï.wö÷ÙÝÝ!ŽJF$q” ­-Wã)'g§¼øæ[ŽOÏP®±e lucÝÚø"·bqµF„“ÑÆP•%QðFßÚÜàöíÛT•f2™6 +_ûñ‘e wîÜ¥( ...B¦’/5‹Â«SµÖ^ý°µÉéé)W—W~^°†$II¢˜[·naŒåððÉxB’e,s’H¶zjÁÖ~®ñK¿öGA'¤I‚\­\\P[¦˜•,co®†ùÓÛ˜F¸["ŠQIÆ¿ý·ÿGGGጥ*JŒÑ$½Œ¬ŸRTe°çk›§•©šuº×°XLC°µ=­ñäƒV­öW ¼ÂÆZs­Ù¹(PJµs;þŠ @¿º¸$N"œñöÎù<µ.ÑU‰®ªÖet›È5¸Q“0p$å…h«iš­5ÐP¿~­Žˆ¢[yðÊYÛæúÁItÎ-5òAEh­©ªŠŸþô§L&~ó›ß0ÐZ7Ä!ePÓ·ªòÕFs³ï¶iÜwšsƒÕ 幇 RJ¢HɈˋ úƒ>ög†RUUòÕW_¡µfgg‡GcŒáÍ›7¼ÈÎÎnÓ &¨ƒ0¿› !ü^UJá÷;,«á½eÜ ÁÅy ĺI¯µn2˜ºõ®·C]±‘ {3ooT9¯Ô§A¡µæôô)%Ÿ|ò ·nÝb±XðÅ_ÇqS/h­%iךɫñE‡¬Ñæ{´–§í˜­k²&çB¨¥5üC$½µ„ìª; êÚ=n™Ñ…àQ‰h” Ÿ|ú‰W O`9::âíÛ·~~·†O>ù„ÝÝÝ&Oêå7ß2Í›uà#Øðñøx|<þàGS˜ÿ7yó5—PÌ»°ÓˆdŒ©Å¢Äi H¿P~‚×®f/o*#@5žö‚a„e(d‚µ«÷ú® sû}¯A³,;qÍR¢et¶×º– .ÙÕ!s/Áú?ÈNXs“ 6H+Â…²Ž¨Ãd‘5àà¢ö’] ²[ÑAîú®e•‹ ì­ÚÖ˱«h¨mœœ£ G–žqÜU,¸Ð˜oö¾™#—˜!B@+"¡µR"þsYÓÙ Òú¿Ê޽• \¶ÿÖB²Žk:mBb#­¯¿„èsv6ß ®ý^XüPmg¼‡àg!q ,ËRµýF7%ØhÂh<[ë×ÂùÂ8”gÿ:ØŽiú©b9ˆxÍ£¹"7uÍ÷žµÄ‘`ÐOøò~M$Û[ô’„PU\]]ðâù ^ûÊšG [[Ûœœœ°³»Íöî¿þÍßcœÁ–UYbªŠ^?ÅT1U%èõ`mô1¦òvÆb¦,lsߤÐ(ipR†‚N1™Ìøæ›w\žò…CÉØ{åæäÜØØàOþô'ôzß’ç%ý~J–íƒó^­i¦P‘/V}“£GYöY,Fœœ‘/üÉO?ã᣻¨H +¯ÂpÆ¢«*Ì ¾¹Úk/ø RñGòSú®BzõC7¹$òf\W-ÍåhP{Òz[ ˜¸Ž²,ˆeäýý—®[ÔÖ7ÓkG;ñs]mȯc÷ÇUk‡%Ëà±ìSÝ;þ®ÞD/Š#úý>ýl@YTTeÅd2ÁYÃÆæ&[[d½>‹²X ¶\·aí*nÊèÚXÔìûn>@=Ÿ®²ËüfÙ.KðmB7 Š¿Î)…HLª™Ï4U¥Ñ•öâJ"£Ö—]Ȉ(Í(ó§Lç ·údYFÇœžž2™N¼_yÚe™­—µ7LNk1Î’¥)Al-"¥p®$н:ÝëflÓÛMÝÑvF˪˜Ú–AÖóöR¦NÇRgЍÒF›€®í?ºÿ¯»ÉÿÿÙ{ϧIŽûÎó“™åÚ<ÝýÌ3Œ(‰DÅJ·wûòîþÚ{qq¡Ý¸ˆ5â®DŠ"HŠ"aÇÛǵ/“™÷"MUõÓA‰ÒEHÓ @`fžîêªÌ_~í¾rÅîÞ}r’zç§³ívŠt§›Þ¾iûqûÓÆ«÷ó"wÝ £!7ß»ÉGpùòe&³›/X¯V()`"¤ë¨ª¶ë5«Í›&ýgÊe¦ÑÞ1êö¼ÅbÉ`4äþƒœÏç¼yó†·Ço9:Jpá9²¾‹ ”cÓ$)GG—sߣà²Û¥s¼ƒ†ƒ·Þ{<ËÙl6‘@ÒZ³^»n‘4M ‡\:<äÑ_²ZoR’§)ÖÂpPpéð£5«Õ:ÆØ¥‰"KÐáçùÎ0Ô+Ûí ƒzk·jƒÂíW™JH„D¹àöž å¶¾³!*Œý5 ½:Âï‰Ýs“s­%ÎÅe"•\¹z•¿þÉO\Q¶€Ò¨b3Á¶®Û3¢u¤F;¢ú`2a:`lƒ1®çÈhIÓ¸’cŒDú™GŠŽÜ«C& º@vˆeqý<íŒqáÕåº_Ö« uÝx°Ö^ˆ‚ìfè‡y!€ñîóÙ/D­ÀÉ[ŒÅ={X/ü•vJ¡Ûd÷ì¶ŽyíLY&‘R9ýœÑ½^þkzrޏq@Ïíî©ÍfÃÑÑï¿ÿ>u]óäÉF£ÑÅ=Ú´3O—léÎP»Â. ¥Û'Ó$iA¹³Ÿ[—Û¹×㤻ãâBpïî=²Ü9I^¿~ë×o@î?xÀÕk×Ù–_|ùˆ“³3®]¿î„~ý’6V+œoýž ¤[lÂ:®#äp"12É—À4Ì–ÚvE/"4]lDz’¡î¸j.FDºþ×§7Ÿ/HSW€"Ï?zì"×´öÎY×ÉÊÏÛ"hI7’ÏZ|±¸ö¢ƒ6º÷¸uÎìˆõÌEìgÙлè´ÿíköæ¼3_ˆÂ\­WL¦|pû*qëj–<}úœ““S”JÇܼùR¥ÛjÍç_|IU7Q(ðŽlx÷z÷z÷úÿóûE§¿ÝêWü ±ƒù^úüÏA‘SäšéĕɳÆ8¸Ý)À£Ê.Di„­y‘!D‰sw:€¾(ËF0\ü“>¥—µñ\ˆ0>ÿßïÙ2¨¬„p€rW•¸c·;_ŒôjŠ®ËNAPã+•8½ø‹ö0Ô%šv¿¡ÝCop‡œÎ`ÐúÚ¢K_tÔ"*£¢Õp7?<*p»Xûçb£±®KI÷ó¤p‡!/*ZR¡3ê‚·2”sÆœô6·rw8!›ÛûÌQµ+Úìï–Ä2þ`Ï^x(æ4¶¯æ¶ÖåD›àøðñHRض_%fn#  ó€¯ìt6ø ßjëî Ý ®l•Üâ=Èî¹qyÝÂYm\üD*(ò„<ñÑŸý€o=|Èä`Dª’è¨ÑF³^¯xõæŸ<á׿ùŒ§OŸ’å‹åœGϾa1¦æ[ßú®_»ÎÏ~ö3æós¶kÁì0Û¸X4ܪÖÆ¤r¤CYnI’Ì]»Ä •ÖrjݰÙnÙ–!X È Þ»y£-ëõ–»÷îsãÆûl6[Þ¾yË›×Ç4uÈm6#H½,ÃÁ€á`Èôà€ÍzÍÓgùËÿxÎû·nrtiÊáô€Ñ`H‘¦½Là®ú~ÉGP¿+ü¶•]|íêû%Y#öÜ öFo $Fy´Ñ3™¿fœ•nµbgì)ú¾€;'·¯yOû"•Äï²±ú¢d¬s"ÙÐÉ Ý3¸«Ú ÿœåYTg•eÉf½ö¹Â ƒáˆáhLY;P<_õ9l¯Ì~cP€…L÷]°º®ê¨Š ÄgDìÐmäŸ?ë‹v/‘B`¥D¦)u–"6¨Ønj:Q²—§$iF¹Ù°X®Ù”%R%N›eN1ç3y¿))AV_š& ®„Üÿ9ÛíÖGýâs” ó‚A‘£¤¢n({åú5>üð!wîÝå`âʤGfÄÕË—™ŒF¼:>¡.·X=vEÈZûþ…±Æ»ú¢ÑÖÕ¹?Ú­Gv@¥”= ˆ$/yÑ ›Í:>›õvÃñÙ‹Õ’ˇ‡ R¨vÆî‘ÜnQ ÷Zš$dYÊh0`:±Ú–Ý üŒÓAãݸñ{rÏÚØuqñJ+*ÉÈpàa]WXáÀ[)•ëg²mw˜ 3±°®„\Ji©µ¦©Kê2ÁꑆHϰjGe­Ö<ÆâÈ@˜G°Ó?ÖØ¨è¾6—£‰<£Ý¹Dk§â-Kšj‹mj²¢àÚå|pëwïÜf2q$ƒÑš,Ë(Ë2•MÓPkÍ‹W¯øä³Oyúü›²$ÍrŠqAšåt'v³37´JàµÏö;äÀ"•ëCŽFl– T¢HÅÕ«W8¼4ãÉÓGÌçóõâŠÓ R .^âúµ<{öŒåbå:Rw¿»^Íx8àÁý‡|ôá·xúäišQëÒõ¡$ “ɇ³)çgÇœŸŸÇN%d{/‰vÚ ÄQ—Ì¢ã–ÏíºwÚy\IAž$ÈÎ9It×ËŽ«%:M=(o<°xLKª,hÁ²Þ¬ùþ·¿ÍÁtÂßÿý/98Sm6 ’#Ö冕)‰‡@ÿC-®”Ye)£Ñ€Á`Àz½r.?!Ùn*ŒX¾GÓ;wDASüÌ­kz¸z+Èê›­›Xú-¼ø#œ-t£}qɑ‚b¯ón_¡·#ùÛŠ!•§šñnn»()G¨†ãtpÑ»x5㫚¦7Œ±æ>‰Ü¹/º;»³Ñr¹äO~ð&“ ?æË/¿$÷ñuýb_b\dèé:GÜá×Ç]‡…lÚ1ƒA˜þ{ûºÜ@2X Õ¶âüüœï|÷)|Ô×ßÿêW¼~ý$ܹs•(´6üæ“Ocô`Y•¾ŒÙ¶‚·8óv]ìÂñ a- NWm¼»¦Mq0ÆzrÈvÄpý½!¦tç@¼‹@6ôcS¥”  ,+šFsÿî=¾ÿ½PU•wn¼p¤´Ÿ#’$‰qÖ: oDœáÚÂr¢Ã# öÂ<Ýý å«ÜÕ_/Fjc°Íî\ÕÅcv~¯Öîçi­¹{ç·nÝŠâ–ÅbÁ'Ÿ|BYºø¸Ùì‡~¿Ë—/_ñÄwäÄûèúîõîõîõÏN4ÄÂßVó/atè*Ú»;¸µ-`…&ÉyQsý†BJƒ[ŒÑTµË¸lš•¨žENX‹ò¬d:$YåØrœj—~ßÐntÝz-ý­Pšð1?n" JåN7±‡™7TÆðٗ¹$ô6H´‚¯B Q°”·j—NÔ­½Zå)’nîïÐÒQ͈»7aУcíéÚ~‚ Œ9¬EÚ–ˆ.ý– o£J'ƒT¥’meã{²§Š ¹“1‚ÊF°« "ÙF7u“ : R¤.ÚlÅøÞÐý ” ú¬o?¤ÄXk‘´Ö85S‡rCq në.!4BØ gÚòn´Y2*‹ñ÷f|×½"<Ë@µÕ(Û¡ƒŒýí@±”+üûV‘IÓºFd)ãñˆï~çO¹yãR¬]SÕ¬$Ir¤H†ÜH®pëý«<¼ÿ¿ü坸â‹'LfÈÜåØf™d³:ãÁýÇlrÀ_ýÕc¾‘B’x l»Ý°]/Ù®–`‡µ G¼ÿð“ñïߺÅt<æ`<&MRn'‰zE£k¤Rl«-¯Þ¼âÿ ¾|ü„²Ö ‡#ç†IS÷|Èd2Ša›“Œ1\º4c8ðË_>c³Ùx‘M'÷^ú/MX_LMg^êŸeÜÞj:.æ°)\ÑøpP8g7íy×­uÞà8]à0I36Û-º1$Y 1€®3ƒ)ABŠÑš?üηY,¼zõ’j[’ç9릦6ް‡«ðÒ4D¢‰Á°)×NÔd,*Khª«¥sAš¦ã>Vþó ¤Hz1|»‘vý„–<Žq0¾MvºÂzïÎgXsÏ¢îZÑÛnµ!kßt"âºÅÐ2nIiêÈ6ë÷×ùù<~€Ô÷=8ð×EJ)•0 £êÞã“´wñ¡µDoÆíŸñãß}\ïG}ÈpXðÉ'¿!IT{Ö£uÅÆéÒz§ˆwka­s†yÓwöú¤´' CL§$ôwt¸Îx=wgó(ñŸ+Ïs®^½Š‚ÕzÍññ±‹N3nÞ¼‰‚ùbÎ'Ÿ~B’¦±¯Á‡@åEfÊGWÁÕ¤Ùþ×=wúçdž}Í‚À „ÄP*qѵé¬E2ÎPBôcDÛî/7Oô”Ò;' Ëå« ·oßf8a-|ñÅ—,Knܸî#L%µnZF¢dßÈ”¦©ã³fq·æ‹Î½ÓÚÿ­'`ñîkô±bïYìÌ‚¢“ºÐxD‚¡+Ž”¡ ¼q½…FÓèš[·Þ#M°i‹=rÝIÂ× Ÿ¢ yþü)§Çǽ=áÙðîõîõîõ/C8|S\êw$!ì× >w~]l Œ2N+f³†4Õ\½>òYþ„ò±Ðô¾¹Td™ÀÈc†#Ëp”e¸ EÑ · ´ˆ‚íŽß蓆ALÈ݃ãÅÏj;váÕ‘âkÔ´ûÊ™„í[€ä²2(縠-ˆŽvdOb„8…¨ŠÙó»–>0ÈxÔ±ðê¨]"¡Ðz}L¢Kè¨Æ°» æ¶÷ë‚ A WÀk­ŽÃH 'blTxJ´Ñ)ƶšûÍT°ÁfÁ›Ž"ÐgËw*eÙñ¾RÍ :Î ?¬Íig¸í]7¼ãÀw@V13Ótb”¸PDë?ƒ qV>·’NŽôNÕ×Ó±œ8$‡?Iò,å?ü¯ÿ Eác0XÛ8Gе8wVè! ·Þ»ÆálBš¦<}ñŒƒÉˆK–Œ9y{Ìj1çîí¸4›ðýßÿ'u]RŒ2ʺòR V¢=¨@„ ¨þ½jŸ_V5uc¼3Ø•ÆK)X.WœS?x¿ IDAT²Z-X­—4MÃh8b8rp0Á ÃùâÜÖ“4ÓÁÅóâùs<¸ïAiãÕù Íí>`<ÅΑÞ:a÷/ vÛJ\XGÅW¬¬ÿ {ÅÎ:@Яëøm÷Ó…5Ò¶‡ÒõzC¢ÒhÉOTŒ_ÓÔÐ! ;Ź»û’øšÏw6¨¼zrŸkà«È™Ž’4äU;ÂÁw¶tŠðùŒ…ÔGM` ËÅœÅÜ)?Ãш|P€’1âÀîÉ=»p@}ÒÚj»C4ù(«`;µW–eÞïU›ÍšívÃl6£( Dpg)I£M{ˆßUŸÚ=÷†”¤y+hššr»a¨Fmù4.î$É šªaSV,×GÔ' EQp¾\prvÂ|1gXÎ5÷5ÏÁ¾,i!ú1AÙªuC* DtÛÛxa·ÞlÑZ»L}øŒp ¸”•(/u‹.•/‡·Ð44Z³Ý–”Ûm$ •ƒ©”“!’ó³z†ºüðnO{\>T‘ðüÝ>%ÝãZÁ/¦CY‹IÓ[#:NŠÔÇ=l6kÎÎN]F´± ²œÙè€D8׃°m¹h’*d¢|wSP6C’¦¨T±-·,WK6Û#!dÊw¾ûÊí†ÿçÍkž>ƥ锛—¯0Ìs¯:?äæ¥Ë¼yýš­1\:œñÇßþ6£Ñˆr»å|>§±.ÿ|<r0qýê5Wh¼Ù°ÞnXnÖdYJ©5‡³)G‡‡|öÅݸµÝšèl‘‰ë¨Ma:ÂiôUkånJ{KЭ{Ò•Ö 2ÍIʶ¬ÈÓ”ããc®Îȳ4ÎÖåÄôïO`qž¦ŠétÂlrÀ«ãStS¹žc:€“÷„Œ+¶o‹Ïd @ÇN"„$ŒHËüÞ Lœ»¦×!†qÀ´–"MÙÔ º©)·kåœiž‘f©›wu±:~¾O“Ä+Ôý|))ûŒFªÔe¸hKÝ8ÐйŽ¶ë¦©KS—ئb<0™rçöm¦.1 G.jn\ÄPše ‹Õ’mYqî©OŸ>åíñ 0I“Ü&î7žì!Dõp¿Î°à;azQÝ=\ 7÷KQä”ëJI¦Ó /^<çé³§4Æ;Ÿ¤¢®Œ5¤‰âÆëEÁÉÉ Æ÷ò8âW“$)y–1Éóœöwüô§?õ`žSÛ†ïßzá `¹\Ľ5I\ñi($¼'Bžzˆ1¦q¢1y—Ý’ÙA^¸8%ÛŸ7‚ëÃÒ÷P×®¯ÀIšu"ÏLoVJ‘97Þ»É¾äøø˜"ÍÐuÓ›A¤Á›J´0X eU¢µÂj8ëÚRmK§Ü·.^O¨´^_…o7º÷ßÂ} »Ùó˜ŽÝ»v¢—È]o÷žŒs=†µ¨ÔªÃu_¸DfwMs‹y1täÊ9àFã Fëøç¬×NX˜¦.Þ¿ïçyÁ (¢‹@›æÂi=žýìιY´îË ×u…°^¯GܾýUUññÇ?óïE]@3Ú,}ÿ¾€ØÎÎçZ›¨ê.‹±×}ˆ›]aW °4u»òt£¹zí×oÜ@HÉf³áç¿ü…sU]»Ê½{÷HÒ”'OŸr|rÂÁÁ‰xlB'W‡äéå½k*;ó];[Håï·Î³×FAÉŽËÁø>'Çè–äêŸÇÛ÷"wú,ü=¬ ›sÃþÉŸü yž³Z­øôÓÏÜ3?DçkcÚ›2Ð);7¦ñ˜RôFErÃm=þw OÇÕ"ýþ¶ßýyáßبÝïØ¿[Ùï: ³—”•&œŸ1øîwÿ8ºTðÿð|úé§nIîÝ»Ëp0 Iæó9Ÿ|ò Ûí–º®ã{}G6¼{½{½{ýëÙ=aÆw ÈšÃ#Ž`¼Ù¸\F£@$8B¾cIµ-á ¤$± ¤ÁJÍø@1nR#eÓ•Vû÷CÙìAÀœEƒn£Sך˜*ƒbâ"êÖ+î8ƒ´`:‡‰¨Ü÷ÊþÐå†>é7¯0d;П¨^0Öut˳û*fÑWî¶æÇöZ•n( 3¾o¢«NÈ%v”‰°Ú+§Û¨£¨ÐõÊ%¼òAú|xa½e8€~ÂWÍyEª•¦í*”í ýÏdC$W7žKôÊ43Å ­;ÈtÕ Q j;¥ÓR´÷¼ÕôªÄ=8é†I\ fXýË•CµÇF§vÃ\¹ÙZìÛQ…Xn†ÿL_Ä­-FÒÙÄ7!; ®ð*MWí\BøüRᣠü{©«ÆçüÖEîÕÙ.ï5In¾w“ϵ…˯µ5RZ^¾xÆû7oqvrŠ5š¼H¨ê ÖVÞ+}µô‡›¥œ²(‚Óþ° )ƒbÈl6eNM¹qª«ÍfÃÛ7'T•+{.9Yšq||†1ðá‡2æ¼zõÒ‹” ºñ‡I!8Oøàý[Ü»w—ÑpÀôà€ºÜ&’ñ¨p‡¸^V©ôBëoVýMK¿)CüMb”¾î×Ù9À‡{°÷ìW§9í˜xJú¢ó¦©ùË¿ü CgÙ÷k)»úÎç´½²\Ñæëv à˵뒼½‚Ü9c|´Z£=ÙÀ¾¼>áŸe³þÏÏϙϘÆ0¹|õ*yQ ’„Z›°¼û‰=Qu»E¿Ý륔òÄA€ ‡’$q«ÕŠÍfÃÉñ1Óé•*òklà/)%yž“¦)õfKµ-’yå?B‘feRRÖ%«í–M¹¥( g3ž¿zÉj½f¹\•«¿õ¾Ý}~^ÈóÜŽPê‚ÚìÒæDŒhš†ªªX/WdYF:LQiB’¦Ž ðí#èÀ©Öu3Žx Eš¦î½È¶§@*³‘Ã×}!>+¾­# Ü1¤”l·[·w°@¶™û1¢#ì}¢£tµápî6)}þ¹ítØ6?¨/¥= ÊBw0¶`4—¦®#áhvˆ2Pn¶Ÿe­¼{E)Ù!2¤Ï!—$iÊj³aSn,\îõõ×¹÷ð>ïÝyŸ'óâø57¯_çý«×…۫휞ðÙ‹§œ½yËf½â;ßþ#ÒÔÔÖÈÒŒAQÐ4 òìŒm]‘(‰njס29àÚÕ+Œ‡êÚ•ç…Ž$¤yŠ®u,šU‘°±ûkË:bÑÙ“bÁé{¯äE ŒT¤˜ªÆ IóUÝðôÙsfcŽ.ö¢½Œ'DBHP2ÑÆ`0àÊÑe†ƒØ·XÓ8`Î"éÝ;ÑÚízãˆUá÷:W´éÖy!,’4Wdƒ’¦®ÑšÆP«†Ì‹:´¶$‰ÂÕ´5( Ésª¦¡PÕZÀjÑ •"©rOf(_jˆ<‹¦± &Dôe©ïj±ÔFYƒ­+ã@=ퟻº¬¨ëÆÍÕF#¬&/RòÁˆÙä:³é7nÜàúõëYÎp0 Mt£}säbݽ°­kÖ›-Ÿ=çÑ“g|ùø1óù„ ŽLhj‹±Â©Y­è¥œYÛ*^ù†Â.:s1@–å,Ö+”tê£>ÿü3ž={îbJ´E%Æï’$\¹|DSWœŸµ{«ï®²Ö²ÝT¤—S$’ÿ÷?ý'}ùñ a%H”äòÑ%ÎNO8;;Ã'ô0º!Q™“Åmyqo–2ÎǦ‹äâñ¬6ÈD‘g‰w`~ßv:|2~_²áF¥,2M0b×Ù(ÐUE’¸~ý·oßáGõ#tÝP GÔUÉv½q{S¦\¯í³ €"Ï0ŒÕ, êÒ8í\"£#Ä=?²ãe•5x_0ÐF y‡Ÿ¼Øÿ¯6ƹ:w®j‰Ì°êtÔà}ÐÔ÷ È^gB˜e‚cÜýáDîy.Š‚F[ʪF[AzïÞ}6«5§§',— t]^t81Sæbúê¦3K¨èÎ gTkl^¬a’O¹ýÁíx–Ë%/^¼ˆ.Æwdû׻׻׿ ¢¡G;w^Jº¸ŒÃCh´ ®%ue·­z‡!d¾$é7í$Ï) A¢ŠÀ ”¾‘ªý›J²“1½óçuU^!и2kc! %E{ÞSw˜ÙU(öò§:yþA%$l—!¼ERJ—‡Ýù‡Pa#0Ûß{WPŵc†¶ŒÙv@÷PÊ墛T@¬h{±ZÄýå† B!¼kÅv²TÛòæþçÊ"ºTb‘^8XãŠÝzWvËåÂ0ÐÍ3–a¥ÒE«<1ÞÚm}–SvõÌïO#U‚z*Ü7R*„Õ=`h»ÝúÂiã•5žl}Ú¾!·;øìm§»am xîCíÁS—ék*Îçs–+½îG`±\óßô?°ÖòGßþCÜ¿Ãd2Âè2†ƒ;˜JwÌŠ”“ÓcÎÎÎøÍo~Ãx<ö@[C’*ª¦ÂXëfFy嘊etV¬ls]F£1—/_a<„õ²bµÜ€Wß­|AÞ÷¾÷}ƒ‚ÿúßþ Y–3™NxïÖu®\¹Ä«W¯X¯V¤IIƦv`ëçŸÊ“Ç_råòïÝã£0 ÐM…’ uíì¹Bü³FÖ}Ýzvq(¶¿Óú×*ŸlÏ.ü»¸Zš²}ö´Ö$*Åhb ”ªG2tó¥v"ª÷’)Ê¿îZíªÞ»ñAm»›Glá+i=²¯sˆ±B´%íƒQ—l(ËŠj[’úrõ¢(œ‚^JT8ÜùŒåžòmßš .^‹vèﻄ@Œ3‘Eðy1ŸÓ4 Óé„TJÿÝ9zSï~öPv+¤ðq$®˜¹2–ºªœý[{PÎGx¨D"”¢* §çgl«’Ë“ £Ñ¥«ÕŠårIUU |¾2;öîߥ”HÓÆõ„ÿֺׯu–yGž6TUåòÖ­Nƒ/ì•%ûäTˆìk´rŠÙp`V*qŠ`Ox´1)D€ÞhÓûîQùháH¹¬Po7ت¤ªkåâo•8ÂOy§Y–¢qïo[×NÔ¢5Û²Ä`Éêì’!•#:ϵò…ði¨Ó”Á`Ÿ ­µw!4TÛÒ‹‚\)©ÐšB¨Ñ†Å|ÎÉ|Áñé—xöâ5µŒÇcFc×ù‘$)†Óh02ά&’à’¯àd˜±;kFý´}KPוï®PäyÆx<æùóg”e‰Ö¥ÒØãff<ž2›M99qDAX7µw#„ïæêÕ«ÔUÅË—/|œ¨ 1 Ááì:GGGÐ=9ñ$uB–eñÞyïNÓ-#¿׊hü:«[b[ I–eqv¥Çº/XèÌQÍmmœq¥”q]q¢-éËÖI’S6†étF–ç|úÉ'X£)òŒÕ|ÎÚw-%¨6L»èU#½šºnX­–¬—t yZ }4N]×^¿»ù³ŽËGé¸mïLµÏ9Ú=›Jï²nÏM»'¤ï˹87öúd¬ÿ,Axb|E—¼0Q±ÝnÉsçÞl6ÔÚ°³Ã×o\'‘ŠÕrÉÙÙ)¿ú‡¿ÇMS7¤¾/CJIšå®—­nÜX¨ʶgIã ÀïøkE)":*µnMÙÛ‹ÿôOÿ”ÃÃý×ÃóçÏ™Íf^8à~]—w ²]ÜþåF?o‰¯cÿú‘–Ý54ìÇ]áàb~î ûõÝ»wc4Òo~óʪb8ñÝï}ca³-ùÉßþ”ºi(ŠAŒÓ ³f·×ë«æâ8 vgÇ=è’‰ømw£È"ˆßÔšíÖíŸMmœ‹&Fìy—£ÿ¹Z/î’Q¥/„äÞ½û!¥âéÓ§œžž2NÚN*?Ĺf‡l\œ[7’'…tKÞ¹yˉÖZÇ´è­O»3ï^¡ ÆØ“¥J…ŽÍV ª¼3/¼§4MÙn6¬–Kþÿígrpà×ÜŒ—‹¿üå/£8èÖ{7¹zå*ASÕ¼}ý†Ç_>ŠûSxïȆw¯w¯w¯3„CtwöºDùÔÿF •$MU °ªÀšÄG]hŒÐñàÕX‹°šDe«°H¤ÒTͺ—õûÂùìW(:`Åv웞I_VTYw°f³Á•ýrA]`õྡྷͽ¸Ñ!ÚN±SPI(%2î}jë¢êÚu[(¥|ÌX‹î¦ä«á¦ø1Ç×bŒˆŽ‹¨\­®ãâ˜Âa·ÝŒ!”Œ¹ß½h**‘>K’þ0î®”•ˆ*µ¨mìT8h˜ŽÛ’XŽg¤ò®úiݰ)÷ïpvTí­À±œ°ËŸŽñ*q‘Mã­Ï¢GEq7‡? _ÝCE{ÿ}}9U†w‡ŸðùÙø{[‡C 1®°×óUÝð£ÿñc¶ÛÆjVë ÂJêZÓÔ†““S”¼z{†Jr~ðýoƒÕQ™äJ 3S‚äEÁf»åôüŒùrÁhR`ì!$eUywAãíï.ÂÄ¢}_J«Ôr¶z…1Öƒ|ŠÉdD‘…ËŽÝl6.N£,™N§ÔuEQäyΫW¯X,r’D1©« ¥J&`a0(üaH¡ëš×¯_ñöÕK6ë%?øÞwIT$ŽDCÿÿ§Ÿ¿q!£}wû&®‡}vïoú{w_¦£¢kËóZ‚3fÔŠ~Ñ_'à¼ÿ³­[›Ìnnõoù,» F—Tø]¯¯_¸zŸ­¿^·@‚ñ™Ãàb›ÕšÆh&£!Óé”$Ip‘$>Ši?a³ø»‡Ý(à‘á`Ü–½Ò‹yr¼ ‡cu´Z,YÏQÖ’ÏRXëAn°}k}x?~o’B(D/—KÒ<ï)»»DÀf³¡®jç´ I’„ããc^¾|ÉÃ{÷xwBlùŠ^¯ð5;Q2m§_º÷•µ4MCY–TUE–eQy˜¦i$¢ŠÔÇ~$BÒ·f–寭‰BxgGF^ âÏë«Ù¹ÿºŸÇø÷±/ÂÌx’¢ª*´p® )eÜ_7› åvƒñ¿?€)išDEe–ediº€PˆÿÐ ¢!Ér§²¦©‡ä$I|4˜õ×È@ŒF# ɦnÙf—$ φ#_,E1`½Xpvvæò›;ÏÃx<æ[ßúoß¼á¯OÏxùö Ïß¾f:3 ™ÍfÜ»}‡7ós~ò‹ŸóÙgŸññÏÎt6c4#½º°¬JH’À6¨Ê-çççñ;KÓ”ÉdÂ«ã“ø´6.ÂÑ&å¶ìäA_Œ;4;Dæ>/–Óv{B?Wožvn€«—ßCèš·oß²X,¢àDv ›Ãsß4Ïç^ñŸE"-MSŒ”m¤Q‡Ðk×{!§z,¥÷®ÊÚŸ…M¹u$«´äEÞ+3RxÐ’¦®ÃE)§\¯6Û‘JÏ·«HIUבÄÈÒ„$Mh± o¿ˆv]Rþù™Œ™N¦\ºt‰AQ0›N8Èò”,M¹+ÿö€rSÕ€+Ú?s»Ýb­e³-yôü%Ÿ|þ%Ÿ=ãd¾ Á.£©7…R4ÚÒµ‰íÛ_w‹n dö•õš¶°6ëƒÁz»ñë@Âf³a1_°˜Ï}•[ÓÃý‘¦)—.òɧŸ³­¶mq7¡À¤“Éoß¾a±œGÕ{(Y‘”¯^¾ ªÊ8÷…g#ñëi{»kX•åמÁb,^çú#|ŸÝN£8CmÚ!0ÛhFç†Öº.¸àBö%ÊuÝpÿþ}–Ë%¿úÕ¯F, –ë«Ím5z³%Ò¸} ‹åé³' Œëòâ¬$•½}IJåg!–6ªèPÒ búÅË¥e–e¨¤Uà‡ë—töþ~èpk,¯_¿!MSîÞ½ëúhš†Ÿÿüçñ|vëÖ-NOOyûö-EQ¦)å¶ôR¢Àtgî Î÷ºofîÞ;íøç?³ï:4¾E7nÏQ¤[%’ºv Um:.YšùøKÁÛ·o9??XÁ­[ïsx8‹ßåóçÏY¯×îÞJÒ$}G6¼{½{½{ý«ç.þ»^—Ôµ[`miÁj¥Ùne)°¾«ÎZÊ!Rz5³Åj‰@3($áa42Œ2„Ú¶?ç÷)+~7ûÛˆ ¯VÄP5;ð{åÖ…<ò¶§Kp*ûÕˆÖ: D´Ø9Uº'#¼ ñм°%Bb½šCyMoÕî3ŸÙTWBkjšØ!ÑUf´@!`ƒú£ª“¿ÓÉû–±Ç@øÞá#(lŒ¦ê V¶e…õЏº£v²¾0  ÒgUw³Ö£lÏ’½œS()!©‹ôÙ¬ÑmaÚòÌX&-:@Ÿ5$RºR!Ê×Z„6î€!UU±ø’$jOq·çãNaXÿ~ëö¶÷ÌîwòM€å.¸I,)¢-´ÈsX,4¦b[m©§`)·5Mã¬íuSs¶Xð“Ÿ~ÌÇ÷)r~ ošÆE$ ¡2w0†ç/ŸyE­‹ürñ™‚ª6Zßé 8` ¯à Yô°Ý4ÌÏ×ÔÕA Ë¥”\¾|­5_|ñ`™L\ñæÉñ)¯_WÌfÓ˜hmÐME–¦¬×KtS3›ÍØ4R‚n~úw?åúõ«Ü¿wÝTHålçÚìï¸(ƒ²ÿ¼ëñoq#ünn…Ê{hUx4pj²4n!ó›ßá½ìsø|ݯíAÑ ÿD"e/1böüFkM­KšF39`^±ÜÓƒ€Œi×\»`ú (ŒœZ¿CLì(¼º‡¦pN¼j7Ïsæg§` ƒ¼`8íĶkó>ð4¼ï,ÏXèÁæFkT Â|çŽònårɦÜ"„`8º÷0Ÿ3_.Z‚dÏgÞw œ{¤Œ×a4u¢êZÒEtbBae”“"õ*䤽^¢S>­Âï­›ÍÆöÜÚŸ…öó‚ÌÇ&9À·ïx‰ñ{~)Øw/wïÛðÝjí׿[ŸÍœe•>ƒR0K d-U]Sn6>O^º‘JUU!UÂx"W‹Ë÷‘–þÚÔUÍzµf³Ý€€ÃéŒñpä÷0KÝ4hO´tft{¸’©¸i­Y­VœŸŸÇϯ”"U W®\á‡?ü!Ïž=ãóO?ã7ŸÆõK—†ŒÆc¦uÍ·¿õ<}ñ‚G/Ÿó·?þ17®_g:™0#9Ò½Æã1Z7”Û Û­›%u£#! .z¬®jïm¯qIIÝ4äA®šˆ=ßãÎs|Á9evĶC¬ùù#Q ·n½Ïé›—ÌÏÏxúô)ÃáD*2¯hÂGaõç©4M)Š‚,ÍXn¶èITâÉ«öyÝBÌŠÙÝͺŽW×·ä€Uí#¡ŒµÔZ»yT¶"„@@wgÛ,I©Mª¥w©$åèè2³ÃCãŠhý{kšÚE1)/±†"Ï\ZšÆ(­4I˜M¦ ‡Žœ’B0˜L&¤*qäšpêpááZ(©¨ë„‹+Ù–'''¼yó†'Ï_ðúäŒg¯^ÓHó!ãÑ˜áø º?L(ߎA?}ÇHoÛ‘NÛÎgv]2¶ßá‹ÁuÅùù9/^¼ä|>g½Þ8E±qó’5–,˹rå*E1àøø˜ª®½›©_<8º|‰“ÓÓVa£`àý÷o!„àÍÛ·,–+Gøu #IÀãàò(¦òëQ«Îm×f¤ûhžsZ IDAT1›ä9*ÍÐÚP×5¹wöX!c„ŒÝ5°N² %4[_¨”6ÈÈÆ93ô+ŒÆüéÈÓ§O)ëŠDJÖ› 5È4!W)Fºë³ÝnKš)¥(7%«ÅŠL¤\;º Fñ¶>qó¼6ö«]áY×…¶ëlß¼ ³Õ.9å Õ!w´14þ3zbZµxP1 pw¿•²u9„õIJÉ`à"R-.>«(r._¹Äl6F7šd˜c…æêõËTõ–íÖýUŒ£ƒñ€,OBQ7єē ’Dù}Ÿ·Êš»dR°ˆ¹ž9ŋϙM§|÷;Ìj±àçÿÌu®øû¥»¯Jï80xÁÞ÷ä(TüxF·ˆ:®“ÆE¼9×ßbCG”ö±ýnaA¹­\ü–Ñܸqƒ+W®Ð4 óùœããcêºæöíÛܼyk-Ož<áÍ›7QE„aã³$µç»»øW÷ýìsu¨±N'AXwû¹wèHCb‚‹šFÄ2×ë—Ò4-ai­ü‡ƒ!wîÜAkÍb~ÎçŸ}F–¦L§Ó¹—e™ÓȶÛeã ÝRïn<˜1ñà ¸]èÞîº}×¥ï í5‘î|Ü)Iš¶gCÑ”eÉ­[·¸qýFÄCêºâçL]UÔUIž¼÷ÞÍè´[¯×|üñÇlË-*QŒ†£èL{G6¼{½{½{ýÛ vÅ™tXc­¢ÚÂ|!X,¶ëëeFYf@ÝN=é2ž•ËS"Ï,y^º¾†«#²¼"lÛ…_þ¾XÜ;ØÉÜë(:„ñÊ@Àèzÿµ1Æ)¦h£w’$!óej.wÐD””â‚ÚÀ ÙS´%IBYmØTB)7˜Óó…a2Zxw€@zà–ûÜÁý¢‰$² òʲÝëaŒm3¥ù³J)—lœ_À£ÊžÊ#ç1fÇõáKª­M*ËšÚúÜÛX$-i´îIɆv@t‹/í…Òe—ëJ Ã!¹ÕÒZB]T‰”ÒrA†îŒÝ÷þÛ¬SÑÔÆ\„9æh‡k Þ ø5„\P¬þ.àmW!¦e0H9º<ãêѳÙ!k ërÒ‘ŸÏ)·5A]*ÊMÅÙâœåfËp4FzVÉ`htí@+å®óv»äÙ‹' -Uã²F“LÆÒkkTT¹Þ8Ãa#°RælV5¯_žqz²¦¬!KH uU!„¤ªjf³)JIL2BI’²\”þž‘þ°"Y¯WÔÕ–;·oóïÿâ/hš†O>ù„ŸþÝϨtï?û”k7®¡°d©òÑb-8 ¾r]Ùýÿâ_ßúßÁ–t¹ïl8(ŸœÛdÙoÄ9„5eïAñµÅ®R÷w!.ö’ ‚xH%q­Z áõ$+J2>˜0<çÜY‡¬õQøjó͈¨èAt¹ÿsïªê"i`]ž;ư^¥¬6kæó¹S¥‰‹ ñÀ1¡ðsçîõjY![%×z½v] áZ‹pqÿ(o…¯êšÍfC£5Yž3 ™/ÎY,—޼·Öuíq6ì+@  å`0`2™ ’©¤q Ÿ¿¿7l6›X d)Iž!”æÂü’D Ó²Ùn)ËÒw%h²,a<>`0z‚Gƾ á÷$v”ÍlŽ¢åûrçÍó—üíßü˜›7oòðáCT’´nMOvÁ“ù  ñ½‰âiš#*ŒnȲ5ްTÈišm *ÆÅ´å ¿kŒ] Èæië÷$Å“ƒ1‰½Ìóõ’'Ož0NùàÖûNë·Æ©7VvJÈ­ŽÇLÆ Η+Œu¢‹4u`¨’ÊkV€æxágVaM/’2\OG”:€ñs«”’,ϱՖJkßs“H÷§:À)ÌŽ:ÎDY¢H•¤1ÆuIHçf.Š!Óé„AQĘ­ .N•Šÿ~8(b ­RŠñxì9ãÑ4Mɲ¼þbV†yÔw UBí£˜–Ë5«õŠõzÍz½áõë×¼zõŠ×o)µ%)F¤*¥ÈÃNägwhóï±}×^×yF4ç«v¶0ÏÊøìúMÜ_˲¦ªjŒ ïLsq$³Ù!ÆXNOO Z%nfk|䡼ÿþ-îÞ½Ãj¹àç¿ø;Äù91d‰`Pd\½z„–ã“S–«µ+ ÙCåÝAÀcüç´Â·à"Ť”>"ޤõ$™µ‚ZHT^`’”eU“ Ež¨-X©\<©õv¾5'ƒÆÀz[ce‚H2¬pq^Æhßç#­„$9<:ä?ÿ÷¿¢Ò V&TÄ c˜»˜Ïº®ÜÏ £%œ;GÅ(Ï™ &Ô•FZ²Öuãfw'¿îþ|!¢1rJ¢GÀ÷Î1¢{ŸµŽåðçA\Œ— ¢c`¿³º½w­ ¢IQ ˜N§þþq¥ãÃÑ€K—ÉòŒJTX!ÍÆL/ÏX•+Oh+ÖÛ Yž“Rµ©á"7ëãnÚ’{éc{C/ÍŸ\w–Z,æœñÃþñxÌÉÉ ÏŸ¹¥à.Ø7}ÕzÝu¸ÂùV€f½¢]%ÎI˜å9E1 (²žËxÜïªã›F;WßjÅb±àÏÿüÏ#)þøñcž={†µ–>úˆ¢(¨ëšG±^¯¹ÿ>išº=T‰èÀŸÓŠ‹B±'"ï›! ±+î O†ùN’–¤Î‰1QíÒ4ÄæóuYq÷önÞ¼njV«'''L&Ž.QÕ¥oø´ÿkB´e²=Ü$ áþ7:Ä&µ1J®>¡í–¸ºO Õü7•»_ ñî‹ÞìgÛõ `»ÙPU·?¸ÍÁÁ8º–ó_|ñZ×$‰b6›ðÁïÇûg>Ÿóüùstã"—ƒAÜ!Þ‘ ï^ï^ï^ÿú_»Dƒ__àR²^YNO,§ç§'‹óg'Šr›±ÝZ¯&ò›ºu‡n)¬ÖŒF–7G˜#Á¤jh´!³ B4±Ðô÷•Å7¾¯·ÁvÈ”»Û’’zx‡ëׯҘð½Y´®0' RIUoÑ`3ß’î~m<@+E‚ÊÙ—mæƒ }Tš²Z.˜Ÿ¯(ËdmeY!¥âü|Ž1†;w>@)ÉüÑ9ãñЕYkãœ)JPÃf»ÆZM]®¹{ûþÝŸýãѬåûßûeYòã¿ý[Þ¼}íìÛ²íöpäÚ7Y[þ±ÿý_x)ÿQEûÔ÷ݬZ)Æ8`ãü|áŸoA…X^û•¤Lÿ}˜,Ú›Ðe¹w~¯#¬:î§‚£Cx©W iØîÿ´‘4+Š‚ñxL^ Ü3:h@¯××w´tÿÛî¯1>ü«¾£¸þH0=Ki–1Ù¬–¬–KEÁð`ì…Æ»4\¼S §T¡3Ct?wŠL\¹²õÅà1ŠÇZ@Eåñ=18 ‡¼zù’ÓÓ³HTŠÿ¾ê»íišÆLä"ô%@,'ŽÊz)iÀ—e‰6&:TrQ˜(Em «ÕŠÕjåú|å`0d0ÆNÔ>Ò¨{¨ïºJ"Ék-Êå¢Ò$Î ¼ÅRåREâ5|k*q×0'§.*Ô&EkçÒ¨¥$K]nz–eî:{‡A·‘¶–ªnb®²T.î ¸B¤TøÆ‹ÊÇàHôÏF‘ Š‚4Iš/MbŒaŒÏQŠ4K"Hœ‰Öï‰eY±Ý–Ìç Æã”´hS£¤$Ër>üðC^½~ÍÇ?ý;~ýù§\>:âþû·x:™q÷Öœ/æüÍÏ~Ê/þ þàþ+W®pxtÉçû«n*I’0 )е/Yd¾è¼ÈsÖÛªU·ÞTk­1&Éû*Ñž‰Ñ¶«C¯PÑ['m/î1Ì }u±Õ†ÑÀ9€V«ggg\>ºÂ°¹g“¶›K*m¤ÚêˆZΦSyu|Âz½!޾üÌöz:ºìj»ö…Ìþ~eßa}HÒ„4Ïh´+N/›†T*/’!æÒGYJ…òý!"I¨‹j”*a:¤)WÆc÷çøû´ÈS&x“.NdèÉ"Õ‹ñÑ§ÍÆà·u@bÓøXœ²ÆXX,lË’ùbΓ§O8;;c¾Xºàºæ`:å 0ÐXHÒÜs¶ël‚¶íˆâ—Ý,X»ïXœ€í^Ôº…ÝL¯:kÌ`0d8£¥¬š¸ºÏì¾ÃëW¯q>Ÿsv~ŽÄõÓ©ÛÝyáèèˆétÊñÛ7¬·[„JP^pttxÀåË—ÐFs¾p¹ëZHòñ{ö¥6æ(0 !ïQmïç÷ÆZŒi°F£uøÔ ¬D+@¶ëºª)TJá ßÝýF<·Hßi§‚ø¦ÙbŒe£ iš¸Òu¼*Ú¨ëʲµmøŸ¾û]Š¢àñ_2È Êª$Í3熮 eU¹ØWéºO²ÔÍÄu£±ÚÅø ‹¢±èªÁ4.&%1º-Êíîß½Þ(/ð 䓵» JÿÞê†ø„¢Ðm`èÞ¶ÕíùRJ·/¦I¶¬Û_):D—”î<)ZÑ™’“úÏŸ?£¬Jò"c6›2hLã\D"™N˜LÇnU’ÕfÅv³e8QUÕ8Ub K;qaØàØhÏS»dAX:›¦B놇0™LøÑþŠ4M8<œùŽ‹Ý]A™n­Ù3×:²;Dêvö°ö%‰"IÃá€Áp€Ju]õÞc¬nÉj)eUGÒþÞ½{.©¬xùòeŒˆ½uëJ)‹¿þõ¯™L&Ìf3†^ä …1 ÒÏ?!®lŸ‹a÷ºu…¢»ÑdÝÞ¶ïÆ …h¾Vü&ÐñûQ´¢µsú¾y󆺮¹sû6‡‡3êºæ'?ù g'§|ÿûßg0$ŠF7N0àE>Ï’®c¬{^1ˆF;’»+jL’´C.˜AÑý|=÷ð.áÏ1*¸J[ä³EW>Iá3'CÖ²p ’S–)t¥›Ã”±Þí"ücÚønÏG\µŸÝîbµd˜ÜîG,5àªh”áëšúoËÛïþïÚÇfI%Q± ¢8"¯ ’T5‡()!òjõ&ˆÆ¸kŸf u¥y±ÿ’ýý¶··¨ê•¤Ž H$eYG‰«„ˆg§ ÎÏæÔ'šÝ½­fhŠ’%µ.œcF*@2î>1 1Z`­@©˜ÙlD”d$IFµªBQ•5µ®FlmmñìÙSÒ4í•Â9kwMUVh#ü½ªxãæƃ Â&±ŠøàÝ÷ùôãOØþ‚ãƒCöö®9×/r•¾<üòÊbÖ„Ëú¶ök’ßL}’àûþ¹æ‘Wß3¯:d´fGþ´`šéXî-UU{›yãžÂ€0èéXÅ¥˜‰Nq3­b¼]?„[D1p)šÂ—›6…š_ÿ\W]—ä~œUmDJ ì%ÕXT,ÇdÃ;´â\ܘ!•ôθ¨q!ľXy8‘%‹eÎ`8b:Ûp]Ë•›³:L½âíNÏL¯¥#Œ,9Dá˜&Pǫꅼ¡æcŒ#I€ímÎŽ8=9æÉ³çì]¿Éx4&ñjXÑ#6ü}ì3Á6L§S¦Ó©W(tmP‘›·ñ÷™&ÿÝ×uÕŸÛÙ-2rå¬ÚÇ‘5=~f‰âWh]RCm ·'t{LŒq® i,1’DETÚb¥$‰b´±\\œórÿ€$IFMA{ž¯H“ˆ8I\tš ¡Ž@mv¿¿Y‹n¿vVìc. R×–“ósGxêšÓÓS^¼Üçè䘲*É‹ ÄIÂl{F’eŒ¦3jãæÓJkd÷¦1añó­ÅZíäT½õÁöf€+{gM SC>ø}CX_ŽÚ¤«ª¦,+æóB¸ëXúˆe4²±¹ÁÙًŲ‰È‹¢È])ˆTÄp8DJÉïîÆù|áœÆƒÁ€ÙdÂéÉ1§§'în–Š…Ñ¼óÓǓ¨–hñ® SkçzrÙ¹Pk„Ñ(,º.}Ö»;躦. ŠEŽ© å|E¥ çÕÊ}[ˆ¬/žõ£“´mtU3ÌR´5ìŸ3HRbåâæ””ÄI‚К2_qçÎ]ÊEÎá³—D„ŠÐF3Ÿ/X•…#£Ê’ÙtÊd:áèôT˜?ð¤iLUVØÚøÙÄ [¤p. Û™›ú*j_àö¤àLj"}½èJôþ kQmÍÝÖø3mÁ¸_sd#L¢·@+½¨¯¦Æ´Ñ¤IÆîî®»_ª ©Ióæ›w)I¬©‰bEej®]ßEZ÷­¬Ê%Ã<åâüœª¨ÉËœ|UQUšª4D2as¶å:@¢À•á<µæ¬ªªÊÝ+ºfÿ%ÆhnÞ¼–Ï>»OU•ÌfSòŸýUý·­5ßå»»jÐý/ùêÆ…gÙ)#µ‹¢ñ%Þ‘Šù»¿û¿8;=agg¯¹_ÃaËtÕšW´áÒt‹  ¾w0쯠]póêž™ï^-<éiqJü.±áÖßÖñž}­Ý3‘eÃáEN†ieOµÜ8BŠWl®".ƒÙ¶Qmõ~-Z°ÛàïÆ8IÈŠù’ùÅ…ßs…d§(º_DÞ8Æ\Æž/ tÊöªpQCF»ûAxBI£<>9a•ï±=1LHâØ+‰/ØÝÞ!¶QKÄ\A 5±'kÀmTN{o:²ëÖ¼P°—¤©ëjˆã†0÷Zí‡yž;—RdYÖ(ÿIošòìoúÞº/×eàZk¤’HTá¯qpö9K¾£«¥½ô‘MŠ($F³mS•uQ «ªéÌ wK^ÈN'’SV" NÝ5f×1gmÄöîFcª&†!ˆ¤"òÀŒ6†Úht/¼ $ìˆÆ’8uý;²l@šf”«‹Å‚ù|î‚ؘmðÃü§OŸñ‹ŸÿœO¿ø‚Ñ`Äôý?Bú‚á·nßáO?üˆÿûWÿÈÇ¿ý˜ÙÆ7޸ɵk»¨(q®#Öãº/ÒŒ8vû‹”.~g4qt|‚®}  'RQäT²¾;Ê•“K?Ú«—õÎoÀj=n]‰Š5¾ ÕGŠÑpÈt}Êp0 K3²$ñû‹¤ªu“^k°*Ñ/󎓸yª²jzZÎ9›/8;»àìô‚ó‹ó¥/}ÇŬUµvî§,a¼1DHI’¥>R+B#]ô¿Ï)k¬õóCX»Ì+JD/í3Ý_Û–+ „º]ÛÿEGø$œò+§g矜úâlÑž!|_Ål¶ÁýÏîs~~E$i/æ%Žcn¿ñççç|õõ×ÔÚ€ß×’$æúµkLÆ#>ûâsò¼ð†\ÅÞ»ì¾ù&Ç”˜D5Å­\Ô>"=¤¶®k Ý5B8RÒ¬ÖPi"¦¨¨óœ*/Ðe…2 Œ[ß*ëœÔ¦ªÑUEQ”.Rª¬8¯*„Ñc¸(ë’«% A,¦®Œ†äRðó_ÿšýã#f³•±ÌWK.V ×?$%»;»lL§¬VŽð¨}†`]U`RŨ(¡,ó&¦®ªµ.Ýþ×|‡áYoÝ–ˆ¦ç‚hÝ Ú“µ½5¹Ù„4Â?G¡1œºë¿”Ê‘‹ÚôXh\0Aà¶Êsjm˜LgÄQÂöÎ.«|Å*_’$1³Ù”ë7öHÒc4QìöË8râ%];2kb2Š"çÚÖ&UåDCea¨kKUʼFXI<®¹¶ƒ®]´ÖTQÕ`_|¾`80LXÌç¼|ñ‚›7nxÇ]tyþëÄL­V+ïÄtëäd2q¢‚8qëE/"TùdE’ÄÈÈÅeƒ ©\Ôz´m—hps¬ÿ¦áôôŒ{÷Þfss ]k~õË_rÿw¿#Ž"676¸¾·G¤_õ«å’»wï2ö½TMYG˜ÖÌÈæräÔ•âÑŠ¿i~Y'"ºNˆu²!Ü_ `è‘ '''œ±¹¹É;wö÷÷ùä“O¸~ý:Y–5O¥±Ì|·Œé l^E~4g|ãRºŽ”¦/®Còv WÍ™ßD6H_bÝ8‡¼°óª˜ã@èžžžò޻ﲻ»Ûœ‡–Ë%ÏŸ?oâ›Çã1ï¼óŽU,–K¾úúkò¢`6›±±¹Ér¹d±\²óšlxýzýzýú×@:´vqB Ès˜Ï-Eó 8=‘>>)#ŠFhSûZc…1>ÛÓÒ4¥®+D$ÈFŠ(*‰c”ÿf‰ö IDAT% –MJ6—ö÷úÖàèÛÿ|W‰$›¬mÛX…£8¦yÚÖR–…xŒAb©j7\§‚ôódS¢'ûjx)e“•,ºㆌ4M\<„1~ ––õi6Û5€}Å—*¼å˜F!Üÿ³²#³¬ÑþPQ9U_È0öd‡ñÙ†ÁYáÞ”ôq@òP(;ùâ‘TM¦lptÍ,ÖÛ%Û²¹µ¡ÀƒÖNP䮹d‚5žØêäRàJº‹QkŸù, .Kd¤šŽ )$ÚÖ.ÊÉFJÑF·8"$¸?ÚÁ¬K h³>ìп |üÏ& -Mõb± ª †Ãe‘“%»k$Ö¸œQ¥Z+s­ y^P5umIÓ‘³'±+3+_¼œ:ß:åÚÖö&ÁÑñ1ˆ˜Õªd2"Eì ·q½-EQ¢T„@b*Ùtz4g¹’Ôe‚®¼$2”UAWè²nʨÑ>µ2\œ¯X­ F>¿YJ’.J£(+¬©¹~ã:·ß¸55Ú†áQRÔ%ï½ý6=äääÄ—® êªnŸJ»ˆïBÕþãõm ÷÷! Zð[“Ä’/^4ôRªVµ×\qéyè é«m¿«cãªÖïõŒˆ–ÊhT€¢ÓÕÑS*¶À@EdÃÃÑÈ­É*rÀ|'O½ ;X묹êpó*§C[ÊýŠ?ë7äp•e ŒñeÃÎM• 2†³ «ù‚³ósÆX²ñ¨! ,ßâ–’ …/(ôî/m ‘’.63Ùõ·ä, 6FãÄ7Xùª9puãç®ZóÖÕlŠOö¿o§§±ñëºn²å…’¨ØEJca>Ÿ7ÀA(øîWˆ¹ªpäR#øëèiÓ=ü^+›lhÛQthDJa¥DÈÈÅJ\éxœ& u’Py¨vŽ@ÎÔM‘µâ8&ÉRWtÝÉ|?ÊW»åœÆï‡ZkFÙ,IG 6†¢ªÜ~ïs¥»ŽK÷k÷Ó$k†,ÎÏ(ËŠÏ_òî;ïaÇ؉¤‹ Ü~ã6?ùÉOxòä ¾|À0ÍØÝÚæöö5©ØÙÜâý·ßáèü”_~ú1Ÿ|ò ?ü“1ݘ’ Tþ{‘ !v"Šc—bŒWm;bZW•Ÿcd½Å1eQ´îI.m~g²öŠ{Ú}ßî^@š$ÄJ1 ¹¶»ËÍ›7yüô''',v÷˜Œ&^ý{Å=çÝ¢RjÒÄSI’°Ò­Áƒô±©kêÊ9d¤”(ï.‘<’*j€…h»–¿†Û3£8ÂêØE$ÖšÚ´÷+·¥´²¹”L‹•DIA^T ³!Ȉe¾b±XqxxÌl2#š)/*ˆÑÚRצ™—¤|R9wŽÒeA“—9g'§äyÎéé)‹ÕŠÃãSÎÎçÔUÍù|Iå»»"åþ|28õ»’î9“0¨Œw÷ —ZÕá:{œ#ÔMÓGfŒY“ ˆ55¬Ÿ­…¢xöárpŸï€S1R*jm8=»`•;÷s“8êsÊwvvI’Œó³9UU»ùÊß;.&N1 ˜mÌxùâ%gçg½Ï£”bg{kjY®rj#ˆ#6v÷Ì6ØLµ¤YK­p.±²pQDµ¿[¤vá¹RB]•Ô!öÍ;Œ1ˆÌñƒj*I- }¬˜yÒד}ޤðâe‰©jКùŹ#bË ]¹¸,SÕ˜²Ä†¨ÎùŸþÿ QkÊ%Ea¬ál5§Ô±t9Ùp䮪FXAÅ Ò!Åê Œ`UÔ¤ÉÐõæX‹mD‹jíôôøè£†Ä#”9Ó!ñ½;ÂØK1>íßå{R¼ÛÎ4ë’ŸS”ðRÑë-Yó†u#®ØÃÜžY–«UÎî΋ŒÝÝ]>ùôㆈ½¶·Ë`8h:í¬fgNl»è)é×ZX’aÊjY±ª æKŽNˆ£ŒÑhÌd2i€twÖìGFcHÓ!XkY.W,—KnܸÁÎÎ?æéÓ§üìg?k¶õ þî¯7fSºeëtˆ4 .)eKxø×V!%ÀS”|Åüè?Be*ç*S12‚å"çí{ï6Oÿßÿýß³Z­ˆ¢ˆ>ø¥yžsÿþ}”Rܽ{—áp؉Kj!ûdÃ+gµ. îƒý½ö¬v¿Šlh³0{ÅqBQù’›¼Ïl6E)Å‹/89:æ?{»G6D¾OI)åɶö}„ç"CB Ûƒ³¨K.tɆPx.ä:ù`¿õL zjWѦ…•^\Ñž=ªª"Iªª"_®(ó‚{oÝk\0l¸ÿ>Iâ"www¹qãqS×5/^¼àéÓ§ÄqÌp8dccƒ¢(šçä5Ùðúõúõúõ_?á`iâ­úˆ Ô5ÔZrqQsrdÀ Â2Y„¨ÐZS—1Y–’$ÆVTÕy^©)£aL[âØ"UØ´·w‰ÿ ÈÕvaàŠ8‘®}¯Ÿ‘o ¸ƒŠõ´ªv¹÷a¦ÒNåä#¾ŒØ8;žôÐz ¦ôAéW>À‹6m©±â{ÔÝò]ÃL›>‚9Qu¿€HE”EtŽÏோ]Dó¹Ö?o3¸xàN[ëʇ×8ÿÈnŽ{ï·ëF{Û5\ª„Nµ†@!}çÚ{µ~`÷¤ƒõ¿Ž”òÑPíÖSX{W‹õ 奂É+ ¼. ŒöûƒëÀe j–Ë%z9çðÐ)9‡Ã!£aʵí‰{ˆ›KÕq×H¥H¢˜Û÷î°¿ÄË—ÇhS“ 6œ›CDX4•Wˆ£)´#ß|ëIsppHš 1Zb´ÀHˆãÔ©ÂJ‹®ùªæpqÎâü‚“ã9µIÀ¦˜Z±Ê T*õÚX¤¾÷¡üŠc—Õ^9FÃp8$Mcb• …%ŠRþüÏ~BK„i{CœJÆeo½ù_}ý5UYÉ·éÚ«‰„Æ)$:kÆ9¢áŸÓÑË¢í èÝbïej”FMv¾—Jç¾í>ÕuíˆOÁ•%Á!¶hý9nâ[ãÅ®>Lи¡ðdjw鯩âR7KÇÄq∫`xE$R§øª÷ºUú®0Ûû÷›ÏÊZ&x8´¯Å5à5–$K©«As Z­VDiB$"7`HWÑ&»ùá>NI)Õ$WeÙ”6ÿf䀶ª®0Æ=W:¯›CuQmÄÐ70¯<¯‘´¶àTeIUºŒÛ$IȆƒ¦@8ÄUºd¹X°˜/H“„A6 I’ÖÉMôíðýè„n|P/¿Üß=Âmë–:vŸµ8Ž©­mÄ µv¥ÇJ)D¤H’ˆ4M%q—h¿×¾´1MŽF„†ñ»aüÀÌ®*6à¡ó'‰ãfO2¾¯ÉÅKù½yMéÈ$ë‹âG£J)¸ÿ3~ô£³½½ÓyFk²4åÝwÞáÇ?þ1G‡‡|öÅçlŒ' ?ü)Û“RJn߸ÁOÍŸp|vÊ‹/ù‡ø66f()Ç qHBElll°ÊWΑ¹™8ŠÜµªµo® áÓ}þ­ƒõû¬¯ê_ ¯º®Àh8j"3f³³éŒ‡Ÿp~~Nžç-‘åïu­u¢#¥üçæ0tÑÚeõƒR-u“¾\.=åÌ4NH×M¬ô]S]~¸6*Š‘JQW¡¤3¾´Ot#]„tyøÂÏCÚX¤ŠÜ«àä䔇òõÍ.6É'óŲ)¦^.)Ë’ÕjÅÉù)'§§Ì/.Øßßg±Xø¹!ÃËp8b0“©ÈõÎx'SìI(¡¤‹Š|–h‚à½jêíQ¯$¾Å•{JKÁ÷í1="Ó¿‡°GQD]kʺFxvU×D±+AU‰b2uàÞÑѱ‹„ÑNÜ•çyóÞööö˜Í¦üâç?gåßøý"‰cvvvX,:ã¯TDiÆÆöqš¡”¡¶ù˜'q’2:g ö³näCF…¤)-kT“qî?wÇÎm,ÖO^¾ÝÍÏÝ=4ª¢ÄÔ5»7v±Ú€'H1.šULY"jÍËý}êåŠìÖu.Š£-‹X"ãF[âHðüâç$ÂõÉ âÂE,m8].°Rb«šÚ«°»ëbØ¿EÆÇø®3M`­÷/[³ÃÓÙO:3Îz qØG\Œ\?F'ÜqÖʦ)Ìîß§Ú Šán- – ç‡\»¶ËæÆç”6X"éÜ#¡| B%TÎ.ðà˯9?c ¼që.ãñÑhÐtã¤Þɤ+í×·„g´,K^žŸQ9×÷®±µ¹Áßýíß °ln̼°HöfÂËëq°îìÅn¿kç±ðoF^m^U•¼Ýl uÍzw `»BE)kóüì)$ï¼ý6UUqðrŸ‡_}Õ†8ø£÷?`˜ Øßw¿ÿîÛïðÆÍ[¬V«¦gÅ w® =WÝÙ⛄=’<ìa⻓ ëŸ1Dÿõçšö3‡¸¶¢(xòä1ƒÁ€üàÌf3Œ1|úé§L&6f3·G…¹ÁˆžH ÷]ªö ëf–ËïA)zóNû¬²Á4dC·³á»œ}B‚C@„w¸ÉµsQó]ù½5MS~øƒ?f0ú¨Bébû^¼ÀZKQ¼õÖ[lmmQ–%ÖZ>|ÈáÑR)¶¶·™Îf^¬÷º úõëõëõë_Ñ@GáÞÙ\‚à¿®ÀÅrYqq®±&agWrãfÄd<äÅ‹}Žsî½½ÁÍ[náŸÏk>»Êé‘a4ºE”)½û@¬ozí¡×C߀¥‰2è2÷A­«ö¡«²Í€Ñͧ¤d2™r6¿hˆ—}ÝU°÷§f8–ê•C€Û`M0À÷ \QÕCŒuÖ÷îÏ0@úG镯¹a-Ë¡$¦r6ü,ËȆNÎÏ.—Ÿ­©z„Ï ²“¯ÞombWªªFÆ1B˜~/ën‰ËQ#žóêܘNƒ/+ î é#!U­ÿ7êºFE®(NhËtcF]VäÞJÝ8"|¯Åº ·-’êö¦0·aÍ:¹óWª­’úÛïãWÝÜðîÏ—E^ékŒ!_Vmù‹ÿñ ‰AHÃ`’¯Vœ9¥›òÊík{7X,*þçÿååìÌ©S‹¢`2¹"QE’²\a¬¦® º†<Ÿe)y^Pä–,›¢µ%Í"¢È©¯­Q<~üœ‹ó%‰©KªÊd’8‰˜ŸçU\a_Q®“îš¹¨K’dÌf›nŒbl]R™+J~úgrçÎ ·ÆHßEúJ´û½$M9::b±X¥Yï{¬ø¶!%/C ÿ\¯ l’_¿º\øª_ßu²u‡ôµûzëÚ:J”ÛLø¶T¹ûo´Ý"-ÀÝ®ÝCz?öª5ù’ªë›VpéàØníZÈOB ‡‹ñxÌx4b¹\’ -à\¯°g[^lïýØþßÓÌ1Æ´%½Wô„µMkM©Æe‘†NyV$«ÜÅËá‹Ük -ÈÜ¿ÇÚ¿?Š"×…R×~O½’ïÑhÄùù9óùÜE¶ŒFØÓ'''mqý+ÈTûˆÖuð%€ìup5øî…  ?SUËå’A–‘¦)Y–µÛ'Ž›ûȬEج­ÅØ>¡Ô^?ÛD(qÅgiT¾_‡ªîϬ+A5PëÚz8ÑCÈôµÖ™¸óÜLÑU®¿ocÛòÇK³N44…¯¶Qׇ\⫝̸)]цõ³‡Së8>ÜçððƒƒîܹC”f^ÑX“d)V6¦3~ögƃ/¾äÓßü–GOóGï½Ïl:EYà M¹¹{½Í-ž¾|ÁƒÏ¿àëwÞáÚî.£Ñ¨¹ná=¹ûN“Ä B, looÇ1«ù’¢(2?“u¿“õùðJQGàà[ˆÏðÜ _1CPzFQÄt6%Š"ö÷÷9<:âÞ[oµød§£ÅzáKx6]!ö€Ñhļ8C éI\ç<²þ3²¥®5EY"äËq'.v,”±G*ÂZ›eSÔ„}ÜÝ\»uÑ[®uGë’ÚÇñI¥œsÙ®½kßô&5s“_UÄÁË— ‡;;;DRñìéS¼ÛoÄ­›71Z³ÿò%‹ùœ÷Þ}—á`à÷õ(ä$Q³¯DqLåÏãß4놽½§Ò”—Ï®]ÁBwÖl„!"óŠù:DSÇŽ1PU/_¾$‰cöö\OÅ|>ç‹/¾ ˲†|ϰñbÊX9aÀ¥ØôAëç”âhLûþ•RÎñ`ül#L¯³¡%®œaZ²Î4dƒlÃ{k³òÄÔp8d>Ÿ;Recƒ<_ùù>ýôw«¬`8q}ï&Ò‹æ–Ë9ÃTùò/z3tç½vJ2š¿ûðVùP ¸~Pë+8ºî¢Lš†qØH!P±Ÿ”T~N‘T¥ª6ffÓ çgçä+÷=()0Ö;„³ÈÇ¡´Q¸ü˜Úð,Qœb‘äEåUÍ‚ñdFQÖœ_°³s £ëÆYc<8$ÄU1JöÈöÿëõ¾{ ×Ö‰Šã]Û&Æ#òQXÚGt¯‹lòe啤@—Píêý§]|ûûü†ëÞí¦éí$á„ëdq–lŸibï³*ÆGÂ%é€l0DF1"ŠÐ>ÇÕxà¤×›°fG—ÞðªÏó*çCï3_A8­g÷vãêÂõM²”2‡$uÄâj¹d8’IÙ zn -£u'Æç¼×T®,ÓÇ Ùκm¬¥¬jVÞÉ •# N^žrttäÛSÛj^ X»ýH¯•/vß_½CäOáão‰ „Z…•ï ¨ŠÒ‘s¥4%Ôk"†î³l­+‰•‘ì‘ù (i¯ŠÊ¡Yí¡ÔÚþgŽã˜Š|`i÷F!= öXå …‘áßsëŒnA!­‹›ñ„ƒ”Òõäø=^ûkiÖ¯oç»Ðµö%¦™°Ö©~…ð³’Šc×YeÈ7ŸÏ©ª’8RèÚ‘÷UYsrrÂÁÁóùœÑ`بmµqkÇp0à›·øè£8;=åhÿ€/}Ít2æÆÆ±ŒØÝÜâ‡|Ày¾äÁ“GüâÿùO¼õæ›lmo%ÒÝÞ‰#¥$Ž\a¬RŠ$I˜L&ÄQ„Ö5eY:¢Ã_‹(Žü!ß+Ye›»Î·¸I_å²ê–²‚mâ… ³a³ŽŽÇ¦Ó“é”Ó“S...˜ÏLÇcÿ;Þ+ôÀ´e¤’XD$qÂ0ËâÔeYÒ+léJy‚ÝE ©Ð•´'& uY¹ž…$öyÕ^4ÒqÿjŠ q’RëŠÚBm,µ+ÚGĘàÅ9¢(BÖ.Ž3Ò®DTkwŸ•e°X®ˆãˆ(IH’¸é9¡ã<­µ‹ «FE1*NQ±ëZH¤‹C)#$C››Ã½JWjD¹g³o)y5Eàg4Ñj¢„m×ÏúO†ŒÏoüÛúûÔº«Î Ôòrµâàð°qp…C‹Ö†x‡ï¶ª*LYQ(‰­+*m0qÄ`6ÁjMV` ñh@–ÅlJ™/©Î,OÜLSÕL·¶É&c¢aÆÙñ f¾¤œ/¶íà ½ÖÇ– ½%Û–Ô éî¦æÄj_›æïË }c •_—l‡ØAœÁe 9ìQ.~ ß°-:Ž^0Ú²1Ûä'~Äøÿ;ï¼ó.u]³X,(ò‚ímvwv ‡Ôµ#­«­+…,¶,9_\ðàѾzðž>f‘çXéJ·66¹uëo½ý6£ñ˜º®9<<åñÃÇ|úé§n-D0Îøñÿ„ñxÜ#g?þøcƒ|ðüö·¿åÃ?d0tâEãJ(˲Q›·Ô}P]ôº‹l3·­PÜš+|ÏEÓÓ‹Ë Â=Ûvkc8==æý÷Þu{ ÖÜ¿ßE Áþ虎'¬K¾øìsª¢àÆÞVkFƒ¡k;™ÂÊ"ýg\Ÿ-¯8T÷>£íâ^ˆwéï0öRß™}‘O3á B |çL Ž©ªŠ·Þ|“÷Þ{k-/_¼àä䄽Ý=ç4­j”ÿ\‘rqcV\æe»¢2cyÅù·ÅhºÏE Ü•Óí,fÛxjÛëÉmœt(oï®çMw$ͳæÎÈÇI.—K‹}ô£ÑØEJEY|úéï\ÇŽ1lllòþûBHŠ¢äÑ£GäyÎÎî.[[[­ çµ³áõëõëõë_Í«3A󵃯0ÖåNcŽÛ»0ÙXR+„¼Àš£+Ës¦³’ÉD1I#Ãù∳ó”­Œ§cÖ:`¾%äZ‘îÚ˜þj<ªÃ!Zp|íg3…ÿ¯#Q¼ê_i:%MJùÍÖ)ªëªd<™0Ì¢8¢òªåííuÕWJ?÷0Åù6õÀHÑ/t²¦:{壢™ë/m¶êEôÖˈñö^Ói‹ðïÀ_ïºÖþ³[g³dežpHM¯ðXúèŽÐ[a;ÅOJJߥÖþ«AG€¸^D­³×ãÐ =–Ë!¶1dPft¯C¥5`I“ˆÑ0#‰%ÚÔk\i¤@—>“Ò:"#3VE1•ϽVÂ+êmÕܣ—Ì:u–” ¬èýïE„Á§£Þø.$CWY+}¬èÜßV”Š(Šœíím„’Tu‰6šÕj”’Á`àÊ@µáôüŒÏ>ÿœÿôóäðè”ÙlÌÛo¿ËÝ»w8:Þçù‹‡lo0f‰ ©ÀaŒ»çóeÍÎî tuJQæXQU9Úò¼d±˜3'loo°¹1#‰]é 6p|¼¤ªVlm]c2£kËübÎÅùÂÝ—Ö6ÀËî¬QLe8:\5äÙÞÞ·nÞ¥*]˜+#ŽÎ9::äää„Ôçd‡Cî½ýÓé6岪­ñÏM–7ó¼ßÑÑW=ÿÞËíïéJøƒ,ýmÛzó9‹¼DˆˆJ8ù—‘+ÂEsUàˆü—Á:`~õúýûåöíÐÉHö«6Öu·XÖðÂß 'H‘Ž&È$C% ¨·K–¾”¯þ}¿ãW¹T¬ñ%”W–Ù‰5ƒõ€õ…¹q»|{Ÿy],–Œ}Ö¾mº!º ‡)E1¹]¹8ºFúbì.YRVsGì)×QV5Ç'§,óU ÐîW(áïÒºOÏJ¿—·*³6F¨ª*FÙ¦qqmeSNE±W麘´`•ï\«í;k^å@±ßò 6ä“Ñ=°CɨGÂ5Ž!Ï·=@>*û±º{„£³ý…hb£‚óHJåK[=¡gº$TGÙ¹‡Å ùjEU”¤ÙÀj~ޱàtŸ‚Ä–EQ:¥¼ŠQŒÖ5‹‹9ËÅka>_ðùç_ðÇüv¶¶QDíû˜¢H¡ëÚØÞ¹ÍÛï½Ë˃}<}Ì;·Ù™mYƒ©5o¾q‡ƒó3¾zô¯¾ø’¯¾|Àε]önÜp€_¹Î ÿ9\ÁÐ/ IDAT²$%KS.„ R’4‰ÑuåÄá~S©”‹­Ð®Û@ùˆ1Û7­í9~{÷l÷{ñý¶+wϰ1D2ò{»BȈª®ˆã„Ý]Ž\÷ÀbÁ )ÙÌ·G“EXAšDÌ&#²E¯Ã±Ÿ¿hîkGÀ„øÁÔ»“+ö…ýKd!‡hˆòr§^­§°ÕŒ¼vëD¥!R1¥ŽÐ^/ ŠQ\#‹Òeø× é c4SéÚ•„ú~|?ò, Êúõ$IQIJ,%‰tq’ ”‹?q…ñέ`¥rrÓq©ùM*ËÐ]ó××_qI âž¿6£³¿.Ø^!°#:¾0ÿ¿ç"P¤+K®*”Š|ÿÞ›N§ŒF#~ýµ[ ëš8I]vU!¥`c:eg{›Å|ÎÅ|AÅ^$à>ÏÖÖ&i6àåþU¥z6’ ÖiQ¢¨+%B;b íìqumȶ<^ AiÔÊÖÇúÐ!º¥ î ?ó‡çÈG¶ ¡ZÖZ¢(&Ž¥G"á#¨­!Š3lj`l¨´‹2©ò‚|¹t–(MsGB%"´Š)`<Ýdqº¤ÎkÊÊrswÙ=VBSe)_=¤V‚Ø%þö¾7!ºî.Ûs5÷«ÒÏŽÖ¸^¹Ð›2ù½®ª*÷¹½”^Ü’ô`ºº$Þ°ÞÍÐÞ³^Òô:(/"ìîî1OGܺõŸ|ò±¿ÏÓÉ”ÍMß¹7æ« ®jöxøð!ÿöS^<Ûg±XRÕÃñë7¯óÓ>b{{ c-ççg|ñåÔuÍþË}ž?{Á‹ç/Hâ”[7o2Ùœm°»½Ó$e^P•%·ïÝckc‹O?ý« {»×˜M¦ŽøL¢Î™VE®¼Z)‰ò]J^÷Õì28çÛÔž;×£¦/i=±ÛMyh ¹yS×®Ü~µZñüù3þÝ¿ý·dYÊéÉ_~ùe£t¿{÷Íæ»þòÁLg¦Ó Ãám´ÚIéÉeï&ñn‚~„¤_kk÷™hִU2ÝÙ&Äv¶ëMëÎïô‰YÑ[k­½û¶^ì¿|‰5–ÛoÜ!MSŒÖéÊŠ·Ö+Ÿl(üg0Ö"´qà¿öo«½#ŠbвtÙ×iÌx˜‘Å‘‹hTKh¬«Ú—;ယNQ²íðô –p÷U_ù«T òhk¨jÝþ}ÝC`G™`¸:þ*”³†Ã‰# Ü­pj$w®ŒG†YŒÖ)$Ͱ¾¿@ÜÄQì˹m'+Ò¹Dt]9¥·¨œpC6„ÏÕ"·¾ %¨Y…W’vÂßf¯ƒEÓ@ëFÅ$•> †¼È9:~Éýû¿ãáÇ ‡®ïíqïÞ=¤üò׿äàhŸÉt@Kâd@U<~üy¾ââìAÍpÅ1ÆÔ(©¨½â£, ‚ˆ8ްDD‘#‚âïæÍcɲÄ]k µu×`±··Ëdÿü .æ æó%Ïž°½½Cm*ž?ÁןòÛ?á`Ÿóó3”Š˜ŒFlnlpûöœÏ Æ’Î]×ʃ¢A!d{ëÑ?3¸ÿ=ˆ…oº:ðÇïño¬»Ör„¥Šý:â\ ¬¯ÐiŠWt1´aFÒgSwûJþ`äÉz•'wéw#`¥M1iœe¤Ã!QšbBν·ü…²U­ë¾ª¬C¼JEÞêº× «zŠwÓ\·îs.{˜Îç )PFH²lÀRÍ©ë’<ÏIGCb%›•±ýþˆvŸ‚Ý]ŠÆY ®Ð3‰‰•$ͬʂ¢¬Xæ+âÑ„8Ž›ÃW]×h«]1¼Ú»v/·ÑN\Ý–_u…¥Ÿˆð²*™_\0_825˲&^ɑ۶WÖ)”ô f;wXK§4œK䘲X»ÏÌåï·s°mÿ|è9h/OzHÙÖ>\w£—ÌZT‡ï ¥°á¹ ÷¥sgù2[aü¾i{‘Vø™&)Í"8Ü7ÆôüæÜie¯ÀÜAºéY°>¾¸,KŽQRñãýˆ8N0Ærÿþ}¢(bsk‹4ÍüyŠ2g hnÊ+¢[²Þq ^d;1x ™blO\þ÷.)\ê›”Ò÷=43¼MÃ6ß}+îq±Mçgglmnr÷Ϊªrs‘1|õàOŸ>CI–¹gj0"„ (K¾üòK‰ã„ím†£!ÖZ†£!eU¾&^¿^¿^¿þ%_ßlý“;šÍ·u›õ‡aœJ\)ásÛÝF'¤îp7Ÿ×ÌÏc¦Ó¥"†Cˆ"ƒ@ûÃW¼hD€=ÕÙ(¤“T„ÿ£¾´Éò @ \åúÏxf­“¢¿Ñ(ܪô­È%a4‘Æ R¸ÏG ]8…k8à˜V7j—6zÈ?ýòWìžPVk,Q:sŠÛ•e•sxxÆãÇûüÉŸü€?ýéRˆµ4ÊÇH .°Â´jãW¨œ¿OüÕ%0Z´îµnõæªè¡µX+ÖQßtè…¢QýÈvípq1çì⬗óÞ„‹÷,È]òT\Ê3^ù(e‘W7 0ˆïÎ*ãN¶^â-5kBñªôiܲ§Xw"L$ã#œS¨ö9ûV¸ècëŽÈ®©Òíè}þÙ-¸ ä½=Lwï‹öpl:VséÉr}Q^mŠtà4Ë"gP–Äiâ ÈMÇ=T¤ˆâ]»bÇÔ—4†¢Që‘¥¼(Y®r—#pvQ4`kÏÊçþµjã¦Ú=ÞÒwÅuIšª®I’´!‘ëªf±pªË´6eÐU]¹=ÁeåùýP4¶zÛ( ½*Ú»¥s hMï™ wqÛU´æÞ¯}$H)Ôaû‚CO¾7ô¤¤ Aãp ñýh;÷lZIœP–ýœfc ÆïcÁíQU•PÔVc„¥ªK{ÐD gb‰íöüëׯóч?áúÞ5”’<{ö”ÿøþGʪ`>ŸsrzÌ“§Ox÷ø“Éeýº"e£†ìnm±·³ÃâìŒGñÖõ[ìL7B¡Ð\›mòîí»œòðÁ×|vÿsþè?t¥£¢n Zp΋4M:EÃnï•R"±Î•(:n 8]$"¾Õ6š¾PEô@,p))šø9)EÍdŒÁjEj’ÄTuMYWDÞí²1Ý`2ž’¯VÌ ËÃaFíã«Dc=rß{]U¨8&’m\”²Ú‘ÿ$¾$S4ÏWœ&Xm›ØËð™²Á€$MÛߺÆMY—ÔuMžŠ7Ž#â$ű,J* ‘ÔÚ2ˆÊеÛ7¬EZC„`MSÆn=7 ‹ós꺢,%q#TL–‘*!ýóç©V÷:S:’ØFÚ’:ÁfPÝ.’n¬J ð‚’UIrËׂ\Æ¿‹f¶Â6n°àr‘2€“öHývgâ‰v¿ìƒËµïÊ‘ õdâ7n¢œ7×7õ=]îÉ7Ü~ã3ö÷_²Z­š¼q×ss}ïeYqvvîãHÝ3’Ÿ^`W_QŸ^0}÷6“éˆó£—,Ÿï£k\ÄêxÈpsF¤À¤:‰(q½!*qZÚÖÄÊ‘ßR»¨ÕÂhŒÈÏè¸Y  Ѳ"ò×Byµ²¿<"(“M/w_ ï´-)«µñëAäûî ƒ®+YFG$ƒeš3ÞÚäøø”j˜’ 2Ôæ„l{ƒ•¬©‹‚h<ÀF Y¤+ZGr€JAˆP %ÍM™³ßÏêºB*Hqª #ÒAâ΋ÎŽçä«Ú¹|üî—¡m¼R»™î iCw`[hÜ»;»üêW¿F øÕ/ÅóçÏB¦÷î½Íõë7Q(gg§üü¿àoþæoyþì9ùª ®5i–a­åÚµÞ~çvvvùôw¿ãñ“Ǻ^!ŽFl^ÛæÞ[o¿³³½ÃµÝk¼õæ›\ÛÝ%‰·FÅ RF~›wïróæMªª¤ªË^·…ð„ƒ1­+ÙZ'x´V7ßG•òÐl§³±[Åqã,j÷m㟠E7¾'¸¥üã/þ‰íí67¶H“Œ§Ožº;DJvww¹sç6I³ð’³³3nݺÅt6ñgšéÎòÃ}÷1Ó? töòÞùAÒw*˜¾óÅ•‡¥3”2wð”K°èYÆ´ŽŽÂ—ïïïs~~ÎÆæŒ›7oÇ1ÏŸ?çáÇÜzãÓé„$v%Ü*ŽH3·gc7>L„h¥+Å9öj±^ïl!·F ¦µÝ5ß'ú®$¨LÝq~zܶ±dì•Rrq1çå˗ܼy“'B².Úòé“'TeAäû‚îÝ»‡ò]V'g'<þ k-ÓÙ”½½ë.š6Šœ«Òœ×dÃë×ë×ë׿ ÙЋþA_¶ òtúÚÙÖkçpPD1,W«eMQ(²,f2Çš“Ó9§§C®ßØ$ŠkêêÅèšå²›6‡j땘αØ)§Ä6.§œ~GO\ Ý ëxúάS‚‡<ζ Pbe q¶üH:Ó¥–²ÈýÁÎ6‘Öv)½J—uè7pՔ뀯˸ûÔH:t3ÀÛž„7á½xÙ¨8› F¬d…ìÑÎ+Q‚DB$!îsºŸ³Í€møŠ/¾xÈõÝë=B!àDÇÚn×ú]º‡aã‚þmÿà;ªhö5ÓDÜttí³¨¤×’4Cø8®`Ÿ6]fú[H¤d3—Épc®PI¶V80­ç9¯¿Hßî A‰…h£ÉÒ”ÁhDUUeÉjåŠìÒ4AF.ÑöoíµJùŒÚ˜ºrQƒ,é…FQìÈgmÈ TÆqŒŠbV¹‹j±Öb½Ò²7ڼ¥@âànW¨C1tÇ”eÅ|±d™¯È$‘ÁjI‚G/›ÿv3îûDa8dëÎû´W<±(‹o ƒ!­>\ãjÚöàâÊ&RRHG"ºÙÂ\Ahzÿa3Oi°)eU5ßOˆP0FS×ø2ÒúÿeïÍžä:î;ßOfž­–®Þ»±ƒØHеZ²-Éã{gbâFøabæô³_g,۳؎±Em $öh ÷®åœ“Ë}È7¯^ãñ“'ÜÛz̧w>å{ñÖÕ«A](jÀJÊʾ¡"øý½,K:\-~ßõx¥&¨·Öu•â´O:ÌËWj,­5”Ú0™Œ‘±b4³»¿G'KXZèÓíõÐÎÑï÷9Øßçå«67ÖÈó>‘TÞæ)V>?ÃKfj°¨µ†<'Ê:¾ÎjÕªw2kÚ•8MÊ<ŽÄeXë3QÚó|%ÎÒn—|2¢4>HÚšX£¤ôûz8 RàA-g}^†Ö$Â3ÞcxUÔè©K&yNÚ „„ÀöX©l)uÅq¥Û4*¯ŠðÒÎíqÖÍÝjç^íj”ŠVÜVûµßkwñ6?yÞç^ËkÛ‰T`g¼*GÊ{¢KϪÖZQó»úÝë««ÄJqr|ä<¦QÝ­®,³Ðï19<<¢(J”òÏ~?ˈ´£ÜÝ£\îñâáCž~ñ1)YÎzØnlЧ|µ‡‰%6(¥ð*éXX^"ê¤ÈÈ¿§HFtÓBR £Ñ˜rR"¬WÜÄQD’$¸ÈÚY’®òV‡Õ4(М¨>aào[ć)S yI߃©ÊŽ„NÚ¡èõQH²ÅE.¿{‹…sXçÞºÊòùu†fÂä蘗BPj N „ ´ÓƒJiRTºë–šA†|<%ˆ¥"ËK‹eI3êL³"7¶Ö$ÔT/Y.Î:„µ•¨snNì–$u®1¦‚[ùͯãGØØØào?ü…ä¤dq0`ii‰½½=tYrxxÀ_ÿõ_sçÎ'ŸÔû¼ÿ1W®\f4óðñ#~{û6Ç'Ã:—H)ƒ6†n·ÇÒÒ2Z›`e(9>>æþýûyÎõk×IÓ­ ‡‡ûìíísùò®]»ÆÃ‡ÙÝßã§öSo¹g ßïÖD´ê9ét²øH}|.]«Æp¢¶œ:§ø¨Õf[[nN…#N[ 6Jxðà!ß~ÿ;diÆÉñ ·oLYh¤T\»öY–¢uɧŸ~ÊÚÚ·Þ¾Å`q@ÇÞ&¶&xŠ©Z¢Î£½_föOƒ¯Ô+dM”3§C¡kòF\}.pN⬀'>ùzÙÿ»$Ž1ưûò“јõµ5²,%Š"¶¶¶xþâ9?ûéOX^Y¬Íª†UQLÔÑU¿]ÐõlÂ&Aµ؆:ßÞÀÕ–y¶5iæ¶eo9ÖÙ dh+Ð\óGøªH–ûüìg?#MSO|(øgŸÞ! ÊÞÅÅkk«Xk˜L4ûû{lm=ÁXÍùóçYZ^¡,}n’Š¢Ú6ó Øðæxs¼9þàÇkÓ?0¶qjÓŒŒ :ݘn/æà¨äèHSŒ»,ôÒ`)Tpxt«Ýu^¾Êè–y¾³ÿ œ^BÒy«„*0K6A3ežñ¿t_>Äû²`]1½‡…¬B£ö”m|°¥ a]š±Î}@š’DR(©Ë 4ÿÕ„/y)­Db‰¤ôV>ÈÚŽI"<£ºå )#RÊoÒÂ3ƒ§W!üT4y „Û¶,RJ¦¨Ã9ïS,eÄØƉ˜4Љ…/w#)kü ¶Ùbj"¥ð–»–`KäNµY‚6!fþ.XË% ÄQ‚T­æ¾%%¶nš%\ùÛZgƒ ¨ óyr”ÆR:M$ #b%Q CX›¡*F›ò˜URù@K!±!ôIÈPÆ9ë‹31Íǵγ·T±AŠ%Û ­l«5®ä±_•?Ö*@º(åÙk/nréò&ˆÒÒ2)Ç$"FE[j„rdIŒ’« D²û0;5šÕµyÑã»ßùwï~A 'Ç%½^†À‘¦Š8tº1¥#dUÐÙÀ,¤Vv{Öj,I¢„H„Pı$%qä ¿^7¥ßKÉÇC@òÖõ+üñÿˆŽ2X›sûãOùðÃ_`B` OЬ‹B`˜ ŠM¤¤ÏîþÒ¹6Æpû“»ŸŒøá¾ÏëWYtˆ“”²,ãÇR”Å P(þå×ê¯4ý>[h1¬ñ™6REH“&q¨Øire8•ŸýÚè£Ó÷ð7öþÅÙ›\°è©˜píÁze?€Tˆ(&I;ÄY•Ä)qÞx¯^Û*‡;3waDúž˜^ÇÚæ¿û9Ÿ=åÝ·È–"Òë«k\ºt‰û[yþl›O>þ˜µu:N½·Héëœ8öyQ¤H’Ø[p”Eȶak[ ç¼ÒC êð_Z ì:kªþ  nl+šì“<÷Á´£QÎîÞn`b[ÊõU677HÒ„Áâ€h;bww—££# t³Qe#CEvð H5¨©H'Fk\©©¬e"¨±ZùˆSº`~¿Š"Pm•­­AšfÝ©2*IœP”%Â8ì8§°–T ºIì½ýý6î5ƒ0cšl¤ÓÁZÇh<¤Ô7Ή’.¥5d°>ÂÚf}lêÇ6ðçZC¢™ï¹ÖçuÓu»fjƒÃÓëB“ùàgܧ™ó옾‰=¬aܺ l’Á:¦dyi‰ÍÍMF5&uZœ IDAT¥WBƒ…>—/]äèðƒ½}ö¤Ïú‚å¥E–>ùäc†£‘'ÖàSE’N£²˜ÃÞÓ'¨ÑˆØ8&y,&ŒŽö‰³”´ï•l'Ã!“"Ç*ÉQ¤ÙÊ3z/^¸ÀÚ•+tú]l$Èáøè€|4)PiJ¶°ˆHS8D*×yõ—³hk)Ë*ÅlEì±M¿åBæRm8ë `üó#$‹äò v°ˆ”’õõUÖLòœ(M†|ôÏjš&¬¬,srœ£ ôzRù{¾, ŸÞýŒáhD-ø†BVÌÕà‹+2ÄÊ1މâȳМË|nYLxøð Ïž½`s}•Ë7¸zù|ç}¤tD‘¨­ÍT«áΚüý„Ù̃¯ 0Ì’~ù{;ëû~Ýñ C¬ïš5´ùü_={¡ið/»5çÃK¬Ý©&Æ9o™•¦^4ëxF¾’T¡”®5üšòòogÙjM=Çbæ|·mÕïªÙ{aV%1ý>¨" t£8®³ tYRLr:YZ±l;ÿ¡5¸òÀ ®“R«;uN+Ÿxm4EY ¤¨}˜­µÞÞY!Âp³}^¦Õa"$;¶ïWÏ”T˜à3\í…‰ò¬ø|’3™L°ÖÑë÷ý{Uª 4Ãv¥¦åû3âwñ„g>• H„×=’^ÙvÕRZ÷¤«Á–³Ö†¶•SmÞ4çÙªÚrâêÌ‹ê:ËÀúͲŒ$òÖSÎTY±RÞ·?ìÛ¥)ÙÜÜàÚÕ«$IBžçìîîò|û9O·ž²¼´Œ Aˆõy²,ãêÕ«üìßýûûl=Æg÷¿ ÿNJr¶:YÆ{ï¼Ë£§[ÜÛzÄ?á;|‡µõµÖÐØ"#´ûppÿåÁ¯ÜƒÇ!ãújòSìtÍóòÊi@° {õáܾÓeYÛ}ìì¼dñxÄd2é-¤’8¡Óé°¿·Ïh4òCÕ¬À¨ví㉠ÚV–Mþ>ÖZ»VFH¨S¦÷€–‚²Œˆð^§n[Ù&ýTų¯ud]oud´Ÿ”%e™Î’ˆDIŒjPÆx«&¬D¥ŠˆÒ„¬ÛE—e©ë\B}fÂËÚ¬Û¶÷«Â9÷ÕŸÛ¹ÏÓ”%«²F“!gËZûµö11""¬¿ “öôþØb);ÇÂBŸ¥åE¶¶¶Çõóm´öê,aqqÀââ"wïÞe8F2²,e}u…(’…oI¯ç‡†¯v_²±´Ì óâÉòÃ#(r¢(¡,sL¬°Ú‡ïïùwh-º(pJà”ByM4ËçÎñçï‡ï}ÿ{ä¦À(|ö‡6袤´#…“X%1¬TX¡páÙ,µF[ã()ÐΠÛCÃZî#é¬Lò‹ÃP×UªdÀ&&JÉË•ÄX….ôû8瘌sR%ÁâÂ’ …r¢¶²u- ~$½JÚ»ì8Œöû“®^W½µC—–££!q¬pt¯ÀYœUà"ä,XQ[õÔÏBΣl2xºZÚÎ…š®O`8<¡Ûë+0G>¹Z¿Ü´eSž¤Áö¨ê„T”F“$Is'ƒZÎáÈó%“ñ¸®"åk8ñªkk-Zž?Ž‚>ø|þùçüÙ¿û3VÖVѺ$ŽU8çtÀ6ÏŸÓdœÀ覷óOl‘¤'¤ÑäU ¤7Ä­Õ®~oHâ„8ŽFXkÉ’ŒÑh䯫qÜþímtYrñâEʲäá£Çl?ßöù‡YÊ¥KqÀÎÎÃá ßýþwÃç6­ZXMf×47e×Ô3³÷€±–¦„k†ùÕ½QÁd6 šõÎ5ê[­ ¶î ªó\R*ž>}ÆÓ§OCÎÇuÇܹs‡õu¾ýþût:3ûÖyÊÀlq_NBšýëFù0 8Ø)’SûÏÙ÷1#æ¿ò<¯k˜$ŽÑÆÒétyüøƒÁ›››~]Õš­g[üêW¿¤(rt!¹qýƒAœa<)¸÷ÅróÖ-Þ}÷]:YZïßÝN§>ùoÀ†7Ç›ãÍñoT¨ªbk›¦KGì­TéKKñòeÊɱ„ó)i'¦ßÓÍ,Çû‚'Ç”Ncìã¡cm=¢Ó± †(eˆ#éKR 2‚oÊL£ÍVj7Rzvºk…ýÖ›µ-=Ò,=C_UžÕʳ ´ÄIDšÄ-û A–e”ã¼yÝÀ@¬€jÇöþŽªµ¹$˜xU°]ÛN‡ÖðC¹¼5?gu¨àËY1……”^’é¬÷wv¶¡)ã!ÜÎÁ’¦²–‰!çø!ú³•—!<+°Aÿe€¢À„u ÌF«±«2£[A«?F!pÚ #å=ëCñ ƒLÜÒ’VW¶CUæ,‡°ŽHHD¤°•—réPÒ8®m¦¼M§ü{=›¥l ‡”Æû©ºVØ`=p­†–-›‹Sþ“L['5Ì9WsñÚ–)§ ¯¹ÏÛE'(¬µÄRR–%[[[ôRü|Ç¡ Ãd2AàÈ’”<Ï}Kæ ‹‹ŽŠ'YN!#M£?¡(KÃÂB^/öãx¦b•o"„D*°®@X¤Ï ‰Ö%RFõP0IR¤Šj¦K·×©Ùòž=/‚HD·Û#É&ÇCžmoñ‹_þ3·®½Ö±³w*BHÏ=¯@ çó›SAÑ.¨nœ >ýö´ÅV f•S{Ákö‰ª™@eŽ(‰Qq„W`ø{j’‡A0vh`®*IYä…{58”Cš$t³ãágaçÅ î}ñ—.^dñÊe´.=¸_‡YC¿ßçæµë\¼x‘—;;Üüˆ +ë,õèÄž¸º¸Äùõ ¶_¾`÷å+ï|é"½…>*RµjÃ9Gš¦,,,°¾¾ÎÃ'[LÂà¿^ó‚—ѶÞ{§Ã6O¯µ_%Ÿ§mƒSYæí'Å„1)‹ —.\`ue…ýÅ%Êñ˜ÃÃC¯ H|NJJìƒÓQ` #«kW†uÍöe‹ýYßÛ¯ù<³C)› “S{„”8!½“ò¹Yr9f’1Ö`œ†¨ƒvp<ù¡0ÞÆ¦Z œñÌqm Ý~ƒ½c Ããco”„õ ª£ dÈ-û»Ó×A¸ù `{}>Ëž®mÅ5\ãê|-¾ò¾üUˆ>”)åÔšʽ^—8Žxñây 6D‘¢,½5™5†ÍÍM„›h2ãû#/§°¨ÐHD Ôù:ØaÝt _–Þv³,5#çóÿ²,£,JÄqÌd”3<6èÂ÷$„pèiàyZe4Û_4ÿ-O³öÂ÷ƒë<|ô€(ö¸N'c4Ö{§å#&“Œó)Iìû^­u ÜkãïÙê™)µ÷bDš¤ H“Ä×S¡ïdnÞ¼IšeOxòd‹ÿý÷OšùÀéçÏŸóé§ŸòŸÿË®ïûñxìóõÂó×6X¶AeÐäó´H_¡?¶:dµ‰%­©úìÂ'6‡>×ß_yž7.eIš†¾É9ö÷÷¹pá‹‹‹ñøñ#Æ“ ÂÁ›·Ø8wc >`ï`ÿøÇµuar§‡ïóªév ëÙLcãè¿Gq+=MÔ9.ì¯UÉ;6•1fÚ”µ@ž-ÛGMšöBñâÅ &ãqñöÛo#¥dww—î^½Êææ¹`c(Èóœ8Ø ®YO+Û%_e­O«nuak÷gí™Áìs3ÛÏTÏ—÷s–eÞ†RHNN†rùò–––üó ÷ïßãéÓ­ú³  \¾|©VóŒGCîÞýŒ$Žùîw¾ÃÒâ"Iê oÜŸÞ€ oŽ7Ç›ã߯1''ÂÛÛxÛ¡N¦Y\2$INY qäHeèvçϧlosr0æðèuO :Ý„Á¢baàȲ)s¢È—M6®ýF‡³¼ïg™Hnf3—¢ z¬:–ª8W‡·¥íõ£ÅtòlÑ&äRHÑv4Ãñj Ôöa®¤{•íLå(¥¨r–ýÏTÌüdä©}kUåÝë\QuXá|(›ôïMLéq¤N©”T-VD”)C(© C‰(N<'œG%«ó)j–M;oBTºßÚ…—–êdÚÿXŠFá –†P]3ÁÑ×YpU奋ª*ܱ¶¡r­‚Óy«&¼¼¥ô е[1îDºÎóíf*wCÔàH3¤ ®h¼¹O7ÊbJ*úU%úuÕú}Æx;‚÷ðãHùûdiu™n·Ç³­'¼ÜÙáêÕ+\ºt‰Å¥+++rçÓOØÝÛÁº!,ë+ÄIŒTmQS”ÆcíY®º¤ÔacKP]5¤®.nº'iý9•RH%H’g\Èæo·²¶¶Æp4¡ÓíRcþñÿž_ø!Q³ój!Z—t:ÖÖ×X[[§È ÷î? K~öÓŸqíêe” ÷‹õ»GGG<~ò”ÇŸ°ûòE‘#$XSÒÍò§D¿ß €£©CB}¶Çü0ßGáP­+ó†ˆg ‡ÎJUaÞš_…*Ö­GxNªæ­ „}ÕÊô@Kþ_ÙÒ´ñÍ“/§MÂÇ*RdYæYåÊƶ½qÛ̼æéuÃÈy5Ì€ óY×ó=â§_Oœ ºW¶2º,ÑEIQþ™ŽüPÏáÙEQœ–”RD*ª ÚdbšpO”Ú3“+õÁì¾[­¥•‚cžr§²>jþ\=Ø ü~œf˜Ñ¸fègY§Vn´Áíy•Äì½×nBë}ík‚c"ì'mËa÷ºŸm‹Öñ×® wH07ÓcÎõ?랯ȶ‡«UÍE•œ_ÔMr–¦ž$¨.ä7©ÀtÜ~þœÃãcºÝ.Nøá‰TžXÑx† NN†üæ7¿áܹs,,,°8X¨ólt•R±ººÆ{ï½ÇΫ—<¸ÿµ…E6VV¹¸º³–DF\»t…»¯x¾ÿŠÏïÞ寭›d½n`ûÏDZ>ÒÔû‘y²½Ñ†ÈZdP7DQ„)st©gÛÅ×XÛl£HœbÓŠº~x…Q¦''Ç<}þœ¢ÈÇ\Ø—.^@E¹.}=®½§~‰£Ûï7-xËXQõKQšÚj¥ÊYR*ÂG—xL&²zÇIâת`ñ'•bRä! ¾Éó³ŒlìĪ}j4‘Æ)=¦cÊ,Áþ¨"UaÃuž¤’Õ G ÏèÒPæcÆ:L)(sW+ÿü \"ƒ2ÜbjâM3—S@üž¶fs»i;š@Œ'£ºŸLÓ„R¨ÈSTT°>,ògýÞ°4X¤ÛípttÄp8ªUŽ À4¶cU¶ˆf†µ*¬SÕz,öשּׂ<ž­ƒæîY¸Ö–ípØ95¹{mýÔ€ îTÝ-¥¢(Jööö9<8à?þ‡ÿH'¥EÎç_Üe2™„\‹ˆ¥åeÎó KQ–ì¼Øáàà€ .ðÁßaii©þ,EQ°Ð[¨÷¶7`ÛãÍñæø7u4ù‰~8)ÇBÊ\ÓïsýèR2X:B%9ÒY_Yß(N?×”n‰¤“vŽè/Ä )ÝNA—Œ»«ÉKÓlß4#¶š«ý,]˶¦‘K‹PTT›¶m ‰ô!xJHœ-=òÝÒVT~ÐLí·Å1Iq2O±ªf­7*IèYžËArí„Ãàm‰„’˜àu+Zþ¼õ¿WÁÿ3ü­©d•B¢­úÃ:bYy]ÒHú¢¨¶Š’­÷"œ ÐeI¯Û¥ÔáÒŠú<ÕyÕ¹ùBÞœp!`64x"¼_é¿çð‰lƒ4§B£[±á¥t‡,ÖÃY3¶$κàÅ*j{© ìP2ÊS¾éXR‡¦‡ÁߦÑU¸§ÿyÿšMªÃYy"²V¾|!שaš’Á"Ëâ´Å”%ßzûn\¿‚(øÕ/?da¡ÃOþôÿc}uÍ!gF...°¶¶Äp|LiJþùŸÁîî1«k’ðÙU,IU†ŠbŽOͳº45øäÕ<¥5iš’&¤ŒêsP {ªÀ0š¾9n$ëIqëÖM&yÁîÞ.ÇGCLi)KK¯×GЧ?øþwy÷½,-/1:)ÙÚzÊÞÞ>ÿóüon/-a­ v!)½NŠ’°¸¸È¿ÿ]z½ k ´É1¦`ÐÏØX_ ±¢Åhÿú¶nßÄ0bØ0wÐí¾Ù׬dçy^â÷²@úCø[­×¢eR5j᪠‰”q–% * #[¸S 8kìüùœ¿³²„ÎbyÍkÈ^§9eÔú²•âñãÇ,­,ÓévÐ¥gaK!èdiœ°¼¸Äæú:[϶)&9qš!•› ×eé‡PÒ×E¶u N©Q¾ÄÆÎµRHõ+L'$YF'‰H»†GG<ùвÔXí(ÆÇ'œŒÆLò‚$ŽZ˜FéZÕ•ÅXEQ‰êÚ ï¯²Î‹ÆàÙ"¤¿n‘T YQcNŽKFEAÃ…ûIª¸þ:Ïý½lI‘’nŠÆ£ “ј$õ`n¤”÷ÅÁÊιo|ßòÀ§Q_5f¨ÕÿÂ$šgü‘9Ô<çó×—8Ž “œ“““ºFwÎyàÉX6Ö×xëêUF£'ÃyY€ V§Ö²¾¶ÊB¿ÏÑá¡W£9_ƒ;S’ X,òGßÿ>?üáù‡ú'ž>}JÇ”eéeç°þò£­&ISb‘0XX@ Áh4b4á¬àñ³gü·Ÿÿœ+—.c¬áÕþVzIê3I¤ N½X'µÚ¨Ûí' ÝN‡4͈¢¨¶È“RyŸôð 8gë@xpD‘Dª°.Z‹Õ%‘!,*\F+ÁIt´'i­‘VÒ“ Kd úIŒpÚ+2dãïÀ[+U™F•š6 {ƒÖX¬ö/(ƒZP¯ò1…¡åzƒ öhm ˜é¡èôú_ þ…¨TÙá+¨DtÒ#)Š‚bâírãx: ê¼S–¬¯oÐïõ8wn“Á`À½{÷¸ûùÜæ•ˆQµ7jêyÐZsrâ{ƒ=öÑáÞñà²ñ¯Uyá—Úûù—%=äÑ£ áçóßùÿëoYY^bÐë²²²Âêê*ƒÁ«Ë‹¬,/±²¼B¿ß'MS@0{à5ËbòÉ]:Ò$E(KY”ݱյŠFY‡óº¶*2Ã\M¸”(S–Ž,ër|xÀÞî+®_÷A×»»Û<|ø€(d–\ºt EœœóÙgŸòî»ï°Ðï ‹Q ª0gäæÁ°ÙÅ;ÏIE—¨÷ƒúýYQ÷"ýï±µšÔ›ˆZÁáªB¥²bzŸñknU/Ë`ugÙÙÙa2ɹqã&‹‹‹­yñâq³°°0¥Dõvšþ3Tä™Óöé}F æ 1}ß;gglE«Æn¬“²±*ÔmmÉ4ˆÇ™ ^õzÎÂÞî.Qqõê•@œ¼zõ’­­­Z=ª”ââÅK, ½}š6F&°T¤q‚À²µµÅh4ä'?ùú=¥È‹Âç0Ä e©‰âŒ¥¬ƒ×øaQ IDATTŠü æoÿöçŒÇPjK’EèÒ_L£!Ž;L&ÆŽ;‚×|Ø gA‰ %l4‘ŒJ†`Ïæ©XSBhЉ—;áPQ‚R¾HžŒ ŽÐ…!K»!ɲ a!ÏÇ<Û~ÂþÁ+^lï{¶daxüh‹'Ÿ¶˜-ŽXÑ%Y’²´4`cc…ŸüäÇœ?¿A¯› 0xŠ“ÅYÏ “!Øö¬<…oj˜þu˜ÿgYîÌ8~K£šÕ#Um‡ãÁ#9BW~óÎÚׂ0_w¨û‡:¬ÞZMH^zoÃðLE1Iš‘d)*V5í.fñí¦ä,ÆÔ— &ëç_J¯Úšù÷íõaž­Ö™6.S© ÀgìÃñ¡Æo á,BxÖšRÎxl)E¨…áŽ1ÚûÐã™Nyßi£½Å’Prº±“~ˆ])ÈÎ Áž7¸«1 º,GÚ`­P>ÌVL5̳@}m­4£ãw¨2æ]#×òÉ>ý;Ýœµ^6Á·ÕDÕDËS×ì=P]ÓJ™P?y-ëœúó ±iDµþôC§4¨B†Ã‘Ïh0šÂº,ó–|yNQä!$>°‡í>ä—¿ù5EY°¶¶FQ–<~ü„Ï>ÿ‚ÑxÂÊÊ ËËKì¾zÉîî.¿ýè6ï¿ÿ>.œ'KS¢¨TCšóçÏóÁ·?àî§ŸñìÁ#žî<çâæ96WPQÄúêW/^æÎçwypïw>ù„Õõ5®]¿Vï'2ò~ÛYš²´¸H¯Ó%coÃÓz&ªóÖlÜW¸öíç¾ÚÐ`¢RrV¬T'‚EPŠˆTä/÷ö9<<¢“dá9„ݽ}Îož£×ébtY¿®R2 ìük¤µšg:ú¹±MjOîìÚa6ˆwv -E+’¹_ñ¾ãÄ1ýÁ€ãƒ=JcÐy1Èî¶,qe ‘¯„Èð ç“‚|2¼%ˆ• âÄÛ~Vù&î´ªaêI›b‹¹ª×±«nª~óaÜÍ3,gmYC®MÛvPœ¹–¸3W˜³þ]ûYo鱺ºÊö‹çloo×Zžj-ˆ•bc}ÅÅ}ôˆ££c? —Ê3¿¥dcm^·ÇÝÏ>ãÅÎK?hΨ[ËùunݺÁòò"¯^ó—ÏÓíõØÛßggçßÿÁ÷ÀZÜ¿ÏÚÊ*Røpjg,£|ÂþÑQ½¾|tç·?¹S·”RDøÜ:Ÿ‡äêÚ¬" T*+¿Ï(?0‚8„ª&ÁV­Ûõ–RišŽ^¯ëÄqôº]o˜e¨Ä+:‘9d!ãÈ{ë§i­¤ÐÖ÷<µêQkHÛ²R›°NYP^!‰Š—J†þ±!#Ø@o€GSj?œ·%T=à­úÂY áuýmµþTÁR6™Îúa~µGeŽ1:(¥¨*ct´m­WR]¹|‰o½ó.i²—Fcîqoj^õªRºiVxU7¼uíz}mÇã1d<3™ä OB¥)ãñˆñx„µ†“ƒC–WÛÏ ÎË€~¯G·“Òï÷Y_[ãüùó\½z5ØSiVWWéöRž?Á£‡Oé/,°´¼Àù ›¬®.“&JºVŸÛÄÊ[רÂ*¥¦2 „`%IÜ¡È'|òñGôû}6Ö7RqïÞ=NŽÑºäÒ¥Ëܺu“8òvgÛÛÏøOÿéÿEIGQŽ‘ÂQ– ET€FŸÎíjâjfô¿*§GÈš !Ø2:gƒÇ…lÑRæRg ºÚŠÌÖ‚•RŠ}÷î]ž2™L ,“IÎÒÒ2BÂ`iÀ;oßâèèˆü‡ÃÓç™XS†¢Ùt´vàãÒ1yuÄ˽Cv^ðí÷ßå§ú#ú݈4I<à lú´ü£Åë}°¿6¶[ Åk³Ú¯õº€Ê³¬UÚõôχ<—0\„´Â2žLø»¿û»ZV^5#®0uÞk˜*+†ÚúaÞpýÿÞ6W5`Í2ÓÎÇI²”Á`Ñg÷(…¶Æ¯^AÚîZ>¸^AåjÛáNº×k§µgT•  ¡!ì>د„µ^Ô†é3Y!"ΈŠÇæ¦lýü0ܳ÷T’ ­Â0žÐ[èû}-XCUVEÞn¬Fy2ø‚!èÝú t§”ßg©¼“uæ:í‘RyZv0³}³^ÔÖÚÚÖ lÉ!…1È(aq°X3\«ÐvQÙ2I)kÿ¿³²pæ8³ ¢Ùq¡kýÛ©FÕÍ/œ×ع¶ÕAéÁ†=…z©¢g}ÛgUÕÀ“©ÆyγæšðEnù¬£ IœÒV› ᯵Š|w5(P!dyÐ퀒 Ì"ÇÇÇüöömžno'>`öùó£âˆ$KI;Ý^££#ŽŽŽØzú”íϹzùJÃε^]Å1,ãòù |÷½osøü%/^îðê`ß[zÄ ™ì°º²Â·®ñá'ññG·Ù8wŽóÎÓëv@6YPiì³#²,C_ë8ŠN=«X7Eà`*”s¾¢Ëµ¼Â½™›ùW íB¬,5H¯~Íz=žI<ÑSHàèð˜£Ãc–Sï±²Ã!YÒ4#‰#k;K™ç¨4ªeå—ù°3 #õÏU¬hÄéÚ‚Æø«±C«Ž­#SloáÑ!&hlý­mNc M.*M*ÜëRÔÀ) ÅxB,#Ÿ `mH‡·W Ææ d§CV§ŸÏš=U‘Pª|• $—þ¯Ÿ¥Öð_ŠÚ“ÓÂÎùl°“Ö Z¡«gµ(ó×›)pa®=T@.•¢Ûë±ór›Q> ö” c-*аV#„ãà`gÏž2O0¦é”Tl¬®!€½½}â8Áº‘¿‡•Ä•šõÍ5zýŒÃ£}>|H§Óeyi!Yœ°²´Äøó?çáýûl®¬ðG?üº,)JÍp<â¯þs¶¶·QQĸ(êA¡1–$IÑÚ0q\‰°þg ÊÙº9oþl'T0L ?¯æ)¬µXa§dÍù¸À϶zñüÝn— ÎcŒöLuÖ8¤LØ?8æöí/øå¯osp|D^8g‚ÔSòüù!Ji–{¬®-yV‰J89‘¦E‘Óë§5{„—GWÖ+QX—QxmÏæòÿ?ò«˜m’““I–€>ñ’d‹5×ä˜TÁæHåm`Ê1¯v÷øŸÿëÀÿóïBâ$Æ”àt‹ýú‡–¿NÙ0Ë–ÿ:ʆ׬˜3ëDk #eYPJE5ûxö™k&9óÍÂÚ`G(ù—j{‘È«ƒ›5G©ÂÞ|[ÏP/´}éæ+GÚÁÆmvº¥PWÃ’Yÿå¯zŽf³‡f÷Ñší.¥·ôK3l1¡È'tºÎÄH%êœf윪ëEùd‚1SdÖ¨2´³h£)CŽÂ€Ö¦æ ð+¯tÑ0\ÛaÖúöWkƒ’:€’q 4T¹HSàt[±6žPä9“ÉÅdÝBIò<çá“'ŒÆãZÅÖíd éõûH‘di'ãàà€>ºÍÊò2ç67}€§”Ä*òJ›pM×VVùöûïs÷³Ïx¾ó’»îqáüyRåÙΛkëܺ~ƒ/?dëÉn߾ͷÞÿ—.^ “ú3&qL–¦þï¬c2Ó H“V]X ÂÌÝâ¾´îp§žˆ M.Î[†Ô¬|æd4šµŠ²ô¶a8éœgWVJEQê)qÚD`S¹jz/Óì£3V›ª¶ª>kEĈT¬“ò`Y²Æ~Øh ÖhD$k[ ©‚%Žñµm™yî­ß"Õ¼ŸEHj¿÷×}67w/­j¾¶jùT´pu ×x„Ÿöûþ2uÌ©O0ó¬¾î#,¯,Óô¹ýñ ´.Ñ„r $E1¦›Åll¬¡Ë‚—/wü~.U zº8 ‡Ö·u–ÁbŸ·ß½ÅÒÊ"w>þ”½Ý]‹+ä¹Ïy¹³Ã•+—X[^æÓÑÞŸKΣƒ]ÞÎË—L&9ÎÂh4!Š"´ñä%©¥6õëù|é‰ ! ‡µÆƒ:RD‰W"´rЦ×Qß@ZcØìóÖʲ¨kaX p²&` ð`‡7ø¯ 2Bx{ÀÂr ¥-Á;yLIGÑôHÒ‰d<*1Ú¿wÿ[‚]¨p ¡*€ ž¸×ÊEr©V.ÔjÀö:c­g³·×¤ ÈñV5µØØÆžÚ•æÙðU{µ­KºY‡$ŽqÖ9Ábo÷Þy—Kç/°·»?µ–Tù^íè?Sšx Õ$’ñàÁ._¹ÂÏ~ò²4¡, ʲ$çìpïîçtÒ”Å~Ÿç–{}ÊɃ@ ‰“ÆfÊúËbB5#0¥!Ÿé89<&ŽR´õÔ ­5û“CöwwÙ~rŸKçWyï[·Âµ,q«0ÂfëÑWC¬¾ˆ˜–ýý=~pím”TðÙgŸÕùßùàÒ4¡È'|ôÑoYXèÓÉÊbŒ3c&ã‡H ˆZ=SÏ/l¸G ­¹}ÝZ5;Á?+<'Rz²£­5QoM,ª™†¬•ÿ¾Öo© 0Á:Hú÷cx2æ—¿üN–qns“Ë—.#…àW¿úãñ˜wÞy)Z{ ÎÖ$ÃÊÚÉýÅ)²epúlàzá{Öº6 !ÝõÌE‚ÃÔuŸénŽ‚oj¿´,*iÙ/M+×êÁ1™äXçxøàº,xûÖMºÝeQP–¿úÕ¯<¡T)¬µ\º|…ÍsÞVMJ¶Ÿïðdë)››\ºt1 &ü¼©ŸéÚzêÍ4òÍñæxsü«Ç\åYk§ØñUA¤uA–&D2ÂTH‘ÆYH)XÑF#?¨QÊ’¦š8¶ôú‚,³à –ªòk{ÔP—~Ìĵ†ýó†j®ö4l‡WÒwju¢Mè’B¢„ª›)V˜iwÚŠˆ*|tÞТR`qf¨uÝ"µ­ô±†Ù@³¡;Ñ„n»Ò¶ül3<•’$*¢|úø ކ>§Ä˜Z¢*eÈcp£Çqùò¥ÀÂ2,ô±6X}©k}X¬tþÓë6ÙI’Ç>P0‰cò\Z„3Á·7FHÏ”Žyöì){{'(Ù!Ž#¬6Xã ´ápÈèdÈÉÑŸö9ÁÉpâCÏ„­Ïg &yNYêà?ìmqÒ¬ƒŠ|î^cçæ|Æ) ¤J5¡%nF–euu§YÌ³Ãø¯z>ÅïÝ^¹-óÍRn DªmfeȨ© “×Õ8•ÀNÉ`éZÃØ9ïMŠ©ûyžj°ýl: 4šÒhŒõÙ?qqrtì„X«RÈ:>@ÔXKšuˆ"¯N,-Š8‘QD§×g4žðdë)÷߿ɋmOŽÉPô“Œ,IY,²²¸ÄÖÎs^¼xÁýû÷Yê÷ÉVWˆZ¡`»béšR#»­úÆÚ°Î‰×Þ_ö÷m«Î ±!ä<޽•M°+Q*BD‚$€Ö8&¬1 Glm?cee‰ÅAŸLÆõÚUÕ>Ó Él XLj­k–+ÿи÷ÅwHkëç^F1Q{¦­ðDjBëÎhœÖˆ8šRE%YŠRZŠ¢àäè˜(ökŒ’Eg‹~½µól{»êÙõ7×( dËdºäÿF×öÙõ¯Mì¿v‡CNNNêÏRÙÍ%±¢ßëråòeÆã»»{a¸/‚•‰da¡O¯×åðð€Œ÷Ë ŸÝ’eËËKdiÂ'Ÿ|L™(!ÑyÉ83™Œ¹yã:BÀòòËK‹h]"ULžœŸ°³ýg@¢P"B8C¬¢š— Âú%Cn‡hÕÕB8_†<4ö!˜ÿ8w:›J…L9!ƒÍ—C iw†á쇕Õ3X‘¶,ß1 bÑV“›‘ªnˆ3GÚè,Ä –z”eNY”ÁÏÞaJC¤‚%j"zELaªÎ„ÑÖ¢u¬j½’³¢¾·fí«zLÊÆnª(Š™g¢½¨„ÙçUUï9J¶!æÄ*ÆÚ“èdqÊÊÒ2q1 JN…@(oi¨¤'sÉ`¡T%{¯vùÕ?ÿ‚o]¿Á»7o°¶°„Ñšh%f´ºOØ~ö”çÏxþ製=ÏC×iMÈviTû6€uï¨BÅ ….‘™¿î¥±X‘kͰSê§%ǵEjÕ4ç¹D½úï—¥FIªýèÑ'‡ܸ~²,Ù}ùŠƒý}Š|B·ÛåÆõë£áˆ½Ý]º™W¡ù˜ÂU"Q+ü=&+k99m»ÛÔ1®eÝ×^·š,&k½£ªJêµN6.mÂdU »ÚŽ©q0Ø`w§ŽNxüø1J)®]»F–eäyΣGÈ:)W®^ᎎ=œ&¾ÚžY:•#Eƒ ¸ È<Ý7´•§#¡ÞyÝš:]6 |•âTehTŠv%%·?úˆn'ãâÅ ž`ª‡‡ìíí"XÍJnÞ¼EaëÅ8çÉ“-´6|ûÛÿ?{ïÙ,וfg>Ûœs2óz\àHÈ2l£uKmÕÒEŒf"æ'èëü©™ù 3óEÑŠÑ„º$MOwW—!«€„w×ÛÌ Rv•¤¾Ë uŸÈ¹ÅÐwiHÛL‹î4„Œ£Ü–Dk´R$JóÑíÛ$™Ä”UãK*…曇Oø«¿úkîÝDe%Bj¼—xŸYëÎVàùÔr`NYY™b*Ë [ Ÿe—µ¡Á©Ê*‚ÔAù”ç9ƒÁˆ<ŸBTѦiPuhå‘2Lƒ¤Ñ·7I™LÇ8ƒÁˆÅ…UGKà=ù4ç½ïñôÉSŽŽ°ÆrVN!%e°³êØIZ+‘$IHÍgŸ~ÌŸþÙ¿`:=âÇ?þ{~ñåööv88ØçêæJX•„ á´´™%o ûþM³ÀhcãQÛõ¼ û ¼9+ßÖoýN/e}­˜ýù58öm òß$8Ö(Ü¥DÈe0\Xd´°ˆÒIC¸t×¥ÖªÀ_ÃkwœŸöÜÝßÏï96q²ã;ï:^výëÐf7CpÔ¤¶TŠ,Ë(Æ’²9 ÎØÐb]äu×Ð:_ǃ³„®ÿ¾­!­ƒ'vM ÔÀ]cÕ!ê?aMºh9UŸk¢iš6@rýÌÏ Ržg}#:V€—¾¾þíß¿ž àßÓ'„Zµ_· áp9)paýŸ(Þ}æ;_#êgdÎs§´jša×~ï=Y–¡”¢È§@* ’4 6_±æXXX`aa¤I,Œ² k-i6À;C6eÆã _ý5|Íâh‘Ñ`ØxÏ×ÏŽuŽÕõ5î|ö)_|ù%ÇG†ñú¹5K[+EðUI°ý®GÏØÀ]ÜOéå*oÛ,?ëÙ}½Ëßœý CBº‹ l¬m„|¦¼@ÈŽ+))ò‚4IX_[ÃrL;ÉðäÑcþ¯ÿãÿÄþ›Íï}þ9‰Ò¤BrVؼ` 4¯ž¿àäðS äo,Œ7ïûSﮬ•÷ø8‰œI͸¨pÖ"½#Ñ’µ•e®n^ ×¼™jhßuï|´ýwáN-, ÙtxÉÞîkÎÎN¹zõ ¦ªøê«¯8ØßGiÉ{ïmsýÚ5ʲäÞW_ñúÕ+þìÏþˆ4M€2±â}w.ØsI¡¢ÕcC˜×vë›°>©žÌN‰“æ‚•¥¢É! b0×Á.ê·Q!„jr°<áMSÅ«—¯(ŠœápÈïÿþâùóçìîîrãÆ nßþ0’²:9¢%q¬µ¸ïXÏu§´g{7“©0ï\:ÓÒr&cÁwö:ױΨ-¡z×O”ÔM¦Jmq\çZXk)+Ë“'¹~ý«+ËÎZ¾ùúkÎNOÆ¡4+++\ßÞnÖši^ðå—_R”97n¼G’hò|l*e°tÂw2ß‘ ïŽwÇ»ã·&]$~˜V­Ñ÷ ãsÈ'p~¶ò 4ÈJ(Rôl¨8Š,Àw½x¥ð(eH3ËúFÂ`°€Ö%Žâ×{ýZyB[ˆ5\ËëoಣD¿Hüˆ™p¸‹ú&:¡ržñxÌÚbÖ|†7YâÌS¤öÉQqå‚푘£ºª€yäF³ Ç4=šæXd´(ÌŒ-CÔG¡›yV.¸5˜Xwé6»mÆAHiT@uXˆï“N½¢¹núeÌYpÕ=½&Z5#ÿ]P#L˜ÔÏÓMükÁ>½&Û‚®#ù›m׋w &.*ì*X¾­Y­ßM[¤ÆV­>>úè#îÞ½‹ô–Ñ`ˆuEðZwá%gã)ÿñ?þg¾yô㢥PL×6Æ4@¡1¦ úrÖ£‡)‡GèDqukƒÉø„Á %ÉBÐ{ø^I6¶ƒÁ ñ&24[Z§Eaì7ÑaaZL0¶"Í2<’ª 90W¯nr÷îglnlò_þúGÜúàù¯þ’Çñß~ô_xúô)KË+äUE==[‚MàáÀƒÁÅdÂÂêŸÝýˆíkh½ÆÒBÆÁî{ìïíâïÜ&Ñg˨¸¬B ..LMü ³à—ð$‚èÙ“]õžÉàðýÿï|Çã.’ht'z¤hH¶Y/¾¾€ëý¾ ¢¡n<» RH© †¤i†Jt8¨‚°—RDPRõ×çΜRýöö|ü;× ü^ÙkxzaÃð ¯nOÒÌ›è˜GtÔß«Th&ËbJQ,8GUU$IBUVÍ××ÄB½·ÔB}¸ëö$I°:ÁZKžç$JöÃ`éf¢Ò¡¤îLÆóöA0¯Á¬Ï'IR–——‘:mlâf›Ö™ÐåL°lãÙ>Ôˆy?ï;¾—­Ó~NÓ,: t³å4¹ ¿ySJ2*I{Ÿõ’g£©]:ï¤ªí»ˆAŸ˜ÐdOó„De8žæŒ—b¸zw2¢%ƬsäyN–eÍù.--1O˜Ž'¼zõŠŸüä'ܼñ>K·nÅsˆÂ†ø™¸qãFÄ}úœo?â£÷o±²¸„v0ÊÜܾÁæê:?ô€'óèÑ#®^½ŠH’0I£$BJVVVŽFœW%Ó×ÍtLoÚD\°}›§ZoÁ Ù¬“Ýu·ûÎ_T¨ö¹­4Í`Á“Ë1FzŠªäë‡ßOÇüÞï~N–&Mk÷¾õ4r\Þfmíd_|VZ[ yûP}^I’„0è¨ÐF¨F…~D¥ýÞªªHœk”¼"*Α‚l4DJE>™2ÉFÃÐC4Ó?o>Ÿ· ·6^ ìæØiÎÚv§’ý%ûô\‚avÍöÝšo–8¥!¤r~6nTÞõ{§”äÊ•+H)yúô)yž÷Ö­W®\am}GSƵ><Çam¿ví«kë°³»Kš-†ïM¬÷¬¬®ñÞ›¡È²A¶u!o¡(+^½~Ô!'! B p¬e|&j2T:Œõ¸¯ §DÆL“Ó@œè–µÀÇ·åGóœ{¢xMâ…ïY³ô„k΃h÷`÷ípùEP¾Î2ŽijÈ$ÑÈT ‚¥ÕŒÑ’&ã§¢ˆÁØ>܇¬íï_ýz>Iò<¿@>‡wŠ ûÚ<‹Ìª¬:uL$J¤èÙÁÎZ8Ϋ»ö-œ”¹á¯ÿú¿2T ÂÛQ+|´*ª-û5ÕÁþ>I’Ì%ɳaÆ/ïýï,:I¸~õ*Ö¾ùú!¿þšA’°ÿò5Λ-¡dÈ„®ÉªRszw_[ÖÆL¥uK¬wí‰e¸.ÛÛÛloo·5I׋¨×ƒ^|‡³lˆkyñâŸþ9Ãák-;;;½žkii k-Ož<¡2ÛÛÛŒßx1Ÿhlk+¥þzÑŠ]ºøDob§®'Eûßõ½ÐµÀ'6÷>ZšùÚ‚Ñæ(D’¥,}ƒ‡(•çû·KY¬¯-qõêÕæüŽù×ÿæ_…ì W¡´ÀCÁ&×HÈ_Va¤¦´{PtD¢½>Öcñ­ö°—á(Íuª§z?«íçEÌs–f*È9ÏÓgÏ9>9àŸýÁï3dXÖ´çÏŸszzJšfËËËܼy“ÚÎíèøã“#G,.ŽØßße0̨Œ‹Ó–Ô06ǺâÙðîxw¼;~{ÇeJøßØï뀟5#<ÃÙ9ŒO$ç§W0&Aª°Èz¡âXBm#Áß‚X. „@ S²áç+ÖV‹K *©5yãjïùGYˆN`ïÛX$xïI´Âv•"þ¢Å@ ÆYgƒåÄÌÏ­U¡ï ‡Ã‹` Rˆ´¨šz´_¼›Ôû}[ÐCHªiМwx6ß²uY‚ïªýÂô"Àƒ#þ>Þ—®ËÅf­BkÀ§áè7 ó¦?Ú Ë8?!¢ï¨w=5JÝŒiݸ|[¸9ת…ÂÿrÍË ãôB÷¹Î¤Â¬À=ø‹×–r~Èò° ïžç[2Œíy¸N–D{­jU*Æ`LE’êh‹¥(+ÃüSîÝÿë3:†ƒ†æË”A€ ƒŠ»µcBîEY”ePH[‚á(i¦P”Ô  xŸ)5{{‡xÉÖˆ$Qã¢'-SRäU,5ö÷Ÿç –GóÅÏ¿`og—T'|óõV––ùó?ûS~þóŸqãÖMþöïþŽýÃ#*ëZEY$ì”T”yI¢~ø½ïóƒïÝEãÞqíê>»ûÿÏËìá½Ã˜È)Ù·Ïó|ÿu­ûC9¿X™YꦪxÚ†pÞ•ïdÁt îðó@iRµúÉEe”ï â[Ý—‡Uÿ†é™Þ+W«´ê&Ç8¦ñ¤&ÍÁþ%6g¶£¶¯ÕMNxp¶™$骢zª«™&gv¾QvvÈâ!c/ì7ó]³!ÁÝûܨPgÖÈÙ Û4Ë(³9€eUU¤Î!l?#§ÎKP å0rÑ'[D¥f (YkƒÿvMlÈv,½ÕÞ|49 .\ +ÔZ“¥ƒ0¹7 Ø!Ú}cf²AtíO:Ö‰sŸ×ïÒ^ö.½˜àâ– :žÅ—[Í># Ùï|Ÿtp¾‚+gBqmm‘ç\˜ÚŠ6!¬\4÷¿Ì ¼u ‡C–ÖVÙß? *K&“ ƒ…ÑÌÔOX_ëhm°ÃÑZGiÁêê*ùtÊÁÞ<àÁƒ¬®¬°¹±‰ŽÆÝuëÚÕ->øà^>}Ƴ—/xðè!£$ãÚÊ: ÃW×7¸~å*_?ÂÁÞ>â½ïsýÆ ” ÄÅÒÒË++¬¬¬pxvÖLæè$%I”’þN&õ4Ÿxã„ØŒVc]°_êͳ0£PòÞÕHSï‘ žÃ˳ßñŠ¢ , ¼­HTÈ] ‰a]Í«*ì#ˆ&GÂÅÌ,c,Yì–|´FÑrÊV6Ø¢%U^„µY©0üÆßÏ43ßaïý§¸\œÔ_{úkö·ö.~6D¾w7šûD=Y]O; IYVL§SNNNpuœuëÊÊJGGÇ!ŒÜÉ0™*Á¼µµ…÷ŽƒƒŠ¢hHBï-k«ël]½ŠRšo¾yˆŠ¥å%‚¢,Èóœ;wî°¾¾ÎtrÖXõ(,6÷÷÷yòä Óé!TCvè&Ý7{‰­™–dJ¡DÈó"XF‰˜¹&£¨CxzsïâÂtšèÙ§¸h{WÖŽ€¨­Ý%àe££ûŒ”¶bl+rW!Å`aÀ`1e¸¨É†ŽÑ’B‚¨(ÏÇ¡ö5 ¼Ž½H‡®‹%Í„³ŒÞü²]ºÓÍúRïÿs¾ÆEÛ7×±„¬×íYQś֪ú ¡â!p8A9)©Ì”±xg)m…HB¡Eèù BøÖƒ­Lïó&RQT%ù´Â[ǃø_ÿ·ÿÅщÀ”†|fqi„±SÀ¶S€]0mX¥¬ë\m¦‚UÜt:áç_ü‚ÿïÿF£Ïøâ‹/HÒc ·n}¦»«Šû÷ïq}k‹ííë”Å”$imŠñ³™³kMWá"VÐSÅšÓâ|=µíZUý´ýþÁ Ä oE­u}$•F)ÑX+Ü`ŧÔï'Çç¼|ñS>½û)ׯ]£*Kîßû )áîÝO¦Ó]MúÑLÓ†çÙ!­œÛÔ$Œóa’ ï.\‡Ù:ê"9NÓË{ß·/nÉcÑ›n¨ƒ¶EœŒ’"Ü›PØÏyôèÖZn߾ݻ{{û<~ü8fz†Ã!ׯ_gmm-`"¶âáïÙÛÛáý÷·ÙØ\ú’<¯28IãÐ:¡29*.“ïȆwÇ»ãÝñ[%~Û&MUŒÇ–ɇì.pv’aÍ2Þÿ>+£D„ °À6Å’G ðè°AÚ‚á@°¼jyÏ%h™“¦‚– ;ƒ˜×Šw­¾ípéµm=+cñfm Ÿr½Â¯ÎPÑWÐZ‹èiÖMF=zì…D\ÔJœÙ&­¶mê$²+¬ÕL½Ï a„ïeQÔÖMa[øXÌÖAc!®m„œ¡›<ª•[O·w®ELJ.DK¥.`ÓÍ´h=ÒgŠ(/ZR'nüÎ_nŸÕ½æMàè ùQ“!‚V¹*œh¦%¬3UX¸ß¡°§ žú8# Û0ª~n´¡jTV¢gõ1˜MÏ\¯ºÑ‘m $úFYøv¼\´Ÿr>>×ÖIñ¾Æë:Œ2~¶ÐèyŒ-‘ÒS–!4O'š³³sÎÎÇè$Å”*ªõ ‰E¾qÁÞÈ;‡1¯$½EQ°º²D–Žxòè):å•aÈÅ‚D'ÿ²sAÂtZaMÅÞÎ9ÎÁ•Íñz´*JçÂ5tÆ#ÑŒÏsÆç9UiÙÛ=àÕË0]à<ÏŸ=Ù’õÕUþò/þ‚;ÿóÿ„W†/ñ÷¸ý"¬?õ¤LÓð)B³»µ¹‰ôo RBªŸ||›ÿÝßq||HU–8W1d˜ÊÆ`/×Ìû9AºÿXßæËÆÞ/#f_)Ñ[Ïå…¢ûÒŸáû륔 kÙ‚P€Mr_>¯yöB¿òAôÎÅCo´‘ˆ4Ö6ÞçBHd¢.ŒXXZD%ºãã,âùuíE.ÚÕôG´¹Ô7¿«”¾Ì~j–ˆœýÚ®RºûÿÚÈù˜#$v8¬É?€$MHÒ4„fFÚTU°g‘2^.€* ö-.ÑÖéoè]–%¥1xÔñJÀ@øð™„eó¶·þÙYk1Ö†5­öÞ&^i–5 £óþß'kûC)›É?Õ!<Ñ©àû£nV ßB Í{7/ËLé“åàÅ;÷(9;ôÖÄÝìäG£ÂïLÕDk3•æEYRCQ•d:Á;Oš†ü•hT¢Áx¼u`Ây6Ö×¹²}óó1“¢ ™NȆY^8ßd¹øŽ:·Z/ ͆$iFš ØÛ?࿼LJÞfqq‘ápØ*DxH“„OïÞåÕóüäoÿž_<¸Ïõ«×X_\a!ÉXYXæêê×7®°wzÌý{¸s÷S®mo#•†èm>X\XD+³c :KQZ7À¯­}¾E rñïB=àb&xë»&¥TÈ1òaßiëŸV…,SC:HÈFƒð|+ÅÙù)ž=Ç:N2Ö×ÖF` “¢À ‰ÒIŒ¸& B†Z*êd7 ­KŠºZÜôæ0ìËH⪠෷†ª™XTxa)­Eè$ÌÿÖû°$^Œköy¡ãO‡Ô¬³`¤óØÊ`+ƒJlcqÚžNdjê+OwÐî"@5?C§[»6kºìˆ¢$(cûöTo½O7dPÍèѦ"ôXR)*[5ï®už£ãвàäô,Ö¶Qùm-I’0(Ë’É4XÝ`iìK——–¸zeƒ2ÏÙÙÙ!Ï‹h%¦pÖ2 ÙÚÚàÉÓç Ct’"d…˲äÓOï2 )ò1£Ñ¨}¾…f÷õ¯_½"Õ >Ä+¬KUgÊWÄuX!QÛ£dk!%EPËÆX·V;ÓL`vü,{ÝawªHÔþûõ¾0S-Ô¢ '¡tŽ*Ö¹1L¼ÁhA6ÊÐCÍ`1cq%%’'IUé‚]‰At&úºÖ<‚6›¯Û§Å½HFצ_舭|gm¯ë¹n s[´V³.L’¶ä–oÚlEKJ4Ý(Ê… v%bÖ$ZQ:{‘`T‹Tê;$\°úªoˆüԘÐyë9>:æä褱&•&:ÁÓ¬UeÒµ÷»!^:ýSìÝ¥V(•¢Ó`™OÆ”ÖR•6Š ’ÑÂí÷®a}…Ö2Ú¹™h-˜¥ZEìNƇTš£ãsW¹qóC<’§OŸqpt@e ×®]ãƒo3xvï+ž<~ÈO>dyqÈh˜P•ã˜ù'#!z“ôaѦœ×kFD.ÔÞƒ!÷.¾ì”U'4\J¦“¥ªf:Wʼn²ö¥P±þ ÒZ¤JC¶†Îxõò%û‡|p)ûû;<|ø5wîÜf}}©â¤® ßn0‹2ÄoáÜ ¤™“1U¨:$›wÑ1 àù‹eXWÄLîFpžh¤#)&[A¬oAˆPZêÚ7ˆê¼7¹áÕ«×\¿þׯmG’äøø˜çÏŸ7ëPU•ܹó išâqäù”gÏžP–9›WÖ‹u¦ÙŸ+cðNPäU™“&êÙðîxw¼;~» ÿ< å7Çl´¿G ¨lbÇçpz"øÙOwyöäᯑÉ%*ã1†GÚ‚#ø÷­•ª&ôYIA¦=£Ñ˜þ‡ëL§ei£Ú¾WiŠÄ€Ìa®¿ýTæ‹'; D­2©•"Þƒ5Í7úŽºØ‹Ï¦à³Æ cxœóÁßQˆ. &£ßŸlåfjRvÎMDµõL å%ŠwÑêDÊ M¯ÃEr@DüÞ¥Iüc¬mü‚C¡)¢mT…¸ðwÖ:ŒõAñƒè£Ö6®±2¤µ” JàRZ›–vd¾-¢›B¡©½e«ìšs×»S'ÎG0Œpw5èÞ!¼¯›m±á"à-ÃjKgîh­—„š±å¡xJ´DŠ™\ AÓ4×!ʦDWÊ6C„uC²dM,¢zÖââ’°ñV×({£v«ª*­^cMAš¦c™Œ'Ü¿÷€ýý”VhÃÁ‰D¡5Qal85×Ðj‰`ôêÕ —†¬­/2N“Ô6 ’"/yñâ€ÉØà¬¢,ÂEÅÂ’¤ªr¼‹¾»µ•Š ØÙé„óÓ Z%¸8eP–E$=G‡û|ÿÓ;,-ÐNÎOON±¦‘’Ñ÷guŽ……!W6×Ht šœ±èLsóý÷øèöìî0NY]]oQZ‡€òh1Õ„ºöÀÀ¾õÄwÑ{3Ó)Ýwýí¦º~´o~Ûó®×¢ðA”Rüè?ýg¦Ó)£ár“áÒŸ†hœzúc6Œv^ŽÁonõ`×7Joç=•1¿Tš$ j°>ÛÔôïg­” ¼ï£u`k·vqú`˜½F’¦©ïß³–~³SÝ¿—o=xc®G­Ôk2m IÒH2†‘vS–dY†T ëb °‹ÞТ%w¥ ‘êäºñª×¡²¬5¢R*N”E¢£“/âëÙŽà<&Ú±øf nl ³l÷8ÙîO=Ë;Ù[ç’[\ô 3Â_¥èjK¨KrxDwÂÊ7Ï¥löÉ7ç>\Žv'V˜²ºjØîNUUE¿aª =QÛc1¯AÁp4bcsƒÑ‹ΧS¦yÎR“}ƒí–kÀ­@âÇŸßñZ_][§,JÎNOù‡Ÿþ„O>ù„¥¥%®lÖÖ4{¡’>¼ÍëO_ò‹ŸÁãçÏx¾ûšW¶Èt‚Öš޿ɳý×¼ÜÝáñ£Gìïï3LCÈbvÀêÊ [[Wyðè!¥1ˆ&·Š¦6rQDÒ3ÝlæÁì}­Ÿaá£J-@pøõ…mÀ0”VøÚI´žZJвd´´„R’¢*9:;Ç>}H~÷óßEé”,Í0Q¦¥Í;„YTvzšêœXÎVU~N”ù›&€g¯Cš¦˜4ÃTaBËÙP“Y_a*ƒŠkNtùk2<¯»Œ$v¾„ë—$ •Ö¸*€Ü2ÏQIB¢T'SçÂ’§¤%ýð >Ð:§¾˜¡ò&¯ÓX{a Æ;d98ÓÉÈNfYo–Õ·×CˆeÄAÇ''œžž`âúY¯ëZkÖVWÙØØäôø˜²¬ýZgX^^bkë*ç“sŽ›)5)%ÎÀòÒkkkEÁÑÑI–ÅúÚ‘i–òáí™L&°±¶HkÉMÉó—Ï)«’$ÑLó’,ôÈDë@j u« A©µ¸'®ë2fy4€ovÉõz’·+ÚŠnIÄÉ"ø]+â»SmÖ;¬€Jx ï)\ Ðsc°™$ I :“”fŠÅ£3…NÂ4Çy‘ckê~p¯¿ÀfÏN(ö¦³;ÙJój¥úk\ó~wDVu–]\oñ}²av£à—ñ¿‹6¹1`[‰£‘*…ô0dL‹)C%±ÒSÚŠÊÙvb«“kØÝZë>Ð:²bŸem24¬µXïO'diÖ-Íþ.bÏÖìm®9çz*T‹”Ñ@!¥Fk9…ãÁz²!…`ccõ¼·Mæ ¬Áj/;5\;Õ$\çÅ’$ðÅ—¿ä{ßÿ!·n}ˆ ÷îßg:¢´b}cƒõ&Ï`<>gkkk ªÒ„^Buò½o;áܾ™Æ¦#~Í"ç:`|øìÂKŒ©pÞr>³»wÀþþ “É­$I¢ÙººÁÊÊ2Ë«ËhUƒøÝõÎ`(šõ‘€Px$Ö ¾º÷K÷Y[½ÂG·?"MRöövyñâÿÿû· ï*”$œ_TâÕY†>†=K4:N?ÖÏJ˜66͞飠ÍYׄ:ÌZƒÉº²k¾Ã> Ú5¿©UDÛ[Ç}º}gÛÉŽzÝ’R‘c<øš?ùã?gii™²ªÒñðñCÎÆg)(«’ë×¶¹qã*2§§'Ç<~ô!=}ô!ãÉZ ¤ ka¸çaâ³(òf¡xG6¼;ÞïŽß<îïûàÍÜ)Þo·tÿ•‡ÖÝ&4*!,OSAQÁ,Rú!ME‰ ¤D‚ …b«8Œ#h^`ñXá¤CÆç)Öjœ‡øV´d`í½s—úhËKÁº`Eá:×ÏàB8ê`"ÙøºœŠ~B¯„¼P¤¹Ú>ÅCe+t8]l³¬þFSßõ쓩‰†lhÇüTœ×¨'ºªÙVÅÇ«Eß¶ÁÖ žz /æf®cùä‘Q©ìjñ]“iÐñ"¯—‹cÝÍ9[e£prBb]“Ö7£àõsÝü ߪþ›"µsë­kÇ"åóVÖ7elþD ‹0Æ …ëül‡Ô¢G‚4^ÔRtl-B‘oL$ˆ0oÀ)È–îTLøuì…™A×.Ì7=T×ëQç@ø™q{"8Ñ·º±•“ô5 ž…T'تŠJZ¢Â?¼³î?àþƒ‡ –XX]DJf‘”¦°]ê8j_WÜç RAn½Ázƒ±Ž¢¬ÈŒ`´0$Muœ¦ª¦Óã ã±c8XÁ[Ï`$IS ¢Â:Ãd<—°´°F– ÂSà89:'Ÿ–MV@YV!,Î{’DqçÎÇ|þ;ßgi<–ׯ_QI’â}‚'ھĉ†°¸XVVG¬m.¡AUA–¦Xk 2>ûÞ§þ¿4‰SÎ9P‘lëÚìô@eÃ2/Wí¿IñØØY {~Ú5a)"™WlMKë|ón¸HPÍSC÷CÄgÀá;jŸöÓ*eçõ..‚ë’zÌYD˃ðÐö-2³†w­œÞL–ücŽ®bÜQgý ¦2T6„£K!AJÒ4#IÓ¼ª#(^&3À~MÖ¡w-yÛ]ÃÀ56SÁÞ öoáAj'´.sB IDAT:x]{“h‹A×›?þ%dì9ÃæUÛݧm\ 0v”’=µoˆHFÃ%NË#LUE@ÇaVY10¸¶Üs±9N’¤ §­*CU…\­Aм [E ¬Ý7Œ1h!°Ö´ bÇBOΚ\èmÇOâ]ØW¬u!üšPwôü­Ewš¥ÔHÑ#i{„~¼÷m¨C{íæƒ­ó ë{ ¢_·aZ£öD®•Ý1ï²Y¯k¸“t©ÓÔ<ïíî;U¯ 4QÅï‰ÊBË ªª‹ˆ`M­„¼£råÂç0QÍ*„`iy™ÕµU^ïí2ͧLó)*M0€æ¹%î뢱Zq„©¢$ à£ÅE&Ó ‡ÇÜ{ð€ëׯ³ººŠT )8Z”ÃÁ€­­-6¯^ááø/ö^³w~‹••e0–¥¥E®n^A+ÕXÌ1zo„µ­4‹‹‹,-,†¬*gQ^ œï” ¯á:­âk²^.K]¦y‡÷k« Ð–2þµnÙ{œ“h¥©ª¢ž¤À¡N0EŽÎ2tš¡uB1òòõ.KKIÓOI#1ˆ€¢,{†šÌ¬× yáõíTnKPè7Z ærÎfÂ8çb¼jö.k*¦“s¼-uU ‘ö­•U7GPŠ™éGÒS9ŒsŸðð;xïÉ‹)÷îEe :Qܺu‹åå*cùæ›oXYYæîÝOHS&ôaÝé6A«¨f׬îtƒëåJyç"É’²wpÂÏ~qŸ/qŸ½ÝCL$7|rç#þèþ9’ |nÛ$ðAá/›‡ªG~þ¡<[[WÙºzï ¿ù%K‹#ÎÏN8?;Bë4ˆ×’8=!%:ÑaÊ0öõM˜{Ì„ÐZ EÎÔÙHú>ÑZ8Ò$¡,‹ž½qm‹XlAcZ÷MÿëLmÙ¯yÃRËÞžÛʲäððc·?þ˜$KñÞST÷î}EU•€ I4›ë\½z%öª‚^½zÁÊÊëë«$‰Æ¹ |øÌRçcÂth]³½#ÞïŽwÇot˜>ü›"êÞCÌìÖ8„Œ¶1Ú‡iSBUqF[â½l‚‰©©Œkþ^©!Ue°¾¢¬Öµ£~^Ô*ùº÷q}ÒÜ$çï¢5œ!nè4…} $Î;TÝL f²®ò0ZÅâÐzÛ|O½y†â¾ÅJPÍ‹ *Ãî?Ûfé’@º™±á¦Ñqî‚ ºnœÝ¬­Cçœ}¼Îy”jUEgƒ¦U× /Þc¼ÁÕŠÑý >l±pŸhZ=©ë5ìÒ͹©¢ i¬Uq¾ýšîèpWeÖ/‹ÖÆ!*dœ÷¨Ì ªÙúwÎ7öõ}4ÆDðkƒåGhb“$CkBãº9#"œ³­ý¯µl,º„H÷1î«Õ;Í«ðÉw‚¯ä긇âÊ»d¬}=ëëÖ ¡ ¨ª )5ÖZFÃ!ËK‹ —ÑÃc ÂyNOŽ˜•q$JP˜ !AçlÝ@&SR–ŽÑh„@ôl °6E—E‰@!E‚·%“qN’*VW–Y ÀM8<àì,à¡E¨=‘%šO?ý˜µÕ…ð÷ÂGðÍ „çƒnñÕ/°»»ÃÒâ(_¶Ê˜VÕÿÛ3º{S¸|ïkðoõ½—O_° š öZRªÄ·v5=…PÝŸ0߆£¶[°uûoà"õBéelö!Xk©¬‹yC¡ŒF$Ù „–ƒ8›Y;ÁŒx¯³¹ ës˜æqP­0ì*ÏçMóì8æ…Ï/^gTº³÷?dÕÀ…BG«3ç,eY°ÀbPĪР*­ÂÔœÁî¤3±àcÈ«© Bhj7á¢((ÓkÂC>Í©ªŠL‡eeAIze½7¢i|û]ãI‰z!#¹ß·QªÉéZµÖF•ÿåÊŽ^™qÑLá;>‚Ý}©Sy4ö(µJ/æ" %{¥N¬Í!åæ•ý cÑ™rë«Ök+%ÃôAmß$¤daa‘á`Èt:åüüG*Mš¦¤1à¹ÎѸqã;{»ìîï3Nª…0¤u›=4c9fmÚœ Ö`8dee…ñxÌÉÉ ?ùéOY\Xd{û:W67P*ì­ÞyʪD ¸qã?øáÙ;:dïøW{¼¿ýÎ:’$áêú7¯¿Ç³½×|ýàkÞÿï¿÷~$™¼¼¼L–$äEIY¤Ãa ¨'‰jB†ÆŠ¤¾¶â‘C/Ç'Ö.Z(™ª 5ƒVAíëËÚvÊÚl øR•çƒí‡°´¼Êùé ¥±ŸžòèÉS–WVI²,N‹F{Cë0•!ñ!HÕ5–íºP×{ísä{õ±ï`o“™ÖØ»¨ Lª‰÷Á #Ñ’²HÉ‹œª,ñž„úv*ÌZ‡­l,%ŠZ ë#I«“•hJSQ–%ã³óÿ¡U ÕjŸ8ôoxƒçæÝ4~4{Z«˜¥¢ÚïI¾m»¬B˜­ç›¿w³6ná™PJK¹ª$MÃ5õއܭšØÅÅEÎÆc^ïîr>žR%¢Þ·ñln®“$š½ý}NÏÏ£ÛjPÖfiÊ•+WX^^曯0Ís”LPZa*¾÷ýÏX^^âèèÅÅÅ *W c »{»¼ÞÝ!à[¬¼Ã¤K4%TR¢EXË¡*ZºèÎt^°4 õª©íöfb²zV«⸙jl.¯ïÁV6ìWžó"gbJrg12’ÅJ"µBh|ÕµÄQà ƒ µŠÏFYTäyUå3ykÅ´hÄ5Ñ0¬§:Þ¥ÂúY–&NºÉ^=U[w†Ë2Ó3Ä5ªÎÌsnNmçû‚–Djt¬‹¥S^†{ $Ñ&³–•‡ß]OgK!Pqʽ&’­ „]ý9|3MÕ?Î7³¿Íd‚ßd0ѨíçÕE O€õ5±áÑ66×Ù\ßäü|L^䌋)ZKV–ÙÜXæ‡?øŒÏð)ËK#¦“s†ƒ´É-¨Ù‘†l¬Ÿ±zª3~ šÝ½Æ“œ?¹‹G°¿¿ÏÎÎk”– G#~ðù‘Rprr½û_±½½Å{Û[L§ÑnÌwf½ê‰‚oàÀúvßéMÆv¦ZQ ª•qTeÁ/ùÿ÷ú»»'xE“ÞP‹dO^²¼tŸÝÝCÖÖV$õþžÆÏ%PJ„>OÂbœAê„£Ãc?zB– ¸}û6EÁ?ÿ9››ܼù>ÖVA¬b-žÈ-à u¿NRâ½ Kh¥›÷BKó?FcMÈ>´ÞáœiDB„¬"¥“&'!Li¤Jb¦ kÈ…pTœŠÉ*ZºHDaQÐÒæ=8oñ2åÞ½û,/¯rëæ˜*¸Dœžžòøñãf˜Š?ü€Íu¼wTeÅ‹çϘLι}û&I")Š Z‰`O,D[ÕÁÞ‘ ïŽwǻ㷠,ýÓ0ˆ>¨AiÃú¦bR¼¢}{®D£e†©LM”X+Ñz‰ÉXqvn1&JTÈÄ  ›!Û6B³CÍz4]»˜°ûN±7Æ:£úèüèZÁÜ,ú¾?f ìZrBÄÿQ‡gÒ(Qãæ&¸ª¿)´µÀÜõ™­­v<C)›`Âh3Ôûž¾_,mdm­AK=óZ½‘'d{صž8Z5Í*µÂ¨¬‹ÄŒ£ïçfγþUBvTtsüYrå²Ö²ý¾6ä´[pRT”›*)06*tÅ-°ÕñÖM“$x”ªúï]Ñ\cÿ|¬í[=—*†©öؤ¨š nô=E]ø¼Æûè ‹ÙîDK=)CÁƒ%Rç-¤8_2=›6€pšx´NÑ*`<$iš×Ñ‹‹‹lllpv~ÂÂbÆÒÒ6»;L§9Þ/p>ž0&e>ÜÿLÆgC…Tžª2(/Ùß=gwŠ­“³1¦âì쌫W¯‘$''§lm]ãÎOxøÍ>ÿü|tû&ÂX;Áš`ã]Å_üÅŸ°²ºÎêê"ÿð?cÿ4M¨Ê!`ssƒO>º‰’gKd}m„@ Ïp¢•`27þ¸Ëë¨Û}dÛH„7‡¢ÍPæ}ß›¾¿·à¯¶,«F•8²jïpd–ì\\¦}Ù o¸Ž"’%1h!ƒ'/Öc‘Ñ2@ã¤& QI‚__”Á·åþtÿ]66}Òeví—ü ñŸ“yÞý³AÕu`8³ä5d–:•ÆšŽ–µû4>zwÖÛ.°a¢š¬ ŽêðÊk˜,IqÖPä9¶2P‚¢¬zÞÚíç knžçEA^„@Òʘ9R3á°Ý\«®gu/ú[Bogó”ÞdýUH®í³aB®¶ºœ ¹äg‰ùûl;Ì<#¾Ýÿ´ÔáÞ•Uhè#Mk+«¬­­ñòÙ3&1¤“$ €¯(!ý¶Ž•U6W×8::bz~Î`8 IRd“Ó'ÚÉ‹ Ì®­Ó,ceu5(xôø!ÏŸ?g0ÈX_[í(\ƒÏóòò2·?úˆŸüügìïíñbç5Çœ²– I”æêÚw>¸ÍîÑ!¯^¼âõËW!¸Xk¤Lkk«ŒF#ŽÏÎÉËœaTõ"ƒ=˜óm€l5Õ% ëséžW›7Õ¢âÔÄg=؉©†Ä¨Á°Z‰–$‹?J *\÷T¥xãÑB3>;cgÿ'Ï_¤ëMþE^ž…ÏÒLÉÖÁ¿‰Ézì®E3ªïoÍ6žS³¶Öž±&žd8D&‘$øó1¶¬B â} S…N%%RëH²Ñ›0¤UQRLó`‘R™`ÿ¥D‡\ïLÅ’×_’AÑÍMû¶÷l!Aô]5PoØ{ëi¼xQã¤u›7ÆI‡ ¬L3É$… M3666)Šœã““’¤¡ÆRÚØX'Kvww©Ê*d2ÄøA–²¶ºÂÂh/_‘e¤ÔTeðܽ{‡ããcö÷öØÚÜ$MB ®ˆ*Þ½ý}*kÐ:i×v|mòÛÀ8Á´*›¶FKAm”¤–¤‰&U¬k¦IêüçJÈV°à:”ªèÍ{6kQW%•¦ÎLÉI9¥¨ª° …’’4ÉÈMA¦3¼ fGA6JÉðU“=4L0¥ÅZ-[èJÒډؓ»°˜÷…ë‘!5ˆ,•h¬,[02ìiRʾÖäu¨G›kÑúù^|nëw7N?k©ÑÒSúpœµ$J£½@z'XÃ=ó1ðHt†‰½š!Û-Š\œp1ǧ&|ç -¬ˆ9µ˜¬ž8P²±rt2LÙûÚÊt†h¯óJjw¥àÖ­÷ùg¿ÿ}nݸÎí«,/ð¾DgICÄ6÷ ²Y®S¸ÚÊ=øðRÁË—» ‡Kllna<ù’£££H²XYYa’OÙß?àøøˆ~ö;àKJ´ÓïR¨–âõ3ë²o’»»ÑÑ=±$QSaœóðá#öw )Zi$SÁÞþ)ÿõ¿ý˜Á`À`1-0¹sa2CàÃÞ¼²‚Òa qgwŸñé”2ÌF|óõ7LÆc÷÷Ùº¶ÁÚò2Öå¥t¨½m›)è ¦°Ø²@Jɧ€@7D¨hûeáQ:d-%Ri?Ìßsl¨L}¿#`ÄyÛà+ÖVý›Bï}d@Æ=Y´Ïx\¯p)5Î NNθvõ:++kpŽ]òãÆûÛ ‡)JÆI«î}ôaŸV²õ•zG6¼;ÞïŽÿþZA–…?vTòáíWFXF+!x]"T ñ‰^à|,Èóû{Ši^EõŒ'M Ë«†á¢EéA‰V}zÿ­:¡_?ÓUkÒF]]JPÈà/2á{¥””Eqnf$?2Ê&*]]ˆvÎõ'.. Ýðåoí]z¾à-ØÕlð¢o‰?WùÕÜÝ"Ç·ÆQ5‘ ½|£MJ÷g:?ÿgwÁöyõ³@ì¬5˼ÀZßX]ÅÙ÷ÁƒZ5á]0£ªA¶Ù@VáC •RŠDi²4EyÓX©ÔŠÜZ7«F½,ŠaÜRÖêÀþ9»K€Ú:?£ö o<Ðç Épç­ ¹lž<Ÿ€·ÜþàCÞ»±ÍÂâ" (¥±&¨­’$áÞ½{ŒŽFìpppÈ`8À&ϧìŸSLZ¥”…ewwŸÑhÈÆÆÞ{ï=^½zEžçl]½ÊÒÒ"JI67×qÎ$¡á̲„î±¶ºÂíob­ã/þü_°µµÎøÅéÉ9Y*XZZâOÿøyÿÆv´Âj¤eô¯Ÿ×¯_óùçŸ÷ß¾ìÙüÇ€“óþù6ïB·ÑüU?ŸèîDþzÝÐ]°w&ÈÝ¿áó7`ë òëvg`†@$†Ž5ÀÞb]È .B $¤ƒR)LMrÒŸŒzàÖmv»kEMÚuïÛÛÞŸ7ÝÛÙßÛ%ºêëZç;¡]…a ^(¥‚7zYPUA=¬Ò´·ÕÖMRÊhq({kmïüj AðîVŠédÂx<ÆYlld«R àIÌgˆ¬wTÆ0™N8ŸŒBC*‰Ò*©·Ú/]ÆSU*6°uˆû[6ý4_ýý½¬Bé^ï6×Ã](zf§S¾ ùPë‚•’(%ƒW5¢#ƒL`L­µ˜²ÂKé 1—ÁyGžçL'’Šqƒ­ Þ9–ÙX[gïà€ýãCÊ¢`4BÂú`ÝÝï­µÖuhóòÊ G‡þ$åÊÕ1‹Ë9£¡E Ûø¡þzÔA¿HAakƒe”`žÇjÇ»6 ®´Ì–¼šÑ5 "õ²!\È”_Ïœ0Ⱥ!_ü]Tù Ó óšé>°U7ãa,Öcc‘¦X/Á™~vWýÚiàæ5êµs· n=(##Ði$¾ dí7–¦ú\jå,M˜4±1§ãÛ€„¢(˜N§Dhè‰êºî÷Å`Äùçë{­óž)T(ü;ÅŽ÷î SÝDÕ Fsí™OrÈ&ÌÜq|rÈêÊŸ~z‡Ï¾ÿƒÁ µ2øçÖ ‡ò _Ÿç9£$éçâ8—~>‘„ ( Òt1$º8‹uŽ“³³†lGYZ ¶«««|Š`1»§k-"T°½:::êäõÁQ×»Úë]H•uIÚ¹Bu†CgDB¼å;:ozèbÎǬ%£ —)ñ+’‘³o_—Dbæ³Dà¨~šÊ²äôô4úYFYë,Ar|ðTŸ6äµGÅ`x)$ëëë,ŒFŸ†‰c‰¾tÝ›y»ç¾¸¸ÈùÙggg|uïŸ|ü1W6ÖfYó½J),žÅÅEî~r‡/ú3vvvxþâ7V7Y̆ FÙ€­µ ž¿zųçÏyòâK+Ël¬­ã¬c8’<‘k­)K{á}ªî$Í,ixáþub?ê©¢²ªHàȳ0b¬ 9FÖ*|Ó#“Då¶”aâh4 ÊS­5Z ž>yÞq~vÊþþACþkDDŸýŽ÷[“?C#|iZß›¸ò\œ’š>»ÖÍ(E3QA-„4°ƒá-eQ`Ë ‹ÁFE|žç,ei°o‰jþ:6LLx@¦EÎÉÉ R+²ÁÁô˲€.ÝëÞ@äú9kÆìõh,]:ÿí:B¤·!Ò/û™Ú<¡V.”ÙÝò®ÅZ{ l÷\k­ŒuX¢ªŸ¿‡=1ZZ!6ÔúA&5Ö;©"_ØN®Öd׬ °oéHO@6W°6sfß+ß÷ætmk}#¬¬ k·1!kÍ{„M1GàÖ{ÛdZ·h%°¶®Ýl’®µ&êfq5DmðÕGj¬­xöì9ÿîü—¤iBQ:8d2™0Í X[[c4‘&ÁTHÈÖœ5XgEŽÀ7¹UI’b\Žzú=3ìvvvþöÞ¤I’$=Ó{t13ww%#2#—ª¬Ê¬¥À ƒ¡/IáÂ?@þCŠP82CÈ hÓhtwíKî[쾚™.<¨ª™¹‡GVfU7F¦™V’R•Q~ßû½ 4û¦­ ÏŸ=ÃY‹Ð¼gwg‡ƒkûÁÂÐ{ž=yÊéñ ;ãmîܺE¡32 ÎWá ºp¿9c)Š ߸J¿6¼;ÞïŽ?èCEÇ¡ Ï`4‚~OP.-uíð˜ÀÀV³© ž´NR•p~îyñâœï¾ó¼zU°X @ԌƆ»w{|ð\¿1g{gÆîŽa<ödY iòÿå?ûå0ÕÎ×7„A:ëÚüA3è6Ÿ]É}˜Ð-²ÚjBDÏÿUŸØ µÆp¾Êç{# Ýñ¦^gþ_åÞdRX=6£ì׊`Ö‘ÂF–àJúqÑC}}@!¢×§`³:á*ÐèM]ß {nšaCb ¹$¼”¥ÿ]Ud½µ€P×d>„F›Kñ–ÀóJó)x-ȹrÍiA5oýŠO9¤PºNSÒe¹~}ŸûoÿÇ&K™"¿cƒGJR–KÆããíÿé?ýG>~ˆóŽÊÌoo±5ìQW†ÝÝ1³Ù2žSÑxü{Y¦Øïµ“å4›–} .•ñ/þåŸrrò’‹‹ óùœ¢(ð†Ã“)¿ùÍgœžžòù¨ª’?ýÓŸ±=ðÕ×ß2o³»€%•*Z îßû€O>þ!¦®é÷{T¥iÁ“$óaÞJIn߾ŋ¯¢®¡(t8GîŸcz9”ô* ßÙúGëÜíßV0&H’•Tä›xÃ5uö':á½öý¯²Ë}lÚ[ÖÃ’óëŒÞµ,ŸNÀ&À±«^h”þòPye˜àxH±~þºkä&P­;ì!)%Â^fk'xŒï<'ÏóÆËÖwyÂÓ%R†PL!Di þÓyž7áÀqºƒÔÇ€§ª*&“ u]‘å½¢B>Cú¥¼†º®›5×XÛʨVHV¬&WÉÑNß½´­¥Æš×õïŠåMׯŸu­u3¼“ ‹[6÷MØã{“o_·4yãq0š^;å£ïËtT¦¡ÂQùa½£¶†Ú–UÙ0–»÷°1¦Qëݹs‡É|ÆñÙ)uY±X,Ð:÷à-Wx¬5+ÊÖÖ×®]ãèÅsž?Áç_|ÎÝ÷ßãî;Á^kŒ5XïÙÞÞæÓO>á“?áùK¾{ð=Ÿ¾÷£¢O/ËÙÛÞáç·òòèˆÿüË_ró0Og17)_Œ1Te|¯Óûs—I ë¾ÙÁÌÄ‚í䌄á4Íó€Ûœž”ÍÞ(£ubR½ [h•…¦ ðRY•Œ·Ç˜º¢*XchܨLa¨‚Œ¬ÌŽo‡ú É[µ™X­ …+•Góõ®¿|d'{!Âs È^9©¨eµBhIa÷!$Þv„TL¡âe]5kCÕ1¢»¦vëf6çœ\5Ì“=yÓ@ãÀÿôådÓžr4u\eÇB'Ó!]iÍ«WGTUrO¢êBgšë‡7JóüÅK¬õM@o"¶Ü8JJlm¸XÌ9=:"Ï3ú½‚BJöF[”‹ÀòWZ‘9¥©1Tž#TJ‡¬ccOî­ œ­©½ãäâ‚Óɤù½BB¿£sB²¶xy|yž3èõB>“s tÈf‰6ÁÎyœ1T•¡45:Ód¹¦¬*=y†Ô9wÞ{‡'+r¾ùök¾üòË@Ða¨úóŸÿYžƒ”Ë_ÐëçÌœd6÷L.Àwß ^<ïq1‘d¹`{§æö{}ì9<0l'Œ·ŒG†<_"¥EHG‹Ã+þK躞€ÉVÇm`ouÅ pÑñNîÅf½sÉË?Šè:©ÓÞ{L,¥¼Ú=0§Ü•VE+ ß¼è€Ø–›[c¦4¾ˆ¦_ ÈnÞ‡E…ó-Æ®q¬É?ƒ”X^iÕµ‘rÍ‚%‚4ë™ ëÀl^R!ߨtø¶ÉÁä¡·Ö5e°Aí£Í@Rfˆ8p@ë§ÀòQ~j‘>Þy»2@éJàßÄŽeÅgüáMª’®u«kA®8<©ê:Ö3ô‘RRV:Ï©ª:ú݆Êã§Ïxøàu]s|vÊ‹ÏÑYÊÇA@]ûýŒù¼ŒÎ`²a)i­¢½J(ø{¹á(DÆbnX,*œ˜ºFkøüó/8>~Ål¾D©ŒÅ²ŠëŽãË/¿æü|ŽuŠÅÂò÷ÿðOŒFcî¾w“GŸñ¯ÿì_¡u’á9 ¤h1)¡®K”TÑo8:ô·797n\g8³XÌÉ"æ ß•¿×µhÓß(·áǾþå¶°µŒò.&SÎÏ&d:{k‹™.8¾2@éZ}‰déæ~bp´§}×í³ ;krC §oÍ+¤höO÷–H²þ¤—ìÎ|´IÄŠ^€ú©ƒ¢nàô:ûuó+ûÒª¥/e˜U W+%c :Ë‚×|¬›5Jp­us-ƒÅÆVóºY¦O¦£¬ž„TµÃºšì<cíA\wÃ:+e`h/ËÀ‚«ëšåb@­pANÔx±7¾ÎÍÞÀ­Žsþ†US¬ÙmµJ°ß“Kãï|Xø:¶vwoL ¯soS‹D(I½,[~üÐu]Å ÛT6÷YzÝø«¶··¹}û6Ÿ<æÉógÌg3ƒa Ô ;ÿµç?ì¹feïë÷{ŒF#¦“‹ n¸ŸÝmvÆÛ­r…`çµ»³Ãýû÷yôè'§œN.8<¸N_[´ÝÑ6·¯röpΣï¾çÉãÇÞ¸ÁÎÎ.O¿ßC´ºÆGEì@Œ±åA‰+´¡Wò¥"I#Ë2†[[ìïï³»w^¯˜—EN‡4UYâŒEFym,JUUÔu€Æhý°5òá‡òòå ŽŽ¨ëehÀϺ`Ë䣘£3 onÂ_fwk‡ÆGü ‡ Áf2.íήä©,d-Eê÷YÎ)©Ë \P˜:kqÖ!”º¬0Ñš¼W×ÁÃT5uU“ç¦aß®ì3¬^Ö×É×í‡o³­.“lÞf{ý{JC¿®êµ®k¶ÇcÆÛ#²Öü£Ñk-''gL.¦Á"E+ý¶®9<¼‰VšÓ“3–‹’ýk×X.–à<¶6¼ÿÞ{Á6TJÆÃR2­1•áäø˜ª¬´ïϺ@LKÖR»ÃQëØ:I'ÈTFæÛ½WŠP¬: p¹¦ó‚K–³W­ß‰8””Ú: C´Jg!˜WKÞàe¨‘KXÏÞ ´.pFrq¶D«%¯^±œÖ›£P+,t /©PSÒUTwIn… ax/düÐŽNoÒÞ϶ `ÞP?vîw%%YTN ׆Æg²ò­ WHÑŠÖú–õß%OtZÁfØ”z_ñ†÷}XZâ­ËìÊT3… ÂXÅÎx„ÖŠe]³\.°ÎÒëk†£ÖÕxoÀzšé ²!a%ÛdéCå¶Z$ûc(B=zHUUxçÙÝÝçÆõ›8_stüœW¯žóßüÙãœEŠ@–èö¾]õÙJöTg²#äºÒªµÐjë[E]YÎÏ&!ÈÝ7“Q…_ÇðgÉ Sô”¤×àëÛÓ!C —’þh Z³µ½K´ƒËÒp1›±4Æ×[S×%ÖVTU‰sžÚ„TèLSdE‘SEQD›;©M´uŒ¸‚­ãzæxu6AkM]½Â˜P‡`-uU5d÷‰”V[C]Lm£–æÑ“—äÿôÃáÃñÃáƒÁ€~¿Ïöx”yÖš^‘3ܰµµ…÷pt|ÂùÅ„E¹`¼½Mѹß|ÿþp„* u…VŠGÏžr1Ÿá¥ÀX‹. î~x•åXg™—K¾{ø ܼó^PŸ°OI¥ð"…Äð‡J3™wÆwÇ»ãÝñ_ɤàG7²¬€æ::Rµ5Âj¬L§†ù¬Ï«Wšï¾ñð{ÁñQ†³}†[Û×<}RðÞ]Á ½s¶Ç%ƒÁ‚ÞÀ’ë\æ’u“gsw³Â‰øi`ZSËE «ˆÕª­ ^h´ ÞDgp‘ÑxnÒ²*ƒõJ,¦dÂÏÖlDËXi† Ý!E Ô‚¦Ðì²[R—è£ê„}¾N¾©1LM—$ú6Ç)¿èã4^±]€ˆFGÚxD§p‚.pS—|›Ùh;Õ-º“UC²ÖÚ¤ÞØÔ@vAb™ù6R1¯µì‚N¹Vê»߆ŸÉøžÚ@¶Î` ‚ùÿv|9Á÷«¼»¯b¯¼yƒ»Æ¬LÖ±á‘BFMOw¡°V ç-ZgXcÃÀÚ`Á­<!3Šï<á/þò/yñü;»;è,£ßï!%ä…aX,–ñÔUðæ´ÆGvráËZRUK¬®1F4¬!4ÖzfÓEdÚý£G±Ö}Œ©2°d&ÓgçS %3<‚/Žù«¿þ~þÉ}²¼ÏÍ[·ÁÛÀP3Y 9M§ÜÔUÄB)i¸—´;wî`Œ[i¥×ëï;ìxýùØd›³ñÙÿ‰`vjÂÒ ò«¯¾æÛo¿e{´müOúWÞð…Ó?YëûªEMiÊßè F©bÃ^Ú §Ahû×íÎBH¯ûApø‡ÎÇ:˜¹iýèú…¯o»Kœp}£VJ)‘J6Ï¢®p&xó ¯2Z`ÄAl±5Yž£´ÆDBcu“”RÑëõn š0Ìð,)Ž©#;»×ë5ž·&ýÕµÁÄá*ÊÜÖ\d€ã|Àâ>ÐX'Éô^7ß£Î¿Ž­ÝŒá'F¯û»¯[:I!.Í7^Ç(ÿágɯ=BøK tžü:!BlbnIÙ•~æ™Ò,ãû (¥xïÎÎ.Î9»8çôü‚‹‹ ÆÛ»(­£w²kتA5ëX'9çå~€¦“ _ý _|õ×|ÒGûðzéY-Š‚÷?¸Ë{wßçÏžñÝã‡ìïîÑËr½>»ÛÛ|pçÏÎŽ8:=å³Ï~ËÝ»wÙÚÆ{rH¦5•uŸç´Î"²±/g¤¼îyíD²‡´Á¦åúÁü »{×{sÐ AêuÍÑѯ^¼dYÍ©çsjs‚”ŠÊʪ ,Bú½‚½®Ýº…pŽÁ O]×L§Ó¾Ô†åbI^QÕ CÈe²›éÖ‹Wä‚mt¿.Hyå{»À#«ê5ï|ã±-…$ï÷‹ZJªÅ2jÖ¨,uèZ#¢”B{G‰«²¤\.l ¢õ¡\Ÿ)^~¹lñ²É6)½Èú³%6®qÀéÛð÷ÕÐðõõÃ_‰‰ûΠ{Åô´c¿™0^€3¡vϳŒÑhÄöx›ÙtÆl6µ/Í~7ÙßßÇXÇÑñ eÝ*´ÖŒ¶¶¸}ëUYóå—_1L¹}ë6ue˜Ïô{}®\§\.‘v¶·cþJxŽ?~Ìb6£*Ë0ˆŽë1Œ8“ )aó2ÔÔ^,KbóW›èõ/@àP€Ö @Iù «YQ›`ѹ^û!£MJ¢k#°õ+á±J"eÎÒ”xîUï<Î8æÓ9/lÉlšS.gÌf¦Hdg ¤#)ÅeB•{­™LYHMÙ¶>¿9äðˆµœ ±ªˆêµ&—‰õ¼•ÐÓhòæ”PàlP:¤×Úð|¬vHëݸo³ºï…`»Ô‰™è WUH T}°ÇÛ`Ûã:±¤Þ¶É·Q ²¼àúþ¹ÎxvöŒÅrŽR’ÝÝØ§¸XϺ¦‹¹ŽN¿ÝŠ'Ó{SJcl°1ûúëoÙÚÚa<Þ¦6†_üâA©‡äÞ÷Æd™æ7¿ý5y¡¸wï}œ¯É´¡ÃÍ?†_'ÌÚº²ÒOwÖà®ê%ëjcX,JŽÏp^ÄÏæ™Ífh‘IÄÒÓŠ^–Qd’B ”ÔXéÃ_+v÷÷¹ÿÉÏ8¼ó»×o"tÚÁ¢4œM&L3fË9“é•)Y”3–Õ’eY1[.)­%/ ¤ vHž0dNÊT-ƒ²Oë¬Q@¥!Õr±ÄÖ–²\â½åüô˜éé9åù9çËí|P7FÅeä[¥@iŒ 9_Kk‹’ÓÉ^ø†ð¬\%C‘gŒGCúE 9 $NÎÎB¤$½~^¯Çã'ϸïcþãßü 7o²µµÅßþÝ/XVe$IÉõ›‡Œ¶ÇÌ— ”Rh}à🱖Û:2Ú¬ô&¾‘òªØ¸8ç#Vt ‘FwYLr3 ž´ÃR‰&Ú7ÁÄ~•©à“¢@6Á¬¡é ÁY¡ñO¼º‘”DkÒÿLi¥p!5µ)\i­Ì´•±¡‘”‹>¤ŒU4ÒJ!<Êý/Rx¼ Y‡¢Êá#1Ç7Ÿe¥!¤£œhæ:›³ÖÉôo­u#çe­In½‰e¦ÉÊ`#\/ï\ssj%CÔéàÁGv¯ÇaQ²õ[tî²MÕU†®§öÉùElS`[ø>‚†ŠÚ€±.P¥°V‘@.‰q. cA›i:Fœ¥r^¾<ç³Ï¿äŸ~û拇·1Æ0™Î9¿˜±³3FHsŸªªYÌ«Èr8Wã}F–醭^–K²\£Rh!Šóó‹&`] b¡lë±6ÍP/…©e™f1_R!ÄV+ͳ§Ï‘xþ—ÿùB(‰ˆ`Zê•{<©,ZK4ÓÊË;BŸÉ¤èI )Õ¥ÍßÇPAl°K[÷¿jаTù†`iû­¹L–¤€Îèýœe9¸êWþÞ&8Ý5ö8Î;ŒµdÑk¿‘ºÿ¨s–ÉŠ$ú璉ˆ–.Á'Ù!¤nиù­ÚD‹±®JjÃà'©‰Ú„ï YirW,ñâõ»*Ðøu!?úÖ¸4¶CH…Ê2z½‹Å‚ùlJ¯(ÐEŽõ¾¦¥EÒƒ”dE°ÔpÖâ#Ë3py`‡¡M¿ß‹DIáf:›1ŸÏ‚ýÇ`«ÃìôyYU,˲ÉÇ ÁzP ¤$ü;96{§oò¡_Í2¢e¦¯í›o¸v½ïW|¨»¡“!3ì1éÞ”¾*úzûš«ò€šó±)Ë…tt¸&çÂ#"ùÁ#•hòKåb7¥jÏ àâÖ`€Îs~öɧ|ñÕW¼<:f±X°»wLvþÊ}+ÒgtbË[€h­ÇñÕ×ßpxxƒ÷ßÑp¸ú9¥âàú nܺ…. >}Êû·ßãÆµEø‡×¯scŸ§G/xøð¯Ž_qëæM2­ØÝݦ(rêèomã3—ìÖš õT‘v­»9P]›©xþ],媪Â[‡’’ÝÝ]²,c>Ÿs~~Î|¹`¾XP–%“Éc‚}•”k3„’*¶ßës°¿Ïh0@z÷–ù|΃˜N&SQ.—LÎ%½­-ò~› ÜU[|úVÖúÚ!h,Þ( øÅÇS­JÈw˜Ý2qÁ]¡®¡•©‘FÓ«à{3¨ˆ_KùÖZ‹[Uj%×öåTã¸ï“ehòj÷W° »k·"D´ŸÍó$:JâF!¸²—»+è#qàžÎSì)}º,Ϙς/½–Ë%½¼ Wô¨£Í‘“>[¿ßcooù|ÎÉé‰*ßïðÎQä»Û;̦Sž=}ÚX~-Ó錽Ý]®ï°œ/ȲŒñxÜX¦ÎS^¾|Þ¡… _ôã-‡ ÎQô¶±Çr­W$Öt‡Ád8A©F$ú´™rC¾Ææ6>‘>]/ó@‚Ýkmj殦¶5™Ô¥1JP§¬*²Ó)=J‡Ú±,+Ê(zW„{ÌwÔŒ"ì]4„šôžRh_ž¥l; ÷5‰ó&ô’•ûˆÄ‡’ ë\šãgMu­ìi·÷9ôòí¶2a â[]¦¥ã¡ÔUæ_²šLd¹¸¦A‡HêCškÉŠ'@KÌKä¼4hp ã.¡,­Ï.æÌ%ƒU*‚íñ˜½ÝÝHþpq¿¶ìí]£È H¡ôéÜ‹ŽÂ1Õué+b- ¸Q¿+f³9˲䓟݋ŠÎ’‹³s–‹Ãј>þ¥Ó)ß}ÿ-£q½kCœ/©%/‚U­ð Ä;š qﻄ9i_ï®®Q÷‡w^™šó‹ eóC|´öoMÈßÔ¢aÔ[SSÚ 1¥%»»ÛÜ¿ÿ!òÇ?gÿÆ-œŒ*c¹~mDYUTu±–EµdR/¸XÎ8¹¸àÕÙ)V€Œ¯gßoeLèß´Bë`$…n‰[ƒœ's©<úp‡ñ¼ä–1L&SÊåkBéEII÷S×8ëÂßkƒ3žºª‚b=>_ΜsTåï“™ãôü´©qœõ8×ÖÈ)Ü]JEU|û=§ÇçŒFc´V<}ú„ª®CnGÔß|ó ç§çloïðåg_pv|Âõƒ}v‡;”³%Z+jr¢Î&g,«’*Z—±&`0ï† ïŽwǻ㿚ãm¹x—x=ѧ0Úôb-\L,“ Ïô"ãô(çèUÁo?›òüyŸ‹‹ŒLk¶¶‡74÷>.Ø¿uεƒ);Û5{{‚~_ÑÂù÷2oyÿÕnKÒ½udz¶yIÎ)J4F €\f¤‡fÕ5M¬TÁ"ý¬k|°C‘™¦õ]Q7ɱs=dÃ2—C¤"|$ãïIL‘uÕ€1Sá‚ÿešß\bÍ*Ùª„ŒálÄßC޾T¦¦,1ý#sØÅ¦ÙÚ ìHq‰b-ü‹Ä^í€ë×s=œ±ËúH>Õ ðÑ)ɦÆúƒ*¤f®Í1ðÍy† $ÑJƒ¯# Õä¹­•ìÎ-0ÑUü1Kµëå*ëœWqåÝKsn½— #5Ë‚{4·jÂ…ðX³zn’íˆ±Ž¿úë¿âïþî×Lç%y¿ ×ïqttÎ|>g¹,‘26Sx†ã<2®4óÙ”º6M8©ÖÁ“ÚùÄYU%Jæ”ËDA]fÓ’W/OpnDµé9hìÆâ3ä¡.Kƒ~#C·Îã‘è¬`4ÞÁ:¨ë%™n­Y\T±fYå¬ÙdÛ¿òÌ­$t™á¿Ïµ{C¸üUà}÷þþ©;ƪG­k˜zµ±ahƒÄT5Z½ÝZœžQ×a{¦ç½ûlcVìy~òáVŸ“KùÑ?ÞÆFÄÇ ä•pEq9«G®ŽÝpÃ.+®µH¿_nB¾‰²aý|n !îxò§ý¤±ÿ[Ø]´dˆCl­)zýðl¼àëº"7yð\ª†¶CÕ0[=Äg½õõ7uͰŸÇAU`¯7 »ÌE!Ã÷ŸŸŸ7ìäÚ˜F–o¬¡¬JjcÈzyðò–›=Ó/EcØÍ¯¸êÙÙd§ò&Aëosïo ÆÜ½íú°9 º…MZF´k²éZk±Þc¢-RÈ…—1WB4 ‘´göŠ"* \£,(Š‚ñÎY‘ó/þäOxþò%ee˜Og ‡a˜ü›/Û;¦å*)>ëºnÖƒ,ËZñàáCn}sƒ?ùã?"ÏszEÑ\S¥3öö®ñÑGsïþG|óÙ¢(ŠäïƒsŽé|Æ|>ïéåEöß?ºÖÂN*§‚]iìâ½Òî¹®aé‹h¹šÖ±vSú&øÜ_ÑͶÿ–KÓ`“.“Ú9¬ŽWEk|R$¸ÔÛÉwwÖ—¡ðN бë (ËŠeƒ‹?ˆ¬zß dê'â÷Y×f¦¤ó¢3E–gH%¨«jís¦n)Ø¥5ªßÚüv¯Rˆh¦Ì:òÉ’•’‹$³M{“`•…ßô‰BÄÌ¡ÐGØæ>÷+שYsÜåúÖwÈeé>ïö…Ö¹†ÑŽ’øXÿgR²mŸ<Óä™fk0 (r”.8¼~^‘E¥ÐÃ'UCwˆ‘î6¯†5B[ ø=øþÏž¾àýßþ%ÖyÏ9«*&'Ç,Ÿ>a0è³\.SUÞ÷Ïžröþ}¨•„âô䔹©©ðüò·¿aøpÈ ßØšårγçO8:;Å{Gžç쎷YLgø˜!ñnØðîxw¼;þ`‡©¸èBWuX™ÍáìLsz’1 yþ4㛯¾/0n­%ãmÏÛ’÷îzoMÙÙ2Í {Û½À™0)\Ëþì¾ÿÏ€äm8´&††?ëm‡ù@"ƒ©‚¿q²ê€G"±Ÿ“vjê:Åd㟛 =߆C¹KŒÓn 1%cˆUì<äë>µœÈXtÛæ©„ ¯q…S·ñni8Aúœè-žVÑvk„•Ά‘á!Âümì\°x"ZÜ\}+¬°ÐW@ŒØ8PÑc<5éÖZœlÆk¬ö¾‰dW%¢$°2”ÒÉš(ÚAËúìú´vÁÈ×RoÚè®·S>x7òdÀµ`[–eܹs›ª®pÖ’g)C…‹þÎáÞÔ<}öœ¿ýÅ?p|x 凮î}ÕÏt÷­OpgàC `-r˜`ÏF+%™eØõl%ÈGvx²Å8Øßgg8`<¹|ã{œ¬ÁÛvÐí½§ZÔÑ‚N‡ðøÙŒétŠõŽ\+”Î"Ó·‰²àQ`y¦`û˜zƒ»Ä‹ÉÎxËáJ‰õÄj¾Æå!ÅO!Yx‘<Ÿ£b2¡Q‘]×5U]#•ˆA¦aŸ¯­Y97íÐ Ù-…½Z*ÉvÌOøõo~Ëwß?¤®jLmÈò/egÏo÷Ƥ’jjÌºŽ˜¸'ïŒÇÛ\\œóýƒ|þÅŒ¶†D¥'5Ð͇|tÿ>ß|ùß=|À{‡·¸¾·GO(Š<çú·{û|ÿê_ù¼ÿwÞ{ƒƒ¶Çc>|Œ©*lU‚RkCAÿÚõxSX{3wØPY¬”´Ê.ý|²\ÒYFOˆÆ·{9OVlY°ù&¼×fhÉ·³O? °J¶éuïÖ´¡O1uT”eËå’ßþö·L¦“ ª‰ÿ/óŒé|Æg_|Á«W/999mö_cjœܾ}›Áp‹/>ÿ‚³³s´Ù!k˳wí*ËXÖ5ÛÛÛÑ*)Ëgçfó%[ö¶­ÕK •õÞSEp0XÇÙ†žÊšf‘ÑÆP …\9hxÝõlz´52O:”RdVQ…éäÒyc@ÅÞEv³$xpäª*¾`-dèÉ1+ü=ô{nmÍð+}‡‹€¿54$UgŸ„&8×Ú`Ωhjw®¨»û¾sÁÞMH²¬‹Ö@*ö¡iy ~)®|­Ë½H«XtD¥ÊZz©îxƒ@Æëžˆ!iíUJ7¤†"+n Ð2Ø¡ ï(ˊýn\ß_‹½@z§ëë]c+i†0"¹ xȳ‚ÅÒpv6¡(lïìQ×–pzzŠRŠ»w?àÚµkTUÅ×_ÉdrÎÍ›?<:SmíÜl;gNtÅ+¤§Õ5J¶„º´É@Ê´fÿÚý~F^(¼taÿAb½£¬ÂpÁÛšª O^&%½"'SоÒLkG…d^rQE5«'×:dÜ™%Z¼­È¥W±iÆZ!Šv0¤ržÒZªÚ2]–L–KuÅùbƬ_1­kjµpL jç1Ö‘çR+d‘ãµ¢–‘˜dÃF¨¥DV5Æ[MãL° 3¶ÐD…YåE°ÿm…ç§é?Âà_:‡r¶}Þã‰÷Ø* ë'“ ÕbI9_å¥Ê0uM]Ul¹€Ùl1FÖ„l±SWqq~DUVÁñÁ9Pž‡çÇ<ýÕyÀ™„¤(ò0̨JʺjmžÜ”#ówÆwÇ»ãÝñ~¬e$:” Ó)œŸIŽO &“m¾ÿÖðõWsN^õ©ª!ýAÎÖÐñÁ]É'?Ûb4žÒëOñî‚­~ŸL+.Î+”x¯Rç ”A*‡™º—üsD·³o ЦX]F¶¨h%¹ž “wÞ£»– kRÐu@0}>çÜ ³Ksê‚cB®6¾¾™ê‹KåŠ?s÷­Orv4üšç·÷¾Qý^Vt@àŸ¾æ:ŒÞËç[n /K °ué«®[bs'{‹.[/…Qu‹ä)Þ„EËàE.œXa³t-NDônVRY{çúÊŽ´RIœmƒ¤»ïá*äʆ&xÕ†½[‡¯7¦aCjÈ%k y‘3üùŸÿ9Þ´R‘ETÑîóÙ|ÉßÿÃ/9::úa€0[4£¯"ïc­#Ëú ‡#¶¶úä9ÙªJ”Ò1ès€ó5Rð-…E©ŒÓ“ NO.(—¼j>o/wrBDbó ,0EEÞ›¾¯ªjÊÊpvvµ!4B8œ«BS›F­UðW­«›Ö¶@õþw¿î¼‰Å‘âè«þ÷þZvaj@C [hz­µ(ù`õ5 Îú½ß]ŸºÏ—âG¿¯=>Èá]ô„n­œ|6ƒÌ²ÐÄBå“¥–oÙÆ8ò<‹Ê€V ÕZ&¼>—e•ÎÊÆõ{ýXÍ~S`peÐÓñøm«éwJF #ˆ•˜b‰e,¥ Æžh3ÀÞ”õ@ë SWxçØ¹{÷.;âïpÎFƧl¬UTGÙæ/æn£º¡eËS¾ÖHG®‹`)?ŸD\’)]:g€mÕþØ÷»R8¤k˜¿áÿ9¿ºþ¿N•q58Ü­b} %X׬•>–J)Y–%Ó锢·‹ÎTs>Œ1ÍžÙâ‹”×$ƒUQ¯×#/ >ýä>üà^¾<¢œÏô½~PsvöêîyØôÒp|{g—Å"Ø}öÙg||ÿ#ö÷÷£B-ìçy–sýÚ>ßÿˆ_Þ¸Á7_~Åß|ÅÝ[·(¶÷è=nÝ8äý[·yyqÊãGøæ»o¹yû»»{ììì0YÌçd½~¨â  ֹɶñÊZ²;HŒÁÓZ‡ì’T#Ù¸–&[­–Ó_tr¦Ò•qOJÆa¿ß Ü·–[[̦S´Î¸˜Ì°Ö±\.‘Z#c°r㣎¿|]×í„~÷»~ô—†»s™T#éþ(Ë’,Ëɳ•iÄCЬÈÉM™š°öTZgJ·–y?ro^ú½Žè±©ž[Wž½í¹LI¹iLŸ?˨kEºà\¸ÞeYr~~ÖÔó"Z J)9::âèè(¬ë€Ô -%ãñcÿú>‹²äɳg”Æ ‹‹ìf­¸uçó²äb6Ce]3›K’o¿{À³/LU‡Ì»Ä®-˜*¼§Èr”È¢²:*LÞmG™ÆXCž‡ ÙPËÏàÆúZ´Ž—]K«ô:£¯2œƒ¥ ŸÓEÕnR\­ØìvÃîE·_SOFõ¹«ÉQaÈÐ’gÖ­ÙV÷ÑÏ’u¨Ö*ì¡Þá»±J ¸DîXë›õ„°.;ë›Ðíî¾³iúþCð.nCÂÿ@¡I[ƒ¬¢ìDÈåýO*…–<Z)ú½[ƒ>U]Q–%ÛÛÛ쇧ùv±Ùj0õãk æT–eEUY¾øâK>üðýþ€²,ùì³ÏȲ ç~ø!£ÑˆeUòý÷ß±XÌÙÛÝAi‰”ÉdMvT;ñ7‹Îš²áóvŸÿMõ€êìýƒ]~ö³yu|ÊÓ'˜…mTŒÂY,Žž­xOôŠ)ùbÁ¬ª¹X,y~|½{÷ ·G€>ÒÛ'pëÀØ£åÀv [xÌ`Ȳª©£#uÉÜÔ\̧\,æ”Æ4D ”³𞹷X%@Ç<ëYòiM“C<ò0¬·QE$q•OºŸ­µ8s©w†¸æZ‡°é[Û#ÆáL°k ï# Çe³ˆØ—‹E£žw6|Ÿð4®8­+–Îct×ËÈ… ®«p]­£.ëxo¿6¼;ÞïŽ?à#Ú]7¬ôÚÂÉ,f9“‹1'G¾ýÆóðAÎÙÙµÉ(ú’ñÎŒû÷{|xÏ1¾DÊ2´5¶àô8¼¦ˆ¨’‚¼¯ÙÛ+ Î/ÀÖ¨`¿÷aC—ñÙ©Ã"ƒ{‰Ô2²÷TЬüŒˆá{"I€¯.~»@ø&£Ënõ>xÆ›£`[€ß ÃÃ%%öa`m»ZÈcV<¸}·÷É‚ÂD‹ Û‘ô‚÷6üïmgYÞ6ƒ†ð×e1¯³l» }ÛäÊfʬ„.ÚØÄ»õ¦<)6Ò},䪯ºó¨x–¬·Á˜öúÐ-0ýª±é{.2x×ß‘¬+¥Âù˜›Èï†yuúK ©Xܳ¡ÙN¼ð­ EúS›©²æw¦ë=›Í2¼wh)1.‚ma6›ñÝwßE¶¿oÎuh@U.‘jLÑÏ"†-{O¿_0  t&"ÃùðTU³ï‹ùœÓ³ RæHiÂÅ“h'«EµX o³-Úó¨âåèè(ÈÎU5KtÖÚ*4Mtò.÷´ºæÄ{mùS˜7ê€àMA”7^‰ìÞxëø*• V6kƒšMìì« éyöµÑoZ·x{¶í&`pÕ_UU; *¥²,JÙdõ¤5ÄÓ§ºÏTzö¥”!ô¯ó3aàX·Al"}­­ÏðoSîÀ¦o»£‡ÎßÓ:ÝýÙ,ËÉó‚åbœ«Š¼×kϯkíú|ÇŽÌF–±µ% ‡C¤ŒÃƨúHÒÁZÐa÷ÜÆÙ õ€Î³ÖöŽËlUë^¶¯)×¹—íìÚ=³Éd—Æõ5zÓß›½þ5@Xä0ÆN6þöÝ=øª×]¿¾›l”Ò hõ¸ 6AÛñû&“ ×öwÛ¯9ØyqÉ´f0P˺¸Ç RŠÑÖï~À£‡OøêëoÏøùîûä±­UD%k ÓÅŒÇóàÁnݼIže¨B5Ÿ9Ë2¸sçÏŸïݾÃo¾ûšã£#ž(mpÑ•çI¬¯×ž_®øžöóøKy1Ýïs,¸tml²Èó®É§ñQ=™ÏPRk.Úµ ®j²,£ßï#¥d¾XD°. hÓ JÂÿõ—ÉÿûWÍÑÑ1§§§è³S¬ó‚ïÿ?ÿþýÿó3ŸMñÞQäyèé¬åèè'ÂyT^ œ 9>q@Ÿ9ÆÔhdDÅÚ+W…ÎÖ²e "ë÷6X»× {¯u iã^'.„5.äIŒ{ m™TSQY×)°Ð] ¡^¿§Û×ëäöùÖ"ËÇÁb{ùNŽÆeBØåõß76KÎùfÀÐÞ3¾%oÅ=/ÅÅyI7qµvˆ9f]ýV£ŒNCw¿Ú‡¼UXº.Ô(ë½n`Aºv]‡à•}7¾V¦3‹%x¸~ý:;;;ô÷Žóósʲd4Å¡\½!¨Û±ºêÇÏêüŠ28 A5Þ f'/_ðäÉœ 68ï¿ÿ>BB]W|ÿý÷ŒG#oà­EÄaC˜zHº †hjƒv8¥Ö0ƒ«T«xGžiŒ©é’>ºËóWÇ\ÌJËi\ÚýºK†@iXÏÂT̪%Çç|þõ7¼÷=n\?dgg‡›7o±³³ÃÁþ5Š<'Ë4K¦Y¦±UR´d°Ù`¨•¢¯<Ã<¨–ðŒ³Æç0ÆuÈQ[Ãt:¥´–Im˜b™¢X•X’S*²¦T^ }2wˆjgb€üŠÅBciB¼Ó}ŸÃNMí¬ ê[kÑ Çè ¼œ *²ö~ê(5ÜGõL|nŒ1&Õ† C°ËSrá<Òz.NN9þüówÆwÇ»ãÝñ‡}8>X"b,,0ŸÁÉ+Á£K><| ™ÏvY.3Æ;;Þpã°æîÝŒíí ~€©ÂvZUÁò@k3çôÊ ÁyËp¨É2˜èå{5ØúvÜ 7î0Aˆà#í½'Wš•²Äµ!ÆMH¯\-–ºÁ§Vø°ª ð>yéwÀ„ÈÜSky¾c7‘²”T¯-}§aM@½‹aÇIi DªÕ¼'Z¯rѱi|Àl)š ­äoJ´˜j½HWCOW†/P.áWAµ«®`—u¹ؘDJ%‹#PJbjß°­pßu30„o؇J«†á»C‰h'/Á>)°Öùxÿ+~ Œ¼ þRÇ••¼geˆ“î-­1 -e‡¡ÞµVWÞÇð»XÞ:OÞ ì·ÑÖ/Ä1(DŽ浡•EQ/h™¡•@«`¥¤$(¥9¼q,Ïõ€s¦ ö>%oKŒñ8­“¼¡_Èæ{ºÊ‚î‰[¦%Lü~¤_¾8âÅ‹#?~ÀhØçÎíCú½œ"ËñÎPÕ5JßlÕ„=w׊،‰Îp/£¯¾…_AÚˆ½ ¼ÚäïžþûM2~6Jø?ˆLBS—üíßþ"ÚÌÉŽõÝJ«ûƒC€M–# ””ZQ–%eYÒïõ~³ö*&²ó4ʆæ9ˆ þª¬¨ëå{8cc³`± àé0€†²±kŒÖèn÷†aL¿¯,}Ý èuá—®¥kïá«À¿!¤Dkˆ ¨1&|NÔRnÅV&×:ìWår‰s»ã£ÑˆA¯ô&Øå 6‚jëïÃE«%)`±XPÕ…+”"Ë{(•5Ð@°¢‰5Këð×îw뀩¿z¸q8?É:mÄT1‡GÆ{ÈÑ í\_·AÕö×½l‰Nøx»÷K)ñR¶ŸÉ„f{¹˜7C¢4„ÓZ“E/g)%RvtÊR±$Oß§•BDuÃóç/ùæ›o©Êe°°‹ CúœIe¸> ï¾ÃDòåWÿô+nߺÅÏ~ö³æóUUE¦5ãшŸ}ú)ß~õ5³Ùœ³é”yU‘ è,cog—ýÝ=N?`62ŸÏcÈ£Fi©L³_§?ÉÖ$ùh¯×V«ÊÆË Ûb± *Ë0xÛ?àþýû)™-Ìs^s|zBCµ†d1#%™”ØøüYì"²,#S* ú…`Y–\L'™f<‡ÐÚ²¢¶žÑ¶ez1ÅÚ2Ôñu²,Ãz¿Ñbh}ß¹dïõc,½^óÚøÕ{Z)…Î2\]55\ÊhHôÓ&L†¯ XÎI±\.Éò"ô6S Pÿ1Cùkcæ;ÃË·±aâªÐúÎ}¬/Ãýÿ[Œsˆº­Ûü²&Ü=¬=E–¯ìîÞ{ʲŒuœçWÿô+2#e`އsÛ’’þñW¿ –&ªU‡JÂãó ¢½®óÊÔûuÃã¸Ö§Àòµû)¨áEtÈŒ;¹ù+v‚t®Ù[ôÐ+ýXê ÙTÊ·D²îÿ^BøÕ f´y|´ÿ3Æ¢UȺqã[[[ ‘d±˜ÓëܺuÈ`ÐCˆ**öRPvw¿š (Epîéw‡}JòòÕ Uíxÿî‡ôû?þ'''H¥8¸~{÷î¡”âÙÓ§|ýÕ—ìï éRxp°šÔ“ìZÛ©“߈aÀ•ÆU+„B(z9û=îÝû€_ýú«Ž[+ñiï[Ñôù.Z%…ðgÃt¾àèô­?#ËrFã1EQpýà€[7¹yóÝ1ãáÑ`‹á OžçdH„÷h¥ã³æPÒ£¼E @W %£¸î;稷¶(­cf Sc™XËÜzæÆ²¨kJS± fK1ìaÀ€ÇÄ?ø0h“: y2ý=œ'•év¸µ†o4ÏŠó ™po¨8l­cÖR_I\$V&<%ÔPQñà‚½²°aï®­5ëªFm)b2ð’µµå t¾±~7lxw¼;ÞЇLØ™…Å3¨«1ÏžÎøî›’ùôuá}†Ö9Z÷°FñôqÍ‹'’1Î.Ae€—/@ãmÍpkÀÖpB]/QÚQô*³Ù\˜Ÿ¾ÔŠÆ9ò $‰¶Sç‹æëÎ??%%ÎB¦Z(¤%-U‡õ ,¥TÛv¢`3#HñÈÝb¡U?xº”Ñ‘¯€ðW°LÖmbÈvà 3J ‰J¡Ó>0Ö›E#ŽeY,f²ñ]•BE»›= HTT¨øm›àdÙ /\ÔÚ:¾P|¹XÅûñ5~¤ë€Qj¤dêQãÿË´Âjݰ’ÌÙu™—R4Ÿ3aY'¯"[©TÄ”â<ÞÙXD¦¤y’bs°Ùc¥É c¹åüE—´,ëNøY×JâÐjýÞŠà^,xLmØÙÞæ¿ÿ7ÿ†Ñè?óüÅÇ'ç1ty›ñxÌ“'OðÖ3õ¨Ë’ÅtÆöögë w×yë%o ?Ø¢2%Bf8[#…Æ{‰­=¦r‘á­Ä¹ä›† ©!spr=H|mHjƒ\øÉ“çü»÷¼:~”‚î}À½îòá‡w8<ÜG¨ hPª$äÂ…ûXˆ&C&ýîVõ —]YVšGd:ß©ÉjCS±Ÿ@Ï.ÙˋվjSÌázsýCÀg—™ù#ÎVñäb‹ë< ;*°ÿkVWµ]½Îs~ÀŠ!öÑ»/š\ˆfÝûIê¶Õ°Óô5ç|›ç’k©«Šj± 6J@1ÆRÖNᕎ€NW±ôZÓ9‰¬*¹ÆøîþøO{Ä뀨«ÀÙµµKÓNÚ`Ò¤îH÷¢Î4:Ï‹ 3uݰ½DT}HD´› kw²ø3u…Çi†90TZ¶`šß¼~5 †8µ¬J¦³9Öƒï3„Ô±ÙlÄJiœ‹ërgÐð¦‚×e^l$dlš­+ì.{úfìÚÆü>ÕLÝû* èDÚƒ û@ç­dYÖ±, ÿ/½ßÔ`«X×(!*¨Yo\gÐïQ.”‹9[£qBãý%³,^o×*SD ž8ç›<¡ápH¹œ39?ç‹/¿âÏþÕ¿æ^USAê"G¿èq÷½»ìîîñýù9Ÿ>ápÿ C„dk°ÅöÖ˜\hNO999e0Øbkk‹<Ï™Ì cü²ÝåÛ˜’˜5¶í¿s1© IDAT¢\’å9½~¬ÈQ™BH8== çÔ8´’ÑŽM ”€¼øh­cVŽçøø˜É|ÎñÙE–³·½ÍîÞ5jç°âˆÊXlm±Öa¬£\.à¡6ˆ‹oAV­&Ú}`ÛÄÐ_Y{60)ÖkÓF:‰¬HE¯À5¶:u ßæ0°æÛÀf¶6¨Eª*gÀ‡Ô*A~øÙö?0ð½lÉ·9$ºYw;J­·püÐ÷´§! Zg¦>ÿJ„Ð\-€œgYdï&UL¨½e´™SÁ%ÚÚŠ¢ÀÙpïê˜ÏT—Ri¤Rh!c½ØÅIéjœÃW5™ÖÌ˽^Ñì5:öRʘóÀøº®ÐMø³lž?•J ±•AÃÚý#: 0š*Õ@2‚ñ®£ˆ¥ºø*‚LKr)˜[ƒw¬¤¯Ð÷8áWìWbï›<Ñ%.Ѫâov±Z–¬ÖJ«ä ©å³/¿d4²³³ÍÁÞ5¶‡#®ísãúu¶Çcöv¶C8w&ñB£¥À8O¦u¨!ãçv8d¦ðµEKIVäÖQ=FÖq[ijëXDz®™.f̪’i—­T”Î1¯k榦iéÛ/+ƒ‚Të |Oÿí“9b!Ñ& ä#IÙÞœÇ[‡–!ÏSFå„Ç5Ãã,yÌéñ6 Ƀ5k—|f­Eöò‹±>¶.Ø º èÁˆwÆwÇ»ãÝñÏw¼q»#Þê˯ý}ÝŸq´ÔƳXfSE¹ì!Å% <ŠÅ¼æéÓ¾ûþ…§c¡QᜉaQ/ƒÿªžÑ¨â_ýÙ5ÆcAUÖU"ãR¶ßp"º^×ob1#VÂâVa»Xx³AÒÙ€u¡– ô’ŸéÝ-Î: ­ÞúÆ÷œݲsηMWItÌ¿[¹uðJt¬²»A|‰…G<ÂÑH'S€i µ@½Œ ¥ôþBž`rÚ Ô ÅM`B%›“L«ÎÕMbb7Áã ¬OVé:Äœ±FmÀհµ®¿y’£62φ‘¸ÊFî’©è 2Žª‘Ø7!_Z¶Þ•)ŽÏ·ÙÝ¡¥k-m>H§ñiªu¹·X‘xvÃÚZü: %:^àͽÓá¢Ãä ± Fžg‘M†jŸ||Ÿû÷îóâå+^¼<"/úŒÆ;¼xñ‚L9nݺÅýÑÏyùò9¿þÍ?òôɶ¶úŒÇcêªB{ ¨héd‘R£dÓmàc/PRã]ây'"›·s¯¥v/ÊÂÛ>¿L×Zi^¼<æÕ«#¬3d¹æïþþŸøõ¯?çÞ‡ïóçþßòÞôŠ­‚Ò!Ä&U‰l%å®3 lbD ‹Ýl³ªÈTÀÒ¾g×±ØðÞc;ƒ‰Ë€Íð"Ý-â­Õ^?¨_gЋÆn(Ërªj@eS·ëޏ P¹š1Þ> 2ÞwɪC0Ÿ/FüT½Ëk Í:Ó«„¦C€©*–ó9*ÏÐYŽŽùlN]úÃ!EÖk=´›º›-"ß Pê¶Í´o$×)礊70_7hðîj¿å´§$Tw-ò€Ò:¨ëêS…àl×õto 'ÈVñs/”ôd2Ž ¬[1 èæ1¬€g´Áà-ÈéX–%óÅ"°Ó{S8ˆö¢Qˆt×åu@j`÷F(W tÖ´ÝáC²ôn- €Y6¬ì=éü‹UÆûŸ˜ѵ¤K>ËÍ’ãWnÞ‘e9™ÎÐZwr‡Ú×H>ßÉÆPÇæ;í5ƒ~ýýkܹ}‹/¿ú†å|NÑ롲 ᡪ u£HLÿ™Š gµŽ¢È1µ§(zœÚSŽŽOxñê“éŒ,Ë#š0ÐÊóœ7nðÁðý÷ßñÙŸs¸Àx8b¨ ¤PìmïÒË ªeÅ‹çÏÙßßg¼½Ãx{‡ÉlëÉ Žn”÷UyKW ™ÒPr±œƒ/8:>fYW ¤R\Ûßc4¢•`Ð+¸¸¸@+E¦$Jzÿ{ïÕ$I–å÷ý®p"#eeéV왞ÙYm ‚ iÃÃâÆK#Ÿ@3,Ì‚ØÙÅê™éíîiU]2uF„»_Á‡+Ü=2²ªºg€‡AùÚlwW¥ˆð¸~ï9ç¯êŠétBU1,WPN&\]_sq~BÐYÃùÅuQPWóùœÝn—ÖÚ`/â’}âÓv˜¦ ìó¨BBl†Öû[º€PŤ@øÁT~ÛRËuÈͽdK˜`¬†ÐJJtQ"›k,Ö”–(TfWgÛÄÁ/MJ³Øt¬×!,z¤`MjÅ·yö³Ïþ[ÚÅÜ:¾ÖßþæYöx7¶Ó<{½Zz­ ª*,WÏ‹²,À+JÊÌÂ<ÎbmÇÎlÆÃCŠè×N<E´ýÉ^ù޼þÒÔ¶Á¹Zqµ¼¦iÚ‘"º®ë ˜á¢Ïüñ (>‚^ ´ÎèiÈíûý*õ ›Ã*c“p”ÉQ2vz£ŒŸÕÔ<­$Z d”@BЭ‹Ì4îsÔCÊÄØ6ã}‰ûÙõ‡9s¹nœõ{P‘{7¥J nð»@áè¤LÙ["‰Xí¢:X ‰’ ½ŒI„¡Æ“Ýb!õ6fî¿¥ìCî7€Ë(1"AôϦÏ}wè¿44M.Çs-í… ÙÁÎÒ±\5Xg¹w÷.{»a…M…†Ë/4¬‰ž0Èàlî_³`µnùîÙKî?z÷?úˆåzÉ?þÓ?ÑEKâßû½ŸQO&cøOÿéÿÅš†;GÔU‰ (+¤ ÛGºQýèGõä¸xÝÑž2§ÂŒ±\œ_`CI…ó2¯ ?ÈñIuA2O²JÁÛñw§õo¬Á#8;¿àìü‚'ß= ªF!™Ogìíî²·ØåÎÑ!ÇÇG,öv¸stÈÁÞ;óEtŠêhp"|ÆJôϦ@PIE%5ÂyPš%pUßÙ¡1ËÎÐâ¹î:®»–Æ:.›5KÓrruAg(‰‚µª×YŒé!Åø<Èïbï‰}~TG¸ôš\Êæ kZh…³Á KŠðÐ(t\+Õh·Ö’F™4]3‚U±$Ò0lÓdY½S6¼»Þ]ï®ÿ†@à1ôâæYÄ Bœg$mtZë±q€Ú4ÞM"» +ššÖ!Ä<ø/¹t€‘Í—Ø«Abg1ìLjl«±¦¥k,RèÜ ÒtÅÁÃ5‡÷d#¢ ïÞ©Á(yiŠeZšÏ:ßç{ú´Gi<.¥‹¤}7’œ&oÔ¾‰C¸8È”De‚u8'²W|ïŸü–„M˜q&(ðh¡2±\º»ß÷ªZï{ÿñDÙdžI*£>|m²JÉ÷lhÑ­"[G¡UlHûFÊ'ð#1YHj‹q3ëœÕ³Ÿ»ÏÁÝ£OöFã?f©t?£@JŸ<¤¿F„ Áœ ㇲi‘¡€ï‡aÆ´xo‡£oÖ¬uA5›m-ÆÖ#nèELÏ."[!\ ¤ó2ëýlS$ÁÂ%Vªï‡[CT|ê5ðŸufÔ)Æû÷ޏ{|ˆRš/_ñÍWŸñ?ÿ«Á‡~ˆRŠ»wxüð.Ï^|Ç_ÿÍ_ñêÕ ºPt¶awo—jRçAµÛʪÀ AÓ®BÑ9è¬ kÒÿ6­>»q˜ 5#ΆÜ©$ƺÜL9JtM‡RжóüêÓ/¹¼\ò¯þ§?ãÿ§Ôµ£®*Úf™YŠ9‚%˜d |Þ=Îvð ”ÎÏ^`F•Töë ¾ 747iÓc6å ͹'[9 ž73Û7ÙaýsúöÃI7ʉ¯#²˜»i;•^›vc« !ÅX–îLJ˜óc-{»»ù9Ãÿ&ÝÐ [äV«iÖdUÞc00s6€å‰•œÿ<<8±žè~c ———,W+œ÷ÔÓIü~—£žHíã¹æ³Oh¨ýh`ê7†–yXÄ8&Óðáµ,ç~ý¢·{Axœpù,NuHÈ÷2^Ózpƒ3SDudP¦«oªß’×<~ÄÙ’ÐÅPVÃÐ*ÀG›Ã`3æ™L¦½ª‹^1ç½g¹\è°O…üÍÞÞ?æÛ'ß…ÁdÛ0)tÈxX7kÊ¢êÁš›Ôe‹¤.Zë„ ç_}ý ß|û-Óé”ÙtÚvRRU|ðï¿÷¿þìs¾{öïÞezpŒ’’ýÅ.Óªæââ2dX‡Ö»»»|óäÛ0¬žµYST:h“Õ·Þo†•§¨åjEQ–XoAº]Ó¹vÛ=m8= *@gM°4qá%uUòàøwŽŽØÝÝE"¸Z-9[^qröŠu³ŽyZ’®k99=EÅý²šÔìî.8;;CëÕkƒõaÛ6¨µ ʆ¸Gôôa¾ÉíïóMƒúQæ Ûíì†ÖpëCÞŠ ‰ÄzCÛ5¥Â;ƒ*ª–üÀ®Pd{LQˆÙ”õjÅòú*ƒ/.*ÄÀ3ßocZGïúôìŠÀÎy-H¼iM7Î Ú£ùמMCbLVÅ5'#å"±Õ34™-Qäèuܹs‡»Ç‡ÔU2?ðxÓÑ6kêºfµ6…º(9< ™:ÖZ®¯¯)Ë"ŸölUC ÇÖt´]ÇÙÙÝw ýI!UÈ]À#}ð/”FâÃŸÒ çPÞÓÅ}Ÿ¡j…a¶’ËõËm€{Î"òÃ…ï}¼aÆ{š¶¡*Ê`'èϺ$©ØÁÓ.=×®ÃÉP‡+©{ÕN¸6P¯ÅúлÁ’Ù"½eë³’ cŸöWãÍÈIDõ¸ÖÔµ-Ö†}±Ãn%H<î‰çdoÔŸ­RÉð*2Þ-ãšL›ýͳOlÙ}üy~pžËœŸ$3yËÓ17ðyZ¤ ³!‚ªÝv]OŠ gP®{ö;L'UPg[ÏùÙ%ËeÃbw‡ÅbŽ÷–¢1/.L>XüÝòüzïYweYæzëÙ³—<}þ”~ôTÓš—/_r~~æó~ôãOpÎsuuÅÅùû{ Žïâ­ÃK‚}1;N•wÎprárFc\¡[†>ã»È2˜’ÖËÕå'¯ÎhÖ ¡2‹gªÌ¦¹ëb怱áóéÚ6«ŠÓòöÞ¡EplPªH+>ZºYÎ.Î8??ã+!£×sïî1‡ûß9bw±àèø{x8::¤( ¦“:*Otîs­uc©¢r*ôVAµUÕ&¥Å8Ç^Yb™±nZÌlÎÊ4\ïÌYÛŽµ3,­¡ñŽóå §KÓ¢ñ4Σ˒Ê+LkÐJãïÀK,Ãu9ÊÓ²"ª¸b¸½ŒçƘp 3AN •÷ÑTƒ eUÅü5È ôN0™O‰ÞsïÀ†w×»ëÝõßpxÝßNð¿IÄýž¿Ð¹ñŸÖwHm‘z5(Yâ)@ñ›là"§³ ëzÝ ¥BëÛuHV!+”’”e‰s×½…‰O–)b<¤û´¾žAÀœÌ}Ù2¼–QF—•tÖE˵ÛXJb`Ká³²!…Á‘ìïCq1DèYQù”íà},Úƒ–ÞúIŒ!7xŒ˜ýý‡íÑJ²öÂûÌFÏïKôv7ùˆt.çX$@EjÕÝÀÒÂł֯ÀÙ<×Ù *%1ÆöОCFLþº¸žÄ-å|doeÑöÉ$÷Ä”“еõ={?B5’o®*Të8“Wð{ŽªŸÀ‰þÝôÓÏóJ? %~ã9ØbW3`|å&JB=•åþ=[3¬-— 9ðÒ * A*4¹_|þ)~ð˜ŸþäG‘•RIö÷8¿8áñ£Ç|óÍ7ÔU…[‡°/U?ìÛ<€ÏWg¬›ŽõjVcº–% !»a 7œ® îW¾QbÐŒ†/ Ü(áCæÌt>ËÌ[çÏŸ½äÿü?þ/~ñÿÀÝã#‹9?þñGíGæY  ó½onº'™Á/1$–‰Þ bä¿Àõ¦/ƒõã"£psÓì%J–axÜ&kÿ6´úMlûÛöÿlIズ¡Ð—×W To÷%D†¿äpèíIcTyc-k±Æ0Nù>y·í #ð7­µ™˜äê>JYl×Ñ­×øÙ,¼wc ÷ñì£Ì`ȼep~ÿ6‹’ž¡:î³ýÈ&)(>Ü­aºÃ{ùºL—ÛP'*ܶ}}BÛ¤”Ôõ„ë«¶„!” $‘¬e¾RJ®¯¯)¤@KÅl2 >þÃá˜ØR»Dk=C¡Ôðk±ÎrvqÁÅåµTº@j•WWº¿"Má6qýº÷[ë¢Ìèó=(î_Ãì¾1hdlex+ƒYôpøŒm~¶®Ó1â·B,çFäÑXŸ½â]ÛÝ´8s!J0&xdïñ¼EùÌÔÕZs|çï¿ÿ>ý×ÿ…—'§uÉl>‹CnË$Zå0h’:ÒÒ>$“ÙœËó þñŸ~ÁÝãc>xÿ}ªª – 1ø±¨ >ú>ä믾â‹Ï>çù«—œ]]òàð.Zkæ³óÉ”§OOøÕ/~Ň}öìò™®ÅKýæÝè½õ~n¬­5D»Ë–Ò¥ªpÎÒ¬W8«1¦  c(”b6pçè{ÇÇÜ¿{Ìb6gow—¦i8½¼àùé ..ι¼¼ mÛè /°Î²nC~ÃÞÞ‡‡‡4«5Ïž>e2©#I¨Át-M#QeTÁ’É$…ƒgƒ)>د¾WŽ}ÚŠÞ.ÒÑ­CAg:¼w‰­=}`V„!á >*Øxz§­ÂÃjµDkEYV¡65¯y¼Õ0 û‡@7öeá_{ÞÞš¹ãû,9%S7C`|w²ËLïÝý=>þøcö÷(¥X¯®Y^œq~vJÓ´h­ÙÛ ^áR€5†õzMÛ4´ë&0úéí]„è•Ò©³ÞÇZ-ÜL›ÏO×µHÊ{&º¢ý«â-GLè-Òç:ÊÀCŒÏ+7 ƒe©Ï õV°UFVº/Æ;:gñ¶cq°G]×L&º®Å˜.ì[eÉj¹bZ(:-Xž Þåj³›¢²ÚTl0ŸdP¶ŠA+-»¢((´d6ôýU"Y…ZCE0MPUE|7-m×Ѷ!¿€¨ òƒ5—@.Ÿzz6=ÂÔ™ýçL`’÷,;ä@µ‰àFùÖç›Ôöv¡ÃÊ^Ý> ¶ ­×­ örAa¬iœïJ D,Š‚½ÝfÓ© ž>ÎÕõ’ÙlƇ¾€$ ¦³‰ýƬ ' 2Š’®]ãÑ<}ö‚ëeÃã÷ÞGé‚Ï?ÿ‚çÏ_P%‡Gá=üú‹/ù櫯yøà€ÇîS gº`¥,ü­£?ÊŽˆ‘C¼á|9߯ÇÉ«ºÎ„YÉ!(®É€×3i$á‡}dÿ³“Õî<ë¿ßå3<]¾úú[¾ùæ[´’ìííâ¼g±X°¿¿Ç;GˆØßÛc>R–T°»³‡T©¤Rµ(éÀš¬ŽÁÎtˆŒ¢Æâh­eí VI–ár½æÉ‹\£xµ¼ ̵¡DQKźs¥‚u£ ¤NA. Œˆ€K¤º dÿ÷©Çƒ¤‡ôƒÛI‘”!è -1¦WÁ Æ1´Èz6¼»Þ]ï®ßé+õî©H”¤lØÝ÷´§kW(i€(ÓÑ53$Ó{8@WªÃv-…´Ì¦–É´B)ÂD‰è/î·!þK/‡ß<Öû?σ‰Ø=§T"〼Œ¡G‘X%¥Ì™ÙÒŇÃÃû¾@ C`c¤&ÝCc»±ô~`£±-ÜZä&ÃÒ›_s[Àì¢f`m_`ï›ììù˜ÂÕ|*òSÈV|MÎç'k ¦µ`mgу=«r0›ì‹Ì¨²ÈAÆñ@–#»±e˜çomhCì éÈT9“R¢Eh”¼÷Xï£AöwµWa¥ëÚ\Ì'¨Öšd¶)ñh­0¡i;<2XˆEæÒm¨Ã×¾É"{ûæVöÖUƒÆ0ÛøÞ†'A¥ª3ÈÑ´ÚÈph]pròЦiøÉOÆòúŠ««+º®ãâüœÕzů¿ú"|¿u¬–+Œ5¨2zÚäÁ]k°­A É´*i—&6ÎÐ4†¢˜à…!py˜m§R³3`»ÄRòbD¾ÒZ!½EbùÃ?ø)~ð>xöìÿð÷ÇÅù)G‡û¼÷Þ{ÔUÉt: Ì›ÒÉ‘G²ˆ>¾Ã¡ë›ËÈ'¥ ûEòr¥«† ¢³[,^ÄVbÿ6Û·mŸj¿"‘AX†ÀX‹–AÁQèk܈»mŽr›bÌ—.ü3ùõE™Ùé¿•k%3V øÌuÞ†qTàØ¶‹VZ6(îG)ÄÜ 4üAÔfNƒÊ!˜âÖçæ>¸ÝÊcû0ðõ (úàÕ¸/¨"ZäD{¤®íZ‡a¬HçBô[W‚²Ôk( Íl6Mâ`2R‚ üíñ蘑!¤FzX7+V놶³(]ROf”eŸ%5Ô ï©0þ¶ƒ·)6Ï“Mª7 óoÛßoNû½>×~‹×ýo›¬ÒÛL%{Š ¢kÛ†åê:g0ÄÓuDf|Æ@K²XZZkÙ],xxÿ>îÝãÙóg4«%ízMY×(%Y7mo )Äj‰,ô‚ÿ„IgX­V<{þ‚Ï>ÿ‚§ÏžS×5UYFVn`ÅñðÑ#vövyuyÁùòš«ÕŠZj&Õ„ª¨(UÁ³gÏùüóÏ™îÌ)Š"Þ“¥cbÐ{ï2dÛ¾}Ûçï§mœ±L§5uY…a±µ9 ·]­² ÅÁÁ>;;;|ðþ{Ü9:àîÑ (µBxÅzyE³ZѵM¸ïñ,ÑÑšf¹Zá½g>Ÿ3©jö÷÷¹¾ºâòò ­MΘi›†jR£´YÂÙácHî·U¿1t9ïCtY »çL´¡pÑêÃmØöÄ!ÃóÔu†õªa¹\RUxAU×ãp`@ú›¡Þ¯ À{ͤçG®ð¯Íó¡Wœ¸”ç3P¢•SÁBE!U*JºfMÓv\]^²¿ØaÕ,9}õŠ«‹SV××c#É!ì³Jw0'DŒeµ^‡áwœ»A¾†žùñÏMÖ§ÞA+…i»L63¦Íõ¬P2“Ö«¥Íçû„è)ì-ñÞªËd_ÕÓ(‰q–õºÅ ÁÞÑ!?ûÙÏøä“ORrv~NkZ¼w™½~zzÆËÓ.—KÔ“'|óÝ“pæÇAk zõä6ÊÈhGAÜ4Ìwž  cþdOtK·Õ“-}”Ò´­A (+MQ¢K ¥æ—õ.uà@Ñ0Ì—Èõšë-I¿õ¬ó¼öÜ|^— è¶„y'°ad4èÜ!(¼D$²…çg@îÈD*¨ªŠ½ýE §Ù À<¿8gï`Á‡ª†’ÅbÁ´žpxxÈý{w™Í¦ìs||ÌÞÞeYPÕeÜ/S!€Ía¿õÞ£($ÒËZS(fº@[ËõÉ/¾üÛ´,…ÄK‰¯*DU¢f5^ ¼5¥ö!Zh³pJ¼8òÊ„=‹±ŽÖ[dY°jê²æÙ‘h*¤B2«œòIB¨¨´váüòï” ï®w×»ëwüòƒ ÖätQO`gm»äî=Íñaà­ŒEM: ,ƶ±È‰ƒXiCRqÞýÀÖo }›fýí,£ùÀ'"@›?75†ÉÏÖ»ñð´÷"Á_TNNNùÕ§ŸñìÙ³ª,ٙͨë:Œ…á¢1†BÀrµDô¦]ã]°Q*¥ ´  ü(ÿÁZ ÎSÕ5Mµf՟冀Q­f‘ùý ’¥ìî.ø9ˆd_óá`_J‰éëuÃjµ Ò¶ Ùæ0? n††â|Dú×vÛ¹˜÷ôÁ½HêÅÍû¶i³ÕC|`³±i?!6Ãùf XŸÑ³|P‹ÜvæÝÒ¼nÌúQ0u¿W«/_¾äòò’Éd2¶üüôl´m;¨7@#­Ø?8à“O>á—Ÿ~Ê—_Íz½fá{ou%6ÖRÃ^ºoRöŸÑjµÂ{Çt:åª,9??ç³Ï>ãÑ£‡ì-v(”ê½½ggg‡GñÙ¯?g½^±Z-1; „€Åb‡½Ý¯.Ïxþì)?ÌöÖÚ`ïRVq¨2ƒ±´1<ïÇk2ìÂmÛЬ×Tº ±%uxoÎRGû<~ð>üi=¡Pï ÖX””¬»–‹«K¾{ö”¶m©‹’åjM©%sLêŠBæÓ;ó9uUSa¯:ØÛãúꊳó êé$ P­‰¡Ñ×L§Ó@­ó׳ȷu·[6÷›aý¹mà> Ó9iŒí-8ÃËÞÊR¸›YEQPUU°lÅz{€À¬çÅ(IlS:õd„Q_8ø¬6A†ÜãˆþlÖZçôÎ4½ .þÝ ²ÃhHÊDêLGÉmÆÚø«$…R[˜˜ßNàúMúð›`>·?ƒÄ×÷À›qJ!Xìì0ŸÍPNž=çüüœ²,¹{÷.u]ÇõuÜ ±¸‡õ4™L¹¸¸ˆÀOÁþþ_}ý-/_¾Ä;ÇÁþ~ð!¥.xþô_|þ“ºâÁƒùþ©þžCËÙ+©cè=~ð¼%…ÑÛÜÛÔã½:yÅjµì$™@˜‘›çAܨLJvÄÛê¶€ŸÃúKË8<%93x¦e‘¿o>™b­Åz0M‹iZÖ×K¤P|÷íwüÍù/ìî.Xìî²··Çîî.GwÙÝ]ppx©÷ö(Š’º®±>Ø>ÆÖ1:M$›jG1­q t]bV˘.ðë­ Üé%RI ìËŠäˆÁïÅî.E]áµI , §4®tJ±j]4ÏMêH)B.bç=Éu ³]P « L±ƒfîØðîzw½»~'¯Ò<8ü'Óp •%Øð]ØÍóТ·h [¨)l&2¶MôÅNa‘ÕQT]8ªÚPO6lÿoò~û÷9öõNï%ïÉÀ“”* Ø¦ 42ŒÛ“:!Ù€8ŠÓÍf<Ä Ff–°÷þ‹WÉÁ@#…â¦ÐÐx·•L±º:(æ’¼82•òà?Ú¤()G²[çqtÖá­E‰ÀÔI^çv;`}cýS )]88 ^,åä‡+“mU\Æ»^¨‘S{R ±G…Ò@Á}€h"°‰hãächSÛvèI}«`#ód”êo††1…mõÅÐj*åZ|â<ýž¾±roìy7ÙÁ£çXŽmh„}Ó=lŠcˆý{–2HD­süÕ_ýÆtŸa¡ˆžkC(fz/¾µx,°ŒÁG›¦ù|B]VL¦;¬;Dz=ôÁîLäpîä1;°Ãâ<(S=zÈïÿþïñÏŸý áV|ôáûhü>•ŠvxÚn1Žÿïÿ‚Oÿù ¤*)Š¥“é4 “Àz;88ˆ>ö5{{»L&u°ñ¨*ê*Èð§Ó)u]£TôIV` #ð@Û…P0­U´×J’ñäÓäÞJ‹,ÏMŠóÙ¿täFã7›6¬Ö¾çýë A„“ÉŒ¿ø‹"R‡AsÑûÞ‹·l0ǃ¨ñ>åEÌk°67…ƒÙÃÛÛÿLà”µãLnü€­˜Þˆ5–¶i°¢°(­²ý“@¾ÕûÝ~ÎÜÐz³y»m(·­áK_Ÿ@šÛ€ŽÍÁ Ö: g†ƒóôul*Ë’6ªÖ¬µc)t ôQ2/$“É”õÅ%Þ:f³³é4zRjƒñe­Ír²ôÉŒy)8;¿àêz‰‚ªªø1 zc€nÝHµqÛ°cDpÌÒ[@‰75ûoóµÛØò= ÿ›Ê:_d %ÁI¬è½…­st]—m<ýàv¸.’Ý× ÛöœøÜ|ôÑGñÅ—_ýå’Ù|‘‡""Ú„4=èm4Ò^˜À“É„ª®9=;ãoÿîoyðð>û{Ü?> òæó9ÇÇw¨ª’³³S.¯/ò>Ž`™r°·Ï³ÓW\]\r~z†*ô`¸¨ÖJá»"{]¿µ½aÌ1]ËÎlÆÞbVŠ2fUà³9{‹<~Ì£û¹{t'‚×cCtµ^òâå ž>ýŽÕjÉb6 öe{„Z&Öa»ó9;³mÛ2©'TEµŽù|Æ|gÎÎjŲi¨':cpÆbÚS¤W¨BdûœñÎù_§Ö~«u*¢iŒZkCSÚ¯·„Ö¦õR–%Fº¦eµZ±Z­(ª}ò‡Àü÷en¿±ÛB¼Ù.l»²…QV/¦š_Æ ±åçÅ3Iô!ÀÏž¿Àƒ1¦mi×Ëž­.m×Ñ´!”UÆÂEÀ£(4Æ0"Ù¢ Yø¶m@ ¬w´q°Ÿ†©Âú´†«=A©³6­‰AŸm¡n¨hä åÙ¶{èÅøLë"`c¬Cwöð…æË'ßrùêDÀBú¾WpÑ1×Ñ.䟱ØÝåñã÷ØÛÛgŸýý=¦Ó óÙŒBjJYD@®åÚ4œ\œåì¢R©°–œG!P‰°ÀÇÞYŠh³•q×× Jx-‘Jç h¡‚úÁ ¨§ªZcUÈ õÂ㤠¹oRÐy:%èd¤¬i…‰3¹±ß½Þ]ï®w×ïüå! ç³Åœë-¥Þv;ç¨ë:vâ5~í·­õ¡Š„¼÷Óx¼øÝãz yg1]ƒÄ²»3aZ ´ ŒBᡘN°Ó:áÛ¦Aã¹ZµtmËdgU3ÁgUûz:GUÖ›³»X°X,ÐRÅÜ»%¹Ô&f,ÀrµæùËW\\]Ç¡ÉÀ"%±¿/2õ› ¨¿ûl)Iþ+ÕoÊMVIŸè¬ƒ"ÙF°GiT€Qé$ ûgf1oÜ$ ¡,K¸{÷.ûûûœ]œstÔÛÐI@¼PSdÈýñ½_}&„A)Åbw—v½âÅË—üüç?ç½GXìÌ)u,³ÙŒããc&“ g/Ox~ò’wï²^/‘Z2›Íؙ͹\-9;;c2±¿À«W¯ˆ&/£º%EË •ÛÖÍÐÆËšÍ°3›òÁûïqxxˆжMPþ,v¸|̃{÷˜O¦T*œƒ!¬3«;kqÖ •äÑýû(]PVu`ÜZËjØë…”h%±EÔr1?ÊÄ@ÎÓË+´Öe²)º`¡Ò6 EU¡‹`™lW†æß[÷ƒˆ>ãçHk2°¤Ä@daǬ 9È7ó[†õB è` WWW,ô.R†ºš-`â8Dý·ö½I%²}/ŠÁ¨1dWD«¯äÈ®1UD2ÚUUE»^áœãÅ‹WHZ†ÚªÐšÎØÚkrŽZn)¤RL'uÌëŠgTU•AȤ)ËëMׯú,æ£a#)ÔyÂõa´cåÑký5çÑîݦ Oúú4H¿s|ÌG?ù1ý÷ÏjÝb½d!)Þ¡‘™ÜC:K¼è-LRð=Ûz¼öQáí{‡Ç¼fz›,ïl¶”²ˆ`D¯˜ÓºÈµ\ZÃRȘ×GÂïñ(eûAì*Ù´gÍÛa&Þ fVJsxxÄþb—‹ÓS®ÎÏçòkqÞÇhy#gá{?Û)§Ä÷aæøqU¸™=&òðZf¢XèU£òÒõ5¡– %áîñ¼\/W<y‚õŽÅbÎþÞ‚I]#èò¼aÛÙ=¶^Lõ Ì5‚MôÓ篲àG?þ Æ~õ‹_ж-e¡yôè;;;¬×+~ù‹äòâŒÞÿ_ÐJbÚ–RI„ˆÊÙØsçû$~ƒZÑ»áÔ!—œ¼:£iºœå‘íãòý#ÅcO !ÒÙ³™$„Á…Iú3%%Z„™!>„9'õ‘BIBÀã×+fÆÕ±-Æ9¤V\¯VAeÉ‹ëëëë%'ò%º,øú×_S×&“I°[º{ÌbƒýŽ÷™N&x%yvò’—ç§¼xùÙY´#gk —þ#º)ÑÄžXÚ™•ŽÕÈNß¿]0Ÿ¢wBصs©5¢(p2ìåVJ¦ZÑ ¹’°rΘPwHij@âx6¼»Þ]ï®ßÙ«—ñöþäUþ®†AHVBDdMÛÈF£/Y\ °ƒÕ·a‘ Œ7ÂÞ Ýÿ³fÛÒK7C—SAå2QÊX‹”‡CJw âÀÔX BÓ˪í˜O§U "“~èÞTiÈ•J©àem å†=„‹¡HÐ*âEP[¸f<”ð2áÊ£þxˆŠxómôÂöR"é½èSaêt1ðh¹n)f*úýÇŸ­bhhTqØx0gFŠh­°®/ Ó¡<ÌÐB ñ¹lîï™ÄúÀÐ"°Tcb,³Y‰ÄL1°%Wk¥cÖCg˦Å…Œ^¨É/1+[’º!6¿‘]éBjq@D%{视㖜ËHw¬EÛêëÑ›ž¢ã‚³/SáìœCéë=uUÓ­×½Wg*¢·j8àù~üøGóóŸÿ%çç§ìíQA©4Z)l´Kèd2a2RϦXgq2aˆ¤]OJ…ÒÆ9šÖp~~ÂÕ²áôªåübµ©%BzŒí¢g_Tï=ÁÛ]×RhÁÓ'ß°øø=þÍ¿ù×üÙŸþZtmƒ*4Æ8¤¶Î;Vë5Áã÷Þçêºáüü’®ëк ®&a¸ªuWtÎÑ4ç,Ž5p5²+IùR Ê"„éJ%Âû‚ª*)•fowÁÎÝ{Ü¿{—ýýƒ8„ÓÁvÎÿcítúF™ŸÙlK3ôÙZOÁà³}[ AÆü°çØœ,„J3~«òk‡ß ΰñë¬Á8ˤH÷]õ‰ÿ!çX?˜IAÛ põ0»ûIìü¬w`mí+­ Òs"¢5Õ[òto í¶³åÅ-£âÛÜ[퀆AÌ·°ø†ß{«—z´ºJ°¥M Š`9#d², ^ñˆ`-8›úÅ|Žö®W5$UÈ8îâ¼gK‚æW+^žœpµ\!UE=V™öHäÏK¯?Ïø^C¾@Ï÷ô¨ÿ¾C™ôó‡ö?2Íó­ûׂñ”!¥””V’2 ŠC_-yR £u\ªíÖ¦…•R %ƒÅǃØÛÛãìüŒë«KtQ ËŠZD@ß÷Ä?°zpÎ!²’¥œÍf3–ó9'/_ò‹_~ʯ>ýŒÃƒC?~„u]h¬qÌæsæó9ß|ùß>ýŽÇâ:måúÛ{yyI=™2ŸïprršÃѳŠAläÒ`{›—µóc JHÜÀïýô§cwg‡Rkª¢ ö|EÀMÖuEÁîîn}žL{o~]gøöÉ–Ë%JÊnÏóf€´··ÇËW'(¥X^_ÓumÛ"µ¢È¶BŒ¤Åv#0z6¸iëöú]ëö]Ío<ÿb`›)UGÒk-Ë’B©Á@x¬"2m¥Ȳ¤]714¶a½^3+‚Eb£¾íY<yP÷{Éö½”QFÏmÖ4b €œ™î ïTHu|:dTPʘeÇš-“ù,„¦ ØÙ™ry}-7ëªDkÅO~ò þçÎÓgßñÿá?Ð5-“É„²®¹¼¼b6ŸóôéS^¼xæaÖv] ³Àmp•1—*¬Ê¤àŽ68°g£[Ñq>ÒÆù•þ}ÀJ°Ö"Ë’ƒ£;”“ Ož>¥36Ü7P¯§Ü­Úì½ èe>GÒ#áñà‚Ê)X3ö=ˆô±3É¡»é5‰>ø~@ÐJá­ÏÖÃÃl ?n¬‘J TðöÎáL|Nô=ŸïûÆ@,ó=“Ÿ`?$¢Ú{y½b>™Foü]L×Pð‘I.Sv•ßþ™|?¥¶ËöÂy`- DHoÂoîµñsMŠßdכ­‹BqtxÀl6ÃXGg—××”UÉîÞ»»s¼·()°Öçbh½8¼C0,ÃaRb­çârÅ“§/˜Íßåúꊓ“Wèþýáý×××üò—¿`:­9::@Éc( û©, ÊnÙ[FD›\{ûѶ5ΠúòêšóËKÚ®ƒœt38Ê6Ùb€x$Eg40ÈX‰}œŠùü½ñª†Jžû"Ú(Éø?•"(ïAD•ñ¢Õ]!ÅDS—U¬Ñ;³y°"X7v]‡±†åj åêôœ¥¼BÁ³'Oøå?ý‚Ætܹs‡IY2ŸïÐZJÒ˜X¨‰`ZO^ЭCPÄ>?<ã~ðLŽê'g£ÓCœoÙÕÑv“Ù_„|•¢dG”¤šN˜Ì¦eIU×”“ ïªÐtRÒ ÷J¾Þ]ï®w×o ƒÈEÜPz^ô!CΚ¾0Kƒ[ÁüûcàÆ€'âý›½°ß¦©I˜>uŠÄœs£¦S«ÛëðB» zÝf?Pëë2B“zÊjuA×ui°l;–mÇ¢’Y¥#…ÀdFY›„5$q\æ¦ûÚg&ÄWöDTÞQR< jKƒ¥Ô6Dæµµø"uEü<ßÔ”m“E>z؆pëðøAd²A³ƒµU3.|ï~ô1BJþï÷ïhš–½]Rh%4q*P.jB™!ã]XoxðB²î ëfͪéhZCk ×+®W-ËU‡ñ-4¼ík:í*ƒýÅ‹ÔÌ…r!ÐÚ¢¤ãGÄ¿ýóÍˆŒ¥4 J}û…À!yõê¥ò'BQNùæ›'<ñ‚óósÚ¶ aöe mK­ƒ]R×¶á9ìBSXÿÁçu½»2Ø?œW'èLÇùù!ß=?Eké÷xpÿÇÇÇ<~ü÷?|­Â³TU%Ö¶± ÃÞ0-²\½'OíR ë¹ØÈÉüܼiíô ™ÊÊ5ç\´åRàƒ<Ø%oû·1õY5.v2íq ×Få”u޲,~ƒskô)“]‚ û²‹!Þù¤HèÓ Óš‹§.ŠðÞåÒ„’ÜÆÐ£¦p[~Ï뀈m÷u3ðyÛ+ÿœ×ù’¿f¨ž÷j:ÚŠ!«å’ÅÞn|ï¡À¸.† zP°»¿`o3-ª™$ùsçÈpb)¤ˆ–ýk+ËëW×Kœ‡²®QJGES²4”ýÞš­îÄ ;Ê¿öÞl Íÿ“­VVßký ƒ–,döaN^íAê?ôG£ŒxèpÛ™°É u™±[$‚Ëõ¨” !kBî¡Ô%;Ó …V4Æä¡Ÿ‹D%¿÷ÓOøö§üÃ?þÿñÿùLw'QÁ¤X+ͽ;Ç|ýë/ëÝ;&eE×¶ù„R±Î÷|VBÆ>D"¢-™UȾڵó›ìí\üù›{MΰJài|¥V wîóÍwO¸^¯°ñÜQ)œ.KÚ¶CªŸÒueQGe½Ï¯QÄú Yz"žX—z‡ÂIy:p§ßÈßóÎgp9œ÷½2gÓZÑ–C}Yâ¼¥mMg=1÷åæóéYèë‚=¸¼¼äúò‚R)*­™L*æ;s¦ºàÕÓg¸ÖÀFN›gã›À¾çe£¿Pò"è7$ºÀ𠑨0ìÙÞIF».-%÷îÝ£( º®åù‹@•¼÷ÞC‹)¹Šä–dWåÚŠqÐÙø½¥óIj¾üú ¯N/yïƒO¸wÿ.ß|ó„o¿ùš®ë8ºs‡û÷‚““NÏN9ºsÀ{ï=@ƒ’ %‹|¦‡‰½ËýLêG„ ß؆Va1ª%}V6„¿oLǪY‡ wÑgQÝTðFBÞ@a‘ó©âz×ñ,*¹ô€Çp-()C ³À›F¢ àL8+~ðBJlD•\RÂį•x*!Ã3 x]`ŒÁXËDktQä="Ô*†Î §/^pâû–@à ûÃbwTº¢**­;t¡QE¬D¾»Š%µ”VØÎ²\]cÚ.„Ò¯.È*DO´Ñ]hóªÉ„Éb½»`2@QÅZ]‰¸ I18ólxw½»Þ]ÿ iê?¶HgD òp€=“i“)–˜%#ÕŒ˜ÿæRæ¦dÏ$ØÚ¤‡­( Îñ£=PB²Cq®Dï…¿Z®¸^®Ø™N‚¼uc¯Qš¦ÄâÂĈ CC%„‰3k%q.ÜÖE¿lšNg£ ¤pi|œ¿ßE†nøüÌ@*}öU"„†ë*’ÁryM3«éœC%å4x§F%ëì0÷™Y–Ч¡/ëæ½W2ØÑ$¿Øà îÂL36úøÐ&Œ™Zí\Ìkè‹ó0Ày(Ь×H¦í@JLüœ./¯XT»}Sã<¨Ð 9ocð^XŸ*~v.5Ÿ¢W6ôM“ËCCkÓp¿o^·®Rk)FAÍ‚Û}9_w¥{-¡çµ(ïù—ÿòÌRb)e,¼€Ïì(­®ëç==d:ŸóêäÓZ´Õ¿ÃF¦‹0ÅÓýO~²"‡‚vm‡µžÎªéð€gÕu4­£µ-Ô¼‹ÖñóÙÛÝãüâ ë+ƒÆÁY‹TŽ¢P|ôÁû<¼w—õò­$ò@^F¿ëº®X.¯QJs~~ÁÎBó{?û}>±–§O¿ã›o¾æÙ³g¹‰NÏlYUt]G=©Ñ…Šã‚ºª™Ô³0,Q ' í &2Ù”vø®åêê­Ó ¾}ò’çÏN±öï™Í'<|xŸ‡îòá‡9<\0©‹0˜BPW·×âG™ŠC•ïÙÂøï±žz[21jnmÛõŠ3!c¸ü÷€oaá§7km°LQò·–Ñûz“½£{–|ZOiá­EhEY”(­FÏÖæPþ{¡o6¿`¸mˆ·m¨ç²uÙ’hÛ + û=}0 IÃ,ÂÙ©Ë" ~ey}Í"A v9~°×M&5“ºBK™™Œý¾”tb»ssP½\7\_/Y®× %*¸Sˆéx0I¶ »åS#¶Í‹ÿmmª¶­…Û°D½ÐÎ ‹2›bŒ=Ÿýଠ+Í4Ri:ÛÑ´ ÎÙhíáGYP}Írû½JçXY–£Y·üò—¿â`ô1³ù$0H½Gš{÷ï±³XИ–ëõ’I]!¥ÊJ%7¨}Š"ä—T³9EY!tÑ«—Ä›Ÿ½žIm×ÒDfzsT“Ó Êªˆ9?.ûFÛRícE—TEY!\¨ý¤ÚÆ@»,K®¯—\_¯X.—4MÃrµfïïáÑêÉ”ÉdÂt2¡®C`îºið8¬1}ýmìˉE!ØzŠlæÝܰ¤Kë]l_‹ùgŒzŠ*•%m£i›`û”†À2Y‚&©ô@‘ןV¬”º®cµZ1Í‚œupxíó[°È»™ÿ¦=‰8…ç þÙç 8çÐD¥ÙÀzUëÀ”ÅY¤,æ;̧5Æ„œ†¶m‘B ŠPSTeÁ£‡x¾þêK¤€º*q.*¼s´mËÙÙYÎM)Š‚åz™3CtQ„:YJdì+Ò‡>$(¬u9êߴý¨7ØöŒ¥ ¼-7k+Ð3›Í(늗¯NèŒ6¸!cÏâX,v°'øà=¤ô=”ž“L¤Ô»ÝöÜ*)¸Z5<}öëàþƒìî-øÏÿߦmÖ)ù“?ýcî޻˪YóÙŸóìùsþø~Äþþ.Ýú ¼ÍŸ†ï}#c)ǪòŒ‰aEbBoÃe¬ ùIòtÆr~qÁéù9ƺð•ç-™€“’‰$DåSÊÉ6h±ÿÑ= =sÉŠTJ!“¡Ð*(œ"€.„È€g²Ôô¶ˆÀÏC¦°_áÒ‘Ù“&±6ÿ»Žû\1™áp™,iCiÉj½¦í‚jÞ8m!=¶ ìV ^­CöB×ʲBò©vvw(Ë©ºPÑ>2({µÖy!RÒ›³8gB.‡‚Õz Σ¥ÈVj‰uÛ5k^žžQV5ÓªÝ=®øÙ; wLö¨¢â<ö(ïÀ†w×»ëÝõ»6ˆQ%·÷¾Ûzb¿åglýÿ:{Tâx"Ƚçᆠ|ü“— Ô5Ô¶FëJUH)(´¶1R…f®mY­—´åôüŒ½Ýö¦%*†ê&–®óa€,y\fJ úf"yþ$zCvÖ(­iÖë§’¥@²ºr$Å"øAÚüu’Ã'›‡g*Èz•ÿ»¾¾¦m–ëîÿgïÍ—äºòü¾ÏYî’Ke-ØA`“ìžžU¶d)d+ÂàTøä¿‚"ü,[ò´zº¹t“‰…@mY¹Üå,þã,÷fV@²gôÇ 2TeeÞ¼÷Üßù®ômÃÅÙÇ‹9u©r^v|wù —‹:)Q†bs,†È%¹CÄK(l¥Bál×v (Šœ×/ERIÛxˆ¡*´ƒGR²2.ú¤Öšª¨^Ð÷=ëÍ–mÛÒõ=}ÓrµÚrçø G TT‰+„°x”)©8Z$‡‚’Ùê®bÜLÚ f]Oo,ÎF÷ÆO¯†¸û“ѦÝ• QJá:Ç~HQ()¡„nˆýÚ¹"ºà¢m¶ªkNîÜa³ÞÅ›q$›ÈjµÆšÁöä"Hé‘´Æå"-s¨œë$Ɔ§p@ï5½‡>³Ã#+îÝãÃ>âÿù/ÿuˆ#UEF‹~¬.—îÞ9Âô R{AB©uR‰&;ßÓõ-ÆÎÎ.xóæŠoŸ½àøä˜?|½{÷øúë¯ùæ›o#(%‡h­èr(tÍl:ãèè­ ”*°^²n[®ú†M×ÑõkB,’hZ* DT«Ië{L߃,Øn=_}õŒo¾ýŽßÿþK<8áƒÇøô“_pttÄTϰ¶GÄ‚³X_šcmɸߵ”ý\ DJ´*P…Îx>Ñ­õcOÓ``”ùê¢:©·p”IYôüp.€)‰ÃeË´õß„ÃfcVM™NƒõÙí ;<Ï5òúÇÖÿq©ý~AtÊÔ÷Ñ‘v£…?}½’H¥(Ê!%ÎLo0A•1LJ,!öNxÁ´ª©‹2ªãéÄNfRdC*æÁÑ´ÙlxùÃ+Ú®ÏY¶EUŽbÓ*ò–bǤ…{GçÍ>Yt“ëäã³ñ·ÿà?ë†ë/çQK‘3ŠS¦·ðëû ¸H¥¦Î§hÇ8“HµS¨€®a–’x¢ ޏÿà>>äåËW¬®®@JtYf z_‹Še)˜2 1”EÁt:EII»í8»8çëo¾áw¿ÿþçF±˜!…R,RÒ¶-gW.B°.p½É¯_é© ªÉŒÞ„nŸªÐ8»Û¯±-ùØ>vXg0Ö µÂ8Ë›Ó7̦5Î2­'˜ÎÓXÃdRçë,8ÎYLìÇ*•Ƙ>ÄËEq€1†mÓb­£ëzÎÎ.yýæŒõzÍÕjEÛµ¬7›¥XÏæÔÓ‡‹gçL&¶]›?/k }×…5WîÍÉ>teH!ðÿ¨{ë€qŠ;’*oÚè&q±ÇLŒmÉûÏ'Ãìkc׋=$Ûí/`2àUpmö¹­ãǾۈ7ñ“âTû"ô[]#ê] ©Æî5¥T&ÆÉ] ‚® äa ûz¼ Ng,÷ïÞãá½û˜¶ãâô4º\åóé¶ vâ¥òzÌÍN˜ô¹¼‹àBptrŒ÷ðæÍi˜ÇL¼Žã1šÌXÏÙ6[švÍz»ŒB…3×…È"Û‡H`%ýÎÚË#¼í4‡ß¯¹ýû¿£·1Þ™°æº°OŸC"»UÂs1Vˆ ë’/»kã¨Êk÷çqXp–³×o˜ E)ºˆu¹8 «ÞæDºu>Šxu{±L~ï‹Çý£f¶èüöÙUç£;A ™Mf̦xKÛu\­7 ‹£CîÞ;Á;ààßï²{§l €¶k°^ð‡¯¿f:;à—¿ü}gøò‹ÏƒÃ'Ÿ|œ÷ëß?’O>ûëâ¹’„„ˆA¨†Fó‘s·×Dì\Ûé—Ö:œ7#Afuõ}ÏryÅòjOûn x¬eÆf"(¾/‹B! .KŠ˜nàbgWþœÙ TˆK±Îqo<„>߇}ôîüŒs£…!&¹“0¾>E ¡ò÷ ï¡7ÔRR•kó½ÃûðwN¶›-^Hº® ÄV°j7!:R‡¤…ÔÿSš²,©ªŠ²(BѺR8¢CE©ÂÓ÷Þ:´”!V„HVï,¦ ›Í¶¥ëòr“Ê}p€Z¬àr:8 Xo‡Øµ÷PäûÇûÇûÇ? Òá–ÿßOšN…}Å«¿Iæ÷cv.Âó'!eI‘rËëÿ}(X­³é­&TåïzJ­™V5Z)*m«(…ãjÛ°Ù¬Yo7T %Õð3óP5”&ÉÑ aÍÖI/ܵlí<0*…#”žùhÇ—Rå<‡±DÚ£ 6UB¢F¹µbÇj~FQLê-¦3Z"¯<6æøz€T%Hóóe¦¬µ!s_ƌّ‹!mÄ^ÉiRÛz7äïþ4—ŽOiT? ÈÊåÔ" ŸEQDÒËQε1.Âí\^·Ž©Ìl>ŸS×5u]‡r-JD«zŠ, @•±l¶-}t£Ø>(LRé…÷‚ÞJ„Ôx¢ŒµôÆÄ8AQV×5³y…u¿øøcfóù %GÑk2Zp%‚““c>¸¿ã°I›¼¡–2lµ’¬VWœŸ]ж’z²`Û4|ýÍ×¼xñœ§O?â³Ï>ãñãxöì;ž={Æf³Éñ'R*¶Û–¾·ô½åpqÄt®™!º–Z :ÀØXzç=®74ë5}ÓÐ7 ‡i[ÖW+¶Û†¾ïp®£ë ¯~8çÅ‹Wüþw_òŸþÓáÁƒ|òÉÇßý~¿·÷ê¦"”•ŠK•ÑàJRî‚À±\7]É5ãw¢ åÎq(Š‚ƒƒžzD\¯~xÃßýÝßQUŸ~ú ¬3TJAäìÏã.E†Z“ÝùRÄÏ%!¹K΄ý{pl¸$ôÙ{í½±l›.\~{øÇ~ æ~â@Úׄ€…÷(3&6ã ÖJç½ÿØìã>Ù‰€¼žŽöÊãOa‡–½OÞ}.;]ŒJœ·H¡òuïœ ÑÖ1~X+×z§¥·†Þ†w1:LØËX‡ñÖÀzeâüˆƒªªB_U$ ¥9>> ÇT)„uÌæA4ñ©éè›g¡¬4ÎÆî?c‘"DJöM Û{¹B#®–”M¾'Þ?Þ?Þ?Þ?n»}ûõ—ÿ}È‘“˜'x¿NïµÆfuI©H’A­…bRHïÐê€Õv‹³†íf[̘̱¯N)=7Ô[Õ~Bx¼…Fx‰‡ ñLBDU½Ì Úbe,å‹çT´I‹¨&Q}äœßø1›ª´M ïª¢›7ÁÎÅ×v%dp|§ÏÅZB¿ £* š¦ ÀÒÞÆWȨžJ›=âóßý[†ŒK¥‚j3½&¥U]Ó÷†²¬±.¼ÿõf‹óÐEð¥·u‰7AI–²[õˆ $ù7ÿæßðùOÛ¶e¹S"9«eJ)>úè£ÿ4Ê<΄o^C<Ú|v€‚óósôª¥(J¬3<þœËË ž?ΓžðäÉî޽˳gÏxýúutuycryyÉêjÍd6§<½d~xˆ(5ª¬BrVšª*QLßÑ·-¦Ù2[,X­Ö¬VW´Íš¾ÛæÏ¹³–öbÉåÕšo¿{Τ.yôèö«_òàÞ]îݽä®>tÎH9ä±úÑ–†ÿë ©e<É¡õå—_ñ÷¿ûï'†ìôYîqÞîŠo!ò†[Œ?R P¡<¶(¦Êÿü(¥d™ÏÑB`-Š"ƒ,Ãú¿Œò׫²Ê@Î.¡ãÖœÛ)#Þ¹~÷6ø·åÿßX*ÊnÆî8é& j?ó<9ûœó×€Ûñk•{}:ùZ‰ÄŒn¼g6›ÑnÚ¶¥Û60Ÿ·CЬµ(¥X.X›}б`;ªH!vrÓ™°Y­9;;B9¦Ö¡>d2kŠå"œqcœ‘;Ñž}Bzé~RõŸ¢}Ø…òÆÜû@£è†ø·ÍOû¯{œ·=þ̰‚ÏÉá™$Ú!Óa(‡íºìÙ'ÍöÏË““ž>}Êo~óß8;¿d:o©LÐêÚgˆrv@Ñ]"=Ä.H)X,¬WW\-/ùæ›oxõêÇG‡”“)J)æsʲ ë:./.hîo9œå¢Vh RŠƒIÍ´*ÎÒ·[\ß!¢259íÆäJz7ÅI¥_ÖÚÐ=âë톶ï¨&5õt’ßkcÂþôc?zŒ~xõŠ—/_pÿÞ]Ž‚£¨í™”*_Ã*º´ˆ.ë¡÷,NÞåÿ÷ã6ïߺ_LÿzyyÉÙÙyp=Å3Ò™Þ¶ËèÐOñÄã¹ÕÅ´6v)&±„Ð;‹³–BéáýÄØêÔ3'or0É8‡ßtmø›…:2î7RüÒxvÏ y-°&8ã¼Ë±MEUá„`>Ÿ³ÚlضE¥óT”¢µŠRa¬Å˜gƒûÏ9—‰ú÷ÙPUQRá¼£*Ê%%²ÐB!ÑÔÕŒ®ëµÐw8k‚Ï:¤•°t°ÚЮ6ôí–ãx`Þ“ ïïïÿ,ˆƒ=Q­éß~§€kýo#2ظ£Âü)Yâm↸á†H­Tf§…ˆ} "ÄHÉRã¬AÉl2¥q+®V+ÖÍ‚¦ëƒR0[ GÏ-#0'\Î&'Få8gp”Ø1Öb¬¥³‰ (‚º´ÒŠ2Ƽ Ýc\:d§™Vã¢b$ü®T°ó…DJÒ  ¢¢ë³é”«Íš¦mXE‹*YѬ‚º"X%"j»‘mqŒ~4 K¶m‡1!s¶®kæÓ “ªDKÞ!ÐXkvl—~½"D,­Œ ER(ÞŸT • Ôqœ+Ök꺤h Ö›-ç—W%ÐQ©;DÓd­x.Ý–™r1nÈg© f.;O „mÄL‡lâwœ«ž’êFûò^ÜD¶ ‚ýÞ®¤º¶áiÛv'á6¥XR¤Ìf3´Öœ!zË´ž„Âp%cÜ—ŠçB©plƒ"¤¥Ð&Äø¶§µ=ÎâÆy‰·!Ï×,ÆJ uÁ“?âó/Oß.—Kœó1®%oaHîû.tœØžŸåWök>zÄ—_~Ér¹ÌCh"sV«+Ķåìâ]È¢Y Š2®P:Ä’D@Tà)ê’“ºæèøf»f³Y±Y¯Ø¬¯è»mèºÕ–³ó%§§K~ÿ»¯8:\ðôÃøô“_pïÞ=sf“àÞ<ýÜâw]7ënôù ;×¾2ss R%)¢ºÕZC×¶¨b6b}‡3†B 꺢¬ÊLè9;¨·Ýž“*+öü ~½Z­9=?g¹\†2ÔL%¾óãEr®îÛÀôé8ïôñ{qvÛ9¾ÓÙp-aˆäqñ «BßÜ!ÆŸÃÏ<Ä»ç®DÐv1}L¯ª2ç'0:=‡±AÀç;Ç+ÎÎBQhîܹÃt2åìü"Cÿ‘Ü£en¨Óõ+TAQj¦Ó)›õŠËåÿí·Ïññ1Óž"¥âáýñý³ïÀØ44mƒÅe`¤®Jª²`>­™Ö%K‡é[¼³¡ÐJÓ[³“a,N¯Ï…æÅ|>ãÑ£‡ùÿ#‰ípüzkyýæ”gÏŸóâõ6mwðRÑ;"O}T²‡x ”ŠýVžÖôQ¨^³±–¾ëÀl:å`>g>›±^­èÜvP¾Çˆ˜[£W~æZô6ïæ¿÷Ã@:¥u.à4Æ }» rðŒU³Ê9s¹¿¡ÙnÑZSÖUSÈᚯ‘ %ÿIë·ÇBí¯õû€ûmk÷":>#(dîK“~·wGHEU…hF‡gÓl©Š-fÓ1p&W%øø“OJóüù 6›mŽ.S2ÌMÛruu…ˆŽì$®hšF½ ã•6;{q##³È]|Yå-Ä ìídm>fgýñß÷Æ0?<äèèˆ/¾ýfGmí£x}Û#Œç¢íY¯®(§’GÜåðdÊl^áÌf3NN —g+ÖW-›Uƒ$D *Q%ºRAhqÛìÌõøµq b·{aøþ ˜*Š2ÆÌ¶¡3ˉ±ñ}o?Ž/ŸC1õj(r·FYhæ³TU…Š@ªŽD‰o™/ÉqÏеÃ5¢ X¶&»Ä˜ßÃú“ª} ®§?;|èjóósêÉ„ÍfÍùù›õ¸{÷R‚1}tp{Àþ($bŸ$RªàÍéÛmǯÿü¯8>ºÃÿñþOÖ›-óƒ>b±8Ä{ɾú’v»æúWÿ+ubxëºFx³ó¹ù{zó|còÂ$æèšIýZggœ¾9§m RV¤vÆŽ1â>–¡›-úÃ\›œý£` gm(jÄNky®õ9 ï>à"Æ çÄ‹=OŠ~Ý!éöÞ»9ÓÁ˜Ï3cýÈxL¬·9â1*ÄêÅ{oUÕX/èŒA̦EAgÂý7¬ÏQ¬Xh2öÒ¸ºÍv‹’õ¶Í½I*:¼ê:¤`Lë ¥-ÑJ!UD0/kº¶ÁH‰u=Æ„rz2·qÁCÛnö}AôûÇûÇûÇ?“Çì2833p±ƒorSßZä½mTëûíý?÷µ“”¹±ðsÔá°ÄNYÝq@VJçgˆà²Ž¹{!6Bb Y~eÅj»åÅ›Óá.%B*päØŸ¤RT*D)ÙÞ@ÌV 9Ä=‰>f†áÎö&°•UE]ÇâÍ܉à3©³“<‚@é°¹J7^O½%H»´åðÞàô.*”H+ÑJ3™MY^-9»¼¢(k„,‚B;»Ò€Þ›ÁÊ(œGK…÷`È©”²Ð!ÄϸH>T1¦£ªªÜc1Dßìª+S™³,.dOÇiÆG ®L>¨·’ÓD…”Ìg3VÛP¤xzq*4Æyê;—õàṄŒd õ#;§L¥[>”U{¨i\ÈøRļћÁÙ1 4ªæ}»’uø°3:%ö˜ÁÕ”ÜSŠEÅrLÔ†¿4Z7\‡Þ ¶(ŠpÎËp¤2á<ΙØÁãrŽs~qó¢(‡,æÌgJÑ6ÛæÇ¾)/B_R·B4É.ˆ&p£ <œW}ß3™N™Í¸¸¸ä‹/¾â/ÿâ/ùà‘¡(JŽO¸{r­4Ë«/O_c½Ãö†Ó‹3Ó£«’é|‚Rkºàl°Aù»®Èuš7]‹bÔ?¢‰z$‚Rk&UÁÉá!wON˜Lê¬èD ZcÐZÑv«Í†WoN¹\oØö†m"o”.hÍ(Áy4¸–Ò}W)®ÉºÂôÎZ´RÁ¡ë¹P]–Lë uYa›.F&‚øZ_[8R÷? ú£Ö!9°žAI*A'¯é ÎØ@|å’Ñ8_ùÁ5'½Ï½WEQdm×´¡Ã`2Áõ)k<]0C¿@ê˜ú)‘f·VÔÜÍû \Sɱß?Ëdpz›cϬu£H5#Î!‹¡5¶ïr·‚µ&Fˆ„N$!$³ùœ;÷ïST?œžblˆÚ륨'Ó ‘Û÷L'”T¡ó¬ë¢³A†™$F`&ð1ç·Ç½—KÄ„`pӺܖk•Tè£8ÇüêFà5>:Gކ²,™L&H)8;;c³Ù Š/ü0ƒû$Â÷ŽR–Ø®cy¹ev0c>Ÿ…óNU”Å–édÂùé )—´Ûï ,ñÝ÷=Öúì¸ÙïçH{•×°#÷ß9^É1™bgÓ9JjzÓazŸ‰ÖTŠ{Qåì ¦p¹×#¬±Œ2óµTh©(Ë’ÃÃCÚ¶s…ï,RIv ¾Óµæ}s‘jäº×-³±Ìœ=Âe_|å·Îõ>ÄÆZæåŒét‚s–®ïxõú%ÛfÅÃrr<Çû~ ±½|§²m”È=ëŸñ/þæ_‚¬Wk~û›¿Ãö-wO ÞTYàúqɵ‰îÉŠÕG¿­“DŒfÔäD‚b³íÙn —Ë-ZÕxŠ|>¥»—ô‘l`ø<é!Óuïw)úyøGòص5Ò™†/unäÖC Ê"D8Öuɤª©tA)Cô³p.pkdßOtÙ‹ÞÓ{óŠÇì=ÙðþñþñþñOõ!önøbD „˜S>Úpó° >Æ^$Ç€Ř0V¼ÅáÙgõ¸»9¦Ûÿ‰LÃèÍDCßÑ@Ú:æ²æ¤ºQáf t½h õqðAà„DW5Ë͆ÎΑRã¬`RÉ|“÷ÈœS-Up²«o­%jÑqêÆJ`ºžª,Ð[Õ(!B¼O|‰ÈðI)“2Rb)—s›Ô'©l,‚yÀ>—áBDñ¡DIHI5™ðúü¥·¡×@yˆLÃÝ•R˜6æO*E‹°1NÃ;¬³˜¨ÖÃ{ê²ä`6£.B¹RïB6|($läƒE{(uµQ‰JˆCÑ¢G†g©‚"Ãué½Ë ʲdÓôœ].‘JÒõ=³é$”cùaèKê¡j©0È’Tw’ƒƒyÌÚ Q2ιPÉTŽê®mGE¨EÊ©C_„ˆ]cURpCdl?GÅaY‰ºcK«Ä\ÜÄE‹jІ•FKŽ_¡5ÇGG¬..©ªŠIYÅüICgB¤F߇blã±\,¯è¬Ã‰ îèLC=™¡2ðJ?“uU)™ÏÕ¶kyþâ9Ji–W—l›@6XkX,øwÿîßrvú†¯ÿXóú‡—Ìç3þõ¿þW<¸k:”ô´}KË}åh‘IŸg×õ4MKßtQе-U]óàÁ}Þœ†Bøí¶Ám:&ÓW¶[ž=û–_|ü”?xÂÿò?ÿ[^½zÉ·_Ãf½fÛ´ù\•¹ÂÚgâ+­y•ÍJR”Ep96®vÝÓ÷ÖT¡Ñ…¢ª'ÁÚn,}Ûg÷U×¶tE+ÇÕúž¿|Åo~û[îÞ;æÞ½cîÞ=æî½;Ü¿w—Åâ ô–ä7•)°¤ê”RåM{±GÎ¥Vrˆ»qý9›×ÀJ*ÖË *c#¬ÂOе¹vÏâšFÌ;\T¹Ø>­I£¯K¨V ]”†l‰Ø=à{€ÈòoânRÂzÿÓH–kÀƒ÷k¸1"e¿*#G«)¤Lß¶´mƒîÊ@¾÷J Ž8\d%[ºÇø±’NŒãRb$¨°]p›]\â… (Ë@40rĤnä²Ýï“êv\^¼¯ú¼íœúSc”Þý½"þƒÇ1JQYþ6ï»^_­üu¥Æ®ãb$‘¸‚ ˜câ ÅÑ**ç½³ÙeØ5-MÓ°Ý6Ì×ÊI³{Ð5utxÈÝ;'<{ö ɪªªs6lmb·FðÅ8vE†‚B¯‚FÏglÖk.//ùæÛg|ýÍ·|òñ/8>:¤ªj~ñ‹OøáÕ|ùå¼xù’««+Lßs~qI5©¹÷à>‹Å"¸Ë”¢®jLׇµ¨Ô#0äæþ¥Là$rÍÚ†“ºfRO899áøèˆBëü9g) MoBÏÑéÙ9ß~ÿ=/_¿ 3&á¡Ý6Ø$ºˆ3A„Ò÷Öuw–é$('çÓiÄ2ì“£CfÓ ÞÂa ¶•R‘$·ùWêó#7äϺ.üß+Þ}í\‹Îp>d¢:½o;¬ 1{*+Û÷{o|ZÓs:çƒ; è»ïüà!ïŸ ½A`iC9rŸø(HË®ë4ã ¿s¿Ë{űh´fÑTöØ ºÖ°¼ÚÒ4}À"¼È]L£‹*(Å.)Ò³%" F(J!n‡4JeÕÁá/2y˜HÝ!ì0Þ…€Qß“P* }ä~,WÚÿ¦=®ðñ|_ãÂ|`œCiEoLè Ó’¾íéº.ôHè ¬’J¢t•û©zcñqÖ¬«àb">ׇõÒF'Çz½b½‘9™"=tYRˆ@øZkéû>ª{çÙô[¶Ûq%( M%5uQ2)+”””ZS”Š¢*Âz¢Â5_Ö-«•ÏÄÝ{²áýãýãýãŸìÃïÞûÂÍÃÀ¶@6d=¢MP«BÌ$€Nï]P®“î›áæ…W!:Å{-ˆ‰ECñþò'–7&µ©Ëà‰Šá¶8²~ú¤@I`¹¡ÔAñݘÐÕÐ÷­4Ö:¤Ô´¶cÛ[ÖëMßÃD6åJá‰ÅZ(¬ t½½Ë…[n¤fqÑáP”á&l¼CzŤ®™V5uQ"¼§o{”ǶË0æáTé6 ìcnFª„ ƒ’‡Þ à·W!sÕÇÜà®·¬º†m×Óõá{ºÞ u‡€]%or#8k2Xl½ÁK‹#87¼ ¶T—ò\JI¦EA­5…”xÛSDâÀX¡ËÙ•rdÁq7! TÉ tse$)¼ÇZƒ k=³È¸)måj½f½ ªs" RVeQÃfÞ;±Vílý¨ ÚÅ<ң传ë•-ïÞ»,s#[k*xËÖZNÈ&d›2#•­6Ôù:I‘"䇒Ïð3Ò1GçÈØM1Ø`Ó œlú‰˜ˆ²(8>>æÛ?~±|Z#Д.±J³6©%•PÌ*I¢¨jÖM‹ª$‡§ó׃%o }tZ„±Ö TÁÿø®®–\^ž£‹¡ìɘÏj¤8à_þÿ_~ñ{Žyúôcð}¸–¥dRÏr^§ÏD‘ G)Þ…Œâq†á¢,)«2¨eA»íè6[¬ê0…ÆN+~ÿù¼|þ‚§}Èýû÷8ù”¿ú«¿äÑûè‡dM‹6ŸÇº¨èû˜†/,^ø¬ LJEI(G>ò:Ãë<>9KvÀ$ŒìxJß´é#UÕU“Š‘2ÔegÈ9ôø4Êì^›Ád:Cë"(¥Êà9È¡È6^£Ò‹]Rtt#nËÚÞÿ¾A¿«ŽÝÅõ\æ\¤8—·Å—äÒæ@3!BËÑÆ7(ëºfuu…ų\]QOë¨ÞëÞòèá½Ó̰ÞÏ=â›D^o\¼'*L¯^¿æÅ«WxõdHëèˆGõ»º,R¼• ØwÈ=RÖïu=ÜV@»£bå†\õÑÆ.1î¡.vk„ë/ˆd–’£’)8~}bA»e玛óâÓ5L.àLÔYÉ7ë u2ˆs¬®V8kñÆ¢´¦TŠBI\Üd/¯®BçÒEE¥£fúžÅÁ³Ù4 rT¡w£s>!“~Ç%áã½O¦È-1Πã:T–%eYÒu=§§g¼9=c±XPU5ög¿¦ÙnpÎpu¹¤,KÖ懇”Eɽ»÷¸{r—åò’Éd:‡*(bÌ“TäÝ»‹øÙ8çh›–¾ëPBR–%‹Ã³Ù,&éžíR‰xo‚åÕß}ÿœó‹K¤Ò´½.WÜ罋‚‰—¥ ¼wh%PRs4?É„BY”(!™OfùuOãßWeÉzD¤8Óc­F*ÁÃ(bp)ýN6ýO%€?®œÝE=Í3ÈÁ)0¶Ïà·Ã¸xæï姆¼qð>;ºÐ4MæÙPT…ÕÉ(Û;‘µ.[¹3yã«ü¨Ìô& yX[†?[çn]®•g‡Oºäm~Ÿc%>nø \§¾ž²,1m‹1††.š =9ëí†ož}ÿÿßÿ=Þ:š¶ÉÀR %ÃuŽ÷!æÒ9&“iˆY¯óž\ˆ"›ñw!Óß‹©2\C"ΰRÅY; Ö|ž7ÝH‡0v_ Àdfdòº£#)U×5EQ±†R;¬KÖÚPvm{Œëè­Àá˜È©5ËåŠÍª¡i¶èB²XÌ‘…À‰–éA‰i=Í6’ˆ°Ïð#—·n¤Ü89[*ψ¡{ÌóJ$¢ƒû=VŹáÚ ûäsv¸ÿ»€q2þ¸ÆMo¨bÉíÉыٌÅbDÒ4Mž»º¾‹à±ÍOãèp† Ã[;긌5 åÞ£éÎ{vFè8SK/vb>½‡xž)UÄ5.i^¿>%&4ççͳ‡…Èé\I}~2Îä>%ÄŸ!SQwC¤¸$/²#9¡r”[rýFÀÞz‹÷‹Çf—ZLƒp–âVÃyg‹N†pßs|Ä$š®CJhšðº&µ =5º,è­ãürnÀhòõÔeIY1f±E©@J„¢tÜ9cÒWˆìæt#°LÆsÊ"ÂÚé`k T4]Ç*ö¡”Z#• ª+&Óš‚‚²Ô CoÝÔLI™£ïɆ÷÷÷ÒdC#Œk`¹‚Æ(¶[p­`>+YO0f5†®íéM¼I2¦¼ _Èò#‚ðÞ;êYÉdZRVBtákvä0z)Ï ØÈ¢—@Z—l¡ç m{¬ul¶[¶M‚óB¨„&à=4¡3AÅ kÂ]4÷n4Ì„(O°f& 3g‡û Î ™¦áîïL¼y)EY—t¦£í‚:ÚYs­P2 Ÿiã˜\ù¤úi#!ö@‹¬1†¦ëé{Cß…¾µá½”H´ÎŒ4$»¼qrÙ,•ÀuvT`5”´ €šE—%e©1¦ÃYAÛ4yø´6ñcÝRoÎsÇFª•±6Ò6óÁ‘0kùÛ·QŸÉulpœË§í¶E+‰0Qá¥vœ"7C·»ê¹º¬ƒÇÙTB!e$HuYÒ¶!ÂAHÁb6EH~Ž”,×Wà=ZK:c‡MRÚ°ï„”{¾ùöÛ`oަ󱷤àã_àåë×üñë¯i6á¹…R8ÂæTÆþë,Â{ÎN_Ów ÇÃ1›Ï©Ê2ç!o6[¶Û-mÓp~~Æåå%Ë‹KLÝÓ÷=ÆôtM›ÏGI ‚œX"6Í–íÖòý÷oøûß}ÉŸýê>ýä)÷îÝáäd–AP u}(èF€RálÔE\'"fˤ§r;äîîù鳯cW±¥òõàÇrlïÂ-^çy“åß!Ÿ½æ{}:Ç2»Ó;ö IDATà#ØS¿G=[Œ¨PZ¢A…ÜÖ=7VoïhiSÝ;_ÛWÃÿX`ï6 üÆâÑ›”´7(vÓzT¬ÁrWÕ5Û­£¬*LßRØ{LÛ`Ú†ã£CNŽ˜NBfmY(¬és‘à>ð=,ásñB°m[Î/.Ùlt=¡¨ª\Zë­ Åƒ~72êíÇÀíõ¶ø[ß÷íç—øÑŸÃîóû rˆõckÌæ¶"è["ÍýµÿîþémïoÜ@8Çf³1$ë,«õšÎ˜@Eõp=™PV%níº»Ò„•â£RLYˆ# óÉ£G™Ïgüpzšß·:1hÉæø® ð»xN%¾"¥ÞÇ®ºÎÏ/øò˯xòø>þøc’ÇSW¿üågœ¾A邦íB'ˆ÷Ì&³x—è¢ ÑQÎÓ5ª®²šó&jL4¤8:kB™¤Ž}G‹Óé„B«ð>£ ÃX‹ÖšÍfÃéù9ß½xÁùr‰t®‹eÏÖZ´”t¦Dl5(%±ÖRMj&…äÞÝc¦“Iˆ1“’Bé R ;¤R8<ÓIM]Õ˜}‡Lס+¹{nì•þãì7üµÑF´á|rÖàµÔÛ)S^æ[IŽ‹aª’¾ïOÛ6(%©Òù´?«Ý@¼Û]4€®ŒÆ?!‚ÓÕïÆû뢣²ÓdEŠ(eº¾„ €ýÜõ#²‘8ßyÂÏ4ñ:´1ž,û]gyýúuX[c–JØó…ˆ´@ð…ýÂdΗ”[žòðå^zŽÇgÑ‹Œo1å«+)ãLëó]Úî7™™™~fðºU’.]oÞu!bØg¢OútÊx‡ýA¡uŽo L™ÏœSŠIö7u†í€ú ´BËbÇub=¸¾gÝ4AŠh-ÓYº¢ÀÐGoŒ·kÂ{²é¹evšIÖJëe¡Ãf‚¸ªR ã<ƹAì²?$rO$‘KÜ;òd&zë‘Æ²í{À£›½ZQ•aî8<:æ ®Blm‰¾'Þ?Þ?Þ?þÉ ‰núõ..g˂ժ¤âÓÍÙtk¼p˜®§kž ïdTˆkŒ©Íö’¢P€Bøp#¬JÍòªåä¤dv°e6Ó8VH2úø‡ØÞŒ#™v{çvÜô€õ–ý¥ B4MR¿Ë¬ø¶Öå ]¥ÒJ)À›ü3ÃÐÀ™Šؘ'ëËÙš¬Âѹž³ÕåNÑ2Îe˜9ÙŒåx2.Çõ±„:(éÒ¦:&Wùïw7~Á‘T 1ãÞA%5ÂÙ`œvn¤HI… ¡Èò2%^Šz%%„L®¦o±kԭѶ³ÝÈy‘ÔüzËàˆQ1㦓އë ïzú.l¨½PôÀáýûcY]-qÍo=An¶\-ùüËÏyýú>|ò!Üãî¾ùæ[~xó†óåeˆ‚H*¡è‰÷N`åüMÃÕå9¯^`yy‰G0Î)«Šùâ„¢œrttõjÅÕÕ’¶Ù²ëa£H$ÂzzˆƒºžÄ nϯÏyýúÿæw¿ûœGððÑ}>ýä#îß¿KYVºŽ@³À™°ÁVRÇsÍŲibÛ‡ßqÚ¼ë1|~oã%²Å|OÏ¿û5¾VòãßV»îwUçr܄˹²×JB EY„Ï,÷5ÈèFñ;%ã?Ç÷®Î†ŸûØwGÜöo?–¾wY<ºªPe* ú®e»Yƒ38Ûqt0g>²˜ÏÙ)–fÈâõ£Œßd¡W"ÄÞõÆpy¹d½Ù"UPX+] t1ás“n7"k—¼~7 ¸?òöc1t†ü8¢Ë_úWÕž2nô•¹Œ1æßXôñGñ–+‚ ˆ•>Ÿ®ëèû.€R2¬µ­éilÕ’óíšårÉ«³7lÛ–Þ˜|ÜSqoY–{Q8Ãq)Ë‚î2JÐRe­†ôj©43Ä&Z‡V2D8ÉÐÛaG:G9ȉdÞ°Zmøá‡Sž¿xɶi)Ë©÷<àÑ£îS±\\^ru¹äìô áCVùÁÁApHÜBåëÂÅ÷&G÷mÖ…®k±}O=­)µ¦*ËЕ¢¨ Ä-]ÇÙÅ9¯ÏÎX5 óôÖ ÅÄ1æ¨m¶!;:Òã¥ãÞñ Ÿ|ô!‡‹œ±¬Vkº¶Í®]k ¦ï°­ JPeQP–mÛÑ› FpJá­Cj±Ó}’@ÕCvÞê`ø‘Έ *e¢Ðg²JÅ×gM/t›¥D7;–·û:BIh…‰EÑ…Öh©¢ÞÞú>o»ÖüM+Ä^–ä^±²÷ÞÅ(2ncV'Çê˜ JýmB*„ÖÈBc QªRäHW­}ßå(FȤùfvç\v¶Teɤžp±¼ÈóKˆ_ ¿Æ}& ¶ÎÒÇ’x!Ê)´Ó16Ë©äú†•õäš@ÑñìÙ­‹3‰³ðæê‚­±l»©4½5øÞ¢UI×·a?¢U5¡Ýv¬Ökš¦¡Š"(ï<}ë¹¼lÐJcz‡Í| ²Õ hÊQHâÖ{o&l‚O£hiÕbLpί}l; ¬L¤ÔèÚÚq÷%DžeìzÐR²X,8<:â`2A)ÅùÙ)ͶúŸâ5åâ,½»—ÝË’ÃÓß_¿ï1ºç .L‘›÷!ÒW*…\˜Ù¬÷8ÀÛétÂááA˜£7›5½éøè£Güõ_ýšº–ô¦€öS>î“#öÂ8p^qv~‰.&|üɯØ6=_ým Ú Å»w‘²d½YñÍ×_3T|úÉGhíÂbE¢ÁæÅ­sÂMäæîþVîþC—!"Ä 9gg—¼9½DéÉ(9¼;‰ 9#çé T”q-?ÃY‡5ÃLîÅžH%‰qX!¨Š¡’°×©‚Í!÷»¥÷§µVêÆ509t¾>€5©àÙ#hÅxOc B ŽOŽxòÁãpÝ%ÛM‡u†Ë« º® Eç ?‰ –ŠÑIcGX³ÝÐv-Mß^µR*n˜©““‹è€Ìœ¬DøºØ³#!ÄJKA×´ótÖQ9¹¸`Ó¶¬7”ÔïɆ÷÷÷º±ËÓø‹K8=•¼ø¡àô¤Vš'Oæèõ¤¦Ù*Ú­Bˆc¬QÙþolx–B2=u,tèÂ2›ÏÂ`]ØêRÅ莱jöOx/Y•q½hÓ'XŠLâ+¾õx2«¢$‡Ä|B"YÕeø¬¡ïz ©ÖQ’¶ë\´´q°qM*y!B„lAïZJ´÷4]OçÌÎðæb1µˆªgfïR6¨Ëöm­‡UKÃΡu*†¢Å±bEA¡Š d¯êPTmã¦ÄyŠhßµ¤ìI±K6xÐQ™'„ÚQÇHZtV49zã2Èì¼î‚”eíCᙳ½÷AA0RßXïññy$-‹0L¹VEúBtÆËPe“Òõ Ž•ÉÉQ ¤ %¹B`"`Ÿ>;Ùî…RHé.ö`XŸ9~d•MÙåã³sˆàðˆ:Þ,°[Úzü‘ œ㢭ô뢈›E™Á=ï}.ß"]ØUÿˆ1(5<&“ E,Æ+‹êš"-åt{/Jc]—ÕÅ.~nÞE˰‚á÷è”ÌjC‚­(BðÝwßñë_}LYT¥×gb- jx‰k$Z²ë¢`»Ù†ÁNjŒq¡D9–.ZãZ1?>æãÏ~É÷ß?§µ6(ûM(ëû–õj6>«ç¬Vkæs>ûäS~õ«_ñáÓ§<ÿá—¬–Wl6k¬³(¥Ð:8kÒÆíÍ«Wo~8!i¶[@0›/˜,B'F³T¶hGÈ`ËMJÇ¢TH”E ô¡è<,ÍH©9=_qz¾äwŸÅÿû_þ+|ðˆÇóäÉîÝ»Ëâ`†°aóõÿãÿE]Oè:3(ü30rÃ^.¹t"Aq(›6ƒãÏ|بû+ Þ¦úö’»yÙ{ðqÞt‰}ƒQF}T*þ¼³Æím Çö»ˆ‡ý¢Èk9ÏÞÿw¿ßßÑh´ˆÈšà´«ÙnByúf½Fá8XLYÌ©Ê]6^*læb4]VÏŽN!ãñ‚MÛrµ `O¸Ï•±Ð\dâ7m¾S,ÂÎñ‹ áØŽ?>9v2¾÷"­n?6îÇm_1ù3Êpw­Cnñø<ý™Ÿå»øÕÏÈäBpHâ«’åzÅë‹3´’,Ï/øî»ïxþòB+ž|ô!³ƒ9EU^Sïîü01Äj„(¥Öš¦a>?ˆÎבTòa}ëÚ–ÍjE¡. “H­¨¦вÈÀ]YTt­¡ª'4mË‹W¯¸¼¼¤Ð’ƒù¼E©#i]ȧ^,\-—èBãËŠß ¢¦òîøú¬ß-zÍ1!aˆŠîKßµ8îá~EŽ©’…Š$…Ìkó›ÓSNÏÏ茡šLèÖÛܺŸ ª'ñžm#Ùá(”fR×<}ò>zÀGOS–oޜҷ=¶3˜è‚Ýn.—WôÖдm ‹¬ ¤žTÁ]Áë± Ü«ÅO;«ýnqö½n¤”xçÐ…F÷š^Jú>DýXkÑJq,ãL|±s#ÞøœJJ¼RômG×´”ºˆ"€äª¹þºÞÖ¹sãŸÖOvTBÉL:í’ 7¯ b4+¦ùJ)•Åì‰4BB*GYWlV}œ›a6Ÿ£¤ @² p©wý"{B쫵†B*îܹ®ÃØí!¢,bÇÒ ¾±qoÜ*W8¤÷¤bŒRà í-d©½ótœüþ­zHltg}èb9;㛯ÿÈ_üú×Ü}ü×çlºžÍ¶aÛléúŽ¶Ý²Ú\ÑÛŽjZSÕ««5›¨îת`»íPR±Ööl7†ªR§zp¥¦u@«­4Ûí6;¡o]ãGsƒs>Gû&pu<X]בµ{Ôû‘ŒÞù»çs\£n¸ƒÅÇwNB„•”,¯®xöí·tmgÊñ›÷ \[×Ó.Ep3!?^X›ˆË}â%MrÞŒDFŒâ‚… DÉÑáð¬×+6› Þ;?~ÈÉÉQ„ˆ]Vÿ ÿv{ìî=+ÌÿR+šuÏßýæ·ŸðÙg¿dµÞò‡?~õŽÏ>ýŒ¿þë¿Æ{xõê_~ù%óÙ”{wï E Ô`àÝ»>ã²ôNW«D8ãî…LŽáOK)ºÞ²\®‚ªßùbjgýLþ%c‘¼ Ý22“ÔI´8>{uœ×Ò:aŒ!%|YkB| Vh!˜T5u]ýÿì½Y“%Ç•ç÷ó%–»äRY;ÙÍ!ÙÝFMiL’Ió¦™ï(½ëy>ÞzldêQwO³[¸ PU(Tåv·ˆðEÇÝ#îͬ*$G#ªÂ¬ …ÊÌ›qãzxœó?ÿEì…R-5Ú{J¿k²É5+åP¬—Œ1¥fTZãBÀZ˳3>úá¹w÷. èv¢ÖÛt+Öëk½Yoèv;†]Ÿl,%¿d»Ý±ëzªÊ Aˆ*Yÿ†’-8â±ìMQ¬P‡Cn5æ&†l;­’=rŸzï@EêfFT’o¹Ýnú޶©ßÞo·ÇŸþ‘ë”nÝΰ¾žñÙ¯áw¿89RÌf wîÎØîzž|øä“k¼›QÙ;x/“åX@)ÐX¢—€'ç§gŠýx²í¬'Æ>M¹Á ÿ㼿€GáÂt×P[˜5 !mKÝΈ>€6[Lºôi“GaÀ“,L”J3 ° ©Á,@º’°i8˜U•Õx‹ù78yí4 Ð&…Õ©iÍ~Ç!ö„»Ö˾'²ç&³˜§õø¾´6)Q¨¨¶NJnU@_%<è!ú1t;f¼\ã¼ $äý'ÖDÌ›[)<¢î™ý©@×xI¦÷™Ážàý `›d½0-\sáØX±Ð •i§1òÚʈ'ª1F ÜU†Á‹k˜¨…Õž/zfûšÔ¸\¶Œ¡ãqôUW‡ ÇÔ{; êm–1ÆÅrfò…’#µïu)„/]BŠÑz¿ñ9P2ìêæø\Ìññ1¶k¯=^‰ÿtöçÎ >¥tÉ Ù“ú&T,ÍVdêש²ƒþ¸«rø¸s/iÛ¶Ø}„ ê sðý1r+p ç ·wbÒ÷³Å2Ýk@ë 7t(4ÍbÉéýû¬ºžgÏ¿’[k”®h¬Á»ß;Pšëë5›Õ–ë«5>âý>àg?û—øøõ'ŸðËO>f½^‹^‚ˆSÑn´Ážàw²&œØ‡l®W¬¯×7Àj¤æL%úJI†ƒ‰˜1¦ÃCïh›6©lFð«õÀõ'ŸñëOŸrtô1Üã½wòç}Ÿ¶møòÉsÉ!‰¥$|N£e·q©ãÄŠC£¿Œß÷`Žeÿš®ûo«(žþ“GHiʳ]^'{LyéªleË9L½üÙðú ðñUÊÃ!E¡¼þáu8l€§?Ãk¼WýN]ìŠâ­ç_ˆLó„¦AáÖZš¦a³Û ÃvX.—<|ø£££ó}P$~ÓðV­]ß³Ùl¸¼¼fiÓÒ4Í+ÎéõlêW±)÷€´o\«o}øy¿îÜ^uN·­ÿW˜¨×fp¼j-½éÐ陘ŸµÚæËXÍ“ç_ñÏŸ|ÌÓ§OxöåÎÏϹÿè!¼÷.|ô}îÝ»‡ÉÙ“})øÓ4MSjŒ¬bœ>·ÃäýcúŽÝvÇzµ¢ßuB`NŒàf>ãÞƒû-—¥&išFT »Žn»ãëçÏypﬨ8¤ñ—½ÐhŦïÆ}@ `é’Z#‡#gÐUMjù~]‚‡³b'ƒ(Ù˹m[æóy¹&Þ{¢Ýÿl.//yòD®«÷^,÷”D1Ú÷}Q¢ XÐi Ö6 ÇË#Þyø˜Þ—ŬŠ=ËÙœÕõFlG\^­xyyÉÕõ5—×Wê)±z’ÅL®ƒs^”º¿A†Îže£r÷¶ûá6RÀtïÍ„‰ìõ=Í!;T:ŽlUlƒ¦*œü³u]Óuu]Óø¶ØãÀ¾ºô†—øöÞÛöþ½!³NŠ‹é0÷–û¿¨{neÕÞ²¯Lì†dxÖÐÛŽàæ³§'whÛ£h¢LH€½<%{ƒ÷Nl•b³ÝŠúI‹2ÁäaTEݫըjÒJ—ÚÛ¦g^ð¡Ú”I×LJ½Ì™ÂôO ý¨ž(ãò`0_Újúí–gOžòÞ‡òøá#¢±ìœXÌ™Y‘_þæ—üî«/PF³¾^ Zª¶bpN¬»jM·ëéº7Ñ3›ÍÄî7 ¬2B¶–ÚÏHÛ–gÕÃëžù‡÷QœÔDSÕÄžªe¯ÿI™Q¡T²®ÑâQo¬åÁÇ˽¯ççò~§Ï%5Ÿ²MÜM‹Ÿñº‹§ý«Ÿq‡5@>ò½8Z6zÙï¢0ê)6ºç‹Å‚³³3±6†®ë¸ºº¢ª*ÞyçÉ9ê½>ÿ“žIhsœ óþ½R\\^°ÙløñO~Ìl6ãŸü†§OŸRÙš³³{œœÜ!øÀ_|ÎååÿÝû³‚ €/V™Ü´G\Pq¼¶¢Â¾Íd|åÀÓEéYçmEe-—×[ÎÏÏ“ZWì\ ¥Ó¹Œï?±ÿ ©gMÔA\z¦™¤ž¾ˆ„©«Là›\³ZWéÙå“C§sªn Êð]”}6Y–mDn¬å|_‡˜,¥c€”¹²Ýn“J@ÞK®'¼÷¬V+êªÂ{Éþ;==áìÁªÊ°Ý®ÄجÖl®×¼xþ‚Õõ5««kyA”™h…¶•¸GpÁã|`\9çCöªØÃ´îÍÏ>­u!ïïSJÆ`F*«¸ÿŒGðôË'<ÿêÉÛaÃÛãíñöø2 ™˜{§!Î9ÿzÃÅ׆Jµ¬®5wïÏèº+¾þÚóü+M·Yªwt%=ePAAP¬ˆv^jÞyo†ó×£Çý7S>þþG ÔI¯XV¢–0D›˜Êêd QÁAL>ÞAV)±)Šàt$$AÎ(EMÌ>‰šla„æ§Õbë2Ÿµ´´©Ø"aT!‡‹‘­ˆ’ýDfÂ''g@bª!¨½¦Z¡°ZØ1ê"Q×:{-GŒ›|jºTQhâ4þq”ôjÆðkç³ÅÒV\Y+̇(á†ÛÝŽÁ,UJJPÖAÁG»£BxRPå'±¸rÃSdùQœLŠ%¡cÎ%@vtNa¹éÒì_]¯ Ð-þõÙë7ì…Æ¨Jq—ôn]Îêêml˜Ãf>—Ò9KdR訉ïfnŠ˜°‚s„„WíÆ*4¼årÁéé)›ëkœ÷˜d§#5"›>)š¼÷` .øb·;•ÂÁ¿…äq¹_t'e‰—fîÝwÞa¹\òÞ{ïí@{M[|5ð¦öš;]¡µ6 CÇñÉ)>Dv½ÃT A[l3#ê e*Q9™*5ë£uôDçè‡w§5ýàY¯wýŒšµüÍü?ððá†> UEPJ'Ьñw¾Š™¥ ³T1†eR‚#÷V^ ”ÐE¾á´{£7e·Ù0LœÎ(ì[Údk­ÌNÌ ª=Oì[@‚7pLÉÜ$}ý÷zŽC;žWØ9¤x¢¨µÆZ+ µlW+N îÞ‘F©ª*yo1¤Ë°wíFë±G0Z”~¦²8çxñâ«ÍSÏ0•-¡ˆS›¿×¾p{8ô›ßvÐðºáÃ7y½Â[ûâw|êœXµ-ï}ð=~ô“s÷þ=QA65úÖ3Âúµø ¡¬§wîpzv§¨…F«€¯Ö†ÎÑ—/ÏÙm·ÌêšÇ÷îÓÔâµÿäé36«çÆ`•æèè˜Á‹}Êññ1×—W\__óÅ_ðÃ|ŸZ¬Už£í“¨á*k ÎcŒ¦®$©!fÆÂà“͈|Ã0 ‰qohëfȧ"Z'¨g»Ý²Ûíè{ù¹¨÷m%¬­ ÀQW6AB¢n=>Zògßÿˆ‡îÓÖ mU³u20±)—âå‹—\^]óâò’«õ|*„E¹•X£D¿7pPßfŸÙÿ‡›Àå7¸wâ!³>ƽ×ËDŸ¡ïðqäªrýo:«ƒ×ÌûX®²Ø0 `´Ø~L”Eñ5CÞ×ñ´ä¦á§·MãíC›éÏOò2¼Þ'“È{V[amE—j©a=š€Š¬ÞÖÍh¯6±gÒFr”ŸWù:E#›ÍbåšV©Î¤µÅUY‰vðÑ鉢#«áÄ>-î‡C0îOü(×v³ÙòñÇŸpöà>›¡§Y,™±ëv¬×k./^òìéê¶b»YÜ@ÓT(mèÜ@]Y ¶u>A<ÖÖ¥¾²–NV¤$Õó)! ëq¯ß#µO†k{*©ƒ›ÒòÉ1ÕÊ>|ðeØ É‚8ˆBÞ ©´!±w9=]r´œü 9.CÏÕõ½ë‰Îau&¦$›oþòó;&uôÈ¿¨0$«›ˆ0Ùgöò"j9…’Lˆœžœí®ãââç”Ñ<~ü“mq Kjå©Á×ágTÀʾ7ª/Ÿ={ÆÅÅ%?þñOX,|ùÅô]Ç|6ã/úWÄCßñ÷÷Ÿè»ßûÞûXkP¸T«1¼"þkºd»•mß|ˆ\_¯øòË'¬×bÔ¥ä~• dÉ®KÊ…l[¤RÎ’,k ¶VÚ ­ôäurUГpøbÓç$ÇR”Ô:)’œ“:ÝË™ÀR(O“õbDÇÉùqš§ì-}ˆ nÀyǬ™³Ýu|ùå—|ùÅ\]¯ˆˆòòáÃ{œ²XΓ]ZCÝ̹w÷!÷î=àÙé/ô† IDATuÎ_¼Äû€±–ªRhGŠÁ9Bú&'ŠÁÁ‰"°dŽåú~’i’ó0}VeË5üÒ÷ž<'GK~úãñÓŸþ”Ÿ|üK~þÿùí°áíñöx{ü ÓÂ(wÎtÝ?D‚Sø>buEˆe²ÝED›@?¬’½'( ˜h%¨ÎÚâÊCÐÃà:±Nb ª05Ùà›·¼wXEk |ˆÔFCÐò°*¬ñ\‚%›¢8ÊLK–œJ¡½ÐÈd$ ¦a´AÊ…~‚ŒÅfˆò)!].8ŠBÜ´6X—ÙJz5z*¥Nk| ½‘‡oª§ï2¤ 7[´ ™Å<TP¥1Údñ­ kr›ê5ÉÑpäì£Iy±€¸‘PÂ*û~âYkÙök˜02Dw™=Ͼ¤ÿ5·œB|”³UÐ7€–Òç5®!ø`V ï*k™W)ì(ÎÀuÉù؃ÃJ!B jjîÝ¿Çÿýõs³9~ð¥ÙˆÄ²–%Z$âSQéCÄE7Fç`X? ӻ͆$¤üÜ0D8ZQÛŠÓ“´êDN¬ÓÚPª(p诮|þq†-kw³í$Ô>±&ç‹«m‡‹š³"xUáƒáúz2g¤Ù÷¡§Vp:›S…ÀÕjÅzp¬C qô}OÔðüéSŽêš÷?æƒ÷ßcpŽgÏž±^¯ùì³Ï¸¼¼dèú¾ïû¾¬ìÁ{çú¾°ó€@ÖA@U:Z^#¦Xv*ú²V4Rm£+Áh.…GÌúÝŽèœ8¿¸@› ¥Œ°j“¿ó4àíUͦþ¨’{X!ðƲO™ôù™²žUÉ5y¥}|õ ¹ÜqiË ZVie5¥)à:“Ãè@Â?μ[ýñ ¿çÏßÈâL×"ªª"V5uS3ŸÏY.Â~K÷ª ±|ö¡ìWªš>ð ]YzçØt;¶} ba¨´)öbµ¤ßø±ÿ‰Ð1ªÀTÄì=)â™÷™ï‹ívSÐ'''üÙŸýËù‚¯¿zÆêò£5ï¾ó.ßûþ‡œžÝÙÂ݈Nâò;GK拳Ù,©(J¸vI„ífCðžÓ£#~ôƒð½wße¹˜³Ýnùù?ý3¿ùüsV×+®«š¦ªÑÚÒ6 }?`¬fµºæùó¯&ê 5f%YßË^«µ&ª ‚¶-õÒ0 TŸ™Ï@´Ñ£Ú”`*{vðžÚHÀ¬1Ÿ/ö”R£…fdµZ•ûÁ9‡²ã]çšQ$ #Öh–ó'GGÜ¿{Æã#*kÒÀ¨b±Xrqµæåù9OŸ?gµÞÐù@ï(MLV†ÙÊOÛÄ´‰|§aÃåþȪÐÉyd6³1—ÁûbYË~s.îï‰Ù¶-¿¦ žÞ ¬ÖkÚù «&åÜ6ü‹ßAm7Ýï3°œ™1ßv¯žZ –Ïê6Ûž¤1•Å †¾ëðÞ³^]'¶ò¤fb´­rƒC+Ål6Ã'ØÇ²X,œO5²‡ÄbTs3 Ë&+ÑHGû*T§ Ö7†÷’µ& ۔åÕݧš(e)Áô!®ëùòw_ðùï~‡mj¾÷ÑGT³†øúÅS>ýô·(íQ!¢½cVK¶Ê¶ï±“A•5bÛ%DÖuE¬¢(DtÅÕåµäßRÝ5¡RßÄâµÚËpr$ ZIzï¥ÿ ¢ ͪïˆ̇ á*WJÆл¬ke0±SvW|ýä3*[qïî}¾^_°Þ^ã‚RKPX¥ö(Ùv´ÓQL-~^eÿ˜Ç-¯[ÞÆJ¦ÓàÜAØyRKhÊúQ:rçä„Ó㓤tè¹¼¾¦wï=~‡“ã%JE±ÆElƒ3ÕëFþ$Ð8 ÔXñüòW¿áôÎ~ÿ#ðÛßüZ®ëbÁ_ýÕ_•Ì—ß}þGËGËMÂ6}Þê[=Äß¼dÕ•)9…1Àf»ãòâZÖKÊôÉ{] ˆV7I;q2ðÑ@L7:æÔH:“¬=H…D °J n¢4ÁZ|¨%0JOl¹’]\xUÇ@y&Ž«++OrF’JGI »ëèÇqÛRÕ5ë͆«ËK..¯‰Úrq½â·Ÿ.hššÅbÎb¹ÀV§'ǼÿÎ;ÍÌÇØºEÛSIBœà,ò™TV*¦®ËP!D ŽvÎï©ø{çŠýaQÙ2Iº—“¨©kÚ¦b1kyçáÎNŽ99½ÃÐ캎åÛaÃÛãíñöøS?bTµdhÝSUŽº¨ì­W vÀ†å2²\îq+2¶39j)“wŸÖŠÙ<Ò´ cz¬ (½|ónw‡ Óß"9qôÖU65ÉR€d›ŸC V’B=—¡0/¥ñL×â[®Æ!­FFvVKL€<•·˜B•¬f”@fÅÞOûr³µ6Ù(¬“X@è›±X,¸{vF~D·•»wïrzzŠ©dŸÎÏãÂŽ?8üü¯ëš¾ïig3ªJò ºív/0Òõ=ÄH·ÛÑív-üë¿þkþûý¯yp÷.³¶¥ë:Þï}þöïþŽÿðÿ#W——TUÅ;weïªkŒ5 ~àjuÅËó—œH–1Iþ,¶'l‰5_UZ¥pìnGëÀ袶+µG:cL%àà ç¨ç-MÊ”pýP®ƒMŠŽ ’gV½\*†0*E™*aõ9ìÕ»ãå1wOOøþûïqz¼Ä…Ñ"Æj½áåùOž>åüâŠmߣ«ºÔX2\c,!¸ÉD§gøÄ¾FÅ@û =êæ_SÎß¶ê[ uNª¿èƒóE©–Ÿ!Äç0µdTvu¶ŽÒƤpôÊ×r½ã8`Z‚}[BÓÔžl:¨(ÿ~`¡¦ÔM%ÆmûIþÌö~Nk!{äçmRðäu×w»Dó“ðßXSf}ˆ°Ú¬ #÷òꚦiWl[¢šÈ¶¡Yí(}ŒŒîsm’•lÙæq/"±ÉUëÿ‘€2’D…÷† £2lµ}ðé·yæo×üç¿ÿ;‚ŠìüÀåê’€§ª ­®89Zp¼˜³ë;ÜУŒ(”Qe8ž³٠cÞÔµe±X‘‹ó ”‘@ÝÁy¬©Š W¶»÷È~Lϸ.§™ !Œy0Ya)d*!giçÇ:65å§¶Šå¼â½;÷01et;ú _s}= |O× ƒ™Õ :åÍåçBéNTþ±Wy½*§¨XYµ§´,k ±«Ý{žE!-I “{1RÃÙé¹æÊ³ÙnØuÖ?~Èr1£®1 Œº’×Y$L™iÀ8 =X]­¹8¿âÎé]Þ}÷=v»Ïž>¡ßíxôçÎÉñ ÆX~ýë_ñÕ³'¼óø?üÁhåÓ˜ÅîqÌöîcõªSS·þý6 Æ\ÇG»~àòjÅùå¥0ì•.ëkªÐºñùž“;LœÃ;GSÕô>`•A£©¬A×µd(…ÁH€}ºöY•¬&Ч|„é Ml7°µGóimôÃÀ08ª¦æè與³¾¾æË/Ÿ2xÏåÅ5«õ–¯ž?Ç9QÄkXq´\ðÕðèÁ6«—×l»ŽÍfSÖ鈩¨½£¸ÏbÞ2Ÿ5œœ—ßùvØðöx{¼=þ¤±äpÔ5X ËeàƒÁ÷½äÁû,=Î÷Ü{ెaÖaRdÖ‰Mu‰+ ÈÑQÅbñc!vòp SÉiøƒ@ ¯b¨­Àl&€ðXþ (-PTx>’ך²Cn¤Â9*bðiHàˆ8aR”BÓƒG¤)6ÌË@C…ñÑGÐ.ãÕ!ÆÄŠ)ÔO'KÄ8™,ŽäTG` „Ô¶Np“R#ŠO{ ¡ö{V8ÀOEj~-iÄ%ƒ$ŒÉV€Î¸§¶Ø“Yg©f žÞ/žÊP*ùñúâÓŸC©ƒ4_![“@ÌViL)B ¡¿eÀ†§€bÙû2D¨Œ>p(QÄ E—ØÀ‹dr¯[× ½žeIʼnZE%5ÌÈV¢„½•º¿†Y•jr¤ä­Á­øàƒøè£J¾F˜„®)UB'ã!À«TÊpÖåw;¸ÿà!UÛй|À’áÆà]¤ë;”± ^ØT½sl»"ö°É+3ÍIÂÈG™ÑÏ· j²HS×ðãôÎ’;"~/PÌGŸ’NÖ1±ç"1x2‡G)›óʸ¸:¬®ùòé¢sýüS<‘zÖ2_Ì\Q#/²þ1¸–Û†¯ZÝbÉòf€óUŸñïElàf@}©Eò³'1ă:e?„óõUÚþÚ˜†cÇ[Õª$ Åò¬Í6Ù: ƒmÝ êšå|άmǼªÄú͹ 7r'¦Áí1²Aðž6eqHVRÏ,Î%“©X_ȳîý÷Þã/~üîß½Ër¹ÅŸÖ|ÿ£ïã¼ãââ‚úø¬×‹%óùAÍêêš—/_âüÀ^Ö¥xÇ«>§iß³Ö²\.™µ-Õz+ÀjR{M† ãÒ‚&¤½$nèÓÚWÌæ Zƒ­F[¶âWŽ““ŽŽŽx~y½—s¢”ÂVYeš UR5¼ÿè1ß{ç¬5 ¾§² Úhº®çòêŠgÏ¿b½Ùâ¢X”ù0V—Ás]×øAö¾]Ù]¢UñåK0‹†28ŒQ¬Aº¡çh¹,{±÷^¬[^úœPˆLf2`ÿt—€G’©*ÙI*×:÷:ûâ§Ö€–^!ï91º áÉ`³bëy¯¹óò¾ƒPDœëi›–;‹9g'G£ñÝ–Š€Ö†žÔŸüÕÇ>n·Ûâ@\¯˜-æÔ­aqÜp}µ&(!)ŠÊ\ˆ™ †#Ù`·òs «uQ!7Fõ†(‚ÉÔôÑ?–Ñ ÷þÝcNfã=‹jŽ‹3zïYmv´6« ®v(ËÌÎpÞÓ(“TßqòÌŽ[Wöz…^Ì«´§qÛ_•³ ]hrO%rSP/ïk,gggt»³yËz½aµZ³X,y÷ÝÇ,—s\w-$*¤Öש8 ©/Ø÷U€J=]p‰ /^\ðü«—ü‹Ÿü5ggwùä—¿áÙ³gh­ùË¿ü ´Öl·[ž>}ÊË—/øÁ÷Ñ´|Wìj yMÅv¹“[ô¦ÏÖ„0’‡áÓÚ4“•RX­ØºŽ—/ÏÙu}6šœÛQlW§ö|S5â¤ÎÈϧT‹äÏC¥Z´ï;‚‡ ÅÆuD ‘É}Ƙd§(ªVCéã‹õ[Œø–Nžãšq*ä9‹ÂÐ÷à ÇUU3›Í˜µs‚ ÌfG\®¶X[¥Z1PÕ&¹Lx¶›Ñ|ö™buu-aÑ]Ïf½ÿI)gŒ«êéÞœäÃ0 ´ÆÉwR)l=>±h4ýv'ÿ߆”i!–hBÞ"Âb±äìì.óùŒ@`~4›&ÿvØðöx{¼=þ”1Ÿ k‹Ed»~çøðÖÓÓ cjNN¯1Õ–£¥bÞθ{æ1ºFk•À«0æäê¼OKqâ½¥²šù\±\ÚFrTUÕ›ìo:1IÀ½Ö7€‰üדߖçÅ÷yBË*¤©8‘g¦B_üéóƒdÜUNCTL©˜Sý0 &þä:5þZAPÓÁFÜ»69l‘ôç×(Œ‚$¥.^¢Š1x9–’«¨ $J˜¾*ùi§Ž"½?—$ƒ#Ÿ=]sÀ±µ–Á¥¢Ç$š‚ÝiJDþùp>¦&EG6pÊŠ ¥¦0L,ÅuQè1øö°¸ ɶ%x)˜´"]Ÿl}|b÷%æ‹)on¾ÄJ!J&„1ØJ—!Gþ9ñþw‰UfJ¬FÌ”ü®Tb±˜çBfö¿žž<É?HŸ_nL¦!¬mÛPU–à}l0xPäìÓàè"®ÍŠ˜Ôˆ.— >üðC~þÿHµ<Ë10ATL>H£äB$(ðYæ×bV$yl !a×j Ü´!e´³¥àìÎÞ÷¥ÑŠ)CD§~ôçOMyßâ>'ËŸ,àd°ª´âÙ³§üôgÍñé)]`Óyó–“ÓS>z‡Újf³†«ÏÐÝ »Y “ŠâÜú#AºÝÙív¬V+¸­÷wÿ‰¦ªØmÖÔuU|—½¶ŽOžÚJK‘ì‹-ƒ­ª‚©AU#ÓqôЕëgtÄÖ&e,P>׺j8^¶²?NCÚZ´©xþÕ×|ùÅ.Wkêª"‹ãcR°;ƒ‰6¯ó˜XNé..TjÒ°fUŽ.¹0úÖÃgÔ+xkÙš!Û¦EïCÚ/‡ìo5¡ (Çù”Ý4“§÷Ùm ómùSpáU?;mÈèßtÿ>`yö ßS”å÷šÖ–I61u[‡]ßÑu­Ðè …=&žÚ¶¥®+vÎÒEˆ‘¾ïXÌçà=ƒsÌÛšJÃ;ò΃,g3\p… ±Ûí¸Z­ùü‹ßñõ×_Ó»ïQëÑÒ0í%G‹%MÓp}uM¿Ý°Ë¹J¥ˆ%+¯Ái˜ë›w±*ÿ÷ä«^O½b4“PÐ ~c¢(’­¹õç÷Å)ËTk2‚ØÚØ®§2¢ªÒJß ’¾ê>{U0îaþoH¼òš(k³Š\ê·ÛšTCJ†žIu¹+XŸ5–ãåRT!p|t”<à³ùŒË«+ªD[ÕÕh=va€à\²Í“§¼ó^ÐŒùÖLԂɲ‹˜lhž7cÿRh1eïMÙKú¡Ç+aOwCÇéé)óYÃf»£Z.Pvά­9™µ˜ „®¶ª¸Š‘~סš†ºjÙm;\ïÐÚ`µØF¹Á1ø­k®®.™Ï[f‹šÞíÉ铇ҨþVŒéj’»¥RO7eýv¯Cá‰ò5ÚËì­‹Bs-æ,[KcU8«ðt5§­4.DÖÝ@8¿bÓ9:׋’CƒIvm£w?·‚åãÓ俨?wqÓ\‡ÛBàsmà2&ýñA²ô‚–¡Ct¶©9Z,hj±ËÛlv¬7[îÞ;áÝwßÙïû²ê?ŒLU€…8*\ãtx%çjLÅË——ìv=?ûÙ¿¤ßõ|öÛO9ù’ÙlÎ÷?øÅ|ÁÕå¿ùõ¯Y,æüìgÁÐo°Ú‹Ñp̃ŸÃ5{K «nî|!ŽÝ­ÏÊFÅwVóX¯Ö|ýâœí®—¡`˜ÞOqïš+§5@®/§§Ò¶­d‘¤œBbR& 6hAÁ¦Û•Þ°d%›ä<@4JSY+½o•W¹FÏy#‘W d’ª6[íú“•³Ç‹Å‚¦i¹ºZ18¹ö>«¯L&y¨òÌ@)v]Ïà=»®Ç ƒXÔ’7‘{,íCÚ·ÌÞvTDB L‰H$ë§ueÅdèÙvC±h¨ªš““NOŽ™ÏgÌf mÛ ­ÁطÆ·ÇÛãíñÿƒC.hÛ6rzG@ò¦‰œÝ­qÞÑ4Ø*yËz¸s2L½C+'Ö*©zq ÜÛnCß`ÍŒa訫ŠÚ‚Š _@fa…ÿžÅÞDº4Bì&Šïhàn䲎¾z£$td“äJHÅrV5dð”xÀ&œÐÄ *ƒ˜ªX”H:¸Pù0A2»=¦ßŸßWAÎ2ø‘41=›Ñ‹_Þï)1”°ŒUÔÅÃ0Æ¡ #»ñgL¿/xŸ<… ½ëÄÕUñÜ/¿=@1Ú•ÉÞ¦*³#¥ð¥|6QËA¾®ó`GQòCŒ±åøz–Þp*ÜGŸbç¼°°tyt±¦‘áY.¾eh"EGÄZUü1…±%ÌÐ…}KNÀ-ö+©hÑ2ÀT¶de¨4pš^“½f~2pÉ´óé¨N ¤òW)ºèЖ¤ppIqÅ62aVêõ ¢£²š÷ßøû¿§<•¶]1x)Ö‡ Ð^1x…'Òûˆ2°ásžƒ„˜rJb<)|p“&*¢´O­¦%N·mÃr1ûƒì“u¬c¹/Š ùTüQ:œ£Ûyv»mñÑ&xLe9¿¸äÞf‹§J,žÝ®ÃûÈòè„årÎêôˆõÅsúçO97`ýÀª‚‹`j´–@2­"ë݆ÊfmÍÇ¿øgþùçÿ þàFüï뺠išº)Á&)hL²M x•‘¯‹Gk,öêŠÂÅ{G>ùŒ†²C ý65±4¹ˆö!âÑø¨¸Z]•F4+¤2× eûiHW3²æ]ÊU1(”µD¥‰ÚV“& µHµcÔ„ ðA'&±. 9€mÚÔdÆœŠ·€]i2åʰÔòv#`‰‡ é›û¾ÅÇ0ÐØúV é¿êG÷!¨FüÎ>ãÓagñ÷Õ`µ¡i[ª¶¥žÍvËËósšªÆÔ5*~1®‰D ÓÀÔ(­Ùm·\\\p½ZI iÓ`ëFe^HÊölÆÁHH~Óÿo ¾ë0#ª˜† Áyt±ïúãû¶„±(¢t dU o•<šµØت¢iÉ%˜Í˜µ3ê¦Þ³3,Ài‰}-9»sš˜Ù¡ü­5Þ ²iŽŽhšS™Ä@•°µ'''Ü»w{wïò»/¾Ä  6F'/øÈ®ëxy~Îjµ¢>=-¤ÊÌb¿ §sPZ‰Eƒ÷I±P­ŠÅB(ÞÒY¡ig3^oHÁ®(˜-@ÅlØl6)c@±ÛFŒ›¤Å|NUu(³¥i‘ÐçâKjp^Ñ÷ çn€ÝnÀÚš¡ìv=1êT$¸³þ½µ xÉÍc˜­: Lk“lGâcHgGæÂà—É|fŒÅÄF{l°ic©& âi–›„,?ξ³¡¨CBÉ(¯'þßÅVI˜Ú$ ¥~+>Æl 8 rT‚A’\gæûÈü¥¡öj*\ÂXZ†dY¢B˜£%öfŒ lHv…=ZõÈ蟂‰%«*ÆÛë°<$ËÅL²ð€¦1v´‰ÈÞ ¤°'/ c…’ œÑš„ÂÔÎ>ðÖ&˦ “3[-Ä©T4"±8K4¥R¤– ÉÄÊÎÇôí†=¦\BAôS&¡Œ´@º)‚¼Kƒ¤AÖtHã Fï\¥G%Î4”5)LeùÞ‡r÷Þ}vë:N}ù+ ñ®E'H’EG˾â}ꘃÕÇ ‹˜ ëJpü®ë9;»GU·å%|<1KbÒyŽ ™ÒckYÎÙá+x|ßãâýé=ÚØ’'³Zo>ÿœï~Èý÷>À_oºç/¶ª©ç3êÖP/ZîÜ¿Gÿ>‹èX¿|ÁÓ¯žáëšs¤F§@]? tÝŽÍvËÅùKù·Ô›ødã‘ý•s.ŒÖŠ*1m3»F)ES×,cðhe,‹Å¢|oe­¼wÓ •¦#­Q¥q.ŒÈ 8X^:×ëƒwŸ³¤йñ•¡›ôvj²NãDjŸÕ@: ëL‘é3ÓÏBÚ߬* H¼› Šõdèúм5žr02˜4@ãäNkUlïb–lQ7Œrª[Á¤oÜ<—þ–=¿/à=Ýÿ§ ÕÔv $ÐCiaPj«ˆl]±^yÎ//xþõ×Ü=½C›<ù³š!ï{yïžÚ…8ï¹Z]suuE R· ¶® Œ¡ÂÀ>`ßaÂÏöJe}¨›žÍß”iý:»«ïú™í{7çµ—÷iÍå¦\k•j‹?Üë6Àá¶÷”÷£4uU‰:Qi‹ÖZLeÇAÃlVÔ:)âDq¥Ò€3†€Õ†¶iŠ_¾Kꂼþ\Rh­9::Ÿ¿é¼êºf·Ûû„“ãcž={Ne­äQSU”ÃÀj½*á£q’"ÃDa,—ñ•Ö¨  E3KaÑÆ$Öâ >N© ³C]×,KŽGÌÛYÊ{¸åg…ˆ(¡JÄÙºÐy6c&1›¦áჇœIH§w)ØZÓuëÕ5Ož<áêêJ¼¤­ÊD¬µÊãÇXΗl6¼ë‰Á Bú Ížï|É{x…Êk{¨Ë*‘ãÝwÀƒ8?¿àoÿöoÑJñƒ¾Ï{ï¾K ðÕ³ç<ÿê}ô!³Y‹wB–4y8£Ô¹·Õ¯dHªòüD±?x˜”4ƒ¸¼¼äââcìžmäF/¯ý!k®ð­ÒÐOílÁ{ï½ÃãÇ8:Zâ½çêò‚õzƒ÷‘¾st»78v݆>eLU8™˜¢5U¥ÐqÌ>ÉD¶<ÅŠL2A’¢;c#ƤŠ1¨œcHöÏÒY¹Ò>Rß—[×i&[UÛÒ;'äÐÞ¹äà¨ok@ðabøº!x¶•ÔÉÎÍ÷ò)K.NÊaª¬a6k¹ÿ÷ïÝ¥®D /d±Ñ•áí°áíñöx{üijZØ"vûª6`ªŽÅ±%†Àjµâú:²ÝX‚[\¤ŽïXÚVÑΨ!… ®¯«ë@ßqyѲZÁ|V¡Ì<†XÆàïÈ Øïãh?¤ŠwæØüeAH3jOÄLB°dà0½‘¥Š¨r#$Þ©(ZCÔœ†˜ái˜à➇ei6¯“]ÐÈ2í˜ÔÄ?öPÞ= Ö.YHmôŒ9|`†C«‹2dÉù Ó(Va!«0‚À9€87m1[Iʼn]ÃhÐ^ÂÖ¦ƒ‹[‡\9 â–H©¹2#å †ì1±Û0Sÿï’‘OZQU5Î d{¨é糤¬”k™‰:î©7Š-Ti¬&ótJÀ¾Ä>³C˜øÍfô¨ö™Aå=&@¿hrb.àt‘Íkkq>blMdU‰Ü·¨b`5Z¦}Qóy$*‘€­[>øèü_ÿÇÿÉr¶ LQcT²w d(Äð^ßb .ôÞ3…BÈ´óQ¾ó-FzÏÝ{ð¾FWZ'›25b²­±" “‚Äã(SISâ#—6»S-ÐÊâ†Àn³a³øøŸþPŸÝglS£tÅnèñ¦¢9¹'\,ó“Ýâ)G}à«/Ÿ¢û#.P±ï™ÍæØJuÓÒ&›—´G€‚í\HªŠu]»\X#‹Å¢H„«TÖ¶­%1H3oTùZe+fm Äd¯UÑ$AT .:^ž_ð›ß~Z†qYa0æµ$0ù P” ‰©›‡{¢"Ls6$Ð.¿'5iHƒ÷h%n¾èd“a¦¶G‘1—þ@ªž£t&A“Ó „^=~-gM„Ò;çn܇¾Üo²7ºLbŸéüm,9Þtì=3¾ ìæóBí…Þ j ôËålíç3ÜTÊ6ÝŽO?ÿŒG qô—ž äË—žaC\]_s½Z°<:*Àõà‡ ³ÏîŒñ`Ï!鉑}Ûš˜îá·]û×ù²¿ÉþêU_Õ@'Oƣ̜îƒ}uÛ¯ ’}-°’Àr=y®åXï=:©«š¦ILøšù|^† ÙJKOüÜoƲ*çíŒ;'w 2ZĽ "\²:*>Õé=ÉW>;´ÒÌfmùÜCTUM]Wt]Ç“§OÅǘbÙuÝ®£®F¦·Ò†„Ù•°§àX¾·òó))ð#«q½^Ëï²ÂV¬ªŠÞ»[ï­üߺ¯©µ–¨ ¾÷eð ”}h¹\òèÑ#æó¹xJ[‹óbkãÇåù%»õ–ÆÖ-v]GˆB4pn@)Åýû÷¹sç­ ç/ºmòè>d 'õI¸óá½ó]†šß~0·¿å}³²ßÉ®'”<Ž¢¾Ú Jß+A÷r:²ª(Û€úa´ÔjÚ™¬+{»bâp?™fíß7¯>ð?T‚ÜvÿÖ¸yP5ÍsvT!Sƒ÷‰=ÚÊh3>#mµÖXkÙn·©ÎÚÔϰs©NRP œ£ŠaÛaÖÙ¢')¦´ƒ£µÖXmÐ ì Å|NmÓ`0 bA6¸¡¨oz7à¢Ø§Ü»w‡wO©uÀ„'sKõÎ=6›9W«ëõšHä¨m|¤­+Ö}U°ÚîP¦Âù!E³BŒl¶ÛÔÛ¼ï ]UP¸AÑ6 ¢Ó Û•ìá!YËQÿæ÷ç“’Xeûd“u£BÚñ 8u»¤úÛ§¾” ›"­xpv—e3£1SæµÔÝ¢ V ./¯Rî‰.5O(–—`õþ aߪó5uH±ü™ªÀ&ë8)úº¡û6=Úé„àqyè4±»=99Jµ¤ôÝ®£Íyøð1Ji¬Uìº56[Ö¡¤¿˜ªj}0D¸ººâêêŠÿáüˆùbÁO>e»Ý2ŸÏ¹ÿ¾d‚lò1«ÕŠï}ï{e¿ŽÉâGOLTT£+Â7Æ`&vÉÉ“n/œ˜±Ž|ñâW××2¤Ÿ¬§ÃáJy§EIŽ1 Í£Ô#‹vΣûù‹Ÿü”ÅbÆgŸ†ÑÙV´¥^m³Ù°Ýn¸º¼{5Fšª¦­$§ïvD%Êå~°•ÅX‹MŠbŸêÔ:Ÿ?“¬l(ö®éÙ.û’&ø€­¥«*Ëv³a³Ù”ŸwAzÙÃ.ïÑÞûB(šî«û DÙ£z7K¸= ÜÌÊ_¯m%µ@Û£Úr}—IuUq|²äød‰µ¢Èœµ3†n7`LõvØðöx{¼=þô¨HŒk '…Ä:â\\xºõ@ÛÌ99›Ñ̻݊vnÑ*à‚g½¸¼„nwÄó¯,¿ýÕÀÅùÀÿì!³yÀG'¯$Òø K…š¾…15±iÕº¸æQ‡Î2òôð—a|ö0K€Ó‰Çm©®’˜0zªˆ,T ‹†½4¹Ù–D¢±$ØN€dÅ¡Ðr/DyšÏXŒvÊ7ì1öxqÌF( å NVòÇ$|? ñΧ0¤ñ$ð+ŒNüu¥ÄÞ&‡4p²ð²ú!³†#À>-³å‘KŸ‡FáÒð%[h^‘òû‰1•ú—Ö¸1û@åŒÌÅHQÍD0dUƒ*2J3jjÆóÞS¸ù½ÚT .`Œx¬F#P˜D{¢S¨ç¤‹Î9q>$_|*DT ‡sšÕÆ%»_V÷X›¤Ü™xµfµŠRds)Újê¦aqttCDä­øœ;p!Ð{—Þ¤¯õé>sATΔÑ9­*ò"¥sW/¶TVXawîÇÕ6²Ùy–•a¾8âòüR¬LêŠg_~Îùù9õßü5¿E¼K×n`×Ete¸XméûÀ»ÇgÄmÇÑã÷غÀêÉZcÀú!FÿÑò¸X$U•åøø˜ív‡÷>±b²'xašÊ ç=Ö˜b&ÊeaÓÆØuVÛÔ”ÀõõeÉP‰iØ; Be #Ù”Àäv>'¢9¿¸Jû±-Lwcj¼‡A*mÇb;Š%N2Â$ÌRBÙU.ìƒ?¹Á)Ü^'勵ZÅ2ÃE ¹WÈócئJ&HÚŸµ2%d0D…R¶x[[¥ëâG°W)ñ˜÷Ùâ%ÞÔû¦œ…×}Ï! ûû‚r· "¯"¼W7¾&_7òðß }¬*iˆv»Žëëk¶Û­VQünå¶3HJµ˜$í.z^^^òÕ×/@[Ù»´aðN˜E–>O5 U7-9¼°Ø-M0ìC@ûU×ð°©¼õ½&\ûD¼0Ô£JÑhƒQ†$çÇæŒ¥È7þün¼Ÿ:9§¾<Ð}a²{ØlÖlU[¯m[Ž™Ïæ)¸X†¸™)­ƒÓ_Ø}°ÏÒ΀eß÷Ÿ°˜/h›6Ù½ù2ðËÌeç«õçüÞðLÖ\Í08º~`½Ý‚R4mƒsŽ! 2ÖïY¯×\\\ðÞ£G©É÷t]Oß åBM¾ó{Êã4}×¥ðò›ì8²Òç¶äT푟±æV+4uãïZ”`¼×cLëòxkE ]MuÒ†hö•¨™9¬µ ¯OÆ<®Oê‚|dYö",—ËÛË=®gþ^âÄŸ½Þ1Û-Y‚&f‰ ӠÇ}Ð7ª¢|€ÈàÖΗ0uÁõ=»n—.‘˜¤«!z‚’ÁAÓÔh¼(o½Ã(8Y¶-ZÎNY­7ÎËõjËåj#5V Ô•„w;?`*KŒnèr¹Ñ« ›u‡Ñ[‰™-è(`c´‘¡“>Bö8ÙsîQ$âÂz ±›¬ëku!ïh•ÃGÛ­ Á½ôRM¤Õ5wŽ˜E­<ŸjO‹Î{¬…Þ^^½ä³/¿fµuh]á¦â[~nùdÉ«ÇÐâ§yjÏg¯Íùx%³m2†àés`ºcBú“_Í®ÄÃ^+êÆ2Ÿ·ìv=›Ý†Ë«KfÇÉ‚Æh¼˜µMZb)1>Þ§5ÉjGþö?ý=Ö¶üà‡?ó7C×÷,æsþÕ¿úW ixû‹_ü3Ö?zȬ­ÑÚÉp¤ÓØËìxÕnps_ëØCrB™?¤¿:¸º^ãœØ‰;„*¶`S¥ÓX7M—>ŠÍWÎLÓŠ¶®yðàwÏÎXoVåg¬µ¬V../0Ú2ŸÍ8;;îpçÎiä‡Ô ®¯¯é{%CoŸgFS%ÛXk-•µ%»KOÏ-í:Åbê\Ê/"Õ&2䑜–»-ñ=²“J³åÇ Ú(À–'Hî]@‡ÄÒ.á©2…×Ù¶³2ÉÓ<t‘ñ‡IS {?”0²\ЫBäXNXúè‘9Ç!BB%¤ÈEšêòb™ñ¢#'à<ÔmSö½°•ØÃøø‰­Rñ\ØÂZc´!*ñy«ª‘u+ñ9\z:ô%ÖÞ{‚ÊvjARØ–f°…ø¢ê ;±±ˆÚâP¸ Ãe«$Õ–Ân”ñ¹ÕÓ@kaîPÊ€¯L !ËY ±¼^ˆÂêÜ@Uµ4uEÝΉJËgm´¬ÙàeÜÅŽ,{àÆ=Å„ÈÌ}´ 4ƶتƹžù²á«¯×ü/ÿëÿFÄ%p)) ”4/DS ß0ñ÷¯mMp#½ÈM”£ß­qkOk+Œ²D%,C]ïb„JIÓ†ØvF>*< &ؤ<ÓR²O¶ÑšÙ|‰V†ºžctMsþý¿ÿßY,f)3ed§K™™²æ3ð­¿HÃ:ºaÃùµûØ{³&K’ë¾óç[DÜ%·Z»¸H€H2“L&³y˜y˜—ùò3Ò)RA  ÑµeeæÍ»D„/ópÜ=âÞ̪êAjŒV+C×’w‰ÅýœóßXŸ5rÍrC2ôÂâÛû[þêÿýo\¿~ÍþäÏYž]ÒªD#Æ)û-ÎRöµ®Å§Äv< hHtöP×´"k ‹å"[dÈ=ß4†å‘¢x„:·â0ŒŒFã´aѵœ-Å&-3ö‡¾¯EðápPÄaù}ŠÅÙz‡Cfnnnh»ŽÁû|M4$EDs}·‘€÷XÊþ¦ú*[Õƒc QÖ)RVxåõ6¯!»ýçÜ1h™-£ôÜš¨¬Í9Ètˆ/  Cˆ¢ $Æ(ÀkLºJųAÛìÐļþ¦¨ÐÊRÂc‰4 5®q4m[EÁ(5VvVŠšÖ°Çïà£ÿØúc!£ “¿mpô)*²]Í·0â±âﱿ/aõâ;Me²’Yñ­sÜoböôõ´É9 QÕ¬uÔ,+zï¹ÝÞóîæ–m?€m°mZç{¸|>ùxb¨L×Ií7;¯3uˇ@…ÇÞ㈕˷·Sš«ì檕T-r´–ÅÑûÚOd>Y÷<ž®fó‰Te¦çMÎCÊ6'©Þ;»ÝN’ÑU U£KÎüyŸìógÏÃÓ˜‡†Ó@Ó¶^Å«Ü/²^[ëÅápàÕ«W¼yóš‹ó5¶±Y¨ÙoÞ¼åoÿî︹½•a°³GÖDÎ9ü8pýö}^#ŠÃ¾g·ÝÓ÷ý‘UT,õ–àµï{\·j(L“å¡Â¡fH…q«·¬k»×4°-à ˆ5Æ’b0.)®Î/Xu â8Ðr†r­)ç²±ŽEÓ²^,°9O#E¾hm±Îðìùœ?‰øÇWo^Ó4Ít)×B¾Çr¹ÄÙ†ÍÝ­wGÀqÍ%SŸ#@â;× ácÀle¿Ã0 ø™…ÕѺ™>Û¥öÀG×\yM­ )NjÂ…µÓÀîDåöØ>>M&×LçTõ%ª9£hn“2W$<˳–EYm˜à…«ƒ2Þ\Û Èë{|ô8“IsUQQûÆZº¶­Ï¨AÔ,G§°îõ¤Î=ƒ®¿/ÂlMV¾* ¥vÕÂO©’u”±íÚpï#2Ä^ž³~·#_ÁSYÐà×Jë*FBACð¢Jj¬ãéÕ|‚€âýí–ýþ€Ï¹6F†¡ÇXHÊKfŒŸÈd&[Zm#q4@ zºÎ²hZtRŒ½°¢“òb¥”÷̘¢ÔâP!{¹çl±ò¥¢H1k3¸KJ,Á«DÒÐ÷=¨Dk4_\\ñülI3Œ„Cn)i†Qúƒ1ÀÁÞ\¿çë7×lÆ„W–0ZÓ|$D_û¯BQ±Ø8MáÅó5!ÄtDô*ƒîBJ«ö—¥n ž1xÆbç_®{&;å \‚²X4, ÃØóöú¿ýæ·úçîŒÖ‰jÖ=¶Q9n²¿*AéGÏ'J r6M´\_ï8¿xÁþáÙïüô§Ã0 |ÿûßçù‹—ôÃÀ›7ßðæõ×|õý/xñü ÒˆBÈVsµà±ßmúN¬®–p¹~*=_Ql Ùl{Þ]oˆÉ‚5äíâ îSGÖ˜:+ED’V” ¢B¾¸”°b“{Ó#m'uÙþí;^¿yÉÄ©ínO»h1ZáÚ†¦kÑJÓïöB>h$¯àîö–Á{š¡ìý€ÑšÆ6Ù6Vçg!_4ÎÕ\G£eeôAˆ«>gE4MC×u™D0²ÝÞOŠ=³QŸÓ¬äðÃxl—š×ì¢S3;m‡$u¦mEý˜ëµ’o$ l®‰ƒ± ÞÓB+V¹!x¬Ñt]ÃrÙrq±Æ5 ggg ÷»-w›<×s°a½^x~>>Ÿßûq{{;k¦Ó£ Ã'ÇïéÓÿ&}¤è?Ú3Ufu]ƒ6}ï-7ï#›»í⌤w2DWCo¸~«¸»;çïþ.ò÷?óܽo¹¼\²Û…<•ÊäÈ’_ûZ¨Oûš;à;—asþgEY0ø@ÒT@%U‡1s9¹ÕRÄU¶¦’ÜGB¶!Cœì„”õCðçÄ:D¸& £¯2ðàeð®˜3¥¦ É4ó¾Nù7Õ.h6)žï¤t$ß+ÊÌÅg6´ÎW”&Úä¡fù÷‰ÄU ‰È˜êÆXÆ—¡Òø•–ð¥‚@DlÔÓ $ Ã=ž’Ê€GÈ…ù쬹 1æaê,È;ßÅ•‹co`ïGa$QŒ”\aã*<š$ØvŒ‰¶6C¹è‹Â±âOl\TV8DèH$£'¦Ù4¹y(ö@Y=£Ï`l‹ÒަY1%Ï•éuT U‚x ûfîM^­P`L‰õùBR(å@iµÄ‘ÛMO“SþXÒ!yØœ( Ù.b—ÆÉ'·4Ö*‡aÉfY/;¬U´C#ÑöÄáÀˆ'¤YCÙŒ|ޕø ›ÙóãG;0 IDATœØtX‹µcåzÓеK”2XãØÜK'6I17 …U¯'æRœ2GÊwÐÚà‡¦uÜoZ¯ÄŸ×vbç¢Á ˆa¤[4Œ‡ÿ·Ã7ß|ÿÿñŸòüËïa-iˆ¼xr!râû­ÜÏ>ðöõÛ ÒŠäw¨Ãº¾ïÑšj] µ¢iZVËŽ”Yu±-¶¡?ˆ½ŒÖ"³ÍkV gtµIââL¤ÊÖ‘”„Z—§eߨíl·[Ë%ççg´Ý‚a«z*$xúüÿã¯þ'q?²Zž£ãööŽà=VkŒkD£>éj“3E è‰}î:BФˆÏ £µ‘yÍŠ1”%¨Xï÷1)T2™Íl³½,1jœq5@>¥PÙó噊I@>ù`FT5ªAÙˆ1–E¶žÑclfh*?±÷ã±ý÷áI>_‡?ü-CçA óÍòŸóig‚­™mà¬q«EN.–óÏ>”=¦X«šÝîÀí݆ËÅ cÉO þX½—Ò‰»š“˜¥2É6 :=è'ËÇ€†VD{½CÅpnŸ5ÅŠ=ÂÜú©îÕÄpÆx¬ÎIq“’ã¡ÅØc€KŒ‘ûÍ–àÃlßϼF“ˆ›†\?a†Ç–G¶hÛÇ4®©ý¸?@B ˆ É9Çûwoùù?ü‚gO®ˆ1òìÅ3\㆛›[~ñ‹àÿþïÿëÛÎÏ/} [¶Ä´8×ÐïÜÞÞÒúÉúÅO69uP–‡Õ:×å;— iÅêmΖÔ§W,½¨Ï$GAa›)X^¬KÂÖWE¤ zmÇ‹§Oyõæ ×wwÄQ2&ìì=WË%ëåR‘Îb"ôý´¬[]· ªÕ¢a=ýÍP™¦õýfƒuc ggçܼ¿Ý/ñ¨>NE!TmH ò/z¤ŠRrþù«æ<ó"N`Öu8> ƒø]g fN¬™Î©&˜À˜Õ£Dñb$©D^ÈVAWË¥¹Uç£ëÆì³ÌcŠª„0`‹Bà8yjÞê*Pk{r£ëÏÇj­’Ž–ÇbÙ)„+±mÒ@U(”÷PêT-ÙPÖXû}!ª5iš‡~ÇX—›¬­ÎCv¥¦ÚG¡ªÅÙU‹JR”ì» ëÑb±àÉåZAð#û½€¼«®å{O/QãA2Ñâƒgð‰¤,CÜlîùí›kvƒgÄHõ¬ «n‰ö1?Ãä?W3¬€Lj6”ý|R=Ä¢B’’^X,Y3Y+FúÜGŠÔÌ.VËÓ˜lÉ{ruÁrÑÒ÷{†¡ç0ÆËógëÁ÷t­#Æáxí9êŽíãD‚QŠÿø¿âÕÛkþðÿ”õù9?ÿÅ/yõúP‰ÿøÿcµKúùÏÿž·o¾áÏÿüG¼x~…fKð½(ÄG{ßÃG_}h˜þåœ( Ž*“Üo÷\ßÜq¿Ý ³^Ír UyÂôIÆ 5Œ<‘ŸG OÁZÃùù‹Å"+8<í¢ãéÙÖ:nnniÛ–››[™[du«s¢$ººº»mxùå— CÏr½f±Xrw¿aô )-±;ô=N™–Fˆ!«VݲævÅœ×0xORж mÛÖŒï=£&'„#ï‡D¯ÕŒ,#YEª_Eåi­ÖZ–ËeµŒÝîvÙú1¬­ä•”ÉX¤DÛˆ-í¡ï©.Ó3@;FU–‹–—/žÑ¶N²ó?¾¹¹áëßþcõ6,‹Ù@ðóñùø||>~¿GÊEqÊ6;óÞñ÷4<ºÁ¥“÷¯¬À‰% u¾Aaк:^¿:°ÝíYŸ=wNÒ‹e·õ\¿mùÅ/¿ü'Çnÿ´.èË•F랇|¬¥ÌEwÌÞõÅî(Õ‡™4Gµøq½]£¤2p ª¯8y£-~Š)Áû~¶ ÒØçÀ"jjš1 ˜eT;¤<°­Ÿ+æV‘˜<*"6nòk<}f“¨Ùp]B‚çeÇÖ…¹ôHåRC™S|´!ªÀÄ ¨˜)ªøM½ø)Ÿ³cU-¨Ì¼µËˆµš¤´„'a±‘8ãt®9•âÙ ©,ýUyœfȉEɉ|{®Î ‚D©BåzØõÙ§8UeŠÈ#s!RmhÅÿy:Û¥Y@¸¥£ätPBlG‰À„ù(~"M¬÷¥ÅÎ¥kW,º3Œ²Â8ÑŠ¨`È,ý£°¶2TÓÇS¦¤ÉH§‹%b£„%æ7ùÖÇ™o±šwågÄ[÷µ×ÕÒ¨YcˆÞJ#{ؽïYtúˆQ‘¢%¤.KM½4wJa•Â6–EÛ¢uÊ¢M‹Â*¹ רÜüF’-YÊÇ~‘Lq'ͫΒíRø‘*¨’*³6äûË@TØ,oí £îØïF~½û-0fõV±É n×-ñ¾çþõ_rõêk¾ÿÃpõün¹àÍ»wl¬º×_¿†ƒa—Ç4N¬”Œ¢‡ÚP7MK×5âïƈ×w òžÎ9¢R¬–+Ú¦ÐGÙÌR%¶ÿÐÎI¬N8a×%1s”}TŽ®• ûT½ÛE¥2ú‘…ê*ÓRê!]×h•…ZOçH²'r€r Ÿ ôu&Oøp)aœ¨;œs\^]q·¹ç¿ÿå_r¿ßñå—_Ð8K? üæ7_óÿôO¼zõŠÕÙh-jÊLî(ƒ™a‡‘Û›;ÆÁc´b·?àg–5Þû *÷zÉ R¥Íd? u´§„ü=‡¾gìûƒ ñíÏÁÁ)Å ¤¨™Í\6aR:¯žš±N²åGõâg:Ï!F×`´f·ß3†À|A·Æf€^Uµ¬µVºÀv»ÍŠ¢8YAå¥3¦œ{¢!ù¬ š@êR#”îÏ:Íõû·üÍOGÎÎθ~ó–õr;ú«Õ‚÷ï^óþÝ[±VqšÛÍ{6»=oß[ôù ç´1X—s.FéIœ‚˜<_\žq¹^BcÙŽ#÷‡Ûíž»û=›Ýž}€œ1äy-%ÿ iÚÜ;ŽD§Ùíœ6DŸè÷=ã8ÐZ‡må÷> Bˆ5WŠlÅ« ÞSLM¢gÕu¬WKV ùu±^q±^±¹{Jg™Ä¤¥‚z¶ûCߣ¦÷žÃØîÆ‘1&¼iÀ9l”Ø™®é0Ê` ¸`fÙHJUÛ?£ÅšÌW›ªÙ5û0MÖÅÅ8e¥–älø .—Ô¯ú„f„J+MðÉG‹¥Þ«¸ÛÜãœã{_¾D#y¾Ýq©f'õYYÛ ¥­åýí-·÷~ô'?Â4†_ýúWì\Óð'?ù ®i Áó«_ÿ†¾?ðâÅãxIþA˜ó¤L|„Ô1} ÍÉEƒ'ŸYCþ¡a¸Ýl¸»¿'©(6—Jˆ}iþšj²u–š(Õqc 1E¬Qè$×álµf½Z x¡5/¿ø‚—_|É~·çÉ“güüïÿ!×}r C?0Œ#ûÃ~qÖÒX‡VŠgÏžñòå—\]>e¿—çh»Ýr¿Ýr¿½'„¼ÿëqH’w =gËU­Ïô,#ÁZlë@ɾÝîê>.¹bšA«)F„¤)°H.õK9©1†œU)ó—åbų'O9;[ƒÏŸÿžÝnÇííØ×“†j 5WÌ©¬ÚW™È(—5rqqγ§Wt]ƒs Ö6yûöýÐ×™ŽýÙÏ~¦>B?ŸÏÇ¿Ôñãÿ8Õ¿›4A}‚YômŒêÏÆ‰íX|Á…›ˆ ø¤¢§?ð÷?ßE©g8³ä׿zÃ?þ"ð«_%¶‡sFOž8¾÷ËÅ¥Ç5[ºÖcµ¯ûâ„–¤ÀÇ©‡éG?7'Þ¡<æK "ýÃèÑÉgåA¶q(CÚì ¾zÁÎ3ÊÏ”à³VIÓ‚GÇxÄÞQ™Qó@²IµÜü` —ÎÃë9z? P.¬;­c;ÎÀ†ÓB§4תx%—³.ö3b%Œ“”o„¸äšF")‘´–ÜfƒàSVèTPÍ´ ýÒ4H꘩f@„BÍ ‡2Tϳ(B?‚ÈÍBe ^‹]‘žínÆWßûb+bŃosæ^ðx?ÖÕ¹ïüc0¶áü⊶YÒ6kÂ'OÉlg”r89yP“RBìÑÙœÀ²âéZBÀÊ3³T=VeCn4õ”œ†h*•L U5jbɡѦA¦“{"‡º…¡€1åû6›¯³6híÐªÅØ.ËÆ-ÐP¤Ìåþ4Ö²5EÊaÖ5›£ªŽÕKñp˜‚ŒÉÃÉ'WuèíÇHÛ,Ùïo)ñ|Æ(œ?ÐàG°äœÍ¯~ólîÞñÕÈüññl½ Føæëox÷ÛßÒæQÎ6›[ ²\vŒÃAج Q4Î08ÃØb`蔽C”¶4M#¬Km“ÁN9Î(‚Ƽü|šlLÄÏX¬B°h;v‡½4ÎÑïø¡G%"0ö»ÝkW„¨0Í‚VL¶žÒ*a¬#E"ç¥n˜Ûž|ˆ‘ÿ]?_iìRÑ ÕPæ²öM€ö0 $ð/³TËÏcŠ’AUÊ+ö‡ž7o¯¹¹½m°®9²,Cít:Ì|ŒÿW¥*ò¸šàÙßVEò ô¡×ù¸ŠBÕ½¦Ø·Öý”Ï4g«T9Tiöó³Ï• #¦¶ØÇ urÖÔFÝ9û ‡âTÅpút±û)ö!Òï{½X•Yë„•Þ÷¸Ö×a¦s„8#_¿zÅíæŽe×Õ½ù~·Íö9‘µ6D”X4Tö ¤sƘ¸½¹“÷ígÅ*¥¿çÏVr#š¶Á]ïầt4¨R…Ä‘¿—ü8¼gÑvUUY]3+³¼Vz¬)FÍÙrÉÓËKÞ\¿e?r¦—ü|Û8ž=}ÊÅÅmÓÈHi¶û?°;ô >H†ÅnÏf³áúúšÍÝ-‡Ã^,VZ‡¶†ËË+ŠÍ½dYú!ç8¥ê7=¿'ÜÇÜ…_[UÖw"AÍBÖ`“«C¯¢Nq3EÉ\”fJàc²JeÕÚS[}Ì©y>JÉkêëªÙkÏß³’$fƒâãÙ.)¢b©»Ò4¬W³ºgδåÞRé(³bn­$대4“3©SM¶+>—…¥sUY™çEY³Ú:æ’CÕPT%ÎrKîSfêR¥tÒtfV«*DU3eÇ•gñææ†ëëkZÛðfû–»»{©ú­ œcâê饟#ïÂŽDŠ-]cX®¹’@a•Ë®a•mb¼†Ú°ï=ïoïywÏíý”d.h­¹½ß°Ýí‰ZÓ(Ö¥ZúK¿?dUˆãjµdÑ]щDº’ÕŒ¶™pv|ݵTyò,¦€Õଡu mÓˆ•!‰¸ßræÄÂSã‘í~Çè#>H=3 #»¾g×ô£GMPšÝ Z×b”Ø¥JÍ®ë~¯ŒÉï5V1& »Í¹ZÕV¦º¨6HË¥ þ)D³åk¹?‹‚¥†ççÈYGß,º•™”µïÞoØÜßcŒáé“KÚF“â@H1+Õ'Ë ‰`0Õ3dâCˆáY‰íæàGþé7_³\Ÿó~òvûÿó§?%ÄÄ—/^ò½ïe4››{þö§CÛZ~ò§ÿžÆ)R€a| õÈ>6£Pa—Õ¯A2ò`¨„£wÅ6B óãHð¢Æ¡*¿…êU“ 1Š9zÑÊQ‰? X¯$dѵÄàé†b`è8k€¦’R ¤lMçŒc€¬¸«E£œs4ÎÏV,-Î @k¬Í¶X7ÜÞÝÖ¬–Ï™ ŸÏÇçã_þP¿û ã÷ñÖ§âýÂj,Ø&`l`¹JUB©P¶²| ÓßäÍ'©9Ç\þ*§gƒ‡Üp¨œI >›®>±ÙA¡Uœ5h¦²JeЫê¦X>³š5Sõ1¡ÿõ;×!ñq5«gö‘Ú£ kJq˜›¨J [6*Q&çhÆDÉ@nVŒüwï=Q)Li®«âà8ÈtöžÿõQˆu)ºêç;‘NÕÛ³!ä`m=cÌXªiÎÒÌç)}¦-¸Ç(òG…Æ-”,1èбK àGÑaL[eÆå09$ӹދ‹K´±(m8 =)NMz žƒB‚2'ÞÁ3 JÍí‘te— èPäî0£”ÊÙÕ鈵Y-If@g½‡Šj¢d‘¨˜½ƒó§Ñù3f9B·ªu—Ò#–I(“íNôôþ*UË.±ëšBLµÖÙX×rêýzl‹QGàUÊLÒ"g¯za#®×kžÍæ®Ñh3Ý[e`6½<óa¤Õ‰ýí;~ù³{¶·oùOÿù¿p~~ÅÏß½ÁÆ0‚Çj‹¤ ÖË–¡ï1F³\´\ž1Ž=‹³3ÆvÀR¨b”°ÌŒÃXhÚcl.VµøÂšâo*ölÍ80Žƒ0=½Ç'Ÿ=Åå^oœ£†‚iŒp4ËvvKÖ«µ°}d±j@7¤¨0ª‘€QZ‹}ŽtÂF²ØÂ 9,Z×çV³R(g\•°¦cô9lMåµ/‰‚Eif¨¬â™P)ˆŠ·³ RuI—Ÿ•̆HöîM ål͹QG¨€Q>ìçnÍ>ÐGl8õ­ì~ßÇé@ïtØ[s :þ®gN©) ¹®ªyФt¶ 2QÚ°ìºÌŒŒ8ÏJ³b !†ˆ6Ža Üï¼~wÍnÑ‹%Ê5’±“×E|hÿÐ7åcþÌ13Ú²oúi€í‡*Àˆœ£D§×è1UƒÊ`®ÖFì2[´O¦‚%ßR»zd@UY#¹!Hà|XŠ…ÒŠ8¾}Ìÿþw½NŠ¡¹ßÞãÇÀýæžínÏn—ÃXQŒƒÆ:”Ñ5O`¶Û-oß] ãwè±N€WÛ8ÚÅ¢Ëïûƒ„²fæ1«3ć;1 ƒX¹å¡Dµ¹Èßun1YÂ$ÉlmóȰ»b$z1½G/2Ë;VC ì{¶»ü>†É6&£ ÊÎÖK¾|ùœë»köýžq»Ãä !ÿíÍõ ~wO¼—žÝ¡gŸƒ²ýÀn¿ç~³a·ÛqØïÇžårÁ¥9{ºÑ³?ôÜÞÞrss+*41Lƒ`“×Ð2°úú¯Ò‹<¢+¡ãã( ví=ÆÚjçTò0–j œ?!ª0êPò±œ†ò<8ÿA@3}ø¼©YPuÙ{âé:>#˜ÐD…uFê#DETÀÁb³™f5·±–0z”19ÿ,fP=²‚³(ÊSJئ°!Æa¨ÙPZ©Êž™ÑnŒËõ™Éj-…Öj1ßO´2•9_ó5f}Y%oE±ø!*úÃXïÏ‘@ðÄ(€¶„<Ø~õæ%¡I÷#­Öô‡-Nƒq†¶q¬ £qZgèš–˜)’=äͺaµx³'ç Þ3z±0êûžÍýûCÏû›ö‡ pMËr)¶¥„@Û8‹ŽE×ÒZ{¨˜ÌžVII îÜ®1_´’*¢ìö{”žˆÛÌ WI€Ìý80¡ƒ% û>d¢Wd#CÔx,FYÉKЦíÄ™ ÷aj–m •Íä–t*úàÅ"Ø  o$÷S u¤.+Ylåöå‚.Ý•„ëI}PHw•<”4Ëå«Å*gzˆrdðõÙŠ¯¾ÿ*zjcQ¨¹á1ØwT;•gEkî¶[þòü Ož¾äɳ/Øî{~ý›ß¢µá'?ù _~ù%!$^¿~Å×_ÿš/^>åêꌔÆa³*;LýªRß~>"˜Ôu+æ×1p’„ys»¥Ä"+DéŽæ¶eÅQg¬áTVòCbð8gYŸ¯YŸ±>_óüÅK’†n¹äÝõ5ïïîPÚðüå ü ™6ïoo8¢jÈ9H)F†a$ĈßÜác *hÚe ä|‡K÷„¦ë†žÝn'{ýÛwŒý@ŸA׸ º*k*µÒߌÒôûž¾?HîÚ)%e63)k‡‘°?Ùs­Rˆ„óhÉuÉK¦‘¼Ø)éʧ¾'ç8¥HGü80 ½¨xòº7]:_t —çBüêBJÜïö¼~ûŽûí®çŸÁ†ÏÇçãóñ¯shdþ¿ê8 ‹‹Qò2­Å.¯àûÁ±Û[Æqàîæ–ßþZ³¹}…O=··–±_àœãÙóÀþÂþAâåË-gë{Vë‘Eçq6Pãjí•>Êäûç4/S}?½®µ Fž”h­ÀV_å™]ªÚÄ:ô‘'fOëÄdµ4„×J³†!7¼R$j°¤™jM3†çÏXæãés¢ÊàæáªHÁKlõLÌÍULÂ2L|C_C=±RìJsàòð !¡ÀÚTŒ2JÖqêÉ›3ά/¦Ær<¶›Ž8ÓÄl(ƒBÍC¦^¢Šš#9~jæ¢F+}E'B!E‹Èwi–’ÊB?&i¼ ÛM+lãaäââŠE·Æ5‹Úø)m+Ð4· P(âÌö¡ØfŸ‡t4L+ä))”¶9à}ºnåuô l˜Û…–cb*ÆRŠ•1RgŽÌ†ýI‚9@,¥ñ9ÓCQuÄߊµù»"Uþ—‰Xž5 …‹²J×'k Z­v+s«¹ù³Z}DŠŸ¼°M]Gð=ýÐa¬ÏŸe ;•:·FJz3øñÀ/ÿþgܼ}ËÕÕ36·t‚àb ¬V1üÐÓ5ŠeÛâû¾zzвb¤k«5¾õt]—ýJH¶3¸måÏ«ÍY=G¢.2C;›m´°Ãµ¨´5d˜‹ä’3æ\ƒÕb¢¢é:îÞmEÛ-ѶšfRH©< 9=–Ç|N£’x„¨Y ÖXbµî ¢0ÉÎ1*bœ˜•*M>³R¯kØ÷|bzô TæSª%y^M¾g&v»Ö¦2xå²F‚;:RÄJ-‡«ÂæÔÓ÷!fü¿ÄpíC~àœd¤“lžÉ"mZ¾ýv¯Žäé:~¶R‚Ãþ@ “ïi­êæ]l5Êl¡´„˜!²BÎ ùyœÖ·¢ýÿÐPóÄ7‘™Ýa…Õéºÿ¯9(} lxìz“²>Ç“ë±Ä?”#ñXÉ4‘FÓÌÞïxø Ã?zaµ.'uÇï£â=Ô ð¾ïÙí÷ÜÞÞ±ßíò°{`}rcf¥£4)H¤äØ4(¥¸»“aHÛ-ÄÚ¥k±Î±X,0Ù²@|”#­kèûC zïºï=}ßçæ`Å ÀÈàÓäÖRƒ<¸~sK |>}f5ªâü>”¿8öôÀY,êkE5 Aqqq΋§O¹½»–çàÑVԯ߼Áû‘8ìúûÃ@ŸÿÍc›ï=ûýž8úlÓ${Çjµ¦[,}`_ü÷•ÊûïÄ®.ƒñ#ÅËï¸~}Wû¤ï²¦–sh­•Q˜Œ1˜2`úð©g¶nÊuþ,—!Ô§>ó‡~ÿ˜µZYÊóg÷)+*cL­­Kýüèw-¯e$“B÷‰Ö:.ìL IDATɘ¦™B­u )ÄúÙ´ÖXmH!Õž0 $)c Þg&2àGŸÇåeMžTfÇ„£9»Ê¨j®¤†‘Øg ÊDí‰Æ˜@Ó8ö}ÏrÙ ¨˜ƒï›Vj›1Dvû£ÆhöF³¹½£q†EçÐ*±Z.€DHÛ´4]GÓvôƒÇ‡DÓ8®ž\¼§³ ÙòmÕú~ d{%kÅ"4eûÅÆY¬Q¸¼.ˆM›xÅ%JèÑ™ÐZ3úk%i®BˆúŸ÷†Ñ >÷10OŸcLÙÂVÓ $(W”Í­mUöÆ$Ä*¥ Qwë>—3ÚBš ÊýHx1ïÓ‰¹ºOz:QÕæžCéãõ#3‚J8;µO³þDþVîoK·XÒu ´6 £çúú=ý0ðG/~HÛ6¢<Êr1mÔ¤ê›wË[ÒÖ¢(ýÈÿñŸÿ —WOù‹¿ø+®¯ßÓ¶-ög–U‡ŠŸýìï¸~÷–ÿúýït]Ã8î1:1qŸæß)ý³‹ãÌ–B²‹'_!¦ÄÝfË¡1Æ‘(kÈüûQÕ¡µ]ÊÏV òFAÛ4¢Äyò„³ó5OŸ=c}~†qŽÃÐÓ÷›Í=Jk...ûårÉùå÷÷÷Œã(wÎQIaªÃÊÐ|ߨîwb5ää9X,\^\’bäöö–e·äöö–Û›Q6ÄÀ±¨3 Œ©áÐÖvÞrÎѱïDqGó…©W=¾Ä‘Wf¢t”ü¾¢ ð~È`!’ùPœ rO]úº#›¦ìT!*õD×µ|ñÅ ËçD½> 7··|ýõoÙn·õ»|>ŸÏÇ¿é#ÏaN˜=äÁ,–týÞÓ÷{¾úªcØ{þaè÷-Á¯8 –×@àâ2òÕ*þè{ÎÎo9;;ðì©g½ìY.A«¾î¯¥6¨C«O4º¿Ó@'3œuÒè<Ó´Zš¿”eÀÄRf̆á%¯¹]ƒ Ûc’MrÉW¢i›Êb*AƦêûJÞ KØPa¥ÆükR¤ª¥¬L­Nš ÉƒvÞl̇ vp¤„öP%d?夓lô³Éc¹¤sb‘1k€ÊÀ¢Ó&Ú©1[çPhÀh –f®) ŸIÍ0ÑŒ3ŸÛ"Íž{ÂïÜؘ<è.çJÂÿä\ɤP Ln’B`ôÙÒAË$ňsŽÃ8ÈyÊeR¤| —!¾º’ï%¤Õ f—4´í:Ëw³ò@i‘À>2ÈT³lÓ??PŠ'g±¢ÊܨÚZ›±(â‡Á¸Ì@ªÃB±™}¶që“e3xÒ8—%úH<½•S‹è8yFO`CaºTAºDœm´™5²ÇçâÉ,¬Ÿ…ͧ•”#ù™ë´ÁX QX}/¹-ƶlajðrte·½c»¹çììBBÞ“ÇZͽ„\k‘ΖaVÛ4´9$Õ9‡3âóY$ú1&«eÍÍ?߀±Nž×bÝFÎ@1ªÊñSB€c E†Ãe4‡ýžd4XÃúâœq³•@=ë4¶a»ÝâœËkYVʤ(Ö :Ÿ÷4麊Ý´ØPÄœ¡¡±( }/ S:µ¼nRZS|0$)ÍR¬×s6xMS¦ÊdëÂŒ¥j°%¿bÐU²ò®%ƒäûº¶Ï;¥˜XxŸÈkø®ìÇr>¦Ö!nèÎþlžôTþnÃñòüÊÞ'Xž•sSÂg¾¬+†§OŸÒ¶í±õT¦jL©2 “‚wïÞI¦2Ìa¸;e}곞NÒ†pŸ³y9 F}HLPQO?Çé ò1•Ã|8sª˜¯}ÓÆ ÅÇÙæ§¯}”ÿó`Ž,”RÕbèô<|(“¤ûýžþpàææ†”}ß3Ž#Ãè9ô}xM!ºóó&ƒW_A˜³³³é~P cM}îE%è„MLbÌl˜ÖYÚVïÞ½#ÅPC~ç×ê1µÐ‡®áés[­–2Ûý¤ÐZÓÜÝÝMÁÔ¹n›@ñ˜.‹—/_r{ÏÝfË~l,c¹ÙÜq¿ß‘ÂHô~}ÀØ âæÁåýöž‚äþÈÎG×µœŸŸU6þÙÙ9~Œ\^zÞßÞ±ÙlŽI,§×ù[(þ¥@×O°²W‰šoGš¦9Чo¿öfïèÐRÎI sNiŽS-†Nמ:L«â[æëg Ö­À`.rSÕ¶´M—‡Å*[¯Î2î2Kº„þ¦˜°Vž‹”½ómV>Ú|ÿ–ïþäê’ÕjÅû÷ïP¥ÖYR !ø±Þ¿ò¬uí6ÆdRVxô¾™[ÃR®C‹Âz…Ð0ŽÃaRaØÏ2ç"ÁaS+…³ŽÆ:|ð•„5Ä”-àþ0L·¹Ú !A|&UX×дwÙþÍ2úïs¾—亮<»§7•8R&¸|ÎCˆU}2 }Põ®¬%‰Á'€÷ƒ'D!樲fê¬|Ht#@gJŒ>–š3Ä×:ÆqÄE¹þ!‰™ê³§WŒ>†Xïå”>ç/î7$‰?&‡j—Ϧl¥Å«^½ òÚ ÑGò(3¡dþû¼1Tvÿ“'O*ð\ìw1× ’õ”è³jíc5ÚÃÌ™”ïMÍ_üÅ_â½çË/¿‡s ¿ü‡d»ÝñÅ‹—|õÕW´¶üüç?gG^¼x!ª4:­§^I??>†/ZU”}QrÔ 9«AbâöîŽûû{±‹ªæ‘¥+ÅRDz*TqKK©Q†ø/_¾d±XÐu£÷(%bîQü(¹ Z):ÝŠu`!ìvÕÒn¤–z¢(#£­ñý@F4ŠEÓÒ<{Îùrź[ðîúcð´HZòŠ®íX.ɇÃqOIÉØJG$ͲF•ßÏŠäE­0V£ÇYƒ1Šq 8gPZ‚ñl±±+¤Ê“µ_¾ïxB.Ñt]ÇjµÂ»Þp®åúú:¦Ôºë3Øðùø||>þí5ËSA4¤hep˜d€ëlb¹èQO:¢W(Züxà×ÿ´çþî–È®YrõDó§¶â«?¸åìòçg†««†³sXv‘”¶„‡úºÄèãòûSRªX ÑÂÈ0Ʊh{3sG¡O ueç$‹¨I:}:Kš„¦é¸v߈¨,•'‡ÙQÃÜ@Wïac fØKádܘ£¡Æqh•Hk1R,2òß•‚‡<¼ÖZg–zD)Ï8  4‡ÞÓ´N¦ûÚáø ZqΙ˜±ÚXÆÑcœÅZ—m >lM2—¸×O­Õƒ*í¨IÌÿvò¤Ö³>å€ã#¿m=z"(ƒCöMVhã„xéÇ#ƒ26bÛ£²T<&ê'-ìmm-ç‹3Úf‰1-cÎÍMª€?S³:¿¿¦!ªlù;ýhƒ/’úT-$(–4GSw¨2ØšÌѰ•^ì€J æ‘jˆÍf}RŒºl "LªT½ô±o8S@kÕpäâ¸41Å9gîW~¤v9ˆ„÷>ûë£Â?aªÂG•û¼èô£¯–UÆ8¬•{ßæ€úÑ{bÒt]KŒ£¨~²Å† ÂÁOÖ<1gš¤\0zïiÛu H]¯Ö\^^Ð65gYt ‚âƒk&oß6ÆwöH˜ì桱dS)Ÿ¿„¯ZÉPHFÓ,,V+œ‰tIq²‰Úl¶¶e-NQ‚Pý8ÊwÍMŠ.~Ô%»GI¨¸$»L@OÊvUÚ(QE[ºl%]צ{ºG ˽Ø}™£áyemU—¹‰ ¦”©tQ•e ¢ú Wå ÙÂ–ËšÈØo Ý´ÖD5Ù<”†öC,ÒcþCØ AO‡ÙsvkkÍwþ<ó!] >=jX¬õ~d¿ßüÈòâŒóósÚ<ÜùRÖ¸ÃáÀvw÷#]Û²X,˜0ü²Ö©£lƒ‘³VªM÷ ø6¿ßuú»\k}Â$¯ÍïQ6Mú ³ùÛ }O‡ós:WRH~A¨–0$’uuÞ?„{ï9b«°ßKîBß‚ ¼÷5œ¹ïû#K#ャ),?(SöŸr±ë09+zf¿/¯]€ ­5ûý¾,2Ü#YB•õ¶ »¶a?†#ªX,¦Y†C Q†ûùÞ. u @ÍÖ £çúý ¯^¿’¡®•adÊç²dB8çxúä ä½ %ÿé×ìúž‡þ ™Sy½/ÃÈíR±…К˜™ÑÚˆÝÔr½–<””êÀ³íZËo¯ß×pßO­Iÿ€Â§æpóA¹ZYOÚΰZ®²MK¬¶HaôSÆA Y?ÕÕq ®úÈ#>ŽÒ› }i¶ƒ1JòÈ–n²†Y” ¸<(5FÔ(DcÂûM£RÈk®,ŽFi°–®ÛMŸ•>| Ù~T¾²Y :ˆ-ÉõGv…3»_&[²4ˆÓE-^TõP×ÚÅbÁÕÕËõ*÷`¢”‹aäË/_²\­¸ßnišôH]ð0eNJ)ëþ8Œëxõú —üñÿ;»û·?#†ÄúOÿ™ËË+¬µ¼˯ý+ž<¹âå‹çÙ‚)gh­Ã~?µàq¿5‘ɼ÷Ĥxÿî=»lÏWöÐÒ³uÈê㵋Îça½^syyÉÙù9MÓŠR)†aÀËj½Îj%ðÃ8e²d@bÙ-Xv‹#•mY+CšÕyÏÒGÖqÓ>¼\­„°8Üî6’Ó#Ã(6IÖˆ}¹X`’äÝñ˜eåÌõDŸƒ é«+©û‹Å‚¦m ú¼¦ÅljO<'~Ìߣ¬¥µÊÖ£Æ4œ±^¯i»–®ëX¯×\¿ß°½ßr{{Kß÷X£?ƒ ŸÏÇçãßî1—ëÅ$ÃûCDE…V ÁƒäùiRÒeY,_| Ûm`¸ÇûÈnëH!²X¶<}æX®Îõ$šý^LÖ‹†ö AW·“ÉïQ} {ៅ£¨Yp´Òh“S°•E)‡6-F·¹ñ7uªšr8 $BôÕjC) ßÂ5¤ˆ>¢ŒY)VÎc0èÆd8¬nEzšCà2“c„±'ìmf^ȵp+ûêL~] =gñ*f1_yP¦± âs£]|7‹êƒÌ¸QFIA®4!†˜ˆª[‘´&…n¤(ÔnE‘hAMEžRЇHk-F‹OªXµ‹OÑ4ÄÎç4³kjùOÙ»0ùÁÊÖV3Û±NÑe`gì†òó™è£Ç'ñ`ŒAsðšÞkö4ÝY–¡'L³"¥R;S˜êÑ’"iò[Ó´+´jHѰY¶2;<ñA“«Tœ…®MÓ6ULsr5M!‡XÊBFÓº†êBDk)š”"³âfì"#!Ã1yTÔ"ñÎ…UJdpÌX‹±â\ØGFÛjCÃŒ¡[>cV\”ÐnrˆÎÕ*_÷©y¶Ù¿ŸÉIôÅjªw3f_e¥’i¡ ` ”†:Ô.á}“M™Öd›RäpØ£µxw¦Ì¾@!#GVÚäÀ×óý'Úe· uŽÆ9 `ÅeÅO¨ÃG£ÅöHKxD¸—AA±žzì(ŽÅ&+æ–i:—=Ñ‘L†$ƒ„à=::P–Cï±¶™Ì‚Ï÷›xám*æ“4ø:‚ÍýžIªKÈcMјY)Ì=ŒK*@aaDiVÇT×¼¤ éδöÉ}[Øž3á4Ý—Z‰ý6¶>#ÕÇ=ÛMa¢ÐO ¯þ%‡t)¦±¾M¾Ä·"ä…v0ìG±~~Ä(ÅÅù/_<—ÐäìŒx:_ÓBˆÜßß .Ûnè¹5à\¥QÀÊôéãÉha dœyëW{5õÀ+ýH±ð‰Aác×ñS×öƒöIyТrF¬K9Ë)NÍx|dhqôšéCƒáÓŸ›y‚3ÙYæõ¶°XQQ†¸Åþ (Œ1Œã(AÏÃÀáp`·ÛIöË(Ö¤(µåg‹õQy=›­CeùÆ£û¹Ö,Åbþ•så熡gÑv¿ ],ðÃÀæ~Ç~¿g³¹çýÍ-ÃÐËkg ½ftù5ü/>ô¨ÏÕÖ‰Qg+ÎÄŠÆXûÏî JM‰:©5f ûºÆ~Äæìcáéý=Wî}êõ>iôÐÈhÉ€òcŸí>T¶ø(ÁÍm4Ãá@Ÿ-É´ÑèìlÉv?ñª€Ås»W5±Dކq¥ÆªkwþîÇ º¬ ñÁ9™å‹Õö@2⬱8#Y Ë®ea‡4T›5#‰Áçn!Šíëj¹’¡±’wkˆRŸ¥Áçjô-¶yß1ÚÒ‹k'¦ù\ K‚)л|a©GpEcÑi`ÎŠŠ§ÔÙ¢B×hïv÷¨¤0Jìt’6ÄèI* µÂ*# |¯cäþ~C…Lå½Ô?ViZeðZ†|_ 4Ê‚•p¬6Ä1³®‹:>ç¦Ü«Ly‹ªf0œV­Z)LV€˜Jã\%_œ³^¯pmGس?òäÉ%_}õ%ÚÊ}ã7³"cV¿= pWt½)&^¿¹æÕëwÀfÁœ´xªjÐGõjî%³•‡ì‘‘#õ-ÇDH­´x¤É%¢ªÅfÉ®ë8??gu¶ÆZƒÖBHØÜÝóþú†þгZ,¸æ³Òçãóñùø7~äìR„ÑÃýö;Çý&1ö­ZŒiò®!E‹RK” ¼üâ $Çæî†”4‡ýÈpÐlîö¬ÎA›V<}Ç‘®…áLÀ kJ§ìµÍkú˜Íþ»4êSÿ¥ i:œZ€^àš…Ø<¨>j¦Da·˜XÖyh¡d¨k´&™HÌ@Än€1E¢ji——k¦0«\¨‰¦CWûŸÂ>(¹ž±Ãã#^²FMG±Ë)‡™ý¤È¶IäZ+Ñ&C kY†°Âø‰,|ÀÇÄvô¬ÎÏq*a€ýIºáêé÷äœd0¦2B`y!¶1ŧZúœ²ú•ª^HuØÊCóQ rþór>T•·OY1†’“\%Äå;&?xbLXçÄSqHvk—âÃï$å‚E%GTÅjË1FK$³¼“Áukºå%)Ù¦,>öqf¢N T ³=ž+³F«0è,ŽU™g@( ciŒ#(__Ç:9O*ûg[dˆxÞ8úíÉ=“á| rþŠ&!Uö„||.¾UV3c1¶‘²‘Ï‚²(ëˆZÀ(ìU Q“dŒãp^Žœ¯è§aXab×qZî×sC[,6ŠdUg³“©Êªò5ô h;.‹´4"Žo I©Ú¶ø· 1Ä¢‰ î²ßw?z†1дgDe2ð1V¡’AÇ |Æ<„÷h‘ðËå)±Yžf$DM« Ak1â”ÈÎt×roÅ”mFÄï}Lq–Ó Ž»1šäLƒ2×6¸Öe¯mƒŸbVå 0¡m“‡„ÅÆÄg€ãX-T@ÊjÝ¥yД|×ÀÔoÛxžZõœZX|j4gíI°ú±Î§ßŸªhD©ûhˆž<‡ý­À9ËÙÙš³õz –Kÿ€_À„q¹½½ÍY Ù²ðÄê ¥o®xÁŸž˜ºg—=hÞ ž†A«“Wý6@§®û£×>M5V m¥¾û‘™[Š,ÿß2¤÷¡Çûã,í ÔyxæÊyŸ [@b™cäýû÷Xèû æ>„|ªgVgd`uåg8µ§ª×i·Øú¤IÙTÿ,ÿ½Éx•ï©««+Öù¾, Z§öb‰Ù Re6cãP'çû4`<æÿ8ô"Z;™I £(ÇÚ¦EkÃnà›×o¸¸zÂru†Ö–Ö9¬5?VUi®myöô ççg8績»çv³ÉVA-¶íØív5¯ËY+LäÑWPÚ¹†ÅjELðþæ–<···öl¼_AfCõºÿ”1ŠÅÿ€†ù=^ì2Em+¹ 1ˆ2H]¬*¿ÛÈOURNä!8ð±€x¾åºqô]NÕÉñq%Ãéýø1Ðá(gçè5t­—‹þýý½ ’3i$ÉBýÈ¡ïEéiLÄŸØ…@§z|Pt¶QMž4 À`©Ö#êdX”¡ó0û€­žlØj¼—Ò¤pÆÐ:Kë :Eâ8°hÌÑ=`U™º.AÔ!{¨;‰ZVš¼XPª”‰4YvtO¨ãþl¦Ò¨j×Y¯V†àI¥#Ûà“Ø£¥ÆEÖ±˜TÎP ‚¼hkbˆKÅ ØŸÊ£ÑRRÌ?ú1°;Œ´Ý’ýþÀ²[²?ìizWß§^g%¹J%; \wŸU/j^8(°Î1Œ~Šhž1ôçàþ‘åP&›ˆUžùÃ?ú.Ÿ\I¾›RôãHÖëð?Ä8CHƒÔð!<|NJk]Ñ÷’!CÞ¢yõúï®où¯ÿÛÿÉ¢ëøoÿÏ_ðÛ¯Ã~ð¾úê+Œuö;þú¯ÿŠínÃógH×:”ò“"FW)}›*âhó=)<&$)«H†ïû}Ïaß i-ƒ°ó=±Ø¼Í*Øš§V€>!Cµ¬×g´mGL0zPŠýþ „«LZ,—Ðu,W+ö»‡ýíýýÑ:6ßóõQ&¦=²Y*÷ÅPjÓÜ3í{"©*¶äÙˆl·[Vë5˶“ùˆµÕš3f@´~ï™rßh]Á†#èivÔõk¶õ}/–ÐÞåsý ÎLÁÓÅ~Z!À‹÷mĉ€&Y§¢Ä;??g±XàšF²ùB`·ßr}ýŽq”Úiüg°áóñùø|üÛ=”£ÁàÇÄÍ;ÏÛwçŒÃ%›ÆÙ>L›b“CÁb 8c9?Wüñ¿»àïþ6wžëwŸýôל|Çbáöwìì-¤Ã=Ïž­‰iS­R"hŠãJ 'ý}€ •ùc¾–a¿Â…Ñ>¶„<°9²Ê\%'ˆDL£„ÿTÏô²Ñ'”U9+´Ñ„ÂúˆŠƒèfE*¬Ù̦vu°6ÙÌ =‚c9!™u[ §´Ò™éZRÒTÌå‚¿ ï«?Uéj-³¨Ê²}˜O ¥ÊÊ0©k¡bŸµ‡CÒ+yo“Úùü»Ò¨§„2SÁ©æ•hœu¾ºŒµceÙ5ê!‹A(J2;¦Èž‹BB[•¿Ç|07Y I r@e5Á!éÛiùû¥ "»×âà rpïÀ*<’68wAˆ-‡^1&¬–lŒ#£ïIÑ£5¸Ìœt®‘Àhô4lÍì×ÉÚJU@nn9’’°vbvZŒžH€”U*3±¹[±ÚbOð.)Âa‹‰#ýû-.ô¸ä± ­qÆ¢cDGazŒÖÒè<4+%”Ʊåð! þbbqþ”CJèUGjZ´[¡m'…»iˆÉ1ŽJŠÇzÏÉÉw­ V"1¥è×F矑¡kÛ¶up+þ·YÚš§nÞ{”nsh¶…! ›wècfõUJ¯‹/GVk8çØí÷˜ÿ½7ß’$»ïû>w‰ˆÜj骮^fÅB#QLK¢h=€}ä|ŽŸFOcû9ì?Hen‚p@ÎLÏÖÕµåË]üÇ]âfVVÏY6ÕÉÓœÐ]qïý}W-³ªÞ#J3›Í™Íæl×+ÊLVó—¸ E¥©¹(^öáž¹³ÀèÚxe›…¥ª$ʹ躪úª®¹YÞ…'ã°ØH(D‹² 1pH¹˜…š†î@°J¤V8ӇŻ@6fÀõ-bèéÚ=´èaˆž¯Œ¹Å.æR{ ªdÈ”õ:¢Fì`pB`$´ÚºBMgXÕ §sœÖ8© !4Ö€5Zù<„( Þx*]=äÊâ>”aÿeÅί§›‡J†ïq¯¡ý¾4÷¿ï>áG ŽoIõº®Ù¶›˜Ïk8½xÌt:AסŒÞºØñÁ ”ãŒâ`8 ›í–ÁŽŽš=ŸI?óÕÂ>&÷:猲?¸ï éó&B¦¼J©ÜÚ_W þeÄÃCdDø¥RáÙÙRÇ>«ñy /a·óõpêþç—‘QòÎg;«ßý €,‘ Ã0°^¯Y­V¬V«ƒM,ãÊÚ IDAT<´…3¢|–™Õã ØÝï_)p˜±&âA DZ$S¶»±TZ3›ÍŠï°pH$µmŒTrxd|#•ÖÀ•Œû××9Ë`z¬pQM_º‰|Œ³³V ÐÛq³\ó÷¿@×¾óö»Ôºf»m©•ÊŽ ©ƒ Ñ'ÇÇ ‹9Óé”?þ˜£ù”›ë[¶mõ-ˆÿl6Û@ÀŠ P´®°ÆqyùŠõê.L;Gßõ˜Þd‚<ï¯nŒÊ‘ÉuX‚V¬mßFT®?÷ÖÊû7pùHç'HÉëÓ 3êªZB…ˆT‡ÿšÆèèhááΕ÷¯îàõ$á½®ìê$¾týÙ_§\ro¦ï4ÞgezÓÚÉRUG‹Ïž=e½ÙìD‡%PW 5vxŸAþC}8i~ á– ” ç|ëÝù™k÷ð÷•6kMµã½*æJ+ŽfSæM…t&”CãèMVŠJ×Ìê)Û.<ÿ2v~å€&Ê­-ŽE;”áÖE,û×ܸB€çA‡ÏñM*’6¡¤]í¬\¾è죖d^ŸJD¥Ðh»mQZgÁ/ç3?~]cUFøp4Ó†³G'<{þ<ÌÈJã…aµ^c­åüÑy()·/ƒdWL ÆÕ¨šóÙ .Cˆ¬ Šq†Õºe2™óÃþkô!Ã0ðÎÛoñöÛoÓvÖ9>ùäÞ[Þ}ïíŒS„5wý¸DÒŠÐ¥öåÎ0qOÝ ƒÝ§S/“ý^2 ———l·}p~{“ \ŽLsÎ…ø,ܸw¦¾¯H4ê( Hf³ÓÙ‚º™W¿%ãi&vÞ…ŽŽºTˆyUá=…µ!\[÷–Ò‘$TpJ­²ØÊ{ŽÅé8Ï`Cãjµâúæ&t(…±ç M­™55Z@cŒ7 ¶G‹*öhĽ8®q:ƪ8ûL~&ËK_º¤¼Ñ¸ÓZm6ÜÜܰÝnևο8ÓG '‹[êº÷Ø)í½g±Xðèì,ÙlN? ,Ww,W·•®Ðº~C6¼y½y½yýãé ¶h;èZÍÇ­øø£–õz†TgeÆùBN&Ó£tÍ`wwŠM;¥šLÙl=Ÿ~Ú³iWœœ‚-ÇGßýî%¡©kc©ur@©ˆW™×霾9Ùc¹pTB<ºYƒj@Mð6À©6m,Ö9.>ZÙ]Ža!¦…È™òR“:Ð{d]…#£•û9òȧ°#~g³öÒJçž‹xÚs"éá³9ïpq\ .U‘K˜Ó{Te!j¼£zP&™U<ŒÓÁÂH ïc¦kÓÄ.‹QU*÷À9Šè†ý!Öåòb1~GÎàq;qBeñkŠ¡ nŽQ™&’ çèyìC‘ Ý`lŽ$ØÈnUÍТ¦7š_ÿöŠºrHo#"¢Ù¶FÓÌ5ÆOÔUÇì}âû°Îpww³=Zþ*)•nâa#‘ :Dù03ý}¼ù¤bŸJ®‹J÷ÂÃ#Xg"¨3m»Â¶+äÐCgXÁBÁù¼a"S-h„`ZÕ1'Ö#l.ºÁbmPci©è¨C—…‰ Ï`-Æ{zçðR°é wí’e?°¼î0J#¦ÇÐL©æ3d3‡zu5žr—Ñ";WDtC4“(î‹Q1缋„¤ªTÌóL££ Jì=°YF×÷>”jèÛp N¬„ɬ7›Ý"óˆS)¥9::n¡üì…Á2‘‚9®&ráù•>{HÂu¥Â×YÌ#á$(Ë1#)ãh„ ;fÒÏM×k½Ýâ¼@ …V&Æ¡2(s\Œ41IÉD”Æ$ÞWÞ¼éÂaº b»¢±†c%Y(Íñ¬a¡S1e¢:ܧö@Œ "ø¥d‚úc¼ÍÑ+hÝÀÖYV¦ãnõŠÛÖÑ ­kŒnP³cš£GÔ“ÓðÉå˜,<…Cè>ÈïœÃKytû²×!¢â«îW_–ÿ]‚.ûÀÕî¿s °ô«€>>#>îQJŠé ݶÅöÂÃb6ãÑ£S&MJxÅØ•AR¼²ÛKÐõ=}? •FUzÜËJò—]ïB9( r@¾P;Duél(Ų .ʈo¢b~é$)ï)¢Mæ²f©ÆôRpp?ƒúÐ{KîÀ²³Áß‹ Dp.Ø<è'`¬$ ¤”¹w!>o·[¶ÛmPŸoÄÒÉû¤EùK%7¦”»½q½JÂ{»Ä_s CÑ â1<ŸÏwâiØsýä€÷=°¶ª*šUR–”ß/Ôïí¤œ0Ñ-Ðõ!bL© LvÀ‹Ï?GW …¹xÌñbºÔºÂxi’£Ep%L§SŽs®®®¹|yÅåå7Ë%ƒ±lÚ–Þ¦“†~0™ Ñõwssƒw†®ßbM(P²«aˆ19ÁU'rHLÅ¿—CþŸüåîƒþeñ¨3§Zg/ìן ölN£•çþ!þÐKæ8Ó°Þ:Wº^ÅW~Ó‰àÈgäxr…×Mˆü2ÖR‰è„)↛®wš$Ö†^¢ÁxþìÏÿONOÏyï½ïж-¿úÕ¯¨”âôä„J)älÎ|ʯý+ó)o¿ýœífÅb^kCqäþŠOìal£Üëw‰ !ÆÂjµ¢Ýöáþñzïù/Å)³“öN1žšf‚U:ºŽÖÃG/>¥ž4,ŽŽiû!$³éŒ~û‡S*ú’º™0Í0CŸ£Ôú®cèz¶Ûí¡PžUÒ>[îù¹s§ ëÎf»ÅXƒ±&º%;¤”Ìç3¦“&ÄÐ6‚ª©h&5“aJÉiLBJªH4 DŽ ÜõìÝéKŽCcL讳6ÄÓFf$ÏÛ¿!Þ¼Þ¼Þ¼þQ¿B&7`Ý ^^ ~û¬—3Q#°c«!›˜±)l(L²Ö¡õ„mëh?w¼|9€—œ=’œ7›{±¤®¦Õ ô„JU9Í€Ê9?þa%$xɇH8d›²Ì’¤ØM ¡JåhØ{Ù¦aðÏð!¢ F[ñxØMƒÎyl¶LÆCÊ;Oï‡ûeIå;æ‰ÆR_"à3¸Sq+> *sÐS,gu1R  £Ka\Š¿GŽÃ„³&Z=جöµL¼ì0i@b$&ÒÍçÃð€xïªFIŠ1NW.ZI'H<›Î2¸9«mO%eÊí ÷G\$•×è—²pq8†ðm ¢”Çû`ú-…Öõ84J½SÒ­”F«]×H¡PºŠj£ØÏà8"*‡•>8‹Ö Ý’v}²-õ°enoONx>›sªGµÂûì€teÛx?Ä‚i8‰Òuˆ]CàºÑYVF eUXÓ0Ô’Mg膆›®åj}ÇÍú–»[¦3šóçèù)Ök„j€ ïGu™”r÷_dƒkbHQ¸'F =¸‰Ò˜$°ÆÒu!ÖCˆI$"b¡µÌ>[t$)¦Ó)ZðMi‰Â=2 C(]L÷Ø`°&Xøçóùnµ®Bvx.O÷9rd7o}|Ö‚å<^­™?õ£{t†ùìp.ÐiZW\]ßâQHU㥵VŽÁHøDPDÉ0pZcñXÓnp«;d·¡r='ÒóÖ´áb:åÉBjj¥P€ŽPÁWçŠñKÄ í®q¨ð¯ :Ÿ>ÚÊÓµB°Z­¸½½¥7õtFÝL@†3Iêô\ q`ßMgÃÀŸ¿Cçýè¢E×Ë×!c¾ÍuÝO)‚„L §{O”÷Ÿ˜ÐØw_dÒŽ²—¡ Í êTDáôrÈ{˜nŒ8è{6› Ëå2€ 1"Éý‡öx›r˜‹âÞä†Ìóõƒ Ò"uT…º¼ êÔýçí'1c,JiNNNBH¾¦¾v¾–ZkªªB«*(â µ¬ß뉥Ì1öR06}Ã00˜YÕxsl»¡$½ø×6Ë%ï¿÷.ç§'ÔJa£š[k£Cƒ°E ÅãGhtŬj˜T5Âæm£˜ÂÓE§˜ÉøPÞÞÇBË@Ò瞌`Y3up"ä;±Œ¿ëž´ßÉ\" €'F)ºÃ&—¥êJggä¬u8ßû¯·ÛÝÃÔïÿü@¤sµûÒµèuçƒp°»ÄZìB“Râ„@iµ}¢âý˜žó\Bí¡iêдS}¿€¾òÒ~½ýÒ&üÞõuö«A´ûÙïñìæŒÃÛ87E!ƒDR×UxßiOŠÂ& ¨JÓv]t8ØØi¦³C„úXN1I{ƒ<½©Ý kû fÆÔ èh¯Á˜ ÔI¢u•Ö¨t8 ,J ŽJÅ8œJ!ÀÛà¾r8z?°l-ƒ—´}Gç'?üÿÃÿø?qñä)77·üÏÿËÿÊÏþsTÓ°89 yü•ÌgätÊp¾8e߇(\ EOßÏ0~Ôíç}¨š ¬6.¯¯øÍoKÓ4¬×!ªÇÙÏ/_rusÅùù î‹ýÒ‘ûÍ’³9Ý‹Öu2 …bÛÜ.·ü“úSŽOøä“Oyññ',æ ~ïûßÏÑQ_|þ9«å-ï½óÇG³@̪O[΢Yij¯XøÚèKéøJ$¹B8ÇÍõ«Õš¾3·ß´{ØymÛ¥P±¥[rùê†?ý?~ÁGŸ}Á[o¿ÍÛï¼{©¨ë†I= ×T¹0—7M¾Ë]SíìóCÛQ­VxÖâ!F+¦x㼯BaPZccÛ¶´m∤ŒgŽàNoš “É­*œ $­+´äEHo9ÕK);ð$Ûív\·X7±ªuté{A×qŒ±.¬‹ÎïD‚•k—ŒÂTS` éUU“É„º®ÑZ¡«*Ä3 –/¾xÉòn‰Цªð1ì Ùðæõæõæõö%Šƒ…ºÞb¬Fë#Ú®Â3&Hœ·Qu+ X‹j¥²ÿŒ±`Ax‰5Â7(5gîpN…0hÏ b 5ú3¿Åà“ÃâÁ{VçJ¥á Caj¥CYîà\PU±¤7€ÇQý›Î¾)RÉ6æÜ/24½‰„ÝL±ÎÆcÜn D:,'ÀËSy˜Èª½1?´ÜØ=EjQÜÔÆM3º7(È 9æ†Ã͘§ˆ†ôó…”¡Á§Òê}Õíë¿S±—Q½“á-JõVR•{pbÇò›¬â lIenôØêØA¹­”Ž™ÀᆕUŒ"Fø”Þ °–ÑQc1¢©®úv‰RA1.ŠS¼‹ªgû|ˆQéf-´­+ŽLV² YÎZG•¿ j•:4Îz&“ Ûí’Õí¸nÅùÑ„“zÆùä„Ǻf¶±œ«š¦ï©ûdT±{Ö…sôA£1`ÀG’ÍÅþ ?õ¥$¦u!D)ÍDÅ£JãuM?­Y"¸ö–_½úœËUË]×âæxôü}êzŽ ÂÚ]t N(*„èXÖ. õ^y¸L®†T¿*£º¤®›CQN® NN€¦ E›í*f“+´’ùþpÞd—Áéé)'''!n#ÆÐ•šÆ\­un½1ç8ä‹X<çöbçsÜH9hŒKéè•ð„5Ï9ÏrµFGœˆ„ŒVMVGJU\ïs&ªÀÓÔŠ»Û+únIm ³nÍE]óöÉ) ,çÎ3µPYíº¸ìFõ{|¿ûQöSÉ0@çï/©ãP{Ç\ l?p¬*\ÓÐWœT\ö=¬–|2lyyùçzæâª™ÑÔ*d~ p¶¡T†R…{ ׯãø6ŠøRvXŠÃúC¹òßÌÛ+!ÝÙCcèB°’‚ãÅ‚‹Ç™Ï¦…Š•‘4‹=1ÆÚ¬v_.—\__p·ªÐuƒPŒ£Þv:@¾8øº3Aéjø¦?K<qÄaE´,2~K„?­I$+©Ãï“ c™*9ÖjWÕç‹sˆ/ÀûõzM×nw"˜öËËÏ[‚y~OÕè Êigã>ìFepŽdÛS>äòÙ%ßâ>Á %EìSw‰ˆ1M;ÏÊ÷Dˆ:Q™8VJxËK`lRWÛø«¼¶ƒH²¾ø˜íf RÐ=ç§§L' BFb( x<‘¶!‡þh1ùÚUÅ««k®ïn9=9fÓöl»Ž¶ÀÛÜ{!”ˆ1ñ^wŽJ+¤´ÆàŒ ªV··î¼ž×ûO;›¹Ú>®5ª yÜ6Þ_R‡¢nQ‚ÑâÛG@í¯ÇûkôC$ÂCû¡h¶û?ëë}÷ÉfQˆmÂ̑șªªBo’#)Óý? =&’ RÊ?¤—ù¾pzï¾X=H’P¸À‹’Ö×oïóÎ%pØ÷=ë5Ü-kΧÑñ­©¤B7Úå´í‡ÐUGˆ#“>œ¥ÒùŠK!B\çΔz 6Jœ¿µzeVð"ᬣ´ÊëMú êà~Ì€‰Nç“ZWy .è£êºÛ¶¡É8z#r…ÃôVh6ÝÀã'ÏøñOÿ ÿâ_ý×¼ýîû(­™ÌæüóŸý çáòåKºmËõõ5—/_2™4ñ¼¿§$šËó×XŒ p³ï=嬖ÜûÅmmb„A ¨]t[9”–ô}G×m¨ëc “IM×®Ù¶+¤œç³l9;„ØYë# ìò>ÅIqüÍßý–a°üþïÿˆÙ|Îo~óº¾c1?âÉÅc†¡GVý×Év»æÙ³ÇT•¤™hŒéÑjL'( üždòÐó~x(ϲøwbo€£m;V«upx é½"ûL‰ ,v»,"ÀoMp¸m»žO_^òÁ?|È{ï½Ç~ðæóççgÌg³,ÆQÁ/Êã"îV ©êP2 ]Ïjµ¢ëºÜëÔu]Ä Æ³f/Á€ÉÿYÁ` Ö9¦ÓYè"šÎpÎÓ÷Ûm‹l¾×TÄ”¨Jå¥$2ô_Ò…Ä?SQE±€÷‚®7ëãs=:£Ë5S":ÄÍcóY©ë´ª©ªŠ³³3ŽŽB0™6x<Ëå’¾ïi·-Z%ç½xC6¼y½y½yýçóò@UKªÚáÄ“¹d°·8·A2DŃŠÊÿŽ«*YÐu ¯ÑMì<ð`ú¥jð ¥<º„O x¡émÌçý6àÉ!5QØ€wo:€{ÔâCcbámŠFqΆœIÂûNyÀ>v)d»~:à—j…̈«tÖE w”¤BÅ\a!°vˆ%TÅŸ.H&“z<””ªïCËî ´Ÿ[ÍÎð,3ø~H”`XQ~¾tðîû ¢I¾^îo”’"3’ûóÖXY*Ø#8+TÌÿÙî•MŽ Øn9_~˜‰ˆyNd`mÌ0uxaSêvDyÃs‘Õœv‹ÞyçVwWÜÞ\ŲÞ*D/ØöTu\ŒË!j*ös8‡qfØæLعîͤnÜÜ9pÂuLÉ£ù”ÓZ±P!‹ÕWŠ•0¢¦5]»a>ЮÖÔ:ÞoÎòÔwX!ÒwU>¨²œ7ÑÂîH-XƒðášÔxÎ…æDkf''üòò’íšk'¸©<~ûïƒʆâ“{#…ÈàS°ÊŒâÄ ÆA|x¼_¸¸«²Öd+0Bà¬ÌãõzMU‡A²ïÜ´a±XdL)TgÎR7uPƒKc¶d&F]t'¥QJ| ˆ±ÿ¿åÏ ¬Ýõõ6™L¸½]²Z­PÍ£¬BbŒsó],ÿS ox‹ÒcÖ›íú ¶w,¤àû³9¿vŽÞ®©£‘íÒÆA]sÛmˆG#Ò)ËBY+Dèw):]—)%BF+1u °¼–bà--™.fè«+Àñòú3n陟?£®âϱ "…ëd¯¬ù0èé_»ž½Ž|xCaŸÊj·çr8¾ãá¡öu¯û}]×±^¯9š6<}ú”ãã㯱Wœ]‚Öiè²ÆðòåK–Ë%J)¦Ó)È0Lr¨ú*÷ük¿×¬/ã‚JÐÆbÅÛÿ.ÆÊËHŸy¶÷¾‡a V2ç|;ü½½:n5ùúf÷Xꃙó.“ rÌ¡ûy †ïäý\ù½{³š‡@JÎ…¤í{nîî89šŽ@”푲ÉkÛØM¢¹ìÚ\È]*ÑË{4Ý÷ñ•ÖŠoBª~ÕŸyðžó#Á•îc ÊêñY‘p‹Ïù×]K­Ù‡ž…ÝóH4q@ûëÀ¾CíPT—_îŠ8D`ìŸ)q,ÃZ)¬…¸HÄÞÉÑÉq&ÂÒù©ªªœÕÞ÷C‘/wJäÓ±#­«!.íðõ 1Qx-{O¾ì™;DºRœó¬s,7k^Ý6¸yÊÑ»iLü•z¡¼ƒºÒHch&´ðñÜD^J*„ ó96uÀàvöâMç‚:z€ñBk±P!j-ÀÊØ‘˜b]S^o‚cIÈ@XØÎ²iMu~Û¶¬Ök´Ö8kŒc°AJ36ˆ4ï|÷÷øoþÛÿŽ?øé?åìñ3„T@8‡þ?ûçüð‡?âÕå%/>ú˜ŸÿüçQ0ºN1äó\; ï\A(ÉÔ àc—6£1š7ö )vHY)%]×¢L¦ͤáhñ˜IÜ^ZkÎÏNùÑ¿Ïó§g!gY@ÙÎÝ}v DÌêwh­1]ˆ°•R¢uÃ÷w(¥xï½÷øàƒ0vàüâŒgo=Ÿ~µá£ÿ¥:£‚›atm$¢1v@$Cš/R…2F¤ß§¢w]G'VRÏWÞnXöËnÃv³Ä9…”k<]»ÍƒÒ!-é!ÅùWÒ¾Œˆø:¿Ïìj ð|UPæ«þý‰T ±_"ƒ›Õ3ôH<'ÇÇ<þŒYšj¥Šg¿Sê›Qç=×··¼|õ ¥+t] Ó~äHê­r IDATÈW8Ÿü}~7£ýá°éWïûd¹‹Äåû³,þ2‚é¨(c®~*[Ý¿Œ1Xc0FåkV¾òó{·!·“ÓÌ‚ž¢3@ t; £Š. ÊßÀwŸ£"Ø#nÆÙù÷òšSNù`l.˜#¬v»7ƽܿ 12ÏÇŒyðÌf3f³u³½MÕó{ŽÙè8ÆrT¼À9¶Ç:¼‰”¾ïqÖ ä¾LyÖ‘¤™5“"Š&¨\\ÇW›-Ý`‚y0ôÆðèô8|/fÀYC×u!vjqG!Êaì˜M§Кº®˜Í&lÛŽÍ|Á`†,þ‘1«Þ9Çd2åóÏ¿àó9”^*~†|ûš5¿s‘ÓëÖÁ½x’¤,MÏqßvtuËd>+@Ñ×uœ|…÷ºÔ›´CÝû]öxê¯åCêÚáácWƒw‡û¾j_ÄøæÊ¾˜ØÕZcbìiÊ}IŠäõz‰³û¡©”FÅ{<xÖ»=!Ó¡5r$lwÖ‘Ø¡¤Ì„ƒM÷ä7è:‚PÐÜö†¶—|ðᇜÎ*N*ò&~ añ“2ô›Lê:|¯Ëuˆ¶)&]7äsç®ûËŸYf 8¥Á!û)xÞY¬±yæ;$HH„ƒE‚58kCÔŒQ3uÜ?Pùà˜³^ââwÚ ž®·œ?}‡ù¯þ„öÏþKŽc,hUe…öÉÉ)§Ç§¼ÿÞ{|ç½÷ùÅ/~‘×=QDk´ckóir¼ÏÓz#ãú,… K‘â®ÈýYázÀ¼žóoþ„ŸþôÐ êJ0ÔL&“PØ[ItŒ“ ½aâÏDäxbˆÛ<ƒö¡”;îwwK®¯ï¸¸xÆÓçoñêêšßþÃßc¬áéÓ§(­†žO>ù„O?yÁãóGüðß±V>8ô´’¹¸Ûíì[.ûòóãþšŸЉ“1]8c«õ†»åŠÕzƒÕƒ~'!Óž^œÛ÷Ö­BÙ³µ–é¤ÁFÞõÕ+n¥äîæšËÏ?çÑé óùŒgÏžñüùsNNޱ6t»XAîïPJ†ø/;ÎíA¬ZSŸ×Z‹‰¤B"ÓSÄ‘qÁÐ=MSç3…R*ô)5Mv* C:;Zë¼^)­¢ÄŒ1Gr†Üû¥DW“é]UÔ³)U­©®o@lpÞb¢sÐ{œ-ìöư=LóùŒÓÓSŽŽO˜Lg!úÉ{nïV¬×[c™Lšˆ§½!Þ¼Þ¼Þ¼þ1¿r`>T æ8^€}ì8š;¬k|ˆ©eŠN‹x‡HJªœkC,ˆ×(í9:Ì[„Úõ®t+‹%óÿ+À·¯~øü²)ÿ® d.š,ê`ÇŒåÊió”±lh´%Ê7ˆ% I`°Ë›¯ ,e‡½dM6&¹ÔX¸¢÷;d…Y3I&Ç‚ØÿìbG ž{(£‹ŠœìÜÿ vƧrpñ1NÅz·÷wÉBu&±Pʸ«^ÌŽ4ùòT+qÂç ‰1Å‹•€  CüFÆŽ¿_¥ªI°ï ö@™ˆñ1úJEed‘s”¥åR ÑJçÈárZØŠC£·¯¹•Šù<ÑÇǧüë?þ¾øâ >ûìs>~ñ mÛE:(s’:¥©jœ ƶÝär¥Ãa<.]÷Crš½Ç ‹J-ç%ƒ,½ã®7X;PK˜(O¥<(h”äHiΘq¬uÃBxk©Eâ R)—ð ½ÌÏoEeF.¬Þã¥Äâ18z``êQY†íQ÷ß#ÜNz,›•r|rù°†Î Òs{ΚÐabЬ ©Ã`PÙêž~·Û‰\ 3{ NTtýH\#UìûmÛ…rgâ¼sÌçsªº'ñÆf‡””]U d,§cÌI,-N¡ñú þµ+aêr-Ô)ÀÅá,މ^rw×"DlÃR‚СC1´‹”ì9gCuŒBÑÀq3ålº j xËà;¼4áþˆùì™Là¢óGäµHì µŽ‘5S‚GRx·4v|@=V*¶€«k6Þc¤Æ÷á}G’¢ªTxƬ‰‘N£ZS(I™£ôMÀüo Ô‰ z 賿ÑÎý¸¤âÞàmÈÝ5mËvµbÖ4<~ôˆ‹³3ŽáN’›â8ü˜õJÙkŒµ,7®onébËÒúŽ™»ÁWJ ðÚ/‡ö•ë¡…”¡,¹t ŠK»é$Æÿ½ÌëßýÞü=÷‰ ”pt`ù±:íçÎb­AY•Ÿpç|‰åŒÏ·/X9J'K™õ¼Ë#ç¬s!¦Ñ9D,•b|¾ÇhºÒAxß¡s¨¯¡ŒO)³œßu=Æ9d¥*ßç3I©<ÄD¾T€¤÷Ó÷ô]è18>Zpr|ĤiF Ì聯¤¢+Π3ß—u.kÇRm‹"åù²OPö©Hw]N‡Li)%ÆÃÍjÍðÑ Ú¶çâñ•ÔZ‡Õ/ª1½w9¿Z(ÙR"…ŠD†d2™2 &Æ5Ô14œ¹\ìƒ ŽÍË/.¹»»»çl)D>÷‰¯U’þûçwI‚zå )C¨sá3;? s|ᖯ׭™iß‘ˆƒ¢Áë;_Í#¹;2á"£¾ª¸)ùâœÀËÒI%B×Wr¤ÅµL)IÓÔԺⶽ¦m[¤9’LGeÿ` .’X Xß% !Ô>Èïý$ÐRB†hÒÒaœf ·{Æù*÷Sšo먔Dh…Pá|Šˆ£SÀ¸ü}Zë-R¡AF'B׆Á`]8ßí€Ãé ’£JÝ:.u÷áB{R®³w1 M*­ðšÏNažN'x!Pº¢k·èºFë&»¤–(¡1ÖáœÁ£hšßýÎï1Ÿcz‹ ÓõxᣠÛP×5>–Êòɧè~—º÷;Nýñ;Ì’çc™Ï»žÎÙX€Ê¡*–Z{úÁ œŸ?æ'?ù ï¼ý”¦‘˜a‹VÉ}XÓw-}?d‚L  ÁGWcOC+­±y=´.üžO>{ɧ_¼âöŽOÏùÛ¿ù+®®o°ÖñÖ[o‡Ì~Ÿ}ú9_|ú¿÷½·˜ÔJ¸èh68!³[¡òLœÈÝlƒ}Ã~ÔR1m#ƳlÍ©J³\o¹|uƒ»ñ®ñjKŽð)eÁ±Û¥Is¡ÇéFJA¥4µ”¡%&Ü]·ååeËíò­$Ëå××W<ëOž\ « ¦Òµ¦ªtî „lÚÃÅ='XzÖ«ºÎ=P}ß³Œ{’‰n€ m]Ø·f³YìÌÓ1BiKÛu9r©®kê¦f¾XQÈÏä¥TÔ.¢wí½Xå”n1›Ï˜Îg,f3–w·¨ºBÕíÐg²_Iò3\Šm$LBRXsªJÓ4Ç'Gh]QׄÐ,oo¹¹]3fB]E¡«|C6¼y½y½yýÿ‹;øz‡zò@WixüšZrö¨B0Å:‰!g#låreäÞ¶BéË­T ¼Jl50›Wœœ6Ì&=R˜Q-!È ”§ËÃN¼ð"·*Œ›sq†€ôxI%emP?#P`ïð0–ѱAÞF ú®ÍÀ¾R*[õ,½; í~Äü¹³z~ür©£8Øõãï#± •ºwGåVhg…ÐÁ:œbT(† ŠØ"ï<‡u¦âH6’â`tM:Àë¡ÃIŸ ƒ}u¶ŒùŒÙy!ÈùÆ"¢Ã­0Ö¹ÎET‚THŠ2YDì¸8™õéûö€ eìoˆTB…ÒÜxð,ó2¥TtíÀ0ô4MÃ'/>ácÓrñøŒétÊüÁOøÞ÷~ëëk>üðCV«uüý)fÆ53ÌgÓh¹ åSu]¡µÂYò˜}ƒ±&d^ÀÝ@ Ä,jT˃µXë‚âÊ ˆa@‡“0›x8mz'8Vš… ɉÖ銩PL„¤´qá°ëFTÈ!pŒwX$=ãÁ)Më ­µláæî– r9õl‚Àä­t¸;”cœ*;ZÍS¹úè ÏqZ…RÚä ‘jP„Œ‹ˆë„»ê½©Jìð™´"ç|§|}{£\ìAñnìH[û˜éR¼Z gPÅ`lbnD2 tðÎça‘2橊ü¹v4?¶mB´“( 3˜çòDŒG;réh"Ôõ¤n‚º.©UÓ*X¡÷/|ø¹Î9´Vŵïâ|™7žÊ¶A¨ÖDàOïq¿”/Çu rÆýd23$÷F“¦ j‰¡ïÑZÑ4:SÜŽå@hxá#)•\6^¿\>âRÜŽÖUˆÔÙ–¬ésÅíÍ5¸–J –··!xÿ;ßáââ‚ï}ï»<}ú˜ßþö·¼xñ›MË0 ù^ŒCH…’u ´¦ª´VLê«àã¡lz¶mš,è´Ã@ß÷á€> TÎᆠ^î;‹”ŒéqÖ¢§ ]ßñ²ë±f`¢5sU1•’…l8vð¸špì'B2•’©vTÑÙa½ÇJ`„dðžAJn‡žËõŠ«vÃÖÚ0À A³8Á®B,‘ˆÃºuï%Ötć0(}dIN;– ÇÓm „†ƒÚBŠDˆ16Ä ¼—h©B!Ð8/æ³íŠ­–\y8îGf.GºFµ–*r* >»nˆ©>UÅ–b_\atˆ­;XÀ ÉÆ†Zrgîº;c¸sƒð4U(!ö>’hÞÓµU3Íûƒ5vg0TJååÜùq(»§hý•ê!À»TBŽÄÎþE1Àºt÷ÏùÄ-f‹rÄ÷ Fû¾c¹º£Ýlð¶çèôˆçO.xrñ˜ISQi=ªoý¸/ûäL°m;>ÿü –«5N„á-ËÛÚÈB˜Uñšë¹K¹RY*`ÝÿŽü޾ϸ1 DÄE Ö á™Lý L°»½ùÚ¦˜¡DX + ×ÁQ’\;I©¸ó²Ÿ´f"‘‚ÐÛïD^¥¹<7å8N8ż6î&ÚrO… e‘C”¡é¢ŠÂ=Y#¼?÷˜Ÿ‘ß»/z|æóY.†.c¡B”bA`°·ŽÁY¤TQµ˜ÎG.®Q.ŸÏRŒaè²÷¬Ò>uv!‚ã$‚?éþ¬ë:¨î!®¡Qü€Á;Ë08Ú~K­+–ë³é”ÅjÉÑÑÑU¦c”H.:õ;=Á]dÙn·!·\‡¢ß¾èºPüúòå%WW×hYnÀt­¥*bFÄáöétˆú¦Dë¡õkÔŽ'Fdøoú¡EhIÕÔ¸ÙHKÀ?û‡scˆ[ im»¼Ä(ÔŠÿ—€fq`Í DvSÄ×¥3¹nŒÒ9HTºÖ#¸˜‰ŽìªÞ# ex}$9%’étÊjµÌ`™Çs||‚5a渹½cÛ¶!‹=FË)?v. ƒËŽÞ¼¦ú¢õ#íéB"<ÔR2‘%"ÏΕ¤ZQFœîq6ty] µPªpTScÍ6“•VT*œ…|T!;ï*¨Â¬‹v˜Áê*¸ù+õph)È9¢iýv÷tVÙ1ädØQí}(‚6ë]ëIœ—Xë™LæÈO“ÖÈ»Û%ý«+Œs覡_olœ+„¢m7ôÆ1D‚úÿÓ?ãûÓŸóÎ;ïðoÿíT©?þñ9??§k;Ú¸Æ]]_Ç3dˆ‰¡x-Nß>çþgÒ:v  ÖR´”1n3%Œ®·$"¬ß—Ç‹ñ>Ö•fÓ¶üå_ý-J †¡CÇC­5MÓ„(šÅ Ïyzñ„ù¼æéÓsŽŽ'Xß#XÓÌ‚k£’Ó#¤GU g%Ÿ¼ø‚_þ‡_sqñï¿ÿxǯ~õ+¼õe6›ñï¼÷ŽªÒx×çHµ4¯dž/ö°"~¸íûµ£Œ kˆXJ$4½ Îz:F®®®¸º¾Å91Š Ò9)¹½ËbÄL]äÎÃH0Æï"Å(zïb[8×k!ÐUÃTéì|\®Vhªæb|Áäv¯#Ø.vršÓ{×{±©â8¸-RÏ€/)3ðÇa&*nŒ\:´-È%@ž‰ôs€ýxTŸ{]Ñr)ähO.³²Ë6çF÷Áî ,Øn·Y%T• Æéd2’'|ÍC&‚¾ëwÔ–cYUq'•ÀH©æEÞ˸ Š%vïý³Ï>ÃÙSŽæS$p{{Ëíí-gçg¼÷Þ;<}vÁO~úcÞyç]~ýëßðÙgŸ±ÙlbáÞ®×ZËf³¥ª4“æˆóóópl¬5´ƒ¡µŠuo¸Y­è†!Ä1õ=Xƒi;P:¸xðM¥¤a°1­ØÛÁ"ŒAš¹Tœ©–3]ót2cIÁ$ÎþÎ{;Ð;‹•°z–]ÏÝÐÓVŠ^)¨”TX3„µ‚Tl¦Æ÷èuΉ ¶b "™Ÿ· Ø  9:h¤›ê*YTƒúUéŠÍö6¸™¤Í©9>‹‘È‹DY˜YfrB“{(þçó9Öyz3 „`0kÚaàÕÍM¾?CD†âÃ>Aió.Çc(]QU‹Ùœ££#óy¡¨ò£µf³Ù°Ýnó!ùôôk=ÛmKÛn£²§eyqÝ0ÎñùËKîÖ¦ó ƒ%Ú‹áÇ8œñP1Zëc¬TPà @+s¡(nÀ²±ŽÕõ’£¦âlÚ0(ËÌ)&^ÒHxåˆØ8W´°ÇáGH‰Ž9Q¨Luh¡Á;zçé½ge{îÖKki½ ’N†­ƒ Óɇ ªBkx‰n´8ð&£º|íƒa¿óý{/ÿ·ÜÆh¾‡v|ÿ•ߟ(Н3åÇÁؘ¾oú–JIž]<æé“ Žçóÿ:™|šq6Eù¼gYëØl[Œ³9>,Dè„x1"+÷Ô«þKÎ8_ÞÆôzpô~»ÃýïùPã~¡qpãÅsCáÐñÎ=xÏ”…Šû΂ÒBXv—ì–Å—DþªòA’Æ ÈšïBì j<#×MçlVû*“>¤Þ|è:K)éû¶ëXo6aµT*Ü»nñÀß1–/3º¡’8ûóùœ§OŸ2›Î²£Tz?ô¬5uMU™ˆˆ½(&–ZïtPDTHJ(“+Æâ‘DþÆ5¹Ì±“ÞÁåkcdÓ¶Ä´õ°ÞnYm6L&šª¦i&TU•»¥ÏŠ®ë軎ívTèÆÄ語®ëY¯×\^^2ôC¢ 2@†óZV¼§Ã³,J$¾J‡É×C8'üϹØSam8 ;PG 9âÝ;÷Ë~‘¼ðã­’ÓãEyvõ9#¨$a2x;eÎiÿwÅó}¯(>3ʨŠW lŒñ¤8{Ü_¿î÷µ¤¯´8§æÎ#ò½ÞãHAw¦åÅÅ^ˆ‡ÉdÊÕí-ëí†~èÑMMÛ¶yÿØQK±lRÊâ*­Z)´ÔBÑHB0xOŸƒrÿH™þ¥(¬t$e㦣vÓ\¢Tˆ‹òvT'—ŒíÅ2¯å°ñÙÕ*ÝÞšvo}fw}÷x\NøŒÑ­Qœâ| ©Ò¹Ýš6»èœñ„øÏ¾ïÑ:¸I”Ò8<:µƒq¬¯oYm6¨JE‡uˆVK}@¡$ÚƒTÛÍã`ùË_òïÿÝ¿ – àÿð™L&Ìçs~ö³ŸQ×5ü"ˆ¤ a› u,ˆ1Æ4è‘”½¡ Zíìݾä¶ÂçáçÙBTâcaô|¾@È€TºXvmÅ ‚Þnï^âý%’QR2Ÿ×üè‡ßçþÅrz:Gk¢s=(­Ò#Uˆ ³V ¨ù³?ÿ·wþå¿þ1gÎù¿ý>yñ ÏÏ999Îb‹››+Žsž?šÉ§ñùkwr嵯ï ’³Qyò˜ÙbÖ#‚ûý‹/^Òµ}$ªEÑ)Þ o^o^o^ÿù¼ÂyÛS$òŒyÇ5íFЮ§ÜÜ)ŒÒï5Î ¼“£rJ%LLó…ÄžXŽO§x¿UnÎî›tBmv%)Å2pàCÞÂçÌ}ŸEÖ;†¡O'ÞÈ’ïÆ˜ IDAT ›hïKЏýLÖôÚ‰U:dwæ°z6Ù#wXù¾w]¿W=v_8Wö0Ø´Ù/•–ãÁR¨@ŒŠŸKí I)_rÔD. +R"åÀ e ¤Š0Îcípo -‡–„ì¸Ék­GåÛÞ5•EN¸w¢È±ßK]Õ;@ß¾*n<@R¨|V59Ágq¢ÈBïƒê")on Û®©µŽ¹Ö–Ë—Ÿ³ÝÜqw÷ŒßÿÁy|þˆºúçg§|üñÇ\]]Çëªè?s…”ж-—Wƒ5Íœ=>§ž6!ÛÕ*f3³},š ÙÔAÉÕ­6´ë5¶ÝRµ[º~””CG×n³‚Œª äF×Ò ÏFz®+ÇçÎ2“’…”L…¢A c‘p;t´v`;ôبfWBP B¡¼Äkbpb,δnb4Eê(¿O—#ZdÑP¤rY}Š+ R²Þ$eïXfËŽÅÝeYónÏ…1¾'výcù?É"’ð>©ZÎv ¥C ÎÄ$—£I”RL¢pa2™²^¯3`Øu!RÄÆ.‘²8:ˆ¨ÔØ©T\ï²`¾–š©ª¨¼@ ÖÌ΢|p3zÏ=WÈHžˆ‡ÉÔ8£J%*bë2‚¨2d$ƒD!&ót ÇÙ0F+Qœ‹ÜÈ—scú»evFÅ=;Î;Ö…ž0b—˜óOŠ}²Î…(b̦Vñ{¨QuCÛõ\^ݱ ¨ï-ZI¤Ð8£|™$Œ¥·žÁ ”®QR2‰}û7‹u–ÉdÂ/þâ/¨´¦RŠ®m„ñV“ø ¤§ó‡,„|ÒûL®‡’¼ËÝHdµ%à¤ÇÆNŒço½Å£³snooYÿ?ì½Ù’$Wzßù;‹/±däRk7–ˆšÝ6¤866â<ÂÌ\S²¹ÒÌôÒcÌð–Ck‘&A${aªQ¨=·Ø|9Ë\œÅ="# Õh@4k•·Á èÊŒððp?çû¾ÿ¶Þ€X…þÆ{Ú¶E¨" »!“mµnùò~ͺiøÓŸ}Æ£ÌlZShâl”aØ|~qÍ×OŸðêÕe=çãGBYÍxñâ5Ö:ªªâóÏ?C*躆åõç/ùâóG̦“æ³ËA¸çÎËl7š€˜CÖaC&–ÀÇÞYÄÀ ­¨söƒpYÅg,´½åÍùÎK:cBޤ_ð,óLÀeâ¦`0ÏjíDÊòD ¬ l(¤DZJtJ)qZ3© zTôMß…Þn»ÁY,_¿áñã¯8»s‡‡?ú€;wï³X‡Á}QPDwÜ\–%ËÕ*Ø·m·y–‘~ƹð½Ôug+Û¦¡ëº¨Â![)µm›óU„T¨¢@2öI6Údö]?Ê%Óé]l›@Ü+Ê"(Yð4mC×ÅàŽMõèuR6ŸÏY·°EŠÅbÎÑ"X"–e‰÷”{u¹d»m1½‹9rÑj1ïÁ†÷ÇûãýñG}È,ßO¶J©Àòà§ï ÙZ®. ®/5WWSÚv¦ñÁJ BFݘb‘4̦‚ª´ô¡P–ùB#T˜ÌòÝBž¿{³Â[ãPTÊè%9˜:¤ÆUeÆ¡A Hýîp³(ôAĸØ7¬‡çÂ;Ú‘ªa7û ð÷~' ºížÝЮ5Áð:.bÏ2BÛ¦èï?öïM矘¿ãÁ×þàaÿ{7‡é÷ÅÀp¼‹lŸQØä¾E°i …ƒµ6KsahÀœýÄYTX8©ù 2pÊèl\b§r1 i|*å(#C 4¡á5†<1C+…Õšª,q.œóv»eÕ÷14KaŒ¢iÖ\\\ðòÅ+îßÀ'Ÿ|ÊgŸ}ÆÝ»wyòäw<þ‚Ë«k ¥ñ ]{  ï,¯_Ÿs}¹ ÌÈùUO(§Ç]2©j*!謡·3ÄPô÷›5íf5…t›5ÛÍš«««P¨õÆytY!… Ãcq,» ”Î3ÓµÒT2°+T(dK©Ð(4aXi¬¥§ó©¨*ʲ¼¨Bh±‹ž®‚쩟rDR–$¨"‡m)¢åO¼G„‡3IE ä(ÊÎï&"xçJä°b1"ËŽMc£Õ;,blüo…Òë±Â£¼@8sÁ—74ýšÞXzchÚ>2úL~Œíèú.ƒ—óÙœÍf‰‰ÀF.²Å¾þúë¨ät}žó/ÿZ—©ÉzÛ`‘œÝ}ÈzÛE…²h„¡¿½ÙF ]ÅW`V…ÁœžR)&Âq¤* %ÙZS éÒE§ŠãÀcFêÇZ„!KÓv8ˆ¨ ÐE¶°ðñ5†ÏðÃ;ã=å†ïöÞß¿ h³BxŸót²mÊÞPÞ,3H0B?8"|— ðúí WÓs<ÊÚHÀåxà¹%¥ÃþçÞ·"8tïc2ë^lì¢,Õ4Þ¹áa0ÚßõÖÁ‚(^çét’½£U´Þð~ ôûàÿPpeú,Æêìß?(ØÆŽÚn?¿%GÌøì¿ìœ¾Ñ#rKTs ÷IX‹² Ï›ícðtŽxchšöÆ9¿'¥TÌ0²âÚ®¥m[Œ1TUÅÙé)xÏõå%]dY †Ú%‹È4y×gì©ÙoW"q|²£×Õƒ5lûÊ!s@è;Í™‘ {гÿ½¼-×gÈj8,“‡àZ)Œû¨µ£Àè=À„áí×?sHG2™el3ذm>}ô wîÜáúzöŸø{Ù v$æë…Ä„H4J6gIÑÎ_É0h]€ J§œ‡²Ñ¤¨Ûi°-"¨4î2 2í#6¤´Ê¹I'2\9d€¤ÌÌÜ/&¥ »Š‹1€ãò:à¶°ÞŽ¾.ÚŸ¥UEÆzV‰0ôÎ2©+œ(Ø´çW´}µ©qEÊ¡Cö QÝJFË(á#$”eÈ%H6XÞ9„µ#Bœð ¹&#€tŸ¦g$¿¶! {_ ç^"µÇEƒåÞ¶]ÇÉéÿûÿñòé§ÂÕõ’«ë+^¾xÉógϸººâüü9a>Ÿ‡ž=Ö‚ À±Æ ¤ Ãú«KŒ1Ym,=ƺ¤Jˆ$€¾ï9??Ç“Gê@.Ó±· {»™>v7K+ÏmB8tY• U²>Œ³Ñþ1Îün’÷$7Ì |ܳ«ºæôô”ª*ƒ¢^)¼ulÖ[ÎÏ/òÚZWŠª,0}—{Ê÷`Ãûãýñþø£=üÈ2[Œ\D’-³Ð;h;ÉësÇÅyÅëW3–Ǽxai;EÓ‚”5]ïbó’{å%wï(îß·eKgÃbŽÐ@,ü!9‡›LrC,Êè¥i’¯¤È 0ü—4ígCC² "j‡Ò‰½žî±Ü}<¬O À˜µ–eø‘ —šÈq“ ­å Pcðo¤°cö71ßÀÅÆb·‘Ã?9L˜‘r!ÚC4½ßa†Ž‡4éõǃŒñϦ×Érçx-»?;nèÂ0À†ð6ï)Š"“7ãØFéà=€„RÎßZd¼± X»`Q’`†gÁæF©«dµ&†Ú&ºÏÕôy˲¤7:ƒbÄP×Z|e..®ØlZ^¿¾àÑ£G|ðãøÉgŸ3›ñôé7¼|ù*œ«1¨è%Œ%5ÆX./®«5ºªXœ9¤*PºD—%ÎÚ²-ËR–R–Ô•bvzD¿Ý`»]*¼èiM×4,¯.ñ«Uø ]°Ø±Îã>ÖP¢Bš`]VEvk; ó²®Bð§÷l›–¶ÛÀA(d¡1.e€ø8 ‹Ã±h· e8¯<´Kìg$ÞÚ|L‚·KµPaõpÙYJ¥Î£âçÐѶ,0 ÃçtÞ#µ¢Œ~Ê z— é¼ÇxÏ\ÁYUcú,{¼P­‰|dïi„Çà航ÂI…T1ëD¨ÌM÷RQèQÖ 7T‡@Õ·íW‡áoÜ%K]›ˆ›,óÛ@ÝCçwh8vÈ"ÿ{Öum¼éµæìì”ÙtŠ.töuÎÆ@F›‡,V´BŸcm|NÖ:ÂҸNJ">â†ü¡‘úSÿ|;c_Œ‚oØ.e ûÆþôàáühPtxоm½î!}ɸóÜ Iää,ì3×ÙæŒ÷éƒÉ9¶ÑÞÀ$/ã=ÿù0 < 4ì¿nßÐ4-J ÂM]ÚŸ}Ží[/îƒ?û¶0ãû2Õ^Öôƒç3)”™ßY3K¢¼ÖÅ%…Ü;ÔmûjëÝÏ=(3dÌO±ÖÒDÆpPI–œžžR×5Ëå*Ø Žz†4œjâa¿*Š!G~õ#PÒ9‡’®ïÑEIçlJJÁã+92ä'Yk©Ê2¯[.†Ê†½gÜ3vbðt¶AÀ`™{Òk”$ãõ‡kÎŽÞA îÀ2þ}QqО­B…a»³ž¤œšÎ樢BJ”ºàéË7¼¾¸B¨"ØVŠÊJ4…ÒØh[å¼C¤ óbZ@å\»tNÆX¤ 5*¾°ù‘JGû+B@ݼ´öÉѺ±K6 _ÓñµK 2Øøc„’ã³;üìú3Ü¿O×uÑrز^.Y¯V¼~ýšç/^rqqÉ›7o¸¸¸àz¹b¹\¢ë’Þõ<}ñ’¯^ñ‹¿û/œž.¨ËŠ®m0½á“O>áËÿö¼¹¸F隓ӻœÝ¹KÓ´¼|ù’¾ïùðƒq´˜ãpáù‡ú]*fG3¬ù]ßPWE&\â›Íµ¡U|®üˆl ò³6(äN%ãG*i5 .^O‡g³Ùru½€l5Ê ´Ž|6*#µÖ8çQR"S?¸¨ýºfÇVÎß ž$°$)|BÞŠb6©C6Žl„b+Zô¼b¹Z#½àòÍ9«ë5Ïž>£,K‹wïßãG?ú|ð§§§(­Y/W\¼9Çö†i]cº`ýg­cá³µ©5¬VKºÞÄ5.ÔíMÓä{-[4E2bR^9ç0}O×4˜dgïKê )%E$Ôe‘‰>EQ`º>Û†ígœ¥ë›Ûä´pzzÊt:e»ÝF2DÅÅùÖë5¯^½D‰0'8:šÇÞã=Øðþx¼?þ‡AÛ•GFjXÚ\];–ËŠ—¯5¿ü§-ß<éY^U[`Ƹ-J—± X¡ÀuoÞXæG§x©1®Ë¬Òœ5mÉþû „]Ô´1a RC×õaƒáÏB …ZÈ" ­µC3 ÛjF´ß°ï7Mã¦>!öaó‹aMªÜ+pSÓ†î·qCvB¨}¶ƒŠªåh•âG*Õ;øÌ´;“lüâw•†½J©š7úиPG!Ö…‚ (ŠÀ®2.ÿNz¿4¨Oßív»£hÛv§xÛ]$P(,1¦äþ”e‰n¥(ŠÁw7Ý6{¦»Bnìà;ž,›ï$i· ì®qXU]U)‰“ÞÚ¶Å¢ïÛMÇzµe³Þòæõ9Ÿ~ú)}ÂÇ?æ«ÇyúÍ7\___ì¾¾˜1xÒè{DÛ±\mC£ tQ¢ þÔ%ª,¡Ô%¨ÊÐÀ¸X0I­9ZGðÑsçø˜ífٰͦ٬éšf`oÆë¡w6 · •¬Ü–EQ3WHIQ”hAPJ؞裿**œv¸4~W¥ƒÔ<ÃéÞbh$ƒ¿µÎRxg£­™ àŠ’Õpÿ¨XD‡|˜ÜÔû4 ”^~8 ªžå ²Øå&{ïh›&={¯r—m¤”ƹ6Ø×"Cë–j'S¦ªkˆLïCÐl*È“ªÃƒTŠºžÐu=›í*41NPTº¨ìlÑ|fgŸx‘Ÿ­$TQÑnL¶a¿žÖpAxü{}p¡ÕÿfIl”¼Ç‹À.¤Œï+³b(¦{Û)ŸZ4‰ ½ ’h2, Ñû¹ÇÓ èqÿ]tQRT5¨áûLÂwãÎ .ˆ›ï{€ö6p" HÄÞ>ò®@ú8è6`áÖs‹@U×v8cQµ`:™pyy‰ W½rUR3jŒ¥P!8º*K”Ôx¶ïûé|g HõN¡Û?Ôwð®ïµ?`+ÐÃÍáü·]ûçáÇ.þ[Ïë÷ºV·Ì„a"&ZæÁâ»æ•ŒÕéßó¾im°_é RïÍ]Æ÷ …Ýï¾ë"cÂý{÷X,Ã02)nöÁ…ÊŒt$fdöq…Rû‘C×uÈ883Æ Ê"[ϲDÊìŠvš6ÔÀRë Œ­úlþ¨ëñ1p\lðûrLZ‘2ûV´¤ªªøZ–ívÃzµ $Bicè»G –V7jº!#æ»Y²ýä o{¿ñ3$#Ã|Ÿ]߇gGIš6Œ7M‹Éj5RìÄþ%)ÙDR (†nÖ[b|ôˆBaèRQÕ5Ö{Œ]P:Ø™Æü’d9ä­‹Ï`·³®¤Þ1³Ã´cs4²ic»8±síüžªõ÷¨÷UäÎöIÞ{¼ß©í µVè²@JͤžðÍó\\\¢c}©Š¸> ¥B+„·‘èwI]„1È6(\ÊÉ’"÷•CŒË ìL½¯Œ·‹Šÿ"#;>ÒÒöÔdAE)AY­é e}°Å´^ðɧŸqzv¤¬j¦³¦ïXÌç<_|ñ9ëÍ–¾7\¯–\__ó*ççç\^]puyA³ÙÒu¯Ï—˜î }×1›Îøûÿòt½Aéšz2å³Ï>g>?âŸ~ùk~õ«_Ò÷†Ï>ûŒ£Åc-׫_?ý!¿þçÇ,—Wœ,f,fŽ(´¤¬Jð‚²ªcöZ CV„0’Í’ÈÍû&hû;^¤—±ûv´]Ïz³¥ë->ö–.Hž¡NðQu-"Û_ 9Hª{1½q"Á¹Q}9ÎÛËÄG{éBTEIQ”º Šºª9¿¼¢*ÊœÚ÷tMK·Ý²¼ºäù³oxõü9ÏŸ>åã?æÞýû¬®¯¸<Ö2­*¼µ4Ík,õqû&F©Õ-™(:®Ë¬C Gßuœ‹àCßµô}·)%) ³ÎÏϩʂ©œdËã´‡†,Zá&UÏt"’¶Ø_U%‹ÅuUQ•%}obØ÷¯^½¢ï{t¥ó9´mólx¼?Þÿa ~´‰¶€5Ð5žfÛuÅ›—’§_w\_±]× J´®ÃpÏŠŒÎ{o0¡D†S²Ñ€ô„cTÇ¡?ØgÑ‘¹•©1Äy¬uH• ‡èß-C]©àãWD¶@ØùôSNïœñøñoyùâ%E¡±ÎïôÈÔB²LklÓØ7²”D`F*B¥ƒ§s,* ,yTeÁ|zDQ–ÔbA½YѬVl×[ÚÖÐ5=¾\eY"” ³5¬ãªï˜U5³¢db;¦º@ hµ¦ž­±X¡¨'S”.‘²Ä»"ø¥6JÔ#Û‚ÛµÔ˜Ø|† ½6ÈÌejBÓ°>‚(® ^ý.J½]\ƒ¼ØyÎv†Fa©àO*놟JvxÇÑÑ<(Iâ`'ƒi1¤°Ð2{·ËØÌ…ÐF‰éºJ›c Eþ´1ìØ»ølhEÛwTÕ!æ³#ÊjB¯±:ZˆÙl!T(œã5‘iÑô&|^¥P…ÆFe‹ZÀéudq餿=*^§ÐÛ–ÂÔs{žýroð(¢Ú$5Ã* îDdõE^X‹c‹£žÆƒ×ºª)t‰äŽQÐa†F‘l سy—ÁÛ÷1OkÐ>`ý]ßÇSÝÇlŽf³ÅÇpÓõú|RÈП'ð5 :="„ ‡D´ …O€>äÑH¬Ruî34HÍôh½^r¹YS”5>ùïÆ:ÊBïX£&È}:a½£šÔ|øÑGl¶[Œq¬7k.//¸¼¸äÍë×<þœ7¯_sq~N³Ý²¼¾ŽÙŠ¢*©ê)_üôOñ^¿~ÍjµFJÁ£O? ïa-ÿü›'üöñ×ªà¿ø­÷ïž1© >¸Ë|>c>›pzzÊbqBŒu WˆHòÞFKâx-ƒ~9T¨bàÞâ€Â»ây]gxöü›m‡óe‚…â-êh7"; }«µ6¯*ª"òZ#v×䜘ï IDATœ—&\»E¶y j7(‘ãw"•¢HVv]˼7¡fváÓvƆ\¦¤ p–7/^°º¼¤Y­¸|ó†óós.^¾bRTº¶.d…EÁd2¡,Š n¦àg¸çž?Y¨Æ½±ªªl)"àŸÈSJKʪ`:› ¥`½^±\N™N'4Í–ÕjÈ2½É}]ØßeL· `­õD°c¶Î"¤`>Ÿq¼X0ŸÏhˆ`µÞryum›u¬©‹Bg›æ÷`Ãûãýñþøâ©ô¢íNÊ)€¾ƒ¶•\]9¾y¶ay­hAUMpÎàiÐZEi牂%…ª™LK¤–¨B¢”À»Ø 9üÁ>×8ä×g¼¢((E‰(«*§#C$).„‹^㚺 r»ªª#Ó' ð[¢Á³1åOHBà›’ƒeÐø|Æî˜ï°ŸmlR†ßRqXFÆl‘"ãF›'O`·&x’E›<¿®Œ^öãBz#vƒ1Sãê+9Fʘ Úø{¼ÁÚÁƒ85c?Ò`ñ4’¯ûÀ¨v1€ÍÕÐpTe™­­‚ߨß$ÂõwlHç„ÛTìžÄ&ÊÍ0‡’Áê%Ü¡(1ÛŽù|ν{÷0&0)úèM©¢²Æo·è¾ÀZÏ—_~ÉÑbÁçŸÿ„³;§üÙŸÿÏŸ?盯ŸòôÙ7a˜üo¥ÄºWÕ¡à’Ñ“]ø`ù•¬3КÕjµz®¢5•‚IUQh‰ÁPÌj¦³9ÓªæR\"ÄaÈ Šè­yGKœ’´ÞÑu «>„ÏË*‹§¼*º¤®'x9Á¹!’uXvRÊò|ëÌðüD‹!Ô°$`(~ÇI®rNbñ],¼ awÜ"A ûìæ=K¶¤’TeÉd2‰ úp¿cv¬ÆÊ2JåcX1’”w|O}ÔãÕúpo6Ú®g2™à<ôÆâL§sêÉœÞYÚ®}O¶N£ŒBXŒÍ‹”r'lN P²À#³•‘•`¼ ó–R¨˜¯ËH$•RĦg`ñ¦Æ4ËìÓ5žÄ~ÔÉ8üKÍq ç½ÃK‰taEoûžÏÆÁÖ:ä€h¥0nl…ƒ]½£Ò%EYekAÝç¿÷ïï3H[É}›Óz>>Z(µMƒsÑä@ʸè`Ss5”R´&dŸE”=m´QZ^-yþüeY²Ú„pQkذ¼º¢žÍQå°ËÄÆu~Â~û@ð»þÝï3ð»­ÉC¾½þvœÖoYB€GJ˜PÏßµ;ðâ÷YŽöᙽ˜ë»°Þ„>år ÷Ý~~ÃÛîCÙ.Äú$õ­AÖîóüúø8è( ÍÑÑ‚ù|N]×p•ŠÁ­'nØ3ÚQÖAºÿÆ‘±:ÒYŸÉ"½Ÿ¿%¥D«‚étÆññ1«Õš.a’ÅžPAֳ͕DOªš"î¹è×;ÖIíÜ{¶Û._—íz›Á†ÕjÉË—/h¶Û¼7cè¬eµZåk“¬'‰àúøÉ'o™)}¾uqÿÈõԈힾ©U~fdÜ;¼÷t}GQ•·…ßì ÆüÃPû]Òmj§ýµøæ}ž˜\ƒçŒHìüL*,VC¶‘ %“Ç»Ü;ÿ”‘MŠÌ ²<|!U U ‰uc,mßgeÈë7çÈØ/Lçó  ,˼/%RTPÁõ\]]’!ÖÅ5\©¬ÜŸOïÓº¦šÍpαé:¶¦Ã› PÖRc†Ü1c) EåÀê É!GêÀÑÚ'RîÂ8¿`o¿×qßv¿Üî3b¹d¬ú» |T l¬±–«5½õT“)a"Øžj%ã 3X¨ÓãQxD솉hþ;rXsÊ%ÛÙnÔ·"‡­‡g-hd¼nJ„¿Ë$2«ñ|¬‹hT²º®C—%eU#Ë ©Ž$=|ø€Ï?ÿ¥Uöñ·¶§*‹ð úAe¦¤ ùÀd:EHE=przŠø“@>êûžõ*Xó\__óäÉ–Ë%¿ùÍoøúëoPºà“Oÿ„®ëùå/…RŠãÓ;|úÉŸdÅÎ7ß<Ç9“’õºE X-¿F+øÍ?…’‚ãã#ªªâÞÝ;Ìf3Ž/89Yp¼˜£´¤®Ë8N`C´Å®ºß%1rZТĵ‚õ¦‚irùgýŽ÷u¬›åM…VP©¼Ö‰Œì±|Tûz™² ûÍÞ§7ezTæUU!”¤76Øsù`ÏêœGëP?VUEÓ¶4Mƒ7†ßþú×<þçŽÌÓÉ-«¦É@@éjœ{™r”8@ØÈ¶¯#2@êï+gŠçvzzÊéé RŠlÉ´\.ÙlÖ,—ËlÕœV\•É‚>- Aã,m×¢tÁñâˆãã….¢íauMÌk¸lßtooº6[Ó¾Þï÷Ç7Ð0¼ß Érж`lÁõÚ±mJú^Ppv&ÑEOÓn¹^ÁÙÝ'§ž®[cæõ«%®¿KQÖÔ¨jÀp¨Ý¤xv†ôÆZŒuH|r˾›‡ðÂe…@ c5½Y ÁÑ¡àÌïò`KÇà&çm°*:À”Ñc1ü£v|„«Nî…&ûüÃï¦ k²®ëiZŸ}&¥`LöÊç1N,씋ä¡gús'øMŠŸÊLomHÇÍúœûƒü`(¥Ê67c ¥ÀÐÓ;ƒk ";6Îí6Jê8t´{Å·Ù)ø¡1ܱþ™!/£…ÍAWgéM›‹çº*°>–"†5«Bã XOßÛÈZ’8߆âÆ¾ü‡/¹ÿ>Ÿ|ò =âì䔓Ócõ˜ív; áeðVj}o ­¦fdZXc)JIU×xí©¼§ï¶TUÐu-BJÚ® Ù&u6> ×ãŒÅ÷Q>-N„O²¾iÛ Â‡?œÀ …R^†@g© ðEÈs‰k‚³kÂÔÙð§‰~¤‰uâ“’'[€‰ìïzz¡îû)¡,BcL,[ŸÔ ·£Ô½qÜÀŒMÏ‚µ]TH%B njÉ»‡Ýü–åaó:0NÑEÁf½ÎÏDRQ‡[UU¡¢¢ 700'SOo- …”õdJ]MѺÀtPUëˆvSÄ!{`Õz›xS ä /BGßׂÎlÃ`èã°ë¨tŒÖO’ÑšÙoDu‚=Û!/Ãç|™ôý¥€è!Ø02ˆB1HËñ’Î9lô¶.Èô­u(©ƒâE…PJ×uëë©tθø—:RV#åÚ.ýö!ï» ·ùÖ§5~È á»=âîÓÈÆ;¼w‡)›Ík«Õj'´ï:6ëMT.)d©³åEb †¬¤‘ Èï5VÿëžwÈØÈ`†óoñ}¼¿ÓðjŒÆƒøÔ¿‡Ÿ V:ˆª¢æ;™ÅÜT?îB÷—éi †Jq(³¢b¾Íþw}›Êa|OÖ‡ZiÖq Ûfdä4ðýAOäñëo·–ª*8>^„<k‘½¹?Tñ· ]\×óà%e[Ä9~Æì@Dqx“>㸖A]O¸ÿ~¤b¹Z³mš*š¦ïXÍ[$¥(‹‚² 6d"2´ýHab­ìóžÕfÝѦÉô=Ö:LÛ³Ýnƒ¯u×¢•¢,ʼg4MIq@+²(°¸†œ™Ñï4ݦtý>A·åˆQcâÅ50æØPÖå_QÜÈ&ñâð=1æ(xš¶Ëd±U ßU*‰\öˆ“"i&“ J)&“:ä*HÉ«W¯øæ›§¼~ý:Ï‘D›í–õvKY×XM³¥ë dz9gg§eðÎ{¸¼¼âòò’¾7hUàl°¥[.W¬×›¬>y6¼?Þï?ÎcD¬,D²iM,ÄÒ?оtMð_pÎ'Ÿ0•<ùÝšòBó§?»Ï£O-Öθ8ßòÿpÎ7_¯ñ¾Î69a#P¹ø ì@ñßéóúÌ–žL¦´v†('”õ3Dd}!"ÓÍ«uͰ ‰Aþ‡hÎ:¤ôAOÖF#NÉ)J*L Ðì SÃ1“Þçä¤sIþõÎÙƒ/Ø´h]DÆš¦žT¹¿90_t:ŸÔ,¤¦w\½Ë¸çØ)f/kAdxb‡¥l€Û,òµ1˜Æfù½„ÌÖûïeÌvmƃ›Û™Mc@e°k¢\³ˆþþ¡ÑÓ*|Ÿfä!™BÛ”5Ÿ.æ0tR è½+Xm×\^_qqyÁ<àÃ?ä‹/>çîÝ;|ýô)¯^½ ТG´m’E‰3‰á1ÈlS0m°Ÿ,ô½a½^ôÓ#8cB^…Y( ©çÂ&¼4%¶·t °fÐI6CPRacµYãÔEÝãDIQTág}Î72‡¦3 c±¼<;AðB„&VؼA³mÑ…ˆ~´?f}‰6¾!¸Ád°à$0¾_ã3šm‘dZÛÖÍ>[=YZ•CIYUahŸµ‡"² ]ä’ßvüœ… ëjYXçhºŽ®µ, ÏPgÚðÛ#U‘¥ê¤¿w$£Ä^LÅyöô•2pK…‚Î9¼*À)ŒwT„†Jx›‡xøÔ¼ˆ»CR“úkôã;C€¬r)+¨mZïY»ž¥u¬]O_–tB°é ÓÙ"ïkÞ‡a‚‰¬@ç,^xʺª6$ìÎû¶øßxHlµ1¨z(°wwØá®oì¾ßñš/¤äh>ã‹/>çÁý{(5¬µÁºFkÚ¶EÆ{7­Ö:6› Ož<áŸ~ùK~óø1×MÃfµF)V!5*rý† KÃÖá_´,:dÿÇÛÕ· ¨öÿ>Hûã÷k¦¼Tê{à&ë—j”4Þ—ŠélNQ”¹öJê?qÔºíºŒ!à3üûõõ5«Õ*†öêïd;³¿ÏcÐ:d-…ÐE•kÛ !Øz÷ó0„'ÚØñ°NÕCú[6äçÝûÊni·-mÛ²Z­PJ2L(‹2×o©†qجt¾k9<ÿ‚ÀÖLŒÒïbãö‡>oßvoˆ½A±Ñq€ä{›í=s}:®µ÷3)F{˜Á·…?ªáÇ6›7ïf.‰ØM|´Z3yod5ˆ]5Õð§Áv{=B|í¼f"H1oeÅt:Gë ¥*f³9EUĵÉ#¼Ì÷©÷-TŠXÂ{OÛni³ ŠD%UÔªÓé„ùlFßž|õ„ßüæ7ùyD”ÁÉ¡>q7‡ö£«·¿ß½’òÐÕù¬è딜Ä1€›~ v¦ïÀ¹?`χû™=U8„œ3cEg:¬ëQ*|Îõ±ÄôÔUM­5õ¤æõù]hú>x:çèÝ8«#§„íhèêGÃét­’mÜî:¬’ ¼GDÕHY‚"ÝQé/º’©UY¡Ê/%éhº ž|üÕoù÷ÿþÿæ¯þê¯øùŸþÖq“I×e¿cñ^Sá Dß÷”e-íü(”[£Ô%%MÓðêÕKŒ1|ñÅ(­¸Z†}ÉÃG}Äd2Áô=ëÕšçÏŸó“Ÿ|Îÿüÿ ?ýéOyõâÿw¿àòâœgÏžv¾wˆHpÛ4†Mc8¿\†\G%©ª­ÓÙ„ªªxpïg§ ‹9'ÇGLê’“ã#ÊRŽz!O]—àCæž’«ëçç¡7L„œœß˜hPbðìåpU5ÜÔHº¸ŽöÆ€ô¨Bf°Ýí)ü|´Éò{ª[ÉvEf UUR”EÌ$kº¼žÍ§lUÒÆÞ·®*³ â1}GÓl©&5eYæ=ÎÅý+©ï½:ƒ±%k^Ûs`¢£k›h›èòý.sf£äèhÎl6£m›µ0›Ó¶a/MÄJœGǾ¾ï{ˆ$©ív²&£5†m¬ã¦³9''ÇhÞC)’‹ó š¦Å¹ªUUMYTt]é-*’¾Þƒ ï÷Çûãò{D™L&M.”|¦q`4U©øñ‡š‡vàVLßlxõÊ!ØPi¬¶Ô…ãÕËŽW¯¡é ºFÓn-ÆU€Ò:YØ"Fí?Æùs22 ú¾~ç½ÁÑFé£Ç¹>þdîy•ƒ¶ÄxCÛÁlBKïÜpíÆlý0À“Kþ–áÀ˜Ñv«?ôhX™ØüDë¦YµÿŽ¢ÐUðc½F²NÈùÆîøsƦ‚/½çX™ò¶žqðv¾-tsÜàÊ ¦¤×£PºÝ÷ð0-\!|o7€oPiŒÃäüŽD ™Ú—Ðß8o‹¢ŒÅ¾Šö  d(¤ÐhXm|í®ëèMðøT"7N ”m°}>JЙ`qÔ™Ž¯^°^/¹ººä£>âÎÙ‹Å¿›Oyóæ Ïž¿ÀºpßYoñÆä¡Þk. bbÈeÛ7ÔzÂÏþs¬µ¬·6í6(F¼`½^³n6ô¦ÏE»m黌B8‚°(kb8]à¥ç|”ÔðH’[L‡[_±îû¹®æ!c Ð1ì\DOR (ˆ™$ÃSXìÎa|Ãódñ¾ £M”ÓɌ媋 ˜T$GÒÌ b`ÇŠ=„U4Xx?d!ž 1Š ãÛ5X ’-”Ù ™+ÁʙÑ:‹üÐðÛ|-’}IÓ´ôHUÇu'Œ˲Bª‰Ìj`ÕÈ!^ÈÌÈC¸–‰È&3]júzcQBÒzO­$(eðo>f®ÄÇKÂÎ=—|äŒXž£&=?ЃŠÊù`ßÔ8ËÊö\{˹ó¬´*D7Jâª=™„¸>2>œ÷!Xф뭵f6›QV|–¦ÿË»÷-]þÐ!ùÛÅÃúîAPY8lkêª èÑZÚO§™1§´Î>øRª–•%¤¤žLX7 Ýóç4a}½DxÁüXPTuº ‰‹ß{ /üÖMä¦ö7h?ô‘À4]hªº¢ŽAÃ×ù8ßê÷'Ða¹\ryyIÛ¶8Yô;P2:ïfkŒáì,°F³s»¡êãóqÃðÐáÃàÞ˜a 1ú=m#{ùO‰-9f, ›Í­Â¹Ü»{—IUst´ ®',‹è/?qZgéûžÍvKcú!`:çižÏèÝŸÏ×:zëèÛžÍfr "K³ªª\gŽsµ„ÔùÉDÉ·ÛZ:ç‚%ÇrÈ!eË÷‘[ð{hã€N†àc¥Ê *­`ó¶gÊ[‚GІo³`Ú#öŒïò¹†²7’$”Ddðk4€·ç6¼mñÑîF)µ€íœGê‚££Šb ¢ ,kŒ5‘`dCÝEȱ Y*¡æ¯ªI~Ÿ®kè»c ®+š¦ D‡®§ëzªªæìîêé”Íf3Xœ¦ñ¡ ”nô7U$ã’Êp"±>º}Øö¹2¤šì{Øv¤÷ÇøáèÁ#1¶c»ÞPxÑök¤ÔxçYL§Ü¿sF×·ôý–Þlq‚ àzïé=8©ðÎfÂHêywÿÝï£ÜN8ô®ƒ¡Z´ÑŠÕÇÄŽ ÁB)¯ >úÛKtQ„^)¬’´mÈçÃ:ž¿xÁ³çÏùÿá?D‹&Ň~È¿ù7ÿ†ívËŸÿùŸóãÿ¥›í6êR¸µðзÝtíœÑOxòä+¾yö”££9}Ìd2áùóç4MC]×üìg?£( öw÷wœÞáßþÛÿ‹O>ù ­ þäÓŸðè“ÏøÝ“¯øÿúÿáüü ëõЦm˜L&Ìf3®®®hš-^hšÎãÛŽåºÃyÇ«××xg¹svJ]WLꊓã³É„‡r|² ,s#)+IQÔ4Û5Û®¥5&f4Z´.À˘u–ú!Á³šÇþqŸ”ݽZíâ3ä„Äz‡ò{Š@ÈÁÈä,”°§úd•ýNZŠhÖCvGðΡ£êQÉàË}´X0©kJr÷º¦E(«*6:ï_Û¦ Jt†Üˆ1!lüÙR­*¼ÇE›£Ð*zª2* ¥`2©™ÏgL§꺌µEÏjµ $šhá”GJÊ@ ‰‘lw‡£3=MÛ UÅ»w899a>›Ç!q®®W\_­ÀK´.3ÔEw„D¼}6¼?Þï?zÀÁЏ1à$Z)ún‹éÃÂ}|¢8:lˆ5ÞIÖËk¶Éé™@«ŽÅ‘ãx!i¶ íÆÒlÖè°Y¢C™cü€$ª4OÛEu]ÅþpK × ›ÅK2š~`H¯/cd–Ï^¬ûMùÀ~Úý Y)áw›ßÛõ7Ù=9ØX’}Ÿý(D/XÏXÆ^öA‰àvÙÙ£&}|î;‰2òdõ2°ro² 5yƒÜѶP·*"†÷·6WÙª+‡öÒÑñ9å,!èM¿ÃæNEÅxxs( kÌç @°Ýlãõè±&(°@©q@v7†LP2øåª¢¤5=Ζ´«« áíZ¤5”ÑÖèÍù9ëõš‹‹ HAû=ÕW´ôþгsÓjÌnÑJÄÙÄ`Q›lB «õв,éºUºZë¨zõÙºãÉ“¯xüø·Óqÿþ}>úè#...øë¿þk¾úê« ¦8炲],W J ž>{þÎ+¤ºVA³Ù”ÅÑ”³;Ç-&Üp‡ÞtüîéKzö(%5RÈ vŽ(ÐɶWb¤B# ~–1c0(Šn YÕ'núLìfÔùœ¯!CD‚ª,èº%%åtJ×u˜¨¨ª A˜¹xçÂýäÁšPŸˆ‹JÉ!‹ÎZ...¸8?g»ÝRÅ „C[MˆˆRι &´¡Æ¶xD·Íd2a2©™N'l6Îßœç5G)” Ñ>QöÄ$0)Ëé¨&>3*’—ŽG9ÓBIÉj³åêâŠÍf‹w.d5Åë–Ôué9z6¼?Þï?Ú#ÍOå0ÃۑϥǺ]*zÓ3™Ìê-=ËtZcmÃzÝÑlg´[‹T–ããšããŠõrËvÂ/p¦¥m¶”…Ž›ƒûÞí›ÃvØABÀb± mD¶%ñÖnR0ÚÞV F–=Zé0#ù{±Ñº#Á‰=÷qVÄþ`Ì´Jžïégwà"óÞ»Ì`S*)MÓÐ÷]ü±à~4€&Zå«Û¾º®GVEá”ì“’ìú¶ò¶Ez½Éd2?G^7ò0¾9€‹Mtô¯JÞâû,ÈyÁ7^g°/‘JF;+?únûß’pl6K”*P:x¦vms©@«‚ºÖßå׋ޠ·k,ܺàÕ‹o8ÒЮW^ã¼£kZzÑevær½bõÛ5×Ë}ø!§''|þ“/¸szÆï~÷;^½zM¡4]B^APÕ}7øê†? ²(PZò«ÿöKʲä£GñÀ<@’j6¡œT”²¢7=31g³Þ µæÎÙÖ×+.^¿áÍËWhçÀt™Eš–R|Trh†Eí¶ OòuóB®Û5M5C©’¾?¡(&xB¾C¸þçeQÇûßã½å"DàÊkd)°¶Çë’ãÅ)àèÚ [»…IEYèÌü•8;h§Ã=ÓusQÚ;™ÔH-x¶¥帉!Ä[ ªR4¢ÅF 3J’\9ÙÔä¡Óø¹ŠX¨ˆ x`uTUÍf½ÊkPYUy $d4‚íIF^î; ªwô tï)dÅlzBßtl¶ =ëYš–«ÂrZ ÏI©qNR90é=‡ŽV-ŽÁ²ÄDÖ®MB3"âÚ¤qxZ\ð¬¼e#¶ž`§izÚ¦§—G§÷™Üe:]`­l€º)¶Czl s!Ôò{t˽aÕ» žS¿ïÓ½J—Ì>yüÿÙ£ZkL—¥†‹‹ ¶›5uUæak×¶l›&?_ãµ]*ÍÅÅ%}ßsÿþ}ÎÎÎøñÌüW¿ŠÐ’Ízsp||BQU(Vìr‡%ã÷Ù±ÈÁøÀÏï±ÿþÀ÷›Nþö!ßø\÷mtÆu‡Ë ðíCÜC6.·‘¤< žEÁññqÆî‘Tï¸V‰d°^¯éº.°ì¡ïú°XO«σÏ,–Û¿ ¹§ô4Æprr‡»wïìØý¸(½õ†ÎÑ÷}dì ×{q6Ÿ¯µ6XHyle˜Ïpi(êσ¬DÄþòƒE•µë=—×W¬·.—×yoMa’B a°c…D”õ. Œî—ÂyåÑw]Ó²YoèÛžÙtìÊ2Eº® õÅè{×Éê1Ý+.Yaá™L&p€Ãy-ß'ÐwÛ>{;(µk “BÕ“MFªEYнíuÇ@û<Ïoûï· «¿Íšì¶ ldFˆ³Ûû××3ë ƒÛŸ÷ Vé>tEð£ßßß7F/Ÿ_¯‹–—iÍ_-˜US”PL¤¦–š®o9??JØÜÚïU´ž”‘¼çR ‡•HÃ÷>igZ*´”X×!¤Ji[9ðYÄ}C‹­‚¥]÷Âë*tURÔ5²Ð­Jaûž¦iv¾‡¾ï©£ÂQ¹¯J¨¤àÉ“'<~ü¥û·›ï—¤d899ÉûÖšÿí/ÿ5ôQPª–%ÇÇÇ|õø+‚»wîòàÁž=û†/¿ü¯Ÿ}þ§§§ôÆp½\Ñ´-ÿê/þ‚Ív‹³¡î YaÝþøã¹{÷ŒŸÿügá™L'ÔUÍÕÕÖZŽyòä MÓ`¬¡,Êìl`Œ‰ä!ج7XïÙl{ü¦ãêzÍóñÏžùÑŒÙ|‚s†7ç¯é{­'ƒ-­>g[¥¶56™( öwcëÖ"éÍukœ/•,½Bê“ 2ýœ1&@Ûí!UUççZkô1&Í1&Uï+ ë{:¬“î—/_rþæMPÄ¡Ktt¬ØbM&œœœdÛ¥@ö ƒŸqÍVU§§§h­iš†¢Ð;{cQ;$ÀñÞœ-D¸6]›fq¼àîÝ»œ…çDëP3w+ÎÏßpyqŽsczʲ@똕3r£x6¼?Þï?îc¨²…”€ *J{”òE(<ÚÆâl`òV•¢,4Ûµa½*8=¡5Tå†RËkÎ*¼Ó˜Þ㣿F¶+Âïæ ìàž›N¥¿áå½e¹\âõ¤¤ŠˆŠÇBÌ‹ä_ …Ö#~7Ì0Ën½È!fcïm}vÇÌAF~À»2á4ôߨŒ EÞèôžÕÆPDJ©HjŒ cî0&„ ºhɘ>þlû‘%’dÅCä …jxÍñ• ³» ‘¿·5§ûÍ×XÝý1ö+þÿ)Lëp³#hÓßï¨rö@ %w†¾Ã Ãä&-ùǧ°íùƒIUU….tV“Ü4MÃv»åh^¢”̽‚6¸éÿVÉüø”»|ÌüÞ)×Í–í‹oÐE‰ë<ÖõXkè»gz„”,æG¼~ ³ûwïóñÇqÿÞGG<þ‚¯Ÿ>åê:0ù·mK׉°°Ý ‹rWVkž=Á¯ýk>øàƒÜxŸ0?:‹éƒdþœsv÷½T ÿö޴ײì<{Ö´‡3Ü[ukêê¤(’%ZqK9V>ËAø‹ ègþI~Ed Aþ€>K@`ˉ'†’¢E¹eÙb5ßé {X“?¼ïZ{ísÏ­ªî&€©4º«ëçìaíw=£F–ŒDþÁxòVŸ[ˆÛEqd&G„³¨ÃøæicèWfcgi^j{¸ÁO€„aå]Ýöúafúýi^&vDxˆc°š7èŠI}ê0Róu-v‰×7Âlíëû>Ǥf»ßcFV@K.Äù  Žf+?K*ë>ì¶H¹ÍÞ{œžœàþ½{’ˆ+o¼µH9ÍIî=‰D–šÊd‚"ÍOžç˜”1çÍ@sDpÁ;Äà!5‘mŽI¶TœÊK;R´w,”¤`ŽABœ¯yÝžûÆÜµQÿ@ðÜ1e-ÆaÄn»bD]Uä,ÒÔã"•H{ç¨_"t LOäE9cÇcˆÔuΡëºüRdÚ1àõ¶õò§¡ü?ký}ž±“`CkHžu“»¡taÝö3„ÐJA 9s1þ¬_·õ?ÌæÜcÏ¢˜Öˆ©—Eˆ×'Iv‚ûÃ\!³÷>ÀŽ=b°c‡£dÑw xÇ`‰\†a {J18ÄèQMàRÄ$“8î >ö¬ ¯Ù;ܾ&ñ÷„€È]ZòBIÜr¬q´£æ¶~¹ò9Å[å×;Åü¹b„uƒ¢Àªi!µ¸×( …ç¯.ðé§Ÿ`?ô­¡6à|€‚÷i:¿‡”æîÔ8œrÜmœ¢?gاg»RD(D(!Ñh£Åì(%8@J(ÃÝi‘¢~„Te *Ã%ôµ1h… ¡ P¬órú²ì>Gôý¾C. "¬³Ø^o`¹Æ+¬™v¸ˆg ‰qšž3ñˆk‘¢ÊŽHîn’";`ÒsS)9sý'B}ŒÖÁ˜=êºÆr¹$Á£ÑŒ' îRF`Ñ´ä@±£µ°Î‘†Éï ·¸ººBßõy:Í[Œ%^)œœ¬qv÷nŽJLkV*ODÃûï€÷Þ{ŒÅbq´xöì¤G"¿‹ú¾Ï‰éÙa´FðAmàÅ„ŸP„a‹ÓÓS,–+¬×'ã§±ÙlpþêU~OêàyT®ïȆw¯w¯w¯Ÿ_žALxÌQ<ÓßkHiQ…¶VØí,®®îžÕX­ – ):\_vxùBâÞý3Xß“âtg¡‚‚µ#ú¡@À³sµ=sÓ¾7ÀÅ×|†·ß!V‡•¹µn´°‘2¤ÇDA6lÒáz"¸‹ÁyGàøñ_UdÕí²*¡üûËRŒ’8È]<¦€ÊùÚ³a}ÚØ¦¢h²@û¹ÒAR¨Id ý™wÉå0½yC3Áèt )8Çq¬OÜØ´–DÒÙ•†Ow°™XøY[º~çÇær°‘I›U9Ë)žìì)‹< ùšÉ@x@.Û7éïIÅB ®•©¡•A@€T‚3œ©%ÆÁ"rÿ…ÑDtÕë3Üyô|kPß¹‡íóçÐRÀH=œW¢‡Ñ[xt; Òlž?{ŠÝn‹ë«Çxôè¾öõ¯ãÞýûxu~Ž§Ïžáâò ]×aûBõÂ$W:Æ’Þçh-º¾G»hð£?ù!šE‹ÏŸ>ÉÓjµÆû߇5×WWp–£wNî`Ñ,Ðï:tÝÛýÞxC 'mLþÝI…IÇ[eU§µÞSY5ŽîQU4ÐV¦æÁžJÜ!4Àý/¢¸nÊØ#!4B”¨êHYa·½Bßo£ç2d%kŠôæÒäj 5ª*Ê¡“ðȼÁ›‘¶m±ïz*‚æA;½'‡”T“8Å|M½|"-t&SH mj(£Ùµ£ù¦uO@k•c¤R…2yƒc„4´ARªÆúô>啎+è¦ÂÐmÑíw¸v.÷,”€ö•R¨* #%ŒŒ¨À†|ŠŠZ*4U £L^—ܸÇ`FÑù€«¾ƒ•AID¥ ë5šÕ´ë5Úuƒ¸‚ÔTf=b°0ëú½Â–ÕNÊ(M–më` 1Ç‹9¢ñFàú@ñE§¯RÊzìúzÓ׊¼‰T³Ü~)NN×øðÃp÷Î,ÛÝ»lÃÏ1X1B"¾÷]q°øüéüÙŸý~á~!»º®¡–Îyl.7û¯Îqr窦…©«™»1†”µËƯR„ð%€6"‰ˆ<ÀNžªªòÀyc4¬¥Ø.ÍB" 33òZGGZ¤9pËØ7(É_•GWϼΦkè°ß­(Ã=F~¼é=Oçÿ8ÙgûÎ8ë’pÞÃBbÛu°QâzŒp6@ ËWç€÷X,V°!À*Š4œžÖ0¥%‚Ÿ\Q™|™uéMûS"œÄLÀ¦”€ >:›c„s€ÔÃÑ´ ˆŠËQ Uerl“ÖBIÈJCTšD!¢Y,pñü9‰Ôb Õ PReW°€ÈÏûé´&â_æ÷=r¤ãÈ%ÃZk\^^âþèP×5b øæ7¿‰““l6[,K¬×k|üñÇøþ÷¿ÚE¯}ýCÔM…~èñôÙS|ôчhšcß¡©Zh1Œ#´&€Ý‡¢ßBêìBuŽºH>üð£,\KñNåó’œ=ƱÃüÁÌûE•¶""ÂrçãôŒÑJb€Èn†;)‘£³2Á])®V Y8Ä|Æ1Ç i­QÍô¾”y¼A,×u ÇN')¶Û‰^ÚKF¨ŠÜ…Fr\°¨ÉyŠw®*ƒ¦irºA×uÙ GŒ8˜w„œžœ`µZa¿ß£©kr©ðãÈ„ƒÀ»gxÿñ‡8=½ï^¾| ï,‘L³\iƒJŒbdÌÑzZÒšæùÿuÖòZJ}˜«Õ÷îÝ#Ñ%ÿ?ë<ž>}Ž®ëÑ÷V«„TPÚP\YˆR¢·ëwdû׻׻×ÿ/H‡bp+» ´L(` Ð4›ÍˆýF Û¬WmSa½ªðùU‡gO,§g+|þÙÎ_ ¸‘Šs•Žð~€V&„¼™HdGÚ‹âÜØÖDQ€â¸u!©Ufù„å0s^­žÕ8.;B¤L\q¢  ÛOE°Ás>0Ûùùû³±ˆhHñ+2SV+Ç…IQ?9*«•ËÍF*bŽkJŠÂô÷égLCpœ69÷s*`.ö @Dˆƒ¢òåg D(µyAñô3I¥N„@@K% óavŽ/‘@ÞÃÞŠÃ"èt!’&!L¥ŒiƒšTû“vŒÔ eìDRÄå }LÀ}Š¥ª+7îàœC Å q­9£Ö;¸àIM‚”c.5¬èz‹ ,4;c´’в†C>FváºJWˆØ=ŽÍõ®®®ððáC|ðÁøî¯|ßùå_ÂçŸ?ÁøC À®ëòç>$r²ªEôû=†nŸo½¤€¶=öWÛ\ÖuSÓ.ùÚQàó“ÔrÔÀI×ÿ¥4—< ’‹,éú Uš‡÷ú6W¯P7-ªº…©(e …R”Ôp!°\βeʬŽ2GQY;Âû0¼QS(Îï<º(ç'³&² H B H™s>ˬíyOHê)1¨*Úœ×u•yÏDf]ר*ÑgLd2é€"&€® çŒ!RA*MЕTHRjÎ×M½)k˜6 Öº¬Ö)ÁRbѬLn-îžžðíˆ~¿E·»Àþú>DìƒÇÅÐÞÞC!@Ë­ÌS‚6R2 ¨®Cp!°yDØàá!á ´´†ÐU]C £@VØwœ M‹ŽUXGDñZ#‚ëamÅùªšþPÔ\ƒSÁ÷Û‘i#¾dGƒ| 1ð6tÉüv±u³÷-é³k­3 h}BDÛÔX-@ …¢0´ÙM1JÉÚhm°\´@ 8?…aè±ÛmY «Ñ.°Ž:T6W*ÉÝïH.@É_DA¼Ã@ 1s6|Ñóq`ܱ|þ¥'÷Û8 âüë¾T&ù€r¦R<ò&RùoÚ௖KܽsJår‚¶ Œ9ú˜ #Å9ç°ÝnsÑÝ»gtMH…Ín‡Ív‰ªª9® #…ÓœYÊÍôo¥œ%_"¬îÞ¹ƒ“““ÜYÅO ;­ óžç,ƒ?q,¥ÌÑOÞ9&Óu䃇w–œž²ÐÁ1Gyî AH­f×è¼KJ”£æl>M×qq–Ÿ¤ûÀ‡ë(šjèûÜGÐÔ E™HIî5vÒŽ#^Æàù&ŪT’¢þ"u¥kYJšG´ÖÂh o†ÀD!gê‹Ùš'ðæ@ü·'ÅP=ßü~ó \þ9ºEWr"MËro܃S’”cN¾x$Jíp­e’|i‘×ë×ýCõqZoçß“ª2h^ž:_'¦{@ioG(i°Z`±XAI! $“þé8Ce¨RÃÐÃ9‹««kt]%êú>ZJbè;ìv[Î<¸™fùQDÉÅiSoÒý¡Ê lŽŸ óµ<â¹ €Aû‚¤å>G|kW0:§vË(¼Xœ©$vKï?Âc„¡ÇfßÃçIÀRiƒÅ¢Åè„ÒäåØKïF€Ýöim Qܸ^ŽíóSŒ˜Ô•R’s‘gJ!TŒÐR¢ÒuMk ͨ.˜ª‚6†¢ê"u)¡´¡Ù3F(m!pqy•]ÜiŸV!åýR]÷!™†iîÎ÷¯“]ߣçH›ÿç_ÿkŽÕ‘hÚÿë?ý=œžž`³¹†”ßúö·ð­o ÖqûçþcüÍ¿ù·Ð6 ¼ ð~"¥58&"Ûñ¬³pÎçˆ_"¹§ˆÄ““Sìv»Ü=à8Q`½^⻿òËøì³OñìÙ3 ã€Íf ]©œ&°Z.887@°;­ëö¬ž,,ñšX^q…-RÈäv³HæYœX.ù9v(Bæ?’ïkudß<‘àä¬Ó9þ,E I1I.xDŒý€ª! DsO^Ž1”’c°jç±ÙnYÄ ÑÃÌ…y8禤)MÂ39Ê q,.]­ÖpÎãóÏž ïI'eD¥Mþ~%%m‹ýn7=“kÇÂT®h»X,°X.ж-o%á†ûý»ÝŽöÂE‡Ðt T5EM¾#Þ½Þ½Þ½~®_˜6|~ÂïÓz¨x_¼X ¬O<ž>ÙâüÙ€_øèD¿EÓÔXŸì >ïpynñ—¾C½ ¸¼XâÕ3‡»wÔ„…R€þÉbRÚ,Á4Äyl¹³)‹«“?)¶g@Ř;% ¿wúÌÓÆ-æ¡›h¬H±D’‡‹ä,H„Br&«|È–G¥)< ³YÅ(%+ÜçDˆq¥5+øÊØ€š‡€ô=I}?1Š7¹"Çd…èóµà»#÷dHiò12U…åj‹«+tÝmÛb¹Z¢œëÑhI.ƒÑQ?’pq„‚#pÚz³¢R®Ýf)Ii3ÆSU°ÖâÉçŸãòüW——øÎw ¿üÝïâñãÇX.øñŒÏ>û Î9*ÉÍ$¿T ë’8 šÉÁÂ9ÒC7ÀöSñ—WWWäGÀ(ŠìŠbR’M€©I¡ç©óÃûçú<< A÷—`°Jr^¶wúàaÇžHSÑBš Z*v:$[¹Ì¶fº%‚±X¶NñüÙX;àÎÉB¨¢<|Z{æ¶úÀN†8•P’~§Hî†ân¡"`G*T4Zñ1ñù~¬+ £åè€lsf jÞÒ"<„"P‰b’<¤Pp¢…”¾¡B¥¥Iá[lñJ…ž˜‚ò¥yøàX“kPÕ§0÷–Tç=šàƒCˆ!8h\_¼‚ÑÀòô‘ïÑ«íZËÅZ)¬šUUBb³ß£ë@Ixìw{(ÙCD -5†MÀb¹‚—ÃØSvpU“òȽsôŽ£GS5¨›&—ÆYï¹ )gÄRü‚ ïáúû¦¢ûH’µÙz(:ží-0©ÝÞän8¶I-)B%x D`Ǻ5¹l´¹h7‘•䞣À÷éjµD]WpÎfN.¯‡´ž¹Õmw臃³X,—h–-•ñ Íëy¹¹ yC: WœYëq4âåXvõ±?§ úìdË”°ÏÞ IDAT\¹È‘¤0.qäÛŽyRg—àå±ŽŽø@vþì‘7"ÝÿžÈ^ [ü ­Vë%oö“…$æÂÖ˜ ì3ø†LÊ[ë0rƒÖDWuC ®7\^^ "ǯ0ÀE圲nAÜp–]j7WÅÄzÉ™ kúz†«%EjÊ|?WˆÃ¨*ñÖDïL é®„„ó~º–’ëœÿìÃüž0š*ÆK+Ñ¡¢ùJ*É© ÞÒ¼B”˜•ÿPºØ³Ný ± U2ÁD¤µK RnK¥(Þ2’›+†È{bºŸV« €&29ܪ á$‹ÅLMñK¯ÎÏ"à9ÎÔûÀûõ p…DVè§™šˆ½0#Ö²Hƒ¯ï,|HÂAÞïé:â¯þê?æýBˆŸ|ò þï?þ—ˆ¨«¯.ÎñèÑ#8KŸ[ñs€n´€€ëF&Q¤Š¨gÅ@û³²C`zú¾à¨/ˆJÑàÇ7¾þ øßùû8??ÇÅÅžÅy%BÆ#EËj©¸0ºF»X`±h‰´× !xl6W8õÃБÃ#uv"RÌ% 1­·ïȆw¯w¯w¯Ÿó—À¬Ü8«Åärh[àÎ «µGŒ×xñâ3\]ÞÅ{ ñáG§xñÌ㓟\c»i¤‡w@+(eдuã¡´…Ò>GVÄT®%Ê¡BdåÆ[%''{üSXVÑs´F(e8ߘž&1ˆY AHjæ/2Ï@*† ©Ãaj;呚AÎTôWZÁƒW,ÝY@›=¥4ÏN/ÙÆ§’®¤PO ¯rH.û”KŸ¬š%‰ƒ£ƒÿM²¡ü³³º6YQ"´©2!ÂãöÌaAï“`¥4 ”4<;—7–‰Ä‰1dDsd…eYÇ¿'E=8çf%c ãNx縉ä`˜¡‰ÛÀÞ¿ÊZïìwW€ˆy !àáÃûxøð!>ùì LUãkßüEèJãùË x!¨WÁ{DŠóM.™PÀJ×@0JɈQFì½G×õ¨”âÌfà'?ù Foñøý÷ño|¿õ[ßúÖ/â?øöû=ž?{cÈ’¼ßwè‡1zv !ÇÑ®Éç V §/…˜Ü<Ô@Á¹ã"mF;^DÊÔÓî=¹¤T Pñu†JRéúñ!BÁKïGŒJAK )5VëÓÜï‘™BÇ+%”ªP ‰=ÎîÝÇæêý0b±hÉœ]>)†aùƒ÷ˆH “â t™ ¼Ì?t5”@¡µ–”3LNÞY*^¬ ”™PKù©éø¥Íü¤4%…¦µJµúpp9*kŠH£tR‚Ož²rͽ1Dˆ R¡vàÍ Å£*]ä«"…Œ@ô…Ö²^`:"É„€Y,ñàÎ)?|„÷Þ{Œ{ggX-–€gÏ_àòê W›kì{ºF­õˆ^ÀÖŽc/Fxýe¥ B$Ñ=©•b€T”7,¤äh(yÒø²qF_$b¤TÞ¦~ŸÛHŠÛ@ªTæ'¿DÉuZƒƒ–¹$¹âRbâ=r{å¤LÌD.+àR”‰óuUåû6ƈª®!Ù}ã%gön®É)³l93˜ï¹Ptqü›Ží›JQ¾8Ï>á šz¾¡-â0né4˜â8fu,†&“õÏq˜?{_RÜxO‡Ž†²‡ÃÚÞÙ¼±bQ  0ÅÎd¢¦ÈjO±)¥›!ÕjIN?ŽÃèûÖ:\^]ãz³ƒ® (ªet–Ÿï2Æ \§8Ÿt-Ç©—žï « ÷îžaµZfRV€îëÀïÍ´-SU܉E³›˜eU“H ï‡ ¸Æ¼k)x‡à9N ?ÅsŒ„w–Àòú™p ðŽÇ ·³Ø¥ó׿/cÇDîó°Dîì÷{„ѶT­ÑS¬£wŽ:#†vÈqëÓ³Øe7šÖ$è°Îg÷D&Öùnšã0`è;¾w›¼^Ü(^þ)D*+SÏçìÆsˆAø1Ž6¦bç“d’nŠåԭþïy®'ŠXI.ó«xdœ?ûdÞ‹§ïI.¯ÄL ¦¿SJæ}®ü1þÉÿøOàÇ}à÷~ïŸâþÿ<qÿÁ=ø‘öŒÃ8‘¢5‚µ¹¯‘”û2ŸÛäÔFŒ<3Þ¯Ò¦G*‰Õr‰oûÛ4ûŒ#¶›kHŠ£âÅïÿÉð§?øS\^œ£ëzhX¦'ÒZLî2- 4D䮂ˆä{ uø”qÀ!cO³ã1Æç‘¹|ùHt2þäf‘c€Y°’ÔûJIHDŒc̳F䵓b—I¨0ÅÅÖUUø“ ’Üá–u®ªˆ(ðŽº Çq„.ø‘öÑÖ:l·;ïQ¶©ÉÅ!(^09 cLp{`2W‘HØàìî]BÔ†üÏËW/±Ý^czHv PŸV(”E¹éùîõîõîõsK4”b‘B¨•JS”"ÐÔ«¥Åé`¶Pí%´qˆè±hv1ÂTT.ë½Aˆ¦vX¬îžµXŸ T­…ª #rŒ~ŽéÀ,ÿÙ'Þ¼Qy›Á>eá&À!=x'À3µ m EŽʤL²ºe~S÷‚È¥ÃRizûR͆a%ùAŒPl–æYšŸ¤¡•FÅål(•@RœD.d+³åKÁ9_¨×/…CÕ(Ž*}’í¦M’ýyØ™»¡â°›ênRËÀLj2:/RAjÛÃÍ@R¬xïf¿?O]!°bu Á–@O:~‰ IPy‹…þF5½ÂLíAÇÛy!<|£EÛ!œžÞÁh-vû?ú&¾ó«VíÃkì:'¶û½© ¼ Ò¸@¤“ «q¦5ömƒçÞâ:FXìG‹¨4ëbD»Xàòò ›ëkl7ÄÐÔþëßü ()ñÉO>A?t¸ººÂ³§Ïñäé ㈾ïs¼Î8RgÅö` 9Î:D)¸`NåØ1UtL.ètÎ}Æ)D.!B©ïÁU&òBP¹L ÂCi{xKßB„µ[˜z‰¦9EÝ,©Ì[ÕBHÃJ3A9¢UƒûÝîÛí–”:U…"èÅ8L"pT.®¹@4}G€Šc$€¬ ËeÐ"rd àÓ=SD!si­‰t\­ðX. /Y‰‰”£ƒ98‹LxÜ|8Ì7Ò”‘J1;š-æÞ{&E" B¤¨0ï¯ ÕknÜ#À ëaG é_úÅoâ×í×ðÝï|''§¸{÷ÀJ#…}×aìö{ì»=6›-v»ýÐc»ÛársëÝÛýççØîöC@·ÙÎ!Z›c˜”6D0 1ç¬DnܦÚ}[ðèu 3Þô8åëà+€}ÉÌ–œ´é¹#DHAÄ’N$ªÌ¤½ýiSV7TÜ P.EZ¤MœàbÉv¹€÷»Ý}ßc·ÝRïj…¨5¤ôùÚžE!~’ì7ž“øv?c_2‹7¯?·¸=—=Eß” Ë—~•ŽŒñ( °å@êG‘U¥ÖZD2QšÁHb“2`3Ž#.//cÄr¹DÓ¬`Œ&’+¹ •Æ~‰~°ˆBÁGzfI¥QKu}~S­*ʾK‡=wJi©pïÞ=ÔU5s(ú¢O Å7$'€g°¹ŒMÐUÊ‚NŽÏDô–$0©ùýET$ÍÁÙÙ=xhò‘KnœKn™×{ °«©¢n¸¡'Wœ Rnr/§H¼À'ÈûÉâ†ÌÌû²¹å-k‘È'Ÿç®c„,c¦JA×±5þmžÛ3ÍYdå<ÍÄi} 1-á‰Ü“"¼”ÑQ›Aà}&ç ŽGò°<´Ñ™ 1Za´‚9’{&qÎÁz(‰e»„QÆP\±® ªªžb§ŠÒ÷$Z0ªFSÕÐRat=¼óL…)Ž‹>ÝžÎß-šªÎ] ‰|£è+î┇$”"²! x&þ\°ÎÁG i[Ü»ËÕ¦2—<6» 6»k(M‚ºDޥΡÈÎwdû׻׻×Ïý+"¥ôWŠ8c€;w$ú½Åýû ¾óK\XãìÁ©vhÍ¥+|ø5Á<{~Ž¡7RâÁ½ }½Æby ­¯Ñ.,¤ì!„Ë¿Oª)ÇŸ¬fâ8)òÕ¦ù›ÊÅ8[žb…ŠX‚Ô{PØm§MI,€Å©È*=Œ•"‹~Œ€ä(4MƒPÊR²¦ît<|€w#FXô¢ÏÊÑô÷ég]A)Z’Åј uM`@×ï)fæ(ø™Š»¾8`6 UåÆ0Öp†äýTE„÷–/:Çç&pԂż:eú»ü{Keа¢1@±J7÷X{Óž.çÅ×Émr¬zÞÑ0]ˆã8Ry¯,à ±J9¤LtçF(éQWüä'ŸâÑãðkýo`uç>FèåöI]^žCIÀ .÷e ND V÷ŒÆ‡2bë Î7¤6ÐZB±šÔ{ëeŽýøÑ~„ËË \\\ iü·¿ýÛ¸vÝn‡®ÛãÎzÞÿŸ|rW×Wp|̃èº>Ûgc$%«÷£÷pÜM’6XѧáUäSrIÌÊzÏà5D²è1Q餆#"OB„RdYŠ‹9ކ¢5"vÛK¨aÀ0:˜~‡¦iд+¬+˜zèw(Ñ»ÎöX­O±Û^ ë:4MƒTž)„.®éZHט.2MSn¹¦ÌsÄç÷Pº–i͘òº•REŒW¼q]¦9Är³9{W@ëjê”Y>岆\~. ou1»ß'§0„‚¸Ma^Cƒg€8‰@òÐÊàäd…º’låÞïkøí¿û÷ð_üê¯âÑýû0Æp.®ŸÅÍH)Ð÷=©ª„@?ŒèÇ£wÆ›=ƒ×»^¼z…WW×xþü>û«Oðêâ[KŠ4ͤYˆ\Z+ðVÇá4¼¡òýÒ ?oöR±æ[¨dÅÁ¿-Ðyøòûçs˜"án¬—7Hû˜U—%‰<: g»ƒÄ¤råß#•BUK´«@Ñ …¡ïàF‹¡ëQUte¨SDªI})âêí…“:n¦–ŽñµcÅ1²áfüÕœyŽ_¡$ö‹\'·`é}¦sHi©µÎjÅD†¦gñ`‡)‚¢˜ÏõjµâÜãGÒ³ÁyRíu}Ë«k@R÷Pµ=g\'aGº–BQ Š K©¹ªª) ™Á“DЖkqrvZç ÇŽ6¹Ùñt G;bä"Ðt\|ÒT•á>'R† )!Õ$B)˜C8ôX¤Y¹f(0Ê’ZÁ×Sz.¤~ ЬÐ4 ßT¼)¤ÊÎk-¼uÖAA ®j4uEîBÏ®þyJkÔ‹YÍŽ?ˆé^©ê vኮŽLˆ‰kó‹ÞÇ‹œå `, ‡ñaž‰ückó¡#C”³à\cP@ã_Tô4{Ž Þ˜;=>Ÿ£˜bA.¾¦ïâöãË‘$ÞÓy'@/ä}ÿÖ9“>9Òž'ý9ÍÞYŒã€¾ïƒG×íQU¤z^´ œ"…&€ö†œŒ#¬nœ/¯ÉSÌìœåµâͼr| æù-Deyœëß|¥~BÁëŸâ¹AÁ»0WSr|ˆpžæ§é™Ä\„wX€ý6÷YÊ»W!À’Àæ¡!íÀ†Ê 4Æ ]¬¨Ø7½ÉmÀý`‚coÛÅM»à(]k=E)R¹î1›Áßï±õô°O0¦œÑ:áb&óujS#"¢m–†RI £EŒ#\ðøßþ÷ÿÞ;´m‹ÿò×uSÃZ‹¿ÿ;ÿ¾÷½ïa`÷s]Õ0Zs¼nÈ.϶mhMG4Mý t/¥.€:ªh- ˆ‘ö½<ÀßúÛ‹å ü1þò/þ=®¯¯ÑpJ@䮿ŠL\.¥Ê„“âç¢1&?+‡±Ï÷lr Bù£xO8ÎSáñ)þ[)]™é=u·Q”uBiE¢­ÞÛü,Ï*îL+ ªgÑX" 7ÃLœ£¤"W¦ü}Ô+²ßSSžMùzðÞCi•û)¥T0FM‰Öa·ÛQçÌГ ¤èÉ4JCð|$0á.Ö: ,WK,— ÔUE. ­Ð÷=ž?†««KŒã¡ ‰=RqÁN½s6¼{½{½{ýÜ¿D™^$&µFÆâ1ÊMK} }?à¦Fˆ«õËÓÆxl¯.ñþQ¨º‡sK4u‹‡Z<~oÀr½ÃÝ3@ëkHá!àòï”EéΗ,,—É%àÃA†r<4wŠ9À'b`Š+š6ETœÈSLy†±°c@¢REVr,6S2[ç€É¤Ò›Ô@Ó4yÃZÚ¦»ÎΆ·™B'’.‚Ë=M¶]†0,e9 9© &å ÅQ%•`Ì1JsbG°ò:Y®Ë‡oAˆ~wrgxVRU¬¤P<ì•_W¾ÒŸ•]§ÿï µä1—C™¹MÇ£ÈÅú:ÎÎΠ”}LªcÝ Ð4 »Nš†A3.£³Þå Õ«ó \\oðìù üpùCü¿ÿæß`À#¦Í¹ÈN›·Á‹ËÛ5·k  qÑ7/º õ¼¤h"‘÷†‡H™ô‰d¥fL­ëÀ9ÇŽÙ±gè¬û0Rùó1²!¯Ùó¡ (-'•¾ÌŽ_Á‘aÞ{vM8!£ÌýôAo/Ò=Fâh¥°^­0ì÷¹/r\R%'P¹YÐúC2…0©#E8@FÚƒUU…EÛÒZkéçYkáN™DHI›ÇX´CO¥Í(6ö–òv¥œE¼Ôu=ÏÔ5†ÁúÀ¥».G²Ð¿eŽMñT>)B!91nß1Åó¨ `*{&LÏç¼ý©ÔzÞ¯! P »YdH*¹Ê*kÅd /€†YVC[kIñçýìû#Êâ¸7ŧ”`OéâHÛ Rž6c’•n¡•Æv³GÛ,qïþCDUÁ:Ú¾|õ«u‹å¢ÅÙÝ»ðn„® .^¾Àå‹gbéLpXU ­¨„$²Nx …†©’#$*Ô}òä)åb*…õz““t]‡®ë âœjgGì6×0ZÑÆ’ÕŸZJhCýÞ+œ¬š•áY墀³Th9“GH%0Ž#vÛ-†a@ˆ»ý×›=¨“˜‡óžÊG½çŒK xhÞ'N,Ã4ÈruRï.bp6ׯ uƒûjP‰[D¥éç9g9‚ ¹¢ë{ôE 4MƒFj*ÐãÝ™Jè`Hàë"”bŒè»MÛÜØL%SôáF1ç4¨rŒ çëÇs(;i"D<ÈS¿ÈÙP’{‡¤4XA•6 ‡äP$Ý9rN!•6²ÑSºs#¿wºŠxõò®®¯Ðõ=Å¿J«¬"“ˆ†y’â38; ‰ºª`‚žÖ÷{ ÷î=Àj¹ÆÅÅþâ?ütáu]™´oã x›çèìj8 c~:Òoþ7¯ÊŠN€IÚ̹0­™AÄ\”\FÓŽodV–¦ç‘už× Ÿc”õª IDATRÌ\ЍëšÎ1Gsuû=ö»}V%¯×k*¼w>¿_Qfî”YÏG€·òóIaúF–æ€4ø²×ĬhñÔ ì\û¢çñØœsøõésÇs¿L”M•û`’B 9‹¯àø®üO˜Lû\QQ™€}©*=v÷}¥4¬'{ŽÖ&‹)•V¼_¡˜$œ~ˆžÈö$t¡$"ö©¡m¬–ËÉ™™pvÄ$ŠŠs<'QSÞYþs@ T^™jÚg`ªu!`-öñØ4 NÖk"=Ú6;j6› ^¼xëëM&U’{2=‡æýDïȆw¯w¯w¯ŸS¦‡¶Bh >Ë/@‚#Ö§@ÝÎ-ÒÃOñ=Ú ª€‚e§‚êé»e8¤r\K„ÓðìøïE.tJî³’:ÊM]:O±°Ù–Ãê1WÃ!ð’ÀŒéÿ%€{²žÇàÜ€õ²&@.(]a´բƋg/pöx ¡º~©jÒÀyȪÖ8{o‰¶9ÁöÕs ßCm. £E€À¨46¼€Pš:B’ “Á%;Z*Š=-îܹƒ¦iqyy…|î(ˆ©P-˜Ê@©Tú‡Ü•á,©Ô¹¨™I%*©5RCKij£¡¤¢¬RÈåþd]œ?Ñ;XÐõ#ú~ Îyîˆ;pÁ–B?tFKÝ#>åsTB¤Øè©·C)rKxïÑh`´;Ha dÀ½³S8gàl„·=Gs¸TÄ,ÒÆ„@û®!„†ÖUF€1ïÊhTLžãÔ€‹ZJg©Ý‡‰šdõR=…€s‚Ä:ŠðJg‡ŒçïIòŸˆÿÓø“2ë§ÿ»^–¤W:N¡ ¯}œ6^y¥ŽSõeZËK`çêêŠ7œªP¥Ñ½?ØmÛbGVkK,°ÊÙó}×ÓFÝ“{E˜ŠÔ¯R‡ÕÅÿÇF«ãÅH7Ôã%°.¾qõÚY瀬E<[¹n¥·œÏ Bz‰`šÀ<_8éyºÙnñêüœ 5 2£3Ù0;$e)uÈ AzFWE+üÅÇc©°8)E(srr‚¶mé÷2‘6÷"Î3¿€±ßïóuYUföYK [ À d”ÅùRoÉÅm×H*6ô»û¾‡ãBm­+,–\ÄÍ"”©8ì:ôv„³Ü0`QUX…ÖhD4JAH (‰XF»¾Ãfo½…žÊ*½‡ªIÅÉÙ-RT†æˆ\²ÊÉÍìú¢DÃùžY™›ˆüt½–"™4Ãúro‰–š¾öÈšQ`Y©ý–Ž‹Ÿé^¥ø|_¥#èu_srr‚»wϰ\¬HXà<Ý]·GÙ›c™šf¬óØî.²0M Å„ƒE¬ ÆaȽRJ™\KqÖ—ôæ…}NBP'äDÕ‰¸ 1L.2yÓy4'1ÄÍH§Ôp^ÖÓ³1Ä 8Ÿþû6¢(Äb&TÊûÐH?DZ`-²èmºyÿ0+öÍŽ®xó}WUà®7[TÆ`µXÀÆÁïQI;˺Òp! N=1Í“³?r¯ÅÌi>I…óó ìöõA„@kÖ­×*Ũ¦ýßëže³Å6Šƒã6³“L÷P¼IJI‘b©Ã(Öž¿6¹§*xGû ­i?ܶ ´íÞüøÇÿ«ÕÖ9üŸÿìŸáÃ>ÄÉjÓ“4í‚:4‹’Â@1eÉAÄÅÐ1GKÅ™³ìôô!rk9wS°$÷ã€@¥%´b@_*ÔÆÐÚÇ`»*:!Q8ý¦0eÉ@É;vÉÝ“€`¬(ÚøØá  u À8 ÜA'0 ”Ô?È]Ý0 I&µ†–E)CßÓ³Íû<3$—†N.òTJ£)"ß’ø«m[ Îf‚ÀImH1MÎS—ý·Cô>ÿŽò:ŠtÁ`ðuèF‹~°8=«°Z,qº>Éx‰µç¯^áâüÁ{S±PTÌúbâA?É;²áÝëÝëÝëç›p(Ñ>£|¨ „V€VREH •€³48Ôu…àzø.–PJ ªF8'áƒâ22`uR¡n<•¹J À3h…Y¼ÂÏ–`˜Ç! À >NÞŠ(0S—¤²ç  žnÚ„S¹eS"oRË‚gË!ʈ¥yä„@¤ìûx€›T€6xXÐÅI_UÆÑæBê)›’¢´Ö[¼ÎNF sÛoÑDŸCñ‚³]'H•ÈC[(ú <”2hÛÞGìv;v,Äœw8+ÃK`}9J¦7#$| y<²zÜLjn¹°÷æÆ÷XœÍLiqÄ2?—‡Å±i;©%¦ò#ÖÁÁ˜6Ÿ¥$Âà±Ûnðÿ;üòâ.VwΠB£týˆŸ|ö9¶ûBIœœÜEeœžÜEõ ןØq­ªTÄ“a„UB׊cVjGÑb±€” ?úÑ¿Å'Ÿ|‚¦©±Z­°Z.)o´©àc@U×D4Æ€(ïZDÁç#×´ÁK½Ie£•æã@Žoc4ºq€NJg©ü@ÓÖ¸³^Iqc¶ç†à1:‹ª¢h(k-†Ñ¢ëfì€6×[xçó5¨”Ä0Øìzìû1 X0=ö»-F«áåžV•æ’õPœc‰¶má°ÛíÑõRÐÆððÉjMÎ$ÁäSÜŸ?N1Å+ £Æ˜™e¸Œ^KzÊ(OŽ¡ã`Џ‘Á ²4Ç\þ—ɪ¿å4ü2¡qØ‘0ÝC˜6h±(Vs¢6 ¦ªaG¤¢NšD¸¤{æá£GøÆ×?@×ïqþòÎÏ_áOÿíðÞ£G8;;C-wCD„è¡´„·ž‰N›IÝ‚ IÅá4ØswÍ~¡º®Ã“'Oðêü"ıÌè¯ ý”¾ÿ¶ø¶Ûʆ¿>‹B—Gq]s‘¨Tšc)"Qè#óZ Å8œOŸ>ÅÓ§OoíÍÉq]|Ÿ›ªÆr t»=†¾‡u»ÝÖz,Ökr²@æ ïq·Ž¸õ³8oʉÿYŒ‡¹ê¾Þ ²¼•~äFWLʱO÷FšMnÄgaÊG?,ÌM*¼ôüJ@""DÇJ¤â[,€ítÅÌóðyI]GE©³µ”/%àØ¡Ø¶-Ö«%NOO±X,°^¯Ñ¶-꺦ò̃2ñ‚ç¯Ð:ÞÞ{*rô¦ihýcƒsÔ{ ÙG9’ëÀS´Ð1+Ri=S™0)áÉCZ˜G/V¦{ò’舑¢0iBNµ)Î, ž?¬…8k!bD¥$j£ÐT µQäŒÈ.¿Ê(ÑP”µØu‚ÑY‹:ªn ”É…œ‚¯í í0"zRí†TôÑ'oKнîžËDgAâ(¥ “š¶XW”Rp°Yø“•±åÏ,Ȇ79‹ŽeÇÏþî+ôµˆ æùì|ï‹arê9™)÷eI²Myö‡ÇxšW“¾ ÆHœœœàää„Ì4°£…wŽœÜÙ2rxU¡ôÄ™+*ð×i£ØÑÌ ¥P‚Ö)bŽY=N/ˆBЃ ëSäI‚H'§^¹ú´§‰7mJWŠ9ïø‚:]72“ƒsº@Î~oê£Hb0¤~Z-ùž$À6=EKmù6âÔÑÀ³wÌG¢éqï eÚm 9öHJŽÃås‚Ʋiðàá#*…V°#ú¾Ç~tðCu¶F]-a‡";P¸µÒ°@Ú(€ó‹ |öä)®7[8„ .92K^†IDÆð." ª¨t§ûJB‡g{n ªƒYKæ£DåýôŒ PZæÈ äàÌ{ËðòåKüÑ?ÿç0ư «A×Q'Ò{¢m[œ¬Oqvv÷îÝ£}×j‰õj…¦©Ø=4uãx‚=yò$‹çJg—Ê YêrT*_Ç÷BÈHQB>xDÈÜ#ðÄ<òÚB/¥ÊN¿ÜÅÇ<ĈÝ~‡ª®±^¯³ 'FêOB$[ •ÉŸÁŽíç=šªb§9$¬Éï\YID%Áy´U…¦®}€u#;¬*:íJd·B˜Å¹¢è–㈲ Ôg–¯—òN”QJXÆ®w{œÝŃû÷hoÏçmßuøüóϱÝnB„6äö¡kXN¤wˆ3É;²áÝëÝëÝëçúÅýOz`ßÙ0M#Ñ,%¤p6b´Bµ¸ÞÐ •†Fh„@üàÍ-ìv#¬êÚ@­#¤ ƒ¯êgϨc¢ÒSþ)=X…¹z-o#)¾£.säáAáOR‡*)èáiƒ«AnfùލT5=xÜJê R*¥0 ¤'( A’ý)wºt ”ª‘p—2Ź ŒfÀ‰7pU%3É@c]l h´–âžú¾£ ’â|òf¨Ø” vp„¾¦ç\=Rô 8EÞœ—qI±xX v°”3)3*7ȹ“Àp΂ RÞw켈ÔÓ-LµÀöùêŶ;GuÿQ×°Ð<ñm³€Qªê–H¥œ.O`ê%ÂåKŒ«×/?ÅS%0ª6 ¤Ð@ ?£4výÞ‹‹ =£ÒFÙTäÚÙl6€ÔS\æ79ò„#®¨^j Ã"Ü0JBM„6´9œ‘1·çmßavì9PÕ‡ký±ßv]þ·ˆ7EIšUâék¥8 p¾n ˆqRå×¥ŸŸâ—Ë%=ß•œ`³YDU™E/Ôœ†Å±)¥ ´ÄùÅ%>ýô3l7;V:»)Z.u€e'ç¼ä7­;RJ3•1Ç@ÑuÞÇûï?Æb±À½{gX-¨ë‹Å↘à?±÷¦KrWšèç[,™Y@€Ù¢ÔZfºgì¾ÿKÜ?síjnKÝÓ-qÃ^KnáëýqŽ{xdUA ¨¶£UšÁ@…ªÌˆp÷sη !Š2µ¼9ÒÆaŒÁd'¸²™YŒ²²?Œ`@K‚¸×’­ß´ÐIb© [j5R:¡¹BÈ<àÊ×$„ï|Qô¡Ð¶Mƒœs‰Î“ M’üÑ'g1î0Ö}‹¶QèZƒ¶!ïn°Ï6xè"`´‚’=¬ÖÐÚà0x0÷ÐH"ÚÈÂ@&?ÿãdù|F±Éiºv1äÿTÀóSÖKU†½9ÛÆÊ}ÑX(, rÓq`"p(²Þåɳú}Ú p:ôp&IaºWVnupýcû÷§4oéÄ®ØÌeÀAPNŽRª„Mϵ«( r¶Ì}?ÂÉh¬$JC*R¯:gYQÍû}ˆP]‹³ó3Ζó@Zf°V/gkÕÒ[TÄ*ʳªÎ©ÒÛD&>PL®”'”ëøÀÖª)¦Eøéõ›Ã¯+ÿÿr:Ʋ¦ ®ÅÊ2©üQ†“1±gœ­Ö2ùFðˆx¶}¡^9I²$ ‰ê²ÈÊzÑZ$Ùð Ÿó-À€e~f”`U1åÏÏϱZÑ^©µF ©€ Î[ÜÜÞ`'çñÍ7ßâ¾ú¿ÿýÁ~¿Ãíõ¡Ü„&Lã?Y¤Æ#FRgÕx’diÚmÈ–­k‰Üñú ®oî09‡€ÆHDHøªœó:?°  îí«õŒ€@þ5žÅ˜êZ=;œ¬Í:{°^¿JP¿Zˆn9_B*VÖËrVÎD3î{¤ÀööB \øÀä2ƒ^}÷¬p~>åøò˯pqqŽ/>ÃÕÕÖë5ÎÏÏéž!áǸ½½½WÏQvV*Ï@bà`~&BL°Þ)¡Ñi8è8A2¹ œ—•95î±CðÒ0RJ%æçÛ:‹$ï¿>D¬´„„ÓhYÉA×µmV ˆ¢F±\Ë6g=„ˆB!xGjv!Ë%Ý%ŒRšúÓFkÄà±ßïRÄz½Â™>ÃñxÄîx€uR$ëÖœá"Ã|Pœ™÷¥orJv°ÖA ?Œ#l8 ¼üü%..ÏÑ÷ÚÆ ä0tëpß@höì9„ Ê®ë!u%$¬·€ÐèÏ.i8Ÿ:!a›_}Ûû÷ïa¤ŸÇŒe%©ùSRÂhÛ>ÊIØÞÁÚ©XIM,yõÞÃhï£`4±õ»®CßvJC mZ¶z u»^õåù ÊÐÀ™‡ýfCLŽ8 ;ïÉ~%Q@¯Ì!•‰À‚q8@ ï#¤4T˜)ˆ€”“Ø(_“à>ù¿úÕ¯ðßÿÛ?#ƈÍf ÅöŒškϵÆ\ÏÄòl;K_Ï$Œ”noo±Ýn++0VdŸh®“Hˆk:-®™(ù]õ~,ð@ý!æ‚»džTžd/iî)QËç*;e*à…L J$lú­‘P2! ÑN‘[sŽ‘¬àU *{ZCÖüp°Ö"0ðYgi­¼‡›ììÕ­´1K[¬Ÿ z,³¦¶ðJlTj¿¬¬àë[”þµu[[3I­ÔZþØò©×àc_wj©r@¾°æz@ý16P™m^+ÕˆdŠmá\ÄÒ5M[@, ¡ë;&!Äpúž)–ì´(¿aµZ¡_õBNÏg&Vå÷‚§:ÉMtîg5sˆ oúl”c7îe4ð3-ª!w.Ò#„¢¹öç€ÙB*ãó†U1ƒ‰yå ªaEñŒGéQââÌFQ±‡ü+é¾–€m | á1%_Íäˆ ‚ó™@Ó´èû5Ö›3>)SpãT”MÓ’]³¸¹½Ã8MxñÙstM©(KÀ4-$ˆè|Àî°GLô3ŒRZcµÙ`}~ÕuFãõ›×øþ‡W†»Ã€ÉS.€ó9û£…ã=6¦Äƒnµpý|Öýo¶ͽkÞ;‹:¯ÌkêH­¢[îÉó³ŒLd âÐÅRå€`Y”Ÿù ÁŸ!nrT3¹'„Ï6­ùçßÜ\ãææ÷-þð‡?@)…ÕªÇ/ùK\\\àòò_üâ (­ñÿñØÞÝÍYù3':‡Eš ¨Dm—(ˆ8“;〠=:mfK§DÿF @+£$€àU郂w²(]Í%(mrI8;ñ½Ñ˜ 0ºNÖZˆDY¹ˆ"Á‡ˆ‰ûŸõª'—Œ¼Ãa·Cô´‡d (]¤j0JAK#bŽ8GÒÚP–Sc mØ~e’ iš×!:€ûf]‘—"¿_ I Ã4á0MÚ`µY£ï;l6k¾&-RL¸¹¹ÅÛ·ïp{{ ÉV¼¦ÖIÔàZD±øzž^O¯§×ÏòµðãŒ2lï€ÝÁÝÍoß%(µ‚T/aí5œK°þ >®Ó))È䙉¬‘IDÊöC V[LÓçŽÐZ¢_E9R¡%PŽÄ 6üç 3›BÔƒ·˜ 5±ê¨^ˆÎ‘ AHxçRÊÚEc›C iXÈÅIPYöôÑ•áH|`ð3;ZÔERÕ ñϬm}²!+”Ò‹†zÒ" 9KA3»47ûJÉ“mVFÍ€›C­JÐY\x&æ†?Ë´Oþ1Æ lx Aª¯ašÞû¬ž¯…,2tqêÁû ¶u3'`Ææ_§,õšy—µMÓ‰˜!Ö²'­ KmGf³Nn¿ýñ_püê7¿ÃW_ÿg«+xh©aC‚ÐA¨†¼¥‡ý^Ä~˯ÿonÞbóå×·{Äã{ óЃ+¥œ0F×µ˜¦öD’-N,}œ§PȘ&`»/ÁìõÍì!mJ3°^¯Ñ4dË”×E×4MRY–]§¡6y(ï°£û£„ÒYÎ:çx”alRs†H‘ $»Þ;H87‰B§§a¤µž4¼åœ˜$àSd¶]œ3T)9š¶GDƒ«+ )$e „ãh©8-M.5¤1RÓœõs¼€>FbÕeOæl„˜–aŸM…pªxìxtx™>mÈšNrÈOϧ¿öúcÀÃäyŸiÛv¡úñ„÷uX2ïQ0¶»-^½~ƒ×oÞáû^áúúMÛ»Uk:KS‚ãì¼æ<ç=e [É™ßSþøR&CÓ4Õ^ÊuWÅLýS”ÈìL‰Ãá€÷ïßã/ù >|øÀûíK–÷º”(ìRJ Á™QÁ{²§©¾o=b¶rÁ#v,ýyå Õ¼?ËLMGa¯ÇD@ƒ³Ó0"N#VZ¢7 ]£Ñ =¢³¼@äZ¾çü4$„¦@h©Xái!µGß÷sÆÖiJ)/‚÷°ã„˜Ç!;£¿/!*-Áµ߬Î9Â3»¹Þ'%h_{,:Û(‰GVaŒñÞZû[?ë§îÛù9ø”Zö´Ž®m½òõ:UÂÕÏ_f—i€ØâR‰bkZìK#[®ˆÙZ¨¶­œìXBÛ›¶GŠã0 i{fKhM{Éd=®oऌËËK¤d83ŽlZç`Ùœ “3¤N­¦­ÿ¹nÂr¯ÌL§{iAòøZVØE"µfå^1"[†Ñ±î#*0´¨Jrm&$¢Hs­—<«}õ)"$RZ‰j Î¡Äqg`Äû€¾oJ~†R¦1€¥s€Hh“0:‡ï^½ÂªïðìòÊ4œ]–p”›•@6JZ£»¸ÀúìÏ>{ަmñáæ?üù;¼~ýÃ8aœ&$¡`}@‚¬” a_ö”¬FI0yIÃhV0V`ÂCgUÙÿ3ÐT÷Î'=ïƒ32t¥hp`°ca?šN ^õ!’нì眃&+—5mæ|†=¢%PêpØãúúÆ"w­zœŸãööã8²½rb3.^³ rs&Ë ‹ÎÖAÂÖ9„&Âz§=¥Ðµc ¤Dc(›Èš’À¶~1 E¡E€„P†Ô>x Wz¡Ú ëA@KM™ ‰È—ÖÓkq¶¦!‘n Ü\+ѼëQVÒß§s9-8ˆ•‚…Ì}fáy金•È©* .Ô‹ÕÉÉ [ÕËF—ï{js‹À<<Pzöb¯ƒµ6 .ˆJÙ€…¯cêf1¿ï_ V8ØÒœÔÀEöjž ¾lyä àp?|#-XÙÊ,†±ò¿M© €çá§€Vzù|¤9t4KžÇq¤Òiº,œ^Û,»¥çpîž„æk@W3Õ™žDa‹¹¨Ô¥\¡!\A«B „i ©%Þ¿úûÛøaÂËø VŸ!&ÀHƒ»ÃL×`°¶‡=އÖ]‹ [LªÁÕ—¿„jï°»¾Æí4@+p°óìe*½§õfÈC—†zº¶E‡yçКÖÙâç)Ål3‘­ˆÉ· dÃ%ÕÒêËh…ÆÈÑ4«®GÇ6Æ øÒRú gOs3ëƒC»Òžî±R‘'w b0ºiCöpžü¿Çq‚›Œjpyù «~ƒaŠÌÐ'š÷¡¨Ê²&#¬óPÒàêê¬p}óÃ8AiQ€K²8£]I,tù÷ü¬äë’÷’¦i‹e˜T¢<[ÅFIÈE“•NØK¨XÞ{R©$ „ô‚¬Õb5íš}Û³·Òl…w"] x ¥Jœ”´ÿKhòöO!…2¨+LZnâ†ãB|öÙgøçþg<~‰ÿùÿý!QÞuk £ÇÿôïxñÙ3„ß|¾d1šÅì~ìc@ðÔ´ç+Vlqî¶;Üm·†¡ÄÚhR×Q“ÿg€ xÿ”÷÷Ðн€u•¯yfp‡ÛíÎZ4Mƒ˜ÈÖFH‰ÉZLÓÄj»Ì8”8;?Ç‹/ð»ßýÏŸ?dzgÏpvv†Ã»÷óÐOIfµ‡åÐ6ç$À4M E4š@ÊãA1ƒÍq#Gëº1ÌNãPíŸà!_[Ô×û±å§‚CÍ›—!¡÷Οò3O‡fù>·mÏÞÝò^õUS=ÀsÚ}ww‡7oßàææf¶¾ãWÓ4hûLÓ Äü|å=.ÿÊj.)Òli'%ŽÇcñÇ~ùò%¾üòEå•ókB JÍLËÓç<¾iš8·AâxðîÝ;üéOÂÛ·oq8 L[$¹VÊ€z±ŒÊ×£®ªį́¨Ó8j•ÈÇ^MV( õM&œ$Ê­ðÁÁM”Ñœ¼ƒÑ :C–*h%¡T{ò ±»{ÅŒ¥úÃüKÑ3bDt~"åDß÷E#¤”FÔ¡Ø]9çJ ·”’Â¥~r¶Ì£+°Ø«J&š‹Ú˜®¨þM= ¬{Cø¿¢bø± äÇÎÇÖ{©?ÎCÐôQ3‡¯ÏÞõr™Ág+86Ȥ›û‰Pê„Z1ÖE"yH…®ëK½#е…\±É×úììœÁÎQïa­ÅÛ·oO®µ@ H ß[‰#"#K&’(Þ÷ ÀÉ(YEÕõ_nÌ °ÖaÑy-ΉXƒÅ>ÚßH°'!JïCê÷ÚR–¬[hè› aXá§µÆ09Ø‘l5‰XÁÃþJ甿G&ÊL“…µÇÑ×%“ƒ$Ydæþ¥ï;øè!д]ñnwŒ“ƒJ”©Ñ4 !P–TšÔ“ÃÎ:´Û¾}ó!\ß\ã8 ¤Þ>D˜Fas~­ Ÿ¶­)8÷™‚3 î+ÑëýpΫ {šseÉH•óqV­Ö`á’à'‘Û¡V!j›ä’æx¼ÈÖ€Ô?æÌ„8V&öÅBÜ£¼cZÚ;¶&šˆÞ“šg»Ýâûï¾§lÉÜÇbVÉIÈ‚’Í*'QR-êŒ!%ŽÞA‹ç<¥á6´H‚ls+:$“=r6KŒFk¨œ×Åà†L€6 œq%“ +-M.FiH£èìÌ–clµ˜øìkŒ)=Ï4ME•3#€¾í Hu­æüÊ̥ϊœ¡µžI,1’š%J$•ý|é[¤ ¿Ë{$螸èYR¹Hé($VkÊÊ9Sàu»Ýí°Ûí 9®ãšËh %5 çC8Þó³ù6<½ž^O¯Ÿí+“éçîî$Þ¼Qx÷Æ F/qBòxóz‹ýãÀ– )bÀ †MafÄDÍÐÙ…ÅóçW¸8áí1ŒHQ!)7Û4¦´”ÿg rjö»÷Ih-à#±D¤ÊÒÍRÓTòÍXçu#¥À¡ò‚¹ÀÍ…“³ÍåÍÇš´Ü$LÓ´”;çxf(‹¾<ÒÚ¶#ʈâa9ûÇü¥W)®›=âç÷Bµq.är#$³ÜPp3‚ª‰Yª*RÔ  „X4ƒÄ¢3kbq=j«*ÊF d³Ù ñp¬fîÞ Ø+Y ó¦nÄNeÝ5S"&¤ŒÖð‰1”AKþwÇãÏ®. Ã@Cù*Oc³ÙÀMþ׿ü¿ØÞîðûþ¿Ð_>ƒÂOð)@´û`! ¤DðÖýê wï¯1NT§ ÈŠâ#‘'§ÑÜÔÑó»ê;lÖkzO¬äÙï¶X­z(uc öûÚ®sÖNe 3 cà|Vh²j:ìË=+FrYiByð۵Ġ<;ÛOñ®ëØ·Zòp,¢1뮇©“ Ü‹¥H§Àfï,Ó’”Røpý¼X÷gèš`;&¡$¤ i¯’™¶àæ[)ƒÓd¡TÂÅÅ9œ0MŽÃžÀ¢ÌÐ ÌrqÞ4MY×YñS+}òBÁhjÁÀ‘”-O>+=ëõº$Ÿý(r›)ðûâ ós®ˆP1+ÿhÌkKU~^Þß”2@ìêƒ({\6Èά )5‡L ¶×N¥aHì÷ëñÅ_”½ôýû÷˜&‹Íz…$œM¸þp‡?þñO¸:ëñÕçÏ˳’RDˆK›©’²$±2C)É`Ôn»Åä,75RÊ*Ž’Ù£óÙÚt-8všà­ƒ& Cw º~cº÷e@öØý±kýÐPñÔVc‘gæÀ)ãù!q³¢fÝ—ó%«•~dø2ðTÌ,v,zyÀo­%6zJ³Òçd°CÙKº€JÛ»;GGH)ñü³ç8Ž77·¸¾¾.ë.Ÿ•uÞT¨¥” Öª’³§vfÒY¥±^¯Ðu]UcUŸ—•L‚½Û‹ÏöÉY¯µ†‹P}ÿýxÿþ=¶ÛíÒò¯:Óó¹%¥¤ÚFV,ðtìžk<8”ló,µq„x˜/ªÁæ"« ³ÓS„H2zÄi„'HœmÖ¸Z÷h‚JÄ!Ðú¡ç§^ë!FHe°»½›ŸƒÏìR0©E±†á Ñãp„°¢(f>8½7(ÿÈ ~¡ä“ˬ±™èG³Yòßß[èÕ('&Xä&5¯ý*:û¤?÷õ3H î ªØÕ׋TÍyöðØ™{JŽ[X5ñÏO¬w>”úÝCàL©q$|ðôlƒTž3YÈ2)L/_e UsŒ¬p¨?Oe’Á™ÄDAùj !÷a·C«5Î×+$ øDyw@c4„"RbcÚ¢"àð‘¢ÂCH>`Óö”ÝA‰ìÐmG„•ã‘ìžКf® xýçýÅ‹T$" ÎJVæ IáËB%³ŸC‰Â›˜Æ”k¤Š5-=7ªÌ)ª LAj]ï 4—JBÊÍaåùY ÞC¶Šç-(ÊôËËË.¹îÙxÿî]©1$׸3ùÎTY“iq? O¯§×ÓëgýÊ^”>Я” †cÄpÜ™‚³äSy8ŒNC¤5¼í}¥ Yx(8—Ð61lu „€†A@¢aò¢ þk"ѦR–çB¡i@«D4za-QŠè9„yfäAܬȌ€6FÅD Ûz`ýP emk”¡ÓŒ…¹xÍ~í’2TØÕMM.æ £ ò¤h¢j@,²N›ˆ¥÷eZ6R¥®™ô÷;YH©šaÉ^‚üË€Ÿ˜+‹{YK¦Á>ªRÜ+¾•z˜¡ºø³|øWÕªR²¼£&23±˜±Ú4 ¶`j¹y4ư2‚]×¢k:Ó@H eZ#!Åõ‡k|ÿú-ö‡Ýzƒã0"ÙÎ…G1 ã1è*xv·Ýb³ö8?Pøa4p޲C‡œµè»5Û{$¤–% Ùkû¥)C¼޽weàCD`Y6­õ¸‰«@®5Øíö0F£1 ££\Ó4Tp‹XÔI‰CHëFp¸bÀµ)lA•÷!ï)“ò0n^ßÌŽžÞeðòì)¸[+…çÏŸÁÃ~›×X¯Ïpqþ7z‹Ã~‹?ÿù[üþ7¿ÂÅf®Ql×,íÎr#£Xyðw<q·Ý‡@/-1ô2`Â㄃óðÿ7þì<ìªyïý˜êàAðáî÷Gs¿Ä§ŸÅz.= Ôä0mÁŠ¿Å物~Rûñx@’ !NBéÄ~D¥ TUÖÛ ŒÍvFEñ朼¬€ë»n@m4¢çû¥U¨ °Ö!øˆÍÙ9+&L©¥¼aʈÒFcµê€b{Oèû›õÓ8–¾¢|†˜0N„V¬øð°4•“Ýedfr@×uÐÚNÝ{yOli"¡ÌBàa(©ŽÃˆÝî@„P6ƒó“óp!"BÎÃp(ÇùùW…Œ%„DÛôŇ>+æCððÁÁ{ç+•(Ü[ICêZ©£„PÎÑÝL}dB ¶ÔR¸r“0Ð’|õ…ÔÔÿ(Ã5& YS˜‚¹õ)”•tjq[÷¥K°O>òüË{k8†øÀÚ£|ÃT… grÛ²7x…Ï+c! tSλ9ª¨®o²EÑD6kSzçˆññ“À†¿Öè§“ß•RèºÖq¡Ì–3JÉ"­Ëèv‘I¦™ÕS3Ýgßö9|¬0¯ä‰dÅØXØWe™ƒ¨áp§Cû¹¯ü‚A–=Ku¤Ì øp?A@Þ—­Š˜Yâþ•,c]ÞÃSö¨X„£ðCÊY a9d+_ËP¤³sþÄlÌíZ´áa¡îYD}¬¡œWò’]‚t77ùþëlƒ#%„Ð¥ˆ‰ì¹œ„a r@ÃÚwÛ=R`â!PܤT p ô}É:Ü^¿Æ4l¦®^~…õÅs’E›]´-´”øá‡WºƒÒ >¼yƒíÝ ¢€•)Ÿ«¾æ›õmÓSƒC• ÖGŠÁZ|ÈÒ(q R€’Ä ×º…÷Æh\œmpqq ¾Ëƒ¡ËMJfÅN“…( :‡ü%PCÕj‘•’¼E½‡c1,Ék7Û Ìϫ֫uÏÄÓm‹¦mÉ27Ü\_ãûWï’†nz‡.ŒJ²m‹R€µCù`oakG¤¨1¹ΘƇæΓ혳ÃqâA,/ùì+±È^ÈDÛ6¥‰Ç1zLv‚óÃñX¼Ég[œx”‹Âæš&‰Ã0À{ÞÁ4k@zhåaš)&(! 9#„H•mÔ¸—òµ8/%†áÈY@„dÖ yæ³²*)öú𞀵èæ&¾3Xõ$+ö,Ý ëÈ£6F ï®oßá›ï^ãêüÏŸÓ°2Æ÷Ö°,ƒó¬þð´}|¸¹†O mÓ@6-¢,…Î 4þ·€ µƧ„{> 6äÆžy¶ØJ³õôb ® mç”Řp}}ƒ÷ï?àîæ–óŒè¹q>{8pw·" g­sx÷þ=ŽÃëÈó}dK£[ ȶ³ÐzB#èœ+Ãÿì¿[Ù×-Î<~¿Êh˜”Ð÷} ª1b8\@ÓÑÚoº¶(qò]”0•5Ð"„5-óLb]‹’QŸƒ?΃½ i¶Oú±^ð‰™ìÅÚ#VÀ)Áh½jÎdch0¦YI‘Cê©vp¸¾¾ÆÍõ5¼÷Å®ªilÎÎðù_”ÛƒW¯^ãÇR·MQŸ2¦mVÒy?'°ªç¬#Î3ºººB×ud!™-”N†ñ!„ÙF.}$àöú¯^½ÂŸÿüg¤üâ_âóÏ?‡÷ïß¿/d‡< - K®Kò³Y®y¥\ÈCnQíµ‘Åý=êtЕïÞ²£J*ç`yë1#¼·ˆ>@ …¾o°^mÐwD ÌÀŒÐгÒ2)#ÎÓtdÍ?“l©3§ùó%v¤Á9ŒqOƒ¡U)U×@!áp8btG mt«U³%[=ä¬û”ázà!TMòÉô$ç!{Y¯J–û&8W X •Ú7‚³ îï±H÷ÿ»Fýþ^öQíRʲ§•ý âþ~ °¼ÔÀb‹Ï>ì\{ì÷;ÄÐô+©¡UË*!¥KLµB–ÖÌ‚¬ÆAp€˜×tÎDÉO7]ÉvIÛíÞ»ê< …8åбeŒRh݈»í‡…µKJJx4°8 -nî,.zY‚£ ¤:M*‹³st¦!Ïw¶¸Ýïv¸½»C»YÑg;eÏsxnÓ²Ò{ºfõ¦Œkg²õ‹Î@oŒ6Þ»²gãˆÛÝŽê~ê0q„„Çqœ0úˆÁ'Hp>—PDîôÿÔ·¡¥![ÓÒ]Ù5Qín u_ÎÀÕjMJ&sI©!  …Dp‚ѱc¦<ßk’¿T&Œ•ÊJ5Yf dC¬HõŠüsèïuɰH),²ü–àCz¨'ý&8oñdb~\’ñNÕŠ¶ý±L¬ò^Äp&\(!ð`ÿô߆‘beÈ›Š3™.Fkç„ù»DföÏ}üœ[!J??žD¤pfv>¼FÖb “˜”Â"ÔñˆUJd›Êš_ -ý¿Ô§ËlÙˆÈV} r´Ü‹ÍêÎŒ“%‹[©Ðõ=‘+EùyRB áR Ô+k"!"’HRsG‘øWV IÂ{aKÏ>Lz˜-5ÊÙ,0×ÎÖ9Hv²턃°'Œ.EX׸gËÓdqýáÕþÅæº²j•¬Â$«µTå(=½ž^O¯§×ÏpàCO* ëcñâ…³«õ}†FOè[Ï_J¤Ø F˜TAŸ}HPÚU(P(Å…³Àå¥EÓX(é $ ³„¶.ÜÅi¿ÀåÅG „T x<Í8×ÛÌÀŽ¥ÁòÁÑa/%’ˆPÚ@çüá]àÖ%´!.Ôu£¼À°ÖpÅÃ6UŸE!UÁªa8e½øç‚¿[uÕ!áBQ_äŒï„œ”P‚‘@L„*4íT^+Bð ¦ ªƒRTìjâ¢4*á]ROwÃÒÖ¹y ¹+–öñ‹ë ”^øÙç¢/¥û¬±{lì†:Ö;Lì›… †œ ÷ž3 N‡P‰™9)‰âoÚuk4Í Çã„Ýn€’ ÞŽXõ]‘y8LvÂj½ÁjE÷l:ð§ù.ß}À_ÿ#Îzý€ô IDAT_~ £è„°›FLÖ¡ïz„ñˆ7¯^¡1 >¨b ¡”D¨†MÓÀNÞ9Õ´eoøišŠg µg9 Ýâ8©K$M÷ ¡dã8ÂÙ€ BR0Í >HÕ°_f¶÷ @ ü,*òÆvÀç&ká‘YP$½‚ ëÜ$S~I Iü +®~FsÈ©sww· nX¾Í t0H‘Ù1EuÃÏ}ˆ ÛݬŠÂ-„"¶šÖMaªæÌÓ˜´ší €¶^ Mbbû e‚ç”›r1ž•D=Ebø!ELãëUO]Rbu~Ï>{Qì†q„ÒCƒï~x…Ïž]b½éa´(!¯5»<¤H fÇ'†#†qBˆ ¦%`.AÎ ôOæý{€áõ>ó· ¡ÿ-–'dÓɪþ{Áö/t¿ˆÅ*|ó—¿`ŽP(ñ \Ò„œ†]}¿Â8ŽPZÃ:‡Ãq€iZ$©pvy=ZìöÆóðÖ¡iZ b0HÃò¬®™=úYOÐs¢“€Ö´h›–׸+k'ÃmÛ–©` 'eƃV…)Eò%æ<¢d'þú<,9CD È~ûå Ï÷UÝLÈŠ}/·¨ª–ƒÃ“Y1j¯n0È–@>É.øB|¨•’Bˆ’i´Ýnq<±åLk'Øib £5ž={†¶mqvFª‘¾ï ãG¼}÷?üðC±¨mmjUWý9cš™§BÌl—ÂäLdí÷Õ/~ÍfS‚‰U•EJ þz ì=9úx<âÍë×xýú5¬µxöì9ž?ÿ /^¼@ß÷x÷î†aÀ0 Pº)ö'tfH­ ôˆïLÉ¢Q²*\«›Åëí~vÊš©I %xö¥D‡‘$JA·­éе±Fµ@L̹æLÚÀ5 §Sy®23} \Ó@™ž9U¤LœI@ H‘<­S PNÂÎYêÈÖÌ9Ï~ýÞ;˜Ùû¯<·ñ´˜{p¨m>á¬õš•RU a¢Þ’½ˆ õ§™°“ÏÉ:ßhq‘ù·T5 ëcy ÆÖBEòqÐðcàÊC™ ¥­”Ïôÿ˳͉â!Ú×2¸-8c ¬dB:BéMkæ³ "5å³%[¸,kê9Ëk&%Ñ~°°J Çñ¨æ°r1çÉ) Í yˆc(ö BП㈺P2àön„°cÑi"!%L“Åù†í@G„†Ÿç@™$>²}ý\£f{. +Vl‘CÃui€{œ‘•©B* »ìd¹/a#g˾á½+µÜ8NRb·Ûawp(­‘ !àB‚õ .Ö'øDë™aôªšM¯°êÖÙŠI\\\ÅZŒ‡Ãž®yˆÎRg#”Îg¥€”ÛÑ´-T×"ÁG‡<E µOs¶Mé©R"¥„@ñÙŸNCb±ŽYZš¥‚Ü“=²'1ïuO:÷}aуçþv¹ÎèÎYuå쎒ì„1ç J©> 0¬úúˆZ­UÓ‹ýM,ÀçœB`+ÔDw^ïYQA÷-žìži¹ý<à·VBšcZä8E¶²ð1BI"õ]>àh-ŽÞs¿G¿º¶A£4¥¡YýžÀ$ ’ ðŸg.L" ž AI`¹'€óó œŸŸ£í{èÃPÒhç bDHRKò…KKDþt_sý@gQÀ0ŒE‰P_‘œ-$¥¤Àj~^òy"€ðÎ!ƈÝ~ÑZì†#\JˆBAj…‹Ë3|öâÎÏÏ8ð>Àº€×¯_ã°? 0˜rª¾Éd³¼·ŽãXæ6O`ÃÓëéõôúÙ‚ …\)͆B¢×‡øµÂú,A«/^¡ä„Í:/¸|¦pDˆ)**$„DäCOÉðAж ëõ„® è;–çòµ—šŽê: IŠš ðiÒôhȃp!È'™$³’ª_‘‚ö„CôcAÈ• †»ž™C J1kCÍÙŽ#j”g†EÝHg¤=r³™å¸5hî%|-3ë‚"Q”Ü…à=ìdKÁ¹`ék ­¬ªÂ%ËW­¾fs±”RD, iª¤Ñs³¦uˬ"ºÇ!’%/ž©0ÈcÈY Yg9xjš|Ê͉#°a¾Í>¥‘šÈÀù€¯†·õTÜSj<$‰_xÐÊ,¿>ÎáZ ,µ”¦3³YT•Ýáy ¯”f– 7Ï/žÁ{‹iÚ1ㆃ®¹Ρ¼)‹Q*ƒ¦58NÞ}x‡Ý8àÙ‡·øíù¯Øœ_âf;`²“÷Xo:üðá ‚› ™½]žœ*‹î) ‰†a(ó... ¤B36äI­$?¿g›Æñ£ Ú†é—WB`Õ÷Þ—lŒà± S„wL5š¯ü»N—¡[¤‰‰˜‡)“u<€¿CÛuxûöÚ¶%uÈÝ+°f`‰ÔÑ èÄ8pÁÇ„¶=C@¿>ƒT R’ht )[Ĩl nšHZi–Á;Ø)Ày‡1üh“’¬‰BÜ€×EÕ|gþ!¯gíÜÍ¿Ñ^3¤Ó8ÂU ˜W”ŸÇÌÊËÌ»˜BL)7>ZˆD^ËôÆr£ÙºFBVÞÈ™A%Õl¢•AcbÄIfÀ% Å9U*Í{݇„Tì2ƒN ÎÇI)‘•Òñp$›–ã( ÓhhM…xÓ@ï?|À·?|‡/¯py¶†š²~ç?2X«ûàœƒóûÃÂ4lÐ!E‘$RX²û*U|d0jc˜à{aˆøt• \Ó<¯A Ë qzÎQâøl™‡â}½Y¯ÐhMLõ@g“Àz³†æpóU¿A`†æqa}„a…‘n:¬L Ót¸½½Å0 ˆ‡=LÓÐÀ0J$)Ê3¹œ¥§Š­8«„H0¦”©¤•Á¨F(e À´¦º®CÓ¶0Æ@BA*E"YÑ£j6±¾Ô‹üŒÓ ‰“ ¦üœIZ䉤” b‚Ðr¶‚s¸g©ò’úø0²þžeˆXå\Íb/Ïå¡ÎY8gñæÍÚMØ úp8U{zw]‹ÍfƒÏ?ÿççè{büºâ=Ÿó‡ÃÇáHu“ÒóxCHª j µØ´Í`C P=1..ÎñÙgÏq¶YÓ9Êà*eÌDOu¦¤&" ÜÜÞâÇx÷î]ñfñâ%>ÿü \^]ѳ BLóàŽƒ\ çÐÑ([c9Œ8IÀxt¿xf³ÊñÅ:´ü™˜s?20Ÿ‹ÞcXV!†týMÓô=„RˆHðIB"AÆJD1HüÉŒhD¨Ì‚ƒ<ýdÀÇõž¤‚b¶r œ·ðÑ£ëVë „V+V :‡„ˆvÕC1Ñ ×˜¬JË~ê ÷Ì¢"¦T_[lÖxÐ\úAöJH6ªh$ÁJãi˜¤î§—u”ï^ < ” ¾ToKŠICº¿ –ñINL• ò˜%g¶ð¼gõ™æÌŠP² P®Ecµ¥x?ä~þï¬Ø¥ë)”„n4V«ž{>B­·b'&ïæS9‡óU”bVFjÔG¶+:;;+¾þ‹ïQïòÏ·.”÷Ò÷+h}¥$R Øn·^À‰ ¦Ql™JSÈ~fïps}[šlÍ©5Ù¾™¦…V à°aÉ~)ÛÄðú•ê)ÂH…à)‚_XðZVßùàáœåºU–š0¬µÑEaI­¤‚PÞ9Hø4“:NIk‘÷±aјççç”saf+8ï=ÎÎ.8óOÍÙ…œ³EÖ;|ùe¡x޼†È¦Î[G n!b z© ƒ¥œU·ó™žh/‘u:^½”²Z½$60`«5—*S.ì—•VH1gØ~šCíGµ›R& êÏ•V‹óô!‚༞âìPY Ì™TSËBª«É€ƒR²X9Í{Gqàn \ŽÍª'"Ý«¶ÃYߣáóQ"Ï-RÁ]câ G! ¥Ã0b²ÇqÀúì 8;;GÛ·0m‹fÕÃô-Ä4R ‰ÉNe?‹’fIŠ¢V !brÇãÀ™ˆDr‹ù¹b¥Š”’)MD9:ÛÛ³R‡% 2#„n&‹$®1ØlÖLšåAˆ„ý~GöŒû=Bˆh¤©dÅiÞ åA Ç1ÖžÀ†§×Óëéõs~ÍŒ¿Ó«5ðü…DÛ)|þ…FÓ(tíF1y\^EøèádbC „ðHðÉIÀ˜œ )B+@ꀳ3…~-aLbÆÿ²Áˆ!;ŒŠ2ÿiŸ!t÷§M JrJ ºÑ0í.Xb !dn S@ ¤ØŸ‡ÙJ ²úÞ²*kfÒÜl×õJ.J{¯¦<ìs›Ú‡ü¤ëâ³| (Àh½êi Ìþˆ¾²zp¸…eháÌp޳ßiªš. [”Bˆ‡7Ù#°4-UBZ‚n–,7fHrÖ£Á¹Ð^‹ùî.ĸq‹ 5Iþw¡òž¿>•PPP0­YØ£“ <âüâ9€ˆwï,¢?–æ6ûz樴FH‘¬‹ 5Ɇí4À» ãþJøòë_ã‹Ï¿Äa´Ø8\¿Ã¿þáÿö–ž¡³|NÈ ÅWÒNBumS™Ò…݃GcHþLMcJÐx×öhÛmÛ`h%™ÅÂ÷?=Ä\œ pdöŒ)‰ŠJÅŸë®Áz½B¼"oÌýaF+T‚<˜=3ÀBH0Ê ïWØøó·ßBjNV«gh‚ÄÙù%..žAé) XXÚn7Ul+å1ñcôp~DðIfyæPõ,mÎ,æš™™N¬òSKá/ç=*³¡gö “pÐDmÍÖkR̶e9y¹IK³"‰X´Ä_B~¯B"AÁ…êß§9»%?Ã4<Ð|ÿ%çÂ(aèwm•†ÄŠ›Ù£lÛ‘""‚·~DJ=noo 5íKÿëßÿ˜ÒÓHïI(-°>Ûà°»ÁÛ÷ïñæí;ôMƒŽ¥Ê€x@­”›=R:(¥0Y‹Ãñˆ$´60M ! O• "{Þ§ŸxŽ~8QK=4‹F'{4]‹a0q^ÌápÀ4MhÙSWjEöj ~é¯ ‘­Q³…Èi«`–ö✮ÎÏàp/“‰êRUûTìîÄC*›<ýë?_ÞkAà>«,f‹,ú¼Ûíë®…(Ê).//pqqŽÏ?ÿœ=ÈuUkнÉ*¨¼ØnwØn·§-À¢ºVRÉWɃV3¬R ÁC+‰«««òþ””å~¶i”JÁÙ‰ÁÊ#†qÀ~¿ÇÛ·oq·Ý"ƈ/^àË/¿Ä‹/yßREÍÙN‚‹ ¶aóHZÏÃÅOþ2˜fvb=^.»yŠäÉ:ª§ìùsÞV%”‰Þ[ì·[fGjHÝâls޾?CÛ®ŠCÄ'èdlbk]XÐ\àù¼@5°£çÜ;ǽùsFæWŠÉ)YÕ$¼ƒÀg>G£`§Á' Ç"ï¿ «#àAmÃLÜÀ} .ëRJϵ„¨k)-‚á3K:U7¤x_U\=ƒ´>ÉB*ž~mÂýüƒ“Þb™möñ0ìu¶<PÜÛXø”m“" Îȉ k I*&%93!•5¯µ.uúÜ,íUSJðÎÓàï^>ÇLí¬ª”ZTЉÚ.²p+À!+kCŒH>àöö¶ØçMÎBˆaÊ8›zJ9ƒJ!  Fç¬Åîx,CX-­ŸLãÏ4yòGÎlH³‚^ @K £[pâ^f\V–›Fó^£©>N3P”’T ‰@Ä("€É "k@—Ÿë"&KÖ›ÓDÊÂÆt\×÷^+ɽÎ#ð ÌŸUU¹NÏýP~Væç@aµZÓ9“­”bdÅ;Íæ5Àk"ƒOb êúT³Þ) E5xŒÊ1îqù}—=räz:>6ü8Q=FéX~­”PX²—pf,-„_»¢ÔÚD O¯§×Óëç 6€s7aZ`#„tèz…Ývpv®ÐwR1zÄ$7hÁ#%Y˜·’-’FòOä ¯FÛ&ô½‡PãBu£S…í’x¨Ð%¦“j`¥8‡PÅÊ–À˜†<\­ƒ u‡ËËç8npØO躜sshfaö0¼MPR”a‹ ßþû¿ÂV†,J4øŸù7Œ·pu¶†gæ}y¶Ó, ^¯×èû1ô};hŒÁÕÅ%Vm ;MX÷=Ƭ””’èy0Õ÷{o“ÔvµZa½^—†°mÛŽ.Tº—1"0K÷ëµsÊ`T.xc„`{£èŒè ÉëcŒh”„óÚH„ ¥Âo÷[¼¿»Ã7¯ßÀú€õÙ%ºþ0d€ÉOÐÚ`r‚·@rž<±…E%c@ ÎIy ˆô–Ërš%Îï[Š{3À“õ“-jNóWfÔ"•}¸­Jd¦“({Abéu~± ¹;µXÌ>›YW‰NK œˆÚ-&xŸ`³eçŒPvÙ™)mÈ“—UÄ€Nï-‘÷[m ”f;>f«æ¬˜”†ãã0PSä("øPÕ<\>¦ÝcAW¢Òà%ÝC@÷âÌå–V$Î ø³ªèø•úź"Ýv¾xñ¿ÿýïñ‹/>'?å¦)ßZ+4Mƒ¶i •†µ–Ápº7"ëbÄd-nïî°ÝnDjK)g†¸Xú`û¤Ù&‹Â98Þ'L㤈ËgWøÅ¿ÀfM¶|¥‰ó>·Ýî0¶Û-^½~›Û„°Ùlð«_ý P¯V«’‰¤Øó>U¶My *‹º9üy˜<Ìj=a¼ŠØ{\¥T[m̪ÒT<Ðí4ÁM¼#Õj£5ÎÏ/pqñƬ UÃõ—DŠð¤Ò"ÛJ…%¤L3hDeÛ1ÛvæœrÍ‘=ê”Hdg£$‘@gOL “%ƒÙŽ6FK¬W= “&‹~ÕWûμOÇÊ[½­. ÞGúËz¼êÅØ~ ÷D--“UžUuv~κwâQÃ#ôWå 8<Ô[Ä”–óý`LT`ÄÒr”UÆïx©ÙÕx©²ÉuÉý÷ðq`eEyæHB”Ue÷‡È© —¹¶I1yXg‰ØƉs¼” 7>öd³™UPB@ Y¬s [ ˜µ’E5 \Þ#0ÍJæ¬*Í5G`û5Í`kdûÆ VÚ–3l€uéµ ^¨’ù0…@w†ˆ.9ï‚ß« t˪õDvY1&ø0áx·Ã¥¸‚6ëvç"ÙŹ^%%ùœQ‚/jHÊR¤LºT•ʺ Á{(ÝPõ™j5âü|ÆB´¨È/˜!— 89{Câ³ÿ¾ÍØrÿ8]“5`˜éîîøëVg­ãÙPÜû¢ÊÒºo™øÐ‘Õ ©(WçL”Þ>Ï] ªçô·^f ÷H5©ÀàYI!¹g˜åT±xàâ£l¸Æ°±H—X#£¸¶‘3/÷†Dóì@{PJk¬6kl.α¹ºÀa0Nö‡»Y)%É;4J¡Q¦o- p.8úå=“§dÊ-a^ï©ôà‚Á4Á9(‘à] ÔHZß)x¬V=Z>÷$ï¡Zkö{ìîvªó,@J2C°°‚‚ï­³”÷çÜœAø4Ž|z=½ž^?g°!RJ-ÕºÖââBCÈ­…A 08/àƒ@‚³1LÕºÃñ8B€¬8V}Óx@á!ÔÎ ,CþþÖè¿V¬× °÷äéŽ0 ‘ƒýØ€§ÍŠGæCEâð£™Ý„E£LÿT™°È}5‹…”ê&„XÞ¿ÂI¢X»l¾¤|¨9È^†Äø 5$S}]œ šì% öxøCÁ‹)ð{³dw˜=k)¥*g,aR©*ܘí]åSð‚Á2ö‰äÿlp÷ÿ³÷fÍrYšØç[,™y7d‘¬ê›ÖH3Ó›æÿÿI2™¬gzj¦Š,’`¸K.áËÑÃ9îá™Y¬Sõ6TàE.áçœo; [x ¤ÒêºBt· b¥4­™,ËÔa@CÎ(>ŸìKoa ŠÅP ‘™1¶˜F§ù»«_ŽÇþéÿù¿1÷øý¿ý·¸ººÆ_¾û#îvŒbV£©lº’€/l‹Ò¡k<=<Àˆ]ÆõÕ6}Ǭ½Ñm· ¡A«„¦aµF×¶e|â"QBµ»¾Ãv»eÙjŠ<\®¤þ…ýffu }Õü3Fs“bDðÛÍ)FtÎa–ôkƱÕÉ~¿‡ >iÅÓý¦EzHƒ‡6-Ú~ÛlàíŸ £Dæ¯aµ…†AJ¾„º±„Ö‹ÕÓT®%,eÌ,æuº X×õ}W ô•D‚j3õ%úM©­Šf5Q§BPŸ£J‹'x͘®ÃIóà¶Â{r“®„õžYßZ:I¼ýIÎGðs(]~VåaÒŠ=ð¥ #"ÜßGüéOÄÛ·ì§þî/?A)ƒïb¿t±‰cv¬Æ0œðã?âío¾Äë»ktΠq¶b' +LÂCœƒÜ?Ü?ài)…¦ë`œ•a`e¦Qú¼!Х៤ósH\²Múl ¥|ŽsËu8k=FÈx8`š&¾ç‡Vt› %8Q©%1‰ê+çd$b0oòè7-Bˆ)¡ßl°Ç{ÉtMÊëAÉ”èâ>™Q”xmq¾;•›Öm×A<8N ±ßï1Ol&žàÖZ@Ëëë9“ufC‡\Îü9³=ÁåÜÅÏd0¨²Ñ2 þ¹ RyÝlÙ õFJ)»FÊMãææ¿ûÝoñ›/¿Dß÷ìlm±…SJ‰-M’ÀC¾Wœ³§©¬—Þ¿ãéÄê¦J5€ŠMºÎª)CÇ*°V+ÅLc9ÛÍw··‹ï8œŒÂ|zzÂãã†Ó‘AncðÅ›/ps{ƒ×¯_Ã5 6› ¬1ÅÆÑÚìÇ <<=âpØs>‡€¡Yù©U6dµSx†R= ÊjèZÈÖë†$«HÁ#Å€ià§ Ö0ÚX¶¯›|„# f+F­šJµ€áISR Hññ*c"«Ù~/–U­NÕZñNÃtUX¥áC@c4%„q(j\ãŒVHZ#ú(ŒyÛ8À°Š‡Ä>b®˜Q´3Ûzž–?7ÐKÏ>+—õýç÷Ôüý9}ȳé*ãí¹Ï ÖáuŸ 8ÌÏÆ9ãA]ÁjàLqÿÓ4 º0€3¨´Ø/b:Ër«³paí/µÚƒî7°èýh””ºŠ€ã|ÄpaMƒ¶³P*ÂY`,¶h$`‰RlShDÉhÊó `Ôšô¹ÿâ ÝXîE(Ϫ¬˽ïS` ^l|ˆ!3!ªk¯•A¬Î©V¦Ø°‘šb³ª!&„H e`Ëù|ƒÖûý “gëÒë›[4]Çd® •Á8 ˜¦ mÛŠÕ/ƒ3F³…‰¢µ!d†Šº®EˆœÑ` œs’]ÈçÏР̲‚ÍH?µºýÊúH•ª+ … ¦ÕÌî¯kÒ|Œ IDATjUƒTe½à“¶“gvSé\Ù~™øñ{ºÎ1Éä½K}ùó¯UíI”$`Û2¨b,àÖÒ)!“SVß±¶æû”Ý´<#ÎêP¨óÌ6TJëŒû€ï™ÃÃ#ÆiÂ8¸î[¼Úíp³é@šUù!„*ƒCr¹$Ü]+&FeEåíí-^¿yƒÝõ6W;øÀëÏX‡ÿüŸp:œ€DPÖµì]ÜçLžÕGËfÌ C­l¨Aª¬zÈýs !E$!&OÏ6ÕÆàõ«;ìv»R <<<àáá¡dVum7'€WÄ/ž‹0á0„Pnœ°áåx9^Ž¿k *{ó›p67 y³@ÃI#‡ñ¤à½%‚‘pÂ"ƒÃ)‚àÄfFÃý~Bß'l¯š–¤81¶VàWž{½Ì|T‹Â„ ƒn=H¨ ê3ö¢âé5ÓGI([qª\1hgö‰ï쉕_‡ ­T ×MÁúuê-o²)œ3ìâsñs¦JÁ¬]0Ë ß51e Î¨’RPŠÙ5FÙRlr`\¨Š°ÙŠ¥ˆ3‹B/2$f/ìùš¥‹Ýsƒ¢ù}$È,UÍ!- ÉusJÀ†Üøc½—¨Ö’†k\YÇã­naš9`3¥´A2ˆg­©€?ýé¿ãáñ=Ú¶Åé8`Ó÷ÇA³Ù‹i^§}ßcÓoðîíÛR|gFI0"ûô[lú“?ñûÐv]aËt]¥´Øj°â#ˆ'²il±¹ÈE­˜½:0‹•¼V)¶ý€2¼ö)V_ÛíÇã‘ÖáññÖ1ƒ–3Rø°ÖB%ÂÍõ‰>Î;1ÂXû¬ª8ç=–^öe$ùr¼/ÇßõA•ü6ÿÒ€ÒðÃ&…ÓÑãý;Âq1N=ÆAÃOPJ³¯eL\ rÀ²UÖ(´Âv71¢m-´ŠÏèp†_µØ?+".4Ì N¬¸.¾òkïÇTþ.ÙÃ?³@z5ÖãA¹>+¾/4Mð“ÙU릤VUÔŸ_–¸®ŠZ(EjDÞäò0‡í²õR5ô/Å¢X©X†­ÌÒw0¢JÈÿ"¦¸PXäðcc ¬5")œä8Ô‹Êà‰Q~½°b2ÆÂh+ê…Ùʦ¨GŠ—,[µñÓ¢°¨‹ÚîT ‡£„_6 )~ÍJ4FWbS~;ï=ÑËZM’ ,YãI,hxWËÛ9‡8ÔØ: 'LÑEP)4Uk€ï?@)àîöšC?ø\“-û ó¬06ÄRËÊð¯q uCdŸn¥Ð8¾iÃ`Ä82»™ƒ4y¨¡5s*£‹ÅU–£B¡ èKqkÚ… )¤b¥M‹!‹Ò|¾c @'·Ð9øÜÁ{få…È,é¦íж ŒVx||„‚Bßo°é·zLžàÃmTñÒØkZQ‚­„yô¶Œ¤…baY€_~^ÕaËkÏåH–׸Ö`[Ö(ˆ-¤òzÔÙ#7!¦Ê: чBžÑÚ”†}öCž=ˆsW{×ÎÆʬݳ½ÅÌŸ¤Ê:m΃ÉÒî%øF+•ÊïtŠ‹f>ƈ f/õ9h/!%?ÿ~øñ÷¸¾Úâz·+ ±Z˜Y≀iñáþû={öËú]õý¼Áî%ûßlKþŒ}ðS€Ã%+ŸÅ{$º˜ßSƒ1ùyÁž× 1Fff† `Èè}y­<¼3†ï îÙ—Ôüë^xIVœóˆžÒž¯ijRÛ2SÖ^g‰/„ý—jšsàîò@=çú\"¦]Æhz ¼æÜ©|ïQÛi± Hu>UEÐê\ñYHøœµ¶²{L•Ö èùNjٕôáIl•Ò)ᧇÄðêj‹MÓ€bDc,HKØfªÖZ²ô¶¸Úî°Ýn±Ýn¡•‚'ÎwQ_þæ+\ßÜâ«/¿Â¿ýÿí¿ýw|÷§oñö‡ïYi9NbõÈ÷ÕjzUÍYj@Y‹­bšsËR„«ì;k€*÷6¬Bå“Ð4 ¾xó¯_¿æzÁ²Ê¿ßãQò¢²rVi™U5A2cü³—IäËñr¼×XÍžÿÙE(˪µ&Láþ}ÄÃ}‹§Ç-686Nˆž%šÙÛN±—¾N›žp}5iBß3›]Ù dô¿é÷«\]Ëfzuu…vˆºGK-lU’àÌeAÀÞ•jf!Wƒ--žþºbÎÖáv‰âY0U]F0ÿp5ÌcyíÚ?´0« ²9æSA]ÞÎäœX$¾Ì¯ ƒHd IlWV¶Qâ߬µ•Õš†Kq¥Š‚kDQÎEe ɞ‵}ÛC‘.9fÑyïËf³ìµòá¤ü”f¸€‰"Ë„+ô b̲ÞÌ^w¶…±9L*øi¶º$˜—Êy×Z¡iÜì«Iy¨ÁÞõZ´»ŒŠˆÑâ/?ýq.ðÒ|曦•D`ñ‹r\…˜[ùžÖ¶NG¶»H|Ã2CU‰ÿ¹*™ü>M)pÚ¦¥ˆ¾ë˜&CDk Z·…Ò§»…ÕµV˜!zª¤ ͬ,•ï•bi ŸKº8k¢á¦DYþÎaŸ1p£œ¤Rä°B¾§Œ ¨j¼g{œ<$ZÛ”å'¤ZÈ!ICB±„^'beSÊì3¦ @p~•Ÿt– ©ÚÃʧ 0­Qp áé°Çÿö¸ºÞ¡ë{$ðPNÑlߢÀ îÉOGL!{ÄX±þ:kÿ êsñk²i?eÕqiàµnxòÿo›†-°ª×uΡi„ÊÞ—ëÌ4Z#Ža¶‡ÊÏGVè6= xh=L#[êIîôœ¡P¬p™iXÛn|¬±·ÎÁ:‡¦m “Ì{/¶olï–£`5®å=Î[<6ÖöNeÿNb±±Vf– ÆË)gàÕ_9ଇ"Z˜³ùÚj£ R,h~NÔàû%PMÛ’ŒÃ€ûû{œÆs¸:¶ °Öõ[f5fà¿~6ð!«Ê34â~ÿ;üã?þ#¾úê+h­ñÅ_à·_ƒÇÇÇr½ŒÖ¬¨µØÒÊ¢².)ƒ”­—{aþ½–õ ©wò3¹®aÔâVJR±?*,h•ÚSoŠjªX[ƒ僇ŸØ6PÂO é„ÃÅKÕ"9=©³ZËžK<¤jÄbÅŠ%Vw(xD?ÀŸžàTÒ„HDc ˜!ÊZ0zi•ÂQ†©e|£¬6zóµöÃí,ÓI  ¡ XA3 ¬d"ÆóÏ(ZN0«5mŒFL^ˆ!ÍöÏùµÿ5ÏäÌÿÿwOG÷ÒlVþŠÄ²¤…kzã"{¦þ=Ûd^f€ _ûÓç>t9Ô¥BT(ûŒ2x꜅ÒMc äMã°Ýnq:p<ìÙþÇÚZŸÊs*Ax,ÈÚt ±Œ,¡· ‘Jµ+¯ùߣØ2&…’×{]Õ&s®–R@Ó5è]ƒýáˆä#H±­ZH„(€Š$è»…³-´kd0̓Kï#bP¸»ûëXµ« ®¯ÆqÄ0œp<í¡”XØ>·Î:R&x0鎕 ··×|nÕLRÉϽ³ åÒkÒl£yAÕUÿ>÷vù—V¨Ä×ëì‚z|¡ØYYõ=·¿^¨½ê¿«m†­y^Í~ñÐE÷üpáüq—ˆÁ³œÙ“ëì´Ø˜Ì¨@’‰9«€ Õ–98—T—ÏÝŸ…æ¸rNP~—sIñ//ûÛûýã4aFÜÚla­)Vlj€v³…6 @»éqµ¹‚3–3H1â0Žl«vŸxýæ ¶Û®ooðêÕ~øâ î?¼ÇÃý{ì÷OPš×¯ª>ÿzí­ †µå¼ŽREÂàûoš8œµ- nn®ñêõ¸¦cP.$œN~úé'<==’£VKµD&uf cGt]‡Ç§§°áåx9^Ž¿ÿCçt6p<ï?ïÞüð=ðÇ?œp::„ØðàVñPˆtHÓC„ÝÆã?üû ®¯ ‚Ó ®±€ RŒ¥™Ì†ŠÑBÀ8y(Çw’͆ÜÕ ¦a´–Kì ’Z Ûó°¡òÅ®Y¿µµ 4J˜ßyANÅ[yQ4”rÃH“Ÿª×§¹ñÁ:KL1)7´JPjö¬‡ŽÊpÃg­c«Re8‘×.!u%ûTÌÞaZ K°¢ 1âkJ`S)o*«)•™H‚Œ1{ )Þ’J«Ef¿—.þØy˜„©Ó¶-+.$ÜÖ‡(ML#V98p”ËŸJc–ýŠ+ ;)%ŒaÒJÂɵ†ÉÈ{f;äÐ(cM±ûa›‰¹adG*LSkš„iû²m³®HÌ»¶…¢„®m8keÈæ R pÎ` žìÎr«Ö\BUXC)™Ç©Ê>LpU…¨‹\ ¸¦ò@ŠÑ'a³ ˆ­;”Ñ)¢±®µÂÄr¥¡l»¦Ù@iƒÆòýx<"ø A§š0xäÃT€­³…Ñ$`‘4V%:¡q¬Ê±®b<[¥ÍÞžÓ4!ÊÚ*žð­ƒk\ñEfé;3^ræ@±Ãˆ<ÜH„™žB° ì­=NNü|ψòŠƒ²cXÚBi±áëBPÊB›ÙÊ…âR13ÕÌÔSsø]’0B(Us—à,ÏL)?_«¦MÉ0+R‘诙f‰ØË7ŠÝÃÛŸÞáÛ?o¾ùDmãŠB ÂJ¢ÈÛû÷ï9ÀVî±|½¨ò]Uæ§X³Ï5o?kÌfµKùo¤äËÍΧ^ݘåŸìûžs^ºNk ²BÀG?³·¡*öç<¤Q˜Ul“†2Ì…\Ó Ûô8<í1MÌP³‰àƒ½Ê¨‹C©‹ÊÅ®]•?Çâ=[(¨x  éZ´2ô “‡Ÿ&DÏI¤„<|d;!kxHÕ´-gÕøÏW€Ž),,â>r{˜ÿåW‹t ¹öч…‚¢8/y¿çŸ){­‡ªI!À5 š¶{¿Ù"H—­.•dVœäµo +Q!*¼yó_~ùœsèºã8À àÄ‚/gmeæuG.œÛ\[y?Õa¶-IbW+GÙÐ,l2Ö–=9T:­O ñ@*«(2(1Mã¬jÈÁ™šGû>pÖR*r½‘Üð\Ä1f`€äûäçZÎã'¸l‡D“¨ÁÀá´Æ„¤EaLlƒ–í/µªî/bÀ#+䔂2`µ%šdx˜}¿ÅvÓãp8€çSYà²ífÀ\¬{*×gî—5aä瀭Ÿ«ˆX+>ö^¿þ¥êŒç¢/~ÇZuP“hÄ^oS"xÏÀ|Í ^~Ôù3° šï™…Mœ¾l¥T+u×ê®9Ž*¼‰Î@JVLåž"Æk B˜÷¯¦i°Ùtb•JFP~ kmÂ9\—в^) «•ÌOXÄ^píSÔTq*”ä!Ôõ«ESR[²¦Ak&ÿ×0n¢  ù½|âŒ#d‹'Å`J"Û»×øú›€ÛÀá4r&)heKè»Ò@ßoÐu=noo™H¦RÉGÈÏ Üok¹æDTHI™¥•GDÏó÷Íä­zÏY¯a"*†¼H1%üeUÂÜ?÷lXÏ—ê7õŒÕ×ç(A?ÎfTmŒ×ÀÈù}Ë  ÙiaÙ'3/ ëŸ$§pÎÝɽXq!x†Ðð±çê³Uų?« 9ÒG&>O“GL€6 ¬kaµ…QŒ—)mÛ@‹òT‰m•RxzÜãèGL²¹Åqÿpk¾øò ÜÞÞà›¯¿Âþ§Â01N#ÆqÂÚ‰‚óPhÎÂR`£.ÊZN™,—Ý*4j÷‡ yƒµÍÝ›7¯qss#VJ=Œq˜¦ ûÃO{®‹\»¬Oêó¾pNPRóâlx9^Ž—ãïe˜‹¨üD$°m’3/PžðøLãÞmðÏÿoÄŸÿ´Ã4]!’å¢MY±!’ÐFV[(ÒøÍg<Œa2Pä ÉfºXÔÐb“ûµÆ/ÙÇpYl“÷0#MÌhVy 4UQN| ½ó @äÐc'Kü³Ð2 kÉ@È#öì]¹ö“WÕÀ¨‡V .A+*ùÒL¦X…r+Âi8‰ð`bç„¶†C±•‚ÑJØA†›RÜe¶Cø@Ù¿1´07Š¿´6†­ô<+QâQ_Ї”Y’VXB4Õš©ÅâG©™X[,™»|Þ±åþ4«VŒ^ݬX`ÆÉ %Šˆà0·EQ™Y-Âü7†¦9t-_/kôY˜½cŠÌòIšfs&ÄÙÊ&3:å߆$äwúãl6‹³VVkl7ÆÆÀh—Æj ,'7À½MJÖ²aÊ S‹¡‰/ðÜ/ÊÝ-’x¨"ÍÖesHZ!E~àøIát:²—¬¶PÚ¢ßlKV‡†Âíí-LQ±EÏþéMãàý„ï‡g§ã¡XÃ4m‹Dk(yLÓ Æ(EŒ5ÁÃ6ÖtE×´hÛ»Ý{«ùþK)aò¡4qMÓ ï;l7=¶Û-œs¸ºÞ¡m[4 ÎÙÒèñp*3™Ä»–‚Ÿ0Ž T)ÃAhÃ8á4œp‡ûGaeóP7’ŒÖÕà Õ󌙂…QæRôü‹˜e« ¡HcG4¯ó”Ç@ˆœÉb ?¹c¬A9\wÁF›s f¦ûl3FP” µV–c¦Üû)‡?þø?¾}‹ß~õ€8Œ8ƒ§¨XÇ>|ÀétÂä=šæ Qhq¸5dS5”_7b¿4:]Ö¯“m‹>6(úœ÷|î5.íškéúûe–cyŽgÛ5k°»º* ­T3ìrc]<"jûÃ2¡.ç9¿]‰MûÍF<§Oxzz®ßÂf™»Xieæa“Ö‹0í³áb•¿˜‡È—¬@H<¹ÒÐFÁvÎZŒãÈŸSîãp ’ÀÁJý˜um[ÂË5%$ ­®U¼Ù q|¸ok,îînÑu=bHHšŸŸïÞ½Ç0 ’}餿æ^¸ÎèÊVÒùØl6/`ÃËñr¼ÿºŽÂÌ{hâÁ’Ÿ€Ó øpŸðö-á§Ÿ ¼¿A[@³\>I#“²á‹"$ 2¸ ¶­¡ˆà§+J’¬Ž»W·øáí_ sõéÏß"¤ÌNe ϶Ӊ>bŠ!h yÄ0É3ŠE…‚Aã 6­ÃÕ¶Ç7_¾ïÑv=º¾/ÀTV4Ę*ûƒÆYl6t]‹¶c¡m°0’ ã8a·Ý2»Û: Ç6› Hï}`&ÆÉãt:áýû÷xÿþ¦Écœ¼\{gÛâêœã{Îf¥Y*LÛÓé?~D˜Žˆñ„<æ0À˜€ýiÂèØÆ€qŒ|Bˆ<花Î}P¨›Y~Uþ(F˜Õ‹…ƒ†áaˆVe`T7þ1r¦ Ëþð‡?àjÛ£q¯"Ÿ7Áh¾†a(`CÛu¸ººbä:5Ñlo±õ á3î³g€‡Åwû UÃçä6<ûy+;ƒK?7‡\¦Ù`Vð0`e´.Á…´6`a)8¿¯*ê§òì®Y!ж-ù‡JëÌ”5º€Vç6u# |ÚJi=(S«ïž­–2sž"ßw!„ÒtÃPB•Rè$«@[3ïñy^*¶=Ƙ¢p,ëk5Xù5” üÝæç²Ñ¼<ÉÀ‚ÿÎ, Ë5T³Õl¨‹ú P?Žxÿþ}ù~MÛ€ øü…lOEå9(ôÝ!z4mW³lUè1Ì<¾»»…V §Ó §Ã£ §¬ òå)×83ñ#‡×ËC„‹MÅ8 p„Àþç"å_gëyõ,ªA9TaÏùW ã0`O‹}œˆkN'kÍ#v^ êL£1M§YÕ*J9¥(fÖ½Ü_)–Á*]‡dŸC¹‰3)b cÄ|Tpeʽ+¾2)×Р vÈ:×&fàE)άî*„ÀöI^l”Œ³8 ¬"4ÖAkƒ¿üåÞßж¼÷d`P•7æûOk-ŠÕåõÓf2^w«„¥L¾¾Àš™OÏ®³5ؽ´k¤O“+‹Þ‚•[q^Gjy=– `:ËYï±™WW^ª]?¶ÇUj0Íë[•šAiÒïöGb×6ض E$X£ ´ÁÓþ€?ýñ[øH¸<àÍo¾„mP‰`¬+QˆÇÃ?þðþüç? IaÎI¦!Ä8Ô¹Y¨À’žmVà.Ñ|>3A ÷à!FôM««-nnnÐ4 Ú¶ƒRÃ0âíÛŸððð¸x¶z¬¤R+¥b*{Ìf³yÉlx9^Ž—ã_ÇQTÌ•+Fþs že9O{…!(x5ÂvZÐFXôš@ðØo¡R‚s€5_A!Áè­“¸Ðç].‡úbúþº@ƒBÙж-ÝÀ4l³AOs“Vˆs#”hšJ‘åYq U VPiZ sâ¼PÉHw~̲_‰ÒXÖýTö9ž­ù"¦ ˜‘–Ip±×nV €Œ0m¦0ÂG)xhJ<ðI„äbü$f`@>Fg¤(Êâc­gïjE3Ó¢é;¼ÒÚ3ÔZhñŠ…2Ц) Öè«âõW¥®X$‰b,QÖUs.9¯ ås«b¨CªŠ©HI,`‰U¸^Vg¤…ä{V²P" Žbði«k,Œ61°åXˆUC ‹jÊÈ/ƒŒ1A)öÿg0e.¾­±¼ÞÃÝÝöO躶0Âú®e+3aÕ[£…M¨à¬-ƒ=%¾¤uaNBûT¨3tØj ­­¹XÕ F706•û“bq¥‫ë[\ÝÜâp<Â(–¤ó@?7¼AÀ¾‡‡„Èç[i ivã, )WHˆaàÏ!Ìѱz>‹?Ͷ3ëa&¡ImBlµcQÚ ÃPØöZ&9 ÐZË&Ù..#¯UÐâ¯=x<ó®Wj¡è´âÑ ­ªýi¶Š†º®+÷DVo8ëà\ƒÝÕžžžø¹1 ¢Ô´PZsp}ðx|zà!ŸMŽ#ûýÚ¶å¬!çÄ£:±ý\ð¼çXƒiñðp?ŽˆÁK6‘-y.$áÉÖYa.ÏD•ù:ž3Ssèã p söBŒ ‹Ö¨ã„XË ¹c$Ž#³©SˆEŘº\õýÎ9„ľÜ1xf(ƒ¾ëE0-˜â8n¶ Rð³bôˆÑ (ÌžÍéaA ”• ©d²i¥a¹ 6Æö¸¾ÉÖümM¶¡T3˜£•ÒMV1ÎÖWÙRGk]l 3H—×`H[ ãÖ að=ÈÅtº¼®3`—ÏiVÞd{€@~ÖÁ(’`iÀÝÕRHO¼ Ó#|L)") *dZÓBÙd é Û¦qÌ|7‘FiˇTÆl­£™q¯`ÅSíIº"£.†œeeC T€•™‘€ÂÏë‰&k¶/ŠD=—oì×<{£?Ã>É×ß&‹`ØÛ{/*ºcV©-xï´xNB¼SCyý®ëеmå£M%ü¸°z€x’« ýj¹¯Öž¿åÆ"Dý¬¡¨- èÞ³yÖàš½0cÇÉc»Ý‚ Ð¶Š[2%XQ@0–×çþxä܃˜ÆA'^‹VìËœ5UC’øz§Pbù«e ÁØt-®ú·»n¯®J˜F¶öhº›í®m°Ûíd È×­íZ€èU3–ä\çŽS>zN)‰”79:ooïXÔB]Óƒ®æ"ÙXfî4 {ËcØ£žg ‡n§È¸Þ#9§ ›^aÅ&Vå$¾Ç'à#¡u ã8¡±„a 8'4΀`Já^ÁHUÀ}µN2Ø i*)‹¹ÙÌrcàåAHL‘ˆAMbÑýý|ûÝwøâÍl7W@aA¦<øôô$¾N˜Ázfý Ì‹ê¡ü¥Ì†Ùç_ýêƒçb°z®Ôƒ<|¹dÐu¾ùæ|ýõ×~BrqAIɨÕà„.¾GŒ¶QŦYU,²8%'Žñ„#¦i‚kg³¸ª°ÈpÖ»efér rpÐxÆ6¡ è-`yàE}ÏVA™I+ë~f ÎŒó̶5Ôª¦aÕŽž¯y…Ì­ÀØ¿¢†ÓúlmóÐW{ÄzHÃÏD»¸~Ù–!Æç6› v»+l¶[GxÏÖRÖY4-ïÇ)Nxz|¥„Ýf[öš ‡Ã‘ƒJã D$ÏsfºæÁtÓ8¼º»…Ö Çã~°Ýn*Û‚ę̈OFóóA+],v÷Ze–D„ÃáPXñy>­Ê êâ`-g$)¥0Š|^ü¼g Š…Î942䨃¹ã0N£€ žpuÅ?8fPkœœ÷X|9,Ù±íRRòÌ¢NH’M”ŸÉ1Æ€Yc pru}‡¶±Ž,•¿Ù ­8(“8P,VL%[(ÛbN'±”`Àœ"ƒÀ)'ªÀ|PeÿqùyXß3YéQοÔBJýuyoŸÌý\¥ÃúçŸ÷lW‹Q߯ÑóÔ#Ïì Ÿóºte“­â‡#¬ë0ù#-„•x6D¾¤’û¨²®VÎU¯•÷¦B¢’œ„ú94ÿÛ äËÀd¡Ñu ¢!Ä)°±RVn«Äý«ZªÎ,º*…Û_ "Ñ™³:;gË}ˆ3Øb$Rð>±º!&±C圙®Û`Ûï`m‡¶ß@™1ŒRïÊ—"¶*K4Ûš^–çþ$«¡êl 11~ŽP.~ÇsÀèùÀðZ}éúd‹Î¼óŒ`ôK4¤…Í¢Ösóuö~0M¬&©sÖ`Ã%e†ÊL¬ {òù;g%׬ìªk©ùúQ•µ¤a‚™›Í@z¶ü¡$—îQZÔr8»Ï>kDUžmvu•Â_•~zð§q¢Jú}Dc 6}›ël7=nCÂé4âáþ_<<â7ß|¦ï䇧žŸðôð$½oÀ0pnƒ–“ºï7†ŸeMÓ¢iÚB$™¦ Ã0€¤6`2‹Ö9«/ÄXÂÝ™L0ᕻæïpw{ ç|ðPÐx÷î=Ÿö8NÒ—/•_1îßeÿš<ƒñýf]‘]^À†—ãåx9þ>š÷šé•÷½X)@' Õ †ƒGã|õ5ð?ý;ƒ×w°Ý€z„†gAš6¶/Ièzíî€ë›m#RÉD@åщ_50sÁ¾^F3«‘uË¢AU …l;DÄ 3-L%'4Ì6Wœ«ÍlÁS‘x`83ÂÖEZþî¹i+Ù ZK0®RÍù I63ï=âR=B«F„á€)LHq‚ &ØHè¡q£4vZc×ôºÇF+4U²ÑºXGäAÄŽÓ€ƒü={¡6ÖBkgźՠÎ!EñSÖ¹O£J‰pôC ØØ'ÂÑhLÎ"Y ² à6°M®ï0ùJw0ÊÁHƒM4{ù#A'g¿îµô»^uPæyñ¨J¨lfe°a>ÿJÂk³·sÎtÈíaQôÕ,ÚçÖxÉckp:žÐõ×`òS±±†Bˆp¶]08ëu²Ùläµ~â2.šhͨbÒ< OUE)òì”R)ŒÒó S(Zøõ¯ŠËßw–'ùw1ÅRÖã!l·$¥ A°–ÄgYÔÊh ãnn_øžU4Šðpÿ„„˜Xå‘DšËö1l¿£\SÄYš€Ö5Øm¶0Æ`¹@ ‰ <>=áæîMÓÀ:¶HÊC“\<7,4ƒ©˜ ØÌHcàŠ×X ¨!`<¼Ìx Ü &RUcî`48üàêÖb·ÛÏuSÖwbÖ*‘Øâ$XPÔPd¡©¢GðŠ¦Éƒ¤8ª²·m`uBë:ì¶ !)9dãкó0¼ìÍD­‘ªbßC™ ø@ñ!bœ‚¬=#«±?øþûðå—_¡ïv¸»¹ã{1Œ“ÇÃÆa( ËÇ"X5Ékû‡Ÿ3„PZ;¨õПôQà缂ë?¯}Ê/5”ëýåKå©x[×ïáœÃ«W¯°Ýí °x@ „~ÕÐæu]ƒð Å„ìƒÆ»äõÞÃÉóµë:¤q<ž0NÒÓ®n®™9Ÿk”\®”šeu¾êá‰~>r1| gÎñz¨ 8 —--,g¾äïX}×ú|3ØgÊÞ¹nî‹åƒÜv”üœgÙä/þsVFÛveÿÉŸQë™Ô°•I½Îº®Ãn·Åv»”ÆÓÓ¾ä54 «R‚'xïño~ÿ{üþwÿ€7¯_ƒp<žðöí[üóþ+Þ½{‡áxb¦¾dæÄ0… }…ÛÛ[t]£ší)΃@fîg03³OcQæ)QuÖÁÌ^N¥ÞËÀ}¾O L±‰Z¯´ÊP-kölÊöymËv}²wgÛ0-™ {J(£ÃؤR©ù| Êò1ÂèÀ i:¶œ”!,çiAò’Ø5iȈ}@ÓµbÓÔ!ø©"´¶˜&Ƀ™×’â¡›khm$« V`•¦ŠIà s5hZV¨Æôˆa8IFXäK €îÑÚVÔ¢X)6` úÚ¡Ô—T­kkm±9c{³Yñù9ÌêgÚ:×å#Ù—ò. ÙŸ{.jPÿì`ðÂ>uñyPS©d$Ñâ³QÕwñ½p‚1Ö6g™—ö§˜M³=\• q ¬YªK–‚†ªû/ƒ¡1Eø0œ&Ä0!†=û¾¿b@ëv­^¼çÌœgµï:Ï£(VÎò8ØŽ®¶Jºdõl-,T›—ï3p8rMzš&Þ RâW¬ @x„1>”u%‡ŒUOº~ #×Ï ø¦ÎεRl‹\Å£Ì ×*þæ¹ä¹ïSpU;ÒG ïR¿¶¶m­?SV¥§3u“º(^©×XÍFÏ{b¶›ÿnþ}öÞŸß_ÒÁ¥ãSud~æf `î…RE¤P+¢VÕ³ ‰Ð¶-[ö@1ê#VWçÏ#TöY?g¦RÛS9XãdXŸ•ý „(D2… *‚µ‘Çà ‡˜°Æ ·›ƒìØn^Ýáá¸Çöú »Ý)ŸÆiÎÊ ‚ìÉu ËŠ7¾OÚ¶-Ù[­Ôoãp’û Ea—³Cåæ £›~ƒëë벌1˜FÃá€wù Ûúéô˜g!X©gÆqDJ WWW¸Úí^l”^Ž—ãåø×8¬eV †ìÿ®0œF€¶èZ‹ßÿþ¿ýAß?a»=B™1 Ø@¤³ŽŒNèz…¶‹h70ñraó+«ZÕ«ƒY>yøa•…Ñ š¶&ÃÃthfc« ´6½’"ZÕÒLS5Ö!R‚6F;ãVCPµoç\ U ¯ .æL ÌßÌ(ŠžÃœ³/;i '}Ç=âáÂé )L°É㪶ZáõîwMm±Фˆ†+²B"T\†=–Ð5ggË5ÔJÁÈ/•”™õqW#Íç,9…IQkøD0ð#ž(âÃxÂ~q8$DÝÃ+‹{E@³AõÆõìu¨4’vðcBç:pæ³.ûºa¿4|“2Ž­%.W¥%X¬U˜_O º´)ö9ŰKš­8Ì’ó*ô‚™“Y›µmÖúúçÑv»-Î: j 0 #³& 3Û›è—a.j®®ª ÌˆÍf;3h$,w-¨ªÀßöMšæü‹*â,ïå#MÖÜ,$VÃTJ ¥xm`->ÝÅŠ™ JîEÍ÷Ýpus‡7_þ P1L8'¤8–ébawjÅc£4ÃÁÍVklº­°Qü8aN˜b¡IB×÷徆»ÝVlaH,HÀ>æ —†Ùû¾€²¶(L|Àé4b8yŒS‚Ÿ†Ñ3ƒ•La±±Íˆ†6 Hµ]¢F°Îrž³ÒLp£ÄÍ77ù0<4ÒòC´Ð°Â†æF]+ k4´âëÐ:‡ã6˜|Ä4yÉ@H0¢ÜP• Œ0‡²:!Už7bµ–;YDŠB`OãaÊ Éœ<ÐF<íøî»ïp}u‹›ÛW APx|zŸ¾ý‰Û´hÚÖ5(y;*±j5¨ž‡%¿Ä¾hõ:©lŸù÷þÒm¼·ëÓ\•¡hndÙÛå«mú®Cß¶¸»½@èœÃáþ¦á„Ó¤àÅŠ+7©Î5ðÆÃ9gçÛ¨ê;-¾k½O|-’±è·[$ð€:Œš±-Ã} ½¼6ô|Ì ØÀ‰£p¶1â{ ‹°ëEåœa~> (ûœ ÅÒl5h/ —Άƒu6Â3ƒš_^ÃÍMóßqð!$ßn7h›mÓI ´AbLgCUk-ú¾GÓ4ð!áþáûÃÆ:4mc88†€×¯^á?ýïÿ ÿÛü¸Þ]!~6üð㸾¾ÆÿñýŸ¸xÀ8ލMó°±ï{Vˆ;g]¬ÎÉò³†ê²T×±rŒ)¶R$FŠÔÓi(ùœ‘¤¡Eù”í°ª½Å`Eæ¤Ò &i~QeÅNù74Xǘd ¦ ë1EY>׉"%ô3°²¤ï:l6WpÍ!*OYéØ!FÏÖ¥äJæÒóz¢DPv®Wü$„•5ª PJ2¸Ø~%lÞ§¢Þ]>WtV¤‰}(ïbZ¬µ6[@‡Óé€ÉR;ñ ÇX&r(,m[.ÝêÂ}n­0°²Eü¯6¿èÙý1¿~½”AK–Öå}àS°ë÷¬¿È¸ºØÏHî•$_Ìê9*6sëû ü ±óÖZÍöš]×öèº-% ¡øª…âg>‹ª,JÏïss€ð|rOqùyνš†±ûýa: ¥ˆˆùÈ HÉ@YiV³Í 1@—‡¸‰R‘ë³L% €JM†gÀªç†åT!;Y5;×4¨€p‰ˆ®ˆm$„¥xŽm„P¢K3Áû …àSŒzÏ×É{¶ÙÀºk]!œi+µeJëì ù.üœ¬¨åù˜×Ö¼—ÐG@ Z­ìyýsÏ39çu“•ýë`jV$Xc×'[–l¦J]–ÿž Kx[“´Òg*γúã¸V¸”gAéø<”œ%­Øžvñ^yo“g¼0b"cA ‰>ãš}Þ#<7âïË!ÍF3莅*`CŠìN2kÑÉÊ „ŸÙ‡)à8ÜãiÀ~{ĦëðýûŸÐ´ Æà±Ùnñïÿ×ÿ€ÿåßýÏ0P˜Æ )¬u˜¼ þD¨“3*pì×Äïóð(}:`ðs¿õpêS¯Uíj;™E818¸2Å À³Çg±í;ô]+¬¹5°)á ÙF‰F¾– À”qš`)¹@ j=«'!ÌLg-³óŒ…B¿Ù"Ä„Óé„ý~#6› š¶=­›{U33ÐíÜ*fƒZÙ01Á³º²Êsxv°$€†S€6º:ߺìóY9•ª³+ju…þ,” ÷T24“÷o›ã!x s†¡äº”ádJ yV´m+q-ƒ¹§~z÷ï>|)×tˆ 2yóú ¾þê+Ü\]#xý~/lK»¿üòK쌧»íV”–Îì¶Ü\_‹:Œ§J³=gi —çF^áJÏç5Å‚ði(P¤^Rbû¥àù¹B„6–ýêD° ÛûÐ…A£Ñd,[9‡Æ{ˆIžŽ±fÞKT¥ö‘{"’÷fËcö†N¬[<41FŒ»›¦åº$1X=N€r Ò2lgO½E’b5ÜÛ@ +ª×e*/L¾øex ­ ó@ô¢ÌÿËÊn8IÈ:” UBß_ÁˆâŽñ×. ô½†ÓV@2%öj´ <,|èUDZž)‹ÕOì FmŸ FýÜ{hÙ8@lg•é…',f{)uQUñQe]ùC]âØE•çZmëºx´¢¨—=N•'%Bô¼¯³µ"ç£LãIêJ©g9ÂfiC÷̵0¯Ãž-$V'5˜Uƒ:LLpòUöÚ~¤òó1$¨RÛÆ¡±FÍ©a ÌÞŸƒÓç}™JØyêÖ€×ÚúôY²ZæARQVe†ºÂLF‚Ò ÅŠøH!)i¤Ä@ˆQ~Vö³À8þ7!F¸Æa»Ù¡ï¶PÚJôëšBuCt€Ô‰j—ê‹[g­×n{pÁNuvê3*fFŒ’E+RJé=ꌄ:l¼fçg†zýy3èjÅŠv &ÔÊ¿Kª¶¬XÌ5Õ§”£—ÖÎPAITͲ‘y*d •­q®( ŠåUZJ)<PÕ#Nc¾—u!Ëþ9Ûeî.õ»1®ØçBîq&ˆd8j•@ÆŠe-Ï„¢çlºÁO¡ 5×/Ö²ážè\ƒ§ÇG<íO8 >L! ¸ÈsÑ8®ébŒÐ†oè˜âL1|^ýèá§^úa£ÑGPŠ˜q÷’í…%oiwuÝîZ@_~Ói%õˆ˜Vz£ºN,×RkΡ ì±Ûí„P/`ÃËñr¼ÿzŽ”4%¸Æ!F+¡[ M×@™¤„i 8FܼêàZÆup.Ãÿ{o¶åF’d ^ÑÅ̰¸“Œ5»fªºªçLÿÿŸÔóL?ÌTed, 2Hw`‹.Ò"ª¦À##«z^rhçðd ‡¶¨ŠÈÝœ½ ¤!)K®­H¨±1ôŸñμRè°ÔTøu€NÅS7{À {:‡¥ñ‰,8' €í6N™U.g´ª&Ü*½[Yƒ…åRdà©ÊêVÑb+R+)ˆòf¸d­« Œ’#À` G/`ž±„3Χϸ|þvñ„¯¬ÃwÇ#Þy‡cñÆìÓ‚.&Nµ!ßœIÓ„\7Å4%Ø2°*ƒkÝ@a¨‚ÖÚÕ‹«Q@Ëàr¥ 6„N?I6„¯||8à<'|Z"Þ…ø5ÎxgœÂ ºø€Ýá ºî( ¨!ä\šá•‘U®UD•š8ç¼z7M_5LË ¦ÆsÖ®Xæn‘•KH·qB+SDÒ¤•饬`R¤¡õ'5úçqÅŽbP)¦å'õ0u–нX e ÐrίJ‰jya¿)H†ô™0·OZÃÄ#¦j†nè Ñø6gfXçaŒU 'm°7 j@äÏïÃóËß|ÿbvJÎÀ¼d{BíýJÃneî‹Í…# ³Ns=Æy„÷2ØX–†,b\p:p¹Œ8Ÿ.èw;<==ã»ï¾Ãþp±y÷ÎÛʸ¬v™+ÈÀI¬Í8G-#–eÆ<θœgœÏ çKÂù±„Œ˜@@lÕœ3°LðdñéÓ »Y€¨ee­“!£•Ñ¥˜N)Êg³rO:£ %#vTÄd¦Ef- U¹ÅŒK3)`Im¬‘´™ç¦ñDmœ6÷g '%xï´ ¢È0À°ó0°Þcš'tG׳'2þíÏ?á—Ÿ~Âþ3ü? ÷òrÂoŸ>#eÖÀ:ɺ@h5`jëYk¶~×+K¶ì1m;ýZ£¾²@¯ýçä>cÖTf"®Ø²· Å6„;Wu ‘ mv»}ç«9ãáx§€y™ÅFFU[»^T}%f³æ7 Ä6°~XÖM†,zg‘Õ£9iجÓçÛx×€Žw¬ºÚïÙ®&›|‡­ •õîz(`¶Ã4\½Oð\²@JšítÊ­,Íò¹Œ‚Þ5Çá ÐøCÊ‚â@ü—ŠÂ-Æ!,†«Ôk–Î~·¯Ä -êÊiš°Ûíp8ž#&ŒóŒ¿ý†_?|„sÆ:0“Ö%úÓŸà½ÇO?ýTs ÆqƒððpÄwß}‹_~ùE²².£øýç ë;<<‡ÖZnج¶D«ç<6ÃÖœ³œW,z~Â"Šº¡ëáœÇ´Ì˜ª¹_ŽA‹ìµ1¦f¸% Ã*_@ÕJb(®÷NæU!èÌ™aÈ«m “S •ÁPÉá+‹6ù2jÛLQgpZ…Z©m½æ\Å~‘¼£ LlÉKè|k,ÉÞc6ÎfÜ–j‹tx“1 CU©,! 7fc¥E-`A¿‡/\Y=Ò}Û¤ÖßllòèS¤þpÿ~8mó†ZÇ¢Úî´¯/CÈÌ+@×B½W{#YSDVrbº%è´6[µ_L+SYë]æ|eûgkÝëô>;ÕX}Ñ‹:©Í,cf8²²N€±vÀã[\Î//QöXKè;‡]çà2Ãp„±’u·^¿TëèB—õ.y¾w¯Ðýÿ«À×õ¦QéÖd.kŠUÀ”?þ!å &‹Ä“óZók¿¤÷]× °Îa·ß‹…§ñ ²ˆ©ÉPОbS;4D²6cMƬ¦–f›ÈÜZ^Û¦þ^Ýt_ÕÐ0ÍuØ4o¬ÛÐßëçbßÌ«¿7„€¾7ÇËU_§k¸¡Ú‹ÿXi>™„XÇ«‚7ë5hm—î=÷÷jŠâž 6²Ï ìd Õ,À ÞdM]ƒ¿¯ÔºOÊ}ÙØ7¶Aí¯)QŠm£©×jÉ›¯‚¤…(PÞÙ†1ìXæÞõ0È8çbI¼\N`dX Øíþá'œžÏØïÄjsG©mRÂCckEÕ†ÐZ «D;0Í3ìå¢ÙSLˆ! ¦ˆý%°7• /’â4eÚp+!·u–Z«òï!ÌR̪ÏvJI6p@1MOx~þ„åò.ã"þåðˆè¼!`À%†KžÞdX­®©zÞJ‹7õ+Xë¹5ìMŠn ƒåOe-˜KHCK´•÷2„yç LÀ¾±_ øeœaæ )0æFÚeôÃ#raé‘©Cœb×°O²^kÝ S™ûP`¬±4a£5ÓÊPX‹GýÎeЧ¬±•õaÒ¦ Ò Ã@Œ"Qí ävÍM³»-Þ edV–¹›±œè4¤q©Ö:œ“¦q³Á0ô Cj3EØŽÂ:Ñó"¡Ó Y_ý¾fmx¨°–›ÁxmÚ…¹Ÿÿ Sœ×ì“rc•¬•úצºÜ_ë4XÎe¸Îã|aàáLeÈT†Aû}œa‰H%WeõÕâ:§,7CåÙÛ8º~‡Ë8¢ï{±Ñ ââ—„7oßJæÁ´àpÜãñÍ£ É;ª¬âNÄŽƒ°>cBŽÓxÁNG¦ü­¡Â­uˆ_õÊn=Ž‹ÿ°\³,6?ÌbÇÕwȬaòYš[C}7`è0€ËéŒ UQŒàÌ蜗ŸU6un‚¨oÁ³‰Éˆ… 3¬sö;\NgXŸ/@f°ÛïÄ£ÝÐÖ oÀvRìžW¾å-3‘îû½ßS8\ñ-‰asýi½˜¹±ªªC(Ú83ý>Ðpoø±2D"gPÒ{À0X·Öœƒz.2Wû›íA†2‡Ã‡ÃAÉ1JÊÓÓ“ÚUœ•sRÐuÅà|>ÃdF\„Qº„€a7ÀYƒÃ~'Š%U†¦ÈÈ è=¾z÷UÍÐI ×øï·ç· cjü²9ƒª‡sZ½¿YíeHÖÊóåŒÓåŒÄ s˜‘8ɰÎ`4ht5ö›eÐ¬ÃŒÜØo1Öa¦50Yp«b¯öš1G02cØíEµ è€Â°šCˆ) #` ‹ä†‘[‡=ÍýÅ̘ƱZl„eÖ!pjÖVà‹êŒ<Ǽ²†³Ùì”E\T_:T{4Ðõæ%"Ä—ËX•Äk6Ê«Ïn»ž—ß]Î7ÏUµÆ¡:ЗAxnÀCx9÷{- AWOï•úÍ4­›uD¢œŠZ&oÔ\EEµQï6ïYÖã:.Á|Ø ªüC3Uµõv Ìšµ®’9ÅM_ÀWCIMÂÒŸ¯ïg ޤv±Î¢µ‘]­˜)&Ý»ŽÇGtÞâ©óxÿþX%ݳ<úާ ÷pÖ¡÷Bœp¹\@"«×}&×û*“(¡èÊß;¬—Úܘf¯i¬ùªG}ر>gœÅN³ë€ BF6k<Ò’°ÄŒÀ@¬Ù$¹´&`uYÂþpÀññð«êA"%ãj,ªè&kâû¾Í?(dªœùƦH€M^{¾+î“‹xc#C›ðæõçQI+-hËWyJ5Ó­å06õL[CmpQgT‡€ëÏ™SÜX,µ®-ÔjÞØÆŽî‡AmÑ7u$J—=ãrú 9\°7 ð/ü³søÞÀ `É®ç6å«âÁ”7ãmæbÜ4½MqÞzˆoØj\Cr×f¯=««MÃY¶Â¼$g19 Ž €°ÌˆÆ‚œ‡ï0eˆXß>Wp¨ÊoI|·¹f¬¬Tk«‹¬(ì *߆ 5þ¸hÀ†@»Ñ”zÒZÍ‹PæNNujتMèê¼z/À@aÛg–"4sª¬ŽÚô[a•ŽÇ¦yo‹Å¾2°–¤ ´N¼È›!O )o¥ùf#  ¶Ö-䮹͵U‘8焯deȾzq¯M±çËOÏ'ÊKêU­Šˆ®ï— Î)P.Áõ¢lpNxZ0¦ÄŽ2ŠŠ¢ ž¬!d’P¸¦é3†nÀt™q¹L˜§ß~û­49®S›()1'PN ÀiBÎ3ò2XÆQ” sÄåy¶–‘SÆ<ÏRß +@H!"g†ïøn¨Ê Q](«Ø¬7æ4ª ´ª’´!ªärcªÍ÷N‡w­ÌÕ¶Cñµ¶‘óšr°ƒo×/Ù©8弯êëMN.y_Å&ÏÀ»»aZóœAÈKÄâ"œËèíª~º£ÑTA«ç¿Xxô}¯aÝhm5Œ»µ+ð cýêï®òz*Ó›ÊÀ°Æ¬Î&+E”²æï¸Ño?_ͺze[gM]ÿ®ýøï%ãRuAJ ÍçÏO—& À5ƒçܬkÐ0šì*êÍb*½KkÃ)¯Êu€XêhÞ«¸Érâ ™I>Ñ¿œë0 ;¤p#ÀYù }×Áwè­d¢€œ—PÚ$û)¥+$?ËçN)ÁkŽ5VKµ÷"ˆ ZSÛjM¨ß!õ‹^:c=z'@©½«÷;CÌŒ10.ËŒqzF`ƒÄV¨N%»À8€|7`Ü£ë;¸®CLÎØÊøçÍ3ËUv Jc«º[Ñþ»Ù =sm ø_o…›È#Ú‚­Ÿ_ëÃvæ¦Ç^Ukб¹yªhCÈ7jÈ›K ¬Uû`Tgˆóù¼Ö«j£m¬“µ!Ÿ…¨'nÐìXY¿ñîëwØöõÞ9ŸÏøá‡0NbŠJÊÃf¦Pê-ï=¢*ÁRŒØ Þ<>bTpô Øðåør|9þ®†²0žNŒ—§„ÏŸz¼< Èé+„8€L‡ ƒL€wö=é#ÞÿÈøæ­Çñð¿ƒóW°v‚µQlA8#ÉOwZ°ßÆógÄ%Â#‚õ/€aeè›Ê,¹fúü­žW ¤¶Ä$ ¸ÙÕ†×ZÒ@Ô‹ž†Z\V¢!wÓì— %3Ð9{Õ°¤æ³•ŠGšdkÞI¸µÎ8m–«$@Áœ‘cDŠ"C‡ÿe‘—†ŽøÇÝÿ›÷ø&e<¤Ê"Ó“áé:¿.¯c¥~¯p¼×Õú¡aº­}×À­M‰Zq£ȼ ¨Ž–ð/bBž&LË„ .˾­l‹í f+y¯2ðµŶϵpKÈMÁÆ–¸2(j3+^æMá‚ݮC IϽ€2Ä…I—¥Àk|;Iq+©ÑrÃò’qŠ%×âu`œ&LóR‹§ˆFDHªFyxóXmA ã»ø‹.k­°ßƒëd8{/*¬^ÜXÃ`e>þ5vî¶p]k™:­'¸¾N>ÂþLL°^|È??=Ãw=†ar{,Q…놌sú“Õ᦬iÎ:ïá Ðy£Áƒ 9qum’Ümõ-Á¶$ ÿ”KP²EÊ@ß°æsõ]–ÃÎa¿ë€à(c>Ÿaxñ„gä ¹f„9  Œéà¼ENI€6”‚}UîÈ“ªÔr@Θ“6ì%œ0‰ÀÖ"Á4"sBßw"‹î;Í`K°~‡~Ï ç±„„Ä3YŸ²¼o‘×"í¹³Úå –+AÊÚUfa}þ¬XÌW:ÃÍÏso³‚)D¼}ÜãåðÓûøóë?ãeœa‡È;˜®ÙYÕIë@IX¯êš×ÏMƒ}o¢«¸Ã«{ÿºYÝìQ„?ÁXÃ5oŸKÔn@Pn3`°LÎcÖhL0Y^C.X‚ú^K x²Þõ»‘%S!.Txß!qÆxÿý®ë*f¨QÉi¨.« RýK³2ʰÓX‡ýák-ÆqDŠÓ4IãÖyñ×/¶EWç.«H­fâ\Ù+ñ_!3¼fÍtø¹¡t^_UoeÆîu øm¾Ô ¤cÒý>“FRÃãÇÇ]×5¶&Œ¾ïñøæ¾sbÛÕ乴֗ЇҼW‹(ÊÊ6µ^“ûª"SÂ6%Ì1„PI^uce?à²7— Úæ3•ú‚A›ë$õ‘O!ga+@΢ïztÝãyDÊ¢šY±D±2 ! ¤ ¤–< ±Â ðÆ*à@FÔ‘Î Xμ†­KÐÃáˆyžî¬9í× %n¥$ÃaìÆÕZ­X‘£Ù ¦Ö$mx°TMYÆÊušT”.w]/Á¾K@6òóqÉXL€3^È/Jö®2X´®,¾ø¬û±¾ëÔZCÈAbÅk´×ŸönÀÄ+ж<;¦¹ÿJÝÏLh ¼Öó†¿úû_VÞ±ŒQ§Qúÿùj•¡ÍËKö ë_Pc‘™¢®ùÆ ¹*fãÐu;8ë×qf–f½WrÍ­«hR¤V¡h€!£ÏŒÜ;¶‚P¥¦N)‚‘êz î#|ã‡o ԇݢvØޏœ!„ wè`(ëïôèÈÂ;‡yŠàT^òù—e0,õ¥;V¾Eņ›paš3Ó\4SìÖ<:ßÃÛNÁõ„)ãÀd€”.¼œ_Á’Ù@̉!¾ûä1ìÑ;ìö=Œ5HYÀÛl³Þ ×ê»ûÏwk#*U9Ïö¦V¹÷3[p¡ý½W$¬»VA[toCvÝU6¬kpÞì¥ë×Ëk/GÜô'×ûú6´úö3ç qï.׿]Ê!ÊAzµ^hÏëºv–l3ùÝeU~±$“ïWB³mc c# Véú;–V7d=e¦ªWûéTÈ8 ðS Æ88ç…ÌR¡~»™Mñcî]4–ˆj·ä\~ Lóëë4 ™qz:©JrT3 "'X]/RX8#f!‚ ý€Ã~/v—ºïË ùEdB¨çÚèºs†·BnpÎaØ xûömÍüˆ1"¦ˆ——Á{ VÙwù0ÿFéµá5ƒhmdeó†¾?ÀÚ‰…Q[iû¼£W&Ý-ÃÑÐ*_-èZÌÙæ•Rpoß²H IDATn|Dרe•ñ¥¨«(rNä¬0„ÎY„e‘A$1ŽÃ€ÿòöß0°;Ïpj# ¿"«ÄÑü'r1në)ÂuõwëR$êt‡—Ëú³ÕÏž„l„«â4¦8Kƒq0ã„ÎX<‡€_‡×­]Dëõɼ¸. R) Öf\ Ò+@díç¨MhõÛTpˆ rXb{têA¿Áu`I˜M,Ed‰6ɉ×t¾rÏ2Uņ!+Å‹ó0!Áj VL FóD23†a@? ¦YÄæÞ—âÈ*Ð¥¬~k5˜nÂL ÄÞƒþ¦»Vl˜6­Ù¬Åjia¤Ñö¾ƒë<>=q:p8~%×'KãÌ:àlmŠ/xÖ\k ¼ë˜Î:Ë’#Àë°¬ sÔMKi‚-E²¢Ïó,²\çñòrÂ4M8½¼àÛo¿Æña@Š;G8$t$Òíœ丙UJc!é0@­Ô4ûFî[›§â‹ LÊÀ(ed„ɨìt•(D^¢AJr?OKFʲfY#Ê4rÞì@ÖÂt®CÂte‚49­M«lA>ªªˆ†q›¡ç»QMe®¬ci£œ/e{׳€3ŒŒŸ~þn8` ã²à0ô ¥@jÔW•íŽd¼µIbfñåÅ_±Qj‰7àà+§Õã¸iˆ[µÔm ÊïìÜ[4˜¯šøœÔá@‘ñëþS@Jïâ2Jˆ® åH)¡ïûj·Û‰…CŠsˆ ¤˜Ðuöû=¼sðÖU+DCBT 2 ¬×¥óLkˆ'j ­œ¿a7¨M4…¢ šÐA|׉w±®ÉTß·€çµÄõõ|­)ç? °¼V¨ðÕ$d;,ܳ×ï_†¨üÊpèõÏR ¼æì@íîDFWÙ„bí(!Þ1FÚT›âû/{Eß÷€y™ñüò‚û÷ǧÏOpÝ €‚*tm¼Œ#bŒØõ½XÂAó"¾Êçóã8Áw}¸Xç°ßï«Ý™uo^3ä™* ¹S–àñxÜ q.— æyV;ªíp)„°! £šÖ(8Çæ/®I› ä¦ c«ª¤œç}Ýï}×cžŒó c)ËÞl5ûB^(Y ÔàîÌŒ%Ìp]§ƒn±I1`š½»äÉž7ÏÓÍýµÍcP˪”kM´Ì ’ í&?§Œþëûž%œ¹Œ° N†¶™eFö•®óX§Œ"‚Y0[ù7c,È*Y"ss/äò IÞ{¯rU‚eíPðÞ PÚ¿!v´Ïq„q C$.R[Õ6³ÿ¿–¹R­6°‚Á¿O̸ïU¿µ9¡ûd+H±Ð{xxƒ®ëñp|@fÂ0ìeØ3º®Ã4É}äõÙÜïw+™EsY²ö#|£nVV¯ñ’‘ H¬ Ãjrï1'+ÀBàÊO!,ú]všmõ ŽB@yy~ÆCGèwrÌÕŽÈuR÷tŽ`;[×7§Ö¡)­ÃBí­®3ó ¶Žl+ÊkÈðÞ«U¥­*¥ÓéŒÈÌÚ F,1!rÂÓéŒ_?=ãù²`I É8$ã`‰àŒEßï°Û°Û°ÄYµ½üÅW*FÝãÑ(ÛLÝÇ‹’­½¬2¶‰¸©sÛ2~—ÍOt­h¸¶'Ì Á‹6@M»¿¶¡Îµ.Ã6[I”÷ô*Ø]·Ý?ÌÕsØöoZÑÓïÛO¶ÏØJà)d›×Á†R‡å\é6õžöž`Hȧ—ó4!ûÕFÕBŒW¶H%”ùi~3*ðVçM=Ù*ÑKÎW­ŸjÝԨזtUôqQ':íU‰®ª€þjý´**YèìjÀw¬÷H1 ¥(d='=ö¸ÄšmI…yL\sÇŠr1„€eY0Íއcµ v;Œj·:ë ¿¬i€X&¥œ¡&ð]‡¯¾þºfK%;ŒãˆOŸ?WàÂ9ªÀ*3Ãy!ïy%Ç{¨®ïq<q8ðüü\k…/`×ãËñåøûTq›8_€Ë üôË‚ÿëaØÿÀª•¡Ð y~§ø»)ÞˆÄr¨\&µaÖ“j-Øg?Ž#þ|q"ƒ)fÀX¶Êè¤ÆFˆµºìZYmx ²z¨óU@·­Å[~èkÁT²¬µðFX\ΛÁ9Â2{k±_?W^Žz»êç"jq®fð¿žgfÀ’…÷=&ÌK@Jb9R|)‹7å €!@ƒÑ9§:tiC(Û¡×½çð?k-s¿pçªph¥Ó­„—è¾üº4}ŸµàÛ³”5«ÀK/Ïâ©KfµYÆúÁ£ï:ôÎÀQ!ÅX‹Ãr±R‘é6÷’³®†X—…§§'ìv;|úô©6Ñ)¿A#»;o(Áè@-‘2²­¬õ‡½…ubw3qYF"Bâ¤e©"{aÞ2$¯åûj3( ¥«sÞ¤Ÿy ŒÃAìîÈÌi¼ú¡GG!8ø,Á‘ãi„±¾3HqVˆ0 “oƒ¿sƆ\ެ98Ûå`ë n Ðw=¦$6TÎ:,KÀ¦eVåWÀùé3Ë`ëñáçȊʧ2Å(+8¸y ðÀ×Mëvî( ôÖ±oûçŠþimÕ`_˜›=l ²^‡Ý¯°¯†ÙÛžæOP[¤aè˜ñr¹`ZË@oZa†)à`»Ãþ€—ó¤ÄB‘¢[çÑw= €8/è‡}5ÒÈeø]³mr Ò­÷ ¯ ã#Èìö{c°L3N§˜€½1ˆ¤I«V0´µ¥jÀ‡Öа=O+ÃðõÚá€uÿk$ƒ×Š¿ë5pó»›5ŸîX`\× ÷À~»^ÞRŒÑa¬—°hiEMÙª>Êë2DeòñãGüüóÏ<©26ê;Âo¿ý†Ó÷ßKS¯CðÒ´à×ñç¿üë|Ê0éx<âx<®v:|/Á¾ëÐu¤Ã¼¡ï뿵5£¾ó·µŸdÅ•õ^Ag[Q¯ï¡í h Rµ PkÇhtÿ.Ê m:ä”ë=8N“úI»Ê”—l…&oBŸ“–yèïzZú™bïG ¯(¾ÞK ‹Æ5Õ}‹yU|”a£sé )õõuW¥Ù2k "¦šÃ‘c®þá9¤í½Î)-eXG0 @EJJóÄ ÚÃ9ñ©Ê¤ëûõáœCÒ{xš&pÎ8k¾‚>–L%Þ0óÍ0¾Z °¥Úz¤¨ÊchÍJ )©íÌýàÚí3Ý ŒûëùÕ÷.ù'õó]¯| (ÏWb—eAbƲ”ðñó¥ÉËÀ–Ž+"ŽŸÖzÙû®ÞÛBÐE†¨²W+œ’$„ˆÜÔ)ÊRND±ö†8J–Ó0ìaŒà`È"åˆ_ýÏļÃn·†[ 仺Î(–9òû%8+©1çÄó}½NÆzœÏ—MèôJ*“0Yr¢zŠ)Aàˆe‰˜—€%E,)cœÆ1Lj)Ôí$d;©RÖz|ýî+ì÷Gtý Bϼwxy9a¿ß¯™K©©M¯È`^3ϘYó-n‡ôr>¨Zð\ÿûµ’ì>HßfEqUЮϑiìŽÚ¼…Œbum}¸ZѲ*’e5j[Vñ&¸üîsÖ„8˜›}} ·7B®ÍL©ße“«eªU\[ÿÞ¨°}Ÿ•h“‘ƒ‘|M"„÷Ë<×Ïä¬+1 +ÃÖ ï;L㬊£Ãy‚1ë³¶*¡ÛkVå¾7©×½òužI绪¤‡‚ ™·öu×àçíu)› ×ùA.¶ÎÁj(=˜´Ö¯)`Ä”ÓRÉÄ’ Ú&Ó¼œ`-!d08ÊŽ ÐPв¼•ÝõohÇ7ôÊߣڣ0ný6Mæ-Ë„„/Çuž‘ŒA6 $Qæœð<ÏxŠ ¿Å„O)c²b‡c…õ^Âe *Ã0é ˆ Œƒ|ÊÌ d„uÄâ m©!Ũ׶m¹ö†ä1ÆF@K"/M))ëœC°밪9ÔŸV¥£†L)U‘å­¤¡/á»\3ÈeèbDÙ`«•)ÇZÌ&0 =æyƼ̘.gxK4xÌy¯VT‡C©ä–à*üô¯€y+øwÛ¬ÞúÛ°$7£êó«¯óÞ#“䯕 sNqŒœû„„°\V^ÓØ–æRš Ày Ê«¤\B<RÖÜè½ÄšcHžOŒZŒ>Gó<"¥€ÌË2"Ä ŽÇ»ûƒv@XÔBÂŽ`rBO¢4EaË#DFˆ)=0 3Rn®YÃJbÊ5˜]@ õƒÊâ¡£xkÇÀ ˆŸñ´LÂnç¡·@ç­d‹Xƒn 0ÍVP`Çè´Ž(qb¬M  9®e0V×Í ÓXψ+‹0BžÒï.ÏfL„ó8áß~øϧ„~Lx™‘3•uÖy¶9&áT–¥ùFrŽ+àëÑmX;p¨‘++¸][Fm Ö=%·ÄkÙpÀ6+¥ Ø_ò|šf¹‰(‚ˆ¢æ3ö»=¾ÿîôÃÒç—ëÚÞVÇ« í˛ֺ97êØÀȨçÊæ-;%öõÚ¦„ ¡­eËи°×«jZ¨X² ékÖýðu57ªO ÿ^‡°ò<¹:о_–Au™V=£_w¼É‰Xçì‡Æå‚°$°Œs0ûrzƒŒØ=Zr8_F˜OëÐÛZ‹¾óØõƒ»;£ü¡çóTŸGï=@ã4 ЊÕNUÔRó<­`gñ°WË´%D„œ°¤ &‡# ÌqŒ)d<¬±x8+CØJ®‚»p;¼~½Û 6ÅM¾ ê+Aؤ žŒ˜‚ 5Sh~Þ€“G6¤ƒÎ™ ŽTVìaὕà(¶H†ð>LX2c´Ž 8ã@Lð¹P²E ïKüÝ7RÓüÊYä{-Ú€Ø4ÅÖÁlÞG¾#!i¤áˆÈ„cÎȃÇ9'¼, ^bÂoK@€…u=˜:i\(ƒ,¡ßy8 8+^õœ³fG í•¯‰sÒo+#'k\mâ¨ñw/\í½cmapõ ¨'£ÕàÀDê{œ°Ì˜% ½ÈÁ%ˆ[Ÿ—"ÙÆÞœ3+Ÿj¸±^bWÉ®óÆõ ,!l<©/— ~yÿÿú¯ÿ ÀYÂùî[¼y|С’3VísD*žÊ`³‘ÕÞ Jï,L>ùy†÷Êqyqï.[Ù“ka\ÃΰZ)Ôæ¶æ:¨µƒÚò¤–Èœ¢°ÉÁ Êk“`Zf±-B”xb"3@2@–¡HR&@Ȭ@1°$Ï_Î1ë°…ü9r^Óˆ§'ƒo¿ý ãÅâ«Ç2;ì ë:ä XC¬GÊŒeŠ0”s‚³!a`Ù€`dH@lrR ÜE?éÒ˜d’A•6… a%Í)#EƒÎp¡ßúð˜vÈ;;H¦GÀäÐíøn‡b‘s‡œâ€ˆ„”ŒZ‚e{Y€\õz•gM‡å94,w•ß«¥W×y±g#†²N-Ÿ^ðáã3žNÆðÏÿøÈ°øó?â·ÏŸ1t=œ*–ê°½¹}¯Ùß-›|Få0¾”&›Õ_Qó+%N3Q)M¤JãÁ ŽIתRb½÷W@^îI‹L0ܪD °~î¼>7Ð%¿lö) LÄeFg”ùþûïNøícTÅ_Töµ°¿3Cns†÷¢Øöx¹ŒÊ ~DæŸa¼ÆäŒ¸ôéXùhÎv€Èx ÍêÏ\±y3´©]Ê„£¨ü°]§ÖvYžMe@2pÅ¢¼gµræ«ËuÍì½­ìÇ[fe®@ ­žÊúÞ)gÍ0›ß³ª×®Ø³WëeË–F]—Ö;€¥ Y%0p¶Çñðˆ¾Äú %ÈÛ˺†UuTüÛÏç æeÁ?þˆ¿üå\Î'tÞŠåC ZBß à˜p>=ãßþíßñþ—_°v°®Ã?aöè‡Aõ`Â7ß|‡ï¾ýÞ÷x8áÅñ°Cß k²ëzt¾‡³‰5{fô‡Ôƒ1 ½ªÊðdõ"÷Þaš&ıÌ%‡À³,YgX÷Þf1àÄÈ)£ó]­%8±æ¹’Ö°ì£%oj^"‘b†ó‡ãΛ¾.DQ ä´Ú3Rœ«%„µ”+×;WË"4{/#ßÍSºóoYõ[ÐêZѱæ5\ÕW¼ö1† ${ynêã•d Aµ’Q†JP@ŸîQ½ÅK8¯wzpN˜çqI†a(Ãû^A]ùõÖ¢Ý'ÚÇÝ\+Ó Y!åi5d+3”oÎuˆj‚»üKòÕu²îºÆ¢×€u¢5+m®PQn´×±N¨ÔWÐ$åç:8/J¬ SJn­y]'WOÉ6r›ìæõl:×I&ëä×4ŸbÓ‚”ät hVÒZkS¨ àÎvØï//FµµÉb/fu¯#U\BÊ„”¬÷¦1¼’¥$ÖTf“;ÄEUÉr`<<<âëo¾©Š¹¬÷üÓÓÓj5ç}­˹NÎÛù|¥fßáÝ»wøî»oq86Þ°áËñåørü}¬¼:q<þÏÿã NçNÙ^àIœA`uð³Ùt˾M $aŠŽ@×}†·Î,p&­Á¿šïDÿ ¿¿ò%«'+9fŒá‚qüŒË%K(*³x‹*+ç:(¬ ê-*þZ ÕZ„ðÌÆâÍÈ`eí”a¶0œwêQ^| J‘zcœÄ'.ˆi©yßw`Š˜‰ñ¢ÁÜO‰±Æ"ù{+ͺð÷„M墋ÆËáÎy4'm3ã;,¬Í­oWf#H} ‡§œñ>??᜞– ع;뱌#(‰×£w«l[fÔTc…=F%‹ Hµ“X ç$1¯ k#+ bLI3YBòJHÔg8Rª ›Q‹iò“(hÜ+9T•’sR¸½„[ KÕ¦›A©% ‘©^’Þ9Ìó"‘ÆbY"þýÏÖ§ç3އ=Þ¼yƒwïÞáñáÆz,)#¦„nè¶acx[6 H)ÓïHÿ·a›·,£WÝ ú¸}©¨Η NçQ¼É „‚¯Ï˜ó‚'aäUƒŒÎµyN ÐH&€#a‘ªH‹ùX’(Iñ)We[4[#2lƒœ]eÔ—Ëç1ãp؃Ìgìúƒ;Ääà;ÖÀVá×ÌnFÌ΄ÀH0/Q¬Ò‚„ðz/=uÊ@P&îÊ’oCêÍê‰J\AÐÕãT›˜R8ƒ÷Hó‚·oÀj༫eŽõ){„ys@¦ ì+ã`²(Å$3ÃÉ+êk-œµÈ9Áä(¾Íó"ÿí:%ïAÞÃS™=ÌË/—üö4⇟>‚\?ýÃ?â¿þ·ÿŽŸùdAb †ê…nŠu\ÎUIpEJÖÁD+í^Â{«iYomè}㡌f Ù¬™ „å”eïËM3Ë[Ö|Í‚Ð5ÁTÆ$×€PVÿg˜ÊNCÉ*{V±/J). Èëû¾Ãwß}‹œ">ÿö¦qÂ4͘— loœ#r•ê½ÇñáKLøøé–á»AT âØ/XÄHœ+žZ°¾Ìí@º¶éwªdª „a€,ûVJ ãé,CÀ”`­± ^[ +ª×ºzì£õJo+˜šÄs£ÀÚzx_Ý,Ÿ÷¶É›ÑDëÎZˆŒ_Q–Æ.n«` ÛÐXF3 €Å”á7ÙÄÅ õýï»úúB©ÞÏfm´§iÂù|Âeñëû÷øðþWŒã¶Úr¨í`ZïÑÎuøøñâ²À; ç;¤ÄH8ŽòùŒ­^ïðí·ßàŸþë?áOú»]¯áµ)´Öé=€‚4jAV:š—ÔuJ8ç0 †a)a'Œã„eõàôó8 rÌõYfµ½°ÆÈžÖX{($!O• ã_/’5„"–°Ì3Â2£ ˆb‘R(©Ò` Æ-¬MÔPP¨R !çs3´’ÂY²äæ^€| (4ö{*BÂZs–:*i>ÁjAVa•ûÃ7– ŸÌé¦NnWn}Ãë9#¤°4÷£-~à†š¼µëçR=ÍAè}½ RZ0£~ââM¯k'øuÖ÷†ÕŒíów=x,ʇ dÒ,¥U:¶æãÔ¼‹ÆjµÍ÷AkƒwÛÁÔsX†iWJ‰ÚÏ”k…›¨è5Ó…n ¼ÍQɉ•Ö¶1½[¿óÖÎ’78kßwõï²Ú.Âü.a RÕZ×%É”ƒ4Ë/­–‹R»—öõ±ÖŠ•^š•좊“ÒPj(µäpjyUB^M 2Ïë÷cfXç@,€ŽqV²$ÊÀÓZ,Iž?㼰ϫ¶Äb¯)ÛÖt’T KÊ Óá¸Äñá-ú~†CV"Z7ìa‰Keg¥ÉÊ ¿GU åÕu½¾µ'2›ûn€]†â…•oÈvm>À <´Ïüú<‰¥í½Ï»¦·ª+Äo”åå=WÅ9iKõýKÖ×õ^}«°`DëÞ[uHÛƒmO)5 žÛ D±µ½~–©!«€¬áš[B¤ÁV…u_±ÍhãÖ%JtÏÖnÀdc<¥g+ÊþÒŸ«B®\š2poUX¬uƒu™˜Sù IDATü#à7T!E¼.·dÌæ»äŒXÉ7MÎ,˜¸ÎUʽ^T ’ý¢à…YUÅ™¬*LRŽræu¿$U¾å] @QmkÝÇšqBÄ0 8ì8솽ÿ€Óé‚¿þ†ñ2§DMS‰åD†…¨ãœ(àœÅááˆ7oßÁwbJòo_À†/Ç—ãËñÿ‡Ã*)¬óÀ÷ß»!ds ãR‚³”©‘ʵÃY¼“Ñ;K0®E‚soÞ<>2‡Ï¢j( ³†‡ÕMØümèq#F% ÕðáÒôgc†˜àL‡¡Ûì0AúV-Ø #¸e`^³Þ5w¯u°€m@13 iì-ï/hbe­`õñe°†íIƒõ¤‹×Î0 X.jmÀ™dsžcDà“”ïûˆÇ®ÃÞYì ¡K{x†°FëI,Ã`» L”®¼¹ð49Ô°† W™¥‘`ÊH °õȌȄ™S¸ä„9cfœƒ(¢qpÖãM¢°ó—4bIgɰÔÃÀ‹; 2ÈxUˆÅRÉmÈ™…¡ž#È0,AÂÎR‹‚@ÜÊ>©xäGôþPýn‹L“±Ѹ ©2F àjx:aeôA™™ÐÀMMSU{Æoœ›}FeV–‚7爡ïa†=œ0³û°Ì –€çÓËœñü4âÇ>áÍ› ê)¹„E˜ÈDx|óˆÃaï]eŸÕÄn·«­4—©ú·~«2‹±Uª}?Èm½÷ óeš¦*?5¦}Š ‡x•&¿<¡ï;¤”ðþ§øå§˜ÆˆyJº>l<4äŠ Ó2Ãu¾20‡¿~ü€OOŸu­ü6|9¾_Ž¿kUC!g=<Î)vA›"#,UçyY`­Ági(u ’s†Ñ¢[räO±oèû€ÇÇ„~¸Àu€ŒšV–² `xÃ|û›¿KCºáJîd¬6¼E% ëFº@ÆÔiU äÆË¶²èò†ýÑ#m‘u]܈§gDÂe”…c]ñ 6 faÇ€ÕÇ1oœ¹6)ÎöÈÅGoqt]&ìŒEÇGëP¤²•jc¹²fÛ tå|Q£p Õ2Jó² )G„rF$ °¤„%fÌœ‰1H¬Ñ©Ö‡µb–ÃÀ¸DDNÈ&!é•9až/06ÁºÖyñËOÛ¢1s#9#h0nU‘0iáÈ›F½õv†WAì$X™¾åûx+]ÎóøŒGúj#R1CTÁå«y¹f|{ÍT–,‘øInŒŒe™”Mµ`¿—`Jï <˜Ç81¦eÆœ.'üòágñ›dñ¦¦ L¢Üð]‡Ãá«Ì­”DàœÃápÀn·Cß÷Â:fomZÃêÚfˆÈÖÁêuàd‘8µ6dõ5%@Œ“”ÝÂ@L/ç3B ðÝ€%Œ_cµ ˆiBЬïhëÖ1™b'µ*#a÷ÇŒ˜frNÖðZRoÒUÆLœÕ…êrà¼Ab‚ƒ€óÀdÔO˜ƒÁeºÀ[ƒãË€ý®Ç0ìp8ìÐu„Î|õ5¥êÓŸ™‘8©¥ˆ ŽSŽÂ#ÏŸ™#& !,ÁÔØ¹­Ã×Á’Ø*Ž«/Ç‘1]ï}ï0Í#†a€u^ ¦’É…eš*«d³ XMQD€Ã¤Ùbû%žÀ ó8cšfø¡G×÷ðÎ óÂÞšæÏÏ/øøÛoøðù ûýï¾ùoñôò‚óåó<ºœM ò’¶Õ¾+9[›ÙªR(â5oßÛæõj £rô;žÆ|åž3¢~÷6@ô÷¼‡_ k¯ Æ{žÌ-#»f%Dpš±Lg€#º~@×YŒã §—'Ìó‘ >|ü?ýüÆñ9¦µP±¨rÎã2MxzyÁÓó N—'¤<#Ä 1^#Q8Y¤0­÷àÆV 7M±*† ƒ•22e‰ì-Ü;¤1ÿOöÞ¥Y’#;ûŽ{<2P…B(†‘C3™H6ÇHŠCG iV3;.¸¦ÿL›Æf¤ß ®©Ù±Æ…Lb“âœf?ØF7GÕ­ºÌŒ÷£…¿=<òqoÖ… XªnÞÌŒ÷p?ç;ßù¾å”’– _YÿcÚi€-dF€¨Ë0–˜qÅÜ ëàa×aOžÙƒ6û*´½³ghÝ,ȯ1 +ëwöÓDS>3^ô†—îgÖC`Ðl}wA ƒé| ý·NŒ¤L-¥-ÜÜôÌxkવ‘;{ü‹« s 0kªlÌsß÷$1ªV¢­çèW=šúÈÈ$YöiUÏÐÎg¦£“4.//Á<@B] ôýŸ~ö1$ TV6KŠ”½nOÒþŒFÑër±D]Iœ=ÆÙ“3¬ºÞ2>ÍÚ¶Zuxôø Wî:\w)t«+³ç“ó×âˆÝßCé„T 2ÚÚ¦2j[F»‚ör›]×Yfw‡ºnÐ4 ¤$[¨`5–£P<ØWFJ÷&¶ð’`läaD¦™îâ‚X¦D¥ñ™ Z[lHØÎÙÚ焳Ékq‡"^` SVJé ¯Úã}BHT•ëسrI°rbÞËD€u‡¡7Å4c°) «Ð©ËêÄFÏÄ@]¨­!°Xy¾Õò}/Q55h0€)é4J|pÚ^ÁÕ´JIk< xw…r¡S*‰ ëGd»l´õårjLNž.6è¥PHbòFâ±ØÈI ¡!H›=Á‚Ó̆,¢m ªµò…­L×J.“³êrI9WX0ÖÍOWXuFºI — ­¼±4 ÆJ[¹U+×bö J)Ô•‘Njš Ë~€$B#ëÝ&mW„ëšcûüÚnb¥i’aÚ_ªKJg'mЬz<9?CUIü´º«RJ\.Îq||ŒÙ¬ÅÑÑ1šª…fÙ¼“6ŸÏQ+µ›ÃjG…’º©Ã½ˆLºb0Àë “37`Æ|Váb1àä´ÁÑq!@+ ÊÈ`HV¨”†]oÆÝYLaI'«%ÀÚLz#x+“DÃR_padÆ¢D] ÌOZ´­ÑöÕZcÆa`fj@×V‡}׋ @‘Â@Œ ‹®ƒFPmÌ)˜ TBBh¶,fª°êz JχQkÙk¬:£A«´éH"h ˆ S LfP¤ç3¾˜×Xƒ4¡¡ W‹:5 iŸÐÎI!Ø<’ÝöúÁdÙ·D2hÇvÀå倾롅BsT[ã\ã}!Ix&“Œ‹Õ%–ºÇüÎ1Þy÷]¼þÖ}ˆZC£Ãª»DU1îc6¯qÜv¤víÖ¤0«]LJ\Û\Ǭ´T.bÜÝPf™ñd¾‡1lgC]i ½KHËÛ⸒‚„Ð[¡­ M5ƒVK¨†ÐÎHjT5PÕŒ“ãÆxØT Œ½Àüh†Õ²YÖkag@cvTC‹Î Úáä¸FÕÔ8š €zˆÚ²°-=WÙ*¸/¦ÉàŠ»>ù¬$dµp{Fß4¦[h¹°¦íªJX3au›¸d:M†ÝÖ{µ€X7ñ"—ŽMx‰ˆ0HAJÛµ4•†¬«3NkÙ—a]Ì:Lj"pç1µD]÷¨+`6NNk(¾B]7 ¡Dä|_ø ) Wç—èû%…¶¨j‰f.@f³ñ)ÐŒ¶6IsÓ´¶CÕvUmÇŒªÖhZàÖé NO[ÕVаƒ¬Ú¸®4è}A:Õ±ðñšT`¡AµB{TAT]§m—™{U­ÑÎó9AH‰vV¡mÙ¯MNÒGX¯$‚†®u-Ðu„ªÒb°@^ô\G¬íA)HaH!RJtÀ|VcëªòÒn¢(5€k#±Ó M ®-³Uؽ߲j…eï: ?ÏR þW)8·TË :¥5.€>ðä“”p¯ƒN·¼ÍÛóºÙÒÐÕ¥µ{ÝiêÚt ’ȵä…/8ïÅå€ã$+ ÆÂÄ}²Ö¨›ÊŽ]£SÔÑ"ìÒV-,VX ÎÂŽ ÕL|×HOº.5è:k,k;è¬è§÷lˆ ñû½çXJc\,ÄD Œìˆe“ðÌ 1Ùˆ DY¥r7¹†ÿ8Q¡½´¿¹Ø/6,' \ /Êü5ß-IãŠô²£ª…YKIÙç40Ö‰kÄ2Añ¹€°²ÌæÁïãqǺˆÚçc);ßÅèö~&õ )ö…f­„®Ð4ZÔ¨Ú9D-ÐÖd$›ÈièëˆÀæäf(u}9‘Hš½¯Ãˆ´S*biÍÞg H1†¼¦ŠÈnTdu¬¥/£üIñÃz’Ø~HÖ$k-C¾å@¥µ,‘Bе÷QòXÚfÄhn„{-¢bŠ›×:×càØonÊ”Ú䣂4¤ Ìg-å% ªZ‚Èà*ÐáÞJ:ÍÜúb4•%iZ A+ie-UÖ’Æ?š%b  Ø‹Êä· !u­l“8Ú"æ§Xÿ;zô!²ª”šgCY9ÿ¬hëqicI¥„éÑVꉌteUUVÂÒÊp)iýP å¦ëéíŽN$ªVƒÅ,*´sàñÓ_@ñ½éÞ¬›Ð1‘táhÔ¢29i%ÐÌjÌ[4m †¶˜ÅÁ³ápŽÃñ qœ+*³Þ7ШàlµÀr9 f¬Æìñ±Ä­Û êfe*ºF† Â`[—Kj<~z…Å•s‹ºi@¤ +ÓrÌd%‹€Úº®0›Í0ŸÍÐÔõÖ×àe“ÈÈóýžÊ8:žãþû‡ÿjöu´Ç÷qzû>º^EZÞ”acýø cK1þ>*6Œƒj1;ìÏ’õ(èq> ¼=3c4UµZb訄B# ­*AÁ™‘&Ȱ+%b–ŒW®¶f£º($!£¶gÊ‚U§Ïd:âV{?66TZù$b lŒ)•fhßaÞ/A¨! Ù„Ò’LëµfF¯ôZa¥ $ÀuƒãÓ;:茧ˆ±À‘10)v:þ# Y¡Ax–|¼MÐ À¸¼x‚Ë‹§˜[ b{ŽlÚd¤ñIQ,b° òE¥–Ë¥O²ªª²þ–?(ßJZU•/r¸@S³+fi˶…õ áÔÆJA „$#Qau^¥4 a峘…Ñ툄ªk09£6g¬çþ«+ Œ¦©’vôa0  u°zÖï#ж-º®C%%šºA]I´Ö”P8Ígo*TUm|&´6ÙÖ´Ti6òDš0X†œvíë±{²7è³21 $Ø0¤Éäó¹‘!aŒâ¼W…Í#„´Å´‘v/Œ^ÖÕ¢µÆb± ÚïÚ´·mëAUÀt@0=z­5Ú¶Å­[·p||ÍŒå²Ã/ý7_ÃjÕãèøMÓú.v LËx7¤UƒÌú5Iè:à?.Û‹ YÑ"5VŒ˜n4,¯ºÚõãÕ;$>AJÐI$t]Õ¨…À[ÞÀÉÉ †Õ g?Çj±Ào¼÷Þ}×ëÆ¬/Bzù˜`ðÎ{oâý¯¿‹_|ò `~t!¥_]׋æq1F£pO¬_C\¨qL|ÓcM¡ë{´mƒ¦E :Gu\l(“ÖʚɜœÊ… ò`¦+4 Ñj»>N­õ%éè1é”B-+\\\@«wnÝÆ½×ïb>7Ñ2ògðzÏLÉç4°?ÿü1~õ_þ·°o*´GGP¶‹U)=(¸­¤D%…ïð "ôj0žÒh–ÚttÍç¸ÿú}Ü»û´2ŒAâ1¯<c§c*Ð-¯™y­ x3 F¶ðêjAiüw¿òÏqyµ@Ó4`f´m ’ͺ ȲÇa;ÌÜ"ı_‡‹1Ý܆ÁFÂÊ9JéY¥18葉£wCvaW Ï$~| '!²Ñ¼| ­ †àÀ©É \uÒ(\…¯oäXFRE »”ÒÔ']H@‡_Ç]ÁÁ³þíüî†ÞÄ3̨j !eæÇ–û%lßÙ@¶£WDþ îùÉuܧÆ(_³§ŠÙ ?›.é ©n ßc³n =}ßCJ‰¾ï±\.m¬&1kg°t×Ä£Ñt:²BîýKЬŸgc/ íc!2ò¶$siòßoAn¥[žCu+@)´„‘L&!“ý¡¤Û0>xæ{M!O'>{ñè( ÚFó8“ÛJ:àØÈ¢j¸åÑT P$!›«AÂt>÷&^Ís†zO¹<ÿt,p(¿¸b´[Üø¤~ìÉ~Á£{Ok×”äùä s¿ÃÜH>àÓ¼¬ 6§ÓçC#_uÊŠ]Û¬cRA(ü`òg%«ud$Ô´V¦3ŒJMS›\·ïÁ`T²†©Íˆd|Ü|°î9¹[­Øª••‰æTÚÙŠŒ|W bx~›õš0©ªn"oš¸Ð ÊÅR΋¦å•”3ÙÒ !ÆÝw¬µ-8À±ÅjìýhL1Ö<Ûáy ²-6ØNT0cÖÎ0Ÿáá÷qzbˆuDÝjYÞxóuS´•«~…““t]?Z;58…·ß~wïÞ…ÿâ§Pº;Çá8¯zÅÁ,·ƒépyµÂ²#\œ <=¯pyܺ} YU—Oq«F¶§2¾ óþËËòŧ?_`µº‡>ZD Â)t¿Â¬©@BâøôW&†’¦Í_÷ MÓøDpçó'†¹ÌOà¤Æýûwpûô!ª;_Åk÷ßÃÑém4mk€W/µðq,/%j:bʘ3dX1ËÞ¾lØ Œ>ô%5œñX? IpKÚó4ƒ5é:#àŒ6M±AøbŠðçëŒßŒlElW7nwôÆ–Q2§­·EÜYËÀ(¨õ§]aÉuE8ÉÀ4x`e ¾]Øœ¬-P°é¥ /d™ÂJ›@»€FÐ:– †NÏÑ1ÿÍ[t9!Œ$€8N>¬q–;ÿ¦– L–#ÖSY<±îªÏ#I ÓžÍ^¿DïŠÛ¡æ¯ÖÚƒÖ¬9²´¤P|ÊÀ×-"€8’‘ôLw!ĈÝkjfã\ i "‘kð2E_SpÔuLÊU×[©%²ìYÏ÷´†Š¡8m @£Þç´-:—SqˆlYL:˜Ú§IDIœ×B¥BÒ‚1X–ÈS¸dX #!ÄĦËJJa™áa9=[¥/½â?ÂØ"³+UØÄ—C‘‚LÞ£%}ØAÉwemefm<åIBR )„´kFšó+i¼&0 ÉšW’•b ¬wíÇÀÈ8 dzŒV«Â7þÙW|ì[ÿ#hcî­# 'OfŸâ}l¥åD}"IŽ»'Ü:<n¯-6°5Íå,AwÉ£•)Ó0|Þ„Šji [`_…€‘kšÆœ— ÏK%Ѐ03Æötßy€®ÿ%h«½Ì‘,,d“ƒH€ë| µ÷vdÎl;ë È£Ò¢Z`ÆÏuþ¥Ž”]²WC:˜J¤p2Po×s€f*k|iHëASYÿß¹ïq +AžÛàæÈÃwØîEÛÉèØ·N c‚:ÎÚ‚<¶È¨­| Ûd¿m&ÅâQ“@ ¯Òðüš)GÌ`åö,Ŷø =xÎíWð Œüi Šl¡šFE´Ø¯™‰3"ï{ˆ½9òu%ÑÆoX6n:O–ç`0…1Œ¯=A®-k½·Ïa΀Z](Ž!‚´Š3ñ.U ÚÇÚЩl%…âüY^W6æó”HåÑ6ËSàª÷ #¾ß­<"À$ß]çó­á IDATøä$ {ñ:Ä?O¹î/*äÐ…ø9*Æj$û@Z̶³UDq%ç@íèž²6ñµíD2RoÊ{㸮]WðOÎÇdžAö•ã©FuéÈÏ.íä0;\4g)öy±’C,,ÁÃê O°bO6ˆ÷TNã##.7›“½%™ßmŸñ|òÆbC˜gXâB¾¯q”;a´V0e¯¢â|Biý£‰îSˆÀ^"”îWÜ]:»0*vO½w\ ÉîÃúú ÐŽ]O)ÙÍ“‚lf Ðk¨Ñš•ÆK!3J;‘\•|ná:ð\gYw­WœÃ\¼¹tÔµÀyg¦{ÁN5€Ey'Ï~îaæjŽ<äã^çñ̈$ÓÙ†ÀÑþ˜{¥yx¾? !Q ‰¶EP„Ùѳ£#<|ï]ŒµÍ}rÄ?­u _XϺ¦i|3?–Pö¶Š ‡ãpŽWòÈb`«X.+m¨Ÿ”àyR´I)wá³ß`MÞu®®Wt­>Ç¢—8¹½ð‰ˆc§#¶H Óµ2+×NJbP»bƒ V|à‚XíàöÁË{8$'€B0HKJßJ¨"Y+ö²L‚ Žæy9äúŽ OoH˜µÐ;-leJý0X6^hq{%ØìÁaŽÀ@7ek1ÇÀAÔÒoÁ)ªºÂ‰´ «N! p(ëÁ3KÖ$Ȥ‹¦ƒ[Ç’Úâ@Š<+|H#’`;t—ÄÁVß\x¬‘,,°®mÉQ@–«x „3kö-öˆá hST0Åd(˜ºÆ‰6F€k­ÎBH[ ‘·ÙFày mÞ¶‹(ay±-r¸±L%obj‹NfË\¯²`nÉHX””šF‚µíH1à¹få;1\1ÇK'Xv‘¢é­Þ²íÑÍfÃ7¯cdà„aRJ);Rôe2 ?ÍBTljR>1^§9š|Åbƒö/k-¼™rž¨ðÂEeS§±>ÿcˆ‡„Uêº~<÷‰‘É?ˆ´¥ýº‡Â3–ë;9©”™•jÜŠkx6Àë ‡Ä ±Œ’-8Œï’Ž˜m¨mK9èWÑ?¯kŸ€’1ùYû}F› ³7oÖÆ¾ûÃ>=ZS1ÍìM®Yó(qúùÊ›æ":ç°ž‡„¸ˆ1Ôõã¨És΀™hïvÃ`¬¸e°3*d¤2±œ+S𩤑0 ²2òn×ÑzêŠÃÚ_Šs·ÿë”<>:Fm=«Üþ6Õ׈ Cgžrñ˜Ra¾ZOžÞú80kOFHá5U,¦kÃDÁ4a÷†.¥ÄpTÀ>V,³¡³'öb0]wäÁÇf÷q¥cy#6³æéBÓš9¬·˜ååbC§Ò¬’F`hE`–VÜ´ÀHšÄÓ(ëp o©P€ q™5-öņÔ_,Ð*¸H$ÑSÝfÊ\_0ÞªˆÏ…b³¦"Ìb9*ÀŽ‹ayÂn&Æc¸¶W¢’¸Ëx\A 4î„ñ$ ”$¼\ì £¹„‹—àb.íN*JØÂNøn·V…õŸ}±q‡fam]ݯ}iýXãÃW8{¬ÑÖG˜ÏÝzè •Õ¹¶dq‡c­V+ ]‹'ÀùãZµøäµ·Ž±ZiÔA)x´cßCOž<Á“'Op®“Àx<€¤¡L‹)F¸†wèÍ¡ϰ5ŒRÒçs…„o 8ŒÚ”½Á–FБٗJØ—ih °£¶dŒšöbe c -y®D0:µVÿ—¢èm÷Ue;y,4Ì9¹Ž!käRÊà d}´6¢²Á½£³^¡¤¸˜ãy2ÏÚÑ–I¬Ñ´¦×ËÍXcµaèÑ÷•–Q†-ã ®SçI[çðÏ&ëçq×[ù$J#2´ÝPLÈQQÇߢÄÉ‚™‡Ê¥]¯ÈY´mVj@Õ˜ë ·†4ú~°Åi ‘ælœ@Øu=^É*t ³ ²¥<ÓlÄÌš`¿1¡ÄøÜ¦Ø vŒÖ$WÈÕYò¯£5U+f’/= V?îÜŽ—Ísã¹õ¸9ºZ­°\­ ôI _àLƬ¿a½X[l°@r*áAa:SSDºÊ""„Ù'XLøúaÔD±­~¶éÚÑžiM‰<_¾n[lˆáò¸€çŒÈƳ‘¸$M’ 1 §ûÝk»n€RºHXi”û5 `/U€­àÑâÆšˆ0k[ÔumÍ!ÉQ<ýzD£bC:^:b»B†Ì™¦*Û}6òF¦Hšvjºðb¿„ÀB÷ ÛõÌé­G¿È^Çåº×wPZ˜ˆ×ëd°Ú\lXó3Í*YÿhdÄM£™Ç¢¹Îz¾†åqSa±$„œú Àšy»ùwb@‰P.h»"¾ÖygƒHKšËÅFjž›ÜAEâkhCgÃ伌ÍCj™}Ž‘‘÷cóÀ #fD…·ˆR‹eæb,˜ß#NH="ñüðñ”e #¢¡$sÐ~¤‰¢—(Äé©ÿ@AHDB˜dó%b±ÌÜ|ó4"0~=òÝ1‹Üƒ –ôaÀW7§âEGŒ€\^¾Š’RœkåöAÛbr'¥ã‚|ê_˜h”;$÷(c»;™ž = O´›Z?Ö9†õQîÇ ±,/&I- =‡¸ë>ß³ýý“÷bK¯?•mô×wû²öµ­»ÎÀ9ÞŸEļ'/w¶/\8|eá|¤¬,(®|q€(JBØ?cœÄf¯¶]ÑEÿŠ´6[8BB0ê˜RY¨óÔqóV)y6DÅIFâ“FĶ˜M7ËÐMC*ßè%„0’¶mÅ?Æ×¥[®0 Ê+ ‰A$æÖAÀÄÓ®cØ™Ü?}úÔÁ¡Øp8Çáxõ k: _‹«Ÿ}ºÂÇ1XãêèV =0´bHQCŠÎ&ÍŒ^sЇ6 :,¯|ô³Þ}÷«Õ€Ùp ÖVú×Ý%„~°úÜ£|úÔó\È‰ÉÆHdÌJ!Ð÷=./³³§øäò#Ì@ÌŒAšpzÆŒºiQUöÇ!ÞðÌù8FsÈ |òNmDacâD³[$xn³„}B¢á%4cè ÛQÀP&òŒŒ8ë™üE=ßÀŽÖš¡žÍª”JX`9S—™¡´2òY S̱ZêZq~CÂo\`2’)6ThZ©…/i+·ÁIЗ´Ó'l&˜àÒi"Y’ÅHeÂk’$êªB%M+¥gÆ£¹mùXFȀġ¸d’W˜1Î[#,Ï´ Á>ñŒïœ9”Þ‹˜™™ÍXσ$7ˆâh 1Jd;&0:“sz C®ëì½aUI´mm ƒ„„ ™ákC©Î€ý¬@$½9v²ð¹Ö_Ò™Á_Ç)ê($‚t‚ûa5}Ù„Œ¬Ãg f޳3bMõ‡aRd¹v,‚+ˆ­î5ª9„Ù{ÜäéæÏô¸„¸Ät±9àÈ€”Òȱ4qZ¶ïr ·Fr-Æo"–tc¡5Ûux,)F(¶¹Ø0¾1²G¿•|Æ\`‚“‚CÎç[ÈI~V8’ø±< +6`Ü9&EŒ‹ Ø¢ØPS×u6Ä =²Âo#2¯¬)-ZNyĬ/<®“ºÁd±ÁøBÁÈÆÞ66±ñ¼+X=KÂëË ÑúL–hŸäÌè aïæqj &Ý¿±!«FÑç&££.T ¹› ç VŽå ˜:6¸uÅ?ó‹:óÌÈd:ýž%üó’Æ¿v®‹‚÷€?¿¸“‰ÄæéXaŠÀ¯k”=û%¹«m ˆE"RR¡±bL^™4ç‘?:ɵVc³û ¥Ø|<Œ½>zˆÏ-S„ü72É6ëÊlÏM¬Ýºä YÂÎaÇ2t.§ySš‡fÜ}:~Öó57+VBø¢ŠVyWŠ‘>ŒHDYQOx/ɔᥢVÜýÖ=¯I<âpKbrJv@æéÀ®Ûr°Å¾Õö{0L±u¼¯„uG º©m¾YY[b—é”t&Ù¹\X^lv‰ÇÇÇžèì„ìùŠ ‡ãpŽW»ÞàIiÕ3®.Ë+“§Œ‹sF;hZ mèŒ$ƒ&o@Óšæd[Û8š3Þxc†?\àìñ—=ΞÎðÚjŽÕB«Î°UDð<0¼F`"/’mß±ƒëzPlúYGžs(›Dy¨+s­m3³©ÌKAi1A 2•èJƒu!@•m!EªÁ ¿}dg³Çd ZåIc}ÞÈ`hÓ&bµö>"ÈTGÖw£;Së”ùάƒGqÎ(¡4È" ™ €PA©€€ˆØò5z»€X'l[÷}.Nã$Ùu¶L€jÜ»DEÚ.°÷`ˆt- ¦“)<+Upˆ£þ”‘59ò¨O’XË lð!ªAšBcFá{È#6ð’ŽÞéƒÔ„W•~FðõY±†-dv’1ó,!/¿%0fîD 6’vSY¤x.»Ä\óoñ<¯ùyœ{ѺFÛo„³ŸáA7x*h‡û·yÿž>§LË9ŠÛiä‰R✬Fƒà~a´öùóùwdv¿~â‰=¬TˆÏ]Ì«wȵËç?ýøGùï6Ì<l\Y®];˜K_EI'n߸8(ê¿ žž$íXßÊðû‡bÃá8‡ãKq(e «xz±D§4'ÀÝ7ßptÜav´B=Ù™Ó‰¥êÚŽŽ¾_âÁ[Ÿž&Žð¾–…¼Xƒõsy=š…Ý/è«&; @ %^¿oLŸ‚ØžoÊ6u·‰ Ïíaü^TþpÃñÞWî…Ý¿›œ7íå~òšb²¶èa*FhCüOMl~ŽyCVÇTŽù'?'Þ ÄÄX6Åx"†ÛqNðç>yÛÊŸn/S™U*F‘¤rä^=vm%ÛÝÏZB+k#«¾àq(6ŽÃq8¾‡ÿ€ª®±êz­Ð ¼þÆæÇOqtÂhZ…ªÌB©œ)³1–®ªÐÝÐÎV8¹Õbv¤p¹ ƒa¢Z;c8·ÙÞ<` ëO v€ú ŸŒ;Ç2:V’I)„´E06Û"0¿˜1+·v‚šW®‰¥¸ bMþÛHá(ͨªý0X€4?·À¼dÇð£T+‹G eÚÀ㘪Tí-yÜýÙ¤un)éQÊêÚwÝ‚OÀ¼Å9'†Éë±´OðçÝYkn˜›éçÅþNo77¹3&õAW›5¡i¬Q» GÞNí¿SÐDÁ`Ý݈î;qQ{v·ä†¶zOâÍÂ9èÂE#íòæ ë:J‰¼¬J®m;2ËÌ´TSvÏv­÷ãûJ¶Ð>?Ö?޵‰cÀ)˜ûNnÙl0}]8†ïµÙÍØÜTµîSoò½1è·@‰œXXŸ…—0żXcYøu,÷ññ‰ª›/¢¤ÉE¶L‰=¬¾Û$ÆûëÊ`_ëhmgÅ& œ“ý3Ñ ¶8¡Û$„)x Ä]L k´Í¥"È:f.­ ù.3?i3ºÄÏnwè¬ÙªÀ~=I‹"iа©h:=r7þ¼™z¦[Nq§–@V0Øfë·HÙê£g3{_ðEIï—Ù'Ü{ua̯#µ"ÖúÔD3Å0B#¿Î|·žË#_Œ9¿(`uvêº7n¾þ> PøY“‰è 6v´&xQçC{¾žÍ±Û¾æ:v]+(#ñVçI]ú7¹OÑʼå åa§×ÏmÆ–ŠžÏö™Í?ûÙÌÿ¼hŸçÍy‡ÿ8®‰ã\aÉtœÈKŠ ‡ãpŽ/Ñ¡­DƪëAâZ/PÕŒªa ú$hZB]Kt½a;Âè£AÝ´0†n¢ÃÑÉ >{´²æ<5Æ0/îšã…ÔGyB À 3ê a§6£¬–ÌäÖ¥ûÄâx.¥Dïõ áÁà4´±LíX‹™B E^j ˜Í .z¹„Òù”À䦲÷½0ú÷ùÜ *+%ƒÙD—³óFµŽQ›¦gæÙœù”^ gxÝ}—Ò uU'ߟüss×]W& Ó÷°ŽÇ¤dlŸCn6VzO|ÿ§Ö…òøEëÝçXgÚ}Ž”äµýãÂYÚݵM’”0ÌTÓÞHÑë2L5ÛÈx°÷`ÿ© ¿Ï”?ÊãL%o>®_Ä£d@Zú{^P*­)E°’7ßá(F_[J•Ʊdëh¼^ocܽn½KàoÎKkשgìo]VÏæÔZ ¤Öe=ëp­%“c¶†´ä}ÌYÃRAþ½K4âéÆ{­)r¢£ØîO¯cîæ$sàçn=Ûyùb¾3/íø›Xßnôþ/ß^ýe=¦È)‡âYÜßÌ»íõ›ÆîUºWS¹×ºü:Ï}µÖèûB(¥ßÂC±ápŽÃñ%Ù„ ÖszëÄTbYÚ$5³Ù ‚VT£ïû,ù0{”÷Û$`P€HªëÀƒÀj󒺤_Â{%k `Ì xqÐxƒ‹’È(•ð ŠL^jÜ5Zè` <àLÝ8²Š´øKÚ÷ASœc’ªÍD¢aâhcÙÀÄ/éóD“ÜqÑõñºr*7yðÇc·)pþD IDATÌ%i”R£kÌAò8¸Jï‰6DYÇ3C ¦Ø°ôB¼ÅË T\¼“Ðלú'䆓Î\9œˆ"=ô‰ù5õo+š{rÏ+¥!„ÙuÄh\«8Ç\Õñ%Ifs9^sJE¬é‚ÁX3ÛèüSê‡K"3{ól¸þÊ™^Í‹ÿM2Z7»OÛùØïsÍçÒø{ù¹Ìyf~i‘pö?¿˜KësÔM'R#YÊY£×SŸØaþs!þˆâYJŸ‘? Oæ)³Ù—`\á6&âõCpêc±óm"ر¥éø’oôùûÏ¥Ç˱~YâùsC×bœ‡ž…›çcy®ê Î:ïêņÃq8Ç+½H¦R€²V«+°nPQ…a ¨®B·X-%º¥DSWµ†æÞlUV¹CkÓÑ÷Q Vs¨« bhÀZBƒ !"g³Å /%`¼ï„ûùgVf$Šà¢"¥Ò9ÎDÁL˜ˆFzõ$D"qâ?ž ;NiØq*œK¢|@©FúèËGI"'ºàÆ`þ>X¦¸Ö!A6’e BHLËUí–Ònš¯“`ôØGaªÁLޱ¡üÿ§‚®R×ÂTgC©H³ø|uÐͲCåµ)þw,31õiá~mà¤ü86wr$‘Ë Oϳ-j £ç%þ¬ ,ƒ†´ÓºîærÒAò%Mès°7.´‘-ô”Äß ¶Lh}†)då&খ-pfô³YÇ_ôþQ^ߟõz3µ?ì wóLJ9’å9€>åù¿ßŒ 0Ÿ8‘xÜLÉ—›w60Ö)ªÅ&¬Z3D"£÷¢²mxù/w*q’Äü|êwÆŸ¿ýœ¡¢ÎË«Žç±¿ mÜç€/”bâçýýûxv¾ …¡mîÓºëw„¼©ÎÑC±ápŽÃñê''¬¼cãß ­´ŸåœâM;Tñç9/¸ô»"!0tö¬ßt•uE«‘Œ×–÷³b<'DBÚǹ;PpóÑYç0Z6¼ötЍȺö9—6X”“x.ótoñ.±³%_QÞýtׄ®‘vš‡O7¿#¼'À‘·úRgÛ³s~ÉçÔ«fó+öݼFò뙢 7¼þ›xFíëÜýs¾Ø)ï!öz6skwð¨Èt(6ŽÃq8¾$ ChóÕƒ­Èˆ,ÀÇ?ïððí;xüh@3?Æ£³ œœÌѶ xèÀZA¯4ú•ÀùS«Ë9®.ŽñÉ/®ðÙ€1ÃÑñ êÆš‘ á‹ ûÂ{Œ|ÃDÁa‹ïp x¼I¸ä®µWQ¨ä$éÿ¾6û´­.é‹—¤oJ×úEsæþ:à{êú¦¥¹ŒãÈÓbT(0\”(•0À¿› þ tÞ (Kñ”Î=ßdeûÈ F¹ƒÂ83³"crf¶ A1{(_·ÆæÅ_¥ÒØÄf´Î$X’ô?w ¶’ÎPv=OÖu`Òç!™7ìH£ ß½Îó•® 8ÐÚòów‡HââÚØìWL®5y‡Ki Æê´v›Z¶¹ ^ùõjûmÉ·fP%m?B–îËÙh†ïü-™næÑS:Ò%cËâyXnH(^?I¤¶Y8Úïõæïv„ -´‰¥”¶{áFR¼æŽ×¶)xZ»¾`Â? q~ÂØó¹'hIo<×K7Çnnúü½ ¥_dÄõEŸûþ¤Ùn7êg|Ý´ŸZÃ:ɹ<&}À³/6¤1™ˆºZybä=/FÏâý/_±!ÄØÛ¿çPl8‡ãp¼²G¬ PIB]1* ܹÕ`> T³GKüì§Ghç÷ðäL¡VèVŒùŒQ‰Ð‹Å‹¥ÀÅåŸ>ç?oðÑGW¸¸”xíîf3BÓ ´BUiÊK‡ýmæäL˜N|\"Ãëίe󦇶Ư;~q@µ¤ù ÍûNd;Ÿ”’Ô0øö>Ã0 ªªÐ¡@@×uhšóùÜŽy"h˜†å±¡B(D¾¨àªæþ“-P€Tsú®uŸ¿+X³=سÐ üË_ýUüÒ7~ Fß÷¨ª ÿõ¾‹ïÿPJûùB`°ÖÞœwX³]pS6 wã•Æ] œ€£ßÉç£sµo$£gIƒŠK²;”‚Q»_D¦ú¾4ÄóB” ʨcÉæ‰¼#È”,Œ òþ‘WÌT`¯9dšöÁÈ: "(­ÁZ'¯9 Jlñ„ç÷ –ó@ê—`¿_oŠÕŽYm:•DÄ´¯âì ¾SûR0> ÆâÍv^³ø+czÆ8Ï ¥Š 97Yìƒ8úÏ„É}ÐJûß ·•=ycoùýh h"r l†íŒ>ëξÆ8Ò†Ð$.$äE†õ ]kn¹ŽI@=n9ŒÃ~öÞí{‘=Hà™71¢¸eêõ¸ P‹6z¿ó3†‹y›¤é†‡=ïK›>ºp²kþD7î^¿éü¿Ùú´ï£µ÷N]Ïóël¸a~tv(ºq”_ï£K{çwZvÚHFós9Ä7£ë¼ŸžuGéîëÀuÆñPl8‡ãp¼Âà¼9gUê†qûv¾¯p<j¹ÄÅùSüøŸTõ=hº‡{ºA·øM}¦2¦7šOqµ¸¸œã£ŸIüð݆9Z)0ŸuhÛ+4ͪJ Ìö ³ÍzŸÁš1+Øê³KŒÞ/’ÔFwr`o@5!¬éa€²å0 ¨¤„VÃ0xÓV’ÐÎgøú׿ŽwÞy«Õ mÛbµZáÓO?Å÷¾ÿ}¨Þ¤T:ç¹)C“–Ò„3f·§š¼×K¤ŸÇqçÎüþïÿ>þàúßå0›Ïð§ÿçŸâG?ú”LPQKw7 CPÚNy½§ÌlL:˜“Bšÿ]=–6ÊÍŸóïÝVΧԥ°Í3:ÜŸu¦e¾ ‡ë&±ã,šìz˜’0‚|±a wü=NvÅÿLÐ @—ð—¿Ç}NÉT-=ßi ªÒÜ>q‘Žð&WtЈ½®#í’ß÷WøN¾à÷_lãõÃu²ž‘g¿æçE΢ œæž³›ÄÍ403—ä(ãâ?Óµµtž®Ÿ•£õÿ…®5¼æÉ~ +Ù£}Ú2^Ľc~7h/—û"×ÿgo ýâ÷Ò©k;øÿì}MxE·ýç¹®]ç»ņÃq8Ç+¼¹ó²ªšh[¶épÿ~ƒ§g5>ø`Ï]B¿ÂùRâá»sÜ:} uUãhV,WΞ øüsŸ|ÐácqÕàîk§xøp†»wŸ¢i.1›õ¨¥1à;ö=æ Ü6hï²eоì wÑX0\8âT$«CJ hê÷ïßÇÑ|) Ðpyy‰³³3œ¡ª*ÿž¶iðÛ¿û»øõ_ÿ øi­ñ—ù—øðga±\ÉÈ$å­¢lÛÜ4Gð”0Oa¼\GCœ% J€ó‹´ëº4uƒ£ã#H!Ñ=ˆU]¡ª%º>b*²@lpƒ>»Œ}ø¨ACiUøXO~Nù ä¿—Kpl2£Þ¦ Qz_ÞA_ë:£cÂ4³dª@±mÆykÙWð¿Nb)?Ÿ)3åu€c8ofdžŸK)“qâˆ]´{Ñlì1âàÃϱ\ÌðáÏ }O/[ܽw 5¤Ý$»¾ÇùE‡'g Ÿª±¼:FÛT¸u‡ðà-ÂÑÉÇÇæGh@ÌhŸmp´»4 ö™¦|Ì®&Û¯M;¡n'Ý<‰ ž îûb3OÏ}±íçJ1ÞzûMü¯ÿË¿Å{gU·@Û¶¸ººÂŸþéŸââïÿÞ€M¬A$¡Á•DÕÔ¨ªJ)H)!*‰^ Ð0&¡åßÈeM¶^ɲ°Ï5éb ||¿_`Pk¦mä¿ëŠ%Íömžÿ ²†„,Žù”6|~mSʶ€Ìºë–@@i ⱉAÿ(¼NFɘ¾ßëdÕò{vÄï-{2¬œŽ¼ó)mÜÑvSˆ¤P1x‡u=¿—^b®0W¾ E‡` ÷…"ð%°&ÍèÖ­×KO¬ëŽÊ‹F‡cÿëÆÔÚ˜üžf÷žóëÀåÃKûÅóºù<Œ»³âÎÐu{ÄM÷ƒRÑ<žµLé»yâµ©Ž¸}®ëd×Ý×ô>NHx>§5|Ó3â=áðòÚ’ÉDÁñe]ãnz/9òäØ6/{Å×}ÉiŽ/NÜ…Cçàs‹ƒ¾Ç¡Øp8Çáx57¾r¸BU²ÒмÄé­÷T¸ÿ`ÀÏ~zI5>ÿü Ÿ~à •de†ÈŠÐw„9†ÞHsܹ'ñÖ»ÀÑ­Ç8>¹Âl¾BU­@bˆ ¶Ø@Ù¹\c×Ìb¬;ê[Õ9MIŸó±”Vé©õþ.¢ìýcŠzÚkãæ]„/ÓºÔå‘v9„ÃYhäR æçAs8þìÒŸR±²$ùµÐæeî^†qÞ¦³Áß7ƒòS{CþZlô[º®K©X žÜe§b¦Ô|1/`äçÿ2.&»n7çÓÎd{ö;»ÆZx¢íPäÝ P[8&¼Ø‹›S&Úëµí3~{NíážEF4¥Î¢±TØË‘¹çOð—«Xñ2Ål¡hË;¿¶Ê1_íãyX&®õþëÈ ˜ñ ;^¸Ñý-±ÿ×1o7ͳüs¶éHß›I³%Íô;òâBÜï§/3pû6¹éz3ì¸ë(&lê²}6ìõM‡u…ëëEé^–ϯ<–ÌçÞî^íÔÚ·}î>âŠR ð²€n›â gó,ó†x¿\ø|q÷­4Ÿ·ã7}ÞáØoXÜÃE©Ð¼¿g亿{8vë}¬‡bÃá8‡ãÕ^4],EÆKXHàô°ê€nXà+ï¡mOpëTáÑçWxôh ÖÇ×ÐÂhijbTRáøV…Ûw$¼ÃxÿkŒ×îáÎkW¸óZ£ ) ƒ®i†AûD Ôt’,ľŽAË”‡G¶°@©Ùž‘ÃçõÁ¥3¿ôòIÈ–mÜ¥HóÏ!ÕR!îŽÃe[\0·] i[A²Jî 3c~t!Èû\\\bÚ¶òoß÷>Á¬ê$$ú!õ $@‚ „4cgAfÐJƒ?—¨’ðžëäÂ$&ãå¤×9WÀëÔ­jö÷EÐ&ž '¼îªJ¢myY²®ïѶMSc6Ÿ¡ë;2@k z#?5h ãZá€_s´)0{ãN! œƒ¿"í,`fiîbs¿€CB€@Ðv\½¡8—‚¬$ú®÷cê % Á½–Ë/”þ2ÀË7Ä¿+„À0 I±a ~ñ(ÏRð½ º[ÁjÓûnø»"L|Ÿ¶aŽkæ‘_H ,Iz¼Ñ¸óXáß‘Iµßt2Çò1ƒ¢°Êm¼¼Z¸c@rÓ|. ù1¬¬5´¢k6~?Z%òUÂÊå‚ÈÆJJ°íA¤‘ÏÊ‹â¶~yÃY2ùµ{×Fz‰€žØzê™[\N³‚…öâ*òaÔä¼NµÑtÞ”%ض'ix¤-æ‰ëФMÓ†ûŸxUùÎÎ)v>Ùè…ÒiJÛμqwɺýn¼³Ò¸#uÝZ“fín’;Œ œé>?êѶ…ácz­¹x*!^ïcÉʸ–l°Í|¾Áûܬ?®Óò–×J÷¶Ž­>‡&âó« `a:yro½©ÇõýPâ¹JYGâ‹8nÒ¹O×ü½=F \{ 1_ã)æ½×Ú¢¦÷fÛ¢‚nBö¼î¹ó3›•ëF†èú}%ûÎņÃq8Ç+}0ë¸ÎkÜÖ=´ÐôêZcÖJ|ò‹s<}Ü`q®1ô½ZYÓß ó#‰;÷n½¦ðö»5^»Ûáîk+œœ\áô6º‚² Ë¥FU…ïO«lq@ÍÑ^8Ö×5Ä £Eî;&œLSÜAAsÎÀÂ}ƒ°}W8¶¡!DÆŽÚjƒæ5AÔM-3³<^Wm׌äH×u‰ö»¹ÿæ÷‡~0ò?D`ÅøäãOÌej†¬$º~…?ø $ ß!¥ôÏ.dI‰AiËdÔ`^ÓR˜f iDz'@Î$ÐZ{]ç yÖ@Y¢$¬ÑÛÔ =˜ï{ˆÊ U%¡5cÓ± L"¬ÔÀ2 BÓÌL!CJÔ†3„z{3ÿ†Á]¯‚¬$„úuS'@PÌDB—€RÊžWe¯GYð_CÊà!QU••#0#Ÿ/«å*é(pGß÷hÛ]×ù1qE¤øsÜÿ‡a@]×þÞ; ïðëÆ7.l¬º•—ã0zñÂÎåDÈY®æ÷UQž)~&EТŠúÀPæþ¼öù\ÏÌ“Í9¥‘©Duªƒ$ÿ¬ø~»B–OFâë·@ ‘1€vÝZ»µÒÎs‘2e7±PÇçaA3%}î/fœxDÞPÞ—•Pb”ºA"@3óº(Þ7W|Ñ7O<&»á²ß¹yâR2º¤Ž39SØ"µéT0ŽL¤á €Vìçˆ[k5Û*Ø«GráÜ(‘ÁÛö>—æùuZå½”"&d9(¼öüv J˜êv1ÁŽØgGÜé³Nînð¸¼Ëôý ûVúû°{fªJé1 w1…æ…óÕÅóZgþ>~æx’àí”ÒmÙÄäwÝ.®dÖ +‡Ñs9=µ-ˆDÛ7Ì¡àç¼±ò¿ñ~\£„™“OËäžÆëo3C‡›°öí}JURRkPRhHãè|ÞŒ÷çTâóæ2VD7ÜÖ3ï§ö›]¤Ön ¯_ËÆ2¦Sù‹Æõºt'çc 𴲺‰´Y.Û¶€”®!=YŠ97™[o–!Ýpz“ÏØ¦ó‚ŠkîM -{aøS¼ÿ­÷ŒœÚ˹oòÕ¿Büpó1¼>¿.OÚ×ømKÛÔ¹«·Ð¡Øp8Çá8Ñ^éð÷¦4÷˜Ït—PWWNj¼ýÖ13œ} °®À$ Qc6¸uOãè´Ug8>îpë–ÆÑQ! Ö»Õ[xZ­‹ah]øoö(t5˜‹câ$¸t#ÎmLy¶ø‚Þ«Wm c(3Fmlôl‹ÄPJyP{ÿï®ëÐ4 ˜‹ÅÂëÆK)¡µF7@½ªkTJ‰ª®Ñ4•ÈÀJaè;" <êºö,g4÷}"òçÆŠÁ‹ ç§ZdÌëFǼv½9着@’P7 êº2 ¸VX®©’1k¬D’89=‰fU`½-W«H&!$ʃ õ༾ÐÔ3hͨ*óÝÌ )LÇBœÄP:·ëºFß÷€vÖbè¨A¡iÓ±$ÈBÂ}‹Áþ$ˆ»$*YAVC?˜ñhjÿ­GÇGhê³ÙÌ|¦Vúa”ð»×vÌ5@ S$RƒJ‚µ¸cÂ.º®CUUh›Ö\_ÛbðfØzc½Myݧ—h#rÛ`ôfš»¥Ú1‰s ¢I9”œæD?ï| "!G^8¥®Žr×Iùþ›"qZ,ÐŒâ¦ã)¬êX¦Æ§4±?ÄM“Î*£J·bzÞøy¼Qƒ/l𢮶 nÚÍNUäÉÅšAkÀD¦ýÝ£›È(ÑVãUZ;ì̽æe„ëñû›ì6›àTÐÆõo*¢k©—ŠÓ]j~eYK %¾æ>±Áþ)]E©HìOu P³k¦Ø­`éäÑöŠÑnÚù»¯µ<ÚcÇçÇI±… ÒøÚ¿nç"¯ëØæÙßï³z3˜6šÇH T7$Ä2S)ØxÝç^Dòµ×ÊWJçIå»C>¾ŽÏw¾ÓÛLä –ʳ!¾¯×¹v¾Ö;9ä·Ì»—Okó˜¬[ÿ×íë7,8ìõ6Ä¥bî†Øxw™_Jµ¬ô^¼Hl÷ûIحعî8Çá8_ªƒš ¨e… NfÅÝ|…s ÏŽ4i(­ªQ5„öx@;7nÝ8š ¨+Ó €¨èŸÁ>œ`d‰Ân@ƒ7:¼áÆåÛÆ}ª“ÖöWI†Ã0Èi$_K³h­qvv†³³3œœœžþøcüð‡?Ä|€ËËKË´-—b\FÚýa‹ 0Eb)$À„×^»ƒ·¾‡ï<Ä;ï>„­ü1~þÑGøðñ\.0 +ÔÎôÙ~¤ÂΙH6q”0“ÿÛ¶‘@×uÐZãääo½ùo¼ñï¿ÿ>nß¾‹‹ |ðÁøì³Ïð³Ÿý WW—X­Ìï7M“8®(Ów=„899Áƒ7àÍ7ßÄûï¿[·NqqqŸüä'øä“Oðá‡bµZysi§ûÌšqzzŠ_þå_FUURbµZá»ßý.ž>} YI¼ýÖÛ~LŽ¡µÆ~ü#|ᅦ~þ [u~N)¥ððáC|å+_AÛ¶ÐúôÓOñÃú!T&½Ï¿;wîà+_ù îß¿¦m …Ä0h|ï{ßÃùù“­žåmp›L*דÛ2êÖ½d+³åúRòkp…>w]×R~­[i®g¿0DÄHÏ¥0¦¼%J2M¦0¢¦×âÌ¿§A‹ñ}K€Õ/¡ŽíTWQü7Ü\Ê‚u>'¯ª6ðËdý,æÃ&†ä.ŸwÝ90å/³ÍØ”Ìä_*PcO¦ü™ɵ¬‹Øw x×=7É IDAT³5wg—nçëjî2Ïö{à˜]\(6yl2î´‹@¹@¸›wÕ‹[—Æ2‘¥ø ßo~ l»[nú\lëf:’¾Ý}-ÇHjkÚKgÔ& »â¸SÐm=pŠ7åFkÓÍ÷ÿ¶–:Õ¶Y ÷!ƒÆ;yßä¹y9îÿMîßè}×5Šç—ȘûPl8‡ãp|i‡kÏVíp4P5c6X­€»wT¯¡u̓1 %ºÍ€ªVhg„ºQ¨ä°+ãQÚ›ƒVtP´»¥OûØr}w„O¾54+Ä+0”¥ÌádyX|~~Žóós#‡ÓÔ¸¸¸Àùùùìþæ7¿‰÷ïÿˆGó#ü—¿ÿ{üÇÿôàö×ðÛ¿ýÛøƒ?øÜ»w·o߯0 `­ñù§ŸâïþËßâÏþìÏð·û·˜ÏçxóÍ7ñ;¿ó;øæ7¿‰·Þz §§§B`±Xàìì ßùÎwðŸÿóÿ…ø¯ß…Vl ZÈZœÉœ—R½í0’F‚©‚†•E89¹…¯íø7ÿæÆ×þÙ×qûÎm´³uU pvö‹Ë>øàü?ÿïÿ¿ÿ»ÿ}¥ÏÊ^­–# ÄC©'UµZ­PÕ-NÚï½ó~뛿…ßùÿ¯¿~§§§žy}~~ŽÅb¿ú«¿Â_üÅ_àoþæoËå2“W«Ú¶ÅÑÑÞ}ï]ü«ßúWø½ßû=Ü¿§·N¡•ý¼‹s¬–+üõ_ÿ5¾ýíoã;ßùV«•I­¡ô{g?ù“?Á½{÷ µ†Ò ÿáûøÑ~„ßøßÀoþæoâk_ûnß¾ PZaqµÀÏ?þ9þüÏÿßþö·ñãÿl妘_ýêWñ‡ø‡xçw|WË÷ð}|ë[ß¾ÿü:ÓèÕjxã7ðÇüÇøê×¾ŠJšìïþîð“Ÿ|€å²Aßw¶ GßÈ­¤s¿íû·-Rl+_²íw–Š(^ZLkßù3e¢]’+OkÎÏŒ<+~O­1w2zŸ-|ÚŽiîï±vë‘wˆÈ¤–DlºúòëÜ»»qÇXɈ=$÷¦ã¤äãò,€Šg•Tç†ã» a'Í­ç8®óœìbä¼Íá:Ôb‰Æñ3x½1Ë×­¸x¸«Yú‹ÐbŸ°ÜggÓù¤×EÓÞ:RžÅóz“ß]Š!SÄ‚‘$XÒáðÅ. :ùY'-Uò½Šãô)òÃ.1ÉËvºÎÌmŠÛEi3ûøÈ‘4æúØ!Ÿ“»ÉE²^°2FÙú¸µÏÝüù~ÙHc‰½mÆõº¾ŒçM©¿éý¾^ÑËGüØ×z»I3Ðο¿ÏçæPl8‡ãp¼²G¬>C¯‹’D`  – Y³9Àzó&mÔBšßÕÚìál=¤¾hq|ZBb’/ã&_ôJÒühn< úW‹+ˆ³6ày·BÛ°»mZ4Mƒ¶mqûöm¼ÿþûø~ý7ðk¿ökxýõסµÆåå%ªªÂ|6Ãýû¯ãw÷wñàÁ|ë[ß‚”ôG„_ù•_Ál6óÆÀˆ¾wïþõ¿þ=Üyíÿñ?ýïøé‡Cÿ?{oÚdÇq ?™Yu—Þк±/@0’â"™@ʲhY~ýNŒbìí°æ'¿Ìûá•lÉFa%Y-Š ’ ±ƒXºÑ^ÑèínU•™ó!+ëfÕ­ª»v£ÝŒèèî»feårÎsÎy!e»¾P0ÎÙÔ”ÌûçÜ?•SÊ´½ ¨Çi-¥¬裻—7RÅ“È%oÌ ½ßÖž…ÑyA@ =}ïµ¾Lw;â|ëI™èvKL‰«×ÖNÖe½*ƒ0 JšïÌù¨ƒ Ñ9Úìþ¶?¯Þ|’uõ4Vk¾%U°¤ "×ö?iïIÿ¸s—¤½¤±ûÑÌxèŒv)Õ…«K µzk^ a‹ÄûfÚõIÉqBÉ«Öô9=‡’®§Q{ÏL.«Õu‹ÿŒº3ã¼ W"e_5ç·@b;àè£@«·>Jþw½ýµÙki'Éf½ÑjuRû¤å¹ÒôžÞ }†¸Ö 6t[·uÛcÛ|ªM˜šœRªÊêÿO©`ˆ( P ÎT€;'%á F‹§Âš:ê5 ˆ¤>.-lG„viØH±, ¸7q{vï!“÷&133À³j2ÙÇÁ–-[ðÿðظq#lÛ† %,¦¢[¥RDª ƒ§žz û·‹¡¡Í8rä0\×ç„ÐÆ™„e1¸®Æ(Nž<¯í%üüç¿çq@z°,êgÈýñItö ³Á‰„m[Ø»g^ÿ‹ï`ßÈ~ŠÖ¥R)Ãã.*Ž‡Þž>dì¬ äóÈ÷ôóÝäÍ5u0`‚)R9B×CoO/Ž;†üÇÄîí»À=ŽJÅA6› „ž5p (GòСCøáˆŸþô§xóÍ7Uu„¥*P,Û‹/¼ˆþã±k·ú<­ÍÀ9G¥¢„žmÛšCO¨ÏÄ/~ù‹XÇMƒù/¼ð‚ \øÔŒ¤”ÂuÜ`¬{ûzñÊ7^Áøø8~ö³Ÿáþü}À½{÷ðñ'ãĉÈfÕ8ær9<ÿüó¸xñ"—Á,îq¿…cppÇÇàà ,[m*÷çæqõê5,..†€QS‚¿ž×k§Á¢¨ƒf‚ Ífù†Þ[ÇÙQbÝUÑÑ8g*;]¦8aRT…£ÏG…î’h¨êZhþqÙÏÛ|LÐÖ¼wQ®´9(Ñ>ïÿz›Æ ”–EV…ÂKB6·Þ_%“x ”´|/õ\3ç\;UP¬-í¾›oÜL[»uÖZÿ£Ï×êŠ<÷/©2³ž t+÷­Õ*ÐNìiTÍì9Ñ`C½>¤%b!Ø’ÀHZ7_Nä¯Õ¿Pš,¢fþê€E#˜I .AûÕ_íÞÿf+i·ýu}Ø0º ¶öþ['Ý`C·u[·=ö-.ø®eª:A'_¥Þ, êh]*)ªbžÔàC…”¤ Ô™R±. Ó<ø¢eG·ãÝ @ïô7Oãüùó ¨Šâ€f©ªƒ«×®âò¥Ëð<‡ÂÁƒ±}ûv¸žÊ¦\àë_ÿ:._¾Œßÿþ÷ ,¦ÀÕ+W1;7‹½{÷ú02²CCC˜ z>mÚ´ ûöí¸Ž‹|>›7¿Ä;wBóX±x"ï£Æc ±Žs§³Rͦ9öZ¥´0ÇJÒqß™¤å”PBC{H'Фï5i”'g¨ rÈX‡WÏ“zs!š=^;¿"Rg˜K[ÕÚG‚Gì Ïo "µ’U±~æ¦îKÛWÛ&id› j^ ÿÜ×} „‚ˆlì\-à"-@’žÑ_o~ʦµ/? dñ²Äk鯓 gœÆ_bµ—¡Nœ4îUP¸óã÷°æW½ûò°®¯eJ=ÒZW½`CèµPº qýTt0W¢”fÄ97Ÿ×iJ"L)Gˆ$¥¯YqQ»p%ñâáS†t<‹¼sö2iøLx\|ðfÀêN\s§*Â:í«¬G{îa´n°¡Ûº­ÛËf {³z“T˜*Ÿ¬ Hv·ÔÎiøÃ¸… Ù‚‰ç¬¾VJ¡ #߈;T³Ést.èЬCü(‚&€2CÅîTüç›ÿ‰÷ϼh'¸®«èˆ¢™B&H%²SS“xûwoãý3ïann6 àÔ©Sø«¿ú+0f#›ËÂq\€PØ6Ãä½ üî­·ðѹsX^^F__^}õUü××¾¥Jl  Û·ïÀÈþ}XXZ•n ÷Ak2Ö—IÉd±sçNär9(Aä÷çñ¿ü%Ξ=J„Îÿá<6âå—_ÂÄä8._¾Ïs¾\=/™e»2$ÔG‰ 60fƒQ ¹Þ>|ýëŠcÇž†à®¸ÇqöìYüÿûãöíÛfÆàà ¾õ­oáûßÿïèëëc ìÇñãÏ`zz¥RÙl¯¾ú*ž~úé4*•J¸téþ×?ý/LŒOÀã¸Ç±uëVœþæi|ÿûßG__/˜Å°ß~<óÌ3˜™™A¡P¨:o=!wîÜÁ¿ÿû¿ãÌ{gð`ᜊƒ|>—^~ ÿó‡ÿÃÃÃA–øæÍ›ñôÓOã£>ÂÊÊ \×Åèè(Î~xÛ¶nƒeYÈd2Ø»w/ž}ö9|ùå—ª:ÅŸƒ¶Á±mÛ6B`gl,//ãÂ… ˜˜0Šv kSÞ¿:kç³+c!.ýT+6ÕꃸL …Y&ghïI|!‡7 Aµnit@¡à@ˆ #þ%ê´rÎáÛ§?[K`uíœ%ÜŸ½^éBJÄÉ,ê ¿–mû¢òÜ×¾‘ ’ om†ù£âl¶Êø¶HÈší5asMÆ‚KŠtkPKï¬ hüÚdĶ‹·%Õ«T€9-˜ÙÎ]å9'¥¯#Ulè}_3ãß(˜Ÿ ʶçuüëU²FXô¹ùÏ©ÍöïƒZáæ}’VÅ£#ÂÊØKÒ*›|aRoÿ-®ýêg$í·qÁ†v\óýôaûCm†J)4vÒÐõ1l5žú_±çL¿1š¬¦l Âj‚ø¦ŸmêŠ$ï%É"ô"ÑÊs]0»¡3~û±Þhš:u¿ÖÊvíº­Ûºí±of`!à.5ÿ—µç¾Îjô+H«ÚF”¨1ìkMab\‰eQ¡ô 4$Æ…$én½6 ©oL‡ô|ÇO”8¦!gÒMèÖzNyƒDëÀ饆±Î`eŒ×\,CL 0;)%ˆ¦¦'ñÿÿèÇøì³Ï±²´!<,/ðöÛ¿ÇÉ“Ïbß}Rg¥SÜürÿòããúõkp Ë…2Þ=sGŽÀž½#*{C[·bhx”Q€ëyAý9­ÁÖZñØ éû÷ŒÈ0P Ч‰’®…ƒ]âxØþ±ì `BiꣴNO´ú¥þöï“HüÍÖbàÜ iEAÕðõeþ˜ÏÕ~nmæøG'U‘ÚŒ÷FÎ&'§\]{ëŸ4y¿’ìù´çÚÝ_VýìkçGÖÿŒš9oüTéþE5@&k?&Œ¤ ø~ B?”’à'ú\õ^Ô¾6®jjµövlØeq x];¦q?›­ßip["9 ÿf~ÌÏR¤~ÏcaO¯RëV6t[·uÛEK-óM«Lho—D ÌÊÄ$‘ Ì‚Šâøͳê;*Rò؃Â4áÛ¯ŠËö×}o÷@ªåáìü¡YØ,¯g™í!Îó„Œ u,F±qC¿2Ð%‡„€!Ü"(U–RÀã Òþ€D¥´¢þ’"”Ý寽NY-ÃÙ¾R T,àúõ/ñüóóØ´i¥r™ŒC‡a÷®ÅÅË—ñÅŸãîè¸Nžë ê ”pî‚‚À©TØÁ(!àRÀ²,I!–•AÿÀ (µàqµx,ËÆ3ÏÇÐÐpŸóœd8RJ°cÇŽ »œsŽþþ~ôõ÷!ߓǦM›( †1ÆŽ=Š7Âqœ`¬„àÂC&cc÷îÝBøU ahh·nߪ¹ï”Qär¹HeH8syqq÷&îaçŽ øa}}}رc®\½×ºLOOãâñܳÏùÕô÷÷ãé§ŸÆ•+WP.—áy¶oߎ-[¶@Ûf( ¸|ù2VVVjkMʪv×{'?cMŸ¨ÞMÆr£Zq{HøÿÖ9gƒ~ôKºïZw$®?äm^2¶B†tL ±GLÎ-Æ&&ª«"jè’VÑIßmíÛ ëšBמ녒Q,Ë ‚ I}_Ï´hIkìaõ¥Óób­®%M¨¡~ÔífméE»•"ßëªÕ»qs+î<ˆóq¹ÆõfuBà8Õ?Š8²f êŒdÍëÂïVÈ'é‡Dh+aüoÚ7þ“"rqöOœÎ^ž|³ohë~6B¶íøXû«ƒÉG­®™Vƒ][«ýÖ 6t[·u[·µh4´â”(£‡@–ùe¦ZXTU± >~Ø î”m‘&˜Ü‰Läf³ˆš=Ôë9^q´GQã'–¿Ô ’2¯!^\Rgþäó98Å (%ÜÏö"LŠR@Z¥‚¨ûÍ%ËÚþûHˆÇTgÈSÆ B‚~2ÅY–°ƒð<\úâμ{_åô÷÷ƒÀ (~Ž?ëØ²,|ç;ß (LcRù""BBÀ¹d¶†ÀIª‚$Üãà‚ÀŽaK•‰kŠ-×uaI¥ÉÐÓÛ‹YàÔçv—øì8}ú4Ž=‚|>‡#Gcpp&'K ”â•W^ÁÆœ Ì?˜ÇÕkW}šªdú„GÅð­¤n”KêíWæÚOÃFÑVœÖ ï²J‹¤ç¥’ÊØ½(˜Ÿ$Y õQš k9w)£±àCèÀªŠgvÛ£Üt`­hÛ®mWω£p" R¨3ˆó`/ÐgcL%E-X³ž×U# 6ªî]ç{Vœ­Üéù’–HÐh ¦–Z«v?Ô-jÇÊë‡Í‹/cä"ƒmÇŸyÜøÙ;¨§ñ—äïUéxiCûVœ_Zk»‘€Þ„ªú !T•cÍwк×Þ°Ÿº "Ô D¹OÑý~µmÀÕ¼7Ý Âö[7ØÐmÝÖmݶÚà((QZ ’ÙÒUt9 ƒˆB‘ ´ÖønÜx ‰!ã9-‚Û,Ìba€PÄò Gq“;ÉñÒÙ§–¥Ž/ÏóꂉìŒ3ˆu¹¾æ ËÐ󔞪‚­q4F0hŒ‘;1„=ª@b5pÕ Ðפòšùã?¦„‚Ã.½îGT@!=ŠVèÍ7ßÄìì NŸ>ýû÷#“±Qq„j[·oÆÁ8ôÄaüáÓOñëÿøÌN߃ë:°,”ÙàšÛ^*Š% “ÉT¯ÅQµ ­à&B€s]"$C׬ư36!p*²¹lH‡¡§§'¸Z°[4@5à¹(#Ac žçRhD„æ¨@1‹• !=ý·ÿ:}]”R0KUX0ÊBóN{÷pñâEìß¿? ‰Ú»wFFöâÞ½{ؼy;wî %Û¶páÂܹs®ç‚QfÐfœ{H¡eY5ó§ø°V¦r»¢Œõœþ¸um®±4&º6ÒþOYjèØŒ9RWÛFʾdF\ᆮ# H¡$J«bˆ¾VI¨ª>bÆ>fl5kQåÐîü¨—™ªÇ.î¼H‘¢ŸaÙVèõRJ0BWmŽwÛÚìKµUQiAÌFæq+†Àîð©Wg ¢OªÚ"Áþ¯”F%Òº2ÔÙGu%b+ pt¯5×w3àj½lïFlêvÚªmœ|æ5³§êqÑã«3ÂãìÉšë#µg\#•²C–md,(I×k0uõ*ÖXl›¾M6?¯B{m^«ËÔ_ V­ÆYt-¦Ûh¤f~Ö&nÅ­?õ¹4¨ô R6D¬%‘ „&&³?‘/ξI H™”—Ñ„¦5ÝKe•^©‘yó0@qó>&٤ѳ¶“‰2!{8æ>u:Aðø ×¢uƒ ÝÖmÝÖm 21ü–$Å 4¸í…à `´"Kp* +`Ìw4$%ŒÔ"Ç¥„ç^õƒPï… T q™š‰$®ÑC† Dk÷«¥ª`u¿Ïü£‡a–RàIî¦øu4È¢„PŒŒ°š*.xðÚA €;<ð瀥3i!w.Q•+„Äs+SJ• K¨O«¢ï-ǹÑOÌ#Ej æ†5%TðŠsËK‹xÿÌ{¸~í*Nœ8“Ï=‹í;v¡¯¿ŒžSeÃ[¶àÔéÓÈå²øåÿŽÑ;·}š/ 4ÿ*Õ@¦¥Lé3øœ«RpØ–OrpÏ066Š……Å@ÔºÊ?Mªš¾aO j4 IDATÁµk×05=g48[vʰ36îܹƒ¥Å¥Ð{¸Ïu͘zH ܾ}wîÜ ^8<™J+˜ST E‡Œl¿ÊBÓs‡ Tœ Ο?^x»÷(:§mÛ¶á©cOáìÙsغu ¶mÛÐHÍÏÏã“?ÁòÒ²¢°Ê²`~ÎÎ×YBi†}Íßm–á7K§Ö)§"ÎV*4*~Üh†{šÓë˜6˜ù%×)ÌbÅO¨úßi”¢ B\p÷Q‰Ó®7.hD"ã%|að€B]+jËü™_9F•´JgF‚rÃÇfüÖ«SºšÎõZŠjì„)á4e`”®Q³Û Š—…ç.~ýë_ãܹÀyU‚1ægêW| $EV*•P,±°°€Þž^Ü¿‹r©Œ\^é*¸Ž‹ßüú78÷ѹ`Þhš¤l.ƒr¹Î92™Œ? ¥b 3³3¡ìPóof±àÞZ¶áTÇRh>˜àÏÂÂffg &s~ß¼y×®]ÃÞ‘½ð¤J)Ž?s[¶ cß¾}ؼys0Ÿ¦§§qëÖ­P%MÔЋ­Lç*-øÐŽCÒ©÷IO×Ö G'.K®Þw4 ZU˜ð¾WÕ(o¶ÔÏ”·mBxð@DzÕD=ç*î}úÿj€´³•«á¼¶óyñÕg ßS1¢ƒ?Ä%5”õ|ÍÕtú“‚ó«9æõ(§ÖŸ­F:2ÆíŽQÒk´@¹yVé³KÛ8Ú¾±l+ Ð²zÉÀo½ŒÍ‰‹þîFƒ¼cî4+ªÙ6G|Â9Ö(Ý_ReC-Xš]_æ¼ogi¢B Ô 6«íSG©Lÿ†Ô´‘ð|Rð"Æ4H_Ïœª*E:uýDÈÀùU”ÆZ$Ç8Ò O@1é •Ž›_íG]”04 Ä«…q¡ÀZ°Ÿß_–é•ïæZˆ>KÒÀ¼^(—Ú·MHK{W\e_œ ZK¹úxUŒvª‚´À4w~µbK¶;‡ºÁ†në¶n{,['WM]¤“äÍ „þ›Pßæ"á@Šã}÷–Aay œ”œ~HÆ`³,,ו VÖËæÉö²³`„‚+°ç(a~f8À¥€mG™û #É4Ö$ ‚ƒ1iñP‘u ý›R ˲‘ÍæP©Tpß<ì,Ë‚çyèéé ¨‘´ˆnØè „ÁšGÓéÏæœû€<5|¸'àº\×5²ÇÃ@•ǽàs@¸*™U) …¢KÒ|Ä  Ä@Uà€èêUÕAŒ*‡ 2ú“Gª5(y!Šúêcàœ„Ä»õëâJ’õ+¥°,Î9×…”+…e¬ ˜šžÅgŸýûöîÀßüÍÿÀþƒO‚2 BHd²9>zŸ¿€¥åeË€HªæªYï–Åày,‹ÌÍÍ¢X* ›³ƒÕ´sç.ÌÏÿ‹‹‹1Ž»rf„Èesàœcee–e¡\.cvf¥r ™l–mÁs=ìØ±÷çîciy© ªrUñªó+LüþjÊ¥³Èe†³HC%ß°kç. …Ƽ\.£°Rèœô<’BâþýûøôÓOñâ‹/"“É€Rн{÷âäÉ“xá… ™s/^ÄÔÔ”Ò‚ð3ÞM^ÏsÁEOo/(UÁ!çA´³~†ÿjð²ÿeØu½ÏÓ\¿òU·Úëbx$X"J“(H™âxúAE³zBÀã^G«@Òh :zÇ›P·èH LÇÃÁš!4˜­éC\©"% ¢ úÖ¼¾ÙE:a‰t[+s²f÷mƒN€q|âu÷(?Q$J3Puùûi‡hjˆz Õ£ÐDцúëÛ¨º:µ]Ì,ªiÕ´3@š[ΪÊÓ?3P/;Y¦BÑŠ×T|5ªù@Í}²z ÆY(X+IMõpÜuî5tMtY£ÀX;ÁôºCMÎõFÖ†lp &‹Íî‡ÍKÈ8Š$Q‘@›%Ú_©Ýé'MQRCs•t߈ÁLƒ iT.$ÔQ„ù²x¨RÎ…«øIpBȈ¶ýªãfØ0_›œ¬xÕ2a>’fgUóµÚ9!Ѻ¢ß/°^ínŸÇØØþð‡?àæÍ›¡÷xž‡7âÅ_Äž={£££øàƒpÿþý€·PbË»wïÂóÏ[·nE©TÂûï¿ÑÑQ,..íNP• q@ý­ àH†, UƒXè  Æ,?‹Iý !A$ HYŒ¯}íkèéé egŽaffœsX¶,|B <îáÊÕ+¸wïöíÛBz{{qòäIìÙ³žç —Ëaaa—/_†ëº! ,³oÃÃ[ðòË/áСC ”áÆëxûí·1??ïS¿ˆP6]T÷ƒ´lq€EÍBàÃtÞ¦®ƒÑ‡¨£¢7?¨*üùÚ» ¶Fö)íÀJiœ ¤æû¥ïZR"#´Ri•Äm˜2ôÙµîšB¥ØŽ¡'HNÔyš@£àîyípÂ'‰™6Ë“]ï³ëq´ëÇCïIiÓ*Eâ³ìâQƆ¹ÖIc¾j=¡Ø‡('e"¦ÝÛðóħ løÒöJ eV¤š¬Þþ“FßÓ,Ze‹„¬»"ת)þôë=Ï ”)¥ Œ†Ýú3ãø®“¨• ;Q ’ rû}×g‡®\ÔÙlj٬ñ˧­¹¿/Ö·j‰ÁåJŒhb|󸘋Ó{‹<û«óKß™pˆrà›û£N:Ò ÑùbÚùfÀ\ÿ­ƒíQ-5ó,W{[µÏ‰`u Öƒ‘¼TO›-î3š”N['ÁšÌŠð\æ†Fâ2‰£ÙòÉ%ò1U¡f IĈÎG':éH´?Ddˆ×L ¨Î} @rŸ ÔØ3Cã÷ãí€pßµíã÷‡‰iÔð݃LU"A‰ ”kS0º‡šA@¢”RQ,:lÏßþã±vh’½>gÓ`q{¿f¨>':€²×Ú@„ÀO˜á‘½ŠúûF•"8É6K"‰c*ˆbõ{]Ý»[=:š­(‹ö ‘бµ ȆìËø³¡3ý躭ۺ­Ûê4!àÚ 0N<®ŽUFá3I A•1J((,0bÃ@.×ÊìŒ ÏepPôΤ³ ^œ²D¥Dàyópœ æä D––$œ’[zètàÚY–µ8*n VYS¦©yQahL!¾-tŽ ©Ä­œÓŒ1|ýëŠ?û³ocxxœsœ8q‡ÆücŒY†[·nÅk¯½†W^yù|>ÈÜÄoû[LNÞƒe)g|dd/þîïþ{öìU”9Ù,Ž;†ý×Å;ï¼ÇqcÅóùÛ·o®}hh?øÁÏçqáÂLNN¶ªÐÃÃÃÁð–a|ðþ˜žž®r°Èf³!Ðfpp§¿yÅbs÷çPX)Àb¶mÛ†S§Nᥗ^B>ŸÆxvvï¾÷.B”Lº9÷&îáܹsØ¿¿Oñ”ÅóÏ?ÞÞÞ`ŽÞ¿‹;wî \.« ‰mƒ Ðyíܵßýîwñ­×¾¥¨¾,†çž{[¶nÅo¼©ÉI5&‰†°DÛé=¤Ž!Kdz´íÐ(Ég·žPt RgÊÕ^LBB³}ðŸTÀEWN™s²@`·vd5*z†hÀ¡¦¡J¸:ú"õ*"êñÕ‡ž'„ŠVÓ%žk‰ÀL#U ¤åóòQiíVˬfnZ0&À ÑÑñÐkŠsÊh-8áÏA×qCU&pÊ À`3ÐPC™$d,·¿)Øú°çF#ÙöѬæFé«FŽhRÕpg׋TÉJ ÙÒ ô s ÝM­³hàµÞÙ-«2$Ó4Œ™ß#¥O›CêγNƒv&ð]¥ä‰_4Ç/ ’Döb'aðú8ð3’xQKe–|®5² yès£@ÒL¿°%*eà°±.üŽ ø¤Îùô,Bª¾XœLRjJ¨oÆW‘à‰ÒSD”º˜4¶ñ4q6†æ\Çø–¶Nhì¹X |ÆÛë¦-m&HuZŸÈ)oÏ®nŽB/ÎWhÇ^j-aG8ƒ9µíM³¯OjÝ`C·u[·ýÑ´f÷{aØÐ:^Ϩ_1`”A™çpnsB2HAbƒÐ,¤´ 8$¡X„£ .Ð[… &9  E PdXZa(zP,ÙXš÷PñlÌqŽÌ€ šµa!.88|nJ!ÁüÈ:õÁ2™P˜+"’ÁÔ€štøõ÷÷ãé§ŸÆÐÐPðÎ98€'žx333(‹ „`÷îÝ8|ø0úûûª%ÆŽ?ŽO?ýãXY) ›Í`dd»wï g)%ðÜsÏáÃ?„ã8!êEãd”Lš¢\×¥®§„„5}AMF…˜(•Jèéé ž³- Ü-(—‹Òƒ„B·U5Ž!}Í ƒ YIض… ¯ø‰3†ˆYÐ BÔç¹>³ŒÍî4›ëºÐ©À¾}ûðW¾#Oa6víÁõkWqåÊ%Ü0˲±cû.¼zê›èÍeA$ƒÊ¼œšB¥T„m+Ð~~®ë€XØÌFÅ)ãà¡'ñòË_ÇÙ³âÁܬ¢µ*—qù‹‹xêÈ1ŒŒŒ€1€d,ìܹÿ÷‹/âòåË(—Ë ÀñãϢɅBo½õÊ•r²|üñÇ8ñ•Ø·oŸÒU°,lß¾?øÁpñÒE\¾t…B°iÓ&<óÌ3ؽ{7<ÏÃòÒ2¦§§á:nPáy^P½`glô¢ß<ýM«]X ”éƒKŠêN„ôžm¿×‚Z@5)ˆiŠ,·³žÖê~è>ǪÂxHëOW¦µrftB“(¼Ç5AóÝëdóg{HFböÆÆÎf‚&PPæW« ɯ÷ÞjÐ/Œ¸%åaºßEÐT_PEWQ¾æö€ÂÆè»:[uýLiÚ™$}(Id.E)’ÌjÅ0¨õýteC5˜èÀ‰ç$°lÙ²Ùlå²lÛÆæÍ›±aÆ@øYë1pÎ'W?¦`mLB·¨²êêë&d2™ #׃ªâÈdl 0‹B’˜Ìb£nDeP ¿L¾:ÁˆÖk axB`¸SÍ L¢UѺ”d²=8ñ•¯à™§ŸFOO}/½ô’¸á©j!ÏC6—Å7_ý&.\¸€»wï¶m”Ëe\¸p?ù—Ÿàoþöo°m붬ٸq#N:…¯½üµ˜cgl”Š%d³Y|ûÛ߯Í[7qëæ-E‘åg¡ ßÎår8|ø0ž|òɰ“Íeá:.*• lÛÆøø8~ö~†±±1Ø¥KÁ=)$*nEHŒ¡R©`ll ¿¸ˆ‘‘‘à{ìŒ )%¦&§pîÜ9‹Å`Îxž“&%V»}ûvlݲÜãUš0ÇÅ–á-èëë«Ñ X¯<¡õ€æ4º™À«ƒ õèTÚ5È¡kIú_ £´>æþ¨@‘í t¦½†s^S•4îÍ»­¾¯°«%P µt9¦ˆgÝ zäg­2Ç×ûÚ]ëëïÔ˜·S‰Q/˜€é\¨`4 £®BÔö‡Þ×5µ#³ÔùE@¨¢!‰»®z™ëk=¯ˆÏF@b³ã〦$ÑFøÀFk¦²‹ÔIÜÑfq½@n¤z/© °‹ãÖ‚ÈŽ~Oí]#ÁóÇL zX{oÚ·JÉÖ ªnePÀÙz°,®)|ZvnO¾®J¹iÒp6j EõíÒé k)„‰¡I¢þ§”Ôd¹W+×#Á…Ðú§ ~Ñé©7®¦Áieo¬&Í%ÛÆÑ>¶ZÁ´^l2³z¯ª†NöYŸ?¤Aýžvý‚¸Ö 6t[·u[·%n¸¾VQTJ ‘ªrÁusXZ¶pÎÂÊ|fg f],-KÌßgàž…bI¢T"(W†þ×ýG-P£>`#ÚwõX˜UÒè‹ ,¤ÕPsmz*‰Æ@Û´ÇÉÎJ *¤¨YõµE÷Gnb¦V†^ï&½Yúß©J˜n[?{I§öCóŒ6x‚WÏèU¢ÿº¸ý*ZÅPªj÷ “:)M§áaíû„0¢l ¯kÛH¯Us¼¢€Ì£°ÎêíS­Bá{O#¶¦É÷ž$NÞðÝnÐ- @™Sq%=OBãèštÂO(pÜA:´4Ѝ}žr†5«™²æÀc›}Z-šÇzcYM ã †½’vÿ£˜Põ¾LИë©J›E ¿Zp½6£A?è šSF‚ê­­W/ɦf®¡Nªs4i=­Õ¼Lþ¾ð˜GϱèšK b†(¡×îzmÑ@ÃÃ<›Ò*IÝ;u-Ý`C·u[·ýEêíÖÑÍ[=一m38åBË‹Ì?°0v·‚Û7W0úå –—3(¸*ž "sà" )ó’  ’€èìÂÊpRµÿü =ú”Òp]LMMáw¿û–––j8Êuæ°®š(—Ë(•Jð<===ŠÎ†0_w¡vplÛö)Ž(<ΑËåP,Q*• ³6Ê® ,,//Ãó8Êe•Õ®xjßVa¥€r¹ìçå¨ï(•Šƒ¶,(•J(•ŠÈd2ƒã8XZZ ÇÝ }½ú˲ …‡ë×®`râ6n|yû<Ý»÷bhh”ô@xªÂ‚úÔ?KKK8þ3¼ÿþܾ}Kt$ɨͽÉI¼ùæopJJìÚ³ŒHÁB1Ð߇\>‹…Jà„{K‹ 8óÞ»¸õå5<ûìs8zì8|”2X–åfžç ð`·nÝ™3gpñÒELÞ›¡³#¼P,àƒ>ÀØØ¾úÂWñÌ3ÏàÀþÈf³¡ùÇ9G¡PÀÍ›7ñî»ïâÒ¥K˜˜˜ \Á<__BWÌOÍãÍ7ßÄÁƒqðàA À¶UuÌÏÏãüùóøí[¿ÅÕ+WQ( Ä0‰÷É'ŸàÚõk8~üxâ®Vðþ™÷±´´TèæyÆîŽáÌ™3xýõ×}݉ûs÷ñ澉{÷îÁ†‡™Éô0€Âv³wÛ¥RjV Ùõ|Žê|tÒIŠ4…«öõúäôÔãÙOs|Ì¿5ˆ©+–4øë ®´{ÌL$àP7ƒ]ݶ>€þ–¾_¬^…DÔö‰BuðY @ÇR<5ȹÌì0(°®ˆüâ*¬Å9Ý©ó¶]>ïÕÔBiµ?qA“Fç©^3æg­v0ª]0þaØ_IUCëuœšHÃ{kd|IýÏLªˆhHû)fCVÔÒ÷ï´à´ù8)|=ªòò…ÛÂ<ŸHO”Lƒ6"•³>[A£š8kµ7ÄÙY̯¸@̺…™ÖÉ9ÜNÕ{§¯¡lè¶në¶Çº‘ˆÂ¬ÅÕ«E“¤qBçX•r3sܾéar4ƒ›7ʸ7ű´˜ƒ[Ùgà .WK„P€R0j‚B @Hm@KH" 3]€á IDAT‘GJ(àp¸eæâFA`|Œàêå ¶l]ľƒ=8rd»wõ``ˆaÃ&`ÃÆiÌOåE 8”Üî/3”…€ 4(cÐY êï´l£ðsfVˆ¬q… ,)%*• >ùä,..â¹çžÇÀÀܹsŸ|ò ÆÆÆB™ ÓÓÓøÕ¯~…àСCð<·nÝÂÙ³g±¸¸¨*Ë磣£øéO‚“'ŸÃîÝ»±´´„sçÎáÚµkM~ýøø8Þxã üþ÷¿2þ9ç¸zõj|¨j2Äcê:«ãT*•páÂússs¤j*݃çrß°$µV¹\Ƈ~€ññqxž‹L†¡Rq0vç.œŠÓ8W¹% = E8•ÞùýïñÙ… Þ‚-[¶a÷î=è„ëz(•J¸}û6fff055…ùùû >(àº.Q†³ð8.|q3ó³8xèvîØŽ\.‹Âr.œÇÊÊ" ÈGËfQ,qëÖ—˜œº‡·ßý=öìÞ‡¡¡-Ù‡¾¾>ÌÎÎ`zzwïŽann(–Šp¥=Á‰  pOÑp=xð+…LNMâÌ{g°wï^lÞ¼###È÷ä13=ƒ{“÷0~w÷çïcüîx0'5XoÒ[è{ï8>ÿüs¼ýÎÛÁþ}û±mÛ6%x=:Š«W¯bbb *Ø$% ps›º àÒ÷Êãž õxà€¯,¯àúëAfu4SQJ Æñ«_ÿ ËËË8xè (¥øâó/ðÑGavvÙl6ë^Fw§©Pâtâ2†; ÂEib³›àƒŽ Šë9Ó)?.ã5N$¹Õå^sãöÔPÕVÂûeŒ.MÒwĉ¤zD­5täRi¬xF 6­Z/.Ûº[ݰ>ÁÞõ"Šl­Ì}\SýB@(iŠ &.›ZŸ[IûÊz 6˜vdPÙIȪÓât8éÈ•žÍ_ïŒ"-§™ÌÒêzIÚßÓÆ×\ÑõÚ¨NDÜ9ö0Ö|»†kmcÅα”ê'*°ž×b_›ÿ­S75®)–¤ e–y†+#ÂâÃ5ɤ$€´‚@YÓaõǨ˜ P¬wÜ…Ôb01¶VÜ|ŒcN0oûZÕ®ÆÎ–ôó©S­lè¶në¶Çß1 6T3Ÿ>¯¬¢HÒ‡¢ÉÏ(eý˜¾LLH\¼¶ˆ/¿t17Éñ`.ƒB©RæA`C‚„0(P©($óI]ò(à«7ƒQæs5 xÜå€ç K €‹“3˸u{öÇžêÃî[±q{¹þT–˘¾ébq(rŽ•Š2¸`T4àžHà •8CðçÜ·qª=²qMçAÈšÌ>í ÏÍÍáÁƒøôŸ!“ÉÂó< …€>Çu]X–!%fçæð¿úòï¼PÊhiE5¢9ÇuqõÚuܺ}¹\B¬¬¬Àó¼@|KH áyp\|øaõ3 @ œ‰TåòÔe³¡¹ãÊ\¨êÑÑ1ܾ}=¹,rÆn+Ñ5ýžõ>ÞÚÞL³UÍ ïäu®–€çº¼Hg®¹é³#A롞nÓ»vM+s£.]V8Å9ôí0?{çרLvêY3†6^ÍÂHí©f!†ð$êNŸ>I'ùß!8ѲˆN`•ºØ¬à4¯?|z/­ 6Ç ¢gÍz¢WM³ýÑðJÓ9JÜ[ Ø>ê{‘škâ¡÷£lè¶në¶ÇØÓ†)à ûôñ†¤úò4Od––2˜¥¸~1‡Û·€±{&¦*(•r°¬ÐŒ Á ˆdàž€¤R‹ÔúSŸ¯A øP€Hd;«šG !%¤ðKïÅÊŠ@¡@ñà¾Àì$03éáØÓ}Ùׇ ±q`”Mß.>\T<‚@r0)| ›‹ ÊPJ@©¢ ‰ºqÁ¥¯@ ¥2øÒÍïyž >¸\__Á²­àýÌb_¹æ./–ªB¹ZxWƳ!„€ç¹àeŽR¹T5ý@‰Ò>P”œs?àc $iƒQSK °ÄlZ!@(¤T_Ôçídp]™ 4¨Ž!¡€Œ ªªGJ(2vAé‰27ã“sý𿾱ΌãǬáÎ0î+õ¯‰(ÑíŠ_…$¨ïÓ<¤Bxáû-$¡p=Ç-†¬c*‰- €(±Á=A©TTÚ>C UPGšÂÝÕëÉdl¸žJh0gr¹\Ôscyy9vNjͰ‚Y.—óiÆ|ý ‹ùtDœ»XYq cT¹Q#ZÓƒRŠr¹×åþc®ëbçÎxñÅÑß×Ê¥2Ξ;‹å•ePJk8J5ÈôY 8NŽS®qnc©YkëÇnËõ ù Á>eØÑITí‚ÅzM$|qœÙ5gúoæÖ ö‰oôR¯GÃá­Å HbЃÄ8Ÿº*'àˆV\è¾5­s4$¦&toÒÒ„„x¥¨ÐÌÇ)¥` Ñ®y®.Elj¸’S¸œMnò–ço":Òº#¼^@¡µ¦Ô÷–¬Á˜5*BvOIs¬ÞÜÒó=iÏyÔæJÚÚoØn¦E+³ZØ™çÁwÇWÒ}K Zë=¢ª@•€ÓZð=©š,Žò±ÞgÄ]kÚѬS·¥MøH0":ÇDDçÀN©ë”×n¨µ¥¢6S£sƒ?btOâ^oV&H@ÈÐ^}_ØÞ£ °ßEÊÌ7Ñ@PÚ\ßZÓ/n}Hiî‰1kÓ·-“ÎĨmÓh2NõûEGf@\NÜYÖê~ÛÅ»’Æ’ÄÒ0×£€íäXwƒ ÝÖmÝöX6¶¢V+&¯´¨ §BàT²xð ƒë×Ê8ÿén]íÖ‹8¼ÄÊ{ª"Qd;P(C ~öBFÐ%ÍQ=⿪¤Rg[ J¤´P.å¢ÄüƒîMñÄá<žx“‡¶`ãŽÌ æWf±i˜Y® ì.A€Ùý*3Ö§vÒA‡p°¡j`rM?áqö³ú}T¯&ÖÄeà ­‰¢+2ï‹43‰°FDÍáGÜ zÔ½ïÂF Ÿ—F0E GûãOÔÕõzܯòûF£|ËQG±€’pP_ˆ¹j\†KÍJÙŸ3>ÈÓA`¦²ŠsÜCà7îžœU#b`ë¿9ªÁ aÓ ²o@‡Á5YzÆŸ ¯”¨‘£©†ÌàTZ)mÜaƒç*†|>èwè¾Ú¶PuÙ¶­fÔÇ@Bq²ª ˜ $d³YôööÂó< à/ÿò/ñꫯ‚2ÅÙÍ=®´K>ùNÅ è6âœ,íhI)b+âŒO+:Ũ&I6qT`z½:*IU ñ'Z{öŽC3´Pi@~ô»ãè4¢• ºBÎäéÕ4}f5Côó'TÔPþ5â@­îÜuž{ôèµÖRœsN)UôIŒV) ‰Í4­[å'M¡8ú¡õ¼·Å­1SÀ>Îfy,ý‘Ç,kuž5{o×’¶çQ›?õÎ׸çëŽ#5¨€¢¾ñ}£‡x½UÈôWõ»£ó0-ðLßWõ?eo€Œh™$Z™öªa¦…ø{™nÖ£.[OçB·=¼ñíÒ(u[·u[·µëç“8C‡‰%À@`Ã)ËKYŒßÍáò%Ÿ.0~·ËË}²¥ Ìò³Ôýœl® ¦#­Ëù~™XΩÁn)«<’¨,k B¸ç¢âQ8KÅŠÀìýŒeàU†pøp6mëÁáãù”€»Ó ¬–w9²Ùlhˆf¨4×ZC_JÔNÌI2Ö(ŒÄ®Ð›É*‹ÿŸ¤Õq¼ÆÑ53ܬàP™ñÌÈ,&ÁØTP•ÏOÃ]OüÌe¢ xP”ƒRcE"ª¿E&iÙÇ"pÃ\¡Q.R3ÛFALp«À•®ÊµGÑu( J%(•ð¸PÔauJÓ±U&Æk)I¼Çq÷\˜¥¸ !Èår*[ª‚C4ŒãÕ÷üå—_ÆñãÇÁÅÐÐf?~½}½ð\/r¼ýöÛ˜››‹j³ÿPJ;b>Ê`G=PNWSiŠ‘Õv¬ê}~í|i€édß)¥¡GèLЋús¨¨èšèªSë'tÐ BU i{wRE€Š? 4Äÿ¨PÔk»Po"Š~FÂÏ<ÖœûDG2ÂÇœ„_½”•fA >ÑÔC¤à ðé(C6;ˆ••"®_sà9=Üű§óغ}/ŽŸ (•¦!Üe,<äˆ-I|ÿˆ¥¶Ð\¯íy ìBáÊH¿”4ádg–¨ñÎ,ÖðuÆõ–e´æ.¥¨yoœÑ H£¨(2ûÆY\ª‚|a“ú”:{¸Ú_Ò†–‰9ç”p&yïû.¿Ó(tfƒçyèéé ]k6›E¥Ri¨º).Wh122Œ¥ç9Èås¨”+XYYÁ‡~ˆ7Þx+…•Ñg ߯ÉíÎuY×é\E¢$*$Z¦7±g#8œLˆãZO÷Ãs°úq̸`S=¡¼zc—¶æ04…G;iíU \Ôhè ‚nž¯Õc,£ºzŸÑÔeq\÷I`Ÿù[WkDE¬ÓæJüêP[-iÞ·ÎW„¬–WšTù7ßêiKÔôÌœ4¶Ydí­W­] ²+#6T3tJhÁ4jûujÎ7Ô×Tйªk3:ך}4àÕ(ß{œ~R« íCÝßÈêÌ£V|–4ú¸º6s¥Îz:“ô[’lüÆ&ìø:ªGOØóŒ€ëÊlÿyQP8tžH‚*«« üMáÓ‡¯TÆÚø5~0+êIâ9Þm2öeꙑT{­“÷Ý|¿é tƒ ÝÖmÝöx:Á†O ¦ ªô° Àl žÇPX¶qåJ g?.áâe‚…ƒàb“ʸôóÕ«bÓZŒ×¥Î펊Y…úBË8¨f”¨" ÔŠŠI .(€T*ׯ—P,¹XZ¾òlöìÝ…ã_ñ¹ˆÏ?»óyp×F&ß âga‡&]±¡A%ƘDdÇÀ}šzˆÉD{P‰ÕÈjIÊ¢oäé ágò ÉaY>p-ePÅ @údg Tùrh7"ÙècæãI@\裾^‡HL£¶š‰çÿHFm0F kËÜ_…½¦?]õxf´Cc¶KèšúeÑ>tƒ ÝÖmÝöx²ªÍ@à31@Àá,¬d0ö¥…³gWpþ"Ãýûƒ€ì…”„(•@Ñ%QÊTÐp¿ÂU¡„5o;}Ø}1RÒƒçJ‘H/¦f*p>wK"ß×]{¢ä\ƽée^ÄÒâ2<—Áf¶20!CÆŠ.Û¤¤0!„$:ÊëÁØkæàŒ+î„‘áÃà o][Õží—á7—ØJF›AfTëD9 95Jõ<²@ˆW‚Ü„ªØ…¬~ ‰\[Ä—1QTX7t0ä sˆPÌLÏàŸÿåŸÑÛÓ‹ŠSF&c£R©àÁƒ©ó#éhhff?ûÙÏ022Û¶Œajj cccuS£ó[¡hTÒ÷+LŰúë9œÙؘã’4Õ»f5þñÕùŸ¶_¤ %@Uš>ªM"«r<2Â×h­TiÕ’ø¿¥”±ã¤ßÝȘÄB$fn)ê¶Ú ¤hàÏ ,pÎkµþ/{ïÚdÙq]‰­yî­ªîF7€ÆƒP| IÔŒlOXaEHšàH3ú8…Fžðп±ýÑ¡?àQØÑÌH¤g"lN¦Ä7Ðú…~UÕ½'sûC>Nfž<ïSU·ªO2À®ºuï¹çäsïµ÷^ Í“Däi—€·Vpùs®DN”7—-8ÖiŒ\šUƒ}\væ{­5¤“f„¡²3L^‡»æWÛxš+I©(='×fXÑ{¶ÿ‘å*À¹šÿ]ºi…AuëäõsºœñpîÄ«ÜÝr¦¤Ù¾î¡)¢ºƒàæOfÿ Ï™ÆLgÎP)€€§DJœSý—-×H×V‰ú:îdÈ=GŽÂƽ.„°ë˜"P·â=fŒç"ã‰H_ôüdæ©¶tC?Î3eiŒ’Ê€¾@|À « ÜžŸÒËô¡«é 4¸Ïºµ˜R„uí_­³&n˘í2kÃà–R*ª^(Ë2[yÑoÿ†y®n N1Ó‡÷{ˆÆŒ„«*Žú> ]u †guÅ[Ôé´q´†š²‰ÇW±=2îþXœžÉæ~u ×áÈJŽ È ‹‡Á³Üü+ršÎÿ¦àUúsº_:ÎìÜø*eSB:±6à8ÔÅJiƈë½5ÊmÙ©ç”R‘…{Ód°z VÇId@ÖšÁ¬ùý+ œýtvª> [™|ö Ïèëó´¡K׸O¦ßþm²¾ ÆékÔû•Ïn ¾}H•\ÚïÜŸHT8]ß¹=!ì¤ÑÁ’ºÿ„¨Ê¡×µDrÝ”UŠÖ~Ÿ²Ä  ýǽú~n¼~ZN¾R·²¡Mew8ªŠZòýë>c|’pÇÿÖío]Û3söÃÐ3<®¦ÆÍQ)ëc9}˜Egê„[º_Wç¬QÞFê²M‡h)…÷;Ï—`ÃÒ–¶´sßrû ÛSµ6GU©B˜Ÿ}¤ð㿌ÿxpÿlޝÅ UN|FÃqÞiŸÐÎÙ^Üh\tÁum›¸‘. Èp¤ H`Ä£%´>À[|ç;ïißùožÁ?üÏàν_àîOpôø€}CÅdB»g—JóÉxäqæ|0ð±1p%Gá!Ø(8À-tô…( sL® Ye2ÚÏ–å$HI3G8¸¯N#ƒ’³»­âûd “˜vÁf ­J0Ìbdaf±`ò}›ZDÕ‚îKsä© DB£›À%J(çÇ}5h91ð1Fkì̢ʡ]oå´åÇŸì—äxÌãËÅ€n”)ÖÙwU•Nø<}ÆS3ƒ„´öq¶œöÏ>Ëeaq•‘Æ1øêöI¢•»=¥‚QJù½._ëÆ5“¡+ËQ¥äè^úÐ?µ(9qmWÕÞï.V L ŒuZ§wEwæÛYÒ+„ó8·7§{Cßê†¶Šˆðšaf¾@³h§wÚN;k¹§­9?TƒÆR å2j{ ÄißäΉ\¶›‚Ö_€¬Ø6m°gðÔ=hð>7` úP‰MÞ›Ò:}îö}bmÞ·O"•Z=C IDAT3 )Ò Ý2 &ŦuÜó´}húù® ê=e€ õúòAôÔ&KýY²~ÖZ ‚ã:ø`Îöî¶eí3óXm Æø@Õïciƒç~ZÝÙf×4ÙÙS÷Ð%ذ´¥-íï´V«Á‚D+iâGGûxûíC¼þ&ãÞƒ6ú2­@,í‘& õ €€²Ù¥Uþì²j)0,xìm¶¬\·^ˆ7of †åx÷oÝØâàÇ /|ú:^þô%|ñÕ|øî!~õæ`~Ì×ÀJƒ¨°™·Æ ¬Ök+­wžÚ¡íþLv¸¨½×n´`-\¦úz½¶ÜûæZJ+l7[“Ll²'>ªùè¨ÀñÉç@’©ÀÕIƒ<œ3Ü#¡MÈÑXÙÄfÎR@©4ò†»6 ÷që`2÷r.SZ¥¨‚DÇ”šƒ}²¤ûˆË(äŰ ÕvQÇݧk‰ç@¿Š·Þc½ˆ2÷¡ÞàÈÉqë\Š©UÈg\'sÒfy3lÐÁÑ1!¯)V°Å|¼!ÀYU+„ô*9nù¦ WÕàœ‰ë™ki€ajë öÑãIé“Rk×Û<• gwß½y«{çæ¼¯\pkhÒDªÒ:[Bk ­4d!=`Ô€*•·IÜ>R=ö™Óç‰S;0ˆþE••i’¡9{þçÎþÚº‚M1Ã< wý‘;??…Ƥ­ê¸É¦â‘{Ÿýb(?ø˜Œü9×ÁT­†)ïkMŸû~O÷9ýeŽD¹±ŸŸ’LÐd/…Õ-sÐfÕöÝ™µYª µIá¢s᳜/Ÿ*¶AÂù&O4US÷W®-Á†¥-mitc5A!´©jPÀÃûoüê!¾÷]à­7ãÍul6+H±òÕºðÑ|a3,t\Þ:‡6÷ñ/  “Éëe‰-Ôͱ+†¸{wƒ_¿¥ñã¿ûÏ];ÀWþÁ—ñàÁopûÎ]ܹsJ=¢KVæ;X{·XAÚL~_~·C`HÊcœ‚l€¡ËBDâ|šµwêk™°à,ÕG Þa ¬°‚ÒfNI) [öÝ ƒ:¬ê4C{!Î\V”Q£†sNŒ6Ìêq%½Rj f‚Vð,Ái8´\Ÿ2B‹ÔÏ`7DqÕC(åú3g|wqþOqþºø3‡Ì…ZVÊDÏn—AЈj%å²å€2Uj&¨Ø§ŸÉV—`\ÒuêT}€¶‚lµ*LE‘þ3÷ɰ®´N<- „0kDˆx?Bxù(à ª}H€f a«˜ÛíÖ¬§&ªwÍ!ˆ®¹Üµ&ú¬5ÿÜ´:0Hvs¹m æͦ¬ç®Ê”ÓØ?R˜p-¸–ò³Õ-Ïè+g¤€V:¢Ák¦,ÈSQ•ŠìY6kUWfîþŸ$Î4`;Ù&jÄÚ&‡p/ž+g¨šÄ$°l¨fCmò|s"'jžÚ]zm' ¾·}÷سdŽ>Õ>Ë™€ñZÕ^6=XÔgïœkD¾Ø=£H=©ùzûbÓ=Ìñ,mÚqM C€'ÀXÚüg@îo¹`ÝÐài8öK°aiK[Ú…mÄlf2tJD{¸õñ1þþï7ß>¹wº|…\ƒu˜5êH5´åfm¢ž!åK*:?‘ûFÖÐÚe£’Ø€Û@E;´/¯âö͇øÕ/6øÜg÷ñõß~Ÿyå^xá.=ºãÃ+`Zù’ë²֌£vZÙ‰mFUJ‰àzýVµC/“u‹/ºƒÔBÃÔe¦ß/-@(×D&Øa9ˆahœÂ÷k+2TG§ üÔa‚¶”0†’@Ù@`E)ÑfÀt9+•8Ôò]eñ¸µ«™D•Ú‡>¦9C3_®ÜÔ @µ¤uõ½ xaVø5ÉŽsUÑï'RX±w†Áù…^X!]€¤jÍk6Ú?ÌfOv¸‘„¢Q`4¥B2Ž@“Ý+mb¶Õ][P¬<øwZY¿c8»sY¶flªJ$­ô¹Ñk˜ h[Z}]4epº¹¤“êÃÜ~á‚aåA¤mš¯¡nCŽ^I•*Òˆjªž;ïÙ¼Cç{X‘Ùc™×&]¿ï>äNŒ)Óû-G£4¥ÿ›@÷¶Šå\¥Cî÷>6Ù\4FmÏ–ëÃ!ú?CîcJ•òÐýžÑjÛÃ"»”§í¯ã÷£a|ûMU7bÎÄÓÒn˜#xî›áÛkT´ kš£dæCžg±iÎÎ~ìœ{®ôMÎ[‚ K[ÚÒ.ànkªœ.Q¹Ž%Þ}§Äë¿=¼†ÍñS´Páõ`DCi+ðÇÀÐ`VØ_í¡( üéÿø§øÊW¾ŠBJŸíZs-¸Íë šI–nì{{{xçwðïþÝÿ…›7ob³Ù@®÷°Ý”Âd¬H[ áÀQQ®nÆ ÷îüæí#|á k\¿þ"^zùnÜиõÑ]¨ÍÓ(V Z[àž¶¥¦)pF‡fÈÍ\¬ ŸÝÛ”=ëA!„á&G›<¤Xjì´ÖÞ@‹Œ~{ÍÍfcúeMXÂÒœ›r뇹:”¹Ñ$í)ìÈžHQ7&`k2·)-ûv†«åÌÂü(TÀï´’ûpÌ=S& ŠTM޲¶óÎú!Îx~߯5¤è¯QÓ 8‡€U½ÿ¨‡C‚ö"ª,VXÃu°Ái§ƒà÷ Íêó¹’a7—”R²£ 6øoæ:`l¢«ð÷ÎuñçœóÖ6ßÂ÷ Ô…gÓµ“{¶¡{Êœ`Sm½7€Ëc“v§Õ•sVšœ6Ð4òû_ózhâþ÷@×$|=G±˜»†RÊS–E牪€Üš­ ÐÅ1Ñ©=@ÉϚǿÎOßo?êÍAÍÔjƒõY}]þJ8o†ÒÓõ}o_ñ¶ D`x9fÏí»šôSæ^CmTFásÏYËh§ Ý…ýxi'|z÷\ÏMvuì{a5¼_ÿAò¤R¸Ê^_s÷F‹–óúRS’pÚöò¦€CºG.Á†¥-mi²‰G*VÜPxûWŒÞŽ_é}˳¤¬CQe·2žkí8µI[ KàððW¯^Å¿ø%üÞïýöÖ+Ð3WOYnQÈ"¢hѬc8>˜Ù<Œ\Q/¾ø"¾ýíoá­·booG‡‡X¯Vк³¤¯SéïE‚ Ï·_Ãï3~ýãÿw/ãË_»ƒwÞwîÝ…*Ÿ‡+0V´éTB¿§pH1!Ö«ukuBèpFŒÖ@’R¶rѦ‡r(8ëßc¬,ˆa³Ù`½^ ¬d’ýý¶ÛÒP^UWìùì±»1šËájtDˆ¸Y^óýÌmöà®*·>èr¾¹qüÙÏéP»! , )·¦f+gåÔ,¿ Š­¬£Š¡oi#ØÅ︰•]àZøýÒ‹88Ø÷ƒK—.áêÕ«Q†›Ùd ×¶R[_‚ÝKIÂf8N²ØÔzUà Ÿÿ´*¤0ÀØÍ›7ñàÁ#(eò®+4VRBY,œ`8Þ¿yç^|ù2^ûG{xáÅgpýù÷ppé1=¼Í— hßÓA9€ -žµÁ%ê‘orÎ1𠃵ÃÐe66až×õ2d'øJlK¥4¸`PRT@k—[7«ÆÌbœ ˜½Clþ5Ù/ÚÛp„{ )%6Û a×_µ×DÓ2YMT- :4oÖ˜× ˆ8Ð4ëª^èj¡àièÖ 6î6(ÕÕ^÷;[%âú½·Ê††‰UPZiæödWU ¥Äjµ‚ ªÒ‚£°%ÌR6ó½Šxk­ÍéÂáóP¤ýP×– ælµ •3Œ¼³Ú6^CªzN‘L…ÚûV6,†>{ô±Ê·NcÉíM©ÐHÅ ‡€C@St,j`eëY68¯û»[שî†n¯5U“.™!¥› `™Ÿ§ÝýùêQ:…ïé?¦mAº¡keˆm3G…ÇÔ=§©?r?O­ðãßÑ5¦.`u6ûcê‘°+ûßYÝGÛþÖô·¦ê×¶×ç+ yözñÜtfKÛ½ó¾Ëþ^‚ K[ÚÒ.d&v€­8Ö—póÖ'¸ñCã6¥@‰„/ôBË O›Á¬ñÒKŸÆŸÿù¿Â«¯¾â_?ÞnðÊ+¯Ô²ÞÝY[9F":°ëFgî[@kX¯÷Ö¸~ý:þìÏþ ?ö@Øññ!þí¿ýßð½ï}RÊíÆÞ‹€Ö‚¤1.I£´Ù5Þ½y„ßÜxˆßúðÂuàÅçÞytZ? ÉOÙ¬_'(jnOJy¦Á†°¹,\GuÕÐ…uãÛ|Nµ)PþìÀÃ0+±rýÈŽ§Œ@8­åÖˆP›¹¢«ìé Òú:€Žr†#c–lՎͪö‡:¡¼AÖàmR!P––&uÎjU+TòCΦ`Tß~šš‘Õ$ØÛ9áó“=Ô4Ê;Ûq’Ù’-E¹Êé爓9 _¹0V«eYB½½=_¹VH`ÕçITã¤TYÌÂWRš1tsóžÓç3ËDvüÆDM·”£·‰&‚õîè x°Q,Yq‹SÛc¾ªÍ—$’«PèÔ<éØrvŠ¡T“€@¶2èI Lj[¸`CE³h«[‚­]Á®)ÙÍÝ4~S¼¹ PÜ/3½ ðîªFk:+rU$§5Ws™ÙS)¦æÚÂ{›b'v~çÀçlìŸ3 6Ìékìê¹Ôç9N²ÿ›ìÄ6ÊÁ\•hö=ÔìŒy¦1OK;Y~®¹ÞÔ–`ÃÒ–¶´‹ëœ(ËwîÞyøà&p¼Yãàà ÊreÅÿ´ 8`*1⧯]ë¯|ßøú×Ûíëõ ´Š€k‚ðÞI *R^ìT 0Ô´DŠ·Ð ìíà•W? )ˆ´V8:zŒgŸ}E!¡™qiµG!DÖ€f ¥54—( pû%Þy÷>óJ_xׯ?Àû7îáxûbõœ¡ q˜ã@£Û¤Jã4F_=¢t¸ìõ4ÎqÊú×´)Ï—Bz­)+XHáET› Æ*ñ¾ºÇív[éA²â¦U»UÝÐÔgu…#ÎY×iÒ·º4•Lj£f‡> Ûª·^ÛÊï7Ï¥íi6RðUW\öCÍ eÅ£æ{“Ã?ÜÜíê˜Éͼ×'*š°¥¹3Õ6®‚«(Š ,N¸¹@¡ŒýþzR K—dD¢Ékg„Tf¦Ä™¸®’B{*¥(@ÂíºC«ºœÜ>bn]eû»0O½™ì©ÓÁÆ Î¡´{§ öäüTÁ5W­™ê6ô@†‹þÞôøùÙDÔ·2iç!¿çUÚ7îÌrvh3HÕl˜Þ?áú§IýÑrù–ÏԫܺÎþ¹)g†Ti6 ³½—¡‚¹sWå’VúîAc«Bö<ÖŸyhuÍœýÑD™Ô4§Ò`CZÖ9-ÒA7±ô9/—àÂiŸÅ6ëöŒÛlXÚÒ–vA6Õ¤ÜÙQÜl%n¼sˆoº >Àæ¸A@’6v¼°N§u‚Š¢À¾ðE¼ôÒKxõÕWpíÚ5›J+¼”&ÐPe"œ3–cd|pÅy—D¢¨„˜<-X{øêW¾)W¸ùáM¼ñæ8:Þ­T6›VAH IÂf× Ü»«ðöÛŸàw÷Y<÷Üu¼ø©cüýß=ðªÜr†ë-˜lá´V`¨‘Fûô¬0ׯZk”ªD!‹8PúQp04t ) ´¬°¶€˜æJ¨‰H× íI(˜-—3ð\ÊJVÅŽŽPÉ%÷sÔzy¤ýMÔIŸMo)›žÕZ›ìrúÕPÆTôa%MPC‰ƒ_w` rÁ:_‘"eEeƒTÎ`v`tj4 X¯×FX=G БáÝ”q= Ô'û?Z"úÝ 8äÖkHq½¹ùÇQX)…²,±ÝnMp—•Y£lÖ£,¤‹2rÀ *üµL°¢@QÒ+<ÔwnÎèˆ ‡Š aô|%(ÚÃgS+ÒjÌèíë”ÖDT9 †Ù5éæ¸Û ‡R'äüpÍ­éð=®ÿzƒ{;mÇÐNÜÃ.Øé²d@Z‚A@¿ål†9Í¥ÓoèCQÑ—›½+Зû\Ÿ±ßåÀW>!ƒÇÐIž’†zw§B¡Fì} sáaktŒ°o<'úU64§}æMÝOZ ,¥¬ý}*]И9?T£bò¾Ó¡6¶ª¦ïßwmÍ×4X¬ß4°Ü¥·6dÞ̩ߑӳ:m*Ç>ƒ¶µ=TW%§åÎÖ¶ C5DVkÑp8Ýóxl_OÃK°aiK[Ú…lš‚ÄÑpóƒc>´¾d…­°¨„†@ˆñ¬VküÉŸü ¾ùÍobµZAˆ < Å2½ð³ÖÕáŸ%£TsˆMÖ€áïö»s.¢ƒ¢Ê„5ÇÀýÑ?Ã7¿ùOñ³_ü ÿë¿ù7øè£[`ðZsXqhE8|ĸwWáþ' ŸÿÜóxîù;88xŒòèZCð1àŸEG òPh`ŽtpP%J2)]OKmæÜïR‘h°æþîÀë”G¸Ñ3@PJ£DŒãÍÌ„²Tžvé|fÆÖAê>†Š™‡ìîL¶7û`Z! l5¹HÚ2÷rÁo´"§ÓJä爟•FhüEá i‡<ÿI"a°*ˆýžÑšÅì~Ù¯–"=hrkZ`1Ll|4}Ó@ç1Œ8@ƒ¾r ¥.ð­@`TJ½½•1oIZf` ÅJØ=T'ýÃQßJ)åÒÄ¥¾¯¾ãuÒ• ZsT}=fö§µŒµÐà|ìS>DæÐ¶J÷ó&@½kϳnÛÄísÕmm"é9*¥´2®õL¢æç ƒUP2ÞýVWß+p^Úy=‡çV¥½J¿k 6,miK;·-ÎvͽCb»¸û1ðø! ¶´2Ô6BTÛ¤”PªÄÓמÆjµÂÁÁÖë5Š¢0™ý6ÃZkm²âTé$_úÉrȦ©‘ˆ<µLšìyF¹-QäÞ.í_Æåƒ«8Ø DÇÇG©t"ƺ”Ž)ܺuŒW^y û{{ÀCÕ´Ú@ûÖ8…pÚ‘• lÌœè³RÊf`ìû;ÃëŸsœ¼±&(Ë[™3ÆòóΓ…E-   Ê­CM™i%›#/jXAÜds% 0IÒ6ØR%‰ÀH­æ~[œ+}M) C©c*$d2ùûL!ÀmÀhŽ4BœAÍ‚k™~9Õƒ¡ÁÚîÔ×qß¹ëø{Ñ2âPu õd¥áÑ­k³éû»èB1åÜ}:?[õã`÷¥ žRʈ9K3°—ölàT¼ka5äµ4r˜ØsQLKÛÃA k[Aáî•‚ C:G©µû§Ñdµ¿·ißÉÑŽµƒM Gï=¬eþ§¸&‰¬s „ÎÞßgÓ³û¼Ó(MÑŸ™ëùûkþ´'7´qQ÷¹’© ûô~šÄ“^@ò©Õ³†I;' æïTPwoÍ•°3ÎÏâ(‰*sáæ=˜Uó­i?Ka4æÏç*‘¼á‘£!:‰s~"‹cŽVŠ@Ù}Ÿ(ÌägO¿xvFÎI.êµ¹/²Z‘Ñ)ëù}4è3ã÷| ¤ZsØÞM d¹ï3Ø0eøç©ˆìßÿµ%ûŒ IDATžg| ã*óºþíòiúT··õñ˜ Kúé5Bÿ¤59¤GbÌy–»FxŽšÂ^ÎÚù¾ªìÊî{ »ÒnÙoc*×–`ÃÒ–¶´om{Yo„Ö&@ 5 YâÃ;Àà À$Mv+D…¥OÐØ‚Áxú™§ñÇÿìQn·ÐJ[KCHçôT´F.Á¬A.¢ï€7— ‹€«žr¥yýŠ®Iã©§ž ¨>€GŸðßþî²ÜtŒÿüŸ¿ VÚð…Ð[@&óöè¸ó±Âáƒ$íã¹ëÀÇï (UB%ý`Ã3.HXí‚:¥Gõ,ÍÔ,iær;0Ý$2WxŒãI›ÁNØn•¥<6«9OÑ–™á`Ä*ó‘ìØëè„¿·[UQ€IBóÖ:hä }¼“8œ^~¯G~gø<fÈ¢€,¶J{Á ¢[eBµ.Ñü÷†¶¨„¿Ý4Zï­M0€"w7¢#óÏ¥ë¢~¦’Iײ€BÀh½ZÛ ƒ›/®ÚADs©ÊÞ¤ˆ³4-®Ö“Y³ap-…M˜ù)„L>ËYÇÀUAw®9 ©ãÒœ8*ç Z§ë,Ô`ÑZûÏ…Áœê»)ªnˆÁ)³Ç Y@XÑqQHëø0˜ SÙ€ŠÊލ GÕ7̶ÚLå ¤Ÿ{aGåPk¿°ÛŒÁ~Ì=+¹§xË?ž¦‰ƒµÃ };´‚ês¢ú[\ÝÝ{§ ˜ÊÑVµñ3g)r ·5˜Lã»ìÌ?kõÎÐý{JÅÁ5<ÞY¥à,ŽÒð|Î:]\ómË÷š¡™ÕVÒɪ¬©ªŒÌv ©I¶ë÷43µï8¶e†à|.Óµ f²^çÈ;åäÜ^¾(<ã"Û-¨ø«Ý;çæj¬û@žÀŸYlûûI¯×É™'Ð0‰HކïS‘ ûŒàVôý™êÊ6C6Ù<]kiŽÇT˜°¢ìß]`vÜÿhÞ/1.€K4­?›öǦ„´¶3¼­Z¢k’„~¶F¿œÖÑýˆhÏ¡dÍõô¦m—Û€s ¦¯É€cQpÁVty‘â\&S* µªKnf+ Ea*¨±Ú߀B-†î¬*ŠBSËw i¦ý2Å4ÐPEDM×8ve_ž¸³Ôì6q)Wã:©'ƒsš[Á¯'AàðôŸ±ðÓ¤{ºÛkrã¡ýÐWt.Ð"¢LÑí»rø_¨K2÷zäYG¯½ŸœM§J—ì1v7¤™g êB`KŸÒýÆk•ƒútÐmÿüŒór¨˜2™i¹šh”Æ #w¾¦@ôÜ4J5Û¢a¾tU–ŸÛW\9_ÍK³St5õy[@{ÊYœ«Þo´¡î‹¸ét¿hkË ·øÍ;dýy›ºš{¢×ùµ–¶´¥ÛVe­W žˆ˜í†±Ý¼PJ+Vðô6®ØO3 U*l6›€²%Î,«eçFPTQ-ˆ¢h~³èS,|š†Î©.°¤uiõ'V«}­¨ #Š) ëć[…§¯ö/ÅZnAÌ &SÂUL“~A“q>0"ÍfMMPø™JOÃÜcø !ÐLT‰kÖf>Øø’Vì !êXÍ  VÐLD`´TËR2ÌÈV‘HÛ Ÿ-QUù¸`™«ŒðkXÖÊh™àR€Y™ ›gLã( Ò#õq®ÃŒüüû¨–Èhlv2D€dw÷Íñq¿4Éa\Ùt8ÏÃ[CŸ"Í nþ;(;–J©` Ýõ«ÀETùaÝþK^ÇÁ GB™þêN° $õ)³O ¹ ´¾~hW9üÜ­{ÖbU`»Ý=Љ}ßI8â‘ uƒÎ'ô½iVd8p’ýødP8Méz€F]ë| IV˜SPTÕ“ò±GóŠ‚}X»ùÜdÛõ9­nØW8Jé7äªnÄqšlÞó>oŸt; X‚ K[ÚÒ.H æ|&”¥ÆÑ!°ÝàÂrnN¹Ã\x@SJ‰²,k‡DHâ+,5 Y–øz¹ H´e|x3; ËäQ.]†}!WT ¾,õQ@dð[ÂñÆT2¬÷%®^ŠÒžGW M y1´Ó:Xê ºªf(o*îT&ã-Çãïç„@Z0QU(ô¡¨H Ý:¯tö›½À¾Oï±Ù™}ÅÁk¥Ñ–EQ¬ÝÝ{M6Ñ4Roø€¦6Õ#*Gqäw¬Úš +T(hvìLµKµæ³ÇSº”*Àœ®ëºÀxn=rBÑU(©×ÜξšŠ) 2îëøå®ÙʵK&¸"HtÞïY:MMgPºŽCzµjÍÌóÝMÎoÞæ‹ìtž•}е†óÀPáT”J]Å6ðcÈ=¹ýÊÛ ™@C–ž%\»Àƒ£ÕL÷í]c*¢~k ´µ„ «‡•ßs›×·îÑSžeØüv´«ó’cÖÄ.ìgóóÚáCéÐÎ;X:U¿¦kÍÌ š7%Ÿå‚ }¾¿M¡~Sx´½¯ \O)]ÇŒ_Ó8voš¿p¬ë†¥Bál±±“IÒ–`ÃÒ–¶´s¼‰†b˜ýk6Õív‹²tÇœËféDŒà…VYk¬×ë„¢GdÀé"‘‚RÜ&é<ÿ´{.g*¼†”¤`¡¡•†2L5÷°Ùl¼SƬ YõKÈñÂf« ¥©ðØ?€U޳(ô-y'€gÈx!ª —jʯfS´yíÆp rVΰ6€›L{­ªÔ>;ýä)nλâÿ )‡Ø‚Ð$„¥ÚR¯2CฉË4gÄú$€WBÞ\]ÊUŸ«XpóBá³îcc+@ÚßµŠu¼@¢ÝÑ×j?d_m©º‚ÏQÃõ¸9@“£’ 3L µÅÆT(åi.ªÏjÀÒ>åªÂrk—M¾ÇèkˆÚ½ qFݽ áè²ìÚcS±dÆ5W‘RÛA¬4˜Òd|Ws _É6—`e/` ÝóYñVÚ­*‡>Aï“îÓ\…R®š%ó.aÈyºk b¸&º´ ætrµcZ龪J/7ŽOj[ô›Ü|¬éCHuê´~ t ž7à2ÝwÒ½µ:“Ùçmˆîä÷ØŽÛõʯ'ÖÊìü.íd@ÌœÝ<äºßæöë¶½1G‘×¶Ÿ Mêj¡FPŸkæ4†æ¯\?Ž9ÿ»ü˜e=îÞšCÿdȸ.Á†¥-miÈØt¢u-(K+M¥se’ áa“ýx|¼ÁÞz££#i«¼þñ5<×oà‰ÄØ …‘ ©òÀ„â ê4¨RBÛfÐ-€ºÓID¾*C†Ã^) “Q§möv« 4PH‰õzíƒî4k_üÁH `‹SÉú:M÷RÏZt•'cÊY[ŒJ+ %@TâÔW}²W§wØè,£äÒ” é˜F-C½ÉiH!oàÚ€±«D‰Kzs ¹k¥•^€:ÕýÐŽö©~AðUä(Øѳ±£Ž‚V$ ¬J[×Á^Û¢nè7÷¸_ŸÕ´ ’ ¤ÙgôëlÀ®mFÎ^ƒóҵΫ{ Å|r«a‡hðÌxMN47hUÄ¿ïæâo΃sèïÕº;k å4´]üNºoØH½ê;Bóy1÷8×2impØQ6NÛ¶ŒÛ]^»}BUR@e+÷å¡ç@Ðô<@K[ÚylCƒ}Cªp§ì‹M‚ÊÝ6Û'uöÏMQÔÀYÚnÚú§yf-Á†¥-mihW… T¢¾¡î' Cu"Až^¥Êž2<ò=Æf³Ájµ¶€¨ÌÓ(4TÖ ÝèŒÇù¡3LD+¬P±õ샆‚µG‡GØl6ØnËŠÚÉ–Ÿk0W|ïì>&Ê­£Cú.tع{Î]Ë¢ësuÞtÂÐÛo£—ñsÊeŽr®"fU¬Œø*ëemVËäi”8 °att \¬Ç 7ˬâ0 Y/ùmÅÝü ÅÑ2<í¢Úˆ\ÅTE#%‚@bƒØd/`¶Âò LNDyk×oÑ6…Nu_ŒÀtžÂ''֜פ0È<ƒ0Mx0|–.1¾>³KkU2ööe–H訚œ%̶Ï9Чê¾vl6pïôÞèJø ` ÿýYž?ORF_®ºà¬ŸÛØ?í㔣eœ³O\ÒCHÍ–=c&òÉŸ÷9–5kk:›}YPeï6Ùµ~`̲ÉŸéãÀšÖ€H÷­ô[Fé&-mÞó°õPßõ2Ö®™º^æL°ê·¶õáœ{þï!‚ÕKÀai®-Á†¥-miçØÈåt¯ò´IáÚ¾G8¾«J|ö×ßÀÿü?ý/Xï­ñø‡øÆ7¾8C³—]ö¿q" =“ãð7|Ý:ôujÆOípUu„ã+7Uì…pÛãD2÷óîwðíoï¾û.>¼ù±¥Sr•¦*‰ê`P£(H0˜ GG%€µ… É?j”ìfGw ĺʬÁyÄ:iÒ<9!ê'N¿ÃU‡˜IéªL¦~ÿI ¦3bŒgm…ÏeÄ—_-fû[À 4ÊÉ·0Ž£3rާ ¸€ž›ÏivP¬ ¨R'ÂíT2Bq]ajH$ÀˆðômY' Ï0Û€å˜Rª„±’Õ”Õa­^"a¨¼ÂRmFa_<ÃüíKo2Ôë:7N›&îbï{tÎïÿüÜ_JÇ8Vïfˆ_“[K©Ms sSÅÂç&ŸݤïÿÀ¾X‚çgÿ˜»b 6,miK;Ç›¨£[qÙÏ•@4°^RÚ¿¡„çèfóŸá3à'pëö-|ë[ßÂz½Æ?øò—ñõ¯£œ¦ªÞpõ CUà(_§FÅÀ”ËŠöN§sfž°§ Ð`HH[¯÷P–%¤”ÐZáþýOðƒ|¯¿þ6Ç e©!¥Á‚ös‚â @[™{U[€µÉ¼vÁa‘Y„Àœ‘Šƒ!”CíÀÅØóЧÌêåÔ ½NêS mæ‹À‰¶ÆÅ6V¨ÃpÉÑ bã b(R2I*Úî3Êì·ÙìBØòÔµS´V OO„ Pš÷É"•!*½/RÌ@¢¤‡2OÄÊß‘z¸Š+Ž´Øò«¤a‚„”˜µ¥D3 ±4ûŽÞ¢Ü”`fl·[{m㥜GïoxR¤aÑg}Tû_W6Tóújü*GÖhðbB!W ¶¯`6?OYW¸ÄÁ.j¤™Ê:‚È î2RnÖt‰Â@ÕIJxïxNp6«J½zæ|'`wŠ}ÛÆ_|„1Ó0íË&‘Êü\°{,ªª¯@Òtv Ã0Ъ~’—F!U™ªE4yNo©(ŠìX¤zMƬž¾ïVómø:ª‚ýu{‘*£;÷ÁœôK[ÚYúÎ~³oY_mYõ]¶[—&OÛþÒt9€vè>?ÔîºV›}Úd—„šˆ}Å¥Ãq*`½´ÝñåOÊ.Y‚ K[ÚÒ.À þÅO±.]ÒÀ\ZpÑ‚ç¡Qá<Í8<<‚Þü?ùÉOqåÊe¼ðÂs¸úÔS"h{¡fO¹RW1mÓ¡­= We› ° , ¥Äf³ƒqã7ïâðð1Þ~û׸sç6› ”2ÙÔNsÕg at*  HcM(VÀfSâñ 4 #¿¬ÊH&ߟùƒª‡2µ2Êwí.ιà©+ƒPJ£T RT• ‹fCŽâÀdßE­”[€6s9êݪj‰ûΙ¸-›…Ü×ÙÜe¹õó?Z6ÐI,¼æJõ¬ðûÓ°¤X¨ÂsS³­fp÷b苬ÖJ¹Ž5Öë=h­`ªµ$À€*šKh­"cßÚ) úpèæu"Æ;AmZÓÖdµ7›-öööl¥YÓ"d?6cÀSÉÖäÐí®^C.ðýiï층( ¥‰sdµÖqÅ‘¶K8áT.x ËÕÄÇâ›ÍÇÇGPz‹÷Þ{¿øÅ/°Ùl°^¯M¶³2œðÄå€ ŸH@3 Âz]b½fo5?Ž7ÊhY„Ž™=ƒ ¹’Ê^b½à3]ú𪦠AÅýO àRˆÌatžg‡$œ âVÄÜÑ”•¬*˜Ð'¥=>ŸC 6Ç4;nmí²T^‡¥iæªúÇU!hfGŸæuSÌ…Cú¢°Õ€d!!$„ɤ”Â!´.m5ˆ„ÖÀv»µû îÇ®ûš âç' ô«>™e¦*„`J£`éûĆr²Ž1Ekµ>Lï!Ìö‰ö6¤Õ1'ã|NÌrç&ìZtU§ øÖ¡áÀ @Þ®\mŽò®ìûc4r”E»ð£ªÂ€ƒÖ'’­d!£ïžõ;ÎÛù?Ð é‹ÒŸµÖ5º–¦µ9ìÃø [ÝX Ýo?éC…¶€q}yÎûç¬Ç·‹r¨o°ö´Ÿ·ÏºÏÙv§Ñßsû¡}ûb][úû˜q$,•çqϘ»Ji 6,miK;ÇFe€Uþ { Øß—¸ü”Âz(µ-§z(êVf†”EQàÞ½{øîw¿‹>úÈó ¯V+¼öÚkxù3/ƒ˜¢Ï¹Yk )¥|tóD¤ô !pûÖ-¼ñú¸w÷®Ïf~øè>nݺX¯×0YWºÊž¦J‹ÂsD €V„gž;‰ X dhAÀîÇ}.œ`²¨_Ÿƒ½VBX8š½Ûn¤È]³F©6P\Bz°Þh£„î¾íÈÀO˜Ñ“çbuA!Cg¤´ª "»Ž¤Uf"J…×b ªÖ ¶T`#Pl²]-'µ­RR‚”£T"…«xpƺ°HCŠ5¶e´(ØÝ3ªÏéÉäçg~Éðíà´84¦ªkš‘ì!TÔSEQ E»-ÌaQןIð n8T×£*¨”™_Mí‰:˜vþæ¾ÕÜ5y¥v“þ)œ#N“å,Î¢Üø÷_¦ÞçYžé|iËbíLOú9«ah­uDáè-Ç §} ¥Œ÷„ú\óŒGøß®ÚdÑziYGMÍT/•†ˆ nÜ\ਮƒ0Óúñ}Þÿy9 yKõo²gWK?¤{M¨K%„h¥–z2ìʼ]±aÎf ¦‚•s¹³)WijTÍu_]:}‚æôYsZGmö‹ÛcÛÆ2 ØÏQmU'ƒìÕ¥õóS>?·­¶–¶´¥]€ ÖBð@;ao_âê5…½=àøPl²Ýû¡ÙÓ. iô@ÙÃöã[·ñ¿ÿÿ'T¹EQ "\¾|ñëׯãààÀW[6ÞÃÉè¥RÐPʵÝnqûÖmüÕ_ý~ñóŸ£( Ã!OÇÇGæ°‡ *ÀˆëYÙ뀿œALF£Zë}g®ïaÿ€ñÉ}…£  ¹€{¶²ƒ–lfõÎ6Þe£xhFÉgmrþ—̇²Ô-D€Fèœ ¬Èë–d2ôbN,¶2H©V9ÎRÙò0kÝ#"ºÃÑ\qäÀ¯-­5Ø᤭°¼·I­Ôv]“˜«×ŠBB)ó~)%¤(à4”ͳßËŽªÇ Ž Yt鄤]õw`Rc2uº@<˜7ÝùêrV{9ƒ˜§”B©…–= ðªòT9gˆ»j†È©Eÿ d¿×§‰Ú;*°6çßi§˜sLÁé^t7§µ¯Q0&‚Ì>A™gÍݣ晾ùÝÔ3cióœí]ÂÐHøûÓʆ¶ Ip&¨™}]HQ«~ê²äÖ—¡²àøÜÌ­¨£åŒiߟ]ÅžˆÎù ËÑ(Yñ§ÙæWXUѵGI&º>÷ºöŠ&=£4ÐÔ/`=V-m7í÷>¯Õ_ç3_O˜Ù¶Æ‡Òö̱ßuÑÙ5ÝïÜH}‚`'® ¾å„¡Ûú¬©ÂíÞ¦j¶ÿ¹EPäpˆ5f/Üõ=k 6,miK»PM»¬d…õžÀ3ÏO]Þݬ H0ÆkÒ’†‘ÄvSB3 J…GƒÀ(Ë-´R`­ñèáC¨²Ä'Ÿ|bSK— ¤)/ËRØn6PªôB³ŒÔi¶ Ù`Pª4«xðà=|ˆû÷ïÛì%€Èð°0ÅñßW|Ä 8:%$M¯,qp}ŒUÃÁ/'ûº»F_1éY¢‰Ap”a«Õ ºÐl䔵sÐÉÈœñÉ6ì%̺6þ=©Ž€8ؾr¼‰8~¥`,×ÀþÆ6{¡P¬ÌÚØltR“¡ZR€¤u7´¶O$ªJˆx˜¾rÏ‚ ƒ%@N{œDÌ /|]_“í¿™ÿC5jëŸúdM9k­8ØV'‹Ég÷§Ôgm{IêdE³z7±Ã_}ö±ÓÒNp×7ç° l¿}¨×sÌ „¼í}¾¿’¢‘T^èÇô«p›+03–¾à¼Us:Õiu¡*Õ ëgsö‘‚Äà C®ê @h‚ á3´Uf\Œy#ì Ì¡±}}‚Q€©s-Â8¶_º×q“ŽM ÷±m¾OöçÛÐuµ+óiHxå…Ì|KfôYsR±Œý4Ÿáœ›¤1weä”õÚ }ï# ¡+ä“¿£©’~~Ì÷õY+MöÁyhK°aiK[Ú…hL•P•N…Ë— ¼ðB‰½= AÁt h“Å/Bºë°ECÚ*­Œ¸ja)‘Š¢Àæèÿá¯ÿ=~ô£™ìäÂP¬|ík_Ç7¿ùMŸ)Ê̸s÷.¾ýíoáí·ßöÀ¢9ÀEíŒeïØ ºXãö­Ûøè£°Z­ªwyn{@ ¥ÍýSPà` ÆëµÆzoƒëÏ_…Ò‡xøHãÞ]€l AÀ Új>P•™çÈÌNü]ê IDATÞD¿4Z s…<ñ3<âúNä»—‘E8ø¤‘DÍMMrzeâ<ú] ∱BQ¬ ”‚b—Õ"ì‚FU»à2ÿf0*ñeö:îúÚÓ—ÁÏë7NkVUÄL@Hih8J !Ö{k¬÷,O·ŠBZ!zØÌ†ðz†^Mا*ì{[,"0K’6tMº–õ® '•Š+¡k²Î· Z‡§]‹ûa¨³i×HÇÐüsÏÑœ¹è÷›Øm×(Bš`ØLÕÛfiF“&*cÏ|*G‘‚î&4×÷‘\Þe-ÀbFSöPß?Ü-âM0UÂ~§{Š”æêÔŽ*JàØ>ÏÐ8ÿ& ý‚]}¨Pú:¨§ëHîuVŸ¾îêó&Úˆ.®¦àbר !LuCTyÚv}5ªÎ¯ -Wb_¾Òç<]­²°•2Y†¸êôβ¤îiÄI¨\µWŸµ«¹:ƒyÂ=T ;[ÚÁ™¢¹¢=Íî‡=43ú€[gâ×¹€ZKeC=Ø`´¶4ªd _9JsÁÖgÛƒæð 6‡4ž53¼Çó ûìUeþœÏ3eLÆh&Ì}ï]šRmçjŸ³0Ýß}‚$7`„ÀnvÁã%08öÌ:›}«½šl 6,miK;Jóëd”±¶¯^ÛÇ«Ÿ%\{æXA«GX¯÷¡•€RÚàš¨ªBZS/@Ь¶à~þó_à—o¼n³«ÈÒPhüþïÿ>®^½ ­5V«<¸ï|ç;øÙÏ~!dà0êŠ>…âlÐʨ"18pªìá,ªçÁGE¡¡YA•%äz‹b}ˆ—^¹„½+%>yð·?ÜB*¼bóœK.3ùê“õÿRÛDúT?vg7bœ¾› 3’Z¯…vª%›¾…P€¡@Âeß»¦‰«UÜS0- §•š>ŒxºŒ? “uÌA†nˆ…§Lªz¿šgq©LLQgó° ?kçt:#Z{|;bME{z$I¦ò ,K´²U {{{–2CÒ}§¶…«È!áÁ"í)³ŒÉV'Qvl\OUUDíV™ûV Aо·˜U €{ðŠ#†"Ç  ´CëP}ŽRcÀÑê¾:ùÌÐÊ)Ž©æÜ•u~ FÓ”AÂtdÁíOd…¶CÜÅO˜u£^úÞKU=¢]˜ÅÞsô>KÃ%ˆLqJœÒ©ƒFÑ:Ìe0 Ù?+§O Y Ú]OÛïdhg"y…WÊ®CûÁ3JQ8ž=>Ö5À:tÆ›´˜Rnã.§¿ÍùŸ Cµ’Žq¾/­êUY’Û*lÒ9ÃAÐX+]ã÷o&®´·Ú2 SîogÇå쇦ßÓk9j6gWi¥kà¯ë{w~í²ppì 9Ò{kÔ R!H,È SÖ“Ó¼»“:Öäqó³Ú_ªsEøçëG»Ö¸ÿ¤ó%±iÙÒ¿æçUI‰¨øP€tÊLb4‹„û‘¥ÜÞëèÃàíÅ>M$sh ÑÔP,O]@PbŸo橇ڰöŸ˜ [7Ãi8ÚësEv^CUlß~ÎU%u}>g£äh™Ù'F†gÞû-§ áÿSØæ¯ž .y²JÌœSôø4>ßf#6ÛêÔ@WßÛk×d²~%÷ÂÏæ{~nK×–`ÃÒ–¶´sÝBC5ÝŽ5+ãÙg/¾\»ܽýB< V Ö &2¥¬h&³U[±n,ʭ•§.ã™gŸÅÕ«Wñòg^†Š5Þ{ÿ=>>ÄÛ¿þ5¡ÑQ¤€ *Ø(¥°ÿI»˜’ùlÒO¤ YRTE`Kúà óÔ:M½ßvìg¤„‡öªØ­^«æÎ÷‡šS¨&ºæ75:[R}¯óÙNÔwuê np´)JA®†›º~­…mk¦¿çk)¢5HÈfpÍUFïÁ°¶ñe×cîæ,Ñös< >4K6¥¦2@ÕÅ>à“Ë ®#ûíøSÅ›ú¯/µÉù¦ÿàhm¬r€F_jx°U .àÐç<ìËYí n®úD´r,ªªl=ÔiˆöKei)´Ë|9‡3bÈZ"dÏ…nP„ªÊ9ì>nN¼Ïû(PÞ‘A|’ýY@Çî'<Ëýì>÷«ÿ]¸ÀµXUÕ(ŸÊóŸÉÚq³7J :ýýŸÎ´rnž„©¹ýÐÓ8Óó2GùÞG4ï  ô™‹î;C-‘\×ÉåÕ2&ñ«¢¿}’+¸Õ®ªfi½ršNdöGh–`ÃÒ–¶´‹»E3@tŒË— Ÿ}¸ñ+ |\âÑácl¶€ •}Ÿ®€»PÖgÜJ04Ê\T¯lƴƳÏ>‹õçŽÏþó¸rå öö÷p||Œ¿ýÛ¿Å÷¿÷!è„ ¤˜rûC¼ðÜ¿õÒ®‡¸õþn}$Aâ%@î[ªOKc¯-P‰£’–¿Or&.PsýR‰Ožœ8ßyëvx¾©œ±³•l B(È‚¡•‚аÁ.•ÕB;—ÏÑ!é?"ͬ…U@XÃS_@kåE=M* I_ÙÃv±å²Ð™)º­9 R!g -¶ ºÏÂgkpU¡cá~®2|fnruú¤a<²SœŸ¹A‰=™“ 6hȉà7‚ý•êwO5!Rpóß\Έl¨³—s¢Ügµ¿ôÍ&? gˆ€_.“°ïó4U¬Ì­'pÖÀØI?BWà!¤O +E-Îùðû Ýa ùXxæ…÷Q´%U|AÅýÜô•ã€z °„ãïi+yú÷§Ô¹µ9ÅÊÜýWžz ܧW˜º~»îÖ+s˜H1ð&¨‚ãB:Æ1ûêYÛ×gÍÑžî9cΤ©û‰x¦kð43êÓ=iŒàðÐ Ö6›(M Xp‚˜{鱸ƒ]¼–¶´¥]Ìæ«J\"|æUà…7CÈÇ ¹AÀÏM!eŽ®„l5[Š bÆz½BY'ðÊ•+xå•Wð¥/} ¥V(ËÇÇǸqã~ò“ŸB+…ÕjUãXwÑ _RNaJNX­‡X@–µ)³wÕ"‹µôŒD%ž}F⳯®ñüuRîßîÞJu $$„ÍȧÕîNârñ¾Nù“(ÊFDÍ¥ÿ3ýú—zÜ xïÀ{¶ÙëaµŽ†G3°Z 2h#È.„€fW± „…`:sÐ1Ôä׎fm´T¤€‘6Ÿ—RÚPœ²üÚ&U)C&¥ (q¬{Xáèzjs¿Êbe©á_7ïªjCÜ ±çƒ££!!…×|p´lõ í<ϵv»†ù$Öw¶ ±26mÙ]•ñŽf+ÍK†ë/:ûÐí é‹.GØ;„"ã R¿çï«I0v, g€i۩ƒ¹ë§´Oš“ÞWˆ;]/þg¨2`NÀ+—1ê«r™ï Õ Mç¹ÖªTÙàÈ.ðèŸ š’œ©DQözø³ ¤*w šÅᛀ׹×ê°ÙUÛöOl·çÚÆ`ÂÊGD§7  4{½W¡â4”Ð+ña¼?×®ãÃ'6þ‹èötì4æÖ{h³_ûPB©èzRçQ¯ ÍqÎìŸ9f Ž=y:ƒ9¶%ذ´¥-íboä ‚ñìóÀ¾ ¼þðxû ¨<³° Qò´D0fm¨8V…Àª(p|x¬€×^{ /|ê9\}ú*~õÆx÷Ýw-W?ðøð7oÞ4`¦uD«l÷üás˜Ã3:æ¸EåT…l.€?‚ ¡ÁØ¢ ÇøÔ§×xée¢x€×_¿‰>X?â§@,6š„JX× ¬ºL=BseÃbtv¼SDÛ Ãnc®ï÷;ð„«f<×þ€áÒ7€&ƒm•BQìáðèš ¥ÒÐ TØÏX**BBOÄ–ҫʼciª´f…4bÐÚT)HIVÇÄø¯BT”I†Øh TäüTU7¡æ æ¾–¨ òÐÇÇÇX{¾2C©m$@Ì;ʾº!І8­µš:#m™ÇsµŒe! ‹˜M_Ú|0§&Yõ[纛ƒf,Ã]¾K€bß@BÓýS²‰QBÏ×Ûñ¥“y¶¶×›8—ÓþÈñôOqv1¸ÐWŒyN€Æ­Ã¦*„h\5þ-§Õ04[7WùSß²Û²¸3Y¡!m3´Ò(ËÒÓjææ„Ù÷U¼¾.¢ýÞ’Q޳ÙÛ«qTJÕöÕ©[já\²P;‰Lî1ëKƒ!¸¢g=ãí¶k¯ôý ,ùt Á†VöI'ejO5­»P{e—ý¿©ó~̳ÍE…ÙeS÷ýÞœ}–±›4Ò1ž]¼š.63B']#Õ\¾Èsïé&ÆŽi¢gwÚÏ™ŽçlXÚÒ–vá[!_xåUϼ Påˆâ’ù [nÍ€Æ ÷z5‹[x .´¶&+Ñõ“8÷Nìœ3=Òìi0@\µL[ ¢e©@XC@…2Á® ¸À.˜@þ%)Pœˆ²©R0kCkKƒäúžWvþ2 ‚-÷;“ ¯¨°ß!H˜àH"`L€ò¨ö_a)܄Վ (UFÁ’T~Ô;†Êgž$­×t`±HeÔ3a»-QÈ«ƒ=¬V+l·GÉžÊ'Ñ"*/úœ¡1É9nÙ,/¦Up{ëYÒ7ÝcçÎíœtµÁB3Ð®Ž¡—˜{ìzi? ŸùéÿµJ©()%¼~bŸ§µz}œã!O9ÇÕI¯©plvp=×”lMÀZ‹õ¤, ÀP¥öÁá¾þÌyNL«ìiÊÓSõ\¤»}SmÝ™ïh t.ŠÕ'Ñjb> ä<#‹œÈö¼\'„Á-fëÒ–¶´‹ë¥Tÿ ÖxöàsŸ>xx|ÿ>Ju Àžç‰¯Qœ„‚²B@+Ri¡PªclÕÇÇG8Þâ“ûw!å £££J虫ãÄœ¡ÄHt¬ÓXz¤ì¯qÖr•Ùí$w‹Àåû[|úy/}þ*®]=Âã½÷7¸ÿð2@WPÈ=Ò˺Á¬¦¬ƒÕä¸ÏIrz“IÉž/ŸÄî ¥}•Õ¹Øãrz/‚Ò& ¦5ai¡÷@Ì (¥M@”Ú€êR8ê#§¯@&=Í 8K„²,­Æ‚©\VóL¦2Šݲ¯9%¯kàÖyEÍT¯DéÊr?yS4þWJB©K€ŠKH!ÌbÇѬg¿óðôùܾ†ûQ©å@£Yמ D±6㥵†R ÇGÇ&xÄ–zŽÒû;¹õÙ×;+ (Íf;)nÝ¡9Ø9 c h®qV|ÃK@?ßé\ÂKÝH»4ážú~\p`xH—Ä•2¹ë»JÙ¥å÷Š437í«óf¥Qª½oÇ÷‘î ¯vg𩘊L¥)åï‡2×;¯~ÉØÏ5í5Ìnòóv7\ž„ñËé*NÑD›zF>yº áÜwŽ]3Þ'åØÃãz¿§òîÞ– Y~{x‘§}f…ã¼–¶´¥]Ø}ÞÃôX¬ð‹_ÿí￯pÿáwnßÄû^PÔº{pµ G½¢!d"Íÿñoþ~ö‹ŸâÞ'÷pã½w°ZØnŠU­J• %f—3QN4Ö}wl Áæ4Žm¨^ Õ ÙCHH€ùûë#|íkÏâÕW×xxÿcüøGïâöí<~|û{— eÊ|(½Y… ñ9gw|j9h5{aïidó˜ ‰Ãš p;§F¡ZMãMi°¬zÍ)Ú–Ç“ÐPŠ¡Ë€ÑNP¥† YVE)%ŠÂ4o6L` ¤CXMÖ…Íd´•=Þø"—õ¡}0®âu±¦ BözÜÜÛ…6Р„w!D !$eõ$äiàB€Md¨ÙÚîs*íÄXg©Kd7¥¬ðÄÔûBÀSH)*Èê~xB¯Äñaÿ™xœÚïÀ®êwB½ ­Hª=VüµýªSÀÖùqº%¹¾«õÑDCrR`Ûi8ÓCª+†ÜÿBOØÝ^#ÁV¸u~N NΑŽî­E:dhë8ã~Îm)"»`¡1uÛês¬Ï´ÂAk] Î̽ô> ;¹‚î¬E­ÇXÁsþCÇ…ÈTÁ:=»'În¡Rr{Qûúd,GØùŸS쥋là†C-ô-ƒD>_¦¯@(A´5ÿb eÅ.!*÷A‡¹VŽÌBBc`Fæ‹%Þpš0H‰…ÐWÓ1÷ìùÚŠp¬—`ÃÒ–¶´‹}PÐ l·[Èðòg÷ðµ¤pópëÁC°zQ€Фm ¶¡_!FBYjÍøåë¿ÄÏù3€L¤z»-!å¾l%á@­8Èž5ÔÙ5x!U¢eþ=¦*‚`EÀ¿Ì)ºÜ@i A+Œk×Öøìo |ù5‰ƒ+÷pã7‡xý÷ï^ÁÞúÓ(Š=`h"0ˆE|¤XRknuüs€ÛE;º¸Ë½΀ְYçÓ4¦ Ô…%™î5ã@Uà@ÄYX͆g7ÒFûÀ9òæsVë€×®M· kméhL£Tf~2À\³¡šRÊã$Ör)Œ•Ål@¥õz]98AB…1WMH3QÝ?raUŽûŒ[IÂÿâþ?¥+ã3šwæë  ¥„µéw…šËNp%¨¦ÊóÐç(;ºÈî52Œ½?MM=(cÇ•Ü^‡L¥PZµ:ÂnÔïÙhß°îÆ(›™[_ÿÜv¡Ñ@HN 7/NcÞÚžÓiîû=sš‚“»JÉ2÷xŒQ,°MH4öêf>ê¡÷îK)6k‹J›„aÏCZiÎ…”ká~ÛÔŸ9€4Ò  öñ8Kš…Þ˜ÜmsåΪ0û:å5Ü{œí2‡¦‚£¾ršMó¶i Ob½¤{”@5¿òú2MΓÓs%â‡=ªÎu>=%ŸÄ€sï×p’„1f¿ë#NÛ¿ª>=û>œ¼ÎG\7—¼3å>ƈ„ç|ô&;&=ËrAîðgìo³‹Òë¥Z#èÀ¾’¼Þså ÁIh›Ø ÞB—ŸàÒ¾Æ ÏûÀ3Ï—žŠ5°ÞööÌUÊ­ýo>îÜ=V¸{WAñ6Ç+€.AëÂö·42…ɤÂúˆö, …îÚˆ®õ[ß;6žù} 6,miK{"š€,€+Øà¿½·Þ>ÂÇw€[ÞÂZ>V8:VÐVLÍ•€ ªF€ ´]ƒèÆvËËœ 3a˜*áÝà¶:ÀÄ † ûÖ ¾˜Ì}[=æ²ØâùO1~ç?Ï}‰pÿÁÇxý»øààx{Dr•9ªC…=ÐZW/zRùû„•qÙ÷ >ùF65‚u³®€7—|àÀj–@Ä&gœlí &ÇoœoÖ¶‡KllÀ™’,#Û$‡ž†¸dždCÕséò¹Oã1Öe.—‘Ô\ôýóؾ*£®5¡îÐÓGXöÑ)à¯ÍkK¡!CBšfØÜÌpébŠ›×5ž½•à¹ç6ðü ›¸xE`¸¦°¾!‘¤ 2јNÆx²{€ÉQ‚Ï>Épçã}Ü»§ññŸG€»w¦ØßßRZ u Ö `é9ö:yï©?¡©Å ¥ûΆ~ô£çb¸`Ìø 0.m+|õ5àà ðΡÂãGŸBk ‘ŒeI“uvð"Aäâ¶Úò»›Ÿ)ÔÚÀÓväB²T…ðô ‘ŸÈ÷%ÄÌKgÄI¢¶ ‘"‘Ìcl^œâ¥/·_"ìãÝ_}ˆ·¡°?¾¦Ò4 ሗ ʘH"„<Ê™.üÈ硼ž€W&ݚ÷Ò] )–šÎ»„é<ÐS¸¶LÇ{ï¾[ù–p-žŒBy—À¬ìõ ·I •éü€ý÷Y+ÓMãU½çŸ‡Y ÁÑ•ïr!uvÂç°Çi¶aÂÓÓ0„dÍ ÒE—®WQã‹u« <É@»®£¡©«¨™ÆLå•R ‰Ö‡!W2bÛv½økËET”V}Ï'=÷§±ª~ž¹áR‡Òé]ï]öcŸØŸÓyé¸0Œs3ý*+Ê ¸Ë¥JVÿ¬t K•гÆ4v3´´‹OÓ³ŽîﯼK<Ô j‡]u~UÓüÖ%éOÚ¶ø‰Šh}ĺfìí9³;Õ´ˆ«õÓ»¬—6ŸYì‘ùⲦÊ}ßNUé¦0ÛîЊ9< Ó±èažÏlÛ Q箢;¢Ê>.kþb ‡®6vûpÅ(“76&õ¸|I˜â:!3¬­MpëÂí/¯áå—×ñ¹Ï®]66Ãá†C†„0”Ã2ˆW®L yŠgŸÕxõv¥¸{w¼üò—Ào~ |ò‰ÂdzˆéäC°l´D‰,Ó)s³÷ÿÕŽ>ÙÐ~ôã©®ØÈŤë¯¾’B2aog‚÷&Opt4Â4»Pjq;—·"ý`rÒ‡iáSÒšåÊøtÔJF´´ÌJÚ\‘Eö~L%¯0Õß8Ä`¸‡Ïa_ýÚëðÇ?ÞÃ{¿àÎ'hºÐ:’ÁÄ2Þ\õ'G­¢ÆˆN}•Ôiò?Í<þËp¸c-°þßðn6ƒ ®Ëk‰`ô´Ò (UJ+K[dÛ/Q´N›®¶TaX© ÞÊ\°"Ú‘`*ê§vÓ²MªyH‘d\>—1ŠÊb²æh–ì´΃ß{÷(¥@–iÛ–ËÞ=¡dƒª’ UA_ŒRÀÖÇàU][—ïËu*4ç­ÅùÂË[Ám£³(ºÆf€†¹2²pU óÛ€eÐUk¡K„ØS˾Ÿ¦Ï>­] §!ÙtjR[¼r? )ŠÄBìyƒ—¶¦ªhpB!b¬ù غ‹‰wú#Ô)MN¨}k"¶‡Üsˆ%ªlÍü}§wøÝ@u~bÝüÄΩEÎ&ª°Ø¾ò æþþ(<¸š3¦É?9k{5f«ÚŸ÷œ³œúýRñLõ’’Mó&N˜̓€h¦mï—žz…ÈfjSÄä*]51”ÚÇöpãá+_½¯¾¾gŸãÖ3\½:Aš˜@²ô¸ª„eHSƒó¬¬æ €7xñE—_Îðá_ï¼ ¼ó àΟÉÑL°Þó TyËÚ&VܹížcŸlèG?úñ$‹ÙÊm­põ A¿¤ðoûÀÇþÙÄe“ F"ÍVŒÖÙi”Ó^uàÆÌ]ª:¡rb"V&«,À0R88z‚­í1¾ðEÂ×ßÚÀ /?þ o¿óú©› \D"F4°Ô5V:Bç¤sÞw¯ºwF\%±èó –¸`×o¥÷ibŽzŽü*ÏoMõƒìâFœµƒMÔš-öʦS‡µín`d™²ß©—Ã2ïpTJ.‰ J|Ù °Ók((ÈfœWám®B@˜^Š.Z,JÁJàl%ÑIš}OX!z^:_|{Û‡¾úTîu¡®3#I’‚j¯tvt¯¾UJUÒb'0ðÕ^"¦N¯¦<·à"Hž IDAT‹ùJMº+U>Éì~9¾ ø™uS¢¨ls£$äÞ¤×Qâ¶)Tjd/fï«8ü«¦þï…°v-H×ù¢u¶vÎ;™Ë_¨Ó,húœð¾š:ŠŽ+6­Š?ÛÅQèç—ºüljœF­zîO¾kÌíyú™yAq‚Bš¶. ¼ø’Â7ÞÚÆë¯ðâç'ØÜ<Âp´Ð€±Á§ì~em¨¿ÉFÐÂge@C˜`W®¶¶nÞÔ¸y¸vøÉO€ÿ|ö)CâSÅ`R–×qÀªQoºØû^ ºýèÇ9}¾<n†€žRf¸|øÚ›&Ù0U€|ðOvR.Õ¬ƒ¤´º"gíÙU4”Ä °r)`"{bµD/ ¶ße¿™9O@Mpñb†W^]Ã7ÿj„×¾|*{ˆßÿî!~ÿÞO_F¦¶&kH’Tfxn)=cI™›ƒÝ¦{ZFû¤•ŽUƒGN¤™K/:´Y©Ì¶RÇ€ùZsA7UðÿP™.ª!òÀ©ÌMé$•‘YÚR‡…´¢?^ÍÜv µqÇ“}«îêä×=·e DWñù/ã»–•`iÚ{ÇuÎçÚ@Áùêsæû´Cî5îÿ±OÌ_©Ú1 !²,›9{›ÀÀðúý¤ƒûÂÇy¤× ×¥fm´Ë¼„M•hm¸·B¶ @î?¯*`ñ¤5|*Ww¯¸%–”‰úKôêD˜«‹³lB}ºj„žËתµYOÔÑ–Ï“ ¨[cm€Ùf›?Ÿ¯{V]Àf²ÛX’bG'H£ÔXL“Û®ì†j«…Öô|—á¯Ì3ÝÖQùþÛÐnÆ:ܦµ.t *ÎિŸ„)§·5qƒ¡k‚j…$9Â¥+¯}õ¾õ·ðÖ7·°½ý‚îbf23úNä…Ù6$q%NyMj„z‚„á¶7n—®Ÿi 7nâÿ¼ûðð~AGP04á Ä0oˆX"w5óÛ'úÑ~œ“è¤0Ô2±¼Þ©É¿ù&°·¼ýî!'÷p°7Ô% åTÆ,lWƒ‹í,÷wé `Ê“E†ž+ÉóKá~e'éüóÿ› ‡»i¸ƒ¡Á&xéE‰¿ùæ¾t{ŒÑà1~þë‡øé÷ðéÝmH< ‘la8žrŸSßÑEqY ¨‰ž~0WW•t– U•6³?/º,) ´6€ˆ bN À’—&ùsžeYé÷ÓLA©Ì7\½„c óô\PG@Ú¼š¶Bƒæï—ï¬x”á„4Ý9kç·¬ãËwüÌÊîO×mAК!9N´ ê˜z py@b›µ)Ø(@(§·â97g"”'šŸ ¨)X6ëa,Ý5WÍZ FA ?ÑP²dE— yIcä%ÐÈ{Þ4÷Ú:+à_ h$Ê å@Še….UUÝ^^FBmYAnÀÒf^—y~Σy±È5,“vŽðõáƒïMÔC±ë¬¢;jKu¥”о§ëz!"¤iš'ÂuãWâŸ;W¾‚BÉ÷ñý¹ ŸÛTV¿3œMö¨j?/Úå €7bíy}Ywö Õ¶Hªt]¾Hy Û9¯AíþCuÂaÿk^ë“w{ ô\‘Œ[v^ÂÄýÞŇÜpŒ¢p"Ï^TøR'µßB¿°ÊκI^ñF Ú®®çQ]wN›ø­ÉN3°r‘ùeŸß‹Æ“M÷ºˆOÆ Œ3œ,ç"r6ÁòÄtæ †¤1®]e|ùk„¿ÿ§-¼|;Ãåë÷0ìÙÐ~ô£sž^0¨‹ì±@:^üœ€ `søÏf¸óçÏp¸-¡1È,m­¼ðô›M¥xÀ"à5¼•T:–<@®âjpp9g§ɱ(ƒS$ƒ#¼ôò¾õW›¸ýÚÆøõ¯?À°‡÷ÿ8ô lƒä‚„‘æÂ1vý%l—-5ç %`xó]’Âý}¶†¦ìTèc‡»€=Ë¿ß93œ&à-*‹jk šîýêöׯƒêFfÌTŠh[ª-•Å$ȰbçÅ: [l¬;c+¾ '5<>à°"ÅÍ“ðæ¥46Ñ@y¹IÊ+Å”ʦҤ>¬¨e¤^ÿþEb^ð÷(Ó@ K_•€(ƒKî°õ@ îëõóS ð†B€]¯¿þÞ©yþHGÕëÜ^ùž*`‚"¹àö!ˆ-u—(ï?ŽÍEyq$¸ …Ë}͆EÖ·X;\7?TmK\Š3„Z:+Ñü¨(¨òë¹ÅÏH}Φs,Vi½ìï]Öýt³ÉË^«€­¦*uéQ´Bw¯÷)vÂ9Õ°[¡*ÉêÓÖÕãU´>¹}/l‡OÜG§j ¶ŠZ-i©ð«a p„`ƒ-°ÃµÉÉ*Ý"¥T­ ç0s@Ôê$®„ŠxCÏ€¿öߎR eú'>\ïvÞÂê¯an¹W Ñ}?È0ãVÑö´»Ål)åTµÚ¿a.»'¥´àq…Ú1];ÃjÖ[Ü¿:Þ„d‰v׊쪷¹‘–¨î¬¬Ó¬¸4¿¶ÆæŸ†ÄEÝz\eLÞ´‡‹ßQ©þtïù’ΑlrˆÁ€qýáõ×/àÿKøê×R¬m>‚LCiUÐ"ùŸæ’\¿&=ب´P‰LªL€7€Í ‰õ‘kàg?>»¯¡Ô™A³„öl:·ºÓùGŸlèG?úñTö)ŠÈ*½Š! $Rã¥71(l¬àGÿ¥ðÛß|‚½ÇÀ7ÀXáh‚ÖSA`ÎrAV‚6 *;ç\îtû[.)E[Ú#.ª5e19€Ø²¤Èòó V:wnI4Åú…CÜxþßüÛM|ù+S¬oLðû?<Æ~¸‡>؆V7 ± ‘ Ó +Ë)è@9 ¼Aü¤$ì‘"“½/£,Æë¨CòŸÛ!\uOW§ŠzªHÕ¾D¥ï(¯/ö€xC÷P$„´ öùÂé”B"ÔÏpÆt:-ÝOÆ=3 U¡¿àWvåbLÞ$ŒõºœËÄ:rIÈ"ØÉ»|çÑðÝމ@cºªrΓ,y.Xk¹*PÐUVЗA ÎPí3Ž8o‹v*tÄN–yóW8âÌFß<µ²1\ñ_oe­¢Àf¸žã<×äñ½Æ*Œ#÷ÎÑd ŠÜLäœí\î8Èadžuü]E¢1±.¸U`– ³Þ´òÀhÎ?»èRó*¢v@¸*Gå½\[ª»˜ª·ÏˆDO0£j‰Í~f<ø+W*rž µ¦*º>êEE¹Ófc”ÁT“ªª*ÎgÞcϲ.TeÐz1¾òºŠÞXðíƒÏm¥. Â<Rù¹0³§›+T‰ÚƒjU×îhÍÜçK)+“3þY*„@’$¥9 )Š*÷÷,䟳 .6guÕöU¢¹M€¥_Í~¢L“Mà® xU•4p¾R•VM,á`ž}jm!Wø!xZ$œµõóDƒ½¬?ÿ4Z¥åƒ½ÆàèÙèIÀ5[à‹Jg–óÕJÅ á3iµ§ Ÿ3v†ùâï…¿æw PîO0wXWÜLEÙ„²÷G¥‚2wïD”S쨰Zßù(h÷58ôEôzx&·A3›¨©¤ûšk³«h°âöˆJZqÌÖ®Ïq2ã>µïæˆ_CõµåþbÄ&´¥Q¬³½1Ÿ$ü._G¦î»–Õ%Xw†Ô‰ÈÇÞï¿§.ï¾ÿ”MÑ”¡#*_5º]óøE]i¬ê?KX $ÏIH“[ðÊíÿýŸ®àöW¦­ßC’€HƒS+ÊäÑ#9›“0€ŸP°8„  dÙ-|{!É%Xõ5…¯}ý"¦ê1Ž2àŸ÷î"ÓÑv±7\L΋ÏMxÖöɆ~ô£çbU€Âä510MðÂókë[ØØ˜`cí¿ûõ?Lp4Y‡Æ€!¤”P<±†k`3Ÿ3A4œ}$LG1ôÓû¿»Òð$‘L+ŠJe€!„ È iz„͵C¼üÊo¾uo|m Ãô!Þ{ïc|÷»øÍ¯€£ÃM ÓËéš}/凣iL¿yÎSʆ®)ã] sþž[œr~‘D‚øö¡Žª-,ë÷•üǰó³ËlßÑP·×݈Ûb&Ö‚}M6Sd@\´WSÄÞ6Ý ×î‰æª{š ÜÚ[gZЪ—ê¸-(SìTrpÅyîë»Åöû¼ÝyKó?ÝÛÁ9¢µKúr¾ÆÂâªp¿µ¹‡º½åóÒGAö†õJ-Ï¿:J¶“ôÂbƒ6Å1º£jߪý5ΞTmÄÏC`™‚8SGØÚ`|éöeüý?n㯱yñ>’t¯¸UíÁ?Mµ,\t<˜X¦Ðt&Öl¹Íì/ù¯¿¹†½CM€Ý`çñ!€5®Œ¼¤p%p/Ý~ôã| ?ÁàáA¦J8lm'¸ý•ƒ’ÇxïןàáÎG“K \‚Ö)i0±M8”àZ 2˜44Í”âäŽpN¸×ÂÙdù-$$$ ëÈjC›4ÜÅ[S¼ú ðæ)¾ðR†õä>î}¸‹ßþôþƒÀøà†é5 $a]ª‘q'˜°'—­”âÂÐy¬/ôäpm÷3·tÂH p¨éÈVɵû“å.E.ŽåÚ×ÙÒ{i]®¢Í¯àáJu•ÏšÁºiÎIíY—lĹ7ÿãîG ˜ï‹ëºëæh€ü^µ6ÔMFóÔÛ00„”žäš. ! P U9€÷5B}©³€a[Gt5 k¹80@i ¥5ØŽ- !@$sZ/ QÊ;œÕRƒÔ¶ÕÐÀÂìÁ³zŸ]¨V°œ–3ï¤é–}/áŸØó'ò”˦aŒ‹%p±ý\ž|æ£.™ãÓ\ùk(rn£ATe{šèn–!Pßþ½ªÕ ^ìW);Ê1Í›í@  ²®kÿ¸Ö̲hXý‡ §uæìdf°[3Ì6öªY?ÕÍŽ…Or*˜{ÝÆ€ë€ê*aõ ?ßéÞï Kt’¥¹G^˜7ïÚ§ËyU¢ÐMúUƒu÷° ê,i¤Åtæ1.]’øÆ[7ð¥×4.l?ã±µ£>Í´·¥½#¬¡aoýåZž¦C)&±¯sZ¶y)âË_ïwîÙ8<8ÓàäX¨ÖúdC?úÑs±”ý¹RfÙbÉkk$Žðê«#l.àÙgð‹wpÿÁCÜÿt$.c’I0§ÐYQ€*xcµ6Ɇ¼…Ú+m·ìMTt ˜ÕÐ:@¦“ Öc F6·'xáE‰7Þ¸ŠÛ¯ <Kƒ&ðɇñÁo2üá]`糤¸)Ö1­AkeˆiJAE Ã&Êt`¸vrWUèsWa¼îýy,,D…QZ1QÞP¬²¨ R&ÈT‰¤Ô­ ”Êÿ$Ib’N0Š‹¤ *¿ÛÂ|«rU'0|õ­7GìÞkkÛU·ÅAo#fì^¥”²sÁEfÏ·Ù*­ß¼íÛüH@&dU6Ù`Ú÷5ñשԦç­êj˜ `Ä  u÷ ò€Ñ觘¤ŸA6bAYê*G\ T€M§gÍT'tªhzBÎç]^*èRÑÉܪnŒº{Y…ÎAMÅy ¬OòšÃ ôüFrÚ%A––°Üa׸Zö½†´Múç9ÉÐemTQÍ5% bô!þû *!óï,Ë¢ß]  ò)˜›êyŠÍ:D‰#¼ ÂáœB¨ÎÑ  ¿o^žø“æ·7¾„®¥*½>’äiÒ,ˆÒMÑóÁ×»‰UÕ‡ú6±½3өڲˡøûbÉö.]ÎÊ:JŸ6´J]¯?´su>TÛk>‹¾ËR×¹'´Î HáòÕÞúæ5¼þÆ&®]¿ ™>°T®ÈéÈË80§`Zi `)Dt‘ÁŠŠ÷j4 ^³TÃSM@¤Šˆœ $%0’À³Ï&xóë>x8Üîüù¬ L©Í^ÐJí@ŸlèG?úqŽ¿Ûrkf Û2¬!Áµ«ë¸qsŒ÷~7Æï~?ƽOö ÷‡È²-Fr ™k…%*Zä¼Ö_ÒE³šÀByUA³ô’Úô4Ha ðD®ßHpëV†gžW¸ýZŠ/|!ÃÅ <ú {ŸîãýßwÞ&{ÀÆàö³2I0žå]ð‚Üy*Åýª0Ç+VÜWy'!8NHý‡ +A+…Á”*µ£+¥e ¬M2ÇQB<] ›*‹©û?'Ï)têœÉJ'rEjó‹³U3®úÔj$¨ u&ñ®×WpÙs„ÚD°"ÎÑ$Ÿ.fþùˆeá¿j .¬Ô i¸€Åº-ÚÍi!ü<Î&Æ.³±H™^6œšã‚ÏÇ 5Q¹¬D‰µÍû‰äEçÂUxÖ‹ŒsmpϨçg_ÖÜÅÖrÛ9hâŽ_(8MÒqñ¡þ‰ÿs?Ñà þ‰,u7„×RéT=ÿUœuUú>°&tû¤CýzŒý;ß{Œáððu]\±Î™"ñÊHÓ4×þ¨÷¯Cˆ“ïˬJ>W©.© ­v—£tžî I¯XjF˜¡F·K’ï$ ük‰ÙŒ*Í ˜]i¥!± ®«ä4îÿÝNÌ?¬³MÀv/5Q%U}ÍÌœXHÚèk£Ç&»æÁª’d­´¸p6 «ØCY–A&é0Ãs/Œðõ·¶qý™ G!ÄaÞ@0àÎ0 Sìq÷cÆ ]Çö•u¬_˜€è ˆLB[³­Àt¤€9ÅÑÑî ìg¸ñÌ%lok€>ÁpÀà  T(¤ÌðÜsÀ_} øèOÀ“'ÀÎîZo˜„S”¯«Ý©Ú÷}²¡ýèÇ9X]I!Âr-Ãp4Äöå-ÜxvÏ>¯ñÁ‡Àïÿ0Æ“8ØâèpÁëPjF  ضÕåÆÛrŸ`BÆ®êØt-ù÷ûHÓ ëC…­Mµõ ñ¹o¼q/}~ˆ‹éC<¾ó)î¤ðè0=†6G vŽH™ä"Î9°'Ræç²¹!Ô%Q§/êü°èbœ6¤ â®äß/E r}‹ä"Ö3LgG6ÕȬ×A.áàU,YFS»Yê +b€r‘í˜\vsxÚê8ýsÝŠ,ƒ”³D¯ÄÖ3•„(…¹szÒ@O, Œ x@v¹‡óÄã¬uò“ŠDžãù$ê»Ò.$˜ÎC(R<÷iÒ·œÝ㜟ò÷ÌGÓ°¬ëèAæ†9àSEQy ®M„-Q³¡íkccý˜oî›:»bsìÀöÐßs7±âYßš: f\á<Šœ×CÔD%ëýÀÓ=w@=e첓ßgq¿Åb’lSGW—5sæ¸*Y³=«ô—ë_]ί¦÷ž‡uOHI2Ãæ–Æ—^»ˆ_Ö7>ø‘)ó$-³Ì 9Ë{;¼óó]üèÀÅ‹GøÊÏà•W/Cn¦â„È ¾ Åò ”’88ØÀo~½‡·šáÁgÀ[µ‰7Þ¼Ím…,û ÂÒí:ûëƒxáyàµ/wïOö2˜ˆËâöË}²¡ýèÇ9F'h–™Î‡ éhŠ—^àÊõ)^|Eãù/0>|_ã·‡¸ûá!x2Áx|ЇÈTð$2˜¤¥Å¡¼.a  Ð!š0  cÃá.®_“xæjŠçžxáÅ5<÷ÂW®a”àèñ>Ýy„ÝOöb¬I‰q"1L Ò@š¤–'Ÿ }矋j+ANU ¬@ö+¨çC|.ôù€“¢²GX¡èEoòØhš®…A 2 ¥lõšp@œI(H)ó쓼cAe §¡À9Uá´9Õw2.Èø¬r…SWGguÒAZ%Í{b†6; °&ˆ$)È{XÍ.M'ŠÊ0MR^â«b.òü›ª]ó~VSÐãWŸÙ$§ižh`À®­XÐëö¤—4èpéóè;œ–Dƒûoòq]C× ö4·O[à}÷SERÅ+]µfb¶§M…é2îu^ ޾“¡ûz\MJìß>í•ßuÓ ‰#U©Ç»Wi®yÈ)=Ðn»o ³T@«¶ §%ñZåËTv‰h®ì|ie_øìíÃ& “ºûö;èM1Þbûù¤×N›Î¶¶ŸÑå½uAMk·OuÞ)”LŒ¡ •­ãÙçFxíËÛ¸°õƒô±)9UEÁŸ•p„L†Øy ñÛ_â_ÿ7ðË_"Épÿ“}$ô,þâEÂ¥ËAŸ‚¡1žih&<Ù‘øècàßþ%ÃOpì=#å!¾ôÆUl]TÈ'²œœØý¤À¥màK·ßü¸{˜Ž Űղ£%œžF©ýèG? ŒÒ )B†gž‘ØÜf\¿5Ä_Øy˜âΟÝâ³û ï`g/ÃÎ΄N ‚‘6s,!À¬!¡A4”c Èt„d˜âÂö—.§xî¹›xþ٠ܺº†+—$ÖÖÇHì<þ ÷î`ÿÓÜè0JŒF!AÒŽÈÉTSxúðF+j¡˜£ã·ý;ǰp¸Dƒ/¸ºˆÃOd£Í<ªÂ9ŠÑ#ù@¤‘$ „”B–¨£üöz)²l꽯XPlƒM)±#DÂŒ-;}¯ó„ ¡ZÊ?¯úŠËï[V¤ÒJºöuÔð;az5 - ǯ?ÊûT¨bž³,C’ñÆ$‘ M¹´|¾V„'j×Y [>ÇvÏ¿®õ=¸,£Ú¯ ÷mŒÖÁÐdX÷J[&FýùlmzJÓæ:ËBÛÁl“Ü@NÊÊm·Ý A'êx»i}Ê&*!¶Ýv]{GÎJb¡ ]È¢÷z^@éªÃÓ$€]Õñm÷ãøž‡ŸdpB¥²&C)½4{2Ïu“õ¯Úž)%}ÅyŒjùøöÝOLWRE(WÏšý “MUó×Üîú\ç·?.ûXE#Õ†ª.vÍ&®d¹Œ¢‡*Ý:Z™ÍX…†Ô2ža_¼M‚èÔÐ%Ÿ¨M&ÓCl]dÜzFàù$Öב¦'½á³8:ã—¿þëß·ÜûÄüþ`ZÝÁÿ‡‹xõö\º¬ å#ŒR@éO3>øøîwãÇ?î} ¨1áðÉ.6ÖßÇ`Mà+_`0’`‘årˆîIJ¬oŸ)Á[.\²É˜× ÊñOp‹êžôɆ~ô£ç8ˆ"ûW]`ðþ9:(¤¸¸1ÁÅ CŒofø‹|ºÇ=Éðà!cï8:œb|8…V†çèÈ´Â )¦©†©ÉX“<À¥kXÛÊpéòÏÜàúDh¨‰ÄáÞ6î}<ÆgŸh<¹?àÒH`hlŽRl®!d‚ÝÝ©án'GÇÃÐPVÚÐóp‰DØ#DX¨2B=d'‡œ—°ò«MµýG{·êbf+ i€|¿Ò9I’œ‚&×vð¯•4¤’T€HVv03²lpåëürK³é{F²Û^¥ bS‹ÀpÃEÒ(@­ÄüšxYP<›œâŸë¾?Úl×Wþœ ²+¥œÝ˜çÑ™Íõ:x&¨ŸL2+0žZ=•wÍ”«Û‹ƒw©èõÁ?Àv ÈgÎæ.L£È"I*¡¡¡5¥Ï, ;GUská\kÄ×@IÏ»š®…#íu”tuó1¯}­²!±JÌev¥táÛ§Œ ï%ìYðó´íášv3Bæ¡0´'òN‚¢6Óç^oüΑõ.×úIm÷d[Š~,h­¡µ)8©m _¥¼ßÝ뤔àà<<ûå'Ðs 9çFÛ䃿´6²ÉeOȈÄÌ–R–`Uô9"BÛT%|ú€Äj©¶ûU…±ÊÿZáÞSjßëºügÒÅî7¦ƒ"Äl2o¾¸%î›y¥¦¨¨ƒ0 IDATóX×\nâö"¦÷à vñ3«’­OSôÕ?1ÒTââ%àÖ3×®kŒF Åw‘b6l6Œ ÀÞ>°¿H Œ'[øì¾Ä|ˆáh£µ+¶¶)pt$ññÀ¿þ¿OðÿýðñG€š&H)Áîîöwp¸/=*Я–’µÁ¡Ò!pý™5Ü|vÛ—Ý] ›ŒÁ< l‘ð2$îæ¾}²¡ýèǹ38Íþ.¯?ç‚â{4²ŒA⃠€Ë—ÐzˆL]@¦$2-q¸ÏÈ$Ž»ûSh¾€4! 룛6 D Þ‡æ)” ›0v&Øß¸÷Ñ|2Åá^о„«`#cs¤°9H¥©Â4…p‰?8°`‡@11˜qïG4ûN…ÏkÛ&(oŸxX\õÁѹÚz™¢±®BK‘'\Â|»†o]?Õ^'³.;%:‰ðž‹6¯·ÉÖ¦2Ý„`ÐÞÇr{'˜yÉÎ2Gü.F}÷µ#Ï;2È< •iH)rúªón¬\2¬XSd©¼¤'†¬Q®àZ|ÞÚ¸§Šþ Ai†Ôæ§Rx!^>¬ 9£’sµj¶bD”S‚ÍÔÙѲ˜ÖRÊ•ÙO+@Þßïj×f\ Z(pšßHï;NløÂÑ~2¡J׿´é¬j_~—oqB‰R32å1CqNÍ&¼”Rù\„E'f¤ŸûW— ÷.W¼î4ûJ˰ÕaLØ•BÎ×Ǩ£Qj3w[ŠßRƒ¯Ì+š£“òb¢æMçmÕXD¬ú”ïò`MTÌ;1’„qýú&®_ÖÖÆHƒX!'Cv‘†”Às/¯¾|ô±¡4Ò“]LÆ[¸w/Ã?ÿóï¡yŒÿöí øüçob8ØÅŸþxßùÎ>¾ó]àþ`š0Œ°±–áÅç/à+_½Š¿øœÆ`xFVâNe8Àžy¸~¸óLL¼cb âw^xôɆ~ô£ý¨8fØYií°UòFx'•ó‚2 0K(&l ´i€@ 4ö²©‚)ˆGb`¿(°Ž,K·pt<Ü#ŒRìì‡Gì=‘Øâkk{¸¶)qmmkb)M ‰ñÄ€D¤H!˜ð5 .÷'ø0´à¸ô0ÕP¨øíÔ±ª޵¸ `Š;63¬púw:ñ$iš@P i鎒$Ád2ñ‚Eߑˊ(¬TÍÌA¨B…‘]ïåBXƒ4Èô˜ÀEb•UÓ•+sUîï) âò€Þˆ¤½]ƹîrp‰(K‰T¬[“”1‰¬ÛÕBU-óeAÀù‚ÄE‡öÚ ˆ” 4kh f«cSìï2ErÎj šbU™Tˆ¶TºægaõÆîë´D«ZCáÙE joôñüÏ`"¼ó 4/{-Í[ÍÝ'¨·Í>*j5ç/úàZ[Á×y¯›jlr×x¦­½Š%ºÚиùÂÙù™áhi]µöS²–š^S'2ïÿ>¤äjúžew5žô<6]w¡e‡êÚ³æG-k¾VíKtñÿšìàù$2\¾¼†[·l„E«p,ÐR×n$øË¿V8˜2tüæ7ŒÃƒL² ìîJ|ÿûŸš1=zIJøþ~€ïxü˜d “D:ÆgßúöÞüpí™= Ù†*´}ûoc"+—€[×w%0e«' _³óì/a=õɆ~ô£ý¨†Èñíyü{î qçÆ÷Ñ`>2)" A ¡FÆ™ØÂãGcŒÐJ aš1­¦Ó!Ƈ ­cš q˜¥ ¹õ À;ØÅ•Ñc“d ©È 4@œBØJy)%övv±µµ–WmDåò‚ôº x*qöUn³N‰ïP»÷{½Ü4;ãq>T¯*Ëë(„™ ^ú2õC6ÙZ‚H‚È¢iš¿ÎŸuù¶ü>‚0Ùàÿœ«QI?£¨¯žyŸË?”æŠÊ£KU´Ÿy·MkhK¤”‚Ê$ÄPBk…ó¬ÝP´ÒS¡µ‚¢ãE© 2‘ŠKt ‹Ä;]é”ê)"hiAXkZ%¥P3ó¤ ͘N§H?i`_M±ïáÒÖwA®«t-ßÿ̅΀]Œãïçæ‚¶ÿÓJ e$e—H;Ýï$Xøž–t¯&ÀïB5owQÐuVí`­>‹˜Í,{^ÚV†v¹š5R¹+pÞ•–i'ëÀý¶ÀÚ<¶²¼[L¤•<ïµ½ñiŽLW4U®íðºýŸ9›þôV?ÇŸÝ e$f…´ëh›4¨º€õ'-ŒÜ¬Ž½w¶ôÔ` ¯™E m“UškUÏå<ìëúýÃHÀµë[¸t HÓ]Ú5‰•±$+›I"ÃÍgüõßeH×HàWï“£}L¦Üùs†ï}ïîÞÉ ’'øÓûŒ;wi¶ ‚ÄÆç_HðOÿx_ó/¼x9ØÑÔ`SK`6…±¾4œ‚Â¥KÀÕ+Àp 1Å‹j–ôxûdC?úÑ~TØX­Lu,ɲÀ‡%Í í‚^˜´1ø8<>ù”±óxÓ£ç1nã(c0– N1H7 i[[›Ø’ dJaH˜ì‘JFB©ÎÖ,AL&ùAÀDM!)´ÏçŽDË©ù*á·¨>ƒû-tC¨ãqÉÁ‰/Zísv"ïjB@H *•Ym ä¼ÍD&!Jô F³ÂUƒ3;ÚÌU³Î¯×N¾à;«iásåR‰·¤ÁM ¾Oטéò ¶‰†§Ô˜è*t¬)”ʦ)&ãñÜŸVÞvå$>¾5Òõµ”óPk­Š\±—CŒTÀŠ3N @.ž«ÓZ—:Àô‚\ÕU@XŒºÓçæ"õe¡³¶tü^ ˆTÅ©C3G/!àîºþý½¶ Pj‘¹|zíl¾ª‰øª@¸®Z/±çÐ%áZwý]ìo[[ËÁžÏy·aŸœµ3×ßu<èmì[¸Vˆî~îì|Y Ú$§Ûv4uðÌÓÕÀ5ö'æÏûg£hì®K´„ú ygCÐý4iŽtMBÅ’4¾~£åò;DêçXrè4Øï˜>W]‚¥^§ \b4ò²œwÑ®ŸUž_u.]â‚eÝSUÒ`^¿:Ô㨲gó¬Í3“È Æ› Ö/04Q´1x’†¶`ÕÕ0% @Èpó&ð—ßö÷ÌÏßý0Ö06ðé§„'OvA”áh<ÂD¯#I$d²ÏýE‚¿ù›þöonÜ<Â`ø$¦~í¨ùZ«áÿLàâÅ›ÛSP¤@ƒ–´Æ|¿¹O6ô£ýèG¥á´”IžX4‰œÚ´ô;‡¯ *ôpÝk{wî|¢}B?‹,»ˆ4$!!ÊÖ†ë FX[[3UûR`’M°»÷‡B@J‚°T<@ª€Š¸è›c°BÛ¼¢p%€É~±lD\`vÖàü>ͯ,o<ù@¹M<°F-±l…“(ä…(tHRÒ3'Ñë)qèrq Í\—Öa°Uˆ‡9m†B£AäÉ ¬"#\é¼A`è’Ø3ƒf³W%‚]a5(–h@žÆà¬î:M ›Ì`¥¡”* 0öƒ"€˜† ¥•íÞ‰¿¶(è`Ô¿aÀÀ|kµ¬[áRŸäÛ!ÇSˆ÷p‰rŽ<-‘j€¼ Xœ ðÜAâÛÙˆ]nëзù}{ŽŸî i;Ç‚÷½Jà`Q›×Ð\Ž.ºçN"èsþÖ ˆå][;JöŸÑ5QÑv¯Å-‚>ã]+«ö;\5LÌ[õs{6îß$.''yî}æ¬ð¼¶—*Π¶×!„È)lêìHعÁY©XŸU€ôqØ¿yžÿoÅ:º–ÂõT©ËÂg7yØÕήu?vœ=Úíƒxü;ç.ÿ¾ëþã:‡—Ùá8?߃!%a4J1LAB¡Ä»íÃ+^èî`Ñð ÿ?[T|ø>°¿Ç˜Œ88°Ž©R`"¬m1ž{nˆú§çðÖ[ Ï>·™<‚GÖÞzò›%]ô"Î CÂú†ù± @UÓ….ÀÌÛÓ(õ£ýèG«ÃµH$¸,1£ P"¯{€]V µ °»›a÷ñ6ׯâÒæ- W!ÒƒáÈh*€‰‰°`»€3Å „¥!+&ÁÄîK<àÊÐ2 Óa.8\J”*EɃ䨕ÃÎM^ì’ ¹P²›×N-@‚l[ŸÎ+y’ù»ôt¼ï&À¬[;cæï~0iNâ™Ï° ’âç^)ٞǹ4'¶D¶ãBC*‡6ƒ€báå׳Z`l5µtš Áš@ÐZŠ \¨¶TX³q,Öª Í&Ñ`’V¬#åC µH`áÓ°Uam‚ªN”(/=­µµDT×ZAH[u•s›RÞêÌ\г1ÂÚ©®UZÑ ÌŽŒ¥yEà<î5ïëã ÜÅ€"Š¿­ž?-#ØŽm*—ì· Ì뀈e‚eÝïföî¼ ß¼•”~ez[Àj™ Ù<ï‰%g»dm€¢?~?"óãl¶.9”BÔ'R‰D鯣1ª‘ðç…Ýœ?¡è'Ú~†¯ËPÔ늯+7$åôI¼-Ÿ/mýíœæ‹+¿kž½5WÂa‘óc!(9Ï9b3tQE¢°w‚Dôi{^uå*>·èvö“ÈÿÄžÐì<¹Ð·‚'†º¯ÁeÏÛqë,rnøÂðç>ÙÀ¤)d’È` ŽÂ(V¾ãSB; î«W€7Þ\Ãáá!þŸÿØyt`Î-N¡˜í™¥qy›ð·w_ûú×o|†ÄK4[çÂ2r–ˆJÏ!“2Å…ÛÁc[Ðst¦ø£O6ô£ýèGà*ÏÂdoé5º tH9ÄÁA†ñÑ/\Äæ…ËØºp ™ÊøwN¥ÖÊTד¶mnœ;ô`AŽ=ûņWÕ jØT9KQ\e^QKG—ª‘áS„PéøbXÐÜ$HX½ "5×MEbÁX…cˆÐ˲iN{â@yB3EþE~׆7GùaÈñpÂ𔋼 šfžvÆC)Êc‚I&I©Á<…ÖÒåaìû+ªk^—êVއ±yvþ›eÿ¸´†â¿çÒ†I“Ól ¥2L3Æ`0€OssžÁŸ~ Œ|/ ¡‘!ƒ¯3°4‘Ó ,\…MܦUp]òÉOˆòBWŸ³VûʲÐ?aßÎy”$öçRÊ<øŸÆ˜ýî‡òÜ;ZR€Ð¤”Ó>€-}v8·5óVN€ˆ<[N¶»K ÖœS)-f0ÅÏšÒº"KV~n\·²K—t\€Êñ€ ´ 8©®Ž‚H$¨€­[“)æx/hg¹ÆŠù÷8SQ]ò>–ô<ΤÏN6©Ë¹P§ šI4Äï‘}¥°YߟgŸNS׃+íuìyà8å]¹mmE®U NUýËÜd5ˆ =½4xñAñïB›Œ‚{`Ö PI.Î[O ¯b^l%Vt<Ö&'5r öVOÝý·åá?IßµíÒ#ÕZ³êU¼ YrŽG*µ'k“îFøÌç,mç#o§¼CÈ#³K¡ãxœƒ[ùO®HI@˜H…tNÏJ¾ïRp{ $€õu‰K—Öpé2°±q˜¿>˦2µExÃáW¯lck3ÅpH"+fRyGPpŠTÍš-3GTNÓ³Mägö¨>~¯}²¡ýèÇ©ÜB+a5Α›6!§~§•‹ÑÙ4™Ê¦ëJ Èáb˜X¦Gñ㈥“ŒÊÀœñHHK' ʬSÊ%Ä$Ir~ðœZÅ ¢ A6áPűé¹èÌ^.7üç€Ö.¡@ ƒR5Õ`0€”IcèËÌP™*F.`¯fÀºx>3º ùç늃±,Æ\¬µ°!t@ ‰¨kb;+9ß‚,€§Æ€.Ü`ǶŠbW;;t¬°@¡ÂúKj¡s‰š§ ¡‘$iš´ žÎºðiÛÀ!ß§Ns€&ceÐMõ‹ ·¿u¾öëªê€Æ,ëO™¦ØrDq8­ Tôm¯¿|ºW{!' ÓUÅ Á€¶Ñ@^õ&¥Ê”ByBUA±¶m”',q0¡ž2¨^£Ž¢ª£6+ä&P%o·¯káì'[ÀJ³áîöƒX€\+ôˆêªÒ\„4Rì¯×Å¡nö@ºÎŽVã»$ú¼üÐuÕém„€›@‰fÛG• W³Mâ(wvw˜µ‰¡-Èm]¾® DóŒ tí\ÚLmçAw ¾XfgJUH嵯jE´¤’¬Ú‹Í]„œKI^ßnh€k±£tåµG(J=™DiH)<›5[ÀÂ¥ój,׺lg ¸Ì™³Ç@QôR¢Å¨ Éû,ö=Ìî¶ %/ÕWC!oTè4Øÿk¿˜m’<±çK%À¸3-ïK̽ç,spT©BØÊáBë#&$mW_áKØpPÃP¨”‹³fÿ^×18¯æÌ"{¶í9v~ÍÒôpÞiZÌ«)¨ó‹ü=—`±®LÍl;òkÎ`Ã5¥Lj¢Ãó5:}qžÆÎ¢¦ë­J˜ÄÖ`ÏSE%EÄEÁ¤ŽæÚ…¢3uV­}l!–]|¾öl·ØØô4 o“. ™RAg6ý88LðñGcüê‡ØÝ’d “# ‘H02­`24þô»1žn„áp‘¬!M& ÎJqÞxfÂÒO&`Lò×ø¯×9K‡Ì_ÌO/ÏM•Ð'úÑ~ô£Æ½¤–¯ üŽÂY¡éÐ dÙŠÚœ)—`+hÜIex4@ª¨g+b ‚f£Ñ`DÍÛ§Ó)d:ŠVbù"¥¾+ÆŒ(w­ò’ 00³¶!‘)„y fZ-cŽï4Ì-Píò¡p£¦ï¨ÃÐëè/ º¨Àã ÃBØ–ê (Í»Sدò°~@ì8{Ç€–×UO£EÂÁ®CÍ ii ¡5Cé@$ÅwXùü «–´Jl2OJQfƒý¢r™ ÔL5mC,W$>æ­°ãÅW²Ó’qÕBZ!aQ†S˜{Uìá4˜d¨RPʬ˦ë©KÏù º"ˆÍ ½ÈMÂî*U~E¡–‚£Î®û´¦­Ôbš;-ëìq÷àý1hg± <œ£÷¼`q›×…ûªJL{žÅïSÐuN.6øñW‡ô[m)”–%®[zÍËKë0 Ä8æXa袪Kaiýüo…ªñ;t1/ä'fÛþ\ âÀŸç¼[Àÿ¹ö|;¿KÁ?DŠÎTªþêÉm–]¤òtÁlmÉ.åÑ åtJE,A¶“¤|戺jüÆåKàtñ}£_ZN,Ù&2ŸµOcgÈ2žýªÎݦ{#+„XÕ)Te¤êt4ºØ[^²GóÓVÕåpVâ£Ó­;X÷LÔ”1>Ìpt °¶FD%¿(ƒ|X°·Oøõ¯Žð½ãß¿<¼("IL‡ 1…Ê:â“{ûø×ï|æg©!^½}·S0=„ IÑ5Q3¬ÉXa2” ,­× á_kÛγª5Þ'úÑ~ôc¡Ã¼EÌI¥á ǙԀë5´¥G¢¤‰áWO•hxz ¬"Ùz$Xy•„¼;ƒýŽ"ÙÀÐVHU+.Uå’`H«!!R‰$!$©Àd26]òìÓÒ‰NÁUu0¯b]˜Ž Ùêb°º ˆå±@˜ -Kƒ2Š3ˆÁ“ °ÖIΜņÒ$E©ÔµΆ8öªœ`“ƒ±zV÷EeKÅV¦D; ôªó| NÆ‚Ðv.À†Fi¦³€ >j)%Ò4µ4B*Z…¿¬9‰3ÛQL?:è4j¨º#4>ü:°"oéŒ}ßIË¥ç]ûu"O¿ïÄ­ŸWIT4wI>-sí1qÎó¢ÝÐéþJºðY«ìo`4KÕÖè¢=Õýºcš†«ŸJ= Ôâ'¯«°`ê'ûböIk£…QÄ®xOíÞ_‘­=þôu|}P yQœùÜ #Ä^!×Vw×ÑMëm*½WºWŸ£ëxÖ%½‹0¦ ©+×k×ví„6;ì¸ÊcïšNe'ŠšžiÕ©ºÿã8_K ·9Ÿe+ŠÏFŸ¾æ;™ (ÅÞ“ öž×®]°3óW„*ÈHl L&„àΟüÛw€Ÿüxø)p8N!¤Æ`mŒM€hŠƒ}@P<~à'?z‚i¶Žõõ¡ŸO±µ £ß@ãâ’ÙÊ9ˆGÇxôÈ$Ú,±E×cŸlèG?úѦ˜eQ‡SX~<­«[H]"Á^3¥±qŠ Sù+ˆ `*®¦Ó,Ï0ä×¢µ©¨µß1ƒ˜ -’b+¦êµdŒ£§}*@° VŒ PÐ:CšJÃñMŽt4”G:ɇIÇöe®Zx8b<ƒ¡Á`rÍÒÔj¥1uŸ·5]Ol™„CQMm*Ê%IˆÄµT;Š€"ˆv¢eË tVõyË ‡¿˜'!]P™Æ!«<ÎJ¢6ßUÇ7Œ…J^eAÊÉd‚Ñhï¿ra½±’Ém™&`¾NÈ5, ÷ý N ÿÒöZÄ ø]$î›|½‰.G›ï­›Ó6s¾ìõØÄ‡=/ØØvOŸ6;ì?×…Û1ÛT×ÅV•hhªî]ôºçYM ‘Vß«ËTÎŒ‰½PtÄ~XûïŸ}D¢5½L^°CõɆ®vª5…—=Ú.Ý™Î7^ÌÎT% üЄÙRƒ6ÐÁuI,.ÛNžXGƒÓPB¹»ƒ='½(:* Óêæ*L6†晃¦³ítØ–v*4>˜¯”ZH̸-í!—Õª[¯»mT]×C×gÛÔ-ÙÔÓ¶Ù8ØÕ8Ø@M×!‡Gå„ʘ «uI# í¬<áho­y-Óó*>•ÆÉyÕI!D‰k¼ê»hT­ïyç¡mqHGSýLxi{ølÛîåÓ=,BKÕö½U§Ç>‡šœÿú@¾‰bsPøW‚(§!õ«ð[ ‰×jîÌ÷<«¨Óªbr4NÜâmÖÆ*†rÃ9­âŸïª™R¦t={kðïÿ <|˜a›h‘\÷KŸlèG?úÑct–DÉѬƒxºm¬L)L¦S$"h ÖFÀˆÙPÓx0œ0†å¿7'c‰š†¹-ã±Õ*‘eS0 SþÙŽÇV,®x6a!å•F’LÙ´ŸC ÜžRz2çw°¶I$ ”¶Bbd<5/ñ@ùò;– žò× ¥‰”Ȥ³¡SÒ¬J‰’ÇùQ ª4“ŒÕÐÚˆA;Š Csf•s„I8!r!L¥”éÓziÁLûõG~o‰çÁ_S@Ò=µ¥!j¦‹8Ù ²í–“ûº|oþì '®ë³ŒDCÈh¿ÎkÖ ¹\¼é”td7±ÜrÈüUùÕ6m*—»V!ûëÎtñÊŠYÎ#ܲç-F¥Uµ6œëhÈ tÎñú¹«êŒìbŽ39‚äóÌÁ2’—m*áÏúÞ%–Ð Ü»·‹? LÆ—±~Á39ú>¿©œ¨LáÐøÙßÿØ?ˆ."Npí†Æß}ûyüÍ··ðÒ«{ؾxûX&ØÚ„ÈðýÿîÝaLŽvw²É!þëGïcë²Ä­g·áky Ò0 Œ$îÞ>T†ÖɆEFŸlèG?úÑcB`†’c)‡^èlVÈTA(…)OmU¯âŒ9h(Þa£ü¾<†3YàN!HCD~õ9rz¨§¶t¿ƒƒRüAñ<ØVè[0½.`¶KF’I6™õuÌmø'å+Wñ³œ±æ?B²ùà (m«­ô™V”PáìÛk۽Šd™Æp0€Ö Í&Y#AJ‚A&Ù© ZëJžÝX{ú<•ÛÍ"lu²ÓÇ·ç¡ÃZÕÞ\(Pì±3un6=Ãó ¼¯ñ“«Þ IDATšFɧz9Ë{fžªV \y» :ŸÆnŠðg6YΈtÿyM±ùÙƒr§—Ú—o{›bš¶U°u§xçŠïS¸G»žÿ1¨ªÄ½ÿoŸ®·m¼ÙæúV±Þ—9—u]•u ‹ú 1º™ãŒO˜¶tImâÔXò¦ËºŠ­Ñ§+I. ðàá>ýTâÑã F4Ö¤‘çmm¡Î#kkÀæ&°±ŽŒãÚMà›ßºŠoý­Ä˯ìb{{RìA‚‘n'xåÕ“l üà?€O>RHÄ!Ö×K—Ö֧м¦Ìj@"O¸ a¾<Îðdøð#àþgÀtJ †T@—N¼ªÑ'úÑ~ôãM—l9YrÍ1pÁÂöçm˜ý…°5J«¼•T@ƒ„˜yꩈ,å?l[¸s% Š3pNé¦ !=ççµ +j«¹‚jBû‚9«+@­êÒë?¾Žãˆ+®¿‡s¢³Å³‚Ö(Që>ÅØWŒÊT6ªLC§‚ç¨éÄíG, 2'€$L1›††šMØ®¿c¦XÇóR˜¬âžÂ p)‡ëªIc”V $°2ôIDFÚ´ÝS.ÈÙTaÜì.´¶8ï»(haœÚ\›<×ó(žê©$A!˲Fz†ðߺf¿§ó*€“¬ºÒ’œÆë®E ºFïïbVû$ßt:Ÿ1 šénõšºº ¼ö£äYäÿæ’Tf+¯s†ŠkU¶© ¬g„Ö¶rdØ×9Å€|'E´¿WÎé=ÛrË×ÍÃI$»§ßéöú¦Ä§ª*@ñõ\ÜïÜ)åÜÏ#üÌ9'Гï &ƒ—»ÃªöÖ¢yš5ktY‚Ïmü™ehuñkÏ«VŸ|I‚Ã1ã£ðÛ÷cc3E’®a8:‚æ©=ã-$^{-…PGØ?`üòWIà«_áþñ:¾ðÊ.^ÚÑc@J@†áðÅ/¥XÛ`ÊðóÙxõvŠoýõMÜ~mŒtðeyGƒwd:Á¯Þ=ÄÝ;Àd 0¯™/wð—Í>WœÜ1Bî“ ýèG?úqL‡“®j‡w‡—sM’X>ß÷ì'æõNÐJçÜâšu™#2×R âÉ[î,Hnƒc&³²B( GUÀ"¯Ô7"ÓEr¢¸]}rWÞ(ãd©læû~'º*È̈@ì@²Ž¶¥"~j×}Ý"®ëî'˜ùʵDjœí®•ugj#ô3Åϼý'425±Á¥.ºg@óÕ%8YuÀ¿Ì†qzfÙ¤/³‚I— R‰Û—Øv4hhVÑötœË>eFÙŠç’ËÞÕiÌKӵРÏÈËŽjJ€ #˜5×F\ºÃXõæ²ÖT›*÷³V™ÝÄ£Ý Â-O[¡Nè|@¤éµá÷±fÈDB³.8ˆÛÇU'IëÖqåú«H>ÄU@߉ÒB1Ÿ‰½ä€ ìÐL9mh•èsñ~né…/gcë'OÂy†Öìƒ2Žºéœ_®Ù”ÚHQ“\ášõg’êl;÷D‡³lÕIê•Øð61Žçƒ°¥²e¥‹˜-ÔfhCM¨”š¡\ª¢Ó\ú¼¼øB}+2 ËøVGåî·ÊNµ¡SËïŠíÎ Ör©¸Lˆ•žIuv¹kUÓgÆ:ºÄ^U] áÏKz'šOí~×Ð6âÞ=àí·÷ðÒËWpõÚÓìC0Oáçú Íu† › >ÿÅþ~rˆõMàÊUàõ¯má¹Ï`cc$ör‘g¶ØVÀÆæ/¾´†¿ÿÇ 7¯w>þê¯|ñö[;É¡‚öbo"ó^ àÎÝC¼û à³O5 SSŒ˜}÷½î,$˜PåQR£Ó'úÑ~ôã4r]Â~Š ÚA ¡o<‘‚‚e`4a|4-ð0(^~H!œZîÆ°5S¶‹¡€’¸žÔM 04ª{÷Õ¥ï‹&åS׎ŠÅ‰üÀÎïÁÌ›LTæ=izº+C¸>©H8(æeã)i¢ºåü|Ø‘˜@åÂØIbÝLrëÍj²€Î|Ð>_¬+r;ä²µRPJ#MŒ@´Ö ™P)ÑàRº· ÊrpÞñ[Ì$ÊÏ­qƒ,|ÿÕ@“á2Ó0€m¢E34k8Þ–Ò¢‚-õÙSõãdlžó]˜ÙtÖˆx’%­æ™îU;±5ì_ÇÌ{bµš;Ù˜Æó`çNŽžv¿ƒv–ýÝ–Þ±®÷.+Ì U4ºD…f®.è˜ù®’–ûõ'Y`°êâÊ}^`NP«ÃÿǺ.}±_÷ÞeÐ͵ž‰‹82º–¹Œl.i--›f¯‘fªÃz^­ŸWÝ9Øe–½×bt`OËЬA,ñdxÿý)þð{ííu\æHLÎrÛê J5ŽpåÚ:n¸y HÓÛ—Ž°~áõ ™ÅfŠøX˜PIrˆ/¼"ðÜ­!žìâò‰íKOÀb'?Õ|Æ­ÍŸ'ÀÿüîwÀÎc`:BŠ4{dD¥¤Ô¥Ã+Ç/U]à}²¡ýèG?Ž!€0_¯ä%¯ò(ôÙÆãIQ%Sé˜ ÃïjkHä@”_Yeªòד­v%²À´–¦ "/_Aè×—"ê礃ª[MÍ °é5Àð¹_MùÞbfH„ ËáÊÑ×µ±ž®E‰Ô`‡X °H$1z ~×WÁõkõCNÈ^„tWîq—p)H6+­µsÑÅàÎ(—hÈ÷ fS¸@EûIÌÛ¹[ïOñYà*V9ãæªT/‘gº,çnÐ\ÍÒ$v©:ö+a«¸íC¾ñ¶´nýˆÙB:ö÷Ö®/î~&w{îÜÉËÙÐ~ô£' 9Gl±ª ÙŽíQ‘åEò \K(Ü K²™wC„ÕÑ6E¯µÑu˜L§H‡)$d4à9ŸÚ»}24$fþmå9YaŽR_K?Âõ˜e ™RZ@¦²¯†"t=FGÅP(ž}تýruû逫h$V½IÈ<á0™dX™ª")¥3™3ARU0Iå"ö™Ë{yWŸš)¤ÃòE@Ëï):LÕ’*¦að§T–'JÉGoÀºàý^ röÛI`'­Ù°L!â*½†˜>AáT¯áÿEC‰¢S§M*¬ §€?½ŽÂ]«c÷T¥+Diôĺ;ï#¬´¯z¦åÓ'îgwÛX{ýaœ–ªŒ¶÷Ò5Q^æõ§V\løTJ¾VC‰z+Òá:œ}¬Kç¿w ¹€ç²:ÙPÒw)¼XÔ~µϦšë> I´ºdCoß»ÏeÉÂæ9ìîiüøGŸâùç·qíÖ&®Ý¼ŠAúIrPÐd[<@À¤A4Î5²Ìt0DصOs­@òÀ£¼Ö¤„4Ÿ§µÀýO~ö“ ÞyxøבеšÕJÎ ·¶údC?úÑ~Ëoƒ5§„uç0䆃VE«ß ӑ㫵T>Ô¦-žÊÂBšàgvØîXÑhÍÒüœ„(¸e±q¬ÓNYÐÏ9äZÒ-¨@&f˹«KÓ~ÒÎéqkuRnÏ$ÉÀÐr‘È·4?m cìšÜŽO¦$CJMÅŠ¯©™·¦ ­ŽÖáì)E‡ƒKÀ23¤H `¸…KœÙº ¨ mw,¥’ÁY^Ú÷iî|ÝMɆâöXi #SªTÞ‹K:Ìü\kP~^ðÒ÷³°†šAÄstœy j(`ºŒçß4¿!8‚há¿Cðž€N•9€gÁ<ÿwþ>¢€/¿Ø›Õ•³!/Óµ„üß!µªŽÙUwgX*ÛÜúg]·7bö¤.aØT]Ü&ñ'<qFžÝlrŽPh_Ÿo>û0ñдNBÛj@´™ã¶bÞÅÿ—'\gKÛ­¥jZ¡.ô±`%ö|bBÛ'·´ÕI Å´cçë¼…3Ñ?ˆÛØÓb÷«cͼLÐ{{ w¦Àðë[øö?|€Ó‰T&æÐ*ú‘¬-UJ5Lží+¨˜“P0øLñ;Ÿ‡{ª­ØÝáí·Ÿàç?îݲéBެxu@š"©ÆÔ}²¡ýèG?Žâªäõ'¢>ˆ¸Èf°Eóà¨Ãá;Eš­ÈC‰n¤H.ä"³T-.§lbc2BH‚N|UÌ-.÷„©ðo¾{)%ˆ´}V޲Š*æêôQ‘/À% •N•Æ`0€¶ hoUÊ :Æ$IdÈíL£ð]EUî¼Ar›ïqë>ç+%Ìm#Éÿ›UZsÉ=øKGÉEÝöï´ >Yj,€ÑåôZs‡‚ Zu ÐÚt(¥¢À—²tc.˜ãhƒìX—ÿ›OÖ¶Ì T,Ë~Å€Á®ïmDר)J6/ó{8ƯÞ9ÂÅ ÷¡'ëøòW¯bór™>€LM—±Ö­µŠdÃù,0;¨†à©Äίß=À¿}—ñîÛÀƒ{ë €¥Åh ^ÃÂÒe¯p¦údC?úÑ~ÇÐ&øõï°µŸ9¬„96õ‘©kž“Ï9@åÈVfœÛQ ˜yiv?@+µÝQ½CRÝ¢gï—PûûùK«N Pl¼Fãš’„ƒ A¬ËÞFô²çwÄŽÃ…ã•}V®(=…RJ Û>ZVDÁÞËs`OVë |'þk´?\RAÊĈ†‘´F¼Xw@øšçÉæ]RO=¤^®ÁiÎ,ö(Ùà¼ÅÌüÂu`ébåêÿ{_Ö#Kr÷ˆ¬¾³p5éKeŸ Á†aûÏ0 ÛO¢iJ²ä‹¤DZcrF3ä gî½Ý•DZGFäžµtÅwº»*—XNœõû¸âà’ç½!vùQÚÞL*ž š;~my5”VY"€èƒ4x  uH0ë²sKÁNCN5òðÐÅàH¥Ó$Õ2—„£ëÎI7SÍAßq?¯J8Ò¾\m-ôÏ´)5µo¸rÆÑ $(@?BÑ|]¥ç_ÄÓ¬£âúýkéŽCHG{jNõú\N˜©5¬G’óN…MµÍRÛ‚½«V­ noÍ\ô¬c8ùçÆº»œ-36ã»cÊ£h§V½Ãzal}ÎÓãUËcGåÖ.нìž=;V–êû>w¦JnÈw€9æ~ó›ÿý¿ý#žŸ¿ƒwï¿ýo€ïÿó'¼¡/!ºw`ý‚œMOdÛ¥æy2‡"Díê„lÒÇøüsÂÿþÛ¯ñŸÿã¯ÿ'ðùgáC0íºÅsÝÊ X²ŒÍSà¹NiɆ&Mš4¹@pmä¬!`"å=eN1YNáÈ~ÓZC“¶C'ÇQ€âˆIÖR‚#†pGל~8dîJk{>±w,Ç/EÖÍ©+Žƒ]ÏMÝÁÙ øü¦84âN)ž û3Hš€§ŽÇˆQp0¯c¸UÖ\‚Ö—ÑCв#H) ¸·­ýÂx"I–#×9›[ß_ìb˜ï$¬·¼K@Rè÷ï^ŒÑ©%ÀÆ ˜gÁp­Xæcºj º„*Õ¤ÑïB•¿gkN’°«‚>éj~£”F'žÞH„åjÈVSvÄšLt:“q‡EI dž`u±ý¬Ì.©aô¨f: ýü=þâ|ƒwçÞžˆ÷þßýÞ'øÎw¿é¯Ðz¨þ fàÔ]ã¯ÆéYF±MM¡“AÂ@'i-ðîýøòwã/úþëaüí_Ÿ ¿p“6ölà¤ËÁAÕâ?íÊ€îß–lhÒ¤I“£®è¿¼³a{Í4‡œ… ì°fPµÝÇg•Œa¸ãÙA3¨¸rÇ“­bt‡!.¥LI¡iúù§€{$£ uþŽBHPTQ­³ eÞá­÷NðŠ¿ÑškçÕhVPŠ ¸ FíÍqåSƒçÞICªµ-þ_ç2›}/;a÷a‡óùÅr¨ãeN~¹Šw¾£SÊ zÖ0„å¸äq’/ fÏçö ¬KD0L±ƒéþÂdOv7½ØÙw /º·¼ áÙ’dC´~c¼ú OC’¡””ŒƒNµ½˜¢¹¾[9Z†¼JkˆQ"øñIôÆêRšñýعžûÄ|_íâðÏýÛRØ©±`Bž4,f,±½²Ø8Î (ù$™>'Œ_º–ò`àX@¨šÀZxï™`Øš¬ßª& eçÿ¥–Y<Ï«uVþìQWJxÑôœ›„Á²¶ÄT/褂•ɘÅF3,ÑzKîmY]ÁùPJŠÏIÕˆywßHÁѬµ¹Ñ“¡a÷Ï,Áëî?$¾Òµ`”jº~,a^ 6ß#LRúnÿBã/~ü%>ý§·øå/?Æ¿ÿàOÿìøÞw¾ V_è+œN½õ4`‹Ÿb‚è¼qSJÂY1ÎgàI~­>À§ÿtƯ~¥ð“Ÿü?ù1ð÷¿¾þèŸO¿“0o!(ëjàñ÷ño³ÞîmɆ&Mš49ÚÄeS$@…¬øV  Ó¢­ã¸‘-§ò‰œàÙ·Ñ ƒSL”lqà/Y#L›Œ¸Ö;™5[¨‘È™ÜÙG QBIHIRƒ„65_­¨#ç|+„ÔíK¡ssðPJJC+»¶–½= y,4)Œ!þ’!5C‘6#„bÕÊ,'çâëÓ„C–€˜ƒ!\‚‰ñÚ»®Ãé$}‚UÛö1¶*:ª $’Ie=S¬{)6³öº3&föp*p-8'‚i"Á¬ñH4黨d¬ãÁÆ$‡ÄúV&šì¸‡ñà {·ÝÇMĶMÚrJXÁW%—:%Ör€äãV«2mR?Ò9:nÅk 3ÁËjÖC'Õ»KÆöP)X¼¹³’xåXßFˆT\a£Þ’nÜól˜â$à 07a~´îJaG×wÌíDœúù–샽¿¿×»^‚„úx¿Ÿl‡Ãüö …wïzüþ«·øêKO~ÕáOþä[øÃ?ú>úÖøX>ƒÐCÐ ˜ß8[Dˆ`Þ»tæÐýYà·_<áÿ}¢ñó_üÍÿz‡¿úKà“O€—³D>Aàd|°S ˆ©^”G ì´1©–lhÒ¤I“ƒE™dƒ³[Ú×r5⻢Q,JbÙ4ËÈŒÛE<3É•¸‚-ÝEöB²Ç‘ʲ'ªu!d" ,G×½—ç2C•ÿ2%‡v¿´kWšŸ}8|&¾ð]š®^ÿ7G”ªL¥¤«©€t0°8|ØäÍ!÷Ct;œóøF496cÎOL k Z:H)’€ɱìû>t [;Ú®[Akå13´Ö&ÙÀÚ×ΦÏj´á}áá“"Ïb´-íþòµ¼s“6W\÷%Ž¡µÊ[pÇ/8çøÞtbÎSP L- d%äÐÂB3мù_ø(\'?‹…s«®O+ä‰i0^{|jp}weW°ƒxvP®ë/%Ž ¤Ÿ[!NÌÐQ°F’H~žðË;js˜œ±=ö¤–nLg®^ $%N†Ú>žCÔ»DÎ%þkÞãú:*X>çš{é}X¶é+]œà›Ú/{Øb –Ð÷ !¾…—gÆ?üâ-~ýÉ?àoþê úgßÁŸÿ›âþÕ¾û}ï~û„§§|ü±†ìž!èÅø¸ÜÁ5=¨^àÝ[óüîwßàë·þîç_ãÇ?~‹Ÿýà׿Þ½”úšžXT=¨ìsŨºÊR*\¢WÝØµdC“&MšÜ±A Txù`d}G&ja”˜%,k#†A¶Çœ'4cÒ aIˆCEDƨ` "…Gí‰Å@M¹êrdxÛ:u¨œA¥õ««òœ»oâý¯”k‹ÉÉÖR…Ø}/Ѝs‰P¯Ü« ‹ÿûã¸s!F“4BàééÉ< KªÍ–\À`K°Ò†¸Y9h#˯@@[Bg‡çô/k%l…43:â£ð%‹ßm!öC+•ðò‡@\E¸³eí~Š){9ÒSAŠ¥×KäÝŠÓûZ¥„ïÆæË–ÜO5Ç‚ YÕÊÚmÄÉŠÉŽ Z·?^Ãú‹‰¡sÝẠy³Mʃ.×aµ®•þ üµõ ÃxµŽ©ãÜ×ñÙ[—Í>úã2ÿØíü+q?,Ñ÷·ºnÆ0!¡‰?ÏV¡9×*ÙÔ¥•=ôy€~>¯`íy¯uæLÁ@m+¢a6þ,øôçàW¿|ÁŸ÷øÙß}†ïÿðŒñ‡â_þñððmü³j|ôñßþv) <®êo¾~Æó;Âg¿~Æ/~ö)~ûù{üßOžñÙoÏ¿¾þ½ÀËóhý Èri¦@ }aýÕ:š4iÒäËå«Ñb¸çå6§£4Nš{?6²ྷF€‘#O6O)«çÓ‘ mý/¶ýåº?¡Woðr&üþë¿üÕ{üüçoñÓŸ¾Ç÷¾/ðôÁ×xóæ}$@¤-Â2¡a¼ ô/â‹Oßã›ß3¾ü=ð^ux9?øCàX@:‰²}t™øLëlhÒ¤I“×a’Fÿ2®r–“ Š9’éPEÝœ_ …› V°ÂV=÷–D°uî8\€|¥¹ÒTŸ³zXG¶\MD—jÔ IDAT¾-Y–€„^ó¢ªñÜ1m¿ŸQÅ4·Õv褤A œh4ÆA’¼B•™q:uè:‰§§ºÎ$œ3¦ú}¯­c¦Ñ÷ J™dÃù¬ü–Rzn…3Á`­¢4ƒëòös±ó'P6*A-‘Á »ËTcêŒokßß:ÞYwwÚ>‡;ÚÙñ­u\½>x& Φ1ÛÉæšêJ{ çç-“—¦]᤹äè;Qn‹ÎM‚¶Ãq¶Þß_2_S•\è´/é¾Xg ×ù®üédCÞÕul2yN°=·Ÿ×êÞ©û–ÆvNÒZ»i+ÏPɳ{ÕËĦx‡›Ã6ÈçÂS÷-|öë÷øìSƇ ¼{º®ƒ Jºžž,ƒƒ´zÔX h–è€:¢°æPId;ÜãCüÿâp/£%š4iÒä"ã.q“âqmˆ˜ÅÕ_0´¨kK6­|0rÜÜxÝŽ‰3€M<8@*‘#Ñ–¤pPÉÌxÜÊfΈÝi¶Öê†lµH^¹74¬_ß8–ˆæã·BÚŠaÆnc`` Ó|/G6Mv g’™\ |ÄÉ“pŽ«I6˜ÿ¤”ÂŽ å“Y€å\°ÄÏ1ɦ¯c6Ü >ÉR #œà:ñtí PI†âö*ovýÏt¤9ù=€¸f'ÅX°9«q&ˆÜf¢²nb\.^¯¶3a.wCþ9Öåq*qZ©pNÈ\·¶#”¼;c~nƒ3-ÙФI“&tpö4|ñ² §Ã‹éê?²Ü½Ž(Õ×]e˘Á÷úi ›£YA'ƹé ã'Z›6P"ipë™&_‘nFi&ü9ò}'»b^WAÏÄà^CõVCJ®5'Ã0V%é#p|…6q„öøR5— ´»›Ö0žó{çxÕ±Ó;2&Y@I‚r´èǧ'Ÿ$¥Lž/þ^êÈiϧ;Кª¼®Â=µ…àÁ» Ê¡ãSªú»å*ý±g:’òÈààµ1…xŸ¥A¢õç4EÝ–sJÝÏù^ÞK¼»D€&wA›ö3 ‹,ÐT FíÅqòl±P(Í ò‘kaÑùdXHdçºd£çﱄ7§d:q²ÎòõAe{ž[‚ü5í™’.­ý­¤ÛÆônÊ£—½ýä0çsB€8ÿ]—­}}Èþ­ùóº)ƒxïæÝi%ÛZQL,Ö:÷v9³ft9Ì麚:ïÒgÏtØÚ{®íœVw{}®M¢ÀÂ)çIïNÂtí3ã$;0LAzÕª]ØÅúÄ‘×ì¼­ÔýE 1AØDƒžˆ5l/dmɆ&Mš4¹¸±¶ó¡ó¯$Èªæ˜æ@|Øâ¨È0w9‡d¢È·XRbX=p²!¶1½Ã+ „„Vl­—:,Æ|ñŽÇ·[dò‘=H!ÑuÎ|Æ–ÍWÃ8ÏÇšg8TS¤’I²%žGô³2qÊJ⧉“B¸Ž¢ü½†‰‘À‰A{MA–T´ücNöœN{l'k¤™Mf®™´ÆÖ w) ³ôº[:»ŽÞÓ5Ó:¢Æ×™K80ÆáoÅ~¬­Å)›g³ÏÁtz_£’k0Ƕ­émkq÷ý}Íëäç{lëŒuÞŒíÃúš7AZ,°è™ï9^Üvƒf|¡+m ”Òaó–ùë”[sv.~ÎíóÛÞc5GLfÀû ŽßÍ»¸”¾°ˆ ÌQ®£xø%Nþù÷óàb¨à’–÷ ãp(8eÃg!¸Îoi[Š…+ƒ.žò`ÓMUÚ•»¼Ú³Ô¥’yeÝÞMš¼.[Éò5PÄÙ°nù^øÙµý\»gLZ£Ôä;5N6ܲ ¦I(Òñ÷\ÛÙ°Š«LÞŽùÞä¶öMíß9ð±kÖÿ®AŒ¤°#v¯xp2Yóê÷ø?¢r®}ØìÈÛß3±ƒ îQ‘œŸËÙ·‰²Æ÷˯&¢û•`ÈŽ_7-ÙФI“&q?Òü}„€Jq/i‡8'ލ‘D»¹ ñRƒ£v„·ÚT\k å’2ÍË6©p·fmÁ@1«]_®²…,Ô"Ècœv„RÏj]p#81õàCÍNÍ;j×vɇ6%…Mɼ9²¥wÝÐÑ@E€SÜåàº!Òä UЏ¶ÈëAÐH@§æ(<ò™IcKltîç:vLgBB\ê™J!Uÿ¶ö>BŠ"ö%Æ<ØF\„H[v$’‡€Îu^[ûsmTNªó÷$Ø®­ƒZw_éLHBçkÎó5›»É­í·šÞŸúÞTŸ“îäý[ÓœpËß«lŽs7Ì}§Úý77;À®»1"ä„;>Ó8Õåñû9޶ÒW¾/¢r½hŒ#»"Œ9MðyËÕàž£%š4iÒä"õþÕ¾bC,ö¾BkmhK/äX;rÕÄP¡Çv€\À2™#‘AFhSEÓÆöß“û&H­ª?²žw‰W¡¶ßQ\0Tî†ão èì:úÝÆBY¥ÏÍŸõõh>MiÝ–Š>¦æz¼‹†­Þ~6øJ”Øw5xÎ….ˆçÇaÂd7jé|­GIo;þ3§Ã½ï¾°Ó¸ö®K÷̆9s8Z´4fäÕ!NºfÌéƒâ ÏùBNZ²¡I“&M.b˜ÕŒ€ýð8ím—»¾çš vl ² LQ“3ؘ&énaôJá|>ãôd;v"€»¯%’÷ŽM5kƒáé36.@N~mͩΊïVJøÎëï¹ßI)= ³ƒšJ.”9O~­Ã^Xæ4†çq\Ã{h&÷>J [Aô’e{C¨´âоŽáøŽz2}½ëVtÅ-sÇ=qx*d¦Ë‚MûÀ—¼Ã^ÑK¿_sÖ÷ °Õ8 ÊsCWYs[øâkŒGÀ¥šÁâ\ÐÊwÈÉOµÖRî7V1Ù4Ó"¼Ç¶Ç]9@L0 bs_žUÍíª]£<Û`õ“ïÃÄ´ ‚ZµBeì\—©÷ÙÚÍÓäFmÑ ýñsÁþs<¶Ä»ÊrÄ Ö o#m¿p°#öEZ¤3wçÏRÓÉ%‚èØÍ‹–Ú0{ÛJ‹“6¡X›cã^æœm Mš4ir)õ_v܉SËfoâ}™ Jit|È`p2÷¶2âFZË™Aä,é¨Â’1î£ãºÇ´UvŒXx^æŸ7¼W°q©!ž'g˜¼Ú`Ø÷É&6…`®±ôñƒ$2ƒ¢HZ?!Âç]e–u“ű¨UާÁPÓQO֢舅ïJÿœq;²©K2C ’ yeZ™"®Àâº×ZXÓå96ù!½c`ýºcIÅêùo-ð½Íq^NP˜’šos⦂Sï¶4ɳ—óWÇ-¹Æ²DfÛ@‡Pš;3WTƒ's ðë“wÉöà’ΈÚÚŸ{ß5ãvÄùwKzlŒÐ+ @øÎµH»ï¸YÍ‚a—Bxêx~Âo}G½Š³!?Ë–ãî'è½u×iðµƒo[×­±]VÞ{}W€&œá<ñ¾µ;š7‘Ð’1–yú½ØÝ¶ÙØÃ°nx¤øbŽ-°Å߸Ö>XU¤r…ûµ¯9Ö·’xhɆ&Mš4¹œÙ JŒùÐ*]7sC‰GÍȸÚéøC’R„ ¯fSN6Ðx#ïv GDT¡K4Jh—e4”F!¤®öÔ7SAÑš' f^ŸÑ1!%àŽƒ SD4+Ð4' 4î¨e•‡ÞK¶kaƘu`ß)^ÓQ‚1†P½IÑIœø ´êÁÎwJ‰j°Ê'/}®,ä³v¥KD Æ8%H®UÒÖzÝ<(')¥¿—©€+¼“!&xâõP èÐb£ß‚â…ÎtµíúlÃnfJã æ€È³¹JÎdžFòW8?‚.áM×›·1(££œÅ½‰àÇ®í;œ4OBÕöâÚ΂kYªAóΔRœ,ÖŒA8†/¸¥€ÃU,îèK†“D2°Zk0‘M8Ý4ìÌâ)¿ªw×èmÊ.<|J“dß„y:Œ1ð7b{jMàPstbñ^œjca¯?­ ®élL6lü.ox¿~ýLr„Zq§MÁöIæ(_®ESÝ.^&h”+ûÝcqþÄ„E{®f“È ÛúgY~¦Ïí€넸ý=§ ¢‘ÁœC ö8 3È+ç‡gi>8 Ð’ Mš4ir¡CÚ"3š€)éjäÜŠ=LN0ÄQ©¢ Õl€R RJðï{Ñm®n,ÿœ––õ˜5˜žž>ðFá5 ¢«Vt$Áà€Ç™àÄ 6¶¼' 5Ý ¬×s7Ì­„w2Âô^ÜU£=(ïDdÇèN Ù)h¥,¦é]Ë$Åás1t͹ñTQU«qb‚.CЖԚm°CdF:gß3Dâ @Hi:ÉY£TyÈ¢™S÷d»?BHh­aè8á0Ï.’D¡ëºè}+•/‘:#Á›üÃù‰­ò8ƹù˜é1dCt,UOß>ð„j­ŠI°j.¼o»p£KÇ7}žXÌqd·B1¹„TþRì±K4™— ‰™MTH×ò¢yíÃb8Vɵr€TQ±=ÈÂÀi‚¦n}Ä}éçÉÛ]Éžôݹóu¨»v¯5:)ý=8zXë—öŽ(Lªpg±g±œ<×L6lv?vƒÏ[³‹`;KÓ ¸Ÿ‡ˆà6áXHì%§ÿ+ +®ýp°ùÝy™“%k°q©}÷gþ¡ ¦Ú}3ظÆÖf[“ÂÐUÜüæQ8¹‰ý)ŒP,³ €ee‘ÊN•¥]ÜŽ3騂À©ç›ÃËu•ø—ýš±gœÃÕQ~qøë´dC“&Mš\ rÊ °¯8Ë»JɆ'ÑØáh?Òu›YmçÎü¦Ç&6ÁPÍÏ//B@ÊË?Wé‚€Æ@ (ñÀY~TÄeÎbmä“nZ+(ÕC9g€Ç:Æ;€’þì ¯ÇŽ°Ô"þˆ"¢fBÀ›Í]q¬¶DÁZ²g„I' f1á|V8N8÷¬Ìߥ젔‚”£zx!’#ùxìËð yâcÈ9°S³4Pæ ¬gè³<ÐeGƒ ô ÙÑÉó=‘NÄÆê¸×U˜_¦Ã«~m—hz:>‰PyÇkv¤åA=ZüS’&0êÐ Ëálæ²ç:Ø1oƺw¥j0æè9<’aÉ;ðÆ÷§Ÿ«Ã_Éu+{r AAAkF 4rk•=öà$LÞ,[} ÎÔ>Í“Q°ðrÙYÎ"𡛿I €ï„'Èu]ocv¡ýÿ‰¨=¾7$Û;g+ÞçJ3R¸ÅiFj¨ç8$Bâ“l—&ÕŸ1_s•D]ìCÅ]ã ¹š/’âëûEÏ™FþCý,>BGÞºÞ½{Œí£{ÆÏöëÎKK64iҤɡOTÌœ_Úꈌ'|±&"¡çª¨|ÉCóC;ˆò -—ÂTŸ1ÂhÖ)„֪ʾ!8˜ùêÓgfa¹@J hER€q‡ÎüXÐ¥:Ö ™p¨’ŽXézŒõÖ1ï…£Ž ÙÒbÖÌ=¤èûZ3”Òxóæ ´Òè{…óY¤ •i#b H)ÑIiølÑ0 –’¶Ø—md×Géϱ÷™ ­óQ”æ»–l¨i‡JïS|ÉtÍm¯#Ž—à çUoׯÒ_ºÖ¶&nçtD-Ù;sª§Öüb¬ô•cG‘-’è#ßËÈ¡×r6 9#lòï‚giIÿŒí¶êBÇ×p‰*Ó{†¡Ml;îÙº¸1õ‹mueáÿG‰aÃ{HJm€.‡IHä ˜Õv›Öõýa |ó.2"ùz¬1˜KÙMæëIiC 61|¥ÐëK®8#¡®êNNФ§,ôE›t;¸÷mé}òw¼T7ÅXÆ»êx»ƒg}mú¬%š4iÒä~e²ÜãH‡)ïœ)%´î¯rH_Û!æ¨=·ü(Q…9†ÐÜÖ1ÒÀûÐÐà Ÿ‹-<„«ýxoª³¤4ÌÀéôÕkhÍÐÜCƒ…!WJ[. <x~†R }ßC)Vø›nˆ¥%ÉØ™ŸÇ±=ç`¤ïäbŽÁ¥–AÈĹcc©;N‰<ø2g/–>·§³°¾âè½Ï÷XB¢´‡y`YŸm ܖݱb¯k‹uU£œW° ˆRJ(¥†Å š=¤Ýs˜'WÅD»Îñ°b×Úky²3œ3!pè“ DPf ®b»rý;àÒA©Z²1^ù™9ÔÙt¡9 ç{6בÈdÀib/·óäúú>ÿÙ‘73DU4ÖÉV²ÕJëÔýÿ\þª%>cn—8âßi­Ù)5[êRç¾³ëòDŸKh—à%oí\˜²=[’ò2Ò’ Mš4irÃ…-÷W8ðーï{ô}õq¿žá_Óî±ú ¢#ÈN/ÑsŠÝ™¢ÄÁÐZC)@Êçsï H„SäA¢¸Jp$oN/@ø–lú1­äBXõØqq$Ÿ Ö¥Z›ep>?C骇ÿ¾‡âÀY¡•†¶-L€èÉ8~bŒ@lŸ*îKUjNDà¤0Àcúªä0 Y ˆïZà£ÉN±?!l9QÖ}µ%PRâݸ†MTJîÝeQênå Ýõ0{kfwWèp° —%΂;·ÆŠk±ÈóB8rË0sF2K`·ÎÞ;^_Ó]e½Ì ‰ûX§Qý¼ã[»nÜá;¥39õ:ÛuËÞ½D\aε[gC“1iɆ&Mš4irˆ±éª­ At“ÂH%ƵJé¢á=üü£D ‚Ã⺜c¡”Æù¬ÀÚµiçmÿ9ûn R.Ž+eßqÕX.¢¿tüÉ|Gv”2If@v'€¥}…Ð dnóÜ¿ØÏ €4½ù—ÉB'©P@@šñÑl J(­„bmr&cÐ ÷ Oæò6Ä] .13ô ‚£Ùd«Üdñä»|þä™÷ D!Å«œËKê•KÜë1÷{ÊŽ@wº?§ ï‚0ñ¯9ß1gX;gîcM…u´ ¢(ßO†²F“KÖÑœÝô=Û¾ZÚIÑög“’´P“&Mšd›6ìW~çxïMB0;oÇ-›m ±‡”Ì·]OG3þÎk/œt…?)¥ 4d¨àL*;]àÅQ—³¿fŽ>ÀgwCޏ{PõÇ3GÂ$”ÒРКýïLw†K6h° Š;¬[b mÁL²!ç~ €LQŠA­ý²ÑL,…Vq¯£¨à`qÕ¬ÿžì2¤EÐ%ˆG÷P¸Û$ù¹/]?w¦B'D ˆžÛåqih–uÎâq•ÝãÏ”…å6<ÃúqÞÆ·p] |ƒ >Y·5—¿a×÷¨ò6¸Dƒ ±Ûýƈۧ>{¯¢RÒ´Á1.«7c'*6ûÒ„ƒ=¯¯d¾9®0Î1‘¤ûÖþá3Û8å¦u3O›MnÚï+%½ÆMYŽ6Ë9ÅI‡ßüî–¹/A*äsëPIMn_Z²¡I“&Mµ4xèxøSœ^e‹{3BÜ8¤Îi<,$Ø‘Ÿ@€ˆ²à{÷¸Éßš7á(á@ž@[‚”€<ÔY¨ƒqI‘±#Hwñ-_hÅü°d@‡öýðû®ë µBÐó¹ãn®ã:ˆ€^)ÃÁ /ç·v~ã¡ís=ÁPc ßåẠˆ¤!IÖÊþÌ¢@„€Û±tÿ:Ѭ=yŠÏZJ4ì›lÈáiÒgèô ÷PX[.¹ ¥K6<踫ÃAPå÷›Cä;æd¿³üµ¿·ÔÑT˜ìô¦¢+sµŽPñzÁžXû£o°(P³fm,ýû%íÊö )WM¬µJØß1N}¬Ûb꣠ãjXà píü×îUÒa†œ[Ü­±÷:®á×Óö°~¦Å|BTÛÿL‘ap…}8¥{Ü{Äk4²#˜$ŽJV»NÌá3XÃBÁ28³Çò9œÒ­Í'¹¾/t gcRítåt»XûYRTh˜¤EkD6qÑVȺbÆørý@tÛ¾×%l£1詘¨6¾¯AìÒviɆ&Mš4¹H°¢fþ¯i3½ŸÃ¹Ô fg„ëá`Wín 8¨lÝÜw²vCgÀ hÍNÉt"÷Yû÷álI+Í5ÁQ±ŸQ–YãééÉð#ØÎ)ºès ÌöóÚ’¥'ðL”$’  ‚FnÞ]ÀŽ9F‘:wsa÷œ€%ƒ&0-3œ½“Eeˆø uX®šªëÎig7XæJ¥÷Ï«×] °æ^S¯®wàxóm¹Æ­‘_vìh²ŠF9A^ÿ)ID$v!ü¬ÞCÐÕÞí’z¤AÁ­ÓMåsÄîáI3ŒÊÍ 7²wiáX¸Ó^_â¸ð„ü"g‰¶®ïn?¹±àtå¬;ÙYp¢¸Ùwï”.šÛ¾Ka”fÙ½¼L¿¼&ÿ~Œ$¼I'-ÙФI“&M3J”R²k$o5+ÕBÈN‚T­úæÑ‡ÉUÎØºK0B@À9ÚTÇÛD„Ø|_iɘµ ,s4Î6ÀÀްY…€¿PJãY÷Æ Ò†7¢ë ¸Vì«æµŽ*Ñ)®ÝŠƒëq·FÀIfâŠ|"Ê:¤¢ˆmŽÊyL‚+5þ]uï½:@s*ºc®†\Í‹I!•é8?3Ù¤É{7TäÏ; ¶$¨n)I˜¿›ûï›(‡Qjš «Æ!®ð§ÉúAÂoÿ|í `Dðå1:Êwˆ­º¹÷›"Ðmgõ¬?N­åÉ9ãuú¾O¯ÃWèÝo_êþKÇ#éÄk[òÕKK64iÒ¤É+5ànÁȸÕJÖ½ú{–Kâ\u½ : ÐŒ°êËMüÐÖX$ÑflJiœ¤°hA9”C8¾Ö©°É­¡z…§§ToaŽ”©lWJY§'\SkëpÖ=ØB" ¨ó ÒŽ…hšV é3\+‚Øö¶X·%ƒœŠå\ñ‹¡"F[Æ/àé‚=ôD †%^ÎÅž É}Sú¼Ü3¾'çÀZ‡vrÇmßÝF(yí#¬4S< ÓA”òg/ä¹üþ—!hÏ!”.a+]£ÓÀßóŠ‹—2[†7@ÊÝ‚M9—vá¶Ùµ°XÔš:ŽîVsÄÐy1Å=HëèÚ_K}²6“Ñþ~Ôædï}Së¿ïîÕ&GJK64iÒ¤É+“kVÆç•Ôñ3ÅÕÆWs ˜¯[ ²ñªq=JÙXiVBBHœ…°ìM…~[×É"ú H’èº`í ~M`]ÛÞm†”b(èÏoÞ¼ ãÊŒóKï»´fô½òøÀÌÌÊÿ]PÊÁaÓXˆ4¨ï+èÔòXIDATXi^U)(î 1«8](+ÉüFøŽßë•x,ܘ³OKÊç¸jWÖ½ò«jðÛàchrq=®y:ù™ÿÿÁ˜ÔGb^çØÖsí‡5zÐÙY®Ãnª+ëH=°DGŒ‡/6g%=kºÆôpü ã …{L8 íÒÀoR"â­%ï÷²Íë¶ Í²áCÇ(ÏJØá_<ºï¹Å†ð|;Œ"ä©_ Ò^ k¯›QbbÙ[P]÷ì°Þ¤M“X‚ÀНV ¹•ˆzíÞÍˬ$©í»Ž3õ‘-ˆgg$,çCÃ2ßÏ.ëT¼¤½¿ä¹_ûÜaø_ÎþY~ß9@{LÝ‘¥—<¿Jœh[b Féq¤%š4iÒ¤I“ ;MÁ@f€ æ×I¨®ëÞÂ'¹ïÚÏÒ#·;#WXþ“,8ŸÏx:½1] ZAk)¥!jÖšç÷gï 5XÎ/Ê“7»yˆy)³‹+dÕUaN¹XñÇ)6Ô/ïðšÿLBE œ¬R@ÊϽïxþh¾¶7ãDA i»J×#Z.o ¶;s‚ image/svg+xml chiaki-v2.2.0/cli/000077500000000000000000000000001447035777400137225ustar00rootroot00000000000000chiaki-v2.2.0/cli/CMakeLists.txt000066400000000000000000000007121447035777400164620ustar00rootroot00000000000000 set(SOURCE include/chiaki-cli.h src/discover.c src/wakeup.c) add_library(chiaki-cli-lib STATIC ${SOURCE}) target_include_directories(chiaki-cli-lib PUBLIC "include") target_link_libraries(chiaki-cli-lib chiaki-lib) if(CHIAKI_CLI_ARGP_STANDALONE) find_package(Argp REQUIRED) target_link_libraries(chiaki-cli-lib Argp::Argp) endif() add_executable(chiaki-cli src/main.c) target_link_libraries(chiaki-cli chiaki-cli-lib) install(TARGETS chiaki-cli) chiaki-v2.2.0/cli/include/000077500000000000000000000000001447035777400153455ustar00rootroot00000000000000chiaki-v2.2.0/cli/include/chiaki-cli.h000066400000000000000000000006621447035777400175170ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_CHIAKI_CLI_H #define CHIAKI_CHIAKI_CLI_H #include #include #ifdef __cplusplus extern "C" { #endif CHIAKI_EXPORT int chiaki_cli_cmd_discover(ChiakiLog *log, int argc, char *argv[]); CHIAKI_EXPORT int chiaki_cli_cmd_wakeup(ChiakiLog *log, int argc, char *argv[]); #ifdef __cplusplus } #endif #endif //CHIAKI_CHIAKI_CLI_H chiaki-v2.2.0/cli/src/000077500000000000000000000000001447035777400145115ustar00rootroot00000000000000chiaki-v2.2.0/cli/src/discover.c000066400000000000000000000106011447035777400164710ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include static char doc[] = "Send a PS4 discovery request."; #define ARG_KEY_HOST 'h' static struct argp_option options[] = { { "host", ARG_KEY_HOST, "Host", 0, "Host to send discovery request to", 0 }, { 0 } }; typedef struct arguments { const char *host; } Arguments; static int parse_opt(int key, char *arg, struct argp_state *state) { Arguments *arguments = state->input; switch(key) { case ARG_KEY_HOST: arguments->host = arg; break; case ARGP_KEY_ARG: argp_usage(state); break; default: return ARGP_ERR_UNKNOWN; } return 0; } static struct argp argp = { options, parse_opt, 0, doc, 0, 0, 0 }; static void discovery_cb(ChiakiDiscoveryHost *host, void *user) { ChiakiLog *log = user; CHIAKI_LOGI(log, "--"); CHIAKI_LOGI(log, "Discovered Host:"); CHIAKI_LOGI(log, "State: %s", chiaki_discovery_host_state_string(host->state)); if(host->system_version) CHIAKI_LOGI(log, "System Version: %s", host->system_version); if(host->device_discovery_protocol_version) CHIAKI_LOGI(log, "Device Discovery Protocol Version: %s", host->device_discovery_protocol_version); if(host->host_request_port) CHIAKI_LOGI(log, "Request Port: %hu", (unsigned short)host->host_request_port); if(host->host_name) CHIAKI_LOGI(log, "Host Name: %s", host->host_name); if(host->host_type) CHIAKI_LOGI(log, "Host Type: %s", host->host_type); if(host->host_id) CHIAKI_LOGI(log, "Host ID: %s", host->host_id); if(host->running_app_titleid) CHIAKI_LOGI(log, "Running App Title ID: %s", host->running_app_titleid); if(host->running_app_name) CHIAKI_LOGI(log, "Running App Name: %s%s", host->running_app_name, (strcmp(host->running_app_name, "Persona 5") == 0 ? " (best game ever)" : "")); CHIAKI_LOGI(log, "--"); } CHIAKI_EXPORT int chiaki_cli_cmd_discover(ChiakiLog *log, int argc, char *argv[]) { Arguments arguments = { 0 }; error_t argp_r = argp_parse(&argp, argc, argv, ARGP_IN_ORDER, NULL, &arguments); if(argp_r != 0) return 1; if(!arguments.host) { fprintf(stderr, "No host specified, see --help.\n"); return 1; } ChiakiDiscovery discovery; ChiakiErrorCode err = chiaki_discovery_init(&discovery, log, AF_INET); // TODO: IPv6 if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(log, "Discovery init failed"); return 1; } ChiakiDiscoveryThread thread; err = chiaki_discovery_thread_start(&thread, &discovery, discovery_cb, NULL); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(log, "Discovery thread init failed"); chiaki_discovery_fini(&discovery); return 1; } struct addrinfo *host_addrinfos; int r = getaddrinfo(arguments.host, NULL, NULL, &host_addrinfos); if(r != 0) { CHIAKI_LOGE(log, "getaddrinfo failed"); return 1; } struct sockaddr *host_addr = NULL; socklen_t host_addr_len = 0; for(struct addrinfo *ai=host_addrinfos; ai; ai=ai->ai_next) { if(ai->ai_protocol != IPPROTO_UDP) continue; if(ai->ai_family != AF_INET) // TODO: IPv6 continue; host_addr_len = ai->ai_addrlen; host_addr = (struct sockaddr *)malloc(host_addr_len); if(!host_addr) break; memcpy(host_addr, ai->ai_addr, host_addr_len); } freeaddrinfo(host_addrinfos); if(!host_addr) { CHIAKI_LOGE(log, "Failed to get addr for hostname"); return 1; } ChiakiDiscoveryPacket packet; memset(&packet, 0, sizeof(packet)); packet.cmd = CHIAKI_DISCOVERY_CMD_SRCH; packet.protocol_version = CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS4; ((struct sockaddr_in *)host_addr)->sin_port = htons(CHIAKI_DISCOVERY_PORT_PS4); err = chiaki_discovery_send(&discovery, &packet, host_addr, host_addr_len); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(log, "Failed to send discovery packet for PS4: %s", chiaki_error_string(err)); packet.protocol_version = CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS5; ((struct sockaddr_in *)host_addr)->sin_port = htons(CHIAKI_DISCOVERY_PORT_PS5); err = chiaki_discovery_send(&discovery, &packet, host_addr, host_addr_len); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(log, "Failed to send discovery packet for PS5: %s", chiaki_error_string(err)); while(1) sleep(1); // TODO: wtf return 0; } chiaki-v2.2.0/cli/src/main.c000066400000000000000000000035621447035777400156070ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include static const char doc[] = "CLI for Chiaki (PlayStation Remote Play Client)" "\v" "Supported commands are:\n" " discover Discover Consoles.\n" " wakeup Send Wakeup Packet.\n"; #define ARG_KEY_VERBOSE 'v' static struct argp_option options[] = { { "verbose", ARG_KEY_VERBOSE, NULL, 0, "Verbose Logging", 0 }, { 0 } }; typedef struct context { ChiakiLog log; } Context; static int call_subcmd(struct argp_state *state, const char *name, int (*subcmd)(ChiakiLog *log, int argc, char *argv[])) { if(state->next < 1 || state->argc < state->next) return 1; int argc = state->argc - state->next + 1; char **argv = &state->argv[state->next - 1]; size_t l = strlen(state->name) + strlen(name) + 2; argv[0] = malloc(l); if(!argv[0]) return 1; snprintf(argv[0], l, "%s %s", state->name, name); int r = subcmd(state->input, argc, argv); free(argv[0]); return r; } static int parse_opt(int key, char *arg, struct argp_state *state) { Context *ctx = state->input; switch(key) { case ARG_KEY_VERBOSE: ctx->log.level_mask = CHIAKI_LOG_ALL; break; case ARGP_KEY_ARG: if(strcmp(arg, "discover") == 0) exit(call_subcmd(state, "discover", chiaki_cli_cmd_discover)); else if(strcmp(arg, "wakeup") == 0) exit(call_subcmd(state, "wakeup", chiaki_cli_cmd_wakeup)); // fallthrough case ARGP_KEY_END: argp_usage(state); break; default: return ARGP_ERR_UNKNOWN; } return 0; } static struct argp argp = { options, parse_opt, " [CMD-ARGS...]", doc, 0, 0, 0 }; int main(int argc, char *argv[]) { Context ctx; chiaki_log_init(&ctx.log, CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE, chiaki_log_cb_print, NULL); argp_parse(&argp, argc, argv, ARGP_IN_ORDER, NULL, &ctx); return 0; } chiaki-v2.2.0/cli/src/wakeup.c000066400000000000000000000037351447035777400161610ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include static char doc[] = "Send a PS4 wakeup packet."; #define ARG_KEY_HOST 'h' #define ARG_KEY_REGISTKEY 'r' #define ARG_KEY_PS4 '4' #define ARG_KEY_PS5 '5' static struct argp_option options[] = { { "host", ARG_KEY_HOST, "Host", 0, "Host to send wakeup packet to", 0 }, { "registkey", ARG_KEY_REGISTKEY, "RegistKey", 0, "Remote Play registration key (plaintext)", 0 }, { "ps4", ARG_KEY_PS4, NULL, 0, "PlayStation 4", 0 }, { "ps5", ARG_KEY_PS5, NULL, 0, "PlayStation 5 (default)", 0 }, { 0 } }; typedef struct arguments { const char *host; const char *registkey; bool ps5; } Arguments; static int parse_opt(int key, char *arg, struct argp_state *state) { Arguments *arguments = state->input; switch(key) { case ARG_KEY_HOST: arguments->host = arg; break; case ARG_KEY_REGISTKEY: arguments->registkey = arg; break; case ARGP_KEY_ARG: argp_usage(state); break; case ARG_KEY_PS4: arguments->ps5 = false; break; case ARG_KEY_PS5: arguments->ps5 = true; break; default: return ARGP_ERR_UNKNOWN; } return 0; } static struct argp argp = { options, parse_opt, 0, doc, 0, 0, 0 }; CHIAKI_EXPORT int chiaki_cli_cmd_wakeup(ChiakiLog *log, int argc, char *argv[]) { Arguments arguments = { 0 }; arguments.ps5 = true; error_t argp_r = argp_parse(&argp, argc, argv, ARGP_IN_ORDER, NULL, &arguments); if(argp_r != 0) return 1; if(!arguments.host) { fprintf(stderr, "No host specified, see --help.\n"); return 1; } if(!arguments.registkey) { fprintf(stderr, "No registration key specified, see --help.\n"); return 1; } if(strlen(arguments.registkey) > 8) { fprintf(stderr, "Given registkey is too long.\n"); return 1; } uint64_t credential = (uint64_t)strtoull(arguments.registkey, NULL, 16); return chiaki_discovery_wakeup(log, NULL, arguments.host, credential, arguments.ps5); } chiaki-v2.2.0/cmake/000077500000000000000000000000001447035777400142335ustar00rootroot00000000000000chiaki-v2.2.0/cmake/FindArgp.cmake000066400000000000000000000007421447035777400167320ustar00rootroot00000000000000# FindArgp # Will define Target Argp::Argp find_path(Argp_INCLUDE_DIR NAMES argp.h) find_library(Argp_LIBRARY NAMES argp) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Argp REQUIRED_VARS Argp_LIBRARY Argp_INCLUDE_DIR) if(Argp_FOUND AND NOT TARGET Argp::Argp) add_library(Argp::Argp UNKNOWN IMPORTED) set_target_properties(Argp::Argp PROPERTIES IMPORTED_LOCATION "${Argp_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Argp_INCLUDE_DIR}") endif() chiaki-v2.2.0/cmake/FindFFMPEG.cmake000066400000000000000000000216651447035777400170140ustar00rootroot00000000000000#[==[ Provides the following variables: * `FFMPEG_INCLUDE_DIRS`: Include directories necessary to use FFMPEG. * `FFMPEG_LIBRARIES`: Libraries necessary to use FFMPEG. Note that this only includes libraries for the components requested. * `FFMPEG_VERSION`: The version of FFMPEG found. The following components are supported: * `avcodec` * `avdevice` * `avfilter` * `avformat` * `avresample` * `avutil` * `swresample` * `swscale` For each component, the following are provided: * `FFMPEG__FOUND`: Libraries for the component. * `FFMPEG__INCLUDE_DIRS`: Include directories for the component. * `FFMPEG__LIBRARIES`: Libraries for the component. * `FFMPEG::`: A target to use with `target_link_libraries`. Note that only components requested with `COMPONENTS` or `OPTIONAL_COMPONENTS` are guaranteed to set these variables or provide targets. #]==] find_package(PkgConfig) function(join OUTPUT GLUE) set(_TMP_RESULT "") set(_GLUE "") # effective glue is empty at the beginning foreach(arg ${ARGN}) set(_TMP_RESULT "${_TMP_RESULT}${_GLUE}${arg}") set(_GLUE "${GLUE}") endforeach() set(${OUTPUT} "${_TMP_RESULT}" PARENT_SCOPE) endfunction() function (_ffmpeg_find component headername) if(TARGET "FFMPEG::${component}") # already found before return() endif() # Try pkg-config first if(PKG_CONFIG_FOUND) if(CMAKE_VERSION VERSION_LESS "3.6") pkg_check_modules(FFMPEG_${component} lib${component}) else() pkg_check_modules(FFMPEG_${component} lib${component} IMPORTED_TARGET) endif() if(FFMPEG_${component}_FOUND) if((TARGET PkgConfig::FFMPEG_${component}) AND (NOT CMAKE_VERSION VERSION_LESS "3.11.0")) if(APPLE) join(FFMPEG_LDFLAGS_STRING " " ${FFMPEG_${component}_LDFLAGS}) string(REGEX REPLACE "-Wl,-framework,([^ ]+)" "-framework \\1" FFMPEG_LDFLAGS_STRING_CLEAN ${FFMPEG_LDFLAGS_STRING}) string(REGEX MATCHALL "-framework [^ ]+" FFMPEG_FRAMEWORKS ${FFMPEG_LDFLAGS_STRING_CLEAN}) list(APPEND FFMPEG_${component}_LIBRARIES ${FFMPEG_FRAMEWORKS}) set_target_properties(PkgConfig::FFMPEG_${component} PROPERTIES INTERFACE_LINK_DIRECTORIES "${FFMPEG_${component}_LIBRARY_DIRS}" INTERFACE_LINK_LIBRARIES "${FFMPEG_${component}_LIBRARIES}" INTERFACE_LINK_OPTIONS "") message("set libs to \"${FFMPEG_${component}_LIBRARIES}\"") message("set lib dirs to \"${FFMPEG_${component}_LIBRARY_DIRS}\"") message("set lib otps not to \"${FFMPEG_${component}_LDFLAGS}\"") endif() set_target_properties(PkgConfig::FFMPEG_${component} PROPERTIES IMPORTED_GLOBAL TRUE) add_library(FFMPEG::${component} ALIAS PkgConfig::FFMPEG_${component}) else() add_library("FFMPEG::${component}" INTERFACE IMPORTED) if(CMAKE_VERSION VERSION_LESS "3.6") link_directories("${FFMPEG_${component}_LIBRARY_DIRS}") endif() set_target_properties("FFMPEG::${component}" PROPERTIES INTERFACE_LINK_DIRECTORIES "${FFMPEG_${component}_LIBRARY_DIRS}" INTERFACE_INCLUDE_DIRECTORIES "${FFMPEG_${component}_INCLUDE_DIRS}" INTERFACE_LINK_LIBRARIES "${FFMPEG_${component}_LIBRARIES}") endif() return() endif() endif() find_path("FFMPEG_${component}_INCLUDE_DIR" NAMES "lib${component}/${headername}" PATHS "${FFMPEG_ROOT}/include" ~/Library/Frameworks /Library/Frameworks /usr/local/include /usr/include /sw/include # Fink /opt/local/include # DarwinPorts /opt/csw/include # Blastwave /opt/include /usr/freeware/include PATH_SUFFIXES ffmpeg DOC "FFMPEG's ${component} include directory") mark_as_advanced("FFMPEG_${component}_INCLUDE_DIR") # On Windows, static FFMPEG is sometimes built as `lib.a`. if (WIN32) list(APPEND CMAKE_FIND_LIBRARY_SUFFIXES ".a" ".lib") list(APPEND CMAKE_FIND_LIBRARY_PREFIXES "" "lib") endif () find_library("FFMPEG_${component}_LIBRARY" NAMES "${component}" PATHS "${FFMPEG_ROOT}/lib" ~/Library/Frameworks /Library/Frameworks /usr/local/lib /usr/local/lib64 /usr/lib /usr/lib64 /sw/lib /opt/local/lib /opt/csw/lib /opt/lib /usr/freeware/lib64 "${FFMPEG_ROOT}/bin" DOC "FFMPEG's ${component} library") mark_as_advanced("FFMPEG_${component}_LIBRARY") if (FFMPEG_${component}_LIBRARY AND FFMPEG_${component}_INCLUDE_DIR) set(_deps_found TRUE) set(_deps_link) foreach (_ffmpeg_dep IN LISTS ARGN) if (TARGET "FFMPEG::${_ffmpeg_dep}") list(APPEND _deps_link "FFMPEG::${_ffmpeg_dep}") else () set(_deps_found FALSE) endif () endforeach () if (_deps_found) add_library("FFMPEG::${component}" UNKNOWN IMPORTED) set_target_properties("FFMPEG::${component}" PROPERTIES IMPORTED_LOCATION "${FFMPEG_${component}_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${FFMPEG_${component}_INCLUDE_DIR}" IMPORTED_LINK_INTERFACE_LIBRARIES "${_deps_link}") set("FFMPEG_${component}_FOUND" 1 PARENT_SCOPE) set(version_header_path "${FFMPEG_${component}_INCLUDE_DIR}/lib${component}/version.h") if (EXISTS "${version_header_path}") string(TOUPPER "${component}" component_upper) file(STRINGS "${version_header_path}" version REGEX "#define *LIB${component_upper}_VERSION_(MAJOR|MINOR|MICRO) ") string(REGEX REPLACE ".*_MAJOR *\([0-9]*\).*" "\\1" major "${version}") string(REGEX REPLACE ".*_MINOR *\([0-9]*\).*" "\\1" minor "${version}") string(REGEX REPLACE ".*_MICRO *\([0-9]*\).*" "\\1" micro "${version}") if (NOT major STREQUAL "" AND NOT minor STREQUAL "" AND NOT micro STREQUAL "") set("FFMPEG_${component}_VERSION" "${major}.${minor}.${micro}" PARENT_SCOPE) endif () endif () else () set("FFMPEG_${component}_FOUND" 0 PARENT_SCOPE) set(what) if (NOT FFMPEG_${component}_LIBRARY) set(what "library") endif () if (NOT FFMPEG_${component}_INCLUDE_DIR) if (what) string(APPEND what " or headers") else () set(what "headers") endif () endif () set("FFMPEG_${component}_NOT_FOUND_MESSAGE" "Could not find the ${what} for ${component}." PARENT_SCOPE) endif () endif () endfunction () unset(_pkg_config_extra_arg) _ffmpeg_find(avutil avutil.h) #_ffmpeg_find(avresample avresample.h # avutil) _ffmpeg_find(swresample swresample.h avutil) _ffmpeg_find(swscale swscale.h avutil) _ffmpeg_find(avcodec avcodec.h avutil) #_ffmpeg_find(avformat avformat.h # avcodec avutil) #_ffmpeg_find(avfilter avfilter.h # avutil) #_ffmpeg_find(avdevice avdevice.h # avformat avutil) if (TARGET FFMPEG::avutil) if(TARGET PkgConfig::FFMPEG_avutil) set(FFMPEG_VERSION ${FFMPEG_avutil_VERSION}) else() set(_ffmpeg_version_header_path "${FFMPEG_avutil_INCLUDE_DIR}/libavutil/ffversion.h") if (EXISTS "${_ffmpeg_version_header_path}") file(STRINGS "${_ffmpeg_version_header_path}" _ffmpeg_version REGEX "FFMPEG_VERSION") string(REGEX REPLACE ".*\"n?\(.*\)\"" "\\1" FFMPEG_VERSION "${_ffmpeg_version}") unset(_ffmpeg_version) else () set(FFMPEG_VERSION FFMPEG_VERSION-NOTFOUND) endif () unset(_ffmpeg_version_header_path) endif() endif () set(FFMPEG_INCLUDE_DIRS) set(FFMPEG_LIBRARIES) set(_ffmpeg_required_vars) foreach (_ffmpeg_component IN LISTS FFMPEG_FIND_COMPONENTS) if (TARGET "FFMPEG::${_ffmpeg_component}") if(TARGET PkgConfig::FFMPEG_${_ffmpeg_component}) list(APPEND FFMPEG_INCLUDE_DIRS ${FFMPEG_${_ffmpeg_component}_INCLUDE_DIRS}) list(APPEND FFMPEG_LIBRARIES ${FFMPEG_${_ffmpeg_component}_LIBRARIES}) list(APPEND _ffmpeg_required_vars "FFMPEG_${_ffmpeg_component}_LIBRARIES") else() if(NOT FFMPEG_${_ffmpeg_component}_INCLUDE_DIRS) set(FFMPEG_${_ffmpeg_component}_INCLUDE_DIRS "${FFMPEG_${_ffmpeg_component}_INCLUDE_DIR}") endif() if(NOT FFMPEG_${_ffmpeg_component}_LIBRARIES) set(FFMPEG_${_ffmpeg_component}_LIBRARIES "${FFMPEG_${_ffmpeg_component}_LIBRARY}") endif() list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG_${_ffmpeg_component}_INCLUDE_DIRS}") list(APPEND FFMPEG_LIBRARIES "${FFMPEG_${_ffmpeg_component}_LIBRARIES}") if (FFMEG_FIND_REQUIRED_${_ffmpeg_component}) list(APPEND _ffmpeg_required_vars "FFMPEG_${_ffmpeg_component}_INCLUDE_DIRS" "FFMPEG_${_ffmpeg_component}_LIBRARIES") endif() endif () endif () endforeach () unset(_ffmpeg_component) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(FFMPEG REQUIRED_VARS FFMPEG_LIBRARIES VERSION_VAR FFMPEG_VERSION HANDLE_COMPONENTS) unset(_ffmpeg_required_vars) chiaki-v2.2.0/cmake/FindILClient.cmake000066400000000000000000000030031447035777400174750ustar00rootroot00000000000000# Provides ILClient::ILClient # (Raspberry Pi-specific video decoding stuff, very specific for libraspberrypi0 and libraspberrypi-doc) set(_required_libs /opt/vc/lib/libbcm_host.so /opt/vc/lib/libvcilcs.a /opt/vc/lib/libvchiq_arm.so /opt/vc/lib/libvcos.so) unset(_libvars) foreach(_lib ${_required_libs}) get_filename_component(_libname "${_lib}" NAME_WE) set(_libvar "ILClient_${_libname}_LIBRARY") list(APPEND _libvars "${_libvar}") if(EXISTS "${_lib}") set("${_libvar}" "${_lib}") else() set("${_libvar}" "${_libvar}-NOTFOUND") endif() endforeach() find_path(ILClient_INCLUDE_DIR bcm_host.h PATHS /opt/vc/include NO_DEFAULT_PATH) find_path(ILClient_SOURCE_DIR ilclient.c PATHS /opt/vc/src/hello_pi/libs/ilclient) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(ILClient FOUND_VAR ILClient_FOUND REQUIRED_VARS ${_libvars} ILClient_INCLUDE_DIR ILClient_SOURCE_DIR) if(ILClient_FOUND) if(NOT TARGET ILClient::ILClient) # see /opt/vc/src/hello_pi/libs/ilclient/Makefile add_library(ilclient STATIC "${ILClient_SOURCE_DIR}/ilclient.c" "${ILClient_SOURCE_DIR}/ilcore.c") target_include_directories(ilclient PUBLIC "${ILClient_INCLUDE_DIR}" "${ILClient_SOURCE_DIR}") target_compile_definitions(ilclient PUBLIC HAVE_LIBOPENMAX=2 OMX OMX_SKIP64BIT USE_EXTERNAL_OMX HAVE_LIBBCM_HOST USE_EXTERNAL_LIBBCM_HOST USE_VCHIQ_ARM) target_link_libraries(ilclient PUBLIC ${_required_libs}) add_library(ILClient::ILClient ALIAS ilclient) endif() endif() chiaki-v2.2.0/cmake/FindJerasure.cmake000066400000000000000000000014351447035777400176210ustar00rootroot00000000000000# Provides Jerasure::Jerasure find_path(Jerasure_INCLUDE_DIR NAMES jerasure.h) find_path(Jerasure_INCLUDE_DIR2 NAMES galois.h PATH_SUFFIXES jerasure) find_library(Jerasure_LIBRARY NAMES Jerasure) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Jerasure FOUND_VAR Jerasure_FOUND REQUIRED_VARS Jerasure_LIBRARY Jerasure_INCLUDE_DIR Jerasure_INCLUDE_DIR2 ) if(Jerasure_FOUND) set(Jerasure_LIBRARIES ${Jerasure_LIBRARY}) set(Jerasure_INCLUDE_DIRS ${Jerasure_INCLUDE_DIR} ${Jerasure_INCLUDE_DIR2}) if(NOT TARGET Jerasure::Jerasure) add_library(Jerasure::Jerasure UNKNOWN IMPORTED) set_target_properties(Jerasure::Jerasure PROPERTIES IMPORTED_LOCATION "${Jerasure_LIBRARY}" INTERFACE_INCLUDE_DIRECTORIES "${Jerasure_INCLUDE_DIRS}" ) endif() endif() chiaki-v2.2.0/cmake/FindNanopb.cmake000066400000000000000000000006701447035777400172560ustar00rootroot00000000000000# Provides Nanopb::nanopb and NANOPB_GENERATOR_PY find_package(nanopb CONFIG) find_file(NANOPB_GENERATOR_PY nanopb_generator.py PATH_SUFFIXES bin) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Nanopb FOUND_VAR Nanopb_FOUND REQUIRED_VARS nanopb_FOUND NANOPB_GENERATOR_PY ) if(Nanopb_FOUND) if(NOT TARGET Nanopb::nanopb) add_library(Nanopb::nanopb ALIAS nanopb::protobuf-nanopb-static) endif() endif() chiaki-v2.2.0/cmake/FindOpus.cmake000066400000000000000000000004471447035777400167710ustar00rootroot00000000000000# Opus_FOUND # Opus_INCLUDE_DIRS # Opus_LIBRARIES find_path(Opus_INCLUDE_DIRS NAMES opus/opus.h PATH_SUFFIXES include ) find_library(Opus_LIBRARIES NAMES opus) include(FindPackageHandleStandardArgs) find_package_handle_standard_args(Opus DEFAULT_MSG Opus_INCLUDE_DIRS Opus_LIBRARIES ) chiaki-v2.2.0/cmake/FindSDL2.cmake000066400000000000000000000034051447035777400165440ustar00rootroot00000000000000 find_package(SDL2 NO_MODULE QUIET) # Adapted from libsdl-org/SDL_ttf: https://github.com/libsdl-org/SDL_ttf/blob/main/cmake/FindPrivateSDL2.cmake#L19-L31 # Copyright (C) 1997-2022 Sam Lantinga # Licensed under the zlib license (https://github.com/libsdl-org/SDL_ttf/blob/main/LICENSE.txt) set(SDL2_VERSION_MAJOR) set(SDL2_VERSION_MINOR) set(SDL2_VERSION_PATCH) set(SDL2_VERSION) if(SDL2_INCLUDE_DIR) file(READ "${SDL2_INCLUDE_DIR}/SDL_version.h" _sdl_version_h) string(REGEX MATCH "#define[ \t]+SDL_MAJOR_VERSION[ \t]+([0-9]+)" _sdl2_major_re "${_sdl_version_h}") set(SDL2_VERSION_MAJOR "${CMAKE_MATCH_1}") string(REGEX MATCH "#define[ \t]+SDL_MINOR_VERSION[ \t]+([0-9]+)" _sdl2_minor_re "${_sdl_version_h}") set(SDL2_VERSION_MINOR "${CMAKE_MATCH_1}") string(REGEX MATCH "#define[ \t]+SDL_PATCHLEVEL[ \t]+([0-9]+)" _sdl2_patch_re "${_sdl_version_h}") set(SDL2_VERSION_PATCH "${CMAKE_MATCH_1}") if(_sdl2_major_re AND _sdl2_minor_re AND _sdl2_patch_re) set(SDL2_VERSION "${SDL2_VERSION_MAJOR}.${SDL2_VERSION_MINOR}.${SDL2_VERSION_PATCH}") endif() endif() if(SDL2_FOUND AND (NOT TARGET SDL2::SDL2)) add_library(SDL2::SDL2 UNKNOWN IMPORTED GLOBAL) if(NOT SDL2_LIBDIR) set(SDL2_LIBDIR "${libdir}") endif() find_library(SDL2_LIBRARY SDL2 PATHS "${SDL2_LIBDIR}" NO_DEFAULT_PATH) if(SDL2_LIBRARY) string(STRIP "${SDL2_LIBRARIES}" SDL2_LIBRARIES) set_target_properties(SDL2::SDL2 PROPERTIES IMPORTED_LOCATION "${SDL2_LIBRARY}" IMPORTED_LINK_INTERFACE_LIBRARIES "${SDL2_LIBRARIES}" INTERFACE_LINK_DIRECTORIES "${SDL2_LIBDIR}" INTERFACE_INCLUDE_DIRECTORIES "${SDL2_INCLUDE_DIRS}") else() set(SDL2_FOUND FALSE) endif() endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args(SDL2 CONFIG_MODE) chiaki-v2.2.0/cmake/OpenSSLExternalProject.cmake000066400000000000000000000040461447035777400215560ustar00rootroot00000000000000 include(ExternalProject) set(OPENSSL_INSTALL_DIR "${CMAKE_CURRENT_BINARY_DIR}/openssl-install-prefix") unset(OPENSSL_OS_COMPILER) unset(OPENSSL_CONFIG_EXTRA_ARGS) unset(OPENSSL_BUILD_ENV) if(ANDROID_ABI) if(ANDROID_ABI STREQUAL "armeabi-v7a") set(OPENSSL_OS_COMPILER "android-arm") elseif(ANDROID_ABI STREQUAL "arm64-v8a") set(OPENSSL_OS_COMPILER "android-arm64") elseif(ANDROID_ABI STREQUAL "x86") set(OPENSSL_OS_COMPILER "android-x86") elseif(ANDROID_ABI STREQUAL "x86_64") set(OPENSSL_OS_COMPILER "android-x86_64") endif() set(OPENSSL_CONFIG_EXTRA_ARGS "-D__ANDROID_API__=${ANDROID_NATIVE_API_LEVEL}") get_filename_component(ANDROID_NDK_BIN_PATH "${CMAKE_C_COMPILER}" DIRECTORY) set(OPENSSL_BUILD_ENV "ANDROID_NDK_HOME=${ANDROID_NDK}" "PATH=${ANDROID_NDK_BIN_PATH}:$ENV{PATH}") else() if(UNIX AND NOT APPLE AND CMAKE_SIZEOF_VOID_P STREQUAL "8") set(OPENSSL_OS_COMPILER "linux-x86_64") endif() endif() if(NOT OPENSSL_OS_COMPILER) message(FATAL_ERROR "Failed to match OPENSSL_OS_COMPILER") endif() find_program(MAKE_EXE NAMES gmake make) ExternalProject_Add(OpenSSL-ExternalProject URL https://www.openssl.org/source/openssl-1.1.1s.tar.gz URL_HASH SHA256=c5ac01e760ee6ff0dab61d6b2bbd30146724d063eb322180c6f18a6f74e4b6aa INSTALL_DIR "${OPENSSL_INSTALL_DIR}" CONFIGURE_COMMAND ${CMAKE_COMMAND} -E env ${OPENSSL_BUILD_ENV} "/Configure" "--prefix=" no-shared ${OPENSSL_CONFIG_EXTRA_ARGS} "${OPENSSL_OS_COMPILER}" BUILD_COMMAND ${CMAKE_COMMAND} -E env ${OPENSSL_BUILD_ENV} "${MAKE_EXE}" -j4 build_libs INSTALL_COMMAND ${CMAKE_COMMAND} -E env ${OPENSSL_BUILD_ENV} "${MAKE_EXE}" install_dev) add_library(OpenSSL_Crypto INTERFACE) add_dependencies(OpenSSL_Crypto OpenSSL-ExternalProject) if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.13.0") target_link_directories(OpenSSL_Crypto INTERFACE "${OPENSSL_INSTALL_DIR}/lib") else() link_directories("${OPENSSL_INSTALL_DIR}/lib") endif() target_link_libraries(OpenSSL_Crypto INTERFACE crypto) target_include_directories(OpenSSL_Crypto INTERFACE "${OPENSSL_INSTALL_DIR}/include") chiaki-v2.2.0/cmake/switch.cmake000066400000000000000000000041661447035777400165450ustar00rootroot00000000000000 # Find DEVKITPRO set(DEVKITPRO "$ENV{DEVKITPRO}" CACHE PATH "Path to DevKitPro") if(NOT DEVKITPRO) message(FATAL_ERROR "Please set DEVKITPRO env before calling cmake. https://devkitpro.org/wiki/Getting_Started") endif() # include devkitpro toolchain include("${DEVKITPRO}/cmake/Switch.cmake") set(NSWITCH TRUE) # troubleshoot message(STATUS "CMAKE_FIND_ROOT_PATH = ${CMAKE_FIND_ROOT_PATH}") message(STATUS "PKG_CONFIG_EXECUTABLE = ${PKG_CONFIG_EXECUTABLE}") message(STATUS "CMAKE_EXE_LINKER_FLAGS = ${CMAKE_EXE_LINKER_FLAGS}") get_property(include_directories DIRECTORY PROPERTY INCLUDE_DIRECTORIES) message(STATUS "INCLUDE_DIRECTORIES = ${include_directories}") message(STATUS "CMAKE_C_COMPILER = ${CMAKE_C_COMPILER}") message(STATUS "CMAKE_CXX_COMPILER = ${CMAKE_CXX_COMPILER}") find_program(ELF2NRO elf2nro ${DEVKITPRO}/tools/bin) if (ELF2NRO) message(STATUS "elf2nro: ${ELF2NRO} - found") else() message(WARNING "elf2nro - not found") endif() find_program(NACPTOOL nacptool ${DEVKITPRO}/tools/bin) if (NACPTOOL) message(STATUS "nacptool: ${NACPTOOL} - found") else() message(WARNING "nacptool - not found") endif() function(__add_nacp target APP_TITLE APP_AUTHOR APP_VERSION) set(__NACP_COMMAND ${NACPTOOL} --create ${APP_TITLE} ${APP_AUTHOR} ${APP_VERSION} ${CMAKE_CURRENT_BINARY_DIR}/${target}) add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${target} COMMAND ${__NACP_COMMAND} WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} VERBATIM ) endfunction() function(add_nro_target output_name target title author version icon romfs) if(NOT ${output_name}.nacp) __add_nacp(${output_name}.nacp ${title} ${author} ${version}) endif() add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${output_name}.nro COMMAND ${ELF2NRO} $ ${CMAKE_CURRENT_BINARY_DIR}/${output_name}.nro --icon=${icon} --nacp=${CMAKE_CURRENT_BINARY_DIR}/${output_name}.nacp --romfsdir=${romfs} DEPENDS ${target} ${CMAKE_CURRENT_BINARY_DIR}/${output_name}.nacp VERBATIM ) add_custom_target(${output_name}_nro ALL SOURCES ${CMAKE_CURRENT_BINARY_DIR}/${output_name}.nro) endfunction() set(CMAKE_USE_SYSTEM_ENVIRONMENT_PATH OFF) chiaki-v2.2.0/doc/000077500000000000000000000000001447035777400137205ustar00rootroot00000000000000chiaki-v2.2.0/doc/platform-build.md000066400000000000000000000022061447035777400171630ustar00rootroot00000000000000 # Platform-specific build instructions ## Fedora On Fedora, build dependencies can be installed via: ``` sudo dnf install cmake make qt5-qtmultimedia-devel qt5-qtsvg-devel qt5-qtbase-gui ffmpeg-devel opus-devel openssl-devel python3-protobuf protobuf-c protobuf-devel qt5-rpm-macros SDL2-devel libevdev-devel systemd-devel ``` Then, Chiaki builds just like any other CMake project: ``` git submodule update --init mkdir build && cd build cmake .. make ``` In order to utilize hardware decoding, necessary VA-API component needs to be installed separately depending on your GPU. For example on Fedora: * **Intel**: `libva-intel-driver`(majority laptop and desktop) OR `libva-intel-hybrid-driver`(most netbook with Atom processor) * **AMD**: Already part of default installation * **Nvidia**: `libva-vdpau-driver` ## Windows Windows support is reduced to the absolute minimum for maintainability. Official Windows builds are done on AppVeyor within MSYS2 using this script, which can also work as a template for building locally: [scripts/appveyor.sh](../scripts/appveyor.sh). Other methods of building may work, but will not be officially supported. chiaki-v2.2.0/gui/000077500000000000000000000000001447035777400137375ustar00rootroot00000000000000chiaki-v2.2.0/gui/CMakeLists.txt000066400000000000000000000056631447035777400165110ustar00rootroot00000000000000 set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) find_package(Qt5 REQUIRED COMPONENTS Core Widgets Gui Concurrent Multimedia OpenGL Svg) if(APPLE) find_package(Qt5 REQUIRED COMPONENTS MacExtras) endif() if(WIN32) add_definitions(-DWIN32_LEAN_AND_MEAN) endif() set(RESOURCE_FILES "") if(APPLE) list(APPEND RESOURCE_FILES "chiaki.icns") endif() add_executable(chiaki WIN32 ${RESOURCE_FILES} include/exception.h src/main.cpp include/streamwindow.h src/streamwindow.cpp include/mainwindow.h src/mainwindow.cpp include/dynamicgridwidget.h src/dynamicgridwidget.cpp include/serveritemwidget.h src/serveritemwidget.cpp include/discoverymanager.h src/discoverymanager.cpp include/streamsession.h src/streamsession.cpp include/sessionlog.h src/sessionlog.cpp include/avopenglwidget.h src/avopenglwidget.cpp include/avopenglframeuploader.h src/avopenglframeuploader.cpp include/servericonwidget.h src/servericonwidget.cpp include/settings.h src/settings.cpp include/registdialog.h src/registdialog.cpp include/host.h src/host.cpp include/settingskeycapturedialog.h src/settingskeycapturedialog.cpp include/settingsdialog.h src/settingsdialog.cpp include/manualhostdialog.h src/manualhostdialog.cpp res/resources.qrc include/controllermanager.h src/controllermanager.cpp include/loginpindialog.h src/loginpindialog.cpp) target_include_directories(chiaki PRIVATE include) target_link_libraries(chiaki chiaki-lib) if(CHIAKI_ENABLE_CLI) add_definitions(-DCHIAKI_ENABLE_CLI) target_link_libraries(chiaki chiaki-cli-lib) endif() target_link_libraries(chiaki Qt5::Core Qt5::Widgets Qt5::Gui Qt5::Concurrent Qt5::Multimedia Qt5::OpenGL Qt5::Svg) target_link_libraries(chiaki SDL2::SDL2) if(APPLE) target_link_libraries(chiaki Qt5::MacExtras) target_compile_definitions(chiaki PRIVATE CHIAKI_GUI_ENABLE_QT_MACEXTRAS) endif() if(CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER) target_compile_definitions(chiaki PRIVATE CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER) endif() if(CHIAKI_ENABLE_SETSU) target_link_libraries(chiaki setsu) target_compile_definitions(chiaki PRIVATE CHIAKI_GUI_ENABLE_SETSU) endif() if(NOT CHIAKI_ENABLE_FFMPEG_DECODER) message(FATAL_ERROR "Chiaki GUI requires CHIAKI_ENABLE_FFMPEG_DECODER=ON") endif() set_target_properties(chiaki PROPERTIES MACOSX_BUNDLE TRUE MACOSX_BUNDLE_INFO_PLIST "${CMAKE_CURRENT_SOURCE_DIR}/MacOSXBundleInfo.plist.in" MACOSX_BUNDLE_BUNDLE_NAME Chiaki MACOSX_BUNDLE_BUNDLE_VERSION ${CHIAKI_VERSION} MACOSX_BUNDLE_COPYRIGHT "thestr4ng3r (AGPLv3)" MACOSX_BUNDLE_GUI_IDENTIFIER "org.chiaki.chiaki" MACOSX_BUNDLE_ICON_FILE chiaki.icns RESOURCE "${RESOURCE_FILES}") install(TARGETS chiaki RUNTIME DESTINATION bin BUNDLE DESTINATION bin) install(FILES chiaki.desktop DESTINATION share/applications) install(FILES chiaki.png DESTINATION share/icons/hicolor/512x512/apps) install(FILES re.chiaki.Chiaki.appdata.xml DESTINATION share/metainfo) chiaki-v2.2.0/gui/MacOSXBundleInfo.plist.in000066400000000000000000000021231447035777400204570ustar00rootroot00000000000000 CFBundleDevelopmentRegion English CFBundleExecutable ${MACOSX_BUNDLE_EXECUTABLE_NAME} CFBundleGetInfoString ${MACOSX_BUNDLE_INFO_STRING} CFBundleIconFile ${MACOSX_BUNDLE_ICON_FILE} CFBundleIdentifier ${MACOSX_BUNDLE_GUI_IDENTIFIER} CFBundleInfoDictionaryVersion 6.0 CFBundleName ${MACOSX_BUNDLE_BUNDLE_NAME} CFBundlePackageType APPL CFBundleShortVersionString ${MACOSX_BUNDLE_BUNDLE_VERSION} CFBundleVersion ${MACOSX_BUNDLE_BUNDLE_VERSION} CSResourcesFileMapped NSHumanReadableCopyright ${MACOSX_BUNDLE_COPYRIGHT} NSHighResolutionCapable chiaki-v2.2.0/gui/chiaki.desktop000066400000000000000000000001751447035777400165650ustar00rootroot00000000000000[Desktop Entry] Type=Application Name=Chiaki Comment=PlayStation Remote Play Client Exec=chiaki Icon=chiaki Categories=Game; chiaki-v2.2.0/gui/chiaki.icns000066400000000000000000013062721447035777400160600ustar00rootroot00000000000000icnsŒºic12å‰PNG  IHDR@@úù­sRGB®ÎéDeXIfMM*‡i  @ @FQB°GIDATxí] |MÇ÷?sï{ÙCHˆAhEPû®Òþ,µ´¨½Š*JÕR´”*j«­öV«-¥*ö}IBc'‰%”DB"ËËúÞ½óÿÎ}ymù‹[Åï—ó>yóî½sgΜ9÷ls憨 )PHB R …(¤@!þç(Àž÷ˆÓçü‹ÉDl‘DM”^”dôa xKJQß”&°Lò`}h ½Kö<‘Õ¦$`|†|èOÜÓŠ^¦X"¾‹êR"Î{S‡ò«K·PÞ¥:d@é‚ë©(ƒÉ8JNy[Âu‰T*в)…ã^¢ÛFÅP:¡,޲<ceP^¥ãTJÃ#Œ<Ñì^:¥]÷¡ ¢lVŽŸàéË¿¥!l%9K Õ9ò:rÕà}øhÔ_MAŽM¿ m='È›OˆPr}eé§í1W%—NLt Vã­A£JÄI%6zøÍc iu÷oO ¨ ó÷ñ!]ÈÛí,!{òpúœÒ)‹d›prÙ¢RCr =1¶]CK¥±Ú$Ú±MÚ„*t@;¯g´óL+qŠí7Ÿ§ÃZid‹´’H—[æUdiô¼¿Æ*Fj¡sÞ %Øì)(—ƒcQÊ$Ž9eñ7µzŒf{#ª¶§x°^ªšHŽdGjÎ@J£Lº•M¥è;G(”"yô•ßøZAkÏW¦»|>mï­Ö1-¦ÁÉ«¤!ò@°]´ËwòÀ)Ó´ÖŸê×Sc€„Y?½Nd3ÓÖ]š@¤êÕ¼‰ëqvœ•d‘]³áÈævJ5¨4µó/ƒ'Ì…ÊM6˜X;ÞG”°'~aêëXj¾gªËg,™Ž3ÓÔwYWÖ–†4ìŠIv 'Yá*xÀ!¾ ¥™ O>’µÁøD)£ÔãÛe6¨”©nãùúöØ^^‚ês× ñé+ j¶í¾áv¾v³õ©NÉ@ÛÁ_Aý<.<6ľ–¾oä ¢RÛš7ù’(q é@ˆòŸ^¬»ô:óžÿ)5ƒØléUn„87Oô¿ý„>.U Â}bfÄŸ >Ž(CaÁÇõä!êY~gxí‹Ó£ q½‰öñ(\ò ZTê‚CÿÙÂþyDxdˆ”bç½4Õc‡ÓE"Ó ãgêì&½¥r{6m}êA=Y ×@ppOz!< Ø’ ’á7ÚÈĽ«žSBøä^×m¢l²ä¦{ĹÄ:§Á~é¬g‰Å³óßå#3@l`†Ï‡= Á[¨•yI·£6ö6=åÉÂXËfË› ‚ ГƒE5|ÂF \ˆÁ–'Öš5€AìC6„ ÝŒ‚ïáû)¥‰Ë< å|BYDî“cø|Z°‡‚°Ã¸|x>ühWãïÆ~JTG™MaKÙé¸u¥}çuË?jÖ¬á¿ZÚrbü;¯¯k?Õ:çn¥¬Q™‘ÝÚ¨Õ¡Ñ^‘Wb“Q]Õ´û_÷Yýa™h³À#ÖGê"&XÏFP-ÌÛµL=‡õ{ëõøMˉâfÄ9šª%OWç » UO¿ÃCûÚ)Q:Nä>Ò}›¼ž¨t`©’:œ/Ò³È Oû„F‘kn}áv]'l Ÿ ¾â±]M×iä+û¥ÒrýNU÷Ûv­«Ì¢cU#Ú¼ÛŸ¨^øK»Ö€^Ö ß zËíÈgÁy‹ø$êèÒʹB‘X›•[=¤_ØAÝà{ذw5ãÎZ–ë9°Äù9›$|m)J:E ‰â¯ÇÏPRˆö9Ø)Ó‡ho⾋™¿]|#zŠq QÚiîª-&²½úÿ ÷»ãƒ)dãÙÇT–È~µ]7 Θw-¯:”ú5\cÿÑ«­ýíwUZq€>õï²Xª€vŽ¨Ç ªŒ9ÀHÍ75,ƒxŽe1D€ÿþ6¯Æ ¡iºœócÙ<é7¶7qFÅr%Ò–®¶Ž_¾%€Óbçcºx<‘ƒ3˜©\U=½EEU¥Ú$¯2›ŠŽÒñç›_`©+”½?«+¯F´ç‡ý¡™ˆVu[ó…aÑ¥=—ß3â|™o9ðNV¾¿f}J ѯ«6Õ0¼DÔ…u®íXeŸÎ~ŽáhýŠ“p^ ¦áZ0IH°ì1ýbö:PK¾Áo™ÜV·ž²ª¯ulé8U×h¿Á‡V!ß à±Î¶—Ã0HN‡ÌþÉ#«Çò@ž£î.R‘vS+ƒ~ø£‰~é¶Ô”Úa¢:NÉé@ôÅï_ÖNÆ“Ybm‰óRO¢±«?Î.2ƒ¨Å/Í&Û-E0/Ãe¶n34VÎI I-Ç?ÀÄ¥©³i/T@kǺºW‰Ú¦V³ 2Þ0^åˆNO¶Ëù”híÄu¿¦ ZÒmYpª §Ÿtž# õ+áøÐç-à"w_°Ø2MèÚæ8ègµ_¥%çë[;ÍßSj,]`hpK¹´y€U¡çQ¦´ìðtïŸ7Mka\\9•üJЦ™;íÙè†jb þ‘­g?R ¢Ô˜´u&Ñ®»Gd÷!ªÓ à¶ê]ò5ùgDoÇ†Äædí<¶ç«lG°Hf\0¤¼Éñäó…|5ã8ø8Ü” 2ʽUv¦<™¨Ù‚&&Û-Dm6·’l+Á›jó*½O´ûý½å²GÕ ~y¦ÇåÃÊq$ ßËÐe ão›ä‘Çô\np‚ÕC’îͪfÚ»`Eùó.½VTÖ¿êŸ5Z»âñ¾à}vO¢’7fV%@͸€·²Ð‘€Ž6lÎ¥„¤½½‡¹9ó›B"ÀðÖúÏï—ÑléH•X9±ðÿ¦¹ˆyTb;máI¸iVåj~;³^ÕÄ‚—ú¯Â‡«G5smã©×5²™g“)ÍÄ“% ¶¹xзUplïÃÞQú·†²B®ƒ³&î>ÌC)áAM?Ú9¥¬2KH/Åk„0¿bÓ'Øw!rnëü+»þ¿×—§ÏÐf_þž †¼•˜ce0%1Å…ã¸RóŠË¤ß‰\·¹xuöïTU"ªE$D‘éÎ}ÙY0À\u²ÒíìçÇ470¿hZ&þ3iyEu¹tÖÍ.z›!„ëVÊí"ÄWwjô¸_Bä·ŸG¬Ç1øA"îqIml³Åùp‘T]°d/5—YœõƬ2€Ý[ö-¥¡˜€tqÌ…ùñdÞVM×òPžÎþ¤ktŒª= ° Ê{p-°SÔäÒ\ؼ§`â¾Q„¿/-²…û¶ýÚŽ9ˈÂË^˜«~orפ·maèÃmlŒJúŽÖŠgÕeƒ‹Akç-`žŒöfðT‚m€ˆ{5KŸù*‡ÑPÈ:Ê2d}Â7-«²bMvI¨¤â~½¥©D½Â{γð8ÔÐl‰Ë›PèC‚k(K¤r¸¼’n²¹¬Š”Bã­Ì*ØOr˜-w…ÈŒQ&𮬯JËÕýr'¾‚סõèà(Ü¿§ îGõ/•z«ñÖ½OÎXšo;ƒWß¹ÈÔ€èÆÇ7¶ª`„³†sCäùDnc¥ÕÀw³zìI\ÇÍcÜ-µˆ¹5þY˜ÌrBú\#â g3Ï%©è'äûÐ SO¢ëÛþL—šÖ{M–`ƒ”è^b»ˆ~`JÒþÙÐ3úÍ.¨;y–Ú•ýÆ{ñÜÿ*#H Ðk6B`y‚U×ê^§Nx`Üå3ì{–ȳx/eƒ¼…sFÓ© 8þ¶æ>åÙÅ^È}’ä½ÒwBÔL:tXiÿÔ¥4õØ çL¿a1•¶Øm}Ít’¨zÙêCDP®)ÖDã6Úþ$nÖ2E )§|ÎR‘d²%kë2ãØ(§ &h_Ä+. xlxHgú¶R‹Žò^LÈ4Uä@d‰»Ÿ ¯¢Š6ÎZܤ¬‚M6›U/¤É\â! óFýE\5o°ÊÜS­¯ #£w§rÔš¯çöê×ÔK æå «€Hµˆ– À2™Aèô¤VIQ´ƒ(¨ò¶‰Ê Øn?›^¢V~Kr$ˆâàbÁ”ÍðäȾH2!ƒÿ8Ù¡PfhÆ™¬-¶æM‰û¯(·ÀüäNÂ&‰p Ê]Ñ.äš„~‹KE¿¦OL—A·íU£oV®Ù9ò‡m°§è ºÙs§G²5îÇÃÊ1?œËc¸¬N¥zÓX:–øEJ„j0h^`•X=6 Ë*Pv¬$¥b²³;Wö•ë!ÖQGûŸ… ÀP`ZÐý¤^Xî¡ÐmG»ð˜߈îÂïG £®pØ|f#¬î¤¾w—À ­W¶µTçùµõÉqÿy¬˜Jêp^DxÐyÖ˜‹óÊT%\<Ã[n‹äôã–TMà#¯”‰E Ø»"ÒÅõгG;*ˆT¶»ýz]6÷¯PhÊ'W•<¨¯'9Ç|éˆ`Dé=ù¨²˜8ËÂTÌ*{%³vZËKyƒU{ÁÈÏ£¨¿€@ŠËîwáðpÝ ½§ú.Îo¦¶"&ýÔÁù{µººG°Â†½~¢ï!ŠGä8Âê ¹‰\_s·rUÈú‰‰9Xù ÊàiTþ G€Äå=—¦Âä›ù‚#ÚKõ“Ó“c…ñwpÝÁö¢}v܆öh9-בðÒEà‘s('”pdžï6¼©9¶¯ÒbÑ¿!mÖXùzÏVRu‘@bšlŒæ%aÿQ¹‰Œ-¦ •HÞ§UZ³µµ¶ÈS«g™ˆÙÏ q†Ml5{‰š"¥I÷8 ‡£…«a0 8*–jÀ#Tq ¹žÙÀ«–8~AøBÁ ¾¸(ð€ß`žœÄª ðâËù:~—ì2“~¥]$±YPDIÖ;´Šw…Fáñ”DÉ'©“Db_(µÌeƒàÀg#ÍFsc‚ŸÍ2êL¬.%0X›°ÛOADó®Ð-ù:'2rD»nÌU«Ÿ—Q—Ël0$T½ÍïhtQ…åò ÁŠ ÿÛêz-ad;Œóm·X«´‚ùò« €dŒbÚݶBÀô"ñ¢2¢Ù¡ùþЦ!ýäNsšñ)B~my Ãx"ùõßÁÞÝ «õ‰½yõÊ„hÏž‰³¿6 FÜ1éëþ³¡{#ÓQBv!UïTêJÙYHDÑ•÷õÃjó¥•,FžüŒë`°®œ Ç1kÕ¸´¡C@÷¿hðâ2@¦_7kxßCôF˜ŸMÝD=>¬Ó¸E51 êjVʸ²Ûœ¿ÿ˜è´.ö•«ŸˆU”·æ=Mj8?£¢^½7½Žúâ¾I×Ú¤u+êÃã/ŽÄ’ya›ö}¸p¹ÃyôK9줭þ3€d†{ß×\ê5§ ' ¬„"»N¹PO¨ýnü{õUwè(FéóîR>À\ïáEmþŠúž(±ÊWÅuª­ÆL´OëW\zÁº Ð9g‰a;|Z%gVDcŽß‚1 XÖ‘,%æð1‘4ßgiÇR>fcó6« ï“ÿ o€)+W£ÏÉÈæÑ70ªÒ̸`ª«üSÀ*èöë.‹e_}ý;ذx²`ÄþCÃ+`›ËеYö‹À1¹¢”jÊÁ(|ØVUÃ?6h¥µ/s½¿îËmÇÒ®¥K¿ÖZ+à×­r¹ÿ Ò~"›†e×Ó|9AgQWÄb(õ}n–¯ÅênŽíåµ1^3í"Œ4é:ò”?…Æÿålj"g'dÝ€7ÀŒt UÖ—„e'°ù¨ã1RŸÐæF }üø·ûBÑî fÏÜÐÏ!ôÓ·÷2¡Öu°ZçÙ\¿`•¤ÑòBzbõ±Ûý”i4ö÷ßàh.WµÑ=/×ǬìÙ¬¾È%ü嫳C6£Ü|v]°`M±D#l”á¬1\5±lˆÕ« @½ÕDGÖÇ„Gbât¹º$b n¹ÏÂ&èF¶ìVn¿oâXàñƒuHeWDØ‚t§ò?X7ꊽv=k.œ©pü=_S0×ÀÃ^ÁFô:°A|€MüÇŒìêbŽu˜B3Ëþãâ~*æzìÜûrX‘üÛ_ôó‚O¼eƒL¤à)q~CÍ*T‹ò_”²’µÑ›W§!ï¬ë;Wn«ºØ~n;Y3Ø{…Wd<¬‹çsMƒÃZ‰(fÖÕïmaL«7Åà½(Öõæl>€DØ*¢ù㦶S›ΗŽö\)²­r$vQ¹éåGdcâùX>Œzþ]¿Àüª忀€dÑìH~ŽÙÿüsjº‹eqU¤Ô‹µá‡€U0¥˜v‰íÙÆ‘Æ/x%:«8+ýÕT¾R)¥Žc×Ðr)’»ùnžÃ¥eX¾ƒz(ë™ìƒ:mM˜Kôm·Å^žñšZ›Ž3o /͆Ñ;éýù Ô›Û©mÂbÜw¥lLFêµ4%kŒ^ŠÆÁ .xP Ï9ò'µ:öILQþP~C(»*óš#_Ø ÍóFÛ*d–ÌÈPÞEnñ鬎üoÈCøÛÊ?Ϋ2ZÀOÂDÌÊ»ƒçv%WT³åj(^+GK7’‡·–Õ9sÁ}8ûÀÅbïÜzõ’ê»$E½—šMHZ]ºBí£ºãò.îC_¡Þý*ã¹ ìÞŽYª*@ åQ™¤öâ=$[@YرáÞú÷Ye€ä“>P>AbI‘¤ÕÊ4¾D]¤NT§Ǩ³ù' "ú´rd€Ü‘rož-bö¶vN ŒºN#ßZ| Õ%ògǪ¨”I¡Çùu]ŠÝº€zïØÅwƒ 6êx&Œ§#ˆB…Tà‡°Zd>y«-ø]crâÍÛMgø`›omŽÓ& ëbÛ b•böE§ç Å2h÷çrz+AJ”ú¡²6£vÓú±–x__ødIWÿ mGÅQÄ.½•3#üÒÅ1~> GxòÞãËé ÐùÊnÅ_{Ù£xßT_Lp[àýž2•‡§ÿxtÜþÁ³”µÞžšêéWkø[e€Ë«"š÷ƒÃ4Pí<Ã<â=ø^Súͧ!/=?þµ5Lžõõ\QÏKs/‚*hÚ¶….A¨•¼D×j¸ªòsøq©nXä \ï$¼H³h²1…ó…‰1 ¢—˜¸©Zª|÷<dT3§ÕÞs×_V sWF3‘à•«@­øeU6ÆLvèìô½XE äX-ÓFKÏø«Ý‚û#˜N ?«û͵7‚äbÊ# ¡_Hƒ—´8AÁ³\›„ï¤Bg÷ͪ.¸öxN«•%¼a‰M9¿ Uaø> ¬2€åæèÛ|MJ0lËIAŠo¸RÔ¡xòM]º*µ¡zŽ[ñîÞ+dyÈ‚²µ6þ= ,‚< ©`ÛpwÕŽÎdîJ>}÷Åö¼k\i˜(½âhb~ÒõóÍ[füØ8y®×§^yWñöØ^ÆÛÆöâ;Éa }ã7ï€) Öò‹3³V1qL¢îØ, ÝŸÝQŠž—ÚDÆž=žÓé\ñì°¬6ÊJ\/“û'ê>òÍ3Z}¼Í#*Á>ö3õú­˜šÑ |¥q›ÓKðª*ªÕ†aM¡NbÉ5õ…¡!J¾$^Æ;¨Š\Rí;ß©C·Íl>æTz››Þ#+„Hû°"šOЂ ù¬«U;AÉmƒQ»g~õ“ïÖ!¶ë?þ©¨£§sIZRS‡ £#4U`NÔz”¦ ë>Œ–¥¬±ˆìÃkÉøÓàN£Ï‡îodk:ß­÷Gl¢»Ýøð¨²uKnö°†î½öÈ `¿Á±^lN™Ó¢~Rñ/j._lçÕeª‹:=$ÿ‡mnÛªTÏõG>ƒFj]ýW$OßK´õȲ÷q„Ù)5†åDÓ©»5Â=OŽTÓ†÷þäPï?²ö®­U¤›K8ÝR›¥þ”\U¼/ ¿ðÈ `i¸þ´–¤Xì†Ûû³ÚÕ>êˆkBmÞ8þ¥n5v³w>u°if7ˆy—XzOá¦@1ˆMJ6¢¦áV¾,‹MŽâu × ¶KÜ”3,û}w7!jǹí|Çô¡“޾÷aŽë"‡FM_•å‹ékv}³±¦2üÑðØ `éêÝéãeÄ~ê¶t¨rÕÉkd´eºôζ5~eóÕËi\ÑH*éWQre­±gµ;ŸÃ?‘7Š¢³ÂŠ5¯¾[Zû,-ª²ÜOÄSØpd^¡ãËcO#'wÀÔÚt÷¢Ë¹Na9œfÌÿàÓŽ&ÿŸ:}TéK]í´N“æ ²7ù=>Ýž˜,]½RzvŸ×¡ì´~f¤Å+:ž.¥òÒHïÓ÷‰ÔˆŠ[–Ÿ‘·Ž\².§üäGe²ì PŠ$³ûjªCåX3·¶t‡žòN¾tS¼C!ŠÇý®úÂT“r3Ý öå¢<D)ÈÉÈ’‚4œõ$ ©BÙ‰#ÕSe2#Í) Æ_qÝŒŒH£Yeõ¾x¶V½Ïƒã2¾ÏÆr©ùÈÔÍ’ŸÔ_ý]¡dÂï¾ì}õ96Jý>Š¥x.‰EᯠQ›Ô$êLä¦o曬ùÉjêÅ÷‘3žwçCx…ÑêI{)˜?Oã{™L²žŠ“/IÆT† ±¢ÉÙè8]ár’¹Slì<FÛ¢·RîOˆD—èetçõh=•ŒÛ$ÓBþXîn:ÄGéçeýQÚ29 efRÊ4 ÒÓ4iÂb"ómsgÞˆº;ärÈ/uõšNóØFªTÊ“*°Ô§ZtfT¡‚+OyX¾B£ÉŸ²§_OtGrôàèHäìdDe¤Ó·Ã·rÒ-ÇûCø1:²H-W"Õ¡ËŠA®SŸßüF–;»¶}÷ÿžþxŸí­ØRÛ½¿¿O|þ_¿Ûž±GúÇrEâ»ß×ÏöHmdûÝ–Ú¾ÿc~‚yþýþ>ñD>f¼q¿í7ñÞ‰”Q 0X%ËsÔ{ÌæHJÆ7q)“)Ì1%î(=£hJ ÝËÏÓCzq¥ýüÄ¥Ù§ÐÒ3œŽÑlºve‰rGHaáÓÙ V¹WËòD_rz°ZÒ[ýÇÛ[׈ˆõæåã;¡Ïá1|„´K§ÓM`e‹¹³PZÅ>j×ü2 h^³²/+áK.̃y»õÃ`5`Öi®vÑDG³¦èNâÚ–þ‘?vØßÿ¦}Îøü¾—[ƒ…AF,MˆÔö½–b›Hæq<*1„"(Š‚ï”¥ƒt…6îúŒW¥Q´q“"ï–ß寮eß²‰´Ê|%«Aï1£}Ƈâ5ü=4ü-C]‡ÞNÊ?ú#H‰¡ñù¨­oPî>žÏŠ8²$Ö™P‘ÚÓôIÇˬ(å B¹|1Ì ˜•çª\ˆËb ÿÕÌ’¡ZªU&C ‚E²K5¬ÕÞÎoCfxòrýHë(`K~^ž_ç¾i2,~˜qôµFúqއôy°O§éŸÍ-ùŸ•Èð üGÓ÷cNcü¶Sšól.sôÍôy¥ðn™#³%ŸV¤Ú¬ U*üƒ]!^Ü[Æ4샀=Mè;„¬(ÒKü0] Q¸ åƒô‘÷É1¼Åw9¥­ÒϬPìÌPÿg‰y‰Jøæ©±`…ú\†ú“áÀ­…Ï»=Hä·Èï˜kk"ÓIÓ)%Ùÿsݺ1l÷´¾ô5-a³»( ó"/G2s“ªËP°j•ùÏ  gBÖ$Šãq”`M“i_°5Ÿr[ù…Ï[ÌñŠþ¨®^pý³Â†$”$*ü‰ï¢2:†œok်DE£ŠÉEvScÓâÏtNº>ÒÑÅ]ØZ¶ƒ ©·b™¼·„*Ðk"}ÆéIÿõšˆƒE— Âćñ¾|ÝÙ'Ê2å=>å£aÎý × O/lzÙ9bI<”ÕŒÙ>\Ð ýAKwpbþ¿ž‰J,½6{+ì[ý’rDn]¢¿Þ¨– /oEÙ4¸ZS’±1&Dû?SÒ¥?ŽZ 4^EÀžbËs,ŸD«®1o•÷*y{—s=ëpÊÐýB–+s¯}z–¨Æ©Ò£¾¯õê£iy•n  âŽÊÅüQúž}'÷têQ?Ú4C»¿ÃN‡žúÆ«²²8æLß×›©®éÅ^¹úi¼m6àˆÎ[‹§©ç¾3½oÚ-·éæg˜c0Iﶸ^ãê´°«DuÖT¸ºêƒ´o\º1€&1>öÅ6n_s3¥´K¬›É½³C™Å‡¥ãÒ~Ó³¥*ê <´?í{…Vbê! v‰v”ÑÊ8^a‹WR…ÄdSJ³®’®ƒ´":Á?нäW—S¯Ø×Í)ÍÀqßËÅ{ #z'´Ì*݈BK¤d¹×n‡nšn§ôü«>TÖeþó1ó 42bï@èB`p)ÈYä¥÷ø¡•Æ•˜¸,dvÀA‡êu}Hß•moÒ²_Ò®ÉiÎ^|”Üþ“î°–-dÜ+ûÏá´Â©’>q{¦@«?­Ð ˜ØÆ¥ºkÚáù×% ƒA°7T?y‘§ºd€ˆ(~‰Ã?ÁðâñO¤&0@mÑ 2¹’›º$¨ÀóÑ¢'GRŽ%ç3Wmý•óL—š†Ý¶•èß+ ?&Ƹ׋ؿíiÆ‚N>têŠmÓ\ç½ð–Ê5Ñ,© ~ÞjÝ»ÐòÿôIiÕpGpH‹=žý[žZ%Øê[‡ÕvêReV’JÁ°l›Âª«éçäƒfùð\t"`-¥)Ç6§Ò‰÷ƒ™)Ñ,>¶fÄò±0S&)H:J q=[šÄj }“ žÌ#è&žªŒç°‹àµp×<ÃcT†a5S«]Z>öEÀ–,Ø-sŸ¾ÂçÖÊ·Âw¨š-Ì'Ñe•)°ôÕ<ï~;Ö¾U¹§ˆ®Íùð²DßFöIªU¦‰«¯›Ÿaò®0Ð-ɾÈÕ‰b)&CÏü‹sb…¨ Ø÷e«¤E„.}ÂúSEì^3Æs´o@„›‚D™!Ê=šõx®i.ÑóºÏ%sm¢ÈöQW”~🙔x®2¤”lg%‡¢ÆöÃÏ¥¸ûQ)‚ȧœÏR Hü/çJÒƒäõÍ㥟?¢ÈÙô»‰<~qï % ‘Òj‚|Î+Á´Œ¡,m«o6ÍÞ­ý»i&,AHb— ë /Wç§ÃÝ?bl^nû·ÛîdJ™Ù#ÞÁL6ùò¨¹;Z=Y– MHœ²Øa­á…îçÉ’7œq %Íp3¿¬zUbÅ‹’*K…áA@JOùSZƒvtyZØ †v.ñüŒäD§œÉ‘|èf®[aèÖ L‘ž!)¹!ßNï*à ÐÌÖ¼ŒI1sãŸõ¬K‚JT¯ëÂÿ3>k/5%äc¸¥ßÊvaÀ¯ö(/‰r7ôoª/~S¶ì:Gl‹¾3¥ÆIgèTJG–ZëPÈs¿GK Ï+ÁC ˆ_P® ɳ æ2Öež©¥ÙUüòº?Wóbßáî?Þù]K™òvºÛ¼ïv;¾9aålWêWhÈù²á ®÷ò8Û´ü› Öðl×l_Ëòðéô!=á!<Ö®Ux½Ìm¢¼U”–.JGYM ÜJ,_Itcûõ¦åDÛŸÎOÀ¶Í‘Çdž&—'zVôY˜y+–ìLÇxo0ŠR † ‹ÅyðJ ž“ÿ@O‘zr‚íÆ|Ÿ iMÈbðÁ?ñ‚/ÃÙœîâŸèþ¼üÔÈìcž/Šì¹CÁ#⻈‹)—‰‚_nŸ’D´aÈæœñ@Jn)>Àá:Qs}Ó+.¨G}}=îì âBYç耿¥ÈtõèÉûq\ƒíXtø¨Q:"“ù3wô›ëÒfrlp¾íÝí=Æåj–?°àsÏãè8v&»3€œ›ø´Ã„7»C2/ó”=e-)¶*ó²ÊQ´.žêÁ <ýH‹7œ>†Ï8I±ÒsVÊÚ9ûš0£þdÚX/Þ›(0rw¥ÄÑpyör”‡ú «ÀṟÀÄv ­ÌÊÒx<ß^êF0c‡z •NeÿÉ×W 'û¾ìŽ: Ô¬qÞÕD4W×/ÙLÌ#¥¾ ÷§ì5>ƒðN±bO(yPÎþ°Š2Ì CèÏò: üáï(X&®I*€È0.ÇR #iZÒx^ ’HÙóJò!¢‹‚f§¬ Úòl›”p‹¨ÛËÎÍÝ €!Ä×ÍæÉù½siæ †¨èèò±Ø¯áƒFé‚€/Í1Xv…>+XÔ½GÃôŠAÞ›Y¿œ`Œ&Ú³^Ì^™{øxVt@‡y}þ%Ö2÷}#ïÌ>6Ú¥³«‹áôLOÌ‚ÙÔà¶™×^ù«|­Ÿmc›„’Î\Ñü}NtðúáÏ’°_Úõ»RqEˆîüx÷¸¿Óú‹Â`T:h€ž—Ï—Ò—ɳ– q€]Cõ¨j]³cFÞ\|¤C;ø4ú1]1ÄÐ8ç6‚!ÃEýF¶ã.@šO³¼6©ÊCÞlã%$ŽúrGø™QÊÙÎÁ¢¿ˆ6(`4#]5C"¸t©Z :ÌiÏ3 R ¼3áî‡æwÁ&%(¸–¥d!¹(å”ZpS!ç|ÎÁDãñ ';cæï?¢o ¾Ïw2¯Nÿ ÷5W:ÑyÔöäÁGÒáQ á=Kšc~ùùíüm¼Æ,ýfl±Ò¦ò#|6]sšnwc»1€ùî+ê®$:ÑêÈñ§ÇÚͼôe½ µ=/8vÑåëЂ_ƒÐ‹™^ÄzSOÂLhºhŠçý‰¾¾¢y|!¢UÖ,NÀ€NˆL(Ë1“JŸJ…’¸«X»û/ñ¿¢ƒ.£é𯋷a`…6òsšM”ÿ›ü§õy±¤o㘟a óšˆ1óiœ•î¡•ÕY5!ê³´ z¢‘l8‚– ~êà0…:Ñ@þ‘ýyÔ*×YCqŸÔµ¥Ò°O± Æð"º…ÀÅ%—.Á ¶­Üq8q*–Z/ÏL7v’Bb¿„ç¶JëÔçº*„¤U´nÑú+DwŒä †QÞ·ÜN0Á0 C£tBòcED® cgã}¹Çža+wT¹v»]LÅÙÕFd’¸¢y×Ú—¶:¤~åô©Ÿ¥%ǹºŠÄ ‘}œsMOÎöJóhyÁŠèÞ³øeÜÓ†Ÿã¡ö*ýïóå­Y UYÏfÑ"_&%Ï J.”<‡CbÂO¹¶vug pßÔÏi2Qçƒ]‹Ã™ã~þöúD èú¬ÖûÄ»ó“té~Š—Eúˆ#ˆ8z®ä(GÏŠñQàÝs4¦¸R ´s¢#˜ Á$d½º Pʡێ]€ŸÜ—°ÁD^Ù=»KÝw³qê<ØBÔ«>@”}E=K³H¢†úÉŽuÀ_ªéª‚áÞ<õU $Ž••WLèJtåÅÕª¦ûxn&p‡Ò1.W\Q%׉ä̱d€ïÚfFF:îÅO!Õ(]@,Ï i²w ¤äëVºY…]ÙÆx¯®›½ÖÅÜ}ÑÑÄbÀd7àÓµ«/:X¶'Ù „Èš[ÊÂ6ññÙËñû|†ÒÂî]º(´ÔéFf>Q¬ýõIú¬ÔЍO¯e.˜áŸOÝ-/#ºírg‹ Œê£"g¸af­—»Î"GèôôÇkkþ‡*wñV¶°5XSܰ¸|1”…=nŽ7ƒQœýñ2Br¸æw}¤ óYýgŠŒ™<6gì „,#ãxÓxÞ ùÜãˆÂøûQw€¾„ȾÚéc–@ä½Ðû–ô͆è×U([ÞdÀ’ªò¤Š…°-øEž8–¬:Ëí9NpìC·‰Å5ÈçX¨Œsé±úúD+F¬šž0K›Ï…¥ì‚ªÃðñK÷žDåRÊFëo€­U"04H÷Óõ}¤[GÈ çáùq¼Ïýl.7e;ãŸÅÓ±·ï ׿˜D§AT´Ú’¤æ_»pQAZ8’èè¼ µÇ/¾#ÜUd¬çGm¥`IÇ®{l¤ÑÑÓ›x"OŒ@Ú$­F8 «~\ÁOú q9‡ˆWÎ[IW"re(ôô$EJO…¡Ot§˜C|8ÑáuGª¦ „j L !3ï7¿4c ÇWŠŸÊ…Ö}.Íçh§äDz°|h­XzÑÿ!=P•b;åSüóÇV "t ¼!I‰ë¸3Çû×ÓwgÝôKß8„¥wVÔ(á€òZgkYʸÔú’_ë1ãKã¤Ð+%aQì4SÊñ”8À££!så=(&8?é!Ièºè!,*!²ÍzÈó‹Ýúr×èïð´l‡+›•|PÒÖšïÇ]hs +1¶qѽß0PïB—É?ÿÝn€¨JþJ]w8Ì9Á²4EðÍîêø[ˆžq0ý;Ýi*jRâ”Fˆ KÙ’³ ay1Siæ‰r“’ƒ˜ø=þ¹0°9wâì“Ñò¯VNœFt~Ä… ¦èê˜zRS Àë’7¼°–§òbMÇSCØø‘¾¾>Ž0ƒ;_tžÆ ú;Îpì-D~éŽ*Š©½é}a'\)¹ /‡Ô˜@’g*ß°œ¨ß`e)¡¼¸ÿB§Œ"Ú¼ùÇä;`@aG±6l5¬åqÇÁD]œ:=w^ŒY£«O’ÆbhèI+‰Šl*üH't¥x5žíÙÇ¿K#0¥;ŽXpêP ™•ä:<Ñ_3pvÛ»ô7c+f£oìU?»2€u¥Ýºçkªzƒ™ëA¤/Êg£ÃDsR òÂL—Ñ+©Ê°k-^HG>±^hÓ±-A)xßDØ×ÖÐ*¢B®…ëkUôªpD?ò â=õá°äÛ£4 »›Ýα•x¾«4^˜ ïñëˆyø ªOÒƒ„‡÷ͱØïo~yº¢_PÙË Í§ÀB?Ú~ªŠò ةÆ}ŸgÕé¤aN0ïJÓN(ù&Ž+âÖLØ=_5a ·W#°¥ °5PDQÔ(ã BÚ ìk¾ž‡é\u‹¤õäã9](†ËT±_5íʼ³ ƒGK3(ܵÖÇ7ù]]'ÖŠo‡-üÑ ïí—eSEòyÐÞcÆÖ…êò.˜™?M &¿ôc#“ Û ‹ "y•Ò•ý “¡Û|Úz·c% üËåÔ€2¯·W3èïI —n0,1øX¨!9P7>Vü„Í¿{ˆmOÔƒ}ŠÄÞ¥Ól²¯Z­Š>'Q;¯¶÷9$‡Ç žLP~ :pû`cn$¥ì•"¾ïùø‚²3û ÅË 2Ö0@|:2L7¬åuPÞšª ~Ô1û Õ(c"`]‚ñ‹Ø«¹E½™ ì9O»¶T+ÛML-ö!»­û„€Cýå§{‹;6zÓoÎÍ.ƒv½-ß@Å?üžaÉjŸÀ&°±Â4×|É|W,]¾Í½¼Lòeôî­l|¨ûw]×;v"z¯w“‡hñ}܃„ÈÛüÛPswçYq” ø'ÚkÛoo0àw²mB'À@ K‰_ s¬¾°¨©š"_ŽÖü°$Ü-b /º_[Æõòû+ž'C¤¿íx箓k¿ Ÿºø•õ/]MÅÍÅÒA([ðÏnoù¿.Ù|*£¬hwsÞJ]„m¢-ê’P/¼æÿƒdÓÁ„B7–ˆ3e6¾ŒKj=qx…Ãù­/ÿ™ÑŠÈâÔFÆn]âW°æÞŽ÷G|êž=_7—_Äb}\M¬12òðÿ gkÈQæÂôbÆOJôBlŠ~™O&Ês"?lÿ0"¡EÇkâ¹x>u ;bØþ º¬üû º››Ñ>î«ø«”ZÿýYº³zx~:ÿLˆ}¯Cò„fùJµ¤ TÊÆ„øš02¦ð‡á1ÛSž‚y¦À‹@œÍs^­O, ­3Ò"¾ˆMbÄöjd¨± é>Ô­<=‚ÄRÈà̺£ýTÀàþë1(ìXò¾éc+¬ÎÿÞzãä+<€M*Ó«,3ZKðøÖçæÞóh?M×vðß*bí_‚2, Þ`Å„'quwÝé2F˜ »ùæÝÍŠ`¦Ÿ¬|À7গÖ R¦ºúXŸú]bùÙn© Pú]«v=»ùB¢ÍÜ»PXø Oú$Þ± ¼ƒ[³¡xn!_ôgÞ‘ü®v9YN‰Ë—­¢>y³ç½Á £>Õ”-8@ ?Ø\ÿ#±0È4Ö Žª…ãL¡ì\´¬wÊ6¢&I—èC°Í¹·‚YÿÝ¢¯,–\п ̼¬ÎqŽl/ű [4Ú ÄÛìî…YÊ•WÑÕæySa™&äâç¾-€µ!¶„´M§¶&6¯APô©–€æÃ¦<‚EÛÕËô9ÑÞûû«›0µnøî öùTš¦ÇR@È«óÈø’ÀÊâŸÚêaKiÆnIßKë̯;ÀY ¢«-¯ÅšÁ¨v­ÙÓÚøíô—ù@(ºr—^&AY*EIc(/ºÇi:c‘Ò·úi^zNì—¹ Ôr|.¯"ǧw1«°Ôã×wœjÕ²›`©!Áz1¯«‡2ŠÀ^äÅ‹™àmeÿyÛš··®¹õï˜nV+sbŒèÇŒó¢üŽ*}L#±v)k’>Âx®CÇPÚNˆ}ªðüKÎ4cMÅbÆxÒÔV ´£P §éÚçL³€Ãg'&_†vgÛŽÕï$*^°ø$©ºGcù=DþkÎJy1ØÝÐþ(E¹#5†O)4ÉÔÒú2…¬™ªdg@°ƒù3µ×{ò‡0ˆ¨úŸ#«¼KvÛŸ»vA‡‡µzØÀ°oy/LðκrÂVÿÄâ“ýäoO æÖ:¹fÄ9¥~’Ü1CNâã„éï['[—<ºiëŽýÚg·š(7ÑNדíeˆþzGÝRÕðêLØj~ ¸,Ø}ÉA·H"ÎŒ`õ¶J]ÝŠXZýW(?ˆcœÀ¼6/‚…³`DûíÕ|{3€&ì}ö5o _ÍÃh }n 9 ZÕöÚ«E%_ë‡ä,Á|ÞçŒR œJ:,˘ùØ)vTpzæË¼ÅÎ|dXdIìPà²Àó¦=˜ ·{áí>Ü‹w¨"b¿E•cå0{“i›¹¿è¾v]ºŽÈN‘Ÿr0<]v]VÑ.v–Î!óay& šœZn‘ûÀb±j3,,H)­pá%‰¼ úÌüÄ B“#&ÊÆäÀßc˜"TêmMS=±3`ÍàëÀ èÒ>U9Žú?Ææ¶Ë2=yÃç]–G"üö÷÷ÞÜûDÆLø¼Ç‹•¼:úói±ê袮øˆÕeï@Ô£#ï;ªä‚‰ožÖ dH Eû¹€ c q€5 z2¼Hl[òôeçÅîupƒ`G;…#ÁGwÈó1à@íXL_ˆ> —F ž÷1ˆc ï]¼/‹Ü†”—¼1‘‡¯jªA‘ªRS<”‰‰÷‚«&Þ•~â›à¥²]m,z†}ÈÎ €zÂå¦,-sl87Ðw0{¹ #àÌKV妴—íûûO‚žääE!Ãe=/×@³¯C§+t9®Âd»¿µÔLpþ—áa âþ=>{ÎȘ9 ½,ôˆ Hwà>%$€'ø'žÏ¨ä%ŸR.Fv—Ù³M>„våû—ÄÌ_VrU}!,'êý†Ãm´íÚï ‰\Þ—7šC?ñïæÂî"¿>¼¹j/`Û/ϨíÓz†µ‡îù^©ú«~‚+ i²7(W–Xþqè2ëðô÷»pÎÄ € ƒ¿ÀÎÿ¼ƒy•.|z=™‡H¾$­”¶©k[_Õâ··j9HŠØdX:À{oÌáòf¢7[^+¡|>y± Å Ààƒ,c‰Ä6FöRz"ÚýðÞ£6¼Úxx¨ŒY »ÿã3;Ú¶Dm´mÈöÜnà‚™ïq÷'žÂ kÿœƒ(åˆz¾ìñTúOT†=ÚÍ“U+ 5‹Ìø‡fÅT `4…A"⪕¨jo@0{íÁƒñâF#æ ´d4ºAfd¶}†¼À¡ÕBÇs(õö®Ý×^™‹ö¯ä›Å¾>óc~êÜo•}·¶0Wš-~¶ýÙ.á­·¿ô¾% ÞRßã}bhd¨Óª}@lCÑC]¹¯6‡öïï²?áHéÙòg#…«Ô º}!óXïûµÝ¶~X,Š%ÓXUÀ joó}Ïà ËŸEˆ5ß{¾K¶ iPÅïŽÚÚñ†©'‚`Ütq$ìMv/‚æ0ósÞƒŠ«¶ïwù-ðòÌGÖYz_ê*¶9ï:òƒpã}pñA,o‡þ…5¿ØÎ+ª¾Þ¿n¿§e a¾'Dâ}J(ÃhpSwᜳ~Îzb&…{rÕb.½%ãZ.-%üèg.Ø÷¡}köS ü¤a4J]í{ZÛmc”DÀ¦;ˆ”^­ÈƒÚÂH˜¯?ò®]B§v׳sh÷Je*üU>Ì÷m»†[O¡; RÓŒc´#ÙŸ|D[`7ÈTn ½ t¬ 3At+(VjáeÑ€v?Ù3•c&”óÉýE‡Õ×$VòMÖŽÍNKÇ# 92›@”þúP~8ŠÐú}+Dl:E›UoJ«©ò_ghç_lkyŒ ¶{×þÑ)$4ä:LŸíø\´L¡Úü{bű†$ ¯“K Ig÷£=sE Œ†…¬Ê@ïiÞg)'ÈÈ•Yò÷Mýó; ñ…‰4ÿãø©6€ê¢òÏoÓoíÎÐMóhÐ:òCìÁne0áõÍ0´ZêIK÷ø­åÄ@¿ûîÝ;h)IK%uàÿQäÿ›RYn‚Ï ^^tô½Ý÷9ˆHBïktD¸+ûö](ˆrˆù›¬ìú³T_ÄPÆ’§Uè(¡ýØ;c¯·ˆ‹ ÌC`´0¾Ü¬°Àô¿Ÿz‹z—zŸ”Ó‚ÛÝñwŸ!Š"ß|"ŽÆîHÍV„W£²ŸS€ÕÒÐöø[ŸÛ€?ÐC·ÁÞdw°`ê‚´ÎhÓ]^¨[‘ØÕµX8Û»mi“¿U›Ï7ÒZQàå—ÕÈBææábKõ¤zÿª"V†!™¥d1€”0K,fœ½q‰Éçn¶‘b€ñF¼»u€ý«bÞô!DµÏ.bX­ð/Ŷ߃;Ɖ ª’,}¢*;ÿ!ã³Õ‡Õ®QðœoþJä¿vÿ›„=ÁÕ ×\„¯kŽ!"(!“m*{ÁG ùjb4¶Ìņ)TÇö#»3€=ù÷.‘mغ*Ç6BPÎL @8ú º#'ä?nÌaÒ tÜ_ÝÅÿ‚XYa/‡l‚”…Ií©Y§æR ü>«ÄÌê¦.þEΩôH¼%Ê;ÇŠˆöJcuCEûQoèðU’ÿUIVKBi"ìá‘ïãy¿…n?JTÝÉ'ZqG‘ÿ*ÿŒúÎÀîx¿ÃåÏ©.Ô¦ÏPÑ¥öcñvgº"ºb­* ×V׬)àØÿ®KdÔWfßzÙ¼K ƒaˆÔ¤[õšÂ´}ëõW¹«AÈÕSç-[w;¤~Ro•Áˆñž:9ÿU Ò÷{‹íSŠBƒ"C‚Ø‘2÷´#PZÖ™dÆ·ªµICà5ÐÀk¥Ý¦!Ð@f|«Z›4^¼&PÚm™dÆ·ªµICà5ÐÀk¥Ý¦!°»@fÍ.mÒcƒ¶ô|ÝPãø¿Ç¿G€pq‚’ùOÃd›±K,ö‰ëQA‚Ÿ=;Äú³i¸v‡å=¨FHÂ)µH‰ÿq¨LŸàõ· Á«à­ƒ€èבŠúÿÙtâˆ_`M»Yo¸Îd.A•q-ꟙ÷óÑÄ·4AÞByß¡ ÄÇ?- ˆ:¹>rðqŽ3œÞ¡¨d †‹ð&´Q œ`XãˆÉwdøÝÇÏ1Mþ?ŠÃÊG"uƒSnj:‘ÄÁ WØ<ž§¡Â»Ïý´c gÔGßZ×Ze:ʼnӉ%G°3ô.>ŸNÐXì®5$£¦}Ê`ùÚU'ª¦M¿>¡}H4 ÿY‘Je†RÑ ¯ù§:I4ãxcÿ.ùÁféÖèºà‰06>ÿÛ“ºµì¬÷ØËž‡<„“Ì(‡]mÖ,‡]òSË”`sqIßîÓO| ßÏ×ãpSƒÎ±ÑÌè&!]û Šñþgó]€q^7>I©ò»RšÃ©ŒÉt\®%Ãv|ó½÷ס]gK…̸ƒvêtÒŠ?~—ƒö1 Ð@€ü:Eð–ôŸŠ™µ–c'W¢’~­ò`F5DêàO]éâ+~]ÙHDê8GcLrO˜Z÷ 1Ä  ‡"fäÔ¦‡ˆÉ‡|%/©º(§ÀجGý˜£XJ×|ÛEa|‡<ö•BŸ²º`Í-M+Ñ®¬Ž÷œ ± {ÄqéphÒÑœWî×.Ò¤èZ¤dÙù)„ÌÂÀÆ™‚ež¸Sù\)¨>q‘úý“Òt¸ ¿ÕøB|Å£¨;RAAª“<"¦lQÎKµÜmâh3|Z® j=_©U`¨7ÆŠÐ^8ay Àmc±p£i†ôý£Iaé‹¿Vº†@º" 1€t…_+\C }°?øm³‡ÛÏ«9}AÔJ×x[°?¨Š]ßÀ#N{MÍ}é·q­Þ»3f`^t»Ø8î@Sûd W¯UECÀþá”X ©*v°ƒqüSÕr-³†sÖz“†À[ˆ€½%€h– ›A÷q.®§&¼…ýC«r&GÀÞv$G–ÂÈ]p88¢Åjô—Xd#g°JoÜ£§Š–¸¸¬²8;éYƒWž£†¸v âˆ#‹mx‹/z‡½t-"_añ¯³– K?P¼¤‡w½Z?VD}õ´Tm‡h—¨/¢é‚T2Ä{3€§΢ù ú–Æs7c q,œJ4zœ–Ï«ñP~˜È¸Nž`Z»žêÔ[œ±Ç ¾ô;S[]Qe›CsY%»¹,²ú6÷£‘Šs j¾šuª\ gÑ[vÀõç”;RyÇ<Ö<—Í¡¦ËHoóVJýßJb]©·xÛÆÓòsÔ¿ ÆýÇø½-Ú9E½/ê·»µOé…€½À-œþ~ŠöÁÕÅBÛœY éÕÜŒ[®n1ë#%ºô<×£w‰zÚ¼&ÁRGÉpÂ`ž­ð[ýÙ–“-#Š´(^)ãÌñ¦Çø=˜µamþH9(ßo÷¿ñ§1ˆÔ|S š·š àèºm¼DäÕÁ9§+|¸?ŸÉûÿ®”ŽPû¢ÞÊ%^£Ww¿p A»tåØSÑN0œ˜¨Qz#`oÍ6°Ãؘîë‚]€‰jƒ5ðÿÞ;Ëʱ}D‘eÇ5":4,xÕÕâ¸Í ç( Ûþ‚°¢ø½ää‹áÝ ÂMreßQ<’ÚIp]ga€‚¸ªtU?¾ùôj¾æG¼‚rÎwz²(x ©@ùx_äïN«^q[‚¾¨wÚ¡+ËzHL RÛ©n ¿yµ´Þ;3Æ~`ëèŽýŒ~' ¾a­3ãã18A0Ä?¾m˜ 1Ò!} š®ÞS’²[KÝÿkù²%_f-GGÒt >`îp TïJþõÞW?„©—ëŒóêÚUú" Ù¹øPx|M¡ Ô a*Ô%€¦²3äZö¯€½@< eCøQþ¢Â8h†@¯ÿb´;5Ò{3€Ö gÅžáÍ ôÑi -^©V††Àë#`gEð­85WÂæV ŒŠ bùh¬V-ûɯ_OíÎ?" Î JÁ °®@€ 6žMÂi²Â.À«uû‘¡ÁP.ŸÁ§‘?йˆžRÍ×#u0×c±ŒÓyeÞDëp!ÞìHöfO\æ¸\P¶ðÅ|CIÓOô¹Ê^ÕiÛ±‰™4këÀ7777dqœô†äÂ8HœXwÖKÕ¾‹¡‚A¤  0¾¯ïÏ)Ö)ô¡¿§åÂA0l÷iô†ÒÕvM/ì™E¼av÷¸½Àµ¡QŸÌ|:ÏëÙß;аÕé†Hqö.õïZ ~g®, Ƕaldu}>¢o? ÎþÑóžÏ¦8€!Hk¤­ô=j¿7aho0ð•J;˜öPŽQ9üŒØÎë·pPÑÐIDÞ뽚W1ÄóŠT;›ÞMÈIyD0׸ ÑQæòtíCqêü *e¯jÙ{(†äû:ÿËäÚJÿ¬ƒ²/4F3²Ê´Ý€7z§,e£žÈbý@w‰Â„uÑO#à&¿Â°Ô[b^Är@"èËЋ_à‹aRD†9†y0Që íœ"NUÙU50¶%ò­Mƒi8@8…Uhô†0_DK†U”_ø.ù$BÁÂ& ÿK¼a¶ù¸½@ŠÜYÊÛR \H¾ [ðwÑq}5ð—ïãõð²®ôK³¦0µ¦:_Öû> 3ðåø ®!O”:–Çã–æ’N¢aÈöŸ. ¬"¿RBÉE£0à‹T;W•¨î–ú壞BD­¡ŒQU ^¼ lëÕ7‘3^¿Ý™ý΂0ãßQ:Ñ=ÄaÆ;ýb¯fÛ›ȼ;µ€ÐZšÀ)§hŸH~HÅ×yŠ­ 9{:ç‘'µïßqÝ˼D÷zÝ­ì”B:úÅT‡þX|!-!˜ÃÃü?‡ªð%"ÿhåCêGä×ÍÏ×%_û¥ /ó£œSÎ䡸ý¤R öD“ÈL5J-rS>!IñRñ©•sÛ­a˜Û ô)˜”˜ùlSî¨.]1MRµ Zf?Œ ÁÓW\á¶mz»éíÍ®òiJaå€l¦U¼œ´ ,„õ Dˆ·Šde¨ü´²Hl Ö=Ò`aäM8ýpÙ×í ÑéR';xÎÄ’¤®*mÛˆ¶*ˆs|ÄÌŸ]q¤YDU·VŸû%òYÝ@ í>Ï­,ãѸ¹+/?” ÿSŽ°åª¥ÿ/æ-Ü­yse77+!xü þ««­šÕëÜogÀW(¸ŽŸ—ð“tn®=© œ‚Õ&Ù­Q¯ÓðÌzïÏ}ó†ËׯÍIÝ:ÎyQN‚ï-rFw ›ÿrªÃ , FHS©ÿWR¾T¦Ñ@"ß-ÙÇ1ó·7vÌöîÇ.÷]—›#ÁÖÉã ÞÝ#:òëcÚ‡ÔF@Ç/ ÖÊ?æy”YhoU·$©ÿ×Î €¾Qn+ÇùFÓ‡¼"ÿ^9‚4b-ÁУRÓW-õyÛsT²Êí„w^Á¬…ž&üLÔb}ë/×­nóýì\ïA”ß.ofÙÑJt6Aú:úÖÛO-¦µ~þr-žû¹Pç„xM«å¶ðä Añ–{µ¿v@À&QER¸°˜•*²dZ/P¢ZÜÆª¤vÉöf§äÓæ±Êð”¾| õ”S;6ž¯ÀÖf¨¢LölR¦·/?>ÈŠîðÀÌ_vÃØp(¯®¿<Í­Ñ9Ï3²Wµ]ª$ViV•q±Ø=¨ÿSÃõábÀ—àø¤åyqUäŸ(ä 솀\§K°µ$y‹¹9ÿ*y0Ê æöö*×n €«DqkêhìŸxºâÁ|°r’Ÿ…×{ô%qÈ´¶°×{ý5_Þœ§¨K‚®=MÐÞ·¯ÐqÍófX¬¾—ì žÒ3±æl׫£ô¬!Dþ¶®Ÿš°P‚•3 ’€*ò å­FöE@=KE¼€ã| í7a^®tL\ º‡÷²>2µ+a7`«hJlr(÷Œë®Üá{yVó)©„˃©ÅP”¶°¡dÿTñ“ýè0DûC…oÄC)تkÛaÏÇ Ü[ü¶`…ÊÞ?˜\úàû”— ]Fiƒ€L€ÅÚ¿6ÎCä"FžÒEé÷Ì:‘Žd*¥~UìÊVLŹðJÜ!ù«˜|!o¥+šR™ÃŒ¬-@,Ö±M¥Q! ÐsÑÁXkÚÌï½k~O »2¾0áÂýûTGApþ9UaEpm5J£ÚiÅdÅ›€$Æ»so~Ú´0qMBe[F¨µ´@veyàÌP-¬¾\=²‹²PnÉwÆï‘öIÝùqwâçè(–¥1ü]n+ }}oÎ<6RVñïÅ÷؃n ‚’j”¶°TNìÿË•–ôu¢Kô‚ˆ:rîˆË¡?ÜnV¿ê€S¿±VÑ…>pÿhƒÛ€|ú®5?¼ïÚtûNÇ©ÎûXx鯴ž+ö«5ÒÐÍYg,Èø2%”7¼wcûÔB’:6ß±øæg<öÜí1oÝÀZaŸ\}ò>Ò½ãÔÞØ»”³ç£C޽œšIK7æËh2"Êk¤! !Ø ¾RÄU0ŽLù‘ò¤ï9ç£ S*FYÇQ~+HØ—I]²Û +ó‘¥¢ötù#¼;ñ˸±¾Šãõåî§lˆý槪=€fœ&/B+$ƒ!ÐÊ?Ø[„šŸº( kjtë]÷xÌÁa\­¥±ÞZÛ¼öªuIªi Ú”õrɳ‹M^»ø Ìq”õ}»Áàp‹õËÖ’öÂ;T èJ¦ÖÖŒ«ÿû^ïÉ4fŠ9¶_tµôäÀý•Œ[hÒ|bçÏšÔÞï¸Ì¹4ÎÙˆøLá «µ´Zž¼RÚ]o‚€m·«Ny†Á) ¥6­(òËÅc’©Üš¹!Ç‚(SÃJ[Š€kvQ: 2鉥}¾;¾Ê¶žœ¯ /Zt[™Ÿt‡Og…¥.ä¡;D!AiY ¥Z1vD +‚©‹Ñ6šzP ï¼âæ*åF@Ù¡Ç;ôIÌ53@nbþ‘v?ÿÀRyªkòJÖéÄp˜…JN•K¬¼HŠ.;òæœ%ŽºÙ³})§‹Tæ]ÚKA± š‚C35Òx[¦šÈ‰™?ò»—u9,¼¨àÔØ”¯†/;5çÀÇr‹«,ÍKÚkIqzFQz1kóØËR­žuÏ«ŸQc_ÏAw ûg÷ö¬—åýPº&ÿ„:¨NC"„•Fo,€ve_üˆ¸!4áîÓ-òŠ]æ}£ÝÖuø&¿é鑹–æDbIy¶´n^:3[su,Ÿ²Æv/:4X¿¹W‹†ÝÞ×Ï›zÆ-‡GgQø >”·SQ“l¨iiDÀ:ã³(~â{ “iEÈÖýM7Ï•¯LmðlfSÈ.ÅRóðI–ÔlñûO‡æd€ÓPT2l·¤¾åºù>¥§º1ÍGw)/ÅŒýÆ£u–çlTÉ1´¾Sïy$ŽÃiÊBíO:!`SîùˆãS@“ êcT%”õ¦5÷"öµÙ|_n?ûå·Óg{˜Wí=l©ehUKjüÈ’ÒYkšæIFa¶†·³|p˜oI}6¿çö~#)°r›SûeÓ=z÷CÎ ìëÚ»¥fÒ,rÐ}Í¿äãÔ{5…¡ C-M ¬ŸõbÃEq¼1/LŠq5´)ÿê\¯ŸZ]LéµÀ{KÁä“Ö˜~/E4LPŠú > îrúRFc64ºZ>8ÄYRïöE*•ÎËJ®ÙëÊðãÒ‘N5‹º”Áž·ßî¸ÔÙHþ¾•éŽQ-¶#®½h•3[2Ðþj¤u©…º;5€©ñ\Êz ª\êFUûÙ´æ“ÞòÀ’.ß>[ŸvӪ㊰.qSŠ[+1+u*óæ¹dT`kY%˽uÔcŽnƒ~ åÈQ£uœÝ¯tºá„Ö¥Þí“ýù¦æµZ9Lw\†crÎã,?ÕÉb¶­|Ä睊` iü~,·è)lMW{Œ©×¦MÓ))~lظgãèÄ™rGóïÚÄm¬¾±ëwG—3ÍS†$%Ð9ü¦RÌTKjÊo-n·5Í0IFg6 `--H².9[×NYʸßöêF5sœnV©SvV³\‡ªÑ ~`7PŽM¹?¤RU¼s¹Þ%C.³îk™ÊS3ꤾÐã´Ke‡¡¥ üR¯_Â7A ’h W"¢ úM¢øsòÿ¿ýÿߨiþ%ÞWÿÿ·–olßëÅæÈI FOˆH-ÎÞ!V”•QûAj®¦õvK¼±ËXãYå¢<ˆtæZÉ¿$Õ¦”ç“BG=ÍE.||~ßÑõ¼öÁÛ;ëöòýçD\xÙžv<³.Y#­|‚«’ò¹%EüË J6˜2hõþ²Zã-¿è…ÐrÝhI=uSô%ÉÁ»[™~U+ÑôÜu«•¬·ˆÍ/ñyÍÅݨ@©çYuÙg“¡Ð(—D·PÒå¸m¨éЀôž¹u;t5ÉìÔ_š)]%£!‚β’uƒÙ(6ÎJa¹P[í …­'µúZfò$oµlƒ¾Y„Ô²t8Ûµ¥bÚß7E@œi(Èh $gcÌ"¸¬ 0z¢2î`º¥^ÑIõzŸŒt B¡ rOY ›¦o”~ò2$™²s»:é@ÂKJyÑ1rJX-2WzPâvI ¹^ø—zGÊòq×{\8y¢<~ÔÅTÁèE 1jsÙ’&XE|Ó0Ë5Œ}Þz[Àá=`ùB¿Æ’:ùZRW«Å¡«ECKn¿x„eÙONóEq¡ÒYüü] ô§ÒÞ¿øäõK$'¯œžÞqç¹Ì%Úõ2¥¸vqHvÆÎÏ « 3 A ÕUÖ&Å0UŠ–†×Y~X.*RëFB*ÙDÙÌ/ ÙDúémÈBaUþ¨,ÄR5íïë!àJ8­€d¾œ¾†Ö„¦ð!H›ò@‹N4’‡óýÄ”‚¼¨¼Ž$¹”l‚d>jša\E:㎔¶ÉdHê”p‰*Ç‹žEn±Ã/½xNJtÿ'‹t¡‘Yþrg ]Šz52¬0%Äô§c´»÷a–J&غÕ%ɺ†7[¤CúõðηÎV%³0€?v¦–/˜eËôVm«ï9¶°¤Á¢’¡€%Õ[w!ô+,׺K*Y¿—‚,×ì]kjí lŽåš¬ßãˆg •±¦™gkóÒ,¹m-É2ËãtË5·J„¼ õú˜%U„wHÙcIåRÖtš%5í°¦Ñ–Ôh5Ä1®³^µ¤r}Kª”µ¤dýÝzõ'ÿµŽéi}WÖì¡HXcË÷ÒÇ–”Y`@m•$kÇ`V†@3-ß‹Óô1+ƒ@g e±¦–åõBKÞkQÖôª5ÝfIy€õzªõÚËšFXRå õúkëµõ=r+#àB Èv‡•Á[¾Ôþjhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhd,þª»&·`AIEND®B`‚ic13ˆ¡‰PNG  IHDR ât%sRGB®ÎéDeXIfMM*‡i   gêI@IDATxì]|E³{—!tB ½÷Þ¥Šô"EzQ¥)"¢€ÒD‘"  ˆÒ;Ò«ô^¡C ÒËÝÎ÷ŸÍ" @.yÃÌíÞîìÌæöõ7D\F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`¤‹€Hº]ãž%EÂÚHùiO¢ØÝ¶òÆVêéÞÐò½°hë(”Vñ–J½‰Ú({”qѸªç³¨“إͣrâuòÓÜÉjÑ-Š2QAÚ§ÍÁÙê”S,ÒÒ‹¼"“(L¨°ð§"Ñd71Ð)–6Éßi eÁ™IZ&ò@m'«ùýƒÔŠ–ø&u*J×HŠÁ¢&¹ã8-Õ3/•d3k ížÀå'ÄÏè?Ñ\áf¶h'çïB’†ó:¥¦pœë*ŠQ‘( ›W¸_])(ŽÂPߣERÎ%È‚ãû䇿êû„'$äEÕB¤Çéªb¹ù½jG ýÂ}òÕ–ª½Õ¢V¢¸ù½±«‰ŽJ̶/êTr²þâUyHÐ 6‡!MôÔ¸ÝÕ|Ê27yâ®-2ù½:Ÿ0‚bpF£›hQPK¹sK"?MÃÕj¨³ g7Ì7æAN¦l˜‡)x®£»xžºNàŸªu\ç…º³ÌAipºˆ,ˆ#ÕNÂóž¤ÖÏ]ºJÞ˜³Ñrà8˜fáš„ç úSI臻ZOTT–¡º¸ì}™Ñ|ŽŽYu®¨Ìu,Å…¥]2\f¦åç²9Î]ýåºDÛål#-Ý– é¶Nci ÌkŸ§UÃE>ûz%ê錢äO†X"—7梧QÕ÷gm™‡;½²÷+Ÿß~—¨âŒC¿PØsaþç²ü‡Kø+WFà’%8ë;¥—ájÚ÷ˆl­ìëìÛÅxZ¥M1^ˆ"­øÚ·H®ÒM¡ŒÔ…Šfø€ÖÐt1C3zŸQ¯ô@ˆ,”ÙχŽÐ:Z“Z¶¼T*õ1Ñä¬qªyøV#«çfW™Í}ýFÇä÷ÕxaÆ‘¥/H›FÒò¾"µþšI‚cõmxÁº“Eä©0ÖâÉ/g ½b¾¨Ñ]ö ¬DqB˜:T»àx¡z:¾W¯ß‹Í|QëTß$™õ<æõâ¸(àȹú'òƒ(…j¿9ÚUd_•„ve6ÛK§ifí!$|m’ õ1R*Â`ˆ]æ÷w5«Ù޲;®3þhI=ÏW¬ÆAµ’ŽïÁV¨"ŠXÑßì÷}-¿ã¾& ß›ì€ã£KT^&®50ñð3"Ìñèò\Bï…go¬¢0cTB-G;Fçí¨uW°jf;iŒ0¡ðs§æŽï9WÅK*ÆÑ&ÅÞÆóÔuvr<Ïl]p/G;›gÜäW¸J•??ÏŽÕ®ÞÁF¨¹îl²­yMytñ6ד›œgþ4F_ó~ž&qHü‹Ч3²<]¦Py×8©ú)üŒixŽ”‘ö5¸×Ù†›øÝ³éTŽ ŠœqëE0•9cjšç£c6ÊÝøí¨I»ðoKXFz‰JQî°hŒ¤¥¾wVЧÔ;ä ü® Љà±t¿¤¼wÆá9?Ê·çÑR9žÒß+eô3öÉÓ‘ëâšëoéÅÖÖsw²Ä| ž¹\†›c>xô`ù¬ë#À €‹ÏáÍæÑ[‡‚ãŒ=5l ùš]ä#¿NžÝ„‡ˆëý‰aÔOÎNLÅ‹!_ÑuT2Q®BHši¹÷B²ÉB©ý'R:¼&5¿¼8R“›÷(¼~ì äë ™YȪuÁ‹Lߪæ S;Uþiõ¨ºóõþ yV÷8ŸÕ±’míâã?–zî£nt>ïQß=xîßÚu¶ã¬¼÷ÁÏÿÖŽóÚÄjÇÙ^R¯k¼ÿÖŽçús?\ÿ×vþë|>NûŠáTýSm;ÛwöG;?ã£ù½úm8Ï9kõ݃åÁóv\-¡ƒŠÇ/+J–Åg0¯qý¡¥Š"#²8°æ÷GRÝ!ûMo°#`Mƒâh=tA§u9J± '†Ê·h-ži/'ÉÓ²Ò¥þ±%â¢ìóÂsêoihùåŒgÝîþo8?ØGþœ¤p.½$Õ)îÌ_¸}!vA#ûØKJáîvؽ’èn¾°‹â¢_‰8z“Þ ºÕ2RMü•W¡€BßBÉJi3Ö*Ö‡¼ÜÛœëžr㥒0÷ê5¡^ ’‰zÉ$¼Fx™È>ãÊ?ýµ«|†`^y§Coö&Ãù»Wµ:¯=ð&P}¶“]*f<Œ¢Éf;öàݾû]¤½t윤sò[Zº/œvÓhZ²õª¬%»ËŸÌ56ØûÉý×Ý´xm¹¨itô[n)?²¼jKRFà/‹%)w6%ôí`Ù3©z#*Ü%XÖÐ-{ÛÄŒö¯5ÔÞÑΖn Kà|±§ñ-j µjå:«@ÊóPª3@Þ}ÈÛë 8{õ“v™6L‰ÚYÿŸ´§yŒŒ#ðt$Ðå¡$|Mè¦Ùž ¦MB\Ü4 …_FèÅÎtÿŽo]F½i¸œ°<¯ñ‘á%í®½üzÏó™ïÊÒ‘5Çå.LaB=Ëšñtã»fË'jér¶{o~°™(ûßo â‡v·’mñùR[i´*"þ•áâœØ.º´Û«x-*_iœ2R@êPXÒ¡Y‡|ž tÊîOÔ¾‰`ÇF@½‡”9C½‡T¹!Ñ—èí¡ãGºÓ@Og~¼kßgxËj¿¤ ý.tXLíK‡=—{–±¬“w³žó1Æ|iÞÉ^ÌS¾W¾rÕc•~"Í7Ã0.…€3ÁÍ‘„k/r=ܹ»ÍøQî“M¦¿fkfï6á¨ûê–…Án¼Q?²=QÁ¾þ7¿R¹¸<Ì<|Dû½O‰7‰ÊF4r!=LðéØñ¡ò†Z+[Çë%F,U¾±4äÕ”F¤%_77Š—¶?ÒÛ<å³ùvF€`’º#ÚÀ€ï@œq¦Ñn´ú·¡ö öXcÙàf%Ê5|Âû?ܶëHéÞ'èržbém¿OV<×Á0ð„pŸ¶]/ÿöl¢ß¾[·!°/ÍiéÞ¾y±~5ûègõ Z†±Sh M=K·‡ý^¥ÔIð’e[þ¢Í·1Œ@ÊBÀÌ^@0XÔŒ´ØH¼ý ã¤ñ½œ4ä« wjEÑ’|?xX-yìݶû½=£ {‰0ð˜]èu§æ»ˆc˜Þ/nž&K—¬"ÕôÖWõMúI­Åµ©#ü\ËfÛƒ¸ñfâV&ú‰0_Î0ŒÀC¸#©Jë¼ )oÝ+b\6öK9²^hàݬ1‡&ßôšéý¡õJ̬ïúDŒ…F–ËC€€ÿ†e¸{±/löQ›¢ÚfY6ghá'¯¹oÄjÓ´c¢ûÈÁTE4¡"~‡P3Æ$üÿ±]¾Œ`Fà?"`…>@9^ƒ¯Àí‹,a„Ëãs…_‹öy=÷ãîõ’‘“ýëz¯‡ ™¸ü3Ìü3>óÖ€ÕØW¤@ðΨ6– /g>á=ÿíµ‰Ú­Ûˆ3T]Ô ¬©~‡m?Žmûÿ&Í0Œ@b  ‚ ‘8M%*¦¨¸p#§ácœšT8ìÕ{bæ)¼®XE¾á¿Ìgåì¼ÉåÑ0ðh\(d¹Ñv`=¢Ãu¦½9FÏ]ÔZìr†ø^ý-ýôþÚôQ›©š¨E9R-¡8&ü!ŸfFàÙ" v6Q«Øhûn¼f¬5~’WǺ…^=dÄW©·û~âÑ(¦WæôýÆ^¶]qÅÖ™xhÖÑRŽÈ‡ (ÃÎQ«›ÓcÞíÿzû<»¥¼ÖéëÔMt£Ê~—¡èǶ·Ý̇Œ#À0Ïå! Óò$]ùΞÙ~Q6úxQàìs߆T»ÜÈ"¿f]`;hb¤ÚZœ‹‰3Ž… ¿s׻ɣ YÊÕ0°~­8·&î{-•箤¯èGj–­9òXa ^=Œ#À0IwäRU΂óh*¹ßÑös|û‘·†dZïñÅ8·…U'F'xý¼’\ïŸ{‡˜H€Ü¢ÈÿgÕÉv)øÞ/·†ç?ç½×»š[Ý…Ñ"¿–“¦—.²É„ÿ¹¯O~ #À0ª›áƒ•diš}izlÕXÝöSûÏü—{ÿ–®×ÎËJÃûÑrSg ÚVÚ)²¤x@þ1 ‰Nܸ:ìbTêÅŽfô÷úuú,½¥þ¦V¥Í:ä­VYùU>~èK‘?4#À¸,>Â:2šdñ­ñá¥ÃÚÇöm_.wÏtÍs||íˆb>XñGJü÷ŽWÊ’YáW*ÿBù WO[‰¢~kx0¬‹[÷ºZ#m†èÓb€¼„¯ë•·Sõ¦È5ƒfG@“Qм‹hMñ/ ñžëÓÏz½èªV[KøtàEVü_F1•A +)•ðPó<íeŠY;i·{‡ ?YZX®ˆ€~Þ4BÔ’=¬Í(B†ÃÍO•”Š‘9xþÃ0Œ€Ë"àTîûˆtx“©ßÒ‰ ÝZ–´•­˜©÷ÖW0®à(c™sx¾Ž÷'’{âLŠãÛ‹û÷ž97­zªÏr¬ÌyÀ÷ëïòêÛõK¢f‹ÖØ* þ\F€`’i)=6\'#Ö8#½w­~÷æÐÈ"- m‘#{Í™7ò*M@ÛÉmÐ?ž”&ݦSP”ÌA!Yúù_õ.Ùü„ÖA‹¢æ ÊÈ%r€,/ãáêçäÿ7þ†`FÀÕÐàø§L—ĺSihÚÏÓI]ŽˆWá­(Š 2+¢d¯ H1%ùŸÊItàËsõ¾8–%:[럤ùõS=Þ@ø—ÿLÞ–·àçÏ…`F ¹#à‡ÝY=Aêg£é• EBãîˆþºIp^™g·w?qGiªçÿÃü›l3¾¤ @Qµž ^¤ãwe®ìým«™ÚRÄÆ²‹ä›òe¦Ïh(ä~vösŸ½Ú%L±¯ùE^lBâ3åÑ&±†²âø„8D¨¦EäóÅòC ÿ”³O4þ©ù¶9vnP©EUñ$3ŨÚÊIù#§Ò=¼(ÚP¤%YaE—p¾¦|™®âø=úÉH‰ŽaÛgå3-c8^8pa’2B†ªî‰GùsŸðy7õOn¾] –ú¹ü¢Ö×UKèºÝi 8›”‡ò4}Kö%ù+oÿÝQ'vÞ“µO®]y^MszÙ;Z-ý=Q¨L^º)¯ÃîÏ%© à ·L…ðäú3h eDÝC´eˆ´êZ*Â;X¥`Ðï¶ó²èî¶ho¹»4Š 0Þ k¶ÚÀÏ7¼NøL#QäÚ¨tÆÛØÌiVÔyù,=…l­U”‡ý´=°Ÿ¸>I›J¯Y—Z?ó‰<{|*šùÔ÷Óæ¢îåcÕNù^ô¡AQèÝÏÛ_ÀwÈ«¶§ÔÚã¾ÛÖb=úYN"|/ïÀû×_Ƚ8®OÍH¥"½-o›&&ñGèQRAžûÁ¤<Ò‰ô¦&`¬ñ.5¹ôöíÉ·â"W7Ê_ôzöqSúWi¬»“o¾€äΔv0ƒ†…^x+k¯BÞé¬7§„PCцrëá¦È’ÿóÿá;½È ý $r‘^º…@àïhô2çhc2íA#r«Ñ®ºy‚Cí[ˆ.„_ôŽOCt¾É…wâ# м”'¾R»]»aƒ¤2ån€„;"Oø # QÌøØm{\Ó¸¨4Ú]al‘ ø²¦|EIðô}lZúzÓ[”ýØ V¢G¤Åh7 ù!¬í­¥ÄN0•Ý%zH>>›µíD~»ý*èße)Ÿy´>†(çÊ€¯­‰ò Íó’õ5¢ÜrùXCð},,Ó x>“´ó`4Æèý±a4õŒ–´ýX*×Ò!ÔG¡CP&™1\ç„€ú½)* 10ž(¶LôL[íO®æö-6yÎ'z!?rô¿ØäUÔГsÉ9?Û¯u›¤Is¢æ¶—äX±äkËe‹EÛ^{ aóˆdïâ‘„¦V3ë$Ö‹UJ%¯åÐR+k,5¶ É2…†¼c‡âíä›§¿‹ƒÄ~0öð7±—±ÓŒ#ùcóƒÐ¼4Å6’(ÔûÞlû8üP›ÆŽÞ œ§åeNŸ‹O• @DŠˆv‰­”ÇÃAâA¸©È.f,Œ_ÐDExÅñ‰Á~  ®/ê!Ù'!Ë—»IÈ_4⟹Oþ®|dZÊBP¿a Ð Ð^Ú¯ÂKÝ÷¹`€²zgmi9 †àãÒñ-áR`{)³'ˆïOëEÚ:~»ôž¸ªœn2 -eW¹Ç—åh­lCõ¢‡ÍÏg’V$V¾A?Àä¸?þBعûÛbÓw¯Ÿol†…ÓŠÖ¤ÿ‚J9Æ ]ò(É•è—0=–à q÷éͺcÏ{ôñô¶¤~w…Ê»矈‹×Ið½…·"ÄÚñ1•CûJÂF¹µáV/XÙik¥ížÑ½‰Ö]Â}¼ÚÉ¡qÁ`¶†ç2ŠàÂAÔ_IêÚyí ¨ÿœö êG+ Î~ª1W.œäx*(BGÙ‹ÀÈ0/ÏÀ—  ×e­;|wæ[jmBT/g<^ð)¨õ[Ícže¡I˜–m‹Ñ_¼¡^C2—,F[P_—7LM3®¼:¸ïI‘ úC¼wâ:Ç {Ã%ùÆÌùxåžÅk|=®øÁeQYÝü4‰t÷©»‘Üçxš,-´ÞhÞ'[ý Wá¿lÕ ½žåSñIñItNž¦Ð§ÆP)’¡š…µÜ¦D¾Š~QÎz7Þ¾‘Ñ>hõüu»¢ Š_9uõΨÃDk/ü_Îw¹ãkJØìµrZ>B'ÖÁæ‰8ÑTÜJ]®Ê=üƒo\<¯›ó1yÜô÷ÿ‰~6Ã=:¼öo@¯|@Òƒý€Æ‚”žB±.¯RsSÃPV”†Ž µg1Mé×%–JÞÑœ?RšãŠq_®‚¯ÀýkÑ…(G\ö ^H¯Tx9¿×Z¢ÆyFzAc’³E@‹Âoœ£|ŒÏŒ‰Ê—cQ£I<<ÍÆø#BðÙÈ?#«ýœÌpµÁù¢gƇF4¸^-¸Äç Ú3÷€)À׆Ë‘3¹ÌnÇ@Nö¼¸¨K\£Ú™ŠdYï½wñ"Pܯ{YàêÁªÿ'™mgXÜ;Ô[ÙÒ§úDw„¾bü‚ßjí°(H°Kî,­ Buþ»À)ñ LöAöÑßki4! â5ÅKÊëR«ý±ºá” ÏÑy“W–5TXž1͘GGAèÝdj„³ˆL¦é!«æ%j¶^S/Bï‚ ŽÖû‰¾P(xXo([»¾TŸ& ‘}E‚<_h*ŒO¯år0*™ã«P;D”´5–#ÑÝßí—i2êÙÆ/òPN~á{Ë­ˆî Yg‡aéÖ²[}ìwˆ®¼ú…ã»Öîz6Û'D7ß*bÇ>ã÷OÞo`€Á‰Ÿ¿A¶OïÐÛ&ÃtLÛ)*_ÅJS‚l&aþ·õèÔ4Ü¡%Û%ŒÊŠ!ÐNkû©*Qaÿ‚¬`l:ŽoÊrIöµFxnÂ8==7! ‘ìgíÁ´Ï‹€ÞCiGœíá#F€x4¢¨(AðØín+2ÿµúÑUü èñæéª'6Þ-“ÛqX}×.ÉŒ™‡ìøôVÅž~•{-ëûRÉÝKܾssÓf×/È}t˵'ë¹ô^©öQ³™’ÔµòZa¸ÛÑÕW?µðÎõš¿%óò:«FF… «e€Ðhô·Tû¢¢ç½Ð€£¿í³SÒÝ"·)IZÖ•MTØŸ,$KËk°‰wõʪ5& •c†å¼æÇ©n¡-U¯Ä=7?¢¼5òT²~¿_–U:‘T†Ï÷Ú¯p=˜ëö>ý†þ×öŠêxzüS*}¥ê‡ä,'Éo°Û¼iR]¤ sÄþ0D(Ž¡2U4Uþï@?‚ óF~óþk0%à~ãc‚<ŸÚ€®¾9Ý@¿‚ßö·ã…qþf`¤­ Ñ‘EÇNÇÕ%:úå±qÐ \|=¨ hxƈ~òu´{ì޵h-˜^nD;·c”ô„˜d©á~c}µÒXxvòÌ¡A>©VÛÏ Óëþ]‹¥za‰!yÎY ¹Ë1tõûricÍ& #ðhÀ”T7[qÛYãDÉ­Ñ I—z-ß\£_îï¸+«£Ž|t+IÿlraœœØ¥ë·®i±µ¸_©´åÖdú`u}¤þ‹È:—.Ê@ûû‡2 Qø‹ g3Ž×h3$ý‚»fÆÀ¦ÿmð´ á§à¼×çÄìx^1]LU²"F]ÿG¸Úß=Ân'ߓîýÆY¹}Œ5P̆j»vöÏ-Kˆ*½YÑê£jÊ;Ýß„kÚêÉÙ¯‰ßA ϱd´ÄÒ§ d•e-•XGŽ•ßÒÔÅeY3®'í2<àñ1þ®3OqÞ[x™¾¥¨¤Òl ùÏ*eƒ¯]¡ÞÀòÝÏž›@#pó~S#è½í|Žø>ˆNœ±;2v>pÍ·kiìøF¸_8¿ð]õ–p†Ô kY•FBìÛ(úùo¦!—Íd+ÅàUú@€rgËUÄR¨××=.¦ !zYÖ}Íc!ð®aÍ'毉Æ4°*ó¡'›žb=ð­É´ÈúáßÓwÆg²sXà…üç>ºÕ¼qµØâ÷vØ|À1hˆfÈášE¸f·ÿÒë gDº½¶3;:´}õRö¼/§:³à,ýN稓Û&Š‚ ‰¸<„€Ó™ïŠT¶ìHϨvÊf¿pÖ¢«‘`çÎÏ9ñ÷-B5î@õÒ_£Æ PÊ)NIÌ'±Z!7cuÉ¡Påã>c¥±S|Ϲž¯«Lz%ZËfHÔpw}ò#QITœé~ªûÈLt¸ÖèQú ê‚ûý‚´u4ò9^Dˆà:ÛCcHJ‡N•~foà#.ˆ3 W-X;G Ȳ§|tçæ·ŒþøíïgcG­¼¶ltìR9õ@|ðŸnôÆ}é5Mi2Äf±Ö48}1³SµïÈ`¿h„Ð&d,¼êõ“hEÔÚ­eŒ×DÝüºÌðÁë+­šyš'æå <'јc¾n–‰€Ò´)긇¶Ð5šr':¸nô‘>=‹wÈ‘ã»Í“'&`bäs`ÓÄU1J. @TÂXêžèp-o—ˆÁ_ùMw×#bDLcB™z1CÂåògÄ4ú†ÒÂÖÓ^B‘5öÈ„rá`§–®úUFÁVn›m[Bß‚½¦5Wqü®ëÞ©šVíÀhkì»òð÷¸ Tî寗Éáî çú·›{{^ ªø~ùîs`›Ÿžº’¶„q¥ÜDgQO@äûQÔAȸ¯=¶løs]ôȹúü°#†aD~ö“Ú^˜(ªKä¹ ª^ ü–”_úY44 »íÉ[¦†B£äOæ<Ô§Ú¸¯E‚‰æoM-0d(Ì[úÑe`6f(¢î‡µ¿õ(„ˆM‡¬ñ]F”¦CšKÚ\GÒn\FàDqä…€!Ã3Řv;ß­ ßÏšÐ7WÂ%±Uj žk¸O%‡"Æ¥¹žÖ×}û>·£îuõa‚h#,ž÷© m…܉—G# _­•íÙh©IŸ@Õ~:Í7ØX9ëáã?„æ°Øo†é93ä=ÜŒCŒ~«×JkõUX`±¥EÉš“¨}ã×JxÍ ª±ê¥©Að?Kå)6‚AHoäU‰rìsì™$Té Ví¨(ꎨۡ†tüŸŠÅÔC•­^|G3CÓDœé&î@W(¦¨ó&CˆXü“!TÛ?+ÆPyÿªâƒà?hÏïùØs ™If3MidF³®Au”—=í‘ûMÍÒßIæªÍG£Hny|Ñݰ+FÇ}–Ç·ôLõ*·vŸGTút©—ÝÚc‹¡{½bß'Z0ø‡Q>ØÍrý¡ªq;ll¯™ŒÙrí#èCìm¬c\öÂ-‹>P¶ÿÔS[DKøJÔqëÝœ(d„,‡º›|Ù¹0ŒÀȯECʉ×CWëj1&ß•v7º†šåÿC–9éN…Å~é¸t‡£ŽzàV—øèê @ª”ÅĶë:/-¸Ï{¯e²%\¤ÉiÅëýœ¬ˆ÷:¼Îƒ\b.^L'ãåBE:,¬~jóš.];ðžo÷÷‚ûÓ‰–½µ¢_44òš¼ Qqñ •òR„ËXfÿ J2Jw%Ý0-+QËŸ[TóD´@›–-/x]„JÿõL'´—pÝ-ئ'€p}iÏ'ob¨Ê'@iTqÖ Gþ딜DEê57PïlèÇJxÓ£_ð=0wõ‹Ù&&…¨‘iäV¤ð¼ßƨ0ÅI¡ÑgX‡ûKŒª ûU# ­/ʼn]¢°í‚í‚8JŸD@ˆ»ÿ,àSà3ÔÇWtCJß[©—j È~á~?j×qÜÝ׆Ìäà}Yk Bú;üÎE?>Cì@àÒT¶3ÃËS¦Éâ(Üõ€tü‘E±D×廪²Í°ÛÔî‚î3ÝÛÀ}‘jÅÖ(å J©€»¬ƒ13VFÇC²R )2Qß_Ÿcd.Ùµ´p_$Ñ®˜°]ÂÏ⮚WÃGfABª±¾Ú7îé‰ÞZðæn¼®¼†y]A@'§Œ÷”Æ Orѵ(¹0‰‚€¨Q„6B/%¾Ïš¥ÂÇUvd~-Í©hšZ'á! D ×*®Î@2K™"ß¿‘.į´¶X¿-NdÏê{pÏ9΢rµsù>(2ØUÃç¤÷>QÑk?õ¶xoƒw{Áàó*÷þÎs»ƒãVã‡P[«§v»ƒ„ÞF‘´2·K´Â'¶÷þž |¾ƒª?]Ù½nÞµfšÕ„„ÿ¶ýˆ¶Ñ:ÊßBç÷nˆ\W—£“æ¦<È ›ýŒý,R QHé»'Œl 4úâ [¢eNŽoHt:þl”­ Âó]‰¶ß…cßíãöÑPÝFÎGœ6ùˆ]!AjíõìCÌÝ3ËWÃCÕ©üü ¡‹½•døýOŒÞPoª$g·½n T„÷ç^ãÒHi¦K«Ý‚ÓbÝl«õ}hW`‚õUð0Ý ¾¬œóÖÉ»nŠ”¾Aº ^–¬‹2³Ì2‚¹ïž'E…ÈÃx8ç£ì‡oÉo§áPÕ¯H“OCÐyUÝ ¾e•ª®‚©ïLŽ8§Â*»fÄA1"Œ86iÌ3–«ñmSd¸óÖ¿D¿w}N",²RúüÚ´»Ì¾™¾ÂØ PÁÌ…x4÷鎊Òbµ²âRº­ÙJôóÙ›!Aðœ~±£ã¦ËŽÚ倿“J FÒ; å¨*ÚëK–­»ÑèrÅÖU-‘¥ÿòcKÛ$r¦)ì{ÿ' ôŸþ:lüú[zGªEtÖûœaATbèȰ™DA[/ͱM"jQ­™çRh°;v»ã½ ‰hf оáùÞ¾BÙþaxÙé”Ô¡¢øáN‚ï´‰¡ 'pÈõóa%§{îg‘oaÏ€æÇGǃ@oÿzgÞX¸ÞìxhFüTú°«“ìÐDDî‰ôF€'цEåÊËÅRlðIãɧ¢ÄV±IÙðh0ô©Qç@¦/Åò8 ŸÒD¨âô¶wú8Ü„žÂŽóék3uoä/„Ä-Ãe¬²©Ã$Cå%ÐÞ×Þñ<Óz‘ÿý,íµõpr\[b±ý«V½ò8÷AD%*ù–„;ý¤t94ŒšPSHÝd7*©ð<˜C.šÏû»”¾NgËœ Õ{èm`„ Ð ÷¢ŠDó·ü]õ©*DAK=!u1]1ÊûÓ…¾u±ç@…26+"ûçöo̼x$F€ø|¡×ÃïTþ.WË13ÏL;95ô½×ª×ÞY6bÉ+›%ÜmÇ›É,õµËT®Îà՝оg}·=gZüÒ°U¡nÅv¤ë·8—ÖDëKS<¢érÿ+BÄåñ° /¸ÜZ:ªoõÔû{Æ÷á½su­x6hòJ÷åpòkæ‘Y€ "ü¬ž"d¸+a—½‡Ÿæ$øºia'1óÂâzO¾ëç¯d4'ú­êÖ•±]‰Ö÷ßX9öÑ™g;Ú 9GÞ‰,'áú©pZLƒ~-Ôf™awÓÅ·ŠaÀN^©þVÉþp_ãØùˉ‚ ’¼/¿‚Ù‰ä[s<:N lÛCy=®ˆóHG=w!Ë¢ÚQ5[ºƒq¨S¬öw0V9/äPy Ä·ð¼€sž¬(k+Ý—aÔ8ú.ŒŠöªÖ€òÁtPú DÚmÊ •¿G ÷ü"› «QÚ ?ò$¦Wì‚d2Žv¸b@@½5ü~&ÉÑtPú^δ$|a¯Å•þ}Ñ™Ù1 wÚ;'ÔøÍºXq¾Æ\¬ÛÎ ŸôõÛ—+Ôzjçê¹–å©æÛwz'ú.RÕ´)p…Šãž¯Ç¨ÛOø)Â*죄ê]L“Á…ëX¼iãî,»›‰eþnW>‡ó X!–š›ý¬Ô+Bwcá͆Æ×H!¼xí˜~D+ެœS sêeµ/„¤ú«}Aàå×2)/y1YLR„ßeŠCµ/§ËÙ@Ž i¤R‰Ž´×µ6”»öó߇\~Tÿè+ù<à»ÐdA£Åx}ŒÎ±K÷¾íeG…«´K‹I¸ÿ_‡ó¡è-zªæ¢6ò ‚±’ýáôwhù€ðƒ‘§°† ǧap`¹£ŒÀsD@ƒ¾MQÉû𩉇oÔw¢ÓËtÊSlAĘ% =‰N¨±Á—‹Wg¦%àmͼ¯ÕÙF¯íé»Ü¿}¶>‹ÆÌDðFeCñ·ÁCšËÓ"à$@º€%JF9¬únÙÉ8xÃe«KK¯{©Ýë¢{DÍ–^D=7/ë¯v·…Õ¢sÁv¿øÌTóÆ #XÙÈE°vsG¢b”rÞ©úþóSþýÈ‘‰ÐÜ Ú%÷˜Þú“±ÝgŽWÑj¥’Wå‹õ!2ÂPNŸ^†bÝ õ[ð @©¦¨¡Ža8Èf3TÔÓ§­?±xžÑÞè¡4ôuW›å:3•þ ÑkZ÷õ„ÏEÃ!õ§¹7†ÓáO¾-ÕöuÆnåÌG—¬§Æów„Ü™bØù<‡†Â|‰=I¿ùF€ Q;‹dƒ’¼=2fÛW^ůç¨;æà® ÐÄÂØ¦ŠáÔ5+ï—(®Ê8ú-Ô«Å}Èè ·Ú¥v8S›,åYT‰¬Pƒ©O(ÐݹFQ¯\W,¾ ójý;}«~H„§RÛýþõ?!©Ê rÅ¡¹fŸEs¸µ¹ƒPØtå­¿¹Üo»c®Mé7}Itø¸m½0Ì~ óm­4½Â¥*Y¡`kØ¢þ 7¸rçËmµîG<{átßk»@;i•ïäLµùŽ< ù57Þ‡­&a/èx"î5KIÙF)iþýÿ˜ÌÒL (JÕŽ¢ç°TR‰ ¸çÕпŒ?g¸ ¡íòsÊ÷·¢­ö¹Ûú¸ÅöÈÖÃÅlßÀÉ1jÍúØËHøñ¾á¶fHHT$¬Œ ¤@Ú$0Jb¼ÿ½Ñ°ræ{°(\”)¡3uP¦ Ïm3Ü'ÁC3Ôó´wµ~ôÆÛiƒ`’0×û£ªÛäÏŒ#ðDÈðû ÎigÄE¯¸Ì]³Þð¾otlèaüü°3JBQ¢§KWeŠ:Pþ$u­Ô=Ý–jQV c=.b§¸t° ‡ï5!• —g€I¸¤¿œ§œäÊÖ,›J-ªw{{š'ÞçÆÌŠ:ÂW"lˆ< ÂÕJk¢œiL‚‚e¼‚à¿@ؾXöP[xÜß™KµžæÂWqgùeÖ¡PÝÏñI+ Ë’²`Ân…²­J!lÛo+§:˯# ~¤ŽÚ¢ƒãÄ)q ͨ<ƒè‡ÉUàù•âÅ(á{Â7;R­¸š¡VøÊ+5· 'ËZoMôãª%EbwÂ'Ñww£x0(±wccU ^˜âTä*0Ãe^Œó.Y‹<¾ ÅðèØ½­'LµJ× °¶Áó'Ò åT‰°ÃPŨñsag„ôrñJ“‡ôgçd%·¢éôôYÝ X>Å™±øÅB'h—cÁ]•ðMÀ[ŒóÊãíc©¯-íÄ@‘Ù£2ŸÏÆT„+V<’°ry^ÜÂ>}(ò"üÚA¨ë~QÇׄ°™™Á«ˆ&W›=tß3>µŠW7æ3Ux[Öiþé5Dk´ÿ°­Åý4lÜ–†CÜÊ"óݯikp]Fl|¶qo{yØLë „P%ç1‹§Cá8|a• „o“Q°ëvuìÖÁ­°ª+ÇWZo…f¤ø÷Å#-¢!â7ÝŽëÝÍ1›`Jèp!›ñ2èx‘Ke Ô6iK)'vñ»ÐJ¸!ÅrΧÝÞÆ÷sÄ'ò4Þ³'ùCWe  6‹_ª%¾ÇÝÆë߈ïÅìVŽVÉWåp|·›ÖvH¸ˆÿ>?d}iSOÓfkå•DÜfSËËn#`Ëþüfe£ÑO³—ü¨ýT*QñŠ¥R[{½æÙ‚ûœÂ]ôœ¸q#)‹šýˆ}Ìc¥ o„z5ö³{ÅÓ öS»F›Í;EûDz–,— ØÏÚ¨ñx-ò¼®pi:¢qN·«ðî?QäSý"Ñ´™3¿ˆN›fmöЇb­Øšï[aRy}V—h@¬!Öt*Ú@΃쟀Ƿ,õ?Á$9%U&HU¢LO'hˆoIIÈŸe; %„–—è7k?¯¯¼÷XºXœt¨¼ Ö<§EáTxbKŸ»–ÙúH$ž-HŸè?ÈF´ ¹ÔH6–+Ì]ОS‡ø1F@Æ"e.~îw<ÞV»þuÔu¡{>8ëuÏ;ÛÖPõZU¬Ýa˯•¡R‘QÝ Lò "ó ´UÅþÜf¢9¼ïEQD™,htF©Qw‚O´ r‡ÜiÊÔß„DyæÈf¬Œú (÷'¹ói·aÂ7½æyŒQþ ½,aÅ8Pf€å<,ÕSRaÆ]ÃW*ù¢%ò(U$—ÇCÀédYUTKIÐN5Y¿–0^ë|u2G@¼"Z)Ó#}"æÊr–µÖrnu´õzqÓÁ˜DÇðǸ ê§àŠÖO³ôrOí1\?¡E—Å´JïEÛi2v¤WyÕ-ʉŒË BÀA@ÁÆÅ¤Ýšv£€á¦EŽfCÝ¶à…»^õY éG ±pgôñmlF¬Ø:'íä­q*1‹(.Š+ÂoKg+"×ýz £½r÷w*>ÛÿçÏAbº1’6l÷ϬD&¨îí›ì‡Ô˜}~÷Ù#Ò@3мI€[V<ÿ¬G·@ø5#5¶#-Á‘_àáòÌÆ™DýÅ HÑïDÏ”XoG½m_ øÌ29uÔ–â–²jÓ'y'Æ8‰ÌZê”ÍL¨}°ëç`=•¥®å¦ö•£œY^sÔ0Þ¹VqUÀ´«jO÷ îMô¯Äª.^—“6—JÉûø&¤R!syÑ(w’…e3³>-­f‡b!oå4?9™9óà™ýqJþ‡´›*UnP§K!v ÷bÀO}"D3ÑT…mÆNŠ›©F­|euLü4¤ ¾tú]cÖAÑõ§ã!qÔè¼´¢xÄ2¼ÄÁ b#§Ë®÷:"ˆø¦ÿ‚@%2¡™Ã®¢Me^-FÁN  +‚s(ŽY˜pñ¬+ÓÑ ¢Ruë\ër­†I[©™£O¦IÈß6ÖÜ ¤W9—Ž€Ã©»ííSüåN—G¨7ìÚÔݶ‚^[ñ*AÜñÎN› &ˆÓgO[ìéà­¯k¡¯Tš°”g€á³×¤ð‰Jäá;%‹xK…Wž¾~ÚÝ^ó±ó’ &­#6e¼oµéž­ 6cjÚh˜õUì½$Ç-Mù\”•Õ¶Ï0KaUpIñ\õLÀ_ö `í­ ŸhÊ19=þƒ•4 3 žu•Áñ€tnÜk§Å±•6F½@ ›.Ùeoþ¬{Âí'm|áy ^á3ècµ9Ôúû¿Ï‹Ô¾½¯'@ö딄²1dÜ=‚ ¬y/F‹ÂÅ 5× )ÐÊ#H±Â>¹ŸmÃI{ªì('Ê™¾ClT¸éêFkæ©=ÛBæ‡ôÁLªy¯Hűú^íoÄ`]ؘ/¾œUûuë‹i'dƒ¼§öˆÀ¶Ì÷ÿðKyðü9e!/êÀ(GTMT–$Þ7´’ôs€ tªÜL¨\篫šT$¸*×Ü6»ÏÒŠjkó\öÓçÊÅÔ)Tf"PãTÀ ¥È¿NÉŒx_Eƒ\scDѺÏÖÇÛ>AÿN.R›éh¿ˆ¦sÏtä-„íKö­}lÐ4÷oZÇ‚h’¯øÖc’ íØ‰H²m8i/'§¯G=Èñ0ž¯v¾¯q ó:fëÏ68}Šø„yƬçÀ\’.*'Ëu·×w·Í#jЮþ 4YödÉ-úaÞß—û7²& iÏú3ïl€GÀiYöCš±ÌbˆRЬD–Îí&^vt`ã3ïH"?ÀUÀ¥Š—u©[OMÓ‚Eñ -Ô® Tî¼·¨© s\R(Žm{Ez8í@åÿ[î-î6ø×]ü:¨¦¥¸¬1sý«]Q´vZK¥Ì .ü’\N´fĺ@ÛA¢¼Mó]sS„Œ"Ÿ"t©Ž\NѧF˜BJn‘GÍ“ý¶qWÍÓŸµkl`ìn•þ~¤µ×6šÛ„{%ä—°²a], úÝ@f€Í…¶Œ·!ú¢}±v[­á=²{A^vq žRŠ<̇Õ¡OR²?’ÝÀY]¼mž©£¼FÌ]¢kWe Ž™%“u¬õº¶@ó‚w8Ó¯Òô½\‰Ÿ¸á—Š€VG«N«»q»+d8ZÝkí×ÊæoÏnKi†ôbzQ‡“h9÷FF~Eè‹ÂbŒ_Å&·Íá¶®Ë{µñËD9¿ÎiS 1f }lNZ+Ë¡ñщ9JR ”W¶Æ<~µù´m"ºš‡r›¾óìÔ©ÍžÃ𫽜òþ_3mÍ4Þ.õ–Ö}[ïo–ôþâ†±ÞØbn¿¬Ö—”‡€ôXWä/¯Ëª-Ç#ª©•G‘e8û‹ˆ®U\•p¢œÊêim¯ÒÖâg}J.Ô= ²+‡T)e±9JÓ‰Çy%×)'aþ ñºPo+±}ª‰~έ;WÑ( °5,ûø þYŽwÉÚÓd°èº¿ü¶áf*Ú #è±¢{kGÜw’ ²ü…àŸËýÜ“ñH‹=AœeFé«4;ëónXa+ÓO‰ëŸ«}A´›ÚeRžCL§­ÿáXZ*ͪÖŹ#ç;xÑo‹Þ¾ÇþòVlh>Ê¢¾©ª)P8ÖÉÿàO)9éå2c¤C¨•CZ ùxÜýCÇü“«bઠ€áÙŒ@IDATóÕë©·°~ZÝ#é3DŒ¦œòUê*×Ë ºêªÓÂý~R„. µ{^è€Ð²>¾ί.o[„=fÄ· ÝüëèµÍxÞ¿{@EH|eZ•!nýÙ éloÀ6ü^ƒÜ:4YçúWmÁ? 5zš»ð9Ž¿kÏ?[œŒÛmªÚùZëWä!Ì[ ~¶¾˜GìEù)6™Dµ.Àö9ßê—¨#j)§Áø÷ã‡Ó.¬›†«GÚòÕìQÃ]ÃüûNö½(¶£=¤‡0·“þÓÝ|ÜU±>ÀÈ1¤É’p žMeQÁk¨"5qÕñ»:¯·¼'îŠ]Ø fœüM›ƒÔŒßK8}Á ™¶;Wî÷ã!à”ä¶hëU¨] ö ·ÃËÿT‰S¾޵1Zn“`;ÂÃþ¶q§jø€¶SIŒ—*]î+çÃ6<{ó ;lÈ›vÑ·âî´ '·Q«í¹¼8œ9ý᥌ùÚ¼è·Zö<˜· ËW°A4‰Ø4¾ØG!ï?vÒ6XXË©T½§^9iäÆ:Z¸»£½ ¶£ÞÖ`•Þ¦‚šö†¦f‘AÿÎd÷¥;Ä„âwŸ“j@»\ÛŸF®ÎæH½\u¼®Ê8Õ·©õmzg Ò¶@)3„>ÒßÇf­!ùwÅf@ºáªÓÂý~\Ä^0Øv¸køL$Ñ¥•a«òÛa³-[ŠŽ@òï¦wýGÉÿ¡Âå/ŸÒØ÷Ø×+/ðµÍ×m²í…m8u½®ÚHh’ f(&C"Xn,1w&dMÀC>ãC'£ÖFk¬ör>x;XæÂ<-_»Ó…¬ý{!‚Ÿž_/åØÄùÎøÇŽ‰®¢‹ò‰}9¶5mÀ:òY]֎诌Õ|µÎHÙ<Ì;³xó^AVz¦©¢ÿ±—üåóFNåºÉÌ¡ÜÈð>÷¤µ¦ˆùú’ÖÑŸÿ´Æžwßÿéy®ÊÀmÇ,é´½Za1P›/—Qù¶êË¥r5~ »ÀÀ›—K2GÀ)¹eGf.Hnû?Ü?Îx‹èh›£{Œ6üË`ë!µÖÐÒÇB©Q0´%Ažï%¿&Úº|›‡½8Q«-7ëÙ¡Qž…} Á üŧà±Æ?6 \ë 6+ÉkµmÅ혇ó½¯Ë9˜w’¼’üöõø·9×SY­˜bŽþtô #'ÖÕ×ûs½±Kã÷µVkð1ŠØo™'ˆú7D“Å÷ˆþ77—CðpmÙ :ƑЌýƒð»ì]•HÈ QKü û‹Aô9|½g ;267¢1v¹Í|1»ìÔpÇÿ b Â?±Š£VF†KØhWf]õƒý44ók£#Ô:Ðé;MïÝÿÒØ#®UDeå%nûÒöò_]xõû ¢Ú3kŽÔÖ¥ñóë(f€á FØYô#àSÏøý¤Qû)Þ½2LƼø®`oyвí#0€zU½ŠCò¢ç‹ÏáS„ ®è’Ñ•Õ:Z™iÕqÅøUì^!JTƒ…±³GQóÞKöæTÑO±kÝd5Ìõdƒ÷ÿ}è~ÂäGxßÄcß VŠkWeœý®kì„»_n¤p9H×eš!/‘MFb2varXàš«ò¿ôÚ)©yjÙ•xhîáÚÿ§%!FjþØÛý=eþ>çs´LÊÉìô¾3ãä$¢]w56~%jü~£ÜZKð›-á‚ç±)à¿ÌÞ“_ãtú'&¨yßùÁ®Æg˜—£g¾”ç0ï%´6¦ä'~sÞ³cÃhø¼i”Á:«u¸¾q†¨ÊÙÊ©´v˜÷@{Œé š€'†Ún”A 'ÐÑ"ŠG²ypžx¯LVFB×.NBêj£pÚZdúJöú?rÿeÄ„TWŽ&]mXÜßÿŠ€xG¼«¼¶£GÆLTqý+׬ΦAD`Dw¦ÿ®/W;±ŠhýÀñ¼¸×â:«m¦Wý¼úž},Qõ¸êÓÄ<؆ßô)OP ˲X.ÏqZœR›9Ýß¶Xe`_µkueûdÌKµ8úóÞFo˜ŠY±:FÈwå"ª Ç­<½ªºq•¨tçÒn €ÛX·¾ð'9 "û347û€ÉÀ0Ïð/¥!©ÌKJÐlˆÿ.\\•pB.( à­í¹A·X]‹€„¦jfœ0%£Ú)™ùhET¢ŸQÌÞÞ7öþb@¯]Ñ&!;D³D~;Ÿ[B+¤ž{¬ÖqR»Nî­½ï3ãe¢º?× E Ù-vajX"LÜEçÄÿˆv_ø½§ö}a´À<¬:¦æ_ Á¼ ãæ>qɰó¹Wµ ål¸·Û¾ýƬ»¶'2k=‰ÊÔ(SD™  Pï"p ŠMä’ìPôDi.9èLé2§c”È7áªÅÕ°bpÎPß.3«„¨KÉ;ªF* Ö¸êºüÛ~‹Æðñ€M>nkœ›Êá¾êÀj‹ó~Åý‹Ô ïßëúõ¢~VE ƒÔóc*ÇÔ¦“x~¿U%Œ¼D•c+VnDž]½ò˜›µ•í™=«!¹D»bô,x[Enˆ¸LûûÞUQ𺠘1£”FFߥo~¦ó~M\Qš€û»î‡+MÀªWV{Û±þŠu,¥ƒ!°4Ô÷+Æi¤W<”bÊ%ðåNþ v9D™œ@_êc_@å\º\ùš¸zq}` ­s1 ³é uÀ°1-“ßã¸1™põõùÿþÛ^«¢»Þ^eq?³ìä(ª°¶k6ì%ñ!ÁÀ) y ²ÿÿ¦gðÉ)æÑ²©Ä2‡Üÿ"±Îî>tÉETµgÕ çeU£®™0†%§›Þb§VÙ>é`à¡í²%p·^†m|HË­åSç±%KâJþ÷Úvø‰ö¡Zg;?ÞUKEùúL+ gТ]ŠŽ¡M˜÷öy…›yÞFÐ¥ecñ’É4C:±ÎJ$_âÒC2;ïú À1ÈcpÆ’« šŠ1½À ïb€ë/Ïÿ@”¥•Ë-§m>"=hÍñµÑ¼¿CZ‡ 0½ýsÀæÆày)`Å<1W=+²\d5%‘®üxõÇ’hï²éRǺ—tk©â†åçrK„ÿŸÇÇýˇ¦Æ%[ŒÕ_O$û¥Èo"+©œ~ðõøÞÌð÷¸ ?áõZ6‘Yù `ûèiAcÍgk¿1z,RðM µ¬U&wÌûïòÀ£s>áƒù¶Š|,ŠÀ>3 t¦>2vtt©É íÚS=Üõ¨å õ©ÌdfèB­2€™Ç¬.^qÜ"\»¡^¼~ lH÷=dÛ^ U¼Ø".›A8¥ FqHjÏ|ÔNM@lÒ÷_ØßG&:^úX3¹ƒ¨\·r‡©4†V»bÑ–oJœø–†„‚zLëK=€ó‰ý?bKVÒ¢´s*Áäþg+ù?ÜkÇ:×ÅUµî¶~¸­€„ÓiÓ›Ô”˜ç|ùo! É vÃtåŒ#èšÇо(€ª_ÃEwòã¿‹×g–Ã*›J¼\€ÞPŠoà5›L\\ûO€P0< %ßÓº\ëC”nð»ÁßÑ*‚ÅÚbÅ@ l~¯®yžEC>@h „µ¥£° ç]ík€ñ,^¾ÄV_—å„e¹£År1K„13­Ek¥ñ‰­—EÆ×««[K8ý…]s§æà§ŽëGcðÜ‹3 ±ÖBàfÁ¯"É­Ë»¾–¼†M‡çµˆ×Ñ«8‘ÍdM.!0™‹Ë# èŠÉ|:óèÌ Ð5Ï0CšÛŠ»è]žÀDL%HüÒ_Δ༩–4dŽw#Xã¶‹Î w˜@.µÓB(𥠗2Ò äzO½ùcYùB¾R¯VÓüÇõÏ:g?ç!ŒÈî°=#¨âÒCO[T*Ùâi‹}+Û@P+˜5ÿ\…ùiµCê<~”J1÷‹pV%±ÞýõîN°æ­5ó%|Q _)4–ª¡¿/kQŠ¥‘;Í /¼¿Iµ¢²qM¶t¶) Ï5©Öô¡ÒÀõó»ui3$ÿØûCÍû‹.NÆo¼ö¥êÏõb×Kª|ßÝø³|“èõW»5WóNw,j¨Ú |ѽæç?)p„æôEÇ–ÀÊ þØ øIÛL÷¹< -$|ôzú.yõm½¢€žÙ˜H+ì » õŸ(‚yõçkE”¬µ±þF?s;άҦ$Clï ;”ÇÍõþ„ýù×Û’½È.²(µ=óŽ”j¸YΦôQ¡…+¨MƒŒ`£‚úžË£Ð6j^jÞOÍ=uPÅûoÜqO½xE6‘@ø~t+ÏñlF3:œ¤Mj^7tÚè‰@@jàÖ 3t“”­CÖ…P“ñ¡üø9öŠ•Èˆ`ª¡Ö¡qÞ((‡ƒ¡_¡]’9´””;‘ö›syàüO5TøÍö˜e”êMKªvƒ£©*3Ïq%%Ö£ªRÍ¢I%9í²U‚gÉ+ +µæ£þm{×ÄêÏmÇ)ÖÔ^R·Ü‰¿ã©•Ee~,¥œk®uI­O9 Û) 6Žóþ Z7S±O¢»ÖCÍûfÏÍÅTþwÖß¹£v[cPÔ¤=^ˆåÿO]ýÓcÞÅm»:¥æ•Ï#°8xñd¹ΠyÊ]Cšr2>2>2ç=©0.ü+oSIÅØgÙߦaäsîËóãЃê›wÚþõþ$z«Ê"p³RÅmo›l‹Ÿ-–Éët:÷œ+Pc±U›˜åBÅ"™H@É%ÿ:l¬Æ§ÆçЧ‘¶V§Š8ÉHþƒë``äYµubXàªhcºSߢÂá»àkÞ„À„á?Nù}lµ‚b¯bIÍ7,èLO~‡ÏuRÅÍáí/w%˜x´BZA5ïÚ‡Ú`sÞ#Íı —?¸îðD±Q—©Œ¾7ü£Î‡, òi<6,ßÕ_Žæ?æ Gqí£Êè*£Ã«Õµ‹qùÀ0 ÛPû4S6¨"–šµ]F%1YÁµ~Þ½w¾è‹Ô£EV=Šó¼yÿ8ú'œ+˜Ú+Bf»d»¤j.ÿ áˆþ“8áwÇ®Z)a‘xÿ`¾k¶næ¼;çõ\»nH異N>„âß„ÑÀðÝqUúì]žÀÎÌ9ÌÑ”U®B åÌlx㊲Œ’?¸2þŽÎÃ2ìBÅɨ8œEY^5{NçN'Žuó ¼ØÉú“cÝâÄÅõp#“ž`'Ðs09ÌL.?.eäÂ0Œ#À0) fRØ„ópF€`…3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ€…!`@@#$wRÆu[e Qª]$Ú4ðüîcaD“cvZŽö¯Ðë²’ë0y…îSýÜ4Kì&êu¦âîzk‰jÉ{®Xj0>ÕÏŒ\O 8 Òñ´C"“hG4?êкm˜§ŸV-¾ ó¦“ö–¶ÿ)Úç[dŒ3ÉxryhO€LCå«D9Rù¹g8LT¥_Þ‘Å a‚Dbä5Û·ƒ xò2Pë®-'ºz?ìÖÝP4ó.•§7PGRÝ}òf“Ìj1ŽqÕ&*P"㡬Ӊ*¯ÊÓ½¨Ÿê¥qÂxû©z«ƒ @ÑZ* Ͷ AOe†©A£jÞÌ €®?#À ÀŸñà#FàÏHò /”¦2½<©¾2nØg™uz¶f”§c”|Z#—KhÐZw²¡V>ê¿«ç8B025®1r¯ˆús£]‚äoxÙ¿zªA:òU¾˜§ òu´7î¨yC‰0ÿòF€ø Ú_Îð F€`F€Hö0짘È0Œ#ÀüfþŠ ŸaF€`’=Ì$û)æ2Œ#À0E€€¿bÂgF€`d3É~Šy€Œ#À0ŒÀ_`௘ðF€`F Ù#À @²Ÿb #À0Œ#ðW\ŸP¹ÆU²µF€`F€øO¸~&@ò1s}Y‘ÔÀ˜öûOƒç‹F€`”Š€ËkıœŽ"kjCªcæNW[³$‡ª)uEò¸F€`ž ®ÏtÓÆÓF`5JL¥ë¨cñ€ç²xø!Œ#À0®‹€«3B/FÓï.¦P;·3ຫ‘{Î0Œ#ðÜpuÀ&ÞÖúÈCØsüKK¡2›²à¹-~#À0Œ€«"ઠ€³ßAb€èH;(HŒ#è…ÈX°lpÕõÈýfF€xN8 ész\¢?Ʀµé$ÓìªI@þ™Ht˜¹AF€`䆀«3†ð×Þ c´_ô„à£xf’Û"åñ0Œ#À$>®žà¸-ѵÿµwðU]>³÷ÞôJ ŠÒCï(MAé½ ( ¢  ¢‚"E)ŠQA@”Þ›" 5@B0½'·ìÎwvgÖ÷U?E²É~ÜfïÞÝ™gËœ9Óø‡X÷σxX‹ÅÿÛqûAщ D€$V÷d*÷±ú ‘l(Œ‚d؃7õ(H·(å…"@î«zÌn~^¬"«Ã£`?<ÏFA9¾ÜÜ%@±Úw³` €ÍÈ»¼~¥Ê-œŠq<vüWðÃóirÔ$ϛͻ çÕƒ8Þ¯ÓÍ~G «¾rRä:ÆÊ17̆`8ôç—à šìX±Ð\AÊè%ÀУäÄ™&ÇÂBœoà+6E™ ŸçžÄ(1¨¸Ç-Å[Yƒ?ïÊʳ†¨ÛÐÐÐýrúÚa} 32_mØ1æ‡ye¥‘oàN^Jßt;¨œ7®Ó8ã:U†VwÓǤBAÀª@ª¸:ü8;Çø“¼ïÊúàƒ?‹ÿSøªé[(®eòŽP®2_¥ À¯ÅÎ:›ðöÒo_[~Ëæo %”ÁÓ«¸…¾ÅMe/«ÍêD¿øsýøzÂR˜ŽŽïÏýxlÀÖ+ç=:óŒ94<ø÷ÍÕøÙq4Èðº(ß2oÅu?ËÖ¯›/"@~OÀª“YñÀ!Æa9de±ÖßûCÀê]hËÝ"£K°Q¶±¯Mw–"@ˆ@A!`y*°7aŽÿ÷ƒš“ðÂh·87{A¹¶”"@ˆ HÀòÛ¥ùxp:Uˆá£°ø×gk¡@ˆ D€ü «•¨ OÁ >'f-ÙØ àÌ¡ö'—¾"D€"pk¬j˜é΄/Ø$œþ·+áßB€9ùè­‘¡_"@ˆ(À¬º€yIœ¬/Œàñ?Ã6^ ŽÂY}~”ÁÅ(üM€Kƒµ$»W_V˜•„’àÂ$›Ûówêÿ~ê˜è™Ã¯ÁO¸üÀ5üË Unÿû¢=‰À] àÅŒòäCH6´Üc¬Ùq’r;OiuÀ—e²Š<¦ØjÚ{óêpÁ¾Öþ÷T|¹„Óœ€·óV¡cÝh®âÜ•j-ƒÍÃrÿkm´Àr±ë‰xFþ³ò¼v|M¢OŽ/ãKpåC`‰J-Ø…«n±ýÈÿƒùË‚L\þˆÈß¼ñ®ÅûµÄ!ç <§Ìƒ' ãýûüð?OÕ €Våæ–û1s„çÅÖ[»}m˜Óß^Ìñ“r3} ¾Æ— "? Èš¯ò¥²W°€S×NŽñ½°6nõ–°°Ü_âù‚aÁÏžd} C æâ/SÅ¿¿ýûbŽu»zºwHA Úþêís>Á!;}´®ð4¦ y<þ’ í`)• †nˆ«“Õwù~qßsß M› Ÿ­´Ú-ÜíÜâ»?ôbÈ3Ní¡:;ë=–5dzÞÛß§Ú_Ëë©[ê.£Ä6¬3{k1¯R»œÞq_Æ-ö™¾¿d`{¬)+6Æ!Íßb< ŽÅá˜ì Z1½kn.õÖgetŸÙcaRC€€U]Ôâøœ>ƆrÖÉ¥´p`õñ9õCÃ<È=†·‡ïâ?9×7Ïç`5¼ÏAe«R±¸ÀÏkN> Ò ƒg»ZÐõo¿Wµ¡û¿(äv£ÑªW†Ò]8xÁÃPÀof@9u@ÏÐ'¼’Þ¸ôhLŸ‰'ÎtôÂ*ÆóÊôiåÿ&éò׿jïBO€ðºáÜ9=–÷ú$ =~ÛZ©G0—<Ç`æ'R4Ž‹M¹´,Hfo¼oíjÜ€³Úíþ7d~ªZ5_7 “÷àù 89Ð…Ÿ‡h(l Ð  D ðÁ;ƒæ«eƒ ÂØŠsrtìÞåÇ”²‹[-œ¾]kÔ•l6 tf]±R¾ èy[ EÑsQÇÞ’7À|´îR" ˜ŠÛ#úäìÁ|ײYiL~æû•|› Jø5_,OôNå¹õ`,…8¾®;ùC«_ïl˜Õ ;Œ‚0GC(\€/áe>J☀è6%À:7b¡O©ÆEg¢ë,ÐõߢZ«J©é'›Díó»p¨d¤_à«X°b€ÑHKÅØ&™o‚ »òé.ÿpÍ^¨›]¢îòoq+ŸT½OÎ:ìûßõ ߃uõVÓXü¤@¬A >ޯ؀^€Ó¼%_ Э…õÜÉÿ™ø}*­n(¼:ÏÀzÿôÔà#`7Tæ€m©| o ø¥@¬D€»¸ †`yDàƒ,H{LéÕ&]ÿ—Î_œêó2@òª¤Åt­++Oà ̙z—G ˜ÿZíKèPt}±vîpL÷3OœN\ˆùX̓¿öˆz¦bz½ð ˆ€¥<Mt€ßॠ á!œáÔs%eKååkuÀÆkro>Îã¸âïx}¾|¡Ã$:Éð?šþ´£AÀh8 yØ9Ð^©b¶4vP;Ý—üÀÒÈ/οߦmfßa“@KÖRî^Þøv¾ Š gb™mÇÎŒ®vJO>Pi^¥9ØAZÛ­mCw¿îò¿ß½tÒ™‰À-ð+F€|Uˣşá•ÐøÛó•/îeÓò ç@ ¾øºü°]Fá¯Àì ¡àÝ ´s~" ñ‹Æk¥ ãx_CËR­½R°æ|ò¡¨/ü±/À‘ÌÃ'`Ák·Ùa8&üßž/Àì좩0 vѺS³°CËÊ­?JIÀô”€ê¼3ê»\3ܤrTn¡@¬G ŸFôÀiçõa ìÃyfþÒÈlÎda9O€Õ _õem’æ^П_ãß@'°±NèªYE€õž2Jñÿ0^&F“,ÜØó"ºÖ>ž€óÄF]žîÓ ewòYÖ¬•¦J;X…¿¾Ó}L—ÿ^¬Ùw{:,Óƒãû{ø÷Ú‘ð¦sYðcžãXó/£îb 0=ºËþÿäŠþ$$À`½ `\‚Çxí%Þg¸mÌjÿ±`–Œ$[Ü`ÅÜe]Uø9>&Ã`ÞFKC;ó˜7›¨€UïKJ·I@Ö-4—ú#àè€JOVæÙèxlW¡ƒ;¹>ÀW —¶-ƒîm7 AÀš°G~©—˜Ç¸Ê÷bgÅPô<”³Uƒ‘˜Žn»&5Çt½Så¹l,ð5·zÔ˜ÊØg8nÇç(®€]|oÄWñÞÚóð0o$3¦7rY2XÜ€0WEgG~–ÏçOi½ Ró‡>|ÿ¯E,¶Ô¤YòšP¢‰Àï \‰€ÐÀ|”Pø UË6Ç’—ã ‚/Fðß_:ަ†aÁì°9`0þÜÿpÿÛX×Á&ÍçԬRkNæLÇÐ6jò@LW«Ï»b )GK†ÖxVSg¿ÛFŸt— ðxœ¯Co¨Žtki3Õ#jmþ ÿ"p&‹W!ä.'ï¦OoU@Ö‹à'wžë?ªµånÄû©sp^1…µÃQcêxÓwý0ßà.í°^°?ò˜{ÀãsŸ(ÿó´wKÅ>é» ídêAû3XþVUêc?˜[o0]þgpâ,àCÏâÁNˆGôzëgô?Rߣ ÕÕƒì}<Ÿv–šoñQˆÀM@¿ÚU½ Oƒ·øÃ¼¬ö²ú)v:ŃÍÅÿ8^Ç·Óä–‡¼³bU@:yªë’³Öâàœ ­¶'êÇ_ÃÖÉX¬ƒàÎÞ=tô»AÀ' ^ÒÒ±CTYPupFjû~{–¸`yÉe社/ªƒüÖÁÕcÞJS?ÌB0K”õð.žgVûؤ×´ëÚÚhÞÈUòŽ</ÔFÞ‘š¬rR:o•€ZO{’p™ÝÚÕ«dbg½ÖýÛ¶Jì°ªõòÐ{pê`¾WÇ,…†@uV2ÿølèW8®OÜÃ:±€ [¿Õvgâ"×χ°‘O¬N/‡Ï÷Õâ‡Ý19G²vháê%™÷@©ÆÐ]+ñ0 R+¥YO«ÙÖ’šûrîc¸ÀÈ(>T¥œÇpm±õú…™ݷÒöi5 ”ÞBNà:äÑÀ*r,¸Û$µ/ž¸›zœÊŒÃÑÞQÙë&/œ4K‚\ØKæ¿ÁÝ÷°þ¢ù¨90 üÆ5‚²:âqžm_QŸÒ—uR®è‹ûðcZ$ÃQÆó…†"P(„`É‚}ax0ç‹Ü¯evI«õÄ¢ó_Ÿwö²d€O µ‚U lí4Bbκ¬ÒÚ@>R]£åŸ;#ø2ðè®c õt¹ (øŒ‘1Ø$©OZ¯HWotÝoï•s}@|³8Ÿ2ØZ™©f¦ÛѵÏæ¯÷0ç<'Ñ‚àÁ<ßbSÂ=]ÇÎ}¡ŸéìjІÁŸƒèùjäj–V?y˜ÚM}ÄÈþž_V4žA+!±ª# óÙ™›Ò—ro5G=¥Öå ³ýq‰Ñ|Zj_â«êO\VºH”V"ðÏ´ú0VçS°&ߴƺŒò8EïÖ6×ïXsrÕÕ{àóáÀn²ºã’á?½&ŸŠãg~Àýªµù8ñEî|°fù ºü§ãqpŠ_Ø ¾‡R …‘{}^º°Wý*å|Ô(¡ƒ:ÀÓ°C,†½’ ú̬Œ—…µ’l¤Öt>F‹´k}Ô÷Ýð„¬p%.:2/×8Ȳ`Î(ÉDàvˆä õ&¥‹£-Âá{ N&tķ̌GCàƒ†º°FϘèôW¹f•=Yƒq¿.&tæ‚JQm ¾ðÊðl&HžÌ§îv¤ŽA¬D@á£õ¦eõO ~# ÒB“7hsÕ¢°*¡9­7ªéÁ&bø´ª`ºZ°uSZ˜{Ž{5ÏÚŒs5Æç£°‰5z pzm FôY ð ÜgŠÔ kåÄÚJwÖÓÿÚ8l6ãT9Ö ±+ùÝczú\ÃqüEj‡­tâ &m”:˜­Äï·@]\\‹(Ôøö¼î1SkzñQYIž´^Úµ´„ò•Tì%`­`U@¶îóa·ö¸ëqgKmIzïÊ›à²(€ó¢{ã?±JÕ\¬uWRjo'ã×Zh>€ƒgkT®U2=]ýWÛLIè…u—-8’ùÜÞ½v@züÏâtÚøtñoqbŸ>·3t,"`]¬)dc¯pG¸›hY«A÷=û¨ûDŽøL™34­­¬jœ’˜ŸÊËåžË­•Iƒ êk]àSXáJ'ôxÈ`­›’R{û ðM|«Ñ$¥œÓ¾CûøûÇ{\{Ï3†gc÷&PF*[µ°à¯Î+°æ¸ÝÿÉp¾ý‚Žh-úWø¾Lãjê<Ï_H"2¡yÉÌl•ú¿ãjä¦ü-V5òV\ŒÁ|zf·ô¦Ú•”å8uévþ‚ëMæÃü 1Κš…]Õü}(uDàß"ÀËóûà €´ÿ>\¶6—aAÏËñVúvlà\7 4Ãø·’Eç!ù“ÃÁ²úà¾I0Ry÷ì}Yi©‰Qз}ª­‰æºÏY8þÆZÁª€I6áä䄵Bò~u»:–{çv´7±?Ë:úDÁ)8b,Ojþ‚”,óS½_ó  ¿!áº@›¨µçG\]2º§=¦õKz[ìÅȽçI•}Ò~sŒ|µª€­”zàOHÝquÉe/wêHm·º‘»Ó€Ÿì—¡c(ðÍ|#䊽è“"@ˆÀß&PƒÕÇ)²@û\KàE²JT¯¯TÏ$Çß×Áò—áÒof@©–«fõe‘ Í#οý–ûPz÷`wîHLðzÂ;€}R:‡/Ù¹4,sU(¡D€"p× °jPü°÷ÿpO_x0m@ìä˜QîsÉ/ÁLš/6§‰`6`7Zk«&å1âq"ùàxWûìûœísÇð&W'ùÍ xž7¯¿G/+´(‰‹”"@þ.¾ªêãÿ]µ]Ú¢‰§¶QÝuÓŠß›£Ð~`¹©²,nðíâBhvçyã!Ì˜š¥•ºØ$¤BÑ™ '4ñ‹ãôNM8Ú™ D€¿Gg<¡ÿÏm”³÷ºüüé¥Çn¸Og¿æåQ.ý½£å¿½,n˜½.ùnVU']®æÄDßw¤ôJ÷Ǭ¦ò4«âx Òp@2òßH)"D€ä7úâXØûŸ⓱¹–69é”zú¼îòe]² Zë#’ÍkÉä·ÊoÙø«ôXÝØ+2¨mªzÇ,;}Á½à↧ë‡Û•”vö¥^Å¡7öÙø=οÂAß"@ˆ@¡'P†Eàj2 -V+ÁŽìáñC.×QÛë³u2êQÁGÃɵ ç1 ‰Õ ¹* —s0k•ôßõ‘kúµÖíföº×§gì©€©^­áùâð©Ø€²Ð­II%D€Ü¬?´œùÏUÓu‘ϼ^ô¸ù‰kHl,¦fœÕ’Eªø&™ºH©–«æp@9#“68jÈ¡ãîýgÒk¦,Õî‰p&à‹ƒþô¶ÿ$>²øœ¯_§î;šÝ4³?œsA¤Ü+”¿$s"g¦•1 ‰Õ=5Uü¡¾)Ô“¼ßþÝ4WBô™ZÛžsdÅ¿äû‘Ÿ7|Vø\>W>§@ˆ DàWXK¦/#îTWx3±ú‰k#ÜÛâÚzp§ Õdïþ¡ˆÃR-'Ä€•‚;¾§v,CÖô=oˆ¼˜Îá%òö'‰,(€Ì"¨rNf÷ð;^ë\y¼C+_°=í ú<¤Ò¢..ƒŠK4Ò»0šø-}"@ˆ@&`ÓGûc¨É_Ôÿú¹õÕ«jÇ]É›N|ÕÕ¹êÊDÞ]²’¨³ ÐKli Ș¥ Ò%£×Â-çlÎ{kÛ¸U1®¡»×–½a·eöœì7*à)ŸÁ§aON½S y,xûR’‰ 7O€uÃÿ8ˆÜUßù3ÌL¸¾¿ÔŽ<÷²í p` 9/‰#»JÕäÄs'âÖÿ,h€[\ž ÔsV¨³ÊöI«¿veÆuj?å‰XGÎæïÖha¿Ä Ö?V²Ñ 'x´þe¥"@ˆÀP° ;…;°æŸ{픺bçÏËâç¶Ì;zæŒñ»UÎbâ÷ž¡B5ÙÙ*Џõ? š`^‘Éâ³)À)-¸œg6LXú…kòÖ}ÏJY×öÿ¬À™,ºâ2þ:lLDž“!) D `Á±§Ù0½æïôÍ3~.»ûƒÍçÝ;×s^É{Æe†‹L;UÍÎ~O,ºã»`‡D‘=/Ù)0¨‰ˆ=1mý¢çüÚö‹«•Ü ²í£—û²†l(„Øß€kèÞ!O@Á¾+(wD€N~ú¿bá<ú¦]¼~f·6tÁéç²»vÉÞ3{ƒ×€ë‰8i“„ºV å{„œ¢ zäu9U£çk±­=#ä\_2öƒ¾ÎämÛJó Où”m6¦ÈÙb#”F ç=È`â#%D€ærð3` øà¿32§ñj築[¸Áµz­ƒávðdÍ9Ím(T_G^Ú@=t#xÏ·ÛŠ{ÞZœÞöÁžåÍ"’½ÊzÅC§"a|9õÐ{P“€dFBˆ°áϭÚè­þÚhµ4œÏM9Öô@gOÀÒÜ/¬·»ç_¾(r•SU¨3T¨ö½ÌíZ©N ºÀ¼`õŞׄæªBs&–8­¿3êÐÕˆÕ_Rê¬Q©F7[ÓÍ (<ÞÊÓ€Ô$`r$%D€X‡€·^ßÇàÅôêîõmW×êlùdìÛWœÕwlÉ–Ãúr§‹¸§²P® -¸%@Aï ¯ß/"=iÜ+¾ [Z}rýFЧtÜ«fÕóé3!½è˜â^Ì»qEl y¸§%„~¡H"@ò3ù¾f²uúÜþ™ÞéŸó¶g&~ÖtZ?×ÅqǾywÍxÏÑD’åxÿLÙËß½Llç12‹²Â˜Ÿ3|si+lÀ=;-Ô;Ih°tù„­ë5¸£u½YOì²ÂQfÒ£~‡>„iÌá/ñ§ C@åæPÓ¯ˆ DàŽmýl{ÝßßÑù¬K>òÍ©Õy.N^ûÑâ‰5]SvniHî+4í¸Ð¼RB5ù=È £ØZ? ›`^ÃÄ6ÙÛÓwˆˆi'uÄKSgx mýh³¼öul^}Ï¡y۶!“øÇ0Åè@†€É’”"pw ˜ÚæÐÙhë_­—ò[±¿…Ú~Îì7|/pîúú¾¿ ?'w‰MŽšó¾PO™‰~R ¼V@ÖâŽÕƒ}±Ð€iB‹t´½a†úEgLœ7·¦÷©žjm¸Lôl€í”½Üï;¯ã_‹ ‘! Ñ' Dàß& ÇõCuö î›åYÚåá1=£Ïh,»ðf½gw:λšº4i!ø'ÈQ`É/ŠdfÊßý¥ˆcõN~!µÀKa5Ì [NüÁöõÒ[û1 Zäó C¾‡¯‹ÅŽ/;gŽWË~¥*çÕzU§(Ù¶¾,Ük'߯W! hÑ' Dà_!`NèS gqÕ þ1¼7ÏÕf_¹ó8Ÿ¶aýÔÉ#÷¹rçDÆ9c¦ñi×ä>ÉÃDÚ2>ê”ôK2Íûþ•´ç£“vÀ¼OŠ?”þB} zGh‘ÇÂÒ‹¿Å¼Â·ôýLÇšþc"ÆT^™õdc4ºAq¯%èXL†€ EŸD€;BÀtõ×5~x‘÷„mêÕ]——ño·~9óØ«nש–/åáå’®ü”Ò"-i¯ Í[*T  “¤:!à×—ü=µÉ9 }¤a";†F‡ÅŸÑÅ®½ª¾û•Wç>ë*¬¹Mï=ÒvÔÞ‚}ù§ØÆ¤¡¦_“¥ Dàf ˜ù´`]Œÿem+8ÕâW6^|ŠßØxö½mc#ÜöÏŽÿæä.ÞïÚHqš”ï…¦Éas?qÏó2f›¿9ãÜ\x„ €__k1f Zl¶Oê›&4øQ¡¡­‚†‡2˜öÊèRÓ®8†uy³fÏ ìRæ¸âu”Õ®£yoÐo+³Jü>‰ Dàï0 þØ[zÁ¯ SSøõ¼öG7ä W…¾×blQϧKÛ_I¸Ø™ûYNä“"Ÿ–"4GŸÒ ƒ'W(?'€+ä €ÿÿ›™ŸPÛ¡¾YBƒåJ¡8Y@uhòñ0Ÿ7:ÛÍžm²©Í:E¼Þo–ohßs|,ÆhH‚ÆoifA>‰ ¿' ¦]óÆUZ1°OØ&½W¿+ÏyâR"´WŸœýÐ뱞/¦íNÞ=SˆÃ¤~%4í!¡9©B=ã…òB!^j¡2þü±Šb7Û¡¾g…·"oÀ 1Ý’œT6V›ÛåÈÓ/Û¾ö]xkx»n?6—­‡âËWòÏŒy¥˜nÏR D€l6ÕNdÍtae *ÎÜ·!coZOXw~âÎ&ë½´øùO-øxæruiä~µ¯gÄeˆe{!u®þ€ôXC Góó¬q.=¹`Nì#6Óg_ ðv]b9_“ž›lKò '’7\H{¼Xõ­º£XË{¶üÇ6Úi;Óý‹ò³ªÔaYÖ9¸—%‚6ðpÑ!=ü ?Jž}"P˜M£~`¼CÙXAÂê¨ZRÉyË®.¾<‚wû®úWS>®¥Í[¶gÛÖ–šzy “) ö´ƒ"ž!'tË5]ý§Åv¾A’”Mº2Fò òü‚âoý!;â’ÁF°—ê]Ch€ü>¸¥ˆõŽ­m÷éúüeL½ðfë:¬V=Y#tNØ è]ãSÖByl¶!FSnçB¶ñ[2Bú$D à£Ù`öŠ^àó¯9zOùѬkÛáÄE׋÷$ñ5+Þù|ÂÌRj§ï›§ÔL˜¯¦É?³ˆ‘6Fh¦œ¹/OnWûŠíü°vU*É àÀüÅf³³ 7j“ÃH¼d›“ßñû É7XöJõë1ºÆH*¾®÷ÃÏE)™-ž®œT«/KìëW-ÀÍ–Ɔ³É °ªü>Òh*ÈÙ5qMèk"@ò›Xq–õa#Œ¤•ŠØøévºòVñ‹Iƒ.Ÿ:»šoå ùÞZÙͧ"?ÝY‰o‹_*²‘#kîò}›þ©Øž-§îuvqÕlN½_ÄáºT’¿ @À_ú‹¯±{ŠÆ Qb…Ú§õ•mSˆxÜ?@Íp˜_Ë&'Zf-JetªÑw$›Ú2©ÌÁŠ—Ù3Í«úøûJÎg«Ùq`¬Ï…ûë µc –ôIˆ@¾!`ºôCqÕ= ìe6KW º;~ë½¼æ8oȵ©qŸñÕ?„~snMS~bk™­ó—ßχžw¹ÇºÆB|Îý7ÙG…fÈš}f]Ï="Ôõ­Pí˜PœþW„\©$“ÔßÜ­…ØOtd°=$âÞo õ“jÀX¼,·ŸPfÙlàïûEãQ­f@j©Ú­'=~^iÐįlhåÏ`FÓsó/@Å2Å”A¶Pa=^ùç|¦qŒdìM@"ðoð‡@ý4¬3ëgø&GÀ[ºÇ’¿­5›æ{=§$ýÔ9>åÒx˜¶?j÷…M³ù¥]¾¿z'¿vñÓ¼9¹!ðSv‘Ô\YeõñÌ&B³» uŠfQð4q>J(,”Šg¦p3ȸjý›¢r—mBcH €Ã°Š¼gˆíþò½Sýg‹í¾ÏA{x˜wPåoj½ KŠNhñ^·¹ìBõĪquS`HÃna?ΪU¯í]Þg<{UÙªÅö :¿®mkó`ºq¬Ã|ñ€æÈ¦ÓR'¢O"@ˆÀï xé‹èb¨ÄŒþM¬/ 7š$[`m[/ècø2Pù#®^Î6šž¶+y¿pfù…>§úÃW«îܱ>œ·;ÚæÈÚ½N¨y½˜©V€Ü¼dq¢o•·JðÏoòí(vc•„ÚÖ uHËÕ{³ˆûíê-ã²oo#¹ Ÿ/ýÚ@qß~õ"þæ–¨ýà–fÑì³JsËî®ÒšÖèT$³XÐ*®ö]ç×Ô ìÛìý€Lgå•þÀÙZ¸Jò~øÆ8æn¾É0¢à ±ý:\1 8ïÝRÉp—€>‰€•ØÁa$× D;z7žójPOÎYchcÄeŒýä‹×âºÐ@}Àó9Ør_tFæ½ ¶DWZ¹äàŠQ¯DÇ´ƒó'œù¡ÝæÀÓ;Þ‡ÿüt_zë”æp!k¹@ä–š7AÄsd…([Vˆr„‘y{Ä÷®…ª²W?ÿZÄá3©äâ— n—˜Ôí:çÏ øË¯Ç eC…Ú® uHO€·ìÔâ»^l÷/Ô¯•PŸîB½doW{íœ}z ¾)s<â D}[ãë+Bë{¢+ô«6-Ó£DÃR¹VºQH¥"aPò¾™¾Nÿ½P4|‚cˆ÷8P‚«ÚîÃ9üü)›• ÐsÙ^–ªâ‹Øn¡û(TÀq¹º¹b¾PújÛLC! ’ Ã!U)hh¤š9†æIO„òŒý=ÆâÊ€Ÿ.ãûßÂHrÉïÍñÂ4JÂÀEù„€yßš÷¥—|>þh¾‡¬aÛE'9ŒùÏ—7ˆw„ŸTéj‡"fä4D´±ƒÞÖ®?¾€ÃŒ0˜Ï‘©úó¨‡w`4vºËãMx8(|.ŸŽ.z‡»ŽZNýrsÓÜu\ 2ZæËi)I[2žJû ®ý´?¡Òµcp9¶éå™g;@tlÀÉwƒ׺œ«sb?NžçÎý±R¥+Íg¸ˆ{IKÙáq{/¡¶tXûA±¿Ø3$‚}&–ò.Ûêøo¾÷r™G¡xðç÷ +•Bׄ.*fgðäà×CÛ@Zˆ3 +¨ d…Äû„ø½yµxÏ—_’W°W¸ý¢l—ìï€êÓMɲ½†}B•8¥pÇ(å’š½#kÌp4ƒ­8KeÁ¨X¤‚5å1¶¢P“ „õx6p8/ºâ˜ærb7¾ƒ0^ ÞfsqÿQ:“)hV¤ šþIÜEb<{úËtCv¼ ƒñIp‰ŸA‡ùXëF½gÕ A'~ƒÆ?_‹øBTàý¡ 0­%oÃÑÖN@QŽnqm•vQÛŠÚ’7Ñ\À<§´¸Ü­â¡…iËP[©ë=÷‚ÝùŒ;×åöœª®ÏœSÁ+§Ó?oxg÷Ëqe¿ôýI©­ (mEJFboMMÿ9æê$8žZ÷jƒË p5}MüK.8šµ2uUÒã˜{‚÷ÔДpëÏUz$UÙ‰Ù3Plw~,µŸÐ¼¤ ãòÞqW†PÏ›BÕ¡š|Ïlë7§`7L± }ÞQdÜQ¼ÿøàáòIJP¡ÊU¡¶êBíR½zЏW Ô§¤v•*¼æ‰?{…Ú3…Úðå¤&¯¼+ã/ UD?Pö@i,zAÙdkmG«Ü6Ø1ÄkÆ›û,òU1žàîw5Ü»¢ÏT_ï¯|¢PÚ_v ×BI¶·´Çó| dÚwc¼·m ÏÉš³â¬ê2eŸŒu¡)ž» ¾&õ&Ê3=¯¡J”‚/ {À5c.†’ú»¿§û!P¸kÖÈõz"¶Nã}Ç´ÒÚ),ØËÃ4Πؼ&¦¶µã}ƒñ,m¨†Æ?â‡q9qàk§´þ¨çÔº4ÚùVõ°ÞáMïñqBmêZåüµ³óFÞh|,ÒóJäLBÍÄš8²j¶«›÷W—ywÜo¼XëVeÁ¬á³¥þšPíY¡ü-Í} >)âêD¡îQRå{ÁUQÄ …º>•* ×û"nêvWO åÇ„Âx©ç¥êÏ0…»@€^œwú?8¥¯ÜÝtFøRˆRI(“.8›Ünk.¶Ûååè-ã5;!Úe[›]¾ì²­Í& æz°ÉÒTÄ•£BÙT"ã BáŸ%ãoÈø]êÃr»Ì4’Ûåy¤»ßXr»)eä2ÝrúPó[R"pw ˜ïS½–¯‡ BŒZ¿þ§ù}®Ü)u·PÝ[`4ž0Yv¸A>?|šŒËç†? âÚJ¡üc—ϳ–!ãòyTK‹¸*Ïçé#âÑ_<Ò%ï–çñ<.¾wÏ–û¥ÊßÏÚI¨&+|‰ˆó6BaTù½Œ‘Üuö»žJÀŸ0_»äN%…š=ôqkz`ÒÒf‰¸òœT¹]‘/›´Ôm‹ä÷Ë…Úä G‘‚ kûzPHÊ—56Ln—/ÖCÆå ‚q¹ °ú2.Ó åd¼ªü]]÷‘j¾8kÉxQ©¿5äf"pW˜÷©ùÜÊ6nìï"‚¼_¹YÀKO˜¾,Hù rÿsògò9âýeüšÔ‰Rc¥Ê÷¹YÃ×ÂÄvÍ_ªŸPu„Œ›i@HƒA}F~ßTîC(o&·oq™^! Â6©² )äkæ ›¯I‰ûÛ¼åž%¤>*uP6GêF¹ý’ŒËK—ñ@¡J —5&ËÌŽ|A™<“.?láa®ü½ôD€ùÂ/Ö^î' ìj(‚¹ÝÌyŸš†BˆÜO¦[ÆHˆ@þ à’ÉχìÀú_–ô”i'Šý¹4´áCù{ù<éÓåaŒþ©…BK/-õ^©ÉR¥aÀ¯ËøE©òù1züã&nþ®•ü~ P¿9º!$w"±óÅj½”SŠo…€Ù´ kPMÌ4šÉxC¡¬¦ŒÚLjY¡¬¹Œ›û•ñªRÍó™÷›ô °ûä÷-¤I•5•ß5xÉïmRIˆ@~$`¦N™83n¦Õ#ÿ7q~ÔÜAª&Õ4¸’ñYRw å‘2.ge\à|¿ŒŸ”ºEj¬TséÚÇI( æ ¹Pd–2yǘ¼¬iȱÇÿ­ñüöh&ÄÜþGjîGJ ó½ûGúÛ¼þv?Ó€PåŽfm ¿ý=ʼn D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"P˜ ü˜©ÄrFýIEND®B`‚ic08ˆ¡‰PNG  IHDR ât%sRGB®ÎéDeXIfMM*‡i   gêI@IDATxì]|E³{—!tB ½÷Þ¥Šô"EzQ¥)"¢€ÒD‘"  ˆÒ;Ò«ô^¡C ÒËÝÎ÷ŸÍ" @.yÃÌíÞîìÌæöõ7D\F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`F€`¤‹€Hº]ãž%EÂÚHùiO¢ØÝ¶òÆVêéÞÐò½°hë(”Vñ–J½‰Ú({”qѸªç³¨“إͣrâuòÓÜÉjÑ-Š2QAÚ§ÍÁÙê”S,ÒÒ‹¼"“(L¨°ð§"Ñd71Ð)–6Éßi eÁ™IZ&ò@m'«ùýƒÔŠ–ø&u*J×HŠÁ¢&¹ã8-Õ3/•d3k ížÀå'ÄÏè?Ñ\áf¶h'çïB’†ó:¥¦pœë*ŠQ‘( ›W¸_])(ŽÂPߣERÎ%È‚ãû䇿êû„'$äEÕB¤Çéªb¹ù½jG ýÂ}òÕ–ª½Õ¢V¢¸ù½±«‰ŽJ̶/êTr²þâUyHÐ 6‡!MôÔ¸ÝÕ|Ê27yâ®-2ù½:Ÿ0‚bpF£›hQPK¹sK"?MÃÕj¨³ g7Ì7æAN¦l˜‡)x®£»xžºNàŸªu\ç…º³ÌAipºˆ,ˆ#ÕNÂóž¤ÖÏ]ºJÞ˜³Ñrà8˜fáš„ç úSI臻ZOTT–¡º¸ì}™Ñ|ŽŽYu®¨Ìu,Å…¥]2\f¦åç²9Î]ýåºDÛål#-Ý– é¶Nci ÌkŸ§UÃE>ûz%ê錢äO†X"—7梧QÕ÷gm™‡;½²÷+Ÿß~—¨âŒC¿PØsaþç²ü‡Kø+WFà’%8ë;¥—ájÚ÷ˆl­ìëìÛÅxZ¥M1^ˆ"­øÚ·H®ÒM¡ŒÔ…Šfø€ÖÐt1C3zŸQ¯ô@ˆ,”ÙχŽÐ:Z“Z¶¼T*õ1Ñä¬qªyøV#«çfW™Í}ýFÇä÷ÕxaÆ‘¥/H›FÒò¾"µþšI‚cõmxÁº“Eä©0ÖâÉ/g ½b¾¨Ñ]ö ¬DqB˜:T»àx¡z:¾W¯ß‹Í|QëTß$™õ<æõâ¸(àȹú'òƒ(…j¿9ÚUd_•„ve6ÛK§ifí!$|m’ õ1R*Â`ˆ]æ÷w5«Ù޲;®3þhI=ÏW¬ÆAµ’ŽïÁV¨"ŠXÑßì÷}-¿ã¾& ß›ì€ã£KT^&®50ñð3"Ìñèò\Bï…go¬¢0cTB-G;Fçí¨uW°jf;iŒ0¡ðs§æŽï9WÅK*ÆÑ&ÅÞÆóÔuvr<Ïl]p/G;›gÜäW¸J•??ÏŽÕ®ÞÁF¨¹îl²­yMytñ6ד›œgþ4F_ó~ž&qHü‹Ч3²<]¦Py×8©ú)üŒixŽ”‘ö5¸×Ù†›øÝ³éTŽ ŠœqëE0•9cjšç£c6ÊÝøí¨I»ðoKXFz‰JQî°hŒ¤¥¾wVЧÔ;ä ü® Љà±t¿¤¼wÆá9?Ê·çÑR9žÒß+eô3öÉÓ‘ëâšëoéÅÖÖsw²Ä| ž¹\†›c>xô`ù¬ë#À €‹ÏáÍæÑ[‡‚ãŒ=5l ùš]ä#¿NžÝ„‡ˆëý‰aÔOÎNLÅ‹!_ÑuT2Q®BHši¹÷B²ÉB©ý'R:¼&5¿¼8R“›÷(¼~ì äë ™YȪuÁ‹Lߪæ S;Uþiõ¨ºóõþ yV÷8ŸÕ±’míâã?–zî£nt>ïQß=xîßÚu¶ã¬¼÷ÁÏÿÖŽóÚÄjÇÙ^R¯k¼ÿÖŽçús?\ÿ×vþë|>NûŠáTýSm;ÛwöG;?ã£ù½úm8Ï9kõ݃åÁóv\-¡ƒŠÇ/+J–Åg0¯qý¡¥Š"#²8°æ÷GRÝ!ûMo°#`Mƒâh=tA§u9J± '†Ê·h-ži/'ÉÓ²Ò¥þ±%â¢ìóÂsêoihùåŒgÝîþo8?ØGþœ¤p.½$Õ)îÌ_¸}!vA#ûØKJáîvؽ’èn¾°‹â¢_‰8z“Þ ºÕ2RMü•W¡€BßBÉJi3Ö*Ö‡¼ÜÛœëžr㥒0÷ê5¡^ ’‰zÉ$¼Fx™È>ãÊ?ýµ«|†`^y§Coö&Ãù»Wµ:¯=ð&P}¶“]*f<Œ¢Éf;öàݾû]¤½t윤sò[Zº/œvÓhZ²õª¬%»ËŸÌ56ØûÉý×Ý´xm¹¨itô[n)?²¼jKRFà/‹%)w6%ôí`Ù3©z#*Ü%XÖÐ-{ÛÄŒö¯5ÔÞÑΖn Kà|±§ñ-j µjå:«@ÊóPª3@Þ}ÈÛë 8{õ“v™6L‰ÚYÿŸ´§yŒŒ#ðt$Ðå¡$|Mè¦Ùž ¦MB\Ü4 …_FèÅÎtÿŽo]F½i¸œ°<¯ñ‘á%í®½üzÏó™ïÊÒ‘5Çå.LaB=Ëšñtã»fË'jér¶{o~°™(ûßo â‡v·’mñùR[i´*"þ•áâœØ.º´Û«x-*_iœ2R@êPXÒ¡Y‡|ž tÊîOÔ¾‰`ÇF@½‡”9C½‡T¹!Ñ—èí¡ãGºÓ@Og~¼kßgxËj¿¤ ý.tXLíK‡=—{–±¬“w³žó1Æ|iÞÉ^ÌS¾W¾rÕc•~"Í7Ã0.…€3ÁÍ‘„k/r=ܹ»ÍøQî“M¦¿fkfï6á¨ûê–…Án¼Q?²=QÁ¾þ7¿R¹¸<Ì<|Dû½O‰7‰ÊF4r!=LðéØñ¡ò†Z+[Çë%F,U¾±4äÕ”F¤%_77Š—¶?ÒÛ<å³ùvF€`’º#ÚÀ€ï@œq¦Ñn´ú·¡ö öXcÙàf%Ê5|Âû?ܶëHéÞ'èržbém¿OV<×Á0ð„pŸ¶]/ÿöl¢ß¾[·!°/ÍiéÞ¾y±~5ûègõ Z†±Sh M=K·‡ý^¥ÔIð’e[þ¢Í·1Œ@ÊBÀÌ^@0XÔŒ´ØH¼ý ã¤ñ½œ4ä« wjEÑ’|?xX-yìݶû½=£ {‰0ð˜]èu§æ»ˆc˜Þ/nž&K—¬"ÕôÖWõMúI­Åµ©#ü\ËfÛƒ¸ñfâV&ú‰0_Î0ŒÀC¸#©Jë¼ )oÝ+b\6öK9²^hàݬ1‡&ßôšéý¡õJ̬ïúDŒ…F–ËC€€ÿ†e¸{±/löQ›¢ÚfY6ghá'¯¹oÄjÓ´c¢ûÈÁTE4¡"~‡P3Æ$üÿ±]¾Œ`Fà?"`…>@9^ƒ¯Àí‹,a„Ëãs…_‹öy=÷ãîõ’‘“ýëz¯‡ ™¸ü3Ìü3>óÖ€ÕØW¤@ðΨ6– /g>á=ÿíµ‰Ú­Ûˆ3T]Ô ¬©~‡m?Žmûÿ&Í0Œ@b  ‚ ‘8M%*¦¨¸p#§ácœšT8ìÕ{bæ)¼®XE¾á¿Ìgåì¼ÉåÑ0ðh\(d¹Ñv`=¢Ãu¦½9FÏ]ÔZìr†ø^ý-ýôþÚôQ›©š¨E9R-¡8&ü!ŸfFàÙ" v6Q«Øhûn¼f¬5~’WǺ…^=dÄW©·û~âÑ(¦WæôýÆ^¶]qÅÖ™xhÖÑRŽÈ‡ (ÃÎQ«›ÓcÞíÿzû<»¥¼ÖéëÔMt£Ê~—¡èǶ·Ý̇Œ#À0Ïå! Óò$]ùΞÙ~Q6úxQàìs߆T»ÜÈ"¿f]`;hb¤ÚZœ‹‰3Ž… ¿s׻ɣ YÊÕ0°~­8·&î{-•箤¯èGj–­9òXa ^=Œ#À0IwäRU΂óh*¹ßÑös|û‘·†dZïñÅ8·…U'F'xý¼’\ïŸ{‡˜H€Ü¢ÈÿgÕÉv)øÞ/·†ç?ç½×»š[Ý…Ñ"¿–“¦—.²É„ÿ¹¯O~ #À0ª›áƒ•diš}izlÕXÝöSûÏü—{ÿ–®×ÎËJÃûÑrSg ÚVÚ)²¤x@þ1 ‰Nܸ:ìbTêÅŽfô÷úuú,½¥þ¦V¥Í:ä­VYùU>~èK‘?4#À¸,>Â:2šdñ­ñá¥ÃÚÇöm_.wÏtÍs||íˆb>XñGJü÷ŽWÊ’YáW*ÿBù WO[‰¢~kx0¬‹[÷ºZ#m†èÓb€¼„¯ë•·Sõ¦È5ƒfG@“Qм‹hMñ/ ñžëÓÏz½èªV[KøtàEVü_F1•A +)•ðPó<íeŠY;i·{‡ ?YZX®ˆ€~Þ4BÔ’=¬Í(B†ÃÍO•”Š‘9xþÃ0Œ€Ë"àTîûˆtx“©ßÒ‰ ÝZ–´•­˜©÷ÖW0®à(c™sx¾Ž÷'’{âLŠãÛ‹û÷ž97­zªÏr¬ÌyÀ÷ëïòêÛõK¢f‹ÖØ* þ\F€`’i)=6\'#Ö8#½w­~÷æÐÈ"- m‘#{Í™7ò*M@ÛÉmÐ?ž”&ݦSP”ÌA!Yúù_õ.Ùü„ÖA‹¢æ ÊÈ%r€,/ãáêçäÿ7þ†`FÀÕÐàø§L—ĺSihÚÏÓI]ŽˆWá­(Š 2+¢d¯ H1%ùŸÊItàËsõ¾8–%:[럤ùõS=Þ@ø—ÿLÞ–·àçÏ…`F ¹#à‡ÝY=Aêg£é• EBãîˆþºIp^™g·w?qGiªçÿÃü›l3¾¤ @Qµž ^¤ãwe®ìým«™ÚRÄÆ²‹ä›òe¦Ïh(ä~vösŸ½Ú%L±¯ùE^lBâ3åÑ&±†²âø„8D¨¦EäóÅòC ÿ”³O4þ©ù¶9vnP©EUñ$3ŨÚÊIù#§Ò=¼(ÚP¤%YaE—p¾¦|™®âø=úÉH‰ŽaÛgå3-c8^8pa’2B†ªî‰GùsŸðy7õOn¾] –ú¹ü¢Ö×UKèºÝi 8›”‡ò4}Kö%ù+oÿÝQ'vÞ“µO®]y^MszÙ;Z-ý=Q¨L^º)¯ÃîÏ%© à ·L…ðäú3h eDÝC´eˆ´êZ*Â;X¥`Ðï¶ó²èî¶ho¹»4Š 0Þ k¶ÚÀÏ7¼NøL#QäÚ¨tÆÛØÌiVÔyù,=…l­U”‡ý´=°Ÿ¸>I›J¯Y—Z?ó‰<{|*šùÔ÷Óæ¢îåcÕNù^ô¡AQèÝÏÛ_ÀwÈ«¶§ÔÚã¾ÛÖb=úYN"|/ïÀû×_Ƚ8®OÍH¥"½-o›&&ñGèQRAžûÁ¤<Ò‰ô¦&`¬ñ.5¹ôöíÉ·â"W7Ê_ôzöqSúWi¬»“o¾€äΔv0ƒ†…^x+k¯BÞé¬7§„PCцrëá¦È’ÿóÿá;½È ý $r‘^º…@àïhô2çhc2íA#r«Ñ®ºy‚Cí[ˆ.„_ôŽOCt¾É…wâ# м”'¾R»]»aƒ¤2ån€„;"Oø # QÌøØm{\Ó¸¨4Ú]al‘ ø²¦|EIðô}lZúzÓ[”ýØ V¢G¤Åh7 ù!¬í­¥ÄN0•Ý%zH>>›µíD~»ý*èße)Ÿy´>†(çÊ€¯­‰ò Íó’õ5¢ÜrùXCð},,Ó x>“´ó`4Æèý±a4õŒ–´ýX*×Ò!ÔG¡CP&™1\ç„€ú½)* 10ž(¶LôL[íO®æö-6yÎ'z!?rô¿ØäUÔГsÉ9?Û¯u›¤Is¢æ¶—äX±äkËe‹EÛ^{ aóˆdïâ‘„¦V3ë$Ö‹UJ%¯åÐR+k,5¶ É2…†¼c‡âíä›§¿‹ƒÄ~0öð7±—±ÓŒ#ùcóƒÐ¼4Å6’(ÔûÞlû8üP›ÆŽÞ œ§åeNŸ‹O• @DŠˆv‰­”ÇÃAâA¸©È.f,Œ_ÐDExÅñ‰Á~  ®/ê!Ù'!Ë—»IÈ_4⟹Oþ®|dZÊBP¿a Ð Ð^Ú¯ÂKÝ÷¹`€²zgmi9 †àãÒñ-áR`{)³'ˆïOëEÚ:~»ôž¸ªœn2 -eW¹Ç—åh­lCõ¢‡ÍÏg’V$V¾A?Àä¸?þBعûÛbÓw¯Ÿol†…ÓŠÖ¤ÿ‚J9Æ ]ò(É•è—0=–à q÷éͺcÏ{ôñô¶¤~w…Ê»矈‹×Ið½…·"ÄÚñ1•CûJÂF¹µáV/XÙik¥ížÑ½‰Ö]Â}¼ÚÉ¡qÁ`¶†ç2ŠàÂAÔ_IêÚyí ¨ÿœö êG+ Î~ª1W.œäx*(BGÙ‹ÀÈ0/ÏÀ—  ×e­;|wæ[jmBT/g<^ð)¨õ[Ícže¡I˜–m‹Ñ_¼¡^C2—,F[P_—7LM3®¼:¸ïI‘ úC¼wâ:Ç {Ã%ùÆÌùxåžÅk|=®øÁeQYÝü4‰t÷©»‘Üçxš,-´ÞhÞ'[ý Wá¿lÕ ½žåSñIñItNž¦Ð§ÆP)’¡š…µÜ¦D¾Š~QÎz7Þ¾‘Ñ>hõüu»¢ Š_9uõΨÃDk/ü_Îw¹ãkJØìµrZ>B'ÖÁæ‰8ÑTÜJ]®Ê=üƒo\<¯›ó1yÜô÷ÿ‰~6Ã=:¼öo@¯|@Òƒý€Æ‚”žB±.¯RsSÃPV”†Ž µg1Mé×%–JÞÑœ?RšãŠq_®‚¯ÀýkÑ…(G\ö ^H¯Tx9¿×Z¢ÆyFzAc’³E@‹Âoœ£|ŒÏŒ‰Ê—cQ£I<<ÍÆø#BðÙÈ?#«ýœÌpµÁù¢gƇF4¸^-¸Äç Ú3÷€)À׆Ë‘3¹ÌnÇ@Nö¼¸¨K\£Ú™ŠdYï½wñ"Pܯ{YàêÁªÿ'™mgXÜ;Ô[ÙÒ§úDw„¾bü‚ßjí°(H°Kî,­ Buþ»À)ñ LöAöÑßki4! â5ÅKÊëR«ý±ºá” ÏÑy“W–5TXž1͘GGAèÝdj„³ˆL¦é!«æ%j¶^S/Bï‚ ŽÖû‰¾P(xXo([»¾TŸ& ‘}E‚<_h*ŒO¯år0*™ã«P;D”´5–#ÑÝßí—i2êÙÆ/òPN~á{Ë­ˆî Yg‡aéÖ²[}ìwˆ®¼ú…ã»Öîz6Û'D7ß*bÇ>ã÷OÞo`€Á‰Ÿ¿A¶OïÐÛ&ÃtLÛ)*_ÅJS‚l&aþ·õèÔ4Ü¡%Û%ŒÊŠ!ÐNkû©*Qaÿ‚¬`l:ŽoÊrIöµFxnÂ8==7! ‘ìgíÁ´Ï‹€ÞCiGœíá#F€x4¢¨(AðØín+2ÿµúÑUü èñæéª'6Þ-“ÛqX}×.ÉŒ™‡ìøôVÅž~•{-ëûRÉÝKܾssÓf×/È}t˵'ë¹ô^©öQ³™’ÔµòZa¸ÛÑÕW?µðÎõš¿%óò:«FF… «e€Ðhô·Tû¢¢ç½Ð€£¿í³SÒÝ"·)IZÖ•MTØŸ,$KËk°‰wõʪ5& •c†å¼æÇ©n¡-U¯Ä=7?¢¼5òT²~¿_–U:‘T†Ï÷Ú¯p=˜ëö>ý†þ×öŠêxzüS*}¥ê‡ä,'Éo°Û¼iR]¤ sÄþ0D(Ž¡2U4Uþï@?‚ óF~óþk0%à~ãc‚<ŸÚ€®¾9Ý@¿‚ßö·ã…qþf`¤­ Ñ‘EÇNÇÕ%:úå±qÐ \|=¨ hxƈ~òu´{ì޵h-˜^nD;·c”ô„˜d©á~c}µÒXxvòÌ¡A>©VÛÏ Óëþ]‹¥za‰!yÎY ¹Ë1tõûricÍ& #ðhÀ”T7[qÛYãDÉ­Ñ I—z-ß\£_îï¸+«£Ž|t+IÿlraœœØ¥ë·®i±µ¸_©´åÖdú`u}¤þ‹È:—.Ê@ûû‡2 Qø‹ g3Ž×h3$ý‚»fÆÀ¦ÿmð´ á§à¼×çÄìx^1]LU²"F]ÿG¸Úß=Ân'ߓîýÆY¹}Œ5P̆j»vöÏ-Kˆ*½YÑê£jÊ;Ýß„kÚêÉÙ¯‰ßA ϱd´ÄÒ§ d•e-•XGŽ•ßÒÔÅeY3®'í2<àñ1þ®3OqÞ[x™¾¥¨¤Òl ùÏ*eƒ¯]¡ÞÀòÝÏž›@#pó~S#è½í|Žø>ˆNœ±;2v>pÍ·kiìøF¸_8¿ð]õ–p†Ô kY•FBìÛ(úùo¦!—Íd+ÅàUú@€rgËUÄR¨××=.¦ !zYÖ}Íc!ð®aÍ'毉Æ4°*ó¡'›žb=ð­É´ÈúáßÓwÆg²sXà…üç>ºÕ¼qµØâ÷vØ|À1hˆfÈášE¸f·ÿÒë gDº½¶3;:´}õRö¼/§:³à,ýN稓Û&Š‚ ‰¸<„€Ó™ïŠT¶ìHϨvÊf¿pÖ¢«‘`çÎÏ9ñ÷-B5î@õÒ_£Æ PÊ)NIÌ'±Z!7cuÉ¡Påã>c¥±S|Ϲž¯«Lz%ZËfHÔpw}ò#QITœé~ªûÈLt¸ÖèQú ê‚ûý‚´u4ò9^Dˆà:ÛCcHJ‡N•~foà#.ˆ3 W-X;G Ȳ§|tçæ·ŒþøíïgcG­¼¶ltìR9õ@|ðŸnôÆ}é5Mi2Äf±Ö48}1³SµïÈ`¿h„Ð&d,¼êõ“hEÔÚ­eŒ×DÝüºÌðÁë+­šyš'æå <'јc¾n–‰€Ò´)긇¶Ð5šr':¸nô‘>=‹wÈ‘ã»Í“'&`bäs`ÓÄU1J. @TÂXêžèp-o—ˆÁ_ùMw×#bDLcB™z1CÂåògÄ4ú†ÒÂÖÓ^B‘5öÈ„rá`§–®úUFÁVn›m[Bß‚½¦5Wqü®ëÞ©šVíÀhkì»òð÷¸ Tî寗Éáî çú·›{{^ ªø~ùîs`›Ÿžº’¶„q¥ÜDgQO@äûQÔAȸ¯=¶løs]ôȹúü°#†aD~ö“Ú^˜(ªKä¹ ª^ ü–”_úY44 »íÉ[¦†B£äOæ<Ô§Ú¸¯E‚‰æoM-0d(Ì[úÑe`6f(¢î‡µ¿õ(„ˆM‡¬ñ]F”¦CšKÚ\GÒn\FàDqä…€!Ã3Řv;ß­ ßÏšÐ7WÂ%±Uj žk¸O%‡"Æ¥¹žÖ×}û>·£îuõa‚h#,ž÷© m…܉—G# _­•íÙh©IŸ@Õ~:Í7ØX9ëáã?„æ°Øo†é93ä=ÜŒCŒ~«×JkõUX`±¥EÉš“¨}ã×JxÍ ª±ê¥©Að?Kå)6‚AHoäU‰rìsì™$Té Ví¨(ꎨۡ†tüŸŠÅÔC•­^|G3CÓDœé&î@W(¦¨ó&CˆXü“!TÛ?+ÆPyÿªâƒà?hÏïùØs ™If3MidF³®Au”—=í‘ûMÍÒßIæªÍG£Hny|Ñݰ+FÇ}–Ç·ôLõ*·vŸGTút©—ÝÚc‹¡{½bß'Z0ø‡Q>ØÍrý¡ªq;ll¯™ŒÙrí#èCìm¬c\öÂ-‹>P¶ÿÔS[DKøJÔqëÝœ(d„,‡º›|Ù¹0ŒÀȯECʉ×CWëj1&ß•v7º†šåÿC–9éN…Å~é¸t‡£ŽzàV—øèê @ª”ÅĶë:/-¸Ï{¯e²%\¤ÉiÅëýœ¬ˆ÷:¼Îƒ\b.^L'ãåBE:,¬~jóš.];ðžo÷÷‚ûÓ‰–½µ¢_44òš¼ Qqñ •òR„ËXfÿ J2Jw%Ý0-+QËŸ[TóD´@›–-/x]„JÿõL'´—pÝ-ئ'€p}iÏ'ob¨Ê'@iTqÖ Gþ딜DEê57PïlèÇJxÓ£_ð=0wõ‹Ù&&…¨‘iäV¤ð¼ßƨ0ÅI¡ÑgX‡ûKŒª ûU# ­/ʼn]¢°í‚í‚8JŸD@ˆ»ÿ,àSà3ÔÇWtCJß[©—j È~á~?j×qÜÝ׆Ìäà}Yk Bú;üÎE?>Cì@àÒT¶3ÃËS¦Éâ(Üõ€tü‘E±D×廪²Í°ÛÔî‚î3ÝÛÀ}‘jÅÖ(å J©€»¬ƒ13VFÇC²R )2Qß_Ÿcd.Ùµ´p_$Ñ®˜°]ÂÏ⮚WÃGfABª±¾Ú7îé‰ÞZðæn¼®¼†y]A@'§Œ÷”Æ Orѵ(¹0‰‚€¨Q„6B/%¾Ïš¥ÂÇUvd~-Í©hšZ'á! D ×*®Î@2K™"ß¿‘.į´¶X¿-NdÏê{pÏ9΢rµsù>(2ØUÃç¤÷>QÑk?õ¶xoƒw{Áàó*÷þÎs»ƒãVã‡P[«§v»ƒ„ÞF‘´2·K´Â'¶÷þž |¾ƒª?]Ù½nÞµfšÕ„„ÿ¶ýˆ¶Ñ:ÊßBç÷nˆ\W—£“æ¦<È ›ýŒý,R QHé»'Œl 4úâ [¢eNŽoHt:þl”­ Âó]‰¶ß…cßíãöÑPÝFÎGœ6ùˆ]!AjíõìCÌÝ3ËWÃCÕ©üü ¡‹½•døýOŒÞPoª$g·½n T„÷ç^ãÒHi¦K«Ý‚ÓbÝl«õ}hW`‚õUð0Ý ¾¬œóÖÉ»nŠ”¾Aº ^–¬‹2³Ì2‚¹ïž'E…ÈÃx8ç£ì‡oÉo§áPÕ¯H“OCÐyUÝ ¾e•ª®‚©ïLŽ8§Â*»fÄA1"Œ86iÌ3–«ñmSd¸óÖ¿D¿w}N",²RúüÚ´»Ì¾™¾ÂØ PÁÌ…x4÷鎊Òbµ²âRº­ÙJôóÙ›!Aðœ~±£ã¦ËŽÚ倿“J FÒ; å¨*ÚëK–­»ÑèrÅÖU-‘¥ÿòcKÛ$r¦)ì{ÿ' ôŸþ:lüú[zGªEtÖûœaATbèȰ™DA[/ͱM"jQ­™çRh°;v»ã½ ‰hf оáùÞ¾BÙþaxÙé”Ô¡¢øáN‚ï´‰¡ 'pÈõóa%§{îg‘oaÏ€æÇGǃ@oÿzgÞX¸ÞìxhFüTú°«“ìÐDDî‰ôF€'цEåÊËÅRlðIãɧ¢ÄV±IÙðh0ô©Qç@¦/Åò8 ŸÒD¨âô¶wú8Ü„žÂŽóék3uoä/„Ä-Ãe¬²©Ã$Cå%ÐÞ×Þñ<Óz‘ÿý,íµõpr\[b±ý«V½ò8÷AD%*ù–„;ý¤t94ŒšPSHÝd7*©ð<˜C.šÏû»”¾NgËœ Õ{èm`„ Ð ÷¢ŠDó·ü]õ©*DAK=!u1]1ÊûÓ…¾u±ç@…26+"ûçöo̼x$F€ø|¡×ÃïTþ.WË13ÏL;95ô½×ª×ÞY6bÉ+›%ÜmÇ›É,õµËT®Îà՝оg}·=gZüÒ°U¡nÅv¤ë·8—ÖDëKS<¢érÿ+BÄåñ° /¸ÜZ:ªoõÔû{Æ÷á½su­x6hòJ÷åpòkæ‘Y€ "ü¬ž"d¸+a—½‡Ÿæ$øºia'1óÂâzO¾ëç¯d4'ú­êÖ•±]‰Ö÷ßX9öÑ™g;Ú 9GÞ‰,'áú©pZLƒ~-Ôf™awÓÅ·ŠaÀN^©þVÉþp_ãØùˉ‚ ’¼/¿‚Ù‰ä[s<:N lÛCy=®ˆóHG=w!Ë¢ÚQ5[ºƒq¨S¬öw0V9/äPy Ä·ð¼€sž¬(k+Ý—aÔ8ú.ŒŠöªÖ€òÁtPú DÚmÊ •¿G ÷ü"› «QÚ ?ò$¦Wì‚d2Žv¸b@@½5ü~&ÉÑtPú^δ$|a¯Å•þ}Ñ™Ù1 wÚ;'ÔøÍºXq¾Æ\¬ÛÎ ŸôõÛ—+Ôzjçê¹–å©æÛwz'ú.RÕ´)p…Šãž¯Ç¨ÛOø)Â*죄ê]L“Á…ëX¼iãî,»›‰eþnW>‡ó X!–š›ý¬Ô+Bwcá͆Æ×H!¼xí˜~D+ެœS sêeµ/„¤ú«}Aàå×2)/y1YLR„ßeŠCµ/§ËÙ@Ž i¤R‰Ž´×µ6”»öó߇\~Tÿè+ù<à»ÐdA£Åx}ŒÎ±K÷¾íeG…«´K‹I¸ÿ_‡ó¡è-zªæ¢6ò ‚±’ýáôwhù€ðƒ‘§°† ǧap`¹£ŒÀsD@ƒ¾MQÉû𩉇oÔw¢ÓËtÊSlAĘ% =‰N¨±Á—‹Wg¦%àmͼ¯ÕÙF¯íé»Ü¿}¶>‹ÆÌDðFeCñ·ÁCšËÓ"à$@º€%JF9¬únÙÉ8xÃe«KK¯{©Ýë¢{DÍ–^D=7/ë¯v·…Õ¢sÁv¿øÌTóÆ #XÙÈE°vsG¢b”rÞ©úþóSþýÈ‘‰ÐÜ Ú%÷˜Þú“±ÝgŽWÑj¥’Wå‹õ!2ÂPNŸ^†bÝ õ[ð @©¦¨¡Ža8Èf3TÔÓ§­?±xžÑÞè¡4ôuW›å:3•þ ÑkZ÷õ„ÏEÃ!õ§¹7†ÓáO¾-ÕöuÆnåÌG—¬§Æów„Ü™bØù<‡†Â|‰=I¿ùF€ Q;‹dƒ’¼=2fÛW^ůç¨;æà® ÐÄÂØ¦ŠáÔ5+ï—(®Ê8ú-Ô«Å}Èè ·Ú¥v8S›,åYT‰¬Pƒ©O(ÐݹFQ¯\W,¾ ójý;}«~H„§RÛýþõ?!©Ê rÅ¡¹fŸEs¸µ¹ƒPØtå­¿¹Üo»c®Mé7}Itø¸m½0Ì~ óm­4½Â¥*Y¡`kØ¢þ 7¸rçËmµîG<{átßk»@;i•ïäLµùŽ< ù57Þ‡­&a/èx"î5KIÙF)iþýÿ˜ÌÒL (JÕŽ¢ç°TR‰ ¸çÕпŒ?g¸ ¡íòsÊ÷·¢­ö¹Ûú¸ÅöÈÖÃÅlßÀÉ1jÍúØËHøñ¾á¶fHHT$¬Œ ¤@Ú$0Jb¼ÿ½Ñ°ræ{°(\”)¡3uP¦ Ïm3Ü'ÁC3Ôó´wµ~ôÆÛiƒ`’0×û£ªÛäÏŒ#ðDÈðû ÎigÄE¯¸Ì]³Þð¾otlèaüü°3JBQ¢§KWeŠ:Pþ$u­Ô=Ý–jQV c=.b§¸t° ‡ï5!• —g€I¸¤¿œ§œäÊÖ,›J-ªw{{š'ÞçÆÌŠ:ÂW"lˆ< ÂÕJk¢œiL‚‚e¼‚à¿@ؾXöP[xÜß™KµžæÂWqgùeÖ¡PÝÏñI+ Ë’²`Ân…²­J!lÛo+§:˯# ~¤ŽÚ¢ƒãÄ)q ͨ<ƒè‡ÉUàù•âÅ(á{Â7;R­¸š¡VøÊ+5· 'ËZoMôãª%EbwÂ'Ñww£x0(±wccU ^˜âTä*0Ãe^Œó.Y‹<¾ ÅðèØ½­'LµJ× °¶Áó'Ò åT‰°ÃPŨñsag„ôrñJ“‡ôgçd%·¢éôôYÝ X>Å™±øÅB'h—cÁ]•ðMÀ[ŒóÊãíc©¯-íÄ@‘Ù£2ŸÏÆT„+V<’°ry^ÜÂ>}(ò"üÚA¨ë~QÇׄ°™™Á«ˆ&W›=tß3>µŠW7æ3Ux[Öiþé5Dk´ÿ°­Åý4lÜ–†CÜÊ"óݯikp]Fl|¶qo{yØLë „P%ç1‹§Cá8|a• „o“Q°ëvuìÖÁ­°ª+ÇWZo…f¤ø÷Å#-¢!â7ÝŽëÝÍ1›`Jèp!›ñ2èx‘Ke Ô6iK)'vñ»ÐJ¸!ÅrΧÝÞÆ÷sÄ'ò4Þ³'ùCWe  6‹_ª%¾ÇÝÆë߈ïÅìVŽVÉWåp|·›ÖvH¸ˆÿ>?d}iSOÓfkå•DÜfSËËn#`Ëþüfe£ÑO³—ü¨ýT*QñŠ¥R[{½æÙ‚ûœÂ]ôœ¸q#)‹šýˆ}Ìc¥ o„z5ö³{ÅÓ öS»F›Í;EûDz–,— ØÏÚ¨ñx-ò¼®pi:¢qN·«ðî?QäSý"Ñ´™3¿ˆN›fmöЇb­Øšï[aRy}V—h@¬!Öt*Ú@΃쟀Ƿ,õ?Á$9%U&HU¢LO'hˆoIIÈŸe; %„–—è7k?¯¯¼÷XºXœt¨¼ Ö<§EáTxbKŸ»–ÙúH$ž-HŸè?ÈF´ ¹ÔH6–+Ì]ОS‡ø1F@Æ"e.~îw<ÞV»þuÔu¡{>8ëuÏ;ÛÖPõZU¬Ýa˯•¡R‘QÝ Lò "ó ´UÅþÜf¢9¼ïEQD™,htF©Qw‚O´ r‡ÜiÊÔß„DyæÈf¬Œú (÷'¹ói·aÂ7½æyŒQþ ½,aÅ8Pf€å<,ÕSRaÆ]ÃW*ù¢%ò(U$—ÇCÀédYUTKIÐN5Y¿–0^ë|u2G@¼"Z)Ó#}"æÊr–µÖrnu´õzqÓÁ˜DÇðǸ ê§àŠÖO³ôrOí1\?¡E—Å´JïEÛi2v¤WyÕ-ʉŒË BÀA@ÁÆÅ¤Ýšv£€á¦EŽfCÝ¶à…»^õY éG ±pgôñmlF¬Ø:'íä­q*1‹(.Š+ÂoKg+"×ýz £½r÷w*>ÛÿçÏAbº1’6l÷ϬD&¨îí›ì‡Ô˜}~÷Ù#Ò@3мI€[V<ÿ¬G·@ø5#5¶#-Á‘_àáòÌÆ™DýÅ HÑïDÏ”XoG½m_ øÌ29uÔ–â–²jÓ'y'Æ8‰ÌZê”ÍL¨}°ëç`=•¥®å¦ö•£œY^sÔ0Þ¹VqUÀ´«jO÷ îMô¯Äª.^—“6—JÉûø&¤R!syÑ(w’…e3³>-­f‡b!oå4?9™9óà™ýqJþ‡´›*UnP§K!v ÷bÀO}"D3ÑT…mÆNŠ›©F­|euLü4¤ ¾tú]cÖAÑõ§ã!qÔè¼´¢xÄ2¼ÄÁ b#§Ë®÷:"ˆø¦ÿ‚@%2¡™Ã®¢Me^-FÁN  +‚s(ŽY˜pñ¬+ÓÑ ¢Ruë\ër­†I[©™£O¦IÈß6ÖÜ ¤W9—Ž€Ã©»ííSüåN—G¨7ìÚÔݶ‚^[ñ*AÜñÎN› &ˆÓgO[ìéà­¯k¡¯Tš°”g€á³×¤ð‰Jäá;%‹xK…Wž¾~ÚÝ^ó±ó’ &­#6e¼oµéž­ 6cjÚh˜õUì½$Ç-Mù\”•Õ¶Ï0KaUpIñ\õLÀ_ö `í­ ŸhÊ19=þƒ•4 3 žu•Áñ€tnÜk§Å±•6F½@ ›.Ùeoþ¬{Âí'm|áy ^á3ècµ9Ôúû¿Ï‹Ô¾½¯'@ö딄²1dÜ=‚ ¬y/F‹ÂÅ 5× )ÐÊ#H±Â>¹ŸmÃI{ªì('Ê™¾ClT¸éêFkæ©=ÛBæ‡ôÁLªy¯Hűú^íoÄ`]ؘ/¾œUûuë‹i'dƒ¼§öˆÀ¶Ì÷ÿðKyðü9e!/êÀ(GTMT–$Þ7´’ôs€ tªÜL¨\篫šT$¸*×Ü6»ÏÒŠjkó\öÓçÊÅÔ)Tf"PãTÀ ¥È¿NÉŒx_Eƒ\scDѺÏÖÇÛ>AÿN.R›éh¿ˆ¦sÏtä-„íKö­}lÐ4÷oZÇ‚h’¯øÖc’ íØ‰H²m8i/'§¯G=Èñ0ž¯v¾¯q ó:fëÏ68}Šø„yƬçÀ\’.*'Ëu·×w·Í#jЮþ 4YödÉ-úaÞß—û7²& iÏú3ïl€GÀiYöCš±ÌbˆRЬD–Îí&^vt`ã3ïH"?ÀUÀ¥Š—u©[OMÓ‚Eñ -Ô® Tî¼·¨© s\R(Žm{Ez8í@åÿ[î-î6ø×]ü:¨¦¥¸¬1sý«]Q´vZK¥Ì .ü’\N´fĺ@ÛA¢¼Mó]sS„Œ"Ÿ"t©Ž\NѧF˜BJn‘GÍ“ý¶qWÍÓŸµkl`ìn•þ~¤µ×6šÛ„{%ä—°²a], úÝ@f€Í…¶Œ·!ú¢}±v[­á=²{A^vq žRŠ<̇Õ¡OR²?’ÝÀY]¼mž©£¼FÌ]¢kWe Ž™%“u¬õº¶@ó‚w8Ó¯Òô½\‰Ÿ¸á—Š€VG«N«»q»+d8ZÝkí×ÊæoÏnKi†ôbzQ‡“h9÷FF~Eè‹ÂbŒ_Å&·Íá¶®Ë{µñËD9¿ÎiS 1f }lNZ+Ë¡ñщ9JR ”W¶Æ<~µù´m"ºš‡r›¾óìÔ©ÍžÃ𫽜òþ_3mÍ4Þ.õ–Ö}[ïo–ôþâ†±ÞØbn¿¬Ö—”‡€ôXWä/¯Ëª-Ç#ª©•G‘e8û‹ˆ®U\•p¢œÊêim¯ÒÖâg}J.Ô= ²+‡T)e±9JÓ‰Çy%×)'aþ ñºPo+±}ª‰~έ;WÑ( °5,ûø þYŽwÉÚÓd°èº¿ü¶áf*Ú #è±¢{kGÜw’ ²ü…àŸËýÜ“ñH‹=AœeFé«4;ëónXa+ÓO‰ëŸ«}A´›ÚeRžCL§­ÿáXZ*ͪÖŹ#ç;xÑo‹Þ¾ÇþòVlh>Ê¢¾©ª)P8ÖÉÿàO)9éå2c¤C¨•CZ ùxÜýCÇü“«bઠ€áÙŒ@IDATóÕë©·°~ZÝ#é3DŒ¦œòUê*×Ë ºêªÓÂý~R„. µ{^è€Ð²>¾ί.o[„=fÄ· ÝüëèµÍxÞ¿{@EH|eZ•!nýÙ éloÀ6ü^ƒÜ:4YçúWmÁ? 5zš»ð9Ž¿kÏ?[œŒÛmªÚùZëWä!Ì[ ~¶¾˜GìEù)6™Dµ.Àö9ßê—¨#j)§Áø÷ã‡Ó.¬›†«GÚòÕìQÃ]ÃüûNö½(¶£=¤‡0·“þÓÝ|ÜU±>ÀÈ1¤É’p žMeQÁk¨"5qÕñ»:¯·¼'îŠ]Ø fœüM›ƒÔŒßK8}Á ™¶;Wî÷ã!à”ä¶hëU¨] ö ·ÃËÿT‰S¾޵1Zn“`;ÂÃþ¶q§jø€¶SIŒ—*]î+çÃ6<{ó ;lÈ›vÑ·âî´ '·Q«í¹¼8œ9ý᥌ùÚ¼è·Zö<˜· ËW°A4‰Ø4¾ØG!ï?vÒ6XXË©T½§^9iäÆ:Z¸»£½ ¶£ÞÖ`•Þ¦‚šö†¦f‘AÿÎd÷¥;Ä„âwŸ“j@»\ÛŸF®ÎæH½\u¼®Ê8Õ·©õmzg Ò¶@)3„>ÒßÇf­!ùwÅf@ºáªÓÂý~\Ä^0Øv¸køL$Ñ¥•a«òÛa³-[ŠŽ@òï¦wýGÉÿ¡Âå/ŸÒØ÷Ø×+/ðµÍ×m²í…m8u½®ÚHh’ f(&C"Xn,1w&dMÀC>ãC'£ÖFk¬ör>x;XæÂ<-_»Ó…¬ý{!‚Ÿž_/åØÄùÎøÇŽ‰®¢‹ò‰}9¶5mÀ:òY]֎诌Õ|µÎHÙ<Ì;³xó^AVz¦©¢ÿ±—üåóFNåºÉÌ¡ÜÈð>÷¤µ¦ˆùú’ÖÑŸÿ´Æžwßÿéy®ÊÀmÇ,é´½Za1P›/—Qù¶êË¥r5~ »ÀÀ›—K2GÀ)¹eGf.Hnû?Ü?Îx‹èh›£{Œ6üË`ë!µÖÐÒÇB©Q0´%Ažï%¿&Úº|›‡½8Q«-7ëÙ¡Qž…} Á üŧà±Æ?6 \ë 6+ÉkµmÅ혇ó½¯Ë9˜w’¼’üöõø·9×SY­˜bŽþtô #'ÖÕ×ûs½±Kã÷µVkð1ŠØo™'ˆú7D“Å÷ˆþ77—CðpmÙ :ƑЌýƒð»ì]•HÈ QKü û‹Aô9|½g ;267¢1v¹Í|1»ìÔpÇÿ b Â?±Š£VF†KØhWf]õƒý44ók£#Ô:Ðé;MïÝÿÒØ#®UDeå%nûÒöò_]xõû ¢Ú3kŽÔÖ¥ñóë(f€á FØYô#àSÏøý¤Qû)Þ½2LƼø®`oyвí#0€zU½ŠCò¢ç‹ÏáS„ ®è’Ñ•Õ:Z™iÕqÅøUì^!JTƒ…±³GQóÞKöæTÑO±kÝd5Ìõdƒ÷ÿ}è~ÂäGxßÄcß VŠkWeœý®kì„»_n¤p9H×eš!/‘MFb2varXàš«ò¿ôÚ)©yjÙ•xhîáÚÿ§%!FjþØÛý=eþ>çs´LÊÉìô¾3ãä$¢]w56~%jü~£ÜZKð›-á‚ç±)à¿ÌÞ“_ãtú'&¨yßùÁ®Æg˜—£g¾”ç0ï%´6¦ä'~sÞ³cÃhø¼i”Á:«u¸¾q†¨ÊÙÊ©´v˜÷@{Œé š€'†Ún”A 'ÐÑ"ŠG²ypžx¯LVFB×.NBêj£pÚZdúJöú?rÿeÄ„TWŽ&]mXÜßÿŠ€xG¼«¼¶£GÆLTqý+׬ΦAD`Dw¦ÿ®/W;±ŠhýÀñ¼¸×â:«m¦Wý¼úž},Qõ¸êÓÄ<؆ßô)OP ˲X.ÏqZœR›9Ýß¶Xe`_µkueûdÌKµ8úóÞFo˜ŠY±:FÈwå"ª Ç­<½ªºq•¨tçÒn €ÛX·¾ð'9 "û347û€ÉÀ0Ïð/¥!©ÌKJÐlˆÿ.\\•pB.( à­í¹A·X]‹€„¦jfœ0%£Ú)™ùhET¢ŸQÌÞÞ7öþb@¯]Ñ&!;D³D~;Ÿ[B+¤ž{¬ÖqR»Nî­½ï3ãe¢º?× E Ù-vajX"LÜEçÄÿˆv_ø½§ö}a´À<¬:¦æ_ Á¼ ãæ>qɰó¹Wµ ål¸·Û¾ýƬ»¶'2k=‰ÊÔ(SD™  Pï"p ŠMä’ìPôDi.9èLé2§c”È7áªÅÕ°bpÎPß.3«„¨KÉ;ªF* Ö¸êºüÛ~‹Æðñ€M>nkœ›Êá¾êÀj‹ó~Åý‹Ô ïßëúõ¢~VE ƒÔóc*ÇÔ¦“x~¿U%Œ¼D•c+VnDž]½ò˜›µ•í™=«!¹D»bô,x[Enˆ¸LûûÞUQ𺠘1£”FFߥo~¦ó~M\Qš€û»î‡+MÀªWV{Û±þŠu,¥ƒ!°4Ô÷+Æi¤W<”bÊ%ðåNþ v9D™œ@_êc_@å\º\ùš¸zq}` ­s1 ³é uÀ°1-“ßã¸1™põõùÿþÛ^«¢»Þ^eq?³ìä(ª°¶k6ì%ñ!ÁÀ) y ²ÿÿ¦gðÉ)æÑ²©Ä2‡Üÿ"±Îî>tÉETµgÕ çeU£®™0†%§›Þb§VÙ>é`à¡í²%p·^†m|HË­åSç±%KâJþ÷Úvø‰ö¡Zg;?ÞUKEùúL+ gТ]ŠŽ¡M˜÷öy…›yÞFÐ¥ecñ’É4C:±ÎJ$_âÒC2;ïú À1ÈcpÆ’« šŠ1½À ïb€ë/Ïÿ@”¥•Ë-§m>"=hÍñµÑ¼¿CZ‡ 0½ýsÀæÆày)`Å<1W=+²\d5%‘®üxõÇ’hï²éRǺ—tk©â†åçrK„ÿŸÇÇýˇ¦Æ%[ŒÕ_O$û¥Èo"+©œ~ðõøÞÌð÷¸ ?áõZ6‘Yù `ûèiAcÍgk¿1z,RðM µ¬U&wÌûïòÀ£s>áƒù¶Š|,ŠÀ>3 t¦>2vtt©É íÚS=Üõ¨å õ©ÌdfèB­2€™Ç¬.^qÜ"\»¡^¼~ lH÷=dÛ^ U¼Ø".›A8¥ FqHjÏ|ÔNM@lÒ÷_ØßG&:^úX3¹ƒ¨\·r‡©4†V»bÑ–oJœø–†„‚zLëK=€ó‰ý?bKVÒ¢´s*Áäþg+ù?ÜkÇ:×ÅUµî¶~¸­€„ÓiÓ›Ô”˜ç|ùo! É vÃtåŒ#èšÇо(€ª_ÃEwòã¿‹×g–Ã*›J¼\€ÞPŠoà5›L\\ûO€P0< %ßÓº\ëC”nð»ÁßÑ*‚ÅÚbÅ@ l~¯®yžEC>@h „µ¥£° ç]ík€ñ,^¾ÄV_—å„e¹£År1K„13­Ek¥ñ‰­—EÆ×««[K8ý…]s§æà§ŽëGcðÜ‹3 ±ÖBàfÁ¯"É­Ë»¾–¼†M‡çµˆ×Ñ«8‘ÍdM.!0™‹Ë# èŠÉ|:óèÌ Ð5Ï0CšÛŠ»è]žÀDL%HüÒ_Δ༩–4dŽw#Xã¶‹Î w˜@.µÓB(𥠗2Ò äzO½ùcYùB¾R¯VÓüÇõÏ:g?ç!ŒÈî°=#¨âÒCO[T*Ùâi‹}+Û@P+˜5ÿ\…ùiµCê<~”J1÷‹pV%±ÞýõîN°æ­5ó%|Q _)4–ª¡¿/kQŠ¥‘;Í /¼¿Iµ¢²qM¶t¶) Ï5©Öô¡ÒÀõó»ui3$ÿØûCÍû‹.NÆo¼ö¥êÏõb×Kª|ßÝø³|“èõW»5WóNw,j¨Ú |ѽæç?)p„æôEÇ–ÀÊ þØ øIÛL÷¹< -$|ôzú.yõm½¢€žÙ˜H+ì » õŸ(‚yõçkE”¬µ±þF?s;άҦ$Clï ;”ÇÍõþ„ýù×Û’½È.²(µ=óŽ”j¸YΦôQ¡…+¨MƒŒ`£‚úžË£Ð6j^jÞOÍ=uPÅûoÜqO½xE6‘@ø~t+ÏñlF3:œ¤Mj^7tÚè‰@@jàÖ 3t“”­CÖ…P“ñ¡üø9öŠ•Èˆ`ª¡Ö¡qÞ((‡ƒ¡_¡]’9´””;‘ö›syàüO5TøÍö˜e”êMKªvƒ£©*3Ïq%%Ö£ªRÍ¢I%9í²U‚gÉ+ +µæ£þm{×ÄêÏmÇ)ÖÔ^R·Ü‰¿ã©•Ee~,¥œk®uI­O9 Û) 6Žóþ Z7S±O¢»ÖCÍûfÏÍÅTþwÖß¹£v[cPÔ¤=^ˆåÿO]ýÓcÞÅm»:¥æ•Ï#°8xñd¹ΠyÊ]Cšr2>2>2ç=©0.ü+oSIÅØgÙߦaäsîËóãЃê›wÚþõþ$z«Ê"p³RÅmo›l‹Ÿ-–Éët:÷œ+Pc±U›˜åBÅ"™H@É%ÿ:l¬Æ§ÆçЧ‘¶V§Š8ÉHþƒë``äYµubXàªhcºSߢÂá»àkÞ„À„á?Nù}lµ‚b¯bIÍ7,èLO~‡ÏuRÅÍáí/w%˜x´BZA5ïÚ‡Ú`sÞ#Íı —?¸îðD±Q—©Œ¾7ü£Î‡, òi<6,ßÕ_Žæ?æ Gqí£Êè*£Ã«Õµ‹qùÀ0 ÛPû4S6¨"–šµ]F%1YÁµ~Þ½w¾è‹Ô£EV=Šó¼yÿ8ú'œ+˜Ú+Bf»d»¤j.ÿ áˆþ“8áwÇ®Z)a‘xÿ`¾k¶næ¼;çõ\»nH異N>„âß„ÑÀðÝqUúì]žÀÎÌ9ÌÑ”U®B åÌlx㊲Œ’?¸2þŽÎÃ2ìBÅɨ8œEY^5{NçN'Žuó ¼ØÉú“cÝâÄÅõp#“ž`'Ðs09ÌL.?.eäÂ0Œ#À0) fRØ„ópF€`…3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ3¼F€`ˆ3)pÒyÈŒ#À0Œ€…!`@@#$wRÆu[e Qª]$Ú4ðüîcaD“cvZŽö¯Ðë²’ë0y…îSýÜ4Kì&êu¦âîzk‰jÉ{®Xj0>ÕÏŒ\O 8 Òñ´C"“hG4?êкm˜§ŸV-¾ ó¦“ö–¶ÿ)Úç[dŒ3ÉxryhO€LCå«D9Rù¹g8LT¥_Þ‘Å a‚Dbä5Û·ƒ xò2Pë®-'ºz?ìÖÝP4ó.•§7PGRÝ}òf“Ìj1ŽqÕ&*P"㡬Ӊ*¯ÊÓ½¨Ÿê¥qÂxû©z«ƒ @ÑZ* Ͷ AOe†©A£jÞÌ €®?#À ÀŸñà#FàÏHò /”¦2½<©¾2nØg™uz¶f”§c”|Z#—KhÐZw²¡V>ê¿«ç8B025®1r¯ˆús£]‚äoxÙ¿zªA:òU¾˜§ òu´7î¨yC‰0ÿòF€ø Ú_Îð F€`F€Hö0짘È0Œ#ÀüfþŠ ŸaF€`’=Ì$û)æ2Œ#À0E€€¿bÂgF€`d3É~Šy€Œ#À0ŒÀ_`௘ðF€`F Ù#À @²Ÿb #À0Œ#ðW\ŸP¹ÆU²µF€`F€øO¸~&@ò1s}Y‘ÔÀ˜öûOƒç‹F€`”Š€ËkıœŽ"kjCªcæNW[³$‡ª)uEò¸F€`ž ®ÏtÓÆÓF`5JL¥ë¨cñ€ç²xø!Œ#À0®‹€«3B/FÓï.¦P;·3ຫ‘{Î0Œ#ðÜpuÀ&ÞÖúÈCØsüKK¡2›²à¹-~#À0Œ€«"ઠ€³ßAb€èH;(HŒ#è…ÈX°lpÕõÈýfF€xN8 ész\¢?Ʀµé$ÓìªI@þ™Ht˜¹AF€`䆀«3†ð×Þ c´_ô„à£xf’Û"åñ0Œ#À$>®žà¸-ѵÿµwðU]>³÷ÞôJ ŠÒCï(MAé½ ( ¢  ¢‚"E)ŠQA@”Þ›" 5@B0½'·ìÎwvgÖ÷U?E²É~ÜfïÞÝ™gËœ9Óø‡X÷σxX‹ÅÿÛqûAщ D€$V÷d*÷±ú ‘l(Œ‚d؃7õ(H·(å…"@î«zÌn~^¬"«Ã£`?<ÏFA9¾ÜÜ%@±Úw³` €ÍÈ»¼~¥Ê-œŠq<vüWðÃóirÔ$ϛͻ çÕƒ8Þ¯ÓÍ~G «¾rRä:ÆÊ17̆`8ôç—à šìX±Ð\AÊè%ÀУäÄ™&ÇÂBœoà+6E™ ŸçžÄ(1¨¸Ç-Å[Yƒ?ïÊʳ†¨ÛÐÐÐýrúÚa} 32_mØ1æ‡ye¥‘oàN^Jßt;¨œ7®Ó8ã:U†VwÓǤBAÀª@ª¸:ü8;Çø“¼ïÊúàƒ?‹ÿSøªé[(®eòŽP®2_¥ À¯ÅÎ:›ðöÒo_[~Ëæo %”ÁÓ«¸…¾ÅMe/«ÍêD¿øsýøzÂR˜ŽŽïÏýxlÀÖ+ç=:óŒ94<ø÷ÍÕøÙq4Èðº(ß2oÅu?ËÖ¯›/"@~OÀª“YñÀ!Æa9de±ÖßûCÀê]hËÝ"£K°Q¶±¯Mw–"@ˆ@A!`y*°7aŽÿ÷ƒš“ðÂh·87{A¹¶”"@ˆ HÀòÛ¥ùxp:Uˆá£°ø×gk¡@ˆ D€ü «•¨ OÁ >'f-ÙØ àÌ¡ö'—¾"D€"pk¬j˜é΄/Ø$œþ·+áßB€9ùè­‘¡_"@ˆ(À¬º€yIœ¬/Œàñ?Ã6^ ŽÂY}~”ÁÅ(üM€Kƒµ$»W_V˜•„’àÂ$›Ûówêÿ~ê˜è™Ã¯ÁO¸üÀ5üË Unÿû¢=‰À] àÅŒòäCH6´Üc¬Ùq’r;OiuÀ—e²Š<¦ØjÚ{óêpÁ¾Öþ÷T|¹„Óœ€·óV¡cÝh®âÜ•j-ƒÍÃrÿkm´Àr±ë‰xFþ³ò¼v|M¢OŽ/ãKpåC`‰J-Ø…«n±ýÈÿƒùË‚L\þˆÈß¼ñ®ÅûµÄ!ç <§Ìƒ' ãýûüð?OÕ €Våæ–û1s„çÅÖ[»}m˜Óß^Ìñ“r3} ¾Æ— "? Èš¯ò¥²W°€S×NŽñ½°6nõ–°°Ü_âù‚aÁÏžd} C æâ/SÅ¿¿ýûbŽu»zºwHA Úþêís>Á!;}´®ð4¦ y<þ’ í`)• †nˆ«“Õwù~qßsß M› Ÿ­´Ú-ÜíÜâ»?ôbÈ3Ní¡:;ë=–5dzÞÛß§Ú_Ëë©[ê.£Ä6¬3{k1¯R»œÞq_Æ-ö™¾¿d`{¬)+6Æ!Íßb< ŽÅá˜ì Z1½kn.õÖgetŸÙcaRC€€U]Ôâøœ>ƆrÖÉ¥´p`õñ9õCÃ<È=†·‡ïâ?9×7Ïç`5¼ÏAe«R±¸ÀÏkN> Ò ƒg»ZÐõo¿Wµ¡û¿(äv£ÑªW†Ò]8xÁÃPÀof@9u@ÏÐ'¼’Þ¸ôhLŸ‰'ÎtôÂ*ÆóÊôiåÿ&éò׿jïBO€ðºáÜ9=–÷ú$ =~ÛZ©G0—<Ç`æ'R4Ž‹M¹´,Hfo¼oíjÜ€³Úíþ7d~ªZ5_7 “÷àù 89Ð…Ÿ‡h(l Ð  D ðÁ;ƒæ«eƒ ÂØŠsrtìÞåÇ”²‹[-œ¾]kÔ•l6 tf]±R¾ èy[ EÑsQÇÞ’7À|´îR" ˜ŠÛ#úäìÁ|ײYiL~æû•|› Jø5_,OôNå¹õ`,…8¾®;ùC«_ïl˜Õ ;Œ‚0GC(\€/áe>J☀è6%À:7b¡O©ÆEg¢ë,ÐõߢZ«J©é'›Díó»p¨d¤_à«X°b€ÑHKÅØ&™o‚ »òé.ÿpÍ^¨›]¢îòoq+ŸT½OÎ:ìûßõ ߃uõVÓXü¤@¬A >ޯ؀^€Ó¼%_ Э…õÜÉÿ™ø}*­n(¼:ÏÀzÿôÔà#`7Tæ€m©| o ø¥@¬D€»¸ †`yDàƒ,H{LéÕ&]ÿ—Î_œêó2@òª¤Åt­++Oà ̙z—G ˜ÿZíKèPt}±vîpL÷3OœN\ˆùX̓¿öˆz¦bz½ð ˆ€¥<Mt€ßॠ á!œáÔs%eKååkuÀÆkro>Îã¸âïx}¾|¡Ã$:Éð?šþ´£AÀh8 yØ9Ð^©b¶4vP;Ý—üÀÒÈ/οߦmfßa“@KÖRî^Þøv¾ Š gb™mÇÎŒ®vJO>Pi^¥9ØAZÛ­mCw¿îò¿ß½tÒ™‰À-ð+F€|Uˣşá•ÐøÛó•/îeÓò ç@ ¾øºü°]Fá¯Àì ¡àÝ ´s~" ñ‹Æk¥ ãx_CËR­½R°æ|ò¡¨/ü±/À‘ÌÃ'`Ák·Ùa8&üßž/Àì좩0 vѺS³°CËÊ­?JIÀô”€ê¼3ê»\3ܤrTn¡@¬G ŸFôÀiçõa ìÃyfþÒÈlÎda9O€Õ _õem’æ^П_ãß@'°±NèªYE€õž2Jñÿ0^&F“,ÜØó"ºÖ>ž€óÄF]žîÓ ewòYÖ¬•¦J;X…¿¾Ó}L—ÿ^¬Ùw{:,Óƒãû{ø÷Ú‘ð¦sYðcžãXó/£îb 0=ºËþÿäŠþ$$À`½ `\‚Çxí%Þg¸mÌjÿ±`–Œ$[Ü`ÅÜe]Uø9>&Ã`ÞFKC;ó˜7›¨€UïKJ·I@Ö-4—ú#àè€JOVæÙèxlW¡ƒ;¹>ÀW —¶-ƒîm7 AÀš°G~©—˜Ç¸Ê÷bgÅPô<”³Uƒ‘˜Žn»&5Çt½Så¹l,ð5·zÔ˜ÊØg8nÇç(®€]|oÄWñÞÚóð0o$3¦7rY2XÜ€0WEgG~–ÏçOi½ Ró‡>|ÿ¯E,¶Ô¤YòšP¢‰Àï \‰€ÐÀ|”Pø UË6Ç’—ã ‚/Fðß_:ަ†aÁì°9`0þÜÿpÿÛX×Á&ÍçԬRkNæLÇÐ6jò@LW«Ï»b )GK†ÖxVSg¿ÛFŸt— ðxœ¯Co¨Žtki3Õ#jmþ ÿ"p&‹W!ä.'ï¦OoU@Ö‹à'wžë?ªµånÄû©sp^1…µÃQcêxÓwý0ßà.í°^°?ò˜{ÀãsŸ(ÿó´wKÅ>é» ídêAû3XþVUêc?˜[o0]þgpâ,àCÏâÁNˆGôzëgô?Rߣ ÕÕƒì}<Ÿv–šoñQˆÀM@¿ÚU½ Oƒ·øÃ¼¬ö²ú)v:ŃÍÅÿ8^Ç·Óä–‡¼³bU@:yªë’³Öâàœ ­¶'êÇ_ÃÖÉX¬ƒàÎÞ=tô»AÀ' ^ÒÒ±CTYPupFjû~{–¸`yÉe社/ªƒüÖÁÕcÞJS?ÌB0K”õð.žgVûؤ×´ëÚÚhÞÈUòŽ</ÔFÞ‘š¬rR:o•€ZO{’p™ÝÚÕ«dbg½ÖýÛ¶Jì°ªõòÐ{pê`¾WÇ,…†@uV2ÿølèW8®OÜÃ:±€ [¿Õvgâ"×χ°‘O¬N/‡Ï÷Õâ‡Ý19G²vháê%™÷@©ÆÐ]+ñ0 R+¥YO«ÙÖ’šûrîc¸ÀÈ(>T¥œÇpm±õú…™ݷÒöi5 ”ÞBNà:äÑÀ*r,¸Û$µ/ž¸›zœÊŒÃÑÞQÙë&/œ4K‚\ØKæ¿ÁÝ÷°þ¢ù¨90 üÆ5‚²:âqžm_QŸÒ—uR®è‹ûðcZ$ÃQÆó…†"P(„`É‚}ax0ç‹Ü¯evI«õÄ¢ó_Ÿwö²d€O µ‚U lí4Bbκ¬ÒÚ@>R]£åŸ;#ø2ðè®c õt¹ (øŒ‘1Ø$©OZ¯HWotÝoï•s}@|³8Ÿ2ØZ™©f¦ÛѵÏæ¯÷0ç<'Ñ‚àÁ<ßbSÂ=]ÇÎ}¡ŸéìjІÁŸƒèùjäj–V?y˜ÚM}ÄÈþž_V4žA+!±ª# óÙ™›Ò—ro5G=¥Öå ³ýq‰Ñ|Zj_â«êO\VºH”V"ðÏ´ú0VçS°&ߴƺŒò8EïÖ6×ïXsrÕÕ{àóáÀn²ºã’á?½&ŸŠãg~Àýªµù8ñEî|°fù ºü§ãqpŠ_Ø ¾‡R …‘{}^º°Wý*å|Ô(¡ƒ:ÀÓ°C,†½’ ú̬Œ—…µ’l¤Öt>F‹´k}Ô÷Ýð„¬p%.:2/×8Ȳ`Î(ÉDàvˆä õ&¥‹£-Âá{ N&tķ̌GCàƒ†º°FϘèôW¹f•=Yƒq¿.&tæ‚JQm ¾ðÊðl&HžÌ§îv¤ŽA¬D@á£õ¦eõO ~# ÒB“7hsÕ¢°*¡9­7ªéÁ&bø´ª`ºZ°uSZ˜{Ž{5ÏÚŒs5Æç£°‰5z pzm FôY ð ÜgŠÔ kåÄÚJwÖÓÿÚ8l6ãT9Ö ±+ùÝczú\ÃqüEj‡­tâ &m”:˜­Äï·@]\\‹(Ôøö¼î1SkzñQYIž´^Úµ´„ò•Tì%`­`U@¶îóa·ö¸ëqgKmIzïÊ›à²(€ó¢{ã?±JÕ\¬uWRjo'ã×Zh>€ƒgkT®U2=]ýWÛLIè…u—-8’ùÜÞ½v@züÏâtÚøtñoqbŸ>·3t,"`]¬)dc¯pG¸›hY«A÷=û¨ûDŽøL™34­­¬jœ’˜ŸÊËåžË­•Iƒ êk]àSXáJ'ôxÈ`­›’R{û ðM|«Ñ$¥œÓ¾CûøûÇ{\{Ï3†gc÷&PF*[µ°à¯Î+°æ¸ÝÿÉp¾ý‚Žh-úWø¾Lãjê<Ï_H"2¡yÉÌl•ú¿ãjä¦ü-V5òV\ŒÁ|zf·ô¦Ú•”å8uévþ‚ëMæÃü 1Κš…]Õü}(uDàß"ÀËóûà €´ÿ>\¶6—aAÏËñVúvlà\7 4Ãø·’Eç!ù“ÃÁ²úà¾I0Ry÷ì}Yi©‰Qз}ª­‰æºÏY8þÆZÁª€I6áä䄵Bò~u»:–{çv´7±?Ë:úDÁ)8b,Ojþ‚”,óS½_ó  ¿!áº@›¨µçG\]2º§=¦õKz[ìÅȽçI•}Ò~sŒ|µª€­”zàOHÝquÉe/wêHm·º‘»Ó€Ÿì—¡c(ðÍ|#䊽è“"@ˆÀß&PƒÕÇ)²@û\KàE²JT¯¯TÏ$Çß×Áò—áÒof@©–«fõe‘ Í#οý–ûPz÷`wîHLðzÂ;€}R:‡/Ù¹4,sU(¡D€"p× °jPü°÷ÿpO_x0m@ìä˜QîsÉ/ÁLš/6§‰`6`7Zk«&å1âq"ùàxWûìûœísÇð&W'ùÍ xž7¯¿G/+´(‰‹”"@þ.¾ªêãÿ]µ]Ú¢‰§¶QÝuÓŠß›£Ð~`¹©²,nðíâBhvçyã!Ì˜š¥•ºØ$¤BÑ™ '4ñ‹ãôNM8Ú™ D€¿Gg<¡ÿÏm”³÷ºüüé¥Çn¸Og¿æåQ.ý½£å¿½,n˜½.ùnVU']®æÄDßw¤ôJ÷Ǭ¦ò4«âx Òp@2òßH)"D€ä7úâXØûŸ⓱¹–69é”zú¼îòe]² Zë#’ÍkÉä·ÊoÙø«ôXÝØ+2¨mªzÇ,;}Á½à↧ë‡Û•”vö¥^Å¡7öÙø=οÂAß"@ˆ@¡'P†Eàj2 -V+ÁŽìáñC.×QÛë³u2êQÁGÃɵ ç1 ‰Õ ¹* —s0k•ôßõ‘kúµÖíföº×§gì©€©^­áùâð©Ø€²Ð­II%D€Ü¬?´œùÏUÓu‘ϼ^ô¸ù‰kHl,¦fœÕ’Eªø&™ºH©–«æp@9#“68jÈ¡ãîýgÒk¦,Õî‰p&à‹ƒþô¶ÿ$>²øœ¯_§î;šÝ4³?œsA¤Ü+”¿$s"g¦•1 ‰Õ=5Uü¡¾)Ô“¼ßþÝ4WBô™ZÛžsdÅ¿äû‘Ÿ7|Vø\>W>§@ˆ DàWXK¦/#îTWx3±ú‰k#ÜÛâÚzp§ Õdïþ¡ˆÃR-'Ä€•‚;¾§v,CÖô=oˆ¼˜Îá%òö'‰,(€Ì"¨rNf÷ð;^ë\y¼C+_°=í ú<¤Ò¢..ƒŠK4Ò»0šø-}"@ˆ@&`ÓGûc¨É_Ôÿú¹õÕ«jÇ]É›N|ÕÕ¹êÊDÞ]²’¨³ ÐKli Ș¥ Ò%£×Â-çlÎ{kÛ¸U1®¡»×–½a·eöœì7*à)ŸÁ§aON½S y,xûR’‰ 7O€uÃÿ8ˆÜUßù3ÌL¸¾¿ÔŽ<÷²í p` 9/‰#»JÕäÄs'âÖÿ,h€[\ž ÔsV¨³ÊöI«¿veÆuj?å‰XGÎæïÖha¿Ä Ö?V²Ñ 'x´þe¥"@ˆÀP° ;…;°æŸ{픺bçÏËâç¶Ì;zæŒñ»UÎbâ÷ž¡B5ÙÙ*Џõ? š`^‘Éâ³)À)-¸œg6LXú…kòÖ}ÏJY×öÿ¬À™,ºâ2þ:lLDž“!) D `Á±§Ù0½æïôÍ3~.»ûƒÍçÝ;×s^É{Æe†‹L;UÍÎ~O,ºã»`‡D‘=/Ù)0¨‰ˆ=1mý¢çüÚö‹«•Ü ²í£—û²†l(„Øß€kèÞ!O@Á¾+(wD€N~ú¿bá<ú¦]¼~f·6tÁéç²»vÉÞ3{ƒ×€ë‰8i“„ºV å{„œ¢ zäu9U£çk±­=#ä\_2öƒ¾ÎämÛJó Où”m6¦ÈÙb#”F ç=È`â#%D€ærð3` øà¿32§ñj築[¸Áµz­ƒávðdÍ9Ím(T_G^Ú@=t#xÏ·ÛŠ{ÞZœÞöÁžåÍ"’½ÊzÅC§"a|9õÐ{P“€dFBˆ°áϭÚè­þÚhµ4œÏM9Öô@gOÀÒÜ/¬·»ç_¾(r•SU¨3T¨ö½ÌíZ©N ºÀ¼`õŞׄæªBs&–8­¿3êÐÕˆÕ_Rê¬Q©F7[ÓÍ (<ÞÊÓ€Ô$`r$%D€X‡€·^ßÇàÅôêîõmW×êlùdìÛWœÕwlÉ–Ãúr§‹¸§²P® -¸%@Aï ¯ß/"=iÜ+¾ [Z}rýFЧtÜ«fÕóé3!½è˜â^Ì»qEl y¸§%„~¡H"@ò3ù¾f²uúÜþ™ÞéŸó¶g&~ÖtZ?×ÅqǾywÍxÏÑD’åxÿLÙËß½Llç12‹²Â˜Ÿ3|si+lÀ=;-Ô;Ih°tù„­ë5¸£u½YOì²ÂQfÒ£~‡>„iÌá/ñ§ C@åæPÓ¯ˆ DàŽmýl{ÝßßÑù¬K>òÍ©Õy.N^ûÑâ‰5]SvniHî+4í¸Ð¼RB5ù=È £ØZ? ›`^ÃÄ6ÙÛÓwˆˆi'uÄKSgx mýh³¼öul^}Ï¡y۶!“øÇ0Åè@†€É’”"pw ˜ÚæÐÙhë_­—ò[±¿…Ú~Îì7|/pîúú¾¿ ?'w‰MŽšó¾PO™‰~R ¼V@ÖâŽÕƒ}±Ð€iB‹t´½a†úEgLœ7·¦÷©žjm¸Lôl€í”½Üï;¯ã_‹ ‘! Ñ' Dàß& ÇõCuö î›åYÚåá1=£Ïh,»ðf½gw:λšº4i!ø'ÈQ`É/ŠdfÊßý¥ˆcõN~!µÀKa5Ì [NüÁöõÒ[û1 Zäó C¾‡¯‹ÅŽ/;gŽWË~¥*çÕzU§(Ù¶¾,Ük'߯W! hÑ' Dà_!`NèS gqÕ þ1¼7ÏÕf_¹ó8Ÿ¶aýÔÉ#÷¹rçDÆ9c¦ñi×ä>ÉÃDÚ2>ê”ôK2Íûþ•´ç£“vÀ¼OŠ?”þB} zGh‘ÇÂÒ‹¿Å¼Â·ôýLÇšþc"ÆT^™õdc4ºAq¯%èXL†€ EŸD€;BÀtõ×5~x‘÷„mêÕ]——ño·~9óØ«nש–/åáå’®ü”Ò"-i¯ Í[*T  “¤:!à×—ü=µÉ9 }¤a";†F‡ÅŸÑÅ®½ª¾û•Wç>ë*¬¹Mï=ÒvÔÞ‚}ù§ØÆ¤¡¦_“¥ Dàf ˜ù´`]Œÿem+8ÕâW6^|ŠßØxö½mc#ÜöÏŽÿæä.ÞïÚHqš”ï…¦Éas?qÏó2f›¿9ãÜ\x„ €__k1f Zl¶Oê›&4øQ¡¡­‚†‡2˜öÊèRÓ®8†uy³fÏ ìRæ¸âu”Õ®£yoÐo+³Jü>‰ Dàï0 þØ[zÁ¯ SSøõ¼öG7ä W…¾×blQϧKÛ_I¸Ø™ûYNä“"Ÿ–"4GŸÒ ƒ'W(?'€+ä €ÿÿ›™ŸPÛ¡¾YBƒåJ¡8Y@uhòñ0Ÿ7:ÛÍžm²©Í:E¼Þo–ohßs|,ÆhH‚ÆoifA>‰ ¿' ¦]óÆUZ1°OØ&½W¿+ÏyâR"´WŸœýÐ뱞/¦íNÞ=SˆÃ¤~%4í!¡9©B=ã…òB!^j¡2þü±Šb7Û¡¾g…·"oÀ 1Ý’œT6V›ÛåÈÓ/Û¾ö]xkx»n?6—­‡âËWòÏŒy¥˜nÏR D€l6ÕNdÍtae *ÎÜ·!coZOXw~âÎ&ë½´øùO-øxæruiä~µ¯gÄeˆe{!u®þ€ôXC Góó¬q.=¹`Nì#6Óg_ ðv]b9_“ž›lKò '’7\H{¼Xõ­º£XË{¶üÇ6Úi;Óý‹ò³ªÔaYÖ9¸—%‚6ðpÑ!=ü ?Jž}"P˜M£~`¼CÙXAÂê¨ZRÉyË®.¾<‚wû®úWS>®¥Í[¶gÛÖ–šzy “) ö´ƒ"ž!'tË5]ý§Åv¾A’”Mº2Fò òü‚âoý!;â’ÁF°—ê]Ch€ü>¸¥ˆõŽ­m÷éúüeL½ðfë:¬V=Y#tNØ è]ãSÖByl¶!FSnçB¶ñ[2Bú$D à£Ù`öŠ^àó¯9zOùѬkÛáÄE׋÷$ñ5+Þù|ÂÌRj§ï›§ÔL˜¯¦É?³ˆ‘6Fh¦œ¹/OnWûŠíü°vU*É àÀüÅf³³ 7j“ÃH¼d›“ßñû É7XöJõë1ºÆH*¾®÷ÃÏE)™-ž®œT«/KìëW-ÀÍ–Ɔ³É °ªü>Òh*ÈÙ5qMèk"@ò›Xq–õa#Œ¤•ŠØøévºòVñ‹Iƒ.Ÿ:»šoå ùÞZÙͧ"?ÝY‰o‹_*²‘#kîò}›þ©Øž-§îuvqÕlN½_ÄáºT’¿ @À_ú‹¯±{ŠÆ Qb…Ú§õ•mSˆxÜ?@Íp˜_Ë&'Zf-JetªÑw$›Ú2©ÌÁŠ—Ù3Í«úøûJÎg«Ùq`¬Ï…ûë µc –ôIˆ@¾!`ºôCqÕ= ìe6KW º;~ë½¼æ8oȵ©qŸñÕ?„~snMS~bk™­ó—ßχžw¹ÇºÆB|Îý7ÙG…fÈš}f]Ï="Ôõ­Pí˜PœþW„\©$“ÔßÜ­…ØOtd°=$âÞo õ“jÀX¼,·ŸPfÙlàïûEãQ­f@j©Ú­'=~^iÐįlhåÏ`FÓsó/@Å2Å”A¶Pa=^ùç|¦qŒdìM@"ðoð‡@ý4¬3ëgø&GÀ[ºÇ’¿­5›æ{=§$ýÔ9>åÒx˜¶?j÷…M³ù¥]¾¿z'¿vñÓ¼9¹!ðSv‘Ô\YeõñÌ&B³» uŠfQð4q>J(,”Šg¦p3ȸjý›¢r—mBcH €Ã°Š¼gˆíþò½Sýg‹í¾ÏA{x˜wPåoj½ KŠNhñ^·¹ìBõĪquS`HÃna?ΪU¯í]Þg<{UÙªÅö :¿®mkó`ºq¬Ã|ñ€æÈ¦ÓR'¢O"@ˆÀï xé‹èb¨ÄŒþM¬/ 7š$[`m[/ècø2Pù#®^Î6šž¶+y¿pfù…>§úÃW«îܱ>œ·;ÚæÈÚ½N¨y½˜©V€Ü¼dq¢o•·JðÏoòí(vc•„ÚÖ uHËÕ{³ˆûíê-ã²oo#¹ Ÿ/ýÚ@qß~õ"þæ–¨ýà–fÑì³JsËî®ÒšÖèT$³XÐ*®ö]ç×Ô ìÛìý€Lgå•þÀÙZ¸Jò~øÆ8æn¾É0¢à ±ý:\1 8ïÝRÉp—€>‰€•ØÁa$× D;z7žójPOÎYchcÄeŒýä‹×âºÐ@}Àó9Ør_tFæ½ ¶DWZ¹äàŠQ¯DÇ´ƒó'œù¡ÝæÀÓ;Þ‡ÿüt_zë”æp!k¹@ä–š7AÄsd…([Vˆr„‘y{Ä÷®…ª²W?ÿZÄá3©äâ— n—˜Ôí:çÏ øË¯Ç eC…Ú® uHO€·ìÔâ»^l÷/Ô¯•PŸîB½doW{íœ}z ¾)s<â D}[ãë+Bë{¢+ô«6-Ó£DÃR¹VºQH¥"aPò¾™¾Nÿ½P4|‚cˆ÷8P‚«ÚîÃ9üü)›• ÐsÙ^–ªâ‹Øn¡û(TÀq¹º¹b¾PújÛLC! ’ Ã!U)hh¤š9†æIO„òŒý=ÆâÊ€Ÿ.ãûßÂHrÉïÍñÂ4JÂÀEù„€yßš÷¥—|>þh¾‡¬aÛE'9ŒùÏ—7ˆw„ŸTéj‡"fä4D´±ƒÞÖ®?¾€ÃŒ0˜Ï‘©úó¨‡w`4vºËãMx8(|.ŸŽ.z‡»ŽZNýrsÓÜu\ 2ZæËi)I[2žJû ®ý´?¡Òµcp9¶éå™g;@tlÀÉwƒ׺œ«sb?NžçÎý±R¥+Íg¸ˆ{IKÙáq{/¡¶tXûA±¿Ø3$‚}&–ò.Ûêøo¾÷r™G¡xðç÷ +•Bׄ.*fgðäà×CÛ@Zˆ3 +¨ d…Äû„ø½yµxÏ—_’W°W¸ý¢l—ìï€êÓMɲ½†}B•8¥pÇ(å’š½#kÌp4ƒ­8KeÁ¨X¤‚5å1¶¢P“ „õx6p8/ºâ˜ærb7¾ƒ0^ ÞfsqÿQ:“)hV¤ šþIÜEb<{úËtCv¼ ƒñIp‰ŸA‡ùXëF½gÕ A'~ƒÆ?_‹øBTàý¡ 0­%oÃÑÖN@QŽnqm•vQÛŠÚ’7Ñ\À<§´¸Ü­â¡…iËP[©ë=÷‚ÝùŒ;×åöœª®ÏœSÁ+§Ó?oxg÷Ëqe¿ôýI©­ (mEJFboMMÿ9æê$8žZ÷jƒË p5}MüK.8šµ2uUÒã˜{‚÷ÔДpëÏUz$UÙ‰Ù3Plw~,µŸÐ¼¤ ãòÞqW†PÏ›BÕ¡š|Ïlë7§`7L± }ÞQdÜQ¼ÿøàáòIJP¡ÊU¡¶êBíR½zЏW Ô§¤v•*¼æ‰?{…Ú3…Úðå¤&¯¼+ã/ UD?Pö@i,zAÙdkmG«Ü6Ø1ÄkÆ›û,òU1žàîw5Ü»¢ÏT_ï¯|¢PÚ_v ×BI¶·´Çó| dÚwc¼·m ÏÉš³â¬ê2eŸŒu¡)ž» ¾&õ&Ê3=¯¡J”‚/ {À5c.†’ú»¿§û!P¸kÖÈõz"¶Nã}Ç´ÒÚ),ØËÃ4Πؼ&¦¶µã}ƒñ,m¨†Æ?â‡q9qàk§´þ¨çÔº4ÚùVõ°ÞáMïñqBmêZåüµ³óFÞh|,ÒóJäLBÍÄš8²j¶«›÷W—ywÜo¼XëVeÁ¬á³¥þšPíY¡ü-Í} >)âêD¡îQRå{ÁUQÄ …º>•* ×û"nêvWO åÇ„Âx©ç¥êÏ0…»@€^œwú?8¥¯ÜÝtFøRˆRI(“.8›Ünk.¶Ûååè-ã5;!Úe[›]¾ì²­Í& æz°ÉÒTÄ•£BÙT"ã BáŸ%ãoÈø]êÃr»Ì4’Ûåy¤»ßXr»)eä2ÝrúPó[R"pw ˜ïS½–¯‡ BŒZ¿þ§ù}®Ü)u·PÝ[`4ž0Yv¸A>?|šŒËç†? âÚJ¡üc—ϳ–!ãòyTK‹¸*Ïçé#âÑ_<Ò%ï–çñ<.¾wÏ–û¥ÊßÏÚI¨&+|‰ˆó6BaTù½Œ‘Üuö»žJÀŸ0_»äN%…š=ôqkz`ÒÒf‰¸òœT¹]‘/›´Ôm‹ä÷Ë…Úä G‘‚ kûzPHÊ—56Ln—/ÖCÆå ‚q¹ °ú2.Ó åd¼ªü]]÷‘j¾8kÉxQ©¿5äf"pW˜÷©ùÜÊ6nìï"‚¼_¹YÀKO˜¾,Hù rÿsògò9âýeüšÔ‰Rc¥Ê÷¹YÃ×ÂÄvÍ_ªŸPu„Œ›i@HƒA}F~ßTîC(o&·oq™^! Â6©² )äkæ ›¯I‰ûÛ¼åž%¤>*uP6GêF¹ý’ŒËK—ñ@¡J —5&ËÌŽ|A™<“.?láa®ü½ôD€ùÂ/Ö^î' ìj(‚¹ÝÌyŸš†BˆÜO¦[ÆHˆ@þ à’ÉχìÀú_–ô”i'Šý¹4´áCù{ù<éÓåaŒþ©…BK/-õ^©ÉR¥aÀ¯ËøE©òù1züã&nþ®•ü~ P¿9º!$w"±óÅj½”SŠo…€Ù´ kPMÌ4šÉxC¡¬¦ŒÚLjY¡¬¹Œ›û•ñªRÍó™÷›ô °ûä÷-¤I•5•ß5xÉïmRIˆ@~$`¦N™83n¦Õ#ÿ7q~ÔÜAª&Õ4¸’ñYRw å‘2.ge\à|¿ŒŸ”ºEj¬TséÚÇI( æ ¹Pd–2yǘ¼¬iȱÇÿ­ñüöh&ÄÜþGjîGJ ó½ûGúÛ¼þv?Ó€PåŽfm ¿ý=ʼn D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"@ˆ D€"P˜ ü˜©ÄrFýIEND®B`‚ic04ÑARGB EjopojF € •÷…ÿ÷— Fõ‡ÿöGk‰ÿlr‰ÿrr‰ÿrr‰ÿrr‰ÿrr‰ÿrq‰ÿrk‰ÿmIö‡ÿ÷J ù…ÿúŸ €Pvƒ{vQèð€ñïñðê€èêííääì€íììëèæç汈ˆ¬åèèçèçæàã⺘˜µâÞ߀ã#ÞÛßßá ˜àᘠâßßÛijkk82jj28kkji€--€‘??‘€L''L€|~z99z~{ÁÃÅššÅÃÀ²»¼»»¼ »»¼»³¯µ…¶µ¯€ˆŸ¢ƒ¤¢‰ÿ€ÿ€üôô„ü ÿøø÷Ü›¿öù øôóõõͬ¬Éôñò€õñïóôõµ­õõ­µöóóOI€€IO€€(€*,9..9,€*(-.oCCo.--€,-J66J-€,-•˜•QQ•˜–Ûáâ¶¶âáÜÒÙÛ€ÚÛÛ€ÚÛÙÒ±ÎÕ…×Õͱ€ª¼ÂƒÃ½Ÿtz}|{|}|€€ttvvuuƒv utjlle``e„l€b^[[]ƒbaW€XVVXXVV€XWN€QPOPPOP€QNNPaUUaPNN€PQ¤ll¤Q€PNN€PQv]]vQ€PN465FF5‚6‚((ƒ‰ ‡  …ic14>¥‰PNG  IHDR¤è¹sRGB®ÎéDeXIfMM*‡i    øµ…@IDATxì|EûÇŸÙ»K.Hè½#Ez‘^DiJG@zD@šA¥‰€ô" Š ¢ô&½w½¥’žÜÝÎÿ™½»÷õï«‚JIùM>¹çvoËÌwön÷)ó  €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€üñŸá#HUÎO»Õ¿‘H¥e0ð|Þ4ËÜ[ñZj]çó¹6Rëª §Í¢”(¨m+µ·ÄMáÐ ˆ×i’˜¢ ~b+½'‰ê¤Ñ+Ô]DP4%P2Å‹&©»¹œÖS‹Õ>ïScÊGe)‰›¯“ã¡ÌÆRþÄÒƒ<© ×ñ Ñ€æòòÛ|;K %[ý›õ‹­ês—eA*C?µÏ©0/禡$ÏSøõ¯‹f|¬Ó–‘–r}Ç‹^Ô’—§‰Í|"³ÑzcǾxòvÞ+ åé‘è#¬¼¤Ö'ÿî°¼Aaü;$d)¹„ÞæåS²šñ;gúíû³ó9¿é&ÚË$ÒaúšåD½›¸Çõ^E³ù7›(…Ûó¨E}ïýÈË1JÎÔ'K/ÇÏzUYK^¦@ãÏÂýM÷ù<“©? Ô{ÉAr½¸Iíe’´ëô.²ƒ¼®;äIý”~B§/pŒ³å²irzŒH:w]†ÆE§üj!wš6k1Úa -—?dz÷=jå°€<}ÎÛÕÓ?/Î †„íL,;ò2?KoÖëÐ1Å”è±JÓ-MÝLsµ sZcш"äò¬¥»qjçÚY©/JóàÍ®‹ÚJÁ¤[–{†Ê¯‰®ÝÀñð³a‹¿C@}¯ˆr²ñŽ YŽ–RÚJÚ-†"ê¡ÌPFy¸bëÜÎÏP¥“eU¡úû˜mŸ{Ùù1«VÌR}?%åk–(—=Lde™×1Êø~H‘ãÑÃ[9¯ãœò*¿Ov´¹Xâö©š$sûœí´öI6‘¨oN~hü^äµ]7¾·º|‘תâë}µ x2í0L„¿ÚQNÞ'Á±Ì¨Ùz„‡màl··ñ{ªË7ùןëmËÆ&Y¢Br»“#ÿF?jQ¦å’#éGúÁ@ýh­u|ÌëÔŸ?ÿ³9Pvåß;å³d£ƒNEuO¾[Øù:ðã3Ùé‚£ó²SMÛ^6.Ùèœý+:Èæ“sŽÑT‰âÈ'ù>n{á‘ú¨°€@F"àü™ÍH-F[A ˆ8”¼uL}~úÈ­¿Cói ö™eŒ¬âÙÞô¹©œ°xï’eG¹Ç'„îÉ-t!¤ˆØª½!väH¤Ïi9 ù˜gfуàoY…ý~ ÉI(+gî@¯S[ê´žýå/RPƒUi5¶óãM„¼á[ЧH:cù€„4ò4ûòƒ•$‹97?Àf¦s ¢@‘‹—Õƒ»Ã¤Ôöp›ÚÒžVU¼Ø¿­¤•ò¥MUÜ¿\Î`çºß¾WŸÿ~÷çîõνþ»¯úœUN©’ÝÛþv›¿óžÏ!ÔyÔqþè|çXÙÖ¨ïC¶yèÇ¿­ïC7þë ä¿e§ÿfÇ¿>å#}ú¯9ý¦NtBlôl<Žëk.Ü¿5ÿ²Æ÷áßÖÉ}íñqþí÷á±|?ÃäqqúÍ!ÿ÷­j¿bÈÿÿªþlH4ê«úÖÍôÏæ\ãî3÷vnéªÇÿÛß½­[òyþŸà6Ï$³9X}®;Žûjz_6<Øeн [tÍ~…?·Q‚ý&Çñþö³Ÿ`"Û<6Øä&-©–ÍSŠ èndúŠ&ÑçQƒ8ä"-‹XÀÑ+¹?ìkN_ˆn÷Þ¥|çx¿»Ü*¿•'îÌ—S¤]ÚnÛ´ÌZ’èý`<5—ùÈ”ø}J¤m­MøTìý(Eï•ÅËã¹±œð  > ¸ÒÒgëÐ*Hç¢&8¦Œbïˆ)#h¦éSeí}qÕwоQ6¤c¡â èFS ,yE~q @WAŸÑìo³:ο‹áÇPöÜ×(?xTÌ1’øâšÿ·¬tg!«õeö’ÅóUÓái2,0D+¦y‰ ù+ˆ%¶”>Å>rüËtÇé#ªVt:+ðq”¹`]Vãys|lÒ ñžÃìs0¿jx'$¿ÿ­ò­Þ»,ÜÝjY½ÿýçîí A@@ž=÷“ýo¥û½ªû^¯Œj½;JA„|‹ÍÑ”œø"GDЃØjü<¡Qì­*²-Í¡Ðóõ9·Í9Š?^ndƒï)ÉO%yôí'?u¼¦“—ïœMr¤ôq ŒûÑ’hþQ[$gëì¹j¼ƒ jüö'!ÕT ŒBàþÛI'F´b½Ú“o±ÅLï™’µ."4P3m3 ³ †) ‹¤Êý©™X+T^Âc _ Ä2/r& Åe¢ìlÉög+?Û[ÍEØÞïVéßm·Ò®óz÷ûŒíx4n@¸b T‚Éÿ>I¨(gÊI•ãÂÂù Âø/61š´Þ§áoÓjŽ8{Öƒ~"·Š–Ë9ÃøCôLúyèXMÇç)Ûåï2õ [›’tJÿ&ë¾)!ëïÈ›=Z±€Àã!àþº?ž£á( HàÞ« ¿Ë©‘ýýô–VžÒºÊ\#[ íVDüZþC±NÌÃk½FïRGªôÂnñW†²𤂢 åxŽo»V2›Öj¼RñÝ™ÐU&s§5_%³C'O@ÍáÔ"Ô;õ\â4è,=xXA§ë½‘Б.ÊCtúÎVŽ+ØL×ޤ^r¸\´çýNsXoÏ Ç«ö)ú„ ‰Ž/MË,ý⇘&Ë›Ž´6k¢eû¸÷ž|3pȈ`Ȉ½Ž6?1·ÏǶÆS@ÙŸOé©/6ðnéG–V!ƒ´á¦…Zdå í#á-&¼ø5OØÖ,µrÞå☧g _ï2”Â)Š4êÁ1N½Rï>}¨÷O¬×p`ÇJ@ðÓŒaàç·¶¡–“e2Ùýx âMJ ëÏóeì`ÃÀ/´˜úЪŸËêÕõã²ÀÖj¶y)¹s.Õ >ïåmJÚurCXèõD¥›‡NYòXkŠƒ@†#àþJf¸†£Á ðo„f‰(4h4OM~"ü­˜jÔ>÷•ÜÏg=äWÛc…G.SöRu´h­¹ðl::ÐgbéKë8ko9ÊUh3ådõöç1w‚ëUç”ÆnõüÓ!Ø@@@ íÐ\†·y@gÃ@ŠãE:Æó„ßYD+躷k´<'dÐú.ŽÆŽåzξa;ï¼ý`äÝ~>…ý>µvÒwç™´ÿ³ýi§Ù¨)¤0¤†^@R=‹ïÌ¡hWï\ÊýÈYfgÅÁ¿f«dyÙRÅôQæâ®8$·zÀÙtGQëÊ)TŠQÁÌŸrLœ Þ¿kxôÙò¡è§úÞFA@@ž:¥•(À9ÀïÕr´Œ§¨¤ƒ<]â ÚvÖL}åÚ²>Iï/ûËQß³µOiè8êSí%Q.åÕ,ÑVë„!O½æ8!¤)0¤©îBeŸ¢w¼3•(±Zâ[-“oд̽_(cjlª*&´è*âE²ØÚü#z“RáR«(@ø·ç@# Ÿ¡è»BøU…¼ÿ´º çHOܹ4¡Òò,ÒNr,áHk·‹Ñ—<¤òÖ¦†ú!}§ô\šl˹G®l¾·s·Ox³ÿÚvÌÛL4£ù¨ÚÇ?HO`Ðøç`øçì°g:"p»e좡ßÙ&ØN;‚Ì ½}xö):ÛœÇ\D‹j“….ÓNj×&3gÝ/L–£E"?m4Ù¥ÃPðÕˆ}(úéèŠ@S@@@R-“k?‡™iƒÜJÇ)2jG`¶¡[êÃô$Ypqù„vñãl¡;ëç*æß1皸߼öSñ]‰^_óâ¹o¦§ÚÖ¡b ðD ÀðDñâà©•ÀåE÷c½JÙ9¼wüX­R¾× ­²©h5j¢S!ZC¿ˆÈÖ}ɇ“ôUÊW•,|£!qˆ-Ï*ï¾òêCáO­‹z€€d,fW„'QÜôtJ&<§žÔކÿœÏ±Áñ­>jÎçI¯$~k_°k“iùœ¶8quöÂÞ 'žÊX¨ÐZ€×@† peP½‡èÔúÃ¥ÂC¨såðZÙÞÉ3ÉRÒã¨Éܱ‘x]LóÞÈGÅ*SXÍrËú¾øÞHÒgψÐHHÔ¥åè<$Ó‹å~N/˜™HM¨-]?ÛÑÂ~[oõå{‘{¢6Æç>$­_yõ°„ÛâòÔõùl\ú@€V€ÀŸ€àÏÈ`}š&0½þü­‹õßòfÖ-ˆn¾óÒ‰öþË|®ûž÷œ÷jUQUþÈþVêGc¨Hùù"²™Fñ~õ‡    ^hä4˜ù)OÒ·tCž¦“·ÛJ •’ƒ–v³wLùJ7Í+y÷Ä­q±+.• ,—yš×T=÷ÎLõ>­^   à$®„ôDÀûî[ ‹‡¾D w¹ëa6娗û×€#•KZš›ËhFߊ;Ô÷¥ŸØ*œ•¼¼'ñmÀF*iŸ ìÇþôt- -    ð{NÝGãÌ&þ(‰’ù!0/-’oз§Jɉú^IÓß9ò RÒ;«BóæÍ\"ßĘV‚ËÀÖ<¯“³8#EÉx‚üýñ± ©ž ©¾‹PÁ¿ `’F!‡úa‚®³Ú4Ëü‘öâH³øšfÒ+Õ¿¥ áKVóH²ñ´1Îä}¿;A@@@@€ hÆdƒDÞÊ­Dûhž\CçB8zó¬‰ÓçÅM‰‰Kê³hUÞA=²ŽþN¹ŸFì4² (|).†*¶R-Rm× b¿! ‚´Œ¢þsî“ãÚìè•çe-â÷­_Ï_{ŒŸŠuÂÞïWÊ)ªQP¶O9yŸÃPø1=Ÿ$€€€€Àß!`ŽåYäŠK¶Ê’ò–|ûûIö̶HýÝñÖí~i~ùµãQ­Ž¼l{y W.çÁê,0üÖØö©€੡Ɖþ#ÄÿK/r|ÕwõÍ'è݆Å_-Séër¾æ—-&Ó¢÷ñT/W¨çK³ÈOø“¿e9ØÓŸÛ€»€€€€ü! ´&O ­ÓQÎ0“N±9B‰òÞ¸Äð*aµV|›¹Øë9Êe›˜\ʈ x\Çzð‡ÇÄJxF`xFàqÚ¿$Uyú¡°³­oÖ;xÂsjÖ!E}J4ŸiÊg*«c¢¶¢U-~„§wq°Âoå1ýê@@@@ž¥=ypd€ŠOÝ'ÏGô&9V•ƒfM‰Û[Åö”wòØ3½[ô˰†ÊУ2ù»*ï’pU¹@@<0<î8ëÿ'àñ §” ¡»(<%{r=ÇæÀ¼ž&ëû–ƒF‹ÙZ¼ÈÝ?+ÕU)¦WyL ¦ëûÿ±    𠘄ó6^&Ù>”jJ»ì°¾Nò¹ähǧ£¿ËnöÉóɦӫ\5rçpKžbWáTÿ%ÀYàÝÓ' ¹NYLyüÙHgnW‰›ºáA~ë$/›åæûóE>Ñ^Ä´¹I™EnÊéñ6Ù¥ ŠÿÓï(œ@@@@àO¨Ù”Veæ&:̳  -‡¿°O¶½åød˜Çâ3 ØjR¤W›Íä4Àis¸ŽvûOŽŠÕ ðDÀðD°â !àçú\M¸¢JÂó ý†üX.Ñ#‡çlSžO?w…óê,åùYuÎÂz‚“úéFR?çöxTF€Õz¥]y🊠)ߦ=×ú89¦ëïþéêàË1Ñ+¿®Sa@1mBKÛ5vµa“K"ÍuªìÔ´[)Ònߥ…š»1/jU|Ó#¦–MN¾òcá¢mXf[V›ÚNêGsÅ×T ŸÎ ´rµ¯ÈÇŽ©×ênÖÚwÞÐóç µûÞoyÁÔõÓj!SÅÑ”,“0_:¿Ð<G' "ÔЀKòÝ´•ÔÔÉ_ìˆZ~*qøûù ŸÈžéó&â\†€¶®¯xô`Kø/þËïþ>w’’7»ë[³BY1z\Ê'5jUo¹Ó²Òã˜iÿônb¥ØD/e_kŒñwüý`È<„súÀ£òE$sÄ;nëoL¾tsrÌ™¾|þÇ‚[çt‹p±¨ê’_g6häc#ÀcC™¡”ÕÕÚÏ\ò£›ýãªZY³u“ÕÇÒfN9:"~¡öù#(^&»Æøg(@h,€€€€ü#žÂ9kÀ^¹®%:šÛ½tŸ Ú·¯ø­S+¿\¡ŽÏŠF)Þ®cßpIþ쌷 ¯ÏÿM‹ÝŠÿ<ç˜$jz}äƒ=ou¨äéÝß'›eüÜÒÂW+&6”>À¡þÉ®¬þãÿoˆc_ŒIÀCxñ‚D?Ê™t2ª²-‹í€£Ö_fMœ.æ\ôáæaóvUwìpÁq;æÖdLXhõ£€àQIeìíÜŠÿw.Åÿ…ËçÂ'ð,0+`m¦kž+ç/ý´%âxí=œØ/‘â–Dr¿Œ}É õ    …€7ùò‚Dåd9šwkmÒ¤¼öê=2çò÷]2å»u\çØï’îÜ\¡åÜ8Hº#@ºëÒÇÚ ×ÑV¹äÈ“±7ôþ%s™BÁ7½«N ÐŽ›Âµ7Ú"ÊÄÿ{8ÜßÕÿ±ö    DÊÀÉåFù‘~|nlPL¶”ë]®æ¯tqZ££ã]I·¸P¹“†ü–¦ü- ¼ÿ=W]+bW¾·.ªÅUkpÖÄ,q^Sý¤­Ó„ØÑjyË`Y‹¦qf;«þdÌiúû£`@@@@@àßH&Ãy+Š´§Lwß߯-úø÷z÷kÙ=È©{³Ë°Ûu²æ.öïNŽ½Ó D¤—ž|¼íp…‰ï\‡-uk[\ø ‚íêy.ò\m œ¡ÓÑêeú”yZ?Ûã=9Ž     ð'L ´¸;tƒâõ{){ˆž÷óØ#¶¹ã3"ºñôškW H8éÚû”K~ð'GÃê F€ Öáin>×çç]cý=¯Ô×Ušå7?à„ÇÙ%Wµçµjâ‹¢S‚ŒaŸ? €€€€€À³ `VcHÀt9‹®Å5Hù>e˜£äàA­5ɳ¶Ðü{ü·}MÎvVMº#¾yUÅ9SRO_<Ëš¸“ü­vUbî±Í¡Ïw¿›í\öí9êøm™ßP{×4M¼Þx<%qv¥ø«$Èïÿ,û ç"áM<°[žÕ/ÑÛWrÄ^ŠÙ’üf‡~Údîúyù}#CD)'*™Ý…ì' Ë˜ cöûï[=ĹB¼;<îƒüÕgZ(xlHŒo¶^hMµ.¢ç‹sy|ÿd:Ì[ VûuCþþXxÚ’d¢:¥(¡ù‘oÛ¾Ûýúx´9ýÈ¥Ëõ»wîÚÝY{nÅßã먫šÈ à‘Q"2JOÿq;_s®÷œR~tµ_Ô´þ‹›}vø®ð¶ *G©{QœŒÃXÿ?†ˆµ     ðÌ ˜9@ãZœ¦Ët×þ‹m›mº£Ç‡e§¾ÿñ÷¿~÷ñéIޝí›hÿØYOYÛUßa. ‘AÀA:úwÍÌç\×RŽ=v<´{÷Šy–f?“Ãß÷“e‰Z+ÓQý…«)#ɰ)þîXH}ü„?yrµòH>»“#&ÓƒšÉÑ3¼eÓ“~iאּØá”2ÀÕäpHïCÒ{ÿÿöù¸'»äêA×Fl¨¼ÐC ~#¤Ÿw–î3´qÚwbnµÁ¬ôO&5€…íˆ*ä@@@@@ õHâÈ]Uî‰ Ê”ý¶om¿H5CÞÚUóø®7¶ŸÚ_c^™Kjßs)üÂeùŒ}ˆ®º$D:%€€tÚ±Ò¬6Îõ"É)e·‹]ÂÚõ-So@@Ž€žw—–:_]³¯¥ü—ò'GÁjÔMÀÃpåm _éºmyÒöäŽÃ# ½þë‹Í¾1µñþ{Þêâx×Ùé~ò‘º…Úý[0ü[‚icÿü®j^vJQç‡ù;´ÖûƒÖ—÷­t {æ…‡M¯š;iŸ¼R›")Œ¢ÓF£PK‡ÈD™‰ã€åJ½§lxiGDæ°˜„j­×—hškÌ—y<çÜ[|ë”Ò=Ñ÷¦‡§Q0¤ÑŽû›ÕžàÜ^qÉè«1Ñýúw=ã½ÌûsKütÚR*mÄ^ÿdÎø     h<¤Wi}§ôfõÞiëèxsnÒâØ9¹Of´gÄóƒ¦m³%Ä;›*‹ºšü‚K†»$D:!@:éÈ?iFçzá¶äÝ<ôå…Ø7òËU-Ï)ÿOWÔJšŠ|Ï¿Aá2Éþþ„"Vƒ€€€€@Z'àËÉ=¸ÅdNšU:ú`Ô ¤O;•(ÒoVÏ‚]Í«â”òŒkù#—„H'0täïšáíZã’…*œ«âÈa1ÿr"ûË>ÖöûµDmº¸W¦"EË.¿Éþ~G‹     ^ÄÉ£)WEVjx¯ÿZ»½^[éÿÃŒfsöE·ŽiÒomˆ\Îæ wn€¼®æ_K/2z;`HŸWÀ+Îf‰Ý®æM˜zE“Æ•Kt÷˜ãq]»Ò®£øYT’-µâ2\Þ§ÞJÍŠ     ¾ $R±h¦JboíiêV¹šãÛFh­jö²þÎÆË‹.ë]²“Kº† ¸– Ò Hs]ö—Îïúô¼Sj­ÚEt¹ý\}R‘éáuN}¤{lðÌm*<øe²’?yQ/öú;Hþå1ñ!€€€€€@z#"²“/‘c…}žþöŽ;jíŸx·h»:M+ÖÙ¿*ü®Ë=(]I¥k1rÒ ÓÒWW»“ý5q5Ë|49´|×åçd’£’¯ü¦ö¶\lÍ[‰Çü‡aÌúê|´˜€ó7=·È©,ûT†Jcý²R0OD”…³› hl™…²Û W P4EC‚"(ÂÆó‚è¼}ÏbcyŽ.ò¬È^BvÜ~`Wž­¯Þ¨Ñ®Vë/þ®ï½ŽÎZÈ,.yÒU«žNíp–ÇM€ÇMôÙÏíùoå<½xãÀÕó3;/-=3O…|ïùß[3A„iBÜ+°‚îË{„‘;Ϧ—pÖŒC@ºÖ°ÏtâÍÞw‹Å|Cq_H_Rv^¾.ÎS>–+Är¥ØÛæØ~¦öDÉ ’IÎÍ‘\5åmÉ vÒª¤2Ž(2)r»£-;äËDs°â»,ÖKg³_lÉØz0Ëšq‹d¢¸q‘:ò$LÐ?çã~jï¤nÛv‡½,±o¿gï,7³Ñµò׳Øݳߟïàíô°V#æFdvçý‡&lׇ¥ø¦”A¬À/¶ï$6ØÚ£%§æ±_´k4ŒoÍYôìò>EzÞ¸¡¢"ýC”—òõÍË–~®—ÈGŒÏ]óË;tKÍÌñסW醱J— OÿvÚ¦’†Š*¢</ óYó.Áæ‚æ(Á†sGsMZÊýF©‚SY[YËŠrlÈ´Ü´”(kù,íLÜŽà»Y˜ªåгG›÷åü:׫f®_žõ¹>2·! ù0dº™Íš¾ë}šjl¨ðó^Í1¤ ÝÕㆾU lÈ) ÒU®o}Ù˜kNrÇ=¨Ç €€ü="??°ÁöŠÍS?¸ñ­ÕÏ-ŸqîÞ}ÞÝýÀ–_£ØD¯ŠÜå’ì0Ê. ‘FÀF:êOªéöü¿æü\Ø7ß¹¿•5ÿ®ç_ª2cŸ)Â\Yt-ÓFÞ`χࢀü *4Ÿ‹è%z¡öWÅ‘—ÛŠ¦¬Z“<-O(u|d|s½QԇхtVh¯-¹>ÉÖ™èü¼ ÅmMY_HéBteúÕµ6Þ/lmØ{Ž_x¿Ïõ‰D‰}·ËÅ|ía{ƒUY‹ Ä >-çÐúì¼<‡ƒÿƒyy˜x[­m© §ñ$ªC5yHñë là#ª!ª“'ž—U}5Ïï“ ©¿Ï9Üþ}r?%ñyvÓ^CñÞF;•@®f3GÐL9Ûàòà{ôå]þ¼©lª<ûÚ1íô@ÖZÖ`QŠ}‡÷ ¥èg™ô“‰¯ò®Èû‰e.Qáé…f[ª ,XÄÒŒ—³üÀ£†e=lâH߉¾EÄQ6@ô45cØ@ð©ü‚öñy|ØLr…eGê¦ÎK1<í©þ¹ð¡Q@@@ Íà8?~Žv=ŽfE'Ü¿rïå„Ñí;•.÷—y‰?¶rµk¥Sê#h6Í‘.©]ÀÚ{èë—ϹZ¨4_\Ä:§ÔZ]˜rïVÏÝ782}í™2m,$~‡J[¾¤$™hxòœâ@à·\cñ¶Hü*'Jpú<íEsåéNÙ—-Ù³½ÿÁûú ¢Ë?]ùÅÆ!ëÇjŸžÌ)rN|uªkJ?^ÿÜ•A¶Ìl¨½Íñ1+ø“â=${´í{'å,>^°°²/žÄOôƒÈÃršøD àò“Œ!¯ˆÆj ^ð`÷y™ÕsÎ=@ãåÇœn8:b›Ø !rìÉ2EžçåËâ¤âãËë¶ö:Q€ÕŒV˜ Ýòô3$*Ñ»x¬‡QéQÏÝödî%.^Ñ#'rf™aÚÍû5ö¾¤ ô!8þ³ÜC'y¹.52"Âe¸ñûø¤ &|*HõTR`u‡öaˆ•Ÿj'ouœ[XúýkÃßÝÕsÀkóoÍ)ÑD[=¶ßHÜI´oÚ¦IíØã¿æN#Ç<W¢¦ÿÀûg>†'¿†¨@Ïñò<²œCû¡ø¥±‹ÈA°ŠS"Ʊ/Ø[¡ cåy wÍçybEÊZ-Ë|“NT>¡ÜO¾+ÖÎQóem-Ÿ£ÜHOŽÞ—µ©‰=!¦;¦ƒY=`Sh³úùôjj]ʹví&sfsmbÉFò*®eEÒ%—‡_¼'F)_Û¡ýÀ‰ðÈþ«#”眧›…oDØýÙA´Ç–ÄžÞía;%²Fwjö™‹)v6´Ù§«ïGEé¯ 5E%*Ír–˜®¦ããp}«1ÎI.!fàF¹ ëåjZTþ½¼GgY~Ï>~öø{z…j|=å{>oksE¢ZYj¼àu•¨Þø:_x±A¨p…BA–Ö,Ö+ÊP¤7Лs4O_HÔÐJàI1t _`h:€¤™D Â(ïèW䈘iw–ß~%ÎÒ~F¹‘.òýQÝñ¸èN)ùΨŠä;«QØ„Ž’ À{åë”ǹJÍÀ­ŠÖÉ)E®¯]÷x³g›¤à°ºÞSçö¢ b«èlM 8K)έð iž€{Ú½iâ3å‰×¢µPjÀcök&w!<üþe_{h7›~®œØ’=üöåJØÏ‘ká×oÚ9äÛÞ×6I¶åýöh›+vâ²8£†°²ŸÕqƒ¢Ÿæ/‘Õ÷P‚þÕdÅ]öæ¡üØ¢¿-ǨœÚ—'P‰/-ë[¦›DÕª ±ú½Üè²w¢2_”*éñ‘_n¿MÚÞï+ý•dã 2Q(× Õ=Ø@@àP“+mÑÄ:ßòǵµíšZº\«¯/l0âXôÜè“WØÊ;kçpEȯ\µÝøŒjÓ>„ ”J>嬇à”¦!Ú½r¢@So9ëôÒ% ëN_ëuÙû;³w§*Ï’²ÃA¡I%]‡jü#n…œøP…žiaÚUªÇcñ³'½ÊsÕÓñ'ô”ED?ôÜ´,C»w›ö¬HbÏþ=ßû?8ÂùòÿF.§ƒ¬èÏä,û<Ö_tà‰óü¸&£ÿº#Ãî¤|¸È#ò˜2¨Êã<'Á–9xÈ{<A„ÿhÍBTîNÙá<”àÕ¤&?û|MTÕ³JÏO‰2}PHã}Šþ¥‘\0Dææt…œVÙihà‡*܃3ìÅ…†ƒ€@Ú! Šˆâ*âÒ^Òö^ýèöM×_ Íß2²[@›–›|nð'ªè.…_oê\¦]2Á%!R <|¤’Žø“j¨a¨ª°*£ŠÆ¶7C_ÙbÃOM›nñ´:…rÿþ®ÉÛ\O´-ü+…rèÿçVx4CÀΓ°ñÕ-:Šöj<-I»®þäRÉ/ËìD'ûŸ^–ÂríØuñ •‰¶MØ10±6Q„)bc6ïwEì5’ó55Œ1ûÏ‹ç9} ç§qæH3PÑÔMÀ­°»“fáÉ!Cù‘§Ÿ>XæY“rùœÐƱA ÆóÇ=·5ÏÒt»Ï¢ê¦ª}<9"% ¦¨Æ*½©Þ–xY6”/óü|ú;µ N “2fË‘ú 99îîm¯[õã³vZR>WÁ_…¯ëç¤#¿tJ}kYÝáT¹âxM-`H-=ñÇõxɹZ”qJÍ  ­?Z!Ô§KÖgÓ²Ïõ ³T\ר½WiVþ(O ¤jnO|1*BìA›µï¨*ëëUì-hÕpfoJ5¢ïÿQ|qVø-;6$¾Lî>]/È-»(NŒÑ Š|vµ²]Zùj3zäK2ÏùÁ†yBžä ìˆöÒ>cKPC:h˜xÛØ>åHW9ÜýèŠ<‘5e=à ÐD]î%òoÆ—‰j®¹Ä‹û¥m¦Vó}=w¤ä-F?uC™÷˲µÚžnÊ›†iA3Ì,¼@@žQZ<¯îï)R:;í÷^qQ•³«Z-Vµýíïò“‚*Ž^N©+×*ü„g”D—„xÆÌÏøü8ýv­îé’í\2tp¿wƒ*ŒÈ2γŒg!Ó°Ê£x\s¸Ê>ÍÅd(šñ8íÚž1›+´¿OËÇ  ¶Kû‘سÙ–7Ä%ÊÍò±‘xȇøLL2z<˜‚Ó„¡Àmèr)ìbØÎ&2m3ý$Z2¯ÑqªŸ×çØP<á Ñ!yxg2_߯æiè]š‡ ÜjºÒ{:Qî.¹ZšÙ0 ;±ù%†ež_€û‘¯   Ï„€¼Oò-~~xË|Jä+W¹JõÙE®9+s·†S v]¨Â3+Å=M ‘×¹ ¯Ï”ûâPR!wè)gÝLKœRë²ãÝ£Ž¶#ë,.l)6>°Å×ÃÅ{Ú§bM¦tŸ§±BŠTØ•¬JnÈGøžþ/ÄDåifÏqov(בUɉz-¹ÛžèÀæƒE’9uLrÝ”¡JQÒîˆó†Â_OÔVÓΤ™1ü®vË•<ß<eNY@M'r(þy–yeaÉ·Gb?+èçüÞÒek²SÍ?Ÿgnîæ[¬ø‰ÜcLl?ϳ:×·fVür•ÊYÕ¼œç¡/<‰g '¿¾-Å*Vè{.WнÇ(W+Ö–K–-‚FÓ,ÓpË·ÜE¼Äžwú’懽r)»û5þ³±¼ÊµSAëWyYI¿ª»AV»M,óñŸ’yY7óñÜ9:R;#™âiÞŸíúŽ GšÇƒþö‰r  6%ßRýÜ2e ›6(á½ë~7¼½Þ™èÖÙÛ_Ø[]ßqóK{=ŽüØrc¬ƒ ×n²?Gt»þ;ŽõlP(³]/ÀƒÝ‰žLxjÇ’'DQCcyG\¥\,§²CµÓÿTýÝ׿M•Å­ÀßçA¶cÑ?¦c|Ý›´(ªCT,_Ñk?¢7fµò-ITwwòbïÕg…èÏÛë…Œé÷Ë_!&£—ReSQ)tHÀSX;Ïv¹ž®É·"—„ßNøn£’ksõ\Pcê9g‹õÁNéà;š*z?§¤\âPL(©Àg•´/œÒÔÚ%ÃO—¸e~³ÐàÅA“3o·~;î&OMUrŠœ<Î7ÙÓ›úÚ‚e6V+%+dC9´[yú×iK{úï,»ÛÙáÃþÈ5¯Äw"Zã¹¶w<Û‡ï?wÿ¼^–·Û¨­ä™Ó9t\LáQeÊÎjQ*,îÐõžÇ@IDATîDV£¹f¨€€À3' ª‰Z"7ß¿g'ܵ­\Ýv°gÏiÛôι¶öªf¯ÇtsVÐÁOJªè|Ç2J—ä;ʳ$ðdŸe‹Òö¹½\Õç`hU4öªbî×bG›…Eüå§Á³>¨]yÖ(ïæÞÙÌÕ_« wËíFh¨sC¼‚ÀÓ!àö´š õŠ´·´nTŠõ÷0{f÷M{^Ûw?éтՋ>Ž[HtT;þN {¸-Ýék¾²k½¨ WÕÊêWÈ}¼§Sû‡ŸÅ²?LŽ0ÆàŸ`Eÿ"W“³¾«Pv¯^ Z ¢œí³÷2Õä1ÜõŸ+`ù’¨Ô½’K=º•.VêGÞ.WœãM3ÙƒÛÂÏ_Ážú6ær¬Â“¼%£è2K‹ôQq²›ìmLßù«øÑ¼|†C㓹šOJ8'³…«ŸE0 Tƒé-#Àtñ™ê€v+Å]«,ž#ö€;ê—h#=(ð®šU8lL˜£/ÑÙJçÚî[wüD FŽ‹“³RØÐt}ÃõŸíØþÑ)v›lÅ;²¡æ6ï}mOܧ†l¢>¯J^˜¯;W„€,$‹†Ÿarš"’ïXÞ#f6 u<Ü®ŽÏP¢&m_ÎçÍבoMŸãâ=ngnY”¶³¼-o¦w¤Á“éE@@ ƒÅØÀZŠýyûM½Ë…úŽ|÷ö•9M/õŒè0þ§)WF9ñ8TÌ!}SÊŸÒéz ñ,Àð,¨ÿù9ùOÑÌ)5V%T1¿;ýÍùýë-Èûuó­{.ðýf_K3mk±NtFž2’ÿ97Ä+BÍ2ö&îeØàÁ×Í2Z¨"DDœˆ6rÔãœÎ±NdÙF4UI%Y¶&oFžZ"Ü×e(_¾Ž²ñ,`]c#ø«!Õ7[y¹[–7Ûú½Å‘%ýóeîÈÕß$ÒnG?ÁC&˜‘t3c_Lh=€€Àc'Ìqw|ß”³ôá²KÌ;›ß]»ýøZóËn^qo ›ªUqðÙ<¨Q¹È¤Lû(Ï’ Ï’þÿž»±s•èì”&V±T17Û2äÀÀVïש[âb©Ë™s¬8!VkûĶ€ût‡³ÿÇ;·Â+<1)<âX²¢ô³Ëƒ:‘Ç–óÏùɲ§:¦tæˆäús'ÇæàYçÌûF'³çߞŞØ3©õÖ:ž~·GòY{úÝŠÕtù…ʲ¯7“íè ×sº«’f^ôºÖ€¨ì‚²õ”¿îªÚšµ5Ï뾩ì²<?0x¹‹ï9ÖóEη²Õrdi“]eùüˆ'âäAðüǼÒŸ›”š +î­Ôˆ¸&.†ábσ@Žºz/ZÍI;D¾«ŸæëtÂé¯S*íº¹{n?–ì+ñëàdŽ·º•ýÖAÇ|¾^—Ù7rÏ‘vFÛæ-?ŠõjÈÂèg}ÝZ8ãß­yèD-5K?BÍU#Å¿-ºÙÂfãúÞ÷ÝFTkk­æÖ \íÞ–fb)_ßóõet†Û\©é²E]@@ í° /#ô¹–‘QáÇï[&Œü¼ôÄ<5ŸÊw`U™œÒîÒot¾c¥›KB<#0<#ðrÚyÎõÚ}§4ovJÓ¥cE®~ЩpßKÁ]³{Wšø#õä”P¥µf” Ø—Š—Àïm<°³b•\,¹¥dÏëË&s{Pç–^ð^ì:NæÖÿ†æhËŠS_¾.˱-F¨±ßœÀÈ ðx+÷Gs‡Î»çgo#;pÚ5Ò«é/ÑVV{Œ¦Yì9½S §¹:Qíbµv[D5;¼°ÚÚ•¨Ð¡‚1æò<;Ág³‹-}efã…§eSC”¢ÍõH-ãG@’!6qõ§ ¬¦"TD’ˆçX 39Y ÷§íCÛVø3yœdðùóe‡Xø{ҬȫßysÈ~• ¯yŽãê¾´IcŸ‡ÌWÉç8µ_]*íXàØGgy½IMZÈ%É%á/5p¤ÙWÿqf£ R—½Œ~ÎÁ²¡+à\@¼–‡¨ÁgõêY«U‹­เèÄ{'W¦,'ZfCïÄ…D;ì>–Ì…Ƚ‘_è?ñõ߈£°Jò/u"ç&ÈŇö4æDxz—áAk£5W¹ ìíƒUdËæã?•JÃÓ*v¹Ý‚MXÔ?oŸ¬~׈*Í®¦Úeªª P99äž5Âõx–fûxv¢ea5¤Òd2-ÑäÊW¬PI þÁ¡Î ÝÑRð 5£´qI6a…]I(Ï‚ Ï‚úÿž“}LF©ë’\2wQ½ÄÒÀSÍ™ÍÕ„%y’Òäurƒ“€fá™'òsR¿‘6}7Ñ'Û&Ëìß½oJ {еšZ¥(kEE*Äg~Ú!þfç¬rüAMw§dƒØ¯œ•¿”µ7{SÙ‘eêY>#jØt·W NÖ×¼j7Ï(¢Àú™òk÷XቖéE–ð;¾=É›Òoçv ¡7T–x” B@¹TqJ.jÑÑ“ýê·øzZkÕ”¡µª©ò^Ž(Û«ô0 ›gæ8ÞÉÖŽè»_¾™0Šh÷¹½ƒ’yÈ˃³Hþ×Vk‹‰ eb¹XB™ÕŸÒ´–îi8'óP‡L|Þ3â,±åÄ’“CRÞ"ú¨ÉÇ=ð€²I‡Ç›3m"*¹§DŠ…#¤Æã1÷ª–£€€€Àß' ãDˆ‘‹g›)çú•Ï} ï,¿Þ…j8t‚MΪpB_§\ï”’Ÿ4Qž%ž%ýÿžÛ56†çB7 'ZsJU Ggšï ­—v’fd2qfò8ú™½’×Ù?Ë7xœdy~À‘ÍŸùúˆD•C+uô¬ÆÓª_:ö‹Šäד?’¬h!ÏJÑxÒÅåáçÄg÷”*¥÷Õ‡ª¤{ZqSn¥ •¬V¤ y>QkñÚ&VÔêÞ«ó±'{B{æÑ¶s5/éS”BçøF÷ «\ÙXgD*¸sÜ|Ò ÀñÓÃ[!KËj>GiG 5Äs¾ç‚új§«HÙlØ[ÚÇÂën=<2…ý_¹zjBkžu@,”ò39˜tNÍ"¡Åˆ;T…}ê‰:FlÀÓ2\”—•aK­YDcž­bbé=Øÿ’sMŽÆ¦ü½øZ¶§]Ü3yø>r'õª   zÜ“1*’ND‹K¢³w-ÿ9þ=ÊZÇä§4]Hªè…œ’Ø„nWdy¹–Ù$ò4 ¸#Ÿæ)q®? 0ǹN+ï”W$€iÊAÓ…™í£º‹roñ ù´º˜/6PsaVd tóHbÕ¿"À“àIû4«Ð(Q‚ÄK’‡Ï{ÏlÛ‘hÅW+—%åŸò(=L©#ÄpòçSºsü«³ÿfgåéç_'Y_6V^Zž½¤š56Ç9f™¸>¯Z›döÊJÔt÷+^<²,×êœá¦–¼ÿY:¬¾òª¼g(ü12ÖHzæVøsŠtùÖm0)ÌyDT€Ý <·Ë œšQÉ<¨nfÈþiõ럅%߸ù_½ò`wþS·år&‹»ËôÙðBÇø/™ånö3o:Îê-sæµ6ã÷uô£XGœ¹E[¯-W³\D׊^®ó¯öÖ×·ÝMnÄ‹«oÅ_ :7ãüöžüõh©÷S†í­9ãɽ¡ø?®Ü®zÉl¶àþ’¯è¯ð7ª~Qå¼+üïϵ"à ñý 5ñã–þ•ù•¿¿®Ù2N¢¥  O„Àë¢-券‘ѽ’»/ ªÛ¨üÔUCß½sûÖñëÆ;Ïiã;¦*úF§”l27 ?ᡞÃáÓ[No]”<–ˆ(Vs±¬Àó²+óŸ*4î±ügéœò\ÊX«gM¢Nv¨âý.'ó[Pl¶e.ë­¿šŽ‡úËN²7±a‚ÿkFH¿[~¬PžâÁ\ ¢hÆóÔ³ÂF3hŠ í_ˆé¬¼ç*I‹iž±^-ñr;ÎqïÇ?_ñôoxLøm»‰ø¶kϾX.áõÉz ù–å^eP‘Ëå:N¼ÄkYA-+ÊR1>~Ñ‚r²œ©R!íæ¦Z¢Ë\æpbiò5EQ+ÞÁ›·bƒ€ì,ßTÓÒћԃM${Ë~Æ, ïpZÈh^"‡©È9ž&ªé#é–¼mÜ 5¯JSÅ}{8yá-LjH–˜ >àô™tó盵ˉV;Ö”I\Aô}ÉŠ&& ÿ$"N¿Ëœ÷Š­jVÑ_ôU¡úÌP™Uþy±4IÔhQÑÒEš‡õ{kÀJþ¾üPìùî›î¯rdügšÊ~Fì   ÿ!ÀÏ /S>Ž€»šlß»uÆØ9#¶ï¿Ò%pѳïžÞ6ȹ¡m¸S:\ÉOrF¹æ’O‰€ò¡<;nL3gØ«dáSûõusûy·öÈä±Òt#OÊNÝl5ªT}MX C'FÀË™ÌLo£¿I7ˆ2·Í­U&·oßzDaÉá½õì.p¼œm4+2&£EŽðÿ[צò@þ{ß'Eµ|]·{f39ç%JÎ9g$*A ’% F¢ˆ$AEÉQ ÂîKÎ9gXrZ2,fú~çötûž<ðSÿl®â·SÌLO÷íÓéVÕ©*ˆ¬.먪ýô*W‘å¼_å]æ€AÙ¾[Û9~à‘í¬ßÎçRÜ)‚Åi2QõþÅXD¿âw—Õ(ØUÜË OD~>ÍU¹âb·Ø®"Ê"‹Hm¶­$†©#}:æ À5CÄl˜Ìô¨ÿãiÆF8dŒÛ`êÑ­ûáó•A^)ü]c"Ñ[ïå0`€> }eàqûè£Ggån´µËQ[~ŽõíÎr;¹gºj(C0æŒ+‹„¡HÍáÀÝH?è˜%>„¡αƒÀ¨p.v½`çwó]‡G;ô 8!òâ8ô ðÒ`ð¦Êš*®J¿/ý$í5¢ ÷Ó7Лã|Y“nœ†Ht@wÿ#ã÷}Ó¯”ȇN„w¸£C¤Õ£üÉžn&ò%YÌtl6Æ€ó@.•ËÌ*õ ÷-ˆÛc¸Ëû2ʼ/ ï—"ûªìÕõD} ¿•3`)Ri¶VHëu‘hæ³ó?®n‡öŽŒÆõâúÞ5æávÞµ5 b}6Ãv0˜ù‹Ëa”4*ªˆ~æß2§× ¨Ý/M@þ} Vw¤ž™d!Z„õœCO\£žñÿŪù+F€`Fào#pÌAp­œ¡ÚíyºåLU4`2~ïCÁáŠ+ à™‚™…)á–oiVq„;âèçl¦¤õ9¦ÔJÝóÈábÛJ–JwÇ/…s®óŽ–"› ç·]õ˜ý0 X8AÀФ©e‚ax=ðšÃhà§o¤€áøéÉa•ï&ºPíÂ7š[{¤ržŸ›`G|ÒCÅ`1*õA.'Ÿj>>†_ýõÖyƒÖůãVúykçÉæÃú¼áð‚½åãoƪíõ(Òõ`n*‚_ÁÇcOÜEû¸lÐ-aF#lTaüwæóŸ“«QU~ÊÝÔ µó5Î7q5–í|K"ÿW6]=瞈^Ÿ%.õvÏÅûW6ºgð/ý(R5º‹z-: ÙÜÕ'ª«|}Þ˜»ˆÂ“ì"#e  3š~í6»M&A Oû8´ŽóoâûH X]m|”|F™Mñ"ÌYõ˜>M Br¥LCp8Pœ±¾ŸÅÏxÔ“ã=G[1‡`„÷BñÚÍôúˆÖãxžóI#¶eœ–á=}QŽšÙ»¢jå<›sšþ6ÚïÍÌÙ’|‡ónpœ…ã`oúcZw8 ”Õ0~gN§?¸d,3‚ Tzy•'.A·¦7T·º%o%¨Ô›ÁrE^ÁèHÆH—ÂÏ1Dï¨UvT õª@T <_?¦C‹~u¨"‚ Ë.®øä 8§oûA¸~n‰K&3 Ú½ª3èy5lѱLjRL±G|€Ã3­çÕú•çTêâ}ãèŒÒ„¸^åYyÆLýP× ?õÕ!baF€x‘ÜW"ø}ïÝ1ö¢öÂ/w$ptŸw7TÑN pˆcb£¢˜ÓZPÍs Lüx¿ qsüNkª76‹Îµ¢Œ¢'>_C?ãUùß=rR%V@`ŽÛßñ–ª«A 6þnù•§¾ÑDucxråÉm©C7{2‹*a?&Ý›ªŠE^ ¹ÞÕ"è€ï¡ÔÑW1¾T"¥€#Äç¬Ï&ÀF)3¦œ#Þ†ƒ mv‡GÀKM ÔvblE^)ÜÆåŠ4*\¹’(K½ÌÓµ¡Dþ}ý5­~øÕ ÜØþlã X6C"¶C÷ä=ó|³Ç‰âEœ3[Ž”cÔöÝÞnouž¤’þ­ Q÷¢oV÷‡¡^$W‘ÜÎëDS:O«÷çáA‡oº^Æþ—e”ƒC3WÑŸ¯£ª²–ªáUÆ+%-$êXñÇ~p4~½¡¿Ï ünX,Ça= p½ÁQ×±¦ÆÁÂ0Œ#ÀÄ OÀó瘸Cµ|êez)KZ¿sYñ¤R‰û”†5ûPò™GýÁõƒ«Új`‰ÔŒ%þ˜áÙ´fL(%Ηæ [^£áù '«ç¨S)ûÐEÝõ¾ú"‘6í=yFž4sk= ò+#·¸Í¸+‰O<ÅÿŒ+†…áhþ¿ü1Åßpúñç°Ïdd)™ ·ú”Â[åFƒ‚œƒ`Š9bÁ€«x¥Âg^p ô*ÕãW8%Š=BÌ—Ä¡rÚ¥.}Tõþ?(Ñq»—ÿ»5›º_ ­lœ§7Š$Â@Ý`烡ß5j¬,Kt#Ïõí ùýíþ³Ÿhç…]-£«x¬½*}s3×Í)ÊÀü3"ÿÛ±Ÿ×e¤‰Ka‘‡±¾íbƒiðM¡I*§_”%Ì$ ›Yð¿#KŸX9âãžÜÿÁrˆY@y„*£áM€K½©Ê7’÷aï鼑J€ï Þ)£2jV.ÝÞ«5tÛ2?åê–k”ç]@GÿŒîTD¼ß1‹Fþ"W"ër†œ© ƶÛõ}(ÞSµÄHñ-’^èÒÆË}ÜÛˆfL™u0bÑï®Õá‘÷“jOÞ—XN›­ý¨®9Wþ¬˜âΓìÈÜxë•N¾p$¼{k`Ï€*`Ô 8) 5Æfýá!À?~ÊF€`XE R½°…š²­pE\ìVë¡ü {¥î…Ï¿6µ±gÛ.pû”Äà‰®ÄÀLI ê7y.q–¸@€§qòÿnCÅt”X'¼žÁóÖ1É£×B îHÕbn³Ô…s I—zŠCÌÐv‰Íþa]âö”ø5p™¥öHÜá¨OA‘'#ݲ Ñ'ù=FdîœùÕ#òã_ÇÕ—!‡¼žozÿ•ÎM…Ýœ]ÆúÿŠœåÑ™|4ð_ŒwîÀ# „BTY¼þ¶ÁßÌ"mb™¶€Šb|+åF”)¤;#ï1 ÁЯq`SÌV¢õã6ÕŽBdþ@ùc.]Ÿy£4zÊSÔ[QßËr0ز‹L"7´[DªÜwZ*™ü@dü#rþÜ”‰x<Äqºi;b >|ò 9I"$zp ú;9S¥þ”#L´!J{"m# ñ‚¢# wr|Šý†J½á¨X»B¸×0K.g«©‡+•7H_Ud=•‚®/›µT¬íüÁhˆÓÅÆl‡N¸»›×ÎhЩ"Þ‰XŒäZR÷·~OðT˜>aÖKñp)üã<Ο¶ô¦rUË]åK¯©HÁ™ýqÞ”ïã:š”)¿ö.ö³¸QY1kØðëÊÛcF ™# jØ(«²ÙÀP¼yûFÛ¿‘ëKe Œ™ûáWx+‰Ùmipû”¸{x´œåÑ&—Ïú/«ØD€±‰îó×m9DsÏ"šu`fgŠsóÖ4GªµžÙ5K®²yÂRÞ3E®RÇ&P\µ$+F >@é³(e°i㵈ÓÝTw‡ ¸ð%ÂPÛWÿÀ˜b]^î˜Ö/"–í^)ꋳݯ¼_¸ê}!ëÍÕÓ.µa‚q½SövçŠÙªº¾vXÛ®ö'ºstÔ³§³ÃÏU…+ƒ6Ø´'z0ºáÍÚV3:)òuÏ”vù ¢ïó¸µêû.\(†©¹)ú3ñ‰J ˆw‡F\ãù¢·g­“«ä*uÿ“Rz£ð#Ér…¡ÿž³::%PöîÙÆ(Ã¿Ò¸Š•¼ÕÙ^K÷ÆrEèxL_j`dÈ1Æ*w^jÒGeí£Y䣸<ÿþh¿é†@dß=ÊX,—â<+ºíûè®h±êÇ÷{ÁRÖHC‰>ïôi®”Ÿ¡¦@T~‡Ãã÷7Ò©T™çÖ xÑǃ×Ç0Œ#À< .¢(‚ù`ƒ;#‡ÍhZaçKgîùažÇã]uyG€»§$úkvƒó§DN÷h;0j½ck° Ö ýË#¶£Dtñh}—G;;[úÈžà3¿´›ûAÆÌå²6÷ß0ä}Lz…I¾ŽA.(‚¥,Œ@‚BÀ*V¦MÔÆQ«‹¹:Ɉä˜s ÜîK¬.>\µíÓ–k3©nõÞ2¥Iñgв˜,&¨”m§¶VÕ,ˆh1E""{tû±cЍÜ|;Hú›ÊnÙÈêõu×ûß ÒšÆ(Hñ»_°?Åq%ÿ&~1Ûðù Û^ÝUío‚:HIp0vjÁTÕ_ÎBÎ; {Ú¢ÔõR“ˆJ¿Uª´3Ý$ŠÔoëÓLþå›9—¥ MSSÑØbl!8àð3»D€h‡ŽeÜ>#mfM_ÑÛÌ¥,!2©T“Ó?žYèz ±“‡1Qª+D¡k/:Ê`¼éÀ¿¹„qª¶Šê¹×ãÅ&YF€`ÑJ´WóÀ‡Ë|ýÁŠ—Þ:ÞéLè©>Ÿ­«ÔìRá;M=ËÅôöhW/–à„šÎK\ €)K< àkm3³¥çz´êÑÎ}^üÒêýÓ©E†‰Þdù­¢°*º( #àÐL";½Ðð(Øõ³.ÖÇ""™­«Žˆ¸‘ÊÈFpûËÔ&[Dä<ÎÄ6¬º‹®ª*ºvN;š=Ù©©´‡ *ƒq.;l~$ˆ8Û*íX]ì©w‹Éej¹c¼âUÑ€°¼^^/Kµð¹]¥ÝÛêEÀ†œRsCÞ¨ÅЙüq| TßÜ@%7Ñý…÷ÓʈÖåí}’h»¾CщJ-ÑÆ ÇÍ+ÕšŽ÷A½JUTéG„=uTêþª‹ñµñ­*”(«ÉÚæùW†µ—r[`»“ädUôR¦§ t‘(ÿKù¦;àˆ¢Ü8ûc|>2@9 èª|`Öˆð/ÕOYF€`øC Œ:¸Îµ³´ééÆå,ø^Êù>?{$ð¤U"ÖZ:‡Gs7q÷Ê€¸Ãú¿·ÔÂzSΣb¥JÄb‡K…§_äµÂ1Íù‹Ö3Í$:ŒVg=ߪ‰ # P}ˆ±Áدç«Ã_@äW&ª¢¯PEÔ\¯»zÐ8äê×=4(fr­úífd¢Í᛿ŒZŒjýãî—¸:….|ÍýîÚIõ;‘•¶šÎ·/TE–‹€í€Éƾé@]­®"é‘g"_Cmk¸}L4 èw®‰Ã§t³R  ,¶ªÙ¢’ •B*øz=D×þÕÜ´`|d3kÌ‘óTלS±ûì´«öß‘·ÖF]ÐÂÔÿ,Q) J4ë=+F€`F ! ð|à€×~×£E¹4kÓÖKߨçŠ×ž¡‰%Ö­÷¦ [}äy¦Y_²Š}bwûãO¬[Èã¸XiéëÖŽìÈ=8o—”}¼§èmõþôzšé´‹Ö¢º8b©”ÖR¬FàÙØá;â†Ù./”B•‘t±ÎŇn<––Zþrä¢_5â7‡0ôDGQšzÀPÌ¢e1Û¦ÂÕ¦Œ+Û „ öì ò§ ûø9< ±“´8ÎËôÅŠÁÙ<²•rl©·õ‡h¤<hF̯DÕ¯VÍâ‡A›ª¯ìûQ±éE9êãw“ôoT3VcF§°çQ= >R4è<8F€`d‹€r ÑYo¥}.^N5-u®4G½+áIz™*Óiî¥aÙAV«btÃõ|ίq…;â é?oG™Jòz”­ÅÙ ¯eÊîûŽW;ýž^FäHÕÿè<–B”J½baÿBÀ¢à‹ªh~îvC;­rò®|¤ÉÍD!¡k¦©êü?¿ºàÚ“6DgîŸíèþÜl#j§÷ÖP¬/-®APÖ`ö+sî¿ ó-¿$1¬»X.–š%ú"ªbŽÙç–aD«"‚ÞÚC´7x͘®(^y¨Ù*Ÿ¢–sš_ô¹B”éƒLw58äúÊ,&ø¾üÀŒ_8ÿˆf$1ÀxwF€`¿€‹ž˜íj³hE¨ŠwÕÌÞYú¥M —»)6ãÙ²DYësÌØLùÄÒ˜¡±Ä&ìˆMtŸ¿ndšÒÖ£D K· È‘¢Ÿó=¯SÚ4}˜˜’bœ€åŒ?vx`âWFÀÎé¿+®zjÈ:H–9Mtäc\ûˆæÜ{ø ¨Únm\5 Åý&> Qn6íº8­rĵZZMÊÓ¨šÿ;Rl¾IÄ/Ñ*s»³Kî‚óÐF³aãVÚ®ªçÓüsAߢpEÑÃk¸éò0ðN¹>ÒÀVîÉôH€Ð¡ó%¥«Âs tUeâŠê¢šù>¥2'‰?{ܪ}D\—sDÜwTãÆO7Zˉ¦¾>ccîÒ»^ÝS.f2Qç!¼}«U~Témç—ðÏfôš >îo˜E£Mô±"µjF€`F É#wxŒéŸN)­ã­S5ñ HY õ—`ü‹íG,­Â›ÑÏ£ÕD„%.`@\ üŸm`ji Ê8)V;@³Ž³zßÄ·¸_ÇgNMôÔîQ¦€ZÔ‚¢°ÓyMå°²0É+§Ÿ2 y "õÚIq@QõŠx[¢¤æïÚª½QxnÌ ÛñIz¢K¡—FpEÝç¨"ý…µlTȹ¨Z¢ÀÏ6Èý’ß hFÞ›úÑ¼ï »Ò}èò²"Lx’Íé5º‡ïÏɃhÍHŽ.Ž¢t{ÇËÔº‚ÃPW½ŒžŸ@e]Ä—ª¶ÖVk…:òªoo9UäPî‘”ÃQ®6~U9ïîfÆg„H¸ëˆë œ êÚOó Ë¸š aù9Jìa\b©øUuSÛÅQ§ßÄ"óýo¦._˜Uí³¢I¢2µmÃÿMPbK9†àÑ&kã© #?óTq˽Qû ªb‘çÎ/¨ªò·Xÿª¿Ï¢¶­ÚøøT!Ê81ãWZ=ì^^£\R$ƒåÓ`9Ô¾ò`F€`@N8R`¥óÄhYÒ±Ò﾿¯^>ORÈOb¾©Iœ°ôVåmMÁŒ‡%.`@\ üŸmÀtQ"šy4}ãÑh!摉©×¥ííM>w„—ð§nÞ¡˜(Ÿ¢Ïñ¥%ÕnYK±b’ v¤¿“hgVáï¶}ùˆÎ· »ï#šÙzöù'wAõϹfVôpTõy’[â ;¤}N…¡mƒÓv $4ÜTä"¿•”!-SËL¨`OòˆÞŽZóÙ.ˆÂÌÉkiÅ=d‰C؇`cSædº–g³b”¥sZ:8íÅ´ù˜‡VTµE]Ç|rÉÒ*7RÁj4æY”_¤Œ@ëð‹08ÀÑ—YŒæ*2½½ËÎ<1 ‰&´˜Ô!â ÑÑIÇnºpU‰.X¾2"¶wµ+ªz?eÆ?Äoñ¾ÿDò;ò²‡ìmFðwÉÃÊÀ7ÖÉ­ª[‚÷¯4†{‘´³5<ótl¯—¿|þ5úDùJåmíhDøV®Ýº9è_dj¬½‰*õYü&‰3ø}Qï›05É+ƒW7ú8\Ó.ÓzЈ&ª;rŽÜa2ÚRˆég£0eˆÓfĵ§@¢f oʳ\}žd=8ðÿfVûO__1 ?¬ï ÙCÁ‹N3KõEˆ. Û#Õâê“Ò¸cQø´ð`ó‹Ÿ_Zì†|fßÙfîÑègÿñ™îDgóóvÃrWÂËp܈¸%Õã?\ Œ¿“ÖšñŸ­bƒJÒ902õ}|9rl‡„U;@««USã3f³TAÛËì¬sû;üRw.¢nW» ÷Å~6öj˜Ñû‘ÏjŸ5b–,‡šÝ1ì*ÿØ%F€`F É …Y¬K1„œ¢¼¾Â«¾W-(àGZŽ=¬F[ûYÉÒù-=ÍÒ¾–fˈX^?¯þÏ «T‰@ìN‰äÑÎO<Ú«âü‹+#–©½¹òæ£3o˜ÕKSŸ"dÊÇò´ié4Þm|"õ|þƒ©¥’Žm²? C1̤bÌÂ$qÌkĨeôVù"¹Štv&ªùa ^aD˦­˜U†Ó|¹PÄâ ÑÖ̪Žmƒ3S,†l$›)FŽQƨ7ùNöíA[À¤­à0Ç<¢:ãkeõúÿ•N8Ï‘!G?} ýš^sqe«¢~SÕ5-KËhz9÷[\GMʾ½ˆ›2kUwi°Líù41½jj°r½Ç÷Œ;ï Ȇt o£ÁØ€sàmµi®¥½ ÁPå»Jcµ6È{ú°üH'$m ¶nk ò¿×ØWÌU•hí uw¢€û¾Rçýû÷óJàN»(T1´Ã3”˜ VŸG>´´z‚²Äìˆÿk¥¬ÿƒ«Í=:‡¥39|£´PïE ôþN§´ 4‹>•ƒ0aD´HQ{Y䀀,%K©ØzÊm)Ç£\õšÓã¸Ï^›+^Ö¨F´eêÖ1©ÄdÀ•”¦ ­nèÙ”þî²á/`S¹ïþä¿åë¨L¶Ò)ðp¿Ü°þZ/ø«+Š Rüé~KwN sÑ( ëc™¤|rr—2©ú-QtïÏb:>þüQ²xçqD‚á`ŠãO\\¼,&©Š)™‹dÞªe%jØø´tÍ´5œЇ³ç‚¿º@ð×QËp^LÙZ?&7ÑíÊ·kK0/ıY9„¯pšnW_•¨yÑÍt3áodR)¹;åÞ®ß5à÷~k|1¾ÜŸFè`*^àvÀ¡…´GêüfaF€`’$¥I"9“Ds­œ¨ã=>¡upì´öu¢¥mns¤õÞ™$±H€;Å€¸=(­Íå·tMK#æeJ!=JoG³½¯Qat ð×rËP4.SÆÿEüÙ—‡gY~e’2^jçŒFc *}¦œ™îh+‰Þ>×÷®oxßÝYeÀo|<ÇñBî÷ñ€1´ô~à0¸þµ(êD.E4¶ŸYæ¡cˆð·öù–‰.s®tfgq¢fß5ñZNTéqÅeÎ%¨Ê‰(‹ß}‹Èþ9ünˆ¼';aE—äӔ틎*óM]Ç,åÎQ¹ò˜0@+Qƒ>ø‡ãë—ÓÏ,X)¤âr —üF¯‰¢+Íp¿M´tá²ÆQo¡Æa·-c® æÀœ{$Ž“6µ%òá|™%¦™5ÜÿG¾Mùoet%ð¸Ò/K×K„õ­Ù§©_:0f¯é„óÁ_^E«F’ûaúÆ~ðyXF€`’,ç(‚I[§="—wHúŽ›ø| »ÂçÜ\YV5*6¥’¥Ù%nWŠq…´g;vıµÙo<-¦L-õѱ¼“w*j‰&]Å´4 È6‹i¨8_˜ø5ù àF?Yˆ‘[T‘÷—ò¯Öë »ÌѾ?úÁ öýðA$»úÝÕÒÆƒô2ÏïÔoÿRìœz«›1Ř©RôQúpUƒ Ðð—Z诽V¸åï»Dµ·×láUEò»¥Þ,”¡ÿ©1Buppç¤=ØR/˜ùê:½3UÝ]í¿¿ù7ð¸ub÷¾’¦mÚMÞutw8Á@ª?‘)a–¾`é'–f˰ –~jõöÔOÅ*!(€å‘¯,ÝR¨û‹ZÞ-P@¬]D¿L—|ŸÂÌoŸ€ ÀÂ$/lý’¼¬v\öE»«È ÷)ÏG@Ÿ¡½nú‚ú=zÞØÎo"üÐý´0¹Hë¯õVÅáÅ~¦ãÌ6ྗTjQÄ(O§Ñ†þl† âK¤pg|åUo0šOõ-ïDYÓgé«!QGîF¼Œ°#Ü.³¥ÍüZüv5w{¼j°,q€éå{jcîî÷cÃ{®÷,±µîWžïÄݶHÖ"—à¬9»vW4(‰ ê.…‰ÉÙ–ç~tƒ€(óz zqNœTÅ q¯}öÝVu€È^ò-øÉñ•£7µ"zýýVs½ázÕ·Y9¯wpþeÓnÐh,7VŽSÌt0P.\F€`F y ƒçh*X: ´éô›WhÊí©²z•QÉpJB8¦nli$KšbF­w¬b vÄ´¹b‹MiïQ ¥š"ÆhAúcjî5G4%"\r/ú„#rq‚ ÀÂ$O,óI®”Á 1MLQîyê½å„!v³ÍÍBÞ݈&ÿ6uC$"ôÑ…¢‹ÑP,wTDO{Ùu«ßá2¯"c¶±ˆ.ÀÛéØHàßTnU©±ã;¢Žû;¤öX&O©éÔp¤wŒ¦·ñ³²‡<ƒß_–OÌ5hX_ Þ ³!þÃ’oHœ 8ìݽ•N™2¥ª)Ü*°…ÓËŸ¨´WÉLú¯Ds›þ<6j7Qл!—US¢ˆ†ÃUM í¼vÀL)Éw‡{`ò¯d 1¹%ëÑèRïqÝqÎhó· Csï¦ÈPøÙ§‡b$cŒïe~,àðtP˲0Œ#À0É„GŠàyº@;G½'´Jñ®ó¬ö=öÿküÙ‘~_ KcfŠŸ¥#,Íê#àxÁëãÕý3¼­Åkx´×ÛjiÅZïT¹¯’v nô¡™/ê|fóŸm—f;NÏÈžÒL pærŒQí[¿ÿZ ïD7òßh€Nì´8×Gt^bŒIŠÒOÅËÊT—ÕŒ†*ÒŸ&0ͧªöìkï´è¬~×zäë½Ç ‡»ºæ&#•‘EE’ïe¨+êƒÔÕܲ7}ì¿&&ä}£¯rø ŽÊK*†ŸçdžY:«ï·~çKßZD%ª¯äxhæþ9)"G…õëhàH‹ö¢eƒnŽh…:zÈ·U‡òÇÊvw`ºÒçõžÅ}_GJHÔíÐðH/ÙT;CþC>Ÿ´ú=mŸ 1ÆÒ¶¡ŸÖÉfHÛvR²Ä..všqòÿnÃe}dQ\D?Ï{Dâ<ýæÈ‹ÒÕå·ÔY~ê¿íûßõð'Œ@rGÀ万é]é8Ìúæë³Û{#ѽ¯ïO6‚~+Å2ÎÀ[{z÷A·ÀÛùt¼—‹d¨, N3&˜~æAàÜ â A¼7ˆ]³ÀÎQ·S%’þ®›çtËÊjWEiQPl,^X×F}úÁ1~­‰fåÿ©ZÔM8Òm³œ¨_¹·®ú´BMo gÓgã¼ùIV’éqD¦¿šÆO-¤ïa¢DÀªaa§BWÈ“ìDy yÐŒ@ÂG@¼¾]Œs)ø”=[³_ŠÚ“%‡KÖÀ•nŠåžõžà‡HЦÛÄU¢tãÓ ˆðõÐ\ð,VUD^´rúµg¯8‰~‰²…˜ú‹b­ÉCjRv¾0doɤyV‘Ä$º÷ÿÙ-§§8Ÿ<*á&Âþ‡»5EñOŸ:ý·*E¤w¹ž§½Ë¡¸ßM38á( \¸@/…夼Eø…<+O˜} TuF ¡" º¢¨ë=ð£,ä/´D1¢d5Y“Àˆ²Ûk&Ôáó¸F "à—¡1Zœ¦—Ÿ:V8:hëff4¦úþ UzLéoé–fK° –€}Îj-–@–²ñ¾GSçHç*­¡È-~“©­~“rQJzh}kW °Þ²b§°#Ù·`˜Aä"¥šàöÏÕOkŒ÷[ä³Ú„cÖÔ¸7zü$7ÃÍ*‚(ÂÄ)eøßíxo³„Áû(ôÑï2+QŽÙ'jÐ2Þwå—·qU &e±÷ÓðDDŽFW•zå7ÛW÷Ð5ß Åýä§r•„Þ 7š}s‚ïÏIùÌHÜûf_ïéD SåÒ¸ËÅŒkDÕý·ˆ¨…r)ÍYÑçs^Y€pžãlN^ŽÐÄ}tyôŒ@ÂFÀç©rÌ}¨»þ½ÞRÑ:iËi¦¶8ä¼Xcí„í°¥ÖǬb vIJÏ^¯¿õ1ÈǦä±tyŸÏ}7è9Å::!œ´SMƒ—ü‰†©ïå^k)VŒ#ð×؆ÜCiºÏŒO-†ëc´üo±—ûïÏ’ÃÿsˆjŠ/ÞÍ(3Qp¡\щÎ/ûѸHônök}`(xs¶Ö3Ì+@IDAT&øáåP$!Á‘’ìÄË“"ß”=Ô¾ÿÁ”®M’¼Ã‰1T|ª˜=Ñ3b–®ó¹%~¾õˆ(÷'%µñ„XCëŠ^uq~¯§ ³ÖÐ%yÅdD%Ú=æ3Œ@‚AÀ…y—â9Ÿ4AÓÑÔùŽè%Λãûò4KÛ.ZoÛš´YïXÅìˆ5hÿ´âLÖ»f–hi‹6*šz§ö~KÏ Þ{Ecº¤}ï¢üŸòÈ ±–fÅ0ŒÀ¿AÀ²`µÂ"¯2üà …·0F ý]Éà~1S‰®ø_9b4%jò]£BN亗8T¼‚…¢ˆÒí¦£Ø ;üo¶Í¿a¸EÀªå¡Ó¶RWN8yÚBš7ôN RZ²VÏ®¡ÈeÝê¬p‚!•¡Xú³¢/R£VKI¨y‘l˜?q{TxkŒ@òBÀ@»ä\¸¿Ò-Ç7ŽêŽbª6˜¶ÓúR5æ5Iu¦€cg ;, b[± ¶ö¬§L °´­ìÝåÖ§ªþ³x,fÓ ê£oÃC8žûWMº²U*ÐþkF€`þ©EÓ™¸†#¹ˆ¶Öڶε‹èĵ“§Üï"BX6ú ‡À¸1ÅT1¼BMõÕ°û_Ö»RqD§ËÙOq(þÑæyaF€ˆ;DWÑUÅ×bübj¡ª­ iƒ‰øíw2 Á0=lõ¨‹{î¿l;35.æ6[ïõÆ÷H¤Å¹Aò®'&îÆÌ[b$†@` ¡à4j¢çÒöëçQé¬-ážùÐÚÛ_,mÛCÖ[V±;bá?¯ß>ÁmmŽJáï}Yë&ÚSWM»ôf(Q&AÊ%+&÷ÿy%üŽ`¿…€ùO#Ü„&;wß[&‘a·êzÐ’˜0¢¨åQ™|#ñ¦h§ªØo¾±qÌ´ÅëÚ´šó¢‚s^:¦ƒ:l”uKy[d&Àß‚bâ;òÿH ùˆÎL:ÒÝ×õ—›6Ç|ƒ5¢ï©:®û“Qn…û@ª Ý15ˆjt¬>ÍÑ(õ…ÔnÙ‰q[ ºƒå“kªT¼<Þ(#Ä(ýÉBWñ%½¢=ãÅÊ¢’“âS£Ö®¥m»ÈzË*¶`@l#üìõÛE.@¾3å¶W¤Wý;‘‹‰è°šFP„T™‹øÇ)L¬Fà!à‹úÞQ mî íܱk«ÑáGºQAÛ¤…P øD VK^»~ýGÙˆ(dFÈû1…PünIÞ”Z,WB+NCñ _%W£ž8 #À$@DCÑP7u­t­’/ã:>¶¦Y  ×Ê_›ª®kÑ\{(¾–#)5Ñ‘#Gò»Ã‰v|¸³Ž ‘ÿ†ã_Îã\ Ç¿ãÐOð…`ƒ@z™edzSv¹X[!šh£è°Ø¡Ø†T‘0Ã0Å®À ¸Rìˆ+¤=Û±OpÔßV¢²îLyÕkWJm°8"*À_–SŸ†>S:Ú”Mm·W™¶PbÅ0+òæ;çåÿA—ûÇdaDüF®ösµ"Š(ÑZõ½×ßÓ{>§ÅŠèÈ_eyZUYŸÅ…Üÿ&ó/p–@Ѱ©;4¬ÂyÍ´$fü½ãÀK1q€ùSè åDÜàë‹ \ß¡)CºT»Ê[rœ2åµa¢¤ºP "q~¸|ñuÁ}A¬ÞèB±Ï*¯WZçŠ.gR t‘Ù©ÝÇòÌ,Œ#ðÏ•ý"zÉ2ä­íÔˆ¯EwÚf­ãFAb°4«8B€q´µÛ²­)˜Z›RÃÙÇù–æ+Ž‹ˆÇeÒQ†‹Þ§P8}ÊQ›…`¿€S™÷˜ð¯wV~ö½?î?î>D´áìîKø|ž6ƒª©Ìʨöç©ý-†‰UŸðK¯_>` R¸vûº(îBo¦êâöªˆy‘MåËh‡çR[`aøF@TåžCÆY#­¢î¯m¼n€ Eÿ.Ý»¼C÷õÄgf7´Î«uÝkK´¹Š¢{àáÁÅ®DûNíÿÙ]‡¨fåY5p[˜ä¾fÎ?\|µÇ÷1æí3‰0’ Œº.}C.ñ«¸*VQ†OÖÑajcíO°¥mûÈzË*¶`@l#üçõ«KA‰Û£þh¸ãvðúB»*Ñ Qƒ~ѶRgL²;™KiÊSÏÂ0ŒÀßE@¬+Ô}ãqÇ]Í\ߟVŠéƒâ_o>)_Bä¿ÞÁŒZíîìõŠº¢¶¢Q†NûˆÖôZ»>¦;¨Á_7ðÓ‡ƒÉ×/{/mîMžÕ×ð+Û`¯€5#ÀĆå¸ë#z(ÇÝ•ÓWÛÝpÝæ]w8׫ÑÈðSEµš -üˆÝb¥À}aúÃ-Ê!øûo«{ÅT&*÷¨l}ü‚|Wù®ãp½×G*ÈÂ0ŒÀßEÀZfÙ°pW1šh3P  å¥ð ‘øÌ#5˜bÛEÖ[V±;baÏú-Ã_Ô·6W×Òv Mw¬wôÔ¾ÓZŠíb2µÖ»!~—š.ÑX57ûóZ?`Å0ŒÀÿm«ö;Pw¨ÎáÎîWˆvŸØ“ÊÜ^m”Ö[僖çm®ã÷Öm*ñ±P=¸ÏW¾FQ‰7”ØäåÂ]ìqmïyÆ£;·È©jÈÓ( ÈíÿßáàïXA@äTä_>Bêrù7ôßø µ=Â&… v±F,3'à­éµgÀºhý´n”÷‰¢{»gã¾qëðu÷‡D•6TÜêÀuïnìnÄóg"È2ŒÀóÐ=ÜBÑŠz¢øßDñ«Ö^,… ÷¸„¦xæ"D©¬÷¸£±Äìˆ ”ÿñ¹Î»êåj{óÎf^´Š¢†è(ÒQ[=…\Cåi>¾Œ¿ËöR¬F€ø Æ#^‡b~O^‰¼&¿En¯+è½Pÿï½o#òÿ­–Å|̦Pq¿ç‹h+Z›ÅĶÃìE{À^!nWq0ùŽÖ™ï˜H”)4Suí ü~4̾áÌx>˜ü #ð¢°"ÿ´VT£ D7½o\4~Æu|ÒõRüºRÐz\ïUµ6”ç/6n× ¹+n©;½y÷oË‚¸o´Zéú¨dª’7ôΘ©§ô/za=}å. øxòWŒ#ðrp Ê–¢.=_Š·è45«yƒaˆ™‰)*$¡ä¢•–æ” ˆØRìˆ-dŸ½^+âoR`Ô˜J›rÛ«×í†È@ÍD0}©·¡AôD"CFÎÀ÷9U·ÖÀŠ`’/–A 7Òv(ªï±QÇs¸á8ÜV~ûÇîw ¼'êQ:À“ÿôÓ‘ÿ§‘³Û‰m¡ªŠïiçéëÆ¢Í“·ds]#jU²esgi¬æ‘Å,v]Þø#¡ééuñ{F€x±d™Õu žÎòå±Wܵ‰J×)ÝD“È=Çý6ÊŠrêÏß•b’7¢*ö©ItŠ„ÔÀˆåÚì1ôSÑ ;âo;ì÷ìˆåÓ‡± ðsVoŸØv @g ¯µHQNL(Ðñè»5Ð@c¡™ÀEŸ#Ì0 1P T¤þèŒÑ¤"“ƒW»ÆÝ™'« À÷´4fäÿÿgø?§xG PD½èyÑ‹i)Ñjgð®*DµÎÕÜâ@_ºÀtƒAB&cú øW  @~˼H¬ëWË%2J ßþñv3 ‡ÜêÜÁ(êôÕè¾´‘ÿ®zsÊõ6l3Ò ó>ûÆ6‰ÙÉê‚3¸0[)Ú«¨T5@ƒïr,º `{,Œ#À<Ì*Hé.ù‹OåHLWi8ýªšÓtëw˜¡˜¢YšU!À€8ú©Í€cJy5åÃÄR1ÚRY:©_¢®ôªdz{F€`þ;R¿]Û¨"ÿ§óžþÙÀctsÖ-{Ý›±tj©~#²‚V§"ÿ°ÕÍ׿ûb1 ´ÝÚ6U;à¸ïñÆI¢íwtr£]`Sw“p‡òÛ§©(ú¡|v #ÀÄ©„ÉàH£×áOnDüg8þ†‚ÀünÜÔõh§üÃ1€Ïc2 ätj¯î[ZmIížEôÊñfµÜapT)2IÿLˆÉàv ÿa^œHF” öÅþ’;ÀèM¿#<±Q4²(ké¦YŠG†YšU,#À€Xø9«·Êf ëħ÷µ´1ÚP±N,¦Âúwx€KäÏ(Ñ5ÃÂ0ŒÀÿ Ú‰6ªá_Ìn׺ŽÈ¿ÉïB¤îfž›‘r? ÿ‘Z)Äý$ßÿüø| ¾cà rläTú9ÂS‚–ºð¸®¶´ê\M|R>LY!2(a6€ŠŒW»álƒeç `Gèï#’–¹úoÜÛI•qŽ ÚèŠÄuY\äúx}¬•óÿï®?Ëq jh•Ô}ãÆ[éÕ}$xCÈ«.0^ÚWàVÛiŠ4ŸÞÊ…Ü ð9ÇŒ?f’;ì•ð2ùI*Fëe[jf¦%)#_… ”øx”§u±õVq€;âäglÂŽ‘Ù:À‘ß9L›'j‰—>vTÆ„ý,êœÀås‘Î=c ü#À$_ìjý+ÑJØó1çë æo,²ñ¸k6&æïÉ*ÓN+ ¦à¢äŸEþŸƒ¬¶Q[©ª…^}8³Ê]_ì.ënGT¿w½ÚúxDg¹™‘Á(ŠzÎ*øcF€ø§Xí:µnZ;ʉjý·÷ärásxÀa_7 tÍ[[Lß›+ýw†ÿSãù(¿ºoÈ7euçØÐnãQ÷W`ü\mÒÄÈN”ÿ·|4¤ÈHy”^xT/F€`þ„@8EDuD*!J’S¢‡¸Sí5—9c-iÛAú!¿‰}Øûÿ÷ì]Å䔨˜ÛަŽwÅpdÓ6¢”G—eÕ‡æÕÏ›…`Q‹jª)·‘ËOMÀ×Þ\{ÅÈÿ• ×>’¹€„Z"i±ôtšdÿæEh¤)-Q”¾ÇÃO§È çzíšT Óºù/ös‹a”À}Ëö￈ ó:dŒ€8ˆ)3æ?¼%û!òÿëêÂîÏq6~Ü‹vÁþ~[ïLHAQ4› ÐK¼©˜WŸ\½.Q²kcM€û8QÞz¹Çhþ¸Ïœ‡T‘b¹ž6p;Ðd|‚ò®3Ï@@^”uLûe¸¼‹ÀA°†Žcf€ d ’XâvÄ-üÏs„;¾r\Ó&Š¢ÔG|FŸêù`þW—âÁZA^D1@F€`b÷L³Eˆ¶^Uë¾XäRˆœ€ ­ïú÷‹W Z#"xF+oæ¿hÌC›­ýH‰öÝÙênO´ÿÜþsFm¤T¬Ö ÕÈè…—±ñ™‹ü¢‡Íëc%V{Mí7½eÃuæ ºbú컂ë.×ùwÚ=dë£:ŸY.7€[C”eMGc>£¨J1 Ý»¾k5Q£å~ÐgåÒsαٲÆLº…q0 Qžfc¹zzvŒ«» a|,Œ#ð°mÚ6mÊù?â8J²®³·wOwÄu¾D;J¯b}žëðEGþŸ©h$*&€û®[ :­Yµf© ãhЬžS¯E”5sÖá(Gª†aÐmüÚb.<½~Ï0Ée¿(×dj4~@mPö¼>„ÊøW ñöÊ€xƒÞܰº<”¤ÐéÅi(n¡ù_Z}ÌÿV´“ú˜ßòÚ„_d‹@ 4'P7ìM7 s#â~®Ò¹pù5\ˆËD!3òß™:Æ F6À%"àÞÔ{Ñ”V§ÊçFM€âc‹ÔFyð.êÂ0øHá¾áqrdx#I1B W¤þÈ1‘ TÿÕ‚¾s­Áu6ûÞbª û:F‹4«kËXŠü?¡ÍX `Ûs~Äõ½±øæ]ndô¶Úúˆ# ?š(¦Ò=è0yáÅ&#<= ~Ï0‰U8îU¨5í¨9m¢`|6÷;âé@² ~€·˜:›òX;©wÄ QR¦ñÚÏpĨ¦dµ4+F€H^Ø‘ÀR¢ˆjÿu+Õ­ž†ÐW!#] ÐþïIÌrBäM¯«W‰“ÈÿÓè§6› ª‚>[`[™m+‰Nd?ù½ÇzÉ%ö“@nÃmXŒ&Ûéùôšø=#ÀžÚNm»2´O¤;ù³1 ×Õ†mý€g?õ;Å6¨’ÙhÓº?Äp¢‹è¬˜1¿ÇlU퉃·7u?&ªSûíu¢ ¥2¤`KÐô!FÅí@ãêÐðv„ˆ€Û¬E¤S[YUƒ2"‘¨%Ø áåEM)givX@Ä•b@\!ýçíX'ºhf}ÜX嘆Ñ|ç=B™õ( ⿊ü# `¶Ùùóïù#À$Ò‰tæD6Qõ¶Þ6Ø":ÕíT†H` m=¥V„.Î!±™Z6Б)ü‹ÛÓdo…lpÀ)¼ªÐ>íÔ(ëéè@yÁ˜$§pßð8?J¼ÁD‚€è)z©g~tHÌ^ùþ$$‹û®«·o§—ÅaOçÖ:¨ªûˆ®«Ìÿ¸ë>£íÓ6(Å©Óã Ìb¶,ܺܘBî½zL/aeé‘÷Kt[Þf&@Ü&Þ"# Pf þÒáß~Ñ)Îíd8!9’¼SDYæ;……Cœ)vÄÔÚÍPr%-ÅOZ5qP¤¦ ôÔ÷!ú߀Æ4ß^3—áF€H.؆uV¡+ŠýÝïï†Ëƈü4ǽƒ(ªmÔIZ‹ÈW½m<™:"êvÉ(ðÜHQèµ¹¦1”¨Y‰&×o‰ ö-´FCª‚üµ ná§\-üOøñ›dŽ€M±/­«ˆÙÙr§òïã:Z±¹žbÐ!2Àƒr˜ÁxΟCÄGÊQ5-êgZ‰ûÒ¨àÃn?¢š¡5Ž ÿ¥î—Fsq½_à1ÆÏL€d~‚óî'G¤²_¢ñ7÷¯ôÔKü@Íö<†O¦áÏŽøÛ3–¸D€q‰ö¶…)²)xÔ+=µ™Zªcž&!†Ë¼úDš ¡Ær+³7¢p> û7¹üÇÿsWÊ_0ÉÑL´TÔzW×êy|:¤›û(®£î7†K\7â[­™íÿ>LˆX÷¤*lTDÞ£µŽ=Vm@·÷Þéå# Qdž¥ôë˜á« 4=– bÜ<F€ˆ3D%Ø/ñ¼¿»WeÊ/ß¡Üò(z›)ÖbnŽøÇÙxΆØð`béc<âMÁ”Þ”û–v¢¨Ï.1A„ˆQ˜îÑ2ÂüÿÐlÿç঵+F€HÚØ‘ÿKôºšðß¿uÿMU $¨uP˜Ñ†èI‡'iw }š>E=XZd ¥ ©b…F YŠžm8¸±›ñQ¿ÆÕå#¢@­}$å'4KMžÅ|«\œ·G‰·ÆÄ5v$mµ¶XQ;¤µˆöTÛëgøá60TbVÿöR„[HBÉýN6µy†˜¤"ƒV_X./­ÿ~ã7î1Df½‘[WÎb 6£»<.OpFàóÀäÏ“¢‚ˆƒÉ¥r‰zÆo8³¡ªûS\'G.l—Çq]ÌÍÙ¯*$±îKÚ í]Õ doľÍºÜxè Je¨2¶ò/®{wmw³¦QB¿%ÈyˆŒ@‚G@Ù/Ê îu*  MðÇ’ `@ü;¯”µù»4œFÑ)Ê,¯Ð Dÿg(Ú,4ªêXÚZ#À$=Kû£¢ú>Éôä5ÚŠ\ÚA+Œœ¨Ðçþx³Úi½ŒY8Çß¼+$Dsñª2p\çÜT7“5mÖl1Õ?_÷´V‡(sÑÌõÄnL¤A°[ÌH4Ç–ú/°#ÿEEe(_¾QS–# y°6¿±×É÷EuèùµI$±k—\çàþ±ûá4 ¦ÎÁùŒºD¥Ý¥z \ yì=‰*àzï.{r2@â9¼šHXˆòbÀ†‘Ê¡‰´ šŒ?–;â÷0ØLgLåÆÀS†RÑ@3@yÐØ¿G‰·ÎÄâC1HµÿŠú$j>JRеà\F¢»Ãî΢¹0úhNÓ H—¸ÍbÑEÿ°ŸÑ¡ÑQ˜‚#C>3`ðÔn_똈"J—:]61÷¾ 讪³aKg¯6^°#äÍ0qÞß^q;ì‚ë FÈNãg\!Ñ¿‘ ‘ÿfzC“ú/ƒ|µöSóšbÜ-~7ZMøƒz—2àø+Z¸èhýwÄ7Þp¢¢¸Þ¿–#Õ~³0Œ@D@Ù/pÈ[ø›„ÿ#¡I¾fíg‘$¸¿‰l—ØP˜ÊQGtY³jæÓ:¡Œ“ÇÁ0ÿwìÈøvm­šðŸþötC™‘h똭k •+÷ e2{„´ tÕ†$¶È¿9èÿz±÷w—¶MÝßNŽ;¹Q‚°í§íT›Ã¦/7Ù%±¼¾áÊ-zMƒX¤‚@*´ùSrð꼟µ½ƒ„áòµ“dn<öß×Ò)ê?ÎýÿÌ$Ò—ô(Uªæ4i¼ªñ±õö¶¥Æh¢f•›-Ѿ%*Ö½è%Æ“[ºG˜´`Ýœù$Òåa3ŒÀ3°ì¸Ià¹OMðwô™Kò‡ñ€;âôçlR˜Bå¸h.ñÍ €ç@Æ3‰ÑItTSÞ˜~1Ÿ¨bpÆH£Ñ­»·Šúf‹RZVRu@$åJœ{øìQ‹áâ ňœ¹T±‚Þ z`T#ª–¾ª·èA”ªHªHÑ»-Q+<ë`&À³äOvä?5ý½ˆî¼ŸO¢^Ц ‘“"ÏÑLDþ»êCµÿ¿ º½ß%´"ê>vëÄ­Ó¨sD!]BŽùˆ v}©‰¾ûÝYò'ùSq}ümˆxAF   ›Œ>Ø5Ï{ˆPÏ}–„;ÆqP£¸¯Úç@.Êe–ÆR½ç~a?vuüßÄhUì|îóËUpS×ÍK •üHÔ£ÐL9TL0 жF[©öÿH£W¥›h×­Ý{dC¢uëAÍ\ëÞe¶Œ´¦IÞ¥d€€¯ç*ÖšhõTä÷]—eœ÷ÝN‘1+Ñî¨Ï“ªˆÜž~ßò#Ú¬Ž›‚71:"8¿Éåè+ðNþ±b5wäyÕöÎA¸YF ‰ pÁjx‘*™{”šê&‘=K»Á€„ru9Õ,Šã”…è2åLíDÍ\f$”£Äã`þOˆFxüë>è>C‘¨Š¾ö ‰"`׎_›O™aøgA1Þÿ…ªjq`½2®óÇÚD3ç?©þO'QZ”RŽO£šQG1{Bû¯G?lT¨áJ˜-WO1×û‡Æd“óÃL€§ä·Œ@âC@¦@Þ¦KRÙ3£`çÀÑÏ’0`@Â8DëH€@ô+|dåÌAiòK<·ã=&Â,Œ#x¥DisœMfPý¯C_]ß×@EÜKµ.5£~ˆüg™ÌÈ-ª•x÷òŸ\ìÛTäïáâ‡A ÓêyAѪoxYæ; ßB¾¿©Ö¨²™|…]ÿ_þEü –Š_™ýq‰ˆ­tçu±à!R\æ~8™ö#òß\o ¸æß'é‹íýL Vû}ùöåkªÈi¨X?_=í|´Sm#`8+¤Ùy¯ÜÇL€¤Zð&mD%Ø/ðü¾ ­žã `çlÀ>WÄ_ޤ½ï‰aïØPŽ ‚™EA´ŠeÊe¡_þØPŽƒøgØØ7Ūؕ W7JE=°î6¸=d4ñ‘AMÓ\É"òÿ4z–¤uÖ:©{ÝžŠ{c@¤#­T“(V¡`…3p»¥ûŠxúÇüžH˜h«µe*ò$äðf$õÑžÔ{:JÔ¼Ðöh¯ÓŒÙǺÚ{w¿¨ ª¿bÄšb¬¼.¿‘WTŽFœ×õ¦76 £ªDaæS <ˆ9êsjÉQì\éÛâ¦bÜûù~mE•ôÜÁie1¢þ%r‹D^ßx!´I”ïÈ÷’fYÄäxð“Þ>‹Ñ(ß g~dÕÈztçñŽà'2;Îëy÷Ãh/"ÿ4ü°ß)’ré¿¿8®6`‘˜¯î{ao†½F£q_ŒÜ”VµEl³¹M_³]Xn‘ß\ËYyö/ÖÆ_1Œ@BGÀ¶_lmÛ9 }ÜÉ`||(ÒA^g B%žpS˜`ÁŠH$X‘­´(© Û›A·Ñv´Á¼&³ñÚÿpí!T×+ií’eäÿéØÒc‰û⪊n?¿£¾b¿z♚¨Tí’»è30¸ßáÈàÓàñûxGÀ¾Þ7j¡Êp¢ø‰¾4¯ã;²JÐ]E„¸N‡1Ê”TØk2‹ü?}|D;ÑV]ç1»\ÇTפBª³°Î iÆ_3–¦*` ü &€ ¿f&ÀÓò{F q Þ3Lå5Ŷs¬·¬âvÄöÞ2†¨ t$z¾C<ï9Àƒ¿2‰Ì"³šàRW4÷D.ûÖÑ[?UÅ¿Î|sº)­Áe>G¬1³ÝôN¢Ù§Ø¨ÍH/Ò(‡ÉwÌšÁ¥ƒ'HäLy©ð·aÇ»Žþ*‡X~+¿çáØ< ¼î‚€ ú«gwtÍè:„"–A#C>2Bˆn¿sÚÂAKk2}’¹áÿ¦@Û乞nwæ}J´%ëÖ".’ÞÍ»ˆO°tVÔF‰†¾)9 òxüF ‘ €{")€š ͳth–;ÄaÀ T^ òdäUhP¥ôh54)ƒP,Œ#À° Y‡ðSEÀî¸ï”@#0 ž%g²?I»hbUMÕ¦›âf^: ÃàìšÊI”?s· ޵öªÈš\,3à™Hò‡q€€h)Ú(ÖæÊ¦Š]…dXSUÂð¿yü¦›ÞÀ} ªVY1Zpµ›µ@â`H‰kvêÄm‹º/ï}âp¦hÇ“­äKhX«Q©yÐy‘V9üä# 7 #À$D\ÕŠðöLnè pëFž<ÆÈ€„rœï#n —èœ2ü)4U ÀEÌ€„rxŒÀs°©½;¨³2\ï¼7Ô¤§ êªrZŸ,{ò#Fä¿­ÞJE¶9’õ­ÿ{÷Eµ=püÜMAš4APD|6@‘f£HìD}ÏÞ°‹{—¦ØÅú,€4QªHïHï „ôݹÿ3;wý?[HÙ$¿Ë‡=™-3w¾³ÉÅ&‡ù'VÞ­öZ¿ðäË&/´g‰t«qFÈ\*Òè‘FµüÞÔvµ½3ze–Ê£y+»ò?H¯íë·¨5ãÖdÚOE&]ÿ¡‘~b€ÿßÓíóžXK€>æ2ßmãA›û£ª?oüzÍ_y¥ÁfšTó_ó¥ÿwÓN±Sö¹îD LÓ.š :>ÒŸÎnü%ãÏ–"›:mzÜŸ®Ò|e¦F?χÈKù°ùb»ÊЇ¡÷üéüº –Ëw"³?šÝØŽÑÁ_:y½¹Xé])r´$â[ ¤'KkCvh4['zDsøñ]ñ’Q;ñsœCn~ÌRÑù2ýž2k£•£ @ü#j‚À>Ì$3Í`ÏÁ{Žñ¿øûô«qv‚HÚ}iWÈ`½ò—^ù÷û¾%FO ö¹îü½€i©µxGzíý+.™˜&oŠtÛé?2Käà{nг Ñ+ƒŒþ{DîÉ;Xbª¿à'¦Ö5Y•¬×÷墉Fèû´Ž×Ô¿?Ô:¤cÿSþ©€&ô>õ+i#ÒÞö+ãº}õ‰hKÈ–/ŸpŒŸP-7¹Ü´èï{kÛ&úûþO7Àó@  Jù Q-¥¢ãèŸÆèl(Y¶õ‡$þ¦æ¶9)ˆÚ¸5(Œà Ä™@ÈÿºªŸj#C¯ùq^ËŸ¿öï™Ó}n;ÿŠ`èîÐ]ÑS~×B@¿´úÃ{Rþ®@¬©õæ±è ×ëzËj‘ï"“Û."—d_\Ó¿¢ ƒ‰õ÷WiçÛwÕ<*`Ž2Gù¯±×Ú«üø]ÛïFùƒÔ­{{ݳ²U߇ÃÍ»þûT:K'ÿqÊ?ˆµ¤z<4Èÿ½žûòÜDY£W§Í{Éÿ}o“ÓærÿþH›HÛèš]Bæn…§#€@A øcøåÄ H  ….@ Ð«€ÿ¥Aû¾ùW í†à>sG°Ì·Ä›€yÝ ÷ë”1;#Å?µ×ý«D?î¾l÷‡~" ¡eÂ1ÑAYò:JnLWÓÕmd{d—ß›úÛ«Æoý;yÚ•§eø¾µ’êåG› ó†û…–QnòH vå¿Wð>Üüüæ/¢ïÃVãµо/FÖû'þ¡3BÑ÷imµä­&6‹ÊBMäíž¼{†ï<–ø¿ïÇ}Ôlžï\fpiM¯êïûe¶oÉCb("z>ãOƒ½âŸ×øç9õ?%.HÄÅaÐJÌŠ~À¾¤Ó`i“B›%µü(/è C´ˆ—£D=b_TÏéŸð/üvÑ2©¤¿ÆGÍ"•õs®yè¨èµþJR!ú®üïß;'Öàs󉿢U)«ÖûW§ôœ2HtŠ¡sž?g™ßdXF›ÖÑ„ËZ×jÿ¶Ê«öç ÐÏå¾:¢‡¾ï&ךRÅoоªöª«ýeó‰©}b_¹4x·û%P.˜ü8tbèx=3&Ìì'5\8Ytªäæï´ÐIAõx¼à ô#âOÀ¾ íü€ÎÝqõÏgîÔóœžñWÏ’Z#qräÍX“áOú4´ENÐ ¥Zýˆ³Ómªl“JR ˆ ˜GÌ#þÙwdë$uz…ꊯ¶Éƒ")×§ öG­…C9Ö8ñ÷yò¬˜ËMôŠ_Τœ©þÕ„¯«~s©ÌéhON³WˆÔx¢z?‘êÍðR£‰€<Û2+*É¡¡fþ èÖÉÛ6I}ßmù&ÓŒÓÙzkç´ó—Ú&´õ§ä‘@,Á1ÙþïqÊ)OúÃþ;í«/í“"GÝr´'ï‰$µMŠÎ `èhãˆ+ÓÚ´÷gí mÓóO&›$û¹~+ÒnS Xø‡Š@áƒh f~6k·ß7fÈéCïí]h–ë<×WëCë¥?-âä Q œ€©fÞð¯ð§}ö¤?ý”áS*¶Ê”3ëý9ÐRM oß3®%@è§Ðlÿ„ky½åú7_h÷ÂÅrvXQkª¤hÞe£íO oéKòÚÌ*s‰ÿû¾©Ì¦.r€¾ïÊ,.Sô‹íœÐÿ~Š2R’}òmß«Hß×T6•£g[L}ÄèØH¥Ÿ*s¾}C¤üKåoô§ µ™v7¿ïùvX1¹X©³™iÀ›i.IÒbÖ³Þ5MüÑR¢ÅÿËI)D…ˆÿ¿›þ©ÜOÝÌ)"K^¿^Æê#ËÑ1<9‚ÀÿJñ3q ã_ï×’"gú!am ÿÄßì4?EO8ñ÷Yò­˜›Í;söèìÑ~׋¯ú~õb`·GDOÊéßM y%Œem–˜—ü÷]è¾ÐÝ~"Àôд_cóJù÷뉵H6;ü„ß®Ÿw•ílñÁ©t5÷èÓsÜÜIoééâK ”¦íªk•>²[íã¦YFí-å[75êTÉŽ¯Ê–¼Úˆ“cú1ô½ÿ—øPˆèµÃ4mêªMÞôºB†»–'5¥ ð«Àpyåןù¡àÜ<঳é쟀%ø±ý.ÓejÁU‚-•X.¢cÒS L C¿i1£Ígþï{âèÄÏø^T`úlÜ $éHzc‡Ø‰þçsè¢ÓwæN2_^åÉHA@@@b.@ ˜`v@@@_€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@ @òD ["± d“¬Õ5¦ëR¶F“'kÏÿ•„´¦ZWs¨T“Zº¹R^ÐhÝÿü¯[È ÿýæÿß*i²Kß Ù®ïHO¤,ã½ÄêXN%Iwå_únÆ;R!( €¹ 5^ƒ ð«€=Ô>n¯©Ø¦ôñe=‘¾]ŽvòP‘ê”oUé-=_Yo¯±~}züýÐGZ˜Žš»xÚ{=r¸È§õÖùñ.‘ŸëoÊùåB‘ÐjcÌiñWmj´o¯¾õì×"GÏ«U§þ»"½?ò¶–wˆ$^ê›ÐH_3RfÙ‰û~m<Ükêš—Íw"ÛÞK»o÷‘ׯyåM`¤NËš™¡7Írs§y)jJ@Š¢ €¢xÔ¨3 G¶³ŒA"ånNšSúY‘‹žnöVûå"‡|\ufí~EíVïµ8ªðïªb.ó¯´f]–3*û‘)[ž^÷”ÈO·oüeõNM\c–%œ÷»qGœ x·ÛÃ==n‡5®V¿¶&n®œÕê–Néôr¥ÎKºO+}µ}Ãê‰uüsaHoV?¶ãøõEFÝ;Ï›V]d÷3Ys3nòZóã·öÔ @ ¾HÄ÷ñ¡v €@ü ”ÖžÉ~ÓäÇd†|£§ûüC¼…ºÜßû1Ò̯¾MöZù1^‹™eNк}â­ŽôÐÚv±mí].#[L9WçîñZwêõ;2RÆ?n¶´G¿å†;®r±7+ò…ÿl;ÇÆ÷û±ŠÕßû¬þ½¡ÕMÓß«#5V’²Ñß3( €äR€Yr ÇË@@@(J$ŠÒÑ¢® € € €äR€@.áx € € €EI€@Q:ZÔ@@@\ È%/C@@@ ( (JG‹º"€ € € K¹„ãe € € €%EéhQW@@@r)@ —p¼ @@@¢$@ (-êŠ € € €@.H䎗!€ € € P”H¥£E]@@@È¥ €\Âñ2@@@Š’ €¢t´¨+ € € €¹ K8^† € € €@Q P”ŽuE@@@ —$r ÇË@@@(J$ŠÒÑ¢® € € €äR€@.áx € € €EI€@Q:ZÔ@@@\ È%/C@@@ ( ˆ—£å‰£•±.ÆK½¨ € € €@± /‡±ŠT‘íZ™ úo—F?@A@@@ Hääþ®Æ<,Ê2]K_ÓOÖkôôŸß"€‚ € € €@ÈļX…™o^°É"f˜\'{ta‰äÅzY € € €¾@" q"ði ÿÕºl5óe¥Æ m¶øé™DIÐ[  € € €û%@ €ýâË»› ¦¢ŸŽ1SÍ´è)ŽääÝÚY € € €@I 'ïó™-?JØ –We©¤i€0cÄÉÁ¡ € € €@1 јÆf—l“²ÌŒÏ~®hdžZ € € €ÅB€@áÆØ8ÿÆ`6F[L7èl{ôô?‡…{pØ: € € Pœ°p¦?Þ¿_¦£™§}ÿÌ’:ø_H'l<Ä- € € €û/@ €ý7ÌÍœ»ý̽x£©$Ø1â™é¦m¡@nhy  € € €À¾HìK%ÿï‹5ýµðÌ‘æ4™,ÍJ“&kä3ÉÖ±gå}Ø € € €@1 P¸8vŠoäó ”‘ˆÜ#}¤´¤ëO‘­[G@@(NŒGÓ˜f¹Ì“d³Öl¦2[îÕi) € € €ä‘-òr?W“  €Z²^vËíf¤ÛÙщcíöså¼@@@…û(å6ÿÌ[e£Œ5÷J ý9S¯ÿ[…{pØ: € € PœHìÑt×ôm²Ûì'˜}h¦}SÞ’×eŠ|© €°NHA@@@ O8ÅÌÆ¿½’X£þX`–{e)³Û¼#žŽ0ZÛ”—I’mð·WÌ@@@ø3¦“Å1cæ™ìTYo^’»e©vë,±gå_=X3 € € €@ ˆ€–ÝÛÝLCL’¤Ê2¯Ëû¥Ö4L nC@@Šœ €ø8d ¦®\-›ìÏf¦ôÐæÿ/ê/>ªF-@@@Šƒ €Â9Š{7î7f¬©"ëd—ÿtS/H¿ÓUöE‘#ÃëDvË|0c¤ž.^¦'ŠÃ£+[ôOWÉó OÀ<#gê©¿ì~#óØ ý–³¢óö#7êqMš’0,Ñï\w½<&qü~ }bÖ›ù"¿‘ùJšÊ+…P76‰ü#ÓÄŒ43DRZf4Û3DäÚ“ÿ[j˜®!á¥Ð“ õ‡y:Äéš´Ê‚}ò×RVÊkÂb¢œ.ÇŠ¤Í’±U$ôhh]è;­Ê™ú×ø„‚­[˽€·‹CãD¦¾±¦ÞâÚ eâ;§?¥ÇÕ|-ÊaºÞ¶ržÜ“ûõçû+¯“Z¦Hä]¯Tä;ý½j›™’¦¿WæG3Áõ®&µò½l@ ˜ ˆ2·éÇz’v8GúI ;T¯ÿ3 @|j!`šHu©£',Kì«'(ÛW§ß—ÚF_4UÖh3zÍh‡¦ÿÅJ óá]bõŸÈ·Ú…A».è¬ÃåMçš.æÒhÅ":0+¥ˆ˜sµ=Š^9ϼ#gl¶¶àÈø6çþlÿ8¦ÊÇr‘ÆŽ°ë˜ûô“~þû¿7Wé;òc}>jæ˜iÝï™>bù†Ž:!€EC€@|§ù\úÚdm0AºËÉÚà-ýx·š  €ñ. NHÌa½2©gWŸšU®Ò±ŽNñ¾±ú'ú§Ó+Rc¶¦Ðõ8š‡ÌéF;Òýæ\¿T‘ÚŸ¹zYÀ/±+þœø©ÃGe@øØ»)z|Ö²ø×*A†˜ÑÚû»Üd’™zÝÌÿúÂÑ)þGž=D@@ H€½×fb$’ƒûíbÉ”Qò¥ÔÐÿ,»ÆŽÐK9òü^¯b@@@\ p9—pûù²½2Ã,6=í‹v¶yÕ´‘iò€^ÿ·¿m·¸Ÿ[äå € € €%Z€…{øÜæ·š±2GvËX飳O/·Óµ%@„@á¶Ž € €'ZÄËÑ|ÅôM2Wþ#­ôÔÿéè€ñR7ê € € PäHî!Œu˜kè,Ú“dŠéež– övMРp [G@@Š• €Â=œ1ÿ9ÒS:É;Yþ%Md« ÕüY©) € € €ä‰@ì4OVÆJr-dFÈàè¸ÿ=¥­¤Ê màåzm¼@@@½HìRÀ‹1ÿDyË˽j—\j^”7eœ*7˹CG`ÀDÊ“@@@þL v"úgÏá±üˆù'Ê.igÇÊ|ɲÉÞ¡›´›# ÿ¶Ïš@@@Jˆ@ì´„ìnÜîfÈÜ&mäFYdÎ’ãd´<€£·ŒŠ!€ € €EM€1âãˆ%Èf¨ÌÒ³Ír9ÚŽÐÄGÕ¨ € € €@qàs|Åénع2WZÊ6ð:ÄÇ¡ € € €@q G2QFš¤¿ln–‡å{ÛA[0`|j € € ñqCò±´“4Yl0ͤŠ<$!m@A@@@ Hää~®&Q˜£íM²ÐÔ’¦vœ½S×g5 @A@@@ O0Os½’ØD»Ìb©(e˜ ÒØ.¢@®My! € € €À>¸Æ¼”¼+–H•Û¥ ³Ë âÉl9>: G§›B@@Š·§˜ñq|¥² °ŸÈ*I-@b)#9~‹+ÓÛœ¥°$tV¨¯¨Ë?šÙ:7‹h׬ MÉRŠŠ@YM£ëDº¶•m!ÿÒ9u?ö^7êòÇö#©¦;QJÿ‘`/*G“z"€@Q(%奺VüCio¾Ó¿Ã½½Ar¹.¿¦ÿ§éJ¡ (Tþ_7޺쵥kdÝÞÙöÓ.Ç%GÒŽ—NòXb%Y$ãd¶4ýõyü€ Çæe3T[`IÚÆ´Bg‰Lj:ñJ]E’·¦,IÔ/0¡z¦‘Œ×†õ£³ä±~®.Qý{»Î®"|_ù È‘—t|e×Ó"å{—¿Á{Bÿ½BÍÃí²*@ß ÔÓ¿²è‰‚Wݾ`çÎül”ô=òÅÑS©ðÛ'³TÐ$ Z|ßÛk]öµ2wfœ^qæÝgÙþ䞎:Tª’p‰>ù3ùJÊíûEÜ‹ ÷ËÓRSÏïW…K›Dÿä–}Ô›.2jÞû÷VÕè½ëm4?k‹€ó̲]·çÏÒB‰7h®ýÀ¾ï_áÍ -·7ˆt¹»ë´äT‘ .¼¨Õö§DïK|ÒÖÒj¿+ïð¹?‡š €@18^Êh[+ >É^'“2oÛ±8­‚lÿ±‘fÓO—ŠÅp‹Ô.‘ˆ“ÃeËØ4™/‘ð‘ɲVÒÿD–i£T‘ÚvH4ÆI=© PìÆë•ýÊz‚_6tŽ—!Òé³®c’›‹,¼cáweçˆÌËþéòèãÙ&[^Ô½§ y|½\{‹½J.9rÜQUÒé|R׆ɓô¸5 ]â-Õ/¢ß†ß7=µêµ¥Ÿ«ñu© 3Z¦dëßÝáéÚà=o–7T;gÕu{Ù°˜ím‘Û…sÈbHc½Jô´íd—¤H¦öùߤ½N«Èq²^/4½«Ô>©@|ˆ~Ú$ï s´È³ª.ÍyY䬲ç^¼COø×îúåýÒOk—€É];éæãCme¬Ö….ùv@þÖŠ‚&ÿÞ"ï'í6'•7V9,¬Gò¬çü¼C›ú8°ê9wj ކÞíæ8]ãQúu4öéû·6À“@r%Ð\ÿÚ–ÕWÞ$e£žÍT“7µKÀùn]±óŸ\­ší¿ €ý7ü'kˆ}õHv/šåb{’6ö×€^¿H“Í:À úˆ&üæ3$œÈOO²üÕÛíÃr¢ž/žuô€´…"§½Òùýmðñõ|WuªžP~ê}lfê•åæLÙá¿€.ùyX~·îX“ÿ1ö39P$áØ„ò€¶*mÒé®”î"GW9fZZ3=,ƒìír’¾z„ • Kqúÿ;Kî@òC ´[^Wü•v¹zFÒM±÷jÒ<¢÷ôËͱÎ&@àŸyíï³ÿ(`Ï•¹¶¿CµRZØv¨~M±¶¥Û-ö××#€-;±f_•Úg¼OâµÞÇÚ—¼û w®YôÆÂåeÓDtýùÚò:F‹ ›°<§«MÐŒ ð×¾yõ ×òBó»Húˆ1¬é„t£¡Ë—g„wêà‰_$~äµ×DÍëÞ+F£~žš_?Oóª¬@àÏl4°A³ÕeŽýQªê¹NŠœ /éL2öÏà â1¡üûmı&0!ÛËž#©²JnÓIÿ’µ5€Èa:À•Ñ—’ø½ ÷ €ù%à&¯ÅûÈ{Ãè•äjßVû1Ú%à sŽÙQKdÝ;kg—Ñ1ZvUß5>áyíÐÐ4•¯õýûëž_u+Éëu‰»Í®•“u”ÿN|¹M¤÷ñç Ý~¤§uÕOÊIÐãÖÇiZ(T¦þ‹}Ê–d7ö(h½é'ì:Œµ¬¶ÂzH¶èô¬šJþ2ôñØk{$ö)¤E#ŸÛáú‹²]›ÇÔ–jvŠ^O)­ÿý_?R@ V K›-j±£ìpÿ_޹ìØ÷ö,Ð.›;MJ~OäÓ£?jZíA=áœà½òlº˜34K—€¼>J±–_Ûq:>Ž˜TcEÇh8í”N£“ˆ{ûq]÷hSûª½Û¯QÛeh¢F??IÇäõ±`} €Àßðÿú&éßëCôS±¦&çÈ{RÉú£øå« p[X$ Kþ·Û éu£uj¢õ:kæ&ã}yCBv 6n\«_ahð[-–@°·ÚçüSÉRG–ê'7‹tÔmÃέ"‹S¶+§ƒÏ-¼qÁåå´½–‰˜ˆ ÖŠ…¢©Û¬a1ßTD¯i±WØóä mòß©éãé:‰T—¥Ýv육ÇåÄROÙ4ó¸÷lt–†utÉ(æïvâ] †~–ÓJIµ]e˜¬Ñ¿Ò/H7½'vy3Þ÷ X×@|ÞÝm/²ïÉ*[Ê^g§ÉPÛJΕ»¤ö[\K >µ@’-Yìõ×d­TUýëì7Ez-?ûßÛ»j—€‰k+ÖÑ©SoM­—Ð_¿ïT0Õå[µ¢KÀþ½abMþ­M•Ž"•6Tº62X›ü?rNŸíš¯Þ¨ÆÙ÷)óïFs¹n*]G›ÖA) €…+ ­±Öù³ØÆ²T~’ÉöýTüIZÉ÷ÑzÑ:«pOÐϱëÀæýüØ/r­TÔž2Gj“Ó:6Y~±m¢™³µšÈ„@ ÐÜhÿöMï->ùãf5»7U›üŸrééÓ’_ùìÁOÞ¯ö’~áéb›ˆ6E7íÍ):ä‘ÞÁ¹9vv²ýN§s¯yR>Wçõ§­M~VÝoÖaúÚ—¼¦·®¹½Bêit]r³-^ƒ w:RKËh`­/5dŒt´§I%Ñás£EÛpQ S€…©ÿÿÛ6¶“m¦PeɃ¶¼*[55óž kšµÑ>¥ÿÿ\~B(Dû„ý·žlJ©ûK –^Ú% ]·Gvè•èÅ_®³È’«Ÿ]îL=õŒ'OiE91ýgGËͨ`ûØžrÈá M.KÏVçë»ÛQU݇–:Öë Mþ{ÿ–KuÕ z¥É½æŸmˆg#€ä‹@)|Õïñÿ™<*Ú-ö!™¦ç4ãD?µˆ2Þ €Â³ÿß-9]¿è\£_bJËL{¦”QKMîcÆø_)~F [ ÑÚHO@Ÿó÷»Ô¼¦æÈìÚ4}à9ë¶UyáàgW×!²çÁTIèM$ÊD}]|¶?.±&ÿelHÚé7ÄfïŽ|¨®CÏ^´ýunRóßÙêê=åu7:£Îœ“*ÿxu<‚ PHžž¿è,:íß{´¶ËGÚ`{´6IÍBª›u$âã­²Wëø˜;eµ}L¯g”ÖÁ2ŽÑkF¥£×Ž˜ >޵@~+°[vûwØåv¾?K@³ ÍÙs ÈÉóN9Àoª>ú¨ÏÞ­6TÙ¾!u4ÐÊœ¼â·«a)°?ÚéÚDTÌ:­âÏ"Ï<õŠäGÔµO‹ÏR?RÇÛí³Æ¿z´[ÚK}´¬à­ƒį€?Ü_ئi«æÉ²Ø.Ð.ÍÕõž£õl ®3¿Ð†+p(°[Fýg2!±ö,íëø¤N"¥×‘tJ@À_ô)ýïO+EAˆ7è—û°½[¯uHÒ’žõ9£_vlÒ.²èÍòß‹,ë·ô²Ú z¾ªSöp'òö|ÛM[ÂÉa]_”¡ ”nݺ°CÇÿOê–ô‘÷ ^ùäÝm®Ò×&*åÚ½ÖÁ" €@ܘ$=©÷[ŒÕ„îAv¨¼&#ô<ç"WÁ]A´3ݲŽêB)H©ýÇÛ Ùl_í+³Âö–Ǥ¿|j+K{‚Îà7oLùãò €@¡ D?K½¼¢WükÖ>¨lÖëÚtýžsîÚª¼øôsóë~*’vñž¦ Ú´Ýì4{d’Ö¹¤w ˆ5ù?È(mD*4¯08RFgWXxÖ¡Û¶¨ãìZd…õÄÿo€yE½î•ý\¤ €Ĺ€½Kþ4€—ÊÑ:,îû¨dëôæ¿Èx½¯º¸€Ìr»k ç{U|ªG >Že¢7ÀÎ×nãí2Ùeo¶tŒ2þ|ÇÚp”ñqŒ¨ ðçÖ¥ko±ÛÌá"Í<¾bj3‘›O.•ü–È_|þmµÇõïz)íãî7u?Î4×^ì%¶Ø9v¶ï Wóç‹^êðØÉ_¤èg^‹Ò-GìÖD‰½AgÖ¦þ: n²hB€&ÿ%ö­ÂŽ#€@Qh¥íâ4`wɧÒ@×9>пá;Ýnøíœý‰àPà·$ œ|Ÿ,y9¼Egè%_ÙŽrµ·Vûÿ/•õú\ºìŒ;@80~ì=öý.IÃ’Þñ®Õ¦ì¯õ8o‡6p\rïâãË×YÑÙeuP;côé:¯}‰ëýkòßO‡¼UŸCû6r´üàM—ÊrªöÿO‘RúŒîY@â'PÊu ¸I›Æët€õV|M¦^'é1¨WÕ­ú÷ø¯Î©û¤v èÙ%ÔLŸ™/£)v—€X“ÿ^ö ÿK]™~eGxoê‰ÿé½ÊnÕ– õÞ=xBÆ`=ñ¯ã•ÖO4L›_ä¢âwøØ#@½ÊêçZ%=óé Ýä›ð¥á-á4yÄNsÏ:ÊÅ,7»kà ù%@ ¿d÷½^—¾ìéSb˱Aeo¸]mëF:Û]RVg¨)ûÖä^@ 8 xÚ% ƒ~ac_õgI>ñÈ“Ö&ë ÿ³L(ÿ‚È„—¿ý²êºÃ/èu•Åš¨+õ sX»NOèµÉ¿ Ë­‰´îÔf{Šöõo=ô¤ã’u,Û@>žZßNÒQü´wHJE?×ôG  €@ñ°÷꧃Ÿ¸ÚV°‡†ï 7Ë`wxþeÍ‹e¦ÿI-±¹eB ( h·™X“–Xíõ-úUÎ/ÞÍÞO‘ïåýìVòœ­-š³/Ê]þ QÚ¼Òµˆ>‘@â*ð½ø}èË\Rv‘Î #=FùÊÖIÚ%àç¥m˯Y7díà2·E»L*”. Ú´Óoòƒw™?¢s½ïþ"s‚Ösb¯–[éà—]Ù¤Ÿh§xßMdÈ=2^Ö׃Å~!€ì-`.²÷û ¯7@–漞Õ!³£mìù)a-VSÅÑRk¯è ù-@ ¿…»þX`Wp·žÞ¥±‹÷{ïG^”QÙcìBý”¦÷N·ßG[„%Ç=‡€ Pœük$Z¼GÊ…Ú§þØú³3tÒØî‘3‡n/òÚ¢¡êêüÊYeÕ «‰€·Í(ñÓÉ~—€ü,±1 .³çëpµRúž2ã½Eºeõ|i«Žå\xýôŒÓµ×GzDgzö/쓟bÝ €q)PÞÜ Ý™Å{ÈûÞ^•=-óÂôµÞ*¯š««~RøE‡>ŠŽC)H©ýÿÛJp?ú9µØgƒ(·DF²íÚì-ò¥ýÖ¶ÓŸ«kšl}ÔŸ)“6މ€”•ÚÄþdÝϲ\~isxÛ£vÞ¥]ž™ß­Ât‘I&n9ð2}|°yZ–h"à ©%±•ùÀc7ÉFIÒ¢õöRi#ÒòÇV—¦l9éývçïl¤l ×HsËeµ´ÖH“ÿ|8 ¬(¥t€ôóbwtÍz=½JÚI¶72¨¹9ØíÁ{.Æ.ºEB~ Èoáß®?öÅØ)½ëc?ˆ$†ïôr²ÇÉhyS’ìN¹JÇT®mÎÐÕdäóµßÖ”%@ˆ]qï`[‹ö©/7ºÜ¢ˆÆžëzŸ¶eŠÈÊ+¦—Óòõ'¬»£ÌÑ.cå­rDSƱO™¼ØƒD×äÿfïßr»HŒº—g69ó‡³&lyGëuV¹÷#­ôJOkï(SG7è×û—¼Ø0ë@(’I:†Yý\¨ëu´÷dß34µŸ7Ó{XÊH{M dº}ú¸Hî[1¨4 €‚9ˆ±Q-÷ìµ¹ØW´Ø/B™ÈÎÈy-ë>™*ŸIÄ-×ë0€e´Á€?÷sl-{­„E@b,à^?{¶¹_/´?{Èéóµé}ïž³¶y½Î°ûë–É®˜]3t”&†˜×´Õ€~óÚÏ´±Ñy-ö?¶¯üK›ü‡KŸëéçP·Ž=_Ù:Wë±âêé#t3ר u@BÑ ŠvM  €”p$m/VV?nò–Ë3ٯû/-rƒS¹ÅÅØlhÑÏš.V »O `¸Ý~‰õu‰½Ñc-ÞuÕ¸ \7ÜßšìUöyû¹½É3f£I’c5°MŸáw  €”L5vQôÊ~†Y zÅÿ¤KÛ-ßùµv øhþê )"SŽŸÔôÀ“40ÈlÕfø"Õôßþt Ø.[£Mþµýk6Ç›VÍSôÊÛÊí?ØÙY×ßL’uâZ‘±ö^û¨Fÿ“-ö©¦?R@J¨À&ýô8Pu¼t»5ë¦]{’×y{ß9XE&Z’]Œ]u‹„ü _²û^¯?¬Ÿ_ÜO²*X´#ƒ()9s²ï²9Y‰:Àóöo‚\'ïšÖÒ]{^’pH@ „ D“Ƕ•=ÊO”ûªü‚ðm:úþá½Çlé¯]ú¯˜WþC‘÷l¸¶ôz>>,ô±<¢RáØ%À5ù÷z×k'4©µ¡¶Íê§]–÷.½e§n÷èò;üízWyGÿÄßè¿q%ôˆ°Û €¿8IûWÓÆËe"íì“Y5¥¦ýIVyï»'vñ S]$à ò;Èoáß®ß]ù·ãƒ»í!îaýª-ÉY{2gÛÍéìõöVIÌ6›B¥¥¼>¶Ö.g§D@J¶@ôK’wšv Ðð†MµN×é–ÎHèámyLä[^û¸®.çT̾>t¤žŸ?až•E öWÓÉú'òþÓn·7È"IKßìªëýºÇ³[ÞÒí<×(=½žøo·—˜AúÄŸe®?Í@¨@‚h³e-£µ#šv ‹4×”Òý6iZ"ÏÑöqQ?¡¢å2Ýy’["ä› €|£Ý犃_ ‘oÜ£¹8ÝÅÚéY{šz;ÒVÈ}r…\þÜ$åì]ú¨ß4Û=‹€ €À;/zÊþˆÙ ÇJ»':ÔÙ±M»L]0°â)"ßÛ)¶Š^o1Éfg´K@e’)çOØRd§÷'6¢íøÏiÑíøWv©ëÍèXc‡FúïÛUã϶¦èú£ŸK4ùÿPBJ˜@9½l©§ñv í§ã—Ý}uö<Û?m·ß@K¬´»ªÝÌ¢ÅúmÕüòJ\Á-ò^€@Þ›þ5ÆÜ]—û{Ñ)©wïìÕMK°gØël‡ÈZɱw››ý™ eÖ~õåü;µâ9 €EG Ö¦ì0= /e…IáÚT¿JïΛ&Ьj¶âär÷Šl~xSfi½?ôLh¸<¬»·w—€X“ÿÁÞ@Ѧý®õFÖT]ÏãgÕÞ4J¤ÂóN ¿®WþOð3Á×¶h¡è@QS@(£˜ëåN{›=Á®Š¼”Ó,k‘×(-húßÅjj9Zú¸ØÈÅAÔnA‰µ p‹„¼ˆˆæõzYߟ Äú¸ìvO{ÑÅÔ”ç¶/ö>NK”ù¶‹\>GúËWRÚÔ~ïžC@@àÿÜ'ŠöÉ¿Æ< Ò¨â¡ÓhÓý†ÝkoyWä­&#½zgh—€{rú›¾Ú"à~ó°,ûÿ—Û{ìi¢Mþ‡&ͳíEº^Ý}ۖѺžÃý>ýX=ñoæ-0þL4³íL^g  €û(mö[’ÉÝörIß“u}æ¶~Ú6¹&úìÏ‚×ØK]Ôùe¢e°‹I.ÆÎ“Ü"!¯Häµè?[_l|f7|’}-夣"7dÞ`—è|Ë/eÕ1•ä Ù §ÿÓdmt*À¶~ž PR~¶û]ÌV³Ëê§JûCNî¾ã9ípÇ‚Ë*ŽùaÒ÷ë«ÔÒÇw™ÝÑÁÝW,»]¯ºô9îþæmStÁöGu<{ǃú¼…úÙ£Wþí\[ÖtQÄRú9´«¤`²Ÿ €ÿX ‚6ë׆þöÛQfDFd~œñ¤œkò?Ü­O‡“–Ó]ŒðÏr˱YÜ"!¯Häµèß[_,Ãõvðtë7ÊôËŒŒŒôYöðÚÈo‰­‘þvbs©,-åA¨=jü+0@ö-í cýUmú_aN…7snѦüÕ{µi…Èê9«N/§Ÿú[Fl~¼ôMnúµ«FéšÉYúuëÌÉg­Ù4S¤âÙÃ97ê•ÿ6:Êÿ}ú<]¡=aßä^@~8\ÊE§½O.±MÂ7§¿’ºÒ››–¡¬ÿ]Û3ëšü‹;’L÷ú9.rÆã ò+È/Ù}¯7âîÖ¯b~±®)Œœ,Ë/{nLíå]sdndž=yÏÓò˜L2ÿÖg~¬ÏØãžE@@à/"'èhý}E×øÛ´"]jw;t‹~Ýzç½7¦Ôª/N— ÿs¥ËÐn ¶¼¡Ï›Ù8)í§y§½ÊøO—©þ<Î@þ–À1R6šXlÏ…ápʰä©Þ{N—VÑWÇ®üë¨4~‰]µË¢ÃØR B€@A(ÿÿ6¶?þ:†^›ñ‹Õ^šÑøSòÛÛzå\>=ü˜ŒÛu™Ô”z²Qó›ÓìžÅ- €)0ËN3z…ß”7 öy‘›N¾mû\‘#ç÷¨äªý0õÊ~Ǧ§doŸ¯ÏmúXmúo´½Œ?ê¿ÿ¹³þ/·Â@r¦Œ~v¤Úm21«ËÖ—7¥E¾ÝýPð }ÙEm&Zþë¢ßBÀ/ÑQÏ‚¹ÍOù©ûûuÿàîjàâw.ö ¢]²õí‹ÂÏd¿>+§W{×0©(©æVy:úxK÷l €% ó1ûM÷mEkD¿~Ux¥Rç½ÒÁ¨‹_[w²¾øL½þ_Gï¿âå9ÚÀn±kŒ6ý/x]tõ|îü•2#€8»¬Šm­#Ý#µìO©CwÝœ|OäžÌ‡å}ÂYÚ®9(~»f¿è3£å $@ € ÝfôÚK´¸A/l¬EÀRwÿ¸õ³×œé”Ý)§|öJiœ²ZG\~ñ×Ù0õ @$àé)½»Â›o:ŠÔ¯Ú -}œÞQ]Ç–YíNü;ërDÿi‹ýïßR@øgê'Km¶_xž}.åö]×íÌôVæ¬Ä~íbl,´¾nåý\Œ~V¹Ÿ ù(@ q÷±êØ—ª­î1˜)ZV¹¨ .ýn‘Ý3³Š7gÇ—öy#áp½k™Ü"Ú¤Fr$[d¢ € ð÷b'ô:˜Ÿÿ[ÏV6Ýÿç¥Ùú¹â¾Äž÷?ñ# €[ÀO”Ó3™»²¿¶v°uÅÆÛ"—gùŸ8~kæëÜz‚øë`€=ÜýW»HÈgù ü« èÖ5‰±£‚çÛÃÒ·¤]j/Û±Ýo©½8¼ÝTÓF5‡%V“í²E¯ÑP@È€KüúâR~o  €û)P[Gû¯"’}lö©v׎ «Þ[:<üUÖiâ'ì5ÁÚmìü³¿[~Ômuú~n—ÿMØø›Oçiy$à2_:sPÞ ‚õgZöË »SS¾õ~ضýmw{ov91g˜ÎšX%Kµ@@(|D‰žSÚ“í¹:~™d^˜qµ½uÇ©Y 3Ø-Ùµ\]Ëg;1XÖhƒòŒ‹Ÿ»HÈgù ¼×êc'þ‚ûmlŒ²n¹†‹l²ñÃÈy[÷ò¾—䬊¦Ah°”×65?ÙÚX“‚ € €¾@Umú¯g9öX©-k"›ÓìžsmÿíîÄÞÖ *hq½ÐŶ.ê¨Ñ»0ê ù%@ ¿d÷½^×{ߎv7 ¢Mq16Ì_û_Þ\~d8²ã:¯[ä9=mBbËÄÿÚ¡U>µ´©fæ¾Wν € € €@ T7E§Ž)c³žÚuÒŽÞ‘“6ß ux[n’A]ì.ÞDìâÿŽJãî"ä§ €üÔýýº·¸»Æ¸˜åâåAôg`ö‹í¹µÂ¦Ë÷¥÷͹ ç8¯÷¶·“–®º´nððž p‹ € €ª@e©*:¶¿ýز/dÜøüºk#ƒ·œ#ÿökeuӡͣŞïâ%A”ë]Œ –î ù%@ ¿dÿ|½îÄ?6ú¥u(¼Ì¦¬k¸ê±H“ŒMÙ£²Î°³6ÿT¾n…³¤¼[)cü¹."€ € €@˜RKôl&òNøùr÷â5K— ¯Ûù‹nüUMì*a—¸Ê4u±º»Š[þ¯‹„| ÏÀ°úØD~KÝãßÑ6rñ”U÷-mNËx?£GÚ£öëõcªì¬:KÖ裉’ý5ò˜ °â@@ M ¾42Ú“?;5+Á6ßXmcÕ_ž?œvœÖçU©e[õòbcŸ½,Ûû\}‡¹¸ÕEB> Ègà?Xýªà~{–‹k\\ëâGA ?µûõ]/x•×'”h3m-/ÁL‘¥u(";e›xÁ³¸E@@ I ±m§£ÿ—ʘ御ϲ«\œósú¶ .öc-[¸:Žt‘áÍDA%ýÛí¸>0:Wf´Ø§\ü.ˆÞKA”ö[ßÞx~äÀõÇZ¾é´ÄÒ×$\™PÛt¯ v‰Çt€N‰€ € €+PFþkÏ}ÛÆÞ&:ÒÙž9©¯ÙÁë›îÊI^k¿Îv‘P@$ z¯ÍÄF¹ÜÜoŸv1ìâtÛ¬¬¶ø°œ[SnË~;ól¯Ë†Ì¤·“ú‡Ö:ÓµÒ2x· € € €@ ø×îuô¯T¤¿})íÕ•9‹§†{­©ìêà.xzîß~Üïwˆ–‰.~ê"¡€Hô¾7cŸu÷ÇFÁ|%Xö® ¢}xáè¹·çÌÙshzÖž±vÉê×*L«x©lð»ÎØ–âÆÔtë € € €"`•K¥œþ÷tV#éºù?KÖÍ».çžmËdŽÔ‘›´»r´Ø‡\lï*›ý·œî"¡€Hô^›‰rùnp¿}ÎEÍ¡ùźû½»SˤDìã™ev½´óïá•k«yÐä„_쩨§ÿµMI• Ô¸E@@h¢ƒ“k ½NÚõvǪ뗼ñóÙá{R{[·oÑëã–cÓ ß,Ë(\$ €‚þƒÍÄ2^›Üãn0@Ïà¹y1½×^³jTdÐÒä†]˜Ø}OÙС‰I׊" ìlü]îF@@¼¨ —"ýÁÿzÙôDq yÓ- X€@ƒïµ9—³®ï¿­ ¶m‡º:¸h¿vËŸºH(` þ›[Üo{»°F°y1ˆÞò›LjÝbGÃ]’õæþüBÙ囄îk|²$JiP[Ý0)``Å- € €ä•€9QN¢ÖE¢° €Â’ÿív·‹±>26¶ûEz?x<òY½SS¿“ýæ-gë{FÙççS½j­&³ŽÈ:I²~WËœ· € € [sšt7zå?»|æQrôú]Sk}}Pv™}%:¼Ÿ=8XoĵXŽL –½;ƒh¿tÛ}ÏÅ  …$@ àÿ`³‹‚ûcÓeüÚà»àþHì¬ç–¶þãÝž6smÍ•_„{M?­ê5#¥&ŸvŠ©gȉ¥Æëp‚«é ¨q‹ € €ÿP Q‡ü3úš4É´ÍEvžº½[äÁYu&]9.-«ó–ã¤>Šœ¬5òr=7x¹,ÛK\¬D¹ÊEB! ($ø?ج»Â;u·wÏóú1ò³‹n^Íȋӎúvjöás«¹ ùªÄ6¾Pæù²]Í7õže_bV€?Pæn@@øsÃÌ¿¢£þß9ÌŽÉè¾¢ÌÂwÃÞm3Û¤·’PÖiÁ‹#M]ÜÄXÀ‹ú¿Åmäc …,@ À^›ß,[: -Ös±n#k‚vÓjx¯Nl;¦LöÂM5Îθ¼b™Ö3ß©½çàôÐðú?ê/k)ÉÑgçè?¼Š[@@@àO\WbÓS.1:¹_F÷´mÍÏŒÿüó[³o_prðZ/=ˆ7Êä8wÿŽ ÚÔ ÊG.~î"¡üF”øx4¨RHGÔôKB½Ñ’T#ˆek±Â­nù¾ãžÚ^¾Â©:\Öuy©U>Z’ØÕt._GæÙ£‰€à‰Ü"€ € €,PQˆ6ýÿQ¦è“­è¾ø©ðäW‡^]¯çôÔʯ¸+ÿ{†+H»:ˆémƒ˜utÃèņ'?!X¦²s(´@ €B£ÿÓ }ºÞ;#xYÄ—„çË^¯ ÚAüuº¿›Ü2ƒÿ9ˆÂœöØ÷öÝ•~Ó?ZBþ¸þZJ¹ÌZ飂år®OMù/ƒåò_<[qT¥ 9—-kšxÜÁ‰‰7M–¯ä{S+ôµl“Íâ:Ïå@@p! ù?™ÛÍ`)/²õÊM½ã¿špÛª‹¿ImrMÏ­ÍòÜ93xvÚ.bV÷ æ”b¤g­PÖËܶ- ûì{û[ÝÝîÊ¿<,{}ƒ› ¼3X»Ñ4ÃLÿ×”–· € €”Ø•ÿõÊ9‘´õ©_Ê!ËæþüÝñY'-R‚Û¤BÎÃEŽëÓŸÓ?XŽÜD¯vm´€þ\1XÖ™Ç(q-@ ®ϯ•Kw?=D›góâ`9¢¿º~ WbN5¯ÚùÓ¶å¶oúESú|uxvxôǽ&^¶¢ô +ݼLg¹«Fûž}5:&³dÜ"€ € PœHcÂ?¯¶—.;µ—¥/H‹œ0ºÕ¤j_Ö WØØ&Øõ°5,{¦[¾ÖÅïƒè=D»ØÅ+ƒ(±¹¢w=×IDATn‘o$âíˆüy}&ë”~ÑâÄÈlÛ1¼;ˆ9n>Îðƒ£‡ÖÌZ°8­ÕÉw'Ö¿®þ§‡H8ò‚qRZ[$IgÙ#©Ì¨q‹ € €@q0ט;¤‚È®“/°«ç_ýáäádŽýn…Œ‘ƒ¤EÎùÁ~ç¼åbNñÿã‚å_ýscÈkÁýÜÆ» €x?B¿­Ÿ…S> î¶®€·&X?ÄXW€ìK‚夵ikR§Ê±™ç}sâ›ætø¢ÌÅŸ]W=Ô¶Í¢²ß”ki¾<¸³}Úö¿-2n@@(NÇ™6~ŸÿÈ‘‘ívVÆ„ù+fÎ ¿óéí³Ïœ:)Òbë—Á®†ÿÄìÝrì‚bß`9R3ˆösŸ¢œî"!ÎHÄùúƒê½éî'ˆž›.Ð;0Xÿ;ˆ9®INöÁÁrRóÚx1û‡ç·~âäf‰/~xÓ©ÍÒžºú&SÑ4’Ä„ge½¬¡%@ Å- € €E^ QJùû`ZH{s€Èö×·|bü_{çgE‘½íª¾aî C”œEQ$¨`À„€® ¢Q˜Ö#ºê‚¢‚qQ ˆ*IP@$) 0HÎ L¸©ë«¾ç­Ùoý+²ëºÞÚßöË©ª®î~îØUu*ôô¹o<Ô¿U|Ç´ò6iŠ]Jœ–çLÔM¢Ÿ‘ÄçüJvýo%éfƒ¨zê–,äì­èØ[™ÝßWž$›GE5:þi,Hc€$véL`€D¡yÜ\¤ŠÃkF;hMâÒO?º-«ßßbÞ ÓËÝPa—ö›*ó ¹*ó@l²ûÛ`* À^IÀmöw™îe—üªD½xÿ§MfÊÆ±Í’Ÿ¼[?o̲'ü«vü ÷žt·§ØN‰O,šî j¿$– nO2…þˆÄò¸÷ `ïÿvw‡ƒ$Ñ4‚^"šÎMMMâ?ìDe±#7Ìœ1¥FjΆaß|÷å!©Öïdµy«Ãâðëõ†Ÿ´×-sPÍ(•²¹¹$@ñH$@$@$@$@ûŠºjf³¿ùþ=f›9$oÔ²§ü+Æí^{àíñ ¾µb÷KaÿÄry´ä­Ð‡EÓ/‰úÎ`çd¾ ÀÏýÇ>#tì3?Õ/Þè*‰u3Ìýb§'CÛ‰&±$ témˆ|ÍRôäÓñ2_mlpB£¡ÆŸÅj½tÈãºìyµ«xvª°zÚ·sI€Ðâ‘H€H€H€H€özÀÓ÷«®*¦ÔÎc¶ßm6|7þµ/N|4ê ¢xÁ=jx1:ö tìK幈¦fŠ¦ÛŠ·Ù9b+ç€IÙWè}åFyŸ»%€5þºœäòàÍ;«©hl®h©§¡ØÜ#{ÎY7_Ô#Ò£ÁÖîß6>úðÃCrO)}ž~÷ßô1=U"“›+G    Øû¸%¼íõÁªÿt›ä}jÁNóy·±Ï¦Þ}âʧºß1£xûÄQrãEèÐ|'vA>âáˆ×;‰™þT±Íg¢j ”²`§nûÁ~ãv—t=BX£GÏ9rúK¾œ<ÑÜÒ¢±¯î?eÀŽXƒ37ð´ž¡÷þ:*tpx–n•³F}n>æ’¡Ä# ìu*¨Jvù®RSíbÞ|óÞÊÆK‡ø›GžpשÝóâ¶í‘-›ÕùKä¾ ß-X{­hIÌHcO1ÿvIW-¡îëd0)û .ØW~©=»Oü‡ª^”ìþç¢i|Ç3õªØ‰“DÃCDãvýOB³_lóèêxÝÏÏ®¹©ÞÂìc][g^ýþºüysU=UYë¦j›Ú$yy$    øÓ ¸)ÿ7ëGU¶R;nݦTýïʼ=lP›d£‘/notü ’ûLœ-¿6¦ò'ñi|E̯&f3kþÁcŸÎØgºÝÞø½’j;왺A4Ü[4ëÑìbÑœ÷EK•AüÓjwì~¤î‚kÞÓ)Úûþev–¬ß8"×1;¾iæ—™{™šš#÷”¨ ݵӂÄ×ÄÜ×Ãüc%Þ"ªúBÙñˆ}]èØ×Á_¾7UçNI6QQ£öéÇÄNÖ¿)ª.†ç/tó cŸø2ÑÖÍ5ß«÷‘WzÄÐ#cǬó6^SÆë:EWæ›™æs|5”Ÿ t<’ ÀI ´*¬õ×G¨êö«]Ö÷^s´8¥ç‹±ÇF$^ÿ°jñ—E#ÔB·–?¾Kn¥¸ªhü!Ñ©"±ý× £EÍxQu7”²Ÿ `?ù!å1&I¼ í*š(šzE4‰ÿà9b¿'Ú˜—­Æz;vì{[|ݘ«ï_3ðªX·º‡Özåà¨%g-WqUWEu=µQ­ÁçíëˆH€H€H€H€Hà¿J ¤BAyúvÝ7˜òŸÿîöºªí¢ßiòò†drèËj|?Ú_¸õ*¹fköãøÌ_Üž„6Lbóðôç™håÇE –+ì ±<î?ØYÛ~ËÝ=IIt?·~CìPKÑ(–d¡ãŸÓOâKÍyD4öJëDÛ¾¡ú5¿¼aÝïE nÔ¦ÒkºrËíæ55 ³%H17V<’ À€[ë§zRÙy½Åí‹7Ϭß8vʈ¥©OÞi§ü×LÞ?³‚\)^ Zø•hÁ‘°×‹ÿ šh&š:^ÔG~“%¶Â×Ä`Qö®G¸ß<d·àÉÓGI.»†g‰=A4VY4Ÿ)5vѬO/øôªKí»ðÔžó"?ܵ"÷¤Ò'ëaõš™>æÚÌç}…år$@$@$@$@$@ÿ´§õeºw0âŸ:$y¿ùvç ?¿/½yà¸G¶ßÔ6qθv&ê?ªÖ£ý^t\¡à<ÑBìPTMìø•¢©Dý^P|5L]!¶‚#e¿!@À~óSîу`Š¿Â®ÿÞùr–÷¼hvvûÌþ‡Äç í+š5¦×ãölh]ýôkι(<úÖ±“³ïPW^lú™;±I ÿÆ$@$@$@$@$ðÛÜ&mô™Á¤_§_T[â 5§ÐŸ7ìù‡ªßP&¾kÄõ;‡ïh«ºº~z>Õ]¸T.P8оñ1b'«ˆ¦Ë‹šK¡"Jå¹P÷OÜ`ÿü]í©Üî=%ƒÁ ¿¾ØiìÄ&!Þ“ïí‚¶ Á“èúÂWWOžþõƒ¥.×F/rRëäi7y§__¹9ú >»\)ó¼éc÷ Pv‡R~-@àñH$@$@$@$@ÿ—€ëø7Ö-‚–³Ùä/Rùéóž\:Á?ëãÞÏ^wß”DÅ÷’;»ìxC=Q„Ž|kü‹Ñn/^)Ç1—üTìòùn“ðFoŽU#¡”ýœGg÷óø7Ï- À¿·Hò‡îž#šõ7Ñœ¡C׊ÆnÏê[§:f—¿¯ósM¢:­=úÖVG{{Ìõ §uR«¡æ¹ÌÒ:$@$@$@$@$pÿzê°LÇÿuõˆŠ›§Ö>“7Á÷Ùò§Ûß½*qü‹?,j>g¥ÉÝŒÏùÅ‹^akÑ´ë‹®»xƒh{¸Ïü¥á0HWhï+7P(§ñ¸ß `¿ýi÷èÁÜ’€Q’[cä?ÔBìÐ4Ñ(òÅŒØ9= —C'ˆf½].T¡X-ÊmwWßg«EWuÖGŒl>ÂkÞµAhaøQÝ û%ó¶y1óÙ@:$@$@$@$@&×ñ¯¥êeæÊ.R_Û%´e6D×ÌñWþáÀ»Z™9ð‡o~ü²¿ßsý7)Ž‘þ"Lí/|Kâ [ŠaMâ1±“E},õõ¯N”xµJ9@Ðp€üпñ˜X  ¦J>ï&(Öü‡±6(ëd‰ÕÍÆf!¥àY̾Jâ³®¯xF•5ÊÏ5wæÚè¶ ûö÷¦ž÷ÜÅC÷†¶ªR±sÌóB‹G    ˆÀÏ;þj›ýŽÖu›.YwŸIOûáÅc¹#yÄó3¾~{RC¿ËšÊB&‘ÿBìÕUˆ%E§JzÑ ¢ñ²¢É#DÓÛEÍÝP×î+6:´_|÷Ï{¦$k¼(4<ƒ¡|‰|+ÅÚ¡X+±s>‚b¯€ì3ÄÎú¾Ê¤š}Hé–·}²zÄtùâ°ùG.ÖS.Ì }î ëg?`Þ0¹4@hñH$@$@$@$°pÿ`ªÐ ›«f›¤ª¶iÞº æÇi½^~¶_—ÔM/l›ÿ´Ð³zH"Z„}!¾ÚUx0âë‰ÆçŠ&ÑŽO¿"¶ލA;žký…Ç{¤àÀýíw÷äølˆÞ)™¼ñ¢!¼h"x±D‡K|öÍPL1ÊY ;!šõNÅ5U§©ïK½u{Ï~u£'t>²Ñ#Í×k/‰†Ï oÐÕr¶ÚÍÎÌЙסœÆ# ìë\Ç¿‰n™ié>dº+mÎ_ÿüê{7åðÁ§=þI²ã óõôI—ûC×Úþ!ùzFTÑe¢…Íac ®#ùÅÏK|ò:ÑÔ›¢þVQƒö¼ê$6×úƒÃ+t°?ý=ø½’KWõfˆ†n`ÍPÖ6±³±{h6^@9#?]4Ú¬üͨ¼œ=≵‘œŽ-Ž\{ÌÞS—]agT,s›yÖÜ•q¸¥œÈ# ì[|ågn¸îÙÜo§?GíL_½®êªA¦åÄ›ŽìÛ95{È’9L?Íï»ÁMÝ_&Y|­há'¢EÏAѱ/þ»ØÉ6¢),ðÛÇfê±Õf(å'@ÀþðŽ¿z[òélQ¯‚hÉÈqbg¥EcψæÜ*šXöMbGç\šÛDu‹Uº)ôð¶póÓ&»îä®Þa=.ÈZ;HŸU1m17f–ÄU±œÃ# ìÜ@VW}“ +å¯M?dòãëW^¿¤Œùôã>ÏÏ{¨0õöðüÅæÕ0omýLž(±Z´ZÔUì—´‘hKnSåÄö?‚Âa ê‹­VB)$!@ÿö„@EdzKÔë-%,½C4 Kb®ã¡Ägc AömÈ·$ÔA•Šz]ýû. -nÕû”™š~Õˆœ&¹ ݽNióªÝ# øöÀfµ.£\" èx$   Ø»x*ܾ]?LõOíJžjVìzlq§y…澑  }``júû³W·b¾ù>ÿF¹ùdL´8.Z„‘ú¢ÇacImüc±èð'±‰Ÿ½Ì÷’nª‹r­?8P~F€€Ÿ¡¹[èÀ«9’Ë«m/ÆT£¦ •8®’ôìs¡å¡D£“ÔËê]U*òQ—Âkæ…N8üâŽÞeáPÍ«®(ߨâêoM7©Cu+»4à35ÇLƒ#À“sy$    ?€é/£2m[}·þ[à(¾°(­ælX?kú”¦~µ7ÞX£oŸÔÄIãóŸÝ–§za„?ÑNî¸ø|Ñ"¬ý/BG¿øa¤Ÿ-š(-šÚ$š>LÔLÖUïA)$ð‹èøE,Œü ‘>BÔƒcÀÍ cÉ@¤–¤—8zŠ Aö±c‡"ßA¢á¡Çç±Ô«Xã´n§Ýry¨ðŠîÕŽ­½IGÛtð&{‡©Ê‘QæeóTf‰€Ê¸ä4I€H€H€H€Hà&`°¶¿‘n–ÙÔ¯¶ª¦²Õg;oÞöµy}q›ñË?8Òõê°×"OK™ó­ÿ¡ß^­O®•ÛJ,-úF´øØhO¡}Çž[‰BIO‰¨ôù‡ÁÀšÁŒ\õ>2PH`·èØ-&þ¼xôrɧ#Àuä±)`¤¶¤gáÅË;g6^„±ŽÈWY4RéàÎ Qñ²Ç^óîÝ“ÂÿÒîð›>¬Ûw^í—õ¡>¦Üó˜¹I%mî|µK„$@$@$@$@,EÕ=ôAÇß¿Ñohv$W®¯³z†ê3õ“w4$]÷ÍyŸ-|¿¡íÊEr©§EŠ7-jÅ€Yñ_ÅŽc€,ÑRì”l$¨Ò/Šm¿ &.Ê©þà@ÙCtì!(fÛ-L]Òë%—®(êaÁð;bGª‰F¯Í„ÂÙ=ö9¢Y˜ ™Û”sžº&kÉUÇܾ3tαߟثCSo~×ks»•¥.¯¿Ævþóí&+W©¯Í¤Ì¹Ü+@òH$@$@$@$ðŸpSü+ª*AúNýt0Å?qoüZÚ~ß§,8ܼ=jòà·›•î7úÉ/[ÔØ,ßþ£\,í:ô‰]ŒŽ~ÅÏ!íßb,±Mbí*؈ô@Q;è• ¦µ¨B{Zí‚M!="@Àab¦=$àK%¿Þ"êaS/ºH‰Âƒ{LìXÑlì^ƒç3 3¢7« U ÝÛöéónÕ‹ë\rþ=Þ uìÒ¿zN‘zK›ÃC߆ÎV¹±.¦Ÿ¹9³D /E:-$@$@$@$@{D@wÐ]2Ÿïëo²«NŸËnïc§ø_ñÅêqqóú[‡¿Þõ™;Ó5f½_Ô  ‡ê¯+…¦¦‹&Î-F|Q_±‹.ŸÅnýILáO&ñé>¢çìþ¯^‘x…7XØCtì!(fû·`i€ÂÈ¿—ñš*åf„ÊKiá7E£«DcØ# v9ì# ; 7‹F1“ ”UmJíÔ˜Ü2=²oï*wÊÕMmu…®}~ì£Kùúðš³Õ»4 ®nV_™ñX­Å¿yÈ# @@àŸ#ýU3@îÕÏ#ý)?y‘ÙVÐkÕ7˶¨6ãXûÒ]é{ߟ5íµÏ~2箪¶©•v„›ï%ïÍœ«âMEKÖöw Ç@üväÔþägb§…5ý¡h÷ªÄæ‘~v†~?ž½{‘ O¥‡Ž¿^(ñ!¼Ð"ÅŽ|(š…øØ8±c¹Ð ÐÛD£½Dí½JÞýªvøÓ3»]tº×ä>g¯¿ìeoÛyïVû¶Ö#jä‰7…*†‡é±EæLŸÚ¯)gBI€H€H€Hà@#¶ HmÐ]uï`M¿¹ÝØÑwÓ(ÿší Ìs?t™ñÁ乿–‘»¤ÿMé¿ÏX¿5wãêÊ¢Á‚)9×.ÀgùâÙ_| t§Ý[ôðÆwÓ-¼®g\ñÙª'«&Í. /?®¢9‹ÍvÇU£*¨ÏÍGVƒtDI€H€H€HàÏ%PW5 :úúv;ÂoÕŒ7ÚÆÚƒ»ôŽ jëò+­š÷©9g|ïQ]‡>oN™Z}Þ'3*™ðæYÊ3ËT±£4–¢&fËÃ$‹ÆÑžŒo„ý9ƒ8ö¦J~%ñ©¡CDý/DÍBè¢ íU…­ˆ¥ÀL€€?0‹ÿ·¸á9KÏõàõúˆî í/½z£h^ÔYX[•…z–DÆH¾È Ñð_Dõ£Õ¨½UÝŸïØ¹ë›ºG“™-Ž>i­žzçŠõ«ÎV­šMˆ\é¤+çö6_ª÷ìR*j´–qì´_7”<’ À›€kg©ËtøoQéR~+¾)HµÛu]~#µtÅQË.ø~:òèÆÄgj“YïOi¢Žß`Los¨*H_+·å£™ v²«¨Û¤/~¦Øñ5?Ó—ošh²®hº ´”¨œ¨Ym+ªàP`SHàJ€€ÿ)n^ì7xH¯ }MÔ}5@7ÛÛ%ª%þF4RN4ú­hÖ^E‘ž5ñ#6i‰”;|½hHa©¼®FSÕ½”ê8ë²Áº^ã–-FŸt™®zrßJ7W»Gßì…hå¬óUì úº§~@ç¨5æuó·ŒC`…Z”)+˜-À@$@$@$@$°çÜTþ2ª|ЮÒíôA‡_]¦zvZ§¯6ÅÅkòÛö˜š¹ôŠÆÎË1‡M5vþˆÅfÞÌ[æÎü*¡ÎÙtŽ_è?§vøhߥÈ ¤›‰&sE—@_cæhùx/¤c-òe±“س*½Zl¿s¤Øê"èH(…þTtü©øyñß PéW‹ê÷¡ð˜jxPCNÏ—ô06U‰º©ÿùm#êQ8²N“øHo(¦t…׋íÁë?/; Â]ê¢XâÔ':–Ö›ëy¤ö§iïÄÏkÎ>x»êwܺìi¥ú©ZÕgz^O• ®†©g‚ŠÊL2£3emÇ4/çÁ– ðH$@$@$@.°Šd¾©Ù·A_©þ¨¹ÇtUQ³0ù`â*Ú>{KzÃÝê¥ùU<2k‡iõeÛq‡¼ÝÞl\PzÙ•ß?«.Ø^ÁL0wÛùMƒs­ž šÆLÒäb»Mù ±ã@OM`f@J‰;qÞÙ¢i,)M»Mü•x3ÚXT] …ƒ óÝ)DQHàÏ#@ÀŸÇžWÞsîïôtœ‚%z§Ø/ZŸ U•ø’¯ ØÊ ‘Ú¢Q”=öÑPì=ÅT­<·xŽÃx—8Öf½ž][5ŒŒ=úŽVÏ«!•œsv½æÈ÷¼ÄKªãq3ÊO¬¸\×lôS¤Zô0U±ìV=^oVqý’l??hêk#ÅìP[2÷@Ç€ü<’ ìÂ*œy¨F:3 ¯;©+‚Ïñ©ƒì²J£¾H¯JuT©â¹Swí0Kj¿zãŠ.jêÌ23ºMüJ=3sæäç>~ΔÉë´µõÆ¿«w 1eßÄ””húÑä2ÑTÑıPÌßûEèп‹&M•MˆúÒvS³!¦:íJ…œâ/\xÜÛ¸ŽÕÞv_¼Ølâ'Þaë'~S2ëµÐ¢^Ä¡ «mCx¹häy¨[2€~k½¢˜…C!‚½ "p8DP±„>’rB˜1à]ªSGª˜ŠW¹¾Æ ul©WNTƨÉuÊ7Ÿ~B}=øè^5Z¿J ¬y$  ø Hç¶´*›i‡®še6ã;FŸ”±ÏU=‚k›æ¦’ ™Ó§–¨taí¢S RÅëÜt÷º©ê›ïG-{èûíªï‚i_˜ØÛt]²í»Ë¿9[½¼å»ÂA»žP?&ÜíÏ–øoC1âŸÂZúÔv‰O½"šÄ}SóUó—ÃÆRÒd%œ¥ž)´},=õtÿCÑ’5ý‰­AQ, ìå\j/¿MÞ ì¼èUOäF‡\'¶Gv#÷xч¢’FEFG?²Uâ#ŠF3•š]J€Š!z'Òã8ÿAhŠt·Y¡7\â=8 ì}îÔµTÌ{ªêý5¾R§ä oÖâ„Åêܪ•zæØzúºCûÖ8¬îV³¹ÁŠ Û+_¤›7¨žýuÎejWÕ9¡ûÂ5UnÎ$oƒ×\¥ÃUì—cWgV–}©Æf ­Ë KÕw™ y“Y›±Ý¦:ƒ   øÿäØ1ú ÔÓÑ íÌÆ ·ÐLI¿­êLÙ7Ô ¶ƒŸNœzVÅ㵓Kíývöܾ\mYQvÝÜŸŽ3?.ÎZÒr~cõöó¾4õ"µbÕEË;/¼GÙQ±(QØM-M~\ÃÌÄ4XÒi7îË„ôÐY¢©Z¢I¬ÁO û ÑÄCÐVˆÇˆ|²¦Ø©+¡˜é™r›Ö•x—¨ÝÐ9L (ÚêV±m«K‚¥À>E€€}êçâÍî!ŒÀ«Úȇ€ëøkT8}oäóî ý(~Š¥L‹,“ø*¢*¢ÈLÄcæ@¸Î?úŽh¨¢¨÷ 캢×)ñ('cKrîR9Ñ.uÕ年-n< ù£ªråìC×é«;>¼zËÚߨd½¢rú –ú”:½²ä.5;ª ŽT‰,TE¹¼7BUuùXeïBý¶2^S³F­Ê8f©ÏMàÃ_¤æèà-°V­ÌÜó2¿Våeì] ³$2$@$@$@ûˆ’Áʪzæv«ëº­¡êdêýzªQ¦¾of;ò6ècÔ©:èØßh§ê‡ÔsþÛ麦0ñEzgª§Šž]œW|™ÊÞ\wçd;è>ñ§«·ôÜPJUÊ[—×vé jöŠvó_™ÙV½µªßÓ5UëwÔßtþÚjQá‰fkKu|´ƒLµÌ½(32Ýû4d\G=™©’?Ùš€¢“t:ñ§B?Mcê~ #ù>Ú…éw%Ý\E»Ñ¸öØ£¯¦B  ا à?˜}úxó$ð[Üß9f”ìðŒœ¨WCoõà°Óï3!ô¥hx(lL= Ÿ,vd9ô>èdÑ’Má1wC| Ú[4ÔºTÔC¼‡ëè—$^¯€vUõ£Ãc•¾¸j¬æsvA³Z¹S¥K/iøy“­*»Ú®šE+ugÍaå§Uî§vV­Wúã²1uDÕsÚå6Ñõ«ìІ²N6›ÊÝ:>ô¶Jg5óRÞ™ºR´þ6Ô@¥#/éÕ;³à.ë ÈË\3ÏÚÍVƒ°ºÎ:l¼q›æ«™ôÐ]6%»ÔöÌùùp,)W™î  80D°ë}®J„Òª\ÆA_Z‹«Ê”Äÿ(cÓmÐåU¥L¾ÊVð6Ô‚ÖS‡gâµ#öA˜¦FÙc±ÿ¸ßVEý³üšþxÛ¡ÿÉOù¯«]ñ±©-ÉòºLA»¢œ‚Ö*wcé‚öùÇš1ëßݱj[GUzÃåëÙ¦Ñôµ‹–åßJ½³úøå˵UÙ[ÿ±îÕU¨/ ïÞ±skUXÜM±ß;Rí¥Ìv~ÁÕ/6þ[Q?³³¿ýxßã°Ñ±N¯;õšhº5l̬L>ôd±“- h/¥Æ ßÇÐÛEÓ߉ú#   7ˆ è˜nb—|®å¨BÄSH`¿"4åHà@#P |"ôFQý,t%m}³Ø!TpÞBØè°‡Q±Øiù™Fg6ŒŽ}ädÄ÷ ¢ ‹ŒtÜG¨1âç‹:G€WñGˆêAг¡¨°ôëb+xÌU$tm¸¼R¡*\Xi±:"–Sñƒª7ªCc_W­SkžÚYêùZë¦ÊT<±r•êyêуÎ/—sPi•¨°*§EîIjKÙ]±ssjG™ÛbÇe¿¯v•i½9ë1UPö¤ÈSYSTQ™zá6áù*‘}µ>I?d—$”×9ú`eBßëÕ^-«ëužÎV~HéUº†Õùz­ÖÊ調úØ6XÊÙ Ò™{.„c PíÌØ;a»™N]|BI#!¡Š2ù*‘q0Ä•°uñi•Dºhçe"íÁǧyâ(ç?]*á®›Rpòàüºƒ#M% Ýøùû×½?³ì»AÙÿý'!¢²2§¹Ž·+ÃCy1”ïa—ú¨ÊÉd‰b$=ËžÔîQäs#ì¹¶ë×a/õì2™ôRèÐçbŠýdõAošš ¶ÛÜÁT4+”NŸoʛʳ£ïÍVkd<³ØÚ‡›mæK« ÌY~¾ %‡Ø|%-ؘx->Måìü6¾¼øUUjG—â —©²Û½Âµ»¾V¶•ßjÛxUcÛü- 6”QŸmþ|ÍSy¨¡›¯~eù•ªÜŽ™›‡lxB¥‹—nÊ^w°š\ü]q¬ðJU˜èœ¹g¥n‚ ;ûQcØ×‰š]¢>:ê~v9è ¢i´kÒÛ`?,šª@Ñ.JI›@•8ô$fØ}2!–ôJØh'¥G‰íK¯°±ò?wëï$é ÷¡†Ã΃úP ì—èØ/V>Ô¿Ià×ý¥= š }JÔ›}T4d§¹!„µhá'aß"FÅ>6*°0¦ …q~ñ¡æ8ÿ((*ÄÐd±½Ó (ÏC£È[/ñú\¤_»Ž¨BŧQ¡*80Š Ð¸QvÕ‡v3ÃsrNÊ=Úî}°½Ìôò÷X­šÛºŒ}¦È„ÜËÊŒ¶úãA—V±ñœøATîa[Agç>TöH¥²W䜖û´Õ•Ù K-°Z?˱Γìq±Î±žV·F{ÆÞ°—[®¶ådÍ - ¯´­«Ž¡ùá¿Ûr{… ÙFF¤rhjØŽDªy¯‡êY­z#´ÅjÝRßfyÏòzzãíWz鈮dï÷RÝ5¿]§½a6}~UÛÊÜ;Xgé„ÕzA°¶Ñ«k›YÛ-“õ_Uwk¥[{¶1agdÔQMl|ë˜Ûs~%HC5m›såmŽ:Öña³Ð2=\¿cË›kÏ ÎÝ’™ù ìŽÈ»23"‚¼Á»7hJ2 ¤cŸ²oÊ*ÖZgÇǃN¡gç—ýdõ³ èĥƛþÆŽîÚï­K\:×6ï†X¦#_Iµ4¶…1Á'ãÒÛëU³çÄÌËê[^ÚŒòÛø‘æÓÅÚëÍÓÐÚ˜ ¾m¤?2óÍ[Vk˜ÍóV3k‚QeÿÉô ½¯{üÎéU¶º(JßTÉ/ÒG¥†Z}ɯ•noubjVª¾MŸ‘þ4u¨ÕªÉ÷¶Þ+^Ï)¶÷U4£8«Ð^·(«¨A¡m[µ/|b×éV+Üš­Í×vGÍmö¹ &ož³¾Àê;{í˜kËiRøÉÎuöúw~ºÃ¶’ù;¼­Ö!žh›œ‘°÷´u`&\ Øwµ2c)s¨­õ3Áœ]ýVÔ¿jÁÿú…húmh.ôèk¢©÷a[¶AHÙ¶CF£Ðlè©Ð¦ÐSDÓ_C;Šú¡ÿUmk!ø 3z¹¨ê} še‡ ( Ê@$ð¯JÁ< j+ï èWD3Óê{½Ø%_°•}¼“íÁ†Ð%¢%{ Ì;„Š-üWبÈÂÀ~X4Ü6®:6þ» í€ý•¨7öi°ó¡!Q÷uïØ'@ÝŒ”«QqkÛ¸‚Æ})Ìp°c‰Çó)xðíAPñª£aW†Î‡~-#ªªsÔÕ–[ÅPŸ°eámŽöÊz!h÷E.ŽÚ{ó #¡èF{_GæF'Zû³È—‘>Vßóº…Ûø ¡ù£@×òŠBö™ô—^Ï^CzµB«­nñîõ‚FÆh¯À«gí z  òÙ&æ*_ ÒÛ¬^º!´ÜÆ—SmTÀº†ÇF~½a £ªèÀ¹’ã•ón°ço×ô­V_²M¬à7(¶ÍW[®jQ¢2¢õëåÚÌ $@$pÐvd=Ë>ï.ë’nau´u¬uQ¡úRÙ÷¾ZcפÛΞÙbêÛ6¯Ún}¶ÿß}(«+Ø 1ÿ&?xçvò#Á´pSß^¯ªµCêt;¯Ìàô]~m«‹ÌQ~ð¾î?‘~ÞÚËül‚Õ6þ[éS¬–I?“¶u›©è¯òo·Ú<µ:iêæ±dëĶº83Y?˜žî·N~m5;Ù?Ø‘Þd'«&N´v–YfÞ·ŠúÖwot´1K@)t|ñ)=¥Ð~(ùâO9{AøVD}-j>†í:¸ö‚`Юq»Ø[÷·Ä/ œA0‹ºŽ¾¹ö!¢éà·°Á¿K4vD:pšÛàŸ%šš"š†C!ýâÏF¼e„Ô¢éq¢©i°ETºŠüÃïE½é£Ç‚ êrL[(ò+\7ÌÈ„<(ÊE!Œ^@ØSóqIàß#à!»ë_ûVQýqIº£Ä{C¡Ö«Ï62z™h_h>ì•PTØ!Tô!ÜG¨é¶„ÐDz‰íÊ9å-ÂyΡnAf9dêsÓ 6êM×1WhO˜C%Ý M@ÁÑŒÛÿ ñÝa_=ŠúÏõ–ÇBúäÃý¸ŽºªÄ§Á'ú7‡øÍÐÒPçP@»Ê-ñþ$(~ÿXØhG`?!åvçWÎp•äSŸ@¿„¢Ý‹B$!ðÛžS‚"p¶U@á:²Û ‚2ç‰íöP]ÅöA|sèq¢*z•q÷Kz¬wì+qÞ-°WÃ~ö3°O‡=ö0h-(:¾¡÷ÄÖð˜{xoâE”wì«¡G@QŽn ½öõТn¤B£!b?(!z¨~ö°ñÜ%###!ò¡!¡êÂF¼¾¶+?{:ô{hYhŠÝYB.Ôuàaþª¤‘âþn~5#H€H€öˆ€F.÷žvöoŒ©™Œ¨_í¼ ›¡ î½í®ƒŽ¬™‰ô¡èȪÃ`ï5Ïž ]„ø—`£>4½a¯Ezì¹°q¾yñp€´#Ì@äƒãÀl=IÔ{ ì±°GÁF¹v?LðQoùE°×CQŸ³/‚àÿŠz4ú5í:òwJzí8ìÁ8÷i7&Ìõ«Y ¶I ÞÕχ 盞b«!Pp/ù<ŸûýL!ø%á_Šd Àn ¸žk8 C«ÆÉY¦6Îvî¹bkTŒªµØnW\;å<ô›Ð ¢*BŠÕ;ñ¨(½ù°'B«B?€^E…î¡ã¡à¡!ã¡aâÁïñné‚ë;‡…†#D‡Pþµ¢ï¯Ñ°pß÷ÕÏ9 ÐÀ°S03Aß}QÔNЗx×0Û†xWNìÊÐK¡h(i7ÒRñ¸ÏÌ´Ñ êh‰ÖígÂ(H²ã2âöDÜßE{dF§dÊæž”Á<$@$@ÿ$à:ú舻5êøÂŒ’öϬ»ý×qHuDW¯ \óÒãÐñPÔ¯n3 ñ®>úVlû‘] ¢Þ-qtA>8ôò•|n®%Òë@Ñ0¨M?Ä'¡¨oJ¦ò£^ ö+‚]"‘ þM¢Î‘à£4§#ýJ(>Ú>'~!Òo†â¹ý(lðHw»dS@ðu#ûæVä¿ùwWoA<Ú-¦¼Øê^(ê5Ø»  ÿ€ìÿÁ™<…Hàç\Ãb%úC_5U`ƒ}ž¨FÇ[ûo¢éOaÏ…^m-õÐñÕÏ!Sù¼HñhPx(ÇÍ4ÐÝ‘ÏuÌóÿ Ä?ûvØh¸èшGCo† ¿> 6žÇü»©–nïý¼äSP|IiÜ¿ýR@&èÈçnh i4dœ#ÁMÙ׸uÎs‚† >®éÞ‡ÄÃ1QÒWÌÿQ—ކSÉç\üÿ9$@$@»%àÞÏ?¯:Û¥ÿZ!î=îò»§³á€7QÀ¨«PϺÏÁ¹%gjò-5“a£Ü‡Â@¤Gz'Øp¼«{`÷‚â~KÖì£~7pt›$Êiü«EK:ÚO 3åüª°?D¾³`‹(ßÝÏÙHG=ë߆|÷!þIبï}”g\ǽÒáHpKÌ Ä£½cÜï5ñ׉*§_À® Ý u¿L Àï!àþCü=eð\ ÿŒ@iœ– = ŠŠXõ[CKv|ÝŽ©x²F…k?Å'ޝòçBw@+A¯†bäB¯†‡ë0ÛOúeBÉžµa¢ÂvÜ‚ž*êÖæ¹Íõ‰w{(¸‘7@ÁQa7Ó“€ûTŽ›k¸=ò:"?>%å¸óª!½<Ô5,ZÂnÅƒ]ú[zW^ ù)$@$@¿€k¯FPŒ³­Tבþ &@Q¿•l W€ømÐ|Q3v_è×ÐH¿öpèzÄ»ú®;ì‘~ì›`ß û)بŸLÄc@À¸rª ¾òŸø³|?ÀF½k°´ÀwñÒQ¹™ f9âãP´Ìw°ÁÇüMW±ê_·'9ñã oá¼ûa/„¢½¢6ÁÞ¥ ü„ÿ×à%H€~™ÀND;{ôQQã:”®aÒ騘õ0Øm¡ˆê±°Ñ0ÑhXèoÿwä{ö%°‡Â~ö4(z ÒŸEü+Ð÷?6*|íî6â]ùwÀþç¡a“Ù±9ˆÂÈŒB~=ùþ-„ž(ª1¢|Ò)ÐQࢯD¼ë軺ëÐ;u÷ëKþ’û‡ý«Ÿïsç;Ç‚SËSH€H€þMŽmÉ̬_+FKBɈ½{»tןèÚî^i‡óŸC>Wo¸rF õ ýfŒ„—ÿìÉÐ&ˆÇȽ[ hj!ý>¤_õ•ÛÝ^9ûäÃõÕE°Ýˆ=lå:ì¸?ã®ûòW€öU¸®¹ñO#þM胈ÇõÕ_a/ùY¾Q°ÃvŽt÷;"šB$ðgÀ òϸ4¯I$ð; ”Æù˜r§b°Ï…Ö…6Õm`cDA¹ô‘þ.ÒëAOFüI°Ÿ„í u†Ž®ûä ÛÈ åë¡°/ƒ¢a ‚}-Ô5ÌÎ[wBü_ e •¡î½†[ÉWœCÀ9Ê"¿³]ÃÎås÷…|úkâÎw×u .ÿkç1žH€Hà— ¸÷ù.I6"ìßÜÀÕspÞ7PŒˆ—86 ÞuX ½ôh>én“[7³À¼ŽôUÐM¢õ£Z„ø<Ļ޵sè#¿‚ÃÛ¼„üÝ¡®¼G`D9ßÁn {&ì¡Ðňwí—Ò'"ý)Ø  Î12 ö·PÌ´P›a³ƒØ› ¸ëÞ|¼7 ßGÀ9 œ&Qœs¸†:æ%k×C¡ƒä×®C|êÏn§:ìÿª%{TC¼!A‡]_ƒx×ávéî>k!}ˆ¨>¶ëP»ëºÈÏ;èÎvùížÿ:”ç îúh0jwß®‰ì¿)î:y3 ì÷¾ß£Ì6Ú¹f+NØõ ®£ßãgöϯósÛµŸºrw œ„¨¹öH訫à`6“?êêW?!ñÆuÌ#"ù#Â9&^AþÉHŸuõ“ë°Ï@ülhêÊwå"šB$°?p/®ýáYø $@ÿ]®ÁSź÷…ó𻆄s$tB¾²ÐJPWÌ’)ô®#Þ - èˆ»ÍUOÄÃqPr¾k@¹r÷TÝ}»‘§.Þ•óŸ–ïΧ’ ì\ýåÔÝ•«ÏÖ#ÂÙ.}OÕ•ëÔÕ{¥ã:ö®ƒ½ »™E°Ýy<çXpr7“ÁuÜÝy.¿s ¸üN]¹T ˜€{QÀøè$@27âïÔÝŽë»™³]úïUWžÓß[Ï' Ø7 ¸ÿí»wóŸ—ïê57ïìÿöõY ÀOàÿE#oá¼ÁIEND®B`‚ic09>¥‰PNG  IHDR¤è¹sRGB®ÎéDeXIfMM*‡i    øµ…@IDATxì|EûÇŸÙ»K.Hè½#Ez‘^DiJG@zD@šA¥‰€ô" Š ¢ô&½w½¥’žÜÝÎÿ™½»÷õï«‚JIùM>¹çvoËÌwön÷)ó  €€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€üñŸá#HUÎO»Õ¿‘H¥e0ð|Þ4ËÜ[ñZj]çó¹6Rëª §Í¢”(¨m+µ·ÄMáÐ ˆ×i’˜¢ ~b+½'‰ê¤Ñ+Ô]DP4%P2Å‹&©»¹œÖS‹Õ>ïScÊGe)‰›¯“ã¡ÌÆRþÄÒƒ<© ×ñ Ñ€æòòÛ|;K %[ý›õ‹­ês—eA*C?µÏ©0/禡$ÏSøõ¯‹f|¬Ó–‘–r}Ç‹^Ô’—§‰Í|"³ÑzcǾxòvÞ+ åé‘è#¬¼¤Ö'ÿî°¼Aaü;$d)¹„ÞæåS²šñ;gúíû³ó9¿é&ÚË$ÒaúšåD½›¸Çõ^E³ù7›(…Ûó¨E}ïýÈË1JÎÔ'K/ÇÏzUYK^¦@ãÏÂýM÷ù<“©? Ô{ÉAr½¸Iíe’´ëô.²ƒ¼®;äIý”~B§/pŒ³å²irzŒH:w]†ÆE§üj!wš6k1Úa -—?dz÷=jå°€<}ÎÛÕÓ?/Î †„íL,;ò2?KoÖëÐ1Å”è±JÓ-MÝLsµ sZcш"äò¬¥»qjçÚY©/JóàÍ®‹ÚJÁ¤[–{†Ê¯‰®ÝÀñð³a‹¿C@}¯ˆr²ñŽ YŽ–RÚJÚ-†"ê¡ÌPFy¸bëÜÎÏP¥“eU¡úû˜mŸ{Ùù1«VÌR}?%åk–(—=Lde™×1Êø~H‘ãÑÃ[9¯ãœò*¿Ov´¹Xâö©š$sûœí´öI6‘¨oN~hü^äµ]7¾·º|‘תâë}µ x2í0L„¿ÚQNÞ'Á±Ì¨Ùz„‡màl··ñ{ªË7ùןëmËÆ&Y¢Br»“#ÿF?jQ¦å’#éGúÁ@ýh­u|ÌëÔŸ?ÿ³9Pvåß;å³d£ƒNEuO¾[Øù:ðã3Ùé‚£ó²SMÛ^6.Ùèœý+:Èæ“sŽÑT‰âÈ'ù>n{á‘ú¨°€@F"àü™ÍH-F[A ˆ8”¼uL}~úÈ­¿Cói ö™eŒ¬âÙÞô¹©œ°xï’eG¹Ç'„îÉ-t!¤ˆØª½!väH¤Ïi9 ù˜gfуàoY…ý~ ÉI(+gî@¯S[ê´žýå/RPƒUi5¶óãM„¼á[ЧH:cù€„4ò4ûòƒ•$‹97?Àf¦s ¢@‘‹—Õƒ»Ã¤Ôöp›ÚÒžVU¼Ø¿­¤•ò¥MUÜ¿\Î`çºß¾WŸÿ~÷çîõνþ»¯úœUN©’ÝÛþv›¿óžÏ!ÔyÔqþè|çXÙÖ¨ïC¶yèÇ¿­ïC7þë ä¿e§ÿfÇ¿>å#}ú¯9ý¦NtBlôl<Žëk.Ü¿5ÿ²Æ÷áßÖÉ}íñqþí÷á±|?ÃäqqúÍ!ÿ÷­j¿bÈÿÿªþlH4ê«úÖÍôÏæ\ãî3÷vnéªÇÿÛß½­[òyþŸà6Ï$³9X}®;Žûjz_6<Øeн [tÍ~…?·Q‚ý&Çñþö³Ÿ`"Û<6Øä&-©–ÍSŠ èndúŠ&ÑçQƒ8ä"-‹XÀÑ+¹?ìkN_ˆn÷Þ¥|çx¿»Ü*¿•'îÌ—S¤]ÚnÛ´ÌZ’èý`<5—ùÈ”ø}J¤m­MøTìý(Eï•ÅËã¹±œð  > ¸ÒÒgëÐ*Hç¢&8¦Œbïˆ)#h¦éSeí}qÕwоQ6¤c¡â èFS ,yE~q @WAŸÑìo³:ο‹áÇPöÜ×(?xTÌ1’øâšÿ·¬tg!«õeö’ÅóUÓái2,0D+¦y‰ ù+ˆ%¶”>Å>rüËtÇé#ªVt:+ðq”¹`]Vãys|lÒ ñžÃìs0¿jx'$¿ÿ­ò­Þ»,ÜÝjY½ÿýçîí A@@ž=÷“ýo¥û½ªû^¯Œj½;JA„|‹ÍÑ”œø"GDЃØjü<¡Qì­*²-Í¡Ðóõ9·Í9Š?^ndƒï)ÉO%yôí'?u¼¦“—ïœMr¤ôq ŒûÑ’hþQ[$gëì¹j¼ƒ jüö'!ÕT ŒBàþÛI'F´b½Ú“o±ÅLï™’µ."4P3m3 ³ †) ‹¤Êý©™X+T^Âc _ Ä2/r& Åe¢ìlÉög+?Û[ÍEØÞïVéßm·Ò®óz÷ûŒíx4n@¸b T‚Éÿ>I¨(gÊI•ãÂÂù Âø/61š´Þ§áoÓjŽ8{Öƒ~"·Š–Ë9ÃøCôLúyèXMÇç)Ûåï2õ [›’tJÿ&ë¾)!ëïÈ›=Z±€Àã!àþº?ž£á( HàÞ« ¿Ë©‘ýýô–VžÒºÊ\#[ íVDüZþC±NÌÃk½FïRGªôÂnñW†²𤂢 åxŽo»V2›Öj¼RñÝ™ÐU&s§5_%³C'O@ÍáÔ"Ô;õ\â4è,=xXA§ë½‘Б.ÊCtúÎVŽ+ØL×ޤ^r¸\´çýNsXoÏ Ç«ö)ú„ ‰Ž/MË,ý⇘&Ë›Ž´6k¢eû¸÷ž|3pȈ`Ȉ½Ž6?1·ÏǶÆS@ÙŸOé©/6ðnéG–V!ƒ´á¦…Zdå í#á-&¼ø5OØÖ,µrÞå☧g _ï2”Â)Š4êÁ1N½Rï>}¨÷O¬×p`ÇJ@ðÓŒaàç·¶¡–“e2Ùýx âMJ ëÏóeì`ÃÀ/´˜úЪŸËêÕõã²ÀÖj¶y)¹s.Õ >ïåmJÚurCXèõD¥›‡NYòXkŠƒ@†#àþJf¸†£Á ðo„f‰(4h4OM~"ü­˜jÔ>÷•ÜÏg=äWÛc…G.SöRu´h­¹ðl::ÐgbéKë8ko9ÊUh3ådõöç1w‚ëUç”ÆnõüÓ!Ø@@@ íÐ\†·y@gÃ@ŠãE:Æó„ßYD+躷k´<'dÐú.ŽÆŽåzξa;ï¼ý`äÝ~>…ý>µvÒwç™´ÿ³ýi§Ù¨)¤0¤†^@R=‹ïÌ¡hWï\ÊýÈYfgÅÁ¿f«dyÙRÅôQæâ®8$·zÀÙtGQëÊ)TŠQÁÌŸrLœ Þ¿kxôÙò¡è§úÞFA@@ž:¥•(À9ÀïÕr´Œ§¨¤ƒ<]â ÚvÖL}åÚ²>Iï/ûËQß³µOiè8êSí%Q.åÕ,ÑVë„!O½æ8!¤)0¤©îBeŸ¢w¼3•(±Zâ[-“oд̽_(cjlª*&´è*âE²ØÚü#z“RáR«(@ø·ç@# Ÿ¡è»BøU…¼ÿ´º çHOܹ4¡Òò,ÒNr,áHk·‹Ñ—<¤òÖ¦†ú!}§ô\šl˹G®l¾·s·Ox³ÿÚvÌÛL4£ù¨ÚÇ?HO`Ðøç`øçì°g:"p»e좡ßÙ&ØN;‚Ì ½}xö):ÛœÇ\D‹j“….ÓNj×&3gÝ/L–£E"?m4Ù¥ÃPðÕˆ}(úéèŠ@S@@@R-“k?‡™iƒÜJÇ)2jG`¶¡[êÃô$Ypqù„vñãl¡;ëç*æß1皸߼öSñ]‰^_óâ¹o¦§ÚÖ¡b ðD ÀðDñâà©•ÀåE÷c½JÙ9¼wüX­R¾× ­²©h5j¢S!ZC¿ˆÈÖ}ɇ“ôUÊW•,|£!qˆ-Ï*ï¾òêCáO­‹z€€d,fW„'QÜôtJ&<§žÔކÿœÏ±Áñ­>jÎçI¯$~k_°k“iùœ¶8quöÂÞ 'žÊX¨ÐZ€×@† peP½‡èÔúÃ¥ÂC¨såðZÙÞÉ3ÉRÒã¨Éܱ‘x]LóÞÈGÅ*SXÍrËú¾øÞHÒgψÐHHÔ¥åè<$Ó‹å~N/˜™HM¨-]?ÛÑÂ~[oõå{‘{¢6Æç>$­_yõ°„ÛâòÔõùl\ú@€V€ÀŸ€àÏÈ`}š&0½þü­‹õßòfÖ-ˆn¾óÒ‰öþË|®ûž÷œ÷jUQUþÈþVêGc¨Hùù"²™Fñ~õ‡    ^hä4˜ù)OÒ·tCž¦“·ÛJ •’ƒ–v³wLùJ7Í+y÷Ä­q±+.• ,—yš×T=÷ÎLõ>­^   à$®„ôDÀûî[ ‹‡¾D w¹ëa6娗û×€#•KZš›ËhFߊ;Ô÷¥ŸØ*œ•¼¼'ñmÀF*iŸ ìÇþôt- -    ð{NÝGãÌ&þ(‰’ù!0/-’oз§Jɉú^IÓß9ò RÒ;«BóæÍ\"ßĘV‚ËÀÖ<¯“³8#EÉx‚üýñ± ©ž ©¾‹PÁ¿ `’F!‡úa‚®³Ú4Ëü‘öâH³øšfÒ+Õ¿¥ áKVóH²ñ´1Îä}¿;A@@@@€ hÆdƒDÞÊ­Dûhž\CçB8zó¬‰ÓçÅM‰‰Kê³hUÞA=²ŽþN¹ŸFì4² (|).†*¶R-Rm× b¿! ‚´Œ¢þsî“ãÚìè•çe-â÷­_Ï_{ŒŸŠuÂÞïWÊ)ªQP¶O9yŸÃPø1=Ÿ$€€€€Àß!`ŽåYäŠK¶Ê’ò–|ûûIö̶HýÝñÖí~i~ùµãQ­Ž¼l{y W.çÁê,0üÖØö©€੡Ɖþ#ÄÿK/r|ÕwõÍ'è݆Å_-Séër¾æ—-&Ó¢÷ñT/W¨çK³ÈOø“¿e9ØÓŸÛ€»€€€€ü! ´&O ­ÓQÎ0“N±9B‰òÞ¸Äð*aµV|›¹Øë9Êe›˜\ʈ x\Çzð‡ÇÄJxF`xFàqÚ¿$Uyú¡°³­oÖ;xÂsjÖ!E}J4ŸiÊg*«c¢¶¢U-~„§wq°Âoå1ýê@@@@ž¥=ypd€ŠOÝ'ÏGô&9V•ƒfM‰Û[Åö”wòØ3½[ô˰†ÊУ2ù»*ï’pU¹@@<0<î8ëÿ'àñ §” ¡»(<%{r=ÇæÀ¼ž&ëû–ƒF‹ÙZ¼ÈÝ?+ÕU)¦WyL ¦ëûÿ±    𠘄ó6^&Ù>”jJ»ì°¾Nò¹ähǧ£¿ËnöÉóɦӫ\5rçpKžbWáTÿ%ÀYàÝÓ' ¹NYLyüÙHgnW‰›ºáA~ë$/›åæûóE>Ñ^Ä´¹I™EnÊéñ6Ù¥ ŠÿÓï(œ@@@@àO¨Ù”Veæ&:̳  -‡¿°O¶½åød˜Çâ3 ØjR¤W›Íä4Àis¸ŽvûOŽŠÕ ðDÀðD°â !àçú\M¸¢JÂó ý†üX.Ñ#‡çlSžO?w…óê,åùYuÎÂz‚“úéFR?çöxTF€Õz¥]y🊠)ߦ=×ú89¦ëïþéêàË1Ñ+¿®Sa@1mBKÛ5vµa“K"ÍuªìÔ´[)Ònߥ…š»1/jU|Ó#¦–MN¾òcá¢mXf[V›ÚNêGsÅ×T ŸÎ ´rµ¯ÈÇŽ©×ênÖÚwÞÐóç µûÞoyÁÔõÓj!SÅÑ”,“0_:¿Ð<G' "ÔЀKòÝ´•ÔÔÉ_ìˆZ~*qøûù ŸÈžéó&â\†€¶®¯xô`Kø/þËïþ>w’’7»ë[³BY1z\Ê'5jUo¹Ó²Òã˜iÿônb¥ØD/e_kŒñwüý`È<„súÀ£òE$sÄ;nëoL¾tsrÌ™¾|þÇ‚[çt‹p±¨ê’_g6häc#ÀcC™¡”ÕÕÚÏ\ò£›ýãªZY³u“ÕÇÒfN9:"~¡öù#(^&»Æøg(@h,€€€€ü#žÂ9kÀ^¹®%:šÛ½tŸ Ú·¯ø­S+¿\¡ŽÏŠF)Þ®cßpIþ쌷 ¯ÏÿM‹ÝŠÿ<ç˜$jz}äƒ=ou¨äéÝß'›eüÜÒÂW+&6”>À¡þÉ®¬þãÿoˆc_ŒIÀCxñ‚D?Ê™t2ª²-‹í€£Ö_fMœ.æ\ôáæaóvUwìpÁq;æÖdLXhõ£€àQIeìíÜŠÿw.Åÿ…ËçÂ'ð,0+`m¦kž+ç/ý´%âxí=œØ/‘â–Dr¿Œ}É õ    …€7ùò‚Dåd9šwkmÒ¤¼öê=2çò÷]2å»u\çØï’îÜ\¡åÜ8Hº#@ºëÒÇÚ ×ÑV¹äÈ“±7ôþ%s™BÁ7½«N ÐŽ›Âµ7Ú"ÊÄÿ{8ÜßÕÿ±ö    DÊÀÉåFù‘~|nlPL¶”ë]®æ¯tqZ££ã]I·¸P¹“†ü–¦ü- ¼ÿ=W]+bW¾·.ªÅUkpÖÄ,q^Sý¤­Ó„ØÑjyË`Y‹¦qf;«þdÌiúû£`@@@@@àßH&Ãy+Š´§Lwß߯-úø÷z÷kÙ=È©{³Ë°Ûu²æ.öïNŽ½Ó D¤—ž|¼íp…‰ï\‡-uk[\ø ‚íêy.ò\m œ¡ÓÑêeú”yZ?Ûã=9Ž     ð'L ´¸;tƒâõ{){ˆž÷óØ#¶¹ã3"ºñôškW H8éÚû”K~ð'GÃê F€ Öáin>×çç]cý=¯Ô×Ušå7?à„ÇÙ%Wµçµjâ‹¢S‚ŒaŸ? €€€€€À³ `VcHÀt9‹®Å5Hù>e˜£äàA­5ɳ¶Ðü{ü·}MÎvVMº#¾yUÅ9SRO_<Ëš¸“ü­vUbî±Í¡Ïw¿›í\öí9êøm™ßP{×4M¼Þx<%qv¥ø«$Èïÿ,û ç"áM<°[žÕ/ÑÛWrÄ^ŠÙ’üf‡~Údîúyù}#CD)'*™Ý…ì' Ë˜ cöûï[=ĹB¼;<îƒüÕgZ(xlHŒo¶^hMµ.¢ç‹sy|ÿd:Ì[ VûuCþþXxÚ’d¢:¥(¡ù‘oÛ¾Ûýúx´9ýÈ¥Ëõ»wîÚÝY{nÅßã먫šÈ à‘Q"2JOÿq;_s®÷œR~tµ_Ô´þ‹›}vø®ð¶ *G©{QœŒÃXÿ?†ˆµ     ðÌ ˜9@ãZœ¦Ët×þ‹m›mº£Ç‡e§¾ÿñ÷¿~÷ñéIޝí›hÿØYOYÛUßa. ‘AÀA:úwÍÌç\×RŽ=v<´{÷Šy–f?“Ãß÷“e‰Z+ÓQý…«)#ɰ)þîXH}ü„?yrµòH>»“#&ÓƒšÉÑ3¼eÓ“~iאּØá”2ÀÕäpHïCÒ{ÿÿöù¸'»äêA×Fl¨¼ÐC ~#¤Ÿw–î3´qÚwbnµÁ¬ôO&5€…íˆ*ä@@@@@ õHâÈ]Uî‰ Ê”ý¶om¿H5CÞÚUóø®7¶ŸÚ_c^™Kjßs)üÂeùŒ}ˆ®º$D:%€€tÚ±Ò¬6Îõ"É)e·‹]ÂÚõ-So@@Ž€žw—–:_]³¯¥ü—ò'GÁjÔMÀÃpåm _éºmyÒöäŽÃ# ½þë‹Í¾1µñþ{Þêâx×Ùé~ò‘º…Úý[0ü[‚icÿü®j^vJQç‡ù;´ÖûƒÖ—÷­t {æ…‡M¯š;iŸ¼R›")Œ¢ÓF£PK‡ÈD™‰ã€åJ½§lxiGDæ°˜„j­×—hškÌ—y<çÜ[|ë”Ò=Ñ÷¦‡§Q0¤ÑŽû›ÕžàÜ^qÉè«1Ñýúw=ã½ÌûsKütÚR*mÄ^ÿdÎø     h<¤Wi}§ôfõÞiëèxsnÒâØ9¹Of´gÄóƒ¦m³%Ä;›*‹ºšü‚K†»$D:!@:éÈ?iFçzá¶äÝ<ôå…Ø7òËU-Ï)ÿOWÔJšŠ|Ï¿Aá2Éþþ„"Vƒ€€€€@Z'àËÉ=¸ÅdNšU:ú`Ô ¤O;•(ÒoVÏ‚]Í«â”òŒkù#—„H'0täïšáíZã’…*œ«âÈa1ÿr"ûË>ÖöûµDmº¸W¦"EË.¿Éþ~G‹     ^ÄÉ£)WEVjx¯ÿZ»½^[éÿÃŒfsöE·ŽiÒomˆ\Îæ wn€¼®æ_K/2z;`HŸWÀ+Îf‰Ý®æM˜zE“Æ•Kt÷˜ãq]»Ò®£øYT’-µâ2\Þ§ÞJÍŠ     ¾ $R±h¦JboíiêV¹šãÛFh­jö²þÎÆË‹.ë]²“Kº† ¸– Ò Hs]ö—Îïúô¼Sj­ÚEt¹ý\}R‘éáuN}¤{lðÌm*<øe²’?yQ/öú;Hþå1ñ!€€€€€@z#"²“/‘c…}žþöŽ;jíŸx·h»:M+ÖÙ¿*ü®Ë=(]I¥k1rÒ ÓÒWW»“ý5q5Ë|49´|×åçd’£’¯ü¦ö¶\lÍ[‰Çü‡aÌúê|´˜€ó7=·È©,ûT†Jcý²R0OD”…³› hl™…²Û W P4EC‚"(ÂÆó‚è¼}ÏbcyŽ.ò¬È^BvÜ~`Wž­¯Þ¨Ñ®Vë/þ®ï½ŽÎZÈ,.yÒU«žNíp–ÇM€ÇMôÙÏíùoå<½xãÀÕó3;/-=3O…|ïùß[3A„iBÜ+°‚îË{„‘;Ϧ—pÖŒC@ºÖ°ÏtâÍÞw‹Å|Cq_H_Rv^¾.ÎS>–+Är¥ØÛæØ~¦öDÉ ’IÎÍ‘\5åmÉ vÒª¤2Ž(2)r»£-;äËDs°â»,ÖKg³_lÉØz0Ëšq‹d¢¸q‘:ò$LÐ?çã~jï¤nÛv‡½,±o¿gï,7³Ñµò׳Øݳߟïàíô°V#æFdvçý‡&lׇ¥ø¦”A¬À/¶ï$6ØÚ£%§æ±_´k4ŒoÍYôìò>EzÞ¸¡¢"ýC”—òõÍË–~®—ÈGŒÏ]óË;tKÍÌñסW醱J— OÿvÚ¦’†Š*¢</ óYó.Áæ‚æ(Á†sGsMZÊýF©‚SY[YËŠrlÈ´Ü´”(kù,íLÜŽà»Y˜ªåгG›÷åü:׫f®_žõ¹>2·! ù0dº™Íš¾ë}šjl¨ðó^Í1¤ ÝÕㆾU lÈ) ÒU®o}Ù˜kNrÇ=¨Ç €€ü="??°ÁöŠÍS?¸ñ­ÕÏ-ŸqîÞ}ÞÝýÀ–_£ØD¯ŠÜå’ì0Ê. ‘FÀF:êOªéöü¿æü\Ø7ß¹¿•5ÿ®ç_ª2cŸ)Â\Yt-ÓFÞ`χࢀü *4Ÿ‹è%z¡öWÅ‘—ÛŠ¦¬Z“<-O(u|d|s½QԇхtVh¯-¹>ÉÖ™èü¼ ÅmMY_HéBteúÕµ6Þ/lmØ{Ž_x¿Ïõ‰D‰}·ËÅ|ía{ƒUY‹ Ä >-çÐúì¼<‡ƒÿƒyy˜x[­m© §ñ$ªC5yHñë là#ª!ª“'ž—U}5Ïï“ ©¿Ï9Üþ}r?%ñyvÓ^CñÞF;•@®f3GÐL9Ûàòà{ôå]þ¼©lª<ûÚ1íô@ÖZÖ`QŠ}‡÷ ¥èg™ô“‰¯ò®Èû‰e.Qáé…f[ª ,XÄÒŒ—³üÀ£†e=lâH߉¾EÄQ6@ô45cØ@ð©ü‚öñy|ØLr…eGê¦ÎK1<í©þ¹ð¡Q@@@ Íà8?~Žv=ŽfE'Ü¿rïå„Ñí;•.÷—y‰?¶rµk¥Sê#h6Í‘.©]ÀÚ{èë—ϹZ¨4_\Ä:§ÔZ]˜rïVÏÝ782}í™2m,$~‡J[¾¤$™hxòœâ@à·\cñ¶Hü*'Jpú<íEsåéNÙ—-Ù³½ÿÁûú ¢Ë?]ùÅÆ!ëÇjŸžÌ)rN|uªkJ?^ÿÜ•A¶Ìl¨½Íñ1+ø“â=${´í{'å,>^°°²/žÄOôƒÈÃršøD àò“Œ!¯ˆÆj ^ð`÷y™ÕsÎ=@ãåÇœn8:b›Ø !rìÉ2EžçåËâ¤âãËë¶ö:Q€ÕŒV˜ Ýòô3$*Ñ»x¬‡QéQÏÝödî%.^Ñ#'rf™aÚÍû5ö¾¤ ô!8þ³ÜC'y¹.52"Âe¸ñûø¤ &|*HõTR`u‡öaˆ•Ÿj'ouœ[XúýkÃßÝÕsÀkóoÍ)ÑD[=¶ßHÜI´oÚ¦IíØã¿æN#Ç<W¢¦ÿÀûg>†'¿†¨@Ïñò<²œCû¡ø¥±‹ÈA°ŠS"Ʊ/Ø[¡ cåy wÍçybEÊZ-Ë|“NT>¡ÜO¾+ÖÎQóem-Ÿ£ÜHOŽÞ—µ©‰=!¦;¦ƒY=`Sh³úùôjj]ʹví&sfsmbÉFò*®eEÒ%—‡_¼'F)_Û¡ýÀ‰ðÈþ«#”眧›…oDØýÙA´Ç–ÄžÞía;%²Fwjö™‹)v6´Ù§«ïGEé¯ 5E%*Ír–˜®¦ããp}«1ÎI.!fàF¹ ëåjZTþ½¼GgY~Ï>~öø{z…j|=å{>oksE¢ZYj¼àu•¨Þø:_x±A¨p…BA–Ö,Ö+ÊP¤7Лs4O_HÔÐJàI1t _`h:€¤™D Â(ïèW䈘iw–ß~%ÎÒ~F¹‘.òýQÝñ¸èN)ùΨŠä;«QØ„Ž’ À{åë”ǹJÍÀ­ŠÖÉ)E®¯]÷x³g›¤à°ºÞSçö¢ b«èlM 8K)έð iž€{Ú½iâ3å‰×¢µPjÀcök&w!<üþe_{h7›~®œØ’=üöåJØÏ‘ká×oÚ9äÛÞ×6I¶åýöh›+vâ²8£†°²ŸÕqƒ¢Ÿæ/‘Õ÷P‚þÕdÅ]öæ¡üØ¢¿-ǨœÚ—'P‰/-ë[¦›DÕª ±ú½Üè²w¢2_”*éñ‘_n¿MÚÞï+ý•dã 2Q(× Õ=Ø@@àP“+mÑÄ:ßòǵµíšZº\«¯/l0âXôÜè“WØÊ;kçpEȯ\µÝøŒjÓ>„ ”J>嬇à”¦!Ú½r¢@So9ëôÒ% ëN_ëuÙû;³w§*Ï’²ÃA¡I%]‡jü#n…œøP…žiaÚUªÇcñ³'½ÊsÕÓñ'ô”ED?ôÜ´,C»w›ö¬HbÏþ=ßû?8ÂùòÿF.§ƒ¬èÏä,û<Ö_tà‰óü¸&£ÿº#Ãî¤|¸È#ò˜2¨Êã<'Á–9xÈ{<A„ÿhÍBTîNÙá<”àÕ¤&?û|MTÕ³JÏO‰2}PHã}Šþ¥‘\0Dææt…œVÙihà‡*܃3ìÅ…†ƒ€@Ú! Šˆâ*âÒ^Òö^ýèöM×_ Íß2²[@›–›|nð'ªè.…_oê\¦]2Á%!R <|¤’Žø“j¨a¨ª°*£ŠÆ¶7C_ÙbÃOM›nñ´:…rÿþ®ÉÛ\O´-ü+…rèÿçVx4CÀΓ°ñÕ-:Šöj<-I»®þäRÉ/ËìD'ûŸ^–ÂríØuñ •‰¶MØ10±6Q„)bc6ïwEì5’ó55Œ1ûÏ‹ç9} ç§qæH3PÑÔMÀ­°»“fáÉ!Cù‘§Ÿ>XæY“rùœÐƱA ÆóÇ=·5ÏÒt»Ï¢ê¦ª}<9"% ¦¨Æ*½©Þ–xY6”/óü|ú;µ N “2fË‘ú 99îîm¯[õã³vZR>WÁ_…¯ëç¤#¿tJ}kYÝáT¹âxM-`H-=ñÇõxɹZ”qJÍ  ­?Z!Ô§KÖgÓ²Ïõ ³T\ר½WiVþ(O ¤jnO|1*BìA›µï¨*ëëUì-hÕpfoJ5¢ïÿQ|qVø-;6$¾Lî>]/È-»(NŒÑ Š|vµ²]Zùj3zäK2ÏùÁ†yBžä ìˆöÒ>cKPC:h˜xÛØ>åHW9ÜýèŠ<‘5e=à ÐD]î%òoÆ—‰j®¹Ä‹û¥m¦Vó}=w¤ä-F?uC™÷˲µÚžnÊ›†iA3Ì,¼@@žQZ<¯îï)R:;í÷^qQ•³«Z-Vµýíïò“‚*Ž^N©+×*ü„g”D—„xÆÌÏøü8ýv­îé’í\2tp¿wƒ*ŒÈ2γŒg!Ó°Ê£x\s¸Ê>ÍÅd(šñ8íÚž1›+´¿OËÇ  ¶Kû‘سÙ–7Ä%ÊÍò±‘xȇøLL2z<˜‚Ó„¡Àmèr)ìbØÎ&2m3ý$Z2¯ÑqªŸ×çØP<á Ñ!yxg2_߯æiè]š‡ ÜjºÒ{:Qî.¹ZšÙ0 ;±ù%†ež_€û‘¯   Ï„€¼Oò-~~xË|Jä+W¹JõÙE®9+s·†S v]¨Â3+Å=M ‘×¹ ¯Ï”ûâPR!wè)gÝLKœRë²ãÝ£Ž¶#ë,.l)6>°Å×ÃÅ{Ú§bM¦tŸ§±BŠTØ•¬JnÈGøžþ/ÄDåifÏqov(בUɉz-¹ÛžèÀæƒE’9uLrÝ”¡JQÒîˆó†Â_OÔVÓΤ™1ü®vË•<ß<eNY@M'r(þy–yeaÉ·Gb?+èçüÞÒek²SÍ?Ÿgnîæ[¬ø‰ÜcLl?ϳ:×·fVür•ÊYÕ¼œç¡/<‰g '¿¾-Å*Vè{.WнÇ(W+Ö–K–-‚FÓ,ÓpË·ÜE¼Äžwú’懽r)»û5þ³±¼ÊµSAëWyYI¿ª»AV»M,óñŸ’yY7óñÜ9:R;#™âiÞŸíúŽ GšÇƒþö‰r  6%ßRýÜ2e ›6(á½ë~7¼½Þ™èÖÙÛ_Ø[]ßqóK{=ŽüØrc¬ƒ ×n²?Gt»þ;ŽõlP(³]/ÀƒÝ‰žLxjÇ’'DQCcyG\¥\,§²CµÓÿTýÝ׿M•Å­ÀßçA¶cÑ?¦c|Ý›´(ªCT,_Ñk?¢7fµò-ITwwòbïÕg…èÏÛë…Œé÷Ë_!&£—ReSQ)tHÀSX;Ïv¹ž®É·"—„ßNøn£’ksõ\Pcê9g‹õÁNéà;š*z?§¤\âPL(©Àg•´/œÒÔÚ%ÃO—¸e~³ÐàÅA“3o·~;î&OMUrŠœ<Î7ÙÓ›úÚ‚e6V+%+dC9´[yú×iK{úï,»ÛÙáÃþÈ5¯Äw"Zã¹¶w<Û‡ï?wÿ¼^–·Û¨­ä™Ó9t\LáQeÊÎjQ*,îÐõžÇ@IDATîDV£¹f¨€€À3' ª‰Z"7ß¿g'ܵ­\Ýv°gÏiÛôι¶öªf¯ÇtsVÐÁOJªè|Ç2J—ä;ʳ$ðdŸe‹Òö¹½\Õç`hU4öªbî×bG›…Eüå§Á³>¨]yÖ(ïæÞÙÌÕ_« wËíFh¨sC¼‚ÀÓ!àö´š õŠ´·´nTŠõ÷0{f÷M{^Ûw?éтՋ>Ž[HtT;þN {¸-Ýék¾²k½¨ WÕÊêWÈ}¼§Sû‡ŸÅ²?LŽ0ÆàŸ`Eÿ"W“³¾«Pv¯^ Z ¢œí³÷2Õä1ÜõŸ+`ù’¨Ô½’K=º•.VêGÞ.WœãM3ÙƒÛÂÏ_Ážú6ær¬Â“¼%£è2K‹ôQq²›ìmLßù«øÑ¼|†C㓹šOJ8'³…«ŸE0 Tƒé-#Àtñ™ê€v+Å]«,ž#ö€;ê—h#=(ð®šU8lL˜£/ÑÙJçÚî[wüD FŽ‹“³RØÐt}ÃõŸíØþÑ)v›lÅ;²¡æ6ï}mOܧ†l¢>¯J^˜¯;W„€,$‹†Ÿarš"’ïXÞ#f6 u<Ü®ŽÏP¢&m_ÎçÍבoMŸãâ=ngnY”¶³¼-o¦w¤Á“éE@@ ƒÅØÀZŠýyûM½Ë…úŽ|÷ö•9M/õŒè0þ§)WF9ñ8TÌ!}SÊŸÒéz ñ,Àð,¨ÿù9ùOÑÌ)5V%T1¿;ýÍùýë-Èûuó­{.ðýf_K3mk±NtFž2’ÿ97Ä+BÍ2ö&îeØàÁ×Í2Z¨"DDœˆ6rÔãœÎ±NdÙF4UI%Y¶&oFžZ"Ü×e(_¾Ž²ñ,`]c#ø«!Õ7[y¹[–7Ûú½Å‘%ýóeîÈÕß$ÒnG?ÁC&˜‘t3c_Lh=€€Àc'Ìqw|ß”³ôá²KÌ;›ß]»ýøZóËn^qo ›ªUqðÙ<¨Q¹È¤Lû(Ï’ Ï’þÿž»±s•èì”&V±T17Û2äÀÀVïש[âb©Ë™s¬8!VkûĶ€ût‡³ÿÇ;·Â+<1)<âX²¢ô³Ëƒ:‘Ç–óÏùɲ§:¦tæˆäús'ÇæàYçÌûF'³çߞŞØ3©õÖ:ž~·GòY{úÝŠÕtù…ʲ¯7“íè ×sº«’f^ôºÖ€¨ì‚²õ”¿îªÚšµ5Ï뾩ì²<?0x¹‹ï9ÖóEη²Õrdi“]eùüˆ'âäAðüǼÒŸ›”š +î­Ôˆ¸&.†ábσ@Žºz/ZÍI;D¾«ŸæëtÂé¯S*íº¹{n?–ì+ñëàdŽ·º•ýÖAÇ|¾^—Ù7rÏ‘vFÛæ-?ŠõjÈÂèg}ÝZ8ãß­yèD-5K?BÍU#Å¿-ºÙÂfãúÞ÷ÝFTkk­æÖ \íÞ–fb)_ßóõet†Û\©é²E]@@ í° /#ô¹–‘QáÇï[&Œü¼ôÄ<5ŸÊw`U™œÒîÒot¾c¥›KB<#0<#ðrÚyÎõÚ}§4ovJÓ¥cE®~ЩpßKÁ]³{Wšø#õä”P¥µf” Ø—Š—Àïm<°³b•\,¹¥dÏëË&s{Pç–^ð^ì:NæÖÿ†æhËŠS_¾.˱-F¨±ßœÀÈ ðx+÷Gs‡Î»çgo#;pÚ5Ò«é/ÑVV{Œ¦Yì9½S §¹:Qíbµv[D5;¼°ÚÚ•¨Ð¡‚1æò<;Ág³‹-}efã…§eSC”¢ÍõH-ãG@’!6qõ§ ¬¦"TD’ˆçX 39Y ÷§íCÛVø3yœdðùóe‡Xø{ҬȫßysÈ~• ¯yŽãê¾´IcŸ‡ÌWÉç8µ_]*íXàØGgy½IMZÈ%É%á/5p¤ÙWÿqf£ R—½Œ~ÎÁ²¡+à\@¼–‡¨ÁgõêY«U‹­เèÄ{'W¦,'ZfCïÄ…D;ì>–Ì…Ƚ‘_è?ñõ߈£°Jò/u"ç&ÈŇö4æDxz—áAk£5W¹ ìíƒUdËæã?•JÃÓ*v¹Ý‚MXÔ?oŸ¬~׈*Í®¦Úeªª P99äž5Âõx–fûxv¢ea5¤Òd2-ÑäÊW¬PI þÁ¡Î ÝÑRð 5£´qI6a…]I(Ï‚ Ï‚úÿž“}LF©ë’\2wQ½ÄÒÀSÍ™ÍÕ„%y’Òäurƒ“€fá™'òsR¿‘6}7Ñ'Û&Ëìß½oJ {еšZ¥(kEE*Äg~Ú!þfç¬rüAMw§dƒØ¯œ•¿”µ7{SÙ‘eêY>#jØt·W NÖ×¼j7Ï(¢Àú™òk÷XቖéE–ð;¾=É›Òoçv ¡7T–x” B@¹TqJ.jÑÑ“ýê·øzZkÕ”¡µª©ò^Ž(Û«ô0 ›gæ8ÞÉÖŽè»_¾™0Šh÷¹½ƒ’yÈ˃³Hþ×Vk‹‰ eb¹XB™ÕŸÒ´–îi8'óP‡L|Þ3â,±åÄ’“CRÞ"ú¨ÉÇ=ð€²I‡Ç›3m"*¹§DŠ…#¤Æã1÷ª–£€€€Àß' ãDˆ‘‹g›)çú•Ï} ï,¿Þ…j8t‚MΪpB_§\ï”’Ÿ4Qž%ž%ýÿžÛ56†çB7 'ZsJU Ggšï ­—v’fd2qfò8ú™½’×Ù?Ë7xœdy~À‘ÍŸùúˆD•C+uô¬ÆÓª_:ö‹Šäד?’¬h!ÏJÑxÒÅåáçÄg÷”*¥÷Õ‡ª¤{ZqSn¥ •¬V¤ y>QkñÚ&VÔêÞ«ó±'{B{æÑ¶s5/éS”BçøF÷ «\ÙXgD*¸sÜ|Ò ÀñÓÃ[!KËj>GiG 5Äs¾ç‚új§«HÙlØ[ÚÇÂën=<2…ý_¹zjBkžu@,”ò39˜tNÍ"¡Åˆ;T…}ê‰:FlÀÓ2\”—•aK­YDcž­bbé=Øÿ’sMŽÆ¦ü½øZ¶§]Ü3yø>r'õª   zÜ“1*’ND‹K¢³w-ÿ9þ=ÊZÇä§4]Hªè…œ’Ø„nWdy¹–Ù$ò4 ¸#Ÿæ)q®? 0ǹN+ï”W$€iÊAÓ…™í£º‹roñ ù´º˜/6PsaVd tóHbÕ¿"À“àIû4«Ð(Q‚ÄK’‡Ï{ÏlÛ‘hÅW+—%åŸò(=L©#ÄpòçSºsü«³ÿfgåéç_'Y_6V^Zž½¤š56Ç9f™¸>¯Z›döÊJÔt÷+^<²,×êœá¦–¼ÿY:¬¾òª¼g(ü12ÖHzæVøsŠtùÖm0)ÌyDT€Ý <·Ë œšQÉ<¨nfÈþiõ럅%߸ù_½ò`wþS·år&‹»ËôÙðBÇø/™ånö3o:Îê-sæµ6ã÷uô£XGœ¹E[¯-W³\D׊^®ó¯öÖ×·ÝMnÄ‹«oÅ_ :7ãüöžüõh©÷S†í­9ãɽ¡ø?®Ü®zÉl¶àþ’¯è¯ð7ª~Qå¼+üïϵ"à ñý 5ñã–þ•ù•¿¿®Ù2N¢¥  O„Àë¢-券‘ѽ’»/ ªÛ¨üÔUCß½sûÖñëÆ;Ïiã;¦*úF§”l27 ?ᡞÃáÓ[No]”<–ˆ(Vs±¬Àó²+óŸ*4î±ügéœò\ÊX«gM¢Nv¨âý.'ó[Pl¶e.ë­¿šŽ‡úËN²7±a‚ÿkFH¿[~¬PžâÁ\ ¢hÆóÔ³ÂF3hŠ í_ˆé¬¼ç*I‹iž±^-ñr;ÎqïÇ?_ñôoxLøm»‰ø¶kϾX.áõÉz ù–å^eP‘Ëå:N¼ÄkYA-+ÊR1>~Ñ‚r²œ©R!íæ¦Z¢Ë\æpbiò5EQ+ÞÁ›·bƒ€ì,ßTÓÒћԃM${Ë~Æ, ïpZÈh^"‡©È9ž&ªé#é–¼mÜ 5¯JSÅ}{8yá-LjH–˜ >àô™tó盵ˉV;Ö”I\Aô}ÉŠ&& ÿ$"N¿Ëœ÷Š­jVÑ_ôU¡úÌP™Uþy±4IÔhQÑÒEš‡õ{kÀJþ¾üPìùî›î¯rdügšÊ~Fì   ÿ!ÀÏ /S>Ž€»šlß»uÆØ9#¶ï¿Ò%pѳïžÞ6ȹ¡m¸S:\ÉOrF¹æ’O‰€ò¡<;nL3gØ«dáSûõusûy·öÈä±Òt#OÊNÝl5ªT}MX C'FÀË™ÌLo£¿I7ˆ2·Í­U&·oßzDaÉá½õì.p¼œm4+2&£EŽðÿ[צò@þ{ß'Eµ|]·{f39ç%JÎ9g$*A ’% F¢ˆ$AEÉQ ÂîKÎ9gXrZ2,fú~çötûž<ðSÿl®â·SÌLO÷íÓéVÕ©*ˆ¬.먪ýô*W‘å¼_å]æ€AÙ¾[Û9~à‘í¬ßÎçRÜ)‚Åi2QõþÅXD¿âw—Õ(ØUÜË OD~>ÍU¹âb·Ø®"Ê"‹Hm¶­$†©#}:æ À5CÄl˜Ìô¨ÿãiÆF8dŒÛ`êÑ­ûáó•A^)ü]c"Ñ[ïå0`€> }eàqûè£Ggån´µËQ[~ŽõíÎr;¹gºj(C0æŒ+‹„¡HÍáÀÝH?è˜%>„¡αƒÀ¨p.v½`çwó]‡G;ô 8!òâ8ô ðÒ`ð¦Êš*®J¿/ý$í5¢ ÷Ó7Лã|Y“nœ†Ht@wÿ#ã÷}Ó¯”ȇN„w¸£C¤Õ£üÉžn&ò%YÌtl6Æ€ó@.•ËÌ*õ ÷-ˆÛc¸Ëû2ʼ/ ï—"ûªìÕõD} ¿•3`)Ri¶VHëu‘hæ³ó?®n‡öŽŒÆõâúÞ5æávÞµ5 b}6Ãv0˜ù‹Ëa”4*ªˆ~æß2§× ¨Ý/M@þ} Vw¤ž™d!Z„õœCO\£žñÿŪù+F€`Fào#pÌAp­œ¡ÚíyºåLU4`2~ïCÁáŠ+ à™‚™…)á–oiVq„;âèçl¦¤õ9¦ÔJÝóÈábÛJ–JwÇ/…s®óŽ–"› ç·]õ˜ý0 X8AÀФ©e‚ax=ðšÃhà§o¤€áøéÉa•ï&ºPíÂ7š[{¤ržŸ›`G|ÒCÅ`1*õA.'Ÿj>>†_ýõÖyƒÖůãVúykçÉæÃú¼áð‚½åãoƪíõ(Òõ`n*‚_ÁÇcOÜEû¸lÐ-aF#lTaüwæóŸ“«QU~ÊÝÔ µó5Î7q5–í|K"ÿW6]=瞈^Ÿ%.õvÏÅûW6ºgð/ý(R5º‹z-: ÙÜÕ'ª«|}Þ˜»ˆÂ“ì"#e  3š~í6»M&A Oû8´ŽóoâûH X]m|”|F™Mñ"ÌYõ˜>M Br¥LCp8Pœ±¾ŸÅÏxÔ“ã=G[1‡`„÷BñÚÍôúˆÖãxžóI#¶eœ–á=}QŽšÙ»¢jå<›sšþ6ÚïÍÌÙ’|‡ónpœ…ã`oúcZw8 ”Õ0~gN§?¸d,3‚ Tzy•'.A·¦7T·º%o%¨Ô›ÁrE^ÁèHÆH—ÂÏ1Dï¨UvT õª@T <_?¦C‹~u¨"‚ Ë.®øä 8§oûA¸~n‰K&3 Ú½ª3èy5lѱLjRL±G|€Ã3­çÕú•çTêâ}ãèŒÒ„¸^åYyÆLýP× ?õÕ!baF€x‘ÜW"ø}ïÝ1ö¢öÂ/w$ptŸw7TÑN pˆcb£¢˜ÓZPÍs Lüx¿ qsüNkª76‹Îµ¢Œ¢'>_C?ãUùß=rR%V@`ŽÛßñ–ª«A 6þnù•§¾ÑDucxråÉm©C7{2‹*a?&Ý›ªŠE^ ¹ÞÕ"è€ï¡ÔÑW1¾T"¥€#Äç¬Ï&ÀF)3¦œ#Þ†ƒ mv‡GÀKM ÔvblE^)ÜÆåŠ4*\¹’(K½ÌÓµ¡Dþ}ý5­~øÕ ÜØþlã X6C"¶C÷ä=ó|³Ç‰âEœ3[Ž”cÔöÝÞnouž¤’þ­ Q÷¢oV÷‡¡^$W‘ÜÎëDS:O«÷çáA‡oº^Æþ—e”ƒC3WÑŸ¯£ª²–ªáUÆ+%-$êXñÇ~p4~½¡¿Ï ünX,Ça= p½ÁQ×±¦ÆÁÂ0Œ#ÀÄ OÀó瘸Cµ|êez)KZ¿sYñ¤R‰û”†5ûPò™GýÁõƒ«Új`‰ÔŒ%þ˜áÙ´fL(%Ηæ [^£áù '«ç¨S)ûÐEÝõ¾ú"‘6í=yFž4sk= ò+#·¸Í¸+‰O<ÅÿŒ+†…áhþ¿ü1Åßpúñç°Ïdd)™ ·ú”Â[åFƒ‚œƒ`Š9bÁ€«x¥Âg^p ô*ÕãW8%Š=BÌ—Ä¡rÚ¥.}Tõþ?(Ñq»—ÿ»5›º_ ­lœ§7Š$Â@Ý`烡ß5j¬,Kt#Ïõí ùýíþ³Ÿhç…]-£«x¬½*}s3×Í)ÊÀü3"ÿÛ±Ÿ×e¤‰Ka‘‡±¾íbƒiðM¡I*§_”%Ì$ ›Yð¿#KŸX9âãžÜÿÁrˆY@y„*£áM€K½©Ê7’÷aï鼑J€ï Þ)£2jV.ÝÞ«5tÛ2?åê–k”ç]@GÿŒîTD¼ß1‹Fþ"W"ër†œ© ƶÛõ}(ÞSµÄHñ-’^èÒÆË}ÜÛˆfL™u0bÑï®Õá‘÷“jOÞ—XN›­ý¨®9Wþ¬˜âΓìÈÜxë•N¾p$¼{k`Ï€*`Ô 8) 5Æfýá!À?~ÊF€`XE R½°…š²­pE\ìVë¡ü {¥î…Ï¿6µ±gÛ.pû”Äà‰®ÄÀLI ê7y.q–¸@€§qòÿnCÅt”X'¼žÁóÖ1É£×B îHÕbn³Ô…s I—zŠCÌÐv‰Íþa]âö”ø5p™¥öHÜá¨OA‘'#ݲ Ñ'ù=FdîœùÕ#òã_ÇÕ—!‡¼žozÿ•ÎM…Ýœ]ÆúÿŠœåÑ™|4ð_ŒwîÀ# „BTY¼þ¶ÁßÌ"mb™¶€Šb|+åF”)¤;#ï1 ÁЯq`SÌV¢õã6ÕŽBdþ@ùc.]Ÿy£4zÊSÔ[QßËr0ز‹L"7´[DªÜwZ*™ü@dü#rþÜ”‰x<Äqºi;b >|ò 9I"$zp ú;9S¥þ”#L´!J{"m# ñ‚¢# wr|Šý†J½á¨X»B¸×0K.g«©‡+•7H_Ud=•‚®/›µT¬íüÁhˆÓÅÆl‡N¸»›×ÎhЩ"Þ‰XŒäZR÷·~OðT˜>aÖKñp)üã<Ο¶ô¦rUË]åK¯©HÁ™ýqÞ”ïã:š”)¿ö.ö³¸QY1kØðëÊÛcF ™# jØ(«²ÙÀP¼yûFÛ¿‘ëKe Œ™ûáWx+‰Ùmipû”¸{x´œåÑ&—Ïú/«ØD€±‰îó×m9DsÏ"šu`fgŠsóÖ4GªµžÙ5K®²yÂRÞ3E®RÇ&P\µ$+F >@é³(e°i㵈ÓÝTw‡ ¸ð%ÂPÛWÿÀ˜b]^î˜Ö/"–í^)ꋳݯ¼_¸ê}!ëÍÕÓ.µa‚q½SövçŠÙªº¾vXÛ®ö'ºstÔ³§³ÃÏU…+ƒ6Ø´'z0ºáÍÚV3:)òuÏ”vù ¢ïó¸µêû.\(†©¹)ú3ñ‰J ˆw‡F\ãù¢·g­“«ä*uÿ“Rz£ð#Ér…¡ÿž³::%PöîÙÆ(Ã¿Ò¸Š•¼ÕÙ^K÷ÆrEèxL_j`dÈ1Æ*w^jÒGeí£Y䣸<ÿþh¿é†@dß=ÊX,—â<+ºíûè®h±êÇ÷{ÁRÖHC‰>ïôi®”Ÿ¡¦@T~‡Ãã÷7Ò©T™çÖ xÑǃ×Ç0Œ#À< .¢(‚ù`ƒ;#‡ÍhZaçKgîùažÇã]uyG€»§$úkvƒó§DN÷h;0j½ck° Ö ýË#¶£Dtñh}—G;;[úÈžà3¿´›ûAÆÌå²6÷ß0ä}Lz…I¾ŽA.(‚¥,Œ@‚BÀ*V¦MÔÆQ«‹¹:Ɉä˜s ÜîK¬.>\µíÓ–k3©nõÞ2¥Iñgв˜,&¨”m§¶VÕ,ˆh1E""{tû±cЍÜ|;Hú›ÊnÙÈêõu×ûß ÒšÆ(Hñ»_°?Åq%ÿ&~1Ûðù Û^ÝUío‚:HIp0vjÁTÕ_ÎBÎ; {Ú¢ÔõR“ˆJ¿Uª´3Ý$ŠÔoëÓLþå›9—¥ MSSÑØbl!8àð3»D€h‡ŽeÜ>#mfM_ÑÛÌ¥,!2©T“Ó?žYèz ±“‡1Qª+D¡k/:Ê`¼éÀ¿¹„qª¶Šê¹×ãÅ&YF€`ÑJ´WóÀ‡Ë|ýÁŠ—Þ:ÞéLè©>Ÿ­«ÔìRá;M=ËÅôöhW/–à„šÎK\ €)K< àkm3³¥çz´êÑÎ}^üÒêýÓ©E†‰Þdù­¢°*º( #àÐL";½Ðð(Øõ³.ÖÇ""™­«Žˆ¸‘ÊÈFpûËÔ&[Dä<ÎÄ6¬º‹®ª*ºvN;š=Ù©©´‡ *ƒq.;l~$ˆ8Û*íX]ì©w‹Éej¹c¼âUÑ€°¼^^/Kµð¹]¥ÝÛêEÀ†œRsCÞ¨ÅЙüq| TßÜ@%7Ñý…÷ÓʈÖåí}’h»¾CщJ-ÑÆ ÇÍ+ÕšŽ÷A½JUTéG„=uTêþª‹ñµñ­*”(«ÉÚæùW†µ—r[`»“ädUôR¦§ t‘(ÿKù¦;àˆ¢Ü8ûc|>2@9 èª|`Öˆð/ÕOYF€`øC Œ:¸Îµ³´ééÆå,ø^Êù>?{$ð¤U"ÖZ:‡Gs7q÷Ê€¸Ãú¿·ÔÂzSΣb¥JÄb‡K…§_äµÂ1Íù‹Ö3Í$:ŒVg=ߪ‰ # P}ˆ±Áدç«Ã_@äW&ª¢¯PEÔ\¯»zÐ8äê×=4(fr­úífd¢Í᛿ŒZŒjýãî—¸:….|ÍýîÚIõ;‘•¶šÎ·/TE–‹€í€Éƾé@]­®"é‘g"_Cmk¸}L4 èw®‰Ã§t³R  ,¶ªÙ¢’ •B*øz=D×þÕÜ´`|d3kÌ‘óTלS±ûì´«öß‘·ÖF]ÐÂÔÿ,Q) J4ë=+F€`F ! ð|à€×~×£E¹4kÓÖKߨçŠ×ž¡‰%Ö­÷¦ [}äy¦Y_²Š}bwûãO¬[Èã¸XiéëÖŽìÈ=8o—”}¼§èmõþôzšé´‹Ö¢º8b©”ÖR¬FàÙØá;â†Ù./”B•‘t±ÎŇn<––Zþrä¢_5â7‡0ôDGQšzÀPÌ¢e1Û¦ÂÕ¦Œ+Û „ öì ò§ ûø9< ±“´8ÎËôÅŠÁÙ<²•rl©·õ‡h¤<hF̯DÕ¯VÍâ‡A›ª¯ìûQ±éE9êãw“ôoT3VcF§°çQ= >R4è<8F€`d‹€r ÑYo¥}.^N5-u®4G½+áIz™*Óiî¥aÙAV«btÃõ|ίq…;â é?oG™Jòz”­ÅÙ ¯eÊîûŽW;ýž^FäHÕÿè<–B”J½baÿBÀ¢à‹ªh~îvC;­rò®|¤ÉÍD!¡k¦©êü?¿ºàÚ“6DgîŸíèþÜl#j§÷ÖP¬/-®APÖ`ö+sî¿ ó-¿$1¬»X.–š%ú"ªbŽÙç–aD«"‚ÞÚC´7x͘®(^y¨Ù*Ÿ¢–sš_ô¹B”éƒLw58äúÊ,&ø¾üÀŒ_8ÿˆf$1ÀxwF€`¿€‹ž˜íj³hE¨ŠwÕÌÞYú¥M —»)6ãÙ²DYësÌØLùÄÒ˜¡±Ä&ìˆMtŸ¿ndšÒÖ£D K· È‘¢Ÿó=¯SÚ4}˜˜’bœ€åŒ?vx`âWFÀÎé¿+®zjÈ:H–9Mtäc\ûˆæÜ{ø ¨Únm\5 Åý&> Qn6íº8­rĵZZMÊÓ¨šÿ;Rl¾IÄ/Ñ*s»³Kî‚óÐF³aãVÚ®ªçÓüsAߢpEÑÃk¸éò0ðN¹>ÒÀVîÉôH€Ð¡ó%¥«Âs tUeâŠê¢šù>¥2'‰?{ܪ}D\—sDÜwTãÆO7Zˉ¦¾>ccîÒ»^ÝS.f2Qç!¼}«U~Témç—ðÏfôš >îo˜E£Mô±"µjF€`F É#wxŒéŸN)­ã­S5ñ HY õ—`ü‹íG,­Â›ÑÏ£ÕD„%.`@\ üŸm`ji Ê8)V;@³Ž³zßÄ·¸_ÇgNMôÔîQ¦€ZÔ‚¢°ÓyMå°²0É+§Ÿ2 y "õÚIq@QõŠx[¢¤æïÚª½QxnÌ ÛñIz¢K¡—FpEÝç¨"ý…µlTȹ¨Z¢ÀÏ6Èý’ß hFÞ›úÑ¼ï »Ò}èò²"Lx’Íé5º‡ïÏɃhÍHŽ.Ž¢t{ÇËÔº‚ÃPW½ŒžŸ@e]Ä—ª¶ÖVk…:òªoo9UäPî‘”ÃQ®6~U9ïîfÆg„H¸ëˆë œ êÚOó Ë¸š aù9Jìa\b©øUuSÛÅQ§ßÄ"óýo¦._˜Uí³¢I¢2µmÃÿMPbK9†àÑ&kã© #?óTq˽Qû ªb‘çÎ/¨ªò·Xÿª¿Ï¢¶­ÚøøT!Ê81ãWZ=ì^^£\R$ƒåÓ`9Ô¾ò`F€`@N8R`¥óÄhYÒ±Ò﾿¯^>ORÈOb¾©Iœ°ôVåmMÁŒ‡%.`@\ üŸmÀtQ"šy4}ãÑh!摉©×¥ííM>w„—ð§nÞ¡˜(Ÿ¢Ïñ¥%ÕnYK±b’ v¤¿“hgVáï¶}ùˆÎ· »ï#šÙzöù'wAõϹfVôpTõy’[â ;¤}N…¡mƒÓv $4ÜTä"¿•”!-SËL¨`OòˆÞŽZóÙ.ˆÂÌÉkiÅ=d‰C؇`cSædº–g³b”¥sZ:8íÅ´ù˜‡VTµE]Ç|rÉÒ*7RÁj4æY”_¤Œ@ëð‹08ÀÑ—YŒæ*2½½ËÎ<1 ‰&´˜Ô!â ÑÑIÇnºpU‰.X¾2"¶wµ+ªz?eÆ?Äoñ¾ÿDò;ò²‡ìmFðwÉÃÊÀ7ÖÉ­ª[‚÷¯4†{‘´³5<ótl¯—¿|þ5úDùJåmíhDøV®Ýº9è_dj¬½‰*õYü&‰3ø}Qï›05É+ƒW7ú8\Ó.ÓzЈ&ª;rŽÜa2ÚRˆég£0eˆÓfĵ§@¢f oʳ\}žd=8ðÿfVûO__1 ?¬ï ÙCÁ‹N3KõEˆ. Û#Õâê“Ò¸cQø´ð`ó‹Ÿ_Zì†|fßÙfîÑègÿñ™îDgóóvÃrWÂËp܈¸%Õã?\ Œ¿“ÖšñŸ­bƒJÒ902õ}|9rl‡„U;@««USã3f³TAÛËì¬sû;üRw.¢nW» ÷Å~6öj˜Ñû‘ÏjŸ5b–,‡šÝ1ì*ÿØ%F€`F É …Y¬K1„œ¢¼¾Â«¾W-(àGZŽ=¬F[ûYÉÒù-=ÍÒ¾–fˈX^?¯þÏ «T‰@ìN‰äÑÎO<Ú«âü‹+#–©½¹òæ£3o˜ÕKSŸ"dÊÇò´ié4Þm|"õ|þƒ©¥’Žm²? C1̤bÌÂ$qÌkĨeôVù"¹Štv&ªùa ^aD˦­˜U†Ó|¹PÄâ ÑÖ̪Žmƒ3S,†l$›)FŽQƨ7ùNöíA[À¤­à0Ç<¢:ãkeõúÿ•N8Ï‘!G?} ýš^sqe«¢~SÕ5-KËhz9÷[\GMʾ½ˆ›2kUwi°Líù41½jj°r½Ç÷Œ;ï Ȇt o£ÁØ€sàmµi®¥½ ÁPå»Jcµ6È{ú°üH'$m ¶nk ò¿×ØWÌU•hí uw¢€û¾Rçýû÷óJàN»(T1´Ã3”˜ VŸG>´´z‚²Äìˆÿk¥¬ÿƒ«Í=:‡¥39|£´PïE ôþN§´ 4‹>•ƒ0aD´HQ{Y䀀,%K©ØzÊm)Ç£\õšÓã¸Ï^›+^Ö¨F´eêÖ1©ÄdÀ•”¦ ­nèÙ”þî²á/`S¹ïþä¿åë¨L¶Ò)ðp¿Ü°þZ/ø«+Š Rüé~KwN sÑ( ëc™¤|rr—2©ú-QtïÏb:>þüQ²xçqD‚á`ŠãO\\¼,&©Š)™‹dÞªe%jØø´tÍ´5œЇ³ç‚¿º@ð×QËp^LÙZ?&7ÑíÊ·kK0/ıY9„¯pšnW_•¨yÑÍt3áodR)¹;åÞ®ß5à÷~k|1¾ÜŸFè`*^àvÀ¡…´GêüfaF€`’$¥I"9“Ds­œ¨ã=>¡upì´öu¢¥mns¤õÞ™$±H€;Å€¸=(­Íå·tMK#æeJ!=JoG³½¯Qat ð×rËP4.SÆÿEüÙ—‡gY~e’2^jçŒFc *}¦œ™îh+‰Þ>×÷®oxßÝYeÀo|<ÇñBî÷ñ€1´ô~à0¸þµ(êD.E4¶ŸYæ¡cˆð·öù–‰.s®tfgq¢fß5ñZNTéqÅeÎ%¨Ê‰(‹ß}‹Èþ9ünˆ¼';aE—äӔ틎*óM]Ç,åÎQ¹ò˜0@+Qƒ>ø‡ãë—ÓÏ,X)¤âr —üF¯‰¢+Íp¿M´tá²ÆQo¡Æa·-c® æÀœ{$Ž“6µ%òá|™%¦™5ÜÿG¾Mùoet%ð¸Ò/K×K„õ­Ù§©_:0f¯é„óÁ_^E«F’ûaúÆ~ðyXF€`’,ç(‚I[§="—wHúŽ›ø| »ÂçÜ\YV5*6¥’¥Ù%nWŠq…´g;vıµÙo<-¦L-õѱ¼“w*j‰&]Å´4 È6‹i¨8_˜ø5ù àF?Yˆ‘[T‘÷—ò¯Öë »ÌѾ?úÁ öýðA$»úÝÕÒÆƒô2ÏïÔoÿRìœz«›1Ř©RôQúpUƒ Ðð—Z诽V¸åï»Dµ·×láUEò»¥Þ,”¡ÿ©1Buppç¤=ØR/˜ùê:½3UÝ]í¿¿ù7ð¸ub÷¾’¦mÚMÞutw8Á@ª?‘)a–¾`é'–f˰ –~jõöÔOÅ*!(€å‘¯,ÝR¨û‹ZÞ-P@¬]D¿L—|ŸÂÌoŸ€ ÀÂ$/lý’¼¬v\öE»«È ÷)ÏG@Ÿ¡½nú‚ú=zÞØÎo"üÐý´0¹Hë¯õVÅáÅ~¦ãÌ6ྗTjQÄ(O§Ñ†þl† âK¤pg|åUo0šOõ-ïDYÓgé«!QGîF¼Œ°#Ü.³¥ÍüZüv5w{¼j°,q€éå{jcîî÷cÃ{®÷,±µîWžïÄݶHÖ"—à¬9»vW4(‰ ê.…‰ÉÙ–ç~tƒ€(óz zqNœTÅ q¯}öÝVu€È^ò-øÉñ•£7µ"zýýVs½ázÕ·Y9¯wpþeÓnÐh,7VŽSÌt0P.\F€`F y ƒçh*X: ´éô›WhÊí©²z•QÉpJB8¦nli$KšbF­w¬b vÄ´¹b‹MiïQ ¥š"ÆhAúcjî5G4%"\r/ú„#rq‚ ÀÂ$O,óI®”Á 1MLQîyê½å„!v³ÍÍBÞ݈&ÿ6uC$"ôÑ…¢‹ÑP,wTDO{Ùu«ßá2¯"c¶±ˆ.ÀÛéØHàßTnU©±ã;¢Žû;¤öX&O©éÔp¤wŒ¦·ñ³²‡<ƒß_–OÌ5hX_ Þ ³!þÃ’oHœ 8ìݽ•N™2¥ª)Ü*°…ÓËŸ¨´WÉLú¯Ds›þ<6j7Qл!—US¢ˆ†ÃUM í¼vÀL)Éw‡{`ò¯d 1¹%ëÑèRïqÝqÎhó· Csï¦ÈPøÙ§‡b$cŒïe~,àðtP˲0Œ#À0É„GŠàyº@;G½'´Jñ®ó¬ö=öÿküÙ‘~_ KcfŠŸ¥#,Íê#àxÁëãÕý3¼­Åkx´×ÛjiÅZïT¹¯’v nô¡™/ê|fóŸm—f;NÏÈžÒL pærŒQí[¿ÿZ ïD7òßh€Nì´8×Gt^bŒIŠÒOÅËÊT—ÕŒ†*ÒŸ&0ͧªöìkï´è¬~×zäë½Ç ‡»ºæ&#•‘EE’ïe¨+êƒÔÕܲ7}ì¿&&ä}£¯rø ŽÊK*†ŸçdžY:«ï·~çKßZD%ª¯äxhæþ9)"G…õëhàH‹ö¢eƒnŽh…:zÈ·U‡òÇÊvw`ºÒçõžÅ}_GJHÔíÐðH/ÙT;CþC>Ÿ´ú=mŸ 1ÆÒ¶¡ŸÖÉfHÛvR²Ä..všqòÿnÃe}dQ\D?Ï{Dâ<ýæÈ‹ÒÕå·ÔY~ê¿íûßõð'Œ@rGÀ万é]é8Ìúæë³Û{#ѽ¯ïO6‚~+Å2ÎÀ[{z÷A·ÀÛùt¼—‹d¨, N3&˜~æAàÜ â A¼7ˆ]³ÀÎQ·S%’þ®›çtËÊjWEiQPl,^X×F}úÁ1~­‰fåÿ©ZÔM8Òm³œ¨_¹·®ú´BMo gÓgã¼ùIV’éqD¦¿šÆO-¤ïa¢DÀªaa§BWÈ“ìDy yÐŒ@ÂG@¼¾]Œs)ø”=[³_ŠÚ“%‡KÖÀ•nŠåžõžà‡HЦÛÄU¢tãÓ ˆðõÐ\ð,VUD^´rúµg¯8‰~‰²…˜ú‹b­ÉCjRv¾0doɤyV‘Ä$º÷ÿÙ-§§8Ÿ<*á&Âþ‡»5EñOŸ:ý·*E¤w¹ž§½Ë¡¸ßM38á( \¸@/…夼Eø…<+O˜} TuF ¡" º¢¨ë=ð£,ä/´D1¢d5Y“Àˆ²Ûk&Ôáó¸F "à—¡1Zœ¦—Ÿ:V8:hëff4¦úþ UzLéoé–fK° –€}Îj-–@–²ñ¾GSçHç*­¡È-~“©­~“rQJzh}kW °Þ²b§°#Ù·`˜Aä"¥šàöÏÕOkŒ÷[ä³Ú„cÖÔ¸7zü$7ÃÍ*‚(ÂÄ)eøßíxo³„Áû(ôÑï2+QŽÙ'jÐ2Þwå—·qU &e±÷ÓðDDŽFW•zå7ÛW÷Ð5ß Åýä§r•„Þ 7š}s‚ïÏIùÌHÜûf_ïéD SåÒ¸ËÅŒkDÕý·ˆ¨…r)ÍYÑçs^Y€pžãlN^ŽÐÄ}tyôŒ@ÂFÀç©rÌ}¨»þ½ÞRÑ:iËi¦¶8ä¼Xcí„í°¥ÖǬb vIJÏ^¯¿õ1ÈǦä±tyŸÏ}7è9Å::!œ´SMƒ—ü‰†©ïå^k)VŒ#ð×؆ÜCiºÏŒO-†ëc´üo±—ûïÏ’ÃÿsˆjŠ/ÞÍ(3Qp¡\щÎ/ûѸHônök}`(xs¶Ö3Ì+@IDAT&øáåP$!Á‘’ìÄË“"ß”=Ô¾ÿÁ”®M’¼Ã‰1T|ª˜=Ñ3b–®ó¹%~¾õˆ(÷'%µñ„XCëŠ^uq~¯§ ³ÖÐ%yÅdD%Ú=æ3Œ@‚AÀ…y—â9Ÿ4AÓÑÔùŽè%Λãûò4KÛ.ZoÛš´YïXÅìˆ5hÿ´âLÖ»f–hi‹6*šz§ö~KÏ Þ{Ecº¤}ï¢üŸòÈ ±–fÅ0ŒÀ¿AÀ²`µÂ"¯2üà …·0F ý]Éà~1S‰®ø_9b4%jò]£BN亗8T¼‚…¢ˆÒí¦£Ø ;üo¶Í¿a¸EÀªå¡Ó¶RWN8yÚBš7ôN RZ²VÏ®¡ÈeÝê¬p‚!•¡Xú³¢/R£VKI¨y‘l˜?q{TxkŒ@òBÀ@»ä\¸¿Ò-Ç7ŽêŽbª6˜¶ÓúR5æ5Iu¦€cg ;, b[± ¶ö¬§L °´­ìÝåÖ§ªþ³x,fÓ ê£oÃC8žûWMº²U*ÐþkF€`þ©EÓ™¸†#¹ˆ¶Öڶε‹èĵ“§Üï"BX6ú ‡À¸1ÅT1¼BMõÕ°û_Ö»RqD§ËÙOq(þÑæyaF€ˆ;DWÑUÅ×bübj¡ª­ iƒ‰øíw2 Á0=lõ¨‹{î¿l;35.æ6[ïõÆ÷H¤Å¹Aò®'&îÆÌ[b$†@` ¡à4j¢çÒöëçQé¬-ážùÐÚÛ_,mÛCÖ[V±;bá?¯ß>ÁmmŽJáï}Yë&ÚSWM»ôf(Q&AÊ%+&÷ÿy%üŽ`¿…€ùO#Ü„&;wß[&‘a·êzÐ’˜0¢¨åQ™|#ñ¦h§ªØo¾±qÌ´ÅëÚ´šó¢‚s^:¦ƒ:l”uKy[d&Àß‚bâ;òÿH ùˆÎL:ÒÝ×õ—›6Ç|ƒ5¢ï©:®û“Qn…û@ª Ý15ˆjt¬>ÍÑ(õ…ÔnÙ‰q[ ºƒå“kªT¼<Þ(#Ä(ýÉBWñ%½¢=ãÅÊ¢’“âS£Ö®¥m»ÈzË*¶`@l#üìõÛE.@¾3å¶W¤Wý;‘‹‰è°šFP„T™‹øÇ)L¬Fà!à‹úÞQ mî íܱk«ÑáGºQAÛ¤…P øD VK^»~ýGÙˆ(dFÈû1…PünIÞ”Z,WB+NCñ _%W£ž8 #À$@DCÑP7u­t­’/ã:>¶¦Y  ×Ê_›ª®kÑ\{(¾–#)5Ñ‘#Gò»Ã‰v|¸³Ž ‘ÿ†ã_Îã\ Ç¿ãÐOð…`ƒ@z™edzSv¹X[!šh£è°Ø¡Ø†T‘0Ã0Å®À ¸Rìˆ+¤=Û±OpÔßV¢²îLyÕkWJm°8"*À_–SŸ†>S:Ú”Mm·W™¶PbÅ0+òæ;çåÿA—ûÇdaDüF®ösµ"Š(ÑZõ½×ßÓ{>§ÅŠèÈ_eyZUYŸÅ…Üÿ&ó/p–@Ѱ©;4¬ÂyÍ´$fü½ãÀK1q€ùSè åDÜàë‹ \ß¡)CºT»Ê[rœ2åµa¢¤ºP "q~¸|ñuÁ}A¬ÞèB±Ï*¯WZçŠ.gR t‘Ù©ÝÇòÌ,Œ#ðÏ•ý"zÉ2ä­íÔˆ¯EwÚf­ãFAb°4«8B€q´µÛ²­)˜Z›RÃÙÇù–æ+Ž‹ˆÇeÒQ†‹Þ§P8}ÊQ›…`¿€S™÷˜ð¯wV~ö½?î?î>D´áìîKø|ž6ƒª©Ìʨöç©ý-†‰UŸðK¯_>` R¸vûº(îBo¦êâöªˆy‘MåËh‡çR[`aøF@TåžCÆY#­¢î¯m¼n€ Eÿ.Ý»¼C÷õÄgf7´Î«uÝkK´¹Š¢{àáÁÅ®DûNíÿÙ]‡¨fåY5p[˜ä¾fÎ?\|µÇ÷1æí3‰0’ Œº.}C.ñ«¸*VQ†OÖÑajcíO°¥mûÈzË*¶`@l#üçõ«KA‰Û£þh¸ãvðúB»*Ñ Qƒ~ѶRgL²;™KiÊSÏÂ0ŒÀßE@¬+Ô}ãqÇ]Í\ߟVŠéƒâ_o>)_Bä¿ÞÁŒZíîìõŠº¢¶¢Q†NûˆÖôZ»>¦;¨Á_7ðÓ‡ƒÉ×/{/mîMžÕ×ð+Û`¯€5#ÀĆå¸ë#z(ÇÝ•ÓWÛÝpÝæ]w8׫ÑÈðSEµš -üˆÝb¥À}aúÃ-Ê!øûo«{ÅT&*÷¨l}ü‚|Wù®ãp½×G*ÈÂ0ŒÀßEÀZfÙ°pW1šh3P  å¥ð ‘øÌ#5˜bÛEÖ[V±;baÏú-Ã_Ô·6W×Òv Mw¬wôÔ¾ÓZŠíb2µÖ»!~—š.ÑX57ûóZ?`Å0ŒÀÿm«ö;Pw¨ÎáÎîWˆvŸØ“ÊÜ^m”Ö[僖çm®ã÷Öm*ñ±P=¸ÏW¾FQ‰7”ØäåÂ]ìqmïyÆ£;·È©jÈÓ( ÈíÿßáàïXA@äTä_>Bêrù7ôßø µ=Â&… v±F,3'à­éµgÀºhý´n”÷‰¢{»gã¾qëðu÷‡D•6TÜêÀuïnìnÄóg"È2ŒÀóÐ=ÜBÑŠz¢øßDñ«Ö^,… ÷¸„¦xæ"D©¬÷¸£±Äìˆ ”ÿñ¹Î»êåj{óÎf^´Š¢†è(ÒQ[=…\Cåi>¾Œ¿ËöR¬F€ø Æ#^‡b~O^‰¼&¿En¯+è½Pÿï½o#òÿ­–Å|̦Pq¿ç‹h+Z›ÅĶÃìE{À^!nWq0ùŽÖ™ï˜H”)4Suí ü~4̾áÌx>˜ü #ð¢°"ÿ´VT£ D7½o\4~Æu|ÒõRüºRÐz\ïUµ6”ç/6n× ¹+n©;½y÷oË‚¸o´Zéú¨dª’7ôΘ©§ô/za=}å. øxòWŒ#ðrp Ê–¢.=_Š·è45«yƒaˆ™‰)*$¡ä¢•–æ” ˆØRìˆ-dŸ½^+âoR`Ô˜J›rÛ«×í†È@ÍD0}©·¡AôD"CFÎÀ÷9U·ÖÀŠ`’/–A 7Òv(ªï±QÇs¸á8ÜV~ûÇîw ¼'êQ:À“ÿôÓ‘ÿ§‘³Û‰m¡ªŠïiçéëÆ¢Í“·ds]#jU²esgi¬æ‘Å,v]Þø#¡ééuñ{F€x±d™Õu žÎòå±Wܵ‰J×)ÝD“È=Çý6ÊŠrêÏß•b’7¢*ö©ItŠ„ÔÀˆåÚì1ôSÑ ;âo;ì÷ìˆåÓ‡± ðsVoŸØv @g ¯µHQNL(Ðñè»5Ð@c¡™ÀEŸ#Ì0 1P T¤þèŒÑ¤"“ƒW»ÆÝ™'« À÷´4fäÿÿgø?§xG PD½èyÑ‹i)Ñjgð®*DµÎÕÜâ@_ºÀtƒAB&cú øW  @~˼H¬ëWË%2J ßþñv3 ‡ÜêÜÁ(êôÕè¾´‘ÿ®zsÊõ6l3Ò ó>ûÆ6‰ÙÉê‚3¸0[)Ú«¨T5@ƒïr,º `{,Œ#À<Ì*Hé.ù‹OåHLWi8ýªšÓtëw˜¡˜¢YšU!À€8ú©Í€cJy5åÃÄR1ÚRY:©_¢®ôªdz{F€`þ;R¿]Û¨"ÿ§óžþÙÀctsÖ-{Ý›±tj©~#²‚V§"ÿ°ÕÍ׿ûb1 ´ÝÚ6U;à¸ïñÆI¢íwtr£]`Sw“p‡òÛ§©(ú¡|v #ÀÄ©„ÉàH£×áOnDüg8þ†‚ÀünÜÔõh§üÃ1€Ïc2 ätj¯î[ZmIížEôÊñfµÜapT)2IÿLˆÉàv ÿa^œHF” öÅþ’;ÀèM¿#<±Q4²(ké¦YŠG†YšU,#À€Xø9«·Êf ëħ÷µ´1ÚP±N,¦Âúwx€KäÏ(Ñ5ÃÂ0ŒÀÿ Ú‰6ªá_Ìn׺ŽÈ¿ÉïB¤îfž›‘r? ÿ‘Z)Äý$ßÿüø| ¾cà rläTú9ÂS‚–ºð¸®¶´ê\M|R>LY!2(a6€ŠŒW»álƒeç `Gèï#’–¹úoÜÛI•qŽ ÚèŠÄuY\äúx}¬•óÿï®?Ëq jh•Ô}ãÆ[éÕ}$xCÈ«.0^ÚWàVÛiŠ4ŸÞÊ…Ü ð9ÇŒ?f’;ì•ð2ùI*Fëe[jf¦%)#_… ”øx”§u±õVq€;âäglÂŽ‘Ù:À‘ß9L›'j‰—>vTÆ„ý,êœÀås‘Î=c ü#À$_ìjý+ÑJØó1çë æo,²ñ¸k6&æïÉ*ÓN+ ¦à¢äŸEþŸƒ¬¶Q[©ª…^}8³Ê]_ì.ënGT¿w½ÚúxDg¹™‘Á(ŠzÎ*øcF€ø§Xí:µnZ;ʉjý·÷ärásxÀa_7 tÍ[[Lß›+ýw†ÿSãù(¿ºoÈ7euçØÐnãQ÷W`ü\mÒÄÈN”ÿ·|4¤ÈHy”^xT/F€`þ„@8EDuD*!J’S¢‡¸Sí5—9c-iÛAú!¿‰}Øûÿ÷ì]Å䔨˜ÛަŽwÅpdÓ6¢”G—eÕ‡æÕÏ›…`Q‹jª)·‘ËOMÀ×Þ\{ÅÈÿ• ×>’¹€„Z"i±ôtšdÿæEh¤)-Q”¾ÇÃO§È çzíšT Óºù/ös‹a”À}Ëö￈ ó:dŒ€8ˆ)3æ?¼%û!òÿëêÂîÏq6~Ü‹vÁþ~[ïLHAQ4› ÐK¼©˜WŸ\½.Q²kcM€û8QÞz¹Çhþ¸Ïœ‡T‘b¹ž6p;Ðd|‚ò®3Ï@@^”uLûe¸¼‹ÀA°†Žcf€ d ’XâvÄ-üÏs„;¾r\Ó&Š¢ÔG|FŸêù`þW—âÁZA^D1@F€`b÷L³Eˆ¶^Uë¾XäRˆœ€ ­ïú÷‹W Z#"xF+oæ¿hÌC›­ýH‰öÝÙênO´ÿÜþsFm¤T¬Ö ÕÈè…—±ñ™‹ü¢‡Íëc%V{Mí7½eÃuæ ºbú컂ë.×ùwÚ=dë£:ŸY.7€[C”eMGc>£¨J1 Ý»¾k5Q£å~ÐgåÒsαٲÆLº…q0 Qžfc¹zzvŒ«» a|,Œ#ð°mÚ6mÊù?â8J²®³·wOwÄu¾D;J¯b}žëðEGþŸ©h$*&€û®[ :­Yµf© ãhЬžS¯E”5sÖá(Gª†aÐmüÚb.<½~Ï0Ée¿(×dj4~@mPö¼>„ÊøW ñöÊ€xƒÞܰº<”¤ÐéÅi(n¡ù_Z}ÌÿV´“ú˜ßòÚ„_d‹@ 4'P7ìM7 s#â~®Ò¹pù5\ˆËD!3òß™:Æ F6À%"àÞÔ{Ñ”V§ÊçFM€âc‹ÔFyð.êÂ0øHá¾áqrdx#I1B W¤þÈ1‘ TÿÕ‚¾s­Áu6ûÞbª û:F‹4«kËXŠü?¡ÍX `Ûs~Äõ½±øæ]ndô¶Úúˆ# ?š(¦Ò=è0yáÅ&#<= ~Ï0‰U8îU¨5í¨9m¢`|6÷;âé@² ~€·˜:›òX;©wÄ QR¦ñÚÏpĨ¦dµ4+F€H^Ø‘ÀR¢ˆjÿu+Õ­ž†ÐW!#] ÐþïIÌrBäM¯«W‰“ÈÿÓè§6› ª‚>[`[™m+‰Nd?ù½ÇzÉ%ö“@nÃmXŒ&Ûéùôšø=#ÀžÚNm»2´O¤;ù³1 ×Õ†mý€g?õ;Å6¨’ÙhÓº?Äp¢‹è¬˜1¿ÇlU퉃·7u?&ªSûíu¢ ¥2¤`KÐô!FÅí@ãêÐðv„ˆ€Û¬E¤S[YUƒ2"‘¨%Ø áåEM)givX@Ä•b@\!ýçíX'ºhf}ÜX嘆Ñ|ç=B™õ( ⿊ü# `¶Ùùóïù#À$Ò‰tæD6Qõ¶Þ6Ø":ÕíT†H` m=¥V„.Î!±™Z6Б)ü‹ÛÓdo…lpÀ)¼ªÐ>íÔ(ëéè@yÁ˜$§pßð8?J¼ÁD‚€è)z©g~tHÌ^ùþ$$‹û®«·o§—ÅaOçÖ:¨ªûˆ®«Ìÿ¸ë>£íÓ6(Å©Óã Ìb¶,ܺܘBî½zL/aeé‘÷Kt[Þf&@Ü&Þ"# Pf þÒáß~Ñ)Îíd8!9’¼SDYæ;……Cœ)vÄÔÚÍPr%-ÅOZ5qP¤¦ ôÔ÷!ú߀Æ4ß^3—áF€H.؆uV¡+ŠýÝïï†Ëƈü4ǽƒ(ªmÔIZ‹ÈW½m<™:"êvÉ(ðÜHQèµ¹¦1”¨Y‰&×o‰ ö-´FCª‚üµ ná§\-üOøñ›dŽ€M±/­«ˆÙÙr§òïã:Z±¹žbÐ!2Àƒr˜ÁxΟCÄGÊQ5-êgZ‰ûÒ¨àÃn?¢š¡5Ž ÿ¥î—Fsq½_à1ÆÏL€d~‚óî'G¤²_¢ñ7÷¯ôÔKü@Íö<†O¦áÏŽøÛ3–¸D€q‰ö¶…)²)xÔ+=µ™Zªcž&!†Ë¼úDš ¡Ær+³7¢p> û7¹üÇÿsWÊ_0ÉÑL´TÔzW×êy|:¤›û(®£î7†K\7â[­™íÿ>LˆX÷¤*lTDÞ£µŽ=Vm@·÷Þéå# Qdž¥ôë˜á« 4=– bÜ<F€ˆ3D%Ø/ñ¼¿»WeÊ/ß¡Üò(z›)ÖbnŽøÇÙxΆØð`béc<âMÁ”Þ”û–v¢¨Ï.1A„ˆQ˜îÑ2ÂüÿÐlÿç঵+F€HÚØ‘ÿKôºšðß¿uÿMU $¨uP˜Ñ†èI‡'iw }š>E=XZd ¥ ©b…F YŠžm8¸±›ñQ¿ÆÕå#¢@­}$å'4KMžÅ|«\œ·G‰·ÆÄ5v$mµ¶XQ;¤µˆöTÛëgøá60TbVÿöR„[HBÉýN6µy†˜¤"ƒV_X./­ÿ~ã7î1Df½‘[WÎb 6£»<.OpFàóÀäÏ“¢‚ˆƒÉ¥r‰zÆo8³¡ªûS\'G.l—Çq]ÌÍÙ¯*$±îKÚ í]Õ doľÍºÜxè Je¨2¶ò/®{wmw³¦QB¿%ÈyˆŒ@‚G@Ù/Ê îu*  MðÇ’ `@ü;¯”µù»4œFÑ)Ê,¯Ð Dÿg(Ú,4ªêXÚZ#À$=Kû£¢ú>Éôä5ÚŠ\ÚA+Œœ¨Ðçþx³Úi½ŒY8Çß¼+$Dsñª2p\çÜT7“5mÖl1Õ?_÷´V‡(sÑÌõÄnL¤A°[ÌH4Ç–ú/°#ÿEEe(_¾QS–# y°6¿±×É÷EuèùµI$±k—\çàþ±ûá4 ¦ÎÁùŒºD¥Ý¥z \ yì=‰*àzï.{r2@â9¼šHXˆòbÀ†‘Ê¡‰´ šŒ?–;â÷0ØLgLåÆÀS†RÑ@3@yÐØ¿G‰·ÎÄâC1HµÿŠú$j>JRеà\F¢»Ãî΢¹0úhNÓ H—¸ÍbÑEÿ°ŸÑ¡ÑQ˜‚#C>3`ðÔn_똈"J—:]61÷¾ 讪³aKg¯6^°#äÍ0qÞß^q;ì‚ë FÈNãg\!Ñ¿‘ ‘ÿfzC“ú/ƒ|µöSóšbÜ-~7ZMøƒz—2àø+Z¸èhýwÄ7Þp¢¢¸Þ¿–#Õ~³0Œ@D@Ù/pÈ[ø›„ÿ#¡I¾fíg‘$¸¿‰l—ØP˜ÊQGtY³jæÓ:¡Œ“ÇÁ0ÿwìÈøvm­šðŸþötC™‘h똭k •+÷ e2{„´ tÕ†$¶È¿9èÿz±÷w—¶MÝßNŽ;¹Q‚°í§íT›Ã¦/7Ù%±¼¾áÊ-zMƒX¤‚@*´ùSrð꼟µ½ƒ„áòµ“dn<öß×Ò)ê?ÎýÿÌ$Ò—ô(Uªæ4i¼ªñ±õö¶¥Æh¢f•›-Ѿ%*Ö½è%Æ“[ºG˜´`Ýœù$Òåa3ŒÀ3°ì¸Ià¹OMðwô™Kò‡ñ€;âôçlR˜Bå¸h.ñÍ €ç@Æ3‰ÑItTSÞ˜~1Ÿ¨bpÆH£Ñ­»·Šúf‹RZVRu@$åJœ{øìQ‹áâ ňœ¹T±‚Þ z`T#ª–¾ª·èA”ªHªHÑ»-Q+<ë`&À³äOvä?5ý½ˆî¼ŸO¢^Ц ‘“"ÏÑLDþ»êCµÿ¿ º½ß%´"ê>vëÄ­Ó¨sD!]BŽùˆ v}©‰¾ûÝYò'ùSq}ümˆxAF   ›Œ>Ø5Ï{ˆPÏ}–„;ÆqP£¸¯Úç@.Êe–ÆR½ç~a?vuüßÄhUì|îóËUpS×ÍK •üHÔ£ÐL9TL0 жF[©öÿH£W¥›h×­Ý{dC¢uëAÍ\ëÞe¶Œ´¦IÞ¥d€€¯ç*ÖšhõTä÷]—eœ÷ÝN‘1+Ñî¨Ï“ªˆÜž~ßò#Ú¬Ž›‚71:"8¿Éåè+ðNþ±b5wäyÕöÎA¸YF ‰ pÁjx‘*™{”šê&‘=K»Á€„ru9Õ,Šã”…è2åLíDÍ\f$”£Äã`þOˆFxüë>è>C‘¨Š¾ö ‰"`׎_›O™aøgA1Þÿ…ªjq`½2®óÇÚD3ç?©þO'QZ”RŽO£šQG1{Bû¯G?lT¨áJ˜-WO1×û‡Æd“óÃL€§ä·Œ@âC@¦@Þ¦KRÙ3£`çÀÑÏ’0`@Â8DëH€@ô+|dåÌAiòK<·ã=&Â,Œ#x¥DisœMfPý¯C_]ß×@EÜKµ.5£~ˆüg™ÌÈ-ª•x÷òŸ\ìÛTäïáâ‡A ÓêyAѪoxYæ; ßB¾¿©Ö¨²™|…]ÿ_þEü –Š_™ýq‰ˆ­tçu±à!R\æ~8™ö#òß\o ¸æß'é‹íýL Vû}ùöåkªÈi¨X?_=í|´Sm#`8+¤Ùy¯ÜÇL€¤Zð&mD%Ø/ðü¾ ­žã `çlÀ>WÄ_ޤ½ï‰aïØPŽ ‚™EA´ŠeÊe¡_þØPŽƒøgØØ7Ūؕ W7JE=°î6¸=d4ñ‘AMÓ\É"òÿ4z–¤uÖ:©{ÝžŠ{c@¤#­T“(V¡`…3p»¥ûŠxúÇüžH˜h«µe*ò$äðf$õÑžÔ{:JÔ¼Ðöh¯ÓŒÙǺÚ{w¿¨ ª¿bÄšb¬¼.¿‘WTŽFœ×õ¦76 £ªDaæS <ˆ9êsjÉQì\éÛâ¦bÜûù~mE•ôÜÁie1¢þ%r‹D^ßx!´I”ïÈ÷’fYÄäxð“Þ>‹Ñ(ß g~dÕÈztçñŽà'2;Îëy÷Ãh/"ÿ4ü°ß)’ré¿¿8®6`‘˜¯î{ao†½F£q_ŒÜ”VµEl³¹M_³]Xn‘ß\ËYyö/ÖÆ_1Œ@BGÀ¶_lmÛ9 }ÜÉ`||(ÒA^g B%žpS˜`ÁŠH$X‘­´(© Û›A·Ñv´Á¼&³ñÚÿpí!T×+ií’eäÿéØÒc‰û⪊n?¿£¾b¿z♚¨Tí’»è30¸ßáÈàÓàñûxGÀ¾Þ7j¡Êp¢ø‰¾4¯ã;²JÐ]E„¸N‡1Ê”TØk2‹ü?}|D;ÑV]ç1»\ÇTפBª³°Î iÆ_3–¦*` ü &€ ¿f&ÀÓò{F q Þ3Lå5Ŷs¬·¬âvÄöÞ2†¨ t$z¾C<ï9Àƒ¿2‰Ì"³šàRW4÷D.ûÖÑ[?UÅ¿Î|sº)­Áe>G¬1³ÝôN¢Ù§Ø¨ÍH/Ò(‡ÉwÌšÁ¥ƒ'HäLy©ð·aÇ»Žþ*‡X~+¿çáØ< ¼î‚€ ú«gwtÍè:„"–A#C>2Bˆn¿sÚÂAKk2}’¹áÿ¦@Û乞nwæ}J´%ëÖ".’ÞÍ»ˆO°tVÔF‰†¾)9 òxüF ‘ €{")€š ͳth–;ÄaÀ T^ òdäUhP¥ôh54)ƒP,Œ#À° Y‡ðSEÀî¸ï”@#0 ž%g²?I»hbUMÕ¦›âf^: ÃàìšÊI”?s· ޵öªÈš\,3à™Hò‡q€€h)Ú(ÖæÊ¦Š]…dXSUÂð¿yü¦›ÞÀ} ªVY1Zpµ›µ@â`H‰kvêÄm‹º/ï}âp¦hÇ“­äKhX«Q©yÐy‘V9üä# 7 #À$D\ÕŠðöLnè pëFž<ÆÈ€„rœï#n —èœ2ü)4U ÀEÌ€„rxŒÀs°©½;¨³2\ï¼7Ô¤§ êªrZŸ,{ò#Fä¿­ÞJE¶9’õ­ÿ{÷Eµ=püÜMAš4APD|6@‘f£HìD}ÏÞ°‹{—¦ØÅú,€4QªHïHï „ôݹÿ3;wý?[HÙ$¿Ë‡=™-3w¾³ÉÅ&‡ù'VÞ­öZ¿ðäË&/´g‰t«qFÈ\*Òè‘FµüÞÔvµ½3ze–Ê£y+»ò?H¯íë·¨5ãÖdÚOE&]ÿ¡‘~b€ÿßÓíóžXK€>æ2ßmãA›û£ª?oüzÍ_y¥ÁfšTó_ó¥ÿwÓN±Sö¹îD LÓ.š :>ÒŸÎnü%ãÏ–"›:mzÜŸ®Ò|e¦F?χÈKù°ùb»ÊЇ¡÷üéüº –Ëw"³?šÝØŽÑÁ_:y½¹Xé])r´$â[ ¤'KkCvh4['zDsøñ]ñ’Q;ñsœCn~ÌRÑù2ýž2k£•£ @ü#j‚À>Ì$3Í`ÏÁ{Žñ¿øûô«qv‚HÚ}iWÈ`½ò—^ù÷û¾%FO ö¹îü½€i©µxGzíý+.™˜&oŠtÛé?2Käà{nг Ñ+ƒŒþ{DîÉ;Xbª¿à'¦Ö5Y•¬×÷墉Fèû´Ž×Ô¿?Ô:¤cÿSþ©€&ô>õ+i#ÒÞö+ãº}õ‰hKÈ–/ŸpŒŸP-7¹Ü´èï{kÛ&úûþO7Àó@  Jù Q-¥¢ãèŸÆèl(Y¶õ‡$þ¦æ¶9)ˆÚ¸5(Œà Ä™@ÈÿºªŸj#C¯ùq^ËŸ¿öï™Ó}n;ÿŠ`èîÐ]ÑS~×B@¿´úÃ{Rþ®@¬©õæ±è ×ëzËj‘ï"“Û."—d_\Ó¿¢ ƒ‰õ÷WiçÛwÕ<*`Ž2Gù¯±×Ú«üø]ÛïFùƒÔ­{{ݳ²U߇ÃÍ»þûT:K'ÿqÊ?ˆµ¤z<4Èÿ½žûòÜDY£W§Í{Éÿ}o“ÓærÿþH›HÛèš]Bæn…§#€@A øcøåÄ H  ….@ Ð«€ÿ¥Aû¾ùW í†à>sG°Ì·Ä›€yÝ ÷ë”1;#Å?µ×ý«D?î¾l÷‡~" ¡eÂ1ÑAYò:JnLWÓÕmd{d—ß›úÛ«Æoý;yÚ•§eø¾µ’êåG› ó†û…–QnòH vå¿Wð>Üüüæ/¢ïÃVãµо/FÖû'þ¡3BÑ÷imµä­&6‹ÊBMäíž¼{†ï<–ø¿ïÇ}Ôlžï\fpiM¯êïûe¶oÉCb("z>ãOƒ½âŸ×øç9õ?%.HÄÅaÐJÌŠ~À¾¤Ó`i“B›%µü(/è C´ˆ—£D=b_TÏéŸð/üvÑ2©¤¿ÆGÍ"•õs®yè¨èµþJR!ú®üïß;'Öàs󉿢U)«ÖûW§ôœ2HtŠ¡sž?g™ßdXF›ÖÑ„ËZ×jÿ¶Ê«öç ÐÏå¾:¢‡¾ï&ךRÅoоªöª«ýeó‰©}b_¹4x·û%P.˜ü8tbèx=3&Ìì'5\8Ytªäæï´ÐIAõx¼à ô#âOÀ¾ íü€ÎÝqõÏgîÔóœžñWÏ’Z#qräÍX“áOú4´ENÐ ¥Zýˆ³Ómªl“JR ˆ ˜GÌ#þÙwdë$uz…ꊯ¶Éƒ")×§ öG­…C9Ö8ñ÷yò¬˜ËMôŠ_Τœ©þÕ„¯«~s©ÌéhON³WˆÔx¢z?‘êÍðR£‰€<Û2+*É¡¡fþ èÖÉÛ6I}ßmù&ÓŒÓÙzkç´ó—Ú&´õ§ä‘@,Á1ÙþïqÊ)OúÃþ;í«/í“"GÝr´'ï‰$µMŠÎ `èhãˆ+ÓÚ´÷gí mÓóO&›$û¹~+ÒnS Xø‡Š@áƒh f~6k·ß7fÈéCïí]h–ë<×WëCë¥?-âä Q œ€©fÞð¯ð§}ö¤?ý”áS*¶Ê”3ëý9ÐRM oß3®%@è§Ðlÿ„ky½åú7_h÷ÂÅrvXQkª¤hÞe£íO oéKòÚÌ*s‰ÿû¾©Ì¦.r€¾ïÊ,.Sô‹íœÐÿ~Š2R’}òmß«Hß×T6•£g[L}ÄèØH¥Ÿ*s¾}C¤üKåoô§ µ™v7¿ïùvX1¹X©³™iÀ›i.IÒbÖ³Þ5MüÑR¢ÅÿËI)D…ˆÿ¿›þ©ÜOÝÌ)"K^¿^Æê#ËÑ1<9‚ÀÿJñ3q ã_ï×’"gú!am ÿÄßì4?EO8ñ÷Yò­˜›Í;söèìÑ~׋¯ú~õb`·GDOÊéßM y%Œem–˜—ü÷]è¾ÐÝ~"Àôд_cóJù÷뉵H6;ü„ß®Ÿw•ílñÁ©t5÷èÓsÜÜIoééâK ”¦íªk•>²[íã¦YFí-å[75êTÉŽ¯Ê–¼Úˆ“cú1ô½ÿ—øPˆèµÃ4mêªMÞôºB†»–'5¥ ð«Àpyåןù¡àÜ<঳é쟀%ø±ý.ÓejÁU‚-•X.¢cÒS L C¿i1£Ígþï{âèÄÏø^T`úlÜ $éHzc‡Ø‰þçsè¢ÓwæN2_^åÉHA@@@b.@ ˜`v@@@_€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@€ï@@@J€ €pÙE@@@Hð@@@@ (™]D@@@ @òD ["± d“¬Õ5¦ëR¶F“'kÏÿ•„´¦ZWs¨T“Zº¹R^ÐhÝÿü¯[È ÿýæÿß*i²Kß Ù®ïHO¤,ã½ÄêXN%Iwå_únÆ;R!( €¹ 5^ƒ ð«€=Ô>n¯©Ø¦ôñe=‘¾]ŽvòP‘ê”oUé-=_Yo¯±~}züýÐGZ˜Žš»xÚ{=r¸È§õÖùñ.‘ŸëoÊùåB‘ÐjcÌiñWmj´o¯¾õì×"GÏ«U§þ»"½?ò¶–wˆ$^ê›ÐH_3RfÙ‰û~m<Ükêš—Íw"ÛÞK»o÷‘ׯyåM`¤NËš™¡7Írs§y)jJ@Š¢ €¢xÔ¨3 G¶³ŒA"ånNšSúY‘‹žnöVûå"‡|\ufí~EíVïµ8ªðïªb.ó¯´f]–3*û‘)[ž^÷”ÈO·oüeõNM\c–%œ÷»qGœ x·ÛÃ==n‡5®V¿¶&n®œÕê–Néôr¥ÎKºO+}µ}Ãê‰uüsaHoV?¶ãøõEFÝ;Ï›V]d÷3Ys3nòZóã·öÔ @ ¾HÄ÷ñ¡v €@ü ”ÖžÉ~ÓäÇd†|£§ûüC¼…ºÜßû1Ò̯¾MöZù1^‹™eNк}â­ŽôÐÚv±mí].#[L9WçîñZwêõ;2RÆ?n¶´G¿å†;®r±7+ò…ÿl;ÇÆ÷û±ŠÕßû¬þ½¡ÕMÓß«#5V’²Ñß3( €äR€Yr ÇË@@@(J$ŠÒÑ¢® € € €äR€@.áx € € €EI€@Q:ZÔ@@@\ È%/C@@@ ( (JG‹º"€ € € K¹„ãe € € €%EéhQW@@@r)@ —p¼ @@@¢$@ (-êŠ € € €@.H䎗!€ € € P”H¥£E]@@@È¥ €\Âñ2@@@Š’ €¢t´¨+ € € €¹ K8^† € € €@Q P”ŽuE@@@ —$r ÇË@@@(J$ŠÒÑ¢® € € €äR€@.áx € € €EI€@Q:ZÔ@@@\ È%/C@@@ ( ˆ—£å‰£•±.ÆK½¨ € € €@± /‡±ŠT‘íZ™ úo—F?@A@@@ Hääþ®Æ<,Ê2]K_ÓOÖkôôŸß"€‚ € € €@ÈļX…™o^°É"f˜\'{ta‰äÅzY € € €¾@" q"ði ÿÕºl5óe¥Æ m¶øé™DIÐ[  € € €û%@ €ýâË»› ¦¢ŸŽ1SÍ´è)ŽääÝÚY € € €@I 'ïó™-?JØ –We©¤i€0cÄÉÁ¡ € € €@1 јÆf—l“²ÌŒÏ~®hdžZ € € €ÅB€@áÆØ8ÿÆ`6F[L7èl{ôô?‡…{pØ: € € Pœ°p¦?Þ¿_¦£™§}ÿÌ’:ø_H'l<Ä- € € €û/@ €ý7ÌÍœ»ý̽x£©$Ø1â™é¦m¡@nhy  € € €À¾HìK%ÿï‹5ýµðÌ‘æ4™,ÍJ“&kä3ÉÖ±gå}Ø € € €@1 P¸8vŠoäó ”‘ˆÜ#}¤´¤ëO‘­[G@@(NŒGÓ˜f¹Ì“d³Öl¦2[îÕi) € € €ä‘-òr?W“  €Z²^vËíf¤ÛÙщcíöså¼@@@…û(å6ÿÌ[e£Œ5÷J ý9S¯ÿ[…{pØ: € € PœHìÑt×ôm²Ûì'˜}h¦}SÞ’×eŠ|© €°NHA@@@ O8ÅÌÆ¿½’X£þX`–{e)³Û¼#žŽ0ZÛ”—I’mð·WÌ@@@ø3¦“Å1cæ™ìTYo^’»e©vë,±gå_=X3 € € €@ ˆ€–ÝÛÝLCL’¤Ê2¯Ëû¥Ö4L nC@@Šœ €ø8d ¦®\-›ìÏf¦ôÐæÿ/ê/>ªF-@@@Šƒ €Â9Š{7î7f¬©"ëd—ÿtS/H¿ÓUöE‘#ÃëDvË|0c¤ž.^¦'ŠÃ£+[ôOWÉó OÀ<#gê©¿ì~#óØ ý–³¢óö#7êqMš’0,Ñï\w½<&qü~ }bÖ›ù"¿‘ùJšÊ+…P76‰ü#ÓÄŒ43DRZf4Û3DäÚ“ÿ[j˜®!á¥Ð“ õ‡y:Äéš´Ê‚}ò×RVÊkÂb¢œ.ÇŠ¤Í’±U$ôhh]è;­Ê™ú×ø„‚­[˽€·‹CãD¦¾±¦ÞâÚ eâ;§?¥ÇÕ|-ÊaºÞ¶ržÜ“ûõçû+¯“Z¦Hä]¯Tä;ý½j›™’¦¿WæG3Áõ®&µò½l@ ˜ ˆ2·éÇz’v8GúI ;T¯ÿ3 @|j!`šHu©£',Kì«'(ÛW§ß—ÚF_4UÖh3zÍh‡¦ÿÅJ óá]bõŸÈ·Ú…A».è¬ÃåMçš.æÒhÅ":0+¥ˆ˜sµ=Š^9ϼ#gl¶¶àÈø6çþlÿ8¦ÊÇr‘ÆŽ°ë˜ûô“~þû¿7Wé;òc}>jæ˜iÝï™>bù†Ž:!€EC€@|§ù\úÚdm0AºËÉÚà-ýx·š  €ñ. NHÌa½2©gWŸšU®Ò±ŽNñ¾±ú'ú§Ó+Rc¶¦Ðõ8š‡ÌéF;Òýæ\¿T‘ÚŸ¹zYÀ/±+þœø©ÃGe@øØ»)z|Ö²ø×*A†˜ÑÚû»Üd’™zÝÌÿúÂÑ)þGž=D@@ H€½×fb$’ƒûíbÉ”Qò¥ÔÐÿ,»ÆŽÐK9òü^¯b@@@\ p9—pûù²½2Ã,6=í‹v¶yÕ´‘iò€^ÿ·¿m·¸Ÿ[äå € € €%Z€…{øÜæ·š±2GvËX飳O/·Óµ%@„@á¶Ž € €'ZÄËÑ|ÅôM2Wþ#­ôÔÿéè€ñR7ê € € PäHî!Œu˜kè,Ú“dŠéež– övMРp [G@@Š• €Â=œ1ÿ9ÒS:É;Yþ%Md« ÕüY©) € € €ä‰@ì4OVÆJr-dFÈàè¸ÿ=¥­¤Ê màåzm¼@@@½HìRÀ‹1ÿDyË˽j—\j^”7eœ*7˹CG`ÀDÊ“@@@þL v"úgÏá±üˆù'Ê.igÇÊ|ɲÉÞ¡›´›# ÿ¶Ïš@@@Jˆ@ì´„ìnÜîfÈÜ&mäFYdÎ’ãd´<€£·ŒŠ!€ € €EM€1âãˆ%Èf¨ÌÒ³Ír9ÚŽÐÄGÕ¨ € € €@qàs|Åénع2WZÊ6ð:ÄÇ¡ € € €@q G2QFš¤¿ln–‡å{ÛA[0`|j € € ñqCò±´“4Yl0ͤŠ<$!m@A@@@ Hää~®&Q˜£íM²ÐÔ’¦vœ½S×g5 @A@@@ O0Os½’ØD»Ìb©(e˜ ÒØ.¢@®My! € € €À>¸Æ¼”¼+–H•Û¥ ³Ë âÉl9>: G§›B@@Š·§˜ñq|¥² °ŸÈ*I-@b)#9~‹+ÓÛœ¥°$tV¨¯¨Ë?šÙ:7‹h׬ MÉRŠŠ@YM£ëDº¶•m!ÿÒ9u?ö^7êòÇö#©¦;QJÿ‘`/*G“z"€@Q(%奺VüCio¾Ó¿Ã½½Ar¹.¿¦ÿ§éJ¡ (Tþ_7޺쵥kdÝÞÙöÓ.Ç%GÒŽ—NòXb%Y$ãd¶4ýõyü€ Çæe3T[`IÚÆ´Bg‰Lj:ñJ]E’·¦,IÔ/0¡z¦‘Œ×†õ£³ä±~®.Qý{»Î®"|_ù È‘—t|e×Ó"å{—¿Á{Bÿ½BÍÃí²*@ß ÔÓ¿²è‰‚Wݾ`çÎül”ô=òÅÑS©ðÛ'³TÐ$ Z|ßÛk]öµ2wfœ^qæÝgÙþ䞎:Tª’p‰>ù3ùJÊíûEÜ‹ ÷ËÓRSÏïW…K›Dÿä–}Ô›.2jÞû÷VÕè½ëm4?k‹€ó̲]·çÏÒB‰7h®ýÀ¾ï_áÍ -·7ˆt¹»ë´äT‘ .¼¨Õö§DïK|ÒÖÒj¿+ïð¹?‡š €@18^Êh[+ >É^'“2oÛ±8­‚lÿ±‘fÓO—ŠÅp‹Ô.‘ˆ“ÃeËØ4™/‘ð‘ɲVÒÿD–i£T‘ÚvH4ÆI=© PìÆë•ýÊz‚_6tŽ—!Òé³®c’›‹,¼cáweçˆÌËþéòèãÙ&[^Ô½§ y|½\{‹½J.9rÜQUÒé|R׆ɓô¸5 ]â-Õ/¢ß†ß7=µêµ¥Ÿ«ñu© 3Z¦dëßÝáéÚà=o–7T;gÕu{Ù°˜ím‘Û…sÈbHc½Jô´íd—¤H¦öùߤ½N«Èq²^/4½«Ô>©@|ˆ~Ú$ï s´È³ª.ÍyY䬲ç^¼COø×îúåýÒOk—€É];éæãCme¬Ö….ùv@þÖŠ‚&ÿÞ"ï'í6'•7V9,¬Gò¬çü¼C›ú8°ê9wj ކÞíæ8]ãQúu4öéû·6À“@r%Ð\ÿÚ–ÕWÞ$e£žÍT“7µKÀùn]±óŸ\­ší¿ €ý7ü'kˆ}õHv/šåb{’6ö×€^¿H“Í:À úˆ&üæ3$œÈOO²üÕÛíÃr¢ž/žuô€´…"§½Òùýmðñõ|WuªžP~ê}lfê•åæLÙá¿€.ùyX~·îX“ÿ1ö39P$áØ„ò€¶*mÒé®”î"GW9fZZ3=,ƒìír’¾z„ • Kqúÿ;Kî@òC ´[^Wü•v¹zFÒM±÷jÒ<¢÷ôËͱÎ&@àŸyíï³ÿ(`Ï•¹¶¿CµRZØv¨~M±¶¥Û-ö××#€-;±f_•Úg¼OâµÞÇÚ—¼û w®YôÆÂåeÓDtýùÚò:F‹ ›°<§«MÐŒ ð×¾yõ ×òBó»Húˆ1¬é„t£¡Ë—g„wêà‰_$~äµ×DÍëÞ+F£~žš_?Oóª¬@àÏl4°A³ÕeŽýQªê¹NŠœ /éL2öÏà â1¡üûmı&0!ÛËž#©²JnÓIÿ’µ5€Èa:À•Ñ—’ø½ ÷ €ù%à&¯ÅûÈ{Ãè•äjßVû1Ú%à sŽÙQKdÝ;kg—Ñ1ZvUß5>áyíÐÐ4•¯õýûëž_u+Éëu‰»Í®•“u”ÿN|¹M¤÷ñç Ý~¤§uÕOÊIÐãÖÇiZ(T¦þ‹}Ê–d7ö(h½é'ì:Œµ¬¶ÂzH¶èô¬šJþ2ôñØk{$ö)¤E#ŸÛáú‹²]›ÇÔ–jvŠ^O)­ÿý_?R@ V K›-j±£ìpÿ_޹ìØ÷ö,Ð.›;MJ~OäÓ£?jZíA=áœà½òlº˜34K—€¼>J±–_Ûq:>Ž˜TcEÇh8í”N£“ˆ{ûq]÷hSûª½Û¯QÛeh¢F??IÇäõ±`} €Àßðÿú&éßëCôS±¦&çÈ{RÉú£øå« p[X$ Kþ·Û éu£uj¢õ:kæ&ã}yCBv 6n\«_ahð[-–@°·ÚçüSÉRG–ê'7‹tÔmÃέ"‹S¶+§ƒÏ-¼qÁåå´½–‰˜ˆ ÖŠ…¢©Û¬a1ßTD¯i±WØóä mòß©éãé:‰T—¥Ýv육ÇåÄROÙ4ó¸÷lt–†utÉ(æïvâ] †~–ÓJIµ]e˜¬Ñ¿Ò/H7½'vy3Þ÷ X×@|ÞÝm/²ïÉ*[Ê^g§ÉPÛJΕ»¤ö[\K >µ@’-Yìõ×d­TUýëì7Ez-?ûßÛ»j—€‰k+ÖÑ©SoM­—Ð_¿ïT0Õå[µ¢KÀþ½abMþ­M•Ž"•6Tº62X›ü?rNŸíš¯Þ¨ÆÙ÷)óïFs¹n*]G›ÖA) €…+ ­±Öù³ØÆ²T~’ÉöýTüIZÉ÷ÑzÑ:«pOÐϱëÀæýüØ/r­TÔž2Gj“Ó:6Y~±m¢™³µšÈ„@ ÐÜhÿöMï->ùãf5»7U›üŸrééÓ’_ùìÁOÞ¯ö’~áéb›ˆ6E7íÍ):ä‘ÞÁ¹9vv²ýN§s¯yR>Wçõ§­M~VÝoÖaúÚ—¼¦·®¹½Bêit]r³-^ƒ w:RKËh`­/5dŒt´§I%Ñás£EÛpQ S€…©ÿÿÛ6¶“m¦PeɃ¶¼*[55óž kšµÑ>¥ÿÿ\~B(Dû„ý·žlJ©ûK –^Ú% ]·Gvè•èÅ_®³È’«Ÿ]îL=õŒ'OiE91ýgGËͨ`ûØžrÈá M.KÏVçë»ÛQU݇–:Öë Mþ{ÿ–KuÕ z¥É½æŸmˆg#€ä‹@)|Õïñÿ™<*Ú-ö!™¦ç4ãD?µˆ2Þ €Â³ÿß-9]¿è\£_bJËL{¦”QKMîcÆø_)~F [ ÑÚHO@Ÿó÷»Ô¼¦æÈìÚ4}à9ë¶UyáàgW×!²çÁTIèM$ÊD}]|¶?.±&ÿelHÚé7ÄfïŽ|¨®CÏ^´ýunRóßÙêê=åu7:£Îœ“*ÿxu<‚ PHžž¿è,:íß{´¶ËGÚ`{´6IÍBª›u$âã­²Wëø˜;eµ}L¯g”ÖÁ2ŽÑkF¥£×Ž˜ >޵@~+°[vûwØåv¾?K@³ ÍÙs ÈÉóN9Àoª>ú¨ÏÞ­6TÙ¾!u4ÐÊœ¼â·«a)°?ÚéÚDTÌ:­âÏ"Ï<õŠäGÔµO‹ÏR?RÇÛí³Æ¿z´[ÚK}´¬à­ƒį€?Ü_ئi«æÉ²Ø.Ð.ÍÕõž£õl ®3¿Ð†+p(°[Fýg2!±ö,íëø¤N"¥×‘tJ@À_ô)ýïO+EAˆ7è—û°½[¯uHÒ’žõ9£_vlÒ.²èÍòß‹,ë·ô²Ú z¾ªSöp'òö|ÛM[ÂÉa]_”¡ ”nݺ°CÇÿOê–ô‘÷ ^ùäÝm®Ò×&*åÚ½ÖÁ" €@ܘ$=©÷[ŒÕ„îAv¨¼&#ô<ç"WÁ]A´3ݲŽêB)H©ýÇÛ Ùl_í+³Âö–Ǥ¿|j+K{‚Îà7oLùãò €@¡ D?K½¼¢WükÖ>¨lÖëÚtýžsîÚª¼øôsóë~*’vñž¦ Ú´Ýì4{d’Ö¹¤w ˆ5ù?È(mD*4¯08RFgWXxÖ¡Û¶¨ãìZd…õÄÿo€yE½î•ý\¤ €Ĺ€½Kþ4€—ÊÑ:,îû¨dëôæ¿Èx½¯º¸€Ìr»k ç{U|ªG >Že¢7ÀÎ×nãí2Ùeo¶tŒ2þ|ÇÚp”ñqŒ¨ ðçÖ¥ko±ÛÌá"Í<¾bj3‘›O.•ü–È_|þmµÇõïz)íãî7u?Î4×^ì%¶Ø9v¶ï Wóç‹^êðØÉ_¤èg^‹Ò-GìÖD‰½AgÖ¦þ: n²hB€&ÿ%ö­ÂŽ#€@Qh¥íâ4`wɧÒ@×9>пá;Ýnøíœý‰àPà·$ œ|Ÿ,y9¼Egè%_ÙŽrµ·Vûÿ/•õú\ºìŒ;@80~ì=öý.IÃ’Þñ®Õ¦ì¯õ8o‡6p\rïâãË×YÑÙeuP;côé:¯}‰ëýkòßO‡¼UŸCû6r´üàM—ÊrªöÿO‘RúŒîY@â'PÊu ¸I›Æët€õV|M¦^'é1¨WÕ­ú÷ø¯Î©û¤v èÙ%ÔLŸ™/£)v—€X“ÿ^ö ÿK]™~eGxoê‰ÿé½ÊnÕ– õÞ=xBÆ`=ñ¯ã•ÖO4L›_ä¢âwøØ#@½ÊêçZ%=óé Ýä›ð¥á-á4yÄNsÏ:ÊÅ,7»kà ù%@ ¿d÷½^—¾ìéSb˱Aeo¸]mëF:Û]RVg¨)ûÖä^@ 8 xÚ% ƒ~ac_õgI>ñÈ“Ö&ë ÿ³L(ÿ‚È„—¿ý²êºÃ/èu•Åš¨+õ sX»NOèµÉ¿ Ë­‰´îÔf{Šöõo=ô¤ã’u,Û@>žZßNÒQü´wHJE?×ôG  €@ñ°÷꧃Ÿ¸ÚV°‡†ï 7Ë`wxþeÍ‹e¦ÿI-±¹eB ( h·™X“–Xíõ-úUÎ/ÞÍÞO‘ïåýìVòœ­-š³/Ê]þ QÚ¼Òµˆ>‘@â*ð½ø}èË\Rv‘Î #=FùÊÖIÚ%àç¥m˯Y7díà2·E»L*”. Ú´Óoòƒw™?¢s½ïþ"s‚Ösb¯–[éà—]Ù¤Ÿh§xßMdÈ=2^Ö׃Å~!€ì-`.²÷û ¯7@–漞Õ!³£mìù)a-VSÅÑRk¯è ù-@ ¿…»þX`Wp·žÞ¥±‹÷{ïG^”QÙcìBý”¦÷N·ßG[„%Ç=‡€ Pœük$Z¼GÊ…Ú§þØú³3tÒØî‘3‡n/òÚ¢¡êêüÊYeÕ «‰€·Í(ñÓÉ~—€ü,±1 .³çëpµRúž2ã½Eºeõ|i«Žå\xýôŒÓµ×GzDgzö/쓟bÝ €q)PÞÜ Ý™Å{ÈûÞ^•=-óÂôµÞ*¯š««~RøE‡>ŠŽC)H©ýÿÛJp?ú9µØgƒ(·DF²íÚì-ò¥ýÖ¶ÓŸ«kšl}ÔŸ)“6މ€”•ÚÄþdÝϲ\~isxÛ£vÞ¥]ž™ß­Ât‘I&n9ð2}|°yZ–h"à ©%±•ùÀc7ÉFIÒ¢õöRi#ÒòÇV—¦l9éývçïl¤l ×HsËeµ´ÖH“ÿ|8 ¬(¥t€ôóbwtÍz=½JÚI¶72¨¹9ØíÁ{.Æ.ºEB~ Èoáß®?öÅØ)½ëc?ˆ$†ïôr²ÇÉhyS’ìN¹JÇT®mÎÐÕdäóµßÖ”%@ˆ]qï`[‹ö©/7ºÜ¢ˆÆžëzŸ¶eŠÈÊ+¦—Óòõ'¬»£ÌÑ.cå­rDSƱO™¼ØƒD×äÿfïßr»HŒº—g69ó‡³&lyGëuV¹÷#­ôJOkï(SG7è×û—¼Ø0ë@(’I:†Yý\¨ëu´÷dß34µŸ7Ó{XÊH{M dº}ú¸Hî[1¨4 €‚9ˆ±Q-÷ìµ¹ØW´Ø/B™ÈÎÈy-ë>™*ŸIÄ-×ë0€e´Á€?÷sl-{­„E@b,à^?{¶¹_/´?{Èéóµé}ïž³¶y½Î°ûë–É®˜]3t”&†˜×´Õ€~óÚÏ´±Ñy-ö?¶¯üK›ü‡KŸëéçP·Ž=_Ù:Wë±âêé#t3ר u@BÑ ŠvM  €”p$m/VV?nò–Ë3ٯû/-rƒS¹ÅÅØlhÑÏš.V »O `¸Ý~‰õu‰½Ñc-ÞuÕ¸ \7ÜßšìUöyû¹½É3f£I’c5°MŸáw  €”L5vQôÊ~†Y zÅÿ¤KÛ-ßùµv øhþê )"SŽŸÔôÀ“40ÈlÕfø"Õôßþt Ø.[£Mþµýk6Ç›VÍSôÊÛÊí?ØÙY×ßL’uâZ‘±ö^û¨Fÿ“-ö©¦?R@J¨À&ýô8Pu¼t»5ë¦]{’×y{ß9XE&Z’]Œ]u‹„ü _²û^¯?¬Ÿ_ÜO²*X´#ƒ()9s²ï²9Y‰:Àóöo‚\'ïšÖÒ]{^’pH@ „ D“Ƕ•=ÊO”ûªü‚ðm:úþá½Çlé¯]ú¯˜WþC‘÷l¸¶ôz>>,ô±<¢RáØ%À5ù÷z×k'4©µ¡¶Íê§]–÷.½e§n÷èò;üízWyGÿÄßè¿q%ôˆ°Û €¿8IûWÓÆËe"íì“Y5¥¦ýIVyï»'vñ S]$à ò;Èoáß®ß]ù·ãƒ»í!îaýª-ÉY{2gÛÍéìõöVIÌ6›B¥¥¼>¶Ö.g§D@J¶@ôK’wšv Ðð†MµN×é–ÎHèámyLä[^û¸®.çT̾>t¤žŸ?až•E öWÓÉú'òþÓn·7È"IKßìªëýºÇ³[ÞÒí<×(=½žøo·—˜AúÄŸe®?Í@¨@‚h³e-£µ#šv ‹4×”Òý6iZ"ÏÑöqQ?¡¢å2Ýy’["ä› €|£Ý犃_ ‘oÜ£¹8ÝÅÚéY{šz;ÒVÈ}r…\þÜ$åì]ú¨ß4Û=‹€ €À;/zÊþˆÙ ÇJ»':ÔÙ±M»L]0°â)"ßÛ)¶Š^o1Éfg´K@e’)çOØRd§÷'6¢íøÏiÑíøWv©ëÍèXc‡FúïÛUã϶¦èú£ŸK4ùÿPBJ˜@9½l©§ñv í§ã—Ý}uö<Û?m·ß@K¬´»ªÝÌ¢ÅúmÕüòJ\Á-ò^€@Þ›þ5ÆÜ]—û{Ñ)©wïìÕMK°gØël‡ÈZɱw››ý™ eÖ~õåü;µâ9 €EG Ö¦ì0= /e…IáÚT¿JïΛ&Ьj¶âär÷Šl~xSfi½?ôLh¸<¬»·w—€X“ÿÁÞ@Ѧý®õFÖT]ÏãgÕÞ4J¤ÂóN ¿®WþOð3Á×¶h¡è@QS@(£˜ëåN{›=Á®Š¼”Ó,k‘×(-húßÅjj9Zú¸ØÈÅAÔnA‰µ p‹„¼ˆˆæõzYߟ Äú¸ìvO{ÑÅÔ”ç¶/ö>NK”ù¶‹\>GúËWRÚÔ~ïžC@@àÿÜ'ŠöÉ¿Æ< Ò¨â¡ÓhÓý†ÝkoyWä­&#½zgh—€{rú›¾Ú"à~ó°,ûÿ—Û{ìi¢Mþ‡&ͳíEº^Ý}ۖѺžÃý>ýX=ñoæ-0þL4³íL^g  €û(mö[’ÉÝörIß“u}æ¶~Ú6¹&úìÏ‚×ØK]Ôùe¢e°‹I.ÆÎ“Ü"!¯Häµè?[_l|f7|’}-夣"7dÞ`—è|Ë/eÕ1•ä Ù §ÿÓdmt*À¶~ž PR~¶û]ÌV³Ëê§JûCNî¾ã9ípÇ‚Ë*ŽùaÒ÷ë«ÔÒÇw™ÝÑÁÝW,»]¯ºô9îþæmStÁöGu<{ǃú¼…úÙ£Wþí\[ÖtQÄRú9´«¤`²Ÿ €ÿX ‚6ë׆þöÛQfDFd~œñ¤œkò?Ü­O‡“–Ó]ŒðÏr˱YÜ"!¯Häµèß[_,Ãõvðtë7ÊôËŒŒŒôYöðÚÈo‰­‘þvbs©,-åA¨=jü+0@ö-í cýUmú_aN…7snѦüÕ{µi…Èê9«N/§Ÿú[Fl~¼ôMnúµ«FéšÉYúuëÌÉg­Ù4S¤âÙÃ97ê•ÿ6:Êÿ}ú<]¡=aßä^@~8\ÊE§½O.±MÂ7§¿’ºÒ››–¡¬ÿ]Û3ëšü‹;’L÷ú9.rÆã ò+È/Ù}¯7âîÖ¯b~±®)Œœ,Ë/{nLíå]sdndž=yÏÓò˜L2ÿÖg~¬ÏØãžE@@à/"'èhý}E×øÛ´"]jw;t‹~Ýzç½7¦Ôª/N— ÿs¥ËÐn ¶¼¡Ï›Ù8)í§y§½ÊøO—©þ<Î@þ–À1R6šXlÏ…ápʰä©Þ{N—VÑWÇ®üë¨4~‰]µË¢ÃØR B€@A(ÿÿ6¶?þ:†^›ñ‹Õ^šÑøSòÛÛzå\>=ü˜ŒÛu™Ô”z²Qó›ÓìžÅ- €)0ËN3z…ß”7 öy‘›N¾mû\‘#ç÷¨äªý0õÊ~Ǧ§doŸ¯ÏmúXmúo´½Œ?ê¿ÿ¹³þ/·Â@r¦Œ~v¤Úm21«ËÖ—7¥E¾ÝýPð }ÙEm&Zþë¢ßBÀ/ÑQÏ‚¹ÍOù©ûûuÿàîjàâw.ö ¢]²õí‹ÂÏd¿>+§W{×0©(©æVy:úxK÷l €% ó1ûM÷mEkD¿~Ux¥Rç½ÒÁ¨‹_[w²¾øL½þ_Gï¿âå9ÚÀn±kŒ6ý/x]tõ|îü•2#€8»¬Šm­#Ý#µìO©CwÝœ|OäžÌ‡å}ÂYÚ®9(~»f¿è3£å $@ € ÝfôÚK´¸A/l¬EÀRwÿ¸õ³×œé”Ý)§|öJiœ²ZG\~ñ×Ù0õ @$àé)½»Â›o:ŠÔ¯Ú -}œÞQ]Ç–YíNü;ërDÿi‹ýïßR@øgê'Km¶_xž}.åö]×íÌôVæ¬Ä~íbl,´¾nåý\Œ~V¹Ÿ ù(@ q÷±êØ—ª­î1˜)ZV¹¨ .ýn‘Ý3³Š7gÇ—öy#áp½k™Ü"Ú¤Fr$[d¢ € ð÷b'ô:˜Ÿÿ[ÏV6Ýÿç¥Ùú¹â¾Äž÷?ñ# €[ÀO”Ó3™»²¿¶v°uÅÆÛ"—gùŸ8~kæëÜz‚øë`€=ÜýW»HÈgù ü« èÖ5‰±£‚çÛÃÒ·¤]j/Û±Ýo©½8¼ÝTÓF5‡%V“í²E¯ÑP@È€KüúâR~o  €û)P[Gû¯"’}lö©v׎ «Þ[:<üUÖiâ'ì5ÁÚmìü³¿[~Ômuú~n—ÿMØø›Oçiy$à2_:sPÞ ‚õgZöË »SS¾õ~ضýmw{ov91g˜ÎšX%Kµ@@(|D‰žSÚ“í¹:~™d^˜qµ½uÇ©Y 3Ø-Ùµ\]Ëg;1XÖhƒòŒ‹Ÿ»HÈgù ¼×êc'þ‚ûmlŒ²n¹†‹l²ñÃÈy[÷ò¾—䬊¦Ah°”×65?ÙÚX“‚ € €¾@Umú¯g9öX©-k"›ÓìžsmÿíîÄÞÖ *hq½ÐŶ.ê¨Ñ»0ê ù%@ ¿d÷½^×{ߎv7 ¢Mq16Ì_û_Þ\~d8²ã:¯[ä9=mBbËÄÿÚ¡U>µ´©fæ¾Wν € € €@ T7E§Ž)c³žÚuÒŽÞ‘“6ß ux[n’A]ì.ÞDìâÿŽJãî"ä§ €üÔýýº·¸»Æ¸˜åâåAôg`ö‹í¹µÂ¦Ë÷¥÷͹ ç8¯÷¶·“–®º´nððž p‹ € €ª@e©*:¶¿ýز/dÜøüºk#ƒ·œ#ÿökeuӡͣŞïâ%A”ë]Œ –î ù%@ ¿dÿ|½îÄ?6ú¥u(¼Ì¦¬k¸ê±H“ŒMÙ£²Î°³6ÿT¾n…³¤¼[)cü¹."€ € €@˜RKôl&òNøùr÷â5K— ¯Ûù‹nüUMì*a—¸Ê4u±º»Š[þ¯‹„| ÏÀ°úØD~KÝãßÑ6rñ”U÷-mNËx?£GÚ£öëõcªì¬:KÖ裉’ý5ò˜ °â@@ M ¾42Ú“?;5+Á6ßXmcÕ_ž?œvœÖçU©e[õòbcŸ½,Ûû\}‡¹¸ÕEB> Ègà?Xýªà~{–‹k\\ëâGA ?µûõ]/x•×'”h3m-/ÁL‘¥u(";e›xÁ³¸E@@ I ±m§£ÿ—ʘ御ϲ«\œósú¶ .öc-[¸:Žt‘áÍDA%ýÛí¸>0:Wf´Ø§\ü.ˆÞKA”ö[ßÞx~äÀõÇZ¾é´ÄÒ×$\™PÛt¯ v‰Çt€N‰€ € €+PFþkÏ}ÛÆÞ&:ÒÙž9©¯ÙÁë›îÊI^k¿Îv‘P@$ z¯ÍÄF¹ÜÜoŸv1ìâtÛ¬¬¶ø°œ[SnË~;ól¯Ë†Ì¤·“ú‡Ö:ÓµÒ2x· € € €@ ø×îuô¯T¤¿})íÕ•9‹§†{­©ìêà.xzîß~Üïwˆ–‰.~ê"¡€Hô¾7cŸu÷ÇFÁ|%Xö® ¢}xáè¹·çÌÙshzÖž±vÉê×*L«x©lð»ÎØ–âÆÔtë € € €"`•K¥œþ÷tV#éºù?KÖÍ».çžmËdŽÔ‘›´»r´Ø‡\lï*›ý·œî"¡€Hô^›‰rùnp¿}ÎEÍ¡ùźû½»SˤDìã™ev½´óïá•k«yÐä„_쩨§ÿµMI• Ô¸E@@h¢ƒ“k ½NÚõvǪ뗼ñóÙá{R{[·oÑëã–cÓ ß,Ë(\$ €‚þƒÍÄ2^›Üãn0@Ïà¹y1½×^³jTdÐÒä†]˜Ø}OÙС‰I׊" ìlü]îF@@¼¨ —"ýÁÿzÙôDq yÓ- X€@ƒïµ9—³®ï¿­ ¶m‡º:¸h¿vËŸºH(` þ›[Üo{»°F°y1ˆÞò›LjÝbGÃ]’õæþüBÙ囄îk|²$JiP[Ý0)``Å- € €ä•€9QN¢ÖE¢° €Â’ÿív·‹±>26¶ûEz?x<òY½SS¿“ýæ-gë{FÙççS½j­&³ŽÈ:I²~WËœ· € € [sšt7zå?»|æQrôú]Sk}}Pv™}%:¼Ÿ=8XoĵXŽL –½;ƒh¿tÛ}ÏÅ  …$@ àÿ`³‹‚ûcÓeüÚà»àþHì¬ç–¶þãÝž6smÍ•_„{M?­ê5#¥&ŸvŠ©gȉ¥Æëp‚«é ¨q‹ € €ÿP Q‡ü3úš4É´ÍEvžº½[äÁYu&]9.-«ó–ã¤>Šœ¬5òr=7x¹,ÛK\¬D¹ÊEB! ($ø?ج»Â;u·wÏóú1ò³‹n^Íȋӎúvjöás«¹ ùªÄ6¾Pæù²]Í7õže_bV€?Pæn@@øsÃÌ¿¢£þß9ÌŽÉè¾¢ÌÂwÃÞm3Û¤·’PÖiÁ‹#M]ÜÄXÀ‹ú¿Åmäc …,@ À^›ß,[: -Ös±n#k‚vÓjx¯Nl;¦LöÂM5Îθ¼b™Ö3ß©½çàôÐðú?ê/k)ÉÑgçè?¼Š[@@@àO\WbÓS.1:¹_F÷´mÍÏŒÿüó[³o_prðZ/=ˆ7Êä8wÿŽ ÚÔ ÊG.~î"¡üF”øx4¨RHGÔôKB½Ñ’T#ˆek±Â­nù¾ãžÚ^¾Â©:\Öuy©U>Z’ØÕt._GæÙ£‰€à‰Ü"€ € €,PQˆ6ýÿQ¦è“­è¾ø©ðäW‡^]¯çôÔʯ¸+ÿ{†+H»:ˆémƒ˜utÃèņ'?!X¦²s(´@ €B£ÿÓ }ºÞ;#xYÄ—„çË^¯ ÚAüuº¿›Ü2ƒÿ9ˆÂœöØ÷öÝ•~Ó?ZBþ¸þZJ¹ÌZ飂år®OMù/ƒåò_<[qT¥ 9—-kšxÜÁ‰‰7M–¯ä{S+ôµl“Íâ:Ïå@@p! ù?™ÛÍ`)/²õÊM½ã¿špÛª‹¿ImrMÏ­ÍòÜ93xvÚ.bV÷ æ”b¤g­PÖËܶ- ûì{û[ÝÝîÊ¿<,{}ƒ› ¼3X»Ñ4ÃLÿ×”–· € €”Ø•ÿõÊ9‘´õ©_Ê!ËæþüÝñY'-R‚Û¤BÎÃEŽëÓŸÓ?XŽÜD¯vm´€þ\1XÖ™Ç(q-@ ®ϯ•Kw?=D›góâ`9¢¿º~ WbN5¯ÚùÓ¶å¶oúESú|uxvxôǽ&^¶¢ô +ݼLg¹«Fûž}5:&³dÜ"€ € PœHcÂ?¯¶—.;µ—¥/H‹œ0ºÕ¤j_Ö WØØ&Øõ°5,{¦[¾ÖÅïƒè=D»ØÅ+ƒ(±¹¢w=×IDATn‘o$âíˆüy}&ë”~ÑâÄÈlÛ1¼;ˆ9n>Îðƒ£‡ÖÌZ°8­ÕÉw'Ö¿®þ§‡H8ò‚qRZ[$IgÙ#©Ì¨q‹ € €@q0ט;¤‚È®“/°«ç_ýáäádŽýn…Œ‘ƒ¤EÎùÁ~ç¼åbNñÿã‚å_ýscÈkÁýÜÆ» €x?B¿­Ÿ…S> î¶®€·&X?ÄXW€ìK‚夵ikR§Ê±™ç}sâ›ætø¢ÌÅŸ]W=Ô¶Í¢²ß”ki¾<¸³}Úö¿-2n@@(NÇ™6~ŸÿÈ‘‘ívVÆ„ù+fÎ ¿óéí³Ïœ:)Òbë—Á®†ÿÄìÝrì‚bß`9R3ˆösŸ¢œî"!ÎHÄùúƒê½éî'ˆž›.Ð;0Xÿ;ˆ9®INöÁÁrRóÚx1û‡ç·~âäf‰/~xÓ©ÍÒžºú&SÑ4’Ä„ge½¬¡%@ Å- € €E^ QJùû`ZH{s€Èö×·|bü_{çgE‘½íª¾aî C”œEQ$¨`À„€® ¢Q˜Ö#ºê‚¢‚qQ ˆ*IP@$) 0HÎ L¸©ë«¾ç­Ùoý+²ëºÞÚßöË©ª®î~îØUu*ôô¹o<Ô¿U|Ç´ò6iŠ]Jœ–çLÔM¢Ÿ‘ÄçüJvýo%éfƒ¨zê–,äì­èØ[™ÝßWž$›GE5:þi,Hc€$véL`€D¡yÜ\¤ŠÃkF;hMâÒO?º-«ßßbÞ ÓËÝPa—ö›*ó ¹*ó@l²ûÛ`* À^IÀmöw™îe—üªD½xÿ§MfÊÆ±Í’Ÿ¼[?o̲'ü«vü ÷žt·§ØN‰O,šî j¿$– nO2…þˆÄò¸÷ `ïÿvw‡ƒ$Ñ4‚^"šÎMMMâ?ìDe±#7Ìœ1¥FjΆaß|÷å!©Öïdµy«Ãâðëõ†Ÿ´×-sPÍ(•²¹¹$@ñH$@$@$@$@ûŠºjf³¿ùþ=f›9$oÔ²§ü+Æí^{àíñ ¾µb÷KaÿÄry´ä­Ð‡EÓ/‰úÎ`çd¾ ÀÏýÇ>#tì3?Õ/Þè*‰u3Ìýb§'CÛ‰&±$ témˆ|ÍRôäÓñ2_mlpB£¡ÆŸÅj½tÈãºìyµ«xvª°zÚ·sI€Ðâ‘H€H€H€H€özÀÓ÷«®*¦ÔÎc¶ßm6|7þµ/N|4ê ¢xÁ=jx1:ö tìK幈¦fŠ¦ÛŠ·Ù9b+ç€IÙWè}åFyŸ»%€5þºœäòàÍ;«©hl®h©§¡ØÜ#{ÎY7_Ô#Ò£ÁÖîß6>úðÃCrO)}ž~÷ßô1=U"“›+G    Øû¸%¼íõÁªÿt›ä}jÁNóy·±Ï¦Þ}âʧºß1£xûÄQrãEèÐ|'vA>âáˆ×;‰™þT±Íg¢j ”²`§nûÁ~ãv—t=BX£GÏ9rúK¾œ<ÑÜÒ¢±¯î?eÀŽXƒ37ð´ž¡÷þ:*tpx–n•³F}n>æ’¡Ä# ìu*¨Jvù®RSíbÞ|óÞÊÆK‡ø›GžpשÝóâ¶í‘-›ÕùKä¾ ß-X{­hIÌHcO1ÿvIW-¡îëd0)û .ØW~©=»Oü‡ª^”ìþç¢i|Ç3õªØ‰“DÃCDãvýOB³_lóèêxÝÏÏ®¹©ÞÂìc][g^ýþºüysU=UYë¦j›Ú$yy$    øÓ ¸)ÿ7ëGU¶R;nݦTýïʼ=lP›d£‘/notü ’ûLœ-¿6¦ò'ñi|E̯&f3kþÁcŸÎØgºÝÞø½’j;왺A4Ü[4ëÑìbÑœ÷EK•AüÓjwì~¤î‚kÞÓ)Úûþev–¬ß8"×1;¾iæ—™{™šš#÷”¨ ݵӂÄ×ÄÜ×Ãüc%Þ"ªúBÙñˆ}]èØ×Á_¾7UçNI6QQ£öéÇÄNÖ¿)ª.†ç/tó cŸø2ÑÖÍ5ß«÷‘WzÄÐ#cǬó6^SÆë:EWæ›™æs|5”Ÿ t<’ ÀI ´*¬õ×G¨êö«]Ö÷^s´8¥ç‹±ÇF$^ÿ°jñ—E#ÔB·–?¾Kn¥¸ªhü!Ñ©"±ý× £EÍxQu7”²Ÿ `?ù!å1&I¼ í*š(šzE4‰ÿà9b¿'Ú˜—­Æz;vì{[|ݘ«ï_3ðªX·º‡Özåà¨%g-WqUWEu=µQ­ÁçíëˆH€H€H€H€Hà¿J ¤BAyúvÝ7˜òŸÿîöºªí¢ßiòò†drèËj|?Ú_¸õ*¹fköãøÌ_Üž„6Lbóðôç™håÇE –+ì ±<î?ØYÛ~ËÝ=IIt?·~CìPKÑ(–d¡ãŸÓOâKÍyD4öJëDÛ¾¡ú5¿¼aÝïE nÔ¦ÒkºrËíæ55 ³%H17V<’ À€[ë§zRÙy½Åí‹7Ϭß8vʈ¥©OÞi§ü×LÞ?³‚\)^ Zø•hÁ‘°×‹ÿ šh&š:^ÔG~“%¶Â×Ä`Qö®G¸ß<d·àÉÓGI.»†g‰=A4VY4Ÿ)5vѬO/øôªKí»ðÔžó"?ܵ"÷¤Ò'ëaõš™>æÚÌç}…år$@$@$@$@$@ÿ´§õeºw0âŸ:$y¿ùvç ?¿/½yà¸G¶ßÔ6qθv&ê?ªÖ£ý^t\¡à<ÑBìPTMìø•¢©Dý^P|5L]!¶‚#e¿!@À~óSîу`Š¿Â®ÿÞùr–÷¼hvvûÌþ‡Äç í+š5¦×ãölh]ýôkι(<úÖ±“³ïPW^lú™;±I ÿÆ$@$@$@$@$ðÛÜ&mô™Á¤_§_T[â 5§ÐŸ7ìù‡ªßP&¾kÄõ;‡ïh«ºº~z>Õ]¸T.P8оñ1b'«ˆ¦Ë‹šK¡"Jå¹P÷OÜ`ÿü]í©Üî=%ƒÁ ¿¾ØiìÄ&!Þ“ïí‚¶ Á“èúÂWWOžþõƒ¥.×F/rRëäi7y§__¹9ú >»\)ó¼éc÷ Pv‡R~-@àñH$@$@$@$@ÿ—€ëø7Ö-‚–³Ùä/Rùéóž\:Á?ëãÞÏ^wß”DÅ÷’;»ìxC=Q„Ž|kü‹Ñn/^)Ç1—üTìòùn“ðFoŽU#¡”ýœGg÷óø7Ï- À¿·Hò‡îž#šõ7Ñœ¡C׊ÆnÏê[§:f—¿¯ósM¢:­=úÖVG{{Ìõ §uR«¡æ¹ÌÒ:$@$@$@$@$pÿzê°LÇÿuõˆŠ›§Ö>“7Á÷Ùò§Ûß½*qü‹?,j>g¥ÉÝŒÏùÅ‹^akÑ´ë‹®»xƒh{¸Ïü¥á0HWhï+7P(§ñ¸ß `¿ýi÷èÁÜ’€Q’[cä?ÔBìÐ4Ñ(òÅŒØ9= —C'ˆf½].T¡X-ÊmwWßg«EWuÖGŒl>ÂkÞµAhaøQÝ û%ó¶y1óÙ@:$@$@$@$@&×ñ¯¥êeæÊ.R_Û%´e6D×ÌñWþáÀ»Z™9ð‡o~ü²¿ßsý7)Ž‘þ"Lí/|Kâ [ŠaMâ1±“E},õõ¯N”xµJ9@Ðp€üпñ˜X  ¦J>ï&(Öü‡±6(ëd‰ÕÍÆf!¥àY̾Jâ³®¯xF•5ÊÏ5wæÚè¶ ûö÷¦ž÷ÜÅC÷†¶ªR±sÌóB‹G    ˆÀÏ;þj›ýŽÖu›.YwŸIOûáÅc¹#yÄó3¾~{RC¿ËšÊB&‘ÿBìÕUˆ%E§JzÑ ¢ñ²¢É#DÓÛEÍÝP×î+6:´_|÷Ï{¦$k¼(4<ƒ¡|‰|+ÅÚ¡X+±s>‚b¯€ì3ÄÎú¾Ê¤š}Hé–·}²zÄtùâ°ùG.ÖS.Ì }î ëg?`Þ0¹4@hñH$@$@$@$°pÿ`ªÐ ›«f›¤ª¶iÞº æÇi½^~¶_—ÔM/l›ÿ´Ð³zH"Z„}!¾ÚUx0âë‰ÆçŠ&ÑŽO¿"¶ލA;žký…Ç{¤àÀýíw÷äølˆÞ)™¼ñ¢!¼h"x±D‡K|öÍPL1ÊY ;!šõNÅ5U§©ïK½u{Ï~u£'t>²Ñ#Í×k/‰†Ï oÐÕr¶ÚÍÎÌЙסœÆ# ìë\Ç¿‰n™ié>dº+mÎ_ÿüê{7åðÁ§=þI²ã óõôI—ûC×Úþ!ùzFTÑe¢…Íac ®#ùÅÏK|ò:ÑÔ›¢þVQƒö¼ê$6×úƒÃ+t°?ý=ø½’KWõfˆ†n`ÍPÖ6±³±{h6^@9#?]4Ú¬üͨ¼œ=≵‘œŽ-Ž\{ÌÞS—]agT,s›yÖÜ•q¸¥œÈ# ì[|ågn¸îÙÜo§?GíL_½®êªA¦åÄ›ŽìÛ95{È’9L?Íï»ÁMÝ_&Y|­há'¢EÏAѱ/þ»ØÉ6¢),ðÛÇfê±Õf(å'@ÀþðŽ¿z[òélQ¯‚hÉÈqbg¥EcψæÜ*šXöMbGç\šÛDu‹Uº)ôð¶póÓ&»îä®Þa=.ÈZ;HŸU1m17f–ÄU±œÃ# ìÜ@VW}“ +å¯M?dòãëW^¿¤Œùôã>ÏÏ{¨0õöðüÅæÕ0omýLž(±Z´ZÔUì—´‘hKnSåÄö?‚Âa ê‹­VB)$!@ÿö„@EdzKÔë-%,½C4 Kb®ã¡Ägc AömÈ·$ÔA•Šz]ýû. -nÕû”™š~Õˆœ&¹ ݽNióªÝ# øöÀfµ.£\" èx$   Ø»x*ܾ]?LõOíJžjVìzlq§y…澑  }``júû³W·b¾ù>ÿF¹ùdL´8.Z„‘ú¢ÇacImüc±èð'±‰Ÿ½Ì÷’nª‹r­?8P~F€€Ÿ¡¹[èÀ«9’Ë«m/ÆT£¦ •8®’ôìs¡å¡D£“ÔËê]U*òQ—Âkæ…N8üâŽÞeáPÍ«®(ߨâêoM7©Cu+»4à35ÇLƒ#À“sy$    ?€é/£2m[}·þ[à(¾°(­ælX?kú”¦~µ7ÞX£oŸÔÄIãóŸÝ–§za„?ÑNî¸ø|Ñ"¬ý/BG¿øa¤Ÿ-š(-šÚ$š>LÔLÖUïA)$ð‹èøE,Œü ‘>BÔƒcÀÍ cÉ@¤–¤—8zŠ Aö±c‡"ßA¢á¡Çç±Ô«Xã´n§Ýry¨ðŠîÕŽ­½IGÛtð&{‡©Ê‘QæeóTf‰€Ê¸ä4I€H€H€H€Hà&`°¶¿‘n–ÙÔ¯¶ª¦²Õg;oÞöµy}q›ñË?8Òõê°×"OK™ó­ÿ¡ß^­O®•ÛJ,-úF´øØhO¡}Çž[‰BIO‰¨ôù‡ÁÀšÁŒ\õ>2PH`·èØ-&þ¼xôrɧ#Àuä±)`¤¶¤gáÅË;g6^„±ŽÈWY4RéàÎ Qñ²Ç^óîÝ“ÂÿÒîð›>¬Ûw^í—õ¡>¦Üó˜¹I%mî|µK„$@$@$@$@,EÕ=ôAÇß¿Ñohv$W®¯³z†ê3õ“w4$]÷ÍyŸ-|¿¡íÊEr©§EŠ7-jÅ€Yñ_ÅŽc€,ÑRì”l$¨Ò/Šm¿ &.Ê©þà@ÙCtì!(fÛ-L]Òë%—®(êaÁð;bGª‰F¯Í„ÂÙ=ö9¢Y˜ ™Û”sžº&kÉUÇܾ3tαߟثCSo~×ks»•¥.¯¿Ævþóí&+W©¯Í¤Ì¹Ü+@òH$@$@$@$ðŸpSü+ª*AúNýt0Å?qoüZÚ~ß§,8ܼ=jòà·›•î7úÉ/[ÔØ,ßþ£\,í:ô‰]ŒŽ~ÅÏ!íßb,±Mbí*؈ô@Q;è• ¦µ¨B{Zí‚M!="@Àab¦=$àK%¿Þ"êaS/ºH‰Âƒ{LìXÑlì^ƒç3 3¢7« U ÝÛöéónÕ‹ë\rþ=Þ uìÒ¿zN‘zK›ÃC߆ÎV¹±.¦Ÿ¹9³D /E:-$@$@$@$@{D@wÐ]2Ÿïëo²«NŸËnïc§ø_ñÅêqqóú[‡¿Þõ™;Ó5f½_Ô  ‡ê¯+…¦¦‹&Î-F|Q_±‹.ŸÅnýILáO&ñé>¢çìþ¯^‘x…7XØCtì!(fû·`i€ÂÈ¿—ñš*åf„ÊKiá7E£«DcØ# v9ì# ; 7‹F1“ ”UmJíÔ˜Ü2=²oï*wÊÕMmu…®}~ì£Kùúðš³Õ»4 ®nV_™ñX­Å¿yÈ# @@àŸ#ýU3@îÕÏ#ý)?y‘ÙVÐkÕ7˶¨6ãXûÒ]é{ߟ5íµÏ~2箪¶©•v„›ï%ïÍœ«âMEKÖöw Ç@üväÔþägb§…5ý¡h÷ªÄæ‘~v†~?ž½{‘ O¥‡Ž¿^(ñ!¼Ð"ÅŽ|(š…øØ8±c¹Ð ÐÛD£½Dí½JÞýªvøÓ3»]tº×ä>g¯¿ìeoÛyïVû¶Ö#jä‰7…*†‡é±EæLŸÚ¯)gBI€H€H€Hà@#¶ HmÐ]uï`M¿¹ÝØÑwÓ(ÿší Ìs?t™ñÁ乿–‘»¤ÿMé¿ÏX¿5wãêÊ¢Á‚)9×.ÀgùâÙ_| t§Ý[ôðÆwÓ-¼®g\ñÙª'«&Í. /?®¢9‹ÍvÇU£*¨ÏÍGVƒtDI€H€H€HàÏ%PW5 :úúv;ÂoÕŒ7ÚÆÚƒ»ôŽ jëò+­š÷©9g|ïQ]‡>oN™Z}Þ'3*™ðæYÊ3ËT±£4–¢&fËÃ$‹ÆÑžŒo„ý9ƒ8ö¦J~%ñ©¡CDý/DÍBè¢ íU…­ˆ¥ÀL€€?0‹ÿ·¸á9KÏõàõúˆî í/½z£h^ÔYX[•…z–DÆH¾È Ñð_Dõ£Õ¨½UÝŸïØ¹ë›ºG“™-Ž>i­žzçŠõ«ÎV­šMˆ\é¤+çö6_ª÷ìR*j´–qì´_7”<’ À›€kg©ËtøoQéR~+¾)HµÛu]~#µtÅQË.ø~:òèÆÄgj“YïOi¢Žß`Los¨*H_+·å£™ v²«¨Û¤/~¦Øñ5?Ó—ošh²®hº ´”¨œ¨Ym+ªàP`SHàJ€€ÿ)n^ì7xH¯ }MÔ}5@7ÛÛ%ª%þF4RN4ú­hÖ^E‘ž5ñ#6i‰”;|½hHa©¼®FSÕ½”ê8ë²Áº^ã–-FŸt™®zrßJ7W»Gßì…hå¬óUì úº§~@ç¨5æuó·ŒC`…Z”)+˜-À@$@$@$@$°çÜTþ2ª|ЮÒíôA‡_]¦zvZ§¯6ÅÅkòÛö˜š¹ôŠÆÎË1‡M5vþˆÅfÞÌ[æÎü*¡ÎÙtŽ_è?§vøhߥÈ ¤›‰&sE—@_cæhùx/¤c-òe±“س*½Zl¿s¤Øê"èH(…þTtü©øyñß PéW‹ê÷¡ð˜jxPCNÏ—ô06U‰º©ÿùm#êQ8²N“øHo(¦t…׋íÁë?/; Â]ê¢XâÔ':–Ö›ëy¤ö§iïÄÏkÎ>x»êwܺìi¥ú©ZÕgz^O• ®†©g‚ŠÊL2£3emÇ4/çÁ– ðH$@$@$@.°Šd¾©Ù·A_©þ¨¹ÇtUQ³0ù`â*Ú>{KzÃÝê¥ùU<2k‡iõeÛq‡¼ÝÞl\PzÙ•ß?«.Ø^ÁL0wÛùMƒs­ž šÆLÒäb»Mù ±ã@OM`f@J‰;qÞÙ¢i,)M»Mü•x3ÚXT] …ƒ óÝ)DQHàÏ#@ÀŸÇžWÞsîïôtœ‚%z§Ø/ZŸ U•ø’¯ ØÊ ‘Ú¢Q”=öÑPì=ÅT­<·xŽÃx—8Öf½ž][5ŒŒ=úŽVÏ«!•œsv½æÈ÷¼ÄKªãq3ÊO¬¸\×lôS¤Zô0U±ìV=^oVqý’l??hêk#ÅìP[2÷@Ç€ü<’ ìÂ*œy¨F:3 ¯;©+‚Ïñ©ƒì²J£¾H¯JuT©â¹Swí0Kj¿zãŠ.jêÌ23ºMüJ=3sæäç>~ΔÉë´µõÆ¿«w 1eßÄ””húÑä2ÑTÑıPÌßûEèп‹&M•MˆúÒvS³!¦:íJ…œâ/\xÜÛ¸ŽÕÞv_¼Ølâ'Þaë'~S2ëµÐ¢^Ä¡ «mCx¹häy¨[2€~k½¢˜…C!‚½ "p8DP±„>’rB˜1à]ªSGª˜ŠW¹¾Æ ul©WNTƨÉuÊ7Ÿ~B}=øè^5Z¿J ¬y$  ø Hç¶´*›i‡®še6ã;FŸ”±ÏU=‚k›æ¦’ ™Ó§–¨taí¢S RÅëÜt÷º©ê›ïG-{èûíªï‚i_˜ØÛt]²í»Ë¿9[½¼å»ÂA»žP?&ÜíÏ–øoC1âŸÂZúÔv‰O½"šÄ}SóUó—ÃÆRÒd%œ¥ž)´},=õtÿCÑ’5ý‰­AQ, ìå\j/¿MÞ ì¼èUOäF‡\'¶Gv#÷xч¢’FEFG?²Uâ#ŠF3•š]J€Š!z'Òã8ÿAhŠt·Y¡7\â=8 ì}îÔµTÌ{ªêý5¾R§ä oÖâ„Åêܪ•zæØzúºCûÖ8¬îV³¹ÁŠ Û+_¤›7¨žýuÎejWÕ9¡ûÂ5UnÎ$oƒ×\¥ÃUì—cWgV–}©Æf ­Ë KÕw™ y“Y›±Ý¦:ƒ   øÿäØ1ú ÔÓÑ íÌÆ ·ÐLI¿­êLÙ7Ô ¶ƒŸNœzVÅ㵓Kíývöܾ\mYQvÝÜŸŽ3?.ÎZÒr~cõöó¾4õ"µbÕEË;/¼GÙQ±(QØM-M~\ÃÌÄ4XÒi7îË„ôÐY¢©Z¢I¬ÁO û ÑÄCÐVˆÇˆ|²¦Ø©+¡˜é™r›Ö•x—¨ÝÐ9L (ÚêV±m«K‚¥À>E€€}êçâÍî!ŒÀ«Úȇ€ëøkT8}oäóî ý(~Š¥L‹,“ø*¢*¢ÈLÄcæ@¸Î?úŽh¨¢¨÷ 캢×)ñ('cKrîR9Ñ.uÕ年-n< ù£ªråìC×é«;>¼zËÚߨd½¢rú –ú”:½²ä.5;ª ŽT‰,TE¹¼7BUuùXeïBý¶2^S³F­Ê8f©ÏMàÃ_¤æèà-°V­ÌÜó2¿Våeì] ³$2$@$@$@ûˆ’Áʪzæv«ëº­¡êdêýzªQ¦¾of;ò6ècÔ©:èØßh§ê‡ÔsþÛ麦0ñEzgª§Šž]œW|™ÊÞ\wçd;è>ñ§«·ôÜPJUÊ[—×vé jöŠvó_™ÙV½µªßÓ5UëwÔßtþÚjQá‰fkKu|´ƒLµÌ½(32Ýû4d\G=™©’?Ùš€¢“t:ñ§B?Mcê~ #ù>Ú…éw%Ý\E»Ñ¸öØ£¯¦B  ا à?˜}úxó$ð[Üß9f”ìðŒœ¨WCoõà°Óï3!ô¥hx(lL= Ÿ,vd9ô>èdÑ’Má1wC| Ú[4ÔºTÔC¼‡ëè—$^¯€vUõ£Ãc•¾¸j¬æsvA³Z¹S¥K/iøy“­*»Ú®šE+ugÍaå§Uî§vV­Wúã²1uDÕsÚå6Ñõ«ìІ²N6›ÊÝ:>ô¶Jg5óRÞ™ºR´þ6Ô@¥#/éÕ;³à.ë ÈË\3ÏÚÍVƒ°ºÎ:l¼q›æ«™ôÐ]6%»ÔöÌùùp,)W™î  80D°ë}®J„Òª\ÆA_Z‹«Ê”Äÿ(cÓmÐåU¥L¾ÊVð6Ô‚ÖS‡gâµ#öA˜¦FÙc±ÿ¸ßVEý³üšþxÛ¡ÿÉOù¯«]ñ±©-ÉòºLA»¢œ‚Ö*wcé‚öùÇš1ëßݱj[GUzÃåëÙ¦Ñôµ‹–åßJ½³úøå˵UÙ[ÿ±îÕU¨/ ïÞ±skUXÜM±ß;Rí¥Ìv~ÁÕ/6þ[Q?³³¿ýxßã°Ñ±N¯;õšhº5l̬L>ôd±“- h/¥Æ ßÇÐÛEÓ߉ú#   7ˆ è˜nb—|®å¨BÄSH`¿"4åHà@#P |"ôFQý,t%m}³Ø!TpÞBØè°‡Q±Øiù™Fg6ŒŽ}ädÄ÷ ¢ ‹ŒtÜG¨1âç‹:G€WñGˆêAг¡¨°ôëb+xÌU$tm¸¼R¡*\Xi±:"–Sñƒª7ªCc_W­SkžÚYêùZë¦ÊT<±r•êyêуÎ/—sPi•¨°*§EîIjKÙ]±ssjG™ÛbÇe¿¯v•i½9ë1UPö¤ÈSYSTQ™zá6áù*‘}µ>I?d—$”×9ú`eBßëÕ^-«ëužÎV~HéUº†Õùz­ÖÊ調úØ6XÊÙ Ò™{.„c PíÌØ;a»™N]|BI#!¡Š2ù*‘q0Ä•°uñi•Dºhçe"íÁǧyâ(ç?]*á®›Rpòàüºƒ#M% Ýøùû×½?³ì»AÙÿý'!¢²2§¹Ž·+ÃCy1”ïa—ú¨ÊÉd‰b$=ËžÔîQäs#ì¹¶ë×a/õì2™ôRèÐçbŠýdõAošš ¶ÛÜÁT4+”NŸoʛʳ£ïÍVkd<³ØÚ‡›mæK« ÌY~¾ %‡Ø|%-ؘx->Måìü6¾¼øUUjG—â —©²Û½Âµ»¾V¶•ßjÛxUcÛü- 6”QŸmþ|ÍSy¨¡›¯~eù•ªÜŽ™›‡lxB¥‹—nÊ^w°š\ü]q¬ðJU˜èœ¹g¥n‚ ;ûQcØ×‰š]¢>:ê~v9è ¢i´kÒÛ`?,šª@Ñ.JI›@•8ô$fØ}2!–ôJØh'¥G‰íK¯°±ò?wëï$é ÷¡†Ã΃úP ì—èØ/V>Ô¿Ià×ý¥= š }JÔ›}T4d§¹!„µhá'aß"FÅ>6*°0¦ …q~ñ¡æ8ÿ((*ÄÐd±½Ó (ÏC£È[/ñú\¤_»Ž¨BŧQ¡*80Š Ð¸QvÕ‡v3ÃsrNÊ=Úî}°½Ìôò÷X­šÛºŒ}¦È„ÜËÊŒ¶úãA—V±ñœøATîa[Agç>TöH¥²W䜖û´Õ•Ù K-°Z?˱Γìq±Î±žV·F{ÆÞ°—[®¶ådÍ - ¯´­«Ž¡ùá¿Ûr{… ÙFF¤rhjØŽDªy¯‡êY­z#´ÅjÝRßfyÏòzzãíWz鈮dï÷RÝ5¿]§½a6}~UÛÊÜ;Xgé„ÕzA°¶Ñ«k›YÛ-“õ_Uwk¥[{¶1agdÔQMl|ë˜Ûs~%HC5m›såmŽ:Öña³Ð2=\¿cË›kÏ ÎÝ’™ù ìŽÈ»23"‚¼Á»7hJ2 ¤cŸ²oÊ*ÖZgÇǃN¡gç—ýdõ³ èĥƛþÆŽîÚï­K\:×6ï†X¦#_Iµ4¶…1Á'ãÒÛëU³çÄÌËê[^ÚŒòÛø‘æÓÅÚëÍÓÐÚ˜ ¾m¤?2óÍ[Vk˜ÍóV3k‚QeÿÉô ½¯{üÎéU¶º(JßTÉ/ÒG¥†Z}ɯ•noubjVª¾MŸ‘þ4u¨ÕªÉ÷¶Þ+^Ï)¶÷U4£8«Ð^·(«¨A¡m[µ/|b×éV+Üš­Í×vGÍmö¹ &ož³¾Àê;{í˜kËiRøÉÎuöúw~ºÃ¶’ù;¼­Ö!žh›œ‘°÷´u`&\ Øwµ2c)s¨­õ3Áœ]ýVÔ¿jÁÿú…húmh.ôèk¢©÷a[¶AHÙ¶CF£Ðlè©Ð¦ÐSDÓ_C;Šú¡ÿUmk!ø 3z¹¨ê} še‡ ( Ê@$ð¯JÁ< j+ï èWD3Óê{½Ø%_°•}¼“íÁ†Ð%¢%{ Ì;„Š-üWبÈÂÀ~X4Ü6®:6þ» í€ý•¨7öi°ó¡!Q÷uïØ'@ÝŒ”«QqkÛ¸‚Æ})Ìp°c‰Çó)xðíAPñª£aW†Î‡~-#ªªsÔÕ–[ÅPŸ°eámŽöÊz!h÷E.ŽÚ{ó #¡èF{_GæF'Zû³È—‘>Vßóº…Ûø ¡ù£@×òŠBö™ô—^Ï^CzµB«­nñîõ‚FÆh¯À«gí z  òÙ&æ*_ ÒÛ¬^º!´ÜÆ—SmTÀº†ÇF~½a £ªèÀ¹’ã•ón°ço×ô­V_²M¬à7(¶ÍW[®jQ¢2¢õëåÚÌ $@$pÐvd=Ë>ï.ë’nau´u¬uQ¡úRÙ÷¾ZcפÛΞÙbêÛ6¯Ún}¶ÿß}(«+Ø 1ÿ&?xçvò#Á´pSß^¯ªµCêt;¯Ìàô]~m«‹ÌQ~ð¾î?‘~ÞÚËül‚Õ6þ[éS¬–I?“¶u›©è¯òo·Ú<µ:iêæ±dëĶº83Y?˜žî·N~m5;Ù?Ø‘Þd'«&N´v–YfÞ·ŠúÖwot´1K@)t|ñ)=¥Ð~(ùâO9{AøVD}-j>†í:¸ö‚`Юq»Ø[÷·Ä/ œA0‹ºŽ¾¹ö!¢éà·°Á¿K4vD:pšÛàŸ%šš"š†C!ýâÏF¼e„Ô¢éq¢©i°ETºŠüÃïE½é£Ç‚ êrL[(ò+\7ÌÈ„<(ÊE!Œ^@ØSóqIàß#à!»ë_ûVQýqIº£Ä{C¡Ö«Ï62z™h_h>ì•PTØ!Tô!ÜG¨é¶„ÐDz‰íÊ9å-ÂyΡnAf9dêsÓ 6êM×1WhO˜C%Ý M@ÁÑŒÛÿ ñÝa_=ŠúÏõ–ÇBúäÃý¸ŽºªÄ§Á'ú7‡øÍÐÒPçP@»Ê-ñþ$(~ÿXØhG`?!åvçWÎp•äSŸ@¿„¢Ý‹B$!ðÛžS‚"p¶U@á:²Û ‚2ç‰íöP]ÅöA|sèq¢*z•q÷Kz¬wì+qÞ-°WÃ~ö3°O‡=ö0h-(:¾¡÷ÄÖð˜{xoâE”wì«¡G@QŽn ½öõТn¤B£!b?(!z¨~ö°ñÜ%###!ò¡!¡êÂF¼¾¶+?{:ô{hYhŠÝYB.Ôuàaþª¤‘âþn~5#H€H€öˆ€F.÷žvöoŒ©™Œ¨_í¼ ›¡ î½í®ƒŽ¬™‰ô¡èȪÃ`ï5Ïž ]„ø—`£>4½a¯Ezì¹°q¾yñp€´#Ì@äƒãÀl=IÔ{ ì±°GÁF¹v?LðQoùE°×CQŸ³/‚àÿŠz4ú5í:òwJzí8ìÁ8÷i7&Ìõ«Y ¶I ÞÕχ 盞b«!Pp/ù<ŸûýL!ø%á_Šd Àn ¸žk8 C«ÆÉY¦6Îvî¹bkTŒªµØnW\;å<ô›Ð ¢*BŠÕ;ñ¨(½ù°'B«B?€^E…î¡ã¡à¡!ã¡aâÁïñné‚ë;‡…†#D‡Pþµ¢ï¯Ñ°pß÷ÕÏ9 ÐÀ°S03Aß}QÔNЗx×0Û†xWNìÊÐK¡h(i7ÒRñ¸ÏÌ´Ñ êh‰ÖígÂ(H²ã2âöDÜßE{dF§dÊæž”Á<$@$@ÿ$à:ú舻5êøÂŒ’öϬ»ý×qHuDW¯ \óÒãÐñPÔ¯n3 ñ®>úVlû‘] ¢Þ-qtA>8ôò•|n®%Òë@Ñ0¨M?Ä'¡¨oJ¦ò£^ ö+‚]"‘ þM¢Î‘à£4§#ýJ(>Ú>'~!Òo†â¹ý(lðHw»dS@ðu#ûæVä¿ùwWoA<Ú-¦¼Øê^(ê5Ø»  ÿ€ìÿÁ™<…Hàç\Ãb%úC_5U`ƒ}ž¨FÇ[ûo¢éOaÏ…^m-õÐñÕÏ!Sù¼HñhPx(ÇÍ4ÐÝ‘ÏuÌóÿ Ä?ûvØh¸èшGCo† ¿> 6žÇü»©–nïý¼äSP|IiÜ¿ýR@&èÈçnh i4dœ#ÁMÙ׸uÎs‚† >®éÞ‡ÄÃ1QÒWÌÿQ—ކSÉç\üÿ9$@$@»%àÞÏ?¯:Û¥ÿZ!î=îò»§³á€7QÀ¨«PϺÏÁ¹%gjò-5“a£Ü‡Â@¤Gz'Øp¼«{`÷‚â~KÖì£~7pt›$Êiü«EK:ÚO 3åüª°?D¾³`‹(ßÝÏÙHG=ë߆|÷!þIبï}”g\ǽÒáHpKÌ Ä£½cÜï5ñ׉*§_À® Ý u¿L Àï!àþCü=eð\ ÿŒ@iœ– = ŠŠXõ[CKv|ÝŽ©x²F…k?Å'ޝòçBw@+A¯†bäB¯†‡ë0ÛOúeBÉžµa¢ÂvÜ‚ž*êÖæ¹Íõ‰w{(¸‘7@ÁQa7Ó“€ûTŽ›k¸=ò:"?>%å¸óª!½<Ô5,ZÂnÅƒ]ú[zW^ ù)$@$@¿€k¯FPŒ³­Tבþ &@Q¿•l W€ømÐ|Q3v_è×ÐH¿öpèzÄ»ú®;ì‘~ì›`ß û)بŸLÄc@À¸rª ¾òŸø³|?ÀF½k°´ÀwñÒQ¹™ f9âãP´Ìw°ÁÇüMW±ê_·'9ñã oá¼ûa/„¢½¢6ÁÞ¥ ü„ÿ×à%H€~™ÀND;{ôQQã:”®aÒ騘õ0Øm¡ˆê±°Ñ0ÑhXèoÿwä{ö%°‡Â~ö4(z ÒŸEü+Ð÷?6*|íî6â]ùwÀþç¡a“Ù±9ˆÂÈŒB~=ùþ-„ž(ª1¢|Ò)ÐQࢯD¼ë軺ëÐ;u÷ëKþ’û‡ý«Ÿïsç;Ç‚SËSH€H€þMŽmÉ̬_+FKBɈ½{»tןèÚî^i‡óŸC>Wo¸rF õ ýfŒ„—ÿìÉÐ&ˆÇȽ[ hj!ý>¤_õ•ÛÝ^9ûäÃõÕE°Ýˆ=lå:ì¸?ã®ûòW€öU¸®¹ñO#þM胈ÇõÕ_a/ùY¾Q°ÃvŽt÷;"šB$ðgÀ òϸ4¯I$ð; ”Æù˜r§b°Ï…Ö…6Õm`cDA¹ô‘þ.ÒëAOFüI°Ÿ„í u†Ž®ûä ÛÈ åë¡°/ƒ¢a ‚}-Ô5ÌÎ[wBü_ e •¡î½†[ÉWœCÀ9Ê"¿³]ÃÎås÷…|úkâÎw×u .ÿkç1žH€Hà— ¸÷ù.I6"ìßÜÀÕspÞ7PŒˆ—86 ÞuX ½ôh>én“[7³À¼ŽôUÐM¢õ£Z„ø<Ļ޵sè#¿‚ÃÛ¼„üÝ¡®¼G`D9ßÁn {&ì¡Ðňwí—Ò'"ý)Ø  Î12 ö·PÌ´P›a³ƒØ› ¸ëÞ|¼7 ßGÀ9 œ&Qœs¸†:æ%k×C¡ƒä×®C|êÏn§:ìÿª%{TC¼!A‡]_ƒx×ávéî>k!}ˆ¨>¶ëP»ëºÈÏ;èÎvùížÿ:”ç îúh0jwß®‰ì¿)î:y3 ì÷¾ß£Ì6Ú¹f+NØõ ®£ßãgöϯósÛµŸºrw œ„¨¹öH訫à`6“?êêW?!ñÆuÌ#"ù#Â9&^AþÉHŸuõ“ë°Ï@ülhêÊwå"šB$°?p/®ýáYø $@ÿ]®ÁSź÷…ó𻆄s$tB¾²ÐJPWÌ’)ô®#Þ - èˆ»ÍUOÄÃqPr¾k@¹r÷TÝ}»‘§.Þ•óŸ–ïΧ’ ì\ýåÔÝ•«ÏÖ#ÂÙ.}OÕ•ëÔÕ{¥ã:ö®ƒ½ »™E°Ýy<çXpr7“ÁuÜÝy.¿s ¸üN]¹T ˜€{QÀøè$@27âïÔÝŽë»™³]úïUWžÓß[Ï' Ø7 ¸ÿí»wóŸ—ïê57ïìÿöõY ÀOàÿE#oá¼ÁIEND®B`‚ic05ùÝÌÎÎÎ|—oßÎì¼l @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€@]Hêb£´‰ PÒì6àõfÍFÿaê?ChÖ¬hDé_KÿÚ²eñƒIŸ’/KJ’_gÖ¯¸¼M›ä_ÉúÉ™LìcÑ€023ºE‹Š'““µJKc~æ©°oÅyMš¤eɑɑ͛Çüplh–Éß&œ˜<Ò¦ÍÿòÿûGrèZ§‡­Ó¶­Zî¯)Z'‹ŠŠÎÎtLš/øq5Õ·¨òÓ«CBqq²EHÂu§]?ºežíG¿|¿~t=‹èÀtͬkhÚ4ù[¶={6k¶ˆªýñÕ¬’=4“ý÷ýB¶]ÎÿïûÇWüÓŽLåŽoÝ:Y/ëtbQÑO«í§’õ)É^·«³u]S®ÛšÙvœUT”¾’M[·þé=TÆ#”íëœéÓCî¿3—••Õ™žwÌý÷nòäºÒžôŽlKæÍ›œ›ýïßÍ3fÔ™võȵdúôdnîs´\¿‰Ùæ<ž¦aã\»¾û.÷ÿuaKOÈ^·MæÌI^ʶfÚÌ™u¡M?¥ éÙë=~êÔäÙ~}[^þSêZ”Ç–Y1¦bìÔ©é³aV˜UQ± u'½Â3á™ìq‡IÉšÕôç…pex-ûïéÍ0+½ ûï+nצ¿M/>=})¼”¹­òßæé%é+³g—wÛU¬5kV,^qPzSzÓ¼yáÈŠ’Ì£Ó¦=X±æÜKæÌ™9¢ìÛ²ogÎì6 uŸyß͘‘d’Ìõ;Í™  @€NÀ€…óRšXŠcŽsÔÑG7o^úMÛ—Û¾Ô¶mrlÑKE/gãÝ™Ç3µmL¦'Ó³±orGrg6¿W89œœM¯ö {¶m›ù(Ó5³Fvþþì»ÉË,^Ìu¦mÛô¼\lÙ29,ö,) /eä=žxÜ0›>,;Ð7<[¾e¶žu³ù7dÓC²ùÙÀ°_6?”–¦Êæ_Ø¢E.×F€ @€?] Ù5[Ç…Ó¦…×rue'ä&Šf'¶¤ïfÃñååÉϲñOS¦d'³_ðrg³ @€¾/`À÷5üM€¹ÀWWuun ûåËÞÕìØ=’­27¯ß£GØ0™žî³ÒJ™G3;eŽìÞ=y-¤éË-—î°ß¤[·pWnÍV‡eãr;‡ÞÙxÉÒ_";Û  @€¨ûe›83ûS'wfãûcƤûdãË£G'焬÷Ÿÿ¤ÅÙôˆÑ£+6¨¸­|¿lzv:<45ªüºò÷Ëßûì³ñWŽl7²Ý_ôØ{à#çÎÍ–¶ @€TÀ€Fzáu›¶À‹é‹é–iqñš[lÚaó+VZ©øEe>Zc°}²bÅik¬‘Ù7³BæêUV ¹_…¼;;ÀŸûÇϲñÜl\¾k×ìoˇpQâ>!Ë`#@€ @€u^àõl çd a@6öÿê«°jvâ~—Q£Â&!I5ªâ劗Ó_}òIùßÒ{’~8çä²ös¶ý裮·5»âò+²åÿKsOl @€@=ð`¿ž_@Í'@€Æ$$›Î¼ä7[uíšé^º|rØzë…õ’–ë¬Sô×LÇ¢ý²ü;g¿à_Þ«WÚ+ûfþ_{õ gd}Z5mÚ˜”ô• @€X0d‹l¹qS§¦C²¯ìñÑGaìó„{?ø Ý«âÍô”#æí—žì2lج‡fÜ:í¯Ã†-Z›M¯Ùtòä|í& ,˜²R @`É ˜°d½T#$cÓYé¯ÓîÝK•L+™¾á†%ƒŠZeº­»nzJé{Ùþç²Kþ±þúáÀìá½²KìÛ @€ @€KX Y-;QàÕÏ> e' ü|ذò+&T2lXºBz}æwÞ™»ÍìÏg®ðöÛ·oyïU÷N˜ož‰Kø294rù?Ý'@€Å)$o½ùÖ›GU\ÜmÒÚ‡wø×j«•~Q´wfÙÍ6ËÜœ9/³Êf›%_fÏ?róÍÓϲ±ÏŠ+.ÎÖ¨› @€ °DÎΞåȱcÃï²n{õÕò×+žNöúëéÍWüê«/üøÍŸl=lØ>Ùí‘G*r?P˜ÝLÈ;ø ðÓLøi~Ž&@€F-$Ÿžøé‰' *-m»ÕŠ·ÝªOŸ’ÅËdšo½u²qökëC[nšg^Ýh£ôºllÛ<—² @€ @€·@îGþ3iR82ûüäœ×_¯èPñføîå—çíUþyùÏ=wã>¿Ýçwû¼ÿþEÉEÙ1Œ81 ÆÆM§÷ @à‡Lø!!û  @  $ÿûœßjöcçî»òÊÅW•|&ýâ™}2çfúl³M²RvÉ»Ûm—~‘eº¶M›FŒ¥ë @€ @€E#ðB¶šã²?!°Uv?½ôRÅ×V }þù¹+– Üyû¦ÿ¸ô?_|Qõd&Tõ"@€Æ*ð¿Æ  ß @ „$yï´ož=ý æÍ—Û¯C»¦¿ÚvÛ’S2ׄ »ì’î®HÚï²KvFz×ðIJËÒ"@€ @€XÊ7„wÃïGŒH~ö kþýïå_–ßZqÅO¼×îÕm_ýÅС[%[%/'ååùV𰔝–Ó @€À0` ƒ;, Ê7ùÇÞ1í³ÇvèPúÛædZí´SÑÛɺIÓwNö§'ýwÜ1ý[hVlÙri´Ò9  @€ @€~‚ÀçaBØwâİb¸!]ý…Ê7HßMg?õÔ¤¾;vê+?¾Ê íw¾~§iÓòg01à'H;”ê°€ uøâh,¬@å@ÿ¸ç¦:çäNJ/iö|fn¿~™¾IûdÚ¾û¦û„ÝB·Í6 ÝCQ(Ídö Ê @€ @€Ô/ä¼03œ4kVx<\–4hÞ-ÒI>8sÄØÛfüû©§–?mùÓ®Ùtöì|¯L ¨_WWk  @ PÀ€Bi¨•ýŸ§“ÓSÒ6mZ÷h½[Ë»ï^´R²MfL¿~áÐplè²ýöÙáþÒpEII=è”& @€ @€,Aää0#|=sfúÇpEzëSOÍ;¤âgaȽ÷ŽkòñßñÌ3½öøÈÀ²²|“L X‚—Æ© @à'˜ððJ€KJ I^L_L·L‹ŠÖ]}ó¿l~÷;dVÊŒIN:üðt³ð«ðÅN;…“BÓpM“&KªEÎC€ @€ Ð@Þ ãÿ¾ý6œöIf?ðÀÜSç0ïÄ;ïì´o龿Ûç½÷ªöÚÄ€ªR °´LXÚWÀù  @à{•oö}ɬ޿¹±[·f'”þ-¬zàE=“òÌQÇ“~V ¯¸â÷ò' @€ @€%!ðbo¿]þZ:»â»{ï½ïŒw+>¼çžå¦·þÍe/LšTµ&Tõ"@€%%`À’’vøž@å@ÿ‡ý>ì·w¿’’.¯þÊ*ŸìµW²|X'rä‘ÉÉ äÊ­¶ ÝCQhšÉ|ï` @€ @€XêÉ!az8xÆŒŠ¿U|œî?p`Ú,TÑö–[ÚÍ.¹à²†­Ú@ªzH @€Àâ0`qɪ—¾'P9àÿy:9=%mÓ¦õ ÖƒZž|ØaÅ×&«'kžzjúHX)|µüòß;ÈŸ @€ @€ê@Ò.¼Ž|çò›Ò„£n½uÆô1-f\t÷ÝËŸ¶üi×l:{vÕ™PÕCŠ~ª€ ?UÐñ ð=Êþ˜ùí®sN>sÕUWÍô*jSºï '}“93|rÄéu¡EX¥yóXN$@€ @€ Ð ® _‡»¿ù&½4í–~yË-³ïœ9¬â›oìrD«õ/ëòí·UûlB@U)XXVLyøžÀüþgÍ;âœ?m·]æŸÉ˜ä‘3ÏLÖOžJ6ÛzëïäO @€ @€V 9/Ì GΚUѪâù´â¾ûÊÖ™·^yÉå—wÚ·é ¿_~Ô¨êaL ¨ÞE. ˜P("M€µT3àê¼Ï9ù¿(Z>sb怋/N ;†'ûô©¥» @€ @€ˆŸ‡ò0»¢"Ý4- o?öØÜUË›—½{á…ß/yùäáÃc±ªÑ„€ªR Lˆ"T#P9àÿpvÛ{ïLfë{öjÙ³ëÎ;íš)-:î¼óÂÞaëpï†Vs°, @€ @€V`r¨ç¥iÚ6]#}eР´kÅráw_Ü~vÉ‹¿}ñÍ7«¯Î„€ê]ä @ ñ ˜Ðø®¹ @ Êÿ Ò Ò’ä”+Ï_öœµ÷Ù'36”ÙôüóÓóÃú¡C¯^µTb @€ @€‹J `B@yïò?—Ÿ|ÞyÇ–nöûÞ}·úÓ˜P½‹\4|þ5ÖCÔ"P9à Müï’þ™¾™ÓÃU—]¶ [%m°AÜ/ @€ @€ °rÎÍ®°FZœ¾ùè£åÍk_6òœs:þ£ÉÄ+9²ú–™P½‹\4<Þ5Õ#Ô"0ÿ€ÿ¸3?9ó“M6)Ù¯ÉiÅ/ÿîwÉéÉß’/¶Úª–Jì"@€ @€ @ ®<æ†ÊÊ*ºT<ºÝu׌—æþ¦¬ç…®peóO®ødìØê›iB@õ.r  PÿL¨ÿ×P P‹ÀüþcŽš¶þi믶ZÓ–Í¿hòØe—%'%ã“ewß=,2áÒùË×R¹] @€ @€Ô1dë0-¼>}zÅ&«„O¯½vì·“®Ÿü‡Ë/ï=°Ó¾ÚgÆŒê›kB@õ.r  PÿL¨×L‹  P‹ÀüøöÿÐñ·hÑåv/sèg$ûe¾ þú×áŒÐ4ÜѤI-•ÙE€ @€ @€@=HŽ ÿIÏ3¦üô¤tçsιnÔÅ¿ì…{î¹(¹(;FTÓÀMùõCó  ÐLhY hÈóø_^†$§ô8¿äœýúe’äãäÄ«®Jß +…âå—oÈúF€ @€ @€À\‡6o¼1·ëœ+žùÕ¯–=³Yùe/ ZýQ&Tï"—uWÀ€º{m´ŒµÌ?ð?¶ÿÌUÏ\uƒ šMizEé¤k¯MﻥÇl¶Y-•ØE€ @€ @€@cø<”‡™éøŠÏÓ6÷ß?eûIÃÊ>8㌕’Nû^9pܸêYL¨ÞE.ꎀ uçZh j˜ÀÿÕ #n?üŒ–-{ÙóþeùçfNIžLÎ<í´°^h®)*ª¥2» @€ @€ PU`bø4ôœ<9}¾bít³Ï>æ¹v¿¬Ïí·?’ÝB¨¨¨Z8¦Lˆ"ꊀ uåJhªÌ?àŸß$ß¶œ³ß¯ßyçâ’âÊֻá†ô³°m¸u…ª.A€ @€ @€Ÿ"Ð6ìÖ}ùåYGÏülÎï=¶ëm­Þ¹ú?®½Jj÷±—‹_À€Åoì XùþGÜþí®'îÖ¥K§nm¯n½þå—'›$=Â܃ZˆJ%@€ @€ @€ÀHN Þ³fU\UñnúÎÅ?ò🠾åê«9ö˜cß~gÞ¼ê+5 z¹Xü&,~cg @€@-óøç 'ɤŸÏxöCG‘ Pæøÿ<ÿÐý–]¶õ®íÏ(ë­ÉÝáóÐw×]ë@c5 @€ @€U 3ÂÑeeצÒµ.»ìÑSï¸nð*—^je€ªLRXÒ&,iqç#@ ‘ Ì?àŸ‡H’ ›Ïiv‡v(nSü÷ä€ÛoOï}BË.])”n @€ @€ PÒÖéªaÈС³ö™YRvÜ!‡t{¬õˆ+5*ß•šV¨)¿h2ꈀ uäBh U pà?IÞzsÔÈ£jÕj¥ñ݇µŸ~å•ÉÏ’½’•Ž:ª¡ è @€ @€G iþ:µ¼[Åjé_Î<³Ãè’¹—õ¹í¶¼@Mþ5å77=%@€À¢0`QIª‡ÿ/P8àY’äëKfõþuï>}š-WzqæŒ{î {dÿ÷ñÊ+Ç" @€ @€œ@×Pþ5pàØ]Æ\=ûÒcŽé=pùÓ®Ùô»ïòý,ø/L78 "@€ÀbÈ,ö38…Àüÿ{g·2™‰O•xvÏ“On–”¾–YåÅ ü7Š:I€ @€ @€@N`L(›ôë×åÖ®½›Î6,¾(•Ç)|®Ó1"$@€…°ÀŠ)O€*…7¢I2,ý<=%mݺ{Jš]sûíá­0'™ðË_V9L‚ @€ @€QàÒ0%ô›3'ݦâü°ïYgµß¹ä†ËF^w]ž¢¦jÊoŒ€úL€ÚL¨ÝÇ^øÇÝI2vÄ̽Oûvƒ š¼Þd¿Ò'|ЛþÑF$@€ @€ @€@õ-CÇ0å¯wÀ˜ßÌ>èˆ#üD@õNr  ° ~`A¥”#@ ‘ Ô<ð?aó9í=ñ¤“š lr[鑯¾jà¿‘ÿSÑ} @€ @€X 3=LmöØ£ëª];6}îŸÿý]Oí¿ÖZù ŸËÆtŒ |  Ðh¬Ðh.µŽ ðã o$“äÅôÅôд´tµ6¥ó˜?ý)¼’ôÍÜпÿ«ßQ @€ @€ ’˜ðèôée¿›3«üÉþý;íÛ|Õ+V}ì±üþš~  ¦üX«H€Æ#`@ã¹ÖzJ€À øÇƒ’dT§ož=öÙÚîÛaç6<òHrQ2'é¼Å±„H€ @€ @€‹H`R(g§izZºCzß•W^÷×KžzÜo~sQöÁìËIEEþ,…ÿ…éEÔÕ @  ˜P.–¦ °8jøÿúóW:yuš•5íUÒöñÇC‡°Crv÷5ê&@€ @€ @€ï t EéÎÿêÓÛ'üýðÃûv\ýÈ;¯œ1#_¢¦ÿšò¿W¯?  ÐÀ2 ¬?ºC€…(øé$ùæÙY¿8ý }öi~lÓƒJ7}õUÿ I«8 @€ @€•À˜Pž<Õ¯_¯Ëz>ÚñÂW^ùx£ož=ñÖø¢V|®[x²šò ËI @ áX á\K=!@`¡ oü*Ón›³ÁoŸrJѺůÝvÕU¡G( m3&L-”¯Â @€ @€X|É€ðFøå7ßÌÎÌ9´âÀ]wíòçæŸ\ñÉ;ïT=cá …éª¥¥ ÐLhWQXÊþª…“ä–›o¹yƒõ‹Šú]xĬmÛ]{mø099lxüñUËI @€ @€ @€@]Hz…1á®éÓçÏþlÞŒýöë<¦Å–WM{úéªí,ø/LW--E€ú,`@}¾zÚN€ÀÔ<ðÿÄúO¬¿Ë[M›þìg;þkÍGîº+¹8É„dï½ RE @€ @€ @ . ³Â—óæÍ{­ì’òÛO8aÙ››^~e‹Ûo¯ÚÄÂÿÂtÕÒR¨&ÔÇ«¦Í,€@ÍÿÃú~zbÿß¶o¿|ï•XöÞÇO~Æ…Ý7Ûl*U„ @€ @€ê²ÀÄ0/œ¦é.íÒ/¹¤Ã'¥3/Ÿ|ñÅù&ÇÿcG Ó1_$@€@ý0 þ]3-&@ VÂÿÊôGéØô”t…:uï°}ÓÕž}6 K…=W]µÖêì$@€ @€ @€z+P±fy‹tú 7ô³Ýì+n0àåäåìØXEE¾C5 ü×”_o4œF$iD}ÕU´@å@¾›•éOOßê¤A+­Ôq·7Ýãùç ü7è:G€ @€ @€ÿ d>(š‘´<ñÄO=·ç™¹ë®ëv¸n‡{–”ä T>GþßÿÿGMùUKI @ . ˜P¯Š6 °…7b•éOOœøÔIƒV_}™s—9½ùn/¿œÜ•ÜV_yå…¨\Q @€ @€h™Ÿ%“áxÀØãz®5è/ùsúçtË´´4ßµÊçÊU»ZS~ÕRR¨K~ .] m!@`! o¼*Ó£FNš8àõÞ½ÛnÒêÎÒ½²Ký’ ‡v鲕+J€ @€ @€ X ¢eúLÚ÷É'ŸžüâÙcØo¿C:o÷ï{ÆÏšUµË…?P˜®ZZŠuAÀ uá*h øcŒ‡T¦?[çÛ§,»Ámïlývi«^0ðD @€ @€ø¾@fz²Còê.»ìtÑVîòÞÀ?ôbºw¿æÍ¿_&„ÊçÏùüÂtÕÒR¨ V¨ WA¨E ¦ª˜Ÿ$Ÿ ›ØtÀëlÐfn›—J×;ñß3l.jÛ¶–Jí"@€ @€ @€ÿHÿžŽ —üÏëŸ9à÷öÜs×wv}çÉ gÏþ_ÿÿ£p€ÂtÕÒRX&, uç$@`âaјŸ$Ÿ§ã:%]k­Ö×´ëÐdóçž ‡†-æíÛ!M€ @€ @€D brÅÖMŸxâÉ÷½üæEûìÓ?韼œÌ[õØÂÿÂtÕÒRX’~`Ij; ø ‹Æü$ùä÷·ùÕ«®Úf½vié¼Aƒ üZI @€ @€ @€ÀÈ,“y!3{×]wùí«nÜä®ÛáºvìYRRµ®ø¼:æ¦c¾H€%/P´äO錨N ¦¤˜Ÿ]ê÷ ÿ:á_=z,ó`›’¦G½øbx+9"ùM—.ÕÕ& @€ @€üXd£äĤÏꫯ9wýÎ[qÅ)Ëo>çí'žxû·ß;6¾ñŸ_dz¦c¾H€%'`€%gíLT+PÓ QÌO’÷ßÿòËãŽëÞ½õ~mlqÅ!á“d€ÿj1e @€ @€ @€À"Èì_´]2ð ƒ.-¿~ÚVkÜxã–é–i™‚ñµø<;ž¸0óE,~dñŸÂ P@M7@1?I†î÷ï³\³C‡­>t™Õ_~9iŸ IV^mµêj“G€ @€ @€·@ùªó©hÙeËNjzÿU¿>ï¼üùâŠñì?”ŽåD,z‚J‹þj$@€À‚ Tüßqùß6ÝíÕæÍ{ŒìuW»=fàÁ•"@€ @€ @€Å+PôIñÝ™‰gŸ=æ“™ŸœºÃI'åÏŸoÇsÿP:–  °èLXô¦j$@ Všn|’ä¤A' êy]qñ®—î8aµ­ï¾;y&|6ÞtÓZ«³“ @€ @€,aÒJ;_wÕU£¿š6õÔ{í•?}MÏ¿cã ÷Ç|‘‹NÀO,:K5 P«@áMLWÆqÍé~Z·?þ±h›¢Q™ý?¾Öêì$@€ @€ @€KY Ù7û"ÛʳfMÝtò;³»ï¸ãJ—tüåõ;½új¾Y?ôS…û—rgœž!`€qu‚@]ˆü±ó§Ç¦³Òé¹çøF" @€ @€Ôô¡°|ø¬Y³VeË´mú«Gýèß<{ì³½zåÛ>ÿóðª}*Ü_u¯~Œ€ ?FÍ1,€@áKa:“ùzÃé,¿×^%—Ì)þöüó RE @€ @€ @€@Ý8=lvoß¾Ã2íkuÈO¼ò‡·Þ:hõNò -|>^ØüÚ_X^š5 ˜P³=ü(•ùÓ0vÄñÛ¬·^ÓyM_/÷ç?‡¡8\QXîGÜA @€ @€ @`© $7%7†CV\qõÿ¬=lÙ§ï»ï‚ô‚tË´¤$ß ø<Æ¥ÖL'&@  ˜Ð€/®®X²…7,ó§_ÙðߟöïÚµk»ý:ÜÛ¢ä±ÇÒçÂŠá”æÍ—l; @€ @€,^̹™þ™?mµÕ±CÏÚÃÑW]•?[|n^c[b~L‹Xxdáq¾/PxC2úòw\¾Û«Í›>ðà}W4dHrl²\R¶É&߯Åß @€ @€ @ ¡ ÌÙjö¿ËW:þøåþÝjý?Ûmù~¦iõ1*Äý1- @à‡Løa#%¨U`þÿ|ñ˜Ÿ$ãö˜sÉiÍn½µèöÌYÉ ýû×Z @€ @€ @ ¡ Ü&„íËʦ^?u»9vÚiå¯Úpý/½”ïfè/Œ!æÇ´H€šü@Í6ö P«@à…bº2ŽÝyú«¿Úþä“ üG#‘ @€ @€¥Àá¡cx¶¤¤õº­(}ãþûßzsÔÈ£êÚ5oŸ«G™JÇr"æ0`~9Ô*PÓGÌO’‘›xò¾o\Ò»É Å__vY­ÕÙI€ @€ @€‹ÀŸ“3’ó;v\a@·çZ½ýðä¤lPZšï~|Î1~(ˉ¨0 ÒÂ_Ô*ðC7I2x­×Þ=¸S»vmžowAI§ûïg†.a‡xãRkåv @€ @€ @€F#ùkæˆdëM69ö©_?¸ÅÐ .Èw<óßq»Âçñ†EG XÉ"¨C4hÂùÓk<¼ÆÃ!½°×;=Ok5p`Ñ䢵’cvݵA³è @€ @€ø©BY8#Mgî9㎲î{ïÝýã¶'ýqößþ–¯6M«ñ¤qL‹Á þ ð#âD€LfÈùÿš2àÊ3Ï4ðÿ#)F€ @€ @€S c( W&I³š·-¾ÿöÛ‡Þ7ü7Ç ]i¥àõ>_•”䋯çòñÀJÇr"Q ¨1vZŸ ¨M ¦‡˜Ÿ$÷õÄú»¼Õ¶íšß®½J瑃…ãÂa¹víj«Õ> @€ @€ @ v̼dý°R·n}^üùþݦéÕOývôÐ_y¥ú£âsû¸·0óE“€ŸhLW[_ Ô*PxcPS:I¶ºk›SVYíÚkÃášPÚ½{­ÕÚI€ @€ @€,”@I¦äo™oÎ:듟y÷Øñ}úäÎüw\¯ðùýBU­0 \À€~uÀ Þ8Ät’|þóI+ŸÜcÏ=‹Ç”¹ðÀ¾nG @€ @€ @€?(°WX&lX\¼Ì·¯jþ»îúËc¯¶ÇG­[ç«|n_5kûcZ$@ 1 ˜Ð˜®¶¾¨V ¦˜ŸÉ¼¾îð'èܵk‹ž-Ï,>覛ª­F& @€ @€ °h^N^_yåíúïðû•Ö¿ì²|åñù}Œñ”?”ŽåD²@Ò;§oÔ&PÓ@ÌO’ž×õ¼.„¢¢×Öøð¬S;þío™u2S’C¶ß¾¶Zí#@€ @€ @€ÀÔ=¦¶šìµW×ÚϾñª'ŸÌŸ¥¢"Ó´êYc:ƪ{¥h˜Vh˜×U¯Ô"øc‘šÒIòüè7ç|øÑGøV" @€ @€Xz­žjubÓ·þô§û§ÿ½ã®ãڵ˷$óßñ¾Âçý±5åÇý" IÀ éjê (ü é3™ç'½sêûv]kÈš›tÞù½÷’­“½ÂžmÚ,Põ  @€ @€ @€‹U`ÞóFV´½óÎ.¿nÖëÚó;.²Â•â›ÿ1Æ&¦c¾H€@C°@C¸Šú@`â,ÓóÇ5îì5¡Ó¾×_oà?Z‰ @€ @€ @ îïZÜ=sDÿþŸ0öÔã6Üf›|Ë Ÿ÷ÇöÆüšÒ1_$@ !˜Ð®¢>¨Uà‡>ØãþLfÔ¨I“NìÔ¯_ñ¡Åwf¶Ýu×Z«µ“ @€ @€X:CI¸:I–¹¼ÃM×¾îº ÒkÒ-Ó-ò‰Ïýc\:MtV–Ž€ KÇÝY ÔøÁŸ$wóØ{žÞ¶m«Ñ-Ï)ýîÊ+ë@ã4 @€ @€ødVx(iÛ³çQkõÙº»sN¾xåóÿêÓ±ÒX.¦E‚@Ò:¡T'PøÁÓ1fþ;(IÆô5õWOÜrKñcÅÍ2/vXuµÉ#@€ @€ @€ê¨À aBؼ¬ìË?_sÊg}ûn´Úª“î8mذ|kÓ4+*ª¶>æÇXu¯õS ¸~6[« ¨Y ðÇ5¥“äß»|uõQ7þìgÅ¿/ÊdÖ?ôвò/ÆãD @€ @€ @ ^œ:„””,?q…Z¿òÇ?vO»?ÂV[}™|™}¸¼<߇8^P8à_S~½è¹F P à' @$ 4\øž$}¾êóU·EEŸïøeËqW]:…ÒÜo5ܾë @€ @€hø™ö™'’-úôyá¯o~uâ†ûïŸïq|þ_SŒ.qL‹ÔG~õñªi3j ?˜c:Ƹä&óÅ-“—=ñÑ#Žh¾g‹¯J^½ñÆj«“I€ @€ @€ÔK´(=:]nܸÇö{è÷n»öÚÇ 9¤óu&OÎw&®à'êåÅÕh? `€²›@ýˆþ±å1$7m{÷7۾צM³~Íw,þüüóc ‘ @€ @€h8Iyrkòõ²Ëî|Öîg®þõ™gæ{_¬7¨¾Çqõ{å P·L¨Û×Gë,€@MÄ1¿2îÚw϶«÷¼à‚øÁ¿•+B€ @€ @€ÔS¦7;¯¸ÿI'½òÏ·¿9ä¶ÕVËw£rÜ útìl,Ó"õAÀ€úp•´‘@µ…¼1=üç£5ë¿}ïÞ¥íšL,þùÑGW[L @€ @€ @ a \º‡JK{ŽéµÅ2—üþ÷ùÎ-èJ ‹Bo4Ë•ÖÏF$P8 “éº/ßú£K/ û†Ž¡oqq#ÂÐU @€ @€ ÐèŠ7/þ óËwüpüWSŽúûV[åAjšÇ"[a:æ‹ÔEêâUÑ&µ ~ÐÆtaÌdÞ_åË“ŽéµÙfñƒ½Öjí$@€ @€ @€´@ûîÏkqÅÅwÐm@5MˆqÜ!¦Eêƒ@R©|_ ~àÆ÷ÅêÊ8¶ÕÌwNÞnÈ¢QÅkfÖèÛ7–  @€ @€ @€Æ+0ñ€ Ãgï¸ÿþ½ž[nÝ›·üñ¼DEEÕ˜¦ùtŒÑ«0óEê‚€êÂUÐ $P8àŠù•qÄa£ÿxÌ»ìbà?‰ @€ @€ @€@Xf‹ö=š|xñÅ»½ºÛ««^ZšÏ¯g¨>ŽåbZ$@ . ˜P—®†¶¨V ðƒ4¦çk_¹ö•Ën[\ÜöŒË7Ùãüó«­N& @€ @€ Ш2Çfš$ÿYe•«“ÛÏÿù™œÇˆ+ Ž?4j*'PïL¨w—Lƒ DÂàLæ‘VƒÛó¯ûïŸé˜Ù%sñZkÅ’" @€ @€ @ P õkm»7;åœsŽ;úömÖ,¿¿¦‰q\"ÖR˜Žù"KS hižÜ¹ ¨M ðƒ3¦cŒÀ™Ì–é–iǽKJ¼â¨¹ë»ûîd§¤8™Ò¾}mµÛG€ @€ @€4ruî¡cëÖ>¿áû^;öº·¯ò挷ßΫ¤iU˜ŽãU÷J P7¬P7®ƒV¨E ðƒtþôÍáÁ°×ÃýúenÈ/ÙSKev @€ @€ @€ª´ßòñ’kN?}÷ôÐt´iÓüÎø"b—ˆ±Ê¡ÙDMù…å¤ X&, eç °P5}PÆü3™e·]vÛŠŠÚ~¼ÌËM;Ÿ~úBFa @€ @€ @€@V ¹%y)y³[·«Ú_1bÓ÷Û/Ç# c$‹ù1- Pü@]¸ Ú@ Š@üÀŒ1îŒ3í*ã[7:çFVn@IDAT˜«öØ£ùŠ-®.^á¸ãbI‘ @€ @€ °°%;5íiÛ»÷ð—ß^nâÏn»m䤑“&=]^¾`õŽk,ØQJ °h’E[Úøñ…Œ1cåÀþEE_™µËI¾újqQÑc™ë­÷ãÏíH @ ® Ì;gN®m“'O:o^ß}7yrî÷æÍ+/ÏŲ²¹ssqvv«¨¨ìÅÌ™³få÷玪ܦM›:õûå*÷äÿj’Ýrw¥¥ù÷·lÙ¢E.¿¨(O’Én¹t‹-[Æ»”\ÙÙ-—ß®]›6EÙ鯭[·ióýý±>‘ @€¨»ߎœp׬ó?¼÷fË}kûÈ·4>Q(Œ±¹'¹-Æ|Êÿ °dŠ—ìéœÈ=2ÿþÓ•ñƒwG÷=jèŽ;þÿÀÿþ¿¯åo °´â@ýèÑcÇæ†Ü¿Înee!Œ“OOš4qbîëñ”)S§ææÍOš4yò÷Ó“'Oš”KOž?ge·\º¾nqÂ@›6mÛæ&´Én¹ Ë,“•éüþ¶Ù-·¿]»e–É•_6»g¿µ,·\×®¹t×®]ºäÒí³[.m#@€ @€½@»uÛ¯Ýô¾ÓOÏÿñÃ2nHåÀ~åxEþÌ…þqaþ¢o§ ˜_ ` qþrXÜñƒ0ž'¦cŒïÌŘ}óÿùçŸ8óÙg‹×,9·èì¾}ã‘" ðÓÆ›0!7€ÿÙg£FåbÀ=z̘|:¿þ:¦óü²Û‚.ˆ÷Ó[©†¸RÁrÙ-7!`ùåó1Nˆq¹åºuûþþž=W^¹¤$„ââ’’x·E“ @€¨^à›­Æ¼5ý׿üå:ÃWÜôŽ®O?/Ÿ€ÄWbŒuÄÿc¾H€À’°À’Pv $Pø:¦cÌd^øð­7î´ÖZÅåÅ«Ûl³ÊÙv t… @€@£˜7¯¬,÷uóË/¿ú*÷Fþ‡~ôÑܹ¹þÏ>Ë èúégŸåÒf·\œ8qÒ¤ø5¶Q‚Õ“NÏÉn¹ëš»Ž¹ëã5¿8»„RîîªsvË­ °rvËMèÝ»W¯ÒÒzôXyå\ÌMÈMXyå•VÊ¥“ìöCuÛO€ @€š@û[:ökÖìøãÃæ¹ž=óL¾ñ;ra,ðû óš’þ¨[bÕ­ë¡5J ~ðÅNÇtŒñÿ‹Šþ³Ï”©'<ßÊø E|æcìCø1æ‹,N§®º Ô*úcŒ…ã€e¼mÕ»¿Ùö½.]vë±Ï¨^wôQ¸+Ù0”å5Û @€@ÃøöÛ‰s_?üpøðüÿ»ïæâ;ï¼÷ÞìÙ¹ÿáÃsüeesçúÙpÿÔ—žuèо}îîmì–»K[ýüÄ€õÖ[g\z­µÖX#7 ¤¤´´ðôQ;  @€ @ ñ Ì^næÓe¸óÎîó–Ùã¦â“NÊKÔ4 >©‰1º¦c¾H€À¢0`Qjª‹À >òé+þóÕ5±é±;Ÿw^Ë–-§”ö8ë¬:B @ Ž ŒÍn¹¯‰¯½öÏΚÂÛoçø‡ Ëǯ¿3&·D¿@ChšÝrw{k®Ù»wœ ›ЧÏF5mºÙ-KJr?<`#@€ @€uL`½ôùðŬYÎ|ø„á3V_ý”ïùü¹ç'LÈ·²¦‰±qà?Ƙ/ °8LXªê$P«@è1.øÏdöøè=V?¡E‹›æÝZ±íiÇg:%$×vê  @€@]˜7¯¼<÷µîý÷ÿýïÜ’ü¯¼òäú‡}ãÜüÇç—êO³[]Xq‚Àºë®½vn‚ÀϾÅÍš…°õÖ[nÙ¼y]²[QÑ’h‰s @€ @€š¦¿7uÔÜ#.¼°Çv׸y+¯Ì—¬i@|æc¬·0óE…€ ‹BQH pÀ?¦c,œPTôA³¯®>rÄþûwü¢Ó‰Íÿtûí t… @€ÀˆoêÿóŸC‡æöãÿk¯åÓÓ³[á/À-á&:z/ЭÛrËåÖèÓg“Mr+üüç›ož› °é¦ù´Ÿ¨÷—X @€ P/ÒõÒ6é›ÿùOּ߳⾶k­5òä‘'Oz:÷êGn‹O€ c~oqà?Ƙ/ °(LX”šê"P«@è…bºpà?¦‹ŠFï8ãW'nøôÓÅ.¾<³éæ›Ç#E °4Fúì³Ü×¹gž<8÷&ÿàÁÏ??sfŸg·²²¥Ñ"ç$@ yvËÝUöí»é¦¹ Ûo¿Ýv¹¶Øb³Íré&Ù-ÞuÒ"@€ @€‹J`ô_ô˜6t=6üdµÑ~cÈ|½ º€ ‹ê:¨‡@u&T§"Àbˆ^ cð±¨è¯ ¼w¿=úœ¹EŸ.—¿÷^èš„?ÆãKãTJ€þ'ßèé¥W^É ô?ñÄSO͘‘[²ÿ£â|îÿöuR üo²ÉÆçV Øn»_ü"7!`Ûm·Þ:7A Yv‹wŸu²E€ @€uZ`îùsžœ×í±ÇV¸µõ/ÿt桇æ;o^>®Ó…ÿ…é:Ýe#PoL¨7—JCë¯@áÀ}LÇG®1Õµ¨hÔ…?:n׋/nqlË•KV:õÔúÛw-'@€º,06»åæe¿ðÂË/çÞä<ø¹çrýƽû®þº|å´ÀhšÝrwŸo¼ÑF¹‰»í¶óÎ-Z„°õÖ[n™› P\\RïNüYI€ @€ ] 9+|®Ÿ;÷áâ‡:~ôî꫟tû!‡¬3n\¾ßVhè×_ÿê¶€ uûúh]ƒˆP cœPûf·VhÚôámŸKv;wøðÌ1ÉsÉ¿;wn :A€KM`zvËͳ~úégŸÍ ô?öØßÿžèÿ0»è_j—ʼn Ô)ÖÙ-wWºãŽÛoŸ[!à—¿ÜcÜÄ€ÕW_mµÒÒ:ÕT!@€ @€:$0%™üÒìÏ9gµe;oÛi×]—oZœc|ÓßJuèÒiJ0 _\][ÚqÀ?¶#¦cŒÿ•oþ»wԨÞÚ}÷.¿èÖ­Õ3÷Ý  @€ÀÂÄ¥ú|üñÜ@ÿ AÏ<“‹3³[üºµ0õ)K€@ãXc^½rvÝ5¿RÀ®»î¸cn‚@ëÖmÚÄ»ÙÆ«£ç @€ P±Uù_ÒÛ>ý´ëG;aöäE   p"@|BUy °(LXŠê P­@è¯)ÆG¦q@qñvžö‹ãÛ?ø`é¥O°ÓNÕV+“üW`Ú´éÓs_“ž}vðàÜÿÃ?úh.ŽññÇÞì÷Ï„Å!PZÚ¤I®ÞŸÿ|óÍs?Яß^{µlBŸ>oœûI @€4Ná«~pË·C·Ùf멜üÀ›ÿúW^!üÇX¸@œÍ Ó1_$@`aLX-e ,”À üWN¸ô¸«7ßüöíüî„kÖYwäÈpM²VršÅVŠ[a4>È/ÙÿÀ?<}zƒ?÷\nIÿ9ÙÍ×£Fð@ ÔaUVéÙ³¤$„½÷þå/svß}—]r+4Ënñ®·7_Ó @€ @à' ÌÈneÞtSíÚÝ<æÌ3óÕÅÿã€ãIã“­c¾H€À0àǨ9†@­qà?Šéøè³0ÿûЯÞ=üÞþý;^Þ©W‹ÅßȉNj ÐØ*²[®ÏÿøÇk¯ÍšÂ}÷=ð@nÀèÐ7Þ˜=»±iè/õQ evËÝõƉ‡vÈ!­[‡°ì²:Åõ¯êc¿´™ @€ª¨x*Ý%}jܸí¯Ýè›{&öêõïì6eÊœ9ùÒ5Mˆþ…±úsÈ%@`ÁLX0'¥,„@ð/Œ…ÿñÑgvéÿw§·>¾ÛO”v.™P´ç[,ÄÉ%@€ PV6wnîkÎÓO’{£ÿŽ;îºkÚ´>Ïnee  ƒº@€@£(..)ÉÝï¸ãvÛåVèßÿCZµ ¡gÏ=r+Ø @€ @ aŒÜrÄ9ß=´Ûn}?^çê{Æ¿øb¾Wóæåc|ó¿0Æ Ñ 0óED xA )C€À‚Äÿ²…ù1$7ltë”méܹô½’™~›m:‡.<^ššÀäì–ûšóàƒ<’{³?.éÿ]v‹_ZŸõ‡Æ-0o^YYîñÍO<õÔŒ•q½õÖ]7÷ÃW‡~衹 [lÑ·o³f!$Ù­q‹é= @€ê§@×Ó–oÝüýú…£³í¿ÿ¥—ò½ˆ/Hì~÷+Ü_? ´šÀÒÈ.Êh#@`Ñ ~`ÅÚc~Œ™ÌVÝwÚk¥¯÷Ú+lÚ‡ÁqE€X^$@€†"ðMvËÍs¾ä’Ë.ûî»¶Ýv—]ÆŒ ᦛn½uêÔ ü7”+­,¬À°aï¾;wn'4`Àĉ!ì·ßAÂ!/¼û ”4»-lÊ @€ @€ÀÒhþAóŠ’²+LÛ±gÏëš6Í·$Ž‹ÆšÚËÕ´_>µ x«¢6û,”@ü@*Œqf[ŒÅÿ]y£¨è«áÓÏ>~óÁƒKÚ•\˜Yg“Mêt  @€@˜4)ÿ†ÿÝwß{on)ÿ{ï}ðÁ\œ;7þîYmº† @ N ÄŸ8öØ£ŽjÝ:7j›m¬P§.‘Æ @€ @ Z/ÖõÁÔçöÛ¯Ïø56¸{ÄSOå •—Wq-Ì '¦«=•L ¬P"I`áâ€á‘1þxõY7l”[ú¿ä«’Ó2M6Ú¨ðHi¨_ñ þk¯½þú)SBØ~û]v;6„;ïüË_ üׯk©µÔ-‘#G*+ áôÓÏ:+·BÀÞ{pÀ¸q! üÜs¹l @€ P7:]ÚùÉfëï´S¾uñÉùÇKòû óëfŸ´Š@}°@}¹RÚY‡ ?˜ ÓqiÿÊ8,ýχïpÄ¿YöoÍ{^sM @€@5S§N™’›—|ß}=4}zî ÿûïÏÅéÙ-ÎW®æ0Y °ˆÖYgíµKKC8þøcÍ­Ð§ÏÆÇ&ñ©TG€ @€ !P1<=8}c„Mžì¹Ü=™ÕW}Íèk¦«c®ßôOÖb:ž°0óEª0 :yH ôÇÂ1cœÑV9ðŸ/Y\üEïï^?n‡nò\Óõ‹¶Þn»XƒH€uS`fvË}ÍøË_î»/¿¤¿ÿºy¥´ŠÆ.°ñÆnؤI§œrâ‰mÚ„°æš½{ç&Ø @€ @`é ßýÝÃ&Þ¹ÝvÛ¼ÑçÁfšożyù'Äÿc[ãÀŒ1_$@ 6?P›Ž}~”@œ0ÜïŽÃÏXíð-š|Òäë¢6›oþ£ªw,v4»åN—˜ÞsÏ}÷Í-9}óÍ·Þ:uª7ýûpüH7Þxë­Üû$Ô¿ÿøñ!œqÆÙgç~:`lv‹•~dÕ#@€ @€!°\÷7i1~Çó‡Æq“øeLÆq"‡ ð?+üÂV ð)¦ãWŒq€ââ¡S>>ãà›vß½ûÌî—´þàî»öŒÊ @€Àâø0»å~kúŠ+þð‡ï¾ áÝwßîÜÅ{Nµ @€ÀâhšÝrwë‡vÈ!-[†pøá‡ÒªUM²[¼‹_ü­p @€4>y—Î[¡âê#–¿±åø›šþìgy¸@ŒñÍÿÂXøæaºñyê10`A””!PE ðaLÇX8ð_9`äï&žwÔЛnjÑ¿ÅoJïÙÿ*ÕJ @€À7nüøÜ¡×^{ýõS¦„ðôÓÏ>;kVq€%Þ '$ð=ââ’’ÜÝÅ2Ë´i“‹m²[î.£mÛ|lÓ¦mÛ\ºI“ÒÒÜþfÙ-Þ…äªÉ¥sù¥¥ùzbÕ-³[®\’ݪûÚë•<(?Ãë"˜ú.òˆ¹Uƾ}û÷Ëò>]äÿ—,Ëöêb½Ò´„È T¯^­š|Küñž=åVW_ݦMÉ’‘k{F@@Ü.0ïÌ?ßÝ´éçÜòÇô 6m²úkÌœmæÌ9c‘Wív-ú‡@ñô)A M@N¥ç,fÙœr7µ üû|ñÅ_$§ß×_·û@÷ëÖyïó|­î­R%çVø@ ôÇt‘Ÿ #F$&<¨Ôðá£FI}Dóó"ô­`n¨X±Bù6`ŒÕuñû•ªQ£zuùv ËrU]dÙôËë"¯“ey¼´.æ[†ÌÒÓ­õûu‘ÿoRËÏû½{÷í“ÿ—¿ë"Ë;vìÜ)õλvÉ+vêb·–ýU–ÓÓ­D7ØÐ‡È 4mzÞyqqJ=óÌ“OÆÇ+U¿þYgÅÆF¾]´@@p‹ÀžWw>ÜìÙg «u÷ð»þó«_&ÀÔæ ©IpËøÓð 2ûsö†€3Ì©øÀÚþMmüþIΛÛ>¡Q£‹µj]ýŽ%KœÙoZ8W`É’/¾8zT©—_4H¦öç^ÐÎËp¶<&ƺ²¾NÚµ%`_·î™gÆÄ(U¯^ݺRŸ®‹Ø·®$®¡‹,3¥xhGÉÌбgÏX‰;vH½mÛŽrºàG]äV7nÚ$µYÞ³ç÷ßÍéƒÐ¶­;YÀ«‹´ÿ¶Ûn¹¥ti¥zöìÞ]ÌÌNîmG@@")ptá‘zéWΚuÆåùï-]ºXm1S›_îµI0=\6S#€€ÀûB ˜€¿yY6u`à?;`ÍÛÛªÜ×£G¥[+ý\ê¾—^2[ F€\Q,?~ýu™ÚæÌÙ³;تóÌúçè"WøÖ«W§ŽدSÇ ô[Ë5kÖª%Ë~¿ÏgŽöÎë--6æÖ?ü`%lÒE6mÚ¼YN3lذqcZš,oÚ$Ë™™œN0zÑ[W©R¹²|«ïÝû_ÿJHPêÒK[µ*Q"z=è9 € € p²Yÿɨ6§¦¶-ݼ̺̄u×<½æéÝóäfœRL€¤øK1 æ—y^µµ6ÿ"€ÀßHø»Kä#xêß,›À¿©MàßÔ11?õß·÷Ÿ¥Æ‹»¿DIßÝmÚ䳞B(†ÀܹóçËφW^±®ô7‰ÅØ$/u À©§Ö¨!Gá&M7–)½Ï?¿I ô˲ԵkŸq†ü=º8°{49ÄGu‘Ó ë×oÜ( ß~»jÕ±cR¯^- «V­Y#ujªu+ƒ7‡ÍÛL uk+ OŸçž“„€Ê•+U2ßúmÖTšƒ € €ØR`UúÊy»ú·m{mÍÖ7Lª°l™ÕHø7‰&ÀÔ$Ør0i”mô5M(š€ T{½Ín»4«Òmqq±7Æ}àI¼øb½Ÿ®YOmo¬ ·€Ü#\~¼ôÒ+¯È•þK—._.SýSÜ)àóYÉv 6h üfºH€¿I“Fd¹qㆠ%°_V“–——„ùÙ˜×ó<½%t‘ÞŸw^ãÆò~2µ9®‹ü½yó–-V‚€• ‰’°lÙòå’0@’sWýÙgK–Èq¦C‡5kvïVêÉ'}´\9¥nºéúëK•"±È]£Mo@@@ §½p梄I—]fm{Å «6~w1{6ËgròzܼŽèધèz_$s@ ¬MˆÁ\ûcj¿nÃe½:>Öºuùçõ­˜öÉ'EÚ+#€ä0·É“§N•)ý_}Ø0 üÒ%ðg@®ó€cÊ—OH£k³f\ }sÅí¥—¶hQ²¤RññåÊ™£±c:EC£FÀ|NÉ-$A`ùò•+%!`Å «þúëo¾‘åôtsUCÔиº£M›žwž$$õíÛ»·$œ~ºu WwšÎ!€ € €'!p,áØ7™þeËN/Yî’ÿ¼uÝuÖ&ÌodS›Lb€©ÍÍ™@S›Ç©@@Hà}€@!³lÿµÜ-XŠß¿¾ñÎØ{Ú÷ê•0û”ÔÕž~Úzœ@Š*°}ûŽòµ¿W¯>}öîUjõêモ+m)Î0Wò7nl]¹ß¢Å%—È5×-[^r‰ÐÎ:«^=¦èwæØÒê‚äÖrzbéÒ+äJò/¾XºTêÏ?_ºTþüsïÞÀÓo•5ì" 3Hȯ…'žxôÑøx¥:vìСtif°ËøÐ@@°À€¬µªbzz÷Í÷˜[±víI³“ßþ±gjªÕ²‚LÀ?°¶A¿h6 ÀFƒASì*`þyÕæŠÿÀ:&æ§>û‡>8sêÔ¸‡ãöMoÙÒ®=¤] €€]æÎ?_cýû¿òʾ}JÐ…À˜]G+w»¼ºÈ£5l(Wò_}u›6r¿©+UªXѤÑå~5 ]fæ“à4oÞüùGŽ(5{öܹò9øÇþi®ˆ.g÷öâ‹/ºH›^zé…Ê—WŠÏ=g'­G@@à |_zÕ¾?*Þ|óUñUÛñbkË æ—°9#ø7ËÁk[BÀ $¸aéCˆò ü›…©³¯üoðrƒ—+_Q¢ÄœK¿¬ÔaÆæÍžÚž®ž'åÚ  €@~<(_Û4Hþ3gΞ-0Š3jë"GCà¿þúvíäžØ§žZ£†I“sFOh%öÈÌ´Nr¬YcÍ|bfͲ>÷îÝ·Ïœ±O«iI À)§”//¿úõëÓ'!!ûÖ&뱌 € €D‹ÀŸõÿh{Ä?p`ƒÔ‹‡¿5dˆÕo¹™žø7µùåkêÀÀವþE ZHˆÖ‘§ßE((À„4²&6˜ßâ¦ø .¸xnË5þ1o^vƪ €@T |ùåW_ÉÔ×Ï?߯Ÿþwëb¾ÞG%ˆÍ;mîm}óÍ7Þ(þ¶m¯¾Z®ì¯ª‹9*Ú¼ 4Ç ddX'E–.]¾\f˜>}æÌÇ•Z¸ðÓOeÙ<ïøŽº¬]¤K·ßÞ±£¤?þxåÊ)+óP@@@è8drÆÌ Î,S¾óêØÑê¹™ÀÔæ ¡ ü›Úüëèñ£§ä'@@~:<å&ðo̲¹âßÔ&Ô‘ðMé-Ÿt[ððÃU7U¿ºôĄ̈@,ŒŒÌLùzþá‡|ð R|ðá‡Hn¯ù”bbbcåèwùå­[KhªC‡öí%`uá…͚ɲ dÙ¡­´,T]ä“tÞ¼ $`̘qãRjÓ¦4×Q`e3t‘_¯¾úÒKr‹€³t‰‰±Oûh  € € *¬ÁÇŸÍZ”šzþÚ3Ö%>W·îîy»çê*—I LL ü›eëÕü‹@´ íïúŸ€ øÖ&ðoêÀ€˜˜Mëþ8ïþV\:¡ô2ƒoÌg'<…D•À¶mÛ·Ë×õgŸíÕkï^¥Ö­[¿ž€”}ÞuëÖ©#§öíoºI®ì—)üK”P*^sÔ³Oki F KYï›oV­’Ó(“&Mž,·V™7oáB©ÓÒÌÉ•ÂluB%`fx≞=eF™!@>‡) € € €€Û¿0ï’m÷¶jÕ僾™~Á÷ß[ý5 ¦6 ÖÿÀe·ëÑ?N,@À‰]x-ø7Ë&bÿ¦63ÄÄl?÷PÚƒý׬ñÎó÷îªV N@ Ú–,ùâ 1õîÝ·¯Lño®Pv—Hõ?&Æ:fµÑE¦îïܹS'¹²¿Q£ ¸ò4R£Â~¯€ùž6mÆ IHI3Fn!°cÇÎæôJx[ÄÞr ´k×¶­$`õíÛ»wB‚R%t1¿Fr®Çß € € €€ÓvÔþ¥ÿkž~ºÙÑz¯$ÝüÑGVÌ/SSÎ`þËNסýœœ 'çÆ«\-xjÍ,›À`mÿ~ÿËo¾9µUóš5ïîøÏkœ¿zµ«™è €¹âtĈÄD™âÿí·ß{O¦ø?®K>/ã© ”ÖEŽf7Ýtà ðïÚõŽ;Ê”Qªª.&-D»f³ àóùüùç_|!·øè£#äÖ«W¯Y“–æN¸°™uu‘Ĭ¡C–[œvÚ©§ò¹í¦K € €D±ÀÁÊÒÒ¿=ºž¿Rü‡Kzô°(Ìœ¡…M0SG1(]G@ ÀÛ\&àož0Ësê-;`aâ7Ç:Õ½á†úmÎÉ:¥ÍÈ‘f Ô €@´ÔEBü}ûöï¿¿R .Z$$Jx*V¬PAŽZ·ÞÚ¡ƒL!Ý¥‹u…?Sù‡wØn0·j‘$!`Ö¬Ù³eÆ€ÌLºÂ9¾et‘Ïõþýûö•[\qÅå—Ë @@@Àé鿦-̼díÚZçÇ·ûï—]fõ'¯€À™LÀ?°vº íG x¾â½œW#àFð¬Ìrv"À“Gz_Þlý­·–º©Ôi1‹/¹Ä:ô 8‘À¦M?þ(_Ëx {÷½{åŠÑÕ«¹bôDR¡yÌ\!úÔS=&¡¾}Ÿ^¦ŒnÞü‚ â┊ÓÅÕBÓ¶Šn¨T©bEù¶{Å—]&ç¶m¯¾ZfI×Eú¼iÓæÍò—™AÀ­‘îWš.r:kÞ¼ $±NfÚ‘ÏõóÏoÒ$6Vn^Ƨ|¤Çˆý#€ € €ÀÉ xGxÓ½¯œrÊן}3׃ï¾ûó‹?þy`¥I0ý¼’ÐÍófßü62ÔÑ-À Ñ=þôþ„æXü³ÿÖfbb6?ðûðû}ÉÉ%û•¾ÝÿÀÕWŸpó<ˆ¸H`Μyó$ѯ߀rÅÿ]òú:î¢nG¼+gè"óÏÜsO·n¥K+uÝumÛÊ•þ^]"Þ8€Q%ð믻wËõ‰‰ÉÉrË—ñã'M’ÒÓ­€uTaD ³­Zµh!‰^/¿Ü¿¿$~ÅÇ—-Ë‘ Á.@@@ Ø_d,Ú¶íÞk®¹­f»zÓ/øòKkƒæ¦œÀœ‰ L\.vóØŽ ÀQÃEcC+`þf/fÙœB3Ës €˜˜íçÜü`ÿÕ«½ó|Õ=;«U3[¢FÜ" WJ_Þ~û½÷PêãGŽ”)¡)¡¨U«fM9ú<øà}÷•-k]+Wâð­;[G¢ lÛ¶}»œŽùï?üPfÎä–EW,ú+jÖ<í49N¼óΛožrŠRf¹è[â € € €@dv¼»mí>Ï<Óìåz$×øøc«f&€Â&˜À¿©#ÓöŠ@¤¸J,Ò#Àþ$`r×ÝûÌÈóT¬HàßAÃIS@शë"_·G7îðá“Ú/*„@Õ«K çÅ­{=Oœ8vlÅŠJµk×¶-ÿB² DLà´ÓN=U>¿^z©_?¹%‰ùü’[ðùºaùå—mÛ$ñBŽÏ$æ…Ι-#€ € €@èÊL*sJl¯F¬=äŽÃüýñеƒ-#àÜ0Šô!ÈæÀ¸Yóx`íõ^›yËÓuî1¦À×±Œ¸Gà4]dÞ“W^éß_;\œ±MH(WNæ›yî¹gž‰WjÊ” *URꦛ®¿^îµí÷û|æèœ=²@ <§Ÿ^«–7^}uÀ™¢~ܸädIhjÑââ‹åÞõ”àœ~“&âùä“={Êq„‚ € €8M ÄºÒÿð½Ö°¡Õns&,°vZ¯h/‘  2îìÕ–¼—+y+6)±ïœsÑ-‰AàòË/½T®ä|䑇’)é)Eˆ‰±nÓ¡Cûö¥JY ˆuêtë­²lž/ÚVY°¿@:gž)Ÿ€ï¾;l˜LUÿŸÿ¼óNùòJyfíÚ11öo¿ÝZX½zµj2ãÂk¯ $ ~?Šv#Úƒ € €…ˆMyÐ_·^½Š½*ö*ÕÊ:w¦TÞqk«æùÀ}äõxàz,#àN}ª€‚–€9 äU˵™RL-§Ú¤ø|7î­šÞ{ç±WÄ=ìOmÐÀzœ@÷ œwžuÅá]dêáõë7l0wärï‹ÞÃæÍ/¼0.N©¡C‡ ‘@ÍÍ7ßx£üKèbŽ>Eß*¯@œ+PC9­sË-7ß,Ÿ‡UªT®,߶׬ùî;¹ÓãѣǎqçÆÜã[Z9nH…$Rˆ£ùu’{mA@@ pØs®jsÊ SÒý7Ž7gûŒÑ¿LÙ»×j¹ùeXPÍ6Œ4M ƒ3„™]8UÀ( ®ãn*‘ê¿»^=§ö”v#€Å©ëå–MuaJçlÍZµjÖ”€Ì[o½þº\áúþû\éš­Ã_ €@¶€_Y23£L:q¢Ü ¥K—Ûo—Än…bYù|V2òÀýûK"Y]Ìu1Ùšü… € €8Wàœfçµ®:㬳¬˜ 2ã4¦y=nž§F :ô5¢]À ŒƒY6S›kjÌ)¶˜˜RãJS*6ö‡ï÷,~àÃ~ð<è}Ýó%“aIjˆ>½{÷í“<Ü;ï¼ë®?þPjÇŽ;ef€h)æJþ‡~ðÁ2e”êܹS'+peŽÑ"A?@à lÒEfèßÿ•WPêûï×®•åh+O?ýÄññVbDÉ’ÑÖ{ú‹ € €Ñ ðëu;6||À€¦«ê4J®ÿÖ[VŸÍ/@S›3ަ>~ÜZ/¯¢AŽ>"-À Ùüõ&ð_øº×媷¨pê©þ£þÍü¿@ùò ò)úöÛo¼!W&–-[¦ŒùTu3RÓ¦ç'3Œ“”T¡‚$@Üq78}Cp ÔÕEîn?räGÉ”÷Ï?ÿÜs7Sᇻ=áÞßÍ7ßt“üeFÿáÖg € € NRõJWŒhf0gkÓ¢¼7ÏS#ÌãN¯ÿ&x€0ËWþçž`æŸïiÿÎ5×4.Ý´Låï’’þ¶Y@Ôҥ˗;¦Ô£>þøþýJeddfš<\'ó˜Ä†GíÑCæ}‘{WK@Æ£‹“ûEÛí)pPù³WÉkß¿?5U–÷é"ùíûöíß/õ1]¤<(ËYºÈòñãV6ü!]rþÿ;v,--çëâãË–5ß~äu>Ÿ5sE)]r¾³K”ˆ‹“å8]¤.§‹¼ÎÔ åÊÉãRËã¦öû%|KA ¸{öüþ»¼Ã4HfX´èÓO­ÿ ÁÝO¤¶fÌÌ-dø©‘`¿ € € .´Ô´&™_¬ZuÆÙå6~ø}Û¶Ö~ÓÒ¬:#ãïuà r¦CJÎ3 'Zþk%þAÀµœ¤víÐұ ˜SÚµ9ø7Ó8ÇĬÈÚ˜uGV÷î§î¬y´Ì?_x¡ðûdM@ ºRRÆŒ9|X©!C†•SK+]ââäÊÓýKÿ•+WªdŽNíí€ ¸ïÒE~ŽîÜiÕÛ·ïØ!?GÍröóÖ-3L@s¿.òsÕ-‰3æJí N9E¾eUÑEþÿÔÐŪ«U“ºš.RW×Åz¼zuY¿bÅ dÙ«KèF-;]`Þ¼ $@$ñÌÜšÆiý:ýôZµäWÇÈ‘\¾¼R :NëíE@@ +p|éñÁY:tÚm¥_øoã:u¬×™©ÿMmL€©I(¬3ë¹[€w/½+”@^srYN5K1µ¹z-&fmÂö#Ý2$amUÂÓµ«µÿ"€ä%0`À«¯JÀĉ“&IB€ÝKE]ähЧ5ÕtëÖV€ÝÛMûB#`ñ¿ê"?'·è"?7×­Û°A~~J-Ë[·ZïØaôÍ•ø¡iUôlÕ¯‹ô¶¦.ò×9çÔ¯/ßÊjë"ßÒÎ<óŒ3¬ÇÏ9G—„óm.z”è©03c¼úêàÁrÜ™3gÞ¼£Gͳö­ãu‘_'£F .·”©Yó´Ó̯û¶š–!€ € €Áxíç~/|õe£Fo\2hð×ßìÚeíÁÌ`þ&ÀþMmf¬ƒßN¶ˆ€H°ã¨Ð¦0 ˜À¿ÙY6§ŠMmN¹Y'•ÊNØ”õÇ­÷Œ;¶ÔÎR£b\z©Ù5 €À‰Lµ{÷ž=÷íSjåÊ/¿4_ÛOüŠÈ<Ú¢ÅÅÇÆ*Õ¯_ß¾åÊHŒÌ(„¯Ûu‘Ÿ«V­Y#ïK©ågä÷ºÈòæÍ[·ÊrF†É6Ùcá*U²xê×?ûlùöÖ¸qÆRŸw^“&RŸ{®õ¸¹•Aá·ÌšN03 ðÊ+©©J¥¦8`N Ù¡?&ÁåÝw‡ “+þ/¼°Y39Q@@@hø|ì¢m;n¼±ÓíêM´l™å`ÎɘÀ¿I0µù¥ø7ËѪI¿£M€€hqú›CÀüÍCfÙü Nø¥íG|¹ï#ÿïÔZµÌ–¨@ò0—®]ï¾ûÏ?•úùç_~1_Óóehž5Àž=»w/SF©Î;u*UJ).¡Ù#[ §Àq]dë×oÜ(?WébøW­’Ÿ‹«V}÷,ÿ®‹ù™Îö±¯È˜€ëÙg[3 4nܨQÎ .8ÿ|¹å‡¹";2­d¯Á<äxóüó/¼ ‰_ýí·òÿ?Ò¥wïgŸWêÖ[;t(Y2Ò­aÿ € € €@ä6—ü¡ÜÞ¾={¶>¥qÚ¸cÇZ-2¿àL€©Í™EsfÇüëÈ÷‹ Nj‡C™}ØTÀukø7µ¹òßÔ115zÔèQ²N‰+Ënºï·nUÝ=õ<™çmÚ]š…ØP@î…._Ïï¼ó®»öîUÊLÙ®¦ÖÑE>½ìß_/f9\ûg?Á0ïŸ/¿üê+ ô¯X±r¥ü,üì³%Käžà{öஸ»·æÕEzX¿~½zò9Ѽù…JB@+]äÊl3£€YÏÝîë]f¦uR(11)éÐ!¥Þ{ïý÷¥ÎÐ%œ½½ãŽÎ%áì©§\Ð( € € €–À¯Ãw.;4ä7š>æÉå ²-l@`"€Q5 f™w àÎq¥W… ü›eø73˜Z® “3äâwšµþ©N.îý¬þ+K—Zó/ €ÀÉ ˜+0ÿùÏG‘[„jŠusE¿\á/WX>þxeË*å÷›Ïø“í¯ §Àºu6HˆnñâO?•Àþҥ˖I½~½õ¸¹â?œmb_Ñ'P¾|B‚|{¼ä’‹/–Ä€–-[´Ä€V­Z´åÒº˜o—ѧ㼯]»n$õêÕ§Ì ðË/Û¶™ëGBÑs«™aÃÞx#!A)ŸÏü ÅÞØ& € € à<ýã÷wI[>iÒ9U/z„@Nrjðw”˜€¿é®Y6Sç°dÉš5ËÜuWíÚuë&tyõU³%j@à¼öÚС*•œë, ´¼öÚàÁåÊ)U½zµjæÓýä·Ê+ƒ-°Eù¹6{ö¼yr%ÿ¼yóçKýÓO?ÿl~Æ{Ÿlp ”ÐE¾uÊ ’€tõÕW]%‰­[·h!‰&q Üíbù ˜Ä´W_2DNö&mÔ¨áÃ%ðª.ò·çY@@ˆnノ—ΚôÛo§½Uúø¿Ÿwž¥an˜`Î ™+ÿMM@t¿‹¢·÷¾èí:=^ð7f9°6‰¦6§è|¾GSŸ.Õdy»v¥¯-syìWÍ››-Q#€Gࢋš7—Ù† 7Ê×÷Ÿþå“¿[˜=\}»vP:Ô üËTÝæÓ¼0¯gФ¥IX_©… /–¿† ±=†6L>¾ùæÛoåçÛ¾}û÷›Ÿi¡i [E ü&p¼eËÖ­òyf]ÆŒ7Nvê"ïû*U*W–o+V¨ÀçVøÇ)pçœS¿¾Ü$¦iÓóÏ—Zn9"§›>rÄœF |MÎes‹™aÃ^]¦ú¯_ßJL˹#€ € €äðÄyô*YrVêÌ›»¿óÎï›~{t!þÜR<‚@nr›ðˆëýËæT«©³ÿÏ×cü³ šíØ1®D‰k}þsÏu=DÂ,àÑEvÙªUË–r…ì’%Ÿ.—?ÿÜ»÷DᘘØXyÅ“O>úhÙ²JõìÙ½{™2rOe¿ß|ʇ¹ ìN H S~–•’"·vèÕ«oßýû•š>}æL™R{‡.EIì7 ¤¥YW-¬_¿aƒü™0ÁºŠ|îY)3Ö§X­Z5kÊŒ&1ºð¹þwB5]äWÁ5×\}µ—V¯^³FFî7]Nt\2-|ñÅ>}äÖ3—^Úºµ¼Ž‚ € € PHꪔªîñOK;¤ŽŽ»pöÜäm+÷í³^mÎ(™ÔlóËÌ,›ºûb5\&À-\6 t§0æ”i`mþ¦–S¬RL-×üH‰‰ÙôÈïÞ•2~|É•z#fQ‹Öãü‹ *;wí’¯õ]»Þ}·|Í7‰r¥¬|jÅ Ü+[à .òóiÚ´3ä åÄĤ$™Â|÷îü¯„-öŽÙüOÀ«‹,´hqÉ%rË”.]:u’„€æÍ/¼P–)á;vÂI€úF™±fàÀäÊ3Nám {C@@Ü#°qþÚm ëÑãÊ»š5©ÔøñVÏLàßÔæÖ%Œµ;Hpç¸Ò«|LÀ?°6¡#ø7µ ü›:6vÛÎCïÝ·Ó&ÏqÏ]ž§äT+@÷ ìØ±s§ü|š8qòd pM˜0q¢\áðà¡Cü\rï¸Ó3g œ}¶uùÎo¿]¾¥¶mkÍà÷û|æÛ¯3{F«@@@¢Q`çGÛ¾;xÿÀ¾pVóѾõ–e`ÿ¦LL<ƒ¸²ôÙÍ$¸yté[æÔ§©Mà?°¼ò?&æÎÊ÷üZnåÊ¿y'¾Õøï¾Ëc<Œ €€£¶é"?“þûß?–+ûgë"ÿÌL3mš£»Gãˆ*š5­[<ðÀ½÷ÊTô×è"·ðùÌwߨ⠳ € € €ø3ö²G3FŒhTù´ÌQÃ{õ²š/s¯IÉ+ÀœÃ2µ øÖÖVø· ü5m¤Û:E(ž€I 0µÙšÇÓl~ËfU®ªZÕ1B¦ôOI;Vê´4 ÷Q@ š¶lÙºUî”øì³½zÉ çž{Î9r#¬§žzüñ2e”jܸQ£˜˜h¢ï € € €‘ð?ã}O'|&­0ñ›Àåõxàz,#$DÇ8ÓË¿ ˜A`ý·•N°àñ”V¥Ú{«Y YN° !€ `sfÉýƽóΡCJý¡ ×öÚ`€h6X»vÝ:I¸ûîûïß·O©V­Z¶Œ•§ž*]Z©êÕ«UóùlÜš† € € à*ßJ߃žÝÅeÞÏN((¾ø}æL™Úÿ¶Û:w–Üܹóç;¦”yÞU¦3 `KݺHÒ³ÏöꕚªÔ£>ñ„$ ýú«õ¸-M£@@@+PãºZ—lfh6qœ‚jÇv—†#P,ŠÅÇ‹-` yõÂ<Ÿ]û+øËx¾(W.¯Wð8 €¡Ø®Kf¦R=Ô£‡ØÌÔþ©º0w(ÄÙ&U`É’/¾[tìØ¥‹$&=vì‘#J×¥¨Ûb}@@@ÊVþÒ·%$X›¸MàZËf½À:p=–p—€ß]Ý¡7œŒ@à¿Y6Û2˧¬÷*Ϫøx‚-Ɔ@ ™™r¬?~¹ÒÿÝwÿýo™rûˆ.ƒB!Î6@ Xu‘Ï©!C†=tÈš¡DnЧÏsÏ•)£ÔgÔ®íókol@@@ ZJî(3;6Õ\ ™·±ú¸-*ô pbu•€ùà/j§r¿Î×Ú_×sý_˜Y‹º=ÖG@ ­[úI®ôïÓ§oß”Z¿~ãFY¦ €NX½zÍ™ sçnÝöíSªG‡*UJ©.]:w.QB)bëqjßh7 € € €@øJu-ù‚§l|¼ZU˜}ò[³0J¬ã^nàÞ±¥gEÈë€`÷x¼³<ÓÕ}€¡ € DéÓgÎ}z÷.]Z©Ë.»ôR¾mGïû‚ž#€ € €y ĬŒ)ã_¶¬~þ°ª—×Z9Ï|äµ#à~Ü?Æôðæƒ?°þß yüáñ4ëÖüºS«ê̲y¬Âà €B`éÒåË%àÕ¯_ÿþ2Åÿº-œÃW1üÓt‘{Ÿ×­[§ŽÔµj~º„è«W¯ZU÷Õu±êjÕäù*ºÈ² ä;œA'X‰;wîÚ%·¶ZvíÚ¹S–·mÛ¾]–7oÞ²E–Ô%#C©¬„§÷ŸöŸX@IdÜŸ|ò™gäs±}û›n’Ô”'Ÿ|üqI(©‹ùö~â-ð( € € €@4øâýzjÿ5ÀrC9«Ïu4HÐG   `#Öˆs 0Î^®å=£wi}•RYCͳÔ €$™)a-¥Þÿ?ÿ9|X©áÃÑG] z-ÏÛ_Àæë×?ë, ä7lØ Ôà—º^½ºu%_»ögÈrœ.'×+w¼_d†ùv%µxœ}öYgÆc—.ò?éÇ7o–„€M›6o–uëÖ¯—e¹Ç¼Ôêbý+ÌVYÇ®“'O*·DYµÊ××^4H®ï8ýôš5åÿ@@@ :bêx¯ñ>­oѼª0ý7ñÀÚçX #À:Ñ- O½Qˆvs0¹—«œVµ}éwôEÊ“f=j@N,`®tîÕ«o_¹¢uùò+äÊгJë"ß Î?¿I X7Ò%&F©Æ6”úÜsÏ9G’%t üöଞڻµÕt‘™¤–©á[µjÙòD-Þ¦‹$¬ZõÝwVbÀêÕòÿîÛoW¯–åŸt‘ç)Îت‹ŒW×®wß-·èß¿oß2e¸E€3FV"€ € €Áðµ™î­¨g˜ Û6gbLmö¸l§F ºHˆ®ñ¦·EÈ>PÄUnLìû%´*Ò&X@ ª6nüá 4>õÔ¿þuð LqnMmUìl ]$ÀܺuË–&À,uÓ¦MšH ßï—)v0·X0õ 7´k—sÎsËeËV®LKSês]¤^¶Ìº5ÇÁƒ‡q€ýFù.2.ò¹* U·ßÞ±c‰J=öXÏž¥JÉÿOŸ/û[»ýÚO‹@@@‚#àKòÍöÄüÿ…š¹6y²¿ Íë8#‹”-@€£‡Æ‡FÀ|à›­{<¥n)}ØßÄ:°dý`§F@À˜6mÆ ™²ú•W>tH©´4Y¢ØEÀç“ð¾R\д©„ò¯ºªM ð·hqÉ%²\¹r¥JÖ¹[ÌÏ¿Ü&N}¤‚.Òö믿öZSgdXós|û­5åü¢E‹KbÀ‚‹Iý».ÜZ ò£nn2zôرG*µe‹5CÀÀ/½$3”Ó%ð[|ä[M @@@‚%à»Ñ÷´:Wß$n±ú àø…,w¶ãLœ9n´:$y⎗lëý=!!$»e£ €Ž0¨×_óÍÇ•2)ÇuÄe 6þót±ýW^)Þ+¯¼â ©Ë—OHÈûhï2 ºSh3ÃC³fM›Ê­LýÔS?.W˜ûíªU’"0wîüù’°p¡•ðçŸ{÷’ Rhæ ¯¸bÅÊ•2.ÿøÇÝw§¦*õÖ[o¼¡O©3ΨU+¯„ž 7‚ "€ € €„MÀ›î;Ý»§¨3p&(lÄŽl%@€­†ƒÆØCÀ²ëØã>öMÑ–ãª“Š·G+i €@ä<ºÈÞ3t‰\+س™êý¦›n¸A¦z—)ß%Ð_Q€¼?Š+àÕE¶Ñ´éùçKB‰©Ÿyæ©§J—Vjùò+$=yòÔ©2çÇ’%Ö-ø\(®|Ñ^/·bb|¾¢½’µ@@@œ$à[éýÔ3Ñ$dÇo ׇ¼Ö'µ¿p~¬å4œ6b´7ôf9ïMÇ팫è½@Xªêu¸@ÞP<ƒD™ÀÓO?ù¤\!¼K—ÌL¹§øÒ¥ÖdâQâîš+´/¿¼uk ð·oóÍð¿ð .À¬IÈq3Ø< ˜™&Z´¸øbyÿ™ú]ä´Ì “&M™"3ÈTõ¤ ÿÍã×E¶:xð+¯È-NÕ…ÄŸà;³E@@@À6oz.Q•bbZŸÖfRÕc¥J}öæü[~“_ÞR ŽóXëñ/Ñ!ð×U-ÑÑUz‰@A³ìñøjøF{Ÿ’@l0  @1õt¶Mqþ:E ä=üðƒ–,©Ôœ9Ó§Ëx^}õå—ŹyófÍüG˜×†B ‚.òí±sçNJ”Pjܸ”¹.áÝw‡ “©é/º¨ysÞ·Á“ïÕëÙge&† .hÚT\) € € €Ñ!pÖñsªð‚œ!’bâ8ÖRöràãæyj¢C€¢cœée1|}ü¼-J–ÌzAíQçsc¼@Àuet‘ŸÆY÷ îÖíž{äžÔ{÷îÛÇDbwÍš§&ÿŽo½U§r…¿Ôqºä|5–95øÛþÖɆæºH€ÚÔ?þ¸y³Ì2vìøñG*5cƬY2c@ZšüK)H k×;îχo´nýÁçBAb< € €¸K âUU.(]Yÿ2|KÍ(¸g$lÄn À£JŸþ_àd?Øs¿Îëñ´PÊ©F¥²Œ €À‰ªë"ìW_µ¦¤îÞýÑGP*#ƒäkذA¹[÷½÷Þs\áo¦PÏ9•?A½œbüí&:uÎ'z÷þ׿d~©¸ï>ù–™œœ’")&Lš$õQ]ø=ò­Zµl)‰<Ò½»|nHÁÇrà_@@@ šÞŠ?5æ+^Mý¦¯E@Ÿz¢ €€%ø7Ë7Þû5ÓœjÄ @üš6=ÿ|¹;µ ðå¿¶ûŸ•€§üÍþüÁ25zË–—\”èîz˜¿@¥J+JBÀcõì)ß6§M›2¥\9¥ºu»óN98Fþ[sß³gè"Ÿ/½ôâ‹2å¿W÷õ’!€ € €V ì´„Ob¯1ñšì8Žõz³\Ø­±îàä‰;Ç•^JÀLm^¸¬O4Nð]áyžŒ2#D P8n¸î:™ÄþÿèÒ%šŽ"&à?dÈ«¯JÀnôè¤$ ø·iså•ü ÷Þa­è(_>!A¾öèa]é>qâ¸q’СÃ-·Èç‰_—hÐ9E õ¿ýöoÈË”)]:÷·ôh  € € €9J}Qz ï»h:Ó–³÷ü@áH(œk9ZÀœ*4ua;cÖ×wñfxÞùû}ˆ »ÖC@ gÏG‘¼äÖ­[µŠuŸG9]ä¨ùÔS?.Sš''%ÿË/¿ì2éoΩýÝ×{z„@hªV­REáÏ=÷Ì3òÿkܸѣ%!À$Ô„vïáßzl¬õûµ× ’¢ªºpÍøÇ="€ € €vˆ»"vºoüBÎYL<Ç<¸l§F :HˆŽq¦—(ú¿÷#o¬g³™Ræoc@̔ռø¢ü<©[·N™ÒÚ©Å\|ûí:I¨nêÔI“$ i–}>ÂuN[Úmš5O;Mþ‡™[jüûßï¼S¶¬Rfæ û÷àÄ-4‰B}úôê%ÿF6ŒŽ¹NìÁ£ € € €'(ùl©2¾7Í›ñžÀåoƒGp» naúw¹ž*ÉÓœ)eN“— €ä(¥‹eÞxcÈ™ÒÚLqc[ÿÙ²e‹2…¿¹Ù\ñÏÔܶ6çrfÍ.¸@åII‰‰’àÔÿ—÷Þ{÷Ý’n{íµ×\ãÆ™R\þ6¤{ € € €@Øb–úžò=8@^»7ñžÀ:¯õywàŽq¤ÅÈëƒ?ûqo'ß*G@±˜y1 €ÀÿªV­VM®à}óÍ×_—+]KèbŽ:ÿ[É”×EÚõâ‹/¼ ?«¤½’¸`®@¶Aiü¿€ßïóÉÿW3ÇĉãÆÉÌW^yÅv¨_yåå—Kûxà¾ûø¶ÍÛ@@@  ØJ¬õ— œÀŽgÖ ê Ï#:O>:¶ìóŸWm¦'¬Í¤ÌÙõc}zolÒð‘G¼>ÏC*–S“ny‡Ð@ Ò•t‘£Ô娳`Á¢Eéé‘nUö½Åßzë7¬©¸4`*îÈ -@ (2㈬ÕUW^)3wœ}výúò9³J—ÌL¥é’•U”-wÝúõÏ:KÚ3tè!ò9«Kp÷ÀÖ@@@Ü(:eÿÇê,]:âÓ÷WoXóÍ7Vå—®S›_¼Ç[›åÀÚz–p›3¸mDéOH<¥UwCà?$¸l@@µicèî¹ç®»"q´©ª‹$"¼ûî[oÉþroq È%$”+gÒä&p¶@«V-[J"ÀèÑÉÉr«€n¸îºH„Ü«T©\Y>WÞxÚ¥¤.&]×Ù´@@@ þ¾åžMyA;Ù_˜'ûºpô˜} PtŠnÆ+\/ýA70n R^¯w±·½gY$N‘º›"€äøç?x@~¾\}õUWI .ÔÅL ž’bÝ;¼yó /äJÿP«³}"+_¶¬|Û}á…>}dŽ€Áƒ”„Ÿrºd ~ãt‘­òꫲ¿J•*V$Á(øÎl@@p»€w¯€7µdI·÷“þ!Pq^Ìkp—@à)O§îU &Thªÿ•³z¨†¢ŒàD©îÒ¦7 €¹Ì‘è…z÷–Ù]PjíÚuëÌf¹_UøGJ—.UJöñØc=zÈϤöío¾ùïémf´Âo“5@ÀÙW\qÙe’pÔ¸qÆññJ½øâ€‡)µtéòåÅï›GÙJ¿~Ï?/ çœsöÙÖ¶ø¼)¾.[@@@¢OÀçñVó^óÿ3¬7gÓL}ô 0À‰Tx ÿ8³iíÚe¾Êk*˜@€¹Röµ× ’D€Ê•+U*Ε² 6h ·Ñ£G’©¿sþCÓ¶ŠÎ¨ ‹œ.yóÍ×_—[ôèѽ»$ ùu)N/~øÁåÛôUWµió÷„£âl•×"€ € €D«€?-f½ÇgÍ2—·I¬ó~Ï à&bÌq}‰fsÈm?ø”²%îõû³nÏý € jŠºHàèÐ×^“D€ûïÿç?Têˆ.…¹vÖúŸyæ‰'äÊ[¿ßº±@a^ê¾±}°§€Çc¥uíúÈé”FºHÑsÏõî-3ü®Ka>CLÀ¿[·®]% 0¯±§­B@@°•Àuj¼úC§˜¿¢Våï9ÑÚ<†€[ô© n0ôyÕæZÊÀÚ\åäó]תrµÙ§œÒêº+:U›wï½n•¢_ €ö¨XѺ2÷ôÓkÕ’£Ö‚‹¥§K@íï!µØX+û¹W¯gŸ•+wï»ïž{$ðæõZnÛ»—´ì(Pµj•*ò¹sÝu×^+Wð¯[·aƒÜ’d—.Ççnq£F Ê·é×_4H>‡|>óÝ:÷º<‚ € € €@QŽ=y$5ýé Þ?ô朵ïÍ›g½ÞÜ<ÓüR ¬Í9´Àº¨{g}œ!À-œ1N´2,&QÀìÌã‰Uú)o A#B YË/·îÕýàƒ÷ߟó5Ut‘ݼ÷žLÝ}ã7ÜÀTÛ‘+öŽ€ÛÊë"ß–ßygØ0™‘¤[·;ïÌ9áb5]äsHn]"3ŽÄÄÄÆ~»v› ýA@@¿€§ª·±g`²yQšõMþ~°GB)À-B©Ë¶/÷kÜõÞïu@iõ‡ã;C@\#p÷ÝݺIàÍ«‹tª}û›n’€9]øÙâša¦#ØRÀï·’cyäá‡%©fÍSO•O¢sÏmÐ@N¿˜D[6žF!€ € €8_àgÏ*Ï?­Û\½3æÌ™™  è[à8A€'Œm ’€ù`7uÁ›-uvÌÜØ!ú$ç/zÝS ^Ÿ5@‡€GÙÏ]wuíšó Üpì›} €9nÔ…GrŠð7 € € €@(¼y½žÍ:}à‰öRøøÏ‰^Íc¸E௫ÆÜÒú@Ñò:d?î·U œJ¦h{am@@Àκع}´ @ /Àq½ðV¬‰ €ø.«³ºÃÌÏ9qo zþįâQœ.@€ÓGö‡PÀ㉛{†ÿ !DfÓ € !Ý»ûM&¼{ï½÷ß?z4B`· € TwÞù÷¿å¸þ믻v?ÔM³1@@ÀÞ˽Û<_Æmý˶h:@ l$„šÙW ïÿÝý<%¬ûœÚ·ý´ @(º@RRr²ÆŸ81-M©½{÷íãxEwä €ØA`¿.rŸ4iòd9®''sì˜ZF@@à x~ô®RŸ&wl § øÞÚ@(bZùzé€Éê'ÄC)Ͷ@@ \&@ðÉ'Ó¦I€à¨.²ï1cÆ“@ÁC=ð@\\¸ZÃ~@@ ))cÆÈýˆ.rþbÊ”O>IOWêž{î¾[ŽëåË'$ä}ùC0ZÀ6@@ðxJx7dùÍ- »O¾ VŠõÜ!À îGzñ7“ý Ïý:ÿÞ¸¡þcÌð7^@@ÀÑ @ÿáÃGŽäìÈ8]$!ààÁC$>æ„áo@l,pH ø?a‚üM‘?y\üäøNA@Ü"àSÝ= ˜À-ãI?B#@@h\ÙªKük<çª#H\2œt@¨8¬‹&L˜81g€À ˜À¿™:Ø¡ù|ý˜^ô@œ.0eÊôé2åa¦¿£F%%I`ᦛn¼16V)¿ßü¸6kP#€ €@¸23—}¦èR”D½À¿Ú·—ã;@pœ@'Ïmê6¯W½«¾Tÿ4­'ào$¨x K û@s[Ì&O?}²{RY—æZ‘@@Û œl€Àth§.b˜§‹®½¶m[î°gt¨@ˆŒÀ]$±oûö;¬T€¢µ#g‚Ÿ×Ið+šk#€ €@ä<U}Õ@'P@ OþƒäIÃÑ#ðì³çß§Þ6Ü Ð…e@°¿@q¦‡Ã‡) Çu1Q#€ €@x²t‘=šþÉî=g‚Ÿ$P@@§ dÝ¡Zªß™¥ÐiãF{Ã+@@x½Ù›­òü›fÆ|ëÝ«îã@b<¨@@ÀþÁ ˜žþ¤‹„þ?×%#Ã3S©¯¾úúk©) € z/¿üê+9î~÷Ý÷߇âøküBßö€ €Ià&uVV3·)|¼'H{g38B€G  @î…/Ñ[E%r[xüÙ  €GÀæC 0m1"11˜W šíR#€ €@n9î;–ûñ`=bü¾Ö…[ýK•í € €@Hnô\îín÷”;θËDƒ Ñ0ÊôñänWë¼KI8y@^‰ €áW`~åÊ/¿”A¨ ÂåÆ~@°£À:]ŽWÊÌê6Ž1j ~¡Vfû €  Ï ê̬æy%clç øßz€@èü›üýÔEú^2Ô'YA¼×^èZÌ–@@ ÚL€ÀæÃÕÿQ£’“%P0xðÀ%J„k¯ì@è><´Wþ*®X±r¥Übàûï×®•ºAƒsÏå´z Ë € `O7ÏEY—èo*}s¶&ðÊÿÀåœëò7î`÷1=,ŽÀùž…Y1@qy- €„V RWì}úégŸÉL›7oÙ"W(R@@ ø?é"ÇÕ%K>ÿ<Sò›¿â÷„- € €¡ȺÐs†çfRC£ËVÝ"@€[F’~„@Àãñ—ñ}íùšIpÙ$ €Sà§Ÿ~þ9+K©Ï>[²$‚,]¤ IIÉÉééÅì /G@¿$±OŽ«Çu‰ÉâÅŸ~*ß+¶lÙºUf  € €vðôP³þÔ37S@ Oò¤á ç ˜)^L]ØåX¿²w w 3VŽõ@@ |#G&&Êü‘ ˜žÎ™3ož*víúõ×È„*LK¨@p®ÀîÝÖqtî\븩ž˜?™ €¿HûE@ü<çyjz&åˆãä·2Ï!¥$DéÀÓí ø¾ô<æyœ€Âi± €„C`·.rí½ ¼‡cŸùí#Cyž™òSâ9@ò92)Iîæ¸šÿÚ¡vΜ¹såO‚_è­Ù €„SÀ$˜:œûf_„OÀ¾]±'"-Pôtï2ß9j¨ßŸÕ@·½T¤ÛÏþ@@¥“’äÊ»̘L:}º.[·ØX¥*êRôo_fkÔ €D‡ÀŸºHbß´i3fØéŠ{ó=#))%EÚõÔSO<cB/@@ÀÞY•U¼Î{­‹´ ‘öokï$_¦§£ž@'dM³uSi €¸\`¯. øä+Ðn·î¦¥;&m7nüxIPxøá‡’D  €ä-0zô˜1rÜ<¦KÞkES§M³üºv‰!Á/r#Áž@@ §@ÖÁœKüÜ P„er \ã½/+V~âR@@È H€@NÀÛ5@`t&L˜4I¦ >pààAIX  € €@nCºÈqròä)S¬›éä^ǘ¿ñã'L°Ó v°¡  € !3õ ™ BúìÖ!$8d hfd|}Ó=—ê( € €@„L€`Ҥɓí 0<¦½'NšD À¨P#€ ðwqã&LpRÂÜøñ':©½×f @Ü+@"€{Ç–žG€€âèñZ— œà@Q?ë=ÏfpÙ@Ó@% 'Ü%î´+êSRF–@Á‘#G2€£Þr4@ „Gu‘ãâØ±ãÆ9)Q.g‚ŸC8„l@",UUÏx‚xN„ÛÅî°“ v Úb;߽רò>ŸíFƒ@@ÀõfÊÝqãÆwâ‰öýºH€cš.Nl¿ëß`t@ "S§~òIf¦R{uqb‚ܘ1cÇJâ‚Idˆ";E@Š,@Â@‘Éx£HpôðÑøâ ôïñx®ñ=à9•[Ï™W#€ €ÀÉL™òÉ'r‚ý]œ 0}5*%Eú‘‘á¤ëMë©@Ž@†.²¥””±cÓÒ‚³ÍHlÅ$.L›6}: ~‘ö‰ €ªNVLÞ3÷Áè  :Æ™^æ+Ï!Γîy‹[äËÇ“ € T HN3Æ !óß~Û½[fÏž7@APß*l @ÀA³fÍ™#Çõ_ݵËɉ}†<119™?£A €‘È'ÎùÆÑÂ.àûÙ!¶È>PøF©EYoênS³ž°}Ãi  €¸@`öì¹s%Pî–’D]$PЮ]Û¶rƒ%¯.æ9j@Ü*p\é[rrJŠ›áL‚ßœ9óæÉñýºëÚµcþD·¾‹é €öð”ô”´W‹h öछýÆ„ÙHÀSÝWÛ£ø k£!¡) €¸V ;@œì¦°Ÿþå ,^üÙgrïc  €Ñ °xñ§ŸÊq}«.V*€»z˜8j”$˜ï1îê½A@@À™$8sÜhu˜b„ ²t1Q#€ àVÄĤ$7&ö™ñúé§Ÿ–#ú§Ÿ’àgL¨@@ ĵU|֨왜C¼76€#¸€#‡F‡KÀsYÖ=Y§ÆÄ¨?9A.söƒ €@´ ˜)òÝÞÿt‘+ ¿ÔEê /lÖŒ›¸}Ôé }+V¬\)3Þ¬×ÅWþŽèp]$Áï²ËZ·–[ýxt \‡e@@ 8YGƒ³¶‚€{˜À½cKÏò(üPÏAïožÝÌ'%O € €@±²6DC€À€aMl–©@p“€çÜ|åàXmܸi“•à÷ÕWÑô}&Ðe@½€§¶*çWø8Oè[İŸ3ØoLh‘<{<ƒ=?ùýYñª·šES@@ÀEÑ 0C÷µ.reäš5ß}'‚†º0€Ñ¡FpªÀÚµëÖÉqí]ä8mÅ$ø5Ó%..ÚzO@@ ,Dzv‚€£HpôðÑø | ^VoéžÔ÷©åKȹÙ €Ñ$í3Örod™2xÈAƒbcÍ£Ô €8S`øð#中Å$ø}§‹$@à­ïú €@ÎTåÔÇz€¯B¸6€Ã¸€Ãæ‡VÀ»Û;R)¹{@®€¢ijà¼ô>ÿü‹/$@°Y¦ ÎK‰Ç@ì.°U9Ž-]ºlY4^ù8>’àÇ÷œ@–@@ áqf/ŽÈ}Ϙ¬«§³ÞÓ3P@@  ø;d–.ò‚¿»°„ à,áÃGŽ”€÷q]œÕòд–¿Ð¸²U@@ #@@a”XÇå¹ÿV‡=oŒ7ųš—¿è €a @pbîùºÈ“Ûu!trb#E°ŸÀŽ;wJ*Û‚ råöøà—mÁ_ € dÚ*>+9¯¸N÷Åæp¨ 8šJì‡çmu£§1·¥6ÛF@ Zä?Ò™™VØ?%e̦ Îߊg@ì#””œ,Ç­L]ìÓ*û´„?ûŒ-A@ˆ¢g¬ééIx¨ûÔ»Ìpt¼@€ä±8mÚŒBÙ³ç÷ß­›ä±"#€ A?t‘ÝϘ1k‰ky ~yÛð  €œ¤À™ªœg\ö…œ'¹^†€«HpõðÒ¹b ö>¦2˜ ØŽl@(øS dÏœI€ 0oƒôô´4Yo¬.T #Æ: €‘kÒÓ•JK;v,ûwÚ>IðsÚˆÑ^@@' øÜxÚŽ@¨¼c=ü•Ð])®@ µ6ÛG@À))£GK€à˜.îìahz5qâ¤I2Àwþã’ŽYNòûCcÍV@ /ª‹¬=yò”)$ªÞÍ$øÓEܺwøaæ[,¼k"€ €@N_éïÈ[€ò¶áTÖ Ï-ê~’òV@@¢ ¤¦8 „“&M™Â]‹îwäÈÑ£âgо^ €@ðÆŸ0AŽë‡u þÖݿŠ&N¿ýºp¡…ûÇ›"€ y.%ˆüЂH uöi‚?ø=£Õj 60š €€£Æërü8‚âÚØ±ãÇK àˆ.ÅݯG@àdLbÚøñ'ÊÌ>”“0Ž$øœ¯B@-p†*«R Žï`…@4 Í£Oß ðx¼oznRé2é,@(œÀÑ£ÖTÿ çUÐZæ Á©S§Mcªå‚´x@ TSu‘„´}º„jÑ´]ü¢i´é+ € €@¸H·8û³±@¬êjÏf°ñ Ñ4@l'0E T îФ¤Œ-—Œ ®» ®,[CÈO Cy~ôè±cå8D Ž ~Áqd+ €D¥@m=À¸Üñœ¨´ Óä!àÏãqF-àyÒ{™:æóeMQÓA@ò @ŸNñŸûM¹WðÌ™³gKæ]˜§©ø®l@ 3fÍ’€ÝºpÏúü­NæY“àסCûörù…ßs2Ûá5 € Eúv‹È_€€ü}x6*3Ų—³†¨Vj¸ßïÑYm£ƒN"€ €ÀI Ìœ9k–¦ œ$`!_6rä¨Qˆi×îºë¼z>3ŸOþ¥ € \ÌÌãZNÖ…+ÿƒk›sk&ÁoÖ¬Ù³åøN‚_NþF@ œ©âUJvç„ëð Q.Àɲ(Ðýü¼Ï¨†*kËòWâY@¢[€AxLJ.ræ"]¬ÐLx÷ÏÞ@¢C`ñâ… %ðÿË/Û¶qåèÇ\üÄÛ|¯ ýÙ €8V`³JU·ó ͱãGÃÃ"@@X˜Ù‰cò4Ré$8vüh8 €a0haÀα‹ÄDk&€,]r<ÌŸ €E`Ô(®ü d!7büëB‚_!ÑX @@<¸@0<ŒÀ_WgUWþšV–˼%@@à„25°LYK ¯À&]$ô¿\ \|ñEq3€ðŽ{CÜ(°té²er\Ù¸ñ‡H1 ÿÔE¾W]qÅe—ÅÆ*åÑ%ü­` € `s¿nÕdó6Ò<"*À ågçá0?Mž½²@p·À²eVàyÆ Dn¬e&îÍ9öŒ¸MÀÌ0ã¶~9¥?›6ýø£|¯Z±båJfpʨÑN@@» `·¡= € €Ž ðlaZµjõj ¬^½f ‰öZ8Qà{]ä8ÂñÄ£Ç÷,{Œ­@@p¦ Î7Zf  3;A@Àaß¿v­LàÙaÍwms¹bÓµCKÇ@°|üñˆÜÒ',Ô…ÚÉ·ß®ZE‚_¡¨X @@\þ\ð®(Z`Ÿ+É\ÿ† ƒ €I`øpE ÓÊ9ïÙ,ƒ³ÎªW¯hßúÂÔPvƒ `+3åüòå+V0å¼­†æ¯ÆŒ•””ž®TãÆƒÇÄØ¯}´@"$ ÷S@ ofÈÛ†g¢N€SÄQ7ät@"˜Á²eË— (\˜W5*9933Ì;ew €ŽHÔEŽYº8¶.nø_,]*#³qã?0B.hº† € T‚ÊÉÆÜ!@"€;Æ‘^ € \‘#G"@\ÓPlmñâE‹$Aã—_¶m#P a¶‰¸C`‡.rœX´hñbûì?¦II$øÙ”h! € €€]H°ËHÐ@@[ ˜ ,Û²‘4ê™™V'99%…€ÎÿXø@ @`äȤ$Iì3Ç€§Y´™À"]举mÛöí6kÍA@@Àv$ØnHhPø¸Ò?|Öì @ç $&&%É gÎÙ3gÍ’ÀÎn]˜ ÀYcGk@P ìÑEŽ ³fÍžM¢X(¥ƒ»mó=,Y—ŒŒàn›­!€ € à6¿Û:D¦'‹ƒ©É¶@p–@v€`Î $Sœ%¡‹´x̘ñãeüzö|ä?¿~œ5ˆ´@rò˜1øÏÈHOÁæÙdˆf̘5KÆï.]äœM]¸¼#Äèl@» èïÈ_€S`ùûð,Š$Þ €D§@JŠ HOOK‹NwôzŠ.ò}®[·;A9]¸clé PT]dýOt!±¯(röZ×$ø›àçóÙ«´@ @@Ù…“¸€“G¶#€ €]€AÐI#ºÁ£ºHÀ„ '2ÕsD‡‚#€7Î Ñ%¢ açA0 ~ûuá ²@@ à¢Á¤+ € €Å @P|C;naüø $à°.vlmB@v"ؤI$‚…Æ8[ÍWü"áÏ>@@ì-@€½Ç‡Ö!€ €„IÀœHž8qÒ$®$ zwcfv+™ú9Œðì ˆ°€9®§¦îßᦰûàT6‰ € àx?„t@@ “u‘À?SÉCÓ¾Û3fÜ8¹4==-;­¤e €Å0ŸócÇŽGâWq5íûz“à7Ufx°ï8Ñ2@@ð ^oö† € `3 =zìXNÛlpBМßu‘ÍΘ1kã`6‰ØD`úô™3åsÞ|îÛ¤Y4#D))cÆH¢GZÚ±c!Ú›E@@À1$8f¨h( € €@(L XLý a{n3))9Y™ºØ³…´ @àd23­ô®Ñ£ÇŒ!Ñëdùš?t‘–Ïš5gãîÌ1¤Õ € €ÁðoSl w pç¸Ò+@²£G޾÷ÃN]¤× .Z$‚«®jÓÆã‰>zŒ¸M`.ò¹¾]~Ï»mt îϨQIIò½îú믻NŽë>] ~k € €€ãHåwÜÑàð 0@x½Ù € €€ML€`Û¶íÛmÒ$šáÃGŽ”@Ñq]"°{v‰ $,]dS&ð$Tn&g‚ï MF@Š3…‘¸W€Ÿ‹î[z† ­&@¢ Gúh}d÷û§Ÿ¶n•÷Á²eK—JÝBfÈöá/@À)Ku‘Ïñͺp|wʨ…®£t‘Ô¾6m®¸Bæð躽±e@³ üagwÎ`ç-F@(†Àҥ˖I`à‡6m"@P H—½tøðÄDæpÙ Òˆ*Q£’“¹¥OT y¾ýñG+Ä$†ä»2O"€ € à2\6 t@@ ùûDë³ët‘„o¿]µŠÄh}Ðop¢À·ºÈçö]œØ~ÚZüBëËÖ@@ì)À-ì9.´Ê&œüµÉ@Ð @‚ @€ ˆQ°‰ÄDkÊà&ºÈ”Á@{ Œ™”Ä .ö£H¶Î$ø}ó•àwÞyMšp3€HŽûF@ Ü ˆlÂí$¸}„é_±H(6!@@À‰‰l16oÄŠ+WÊ÷¿õë7l€ÒÙgׯO ÀæƒFó@ *6é"Ÿ×_êÂïö¨| ©Ó£t‘ãº$x™µHv¬Œ €€-H°å°Ð(ûð•×>cAK@@B @€ ¨Q°Éd](EÁ@ÓEp¬Àˆ#GÊçt–.Ží ›€IðÛ°aãFÞ1acgG € €  Bðì@@ <#G&& µ›öòé§Ÿ}&~Úº•@›F–¾ €€Ó~ÑE>—?ûlÉ>Ÿ>šáo? ~á7g € €á  üæì@@ &@`¹aØ%»p‘Àq]¤;))cƸ¨[tp¼À¨QIIø7ŸÓŽï«ÀâÅŸ~*ïüÂÊÎÎ@@Â,@@˜ÁÙ € €@x’’’“eOÂãíֽ̙3w®¤üª‹[ûH¿@'ìÞýÛoÒιsçÏçÊ'Œ˜=Ûh¾Ž=v,ï#{Ž­B@(¾ Å7d  € €6øí·={¤9sæÌ›g]Ãm£ÆÑÇ dè"3fÜ8ÞOŽ>Œ.­‹|gd¤§»¨[t%B³gÏ™# $øEhØ- ðìÝ ”Õy(à[£Xb`³ƒ@ˆÝ†˜}ß„HˆE ]à5±ãõù9äœÄvâ$Ï/‰ól³šÅp~16Ç&œ öq#±o£]£™®WEÓn$´ôôôRËw}LWOWÝúÿïoi4]ÿÜ"@€mÐÐV^“ @€tZà–[\ è´yÎwÏ=ÿøé…‚7’Q†|åH€¬,^üæ›i,÷Üsï½Y‰Iù¨7øÝv›¿ü×S @€k ô®ùÔ3Ö°$ÜÚ"ž @€l Ô.Ü› ß¿³Y£jKµ¯L†ïïù¨Yž¢¼'éûêò˧MKG&#Oñ‹•”V ù¹Ü @`ýVX¿W @€r$.Ñž~p»"9 [¨9øn2Ò÷Ù’%K—æ,tá @ WË’‘þ}{W2ÒGƒ@;j ~·ß~çÞgí6' @€@74tCÝ9  @€Z&àAË(MÔ€Àҥ˖¥»ýC2\(hÌ.hRàïÿþ®»ÒC5\5 è°A |÷»Õ€Ú÷ùAlg @€б‚‡ @`pwÝu÷Ýé‹/Y2¸#íM yÛn«®8±jU__ó³8’Öèë«Ýr¥ºâÊÚ¯{N µ ÿüÚ¡kN @€N hè´¸ó @€´D vÀ’­-á4É ^OFzÈ}ɰÀ ñìN€ ÜsÏ}÷¥//ZôÚkØÍKÚ"ðïÜv[ú}]ƒ_[xMJ€ Ð!ÞÇiäRÀ‡¹¹,›   @ $÷Üó½ï¥ß«] (IÁ3šæM7Ý|sÚ9ÉH{“‘> 08þd¤GÜrË­·V*ƒ;ÖÞZ%Poð«þ;sâÄ ¢¨U³›‡h‰€+¶„Ñ$ÅðáT±ë+»hh¢) @€@ ª—nK†ïÓ-„5US/'#}>Œôñôd¸PÐ¥ƒ(¹À<ø`ú÷èKÉ(9…ô3 pK2Ò÷ãøñÕ¿aÉÈ@XB @€jšj ¬SÀ-ÖÉâ‹ @€Y¸ÿþï?ý@öùdd5Fq•OàÆ«+T’Q¾ìeL€æâd¤GßrKõïÑægr$Ö ¼˜Œt¶´Á¯u³š‰ @€@g¬ÐggÉ­@õƒˆÜ†/p P ú‚[n)PZR)ˆÀÂ… ¤©<üðœ>“ŒôÑ @€ üèG=”þäý›ß<ýô†÷ô*Î ÜpÃ7¦ïÏSN9ùät…Ÿždt> g$@€ÖÐx¿ˆ§ÖðÖµE<'@€ȤÀ“‘æA&Ë#¨·¾ýí›nÒBêí@€Æn¹åÖ[ßÛž:+°0é~ø‘G:{fg#@€ м€€æíI€ ÐA›o®Þ‹µƒ§t*ƒøÕ¯~ùËô Ç’1èƒ@€ ü<iÃÔ/~ñä“%J[ª9¨­Óð…M€ P2 %+¸t  @€yø÷d¤1»@·Ê•;Þn°@¹ß²'@`céß“ÛÇë²"ðËd¤±¤ÿ.µÒOVª" @€õ hXŸŒ¯ @€dBÀ‚L”Aƒ¨­ qepv'@ ðï¼Zød%X8o¼ùæÂ%%! @€Â ô.# h±€ÎŽ4(P[J=]"¸ÁCìF sµ[W\ý—¾”¹àD€.¤K©wá´NI %?KF:Ñ“O>õTúyьӒ‰MB€ N 2¸ÝíM lV([ÅåK€ȉÀ 7ø «œ”J˜øq2Ò—ó›§ŸÞÀn^"@€@á&#Mòá‡y¤ðÉJ°ð·Ürë­…OR‚ @€¹ÐÛÒ œ PL… Ÿy&ͬvá´˜Yʪ,q2Ò\oIFYr–'Ö%PûÍÿJ2Öõº¯È“ÀCÉHã}úé ò·X  @€Ê!  u–% @ 77&# Ö‚Ü”L  Üÿ¤»½”Œv·  #ðr2Òd|ð?(LR)½€¿Ò¿ @€2-  Óå @ </¿üÊ+i¶<ðàƒåÉZ¦eHFš«%ƒËRqy P¸9év2j_óH (üŠRIy @€Š%Ð[¬tdC µÕ[[;§Ù @€u ¸@°n_-–À½÷Þw_šÑeÉH·IFúh @ h¯'#Íé¾û¾÷½¢å&5ZcË­·~ç;é×®KFí5 @€@›ÜPªM°¦-’€€"US.mÐÐV“ @€ß ¼‘ŒôÉ}Ɉ¢ß}ÙB ô%#MìÎd¤ÿΜ‘ŒB&*)J/pûíwÜ‘~__µªú÷^éAZàž{î½7ý¾>5i¢ü ]nÉ @€@4d¡ bȰ€[d¸8B#@€”Aàöd¤yº@P†j˱&p×]wß^[²déÒÚ×< @ K—.[–æñÿp÷ÝEÈGHüÒïëßMF#ûÛ‡ @€@;¬ÐN]sç^`I2rŸ„ @€@F–/_±" íîdøÍÿŒIXmX–Œtò;’‘>NštÁé£A€¼ ÜqÇw¦9Ôòžø Fà®d¤ÿ®=÷Ü Ò¶ØbóÍs¼}  @€^f:çl@IDAT/4°—]”Z ù'©A hµKµÇž·Wº¨=V͸÷í˜Ú㦛V¿^=ú ƒ&Lø¯ÿŠ“Q4%ù @€ @€ @€ò(ðÊ+OÖn]{¬¾ê¿ò*ày­œ¸;$½'^Ö¡S9  @€ @€ @€†  `x-ÀQá¼pŽŽ¯TZŠ @€ @€ @€r/  ÷%”@;¢-CˆF´ó æ&@€ @€ @€ @€@k4´ÆÑ,E8::?>Á E-¯¼ @€ @€ @€I@@‘ª)—– D[E[µ|R @€ @€ @€ @  Ú€jJ @€ @€ @€ Ði w¾\ ôœMs €\M° @€ @€ @€J*  ¤…—vcñ›íg/ @€ @€ @€t[@@·+àüØÀoø]ßÀëˆ^ @€ @€ @€H4xØ€@4>œ£`D^"@€ @€ @€ @ #2RadS Êfd¢"@€ @€ @€ @€ÀšÖôðŒ@"°æoüÇo@!@€ @€ @€ @€@ö4d¿F"ì¦ÀñÑÜè²5ºŽs @€ @€ @€ @`}Ö'ãëž­ãEñë( @€ @€ @€ } Ù¯‘»)pb4?:Ç Ý,s @€ @€ @€ И€€ÆœìUV£)a¼€²–_Þ @€ @€ @€ò$  OÕk›Þ}¡?Ú.Ú6~­Í§5= @€ @€ @€Z   ˆ¦(®@|P¸,¸@q ,3 @€ @€ @€ÐP bJ¥õÑöñ+­ŸÕŒ @€ @€ @€h½€€Ö›š±0qÜó±0þÝ·(LŠ!@€ @€ @€ @ 0 SJ‰´K ~¹]3›— @€ @€ @€­ÐÐ:K3P š.¬PÀÊJ‰ @€ @€ @€@ñ4¯¦2j¥ÀiÑ'ã#Ü •¤æ"@€ @€ @€ @ =ÚãjÖÂÄ/&‰ @€ @€ @€ Ph ….¯ä6,°ñßìï¹2º"œ³ñý6|¯ @€ @€ @€ @ ýÚoì y83úL|˜€<—Pì @€ @€ @€Ê"  ,•–' @€ @€ @€Z@@¡Ë+¹¡ Äc£é‘[ •Ññ @€ @€ @€t@@@"¿=3ÂÕñ!nß Šœ @€ @€ @€@y4”§Ö2%@€ @€ @€ @€ h(pq¥Ö³Ã5ñAVh¤) @€ @€ @€h³€€6›>ßÑÜžëÃ9ò]EÑ @€ @€ @€(‡€€rÔY– @€ @€ @€ Pp /°ô†&OKþmG @€ @€ @€ @ ýÚoì y87š¨ Ï%; @€ @€ @€²h(K¥åÙ”@ô±è+Á MÙ9ˆ @€ @€ @€Î h謷³åL šÍ÷³@ÎÊ&\ @€ @€ @€¥ÐPʲKºQø×îi? @€ @€ @€tW@@wý=ëÃÜžOX ëe @€ @€ @€!hð. °!‰a~%Ö°!"¯ @€ @€ @€  Ù¨ƒ( @€ @€ @€ @€À4 ‰ÏÁEèùt4?Œ·@Ñë,? @€ @€ @€EÐP„*Ê¡Åï¸à?)>9ÞëÏ[|&Ó @€ @€ @€ @ UZ%ižb LŠ®³@1K++ @€ @€ @€EÐP´ŠÊ§¥хẰ»ZŠj2 @€ @€ @€Ú"  -¬&-ŒÀ…áÃV(L5%B€ @€ @€ @ Ð ]^É ] çà¡Ïa @€ @€ @€´_@@û!Çñ¾ñ‰ñ®nã  @€ @€ @€@i4”¦ÔmJà¢ð±è š²s @€ @€ @€ÐÐQn'Ë›@ÏŸD‹&hÈ[ÝÄK€ @€ @€ @ ŒÊXu9¯%°¾ üÉ×/ Ÿ¨¼¸¾×ךÆS @€ @€ @€tQ@@ñ:ûÑ¥Ñ'¹²_) @€ @€ @€  À{€Àï\èÿ…  @€ @€ @€r'  w%pG¦ÄÇÇ;h 訹“ @€ @€ @€ Д€€¦ØTÏE¿¾Y©”&_‰ @€ @€ @€ [ ¹-À;!ýuÏ?ÅÛZ ÖÎA€ @€ @€ @€ÀÐ4 ÍÏÑ @€ @€ @€ @ 2QAdU Þ=>6úвZq @€ @€ @€ PÐP·°Eà]Ñ´ðéÊÞã  @€ @€ @€dN@@æJ" L \}6LЩš† @€ @€ @€u hX'‹/x[àòðÙ°•ï @€ @€ @€²/  û5a¢+£Ï[ ‹pj @€ @€ @€èmxO;(¡À´§Íxö÷úÓOÞýéϽ|ÁG”@Ê @€%XœŒaÃB˜7oÖ¬ÝwáÍdôú鱄ï)gQ`«d „ðñõ¯?ýtïMF# @€6<†ýâøèívlf7%BX e”D»¢qáGǸ@»|ÍK€ MÚÆ«¯ž1ãå—³£¨”UàškfÍJÿ\ºð_Öw€¼  @€ °a öñjÙæÇ_Çj(ûÛ@þ @€² |èCÇ»dIGuôÑé£A€@÷Ž<òXº4„}è˜c/î^ÎL€ @€Ù°ˆc¶ë#º T>T "þU‚ @€.Ìš5gÎK/…ðd26ß<„ŋݠ epÊ’ l¹euÉÿY³æÎ}ñÅ*‚6õ’¾¤M€ Â#á™°{+Ø€€ éx­ôñ¼ðWá÷âd„ Â7JÏ€ @ ¤[nY½Çø•WNŸþÊ+!üÙŸ}ùË;íTR iè°Àôé×\“.ù?rä¨Qýý!ø¨³Ãp: @€l d+ÑÈ¢€[d±*b"@€ @€@Ž;î„Þ|3„|ਣÜ ƒR¡?üˆ#Ò?gÇ{üñéŸ;ƒ @€¢GðŸ¶Xïа!¯•^ rTå¨Ò# @€ °–ÀŒ³f¥·‘ŒJe­=%@`HïyÏ[ $¿Õ4cÆœ9éoþ @€ @`0£e_ @€£Fm½uºùå—_uUÚ` Ð:+¯¬.ù¿m2V¯nݼf"@€ P¸?ý_2‘ö hhŸ­™3+0ˆ¥afô\3ˆý3›³À @€´^ओN9%]šüÐC;léÒÖÏoFe7îàƒ—- á„N:É’ÿeª¼\  @€ ÐZÞÖNg6ŨYÍ)^T¼ÜdD€ @ ³gÏŸÿ !\{íìÙ{î²d ÖŠ™ÍA ø[$#½•ÆÜ¹×^›þ9Š’¡ ½øu—! @€@óVhÞΑå°@9ê,Ë&â«ã¯…£}ôÒ$ŸÃ @€J"°M2Ò[\vÙW¼òJI’–& ¤·Òxùå¶Ýv»í,ùß"TÓ @€V þqô|ØÇu›ÂXb-ÐÐF“ @€ @€À)§œvÚo„pðÁ‡ê–Þ6,0vìA¥KþŸ|ò©§¦n  @€ Ð  ­P4Gaâ«ÂŸ‡ßÓIVØKŒ @ ¥éÒå鄳gÏûâ‹!lžŒtisƒºÀf› žþ”9{ö¼y韓ڟ›ú¶ @€X¯À‚°¯ë6ëõñD@€· @€´T`»í¶ß>]Ê|Ê”Ë/wK€–Òš¬Ó¦]qÅK/…°Ã;îØ×W€„¤@€ @€™Щr† @€Å8ãŒ3Ï|ýõÆ;øàt©sƒ@™8`ìØåËC8ýô3Ï´ä™ß r'@€Š@ô³°0²ÀP[ %(²›è9<þª[4ïçH @€r Ô–6O—:á…†wK€r¿#Ê™ýfÉHo…1gNõÏAíÏE95dM€ @€íèm÷ ÌO ïñÕ â‘yÏDü @€º#°ýö£G§K_zéÔ©é-þîïþæovØ¡;±8+N L™2mZú¾ßqÇvZµªÓgw> @€øQXv‹ã·²úeÁr“ hh¤iŠ)0ð'áËáè8á á©bæ(+ @€8㌳ÏNo ð“Ÿ<üðV[…ðÔSO>¹Å:»óè¬À¾ûî·_ºäí}ÿöG” ÂÙ @€M`eÑ’Ö ¸@ëMÍH€ @€ëèIFztöìùóŸ>„M“‘.n(’@oï&›¤ïó9s®½6½õEí}_¤åB€ @€Ù°@vk#² Dˆÿ4] ,‹—Z  @€@!vJFzK€‹/¾ôÒtiôoû›ßtK€B”V‰À”)S§¾ür;'£ºä¿ßý÷Æ @€ Ð*ø¡ø©°Oòoì]ÞÁ-ZÅjž‚ X `• @€ò"pÎ9&¤·Øo¿1cÒ¥Ò yØ{ï}öY±"„³Ï>÷Üô}m @€ @€nh膺sæF ²w¼wn‚( @€œ Ô–FŸ={Þ¼t©ôM6qK€œ•P¸‰@mÉÿ¹s¯½6½µEí} ‡ @€Ö ÄËã¤íÖ @`Cn°!¯x‡€Eßa“ @€@ Ò¥ÒW® á 'O~õÕn¾ù†Fná LE “'_rIz+‹]vÙu×ô}l @€ Ðf-m6}Þ¬÷ Š¿½Ç×W¦¸ôß^d³ @€¨ L˜pÞyiÀ^{í³[xWd]`d¤üÇŸ8ñµ×²­ø @€C úYøMü>×mŠQMY´K@@»dÍK€ @€ƒ–Œô€ùó¯».]J½¶´ú &±36 ô&#ý¸qÞ¼ø¹çÒ÷é°a>~l3ºé  @€ @ a SÙ±Œñäð¥è(å”±ör&@€èžÀÎ;ï²ËªU!\pÁ¤IéŠ, LštÑEé’ÿ»íöþ÷[ò?K•  @€¤¼ @€ @ “çŸá…é…Ö=÷Ük¯îñ˜É•)¨÷¿÷ÝÓ þ'NšdÉÿ2U^® @€™øaøï°·_ÜÌTM“9 ™+‰€²$1X K%  @€@‰j·˜3gþüê-,µ^¢òg&UïÃÌ”B  @€ Ѐ€€ìB€ @€Ý¨ýæõ„ \à7¯»W‡²žù¼óª·¢°EYßò&@€È”À£—_ÀJ™ª`:&ÐÛ±39< L _G'ß þ,ÿ< ˆ™ @€@q.¼pòä—_ág?ûéO·Ü2„… ,>¼8ùÉ$[;ï¼Ë.«V…pÁ“&¥·¢H‡«þK€ @ ›ñÒnžÝ¹ d_@@ök$Â. TFWOîCž.Á©  @€¼-0lXooúoóyó>üágŸ áþà#Ùk¯úû¢ÖÔ–üŸ7ïºëž{.„ÞÞM7­T\üo®Y @€ M òá7a¯ä'Ãý‡6£ YÀ-Š\]¹ ]àËÑ¢øÒz  @€²"°ûî{ì±reãÇOœøê«Y‰JE˜0á¼óÒ÷Õ^{í³ÏòåEÉJ @€ P e©´<›¨Œ¬Œlê@ @€ Ðv‹.ºä’tiö]vÙu×t©vƒÀPvNFÚX2iÒäɵ%ÿ‡2Ÿc  @€hƒÀâÇÃÞÖmnƒ¬) $  @Å”JëâÑ ÃKýý­ŸÙŒ @€ U ·w“MÒ}æÌ¹öÚô–=Éð1ÐPUËw|í}3kÖ¼y/¼Â&›T—ü/Ÿ„Œ  @€ä@àãŽÎ²rs*%Ä. hè"¾Sg_ òƒø¼øÎìG*B @€åØ{ï}öY±"„³Ï>÷ÜE‹Êë óæÎ9g„ô}³ß~cÆ,[ÖÜŽ"@€ @ C§G7ÇS]·é¶ÓäT 7§q ›@Gâ7¾?™¬0:¼î7‰:Bî$ @€š¸ôÒ©S_|1„ÇûùÏGŒáùçŸ}vøð¦§s`ÁvJFzëˆÉ“/½ô¥—ªÉú¹¯àE— @€@î*·ÆÄ#“¹'÷©H€@Û¬Ð6ZA r}¼ktN²"ÔR @€Å¨ß`þüçžsK€âW¼¹ ëKþWß'›&âÍY:Š @€@§¢Sã¯D׺nÓiwçË—€€|ÕK´ˆ¿YÙ¤òEßH:Ìît @€†$°ï¾ûí·|ygœqöÙn 0$ÊB\{_ŒsÀ–ü/d‰%E€ P`øûñÿßcí®—Xj-ÐÐDSW 2qõ·£ÒPÜ ËŒ @ È—^zÙeéÒî;î¸ÓN}}EÎTnl¿ýèÑéûà’K¦L©-ùßÈqö!@€ @ CûG7+d¨ BÉ¢@oƒ¬ô=Qy 23ix,Þ?Ü—•¨ÄA€ @€@#›mV]Ú}Ö¬9sž}6„Ï}îÓŸÞsÏâd4r¼}Š!%#ÍdÖ¬¹sÓ[C OFuÉïƒbTX @€¥øjå+áìä_ôg„£Âï—*sÉhXÀ SÙ±Œñy?‰úûû˘»œ  @€Eà€ÆŽM—z?õÔÓOwK€¢TµñâºM*)…6 ¸@qMWú2•¨ÿÜʬ·Vx5þf^ó7 @€©Àf› ž~L4{öܹé->ÿùÏ|Æ-Š÷Þ¨-ù?sæœ9é’ÿ›'Ãǃū³Œ @€Ê)ßßñÖm݆—3YhD@@#Jö)¸@ý‚ÿš‰ÆñÀßö_>S©${üIа&g @€r*pÀ”.â‰'Ÿüúë!<øàý÷o½uN“ö»N:é”SÒ%ÿÇ;ä%KBXßO|ï:Ð @€ȾÀèè†ø”·[|ÿ<ûáŠ@7Ü êΙ ´ú…þïÅ'½µ@Fb @€­˜6íª«ž>„m¶ÙvÛÕ«[5«yº%°u2Ò:NZ½ÕC·âp^ @€Ú'P9´òñpV¥²æj×{jk¾ê² h([Åå;(ø_ûÿ8úW‹E ÍÎ @€r"°E2ÒæÌ¹öÚgž ¡¶t|NÂæZ3gΛ—.ùÿždø)n-O  @€D þ_áÄð§ƒmáÖPòK£A BÙ­ ïþ°ú®þ3~ᣣ2T_Ž @€å8è qãÒ[wÜ '¤·0ò%p '”ÖíÐC;lñâ|Å.Z @€)ðBe ú†•›©f÷’ h(YÁ¥;8xÎÀÔž3ÛI6¸sØ› @€l\yå5×¼ðBzK€m¶ñS@6j²¡(Fª.ùŸÞÊ!­›A€ @€@ñâÃñ4 ů´ ‡"Ð;”ƒK è«7Yý­¯UWˆ¯-z¶ò#@€ Pnô–éÇH×¾¼@IDAT×\3{vº”üõ×ñ‹»ï^n“,gõÕ3g¦u‘ ÿe¹Rb#@€ Ð:Ê_ü:¾8ù à[axøÔ»WvnÝ™ÌD ¿VÈoíDÞÕÿ§ÿÔè§nÐj§ @€ Ã;âˆ7ß á˜cŽ?Þ-2S–ßrì±ÇÿÆ!yä?˜ÖÉ @€ @ <ñ…mÃyZ€ËSq™6#  5ÇäT`ð`}ô-8G@N .l @€C¸êªéÓÓ¥åGŽ5Ê-†DÙ’ƒ·JFú1ßå—OŸþüó-™Ò$ @€äL žöŒ?ê'´œ•M¸ÐÐap§Ë—ÀªÛV|?zX@¾ª&Z @€­1¢zÁyæÌ9sž}¶5sš¥yÚ­jÍÏäH @€r+ðèÀMÑÍ®PûEÑÚcnN`ƒ6ÈãÅ| Ôþ¯=6šM}ÿÕÙÿ™Ã›ýFÒèùìG€ @€@–?üÈ#/áè£?ô¡ßþ6Ë‘3¶£>æ˜Ôýƒ<úhþŬ±¬ @€4*_¿ŸèºM£^ö+§€€rÖ]Ö ÄñÊ+– ‹~l€†¸ìD€ @ àW_=kVºÀ{“áã¦ö{Ëd¤?]uÕ5×<÷\ûÏç  @€d_ >'lOw €ìWJ„ÝÐÐM}çμÀªMûü‹ö2_( @€耀 Ò@~Ç)4\¼Ã& @€o TØ.ú¥oèÝЋ^#Pv¾_/ûaød¥F„Ï*»†ü  @€HÒ%éßx#„Gyøá‘#CxôÑGIÖ¤·\xóÍê-Rgƒ @€5øæø¡ÊmÉ/n[ûJúX¿µsõ«k?ç¾¶ _@@ñk,Ã!,>cÉ@ÿýýñCÁŸ•!8:” @€@®¾zöìô–O=õ‹_ŒHš†'£×OM—zĈ­¶J×_›1cΜÔÕGvMS: @€@a¾ßÝaåæÂXb-p €–0š¤ïþxé¹Yð‹þW¬(F~² @€ @ •[%#ýØiÚ´éÓŸ¾•3—s®+¯¬:Ž9j”=Ëù5 @€ \3pXüØÊ•ëÞïÝ×yÖ½Ÿ¯(¶€ßM(v}e·NÆ¿<{Ø·zD__˜ß¦&·øl89<Ô£qf®¾H€ @ œÇ{Üq¯¿ÂOZ½À¿ýÛ£¾÷½å´h&ëÃ;üðtÉÿcŽ©:úÝÿfC€ @ »¬º.üä­€ûÙ¡5—åà\ȼ™#J$з]ßvé7Ê'+û†ï' @€Ö#0}úŒéÒõ#’10°ž|ùw[$#uJo¥ðÜs¿û²  @€¬W`àßâ+‹Ö·ÀÚ‡5þ ¡ké9< hÈsõÄ>DAüÅ_‰Ÿ+ý†2İN€ @€@.FÚzëtéúË.»òJ´7^ÂË/Ÿ>=uÚ&Ú­7îe @€BX}pß7ÂÜU«X °~·X¿WJ#°ñF€ÊÈø…Êý«Võ¬!º 40%@€ @  N8é¤E‹BøÉO~xÔ¨ü±Ç¶Úª‰‰ zÈØ±ãÆ-YÂñÇŸxbêd @€ @ Q½W?ÿpErµ&G7z”ý”KÀ 媷lxwC@ü©ÊgÂVoCih; @€ Pv™3çÌY¸0„÷$Ã-BH—ü¯TB˜={Þ¼ ’æêd”ý=" @€'ÐùêûÃç­Ø<85{—M@@Ù*.ßAÔ*ÿ^ùÓø¯-)3<» @€(½ÀÖ[o³MzK€)S¦M{þùÒs$·F¸âŠtÉÿm·Ýn»ÔÅ @€ @€À`VNì[Ï×0X7û—K@@¹ê-Û&â‡+3Ãû†Ò$ŸÃ @€”ZओN=õµ×B8øàCY¼¸|8vlºäÿ‰'žrJê` @€ @ Y¾›Wõ6Ûløð4Ï™3çÎMó®9=où @€ Ð>Õ¬üQÖw½¦ÖP{l_f&e Y®ŽØ2#P9«²GüËõ}CÉL˜!@€ @ ÃÛn»ýö}}!\zi9n .ùŸÞú`ôèvpCµ ¿1…F€ @ GK/Z²Oü¸ë59*™P»    èNÙnf;»ÖÜÀØ_‡ïúȪݕ3? @€2œzêé§¿újcÇŽ—._´1fÌØ±K—†pÊ)§–æi @€ @ U+Xö?ãGW¬hÕ|æ!PDÞ"&%'­ˆ|,þÕo(ëohõYÍG€ @€@jKáÏœ9g΂!|ô£óç’E,W®6,¿o–ŒtÉÿY³ªy¥yúù)¿õ9 @€, ,¹÷Í×*x{€n4B?™4*e¿bh(Fe1$ÿÅ¿úCý㯭Z•ìùj˜:¤“9˜ @€o l·ÝèÑé-&Ož2å…BøÖ·¾ñ]vÉ/ÎÅOZ]òÇÓõÓ6þ“V~s9 @€ÝxcÇE¿¨<àÝÑwÖ¼¸@^*%Î.Ô?®ª\7°c8pÙ².á” @€\àôÓÏ:+]*ÿýÇŒI—ÎÏÛØgŸýöKã®å‘·øÅK€ @€@~žù÷_[yÄòåù‰X¤:/  óæÎ˜úþ5CZûëqÜ7ªï[ñÏŠxwÎ53÷Œ @€Î ô$#ý)dÆŒyó. aÓd¤Kég}ôön²I÷¬Ysç¦q×òÈzÜâ#@€ @ ñqáoÃäÿ8ï±Wÿ¤ÖP»žS{¬åU{^{¬}Ý#rh(Geù–@í/úÚcã,};®?°xqãGØ“ @€ƒØ)éB–]tÉ%é-²>.¾xÊ”tÉÿ÷½o—],À™õj‰ @€@¾â«*›…¿Z¼¸ïº¾ëBX_Ëôà¯ÿä[EôÖ- `Ý.¾J` •w­Øµ2_À(ž @€ гÎ:÷ÜW^ aß}÷ß?‹·Øk¯}öIovÖYãǧq @€h·ÀÀ7Æì:M»Í_ Þb¤! ­X»3¬þ|Ù‘Ëî©DÉ7–¯…‰õ¯¶âœæ @€ @€Àšµ¥ôgά.­ÿ‰O|øÃûïÂêÕ}}=]lã¯-ù?{öüùO?]]ò}¿w³fFž @€ @`h•þ«+»½u«æ?h~¦Úžµ›ŸÑ‘²(ÐŲÈ!&©@í/þšF/¹âõ“+—ë,«‰x$@€ @ ýï{ßÎ;¯XÂ\tÑ‹/¶ÿ|;Ã…^|qzk‚w¶äÿƬ¼N€ @€@k¾Þÿj<æ­€wL\»žS{|ÇK6 ”X@@‰‹/õšÀÆ¿1¼qûŸ k¨‰y$@€ @ sãÇŸwÞK/…°çž{ï.½ßé±ûî{ì±|ygŸ=aB‡A€ @€N lÛÿñè/k×iÖw]g}_ït´ÎG »nÐ]gωÀ ÷=ó{«ÿ(ùÆòÉ7/å$ha @€ Paâ(ýkîÜêÒûÿøG>rÀ!ô÷¯^EíK±7éyç̹öÚtÉÿÞÞžžêÇiÕÿ¶ïÌf&@€ @€Àš«ÿ¢ï°¸7Y`òš__÷³µfYûùºòUE°@Q*)¬ý  þüW7ý¿Ï¯úÏZgY Ne  @€ Rà}ï«.½Þy\Љ[œþ…¦Kþïºën»¥·"0 @€ Ð-þ©ýÆcÞ|sÍó×®ãÔ×|õÝ·|^ûuÏ S@@1ë*«! ¬ý"ŽŸœÿøêÕ_Y¹2|!ŒoéëÒô&@€ @€À&Nœ4)mØc=÷L—æoõØm·ÝwOç=÷ÜóÏ·ä«uÍG€ @€@3}¼jLü¹¥K«Ç®}§™C ¸Š[[™µ\ ޾60¦$KÌ @€è’À°aÕ¥øgÍš;wÁ‚tiþaÃZññW»æí“Ó @€ P U®¸(\´±ë3ÍþdÔìq–J¡z •d J`ð¡WÎê¿)>cÉ’a7 áÞm¶ÔéìL€ @€ ¤¿©¿lYõ7õÓ¾ûÝÛoßi§æO®,.ùŸ®,Îk @€ @ ++®_¾wÿÿgᆲ¨ÎÿŸ¹» ‚XPAQ°÷† –¨1FÔÄ%Æ|MLìc‹F¬K4±b‹ˆ((ŠˆDA¤Iï½mß{÷Îü0×ÏoåÃÜ-Èî½oþÈÃóœ3gμÆ8ë>³w/[õ+ú¬ÚÑ eWì†)À ó¾°«U@/(êäÊ«z:}TtFQQaäʃ·4ˆ € €l8³Î:çœï÷#G~þù[87kÖÌ™oœý~¶Û®]»òrçÎ8ã쳿{‘ ú¿€²_ƒ™ € € €Àú(߯´CpxQÑêçн(jÔæªÈ~@~Üg®²F¾CUí˜a05ZœÉ € € €@½ ~÷_1—_~íµÓ¦eÿ+ô‘ÿW\qõÕÓ§w\“&¾ÿª× ³ € € PC•=—}“Þ_¿ Ûÿr±ól^ÃM0F"À äF±Íú¨ý¿à«vO~äz.[VŸ»a-@@@ >vZõ§¬Ì¹SOýå/,ˆ_ñôÓÏ<ó»y»ì²Ûn|ä¼3@@@`à Ìl5ý¥ô£K–¬{¾þ¯¾îÕE ± ð@c½sì»ú»b¶‡j¾¢så³*ŠÜ;K—f»ó@@@[àW¿úõ¯çÎunûíÛµ«¨XóìÛm·ýöß}ä¿~uÀš3¨ € € € K`T‹Ï{•ÿŸ^PßÆÆ†µgvƒÀ†à€ %Ïy€€ïÁ ºÝbUü½lPø/Xr@@h8ú(ÿË.»êªï~%@bÕŸïþ+'2ñ¼âŠ™3kÒ¤iÓ0l8ûf' € € €€ˆ®Œº»ÍÊÊ&úÅàÔðï>ó,›?¾>O6Ç2Æ/PØø/+@ ¾ìA¹¢se-K–¥OȼaV8¨¾ÎË: € € €@ý ìºëî»—”8wÊ)§Ÿ¾páw/ÁwgÙc½ö**ªÿó±" € € PßUïWÍ ?Yõƒ™mW­¼µVWßFÑÖ•ÈO^ÈÏûž'W­ñg¾É•ýEë8{D­|}éßÇV=h~¹jì;NŽ € €4ùú­/+ÎZ¶,:,Ú8z«²2îÆ@@@@@@j'P¾}É#Ñ_,È­¾Ž]ËÖmnç“#Û¼Û÷—««•€ 6:—œì\U­¨º>j·hQ­–ç @@@@@@XâWŠ® 7š?õ‰köoV·™¯ÜÎ#G 7x 7î#WQ/qÿÂ×x%¯©LGÍ.¬—Ó² € € € € € €À‹ÿ5ïáètõcÔ§±Ó|u;ü(ÌËä*¨‰€}P(W\õIoT$\Ëùó[\¾‰‹ÚÔdmæ"€ € € € € €d#0í£oÿ^±G¶Ÿ >ŽÙœ‰9䎟;÷’+©w= ìÂQT¾KÉcázãÌŽ“#€ € € € € €ÔZà#7ÕmEƒòÞ>©;Õñ÷mjwßzµ[£h(|@C¹ìc Äý ~ÍñâKæ…­,ˆ¢¨ÙÜ8§F@@@@@rN Ý;}ÔmÅŠ™]'LPY¹ú®Ù·ÉŒûê«M†@® ð ¹~‡¹¾èÁ`£–¨®/é²èذßܹ!"€ € € € € €Ô@ò¬Ê–îTßGÿëêÛ(W´u›kÜà€Ü¼¯\ÕZô/x×:ùÅ5çOÛbR²êÊÙ³0‰¿"€ € € € € €Ôƒ@ÅÕå—…G¨£>Vn£Æ5®œˆ@~ð@~Üg®r¾€¿ÞT¯ý+FΙãn¸ƒÂpË3ˆ € € € € € µ@Ù%Eí ¾¾–×<"¹-P˜Û—ÇÕ!P=u¬òê¸ø°¹Ÿ¦L¥R3R†¿]¸°É´¦.ˆ¶ÝVG@@@@@@j'°ò«åCÓc|/T÷k2«+¯Ý¹8 \àríŽr=k¨í¿øãŽ‹¢ä[•ŸGè´–SSB@@@@@¨‘ÀÂÂÙ§¥ßž5«FýÿÉqýÿ?‘¿ “¼“·•‹ª€ŠZE¹Î•?^zhøÝ¯à € € € € € €@½Œ]ðÅ[U7é0m&.¯—-°V€í­cãu°»¢_3/iY|Z4A {<9 € € € € € €@¶ÑUáŽÑÉ䀿¼ñZé}‹­~œíÓ¬>ºffç+_s&rI 0—.†kA ~|[¢Å­çï–þ`Ú´Ýn®IýœœU@@@@@@¼¨|½rWH4±º>þį*“ÅS§j„ˆ € € € € € P;ò§KgDŸO›–9ºº³öÕ4¾öQµ¶ÇùWd†$À én°— , áÛ¨m­Yõ¡·” ™=;Ü3¬ŒzVVj&@@@@@@ fEg®¼#ì¤t¬íÏ(·ãʉä·¿ ¿ïž^}M š¿f,¾âôï>‚&ùlr·høŒÍŽlöŽ‹öØ#Oa¹l@@@@@@ ÖK®[°Sj;}ò²ú2Z.Û\óu<üàòã>s•Y èAà‹ZdÍñòÛ‹‹µo¤i>@@@@@@ N`ÒQ£?Hc_X³/³ú:_½J†@¾ ð ùzçóòºõ‚š]¾ŽSÔÑÊ£hÅV<.6móhë;[hœˆ € € € € € '­t׺‹ªªúÍ|qã’æ3gfæW÷aV?ÞW_}ù*À'äëçº×!à{pغrç÷žû×tûɓױ(C € € € € € €k¨œX~kôÒÌ™‹û,îã\UUfŠú06j[W®q"ù)À ùyß¹êÕô@P\mpU¢º?ÿÉ'‹“¯Mœh$G@@@@@X·@Ù³ÅýÂÆÏÌò÷cV÷­é;Þ7Ÿ:¹%À ¹u?¹šzð= Ö¬÷ëÛãø²æÍKŸ›¾<ê²|y½nƒÅ@@@@@@XZ¹ä™ðrý åš}˜Ì¥g[Ïa(. , ³˜ÃòL@l/[ó£¨l¯’ÂhÒ¤–n3—ˆ?<Û˜‡ € € € € €ä«À´ž“F¤^š0ÁãvªþdfŸ†ú2¾q_½¶ÇùÖ£Ž@Ãàæ}aWDÀþ‹_¹/†af›ÕãEŸ-Û!š²êÅ@@@@@@u ·¹wݾaøö/Ý[Þ9ÛOÐ’Õý™LÅæšGD ¿ø€üºß\íjz¨™¿©^ó¸`ìÜ'ªMœ¸ÝÜÏ(вD@@@@@@5*N«=0kÖ7m¾úoÕ%%™ 5íϬ±,òZ€OÈëÛÏÅ×LÀ>pttu}tÛÏf¦¯" € € € € € €ÀÚJv-úi8,ÛŸü¯îǬ¾šê«WÉÈW^È×;Ÿ××í{¨î‹BóGQŸ¿?³QټٳÓÓã£=‹Št@@@@@@`ueÝ=¢¬ô÷_2GùÆW_“ |à€|ÿ'€ëÏBÀ÷@ ÃÌÁÕã©S:†¥ß>0fL‹3@@@@@ÈKq‡Œé\µðË/3_ÝoYwn©â޳óÉÈm^ÈíûËÕÕI@ -¢\ÑW¢¥,¼$üpôhÍ "€ € € € € €d¢èñÊÊ—Rw,›2iR¦ªþKM#ª ðCÂ&üÖ&à{Ðè«çMê2¶SÕ=£Gïäöp…M×¶&5@@@@@@ ?ÊþRzLxÚ¸qKû.(­jšLfªû,™Üö_deçÙ\ó5®œˆ@n ð ¹}¹º¬ô/þú‹}š=ûÇò'Æsoº“Ü©TVÛ` € € € € € +Ú.–ê“”mÆ6þí¸ò<€â¨…ŸP 4É= ‚ fW¤ãüqÆ•“‡VWQQz^ÉMáe“&56q ·ï¾5;³@@@@@@ܘññÔ«Ó{ú^Ðõúú0v\9¾àøç5|”¸úšo¤-¿|i]£Ø'¢€ € € € € €ä@ðW÷¶Û; ßÛóÒcÇf.\ýõYU÷E±ÙqÕ‰ä§/äç}çªk%` ¾\¦0œÖiâ­©ö#GÖêt„ € € € € €ä@ùò²C£y“' > ÒÁŠ™KS_Å×w‰«[ Í·uròC€òã>s•uЃ¢æñÅ_þû³òë¿øÂ½æNrW¤RuÚ#€ € € € € €X`Éõ‹&¥ýùç™K¨yßeõãâ ´~Ü<ÆÈ-Âܺ®ºØ͵¶êŠz3MQõ(šÚoÒϪ/++™X|Oúþqã6™ÓÒ%¢´@@@@@È)£¿Yš¼eĈÿ]ïköU2Õ}–µçÒ²óT'"ß|@~ß®>+û‰Ë×|`-2o¿ð€ïhY“I € € € € € €@nD½¢ã¢‹S©þöÄ~•×õUæªl¿EýE;. Õ•@à‡¼ðC þž§¾…ê6ŠÉÖm^ý€?ã«ãÒ7}ö™Ž$"€ € € € € €ù"P2¯è€èÆ1cfm÷Ý''——g®[}EÛgñåVMólüà€ü¼ï\uô É6†á3‰nÿ,þò›oÂ÷ý܊’’:žƒ@@@@@@F$°ðùy¿O߯OJζáŸíÇg¶nû,köUÖ>OÇÅd;/nÆhœ¼Ð8ï»^¯z0ÔW¬~pÍW@mìƒÅæz0)V¿òD÷ËJŠ>àÏGœ²ùét0Ê]ã†Ôfƒ € € € € €4d%K´N÷<8µêsköM2{¯î£d—7ä+folx>`ÃßvÐ`ô€±R]QãÊõÀRT]Qõ0yÇiéý—//]X¼]X0v¬V""€ € € € € €¹&0ñù¯‡§NÐ'#W÷K2×éËÕ_©iÌ5=®Ú ð µs㨼Èö£ךóç.™ñlxáС{¸}ÏJ éÐ!¯9¹x@@@@@È)ð¾ðÉèåòòç}ðéʾ_|±êâ¶snÍ~Iæ¢ãê9EÃÅ °ÞøèñõNÌ Ÿ@dö¬¨+PncâûOÒ°Qíoë‰ÄFŸo< ±ÑÊ•‡ž|tó&“Ï=Wg "€ € € € € €]`ùWKÚF‡ ò\÷‡ö/»ýw2×SU•]L§3óôƒ–6ê…«ä«Ûyää¶¿ ·ï/WW'¸…Æ}Ñ÷@Š¢×Ç=DyY³*ÇW\uœ9³NÛä`@@@@@@  LvRPõó¡C3[ªyeíÇ5  d+4`^hÀ7‡­m(=ˆìùUWÔ¸rÃ?3ÓŽ‡á¼7f<îðÁZ‰ˆ € € € € €4VèüpËèêd²ÇýsÙ&œ¹Ž5û#™ºú+µU‰}#°~x`ýú²zN Ä=|4Õ£èƒVýÏ­¸{àÀœfââ@@@@@@ /Vì¼ìÚhñ°aãúŽ•Þ¼¸8sÑꧨ?⋚g£Nó|ãÔÈOÂü¼l®šØˆr_ÔƒË7®zö~­ûÈŠVÓ§_¸ÏåÑÆÏLž¼ñÑ-‚à†Ýv«É € € € € €4‰3Ǽ“Úçý÷3{Q¿DQý_´ótEv¾êŠWND ¿ø€ü¾ÿ\}ô@ñE=¨âãœôôo«Žà“êt;8@@@@@6ˆ@ºcxmÔ¯¬¬ûÉ÷Ý^Ñ}ÈÌ&âû#™y¾>‹êä’8)V€í­cãë_À÷`‰«k\1þ×÷ºÏ«¸ê€÷Ý·®•Ž[ÿWÈ@@@@@@º ,»{á'áóƒÏ~~úÕU_VTdÖS¿#¾O²ú|ëºkŽG 7x 7ï+Wõ£Ä=x² }°Uß’äµóç—lU´M´ô›o~”ís@@@@@@ ¾™6òòªú¤ãìû#™S«ß¢ã”+ÖÃY<à€<ºÙ\j]ô QÔzÊ}(Õל?í… åUÛ¿ý¶V&"€ € € € € € U jnª0ê¸lÙãMïšWúÚˆ™}ª¢¨~ˆWÔUjž/«kœˆ@~ ð@~Þw®ºFöA£ƒU÷E=°í<Õ«ãccïìTöõ»ïêwåèLD@@@@@@ ¡ Ì3crx×€Ë{.ïé\2™Ù_ußcݹ¯obë íªÙ [ °aoÝ!ИìÉæñ¼©Á¤ ”–.~`Þ¿Ó‡ôÑ6ûoï ¢Î“{E@@@@@xß}불¢Óûô)?¼ÿÌÕÆ÷AÖ>ÏöS¬]ܸOŽ@~ ð ù}ÿ¹úZ ØM\^Ó^}vÑG‹ª¾~óÍZmƒ@@@@@@õ(PtçŠÉQ“Ñ£_ãùÿ&S³feN•m?Ä×Wцí¸êŠWND ðÀ5ø;µЃÆF=èTWÝúŽ;Êʾþº<(›m9}z­¶ÅA € € € € € €Àz˜úºcꓺþä¿ú%ê£Ø¸6Î’ä¿ n2—X_zðÁºWÔú(s¦ø~ÇêóÔ?ñEíߎ«NDu ð ëÒa u ØO\^Ó`þ·Ó¿ÊËž0 l.Ž®¯¬\çvD@@@@@Ö£À¼½f—‡Û¾ûîÜ`jÊË3§Ê¶ÿ¡>Šæ+÷E{!šgëä ðC^ø¡G NzðØhdÊããWG~Ö.ýçåËž>w‹pêÀuÚ#€ € € € € €µè¾u[DÑ[ýz–$'¾újf‰ø>ÇÚçÙ>ŠòÚlŒc@À ð€!G V Û‘æ)êAhót:sJEÍ«Žx¥}²¢wo÷ý6v‹L@@@@@@êI`Y³Åw†÷ öúýÿ *Nš1#³lu£n¹ú&¾XOÁ2ä‰@až\'—‰ÀzÐI§Pî‹qD½ XPÐ{ÐS›Tôš:õWÇþ_×v5j3×j÷ :䑈 € € € € €¬/áG|¸]²ÇªTüߟlûvží›h·¾ºÆ‰ P> &ZÌE +û Rnt5ÏGzwê+=`³Ú “@@@@@@Z ”O.};\:}ú£oum]Þï‹/2‹øúúÁF߸êê›ØèÛ¢æùÆ©#€Àø€jðwj$ N¬û0ͳQºìãýÑͧ—m>lØ‘óN¼ pĬYÍÚnübâ¤öí×}~F@@@@@@š ŒkùåØô%¯¼RõxÕ3ÎÙ~†þŠv\¹¯?¢ºö¥\Qu"ÔD€O¨‰sX§€HqÑ>ð”ÇÅtºªwÕª×I§'í;æwáâW_]çvD@@@@@j!Pµcj×jùòGïìúbÅßß?³D\£?®Ï¡q_ÅnTólÖ%À ëÒa : èÁä‹zÐÙ¨¨Õóî=øÆËJ:÷ïŸ:0õï¨Ã’%uÚ&#€ € € € € €?˜òêøS/÷î=÷Û™•éËË3CÕ}Ššå¾>‰­ÿ`üj-À µ¦ã@$ ”r5®XÛdõqKƒ…«~í@eåäK¿)Në½êSøƒ € € € € €ÔM =#½ôji飻ÜùiŘ×_ϬVÝŸÈäö•Ûy6WŸDÑîÕW·óÈ@`]1¿»|]‡2†« æÿOÊß¿hccAAæø&M2±°0›6]=j|£VŸß´iûv;Í,Ò²å•ýnqTŸ>…/6ù4ØbóÍ3óø_@@@@@@ {ÉÁøžé¯ŸþŠŸžÑµd‡îÝ3G&“™˜J­ž«n£æUUeæ+ú^Pã߯ÌÑü/ÔL€O¨™³X‡€LvŠê¾h߀ÓPQã6ÃY³§ï>º¬lꔉ£Ò/öécÏLŽ € € € € €Ä „Ÿ„£ë+*ž½¹Û½å÷¾újf¾úŠêSø¢æù¢¯O¢zÜ.Glx %æ P+=°â¢„š§\Ñ÷ U= Þ¾Ë%•¯½ž“ž}\\\«ír € € € € €ä¥ÀÌöS. ç÷í;jÔ°dúñåË3Õ}ˆL®¾E¶Q}‘*WT]ÑW×8²øþ#dz™Ê¨›€\¾h˜z°êWØqåéô”¢q¤ÿP\<õýIG†3_{m×pï ÜÅ×m¿ € € € € €¹,¦'G¿¯¬|ö G”{å•̵ªÿ ¨~…/jž¢ú ÊUÏeQ® /À'lø{ÀrN î¦q=ð²ñÖnûß°Uùð^½ª:§ŽŠ–¯X‘s´\ € € € € €Ô›Àôf“‡†íúôùüÐ~“~wéÒÌÂê[¨/¡¼¦Qý¸Xo—ÃB °J€øÇõ.`l:¡­ûœÙ?`g´™ruú×¥¥Ç|]¶ëÙSg""€ € € € € €OÎüJáêRV>·W¯L]} Û—Pn£æÛhû:«/j¾oœ:ÔD€j¢Å\j$à{`ÙºríÓ>X}yví{Õ¹%sûö­¼°âÒè²ùók´m&#€ € € € € €@N Œï9æŽô./¾8áo£Iw[¹2s±ê;¨?¡ÜF;®\}›«ncNsql0‚ vfNŒ@ÞÁÚ/UuEÍRncâûv5®\1*?*ÿÒ¹(Ú§ÿÁ¿M[^¾]¸Ãþ‰Ï;uÒˆ € € € € € ÉÂämn»%KnùÙÅ¿/¹þ®»Jî,zŹÊÊŒ„ýUUkÏUWÔ|}/Xo½`ëä P> .z‹@V¾˜ê6êÁh£ïªyW†]Ž¿òåw½÷^YªdûpÐÔ©Ym—I € € € € € “_mþÙàÔþÏ>;¿Ùì3++Ë\¤ú ¶Ï ÜFÍ·Ñö;|yNÒrQ4^h0·‚䟀ïÁ§º}p*·Zåv< ÓAåªOH¥†úðÞª'ž}6ÿŒ¹b@@@@@¨¸¼4ˆ^ž9󮃮]PþÊ;ïdDÖì+dêê;بùqQ}Eü@àÇà€S›s!ð?ûÀS®è{pÚ­/×ñÃn]n¼£âé¡CWô^:.ì;b7@@@@@òGàã®J5ôÑÊ tÕê#üÕOPT_!.j¾¢ú¾h5ÏÖÉ@ > êcÖ@š«®ßýQÌdչ꾘øþÅ+·ÑŽAÕK©Ê¨ÉÔ©‡|}Ì+M6;õÔ`swº›£ã´" € € € € €ä‚ÀÒûì˜þzÈn»èâò=zd®I/dí :N/Øhü6ÏY®†+À'4Ü{ÃÎr^À>ð”û¢}€*·^åv< ߨë…7RÏLŸ>3œ|c8ôõ×sž˜ D@@@@@ ¢'¢Žîg©T™uJ~üä“õ lT_ÁFÍS]¹úÊU÷ÇûŽ£Ž5àj¢Å\êU@?¡o£=‰×OìûêW´ó‚`ì _™¾m„“¾þóŸì[ÐÊuÛxc{fr@@@@@h|SšL(§½ôÒ#¯üíÍŠW>þ8súÉýšF½ ãÔð·Q ~Ÿ;F 1 ð ùî±÷°¸\Zû`UÝF;/ g^÷íUé.%%_5ìøô/Ÿy&G ¹ @@@@@òZ õy²³Ûrñâ{ç_ûDE——^Ê`¨o`ûªÇE§þ…rEÕ}ôqã¾ã¨#€@m¾ÿ]äµ9”c@ ~Öü ý̺ªë'ù ¾ÿÄÅ&M2ó 3QyÓ¦™ÜFWÇ‚Íp®iÓWÎrJ‹²GmyÓ¦}möÚ+s<ÿ‹ € € € € €I`ð/ßm’œÝµë]å×îR¹ù‡föžJ­=&“™º¾ù¾ì‹¶áoóÆ$Ê^h|ü €ÆwÏØqÎ ¨Ñï»0Û¨ùzA@ãÊýõèÞô¿œ ‚ô©‡Ý I“\zÔ_ wèÜÙmœåæéx‡ˆ € € € € € Q`yéâ0¼ùóϯéyîå'uïžÙ£öúèþšF¯¨F¿b\c?n¼!J²'¿¿ ñßC® Ñ Ä=5®ªöÁ«<.V¯óÚeÏŸŸ>uêÔÒñχ£zõjô¤\ € € € € €y î^ÝVVöX»»ß+¿ò¡‡2—\ýýÿÕsõ ô"€ru¼êêSdóžKD  ð@¾9l-_²}€jž}ë\Ó†·'.»¦teå?+Ý5sf¾Þ®@@@@@Æ 0¦ÍˆªNyúé!ß¹.ÜlÁ‚ÌžkÛ7°Ç)·Qý ŸPܸï8ê P¼PЬ@½Ä=5n´6küûßì[ö—Eƒœ«¬|}Ì ýR÷Ý¿{7ïZê¼õr‘,‚ € € € € €u(þpåïÂÉ'Þ¶üÛVìׯ_f9_À×ðÕÕwPÀæªÛXÇ‹âp¨‚zY…E@ ‚`Ý‹ÙqåÙÆÄ÷/þ(Úã‰1O|>*]´dɱm;ÿ¢°pË-7;x‹mƒô{¬{_Œ"€ € € € € €Àúˆ¦F¸«ªž»áÁo’½n¹e–_vç,Y’9§^Pc?.ÚùÊÕøWTÃßw…qã¾ã¨#€@} ð õ©ÉZÔ‹€ï©ºzð*êÁõà÷Í Ã{Fÿù•¿~òÉÊåoEU ÖËå± € € € € €ÔJ`Ò³cNKßÚ£ÇM_(K Ÿ6-³H¶ý__@Çû¢íKؼV—ÂA °žx`=Á²,õ' ©VTn£}0ûû¾üšó§M›Ø"ýxIIÿ+^*¾ûnwMôšÛFçÑ~ˆ € € € € € °>Šw[¹Eøéøñ7]wIYùÉ={fεæ÷õW¯gßXý8õlB¹½R_ÝÎ#GC€~ eÎ@­|LÕmÔÙÆ¸/âÆÃðée÷¿˜l2vì”û&•Þ´wïZ]!€ € € € € €@Â~á›ÑùÏÝpÿ•©7î½·òÂÒûœSc_ý€¸ïók¾ožÖ±}›këª+'"€@Cà€†t7Ø ë°Tå6êAm£ïÁ÷à¯>î¯Ë/žQþåsÏ•þ²hLôå¤IëÜ.ƒ € € € € € P'Q~ú÷ð™Ç»oŸ>©.³gg«þ¾ýÚól¿ïoûÊmßA¹½_ÝÎ#GS€~LmÎ…@­ìT¹öÁ¬Ü÷…€ýÀæö¸0,º¸èbç’Év}d@òªþ3jNqçVVÖê²8@@@@@Ö*°ü_K‹.9òï‡ÿé³òô€™Iú¾¿¢ý>¾ý>¿Í5߯Üö”k‹6Wˆ I  !m†½ €Àº‚`õQ›¯>êœÆ³‰ï_Ò|›«“}=&œZT´ÿVwO\ZY¹Í.Ûï <ôP»r@@@@@È^ udjï¨ÏŠwtõë•·ß|óܳv’%%™ÔÀWTƒ?•ÊŒûrÕu¼ÿ6ªÑo£®CuåDhH|@Cºìu تr_´låz°Ûhüv\yõ:½øÿά¸¬oß%“æïýñÓO×¹}@@@@@@`íïFã]‹(8´Ï¢ªA÷Þ;êÀáÛ¦K–.ÍL®þ¾|&×÷ëmŒû>¿ÖñEÛoXûV©"€@Ãà€†}ØkÐØ©n£äúBÀæª+ê EÕm ÃôþéýK§»žqõE•#»u«8®â×zþ|»3r@@@@@ð LZ9¶*üË/þû”®[%ï923Ó~_^¹¾¯¨z¶Q}EÛW°¹ö­ºr"4D~@C¼+ì ¬ô‘üšìË}u{œæÅÅ55ÀÒ‡}ÍJ¥‚鉃¢¡&ìÿ~ÇÛ ¿9é$wDð'7§€ψšˆ € € € € €ÀVô^vz8j̘+šŸõ^ù¹÷ߟ™ZñÝÞe¦Ø¿rEûÑÿ¶n×QÃ_Q }°ÁÿýUã¶NŽ Q€Ohˆw…=!•€}à*·Ñ>È•+Ú/ô‚­ûòêuzõ|ìê}'NýÒ°‹Ò—<õTV—Á$@@@@@òL 5>Õ2z{ùò¾ùÂÊï¾»òÑÒéÎÙïÏWÿ=Ããû>½ŽSÔ!€ € € € € kWE¯¹ÖaøÎ-¯|]õÕ=÷Œ¼rðíaÓÅ‹3—i¿ïn¿/—Ûã«¿oŸYß—« (t›«ND†,À ùî°7²°`åÙFûÀ·_ è Š¸h ÃÛüi\rÔ×=_úbôó3²º&!€ € € € € £cß9<Ýéé§OÞùóäµ£Fe.Sß§·ßgWîûþ¼Wn×Sîëä(6—…@ž ð»¹óôÆsÙ¹,™«SÔµúòlë‰ï_Ò|›«^‹>XVM©ªZtïÜ·Ó/yøßŽ?µ`ßNHœPp–{·Y3팈 € € € € €@. Ì;zÖ[áN~xU›3ÿSñÁ“Of®UyE5úÕÈWžJeæûrÕuœ¢Ökük\wÀæª@ 1ð@c¸Kì ¨¯ƒl®º/ÚùÊkgôš|wôDiióG›_뎚8q¯iÞ^°è„‚­ÜÙn‰^$ðí‡: € € € € €S äý¢]¢ó'O¾vøùÝ*Þûû߈Or.™Ì\ôjØ«‘o£}ÀŽ+·ë©‘¯ºre«ºr"4F^hŒw=#•€ö¾ÉWÔ<å5jäûûê•á„.^¼÷ü_—–n{bûÖ‰uì¨3@@@@@ÈT×䀨2ˆç@IDATï²e÷žqÃ*ϼñÆÉ×~ýiô¯+2צ†¿¢øÊãþ×|ÕðWTc_1„¹ð |ÿ‘Þ¾aê Ðx|rÕíÊõƒ¾ð¨iÔñŠZ7 o󇳓[¿ñƬYS‡‡·ÐxÙ9 € € € € €ÕáñaàŽN&{þôßRMºtqþ ‰áŽ‹efTŸ<“ëûçŠú>¼ÍUWÔ¸Z_ßÿ‹Ú·æ)'"€@càóÝcïd% ŸÈ×d›«î‹š¯¨yÊk«¼ä­…UŒuâßÎÜ® Ç¾ûn<«ùvA¿m¶Ñ " € € € € €Bà7Á5¢Á/¿Ó=õ`·n=uǨªGŒÈìÝ6ê•«¡ï‹úIÛ㔫ño£ûŠVÒW·óÈ@ 1 ð@cº[ì: ¨Qï[DãŠvžêõ+çTÎq.ŠFl6øó¨dذã?ÍìÞ±cÓã6êLkÕÊî€@@@@@†(0ö´‘÷…§wïÞå’Ëú$ÿ¢O¾µ y5ìÕЯmÔ:v}5ôm”˜êʉ ‹¼‹w•kB`¶¯Éª+W´u_®º‰ïÕˆ­WçE,+ަTUM›<ñÁpÄgŸÕò§§sLá¢ÂmÜs-Zh'D@@@@@’Àì§^¶{ë­«ÏýÕ'•=ûlfojÌ«Q¯¨†¿rûþ·QóU×ú6ªÁï‹’Ó¸r"ä’À÷¹\º$®²°xå6Ú/ ô…†¢¾à°Ñ7®ºaøEó!ÃÍ–.}êüûŠ’ŸÞzkU»ªÑUÅÅÙ]³@@@@@øq–¼¼`\Ø÷³Ï®|Îs•ßþç?™³êûéöûßúþ¹ê¾\u_Ôú6êûúª+·¾ºGŽY€OhÌw½#P'ý¾o;®\QÇÙ\?ñoÇ5OÑ7îÜäYß¼½WTœ—øÔ]9vì~Ë9² èøãƒ¦Ak7£°PG@@@@@ø1V.]¾stÃ7ß\Sù«V•—Þ~{ñË+vw.™ÌìA x5úm´}ß'è8Í׺¾¨Æ¾¢Dl®:rY€rùîrmd% †¼¢=ÈW×<Û7®ùv^u>ö¹‘Éðµ%KÚ oû\ðÕìÙ;]¹÷‰—:ur+Ü1®Ø¾h ãˆ € € € € €Ô¯@Ù­%çEnÆŒ[7¹dÇÔ”[n™sïôC¢•¥¥™³¨1¯Æ½jäÛh_Ðqš§ÜFO ~E]s\®yDÈE~@.ÞU® Z ø¾ P]_PØh¿ð°_˜(·_Ȩ®ãm®z>4û¶©M†ýèî7UõÚ½÷º+¢>®•öQ«‹å @@@@@b*¯+ÿ8*š;÷Þ}þµ¾Ÿ­¨ïwû¢¾_®ùŠš¯\ë+êûõqQ—¥yʉ |@>Üe®¬â~"_‹Äͳã:N?±¯ñšFç†}ýÁËá³fíô³=6 ®Y¼¸Ý¼Û%Fq„ÛmÕ¯¨Òz:@@@@@Ú $÷«\}²hÑßë6èÕpßE‹2«©A¯¨Æ½¢¯®q½ \QÇ©áosÕ} ~_½v…K€×ýb·üum¤Ûãm®KP]ÑÖm®yA0xÜ;SÂÁÓ¦íyl‡s³Š‹ÛNh¿4ñÄ¡‡ºÝÜÖ¼ 7" € € € € €@M’ÛV^½¸téC»ÿmlrù79òíÂÎóæeÖQã]yÕÈ· ~åŠ:Nó•Û¨F¾Î«\QWgsÕ‰ ¼wkF +ê†ûÚ§ÇÛ£4ßÖ•ë”Ûùkæ ëß;Ýmòä}î>¸2Ñ¿¬l›t»ƒ—9D+@@@@@ÈF êŠÔ)Ñ5+W>Ñìž;Se7ÝôÁOúÞþqöì̱jÀÛ½r5òmTÃßÖ•ëxEÇF5øuEq¹æ@ Ÿx Ÿî6׊@Öl¸gw¸ŽSô¥qEÍS®hë6‚_è71ýÂĉlwÄ—‰+ÓéÖ;¶ýEðE‡šID@@@@@`m©m’ÛF7­Xñô£÷]• n¾yÀÀ^û„·OŸž™kóÊÕÈÏ6úŽS]1îÿk»—Ô@ #X»@ÜW´_è _¬íD¾õÂðÆû.žüW¯^_̲{úÀÿüǽí&¸fÚßÚ¯’* € € € € €@þ ¤®IˆîY¶ìé蟗§ nº©IÏáÓ¦e$ì÷»}ßÏŽû ßqú>·=¾Ÿí‹ö>iž­“#€@> ð ù|÷¹vj$÷ù¾Åìqv^ܸæûæÙz|ôfÿ®áœÉ“wý|ß¡ÁiË–mÿÈ'fv˜Û-híªì|­OD@@@@ÈuÊ­*FG//ZôÈÁ].Mµ¸á†÷~úêÙáå³fe®[ y5è}Ñ6öõ"€¢÷­£ºÎ«¨Æ¾¢îŠÍU'"€Õ¼PmÁß@ +új ûÖQݵI;®ºb|òÅáø)SÚ¿óøà™yóÚ»ÛäĈ#ŽV¸c\I‚O@@@@@ÈqòÒ²?ESæÌ¹ïŸ7lžjzà Cî{çØð„ 2—­Æ»òж‘_×\ëê|6ªÁ¯ºnŠê¾\u" à/ðOÔR@ xßávÜæqÇùæ«®¨ul^]:tࢰïŒmW¶¿#ødöì»_žøàÈ#ƒÖÁ¯Ü ^@@@@È5²É%Få3gv]zÅŠTùM7zrÈÓá®K–d®Sv5æ}~ý„¿¢ožêZÏFWQ ~EÝ…¸\óˆ €@µ/T[ð7¨‘€m¸Û\‹e[›§qEßúv¼zÞ°¯?x9|bÖ¬MvÚäb×aâÄݾÝ÷gÁAG‘Ø#Qê&4mª™D@@@@@Æ-Pü›•†K'Nüû„Ë+Òÿõ¯ß¼4òÓ°Ûò噫Rã]Ñ6è•«‘ïkøûê:Nëè<6ªÁWNDü¼à·a²° ÷¸<«E0É®§!ÕUWT]±º>jÔ§Ÿ†Ó,(ýWI«è”‘#÷ÿ ãʼn·^°CÁ%ÁGÍ›k&@@@@@ q ,ž¿àðèšáï~êÜR»t™uý·Ý£¨¤$s¶oõÊ}1®á¯ãÔø·Ñž_}e®ºr" /ÄOa ÀšöÕÒGíkžò‚ï_DR^X˜9NuåMšdêŠquÛ¨óhýDâèäÉŸ$úm»íµgß±KaÛ;îØøO-Š‚NíÚ­¾2@@@@@†*0ã­É›…ƒß|óª]Ï9,uØã§ÿ\9Ç95àmãÝ6ê•+ªÑo£Wn£Î«¨ó«¡os©jÜ—«NDü¼à·aj% ¿Vî‹¶!¯Æ¼¢mà+׋жns­ç‹‰Ä®ìÝÛ¹M7½cr÷mšnޥ˦'o±UP¾ï¾º" € € € € €@àÆ»¢hÒÇœuxé¥?—ž—JîÑ#³;5ØÕˆ·Ñ6îÕðW]¹WÔºÊíyÕØW]¹,ãrÍ#"€ñü €x#f €@­ÔðÏöàšÎ·ëÚãm®ùþú²w÷q.™üøÖwg¤+>ªüÄ= Û~ûM[¶ ÞÙa­@D@@@@Ø0á¡aÒí“LYòÞO«ž~ðÁÛ߸´ªêŽ~ý2»Qƒ]QyÕ¨WTƒßæ¶®qE»®Î«¨Æ¾Íe§q_®:È^€²·b&ÔJÀ×p¯ÕbYdÏgs-ᯗ¿\<㻆z눞‡¦ß:tß›;žLJ¥Úl{tâ™ÜîAk—ö¯õ‰ € € € € €õ%º ùBô—eË^îõøßÃNûÛ=îZš>oäÈÌúj°+ÚÆ¼r5îmƒ_¹¢æ)j_ÔùmŒkôÛñúRcÈG~@>Þu®UÀ×(WÝFýJíG÷ë#þmÔ¯PÔ¸ÍUW´ë+×>‚àòq·§ ›~øÉ~µeÁÉ7ÞX°qÁ0÷Nóæ?*''C@@@@òH dÿ⛣’©Sÿuڭëuí:|ô‹ÃŸ-\˜!°vÛ˜Wã^Qã¶Á¯\Qó}Që(Ú}¨¡¯ºn˜ê¾\u" P{^¨½G"€@Ôè·©n£ï6ª1¯¨¾jø+jÜæª+j]E{þDâô {&®Ýyç‹Ïºîñ‚­ºtÙ袟 º¶ic¯Œ@@@@@ v KçŒ~ñÉ'7þö„TŸ‡Ztæü­œ«¨È¬¦Æº¢ñŠ¾Æ½ê¶ÑosͳQë+êüŠjðû¢,4®œˆÔŸ/ÔŸ%+!€@VjôÛɪ۸f>s¤ôŠjàÛhþ6·óm®õ×ÜÇ^¯ô”s›mv[»‡¯+œqÛm›/Ùrdb÷ýö³WFŽ € € € € #pYôŠÛ$ ÇNúbiøõóÏß¼ñoÿSµ}Ÿ>™£Ô`÷E5êÕ˜W®hü6×<_ÔºŠvjèû¢®]ãʉ €@ý ð@ý›²"d% F¿&ûrÕ×lÀgŽTƒ^Ñ6ðmn_°¹¯um¬ÞOÓÅÍ/v® àžŸ~¡°×ìyÔ/'þpÞy®s°¯KjÿºN" € € € € €€ª.Hé.^¹ò÷ÊûánÝžXq÷¡UFÊŒÛF»r5âÕ¸·¹môÇåv­§¨ó+ª¡ï‹ºJ+'"€ëO `ý-ÍÊ €@6¶AnólÖX×}a•íºš§ã´¶êÊ«cº[j´sQ4pákQøÚر-~½ÉnÁ¡ãÇïÒvïCÝQ\.Hã›5«>‚¿!€ € € € €ù-°²ë²®ù7ßÜS|ý¢ªn½µÿÒž]Ò÷N™’QÑ÷gÕh· xåjØû¢møkž¯®umÔ>µ?_Ô½Õ¸r" °þø€õoÌ@ +Û`÷åªWÿ~fyåö'õõýª+÷ý俯®ã´Ž:u<¬å±¿H|¼õÖ×w,<þæ›7íµÅ®pï½³â` € € € € KÜx×4Ц?øíðð”þýoùÇošVõîÞ½øžâ{œSCÞ6Øm#Þæjè+j劾ºÆíºÊµE5ô}ÑÞ0ͳur@`ý ðÀú³ee¨•€ü:Ø—«^ÝpÏ¡Ü6è•«‘T×:ŠZÇžWy´<µå©Î5mz×AÏ+¼öâ‹wY²W·ÄÓgœá:»½ùºÏD@@@@ÈEª×SWºóŠŠÞkÛ§OøÞý÷?ÖõÎ-«Œ™¹V5ÈÕ`·QxE5ì}1®Ñï;NçÕy”+jŸ¾hïœæÙ:9 °þx`ýs¨•€ü:Ø—«®†»/Ú†½÷ª«Á¯º¢¯®qo£oAðûwoz*±íAuî}މ㯻®éYM‡½·ÚJWJD@@@@»Àò³7Š¿úê_ãnß%ýàƒ_ìüI¾dIæºÔX÷E5âmã^uÛð·¹ï8ÕµŽojäû¢½Kšgëä €À'À ?ž5gBZ ¨ÁoVÝF_ã]uÛ¨W#?.ÖöEOç×~‰îÚãYç6ÙäÖO®(l~ùåÛ^Ñþ¸ õ“ŸØ+%G@@@@º@xhºØµO&ÇðU§°mÏž·^øûyé!¯¾šî–ÜÚ95ÚÕ · wÛhõÊãý×z:N¹¢Ý‡r»Oé«îËU'"€N€6œ=gF ¨qnRÝÕxWTCÞí‹q;_ëªnÏ«\QûN$þüü== ¾>úècÛtžž¸ùÊ+ óÝû-[Ú+&G@@@@Š@qºèí¨ÿ·ß>ûŸûN G<ðÀÀ}÷oŸ5+³?5Ìmc] ø¸¨Æ½jðÛºÍãÖ·û²û•²ê¾\u" °áx`Ãßv€5PÃܤº/ªán£öŠjÜ×WÔºŠ:¿ríWõ èxÓO.L¼×ºõÕ…]7NqÝu›±åuÁ–:Ø+&G@@@@~lè ÷k·UUÕÄG=Ø»w—›¿MÕy½z•Í+›çœðj˜«Án£¯1¯ã}1®ñ¯uu¼rßæÚ§¢æIUu_®:h8¼Ðpî;A ¨qnRÝÕh·Q y×׋:݇ö­z蓎yë”ç»âŠÂ‹›üǽ½é¦öÊÉ@@@@@õ%Pzyñ;Ñ3Ó¦õ~¥û]a¿‡~툧—…¯Mžœ9Ÿçj˜+·Q xEÛ¨Wî‹öß:ª+Ú}Ø}*—^\®yD@ á ð@û'ìj$ †¹=ÈÖ«ê™™6· yåzÀæªgíñʵu‰Ä~];¶pn‹-®šßuïÂÍ/¹¤mçöÿ J?Þ^99 € € € € PWð€t±kŸLŽïøU§°mÏž·üÓáé!¯½–ܯlˆsj¬«Q®»r«®\Q ~›«n£ÿ¾ùª+ê¼6jª+—V\®yD@ á ð@ý7ì j% †¹öåj´k\¹¢ó¾˜mãßÎÓzª+·çUn£ö—»=(ìØñ„v¿ž¸ðŠ+6ܬUÐsë­uåD@@@@@ ¦+·^vU4yìØç^z`bøò¿ÿýÁÃ¯Ï ož3'³Žä¶®Ü6à•+ÚÆ¾¯^Ó†¿ÖQÔ~|ûU]:q¹æ@†/À ÿ±C¨•€å:Ø—«Á®qå6ªQo£ùÙFoç«®hÏoóêý¶¿e×GœkÑâ/×üóÎÄ‚ /Üé‰=[%öíÜ98ĽæVè•Á‰×œ±]âÞí·ÿMêêÇ]zé–§´Þ#ètÈ! "€ € € € €@þ D_¸³ÜæUU3š|;1ýöÛÝJnx$ܾGY÷L¹Ú¹ÒÒŒŒåj¨Û\uÛˆ÷å¶Ñ—kÍS®hÏo÷§Üíý×<['GŸ/4¾{ÆŽ@ Vjë`_®º¢ï6ª¯ºrÛÐW}Ç«®¨óù¢Ýw\±W— ¨:ì°Ÿ¼{zAâÜK/m6¶Ù˜ ß6ÛH‚ˆ € € € €¹/°ü¾Åm¢~£G¿ôÔcGEŸ<ùä;{öžÞ7sfæÊÕ·QvÕˆ÷E5î5O¹/ÚyÊu~›«®}Û\÷UãÊ}u@Æ'À ïž±c¨“€ävÕã¢m¼ÛƼr5üm®º¢oÜÖ•+Ú}øòêëÙòàÖ—:·ÑF7,/Øõ¬³öܬöApöÙ‰ëtÓ›5³"ä € € € € Ðx*®/{.:gÞ¼&¾Ù-ìÙ½û£ÁAŒ‘¹"5¾mÃÜÖ5nïÊÕз¹êоq[W®óû¢Ý¯rÝ·¸\óˆ €@îð@îÜK®j$ Æ¸=ÈÖ•«ÁnsÕmT£^1®á7®u|ÑžßæÚwuÜsàqn³Íþ˜¾¥c"<ë¬]oÝëÔDÛ_ü"蚘î–4ibeÈ@@@@@ á ¤:'÷vÇ­\9©í˜?E•}ûÞÛöúæé!ýú­µô!ç’ÉÌÎÕWTcÝæª«ÕàWÔ|å6j<.j6j¿6êþ¨îËU'"€¹'À ¹wO¹"¨•€ã:Ø—«®híÊÕ¨·¹môkžê6Úq_nÏ£ÜFí[QãApøc'\äÜÖ[ÿöökßH|ñë_·Ûh§«Çt’{28ÏUhž|ˆ € € € € °!‡Ò¹**¦þeâIᤷ޺¿ÅM'„‰—_ž{Ìô-++ËìMpÕPW]¹mÈÛºùšçË}ußq:¢æÙý)·QwBu_®:È]^ÈÝ{Ë•!€@­Ô×Á¾\uÕ(WTÃÞæª«á—ÇÍÓñ6ê¼6jߪ+¯Ž¿|ü¢Ñ‰‹vÞùŒS~w€Ûõâ‹·Ûz|ðƒ– @@@@~<ð€°ÄµJ&güaÒ7Ñ„·ßþOÅ7…[½üò·Yâ\qqf'j€+ª¡nsÕmTãÝÕØWÔ<_n뚯hÏos»oår·y\]ãD@ wx wï-W†uP#Ü.bëÊm#ÝæjÌ«®ÜÕðWÔ¼¸\ól´çµûÖ¸êkÆ3¾ø”Äy»ìÒùœówt?;çœ6Ó·;.¸ô¨£Ü©n—Ö|ëEŽ € € € €µˆnwr›¥RsfÍØ&øá‡Ï]ÒíÑð^½Füsðoœ[²ªéÿÝ5ÀmT#]uå6ªm#_¹¢=ÞW×<»›kß6f®ºúº•+j¾r" ¼÷œ+F øÛ¶®ÜF5Ö}QzÛ¿Æm=.×q¾¨óù¢½Ž5óS:Qâ÷;ítú·®pgœyfÛ7Û¿œ}Üqÿû•I­[#l&#€ € € € ·ÿûHÿm**f?õéèóŸ{¸Û5áö}ú|¹hØÃÎ-[–QƒÛ}tÛxWm#?.[Ï·?Õ}×¥,4îËU'"€ù+À ù{ï¹r¨•€á:Ø—«n£ã¾èkØ«×ø·ã:Î}û°u{kæ?û¿söp®}û3û]ëD¿sÎÙöÀöm‚ Ž9&XèþáÊu~¹@@@@Èoªy©‡Ü^ÅÅßÛ5¼äÍ7ŸºàîaÑuo¾9õä g;WR’ÑQÃÛmã\¹jÌ«®Ü6ô}õlçéx{庎¸\ÿlh¾rE_]ãD@ x ï=WŽuPÜ.bëÊÕX·¹êŠj˜+ªîkð×´®uµ¾ÍUWÔ¾ããA­¼Æ¹V­Î»ÿÊ´ýùÏw-ßûÿ\«ÓN+lÛä:7¡eK+GŽ € € € €@. T¼Uö­;kþü Û^žÓ¿ÿc7ýãoÑÙï½·`£9 œ«¨È\»ÛqQ ô¸¨†|¶Ñ6úm®uT×ùUWT]Q×csÕõO€Íãê'"€ðÿ €uP#Ü.bëÊ}Q v_Tc>Ûh_°¹o_ãÊ}Q×£q9¨^·<¸õ¥Î5múûçoiŒ>úèƒúYÜxöÙÍ÷ÛäúàÃöíu$@@@@\(ÚsÅO£ß?ìôó£G_}õ‰ãîüST8bDúñôãÕ¿Ã^î¸hçÊmã]y\T#ßÎóÕí<ßùu=Wã÷åª@|¼à“¡ŽÔJ@ o{°­+Wã\¹¢ê¾¨}¶Ñ÷€¯®ój}åqQû—\æ\\òû›îOrÈQÏüô=÷SOmUµu2øÇÁ»Ó‚ý\ZëXOr@@@@†@úÐôÅnûòòyO̸*ê÷ñÇoңءÿ§öéãÜÌ™«ïR î¸hçÊmTC^uå¾hû6÷§º=rE]—ÍUW”ŠÍãê'"€øxÀ'C¨“€¯qmëÊ}1®ánôÊ}Ñ×ð÷Í·õ¸ýØqßuùêÎx§ÛrËsÞ¼d|ðôñÇïzÏþÏÝO>¹Ù²fcÜÈm¶©Ómá`@@@@ê(PrÃÊYîì)SÆùå/¢?¾ûn÷SîðñÇ Îžµ—såå«/¯w\´ s徨†¼šר׺ZÏæªëºl®ºÒQ]¹¢¯®q" €@œ/Ä 1ŽÔ‹€ÞZÌæ¶®q5Ôm®º/ÚÆýúÊ}ç÷ÕuÙFç .jús‰ÄÅ÷^;7±ÕvÇqGD'|›ë·_¼Õ©SbBÁ–®¤iS @@@@¨ôCUε)-{å¬#¢Ó† yï¾W.‰ž0àÍÏ^|ȹiÓÖ~5°}Ñ×(WÝm^y\̶ѯut~›«®¨ë³¹êŠR²y\]ãD@š ð@MŘÔI@o»ˆ­+÷E5Ø5®\Q ÿ¸\ó³ý„»®ŽW=.Ú}+÷EyiÜ¹ÝÆìß͹M7=ïú?­vê´Û]ûöú{ìæÏ´ºÏ=¾Ï>ÿûaõ|­@D@@@@à‡áÄp¸Û´²rÑÞswŠ~2bÄèO?ëäz|òÉ‹wýûÈh“Q£VKG9—LþðçÔÐVÔ¨rEÛ ÷åªû絛¯¨óÇE]W\´Êu¼r" €@} ð@}I² P+_ƒÚÖ•Û¨F»êÊ}Ñ6ê•×6ê<öx[Wn£Ý·rEÍ®ê6jܹƒÓù­¶úÅÐßT¯uÔ.ìõŸàÝ£ÞôÌ-nuÏï¹§;Ííãx1 Œ¿!€ € € €ù"ð‡¨—+ Ãå —\uüúëq_ÕÕýgРŸz¤MÔaøð¹ÿž~«seekçPú¦Ñ6Ôu¼ùvÜÖ•×5ê;ÚnÔ¨ÌOô——gvkѾ\õ¸häÊu¼òª+Úºò¸h·ó5®¨qå6jŸÙFÝ{ÍW®è«kœˆ °¾x`} ³> P'ÛÀ¶‹Ùq徨F¹Æ•ûb\ã^ã6j=[WnÇ•ÇE»o_®º¢Ü”Û¨qÅ hUÖzçš6={ÂïÇ;·ÿþû¼tàkÁ_<°ÍiíŽwý8 ÅK› uSwØaÕ¯Ø×EZOÇ@@@@ê*}æ~á «ªŠ-;Éu˜4iî®3–F#Gþ²ã§¥Î}ùå«#Ÿ»Î¹o¿M¿<Ñ95žuv_î««A®qí¸r}w[Wµ¾æùrÕ}Q×£qå¾èsŒ«kœˆ ðc ðÀ-Îù@: øͶîËUW£]¹¢ê¾×À׸¢ÖQ®hë¾\u_´ûöåªÛ¨›aëÊ5ncìÝ»ÃùÎm¶Ù϶?çdçöÛo×û4 .íСÍèíú»þ´Ñ¡Ínq Z·¶G’#€ € € €¬.PѪ|k×vÁ‚E ç}ä:=e›qÉè©Ñ£_¯xfÕ÷V¾újÆñSW}ÿ¥tUÓÿ»?jTg²êÿµu劚©ÜmcÜ—«nc\ƒÞ7®º¢ÖË5ÏuWî‹ÖI¹:ÞÖÉ@6´/lè;Àù@: øÕ¶®ÜF\ vûrÕmCßW×[ß´Í›îý½öÚ䘖ËÝ„]vq§ûó ò#"€ € € €@. DmÜm® .½¨ènéÓÿsÁéî§&Lßzâ3Ñ¿Æ{ïÊWW]î7ߌÿòË‹œ[±bõk÷5˜m]¹¢VQ†¸êŠ:^¹q úlÇãæÙóúríWQó”Û(/E+WôÕ5NDh(¼ÐPîû@êE º½úr¶®<ۨƻæ+÷Ålúš§h׫iÝo÷ëËU‹RÕ<›ÛºÆ«ÇÛ Ýå]çZ´8yÌ98·çž»þnŸöÁ½{íµõ²mwqwÝu³“·¸ÐÙe—&w7ý¥[¶ÅZˆ € € €4ŠŠÌOî=´ì@wè”) ^˜³YôÆäÉš>Ú¹ ÞÙâ•÷œ›2eYóE3K&Wß·¯¡lëÙæšgc\\ãµqûšŽÛ}èx]—W]QãÒ¶ùÿkï^c-;Ë:€¯ž™éœ™im§ÒÁ^hi­© iAEˆ ˆ" DåjˆFÑÅC‚&Fˆ‰†D+Єà% &D¡‚ —ô‚e LïNËL;·3dz‹žöµÖÞû\ç÷éésyßõ®ß>ý0}wÏd.ýš÷ÕÓ  @`£ øÀFýdœ‹3 œ¾h~ümj?ùИ‹öÌ'ëÅ~ͳO­×sõÕ;—wýJw÷%—t/êžê7 œöóO @€ @€Àpå}ßø?öþò‘?ê.?xðЇxZ÷Œ/}éÞg~õõË{Ûm·½æ wtÝí·ÿ˳>ôÂÉÅþÏ»åE§5}ÎØ‹åÌ'f¿ä5¦Ÿ îÚ¯yæÓOÞs_çj½æ™[ϺzÎ䉙‹Gê5Ö~òÄÌ'  @`³ øÀfý䜛£{±üíËk?yYÕº O=1ë“רw¡ßê­ç¹}ç©ýäÓÆxe}Ík½ö“×øØuûoºò ]·¸øC_ý±tÝW<ùO¯¿µëžô¤ýÿpùsÎyýW\ø–‹¯ï>~å•矺àÖî‹—_¾ó}»nî^zi÷îî¥Ý©øÔçÈ  @€ @€Í,°üoË/ì¶Ÿ<ùÈýG®ê®üÚ×þÁÛºï=pàþ÷¼¬{öwüÀ§-¿îÀ[žýÙ;ºîÎ;?úÉ¿¯ë¾ò•ûÝÜu'O>þ»÷]×þ´yÖõÅ\€×¹ÔÓO>6޽ÀoÍ÷=·ž³•çÓI¿ÆÚO^cÖÕºœ6«€/lÖOι  0“Àc/¿}»ÚO^cV¥ž‹ä¾¼Îµ.ô3Wcß|_¿îWÏ›~ê‰}õê‘u­Xç‡æ­¹ÔóÜä§ãy_øŒ®Û¾ý™7?÷Š®»ôÒkvÏ_uÝŸ¸ÿWüù$î}ÿ¾ Îùõýû/øðÞ7wŸÝ¿÷Mç=¡»í‰O\üŸ]ïèî¾øâ…Wo[îŽìÙszGÿD€ @€¬–ÀÉ/žxCwþ׿~ôÖ‡»»ìž{Ž,~o÷]wÝõõOúPwãÁƒ÷¿âî+—ßp×]_ýò—¯êºƒoùÃÿúIü÷ôÊ®»÷Þ¥÷ÿÑ®ë»è¶_× Í3׊ÑÌ…y«õVžú¬±ïB¿¯Ÿçç=’'¦žØª§Ÿ¾u‘¶Š€/l•OÒ{ @`&öEñ7¶­ýä‰yxòÄÖ…yígnÞqèúÎSû­<õļOò–Sú‰­¹Ô[óé'Ö¹Ôk:×u—ܲÿX×íÜùÔ—ÿwݾ}—=窻»nïÞKßxùwÝÅ_ðº‹Vþ^¿½{Ï?páÁI׫÷\Ýu^¸çÔy+¿©`ß¾sÿuqåÿ"Ø»wç{W~eàÊ Þ°ðêÉo0¨'’ @€ @€Í(pêšSLþÎûo=ö»]wèб{}_×=ðÀñ—ý`×=øà‘cG.šä‡¯xðòIüߟ½÷ “‹ú{ÿæàÊŸŸï»ïÀ o=1‰Ÿºõãïèº{îy`÷=_žì7Ìbìok¾Ö§Í³®Æ¼MßEwÖÕ¹Vžú¼ãÐ þúÜ¡çÏ\+Æ+ýVžzbO]$@€­*à [õ“õ^˜I ï"¸ö[yê­X/Èûò\èg¿Ì·bæÓϺV=s­˜õéÍ37k̇š}j^뵟±÷Ò®Û³çüß8ÿÏ&q÷-çýå$îzËžGã¹ïYüÇ®;ï¼Åë/›ÄŸÜù“þ¹7ìüÉIÜ~Ó¹¿6‰;Þ¹ýÜIû§w¼y’o{ýöó&ñô ü @€lI.fò¾Ÿ¼n韻îðá¥ÛOüÄ$û‰•/¡9²´ýØÊÜ>öŠãŸäÇw[ùóè‘#Ç~äèõÆùýIÿèsüÝ$øŽÃ+õGŽ<ô”÷Nâ¡—<°4éß÷ö¯ý^×=ôÐçÞö©O.îïzÉ•õGÎf:öâ¶o¾ökžÓÖúÐ{òÿzñY“¸ð3Û®›Ô/Þ½ò˜víZX8ç-“u;o^\ùCýâÁŽ¿ßyɤ¾ðùs^Öu§ß{á†m™ì·ýÛn›ì÷Í7:¸°ò›¶]²ã†É9¿Yÿÿ8çÓÝÊ> Ûoßñ¹Çë×ùä ¯=çÀäý>¶ýëù~já?=‡ß ‘F$@€ØÀ§~çÔ['½§Þêéí¿3}õ_`éM'n꺇^~~÷ޮ˅gû¹Ëw,¯üyhiéäkO¾»ëyä1“o_~Ûäâ|éUÇurÑ]ûÇXùsÉÊ÷/ÿÉ·¾÷ÒeK+¿neߟ;±ü­û.¿kù]“=Ž:v×äÂüäk–îŸÌòÑMö9ñŒãðèÿ1ÿéû'ñø3ùÎÉú‹'V¾0¾´´òwÒ[zå©•/‚Ÿ:õÐÇî{Çä}yúÑ•?ŸëÅëÐõ­¹¡õ:74oÍ¥ÞósÙš«ýä‰Y—<±UOÚØ·oí'¯1ÏO=?}ÉkL?1ýä5öõ뼜¶º€/lõOØû @`UN_P>þö­~ê‰Y¼s_ûµÞÊS¯1ûÕzÍ[sCëu.ybž—|ÖØr­õióÖºÔkÌûÔzò¾þعÌÏ+=ß¼žgŸÙ|^³ùYM€ ð j›ë'a½>¯±Ïí›ÛoÍ×z+ï«íg®ÆzñþÐzæëúÔkœu®µ>õÄ<7y_Ì¿Uu.õÄô“רםór8Û|àlûĽ/VU uñ6´ž¹Yc½Poå}õ¾~Ι¹ÄZš·æRŸ5æÃ¯ûÔú´yk]_}h?s‰yä}qìüZï×÷<} @€œí󾸻߼ç[û ­×¹V>´ž íüœeÝИõu¾ÖkžùÔÇÖÇ®«û·ò¾zú-·Zoå©'Ö}S  @€À™|àÌ>º 0“@ß…k«Ÿzb‘|l¬óY_ëCó¡s³>'ëûbΧäY—zòÇöë|+oÕóüô[õ¡ý¡s}ÏÉ>ÓÆÕÞì¹6ÚyÆžß< @€«'°Ñ.×ê<}Ïéëçé›kõ‡ÖëÜÐǬûõ­_­~Ýw^yöIÌOHò¡1ëê{ßú¾ùV¿ÖççÜußÔ§qÊúV>m=ëD 0›€/Ìæg5ÌE ï±կõä‰9\òYc뢽UÏój¿æ­¹Ô[ëÒ¯1óqHž¹Ô“÷ÅÖüÐzškÍ÷ÕÓOŒGò±q½×=oßü¬ïÓ·¿> @€ãêEäøæ»bÖó¬ÕúÖsZõ(Õ~͇ÎÕu­¼¯>´Ÿ¹V̹‡^˜O;×ZWë5¯çîë·æóžµŸ¼Õ¯õä‰u}ê‰}ý̉ @`>¾0G» @€Àªô]8¶úµž<1‡M^c_?ó¹PÏ|òôkœµŸýúöÉܼcÞ³î;k½®šÏ:—õ5æýj=y_?s‰cç³®ÆyíS÷­ùZ=§>WN€ @€ÀüÖêÂq^Ï»Oßü´ýÖº¡õ:74oÍõÕ‡ö37¯8ô¾5ת×ó «ëòoR­'oõk=yb]Ÿzb_?s"X]_X]_» @€À\†^L¶æj½•÷ÕÓ¯1/›z.êSOžþØ8ëú±Ï˹[ëÆö[óµ>m>t]æó~É[õ¡ýÌ%öí—¹§]W÷I>ïý²¯H€ @€Àæ˜÷Eå´û]×7ßê·êùÄj¿æCç꺡yk.õÄzŽÔûú™sŸý“Ý'óC×çyu]­§ŸXûCóÖ\ê‰õ9©‹ @`cøÀÆøœ‚fz¡Ùš«õ¡yk.õó’µ¾ÞùØsõÍ×~ÍëûÖþÐ|è\ž—ùk¿æ}óµ_ó¾ý2?t.ó5κ¾î·Qò­ú^Å×9 @€æ#°U/g}¯¡ë‡ÎåÓjÍ­·ö«ûÔ|ÚuÙ'±îÓWÚÏ\bë9é¯wì;_«ßW¯ýä‰yïä­8t®µ^¬­€/¬­·§ @€Àš ½8웫ý¡ùعÌ'+ùÐ8vÝÐù¾¹V¿Ökž÷ªõió¡ëZs©'ÖóõÕÓOl­O?qè\ækœu}Ýo£ä[õ½6Нs @€ÌG`«^Nû^c× o͵êùt[ýZïË[ûõ­kõ§­g]b=Wê‰}ýÌÕ¸ZëZûÖú´yÖ%æ½’·âйÖzu °1|`c|NA€k*0öB±o¾ö§Í‡®kÍ¥žÔä5NÛo­Zýšç=ROZoÍݧo>ýûž?ëü¼××ýä @€ly]xŽÝgè|ß\«ßªç“«ý¾|^ëúž“~b}î´õ¾u³ö‡ž³ÎM›g]b=ê5«ëä @`s øÀæú¼œ–ÖD`èmß\«_ë5ÏKÖzòÄÌ%¦žXë5o͵êu}Íçµ®î;4Ÿu®µ>õÄúž©'öõ3WãØucçëóZùjíÛzž: @€óX­‹Î±ûŽDߺV¿UïÛ·®«yk}«yߺ:ßÊ[õºÿzÍÕs$Oz®Ì·bÝgÖ¹Özu °¹|`s~NO€k*0öbtè|k®Ökž—¯õ¾¼o]]ß7?¯þ´û´Öµê­÷kͧ^ckŸV½®oåÓ®Ÿv]ë}õµ~^ßyô  @€œ C/@çe1íóVk]ß¾Óö[ë†Öë\ÍóyÔú¼óúœ¾ýëüÐ|Ö¹¬O¬çL½ÇηöQ'@€[SÀ¶æçê­ @`]Æ^ŒoÍ­V½µopk¿/o­kÕë~™K¬ýš·æR¯±µ>s³ö³O}ûÖùšÏº¾î74_¯ç=Ÿ9 @€[Q`½.>g}î´ëûÖÍÚÏÏHݧ歹Ô뺚·æZõõ^ß:W_=ýÄÖ{¤_ãØùº^N€În_8»?oO€ë"0íÅéØu­ùV=Óö[ëZõ¾çµÖµêÙ/±onÖ~žScß¾u>ù´ë²>q^ûd?‘ @€³O`^°c÷;_?™ÖúV}èúÌõíÓê·ê}û¶Öµê}ûõõûöÍúıó³®Ëz‘8“€/œIG¬«À¬¹c×ï›ëëu^sC÷ûܵšÏs†Æ±ï;tß:w¶½ïFýœ‹ @àÌÓ^„žy×Û]í÷»ÿzÏ}þ¼æúöéë·~²¦]—ýf]Ÿ}D @`_˜EÏZ °!æuAºÖûŒ}ÞØùúáL»~Úuóz~Ýg½òy9¬×ù=— @€ÀVØì®ó:ÿ´ûL».?Kc×:—sÔ8ëúì7¯}²ŸH€¬…€/¬…²g @€ )°Zºußz®µþáX-‡µ~Ï#@€ @`zÍv±»ZçußY×·>ÁͶoë=Ô  @€õð€õP÷L °%Öú"y­Ÿ×÷!m´óô7ýÍzîœ_$@€ @`vÕº`žýdgÞa£{­Ï³ÖÏ;ó§¡K€lL_ؘŸ‹S @€³P`³]Lo¶óž…?R^™ @€-&°Ù.À7Ûy·Ø‹×!@€g©€/œ¥¼×&@€"à"?" @€¶¦€‹ø­ù¹z+ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€øäàyIDAT @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€ @€6’Àÿîü$Aï­IEND®B`‚ic11T‰PNG  IHDR #ꦷsRGB®ÎéDeXIfMM*‡i     ¬†bó¶IDAThíXy|ÇúÿÎ{–lBbŠHÄQ„j-qqQZª·”Zª½mië¢%¸¶T£´Šk/­ ¶ZжÔvãÖVÑRTBP$Q‘EV²sÞw~ß9œ$ý¥”ê·ÏûIžóÎ;óÌÌ÷Yg€?éñ ÛÏ{WʨåõO@Û-fb`rsà @n²œB¿y‰gP‘ÜŒn("7‰¾N.ØÛÆwžƒA^,ªóÿmÒÈÜe¬ä¶Á\`<Èr3n’Û±—È å!´àç§ì=Íî Š30‰ë0d?ï¥@ÓwøÔ»ûþÝ€¬Þï):u×::¾§”er92+¶Á1±Stï.F¡·8ÖíZ‹fx9ð*£=wÂxš^‡ šÐÅ‘‚|â\‡I¬å›z–8ß%9¹ëŸÀYH>†;› ù¹„._g›”ÞC!!,4v#ù¸’¿±òG¬IÌÇ"l•á{oÈÇd7é±k &‰)ðÎ=j$ëþ–×*£,QSO»&*ååHöÍ ˆ¸L%.ôN3SK2ÝHEëº#´‰Ús"æ_sð!Fˆ„^ÍQ¾hl9«å\¸âŠ$ÿ¼ù(­Õ„ä:µ®6¨¾ß‹Ê­ªLçÛ*X ,Ûµ;<3œ·Ç Kä£;k‹eŒì9fšxL´Cüåu7wåÚ €ºã*›;®Tž¹ôçí_ÖNîmù€í'[XñsýÌIæ!¦ô9+Œù­ˆï½ pu¨)›´#‹c‰†Êlµ š.ºòýsl [߯'È™|Æ*ä‡gM‹‰|7qÁ„Ĉ1~_ñý+¹äfaæ—ßO èZ–ΨE ´ÿ 2VD¢È²ëö§)/OpOõŒ¶Ü9Á±²“”L¹tëšìîD´Ï×z4œMw[nfD½ð…)Ò4Clþ4¢)±Ö§¶Õ<ŽVÊO oãÄ®],²Rúšïž,ê ¤¦¦íÐûÐNÊóòšà¶*î&/ Õ›-ãÜßš¼dM,CÍ]±˜ý¢±·(WiöaH¡,ã•”j?alÐWÈ7_éja‰Ö­ËŽ­v8ôZOà™Gná>J, ÑäP½"ÙŒ7¢ê~3Iç&Ím³¸[+±Ç˜%ê[Óð}ÏNÁ|¨q‘&®ÂØ9a÷E€ƒ› +üÑ(ܲ¨×µ^e@Š6%è{ù–7ã9`cõ-æ?K²Žx¡‡×—´ Z0A—}Î9ÏÀ Æºó ²´Ôÿ##äûOF쪺í­K×{ïjP\rŒK| ÖTg Ð7dP¿Fï{3^3æÚµÀÑØ(^îìž*Sœš7 …/ijòÜ &'„`!‘Ì1?oe$>:*ö ÛJZÐ_›ä5ö;)¼ €…rºBÙԪå1 ñ!Y¦j´ Æp³YQº9cCªLU6 v‹ «@Èð³ÏñÊÅÑ\ø°= Ï:M ’DzÂÒP{Jí]‚šN_œñƒ¾è×í¬‰¾^÷@ÝS ¼b$£HóK_oò"ó2 ¦ÑÀ«k¥ÚXW9ÌÞœü¢ü‰éb¼øàæÔ[•ÐŽ!ÃÇd€ßݺ§1Òƒùá-'ÎEÜã_€|A¯3<¥¯—M^ÂJGë$9-1›Ag*¨Ñ%ÀvÔ–©²‹ÈÖ|0»¿yâDU­† —äÍòꆑúx3ïf'Ç›cM¯" ø²Öެâ:@f@æqÉ…¼œöR´%™Ýo,UÁÓ‘¨·¶¢¼L>Ì6t¬JóÌ6uEÆÒ)ÛêÛ‡•÷V~Kd=÷˜c¦|}šÞ—›Q+/Y{ùU±%Á‚óaFŽñ“iµ¾ÂøÀ1JäÊv2Û±¬⦶ÃÁˆƒ"N¤haè.†ÛýµZ"Däh4%y…™W¹Â]Hæ3–sIY7r2åF`{­/žp(ÚdvRY½Kã.þ²;à7¤æcb:…TKœE3†"m¤ ä_L]'#9þé/>w¨àÙ«J”ªÚ§µïdüƒÙõŒ÷vA×­dke1w#Ä´¨\¯‘H1j 3®`¾}¾Eš±ÆUs«Ï²3¸È¤'¢7ß–¡ï=k|×€»qWý2 uÕJí›ìK‘žœ¾µÿê ùÓ ­ Î59bRúçš¡¶ä¤Õ~ Í·XéšßFü…踶û#+µ¶äŠïh-ÄT5÷—¸îó»¹K³û\í1ÒÕ•T#]îE¦>áÖ²›ºÜµ¿xöÙ5­ÜƒùísjÇgŸ(·ÜTsz®Ûà9(è”?U~XõÑÐã->Ò>^êÙ¡BSøuÛÀtèæ¼óOa™£Lø!-¢t)¿ó—Kã5yA§ä¥¼Š55òŸÀõÿô;wr€œ0ðmÏ=^cñnFøè=ÌãJç*±WÓ{y#_-`ÚÙþîÉîÆ3±k÷?nw»/è» 1Øü¨—Å»¥ÜÝq¾–®õD–©3õœvd㽉R p9X]Òÿ®®<™U#Üœ¾ÆäÊàlT3NÃר—ßåfc1øÀª+9çëÈ¥cOw:Ñk‰©eFxÏ·›|VØ–ãöür w]ª5ýÒtŠOáaK&0%ò݆úV¿I!ýÂÅÐ>Ÿ!•‡Ë]|,ÝF‿YÛ¨i¸îŠÁ<­Ûx‡äAMHÑáÎtjÉC‚!‘gù-ÖóbÌb¸ñ®¯ üŠšÛO@û«ûr ³„蓜}J—ë·´_¤G¹™Í) <ûVxÄö 8[òSV~ w \W³J*$‡3N  æ=Ö·!²9ë´ Û*ùÆnQ¦æ§a¾æ âönA-)Ãüýhwm'¶PÎúß,«ŒÁysxª·}•°üùÍ!#ã:s›y<Ò«Áco:ùŸô'¿ÀÿbüʼnïªQœIEND®B`‚info>bplist00Ô X$versionY$archiverT$topX$objects† _NSKeyedArchiverÑ Troot€§ U$nullÓ WNS.keysZNS.objectsV$class¢€€¢€€€Tname_assetcatalog-referenceTiconÓ   €Ò !"Z$classnameX$classes\NSDictionary¢!#XNSObject$)27ILQS[ahp{‚…‡‰ŒŽ’—°µ¼½¾ÀÅÐÙæé$òchiaki-v2.2.0/gui/chiaki.png000066400000000000000000000424571447035777400157110ustar00rootroot00000000000000‰PNG  IHDRôxÔúsBIT|dˆ pHYsbb8z™ÛtEXtSoftwarewww.inkscape.org›î< IDATxœìÝwœUÕ½þñÏ:S(ÓèMÄ3vc5F£1Fƒ‰1jLÔx)–xsÓ£éõ&7ýÚ{QĆ-v£ EŠ€‘ÞfæÌ0L9{ýþ@rÕL9û|÷Þçy¿^y¥ÁìÇá0ëÙk¯½ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆt•³ "]÷Œ§{_*zì ­[‚¢6ºdÈtèOµà‹wþê‚¢ ÞýûSL+@1®¥ P° æL©Öî6o¡®é£Ž¹û§‘0¨ˆDÐ3žîå”îçHHáyè ôwÐ×C?vþ÷wÿ«`O_/` °ÅÃf[l vþçͶdpë<~ešôJ‘èQ10ÓSTLŰ6ÚFBÁ~°‡‘àF‚ ŒRÆ1³i›ƒå·Üã—§`¹ƒum¤ÖÒ}ñ8·¡Ñ: H¾Q Ñ3žÂ JÆ:ÜX`,p0Œd ð]«ùÀ|‡ŸÀü:–|ÔÑfœM$±TD²dž¯èŒö¸ñàG£ÁWëi-¦Z¥à SøYŽÔ‚±®n¹u0‘$Pé„™ž"Gùøü1Žsp´‡AÖ¹òÄ:ÿLá^ÌÀ?=õ³&8Z­C‰Ä €H;,öýʶÓt¤£à8àXðÇ=¬s ­æÉËÜ3\z³u(‘¨Sùó}ÉÀV Nvøãc€CÑß—¸ðÀBàe‡{Þ<1Î5l´%5ú&LòìOEeÁI> é%ÉBAðT@ãszd ¢ yl¶/íïà#÷I§½­3IN4Ï:xÈÑöè8×ô¶u  *’7¼ÇͦüÈþ p§‚‡þä;nøÇR¸ic©ŸáÞ:”H.臟$Þ_:Ú“šþ<àë<eþ-SÁMGú%•I2I¤w úçYç‘XZåð‚›\éÒ/Z‡É6IŒ]ƒ¾ÃÖÃ!Öy$QV8üC*’$*k3}Y¿B¸À×QÖy$/¼îÆüíGºôë0"¥ ±4ËWŒO\ œ6äÍà¦y2×UÑø´Ö HܨHlÌð%ƒŠI]èáb´˜O¢e¸; i½qŒkZmF¤=T$Ò¼'UCÉ Ž‚KÁŸ YgÙƒ ¸g ¸®–†tš¡D™ €DÒLß»¢€¶K€¯íóˆtÂ*j¡èú£ÜÖzë0"ï§ ‘2Ó÷\@áWÀíÌ'Évø›Û(úÝ·í-ë0"»¨H$Ôø’JGê*ŸCÓü’Lðh ÷Óq®þUë0"*bÆ{\ %':R—³s/~‘|ñR ~5–ôÃz{@¬¨HÎ-ð7Sv¾ƒo²ó˜]‘|µÀÁïÚHß¡ %×T$g¼'5‡Ò³Áý½Æ'òn«ü|é›ôæ€äŠ €„î]ÿOѾü"{²ÂÁ/—¾ñGÆ:Œ$› €„Æ{Ü<ÊNà'À8ë<"1²Èã~YEýÎX‡‘dRPÌö%'û•ÃU[g‰±×Áÿ¸’†û´XP²M@²j–/?%…ÿ 0Á:‹H‚¼æH}¿ÒÕ=aD’C@²bŽ/;ÈÃïÐë|"!rO9‚+*]Ãë$*Ò%5¾W/OæÛ®Š­óˆäVàæ |o‚Ko¶#ñ¥ ²óžò/8üo€ÖyDòÐVp?®¥þ/zuP:C@:l®/=!ÀýkE$ß9XœÁ]9ÞÕO·Î"ñ¢ í6Ë—‚ŸƒŸhEDþÍÃRWLpuoZ‘xP½Zà)n¡ü»à¿ t³Î#"»Õìñ?ïFÃ/G;Z¬ÃH´©ÈÍöeG;¸mEDÚíõwÉxWÿŠu‰.ù@3ýž)Ò?tp5P`GD:Ì×÷ ÛÕ‡¸Íië0=*òofûòSþoÀpë,"Òek¯V¹ôTë -*ò/ |yŸü/€K­³ˆH¶¹Éžà«Õ®a“u‰ Æ—N÷ ¿u Í6ß®té묃ˆ=€<7Ó—õ+€€OYg‘Üp0½…à¢#\ãzë,bG Íö%'9R·C¬³ˆHÎm÷¥*Wÿ¨u±¡‡žñt¯ ìÿ ¤¬óˆˆ\Ÿ¡ìÊ nívë0’[*yf¶/åHÝ ¾Ò:‹ˆDÆOp^µkœkDrG Ox›KÙ%ÿ{p=­ódCkKŠ ëº³eC7ÒõEÔm-&]_H}mMÛ hl(ÀŽ p46þë÷•–µáœÇ¥<%¥ºu¨èÝJyE+}Z(¯h¥w¿ ÙAQ·Œá?¡Hî8Ø\3Žôoœ#°Î#áSÈs}é€wpšu–Ž Çú·»³|I«–•òÖŠžl\× kº³us7¼÷ú}ú73hŸ ²ƒÁö³ßìwPš}öm"• ùâ"&ü“žà‹ÕnûZë$.€„«ñƒàNbòzßÚ·z°hn çV°dA«Þ,¡yGô–)wË0â€íŒ<8ͨÊZFUÖ1l„¡JblLáÏçþaD£PïLùËÃψðV¾«WödÖK}©yµ‹ç•S»µØ:R§UônaTecªkìVFÐ`I¤+2à~ZIýµÎ¡é®RH Å¾_YÍ7Ÿ±Îò~Í;RÌ|©/³^îËÌ—ú²amwëH¡é?hŽÝÂáÇm¡ê¨­ô,Ñz‰¥i /˜à¶ÕY‘ìRH˜¹¾ìàîFYgÙ¥¥¹€Ù¯ôæù'òòÓýiÚÙ ‰ÐT½•ãOÞÀ1ÝDÏR•‰•%V¥kX`D²G Afû²3ÜTXg Çk/ôå‰3ã…¾´4çß ¿;ÅÝ2ñ¡-œpÚzŽüð µàZb!íñ_ªv ÷Y‘ìPH€Iž‚(û™ƒoaügºö­<>uOMÌæÝ,£ÄBï~Íœü©uœòéµ Ù·É:ŽÈÞx‡ÿÓ6¾ùQG›u逘۹—¿¿ ÜǬ2ãµûòÀØójŸÐ_ÍK"ç`Üá[ùÔçßæ¨lÖ+†uÏ|vŒkÜ`D:O Æj|ùà´¸~kKŠçÀ½7à­7K,"$Òà¡MœyÞjN9k Ý{èñ€DÖŠÚx×°È:ˆtŽ @LÍõ¥'¸)@¯\_»±¡©wìËw%]W”ëËçò^­œqîj>ý…Õ”–i¶U"iø³ª\óÖA¤ãTbh¶/¿Àá¯rúÒ|Óö¦Ý3”É7 ]_¸÷ß Yѳ$Ã'?û6Ÿ½x%%¥*9-÷åJW‡ué€ñ7‡òÿ!9ü³ki.àþÛ‡qß­ûêŽßPY¯V&~qg~~5ݺëÑ€DŠ÷cm/*1±ÀSÜBÙõÀ¹º¦÷ð“¹ñ÷°~Mr7쉛~š¹èòeœxúzœþK´ÜRLú+£-ÖAdïôã#æùŠÞ‚)ÀGsuÍEs+øû¯bñüò\]²ÓÊ{µ2`Ðzõi¥¬×ÎSýÊzµPÜ- GÏà_ïÙ—”µÑ˜Þù袵ձ£©€Öæê늨ÛVDº®ˆÚ­ElÞкmÑß’xtU-—}k N[Gùÿpœ]åjk­³Èž©DÜ\_±_@ðph.®—®+â†ÿ>€Ç§‰Ôë|EÝ2Œ¹á42âÀöݯ‘AC›0x=zfW½¦ílXÛƒ kºóöªž¬\ZÊŠ¥¥¬|³'­ÚÔ(•òœ|æ:.¾j)eåZ ‘±ÀSpZµ«]eDvO ÂæøÒÑàžò0(×{ö±üý×±m‹íݯs0tøvWÇ¡ãêUYǾ##ñn|&ãX³²' çU°°¦ ç–³z…ý+½û5óÕï,áCÛhEd—µþ$½&]*5×WTý¾֦uÝøŸŸÊk/ö ûR»Õ»o ãÙÊ„c7S}ô6*zÇçb}m5¯öaÖK}™ñb¶m¶Ûñènâkß{ƒ~šÍ2ˆ¼ËV‡;µÒÕϰ"ÿN ‚j|ùáà§}¾Ö?ÄŸv0 ¹­oØ~|èc9ö¤Mìp: Ú¼‡7ß(ãÕgûóÜãXe°ARiYßøÁ|ø”õ9¿¶È¨N«ré—­ƒÈ{%àGn²Ìö¥v¸‡€²0¯Ó.ä?9˜ç¦çäé¿ ÚÄ §¯ãø“71 œ^Ûª7Kxvú@ž{l kÞê™ÓkŸøÉõ|í;‹uò DA£'8³Ú5>eDþ @„ÔøòO€¿èæuæÍìͯ¿;ŠMësój_Q· Ǹ™SÎZ˸÷&âN¿£¼‡ù3{óØýCxá©þ9[H8xhÿõ‹:NG¹‹¹fà³U.ý uÙ)GÓ;GùNB{€ì=ÜwëpnþŸýÉdÂÿ£ï?¸™O»sO{­Pÿ?éº"žœ6ˆïÚ7'û+\òÍeœyÞêЯ%²-žŽŽ€¨ñåŸ+ÚƒøíüþG‡òüúĿ8*Í™ç½ÅGNݨ³î÷ 3^è˽7Ž`ᜊЯ÷áSÖsÕµ‹tÀXË8¸¤Ò¥o¶’ïTŒÍñe—zø ëo½Y¯Ëê•á>ƒ>¬ª–󿺂Ê#¶†z$š7³7·ýe$óg…{¶Ó~6ðƒßÏgŸ}·‡z‘½€Ëª\úzë ùLÀÐl_~¾ÃßBˆƒÿ–MݸäSG…ºÊtU-çÿÇ ªŽÒÀßU5¯ôá–?dñ¼ðfÊÊÛ¸þÁÒ»o|^µ”Dò.©vé­ƒä+#s|Ù§ýÎgþ¡¿÷÷_Äw Ëú×Ýgßí\|Õ2Ž9aSÖ¿v¾ûç3ý¹þw„òæÀç.^ÉEßx3ë_W¤2^¥k¸×:H>R00ÇWœì ¦â‚¿w ǵ—å•ç²³§PYy¿´’³¾°š¢b=OK[[Їï݇Ûþ22k38Ç´‘ïýöõHìª(òŽVpŸ®rõXÉ7*96×—žàqxÈéñzÛ ¸ê‚ ¬XZÚé¯áœôÉu|å꥔õjÍb:Ù“Ú­Å\÷»yú¡®íÙpÀ!i~wëL-”(jrøÓ*]Ã3ÖAò‰ @ÍòåG¥ðO…»`ÃÚî|ãó‡S»µã{ýÚÄ׿¿˜ñÇD÷9}mÛ¶S_[D}íÎÓý2m)þýûÒ²6 åÅ´¾è`Œu–÷ó~ñ_‡ñÜô÷EÝ2|ý;KøøYks–% çVðÂxnú@¶méøke­qüŽ?y‡·…‚‚Ü•‡' åo¿:¶Ö÷>Ö9þä |÷7¯çåÙ ’ ¡àØ*W[k$©ô£!$3=E…”?æñ'ZgÙ–æ¾yQ5K^/ ÿ |ÿwósö¬xÍ[=™>eONËAwú hæä3×rÊYk8$7‹î–.,ãÇWeãÚ/—4:ÍoožI·îöëDºàÙbÒíЮU!P÷¸9”Ý \heo¶lêÆåŸŸÀ¾ûoç;¿|=ôUðAàxùý™vÏPæ½ÖŸà×ÑS)OÕQÛøÔ¹«9âøÍ¡ß‰×n-ægÿyë×ôàw¾¦þ$)n®ré/Y‡H"€ÔøòkÀÿÈ:G{mZ×>ZB¶ÞÑ”â‰÷á;†±ö­PO;ޤa#9ûüÕœtúzŠB|›¢­-ŶÍÅzÝOÅáPé~j#iT²l¶/ýœÃÝ…¾·´µ¦xâÁÁÜþ·ýغ)'FZ¯>-œuÁ[œuÞÛ¡‘„ñwaµ«¿Ý:H’hÊ¢Ù¾ôx‡{‚mñemm)½oî¹~8[4ðÿ›þƒ›9ÿ+ËùØ™ë´-¯Hû´¤ð§Žs ÿ°’*Y2Ë—šÂ½„ñF?QPóJþþëY¹,š¯ðEɰ‘\ö­%Lˆð‹"²5ÇŒsé7¬ƒ$ @Ìö¥ýn0Â:‹¥õkºó×_Ì«ÏgçС|rÜIùo/¡ß€fë("Q·¼Ž8Ò¥·X‰;€.šä)8ÒGÁlÅJ8¦ß?„ë~{`V¶ãÍW=K3\øÕ79ãÜ·õX@dîé%Ôü‡Òt @Õø²ßW[ç°²zeO~û½Ñ,ž_n%1ÆT×rõÏ0h­äÙƒ_T¹ôw­CÄ™ @Ôø²3ûÉÓïãcSöáï¿>ˆMí;X( <}ú5SÖ«•ò^­”¿³•qiy°sÄÆt!uµ;OL×±usq»×É…ž¥¾öÝÅœxúzë("Qå=þœj×pŸu¸ŠÎO¼˜y瀟@ÞÝú¦ë ùïŽâåô7ËнGÀ‡Ô3âÀFÜÀ°Û¸Oý6wj?ƒ¶¶›7³~MOV¯èÉŠ%¥,_RÊò7ÊhÞaWp>ú‰ \þÃEôè©™N‘öø£tpPç¨tÂb߯¬‰æW€QÖYrmÅ’R®½r,ëVçv3Ÿ=3T¹•Ê#¶1ª²–ýiÈÉ~ûmm)–-*eᜠæ¼Ú‡93úä¼ì»#?üý<†ØžÓëŠÄÄÍq”Ûªó®;H ƒÞÙæwðë,¹öÌ£ùý5£r6öî×ÌñÛÄ1'nâ°ªZ ‹ì÷µom.`Þ¬ ^zz/<9€úÚ¢œ\·gi†«²€cOÜ”“ë‰ÄÌÔJÒg9‡VÏv€ @Õø²ï?³Î‘k-ÍüÇgŽàíU=C½NQ· Çl?s-c&ÔFz5|&ã¨yµ7OLÂËÿèOkK¸ÅhøþüåÞÛ!‘¨ñpuµKÿÎ:Gœ¨tÀl_r¢#õ8—ﺭ^QÂ_˜@Ã;‹è²iÐ>;8ó¼·8éŒu”½³`/Nêk‹x|ê¼k(›ÖwÏú×/«håîœÉ>ûê1€Ènd uj•«{Ò:H\¨´Ó _2¨ˆÔ<Ànå[Ìz¹?øj%™Lv>:N3ñ¢UwÒÆHßí·W[[ŠçÀ¤›‡³bIvvB,, øùßç0îˆmYùz"Iå`}€[íô¬¬TÚáçþ§Yg‰‚ïÊ_qp—¾Æðýù¬àCÛú1¹¼‡WŸïÇ­Éò7ʺôµ.ÿáb>ñ™5YJ&’xU’>Mëö.?z³¯Æ—_þÖ9¢ä/??ˆi÷ ëðïëÛ¿™‹.“O_Ÿˆ;þ½ ÇcS†pëŸGR·­¸Ã¿âWqñUËBH&’\ÿÿª]Ã߬sD À^Ìñ¥£=î5 ÿ±ßƒ p\ó±íÞ÷¿°0àì Vsî¥+òòö†t!·ÿu$ÓîÚî ‡?n ?þóܼ(J"Ùä`GŠàˆ±®q¾u–(S؃¥žn ”½ Œ³ÎEÛ ¸ò‚ {=õoäÁi®¼fNç(Yt-[\Æ~t(Kíù±À¾û7ò‡ÛgRR¿‘"ñz-éÃ?êОڻ¡°5¾ôà.·Îeë×tçŸ?ü§· <_¸lŸ»d¥îbߥ­-ÅíÝI7 ÿÀÙ€Þ}[øÓ]3è?X'ŠtÑo«\ú?­CD• ÀnÌñ'{‚éè{´Wóg÷â;—V½ç=øÁÚøö/_ç1ÚœkwæÍìͯ¿;ê=¯ uËð›j8t\a2‘Ä<ÁÇ«]ãSÖA¢(:§¸DÈL_ÖÏÜ‚ÿvS]Ë7~°ø_ÿýˆmáOwÏÐà¿c'lão“f0þ˜­8W]³Xƒ¿Hö¤©[_õe}­ƒD‘¸PãËΰÎ7×ÿ÷ôè‘á¼Ë–'òÕ¾°ãæÿٟ†¿ºÜ:ŽH=PåÒgY‡ˆý˜~ŸÙ¾ü‡¿Õ:Gyþ.Ð÷O$Lî¼*W—uŠ(Ñ#€w™éËú9üo­sÄUÔ¯gha¢þýËQÿŒHWøÿ™íKóz'×÷Sx—üÉó­~“jõò~ó½Q¬y+ÜÃŒ$¾Ö½Ýƒß|oÔ^_k•ØêçpºÁ{€wÌöå§‚;×:‡„ãîFÐÖ–bÊ­ûZG‘ˆštÓpÚÚRLºy¸u Ïs|ùÇ­CD… 0×,qø¿Xçp¬_Óý_S»O<8˜-›º'’¨Ù¶¹O>4€gȺÕÚø3©<þøþšæA€ ¿ö³Î!á˜|óð^ØÚ’âþÛ5 ï5ùÖ}imÞyÊw8¦Ü¦ÏH‚ ofǵÖ!¢ ï À\_~¤Ãý‡u Ƕ-Å<ñàà÷üoß;”úÚ"£D5éº"»oŸ÷üoÓÂVÍ%–ƒ+fû²£­sXËë°ÀSào ¬³H8î¿m_ZšßûÇ»£)Å´»;~’¡$ÓÔ»†²½ñ½Ÿ‘Ö–SïÔg$ÁRÀÿÎôäõ@^€Ê¿ Œ¶Î!áhl(ä‘Éû|àÿ7õ®¡4mWïËw{*ƒÝ;”t}aŽI®8S@Y^Ÿ·`–/?ü·­sHx¼k ü<]WÄcS†ä8‘DÍ#“wÿ8h{cß«Y€„û~ï5Â:„•¼-)üï=äK¨æ)¦Þ9t¿fÊ­Ãßs€‘ä—¶¶ܹçÅ~Sn¦™¢dëÁ¯­CXÉËŸ~s}é h¯ÿD{lÊ>xDñ»mÞØ§”£D5O>8˜Mëö|®-âñ4S”l~âl_úaëò®Lòdp°Î!áikK1¥¯úÝs㈽"(ù#“onßgä¾[ö¥­5ï~TæGê“|þ-Ï»Oõ”^æ`Œu ÏS bãÚîíúµëV÷àÅ'„œH¢æ…'¶{[èMºóô#:# Ù|å”]d"×òªÌó½Á]cCÂÓ™M\î¹q8Þ‡H"©½wÿÿúõ7 4S”p?›é{WX‡È¥¼*™k€~Ö9$5€·Þ,éÐïYþF¯½Ø7¤D5¯>ߥ‹Ê:ô{V¯ìÉKO뜰„P@Û÷¬CäRÞ€™¾ì¯ÿoÒM;ÈåÎÿÕNÐùbÒûŒÜ}ýÍ%ßås|ÙAÖ!r%o @ü7ä÷®OI7ó¥¾,]ر;»]Ï«`þì^YN$Q3V/^¯éÜŸó›‹Ë˜õÏ>YN$Sìá7Ö!r%/ À,_~ pªu ×=7ŒèÒï¿·‹¿_¢OŸi‡3fû’­CäB^€^'?%ÜâyÌŸÕµ;ø×^ìü ‚Dßò7ʘõr×Öz̛ٛœAøp¤~á=‰_õ™øPãËÎްÎ!áºëºYù:“oîÜóa‰¾»¯ÏÎÛ÷vr‰ÄÊás(Oü¬q¢ À; îë®KJ™ñBv^îxáɼ½ª}ï‡K|¬[݃ŸÊÎ~3žïDzťYùZ]žà'IŸHt˜KéD`œu ×Ý7dï=þ pLÒ,@âÜsCöÞã÷&ß<"+_K¢ËáªçPö)ëaJl˜ä)ðÚô'ñֽ݃ŸÌî.mOO´×=â%>6mèÎSY>óáùÇ´{'A‰µŸxŸÜq2±ÿ`Q~.p¨u ×½7Ïú^þ;ÏÐ,@R„±—8c» J,6—ÒÏX‡K" Àλÿ}ë®m›»eýÎn—GïÛûi‚}ažæ÷ä´ÁlÞ¨™¢¤ó¸Ÿ<ã)´Î†D€ƒ(»8Ø:‡„kò-ûÒÚÎ^Í;RL½kh(_[rçþ;†Ñ´=œÏHkKŠûÛyê¤ÄÚA½)ÿœuˆ0$®ÌôyÈ«ýœóQº®ˆÇ¦ìê5¼s ‰,þya{cÝ3,Ôk<2i(õµÚ`4é<þGIœH\HQv0Ò:‡„kê]CÙÞîñÝ …88'×’ìy|ê¶lÊͽ\<Ž’H8l.å'[‡È¦Dß´Î á²Xx5éæì¿j(á Ç”Ûrû sAªD‡'HÔ“˜0ËWŒ>bCÂeñêÕú5Ýynzv7’ð<óè@Ö¾Õ#§× ó•T‰÷±9¾g•uŠlILH‘IT3“g¹ùÊ]×go+Y ÷0Éè°ž06¥’(*¸Ò:A¶$¢Ìõ=†‚KìnM²“åö««——0ãù®%+á{åÙþ¬\fsPOÛRKôxøÜLß;@$¢d(¼Ð˸ g}Tï]×ígz}Ù;냜²y0•DVQm_³‘ ±/¯ø>å¾lCÂõêóýX¶¸Ì4ï—3wFoÓ ²{sgôfáœ Ó Ù<šZ"í+3}oÛ[ľt£õ+@ìÿ dÏî½1‡óÜsãë²wß0Â:w]7Â:‚„¯¼¶Øßxƺ¼sLãW­sH¸æÍìÍ‚š^Ö1˜ýÏ>,y½Ü:†¼Ï²Å¥Ìyµu Ï«`þ¬h|^%<¾÷£‚c¾†òѸ5”ÐÜ‘;»]î5Ze.»w×ÿŽŒÔ³÷{"ö™•PŒ˜KÅIÖ!º"ÖÀá/±Î áZþF³þ;»]^zz«Þ,±Ž!ïX½¢„>­çî3_êËÒ…¶kV$|ž ÖcPl À _28Ý:‡„ëî룷ªÚ{û7äÿÜsC4÷hÐg$/œ1×—°ÑY±-E¤.B¯þ%ÚºÕ=xñ©hþÝzæÑlXÛÝ:FÞÛ¸¾;ÏNægä…'ðö*›}+$gŠÜ…Ö!:+–à™¾dCÂÕ;;€¶¶SnÕžµÉ7íK[k4Œ3ß—@râ⸞Í¿9{QCÉ ÀÖ9$<›6tüÞêÞ?˜m›s{.üŸÚ­ÅL`ˆuŒ=zzÚ 6­Óg$᪡ôxë˱^x!{wß-ѽ³Û¥µ¹€©w µŽ‘·¸c-?¯­-Å”Û5 tb9&Eû'ìxÕ—õuø3­sHxÒµE<ñ;»]¦Ý3Œ†t¡uŒ¼³½¡€‡ïGùzô¾}¨ÛVlCBäpg/ðåÑz]©bWºÁ…;ÿM’êþ;†Ñ´=Úwv»Äi J’8¯æ)Í%œ‡îÍpžuŽŽŠ]ðZü—hÛ xèžaÖ1:$SÑIÇG/Þ9ŒÆ†xé‡ÝÖÀ±*³|ÉX`´u ÏÓ†’®×ÊÚ­Å–æé¤T±+>Ò:ÄûEo uA$§JDDD:ÍGïÑvä €'šÏJDDD:ÍEol‹Vi0Þ:†ˆˆH69ï=zb±uŽw‹Tغy<ÐÓ:‡ˆˆH–õØBfœuˆw‹Tðžÿ‹ˆH2ù‚hq‘*Q|F"""’ >bûD«m@DD$þëï™ÐôÄAàYç Éc?=À:Ä.‘)ÎµŽµÎ "".?Æ:Á.‘)àUDD$Ù|tƺ€TdZ‘ˆˆH8¢3ÖE§¤¢ÓŠDDD¡Gïõ‘â9Ô:†ˆˆH˜<ŒfâÄë‘0pkïC€nÖ9DDDBÖ£ßÍX‡€ˆ€(M‰ˆˆˆ„Éù‚H<òŽH@@DDò‚‹ÈMo4 @„^‹ Y$ƼHïÜaÖDDDr$cžy=zb1žaÖ9DDDrd8ùH¡uó°±(…"""9R8¨¶×Pëæ¯kËìgADD$§Zó±Ï¾8FXgÉ¥Œ+P@@DDòŒs~„uóའ€ˆˆä™ÜüšðæÓ """9`>öE Ø· ‘œr.¿ ÀУ'ö7Ð2ƒˆˆHîù!#F|±»eÓI·œe®±WÚt<ÓÐU"""œoiy}Óò ±¼¾ˆˆˆ¸Á–×7-ÞÑ×òú"""Vœ·­ßP‘¼äRy\ô³¼¾ˆˆˆï½éhz¡× €DT¢bŠR¡_§5ÈÐÔÚúu¢HßcÉ{Î™Ž¶ç;߯·%z®;û2N>°2ôë<¿b!ïømè׉¢Û>û ŽßoTè×ybéοç¡_G¤Ã¼3°}`¼BDDÄPþ®ðÆíGDDÄŽí»p )½Í®/""b«†»áš€S·Y „¿HDD$šŠÎ¿úäžV7+=zPnum‘(¨K5VX]Û¬øWfum‘(èfc¡YHú"«k‹ˆˆDA[`7Ú €ˆˆäµT>€Œ €ˆˆä¹T¡ÝXh7PP¨ ""y-ãór@kDD$¿Y>7+Îøcy9à´@DDò\ÊÛ=7+ˆˆHžKžÊk·§G""’×2Î[]Ûn á?´ˆˆH¤ ×ÃÙÍh ˆˆä9ËõpvÇ‹ˆˆˆÃE€´Y][DD$ ¼£ÕêÚvûx×bum‘(°¼¶›Àk@DDòšåͰá"@g6í!""y8`ùÜCDD$ ×–k2Z(""y®Àp6ܬúŒŠˆH^ òñ-͈ˆH¾ËË€­‘<´åá €å´‡ˆˆH©<œÀ§´@DDòZq`7Úí¶º¶ˆˆH´Îl,4+ÍE©z«k‹ˆˆDACaÙXhV¦ýú¥ w@1ÖúÄoçm·º¸åqÀØjx}K›Ù9š°,xØby}C¦c ip;ÛˆˆHÞñÆc i@3""’§œÏãïfDD$?9Û1д¤œfDD$?ù¼žP‘<åŒÇ@ãGˆˆH~r¶c í"@—Zgz}+[oyyÓøÔJË니ˆXñ…+,¯oZÊÒe+1ÜIDDÄHPѰý-˦`åÊ[v€ß`™ADDÄÀÚeËk¶ `½àL§@DDDrγÒ:B €ý7ADD$§R˜ßüšï5 ""yÆ{ó±Ï¼¤œ_eADD$—|f¿Í €fDD$ß~¥uûP¨½DD$Ï¥Ìo~Í À€ÖÔ* °Î!""’#më{Õ¾m¢Ð:À‚“[Œ=s5žáÖYDvY¾e#sJÂ/è˶˜îjjÙ–õ”wëúu–oÙú5D:hÏ>ÛfÂYè?ö̇œçtë"""áslœÿÀYÖ)̸yÖDDDrÂùHŒy‘(©ó­3ˆˆˆäH$ƼH— "цDDDÂ8§°ËúþuKÀï°Î!""²¦Í¾i"Rv®†t ­cˆˆˆ„ÉÃëLžœ±ÎQ);EbJDDD$4ŽÈ<òŽNð*""’l©ÝìF§ WED$Ù¢´è=2 UT8Ç:ƒˆˆH¨Š»½na—Hì¸Ë€1g®[çÉ>·fãü†Z§Ø%238þiADD$ ÿ²u†w‹Vðî%ë"""¡pDjŒ‹Tp.ˆÔ7GDD$[2ž­3¼[¤ À†¢³íÖ9DDD²¬qsßÚ¹Ö!Þ-R€Y×µ‚›iCDD$Ë^ݹëmtD«Îy=‘¤‰Üع R‘û&‰ˆˆtI*z7·‘+­®ùe °Î!""’%Akañ+Ö!Þ/r nþ#Û€ÅÖ9DDD²dþ¶Y“ë¬C¼_ä ÀNÑ›*é½çÿÕàÝóÖDDD²Á¥Ü Ö>H$ @ª¨èq´@DDâ/SØÂ“Ö!>H$ ÀúšÉ›̶Î!""Ò5þµ5‹ØbâƒD²0Ý:ƒˆˆHפ³N°;‘-ÎûÈ~ÓDDDÚ#•ò‘½™lØxhñ«@$§MDDDöʳyýÜÊÈnoÙÀäÉïxÊ:†ˆˆH§8ÿ8\ÙíÑ-^ëDD$¦¼‹ôíM¼u ‘ \Ê=abO"]6-˜¼˜cCDD¤#<ÌÚ0ïÖ9ö$ÒÀ9=‘xq1x•=òüƒÖ DDD:"ðÁ4ë {㬴ǀ1g.ö·Î!""ÒË7Οù1«Ð:@{üéîSœã[Ö9D²íá{‡2ý!Ö1Lœò鵜þÙ·­cˆdÃÝ3q´uн‹Å À,_1>EÙÍD:kGSŠËÎ>Šuo÷°Ž’S†ìà§¼BÏ’Œu‘¬ Æwó¬sìM ÖÀxW7 XjC$Ûº÷¸âšÅ¸XTñìp.ÿá" þ’ToÄað‡˜€wL¶ †Ê#¶rÊYk¬cäÌ©g¯aÂ1[­cˆ„ÂáîµÎÐ^±)ž`’u‘°\úÍ¥ôÜl#tý4óå+—YÇ Q|ƪØ€j×8XdC$ =K3|óÚ…‰pÅ5‹(-k³Ž!–×+]Ãëí›àpz ‰UuÔV>vÆ:ë¡ùø™ë8ü8ð)Éåñ±¹û‡˜€6üÝÖDÂtÙ-¡ÿÀÖ1²®Oÿf.¹z‰u ‘Py¸Ï:CGĪLpéÅÀëÖ9DÂRRÚÆ×ð†uŒ¬ûú÷Þ ¬\Sÿ’dnÎx׫ÇÔ±*;¹­ˆ„éÈã7sÂië­cd͉§¯ç˜6YÇ •ƒØM±+-øÛ$oŽTä]þß-¡w¿ø¿PÑ»…¯ü§¶ðÄkJáî´ÑQ±+GºôÀ:‡H˜ÊzµrÅ[Çè²oüà *z·XÇ •ƒûƺºmÖ9:*vÀÁõÖDÂvÔG6óáo°ŽÑi>eÇéãÐE²"®cR,ß:ö7‡²7€­³ˆ„©¾¶ˆKÎ<ŠÚ­ÅÖQ:¤¼W+×O}…^}t÷/‰÷F%éCÃ[é¨xÎ8|\ˆtTy¯Vþß·ã÷úÜ×¾÷†É7Äqð‡˜€‚[€Vë"a‹ÛTzÜ]ˆt@K ›uˆÎŠmã7xxÈ:‡H.Äe1]R/Š´{pœkˆO;ŸØ‹å ‘ŽŠËëtIy}Q¤}â=źTSÿ°Ê:‡H.D}C¤m`$²+*©{Ú:DWĺ8GàáOÖ9Dr%ª[ê&u c‘ÝstŽÀ:EWĺô¤Ûu@u‘\ˆê¡:I=ÄHd7ê›)¼É:DWžâ6§‰é& "µcu“~Œ±Èû9øëQnk½uŽ®Š}p´ý½(yäŠkQZfÿ( gi†o^»Ë-ÅD:¥ÕÑöëÙˆPéšÖ€ŸdC$Wú hæâ«–YÇà+W/¡ÿ`­ú—¼rç8×ô¶uˆlHDð¿†xîÆ$Ò§œµ† Çl5»~å[ùø§×š]_Ä‚'øƒu†lILïçyxÆ:‡H®8—ÿp=K29¿v÷W\³XSÿ’WL¯vs­sdKb €ÃýÎ:ƒH. ²ƒ/]‘ûG—|s)ƒ‡6åüº"–‚D1‰*•Ô?̳Î!’K§Ÿó6UGåîQÀØÃ·qÚÄD<éˆyU4ÆzãŸ÷KTxç”Àÿ±Î!’KÎÁ?ZDžá? èÖ=àÊ-ÒÔ¿äûm\OýÛD€6Ò·Ë­sˆäÒ }vðů¿úu¾tù2†ì«©É;K먿Û:D¶%®Lp´?±Î!’kgœû6cªkCûú‡Ž«ãŒs5õ/ùÈ]óQ‡ýÆY–¸°”ôít&©ä•TÊsŵ‹(î–ýGEÅß¼v©T¢f@EÚca%õ÷X‡C" À9ŽŒÇi@òÎÐáÛ¹ð«ÙvÑ×ßdØÈƬ]‘¨óøÅýПÝIdx§±éÉ;g]°šÑUÙ{pȘz>}þê¬}=‘¸ð0¿Š†û­s„%±`çQÁ^³’wR)Ï•×,¦( ŠŠ®úñBMýK¾ú~Rïþ!Á Š†)àæXçɵaû5ò…¯¬ìò×9ÿ?V0|MýKþq0«ŠôCÖ9”èàÞãdCÄÂÄ‹VqÐa?±ô€CÒœ}á[YL$Ü÷“öÞÿû%ºT»ô4àUë"¹VPàùÖORTÜñÌ¢€«¶ÂÂÄÎ~ŠìÉËã]ýtëaK|p¤~hAİ‘œ{ñªÿ¾ó.]É~6„H$úþûÖr!/ @¥«{xÄ:‡ˆ…Ï]²‚G¥ÛýëGœæœ/w¼4ˆ$Ä•®!/N–Í‹ச­sˆäZAçªkµk:¿#¿V$ZÀý—uˆ\É›0ÞÕ/þjCÄB{ïê;:[ ’$þ»ÊÕ/µÎ‘+ySš)ºØ`CÄÂÞžëwv½€HBlØAÑ/¬CäR^€£ÜÖz¿Æ:‡ˆ…+û|àô~WÞIß9Êmíü{³1”W` ×s­sˆX8à†|·¿«{ˆÄ›«GúVë¹–wàGÆá¯´Î!båý»ûek×@‘¸Já/Oò–¿»“wàW<°Î!báÝûûgóÜ‘8r¸{ƹô Ö9,Z°R@êê Á'€nÖYDrm× ΑՓEb¦©‚¼yíïýœuK³}éîZë"Zš (ÖÝ¿ä)ß©vé_Zç°’×`§¸…²YÀaÖYDD$§æeHO˜àhµb%/×ì2ÚÑâp_t $"’?2žÔ—óyð‡m"ª´`–zº5Pö*0Î:‹ˆˆ´ŸÇÏîFÃÑ£-ÖY¢J3{p £Ùã?4Yg‘öòÛÜyü÷L`/ª]ÃBËÛó¢EDâÆÁU\z±uލÓ#€vð7‡²iÀéÖYDDd­$}ºsZĽ7šhçð…£]ED¢l].Ôàß>*í4Æ5npøÏmÖYDDäß´yü¹;_ã–öPè€J×ð ð=ë""ò~îêj×ðœuŠ8Ñ€Ú¹ üðçXgp¸{*]ý¹Ö9âF3侘n_XgÉwæ;z\l#Ž4ÐIs|ÙAfÖYDDòT:Gè•¿ÎÑ @'Uºô óDD,x‡ÿ¢ÿÎSè‚j—žæàWÖ9DDòÃý¤Ò5Üo#Îô ‹¼'5—²G<œbED$?ø'—Òpê9ŽŒu’8SÈ‚™¾¬_¼ Œ´Î""’pËŠqGŽvõ[­ƒÄdÁ—Þœ!u2°É:‹ˆH‚mqpšÿìPÈ’ ®îÍœ 4[gI ‡ŸXéÒK¬ƒ$… @séþBôf€ˆH6y‡ûò;»±J–¨dY¥k¸×ãdCD$)<|·ÒÕßa#i´0$³}Ùß|Å:‡ˆHœ9¸±Ò¥µÓ_4’€ô×Á?iCD$®<þñm¤/³Î‘TšÑ+¾Oy7Z_ÆZg‰™Pp\•«­µ’T*!›í{ wd^†Xg‰‰· i;fŒkZm$Éô dÕ®v•ƒ¬³ˆˆÄÀ¦²ÿð©ä@¥K/ N´y…ˆÈîÕ¥H2Þ5,²’Trd¼kœ—Â}H[g‰ F§su³­ƒä €çê_N­³ˆˆDHøÓ+]úEë ùD Ǫ\ú%Gê,´e°ˆ@ ¸‰U®áYë ùFÀ@¥«{øÐfEDÄPÆáϯrõXÉG*Fª\zªÃ]ÖYDD x_©t “¬ƒä+Cïìm}*"’_àÒj—¾Ñ:H>ÓF@0Û—Ÿëð·…ÖYDDB–.®ré[¬ƒä;€ˆ˜ëË>éa’‡îÖYDDBÒâñŸ¯v S¬ƒˆ @¤Ìöå§:ü ‡u‘ìòÛRgwõÓ­“ÈN*3Û—ïpåÖYDD²¤Ñ|ªÚ5>mDþ @ÍöÁt ¯u‘.ª p§Žwõ¯X‘÷Rˆ¨_R ©'€þÖYDD:i£'8¹Ú5ε"ÿN ÂfùÒCS¸§ÐQÂ"?o§à¤q.ý†uù`Ú ÂÆ»†E޶#ÀͱÎ""Ò¯g(Íä‘Ù¾ü‡ÿ+PbED"§ Üw*©ÿ£sxë0>€<3Ó—’ÂßépÕÖYD$2^/ øüX×8ß:ˆäŽä™ .½8 á(p×¢ƒDòwø?“¯Á?ÿh Íõ¥'¸Û€}¬³ˆHn9XŸÁ]4ÞÕO·Î"64ÇÆ¹†@ÁawuÉ©šá0 þùM3@/îÏÀë,"š­¾SéÒ×Y{šª\ÃäR‡×V‹$›œƒ5øË.š3Û—~Øá®´Î""]¶Â‘º¬ÒÕ=aD¢E3òoª]ÃsM¤Çyø±Î#"×Ó}¬ù š=ªñ%•ŽÔ Æ[g‘v›çp—TºúÖA$º4 {Tåç´‘>øžƒÖyDdš<|§–ôx þ²7šv›ë{ õþÜÃÐgG$jN‘úÆ8W·Â:ˆÄƒ~ˆK‡ÍõåGzü<eE$ßyüìÜã\úë,/*Ò)Þ“ª¡ü )ü¯tÔ°ˆ‰Íà~º”ú?Ÿã´XW:N@ºd®XÐôŸà¿ t³Î#’Zþo;(þÁQnk½u‰/ÉŠY¾ü€üüDë," öp†Ô\Ý›ÖA$þT$«fû’S¤~ªõ"Yõ²Ã¿Ò5<‚PEp)ø/€ëiGòR3¸ižÌuU4>­Õü7*kó|Eï6üùÿe`¬uÉnŽƒ=©;ª\m­u‘ÎRĘë+öóçx¸eGe!¸ÉÁ½ã]Ã"ë0"Ù  ‰4Ç—Žö¤&:üg=bGbi¥ÃO7¹Ò¥_´#’m*’x»ÊøsѲg«þA ú’T$¯ÔøòÃO9ü)ª€”u&1³=n:¸«]ÝLë@"¹¢ yk¦/ëW€ÿ(¸“€Oƒ­3INl÷‡* ópµÛ¾Ö:ˆvn84›Šª‚“<î$ð ­sIVjx ‚§êh|V'ˆ| ™¾¬_ ÷1òøãŒF â"^÷¢'x¡÷ä‘.½Å:”HÔ¨ˆ´Ãß¿´••À±Ž>TÇüvp5^,€— q/võ[­S‰D €H'<ã)ìMyµ‡cÀ  ±Î•'Öÿ÷"ðr-õ5šÒé8‘,©ñ½z92‡£Àö¸ñ@%Pb-®Z€ef ,l&xí׸Þ:˜H¨ˆ„h’§àÿ·wǬQA€ßÝ|ñ è!zV?«øÿÇ¥3ä06zŠœBÎÜíZĬlô"ò<0°L5Ýðû*³-ýuI=éé'¹~²øY,ÞØ&¹HrZRN[Ú¢¦,Þd}î7=ø{4pGýᣫdªÙM%eêÉ””)éS’ã$w]ãô¹$Ëž²ìéËš,[ÚrȰ\åË;#|Ø? üƒÎzÆo™'åyOZ’yOžä6æIæ?óó$‡{.ñª$«ž¬r“|¸É—Ô÷I{{?ë‹—%›=×ü†þg=ã§ÌŒÙµŒCO;L’–v4¦—mRkÆ$٦߫é¿LZÊnHù~}Þm†¤mRzM½L’’zU³Ùn2\>Îú« €äÔ¹ë-ö»ä‹IEND®B`‚chiaki-v2.2.0/gui/include/000077500000000000000000000000001447035777400153625ustar00rootroot00000000000000chiaki-v2.2.0/gui/include/avopenglframeuploader.h000066400000000000000000000012361447035777400221170ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_AVOPENGLFRAMEUPLOADER_H #define CHIAKI_AVOPENGLFRAMEUPLOADER_H #include #include #include class StreamSession; class AVOpenGLWidget; class QSurface; class AVOpenGLFrameUploader: public QObject { Q_OBJECT private: StreamSession *session; AVOpenGLWidget *widget; QOpenGLContext *context; QSurface *surface; private slots: void UpdateFrameFromDecoder(); public: AVOpenGLFrameUploader(StreamSession *session, AVOpenGLWidget *widget, QOpenGLContext *context, QSurface *surface); }; #endif // CHIAKI_AVOPENGLFRAMEUPLOADER_H chiaki-v2.2.0/gui/include/avopenglwidget.h000066400000000000000000000040161447035777400205530ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_AVOPENGLWIDGET_H #define CHIAKI_AVOPENGLWIDGET_H #include "transformmode.h" #include #include #include extern "C" { #include } #define MAX_PANES 3 class StreamSession; class AVOpenGLFrameUploader; class QOffscreenSurface; struct PlaneConfig { unsigned int width_divider; unsigned int height_divider; unsigned int data_per_pixel; GLint internal_format; GLenum format; }; struct ConversionConfig { enum AVPixelFormat pixel_format; const char *shader_vert_glsl; const char *shader_frag_glsl; unsigned int planes; struct PlaneConfig plane_configs[MAX_PANES]; }; struct AVOpenGLFrame { GLuint pbo[MAX_PANES]; GLuint tex[MAX_PANES]; unsigned int width; unsigned int height; ConversionConfig *conversion_config; bool Update(AVFrame *frame, ChiakiLog *log); }; class AVOpenGLWidget: public QOpenGLWidget { Q_OBJECT private: StreamSession *session; GLuint program; GLuint vbo; GLuint vao; AVOpenGLFrame frames[2]; int frame_fg; QMutex frames_mutex; QOffscreenSurface *frame_uploader_surface; QOpenGLContext *frame_uploader_context; AVOpenGLFrameUploader *frame_uploader; QThread *frame_uploader_thread; QTimer *mouse_timer; ConversionConfig *conversion_config; public: static QSurfaceFormat CreateSurfaceFormat(); explicit AVOpenGLWidget(StreamSession *session, QWidget *parent = nullptr, TransformMode transform_mode = TransformMode::Fit); ~AVOpenGLWidget() override; void SwapFrames(); AVOpenGLFrame *GetBackgroundFrame() { return &frames[1 - frame_fg]; } void SetTransformMode(TransformMode mode) { transform_mode = mode; } TransformMode GetTransformMode() const { return transform_mode; } protected: TransformMode transform_mode; void mouseMoveEvent(QMouseEvent *event) override; void initializeGL() override; void paintGL() override; public slots: void ResetMouseTimeout(); void HideMouse(); }; #endif // CHIAKI_AVOPENGLWIDGET_H chiaki-v2.2.0/gui/include/controllermanager.h000066400000000000000000000071531447035777400212570ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_CONTROLLERMANAGER_H #define CHIAKI_CONTROLLERMANAGER_H #include #include #include #include #include #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER #include #include #endif #define PS_TOUCHPAD_MAX_X 1920 #define PS_TOUCHPAD_MAX_Y 1079 class Controller; class ControllerManager : public QObject { Q_OBJECT friend class Controller; private: #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER QSet available_controllers; #endif QMap open_controllers; void ControllerClosed(Controller *controller); private slots: void UpdateAvailableControllers(); void HandleEvents(); #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER void ControllerEvent(SDL_Event evt); #endif public: static ControllerManager *GetInstance(); ControllerManager(QObject *parent = nullptr); ~ControllerManager(); QSet GetAvailableControllers(); Controller *OpenController(int device_id); signals: void AvailableControllersUpdated(); }; class Controller : public QObject { Q_OBJECT friend class ControllerManager; private: Controller(int device_id, ControllerManager *manager); #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER void UpdateState(SDL_Event event); bool HandleButtonEvent(SDL_ControllerButtonEvent event); bool HandleAxisEvent(SDL_ControllerAxisEvent event); #if SDL_VERSION_ATLEAST(2, 0, 14) bool HandleSensorEvent(SDL_ControllerSensorEvent event); bool HandleTouchpadEvent(SDL_ControllerTouchpadEvent event); #endif #endif ControllerManager *manager; int id; ChiakiOrientationTracker orientation_tracker; ChiakiControllerState state; bool is_dualsense; #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER QMap, uint8_t> touch_ids; SDL_GameController *controller; #endif public: ~Controller(); bool IsConnected(); int GetDeviceID(); QString GetName(); ChiakiControllerState GetState(); void SetRumble(uint8_t left, uint8_t right); void SetTriggerEffects(uint8_t type_left, const uint8_t *data_left, uint8_t type_right, const uint8_t *data_right); bool IsDualSense(); signals: void StateChanged(); }; /* PS5 trigger effect documentation: https://controllers.fandom.com/wiki/Sony_DualSense#FFB_Trigger_Modes Taken from SDL2, licensed under the zlib license, Copyright (C) 1997-2022 Sam Lantinga https://github.com/libsdl-org/SDL/blob/release-2.24.1/test/testgamecontroller.c#L263-L289 */ typedef struct { Uint8 ucEnableBits1; /* 0 */ Uint8 ucEnableBits2; /* 1 */ Uint8 ucRumbleRight; /* 2 */ Uint8 ucRumbleLeft; /* 3 */ Uint8 ucHeadphoneVolume; /* 4 */ Uint8 ucSpeakerVolume; /* 5 */ Uint8 ucMicrophoneVolume; /* 6 */ Uint8 ucAudioEnableBits; /* 7 */ Uint8 ucMicLightMode; /* 8 */ Uint8 ucAudioMuteBits; /* 9 */ Uint8 rgucRightTriggerEffect[11]; /* 10 */ Uint8 rgucLeftTriggerEffect[11]; /* 21 */ Uint8 rgucUnknown1[6]; /* 32 */ Uint8 ucLedFlags; /* 38 */ Uint8 rgucUnknown2[2]; /* 39 */ Uint8 ucLedAnim; /* 41 */ Uint8 ucLedBrightness; /* 42 */ Uint8 ucPadLights; /* 43 */ Uint8 ucLedRed; /* 44 */ Uint8 ucLedGreen; /* 45 */ Uint8 ucLedBlue; /* 46 */ } DS5EffectsState_t; #endif // CHIAKI_CONTROLLERMANAGER_H chiaki-v2.2.0/gui/include/discoverymanager.h000066400000000000000000000021501447035777400210730ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_DISCOVERYMANAGER_H #define CHIAKI_DISCOVERYMANAGER_H #include #include "host.h" #include #include struct DiscoveryHost { bool ps5; ChiakiDiscoveryHostState state; uint16_t host_request_port; #define STRING_MEMBER(name) QString name; CHIAKI_DISCOVERY_HOST_STRING_FOREACH(STRING_MEMBER) #undef STRING_MEMBER HostMAC GetHostMAC() const; }; Q_DECLARE_METATYPE(DiscoveryHost) class DiscoveryManager : public QObject { Q_OBJECT friend class DiscoveryManagerPrivate; private: ChiakiLog log; ChiakiDiscoveryService service; bool service_active; QList hosts; private slots: void DiscoveryServiceHosts(QList hosts); public: explicit DiscoveryManager(QObject *parent = nullptr); ~DiscoveryManager(); void SetActive(bool active); void SendWakeup(const QString &host, const QByteArray ®ist_key, bool ps5); const QList GetHosts() const { return hosts; } signals: void HostsUpdated(); }; #endif //CHIAKI_DISCOVERYMANAGER_H chiaki-v2.2.0/gui/include/dynamicgridwidget.h000066400000000000000000000016171447035777400212360ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_DYNAMICGRIDWIDGET_H #define CHIAKI_DYNAMICGRIDWIDGET_H #include class QGridLayout; class DynamicGridWidget : public QWidget { Q_OBJECT private: QGridLayout *layout; QList widgets; unsigned int item_width; unsigned int columns; void UpdateLayout(); void UpdateLayoutIfNecessary(); unsigned int CalculateColumns(); protected: void resizeEvent(QResizeEvent *) override { UpdateLayoutIfNecessary(); } public: explicit DynamicGridWidget(unsigned int item_width, QWidget *parent = nullptr); void AddWidget(QWidget *widget); void AddWidgets(const QList &widgets); void RemoveWidget(QWidget *widget); void ClearWidgets(); void SetItemWidth(unsigned int item_width) { this->item_width = item_width; UpdateLayoutIfNecessary(); } }; #endif //CHIAKI_DYNAMICGRIDWIDGET_H chiaki-v2.2.0/gui/include/exception.h000066400000000000000000000006361447035777400175360ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_EXCEPTION_H #define CHIAKI_EXCEPTION_H #include #include class Exception : public std::exception { private: QByteArray msg; public: explicit Exception(const QString &msg) : msg(msg.toLocal8Bit()) {} const char *what() const noexcept override { return msg.constData(); } }; #endif // CHIAKI_EXCEPTION_H chiaki-v2.2.0/gui/include/host.h000066400000000000000000000053251447035777400165150ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_HOST_H #define CHIAKI_HOST_H #include #include #include class QSettings; class HostMAC { private: uint8_t mac[6]; public: HostMAC() { memset(mac, 0, sizeof(mac)); } HostMAC(const HostMAC &o) { memcpy(mac, o.GetMAC(), sizeof(mac)); } explicit HostMAC(const uint8_t mac[6]) { memcpy(this->mac, mac, sizeof(this->mac)); } const uint8_t *GetMAC() const { return mac; } QString ToString() const { return QByteArray((const char *)mac, sizeof(mac)).toHex(); } uint64_t GetValue() const { return ((uint64_t)mac[0] << 0x28) | ((uint64_t)mac[1] << 0x20) | ((uint64_t)mac[2] << 0x18) | ((uint64_t)mac[3] << 0x10) | ((uint64_t)mac[4] << 0x8) | mac[5]; } }; static bool operator==(const HostMAC &a, const HostMAC &b) { return memcmp(a.GetMAC(), b.GetMAC(), 6) == 0; } static bool operator<(const HostMAC &a, const HostMAC &b) { return a.GetValue() < b.GetValue(); } class RegisteredHost { private: ChiakiTarget target; QString ap_ssid; QString ap_bssid; QString ap_key; QString ap_name; HostMAC server_mac; QString server_nickname; char rp_regist_key[CHIAKI_SESSION_AUTH_SIZE]; uint32_t rp_key_type; uint8_t rp_key[0x10]; public: RegisteredHost(); RegisteredHost(const RegisteredHost &o); RegisteredHost(const ChiakiRegisteredHost &chiaki_host); ChiakiTarget GetTarget() const { return target; } const HostMAC &GetServerMAC() const { return server_mac; } const QString &GetServerNickname() const { return server_nickname; } const QByteArray GetRPRegistKey() const { return QByteArray(rp_regist_key, sizeof(rp_regist_key)); } const QByteArray GetRPKey() const { return QByteArray((const char *)rp_key, sizeof(rp_key)); } void SaveToSettings(QSettings *settings) const; static RegisteredHost LoadFromSettings(QSettings *settings); }; class ManualHost { private: int id; QString host; bool registered; HostMAC registered_mac; public: ManualHost(); ManualHost(int id, const QString &host, bool registered, const HostMAC ®istered_mac); ManualHost(int id, const ManualHost &o); int GetID() const { return id; } QString GetHost() const { return host; } bool GetRegistered() const { return registered; } HostMAC GetMAC() const { return registered_mac; } void Register(const RegisteredHost ®istered_host) { this->registered = true; this->registered_mac = registered_host.GetServerMAC(); } void SaveToSettings(QSettings *settings) const; static ManualHost LoadFromSettings(QSettings *settings); }; Q_DECLARE_METATYPE(HostMAC) Q_DECLARE_METATYPE(RegisteredHost) Q_DECLARE_METATYPE(ManualHost) #endif //CHIAKI_HOST_H chiaki-v2.2.0/gui/include/loginpindialog.h000066400000000000000000000007641447035777400205410ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_LOGINPINDIALOG_H #define CHIAKI_LOGINPINDIALOG_H #include class QLineEdit; class QDialogButtonBox; class LoginPINDialog : public QDialog { Q_OBJECT private: QString pin; QLineEdit *pin_edit; QDialogButtonBox *button_box; void UpdateButtons(); public: explicit LoginPINDialog(bool incorrect, QWidget *parent = nullptr); QString GetPIN() { return pin; } }; #endif // CHIAKI_LOGINPINDIALOG_H chiaki-v2.2.0/gui/include/logsniffer.h000066400000000000000000000027061447035777400176760ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-GPL-3.0-or-later-OpenSSL #ifndef CHIAKI_LOG_SNIFFER_H #define CHIAKI_LOG_SNIFFER_H #include #include #include #include #include #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER #include #endif class Controller; class ControllerManager : public QObject { Q_OBJECT friend class Controller; private: #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER QSet available_controllers; #endif QMap open_controllers; void ControllerClosed(Controller *controller); private slots: void UpdateAvailableControllers(); void HandleEvents(); void ControllerEvent(int device_id); public: static ControllerManager *GetInstance(); ControllerManager(QObject *parent = nullptr); ~ControllerManager(); QSet GetAvailableControllers(); Controller *OpenController(int device_id); signals: void AvailableControllersUpdated(); }; class Controller : public QObject { Q_OBJECT friend class ControllerManager; private: Controller(int device_id, ControllerManager *manager); void UpdateState(); ControllerManager *manager; int id; #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER SDL_GameController *controller; #endif public: ~Controller(); bool IsConnected(); int GetDeviceID(); QString GetName(); ChiakiControllerState GetState(); signals: void StateChanged(); }; #endif // CHIAKI_CONTROLLERMANAGER_H chiaki-v2.2.0/gui/include/mainwindow.h000066400000000000000000000027741447035777400177210ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_MAINWINDOW_H #define CHIAKI_MAINWINDOW_H #include #include "discoverymanager.h" #include "host.h" class DynamicGridWidget; class ServerItemWidget; class Settings; struct DisplayServer { DiscoveryHost discovery_host; ManualHost manual_host; bool discovered; RegisteredHost registered_host; bool registered; QString GetHostAddr() const { return discovered ? discovery_host.host_addr : manual_host.GetHost(); } bool IsPS5() const { return discovered ? discovery_host.ps5 : (registered ? chiaki_target_is_ps5(registered_host.GetTarget()) : false); } }; class MainWindow : public QMainWindow { Q_OBJECT private: Settings *settings; QIcon discover_action_icon; QIcon discover_action_off_icon; QAction *discover_action; DynamicGridWidget *grid_widget; QList server_item_widgets; DiscoveryManager discovery_manager; QList display_servers; DisplayServer *DisplayServerFromSender(); void SendWakeup(const DisplayServer *server); private slots: void ServerItemWidgetSelected(); void ServerItemWidgetTriggered(); void ServerItemWidgetDeleteTriggered(); void ServerItemWidgetWakeTriggered(); void UpdateDiscoveryEnabled(); void ShowSettings(); void Quit(); void UpdateDisplayServers(); void UpdateServerWidgets(); public: explicit MainWindow(Settings *settings, QWidget *parent = nullptr); ~MainWindow() override; }; #endif //CHIAKI_MAINWINDOW_H chiaki-v2.2.0/gui/include/manualhostdialog.h000066400000000000000000000013071447035777400210670ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_MANUALHOSTDIALOG_H #define CHIAKI_MANUALHOSTDIALOG_H #include class Settings; class QLineEdit; class QComboBox; class QDialogButtonBox; class QAbstractButton; class ManualHostDialog: public QDialog { Q_OBJECT private: Settings *settings; int host_id; QLineEdit *host_edit; QComboBox *registered_host_combo_box; QDialogButtonBox *button_box; private slots: void ValidateInput(); void ButtonClicked(QAbstractButton *button); public: explicit ManualHostDialog(Settings *settings, int id, QWidget *parent = nullptr); public slots: void accept() override; }; #endif // CHIAKI_MANUALHOSTDIALOG_H chiaki-v2.2.0/gui/include/registdialog.h000066400000000000000000000034111447035777400202070ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_REGISTDIALOG_H #define CHIAKI_REGISTDIALOG_H #include #include "host.h" #include class Settings; class QLineEdit; class QPlainTextEdit; class QDialogButtonBox; class QCheckBox; class QRadioButton; class RegistDialog : public QDialog { Q_OBJECT private: Settings *settings; QLineEdit *host_edit; QCheckBox *broadcast_check_box; QRadioButton *ps4_pre9_radio_button; QRadioButton *ps4_pre10_radio_button; QRadioButton *ps4_10_radio_button; QRadioButton *ps5_radio_button; QLineEdit *psn_online_id_edit; QLineEdit *psn_account_id_edit; QLineEdit *pin_edit; QDialogButtonBox *button_box; QPushButton *register_button; RegisteredHost registered_host; bool NeedAccountId(); private slots: void ValidateInput(); public: explicit RegistDialog(Settings *settings, const QString &host = QString(), QWidget *parent = nullptr); ~RegistDialog(); RegisteredHost GetRegisteredHost() { return registered_host; } public slots: void accept() override; }; class RegistExecuteDialog: public QDialog { Q_OBJECT friend class RegistExecuteDialogPrivate; private: Settings *settings; ChiakiLog log; ChiakiRegist regist; QPlainTextEdit *log_edit; QDialogButtonBox *button_box; RegisteredHost registered_host; void Finished(); private slots: void Log(ChiakiLogLevel level, QString msg); void Success(RegisteredHost host); void Failed(); public: explicit RegistExecuteDialog(Settings *settings, const ChiakiRegistInfo ®ist_info, QWidget *parent = nullptr); ~RegistExecuteDialog(); RegisteredHost GetRegisteredHost() { return registered_host; } }; Q_DECLARE_METATYPE(ChiakiRegistEventType) #endif // CHIAKI_REGISTDIALOG_H chiaki-v2.2.0/gui/include/servericonwidget.h000066400000000000000000000011741447035777400211210ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SERVERICONWIDGET_H #define CHIAKI_SERVERICONWIDGET_H #include #include #include class ServerIconWidget : public QWidget { Q_OBJECT private: bool ps5 = false; ChiakiDiscoveryHostState state = CHIAKI_DISCOVERY_HOST_STATE_UNKNOWN; QSvgRenderer svg_renderer; void LoadSvg(); protected: void paintEvent(QPaintEvent *event) override; public: explicit ServerIconWidget(QWidget *parent = nullptr); void SetState(bool ps5, ChiakiDiscoveryHostState state); }; #endif // CHIAKI_SERVERICONWIDGET_H chiaki-v2.2.0/gui/include/serveritemwidget.h000066400000000000000000000015621447035777400211300ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SERVERITEMWIDGET_H #define CHIAKI_SERVERITEMWIDGET_H #include class QLabel; class ServerIconWidget; struct DisplayServer; class ServerItemWidget : public QFrame { Q_OBJECT private: bool selected; QLabel *top_label; QLabel *bottom_label; ServerIconWidget *icon_widget; QAction *delete_action; QAction *wake_action; protected: void mousePressEvent(QMouseEvent *event) override; void mouseDoubleClickEvent(QMouseEvent *event) override; public: explicit ServerItemWidget(QWidget *parent = nullptr); bool IsSelected() { return selected; } void SetSelected(bool selected); void Update(const DisplayServer &display_server); signals: void Selected(); void Triggered(); void DeleteTriggered(); void WakeTriggered(); }; #endif //CHIAKI_CONSOLEITEMWIDGET_H chiaki-v2.2.0/gui/include/sessionlog.h000066400000000000000000000012401447035777400177150ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SESSIONLOG_H #define CHIAKI_SESSIONLOG_H #include #include #include #include class QFile; class StreamSession; class SessionLog { friend class SessionLogPrivate; private: StreamSession *session; ChiakiLog log; QFile *file; QMutex file_mutex; void Log(ChiakiLogLevel level, const char *msg); public: SessionLog(StreamSession *session, uint32_t level_mask, const QString &filename); ~SessionLog(); ChiakiLog *GetChiakiLog() { return &log; } }; QString GetLogBaseDir(); QString CreateLogFilename(); #endif //CHIAKI_SESSIONLOG_H chiaki-v2.2.0/gui/include/settings.h000066400000000000000000000074721447035777400174050ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SETTINGS_H #define CHIAKI_SETTINGS_H #include #include "host.h" #include #include enum class ControllerButtonExt { // must not overlap with ChiakiControllerButton and ChiakiControllerAnalogButton ANALOG_STICK_LEFT_X_UP = (1 << 18), ANALOG_STICK_LEFT_X_DOWN = (1 << 19), ANALOG_STICK_LEFT_Y_UP = (1 << 20), ANALOG_STICK_LEFT_Y_DOWN = (1 << 21), ANALOG_STICK_RIGHT_X_UP = (1 << 22), ANALOG_STICK_RIGHT_X_DOWN = (1 << 23), ANALOG_STICK_RIGHT_Y_UP = (1 << 24), ANALOG_STICK_RIGHT_Y_DOWN = (1 << 25), }; enum class DisconnectAction { AlwaysNothing, AlwaysSleep, Ask }; enum class Decoder { Ffmpeg, Pi }; class Settings : public QObject { Q_OBJECT private: QSettings settings; QMap registered_hosts; QMap manual_hosts; int manual_hosts_id_next; void LoadRegisteredHosts(); void SaveRegisteredHosts(); void LoadManualHosts(); void SaveManualHosts(); public: explicit Settings(QObject *parent = nullptr); bool GetDiscoveryEnabled() const { return settings.value("settings/auto_discovery", true).toBool(); } void SetDiscoveryEnabled(bool enabled) { settings.setValue("settings/auto_discovery", enabled); } bool GetLogVerbose() const { return settings.value("settings/log_verbose", false).toBool(); } void SetLogVerbose(bool enabled) { settings.setValue("settings/log_verbose", enabled); } uint32_t GetLogLevelMask(); bool GetDualSenseEnabled() const { return settings.value("settings/dualsense_enabled", false).toBool(); } void SetDualSenseEnabled(bool enabled) { settings.setValue("settings/dualsense_enabled", enabled); } ChiakiVideoResolutionPreset GetResolution() const; void SetResolution(ChiakiVideoResolutionPreset resolution); /** * @return 0 if set to "automatic" */ ChiakiVideoFPSPreset GetFPS() const; void SetFPS(ChiakiVideoFPSPreset fps); unsigned int GetBitrate() const; void SetBitrate(unsigned int bitrate); ChiakiCodec GetCodec() const; void SetCodec(ChiakiCodec codec); Decoder GetDecoder() const; void SetDecoder(Decoder decoder); QString GetHardwareDecoder() const; void SetHardwareDecoder(const QString &hw_decoder); unsigned int GetAudioBufferSizeDefault() const; /** * @return 0 if set to "automatic" */ unsigned int GetAudioBufferSizeRaw() const; /** * @return actual size to be used, default value if GetAudioBufferSizeRaw() would return 0 */ unsigned int GetAudioBufferSize() const; void SetAudioBufferSize(unsigned int size); QString GetAudioOutDevice() const; void SetAudioOutDevice(QString device_name); ChiakiConnectVideoProfile GetVideoProfile(); DisconnectAction GetDisconnectAction(); void SetDisconnectAction(DisconnectAction action); QList GetRegisteredHosts() const { return registered_hosts.values(); } void AddRegisteredHost(const RegisteredHost &host); void RemoveRegisteredHost(const HostMAC &mac); bool GetRegisteredHostRegistered(const HostMAC &mac) const { return registered_hosts.contains(mac); } RegisteredHost GetRegisteredHost(const HostMAC &mac) const { return registered_hosts[mac]; } QList GetManualHosts() const { return manual_hosts.values(); } int SetManualHost(const ManualHost &host); void RemoveManualHost(int id); bool GetManualHostExists(int id) { return manual_hosts.contains(id); } ManualHost GetManualHost(int id) const { return manual_hosts[id]; } static QString GetChiakiControllerButtonName(int); void SetControllerButtonMapping(int, Qt::Key); QMap GetControllerMapping(); QMap GetControllerMappingForDecoding(); signals: void RegisteredHostsUpdated(); void ManualHostsUpdated(); }; #endif // CHIAKI_SETTINGS_H chiaki-v2.2.0/gui/include/settingsdialog.h000066400000000000000000000026121447035777400205540ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SETTINGSDIALOG_H #define CHIAKI_SETTINGSDIALOG_H #include class Settings; class QListWidget; class QComboBox; class QCheckBox; class QLineEdit; class SettingsDialog : public QDialog { Q_OBJECT private: Settings *settings; QCheckBox *log_verbose_check_box; QComboBox *disconnect_action_combo_box; QCheckBox *dualsense_check_box; QComboBox *resolution_combo_box; QComboBox *fps_combo_box; QLineEdit *bitrate_edit; QComboBox *codec_combo_box; QLineEdit *audio_buffer_size_edit; QComboBox *audio_device_combo_box; QCheckBox *pi_decoder_check_box; QComboBox *hw_decoder_combo_box; QListWidget *registered_hosts_list_widget; QPushButton *delete_registered_host_button; void UpdateBitratePlaceholder(); private slots: void LogVerboseChanged(); void DualSenseChanged(); void DisconnectActionSelected(); void ResolutionSelected(); void FPSSelected(); void BitrateEdited(); void CodecSelected(); void AudioBufferSizeEdited(); void AudioOutputSelected(); void HardwareDecodeEngineSelected(); void UpdateHardwareDecodeEngineComboBox(); void UpdateRegisteredHosts(); void UpdateRegisteredHostsButtons(); void RegisterNewHost(); void DeleteRegisteredHost(); public: SettingsDialog(Settings *settings, QWidget *parent = nullptr); }; #endif // CHIAKI_SETTINGSDIALOG_H chiaki-v2.2.0/gui/include/settingskeycapturedialog.h000066400000000000000000000007051447035777400226520ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SETTINGSKEYCAPTUREDIALOG_H #define CHIAKI_SETTINGSKEYCAPTUREDIALOG_H #include class SettingsKeyCaptureDialog : public QDialog { Q_OBJECT signals: void KeyCaptured(Qt::Key); protected: void keyReleaseEvent(QKeyEvent *event) override; public: explicit SettingsKeyCaptureDialog(QWidget *parent = nullptr); }; #endif // CHIAKI_SETTINGSKEYCAPTUREDIALOG_H chiaki-v2.2.0/gui/include/streamsession.h000066400000000000000000000071231447035777400204350ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_STREAMSESSION_H #define CHIAKI_STREAMSESSION_H #include #include #include #if CHIAKI_LIB_ENABLE_PI_DECODER #include #endif #if CHIAKI_GUI_ENABLE_SETSU #include #include #endif #include "exception.h" #include "sessionlog.h" #include "controllermanager.h" #include "settings.h" #include "transformmode.h" #include #include #include #include class QAudioOutput; class QIODevice; class QKeyEvent; class Settings; class ChiakiException: public Exception { public: explicit ChiakiException(const QString &msg) : Exception(msg) {}; }; struct StreamSessionConnectInfo { Settings *settings; QMap key_map; Decoder decoder; QString hw_decoder; QString audio_out_device; uint32_t log_level_mask; QString log_file; ChiakiTarget target; QString host; QByteArray regist_key; QByteArray morning; ChiakiConnectVideoProfile video_profile; unsigned int audio_buffer_size; bool fullscreen; TransformMode transform_mode; bool enable_keyboard; bool enable_dualsense; StreamSessionConnectInfo( Settings *settings, ChiakiTarget target, QString host, QByteArray regist_key, QByteArray morning, bool fullscreen, TransformMode transform_mode); }; class StreamSession : public QObject { friend class StreamSessionPrivate; Q_OBJECT private: SessionLog log; ChiakiSession session; ChiakiOpusDecoder opus_decoder; bool connected; QHash controllers; #if CHIAKI_GUI_ENABLE_SETSU Setsu *setsu; QMap, uint8_t> setsu_ids; ChiakiControllerState setsu_state; SetsuDevice *setsu_motion_device; ChiakiOrientationTracker orient_tracker; bool orient_dirty; #endif ChiakiControllerState keyboard_state; ChiakiFfmpegDecoder *ffmpeg_decoder; void TriggerFfmpegFrameAvailable(); #if CHIAKI_LIB_ENABLE_PI_DECODER ChiakiPiDecoder *pi_decoder; #endif QAudioDeviceInfo audio_out_device_info; unsigned int audio_buffer_size; QAudioOutput *audio_output; QIODevice *audio_io; SDL_AudioDeviceID haptics_output; uint8_t *haptics_resampler_buf; QMap key_map; void PushAudioFrame(int16_t *buf, size_t samples_count); void PushHapticsFrame(uint8_t *buf, size_t buf_size); #if CHIAKI_GUI_ENABLE_SETSU void HandleSetsuEvent(SetsuEvent *event); #endif private slots: void InitAudio(unsigned int channels, unsigned int rate); void InitHaptics(); void Event(ChiakiEvent *event); void DisconnectHaptics(); void ConnectHaptics(); public: explicit StreamSession(const StreamSessionConnectInfo &connect_info, QObject *parent = nullptr); ~StreamSession(); bool IsConnected() { return connected; } void Start(); void Stop(); void GoToBed(); void SetLoginPIN(const QString &pin); ChiakiLog *GetChiakiLog() { return log.GetChiakiLog(); } QList GetControllers() { return controllers.values(); } ChiakiFfmpegDecoder *GetFfmpegDecoder() { return ffmpeg_decoder; } #if CHIAKI_LIB_ENABLE_PI_DECODER ChiakiPiDecoder *GetPiDecoder() { return pi_decoder; } #endif void HandleKeyboardEvent(QKeyEvent *event); bool HandleMouseEvent(QMouseEvent *event); signals: void FfmpegFrameAvailable(); void SessionQuit(ChiakiQuitReason reason, const QString &reason_str); void LoginPINRequested(bool incorrect); private slots: void UpdateGamepads(); void SendFeedbackState(); }; Q_DECLARE_METATYPE(ChiakiQuitReason) #endif // CHIAKI_STREAMSESSION_H chiaki-v2.2.0/gui/include/streamwindow.h000066400000000000000000000026041447035777400202600ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_GUI_STREAMWINDOW_H #define CHIAKI_GUI_STREAMWINDOW_H #include #include "streamsession.h" class QLabel; class AVOpenGLWidget; class StreamWindow: public QMainWindow { Q_OBJECT public: explicit StreamWindow(const StreamSessionConnectInfo &connect_info, QWidget *parent = nullptr); ~StreamWindow() override; private: const StreamSessionConnectInfo connect_info; StreamSession *session; QAction *fullscreen_action; QAction *stretch_action; QAction *zoom_action; AVOpenGLWidget *av_widget; void Init(); void UpdateVideoTransform(); void UpdateTransformModeActions(); protected: void keyPressEvent(QKeyEvent *event) override; void keyReleaseEvent(QKeyEvent *event) override; void closeEvent(QCloseEvent *event) override; void mousePressEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent *event) override; void mouseDoubleClickEvent(QMouseEvent *event) override; void resizeEvent(QResizeEvent *event) override; void moveEvent(QMoveEvent *event) override; void changeEvent(QEvent *event) override; private slots: void SessionQuit(ChiakiQuitReason reason, const QString &reason_str); void LoginPINRequested(bool incorrect); void ToggleFullscreen(); void ToggleStretch(); void ToggleZoom(); void Quit(); }; #endif // CHIAKI_GUI_STREAMWINDOW_H chiaki-v2.2.0/gui/include/transformmode.h000066400000000000000000000002711447035777400204130ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_TRANSFORMMODE_H #define CHIAKI_TRANSFORMMODE_H enum class TransformMode { Fit, Zoom, Stretch }; #endif chiaki-v2.2.0/gui/re.chiaki.Chiaki.appdata.xml000066400000000000000000000021731447035777400211210ustar00rootroot00000000000000 re.chiaki.Chiaki chiaki.desktop Chiaki Free and Open Source Client for PlayStation Remote Play CC0-1.0 AGPL-3.0-only Florian Märkl https://chiaki.re https://git.sr.ht/~thestr4ng3r/chiaki/tree/master/item/README.md#usage

Chiaki is a Free and Open Source Client for PlayStation 4 and PlayStation 5 Remote Play. It can be used to play in real time on a PlayStation as long as there is a network connection.

https://git.sr.ht/~thestr4ng3r/chiaki/blob/refs/heads/master/assets/screenshot.png chiaki@metallic.software
chiaki-v2.2.0/gui/res/000077500000000000000000000000001447035777400145305ustar00rootroot00000000000000chiaki-v2.2.0/gui/res/add-24px.svg000066400000000000000000000003561447035777400166000ustar00rootroot00000000000000chiaki-v2.2.0/gui/res/chiaki.svg000066400000000000000000000211651447035777400165060ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/gui/res/chiaki_macos.svg000066400000000000000000000222501447035777400176640ustar00rootroot00000000000000 chiaki-v2.2.0/gui/res/console-ps4.svg000066400000000000000000000032641447035777400174240ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/gui/res/console-ps5.svg000066400000000000000000000052241447035777400174230ustar00rootroot00000000000000 image/svg+xml chiaki-v2.2.0/gui/res/discover-24px.svg000066400000000000000000000004611447035777400176630ustar00rootroot00000000000000chiaki-v2.2.0/gui/res/discover-off-24px.svg000066400000000000000000000010571447035777400204350ustar00rootroot00000000000000chiaki-v2.2.0/gui/res/resources.qrc000066400000000000000000000005051447035777400172510ustar00rootroot00000000000000 settings-20px.svg add-24px.svg discover-24px.svg discover-off-24px.svg chiaki.svg chiaki_macos.svg console-ps4.svg console-ps5.svg chiaki-v2.2.0/gui/res/settings-20px.svg000066400000000000000000000014061447035777400177010ustar00rootroot00000000000000chiaki-v2.2.0/gui/src/000077500000000000000000000000001447035777400145265ustar00rootroot00000000000000chiaki-v2.2.0/gui/src/avopenglframeuploader.cpp000066400000000000000000000021151447035777400216130ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include AVOpenGLFrameUploader::AVOpenGLFrameUploader(StreamSession *session, AVOpenGLWidget *widget, QOpenGLContext *context, QSurface *surface) : QObject(nullptr), session(session), widget(widget), context(context), surface(surface) { connect(session, &StreamSession::FfmpegFrameAvailable, this, &AVOpenGLFrameUploader::UpdateFrameFromDecoder); } void AVOpenGLFrameUploader::UpdateFrameFromDecoder() { ChiakiFfmpegDecoder *decoder = session->GetFfmpegDecoder(); if(!decoder) { CHIAKI_LOGE(session->GetChiakiLog(), "Session has no ffmpeg decoder"); return; } if(QOpenGLContext::currentContext() != context) context->makeCurrent(surface); AVFrame *next_frame = chiaki_ffmpeg_decoder_pull_frame(decoder); if(!next_frame) return; bool success = widget->GetBackgroundFrame()->Update(next_frame, decoder->log); av_frame_free(&next_frame); if(success) widget->SwapFrames(); } chiaki-v2.2.0/gui/src/avopenglwidget.cpp000066400000000000000000000274321447035777400202610ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include #define MOUSE_TIMEOUT_MS 1000 //#define DEBUG_OPENGL static const char *shader_vert_glsl = R"glsl( #version 150 core in vec2 pos_attr; out vec2 uv_var; void main() { uv_var = pos_attr; gl_Position = vec4(pos_attr * vec2(2.0, -2.0) + vec2(-1.0, 1.0), 0.0, 1.0); } )glsl"; static const char *yuv420p_shader_frag_glsl = R"glsl( #version 150 core uniform sampler2D plane1; // Y uniform sampler2D plane2; // U uniform sampler2D plane3; // V in vec2 uv_var; out vec4 out_color; void main() { vec3 yuv = vec3( (texture(plane1, uv_var).r - (16.0 / 255.0)) / ((235.0 - 16.0) / 255.0), (texture(plane2, uv_var).r - (16.0 / 255.0)) / ((240.0 - 16.0) / 255.0) - 0.5, (texture(plane3, uv_var).r - (16.0 / 255.0)) / ((240.0 - 16.0) / 255.0) - 0.5); vec3 rgb = mat3( 1.0, 1.0, 1.0, 0.0, -0.21482, 2.12798, 1.28033, -0.38059, 0.0) * yuv; out_color = vec4(rgb, 1.0); } )glsl"; static const char *nv12_shader_frag_glsl = R"glsl( #version 150 core uniform sampler2D plane1; // Y uniform sampler2D plane2; // interlaced UV in vec2 uv_var; out vec4 out_color; void main() { vec3 yuv = vec3( (texture(plane1, uv_var).r - (16.0 / 255.0)) / ((235.0 - 16.0) / 255.0), (texture(plane2, uv_var).r - (16.0 / 255.0)) / ((240.0 - 16.0) / 255.0) - 0.5, (texture(plane2, uv_var).g - (16.0 / 255.0)) / ((240.0 - 16.0) / 255.0) - 0.5 ); vec3 rgb = mat3( 1.0, 1.0, 1.0, 0.0, -0.21482, 2.12798, 1.28033, -0.38059, 0.0) * yuv; out_color = vec4(rgb, 1.0); } )glsl"; ConversionConfig conversion_configs[] = { { AV_PIX_FMT_YUV420P, shader_vert_glsl, yuv420p_shader_frag_glsl, 3, { { 1, 1, 1, GL_R8, GL_RED }, { 2, 2, 1, GL_R8, GL_RED }, { 2, 2, 1, GL_R8, GL_RED } } }, { AV_PIX_FMT_NV12, shader_vert_glsl, nv12_shader_frag_glsl, 2, { { 1, 1, 1, GL_R8, GL_RED }, { 2, 2, 2, GL_RG8, GL_RG } } } }; static const float vert_pos[] = { 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f }; QSurfaceFormat AVOpenGLWidget::CreateSurfaceFormat() { QSurfaceFormat format; format.setDepthBufferSize(0); format.setStencilBufferSize(0); format.setVersion(3, 2); format.setProfile(QSurfaceFormat::CoreProfile); #ifdef DEBUG_OPENGL format.setOption(QSurfaceFormat::DebugContext, true); #endif return format; } AVOpenGLWidget::AVOpenGLWidget(StreamSession *session, QWidget *parent, TransformMode transform_mode) : QOpenGLWidget(parent), session(session), transform_mode(transform_mode) { enum AVPixelFormat pixel_format = chiaki_ffmpeg_decoder_get_pixel_format(session->GetFfmpegDecoder()); conversion_config = nullptr; for(auto &cc : conversion_configs) { if(pixel_format == cc.pixel_format) { conversion_config = &cc; break; } } if(!conversion_config) throw Exception("No matching video conversion config can be found"); setFormat(CreateSurfaceFormat()); frame_uploader_context = nullptr; frame_uploader = nullptr; frame_uploader_thread = nullptr; frame_fg = 0; setMouseTracking(true); mouse_timer = new QTimer(this); connect(mouse_timer, &QTimer::timeout, this, &AVOpenGLWidget::HideMouse); ResetMouseTimeout(); } AVOpenGLWidget::~AVOpenGLWidget() { if(frame_uploader_thread) { frame_uploader_thread->quit(); frame_uploader_thread->wait(); delete frame_uploader_thread; } delete frame_uploader; delete frame_uploader_context; delete frame_uploader_surface; } void AVOpenGLWidget::mouseMoveEvent(QMouseEvent *event) { QOpenGLWidget::mouseMoveEvent(event); ResetMouseTimeout(); } void AVOpenGLWidget::ResetMouseTimeout() { unsetCursor(); mouse_timer->start(MOUSE_TIMEOUT_MS); } void AVOpenGLWidget::HideMouse() { setCursor(Qt::BlankCursor); } void AVOpenGLWidget::SwapFrames() { QMutexLocker lock(&frames_mutex); frame_fg = 1 - frame_fg; QMetaObject::invokeMethod(this, "update"); } bool AVOpenGLFrame::Update(AVFrame *frame, ChiakiLog *log) { auto f = QOpenGLContext::currentContext()->extraFunctions(); if(frame->format != conversion_config->pixel_format) { CHIAKI_LOGE(log, "AVOpenGLFrame got AVFrame with invalid format"); return false; } width = frame->width; height = frame->height; for(int i=0; iplanes; i++) { int width = frame->width / conversion_config->plane_configs[i].width_divider; int height = frame->height / conversion_config->plane_configs[i].height_divider; int size = width * height * conversion_config->plane_configs[i].data_per_pixel; f->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo[i]); f->glBufferData(GL_PIXEL_UNPACK_BUFFER, size, nullptr, GL_STREAM_DRAW); auto buf = reinterpret_cast(f->glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, size, GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT)); if(!buf) { CHIAKI_LOGE(log, "AVOpenGLFrame failed to map PBO"); continue; } if(frame->linesize[i] == width) memcpy(buf, frame->data[i], size); else { for(int l=0; lplane_configs[i].data_per_pixel, frame->data[i] + frame->linesize[i] * l, width * conversion_config->plane_configs[i].data_per_pixel); } f->glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER); f->glBindTexture(GL_TEXTURE_2D, tex[i]); f->glTexImage2D(GL_TEXTURE_2D, 0, conversion_config->plane_configs[i].internal_format, width, height, 0, conversion_config->plane_configs[i].format, GL_UNSIGNED_BYTE, nullptr); } f->glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); f->glFinish(); return true; } void AVOpenGLWidget::initializeGL() { auto f = QOpenGLContext::currentContext()->extraFunctions(); const char *gl_version = (const char *)f->glGetString(GL_VERSION); CHIAKI_LOGI(session->GetChiakiLog(), "OpenGL initialized with version \"%s\"", gl_version ? gl_version : "(null)"); #ifdef DEBUG_OPENGL auto logger = new QOpenGLDebugLogger(this); logger->initialize(); connect(logger, &QOpenGLDebugLogger::messageLogged, this, [](const QOpenGLDebugMessage &msg) { qDebug() << msg; }); logger->startLogging(); #endif auto CheckShaderCompiled = [&](GLuint shader) { GLint compiled = 0; f->glGetShaderiv(shader, GL_COMPILE_STATUS, &compiled); if(compiled == GL_TRUE) return; GLint info_log_size = 0; f->glGetShaderiv(shader, GL_INFO_LOG_LENGTH, &info_log_size); QVector info_log(info_log_size); f->glGetShaderInfoLog(shader, info_log_size, &info_log_size, info_log.data()); f->glDeleteShader(shader); CHIAKI_LOGE(session->GetChiakiLog(), "Failed to Compile Shader:\n%s", info_log.data()); }; GLuint shader_vert = f->glCreateShader(GL_VERTEX_SHADER); f->glShaderSource(shader_vert, 1, &conversion_config->shader_vert_glsl, nullptr); f->glCompileShader(shader_vert); CheckShaderCompiled(shader_vert); GLuint shader_frag = f->glCreateShader(GL_FRAGMENT_SHADER); f->glShaderSource(shader_frag, 1, &conversion_config->shader_frag_glsl, nullptr); f->glCompileShader(shader_frag); CheckShaderCompiled(shader_frag); program = f->glCreateProgram(); f->glAttachShader(program, shader_vert); f->glAttachShader(program, shader_frag); f->glBindAttribLocation(program, 0, "pos_attr"); f->glLinkProgram(program); GLint linked = 0; f->glGetProgramiv(program, GL_LINK_STATUS, &linked); if(linked != GL_TRUE) { GLint info_log_size = 0; f->glGetProgramiv(program, GL_INFO_LOG_LENGTH, &info_log_size); QVector info_log(info_log_size); f->glGetProgramInfoLog(program, info_log_size, &info_log_size, info_log.data()); f->glDeleteProgram(program); CHIAKI_LOGE(session->GetChiakiLog(), "Failed to Link Shader Program:\n%s", info_log.data()); return; } for(int i=0; i<2; i++) { frames[i].conversion_config = conversion_config; f->glGenTextures(conversion_config->planes, frames[i].tex); f->glGenBuffers(conversion_config->planes, frames[i].pbo); uint8_t uv_default[] = {0x7f, 0x7f}; for(int j=0; jplanes; j++) { f->glBindTexture(GL_TEXTURE_2D, frames[i].tex[j]); f->glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); f->glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); f->glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE); f->glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE); f->glTexImage2D(GL_TEXTURE_2D, 0, conversion_config->plane_configs[j].internal_format, 1, 1, 0, conversion_config->plane_configs[j].format, GL_UNSIGNED_BYTE, j > 0 ? uv_default : nullptr); } frames[i].width = 0; frames[i].height = 0; } f->glUseProgram(program); // bind only as many planes as we need const char *plane_names[] = {"plane1", "plane2", "plane3"}; for(int i=0; iglUniform1i(f->glGetUniformLocation(program, plane_names[i]), i); } f->glGenVertexArrays(1, &vao); f->glBindVertexArray(vao); f->glGenBuffers(1, &vbo); f->glBindBuffer(GL_ARRAY_BUFFER, vbo); f->glBufferData(GL_ARRAY_BUFFER, sizeof(vert_pos), vert_pos, GL_STATIC_DRAW); f->glBindBuffer(GL_ARRAY_BUFFER, vbo); f->glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, nullptr); f->glEnableVertexAttribArray(0); f->glCullFace(GL_BACK); f->glEnable(GL_CULL_FACE); f->glClearColor(0.0, 0.0, 0.0, 1.0); frame_uploader_context = new QOpenGLContext(nullptr); frame_uploader_context->setFormat(context()->format()); frame_uploader_context->setShareContext(context()); if(!frame_uploader_context->create()) { CHIAKI_LOGE(session->GetChiakiLog(), "Failed to create upload OpenGL context"); return; } frame_uploader_surface = new QOffscreenSurface(); frame_uploader_surface->setFormat(context()->format()); frame_uploader_surface->create(); frame_uploader = new AVOpenGLFrameUploader(session, this, frame_uploader_context, frame_uploader_surface); frame_fg = 0; frame_uploader_thread = new QThread(this); frame_uploader_thread->setObjectName("Frame Uploader"); frame_uploader_context->moveToThread(frame_uploader_thread); frame_uploader->moveToThread(frame_uploader_thread); frame_uploader_thread->start(); } void AVOpenGLWidget::paintGL() { auto f = QOpenGLContext::currentContext()->extraFunctions(); f->glClear(GL_COLOR_BUFFER_BIT); int widget_width = (int)(width() * devicePixelRatioF()); int widget_height = (int)(height() * devicePixelRatioF()); QMutexLocker lock(&frames_mutex); AVOpenGLFrame *frame = &frames[frame_fg]; GLsizei vp_width, vp_height; if(!frame->width || !frame->height) { vp_width = widget_width; vp_height = widget_height; } else if(transform_mode == TransformMode::Fit) { float aspect = (float)frame->width / (float)frame->height; if(widget_height && aspect < (float)widget_width / (float)widget_height) { vp_height = widget_height; vp_width = (GLsizei)(vp_height * aspect); } else { vp_width = widget_width; vp_height = (GLsizei)(vp_width / aspect); } } else if(transform_mode == TransformMode::Zoom) { float aspect = (float)frame->width / (float)frame->height; if(widget_height && aspect < (float)widget_width / (float)widget_height) { vp_width = widget_width; vp_height = (GLsizei)(vp_width / aspect); } else { vp_height = widget_height; vp_width = (GLsizei)(vp_height * aspect); } } else // transform_mode == TransformMode::Stretch { float aspect = (float)frame->width / (float)frame->height; if(widget_height && aspect < (float)widget_width / (float)widget_height) { vp_height = widget_height; vp_width = widget_width; } else { vp_width = widget_width; vp_height = widget_height; } } f->glViewport((widget_width - vp_width) / 2, (widget_height - vp_height) / 2, vp_width, vp_height); for(int i=0; i<3; i++) { f->glActiveTexture(GL_TEXTURE0 + i); f->glBindTexture(GL_TEXTURE_2D, frame->tex[i]); } f->glDrawArrays(GL_TRIANGLE_STRIP, 0, 4); f->glFinish(); } chiaki-v2.2.0/gui/src/controllermanager.cpp000066400000000000000000000342431447035777400207560ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER #include #endif static QSet chiaki_motion_controller_guids({ // Sony on Linux "03000000341a00003608000011010000", "030000004c0500006802000010010000", "030000004c0500006802000010810000", "030000004c0500006802000011010000", "030000004c0500006802000011810000", "030000006f0e00001402000011010000", "030000008f0e00000300000010010000", "050000004c0500006802000000010000", "050000004c0500006802000000800000", "050000004c0500006802000000810000", "05000000504c415953544154494f4e00", "060000004c0500006802000000010000", "030000004c050000a00b000011010000", "030000004c050000a00b000011810000", "030000004c050000c405000011010000", "030000004c050000c405000011810000", "030000004c050000cc09000000010000", "030000004c050000cc09000011010000", "030000004c050000cc09000011810000", "03000000c01100000140000011010000", "050000004c050000c405000000010000", "050000004c050000c405000000810000", "050000004c050000c405000001800000", "050000004c050000cc09000000010000", "050000004c050000cc09000000810000", "050000004c050000cc09000001800000", // Sony on iOS "050000004c050000cc090000df070000", // Sony on Android "050000004c05000068020000dfff3f00", "030000004c050000cc09000000006800", "050000004c050000c4050000fffe3f00", "050000004c050000cc090000fffe3f00", "050000004c050000cc090000ffff3f00", "35643031303033326130316330353564", // Sony on Mac OSx "030000004c050000cc09000000000000", "030000004c0500006802000000000000", "030000004c0500006802000000010000", "030000004c050000a00b000000010000", "030000004c050000c405000000000000", "030000004c050000c405000000010000", "030000004c050000cc09000000010000", "03000000c01100000140000000010000", // Sony on Windows "030000004c050000a00b000000000000", "030000004c050000c405000000000000", "030000004c050000cc09000000000000", "03000000250900000500000000000000", "030000004c0500006802000000000000", "03000000632500007505000000000000", "03000000888800000803000000000000", "030000008f0e00001431000000000000", }); static QSet> chiaki_dualsense_controller_ids({ // in format (vendor id, product id) QPair(0x054c, 0x0ce6), // DualSense controller QPair(0x054c, 0x0df2), // DualSense Edge controller }); static ControllerManager *instance = nullptr; #define UPDATE_INTERVAL_MS 4 ControllerManager *ControllerManager::GetInstance() { if(!instance) instance = new ControllerManager(qApp); return instance; } ControllerManager::ControllerManager(QObject *parent) : QObject(parent) { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER SDL_SetMainReady(); #ifdef SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS4_RUMBLE, "1"); #endif #ifdef SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE SDL_SetHint(SDL_HINT_JOYSTICK_HIDAPI_PS5_RUMBLE, "1"); #endif #ifdef SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS, "1"); #endif if(SDL_Init(SDL_INIT_GAMECONTROLLER) < 0) { const char *err = SDL_GetError(); QMessageBox::critical(nullptr, "SDL Init", tr("Failed to initialized SDL Gamecontroller: %1").arg(err ? err : "")); } auto timer = new QTimer(this); connect(timer, &QTimer::timeout, this, &ControllerManager::HandleEvents); timer->start(UPDATE_INTERVAL_MS); #endif UpdateAvailableControllers(); } ControllerManager::~ControllerManager() { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER SDL_Quit(); #endif } void ControllerManager::UpdateAvailableControllers() { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER QSet current_controllers; for(int i=0; iUpdateState(event); } #endif QSet ControllerManager::GetAvailableControllers() { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER return available_controllers; #else return {}; #endif } Controller *ControllerManager::OpenController(int device_id) { if(open_controllers.contains(device_id)) return nullptr; auto controller = new Controller(device_id, this); open_controllers[device_id] = controller; return controller; } void ControllerManager::ControllerClosed(Controller *controller) { open_controllers.remove(controller->GetDeviceID()); } Controller::Controller(int device_id, ControllerManager *manager) : QObject(manager), is_dualsense(false) { this->id = device_id; this->manager = manager; chiaki_orientation_tracker_init(&this->orientation_tracker); chiaki_controller_state_set_idle(&this->state); #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER controller = nullptr; for(int i=0; i(SDL_GameControllerGetVendor(controller), SDL_GameControllerGetProduct(controller)); is_dualsense = chiaki_dualsense_controller_ids.contains(controller_id); break; } } #endif } Controller::~Controller() { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER if(controller) { // Clear trigger effects, SDL doesn't do it automatically const uint8_t clear_effect[10] = { 0 }; this->SetTriggerEffects(0x05, clear_effect, 0x05, clear_effect); SDL_GameControllerClose(controller); } #endif manager->ControllerClosed(this); } #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER void Controller::UpdateState(SDL_Event event) { switch(event.type) { case SDL_CONTROLLERBUTTONDOWN: case SDL_CONTROLLERBUTTONUP: if(!HandleButtonEvent(event.cbutton)) return; break; case SDL_CONTROLLERAXISMOTION: if(!HandleAxisEvent(event.caxis)) return; break; #if SDL_VERSION_ATLEAST(2, 0, 14) case SDL_CONTROLLERSENSORUPDATE: if(!HandleSensorEvent(event.csensor)) return; break; case SDL_CONTROLLERTOUCHPADDOWN: case SDL_CONTROLLERTOUCHPADMOTION: case SDL_CONTROLLERTOUCHPADUP: if(!HandleTouchpadEvent(event.ctouchpad)) return; break; #endif default: return; } emit StateChanged(); } inline bool Controller::HandleButtonEvent(SDL_ControllerButtonEvent event) { ChiakiControllerButton ps_btn; switch(event.button) { case SDL_CONTROLLER_BUTTON_A: ps_btn = CHIAKI_CONTROLLER_BUTTON_CROSS; break; case SDL_CONTROLLER_BUTTON_B: ps_btn = CHIAKI_CONTROLLER_BUTTON_MOON; break; case SDL_CONTROLLER_BUTTON_X: ps_btn = CHIAKI_CONTROLLER_BUTTON_BOX; break; case SDL_CONTROLLER_BUTTON_Y: ps_btn = CHIAKI_CONTROLLER_BUTTON_PYRAMID; break; case SDL_CONTROLLER_BUTTON_DPAD_LEFT: ps_btn = CHIAKI_CONTROLLER_BUTTON_DPAD_LEFT; break; case SDL_CONTROLLER_BUTTON_DPAD_RIGHT: ps_btn = CHIAKI_CONTROLLER_BUTTON_DPAD_RIGHT; break; case SDL_CONTROLLER_BUTTON_DPAD_UP: ps_btn = CHIAKI_CONTROLLER_BUTTON_DPAD_UP; break; case SDL_CONTROLLER_BUTTON_DPAD_DOWN: ps_btn = CHIAKI_CONTROLLER_BUTTON_DPAD_DOWN; break; case SDL_CONTROLLER_BUTTON_LEFTSHOULDER: ps_btn = CHIAKI_CONTROLLER_BUTTON_L1; break; case SDL_CONTROLLER_BUTTON_RIGHTSHOULDER: ps_btn = CHIAKI_CONTROLLER_BUTTON_R1; break; case SDL_CONTROLLER_BUTTON_LEFTSTICK: ps_btn = CHIAKI_CONTROLLER_BUTTON_L3; break; case SDL_CONTROLLER_BUTTON_RIGHTSTICK: ps_btn = CHIAKI_CONTROLLER_BUTTON_R3; break; case SDL_CONTROLLER_BUTTON_START: ps_btn = CHIAKI_CONTROLLER_BUTTON_OPTIONS; break; case SDL_CONTROLLER_BUTTON_BACK: ps_btn = CHIAKI_CONTROLLER_BUTTON_SHARE; break; case SDL_CONTROLLER_BUTTON_GUIDE: ps_btn = CHIAKI_CONTROLLER_BUTTON_PS; break; #if SDL_VERSION_ATLEAST(2, 0, 14) case SDL_CONTROLLER_BUTTON_TOUCHPAD: ps_btn = CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; break; #endif default: return false; } if(event.type == SDL_CONTROLLERBUTTONDOWN) state.buttons |= ps_btn; else state.buttons &= ~ps_btn; return true; } inline bool Controller::HandleAxisEvent(SDL_ControllerAxisEvent event) { switch(event.axis) { case SDL_CONTROLLER_AXIS_TRIGGERLEFT: state.l2_state = (uint8_t)(event.value >> 7); break; case SDL_CONTROLLER_AXIS_TRIGGERRIGHT: state.r2_state = (uint8_t)(event.value >> 7); break; case SDL_CONTROLLER_AXIS_LEFTX: state.left_x = event.value; break; case SDL_CONTROLLER_AXIS_LEFTY: state.left_y = event.value; break; case SDL_CONTROLLER_AXIS_RIGHTX: state.right_x = event.value; break; case SDL_CONTROLLER_AXIS_RIGHTY: state.right_y = event.value; break; default: return false; } return true; } #if SDL_VERSION_ATLEAST(2, 0, 14) inline bool Controller::HandleSensorEvent(SDL_ControllerSensorEvent event) { switch(event.sensor) { case SDL_SENSOR_ACCEL: state.accel_x = event.data[0] / SDL_STANDARD_GRAVITY; state.accel_y = event.data[1] / SDL_STANDARD_GRAVITY; state.accel_z = event.data[2] / SDL_STANDARD_GRAVITY; break; case SDL_SENSOR_GYRO: state.gyro_x = event.data[0]; state.gyro_y = event.data[1]; state.gyro_z = event.data[2]; break; default: return false; } chiaki_orientation_tracker_update( &orientation_tracker, state.gyro_x, state.gyro_y, state.gyro_z, state.accel_x, state.accel_y, state.accel_z, event.timestamp * 1000); chiaki_orientation_tracker_apply_to_controller_state(&orientation_tracker, &state); return true; } inline bool Controller::HandleTouchpadEvent(SDL_ControllerTouchpadEvent event) { auto key = qMakePair(event.touchpad, event.finger); bool exists = touch_ids.contains(key); uint8_t chiaki_id; switch(event.type) { case SDL_CONTROLLERTOUCHPADDOWN: if(touch_ids.size() >= CHIAKI_CONTROLLER_TOUCHES_MAX) return false; chiaki_id = chiaki_controller_state_start_touch(&state, event.x * PS_TOUCHPAD_MAX_X, event.y * PS_TOUCHPAD_MAX_Y); touch_ids.insert(key, chiaki_id); break; case SDL_CONTROLLERTOUCHPADMOTION: if(!exists) return false; chiaki_controller_state_set_touch_pos(&state, touch_ids[key], event.x * PS_TOUCHPAD_MAX_X, event.y * PS_TOUCHPAD_MAX_Y); break; case SDL_CONTROLLERTOUCHPADUP: if(!exists) return false; chiaki_controller_state_stop_touch(&state, touch_ids[key]); touch_ids.remove(key); break; default: return false; } return true; } #endif #endif bool Controller::IsConnected() { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER return controller && SDL_GameControllerGetAttached(controller); #else return false; #endif } int Controller::GetDeviceID() { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER return id; #else return -1; #endif } QString Controller::GetName() { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER if(!controller) return QString(); SDL_Joystick *js = SDL_GameControllerGetJoystick(controller); SDL_JoystickGUID guid = SDL_JoystickGetGUID(js); char guid_str[256]; SDL_JoystickGetGUIDString(guid, guid_str, sizeof(guid_str)); return QString("%1 (%2)").arg(SDL_JoystickName(js), guid_str); #else return QString(); #endif } ChiakiControllerState Controller::GetState() { return state; } void Controller::SetRumble(uint8_t left, uint8_t right) { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER if(!controller) return; SDL_GameControllerRumble(controller, (uint16_t)left << 8, (uint16_t)right << 8, 5000); #endif } void Controller::SetTriggerEffects(uint8_t type_left, const uint8_t *data_left, uint8_t type_right, const uint8_t *data_right) { #if defined(CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER) && SDL_VERSION_ATLEAST(2, 0, 16) if(!is_dualsense || !controller) return; DS5EffectsState_t state; SDL_zero(state); state.ucEnableBits1 |= (0x04 /* left trigger */ | 0x08 /* right trigger */); state.rgucLeftTriggerEffect[0] = type_left; SDL_memcpy(state.rgucLeftTriggerEffect + 1, data_left, 10); state.rgucRightTriggerEffect[0] = type_right; SDL_memcpy(state.rgucRightTriggerEffect + 1, data_right, 10); SDL_GameControllerSendEffect(controller, &state, sizeof(state)); #endif } bool Controller::IsDualSense() { #ifdef CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER if(!controller) return false; return is_dualsense; #endif } chiaki-v2.2.0/gui/src/discoverymanager.cpp000066400000000000000000000071401447035777400205760ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #ifdef _WIN32 #include #else #include #include #include #include #endif #define PING_MS 500 #define HOSTS_MAX 16 #define DROP_PINGS 3 HostMAC DiscoveryHost::GetHostMAC() const { QByteArray data = QByteArray::fromHex(host_id.toUtf8()); if(data.size() != 6) return HostMAC(); return HostMAC((uint8_t *)data.constData()); } static void DiscoveryServiceHostsCallback(ChiakiDiscoveryHost *hosts, size_t hosts_count, void *user); DiscoveryManager::DiscoveryManager(QObject *parent) : QObject(parent) { chiaki_log_init(&log, CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE, chiaki_log_cb_print, nullptr); service_active = false; } DiscoveryManager::~DiscoveryManager() { if(service_active) chiaki_discovery_service_fini(&service); } void DiscoveryManager::SetActive(bool active) { if(service_active == active) return; service_active = active; if(active) { ChiakiDiscoveryServiceOptions options; options.ping_ms = PING_MS; options.hosts_max = HOSTS_MAX; options.host_drop_pings = DROP_PINGS; options.cb = DiscoveryServiceHostsCallback; options.cb_user = this; sockaddr_in addr = {}; addr.sin_family = AF_INET; addr.sin_addr.s_addr = 0xffffffff; // 255.255.255.255 options.send_addr = reinterpret_cast(&addr); options.send_addr_size = sizeof(addr); ChiakiErrorCode err = chiaki_discovery_service_init(&service, &options, &log); if(err != CHIAKI_ERR_SUCCESS) { service_active = false; CHIAKI_LOGE(&log, "DiscoveryManager failed to init Discovery Service"); return; } } else { chiaki_discovery_service_fini(&service); hosts = {}; emit HostsUpdated(); } } void DiscoveryManager::SendWakeup(const QString &host, const QByteArray ®ist_key, bool ps5) { QByteArray key = regist_key; for(size_t i=0; i 8 || !ok) { CHIAKI_LOGE(&log, "DiscoveryManager got invalid regist key for wakeup"); throw Exception("Invalid regist key"); } ChiakiErrorCode err = chiaki_discovery_wakeup(&log, service_active ? &service.discovery : nullptr, host.toUtf8().constData(), credential, ps5); if(err != CHIAKI_ERR_SUCCESS) throw Exception(QString("Failed to send Packet: %1").arg(chiaki_error_string(err))); } void DiscoveryManager::DiscoveryServiceHosts(QList hosts) { this->hosts = std::move(hosts); emit HostsUpdated(); } class DiscoveryManagerPrivate { public: static void DiscoveryServiceHosts(DiscoveryManager *discovery_manager, const QList &hosts) { QMetaObject::invokeMethod(discovery_manager, "DiscoveryServiceHosts", Qt::ConnectionType::QueuedConnection, Q_ARG(QList, hosts)); } }; static void DiscoveryServiceHostsCallback(ChiakiDiscoveryHost *hosts, size_t hosts_count, void *user) { QList hosts_list; hosts_list.reserve(hosts_count); for(size_t i=0; istate; o.host_request_port = o.host_request_port; #define CONVERT_STRING(name) if(h->name) { o.name = QString::fromLocal8Bit(h->name); } CHIAKI_DISCOVERY_HOST_STRING_FOREACH(CONVERT_STRING) #undef CONVERT_STRING hosts_list.append(o); } DiscoveryManagerPrivate::DiscoveryServiceHosts(reinterpret_cast(user), hosts_list); } chiaki-v2.2.0/gui/src/dynamicgridwidget.cpp000066400000000000000000000035131447035777400207320ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include DynamicGridWidget::DynamicGridWidget(unsigned int item_width, QWidget *parent) { layout = new QGridLayout(this); layout->setHorizontalSpacing(10); layout->setVerticalSpacing(10); setLayout(layout); this->item_width = item_width; columns = CalculateColumns(); } void DynamicGridWidget::AddWidget(QWidget *widget) { if(widgets.contains(widget)) return; widget->setParent(this); widgets.append(widget); UpdateLayout(); } void DynamicGridWidget::AddWidgets(const QList &widgets) { for(auto widget : widgets) { if(this->widgets.contains(widget)) continue; widget->setParent(this); this->widgets.append(widget); } UpdateLayout(); } void DynamicGridWidget::RemoveWidget(QWidget *widget) { layout->removeWidget(widget); widget->setParent(nullptr); widgets.removeAll(widget); UpdateLayout(); } void DynamicGridWidget::ClearWidgets() { for(auto widget : widgets) { layout->removeWidget(widget); widget->setParent(nullptr); } widgets.clear(); UpdateLayout(); } unsigned int DynamicGridWidget::CalculateColumns() { return (width() + layout->horizontalSpacing()) / (item_width + layout->horizontalSpacing()); } void DynamicGridWidget::UpdateLayout() { while(layout->count() > 0) { auto item = layout->itemAt(0); layout->removeItem(item); delete item; } columns = CalculateColumns(); if(columns == 0) return; Qt::Alignment alignment = widgets.count() == 1 ? Qt::AlignLeft : Qt::AlignCenter; for(unsigned int i=0; iaddWidget(widgets[i], i / columns, i % columns, alignment); setMinimumWidth(item_width); } void DynamicGridWidget::UpdateLayoutIfNecessary() { unsigned int new_columns = CalculateColumns(); if(new_columns != columns) UpdateLayout(); } chiaki-v2.2.0/gui/src/host.cpp000066400000000000000000000073351447035777400162170ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include RegisteredHost::RegisteredHost() { memset(rp_regist_key, 0, sizeof(rp_regist_key)); memset(rp_key, 0, sizeof(rp_key)); } RegisteredHost::RegisteredHost(const RegisteredHost &o) : target(o.target), ap_ssid(o.ap_ssid), ap_bssid(o.ap_bssid), ap_key(o.ap_key), ap_name(o.ap_name), server_mac(o.server_mac), server_nickname(o.server_nickname), rp_key_type(o.rp_key_type) { memcpy(rp_regist_key, o.rp_regist_key, sizeof(rp_regist_key)); memcpy(rp_key, o.rp_key, sizeof(rp_key)); } RegisteredHost::RegisteredHost(const ChiakiRegisteredHost &chiaki_host) : server_mac(chiaki_host.server_mac) { target = chiaki_host.target; ap_ssid = chiaki_host.ap_ssid; ap_bssid = chiaki_host.ap_bssid; ap_key = chiaki_host.ap_key; ap_name = chiaki_host.ap_name; server_nickname = chiaki_host.server_nickname; memcpy(rp_regist_key, chiaki_host.rp_regist_key, sizeof(rp_regist_key)); rp_key_type = chiaki_host.rp_key_type; memcpy(rp_key, chiaki_host.rp_key, sizeof(rp_key)); } void RegisteredHost::SaveToSettings(QSettings *settings) const { settings->setValue("target", (int)target); settings->setValue("ap_ssid", ap_ssid); settings->setValue("ap_bssid", ap_bssid); settings->setValue("ap_key", ap_key); settings->setValue("ap_name", ap_name); settings->setValue("server_nickname", server_nickname); settings->setValue("server_mac", QByteArray((const char *)server_mac.GetMAC(), 6)); settings->setValue("rp_regist_key", QByteArray(rp_regist_key, sizeof(rp_regist_key))); settings->setValue("rp_key_type", rp_key_type); settings->setValue("rp_key", QByteArray((const char *)rp_key, sizeof(rp_key))); } RegisteredHost RegisteredHost::LoadFromSettings(QSettings *settings) { RegisteredHost r; r.target = (ChiakiTarget)settings->value("target").toInt(); r.ap_ssid = settings->value("ap_ssid").toString(); r.ap_bssid = settings->value("ap_bssid").toString(); r.ap_key = settings->value("ap_key").toString(); r.ap_name = settings->value("ap_name").toString(); r.server_nickname = settings->value("server_nickname").toString(); auto server_mac = settings->value("server_mac").toByteArray(); if(server_mac.size() == 6) r.server_mac = HostMAC((const uint8_t *)server_mac.constData()); auto rp_regist_key = settings->value("rp_regist_key").toByteArray(); if(rp_regist_key.size() == sizeof(r.rp_regist_key)) memcpy(r.rp_regist_key, rp_regist_key.constData(), sizeof(r.rp_regist_key)); r.rp_key_type = settings->value("rp_key_type").toUInt(); auto rp_key = settings->value("rp_key").toByteArray(); if(rp_key.size() == sizeof(r.rp_key)) memcpy(r.rp_key, rp_key.constData(), sizeof(r.rp_key)); return r; } ManualHost::ManualHost() { id = -1; registered = false; } ManualHost::ManualHost(int id, const QString &host, bool registered, const HostMAC ®istered_mac) : id(id), host(host), registered(registered), registered_mac(registered_mac) { } ManualHost::ManualHost(int id, const ManualHost &o) : id(id), host(o.host), registered(o.registered), registered_mac(o.registered_mac) { } void ManualHost::SaveToSettings(QSettings *settings) const { settings->setValue("id", id); settings->setValue("host", host); settings->setValue("registered", registered); settings->setValue("registered_mac", QByteArray((const char *)registered_mac.GetMAC(), 6)); } ManualHost ManualHost::LoadFromSettings(QSettings *settings) { ManualHost r; r.id = settings->value("id", -1).toInt(); r.host = settings->value("host").toString(); r.registered = settings->value("registered").toBool(); auto registered_mac = settings->value("registered_mac").toByteArray(); if(registered_mac.size() == 6) r.registered_mac = HostMAC((const uint8_t *)registered_mac.constData()); return r; } chiaki-v2.2.0/gui/src/loginpindialog.cpp000066400000000000000000000025631447035777400202370ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #define PIN_LENGTH 4 static const QRegularExpression pin_re(QString("[0-9]").repeated(PIN_LENGTH)); LoginPINDialog::LoginPINDialog(bool incorrect, QWidget *parent) : QDialog(parent) { setWindowTitle(tr("Console Login PIN")); auto layout = new QVBoxLayout(this); setLayout(layout); if(incorrect) layout->addWidget(new QLabel(tr("Entered PIN was incorrect!"), this)); pin_edit = new QLineEdit(this); pin_edit->setPlaceholderText(tr("Login PIN")); pin_edit->setValidator(new QRegularExpressionValidator(pin_re, pin_edit)); layout->addWidget(pin_edit); connect(pin_edit, &QLineEdit::textChanged, this, [this](const QString &text) { this->pin = text; UpdateButtons(); }); button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); layout->addWidget(button_box); connect(button_box, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); UpdateButtons(); } void LoginPINDialog::UpdateButtons() { button_box->button(QDialogButtonBox::Ok)->setEnabled(pin_edit->text().length() == PIN_LENGTH); }chiaki-v2.2.0/gui/src/main.cpp000066400000000000000000000156771447035777400161760ustar00rootroot00000000000000 // ugly workaround because Windows does weird things and ENOTIME int real_main(int argc, char *argv[]); int main(int argc, char *argv[]) { return real_main(argc, argv); } #include #include #include #include #include #include #include #include #ifdef CHIAKI_ENABLE_CLI #include #endif #include #include #include #include #include #include #include #include #include #include #include Q_DECLARE_METATYPE(ChiakiLogLevel) #ifdef CHIAKI_ENABLE_CLI struct CLICommand { int (*cmd)(ChiakiLog *log, int argc, char *argv[]); }; static const QMap cli_commands = { { "discover", { chiaki_cli_cmd_discover } }, { "wakeup", { chiaki_cli_cmd_wakeup } } }; #endif int RunStream(QApplication &app, const StreamSessionConnectInfo &connect_info); int RunMain(QApplication &app, Settings *settings); int real_main(int argc, char *argv[]) { qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); qRegisterMetaType(); QApplication::setOrganizationName("Chiaki"); QApplication::setApplicationName("Chiaki"); ChiakiErrorCode err = chiaki_lib_init(); if(err != CHIAKI_ERR_SUCCESS) { fprintf(stderr, "Chiaki lib init failed: %s\n", chiaki_error_string(err)); return 1; } QApplication::setAttribute(Qt::AA_ShareOpenGLContexts); QSurfaceFormat::setDefaultFormat(AVOpenGLWidget::CreateSurfaceFormat()); QApplication app(argc, argv); #ifdef Q_OS_MACOS QApplication::setWindowIcon(QIcon(":/icons/chiaki_macos.svg")); #else QApplication::setWindowIcon(QIcon(":/icons/chiaki.svg")); #endif QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); Settings settings; QCommandLineParser parser; parser.setOptionsAfterPositionalArgumentsMode(QCommandLineParser::ParseAsPositionalArguments); parser.addHelpOption(); QStringList cmds; cmds.append("stream"); cmds.append("list"); #ifdef CHIAKI_ENABLE_CLI cmds.append(cli_commands.keys()); #endif parser.addPositionalArgument("command", cmds.join(", ")); parser.addPositionalArgument("nickname", "Needed for stream command to get credentials for connecting. " "Use 'list' to get the nickname."); parser.addPositionalArgument("host", "Address to connect to (when using the stream command)"); QCommandLineOption regist_key_option("registkey", "", "registkey"); parser.addOption(regist_key_option); QCommandLineOption morning_option("morning", "", "morning"); parser.addOption(morning_option); QCommandLineOption fullscreen_option("fullscreen", "Start window in fullscreen mode [maintains aspect ratio, adds black bars to fill unsused parts of screen if applicable] (only for use with stream command)"); parser.addOption(fullscreen_option); QCommandLineOption zoom_option("zoom", "Start window in fullscreen zoomed in to fit screen [maintains aspect ratio, cutting off edges of image to fill screen] (only for use with stream command)"); parser.addOption(zoom_option); QCommandLineOption stretch_option("stretch", "Start window in fullscreen stretched to fit screen [distorts aspect ratio to fill screen] (only for use with stream command)"); parser.addOption(stretch_option); parser.process(app); QStringList args = parser.positionalArguments(); if(args.length() == 0) return RunMain(app, &settings); if(args[0] == "list") { for(const auto &host : settings.GetRegisteredHosts()) printf("Host: %s \n", host.GetServerNickname().toLocal8Bit().constData()); return 0; } if(args[0] == "stream") { if(args.length() < 2) parser.showHelp(1); //QString host = args[sizeof(args) -1]; //the ip is always the last param for stream QString host = args[args.size()-1]; QByteArray morning; QByteArray regist_key; ChiakiTarget target = CHIAKI_TARGET_PS4_10; if(parser.value(regist_key_option).isEmpty() && parser.value(morning_option).isEmpty()) { if(args.length() < 3) parser.showHelp(1); bool found = false; for(const auto &temphost : settings.GetRegisteredHosts()) { if(temphost.GetServerNickname() == args[1]) { found = true; morning = temphost.GetRPKey(); regist_key = temphost.GetRPRegistKey(); target = temphost.GetTarget(); break; } } if(!found) { printf("No configuration found for '%s'\n", args[1].toLocal8Bit().constData()); return 1; } } else { // TODO: explicit option for target regist_key = parser.value(regist_key_option).toUtf8(); if(regist_key.length() > sizeof(ChiakiConnectInfo::regist_key)) { printf("Given regist key is too long (expected size <=%llu, got %d)\n", (unsigned long long)sizeof(ChiakiConnectInfo::regist_key), regist_key.length()); return 1; } regist_key += QByteArray(sizeof(ChiakiConnectInfo::regist_key) - regist_key.length(), 0); morning = QByteArray::fromBase64(parser.value(morning_option).toUtf8()); if(morning.length() != sizeof(ChiakiConnectInfo::morning)) { printf("Given morning has invalid size (expected %llu, got %d)\n", (unsigned long long)sizeof(ChiakiConnectInfo::morning), morning.length()); printf("Given morning has invalid size (expected %llu)", (unsigned long long)sizeof(ChiakiConnectInfo::morning)); return 1; } } if ((parser.isSet(stretch_option) && (parser.isSet(zoom_option) || parser.isSet(fullscreen_option))) || (parser.isSet(zoom_option) && parser.isSet(fullscreen_option))) { printf("Must choose between fullscreen, zoom or stretch option."); return 1; } StreamSessionConnectInfo connect_info( &settings, target, host, regist_key, morning, parser.isSet(fullscreen_option), parser.isSet(zoom_option) ? TransformMode::Zoom : parser.isSet(stretch_option) ? TransformMode::Stretch : TransformMode::Fit); return RunStream(app, connect_info); } #ifdef CHIAKI_ENABLE_CLI else if(cli_commands.contains(args[0])) { ChiakiLog log; // TODO: add verbose arg chiaki_log_init(&log, CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE, chiaki_log_cb_print, nullptr); const auto &cmd = cli_commands[args[0]]; int sub_argc = args.count(); QVector sub_argv_b(sub_argc); QVector sub_argv(sub_argc); for(size_t i=0; i #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #ifdef CHIAKI_GUI_ENABLE_QT_MACEXTRAS #include #endif class IconEngine : public QIconEngine { private: QString filename; QSvgRenderer renderer; public: IconEngine(const QString &filename) : filename(filename), renderer(filename) {}; QIconEngine *clone() const override { return new IconEngine(filename); } QPixmap pixmap(const QSize &size, QIcon::Mode mode, QIcon::State state) override { auto r = QPixmap(size); r.fill(Qt::transparent); QPainter painter(&r); paint(&painter, r.rect(), mode, state); painter.end(); return r; } void paint(QPainter *painter, const QRect &rect, QIcon::Mode mode, QIcon::State state) override { painter->setCompositionMode(QPainter::CompositionMode::CompositionMode_Source); renderer.render(painter, rect); painter->setCompositionMode(QPainter::CompositionMode::CompositionMode_SourceAtop); QPalette::ColorGroup color_group = QPalette::ColorGroup::Normal; switch(mode) { case QIcon::Mode::Disabled: color_group = QPalette::ColorGroup::Disabled; break; case QIcon::Mode::Active: color_group = QPalette::ColorGroup::Active; break; case QIcon::Mode::Normal: color_group = QPalette::ColorGroup::Normal; break; case QIcon::Mode::Selected: color_group = QPalette::ColorGroup::Normal; break; } painter->fillRect(rect, qApp->palette().brush(color_group, QPalette::ColorRole::Text)); } }; MainWindow::MainWindow(Settings *settings, QWidget *parent) : QMainWindow(parent), settings(settings) { setWindowTitle(qApp->applicationName()); auto main_widget = new QWidget(this); auto layout = new QVBoxLayout(); main_widget->setLayout(layout); setCentralWidget(main_widget); layout->setMargin(0); auto LoadIcon = [this](const QString &filename) { return QIcon(new IconEngine(filename)); }; #ifdef CHIAKI_GUI_ENABLE_QT_MACEXTRAS auto tool_bar = new QMacToolBar(this); #else auto tool_bar = new QToolBar(this); tool_bar->setMovable(false); addToolBar(tool_bar); setUnifiedTitleAndToolBarOnMac(true); #endif auto AddToolBarAction = [&](QAction *action) { #ifdef CHIAKI_GUI_ENABLE_QT_MACEXTRAS auto item = tool_bar->addItem(action->icon(), action->text()); connect(item, &QMacToolBarItem::activated, action, &QAction::trigger); if(action->isCheckable()) { connect(action, &QAction::toggled, item, [action, item]() { item->setIcon(action->icon()); }); } #else tool_bar->addAction(action); #endif }; discover_action = new QAction(tr("Search for Consoles"), this); discover_action_icon = LoadIcon(":/icons/discover-24px.svg"); discover_action_off_icon = LoadIcon(":/icons/discover-off-24px.svg"); discover_action->setCheckable(true); discover_action->setChecked(settings->GetDiscoveryEnabled()); auto UpdateDiscoverActionIcon = [this]() { discover_action->setIcon(discover_action->isChecked() ? discover_action_icon : discover_action_off_icon); }; UpdateDiscoverActionIcon(); connect(discover_action, &QAction::toggled, this, UpdateDiscoverActionIcon); AddToolBarAction(discover_action); connect(discover_action, &QAction::triggered, this, &MainWindow::UpdateDiscoveryEnabled); auto tool_bar_spacer = new QWidget(); tool_bar_spacer->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Ignored); #ifdef CHIAKI_GUI_ENABLE_QT_MACEXTRAS tool_bar->addStandardItem(QMacToolBarItem::StandardItem::FlexibleSpace); #else tool_bar->addWidget(tool_bar_spacer); #endif auto add_manual_action = new QAction(tr("Add Console manually"), this); add_manual_action->setIcon(LoadIcon(":/icons/add-24px.svg")); AddToolBarAction(add_manual_action); connect(add_manual_action, &QAction::triggered, this, [this]() { ManualHostDialog dialog(this->settings, -1, this); dialog.exec(); }); auto settings_action = new QAction(tr("Settings"), this); settings_action->setIcon(LoadIcon(":/icons/settings-20px.svg")); AddToolBarAction(settings_action); connect(settings_action, &QAction::triggered, this, &MainWindow::ShowSettings); auto quit_action = new QAction(tr("Quit"), this); quit_action->setShortcut(Qt::CTRL + Qt::Key_Q); addAction(quit_action); connect(quit_action, &QAction::triggered, this, &MainWindow::Quit); auto scroll_area = new QScrollArea(this); scroll_area->setWidgetResizable(true); scroll_area->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); layout->addWidget(scroll_area); auto scroll_content_widget = new QWidget(scroll_area); auto scroll_content_layout = new QVBoxLayout(scroll_content_widget); scroll_content_widget->setLayout(scroll_content_layout); scroll_area->setWidget(scroll_content_widget); #ifdef CHIAKI_GUI_ENABLE_QT_MACEXTRAS this->window()->winId(); tool_bar->attachToWindow(this->window()->windowHandle()); #endif grid_widget = new DynamicGridWidget(200, scroll_content_widget); scroll_content_layout->addWidget(grid_widget); scroll_content_layout->addStretch(0); grid_widget->setContentsMargins(0, 0, 0, 0); resize(800, 600); connect(&discovery_manager, &DiscoveryManager::HostsUpdated, this, &MainWindow::UpdateDisplayServers); connect(settings, &Settings::RegisteredHostsUpdated, this, &MainWindow::UpdateDisplayServers); connect(settings, &Settings::ManualHostsUpdated, this, &MainWindow::UpdateDisplayServers); UpdateDisplayServers(); UpdateDiscoveryEnabled(); } MainWindow::~MainWindow() { } void MainWindow::ServerItemWidgetSelected() { auto server_item_widget = qobject_cast(sender()); if(!server_item_widget) return; for(auto widget : server_item_widgets) { if(widget != server_item_widget) widget->SetSelected(false); } server_item_widget->SetSelected(true); } DisplayServer *MainWindow::DisplayServerFromSender() { auto server_item_widget = qobject_cast(sender()); if(!server_item_widget) return nullptr; int index = server_item_widgets.indexOf(server_item_widget); if(index < 0 || index >= display_servers.count()) return nullptr; return &display_servers[index]; } void MainWindow::SendWakeup(const DisplayServer *server) { if(!server->registered) return; try { discovery_manager.SendWakeup(server->GetHostAddr(), server->registered_host.GetRPRegistKey(), chiaki_target_is_ps5(server->registered_host.GetTarget())); } catch(const Exception &e) { QMessageBox::critical(this, tr("Wakeup failed"), tr("Failed to send Wakeup packet:\n%1").arg(e.what())); return; } QMessageBox::information(this, tr("Wakeup"), tr("Wakeup packet sent.")); } void MainWindow::ServerItemWidgetTriggered() { auto s = DisplayServerFromSender(); if(!s) return; auto server = *s; if(server.registered) { if(server.discovered && server.discovery_host.state == CHIAKI_DISCOVERY_HOST_STATE_STANDBY) { int r = QMessageBox::question(this, tr("Start Stream"), tr("The Console is currently in standby mode.\nShould we send a Wakeup packet instead of trying to connect immediately?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); if(r == QMessageBox::Yes) { SendWakeup(&server); return; } else if(r == QMessageBox::Cancel) return; } QString host = server.GetHostAddr(); StreamSessionConnectInfo info( settings, server.registered_host.GetTarget(), host, server.registered_host.GetRPRegistKey(), server.registered_host.GetRPKey(), false, TransformMode::Fit); new StreamWindow(info); } else { RegistDialog regist_dialog(settings, server.GetHostAddr(), this); int r = regist_dialog.exec(); if(r == QDialog::Accepted && !server.discovered) // success { ManualHost manual_host = server.manual_host; manual_host.Register(regist_dialog.GetRegisteredHost()); settings->SetManualHost(manual_host); } } } void MainWindow::ServerItemWidgetDeleteTriggered() { auto server = DisplayServerFromSender(); if(!server) return; if(server->discovered) return; settings->RemoveManualHost(server->manual_host.GetID()); } void MainWindow::ServerItemWidgetWakeTriggered() { auto server = DisplayServerFromSender(); if(!server) return; SendWakeup(server); } void MainWindow::UpdateDiscoveryEnabled() { bool enabled = discover_action->isChecked(); settings->SetDiscoveryEnabled(enabled); discovery_manager.SetActive(enabled); } void MainWindow::ShowSettings() { SettingsDialog dialog(settings, this); dialog.exec(); } void MainWindow::Quit() { qApp->exit(); } void MainWindow::UpdateDisplayServers() { display_servers.clear(); for(const auto &host : discovery_manager.GetHosts()) { DisplayServer server; server.discovered = true; server.discovery_host = host; server.registered = settings->GetRegisteredHostRegistered(host.GetHostMAC()); if(server.registered) server.registered_host = settings->GetRegisteredHost(host.GetHostMAC()); display_servers.append(server); } for(const auto &host : settings->GetManualHosts()) { DisplayServer server; server.discovered = false; server.manual_host = host; server.registered = false; if(host.GetRegistered() && settings->GetRegisteredHostRegistered(host.GetMAC())) { server.registered = true; server.registered_host = settings->GetRegisteredHost(host.GetMAC()); } display_servers.append(server); } UpdateServerWidgets(); } void MainWindow::UpdateServerWidgets() { // remove excessive widgets while(server_item_widgets.count() > display_servers.count()) { auto widget = server_item_widgets.takeLast(); grid_widget->RemoveWidget(widget); delete widget; } // add new widgets as necessary while(server_item_widgets.count() < display_servers.count()) { auto widget = new ServerItemWidget(grid_widget); connect(widget, &ServerItemWidget::Selected, this, &MainWindow::ServerItemWidgetSelected); connect(widget, &ServerItemWidget::Triggered, this, &MainWindow::ServerItemWidgetTriggered); connect(widget, &ServerItemWidget::DeleteTriggered, this, &MainWindow::ServerItemWidgetDeleteTriggered, Qt::QueuedConnection); connect(widget, &ServerItemWidget::WakeTriggered, this, &MainWindow::ServerItemWidgetWakeTriggered); server_item_widgets.append(widget); grid_widget->AddWidget(widget); } for(size_t i=0; iUpdate(display_servers[i]); } chiaki-v2.2.0/gui/src/manualhostdialog.cpp000066400000000000000000000046041447035777400205710ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include ManualHostDialog::ManualHostDialog(Settings *settings, int id, QWidget *parent) : QDialog(parent) { this->settings = settings; host_id = id; setWindowTitle(tr("Add Manual Console")); ManualHost host; if(id >= 0 && settings->GetManualHostExists(id)) host = settings->GetManualHost(id); auto layout = new QVBoxLayout(this); setLayout(layout); auto form_layout = new QFormLayout(); layout->addLayout(form_layout); host_edit = new QLineEdit(this); host_edit->setText(host.GetHost()); form_layout->addRow(tr("Host:"), host_edit); connect(host_edit, &QLineEdit::textChanged, this, &ManualHostDialog::ValidateInput); registered_host_combo_box = new QComboBox(this); registered_host_combo_box->addItem(tr("Register on first Connection")); auto registered_hosts = settings->GetRegisteredHosts(); for(const auto ®istered_host : registered_hosts) registered_host_combo_box->addItem(QString("%1 (%2)").arg(registered_host.GetServerMAC().ToString(), registered_host.GetServerNickname()), QVariant::fromValue(registered_host.GetServerMAC())); form_layout->addRow(tr("Registered Console:"), registered_host_combo_box); button_box = new QDialogButtonBox(QDialogButtonBox::Save | QDialogButtonBox::Discard, this); layout->addWidget(button_box); connect(button_box, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(button_box, &QDialogButtonBox::clicked, this, &ManualHostDialog::ButtonClicked); ValidateInput(); } void ManualHostDialog::ValidateInput() { button_box->button(QDialogButtonBox::Save)->setEnabled(!host_edit->text().trimmed().isEmpty()); } void ManualHostDialog::ButtonClicked(QAbstractButton *button) { if(button_box->buttonRole(button) == QDialogButtonBox::DestructiveRole) reject(); } void ManualHostDialog::accept() { bool registered = false; HostMAC registered_mac; QVariant registered_host_data = registered_host_combo_box->currentData(); if(registered_host_data.isValid()) { registered = true; registered_mac = registered_host_data.value(); } ManualHost host(host_id, host_edit->text().trimmed(), registered, registered_mac); settings->SetManualHost(host); QDialog::accept(); } chiaki-v2.2.0/gui/src/registdialog.cpp000066400000000000000000000212701447035777400177110ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include #include #include #include Q_DECLARE_METATYPE(ChiakiLogLevel) #define PIN_LENGTH 8 static const QRegularExpression pin_re(QString("[0-9]").repeated(PIN_LENGTH)); RegistDialog::RegistDialog(Settings *settings, const QString &host, QWidget *parent) : QDialog(parent), settings(settings) { setWindowTitle(tr("Register Console")); auto layout = new QVBoxLayout(this); setLayout(layout); auto form_layout = new QFormLayout(); layout->addLayout(form_layout); host_edit = new QLineEdit(this); form_layout->addRow(tr("Host:"), host_edit); if(host.isEmpty()) host_edit->setText("255.255.255.255"); else host_edit->setText(host); broadcast_check_box = new QCheckBox(this); form_layout->addRow(tr("Broadcast:"), broadcast_check_box); broadcast_check_box->setChecked(host.isEmpty()); auto UpdatePSNIDEdits = [this]() { bool need_account_id = NeedAccountId(); psn_online_id_edit->setEnabled(!need_account_id); psn_account_id_edit->setEnabled(need_account_id); }; auto target_layout = new QVBoxLayout(nullptr); ps4_pre9_radio_button = new QRadioButton(tr("PS4 Firmware < 7.0"), this); target_layout->addWidget(ps4_pre9_radio_button); connect(ps4_pre9_radio_button, &QRadioButton::toggled, this, UpdatePSNIDEdits); ps4_pre10_radio_button = new QRadioButton(tr("PS4 Firmware >= 7.0, < 8.0"), this); target_layout->addWidget(ps4_pre10_radio_button); connect(ps4_pre10_radio_button, &QRadioButton::toggled, this, UpdatePSNIDEdits); ps4_10_radio_button = new QRadioButton(tr("PS4 Firmware >= 8.0"), this); target_layout->addWidget(ps4_10_radio_button); connect(ps4_10_radio_button, &QRadioButton::toggled, this, UpdatePSNIDEdits); ps5_radio_button = new QRadioButton(tr("PS5"), this); target_layout->addWidget(ps5_radio_button); connect(ps5_radio_button, &QRadioButton::toggled, this, UpdatePSNIDEdits); form_layout->addRow(tr("Console:"), target_layout); psn_online_id_edit = new QLineEdit(this); form_layout->addRow(tr("PSN Online-ID (username, case-sensitive):"), psn_online_id_edit); psn_account_id_edit = new QLineEdit(this); form_layout->addRow(tr("PSN Account-ID (base64):"), psn_account_id_edit); ps5_radio_button->setChecked(true); UpdatePSNIDEdits(); pin_edit = new QLineEdit(this); pin_edit->setValidator(new QRegularExpressionValidator(pin_re, pin_edit)); form_layout->addRow(tr("PIN:"), pin_edit); button_box = new QDialogButtonBox(QDialogButtonBox::Cancel, this); register_button = button_box->addButton(tr("Register"), QDialogButtonBox::AcceptRole); layout->addWidget(button_box); connect(button_box, &QDialogButtonBox::accepted, this, &QDialog::accept); connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); connect(host_edit, &QLineEdit::textChanged, this, &RegistDialog::ValidateInput); connect(psn_online_id_edit, &QLineEdit::textChanged, this, &RegistDialog::ValidateInput); connect(pin_edit, &QLineEdit::textChanged, this, &RegistDialog::ValidateInput); ValidateInput(); } RegistDialog::~RegistDialog() { } bool RegistDialog::NeedAccountId() { return !ps4_pre9_radio_button->isChecked(); } void RegistDialog::ValidateInput() { bool need_account_id = NeedAccountId(); bool valid = !host_edit->text().trimmed().isEmpty() && !(!need_account_id && psn_online_id_edit->text().trimmed().isEmpty()) && !(need_account_id && psn_account_id_edit->text().trimmed().isEmpty()) && pin_edit->text().length() == PIN_LENGTH; register_button->setEnabled(valid); } void RegistDialog::accept() { ChiakiRegistInfo info = {}; QByteArray host = host_edit->text().trimmed().toUtf8(); info.host = host.constData(); if(ps4_pre9_radio_button->isChecked()) info.target = CHIAKI_TARGET_PS4_8; else if(ps4_pre10_radio_button->isChecked()) info.target = CHIAKI_TARGET_PS4_9; else if(ps4_10_radio_button->isChecked()) info.target = CHIAKI_TARGET_PS4_10; else info.target = CHIAKI_TARGET_PS5_1; bool need_account_id = NeedAccountId(); QByteArray psn_id; // keep this out of the if scope if(!need_account_id) { psn_id = psn_online_id_edit->text().trimmed().toUtf8(); info.psn_online_id = psn_id.constData(); } else { QString account_id_b64 = psn_account_id_edit->text().trimmed(); QByteArray account_id = QByteArray::fromBase64(account_id_b64.toUtf8()); if(account_id.size() != CHIAKI_PSN_ACCOUNT_ID_SIZE) { QMessageBox::critical(this, tr("Invalid Account-ID"), tr("The PSN Account-ID must be exactly %1 bytes encoded as base64.").arg(CHIAKI_PSN_ACCOUNT_ID_SIZE)); return; } info.psn_online_id = nullptr; memcpy(info.psn_account_id, account_id.constData(), CHIAKI_PSN_ACCOUNT_ID_SIZE); } info.broadcast = broadcast_check_box->isChecked(); info.pin = (uint32_t)pin_edit->text().toULong(); RegistExecuteDialog execute_dialog(settings, info, this); int r = execute_dialog.exec(); if(r == QDialog::Accepted) { this->registered_host = execute_dialog.GetRegisteredHost(); QDialog::accept(); } } static void RegistExecuteDialogLogCb(ChiakiLogLevel level, const char *msg, void *user); static void RegistExecuteDialogRegistCb(ChiakiRegistEvent *event, void *user); RegistExecuteDialog::RegistExecuteDialog(Settings *settings, const ChiakiRegistInfo ®ist_info, QWidget *parent) : QDialog(parent) { this->settings = settings; auto layout = new QVBoxLayout(this); setLayout(layout); log_edit = new QPlainTextEdit(this); log_edit->setReadOnly(true); log_edit->setFont(QFontDatabase::systemFont(QFontDatabase::FixedFont)); layout->addWidget(log_edit); button_box = new QDialogButtonBox(QDialogButtonBox::Cancel, this); layout->addWidget(button_box); connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); chiaki_log_init(&log, settings->GetLogLevelMask(), RegistExecuteDialogLogCb, this); chiaki_regist_start(®ist, &log, ®ist_info, RegistExecuteDialogRegistCb, this); setWindowTitle(tr("Register Console")); resize(600, 400); } RegistExecuteDialog::~RegistExecuteDialog() { chiaki_regist_stop(®ist); chiaki_regist_fini(®ist); } void RegistExecuteDialog::Log(ChiakiLogLevel level, QString msg) { log_edit->appendPlainText(QString("[%1] %2").arg(chiaki_log_level_char(level)).arg(msg)); log_edit->verticalScrollBar()->setValue(log_edit->verticalScrollBar()->maximum()); } void RegistExecuteDialog::Finished() { auto cancel_button = button_box->button(QDialogButtonBox::Cancel); if(!cancel_button) return; button_box->removeButton(cancel_button); button_box->addButton(QDialogButtonBox::Close); } void RegistExecuteDialog::Success(RegisteredHost host) { CHIAKI_LOGI(&log, "Successfully registered %s", host.GetServerNickname().toLocal8Bit().constData()); this->registered_host = host; if(settings->GetRegisteredHostRegistered(host.GetServerMAC())) { int r = QMessageBox::question(this, tr("Console already registered"), tr("The console with ID %1 has already been registered. Should the previous record be overwritten?").arg(host.GetServerMAC().ToString())); if(r == QMessageBox::No) { accept(); return; } } settings->AddRegisteredHost(host); QMessageBox::information(this, tr("Console registered"), tr("The Console %1 with ID %2 has been successfully registered!").arg(host.GetServerNickname(), host.GetServerMAC().ToString())); accept(); } void RegistExecuteDialog::Failed() { Finished(); } class RegistExecuteDialogPrivate { public: static void Log(RegistExecuteDialog *dialog, ChiakiLogLevel level, QString msg) { QMetaObject::invokeMethod(dialog, "Log", Qt::ConnectionType::QueuedConnection, Q_ARG(ChiakiLogLevel, level), Q_ARG(QString, msg)); } static void RegistEvent(RegistExecuteDialog *dialog, ChiakiRegistEvent *event) { switch(event->type) { case CHIAKI_REGIST_EVENT_TYPE_FINISHED_SUCCESS: QMetaObject::invokeMethod(dialog, "Success", Qt::ConnectionType::QueuedConnection, Q_ARG(RegisteredHost, *event->registered_host)); break; case CHIAKI_REGIST_EVENT_TYPE_FINISHED_FAILED: QMetaObject::invokeMethod(dialog, "Failed", Qt::ConnectionType::QueuedConnection); break; default: break; } } }; static void RegistExecuteDialogLogCb(ChiakiLogLevel level, const char *msg, void *user) { chiaki_log_cb_print(level, msg, nullptr); auto dialog = reinterpret_cast(user); RegistExecuteDialogPrivate::Log(dialog, level, msg); } static void RegistExecuteDialogRegistCb(ChiakiRegistEvent *event, void *user) { auto dialog = reinterpret_cast(user); RegistExecuteDialogPrivate::RegistEvent(dialog, event); } chiaki-v2.2.0/gui/src/servericonwidget.cpp000066400000000000000000000054041447035777400206200ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include ServerIconWidget::ServerIconWidget(QWidget *parent) : QWidget(parent) { LoadSvg(); } void ServerIconWidget::paintEvent(QPaintEvent *event) { QRectF view_box = svg_renderer.viewBoxF(); if(view_box.width() < 0.00001f || view_box.height() < 0.00001f) return; float icon_aspect = view_box.width() / view_box.height(); float widget_aspect = (float)width() / (float)height(); QRectF icon_rect; if(widget_aspect > icon_aspect) { icon_rect.setHeight(height()); icon_rect.setWidth((float)height() * icon_aspect); icon_rect.moveTop(0.0f); icon_rect.moveLeft(((float)width() - icon_rect.width()) * 0.5f); } else { icon_rect.setWidth(width()); icon_rect.setHeight((float)width() / icon_aspect); icon_rect.moveLeft(0.0f); icon_rect.moveTop(((float)height() - icon_rect.height()) * 0.5f); } QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); auto render_element = [&view_box, &icon_rect, this](QPainter &painter, const QString &id) { QRectF src = /*svg_renderer.transformForElement(id).mapRect(*/svg_renderer.boundsOnElement(id)/*)*/; QRectF dst = src.translated(-view_box.left(), -view_box.top()); dst = QRectF( icon_rect.width() * dst.left() / view_box.width(), icon_rect.height() * dst.top() / view_box.height(), icon_rect.width() * dst.width() / view_box.width(), icon_rect.height() * dst.height() / view_box.height()); dst = dst.translated(icon_rect.left(), icon_rect.top()); svg_renderer.render(&painter, id, dst); }; switch(state) { case CHIAKI_DISCOVERY_HOST_STATE_READY: render_element(painter, "light_on"); break; case CHIAKI_DISCOVERY_HOST_STATE_STANDBY: render_element(painter, "light_standby"); break; default: break; } auto color = palette().color(QPalette::Text); QImage temp_image((int)(devicePixelRatioF() * width()), (int)(devicePixelRatioF() * height()), QImage::Format_ARGB32_Premultiplied); { temp_image.setDevicePixelRatio(devicePixelRatioF()); temp_image.fill(QColor(0, 0, 0, 0)); QPainter temp_painter(&temp_image); render_element(temp_painter, "console"); temp_painter.setCompositionMode(QPainter::CompositionMode_SourceAtop); temp_painter.fillRect(icon_rect, color); } painter.drawImage(QRectF(0.0f, 0.0f, width(), height()), temp_image); } void ServerIconWidget::LoadSvg() { QString path = ps5 ? ":/icons/console-ps5.svg" : ":/icons/console-ps4.svg"; svg_renderer.load(path); update(); } void ServerIconWidget::SetState(bool ps5, ChiakiDiscoveryHostState state) { bool reload = this->ps5 != ps5; this->ps5 = ps5; this->state = state; if(reload) LoadSvg(); update(); } chiaki-v2.2.0/gui/src/serveritemwidget.cpp000066400000000000000000000063561447035777400206350ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include ServerItemWidget::ServerItemWidget(QWidget *parent) : QFrame(parent) { setFrameStyle(QFrame::Panel); auto layout = new QVBoxLayout(this); this->setLayout(layout); top_label = new QLabel(this); top_label->setAlignment(Qt::AlignCenter); top_label->setWordWrap(true); layout->addWidget(top_label); icon_widget = new ServerIconWidget(this); layout->addWidget(icon_widget); bottom_label = new QLabel(this); bottom_label->setAlignment(Qt::AlignCenter); bottom_label->setWordWrap(true); layout->addWidget(bottom_label); setContextMenuPolicy(Qt::ActionsContextMenu); delete_action = new QAction(tr("Delete"), this); addAction(delete_action); connect(delete_action, &QAction::triggered, this, [this]{ emit DeleteTriggered(); }); wake_action = new QAction(tr("Send Wakeup Packet"), this); addAction(wake_action); connect(wake_action, &QAction::triggered, this, [this]{ emit WakeTriggered(); }); this->selected = true; SetSelected(false); setFixedSize(200, 200); } void ServerItemWidget::mousePressEvent(QMouseEvent *event) { emit Selected(); } void ServerItemWidget::mouseDoubleClickEvent(QMouseEvent *event) { if(event->button() == Qt::LeftButton) emit Triggered(); } void ServerItemWidget::SetSelected(bool selected) { if(this->selected == selected) return; this->selected = selected; setStyleSheet(selected ? "QFrame { background-color: palette(highlight); color: palette(highlighted-text); }" : ""); } void ServerItemWidget::Update(const DisplayServer &display_server) { delete_action->setEnabled(!display_server.discovered); wake_action->setEnabled(display_server.registered); icon_widget->SetState(display_server.IsPS5(), display_server.discovered ? display_server.discovery_host.state : CHIAKI_DISCOVERY_HOST_STATE_UNKNOWN); QString top_text = ""; if(display_server.discovered || display_server.registered) { top_text += (display_server.discovered ? display_server.discovery_host.host_name : display_server.registered_host.GetServerNickname()) + "\n"; } top_text += tr("Address: %1").arg(display_server.GetHostAddr()); if(display_server.discovered || display_server.registered) { top_text += "\n" + tr("ID: %1 (%2)").arg( display_server.discovered ? display_server.discovery_host.GetHostMAC().ToString() : display_server.registered_host.GetServerMAC().ToString(), display_server.registered ? tr("registered") : tr("unregistered")); } top_text += "\n" + (display_server.discovered ? tr("discovered") : tr("manual")), top_label->setText(top_text); QString bottom_text = ""; if(display_server.discovered) { bottom_text += tr("State: %1").arg(chiaki_discovery_host_state_string(display_server.discovery_host.state)); if(!display_server.discovery_host.running_app_name.isEmpty()) bottom_text += "\n" + tr("App: %1").arg(display_server.discovery_host.running_app_name); if(!display_server.discovery_host.running_app_titleid.isEmpty()) bottom_text += "\n" + tr("Title ID: %1").arg(display_server.discovery_host.running_app_titleid); } bottom_label->setText(bottom_text); } chiaki-v2.2.0/gui/src/sessionlog.cpp000066400000000000000000000066121447035777400174240ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include static void LogCb(ChiakiLogLevel level, const char *msg, void *user); SessionLog::SessionLog(StreamSession *session, uint32_t level_mask, const QString &filename) : session(session) { chiaki_log_init(&log, level_mask, LogCb, this); if(filename.isEmpty()) { file = nullptr; CHIAKI_LOGI(&log, "Logging to file disabled"); } else { file = new QFile(filename); if(!file->open(QIODevice::ReadWrite)) { delete file; file = nullptr; CHIAKI_LOGI(&log, "Failed to open file %s for logging", filename.toLocal8Bit().constData()); } else { CHIAKI_LOGI(&log, "Logging to file %s", filename.toLocal8Bit().constData()); } } CHIAKI_LOGI(&log, "Chiaki Version " CHIAKI_VERSION); } SessionLog::~SessionLog() { delete file; } void SessionLog::Log(ChiakiLogLevel level, const char *msg) { chiaki_log_cb_print(level, msg, nullptr); if(file) { static const QString date_format = "yyyy-MM-dd HH:mm:ss:zzzzzz"; QString str = QString("[%1] [%2] %3\n").arg( QDateTime::currentDateTime().toString(date_format), QString(chiaki_log_level_char(level)), msg); QMutexLocker lock(&file_mutex); file->write(str.toLocal8Bit()); file->flush(); } } class SessionLogPrivate { public: static void Log(SessionLog *log, ChiakiLogLevel level, const char *msg) { log->Log(level, msg); } }; static void LogCb(ChiakiLogLevel level, const char *msg, void *user) { auto log = reinterpret_cast(user); SessionLogPrivate::Log(log, level, msg); } #define KEEP_LOG_FILES_COUNT 5 QString GetLogBaseDir() { auto base_dir = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation); if(base_dir.isEmpty()) return QString(); QDir dir(base_dir); if(!dir.mkpath("log")) return QString(); if(!dir.cd("log")) return QString(); return dir.absolutePath(); } QString CreateLogFilename() { static const QString date_format = "yyyy-MM-dd_HH-mm-ss-zzzzzz"; static const QString session_log_wildcard = "chiaki_session_*.log"; static const QRegularExpression session_log_regex("chiaki_session_(.*).log"); QString dir_str = GetLogBaseDir(); if(dir_str.isEmpty()) return QString(); QDir dir = QDir(dir_str); dir.setNameFilters({ session_log_wildcard }); auto existing_files = dir.entryList(); QVector> existing_files_date; existing_files_date.resize(existing_files.count()); std::transform(existing_files.begin(), existing_files.end(), existing_files_date.begin(), [](const QString &filename) { QDateTime date; auto match = session_log_regex.match(filename); if(match.hasMatch()) date = QDateTime::fromString(match.captured(1), date_format); return QPair(filename, date); }); std::sort(existing_files_date.begin(), existing_files_date.end(), [](const QPair &a, const QPair &b) { return a.second > b.second; }); for(int i=KEEP_LOG_FILES_COUNT; i #include #include #define SETTINGS_VERSION 2 static void MigrateSettingsTo2(QSettings *settings) { QList> hosts; int count = settings->beginReadArray("registered_hosts"); for(int i=0; isetArrayIndex(i); QMap host; for(QString k : settings->allKeys()) host[k] = settings->value(k); hosts.append(host); } settings->endArray(); settings->remove("registered_hosts"); settings->beginWriteArray("registered_hosts"); int i=0; for(const auto &host : hosts) { settings->setArrayIndex(i); settings->setValue("target", (int)CHIAKI_TARGET_PS4_10); for(auto it = host.constBegin(); it != host.constEnd(); it++) { QString k = it.key(); if(k == "ps4_nickname") k = "server_nickname"; else if(k == "ps4_mac") k = "server_mac"; settings->setValue(k, it.value()); } i++; } settings->endArray(); QString hw_decoder = settings->value("settings/hw_decode_engine").toString(); settings->remove("settings/hw_decode_engine"); if(hw_decoder != "none") settings->setValue("settings/hw_decoder", hw_decoder); } static void MigrateSettings(QSettings *settings) { int version_prev = settings->value("version", 0).toInt(); if(version_prev < 1) return; if(version_prev > SETTINGS_VERSION) { CHIAKI_LOGE(NULL, "Settings version %d is higher than application one (%d)", version_prev, SETTINGS_VERSION); return; } while(version_prev < SETTINGS_VERSION) { version_prev++; switch(version_prev) { case 2: CHIAKI_LOGI(NULL, "Migrating settings to 2"); MigrateSettingsTo2(settings); break; default: break; } } } Settings::Settings(QObject *parent) : QObject(parent) { MigrateSettings(&settings); manual_hosts_id_next = 0; settings.setValue("version", SETTINGS_VERSION); LoadRegisteredHosts(); LoadManualHosts(); } uint32_t Settings::GetLogLevelMask() { uint32_t mask = CHIAKI_LOG_ALL; if(!GetLogVerbose()) mask &= ~CHIAKI_LOG_VERBOSE; return mask; } static const QMap resolutions = { { CHIAKI_VIDEO_RESOLUTION_PRESET_360p, "360p" }, { CHIAKI_VIDEO_RESOLUTION_PRESET_540p, "540p" }, { CHIAKI_VIDEO_RESOLUTION_PRESET_720p, "720p" }, { CHIAKI_VIDEO_RESOLUTION_PRESET_1080p, "1080p" } }; static const ChiakiVideoResolutionPreset resolution_default = CHIAKI_VIDEO_RESOLUTION_PRESET_720p; ChiakiVideoResolutionPreset Settings::GetResolution() const { auto s = settings.value("settings/resolution", resolutions[resolution_default]).toString(); return resolutions.key(s, resolution_default); } void Settings::SetResolution(ChiakiVideoResolutionPreset resolution) { settings.setValue("settings/resolution", resolutions[resolution]); } static const QMap fps_values = { { CHIAKI_VIDEO_FPS_PRESET_30, 30 }, { CHIAKI_VIDEO_FPS_PRESET_60, 60 } }; static const ChiakiVideoFPSPreset fps_default = CHIAKI_VIDEO_FPS_PRESET_60; ChiakiVideoFPSPreset Settings::GetFPS() const { auto v = settings.value("settings/fps", fps_values[fps_default]).toInt(); return fps_values.key(v, fps_default); } void Settings::SetFPS(ChiakiVideoFPSPreset fps) { settings.setValue("settings/fps", fps_values[fps]); } unsigned int Settings::GetBitrate() const { return settings.value("settings/bitrate", 0).toUInt(); } void Settings::SetBitrate(unsigned int bitrate) { settings.setValue("settings/bitrate", bitrate); } static const QMap codecs = { { CHIAKI_CODEC_H264, "h264" }, { CHIAKI_CODEC_H265, "h265" } }; static const ChiakiCodec codec_default = CHIAKI_CODEC_H265; ChiakiCodec Settings::GetCodec() const { auto v = settings.value("settings/codec", codecs[codec_default]).toString(); return codecs.key(v, codec_default); } void Settings::SetCodec(ChiakiCodec codec) { settings.setValue("settings/codec", codecs[codec]); } unsigned int Settings::GetAudioBufferSizeDefault() const { return 9600; } unsigned int Settings::GetAudioBufferSizeRaw() const { return settings.value("settings/audio_buffer_size", 0).toUInt(); } static const QMap decoder_values = { { Decoder::Ffmpeg, "ffmpeg" }, { Decoder::Pi, "pi" } }; static const Decoder decoder_default = Decoder::Pi; Decoder Settings::GetDecoder() const { #if CHIAKI_LIB_ENABLE_PI_DECODER auto v = settings.value("settings/decoder", decoder_values[decoder_default]).toString(); return decoder_values.key(v, decoder_default); #else return Decoder::Ffmpeg; #endif } void Settings::SetDecoder(Decoder decoder) { settings.setValue("settings/decoder", decoder_values[decoder]); } QString Settings::GetHardwareDecoder() const { return settings.value("settings/hw_decoder").toString(); } void Settings::SetHardwareDecoder(const QString &hw_decoder) { settings.setValue("settings/hw_decoder", hw_decoder); } unsigned int Settings::GetAudioBufferSize() const { unsigned int v = GetAudioBufferSizeRaw(); return v ? v : GetAudioBufferSizeDefault(); } QString Settings::GetAudioOutDevice() const { return settings.value("settings/audio_out_device").toString(); } void Settings::SetAudioOutDevice(QString device_name) { settings.setValue("settings/audio_out_device", device_name); } void Settings::SetAudioBufferSize(unsigned int size) { settings.setValue("settings/audio_buffer_size", size); } ChiakiConnectVideoProfile Settings::GetVideoProfile() { ChiakiConnectVideoProfile profile = {}; chiaki_connect_video_profile_preset(&profile, GetResolution(), GetFPS()); unsigned int bitrate = GetBitrate(); if(bitrate) profile.bitrate = bitrate; profile.codec = GetCodec(); return profile; } static const QMap disconnect_action_values = { { DisconnectAction::Ask, "ask" }, { DisconnectAction::AlwaysNothing, "nothing" }, { DisconnectAction::AlwaysSleep, "sleep" } }; static const DisconnectAction disconnect_action_default = DisconnectAction::Ask; DisconnectAction Settings::GetDisconnectAction() { auto v = settings.value("settings/disconnect_action", disconnect_action_values[disconnect_action_default]).toString(); return disconnect_action_values.key(v, disconnect_action_default); } void Settings::SetDisconnectAction(DisconnectAction action) { settings.setValue("settings/disconnect_action", disconnect_action_values[action]); } void Settings::LoadRegisteredHosts() { registered_hosts.clear(); int count = settings.beginReadArray("registered_hosts"); for(int i=0; i(ControllerButtonExt::ANALOG_STICK_LEFT_X_UP) : return tr("Left Stick Right"); case static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_Y_UP) : return tr("Left Stick Up"); case static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_X_UP) : return tr("Right Stick Right"); case static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_Y_UP) : return tr("Right Stick Up"); case static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_X_DOWN) : return tr("Left Stick Left"); case static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_Y_DOWN) : return tr("Left Stick Down"); case static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_X_DOWN) : return tr("Right Stick Left"); case static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_Y_DOWN) : return tr("Right Stick Down"); default: return "Unknown"; } } void Settings::SetControllerButtonMapping(int chiaki_button, Qt::Key key) { auto button_name = GetChiakiControllerButtonName(chiaki_button).replace(' ', '_').toLower(); settings.setValue("keymap/" + button_name, QKeySequence(key).toString()); } QMap Settings::GetControllerMapping() { // Initialize with default values QMap result = { {CHIAKI_CONTROLLER_BUTTON_CROSS , Qt::Key::Key_Return}, {CHIAKI_CONTROLLER_BUTTON_MOON , Qt::Key::Key_Backspace}, {CHIAKI_CONTROLLER_BUTTON_BOX , Qt::Key::Key_Backslash}, {CHIAKI_CONTROLLER_BUTTON_PYRAMID , Qt::Key::Key_C}, {CHIAKI_CONTROLLER_BUTTON_DPAD_LEFT , Qt::Key::Key_Left}, {CHIAKI_CONTROLLER_BUTTON_DPAD_RIGHT, Qt::Key::Key_Right}, {CHIAKI_CONTROLLER_BUTTON_DPAD_UP , Qt::Key::Key_Up}, {CHIAKI_CONTROLLER_BUTTON_DPAD_DOWN , Qt::Key::Key_Down}, {CHIAKI_CONTROLLER_BUTTON_L1 , Qt::Key::Key_2}, {CHIAKI_CONTROLLER_BUTTON_R1 , Qt::Key::Key_3}, {CHIAKI_CONTROLLER_BUTTON_L3 , Qt::Key::Key_5}, {CHIAKI_CONTROLLER_BUTTON_R3 , Qt::Key::Key_6}, {CHIAKI_CONTROLLER_BUTTON_OPTIONS , Qt::Key::Key_O}, {CHIAKI_CONTROLLER_BUTTON_SHARE , Qt::Key::Key_F}, {CHIAKI_CONTROLLER_BUTTON_TOUCHPAD , Qt::Key::Key_T}, {CHIAKI_CONTROLLER_BUTTON_PS , Qt::Key::Key_Escape}, {CHIAKI_CONTROLLER_ANALOG_BUTTON_L2 , Qt::Key::Key_1}, {CHIAKI_CONTROLLER_ANALOG_BUTTON_R2 , Qt::Key::Key_4}, {static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_X_UP) , Qt::Key::Key_BracketRight}, {static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_X_DOWN) , Qt::Key::Key_BracketLeft}, {static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_Y_UP) , Qt::Key::Key_Insert}, {static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_Y_DOWN) , Qt::Key::Key_Delete}, {static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_X_UP) , Qt::Key::Key_Equal}, {static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_X_DOWN), Qt::Key::Key_Minus}, {static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_Y_UP) , Qt::Key::Key_PageUp}, {static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_Y_DOWN), Qt::Key::Key_PageDown} }; // Then fill in from settings auto chiaki_buttons = result.keys(); for(auto chiaki_button : chiaki_buttons) { auto button_name = GetChiakiControllerButtonName(chiaki_button).replace(' ', '_').toLower(); if(settings.contains("keymap/" + button_name)) result[static_cast(chiaki_button)] = Qt::Key(QKeySequence(settings.value("keymap/" + button_name).toString())[0]); } return result; } QMap Settings::GetControllerMappingForDecoding() { auto map = GetControllerMapping(); QMap result; for(auto it = map.begin(); it != map.end(); ++it) { result[it.value()] = it.key(); } return result; } chiaki-v2.2.0/gui/src/settingsdialog.cpp000066400000000000000000000371341447035777400202620ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include const char * const about_string = "

Chiaki

by thestr4ng3r, version " CHIAKI_VERSION "" "

This program is free software: you can redistribute it and/or modify " "it under the terms of the GNU Affero General Public License version 3 " "as published by the Free Software Foundation.

" "" "

This program 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. See the " "GNU General Public License for more details.

"; SettingsDialog::SettingsDialog(Settings *settings, QWidget *parent) : QDialog(parent) { this->settings = settings; setWindowTitle(tr("Settings")); auto root_layout = new QVBoxLayout(this); setLayout(root_layout); auto horizontal_layout = new QHBoxLayout(); root_layout->addLayout(horizontal_layout); auto left_layout = new QVBoxLayout(); horizontal_layout->addLayout(left_layout); auto right_layout = new QVBoxLayout(); horizontal_layout->addLayout(right_layout); // General auto general_group_box = new QGroupBox(tr("General")); left_layout->addWidget(general_group_box); auto general_layout = new QFormLayout(); general_group_box->setLayout(general_layout); if(general_layout->spacing() < 16) general_layout->setSpacing(16); log_verbose_check_box = new QCheckBox(this); general_layout->addRow(tr("Verbose Logging:\nWarning: This logs A LOT!\nDon't enable for regular use."), log_verbose_check_box); log_verbose_check_box->setChecked(settings->GetLogVerbose()); connect(log_verbose_check_box, &QCheckBox::stateChanged, this, &SettingsDialog::LogVerboseChanged); dualsense_check_box = new QCheckBox(this); general_layout->addRow(tr("Extended DualSense Support:\nEnable haptics and adaptive triggers\nfor attached DualSense controllers.\nThis is currently experimental."), dualsense_check_box); dualsense_check_box->setChecked(settings->GetDualSenseEnabled()); connect(dualsense_check_box, &QCheckBox::stateChanged, this, &SettingsDialog::DualSenseChanged); auto log_directory_label = new QLineEdit(GetLogBaseDir(), this); log_directory_label->setReadOnly(true); general_layout->addRow(tr("Log Directory:"), log_directory_label); disconnect_action_combo_box = new QComboBox(this); QList> disconnect_action_strings = { { DisconnectAction::AlwaysNothing, "Do Nothing"}, { DisconnectAction::AlwaysSleep, "Enter Sleep Mode"}, { DisconnectAction::Ask, "Ask"} }; auto current_disconnect_action = settings->GetDisconnectAction(); for(const auto &p : disconnect_action_strings) { disconnect_action_combo_box->addItem(tr(p.second), (int)p.first); if(current_disconnect_action == p.first) disconnect_action_combo_box->setCurrentIndex(disconnect_action_combo_box->count() - 1); } connect(disconnect_action_combo_box, SIGNAL(currentIndexChanged(int)), this, SLOT(DisconnectActionSelected())); general_layout->addRow(tr("Action on Disconnect:"), disconnect_action_combo_box); audio_device_combo_box = new QComboBox(this); audio_device_combo_box->addItem(tr("Auto")); auto current_audio_device = settings->GetAudioOutDevice(); if(!current_audio_device.isEmpty()) { // temporarily add the selected device before async fetching is done audio_device_combo_box->addItem(current_audio_device, current_audio_device); audio_device_combo_box->setCurrentIndex(1); } connect(audio_device_combo_box, QOverload::of(&QComboBox::activated), this, [this](){ this->settings->SetAudioOutDevice(audio_device_combo_box->currentData().toString()); }); // do this async because it's slow, assuming availableDevices() is thread-safe auto audio_devices_future = QtConcurrent::run([]() { return QAudioDeviceInfo::availableDevices(QAudio::AudioOutput); }); auto audio_devices_future_watcher = new QFutureWatcher>(this); connect(audio_devices_future_watcher, &QFutureWatcher>::finished, this, [this, audio_devices_future_watcher, settings]() { auto available_devices = audio_devices_future_watcher->result(); while(audio_device_combo_box->count() > 1) // remove all but "Auto" audio_device_combo_box->removeItem(1); for(QAudioDeviceInfo di : available_devices) audio_device_combo_box->addItem(di.deviceName(), di.deviceName()); int audio_out_device_index = audio_device_combo_box->findData(settings->GetAudioOutDevice()); audio_device_combo_box->setCurrentIndex(audio_out_device_index < 0 ? 0 : audio_out_device_index); }); audio_devices_future_watcher->setFuture(audio_devices_future); general_layout->addRow(tr("Audio Output Device:"), audio_device_combo_box); auto about_button = new QPushButton(tr("About Chiaki"), this); general_layout->addRow(about_button); connect(about_button, &QPushButton::clicked, this, [this]() { QMessageBox::about(this, tr("About Chiaki"), about_string); }); // Stream Settings auto stream_settings_group_box = new QGroupBox(tr("Stream Settings")); left_layout->addWidget(stream_settings_group_box); auto stream_settings_layout = new QFormLayout(); stream_settings_group_box->setLayout(stream_settings_layout); resolution_combo_box = new QComboBox(this); static const QList> resolution_strings = { { CHIAKI_VIDEO_RESOLUTION_PRESET_360p, "360p" }, { CHIAKI_VIDEO_RESOLUTION_PRESET_540p, "540p" }, { CHIAKI_VIDEO_RESOLUTION_PRESET_720p, "720p" }, { CHIAKI_VIDEO_RESOLUTION_PRESET_1080p, "1080p (PS5 and PS4 Pro only)" } }; auto current_res = settings->GetResolution(); for(const auto &p : resolution_strings) { resolution_combo_box->addItem(tr(p.second), (int)p.first); if(current_res == p.first) resolution_combo_box->setCurrentIndex(resolution_combo_box->count() - 1); } connect(resolution_combo_box, SIGNAL(currentIndexChanged(int)), this, SLOT(ResolutionSelected())); stream_settings_layout->addRow(tr("Resolution:"), resolution_combo_box); fps_combo_box = new QComboBox(this); static const QList> fps_strings = { { CHIAKI_VIDEO_FPS_PRESET_30, "30" }, { CHIAKI_VIDEO_FPS_PRESET_60, "60" } }; auto current_fps = settings->GetFPS(); for(const auto &p : fps_strings) { fps_combo_box->addItem(p.second, (int)p.first); if(current_fps == p.first) fps_combo_box->setCurrentIndex(fps_combo_box->count() - 1); } connect(fps_combo_box, SIGNAL(currentIndexChanged(int)), this, SLOT(FPSSelected())); stream_settings_layout->addRow(tr("FPS:"), fps_combo_box); bitrate_edit = new QLineEdit(this); bitrate_edit->setValidator(new QIntValidator(2000, 50000, bitrate_edit)); unsigned int bitrate = settings->GetBitrate(); bitrate_edit->setText(bitrate ? QString::number(bitrate) : ""); stream_settings_layout->addRow(tr("Bitrate:"), bitrate_edit); connect(bitrate_edit, &QLineEdit::textEdited, this, &SettingsDialog::BitrateEdited); UpdateBitratePlaceholder(); codec_combo_box = new QComboBox(this); static const QList> codec_strings = { { CHIAKI_CODEC_H264, "H264" }, { CHIAKI_CODEC_H265, "H265 (PS5 only)" } }; auto current_codec = settings->GetCodec(); for(const auto &p : codec_strings) { codec_combo_box->addItem(p.second, (int)p.first); if(current_codec == p.first) codec_combo_box->setCurrentIndex(codec_combo_box->count() - 1); } connect(codec_combo_box, SIGNAL(currentIndexChanged(int)), this, SLOT(CodecSelected())); stream_settings_layout->addRow(tr("Codec:"), codec_combo_box); audio_buffer_size_edit = new QLineEdit(this); audio_buffer_size_edit->setValidator(new QIntValidator(1024, 0x20000, audio_buffer_size_edit)); unsigned int audio_buffer_size = settings->GetAudioBufferSizeRaw(); audio_buffer_size_edit->setText(audio_buffer_size ? QString::number(audio_buffer_size) : ""); stream_settings_layout->addRow(tr("Audio Buffer Size:"), audio_buffer_size_edit); audio_buffer_size_edit->setPlaceholderText(tr("Default (%1)").arg(settings->GetAudioBufferSizeDefault())); connect(audio_buffer_size_edit, &QLineEdit::textEdited, this, &SettingsDialog::AudioBufferSizeEdited); // Decode Settings auto decode_settings = new QGroupBox(tr("Decode Settings")); left_layout->addWidget(decode_settings); auto decode_settings_layout = new QFormLayout(); decode_settings->setLayout(decode_settings_layout); #if CHIAKI_LIB_ENABLE_PI_DECODER pi_decoder_check_box = new QCheckBox(this); pi_decoder_check_box->setChecked(settings->GetDecoder() == Decoder::Pi); connect(pi_decoder_check_box, &QCheckBox::toggled, this, [this](bool checked) { this->settings->SetDecoder(checked ? Decoder::Pi : Decoder::Ffmpeg); UpdateHardwareDecodeEngineComboBox(); }); decode_settings_layout->addRow(tr("Use Raspberry Pi Decoder:"), pi_decoder_check_box); #else pi_decoder_check_box = nullptr; #endif hw_decoder_combo_box = new QComboBox(this); hw_decoder_combo_box->addItem("none", QString()); auto current_hw_decoder = settings->GetHardwareDecoder(); enum AVHWDeviceType hw_dev = AV_HWDEVICE_TYPE_NONE; while(true) { hw_dev = av_hwdevice_iterate_types(hw_dev); if(hw_dev == AV_HWDEVICE_TYPE_NONE) break; QString name = QString::fromUtf8(av_hwdevice_get_type_name(hw_dev)); hw_decoder_combo_box->addItem(name, name); if(current_hw_decoder == name) hw_decoder_combo_box->setCurrentIndex(hw_decoder_combo_box->count() - 1); } connect(hw_decoder_combo_box, SIGNAL(currentIndexChanged(int)), this, SLOT(HardwareDecodeEngineSelected())); decode_settings_layout->addRow(tr("Hardware decode method:"), hw_decoder_combo_box); UpdateHardwareDecodeEngineComboBox(); // Registered Consoles auto registered_hosts_group_box = new QGroupBox(tr("Registered Consoles")); left_layout->addWidget(registered_hosts_group_box); auto registered_hosts_layout = new QHBoxLayout(); registered_hosts_group_box->setLayout(registered_hosts_layout); registered_hosts_list_widget = new QListWidget(this); registered_hosts_layout->addWidget(registered_hosts_list_widget); auto registered_hosts_buttons_layout = new QVBoxLayout(); registered_hosts_layout->addLayout(registered_hosts_buttons_layout); auto register_new_button = new QPushButton(tr("Register New"), this); registered_hosts_buttons_layout->addWidget(register_new_button); connect(register_new_button, &QPushButton::clicked, this, &SettingsDialog::RegisterNewHost); delete_registered_host_button = new QPushButton(tr("Delete"), this); registered_hosts_buttons_layout->addWidget(delete_registered_host_button); connect(delete_registered_host_button, &QPushButton::clicked, this, &SettingsDialog::DeleteRegisteredHost); registered_hosts_buttons_layout->addStretch(); // Key Settings auto key_settings_group_box = new QGroupBox(tr("Key Settings")); right_layout->addWidget(key_settings_group_box); auto key_horizontal = new QHBoxLayout(); key_settings_group_box->setLayout(key_horizontal); key_horizontal->setSpacing(10); auto key_left_form = new QFormLayout(); auto key_right_form = new QFormLayout(); key_horizontal->addLayout(key_left_form); key_horizontal->addLayout(key_right_form); QMap key_map = this->settings->GetControllerMapping(); int i = 0; for(auto it = key_map.begin(); it != key_map.end(); ++it, ++i) { int chiaki_button = it.key(); auto button = new QPushButton(QKeySequence(it.value()).toString(), this); button->setAutoDefault(false); auto form = i % 2 ? key_left_form : key_right_form; form->addRow(Settings::GetChiakiControllerButtonName(chiaki_button), button); // Launch key capture dialog on clicked event connect(button, &QPushButton::clicked, this, [this, chiaki_button, button](){ auto dialog = new SettingsKeyCaptureDialog(this); // Store captured key to settings and change button label on KeyCaptured event connect(dialog, &SettingsKeyCaptureDialog::KeyCaptured, button, [this, button, chiaki_button](Qt::Key key){ button->setText(QKeySequence(key).toString()); this->settings->SetControllerButtonMapping(chiaki_button, key); }); dialog->exec(); }); } // Close Button auto button_box = new QDialogButtonBox(QDialogButtonBox::Close, this); root_layout->addWidget(button_box); connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject); button_box->button(QDialogButtonBox::Close)->setDefault(true); UpdateRegisteredHosts(); UpdateRegisteredHostsButtons(); connect(settings, &Settings::RegisteredHostsUpdated, this, &SettingsDialog::UpdateRegisteredHosts); connect(registered_hosts_list_widget, &QListWidget::itemSelectionChanged, this, &SettingsDialog::UpdateRegisteredHostsButtons); } void SettingsDialog::ResolutionSelected() { settings->SetResolution((ChiakiVideoResolutionPreset)resolution_combo_box->currentData().toInt()); UpdateBitratePlaceholder(); } void SettingsDialog::DisconnectActionSelected() { settings->SetDisconnectAction(static_cast(disconnect_action_combo_box->currentData().toInt())); } void SettingsDialog::LogVerboseChanged() { settings->SetLogVerbose(log_verbose_check_box->isChecked()); } void SettingsDialog::DualSenseChanged() { settings->SetDualSenseEnabled(dualsense_check_box->isChecked()); } void SettingsDialog::FPSSelected() { settings->SetFPS((ChiakiVideoFPSPreset)fps_combo_box->currentData().toInt()); } void SettingsDialog::BitrateEdited() { settings->SetBitrate(bitrate_edit->text().toUInt()); } void SettingsDialog::CodecSelected() { settings->SetCodec((ChiakiCodec)codec_combo_box->currentData().toInt()); } void SettingsDialog::AudioBufferSizeEdited() { settings->SetAudioBufferSize(audio_buffer_size_edit->text().toUInt()); } void SettingsDialog::AudioOutputSelected() { settings->SetAudioOutDevice(audio_device_combo_box->currentText()); } void SettingsDialog::HardwareDecodeEngineSelected() { settings->SetHardwareDecoder(hw_decoder_combo_box->currentData().toString()); } void SettingsDialog::UpdateHardwareDecodeEngineComboBox() { hw_decoder_combo_box->setEnabled(settings->GetDecoder() == Decoder::Ffmpeg); } void SettingsDialog::UpdateBitratePlaceholder() { bitrate_edit->setPlaceholderText(tr("Automatic (%1)").arg(settings->GetVideoProfile().bitrate)); } void SettingsDialog::UpdateRegisteredHosts() { registered_hosts_list_widget->clear(); auto hosts = settings->GetRegisteredHosts(); for(const auto &host : hosts) { auto item = new QListWidgetItem(QString("%1 (%2, %3)") .arg(host.GetServerMAC().ToString(), chiaki_target_is_ps5(host.GetTarget()) ? "PS5" : "PS4", host.GetServerNickname())); item->setData(Qt::UserRole, QVariant::fromValue(host.GetServerMAC())); registered_hosts_list_widget->addItem(item); } } void SettingsDialog::UpdateRegisteredHostsButtons() { delete_registered_host_button->setEnabled(registered_hosts_list_widget->currentIndex().isValid()); } void SettingsDialog::RegisterNewHost() { RegistDialog dialog(settings, QString(), this); dialog.exec(); } void SettingsDialog::DeleteRegisteredHost() { auto item = registered_hosts_list_widget->currentItem(); if(!item) return; auto mac = item->data(Qt::UserRole).value(); int r = QMessageBox::question(this, tr("Delete registered Console"), tr("Are you sure you want to delete the registered console with ID %1?").arg(mac.ToString())); if(r != QMessageBox::Yes) return; settings->RemoveRegisteredHost(mac); } chiaki-v2.2.0/gui/src/settingskeycapturedialog.cpp000066400000000000000000000014141447035777400223470ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "settingskeycapturedialog.h" #include #include #include #include SettingsKeyCaptureDialog::SettingsKeyCaptureDialog(QWidget *parent) { setWindowTitle(tr("Key Capture")); auto root_layout = new QVBoxLayout(this); setLayout(root_layout); auto label = new QLabel(tr("Press any key to configure button or click close.")); root_layout->addWidget(label); auto button = new QPushButton(tr("Close"), this); root_layout->addWidget(button); button->setAutoDefault(false); connect(button, &QPushButton::clicked, this, &QDialog::accept); } void SettingsKeyCaptureDialog::keyReleaseEvent(QKeyEvent *event) { KeyCaptured(Qt::Key(event->key())); accept(); } chiaki-v2.2.0/gui/src/streamsession.cpp000066400000000000000000000554711447035777400201450ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #define SETSU_UPDATE_INTERVAL_MS 4 #ifdef Q_OS_LINUX #define DUALSENSE_AUDIO_DEVICE_NEEDLE "DualSense" #else #define DUALSENSE_AUDIO_DEVICE_NEEDLE "Wireless Controller" #endif StreamSessionConnectInfo::StreamSessionConnectInfo( Settings *settings, ChiakiTarget target, QString host, QByteArray regist_key, QByteArray morning, bool fullscreen, TransformMode transform_mode) : settings(settings) { key_map = settings->GetControllerMappingForDecoding(); decoder = settings->GetDecoder(); hw_decoder = settings->GetHardwareDecoder(); audio_out_device = settings->GetAudioOutDevice(); log_level_mask = settings->GetLogLevelMask(); log_file = CreateLogFilename(); video_profile = settings->GetVideoProfile(); this->target = target; this->host = host; this->regist_key = regist_key; this->morning = morning; audio_buffer_size = settings->GetAudioBufferSize(); this->fullscreen = fullscreen; this->transform_mode = transform_mode; this->enable_keyboard = false; // TODO: from settings this->enable_dualsense = settings->GetDualSenseEnabled(); } static void AudioSettingsCb(uint32_t channels, uint32_t rate, void *user); static void AudioFrameCb(int16_t *buf, size_t samples_count, void *user); static void HapticsFrameCb(uint8_t *buf, size_t buf_size, void *user); static void EventCb(ChiakiEvent *event, void *user); #if CHIAKI_GUI_ENABLE_SETSU static void SessionSetsuCb(SetsuEvent *event, void *user); #endif static void FfmpegFrameCb(ChiakiFfmpegDecoder *decoder, void *user); StreamSession::StreamSession(const StreamSessionConnectInfo &connect_info, QObject *parent) : QObject(parent), log(this, connect_info.log_level_mask, connect_info.log_file), ffmpeg_decoder(nullptr), #if CHIAKI_LIB_ENABLE_PI_DECODER pi_decoder(nullptr), #endif audio_output(nullptr), audio_io(nullptr), haptics_output(0), haptics_resampler_buf(nullptr) { connected = false; ChiakiErrorCode err; #if CHIAKI_LIB_ENABLE_PI_DECODER if(connect_info.decoder == Decoder::Pi) { pi_decoder = CHIAKI_NEW(ChiakiPiDecoder); if(chiaki_pi_decoder_init(pi_decoder, log.GetChiakiLog()) != CHIAKI_ERR_SUCCESS) throw ChiakiException("Failed to initialize Raspberry Pi Decoder"); } else { #endif ffmpeg_decoder = new ChiakiFfmpegDecoder; ChiakiLogSniffer sniffer; chiaki_log_sniffer_init(&sniffer, CHIAKI_LOG_ALL, GetChiakiLog()); err = chiaki_ffmpeg_decoder_init(ffmpeg_decoder, chiaki_log_sniffer_get_log(&sniffer), chiaki_target_is_ps5(connect_info.target) ? connect_info.video_profile.codec : CHIAKI_CODEC_H264, connect_info.hw_decoder.isEmpty() ? NULL : connect_info.hw_decoder.toUtf8().constData(), FfmpegFrameCb, this); if(err != CHIAKI_ERR_SUCCESS) { QString log = QString::fromUtf8(chiaki_log_sniffer_get_buffer(&sniffer)); chiaki_log_sniffer_fini(&sniffer); throw ChiakiException("Failed to initialize FFMPEG Decoder:\n" + log); } chiaki_log_sniffer_fini(&sniffer); ffmpeg_decoder->log = GetChiakiLog(); #if CHIAKI_LIB_ENABLE_PI_DECODER } #endif audio_out_device_info = QAudioDeviceInfo::defaultOutputDevice(); if(!connect_info.audio_out_device.isEmpty()) { for(QAudioDeviceInfo di : QAudioDeviceInfo::availableDevices(QAudio::AudioOutput)) { if(di.deviceName() == connect_info.audio_out_device) { audio_out_device_info = di; break; } } } chiaki_opus_decoder_init(&opus_decoder, log.GetChiakiLog()); audio_buffer_size = connect_info.audio_buffer_size; QByteArray host_str = connect_info.host.toUtf8(); ChiakiConnectInfo chiaki_connect_info = {}; chiaki_connect_info.ps5 = chiaki_target_is_ps5(connect_info.target); chiaki_connect_info.host = host_str.constData(); chiaki_connect_info.video_profile = connect_info.video_profile; chiaki_connect_info.video_profile_auto_downgrade = true; chiaki_connect_info.enable_keyboard = false; chiaki_connect_info.enable_dualsense = connect_info.enable_dualsense; #if CHIAKI_LIB_ENABLE_PI_DECODER if(connect_info.decoder == Decoder::Pi && chiaki_connect_info.video_profile.codec != CHIAKI_CODEC_H264) { CHIAKI_LOGW(GetChiakiLog(), "A codec other than H264 was requested for Pi Decoder. Falling back to it."); chiaki_connect_info.video_profile.codec = CHIAKI_CODEC_H264; } #endif if(connect_info.regist_key.size() != sizeof(chiaki_connect_info.regist_key)) throw ChiakiException("RegistKey invalid"); memcpy(chiaki_connect_info.regist_key, connect_info.regist_key.constData(), sizeof(chiaki_connect_info.regist_key)); if(connect_info.morning.size() != sizeof(chiaki_connect_info.morning)) throw ChiakiException("Morning invalid"); memcpy(chiaki_connect_info.morning, connect_info.morning.constData(), sizeof(chiaki_connect_info.morning)); chiaki_controller_state_set_idle(&keyboard_state); err = chiaki_session_init(&session, &chiaki_connect_info, GetChiakiLog()); if(err != CHIAKI_ERR_SUCCESS) throw ChiakiException("Chiaki Session Init failed: " + QString::fromLocal8Bit(chiaki_error_string(err))); chiaki_opus_decoder_set_cb(&opus_decoder, AudioSettingsCb, AudioFrameCb, this); ChiakiAudioSink audio_sink; chiaki_opus_decoder_get_sink(&opus_decoder, &audio_sink); chiaki_session_set_audio_sink(&session, &audio_sink); if(connect_info.enable_dualsense) { ChiakiAudioSink haptics_sink; haptics_sink.user = this; haptics_sink.frame_cb = HapticsFrameCb; chiaki_session_set_haptics_sink(&session, &haptics_sink); } #if CHIAKI_LIB_ENABLE_PI_DECODER if(pi_decoder) chiaki_session_set_video_sample_cb(&session, chiaki_pi_decoder_video_sample_cb, pi_decoder); else { #endif chiaki_session_set_video_sample_cb(&session, chiaki_ffmpeg_decoder_video_sample_cb, ffmpeg_decoder); #if CHIAKI_LIB_ENABLE_PI_DECODER } #endif chiaki_session_set_event_cb(&session, EventCb, this); #if CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER connect(ControllerManager::GetInstance(), &ControllerManager::AvailableControllersUpdated, this, &StreamSession::UpdateGamepads); #endif #if CHIAKI_GUI_ENABLE_SETSU setsu_motion_device = nullptr; chiaki_controller_state_set_idle(&setsu_state); orient_dirty = true; chiaki_orientation_tracker_init(&orient_tracker); setsu = setsu_new(); auto timer = new QTimer(this); connect(timer, &QTimer::timeout, this, [this]{ setsu_poll(setsu, SessionSetsuCb, this); if(orient_dirty) { chiaki_orientation_tracker_apply_to_controller_state(&orient_tracker, &setsu_state); SendFeedbackState(); orient_dirty = false; } }); timer->start(SETSU_UPDATE_INTERVAL_MS); #endif key_map = connect_info.key_map; if(connect_info.enable_dualsense) { InitHaptics(); } UpdateGamepads(); } StreamSession::~StreamSession() { chiaki_session_join(&session); chiaki_session_fini(&session); chiaki_opus_decoder_fini(&opus_decoder); #if CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER for(auto controller : controllers) delete controller; #endif #if CHIAKI_GUI_ENABLE_SETSU setsu_free(setsu); #endif #if CHIAKI_LIB_ENABLE_PI_DECODER if(pi_decoder) { chiaki_pi_decoder_fini(pi_decoder); free(pi_decoder); } #endif if(ffmpeg_decoder) { chiaki_ffmpeg_decoder_fini(ffmpeg_decoder); delete ffmpeg_decoder; } if(haptics_output > 0) { SDL_CloseAudioDevice(haptics_output); haptics_output = 0; } if(haptics_resampler_buf) { free(haptics_resampler_buf); haptics_resampler_buf = nullptr; } } void StreamSession::Start() { ChiakiErrorCode err = chiaki_session_start(&session); if(err != CHIAKI_ERR_SUCCESS) { chiaki_session_fini(&session); throw ChiakiException("Chiaki Session Start failed"); } } void StreamSession::Stop() { chiaki_session_stop(&session); } void StreamSession::GoToBed() { chiaki_session_goto_bed(&session); } void StreamSession::SetLoginPIN(const QString &pin) { QByteArray data = pin.toUtf8(); chiaki_session_set_login_pin(&session, (const uint8_t *)data.constData(), data.size()); } bool StreamSession::HandleMouseEvent(QMouseEvent *event) { if(event->button() != Qt::MouseButton::LeftButton) return false; if(event->type() == QEvent::MouseButtonPress) keyboard_state.buttons |= CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; else keyboard_state.buttons &= ~CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; SendFeedbackState(); return true; } void StreamSession::HandleKeyboardEvent(QKeyEvent *event) { if(key_map.contains(Qt::Key(event->key())) == false) return; if(event->isAutoRepeat()) return; int button = key_map[Qt::Key(event->key())]; bool press_event = event->type() == QEvent::Type::KeyPress; switch(button) { case CHIAKI_CONTROLLER_ANALOG_BUTTON_L2: keyboard_state.l2_state = press_event ? 0xff : 0; break; case CHIAKI_CONTROLLER_ANALOG_BUTTON_R2: keyboard_state.r2_state = press_event ? 0xff : 0; break; case static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_Y_UP): keyboard_state.right_y = press_event ? -0x7fff : 0; break; case static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_Y_DOWN): keyboard_state.right_y = press_event ? 0x7fff : 0; break; case static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_X_UP): keyboard_state.right_x = press_event ? 0x7fff : 0; break; case static_cast(ControllerButtonExt::ANALOG_STICK_RIGHT_X_DOWN): keyboard_state.right_x = press_event ? -0x7fff : 0; break; case static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_Y_UP): keyboard_state.left_y = press_event ? -0x7fff : 0; break; case static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_Y_DOWN): keyboard_state.left_y = press_event ? 0x7fff : 0; break; case static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_X_UP): keyboard_state.left_x = press_event ? 0x7fff : 0; break; case static_cast(ControllerButtonExt::ANALOG_STICK_LEFT_X_DOWN): keyboard_state.left_x = press_event ? -0x7fff : 0; break; default: if(press_event) keyboard_state.buttons |= button; else keyboard_state.buttons &= ~button; break; } SendFeedbackState(); } void StreamSession::UpdateGamepads() { #if CHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER for(auto controller_id : controllers.keys()) { auto controller = controllers[controller_id]; if(!controller->IsConnected()) { CHIAKI_LOGI(log.GetChiakiLog(), "Controller %d disconnected", controller->GetDeviceID()); controllers.remove(controller_id); if(controller->IsDualSense()) DisconnectHaptics(); delete controller; } } const auto available_controllers = ControllerManager::GetInstance()->GetAvailableControllers(); for(auto controller_id : available_controllers) { if(!controllers.contains(controller_id)) { auto controller = ControllerManager::GetInstance()->OpenController(controller_id); if(!controller) { CHIAKI_LOGE(log.GetChiakiLog(), "Failed to open controller %d", controller_id); continue; } CHIAKI_LOGI(log.GetChiakiLog(), "Controller %d opened: \"%s\"", controller_id, controller->GetName().toLocal8Bit().constData()); connect(controller, &Controller::StateChanged, this, &StreamSession::SendFeedbackState); controllers[controller_id] = controller; if(controller->IsDualSense()) { // Connect haptics audio device with a delay to give the sound system time to set up QTimer::singleShot(1000, this, &StreamSession::ConnectHaptics); } } } SendFeedbackState(); #endif } void StreamSession::SendFeedbackState() { ChiakiControllerState state; chiaki_controller_state_set_idle(&state); #if CHIAKI_GUI_ENABLE_SETSU // setsu is the one that potentially has gyro/accel/orient so copy that directly first state = setsu_state; #endif for(auto controller : controllers) { auto controller_state = controller->GetState(); chiaki_controller_state_or(&state, &state, &controller_state); } chiaki_controller_state_or(&state, &state, &keyboard_state); chiaki_session_set_controller_state(&session, &state); } void StreamSession::InitAudio(unsigned int channels, unsigned int rate) { delete audio_output; audio_output = nullptr; audio_io = nullptr; QAudioFormat audio_format; audio_format.setSampleRate(rate); audio_format.setChannelCount(channels); audio_format.setSampleSize(16); audio_format.setCodec("audio/pcm"); audio_format.setSampleType(QAudioFormat::SignedInt); QAudioDeviceInfo audio_device_info = audio_out_device_info; if(!audio_device_info.isFormatSupported(audio_format)) { CHIAKI_LOGE(log.GetChiakiLog(), "Audio Format with %u channels @ %u Hz not supported by Audio Device %s", channels, rate, audio_device_info.deviceName().toLocal8Bit().constData()); return; } audio_output = new QAudioOutput(audio_device_info, audio_format, this); audio_output->setBufferSize(audio_buffer_size); audio_io = audio_output->start(); CHIAKI_LOGI(log.GetChiakiLog(), "Audio Device %s opened with %u channels @ %u Hz, buffer size %u", audio_device_info.deviceName().toLocal8Bit().constData(), channels, rate, audio_output->bufferSize()); } void StreamSession::InitHaptics() { haptics_output = 0; haptics_resampler_buf = nullptr; #ifdef Q_OS_LINUX // Haptics work most reliably with Pipewire, so try to use that if available SDL_SetHint("SDL_AUDIODRIVER", "pipewire"); #endif if(SDL_Init(SDL_INIT_AUDIO) < 0) { CHIAKI_LOGE(log.GetChiakiLog(), "Could not initialize SDL Audio for haptics output: %s", SDL_GetError()); return; } #ifdef Q_OS_LINUX if(!strstr(SDL_GetCurrentAudioDriver(), "pipewire")) { CHIAKI_LOGW( log.GetChiakiLog(), "Haptics output is not using Pipewire, this may not work reliably. (was: '%s')", SDL_GetCurrentAudioDriver()); } #endif SDL_AudioCVT cvt; SDL_BuildAudioCVT(&cvt, AUDIO_S16LSB, 4, 3000, AUDIO_S16LSB, 4, 48000); cvt.len = 240; // 10 16bit stereo samples haptics_resampler_buf = (uint8_t*) calloc(cvt.len * cvt.len_mult, sizeof(uint8_t)); } void StreamSession::DisconnectHaptics() { if(this->haptics_output > 0) { SDL_CloseAudioDevice(haptics_output); this->haptics_output = 0; } } void StreamSession::ConnectHaptics() { if(this->haptics_output > 0) { CHIAKI_LOGW(this->log.GetChiakiLog(), "Haptics already connected to an attached DualSense controller, ignoring additional controllers."); return; } SDL_AudioSpec want, have; SDL_zero(want); want.freq = 48000; want.format = AUDIO_S16LSB; want.channels = 4; want.samples = 480; // 10ms buffer want.callback = NULL; const char *device_name = nullptr; for(int i=0; i < SDL_GetNumAudioDevices(0); i++) { device_name = SDL_GetAudioDeviceName(i, 0); if(!device_name || !strstr(device_name, DUALSENSE_AUDIO_DEVICE_NEEDLE)) continue; haptics_output = SDL_OpenAudioDevice(device_name, 0, &want, &have, 0); if(haptics_output == 0) { CHIAKI_LOGE(log.GetChiakiLog(), "Could not open SDL Audio Device %s for haptics output: %s", device_name, SDL_GetError()); continue; } SDL_PauseAudioDevice(haptics_output, 0); CHIAKI_LOGI(log.GetChiakiLog(), "Haptics Audio Device '%s' opened with %d channels @ %d Hz, buffer size %u (driver=%s)", device_name, have.channels, have.freq, have.size, SDL_GetCurrentAudioDriver()); return; } CHIAKI_LOGW(log.GetChiakiLog(), "DualSense features were enabled and a DualSense is connected, but could not find the DualSense audio device!"); return; } void StreamSession::PushAudioFrame(int16_t *buf, size_t samples_count) { if(!audio_io) return; audio_io->write((const char *)buf, static_cast(samples_count * 2 * 2)); } void StreamSession::PushHapticsFrame(uint8_t *buf, size_t buf_size) { if(haptics_output == 0) return; SDL_AudioCVT cvt; // Haptics samples are coming in at 3KHZ, but the DualSense expects 48KHZ SDL_BuildAudioCVT(&cvt, AUDIO_S16LSB, 4, 3000, AUDIO_S16LSB, 4, 48000); cvt.len = buf_size * 2; cvt.buf = haptics_resampler_buf; // Remix to 4 channels for (int i=0; i < buf_size; i+=4) { SDL_memset(haptics_resampler_buf + i * 2, 0, 4); SDL_memcpy(haptics_resampler_buf + (i * 2) + 4, buf + i, 4); } // Resample to 48kHZ if(SDL_ConvertAudio(&cvt) != 0) { CHIAKI_LOGE(log.GetChiakiLog(), "Failed to resample haptics audio: %s", SDL_GetError()); return; } if(SDL_QueueAudio(haptics_output, cvt.buf, cvt.len_cvt) < 0) { CHIAKI_LOGE(log.GetChiakiLog(), "Failed to submit haptics audio to device: %s", SDL_GetError()); return; } } void StreamSession::Event(ChiakiEvent *event) { switch(event->type) { case CHIAKI_EVENT_CONNECTED: connected = true; break; case CHIAKI_EVENT_QUIT: connected = false; emit SessionQuit(event->quit.reason, event->quit.reason_str ? QString::fromUtf8(event->quit.reason_str) : QString()); break; case CHIAKI_EVENT_LOGIN_PIN_REQUEST: emit LoginPINRequested(event->login_pin_request.pin_incorrect); break; case CHIAKI_EVENT_RUMBLE: { uint8_t left = event->rumble.left; uint8_t right = event->rumble.right; QMetaObject::invokeMethod(this, [this, left, right]() { for(auto controller : controllers) controller->SetRumble(left, right); }); break; } case CHIAKI_EVENT_TRIGGER_EFFECTS: { uint8_t type_left = event->trigger_effects.type_left; uint8_t data_left[10]; memcpy(data_left, event->trigger_effects.left, 10); uint8_t data_right[10]; memcpy(data_right, event->trigger_effects.right, 10); uint8_t type_right = event->trigger_effects.type_right; QMetaObject::invokeMethod(this, [this, type_left, data_left, type_right, data_right]() { for(auto controller : controllers) controller->SetTriggerEffects(type_left, data_left, type_right, data_right); }); break; } default: break; } } #if CHIAKI_GUI_ENABLE_SETSU void StreamSession::HandleSetsuEvent(SetsuEvent *event) { if(!setsu) return; switch(event->type) { case SETSU_EVENT_DEVICE_ADDED: switch(event->dev_type) { case SETSU_DEVICE_TYPE_TOUCHPAD: // connect all the touchpads! if(setsu_connect(setsu, event->path, event->dev_type)) CHIAKI_LOGI(GetChiakiLog(), "Connected Setsu Touchpad Device %s", event->path); else CHIAKI_LOGE(GetChiakiLog(), "Failed to connect to Setsu Touchpad Device %s", event->path); break; case SETSU_DEVICE_TYPE_MOTION: // connect only one motion since multiple make no sense if(setsu_motion_device) { CHIAKI_LOGI(GetChiakiLog(), "Setsu Motion Device %s detected there is already one connected", event->path); break; } setsu_motion_device = setsu_connect(setsu, event->path, event->dev_type); if(setsu_motion_device) CHIAKI_LOGI(GetChiakiLog(), "Connected Setsu Motion Device %s", event->path); else CHIAKI_LOGE(GetChiakiLog(), "Failed to connect to Setsu Motion Device %s", event->path); break; } break; case SETSU_EVENT_DEVICE_REMOVED: switch(event->dev_type) { case SETSU_DEVICE_TYPE_TOUCHPAD: CHIAKI_LOGI(GetChiakiLog(), "Setsu Touchpad Device %s disconnected", event->path); for(auto it=setsu_ids.begin(); it!=setsu_ids.end();) { if(it.key().first == event->path) { chiaki_controller_state_stop_touch(&setsu_state, it.value()); setsu_ids.erase(it++); } else it++; } SendFeedbackState(); break; case SETSU_DEVICE_TYPE_MOTION: if(!setsu_motion_device || strcmp(setsu_device_get_path(setsu_motion_device), event->path)) break; CHIAKI_LOGI(GetChiakiLog(), "Setsu Motion Device %s disconnected", event->path); setsu_motion_device = nullptr; chiaki_orientation_tracker_init(&orient_tracker); orient_dirty = true; break; } break; case SETSU_EVENT_TOUCH_DOWN: break; case SETSU_EVENT_TOUCH_UP: for(auto it=setsu_ids.begin(); it!=setsu_ids.end(); it++) { if(it.key().first == setsu_device_get_path(event->dev) && it.key().second == event->touch.tracking_id) { chiaki_controller_state_stop_touch(&setsu_state, it.value()); setsu_ids.erase(it); break; } } SendFeedbackState(); break; case SETSU_EVENT_TOUCH_POSITION: { QPair k = { setsu_device_get_path(event->dev), event->touch.tracking_id }; auto it = setsu_ids.find(k); if(it == setsu_ids.end()) { int8_t cid = chiaki_controller_state_start_touch(&setsu_state, event->touch.x, event->touch.y); if(cid >= 0) setsu_ids[k] = (uint8_t)cid; else break; } else chiaki_controller_state_set_touch_pos(&setsu_state, it.value(), event->touch.x, event->touch.y); SendFeedbackState(); break; } case SETSU_EVENT_BUTTON_DOWN: setsu_state.buttons |= CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; break; case SETSU_EVENT_BUTTON_UP: setsu_state.buttons &= ~CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; break; case SETSU_EVENT_MOTION: chiaki_orientation_tracker_update(&orient_tracker, event->motion.gyro_x, event->motion.gyro_y, event->motion.gyro_z, event->motion.accel_x, event->motion.accel_y, event->motion.accel_z, event->motion.timestamp); orient_dirty = true; break; } } #endif void StreamSession::TriggerFfmpegFrameAvailable() { emit FfmpegFrameAvailable(); } class StreamSessionPrivate { public: static void InitAudio(StreamSession *session, uint32_t channels, uint32_t rate) { QMetaObject::invokeMethod(session, "InitAudio", Qt::ConnectionType::BlockingQueuedConnection, Q_ARG(unsigned int, channels), Q_ARG(unsigned int, rate)); } static void PushAudioFrame(StreamSession *session, int16_t *buf, size_t samples_count) { session->PushAudioFrame(buf, samples_count); } static void PushHapticsFrame(StreamSession *session, uint8_t *buf, size_t buf_size) { session->PushHapticsFrame(buf, buf_size); } static void Event(StreamSession *session, ChiakiEvent *event) { session->Event(event); } #if CHIAKI_GUI_ENABLE_SETSU static void HandleSetsuEvent(StreamSession *session, SetsuEvent *event) { session->HandleSetsuEvent(event); } #endif static void TriggerFfmpegFrameAvailable(StreamSession *session) { session->TriggerFfmpegFrameAvailable(); } }; static void AudioSettingsCb(uint32_t channels, uint32_t rate, void *user) { auto session = reinterpret_cast(user); StreamSessionPrivate::InitAudio(session, channels, rate); } static void AudioFrameCb(int16_t *buf, size_t samples_count, void *user) { auto session = reinterpret_cast(user); StreamSessionPrivate::PushAudioFrame(session, buf, samples_count); } static void HapticsFrameCb(uint8_t *buf, size_t buf_size, void *user) { auto session = reinterpret_cast(user); StreamSessionPrivate::PushHapticsFrame(session, buf, buf_size); } static void EventCb(ChiakiEvent *event, void *user) { auto session = reinterpret_cast(user); StreamSessionPrivate::Event(session, event); } #if CHIAKI_GUI_ENABLE_SETSU static void SessionSetsuCb(SetsuEvent *event, void *user) { auto session = reinterpret_cast(user); StreamSessionPrivate::HandleSetsuEvent(session, event); } #endif static void FfmpegFrameCb(ChiakiFfmpegDecoder *decoder, void *user) { auto session = reinterpret_cast(user); StreamSessionPrivate::TriggerFfmpegFrameAvailable(session); } chiaki-v2.2.0/gui/src/streamwindow.cpp000066400000000000000000000162321447035777400177610ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include #include StreamWindow::StreamWindow(const StreamSessionConnectInfo &connect_info, QWidget *parent) : QMainWindow(parent), connect_info(connect_info) { setAttribute(Qt::WA_DeleteOnClose); setWindowTitle(qApp->applicationName() + " | Stream"); session = nullptr; av_widget = nullptr; try { Init(); } catch(const Exception &e) { QMessageBox::critical(this, tr("Stream failed"), tr("Failed to initialize Stream Session: %1").arg(e.what())); close(); } } StreamWindow::~StreamWindow() { // make sure av_widget is always deleted before the session delete av_widget; } #include void StreamWindow::Init() { session = new StreamSession(connect_info, this); connect(session, &StreamSession::SessionQuit, this, &StreamWindow::SessionQuit); connect(session, &StreamSession::LoginPINRequested, this, &StreamWindow::LoginPINRequested); const QKeySequence fullscreen_shortcut = Qt::Key_F11; const QKeySequence stretch_shortcut = Qt::CTRL + Qt::Key_S; const QKeySequence zoom_shortcut = Qt::CTRL + Qt::Key_Z; fullscreen_action = new QAction(tr("Fullscreen"), this); fullscreen_action->setCheckable(true); fullscreen_action->setShortcut(fullscreen_shortcut); addAction(fullscreen_action); connect(fullscreen_action, &QAction::triggered, this, &StreamWindow::ToggleFullscreen); if(session->GetFfmpegDecoder()) { av_widget = new AVOpenGLWidget(session, this, connect_info.transform_mode); setCentralWidget(av_widget); av_widget->setContextMenuPolicy(Qt::CustomContextMenu); connect(av_widget, &QWidget::customContextMenuRequested, this, [this](const QPoint &pos) { av_widget->ResetMouseTimeout(); QMenu menu(av_widget); menu.addAction(fullscreen_action); menu.addSeparator(); menu.addAction(stretch_action); menu.addAction(zoom_action); releaseKeyboard(); connect(&menu, &QMenu::aboutToHide, this, [this] { grabKeyboard(); }); menu.exec(av_widget->mapToGlobal(pos)); }); } else { QWidget *bg_widget = new QWidget(this); bg_widget->setStyleSheet("background-color: black;"); setCentralWidget(bg_widget); } grabKeyboard(); session->Start(); stretch_action = new QAction(tr("Stretch"), this); stretch_action->setCheckable(true); stretch_action->setShortcut(stretch_shortcut); addAction(stretch_action); connect(stretch_action, &QAction::triggered, this, &StreamWindow::ToggleStretch); zoom_action = new QAction(tr("Zoom"), this); zoom_action->setCheckable(true); zoom_action->setShortcut(zoom_shortcut); addAction(zoom_action); connect(zoom_action, &QAction::triggered, this, &StreamWindow::ToggleZoom); auto quit_action = new QAction(tr("Quit"), this); quit_action->setShortcut(Qt::CTRL + Qt::Key_Q); addAction(quit_action); connect(quit_action, &QAction::triggered, this, &StreamWindow::Quit); resize(connect_info.video_profile.width, connect_info.video_profile.height); if(connect_info.fullscreen) { showFullScreen(); fullscreen_action->setChecked(true); } else show(); UpdateTransformModeActions(); } void StreamWindow::keyPressEvent(QKeyEvent *event) { if(session) session->HandleKeyboardEvent(event); } void StreamWindow::keyReleaseEvent(QKeyEvent *event) { if(session) session->HandleKeyboardEvent(event); } void StreamWindow::Quit() { close(); } void StreamWindow::mousePressEvent(QMouseEvent *event) { if(session && session->HandleMouseEvent(event)) return; QMainWindow::mousePressEvent(event); } void StreamWindow::mouseReleaseEvent(QMouseEvent *event) { if(session && session->HandleMouseEvent(event)) return; QMainWindow::mouseReleaseEvent(event); } void StreamWindow::mouseDoubleClickEvent(QMouseEvent *event) { if(event->button() == Qt::MouseButton::LeftButton) { ToggleFullscreen(); return; } QMainWindow::mouseDoubleClickEvent(event); } void StreamWindow::closeEvent(QCloseEvent *event) { if(session) { if(session->IsConnected()) { bool sleep = false; switch(connect_info.settings->GetDisconnectAction()) { case DisconnectAction::Ask: { auto res = QMessageBox::question(this, tr("Disconnect Session"), tr("Do you want the Console to go into sleep mode?"), QMessageBox::Yes | QMessageBox::No | QMessageBox::Cancel); switch(res) { case QMessageBox::Yes: sleep = true; break; case QMessageBox::Cancel: event->ignore(); return; default: break; } break; } case DisconnectAction::AlwaysSleep: sleep = true; break; default: break; } if(sleep) session->GoToBed(); } session->Stop(); } } void StreamWindow::SessionQuit(ChiakiQuitReason reason, const QString &reason_str) { if(chiaki_quit_reason_is_error(reason)) { QString m = tr("Chiaki Session has quit") + ":\n" + chiaki_quit_reason_string(reason); if(!reason_str.isEmpty()) m += "\n" + tr("Reason") + ": \"" + reason_str + "\""; QMessageBox::critical(this, tr("Session has quit"), m); } close(); } void StreamWindow::LoginPINRequested(bool incorrect) { auto dialog = new LoginPINDialog(incorrect, this); dialog->setAttribute(Qt::WA_DeleteOnClose); connect(dialog, &QDialog::finished, this, [this, dialog](int result) { grabKeyboard(); if(!session) return; if(result == QDialog::Accepted) session->SetLoginPIN(dialog->GetPIN()); else session->Stop(); }); releaseKeyboard(); dialog->show(); } void StreamWindow::ToggleFullscreen() { if(isFullScreen()) { showNormal(); fullscreen_action->setChecked(false); } else { showFullScreen(); if(av_widget) av_widget->HideMouse(); fullscreen_action->setChecked(true); } } void StreamWindow::UpdateTransformModeActions() { TransformMode tm = av_widget ? av_widget->GetTransformMode() : TransformMode::Fit; stretch_action->setChecked(tm == TransformMode::Stretch); zoom_action->setChecked(tm == TransformMode::Zoom); } void StreamWindow::ToggleStretch() { if(!av_widget) return; av_widget->SetTransformMode( av_widget->GetTransformMode() == TransformMode::Stretch ? TransformMode::Fit : TransformMode::Stretch); UpdateTransformModeActions(); } void StreamWindow::ToggleZoom() { if(!av_widget) return; av_widget->SetTransformMode( av_widget->GetTransformMode() == TransformMode::Zoom ? TransformMode::Fit : TransformMode::Zoom); UpdateTransformModeActions(); } void StreamWindow::resizeEvent(QResizeEvent *event) { UpdateVideoTransform(); QMainWindow::resizeEvent(event); } void StreamWindow::moveEvent(QMoveEvent *event) { UpdateVideoTransform(); QMainWindow::moveEvent(event); } void StreamWindow::changeEvent(QEvent *event) { if(event->type() == QEvent::ActivationChange) UpdateVideoTransform(); QMainWindow::changeEvent(event); } void StreamWindow::UpdateVideoTransform() { #if CHIAKI_LIB_ENABLE_PI_DECODER ChiakiPiDecoder *pi_decoder = session->GetPiDecoder(); if(pi_decoder) { QRect r = geometry(); chiaki_pi_decoder_set_params(pi_decoder, r.x(), r.y(), r.width(), r.height(), isActiveWindow()); } #endif } chiaki-v2.2.0/lib/000077500000000000000000000000001447035777400137215ustar00rootroot00000000000000chiaki-v2.2.0/lib/CMakeLists.txt000066400000000000000000000101301447035777400164540ustar00rootroot00000000000000 set(HEADER_FILES include/chiaki/session.h include/chiaki/common.h include/chiaki/sock.h include/chiaki/thread.h include/chiaki/base64.h include/chiaki/http.h include/chiaki/log.h include/chiaki/ctrl.h include/chiaki/rpcrypt.h include/chiaki/takion.h include/chiaki/senkusha.h include/chiaki/streamconnection.h include/chiaki/ecdh.h include/chiaki/launchspec.h include/chiaki/random.h include/chiaki/gkcrypt.h include/chiaki/audio.h include/chiaki/audioreceiver.h include/chiaki/video.h include/chiaki/videoreceiver.h include/chiaki/frameprocessor.h include/chiaki/packetstats.h include/chiaki/seqnum.h include/chiaki/discovery.h include/chiaki/congestioncontrol.h include/chiaki/stoppipe.h include/chiaki/reorderqueue.h include/chiaki/discoveryservice.h include/chiaki/feedback.h include/chiaki/feedbacksender.h include/chiaki/controller.h include/chiaki/takionsendbuffer.h include/chiaki/time.h include/chiaki/fec.h include/chiaki/regist.h include/chiaki/opusdecoder.h include/chiaki/orientation.h) set(SOURCE_FILES src/common.c src/sock.c src/session.c src/thread.c src/base64.c src/http.c src/log.c src/ctrl.c src/rpcrypt.c src/takion.c src/senkusha.c src/utils.h src/pb_utils.h src/streamconnection.c src/ecdh.c src/launchspec.c src/random.c src/gkcrypt.c src/audio.c src/audioreceiver.c src/videoreceiver.c src/frameprocessor.c src/packetstats.c src/discovery.c src/congestioncontrol.c src/stoppipe.c src/reorderqueue.c src/discoveryservice.c src/feedback.c src/feedbacksender.c src/controller.c src/takionsendbuffer.c src/time.c src/fec.c src/regist.c src/opusdecoder.c src/orientation.c) if(CHIAKI_ENABLE_FFMPEG_DECODER) list(APPEND HEADER_FILES include/chiaki/ffmpegdecoder.h) list(APPEND SOURCE_FILES src/ffmpegdecoder.c) endif() set(CHIAKI_LIB_ENABLE_PI_DECODER "${CHIAKI_ENABLE_FFMPEG_DECODER}") if(CHIAKI_ENABLE_PI_DECODER) list(APPEND HEADER_FILES include/chiaki/pidecoder.h) list(APPEND SOURCE_FILES src/pidecoder.c) endif() set(CHIAKI_LIB_ENABLE_PI_DECODER "${CHIAKI_ENABLE_PI_DECODER}") add_subdirectory(protobuf) set_source_files_properties(${CHIAKI_LIB_PROTO_SOURCE_FILES} ${CHIAKI_LIB_PROTO_HEADER_FILES} PROPERTIES GENERATED TRUE) include_directories("${CHIAKI_LIB_PROTO_INCLUDE_DIR}") if(CHIAKI_LIB_ENABLE_OPUS) find_package(Opus REQUIRED) include_directories(${Opus_INCLUDE_DIRS}) endif() add_library(chiaki-lib ${HEADER_FILES} ${SOURCE_FILES} ${CHIAKI_LIB_PROTO_SOURCE_FILES} ${CHIAKI_LIB_PROTO_HEADER_FILES}) configure_file(config.h.in include/chiaki/config.h) target_include_directories(chiaki-lib PUBLIC "${CMAKE_CURRENT_BINARY_DIR}/include") if(CMAKE_C_COMPILER_ID STREQUAL GNU OR CMAKE_C_COMPILER_ID STREQUAL Clang) target_compile_options(chiaki-lib PRIVATE -Wall) endif() add_dependencies(chiaki-lib chiaki-pb) set_target_properties(chiaki-lib PROPERTIES OUTPUT_NAME chiaki) if(WIN32) target_link_libraries(chiaki-lib wsock32 ws2_32 bcrypt) endif() target_include_directories(chiaki-lib PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/include") find_package(Threads REQUIRED) target_link_libraries(chiaki-lib Threads::Threads) if(CHIAKI_LIB_ENABLE_MBEDTLS) if(CHIAKI_LIB_MBEDTLS_EXTERNAL_PROJECT) target_link_libraries(chiaki-lib mbedtls mbedx509 mbedcrypto) else() # provided by mbedtls-static (mbedtls-devel) find_library(MBEDTLS mbedtls) find_library(MBEDX509 mbedx509) find_library(MBEDCRYPTO mbedcrypto) target_link_libraries(chiaki-lib ${MBEDTLS} ${MBEDX509} ${MBEDCRYPTO}) endif() elseif(CHIAKI_LIB_OPENSSL_EXTERNAL_PROJECT) target_link_libraries(chiaki-lib OpenSSL_Crypto) else() # default find_package(OpenSSL REQUIRED) target_link_libraries(chiaki-lib OpenSSL::Crypto) endif() target_link_libraries(chiaki-lib Nanopb::nanopb) target_link_libraries(chiaki-lib Jerasure::Jerasure) if(CHIAKI_ENABLE_FFMPEG_DECODER) target_link_libraries(chiaki-lib FFMPEG::avcodec FFMPEG::avutil) endif() if(CHIAKI_ENABLE_PI_DECODER) target_link_libraries(chiaki-lib ILClient::ILClient) endif() if(CHIAKI_LIB_ENABLE_OPUS) target_link_libraries(chiaki-lib ${Opus_LIBRARIES}) endif() chiaki-v2.2.0/lib/config.h.in000066400000000000000000000003341447035777400157440ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_CONFIG_H #define CHIAKI_CONFIG_H #cmakedefine01 CHIAKI_LIB_ENABLE_OPUS #cmakedefine01 CHIAKI_LIB_ENABLE_PI_DECODER #endif // CHIAKI_CONFIG_H chiaki-v2.2.0/lib/include/000077500000000000000000000000001447035777400153445ustar00rootroot00000000000000chiaki-v2.2.0/lib/include/chiaki/000077500000000000000000000000001447035777400165745ustar00rootroot00000000000000chiaki-v2.2.0/lib/include/chiaki/audio.h000066400000000000000000000015071447035777400200510ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_AUDIO_H #define CHIAKI_AUDIO_H #include #ifndef _WIN32 #include #endif #include "common.h" #ifdef __cplusplus extern "C" { #endif #define CHIAKI_AUDIO_HEADER_SIZE 0xe typedef struct chiaki_audio_header_t { uint8_t channels; uint8_t bits; uint32_t rate; uint32_t frame_size; uint32_t unknown; } ChiakiAudioHeader; CHIAKI_EXPORT void chiaki_audio_header_load(ChiakiAudioHeader *audio_header, const uint8_t *buf); CHIAKI_EXPORT void chiaki_audio_header_save(ChiakiAudioHeader *audio_header, uint8_t *buf); static inline size_t chiaki_audio_header_frame_buf_size(ChiakiAudioHeader *audio_header) { return audio_header->frame_size * audio_header->channels * sizeof(int16_t); } #ifdef __cplusplus } #endif #endif // CHIAKI_AUDIO_H chiaki-v2.2.0/lib/include/chiaki/audioreceiver.h000066400000000000000000000040601447035777400215730ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_AUDIORECEIVER_H #define CHIAKI_AUDIORECEIVER_H #include "common.h" #include "log.h" #include "audio.h" #include "takion.h" #include "thread.h" #include "packetstats.h" #ifdef __cplusplus extern "C" { #endif typedef void (*ChiakiAudioSinkHeader)(ChiakiAudioHeader *header, void *user); typedef void (*ChiakiAudioSinkFrame)(uint8_t *buf, size_t buf_size, void *user); /** * Sink that receives Audio encoded as Opus */ typedef struct chiaki_audio_sink_t { void *user; ChiakiAudioSinkHeader header_cb; ChiakiAudioSinkFrame frame_cb; } ChiakiAudioSink; typedef struct chiaki_audio_receiver_t { struct chiaki_session_t *session; ChiakiLog *log; ChiakiMutex mutex; ChiakiSeqNum16 frame_index_prev; bool frame_index_startup; // whether frame_index_prev has definitely not wrapped yet ChiakiPacketStats *packet_stats; } ChiakiAudioReceiver; CHIAKI_EXPORT ChiakiErrorCode chiaki_audio_receiver_init(ChiakiAudioReceiver *audio_receiver, struct chiaki_session_t *session, ChiakiPacketStats *packet_stats); CHIAKI_EXPORT void chiaki_audio_receiver_fini(ChiakiAudioReceiver *audio_receiver); CHIAKI_EXPORT void chiaki_audio_receiver_stream_info(ChiakiAudioReceiver *audio_receiver, ChiakiAudioHeader *audio_header); CHIAKI_EXPORT void chiaki_audio_receiver_av_packet(ChiakiAudioReceiver *audio_receiver, ChiakiTakionAVPacket *packet); static inline ChiakiAudioReceiver *chiaki_audio_receiver_new(struct chiaki_session_t *session, ChiakiPacketStats *packet_stats) { ChiakiAudioReceiver *audio_receiver = CHIAKI_NEW(ChiakiAudioReceiver); if(!audio_receiver) return NULL; ChiakiErrorCode err = chiaki_audio_receiver_init(audio_receiver, session, packet_stats); if(err != CHIAKI_ERR_SUCCESS) { free(audio_receiver); return NULL; } return audio_receiver; } static inline void chiaki_audio_receiver_free(ChiakiAudioReceiver *audio_receiver) { if(!audio_receiver) return; chiaki_audio_receiver_fini(audio_receiver); free(audio_receiver); } #ifdef __cplusplus } #endif #endif // CHIAKI_AUDIORECEIVER_H chiaki-v2.2.0/lib/include/chiaki/base64.h000066400000000000000000000010111447035777400200220ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_BASE64_H #define CHIAKI_BASE64_H #include "common.h" #include #include #include #ifdef __cplusplus extern "C" { #endif CHIAKI_EXPORT ChiakiErrorCode chiaki_base64_encode(const uint8_t *in, size_t in_size, char *out, size_t out_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_base64_decode(const char *in, size_t in_size, uint8_t *out, size_t *out_size); #ifdef __cplusplus } #endif #endif // CHIAKI_BASE64_H chiaki-v2.2.0/lib/include/chiaki/common.h000066400000000000000000000047671447035777400202530ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_COMMON_H #define CHIAKI_COMMON_H #ifdef _WIN32 #ifndef WIN32_LEAN_AND_MEAN #define WIN32_LEAN_AND_MEAN #endif #endif #include #include #include #ifdef __cplusplus extern "C" { #endif #ifdef __GNUC__ typedef uint32_t chiaki_unaligned_uint32_t __attribute__((aligned(1))); typedef uint16_t chiaki_unaligned_uint16_t __attribute__((aligned(1))); #else typedef uint32_t chiaki_unaligned_uint32_t; typedef uint16_t chiaki_unaligned_uint16_t; #endif #define CHIAKI_EXPORT #define CHIAKI_NEW(t) ((t*)malloc(sizeof(t))) typedef enum { CHIAKI_ERR_SUCCESS = 0, CHIAKI_ERR_UNKNOWN, CHIAKI_ERR_PARSE_ADDR, CHIAKI_ERR_THREAD, CHIAKI_ERR_MEMORY, CHIAKI_ERR_OVERFLOW, CHIAKI_ERR_NETWORK, CHIAKI_ERR_CONNECTION_REFUSED, CHIAKI_ERR_HOST_DOWN, CHIAKI_ERR_HOST_UNREACH, CHIAKI_ERR_DISCONNECTED, CHIAKI_ERR_INVALID_DATA, CHIAKI_ERR_BUF_TOO_SMALL, CHIAKI_ERR_MUTEX_LOCKED, CHIAKI_ERR_CANCELED, CHIAKI_ERR_TIMEOUT, CHIAKI_ERR_INVALID_RESPONSE, CHIAKI_ERR_INVALID_MAC, CHIAKI_ERR_UNINITIALIZED, CHIAKI_ERR_FEC_FAILED, CHIAKI_ERR_VERSION_MISMATCH } ChiakiErrorCode; CHIAKI_EXPORT const char *chiaki_error_string(ChiakiErrorCode code); CHIAKI_EXPORT void *chiaki_aligned_alloc(size_t alignment, size_t size); CHIAKI_EXPORT void chiaki_aligned_free(void *ptr); typedef enum { // values must not change CHIAKI_TARGET_PS4_UNKNOWN = 0, CHIAKI_TARGET_PS4_8 = 800, CHIAKI_TARGET_PS4_9 = 900, CHIAKI_TARGET_PS4_10 = 1000, CHIAKI_TARGET_PS5_UNKNOWN = 1000000, CHIAKI_TARGET_PS5_1 = 1000100 } ChiakiTarget; static inline bool chiaki_target_is_unknown(ChiakiTarget target) { return target == CHIAKI_TARGET_PS5_UNKNOWN || target == CHIAKI_TARGET_PS4_UNKNOWN; } static inline bool chiaki_target_is_ps5(ChiakiTarget target) { return target >= CHIAKI_TARGET_PS5_UNKNOWN; } /** * Perform initialization of global state needed for using the Chiaki lib */ CHIAKI_EXPORT ChiakiErrorCode chiaki_lib_init(); typedef enum { // values must not change CHIAKI_CODEC_H264 = 0, CHIAKI_CODEC_H265 = 1, CHIAKI_CODEC_H265_HDR = 2 } ChiakiCodec; static inline bool chiaki_codec_is_h265(ChiakiCodec codec) { return codec == CHIAKI_CODEC_H265 || codec == CHIAKI_CODEC_H265_HDR; } static inline bool chiaki_codec_is_hdr(ChiakiCodec codec) { return codec == CHIAKI_CODEC_H265_HDR; } CHIAKI_EXPORT const char *chiaki_codec_name(ChiakiCodec codec); #ifdef __cplusplus } #endif #endif // CHIAKI_COMMON_H chiaki-v2.2.0/lib/include/chiaki/config.h000066400000000000000000000003221447035777400202070ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_CONFIG_H #define CHIAKI_CONFIG_H #define CHIAKI_LIB_ENABLE_OPUS 1 #define CHIAKI_LIB_ENABLE_PI_DECODER 0 #endif // CHIAKI_CONFIG_H chiaki-v2.2.0/lib/include/chiaki/congestioncontrol.h000066400000000000000000000014001447035777400225110ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_CONGESTIONCONTROL_H #define CHIAKI_CONGESTIONCONTROL_H #include "takion.h" #include "thread.h" #include "packetstats.h" #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_congestion_control_t { ChiakiTakion *takion; ChiakiPacketStats *stats; ChiakiThread thread; ChiakiBoolPredCond stop_cond; } ChiakiCongestionControl; CHIAKI_EXPORT ChiakiErrorCode chiaki_congestion_control_start(ChiakiCongestionControl *control, ChiakiTakion *takion, ChiakiPacketStats *stats); /** * Stop control and join the thread */ CHIAKI_EXPORT ChiakiErrorCode chiaki_congestion_control_stop(ChiakiCongestionControl *control); #ifdef __cplusplus } #endif #endif // CHIAKI_CONGESTIONCONTROL_H chiaki-v2.2.0/lib/include/chiaki/controller.h000066400000000000000000000054021447035777400211310ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_CONTROLLER_H #define CHIAKI_CONTROLLER_H #include #include #include "common.h" #ifdef __cplusplus extern "C" { #endif typedef enum chiaki_controller_button_t { CHIAKI_CONTROLLER_BUTTON_CROSS = (1 << 0), CHIAKI_CONTROLLER_BUTTON_MOON = (1 << 1), CHIAKI_CONTROLLER_BUTTON_BOX = (1 << 2), CHIAKI_CONTROLLER_BUTTON_PYRAMID = (1 << 3), CHIAKI_CONTROLLER_BUTTON_DPAD_LEFT = (1 << 4), CHIAKI_CONTROLLER_BUTTON_DPAD_RIGHT = (1 << 5), CHIAKI_CONTROLLER_BUTTON_DPAD_UP = (1 << 6), CHIAKI_CONTROLLER_BUTTON_DPAD_DOWN = (1 << 7), CHIAKI_CONTROLLER_BUTTON_L1 = (1 << 8), CHIAKI_CONTROLLER_BUTTON_R1 = (1 << 9), CHIAKI_CONTROLLER_BUTTON_L3 = (1 << 10), CHIAKI_CONTROLLER_BUTTON_R3 = (1 << 11), CHIAKI_CONTROLLER_BUTTON_OPTIONS = (1 << 12), CHIAKI_CONTROLLER_BUTTON_SHARE = (1 << 13), CHIAKI_CONTROLLER_BUTTON_TOUCHPAD = (1 << 14), CHIAKI_CONTROLLER_BUTTON_PS = (1 << 15) } ChiakiControllerButton; #define CHIAKI_CONTROLLER_BUTTONS_COUNT 16 typedef enum chiaki_controller_analog_button_t { // must not overlap with ChiakiControllerButton CHIAKI_CONTROLLER_ANALOG_BUTTON_L2 = (1 << 16), CHIAKI_CONTROLLER_ANALOG_BUTTON_R2 = (1 << 17) } ChiakiControllerAnalogButton; typedef struct chiaki_controller_touch_t { uint16_t x, y; int8_t id; // -1 = up } ChiakiControllerTouch; #define CHIAKI_CONTROLLER_TOUCHES_MAX 2 typedef struct chiaki_controller_state_t { /** * Bitmask of ChiakiControllerButton */ uint32_t buttons; uint8_t l2_state; uint8_t r2_state; int16_t left_x; int16_t left_y; int16_t right_x; int16_t right_y; uint8_t touch_id_next; ChiakiControllerTouch touches[CHIAKI_CONTROLLER_TOUCHES_MAX]; float gyro_x, gyro_y, gyro_z; float accel_x, accel_y, accel_z; float orient_x, orient_y, orient_z, orient_w; } ChiakiControllerState; CHIAKI_EXPORT void chiaki_controller_state_set_idle(ChiakiControllerState *state); /** * @return A non-negative newly allocated touch id allocated or -1 if there are no slots left */ CHIAKI_EXPORT int8_t chiaki_controller_state_start_touch(ChiakiControllerState *state, uint16_t x, uint16_t y); CHIAKI_EXPORT void chiaki_controller_state_stop_touch(ChiakiControllerState *state, uint8_t id); CHIAKI_EXPORT void chiaki_controller_state_set_touch_pos(ChiakiControllerState *state, uint8_t id, uint16_t x, uint16_t y); CHIAKI_EXPORT bool chiaki_controller_state_equals(ChiakiControllerState *a, ChiakiControllerState *b); /** * Union of two controller states. * Ignores gyro, accel and orient because it makes no sense there. */ CHIAKI_EXPORT void chiaki_controller_state_or(ChiakiControllerState *out, ChiakiControllerState *a, ChiakiControllerState *b); #ifdef __cplusplus } #endif #endif // CHIAKI_CONTROLLER_H chiaki-v2.2.0/lib/include/chiaki/ctrl.h000066400000000000000000000035121447035777400177120ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_CTRL_H #define CHIAKI_CTRL_H #include "common.h" #include "thread.h" #include "stoppipe.h" #include #include #if _WIN32 #include #endif #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_ctrl_message_queue_t ChiakiCtrlMessageQueue; typedef struct chiaki_ctrl_t { struct chiaki_session_t *session; ChiakiThread thread; bool should_stop; bool login_pin_entered; uint8_t *login_pin; size_t login_pin_size; ChiakiCtrlMessageQueue *msg_queue; ChiakiStopPipe notif_pipe; ChiakiMutex notif_mutex; bool login_pin_requested; chiaki_socket_t sock; #ifdef __GNUC__ __attribute__((aligned(__alignof__(uint32_t)))) #endif uint8_t recv_buf[512]; size_t recv_buf_size; uint64_t crypt_counter_local; uint64_t crypt_counter_remote; uint32_t keyboard_text_counter; } ChiakiCtrl; CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_init(ChiakiCtrl *ctrl, struct chiaki_session_t *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_start(ChiakiCtrl *ctrl); CHIAKI_EXPORT void chiaki_ctrl_stop(ChiakiCtrl *ctrl); CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_join(ChiakiCtrl *ctrl); CHIAKI_EXPORT void chiaki_ctrl_fini(ChiakiCtrl *ctrl); CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_send_message(ChiakiCtrl *ctrl, uint16_t type, const uint8_t *payload, size_t payload_size); CHIAKI_EXPORT void chiaki_ctrl_set_login_pin(ChiakiCtrl *ctrl, const uint8_t *pin, size_t pin_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_goto_bed(ChiakiCtrl *ctrl); CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_keyboard_set_text(ChiakiCtrl *ctrl, const char* text); CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_keyboard_accept(ChiakiCtrl *ctrl); CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_keyboard_reject(ChiakiCtrl *ctrl); #ifdef __cplusplus } #endif #endif // CHIAKI_CTRL_H chiaki-v2.2.0/lib/include/chiaki/discovery.h000066400000000000000000000067441447035777400207670ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_DISCOVERY_H #define CHIAKI_DISCOVERY_H #include "common.h" #include "thread.h" #include "stoppipe.h" #include "log.h" #ifdef _WIN32 #include #include typedef unsigned short sa_family_t; #else #include #include #endif #ifdef __cplusplus extern "C" { #endif #define CHIAKI_DISCOVERY_PORT_PS4 987 #define CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS4 "00020020" #define CHIAKI_DISCOVERY_PORT_PS5 9302 #define CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS5 "00030010" #define CHIAKI_DISCOVERY_PORT_LOCAL_MIN 9303 #define CHIAKI_DISCOVERY_PORT_LOCAL_MAX 9319 typedef enum chiaki_discovery_cmd_t { CHIAKI_DISCOVERY_CMD_SRCH, CHIAKI_DISCOVERY_CMD_WAKEUP } ChiakiDiscoveryCmd; typedef struct chiaki_discovery_packet_t { ChiakiDiscoveryCmd cmd; char *protocol_version; uint64_t user_credential; // for wakeup, this is just the regist key interpreted as hex } ChiakiDiscoveryPacket; typedef enum chiaki_discovery_host_state_t { CHIAKI_DISCOVERY_HOST_STATE_UNKNOWN, CHIAKI_DISCOVERY_HOST_STATE_READY, CHIAKI_DISCOVERY_HOST_STATE_STANDBY } ChiakiDiscoveryHostState; const char *chiaki_discovery_host_state_string(ChiakiDiscoveryHostState state); /** * Apply A on all names of string members in ChiakiDiscoveryHost */ #define CHIAKI_DISCOVERY_HOST_STRING_FOREACH(A) \ A(host_addr); \ A(system_version); \ A(device_discovery_protocol_version); \ A(host_name); \ A(host_type); \ A(host_id); \ A(running_app_titleid); \ A(running_app_name); typedef struct chiaki_discovery_host_t { // All string members here must be in sync with CHIAKI_DISCOVERY_HOST_STRING_FOREACH ChiakiDiscoveryHostState state; uint16_t host_request_port; #define STRING_MEMBER(name) const char *name CHIAKI_DISCOVERY_HOST_STRING_FOREACH(STRING_MEMBER) #undef STRING_MEMBER } ChiakiDiscoveryHost; CHIAKI_EXPORT bool chiaki_discovery_host_is_ps5(ChiakiDiscoveryHost *host); CHIAKI_EXPORT ChiakiTarget chiaki_discovery_host_system_version_target(ChiakiDiscoveryHost *host); CHIAKI_EXPORT int chiaki_discovery_packet_fmt(char *buf, size_t buf_size, ChiakiDiscoveryPacket *packet); typedef struct chiaki_discovery_t { ChiakiLog *log; chiaki_socket_t socket; struct sockaddr local_addr; } ChiakiDiscovery; CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_init(ChiakiDiscovery *discovery, ChiakiLog *log, sa_family_t family); CHIAKI_EXPORT void chiaki_discovery_fini(ChiakiDiscovery *discovery); CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_send(ChiakiDiscovery *discovery, ChiakiDiscoveryPacket *packet, struct sockaddr *addr, size_t addr_size); typedef void (*ChiakiDiscoveryCb)(ChiakiDiscoveryHost *host, void *user); typedef struct chiaki_discovery_thread_t { ChiakiDiscovery *discovery; ChiakiThread thread; ChiakiStopPipe stop_pipe; ChiakiDiscoveryCb cb; void *cb_user; } ChiakiDiscoveryThread; CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_thread_start(ChiakiDiscoveryThread *thread, ChiakiDiscovery *discovery, ChiakiDiscoveryCb cb, void *cb_user); CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_thread_stop(ChiakiDiscoveryThread *thread); /** * Convenience function to send a wakeup packet * @param discovery Discovery to send the packet on. May be NULL, in which case a new temporary Discovery will be created */ CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_wakeup(ChiakiLog *log, ChiakiDiscovery *discovery, const char *host, uint64_t user_credential, bool ps5); #ifdef __cplusplus } #endif #endif // CHIAKI_VIDEORECEIVER_H chiaki-v2.2.0/lib/include/chiaki/discoveryservice.h000066400000000000000000000025131447035777400223360ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_DISCOVERYSERVICE_H #define CHIAKI_DISCOVERYSERVICE_H #include "discovery.h" #ifdef __cplusplus extern "C" { #endif typedef void (*ChiakiDiscoveryServiceCb)(ChiakiDiscoveryHost *hosts, size_t hosts_count, void *user); typedef struct chiaki_discovery_service_options_t { size_t hosts_max; uint64_t host_drop_pings; uint64_t ping_ms; struct sockaddr *send_addr; size_t send_addr_size; ChiakiDiscoveryServiceCb cb; void *cb_user; } ChiakiDiscoveryServiceOptions; typedef struct chiaki_discovery_service_host_discovery_info_t { uint64_t last_ping_index; } ChiakiDiscoveryServiceHostDiscoveryInfo; typedef struct chiaki_discovery_service_t { ChiakiLog *log; ChiakiDiscoveryServiceOptions options; ChiakiDiscovery discovery; uint64_t ping_index; ChiakiDiscoveryHost *hosts; ChiakiDiscoveryServiceHostDiscoveryInfo *host_discovery_infos; size_t hosts_count; ChiakiMutex state_mutex; ChiakiThread thread; ChiakiBoolPredCond stop_cond; } ChiakiDiscoveryService; CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_service_init(ChiakiDiscoveryService *service, ChiakiDiscoveryServiceOptions *options, ChiakiLog *log); CHIAKI_EXPORT void chiaki_discovery_service_fini(ChiakiDiscoveryService *service); #ifdef __cplusplus } #endif #endif //CHIAKI_DISCOVERYSERVICE_H chiaki-v2.2.0/lib/include/chiaki/ecdh.h000066400000000000000000000027511447035777400176550ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_ECDH_H #define CHIAKI_ECDH_H #include "common.h" #include #include #ifdef __cplusplus extern "C" { #endif #ifdef CHIAKI_LIB_ENABLE_MBEDTLS #include "mbedtls/ecdh.h" #include "mbedtls/ctr_drbg.h" #endif #define CHIAKI_ECDH_SECRET_SIZE 32 typedef struct chiaki_ecdh_t { // the following lines may lead to memory corruption // CHIAKI_LIB_ENABLE_MBEDTLS must be defined // globally (whole project) #ifdef CHIAKI_LIB_ENABLE_MBEDTLS // mbedtls ecdh context mbedtls_ecdh_context ctx; // deterministic random bit generator mbedtls_ctr_drbg_context drbg; #else struct ec_group_st *group; struct ec_key_st *key_local; #endif } ChiakiECDH; CHIAKI_EXPORT ChiakiErrorCode chiaki_ecdh_init(ChiakiECDH *ecdh); CHIAKI_EXPORT void chiaki_ecdh_fini(ChiakiECDH *ecdh); CHIAKI_EXPORT ChiakiErrorCode chiaki_ecdh_get_local_pub_key(ChiakiECDH *ecdh, uint8_t *key_out, size_t *key_out_size, const uint8_t *handshake_key, uint8_t *sig_out, size_t *sig_out_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_ecdh_derive_secret(ChiakiECDH *ecdh, uint8_t *secret_out, const uint8_t *remote_key, size_t remote_key_size, const uint8_t *handshake_key, const uint8_t *remote_sig, size_t remote_sig_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_ecdh_set_local_key(ChiakiECDH *ecdh, const uint8_t *private_key, size_t private_key_size, const uint8_t *public_key, size_t public_key_size); #ifdef __cplusplus } #endif #endif // CHIAKI_ECDH_H chiaki-v2.2.0/lib/include/chiaki/fec.h000066400000000000000000000007631447035777400175100ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_FEC_H #define CHIAKI_FEC_H #include "common.h" #include #ifndef _WIN32 #include #endif #ifdef __cplusplus extern "C" { #endif #define CHIAKI_FEC_WORDSIZE 8 CHIAKI_EXPORT ChiakiErrorCode chiaki_fec_decode(uint8_t *frame_buf, size_t unit_size, size_t stride, unsigned int k, unsigned int m, const unsigned int *erasures, size_t erasures_count); #ifdef __cplusplus } #endif #endif //CHIAKI_FEC_H chiaki-v2.2.0/lib/include/chiaki/feedback.h000066400000000000000000000052661447035777400205020ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_FEEDBACK_H #define CHIAKI_FEEDBACK_H #include "common.h" #include "log.h" #include "controller.h" #include #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_feedback_state_t { float gyro_x, gyro_y, gyro_z; float accel_x, accel_y, accel_z; float orient_x, orient_y, orient_z, orient_w; int16_t left_x; int16_t left_y; int16_t right_x; int16_t right_y; } ChiakiFeedbackState; #define CHIAKI_FEEDBACK_STATE_BUF_SIZE_MAX 0x1c #define CHIAKI_FEEDBACK_STATE_BUF_SIZE_V9 0x19 /** * @param buf buffer of at least CHIAKI_FEEDBACK_STATE_BUF_SIZE_V9 */ CHIAKI_EXPORT void chiaki_feedback_state_format_v9(uint8_t *buf, ChiakiFeedbackState *state); #define CHIAKI_FEEDBACK_STATE_BUF_SIZE_V12 0x1c /** * @param buf buffer of at least CHIAKI_FEEDBACK_STATE_BUF_SIZE_V12 */ CHIAKI_EXPORT void chiaki_feedback_state_format_v12(uint8_t *buf, ChiakiFeedbackState *state); #define CHIAKI_HISTORY_EVENT_SIZE_MAX 0x5 typedef struct chiaki_feedback_history_event_t { uint8_t buf[CHIAKI_HISTORY_EVENT_SIZE_MAX]; size_t len; } ChiakiFeedbackHistoryEvent; /** * @param button ChiakiControllerButton or ChiakiControllerAnalogButton * @param state 0x0 for not pressed, 0xff for pressed, intermediate values for analog triggers */ CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_history_event_set_button(ChiakiFeedbackHistoryEvent *event, uint64_t button, uint8_t state); /** * @param pointer_id identifier for the touch from 0 to 127 * @param x from 0 to 1920 * @param y from 0 to 942 */ CHIAKI_EXPORT void chiaki_feedback_history_event_set_touchpad(ChiakiFeedbackHistoryEvent *event, bool down, uint8_t pointer_id, uint16_t x, uint16_t y); /** * Ring buffer of ChiakiFeedbackHistoryEvent */ typedef struct chiaki_feedback_history_buffer_t { ChiakiFeedbackHistoryEvent *events; size_t size; size_t begin; size_t len; } ChiakiFeedbackHistoryBuffer; CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_history_buffer_init(ChiakiFeedbackHistoryBuffer *feedback_history_buffer, size_t size); CHIAKI_EXPORT void chiaki_feedback_history_buffer_fini(ChiakiFeedbackHistoryBuffer *feedback_history_buffer); /** * @param buf_size Pointer to the allocated size of buf, will contain the written size after a successful formatting. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_history_buffer_format(ChiakiFeedbackHistoryBuffer *feedback_history_buffer, uint8_t *buf, size_t *buf_size); /** * Push an event to the front of the buffer */ CHIAKI_EXPORT void chiaki_feedback_history_buffer_push(ChiakiFeedbackHistoryBuffer *feedback_history_buffer, ChiakiFeedbackHistoryEvent *event); #ifdef __cplusplus } #endif #endif // CHIAKI_FEEDBACK_H chiaki-v2.2.0/lib/include/chiaki/feedbacksender.h000066400000000000000000000021051447035777400216700ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_FEEDBACKSENDER_H #define CHIAKI_FEEDBACKSENDER_H #include "controller.h" #include "takion.h" #include "thread.h" #include "common.h" #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_feedback_sender_t { ChiakiLog *log; ChiakiTakion *takion; ChiakiThread thread; ChiakiSeqNum16 state_seq_num; ChiakiSeqNum16 history_seq_num; ChiakiFeedbackHistoryBuffer history_buf; bool should_stop; ChiakiControllerState controller_state_prev; ChiakiControllerState controller_state; bool controller_state_changed; ChiakiMutex state_mutex; ChiakiCond state_cond; } ChiakiFeedbackSender; CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_sender_init(ChiakiFeedbackSender *feedback_sender, ChiakiTakion *takion); CHIAKI_EXPORT void chiaki_feedback_sender_fini(ChiakiFeedbackSender *feedback_sender); CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_sender_set_controller_state(ChiakiFeedbackSender *feedback_sender, ChiakiControllerState *state); #ifdef __cplusplus } #endif #endif // CHIAKI_FEEDBACKSENDER_H chiaki-v2.2.0/lib/include/chiaki/ffmpegdecoder.h000066400000000000000000000024511447035777400215410ustar00rootroot00000000000000#ifndef CHIAKI_FFMPEG_DECODER_H #define CHIAKI_FFMPEG_DECODER_H #include #include #include #ifdef __cplusplus extern "C" { #endif #include typedef struct chiaki_ffmpeg_decoder_t ChiakiFfmpegDecoder; typedef void (*ChiakiFfmpegFrameAvailable)(ChiakiFfmpegDecoder *decover, void *user); struct chiaki_ffmpeg_decoder_t { ChiakiLog *log; ChiakiMutex mutex; AVCodec *av_codec; AVCodecContext *codec_context; enum AVPixelFormat hw_pix_fmt; AVBufferRef *hw_device_ctx; ChiakiMutex cb_mutex; ChiakiFfmpegFrameAvailable frame_available_cb; void *frame_available_cb_user; }; CHIAKI_EXPORT ChiakiErrorCode chiaki_ffmpeg_decoder_init(ChiakiFfmpegDecoder *decoder, ChiakiLog *log, ChiakiCodec codec, const char *hw_decoder_name, ChiakiFfmpegFrameAvailable frame_available_cb, void *frame_available_cb_user); CHIAKI_EXPORT void chiaki_ffmpeg_decoder_fini(ChiakiFfmpegDecoder *decoder); CHIAKI_EXPORT bool chiaki_ffmpeg_decoder_video_sample_cb(uint8_t *buf, size_t buf_size, void *user); CHIAKI_EXPORT AVFrame *chiaki_ffmpeg_decoder_pull_frame(ChiakiFfmpegDecoder *decoder); CHIAKI_EXPORT enum AVPixelFormat chiaki_ffmpeg_decoder_get_pixel_format(ChiakiFfmpegDecoder *decoder); #ifdef __cplusplus } #endif #endif // CHIAKI_FFMPEG_DECODER_H chiaki-v2.2.0/lib/include/chiaki/frameprocessor.h000066400000000000000000000053351447035777400220050ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_FRAMEPROCESSOR_H #define CHIAKI_FRAMEPROCESSOR_H #include "common.h" #include "takion.h" #include "packetstats.h" #include #include #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_stream_stats_t { uint64_t frames; uint64_t bytes; } ChiakiStreamStats; CHIAKI_EXPORT void chiaki_stream_stats_reset(ChiakiStreamStats *stats); CHIAKI_EXPORT void chiaki_stream_stats_frame(ChiakiStreamStats *stats, uint64_t size); CHIAKI_EXPORT uint64_t chiaki_stream_stats_bitrate(ChiakiStreamStats *stats, uint64_t framerate); struct chiaki_frame_unit_t; typedef struct chiaki_frame_unit_t ChiakiFrameUnit; typedef struct chiaki_frame_processor_t { ChiakiLog *log; uint8_t *frame_buf; size_t frame_buf_size; size_t buf_size_per_unit; size_t buf_stride_per_unit; unsigned int units_source_expected; unsigned int units_fec_expected; unsigned int units_source_received; unsigned int units_fec_received; ChiakiFrameUnit *unit_slots; size_t unit_slots_size; bool flushed; // whether we have already flushed the current frame, i.e. are only interested in stats, not data. ChiakiStreamStats stream_stats; } ChiakiFrameProcessor; typedef enum chiaki_frame_flush_result_t { CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_SUCCESS = 0, CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FEC_SUCCESS = 1, CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FEC_FAILED = 2, CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FAILED = 3 } ChiakiFrameProcessorFlushResult; CHIAKI_EXPORT void chiaki_frame_processor_init(ChiakiFrameProcessor *frame_processor, ChiakiLog *log); CHIAKI_EXPORT void chiaki_frame_processor_fini(ChiakiFrameProcessor *frame_processor); CHIAKI_EXPORT void chiaki_frame_processor_report_packet_stats(ChiakiFrameProcessor *frame_processor, ChiakiPacketStats *packet_stats); CHIAKI_EXPORT ChiakiErrorCode chiaki_frame_processor_alloc_frame(ChiakiFrameProcessor *frame_processor, ChiakiTakionAVPacket *packet); CHIAKI_EXPORT ChiakiErrorCode chiaki_frame_processor_put_unit(ChiakiFrameProcessor *frame_processor, ChiakiTakionAVPacket *packet); /** * @param frame unless CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FAILED returned, will receive a pointer into the internal buffer of frame_processor. * MUST NOT be used after the next call to this frame processor! */ CHIAKI_EXPORT ChiakiFrameProcessorFlushResult chiaki_frame_processor_flush(ChiakiFrameProcessor *frame_processor, uint8_t **frame, size_t *frame_size); static inline bool chiaki_frame_processor_flush_possible(ChiakiFrameProcessor *frame_processor) { return frame_processor->units_source_received + frame_processor->units_fec_received >= frame_processor->units_source_expected; } #ifdef __cplusplus } #endif #endif // CHIAKI_FRAMEPROCESSOR_H chiaki-v2.2.0/lib/include/chiaki/gkcrypt.h000066400000000000000000000075201447035777400204340ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_GKCRYPT_H #define CHIAKI_GKCRYPT_H #include "common.h" #include "log.h" #include "thread.h" #include #include #ifdef __cplusplus extern "C" { #endif #define CHIAKI_GKCRYPT_BLOCK_SIZE 0x10 #define CHIAKI_GKCRYPT_KEY_BUF_BLOCKS_DEFAULT 0x20 // 2MB #define CHIAKI_GKCRYPT_GMAC_SIZE 4 #define CHIAKI_GKCRYPT_GMAC_KEY_REFRESH_KEY_POS 45000 #define CHIAKI_GKCRYPT_GMAC_KEY_REFRESH_IV_OFFSET 44910 typedef struct chiaki_key_state_t { uint64_t prev; } ChiakiKeyState; typedef struct chiaki_gkcrypt_t { uint8_t index; uint8_t *key_buf; // circular buffer of the ctr mode key stream size_t key_buf_size; size_t key_buf_populated; // size of key_buf that is already populated (on startup) uint64_t key_buf_key_pos_min; // minimal key pos currently in key_buf size_t key_buf_start_offset; // offset in key_buf of the minimal key pos uint64_t last_key_pos; // last key pos that has been requested bool key_buf_thread_stop; ChiakiMutex key_buf_mutex; ChiakiCond key_buf_cond; ChiakiThread key_buf_thread; uint8_t iv[CHIAKI_GKCRYPT_BLOCK_SIZE]; uint8_t key_base[CHIAKI_GKCRYPT_BLOCK_SIZE]; uint8_t key_gmac_base[CHIAKI_GKCRYPT_BLOCK_SIZE]; uint8_t key_gmac_current[CHIAKI_GKCRYPT_BLOCK_SIZE]; uint64_t key_gmac_index_current; ChiakiLog *log; } ChiakiGKCrypt; struct chiaki_session_t; /** * @param key_buf_chunks if > 0, use a thread to generate the ctr mode key stream */ CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_init(ChiakiGKCrypt *gkcrypt, ChiakiLog *log, size_t key_buf_chunks, uint8_t index, const uint8_t *handshake_key, const uint8_t *ecdh_secret); CHIAKI_EXPORT void chiaki_gkcrypt_fini(ChiakiGKCrypt *gkcrypt); CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_gen_key_stream(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, uint8_t *buf, size_t buf_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_get_key_stream(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, uint8_t *buf, size_t buf_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_decrypt(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, uint8_t *buf, size_t buf_size); static inline ChiakiErrorCode chiaki_gkcrypt_encrypt(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, uint8_t *buf, size_t buf_size) { return chiaki_gkcrypt_decrypt(gkcrypt, key_pos, buf, buf_size); } CHIAKI_EXPORT void chiaki_gkcrypt_gen_gmac_key(uint64_t index, const uint8_t *key_base, const uint8_t *iv, uint8_t *key_out); CHIAKI_EXPORT void chiaki_gkcrypt_gen_new_gmac_key(ChiakiGKCrypt *gkcrypt, uint64_t index); CHIAKI_EXPORT void chiaki_gkcrypt_gen_tmp_gmac_key(ChiakiGKCrypt *gkcrypt, uint64_t index, uint8_t *key_out); CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_gmac(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, const uint8_t *buf, size_t buf_size, uint8_t *gmac_out); static inline ChiakiGKCrypt *chiaki_gkcrypt_new(ChiakiLog *log, size_t key_buf_chunks, uint8_t index, const uint8_t *handshake_key, const uint8_t *ecdh_secret) { ChiakiGKCrypt *gkcrypt = CHIAKI_NEW(ChiakiGKCrypt); if(!gkcrypt) return NULL; ChiakiErrorCode err = chiaki_gkcrypt_init(gkcrypt, log, key_buf_chunks, index, handshake_key, ecdh_secret); if(err != CHIAKI_ERR_SUCCESS) { free(gkcrypt); return NULL; } return gkcrypt; } static inline void chiaki_gkcrypt_free(ChiakiGKCrypt *gkcrypt) { if(!gkcrypt) return; chiaki_gkcrypt_fini(gkcrypt); free(gkcrypt); } CHIAKI_EXPORT void chiaki_key_state_init(ChiakiKeyState *state); /** * @param commit whether to remember this key_pos to update the state. Should only be true after authentication to avoid DoS. */ CHIAKI_EXPORT uint64_t chiaki_key_state_request_pos(ChiakiKeyState *state, uint32_t low, bool commit); /** * Update the internal state after knowing that this key_pos is authentic. */ CHIAKI_EXPORT void chiaki_key_state_commit(ChiakiKeyState *state, uint64_t prev); #ifdef __cplusplus } #endif #endif //CHIAKI_GKCRYPT_H chiaki-v2.2.0/lib/include/chiaki/http.h000066400000000000000000000022021447035777400177200ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_HTTP_H #define CHIAKI_HTTP_H #include "common.h" #include "stoppipe.h" #include #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_http_header_t { const char *key; const char *value; struct chiaki_http_header_t *next; } ChiakiHttpHeader; typedef struct chiaki_http_response_t { int code; ChiakiHttpHeader *headers; } ChiakiHttpResponse; CHIAKI_EXPORT void chiaki_http_header_free(ChiakiHttpHeader *header); CHIAKI_EXPORT ChiakiErrorCode chiaki_http_header_parse(ChiakiHttpHeader **header, char *buf, size_t buf_size); CHIAKI_EXPORT void chiaki_http_response_fini(ChiakiHttpResponse *response); CHIAKI_EXPORT ChiakiErrorCode chiaki_http_response_parse(ChiakiHttpResponse *response, char *buf, size_t buf_size); /** * @param stop_pipe optional * @param timeout_ms only used if stop_pipe is not NULL */ CHIAKI_EXPORT ChiakiErrorCode chiaki_recv_http_header(int sock, char *buf, size_t buf_size, size_t *header_size, size_t *received_size, ChiakiStopPipe *stop_pipe, uint64_t timeout_ms); #ifdef __cplusplus } #endif #endif // CHIAKI_HTTP_H chiaki-v2.2.0/lib/include/chiaki/launchspec.h000066400000000000000000000012021447035777400210650ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_LAUNCHSPEC_H #define CHIAKI_LAUNCHSPEC_H #include "common.h" #include #include #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_launch_spec_t { ChiakiTarget target; unsigned int mtu; unsigned int rtt; uint8_t *handshake_key; unsigned int width; unsigned int height; unsigned int max_fps; ChiakiCodec codec; unsigned int bw_kbps_sent; } ChiakiLaunchSpec; CHIAKI_EXPORT int chiaki_launchspec_format(char *buf, size_t buf_size, ChiakiLaunchSpec *launch_spec); #ifdef __cplusplus } #endif #endif // CHIAKI_LAUNCHSPEC_H chiaki-v2.2.0/lib/include/chiaki/log.h000066400000000000000000000046761447035777400175430ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_LOG_H #define CHIAKI_LOG_H #include #include #include "common.h" #ifdef __cplusplus extern "C" { #endif typedef enum { CHIAKI_LOG_DEBUG = (1 << 4), CHIAKI_LOG_VERBOSE = (1 << 3), CHIAKI_LOG_INFO = (1 << 2), CHIAKI_LOG_WARNING = (1 << 1), CHIAKI_LOG_ERROR = (1 << 0) } ChiakiLogLevel; #define CHIAKI_LOG_ALL ((1 << 5) - 1) CHIAKI_EXPORT char chiaki_log_level_char(ChiakiLogLevel level); typedef void (*ChiakiLogCb)(ChiakiLogLevel level, const char *msg, void *user); typedef struct chiaki_log_t { uint32_t level_mask; ChiakiLogCb cb; void *user; } ChiakiLog; CHIAKI_EXPORT void chiaki_log_init(ChiakiLog *log, uint32_t level_mask, ChiakiLogCb cb, void *user); /** * Logging callback (ChiakiLogCb) that prints to stdout */ CHIAKI_EXPORT void chiaki_log_cb_print(ChiakiLogLevel level, const char *msg, void *user); CHIAKI_EXPORT void chiaki_log(ChiakiLog *log, ChiakiLogLevel level, const char *fmt, ...); CHIAKI_EXPORT void chiaki_log_hexdump(ChiakiLog *log, ChiakiLogLevel level, const uint8_t *buf, size_t buf_size); CHIAKI_EXPORT void chiaki_log_hexdump_raw(ChiakiLog *log, ChiakiLogLevel level, const uint8_t *buf, size_t buf_size); #define CHIAKI_LOGD(log, ...) do { chiaki_log((log), CHIAKI_LOG_DEBUG, __VA_ARGS__); } while(0) #define CHIAKI_LOGV(log, ...) do { chiaki_log((log), CHIAKI_LOG_VERBOSE, __VA_ARGS__); } while(0) #define CHIAKI_LOGI(log, ...) do { chiaki_log((log), CHIAKI_LOG_INFO, __VA_ARGS__); } while(0) #define CHIAKI_LOGW(log, ...) do { chiaki_log((log), CHIAKI_LOG_WARNING, __VA_ARGS__); } while(0) #define CHIAKI_LOGE(log, ...) do { chiaki_log((log), CHIAKI_LOG_ERROR, __VA_ARGS__); } while(0) typedef struct chiaki_log_sniffer_t { ChiakiLog *forward_log; // The original log, where everything is forwarded ChiakiLog sniff_log; // The log where others will log into uint32_t sniff_level_mask; char *buf; // always null-terminated size_t buf_len; // strlen(buf) } ChiakiLogSniffer; CHIAKI_EXPORT void chiaki_log_sniffer_init(ChiakiLogSniffer *sniffer, uint32_t level_mask, ChiakiLog *forward_log); CHIAKI_EXPORT void chiaki_log_sniffer_fini(ChiakiLogSniffer *sniffer); static inline ChiakiLog *chiaki_log_sniffer_get_log(ChiakiLogSniffer *sniffer) { return &sniffer->sniff_log; } static inline const char *chiaki_log_sniffer_get_buffer(ChiakiLogSniffer *sniffer) { return sniffer->buf; } #ifdef __cplusplus } #endif #endif //CHIAKI_LOG_H chiaki-v2.2.0/lib/include/chiaki/opusdecoder.h000066400000000000000000000024701447035777400212640ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_OPUSDECODER_H #define CHIAKI_OPUSDECODER_H #include #if CHIAKI_LIB_ENABLE_OPUS #include "audioreceiver.h" #ifdef __cplusplus extern "C" { #endif typedef void (*ChiakiOpusDecoderSettingsCallback)(uint32_t channels, uint32_t rate, void *user); typedef void (*ChiakiOpusDecoderFrameCallback)(int16_t *buf, size_t samples_count, void *user); typedef struct chiaki_opus_decoder_t { ChiakiLog *log; struct OpusDecoder *opus_decoder; ChiakiAudioHeader audio_header; int16_t *pcm_buf; size_t pcm_buf_size; ChiakiOpusDecoderSettingsCallback settings_cb; ChiakiOpusDecoderFrameCallback frame_cb; void *cb_user; } ChiakiOpusDecoder; CHIAKI_EXPORT void chiaki_opus_decoder_init(ChiakiOpusDecoder *decoder, ChiakiLog *log); CHIAKI_EXPORT void chiaki_opus_decoder_fini(ChiakiOpusDecoder *decoder); CHIAKI_EXPORT void chiaki_opus_decoder_get_sink(ChiakiOpusDecoder *decoder, ChiakiAudioSink *sink); static inline void chiaki_opus_decoder_set_cb(ChiakiOpusDecoder *decoder, ChiakiOpusDecoderSettingsCallback settings_cb, ChiakiOpusDecoderFrameCallback frame_cb, void *user) { decoder->settings_cb = settings_cb; decoder->frame_cb = frame_cb; decoder->cb_user = user; } #ifdef __cplusplus } #endif #endif #endif // CHIAKI_OPUSDECODER_H chiaki-v2.2.0/lib/include/chiaki/orientation.h000066400000000000000000000027121447035777400213020ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_ORIENTATION_H #define CHIAKI_ORIENTATION_H #include "common.h" #include "controller.h" #ifdef __cplusplus extern "C" { #endif /** * Quaternion orientation from accelerometer and gyroscope * using Madgwick's algorithm. * See: http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms */ typedef struct chiaki_orientation_t { float x, y, z, w; } ChiakiOrientation; CHIAKI_EXPORT void chiaki_orientation_init(ChiakiOrientation *orient); CHIAKI_EXPORT void chiaki_orientation_update(ChiakiOrientation *orient, float gx, float gy, float gz, float ax, float ay, float az, float beta, float time_step_sec); /** * Extension of ChiakiOrientation, also tracking an absolute timestamp and the current gyro/accel state */ typedef struct chiaki_orientation_tracker_t { float gyro_x, gyro_y, gyro_z; float accel_x, accel_y, accel_z; ChiakiOrientation orient; uint32_t timestamp; uint64_t sample_index; } ChiakiOrientationTracker; CHIAKI_EXPORT void chiaki_orientation_tracker_init(ChiakiOrientationTracker *tracker); CHIAKI_EXPORT void chiaki_orientation_tracker_update(ChiakiOrientationTracker *tracker, float gx, float gy, float gz, float ax, float ay, float az, uint32_t timestamp_us); CHIAKI_EXPORT void chiaki_orientation_tracker_apply_to_controller_state(ChiakiOrientationTracker *tracker, ChiakiControllerState *state); #ifdef __cplusplus } #endif #endif // CHIAKI_ORIENTATION_H chiaki-v2.2.0/lib/include/chiaki/packetstats.h000066400000000000000000000024701447035777400212760ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_PACKETSTATS_H #define CHIAKI_PACKETSTATS_H #include "thread.h" #include "seqnum.h" #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_packet_stats_t { ChiakiMutex mutex; // For generations of packets, i.e. where we know the number of expected packets per generation uint64_t gen_received; uint64_t gen_lost; // For sequential packets, i.e. where packets are identified by a sequence number ChiakiSeqNum16 seq_min; // sequence number that was max at the last reset ChiakiSeqNum16 seq_max; // currently maximal sequence number uint64_t seq_received; // total received packets since the last reset } ChiakiPacketStats; CHIAKI_EXPORT ChiakiErrorCode chiaki_packet_stats_init(ChiakiPacketStats *stats); CHIAKI_EXPORT void chiaki_packet_stats_fini(ChiakiPacketStats *stats); CHIAKI_EXPORT void chiaki_packet_stats_reset(ChiakiPacketStats *stats); CHIAKI_EXPORT void chiaki_packet_stats_push_generation(ChiakiPacketStats *stats, uint64_t received, uint64_t lost); CHIAKI_EXPORT void chiaki_packet_stats_push_seq(ChiakiPacketStats *stats, ChiakiSeqNum16 seq_num); CHIAKI_EXPORT void chiaki_packet_stats_get(ChiakiPacketStats *stats, bool reset, uint64_t *received, uint64_t *lost); #ifdef __cplusplus } #endif #endif // CHIAKI_PACKETSTATS_H chiaki-v2.2.0/lib/include/chiaki/pidecoder.h000066400000000000000000000015631447035777400207100ustar00rootroot00000000000000#ifndef CHIAKI_PI_DECODER_H #define CHIAKI_PI_DECODER_H #include #include #include #include #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_pi_decoder_t { ChiakiLog *log; TUNNEL_T tunnel[2]; COMPONENT_T *components[3]; ILCLIENT_T *client; COMPONENT_T *video_decode; COMPONENT_T *video_render; bool port_settings_changed; bool first_packet; } ChiakiPiDecoder; CHIAKI_EXPORT ChiakiErrorCode chiaki_pi_decoder_init(ChiakiPiDecoder *decoder, ChiakiLog *log); CHIAKI_EXPORT void chiaki_pi_decoder_fini(ChiakiPiDecoder *decoder); CHIAKI_EXPORT void chiaki_pi_decoder_set_params(ChiakiPiDecoder *decoder, int x, int y, int w, int h, bool visible); CHIAKI_EXPORT bool chiaki_pi_decoder_video_sample_cb(uint8_t *buf, size_t buf_size, void *user); #ifdef __cplusplus } #endif #endif // CHIAKI_PI_DECODER_H chiaki-v2.2.0/lib/include/chiaki/random.h000066400000000000000000000006641447035777400202330ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_RANDOM_H #define CHIAKI_RANDOM_H #include "common.h" #include #include #ifdef __cplusplus extern "C" { #endif /** * Random for cryptography */ CHIAKI_EXPORT ChiakiErrorCode chiaki_random_bytes_crypt(uint8_t *buf, size_t buf_size); CHIAKI_EXPORT uint32_t chiaki_random_32(); #ifdef __cplusplus } #endif #endif // CHIAKI_RANDOM_H chiaki-v2.2.0/lib/include/chiaki/regist.h000066400000000000000000000043251447035777400202460ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_REGIST_H #define CHIAKI_REGIST_H #include "common.h" #include "log.h" #include "thread.h" #include "stoppipe.h" #include "rpcrypt.h" #include "session.h" #ifdef __cplusplus extern "C" { #endif #define CHIAKI_PSN_ACCOUNT_ID_SIZE 8 typedef struct chiaki_regist_info_t { ChiakiTarget target; const char *host; bool broadcast; /** * may be null, in which case psn_account_id will be used */ const char *psn_online_id; /** * will be used if psn_online_id is null, for PS4 >= 7.0 */ uint8_t psn_account_id[CHIAKI_PSN_ACCOUNT_ID_SIZE]; uint32_t pin; } ChiakiRegistInfo; typedef struct chiaki_registered_host_t { ChiakiTarget target; char ap_ssid[0x30]; char ap_bssid[0x20]; char ap_key[0x50]; char ap_name[0x20]; uint8_t server_mac[6]; char server_nickname[0x20]; char rp_regist_key[CHIAKI_SESSION_AUTH_SIZE]; // must be completely filled (pad with \0) uint32_t rp_key_type; uint8_t rp_key[0x10]; } ChiakiRegisteredHost; typedef enum chiaki_regist_event_type_t { CHIAKI_REGIST_EVENT_TYPE_FINISHED_CANCELED, CHIAKI_REGIST_EVENT_TYPE_FINISHED_FAILED, CHIAKI_REGIST_EVENT_TYPE_FINISHED_SUCCESS } ChiakiRegistEventType; typedef struct chiaki_regist_event_t { ChiakiRegistEventType type; ChiakiRegisteredHost *registered_host; } ChiakiRegistEvent; typedef void (*ChiakiRegistCb)(ChiakiRegistEvent *event, void *user); typedef struct chiaki_regist_t { ChiakiLog *log; ChiakiRegistInfo info; ChiakiRegistCb cb; void *cb_user; ChiakiThread thread; ChiakiStopPipe stop_pipe; } ChiakiRegist; CHIAKI_EXPORT ChiakiErrorCode chiaki_regist_start(ChiakiRegist *regist, ChiakiLog *log, const ChiakiRegistInfo *info, ChiakiRegistCb cb, void *cb_user); CHIAKI_EXPORT void chiaki_regist_fini(ChiakiRegist *regist); CHIAKI_EXPORT void chiaki_regist_stop(ChiakiRegist *regist); /** * @param psn_account_id must be exactly of size CHIAKI_PSN_ACCOUNT_ID_SIZE */ CHIAKI_EXPORT ChiakiErrorCode chiaki_regist_request_payload_format(ChiakiTarget target, const uint8_t *ambassador, uint8_t *buf, size_t *buf_size, ChiakiRPCrypt *crypt, const char *psn_online_id, const uint8_t *psn_account_id, uint32_t pin); #ifdef __cplusplus } #endif #endif // CHIAKI_REGIST_H chiaki-v2.2.0/lib/include/chiaki/reorderqueue.h000066400000000000000000000114731447035777400214620ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_REORDERQUEUE_H #define CHIAKI_REORDERQUEUE_H #include #include "seqnum.h" #ifdef __cplusplus extern "C" { #endif typedef enum chiaki_reorder_queue_drop_strategy_t { CHIAKI_REORDER_QUEUE_DROP_STRATEGY_BEGIN, // drop packet with lowest number CHIAKI_REORDER_QUEUE_DROP_STRATEGY_END // drop packet with highest number } ChiakiReorderQueueDropStrategy; typedef struct chiaki_reorder_queue_entry_t { void *user; bool set; } ChiakiReorderQueueEntry; typedef void (*ChiakiReorderQueueDropCb)(uint64_t seq_num, void *elem_user, void *cb_user); typedef bool (*ChiakiReorderQueueSeqNumGt)(uint64_t a, uint64_t b); typedef bool (*ChiakiReorderQueueSeqNumLt)(uint64_t a, uint64_t b); typedef uint64_t (*ChiakiReorderQueueSeqNumAdd)(uint64_t a, uint64_t b); typedef uint64_t (*ChiakiReorderQueueSeqNumSub)(uint64_t a, uint64_t b); typedef struct chiaki_reorder_queue_t { size_t size_exp; // real size = 2^size * sizeof(ChiakiReorderQueueEntry) ChiakiReorderQueueEntry *queue; uint64_t begin; uint64_t count; ChiakiReorderQueueSeqNumGt seq_num_gt; ChiakiReorderQueueSeqNumLt seq_num_lt; ChiakiReorderQueueSeqNumAdd seq_num_add; ChiakiReorderQueueSeqNumSub seq_num_sub; ChiakiReorderQueueDropStrategy drop_strategy; ChiakiReorderQueueDropCb drop_cb; void *drop_cb_user; } ChiakiReorderQueue; /** * @param size exponent for 2 * @param seq_num_start sequence number of the first expected element */ CHIAKI_EXPORT ChiakiErrorCode chiaki_reorder_queue_init(ChiakiReorderQueue *queue, size_t size_exp, uint64_t seq_num_start, ChiakiReorderQueueSeqNumGt seq_num_gt, ChiakiReorderQueueSeqNumLt seq_num_lt, ChiakiReorderQueueSeqNumAdd seq_num_add); /** * Helper to initialize a queue using ChiakiSeqNum16 sequence numbers */ CHIAKI_EXPORT ChiakiErrorCode chiaki_reorder_queue_init_16(ChiakiReorderQueue *queue, size_t size_exp, ChiakiSeqNum16 seq_num_start); /** * Helper to initialize a queue using ChiakiSeqNum32 sequence numbers */ CHIAKI_EXPORT ChiakiErrorCode chiaki_reorder_queue_init_32(ChiakiReorderQueue *queue, size_t size_exp, ChiakiSeqNum32 seq_num_start); CHIAKI_EXPORT void chiaki_reorder_queue_fini(ChiakiReorderQueue *queue); static inline void chiaki_reorder_queue_set_drop_strategy(ChiakiReorderQueue *queue, ChiakiReorderQueueDropStrategy drop_strategy) { queue->drop_strategy = drop_strategy; } static inline void chiaki_reorder_queue_set_drop_cb(ChiakiReorderQueue *queue, ChiakiReorderQueueDropCb cb, void *user) { queue->drop_cb = cb; queue->drop_cb_user = user; } static inline size_t chiaki_reorder_queue_size(ChiakiReorderQueue *queue) { return ((size_t)1) << queue->size_exp; } static inline uint64_t chiaki_reorder_queue_count(ChiakiReorderQueue *queue) { return queue->count; } /** * Push a packet into the queue. * * Depending on the set drop strategy, this might drop elements and call the drop callback with the dropped elements. * The callback will also be called with the new element íf there is already an element with the same sequence number * or if the sequence number is less than queue->begin, i.e. the next element to be pulled. * * @param seq_num * @param user pointer to be associated with the element */ CHIAKI_EXPORT void chiaki_reorder_queue_push(ChiakiReorderQueue *queue, uint64_t seq_num, void *user); /** * Pull the next element in order from the queue. * * Call this repeatedly until it returns false to get all subsequently available elements. * * @param seq_num pointer where the sequence number of the pulled packet is written, undefined contents if false is returned * @param user pointer where the user pointer of the pulled packet is written, undefined contents if false is returned * @return true if an element was pulled in order */ CHIAKI_EXPORT bool chiaki_reorder_queue_pull(ChiakiReorderQueue *queue, uint64_t *seq_num, void **user); /** * Peek the element at a specific index inside the queue. * * @param index Offset to be added to the begin sequence number, this is NOT a sequence number itself! (0 <= index < count) * @param seq_num pointer where the sequence number of the peeked packet is written, undefined contents if false is returned * @param user pointer where the user pointer of the pulled packet is written, undefined contents if false is returned * @return true if an element was peeked, false if there is no element at index. */ CHIAKI_EXPORT bool chiaki_reorder_queue_peek(ChiakiReorderQueue *queue, uint64_t index, uint64_t *seq_num, void **user); /** * Drop a specific element from the queue. * begin will not be changed. * @param index Offset to be added to the begin sequence number, this is NOT a sequence number itself! (0 <= index < count) */ CHIAKI_EXPORT void chiaki_reorder_queue_drop(ChiakiReorderQueue *queue, uint64_t index); #ifdef __cplusplus } #endif #endif // CHIAKI_REORDERQUEUE_H chiaki-v2.2.0/lib/include/chiaki/rpcrypt.h000066400000000000000000000032301447035777400204460ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_RPCRYPT_H #define CHIAKI_RPCRYPT_H #include "common.h" #include #include #ifdef __cplusplus extern "C" { #endif #define CHIAKI_RPCRYPT_KEY_SIZE 0x10 typedef struct chiaki_rpcrypt_t { ChiakiTarget target; uint8_t bright[CHIAKI_RPCRYPT_KEY_SIZE]; uint8_t ambassador[CHIAKI_RPCRYPT_KEY_SIZE]; } ChiakiRPCrypt; CHIAKI_EXPORT void chiaki_rpcrypt_bright_ambassador(ChiakiTarget target, uint8_t *bright, uint8_t *ambassador, const uint8_t *nonce, const uint8_t *morning); CHIAKI_EXPORT void chiaki_rpcrypt_aeropause_ps4_pre10(uint8_t *aeropause, const uint8_t *ambassador); CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_aeropause(ChiakiTarget target, size_t key_1_off, uint8_t *aeropause, const uint8_t *ambassador); CHIAKI_EXPORT void chiaki_rpcrypt_init_auth(ChiakiRPCrypt *rpcrypt, ChiakiTarget target, const uint8_t *nonce, const uint8_t *morning); CHIAKI_EXPORT void chiaki_rpcrypt_init_regist_ps4_pre10(ChiakiRPCrypt *rpcrypt, const uint8_t *ambassador, uint32_t pin); CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_init_regist(ChiakiRPCrypt *rpcrypt, ChiakiTarget target, const uint8_t *ambassador, size_t key_0_off, uint32_t pin); CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_generate_iv(ChiakiRPCrypt *rpcrypt, uint8_t *iv, uint64_t counter); CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_encrypt(ChiakiRPCrypt *rpcrypt, uint64_t counter, const uint8_t *in, uint8_t *out, size_t sz); CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_decrypt(ChiakiRPCrypt *rpcrypt, uint64_t counter, const uint8_t *in, uint8_t *out, size_t sz); #ifdef __cplusplus } #endif #endif // CHIAKI_RPCRYPT_H chiaki-v2.2.0/lib/include/chiaki/senkusha.h000066400000000000000000000021331447035777400205650ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SENKUSHA_H #define CHIAKI_SENKUSHA_H #include "takion.h" #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_session_t ChiakiSession; typedef struct senkusha_t { ChiakiSession *session; ChiakiLog *log; ChiakiTakion takion; int state; bool state_finished; bool state_failed; bool should_stop; ChiakiSeqNum32 data_ack_seq_num_expected; uint64_t pong_time_us; uint16_t ping_test_index; uint16_t ping_index; uint32_t ping_tag; uint32_t mtu_id; /** * signaled on change of state_finished or should_stop */ ChiakiCond state_cond; /** * protects state, state_finished, state_failed and should_stop */ ChiakiMutex state_mutex; } ChiakiSenkusha; CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_init(ChiakiSenkusha *senkusha, ChiakiSession *session); CHIAKI_EXPORT void chiaki_senkusha_fini(ChiakiSenkusha *senkusha); CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha, uint32_t *mtu_in, uint32_t *mtu_out, uint64_t *rtt_us); #ifdef __cplusplus } #endif #endif // CHIAKI_SENKUSHA_H chiaki-v2.2.0/lib/include/chiaki/seqnum.h000066400000000000000000000021271447035777400202570ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SEQNUM_H #define CHIAKI_SEQNUM_H #include "common.h" #include #include #ifdef __cplusplus extern "C" { #endif // RFC 1982 #define CHIAKI_DEFINE_SEQNUM(bits, greater_sint) \ \ typedef uint##bits##_t ChiakiSeqNum##bits; \ \ static inline bool chiaki_seq_num_##bits##_lt(ChiakiSeqNum##bits a, ChiakiSeqNum##bits b) \ { \ if(a == b) \ return false; \ greater_sint d = (greater_sint)b - (greater_sint)a; \ return (a < b && d < ((ChiakiSeqNum##bits)1 << (bits - 1))) \ || ((a > b) && -d > ((ChiakiSeqNum##bits)1 << (bits - 1))); \ } \ \ static inline bool chiaki_seq_num_##bits##_gt(ChiakiSeqNum##bits a, ChiakiSeqNum##bits b) \ { \ if(a == b) \ return false; \ greater_sint d = (greater_sint)b - (greater_sint)a; \ return (a < b && d > ((ChiakiSeqNum##bits)1 << (bits - 1))) \ || ((a > b) && -d < ((ChiakiSeqNum##bits)1 << (bits - 1))); \ } CHIAKI_DEFINE_SEQNUM(16, int32_t) CHIAKI_DEFINE_SEQNUM(32, int64_t) #undef CHIAKI_DEFINE_SEQNUM #ifdef __cplusplus } #endif #endif // CHIAKI_SEQNUM_H chiaki-v2.2.0/lib/include/chiaki/session.h000066400000000000000000000177001447035777400204350ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SESSION_H #define CHIAKI_SESSION_H #include "streamconnection.h" #include "common.h" #include "thread.h" #include "log.h" #include "ctrl.h" #include "rpcrypt.h" #include "takion.h" #include "ecdh.h" #include "audio.h" #include "controller.h" #include "stoppipe.h" #include #ifdef __cplusplus extern "C" { #endif #define CHIAKI_RP_APPLICATION_REASON_REGIST_FAILED 0x80108b09 #define CHIAKI_RP_APPLICATION_REASON_INVALID_PSN_ID 0x80108b02 #define CHIAKI_RP_APPLICATION_REASON_IN_USE 0x80108b10 #define CHIAKI_RP_APPLICATION_REASON_CRASH 0x80108b15 #define CHIAKI_RP_APPLICATION_REASON_RP_VERSION 0x80108b11 #define CHIAKI_RP_APPLICATION_REASON_UNKNOWN 0x80108bff CHIAKI_EXPORT const char *chiaki_rp_application_reason_string(uint32_t reason); /** * @return RP-Version string or NULL */ CHIAKI_EXPORT const char *chiaki_rp_version_string(ChiakiTarget target); CHIAKI_EXPORT ChiakiTarget chiaki_rp_version_parse(const char *rp_version_str, bool is_ps5); #define CHIAKI_RP_DID_SIZE 32 #define CHIAKI_SESSION_ID_SIZE_MAX 80 #define CHIAKI_HANDSHAKE_KEY_SIZE 0x10 typedef struct chiaki_connect_video_profile_t { unsigned int width; unsigned int height; unsigned int max_fps; unsigned int bitrate; ChiakiCodec codec; } ChiakiConnectVideoProfile; typedef enum { // values must not change CHIAKI_VIDEO_RESOLUTION_PRESET_360p = 1, CHIAKI_VIDEO_RESOLUTION_PRESET_540p = 2, CHIAKI_VIDEO_RESOLUTION_PRESET_720p = 3, CHIAKI_VIDEO_RESOLUTION_PRESET_1080p = 4 } ChiakiVideoResolutionPreset; typedef enum { // values must not change CHIAKI_VIDEO_FPS_PRESET_30 = 30, CHIAKI_VIDEO_FPS_PRESET_60 = 60 } ChiakiVideoFPSPreset; CHIAKI_EXPORT void chiaki_connect_video_profile_preset(ChiakiConnectVideoProfile *profile, ChiakiVideoResolutionPreset resolution, ChiakiVideoFPSPreset fps); #define CHIAKI_SESSION_AUTH_SIZE 0x10 typedef struct chiaki_connect_info_t { bool ps5; const char *host; // null terminated char regist_key[CHIAKI_SESSION_AUTH_SIZE]; // must be completely filled (pad with \0) uint8_t morning[0x10]; ChiakiConnectVideoProfile video_profile; bool video_profile_auto_downgrade; // Downgrade video_profile if server does not seem to support it. bool enable_keyboard; bool enable_dualsense; } ChiakiConnectInfo; typedef enum { CHIAKI_QUIT_REASON_NONE, CHIAKI_QUIT_REASON_STOPPED, CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN, CHIAKI_QUIT_REASON_SESSION_REQUEST_CONNECTION_REFUSED, CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_IN_USE, CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_CRASH, CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_VERSION_MISMATCH, CHIAKI_QUIT_REASON_CTRL_UNKNOWN, CHIAKI_QUIT_REASON_CTRL_CONNECT_FAILED, CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED, CHIAKI_QUIT_REASON_STREAM_CONNECTION_UNKNOWN, CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED, CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_SHUTDOWN, // like REMOTE_DISCONNECTED, but because the server shut down } ChiakiQuitReason; CHIAKI_EXPORT const char *chiaki_quit_reason_string(ChiakiQuitReason reason); static inline bool chiaki_quit_reason_is_error(ChiakiQuitReason reason) { return reason != CHIAKI_QUIT_REASON_STOPPED && reason != CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_SHUTDOWN; } typedef struct chiaki_quit_event_t { ChiakiQuitReason reason; const char *reason_str; } ChiakiQuitEvent; typedef struct chiaki_keyboard_event_t { const char *text_str; } ChiakiKeyboardEvent; typedef struct chiaki_audio_stream_info_event_t { ChiakiAudioHeader audio_header; } ChiakiAudioStreamInfoEvent; typedef struct chiaki_rumble_event_t { uint8_t unknown; uint8_t left; // low-frequency uint8_t right; // high-frequency } ChiakiRumbleEvent; typedef struct chiaki_trigger_effects_event_t { uint8_t type_left; uint8_t type_right; uint8_t left[10]; uint8_t right[10]; } ChiakiTriggerEffectsEvent; typedef enum { CHIAKI_EVENT_CONNECTED, CHIAKI_EVENT_LOGIN_PIN_REQUEST, CHIAKI_EVENT_KEYBOARD_OPEN, CHIAKI_EVENT_KEYBOARD_TEXT_CHANGE, CHIAKI_EVENT_KEYBOARD_REMOTE_CLOSE, CHIAKI_EVENT_RUMBLE, CHIAKI_EVENT_QUIT, CHIAKI_EVENT_TRIGGER_EFFECTS, } ChiakiEventType; typedef struct chiaki_event_t { ChiakiEventType type; union { ChiakiQuitEvent quit; ChiakiKeyboardEvent keyboard; ChiakiRumbleEvent rumble; ChiakiTriggerEffectsEvent trigger_effects; struct { bool pin_incorrect; // false on first request, true if the pin entered before was incorrect } login_pin_request; }; } ChiakiEvent; typedef void (*ChiakiEventCallback)(ChiakiEvent *event, void *user); /** * buf will always have an allocated padding of at least CHIAKI_VIDEO_BUFFER_PADDING_SIZE after buf_size * @return whether the sample was successfully pushed into the decoder. On false, a corrupt frame will be reported to get a new keyframe. */ typedef bool (*ChiakiVideoSampleCallback)(uint8_t *buf, size_t buf_size, void *user); typedef struct chiaki_session_t { struct { bool ps5; struct addrinfo *host_addrinfos; struct addrinfo *host_addrinfo_selected; char hostname[256]; char regist_key[CHIAKI_RPCRYPT_KEY_SIZE]; uint8_t morning[CHIAKI_RPCRYPT_KEY_SIZE]; uint8_t did[CHIAKI_RP_DID_SIZE]; ChiakiConnectVideoProfile video_profile; bool video_profile_auto_downgrade; bool enable_keyboard; bool enable_dualsense; } connect_info; ChiakiTarget target; uint8_t nonce[CHIAKI_RPCRYPT_KEY_SIZE]; ChiakiRPCrypt rpcrypt; char session_id[CHIAKI_SESSION_ID_SIZE_MAX]; // zero-terminated uint8_t handshake_key[CHIAKI_HANDSHAKE_KEY_SIZE]; uint32_t mtu_in; uint32_t mtu_out; uint64_t rtt_us; ChiakiECDH ecdh; ChiakiQuitReason quit_reason; char *quit_reason_str; // additional reason string from remote ChiakiEventCallback event_cb; void *event_cb_user; ChiakiVideoSampleCallback video_sample_cb; void *video_sample_cb_user; ChiakiAudioSink audio_sink; ChiakiAudioSink haptics_sink; ChiakiThread session_thread; ChiakiCond state_cond; ChiakiMutex state_mutex; ChiakiStopPipe stop_pipe; bool should_stop; bool ctrl_failed; bool ctrl_session_id_received; bool ctrl_login_pin_requested; bool login_pin_entered; uint8_t *login_pin; size_t login_pin_size; ChiakiCtrl ctrl; ChiakiLog *log; ChiakiStreamConnection stream_connection; ChiakiControllerState controller_state; } ChiakiSession; CHIAKI_EXPORT ChiakiErrorCode chiaki_session_init(ChiakiSession *session, ChiakiConnectInfo *connect_info, ChiakiLog *log); CHIAKI_EXPORT void chiaki_session_fini(ChiakiSession *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_start(ChiakiSession *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_stop(ChiakiSession *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_join(ChiakiSession *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_set_controller_state(ChiakiSession *session, ChiakiControllerState *state); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_set_login_pin(ChiakiSession *session, const uint8_t *pin, size_t pin_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_goto_bed(ChiakiSession *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_keyboard_set_text(ChiakiSession *session, const char *text); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_keyboard_reject(ChiakiSession *session); CHIAKI_EXPORT ChiakiErrorCode chiaki_session_keyboard_accept(ChiakiSession *session); static inline void chiaki_session_set_event_cb(ChiakiSession *session, ChiakiEventCallback cb, void *user) { session->event_cb = cb; session->event_cb_user = user; } static inline void chiaki_session_set_video_sample_cb(ChiakiSession *session, ChiakiVideoSampleCallback cb, void *user) { session->video_sample_cb = cb; session->video_sample_cb_user = user; } /** * @param sink contents are copied */ static inline void chiaki_session_set_audio_sink(ChiakiSession *session, ChiakiAudioSink *sink) { session->audio_sink = *sink; } /** * @param sink contents are copied */ static inline void chiaki_session_set_haptics_sink(ChiakiSession *session, ChiakiAudioSink *sink) { session->haptics_sink = *sink; } #ifdef __cplusplus } #endif #endif // CHIAKI_SESSION_H chiaki-v2.2.0/lib/include/chiaki/sock.h000066400000000000000000000020551447035777400177060ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SOCK_H #define CHIAKI_SOCK_H #include "common.h" #include #ifdef __cplusplus extern "C" { #endif #ifdef _WIN32 #include typedef SOCKET chiaki_socket_t; #define CHIAKI_SOCKET_IS_INVALID(s) ((s) == INVALID_SOCKET) #define CHIAKI_INVALID_SOCKET INVALID_SOCKET #define CHIAKI_SOCKET_CLOSE(s) closesocket(s) #define CHIAKI_SOCKET_ERROR_FMT "%d" #define CHIAKI_SOCKET_ERROR_VALUE (WSAGetLastError()) #define CHIAKI_SOCKET_EINPROGRESS (WSAGetLastError() == WSAEWOULDBLOCK) #else #include #include typedef int chiaki_socket_t; #define CHIAKI_SOCKET_IS_INVALID(s) ((s) < 0) #define CHIAKI_INVALID_SOCKET (-1) #define CHIAKI_SOCKET_CLOSE(s) close(s) #define CHIAKI_SOCKET_ERROR_FMT "%s" #define CHIAKI_SOCKET_ERROR_VALUE (strerror(errno)) #define CHIAKI_SOCKET_EINPROGRESS (errno == EINPROGRESS) #endif CHIAKI_EXPORT ChiakiErrorCode chiaki_socket_set_nonblock(chiaki_socket_t sock, bool nonblock); #ifdef __cplusplus } #endif #endif //CHIAKI_SOCK_H chiaki-v2.2.0/lib/include/chiaki/stoppipe.h000066400000000000000000000032021447035777400206050ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_STOPPIPE_H #define CHIAKI_STOPPIPE_H #include "sock.h" #include #include #include #ifdef _WIN32 #include #else #include #endif #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_stop_pipe_t { #ifdef _WIN32 WSAEVENT event; #elif defined(__SWITCH__) // due to a lack pipe/event/socketpair // on switch env, we use a physical socket // to send/trigger the cancel signal struct sockaddr_in addr; // local stop socket file descriptor // this fd is audited by 'select' as // fd_set *readfds int fd; #else int fds[2]; #endif } ChiakiStopPipe; struct sockaddr; CHIAKI_EXPORT ChiakiErrorCode chiaki_stop_pipe_init(ChiakiStopPipe *stop_pipe); CHIAKI_EXPORT void chiaki_stop_pipe_fini(ChiakiStopPipe *stop_pipe); CHIAKI_EXPORT void chiaki_stop_pipe_stop(ChiakiStopPipe *stop_pipe); CHIAKI_EXPORT ChiakiErrorCode chiaki_stop_pipe_select_single(ChiakiStopPipe *stop_pipe, chiaki_socket_t fd, bool write, uint64_t timeout_ms); /** * Like connect(), but can be canceled by the stop pipe. Only makes sense with a non-blocking socket. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_stop_pipe_connect(ChiakiStopPipe *stop_pipe, chiaki_socket_t fd, struct sockaddr *addr, size_t addrlen); static inline ChiakiErrorCode chiaki_stop_pipe_sleep(ChiakiStopPipe *stop_pipe, uint64_t timeout_ms) { return chiaki_stop_pipe_select_single(stop_pipe, CHIAKI_INVALID_SOCKET, false, timeout_ms); } CHIAKI_EXPORT ChiakiErrorCode chiaki_stop_pipe_reset(ChiakiStopPipe *stop_pipe); #ifdef __cplusplus } #endif #endif // CHIAKI_STOPPIPE_H chiaki-v2.2.0/lib/include/chiaki/streamconnection.h000066400000000000000000000043071447035777400223240ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_STREAMCONNECTION_H #define CHIAKI_STREAMCONNECTION_H #include "feedbacksender.h" #include "takion.h" #include "log.h" #include "ecdh.h" #include "gkcrypt.h" #include "audioreceiver.h" #include "videoreceiver.h" #include "congestioncontrol.h" #include #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_session_t ChiakiSession; typedef struct chiaki_stream_connection_t { struct chiaki_session_t *session; ChiakiLog *log; ChiakiTakion takion; uint8_t *ecdh_secret; ChiakiGKCrypt *gkcrypt_local; ChiakiGKCrypt *gkcrypt_remote; ChiakiPacketStats packet_stats; ChiakiAudioReceiver *audio_receiver; ChiakiVideoReceiver *video_receiver; ChiakiAudioReceiver *haptics_receiver; ChiakiFeedbackSender feedback_sender; /** * whether feedback_sender is initialized * only if this is true, feedback_sender may be accessed! */ bool feedback_sender_active; /** * protects feedback_sender and feedback_sender_active */ ChiakiMutex feedback_sender_mutex; /** * signaled on change of state_finished or should_stop */ ChiakiCond state_cond; /** * protects state, state_finished, state_failed and should_stop */ ChiakiMutex state_mutex; int state; bool state_finished; bool state_failed; bool should_stop; bool remote_disconnected; char *remote_disconnect_reason; } ChiakiStreamConnection; CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_init(ChiakiStreamConnection *stream_connection, ChiakiSession *session); CHIAKI_EXPORT void chiaki_stream_connection_fini(ChiakiStreamConnection *stream_connection); /** * Run stream_connection synchronously */ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnection *stream_connection); /** * To be called from a thread other than the one chiaki_stream_connection_run() is running on to stop stream_connection */ CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_stop(ChiakiStreamConnection *stream_connection); CHIAKI_EXPORT ChiakiErrorCode stream_connection_send_corrupt_frame(ChiakiStreamConnection *stream_connection, ChiakiSeqNum16 start, ChiakiSeqNum16 end); #ifdef __cplusplus } #endif #endif //CHIAKI_STREAMCONNECTION_H chiaki-v2.2.0/lib/include/chiaki/takion.h000066400000000000000000000174721447035777400202450ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_TAKION_H #define CHIAKI_TAKION_H #include "common.h" #include "thread.h" #include "log.h" #include "gkcrypt.h" #include "seqnum.h" #include "stoppipe.h" #include "reorderqueue.h" #include "feedback.h" #include "takionsendbuffer.h" #include #ifdef _WIN32 #include #endif #ifdef __cplusplus extern "C" { #endif typedef enum chiaki_takion_message_data_type_t { CHIAKI_TAKION_MESSAGE_DATA_TYPE_PROTOBUF = 0, CHIAKI_TAKION_MESSAGE_DATA_TYPE_RUMBLE = 7, CHIAKI_TAKION_MESSAGE_DATA_TYPE_9 = 9, CHIAKI_TAKION_MESSAGE_DATA_TYPE_TRIGGER_EFFECTS = 11, } ChiakiTakionMessageDataType; typedef struct chiaki_takion_av_packet_t { ChiakiSeqNum16 packet_index; ChiakiSeqNum16 frame_index; bool uses_nalu_info_structs; bool is_video; bool is_haptics; ChiakiSeqNum16 unit_index; uint16_t units_in_frame_total; // source + units_in_frame_fec uint16_t units_in_frame_fec; uint8_t codec; uint16_t word_at_0x18; uint8_t adaptive_stream_index; uint8_t byte_at_0x2c; uint64_t key_pos; uint8_t *data; // not owned size_t data_size; } ChiakiTakionAVPacket; static inline uint8_t chiaki_takion_av_packet_audio_unit_size(ChiakiTakionAVPacket *packet) { return packet->units_in_frame_fec >> 8; } static inline uint8_t chiaki_takion_av_packet_audio_source_units_count(ChiakiTakionAVPacket *packet) { return packet->units_in_frame_fec & 0xf; } static inline uint8_t chiaki_takion_av_packet_audio_fec_units_count(ChiakiTakionAVPacket *packet) { return (packet->units_in_frame_fec >> 4) & 0xf; } typedef ChiakiErrorCode (*ChiakiTakionAVPacketParse)(ChiakiTakionAVPacket *packet, ChiakiKeyState *key_state, uint8_t *buf, size_t buf_size); typedef struct chiaki_takion_congestion_packet_t { uint16_t word_0; uint16_t received; uint16_t lost; } ChiakiTakionCongestionPacket; typedef enum { CHIAKI_TAKION_EVENT_TYPE_CONNECTED, CHIAKI_TAKION_EVENT_TYPE_DISCONNECT, CHIAKI_TAKION_EVENT_TYPE_DATA, CHIAKI_TAKION_EVENT_TYPE_DATA_ACK, CHIAKI_TAKION_EVENT_TYPE_AV } ChiakiTakionEventType; typedef struct chiaki_takion_event_t { ChiakiTakionEventType type; union { struct { ChiakiTakionMessageDataType data_type; uint8_t *buf; size_t buf_size; } data; struct { ChiakiSeqNum32 seq_num; } data_ack; ChiakiTakionAVPacket *av; }; } ChiakiTakionEvent; typedef void (*ChiakiTakionCallback)(ChiakiTakionEvent *event, void *user); typedef struct chiaki_takion_connect_info_t { ChiakiLog *log; struct sockaddr *sa; size_t sa_len; bool ip_dontfrag; ChiakiTakionCallback cb; void *cb_user; bool enable_crypt; bool enable_dualsense; uint8_t protocol_version; } ChiakiTakionConnectInfo; typedef struct chiaki_takion_t { ChiakiLog *log; uint8_t version; /** * Whether encryption should be used. * * If false, encryption and MACs are disabled completely. * * If true, encryption and MACs will be used depending on whether gkcrypt_local and gkcrypt_remote are non-null, respectively. * However, if gkcrypt_remote is null, only control data packets are passed to the callback and all other packets are postponed until * gkcrypt_remote is set, so it has been set, so eventually all MACs will be checked. */ bool enable_crypt; /** * Array to be temporarily allocated when non-data packets come, enable_crypt is true, but gkcrypt_remote is NULL * to not ignore any MACs in this period. */ struct chiaki_takion_postponed_packet_t *postponed_packets; size_t postponed_packets_size; size_t postponed_packets_count; ChiakiGKCrypt *gkcrypt_local; // if NULL (default), no gmac is calculated and nothing is encrypted uint64_t key_pos_local; ChiakiMutex gkcrypt_local_mutex; ChiakiGKCrypt *gkcrypt_remote; // if NULL (default), remote gmacs are IGNORED (!) and everything is expected to be unencrypted ChiakiReorderQueue data_queue; ChiakiTakionSendBuffer send_buffer; ChiakiTakionCallback cb; void *cb_user; chiaki_socket_t sock; ChiakiThread thread; ChiakiStopPipe stop_pipe; uint32_t tag_local; uint32_t tag_remote; ChiakiSeqNum32 seq_num_local; ChiakiMutex seq_num_local_mutex; /** * Advertised Receiver Window Credit */ uint32_t a_rwnd; ChiakiTakionAVPacketParse av_packet_parse; ChiakiKeyState key_state; bool enable_dualsense; } ChiakiTakion; CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_connect(ChiakiTakion *takion, ChiakiTakionConnectInfo *info); CHIAKI_EXPORT void chiaki_takion_close(ChiakiTakion *takion); /** * Must be called from within the Takion thread, i.e. inside the callback! */ static inline void chiaki_takion_set_crypt(ChiakiTakion *takion, ChiakiGKCrypt *gkcrypt_local, ChiakiGKCrypt *gkcrypt_remote) { takion->gkcrypt_local = gkcrypt_local; takion->gkcrypt_remote = gkcrypt_remote; } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_packet_mac(ChiakiGKCrypt *crypt, uint8_t *buf, size_t buf_size, uint64_t key_pos, uint8_t *mac_out, uint8_t *mac_old_out); /** * Get a new key pos and advance by data_size. * * Thread-safe while Takion is running. * @param key_pos pointer to write the new key pos to. will be 0 if encryption is disabled. Contents undefined on failure. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_crypt_advance_key_pos(ChiakiTakion *takion, size_t data_size, uint64_t *key_pos); /** * Send a datagram directly on the socket. * * Thread-safe while Takion is running. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_raw(ChiakiTakion *takion, const uint8_t *buf, size_t buf_size); /** * Calculate the MAC for the packet depending on the type derived from the first byte in buf, * assign MAC inside buf at the respective position and send the packet. * * If encryption is disabled, the MAC will be set to 0. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send(ChiakiTakion *takion, uint8_t *buf, size_t buf_size, uint64_t key_pos); /** * Thread-safe while Takion is running. * * @param optional pointer to write the sequence number of the sent packet to */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_message_data(ChiakiTakion *takion, uint8_t chunk_flags, uint16_t channel, uint8_t *buf, size_t buf_size, ChiakiSeqNum32 *seq_num); /** * Thread-safe while Takion is running. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_congestion(ChiakiTakion *takion, ChiakiTakionCongestionPacket *packet); /** * Thread-safe while Takion is running. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_feedback_state(ChiakiTakion *takion, ChiakiSeqNum16 seq_num, ChiakiFeedbackState *feedback_state); /** * Thread-safe while Takion is running. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_feedback_history(ChiakiTakion *takion, ChiakiSeqNum16 seq_num, uint8_t *payload, size_t payload_size); #define CHIAKI_TAKION_V9_AV_HEADER_SIZE_VIDEO 0x17 #define CHIAKI_TAKION_V9_AV_HEADER_SIZE_AUDIO 0x12 CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_v9_av_packet_parse(ChiakiTakionAVPacket *packet, ChiakiKeyState *key_state, uint8_t *buf, size_t buf_size); #define CHIAKI_TAKION_V12_AV_HEADER_SIZE_VIDEO 0x17 #define CHIAKI_TAKION_V12_AV_HEADER_SIZE_AUDIO 0x13 CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_v12_av_packet_parse(ChiakiTakionAVPacket *packet, ChiakiKeyState *key_state, uint8_t *buf, size_t buf_size); #define CHIAKI_TAKION_V7_AV_HEADER_SIZE_BASE 0x12 #define CHIAKI_TAKION_V7_AV_HEADER_SIZE_VIDEO_ADD 0x3 #define CHIAKI_TAKION_V7_AV_HEADER_SIZE_NALU_INFO_STRUCTS_ADD 0x3 CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_v7_av_packet_format_header(uint8_t *buf, size_t buf_size, size_t *header_size_out, ChiakiTakionAVPacket *packet); CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_v7_av_packet_parse(ChiakiTakionAVPacket *packet, ChiakiKeyState *key_state, uint8_t *buf, size_t buf_size); #define CHIAKI_TAKION_CONGESTION_PACKET_SIZE 0xf CHIAKI_EXPORT void chiaki_takion_format_congestion(uint8_t *buf, ChiakiTakionCongestionPacket *packet, uint64_t key_pos); #ifdef __cplusplus } #endif #endif // CHIAKI_TAKION_H chiaki-v2.2.0/lib/include/chiaki/takionsendbuffer.h000066400000000000000000000035061447035777400223020ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_TAKIONSENDBUFFER_H #define CHIAKI_TAKIONSENDBUFFER_H #include "common.h" #include "log.h" #include "thread.h" #include "seqnum.h" #include #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_takion_t ChiakiTakion; typedef struct chiaki_takion_send_buffer_packet_t ChiakiTakionSendBufferPacket; typedef struct chiaki_takion_send_buffer_t { ChiakiLog *log; ChiakiTakion *takion; ChiakiTakionSendBufferPacket *packets; size_t packets_size; // allocated size size_t packets_count; // current count ChiakiMutex mutex; ChiakiCond cond; bool should_stop; ChiakiThread thread; } ChiakiTakionSendBuffer; /** * Init a Send Buffer and start a thread that automatically re-sends packets on takion. * * @param takion if NULL, the Send Buffer thread will effectively do nothing (for unit testing) * @param size number of packet slots */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_buffer_init(ChiakiTakionSendBuffer *send_buffer, ChiakiTakion *takion, size_t size); CHIAKI_EXPORT void chiaki_takion_send_buffer_fini(ChiakiTakionSendBuffer *send_buffer); /** * @param buf ownership of this is taken by the ChiakiTakionSendBuffer, which will free it automatically later! * On error, buf is freed immediately. */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_buffer_push(ChiakiTakionSendBuffer *send_buffer, ChiakiSeqNum32 seq_num, uint8_t *buf, size_t buf_size); /** * @param acked_seq_nums optional array of size of at least send_buffer->packets_size where acked seq nums will be stored */ CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_buffer_ack(ChiakiTakionSendBuffer *send_buffer, ChiakiSeqNum32 seq_num, ChiakiSeqNum32 *acked_seq_nums, size_t *acked_seq_nums_count); #ifdef __cplusplus } #endif #endif // CHIAKI_TAKIONSENDBUFFER_H chiaki-v2.2.0/lib/include/chiaki/thread.h000066400000000000000000000063401447035777400202170ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_THREAD_H #define CHIAKI_THREAD_H #include "common.h" #ifdef __cplusplus extern "C" { #endif #include #include #ifdef _WIN32 #include #else #include #endif typedef void *(*ChiakiThreadFunc)(void *); typedef struct chiaki_thread_t { #ifdef _WIN32 HANDLE thread; ChiakiThreadFunc func; void *arg; void *ret; #else pthread_t thread; #endif } ChiakiThread; CHIAKI_EXPORT ChiakiErrorCode chiaki_thread_create(ChiakiThread *thread, ChiakiThreadFunc func, void *arg); CHIAKI_EXPORT ChiakiErrorCode chiaki_thread_join(ChiakiThread *thread, void **retval); CHIAKI_EXPORT ChiakiErrorCode chiaki_thread_set_name(ChiakiThread *thread, const char *name); typedef struct chiaki_mutex_t { #ifdef _WIN32 CRITICAL_SECTION cs; #else pthread_mutex_t mutex; #endif } ChiakiMutex; CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_init(ChiakiMutex *mutex, bool rec); CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_fini(ChiakiMutex *mutex); CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_lock(ChiakiMutex *mutex); CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_trylock(ChiakiMutex *mutex); CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_unlock(ChiakiMutex *mutex); typedef struct chiaki_cond_t { #ifdef _WIN32 CONDITION_VARIABLE cond; #else pthread_cond_t cond; #endif } ChiakiCond; typedef bool (*ChiakiCheckPred)(void *); CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_init(ChiakiCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_fini(ChiakiCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_wait(ChiakiCond *cond, ChiakiMutex *mutex); CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_timedwait(ChiakiCond *cond, ChiakiMutex *mutex, uint64_t timeout_ms); CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_wait_pred(ChiakiCond *cond, ChiakiMutex *mutex, ChiakiCheckPred check_pred, void *check_pred_user); CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_timedwait_pred(ChiakiCond *cond, ChiakiMutex *mutex, uint64_t timeout_ms, ChiakiCheckPred check_pred, void *check_pred_user); CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_signal(ChiakiCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_broadcast(ChiakiCond *cond); typedef struct chiaki_bool_pred_cond_t { ChiakiCond cond; ChiakiMutex mutex; bool pred; } ChiakiBoolPredCond; CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_init(ChiakiBoolPredCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_fini(ChiakiBoolPredCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_lock(ChiakiBoolPredCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_unlock(ChiakiBoolPredCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_wait(ChiakiBoolPredCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_timedwait(ChiakiBoolPredCond *cond, uint64_t timeout_ms); CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_signal(ChiakiBoolPredCond *cond); CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_broadcast(ChiakiBoolPredCond *cond); #ifdef __cplusplus } class ChiakiMutexLock { private: ChiakiMutex * const mutex; public: ChiakiMutexLock(ChiakiMutex *mutex) : mutex(mutex) { chiaki_mutex_lock(mutex); } ~ChiakiMutexLock() { chiaki_mutex_unlock(mutex); } }; #endif #endif // CHIAKI_THREAD_H chiaki-v2.2.0/lib/include/chiaki/time.h000066400000000000000000000006231447035777400177040ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_TIME_H #define CHIAKI_TIME_H #include "common.h" #include #ifdef __cplusplus extern "C" { #endif CHIAKI_EXPORT uint64_t chiaki_time_now_monotonic_us(); static inline uint64_t chiaki_time_now_monotonic_ms() { return chiaki_time_now_monotonic_us() / 1000; } #ifdef __cplusplus } #endif #endif // CHIAKI_TIME_H chiaki-v2.2.0/lib/include/chiaki/video.h000066400000000000000000000007161447035777400200570ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_VIDEO_H #define CHIAKI_VIDEO_H #include #include #ifdef __cplusplus extern "C" { #endif typedef struct chiaki_video_profile_t { unsigned int width; unsigned int height; size_t header_sz; uint8_t *header; } ChiakiVideoProfile; /** * Padding for FFMPEG */ #define CHIAKI_VIDEO_BUFFER_PADDING_SIZE 64 #ifdef __cplusplus } #endif #endif // CHIAKI_VIDEO_H chiaki-v2.2.0/lib/include/chiaki/videoreceiver.h000066400000000000000000000043051447035777400216020ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_VIDEORECEIVER_H #define CHIAKI_VIDEORECEIVER_H #include "common.h" #include "log.h" #include "video.h" #include "takion.h" #include "frameprocessor.h" #ifdef __cplusplus extern "C" { #endif #define CHIAKI_VIDEO_PROFILES_MAX 8 typedef struct chiaki_video_receiver_t { struct chiaki_session_t *session; ChiakiLog *log; ChiakiVideoProfile profiles[CHIAKI_VIDEO_PROFILES_MAX]; size_t profiles_count; int profile_cur; // < 1 if no profile selected yet, else index in profiles int32_t frame_index_cur; // frame that is currently being filled int32_t frame_index_prev; // last frame that has been at least partially decoded int32_t frame_index_prev_complete; // last frame that has been completely decoded ChiakiFrameProcessor frame_processor; ChiakiPacketStats *packet_stats; } ChiakiVideoReceiver; CHIAKI_EXPORT void chiaki_video_receiver_init(ChiakiVideoReceiver *video_receiver, struct chiaki_session_t *session, ChiakiPacketStats *packet_stats); CHIAKI_EXPORT void chiaki_video_receiver_fini(ChiakiVideoReceiver *video_receiver); /** * Called after receiving the Stream Info Packet. * * @param video_receiver * @param profiles Array of profiles. Ownership of the contained header buffers will be transferred to the ChiakiVideoReceiver! * @param profiles_count must be <= CHIAKI_VIDEO_PROFILES_MAX */ CHIAKI_EXPORT void chiaki_video_receiver_stream_info(ChiakiVideoReceiver *video_receiver, ChiakiVideoProfile *profiles, size_t profiles_count); CHIAKI_EXPORT void chiaki_video_receiver_av_packet(ChiakiVideoReceiver *video_receiver, ChiakiTakionAVPacket *packet); static inline ChiakiVideoReceiver *chiaki_video_receiver_new(struct chiaki_session_t *session, ChiakiPacketStats *packet_stats) { ChiakiVideoReceiver *video_receiver = CHIAKI_NEW(ChiakiVideoReceiver); if(!video_receiver) return NULL; chiaki_video_receiver_init(video_receiver, session, packet_stats); return video_receiver; } static inline void chiaki_video_receiver_free(ChiakiVideoReceiver *video_receiver) { if(!video_receiver) return; chiaki_video_receiver_fini(video_receiver); free(video_receiver); } #ifdef __cplusplus } #endif #endif // CHIAKI_VIDEORECEIVER_H chiaki-v2.2.0/lib/protobuf/000077500000000000000000000000001447035777400155615ustar00rootroot00000000000000chiaki-v2.2.0/lib/protobuf/CMakeLists.txt000066400000000000000000000024071447035777400203240ustar00rootroot00000000000000 find_program(PROTOC protoc) if(NOT PROTOC) message(FATAL_ERROR "Could not find protoc") endif() add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/takion.pb" COMMAND "${PROTOC}" "-o${CMAKE_CURRENT_BINARY_DIR}/takion.pb" "${CMAKE_CURRENT_SOURCE_DIR}/takion.proto" "-I${CMAKE_CURRENT_SOURCE_DIR}" MAIN_DEPENDENCY "${CMAKE_CURRENT_SOURCE_DIR}/takion.proto") set(SOURCE_FILES "${CMAKE_CURRENT_BINARY_DIR}/takion.pb.c") set(HEADER_FILES "${CMAKE_CURRENT_BINARY_DIR}/takion.pb.h") if(UNIX AND IS_ABSOLUTE "${PROTOC}") # make sure protoc is in PATH when invoking the generator below, which needs it. get_filename_component(PROTOC_PATH "${PROTOC}" DIRECTORY) set(GEN_PREFIX "${CMAKE_COMMAND}" -E env "PATH=${PROTOC_PATH}:$ENV{PATH}") else() set(GEN_PREFIX "") endif() add_custom_command(OUTPUT ${SOURCE_FILES} ${HEADER_FILES} COMMAND ${GEN_PREFIX} "${PYTHON_EXECUTABLE}" "${NANOPB_GENERATOR_PY}" "${CMAKE_CURRENT_BINARY_DIR}/takion.pb" MAIN_DEPENDENCY "${CMAKE_CURRENT_BINARY_DIR}/takion.pb") set(CHIAKI_LIB_PROTO_SOURCE_FILES "${SOURCE_FILES}" PARENT_SCOPE) set(CHIAKI_LIB_PROTO_HEADER_FILES "${HEADER_FILES}" PARENT_SCOPE) set(CHIAKI_LIB_PROTO_INCLUDE_DIR "${CMAKE_CURRENT_BINARY_DIR}" PARENT_SCOPE) add_custom_target(chiaki-pb DEPENDS ${SOURCE_FILES} ${HEADER_FILES}) chiaki-v2.2.0/lib/protobuf/takion.proto000066400000000000000000000273001447035777400201350ustar00rootroot00000000000000syntax = "proto2"; package tkproto; message TakionMessage { required PayloadType type = 1; enum PayloadType { BIG = 0; BANG = 1; INFO = 2; HEARTBEAT = 3; PACKETLOSS = 4; CORRUPTFRAME = 5; CURSOR = 6; TIMER = 7; DISCONNECT = 8; LOG = 9; HEADERREQUEST = 10; DEBUG = 11; SENKUSHA = 12; STREAMINFO = 13; STREAMINFOACK = 14; XMBCOMMAND = 15; CONNECTIONQUALITY = 16; CLIENTMETRIC = 17; PLAYTIMELEFT = 18; SERVERMESSAGE = 19; FPSCHANGE = 20; CONTROLLERCONNECTION = 21; CLIENTINFO = 22; VIDEOCAPTURE = 23; AUDIOCAPTURE = 24; IDRREQUEST = 25; GKTRACE = 26; PERIODICTIMESTAMP = 27; SERVERSETTINGS = 28; DIRECTMESSAGE = 29; MICCONNECTION = 30; TAKIONPROTOCOLREQUEST = 31; TAKIONPROTOCOLREQUESTACK = 32; } optional BigPayload big_payload = 2; optional BangPayload bang_payload = 3; optional InfoPayload info_payload = 4; optional PacketLossPayload loss_payload = 5; optional CorruptFramePayload corrupt_payload = 6; optional CursorPayload cursor_payload = 8; optional TimerPayload timer_payload = 9; optional DisconnectPayload disconnect_payload = 10; optional LogPayload log_payload = 11; optional HeaderRequestPayload header_payload = 12; optional DebugOption debug_payload = 13; optional SenkushaPayload senkusha_payload = 14; optional StreamInfoPayload stream_info_payload = 15; optional XmbCommandPayload xmb_command_payload = 16; optional ConnectionQualityPayload connection_quality_payload = 17; optional ClientMetricPayload client_metric_payload = 18; optional PlayTimeLeftPayload play_time_left_payload = 19; optional ServerMessagePayload server_message_payload = 20; optional FpsChangePayload fps_change_payload = 21; optional ControllerConnectionPayload controller_connection_payload = 22; optional ClientInfoPayload client_info_payload = 23; optional VideoCapturePayload video_capture_payload = 24; optional AudioCapturePayload audio_capture_payload = 25; optional GkTracePayload gk_trace_payload = 26; optional PeriodicTimestampPayload periodic_timestamp_payload = 27; optional ServerSettingsPayload server_settings_payload = 28; optional DirectMessagePayload direct_message_payload = 29; optional MicConnectionPayload mic_connection_payload = 30; optional TakionProtocolRequestPayload takion_protocol_request = 31; optional TakionProtocolRequestAckPayload takion_protocol_request_ack = 32; } message EventCode { required string event_code = 1; optional string name = 2; optional string description = 3; } message BigPayload { required uint32 client_version = 1; required string session_key = 2; required string launch_spec = 3; required bytes encrypted_key = 4; optional bytes ecdh_pub_key = 5; optional bytes ecdh_sig = 6; } message BangPayload { required uint32 server_version = 1; required uint32 token = 2; required bool encrypted_key_accepted = 3; required bool version_accepted = 4; required string session_key = 5; optional EventCode extended_info = 6; optional string server_version_string = 7; optional bytes ecdh_pub_key = 8; optional bytes ecdh_sig = 9; } message InfoPayload { required uint32 effective_bw = 1; required uint32 bitrate = 2; required uint32 min_bitrate = 3; required uint32 target_bitrate = 4; required uint32 corrupt_frame_freq = 5; required uint32 mtu = 6; required uint32 fps = 7; required uint32 monitor_interval = 8; required uint32 ext_overhead = 9; required uint32 int_overhead = 10; required uint32 timeout_interval = 11; required uint32 min_resume_quality = 12; required uint32 min_fps = 13; } message CursorPayload { required uint32 id = 1; required uint32 width = 2; required uint32 height = 3; required uint32 hotspot_x = 4; required uint32 hotspot_y = 5; optional bytes pixels = 6; } message TimerPayload { required uint32 seconds_left = 1; required uint32 total_seconds = 2; } message CorruptFramePayload { required uint32 start = 1; required uint32 end = 2; } message PacketLossPayload { required uint32 start = 1; required uint32 end = 2; required uint32 packets_received = 3; } message FpsChangePayload { required uint32 fps = 1; } message DisconnectPayload { required string reason = 1; optional EventCode extended_info = 2; } message LogMessage { required int64 timestamp = 1; required LogLevel level = 2; enum LogLevel { CRITICAL = 0; ERROR = 1; WARNING = 2; INFO = 3; DEBUG = 4; TRACE = 5; } required string component = 3; required string message = 4; optional double timestampdouble = 5; } message LogPayload { repeated LogMessage messages = 1; } message ClientMetric { required Category category = 1; enum Category { VIDEO_FRAMELIFETIME = 0; VIDEO_FRAMENALUSCOMPLETE = 1; VIDEO_FECCORRECTION = 2; VIDEO_FRAMEQUEUE = 3; VIDEO_DECODERFRAMEQUEUE = 4; VIDEO_SUBMITTODECODER = 5; VIDEO_DECODE = 6; VIDEO_DECODEDPICTUREDROP = 7; VIDEO_YUVCOPY = 8; VIDEO_TEXTURECOPY = 9; VIDEO_RENDER = 10; GRAPHICS_PRERENDER = 11; GRAPHICS_PRESENT = 12; AUDIO_FRAMELIFETIME = 13; AUDIO_FRAMENALUSCOMPLETE = 14; AUDIO_FECCORRECTION = 15; AUDIO_FRAMEQUEUE = 16; AUDIO_SUBMITTODECODER = 17; AUDIO_DECODE = 18; AUDIO_BUFFERCOPY = 19; AUDIO_RENDER = 20; } required int32 start_frame = 2; required int32 end_frame = 3; required int32 count = 5; required float average = 6; required float std_dev = 7; required float min_val = 8; required float max_val = 9; } message ClientMetricPayload { repeated ClientMetric messages = 1; } message HeaderRequestPayload { required HeaderType type = 1; enum HeaderType { AUDIO = 0; VIDEO = 1; } } message DebugOption { required Type type = 1; enum Type { OVERLAY = 0; BITRATE = 1; } optional OverlayPayload overlay = 2; optional BitratePayload bitrate = 3; } message OverlayPayload { optional bool enable = 1; optional bool toggle = 2; optional LogLocation location = 3; enum LogLocation { TOP_LEFT = 0; TOP_RIGHT = 1; BOTTOM_LEFT = 2; BOTTOM_RIGHT = 3; } optional uint32 level = 4; } message BitratePayload { optional bool toggle = 1; optional float bitrate_change = 2; } message ResolutionPayload { required uint32 width = 1; required uint32 height = 2; required bytes video_header = 3; } message AudioChannelPayload { required uint32 audio_channel_type = 1; required bytes audio_header = 2; optional bool is_raw_pcm = 3; } message StreamInfoPayload { repeated ResolutionPayload resolution = 1; required bytes audio_header = 2; optional uint32 start_timeout = 3; optional uint32 afk_timeout = 4; optional uint32 afk_timeout_disconnect = 5; optional uint32 congestion_control_interval = 6; repeated AudioChannelPayload audio_channel = 7; } message XmbCommandPayload { required XmbCommand command = 1; enum XmbCommand { OFF = 0; ON = 1; TOGGLE = 2; } optional uint32 player_id = 2; } message ConnectionQualityPayload { optional uint32 target_bitrate = 1; optional uint32 upstream_bitrate = 2; optional float upstream_loss = 3; optional bool disable_upstream_audio = 4; optional double rtt = 5; optional uint64 loss = 6; } message PlayTimeLeftPayload { optional uint32 time_left = 1; optional string reason = 2; } message ServerMessagePayload { optional string payload = 1; } message ControllerConnectionPayload { optional int32 controller_id = 1; optional bool connected = 2; optional ControllerType controller_type = 3; enum ControllerType { NOTSET = 0; DUALSHOCK3 = 1; DUALSHOCK4 = 2; VITA = 3; XINPUT = 4; MOBILE = 5; DUALSENSE = 6; VR2SENSE = 7; } } message ClientInfoPayload { required string session_key = 1; optional uint32 gcm_tag = 2; optional uint32 key_pos = 3; } message VideoCapturePayload { optional bool server_side = 1 [default = false]; optional uint32 idr_period = 2 [default = 0]; } message AudioCapturePayload { optional bool server_side = 1 [default = false]; } message ServerSettingsPayload { optional uint32 idr_period = 1 [default = 0]; optional bool send_periodic_timestamp = 2 [default = false]; } message GkTracePayload { required uint32 seq_no = 1; required uint32 gcm_tag = 2; required uint32 key_pos = 3; } message PeriodicTimestampPayload { required bytes periodic_ts_info = 1; required uint32 version = 2; } message DeepLinkPayload { required DeepLinkType deep_link_type = 1; enum DeepLinkType { SAVE_DATA = 0; INVITE = 1; GAME_ALERT = 2; SYSTEM_SERVICE_STATUS = 3; DEBUG_VSH_MENU = 4; RAW = 5; } optional uint32 request_id = 2; optional uint32 pad_unique_id = 3; optional string invitation_id = 4; optional string session_id = 5; optional string item_id = 6; optional string is_system_ui_overlaid = 7; optional uint32 result = 8; optional bool should_show = 9; optional string raw_data = 10; } message MicInfoPayload { required MicInfoType mic_info_type = 1; enum MicInfoType { MIC_CONNECT = 0; MIC_MUTE = 1; } optional uint32 controller_id = 2; optional bool connected = 3; optional bool muted = 4; optional bool result = 5; } message DirectMessagePayload { required DirectMessageType direct_message_type = 1; enum DirectMessageType { DEEPLINK = 0; MICINFO = 1; } required Destination destination = 2; enum Destination { GAIKAI_CONTROLLER = 1000; CLIENT = 1001; } optional bytes data = 3; } message MicConnectionPayload { required int32 controller_id = 1; required bool connected = 2; optional bool result = 3; } message TakionProtocolRequestPayload { repeated uint32 supported_takion_versions = 1; } message TakionProtocolRequestAckPayload { optional uint32 takion_protocol_version = 1; } message SenkushaPayload { required Command command = 1; enum Command { ECHO_COMMAND = 0; MTU_COMMAND = 1; BANDWIDTH_COMMAND = 3; CLIENT_MTU_COMMAND = 4; } optional SenkushaEchoCommand echo_command = 2; optional SenkushaMtuCommand mtu_command = 3; optional SenkushaBandwidthCommand bandwidth_command = 4; optional SenkushaClientMtuCommand client_mtu_command = 5; } message SenkushaEchoCommand { required bool state = 1; } message SenkushaMtuCommand { required uint32 id = 1; required uint32 mtu_req = 2; optional uint32 mtu_sent = 3; optional uint32 num = 4; optional uint32 send_delay = 5; optional uint32 delta = 6; } message SenkushaBandwidthCommand { required uint32 id = 1; required uint32 time = 2; optional uint32 bandwidth = 3; optional uint32 fps = 4; optional uint32 mtu = 5; optional uint32 nalu_count = 6; optional uint32 total_sent = 7; optional bool upstream = 8; optional double loss = 9; } message SenkushaClientMtuCommand { required uint32 id = 1; required uint32 mtu_req = 2; required bool state = 3; optional uint32 mtu_down = 4; } chiaki-v2.2.0/lib/src/000077500000000000000000000000001447035777400145105ustar00rootroot00000000000000chiaki-v2.2.0/lib/src/audio.c000066400000000000000000000017031447035777400157560ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #ifdef _WIN32 #include #else #include #endif #ifdef __SWITCH__ #include #endif void chiaki_audio_header_load(ChiakiAudioHeader *audio_header, const uint8_t *buf) { audio_header->channels = buf[0]; audio_header->bits = buf[1]; audio_header->rate = ntohl(*((chiaki_unaligned_uint32_t *)(buf + 2))); audio_header->frame_size = ntohl(*((chiaki_unaligned_uint32_t *)(buf + 6))); audio_header->unknown = ntohl(*((chiaki_unaligned_uint32_t *)(buf + 0xa))); } void chiaki_audio_header_save(ChiakiAudioHeader *audio_header, uint8_t *buf) { buf[0] = audio_header->bits; buf[1] = audio_header->channels; *((chiaki_unaligned_uint32_t *)(buf + 2)) = htonl(audio_header->rate); *((chiaki_unaligned_uint32_t *)(buf + 6)) = htonl(audio_header->frame_size); *((chiaki_unaligned_uint32_t *)(buf + 0xa)) = htonl(audio_header->unknown); } chiaki-v2.2.0/lib/src/audioreceiver.c000066400000000000000000000107521447035777400175070ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include static void chiaki_audio_receiver_frame(ChiakiAudioReceiver *audio_receiver, ChiakiSeqNum16 frame_index, bool is_haptics, uint8_t *buf, size_t buf_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_audio_receiver_init(ChiakiAudioReceiver *audio_receiver, ChiakiSession *session, ChiakiPacketStats *packet_stats) { audio_receiver->session = session; audio_receiver->log = session->log; audio_receiver->packet_stats = packet_stats; audio_receiver->frame_index_prev = 0; audio_receiver->frame_index_startup = true; ChiakiErrorCode err = chiaki_mutex_init(&audio_receiver->mutex, false); if(err != CHIAKI_ERR_SUCCESS) return err; return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_audio_receiver_fini(ChiakiAudioReceiver *audio_receiver) { #ifdef CHIAKI_LIB_ENABLE_OPUS opus_decoder_destroy(audio_receiver->opus_decoder); #endif chiaki_mutex_fini(&audio_receiver->mutex); } CHIAKI_EXPORT void chiaki_audio_receiver_stream_info(ChiakiAudioReceiver *audio_receiver, ChiakiAudioHeader *audio_header) { chiaki_mutex_lock(&audio_receiver->mutex); CHIAKI_LOGI(audio_receiver->log, "Audio Header:"); CHIAKI_LOGI(audio_receiver->log, " channels = %d", audio_header->channels); CHIAKI_LOGI(audio_receiver->log, " bits = %d", audio_header->bits); CHIAKI_LOGI(audio_receiver->log, " rate = %d", audio_header->rate); CHIAKI_LOGI(audio_receiver->log, " frame size = %d", audio_header->frame_size); CHIAKI_LOGI(audio_receiver->log, " unknown = %d", audio_header->unknown); if(audio_receiver->session->audio_sink.header_cb) audio_receiver->session->audio_sink.header_cb(audio_header, audio_receiver->session->audio_sink.user); chiaki_mutex_unlock(&audio_receiver->mutex); } CHIAKI_EXPORT void chiaki_audio_receiver_av_packet(ChiakiAudioReceiver *audio_receiver, ChiakiTakionAVPacket *packet) { if(packet->codec != 5) { CHIAKI_LOGE(audio_receiver->log, "Received Audio Packet with unknown Codec"); return; } // this is mostly observation-based, so may not necessarily cover everything yet. uint8_t source_units_count = chiaki_takion_av_packet_audio_source_units_count(packet); uint8_t fec_units_count = chiaki_takion_av_packet_audio_fec_units_count(packet); uint8_t unit_size = chiaki_takion_av_packet_audio_unit_size(packet); if(!packet->data_size) { CHIAKI_LOGE(audio_receiver->log, "Audio AV Packet is empty"); return; } if((uint16_t)fec_units_count + (uint16_t)source_units_count != packet->units_in_frame_total) { CHIAKI_LOGE(audio_receiver->log, "Source Units + FEC Units != Total Units in Audio AV Packet"); return; } if(packet->data_size != (size_t)unit_size * (size_t)packet->units_in_frame_total) { CHIAKI_LOGE(audio_receiver->log, "Audio AV Packet size mismatch %#llx vs %#llx", (unsigned long long)packet->data_size, (unsigned long long)(unit_size * packet->units_in_frame_total)); return; } if(packet->frame_index > (1 << 15)) audio_receiver->frame_index_startup = false; for(size_t i = 0; i < source_units_count + fec_units_count; i++) { ChiakiSeqNum16 frame_index; if(i < source_units_count) frame_index = packet->frame_index + i; else { // fec size_t fec_index = i - source_units_count; // first packets will contain the same frame multiple times, ignore those if(audio_receiver->frame_index_startup && packet->frame_index + fec_index < fec_units_count + 1) continue; frame_index = packet->frame_index - fec_units_count + fec_index; } chiaki_audio_receiver_frame(audio_receiver, frame_index, packet->is_haptics, packet->data + unit_size * i, unit_size); } if(audio_receiver->packet_stats) chiaki_packet_stats_push_seq(audio_receiver->packet_stats, packet->frame_index); } static void chiaki_audio_receiver_frame(ChiakiAudioReceiver *audio_receiver, ChiakiSeqNum16 frame_index, bool is_haptics, uint8_t *buf, size_t buf_size) { chiaki_mutex_lock(&audio_receiver->mutex); if(!chiaki_seq_num_16_gt(frame_index, audio_receiver->frame_index_prev)) goto beach; audio_receiver->frame_index_prev = frame_index; if(is_haptics && audio_receiver->session->haptics_sink.frame_cb) audio_receiver->session->haptics_sink.frame_cb(buf, buf_size, audio_receiver->session->haptics_sink.user); else if(!is_haptics && audio_receiver->session->audio_sink.frame_cb) audio_receiver->session->audio_sink.frame_cb(buf, buf_size, audio_receiver->session->audio_sink.user); beach: chiaki_mutex_unlock(&audio_receiver->mutex); } chiaki-v2.2.0/lib/src/base64.c000066400000000000000000000110501447035777400157350ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include // Implementations taken from // https://en.wikibooks.org/wiki/Algorithm_Implementation/Miscellaneous/Base64 CHIAKI_EXPORT ChiakiErrorCode chiaki_base64_encode(const uint8_t *in, size_t in_size, char *out, size_t out_size) { const char base64chars[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; size_t result_index = 0; size_t x; uint32_t n = 0; size_t pad_count = in_size % 3; uint8_t n0, n1, n2, n3; // increment over the length of the string, three characters at a time for(x = 0; x < in_size; x += 3) { // these three 8-bit (ASCII) characters become one 24-bit number n = ((uint32_t)in[x]) << 16; if((x + 1) < in_size) n += ((uint32_t)in[x + 1]) << 8; if((x + 2) < in_size) n += in[x + 2]; // this 24-bit number gets separated into four 6-bit numbers n0 = (uint8_t)(n >> 18) & 63; n1 = (uint8_t)(n >> 12) & 63; n2 = (uint8_t)(n >> 6) & 63; n3 = (uint8_t)n & 63; // if we have one byte available, then its encoding is spread // out over two characters if(result_index >= out_size) return CHIAKI_ERR_BUF_TOO_SMALL; out[result_index++] = base64chars[n0]; if(result_index >= out_size) return CHIAKI_ERR_BUF_TOO_SMALL; out[result_index++] = base64chars[n1]; // if we have only two bytes available, then their encoding is // spread out over three chars if((x + 1) < in_size) { if(result_index >= out_size) return CHIAKI_ERR_BUF_TOO_SMALL; out[result_index++] = base64chars[n2]; } // if we have all three bytes available, then their encoding is spread // out over four characters if((x + 2) < in_size) { if(result_index >= out_size) return CHIAKI_ERR_BUF_TOO_SMALL; out[result_index++] = base64chars[n3]; } } // create and add padding that is required if we did not have a multiple of 3 // number of characters available if(pad_count > 0) { for(; pad_count < 3; pad_count++) { if(result_index >= out_size) return CHIAKI_ERR_BUF_TOO_SMALL; out[result_index++] = '='; } } if(result_index >= out_size) return CHIAKI_ERR_BUF_TOO_SMALL; out[result_index] = 0; return CHIAKI_ERR_SUCCESS; } #define WHITESPACE 64 #define EQUALS 65 #define INVALID 66 static const unsigned char d[] = { 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 64, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 62, 66, 66, 66, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 66, 66, 66, 65, 66, 66, 66, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 66, 66, 66, 66, 66, 66, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66, 66 }; CHIAKI_EXPORT ChiakiErrorCode chiaki_base64_decode(const char *in, size_t in_size, uint8_t *out, size_t *out_size) { const char *end = in + in_size; char iter = 0; uint32_t buf = 0; size_t len = 0; while(in < end) { unsigned char c = d[(size_t)(*in++)]; switch(c) { case WHITESPACE: continue; // skip whitespace case INVALID: return CHIAKI_ERR_INVALID_DATA; // invalid input case EQUALS: // pad character, end of data in = end; continue; default: buf = buf << 6 | c; iter++; // increment the number of iteration // If the buffer is full, split it into bytes if(iter == 4) { if((len += 3) > *out_size) return CHIAKI_ERR_BUF_TOO_SMALL; *(out++) = (unsigned char)((buf >> 16) & 0xff); *(out++) = (unsigned char)((buf >> 8) & 0xff); *(out++) = (unsigned char)(buf & 0xff); buf = 0; iter = 0; } } } if(iter == 3) { if((len += 2) > *out_size) return CHIAKI_ERR_BUF_TOO_SMALL; *(out++) = (unsigned char)((buf >> 10) & 0xff); *(out++) = (unsigned char)((buf >> 2) & 0xff); } else if(iter == 2) { if(++len > *out_size) return CHIAKI_ERR_BUF_TOO_SMALL; *(out++) = (unsigned char)((buf >> 4) & 0xff); } *out_size = len; return CHIAKI_ERR_SUCCESS; } chiaki-v2.2.0/lib/src/common.c000066400000000000000000000051601447035777400161460ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #ifdef _WIN32 #include #endif CHIAKI_EXPORT const char *chiaki_error_string(ChiakiErrorCode code) { switch(code) { case CHIAKI_ERR_SUCCESS: return "Success"; case CHIAKI_ERR_PARSE_ADDR: return "Failed to parse host address"; case CHIAKI_ERR_THREAD: return "Thread error"; case CHIAKI_ERR_MEMORY: return "Memory error"; case CHIAKI_ERR_NETWORK: return "Network error"; case CHIAKI_ERR_CONNECTION_REFUSED: return "Connection Refused"; case CHIAKI_ERR_HOST_DOWN: return "Host is down"; case CHIAKI_ERR_HOST_UNREACH: return "No route to host"; case CHIAKI_ERR_DISCONNECTED: return "Disconnected"; case CHIAKI_ERR_INVALID_DATA: return "Invalid data"; case CHIAKI_ERR_BUF_TOO_SMALL: return "Buffer too small"; case CHIAKI_ERR_MUTEX_LOCKED: return "Mutex is locked"; case CHIAKI_ERR_CANCELED: return "Canceled"; case CHIAKI_ERR_TIMEOUT: return "Timeout"; case CHIAKI_ERR_INVALID_RESPONSE: return "Invalid Response"; case CHIAKI_ERR_INVALID_MAC: return "Invalid MAC"; case CHIAKI_ERR_UNINITIALIZED: return "Uninitialized"; case CHIAKI_ERR_FEC_FAILED: return "FEC failed"; default: return "Unknown"; } } CHIAKI_EXPORT void *chiaki_aligned_alloc(size_t alignment, size_t size) { #if defined(_WIN32) return _aligned_malloc(size, alignment); #elif __APPLE__ || __ANDROID__ void *r; if(posix_memalign(&r, alignment, size) == 0) return r; else return NULL; #else return aligned_alloc(alignment, size); #endif } CHIAKI_EXPORT void chiaki_aligned_free(void *ptr) { #ifdef _WIN32 _aligned_free(ptr); #else free(ptr); #endif } CHIAKI_EXPORT ChiakiErrorCode chiaki_lib_init() { unsigned int seed; chiaki_random_bytes_crypt((uint8_t *)&seed, sizeof(seed)); srand(seed); // doesn't necessarily need to be secure for crypto int galois_r = galois_init_default_field(CHIAKI_FEC_WORDSIZE); if(galois_r != 0) return galois_r == ENOMEM ? CHIAKI_ERR_MEMORY : CHIAKI_ERR_UNKNOWN; #if _WIN32 { WORD wsa_version = MAKEWORD(2, 2); WSADATA wsa_data; int err = WSAStartup(wsa_version, &wsa_data); if(err != 0) return CHIAKI_ERR_NETWORK; } #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT const char *chiaki_codec_name(ChiakiCodec codec) { switch(codec) { case CHIAKI_CODEC_H264: return "H264"; case CHIAKI_CODEC_H265: return "H265"; case CHIAKI_CODEC_H265_HDR: return "H265/HDR"; default: return "unknown"; } } chiaki-v2.2.0/lib/src/congestioncontrol.c000066400000000000000000000037421447035777400204330ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #define CONGESTION_CONTROL_INTERVAL_MS 200 static void *congestion_control_thread_func(void *user) { ChiakiCongestionControl *control = user; ChiakiErrorCode err = chiaki_bool_pred_cond_lock(&control->stop_cond); if(err != CHIAKI_ERR_SUCCESS) return NULL; while(true) { err = chiaki_bool_pred_cond_timedwait(&control->stop_cond, CONGESTION_CONTROL_INTERVAL_MS); if(err != CHIAKI_ERR_TIMEOUT) break; uint64_t received; uint64_t lost; chiaki_packet_stats_get(control->stats, true, &received, &lost); ChiakiTakionCongestionPacket packet = { 0 }; packet.received = (uint16_t)received; packet.lost = (uint16_t)lost; CHIAKI_LOGV(control->takion->log, "Sending Congestion Control Packet, received: %u, lost: %u", (unsigned int)packet.received, (unsigned int)packet.lost); chiaki_takion_send_congestion(control->takion, &packet); } chiaki_bool_pred_cond_unlock(&control->stop_cond); return NULL; } CHIAKI_EXPORT ChiakiErrorCode chiaki_congestion_control_start(ChiakiCongestionControl *control, ChiakiTakion *takion, ChiakiPacketStats *stats) { control->takion = takion; control->stats = stats; ChiakiErrorCode err = chiaki_bool_pred_cond_init(&control->stop_cond); if(err != CHIAKI_ERR_SUCCESS) return err; err = chiaki_thread_create(&control->thread, congestion_control_thread_func, control); if(err != CHIAKI_ERR_SUCCESS) { chiaki_bool_pred_cond_fini(&control->stop_cond); return err; } chiaki_thread_set_name(&control->thread, "Chiaki Congestion Control"); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_congestion_control_stop(ChiakiCongestionControl *control) { ChiakiErrorCode err = chiaki_bool_pred_cond_signal(&control->stop_cond); if(err != CHIAKI_ERR_SUCCESS) return err; err = chiaki_thread_join(&control->thread, NULL); if(err != CHIAKI_ERR_SUCCESS) return err; return chiaki_bool_pred_cond_fini(&control->stop_cond); } chiaki-v2.2.0/lib/src/controller.c000066400000000000000000000075301447035777400170440ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #define TOUCH_ID_MASK 0x7f CHIAKI_EXPORT void chiaki_controller_state_set_idle(ChiakiControllerState *state) { state->buttons = 0; state->l2_state = 0; state->r2_state = 0; state->left_x = 0; state->left_y = 0; state->right_x = 0; state->right_y = 0; state->touch_id_next = 0; for(size_t i = 0; i < CHIAKI_CONTROLLER_TOUCHES_MAX; i++) { state->touches[i].id = -1; state->touches[i].x = 0; state->touches[i].y = 0; } state->gyro_x = state->gyro_y = state->gyro_z = 0.0f; state->accel_x = 0.0f; state->accel_y = 1.0f; state->accel_z = 0.0f; state->orient_x = 0.0f; state->orient_y = 0.0f; state->orient_z = 0.0f; state->orient_w = 1.0f; } CHIAKI_EXPORT int8_t chiaki_controller_state_start_touch(ChiakiControllerState *state, uint16_t x, uint16_t y) { for(size_t i = 0; i < CHIAKI_CONTROLLER_TOUCHES_MAX; i++) { if(state->touches[i].id < 0) { state->touches[i].id = state->touch_id_next; state->touch_id_next = (state->touch_id_next + 1) & TOUCH_ID_MASK; state->touches[i].x = x; state->touches[i].y = y; return state->touches[i].id; } } return -1; } CHIAKI_EXPORT void chiaki_controller_state_stop_touch(ChiakiControllerState *state, uint8_t id) { for(size_t i = 0; i < CHIAKI_CONTROLLER_TOUCHES_MAX; i++) { if(state->touches[i].id == id) { state->touches[i].id = -1; break; } } } CHIAKI_EXPORT void chiaki_controller_state_set_touch_pos(ChiakiControllerState *state, uint8_t id, uint16_t x, uint16_t y) { id &= TOUCH_ID_MASK; for(size_t i = 0; i < CHIAKI_CONTROLLER_TOUCHES_MAX; i++) { if(state->touches[i].id == id) { state->touches[i].x = x; state->touches[i].y = y; break; } } } CHIAKI_EXPORT bool chiaki_controller_state_equals(ChiakiControllerState *a, ChiakiControllerState *b) { if(!(a->buttons == b->buttons && a->l2_state == b->l2_state && a->r2_state == b->r2_state && a->left_x == b->left_x && a->left_y == b->left_y && a->right_x == b->right_x && a->right_y == b->right_y)) return false; for(size_t i=0; itouches[i].id != b->touches[i].id) return false; if(a->touches[i].id >= 0 && (a->touches[i].x != b->touches[i].x || a->touches[i].y != b->touches[i].y)) return false; } #define CHECKF(n) if(a->n < b->n - 0.0000001f || a->n > b->n + 0.0000001f) return false CHECKF(gyro_x); CHECKF(gyro_y); CHECKF(gyro_z); CHECKF(accel_x); CHECKF(accel_y); CHECKF(accel_z); CHECKF(orient_x); CHECKF(orient_y); CHECKF(orient_z); CHECKF(orient_w); #undef CHECKF return true; } #define MAX(a, b) ((a) > (b) ? (a) : (b)) #define ABS(a) ((a) > 0 ? (a) : -(a)) #define MAX_ABS(a, b) (ABS(a) > ABS(b) ? (a) : (b)) CHIAKI_EXPORT void chiaki_controller_state_or(ChiakiControllerState *out, ChiakiControllerState *a, ChiakiControllerState *b) { out->buttons = a->buttons | b->buttons; out->l2_state = MAX(a->l2_state, b->l2_state); out->r2_state = MAX(a->r2_state, b->r2_state); out->left_x = MAX_ABS(a->left_x, b->left_x); out->left_y = MAX_ABS(a->left_y, b->left_y); out->right_x = MAX_ABS(a->right_x, b->right_x); out->right_y = MAX_ABS(a->right_y, b->right_y); #define ORF(n, idle_val) if(a->n == idle_val) out->n = b->n; else out->n = a->n ORF(accel_x, 0.0f); ORF(accel_y, 1.0f); ORF(accel_z, 0.0f); ORF(gyro_x, 0.0f); ORF(gyro_y, 0.0f); ORF(gyro_z, 0.0f); ORF(orient_x, 0.0f); ORF(orient_y, 0.0f); ORF(orient_z, 0.0f); ORF(orient_w, 1.0f); #undef ORF out->touch_id_next = 0; for(size_t i = 0; i < CHIAKI_CONTROLLER_TOUCHES_MAX; i++) { ChiakiControllerTouch *touch = a->touches[i].id >= 0 ? &a->touches[i] : (b->touches[i].id >= 0 ? &b->touches[i] : NULL); if(!touch) { out->touches[i].id = -1; out->touches[i].x = out->touches[i].y = 0; continue; } if(touch != &out->touches[i]) out->touches[i] = *touch; } } chiaki-v2.2.0/lib/src/ctrl.c000066400000000000000000000753071447035777400156340ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #include #else #include #include #include #include #include #include #endif #define SESSION_OSTYPE "Win10.0.0" #define SESSION_CTRL_PORT 9295 #define CTRL_EXPECT_TIMEOUT 5000 typedef enum ctrl_message_type_t { CTRL_MESSAGE_TYPE_SESSION_ID = 0x33, CTRL_MESSAGE_TYPE_HEARTBEAT_REQ = 0xfe, CTRL_MESSAGE_TYPE_HEARTBEAT_REP = 0x1fe, CTRL_MESSAGE_TYPE_LOGIN_PIN_REQ = 0x4, CTRL_MESSAGE_TYPE_LOGIN_PIN_REP = 0x8004, CTRL_MESSAGE_TYPE_LOGIN = 0x5, CTRL_MESSAGE_TYPE_GOTO_BED = 0x50, CTRL_MESSAGE_TYPE_KEYBOARD_ENABLE_TOGGLE = 0x20, CTRL_MESSAGE_TYPE_KEYBOARD_OPEN = 0x21, CTRL_MESSAGE_TYPE_KEYBOARD_CLOSE_REMOTE = 0x22, CTRL_MESSAGE_TYPE_KEYBOARD_TEXT_CHANGE_REQ = 0x23, CTRL_MESSAGE_TYPE_KEYBOARD_TEXT_CHANGE_RES = 0x24, CTRL_MESSAGE_TYPE_KEYBOARD_CLOSE_REQ = 0x25, } CtrlMessageType; typedef enum ctrl_login_state_t { CTRL_LOGIN_STATE_SUCCESS = 0x0, CTRL_LOGIN_STATE_PIN_INCORRECT = 0x1 } CtrlLoginState; struct chiaki_ctrl_message_queue_t { ChiakiCtrlMessageQueue *next; uint16_t type; uint8_t *payload; size_t payload_size; }; typedef struct ctrl_keyboard_open_t { uint8_t unk[0x1C]; uint32_t text_length; } CtrlKeyboardOpenMessage; typedef struct ctrl_keyboard_text_request_t { uint32_t counter; uint32_t text_length1; uint8_t unk1[0x8]; uint8_t unk2[0x10]; uint32_t text_length2; } CtrlKeyboardTextRequestMessage; typedef struct ctrl_keyboard_text_response_t { uint32_t counter; uint32_t unk; uint32_t text_length1; uint32_t unk2; uint8_t unk3[0x10]; uint32_t unk4; uint32_t text_length2; } CtrlKeyboardTextResponseMessage; void chiaki_session_send_event(ChiakiSession *session, ChiakiEvent *event); static void *ctrl_thread_func(void *user); static ChiakiErrorCode ctrl_message_send(ChiakiCtrl *ctrl, uint16_t type, const uint8_t *payload, size_t payload_size); static void ctrl_enable_optional_features(ChiakiCtrl *ctrl); static void ctrl_message_received_session_id(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size); static void ctrl_message_received_heartbeat_req(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size); static void ctrl_message_received_login_pin_req(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size); static void ctrl_message_received_login(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size); static void ctrl_message_received_keyboard_open(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size); static void ctrl_message_received_keyboard_close(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size); static void ctrl_message_received_keyboard_text_change(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_init(ChiakiCtrl *ctrl, ChiakiSession *session) { ctrl->session = session; ctrl->should_stop = false; ctrl->login_pin_entered = false; ctrl->login_pin_requested = false; ctrl->login_pin = NULL; ctrl->login_pin_size = 0; ctrl->msg_queue = NULL; ctrl->keyboard_text_counter = 0; ChiakiErrorCode err = chiaki_stop_pipe_init(&ctrl->notif_pipe); if(err != CHIAKI_ERR_SUCCESS) return err; err = chiaki_mutex_init(&ctrl->notif_mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error_notif_pipe; return err; chiaki_mutex_fini(&ctrl->notif_mutex); error_notif_pipe: chiaki_stop_pipe_fini(&ctrl->notif_pipe); return err; } CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_start(ChiakiCtrl *ctrl) { ChiakiErrorCode err = chiaki_thread_create(&ctrl->thread, ctrl_thread_func, ctrl); if(err != CHIAKI_ERR_SUCCESS) return err; chiaki_thread_set_name(&ctrl->thread, "Chiaki Ctrl"); return err; } CHIAKI_EXPORT void chiaki_ctrl_stop(ChiakiCtrl *ctrl) { ChiakiErrorCode err = chiaki_mutex_lock(&ctrl->notif_mutex); assert(err == CHIAKI_ERR_SUCCESS); ctrl->should_stop = true; chiaki_stop_pipe_stop(&ctrl->notif_pipe); chiaki_mutex_unlock(&ctrl->notif_mutex); } CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_join(ChiakiCtrl *ctrl) { return chiaki_thread_join(&ctrl->thread, NULL); } CHIAKI_EXPORT void chiaki_ctrl_fini(ChiakiCtrl *ctrl) { chiaki_stop_pipe_fini(&ctrl->notif_pipe); chiaki_mutex_fini(&ctrl->notif_mutex); free(ctrl->login_pin); } static void ctrl_message_queue_free(ChiakiCtrlMessageQueue *queue) { free(queue->payload); free(queue); } CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_send_message(ChiakiCtrl *ctrl, uint16_t type, const uint8_t *payload, size_t payload_size) { ChiakiCtrlMessageQueue *queue = CHIAKI_NEW(ChiakiCtrlMessageQueue); if(!queue) return CHIAKI_ERR_MEMORY; queue->next = NULL; queue->type = type; if(payload) { queue->payload = malloc(payload_size); if(!queue->payload) { free(queue); return CHIAKI_ERR_MEMORY; } memcpy(queue->payload, payload, payload_size); queue->payload_size = payload_size; } else { queue->payload = NULL; queue->payload_size = 0; } ChiakiErrorCode err = chiaki_mutex_lock(&ctrl->notif_mutex); assert(err == CHIAKI_ERR_SUCCESS); if(!ctrl->msg_queue) ctrl->msg_queue = queue; else { ChiakiCtrlMessageQueue *c = ctrl->msg_queue; while(c->next) c = c->next; c->next = queue; } chiaki_mutex_unlock(&ctrl->notif_mutex); chiaki_stop_pipe_stop(&ctrl->notif_pipe); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_ctrl_set_login_pin(ChiakiCtrl *ctrl, const uint8_t *pin, size_t pin_size) { uint8_t *buf = malloc(pin_size); if(!buf) return; memcpy(buf, pin, pin_size); ChiakiErrorCode err = chiaki_mutex_lock(&ctrl->notif_mutex); assert(err == CHIAKI_ERR_SUCCESS); if(ctrl->login_pin_entered) free(ctrl->login_pin); ctrl->login_pin_entered = true; ctrl->login_pin = buf; ctrl->login_pin_size = pin_size; chiaki_stop_pipe_stop(&ctrl->notif_pipe); chiaki_mutex_unlock(&ctrl->notif_mutex); } CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_goto_bed(ChiakiCtrl *ctrl) { return chiaki_ctrl_send_message(ctrl, CTRL_MESSAGE_TYPE_GOTO_BED, NULL, 0); } CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_keyboard_set_text(ChiakiCtrl *ctrl, const char *text) { const uint32_t length = strlen(text); const size_t payload_size = sizeof(CtrlKeyboardTextRequestMessage) + length; uint8_t *payload = malloc(payload_size); if(!payload) return CHIAKI_ERR_MEMORY; memset(payload, 0, payload_size); memcpy(payload + sizeof(CtrlKeyboardTextRequestMessage), text, length); CtrlKeyboardTextRequestMessage *msg = (CtrlKeyboardTextRequestMessage *)payload; msg->counter = ntohl(++ctrl->keyboard_text_counter); msg->text_length1 = ntohl(length); msg->text_length2 = ntohl(length); ChiakiErrorCode err; err = chiaki_ctrl_send_message(ctrl, CTRL_MESSAGE_TYPE_KEYBOARD_TEXT_CHANGE_REQ, payload, payload_size); free(payload); return err; } CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_keyboard_accept(ChiakiCtrl *ctrl) { const uint8_t accept[4] = { 0x00, 0x00, 0x00, 0x00 }; return chiaki_ctrl_send_message(ctrl, CTRL_MESSAGE_TYPE_KEYBOARD_CLOSE_REQ, accept, 4); } CHIAKI_EXPORT ChiakiErrorCode chiaki_ctrl_keyboard_reject(ChiakiCtrl *ctrl) { const uint8_t reject[4] = { 0x00, 0x00, 0x00, 0x01 }; return chiaki_ctrl_send_message(ctrl, CTRL_MESSAGE_TYPE_KEYBOARD_CLOSE_REQ, reject, 4); } static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl); static void ctrl_message_received(ChiakiCtrl *ctrl, uint16_t msg_type, uint8_t *payload, size_t payload_size); static void ctrl_failed(ChiakiCtrl *ctrl, ChiakiQuitReason reason) { ChiakiErrorCode mutex_err = chiaki_mutex_lock(&ctrl->session->state_mutex); assert(mutex_err == CHIAKI_ERR_SUCCESS); ctrl->session->quit_reason = reason; ctrl->session->ctrl_failed = true; chiaki_mutex_unlock(&ctrl->session->state_mutex); chiaki_cond_signal(&ctrl->session->state_cond); } static void *ctrl_thread_func(void *user) { ChiakiCtrl *ctrl = user; ChiakiErrorCode err = chiaki_mutex_lock(&ctrl->notif_mutex); assert(err == CHIAKI_ERR_SUCCESS); err = ctrl_connect(ctrl); if(err != CHIAKI_ERR_SUCCESS) { ctrl_failed(ctrl, CHIAKI_QUIT_REASON_CTRL_CONNECT_FAILED); chiaki_mutex_unlock(&ctrl->notif_mutex); return NULL; } CHIAKI_LOGI(ctrl->session->log, "Ctrl connected"); while(true) { bool overflow = false; while(ctrl->recv_buf_size >= 8) { uint32_t payload_size = *((uint32_t *)ctrl->recv_buf); payload_size = ntohl(payload_size); if(ctrl->recv_buf_size < 8 + payload_size) { if(8 + payload_size > sizeof(ctrl->recv_buf)) { CHIAKI_LOGE(ctrl->session->log, "Ctrl buffer overflow!"); overflow = true; } break; } uint16_t msg_type = *((chiaki_unaligned_uint16_t *)(ctrl->recv_buf + 4)); msg_type = ntohs(msg_type); ctrl_message_received(ctrl, msg_type, ctrl->recv_buf + 8, (size_t)payload_size); ctrl->recv_buf_size -= 8 + payload_size; if(ctrl->recv_buf_size > 0) memmove(ctrl->recv_buf, ctrl->recv_buf + 8 + payload_size, ctrl->recv_buf_size); } if(overflow) { ctrl_failed(ctrl, CHIAKI_QUIT_REASON_CTRL_UNKNOWN); break; } chiaki_mutex_unlock(&ctrl->notif_mutex); err = chiaki_stop_pipe_select_single(&ctrl->notif_pipe, ctrl->sock, false, UINT64_MAX); chiaki_mutex_lock(&ctrl->notif_mutex); bool msg_queue_updated = false; if(err == CHIAKI_ERR_CANCELED) { while(ctrl->msg_queue) { ctrl_message_send(ctrl, ctrl->msg_queue->type, ctrl->msg_queue->payload, ctrl->msg_queue->payload_size); ChiakiCtrlMessageQueue *next = ctrl->msg_queue->next; ctrl_message_queue_free(ctrl->msg_queue); ctrl->msg_queue = next; msg_queue_updated = true; } if(ctrl->login_pin_entered) { CHIAKI_LOGI(ctrl->session->log, "Ctrl received entered Login PIN, sending to console"); ctrl_message_send(ctrl, CTRL_MESSAGE_TYPE_LOGIN_PIN_REP, ctrl->login_pin, ctrl->login_pin_size); ctrl->login_pin_entered = false; free(ctrl->login_pin); ctrl->login_pin = NULL; ctrl->login_pin_size = 0; chiaki_stop_pipe_reset(&ctrl->notif_pipe); continue; } if(ctrl->should_stop) { CHIAKI_LOGI(ctrl->session->log, "Ctrl requested to stop"); break; } if(msg_queue_updated) chiaki_stop_pipe_reset(&ctrl->notif_pipe); continue; } else if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(ctrl->session->log, "Ctrl select error: %s", chiaki_error_string(err)); break; } int received = recv(ctrl->sock, ctrl->recv_buf + ctrl->recv_buf_size, sizeof(ctrl->recv_buf) - ctrl->recv_buf_size, 0); if(received <= 0) { if(received < 0) { CHIAKI_LOGE(ctrl->session->log, "Ctrl failed to recv: " CHIAKI_SOCKET_ERROR_FMT, CHIAKI_SOCKET_ERROR_VALUE); ctrl_failed(ctrl, CHIAKI_QUIT_REASON_CTRL_UNKNOWN); } break; } ctrl->recv_buf_size += received; } chiaki_mutex_unlock(&ctrl->notif_mutex); CHIAKI_SOCKET_CLOSE(ctrl->sock); return NULL; } static ChiakiErrorCode ctrl_message_send(ChiakiCtrl *ctrl, uint16_t type, const uint8_t *payload, size_t payload_size) { assert(payload_size == 0 || payload); CHIAKI_LOGV(ctrl->session->log, "Ctrl sending message type %x, size %llx\n", (unsigned int)type, (unsigned long long)payload_size); if(payload) chiaki_log_hexdump(ctrl->session->log, CHIAKI_LOG_VERBOSE, payload, payload_size); uint8_t *enc = NULL; if(payload && payload_size) { enc = malloc(payload_size); if(!enc) return CHIAKI_ERR_MEMORY; ChiakiErrorCode err = chiaki_rpcrypt_encrypt(&ctrl->session->rpcrypt, ctrl->crypt_counter_local++, payload, enc, payload_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(ctrl->session->log, "Ctrl failed to encrypt payload"); free(enc); return err; } } #ifdef __GNUC__ __attribute__((aligned(__alignof__(uint32_t)))) #endif uint8_t header[8]; *((uint32_t *)header) = htonl((uint32_t)payload_size); *((uint16_t *)(header + 4)) = htons(type); *((uint16_t *)(header + 6)) = 0; int sent = send(ctrl->sock, header, sizeof(header), 0); if(sent < 0) { CHIAKI_LOGE(ctrl->session->log, "Failed to send Ctrl Message Header"); return CHIAKI_ERR_NETWORK; } if(enc) { sent = send(ctrl->sock, enc, payload_size, 0); free(enc); if(sent < 0) { CHIAKI_LOGE(ctrl->session->log, "Failed to send Ctrl Message Payload"); return CHIAKI_ERR_NETWORK; } } return CHIAKI_ERR_SUCCESS; } static void ctrl_message_received(ChiakiCtrl *ctrl, uint16_t msg_type, uint8_t *payload, size_t payload_size) { if(payload_size > 0) { ChiakiErrorCode err = chiaki_rpcrypt_decrypt(&ctrl->session->rpcrypt, ctrl->crypt_counter_remote++, payload, payload, payload_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(ctrl->session->log, "Failed to decrypt payload for Ctrl Message type %#x", msg_type); return; } } CHIAKI_LOGV(ctrl->session->log, "Ctrl received message of type %#x, size %#llx", (unsigned int)msg_type, (unsigned long long)payload_size); if(payload_size > 0) chiaki_log_hexdump(ctrl->session->log, CHIAKI_LOG_VERBOSE, payload, payload_size); switch(msg_type) { case CTRL_MESSAGE_TYPE_SESSION_ID: ctrl_message_received_session_id(ctrl, payload, payload_size); ctrl_enable_optional_features(ctrl); break; case CTRL_MESSAGE_TYPE_HEARTBEAT_REQ: ctrl_message_received_heartbeat_req(ctrl, payload, payload_size); break; case CTRL_MESSAGE_TYPE_LOGIN_PIN_REQ: ctrl_message_received_login_pin_req(ctrl, payload, payload_size); break; case CTRL_MESSAGE_TYPE_LOGIN: ctrl_message_received_login(ctrl, payload, payload_size); break; case CTRL_MESSAGE_TYPE_KEYBOARD_OPEN: ctrl_message_received_keyboard_open(ctrl, payload, payload_size); break; case CTRL_MESSAGE_TYPE_KEYBOARD_TEXT_CHANGE_RES: ctrl_message_received_keyboard_text_change(ctrl, payload, payload_size); break; case CTRL_MESSAGE_TYPE_KEYBOARD_CLOSE_REMOTE: ctrl_message_received_keyboard_close(ctrl, payload, payload_size); break; default: CHIAKI_LOGW(ctrl->session->log, "Received Ctrl Message with unknown type %#x", msg_type); chiaki_log_hexdump(ctrl->session->log, CHIAKI_LOG_WARNING, payload, payload_size); break; } } static void ctrl_enable_optional_features(ChiakiCtrl *ctrl) { if(ctrl->session->connect_info.enable_dualsense) { CHIAKI_LOGI(ctrl->session->log, "Enabling DualSense features"); const uint8_t enable[3] = { 0x00, 0x40, 0x00 }; ctrl_message_send(ctrl, 0x13, enable, 3); } if(ctrl->session->connect_info.enable_keyboard) { CHIAKI_LOGI(ctrl->session->log, "Enabling Keyboard"); // TODO: Last byte of pre_enable request is random (?) // TODO: Signature ?! uint8_t enable = 1; uint8_t pre_enable[4] = { 0x00, 0x01, 0x01, 0x80 }; uint8_t signature[0x10] = { 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x05, 0xAE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; ctrl_message_send(ctrl, 0xD, signature, 0x10); ctrl_message_send(ctrl, 0x36, pre_enable, 4); ctrl_message_send(ctrl, CTRL_MESSAGE_TYPE_KEYBOARD_ENABLE_TOGGLE, &enable, 1); ctrl_message_send(ctrl, 0x36, pre_enable, 4); } } static void ctrl_message_received_session_id(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size) { if(ctrl->session->ctrl_session_id_received) { CHIAKI_LOGW(ctrl->session->log, "Received another Session Id Message"); return; } if(payload_size < 2) { CHIAKI_LOGE(ctrl->session->log, "Invalid Session Id \"%s\" received", payload); return; } if(payload[0] != 0x4a) { CHIAKI_LOGW(ctrl->session->log, "Received presumably invalid Session Id:"); chiaki_log_hexdump(ctrl->session->log, CHIAKI_LOG_WARNING, payload, payload_size); } // skip the size payload++; payload_size--; if(payload_size >= CHIAKI_SESSION_ID_SIZE_MAX - 1) { CHIAKI_LOGE(ctrl->session->log, "Received Session Id is too long"); return; } for(uint8_t *cur=payload; cur= 'a' && c <= 'z') continue; if(c >= 'A' && c <= 'Z') continue; if(c >= '0' && c <= '9') continue; CHIAKI_LOGE(ctrl->session->log, "Ctrl received Session Id contains invalid characters"); return; } memcpy(ctrl->session->session_id, payload, payload_size); ctrl->session->session_id[payload_size] = '\0'; chiaki_mutex_lock(&ctrl->session->state_mutex); ctrl->session->ctrl_session_id_received = true; chiaki_mutex_unlock(&ctrl->session->state_mutex); chiaki_cond_signal(&ctrl->session->state_cond); CHIAKI_LOGI(ctrl->session->log, "Ctrl received valid Session Id: %s", ctrl->session->session_id); } static void ctrl_message_received_heartbeat_req(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size) { if(payload_size != 0) CHIAKI_LOGW(ctrl->session->log, "Ctrl received Heartbeat request with non-empty payload"); CHIAKI_LOGI(ctrl->session->log, "Ctrl received Heartbeat, sending reply"); ctrl_message_send(ctrl, CTRL_MESSAGE_TYPE_HEARTBEAT_REP, NULL, 0); } static void ctrl_message_received_login_pin_req(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size) { if(payload_size != 0) CHIAKI_LOGW(ctrl->session->log, "Ctrl received Login PIN request with non-empty payload"); CHIAKI_LOGI(ctrl->session->log, "Ctrl received Login PIN request"); ctrl->login_pin_requested = true; ChiakiErrorCode err = chiaki_mutex_lock(&ctrl->session->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); ctrl->session->ctrl_login_pin_requested = true; chiaki_mutex_unlock(&ctrl->session->state_mutex); chiaki_cond_signal(&ctrl->session->state_cond); } static void ctrl_message_received_login(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size) { if(payload_size != 1) { CHIAKI_LOGW(ctrl->session->log, "Ctrl received Login message with payload of size %#llx", (unsigned long long)payload_size); if(payload_size < 1) return; } CtrlLoginState state = payload[0]; switch(state) { case CTRL_LOGIN_STATE_SUCCESS: CHIAKI_LOGI(ctrl->session->log, "Ctrl received Login message: success"); ctrl->login_pin_requested = false; break; case CTRL_LOGIN_STATE_PIN_INCORRECT: CHIAKI_LOGI(ctrl->session->log, "Ctrl received Login message: PIN incorrect"); if(ctrl->login_pin_requested) { CHIAKI_LOGI(ctrl->session->log, "Ctrl requesting PIN from Session again"); ChiakiErrorCode err = chiaki_mutex_lock(&ctrl->session->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); ctrl->session->ctrl_login_pin_requested = true; chiaki_mutex_unlock(&ctrl->session->state_mutex); chiaki_cond_signal(&ctrl->session->state_cond); } else CHIAKI_LOGW(ctrl->session->log, "Ctrl Login PIN incorrect message, but PIN was not requested"); break; default: CHIAKI_LOGI(ctrl->session->log, "Ctrl received Login message with state: %#x", state); break; } } static void ctrl_message_received_keyboard_open(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size) { assert(payload_size >= sizeof(CtrlKeyboardOpenMessage)); CtrlKeyboardOpenMessage *msg = (CtrlKeyboardOpenMessage *)payload; msg->text_length = ntohl(msg->text_length); assert(payload_size == sizeof(CtrlKeyboardOpenMessage) + msg->text_length); uint8_t *buffer = msg->text_length > 0 ? malloc((size_t)msg->text_length + 1) : NULL; if(buffer) { buffer[msg->text_length] = '\0'; memcpy(buffer, payload + sizeof(CtrlKeyboardOpenMessage), msg->text_length); } ChiakiEvent keyboard_event; keyboard_event.type = CHIAKI_EVENT_KEYBOARD_OPEN; keyboard_event.keyboard.text_str = (const char *)buffer; chiaki_session_send_event(ctrl->session, &keyboard_event); if(buffer) free(buffer); } static void ctrl_message_received_keyboard_close(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size) { (void)payload; (void)payload_size; ChiakiEvent keyboard_event; keyboard_event.type = CHIAKI_EVENT_KEYBOARD_REMOTE_CLOSE; keyboard_event.keyboard.text_str = NULL; chiaki_session_send_event(ctrl->session, &keyboard_event); } static void ctrl_message_received_keyboard_text_change(ChiakiCtrl *ctrl, uint8_t *payload, size_t payload_size) { assert(payload_size >= sizeof(CtrlKeyboardTextResponseMessage)); CtrlKeyboardTextResponseMessage *msg = (CtrlKeyboardTextResponseMessage *)payload; msg->text_length1 = ntohl(msg->text_length1); assert(payload_size == sizeof(CtrlKeyboardTextResponseMessage) + msg->text_length1); uint8_t *buffer = msg->text_length1 > 0 ? malloc((size_t)msg->text_length1 + 1) : NULL; if(buffer) { buffer[msg->text_length1] = '\0'; memcpy(buffer, payload + sizeof(CtrlKeyboardTextResponseMessage), msg->text_length1); } ChiakiEvent keyboard_event; keyboard_event.type = CHIAKI_EVENT_KEYBOARD_TEXT_CHANGE; keyboard_event.keyboard.text_str = (const char *)buffer; chiaki_session_send_event(ctrl->session, &keyboard_event); if(buffer) free(buffer); } typedef struct ctrl_response_t { bool server_type_valid; uint8_t rp_server_type[0x10]; bool success; } CtrlResponse; static void parse_ctrl_response(CtrlResponse *response, ChiakiHttpResponse *http_response) { memset(response, 0, sizeof(CtrlResponse)); if(http_response->code != 200) { response->success = false; return; } response->success = true; response->server_type_valid = false; for(ChiakiHttpHeader *header=http_response->headers; header; header=header->next) { if(strcmp(header->key, "RP-Server-Type") == 0) { size_t server_type_size = sizeof(response->rp_server_type); chiaki_base64_decode(header->value, strlen(header->value) + 1, response->rp_server_type, &server_type_size); response->server_type_valid = server_type_size == sizeof(response->rp_server_type); } } } static ChiakiErrorCode ctrl_connect(ChiakiCtrl *ctrl) { ctrl->crypt_counter_local = 0; ctrl->crypt_counter_remote = 0; ChiakiSession *session = ctrl->session; struct addrinfo *addr = session->connect_info.host_addrinfo_selected; struct sockaddr *sa = malloc(addr->ai_addrlen); if(!sa) { CHIAKI_LOGE(session->log, "Ctrl failed to alloc sockaddr"); return CHIAKI_ERR_MEMORY; } memcpy(sa, addr->ai_addr, addr->ai_addrlen); if(sa->sa_family == AF_INET) ((struct sockaddr_in *)sa)->sin_port = htons(SESSION_CTRL_PORT); else if(sa->sa_family == AF_INET6) ((struct sockaddr_in6 *)sa)->sin6_port = htons(SESSION_CTRL_PORT); else { CHIAKI_LOGE(session->log, "Ctrl got invalid sockaddr"); return CHIAKI_ERR_INVALID_DATA; } chiaki_socket_t sock = socket(sa->sa_family, SOCK_STREAM, IPPROTO_TCP); if(CHIAKI_SOCKET_IS_INVALID(sock)) { CHIAKI_LOGE(session->log, "Session ctrl socket creation failed."); ctrl_failed(ctrl, CHIAKI_QUIT_REASON_CTRL_UNKNOWN); return CHIAKI_ERR_NETWORK; } ChiakiErrorCode err = chiaki_socket_set_nonblock(sock, true); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(session->log, "Failed to set ctrl socket to non-blocking: %s", chiaki_error_string(err)); chiaki_mutex_unlock(&ctrl->notif_mutex); err = chiaki_stop_pipe_connect(&ctrl->notif_pipe, sock, sa, addr->ai_addrlen); chiaki_mutex_lock(&ctrl->notif_mutex); free(sa); if(err != CHIAKI_ERR_SUCCESS) { if(err == CHIAKI_ERR_CANCELED) { if(ctrl->should_stop) CHIAKI_LOGI(session->log, "Ctrl requested to stop while connecting"); else CHIAKI_LOGE(session->log, "Ctrl notif pipe signaled without should_stop during connect"); CHIAKI_SOCKET_CLOSE(sock); } else { CHIAKI_LOGE(session->log, "Ctrl connect failed: %s", chiaki_error_string(err)); ChiakiQuitReason quit_reason = err == CHIAKI_ERR_CONNECTION_REFUSED ? CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED : CHIAKI_QUIT_REASON_CTRL_UNKNOWN; ctrl_failed(ctrl, quit_reason); } goto error; } CHIAKI_LOGI(session->log, "Ctrl connected to %s:%d", session->connect_info.hostname, SESSION_CTRL_PORT); uint8_t auth_enc[CHIAKI_RPCRYPT_KEY_SIZE]; err = chiaki_rpcrypt_encrypt(&session->rpcrypt, ctrl->crypt_counter_local++, (const uint8_t *)session->connect_info.regist_key, auth_enc, CHIAKI_RPCRYPT_KEY_SIZE); if(err != CHIAKI_ERR_SUCCESS) goto error; char auth_b64[CHIAKI_RPCRYPT_KEY_SIZE*2]; err = chiaki_base64_encode(auth_enc, sizeof(auth_enc), auth_b64, sizeof(auth_b64)); if(err != CHIAKI_ERR_SUCCESS) goto error; uint8_t did_enc[CHIAKI_RP_DID_SIZE]; err = chiaki_rpcrypt_encrypt(&session->rpcrypt, ctrl->crypt_counter_local++, session->connect_info.did, did_enc, CHIAKI_RP_DID_SIZE); if(err != CHIAKI_ERR_SUCCESS) goto error; char did_b64[CHIAKI_RP_DID_SIZE*2]; err = chiaki_base64_encode(did_enc, sizeof(did_enc), did_b64, sizeof(did_b64)); if(err != CHIAKI_ERR_SUCCESS) goto error; uint8_t ostype_enc[128]; size_t ostype_len = strlen(SESSION_OSTYPE) + 1; if(ostype_len > sizeof(ostype_enc)) goto error; err = chiaki_rpcrypt_encrypt(&session->rpcrypt, ctrl->crypt_counter_local++, (const uint8_t *)SESSION_OSTYPE, ostype_enc, ostype_len); if(err != CHIAKI_ERR_SUCCESS) goto error; char ostype_b64[256]; err = chiaki_base64_encode(ostype_enc, ostype_len, ostype_b64, sizeof(ostype_b64)); if(err != CHIAKI_ERR_SUCCESS) goto error; char bitrate_b64[256]; bool have_bitrate = session->target >= CHIAKI_TARGET_PS4_10; if(have_bitrate) { uint8_t bitrate[4] = { 0 }; uint8_t bitrate_enc[4] = { 0 }; err = chiaki_rpcrypt_encrypt(&session->rpcrypt, ctrl->crypt_counter_local++, (const uint8_t *)bitrate, bitrate_enc, 4); if(err != CHIAKI_ERR_SUCCESS) goto error; err = chiaki_base64_encode(bitrate_enc, 4, bitrate_b64, sizeof(bitrate_b64)); if(err != CHIAKI_ERR_SUCCESS) goto error; } char streaming_type_b64[256]; bool have_streaming_type = chiaki_target_is_ps5(session->target); if(have_streaming_type) { uint32_t streaming_type; switch(session->connect_info.video_profile.codec) { case CHIAKI_CODEC_H265: streaming_type = 2; break; case CHIAKI_CODEC_H265_HDR: streaming_type = 3; break; default: streaming_type = 1; break; } uint8_t streaming_type_buf[4] = { streaming_type & 0xff, (streaming_type >> 8) & 0xff, (streaming_type >> 0x10) & 0xff, (streaming_type >> 0x18) & 0xff }; uint8_t streaming_type_enc[4] = { 0 }; err = chiaki_rpcrypt_encrypt(&session->rpcrypt, ctrl->crypt_counter_local++, streaming_type_buf, streaming_type_enc, 4); if(err != CHIAKI_ERR_SUCCESS) goto error; err = chiaki_base64_encode(streaming_type_enc, 4, streaming_type_b64, sizeof(streaming_type_b64)); if(err != CHIAKI_ERR_SUCCESS) goto error; } static const char request_fmt[] = "GET %s HTTP/1.1\r\n" "Host: %s:%d\r\n" "User-Agent: remoteplay Windows\r\n" "Connection: keep-alive\r\n" "Content-Length: 0\r\n" "RP-Auth: %s\r\n" "RP-Version: %s\r\n" "RP-Did: %s\r\n" "RP-ControllerType: 3\r\n" "RP-ClientType: 11\r\n" "RP-OSType: %s\r\n" "RP-ConPath: 1\r\n" "%s%s%s" "%s%s%s" "\r\n"; const char *path; if(session->target == CHIAKI_TARGET_PS4_8 || session->target == CHIAKI_TARGET_PS4_9) path = "/sce/rp/session/ctrl"; else if(chiaki_target_is_ps5(session->target)) path = "/sie/ps5/rp/sess/ctrl"; else path = "/sie/ps4/rp/sess/ctrl"; const char *rp_version = chiaki_rp_version_string(session->target); char buf[512]; int request_len = snprintf(buf, sizeof(buf), request_fmt, path, session->connect_info.hostname, SESSION_CTRL_PORT, auth_b64, rp_version ? rp_version : "", did_b64, ostype_b64, have_bitrate ? "RP-StartBitrate: " : "", have_bitrate ? bitrate_b64 : "", have_bitrate ? "\r\n" : "", have_streaming_type ? "RP-StreamingType: " : "", have_streaming_type ? streaming_type_b64 : "", have_streaming_type ? "\r\n" : ""); if(request_len < 0 || request_len >= sizeof(buf)) goto error; CHIAKI_LOGI(session->log, "Sending ctrl request"); chiaki_log_hexdump(session->log, CHIAKI_LOG_VERBOSE, (const uint8_t *)buf, (size_t)request_len); int sent = send(sock, buf, (size_t)request_len, 0); if(sent < 0) { CHIAKI_LOGE(session->log, "Failed to send ctrl request"); goto error; } size_t header_size; size_t received_size; err = chiaki_recv_http_header(sock, buf, sizeof(buf), &header_size, &received_size, &ctrl->notif_pipe, CTRL_EXPECT_TIMEOUT); if(err != CHIAKI_ERR_SUCCESS) { if(err != CHIAKI_ERR_CANCELED) { #ifdef _WIN32 int errsv = WSAGetLastError; #else int errsv = errno; #endif CHIAKI_LOGE(session->log, "Failed to receive ctrl request response: %s", chiaki_error_string(err)); if(err == CHIAKI_ERR_NETWORK) { #ifdef _WIN32 CHIAKI_LOGE(session->log, "Ctrl request response network error: %d", errsv); #else CHIAKI_LOGE(session->log, "Ctrl request response network error: %s", strerror(errsv)); #endif } } else { CHIAKI_LOGI(session->log, "Ctrl canceled while receiving ctrl request response"); } goto error; } CHIAKI_LOGI(session->log, "Ctrl received http header as response"); chiaki_log_hexdump(session->log, CHIAKI_LOG_VERBOSE, (const uint8_t *)buf, header_size); ChiakiHttpResponse http_response; err = chiaki_http_response_parse(&http_response, buf, header_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Failed to parse ctrl request response"); goto error; } CHIAKI_LOGI(session->log, "Ctrl received ctrl request http response"); CtrlResponse response; parse_ctrl_response(&response, &http_response); if(!response.success) { CHIAKI_LOGE(session->log, "Ctrl http response was not successful. HTTP code was %d", http_response.code); chiaki_http_response_fini(&http_response); err = CHIAKI_ERR_UNKNOWN; goto error; } chiaki_http_response_fini(&http_response); if(response.server_type_valid) { ChiakiErrorCode err2 = chiaki_rpcrypt_decrypt(&session->rpcrypt, ctrl->crypt_counter_remote++, response.rp_server_type, response.rp_server_type, sizeof(response.rp_server_type)); if(err2 != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Ctrl failed to decrypt RP-Server-Type"); response.server_type_valid = false; } } if(response.server_type_valid) { uint8_t server_type = response.rp_server_type[0]; // 0 = PS4, 1 = PS4 Pro, 2 = PS5 CHIAKI_LOGI(session->log, "Ctrl got Server Type: %u", (unsigned int)server_type); if(server_type == 0 && session->connect_info.video_profile_auto_downgrade && session->connect_info.video_profile.height == 1080) { // regular PS4 doesn't support >= 1080p CHIAKI_LOGI(session->log, "1080p was selected but server would not support it. Downgrading."); chiaki_connect_video_profile_preset( &session->connect_info.video_profile, CHIAKI_VIDEO_RESOLUTION_PRESET_720p, session->connect_info.video_profile.max_fps == 60 ? CHIAKI_VIDEO_FPS_PRESET_60 : CHIAKI_VIDEO_FPS_PRESET_30); } if((server_type == 0 || server_type == 1) && session->connect_info.video_profile.codec != CHIAKI_CODEC_H264) { // PS4 doesn't support anything except h264 CHIAKI_LOGI(session->log, "A codec other than H264 was selected but server would not support it. Downgrading."); session->connect_info.video_profile.codec = CHIAKI_CODEC_H264; } } else CHIAKI_LOGE(session->log, "No valid Server Type in ctrl response"); ctrl->sock = sock; // if we already got more data than the header, put the rest in the buffer. ctrl->recv_buf_size = received_size - header_size; if(ctrl->recv_buf_size > 0) memcpy(ctrl->recv_buf, buf + header_size, ctrl->recv_buf_size); return CHIAKI_ERR_SUCCESS; error: CHIAKI_SOCKET_CLOSE(sock); return err; } chiaki-v2.2.0/lib/src/discovery.c000066400000000000000000000261431447035777400166710ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "utils.h" #include #include #include #include #include #include #include #ifdef _WIN32 #include #else #include #include #include #endif const char *chiaki_discovery_host_state_string(ChiakiDiscoveryHostState state) { switch(state) { case CHIAKI_DISCOVERY_HOST_STATE_READY: return "ready"; case CHIAKI_DISCOVERY_HOST_STATE_STANDBY: return "standby"; default: return "unknown"; } } CHIAKI_EXPORT bool chiaki_discovery_host_is_ps5(ChiakiDiscoveryHost *host) { return host->device_discovery_protocol_version && !strcmp(host->device_discovery_protocol_version, CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS5); } CHIAKI_EXPORT ChiakiTarget chiaki_discovery_host_system_version_target(ChiakiDiscoveryHost *host) { // traslate discovered system_version into ChiakiTarget int version = atoi(host->system_version); bool is_ps5 = chiaki_discovery_host_is_ps5(host); if(version >= 8050001 && is_ps5) // PS5 >= 1.0 return CHIAKI_TARGET_PS5_1; if(version >= 8050000 && is_ps5) // PS5 >= 0 return CHIAKI_TARGET_PS5_UNKNOWN; if(version >= 8000000) // PS4 >= 8.0 return CHIAKI_TARGET_PS4_10; if(version >= 7000000) // PS4 >= 7.0 return CHIAKI_TARGET_PS4_9; if(version > 0) return CHIAKI_TARGET_PS4_8; return CHIAKI_TARGET_PS4_UNKNOWN; } CHIAKI_EXPORT int chiaki_discovery_packet_fmt(char *buf, size_t buf_size, ChiakiDiscoveryPacket *packet) { if(!packet->protocol_version) return -1; switch(packet->cmd) { case CHIAKI_DISCOVERY_CMD_SRCH: return snprintf(buf, buf_size, "SRCH * HTTP/1.1\ndevice-discovery-protocol-version:%s\n", packet->protocol_version); case CHIAKI_DISCOVERY_CMD_WAKEUP: return snprintf(buf, buf_size, "WAKEUP * HTTP/1.1\n" "client-type:vr\n" "auth-type:R\n" "model:w\n" "app-type:r\n" "user-credential:%llu\n" "device-discovery-protocol-version:%s\n", (unsigned long long)packet->user_credential, packet->protocol_version); default: return -1; } } CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_srch_response_parse(ChiakiDiscoveryHost *response, struct sockaddr *addr, char *addr_buf, size_t addr_buf_size, char *buf, size_t buf_size) { ChiakiHttpResponse http_response; ChiakiErrorCode err = chiaki_http_response_parse(&http_response, buf, buf_size); if(err != CHIAKI_ERR_SUCCESS) return err; memset(response, 0, sizeof(*response)); response->host_addr = sockaddr_str(addr, addr_buf, addr_buf_size); switch(http_response.code) { case 200: response->state = CHIAKI_DISCOVERY_HOST_STATE_READY; break; case 620: response->state = CHIAKI_DISCOVERY_HOST_STATE_STANDBY; break; default: response->state = CHIAKI_DISCOVERY_HOST_STATE_UNKNOWN; break; } for(ChiakiHttpHeader *header = http_response.headers; header; header=header->next) { if(strcmp(header->key, "system-version") == 0) response->system_version = header->value; else if(strcmp(header->key, "device-discovery-protocol-version") == 0) response->device_discovery_protocol_version = header->value; else if(strcmp(header->key, "host-request-port") == 0) response->host_request_port = (uint16_t)strtoul(header->value, NULL, 0); else if(strcmp(header->key, "host-name") == 0) response->host_name = header->value; else if(strcmp(header->key, "host-type") == 0) response->host_type = header->value; else if(strcmp(header->key, "host-id") == 0) response->host_id = header->value; else if(strcmp(header->key, "running-app-titleid") == 0) response->running_app_titleid = header->value; else if(strcmp(header->key, "running-app-name") == 0) response->running_app_name = header->value; //else // printf("unknown %s: %s\n", header->key, header->value); } chiaki_http_response_fini(&http_response); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_init(ChiakiDiscovery *discovery, ChiakiLog *log, sa_family_t family) { if(family != AF_INET && family != AF_INET6) return CHIAKI_ERR_INVALID_DATA; discovery->log = log; discovery->socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if(CHIAKI_SOCKET_IS_INVALID(discovery->socket)) { CHIAKI_LOGE(discovery->log, "Discovery failed to create socket"); return CHIAKI_ERR_NETWORK; } // First try CHIAKI_DISCOVERY_PORT_LOCAL_MIN..local_addr, 0, sizeof(discovery->local_addr)); discovery->local_addr.sa_family = family; if(family == AF_INET6) { #ifndef __SWITCH__ struct in6_addr anyaddr = IN6ADDR_ANY_INIT; #endif struct sockaddr_in6 *addr = (struct sockaddr_in6 *)&discovery->local_addr; #ifndef __SWITCH__ addr->sin6_addr = anyaddr; #endif addr->sin6_port = htons(port); } else // AF_INET { struct sockaddr_in *addr = (struct sockaddr_in *)&discovery->local_addr; addr->sin_addr.s_addr = htonl(INADDR_ANY); addr->sin_port = htons(port); } r = bind(discovery->socket, &discovery->local_addr, sizeof(discovery->local_addr)); if(r >= 0 || !port) break; if(port == CHIAKI_DISCOVERY_PORT_LOCAL_MAX) { port = 0; CHIAKI_LOGI(discovery->log, "Discovery failed to bind port %u, trying random", (unsigned int)port); } else { port++; CHIAKI_LOGI(discovery->log, "Discovery failed to bind port %u, trying one higher", (unsigned int)port); } } if(r < 0) { CHIAKI_LOGE(discovery->log, "Discovery failed to bind"); CHIAKI_SOCKET_CLOSE(discovery->socket); return CHIAKI_ERR_NETWORK; } const int broadcast = 1; r = setsockopt(discovery->socket, SOL_SOCKET, SO_BROADCAST, (const void *)&broadcast, sizeof(broadcast)); if(r < 0) CHIAKI_LOGE(discovery->log, "Discovery failed to setsockopt SO_BROADCAST"); //#ifdef __FreeBSD__ // const int onesbcast = 1; // r = setsockopt(discovery->socket, IPPROTO_IP, IP_ONESBCAST, &onesbcast, sizeof(onesbcast)); // if(r < 0) // CHIAKI_LOGE(discovery->log, "Discovery failed to setsockopt IP_ONESBCAST"); //#endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_discovery_fini(ChiakiDiscovery *discovery) { CHIAKI_SOCKET_CLOSE(discovery->socket); } CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_send(ChiakiDiscovery *discovery, ChiakiDiscoveryPacket *packet, struct sockaddr *addr, size_t addr_size) { if(addr->sa_family != discovery->local_addr.sa_family) return CHIAKI_ERR_INVALID_DATA; char buf[512]; int len = chiaki_discovery_packet_fmt(buf, sizeof(buf), packet); if(len < 0) return CHIAKI_ERR_UNKNOWN; if((size_t)len >= sizeof(buf)) return CHIAKI_ERR_BUF_TOO_SMALL; CHIAKI_LOGV(discovery->log, "Discovery sending:"); chiaki_log_hexdump(discovery->log, CHIAKI_LOG_VERBOSE, (const uint8_t *)buf, (size_t)len + 1); int rc = sendto_broadcast(discovery->log, discovery->socket, buf, (size_t)len + 1, 0, addr, addr_size); if(rc < 0) { CHIAKI_LOGE(discovery->log, "Discovery failed to send: %s", strerror(errno)); return CHIAKI_ERR_NETWORK; } return CHIAKI_ERR_SUCCESS; } static void *discovery_thread_func(void *user); CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_thread_start(ChiakiDiscoveryThread *thread, ChiakiDiscovery *discovery, ChiakiDiscoveryCb cb, void *cb_user) { thread->discovery = discovery; thread->cb = cb; thread->cb_user = cb_user; ChiakiErrorCode err = chiaki_stop_pipe_init(&thread->stop_pipe); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(discovery->log, "Discovery (thread) failed to create pipe"); return err; } err = chiaki_thread_create(&thread->thread, discovery_thread_func, thread); if(err != CHIAKI_ERR_SUCCESS) { chiaki_stop_pipe_fini(&thread->stop_pipe); return err; } chiaki_thread_set_name(&thread->thread, "Chiaki Discovery"); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_thread_stop(ChiakiDiscoveryThread *thread) { chiaki_stop_pipe_stop(&thread->stop_pipe); ChiakiErrorCode err = chiaki_thread_join(&thread->thread, NULL); if(err != CHIAKI_ERR_SUCCESS) return err; chiaki_stop_pipe_fini(&thread->stop_pipe); return CHIAKI_ERR_SUCCESS; } static void *discovery_thread_func(void *user) { ChiakiDiscoveryThread *thread = user; ChiakiDiscovery *discovery = thread->discovery; while(1) { ChiakiErrorCode err = chiaki_stop_pipe_select_single(&thread->stop_pipe, discovery->socket, false, UINT64_MAX); if(err == CHIAKI_ERR_CANCELED) break; if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(discovery->log, "Discovery thread failed to select"); break; } char buf[512]; struct sockaddr client_addr; socklen_t client_addr_size = sizeof(client_addr); int n = recvfrom(discovery->socket, buf, sizeof(buf) - 1, 0, &client_addr, &client_addr_size); if(n < 0) { CHIAKI_LOGE(discovery->log, "Discovery thread failed to read from socket"); break; } if(n == 0) continue; if(n > sizeof(buf) - 1) n = sizeof(buf) - 1; buf[n] = '\00'; //CHIAKI_LOGV(discovery->log, "Discovery received:\n%s", buf); //chiaki_log_hexdump_raw(discovery->log, CHIAKI_LOG_VERBOSE, (const uint8_t *)buf, n); char addr_buf[64]; ChiakiDiscoveryHost response; err = chiaki_discovery_srch_response_parse(&response, &client_addr, addr_buf, sizeof(addr_buf), buf, n); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGI(discovery->log, "Discovery Response invalid"); continue; } if(thread->cb) thread->cb(&response, thread->cb_user); } return NULL; } CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_wakeup(ChiakiLog *log, ChiakiDiscovery *discovery, const char *host, uint64_t user_credential, bool ps5) { struct addrinfo *addrinfos; int r = getaddrinfo(host, NULL, NULL, &addrinfos); // TODO: this blocks, use something else if(r != 0) { CHIAKI_LOGE(log, "DiscoveryManager failed to getaddrinfo for wakeup"); return CHIAKI_ERR_NETWORK; } struct sockaddr addr = { 0 }; socklen_t addr_len = 0; for(struct addrinfo *ai=addrinfos; ai; ai=ai->ai_next) { if(ai->ai_family != AF_INET) continue; //if(ai->ai_protocol != IPPROTO_UDP) // continue; if(ai->ai_addrlen > sizeof(addr)) continue; memcpy(&addr, ai->ai_addr, ai->ai_addrlen); addr_len = ai->ai_addrlen; break; } freeaddrinfo(addrinfos); if(!addr_len) { CHIAKI_LOGE(log, "DiscoveryManager failed to get suitable address from getaddrinfo for wakeup"); return CHIAKI_ERR_UNKNOWN; } ((struct sockaddr_in *)&addr)->sin_port = htons(ps5 ? CHIAKI_DISCOVERY_PORT_PS5 : CHIAKI_DISCOVERY_PORT_PS4); ChiakiDiscoveryPacket packet = { 0 }; packet.cmd = CHIAKI_DISCOVERY_CMD_WAKEUP; packet.protocol_version = ps5 ? CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS5 : CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS4; packet.user_credential = user_credential; ChiakiErrorCode err; if(discovery) err = chiaki_discovery_send(discovery, &packet, &addr, addr_len); else { ChiakiDiscovery tmp_discovery; err = chiaki_discovery_init(&tmp_discovery, log, AF_INET); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(log, "Failed to init temporary discovery for wakeup: %s", chiaki_error_string(err)); return err; } err = chiaki_discovery_send(&tmp_discovery, &packet, &addr, addr_len); chiaki_discovery_fini(&tmp_discovery); } return err; } chiaki-v2.2.0/lib/src/discoveryservice.c000066400000000000000000000213261447035777400202500ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #ifdef _WIN32 #include #else #include #endif static void *discovery_service_thread_func(void *user); static void discovery_service_ping(ChiakiDiscoveryService *service); static void discovery_service_drop_old_hosts(ChiakiDiscoveryService *service); static void discovery_service_host_received(ChiakiDiscoveryHost *host, void *user); static void discovery_service_report_state(ChiakiDiscoveryService *service); CHIAKI_EXPORT ChiakiErrorCode chiaki_discovery_service_init(ChiakiDiscoveryService *service, ChiakiDiscoveryServiceOptions *options, ChiakiLog *log) { service->log = log; service->options = *options; service->ping_index = 0; service->hosts = calloc(service->options.hosts_max, sizeof(ChiakiDiscoveryHost)); if(!service->hosts) return CHIAKI_ERR_MEMORY; ChiakiErrorCode err; service->host_discovery_infos = calloc(service->options.hosts_max, sizeof(ChiakiDiscoveryServiceHostDiscoveryInfo)); if(!service->host_discovery_infos) { err = CHIAKI_ERR_MEMORY; goto error_hosts; } service->hosts_count = 0; err = chiaki_mutex_init(&service->state_mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error_host_discovery_infos; service->options.send_addr = malloc(service->options.send_addr_size); if(!service->options.send_addr) { err = CHIAKI_ERR_MEMORY; goto error_state_mutex; } memcpy(service->options.send_addr, options->send_addr, service->options.send_addr_size); err = chiaki_discovery_init(&service->discovery, log, service->options.send_addr->sa_family); if(err != CHIAKI_ERR_SUCCESS) goto error_send_addr; err = chiaki_bool_pred_cond_init(&service->stop_cond); if(err != CHIAKI_ERR_SUCCESS) goto error_discovery; err = chiaki_thread_create(&service->thread, discovery_service_thread_func, service); if(err != CHIAKI_ERR_SUCCESS) goto error_stop_cond; chiaki_thread_set_name(&service->thread, "Chiaki Discovery Service"); return CHIAKI_ERR_SUCCESS; error_stop_cond: chiaki_bool_pred_cond_fini(&service->stop_cond); error_discovery: chiaki_discovery_fini(&service->discovery); error_send_addr: free(service->options.send_addr); error_state_mutex: chiaki_mutex_fini(&service->state_mutex); error_host_discovery_infos: free(service->host_discovery_infos); error_hosts: free(service->hosts); return err; } CHIAKI_EXPORT void chiaki_discovery_service_fini(ChiakiDiscoveryService *service) { chiaki_bool_pred_cond_signal(&service->stop_cond); chiaki_thread_join(&service->thread, NULL); chiaki_bool_pred_cond_fini(&service->stop_cond); chiaki_discovery_fini(&service->discovery); chiaki_mutex_fini(&service->state_mutex); free(service->options.send_addr); for(size_t i=0; ihosts_count; i++) { ChiakiDiscoveryHost *host = &service->hosts[i]; #define FREE_STRING(name) free((char *)host->name); CHIAKI_DISCOVERY_HOST_STRING_FOREACH(FREE_STRING) #undef FREE_STRING } free(service->host_discovery_infos); free(service->hosts); } static void *discovery_service_thread_func(void *user) { ChiakiDiscoveryService *service = user; ChiakiErrorCode err = chiaki_bool_pred_cond_lock(&service->stop_cond); if(err != CHIAKI_ERR_SUCCESS) return NULL; ChiakiDiscoveryThread discovery_thread; err = chiaki_discovery_thread_start(&discovery_thread, &service->discovery, discovery_service_host_received, service); if(err != CHIAKI_ERR_SUCCESS) goto beach; while(true) { err = chiaki_bool_pred_cond_timedwait(&service->stop_cond, service->options.ping_ms); if(err != CHIAKI_ERR_TIMEOUT) break; discovery_service_ping(service); } chiaki_discovery_thread_stop(&discovery_thread); beach: chiaki_bool_pred_cond_unlock(&service->stop_cond); return NULL; } static void discovery_service_ping(ChiakiDiscoveryService *service) { ChiakiErrorCode err = chiaki_mutex_lock(&service->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); service->ping_index++; discovery_service_drop_old_hosts(service); chiaki_mutex_unlock(&service->state_mutex); CHIAKI_LOGV(service->log, "Discovery Service sending ping"); ChiakiDiscoveryPacket packet = { 0 }; packet.cmd = CHIAKI_DISCOVERY_CMD_SRCH; packet.protocol_version = CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS4; if(service->options.send_addr->sa_family == AF_INET) ((struct sockaddr_in *)service->options.send_addr)->sin_port = htons(CHIAKI_DISCOVERY_PORT_PS4); else if(service->options.send_addr->sa_family == AF_INET6) ((struct sockaddr_in6 *)service->options.send_addr)->sin6_port = htons(CHIAKI_DISCOVERY_PORT_PS4); else { CHIAKI_LOGE(service->log, "Discovery Service send_addr has unknown sa_family"); return; } err = chiaki_discovery_send(&service->discovery, &packet, service->options.send_addr, service->options.send_addr_size); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(service->log, "Discovery Service failed to send ping for PS4"); packet.protocol_version = CHIAKI_DISCOVERY_PROTOCOL_VERSION_PS5; if(service->options.send_addr->sa_family == AF_INET) ((struct sockaddr_in *)service->options.send_addr)->sin_port = htons(CHIAKI_DISCOVERY_PORT_PS5); else // if(service->options.send_addr->sa_family == AF_INET6) ((struct sockaddr_in6 *)service->options.send_addr)->sin6_port = htons(CHIAKI_DISCOVERY_PORT_PS5); err = chiaki_discovery_send(&service->discovery, &packet, service->options.send_addr, service->options.send_addr_size); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(service->log, "Discovery Service failed to send ping for PS5"); } static void discovery_service_drop_old_hosts(ChiakiDiscoveryService *service) { // service->state_mutex must be locked bool change = false; for(size_t i=0; ihosts_count; i++) { if(service->host_discovery_infos[i].last_ping_index + service->options.host_drop_pings >= service->ping_index) continue; ChiakiDiscoveryHost *host = &service->hosts[i]; CHIAKI_LOGI(service->log, "Discovery Service: Host with id %s is no longer available", host->host_id ? host->host_id : ""); #define FREE_STRING(name) do { free((char *)host->name); } while(0) CHIAKI_DISCOVERY_HOST_STRING_FOREACH(FREE_STRING) #undef FREE_STRING if(i < service->hosts_count - 1) { memmove(service->host_discovery_infos + i, service->host_discovery_infos + i + 1, sizeof(ChiakiDiscoveryServiceHostDiscoveryInfo) * (service->hosts_count - i - 1)); memmove(service->hosts + i, service->hosts + i + 1, sizeof(ChiakiDiscoveryHost) * (service->hosts_count - i - 1)); } change = true; i--; service->hosts_count--; } if(change) discovery_service_report_state(service); } static void discovery_service_host_received(ChiakiDiscoveryHost *host, void *user) { ChiakiDiscoveryService *service = user; if(!host->host_id) { CHIAKI_LOGE(service->log, "Discovery Service received host without id"); return; } CHIAKI_LOGV(service->log, "Discovery Service Received host with id %s", host->host_id); ChiakiErrorCode err = chiaki_mutex_lock(&service->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); bool change = false; size_t index = SIZE_MAX; for(size_t i=0; ihosts_count; i++) { if(!service->hosts[i].host_id) continue; if(strcmp(service->hosts[i].host_id, host->host_id) == 0) { index = i; break; } } if(index == SIZE_MAX) { if(service->hosts_count == service->options.hosts_max) { CHIAKI_LOGE(service->log, "Discovery Service received new host, but no space available"); goto rzcon; } CHIAKI_LOGI(service->log, "Discovery Service detected new host with id %s", host->host_id); change = true; index = service->hosts_count++; memset(&service->hosts[index], 0, sizeof(ChiakiDiscoveryHost)); } service->host_discovery_infos[index].last_ping_index = service->ping_index; ChiakiDiscoveryHost *host_slot = &service->hosts[index]; if(host_slot->state != host->state || host_slot->host_request_port != host->host_request_port) change = true; host_slot->state = host->state; host_slot->host_request_port = host->host_request_port; #define UPDATE_STRING(name) do { \ if(host_slot->name && host->name && strcmp(host_slot->name, host->name) == 0) \ break; \ if(!host_slot->name && !host->name) \ break; \ change = true; \ if(host_slot->name) \ free((char *)host_slot->name); \ if(host->name) \ host_slot->name = strdup(host->name); \ else \ host_slot->name = NULL; \ } while(0) CHIAKI_DISCOVERY_HOST_STRING_FOREACH(UPDATE_STRING) #undef UPDATE_STRING if(change) discovery_service_report_state(service); rzcon: chiaki_mutex_unlock(&service->state_mutex); } static void discovery_service_report_state(ChiakiDiscoveryService *service) { // service->state_mutex must be locked if(service->options.cb) service->options.cb(service->hosts, service->hosts_count, service->options.cb_user); } chiaki-v2.2.0/lib/src/ecdh.c000066400000000000000000000153701447035777400155650ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #ifdef CHIAKI_LIB_ENABLE_MBEDTLS #include "mbedtls/entropy.h" #include "mbedtls/md.h" #else #include #include #include #include #include #endif // memset #include #include CHIAKI_EXPORT ChiakiErrorCode chiaki_ecdh_init(ChiakiECDH *ecdh) { memset(ecdh, 0, sizeof(ChiakiECDH)); #ifdef CHIAKI_LIB_ENABLE_MBEDTLS #define CHECK(err) if((err) != 0) { \ chiaki_ecdh_fini(ecdh); \ return CHIAKI_ERR_UNKNOWN; } // mbedtls ecdh example: // https://github.com/ARMmbed/mbedtls/blob/development/programs/pkey/ecdh_curve25519.c const char pers[] = "ecdh"; mbedtls_entropy_context entropy; //init RNG Seed context mbedtls_entropy_init(&entropy); // init local key //mbedtls_ecp_keypair_init(&ecdh->key_local); mbedtls_ecdh_init(&ecdh->ctx); // init ecdh group // keep rng context in ecdh for later reuse mbedtls_ctr_drbg_init(&ecdh->drbg); // build RNG seed CHECK(mbedtls_ctr_drbg_seed(&ecdh->drbg, mbedtls_entropy_func, &entropy, (const unsigned char *) pers, sizeof pers)); // build MBEDTLS_ECP_DP_SECP256K1 group CHECK(mbedtls_ecp_group_load(&ecdh->ctx.grp, MBEDTLS_ECP_DP_SECP256K1)); // build key CHECK(mbedtls_ecdh_gen_public(&ecdh->ctx.grp, &ecdh->ctx.d, &ecdh->ctx.Q, mbedtls_ctr_drbg_random, &ecdh->drbg)); // relese entropy ptr mbedtls_entropy_free(&entropy); #undef CHECK #else #define CHECK(a) if(!(a)) { chiaki_ecdh_fini(ecdh); return CHIAKI_ERR_UNKNOWN; } CHECK(ecdh->group = EC_GROUP_new_by_curve_name(NID_secp256k1)); CHECK(ecdh->key_local = EC_KEY_new()); CHECK(EC_KEY_set_group(ecdh->key_local, ecdh->group)); CHECK(EC_KEY_generate_key(ecdh->key_local)); #undef CHECK #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_ecdh_fini(ChiakiECDH *ecdh) { #ifdef CHIAKI_LIB_ENABLE_MBEDTLS mbedtls_ecdh_free(&ecdh->ctx); mbedtls_ctr_drbg_free(&ecdh->drbg); #else EC_KEY_free(ecdh->key_local); EC_GROUP_free(ecdh->group); #endif } CHIAKI_EXPORT ChiakiErrorCode chiaki_ecdh_set_local_key(ChiakiECDH *ecdh, const uint8_t *private_key, size_t private_key_size, const uint8_t *public_key, size_t public_key_size) { #ifdef CHIAKI_LIB_ENABLE_MBEDTLS //https://tls.mbed.org/discussions/generic/publickey-binary-data-in-der // Load keys from buffers (i.e: config file) // TODO test // public int r = 0; r = mbedtls_ecp_point_read_binary(&ecdh->ctx.grp, &ecdh->ctx.Q, public_key, public_key_size); if(r != 0) return CHIAKI_ERR_UNKNOWN; // secret r = mbedtls_mpi_read_binary(&ecdh->ctx.d, private_key, private_key_size); if(r != 0) return CHIAKI_ERR_UNKNOWN; // regen key r = mbedtls_ecdh_gen_public(&ecdh->ctx.grp, &ecdh->ctx.d, &ecdh->ctx.Q, mbedtls_ctr_drbg_random, &ecdh->drbg); if(r != 0) return CHIAKI_ERR_UNKNOWN; return CHIAKI_ERR_SUCCESS; #else ChiakiErrorCode err = CHIAKI_ERR_SUCCESS; BIGNUM *private_key_bn = BN_bin2bn(private_key, (int)private_key_size, NULL); if(!private_key_bn) return CHIAKI_ERR_UNKNOWN; EC_POINT *public_key_point = EC_POINT_new(ecdh->group); if(!public_key_point) { err = CHIAKI_ERR_UNKNOWN; goto error_priv; } if(!EC_POINT_oct2point(ecdh->group, public_key_point, public_key, public_key_size, NULL)) { err = CHIAKI_ERR_UNKNOWN; goto error_pub; } if(!EC_KEY_set_private_key(ecdh->key_local, private_key_bn)) { err = CHIAKI_ERR_UNKNOWN; goto error_pub; } if(!EC_KEY_set_public_key(ecdh->key_local, public_key_point)) { err = CHIAKI_ERR_UNKNOWN; goto error_pub; } error_pub: EC_POINT_free(public_key_point); error_priv: BN_free(private_key_bn); return err; #endif } CHIAKI_EXPORT ChiakiErrorCode chiaki_ecdh_get_local_pub_key(ChiakiECDH *ecdh, uint8_t *key_out, size_t *key_out_size, const uint8_t *handshake_key, uint8_t *sig_out, size_t *sig_out_size) { #ifdef CHIAKI_LIB_ENABLE_MBEDTLS mbedtls_md_context_t ctx; mbedtls_md_init(&ctx); #define GOTO_ERROR(err) do { \ if((err) !=0){ \ goto error; \ }} while(0) // extract pub key to build dh shared secret // this key is sent to the remote server GOTO_ERROR(mbedtls_ecp_point_write_binary( &ecdh->ctx.grp, &ecdh->ctx.Q, MBEDTLS_ECP_PF_UNCOMPRESSED, key_out_size, key_out, *key_out_size )); // https://tls.mbed.org/module-level-design-hashing // HMAC GOTO_ERROR(mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(MBEDTLS_MD_SHA256) , 1)); GOTO_ERROR(mbedtls_md_hmac_starts(&ctx, handshake_key, CHIAKI_HANDSHAKE_KEY_SIZE)); GOTO_ERROR(mbedtls_md_hmac_update(&ctx, key_out, *key_out_size)); GOTO_ERROR(mbedtls_md_hmac_finish(&ctx, sig_out)); // SHA256 = 8*32 *sig_out_size = 32; #undef GOTO_ERROR mbedtls_md_free(&ctx); return CHIAKI_ERR_SUCCESS; error: mbedtls_md_free(&ctx); return CHIAKI_ERR_UNKNOWN; #else const EC_POINT *point = EC_KEY_get0_public_key(ecdh->key_local); if(!point) return CHIAKI_ERR_UNKNOWN; *key_out_size = EC_POINT_point2oct(ecdh->group, point, POINT_CONVERSION_UNCOMPRESSED, key_out, *key_out_size, NULL); if(!(*key_out_size)) return CHIAKI_ERR_UNKNOWN; if(!HMAC(EVP_sha256(), handshake_key, CHIAKI_HANDSHAKE_KEY_SIZE, key_out, *key_out_size, sig_out, (unsigned int *)sig_out_size)) return CHIAKI_ERR_UNKNOWN; return CHIAKI_ERR_SUCCESS; #endif } CHIAKI_EXPORT ChiakiErrorCode chiaki_ecdh_derive_secret(ChiakiECDH *ecdh, uint8_t *secret_out, const uint8_t *remote_key, size_t remote_key_size, const uint8_t *handshake_key, const uint8_t *remote_sig, size_t remote_sig_size) { //compute DH shared key #ifdef CHIAKI_LIB_ENABLE_MBEDTLS // https://github.com/ARMmbed/mbedtls/blob/development/programs/pkey/ecdh_curve25519.c#L151 #define GOTO_ERROR(err) do { \ if((err) !=0){ \ goto error;} \ } while(0) GOTO_ERROR(mbedtls_mpi_lset(&ecdh->ctx.Qp.Z, 1)); // load Qp point form remote PK GOTO_ERROR(mbedtls_ecp_point_read_binary(&ecdh->ctx.grp, &ecdh->ctx.Qp, remote_key, remote_key_size)); // build shared secret (diffie-hellman) GOTO_ERROR(mbedtls_ecdh_compute_shared(&ecdh->ctx.grp, &ecdh->ctx.z, &ecdh->ctx.Qp, &ecdh->ctx.d, mbedtls_ctr_drbg_random, &ecdh->drbg)); // export shared secret to data buffer GOTO_ERROR(mbedtls_mpi_write_binary(&ecdh->ctx.z, secret_out, CHIAKI_ECDH_SECRET_SIZE)); return CHIAKI_ERR_SUCCESS; error: return CHIAKI_ERR_UNKNOWN; #else EC_POINT *remote_public_key = EC_POINT_new(ecdh->group); if(!remote_public_key) return CHIAKI_ERR_UNKNOWN; if(!EC_POINT_oct2point(ecdh->group, remote_public_key, remote_key, remote_key_size, NULL)) { EC_POINT_free(remote_public_key); return CHIAKI_ERR_UNKNOWN; } int r = ECDH_compute_key(secret_out, CHIAKI_ECDH_SECRET_SIZE, remote_public_key, ecdh->key_local, NULL); EC_POINT_free(remote_public_key); if(r != CHIAKI_ECDH_SECRET_SIZE) return CHIAKI_ERR_UNKNOWN; return CHIAKI_ERR_SUCCESS; #endif } chiaki-v2.2.0/lib/src/fec.c000066400000000000000000000031771447035777400154210ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include int *create_matrix(unsigned int k, unsigned int m) { return cauchy_original_coding_matrix(k, m, CHIAKI_FEC_WORDSIZE); } CHIAKI_EXPORT ChiakiErrorCode chiaki_fec_decode(uint8_t *frame_buf, size_t unit_size, size_t stride, unsigned int k, unsigned int m, const unsigned int *erasures, size_t erasures_count) { if(stride < unit_size) return CHIAKI_ERR_INVALID_DATA; int *matrix = create_matrix(k, m); if(!matrix) return CHIAKI_ERR_MEMORY; ChiakiErrorCode err = CHIAKI_ERR_SUCCESS; int *jerasures = calloc(erasures_count + 1, sizeof(int)); if(!jerasures) { err = CHIAKI_ERR_MEMORY; goto error_matrix; } memcpy(jerasures, erasures, erasures_count * sizeof(int)); jerasures[erasures_count] = -1; uint8_t **data_ptrs = calloc(k, sizeof(uint8_t *)); if(!data_ptrs) { err = CHIAKI_ERR_MEMORY; goto error_jerasures; } uint8_t **coding_ptrs = calloc(m, sizeof(uint8_t *)); if(!coding_ptrs) { err = CHIAKI_ERR_MEMORY; goto error_data_ptrs; } for(size_t i=0; i #include #ifdef _WIN32 #include #else #include #endif #include #include #define GYRO_MIN -30.0f #define GYRO_MAX 30.0f #define ACCEL_MIN -5.0f #define ACCEL_MAX 5.0f static uint32_t compress_quat(float *q) { // very similar idea as https://github.com/jpreiss/quatcompress size_t largest_i = 0; for(size_t i = 1; i < 4; i++) { if(fabs(q[i]) > fabs(q[largest_i])) largest_i = i; } uint32_t r = (q[largest_i] < 0.0 ? 1 : 0) | (largest_i << 1); for(size_t i = 0; i < 3; i++) { size_t qi = i < largest_i ? i : i + 1; float v = q[qi]; if(v < -M_SQRT1_2) v = -M_SQRT1_2; if(v > M_SQRT1_2) v = M_SQRT1_2; v += M_SQRT1_2; v *= (float)0x1ff / (2.0f * M_SQRT1_2); r |= (uint32_t)v << (3 + i * 9); } return r; } CHIAKI_EXPORT void chiaki_feedback_state_format_v9(uint8_t *buf, ChiakiFeedbackState *state) { buf[0x0] = 0xa0; uint16_t v = (uint16_t)(0xffff * ((float)state->gyro_x - GYRO_MIN) / (GYRO_MAX - GYRO_MIN)); buf[0x1] = v; buf[0x2] = v >> 8; v = (uint16_t)(0xffff * ((float)state->gyro_y - GYRO_MIN) / (GYRO_MAX - GYRO_MIN)); buf[0x3] = v; buf[0x4] = v >> 8; v = (uint16_t)(0xffff * ((float)state->gyro_z - GYRO_MIN) / (GYRO_MAX - GYRO_MIN)); buf[0x5] = v; buf[0x6] = v >> 8; v = (uint16_t)(0xffff * ((float)state->accel_x - ACCEL_MIN) / (ACCEL_MAX - ACCEL_MIN)); buf[0x7] = v; buf[0x8] = v >> 8; v = (uint16_t)(0xffff * ((float)state->accel_y - ACCEL_MIN) / (ACCEL_MAX - ACCEL_MIN)); buf[0x9] = v; buf[0xa] = v >> 8; v = (uint16_t)(0xffff * ((float)state->accel_z - ACCEL_MIN) / (ACCEL_MAX - ACCEL_MIN)); buf[0xb] = v; buf[0xc] = v >> 8; float q[4] = { state->orient_x, state->orient_y, state->orient_z, state->orient_w }; uint32_t qc = compress_quat(q); buf[0xd] = qc; buf[0xe] = qc >> 0x8; buf[0xf] = qc >> 0x10; buf[0x10] = qc >> 0x18; *((chiaki_unaligned_uint16_t *)(buf + 0x11)) = htons((uint16_t)state->left_x); *((chiaki_unaligned_uint16_t *)(buf + 0x13)) = htons((uint16_t)state->left_y); *((chiaki_unaligned_uint16_t *)(buf + 0x15)) = htons((uint16_t)state->right_x); *((chiaki_unaligned_uint16_t *)(buf + 0x17)) = htons((uint16_t)state->right_y); } CHIAKI_EXPORT void chiaki_feedback_state_format_v12(uint8_t *buf, ChiakiFeedbackState *state) { chiaki_feedback_state_format_v9(buf, state); buf[0x19] = 0x0; buf[0x1a] = 0x0; // 1 is classic DualShock, 0 is DualSense, but using 0 requires setting [0x19] and [0x1a] to // values taken from raw HID, which is generally not available. But setting 1 for both seems // to always work fine. buf[0x1b] = 0x1; } CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_history_event_set_button(ChiakiFeedbackHistoryEvent *event, uint64_t button, uint8_t state) { // some buttons use a third byte for the state, some don't event->buf[0] = 0x80; event->len = 2; switch(button) { case CHIAKI_CONTROLLER_BUTTON_CROSS: event->buf[1] = 0x88; break; case CHIAKI_CONTROLLER_BUTTON_MOON: event->buf[1] = 0x89; break; case CHIAKI_CONTROLLER_BUTTON_BOX: event->buf[1] = 0x8a; break; case CHIAKI_CONTROLLER_BUTTON_PYRAMID: event->buf[1] = 0x8b; break; case CHIAKI_CONTROLLER_BUTTON_DPAD_LEFT: event->buf[1] = 0x82; break; case CHIAKI_CONTROLLER_BUTTON_DPAD_RIGHT: event->buf[1] = 0x83; break; case CHIAKI_CONTROLLER_BUTTON_DPAD_UP: event->buf[1] = 0x80; break; case CHIAKI_CONTROLLER_BUTTON_DPAD_DOWN: event->buf[1] = 0x81; break; case CHIAKI_CONTROLLER_BUTTON_L1: event->buf[1] = 0x84; break; case CHIAKI_CONTROLLER_BUTTON_R1: event->buf[1] = 0x85; break; case CHIAKI_CONTROLLER_ANALOG_BUTTON_L2: event->buf[1] = 0x86; break; case CHIAKI_CONTROLLER_ANALOG_BUTTON_R2: event->buf[1] = 0x87; break; case CHIAKI_CONTROLLER_BUTTON_L3: event->buf[1] = state ? 0xaf : 0x8f; return CHIAKI_ERR_SUCCESS; case CHIAKI_CONTROLLER_BUTTON_R3: event->buf[1] = state ? 0xb0 : 0x90; return CHIAKI_ERR_SUCCESS; case CHIAKI_CONTROLLER_BUTTON_OPTIONS: event->buf[1] = state ? 0xac : 0x8c; return CHIAKI_ERR_SUCCESS; case CHIAKI_CONTROLLER_BUTTON_SHARE: event->buf[1] = state ? 0xad : 0x8d; return CHIAKI_ERR_SUCCESS; case CHIAKI_CONTROLLER_BUTTON_TOUCHPAD: event->buf[1] = state ? 0xb1 : 0x91; return CHIAKI_ERR_SUCCESS; case CHIAKI_CONTROLLER_BUTTON_PS: event->buf[1] = state ? 0xae : 0x8e; return CHIAKI_ERR_SUCCESS; default: return CHIAKI_ERR_INVALID_DATA; } event->buf[2] = state; event->len = 3; return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_feedback_history_event_set_touchpad(ChiakiFeedbackHistoryEvent *event, bool down, uint8_t pointer_id, uint16_t x, uint16_t y) { event->len = 5; event->buf[0] = down ? 0xd0 : 0xc0; event->buf[1] = pointer_id & 0x7f; event->buf[2] = (uint8_t)(x >> 4); event->buf[3] = (uint8_t)((x & 0xf) << 4) | (uint8_t)(y >> 8); event->buf[4] = (uint8_t)y; } CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_history_buffer_init(ChiakiFeedbackHistoryBuffer *feedback_history_buffer, size_t size) { feedback_history_buffer->events = calloc(size, sizeof(ChiakiFeedbackHistoryEvent)); if(!feedback_history_buffer->events) return CHIAKI_ERR_MEMORY; feedback_history_buffer->size = size; feedback_history_buffer->begin = 0; feedback_history_buffer->len = 0; return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_feedback_history_buffer_fini(ChiakiFeedbackHistoryBuffer *feedback_history_buffer) { free(feedback_history_buffer->events); } CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_history_buffer_format(ChiakiFeedbackHistoryBuffer *feedback_history_buffer, uint8_t *buf, size_t *buf_size) { size_t size_max = *buf_size; size_t written = 0; for(size_t i=0; ilen; i++) { ChiakiFeedbackHistoryEvent *event = &feedback_history_buffer->events[(feedback_history_buffer->begin + i) % feedback_history_buffer->size]; if(written + event->len > size_max) return CHIAKI_ERR_BUF_TOO_SMALL; memcpy(buf + written, event->buf, event->len); written += event->len; } *buf_size = written; return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_feedback_history_buffer_push(ChiakiFeedbackHistoryBuffer *feedback_history_buffer, ChiakiFeedbackHistoryEvent *event) { feedback_history_buffer->begin = (feedback_history_buffer->begin + feedback_history_buffer->size - 1) % feedback_history_buffer->size; feedback_history_buffer->len++; if(feedback_history_buffer->len >= feedback_history_buffer->size) feedback_history_buffer->len = feedback_history_buffer->size; feedback_history_buffer->events[feedback_history_buffer->begin] = *event; } chiaki-v2.2.0/lib/src/feedbacksender.c000066400000000000000000000243261447035777400176100ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #define FEEDBACK_STATE_TIMEOUT_MIN_MS 8 // minimum time to wait between sending 2 packets #define FEEDBACK_STATE_TIMEOUT_MAX_MS 200 // maximum time to wait between sending 2 packets #define FEEDBACK_HISTORY_BUFFER_SIZE 0x10 static void *feedback_sender_thread_func(void *user); CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_sender_init(ChiakiFeedbackSender *feedback_sender, ChiakiTakion *takion) { feedback_sender->log = takion->log; feedback_sender->takion = takion; chiaki_controller_state_set_idle(&feedback_sender->controller_state_prev); chiaki_controller_state_set_idle(&feedback_sender->controller_state); feedback_sender->state_seq_num = 0; feedback_sender->history_seq_num = 0; ChiakiErrorCode err = chiaki_feedback_history_buffer_init(&feedback_sender->history_buf, FEEDBACK_HISTORY_BUFFER_SIZE); if(err != CHIAKI_ERR_SUCCESS) return err; err = chiaki_mutex_init(&feedback_sender->state_mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error_history_buffer; err = chiaki_cond_init(&feedback_sender->state_cond); if(err != CHIAKI_ERR_SUCCESS) goto error_mutex; err = chiaki_thread_create(&feedback_sender->thread, feedback_sender_thread_func, feedback_sender); if(err != CHIAKI_ERR_SUCCESS) goto error_cond; chiaki_thread_set_name(&feedback_sender->thread, "Chiaki Feedback Sender"); return CHIAKI_ERR_SUCCESS; error_cond: chiaki_cond_fini(&feedback_sender->state_cond); error_mutex: chiaki_mutex_fini(&feedback_sender->state_mutex); error_history_buffer: chiaki_feedback_history_buffer_fini(&feedback_sender->history_buf); return err; } CHIAKI_EXPORT void chiaki_feedback_sender_fini(ChiakiFeedbackSender *feedback_sender) { chiaki_mutex_lock(&feedback_sender->state_mutex); feedback_sender->should_stop = true; chiaki_mutex_unlock(&feedback_sender->state_mutex); chiaki_cond_signal(&feedback_sender->state_cond); chiaki_thread_join(&feedback_sender->thread, NULL); chiaki_cond_fini(&feedback_sender->state_cond); chiaki_mutex_fini(&feedback_sender->state_mutex); chiaki_feedback_history_buffer_fini(&feedback_sender->history_buf); } CHIAKI_EXPORT ChiakiErrorCode chiaki_feedback_sender_set_controller_state(ChiakiFeedbackSender *feedback_sender, ChiakiControllerState *state) { ChiakiErrorCode err = chiaki_mutex_lock(&feedback_sender->state_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; if(chiaki_controller_state_equals(&feedback_sender->controller_state, state)) { chiaki_mutex_unlock(&feedback_sender->state_mutex); return CHIAKI_ERR_SUCCESS; } feedback_sender->controller_state = *state; feedback_sender->controller_state_changed = true; chiaki_mutex_unlock(&feedback_sender->state_mutex); chiaki_cond_signal(&feedback_sender->state_cond); return CHIAKI_ERR_SUCCESS; } static bool controller_state_equals_for_feedback_state(ChiakiControllerState *a, ChiakiControllerState *b) { if(!(a->left_x == b->left_x && a->left_y == b->left_y && a->right_x == b->right_x && a->right_y == b->right_y)) return false; #define CHECKF(n) if(a->n < b->n - 0.0000001f || a->n > b->n + 0.0000001f) return false CHECKF(gyro_x); CHECKF(gyro_y); CHECKF(gyro_z); CHECKF(accel_x); CHECKF(accel_y); CHECKF(accel_z); CHECKF(orient_x); CHECKF(orient_y); CHECKF(orient_z); CHECKF(orient_w); #undef CHECKF return true; } static void feedback_sender_send_state(ChiakiFeedbackSender *feedback_sender) { ChiakiFeedbackState state; state.left_x = feedback_sender->controller_state.left_x; state.left_y = feedback_sender->controller_state.left_y; state.right_x = feedback_sender->controller_state.right_x; state.right_y = feedback_sender->controller_state.right_y; state.gyro_x = feedback_sender->controller_state.gyro_x; state.gyro_y = feedback_sender->controller_state.gyro_y; state.gyro_z = feedback_sender->controller_state.gyro_z; state.accel_x = feedback_sender->controller_state.accel_x; state.accel_y = feedback_sender->controller_state.accel_y; state.accel_z = feedback_sender->controller_state.accel_z; state.orient_x = feedback_sender->controller_state.orient_x; state.orient_y = feedback_sender->controller_state.orient_y; state.orient_z = feedback_sender->controller_state.orient_z; state.orient_w = feedback_sender->controller_state.orient_w; ChiakiErrorCode err = chiaki_takion_send_feedback_state(feedback_sender->takion, feedback_sender->state_seq_num++, &state); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(feedback_sender->log, "FeedbackSender failed to send Feedback State"); } static bool controller_state_equals_for_feedback_history(ChiakiControllerState *a, ChiakiControllerState *b) { if(!(a->buttons == b->buttons && a->l2_state == b->l2_state && a->r2_state == b->r2_state)) return false; for(size_t i=0; itouches[i].id != b->touches[i].id) return false; if(a->touches[i].id >= 0 && (a->touches[i].x != b->touches[i].x || a->touches[i].y != b->touches[i].y)) return false; } return true; } static void feedback_sender_send_history_packet(ChiakiFeedbackSender *feedback_sender) { uint8_t buf[0x300]; size_t buf_size = sizeof(buf); ChiakiErrorCode err = chiaki_feedback_history_buffer_format(&feedback_sender->history_buf, buf, &buf_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format history buffer"); return; } //CHIAKI_LOGD(feedback_sender->log, "Feedback History:"); //chiaki_log_hexdump(feedback_sender->log, CHIAKI_LOG_DEBUG, buf, buf_size); chiaki_takion_send_feedback_history(feedback_sender->takion, feedback_sender->history_seq_num++, buf, buf_size); } static void feedback_sender_send_history(ChiakiFeedbackSender *feedback_sender) { ChiakiControllerState *state_prev = &feedback_sender->controller_state_prev; ChiakiControllerState *state_now = &feedback_sender->controller_state; uint64_t buttons_prev = state_prev->buttons; uint64_t buttons_now = state_now->buttons; for(uint8_t i=0; ilog, "Feedback Sender failed to format button history event for button id %llu", (unsigned long long)button_id); continue; } chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event); feedback_sender_send_history_packet(feedback_sender); } } if(state_prev->l2_state != state_now->l2_state) { ChiakiFeedbackHistoryEvent event; ChiakiErrorCode err = chiaki_feedback_history_event_set_button(&event, CHIAKI_CONTROLLER_ANALOG_BUTTON_L2, state_now->l2_state); if(err == CHIAKI_ERR_SUCCESS) { chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event); feedback_sender_send_history_packet(feedback_sender); } else CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format button history event for L2"); } if(state_prev->r2_state != state_now->r2_state) { ChiakiFeedbackHistoryEvent event; ChiakiErrorCode err = chiaki_feedback_history_event_set_button(&event, CHIAKI_CONTROLLER_ANALOG_BUTTON_R2, state_now->r2_state); if(err == CHIAKI_ERR_SUCCESS) { chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event); feedback_sender_send_history_packet(feedback_sender); } else CHIAKI_LOGE(feedback_sender->log, "Feedback Sender failed to format button history event for R2"); } for(size_t i=0; itouches[i].id != state_now->touches[i].id && state_prev->touches[i].id >= 0) { ChiakiFeedbackHistoryEvent event; chiaki_feedback_history_event_set_touchpad(&event, false, (uint8_t)state_prev->touches[i].id, state_prev->touches[i].x, state_prev->touches[i].y); chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event); feedback_sender_send_history_packet(feedback_sender); } else if(state_now->touches[i].id >= 0 && (state_prev->touches[i].id != state_now->touches[i].id || state_prev->touches[i].x != state_now->touches[i].x || state_prev->touches[i].y != state_now->touches[i].y)) { ChiakiFeedbackHistoryEvent event; chiaki_feedback_history_event_set_touchpad(&event, true, (uint8_t)state_now->touches[i].id, state_now->touches[i].x, state_now->touches[i].y); chiaki_feedback_history_buffer_push(&feedback_sender->history_buf, &event); feedback_sender_send_history_packet(feedback_sender); } } } static bool state_cond_check(void *user) { ChiakiFeedbackSender *feedback_sender = user; return feedback_sender->should_stop || feedback_sender->controller_state_changed; } static void *feedback_sender_thread_func(void *user) { ChiakiFeedbackSender *feedback_sender = user; ChiakiErrorCode err = chiaki_mutex_lock(&feedback_sender->state_mutex); if(err != CHIAKI_ERR_SUCCESS) return NULL; uint64_t next_timeout = FEEDBACK_STATE_TIMEOUT_MAX_MS; while(true) { err = chiaki_cond_timedwait_pred(&feedback_sender->state_cond, &feedback_sender->state_mutex, next_timeout, state_cond_check, feedback_sender); if(err != CHIAKI_ERR_SUCCESS && err != CHIAKI_ERR_TIMEOUT) break; if(feedback_sender->should_stop) break; bool send_feedback_state = true; bool send_feedback_history = false; if(feedback_sender->controller_state_changed) { // TODO: FEEDBACK_STATE_TIMEOUT_MIN_MS feedback_sender->controller_state_changed = false; // don't need to send feedback state if nothing relevant changed if(controller_state_equals_for_feedback_state(&feedback_sender->controller_state, &feedback_sender->controller_state_prev)) send_feedback_state = false; send_feedback_history = !controller_state_equals_for_feedback_history(&feedback_sender->controller_state, &feedback_sender->controller_state_prev); } // else: timeout if(send_feedback_state) feedback_sender_send_state(feedback_sender); if(send_feedback_history) feedback_sender_send_history(feedback_sender); feedback_sender->controller_state_prev = feedback_sender->controller_state; } chiaki_mutex_unlock(&feedback_sender->state_mutex); return NULL; } chiaki-v2.2.0/lib/src/ffmpegdecoder.c000066400000000000000000000127451447035777400174570ustar00rootroot00000000000000 #include #include static enum AVCodecID chiaki_codec_av_codec_id(ChiakiCodec codec) { switch(codec) { case CHIAKI_CODEC_H265: case CHIAKI_CODEC_H265_HDR: return AV_CODEC_ID_H265; default: return AV_CODEC_ID_H264; } } CHIAKI_EXPORT ChiakiErrorCode chiaki_ffmpeg_decoder_init(ChiakiFfmpegDecoder *decoder, ChiakiLog *log, ChiakiCodec codec, const char *hw_decoder_name, ChiakiFfmpegFrameAvailable frame_available_cb, void *frame_available_cb_user) { decoder->log = log; decoder->frame_available_cb = frame_available_cb; decoder->frame_available_cb_user = frame_available_cb_user; ChiakiErrorCode err = chiaki_mutex_init(&decoder->mutex, false); if(err != CHIAKI_ERR_SUCCESS) return err; decoder->hw_device_ctx = NULL; decoder->hw_pix_fmt = AV_PIX_FMT_NONE; #if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(58, 10, 100) avcodec_register_all(); #endif enum AVCodecID av_codec = chiaki_codec_av_codec_id(codec); decoder->av_codec = avcodec_find_decoder(av_codec); if(!decoder->av_codec) { CHIAKI_LOGE(log, "%s Codec not available", chiaki_codec_name(codec)); goto error_mutex; } decoder->codec_context = avcodec_alloc_context3(decoder->av_codec); if(!decoder->codec_context) { CHIAKI_LOGE(log, "Failed to alloc codec context"); goto error_mutex; } if(hw_decoder_name) { CHIAKI_LOGI(log, "Using hardware decoder \"%s\"", hw_decoder_name); enum AVHWDeviceType type = av_hwdevice_find_type_by_name(hw_decoder_name); if(type == AV_HWDEVICE_TYPE_NONE) { CHIAKI_LOGE(log, "Hardware decoder \"%s\" not found", hw_decoder_name); goto error_codec_context; } for(int i = 0;; i++) { const AVCodecHWConfig *config = avcodec_get_hw_config(decoder->av_codec, i); if(!config) { CHIAKI_LOGE(log, "avcodec_get_hw_config failed"); goto error_codec_context; } if(config->methods & AV_CODEC_HW_CONFIG_METHOD_HW_DEVICE_CTX && config->device_type == type) { decoder->hw_pix_fmt = config->pix_fmt; break; } } if(av_hwdevice_ctx_create(&decoder->hw_device_ctx, type, NULL, NULL, 0) < 0) { CHIAKI_LOGE(log, "Failed to create hwdevice context"); goto error_codec_context; } decoder->codec_context->hw_device_ctx = av_buffer_ref(decoder->hw_device_ctx); } if(avcodec_open2(decoder->codec_context, decoder->av_codec, NULL) < 0) { CHIAKI_LOGE(log, "Failed to open codec context"); goto error_codec_context; } return CHIAKI_ERR_SUCCESS; error_codec_context: if(decoder->hw_device_ctx) av_buffer_unref(&decoder->hw_device_ctx); avcodec_free_context(&decoder->codec_context); error_mutex: chiaki_mutex_fini(&decoder->mutex); return CHIAKI_ERR_UNKNOWN; } CHIAKI_EXPORT void chiaki_ffmpeg_decoder_fini(ChiakiFfmpegDecoder *decoder) { avcodec_close(decoder->codec_context); avcodec_free_context(&decoder->codec_context); if(decoder->hw_device_ctx) av_buffer_unref(&decoder->hw_device_ctx); } CHIAKI_EXPORT bool chiaki_ffmpeg_decoder_video_sample_cb(uint8_t *buf, size_t buf_size, void *user) { ChiakiFfmpegDecoder *decoder = user; chiaki_mutex_lock(&decoder->mutex); AVPacket packet; av_init_packet(&packet); packet.data = buf; packet.size = buf_size; int r; send_packet: r = avcodec_send_packet(decoder->codec_context, &packet); if(r != 0) { if(r == AVERROR(EAGAIN)) { CHIAKI_LOGE(decoder->log, "AVCodec internal buffer is full removing frames before pushing"); AVFrame *frame = av_frame_alloc(); if(!frame) { CHIAKI_LOGE(decoder->log, "Failed to alloc AVFrame"); goto hell; } r = avcodec_receive_frame(decoder->codec_context, frame); av_frame_free(&frame); if(r != 0) { CHIAKI_LOGE(decoder->log, "Failed to pull frame"); goto hell; } goto send_packet; } else { char errbuf[128]; av_make_error_string(errbuf, sizeof(errbuf), r); CHIAKI_LOGE(decoder->log, "Failed to push frame: %s", errbuf); goto hell; } } chiaki_mutex_unlock(&decoder->mutex); decoder->frame_available_cb(decoder, decoder->frame_available_cb_user); return true; hell: chiaki_mutex_unlock(&decoder->mutex); return false; } static AVFrame *pull_from_hw(ChiakiFfmpegDecoder *decoder, AVFrame *hw_frame) { AVFrame *sw_frame = av_frame_alloc(); if(av_hwframe_transfer_data(sw_frame, hw_frame, 0) < 0) { CHIAKI_LOGE(decoder->log, "Failed to transfer frame from hardware"); av_frame_unref(sw_frame); sw_frame = NULL; } av_frame_unref(hw_frame); return sw_frame; } CHIAKI_EXPORT AVFrame *chiaki_ffmpeg_decoder_pull_frame(ChiakiFfmpegDecoder *decoder) { chiaki_mutex_lock(&decoder->mutex); // always try to pull as much as possible and return only the very last frame AVFrame *frame_last = NULL; AVFrame *frame = NULL; while(true) { AVFrame *next_frame; if(frame_last) { av_frame_unref(frame_last); next_frame = frame_last; } else { next_frame = av_frame_alloc(); if(!next_frame) break; } frame_last = frame; frame = next_frame; int r = avcodec_receive_frame(decoder->codec_context, frame); if(!r) frame = decoder->hw_device_ctx ? pull_from_hw(decoder, frame) : frame; else { if(r != AVERROR(EAGAIN)) CHIAKI_LOGE(decoder->log, "Decoding with FFMPEG failed"); av_frame_free(&frame); frame = frame_last; break; } } chiaki_mutex_unlock(&decoder->mutex); return frame; } CHIAKI_EXPORT enum AVPixelFormat chiaki_ffmpeg_decoder_get_pixel_format(ChiakiFfmpegDecoder *decoder) { // TODO: this is probably very wrong, especially for hdr return decoder->hw_device_ctx ? AV_PIX_FMT_NV12 : AV_PIX_FMT_YUV420P; } chiaki-v2.2.0/lib/src/frameprocessor.c000066400000000000000000000244011447035777400177070ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #ifndef _WIN32 #include #endif CHIAKI_EXPORT void chiaki_stream_stats_reset(ChiakiStreamStats *stats) { stats->frames = 0; stats->bytes = 0; } CHIAKI_EXPORT void chiaki_stream_stats_frame(ChiakiStreamStats *stats, uint64_t size) { stats->frames++; stats->bytes += size; //float br = (float)chiaki_stream_stats_bitrate(stats, 60) / 1000000.0f; //CHIAKI_LOGD(NULL, "bitrate: %f", br); } CHIAKI_EXPORT uint64_t chiaki_stream_stats_bitrate(ChiakiStreamStats *stats, uint64_t framerate) { return (stats->bytes * 8 * framerate) / stats->frames; } #define UNIT_SLOTS_MAX 256 struct chiaki_frame_unit_t { size_t data_size; }; CHIAKI_EXPORT void chiaki_frame_processor_init(ChiakiFrameProcessor *frame_processor, ChiakiLog *log) { frame_processor->log = log; frame_processor->frame_buf = NULL; frame_processor->frame_buf_size = 0; frame_processor->buf_size_per_unit = 0; frame_processor->buf_stride_per_unit = 0; frame_processor->units_source_expected = 0; frame_processor->units_fec_expected = 0; frame_processor->units_source_received = 0; frame_processor->units_fec_received = 0; frame_processor->unit_slots = NULL; frame_processor->unit_slots_size = 0; frame_processor->flushed = true; chiaki_stream_stats_reset(&frame_processor->stream_stats); } CHIAKI_EXPORT void chiaki_frame_processor_fini(ChiakiFrameProcessor *frame_processor) { free(frame_processor->frame_buf); free(frame_processor->unit_slots); } CHIAKI_EXPORT ChiakiErrorCode chiaki_frame_processor_alloc_frame(ChiakiFrameProcessor *frame_processor, ChiakiTakionAVPacket *packet) { if(packet->units_in_frame_total < packet->units_in_frame_fec) { CHIAKI_LOGE(frame_processor->log, "Packet has units_in_frame_total < units_in_frame_fec"); return CHIAKI_ERR_INVALID_DATA; } frame_processor->flushed = false; frame_processor->units_source_expected = packet->units_in_frame_total - packet->units_in_frame_fec; frame_processor->units_fec_expected = packet->units_in_frame_fec; if(frame_processor->units_fec_expected < 1) frame_processor->units_fec_expected = 1; frame_processor->buf_size_per_unit = packet->data_size; if(packet->is_video && packet->unit_index < frame_processor->units_source_expected) { if(packet->data_size < 2) { CHIAKI_LOGE(frame_processor->log, "Packet too small to read buf size extension"); return CHIAKI_ERR_BUF_TOO_SMALL; } frame_processor->buf_size_per_unit += ntohs(((chiaki_unaligned_uint16_t *)packet->data)[0]); } frame_processor->buf_stride_per_unit = ((frame_processor->buf_size_per_unit + 0xf) / 0x10) * 0x10; if(frame_processor->buf_size_per_unit == 0) { CHIAKI_LOGE(frame_processor->log, "Frame Processor doesn't handle empty units"); return CHIAKI_ERR_BUF_TOO_SMALL; } frame_processor->units_source_received = 0; frame_processor->units_fec_received = 0; size_t unit_slots_size_required = frame_processor->units_source_expected + frame_processor->units_fec_expected; if(unit_slots_size_required > UNIT_SLOTS_MAX) { CHIAKI_LOGE(frame_processor->log, "Packet suggests more than %u unit slots", UNIT_SLOTS_MAX); return CHIAKI_ERR_INVALID_DATA; } if(unit_slots_size_required != frame_processor->unit_slots_size) { void *new_ptr = NULL; if(frame_processor->unit_slots) { new_ptr = realloc(frame_processor->unit_slots, unit_slots_size_required * sizeof(ChiakiFrameUnit)); if(!new_ptr) free(frame_processor->unit_slots); } else new_ptr = malloc(unit_slots_size_required * sizeof(ChiakiFrameUnit)); frame_processor->unit_slots = new_ptr; if(!new_ptr) { frame_processor->unit_slots_size = 0; return CHIAKI_ERR_MEMORY; } else frame_processor->unit_slots_size = unit_slots_size_required; } memset(frame_processor->unit_slots, 0, frame_processor->unit_slots_size * sizeof(ChiakiFrameUnit)); if(frame_processor->unit_slots_size > SIZE_MAX / frame_processor->buf_stride_per_unit) return CHIAKI_ERR_OVERFLOW; size_t frame_buf_size_required = frame_processor->unit_slots_size * frame_processor->buf_stride_per_unit; if(frame_processor->frame_buf_size < frame_buf_size_required) { free(frame_processor->frame_buf); frame_processor->frame_buf = malloc(frame_buf_size_required + CHIAKI_VIDEO_BUFFER_PADDING_SIZE); if(!frame_processor->frame_buf) { frame_processor->frame_buf_size = 0; return CHIAKI_ERR_MEMORY; } frame_processor->frame_buf_size = frame_buf_size_required; } memset(frame_processor->frame_buf, 0, frame_buf_size_required + CHIAKI_VIDEO_BUFFER_PADDING_SIZE); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_frame_processor_put_unit(ChiakiFrameProcessor *frame_processor, ChiakiTakionAVPacket *packet) { if(packet->unit_index > frame_processor->unit_slots_size) { CHIAKI_LOGE(frame_processor->log, "Packet's unit index is too high"); return CHIAKI_ERR_INVALID_DATA; } if(!packet->data_size) { CHIAKI_LOGW(frame_processor->log, "Unit is empty"); return CHIAKI_ERR_INVALID_DATA; } if(packet->data_size > frame_processor->buf_size_per_unit) { CHIAKI_LOGW(frame_processor->log, "Unit is bigger than pre-calculated size!"); return CHIAKI_ERR_INVALID_DATA; } ChiakiFrameUnit *unit = frame_processor->unit_slots + packet->unit_index; if(unit->data_size) { CHIAKI_LOGW(frame_processor->log, "Received duplicate unit"); return CHIAKI_ERR_INVALID_DATA; } unit->data_size = packet->data_size; if(!frame_processor->flushed) { memcpy(frame_processor->frame_buf + packet->unit_index * frame_processor->buf_stride_per_unit, packet->data, packet->data_size); } if(packet->unit_index < frame_processor->units_source_expected) frame_processor->units_source_received++; else frame_processor->units_fec_received++; return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_frame_processor_report_packet_stats(ChiakiFrameProcessor *frame_processor, ChiakiPacketStats *packet_stats) { uint64_t received = frame_processor->units_source_received + frame_processor->units_fec_received; uint64_t expected = frame_processor->units_source_expected + frame_processor->units_fec_expected; chiaki_packet_stats_push_generation(packet_stats, received, expected - received); } static ChiakiErrorCode chiaki_frame_processor_fec(ChiakiFrameProcessor *frame_processor) { CHIAKI_LOGI(frame_processor->log, "Frame Processor received %u+%u / %u+%u units, attempting FEC", frame_processor->units_source_received, frame_processor->units_fec_received, frame_processor->units_source_expected, frame_processor->units_fec_expected); size_t erasures_count = (frame_processor->units_source_expected + frame_processor->units_fec_expected) - (frame_processor->units_source_received + frame_processor->units_fec_received); unsigned int *erasures = calloc(erasures_count, sizeof(unsigned int)); if(!erasures) return CHIAKI_ERR_MEMORY; size_t erasure_index = 0; for(size_t i=0; iunits_source_expected + frame_processor->units_fec_expected; i++) { ChiakiFrameUnit *slot = frame_processor->unit_slots + i; if(!slot->data_size) { if(erasure_index >= erasures_count) { // should never happen by design, but too scary not to check assert(false); free(erasures); return CHIAKI_ERR_UNKNOWN; } erasures[erasure_index++] = (unsigned int)i; } } assert(erasure_index == erasures_count); ChiakiErrorCode err = chiaki_fec_decode(frame_processor->frame_buf, frame_processor->buf_size_per_unit, frame_processor->buf_stride_per_unit, frame_processor->units_source_expected, frame_processor->units_fec_expected, erasures, erasures_count); if(err != CHIAKI_ERR_SUCCESS) { err = CHIAKI_ERR_FEC_FAILED; CHIAKI_LOGE(frame_processor->log, "FEC failed"); } else { err = CHIAKI_ERR_SUCCESS; CHIAKI_LOGI(frame_processor->log, "FEC successful"); // restore unit sizes for(size_t i=0; iunits_source_expected; i++) { ChiakiFrameUnit *slot = frame_processor->unit_slots + i; uint8_t *buf_ptr = frame_processor->frame_buf + frame_processor->buf_stride_per_unit * i; uint16_t padding = ntohs(*((chiaki_unaligned_uint16_t *)buf_ptr)); if(padding >= frame_processor->buf_size_per_unit) { CHIAKI_LOGE(frame_processor->log, "Padding in unit (%#x) is larger or equals to the whole unit size (%#llx)", (unsigned int)padding, frame_processor->buf_size_per_unit); chiaki_log_hexdump(frame_processor->log, CHIAKI_LOG_DEBUG, buf_ptr, 0x50); continue; } slot->data_size = frame_processor->buf_size_per_unit - padding; } } free(erasures); return err; } CHIAKI_EXPORT ChiakiFrameProcessorFlushResult chiaki_frame_processor_flush(ChiakiFrameProcessor *frame_processor, uint8_t **frame, size_t *frame_size) { if(frame_processor->units_source_expected == 0 || frame_processor->flushed) return CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FAILED; //CHIAKI_LOGD(NULL, "source: %u, fec: %u", // frame_processor->units_source_expected, // frame_processor->units_fec_expected); ChiakiFrameProcessorFlushResult result = CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_SUCCESS; if(frame_processor->units_source_received < frame_processor->units_source_expected) { ChiakiErrorCode err = chiaki_frame_processor_fec(frame_processor); if(err == CHIAKI_ERR_SUCCESS) result = CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FEC_SUCCESS; else result = CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FEC_FAILED; } size_t cur = 0; for(size_t i=0; iunits_source_expected; i++) { ChiakiFrameUnit *unit = frame_processor->unit_slots + i; if(!unit->data_size) { CHIAKI_LOGW(frame_processor->log, "Missing unit %#llx", (unsigned long long)i); continue; } if(unit->data_size < 2) { CHIAKI_LOGE(frame_processor->log, "Saved unit has size < 2"); chiaki_log_hexdump(frame_processor->log, CHIAKI_LOG_VERBOSE, frame_processor->frame_buf + i*frame_processor->buf_size_per_unit, 0x50); continue; } size_t part_size = unit->data_size - 2; uint8_t *buf_ptr = frame_processor->frame_buf + i*frame_processor->buf_stride_per_unit; memmove(frame_processor->frame_buf + cur, buf_ptr + 2, part_size); cur += part_size; } chiaki_stream_stats_frame(&frame_processor->stream_stats, (uint64_t)cur); *frame = frame_processor->frame_buf; *frame_size = cur; return result; } chiaki-v2.2.0/lib/src/gkcrypt.c000066400000000000000000000402411447035777400163400ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #ifdef CHIAKI_LIB_ENABLE_MBEDTLS #include "mbedtls/aes.h" #include "mbedtls/md.h" #include "mbedtls/gcm.h" #include "mbedtls/sha256.h" #else #include #include #include #endif #include "utils.h" #define KEY_BUF_CHUNK_SIZE 0x1000 static ChiakiErrorCode gkcrypt_gen_key_iv(ChiakiGKCrypt *gkcrypt, uint8_t index, const uint8_t *handshake_key, const uint8_t *ecdh_secret); static void *gkcrypt_thread_func(void *user); CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_init(ChiakiGKCrypt *gkcrypt, ChiakiLog *log, size_t key_buf_chunks, uint8_t index, const uint8_t *handshake_key, const uint8_t *ecdh_secret) { gkcrypt->log = log; gkcrypt->index = index; gkcrypt->key_buf_size = key_buf_chunks * KEY_BUF_CHUNK_SIZE; gkcrypt->key_buf_populated = 0; gkcrypt->key_buf_key_pos_min = 0; gkcrypt->key_buf_start_offset = 0; gkcrypt->last_key_pos = 0; gkcrypt->key_buf_thread_stop = false; ChiakiErrorCode err; if(gkcrypt->key_buf_size) { gkcrypt->key_buf = chiaki_aligned_alloc(KEY_BUF_CHUNK_SIZE, gkcrypt->key_buf_size); if(!gkcrypt->key_buf) { err = CHIAKI_ERR_MEMORY; goto error; } err = chiaki_mutex_init(&gkcrypt->key_buf_mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error_key_buf; err = chiaki_cond_init(&gkcrypt->key_buf_cond); if(err != CHIAKI_ERR_SUCCESS) goto error_key_buf_mutex; } else { gkcrypt->key_buf = NULL; } err = gkcrypt_gen_key_iv(gkcrypt, index, handshake_key, ecdh_secret); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(gkcrypt->log, "GKCrypt failed to generate key and IV"); goto error_key_buf_cond; } chiaki_gkcrypt_gen_gmac_key(0, gkcrypt->key_base, gkcrypt->iv, gkcrypt->key_gmac_base); gkcrypt->key_gmac_index_current = 0; memcpy(gkcrypt->key_gmac_current, gkcrypt->key_gmac_base, sizeof(gkcrypt->key_gmac_current)); if(gkcrypt->key_buf) { err = chiaki_thread_create(&gkcrypt->key_buf_thread, gkcrypt_thread_func, gkcrypt); if(err != CHIAKI_ERR_SUCCESS) goto error_key_buf_cond; chiaki_thread_set_name(&gkcrypt->key_buf_thread, "Chiaki GKCrypt"); } return CHIAKI_ERR_SUCCESS; error_key_buf_cond: if(gkcrypt->key_buf) chiaki_cond_fini(&gkcrypt->key_buf_cond); error_key_buf_mutex: if(gkcrypt->key_buf) chiaki_mutex_fini(&gkcrypt->key_buf_mutex); error_key_buf: chiaki_aligned_free(gkcrypt->key_buf); error: return err; } CHIAKI_EXPORT void chiaki_gkcrypt_fini(ChiakiGKCrypt *gkcrypt) { if(gkcrypt->key_buf) { chiaki_mutex_lock(&gkcrypt->key_buf_mutex); gkcrypt->key_buf_thread_stop = true; chiaki_mutex_unlock(&gkcrypt->key_buf_mutex); chiaki_cond_signal(&gkcrypt->key_buf_cond); chiaki_thread_join(&gkcrypt->key_buf_thread, NULL); chiaki_cond_fini(&gkcrypt->key_buf_cond); chiaki_mutex_fini(&gkcrypt->key_buf_mutex); chiaki_aligned_free(gkcrypt->key_buf); } } static ChiakiErrorCode gkcrypt_gen_key_iv(ChiakiGKCrypt *gkcrypt, uint8_t index, const uint8_t *handshake_key, const uint8_t *ecdh_secret) { uint8_t data[3 + CHIAKI_HANDSHAKE_KEY_SIZE + 2]; data[0] = 1; data[1] = index; data[2] = 0; memcpy(data + 3, handshake_key, CHIAKI_HANDSHAKE_KEY_SIZE); data[3 + CHIAKI_HANDSHAKE_KEY_SIZE + 0] = 1; data[3 + CHIAKI_HANDSHAKE_KEY_SIZE + 1] = 0; uint8_t hmac[CHIAKI_GKCRYPT_BLOCK_SIZE*2]; size_t hmac_size = sizeof(hmac); #ifdef CHIAKI_LIB_ENABLE_MBEDTLS mbedtls_md_context_t ctx; mbedtls_md_init(&ctx); if(mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(MBEDTLS_MD_SHA256), 1) != 0) { mbedtls_md_free(&ctx); return CHIAKI_ERR_UNKNOWN; } if(mbedtls_md_hmac_starts(&ctx, ecdh_secret, CHIAKI_ECDH_SECRET_SIZE) != 0) { mbedtls_md_free(&ctx); return CHIAKI_ERR_UNKNOWN; } if(mbedtls_md_hmac_update(&ctx, data, sizeof(data)) != 0) { mbedtls_md_free(&ctx); return CHIAKI_ERR_UNKNOWN; } if(mbedtls_md_hmac_finish(&ctx, hmac) != 0) { mbedtls_md_free(&ctx); return CHIAKI_ERR_UNKNOWN; } mbedtls_md_free(&ctx); #else if(!HMAC(EVP_sha256(), ecdh_secret, CHIAKI_ECDH_SECRET_SIZE, data, sizeof(data), hmac, (unsigned int *)&hmac_size)) return CHIAKI_ERR_UNKNOWN; #endif assert(hmac_size == sizeof(hmac)); memcpy(gkcrypt->key_base, hmac, CHIAKI_GKCRYPT_BLOCK_SIZE); memcpy(gkcrypt->iv, hmac + CHIAKI_GKCRYPT_BLOCK_SIZE, CHIAKI_GKCRYPT_BLOCK_SIZE); return CHIAKI_ERR_SUCCESS; } static inline void counter_add(uint8_t *out, const uint8_t *base, uint64_t v) { size_t i=0; do { uint64_t r = base[i] + v; out[i] = (uint8_t)(r & 0xff); v = r >> 8; i++; } while(i 0); chiaki_gkcrypt_gen_gmac_key(index, gkcrypt->key_gmac_base, gkcrypt->iv, gkcrypt->key_gmac_current); gkcrypt->key_gmac_index_current = index; } CHIAKI_EXPORT void chiaki_gkcrypt_gen_tmp_gmac_key(ChiakiGKCrypt *gkcrypt, uint64_t index, uint8_t *key_out) { if(index) chiaki_gkcrypt_gen_gmac_key(index, gkcrypt->key_gmac_base, gkcrypt->iv, key_out); else memcpy(key_out, gkcrypt->key_gmac_base, sizeof(gkcrypt->key_gmac_base)); } CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_gen_key_stream(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, uint8_t *buf, size_t buf_size) { assert(key_pos % CHIAKI_GKCRYPT_BLOCK_SIZE == 0); assert(buf_size % CHIAKI_GKCRYPT_BLOCK_SIZE == 0); #ifdef CHIAKI_LIB_ENABLE_MBEDTLS // build mbedtls aes context mbedtls_aes_context ctx; mbedtls_aes_init(&ctx); if(mbedtls_aes_setkey_enc(&ctx, gkcrypt->key_base, 128) != 0) { mbedtls_aes_free(&ctx); return CHIAKI_ERR_UNKNOWN; } #else EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); if(!ctx) return CHIAKI_ERR_UNKNOWN; if(!EVP_EncryptInit_ex(ctx, EVP_aes_128_ecb(), NULL, gkcrypt->key_base, NULL)) { EVP_CIPHER_CTX_free(ctx); return CHIAKI_ERR_UNKNOWN; } if(!EVP_CIPHER_CTX_set_padding(ctx, 0)) { EVP_CIPHER_CTX_free(ctx); return CHIAKI_ERR_UNKNOWN; } #endif int counter_offset = (int)(key_pos / CHIAKI_GKCRYPT_BLOCK_SIZE); for(uint8_t *cur = buf, *end = buf + buf_size; cur < end; cur += CHIAKI_GKCRYPT_BLOCK_SIZE) counter_add(cur, gkcrypt->iv, counter_offset++); #ifdef CHIAKI_LIB_ENABLE_MBEDTLS for(int i = 0; i < buf_size; i = i + 16) { // loop over all blocks of 16 bytes (128 bits) if(mbedtls_aes_crypt_ecb(&ctx, MBEDTLS_AES_ENCRYPT, buf + i, buf + i) != 0) { mbedtls_aes_free(&ctx); return CHIAKI_ERR_UNKNOWN; } } mbedtls_aes_free(&ctx); #else int outl; EVP_EncryptUpdate(ctx, buf, &outl, buf, (int)buf_size); if(outl != buf_size) { EVP_CIPHER_CTX_free(ctx); return CHIAKI_ERR_UNKNOWN; } EVP_CIPHER_CTX_free(ctx); #endif return CHIAKI_ERR_SUCCESS; } static bool gkcrypt_key_buf_should_generate(ChiakiGKCrypt *gkcrypt) { return gkcrypt->last_key_pos > gkcrypt->key_buf_key_pos_min + gkcrypt->key_buf_populated / 2; } CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_get_key_stream(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, uint8_t *buf, size_t buf_size) { if(!gkcrypt->key_buf) return chiaki_gkcrypt_gen_key_stream(gkcrypt, key_pos, buf, buf_size); chiaki_mutex_lock(&gkcrypt->key_buf_mutex); if(key_pos + buf_size > gkcrypt->last_key_pos) gkcrypt->last_key_pos = key_pos + buf_size; bool signal = gkcrypt_key_buf_should_generate(gkcrypt); ChiakiErrorCode err; if(key_pos < gkcrypt->key_buf_key_pos_min || key_pos + buf_size >= gkcrypt->key_buf_key_pos_min + gkcrypt->key_buf_populated) { CHIAKI_LOGW(gkcrypt->log, "Requested key stream for key pos %#llx on GKCrypt %d, but it's not in the buffer:" " key buf size %#llx, start offset: %#llx, populated: %#llx, min key pos: %#llx, last key pos: %#llx", (unsigned long long)key_pos, gkcrypt->index, (unsigned long long)gkcrypt->key_buf_size, (unsigned long long)gkcrypt->key_buf_start_offset, (unsigned long long)gkcrypt->key_buf_populated, (unsigned long long)gkcrypt->key_buf_key_pos_min, (unsigned long long)gkcrypt->last_key_pos); chiaki_mutex_unlock(&gkcrypt->key_buf_mutex); err = chiaki_gkcrypt_gen_key_stream(gkcrypt, key_pos, buf, buf_size); } else { size_t offset_in_buf = key_pos - gkcrypt->key_buf_key_pos_min + gkcrypt->key_buf_start_offset; offset_in_buf %= gkcrypt->key_buf_size; size_t end = offset_in_buf + buf_size; if(end > gkcrypt->key_buf_size) { size_t excess = end - gkcrypt->key_buf_size; memcpy(buf, gkcrypt->key_buf + offset_in_buf, buf_size - excess); memcpy(buf + (buf_size - excess), gkcrypt->key_buf, excess); } else memcpy(buf, gkcrypt->key_buf + offset_in_buf, buf_size); err = CHIAKI_ERR_SUCCESS; chiaki_mutex_unlock(&gkcrypt->key_buf_mutex); } if(signal) chiaki_cond_signal(&gkcrypt->key_buf_cond); return err; } CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_decrypt(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, uint8_t *buf, size_t buf_size) { uint64_t padding_pre = key_pos % CHIAKI_GKCRYPT_BLOCK_SIZE; size_t full_size = ((padding_pre + buf_size + CHIAKI_GKCRYPT_BLOCK_SIZE - 1) / CHIAKI_GKCRYPT_BLOCK_SIZE) * CHIAKI_GKCRYPT_BLOCK_SIZE; uint8_t *key_stream = malloc(full_size); if(!key_stream) return CHIAKI_ERR_MEMORY; ChiakiErrorCode err = chiaki_gkcrypt_get_key_stream(gkcrypt, key_pos - padding_pre, key_stream, full_size); if(err != CHIAKI_ERR_SUCCESS) { free(key_stream); return err; } xor_bytes(buf, key_stream + padding_pre, buf_size); free(key_stream); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_gkcrypt_gmac(ChiakiGKCrypt *gkcrypt, uint64_t key_pos, const uint8_t *buf, size_t buf_size, uint8_t *gmac_out) { uint8_t iv[CHIAKI_GKCRYPT_BLOCK_SIZE]; counter_add(iv, gkcrypt->iv, key_pos / 0x10); uint8_t *gmac_key = gkcrypt->key_gmac_current; uint8_t gmac_key_tmp[CHIAKI_GKCRYPT_BLOCK_SIZE]; uint64_t key_index = (key_pos > 0 ? key_pos - 1 : 0) / CHIAKI_GKCRYPT_GMAC_KEY_REFRESH_KEY_POS; if(key_index > gkcrypt->key_gmac_index_current) { chiaki_gkcrypt_gen_new_gmac_key(gkcrypt, key_index); } else if(key_index < gkcrypt->key_gmac_index_current) { chiaki_gkcrypt_gen_tmp_gmac_key(gkcrypt, key_index, gmac_key_tmp); gmac_key = gmac_key_tmp; } #ifdef CHIAKI_LIB_ENABLE_MBEDTLS // build mbedtls gcm context AES_128_GCM // Encryption mbedtls_gcm_context actx; mbedtls_gcm_init(&actx); // set gmac_key 128 bits key if(mbedtls_gcm_setkey(&actx, MBEDTLS_CIPHER_ID_AES, gmac_key, CHIAKI_GKCRYPT_BLOCK_SIZE * 8) != 0) { mbedtls_gcm_free(&actx); return CHIAKI_ERR_UNKNOWN; } // encrypt without additional data if(mbedtls_gcm_starts(&actx, MBEDTLS_GCM_ENCRYPT, iv, CHIAKI_GKCRYPT_BLOCK_SIZE, NULL, 0) != 0) { mbedtls_gcm_free(&actx); return CHIAKI_ERR_UNKNOWN; } // set "additional data" only whitout input nor output // to get the same result as: // EVP_EncryptUpdate(ctx, NULL, &len, buf, (int)buf_size) if(mbedtls_gcm_crypt_and_tag(&actx, MBEDTLS_GCM_ENCRYPT, 0, iv, CHIAKI_GKCRYPT_BLOCK_SIZE, buf, buf_size, NULL, NULL, CHIAKI_GKCRYPT_GMAC_SIZE, gmac_out) != 0) { mbedtls_gcm_free(&actx); return CHIAKI_ERR_UNKNOWN; } mbedtls_gcm_free(&actx); return CHIAKI_ERR_SUCCESS; #else ChiakiErrorCode ret = CHIAKI_ERR_SUCCESS; EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); if(!ctx) { ret = CHIAKI_ERR_MEMORY; goto fail; } if(!EVP_CipherInit_ex(ctx, EVP_aes_128_gcm(), NULL, NULL, NULL, 1)) { ret = CHIAKI_ERR_UNKNOWN; goto fail_cipher; } if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_SET_IVLEN, CHIAKI_GKCRYPT_BLOCK_SIZE, NULL)) { ret = CHIAKI_ERR_UNKNOWN; goto fail_cipher; } if(!EVP_CipherInit_ex(ctx, NULL, NULL, gmac_key, iv, 1)) { ret = CHIAKI_ERR_UNKNOWN; goto fail_cipher; } int len; if(!EVP_EncryptUpdate(ctx, NULL, &len, buf, (int)buf_size)) { ret = CHIAKI_ERR_UNKNOWN; goto fail_cipher; } if(!EVP_EncryptFinal_ex(ctx, NULL, &len)) { ret = CHIAKI_ERR_UNKNOWN; goto fail_cipher; } if(!EVP_CIPHER_CTX_ctrl(ctx, EVP_CTRL_GCM_GET_TAG, CHIAKI_GKCRYPT_GMAC_SIZE, gmac_out)) { ret = CHIAKI_ERR_UNKNOWN; goto fail_cipher; } fail_cipher: EVP_CIPHER_CTX_free(ctx); fail: return ret; #endif } static bool key_buf_mutex_pred(void *user) { ChiakiGKCrypt *gkcrypt = user; if(gkcrypt->key_buf_thread_stop) return true; if(gkcrypt->key_buf_populated < gkcrypt->key_buf_size) return true; if(gkcrypt_key_buf_should_generate(gkcrypt)) return true; return false; } static ChiakiErrorCode gkcrypt_generate_next_chunk(ChiakiGKCrypt *gkcrypt) { assert(gkcrypt->key_buf_populated + KEY_BUF_CHUNK_SIZE <= gkcrypt->key_buf_size); size_t buf_offset = (gkcrypt->key_buf_start_offset + gkcrypt->key_buf_populated) % gkcrypt->key_buf_size; uint64_t key_pos = gkcrypt->key_buf_key_pos_min + gkcrypt->key_buf_populated; uint8_t *buf_start = gkcrypt->key_buf + buf_offset; chiaki_mutex_unlock(&gkcrypt->key_buf_mutex); ChiakiErrorCode err = chiaki_gkcrypt_gen_key_stream(gkcrypt, key_pos, buf_start, KEY_BUF_CHUNK_SIZE); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(gkcrypt->log, "GKCrypt failed to generate key stream chunk"); chiaki_mutex_lock(&gkcrypt->key_buf_mutex); if(err == CHIAKI_ERR_SUCCESS) gkcrypt->key_buf_populated += KEY_BUF_CHUNK_SIZE; return err; } static void *gkcrypt_thread_func(void *user) { ChiakiGKCrypt *gkcrypt = user; CHIAKI_LOGV(gkcrypt->log, "GKCrypt %d thread starting", (int)gkcrypt->index); ChiakiErrorCode err = chiaki_mutex_lock(&gkcrypt->key_buf_mutex); assert(err == CHIAKI_ERR_SUCCESS); while(1) { err = chiaki_cond_wait_pred(&gkcrypt->key_buf_cond, &gkcrypt->key_buf_mutex, key_buf_mutex_pred, gkcrypt); if(gkcrypt->key_buf_thread_stop || err != CHIAKI_ERR_SUCCESS) break; CHIAKI_LOGV(gkcrypt->log, "GKCrypt %d key buf size %#llx, start offset: %#llx, populated: %#llx, min key pos: %#llx, last key pos: %#llx, generating next chunk", (int)gkcrypt->index, (unsigned long long)gkcrypt->key_buf_size, (unsigned long long)gkcrypt->key_buf_start_offset, (unsigned long long)gkcrypt->key_buf_populated, (unsigned long long)gkcrypt->key_buf_key_pos_min, (unsigned long long)gkcrypt->last_key_pos); if(gkcrypt->last_key_pos > gkcrypt->key_buf_key_pos_min + gkcrypt->key_buf_populated) { // skip ahead if the last key pos is already beyond our buffer uint64_t key_pos = (gkcrypt->last_key_pos / KEY_BUF_CHUNK_SIZE) * KEY_BUF_CHUNK_SIZE; CHIAKI_LOGW(gkcrypt->log, "Already requested a higher key pos than in the buffer, skipping ahead from min %#llx to %#llx", (unsigned long long)gkcrypt->key_buf_key_pos_min, (unsigned long long)key_pos); gkcrypt->key_buf_key_pos_min = key_pos; gkcrypt->key_buf_start_offset = 0; gkcrypt->key_buf_populated = 0; } else if(gkcrypt->key_buf_populated == gkcrypt->key_buf_size) { gkcrypt->key_buf_start_offset = (gkcrypt->key_buf_start_offset + KEY_BUF_CHUNK_SIZE) % gkcrypt->key_buf_size; gkcrypt->key_buf_key_pos_min += KEY_BUF_CHUNK_SIZE; gkcrypt->key_buf_populated -= KEY_BUF_CHUNK_SIZE; } err = gkcrypt_generate_next_chunk(gkcrypt); if(err != CHIAKI_ERR_SUCCESS) break; } chiaki_mutex_unlock(&gkcrypt->key_buf_mutex); return NULL; } CHIAKI_EXPORT void chiaki_key_state_init(ChiakiKeyState *state) { state->prev = 0; } CHIAKI_EXPORT uint64_t chiaki_key_state_request_pos(ChiakiKeyState *state, uint32_t low, bool commit) { uint32_t prev_low = (uint32_t)state->prev; uint32_t high = (uint32_t)(state->prev >> 32); if(chiaki_seq_num_32_gt(low, prev_low) && low < prev_low) high++; else if(chiaki_seq_num_32_lt(low, prev_low) && low > prev_low && high) high--; uint64_t res = (((uint64_t)high) << 32) | ((uint64_t)low); if(commit) state->prev = res; return res; } CHIAKI_EXPORT void chiaki_key_state_commit(ChiakiKeyState *state, uint64_t prev) { state->prev = prev; } chiaki-v2.2.0/lib/src/http.c000066400000000000000000000077531447035777400156470ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #if _WIN32 #include #else #include #endif CHIAKI_EXPORT void chiaki_http_header_free(ChiakiHttpHeader *header) { while(header) { ChiakiHttpHeader *cur = header; header = header->next; free(cur); } } CHIAKI_EXPORT ChiakiErrorCode chiaki_http_header_parse(ChiakiHttpHeader **header, char *buf, size_t buf_size) { *header = NULL; #define FAIL(reason) do { chiaki_http_header_free(*header); return (reason); } while(0); char *key_ptr = buf; char *value_ptr = NULL; for(char *end = buf + buf_size; bufkey = key_ptr; entry->value = value_ptr; entry->next = *header; *header = entry; key_ptr = buf + 1; value_ptr = NULL; } } } return CHIAKI_ERR_SUCCESS; #undef FAIL } CHIAKI_EXPORT void chiaki_http_response_fini(ChiakiHttpResponse *response) { if(!response) return; chiaki_http_header_free(response->headers); } CHIAKI_EXPORT ChiakiErrorCode chiaki_http_response_parse(ChiakiHttpResponse *response, char *buf, size_t buf_size) { static const char *http_version = "HTTP/1.1 "; static const size_t http_version_size = 9; if(buf_size < http_version_size) return CHIAKI_ERR_INVALID_DATA; if(strncmp(buf, http_version, http_version_size) != 0) return CHIAKI_ERR_INVALID_DATA; buf += http_version_size; buf_size -= http_version_size; char *line_end = memchr(buf, '\n', buf_size); if(!line_end) return CHIAKI_ERR_INVALID_DATA; size_t line_length = (line_end - buf) + 1; if(buf_size <= line_length) return CHIAKI_ERR_INVALID_DATA; if(line_length > 1 && *(line_end - 1) == '\r') *(line_end - 1) = '\0'; else *line_end = '\0'; char *endptr; response->code = (int)strtol(buf, &endptr, 10); if(response->code == 0) return CHIAKI_ERR_INVALID_DATA; buf += line_length; buf_size -= line_length; return chiaki_http_header_parse(&response->headers, buf, buf_size); } CHIAKI_EXPORT ChiakiErrorCode chiaki_recv_http_header(int sock, char *buf, size_t buf_size, size_t *header_size, size_t *received_size, ChiakiStopPipe *stop_pipe, uint64_t timeout_ms) { // 0 = "" // 1 = "\r" // 2 = "\r\n" // 3 = "\r\n\r" // 4 = "\r\n\r\n" (final) int nl_state = 0; static const int transitions_r[] = { 1, 1, 3, 1 }; static const int transitions_n[] = { 0, 2, 0, 4 }; *received_size = 0; while(true) { if(stop_pipe) { ChiakiErrorCode err = chiaki_stop_pipe_select_single(stop_pipe, sock, false, timeout_ms); if(err != CHIAKI_ERR_SUCCESS) return err; } int received; do { received = (int)recv(sock, buf, (int)buf_size, 0); #if _WIN32 } while(false); #else } while(received < 0 && errno == EINTR); #endif if(received <= 0) return received == 0 ? CHIAKI_ERR_DISCONNECTED : CHIAKI_ERR_NETWORK; *received_size += received; for(; received > 0; buf++, received--) { switch(*buf) { case '\r': nl_state = transitions_r[nl_state]; break; case '\n': nl_state = transitions_n[nl_state]; break; default: nl_state = 0; break; } if(nl_state == 4) { received--; break; } } if(nl_state == 4) { *header_size = *received_size - received; break; } } return CHIAKI_ERR_SUCCESS; } chiaki-v2.2.0/lib/src/launchspec.c000066400000000000000000000051271447035777400170060ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include static const char launchspec_fmt[] = "{" "\"sessionId\":\"sessionId4321\"," "\"streamResolutions\":[" "{" "\"resolution\":" "{" "\"width\":%u," // 0 "\"height\":%u" // 1 "}," "\"maxFps\":%u," // 2 "\"score\":10" "}" "]," "\"network\":{" "\"bwKbpsSent\":%u," // 3 "\"bwLoss\":0.001000," "\"mtu\":%u," // 4 "\"rtt\":%u," // 5 "\"ports\":[53,2053]" "}," "\"slotId\":1," "\"appSpecification\":{" "\"minFps\":30," "\"minBandwidth\":0," "\"extTitleId\":\"ps3\"," "\"version\":1," "\"timeLimit\":1," "\"startTimeout\":100," "\"afkTimeout\":100," "\"afkTimeoutDisconnect\":100" "}," "\"konan\":{" "\"ps3AccessToken\":\"accessToken\"," "\"ps3RefreshToken\":\"refreshToken\"" "},\"requestGameSpecification\":{" "\"model\":\"bravia_tv\"," "\"platform\":\"android\"," "\"audioChannels\":\"5.1\"," "\"language\":\"sp\"," "\"acceptButton\":\"X\"," "\"connectedControllers\":[\"xinput\",\"ds3\",\"ds4\"]," "\"yuvCoefficient\":\"bt601\"," "\"videoEncoderProfile\":\"hw4.1\"," "\"audioEncoderProfile\":\"audio1\"" // 6 "%s" "}," "\"userProfile\":{" "\"onlineId\":\"psnId\"," "\"npId\":\"npId\"," "\"region\":\"US\"," "\"languagesUsed\":[\"en\",\"jp\"]" "}," "%s" // 7 "%s" // 8 "\"handshakeKey\":\"%s\"" // 9 "}"; CHIAKI_EXPORT int chiaki_launchspec_format(char *buf, size_t buf_size, ChiakiLaunchSpec *launch_spec) { char handshake_key_b64[CHIAKI_HANDSHAKE_KEY_SIZE * 2]; ChiakiErrorCode err = chiaki_base64_encode(launch_spec->handshake_key, CHIAKI_HANDSHAKE_KEY_SIZE, handshake_key_b64, sizeof(handshake_key_b64)); if(err != CHIAKI_ERR_SUCCESS) return -1; char *extras[3]; if(chiaki_target_is_ps5(launch_spec->target)) // TODO: probably also for ps4, but only 12 { extras[0] = ",\"adaptiveStreamMode\": \"resize\""; extras[1] = chiaki_codec_is_h265(launch_spec->codec) ? "\"videoCodec\":\"hevc\"," : "\"videoCodec\":\"avc\","; extras[2] = chiaki_codec_is_hdr(launch_spec->codec) ? "\"dynamicRange\":\"HDR\"," : "\"dynamicRange\":\"SDR\","; } else extras[0] = extras[1] = extras[2] = ""; int written = snprintf(buf, buf_size, launchspec_fmt, launch_spec->width, launch_spec->height, launch_spec->max_fps, launch_spec->bw_kbps_sent, launch_spec->mtu, launch_spec->rtt, extras[0], extras[1], extras[2], handshake_key_b64); if(written < 0 || written >= buf_size) return -1; return written; } chiaki-v2.2.0/lib/src/log.c000066400000000000000000000117301447035777400154370ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include CHIAKI_EXPORT char chiaki_log_level_char(ChiakiLogLevel level) { switch(level) { case CHIAKI_LOG_VERBOSE: return 'V'; case CHIAKI_LOG_DEBUG: return 'D'; case CHIAKI_LOG_INFO: return 'I'; case CHIAKI_LOG_WARNING: return 'W'; case CHIAKI_LOG_ERROR: return 'E'; default: return '?'; } } CHIAKI_EXPORT void chiaki_log_init(ChiakiLog *log, uint32_t level_mask, ChiakiLogCb cb, void *user) { log->level_mask = level_mask; log->cb = cb; log->user = user; } CHIAKI_EXPORT void chiaki_log_cb_print(ChiakiLogLevel level, const char *msg, void *user) { (void)user; char c = chiaki_log_level_char(level); const char *color = NULL; switch(level) { case CHIAKI_LOG_DEBUG: color = "34"; break; case CHIAKI_LOG_WARNING: color = "33"; break; case CHIAKI_LOG_ERROR: color = "31"; break; default: break; } if(color) printf("\033[38;5;%sm", color); printf("[%c] ", c); if(color) printf("\033[0m"); printf("%s\n", msg); } CHIAKI_EXPORT void chiaki_log(ChiakiLog *log, ChiakiLogLevel level, const char *fmt, ...) { if(log && !(log->level_mask & level)) return; va_list args; char buf[0x100]; char *msg = buf; va_start(args, fmt); int written = vsnprintf(buf, sizeof(buf), fmt, args); va_end(args); if(written < 0) return; if(written >= sizeof(buf)) { msg = malloc(written + 1); if(!msg) return; va_start(args, fmt); written = vsnprintf(msg, written + 1, fmt, args); va_end(args); if(written < 0) { free(msg); return; } } ChiakiLogCb cb = log && log->cb ? log->cb : chiaki_log_cb_print; void *user = log ? log->user : NULL; cb(level, msg, user); if(msg != buf) free(msg); } #define HEXDUMP_WIDTH 0x10 static const char hex_char[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; CHIAKI_EXPORT void chiaki_log_hexdump(ChiakiLog *log, ChiakiLogLevel level, const uint8_t *buf, size_t buf_size) { if(log && !(log->level_mask & level)) return; chiaki_log(log, level, "offset 0 1 2 3 4 5 6 7 8 9 a b c d e f 0123456789abcdef"); size_t offset = 0; char hex_buf[HEXDUMP_WIDTH * 3 + 1]; char ascii_buf[HEXDUMP_WIDTH + 1]; for(size_t i=0; i 0) { for(size_t i=0; i> 4]; hex_buf[i*3+1] = hex_char[b & 0xf]; if(b > 0x20 && b < 0x7f) ascii_buf[i] = (char)b; else ascii_buf[i] = '.'; } else { hex_buf[i*3] = ' '; hex_buf[i*3+1] = ' '; ascii_buf[i] = ' '; } hex_buf[i*3+2] = ' '; } chiaki_log(log, level, "%6x %s%s", offset, hex_buf, ascii_buf); if(buf_size > HEXDUMP_WIDTH) { buf_size -= HEXDUMP_WIDTH; buf += HEXDUMP_WIDTH; offset += HEXDUMP_WIDTH; } else break; } } CHIAKI_EXPORT void chiaki_log_hexdump_raw(ChiakiLog *log, ChiakiLogLevel level, const uint8_t *buf, size_t buf_size) { if(log && !(log->level_mask & level)) return; char *str = malloc(buf_size * 2 + 1); if(!str) return; for(size_t i=0; i> 4]; str[i*2+1] = hex_char[v & 0xf]; } str[buf_size*2] = 0; chiaki_log(log, level, "%s", str); free(str); } static void log_sniffer_cb(ChiakiLogLevel level, const char *msg, void *user); CHIAKI_EXPORT void chiaki_log_sniffer_init(ChiakiLogSniffer *sniffer, uint32_t level_mask, ChiakiLog *forward_log) { sniffer->forward_log = forward_log; // level_mask is applied later and everything is forwarded unmasked, so use ALL here: chiaki_log_init(&sniffer->sniff_log, CHIAKI_LOG_ALL, log_sniffer_cb, sniffer); sniffer->sniff_level_mask = level_mask; sniffer->buf = calloc(1, 1); sniffer->buf_len = '\0'; } CHIAKI_EXPORT void chiaki_log_sniffer_fini(ChiakiLogSniffer *sniffer) { free(sniffer->buf); } static void log_sniffer_push(ChiakiLogSniffer *sniffer, ChiakiLogLevel level, const char *msg) { size_t len = strlen(msg); if(!len) return; bool nl = sniffer->buf_len != 0; char *new_buf = realloc(sniffer->buf, sniffer->buf_len + (nl ? 1 : 0) + 4 + len + 1); if(!new_buf) return; sniffer->buf = new_buf; if(nl) sniffer->buf[sniffer->buf_len++] = '\n'; sniffer->buf[sniffer->buf_len++] = '['; sniffer->buf[sniffer->buf_len++] = chiaki_log_level_char(level); sniffer->buf[sniffer->buf_len++] = ']'; sniffer->buf[sniffer->buf_len++] = ' '; memcpy(sniffer->buf + sniffer->buf_len, msg, len); sniffer->buf_len += len; sniffer->buf[sniffer->buf_len] = '\0'; } static void log_sniffer_cb(ChiakiLogLevel level, const char *msg, void *user) { ChiakiLogSniffer *sniffer = user; if(level & sniffer->sniff_level_mask) log_sniffer_push(sniffer, level, msg); if(sniffer->forward_log) chiaki_log(sniffer->forward_log, level, "%s", msg); } chiaki-v2.2.0/lib/src/opusdecoder.c000066400000000000000000000054511447035777400171750ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #if CHIAKI_LIB_ENABLE_OPUS #include #include #include static void chiaki_opus_decoder_header(ChiakiAudioHeader *header, void *user); static void chiaki_opus_decoder_frame(uint8_t *buf, size_t buf_size, void *user); CHIAKI_EXPORT void chiaki_opus_decoder_init(ChiakiOpusDecoder *decoder, ChiakiLog *log) { decoder->log = log; decoder->opus_decoder = NULL; memset(&decoder->audio_header, 0, sizeof(decoder->audio_header)); decoder->pcm_buf = NULL; decoder->pcm_buf_size = 0; decoder->cb_user = NULL; decoder->settings_cb = NULL; decoder->frame_cb = NULL; } CHIAKI_EXPORT void chiaki_opus_decoder_fini(ChiakiOpusDecoder *decoder) { free(decoder->pcm_buf); } CHIAKI_EXPORT void chiaki_opus_decoder_get_sink(ChiakiOpusDecoder *decoder, ChiakiAudioSink *sink) { sink->user = decoder; sink->header_cb = chiaki_opus_decoder_header; sink->frame_cb = chiaki_opus_decoder_frame; } static void chiaki_opus_decoder_header(ChiakiAudioHeader *header, void *user) { ChiakiOpusDecoder *decoder = user; memcpy(&decoder->audio_header, header, sizeof(decoder->audio_header)); opus_decoder_destroy(decoder->opus_decoder); int error; decoder->opus_decoder = opus_decoder_create(header->rate, header->channels, &error); if(error != OPUS_OK) { CHIAKI_LOGE(decoder->log, "ChiakiOpusDecoder failed to initialize opus decoder: %s", opus_strerror(error)); decoder->opus_decoder = NULL; return; } CHIAKI_LOGI(decoder->log, "ChiakiOpusDecoder initialized"); size_t pcm_buf_size_required = chiaki_audio_header_frame_buf_size(header); int16_t *pcm_buf_old = decoder->pcm_buf; if(!decoder->pcm_buf || decoder->pcm_buf_size != pcm_buf_size_required) decoder->pcm_buf = realloc(decoder->pcm_buf, pcm_buf_size_required); if(!decoder->pcm_buf) { free(pcm_buf_old); CHIAKI_LOGE(decoder->log, "ChiakiOpusDecoder failed to alloc pcm buffer"); opus_decoder_destroy(decoder->opus_decoder); decoder->opus_decoder = NULL; decoder->pcm_buf_size = 0; return; } decoder->pcm_buf_size = pcm_buf_size_required; if(decoder->settings_cb) decoder->settings_cb(header->channels, header->rate, decoder->cb_user); } static void chiaki_opus_decoder_frame(uint8_t *buf, size_t buf_size, void *user) { ChiakiOpusDecoder *decoder = user; if(!decoder->opus_decoder) { CHIAKI_LOGE(decoder->log, "Received audio frame, but opus decoder is not initialized"); return; } int r = opus_decode(decoder->opus_decoder, buf, (opus_int32)buf_size, decoder->pcm_buf, decoder->audio_header.frame_size, 0); if(r < 1) CHIAKI_LOGE(decoder->log, "Decoding audio frame with opus failed: %s", opus_strerror(r)); else if(decoder->frame_cb) decoder->frame_cb(decoder->pcm_buf, (size_t)r, decoder->cb_user); } #endifchiaki-v2.2.0/lib/src/orientation.c000066400000000000000000000125011447035777400172060ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #define SIN_1_4_PI 0.7071067811865475 #define SIN_NEG_1_4_PI -0.7071067811865475 #define COS_1_4_PI 0.7071067811865476 #define COS_NEG_1_4_PI 0.7071067811865476 #define WARMUP_SAMPLES_COUNT 30 #define BETA_WARMUP 20.0f #define BETA_DEFAULT 0.05f CHIAKI_EXPORT void chiaki_orientation_init(ChiakiOrientation *orient) { // 90 deg rotation around x for Madgwick orient->x = SIN_1_4_PI; orient->y = 0.0f; orient->z = 0.0f; orient->w = COS_1_4_PI; } static float inv_sqrt(float x); CHIAKI_EXPORT void chiaki_orientation_update(ChiakiOrientation *orient, float gx, float gy, float gz, float ax, float ay, float az, float beta, float time_step_sec) { float q0 = orient->w, q1 = orient->x, q2 = orient->y, q3 = orient->z; // Madgwick's IMU algorithm. // See: http://www.x-io.co.uk/node/8#open_source_ahrs_and_imu_algorithms float recip_norm; float s0, s1, s2, s3; float q_dot1, q_dot2, q_dot3, q_dot4; float _2q0, _2q1, _2q2, _2q3, _4q0, _4q1, _4q2 ,_8q1, _8q2, q0q0, q1q1, q2q2, q3q3; // Rate of change of quaternion from gyroscope q_dot1 = 0.5f * (-q1 * gx - q2 * gy - q3 * gz); q_dot2 = 0.5f * (q0 * gx + q2 * gz - q3 * gy); q_dot3 = 0.5f * (q0 * gy - q1 * gz + q3 * gx); q_dot4 = 0.5f * (q0 * gz + q1 * gy - q2 * gx); // Compute feedback only if accelerometer measurement valid (avoids NaN in accelerometer normalisation) if(!((ax == 0.0f) && (ay == 0.0f) && (az == 0.0f))) { // Normalise accelerometer measurement recip_norm = inv_sqrt(ax * ax + ay * ay + az * az); ax *= recip_norm; ay *= recip_norm; az *= recip_norm; // Auxiliary variables to avoid repeated arithmetic _2q0 = 2.0f * q0; _2q1 = 2.0f * q1; _2q2 = 2.0f * q2; _2q3 = 2.0f * q3; _4q0 = 4.0f * q0; _4q1 = 4.0f * q1; _4q2 = 4.0f * q2; _8q1 = 8.0f * q1; _8q2 = 8.0f * q2; q0q0 = q0 * q0; q1q1 = q1 * q1; q2q2 = q2 * q2; q3q3 = q3 * q3; // Gradient decent algorithm corrective step s0 = _4q0 * q2q2 + _2q2 * ax + _4q0 * q1q1 - _2q1 * ay; s1 = _4q1 * q3q3 - _2q3 * ax + 4.0f * q0q0 * q1 - _2q0 * ay - _4q1 + _8q1 * q1q1 + _8q1 * q2q2 + _4q1 * az; s2 = 4.0f * q0q0 * q2 + _2q0 * ax + _4q2 * q3q3 - _2q3 * ay - _4q2 + _8q2 * q1q1 + _8q2 * q2q2 + _4q2 * az; s3 = 4.0f * q1q1 * q3 - _2q1 * ax + 4.0f * q2q2 * q3 - _2q2 * ay; recip_norm = s0 * s0 + s1 * s1 + s2 * s2 + s3 * s3; // normalise step magnitude // avoid NaN when the orientation is already perfect or inverse to perfect if(recip_norm > 0.000001f) { recip_norm = inv_sqrt(recip_norm); s0 *= recip_norm; s1 *= recip_norm; s2 *= recip_norm; s3 *= recip_norm; // Apply feedback step q_dot1 -= beta * s0; q_dot2 -= beta * s1; q_dot3 -= beta * s2; q_dot4 -= beta * s3; } } // Integrate rate of change of quaternion to yield quaternion q0 += q_dot1 * time_step_sec; q1 += q_dot2 * time_step_sec; q2 += q_dot3 * time_step_sec; q3 += q_dot4 * time_step_sec; // Normalise quaternion recip_norm = inv_sqrt(q0 * q0 + q1 * q1 + q2 * q2 + q3 * q3); q0 *= recip_norm; q1 *= recip_norm; q2 *= recip_norm; q3 *= recip_norm; orient->x = q1; orient->y = q2; orient->z = q3; orient->w = q0; } static float inv_sqrt(float x) { #if 1 return 1.0f / sqrt(x); #else // Fast inverse square-root // See: http://en.wikipedia.org/wiki/Fast_inverse_square_root float halfx = 0.5f * x; float y = x; long i = *(long*)&y; i = 0x5f3759df - (i>>1); y = *(float*)&i; y = y * (1.5f - (halfx * y * y)); return y; #endif } CHIAKI_EXPORT void chiaki_orientation_tracker_init(ChiakiOrientationTracker *tracker) { tracker->accel_x = 0.0f; tracker->accel_y = 1.0f; tracker->accel_z = 0.0f; tracker->gyro_x = tracker->gyro_y = tracker->gyro_z = 0.0f; chiaki_orientation_init(&tracker->orient); tracker->timestamp = 0; tracker->sample_index = 0; } CHIAKI_EXPORT void chiaki_orientation_tracker_update(ChiakiOrientationTracker *tracker, float gx, float gy, float gz, float ax, float ay, float az, uint32_t timestamp_us) { tracker->gyro_x = gx; tracker->gyro_y = gy; tracker->gyro_z = gz; tracker->accel_x = ax; tracker->accel_y = ay; tracker->accel_z = az; tracker->sample_index++; if(tracker->sample_index <= 1) { tracker->timestamp = timestamp_us; return; } uint64_t delta_us = timestamp_us; if(delta_us < tracker->timestamp) delta_us += (1ULL << 32); delta_us -= tracker->timestamp; tracker->timestamp = timestamp_us; chiaki_orientation_update(&tracker->orient, gx, gy, gz, ax, ay, az, tracker->sample_index < WARMUP_SAMPLES_COUNT ? BETA_WARMUP : BETA_DEFAULT, (float)delta_us / 1000000.0f); } CHIAKI_EXPORT void chiaki_orientation_tracker_apply_to_controller_state(ChiakiOrientationTracker *tracker, ChiakiControllerState *state) { state->gyro_x = tracker->gyro_x; state->gyro_y = tracker->gyro_y; state->gyro_z = tracker->gyro_z; state->accel_x = tracker->accel_x; state->accel_y = tracker->accel_y; state->accel_z = tracker->accel_z; // -90 deg rotation around x from Madgwick state->orient_w = COS_NEG_1_4_PI * tracker->orient.w - SIN_NEG_1_4_PI * tracker->orient.x; state->orient_x = COS_NEG_1_4_PI * tracker->orient.x + SIN_NEG_1_4_PI * tracker->orient.w; state->orient_y = COS_NEG_1_4_PI * tracker->orient.y - SIN_NEG_1_4_PI * tracker->orient.z; state->orient_z = COS_NEG_1_4_PI * tracker->orient.z + SIN_NEG_1_4_PI * tracker->orient.y; } chiaki-v2.2.0/lib/src/packetstats.c000066400000000000000000000040641447035777400172060ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include CHIAKI_EXPORT ChiakiErrorCode chiaki_packet_stats_init(ChiakiPacketStats *stats) { stats->gen_received = 0; stats->gen_lost = 0; stats->seq_min = 0; stats->seq_max = 0; stats->seq_received = 0; return chiaki_mutex_init(&stats->mutex, false); } CHIAKI_EXPORT void chiaki_packet_stats_fini(ChiakiPacketStats *stats) { chiaki_mutex_fini(&stats->mutex); } static void reset_stats(ChiakiPacketStats *stats) { stats->gen_received = 0; stats->gen_lost = 0; stats->seq_min = stats->seq_max; stats->seq_received = 0; } CHIAKI_EXPORT void chiaki_packet_stats_reset(ChiakiPacketStats *stats) { chiaki_mutex_lock(&stats->mutex); reset_stats(stats); chiaki_mutex_unlock(&stats->mutex); } CHIAKI_EXPORT void chiaki_packet_stats_push_generation(ChiakiPacketStats *stats, uint64_t received, uint64_t lost) { chiaki_mutex_lock(&stats->mutex); stats->gen_received += received; stats->gen_lost += lost; chiaki_mutex_unlock(&stats->mutex); } CHIAKI_EXPORT void chiaki_packet_stats_push_seq(ChiakiPacketStats *stats, ChiakiSeqNum16 seq_num) { stats->seq_received++; if(chiaki_seq_num_16_gt(seq_num, stats->seq_max)) stats->seq_max = seq_num; } CHIAKI_EXPORT void chiaki_packet_stats_get(ChiakiPacketStats *stats, bool reset, uint64_t *received, uint64_t *lost) { chiaki_mutex_lock(&stats->mutex); // gen *received = stats->gen_received; *lost = stats->gen_lost; //CHIAKI_LOGD(NULL, "gen received: %llu, lost: %llu", // (unsigned long long)stats->gen_received, // (unsigned long long)stats->gen_lost); // seq uint64_t seq_diff = stats->seq_max - stats->seq_min; // overflow on purpose if max < min uint64_t seq_lost = stats->seq_received > seq_diff ? seq_diff : seq_diff - stats->seq_received; *received += stats->seq_received; *lost += seq_lost; //CHIAKI_LOGD(NULL, "seq received: %llu, lost: %llu", // (unsigned long long)stats->seq_received, // (unsigned long long)seq_lost); if(reset) reset_stats(stats); chiaki_mutex_unlock(&stats->mutex); } chiaki-v2.2.0/lib/src/pb_utils.h000066400000000000000000000031651447035777400165070ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_PB_UTILS_H #define CHIAKI_PB_UTILS_H #include #include static inline bool chiaki_pb_encode_string(pb_ostream_t *stream, const pb_field_t *field, void *const *arg) { char *str = *arg; if (!pb_encode_tag_for_field(stream, field)) return false; return pb_encode_string(stream, (uint8_t*)str, strlen(str)); } typedef struct chiaki_pb_buf_t { size_t size; uint8_t *buf; } ChiakiPBBuf; static inline bool chiaki_pb_encode_buf(pb_ostream_t *stream, const pb_field_t *field, void *const *arg) { ChiakiPBBuf *buf = *arg; if (!pb_encode_tag_for_field(stream, field)) return false; return pb_encode_string(stream, buf->buf, buf->size); } typedef struct chiaki_pb_decode_buf_t { size_t max_size; size_t size; uint8_t *buf; } ChiakiPBDecodeBuf; static inline bool chiaki_pb_decode_buf(pb_istream_t *stream, const pb_field_t *field, void **arg) { ChiakiPBDecodeBuf *buf = *arg; if(stream->bytes_left > buf->max_size) { buf->size = 0; return false; } buf->size = stream->bytes_left; bool r = pb_read(stream, buf->buf, buf->size); if(!r) buf->size = 0; return r; } typedef struct chiaki_pb_decode_buf_alloc_t { size_t size; uint8_t *buf; } ChiakiPBDecodeBufAlloc; static inline bool chiaki_pb_decode_buf_alloc(pb_istream_t *stream, const pb_field_t *field, void **arg) { ChiakiPBDecodeBufAlloc *buf = *arg; buf->size = stream->bytes_left; buf->buf = malloc(buf->size); if(!buf->buf) return false; bool r = pb_read(stream, buf->buf, buf->size); if(!r) buf->size = 0; return r; } #endif // CHIAKI_PB_UTILS_H chiaki-v2.2.0/lib/src/pidecoder.c000066400000000000000000000200031447035777400166050ustar00rootroot00000000000000 #include #include #include #include #include #include CHIAKI_EXPORT ChiakiErrorCode chiaki_pi_decoder_init(ChiakiPiDecoder *decoder, ChiakiLog *log) { memset(decoder, 0, sizeof(ChiakiPiDecoder)); bcm_host_init(); if(!(decoder->client = ilclient_init())) { CHIAKI_LOGE(decoder->log, "ilclient_init failed"); chiaki_pi_decoder_fini(decoder); return CHIAKI_ERR_UNKNOWN; } if(OMX_Init() != OMX_ErrorNone) { CHIAKI_LOGE(decoder->log, "OMX_Init failed"); chiaki_pi_decoder_fini(decoder); return CHIAKI_ERR_UNKNOWN; } if(ilclient_create_component(decoder->client, &decoder->video_decode, "video_decode", ILCLIENT_DISABLE_ALL_PORTS | ILCLIENT_ENABLE_INPUT_BUFFERS) != 0) { CHIAKI_LOGE(decoder->log, "ilclient_create_component failed for video_decode"); chiaki_pi_decoder_fini(decoder); return CHIAKI_ERR_UNKNOWN; } decoder->components[0] = decoder->video_decode; if(ilclient_create_component(decoder->client, &decoder->video_render, "video_render", ILCLIENT_DISABLE_ALL_PORTS) != 0) { CHIAKI_LOGE(decoder->log, "ilclient_create_component failed for video_render"); chiaki_pi_decoder_fini(decoder); return CHIAKI_ERR_UNKNOWN; } decoder->components[1] = decoder->video_render; set_tunnel(decoder->tunnel, decoder->video_decode, 131, decoder->video_render, 90); ilclient_change_component_state(decoder->video_decode, OMX_StateIdle); OMX_VIDEO_PARAM_PORTFORMATTYPE format; memset(&format, 0, sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE)); format.nSize = sizeof(OMX_VIDEO_PARAM_PORTFORMATTYPE); format.nVersion.nVersion = OMX_VERSION; format.nPortIndex = 130; format.eCompressionFormat = OMX_VIDEO_CodingAVC; OMX_PARAM_DATAUNITTYPE unit; memset(&unit, 0, sizeof(OMX_PARAM_DATAUNITTYPE)); unit.nSize = sizeof(OMX_PARAM_DATAUNITTYPE); unit.nVersion.nVersion = OMX_VERSION; unit.nPortIndex = 130; unit.eUnitType = OMX_DataUnitCodedPicture; unit.eEncapsulationType = OMX_DataEncapsulationElementaryStream; if(OMX_SetParameter(ILC_GET_HANDLE(decoder->video_decode), OMX_IndexParamVideoPortFormat, &format) != OMX_ErrorNone || OMX_SetParameter(ILC_GET_HANDLE(decoder->video_decode), OMX_IndexParamBrcmDataUnit, &unit) != OMX_ErrorNone) { CHIAKI_LOGE(decoder->log, "OMX_SetParameter failed for video parameters"); chiaki_pi_decoder_fini(decoder); return CHIAKI_ERR_UNKNOWN; } OMX_CONFIG_LATENCYTARGETTYPE latencyTarget; memset(&latencyTarget, 0, sizeof(OMX_CONFIG_LATENCYTARGETTYPE)); latencyTarget.nSize = sizeof(OMX_PARAM_PORTDEFINITIONTYPE); latencyTarget.nVersion.nVersion = OMX_VERSION; latencyTarget.nPortIndex = 90; latencyTarget.bEnabled = OMX_TRUE; latencyTarget.nFilter = 2; latencyTarget.nTarget = 4000; latencyTarget.nShift = 3; latencyTarget.nSpeedFactor = -135; latencyTarget.nInterFactor = 500; latencyTarget.nAdjCap = 20; if(OMX_SetParameter(ILC_GET_HANDLE(decoder->video_render), OMX_IndexConfigLatencyTarget, &latencyTarget) != OMX_ErrorNone) { CHIAKI_LOGE(decoder->log, "OMX_SetParameter failed for render parameters"); chiaki_pi_decoder_fini(decoder); return CHIAKI_ERR_UNKNOWN; } OMX_CONFIG_ROTATIONTYPE rotationType; memset(&rotationType, 0, sizeof(OMX_CONFIG_ROTATIONTYPE)); rotationType.nSize = sizeof(OMX_CONFIG_ROTATIONTYPE); rotationType.nVersion.nVersion = OMX_VERSION; rotationType.nPortIndex = 90; //rotationType.nRotation = 90; // example if(OMX_SetParameter(ILC_GET_HANDLE(decoder->video_render), OMX_IndexConfigCommonRotate, &rotationType) != OMX_ErrorNone) { CHIAKI_LOGE(decoder->log, "OMX_SetParameter failed for rotation"); chiaki_pi_decoder_fini(decoder); return CHIAKI_ERR_UNKNOWN; } if(ilclient_enable_port_buffers(decoder->video_decode, 130, NULL, NULL, NULL) != 0) { CHIAKI_LOGE(decoder->log, "ilclient_enable_port_buffers failed"); chiaki_pi_decoder_fini(decoder); return CHIAKI_ERR_UNKNOWN; } decoder->port_settings_changed = false; decoder->first_packet = true; ilclient_change_component_state(decoder->video_decode, OMX_StateExecuting); CHIAKI_LOGI(decoder->log, "Raspberry Pi Decoder initialized"); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_pi_decoder_fini(ChiakiPiDecoder *decoder) { if(decoder->video_decode) { OMX_BUFFERHEADERTYPE *buf; if((buf = ilclient_get_input_buffer(decoder->video_decode, 130, 1))) { buf->nFilledLen = 0; buf->nFlags = OMX_BUFFERFLAG_TIME_UNKNOWN | OMX_BUFFERFLAG_EOS; OMX_EmptyThisBuffer(ILC_GET_HANDLE(decoder->video_decode), buf); } // need to flush the renderer to allow video_decode to disable its input port ilclient_flush_tunnels(decoder->tunnel, 0); ilclient_disable_port_buffers(decoder->video_decode, 130, NULL, NULL, NULL); ilclient_disable_tunnel(decoder->tunnel); ilclient_teardown_tunnels(decoder->tunnel); ilclient_state_transition(decoder->components, OMX_StateIdle); ilclient_state_transition(decoder->components, OMX_StateLoaded); ilclient_cleanup_components(decoder->components); } OMX_Deinit(); if(decoder->client) ilclient_destroy(decoder->client); } static bool push_buffer(ChiakiPiDecoder *decoder, uint8_t *buf, size_t buf_size) { while(buf_size) { OMX_BUFFERHEADERTYPE *omx_buf = ilclient_get_input_buffer(decoder->video_decode, 130, 1); if(!omx_buf) { CHIAKI_LOGE(decoder->log, "ilclient_get_input_buffer failed"); return false; } size_t push_size = buf_size; if(push_size > omx_buf->nAllocLen) { CHIAKI_LOGW(decoder->log, "OMX Buffer too small, fragmenting to multiple buffers."); push_size = omx_buf->nAllocLen; } memcpy(omx_buf->pBuffer, buf, push_size); buf_size -= push_size; buf += push_size; omx_buf->nFilledLen = push_size; omx_buf->nOffset = 0; omx_buf->nFlags = 0; if(!buf_size) omx_buf->nFlags |= OMX_BUFFERFLAG_ENDOFFRAME; if(decoder->first_packet) { omx_buf->nFlags |= OMX_BUFFERFLAG_STARTTIME; decoder->first_packet = false; } if(!decoder->port_settings_changed && ((omx_buf->nFilledLen > 0 && ilclient_remove_event(decoder->video_decode, OMX_EventPortSettingsChanged, 131, 0, 0, 1) == 0) || (omx_buf->nFilledLen == 0 && ilclient_wait_for_event(decoder->video_decode, OMX_EventPortSettingsChanged, 131, 0, 0, 1, ILCLIENT_EVENT_ERROR | ILCLIENT_PARAMETER_CHANGED, 10000) == 0))) { decoder->port_settings_changed = true; if(ilclient_setup_tunnel(decoder->tunnel, 0, 0) != 0) { CHIAKI_LOGE(decoder->log, "ilclient_setup_tunnel failed"); return false; } ilclient_change_component_state(decoder->video_render, OMX_StateExecuting); } if(OMX_EmptyThisBuffer(ILC_GET_HANDLE(decoder->video_decode), omx_buf) != OMX_ErrorNone) { CHIAKI_LOGE(decoder->log, "OMX_EmptyThisBuffer failed"); return false; } } return true; } #define OMX_INIT_STRUCTURE(a) \ memset(&(a), 0, sizeof(a)); \ (a).nSize = sizeof(a); \ (a).nVersion.s.nVersionMajor = OMX_VERSION_MAJOR; \ (a).nVersion.s.nVersionMinor = OMX_VERSION_MINOR; \ (a).nVersion.s.nRevision = OMX_VERSION_REVISION; \ (a).nVersion.s.nStep = OMX_VERSION_STEP CHIAKI_EXPORT void chiaki_pi_decoder_set_params(ChiakiPiDecoder *decoder, int x, int y, int w, int h, bool visible) { OMX_CONFIG_DISPLAYREGIONTYPE configDisplay; OMX_INIT_STRUCTURE(configDisplay); configDisplay.nPortIndex = 90; configDisplay.set = (OMX_DISPLAYSETTYPE)(OMX_DISPLAY_SET_NOASPECT | OMX_DISPLAY_SET_MODE | OMX_DISPLAY_SET_FULLSCREEN | OMX_DISPLAY_SET_PIXEL | OMX_DISPLAY_SET_DEST_RECT | OMX_DISPLAY_SET_ALPHA); configDisplay.mode = OMX_DISPLAY_MODE_LETTERBOX; configDisplay.fullscreen = OMX_FALSE; configDisplay.noaspect = OMX_FALSE; configDisplay.dest_rect.x_offset = x; configDisplay.dest_rect.y_offset = y; configDisplay.dest_rect.width = w; configDisplay.dest_rect.height = h; configDisplay.alpha = visible ? 255 : 0; if(OMX_SetParameter(ILC_GET_HANDLE(decoder->video_render), OMX_IndexConfigDisplayRegion, &configDisplay) != OMX_ErrorNone) CHIAKI_LOGE(decoder->log, "OMX_SetParameter failed for display params"); } CHIAKI_EXPORT bool chiaki_pi_decoder_video_sample_cb(uint8_t *buf, size_t buf_size, void *user) { return push_buffer(user, buf, buf_size); } chiaki-v2.2.0/lib/src/random.c000066400000000000000000000026271447035777400161430ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #ifdef CHIAKI_LIB_ENABLE_MBEDTLS //#include #include #include #else #include #endif CHIAKI_EXPORT ChiakiErrorCode chiaki_random_bytes_crypt(uint8_t *buf, size_t buf_size) { #ifdef CHIAKI_LIB_ENABLE_MBEDTLS // mbedtls_havege_state hs; // mbedtls_havege_init(&hs); // int r = mbedtls_havege_random( &hs, buf, sizeof( buf ) ); // if(r != 0 ) // return CHIAKI_ERR_UNKNOWN; // return CHIAKI_ERR_SUCCESS; // https://github.com/ARMmbed/mbedtls/blob/development/programs/random/gen_random_ctr_drbg.c mbedtls_ctr_drbg_context ctr_drbg; mbedtls_entropy_context entropy; mbedtls_ctr_drbg_init(&ctr_drbg); mbedtls_entropy_init(&entropy); mbedtls_ctr_drbg_set_prediction_resistance(&ctr_drbg, MBEDTLS_CTR_DRBG_PR_OFF); if(mbedtls_ctr_drbg_seed(&ctr_drbg, mbedtls_entropy_func, &entropy, (const unsigned char *)"RANDOM_GEN", 10) != 0) { return CHIAKI_ERR_UNKNOWN; } if(mbedtls_ctr_drbg_random(&ctr_drbg, buf, buf_size) != 0) { return CHIAKI_ERR_UNKNOWN; } mbedtls_ctr_drbg_free(&ctr_drbg); mbedtls_entropy_free(&entropy); return CHIAKI_ERR_SUCCESS; #else int r = RAND_bytes(buf, (int)buf_size); if(!r) return CHIAKI_ERR_UNKNOWN; return CHIAKI_ERR_SUCCESS; #endif } CHIAKI_EXPORT uint32_t chiaki_random_32() { return rand() % UINT32_MAX; } chiaki-v2.2.0/lib/src/regist.c000066400000000000000000000534511447035777400161610ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "utils.h" #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #include typedef uint32_t in_addr_t; #else #include #endif #define REGIST_PORT 9295 #define SEARCH_REQUEST_SLEEP_MS 100 #define REGIST_SEARCH_TIMEOUT_MS 3000 #define REGIST_REPONSE_TIMEOUT_MS 3000 static void *regist_thread_func(void *user); static ChiakiErrorCode regist_search(ChiakiRegist *regist, struct addrinfo *addrinfos, struct sockaddr *recv_addr, socklen_t *recv_addr_size); static chiaki_socket_t regist_search_connect(ChiakiRegist *regist, struct addrinfo *addrinfos, struct sockaddr *send_addr, socklen_t *send_addr_len); static chiaki_socket_t regist_request_connect(ChiakiRegist *regist, const struct sockaddr *addr, size_t addr_len); static ChiakiErrorCode regist_recv_response(ChiakiRegist *regist, ChiakiRegisteredHost *host, chiaki_socket_t sock, ChiakiRPCrypt *rpcrypt); static ChiakiErrorCode regist_parse_response_payload(ChiakiRegist *regist, ChiakiRegisteredHost *host, char *buf, size_t buf_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_regist_start(ChiakiRegist *regist, ChiakiLog *log, const ChiakiRegistInfo *info, ChiakiRegistCb cb, void *cb_user) { regist->log = log; regist->info = *info; regist->info.host = strdup(regist->info.host); if(!regist->info.host) return CHIAKI_ERR_MEMORY; ChiakiErrorCode err = CHIAKI_ERR_UNKNOWN; if(regist->info.psn_online_id) { regist->info.psn_online_id = strdup(regist->info.psn_online_id); if(!regist->info.psn_online_id) { err = CHIAKI_ERR_MEMORY; goto error_host; } } regist->cb = cb; regist->cb_user = cb_user; err = chiaki_stop_pipe_init(®ist->stop_pipe); if(err != CHIAKI_ERR_SUCCESS) goto error_psn_id; err = chiaki_thread_create(®ist->thread, regist_thread_func, regist); if(err != CHIAKI_ERR_SUCCESS) goto error_stop_pipe; return CHIAKI_ERR_SUCCESS; error_stop_pipe: chiaki_stop_pipe_fini(®ist->stop_pipe); error_psn_id: free((char *)regist->info.psn_online_id); error_host: free((char *)regist->info.host); return err; } CHIAKI_EXPORT void chiaki_regist_fini(ChiakiRegist *regist) { chiaki_thread_join(®ist->thread, NULL); chiaki_stop_pipe_fini(®ist->stop_pipe); free((char *)regist->info.psn_online_id); free((char *)regist->info.host); } CHIAKI_EXPORT void chiaki_regist_stop(ChiakiRegist *regist) { chiaki_stop_pipe_stop(®ist->stop_pipe); } static void regist_event_simple(ChiakiRegist *regist, ChiakiRegistEventType type) { ChiakiRegistEvent event = { 0 }; event.type = type; regist->cb(&event, regist->cb_user); } static const char *const request_head_fmt = "POST %s HTTP/1.1\r\n HTTP/1.1\r\n" "HOST: 10.0.2.15\r\n" // random lol "User-Agent: remoteplay Windows\r\n" "Connection: close\r\n" "Content-Length: %llu\r\n"; static const char *request_path_ps5 = "/sie/ps5/rp/sess/rgst"; static const char *request_path_ps4 = "/sie/ps4/rp/sess/rgst"; static const char *request_path_ps4_pre10 = "/sce/rp/regist"; static const char *request_path(ChiakiTarget target) { switch(target) { case CHIAKI_TARGET_PS5_UNKNOWN: case CHIAKI_TARGET_PS5_1: return request_path_ps5; case CHIAKI_TARGET_PS4_8: case CHIAKI_TARGET_PS4_9: return request_path_ps4_pre10; default: return request_path_ps4; } } static const char *const request_rp_version_fmt = "RP-Version: %s\r\n"; static const char *const request_tail = "\r\n"; const char *client_type = "dabfa2ec873de5839bee8d3f4c0239c4282c07c25c6077a2931afcf0adc0d34f"; const char *client_type_ps4_pre10 = "Windows"; static const char *const request_inner_account_id_fmt = "Client-Type: %s\r\n" "Np-AccountId: %s\r\n"; static const char *const request_inner_online_id_fmt = "Client-Type: Windows\r\n" "Np-Online-Id: %s\r\n"; static int request_header_format(char *buf, size_t buf_size, size_t payload_size, ChiakiTarget target) { int cur = snprintf(buf, buf_size, request_head_fmt, request_path(target), (unsigned long long)payload_size); if(cur < 0 || cur >= payload_size) return -1; if(target >= CHIAKI_TARGET_PS4_9) { const char *rp_version_str = chiaki_rp_version_string(target); size_t s = buf_size - cur; int r = snprintf(buf + cur, s, request_rp_version_fmt, rp_version_str); if(r < 0 || r >= s) return -1; cur += r; } size_t tail_size = strlen(request_tail) + 1; if(cur + tail_size > payload_size) return -1; memcpy(buf + cur, request_tail, tail_size); cur += (int)tail_size - 1; return cur; } CHIAKI_EXPORT ChiakiErrorCode chiaki_regist_request_payload_format(ChiakiTarget target, const uint8_t *ambassador, uint8_t *buf, size_t *buf_size, ChiakiRPCrypt *crypt, const char *psn_online_id, const uint8_t *psn_account_id, uint32_t pin) { size_t buf_size_val = *buf_size; static const size_t inner_header_off = 0x1e0; if(buf_size_val < inner_header_off) return CHIAKI_ERR_BUF_TOO_SMALL; memset(buf, 'A', inner_header_off); // can be random if(target < CHIAKI_TARGET_PS4_10) { chiaki_rpcrypt_init_regist_ps4_pre10(crypt, ambassador, pin); chiaki_rpcrypt_aeropause_ps4_pre10(buf + 0x11c, crypt->ambassador); } else { size_t key_0_off = buf[0x18D] & 0x1F; size_t key_1_off = buf[0] >> 3; ChiakiErrorCode err = chiaki_rpcrypt_init_regist(crypt, target, ambassador, key_0_off, pin); if(err != CHIAKI_ERR_SUCCESS) return err; uint8_t aeropause[0x10]; err = chiaki_rpcrypt_aeropause(target, key_1_off, aeropause, crypt->ambassador); if(err != CHIAKI_ERR_SUCCESS) return err; memcpy(buf + 0xc7, aeropause + 8, 8); memcpy(buf + 0x191, aeropause, 8); psn_online_id = NULL; // don't need this } int inner_header_size; if(psn_online_id) inner_header_size = snprintf((char *)buf + inner_header_off, buf_size_val - inner_header_off, request_inner_online_id_fmt, psn_online_id); else if(psn_account_id) { char account_id_b64[CHIAKI_PSN_ACCOUNT_ID_SIZE * 2]; ChiakiErrorCode err = chiaki_base64_encode(psn_account_id, CHIAKI_PSN_ACCOUNT_ID_SIZE, account_id_b64, sizeof(account_id_b64)); if(err != CHIAKI_ERR_SUCCESS) return err; inner_header_size = snprintf((char *)buf + inner_header_off, buf_size_val - inner_header_off, request_inner_account_id_fmt, target < CHIAKI_TARGET_PS4_10 ? client_type_ps4_pre10 : client_type, account_id_b64); } else return CHIAKI_ERR_INVALID_DATA; if(inner_header_size < 0 || inner_header_size >= buf_size_val - inner_header_off) return CHIAKI_ERR_BUF_TOO_SMALL; ChiakiErrorCode err = chiaki_rpcrypt_encrypt(crypt, 0, buf + inner_header_off, buf + inner_header_off, inner_header_size); *buf_size = inner_header_off + inner_header_size; return err; } static void *regist_thread_func(void *user) { ChiakiRegist *regist = user; bool canceled = false; bool success = false; ChiakiRPCrypt crypt; uint8_t ambassador[CHIAKI_RPCRYPT_KEY_SIZE]; ChiakiErrorCode err = chiaki_random_bytes_crypt(ambassador, sizeof(ambassador)); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(regist->log, "Regist failed to generate random ambassador"); goto fail; } uint8_t payload[0x400]; size_t payload_size = sizeof(payload); err = chiaki_regist_request_payload_format(regist->info.target, ambassador, payload, &payload_size, &crypt, regist->info.psn_online_id, regist->info.psn_account_id, regist->info.pin); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(regist->log, "Regist failed to format payload"); goto fail; } char request_header[0x100]; int request_header_size = request_header_format(request_header, sizeof(request_header), payload_size, regist->info.target); if(request_header_size < 0 || request_header_size >= sizeof(request_header)) { CHIAKI_LOGE(regist->log, "Regist failed to format request"); goto fail; } CHIAKI_LOGV(regist->log, "Regist formatted request header:"); chiaki_log_hexdump(regist->log, CHIAKI_LOG_VERBOSE, (uint8_t *)request_header, request_header_size); struct addrinfo *addrinfos; int r = getaddrinfo(regist->info.host, NULL, NULL, &addrinfos); if(r != 0) { CHIAKI_LOGE(regist->log, "Regist failed to getaddrinfo on %s", regist->info.host); goto fail; } struct sockaddr recv_addr = { 0 }; socklen_t recv_addr_size; recv_addr_size = sizeof(recv_addr); err = regist_search(regist, addrinfos, &recv_addr, &recv_addr_size); if(err != CHIAKI_ERR_SUCCESS) { if(err == CHIAKI_ERR_CANCELED) canceled = true; else CHIAKI_LOGE(regist->log, "Regist search failed"); goto fail_addrinfos; } err = chiaki_stop_pipe_sleep(®ist->stop_pipe, SEARCH_REQUEST_SLEEP_MS); // PS4 doesn't accept requests immediately if(err != CHIAKI_ERR_TIMEOUT) { canceled = true; goto fail_addrinfos; } chiaki_socket_t sock = regist_request_connect(regist, &recv_addr, recv_addr_size); if(CHIAKI_SOCKET_IS_INVALID(sock)) { CHIAKI_LOGE(regist->log, "Regist eventually failed to connect for request"); goto fail_addrinfos; } CHIAKI_LOGI(regist->log, "Regist connected to %s, sending request", regist->info.host); int s = send(sock, request_header, request_header_size, 0); if(s < 0) { #ifdef _WIN32 CHIAKI_LOGE(regist->log, "Regist failed to send request header: %u", WSAGetLastError()); #else CHIAKI_LOGE(regist->log, "Regist failed to send request header: %s", strerror(errno)); #endif goto fail_socket; } s = send(sock, payload, payload_size, 0); if(s < 0) { #ifdef _WIN32 CHIAKI_LOGE(regist->log, "Regist failed to send payload: %u", WSAGetLastError()); #else CHIAKI_LOGE(regist->log, "Regist failed to send payload: %s", strerror(errno)); #endif goto fail_socket; } CHIAKI_LOGI(regist->log, "Regist waiting for response"); ChiakiRegisteredHost host; err = regist_recv_response(regist, &host, sock, &crypt); if(err != CHIAKI_ERR_SUCCESS) { if(err == CHIAKI_ERR_CANCELED) canceled = true; else CHIAKI_LOGE(regist->log, "Regist eventually failed"); goto fail_socket; } CHIAKI_LOGI(regist->log, "Regist successfully received response"); success = true; fail_socket: CHIAKI_SOCKET_CLOSE(sock); fail_addrinfos: freeaddrinfo(addrinfos); fail: if(canceled) { CHIAKI_LOGI(regist->log, "Regist canceled"); regist_event_simple(regist, CHIAKI_REGIST_EVENT_TYPE_FINISHED_CANCELED); } else if(success) { ChiakiRegistEvent event = { 0 }; event.type = CHIAKI_REGIST_EVENT_TYPE_FINISHED_SUCCESS; event.registered_host = &host; regist->cb(&event, regist->cb_user); } else regist_event_simple(regist, CHIAKI_REGIST_EVENT_TYPE_FINISHED_FAILED); return NULL; } static ChiakiErrorCode regist_search(ChiakiRegist *regist, struct addrinfo *addrinfos, struct sockaddr *recv_addr, socklen_t *recv_addr_size) { CHIAKI_LOGI(regist->log, "Regist starting search"); struct sockaddr send_addr; socklen_t send_addr_len = sizeof(send_addr); chiaki_socket_t sock = regist_search_connect(regist, addrinfos, &send_addr, &send_addr_len); if(CHIAKI_SOCKET_IS_INVALID(sock)) { CHIAKI_LOGE(regist->log, "Regist eventually failed to connect for search"); return CHIAKI_ERR_NETWORK; } ChiakiErrorCode err = CHIAKI_ERR_SUCCESS; const char *src = chiaki_target_is_ps5(regist->info.target) ? "SRC3" : "SRC2"; const char *res = chiaki_target_is_ps5(regist->info.target) ? "RES3" : "RES2"; size_t res_size = strlen(res); CHIAKI_LOGI(regist->log, "Regist sending search packet"); int r; if(regist->info.broadcast) r = sendto_broadcast(regist->log, sock, src, strlen(src) + 1, 0, &send_addr, send_addr_len); else r = send(sock, src, strlen(src) + 1, 0); if(r < 0) { CHIAKI_LOGE(regist->log, "Regist failed to send search: %s", strerror(errno)); err = CHIAKI_ERR_NETWORK; goto done; } uint64_t timeout_abs_ms = chiaki_time_now_monotonic_ms() + REGIST_SEARCH_TIMEOUT_MS; while(true) { uint64_t now_ms = chiaki_time_now_monotonic_ms(); if(now_ms > timeout_abs_ms) err = CHIAKI_ERR_TIMEOUT; else err = chiaki_stop_pipe_select_single(®ist->stop_pipe, sock, false, timeout_abs_ms - now_ms); if(err != CHIAKI_ERR_SUCCESS) { if(err == CHIAKI_ERR_TIMEOUT) CHIAKI_LOGE(regist->log, "Regist timed out waiting for search response"); break; } uint8_t buf[0x100]; int n = recvfrom(sock, buf, sizeof(buf) - 1, 0, recv_addr, recv_addr_size); if(n <= 0) { if(n < 0) CHIAKI_LOGE(regist->log, "Regist failed to receive search response: %s", strerror(errno)); else CHIAKI_LOGE(regist->log, "Regist failed to receive search response"); err = CHIAKI_ERR_NETWORK; goto done; } CHIAKI_LOGV(regist->log, "Regist received packet: %d >= %d", n, res_size); chiaki_log_hexdump(regist->log, CHIAKI_LOG_VERBOSE, buf, n); if(n >= res_size && !memcmp(buf, res, res_size)) { char addr[64]; const char *addr_str = sockaddr_str(recv_addr, addr, sizeof(addr)); CHIAKI_LOGI(regist->log, "Regist received search response from %s", addr_str ? addr_str : ""); break; } } done: CHIAKI_SOCKET_CLOSE(sock); return err; } static chiaki_socket_t regist_search_connect(ChiakiRegist *regist, struct addrinfo *addrinfos, struct sockaddr *send_addr, socklen_t *send_addr_len) { chiaki_socket_t sock = CHIAKI_INVALID_SOCKET; for(struct addrinfo *ai=addrinfos; ai; ai=ai->ai_next) { //if(ai->ai_protocol != IPPROTO_UDP) // continue; if(ai->ai_addr->sa_family != AF_INET) // TODO: support IPv6 continue; if(ai->ai_addrlen > *send_addr_len) continue; memcpy(send_addr, ai->ai_addr, ai->ai_addrlen); *send_addr_len = ai->ai_addrlen; set_port(send_addr, htons(REGIST_PORT)); sock = socket(ai->ai_family, SOCK_DGRAM, IPPROTO_UDP); if(CHIAKI_SOCKET_IS_INVALID(sock)) { CHIAKI_LOGE(regist->log, "Regist failed to create socket for search"); continue; } if(regist->info.broadcast) { const int broadcast = 1; int r = setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (const void *)&broadcast, sizeof(broadcast)); if(r < 0) { #ifdef _WIN32 CHIAKI_LOGE(regist->log, "Regist failed to setsockopt SO_BROADCAST, error %u", WSAGetLastError()); #else CHIAKI_LOGE(regist->log, "Regist failed to setsockopt SO_BROADCAST"); #endif goto connect_fail; } in_addr_t ip = ((struct sockaddr_in *)send_addr)->sin_addr.s_addr; ((struct sockaddr_in *)send_addr)->sin_addr.s_addr = htonl(INADDR_ANY); r = bind(sock, send_addr, *send_addr_len); ((struct sockaddr_in *)send_addr)->sin_addr.s_addr = ip; if(r < 0) { CHIAKI_LOGE(regist->log, "Regist failed to bind socket"); goto connect_fail; } } else { int r = connect(sock, send_addr, *send_addr_len); if(r < 0) { #ifdef _WIN32 CHIAKI_LOGE(regist->log, "Regist connect failed, error %u", WSAGetLastError()); #else int errsv = errno; CHIAKI_LOGE(regist->log, "Regist connect failed: %s", strerror(errsv)); #endif goto connect_fail; } } break; connect_fail: CHIAKI_SOCKET_CLOSE(sock); sock = CHIAKI_INVALID_SOCKET; } return sock; } static chiaki_socket_t regist_request_connect(ChiakiRegist *regist, const struct sockaddr *addr, size_t addr_len) { chiaki_socket_t sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if(CHIAKI_SOCKET_IS_INVALID(sock)) { return CHIAKI_INVALID_SOCKET; } int r = connect(sock, addr, addr_len); if(r < 0) { int errsv = errno; #ifdef _WIN32 CHIAKI_LOGE(regist->log, "Regist connect failed: %u", WSAGetLastError()); #else CHIAKI_LOGE(regist->log, "Regist connect failed: %s", strerror(errsv)); #endif CHIAKI_SOCKET_CLOSE(sock); sock = CHIAKI_INVALID_SOCKET; } return sock; } static ChiakiErrorCode regist_recv_response(ChiakiRegist *regist, ChiakiRegisteredHost *host, chiaki_socket_t sock, ChiakiRPCrypt *rpcrypt) { uint8_t buf[0x200]; size_t buf_filled_size; size_t header_size; ChiakiErrorCode err = chiaki_recv_http_header(sock, (char *)buf, sizeof(buf), &header_size, &buf_filled_size, ®ist->stop_pipe, REGIST_REPONSE_TIMEOUT_MS); if(err == CHIAKI_ERR_CANCELED) return err; if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(regist->log, "Regist failed to receive response HTTP header"); return err; } CHIAKI_LOGV(regist->log, "Regist response HTTP header:"); chiaki_log_hexdump(regist->log, CHIAKI_LOG_VERBOSE, buf, header_size); ChiakiHttpResponse http_response; err = chiaki_http_response_parse(&http_response, (char *)buf, header_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(regist->log, "Regist failed to pare response HTTP header"); return err; } if(http_response.code != 200) { CHIAKI_LOGE(regist->log, "Regist received HTTP code %d", http_response.code); for(ChiakiHttpHeader *header=http_response.headers; header; header=header->next) { if(strcmp(header->key, "RP-Application-Reason") == 0) { uint32_t reason = strtoul(header->value, NULL, 0x10); CHIAKI_LOGE(regist->log, "Reported Application Reason: %#x (%s)", (unsigned int)reason, chiaki_rp_application_reason_string(reason)); break; } } chiaki_http_response_fini(&http_response); return CHIAKI_ERR_UNKNOWN; } size_t content_size = 0; for(ChiakiHttpHeader *header=http_response.headers; header; header=header->next) { if(strcmp(header->key, "Content-Length") == 0) { content_size = (size_t)strtoull(header->value, NULL, 0); } } chiaki_http_response_fini(&http_response); if(!content_size) { CHIAKI_LOGE(regist->log, "Regist response does not contain or contains invalid Content-Length"); return CHIAKI_ERR_INVALID_RESPONSE; } if(content_size + header_size > sizeof(buf)) { CHIAKI_LOGE(regist->log, "Regist response content too big"); return CHIAKI_ERR_BUF_TOO_SMALL; } while(buf_filled_size < content_size + header_size) { err = chiaki_stop_pipe_select_single(®ist->stop_pipe, sock, false, REGIST_REPONSE_TIMEOUT_MS); if(err != CHIAKI_ERR_SUCCESS) { if(err == CHIAKI_ERR_TIMEOUT) CHIAKI_LOGE(regist->log, "Regist timed out receiving response content"); return err; } int received = recv(sock, buf + buf_filled_size, (content_size + header_size) - buf_filled_size, 0); if(received <= 0) { CHIAKI_LOGE(regist->log, "Regist failed to receive response content"); return CHIAKI_ERR_NETWORK; } buf_filled_size += received; } uint8_t *payload = buf + header_size; size_t payload_size = buf_filled_size - header_size; chiaki_rpcrypt_decrypt(rpcrypt, 0, payload, payload, payload_size); CHIAKI_LOGI(regist->log, "Regist response payload (decrypted):"); chiaki_log_hexdump(regist->log, CHIAKI_LOG_VERBOSE, payload, payload_size); err = regist_parse_response_payload(regist, host, (char *)payload, payload_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(regist->log, "Regist failed to parse response payload"); return err; } return CHIAKI_ERR_SUCCESS; } static ChiakiErrorCode regist_parse_response_payload(ChiakiRegist *regist, ChiakiRegisteredHost *host, char *buf, size_t buf_size) { ChiakiHttpHeader *headers; ChiakiErrorCode err = chiaki_http_header_parse(&headers, buf, buf_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(regist->log, "Regist failed to parse response payload HTTP header"); return err; } memset(host, 0, sizeof(*host)); host->target = regist->info.target; bool mac_found = false; bool regist_key_found = false; bool key_found = false; bool ps5 = chiaki_target_is_ps5(regist->info.target); for(ChiakiHttpHeader *header=headers; header; header=header->next) { #define COPY_STRING(name, key_str) \ if(strcmp(header->key, (key_str)) == 0) \ { \ size_t len = strlen(header->value); \ if(len >= sizeof(host->name)) \ { \ CHIAKI_LOGE(regist->log, "Regist value for %s in response is too long", (key_str)); \ continue; \ } \ memcpy(host->name, header->value, len); \ host->name[len] = 0; \ continue; \ } COPY_STRING(ap_ssid, "AP-Ssid") COPY_STRING(ap_bssid, "AP-Bssid") COPY_STRING(ap_key, "AP-Key") COPY_STRING(ap_name, "AP-Name") COPY_STRING(server_nickname, ps5 ? "PS5-Nickname" : "PS4-Nickname") #undef COPY_STRING if(strcmp(header->key, ps5 ? "PS5-RegistKey" : "PS4-RegistKey") == 0) { memset(host->rp_regist_key, 0, sizeof(host->rp_regist_key)); size_t buf_size = sizeof(host->rp_regist_key); err = parse_hex((uint8_t *)host->rp_regist_key, &buf_size, header->value, strlen(header->value)); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(regist->log, "Regist received invalid RegistKey in response"); memset(host->rp_regist_key, 0, sizeof(host->rp_regist_key)); } else { regist_key_found = true; } } else if(strcmp(header->key, "RP-KeyType") == 0) { host->rp_key_type = (uint32_t)strtoul(header->value, NULL, 0); } else if(strcmp(header->key, "RP-Key") == 0) { size_t buf_size = sizeof(host->rp_key); err = parse_hex((uint8_t *)host->rp_key, &buf_size, header->value, strlen(header->value)); if(err != CHIAKI_ERR_SUCCESS || buf_size != sizeof(host->rp_key)) { CHIAKI_LOGE(regist->log, "Regist received invalid key in response"); memset(host->rp_key, 0, sizeof(host->rp_key)); } else { key_found = true; } } else if(strcmp(header->key, ps5 ? "PS5-Mac" : "PS4-Mac") == 0) { size_t buf_size = sizeof(host->server_mac); err = parse_hex((uint8_t *)host->server_mac, &buf_size, header->value, strlen(header->value)); if(err != CHIAKI_ERR_SUCCESS || buf_size != sizeof(host->server_mac)) { CHIAKI_LOGE(regist->log, "Regist received invalid MAC Address in response"); memset(host->server_mac, 0, sizeof(host->server_mac)); } else { mac_found = true; } } else { CHIAKI_LOGI(regist->log, "Regist received unknown key %s in response payload", header->key); } } chiaki_http_header_free(headers); if(!regist_key_found) { CHIAKI_LOGE(regist->log, "Regist response is missing RegistKey (or it was invalid)"); return CHIAKI_ERR_INVALID_RESPONSE; } if(!key_found) { CHIAKI_LOGE(regist->log, "Regist response is missing key (or it was invalid)"); return CHIAKI_ERR_INVALID_RESPONSE; } if(!mac_found) { CHIAKI_LOGE(regist->log, "Regist response is missing MAC Adress (or it was invalid)"); return CHIAKI_ERR_INVALID_RESPONSE; } return CHIAKI_ERR_SUCCESS; } chiaki-v2.2.0/lib/src/reorderqueue.c000066400000000000000000000125331447035777400173670ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #define gt(a, b) (queue->seq_num_gt((a), (b))) #define lt(a, b) (queue->seq_num_lt((a), (b))) #define ge(a, b) ((a) == (b) || gt((a), (b))) #define le(a, b) ((a) == (b) || lt((a), (b))) #define add(a, b) (queue->seq_num_add((a), (b))) #define QUEUE_SIZE (1 << queue->size_exp) #define IDX_MASK ((1 << queue->size_exp) - 1) #define idx(seq_num) ((seq_num) & IDX_MASK) CHIAKI_EXPORT ChiakiErrorCode chiaki_reorder_queue_init(ChiakiReorderQueue *queue, size_t size_exp, uint64_t seq_num_start, ChiakiReorderQueueSeqNumGt seq_num_gt, ChiakiReorderQueueSeqNumLt seq_num_lt, ChiakiReorderQueueSeqNumAdd seq_num_add) { queue->size_exp = size_exp; queue->begin = seq_num_start; queue->count = 0; queue->seq_num_gt = seq_num_gt; queue->seq_num_lt = seq_num_lt; queue->seq_num_add = seq_num_add; queue->drop_strategy = CHIAKI_REORDER_QUEUE_DROP_STRATEGY_END; queue->drop_cb = NULL; queue->drop_cb_user = NULL; queue->queue = calloc(1 << size_exp, sizeof(ChiakiReorderQueueEntry)); if(!queue->queue) return CHIAKI_ERR_MEMORY; return CHIAKI_ERR_SUCCESS; } #define REORDER_QUEUE_INIT(bits) \ static bool seq_num_##bits##_gt(uint64_t a, uint64_t b) { return chiaki_seq_num_##bits##_gt((ChiakiSeqNum##bits)a, (ChiakiSeqNum##bits)b); } \ static bool seq_num_##bits##_lt(uint64_t a, uint64_t b) { return chiaki_seq_num_##bits##_lt((ChiakiSeqNum##bits)a, (ChiakiSeqNum##bits)b); } \ static uint64_t seq_num_##bits##_add(uint64_t a, uint64_t b) { return (uint64_t)((ChiakiSeqNum##bits)a + (ChiakiSeqNum##bits)b); } \ \ CHIAKI_EXPORT ChiakiErrorCode chiaki_reorder_queue_init_##bits(ChiakiReorderQueue *queue, size_t size_exp, ChiakiSeqNum##bits seq_num_start) \ { \ return chiaki_reorder_queue_init(queue, size_exp, (uint64_t)seq_num_start, \ seq_num_##bits##_gt, seq_num_##bits##_lt, seq_num_##bits##_add); \ } REORDER_QUEUE_INIT(16) REORDER_QUEUE_INIT(32) CHIAKI_EXPORT void chiaki_reorder_queue_fini(ChiakiReorderQueue *queue) { if(queue->drop_cb) { for(uint64_t i=0; icount; i++) { uint64_t seq_num = add(queue->begin, i); ChiakiReorderQueueEntry *entry = &queue->queue[idx(seq_num)]; if(entry->set) queue->drop_cb(seq_num, entry->user, queue->drop_cb_user); } } free(queue->queue); } CHIAKI_EXPORT void chiaki_reorder_queue_push(ChiakiReorderQueue *queue, uint64_t seq_num, void *user) { assert(queue->count <= QUEUE_SIZE); uint64_t end = add(queue->begin, queue->count); if(ge(seq_num, queue->begin) && lt(seq_num, end)) { ChiakiReorderQueueEntry *entry = &queue->queue[idx(seq_num)]; if(entry->set) // received twice goto drop_it; entry->user = user; entry->set = true; return; } if(lt(seq_num, queue->begin)) goto drop_it; // => ge(seq_num, queue->end) == 1 assert(ge(seq_num, end)); uint64_t free_elems = QUEUE_SIZE - queue->count; uint64_t total_end = add(end, free_elems); uint64_t new_end = add(seq_num, 1); if(lt(total_end, new_end)) { if(queue->drop_strategy == CHIAKI_REORDER_QUEUE_DROP_STRATEGY_END) goto drop_it; // drop first until empty or enough space while(queue->count > 0 && lt(total_end, new_end)) { ChiakiReorderQueueEntry *entry = &queue->queue[idx(queue->begin)]; if(entry->set && queue->drop_cb) queue->drop_cb(queue->begin, entry->user, queue->drop_cb_user); queue->begin = add(queue->begin, 1); queue->count--; free_elems = QUEUE_SIZE - queue->count; total_end = add(end, free_elems); } // empty, just shift to the seq_num if(queue->count == 0) queue->begin = seq_num; } // move end until new_end end = add(queue->begin, queue->count); while(lt(end, new_end)) { queue->count++; queue->queue[idx(end)].set = false; end = add(queue->begin, queue->count); assert(queue->count <= QUEUE_SIZE); } ChiakiReorderQueueEntry *entry = &queue->queue[idx(seq_num)]; entry->set = true; entry->user = user; return; drop_it: if(queue->drop_cb) queue->drop_cb(seq_num, user, queue->drop_cb_user); } CHIAKI_EXPORT bool chiaki_reorder_queue_pull(ChiakiReorderQueue *queue, uint64_t *seq_num, void **user) { assert(queue->count <= QUEUE_SIZE); if(queue->count == 0) return false; ChiakiReorderQueueEntry *entry = &queue->queue[idx(queue->begin)]; if(!entry->set) return false; if(seq_num) *seq_num = queue->begin; if(user) *user = entry->user; queue->begin = add(queue->begin, 1); queue->count--; return true; } CHIAKI_EXPORT bool chiaki_reorder_queue_peek(ChiakiReorderQueue *queue, uint64_t index, uint64_t *seq_num, void **user) { if(index >= queue->count) return false; uint64_t seq_num_val = add(queue->begin, index); ChiakiReorderQueueEntry *entry = &queue->queue[idx(seq_num_val)]; if(!entry->set) return false; *seq_num = seq_num_val; *user = entry->user; return true; } CHIAKI_EXPORT void chiaki_reorder_queue_drop(ChiakiReorderQueue *queue, uint64_t index) { if(index >= queue->count) return; uint64_t seq_num = add(queue->begin, index); ChiakiReorderQueueEntry *entry = &queue->queue[idx(seq_num)]; if(!entry->set) return; if(queue->drop_cb) queue->drop_cb(seq_num, entry->user, queue->drop_cb_user); // reduce count if necessary if(index == queue->count - 1) { while(!entry->set) { queue->count--; if(queue->count == 0) break; seq_num = add(queue->begin, queue->count - 1); entry = &queue->queue[idx(seq_num)]; } } }chiaki-v2.2.0/lib/src/rpcrypt.c000066400000000000000000003354731447035777400163760ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #ifdef CHIAKI_LIB_ENABLE_MBEDTLS #include "mbedtls/aes.h" #include "mbedtls/md.h" #else #include #include #endif #include #include #include static const uint8_t echo_b[] = { 0xe1, 0xec, 0x9c, 0x3a, 0xdd, 0xbd, 0x08, 0x85, 0xfc, 0x0e, 0x1d, 0x78, 0x90, 0x32, 0xc0, 0x04 }; static void bright_ambassador_ps4_pre10(uint8_t *bright, uint8_t *ambassador, const uint8_t *nonce, const uint8_t *morning) { static const uint8_t echo_a[] = { 0x01, 0x49, 0x87, 0x9b, 0x65, 0x39, 0x8b, 0x39, 0x4b, 0x3a, 0x8d, 0x48, 0xc3, 0x0a, 0xef, 0x51 }; for(uint8_t i=0; i> 3) * 0x70]; for(size_t i=0; i> 3) * 0x70]; if(chiaki_target_is_ps5(target)) { for(size_t i=0; itarget = target; chiaki_rpcrypt_bright_ambassador(target, rpcrypt->bright, rpcrypt->ambassador, nonce, morning); } CHIAKI_EXPORT void chiaki_rpcrypt_init_regist_ps4_pre10(ChiakiRPCrypt *rpcrypt, const uint8_t *ambassador, uint32_t pin) { rpcrypt->target = CHIAKI_TARGET_PS4_9; // representative, might not be the actual version static const uint8_t regist_aes_key[CHIAKI_RPCRYPT_KEY_SIZE] = { 0x3f, 0x1c, 0xc4, 0xb6, 0xdc, 0xbb, 0x3e, 0xcc, 0x50, 0xba, 0xed, 0xef, 0x97, 0x34, 0xc7, 0xc9 }; memcpy(rpcrypt->ambassador, ambassador, sizeof(rpcrypt->ambassador)); memcpy(rpcrypt->bright, regist_aes_key, sizeof(rpcrypt->bright)); rpcrypt->bright[0] ^= (uint8_t)((pin >> 0x18) & 0xff); rpcrypt->bright[1] ^= (uint8_t)((pin >> 0x10) & 0xff); rpcrypt->bright[2] ^= (uint8_t)((pin >> 0x08) & 0xff); rpcrypt->bright[3] ^= (uint8_t)((pin >> 0x00) & 0xff); } CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_init_regist(ChiakiRPCrypt *rpcrypt, ChiakiTarget target, const uint8_t *ambassador, size_t key_0_off, uint32_t pin) { static const uint8_t ps4_keys_0[512] = { 0xbe, 0xce, 0x5d, 0xf0, 0xc1, 0x7d, 0xb5, 0xd0, 0xcb, 0x30, 0x13, 0x5d, 0xaa, 0x56, 0x23, 0xfb, 0xc4, 0xbc, 0xf1, 0x8f, 0x38, 0x57, 0xfb, 0xd4, 0xd4, 0x3f, 0x26, 0x38, 0xb5, 0xce, 0xed, 0x6a, 0x21, 0xbc, 0x38, 0xd0, 0x1e, 0x68, 0xcc, 0x7b, 0x45, 0xd1, 0xbe, 0x42, 0x1a, 0x08, 0xaa, 0x16, 0xfd, 0xb0, 0xc0, 0xf4, 0xda, 0x35, 0xe9, 0x12, 0xfd, 0x21, 0x07, 0x48, 0x34, 0xc1, 0xfc, 0x9f, 0x8c, 0xb6, 0xcb, 0x5d, 0xb2, 0x9c, 0x84, 0xe0, 0x1a, 0xfa, 0xa0, 0xc7, 0xeb, 0x3a, 0x93, 0xb3, 0xb3, 0xf1, 0x15, 0xaf, 0x13, 0xbd, 0x21, 0xab, 0xea, 0x5b, 0x80, 0x50, 0x6b, 0x31, 0x1d, 0x7c, 0x1d, 0x40, 0xba, 0x3c, 0x56, 0x0e, 0xe7, 0x94, 0x3a, 0x5b, 0xa1, 0x40, 0x80, 0x74, 0x0a, 0xad, 0x28, 0xcf, 0x47, 0xdf, 0x42, 0xa6, 0x69, 0xe9, 0x5e, 0xbb, 0xc0, 0xc0, 0x0e, 0xb2, 0xc5, 0x8a, 0xee, 0x08, 0x03, 0xd2, 0x84, 0xe5, 0x91, 0x00, 0x1d, 0x46, 0x06, 0x55, 0x09, 0x9d, 0x39, 0x9f, 0xd8, 0xe7, 0xfd, 0xad, 0x9e, 0x93, 0x97, 0xc5, 0xea, 0xe7, 0xa3, 0x10, 0xa7, 0xf2, 0xa2, 0x93, 0x7f, 0x07, 0x04, 0xb4, 0xee, 0xbb, 0xbf, 0x88, 0x23, 0x9c, 0x6e, 0xa7, 0x62, 0xb1, 0x4b, 0x67, 0x1e, 0xb8, 0x3b, 0x1f, 0x64, 0x93, 0x5a, 0x99, 0xec, 0xda, 0xfd, 0x0c, 0x6a, 0xb7, 0xfe, 0xe4, 0x12, 0x76, 0x32, 0x65, 0xb8, 0x41, 0x23, 0xd1, 0x17, 0x09, 0x9c, 0x24, 0x2d, 0x5c, 0x9d, 0x12, 0x79, 0xde, 0xa1, 0xce, 0x69, 0xac, 0xa4, 0xbc, 0x39, 0x2f, 0x57, 0x38, 0x84, 0x61, 0x2d, 0x2a, 0xe8, 0x04, 0xf8, 0xd5, 0x9d, 0x0b, 0xff, 0x7e, 0x56, 0x0c, 0xec, 0x87, 0x0a, 0x1e, 0xab, 0xdf, 0x93, 0x81, 0x13, 0xee, 0xcf, 0x32, 0x02, 0x5a, 0xbf, 0xb0, 0x17, 0xb7, 0xba, 0xb5, 0x7f, 0xf0, 0x01, 0x7b, 0xe1, 0xcb, 0x39, 0x7e, 0x60, 0x6d, 0xa4, 0x75, 0x6e, 0x29, 0x92, 0x45, 0xa6, 0x4f, 0x74, 0x00, 0x86, 0x78, 0x73, 0xbe, 0xfd, 0x3e, 0xe0, 0xd1, 0x0c, 0x6c, 0x0b, 0x49, 0x09, 0x83, 0x6c, 0x85, 0x8a, 0x1d, 0xcb, 0x16, 0xce, 0x81, 0x7c, 0x49, 0xc9, 0x2c, 0x63, 0x61, 0xde, 0xe2, 0x3f, 0x98, 0xb2, 0x73, 0xf0, 0x9a, 0xec, 0x7b, 0x7c, 0xf1, 0xc9, 0xe1, 0x7f, 0xa5, 0x19, 0x8b, 0x4b, 0xe8, 0x38, 0xa4, 0x34, 0x7d, 0xf4, 0x28, 0xfe, 0x0d, 0x4d, 0x11, 0x57, 0x0c, 0x95, 0xf1, 0xaf, 0xd7, 0x34, 0x80, 0xf4, 0xeb, 0x9b, 0x50, 0xe6, 0x6a, 0x5d, 0xea, 0xce, 0x0c, 0x85, 0x4e, 0xc5, 0x5b, 0x93, 0x44, 0xc4, 0x24, 0x98, 0x80, 0xfc, 0xf7, 0x72, 0x9c, 0x31, 0x0b, 0xee, 0x89, 0x67, 0xb3, 0xa2, 0x69, 0x4f, 0xb3, 0x79, 0x5a, 0x14, 0x02, 0x70, 0xed, 0x50, 0x13, 0x75, 0x00, 0x6a, 0xf3, 0xc6, 0x05, 0x1a, 0x00, 0x33, 0x34, 0xf5, 0xac, 0x9e, 0x04, 0xdb, 0xc2, 0x00, 0xb0, 0x1b, 0xc4, 0xf3, 0x97, 0x9d, 0x7f, 0xbe, 0xb8, 0x23, 0x8d, 0x99, 0xe7, 0xcb, 0x74, 0x37, 0x4c, 0x57, 0xec, 0xd2, 0x69, 0x49, 0x46, 0x75, 0x74, 0xaf, 0x51, 0x40, 0xa4, 0x11, 0x7b, 0xb3, 0x2f, 0x51, 0xda, 0xe2, 0xef, 0x33, 0x73, 0x12, 0x18, 0x25, 0x39, 0x03, 0x09, 0xca, 0x49, 0xdc, 0x8e, 0xf1, 0x94, 0xd7, 0x80, 0x17, 0x9e, 0x87, 0x46, 0xc1, 0x04, 0x78, 0xd1, 0xe5, 0x3d, 0x25, 0x88, 0xec, 0x72, 0x3a, 0x28, 0x41, 0x68, 0x14, 0x6e, 0x10, 0xe4, 0xc9, 0x57, 0x75, 0x90, 0xfe, 0x22, 0x1a, 0x63, 0x8e, 0xf4, 0xb8, 0x8d, 0x1a, 0x36, 0xfd, 0xb6, 0xcb, 0x72, 0xc2, 0x97, 0x52, 0x9f, 0x91, 0x72, 0x1b, 0x75, 0x57, 0x90, 0x3b, 0xfd, 0x5a, 0x93, 0x8c, 0xdb, 0xfc, 0xa3, 0x03, 0xdf }; static const uint8_t ps5_keys_0[512] = { 0x24, 0xd8, 0xc2, 0x69, 0x4c, 0x67, 0x78, 0x71, 0xee, 0x31, 0xbd, 0x2b, 0x83, 0xb2, 0x1d, 0x61, 0xc9, 0xa7, 0x8e, 0xed, 0x9a, 0xd3, 0x6a, 0x6b, 0x5c, 0xc8, 0x35, 0x79, 0xa7, 0x24, 0xe2, 0x17, 0x06, 0x60, 0x2e, 0xdf, 0xf4, 0xdb, 0x27, 0x10, 0x55, 0xd9, 0xea, 0x16, 0x4e, 0x90, 0x0c, 0xbf, 0x40, 0x6f, 0x54, 0xa5, 0x31, 0x70, 0x2d, 0x5d, 0x1e, 0x27, 0xdf, 0x37, 0x40, 0xba, 0x9d, 0x5d, 0xff, 0xe1, 0x05, 0x70, 0x80, 0xd4, 0xb7, 0xc2, 0x96, 0x7f, 0x2f, 0x42, 0xeb, 0x5a, 0x08, 0xde, 0xc1, 0xb5, 0x52, 0x15, 0xf6, 0xb5, 0xf2, 0xd9, 0x69, 0xa5, 0xc7, 0xc4, 0x7f, 0x46, 0x64, 0xa4, 0xfd, 0x46, 0x98, 0xa7, 0xe1, 0x2a, 0x8e, 0x6f, 0xaf, 0x65, 0x42, 0x28, 0xb9, 0xc2, 0x6f, 0x3e, 0xe3, 0xe4, 0x4e, 0xe4, 0x5b, 0x9d, 0x60, 0x10, 0xb8, 0x5a, 0xb0, 0x7d, 0x04, 0x0c, 0x4c, 0x24, 0x78, 0xbd, 0xb8, 0xba, 0xdb, 0x8f, 0xe3, 0xa0, 0x75, 0x6d, 0x28, 0xc2, 0x33, 0x5b, 0x32, 0x83, 0xdd, 0x51, 0xb0, 0xa5, 0x8d, 0x09, 0x66, 0xe4, 0x5c, 0xb8, 0x70, 0x0b, 0xe6, 0x82, 0x14, 0xb6, 0xd2, 0xb0, 0xc2, 0xe0, 0x55, 0xf3, 0x84, 0xad, 0x9d, 0x3a, 0xf8, 0x77, 0xf5, 0x9d, 0x9a, 0xa9, 0x7d, 0xf1, 0x45, 0x1b, 0x9b, 0x55, 0x25, 0xd8, 0xc1, 0xff, 0x03, 0xa5, 0x48, 0x0b, 0x1b, 0x19, 0x0c, 0xbd, 0xe0, 0xcd, 0x48, 0xf3, 0x2c, 0x99, 0x19, 0xd6, 0xb8, 0xbb, 0xd6, 0x35, 0x43, 0x6f, 0x71, 0xe3, 0xef, 0x3e, 0x97, 0xb8, 0xe9, 0x40, 0xa8, 0x47, 0xe0, 0xe0, 0x01, 0x16, 0x9d, 0xa7, 0xe5, 0x94, 0x4b, 0x1d, 0xd2, 0x80, 0xa2, 0x7f, 0xf2, 0x98, 0x10, 0x38, 0x0d, 0xb8, 0x56, 0xc3, 0x7a, 0x4b, 0x4c, 0x85, 0xec, 0x2f, 0x23, 0x89, 0xaf, 0xd5, 0xba, 0x9a, 0xad, 0xb0, 0x61, 0x9c, 0x51, 0xb4, 0x6d, 0x02, 0x49, 0x26, 0xa4, 0x34, 0x84, 0x20, 0x35, 0x30, 0x23, 0x0a, 0x47, 0x14, 0x32, 0x1a, 0x96, 0x0e, 0xe8, 0x0f, 0x96, 0x96, 0xd4, 0xba, 0x68, 0x3a, 0x67, 0x15, 0x74, 0xe0, 0xd6, 0x60, 0x4c, 0x68, 0x50, 0x73, 0x14, 0x2f, 0x11, 0x59, 0xac, 0xc8, 0x32, 0xd1, 0xdb, 0x4c, 0x8a, 0x94, 0x75, 0x33, 0x61, 0xd1, 0xd4, 0xfd, 0xaa, 0x6a, 0x61, 0x68, 0xd8, 0xae, 0x31, 0x4f, 0xb8, 0x07, 0x7b, 0x27, 0x0f, 0xf9, 0x0b, 0xb0, 0xc2, 0x64, 0xb3, 0x72, 0xea, 0x8b, 0x87, 0x40, 0x09, 0xb4, 0x82, 0xb4, 0xad, 0x76, 0xf9, 0x36, 0x05, 0x60, 0x89, 0xc8, 0x20, 0xeb, 0xa5, 0xf1, 0x51, 0x0b, 0x27, 0xa7, 0xf0, 0x76, 0x84, 0x96, 0xeb, 0xb1, 0x2e, 0xc2, 0x85, 0x28, 0xbc, 0x48, 0x34, 0xd4, 0x01, 0x8d, 0x5b, 0x25, 0x54, 0xe0, 0xc4, 0x4f, 0xa0, 0xfa, 0x99, 0x8d, 0x6d, 0x7a, 0x64, 0xb1, 0xa9, 0x5d, 0xa4, 0xf9, 0xf5, 0x22, 0xeb, 0x9a, 0xf4, 0xa8, 0x7a, 0x78, 0x4b, 0x7f, 0xe2, 0x8b, 0x04, 0x50, 0x43, 0x7d, 0x26, 0x2d, 0x19, 0x98, 0x38, 0x6a, 0x4f, 0x2d, 0x30, 0x15, 0x2e, 0x4f, 0xcd, 0xb9, 0xce, 0x9e, 0x8d, 0x12, 0xc9, 0xfe, 0x33, 0x8b, 0x84, 0xce, 0x5b, 0x40, 0xe3, 0x7f, 0x72, 0x6d, 0x6c, 0x8a, 0x6a, 0x9e, 0x54, 0xf1, 0xe3, 0x64, 0x5d, 0x6e, 0x7f, 0xac, 0x1a, 0xe7, 0xf7, 0xfa, 0x00, 0x22, 0xed, 0x2b, 0x23, 0xfa, 0x58, 0xc5, 0xeb, 0x44, 0x92, 0x5d, 0xcc, 0xaa, 0x82, 0x9f, 0x23, 0xfb, 0xa6, 0xc9, 0x65, 0x2a, 0xe0, 0x79, 0x12, 0x65, 0x2c, 0x34, 0xc5, 0x23, 0x16, 0xc9, 0xcc, 0x05, 0x30, 0xf3, 0x96, 0x0b, 0x90, 0x67, 0x1a, 0xa7, 0x69, 0x4c, 0x3e, 0x43, 0x24, 0x9d, 0x4e, 0x68, 0xbd, 0x8b, 0x75, 0x6e, 0x9d, 0x07, 0x6f, 0x1a, 0x6a, 0xba }; if(target < CHIAKI_TARGET_PS4_10) return CHIAKI_ERR_INVALID_DATA; const uint8_t *keys_0 = chiaki_target_is_ps5(target) ? ps5_keys_0 : ps4_keys_0; if(key_0_off >= 0x20) return CHIAKI_ERR_INVALID_DATA; rpcrypt->target = target; memcpy(rpcrypt->ambassador, ambassador, sizeof(rpcrypt->ambassador)); for(size_t i=0; ibright[i] = keys_0[i*0x20 + key_0_off]; rpcrypt->bright[0xc] ^= (uint8_t)((pin >> 0x18) & 0xff); rpcrypt->bright[0xd] ^= (uint8_t)((pin >> 0x10) & 0xff); rpcrypt->bright[0xe] ^= (uint8_t)((pin >> 0x08) & 0xff); rpcrypt->bright[0xf] ^= (uint8_t)((pin >> 0x00) & 0xff); return CHIAKI_ERR_SUCCESS; } #define HMAC_KEY_SIZE 0x10 static const uint8_t hmac_key_ps5[HMAC_KEY_SIZE] = { 0x46, 0x46, 0x87, 0xb3, 0x49, 0xca, 0x8c, 0xe8, 0x59, 0xc5, 0x27, 0x0f, 0x5d, 0x7a, 0x69, 0xd6 }; static const uint8_t hmac_key_ps4[HMAC_KEY_SIZE] = { 0x20, 0xd6, 0x6f, 0x59, 0x04, 0xea, 0x7c, 0x14, 0xe5, 0x57, 0xff, 0xc5, 0x2e, 0x48, 0x8a, 0xc8 }; static const uint8_t hmac_key_ps4_pre10[HMAC_KEY_SIZE] = { 0xac, 0x07, 0x88, 0x83, 0xc8, 0x3a, 0x1f, 0xe8, 0x11, 0x46, 0x3a, 0xf3, 0x9e, 0xe3, 0xe3, 0x77 }; static const uint8_t *rpcrypt_hmac_key(ChiakiRPCrypt *rpcrypt) { switch(rpcrypt->target) { case CHIAKI_TARGET_PS5_1: return hmac_key_ps5; case CHIAKI_TARGET_PS4_8: case CHIAKI_TARGET_PS4_9: return hmac_key_ps4_pre10; default: return hmac_key_ps4; } } #ifdef CHIAKI_LIB_ENABLE_MBEDTLS CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_generate_iv(ChiakiRPCrypt *rpcrypt, uint8_t *iv, uint64_t counter) { const uint8_t *hmac_key = rpcrypt_hmac_key(rpcrypt); uint8_t buf[CHIAKI_RPCRYPT_KEY_SIZE + 8]; memcpy(buf, rpcrypt->ambassador, CHIAKI_RPCRYPT_KEY_SIZE); buf[CHIAKI_RPCRYPT_KEY_SIZE + 0] = (uint8_t)((counter >> 0x38) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 1] = (uint8_t)((counter >> 0x30) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 2] = (uint8_t)((counter >> 0x28) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 3] = (uint8_t)((counter >> 0x20) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 4] = (uint8_t)((counter >> 0x18) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 5] = (uint8_t)((counter >> 0x10) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 6] = (uint8_t)((counter >> 0x08) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 7] = (uint8_t)((counter >> 0x00) & 0xff); uint8_t hmac[CHIAKI_RPCRYPT_KEY_SIZE]; unsigned int hmac_len = 0; mbedtls_md_context_t ctx; mbedtls_md_type_t type = MBEDTLS_MD_SHA256; mbedtls_md_init(&ctx); #define GOTO_ERROR(err) do { \ if((err) !=0){ \ goto error;} \ } while(0) // https://tls.mbed.org/module-level-design-hashing GOTO_ERROR(mbedtls_md_setup(&ctx, mbedtls_md_info_from_type(type) , 1)); GOTO_ERROR(mbedtls_md_hmac_starts(&ctx, hmac_key, HMAC_KEY_SIZE)); GOTO_ERROR(mbedtls_md_hmac_update(&ctx, (const unsigned char *) buf, sizeof(buf))); GOTO_ERROR(mbedtls_md_hmac_finish(&ctx, hmac)); #undef GOTO_ERROR memcpy(iv, hmac, CHIAKI_RPCRYPT_KEY_SIZE); mbedtls_md_free(&ctx); return CHIAKI_ERR_SUCCESS; error: mbedtls_md_free(&ctx); return CHIAKI_ERR_UNKNOWN; } static ChiakiErrorCode chiaki_rpcrypt_crypt(ChiakiRPCrypt *rpcrypt, uint64_t counter, const uint8_t *in, uint8_t *out, size_t sz, bool encrypt) { #define GOTO_ERROR(err) do { \ if((err) !=0){ \ goto error;} \ } while(0) // https://github.com/ARMmbed/mbedtls/blob/development/programs/aes/aescrypt2.c // build aes context mbedtls_aes_context ctx; mbedtls_aes_init(&ctx); // initialization vector uint8_t iv[CHIAKI_RPCRYPT_KEY_SIZE]; ChiakiErrorCode err = chiaki_rpcrypt_generate_iv(rpcrypt, iv, counter); if(err != CHIAKI_ERR_SUCCESS) return err; GOTO_ERROR(mbedtls_aes_setkey_enc(&ctx, rpcrypt->bright, 128)); size_t iv_off = 0; if(encrypt) { GOTO_ERROR(mbedtls_aes_crypt_cfb128(&ctx, MBEDTLS_AES_ENCRYPT, sz, &iv_off, iv, in, out)); } else { // the aes_crypt_cfb128 does not seems to use the setkey_dec // GOTO_ERROR(mbedtls_aes_setkey_dec(&ctx, rpcrypt->bright, 128)); GOTO_ERROR(mbedtls_aes_crypt_cfb128(&ctx, MBEDTLS_AES_DECRYPT, sz, &iv_off, iv, in, out)); } #undef GOTO_ERROR mbedtls_aes_free(&ctx); return CHIAKI_ERR_SUCCESS; error: mbedtls_aes_free(&ctx); return CHIAKI_ERR_UNKNOWN; } #else CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_generate_iv(ChiakiRPCrypt *rpcrypt, uint8_t *iv, uint64_t counter) { const uint8_t *hmac_key = rpcrypt_hmac_key(rpcrypt); uint8_t buf[CHIAKI_RPCRYPT_KEY_SIZE + 8]; memcpy(buf, rpcrypt->ambassador, CHIAKI_RPCRYPT_KEY_SIZE); buf[CHIAKI_RPCRYPT_KEY_SIZE + 0] = (uint8_t)((counter >> 0x38) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 1] = (uint8_t)((counter >> 0x30) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 2] = (uint8_t)((counter >> 0x28) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 3] = (uint8_t)((counter >> 0x20) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 4] = (uint8_t)((counter >> 0x18) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 5] = (uint8_t)((counter >> 0x10) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 6] = (uint8_t)((counter >> 0x08) & 0xff); buf[CHIAKI_RPCRYPT_KEY_SIZE + 7] = (uint8_t)((counter >> 0x00) & 0xff); uint8_t hmac[32]; unsigned int hmac_len = 0; if(!HMAC(EVP_sha256(), hmac_key, CHIAKI_RPCRYPT_KEY_SIZE, buf, sizeof(buf), hmac, &hmac_len)) return CHIAKI_ERR_UNKNOWN; if(hmac_len < CHIAKI_RPCRYPT_KEY_SIZE) return CHIAKI_ERR_UNKNOWN; memcpy(iv, hmac, CHIAKI_RPCRYPT_KEY_SIZE); return CHIAKI_ERR_SUCCESS; } static ChiakiErrorCode chiaki_rpcrypt_crypt(ChiakiRPCrypt *rpcrypt, uint64_t counter, const uint8_t *in, uint8_t *out, size_t sz, bool encrypt) { EVP_CIPHER_CTX *ctx = EVP_CIPHER_CTX_new(); if(!ctx) return CHIAKI_ERR_UNKNOWN; uint8_t iv[CHIAKI_RPCRYPT_KEY_SIZE]; ChiakiErrorCode err = chiaki_rpcrypt_generate_iv(rpcrypt, iv, counter); if(err != CHIAKI_ERR_SUCCESS) return err; #define FAIL(err) do { EVP_CIPHER_CTX_free(ctx); return (err); } while(0); if(encrypt) { if(!EVP_EncryptInit_ex(ctx, EVP_aes_128_cfb128(), NULL, rpcrypt->bright, iv)) FAIL(CHIAKI_ERR_UNKNOWN); } else { if(!EVP_DecryptInit_ex(ctx, EVP_aes_128_cfb128(), NULL, rpcrypt->bright, iv)) FAIL(CHIAKI_ERR_UNKNOWN); } if(!EVP_CIPHER_CTX_set_padding(ctx, 0)) FAIL(CHIAKI_ERR_UNKNOWN); int outl; if(encrypt) { if(!EVP_EncryptUpdate(ctx, out, &outl, in, (int)sz)) FAIL(CHIAKI_ERR_UNKNOWN); } else { if(!EVP_DecryptUpdate(ctx, out, &outl, in, (int)sz)) FAIL(CHIAKI_ERR_UNKNOWN); } if(outl != (int)sz) FAIL(CHIAKI_ERR_UNKNOWN); #undef FAIL EVP_CIPHER_CTX_free(ctx); return CHIAKI_ERR_SUCCESS; } #endif CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_encrypt(ChiakiRPCrypt *rpcrypt, uint64_t counter, const uint8_t *in, uint8_t *out, size_t sz) { return chiaki_rpcrypt_crypt(rpcrypt, counter, in, out, sz, true); } CHIAKI_EXPORT ChiakiErrorCode chiaki_rpcrypt_decrypt(ChiakiRPCrypt *rpcrypt, uint64_t counter, const uint8_t *in, uint8_t *out, size_t sz) { return chiaki_rpcrypt_crypt(rpcrypt, counter, in, out, sz, false); } chiaki-v2.2.0/lib/src/senkusha.c000066400000000000000000000673351447035777400165130ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include "utils.h" #include "pb_utils.h" #include #include #include #include #include #include #ifndef _WIN32 #include #include #include #include #endif #define SENKUSHA_PORT 9297 #define EXPECT_TIMEOUT_MS 5000 #define SENKUSHA_PING_COUNT_DEFAULT 10 #define EXPECT_PONG_TIMEOUT_MS 1000 // Assuming IPv4, sizeof(ip header) + sizeof(udp header) #define MTU_UDP_PACKET_ADD 0x1c #define MTU_AV_PACKET_ADD CHIAKI_TAKION_V7_AV_HEADER_SIZE_BASE // Amount of bytes to add to AV data size for MTU pings to get the full size of the ip packet for MTU #define MTU_PING_DATA_ADD (MTU_UDP_PACKET_ADD + MTU_AV_PACKET_ADD) typedef enum { STATE_IDLE, STATE_TAKION_CONNECT, STATE_EXPECT_BANG, STATE_EXPECT_DATA_ACK, STATE_EXPECT_PONG, STATE_EXPECT_MTU, STATE_EXPECT_CLIENT_MTU_COMMAND } SenkushaState; static ChiakiErrorCode senkusha_run_rtt_test(ChiakiSenkusha *senkusha, uint16_t ping_test_index, uint16_t ping_count, uint64_t *rtt_us); static ChiakiErrorCode senkusha_run_mtu_in_test(ChiakiSenkusha *senkusha, uint32_t min, uint32_t max, uint32_t retries, uint64_t timeout_ms, uint32_t *mtu); static ChiakiErrorCode senkusha_run_mtu_out_test(ChiakiSenkusha *senkusha, uint32_t mtu_in, uint32_t min, uint32_t max, uint32_t retries, uint64_t timeout_ms, uint32_t *mtu); static void senkusha_takion_cb(ChiakiTakionEvent *event, void *user); static void senkusha_takion_data(ChiakiSenkusha *senkusha, ChiakiTakionMessageDataType data_type, uint8_t *buf, size_t buf_size); static void senkusha_takion_data_ack(ChiakiSenkusha *senkusha, ChiakiSeqNum32 seq_num); static void senkusha_takion_av(ChiakiSenkusha *senkusha, ChiakiTakionAVPacket *packet); static ChiakiErrorCode senkusha_send_big(ChiakiSenkusha *senkusha); static ChiakiErrorCode senkusha_send_disconnect(ChiakiSenkusha *senkusha); static ChiakiErrorCode senkusha_send_echo_command(ChiakiSenkusha *senkusha, bool enable); static ChiakiErrorCode senkusha_send_mtu_command(ChiakiSenkusha *senkusha, tkproto_SenkushaMtuCommand *command); static ChiakiErrorCode senkusha_send_client_mtu_command(ChiakiSenkusha *senkusha, tkproto_SenkushaClientMtuCommand *command, bool wait_for_ack); static ChiakiErrorCode senkusha_send_data_wait_for_ack(ChiakiSenkusha *senkusha, uint8_t *buf, size_t buf_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_init(ChiakiSenkusha *senkusha, ChiakiSession *session) { senkusha->session = session; senkusha->log = session->log; ChiakiErrorCode err = chiaki_mutex_init(&senkusha->state_mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error; err = chiaki_cond_init(&senkusha->state_cond); if(err != CHIAKI_ERR_SUCCESS) goto error_state_mutex; senkusha->state = STATE_IDLE; senkusha->state_finished = false; senkusha->state_failed = false; senkusha->should_stop = false; senkusha->data_ack_seq_num_expected = 0; senkusha->ping_tag = 0; senkusha->pong_time_us = 0; chiaki_key_state_init(&senkusha->takion.key_state); return CHIAKI_ERR_SUCCESS; error_state_mutex: chiaki_mutex_fini(&senkusha->state_mutex); error: return err; } CHIAKI_EXPORT void chiaki_senkusha_fini(ChiakiSenkusha *senkusha) { chiaki_cond_fini(&senkusha->state_cond); chiaki_mutex_fini(&senkusha->state_mutex); } static bool state_finished_cond_check(void *user) { ChiakiSenkusha *senkusha = user; return senkusha->state_finished || senkusha->should_stop; } CHIAKI_EXPORT ChiakiErrorCode chiaki_senkusha_run(ChiakiSenkusha *senkusha, uint32_t *mtu_in, uint32_t *mtu_out, uint64_t *rtt_us) { ChiakiSession *session = senkusha->session; ChiakiErrorCode err; err = chiaki_mutex_lock(&senkusha->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); #define QUIT(quit_label) do { \ chiaki_mutex_unlock(&senkusha->state_mutex); \ goto quit_label; \ } while(0) if(senkusha->should_stop) { err = CHIAKI_ERR_CANCELED; goto quit; } ChiakiTakionConnectInfo takion_info; takion_info.log = senkusha->log; takion_info.sa_len = session->connect_info.host_addrinfo_selected->ai_addrlen; takion_info.sa = malloc(takion_info.sa_len); if(!takion_info.sa) { err = CHIAKI_ERR_MEMORY; QUIT(quit); } memcpy(takion_info.sa, session->connect_info.host_addrinfo_selected->ai_addr, takion_info.sa_len); err = set_port(takion_info.sa, htons(SENKUSHA_PORT)); assert(err == CHIAKI_ERR_SUCCESS); takion_info.ip_dontfrag = true; takion_info.enable_crypt = false; takion_info.protocol_version = 7; takion_info.cb = senkusha_takion_cb; takion_info.cb_user = senkusha; senkusha->state = STATE_TAKION_CONNECT; senkusha->state_finished = false; senkusha->state_failed = false; err = chiaki_takion_connect(&senkusha->takion, &takion_info); free(takion_info.sa); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Senkusha connect failed"); QUIT(quit); } err = chiaki_cond_timedwait_pred(&senkusha->state_cond, &senkusha->state_mutex, EXPECT_TIMEOUT_MS, state_finished_cond_check, senkusha); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) CHIAKI_LOGE(session->log, "Senkusha connect timeout"); if(senkusha->should_stop) err = CHIAKI_ERR_CANCELED; else CHIAKI_LOGE(session->log, "Senkusha Takion connect failed"); QUIT(quit_takion); } CHIAKI_LOGI(session->log, "Senkusha sending big"); senkusha->state = STATE_EXPECT_BANG; senkusha->state_finished = false; senkusha->state_failed = false; err = senkusha_send_big(senkusha); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Senkusha failed to send big"); QUIT(quit_takion); } err = chiaki_cond_timedwait_pred(&senkusha->state_cond, &senkusha->state_mutex, EXPECT_TIMEOUT_MS, state_finished_cond_check, senkusha); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) CHIAKI_LOGE(session->log, "Senkusha bang receive timeout"); if(senkusha->should_stop) err = CHIAKI_ERR_CANCELED; else CHIAKI_LOGE(session->log, "Senkusha didn't receive bang"); QUIT(quit_takion); } CHIAKI_LOGI(session->log, "Senkusha successfully received bang"); err = senkusha_run_rtt_test(senkusha, 0, SENKUSHA_PING_COUNT_DEFAULT, rtt_us); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha Ping Test failed"); goto disconnect; } uint64_t mtu_timeout_ms = (*rtt_us * 5) / 1000; if(mtu_timeout_ms < 5) mtu_timeout_ms = 5; if(mtu_timeout_ms > 500) mtu_timeout_ms = 500; err = senkusha_run_mtu_in_test(senkusha, 576, 1454, 3, mtu_timeout_ms, mtu_in); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha MTU in test failed"); goto disconnect; } err = senkusha_run_mtu_out_test(senkusha, *mtu_in, 576, 1454, 3, mtu_timeout_ms, mtu_out); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha MTU out test failed"); goto disconnect; } disconnect: CHIAKI_LOGI(session->log, "Senkusha is disconnecting"); senkusha_send_disconnect(senkusha); chiaki_mutex_unlock(&senkusha->state_mutex); quit_takion: chiaki_takion_close(&senkusha->takion); CHIAKI_LOGI(session->log, "Senkusha closed takion"); quit: return err; } static ChiakiErrorCode senkusha_run_rtt_test(ChiakiSenkusha *senkusha, uint16_t ping_test_index, uint16_t ping_count, uint64_t *rtt_us) { CHIAKI_LOGI(senkusha->log, "Senkusha Ping Test with count %u starting", (unsigned int)ping_count); ChiakiErrorCode err = senkusha_send_echo_command(senkusha, true); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha Ping Test failed because sending echo command (true) failed"); return err; } CHIAKI_LOGI(senkusha->log, "Senkusha enabled echo"); uint64_t rtt_us_acc = 0; uint64_t pings_successful = 0; for(uint16_t ping_index=0; ping_indexlog, "Senkusha sending Ping %u of test index %u", (unsigned int)ping_index, (unsigned int)ping_test_index); ChiakiTakionAVPacket av_packet = { 0 }; av_packet.codec = 0xff; av_packet.is_video = false; av_packet.frame_index = ping_test_index; av_packet.unit_index = ping_index; av_packet.units_in_frame_total = 0x800; // or 0 uint8_t data[0x224]; memset(data, 0, sizeof(data)); size_t header_size; err = chiaki_takion_v7_av_packet_format_header(data, sizeof(data), &header_size, &av_packet); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha failed to format AV Header"); return err; } uint32_t tag = chiaki_random_32(); *((chiaki_unaligned_uint32_t *)(data + header_size + 4)) = htonl(tag); senkusha->state = STATE_EXPECT_PONG; senkusha->state_finished = false; senkusha->state_failed = false; senkusha->ping_test_index = ping_test_index; senkusha->ping_index = ping_index; senkusha->ping_tag = tag; uint64_t time_start_us = chiaki_time_now_monotonic_us(); err = chiaki_takion_send_raw(&senkusha->takion, data, sizeof(data)); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha failed to send ping"); return err; } err = chiaki_cond_timedwait_pred(&senkusha->state_cond, &senkusha->state_mutex, EXPECT_PONG_TIMEOUT_MS, state_finished_cond_check, senkusha); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) CHIAKI_LOGE(senkusha->log, "Senkusha pong receive timeout"); if(senkusha->should_stop) return CHIAKI_ERR_CANCELED; else CHIAKI_LOGE(senkusha->log, "Senkusha failed to receive pong"); continue; } uint64_t delta_us = senkusha->pong_time_us - time_start_us; rtt_us_acc += delta_us; pings_successful += 1; CHIAKI_LOGI(senkusha->log, "Senkusha received Pong, RTT = %.3f ms", (float)delta_us * 0.001f); } err = senkusha_send_echo_command(senkusha, false); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha Ping Test failed because sending echo command (false) failed"); return err; } CHIAKI_LOGI(senkusha->log, "Senkusha disabled echo"); if(pings_successful < 1) { CHIAKI_LOGE(senkusha->log, "Senkusha Ping test did not receive a single Pong"); return CHIAKI_ERR_UNKNOWN; } *rtt_us = rtt_us_acc / pings_successful; CHIAKI_LOGI(senkusha->log, "Senkusha determined average RTT = %.3f ms", (float)(*rtt_us) * 0.001f); return CHIAKI_ERR_SUCCESS; } static ChiakiErrorCode senkusha_run_mtu_in_test(ChiakiSenkusha *senkusha, uint32_t min, uint32_t max, uint32_t retries, uint64_t timeout_ms, uint32_t *mtu) { CHIAKI_LOGI(senkusha->log, "Senkusha starting MTU in test with min %u, max %u, retries %u, timeout %llu ms", (unsigned int)min, (unsigned int)max, (unsigned int)retries, (unsigned long long)timeout_ms); uint32_t cur = max; uint32_t request_id = 0; while((max - min) > 1) { bool success = false; for(uint32_t attempt=0; attemptstate = STATE_EXPECT_MTU; senkusha->state_finished = false; senkusha->state_failed = false; senkusha->mtu_id = ++request_id; tkproto_SenkushaMtuCommand mtu_cmd = { 0 }; mtu_cmd.id = request_id; mtu_cmd.mtu_req = cur; mtu_cmd.num = 1; ChiakiErrorCode err = senkusha_send_mtu_command(senkusha, &mtu_cmd); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha failed to send MTU command"); return err; } CHIAKI_LOGI(senkusha->log, "Senkusha MTU request %u (min %u, max %u), id %u, attempt %u", (unsigned int)cur, (unsigned int)min, (unsigned int)max, (unsigned int)request_id, (unsigned int)attempt); err = chiaki_cond_timedwait_pred(&senkusha->state_cond, &senkusha->state_mutex, timeout_ms, state_finished_cond_check, senkusha); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) { CHIAKI_LOGI(senkusha->log, "Senkusha MTU %u timeout", (unsigned int)cur); continue; } if(senkusha->should_stop) return CHIAKI_ERR_CANCELED; else CHIAKI_LOGE(senkusha->log, "Senkusha failed to receive MTU response"); } CHIAKI_LOGI(senkusha->log, "Senkusha MTU %u success", (unsigned int)cur); success = true; break; } if(success) min = cur; else max = cur; cur = min + (max - min) / 2; } CHIAKI_LOGI(senkusha->log, "Senkusha determined inbound MTU %u", (unsigned int)min); *mtu = min; return CHIAKI_ERR_SUCCESS; } static ChiakiErrorCode senkusha_run_mtu_out_test(ChiakiSenkusha *senkusha, uint32_t mtu_in, uint32_t min, uint32_t max, uint32_t retries, uint64_t timeout_ms, uint32_t *mtu) { if(min < 8 + MTU_PING_DATA_ADD || max < min || mtu_in < min || mtu_in > max) return CHIAKI_ERR_INVALID_DATA; CHIAKI_LOGI(senkusha->log, "Senkusha starting MTU out test with min %u, max %u, retries %u, timeout %llu ms", (unsigned int)min, (unsigned int)max, (unsigned int)retries, (unsigned long long)timeout_ms); senkusha->state = STATE_EXPECT_CLIENT_MTU_COMMAND; senkusha->state_finished = false; senkusha->state_failed = false; senkusha->mtu_id = 1; tkproto_SenkushaClientMtuCommand client_mtu_cmd; client_mtu_cmd.id = senkusha->mtu_id; client_mtu_cmd.state = true; client_mtu_cmd.mtu_req = mtu_in; client_mtu_cmd.has_mtu_down = true; client_mtu_cmd.mtu_down = mtu_in; ChiakiErrorCode err = senkusha_send_client_mtu_command(senkusha, &client_mtu_cmd, false); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha failed to send client MTU command"); return err; } CHIAKI_LOGI(senkusha->log, "Senkusha sent initial client MTU command"); err = chiaki_cond_timedwait_pred(&senkusha->state_cond, &senkusha->state_mutex, EXPECT_TIMEOUT_MS, state_finished_cond_check, senkusha); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) { CHIAKI_LOGE(senkusha->log, "Senkusha Client MTU Command from server receive timeout"); return err; } if(senkusha->should_stop) return CHIAKI_ERR_CANCELED; else CHIAKI_LOGE(senkusha->log, "Senkusha failed to receive Client MTU command"); return CHIAKI_ERR_UNKNOWN; } size_t packet_buf_size = max - MTU_UDP_PACKET_ADD; uint8_t *packet_buf = malloc(packet_buf_size); if(!packet_buf) return CHIAKI_ERR_MEMORY; memset(packet_buf, 0, MTU_AV_PACKET_ADD + 8); static const char padding[] = { 'C', 'H', 'I', 'A', 'K', 'I' }; for(size_t i=0; i 1) { bool success = false; for(uint32_t attempt=0; attemptstate = STATE_EXPECT_PONG; senkusha->state_finished = false; senkusha->state_failed = false; senkusha->ping_tag = tag; senkusha->ping_test_index = 0; senkusha->ping_index = (uint16_t)attempt; ChiakiTakionAVPacket av_packet = { 0 }; av_packet.codec = 0xff; av_packet.is_video = false; av_packet.frame_index = senkusha->ping_test_index; av_packet.unit_index = senkusha->ping_index; av_packet.units_in_frame_total = 0x800; size_t header_size; err = chiaki_takion_v7_av_packet_format_header(packet_buf, packet_buf_size, &header_size, &av_packet); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha failed to format AV Header"); return err; } assert(header_size == MTU_AV_PACKET_ADD); *((chiaki_unaligned_uint32_t *)(packet_buf + MTU_AV_PACKET_ADD)) = 0; *((chiaki_unaligned_uint32_t *)(packet_buf + MTU_AV_PACKET_ADD + 4)) = htonl(tag); CHIAKI_LOGI(senkusha->log, "Senkusha MTU %u out ping attempt %u", (unsigned int)cur, (unsigned int)attempt); err = chiaki_takion_send_raw(&senkusha->takion, packet_buf, cur - MTU_UDP_PACKET_ADD); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha failed to send ping"); err = CHIAKI_ERR_TIMEOUT; } else { err = chiaki_cond_timedwait_pred(&senkusha->state_cond, &senkusha->state_mutex, timeout_ms, state_finished_cond_check, senkusha); } assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) { CHIAKI_LOGI(senkusha->log, "Senkusha MTU pong %u timeout", (unsigned int)cur); continue; } if(senkusha->should_stop) { err = CHIAKI_ERR_CANCELED; goto beach; } else CHIAKI_LOGE(senkusha->log, "Senkusha failed to receive MTU pong"); } CHIAKI_LOGI(senkusha->log, "Senkusha MTU ping %u success", (unsigned int)cur); success = true; break; } if(success) min = cur; else max = cur; cur = min + (max - min) / 2; } CHIAKI_LOGI(senkusha->log, "Senkusha determined outbound MTU %u", (unsigned int)min); *mtu = min; CHIAKI_LOGI(senkusha->log, "Senkusha sending final Client MTU Command"); client_mtu_cmd.id = 2; client_mtu_cmd.state = false; client_mtu_cmd.mtu_req = max; client_mtu_cmd.has_mtu_down = true; client_mtu_cmd.mtu_down = mtu_in; err = senkusha_send_client_mtu_command(senkusha, &client_mtu_cmd, true); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(senkusha->log, "Senkusha failed to send client MTU command"); beach: free(packet_buf); return err; } static void senkusha_takion_cb(ChiakiTakionEvent *event, void *user) { ChiakiSenkusha *senkusha = user; switch(event->type) { case CHIAKI_TAKION_EVENT_TYPE_CONNECTED: case CHIAKI_TAKION_EVENT_TYPE_DISCONNECT: chiaki_mutex_lock(&senkusha->state_mutex); if(senkusha->state == STATE_TAKION_CONNECT) { senkusha->state_finished = event->type == CHIAKI_TAKION_EVENT_TYPE_CONNECTED; senkusha->state_failed = event->type == CHIAKI_TAKION_EVENT_TYPE_DISCONNECT; chiaki_cond_signal(&senkusha->state_cond); } chiaki_mutex_unlock(&senkusha->state_mutex); break; case CHIAKI_TAKION_EVENT_TYPE_DATA: senkusha_takion_data(senkusha, event->data.data_type, event->data.buf, event->data.buf_size); break; case CHIAKI_TAKION_EVENT_TYPE_DATA_ACK: senkusha_takion_data_ack(senkusha, event->data_ack.seq_num); break; case CHIAKI_TAKION_EVENT_TYPE_AV: senkusha_takion_av(senkusha, event->av); break; default: break; } } static void senkusha_takion_data(ChiakiSenkusha *senkusha, ChiakiTakionMessageDataType data_type, uint8_t *buf, size_t buf_size) { if(data_type != CHIAKI_TAKION_MESSAGE_DATA_TYPE_PROTOBUF) return; tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); pb_istream_t stream = pb_istream_from_buffer(buf, buf_size); bool r = pb_decode(&stream, tkproto_TakionMessage_fields, &msg); if(!r) { CHIAKI_LOGE(senkusha->log, "Senkusha failed to decode data protobuf"); return; } chiaki_mutex_lock(&senkusha->state_mutex); if(senkusha->state == STATE_EXPECT_BANG) { if(msg.type != tkproto_TakionMessage_PayloadType_BANG || !msg.has_bang_payload) { CHIAKI_LOGE(senkusha->log, "Senkusha expected bang payload but received something else"); } else { senkusha->state_finished = true; chiaki_cond_signal(&senkusha->state_cond); } } else if(senkusha->state == STATE_EXPECT_CLIENT_MTU_COMMAND) { if(msg.type != tkproto_TakionMessage_PayloadType_SENKUSHA || !msg.has_senkusha_payload || msg.senkusha_payload.command != tkproto_SenkushaPayload_Command_CLIENT_MTU_COMMAND || !msg.senkusha_payload.has_client_mtu_command || msg.senkusha_payload.client_mtu_command.id != senkusha->mtu_id) { // There might be another MTU_COMMAND from the server, which we ignore, but this is not an error. if(msg.type != tkproto_TakionMessage_PayloadType_SENKUSHA || !msg.has_senkusha_payload || msg.senkusha_payload.command != tkproto_SenkushaPayload_Command_MTU_COMMAND) { CHIAKI_LOGE(senkusha->log, "Senkusha expected Client MTU Command with matching id but received something else"); } } else { CHIAKI_LOGI(senkusha->log, "Senkusha received expected Client MTU Command"); senkusha->state_finished = true; chiaki_cond_signal(&senkusha->state_cond); } } chiaki_mutex_unlock(&senkusha->state_mutex); } static void senkusha_takion_data_ack(ChiakiSenkusha *senkusha, ChiakiSeqNum32 seq_num) { chiaki_mutex_lock(&senkusha->state_mutex); if(senkusha->state == STATE_EXPECT_DATA_ACK && senkusha->data_ack_seq_num_expected == seq_num) { senkusha->state_finished = true; chiaki_mutex_unlock(&senkusha->state_mutex); chiaki_cond_signal(&senkusha->state_cond); } else chiaki_mutex_unlock(&senkusha->state_mutex); } static void senkusha_takion_av(ChiakiSenkusha *senkusha, ChiakiTakionAVPacket *packet) { uint64_t time_us = chiaki_time_now_monotonic_us(); ChiakiErrorCode err = chiaki_mutex_lock(&senkusha->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); if(senkusha->state == STATE_EXPECT_PONG) { if(packet->is_video || packet->frame_index != senkusha->ping_test_index || packet->unit_index != senkusha->ping_index || packet->data_size < 8) { CHIAKI_LOGW(senkusha->log, "Senkusha received invalid Pong %u/%u, size: %#llx", (unsigned int)packet->frame_index, (unsigned int)packet->unit_index, (unsigned long long)packet->data_size); goto beach; } uint32_t tag = ntohl(*((uint32_t *)(packet->data + 4))); if(tag != senkusha->ping_tag) { CHIAKI_LOGW(senkusha->log, "Senkusha received Pong with invalid tag"); goto beach; } senkusha->pong_time_us = time_us; senkusha->state_finished = true; chiaki_mutex_unlock(&senkusha->state_mutex); chiaki_cond_signal(&senkusha->state_cond); return; } else if(senkusha->state == STATE_EXPECT_MTU) { //CHIAKI_LOGD(senkusha->log, "Senkusha received av while expecting mtu"); //chiaki_log_hexdump(senkusha->log, CHIAKI_LOG_DEBUG, packet->data, packet->data_size); //CHIAKI_LOGD(senkusha->log, "packet index: %u, frame index: %u, unit index: %u, units in frame: %u", packet->packet_index, packet->frame_index, packet->unit_index, packet->units_in_frame_total); if(!packet->is_video || packet->frame_index != senkusha->mtu_id) { CHIAKI_LOGW(senkusha->log, "Senkusha received invalid MTU response %u, size: %#llx, is video: %d", (unsigned int)packet->frame_index, (unsigned long long)packet->data_size, packet->is_video ? 1 : 0); goto beach; } senkusha->state_finished = true; chiaki_mutex_unlock(&senkusha->state_mutex); chiaki_cond_signal(&senkusha->state_cond); return; } beach: chiaki_mutex_unlock(&senkusha->state_mutex); } static ChiakiErrorCode senkusha_send_big(ChiakiSenkusha *senkusha) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_BIG; msg.has_big_payload = true; msg.big_payload.client_version = 7; msg.big_payload.session_key.arg = ""; msg.big_payload.session_key.funcs.encode = chiaki_pb_encode_string; msg.big_payload.launch_spec.arg = ""; msg.big_payload.launch_spec.funcs.encode = chiaki_pb_encode_string; msg.big_payload.encrypted_key.arg = ""; msg.big_payload.encrypted_key.funcs.encode = chiaki_pb_encode_string; uint8_t buf[12]; size_t buf_size; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(senkusha->log, "Senkusha big protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } buf_size = stream.bytes_written; ChiakiErrorCode err = chiaki_takion_send_message_data(&senkusha->takion, 1, 1, buf, buf_size, NULL); return err; } static ChiakiErrorCode senkusha_send_disconnect(ChiakiSenkusha *senkusha) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_DISCONNECT; msg.has_disconnect_payload = true; msg.disconnect_payload.reason.arg = "Client Disconnecting"; msg.disconnect_payload.reason.funcs.encode = chiaki_pb_encode_string; uint8_t buf[26]; size_t buf_size; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(senkusha->log, "Senkusha disconnect protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } buf_size = stream.bytes_written; ChiakiErrorCode err = chiaki_takion_send_message_data(&senkusha->takion, 1, 1, buf, buf_size, NULL); return err; } static ChiakiErrorCode senkusha_send_echo_command(ChiakiSenkusha *senkusha, bool enable) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_SENKUSHA; msg.has_senkusha_payload = true; msg.senkusha_payload.command = tkproto_SenkushaPayload_Command_ECHO_COMMAND; msg.senkusha_payload.has_echo_command = true; msg.senkusha_payload.echo_command.state = enable; uint8_t buf[0x10]; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(senkusha->log, "Senkusha echo command protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } return senkusha_send_data_wait_for_ack(senkusha, buf, stream.bytes_written); } static ChiakiErrorCode senkusha_send_mtu_command(ChiakiSenkusha *senkusha, tkproto_SenkushaMtuCommand *command) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_SENKUSHA; msg.has_senkusha_payload = true; msg.senkusha_payload.command = tkproto_SenkushaPayload_Command_MTU_COMMAND; msg.senkusha_payload.has_mtu_command = true; memcpy(&msg.senkusha_payload.mtu_command, command, sizeof(msg.senkusha_payload.mtu_command)); uint8_t buf[0x20]; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(senkusha->log, "Senkusha mtu command protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } return chiaki_takion_send_message_data(&senkusha->takion, 1, 8, buf, stream.bytes_written, NULL); } static ChiakiErrorCode senkusha_send_client_mtu_command(ChiakiSenkusha *senkusha, tkproto_SenkushaClientMtuCommand *command, bool wait_for_ack) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_SENKUSHA; msg.has_senkusha_payload = true; msg.senkusha_payload.command = tkproto_SenkushaPayload_Command_CLIENT_MTU_COMMAND; msg.senkusha_payload.has_client_mtu_command = true; memcpy(&msg.senkusha_payload.client_mtu_command, command, sizeof(msg.senkusha_payload.client_mtu_command)); uint8_t buf[0x20]; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(senkusha->log, "Senkusha client mtu command protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } if(!wait_for_ack) return chiaki_takion_send_message_data(&senkusha->takion, 1, 8, buf, stream.bytes_written, NULL); return senkusha_send_data_wait_for_ack(senkusha, buf, stream.bytes_written); } static ChiakiErrorCode senkusha_send_data_wait_for_ack(ChiakiSenkusha *senkusha, uint8_t *buf, size_t buf_size) { senkusha->state = STATE_EXPECT_DATA_ACK; senkusha->state_finished = false; senkusha->state_failed = false; ChiakiErrorCode err = chiaki_takion_send_message_data(&senkusha->takion, 1, 8, buf, buf_size, &senkusha->data_ack_seq_num_expected); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(senkusha->log, "Senkusha failed to send echo command"); return err; } err = chiaki_cond_timedwait_pred(&senkusha->state_cond, &senkusha->state_mutex, EXPECT_TIMEOUT_MS, state_finished_cond_check, senkusha); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); if(!senkusha->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) CHIAKI_LOGE(senkusha->log, "Senkusha data ack for echo command receive timeout"); if(senkusha->should_stop) err = CHIAKI_ERR_CANCELED; else CHIAKI_LOGE(senkusha->log, "Senkusha failed to receive data ack for echo command"); } return err; } chiaki-v2.2.0/lib/src/session.c000066400000000000000000000647661447035777400163620ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #define strcasecmp _stricmp #else #include #include #include #endif #include "utils.h" #define SESSION_PORT 9295 #define SESSION_EXPECT_TIMEOUT_MS 5000 static void *session_thread_func(void *arg); static ChiakiErrorCode session_thread_request_session(ChiakiSession *session, ChiakiTarget *target_out); const char *chiaki_rp_application_reason_string(uint32_t reason) { switch(reason) { case CHIAKI_RP_APPLICATION_REASON_REGIST_FAILED: return "Regist failed, probably invalid PIN"; case CHIAKI_RP_APPLICATION_REASON_INVALID_PSN_ID: return "Invalid PSN ID"; case CHIAKI_RP_APPLICATION_REASON_IN_USE: return "Remote is already in use"; case CHIAKI_RP_APPLICATION_REASON_CRASH: return "Remote Play on Console crashed"; case CHIAKI_RP_APPLICATION_REASON_RP_VERSION: return "RP-Version mismatch"; default: return "unknown"; } } const char *chiaki_rp_version_string(ChiakiTarget version) { switch(version) { case CHIAKI_TARGET_PS4_8: return "8.0"; case CHIAKI_TARGET_PS4_9: return "9.0"; case CHIAKI_TARGET_PS4_10: return "10.0"; case CHIAKI_TARGET_PS5_1: return "1.0"; default: return NULL; } } CHIAKI_EXPORT ChiakiTarget chiaki_rp_version_parse(const char *rp_version_str, bool is_ps5) { if(is_ps5) { if(!strcmp(rp_version_str, "1.0")) return CHIAKI_TARGET_PS5_1; return CHIAKI_TARGET_PS5_UNKNOWN; } if(!strcmp(rp_version_str, "8.0")) return CHIAKI_TARGET_PS4_8; if(!strcmp(rp_version_str, "9.0")) return CHIAKI_TARGET_PS4_9; if(!strcmp(rp_version_str, "10.0")) return CHIAKI_TARGET_PS4_10; return CHIAKI_TARGET_PS4_UNKNOWN; } CHIAKI_EXPORT void chiaki_connect_video_profile_preset(ChiakiConnectVideoProfile *profile, ChiakiVideoResolutionPreset resolution, ChiakiVideoFPSPreset fps) { profile->codec = CHIAKI_CODEC_H264; switch(resolution) { case CHIAKI_VIDEO_RESOLUTION_PRESET_360p: profile->width = 640; profile->height = 360; profile->bitrate = 2000; break; case CHIAKI_VIDEO_RESOLUTION_PRESET_540p: profile->width = 960; profile->height = 540; profile->bitrate = 6000; break; case CHIAKI_VIDEO_RESOLUTION_PRESET_720p: profile->width = 1280; profile->height = 720; profile->bitrate = 10000; break; case CHIAKI_VIDEO_RESOLUTION_PRESET_1080p: profile->width = 1920; profile->height = 1080; profile->bitrate = 15000; break; default: profile->width = 0; profile->height = 0; profile->bitrate = 0; break; } switch(fps) { case CHIAKI_VIDEO_FPS_PRESET_30: profile->max_fps = 30; break; case CHIAKI_VIDEO_FPS_PRESET_60: profile->max_fps = 60; break; default: profile->max_fps = 0; break; } } CHIAKI_EXPORT const char *chiaki_quit_reason_string(ChiakiQuitReason reason) { switch(reason) { case CHIAKI_QUIT_REASON_STOPPED: return "Stopped"; case CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN: return "Unknown Session Request Error"; case CHIAKI_QUIT_REASON_SESSION_REQUEST_CONNECTION_REFUSED: return "Connection Refused in Session Request"; case CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_IN_USE: return "Remote Play on Console is already in use"; case CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_CRASH: return "Remote Play on Console has crashed"; case CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_VERSION_MISMATCH: return "RP-Version mismatch"; case CHIAKI_QUIT_REASON_CTRL_UNKNOWN: return "Unknown Ctrl Error"; case CHIAKI_QUIT_REASON_CTRL_CONNECTION_REFUSED: return "Connection Refused in Ctrl"; case CHIAKI_QUIT_REASON_CTRL_CONNECT_FAILED: return "Ctrl failed to connect"; case CHIAKI_QUIT_REASON_STREAM_CONNECTION_UNKNOWN: return "Unknown Error in Stream Connection"; case CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED: return "Remote has disconnected from Stream Connection"; case CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_SHUTDOWN: return "Remote has disconnected from Stream Connection the because Server shut down"; case CHIAKI_QUIT_REASON_NONE: default: return "Unknown"; } } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_init(ChiakiSession *session, ChiakiConnectInfo *connect_info, ChiakiLog *log) { memset(session, 0, sizeof(ChiakiSession)); session->log = log; session->quit_reason = CHIAKI_QUIT_REASON_NONE; session->target = connect_info->ps5 ? CHIAKI_TARGET_PS5_1 : CHIAKI_TARGET_PS4_10; ChiakiErrorCode err = chiaki_cond_init(&session->state_cond); if(err != CHIAKI_ERR_SUCCESS) goto error; err = chiaki_mutex_init(&session->state_mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error_state_cond; err = chiaki_stop_pipe_init(&session->stop_pipe); if(err != CHIAKI_ERR_SUCCESS) goto error_state_mutex; session->should_stop = false; session->ctrl_session_id_received = false; session->ctrl_login_pin_requested = false; session->login_pin_entered = false; session->login_pin = NULL; session->login_pin_size = 0; err = chiaki_ctrl_init(&session->ctrl, session); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Ctrl init failed"); goto error_stop_pipe; } err = chiaki_stream_connection_init(&session->stream_connection, session); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "StreamConnection init failed"); goto error_ctrl; } int r = getaddrinfo(connect_info->host, NULL, NULL, &session->connect_info.host_addrinfos); if(r != 0) { chiaki_session_fini(session); return CHIAKI_ERR_PARSE_ADDR; } chiaki_controller_state_set_idle(&session->controller_state); session->connect_info.ps5 = connect_info->ps5; memcpy(session->connect_info.regist_key, connect_info->regist_key, sizeof(session->connect_info.regist_key)); memcpy(session->connect_info.morning, connect_info->morning, sizeof(session->connect_info.morning)); const uint8_t did_prefix[] = { 0x00, 0x18, 0x00, 0x00, 0x00, 0x07, 0x00, 0x40, 0x00, 0x80 }; const uint8_t did_suffix[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; memcpy(session->connect_info.did, did_prefix, sizeof(did_prefix)); chiaki_random_bytes_crypt(session->connect_info.did + sizeof(did_prefix), sizeof(session->connect_info.did) - sizeof(did_prefix) - sizeof(did_suffix)); memcpy(session->connect_info.did + sizeof(session->connect_info.did) - sizeof(did_suffix), did_suffix, sizeof(did_suffix)); session->connect_info.video_profile = connect_info->video_profile; session->connect_info.video_profile_auto_downgrade = connect_info->video_profile_auto_downgrade; session->connect_info.enable_keyboard = connect_info->enable_keyboard; session->connect_info.enable_dualsense = connect_info->enable_dualsense; return CHIAKI_ERR_SUCCESS; error_stop_pipe: chiaki_stop_pipe_fini(&session->stop_pipe); error_ctrl: chiaki_ctrl_fini(&session->ctrl); error_state_mutex: chiaki_mutex_fini(&session->state_mutex); error_state_cond: chiaki_cond_fini(&session->state_cond); error: return err; } CHIAKI_EXPORT void chiaki_session_fini(ChiakiSession *session) { if(!session) return; free(session->login_pin); free(session->quit_reason_str); chiaki_stream_connection_fini(&session->stream_connection); chiaki_ctrl_fini(&session->ctrl); chiaki_stop_pipe_fini(&session->stop_pipe); chiaki_cond_fini(&session->state_cond); chiaki_mutex_fini(&session->state_mutex); freeaddrinfo(session->connect_info.host_addrinfos); } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_start(ChiakiSession *session) { ChiakiErrorCode err = chiaki_thread_create(&session->session_thread, session_thread_func, session); if(err != CHIAKI_ERR_SUCCESS) return err; chiaki_thread_set_name(&session->session_thread, "Chiaki Session"); return err; } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_stop(ChiakiSession *session) { ChiakiErrorCode err = chiaki_mutex_lock(&session->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); session->should_stop = true; chiaki_stop_pipe_stop(&session->stop_pipe); chiaki_cond_signal(&session->state_cond); chiaki_stream_connection_stop(&session->stream_connection); chiaki_mutex_unlock(&session->state_mutex); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_join(ChiakiSession *session) { return chiaki_thread_join(&session->session_thread, NULL); } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_set_controller_state(ChiakiSession *session, ChiakiControllerState *state) { ChiakiErrorCode err = chiaki_mutex_lock(&session->stream_connection.feedback_sender_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; session->controller_state = *state; if(session->stream_connection.feedback_sender_active) chiaki_feedback_sender_set_controller_state(&session->stream_connection.feedback_sender, &session->controller_state); chiaki_mutex_unlock(&session->stream_connection.feedback_sender_mutex); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_set_login_pin(ChiakiSession *session, const uint8_t *pin, size_t pin_size) { uint8_t *buf = malloc(pin_size); if(!buf) return CHIAKI_ERR_MEMORY; memcpy(buf, pin, pin_size); ChiakiErrorCode err = chiaki_mutex_lock(&session->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); if(session->login_pin_entered) free(session->login_pin); session->login_pin_entered = true; session->login_pin = buf; session->login_pin_size = pin_size; chiaki_mutex_unlock(&session->state_mutex); chiaki_cond_signal(&session->state_cond); return CHIAKI_ERR_SUCCESS; } void chiaki_session_send_event(ChiakiSession *session, ChiakiEvent *event) { if(!session->event_cb) return; session->event_cb(event, session->event_cb_user); } static bool session_check_state_pred(void *user) { ChiakiSession *session = user; return session->should_stop || session->ctrl_failed; } static bool session_check_state_pred_ctrl_start(void *user) { ChiakiSession *session = user; return session->should_stop || session->ctrl_failed || session->ctrl_session_id_received || session->ctrl_login_pin_requested; } static bool session_check_state_pred_pin(void *user) { ChiakiSession *session = user; return session->should_stop || session->ctrl_failed || session->login_pin_entered; } #define ENABLE_SENKUSHA static void *session_thread_func(void *arg) { ChiakiSession *session = arg; chiaki_mutex_lock(&session->state_mutex); #define QUIT(quit_label) do { \ chiaki_mutex_unlock(&session->state_mutex); \ goto quit_label; } while(0) #define CHECK_STOP(quit_label) do { \ if(session->should_stop) \ { \ session->quit_reason = CHIAKI_QUIT_REASON_STOPPED; \ QUIT(quit_label); \ } } while(0) CHECK_STOP(quit); CHIAKI_LOGI(session->log, "Starting session request for %s", session->connect_info.ps5 ? "PS5" : "PS4"); ChiakiTarget server_target = CHIAKI_TARGET_PS4_UNKNOWN; ChiakiErrorCode err = session_thread_request_session(session, &server_target); if(err == CHIAKI_ERR_VERSION_MISMATCH && !chiaki_target_is_unknown(server_target)) { CHIAKI_LOGI(session->log, "Attempting to re-request session with Server's RP-Version"); session->target = server_target; err = session_thread_request_session(session, &server_target); } else if(err != CHIAKI_ERR_SUCCESS) QUIT(quit); if(err == CHIAKI_ERR_VERSION_MISMATCH && !chiaki_target_is_unknown(server_target)) { CHIAKI_LOGI(session->log, "Attempting to re-request session even harder with Server's RP-Version!!!"); session->target = server_target; err = session_thread_request_session(session, NULL); } else if(err != CHIAKI_ERR_SUCCESS) QUIT(quit); if(err != CHIAKI_ERR_SUCCESS) QUIT(quit); CHIAKI_LOGI(session->log, "Session request successful"); chiaki_rpcrypt_init_auth(&session->rpcrypt, session->target, session->nonce, session->connect_info.morning); // PS4 doesn't always react right away, sleep a bit chiaki_cond_timedwait_pred(&session->state_cond, &session->state_mutex, 10, session_check_state_pred, session); CHIAKI_LOGI(session->log, "Starting ctrl"); err = chiaki_ctrl_start(&session->ctrl); if(err != CHIAKI_ERR_SUCCESS) QUIT(quit); chiaki_cond_timedwait_pred(&session->state_cond, &session->state_mutex, SESSION_EXPECT_TIMEOUT_MS, session_check_state_pred_ctrl_start, session); CHECK_STOP(quit_ctrl); if(session->ctrl_failed) { CHIAKI_LOGE(session->log, "Ctrl has failed while waiting for ctrl startup"); goto ctrl_failed; } bool pin_incorrect = false; while(session->ctrl_login_pin_requested) { session->ctrl_login_pin_requested = false; if(pin_incorrect) CHIAKI_LOGI(session->log, "Login PIN was incorrect, requested again by Ctrl"); else CHIAKI_LOGI(session->log, "Ctrl requested Login PIN"); ChiakiEvent event = { 0 }; event.type = CHIAKI_EVENT_LOGIN_PIN_REQUEST; event.login_pin_request.pin_incorrect = pin_incorrect; chiaki_session_send_event(session, &event); pin_incorrect = true; chiaki_cond_timedwait_pred(&session->state_cond, &session->state_mutex, UINT64_MAX, session_check_state_pred_pin, session); CHECK_STOP(quit_ctrl); if(session->ctrl_failed) { CHIAKI_LOGE(session->log, "Ctrl has failed while waiting for PIN entry"); goto ctrl_failed; } assert(session->login_pin_entered && session->login_pin); CHIAKI_LOGI(session->log, "Session received entered Login PIN, forwarding to Ctrl"); chiaki_ctrl_set_login_pin(&session->ctrl, session->login_pin, session->login_pin_size); session->login_pin_entered = false; free(session->login_pin); session->login_pin = NULL; session->login_pin_size = 0; // wait for session id again chiaki_cond_timedwait_pred(&session->state_cond, &session->state_mutex, SESSION_EXPECT_TIMEOUT_MS, session_check_state_pred_ctrl_start, session); CHECK_STOP(quit_ctrl); } if(!session->ctrl_session_id_received) { CHIAKI_LOGE(session->log, "Ctrl did not receive session id"); ctrl_failed: CHIAKI_LOGE(session->log, "Ctrl has failed, shutting down"); if(session->quit_reason == CHIAKI_QUIT_REASON_NONE) session->quit_reason = CHIAKI_QUIT_REASON_CTRL_UNKNOWN; QUIT(quit_ctrl); } #ifdef ENABLE_SENKUSHA CHIAKI_LOGI(session->log, "Starting Senkusha"); ChiakiSenkusha senkusha; err = chiaki_senkusha_init(&senkusha, session); if(err != CHIAKI_ERR_SUCCESS) QUIT(quit_ctrl); err = chiaki_senkusha_run(&senkusha, &session->mtu_in, &session->mtu_out, &session->rtt_us); chiaki_senkusha_fini(&senkusha); if(err == CHIAKI_ERR_SUCCESS) CHIAKI_LOGI(session->log, "Senkusha completed successfully"); else if(err == CHIAKI_ERR_CANCELED) QUIT(quit_ctrl); else { CHIAKI_LOGE(session->log, "Senkusha failed, but we still try to connect with fallback values"); session->mtu_in = 1454; session->mtu_out = 1454; session->rtt_us = 1000; } #endif err = chiaki_random_bytes_crypt(session->handshake_key, sizeof(session->handshake_key)); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Session failed to generate handshake key"); QUIT(quit_ctrl); } err = chiaki_ecdh_init(&session->ecdh); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Session failed to initialize ECDH"); QUIT(quit_ctrl); } chiaki_mutex_unlock(&session->state_mutex); err = chiaki_stream_connection_run(&session->stream_connection); chiaki_mutex_lock(&session->state_mutex); if(err == CHIAKI_ERR_DISCONNECTED) { CHIAKI_LOGE(session->log, "Remote disconnected from StreamConnection"); if(!strcmp(session->stream_connection.remote_disconnect_reason, "Server shutting down")) session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_SHUTDOWN; else session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_REMOTE_DISCONNECTED; session->quit_reason_str = strdup(session->stream_connection.remote_disconnect_reason); } else if(err != CHIAKI_ERR_SUCCESS && err != CHIAKI_ERR_CANCELED) { CHIAKI_LOGE(session->log, "StreamConnection run failed"); session->quit_reason = CHIAKI_QUIT_REASON_STREAM_CONNECTION_UNKNOWN; } else { CHIAKI_LOGI(session->log, "StreamConnection completed successfully"); session->quit_reason = CHIAKI_QUIT_REASON_STOPPED; } chiaki_mutex_unlock(&session->state_mutex); chiaki_ecdh_fini(&session->ecdh); quit_ctrl: chiaki_ctrl_stop(&session->ctrl); chiaki_ctrl_join(&session->ctrl); CHIAKI_LOGI(session->log, "Ctrl stopped"); ChiakiEvent quit_event; quit: CHIAKI_LOGI(session->log, "Session has quit"); quit_event.type = CHIAKI_EVENT_QUIT; quit_event.quit.reason = session->quit_reason; quit_event.quit.reason_str = session->quit_reason_str; chiaki_session_send_event(session, &quit_event); return NULL; #undef CHECK_STOP #undef QUIT } typedef struct session_response_t { uint32_t error_code; const char *nonce; const char *rp_version; bool success; } SessionResponse; static void parse_session_response(SessionResponse *response, ChiakiHttpResponse *http_response) { memset(response, 0, sizeof(SessionResponse)); for(ChiakiHttpHeader *header=http_response->headers; header; header=header->next) { if(strcmp(header->key, "RP-Nonce") == 0) response->nonce = header->value; else if(strcasecmp(header->key, "RP-Version") == 0) response->rp_version = header->value; else if(strcmp(header->key, "RP-Application-Reason") == 0) response->error_code = (uint32_t)strtoul(header->value, NULL, 0x10); } if(http_response->code == 200) response->success = response->nonce != NULL; else response->success = false; } /** * @param target_out if NULL, version mismatch means to fail the entire session, otherwise report the target here */ static ChiakiErrorCode session_thread_request_session(ChiakiSession *session, ChiakiTarget *target_out) { chiaki_socket_t session_sock = CHIAKI_INVALID_SOCKET; for(struct addrinfo *ai=session->connect_info.host_addrinfos; ai; ai=ai->ai_next) { //if(ai->ai_protocol != IPPROTO_TCP) // continue; struct sockaddr *sa = malloc(ai->ai_addrlen); if(!sa) continue; memcpy(sa, ai->ai_addr, ai->ai_addrlen); if(sa->sa_family != AF_INET && sa->sa_family != AF_INET6) { free(sa); continue; } set_port(sa, htons(SESSION_PORT)); // TODO: this can block, make cancelable somehow int r = getnameinfo(sa, (socklen_t)ai->ai_addrlen, session->connect_info.hostname, sizeof(session->connect_info.hostname), NULL, 0, NI_NUMERICHOST); if(r != 0) { CHIAKI_LOGE(session->log, "getnameinfo failed with %s, filling the hostname with fallback", gai_strerror(r)); memcpy(session->connect_info.hostname, "unknown", 8); } CHIAKI_LOGI(session->log, "Trying to request session from %s:%d", session->connect_info.hostname, SESSION_PORT); session_sock = socket(ai->ai_family, SOCK_STREAM, 0); if(CHIAKI_SOCKET_IS_INVALID(session_sock)) { #ifdef _WIN32 CHIAKI_LOGE(session->log, "Failed to create socket to request session"); #else CHIAKI_LOGE(session->log, "Failed to create socket to request session: %s", strerror(errno)); #endif free(sa); continue; } ChiakiErrorCode err = chiaki_socket_set_nonblock(session_sock, true); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(session->log, "Failed to set session socket to non-blocking: %s", chiaki_error_string(err)); chiaki_mutex_unlock(&session->state_mutex); err = chiaki_stop_pipe_connect(&session->stop_pipe, session_sock, sa, ai->ai_addrlen); chiaki_mutex_lock(&session->state_mutex); if(err == CHIAKI_ERR_CANCELED) { CHIAKI_LOGI(session->log, "Session stopped while connecting for session request"); session->quit_reason = CHIAKI_QUIT_REASON_STOPPED; CHIAKI_SOCKET_CLOSE(session_sock); session_sock = -1; free(sa); break; } else if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Session request connect failed: %s", chiaki_error_string(err)); if(err == CHIAKI_ERR_CONNECTION_REFUSED) session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_CONNECTION_REFUSED; else session->quit_reason = CHIAKI_QUIT_REASON_NONE; CHIAKI_SOCKET_CLOSE(session_sock); session_sock = -1; free(sa); continue; } free(sa); session->connect_info.host_addrinfo_selected = ai; break; } if(CHIAKI_SOCKET_IS_INVALID(session_sock)) { CHIAKI_LOGE(session->log, "Session request connect failed eventually."); if(session->quit_reason == CHIAKI_QUIT_REASON_NONE) session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return CHIAKI_ERR_NETWORK; } CHIAKI_LOGI(session->log, "Connected to %s:%d", session->connect_info.hostname, SESSION_PORT); static const char session_request_fmt[] = "GET %s HTTP/1.1\r\n" "Host: %s:%d\r\n" "User-Agent: remoteplay Windows\r\n" "Connection: close\r\n" "Content-Length: 0\r\n" "RP-Registkey: %s\r\n" "Rp-Version: %s\r\n" "\r\n"; const char *path; if(session->target == CHIAKI_TARGET_PS4_8 || session->target == CHIAKI_TARGET_PS4_9) path = "/sce/rp/session"; else if(chiaki_target_is_ps5(session->target)) path = "/sie/ps5/rp/sess/init"; else path = "/sie/ps4/rp/sess/init"; size_t regist_key_len = sizeof(session->connect_info.regist_key); for(size_t i=0; iconnect_info.regist_key[i]) { regist_key_len = i; break; } } char regist_key_hex[sizeof(session->connect_info.regist_key) * 2 + 1]; ChiakiErrorCode err = format_hex(regist_key_hex, sizeof(regist_key_hex), (uint8_t *)session->connect_info.regist_key, regist_key_len); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_SOCKET_CLOSE(session_sock); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return CHIAKI_ERR_UNKNOWN; } const char *rp_version_str = chiaki_rp_version_string(session->target); if(!rp_version_str) { CHIAKI_LOGE(session->log, "Failed to get version for target, probably invalid target value"); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return CHIAKI_ERR_INVALID_DATA; } char buf[512]; int request_len = snprintf(buf, sizeof(buf), session_request_fmt, path, session->connect_info.hostname, SESSION_PORT, regist_key_hex, rp_version_str ? rp_version_str : ""); if(request_len < 0 || request_len >= sizeof(buf)) { CHIAKI_SOCKET_CLOSE(session_sock); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return CHIAKI_ERR_UNKNOWN; } CHIAKI_LOGI(session->log, "Sending session request"); chiaki_log_hexdump(session->log, CHIAKI_LOG_VERBOSE, (uint8_t *)buf, request_len); int sent = send(session_sock, buf, (size_t)request_len, 0); if(sent < 0) { CHIAKI_LOGE(session->log, "Failed to send session request"); CHIAKI_SOCKET_CLOSE(session_sock); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return CHIAKI_ERR_NETWORK; } size_t header_size; size_t received_size; chiaki_mutex_unlock(&session->state_mutex); err = chiaki_recv_http_header(session_sock, buf, sizeof(buf), &header_size, &received_size, &session->stop_pipe, SESSION_EXPECT_TIMEOUT_MS); ChiakiErrorCode mutex_err = chiaki_mutex_lock(&session->state_mutex); assert(mutex_err == CHIAKI_ERR_SUCCESS); if(err != CHIAKI_ERR_SUCCESS) { if(err == CHIAKI_ERR_CANCELED) { session->quit_reason = CHIAKI_QUIT_REASON_STOPPED; } else { CHIAKI_LOGE(session->log, "Failed to receive session request response"); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; } CHIAKI_SOCKET_CLOSE(session_sock); return CHIAKI_ERR_NETWORK; } ChiakiHttpResponse http_response; CHIAKI_LOGV(session->log, "Session Response Header:"); chiaki_log_hexdump(session->log, CHIAKI_LOG_VERBOSE, (const uint8_t *)buf, header_size); err = chiaki_http_response_parse(&http_response, buf, header_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "Failed to parse session request response"); CHIAKI_SOCKET_CLOSE(session_sock); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; return CHIAKI_ERR_NETWORK; } SessionResponse response; parse_session_response(&response, &http_response); ChiakiErrorCode r = CHIAKI_ERR_UNKNOWN; if(response.success) { size_t nonce_len = CHIAKI_RPCRYPT_KEY_SIZE; err = chiaki_base64_decode(response.nonce, strlen(response.nonce), session->nonce, &nonce_len); if(err != CHIAKI_ERR_SUCCESS || nonce_len != CHIAKI_RPCRYPT_KEY_SIZE) { CHIAKI_LOGE(session->log, "Nonce invalid"); response.success = false; session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; } else r = CHIAKI_ERR_SUCCESS; } else if((response.error_code == CHIAKI_RP_APPLICATION_REASON_RP_VERSION || response.error_code == CHIAKI_RP_APPLICATION_REASON_UNKNOWN) && target_out && response.rp_version && strcmp(rp_version_str, response.rp_version)) { CHIAKI_LOGI(session->log, "Reported RP-Version mismatch. ours = %s, server = %s", rp_version_str ? rp_version_str : "", response.rp_version); *target_out = chiaki_rp_version_parse(response.rp_version, session->connect_info.ps5); if(!chiaki_target_is_unknown(*target_out)) CHIAKI_LOGI(session->log, "Detected Server RP-Version %s", chiaki_rp_version_string(*target_out)); else if(!strcmp(response.rp_version, "5.0")) { CHIAKI_LOGI(session->log, "Reported Server RP-Version is 5.0. This is probably nonsense, let's try with 9.0"); *target_out = CHIAKI_TARGET_PS4_9; } else { CHIAKI_LOGE(session->log, "Server RP-Version is unknown"); session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_VERSION_MISMATCH; } r = CHIAKI_ERR_VERSION_MISMATCH; } else { CHIAKI_LOGE(session->log, "Reported Application Reason: %#x (%s)", (unsigned int)response.error_code, chiaki_rp_application_reason_string(response.error_code)); switch(response.error_code) { case CHIAKI_RP_APPLICATION_REASON_IN_USE: session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_IN_USE; break; case CHIAKI_RP_APPLICATION_REASON_CRASH: session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_CRASH; break; case CHIAKI_RP_APPLICATION_REASON_RP_VERSION: session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_RP_VERSION_MISMATCH; r = CHIAKI_ERR_VERSION_MISMATCH; break; default: session->quit_reason = CHIAKI_QUIT_REASON_SESSION_REQUEST_UNKNOWN; break; } } chiaki_http_response_fini(&http_response); CHIAKI_SOCKET_CLOSE(session_sock); return r; } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_goto_bed(ChiakiSession *session) { return chiaki_ctrl_goto_bed(&session->ctrl); } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_keyboard_set_text(ChiakiSession *session, const char *text) { return chiaki_ctrl_keyboard_set_text(&session->ctrl, text); } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_keyboard_reject(ChiakiSession *session) { return chiaki_ctrl_keyboard_reject(&session->ctrl); } CHIAKI_EXPORT ChiakiErrorCode chiaki_session_keyboard_accept(ChiakiSession *session) { return chiaki_ctrl_keyboard_accept(&session->ctrl); } chiaki-v2.2.0/lib/src/sock.c000066400000000000000000000011161447035777400156120ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include CHIAKI_EXPORT ChiakiErrorCode chiaki_socket_set_nonblock(chiaki_socket_t sock, bool nonblock) { #ifdef _WIN32 u_long nbio = nonblock ? 1 : 0; if(ioctlsocket(sock, FIONBIO, &nbio) != NO_ERROR) return CHIAKI_ERR_UNKNOWN; #else int flags = fcntl(sock, F_GETFL, 0); if(flags == -1) return CHIAKI_ERR_UNKNOWN; flags = nonblock ? (flags | O_NONBLOCK) : (flags & ~O_NONBLOCK); if(fcntl(sock, F_SETFL, flags) == -1) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; }chiaki-v2.2.0/lib/src/stoppipe.c000066400000000000000000000137571447035777400165340ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #ifdef _WIN32 #include #else #include #include #include #endif CHIAKI_EXPORT ChiakiErrorCode chiaki_stop_pipe_init(ChiakiStopPipe *stop_pipe) { #ifdef _WIN32 stop_pipe->event = WSACreateEvent(); if(stop_pipe->event == WSA_INVALID_EVENT) return CHIAKI_ERR_UNKNOWN; #elif defined(__SWITCH__) // currently pipe or socketpare are not available on switch // use a custom udp socket as pipe // struct sockaddr_in addr; int addr_size = sizeof(stop_pipe->addr); stop_pipe->fd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); if(stop_pipe->fd < 0) return CHIAKI_ERR_UNKNOWN; stop_pipe->addr.sin_family = AF_INET; // bind to localhost stop_pipe->addr.sin_addr.s_addr = htonl(INADDR_LOOPBACK); // use a random port (dedicate one socket per object) stop_pipe->addr.sin_port = htons(0); // bind on localhost bind(stop_pipe->fd, (struct sockaddr *) &stop_pipe->addr, addr_size); // listen getsockname(stop_pipe->fd, (struct sockaddr *) &stop_pipe->addr, &addr_size); int r = fcntl(stop_pipe->fd, F_SETFL, O_NONBLOCK); if(r == -1) { close(stop_pipe->fd); return CHIAKI_ERR_UNKNOWN; } #else int r = pipe(stop_pipe->fds); if(r < 0) return CHIAKI_ERR_UNKNOWN; r = fcntl(stop_pipe->fds[0], F_SETFL, O_NONBLOCK); if(r == -1) { close(stop_pipe->fds[0]); close(stop_pipe->fds[1]); return CHIAKI_ERR_UNKNOWN; } #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT void chiaki_stop_pipe_fini(ChiakiStopPipe *stop_pipe) { #ifdef _WIN32 WSACloseEvent(stop_pipe->event); #elif defined(__SWITCH__) close(stop_pipe->fd); #else close(stop_pipe->fds[0]); close(stop_pipe->fds[1]); #endif } CHIAKI_EXPORT void chiaki_stop_pipe_stop(ChiakiStopPipe *stop_pipe) { #ifdef _WIN32 WSASetEvent(stop_pipe->event); #elif defined(__SWITCH__) // send to local socket (FIXME MSG_CONFIRM) sendto(stop_pipe->fd, "\x00", 1, 0, (struct sockaddr*)&stop_pipe->addr, sizeof(struct sockaddr_in)); #else write(stop_pipe->fds[1], "\x00", 1); #endif } CHIAKI_EXPORT ChiakiErrorCode chiaki_stop_pipe_select_single(ChiakiStopPipe *stop_pipe, chiaki_socket_t fd, bool write, uint64_t timeout_ms) { #ifdef _WIN32 WSAEVENT events[2]; DWORD events_count = 1; events[0] = stop_pipe->event; if(!CHIAKI_SOCKET_IS_INVALID(fd)) { events_count = 2; events[1] = WSACreateEvent(); if(events[1] == WSA_INVALID_EVENT) return CHIAKI_ERR_UNKNOWN; WSAEventSelect(fd, events[1], write ? FD_WRITE : FD_READ); } DWORD r = WSAWaitForMultipleEvents(events_count, events, FALSE, timeout_ms == UINT64_MAX ? WSA_INFINITE : (DWORD)timeout_ms, FALSE); if(events_count == 2) WSACloseEvent(events[1]); switch(r) { case WSA_WAIT_EVENT_0: return CHIAKI_ERR_CANCELED; case WSA_WAIT_EVENT_0+1: return CHIAKI_ERR_SUCCESS; case WSA_WAIT_TIMEOUT: return CHIAKI_ERR_TIMEOUT; default: return CHIAKI_ERR_UNKNOWN; } #else fd_set rfds; FD_ZERO(&rfds); #if defined(__SWITCH__) // push udp local socket as fd int stop_fd = stop_pipe->fd; #else int stop_fd = stop_pipe->fds[0]; #endif FD_SET(stop_fd, &rfds); int nfds = stop_fd; fd_set wfds; FD_ZERO(&wfds); if(!CHIAKI_SOCKET_IS_INVALID(fd)) { FD_SET(fd, write ? &wfds : &rfds); if(fd > nfds) nfds = fd; } nfds++; struct timeval timeout_s; struct timeval *timeout = NULL; if(timeout_ms != UINT64_MAX) { timeout_s.tv_sec = timeout_ms / 1000; timeout_s.tv_usec = (timeout_ms % 1000) * 1000; timeout = &timeout_s; } int r; do { r = select(nfds, &rfds, write ? &wfds : NULL, NULL, timeout); } while(r < 0 && errno == EINTR); if(r < 0) return CHIAKI_ERR_UNKNOWN; if(FD_ISSET(stop_fd, &rfds)) return CHIAKI_ERR_CANCELED; if(!CHIAKI_SOCKET_IS_INVALID(fd) && FD_ISSET(fd, write ? &wfds : &rfds)) return CHIAKI_ERR_SUCCESS; return CHIAKI_ERR_TIMEOUT; #endif } CHIAKI_EXPORT ChiakiErrorCode chiaki_stop_pipe_connect(ChiakiStopPipe *stop_pipe, chiaki_socket_t fd, struct sockaddr *addr, size_t addrlen) { int r = connect(fd, addr, (socklen_t)addrlen); if(r >= 0) return CHIAKI_ERR_SUCCESS; if(CHIAKI_SOCKET_EINPROGRESS) { ChiakiErrorCode err = chiaki_stop_pipe_select_single(stop_pipe, fd, true, UINT64_MAX); if(err != CHIAKI_ERR_SUCCESS) return err; } else { #ifdef _WIN32 int err = WSAGetLastError(); if(err == WSAECONNREFUSED) return CHIAKI_ERR_CONNECTION_REFUSED; else return CHIAKI_ERR_NETWORK; #else if(errno == ECONNREFUSED) return CHIAKI_ERR_CONNECTION_REFUSED; else return CHIAKI_ERR_NETWORK; #endif } struct sockaddr peer; socklen_t peerlen = sizeof(peer); if(getpeername(fd, &peer, &peerlen) == 0) return CHIAKI_ERR_SUCCESS; if(errno != ENOTCONN) return CHIAKI_ERR_UNKNOWN; #ifdef _WIN32 DWORD sockerr; #else int sockerr; #endif socklen_t sockerr_sz = sizeof(sockerr); if(getsockopt(fd, SOL_SOCKET, SO_ERROR, &sockerr, &sockerr_sz) < 0) return CHIAKI_ERR_UNKNOWN; #ifdef _WIN32 switch(sockerr) { case WSAETIMEDOUT: return CHIAKI_ERR_TIMEOUT; case WSAECONNREFUSED: return CHIAKI_ERR_CONNECTION_REFUSED; case WSAEHOSTDOWN: return CHIAKI_ERR_HOST_DOWN; case WSAEHOSTUNREACH: return CHIAKI_ERR_HOST_UNREACH; default: return CHIAKI_ERR_UNKNOWN; } #else switch(sockerr) { case ETIMEDOUT: return CHIAKI_ERR_TIMEOUT; case ECONNREFUSED: return CHIAKI_ERR_CONNECTION_REFUSED; case EHOSTDOWN: return CHIAKI_ERR_HOST_DOWN; case EHOSTUNREACH: return CHIAKI_ERR_HOST_UNREACH; default: return CHIAKI_ERR_UNKNOWN; } #endif } CHIAKI_EXPORT ChiakiErrorCode chiaki_stop_pipe_reset(ChiakiStopPipe *stop_pipe) { #ifdef _WIN32 BOOL r = WSAResetEvent(stop_pipe->event); return r ? CHIAKI_ERR_SUCCESS : CHIAKI_ERR_UNKNOWN; #elif defined(__SWITCH__) //FIXME uint8_t v; int r; while((r = read(stop_pipe->fd, &v, sizeof(v))) > 0); return r < 0 ? CHIAKI_ERR_UNKNOWN : CHIAKI_ERR_SUCCESS; #else uint8_t v; int r; while((r = read(stop_pipe->fds[0], &v, sizeof(v))) > 0); return r < 0 ? CHIAKI_ERR_UNKNOWN : CHIAKI_ERR_SUCCESS; #endif } chiaki-v2.2.0/lib/src/streamconnection.c000066400000000000000000001066461447035777400202440ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "chiaki/common.h" #include #include #include #include #include #include #include #include #ifndef _WIN32 #include #include #include #include #endif #include #include #include #include #include "utils.h" #include "pb_utils.h" #define STREAM_CONNECTION_PORT 9296 #define EXPECT_TIMEOUT_MS 5000 #define HEARTBEAT_INTERVAL_MS 1000 typedef enum { STATE_IDLE, STATE_TAKION_CONNECT, STATE_EXPECT_BANG, STATE_EXPECT_STREAMINFO } StreamConnectionState; void chiaki_session_send_event(ChiakiSession *session, ChiakiEvent *event); static void stream_connection_takion_cb(ChiakiTakionEvent *event, void *user); static void stream_connection_takion_data(ChiakiStreamConnection *stream_connection, ChiakiTakionMessageDataType data_type, uint8_t *buf, size_t buf_size); static void stream_connection_takion_data_protobuf(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size); static void stream_connection_takion_data_rumble(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size); static void stream_connection_takion_data_trigger_effects(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size); static ChiakiErrorCode stream_connection_send_big(ChiakiStreamConnection *stream_connection); static ChiakiErrorCode stream_connection_send_controller_connection(ChiakiStreamConnection *stream_connection); static ChiakiErrorCode stream_connection_send_disconnect(ChiakiStreamConnection *stream_connection); static void stream_connection_takion_data_idle(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size); static void stream_connection_takion_data_expect_bang(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size); static void stream_connection_takion_data_expect_streaminfo(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size); static ChiakiErrorCode stream_connection_send_streaminfo_ack(ChiakiStreamConnection *stream_connection); static void stream_connection_takion_av(ChiakiStreamConnection *stream_connection, ChiakiTakionAVPacket *packet); static ChiakiErrorCode stream_connection_send_heartbeat(ChiakiStreamConnection *stream_connection); CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_init(ChiakiStreamConnection *stream_connection, ChiakiSession *session) { stream_connection->session = session; stream_connection->log = session->log; stream_connection->ecdh_secret = NULL; stream_connection->gkcrypt_remote = NULL; stream_connection->gkcrypt_local = NULL; ChiakiErrorCode err = chiaki_mutex_init(&stream_connection->state_mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error; err = chiaki_cond_init(&stream_connection->state_cond); if(err != CHIAKI_ERR_SUCCESS) goto error_state_mutex; err = chiaki_packet_stats_init(&stream_connection->packet_stats); if(err != CHIAKI_ERR_SUCCESS) goto error_state_cond; stream_connection->video_receiver = NULL; stream_connection->audio_receiver = NULL; stream_connection->haptics_receiver = NULL; err = chiaki_mutex_init(&stream_connection->feedback_sender_mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error_packet_stats; stream_connection->state = STATE_IDLE; stream_connection->state_finished = false; stream_connection->state_failed = false; stream_connection->should_stop = false; stream_connection->remote_disconnected = false; stream_connection->remote_disconnect_reason = NULL; return CHIAKI_ERR_SUCCESS; error_packet_stats: chiaki_packet_stats_fini(&stream_connection->packet_stats); error_state_cond: chiaki_cond_fini(&stream_connection->state_cond); error_state_mutex: chiaki_mutex_fini(&stream_connection->state_mutex); error: return err; } CHIAKI_EXPORT void chiaki_stream_connection_fini(ChiakiStreamConnection *stream_connection) { free(stream_connection->remote_disconnect_reason); chiaki_gkcrypt_free(stream_connection->gkcrypt_remote); chiaki_gkcrypt_free(stream_connection->gkcrypt_local); free(stream_connection->ecdh_secret); chiaki_packet_stats_fini(&stream_connection->packet_stats); chiaki_mutex_fini(&stream_connection->feedback_sender_mutex); chiaki_cond_fini(&stream_connection->state_cond); chiaki_mutex_fini(&stream_connection->state_mutex); } static bool state_finished_cond_check(void *user) { ChiakiStreamConnection *stream_connection = user; return stream_connection->state_finished || stream_connection->should_stop || stream_connection->remote_disconnected; } CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_run(ChiakiStreamConnection *stream_connection) { ChiakiSession *session = stream_connection->session; ChiakiErrorCode err; ChiakiTakionConnectInfo takion_info; takion_info.log = stream_connection->log; takion_info.sa_len = session->connect_info.host_addrinfo_selected->ai_addrlen; takion_info.sa = malloc(takion_info.sa_len); if(!takion_info.sa) return CHIAKI_ERR_MEMORY; memcpy(takion_info.sa, session->connect_info.host_addrinfo_selected->ai_addr, takion_info.sa_len); err = set_port(takion_info.sa, htons(STREAM_CONNECTION_PORT)); assert(err == CHIAKI_ERR_SUCCESS); takion_info.ip_dontfrag = false; takion_info.enable_crypt = true; takion_info.enable_dualsense = session->connect_info.enable_dualsense; takion_info.protocol_version = chiaki_target_is_ps5(session->target) ? 12 : 9; takion_info.cb = stream_connection_takion_cb; takion_info.cb_user = stream_connection; err = chiaki_mutex_lock(&stream_connection->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); #define CHECK_STOP(quit_label) do { \ if(stream_connection->should_stop) \ { \ goto quit_label; \ } } while(0) stream_connection->audio_receiver = chiaki_audio_receiver_new(session, &stream_connection->packet_stats); if(!stream_connection->audio_receiver) { CHIAKI_LOGE(session->log, "StreamConnection failed to initialize Audio Receiver"); return CHIAKI_ERR_UNKNOWN; } stream_connection->haptics_receiver = chiaki_audio_receiver_new(session, NULL); if(!stream_connection->haptics_receiver) { CHIAKI_LOGE(session->log, "StreamConnection failed to initialize Haptics Receiver"); err = CHIAKI_ERR_UNKNOWN; goto err_audio_receiver; } stream_connection->video_receiver = chiaki_video_receiver_new(session, &stream_connection->packet_stats); if(!stream_connection->video_receiver) { CHIAKI_LOGE(session->log, "StreamConnection failed to initialize Video Receiver"); err = CHIAKI_ERR_UNKNOWN; goto err_haptics_receiver; } stream_connection->state = STATE_TAKION_CONNECT; stream_connection->state_finished = false; stream_connection->state_failed = false; err = chiaki_takion_connect(&stream_connection->takion, &takion_info); free(takion_info.sa); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "StreamConnection connect failed"); chiaki_mutex_unlock(&stream_connection->state_mutex); goto err_video_receiver; } ChiakiCongestionControl congestion_control; err = chiaki_congestion_control_start(&congestion_control, &stream_connection->takion, &stream_connection->packet_stats); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "StreamConnection failed to start Congestion Control"); goto close_takion; } err = chiaki_cond_timedwait_pred(&stream_connection->state_cond, &stream_connection->state_mutex, EXPECT_TIMEOUT_MS, state_finished_cond_check, stream_connection); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); CHECK_STOP(close_takion); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "StreamConnection Takion connect failed"); goto err_congestion_control; } CHIAKI_LOGI(session->log, "StreamConnection sending big"); stream_connection->state = STATE_EXPECT_BANG; stream_connection->state_finished = false; stream_connection->state_failed = false; err = stream_connection_send_big(stream_connection); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(session->log, "StreamConnection failed to send big"); goto disconnect; } err = chiaki_cond_timedwait_pred(&stream_connection->state_cond, &stream_connection->state_mutex, EXPECT_TIMEOUT_MS, state_finished_cond_check, stream_connection); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); CHECK_STOP(disconnect); if(!stream_connection->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) CHIAKI_LOGE(session->log, "StreamConnection bang receive timeout"); CHIAKI_LOGE(session->log, "StreamConnection didn't receive bang or failed to handle it"); err = CHIAKI_ERR_UNKNOWN; goto disconnect; } CHIAKI_LOGI(session->log, "StreamConnection successfully received bang"); stream_connection->state = STATE_EXPECT_STREAMINFO; stream_connection->state_finished = false; stream_connection->state_failed = false; err = chiaki_cond_timedwait_pred(&stream_connection->state_cond, &stream_connection->state_mutex, EXPECT_TIMEOUT_MS, state_finished_cond_check, stream_connection); assert(err == CHIAKI_ERR_SUCCESS || err == CHIAKI_ERR_TIMEOUT); CHECK_STOP(disconnect); if(!stream_connection->state_finished) { if(err == CHIAKI_ERR_TIMEOUT) CHIAKI_LOGE(session->log, "StreamConnection streaminfo receive timeout"); CHIAKI_LOGE(session->log, "StreamConnection didn't receive streaminfo"); err = CHIAKI_ERR_UNKNOWN; goto disconnect; } CHIAKI_LOGI(session->log, "StreamConnection successfully received streaminfo"); err = chiaki_mutex_lock(&stream_connection->feedback_sender_mutex); assert(err == CHIAKI_ERR_SUCCESS); err = chiaki_feedback_sender_init(&stream_connection->feedback_sender, &stream_connection->takion); if(err != CHIAKI_ERR_SUCCESS) { chiaki_mutex_unlock(&stream_connection->feedback_sender_mutex); CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to start Feedback Sender"); goto disconnect; } stream_connection->feedback_sender_active = true; chiaki_feedback_sender_set_controller_state(&stream_connection->feedback_sender, &session->controller_state); chiaki_mutex_unlock(&stream_connection->feedback_sender_mutex); stream_connection->state = STATE_IDLE; stream_connection->state_finished = false; stream_connection->state_failed = false; ChiakiEvent event = { 0 }; event.type = CHIAKI_EVENT_CONNECTED; chiaki_mutex_unlock(&stream_connection->state_mutex); chiaki_session_send_event(session, &event); err = chiaki_mutex_lock(&stream_connection->state_mutex); assert(err == CHIAKI_ERR_SUCCESS); while(true) { err = chiaki_cond_timedwait_pred(&stream_connection->state_cond, &stream_connection->state_mutex, HEARTBEAT_INTERVAL_MS, state_finished_cond_check, stream_connection); if(err != CHIAKI_ERR_TIMEOUT) break; err = stream_connection_send_heartbeat(stream_connection); if(err != CHIAKI_ERR_SUCCESS) CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to send heartbeat"); else CHIAKI_LOGV(stream_connection->log, "StreamConnection sent heartbeat"); } err = chiaki_mutex_lock(&stream_connection->feedback_sender_mutex); assert(err == CHIAKI_ERR_SUCCESS); stream_connection->feedback_sender_active = false; chiaki_feedback_sender_fini(&stream_connection->feedback_sender); chiaki_mutex_unlock(&stream_connection->feedback_sender_mutex); err = CHIAKI_ERR_SUCCESS; disconnect: CHIAKI_LOGI(session->log, "StreamConnection is disconnecting"); stream_connection_send_disconnect(stream_connection); if(stream_connection->should_stop) { CHIAKI_LOGI(stream_connection->log, "StreamConnection was requested to stop"); err = CHIAKI_ERR_CANCELED; } else if(stream_connection->remote_disconnected) { CHIAKI_LOGI(stream_connection->log, "StreamConnection closing after Remote disconnected"); err = CHIAKI_ERR_DISCONNECTED; } err_congestion_control: chiaki_congestion_control_stop(&congestion_control); close_takion: chiaki_mutex_unlock(&stream_connection->state_mutex); chiaki_takion_close(&stream_connection->takion); CHIAKI_LOGI(session->log, "StreamConnection closed takion"); err_video_receiver: chiaki_video_receiver_free(stream_connection->video_receiver); stream_connection->video_receiver = NULL; err_haptics_receiver: chiaki_audio_receiver_free(stream_connection->haptics_receiver); stream_connection->haptics_receiver = NULL; err_audio_receiver: chiaki_audio_receiver_free(stream_connection->audio_receiver); stream_connection->audio_receiver = NULL; return err; } CHIAKI_EXPORT ChiakiErrorCode chiaki_stream_connection_stop(ChiakiStreamConnection *stream_connection) { ChiakiErrorCode err = chiaki_mutex_lock(&stream_connection->state_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; stream_connection->should_stop = true; ChiakiErrorCode unlock_err = chiaki_mutex_unlock(&stream_connection->state_mutex); err = chiaki_cond_signal(&stream_connection->state_cond); return err == CHIAKI_ERR_SUCCESS ? unlock_err : err; } static void stream_connection_takion_cb(ChiakiTakionEvent *event, void *user) { ChiakiStreamConnection *stream_connection = user; switch(event->type) { case CHIAKI_TAKION_EVENT_TYPE_CONNECTED: case CHIAKI_TAKION_EVENT_TYPE_DISCONNECT: chiaki_mutex_lock(&stream_connection->state_mutex); if(stream_connection->state == STATE_TAKION_CONNECT) { stream_connection->state_finished = event->type == CHIAKI_TAKION_EVENT_TYPE_CONNECTED; stream_connection->state_failed = event->type == CHIAKI_TAKION_EVENT_TYPE_DISCONNECT; chiaki_cond_signal(&stream_connection->state_cond); } chiaki_mutex_unlock(&stream_connection->state_mutex); break; case CHIAKI_TAKION_EVENT_TYPE_DATA: stream_connection_takion_data(stream_connection, event->data.data_type, event->data.buf, event->data.buf_size); break; case CHIAKI_TAKION_EVENT_TYPE_AV: stream_connection_takion_av(stream_connection, event->av); break; default: break; } } static void stream_connection_takion_data(ChiakiStreamConnection *stream_connection, ChiakiTakionMessageDataType data_type, uint8_t *buf, size_t buf_size) { switch(data_type) { case CHIAKI_TAKION_MESSAGE_DATA_TYPE_PROTOBUF: stream_connection_takion_data_protobuf(stream_connection, buf, buf_size); break; case CHIAKI_TAKION_MESSAGE_DATA_TYPE_RUMBLE: stream_connection_takion_data_rumble(stream_connection, buf, buf_size); break; case CHIAKI_TAKION_MESSAGE_DATA_TYPE_TRIGGER_EFFECTS: stream_connection_takion_data_trigger_effects(stream_connection, buf, buf_size); break; default: break; } } static void stream_connection_takion_data_protobuf(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size) { chiaki_mutex_lock(&stream_connection->state_mutex); switch(stream_connection->state) { case STATE_EXPECT_BANG: stream_connection_takion_data_expect_bang(stream_connection, buf, buf_size); break; case STATE_EXPECT_STREAMINFO: stream_connection_takion_data_expect_streaminfo(stream_connection, buf, buf_size); break; default: // STATE_IDLE stream_connection_takion_data_idle(stream_connection, buf, buf_size); break; } chiaki_mutex_unlock(&stream_connection->state_mutex); } static void stream_connection_takion_data_rumble(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size) { if(buf_size < 3) { CHIAKI_LOGE(stream_connection->log, "StreamConnection got rumble packet with size %#llx < 3", (unsigned long long)buf_size); return; } ChiakiEvent event = { 0 }; event.type = CHIAKI_EVENT_RUMBLE; event.rumble.unknown = buf[0]; event.rumble.left = buf[1]; event.rumble.right = buf[2]; chiaki_session_send_event(stream_connection->session, &event); } static void stream_connection_takion_data_trigger_effects(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size) { if(buf_size < 25) { CHIAKI_LOGE(stream_connection->log, "StreamConnection got trigger effects packet with size %#llx < 25", (unsigned long long)buf_size); return; } ChiakiEvent event = { 0 }; event.type = CHIAKI_EVENT_TRIGGER_EFFECTS; event.trigger_effects.type_left = buf[1]; event.trigger_effects.type_right = buf[2]; memcpy(&event.trigger_effects.left, buf + 5, 10); memcpy(&event.trigger_effects.right, buf + 15, 10); chiaki_session_send_event(stream_connection->session, &event); } static void stream_connection_takion_data_handle_disconnect(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); char reason[256]; ChiakiPBDecodeBuf decode_buf; decode_buf.size = 0; decode_buf.max_size = sizeof(reason) - 1; decode_buf.buf = (uint8_t *)reason; msg.disconnect_payload.reason.arg = &decode_buf; msg.disconnect_payload.reason.funcs.decode = chiaki_pb_decode_buf; pb_istream_t stream = pb_istream_from_buffer(buf, buf_size); bool r = pb_decode(&stream, tkproto_TakionMessage_fields, &msg); if(!r) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to decode data protobuf"); chiaki_log_hexdump(stream_connection->log, CHIAKI_LOG_ERROR, buf, buf_size); return; } reason[decode_buf.size] = '\0'; CHIAKI_LOGI(stream_connection->log, "Remote disconnected from StreamConnection with reason \"%s\"", reason); stream_connection->remote_disconnected = true; free(stream_connection->remote_disconnect_reason); stream_connection->remote_disconnect_reason = strdup(reason); chiaki_cond_signal(&stream_connection->state_cond); } static void stream_connection_takion_data_idle(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); pb_istream_t stream = pb_istream_from_buffer(buf, buf_size); bool r = pb_decode(&stream, tkproto_TakionMessage_fields, &msg); if(!r) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to decode data protobuf"); chiaki_log_hexdump(stream_connection->log, CHIAKI_LOG_ERROR, buf, buf_size); return; } CHIAKI_LOGV(stream_connection->log, "StreamConnection received data with msg.type == %d", msg.type); chiaki_log_hexdump(stream_connection->log, CHIAKI_LOG_VERBOSE, buf, buf_size); if(msg.type == tkproto_TakionMessage_PayloadType_DISCONNECT) stream_connection_takion_data_handle_disconnect(stream_connection, buf, buf_size); } static ChiakiErrorCode stream_connection_init_crypt(ChiakiStreamConnection *stream_connection) { ChiakiSession *session = stream_connection->session; stream_connection->gkcrypt_local = chiaki_gkcrypt_new(stream_connection->log, CHIAKI_GKCRYPT_KEY_BUF_BLOCKS_DEFAULT, 2, session->handshake_key, stream_connection->ecdh_secret); if(!stream_connection->gkcrypt_local) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to initialize local GKCrypt with index 2"); return CHIAKI_ERR_UNKNOWN; } stream_connection->gkcrypt_remote = chiaki_gkcrypt_new(stream_connection->log, CHIAKI_GKCRYPT_KEY_BUF_BLOCKS_DEFAULT, 3, session->handshake_key, stream_connection->ecdh_secret); if(!stream_connection->gkcrypt_remote) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to initialize remote GKCrypt with index 3"); free(stream_connection->gkcrypt_local); stream_connection->gkcrypt_local = NULL; return CHIAKI_ERR_UNKNOWN; } chiaki_takion_set_crypt(&stream_connection->takion, stream_connection->gkcrypt_local, stream_connection->gkcrypt_remote); return CHIAKI_ERR_SUCCESS; } static void stream_connection_takion_data_expect_bang(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size) { char ecdh_pub_key[128]; ChiakiPBDecodeBuf ecdh_pub_key_buf = { sizeof(ecdh_pub_key), 0, (uint8_t *)ecdh_pub_key }; char ecdh_sig[32]; ChiakiPBDecodeBuf ecdh_sig_buf = { sizeof(ecdh_sig), 0, (uint8_t *)ecdh_sig }; tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.bang_payload.ecdh_pub_key.arg = &ecdh_pub_key_buf; msg.bang_payload.ecdh_pub_key.funcs.decode = chiaki_pb_decode_buf; msg.bang_payload.ecdh_sig.arg = &ecdh_sig_buf; msg.bang_payload.ecdh_sig.funcs.decode = chiaki_pb_decode_buf; pb_istream_t stream = pb_istream_from_buffer(buf, buf_size); bool r = pb_decode(&stream, tkproto_TakionMessage_fields, &msg); if(!r) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to decode data protobuf"); return; } if(msg.type != tkproto_TakionMessage_PayloadType_BANG || !msg.has_bang_payload) { if(msg.type == tkproto_TakionMessage_PayloadType_DISCONNECT) { stream_connection_takion_data_handle_disconnect(stream_connection, buf, buf_size); return; } CHIAKI_LOGE(stream_connection->log, "StreamConnection expected bang payload but received something else: %d", msg.type); chiaki_log_hexdump(stream_connection->log, CHIAKI_LOG_VERBOSE, buf, buf_size); return; } CHIAKI_LOGI(stream_connection->log, "BANG received"); if(!msg.bang_payload.version_accepted) { CHIAKI_LOGE(stream_connection->log, "StreamConnection bang remote didn't accept version"); goto error; } if(!msg.bang_payload.encrypted_key_accepted) { CHIAKI_LOGE(stream_connection->log, "StreamConnection bang remote didn't accept encrypted key"); goto error; } if(!ecdh_pub_key_buf.size) { CHIAKI_LOGE(stream_connection->log, "StreamConnection didn't get remote ECDH pub key from bang"); goto error; } if(!ecdh_sig_buf.size) { CHIAKI_LOGE(stream_connection->log, "StreamConnection didn't get remote ECDH sig from bang"); goto error; } assert(!stream_connection->ecdh_secret); stream_connection->ecdh_secret = malloc(CHIAKI_ECDH_SECRET_SIZE); if(!stream_connection->ecdh_secret) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to alloc ECDH secret memory"); goto error; } ChiakiErrorCode err = chiaki_ecdh_derive_secret(&stream_connection->session->ecdh, stream_connection->ecdh_secret, ecdh_pub_key_buf.buf, ecdh_pub_key_buf.size, stream_connection->session->handshake_key, ecdh_sig_buf.buf, ecdh_sig_buf.size); if(err != CHIAKI_ERR_SUCCESS) { free(stream_connection->ecdh_secret); stream_connection->ecdh_secret = NULL; CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to derive secret from bang"); goto error; } err = stream_connection_init_crypt(stream_connection); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to init crypt after receiving bang"); goto error; } // stream_connection->state_mutex is expected to be locked by the caller of this function stream_connection->state_finished = true; chiaki_cond_signal(&stream_connection->state_cond); err = stream_connection_send_controller_connection(stream_connection); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to send controller connection"); goto error; } return; error: stream_connection->state_failed = true; chiaki_cond_signal(&stream_connection->state_cond); } typedef struct decode_resolutions_context_t { ChiakiStreamConnection *stream_connection; ChiakiVideoProfile video_profiles[CHIAKI_VIDEO_PROFILES_MAX]; size_t video_profiles_count; } DecodeResolutionsContext; static bool pb_decode_resolution(pb_istream_t *stream, const pb_field_t *field, void **arg) { DecodeResolutionsContext *ctx = *arg; tkproto_ResolutionPayload resolution = { 0 }; ChiakiPBDecodeBufAlloc header_buf = { 0 }; resolution.video_header.arg = &header_buf; resolution.video_header.funcs.decode = chiaki_pb_decode_buf_alloc; if(!pb_decode(stream, tkproto_ResolutionPayload_fields, &resolution)) return false; if(!header_buf.buf) { CHIAKI_LOGE(ctx->stream_connection->session->log, "Failed to decode video header"); return true; } uint8_t *header_buf_padded = realloc(header_buf.buf, header_buf.size + CHIAKI_VIDEO_BUFFER_PADDING_SIZE); if(!header_buf_padded) { free(header_buf.buf); CHIAKI_LOGE(ctx->stream_connection->session->log, "Failed to realloc video header with padding"); return true; } memset(header_buf_padded + header_buf.size, 0, CHIAKI_VIDEO_BUFFER_PADDING_SIZE); if(ctx->video_profiles_count >= CHIAKI_VIDEO_PROFILES_MAX) { CHIAKI_LOGE(ctx->stream_connection->session->log, "Received more resolutions than the maximum"); return true; } ChiakiVideoProfile *profile = &ctx->video_profiles[ctx->video_profiles_count++]; profile->width = resolution.width; profile->height = resolution.height; profile->header_sz = header_buf.size; profile->header = header_buf_padded; return true; } static void stream_connection_takion_data_expect_streaminfo(ChiakiStreamConnection *stream_connection, uint8_t *buf, size_t buf_size) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); uint8_t audio_header[CHIAKI_AUDIO_HEADER_SIZE]; ChiakiPBDecodeBuf audio_header_buf = { sizeof(audio_header), 0, (uint8_t *)audio_header }; msg.stream_info_payload.audio_header.arg = &audio_header_buf; msg.stream_info_payload.audio_header.funcs.decode = chiaki_pb_decode_buf; DecodeResolutionsContext decode_resolutions_context; decode_resolutions_context.stream_connection = stream_connection; memset(decode_resolutions_context.video_profiles, 0, sizeof(decode_resolutions_context.video_profiles)); decode_resolutions_context.video_profiles_count = 0; msg.stream_info_payload.resolution.arg = &decode_resolutions_context; msg.stream_info_payload.resolution.funcs.decode = pb_decode_resolution; pb_istream_t stream = pb_istream_from_buffer(buf, buf_size); bool r = pb_decode(&stream, tkproto_TakionMessage_fields, &msg); if(!r) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to decode data protobuf"); return; } if(msg.type != tkproto_TakionMessage_PayloadType_STREAMINFO || !msg.has_stream_info_payload) { if(msg.type == tkproto_TakionMessage_PayloadType_DISCONNECT) { stream_connection_takion_data_handle_disconnect(stream_connection, buf, buf_size); return; } CHIAKI_LOGE(stream_connection->log, "StreamConnection expected streaminfo payload but received something else"); chiaki_log_hexdump(stream_connection->log, CHIAKI_LOG_VERBOSE, buf, buf_size); return; } CHIAKI_LOGD(stream_connection->log, "StreamConnection received audio header:"); chiaki_log_hexdump(stream_connection->log, CHIAKI_LOG_DEBUG, audio_header, audio_header_buf.size); if(audio_header_buf.size != CHIAKI_AUDIO_HEADER_SIZE) { CHIAKI_LOGE(stream_connection->log, "StreamConnection received invalid audio header in streaminfo"); goto error; } ChiakiAudioHeader audio_header_s; chiaki_audio_header_load(&audio_header_s, audio_header); chiaki_audio_receiver_stream_info(stream_connection->audio_receiver, &audio_header_s); chiaki_video_receiver_stream_info(stream_connection->video_receiver, decode_resolutions_context.video_profiles, decode_resolutions_context.video_profiles_count); // TODO: do some checks? stream_connection_send_streaminfo_ack(stream_connection); // stream_connection->state_mutex is expected to be locked by the caller of this function stream_connection->state_finished = true; chiaki_cond_signal(&stream_connection->state_cond); return; error: stream_connection->state_failed = true; chiaki_cond_signal(&stream_connection->state_cond); } static bool chiaki_pb_encode_zero_encrypted_key(pb_ostream_t *stream, const pb_field_t *field, void *const *arg) { if(!pb_encode_tag_for_field(stream, field)) return false; uint8_t data[] = { 0, 0, 0, 0 }; return pb_encode_string(stream, data, sizeof(data)); } #define LAUNCH_SPEC_JSON_BUF_SIZE 1024 static ChiakiErrorCode stream_connection_send_big(ChiakiStreamConnection *stream_connection) { ChiakiSession *session = stream_connection->session; ChiakiLaunchSpec launch_spec; launch_spec.target = session->target; launch_spec.mtu = session->mtu_in; launch_spec.rtt = session->rtt_us / 1000; launch_spec.handshake_key = session->handshake_key; launch_spec.width = session->connect_info.video_profile.width; launch_spec.height = session->connect_info.video_profile.height; launch_spec.max_fps = session->connect_info.video_profile.max_fps; launch_spec.codec = session->connect_info.video_profile.codec; launch_spec.bw_kbps_sent = session->connect_info.video_profile.bitrate; union { char json[LAUNCH_SPEC_JSON_BUF_SIZE]; char b64[LAUNCH_SPEC_JSON_BUF_SIZE * 2]; } launch_spec_buf; int launch_spec_json_size = chiaki_launchspec_format(launch_spec_buf.json, sizeof(launch_spec_buf.json), &launch_spec); if(launch_spec_json_size < 0) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to format LaunchSpec json"); return CHIAKI_ERR_UNKNOWN; } launch_spec_json_size += 1; // we also want the trailing 0 CHIAKI_LOGV(stream_connection->log, "LaunchSpec: %s", launch_spec_buf.json); uint8_t launch_spec_json_enc[LAUNCH_SPEC_JSON_BUF_SIZE]; memset(launch_spec_json_enc, 0, (size_t)launch_spec_json_size); ChiakiErrorCode err = chiaki_rpcrypt_encrypt(&session->rpcrypt, 0, launch_spec_json_enc, launch_spec_json_enc, (size_t)launch_spec_json_size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to encrypt LaunchSpec"); return err; } xor_bytes(launch_spec_json_enc, (uint8_t *)launch_spec_buf.json, (size_t)launch_spec_json_size); err = chiaki_base64_encode(launch_spec_json_enc, (size_t)launch_spec_json_size, launch_spec_buf.b64, sizeof(launch_spec_buf.b64)); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to encode LaunchSpec as base64"); return err; } uint8_t ecdh_pub_key[128]; ChiakiPBBuf ecdh_pub_key_buf = { sizeof(ecdh_pub_key), ecdh_pub_key }; uint8_t ecdh_sig[32]; ChiakiPBBuf ecdh_sig_buf = { sizeof(ecdh_sig), ecdh_sig }; err = chiaki_ecdh_get_local_pub_key(&session->ecdh, ecdh_pub_key, &ecdh_pub_key_buf.size, session->handshake_key, ecdh_sig, &ecdh_sig_buf.size); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(stream_connection->log, "StreamConnection failed to get ECDH key and sig"); return err; } tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_BIG; msg.has_big_payload = true; msg.big_payload.client_version = stream_connection->takion.version; msg.big_payload.session_key.arg = session->session_id; msg.big_payload.session_key.funcs.encode = chiaki_pb_encode_string; msg.big_payload.launch_spec.arg = launch_spec_buf.b64; msg.big_payload.launch_spec.funcs.encode = chiaki_pb_encode_string; msg.big_payload.encrypted_key.funcs.encode = chiaki_pb_encode_zero_encrypted_key; msg.big_payload.ecdh_pub_key.arg = &ecdh_pub_key_buf; msg.big_payload.ecdh_pub_key.funcs.encode = chiaki_pb_encode_buf; msg.big_payload.ecdh_sig.arg = &ecdh_sig_buf; msg.big_payload.ecdh_sig.funcs.encode = chiaki_pb_encode_buf; uint8_t buf[2048]; size_t buf_size; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(stream_connection->log, "StreamConnection big protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } buf_size = stream.bytes_written; err = chiaki_takion_send_message_data(&stream_connection->takion, 1, 1, buf, buf_size, NULL); return err; } static ChiakiErrorCode stream_connection_send_controller_connection(ChiakiStreamConnection *stream_connection) { ChiakiSession *session = stream_connection->session; tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_CONTROLLERCONNECTION; msg.has_controller_connection_payload = true; msg.controller_connection_payload.has_connected = true; msg.controller_connection_payload.connected = true; msg.controller_connection_payload.has_controller_id = false; msg.controller_connection_payload.has_controller_type = true; msg.controller_connection_payload.controller_type = session->connect_info.enable_dualsense ? tkproto_ControllerConnectionPayload_ControllerType_DUALSENSE : tkproto_ControllerConnectionPayload_ControllerType_DUALSHOCK4; uint8_t buf[2048]; size_t buf_size; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(stream_connection->log, "StreamConnection controller connection protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } buf_size = stream.bytes_written; return chiaki_takion_send_message_data(&stream_connection->takion, 1, 1, buf, buf_size, NULL); } static ChiakiErrorCode stream_connection_send_streaminfo_ack(ChiakiStreamConnection *stream_connection) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_STREAMINFOACK; uint8_t buf[3]; size_t buf_size; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(stream_connection->log, "StreamConnection streaminfo ack protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } buf_size = stream.bytes_written; return chiaki_takion_send_message_data(&stream_connection->takion, 1, 9, buf, buf_size, NULL); } static ChiakiErrorCode stream_connection_send_disconnect(ChiakiStreamConnection *stream_connection) { tkproto_TakionMessage msg; memset(&msg, 0, sizeof(msg)); msg.type = tkproto_TakionMessage_PayloadType_DISCONNECT; msg.has_disconnect_payload = true; msg.disconnect_payload.reason.arg = "Client Disconnecting"; msg.disconnect_payload.reason.funcs.encode = chiaki_pb_encode_string; uint8_t buf[26]; size_t buf_size; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(stream_connection->log, "StreamConnection disconnect protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } CHIAKI_LOGI(stream_connection->log, "StreamConnection sending Disconnect"); buf_size = stream.bytes_written; ChiakiErrorCode err = chiaki_takion_send_message_data(&stream_connection->takion, 1, 1, buf, buf_size, NULL); return err; } static void stream_connection_takion_av(ChiakiStreamConnection *stream_connection, ChiakiTakionAVPacket *packet) { chiaki_gkcrypt_decrypt(stream_connection->gkcrypt_remote, packet->key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, packet->data, packet->data_size); if(packet->is_video) chiaki_video_receiver_av_packet(stream_connection->video_receiver, packet); else if(packet->is_haptics) chiaki_audio_receiver_av_packet(stream_connection->haptics_receiver, packet); else chiaki_audio_receiver_av_packet(stream_connection->audio_receiver, packet); } static ChiakiErrorCode stream_connection_send_heartbeat(ChiakiStreamConnection *stream_connection) { tkproto_TakionMessage msg = { 0 }; msg.type = tkproto_TakionMessage_PayloadType_HEARTBEAT; uint8_t buf[8]; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(stream_connection->log, "StreamConnection heartbeat protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } return chiaki_takion_send_message_data(&stream_connection->takion, 1, 1, buf, stream.bytes_written, NULL); } CHIAKI_EXPORT ChiakiErrorCode stream_connection_send_corrupt_frame(ChiakiStreamConnection *stream_connection, ChiakiSeqNum16 start, ChiakiSeqNum16 end) { tkproto_TakionMessage msg = { 0 }; msg.type = tkproto_TakionMessage_PayloadType_CORRUPTFRAME; msg.has_corrupt_payload = true; msg.corrupt_payload.start = start; msg.corrupt_payload.end = end; uint8_t buf[0x10]; pb_ostream_t stream = pb_ostream_from_buffer(buf, sizeof(buf)); bool pbr = pb_encode(&stream, tkproto_TakionMessage_fields, &msg); if(!pbr) { CHIAKI_LOGE(stream_connection->log, "StreamConnection heartbeat protobuf encoding failed"); return CHIAKI_ERR_UNKNOWN; } CHIAKI_LOGD(stream_connection->log, "StreamConnection reporting corrupt frame(s) from %u to %u", (unsigned int)start, (unsigned int)end); return chiaki_takion_send_message_data(&stream_connection->takion, 1, 2, buf, stream.bytes_written, NULL); } chiaki-v2.2.0/lib/src/takion.c000066400000000000000000001327411447035777400161510ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "chiaki/feedback.h" #include #include #include #include #include #include #include #include #include #include #ifdef _WIN32 #include #elif defined(__SWITCH__) #include #include #include #include #else #include #include #include #include #endif // VERY similar to SCTP, see RFC 4960 #define TAKION_A_RWND 0x19000 #define TAKION_OUTBOUND_STREAMS 0x64 #define TAKION_INBOUND_STREAMS 0x64 #define TAKION_REORDER_QUEUE_SIZE_EXP 4 // => 16 entries #define TAKION_SEND_BUFFER_SIZE 16 #define TAKION_POSTPONE_PACKETS_SIZE 32 #define TAKION_MESSAGE_HEADER_SIZE 0x10 #define TAKION_PACKET_BASE_TYPE_MASK 0xf #define TAKION_EXPECT_TIMEOUT_MS 5000 /** * Base type of Takion packets. Lower nibble of the first byte in datagrams. */ typedef enum takion_packet_type_t { TAKION_PACKET_TYPE_CONTROL = 0, TAKION_PACKET_TYPE_FEEDBACK_HISTORY = 1, TAKION_PACKET_TYPE_VIDEO = 2, TAKION_PACKET_TYPE_AUDIO = 3, TAKION_PACKET_TYPE_HANDSHAKE = 4, TAKION_PACKET_TYPE_CONGESTION = 5, TAKION_PACKET_TYPE_FEEDBACK_STATE = 6, TAKION_PACKET_TYPE_CLIENT_INFO = 8, TAKION_PACKET_TYPE_PAD_INFO_EVENT = 9, TAKION_PACKET_TYPE_PAD_ADAPTIVE_TRIGGERS = 11, } TakionPacketType; /** * @return The offset of the mac of size CHIAKI_GKCRYPT_GMAC_SIZE inside a packet of type or -1 if unknown. */ int takion_packet_type_mac_offset(TakionPacketType type) { switch(type) { case TAKION_PACKET_TYPE_CONTROL: return 5; case TAKION_PACKET_TYPE_VIDEO: case TAKION_PACKET_TYPE_AUDIO: return 0xa; case TAKION_PACKET_TYPE_CONGESTION: return 7; default: return -1; } } /** * @return The offset of the 4-byte key_pos inside a packet of type or -1 if unknown. */ int takion_packet_type_key_pos_offset(TakionPacketType type) { switch(type) { case TAKION_PACKET_TYPE_CONTROL: return 0x9; case TAKION_PACKET_TYPE_VIDEO: case TAKION_PACKET_TYPE_AUDIO: return 0xe; case TAKION_PACKET_TYPE_CONGESTION: return 0xb; default: return -1; } } typedef enum takion_chunk_type_t { TAKION_CHUNK_TYPE_DATA = 0, TAKION_CHUNK_TYPE_INIT = 1, TAKION_CHUNK_TYPE_INIT_ACK = 2, TAKION_CHUNK_TYPE_DATA_ACK = 3, TAKION_CHUNK_TYPE_COOKIE = 0xa, TAKION_CHUNK_TYPE_COOKIE_ACK = 0xb, } TakionChunkType; typedef struct takion_message_t { uint32_t tag; //uint8_t zero[4]; uint64_t key_pos; uint8_t chunk_type; uint8_t chunk_flags; uint16_t payload_size; uint8_t *payload; } TakionMessage; typedef struct takion_message_payload_init_t { uint32_t tag; uint32_t a_rwnd; uint16_t outbound_streams; uint16_t inbound_streams; uint32_t initial_seq_num; } TakionMessagePayloadInit; #define TAKION_COOKIE_SIZE 0x20 typedef struct takion_message_payload_init_ack_t { uint32_t tag; uint32_t a_rwnd; uint16_t outbound_streams; uint16_t inbound_streams; uint32_t initial_seq_num; uint8_t cookie[TAKION_COOKIE_SIZE]; } TakionMessagePayloadInitAck; typedef struct { uint8_t *packet_buf; size_t packet_size; uint8_t type_b; uint8_t *payload; // inside packet_buf size_t payload_size; uint16_t channel; } TakionDataPacketEntry; typedef struct chiaki_takion_postponed_packet_t { uint8_t *buf; size_t buf_size; } ChiakiTakionPostponedPacket; static void *takion_thread_func(void *user); static void takion_handle_packet(ChiakiTakion *takion, uint8_t *buf, size_t buf_size); static ChiakiErrorCode takion_handle_packet_mac(ChiakiTakion *takion, uint8_t base_type, uint8_t *buf, size_t buf_size); static void takion_handle_packet_message(ChiakiTakion *takion, uint8_t *buf, size_t buf_size); static void takion_handle_packet_message_data(ChiakiTakion *takion, uint8_t *packet_buf, size_t packet_buf_size, uint8_t type_b, uint8_t *payload, size_t payload_size); static void takion_handle_packet_message_data_ack(ChiakiTakion *takion, uint8_t flags, uint8_t *buf, size_t buf_size); static ChiakiErrorCode takion_parse_message(ChiakiTakion *takion, uint8_t *buf, size_t buf_size, TakionMessage *msg); static void takion_write_message_header(uint8_t *buf, uint32_t tag, uint64_t key_pos, uint8_t chunk_type, uint8_t chunk_flags, size_t payload_data_size); static ChiakiErrorCode takion_send_message_init(ChiakiTakion *takion, TakionMessagePayloadInit *payload); static ChiakiErrorCode takion_send_message_cookie(ChiakiTakion *takion, uint8_t *cookie); static ChiakiErrorCode takion_recv(ChiakiTakion *takion, uint8_t *buf, size_t *buf_size, uint64_t timeout_ms); static ChiakiErrorCode takion_recv_message_init_ack(ChiakiTakion *takion, TakionMessagePayloadInitAck *payload); static ChiakiErrorCode takion_recv_message_cookie_ack(ChiakiTakion *takion); static void takion_handle_packet_av(ChiakiTakion *takion, uint8_t base_type, uint8_t *buf, size_t buf_size); CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_connect(ChiakiTakion *takion, ChiakiTakionConnectInfo *info) { ChiakiErrorCode ret = CHIAKI_ERR_SUCCESS; takion->log = info->log; takion->version = info->protocol_version; switch(takion->version) { case 7: takion->av_packet_parse = chiaki_takion_v7_av_packet_parse; break; case 9: takion->av_packet_parse = chiaki_takion_v9_av_packet_parse; break; case 12: takion->av_packet_parse = chiaki_takion_v12_av_packet_parse; break; default: CHIAKI_LOGE(takion->log, "Unknown Takion Protocol Version %u", (unsigned int)takion->version); return CHIAKI_ERR_INVALID_DATA; } takion->gkcrypt_local = NULL; ret = chiaki_mutex_init(&takion->gkcrypt_local_mutex, true); if(ret != CHIAKI_ERR_SUCCESS) return ret; takion->key_pos_local = 0; takion->gkcrypt_remote = NULL; takion->cb = info->cb; takion->cb_user = info->cb_user; takion->a_rwnd = TAKION_A_RWND; takion->tag_local = chiaki_random_32(); // 0x4823 takion->seq_num_local = takion->tag_local; ret = chiaki_mutex_init(&takion->seq_num_local_mutex, false); if(ret != CHIAKI_ERR_SUCCESS) goto error_gkcrypt_local_mutex; takion->tag_remote = 0; takion->enable_crypt = info->enable_crypt; takion->postponed_packets = NULL; takion->postponed_packets_size = 0; takion->postponed_packets_count = 0; takion->enable_dualsense = info->enable_dualsense; CHIAKI_LOGI(takion->log, "Takion connecting (version %u)", (unsigned int)info->protocol_version); ChiakiErrorCode err = chiaki_stop_pipe_init(&takion->stop_pipe); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion failed to create stop pipe"); goto error_seq_num_local_mutex; } takion->sock = socket(info->sa->sa_family, SOCK_DGRAM, IPPROTO_UDP); if(CHIAKI_SOCKET_IS_INVALID(takion->sock)) { CHIAKI_LOGE(takion->log, "Takion failed to create socket"); ret = CHIAKI_ERR_NETWORK; goto error_pipe; } const int rcvbuf_val = takion->a_rwnd; int r = setsockopt(takion->sock, SOL_SOCKET, SO_RCVBUF, (const void *)&rcvbuf_val, sizeof(rcvbuf_val)); if(r < 0) { CHIAKI_LOGE(takion->log, "Takion failed to setsockopt SO_RCVBUF: %s", strerror(errno)); ret = CHIAKI_ERR_NETWORK; goto error_sock; } if(info->ip_dontfrag) { #if defined(_WIN32) const DWORD dontfragment_val = 1; r = setsockopt(takion->sock, IPPROTO_IP, IP_DONTFRAGMENT, (const void *)&dontfragment_val, sizeof(dontfragment_val)); #elif defined(__FreeBSD__) || defined(__SWITCH__) const int dontfrag_val = 1; r = setsockopt(takion->sock, IPPROTO_IP, IP_DONTFRAG, (const void *)&dontfrag_val, sizeof(dontfrag_val)); #elif defined(IP_PMTUDISC_DO) const int mtu_discover_val = IP_PMTUDISC_DO; r = setsockopt(takion->sock, IPPROTO_IP, IP_MTU_DISCOVER, (const void *)&mtu_discover_val, sizeof(mtu_discover_val)); #else // macOS and OpenBSD CHIAKI_LOGW(takion->log, "Don't fragment is not supported on this platform, MTU values may be incorrect."); #define NO_DONTFRAG #endif #ifndef NO_DONTFRAG if(r < 0) { CHIAKI_LOGE(takion->log, "Takion failed to setsockopt IP_MTU_DISCOVER: %s", strerror(errno)); ret = CHIAKI_ERR_NETWORK; goto error_sock; } CHIAKI_LOGI(takion->log, "Takion enabled Don't Fragment Bit"); #endif } r = connect(takion->sock, info->sa, info->sa_len); if(r < 0) { CHIAKI_LOGE(takion->log, "Takion failed to connect: %s", strerror(errno)); ret = CHIAKI_ERR_NETWORK; goto error_sock; } err = chiaki_thread_create(&takion->thread, takion_thread_func, takion); if(r != CHIAKI_ERR_SUCCESS) { ret = err; goto error_sock; } chiaki_thread_set_name(&takion->thread, "Chiaki Takion"); return CHIAKI_ERR_SUCCESS; error_sock: CHIAKI_SOCKET_CLOSE(takion->sock); error_pipe: chiaki_stop_pipe_fini(&takion->stop_pipe); error_seq_num_local_mutex: chiaki_mutex_fini(&takion->seq_num_local_mutex); error_gkcrypt_local_mutex: chiaki_mutex_fini(&takion->gkcrypt_local_mutex); return ret; } CHIAKI_EXPORT void chiaki_takion_close(ChiakiTakion *takion) { chiaki_stop_pipe_stop(&takion->stop_pipe); chiaki_thread_join(&takion->thread, NULL); chiaki_stop_pipe_fini(&takion->stop_pipe); chiaki_mutex_fini(&takion->seq_num_local_mutex); chiaki_mutex_fini(&takion->gkcrypt_local_mutex); } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_crypt_advance_key_pos(ChiakiTakion *takion, size_t data_size, uint64_t *key_pos) { ChiakiErrorCode err = chiaki_mutex_lock(&takion->gkcrypt_local_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; if(takion->gkcrypt_local) { uint64_t cur = takion->key_pos_local; if(SIZE_MAX - cur < data_size) { chiaki_mutex_unlock(&takion->gkcrypt_local_mutex); return CHIAKI_ERR_OVERFLOW; } *key_pos = cur; takion->key_pos_local = cur + data_size; } else *key_pos = 0; chiaki_mutex_unlock(&takion->gkcrypt_local_mutex); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_raw(ChiakiTakion *takion, const uint8_t *buf, size_t buf_size) { int r = send(takion->sock, buf, buf_size, 0); if(r < 0) return CHIAKI_ERR_NETWORK; return CHIAKI_ERR_SUCCESS; } static ChiakiErrorCode chiaki_takion_packet_read_key_pos(ChiakiTakion *takion, uint8_t *buf, size_t buf_size, uint64_t *key_pos_out) { if(buf_size < 1) return CHIAKI_ERR_BUF_TOO_SMALL; TakionPacketType base_type = buf[0] & TAKION_PACKET_BASE_TYPE_MASK; int key_pos_offset = takion_packet_type_key_pos_offset(base_type); if(key_pos_offset < 0) return CHIAKI_ERR_INVALID_DATA; if(buf_size < key_pos_offset + sizeof(uint32_t)) return CHIAKI_ERR_BUF_TOO_SMALL; uint32_t key_pos_low = ntohl(*((chiaki_unaligned_uint32_t *)(buf + key_pos_offset))); *key_pos_out = chiaki_key_state_request_pos(&takion->key_state, key_pos_low, false); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_packet_mac(ChiakiGKCrypt *crypt, uint8_t *buf, size_t buf_size, uint64_t key_pos, uint8_t *mac_out, uint8_t *mac_old_out) { if(buf_size < 1) return CHIAKI_ERR_BUF_TOO_SMALL; TakionPacketType base_type = buf[0] & TAKION_PACKET_BASE_TYPE_MASK; int mac_offset = takion_packet_type_mac_offset(base_type); int key_pos_offset = takion_packet_type_key_pos_offset(base_type); if(mac_offset < 0 || key_pos_offset < 0) return CHIAKI_ERR_INVALID_DATA; if(buf_size < mac_offset + CHIAKI_GKCRYPT_GMAC_SIZE || buf_size < key_pos_offset + sizeof(uint32_t)) return CHIAKI_ERR_BUF_TOO_SMALL; if(mac_old_out) memcpy(mac_old_out, buf + mac_offset, CHIAKI_GKCRYPT_GMAC_SIZE); memset(buf + mac_offset, 0, CHIAKI_GKCRYPT_GMAC_SIZE); if(crypt) { uint8_t key_pos_tmp[sizeof(uint32_t)]; if(base_type == TAKION_PACKET_TYPE_CONTROL || base_type == TAKION_PACKET_TYPE_CONGESTION) { memcpy(key_pos_tmp, buf + key_pos_offset, sizeof(uint32_t)); memset(buf + key_pos_offset, 0, sizeof(uint32_t)); } chiaki_gkcrypt_gmac(crypt, key_pos, buf, buf_size, buf + mac_offset); if(base_type == TAKION_PACKET_TYPE_CONTROL || base_type == TAKION_PACKET_TYPE_CONGESTION) memcpy(buf + key_pos_offset, key_pos_tmp, sizeof(uint32_t)); } if(mac_out) memcpy(mac_out, buf + mac_offset, CHIAKI_GKCRYPT_GMAC_SIZE); return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send(ChiakiTakion *takion, uint8_t *buf, size_t buf_size, uint64_t key_pos) { ChiakiErrorCode err = chiaki_mutex_lock(&takion->gkcrypt_local_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; uint8_t mac[CHIAKI_GKCRYPT_GMAC_SIZE]; err = chiaki_takion_packet_mac(takion->gkcrypt_local, buf, buf_size, key_pos, mac, NULL); chiaki_mutex_unlock(&takion->gkcrypt_local_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; //CHIAKI_LOGD(takion->log, "Takion sending:"); //chiaki_log_hexdump(takion->log, CHIAKI_LOG_DEBUG, buf, buf_size); return chiaki_takion_send_raw(takion, buf, buf_size); } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_message_data(ChiakiTakion *takion, uint8_t chunk_flags, uint16_t channel, uint8_t *buf, size_t buf_size, ChiakiSeqNum32 *seq_num) { // TODO: can we make this more memory-efficient? // TODO: split packet if necessary? uint64_t key_pos; ChiakiErrorCode err = chiaki_takion_crypt_advance_key_pos(takion, buf_size, &key_pos); if(err != CHIAKI_ERR_SUCCESS) return err; size_t packet_size = 1 + TAKION_MESSAGE_HEADER_SIZE + 9 + buf_size; uint8_t *packet_buf = malloc(packet_size); if(!packet_buf) return CHIAKI_ERR_MEMORY; packet_buf[0] = TAKION_PACKET_TYPE_CONTROL; takion_write_message_header(packet_buf + 1, takion->tag_remote, key_pos, TAKION_CHUNK_TYPE_DATA, chunk_flags, 9 + buf_size); uint8_t *msg_payload = packet_buf + 1 + TAKION_MESSAGE_HEADER_SIZE; err = chiaki_mutex_lock(&takion->seq_num_local_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; ChiakiSeqNum32 seq_num_val = takion->seq_num_local++; chiaki_mutex_unlock(&takion->seq_num_local_mutex); *((chiaki_unaligned_uint32_t *)(msg_payload + 0)) = htonl(seq_num_val); *((chiaki_unaligned_uint16_t *)(msg_payload + 4)) = htons(channel); *((chiaki_unaligned_uint16_t *)(msg_payload + 6)) = 0; *(msg_payload + 8) = 0; memcpy(msg_payload + 9, buf, buf_size); err = chiaki_takion_send(takion, packet_buf, packet_size, key_pos); // will alter packet_buf with gmac if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion failed to send data packet: %s", chiaki_error_string(err)); free(packet_buf); return err; } chiaki_takion_send_buffer_push(&takion->send_buffer, seq_num_val, packet_buf, packet_size); if(seq_num) *seq_num = seq_num_val; return err; } static ChiakiErrorCode chiaki_takion_send_message_data_ack(ChiakiTakion *takion, uint32_t seq_num) { uint8_t buf[1 + TAKION_MESSAGE_HEADER_SIZE + 0xc]; buf[0] = TAKION_PACKET_TYPE_CONTROL; uint64_t key_pos; ChiakiErrorCode err = chiaki_takion_crypt_advance_key_pos(takion, sizeof(buf), &key_pos); if(err != CHIAKI_ERR_SUCCESS) return err; takion_write_message_header(buf + 1, takion->tag_remote, key_pos, TAKION_CHUNK_TYPE_DATA_ACK, 0, 0xc); uint8_t *data_ack = buf + 1 + TAKION_MESSAGE_HEADER_SIZE; *((chiaki_unaligned_uint32_t *)(data_ack + 0)) = htonl(seq_num); *((chiaki_unaligned_uint32_t *)(data_ack + 4)) = htonl(takion->a_rwnd); *((chiaki_unaligned_uint16_t *)(data_ack + 8)) = 0; *((chiaki_unaligned_uint16_t *)(data_ack + 0xa)) = 0; return chiaki_takion_send(takion, buf, sizeof(buf), key_pos); } CHIAKI_EXPORT void chiaki_takion_format_congestion(uint8_t *buf, ChiakiTakionCongestionPacket *packet, uint64_t key_pos) { buf[0] = TAKION_PACKET_TYPE_CONGESTION; *((chiaki_unaligned_uint16_t *)(buf + 1)) = htons(packet->word_0); *((chiaki_unaligned_uint16_t *)(buf + 3)) = htons(packet->received); *((chiaki_unaligned_uint16_t *)(buf + 5)) = htons(packet->lost); *((chiaki_unaligned_uint32_t *)(buf + 7)) = 0; *((chiaki_unaligned_uint32_t *)(buf + 0xb)) = htonl((uint32_t)key_pos); } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_congestion(ChiakiTakion *takion, ChiakiTakionCongestionPacket *packet) { uint64_t key_pos; ChiakiErrorCode err = chiaki_takion_crypt_advance_key_pos(takion, CHIAKI_TAKION_CONGESTION_PACKET_SIZE, &key_pos); if(err != CHIAKI_ERR_SUCCESS) return err; uint8_t buf[CHIAKI_TAKION_CONGESTION_PACKET_SIZE]; chiaki_takion_format_congestion(buf, packet, key_pos); return chiaki_takion_send(takion, buf, sizeof(buf), key_pos); } static ChiakiErrorCode takion_send_feedback_packet(ChiakiTakion *takion, uint8_t *buf, size_t buf_size) { assert(buf_size >= 0xc); size_t payload_size = buf_size - 0xc; ChiakiErrorCode err = chiaki_mutex_lock(&takion->gkcrypt_local_mutex); if(err != CHIAKI_ERR_SUCCESS) return err; uint64_t key_pos; err = chiaki_takion_crypt_advance_key_pos(takion, payload_size + CHIAKI_GKCRYPT_BLOCK_SIZE, &key_pos); if(err != CHIAKI_ERR_SUCCESS) goto beach; err = chiaki_gkcrypt_encrypt(takion->gkcrypt_local, key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, buf + 0xc, payload_size); if(err != CHIAKI_ERR_SUCCESS) goto beach; *((chiaki_unaligned_uint32_t *)(buf + 4)) = htonl((uint32_t)key_pos); err = chiaki_gkcrypt_gmac(takion->gkcrypt_local, key_pos, buf, buf_size, buf + 8); if(err != CHIAKI_ERR_SUCCESS) goto beach; chiaki_takion_send_raw(takion, buf, buf_size); beach: chiaki_mutex_unlock(&takion->gkcrypt_local_mutex); return err; } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_feedback_state(ChiakiTakion *takion, ChiakiSeqNum16 seq_num, ChiakiFeedbackState *feedback_state) { uint8_t buf[0xc + CHIAKI_FEEDBACK_STATE_BUF_SIZE_MAX]; buf[0] = TAKION_PACKET_TYPE_FEEDBACK_STATE; *((chiaki_unaligned_uint16_t *)(buf + 1)) = htons(seq_num); buf[3] = 0; // TODO *((chiaki_unaligned_uint32_t *)(buf + 4)) = 0; // key pos *((chiaki_unaligned_uint32_t *)(buf + 8)) = 0; // gmac size_t buf_sz; if(takion->version <= 9) { buf_sz = 0xc + CHIAKI_FEEDBACK_STATE_BUF_SIZE_V9; chiaki_feedback_state_format_v9(buf + 0xc, feedback_state); } else { buf_sz = 0xc + CHIAKI_FEEDBACK_STATE_BUF_SIZE_V12; chiaki_feedback_state_format_v12(buf + 0xc, feedback_state); } return takion_send_feedback_packet(takion, buf, buf_sz); } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_feedback_history(ChiakiTakion *takion, ChiakiSeqNum16 seq_num, uint8_t *payload, size_t payload_size) { size_t buf_size = 0xc + payload_size; uint8_t *buf = malloc(buf_size); if(!buf) return CHIAKI_ERR_MEMORY; buf[0] = TAKION_PACKET_TYPE_FEEDBACK_HISTORY; *((chiaki_unaligned_uint16_t *)(buf + 1)) = htons(seq_num); buf[3] = 0; // TODO *((chiaki_unaligned_uint32_t *)(buf + 4)) = 0; // key pos *((chiaki_unaligned_uint32_t *)(buf + 8)) = 0; // gmac memcpy(buf + 0xc, payload, payload_size); ChiakiErrorCode err = takion_send_feedback_packet(takion, buf, buf_size); free(buf); return err; } static ChiakiErrorCode takion_handshake(ChiakiTakion *takion, uint32_t *seq_num_remote_initial) { ChiakiErrorCode err; // INIT -> TakionMessagePayloadInit init_payload; init_payload.tag = takion->tag_local; init_payload.a_rwnd = TAKION_A_RWND; init_payload.outbound_streams = TAKION_OUTBOUND_STREAMS; init_payload.inbound_streams = TAKION_INBOUND_STREAMS; init_payload.initial_seq_num = takion->seq_num_local; err = takion_send_message_init(takion, &init_payload); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion failed to send init"); return err; } CHIAKI_LOGI(takion->log, "Takion sent init"); // INIT_ACK <- TakionMessagePayloadInitAck init_ack_payload; err = takion_recv_message_init_ack(takion, &init_ack_payload); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion failed to receive init ack"); return err; } if(init_ack_payload.tag == 0) { CHIAKI_LOGE(takion->log, "Takion remote tag in init ack is 0"); return CHIAKI_ERR_INVALID_RESPONSE; } CHIAKI_LOGI(takion->log, "Takion received init ack with remote tag %#x, outbound streams: %#x, inbound streams: %#x", init_ack_payload.tag, init_ack_payload.outbound_streams, init_ack_payload.inbound_streams); takion->tag_remote = init_ack_payload.tag; *seq_num_remote_initial = takion->tag_remote; //init_ack_payload.initial_seq_num; if(init_ack_payload.outbound_streams == 0 || init_ack_payload.inbound_streams == 0 || init_ack_payload.outbound_streams > TAKION_INBOUND_STREAMS || init_ack_payload.inbound_streams < TAKION_OUTBOUND_STREAMS) { CHIAKI_LOGE(takion->log, "Takion min/max check failed"); return CHIAKI_ERR_INVALID_RESPONSE; } // COOKIE -> err = takion_send_message_cookie(takion, init_ack_payload.cookie); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion failed to send cookie"); return err; } CHIAKI_LOGI(takion->log, "Takion sent cookie"); // COOKIE_ACK <- err = takion_recv_message_cookie_ack(takion); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion failed to receive cookie ack"); return err; } CHIAKI_LOGI(takion->log, "Takion received cookie ack"); // done! CHIAKI_LOGI(takion->log, "Takion connected"); return CHIAKI_ERR_SUCCESS; } static void takion_data_drop(uint64_t seq_num, void *elem_user, void *cb_user) { ChiakiTakion *takion = cb_user; CHIAKI_LOGE(takion->log, "Takion dropping data with seq num %#llx", (unsigned long long)seq_num); TakionDataPacketEntry *entry = elem_user; free(entry->packet_buf); free(entry); } static void *takion_thread_func(void *user) { ChiakiTakion *takion = user; uint32_t seq_num_remote_initial; if(takion_handshake(takion, &seq_num_remote_initial) != CHIAKI_ERR_SUCCESS) goto beach; if(chiaki_reorder_queue_init_32(&takion->data_queue, TAKION_REORDER_QUEUE_SIZE_EXP, seq_num_remote_initial) != CHIAKI_ERR_SUCCESS) goto beach; chiaki_reorder_queue_set_drop_cb(&takion->data_queue, takion_data_drop, takion); // The send buffer size MUST be consistent with the acked seqnums array size in takion_handle_packet_message_data_ack() if(chiaki_takion_send_buffer_init(&takion->send_buffer, takion, TAKION_SEND_BUFFER_SIZE) != CHIAKI_ERR_SUCCESS) goto error_reoder_queue; if(takion->cb) { ChiakiTakionEvent event = { 0 }; event.type = CHIAKI_TAKION_EVENT_TYPE_CONNECTED; takion->cb(&event, takion->cb_user); } bool crypt_available = takion->gkcrypt_remote ? true : false; while(true) { if(takion->enable_crypt && !crypt_available && takion->gkcrypt_remote) { crypt_available = true; CHIAKI_LOGI(takion->log, "Crypt has become available. Re-checking MACs of %llu packets", (unsigned long long)chiaki_reorder_queue_count(&takion->data_queue)); for(uint64_t i=0; idata_queue); i++) { TakionDataPacketEntry *packet; bool peeked = chiaki_reorder_queue_peek(&takion->data_queue, i, NULL, (void **)&packet); if(!peeked) continue; if(packet->packet_size == 0) continue; uint8_t base_type = (uint8_t)(packet->packet_buf[0] & TAKION_PACKET_BASE_TYPE_MASK); if(takion_handle_packet_mac(takion, base_type, packet->packet_buf, packet->packet_size) != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGW(takion->log, "Found an invalid MAC"); chiaki_reorder_queue_drop(&takion->data_queue, i); } } } if(takion->postponed_packets && takion->gkcrypt_remote) { // there are some postponed packets that were waiting until crypt is initialized and it is now :-) CHIAKI_LOGI(takion->log, "Takion flushing %llu postpone packet(s)", (unsigned long long)takion->postponed_packets_count); for(size_t i=0; ipostponed_packets_count; i++) { ChiakiTakionPostponedPacket *packet = &takion->postponed_packets[i]; takion_handle_packet(takion, packet->buf, packet->buf_size); } free(takion->postponed_packets); takion->postponed_packets = NULL; takion->postponed_packets_size = 0; takion->postponed_packets_count = 0; } size_t received_size = 1500; uint8_t *buf = malloc(received_size); // TODO: no malloc? if(!buf) break; ChiakiErrorCode err = takion_recv(takion, buf, &received_size, UINT64_MAX); if(err != CHIAKI_ERR_SUCCESS) { free(buf); break; } uint8_t *resized_buf = realloc(buf, received_size); if(!resized_buf) { free(buf); continue; } takion_handle_packet(takion, resized_buf, received_size); } // chiaki_congestion_control_stop(&congestion_control); chiaki_takion_send_buffer_fini(&takion->send_buffer); error_reoder_queue: chiaki_reorder_queue_fini(&takion->data_queue); beach: if(takion->cb) { ChiakiTakionEvent event = { 0 }; event.type = CHIAKI_TAKION_EVENT_TYPE_DISCONNECT; takion->cb(&event, takion->cb_user); } CHIAKI_SOCKET_CLOSE(takion->sock); return NULL; } static ChiakiErrorCode takion_recv(ChiakiTakion *takion, uint8_t *buf, size_t *buf_size, uint64_t timeout_ms) { ChiakiErrorCode err = chiaki_stop_pipe_select_single(&takion->stop_pipe, takion->sock, false, timeout_ms); if(err == CHIAKI_ERR_TIMEOUT || err == CHIAKI_ERR_CANCELED) return err; if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion select failed: %s", strerror(errno)); return err; } int received_sz = recv(takion->sock, buf, *buf_size, 0); if(received_sz <= 0) { if(received_sz < 0) CHIAKI_LOGE(takion->log, "Takion recv failed: %s", strerror(errno)); else CHIAKI_LOGE(takion->log, "Takion recv returned 0"); return CHIAKI_ERR_NETWORK; } *buf_size = (size_t)received_sz; return CHIAKI_ERR_SUCCESS; } static ChiakiErrorCode takion_handle_packet_mac(ChiakiTakion *takion, uint8_t base_type, uint8_t *buf, size_t buf_size) { if(!takion->gkcrypt_remote) return CHIAKI_ERR_SUCCESS; uint8_t mac[CHIAKI_GKCRYPT_GMAC_SIZE]; uint8_t mac_expected[CHIAKI_GKCRYPT_GMAC_SIZE]; uint64_t key_pos; ChiakiErrorCode err = chiaki_takion_packet_read_key_pos(takion, buf, buf_size, &key_pos); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion failed to pull key_pos out of received packet"); return err; } err = chiaki_takion_packet_mac(takion->gkcrypt_remote, buf, buf_size, key_pos, mac_expected, mac); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Takion failed to calculate mac for received packet"); return err; } if(memcmp(mac_expected, mac, sizeof(mac)) != 0) { CHIAKI_LOGE(takion->log, "Takion packet MAC mismatch for packet type %#x with key_pos %#lx", base_type, key_pos); chiaki_log_hexdump(takion->log, CHIAKI_LOG_ERROR, buf, buf_size); CHIAKI_LOGD(takion->log, "GMAC:"); chiaki_log_hexdump(takion->log, CHIAKI_LOG_DEBUG, mac, sizeof(mac)); CHIAKI_LOGD(takion->log, "GMAC expected:"); chiaki_log_hexdump(takion->log, CHIAKI_LOG_DEBUG, mac_expected, sizeof(mac_expected)); return CHIAKI_ERR_INVALID_MAC; } chiaki_key_state_commit(&takion->key_state, key_pos); return CHIAKI_ERR_SUCCESS; } static void takion_postpone_packet(ChiakiTakion *takion, uint8_t *buf, size_t buf_size) { if(!takion->postponed_packets) { takion->postponed_packets = calloc(TAKION_POSTPONE_PACKETS_SIZE, sizeof(ChiakiTakionPostponedPacket)); if(!takion->postponed_packets) return; takion->postponed_packets_size = TAKION_POSTPONE_PACKETS_SIZE; takion->postponed_packets_count = 0; } if(takion->postponed_packets_count >= takion->postponed_packets_size) { CHIAKI_LOGE(takion->log, "Should postpone a packet, but there is no space left"); return; } CHIAKI_LOGI(takion->log, "Postpone packet of size %#llx", (unsigned long long)buf_size); ChiakiTakionPostponedPacket *packet = &takion->postponed_packets[takion->postponed_packets_count++]; packet->buf = buf; packet->buf_size = buf_size; } /** * @param buf ownership of this buf is taken. */ static void takion_handle_packet(ChiakiTakion *takion, uint8_t *buf, size_t buf_size) { assert(buf_size > 0); uint8_t base_type = (uint8_t)(buf[0] & TAKION_PACKET_BASE_TYPE_MASK); if(takion_handle_packet_mac(takion, base_type, buf, buf_size) != CHIAKI_ERR_SUCCESS) { free(buf); return; } switch(base_type) { case TAKION_PACKET_TYPE_CONTROL: takion_handle_packet_message(takion, buf, buf_size); break; case TAKION_PACKET_TYPE_VIDEO: case TAKION_PACKET_TYPE_AUDIO: if(takion->enable_crypt && !takion->gkcrypt_remote) takion_postpone_packet(takion, buf, buf_size); else { takion_handle_packet_av(takion, base_type, buf, buf_size); free(buf); } break; default: CHIAKI_LOGW(takion->log, "Takion packet with unknown type %#x received", base_type); chiaki_log_hexdump(takion->log, CHIAKI_LOG_WARNING, buf, buf_size); free(buf); break; } } static void takion_handle_packet_message(ChiakiTakion *takion, uint8_t *buf, size_t buf_size) { TakionMessage msg; ChiakiErrorCode err = takion_parse_message(takion, buf+1, buf_size-1, &msg); if(err != CHIAKI_ERR_SUCCESS) { free(buf); return; } //CHIAKI_LOGD(takion->log, "Takion received message with tag %#x, key pos %#x, type (%#x, %#x), payload size %#x, payload:", msg.tag, msg.key_pos, msg.type_a, msg.type_b, msg.payload_size); //chiaki_log_hexdump(takion->log, CHIAKI_LOG_DEBUG, buf, buf_size); switch(msg.chunk_type) { case TAKION_CHUNK_TYPE_DATA: takion_handle_packet_message_data(takion, buf, buf_size, msg.chunk_flags, msg.payload, msg.payload_size); break; case TAKION_CHUNK_TYPE_DATA_ACK: takion_handle_packet_message_data_ack(takion, msg.chunk_flags, msg.payload, msg.payload_size); free(buf); break; default: CHIAKI_LOGW(takion->log, "Takion received message with unknown chunk type = %#x", msg.chunk_type); free(buf); break; } } static void takion_flush_data_queue(ChiakiTakion *takion) { uint64_t seq_num = 0; bool ack = false; while(true) { TakionDataPacketEntry *entry; bool pulled = chiaki_reorder_queue_pull(&takion->data_queue, &seq_num, (void **)&entry); if(!pulled) break; ack = true; if(entry->payload_size < 9) { free(entry->packet_buf); free(entry); continue; } uint16_t zero_a = *((chiaki_unaligned_uint16_t *)(entry->payload + 6)); uint8_t data_type = entry->payload[8]; // & 0xf if(zero_a != 0) CHIAKI_LOGW(takion->log, "Takion received data with unexpected nonzero %#x at buf+6", zero_a); if(data_type != CHIAKI_TAKION_MESSAGE_DATA_TYPE_PROTOBUF && data_type != CHIAKI_TAKION_MESSAGE_DATA_TYPE_RUMBLE && data_type != CHIAKI_TAKION_MESSAGE_DATA_TYPE_TRIGGER_EFFECTS && data_type != CHIAKI_TAKION_MESSAGE_DATA_TYPE_9) { CHIAKI_LOGW(takion->log, "Takion received data with unexpected data type %#x", data_type); chiaki_log_hexdump(takion->log, CHIAKI_LOG_WARNING, entry->packet_buf, entry->packet_size); } else if(takion->cb) { ChiakiTakionEvent event = { 0 }; event.type = CHIAKI_TAKION_EVENT_TYPE_DATA; event.data.data_type = (ChiakiTakionMessageDataType)data_type; event.data.buf = entry->payload + 9; event.data.buf_size = (size_t)(entry->payload_size - 9); takion->cb(&event, takion->cb_user); } free(entry->packet_buf); free(entry); } if(ack) chiaki_takion_send_message_data_ack(takion, (uint32_t)seq_num); } static void takion_handle_packet_message_data(ChiakiTakion *takion, uint8_t *packet_buf, size_t packet_buf_size, uint8_t type_b, uint8_t *payload, size_t payload_size) { if(type_b != 1) CHIAKI_LOGW(takion->log, "Takion received data with type_b = %#x (was expecting %#x)", type_b, 1); if(payload_size < 9) { CHIAKI_LOGE(takion->log, "Takion received data with a size less than the header size"); return; } TakionDataPacketEntry *entry = malloc(sizeof(TakionDataPacketEntry)); if(!entry) return; entry->type_b = type_b; entry->packet_buf = packet_buf; entry->packet_size = packet_buf_size; entry->payload = payload; entry->payload_size = payload_size; entry->channel = ntohs(*((chiaki_unaligned_uint16_t *)(payload + 4))); ChiakiSeqNum32 seq_num = ntohl(*((chiaki_unaligned_uint32_t *)(payload + 0))); chiaki_reorder_queue_push(&takion->data_queue, seq_num, entry); takion_flush_data_queue(takion); } static void takion_handle_packet_message_data_ack(ChiakiTakion *takion, uint8_t flags, uint8_t *buf, size_t buf_size) { if(buf_size != 0xc) { CHIAKI_LOGE(takion->log, "Takion received data ack with size %#x != %#x", buf_size, 0xa); return; } uint32_t cumulative_seq_num = ntohl(*((chiaki_unaligned_uint32_t *)(buf + 0))); uint32_t a_rwnd = ntohl(*((chiaki_unaligned_uint32_t *)(buf + 4))); uint16_t gap_ack_blocks_count = ntohs(*((chiaki_unaligned_uint16_t *)(buf + 8))); uint16_t dup_tsns_count = ntohs(*((chiaki_unaligned_uint16_t *)(buf + 0xa))); if(buf_size != gap_ack_blocks_count * 4 + 0xc) { CHIAKI_LOGW(takion->log, "Takion received data ack with invalid gap_ack_blocks_count"); return; } if(dup_tsns_count != 0) CHIAKI_LOGW(takion->log, "Takion received data ack with nonzero dup_tsns_count %#x", dup_tsns_count); CHIAKI_LOGV(takion->log, "Takion received data ack with cumulative_seq_num = %#x, a_rwnd = %#x, gap_ack_blocks_count = %#x, dup_tsns_count = %#x", cumulative_seq_num, a_rwnd, gap_ack_blocks_count, dup_tsns_count); ChiakiSeqNum32 acked_seq_nums[TAKION_SEND_BUFFER_SIZE]; size_t acked_seq_nums_count = 0; chiaki_takion_send_buffer_ack(&takion->send_buffer, cumulative_seq_num, acked_seq_nums, &acked_seq_nums_count); for(size_t i=0; icb(&event, takion->cb_user); } } /** * Write a Takion message header of size MESSAGE_HEADER_SIZE to buf. * * This includes chunk_type, chunk_flags and payload_size * * @param raw_payload_size size of the actual data of the payload excluding type_a, type_b and payload_size */ static void takion_write_message_header(uint8_t *buf, uint32_t tag, uint64_t key_pos, uint8_t chunk_type, uint8_t chunk_flags, size_t payload_data_size) { *((chiaki_unaligned_uint32_t *)(buf + 0)) = htonl(tag); memset(buf + 4, 0, CHIAKI_GKCRYPT_GMAC_SIZE); *((chiaki_unaligned_uint32_t *)(buf + 8)) = htonl(key_pos); *(buf + 0xc) = chunk_type; *(buf + 0xd) = chunk_flags; *((chiaki_unaligned_uint16_t *)(buf + 0xe)) = htons((uint16_t)(payload_data_size + 4)); } static ChiakiErrorCode takion_parse_message(ChiakiTakion *takion, uint8_t *buf, size_t buf_size, TakionMessage *msg) { if(buf_size < TAKION_MESSAGE_HEADER_SIZE) { CHIAKI_LOGE(takion->log, "Takion message received that is too short"); return CHIAKI_ERR_INVALID_DATA; } msg->tag = ntohl(*((chiaki_unaligned_uint32_t *)buf)); uint32_t key_pos_low = ntohl(*((chiaki_unaligned_uint32_t *)(buf + 0x8))); msg->key_pos = chiaki_key_state_request_pos(&takion->key_state, key_pos_low, true); msg->chunk_type = buf[0xc]; msg->chunk_flags = buf[0xd]; msg->payload_size = ntohs(*((chiaki_unaligned_uint16_t *)(buf + 0xe))); if(msg->tag != takion->tag_local) { CHIAKI_LOGE(takion->log, "Takion received message tag mismatch"); return CHIAKI_ERR_INVALID_DATA; } if(buf_size != msg->payload_size + 0xc) { CHIAKI_LOGE(takion->log, "Takion received message payload size mismatch"); return CHIAKI_ERR_INVALID_DATA; } msg->payload_size -= 0x4; if(msg->payload_size > 0) msg->payload = buf + 0x10; else msg->payload = NULL; return CHIAKI_ERR_SUCCESS; } static ChiakiErrorCode takion_send_message_init(ChiakiTakion *takion, TakionMessagePayloadInit *payload) { uint8_t message[1 + TAKION_MESSAGE_HEADER_SIZE + 0x10]; message[0] = TAKION_PACKET_TYPE_CONTROL; takion_write_message_header(message + 1, takion->tag_remote, 0, TAKION_CHUNK_TYPE_INIT, 0, 0x10); uint8_t *pl = message + 1 + TAKION_MESSAGE_HEADER_SIZE; *((chiaki_unaligned_uint32_t *)(pl + 0)) = htonl(payload->tag); *((chiaki_unaligned_uint32_t *)(pl + 4)) = htonl(payload->a_rwnd); *((chiaki_unaligned_uint16_t *)(pl + 8)) = htons(payload->outbound_streams); *((chiaki_unaligned_uint16_t *)(pl + 0xa)) = htons(payload->inbound_streams); *((chiaki_unaligned_uint32_t *)(pl + 0xc)) = htonl(payload->initial_seq_num); return chiaki_takion_send_raw(takion, message, sizeof(message)); } static ChiakiErrorCode takion_send_message_cookie(ChiakiTakion *takion, uint8_t *cookie) { uint8_t message[1 + TAKION_MESSAGE_HEADER_SIZE + TAKION_COOKIE_SIZE]; message[0] = TAKION_PACKET_TYPE_CONTROL; takion_write_message_header(message + 1, takion->tag_remote, 0, TAKION_CHUNK_TYPE_COOKIE, 0, TAKION_COOKIE_SIZE); memcpy(message + 1 + TAKION_MESSAGE_HEADER_SIZE, cookie, TAKION_COOKIE_SIZE); return chiaki_takion_send_raw(takion, message, sizeof(message)); } static ChiakiErrorCode takion_recv_message_init_ack(ChiakiTakion *takion, TakionMessagePayloadInitAck *payload) { uint8_t message[1 + TAKION_MESSAGE_HEADER_SIZE + 0x10 + TAKION_COOKIE_SIZE]; size_t received_size = sizeof(message); ChiakiErrorCode err = takion_recv(takion, message, &received_size, TAKION_EXPECT_TIMEOUT_MS); if(err != CHIAKI_ERR_SUCCESS) return err; if(received_size < sizeof(message)) { CHIAKI_LOGE(takion->log, "Takion received packet of size %#x while expecting init ack packet of exactly %#x", received_size, sizeof(message)); return CHIAKI_ERR_INVALID_RESPONSE; } if(message[0] != TAKION_PACKET_TYPE_CONTROL) { CHIAKI_LOGE(takion->log, "Takion received packet of type %#x while expecting init ack message with type %#x", message[0], TAKION_PACKET_TYPE_CONTROL); return CHIAKI_ERR_INVALID_RESPONSE; } TakionMessage msg; err = takion_parse_message(takion, message + 1, received_size - 1, &msg); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Failed to parse message while expecting init ack"); return CHIAKI_ERR_INVALID_RESPONSE; } if(msg.chunk_type != TAKION_CHUNK_TYPE_INIT_ACK || msg.chunk_flags != 0x0) { CHIAKI_LOGE(takion->log, "Takion received unexpected message with type (%#x, %#x) while expecting init ack", msg.chunk_type, msg.chunk_flags); return CHIAKI_ERR_INVALID_RESPONSE; } assert(msg.payload_size == 0x10 + TAKION_COOKIE_SIZE); uint8_t *pl = msg.payload; payload->tag = ntohl(*((chiaki_unaligned_uint32_t *)(pl + 0))); payload->a_rwnd = ntohl(*((chiaki_unaligned_uint32_t *)(pl + 4))); payload->outbound_streams = ntohs(*((chiaki_unaligned_uint16_t *)(pl + 8))); payload->inbound_streams = ntohs(*((chiaki_unaligned_uint16_t *)(pl + 0xa))); payload->initial_seq_num = ntohl(*((chiaki_unaligned_uint32_t *)(pl + 0xc))); memcpy(payload->cookie, pl + 0x10, TAKION_COOKIE_SIZE); return CHIAKI_ERR_SUCCESS; } static ChiakiErrorCode takion_recv_message_cookie_ack(ChiakiTakion *takion) { uint8_t message[1 + TAKION_MESSAGE_HEADER_SIZE]; size_t received_size = sizeof(message); ChiakiErrorCode err = takion_recv(takion, message, &received_size, TAKION_EXPECT_TIMEOUT_MS); if(err != CHIAKI_ERR_SUCCESS) return err; if(received_size < sizeof(message)) { CHIAKI_LOGE(takion->log, "Takion received packet of size %#x while expecting cookie ack packet of exactly %#x", received_size, sizeof(message)); return CHIAKI_ERR_INVALID_RESPONSE; } if(message[0] != TAKION_PACKET_TYPE_CONTROL) { CHIAKI_LOGE(takion->log, "Takion received packet of type %#x while expecting cookie ack message with type %#x", message[0], TAKION_PACKET_TYPE_CONTROL); return CHIAKI_ERR_INVALID_RESPONSE; } TakionMessage msg; err = takion_parse_message(takion, message + 1, received_size - 1, &msg); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(takion->log, "Failed to parse message while expecting cookie ack"); return CHIAKI_ERR_INVALID_RESPONSE; } if(msg.chunk_type != TAKION_CHUNK_TYPE_COOKIE_ACK || msg.chunk_flags != 0x0) { CHIAKI_LOGE(takion->log, "Takion received unexpected message with type (%#x, %#x) while expecting cookie ack", msg.chunk_type, msg.chunk_flags); return CHIAKI_ERR_INVALID_RESPONSE; } assert(msg.payload_size == 0); return CHIAKI_ERR_SUCCESS; } static void takion_handle_packet_av(ChiakiTakion *takion, uint8_t base_type, uint8_t *buf, size_t buf_size) { // HHIxIIx assert(base_type == TAKION_PACKET_TYPE_VIDEO || base_type == TAKION_PACKET_TYPE_AUDIO); ChiakiTakionAVPacket packet; ChiakiErrorCode err = takion->av_packet_parse(&packet, &takion->key_state, buf, buf_size); if(err != CHIAKI_ERR_SUCCESS) { if(err == CHIAKI_ERR_BUF_TOO_SMALL) CHIAKI_LOGE(takion->log, "Takion received AV packet that was too small"); return; } if(takion->cb) { ChiakiTakionEvent event = { 0 }; event.type = CHIAKI_TAKION_EVENT_TYPE_AV; event.av = &packet; takion->cb(&event, takion->cb_user); } } static ChiakiErrorCode av_packet_parse(bool v12, ChiakiTakionAVPacket *packet, ChiakiKeyState *key_state, uint8_t *buf, size_t buf_size) { memset(packet, 0, sizeof(ChiakiTakionAVPacket)); if(buf_size < 1) return CHIAKI_ERR_BUF_TOO_SMALL; uint8_t base_type = buf[0] & TAKION_PACKET_BASE_TYPE_MASK; if(base_type != TAKION_PACKET_TYPE_VIDEO && base_type != TAKION_PACKET_TYPE_AUDIO) return CHIAKI_ERR_INVALID_DATA; packet->is_video = base_type == TAKION_PACKET_TYPE_VIDEO; packet->uses_nalu_info_structs = ((buf[0] >> 4) & 1) != 0; uint8_t *av = buf+1; size_t av_size = buf_size-1; size_t av_header_size = v12 ? (packet->is_video ? CHIAKI_TAKION_V12_AV_HEADER_SIZE_VIDEO : CHIAKI_TAKION_V12_AV_HEADER_SIZE_AUDIO) : (packet->is_video ? CHIAKI_TAKION_V9_AV_HEADER_SIZE_VIDEO : CHIAKI_TAKION_V9_AV_HEADER_SIZE_AUDIO); if(av_size < av_header_size + 1) return CHIAKI_ERR_BUF_TOO_SMALL; packet->packet_index = ntohs(*((chiaki_unaligned_uint16_t *)(av + 0))); packet->frame_index = ntohs(*((chiaki_unaligned_uint16_t *)(av + 2))); uint32_t dword_2 = ntohl(*((chiaki_unaligned_uint32_t *)(av + 4))); if(packet->is_video) { packet->unit_index = (uint16_t)((dword_2 >> 0x15) & 0x7ff); packet->units_in_frame_total = (uint16_t)(((dword_2 >> 0xa) & 0x7ff) + 1); packet->units_in_frame_fec = (uint16_t)(dword_2 & 0x3ff); } else { packet->unit_index = (uint16_t)((dword_2 >> 0x18) & 0xff); packet->units_in_frame_total = (uint16_t)(((dword_2 >> 0x10) & 0xff) + 1); packet->units_in_frame_fec = (uint16_t)(dword_2 & 0xffff); } packet->codec = av[8]; uint32_t key_pos_low = ntohl(*((chiaki_unaligned_uint32_t *)(av + 0xd))); packet->key_pos = chiaki_key_state_request_pos(key_state, key_pos_low, true); uint8_t unknown_1 = av[0x11]; (void)unknown_1; av += 0x11; av_size -= 0x11; if(packet->is_video) { packet->word_at_0x18 = ntohs(*((chiaki_unaligned_uint16_t *)(av + 0))); packet->adaptive_stream_index = av[2] >> 5; av += 3; av_size -= 3; } else { av += 1; av_size -= 1; // unknown } // TODO: parsing for uses_nalu_info_structs (before: packet.byte_at_0x1a) if(packet->is_video) { packet->byte_at_0x2c = av[0]; //av += 2; //av_size -= 2; } if(packet->uses_nalu_info_structs) { av += 3; av_size -= 3; } if(v12 && !packet->is_video) { packet->is_haptics = *av == 0x02; av += 1; av_size -= 1; } packet->data = av; packet->data_size = av_size; return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_v9_av_packet_parse(ChiakiTakionAVPacket *packet, ChiakiKeyState *key_state, uint8_t *buf, size_t buf_size) { return av_packet_parse(false, packet, key_state, buf, buf_size); } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_v12_av_packet_parse(ChiakiTakionAVPacket *packet, ChiakiKeyState *key_state, uint8_t *buf, size_t buf_size) { return av_packet_parse(true, packet, key_state, buf, buf_size); } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_v7_av_packet_format_header(uint8_t *buf, size_t buf_size, size_t *header_size_out, ChiakiTakionAVPacket *packet) { size_t header_size = CHIAKI_TAKION_V7_AV_HEADER_SIZE_BASE; if(packet->is_video) header_size += CHIAKI_TAKION_V7_AV_HEADER_SIZE_VIDEO_ADD; if(packet->uses_nalu_info_structs) header_size += CHIAKI_TAKION_V7_AV_HEADER_SIZE_NALU_INFO_STRUCTS_ADD; *header_size_out = header_size; if(header_size > buf_size) return CHIAKI_ERR_BUF_TOO_SMALL; buf[0] = packet->is_video ? TAKION_PACKET_TYPE_VIDEO : TAKION_PACKET_TYPE_AUDIO; if(packet->uses_nalu_info_structs) buf[0] |= 0x10; *(chiaki_unaligned_uint16_t *)(buf + 1) = htons(packet->packet_index); *(chiaki_unaligned_uint16_t *)(buf + 3) = htons(packet->frame_index); *(chiaki_unaligned_uint32_t *)(buf + 5) = htonl( (packet->units_in_frame_fec & 0x3ff) | (((packet->units_in_frame_total - 1) & 0x7ff) << 0xa) | ((packet->unit_index & 0xffff) << 0x15)); buf[9] = packet->codec & 0xff; *(chiaki_unaligned_uint32_t *)(buf + 0xa) = 0; // unknown *(chiaki_unaligned_uint32_t *)(buf + 0xe) = (uint32_t)packet->key_pos; uint8_t *cur = buf + 0x12; if(packet->is_video) { *(chiaki_unaligned_uint16_t *)cur = htons(packet->word_at_0x18); cur[2] = packet->adaptive_stream_index << 5; cur += 3; } if(packet->uses_nalu_info_structs) { *(chiaki_unaligned_uint16_t *)cur = 0; // unknown cur[2] = 0; // unknown } return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_v7_av_packet_parse(ChiakiTakionAVPacket *packet, ChiakiKeyState *key_state, uint8_t *buf, size_t buf_size) { memset(packet, 0, sizeof(ChiakiTakionAVPacket)); if(buf_size < 1) return CHIAKI_ERR_BUF_TOO_SMALL; uint8_t base_type = buf[0] & TAKION_PACKET_BASE_TYPE_MASK; if(base_type != TAKION_PACKET_TYPE_VIDEO && base_type != TAKION_PACKET_TYPE_AUDIO) return CHIAKI_ERR_INVALID_DATA; packet->is_video = base_type == TAKION_PACKET_TYPE_VIDEO; packet->uses_nalu_info_structs = ((buf[0] >> 4) & 1) != 0; size_t header_size = CHIAKI_TAKION_V7_AV_HEADER_SIZE_BASE; if(packet->is_video) header_size += CHIAKI_TAKION_V7_AV_HEADER_SIZE_VIDEO_ADD; if(packet->uses_nalu_info_structs) header_size += CHIAKI_TAKION_V7_AV_HEADER_SIZE_NALU_INFO_STRUCTS_ADD; if(buf_size < header_size) return CHIAKI_ERR_BUF_TOO_SMALL; packet->packet_index = ntohs(*((chiaki_unaligned_uint16_t *)(buf + 1))); packet->frame_index = ntohs(*((chiaki_unaligned_uint16_t *)(buf + 3))); uint32_t dword_2 = ntohl(*((chiaki_unaligned_uint32_t *)(buf + 5))); packet->unit_index = (uint16_t)((dword_2 >> 0x15) & 0x7ff); packet->units_in_frame_total = (uint16_t)(((dword_2 >> 0xa) & 0x7ff) + 1); packet->units_in_frame_fec = (uint16_t)(dword_2 & 0x3ff); packet->codec = buf[9]; // unknown *(chiaki_unaligned_uint32_t *)(buf + 0xa) packet->key_pos = ntohl(*((chiaki_unaligned_uint32_t *)(buf + 0xe))); buf += 0x12; buf_size -= 0x12; if(packet->is_video) { packet->word_at_0x18 = ntohs(*((chiaki_unaligned_uint16_t *)(buf + 0))); packet->adaptive_stream_index = buf[2] >> 5; buf += 3; buf_size -= 3; } if(packet->uses_nalu_info_structs) { buf += 3; buf_size -= 3; // unknown } packet->data = buf; packet->data_size = buf_size; return CHIAKI_ERR_SUCCESS; } chiaki-v2.2.0/lib/src/takionsendbuffer.c000066400000000000000000000165441447035777400202170ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_UNIT_TEST #include #include #include #include #include #define TAKION_DATA_RESEND_TIMEOUT_MS 200 #define TAKION_DATA_RESEND_WAKEUP_TIMEOUT_MS (TAKION_DATA_RESEND_TIMEOUT_MS/2) #define TAKION_DATA_RESEND_TRIES_MAX 10 #endif struct chiaki_takion_send_buffer_packet_t { ChiakiSeqNum32 seq_num; uint64_t tries; uint64_t last_send_ms; // chiaki_time_now_monotonic_ms() uint8_t *buf; size_t buf_size; }; // ChiakiTakionSendBufferPacket #ifndef CHIAKI_UNIT_TEST static void *takion_send_buffer_thread_func(void *user); CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_buffer_init(ChiakiTakionSendBuffer *send_buffer, ChiakiTakion *takion, size_t size) { send_buffer->takion = takion; send_buffer->log = takion ? takion->log : NULL; send_buffer->packets = calloc(size, sizeof(ChiakiTakionSendBufferPacket)); if(!send_buffer->packets) return CHIAKI_ERR_MEMORY; send_buffer->packets_size = size; send_buffer->packets_count = 0; send_buffer->should_stop = false; ChiakiErrorCode err = chiaki_mutex_init(&send_buffer->mutex, false); if(err != CHIAKI_ERR_SUCCESS) goto error_packets; err = chiaki_cond_init(&send_buffer->cond); if(err != CHIAKI_ERR_SUCCESS) goto error_mutex; err = chiaki_thread_create(&send_buffer->thread, takion_send_buffer_thread_func, send_buffer); if(err != CHIAKI_ERR_SUCCESS) goto error_cond; chiaki_thread_set_name(&send_buffer->thread, "Chiaki Takion Send Buffer"); return CHIAKI_ERR_SUCCESS; error_cond: chiaki_cond_fini(&send_buffer->cond); error_mutex: chiaki_mutex_fini(&send_buffer->mutex); error_packets: free(send_buffer->packets); return err; } CHIAKI_EXPORT void chiaki_takion_send_buffer_fini(ChiakiTakionSendBuffer *send_buffer) { ChiakiErrorCode err = chiaki_mutex_lock(&send_buffer->mutex); assert(err == CHIAKI_ERR_SUCCESS); send_buffer->should_stop = true; chiaki_mutex_unlock(&send_buffer->mutex); err = chiaki_cond_signal(&send_buffer->cond); assert(err == CHIAKI_ERR_SUCCESS); err = chiaki_thread_join(&send_buffer->thread, NULL); assert(err == CHIAKI_ERR_SUCCESS); for(size_t i=0; ipackets_count; i++) free(send_buffer->packets[i].buf); chiaki_cond_fini(&send_buffer->cond); chiaki_mutex_fini(&send_buffer->mutex); free(send_buffer->packets); } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_buffer_push(ChiakiTakionSendBuffer *send_buffer, ChiakiSeqNum32 seq_num, uint8_t *buf, size_t buf_size) { ChiakiErrorCode err = chiaki_mutex_lock(&send_buffer->mutex); if(err != CHIAKI_ERR_SUCCESS) return err; if(send_buffer->packets_count >= send_buffer->packets_size) { CHIAKI_LOGE(send_buffer->log, "Takion Send Buffer overflow"); err = CHIAKI_ERR_OVERFLOW; goto beach; } for(size_t i=0; ipackets_count; i++) { if(send_buffer->packets[i].seq_num == seq_num) { CHIAKI_LOGE(send_buffer->log, "Tried to push duplicate seqnum into Takion Send Buffer"); err = CHIAKI_ERR_INVALID_DATA; goto beach; } } ChiakiTakionSendBufferPacket *packet = &send_buffer->packets[send_buffer->packets_count++]; packet->seq_num = seq_num; packet->tries = 0; packet->last_send_ms = chiaki_time_now_monotonic_ms(); packet->buf = buf; packet->buf_size = buf_size; CHIAKI_LOGV(send_buffer->log, "Pushed seq num %#llx into Takion Send Buffer", (unsigned long long)seq_num); if(send_buffer->packets_count == 1) { // buffer was empty before, so it will sleep without timeout => WAKE UP!! chiaki_cond_signal(&send_buffer->cond); } beach: if(err != CHIAKI_ERR_SUCCESS) free(buf); chiaki_mutex_unlock(&send_buffer->mutex); return err; } CHIAKI_EXPORT ChiakiErrorCode chiaki_takion_send_buffer_ack(ChiakiTakionSendBuffer *send_buffer, ChiakiSeqNum32 seq_num, ChiakiSeqNum32 *acked_seq_nums, size_t *acked_seq_nums_count) { ChiakiErrorCode err = chiaki_mutex_lock(&send_buffer->mutex); if(err != CHIAKI_ERR_SUCCESS) return err; if(acked_seq_nums_count) *acked_seq_nums_count = 0; size_t i; size_t shift = 0; // amount to shift back size_t shift_start = SIZE_MAX; for(i=0; ipackets_count; i++) { if(send_buffer->packets[i].seq_num == seq_num || chiaki_seq_num_32_lt(send_buffer->packets[i].seq_num, seq_num)) { if(acked_seq_nums) acked_seq_nums[(*acked_seq_nums_count)++] = send_buffer->packets[i].seq_num; free(send_buffer->packets[i].buf); if(shift_start == SIZE_MAX) { // first shift shift_start = i; shift = 1; } else if(shift_start + shift == i) { // still in the same gap shift++; } else { // new gap, do shift memmove(send_buffer->packets + shift_start, send_buffer->packets + shift_start + shift, (i - (shift_start + shift)) * sizeof(ChiakiTakionSendBufferPacket)); // start new shift shift_start = i - shift; shift++; } } } if(shift_start != SIZE_MAX) { // do final shift if(shift_start + shift < send_buffer->packets_count) { memmove(send_buffer->packets + shift_start, send_buffer->packets + shift_start + shift, (send_buffer->packets_count - (shift_start + shift)) * sizeof(ChiakiTakionSendBufferPacket)); } send_buffer->packets_count -= shift; } CHIAKI_LOGV(send_buffer->log, "Acked seq num %#llx from Takion Send Buffer", (unsigned long long)seq_num); chiaki_mutex_unlock(&send_buffer->mutex); return err; } static void takion_send_buffer_resend(ChiakiTakionSendBuffer *send_buffer); static bool takion_send_buffer_check_pred_packets(void *user) { ChiakiTakionSendBuffer *send_buffer = user; return send_buffer->should_stop; } static bool takion_send_buffer_check_pred_no_packets(void *user) { ChiakiTakionSendBuffer *send_buffer = user; return send_buffer->should_stop || send_buffer->packets_count; } static void *takion_send_buffer_thread_func(void *user) { ChiakiTakionSendBuffer *send_buffer = user; ChiakiErrorCode err = chiaki_mutex_lock(&send_buffer->mutex); if(err != CHIAKI_ERR_SUCCESS) return NULL; while(true) { if(send_buffer->packets_count) // if there are packets, wait with timeout err = chiaki_cond_timedwait_pred(&send_buffer->cond, &send_buffer->mutex, TAKION_DATA_RESEND_WAKEUP_TIMEOUT_MS, takion_send_buffer_check_pred_packets, send_buffer); else // if not, wait without timeout, but also wakeup if packets become available err = chiaki_cond_wait_pred(&send_buffer->cond, &send_buffer->mutex, takion_send_buffer_check_pred_no_packets, send_buffer); if(err != CHIAKI_ERR_SUCCESS && err != CHIAKI_ERR_TIMEOUT) break; if(send_buffer->should_stop) break; takion_send_buffer_resend(send_buffer); } chiaki_mutex_unlock(&send_buffer->mutex); return NULL; } static void takion_send_buffer_resend(ChiakiTakionSendBuffer *send_buffer) { if(!send_buffer->takion) return; uint64_t now = chiaki_time_now_monotonic_ms(); for(size_t i=0; ipackets_count; i++) { ChiakiTakionSendBufferPacket *packet = &send_buffer->packets[i]; if(now - packet->last_send_ms > TAKION_DATA_RESEND_TIMEOUT_MS) { CHIAKI_LOGI(send_buffer->log, "Takion Send Buffer re-sending packet with seqnum %#llx, tries: %llu", (unsigned long long)packet->seq_num, (unsigned long long)packet->tries); packet->last_send_ms = now; chiaki_takion_send_raw(send_buffer->takion, packet->buf, packet->buf_size); packet->tries++; // TODO: check tries and disconnect if necessary } } } #endif chiaki-v2.2.0/lib/src/thread.c000066400000000000000000000246731447035777400161370ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #define _GNU_SOURCE #include #include #include #include #include #ifdef __SWITCH__ #include #endif #if _WIN32 static DWORD WINAPI win32_thread_func(LPVOID param) { ChiakiThread *thread = (ChiakiThread *)param; thread->ret = thread->func(thread->arg); return 0; } #endif #ifdef __SWITCH__ int64_t get_thread_limit() { uint64_t resource_limit_handle_value = INVALID_HANDLE; svcGetInfo(&resource_limit_handle_value, InfoType_ResourceLimit, INVALID_HANDLE, 0); int64_t thread_cur_value = 0, thread_lim_value = 0; svcGetResourceLimitCurrentValue(&thread_cur_value, resource_limit_handle_value, LimitableResource_Threads); svcGetResourceLimitLimitValue(&thread_lim_value, resource_limit_handle_value, LimitableResource_Threads); //printf("thread_cur_value: %lu, thread_lim_value: %lu\n", thread_cur_value, thread_lim_value); return thread_lim_value - thread_cur_value; } #endif CHIAKI_EXPORT ChiakiErrorCode chiaki_thread_create(ChiakiThread *thread, ChiakiThreadFunc func, void *arg) { #if _WIN32 thread->func = func; thread->arg = arg; thread->ret = NULL; thread->thread = CreateThread(NULL, 0, win32_thread_func, thread, 0, 0); if(!thread->thread) return CHIAKI_ERR_THREAD; #else #ifdef __SWITCH__ if(get_thread_limit() <= 1) return CHIAKI_ERR_THREAD; #endif int r = pthread_create(&thread->thread, NULL, func, arg); if(r != 0) return CHIAKI_ERR_THREAD; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_thread_join(ChiakiThread *thread, void **retval) { #if _WIN32 int r = WaitForSingleObject(thread->thread, INFINITE); if(r != WAIT_OBJECT_0) return CHIAKI_ERR_THREAD; if(retval) *retval = thread->ret; #else int r = pthread_join(thread->thread, retval); if(r != 0) return CHIAKI_ERR_THREAD; #endif return CHIAKI_ERR_SUCCESS; } //#define CHIAKI_WINDOWS_THREAD_NAME CHIAKI_EXPORT ChiakiErrorCode chiaki_thread_set_name(ChiakiThread *thread, const char *name) { #if defined(_WIN32) && defined(CHIAKI_WINDOWS_THREAD_NAME) int len = MultiByteToWideChar(CP_UTF8, 0, name, -1, NULL, 0); wchar_t *wstr = calloc(sizeof(wchar_t), len+1); if(!wstr) return CHIAKI_ERR_MEMORY; MultiByteToWideChar(CP_UTF8, 0, name, -1, wstr, len); SetThreadDescription(thread->thread, wstr); free(wstr); #else #ifdef __GLIBC__ int r = pthread_setname_np(thread->thread, name); if(r != 0) return CHIAKI_ERR_THREAD; #else (void)thread; (void)name; #endif #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_init(ChiakiMutex *mutex, bool rec) { #if _WIN32 InitializeCriticalSection(&mutex->cs); (void)rec; // always recursive #else pthread_mutexattr_t attr; int r = pthread_mutexattr_init(&attr); if(r != 0) return CHIAKI_ERR_UNKNOWN; pthread_mutexattr_settype(&attr, rec ? PTHREAD_MUTEX_RECURSIVE : PTHREAD_MUTEX_DEFAULT); r = pthread_mutex_init(&mutex->mutex, &attr); pthread_mutexattr_destroy(&attr); if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_fini(ChiakiMutex *mutex) { #if _WIN32 DeleteCriticalSection(&mutex->cs); #else int r = pthread_mutex_destroy(&mutex->mutex); if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_lock(ChiakiMutex *mutex) { #if _WIN32 EnterCriticalSection(&mutex->cs); #else int r = pthread_mutex_lock(&mutex->mutex); if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_trylock(ChiakiMutex *mutex) { #if _WIN32 int r = TryEnterCriticalSection(&mutex->cs); if(!r) return CHIAKI_ERR_MUTEX_LOCKED; #else int r = pthread_mutex_trylock(&mutex->mutex); if(r == EBUSY) return CHIAKI_ERR_MUTEX_LOCKED; else if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_mutex_unlock(ChiakiMutex *mutex) { #if _WIN32 LeaveCriticalSection(&mutex->cs); #else int r = pthread_mutex_unlock(&mutex->mutex); if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_init(ChiakiCond *cond) { #if _WIN32 InitializeConditionVariable(&cond->cond); #else pthread_condattr_t attr; int r = pthread_condattr_init(&attr); if(r != 0) return CHIAKI_ERR_UNKNOWN; #if !__APPLE__ r = pthread_condattr_setclock(&attr, CLOCK_MONOTONIC); if(r != 0) { pthread_condattr_destroy(&attr); return CHIAKI_ERR_UNKNOWN; } #endif r = pthread_cond_init(&cond->cond, &attr); if(r != 0) { pthread_condattr_destroy(&attr); return CHIAKI_ERR_UNKNOWN; } pthread_condattr_destroy(&attr); #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_fini(ChiakiCond *cond) { #if _WIN32 #else int r = pthread_cond_destroy(&cond->cond); if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_wait(ChiakiCond *cond, ChiakiMutex *mutex) { #if _WIN32 int r = SleepConditionVariableCS(&cond->cond, &mutex->cs, INFINITE); if(!r) return CHIAKI_ERR_THREAD; #else int r = pthread_cond_wait(&cond->cond, &mutex->mutex); if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } #if !__APPLE__ && !defined(_WIN32) static ChiakiErrorCode chiaki_cond_timedwait_abs(ChiakiCond *cond, ChiakiMutex *mutex, struct timespec *timeout) { int r = pthread_cond_timedwait(&cond->cond, &mutex->mutex, timeout); if(r != 0) { if(r == ETIMEDOUT) return CHIAKI_ERR_TIMEOUT; return CHIAKI_ERR_UNKNOWN; } return CHIAKI_ERR_SUCCESS; } static void set_timeout(struct timespec *timeout, uint64_t ms_from_now) { clock_gettime(CLOCK_MONOTONIC, timeout); timeout->tv_sec += ms_from_now / 1000; timeout->tv_nsec += (ms_from_now % 1000) * 1000000; if(timeout->tv_nsec > 1000000000) { timeout->tv_sec += timeout->tv_nsec / 1000000000; timeout->tv_nsec %= 1000000000; } } #endif CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_timedwait(ChiakiCond *cond, ChiakiMutex *mutex, uint64_t timeout_ms) { #if _WIN32 int r = SleepConditionVariableCS(&cond->cond, &mutex->cs, (DWORD)timeout_ms); if(!r) { if(GetLastError() == ERROR_TIMEOUT) return CHIAKI_ERR_TIMEOUT; return CHIAKI_ERR_THREAD; } return CHIAKI_ERR_SUCCESS; #else struct timespec timeout; #if __APPLE__ timeout.tv_sec = (__darwin_time_t)(timeout_ms / 1000); timeout.tv_nsec = (long)((timeout_ms % 1000) * 1000000); int r = pthread_cond_timedwait_relative_np(&cond->cond, &mutex->mutex, &timeout); if(r != 0) { if(r == ETIMEDOUT) return CHIAKI_ERR_TIMEOUT; return CHIAKI_ERR_UNKNOWN; } return CHIAKI_ERR_SUCCESS; #else set_timeout(&timeout, timeout_ms); return chiaki_cond_timedwait_abs(cond, mutex, &timeout); #endif #endif } CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_wait_pred(ChiakiCond *cond, ChiakiMutex *mutex, ChiakiCheckPred check_pred, void *check_pred_user) { while(!check_pred(check_pred_user)) { ChiakiErrorCode err = chiaki_cond_wait(cond, mutex); if(err != CHIAKI_ERR_SUCCESS) return err; } return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_timedwait_pred(ChiakiCond *cond, ChiakiMutex *mutex, uint64_t timeout_ms, ChiakiCheckPred check_pred, void *check_pred_user) { #if __APPLE__ || defined(_WIN32) uint64_t start_time = chiaki_time_now_monotonic_ms(); uint64_t elapsed = 0; #else struct timespec timeout; set_timeout(&timeout, timeout_ms); #endif while(!check_pred(check_pred_user)) { #if __APPLE__ || defined(_WIN32) ChiakiErrorCode err = chiaki_cond_timedwait(cond, mutex, timeout_ms - elapsed); #else ChiakiErrorCode err = chiaki_cond_timedwait_abs(cond, mutex, &timeout); #endif if(err != CHIAKI_ERR_SUCCESS) return err; #if __APPLE__ || defined(_WIN32) elapsed = chiaki_time_now_monotonic_ms() - start_time; if(elapsed >= timeout_ms) return CHIAKI_ERR_TIMEOUT; #endif } return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_signal(ChiakiCond *cond) { #if _WIN32 WakeConditionVariable(&cond->cond); #else int r = pthread_cond_signal(&cond->cond); if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_cond_broadcast(ChiakiCond *cond) { #if _WIN32 WakeAllConditionVariable(&cond->cond); #else int r = pthread_cond_broadcast(&cond->cond); if(r != 0) return CHIAKI_ERR_UNKNOWN; #endif return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_init(ChiakiBoolPredCond *cond) { cond->pred = false; ChiakiErrorCode err = chiaki_mutex_init(&cond->mutex, false); if(err != CHIAKI_ERR_SUCCESS) return err; err = chiaki_cond_init(&cond->cond); if(err != CHIAKI_ERR_SUCCESS) { chiaki_mutex_fini(&cond->mutex); return err; } return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_fini(ChiakiBoolPredCond *cond) { ChiakiErrorCode err = chiaki_cond_fini(&cond->cond); if(err != CHIAKI_ERR_SUCCESS) return err; err = chiaki_mutex_fini(&cond->mutex); if(err != CHIAKI_ERR_SUCCESS) return err; return CHIAKI_ERR_SUCCESS; } CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_lock(ChiakiBoolPredCond *cond) { return chiaki_mutex_lock(&cond->mutex); } CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_unlock(ChiakiBoolPredCond *cond) { return chiaki_mutex_unlock(&cond->mutex); } bool bool_pred_cond_check_pred(void *user) { ChiakiBoolPredCond *bool_pred_cond = user; return bool_pred_cond->pred; } CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_wait(ChiakiBoolPredCond *cond) { return chiaki_cond_wait_pred(&cond->cond, &cond->mutex, bool_pred_cond_check_pred, cond); } CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_timedwait(ChiakiBoolPredCond *cond, uint64_t timeout_ms) { return chiaki_cond_timedwait_pred(&cond->cond, &cond->mutex, timeout_ms, bool_pred_cond_check_pred, cond); } CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_signal(ChiakiBoolPredCond *cond) { ChiakiErrorCode err = chiaki_bool_pred_cond_lock(cond); if(err != CHIAKI_ERR_SUCCESS) return err; cond->pred = true; err = chiaki_bool_pred_cond_unlock(cond); if(err != CHIAKI_ERR_SUCCESS) return err; return chiaki_cond_signal(&cond->cond); } CHIAKI_EXPORT ChiakiErrorCode chiaki_bool_pred_cond_broadcast(ChiakiBoolPredCond *cond) { ChiakiErrorCode err = chiaki_bool_pred_cond_lock(cond); if(err != CHIAKI_ERR_SUCCESS) return err; cond->pred = true; err = chiaki_bool_pred_cond_unlock(cond); if(err != CHIAKI_ERR_SUCCESS) return err; return chiaki_cond_broadcast(&cond->cond); } chiaki-v2.2.0/lib/src/time.c000066400000000000000000000010451447035777400156120ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #ifdef _WIN32 #include #endif CHIAKI_EXPORT uint64_t chiaki_time_now_monotonic_us() { #if _WIN32 LARGE_INTEGER f; if(!QueryPerformanceFrequency(&f)) return 0; LARGE_INTEGER v; if(!QueryPerformanceCounter(&v)) return 0; v.QuadPart *= 1000000; v.QuadPart /= f.QuadPart; return v.QuadPart; #else struct timespec time; clock_gettime(CLOCK_MONOTONIC, &time); return time.tv_sec * 1000000 + time.tv_nsec / 1000; #endif } chiaki-v2.2.0/lib/src/utils.h000066400000000000000000000075171447035777400160330ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_UTILS_H #define CHIAKI_UTILS_H #include #include #ifdef _WIN32 #include #else #include #include #include #endif #ifdef __FreeBSD__ #include #include #include #include #endif #include static inline ChiakiErrorCode set_port(struct sockaddr *sa, uint16_t port) { if(sa->sa_family == AF_INET) ((struct sockaddr_in *)sa)->sin_port = port; else if(sa->sa_family == AF_INET6) ((struct sockaddr_in6 *)sa)->sin6_port = port; else return CHIAKI_ERR_INVALID_DATA; return CHIAKI_ERR_SUCCESS; } static inline const char *sockaddr_str(struct sockaddr *addr, char *addr_buf, size_t addr_buf_size) { void *addr_src; switch(addr->sa_family) { case AF_INET: addr_src = &((struct sockaddr_in *)addr)->sin_addr; break; case AF_INET6: addr_src = &((struct sockaddr_in6 *)addr)->sin6_addr; break; default: addr_src = NULL; break; } if(addr_src) return inet_ntop(addr->sa_family, addr_src, addr_buf, addr_buf_size); return NULL; } static inline int sendto_broadcast(ChiakiLog *log, chiaki_socket_t s, const void *msg, size_t len, int flags, const struct sockaddr *to, socklen_t tolen) { #ifdef __FreeBSD__ // see https://wiki.freebsd.org/NetworkRFCCompliance if(to->sa_family == AF_INET && ((const struct sockaddr_in *)to)->sin_addr.s_addr == htonl(INADDR_BROADCAST)) { struct ifaddrs *ifap; if(getifaddrs(&ifap) < 0) { CHIAKI_LOGE(log, "Failed to getifaddrs for Broadcast: %s", strerror(errno)); return -1; } int r = -1; for(struct ifaddrs *a=ifap; a; a=a->ifa_next) { if(!a->ifa_broadaddr) continue; if(!(a->ifa_flags & IFF_BROADCAST)) continue; if(a->ifa_broadaddr->sa_family != to->sa_family) continue; ((struct sockaddr_in *)a->ifa_broadaddr)->sin_port = ((const struct sockaddr_in *)to)->sin_port; char addr_buf[64]; const char *addr_str = sockaddr_str(a->ifa_broadaddr, addr_buf, sizeof(addr_buf)); CHIAKI_LOGV(log, "Broadcast to %s on %s", addr_str ? addr_str : "(null)", a->ifa_name); int sr = sendto(s, msg, len, flags, a->ifa_broadaddr, sizeof(*a->ifa_broadaddr)); if(sr < 0) { CHIAKI_LOGE(log, "Broadcast on iface %s failed: %s", a->ifa_name, strerror(errno)); continue; } r = sr; } freeifaddrs(ifap); return r; } #endif return sendto(s, msg, len, flags, to, tolen); } static inline void xor_bytes(uint8_t *dst, uint8_t *src, size_t sz) { while(sz > 0) { *dst ^= *src; dst++; src++; sz--; } } static inline int8_t nibble_value(char c) { if(c >= '0' && c <= '9') return c - '0'; if(c >= 'a' && c <= 'f') return c - 'a' + 0xa; if(c >= 'A' && c <= 'F') return c - 'A' + 0xa; return -1; } static inline ChiakiErrorCode parse_hex(uint8_t *buf, size_t *buf_size, const char *hex, size_t hex_size) { if(hex_size % 2 != 0) return CHIAKI_ERR_INVALID_DATA; if(hex_size / 2 > *buf_size) return CHIAKI_ERR_BUF_TOO_SMALL; for(size_t i=0; i 0xf) return '0'; if(v < 0xa) return '0' + v; return 'a' + v; } static inline ChiakiErrorCode format_hex(char *hex_buf, size_t hex_buf_size, const uint8_t *buf, size_t buf_size) { if(hex_buf_size < buf_size * 2 + 1) return CHIAKI_ERR_BUF_TOO_SMALL; for(size_t i=0; i> 4); hex_buf[i*2+1] = nibble_char(v & 0xf); } hex_buf[buf_size*2] = '\0'; return CHIAKI_ERR_SUCCESS; } #endif // CHIAKI_UTILS_H chiaki-v2.2.0/lib/src/videoreceiver.c000066400000000000000000000136151447035777400175150ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include static ChiakiErrorCode chiaki_video_receiver_flush_frame(ChiakiVideoReceiver *video_receiver); CHIAKI_EXPORT void chiaki_video_receiver_init(ChiakiVideoReceiver *video_receiver, struct chiaki_session_t *session, ChiakiPacketStats *packet_stats) { video_receiver->session = session; video_receiver->log = session->log; memset(video_receiver->profiles, 0, sizeof(video_receiver->profiles)); video_receiver->profiles_count = 0; video_receiver->profile_cur = -1; video_receiver->frame_index_cur = -1; video_receiver->frame_index_prev = -1; video_receiver->frame_index_prev_complete = 0; chiaki_frame_processor_init(&video_receiver->frame_processor, video_receiver->log); video_receiver->packet_stats = packet_stats; } CHIAKI_EXPORT void chiaki_video_receiver_fini(ChiakiVideoReceiver *video_receiver) { for(size_t i=0; iprofiles_count; i++) free(video_receiver->profiles[i].header); chiaki_frame_processor_fini(&video_receiver->frame_processor); } CHIAKI_EXPORT void chiaki_video_receiver_stream_info(ChiakiVideoReceiver *video_receiver, ChiakiVideoProfile *profiles, size_t profiles_count) { if(video_receiver->profiles_count > 0) { CHIAKI_LOGE(video_receiver->log, "Video Receiver profiles already set"); return; } memcpy(video_receiver->profiles, profiles, profiles_count * sizeof(ChiakiVideoProfile)); video_receiver->profiles_count = profiles_count; CHIAKI_LOGI(video_receiver->log, "Video Profiles:"); for(size_t i=0; iprofiles_count; i++) { ChiakiVideoProfile *profile = &video_receiver->profiles[i]; CHIAKI_LOGI(video_receiver->log, " %zu: %ux%u", i, profile->width, profile->height); //chiaki_log_hexdump(video_receiver->log, CHIAKI_LOG_DEBUG, profile->header, profile->header_sz); } } CHIAKI_EXPORT void chiaki_video_receiver_av_packet(ChiakiVideoReceiver *video_receiver, ChiakiTakionAVPacket *packet) { // old frame? ChiakiSeqNum16 frame_index = packet->frame_index; if(video_receiver->frame_index_cur >= 0 && chiaki_seq_num_16_lt(frame_index, (ChiakiSeqNum16)video_receiver->frame_index_cur)) { CHIAKI_LOGW(video_receiver->log, "Video Receiver received old frame packet"); return; } // check adaptive stream index if(video_receiver->profile_cur < 0 || video_receiver->profile_cur != packet->adaptive_stream_index) { if(packet->adaptive_stream_index >= video_receiver->profiles_count) { CHIAKI_LOGE(video_receiver->log, "Packet has invalid adaptive stream index %lu >= %lu", (unsigned int)packet->adaptive_stream_index, (unsigned int)video_receiver->profiles_count); return; } video_receiver->profile_cur = packet->adaptive_stream_index; ChiakiVideoProfile *profile = video_receiver->profiles + video_receiver->profile_cur; CHIAKI_LOGI(video_receiver->log, "Switched to profile %d, resolution: %ux%u", video_receiver->profile_cur, profile->width, profile->height); if(video_receiver->session->video_sample_cb) video_receiver->session->video_sample_cb(profile->header, profile->header_sz, video_receiver->session->video_sample_cb_user); } // next frame? if(video_receiver->frame_index_cur < 0 || chiaki_seq_num_16_gt(frame_index, (ChiakiSeqNum16)video_receiver->frame_index_cur)) { if(video_receiver->packet_stats) chiaki_frame_processor_report_packet_stats(&video_receiver->frame_processor, video_receiver->packet_stats); // last frame not flushed yet? if(video_receiver->frame_index_cur >= 0 && video_receiver->frame_index_prev != video_receiver->frame_index_cur) chiaki_video_receiver_flush_frame(video_receiver); ChiakiSeqNum16 next_frame_expected = (ChiakiSeqNum16)(video_receiver->frame_index_prev_complete + 1); if(chiaki_seq_num_16_gt(frame_index, next_frame_expected) && !(frame_index == 1 && video_receiver->frame_index_cur < 0)) // ok for frame 1 { CHIAKI_LOGW(video_receiver->log, "Detected missing or corrupt frame(s) from %d to %d", next_frame_expected, (int)frame_index); stream_connection_send_corrupt_frame(&video_receiver->session->stream_connection, next_frame_expected, frame_index - 1); } video_receiver->frame_index_cur = frame_index; chiaki_frame_processor_alloc_frame(&video_receiver->frame_processor, packet); } chiaki_frame_processor_put_unit(&video_receiver->frame_processor, packet); // if we are currently building up a frame if(video_receiver->frame_index_cur != video_receiver->frame_index_prev) { // if we already have enough for the whole frame, flush it already if(chiaki_frame_processor_flush_possible(&video_receiver->frame_processor)) chiaki_video_receiver_flush_frame(video_receiver); } } #define FLUSH_CORRUPT_FRAMES static ChiakiErrorCode chiaki_video_receiver_flush_frame(ChiakiVideoReceiver *video_receiver) { uint8_t *frame; size_t frame_size; ChiakiFrameProcessorFlushResult flush_result = chiaki_frame_processor_flush(&video_receiver->frame_processor, &frame, &frame_size); if(flush_result == CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FAILED #ifndef FLUSH_CORRUPT_FRAMES || flush_result == CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FEC_FAILED #endif ) { CHIAKI_LOGW(video_receiver->log, "Failed to complete frame %d", (int)video_receiver->frame_index_cur); return CHIAKI_ERR_UNKNOWN; } // TODO: Error Concealment on CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FEC_FAILED bool succ = flush_result != CHIAKI_FRAME_PROCESSOR_FLUSH_RESULT_FEC_FAILED; if(video_receiver->session->video_sample_cb) { bool cb_succ = video_receiver->session->video_sample_cb(frame, frame_size, video_receiver->session->video_sample_cb_user); if(!cb_succ) { succ = false; CHIAKI_LOGW(video_receiver->log, "Video callback did not process frame successfully."); } } video_receiver->frame_index_prev = video_receiver->frame_index_cur; if(succ) video_receiver->frame_index_prev_complete = video_receiver->frame_index_cur; return CHIAKI_ERR_SUCCESS; } chiaki-v2.2.0/scripts/000077500000000000000000000000001447035777400146425ustar00rootroot00000000000000chiaki-v2.2.0/scripts/Dockerfile.bionic000066400000000000000000000013241447035777400200760ustar00rootroot00000000000000 FROM ubuntu:bionic RUN apt-get update RUN apt-get install -y software-properties-common gpg wget RUN add-apt-repository ppa:beineri/opt-qt-5.12.10-bionic COPY kitware-archive-latest.asc /kitware-archive-latest.asc RUN cat /kitware-archive-latest.asc | gpg --dearmor > /usr/share/keyrings/kitware-archive-keyring.gpg RUN echo 'deb [signed-by=/usr/share/keyrings/kitware-archive-keyring.gpg] https://apt.kitware.com/ubuntu/ bionic main' > /etc/apt/sources.list.d/kitware.list RUN apt-get update RUN apt-get -y install git g++ cmake ninja-build curl pkg-config unzip python3-pip \ libssl-dev libopus-dev qt512base qt512multimedia qt512svg \ libgl1-mesa-dev nasm libudev-dev libva-dev fuse libevdev-dev libudev-dev CMD [] chiaki-v2.2.0/scripts/Dockerfile.bullseye000066400000000000000000000005111447035777400204540ustar00rootroot00000000000000 FROM debian:bullseye RUN apt-get update RUN apt-get -y install git g++ cmake ninja-build pkg-config \ libjerasure-dev nanopb libnanopb-dev libavcodec-dev libopus-dev \ libssl-dev protobuf-compiler python3 python3-protobuf \ libevdev-dev libudev-dev \ libqt5opengl5-dev libqt5svg5-dev qtmultimedia5-dev libsdl2-dev CMD [] chiaki-v2.2.0/scripts/appveyor-win.sh000077500000000000000000000050421447035777400176420ustar00rootroot00000000000000#!/bin/bash set -xe BUILD_ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )/.." && pwd )" BUILD_ROOT="$(echo $BUILD_ROOT | sed 's|^/\([a-z]\)|\1:|g')" # replace /c/... by c:/... for cmake to understand it echo "BUILD_ROOT=$BUILD_ROOT" mkdir ninja && cd ninja wget https://github.com/ninja-build/ninja/releases/download/v1.9.0/ninja-win.zip && 7z x ninja-win.zip cd .. mkdir yasm && cd yasm wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0-win64.exe && mv yasm-1.3.0-win64.exe yasm.exe cd .. export PATH="$PWD/ninja:$PWD/yasm:/c/Qt/5.12/msvc2017_64/bin:$PATH" scripts/build-ffmpeg.sh . --target-os=win64 --arch=x86_64 --toolchain=msvc git clone https://github.com/xiph/opus.git && cd opus && git checkout ad8fe90db79b7d2a135e3dfd2ed6631b0c5662ab mkdir build && cd build cmake \ -G Ninja \ -DCMAKE_C_COMPILER=cl \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_INSTALL_PREFIX="$BUILD_ROOT/opus-prefix" \ .. ninja ninja install cd ../.. wget https://download.firedaemon.com/FireDaemon-OpenSSL/openssl-1.1.1s.zip && 7z x openssl-1.1.*.zip wget https://www.libsdl.org/release/SDL2-devel-2.26.2-VC.zip && 7z x SDL2-devel-2.26.2-VC.zip export SDL_ROOT="$BUILD_ROOT/SDL2-2.26.2" export SDL_ROOT=${SDL_ROOT//[\\]//} echo "set(SDL2_INCLUDE_DIRS \"$SDL_ROOT/include\") set(SDL2_LIBRARIES \"$SDL_ROOT/lib/x64/SDL2.lib\") set(SDL2_LIBDIR \"$SDL_ROOT/lib/x64\") include($SDL_ROOT/cmake/sdl2-config-version.cmake)" > "$SDL_ROOT/SDL2Config.cmake" mkdir protoc && cd protoc wget https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-win64.zip && 7z x protoc-3.9.1-win64.zip cd .. export PATH="$PWD/protoc/bin:$PATH" PYTHON="C:/Python37/python.exe" "$PYTHON" -m pip install protobuf==3.19.5 QT_PATH="C:/Qt/5.15/msvc2019_64" COPY_DLLS="$PWD/openssl-1.1/x64/bin/libcrypto-1_1-x64.dll $PWD/openssl-1.1/x64/bin/libssl-1_1-x64.dll $SDL_ROOT/lib/x64/SDL2.dll" echo "-- Configure" mkdir build && cd build cmake \ -G Ninja \ -DCMAKE_C_COMPILER=cl \ -DCMAKE_C_FLAGS="-we4013" \ -DCMAKE_BUILD_TYPE=RelWithDebInfo \ -DCMAKE_PREFIX_PATH="$BUILD_ROOT/ffmpeg-prefix;$BUILD_ROOT/opus-prefix;$BUILD_ROOT/openssl-1.1/x64;$QT_PATH;$SDL_ROOT" \ -DPYTHON_EXECUTABLE="$PYTHON" \ -DCHIAKI_ENABLE_TESTS=ON \ -DCHIAKI_ENABLE_CLI=OFF \ -DCHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER=ON \ .. echo "-- Build" ninja echo "-- Test" cp $COPY_DLLS test/ test/chiaki-unit.exe cd .. # Deploy echo "-- Deploy" mkdir Chiaki && cp build/gui/chiaki.exe Chiaki mkdir Chiaki-PDB && cp build/gui/chiaki.pdb Chiaki-PDB "$QT_PATH/bin/windeployqt.exe" Chiaki/chiaki.exe cp -v $COPY_DLLS Chiaki chiaki-v2.2.0/scripts/build-appimage.sh000077500000000000000000000032521447035777400200630ustar00rootroot00000000000000#!/bin/bash set -xe # sometimes there are errors in linuxdeploy in docker/podman when the appdir is on a mount appdir=${1:-`pwd`/appimage/appdir} mkdir appimage pip3 install --user protobuf==3.19.5 # need support for python 3.6 for running on bionic scripts/fetch-protoc.sh appimage export PATH="`pwd`/appimage/protoc/bin:$PATH" scripts/build-ffmpeg.sh appimage scripts/build-sdl2.sh appimage mkdir build_appimage cd build_appimage cmake \ -GNinja \ -DCMAKE_BUILD_TYPE=Release \ "-DCMAKE_PREFIX_PATH=`pwd`/../appimage/ffmpeg-prefix;`pwd`/../appimage/sdl2-prefix;/opt/qt512" \ -DCHIAKI_ENABLE_TESTS=ON \ -DCHIAKI_ENABLE_CLI=OFF \ -DCHIAKI_ENABLE_GUI=ON \ -DCHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER=ON \ -DCMAKE_INSTALL_PREFIX=/usr \ .. cd .. # purge leftover proto/nanopb_pb2.py which may have been created with another protobuf version rm -fv third-party/nanopb/generator/proto/nanopb_pb2.py ninja -C build_appimage build_appimage/test/chiaki-unit DESTDIR="${appdir}" ninja -C build_appimage install cd appimage curl -L -O https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage chmod +x linuxdeploy-x86_64.AppImage curl -L -O https://github.com/linuxdeploy/linuxdeploy-plugin-qt/releases/download/continuous/linuxdeploy-plugin-qt-x86_64.AppImage chmod +x linuxdeploy-plugin-qt-x86_64.AppImage set +e source /opt/qt512/bin/qt512-env.sh set -e export LD_LIBRARY_PATH="`pwd`/sdl2-prefix/lib:$LD_LIBRARY_PATH" export EXTRA_QT_PLUGINS=opengl ./linuxdeploy-x86_64.AppImage --appdir="${appdir}" -e "${appdir}/usr/bin/chiaki" -d "${appdir}/usr/share/applications/chiaki.desktop" --plugin qt --output appimage mv Chiaki*-x86_64.AppImage Chiaki.AppImage chiaki-v2.2.0/scripts/build-common.sh000077500000000000000000000007151447035777400175710ustar00rootroot00000000000000#!/bin/bash # purge leftover proto/nanopb_pb2.py which may have been created with another protobuf version rm -fv third-party/nanopb/generator/proto/nanopb_pb2.py mkdir build && cd build || exit 1 cmake \ -DCMAKE_BUILD_TYPE=Release \ -DCMAKE_PREFIX_PATH=$CMAKE_PREFIX_PATH \ -DCHIAKI_ENABLE_TESTS=ON \ -DCHIAKI_ENABLE_CLI=OFF \ -DCHIAKI_GUI_ENABLE_SDL_GAMECONTROLLER=ON \ $CMAKE_EXTRA_ARGS \ .. || exit 1 make -j4 || exit 1 test/chiaki-unit || exit 1 chiaki-v2.2.0/scripts/build-ffmpeg.sh000077500000000000000000000006311447035777400175420ustar00rootroot00000000000000#!/bin/bash cd $(dirname "${BASH_SOURCE[0]}")/.. cd "./$1" shift ROOT="`pwd`" TAG=n4.3.1 git clone https://git.ffmpeg.org/ffmpeg.git --depth 1 -b $TAG && cd ffmpeg || exit 1 ./configure --disable-all --enable-avcodec --enable-decoder=h264 --enable-decoder=hevc --enable-hwaccel=h264_vaapi --enable-hwaccel=hevc_vaapi --prefix="$ROOT/ffmpeg-prefix" "$@" || exit 1 make -j4 || exit 1 make install || exit 1 chiaki-v2.2.0/scripts/build-sdl2.sh000077500000000000000000000014211447035777400171400ustar00rootroot00000000000000#!/bin/bash set -xe cd $(dirname "${BASH_SOURCE[0]}")/.. cd "./$1" ROOT="`pwd`" SDL_VER=2.26.1 URL=https://www.libsdl.org/release/SDL2-${SDL_VER}.tar.gz FILE=SDL2-${SDL_VER}.tar.gz DIR=SDL2-${SDL_VER} if [ ! -d "$DIR" ]; then curl -L "$URL" -O tar -xf "$FILE" fi cd "$DIR" || exit 1 mkdir -p build && cd build || exit 1 cmake \ -DCMAKE_INSTALL_PREFIX="$ROOT/sdl2-prefix" \ -DSDL_ATOMIC=OFF \ -DSDL_AUDIO=ON \ -DSDL_CPUINFO=OFF \ -DSDL_EVENTS=ON \ -DSDL_FILE=OFF \ -DSDL_FILESYSTEM=OFF \ -DSDL_HAPTIC=ON \ -DSDL_JOYSTICK=ON \ -DSDL_LOADSO=ON \ -DSDL_RENDER=OFF \ -DSDL_SHARED=ON \ -DSDL_STATIC=OFF \ -DSDL_TEST=OFF \ -DSDL_THREADS=ON \ -DSDL_TIMERS=OFF \ -DSDL_VIDEO=OFF \ .. # SDL_THREADS is not needed, but it doesn't compile without make -j4 make install chiaki-v2.2.0/scripts/docker-run.sh000077500000000000000000000004361447035777400172550ustar00rootroot00000000000000#!/bin/bash docker run \ -v $HOME/.local/share/Chiaki:/home/ps4/.local/share/Chiaki \ -v $HOME/.config/Chiaki:/home/ps4/.config/Chiaki \ -v /tmp/.X11-unix:/tmp/.X11-unix \ --net host \ -e DISPLAY=$DISPLAY \ --device /dev/snd \ --name chiaki \ --rm \ thestr4ng3r/chiaki chiaki-v2.2.0/scripts/fetch-protoc.sh000077500000000000000000000003641447035777400176010ustar00rootroot00000000000000#!/bin/bash set -xe cd $(dirname "${BASH_SOURCE[0]}")/.. cd "./$1" ROOT="`pwd`" URL=https://github.com/protocolbuffers/protobuf/releases/download/v3.9.1/protoc-3.9.1-linux-x86_64.zip curl -L "$URL" -o protoc.zip unzip protoc.zip -d protoc chiaki-v2.2.0/scripts/flatpak/000077500000000000000000000000001447035777400162645ustar00rootroot00000000000000chiaki-v2.2.0/scripts/flatpak/com.github.thestr4ng3r.Chiaki.json000066400000000000000000000056621447035777400246040ustar00rootroot00000000000000{ "app-id": "org.flatpak.Chiaki", "runtime": "org.kde.Platform", "runtime-version": "5.14", "sdk": "org.kde.Sdk", "command": "chiaki", "rename-icon": "chiaki", "rename-desktop-file": "chiaki.desktop", "separate-locales": false, "finish-args": [ "--share=network", "--share=ipc", "--socket=wayland", "--socket=x11", "--device=all", "--device=dri", "--allow=bluetooth", "--socket=pulseaudio", "--filesystem=home", "--own-name=org.kde.*", "--env=DBUS_FATAL_WARNINGS=0", "--talk-name=org.freedesktop.ScreenSaver" ], "add-extensions": { "org.freedesktop.Platform.ffmpeg-full": { "directory": "lib/ffmpeg", "add-ld-path": ".", "version": "19.08", "autodownload": true, "autodelete": false }, "org.freedesktop.Platform.VAAPI.Intel": { "directory": "lib/intel-vaapi-driver", "add-ld-path": "lib", "version": "19.08" } }, "modules": [ { "name": "protobuf-compilers", "buildsystem": "simple", "build-commands": [ "install -D protoc /app/bin/protoc" ], "sources": [ { "type": "archive", "url": "https://github.com/protocolbuffers/protobuf/releases/download/v3.12.0/protoc-3.12.0-linux-x86_64.zip", "sha256": "3af5f90ad973c36bdaf5c4bd0082cfdc8881593ddf530fc6aa1442ee3d7a4e4b" } ] }, { "name": "ffmpeg", "cleanup": [ "/include", "/lib/pkgconfig", "/share/ffmpeg/examples" ], "config-opts": [ "--enable-shared", "--disable-static", "--enable-gnutls", "--disable-doc", "--disable-programs", "--disable-encoders", "--disable-muxers", "--enable-encoder=png" ], "sources": [{ "type": "archive", "url": "https://ffmpeg.org/releases/ffmpeg-4.2.2.tar.xz", "sha256": "cb754255ab0ee2ea5f66f8850e1bd6ad5cac1cd855d0a2f4990fb8c668b0d29c" }] }, { "name": "pip-install", "buildsystem": "simple", "build-options": { "build-args": [ "--share=network" ] }, "build-commands": [ "pip3 install --prefix=/app google&&pip3 install --prefix=/app protobuf" ] }, { "name": "chiaki", "buildsystem": "cmake", "builddir": "true", "sources": [ { "type": "git", "url": "https://git.sr.ht/~thestr4ng3r/chiaki", "tag": "v2.1.1", "commit": "2257030adeb5c5a84380c78d34be4d783971663c" } ] } ] } chiaki-v2.2.0/scripts/kitware-archive-latest.asc000066400000000000000000000075731447035777400217250ustar00rootroot00000000000000-----BEGIN PGP PUBLIC KEY BLOCK----- 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 =8BHh -----END PGP PUBLIC KEY BLOCK----- chiaki-v2.2.0/scripts/macos-dist-local.sh000077500000000000000000000013361447035777400203370ustar00rootroot00000000000000#!/bin/bash # Build Chiaki for macOS distribution using dependencies from MacPorts and custom ffmpeg set -xe cd $(dirname "${BASH_SOURCE[0]}")/.. scripts/build-ffmpeg.sh export CMAKE_PREFIX_PATH="`pwd`/ffmpeg-prefix" scripts/build-common.sh cp -a build/gui/chiaki.app Chiaki.app /opt/local/libexec/qt5/bin/macdeployqt Chiaki.app # Remove all LC_RPATH load commands that have absolute paths of the build machine RPATHS=$(otool -l Chiaki.app/Contents/MacOS/chiaki | grep -A 2 LC_RPATH | grep 'path /' | awk '{print $2}') for p in ${RPATHS}; do install_name_tool -delete_rpath "$p" Chiaki.app/Contents/MacOS/chiaki; done # This may warn because we already ran macdeployqt above /opt/local/libexec/qt5/bin/macdeployqt Chiaki.app -dmg chiaki-v2.2.0/scripts/psn-account-id.go000066400000000000000000000071511447035777400200210ustar00rootroot00000000000000package main import ( "github.com/atotto/clipboard" "github.com/pkg/browser" "encoding/base64" "encoding/binary" "encoding/json" "net/http" "net/url" "strings" "strconv" "bytes" "bufio" "flag" "fmt" "log" "os" ) func main(){ headless := flag.Bool("headless", false, "Operates in Headless mode") flag.Parse() fmt.Println( `== PSN ID Scraper for Remote Play == In order to get your Account code for Remote Play, You'll need to Login via a special Remote Play login webpage. After logging in, you will see a webpage that displays "redirect" in the top-left. When you see this page, Copy the entire URL from your browser, paste it below and then press *Enter* `) reader := bufio.NewReader(os.Stdin) if *headless { fmt.Println( `[Headless] You'll need to open this page in a web browser that supports Javascript/ReCaptcha [Headless] https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/authorize?service_entity=urn:service-entity:psn&response_type=code&client_id=ba495a24-818c-472b-b12d-ff231c1b5745&redirect_uri=https://remoteplay.dl.playstation.net/remoteplay/redirect&scope=psn:clientapp&request_locale=en_US&ui=pr&service_logo=ps&layout_type=popup&smcid=remoteplay&prompt=always&PlatformPrivacyWs1=minimal&`) } else { fmt.Println("Press Enter to open the PSN Remote Play login webpage in your browser") reader.ReadString('\n') browser.OpenURL("https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/authorize?service_entity=urn:service-entity:psn&response_type=code&client_id=ba495a24-818c-472b-b12d-ff231c1b5745&redirect_uri=https://remoteplay.dl.playstation.net/remoteplay/redirect&scope=psn:clientapp&request_locale=en_US&ui=pr&service_logo=ps&layout_type=popup&smcid=remoteplay&prompt=always&PlatformPrivacyWs1=minimal&") } fmt.Print("Awaiting Input >") response, _ := reader.ReadString('\n') response = strings.TrimSpace(response) URL, err := url.Parse(response) if err != nil { log.Fatal(err) } query := URL.Query() if query.Get("code") == ""{ log.Fatal("Invalid URL has been submitted") } client := &http.Client{} data :=url.Values{} data.Set("grant_type","authorization_code") data.Set("code", query.Get("code")) data.Set("redirect_uri","https://remoteplay.dl.playstation.net/remoteplay/redirect") req, err := http.NewRequest("POST", "https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/token", strings.NewReader(data.Encode())) req.SetBasicAuth("ba495a24-818c-472b-b12d-ff231c1b5745", "mvaiZkRsAsI1IBkY") req.Header.Add("Content-Type", "application/x-www-form-urlencoded") req.Header.Add("Content-Length", strconv.Itoa(len(data.Encode()))) res, err := client.Do(req) defer res.Body.Close() access := AccessKeys{} err = json.NewDecoder(res.Body).Decode(&access) if err != nil { log.Fatal(err) } req, err = http.NewRequest("GET", fmt.Sprintf("https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/token/%v", access.AccessToken), nil) req.SetBasicAuth("ba495a24-818c-472b-b12d-ff231c1b5745", "mvaiZkRsAsI1IBkY") res, err = client.Do(req) info := ClientInfo{} err = json.NewDecoder(res.Body).Decode(&info) if err != nil { log.Fatal(err) } uid, _ := strconv.ParseInt(info.UserID, 10, 0) buf := new(bytes.Buffer) err = binary.Write(buf, binary.LittleEndian, uid) if err != nil { log.Fatal(err) } uidBytes := buf.Bytes() fmt.Printf("Your AccountID is: %v (Copied to Clipboard)\n", base64.StdEncoding.EncodeToString(uidBytes)) clipboard.WriteAll(base64.StdEncoding.EncodeToString(uidBytes)) fmt.Println("Press Enter to quit") reader.ReadString('\n') } type AccessKeys struct { AccessToken string `json:"access_token"` } type ClientInfo struct { UserID string `json:"user_id"` } chiaki-v2.2.0/scripts/psn-account-id.py000077500000000000000000000100261447035777400200420ustar00rootroot00000000000000#!/usr/bin/env python3 # -*- coding: utf-8 -*- import sys if sys.version_info < (3, 0, 0): print("DO NOT use Python 2.\nEVER.\nhttps://pythonclock.org") exit(1) import platform oldexit = exit def exit(code): if platform.system() == "Windows": import atexit input("Press Enter to exit.") oldexit(code) if sys.stdout.encoding.lower() == "ascii": import codecs sys.stdout = codecs.getwriter('utf-8')(sys.stdout.buffer) sys.stderr = codecs.getwriter('utf-8')(sys.stderr.buffer) try: import requests except ImportError as e: print(e) if platform.system() == "Windows": from distutils.util import strtobool a = input("The requests module is not available. Should we try to install it automatically using pip? [y/n] ") while True: try: a = strtobool(a) break except ValueError: a = input("Please answer with y or n: ") if a == 1: import subprocess subprocess.call([sys.executable, "-m", "pip", "install", "requests"]) else: exit(1) else: print("\"requests\" is not available. Install it with pip or your distribution's package manager.") exit(1) import requests from urllib.parse import urlparse, parse_qs, quote, urljoin import pprint import base64 # Remote Play Windows Client CLIENT_ID = "ba495a24-818c-472b-b12d-ff231c1b5745" CLIENT_SECRET = "mvaiZkRsAsI1IBkY" LOGIN_URL = "https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/authorize?service_entity=urn:service-entity:psn&response_type=code&client_id={}&redirect_uri=https://remoteplay.dl.playstation.net/remoteplay/redirect&scope=psn:clientapp&request_locale=en_US&ui=pr&service_logo=ps&layout_type=popup&smcid=remoteplay&prompt=always&PlatformPrivacyWs1=minimal&".format(CLIENT_ID) TOKEN_URL = "https://auth.api.sonyentertainmentnetwork.com/2.0/oauth/token" print() print("########################################################") print(" Script to determine PSN AccountID") print(" thanks to grill2010") print(" (This script will perform network operations.)") print("########################################################") print() print("âž¡ï¸ Open the following URL in your Browser and log in:") print() print(LOGIN_URL) print() print("âž¡ï¸ After logging in, when the page shows \"redirect\", copy the URL from the address bar and paste it here:") code_url_s = input("> ") code_url = urlparse(code_url_s) query = parse_qs(code_url.query) if "code" not in query or len(query["code"]) == 0 or len(query["code"][0]) == 0: print("â˜ ï¸ URL did not contain code parameter") exit(1) code = query["code"][0] print("🌠Requesting OAuth Token") api_auth = requests.auth.HTTPBasicAuth(CLIENT_ID, CLIENT_SECRET) body = "grant_type=authorization_code&code={}&redirect_uri=https://remoteplay.dl.playstation.net/remoteplay/redirect&".format(code) token_request = requests.post(TOKEN_URL, auth = api_auth, headers = { "Content-Type": "application/x-www-form-urlencoded" }, data = body.encode("ascii")) print("âš ï¸ WARNING: From this point on, output might contain sensitive information in some cases!") if token_request.status_code != 200: print("â˜ ï¸ Request failed with code {}:\n{}".format(token_request.status_code, token_request.text)) exit(1) token_json = token_request.json() if "access_token" not in token_json: print("â˜ ï¸ \"access_token\" is missing in response JSON:\n{}".format(token_request.text)) exit(1) token = token_json["access_token"] print("🌠Requesting Account Info") account_request = requests.get(TOKEN_URL + "/" + quote(token), auth = api_auth) if account_request.status_code != 200: print("â˜ ï¸ Request failed with code {}:\n{}".format(account_request.status_code, account_request.text)) exit(1) account_info = account_request.json() print("🥦 Received Account Info:") pprint.pprint(account_info) if "user_id" not in account_info: print("â˜ ï¸ \"user_id\" is missing in response or not a string") exit(1) user_id = int(account_info["user_id"]) user_id_base64 = base64.b64encode(user_id.to_bytes(8, "little")).decode() print() print("🙠This is your AccountID:") print(user_id_base64) exit(0) chiaki-v2.2.0/scripts/run-podman-build-appimage.sh000077500000000000000000000004621447035777400221410ustar00rootroot00000000000000#!/bin/bash set -xe cd "`dirname $(readlink -f ${0})`" podman build -t chiaki-bionic . -f Dockerfile.bionic cd .. podman run --rm \ -v "`pwd`:/build/chiaki" \ -w "/build/chiaki" \ --device /dev/fuse \ --cap-add SYS_ADMIN \ -t chiaki-bionic \ /bin/bash -c "scripts/build-appimage.sh /build/appdir" chiaki-v2.2.0/scripts/run-podman-build-bullseye.sh000077500000000000000000000006771447035777400222120ustar00rootroot00000000000000#!/bin/bash set -xe cd "`dirname $(readlink -f ${0})`" podman build -t chiaki-bullseye . -f Dockerfile.bullseye cd .. podman run --rm -v "`pwd`:/build" chiaki-bullseye /bin/bash -c " cd /build && rm -fv third-party/nanopb/generator/proto/nanopb_pb2.py && mkdir build_bullseye && cmake -Bbuild_bullseye -GNinja -DCHIAKI_USE_SYSTEM_JERASURE=ON -DCHIAKI_USE_SYSTEM_NANOPB=ON && ninja -C build_bullseye && ninja -C build_bullseye test" chiaki-v2.2.0/scripts/switch/000077500000000000000000000000001447035777400161435ustar00rootroot00000000000000chiaki-v2.2.0/scripts/switch/build.sh000077500000000000000000000014611447035777400176030ustar00rootroot00000000000000#!/bin/bash set -xveo pipefail arg1=$1 build="./build" if [ "$arg1" != "linux" ]; then toolchain="cmake/switch.cmake" build="./build_switch" fi SCRIPTDIR=$(dirname "$0") BASEDIR=$(realpath "${SCRIPTDIR}/../../") build_chiaki (){ pushd "${BASEDIR}" #rm -rf ./build # purge leftover proto/nanopb_pb2.py which may have been created with another protobuf version rm -fv third-party/nanopb/generator/proto/nanopb_pb2.py cmake -B "${build}" \ -GNinja \ -DCMAKE_TOOLCHAIN_FILE=${toolchain} \ -DCHIAKI_ENABLE_TESTS=OFF \ -DCHIAKI_ENABLE_CLI=OFF \ -DCHIAKI_ENABLE_GUI=OFF \ -DCHIAKI_ENABLE_ANDROID=OFF \ -DCHIAKI_ENABLE_BOREALIS=ON \ -DCHIAKI_LIB_ENABLE_MBEDTLS=ON \ # -DCMAKE_VERBOSE_MAKEFILE:BOOL=ON \ # -DCMAKE_FIND_DEBUG_MODE=ON ninja -C "${build}" popd } build_chiaki chiaki-v2.2.0/scripts/switch/push-podman-build-chiaki.sh000077500000000000000000000004501447035777400232570ustar00rootroot00000000000000#!/bin/bash cd "`dirname $(readlink -f ${0})`/../.." docker run \ -v "`pwd`:/build/chiaki" \ -w "/build/chiaki" \ -ti -p 28771:28771 \ --entrypoint /opt/devkitpro/tools/bin/nxlink \ thestr4ng3r/chiaki-build-switch \ "$@" -s /build/chiaki/build_switch/switch/chiaki.nro chiaki-v2.2.0/scripts/switch/run-podman-build-chiaki.sh000077500000000000000000000003261447035777400231060ustar00rootroot00000000000000#!/bin/bash cd "`dirname $(readlink -f ${0})`/../.." podman run --rm \ -v "`pwd`:/build/chiaki" \ -w "/build/chiaki" \ -it \ thestr4ng3r/chiaki-build-switch:v2 \ ${1:-/bin/bash -c "scripts/switch/build.sh"} chiaki-v2.2.0/setsu/000077500000000000000000000000001447035777400143165ustar00rootroot00000000000000chiaki-v2.2.0/setsu/CMakeLists.txt000066400000000000000000000012051447035777400170540ustar00rootroot00000000000000 cmake_minimum_required(VERSION 3.2) project(libsetsu) option(SETSU_BUILD_DEMOS "Build testing executables for libsetsu" OFF) list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake") add_library(setsu include/setsu.h src/setsu.c) target_include_directories(setsu PUBLIC include) find_package(Udev REQUIRED) find_package(Evdev REQUIRED) target_link_libraries(setsu Udev::libudev Evdev::libevdev) if(SETSU_BUILD_DEMOS) add_executable(setsu-demo-touchpad demo/touchpad.c) target_link_libraries(setsu-demo-touchpad setsu) add_executable(setsu-demo-motion demo/motion.c) target_link_libraries(setsu-demo-motion setsu) endif() chiaki-v2.2.0/setsu/cmake/000077500000000000000000000000001447035777400153765ustar00rootroot00000000000000chiaki-v2.2.0/setsu/cmake/FindEvdev.cmake000066400000000000000000000017701447035777400202570ustar00rootroot00000000000000# Provides: Evdev::libevdev set(_prefix Evdev) set(_target "${_prefix}::libevdev") find_package(PkgConfig) if(PkgConfig_FOUND AND NOT TARGET ${_target}) if(CMAKE_VERSION VERSION_LESS "3.6") pkg_check_modules("${_prefix}" libevdev) else() pkg_check_modules("${_prefix}" libevdev IMPORTED_TARGET) endif() if((TARGET PkgConfig::${_prefix}) AND (NOT CMAKE_VERSION VERSION_LESS "3.11.0")) set_target_properties(PkgConfig::${_prefix} PROPERTIES IMPORTED_GLOBAL ON) add_library(${_target} ALIAS PkgConfig::${_prefix}) elseif(${_prefix}_FOUND) add_library(${_target} INTERFACE IMPORTED) set_target_properties(${_target} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${_prefix}_INCLUDE_DIRS}") set_target_properties(${_target} PROPERTIES INTERFACE_LINK_LIBRARIES "${${_prefix}_LIBRARIES}") endif() endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args("${_prefix}" REQUIRED_VARS "${_prefix}_LIBRARIES" VERSION_VAR "${_prefix}_VERSION") unset(_prefix) unset(_target) chiaki-v2.2.0/setsu/cmake/FindUdev.cmake000066400000000000000000000017621447035777400201120ustar00rootroot00000000000000# Provides: Udev::libudev set(_prefix Udev) set(_target "${_prefix}::libudev") find_package(PkgConfig) if(PkgConfig_FOUND AND NOT TARGET ${_target}) if(CMAKE_VERSION VERSION_LESS "3.6") pkg_check_modules("${_prefix}" libudev) else() pkg_check_modules("${_prefix}" libudev IMPORTED_TARGET) endif() if((TARGET PkgConfig::${_prefix}) AND (NOT CMAKE_VERSION VERSION_LESS "3.11.0")) set_target_properties(PkgConfig::${_prefix} PROPERTIES IMPORTED_GLOBAL ON) add_library(${_target} ALIAS PkgConfig::${_prefix}) elseif(${_prefix}_FOUND) add_library(${_target} INTERFACE IMPORTED) set_target_properties(${_target} PROPERTIES INTERFACE_INCLUDE_DIRECTORIES "${${_prefix}_INCLUDE_DIRS}") set_target_properties(${_target} PROPERTIES INTERFACE_LINK_LIBRARIES "${${_prefix}_LIBRARIES}") endif() endif() include(FindPackageHandleStandardArgs) find_package_handle_standard_args("${_prefix}" REQUIRED_VARS "${_prefix}_LIBRARIES" VERSION_VAR "${_prefix}_VERSION") unset(_prefix) unset(_target) chiaki-v2.2.0/setsu/demo/000077500000000000000000000000001447035777400152425ustar00rootroot00000000000000chiaki-v2.2.0/setsu/demo/motion.c000066400000000000000000000066651447035777400167300ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include Setsu *setsu; #define NAME_LEN 8 const char * const names[] = { "accel x ", "accel y ", "accel z ", " gyro x ", " gyro y ", " gyro z " }; union { struct { float accel_x, accel_y, accel_z; float gyro_x, gyro_y, gyro_z; }; float v[6]; } vals; uint32_t timestamp; bool dirty = false; bool log_mode; volatile bool should_quit; #define LOG(...) do { if(log_mode) fprintf(stderr, __VA_ARGS__); } while(0) void sigint(int s) { should_quit = true; } #define BAR_LENGTH 100 #define BAR_MAX 2.0f #define BAR_MAX_GYRO M_PI void print_state() { char buf[6 * (1 + NAME_LEN + BAR_LENGTH) + 1]; size_t i = 0; for(size_t b=0; b<6; b++) { buf[i++] = '\n'; memcpy(buf + i, names[b], NAME_LEN); i += NAME_LEN; buf[i++] = '['; size_t max = BAR_LENGTH-2; for(size_t bi=0; bi 2 ? BAR_MAX_GYRO : BAR_MAX) * (2.0f * (float)(x) / (float)max - 1.0f)) float cur = BAR_VAL(bi); float prev = BAR_VAL((int)bi - 1); if(prev < 0.0f && cur >= 0.0f) { buf[i++] = '|'; continue; } bool cov = ((vals.v[b] < 0.0f) == (cur < 0.0f)) && fabsf(vals.v[b]) > fabsf(cur); float next = BAR_VAL(bi + 1); #define MARK_VAL (b > 2 ? 0.5f * M_PI : 1.0f) bool mark = cur < -MARK_VAL && next >= -MARK_VAL || prev < MARK_VAL && cur >= MARK_VAL; buf[i++] = cov ? (mark ? '#' : '=') : (mark ? '.' : ' '); #undef BAR_VAL } buf[i++] = ']'; } buf[i++] = '\0'; assert(i == sizeof(buf)); printf("\033[2J%s", buf); fflush(stdout); } void event(SetsuEvent *event, void *user) { dirty = true; switch(event->type) { case SETSU_EVENT_DEVICE_ADDED: { if(event->dev_type != SETSU_DEVICE_TYPE_MOTION) break; SetsuDevice *dev = setsu_connect(setsu, event->path, SETSU_DEVICE_TYPE_MOTION); LOG("Device added: %s, connect %s\n", event->path, dev ? "succeeded" : "FAILED!"); break; } case SETSU_EVENT_DEVICE_REMOVED: if(event->dev_type != SETSU_DEVICE_TYPE_MOTION) break; LOG("Device removed: %s\n", event->path); break; case SETSU_EVENT_MOTION: LOG("Motion: %f, %f, %f / %f, %f, %f / %u\n", event->motion.accel_x, event->motion.accel_y, event->motion.accel_z, event->motion.gyro_x, event->motion.gyro_y, event->motion.gyro_z, (unsigned int)event->motion.timestamp); vals.accel_x = event->motion.accel_x; vals.accel_y = event->motion.accel_y; vals.accel_z = event->motion.accel_z; vals.gyro_x = event->motion.gyro_x; vals.gyro_y = event->motion.gyro_y; vals.gyro_z = event->motion.gyro_z; timestamp = event->motion.timestamp; dirty = true; default: break; } } void usage(const char *prog) { printf("usage: %s [-l]\n -l log mode\n", prog); exit(1); } int main(int argc, const char *argv[]) { log_mode = false; if(argc == 2) { if(!strcmp(argv[1], "-l")) log_mode = true; else usage(argv[0]); } else if(argc != 1) usage(argv[0]); setsu = setsu_new(); if(!setsu) { printf("Failed to init setsu\n"); return 1; } struct sigaction sa = {0}; sa.sa_handler = sigint; sigemptyset(&sa.sa_mask); sigaction(SIGINT, &sa, NULL); dirty = true; while(!should_quit) { if(dirty && !log_mode) print_state(); dirty = false; setsu_poll(setsu, event, NULL); } setsu_free(setsu); printf("\nã•よãªã‚‰!\n"); return 0; } chiaki-v2.2.0/setsu/demo/touchpad.c000066400000000000000000000072401447035777400172200ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include Setsu *setsu; #define WIDTH 1920 #define HEIGHT 942 #define TOUCHES_MAX 8 #define SCALE 16 struct { bool down; unsigned int tracking_id; unsigned int x, y; } touches[TOUCHES_MAX]; bool dirty = false; bool log_mode; volatile bool should_quit; #define LOG(...) do { if(log_mode) fprintf(stderr, __VA_ARGS__); } while(0) void sigint(int s) { should_quit = true; } void print_state() { char buf[(1 + WIDTH/SCALE)*(HEIGHT/SCALE) + 1]; size_t i = 0; for(size_t y=0; ytype) { case SETSU_EVENT_DEVICE_ADDED: { if(event->dev_type != SETSU_DEVICE_TYPE_TOUCHPAD) break; SetsuDevice *dev = setsu_connect(setsu, event->path, SETSU_DEVICE_TYPE_TOUCHPAD); LOG("Device added: %s, connect %s\n", event->path, dev ? "succeeded" : "FAILED!"); break; } case SETSU_EVENT_DEVICE_REMOVED: if(event->dev_type != SETSU_DEVICE_TYPE_TOUCHPAD) break; LOG("Device removed: %s\n", event->path); break; case SETSU_EVENT_TOUCH_DOWN: LOG("Down for %s, tracking id %d\n", setsu_device_get_path(event->dev), event->touch.tracking_id); for(size_t i=0; itouch.tracking_id; break; } } break; case SETSU_EVENT_TOUCH_POSITION: case SETSU_EVENT_TOUCH_UP: if(event->type == SETSU_EVENT_TOUCH_UP) LOG("Up for %s, tracking id %d\n", setsu_device_get_path(event->dev), event->touch.tracking_id); else LOG("Position for %s, tracking id %d: %u, %u\n", setsu_device_get_path(event->dev), event->touch.tracking_id, (unsigned int)event->touch.x, (unsigned int)event->touch.y); for(size_t i=0; itouch.tracking_id) { switch(event->type) { case SETSU_EVENT_TOUCH_POSITION: touches[i].x = event->touch.x; touches[i].y = event->touch.y; break; case SETSU_EVENT_TOUCH_UP: touches[i].down = false; break; default: break; } } } break; case SETSU_EVENT_BUTTON_DOWN: case SETSU_EVENT_BUTTON_UP: LOG("Button for %s: %llu %s\n", setsu_device_get_path(event->dev), (unsigned long long)event->button, event->type == SETSU_EVENT_BUTTON_DOWN ? "down" : "up"); break; default: break; } } void usage(const char *prog) { printf("usage: %s [-l]\n -l log mode\n", prog); exit(1); } int main(int argc, const char *argv[]) { log_mode = false; if(argc == 2) { if(!strcmp(argv[1], "-l")) log_mode = true; else usage(argv[0]); } else if(argc != 1) usage(argv[0]); memset(touches, 0, sizeof(touches)); setsu = setsu_new(); if(!setsu) { printf("Failed to init setsu\n"); return 1; } struct sigaction sa = {0}; sa.sa_handler = sigint; sigemptyset(&sa.sa_mask); sigaction(SIGINT, &sa, NULL); dirty = true; while(!should_quit) { if(dirty && !log_mode) print_state(); dirty = false; setsu_poll(setsu, event, NULL); } setsu_free(setsu); printf("\nã•よãªã‚‰!\n"); return 0; } chiaki-v2.2.0/setsu/include/000077500000000000000000000000001447035777400157415ustar00rootroot00000000000000chiaki-v2.2.0/setsu/include/setsu.h000066400000000000000000000045211447035777400172570ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef _SETSU_H #define _SETSU_H #include #ifdef __cplusplus extern "C" { #endif typedef struct setsu_t Setsu; typedef struct setsu_device_t SetsuDevice; typedef int SetsuTrackingId; typedef enum { SETSU_DEVICE_TYPE_TOUCHPAD, SETSU_DEVICE_TYPE_MOTION } SetsuDeviceType; typedef enum { /* New device available to connect. * Event will have path and type set to the new device. */ SETSU_EVENT_DEVICE_ADDED, /* Previously available device removed. * Event will have path and type set to the removed device. * Any SetsuDevice connected to this path will automatically * be disconnected and their pointers will be invalid immediately * after the callback for this event returns. */ SETSU_EVENT_DEVICE_REMOVED, /* Touch down. * Event will have dev and tracking_id set. */ SETSU_EVENT_TOUCH_DOWN, /* Touch down. * Event will have dev and tracking_id set. */ SETSU_EVENT_TOUCH_UP, /* Touch position update. * Event will have dev, tracking_id, x and y set. */ SETSU_EVENT_TOUCH_POSITION, /* Event will have dev and button set. */ SETSU_EVENT_BUTTON_DOWN, /* Event will have dev and button set. */ SETSU_EVENT_BUTTON_UP, /* Event will have motion set. */ SETSU_EVENT_MOTION } SetsuEventType; #define SETSU_BUTTON_0 (1u << 0) typedef uint64_t SetsuButton; typedef struct setsu_event_t { SetsuEventType type; union { struct { const char *path; SetsuDeviceType dev_type; }; struct { SetsuDevice *dev; union { struct { SetsuTrackingId tracking_id; uint32_t x, y; } touch; SetsuButton button; struct { float accel_x, accel_y, accel_z; // unit is 1G float gyro_x, gyro_y, gyro_z; // unit is rad/sec uint32_t timestamp; // microseconds } motion; }; }; }; } SetsuEvent; typedef void (*SetsuEventCb)(SetsuEvent *event, void *user); Setsu *setsu_new(); void setsu_free(Setsu *setsu); void setsu_poll(Setsu *setsu, SetsuEventCb cb, void *user); SetsuDevice *setsu_connect(Setsu *setsu, const char *path, SetsuDeviceType type); void setsu_disconnect(Setsu *setsu, SetsuDevice *dev); const char *setsu_device_get_path(SetsuDevice *dev); uint32_t setsu_device_touchpad_get_width(SetsuDevice *dev); uint32_t setsu_device_touchpad_get_height(SetsuDevice *dev); #ifdef __cplusplus } #endif #endif chiaki-v2.2.0/setsu/src/000077500000000000000000000000001447035777400151055ustar00rootroot00000000000000chiaki-v2.2.0/setsu/src/setsu.c000066400000000000000000000415411447035777400164210ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #include #include #include #include #include #include #include #define ENABLE_LOG #ifdef ENABLE_LOG #define SETSU_LOG(...) fprintf(stderr, __VA_ARGS__) #else #define SETSU_LOG(...) do {} while(0) #endif #define DEG2RAD (2.0f * M_PI / 360.0f) typedef struct setsu_avail_device_t { struct setsu_avail_device_t *next; SetsuDeviceType type; char *path; bool connect_dirty; // whether the connect has not been sent as an event yet bool disconnect_dirty; // whether the disconnect has not been sent as an event yet } SetsuAvailDevice; #define SLOTS_COUNT 16 typedef struct setsu_device_t { struct setsu_device_t *next; char *path; SetsuDeviceType type; int fd; struct libevdev *evdev; union { struct { int min_x, min_y, max_x, max_y; struct { /* Saves the old tracking id that was just up-ed. * also for handling "atomic" up->down * i.e. when there is an up, then down with a different tracking id * in a single frame (before SYN_REPORT), this saves the old * tracking id that must be reported as up. */ int tracking_id_prev; int tracking_id; int x, y; bool downed; bool pos_dirty; } slots[SLOTS_COUNT]; unsigned int slot_cur; uint64_t buttons_prev; uint64_t buttons_cur; } touchpad; struct { int accel_res_x, accel_res_y, accel_res_z; int gyro_res_x, gyro_res_y, gyro_res_z; int accel_x, accel_y, accel_z; int gyro_x, gyro_y, gyro_z; uint32_t timestamp; bool dirty; } motion; }; } SetsuDevice; struct setsu_t { struct udev *udev; struct udev_monitor *udev_mon; SetsuAvailDevice *avail_dev; SetsuDevice *dev; }; bool get_dev_ids(const char *path, uint32_t *vendor_id, uint32_t *model_id); static void scan_udev(Setsu *setsu); static void update_udev_device(Setsu *setsu, struct udev_device *dev); static SetsuDevice *connect(Setsu *setsu, const char *path); static void disconnect(Setsu *setsu, SetsuDevice *dev); static void poll_device(Setsu *setsu, SetsuDevice *dev, SetsuEventCb cb, void *user); static void device_event(Setsu *setsu, SetsuDevice *dev, struct input_event *ev, SetsuEventCb cb, void *user); static void device_drain(Setsu *setsu, SetsuDevice *dev, SetsuEventCb cb, void *user); Setsu *setsu_new() { Setsu *setsu = calloc(1, sizeof(Setsu)); if(!setsu) return NULL; setsu->udev = udev_new(); if(!setsu->udev) { free(setsu); return NULL; } setsu->udev_mon = udev_monitor_new_from_netlink(setsu->udev, "udev"); if(setsu->udev_mon) { udev_monitor_filter_add_match_subsystem_devtype(setsu->udev_mon, "input", NULL); udev_monitor_enable_receiving(setsu->udev_mon); } else SETSU_LOG("Failed to create udev monitor\n"); scan_udev(setsu); return setsu; } void setsu_free(Setsu *setsu) { if(!setsu) return; while(setsu->dev) setsu_disconnect(setsu, setsu->dev); if(setsu->udev_mon) udev_monitor_unref(setsu->udev_mon); udev_unref(setsu->udev); while(setsu->avail_dev) { SetsuAvailDevice *adev = setsu->avail_dev; setsu->avail_dev = adev->next; free(adev->path); free(adev); } free(setsu); } static void scan_udev(Setsu *setsu) { struct udev_enumerate *udev_enum = udev_enumerate_new(setsu->udev); if(!udev_enum) return; if(udev_enumerate_add_match_subsystem(udev_enum, "input") < 0) goto beach; //if(udev_enumerate_add_match_property(udev_enum, "ID_INPUT_TOUCHPAD", "1") < 0) // goto beach; if(udev_enumerate_scan_devices(udev_enum) < 0) goto beach; for(struct udev_list_entry *entry = udev_enumerate_get_list_entry(udev_enum); entry; entry = udev_list_entry_get_next(entry)) { const char *path = udev_list_entry_get_name(entry); if(!path) continue; struct udev_device *dev = udev_device_new_from_syspath(setsu->udev, path); if(!dev) continue; update_udev_device(setsu, dev); udev_device_unref(dev); } beach: udev_enumerate_unref(udev_enum); } static bool is_device_interesting(struct udev_device *dev, SetsuDeviceType *type) { static const uint32_t device_ids[] = { // vendor id, model id 0x054c, 0x05c4, // DualShock 4 Gen 1 0x054c, 0x09cc, // DualShock 4 Gen 2 0x54c, 0x0ce6 // DualSense }; const char *touchpad_str = udev_device_get_property_value(dev, "ID_INPUT_TOUCHPAD"); const char *accel_str = udev_device_get_property_value(dev, "ID_INPUT_ACCELEROMETER"); if(touchpad_str && !strcmp(touchpad_str, "1")) { // Filter mouse-device (/dev/input/mouse*) away and only keep the evdev (/dev/input/event*) one: if(!udev_device_get_property_value(dev, "ID_INPUT_TOUCHPAD_INTEGRATION")) return false; *type = SETSU_DEVICE_TYPE_TOUCHPAD; } else if(accel_str && !strcmp(accel_str, "1")) { // Filter /dev/input/js* away and keep /dev/input/event* if(!udev_device_get_property_value(dev, "ID_INPUT_WIDTH_MM")) return false; *type = SETSU_DEVICE_TYPE_MOTION; } else return false; uint32_t vendor; uint32_t model; // Try to get the ids from udev first. This fails for bluetooth. const char *vendor_str = udev_device_get_property_value(dev, "ID_VENDOR_ID"); const char *model_str = udev_device_get_property_value(dev, "ID_MODEL_ID"); if(vendor_str && model_str) { vendor = strtoul(vendor_str, NULL, 16); model = strtoul(model_str, NULL, 16); } else { const char *path = udev_device_get_devnode(dev); if(!path) return false; if(!get_dev_ids(path, &vendor, &model)) return false; } for(const uint32_t *dev_id = device_ids; (char *)dev_id != ((char *)device_ids) + sizeof(device_ids); dev_id += 2) { if(vendor == dev_id[0] && model == dev_id[1]) return true; } return false; } static void update_udev_device(Setsu *setsu, struct udev_device *dev) { const char *path = udev_device_get_devnode(dev); if(!path) return; const char *action = udev_device_get_action(dev); bool added; if(!action || !strcmp(action, "add")) added = true; else if(!strcmp(action, "remove")) added = false; else return; for(SetsuAvailDevice *adev = setsu->avail_dev; adev; adev=adev->next) { if(!strcmp(adev->path, path)) { if(added) return; // already added, do nothing // disconnected adev->disconnect_dirty = true; return; } } // not yet added SetsuDeviceType type; if(!is_device_interesting(dev, &type)) return; SetsuAvailDevice *adev = calloc(1, sizeof(SetsuAvailDevice)); if(!adev) return; adev->type = type; adev->path = strdup(path); if(!adev->path) { free(adev); return; } adev->next = setsu->avail_dev; setsu->avail_dev = adev; adev->connect_dirty = true; } static void poll_udev_monitor(Setsu *setsu) { if(!setsu->udev_mon) return; while(1) { struct udev_device *dev = udev_monitor_receive_device(setsu->udev_mon); if(!dev) break; update_udev_device(setsu, dev); udev_device_unref(dev); } } bool get_dev_ids(const char *path, uint32_t *vendor_id, uint32_t *model_id) { int fd = open(path, O_RDONLY | O_NONBLOCK); if(fd == -1) return false; struct libevdev *evdev; if(libevdev_new_from_fd(fd, &evdev) < 0) { close(fd); return false; } *vendor_id = (uint32_t)libevdev_get_id_vendor(evdev); *model_id = (uint32_t)libevdev_get_id_product(evdev); libevdev_free(evdev); close(fd); return true; } SetsuDevice *setsu_connect(Setsu *setsu, const char *path, SetsuDeviceType type) { SetsuDevice *dev = calloc(1, sizeof(SetsuDevice)); if(!dev) return NULL; dev->fd = -1; dev->path = strdup(path); if(!dev->path) goto error; dev->type = type; dev->fd = open(dev->path, O_RDONLY | O_NONBLOCK); if(dev->fd == -1) { SETSU_LOG("Failed to open %s\n", dev->path); perror("setsu_connect"); goto error; } if(libevdev_new_from_fd(dev->fd, &dev->evdev) < 0) { dev->evdev = NULL; goto error; } switch(type) { case SETSU_DEVICE_TYPE_TOUCHPAD: dev->touchpad.min_x = libevdev_get_abs_minimum(dev->evdev, ABS_X); dev->touchpad.min_y = libevdev_get_abs_minimum(dev->evdev, ABS_Y); dev->touchpad.max_x = libevdev_get_abs_maximum(dev->evdev, ABS_X); dev->touchpad.max_y = libevdev_get_abs_maximum(dev->evdev, ABS_Y); for(size_t i=0; itouchpad.slots[i].tracking_id_prev = -1; dev->touchpad.slots[i].tracking_id = -1; } break; case SETSU_DEVICE_TYPE_MOTION: dev->motion.accel_res_x = libevdev_get_abs_resolution(dev->evdev, ABS_X); dev->motion.accel_res_y = libevdev_get_abs_resolution(dev->evdev, ABS_Y); dev->motion.accel_res_z = libevdev_get_abs_resolution(dev->evdev, ABS_Z); dev->motion.gyro_res_x = libevdev_get_abs_resolution(dev->evdev, ABS_RX); dev->motion.gyro_res_y = libevdev_get_abs_resolution(dev->evdev, ABS_RY); dev->motion.gyro_res_z = libevdev_get_abs_resolution(dev->evdev, ABS_RZ); dev->motion.accel_y = dev->motion.accel_res_y; // 1G down break; } dev->next = setsu->dev; setsu->dev = dev; return dev; error: if(dev->evdev) libevdev_free(dev->evdev); if(dev->fd != -1) close(dev->fd); free(dev->path); free(dev); return NULL; } void setsu_disconnect(Setsu *setsu, SetsuDevice *dev) { if(setsu->dev == dev) setsu->dev = dev->next; else { for(SetsuDevice *pdev = setsu->dev; pdev; pdev = pdev->next) { if(pdev->next == dev) { pdev->next = dev->next; break; } } } libevdev_free(dev->evdev); close(dev->fd); free(dev->path); free(dev); } const char *setsu_device_get_path(SetsuDevice *dev) { return dev->path; } uint32_t setsu_device_touchpad_get_width(SetsuDevice *dev) { if(dev->type != SETSU_DEVICE_TYPE_TOUCHPAD) return 0; return dev->touchpad.max_x - dev->touchpad.min_x; } uint32_t setsu_device_touchpad_get_height(SetsuDevice *dev) { if(dev->type != SETSU_DEVICE_TYPE_TOUCHPAD) return 0; return dev->touchpad.max_y - dev->touchpad.min_y; } void kill_avail_device(Setsu *setsu, SetsuAvailDevice *adev) { for(SetsuDevice *dev = setsu->dev; dev;) { if(!strcmp(dev->path, adev->path)) { SetsuDevice *next = dev->next; setsu_disconnect(setsu, dev); dev = next; continue; } dev = dev->next; } if(setsu->avail_dev == adev) setsu->avail_dev = adev->next; else { for(SetsuAvailDevice *padev = setsu->avail_dev; padev; padev = padev->next) { if(padev->next == adev) { padev->next = adev->next; break; } } } free(adev->path); free(adev); } void setsu_poll(Setsu *setsu, SetsuEventCb cb, void *user) { poll_udev_monitor(setsu); for(SetsuAvailDevice *adev = setsu->avail_dev; adev;) { if(adev->connect_dirty) { SetsuEvent event = { 0 }; event.type = SETSU_EVENT_DEVICE_ADDED; event.path = adev->path; event.dev_type = adev->type; cb(&event, user); adev->connect_dirty = false; } if(adev->disconnect_dirty) { SetsuEvent event = { 0 }; event.type = SETSU_EVENT_DEVICE_REMOVED; event.path = adev->path; event.dev_type = adev->type; cb(&event, user); // kill the device only after sending the event SetsuAvailDevice *next = adev->next; kill_avail_device(setsu, adev); adev = next; continue; } adev = adev->next; } for(SetsuDevice *dev = setsu->dev; dev; dev = dev->next) poll_device(setsu, dev, cb, user); } static void poll_device(Setsu *setsu, SetsuDevice *dev, SetsuEventCb cb, void *user) { bool sync = false; while(true) { struct input_event ev; int r = libevdev_next_event(dev->evdev, sync ? LIBEVDEV_READ_FLAG_SYNC : LIBEVDEV_READ_FLAG_NORMAL, &ev); if(r == -EAGAIN) { if(sync) { sync = false; continue; } break; } if(r == LIBEVDEV_READ_STATUS_SUCCESS || (sync && r == LIBEVDEV_READ_STATUS_SYNC)) device_event(setsu, dev, &ev, cb, user); else if(r == LIBEVDEV_READ_STATUS_SYNC) sync = true; else if(r == -ENODEV) { break; } // device probably disconnected, udev remove event should follow soon else { char buf[256]; strerror_r(-r, buf, sizeof(buf)); SETSU_LOG("evdev poll failed: %s\n", buf); break; } } } static uint64_t button_from_evdev(int key) { switch(key) { case BTN_LEFT: return SETSU_BUTTON_0; default: return 0; } } static void device_event(Setsu *setsu, SetsuDevice *dev, struct input_event *ev, SetsuEventCb cb, void *user) { #if 0 SETSU_LOG("Event: %s %s %d\n", libevdev_event_type_get_name(ev->type), libevdev_event_code_get_name(ev->type, ev->code), ev->value); #endif if(ev->type == EV_SYN && ev->code == SYN_REPORT) { device_drain(setsu, dev, cb, user); return; } switch(dev->type) { case SETSU_DEVICE_TYPE_TOUCHPAD: switch(ev->type) { case EV_ABS: #define S dev->touchpad.slots[dev->touchpad.slot_cur] switch(ev->code) { case ABS_MT_SLOT: if((unsigned int)ev->value >= SLOTS_COUNT) { SETSU_LOG("slot too high\n"); break; } dev->touchpad.slot_cur = ev->value; break; case ABS_MT_TRACKING_ID: if(S.tracking_id != -1 && S.tracking_id_prev == -1) { // up the tracking id S.tracking_id_prev = S.tracking_id; // reset the rest S.x = S.y = 0; S.pos_dirty = false; } S.tracking_id = ev->value; if(ev->value != -1) S.downed = true; break; case ABS_MT_POSITION_X: S.x = ev->value; S.pos_dirty = true; break; case ABS_MT_POSITION_Y: S.y = ev->value; S.pos_dirty = true; break; } break; #undef S case EV_KEY: { uint64_t button = button_from_evdev(ev->code); if(!button) break; if(ev->value) dev->touchpad.buttons_cur |= button; else dev->touchpad.buttons_cur &= ~button; break; } } break; case SETSU_DEVICE_TYPE_MOTION: switch(ev->type) { case EV_ABS: switch(ev->code) { case ABS_X: dev->motion.accel_x = ev->value; dev->motion.dirty = true; break; case ABS_Y: dev->motion.accel_y = ev->value; dev->motion.dirty = true; break; case ABS_Z: dev->motion.accel_z = ev->value; dev->motion.dirty = true; break; case ABS_RX: dev->motion.gyro_x = ev->value; dev->motion.dirty = true; break; case ABS_RY: dev->motion.gyro_y = ev->value; dev->motion.dirty = true; break; case ABS_RZ: dev->motion.gyro_z = ev->value; dev->motion.dirty = true; break; } break; case EV_MSC: if(ev->code == MSC_TIMESTAMP) { dev->motion.timestamp = ev->value; dev->motion.dirty = true; } break; } break; } } static void device_drain(Setsu *setsu, SetsuDevice *dev, SetsuEventCb cb, void *user) { SetsuEvent event; #define BEGIN_EVENT(tp) do { memset(&event, 0, sizeof(event)); event.dev = dev; event.type = tp; } while(0) #define SEND_EVENT() do { cb(&event, user); } while (0) switch(dev->type) { case SETSU_DEVICE_TYPE_TOUCHPAD: for(size_t i=0; itouchpad.slots[i].tracking_id_prev != -1) { BEGIN_EVENT(SETSU_EVENT_TOUCH_UP); event.touch.tracking_id = dev->touchpad.slots[i].tracking_id_prev; SEND_EVENT(); dev->touchpad.slots[i].tracking_id_prev = -1; } if(dev->touchpad.slots[i].downed) { BEGIN_EVENT(SETSU_EVENT_TOUCH_DOWN); event.touch.tracking_id = dev->touchpad.slots[i].tracking_id; SEND_EVENT(); dev->touchpad.slots[i].downed = false; } if(dev->touchpad.slots[i].pos_dirty) { BEGIN_EVENT(SETSU_EVENT_TOUCH_POSITION); event.touch.tracking_id = dev->touchpad.slots[i].tracking_id; event.touch.x = (uint32_t)(dev->touchpad.slots[i].x - dev->touchpad.min_x); event.touch.y = (uint32_t)(dev->touchpad.slots[i].y - dev->touchpad.min_y); SEND_EVENT(); dev->touchpad.slots[i].pos_dirty = false; } } uint64_t buttons_diff = dev->touchpad.buttons_prev ^ dev->touchpad.buttons_cur; for(uint64_t i=0; i<64; i++) { if(buttons_diff & 1) { uint64_t button = 1 << i; BEGIN_EVENT((dev->touchpad.buttons_cur & button) ? SETSU_EVENT_BUTTON_DOWN : SETSU_EVENT_BUTTON_UP); event.button = button; SEND_EVENT(); } buttons_diff >>= 1; if(!buttons_diff) break; } dev->touchpad.buttons_prev = dev->touchpad.buttons_cur; break; case SETSU_DEVICE_TYPE_MOTION: if(dev->motion.dirty) { BEGIN_EVENT(SETSU_EVENT_MOTION); event.motion.accel_x = (float)dev->motion.accel_x / (float)dev->motion.accel_res_x; event.motion.accel_y = (float)dev->motion.accel_y / (float)dev->motion.accel_res_y; event.motion.accel_z = (float)dev->motion.accel_z / (float)dev->motion.accel_res_z; event.motion.gyro_x = DEG2RAD * (float)dev->motion.gyro_x / (float)dev->motion.gyro_res_x; event.motion.gyro_y = DEG2RAD * (float)dev->motion.gyro_y / (float)dev->motion.gyro_res_y; event.motion.gyro_z = DEG2RAD * (float)dev->motion.gyro_z / (float)dev->motion.gyro_res_z; event.motion.timestamp = dev->motion.timestamp; SEND_EVENT(); dev->motion.dirty = false; } break; } #undef BEGIN_EVENT #undef SEND_EVENT } chiaki-v2.2.0/switch/000077500000000000000000000000001447035777400144545ustar00rootroot00000000000000chiaki-v2.2.0/switch/CMakeLists.txt000066400000000000000000000076561447035777400172320ustar00rootroot00000000000000 ################## # borealis dependency ################## # do not include # borealis/library/lib/switch_wrapper.c # switch functions are in switch/src/main.cpp set(BOREALIS_SOURCE borealis/library/lib/extern/libretro-common/features/features_cpu.c borealis/library/lib/extern/libretro-common/encodings/encoding_utf.c borealis/library/lib/extern/libretro-common/compat/compat_strl.c borealis/library/lib/extern/nxfmtwrapper/format.cpp borealis/library/lib/extern/nanovg/nanovg.c borealis/library/lib/extern/glad/glad.c borealis/library/lib/scroll_view.cpp borealis/library/lib/style.cpp borealis/library/lib/table.cpp borealis/library/lib/task_manager.cpp borealis/library/lib/progress_display.cpp borealis/library/lib/staged_applet_frame.cpp borealis/library/lib/applet_frame.cpp borealis/library/lib/hint.cpp borealis/library/lib/image.cpp borealis/library/lib/logger.cpp borealis/library/lib/swkbd.cpp borealis/library/lib/crash_frame.cpp borealis/library/lib/header.cpp borealis/library/lib/progress_spinner.cpp borealis/library/lib/layer_view.cpp borealis/library/lib/notification_manager.cpp borealis/library/lib/rectangle.cpp borealis/library/lib/application.cpp borealis/library/lib/box_layout.cpp borealis/library/lib/sidebar.cpp borealis/library/lib/dropdown.cpp borealis/library/lib/popup_frame.cpp borealis/library/lib/repeating_task.cpp borealis/library/lib/absolute_layout.cpp borealis/library/lib/i18n.cpp borealis/library/lib/tab_frame.cpp borealis/library/lib/thumbnail_frame.cpp borealis/library/lib/animations.cpp borealis/library/lib/dialog.cpp borealis/library/lib/view.cpp borealis/library/lib/list.cpp borealis/library/lib/button.cpp borealis/library/lib/label.cpp borealis/library/lib/theme.cpp borealis/library/lib/material_icon.cpp) add_library(borealis STATIC ${BOREALIS_SOURCE}) set_property(TARGET borealis PROPERTY CXX_STANDARD 17) target_include_directories(borealis PUBLIC borealis/library/include borealis/library/include/borealis/extern borealis/library/include/borealis/extern/glad borealis/library/include/borealis/extern/nanovg borealis/library/include/borealis/extern/libretro-common borealis/library/lib/extern/fmt/include) find_package(glfw3 REQUIRED) find_library(EGL EGL) find_library(GLAPI glapi) find_library(DRM_NOUVEAU drm_nouveau) target_link_libraries(borealis glfw ${EGL} ${GLAPI} ${DRM_NOUVEAU}) if(CHIAKI_IS_SWITCH) target_compile_definitions(borealis PUBLIC BOREALIS_RESOURCES="romfs:/") else() target_compile_definitions(borealis PUBLIC BOREALIS_RESOURCES="./switch/res/") endif() ################## # chiaki with borealis ################## find_package(FFMPEG REQUIRED COMPONENTS avcodec avutil swscale) find_library(SDL2 SDL2) find_library(SWRESAMPLE swresample) # find -type f | grep -P '\.(h|cpp)$' | sed 's#\./#\t\t#g' add_executable(chiaki-borealis WIN32 src/discoverymanager.cpp src/settings.cpp src/io.cpp src/host.cpp src/main.cpp src/gui.cpp) set_target_properties(chiaki-borealis PROPERTIES CXX_STANDARD 17 OUTPUT_NAME chiaki) target_include_directories(chiaki-borealis PRIVATE include) target_link_libraries(chiaki-borealis chiaki-lib borealis ${SDL2} FFMPEG::avcodec FFMPEG::avutil FFMPEG::swscale ${SWRESAMPLE} ${SWSCALE}) if(CHIAKI_IS_SWITCH) # libnx is forced by the switch toolchain find_library(Z z) find_library(GLAPI glapi) # TODO: make it transitive from borealis find_library(DRM_NOUVEAU drm_nouveau) # TODO: make it transitive from borealis target_link_libraries(chiaki-borealis ${Z} ${GLAPI} ${DRM_NOUVEAU}) endif() install(TARGETS chiaki-borealis RUNTIME DESTINATION bin BUNDLE DESTINATION bin) if(CHIAKI_IS_SWITCH) add_nro_target(chiaki chiaki-borealis "Chiaki" "H0neyBadger and thestr4ng3r" "${CHIAKI_VERSION}" "${CMAKE_CURRENT_SOURCE_DIR}/nro_icon.jpg" "${CMAKE_CURRENT_SOURCE_DIR}/res") endif() chiaki-v2.2.0/switch/README.md000066400000000000000000000026131447035777400157350ustar00rootroot00000000000000Nintendo Switch build instructions ================================== this project requires the devkitpro toolchain. you can use your personal computer to install devkitpro but the easiest way is to use the following container. Build Project ------------- ``` bash scripts/switch/run-podman-build-chiaki.sh ``` tools ----- Push to homebrew Netloader ``` # where X.X.X.X is the IP of your switch bash scripts/switch/push-podman-build-chiaki.sh -a 192.168.0.200 ``` Troubleshoot ``` # replace 0xCCB5C with the backtrace adress (PC - Backtrace Start Address) aarch64-none-elf-addr2line \ -e ./build_switch/switch/chiaki \ -f -p -C -a 0xCCB5C ``` Chiaki config file ------------------ The **chiaki.conf** is generated by the application. this file contains sensitive data. (do not share this file) ```ini # required: PS*-*** (PS4/PS5 local name) # name from Settings > System > system information [PS*-***] # required: lan PlayStation IP address # IP from Settings > System > system information host_addr = *.*.*.* # required: sony oline id (login) psn_online_id = ps_online_id # required (PS4>7.0 Only): https://git.sr.ht/~thestr4ng3r/chiaki/tree/master/item/README.md#obtaining-your-psn-accountid psn_account_id = ps_base64_account_id # optional(default 60): remote play fps (must be 30 or 60) video_fps = 60 # optional(default 720p): remote play resolution (must be 720p, 540p or 360p) video_resolution = 720p ``` chiaki-v2.2.0/switch/borealis/000077500000000000000000000000001447035777400162545ustar00rootroot00000000000000chiaki-v2.2.0/switch/include/000077500000000000000000000000001447035777400160775ustar00rootroot00000000000000chiaki-v2.2.0/switch/include/discoverymanager.h000066400000000000000000000017171447035777400216200ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_DISCOVERYMANAGER_H #define CHIAKI_DISCOVERYMANAGER_H #include #include #include #include #include "host.h" #include "settings.h" static void Discovery(ChiakiDiscoveryHost *, void *); class DiscoveryManager { private: Settings * settings = nullptr; ChiakiLog * log = nullptr; ChiakiDiscoveryService service; ChiakiDiscovery discovery; struct sockaddr * host_addr = nullptr; size_t host_addr_len = 0; uint32_t GetIPv4BroadcastAddr(); bool service_enable = false; public: typedef enum hoststate { UNKNOWN, READY, STANDBY, SHUTDOWN, } HostState; DiscoveryManager(); ~DiscoveryManager(); void SetService(bool); int Send(); int Send(struct sockaddr * host_addr, size_t host_addr_len); int Send(const char *); void DiscoveryCB(ChiakiDiscoveryHost *); }; #endif //CHIAKI_DISCOVERYMANAGER_H chiaki-v2.2.0/switch/include/exception.h000066400000000000000000000006011447035777400202430ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_EXCEPTION_H #define CHIAKI_EXCEPTION_H #include #include class Exception : public std::exception { private: const char *msg; public: explicit Exception(const char *msg) : msg(msg) {} const char *what() const noexcept override { return msg; } }; #endif // CHIAKI_EXCEPTION_H chiaki-v2.2.0/switch/include/gui.h000066400000000000000000000031671447035777400170430ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_GUI_H #define CHIAKI_GUI_H #include #include #include "nanovg.h" #include "nanovg_gl.h" #include "nanovg_gl_utils.h" #include #include #include #include "discoverymanager.h" #include "host.h" #include "io.h" #include "settings.h" class HostInterface : public brls::List { private: IO *io; Host *host; Settings *settings; bool connected = false; public: HostInterface(Host *host); ~HostInterface(); static void Register(Host *host, std::function success_cb = nullptr); void Register(); void Wakeup(brls::View *view); void Connect(brls::View *view); void ConnectSession(); void Disconnect(); void Stream(); void CloseStream(ChiakiQuitEvent *quit); }; class MainApplication { private: Settings *settings; ChiakiLog *log; DiscoveryManager *discoverymanager; IO *io; brls::TabFrame *rootFrame; std::map host_menuitems; bool BuildConfigurationMenu(brls::List *, Host *host = nullptr); void BuildAddHostConfigurationMenu(brls::List *); public: MainApplication(DiscoveryManager *discoverymanager); ~MainApplication(); bool Load(); }; class PSRemotePlay : public brls::View { private: brls::AppletFrame *frame; // to display stream on screen IO *io; // to send gamepad inputs Host *host; brls::Label *label; public: PSRemotePlay(Host *host); ~PSRemotePlay(); void draw(NVGcontext *vg, int x, int y, unsigned width, unsigned height, brls::Style *style, brls::FrameContext *ctx) override; }; #endif // CHIAKI_GUI_H chiaki-v2.2.0/switch/include/host.h000066400000000000000000000105751447035777400172350ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_HOST_H #define CHIAKI_HOST_H #include #include #include #include #include #include #include #include #include "exception.h" #include "io.h" #include "settings.h" class DiscoveryManager; static void Discovery(ChiakiDiscoveryHost *, void *); static void InitAudioCB(unsigned int channels, unsigned int rate, void *user); static bool VideoCB(uint8_t *buf, size_t buf_size, void *user); static void AudioCB(int16_t *buf, size_t samples_count, void *user); static void EventCB(ChiakiEvent *event, void *user); static void RegistEventCB(ChiakiRegistEvent *event, void *user); enum RegistError { HOST_REGISTER_OK, HOST_REGISTER_ERROR_SETTING_PSNACCOUNTID, HOST_REGISTER_ERROR_SETTING_PSNONLINEID }; class Settings; class Host { private: ChiakiLog *log = nullptr; Settings *settings = nullptr; //video config ChiakiVideoResolutionPreset video_resolution = CHIAKI_VIDEO_RESOLUTION_PRESET_720p; ChiakiVideoFPSPreset video_fps = CHIAKI_VIDEO_FPS_PRESET_60; std::string host_type; // user info std::string psn_online_id = ""; std::string psn_account_id = ""; // info from regist/settings ChiakiRegist regist = {}; ChiakiRegistInfo regist_info = {}; std::function chiaki_regist_event_type_finished_canceled = nullptr; std::function chiaki_regist_event_type_finished_failed = nullptr; std::function chiaki_regist_event_type_finished_success = nullptr; std::function chiaki_event_connected_cb = nullptr; std::function chiaki_even_login_pin_request_cb = nullptr; std::function chiaki_event_rumble_cb = nullptr; std::function chiaki_event_quit_cb = nullptr; std::function *)> io_read_controller_cb = nullptr; // internal state bool discovered = false; bool registered = false; // rp_key_data is true when rp_key, rp_regist_key, rp_key_type bool rp_key_data = false; std::string host_name; // sony's host_id == mac addr without colon std::string host_id; std::string host_addr; std::string ap_ssid; std::string ap_bssid; std::string ap_key; std::string ap_name; std::string server_nickname; ChiakiTarget target = CHIAKI_TARGET_PS4_UNKNOWN; ChiakiDiscoveryHostState state = CHIAKI_DISCOVERY_HOST_STATE_UNKNOWN; ChiakiControllerState controller_state = {0}; std::map finger_id_touch_id; // mac address = 48 bits uint8_t server_mac[6] = {0}; char rp_regist_key[CHIAKI_SESSION_AUTH_SIZE] = {0}; uint32_t rp_key_type = 0; uint8_t rp_key[0x10] = {0}; // manage stream session bool session_init = false; ChiakiSession session; ChiakiOpusDecoder opus_decoder; ChiakiConnectVideoProfile video_profile; friend class Settings; friend class DiscoveryManager; public: Host(std::string host_name); ~Host(); int Register(int pin); int Wakeup(); int InitSession(IO *); int FiniSession(); void StopSession(); void StartSession(); void SendFeedbackState(); void RegistCB(ChiakiRegistEvent *); void ConnectionEventCB(ChiakiEvent *); bool GetVideoResolution(int *ret_width, int *ret_height); std::string GetHostName(); std::string GetHostAddr(); ChiakiTarget GetChiakiTarget(); void SetChiakiTarget(ChiakiTarget target); void SetHostAddr(std::string host_addr); void SetRegistEventTypeFinishedCanceled(std::function chiaki_regist_event_type_finished_canceled); void SetRegistEventTypeFinishedFailed(std::function chiaki_regist_event_type_finished_failed); void SetRegistEventTypeFinishedSuccess(std::function chiaki_regist_event_type_finished_success); void SetEventConnectedCallback(std::function chiaki_event_connected_cb); void SetEventLoginPinRequestCallback(std::function chiaki_even_login_pin_request_cb); void SetEventRumbleCallback(std::function chiaki_event_rumble_cb); void SetEventQuitCallback(std::function chiaki_event_quit_cb); void SetReadControllerCallback(std::function *)> io_read_controller_cb); bool IsRegistered(); bool IsDiscovered(); bool IsReady(); bool HasRPkey(); bool IsPS5(); }; #endif chiaki-v2.2.0/switch/include/io.h000066400000000000000000000062141447035777400166620ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_IO_H #define CHIAKI_IO_H #include #include #include #include // glad library (OpenGL loader) #include /* https://github.com/devkitPro/switch-glad/blob/master/include/glad/glad.h https://glad.dav1d.de/#profile=core&language=c&specification=gl&api=gl%3D4.3&extensions=GL_EXT_texture_compression_s3tc&extensions=GL_EXT_texture_filter_anisotropic Language/Generator: C/C++ Specification: gl APIs: gl=4.3 Profile: core Extensions: GL_EXT_texture_compression_s3tc, GL_EXT_texture_filter_anisotropic Loader: False Local files: False Omit khrplatform: False Reproducible: False */ #ifdef __SWITCH__ #include #else #include #endif #include #include extern "C" { #include #include #include } #include #include #include "exception.h" #define PLANES_COUNT 3 #define SDL_JOYSTICK_COUNT 2 class IO { protected: IO(); static IO * instance; private: ChiakiLog *log; int video_width; int video_height; bool quit = false; // opengl reader writer std::mutex mtx; // default nintendo switch res int screen_width = 1280; int screen_height = 720; AVCodec *codec; AVCodecContext *codec_context; AVFrame *frame; SDL_AudioDeviceID sdl_audio_device_id = 0; SDL_Event sdl_event; SDL_Joystick *sdl_joystick_ptr[SDL_JOYSTICK_COUNT] = {0}; #ifdef __SWITCH__ PadState pad; HidSixAxisSensorHandle sixaxis_handles[4]; HidVibrationDeviceHandle vibration_handles[2][2]; #endif GLuint vao; GLuint vbo; GLuint tex[PLANES_COUNT]; GLuint pbo[PLANES_COUNT]; GLuint vert; GLuint frag; GLuint prog; bool InitAVCodec(); bool InitOpenGl(); bool InitOpenGlTextures(); bool InitOpenGlShader(); void OpenGlDraw(); #ifdef DEBUG_OPENGL void CheckGLError(const char *func, const char *file, int line); void DumpShaderError(GLuint prog, const char *func, const char *file, int line); void DumpProgramError(GLuint prog, const char *func, const char *file, int line); #endif GLuint CreateAndCompileShader(GLenum type, const char *source); void SetOpenGlYUVPixels(AVFrame *frame); bool ReadGameKeys(SDL_Event *event, ChiakiControllerState *state); bool ReadGameTouchScreen(ChiakiControllerState *state, std::map *finger_id_touch_id); bool ReadGameSixAxis(ChiakiControllerState *state); public: // singleton configuration IO(const IO&) = delete; void operator=(const IO&) = delete; static IO * GetInstance(); ~IO(); void SetMesaConfig(); bool VideoCB(uint8_t *buf, size_t buf_size); void InitAudioCB(unsigned int channels, unsigned int rate); void AudioCB(int16_t *buf, size_t samples_count); bool InitVideo(int video_width, int video_height, int screen_width, int screen_height); bool FreeVideo(); bool InitController(); bool FreeController(); bool MainLoop(); void UpdateControllerState(ChiakiControllerState *state, std::map *finger_id_touch_id); void SetRumble(uint8_t left, uint8_t right); }; #endif //CHIAKI_IO_H chiaki-v2.2.0/switch/include/settings.h000066400000000000000000000074711447035777400201210ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_SETTINGS_H #define CHIAKI_SETTINGS_H #include #include #include "host.h" // mutual host and settings class Host; class Settings { protected: // keep constructor private (sigleton class) Settings(); static Settings * instance; private: const char * filename = "chiaki.conf"; ChiakiLog log; std::map hosts; // global_settings from psedo INI file ChiakiVideoResolutionPreset global_video_resolution = CHIAKI_VIDEO_RESOLUTION_PRESET_720p; ChiakiVideoFPSPreset global_video_fps = CHIAKI_VIDEO_FPS_PRESET_60; std::string global_psn_online_id = ""; std::string global_psn_account_id = ""; typedef enum configurationitem { UNKNOWN, HOST_NAME, HOST_ADDR, PSN_ONLINE_ID, PSN_ACCOUNT_ID, RP_KEY, RP_KEY_TYPE, RP_REGIST_KEY, VIDEO_RESOLUTION, VIDEO_FPS, TARGET, } ConfigurationItem; // dummy parser implementation // the aim is not to have bulletproof parser // the goal is to read/write inernal flat configuration file const std::map re_map = { {HOST_NAME, std::regex("^\\[\\s*(.+)\\s*\\]")}, {HOST_ADDR, std::regex("^\\s*host_(?:ip|addr)\\s*=\\s*\"?([^\"]*)\"?")}, {PSN_ONLINE_ID, std::regex("^\\s*psn_online_id\\s*=\\s*\"?([\\w_-]+)\"?")}, {PSN_ACCOUNT_ID, std::regex("^\\s*psn_account_id\\s*=\\s*\"?([\\w/=+]+)\"?")}, {RP_KEY, std::regex("^\\s*rp_key\\s*=\\s*\"?([\\w/=+]+)\"?")}, {RP_KEY_TYPE, std::regex("^\\s*rp_key_type\\s*=\\s*\"?(\\d)\"?")}, {RP_REGIST_KEY, std::regex("^\\s*rp_regist_key\\s*=\\s*\"?([\\w/=+]+)\"?")}, {VIDEO_RESOLUTION, std::regex("^\\s*video_resolution\\s*=\\s*\"?(1080p|720p|540p|360p)\"?")}, {VIDEO_FPS, std::regex("^\\s*video_fps\\s*=\\s*\"?(60|30)\"?")}, {TARGET, std::regex("^\\s*target\\s*=\\s*\"?(\\d+)\"?")}, }; ConfigurationItem ParseLine(std::string * line, std::string * value); size_t GetB64encodeSize(size_t); public: // singleton configuration Settings(const Settings&) = delete; void operator=(const Settings&) = delete; static Settings * GetInstance(); ChiakiLog * GetLogger(); std::map * GetHostsMap(); Host * GetOrCreateHost(std::string * host_name); void ParseFile(); int WriteFile(); std::string ResolutionPresetToString(ChiakiVideoResolutionPreset resolution); int ResolutionPresetToInt(ChiakiVideoResolutionPreset resolution); ChiakiVideoResolutionPreset StringToResolutionPreset(std::string value); std::string FPSPresetToString(ChiakiVideoFPSPreset fps); int FPSPresetToInt(ChiakiVideoFPSPreset fps); ChiakiVideoFPSPreset StringToFPSPreset(std::string value); std::string GetHostName(Host * host); std::string GetHostAddr(Host * host); std::string GetPSNOnlineID(Host * host); void SetPSNOnlineID(Host * host, std::string psn_online_id); std::string GetPSNAccountID(Host * host); void SetPSNAccountID(Host * host, std::string psn_account_id); ChiakiVideoResolutionPreset GetVideoResolution(Host * host); void SetVideoResolution(Host * host, ChiakiVideoResolutionPreset value); void SetVideoResolution(Host * host, std::string value); ChiakiVideoFPSPreset GetVideoFPS(Host * host); void SetVideoFPS(Host * host, ChiakiVideoFPSPreset value); void SetVideoFPS(Host * host, std::string value); ChiakiTarget GetChiakiTarget(Host * host); bool SetChiakiTarget(Host * host, ChiakiTarget target); bool SetChiakiTarget(Host * host, std::string value); std::string GetHostRPKey(Host * host); bool SetHostRPKey(Host * host, std::string rp_key_b64); std::string GetHostRPRegistKey(Host * host); bool SetHostRPRegistKey(Host * host, std::string rp_regist_key_b64); int GetHostRPKeyType(Host * host); bool SetHostRPKeyType(Host * host, std::string value); }; #endif // CHIAKI_SETTINGS_H chiaki-v2.2.0/switch/nro_icon.jpg000066400000000000000000000501551447035777400167720ustar00rootroot00000000000000ÿØÿàJFIFÿá¬ExifII*bj(1 r2€i‡”¦ª ª GIMP 2.10.222021:01:12 13:30:47  ’ÿØÿàJFIFÿÛC    $.' ",#(7),01444'9=82<.342ÿÛC  2!!22222222222222222222222222222222222222222222222222ÿÀ"ÿÄ ÿĵ}!1AQa"q2‘¡#B±ÁRÑð$3br‚ %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ ÿĵw!1AQaq"2B‘¡±Á #3RðbrÑ $4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖרÙÚâãäåæçèéêòóôõö÷øùúÿÚ ?õZ(¢¿3 (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (ªº†¥e¥Z››ë˜íâÄíŒûSUJrQŠ»`Z¢¼ËYø½m 4Z=“NGiÎÕü©ý+Š¿ø‹âkòâ`mÐÿ º„Çã×õ¯¢Âð®a]sM(/=þåÆÄ¹¤}E|Ç.·«NO›©Þ>½;ëLMWRˆå/îÐÿ³3ë^šàª–Ö²û¿à“í§è¯œìümâK<^å€þ[Ìøök­Ò~/ÞDÊšµŒs'y ;X~ƒúW'„qÔ•éµ?MãþcSG¯ÑXÚŠ´Ç› µiq–…þW_Ãü+f¾jµ”fáV-5Ñ–QEfEPEPEPEPEPEPEPEPEPEP+ã·…l#h­Zk‰ò#f»R=O¯µx…þ¥ªø“R\Ë5Ý̇Š Ç²¨éøWÑZÆ‘i®i“X^¦è¤{©ìG¸¬ï ø?LðŸñù·D~òåÇÌÞÃÐ{WÕdùÆ /¹{;ÖüׯEÝJ%Ùç:ÂmBõVmZqeçÊ_šCõì?ZïtÓ”cO[—^àïÏáÓô¤ñ'´–…œÝ^ùa û¿ïƒùûWšê¿¼A~ÄZ¼v1v.æüXÿLW\#žæþÿ7$ýº¿ X½ØžÕ›al› ²¶‰}%ôö³µ‘Jµ¼,PPù¶k7,LÚ­ë“×3·øÔqë¤'1ê7ˆÙ™‡õ­ÔüCÕ××Ñÿ˜{EØ÷ûïxwPR'Òm?Åùgó\W­| ‰•¥Ñ¯Y¨†ã~Œ:~ ×§|Cñ.œËA®Àߟǯë^áÿŠÚv É«Øf(oèÒ5Á_¶A!Yô'*.? ò£GR„±wn1i7~ÿ×⇥ì.«ðïÚ¢6,…¤§¤–Çf?Ÿ¥ywŠ>êžV¹‹ý2Äu–5ù´½¾½+ß)FAê wåüEÁÉ^\ñìÿGºþ´‚gðÛEÔ´~¡< O‡ŠÕºD¾¾ÄúWiEåã1SÅוy«9>…%e`¢Š+˜Š( Šå<}â†ðÖ[•ûdòŒ@rÇòãñ­ý+Q‡VÒí¯íÎcž0ãÛÔ~Šêž´0ñĵîÉ´¾_×àÂúعEW(Q@Q@Q@Q@Q@Q@Q@Q@T·éö3Þ\6ØaBî}€§¹5îÀó/‹šþßB…ùlMqOáÌþUÈx_þÁñ<#âÖç÷3dðèÃ5‹¬jsk:½Ö¡9ùç¶?º;À`Uý{”Ó¥—,Öë_W¿ÝÓÐÁË[ŸUÑ\·€5ÿíï BÒ>ë«oÜÍž¤Ž‡ñýk©¯ÉñXyá«JŒ÷‹±ºw (¢°¢Š(¢Šå¼¯ÿ`øbföÝ\þæuõ?€Ïé[ápóÄÖo'`nÇ’øû_þÞñ<íîµ¶ýÌ8<:ŸÄçðÅuÿõü¥Æ…3ò¹šß>ŸÄ?‘üëÊ*ö©Í£jöº„ç‚@Øþðî?‘_¬c2šur烂Ùiê¶ûúú˜)kséÚ* +Èu /-Ût3 t>ÄTõù ¢âÜeº7 (¢Q@Q@Q@ó/öþ³ÿAkïüñ£ûYÿ µ÷þ?ø×Û©uçêûŸù™ûCéª+æ_íýgþ‚×ßøÿãGöþ³ÿAkïüñ£ýK«ÿ?WÜÿÌ=¡ôÕó/öþ³ÿAkïüñ£ûYÿ µ÷þ?øÑþ¥ÕÿŸ«îæÐújŠù—ûYÿ µ÷þ?øÑý¿¬ÿÐZûÿühÿRêÿÏÕ÷?óh}5^iño_û=„$/ûËÞÍŽÈñ?ʼÃûYÿ µ÷þ?øÕ;‹«‹¹L·3É4„c|ŒXþf»òÎxLLkÕš’޶·^Ÿpœî¬EEWÙv? õÿìoG ¯‹kÜBùèøOçÇã^õ_*AÞ´·õŸú _àCÿ|¶ußÚÕzsQv³Ó~ÅÆvGÓTWÌ¿ÛúÏý¯¿ð!ÿÆíýgþ‚×ßøÿã^?ú—Wþ~¯¹ÿ˜ý¡ôÕó/öþ³ÿAkïüñ£ûYÿ µ÷þ?øÑþ¥ÕÿŸ«îæÐúj¼âF¿ý³âg‚'͵–aLt-üGóãð®ûYÿ µ÷þ?øÖq$’IÉ=ëØÉxsû>»¯RjNÖZmÜRÕ‚Š(¯© ö„šÿÚ,'Ñ&Þ[þö÷ByþuéuòͽÕŤ¢[iä†@1¾6*1W?·õŸú _àCÿ|ng‰•zSQRÖÖë×ï-NÊÇÓTWÌ¿ÛúÏý¯¿ð!ÿÆíýgþ‚×ßøÿã\ê]_ùú¾çþcö‡ÓTWÌ¿ÛúÏý¯¿ð!ÿÆíýgþ‚×ßøÿãGú—Wþ~¯¹ÿ˜{Céª+æ_íýgþ‚×ßøÿãGöþ³ÿAkïüñ£ýK«ÿ?WÜÿÌ=¡ôÕó/öþ³ÿAkïüñ£ûYÿ µ÷þ?øÑþ¥ÕÿŸ«îæÐ΢Š+ô0¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(©m­ä»ºŠÚ ’¸Dã$œ Š´tù´ßúúÿB*òHÞÿ…gâoùö‡þÿ-VÔ|¯iZ|×·PD°B2äJ 8é^÷\÷ŽäJÕ?ëÿÐ…#Ù©—ÒŒ•ôGÏôQE3Å (¢€:m;Àzö«§Ã{kMÃ(L 3Ž•gþŸ‰¿çÚûüµê>ÿ‘+Kÿ®GÿB5ÐÒ=ªy})AIßT|Çso%¥Ô¶Ò€$‰Ê88 àÔU£¯ÿÈÅ©×ÔŸú¬êg%i4QE (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ÑÐ?äbÓëê?ýVuhèò1i¿õõþ„(*ŸÆ¤+žñÏü‰Z§ýrú®†¹ïÿÈ•ª×!ÿ¡ GÓÖþ½óýQLù`¢Š(èÈ•¥ÿ×#ÿ¡èkžð7ü‰Z_ýr?ú®†‘õ‡D|߯ÿÈÅ©×ÔŸú¬êÑ×ÿäbÔ¿ëêOýÖuÌÔøØQEÉ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ ±atlu k°›Ì2¬›sŒàç^Š;;£ÓáoËÿ@tÿ¿çÿ‰¬ýsâdšÖs§1b®ÝâlãzcÚ¸*)RÆ×’³—äQE3”(¢Šït?‰’hº5¶œ4Å”@»w™±žIézÐÿ…¿/ýÓþÿŸþ&¼ÊŠGTqµâ¬¥ù/îö¡svSašV“nsŒœâ«ÑE3•»»°¢Š(¢Š(¢Š(¢Š(¢Š(GûYÿ M÷þ¿øQý¬ÿÐ&ûÿßü+éª+óïõÒ¯üú_{ÿ#Of|Ëý¬ÿÐ&ûÿßü(þÀÖè}ÿ€ïþôÕ®•çÒûßù³>eþÀÖè}ÿ€ïþ`k?ô ¾ÿÀwÿ újŠ?×J¿óé}ïüƒÙŸ2ÿ`k?ô ¾ÿÀwÿ ?°5Ÿúßà;ÿ…}5Eë¥_ùô¾÷þAìÏ™°5Ÿúßà;ÿ…ØÏýo¿ðÿ¾š¢õÒ¯üú_{ÿ ögÌ¿ØÏýo¿ðÿÂì gþ7ßøÿá_MQGúéWþ}/½ÿ{3æ_ì gþ7ßøÿáL›FÕ-ái§Ó®ãFYÞ}IôíGqWVò[Îâ‘J:°àƒÔSTºæ¤­ëÿ=™òÅ¿âÿ ËárKBÛ?Ïo!þ$ôúކ°+îèV…zq«MÞ-]½Š+{—ÄÚäv€nŸ=ăøSÓêz +Ö… r«QÚ+V \χFÕ.!Y Ó®ä†UÒ ýÿì gþ7ßøÿá_K[Á­¼vð H£Pˆª8t%|$¸Ò¥ß-%o_øžÌù—ûYÿ M÷þ¿øQý¬ÿÐ&ûÿßü+éª)®•çÒûßù³>eþÀÖè}ÿ€ïþ`k?ô ¾ÿÀwÿ újŠ?×J¿óé}ïüƒÙŸ2ÿ`k?ô ¾ÿÀwÿ ?°5Ÿúßà;ÿ…}5Eë¥_ùô¾÷þAìÏ™°5Ÿúßà;ÿ…ØÏýo¿ðÿ¾š¢õÒ¯üú_{ÿ ögÌ¿ØÏýo¿ðÿÂì gþ7ßøÿá_MQGúéWþ}/½ÿ{3æ_ì gþ7ßøÿáGö³ÿ@›ïü蓱£ýt«ÿ>—ÞÿÈ=˜QEñ&EPEPEPEPEPEP9ãO Çâm àP¢î,½»žÍéô=+ç©b’ ž)P¤ˆÅYX`‚:Šú¢¼—â§…<¹?á ³äréGcÐ?ô?…}Ÿ fÞÊRªýÙ|>O·Ïóõ"qêyŒQI<ÉH^G`ªª2I=} à¿ Çá ` ܸ{‡ÛÓè:Wð¯ÂždŸð^Gò!+j§¹è_ðè?õª8¯6ö³ú•'îÇâó}¾_Ÿ B=BŠ(¯Œ,(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š(¢Š*+›ho-e¶¸ŒI ªQÔô Ô´SMÅÝnVÖÐÙÚÅmoŽ”"(è©h¢†ÜÞàQE (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€ (¢€?ÿÙÿáhttp://ns.adobe.com/xap/1.0/ ÿâ°ICC_PROFILE lcms0mntrRGB XYZ å *acspAPPLöÖÓ-lcms desc @cprt`6wtpt˜chad¬,rXYZØbXYZìgXYZrTRC gTRC bTRC chrm4$dmndX$dmdd|$mluc enUS$GIMP built-in sRGBmluc enUSPublic DomainXYZ öÖÓ-sf32 BÞÿÿó%“ýÿÿû¡ÿÿý¢ÜÀnXYZ o 8õXYZ $Ÿ„¶ÄXYZ b—·‡Ùparaffò§ YÐ [chrm£×T|LÍ™š&g\mluc enUSGIMPmluc enUSsRGBÿÛCÿÛCÿÂÿÄ  ÿÄ ÿÚ µNÛÀà?@1\ŽJóÝJ_´tZWêž?ÉQ —‚zËMrª±m$¸îo–{_b)i«vY—¬5sÓOë÷ïǽÿ¶’:éP¿i(ë‹w­ÖW¢÷9ÐK˜ 1ó×9Çž3~–µwªÛ¾ëOçÖCv|«ÚÀtÚ¾hjÝf­ú”‹øuH‚f^t-ØšhmÆ]km_«nŒuûg…^oí²ÇtŠá4uV´ægÔ¬C'“@}žžWk_ÌÐú– "ŽÇRoÿŒTeøÄà °è]®!l¥'A|`¿þ€?}{=`—šÙWiüôºàÞe棺øæ”IÐ?oÒ—^j€E½…¥çß²vߟ¥~d~õš`Z{ßm§þ”ÚDÃÖº»éãÝô vÅ6V\5®ÖY¢ eûÍb¾U|Ô œ½Ìdùˆz´ËñÉ€5Þe œ=åT¹¾0£3á  -&e“«"¬ØG™[¿H2í¬z†/@º¶¿ÿ-¤±Ê9¾›RµäÖ€[¿H2í¬z†/@º¶¿ÿ-¤±Ê9¾›RµäÖ€[¿H2í¬z†/@º¶¿ÿ-¤±Ê9¾›RµäÖ€*ìR_¬` d Ÿåà ë'Ô3õκæù>?@6&8 S Ê$fؼÿÝJš83’€]w»]è_®x õò?~ˆx¥z4:}›žžÐXBÜ`¿È¿‡T€Kô~ÔBÚ9ÁvåÜeü=[tÀÿÄ,@ 067`PpÿÚýž^n"™/Q±í÷K^k‡-­r‚gJœù}cn‰üV£ÝGÊPÜ*~,cOt®6àÙY¢CYa>ž§$öÂÙ«} µ´$3-›ã£ªí•¶@sIºqo»l¼(\£¼R³oøÄƒ±…PàÖÜ|©­Ý Ö~ý›Ëot^Vûu"B6ÚÃ^Kƒ ¸?¨)}òð°eq`vÒ Múb *ؙ͌X(ŒFÇ£6W‰Šs²~ÌNì<³„A»lÁðÏ'øÓO é–£Ð֌×M7iÝwê@@Lµ!†âu]ðì´EØ‘‘wK²ÃK¾-œ9I±ēމgU .Ë»®ùn&†ç NÅȵ—Žáu]ô‘¾L»0î½…Ù1‡‡NåßWäååk/+YyZËÊÖ^V²òµ—•¬¼­eåiãç²5¼4×]5ËÊÖ^V²òµ—•¬¼­eåk]u×_ožÇVËÊÖ^V²òµ—•¬¼­eåk/+YyZËÊÿLdÒ¼ƒÏ±· LÚSHÎÈkJi=ö6á'­+Ǽãú©]oo{-O·¨»Õ\aU+­íïe©öõz«Œ#ê¥u½½ìµ>Þ¢ïUq¢_ë)ùáßäЂׯ¸Ìä{…,ÿYIOêñµˆ¬@­bk+XZÄ Ö V±µˆ¬@­bk+NFˆ™Ðìl4Dò† V±µˆ¬@­bk+XZÄ Ö V±µˆ¬@­b~s¶ßµ¸ÁNÈü-ÈSƒ‚6°k˹ ôNG+Ьֽ W¶@ôA‡9·úßüš¶ßüê¼ç¬šÈ³dɬs?öÿÿÄ= R!1@ 2A056Qrs²Á#T`q’¡¢â"3PpÿÚ?ûÎ÷µƒ7•& Ѳ0Y;»Ñ’C¼®›ýiµ3·s”xƒ‡ûŠx¥ì"¦¢Ãv ©Ï’gmÚTTvÙ6&QÀÎäÁ¸.‹}IÔÐ?{T˜xßNd»ü¶IVçºÓøy#l¬è9CO#fõ5\pìÞSë¦wgb2Êw¸«Še\ìïQW±Û$ØœÆJÜ´()™yq´½…­9ÚiŸ!fJ:›ÛÚPŽ6öB,aÞ”p?»%=$íB¢ñÇ›Ï#Äl/*’{ÌÛ¿ÈÕÏe›7¨Þ$`xáq wD,¶¦î>F®[²œ·‡Ë¾#Â9Á­.*G™^y©%»Ýã¯W-¨¶o<ѼÆððšàö‡—&ÚôrÛ—#¸õë%¹.CpçÃåͶ’»&¢®É¨«²j*욊»&¢®É¨«²j*욊»&¢‰.Úz—dÔUÙ5vME]“QWdÔUÙ5 %»B»&¢®É¨«²j*욊»&¢®É¨«²j*욊»&£÷2šžJº†RÃÛy~%xµåN†~°±Br‡ £’¾©¶Á™ÉÀõpþBr‡£Ž¾•¶ñ˜ÍÀ/¼©ÐÏÖM<”•¥›¶ÂAüG€yò“Þ3âÜ´ôZ·Øùޝ"ý¢ö>g›óå_¼Äx|Ï”žñŸæå§¢Õ¾ÇÌuyèµ±ó<ØÿŸ*ýãþ#Ãà|¤÷Œø‡7-=­ö>c«È¿E¨½™æÇüùWïñ‚«Àkb¬Ë>ƒƒ²õäs^6Ÿö/çýV3ô’ü_ › ð^Á–},òýº¸7ÒKðŒ.7ÁzVÆYô²Ïö^6Ÿö/çýU}W‡VËY–]7eêÌçÿ2ÔšJµ&’­I¤«Ri*ÔšJµ&’­I¤«Ri*ÔšJµ&’­I¤«Ri*ÔšJ1¼m#ª#yÚµ&’­I¤«Ri*ÔšJµ&’­I¤«Ri*ÔšJµ&’­I¤«Ri*ÔšJµ&“åˆQ †Nw=<&i:=ÈÑã*aG—z ƒ‘@r š ywñÕÐeõÍüÕ ýs¿.=À8tJkCGDîÿÄH  !1Ua”Ò#@ABQ "2Rbqr‚‘¡±0C`cs£$PSp’ÁðÿÚ?þK¸zd±(ÌÓ¤H°‰Y’Ž\Q }ÛL: L ‘p!Š;!T( ð·¸çøSz?)Nm.àÇE¥Â—W iÁŒ¨Ä¢>ìK4‘¤˜q@¬a SöPH?BÙiRTv\GÖç ¨¦?©m ´~b(„B_n=iÀ›î–%§<%§¤3‰$£ez“_OᎧ/ãj‡F*1Xi؈7¾à]?M}aêˆû'›gHÁòˆ#X£kùEñQd×U)D<9Àt Ô^¡PoÐ#izW’i„¼- ¨$ÍŠAyÌ"ÑÛUCg0ûÆT\3¤ù}E!Ò+qˆ8 ÞDS@gmOÀ ÔkMQÖiœæº)â©a±A;¾¼ê}ÏgÓŒÝSÂÄ¢Ž7yÖPß©¬ŒÃ0¶0(ÝòÅðPáÿ»KÕú°K')¡ñåÌPì¬o_²¸ÿ•Ö°ÞpS‘•F†€—@®Û0†Ó"a¸vâœ6ÒÜÛ$TØ@\¤ñ™Âã—0ÝeDÌ—àbÛ eÉjæ¡Ikª çU±Íqñ»˜ÐaážÈ‡«Ñä9æ=N¦vóLº¦*épì¨Aõ“8u”ÁöÒÀ-Vë¤çVß•ð0ò6Ø‚> »O£ÂÞ7Ò R¼ª N!"@Ÿ‰ÃøëúAý$ýcü}{Ö“°B¤ÒÚeÈ0”Á8lª`Ê ç‹glžô¸Ž¡MŽò ê[M3Q© †ð‚¶T{m„QúKÍýÈ6©xÍrêjE$'>Ø3ø#Àο†)‡¨ƒifj›é´Ãå8 ê4zÜ`Î4‘BcyL¬æk¬ ͼT¥Aªi1C+w¤¨ßß ¥ÏˆDDG£Óù‚+N #±öxÑ#€èï»@˜¾±@×”D.0]iŠ»SRMk88|S6pLdNáUOt©õb¢llRBáí?a“PæNÚO!aÍz„\CiÌ¥ú ÐÚ-P'˜ò¢´f0åc{Ë(?`Ƹ? 4š¦v ‚ìb+¦pë*ª~àkIØRÕùIR‚ÑnSrðþæeCÿ/ÂÔ‹ ‰&¨—?袣ü ªô”ÌùD ~à6¾~“g)äJ­Sµ¼‹;.•ÏìæÌb'  "#}ÊIœÀ0æ 9$ÉZ!;MLeXXsÎT)ÝõŒ;[Ì;ØJÒ&ôªp@°b“¤QHG¨é€Rˆ÷ßrŸ_!tÌLnëóðj¤Mê¬à¹c$&6H¨‡YÎDŠß}çú-:J± &j}*Åžl¡ˆ>ðª`ØrÜ`Ø=joåNˆ“½»kÿÌpü“ùÂØFÓ€¨ôÍÛF¤½ó^}ñ1Ò p—–ïkºÂpùà#p[*pâ™´hè—>uϯÞ8z$í’à»ÚÆï¶4ß;:'sw7„ãù¦#òD—`1 ¢:Ò]…Ã… ™i†ï°ià´•*Ãä‰Q„© e²e%þÐöŽ;NkÌ;G“ šo“ÊšçÄÉŠÁíîî aç!ï¸=‘/Ÿƒ57ÊMmã„Æ`Êç w(ódúÏuáì¹'YV;ÊåH s.S1/öG²pÚC\`Ú˜ 1 ^<î]Š“Ãu ™ÃiFï°éðèxÓ(F]Ô¨Š|ÓkÑoZ¦páòq~'î\)i¿íõ3Yë"^þzé÷‰9â~$ô¶˜çà³Mÿ`iš/^’çñ —S¼!Ì“ð'¥óypÖ¦þOŒ´©Päù§7"âî¥JÙÇç býßû¬SýFÓwG‚Ù:§ú¦î²uOõMÝ dêŸê6›º<ÉÕ?Ôm7tx-“ª¨Únèð['TÿQ´ÝÑà¶N©þ£i»£ÁlSýFÓwG‚ÐØ\2Ô‘BñÄL¥!o>‰@?(€1M¢Ù;5MÝ dêŸê6›º<ÉÕ?Ôm7tx-“ª¨Únèð['TÿQ´ÝÑà¶Nä FÓwG‚ÀPÅ.ŽX”.j,bíȲ#ŸB”å¼4f0f¶N©þ£i»£ÁlSýFÓwG‚Ù:§ú¦î²uOõMÝ dêŸê6›º<ÉÕ?Ôm7tx-“ª¨Únèð['TÿQ´ÝÑà¶N©þ£i»£Áü˜9­²Øþn=±öX3ôshä¯4:ù ££›G õy¡×È]Ú9«Í¾Bèèãœ.¶(Û|ÜQ¶(Ø3ßí™E§úñ¦ð²‹OõãMá;eŸëƛ­Æv~mºcÛTC7ÒOXûí"ŠDßF¢+Å⊠Ž0œæ&1†ñ™@ªÓšM;§\Â0ÕîMÉ=Ëó(í&>w†1zìÑÓgÍSzÌàt”(¦ àb˜/î³§M˜µQëÃL¢csJP¼DG¸Õö­9«3º‘ ! ozm‰î_AiAô‡¸1KÕÓ°;¬ž<×%S ¼ê`&haíIÑø“Ö'»Œ¶•“ÄZdª^WTÎÌ’i"?úÇ÷qC´=>ˆÀbãP•E7(œC1FðEâÑôQÄj,¨¨åc‰ÎaÒ&0Þ#ÿÚ?ïÿÄM  •!6Ò"#12@AQaq %CRr³$0Bbctu‚ƒ‘’¢35`ÑÓEPps¡²ÂÿÚ?þg;ù™±ÍIç\©r÷QC„ÃÔì£|–‰<ƒ0HIˆ¶kÚTƒv!Ú%±¼¸häæb#0/aøÿªÃáC8½sˆ)(¹ëú­T¦¦”äVLí`ðl¨“9CͽP$SüX‰e4;gÈðÜXø#’õíf)¿Ú°²iÈò‘Î=ï —jcÃÚZ‡_(nfÑʽ’¼›%T „kq/ª~qϘÃNkgîÌH¹=ÆÍÓ(«v¿KÀE &ï)Þ ±·^ˆ©3Êø„ý]–-! &°wê ã®çîÿÛkiÕ?A»‘/àa*ŒY(Q N؆ÿ‹äÄY o<És×üÉݲŽ2NXé)Æ,t¶ø‘ºŠ¹B¡ö€{lD¤š½‡~‰öÆÎa%ê|tV.aí(Ù¦Jå u¤]¬ åÛ%y]ÈWßEoœþžNîYµ«¢f0~õ¹ÃŠ¡˜Å°Š êL壹‡$ [¤ èä‡}l£Cª2Óÿ ``0¤?<§™ÍÕc–5F° Dw$dˆ.æŸ)S×ôl&u”“«‰¸oÊ-Aî½j£;4ˆüÜšäÿÕ‰IÅ$Ñ/ ytÁñOöÇ|ýVI–R¶÷á÷ ð¦Ûâ”±ã'öª*ÂÊM³YHçD¾™³3†eP8 Å³õWŽß,>ýtá£]§0sÆîQ%&¼;çM…6ÏÛñÑ7ôÏŸ0Ùô #”IÛ\›×‚$dÛžñ•ø×ƒtj"[&¬à­”/ƒ9S XâÉH£Qûb=–ÚãàâY‚ãÒJ½¹¬)9Œp™¸É¬Í5H=Â="KäÁ¹u>tÚýØþ[(ý¿– Ëœ_6NêíCçÒæõ‚¡Ùm²që ,ˆƒ†0‹ IŸN|å1ëQ/tV¼¨DG8õìIM=5G53“ç ž¹ u˜hPí³…žìG<:OH\Õ"†¢pŠTŸw°%0€…8ŽÝF&'»/“"=™€ëC¢”'ÞZ6i‘ªÚE©\“=D• Ѭ£Rg%ÈÖŠgR’’×G˜3 ˜÷Þ?q,ÉEÔ¹+ä¹*P8ïj¨z zßõD¿ä¸Ú Hp zz¶È×jgN²‘7‡›Ï¦ô?yù#éG§ÚÚGµ;µÏÐRFÒs~‘teîÖ»Qx@õJ/vÃ3®¥ù8Ÿ%ÈÔjs‰{P}rS¼ ã¼: \“–ò\u‡ œ7ÅÔ%{Ä»“ŒÇ~ŽtUîÖ›ixAõŠ&/}˜Ê2>ØÒA© ~’œ*–H´S“}'ts•{ úç ý×^Ê )r7()棸MJûÝOÌ7{vÔ¿“õmAÜ(¥}ð§æ ½‰†ËÜ‘v¥WŒ}xs™›| z‡ýïWÁi4þ.ãZÚM?‹¸Ö¶“Oâî5­¤Óø»ki4þ.ãZÚM?‹¸Ö¶“Oâî5­¤Óø»ki4þ.ãZÂåû·/œ @¢»µÌáaà ÆÏ² 5 ÂÒiü]}ki4þ.ãZÚM?‹¸Ö¶“Oâî5­¤Óø»ki4þ.¾µ„DDDF¢#œGdÇ»rÅÀJ ´\ÍÖ¼\öÒiü]Ƶ´šq­m&ŸÅÜk[I§ñwÖÒiü]Ƶ´šq­m&ŸÅÜk[I§ñwÖÒiü]Æ·òcV € áë‚5@¦5Ð1Ô0¹ûFßÃØâi[;—‘dÑ6LSÛ7éªr…@¼PíñZKÇ2h£'ÉíΣôÒ9‚¢^(ö[ø{M/ëgL€Ã'j¹JkÀS¦a)³ö‡'É¿¯Z{rle?ÐCÚ§âäÇÐGÚ©±”Ÿ^»öçäù7õëOnMŒ§ú{Tü\˜úûU62“ë×~ÜüŸ&þ½iíɱ”ÿAjŸ‹“Aj¦ÆR}zïÛŸ“ÇI{pǾIè$&¸ íGݯ]-¢¨â£ý»IÁ'Rh(‚"à$EQKtSVíÀ¯‹\IØG"(ƒ‘…]Ñ[·œ6ÑTqQþݤd…=¤d*ôR_¶Ó‰îת¿åš3?„8Õ¶ŒÏá5m£3øC[hÌþãVÚ3?„8Õ¶ŒÏá5m£3øC[hÌþãVÚ3?„8Õ¶ŒÏá5m£3øC[hÌþãVÚ3?„8Õ²Ž]À̵l^Uw‹"ŠaÒc h*nZ@̺l¨^Ivñ‹,ŠÒSh6Ñ™ü!Æ­´fq«mŸÂjÛFgð‡¶Ñ™ü!Æ­´fq«mŸÂjÛFgð‡¶Ñ™ü!Æ­´fq«mŸÂjÛFgð‡¶Ñ™ü!ƯÃ8dí".ÕÚ&náñ!‚†³ˆÑž9zºˆto>ˆ¤N(öWŸe¼i@äBŽ¥ÝÌ"À銵æ³vM" Z"VíÑL.‘"(PX³2”…–eWpî šê€ÓôTàáæ²Íœ&t\7TQ]ꉣCC¨l‹fégQE0¼uLa¡JÖ6E™ÊCK=£¹‡ÏyA É€ú)ðxóòïÛx¤w¥ŒÏ$˜qÅMÅ:óÝwzFß¶ò¨ïH˜ÈÀ¤ qÏÅQÅ>Nr—®÷@r÷,¢G  fîP*E` …›0d‰´f[·E0¡!B€ë‡ÿÄ(!1AQa@q ‘`¡Pðp±ñÿÚ?!ü.MûÌèHsÄëΆ­ªtrå:}Ò¶ÅJvèGáv‹È\ ^W÷˜Q•”‹1¥ñ$!© €h?µœ¹@î$•`É¡FP™. ã…ÛÑ‘ú„³š‚FðàS+ÊM@¥†'–à §X+ôJŒ)“û#K……;ß}Í=?ðv=œê¨Åù vBÚ ¼Tt²J€ii{y¤€„yÎLŠT’Ÿ<³oÚW¢ãok‘V‚C»š -í_ê½E^LÈýSMÙ‹è*Hf¬ò;Z°ÈHLL y æ|2`BŒ‰`vðx4ŒÀX’I (9¸–Æ À0("ôiÐ5-  Œ1FÄ ‘ä&û¡ðQäÍ#NŽR}š[½’æ® ez6Tóî¸S –ë"-b DËÝ 2„."_@zèQ‹_¸’njÊ;ç8|¤pð\‰ó²ŽÎsœYòÅÈ/ÔI7}®’%ÔŸ.椑@¿²É,o(d’ãqù¬Ø.´“ BuöX!¥i"]j:#›´ì§ë©J2üö!Ó€»jOrºí>yK·åø×#¦ó¢Œ·0gm˜T[ZÛ$ÂhgcÓ/êèxêX [ɸðÍÑZ|í/àØy"ê­zØõ—ú}ŽÎÌ•*T©R¥J–Ù{=‚#BzÈ™Í Â?4éR¥J9iUën­žÀƒ©?Š¥J•*T©R¥1}`Á*À…ÞñÆ`’ÜãâÿˆF3’ï=¾°`dçææK2d±c&K2 äȱ†a‰èþ2"¸NLüg!ñ²k„åÇGà¾@A ‰8f æR¥J•*T©R¥J•-ÜÃ`‚„®¿¹†Á$$I;´©R¥J•*T©R¥K4´Š‘["Òþ2-“}(@ê¿ N$ßjª)i"¶ïö—Œ`âv”ùÑ‹3, ‰Å8tr-¬”æ³ØHhÁƒk²{þü;Ñšk|K¼ºOD÷Ò§Mÿ1Ûg«jž¬[Œë¬l;sáÿ%^æ’É­x¼¹x‹haP껑öÊÒBú¬æ|©iç'2[»¼U›„Eáºûv ”÷ÐÝ÷Oy° x]×Õö—Aú6®@š+ê{ž“Ð.oò½”¶à>Ýû[pßfÿ#=ü3êêùpí¯Níß¿nïÛlúšž_K(Ì£2ŒÊ3(Ì£2ŒÊ3(Ç­W®½»m2ŒÊ3(Ì£2ŒÊ3}û^µšL£2ŒÊ3(Ì£2ŒÊ3(Ì£öaú!KE€[À·~Ê ’ XhïÝvK ‰i¨í·eè –#OÍþ÷°,‹a¿ZVŠ—M]UÓS§ü¡„FïܪÞÜÎé߸·W­ù³§ü¡¿Z^ª—EÕÕÑÆa„f˜Fa„f˜Fa„f˜Faò{¡ÙO&a„f˜Fa„f˜Fa„f˜Fa¬äìb%»SË´WUé Œt6ê|ë$°ß«ã¯S§ÅËÔè|>=HØÀãAþpÿÄ'!1AQa @q`‘¡ðPpÑÿÚ?ü(Å!“ÌŒ¨ß±Ž}HêÓÔ¤P,½–˹f&ã|ÅZ¢—ô×0¿ÒPJ&smgKË5zÈ@+ ò÷rk@ðãô%ý%bËÒ‡ò®êË­7ÆpòÖ‡PÀܹô/·¨ URÁ{,Ê‚¼–Vü”‡Î#ˆâX·-ÊB§ 1O±ÃD‰!HM² (D$™*‘›*›€D¼J-ÓDŒÛOdqW°Àpî)¾°¹!xŒ3긿ѠBí'^0F…øŒÁJ‡Eƒ+†2ŒP* h*°j®^“ïb‰0´Ñ(R'!°Év}Ó¢PDKˆ—Âb•Y{”²r éfµö(ÊÔÐärÈ.ƒ!sXyGÁ bƒo—Ay¨^Coj³ ˆI£U…dÌ’Ç(I”‰Ee§×¶¢",PÁ1H^¹¶•&õ¿Ù°D@釯&õ?e)D}9LCDZEU¹DÑÂsŒÄ,€$ to•gXYðÙªI’sžgIü„¹xç°#D•ñ¥¼6 æ±xCØ–ìl¦ø¤>M(\”F3… JM¼ö«$8/è|M¨dXgÝáS·8AŽÑê±5Cû ˆœtROÛ»1U„äÒiDAň @ò.¨¤5Eªø'ÃLÝò¬–"Ǻød!XµàcÅ ÍC½Ö·½µ'Pp¶“õQ‹{¸0 EÝm¼RD›0Ðå©ì¾P•Š$$ŒŒx€©jH<Ž“ð[†yÀ/8Ol’­HâíüôC,"b¤E¦sZîf€¦IV)âiüd<á„E0 ÇŠ­c-‰ÔŒ}{˜ÂŸ€:eèB˜@Òw‚ mq—´­P…p­k,«+Ôýúž&ü8¹¸lQViŒe¬‘ÂZH® "(ŒˆÂe.jt\‡t»éáneAp ÐpÅUUU•Y\,åŽ0І–øq}nÕ€Â>˜Ä¬ê9`¨n„Nª¦[?íf `wÒØÿhZPBc"°¨í¤"Ú dÉ“&L™2`{°/ÊXi Mu>Àf°@±D±0 µ2dÉŠ¨Ò0¸~ÀMb¡jª«jõ4EøK,üVdÉ“&L™2b¹,œO6€eé Är—‹a^;Qx$:÷䲌%Œ" á¡×¡eø2¶²ª«ýáÿÙchiaki-v2.2.0/switch/nro_icon.png000066400000000000000000000340161447035777400167740ustar00rootroot00000000000000‰PNG  IHDR\r¨fKzTXtRaw profile type exifxÚíškv)“†ÿ³ŠY÷€åçÌfùóYRK¶åÏÝ­3¿FeU•³2IˆË{¡äöÿü÷qÿÅOI)º\¤Õ^«ç'÷ÜãàMóÏϸÏÁçûüö^ÏŸŽ»÷·‘×Äkz>hõuÕÛñðiïʇÚz}0?ÐóóÛ½n”lF‘7ú¨¿Jñù ¼ϲ|íM>.aîçUßÚž_gOoùþy·ÿg!zZ¸OŠq§<Ï1ÅgÉ~ƒKƒ7çÀIö.ñ>qÌŽÇ×Lȯâä?ÌÊýiV¾JJªÏqÇÏÁ¬ï¯¿<ʯƒïnˆ?Ü9­÷;:ÞcH?.çí÷mîœý¬näJHëkQoK¹ï8qòt/«<„ßÂ{¹Î£9ªw‘rõËO+ô`÷>! #œ°ïë ‹)渣ðã"Qv¬%‰=®äyÊö'JêIS#™‹ô&ŽÆ÷¹„{ß~o·BãÆ83 V Ξ¾ãñå@çXɇàÛ{¬˜W´Êb–9{æ,Î[•à·Ç?–×DË scÃÏgˆY«¶¬ŽÒMtâÄÂëÓkAô5!âÞ…É„D| ©„¼Ä(!ÇF~µ˜rœ¤ ”•YÆœR%9-Ú½¹FÂ=7–ø³HDI5 ©éi« °Q?’54J*¹”R‹”Vz5Õ\K­Uªß$YŠTiÒe´Ôr+­6i͵ÞF=Ž¥×.½õÞÇঃ‘WNcÆ™fžeÖ)³Í>Ç¢|V^eÕ%«¹Õ×ШIÁ ­*Ú´ëØaSJ;ï²ë–ÝvßãPj'|Ê©GN;ýŒ÷¬÷¤õ§ÇŸg-¼e-ÞLÙ‰òž5.y"œË‹9q± €YÎ| 9Gg©³œÑÞtE‰Ì²Xr4XÆÈ`Þ!–Þs÷Wæ>åÍåü¯òß2ç,uß‘9g©û"s?çíYS#Šå“»²6´ úDûRFl#Î&,pßÕüþÕýé‰ß3И£ÕA³ígÏ޶­méXI*àoKhcNà˜@ϵfé§M‚ægÊe$íÔBk_[ËYAF?'WwZ›;Ö Ò^}Uì“™E^²“Ê)ã `úø±k(*)+µt’ž½‹º-»ÙG{(YKâž2&÷=ä¶+i“35ÍpöÌ‹¤J‰­mêvïç†Óh™O]Ù}lؾW­3ž9¡§žì¬AÒÇa‹[<´Ðµ0‹Æµ¡ÖÚ¶SëtC5ÊŽGw΋ª›¥-I´Z§Íøl/-QÄCE-KPÊv÷Y()pp§³+ÝⲌ£¡4…ÃZ–ü’ÇÍB‘‡^[9‚ئ³âäæ»r»0`Óº­15 ®× ÿÏÿÏ^Ý/>8wbf2¥• §Ö6”–›­£Ö@(K¤£è‘‰µ9;šrœÖЂÚašº*­µáû’}vZ0Ví¡’Ú¹¢•=* Ü…`÷½2½<Ö>~âšoÊl¡®}JβOÜ…ö^ºWR/LCK¥FVõ¤šÐu' ƒÖ³” gf#'C<¡jß’†ç¤ª9Òȵ²< pݲF9`:…‘©×}œä}À¨†‚G5“dYµø}å¢LräHþ±¬úm™ìK9‡š$[¾Ók Ò…u‹˧oBž+aÍeÌ%5@:Ľ™yiVÏ`™ÒÐíØ¶#}ƒ¤A½0€×B“jë´$÷5ÔÕg$ ³¶N´c,@VùT"RzÈTÔ&ýqFøN˜ÕJ‘Ï%‚:†4lJ4T*zÏ0FFE…=9—£ r³–&²ŽbX9±Â#Ø$ùlöœN2Yyávh%ð-PàH b#'–˜¨,=H`¡ïs;ZÝ©{:v%ú6z•@ ·#à»SkL0@ÆžÀ—å•ð.q(»!m6”ðŠ¬ìž†BÛ´Z­×üÞ •\h:¦BÙ•Ö!Çîy\ßqš¼;Œ'm¦÷yµÚ!Õå ¦»àÎAšŸÁd@ë˜~O+x*ªáPXšÒÍ$>ÔvF_ù6f¥Qê\·Úoêmxxí¨H>è2†ç,Uê,µ é¦à±KÛ1íÏï9ð'R…Š¢¦‰Qû¤²“éCdž67ÝË «’·N72³I-Í‘LŒ.Û @ïŽé¥gM´qÀx~ =ªj°Ä!K  ",´  i傾=ίi„M/ÎzÀWHäfÓ ¬ŒEÆÕbì2ûÌÌÛ'”ƒ‡zjÂ\öGA½áM1g`-ìO«±R©K¹Ò¢d¡‘} é²Q‘;EÕÞ¢˜¢ 7ÌC”Q„ù½M…1ÝòL Á‘%ä5B]LþÈ]œoü!ôÜAÙvj/m;]Ar€7lÒy(FG2«)pÐBZÌF†Ž÷vÆ<  +)Å>pcà Üǵ-p“µŽŽÙÃ]qe`Ó¤¾ø FæMô×{žMĘ…êž)P «ÒŽéÌþ»"-VuFÛ3Ýž(_Û!atåÐèö (²žå¢LDùdtæ~prèQNê®#°˜ŽáyJ{¢36K8Þ÷V 8ø›[‚04Τìôb™1íŽíx¦ü§3v¦ŒŠ@/”‡ÑI磮-©ÃlI—/—¢Œ]¤Æ§;?¬)w®—Y °}gz¸…pHS,T tê½’Ÿ3“þxyôï™(¬ÍÒ¶æ‡Õš6CŒ®¯ÃŽœ ùEggš/ážÆ¿&³ÜèÖuÁ ®2†M‰ª)b„R)&ÌÑlŒa5sáÎi· hEÏÓÉ F#GTˆÄ45€Ñz$ó”e›£,£‘‰m=)àŸß#øiÞ´­ b\u& ŸJ —ضT#m³Ÿmùï÷hÇ«'-Ú_Uds>פ{ñùGµó9ý¿©‰ÂËbÁ™4PŒäFm£á`üâ0˜@äîäÌ‚s·¯îÑÆÜùG^ñÚVGÀ3³´'t\by£$‡üV‰l²ôH͹ßRT³üfDôc.¨šÂF–X~°zp zm–šÎˆ@aß¹ÕìЈþ@Â@â’~“Ûº+YCé"Ó±bÛP¡@JÆj¶Ѹ‹O‚Ÿ_÷e‚×{ÿ•…ôj³_ ëþ¬nòOHörQïHæþ9”}F2÷Ï¡ì3’¹_—ãÚ¯Ý1T۟펹oØûõªxÞ<)n³Š‘ø¸gËÙã2¬ü¸;6Ùü7µÊ ¶í×éR³’ ÄAgáù·¯7Ï!¢Wo1ì,îY}*Цž†Ø„zhóS²mà!øN4CŸ'Ò‘[7ì¥á·×\ÊHîUFôêO³uxøñ)R†yíQůéþnæ5à"±m­™yc©Ö¶ÍŒR‘ŒÄ šCbÑèOþ·q¥-š63‘•Ñ`(8B¿96yëõˆÞ¶»çS[ÜÇϹ5gÕ(‡˜U¬ ­z—¸ÐÜï Ü—•å¸;@y\ZLÏá¹É¾g¼ð|üúŒeDÁ…[#z~lâ!R,"dÚ"’oDÀâmÏ ¯¥Íá˜iÿŽ®uÏ›i_åj*¾Ÿ¾›‰‹D±,Œ“ùÖE ibýÓÍ’fÝ‚Dâæ[V»· ;¬bT™—„ÙQ²C[1xuÝÝ¥Q©ÞIVcÇÀÆUN1be¿Š.¥žß "½ Â0±"ƒ’1ÕJy•\Ì)Òû pWßp¾“ñìK7˜Ï¾rô¶]¸Ì´rÖ´à”qåt˵-H¦ˆ£0s1‚$©%¹ú°.Àa%û^ƒS§>3+Ó~þ0âÎüÒ ÔÁ2õD›mK´ð¦0c})ÌÜ-(è‚^Ðhu´pÙGîI1åSëÃ~_ý-ÿ0XHÆ`ö=0-b¸sÉÈX$2Ôx&gž™ÒÕñ?_z¯4ò³ÝK,D¦hnpA¼[~<ºšÖ’l,›Šôj h¿ÔgnÎ.ÿëj÷×åé-TŸeù|èÞ¾‰åjŒ¼ÃÆ#_ïݯ/}ò{€Â]Ð[ŒÛ ðÇøÚ›ÿ!¾?]üSto€(ØÁuŸ£kñE|ß/ζIQé ݶmϺÇFC6͵t;æ½aˆÝdCp‚ǰîÏe[°Ñ6Ã’mˆz‚NÅ"ÐFA”ldäPxí†Ú߄ą"¡…ãóíÑÂCw-OX¶!l #õ˜O† ÿvœÆ |®ô–¿Rf>I¯µ´èз \\·4e¸Üž Ù”])HKÈç÷3z¦,Ð t¯yskîãôHÓ¬’7ÀÁ!0R ìuŸ{wµÏíßžæü~/RrŒŒ’~J‹iTXtXML:com.adobe.xmp µ-PÝbKGDÿÿÿ ½§“ pHYsaa•ø¶tIMEå 'Ý´;IDATxÚíÝ}pçaÇñß³»º;îN'Þ:F0ïcc’¸¶kÇqp ÔÆ/11ÄI¦ÓÚ&IÓÉ´M¦Ó™¦“tš&i3·qœ±]^ì/6Æ`; Þï  ;½ÞN:éÞo÷éÂN /Ò ½œN¿ÏLòc„ôÜîwŸÝ}´+ŽK»I ‡€ˆ "€ˆ"bˆˆ "€ˆ"bˆˆ "€ˆ"bˆˆ "€ˆ"bˆˆ "€ˆ"bˆˆ ¢a¢q™¤ ÅgÏþOB !8TÄŒÎ}\ †i¨èò›áo· °"±"ÔÐÞ¦ Щ ˆÇ¤2L&³D–M•oÀæH@3EeÁ™FN^ªš€P ( _Õ@ @êìð†€nhð·e¢Ù—ƒ&o6Ξ4¡®&þv á°@$ $½;{¨ª„ÙdZ{¶÷ä0¦ÏŠ¡´,„üqçš¨?‚oº1CWìÎD]m3º@,6´ówUl6‰‚¢æß׃٠pOn…+?UKðÃ!`HvzC Ô“ OuŽíwâà'v\nVì »¦99fÞ—íÄ”™—áÊïæÌ€€Á '4ø.¸pü@>¬ÈFƒOC,žšWéTÈÏ3ðŇXôP+Êf\ÉåEEb’˜Psºm+À¾Ý6tF×^”i‘˜>3Š%϶böÂØaÁ 1·‹šP}¬oáø "ÑÑ}øÔ4`rYKW¶bÁ}°g‡bn4Õ¯9]Œ·_ªƒ™C¶ã+Jï~EâêR+)Ãøìý¿[Ôé”O‹áÉÕ-XðÅ:X¬QnáĆ@“/ÛÖMÀ‡[íè Þþޝª¶,Àá(Áø 1¸'%?N‡–…–ƒªPTBHº]W‘ˆg@O˜ÐÙ®¡¾NCC]š}tuªè Ά Mbáâžz±å³¡ª:·t›õX°gÇXÿ?¸|Y½Èq˜XÁ]‹Â˜XÞWa' ‹ƒ0™ã€è]ÀÓß©·”€4HÙ†¶ËV´]q Ù—ªÔžÉB[»¸­ Øm˾։GŸò 7?À …4v`>OÞü¯I8X™ }AM t,øBîþRÜ“[‘W„¢$†lµž”†® ' ¯'ŸÏÁžìh¨×tÊ"0¥<†ÕßmÄœ{¼œ Pú 5aÏû“ñ毊p¥%ùßwrfKÜuo,é@ùÌfØáÛq C 6ãâ§8ôI>ö|à@K«#É%YY+VùñØÓ5p8ƒÜò)=ào³ãíצaËÛvÄ“¸—/0nœŽG–vá¾?oÄø‰ÐRlÕ¡+hoµãÔ¡ñغÁ…Úó&$’ø¸ç¾0^üþ”LjáJ¯ø.á×?.É*sRkòKJXú|=èCN~7%µWØI)ì¶àäA7Þy³çªÍH$1A)-Mà¯ÿч¹÷Ö1c\Úü2”õm8Wmê÷Οç2°ìùüÙ’:¸ò£ä·ð„°9¸ïáÌYTª½°ñµ\¼Ñ¯Ÿ½¡Aù“NÌY¨@ðšgéòÃè oÍÄkÿ™wË‹~f“Ä—ŸèÁãÏÕ¡dRÛ ñ¥ð'ÏÀÕ#íP< @J›»+&aó›¹ðw*·œñ|ùñ ¾ýƒ“Ȳ‡¹0éu 6ãŸÏÁ»í× …è]1·ò¥&Ì_ìE†)~{;ž!`*bÑ ´4[ð[ ÙêÑÐѪ §[A,öÇçdeIä¸ Ø ˜,!سƒ((!3+6(w ]ÁÅóãð¿¿š€Ãû3¡ß kóæGñýŸœF^a·~JÏ»í6üâG³q 2óó?3™$–üe7–­ò ¿È? £°”€¡kð·[Q1ÞZ;ŽÌDc€‚HˆÅû^å' i3`·KG1ûî0ÊgQ<¡ …ÅÝPµÄ€Ïσݙعy Öý&nq͹ÿ~y¥“/s˧ô 4×çáÇß½µ5ÈsøÆwšñ¥¯\ÐQ_×U´49P{¦{w:pî”~¿@<1¸syU²Ë"¸ÿÑnL}î;üPµxÒÁ2tÕÇJñêOJá©Í@ŽÓÀ?üû%̺ÛË ”þ€jθñ»_”bõw|(›ÑÔ[J ¶ æô8ìßåBå.;:üÉßð#zWòÝ9;‚G–·cÖ‚FØÁ¤v^)–¦\¼ñËrÌÿB'XR“òw8ˆ¼HpÈ kV$©&ØmÅñý¥Øº!çΘFü ª L˜Ç’gý¸÷ró’»c™a6óÑb4ƬhØŒcûK±ùB|z:¹{ëÃ5+()I`ÙÊv|á‘:8rz¸¾Ÿ€Ûeè £(ÀÔé1<÷W͘wŸqnÉÄ DÀŸ…]eØøÛ\tv)ƒº“ªjï=Àƒÿ,‹YâÑ¥ÝX¾ê Šý¼¸G @¿ú†À¥óÅxý?&âØË€/îišD¶påÇ1©<‚‰e1Œsë0™{Ÿ T£7†@"žDÜŒÖËðz4\¬ÈFÍ9SR¿Ñh2IüýO°è¡^$àft]ÁŽßOÇ«ÿVØç?Uí}ÎÞϵaî¢dç‡ü^º”á ÕÇJ°}cŽîûÁ¥BËŸ à…5§`Î䳉¸¥x,ë_…õ¯çÜðü_`âÄ8V¼ØŠ»ï÷ŽØ#·£ª«J°é·ãpê¸å¦¿ä´øþ0^ùçSpæöp«& ?zV¼ú¯s°ë=+þÿ ØmËž÷ãÑ'/^}–žLï5ûvNºÿ.Àå+×>Û°lJ?üùYŒ+mãM @2ZšsðÓ¿›3§Ì˜~g /þ­Óç5¤ÜuÃh¬+ÀÚ_ß=»¬Ð  °ÀÀîAùÌú«¯'b’RWSŒùÞÌ_ÆŠo‡« µU6ÔcÁû›¦bó[¹xù‡ ¸÷Ϩy˜ 1)§÷iBù(ß ³%6_ƒ~U^×U\ªqaRy{ZÞûŠ1#`Øu´ÙÐÙnÃSù;øÉ¸t¾Ù®äæñ¢æPR8C;³8üÉD¼·Ñ =¡r@ú;»IhؾÁÃO„”œ0£T 3 [ÖæbÏN;êj 8 ýäõäcχvT¬ËE 3‹ŒΣÿ±}nÔÕe + ðñöbè:g}ýuo+FW@À[—cûÜœ0£O¨Ç‚-kÿøtâÝ[hòær`úÐäÍÅîmŽ«1*Öæ!ØcáÀ0£éèœ<äFÍyÓçÖáW°÷ƒ‡üf CAåÎ’k~G£ö¼ §º‡äuêÄ ‰hØ‚-ëò¯{m׎ÍN´499@7ÑÒäÄû¿¿v| `Ëú|Dœ0£Ä™ªTŸ2_¿·*Ø¿Ë Ãà9íõG»Ý7üõìêSfTW•p€Ô‹š°}Cb7xÀ‡”À¶9èhup þDG«Û6äÜpª‹‰Þ1š8P @j;wªÇŽÜ|ºÚÔ¤âÈxeûÚ0 ùƒMM7¿KrìˆçOs°€Ô•ˆgàýMEˆDÄ-6v b ]~ÞßþL—? [Öå¸Ņ¾HDà½MEHÄ38` @jòœ-Ä¡½Ö>ÿ;o†c•¥œ\=ú«tÃ[×÷Ž}h¯ž³…ÜЀԣ'4ì|w‚¡¾wjÃ*ÖºìÎóãìÎDź¼¾Èôºÿ6$°óÝbè Zêjó±÷C{ÿg µ&œ8X2¦ïoK œ:TOMÿ/îíýІºÚ|np @ ýuŸl/¾æM¼}^/H[× »÷·#a *Ö\·^âVÝoã²j …4ys±kkò·öΞ6á̾¿]}´gO'ko÷6븬šH†®`ÏŽtø“ÊX\`ÛúD#cïþv4bÂÖõz [‡_Aå%0tn¾ Àkirâƒw¾¼÷ÄQ Î?æÆíÜÉbœ8:ðÓŸ÷ßqâ —U3#zô7|äÐÛ…>?Ž ¼·©ñ1t;ÏÀûoõù®ƒ[imUp`7—U3#¨£5²|5‡÷YQ{¦hÌŒ[muWZoëkpY50¢z÷UrËå«ý ì|wܘ¸¿Ìz‰¾45©8ü —U3# «# [Ö¹í>þ¾Ý6\ªIÿdž]ª)@å.Û Eøê²ê7H`xþU•¥ðzïˆèøhkzßßÈz‰¾ø¼ª*9 `†QïòU× ß)x;>Úî@Ã%WÚŽ[c »·ÙõkFï, 'ÀeÕ À°ýݸP3ø÷îý{wŒOËûÛ†®`ï×KôåB 'ùØ0`8DBW÷5D/ãÙñ®—sÒnÜ®4å`Ç;ÙCòµ:°e]þ˜^VÍ “3U%øôôЭÜkkûì±aéóц‚ý»JÐÚ6t?Ó§gL8s” c†Ðí,_Mæcû&'Ú[ÒçþvG‹Û7æ é=غal.«f†É¹“ãqòèÐO3››UúØ ™«Ü¤8ô‰MÍCwãäQ ÎÏ •|ñX¶o,¼­å«É̶¬ÏEgÜßîì°a˺Üa¹@‰ lßTˆxŒ cYmuŽì·Û¿WïÓPµwtßß–R j¯>ßð­p<²ÏŠÚê"n°ý¤©â”©/†!°ãíñ…Ä0þ›Àæ7ó_솪é£rÜô„ŠÍoä úz‰[ …¶mDBBQx_°/Â½à ŽR?ÄbbDî3›M­“ DcÃÿÍ ˜Lܬû5ˆF¹„2•Ä4ÚI p»æ5"bˆˆ "€ˆ"bˆ"bˆˆ "€ˆ"bˆˆ "€ˆ"bˆˆ "€ˆ"bˆˆ "€ˆ"bˆˆ "€ˆ†ŸÆ!ªxhB9ò³Iÿ]CJìóÕÂ×Ó•?K©-‹K§@É¿Ž«5Àno tÉwù1cˆMÕ°æþe˜W29é¿›0 ü â7ð=š?ËâÒ)øéß‚¦$?¡<Þp‡Öþ ]‰87 `ŒÍª¢ìÜM¤ÎË/!  ðgQž…ò1DÄ@D 1DÄ@D 1DÄ@D 1DÄ@D 1D 1DÄ@D 1DÄ@D z|7à‰K‰óWêôwuÃ@k02?Kk0€ã ôž¿óWêç›GŒ(˜µ”£?B¬ª†Œ¾ä³GO¤Ì+µU!`Sv,‰K‰žàÆÀÀØ“.¾.%_ïÍkDÄ@D 1DÄ@D 1DÄ@D 1DÄ@D  ÍlæF£hT¤Ô÷ÃíhtoÆOn”1t¿ÿ‡öe¦Ä÷sÏâ0ž\]E5øáŒ¶ÀÌù…QÈæÐáùt*Ú;Fö,Εkà…W¼˜<Û¯а™X~Ï~» ê~‚Š<ó­6LšÚÌ„ áÝù <ø¸w/ Ø÷p÷¢|ü…S€†]–=Œ•/{‘›3ü;`ŽÓÀÊ—¼°9Bü )wLkÆ3ßlƒ2ŒŸ¤¢Ï¼ØŽÉÓšø04Ò§=áÁü…‘aû7ç/Œà¡¥^õg(Øa|ýe/œÙC¿C:³ ¬|É{6§þ ¥Œ²;›ðô7:†ôT@Q€ßèÀ”¼åÇPj}ª‡—y0wþÐ ÌÁÃË8õg(%ÙA¼ðŠÙŽÁ_Üé°K|ý¥z8œA4@©jÊÌF¬XÝ>¨§ŠV¬î@ùì0@©LU <²ÜƒYs£ƒö5gÍâ‘娜ú3”ú9½§vÛíŸ Øm_¹Ù¹=X€F‹isñÔª(·ñ[ÃBO¾Ðéó8õgh” èøò“Ü9kà§3fEñè“ ª:” ÑƙۃÕßiЩ€-Kâ…Wàtus ­¦Ï«Çò•~ˆ$N„–¯ôcÆüz @£ýTà+Oy0}F¬ÿ×îŒá±œú3”r\ÝXõJ²¬}Ÿ dY%V­i@Ž+Àc(-`æ–?ßyËS!€¥ÏubÖ 8l ¥Ï©€¦ã±§=˜:íæ§S¦ÆðÕgvœÆ |®ô–¿Rf>I¯µ´èз \\·4e¸Üž Ù”])HKÈç÷3z¦,Ð t¯yskîãôHÓ¬’7ÀÁ!0R ìuŸ{wµÏíßžæü~/RrŒ„A´bKGDÿÿÿ ½§“ pHYs × ×B(›xtIMEå ˜¥kIDATxÚíy˜Õ™‡ßº½/·hÖfiÜ:±@‘0(bâ®\¢qЈ5gŒKFCD+"ˆàFÇÁEP/Ê*;4k Mõ¾Üš?îM&F‘î¾KÕ½õ{Ÿ‡GZºªN}ßù~õÕ©s¾B!„B!„B!„B!„B!„B!„B!„B—bÈÉCÀö§=N@w 3Päy@vøç, õŸüš€j ¨*CÀ~ ØìÊLÃj”Å%"þAžôŽŽŽÿÜè'Ÿíá?kÀêðß×›†Õ,OIDtžè%ÀàD``8ðÓ\Üìš°,Àb`•DA ŽðÙá`þ30œ¶':‡€%ÀàCàsÓ°äq €‚Þö \œþ,ܶÌæo™†µY=Aà•€÷…ýà" XVaP ¼aÖ2‡ p0è&‹–MÀ `ºiX«d @"}wà—À Ÿ,Òz“Ãb°_æ$JŠp-p>"«DL0 ø‹iX d €? Üô‘EbÆ `b8+¨•9$N~`

v †¡Ä(ñ>0Ê4¬ƒ€Ä þáàou΃û;ðÁ_ûðÜcù4'àvgž[Ï%cvP|¬ªmG‰ÕÀ…¦am’$FðŸ̤•«÷êjsXøN_þòpUÕÑ3Í1Ç6QÔ»™¼vA2²šHK³1 hj2h¨OÁªôQQžÂ—Têê£wÝK.­áâ1›)ì¶[!9{€ LÃZ*pwðž¢ÛgÙ6¬ ô婺³vmÛöŠû4ó£áµu\ »WQPX…?ÿié-{…  ª*ó©<à§|§Ÿí›²X¾8›O?nû²„ô4w{Ã/XKz¦JèEH¡/ïJÜü7lÍ}UÊçõçŽaúäÖ/õ7 8D-ƒN¯¤Oÿýtì²_ &ñX•ùlÛPÈÊ¥íx÷\vîòµú6rÝ[èÕw›Â82Íœ)pWðßÜÙšcÖ¯,æ‘;{²iSëžúC‡5pö%kîÀß.¾cC l^ÛƒÅó:2cJn«Æ( n¾{?g\´ŠÔTÕȈ€fBŸ Ÿ•¸#ø$T±§eÞkNeî¬xä÷Z<¿¸ºŠÓÎÛEQq™+FÙ+°t~/?]@Ùö–gçý´Ž±·¬!¯}…B¹íØÀ8Ó°ž8üniqþVŸÉó4™53»Å?öúCüø¢mtìâÎZ“uµ9,]PÌ”?wd[YË„ _¿fþóÑutÑÜHEàFÓ°&%ê ¤&xðÿ¡5Á–^Oa·–¥¿¬å’1[\$™YÕ ={‡æ2ÿí¾<ñP{êð5!/?ˆ¿]•B8ò蟶¿Ñ4¬§”Ä7øï~ß–c›šÒxúþ“ùëkY‡}:^wûް!j©~Muõµ945¦b}ءՀ©MddÖ“cáK‰ÎµöîêÌŒ¿ÅìYß}ݺyè…ÕtêªêÙQ"ŒMÄ©ÃF‚ÿ8ై²*?Œ?‘Ï–|ókáèk-FŒ^Cv®Õ¦ó67¥²gggvmÍgë†l¶¬Ëä‹%i”ïó}¯±ÓÓB«ûôo Oÿº÷ª¢kϽdå´í) úXºà¹« *ÿÿÊi©0ñ¥M¥IBѦ‰Ð'ÂR @lƒÿRBËy}‘žkßîB&Œ=ží;|t(°™ðÀ~8øëVŸ§¶&‡«ºóå’v¼;+‡ò½¾¨Ü«Ïg_Ç)§WÒÿ{èÐyo².Ö}UÌ_§vaÞûÎl Xܧ™KUÁ á[\À¶ ‚ÁRRT 7l›†µ[àï,ŠlÇæµ½™ùt>œë޽@‹z¹ê潜4l=iiõ ;w±îö-Ìþt`.pªSm8t =oNëÇÔgܹ3Ø Á\yó6ú³Eaç.f—™†eKÚ.O×9rq¾ú¬?ïéÆö‘ ìôïßD·¢fRÓl 47Tð±rE*µµ‘»âú[rî¨ÕZôã.&˜†õ mÁ5¡-ŸãNC]¥/žÀs“òZ}lžßæ'ç×rü€*ºöª¢ “…?ÿ©i͇y?‡ªCyªÈc÷ö<6­Íaá{9|ýuëW&ÚÀ¯ï\¯%Àî¡8Ï4¬÷$­ ~øÈŠ»ÇšRùŸÛóÁœ–¿ëçdÛŒSÅÀ¡ûéyôN2"| ƒ{¶weÕ²BfÏÌgÍê–OÚ,ìhóð”5t)Ú¥ðs{¦a•IZüù„¶o:Ê©6,_ÔŸ ×ySàþýšùÙ¯öaÙFv Ò†Õ½x{fÞýßÌ#þþ¥£«}ÓçøRšzîa0Ìm»¹Uf?sºï½v"ÿs˜ƒxê†V}“hH†Íkû0óéî|ôÁwg'ÃÎhà–?,S¥`wò€iX·K¾?ø¯žsC[‚Á¦N<é[ÅB®¾áçþl¹yÎìÑÜœÂ÷gÒuf÷žÿœì×·™ûž^A»ûjî$Hh¦à\ ÀwÿQÀrZYË/–Ô×eñèùpnÅ}šÿ_eô+Ù芶Üß©û3»4 ŽÍŸ¦¯£GŸí 3w³øiX€o 0ø·y¬²¢€WŸíÇÈkÖ‘ï²"ÍM©¼ÿF ÝûTSrò:…Wb0Ã4¬ŸK¾)¿ò‚÷mj«sÉÎÕzü¿QS•Cv®§¶;iÖkN7Âç’àïÜëÏoßTÄü·ú*êÿמ=н½tË“¶¿£ç `û}„&ûdyÅós^ïÎ “ÚSu(_‘”ïìÂôɹ|ò^//Ývgàe08Í+^ß]Ö×^Êá`¥ÁgõVôÍ.¶aòcùXÛyéÖ¯Øþ{VÂ)Ѓ^òø¼7{`‡—†L}¼€ÚšOÿ}™úThºuuÁâyžÅ'¶?ÓÜtðЧ÷ï)dÚ³þ¿ÿ¼s—À'}<-ÏéIÃ?Ì{ññöÔTåzÉ}ieaÛ¤€€í? ¸ÊKž^ønÑ·6ò˜þ—Ž4Ôgz2ø­ÊvLyü›)ù^Ë{Íwl‘g `û àQ—ŒAÄ…ÊŠ&Oúö ßúõ)¬øÌ›YÀ’y½±ª¾ý%zÚ“Ô×eyÉ9álØ3À%ÀP/yxѽ»óï+ÏÒÜ”ê©à¯©Îeʤößùo[¶¤°|‘粀˶ÿ䤀€íOð’g«­<^x¬ýaÿ}y •Õ_x«Ã/[Øç{«'¿òLGšÓ½d&Â9‘\ í%Ï~>¿~ÿ¤ËÒ; z㨾.‹—žüþ±ß•+SY¹ÔsYÀéÛvÒ @Àögw{É£uµÙL{¢àˆ¿÷ñ‚tÖ¯ôÆXÀ—‹û°yó‘«½1¹`sŠ×Dà¿ÃcdI™ü èæ%o>)nñν³§wÁ¶¤¶GSc:3žîÔ¢ß]²8¯¿ò\0øiÒ @øé›—<ÙØÁËOµ|º÷{og²e]Ϥ¶ÉʥŬZÙòÏÒ©“^¿ƒ»ã•Ä3ëµ§ÿWŸ·º°ç»¯&¯‰‚Í)¼ñBa«Žùhn›Öôöš ÎKØþTàV/y°¹)•ןïÔêãJ_ÉfÇ–Ii“¯¿*fÉ¢´V÷ÖŒ®Ÿ>í!&$S0ðÔl—5Ë‹Y¶4­MÇÎÕ=éìaÛoNëܦcß*Íbû¦"¯ À©Û?$Y`¼—ÏÔ§ò8°/9*ä”m,bö¬¬í óþ·‡× øu @Àöš÷ï¶mèÉœ·"_Ý×ПÌIŽO‚ï¿ô}Ú3~öï)ôšŒe½€XgWžšÐÍÏx/Lj‡U™ØrölïÊÌ©Ñ)zÒÜZRí1 ‹N®ô’§vníÎ3²£v>«Ú`I‚WÈ™÷ftvò¤|*xM®J8 ´Ü×S¥o?(þ;ê”Ií©©NÌ 9ûË;}£R4¨«7X<·—×àŒX ÆRF{ÉC{wuþÖbÑ |¯/&抅ïô¤©)úç}aR{ª­Â1vh @eŽ ÀFù@ÇXï´¬—„p;ÒWðhl ¶…Ðj¤Tù#2m^EkK,¨±k¯¼¾tn«·3û¢lƒœÊÊW”VEêÈ),± 8Nþ"®¼_¾¢ô¬HN­’`_ËBį"=A´ _wV¹E¾”/„ˆ;K•áMê¢ñê(_QZF„3’„­byùŠÒ·dŸË'BÄEÑ8I4àSùDˆ¸±Äm°@>"n,t›€*ùEˆ˜³®|EéNW @x@âùFˆ˜óa´NíÍAß—o„ˆ9sÝ*ïÉ7BÄ”f`ž[`%*"D,Y\¾¢´Â•®Oþ–|$D̈j|ùbÐÀÙò‘1ãÍhžÌˆvë|õ´L`7/_ÅžÝÛÓyéù\Ç®õ¸Cä4ÉñaÝ„‘ úGó„Q¯â3a䂺€íø¹ü{š›RÙ½}0¼—÷k_:ºš»f)†aËñáõ Q>¡/F }E¾Š)©MŒ¿‘ÌŒøaîAþõª¯üñåUDÞÈ_ñ¡s÷]Œÿݾ¸^ó†»w’×N.Ž#kLà $„˜†U¼.ŸÅ¡ç¬áô7ÄåZ#/¯æ‡ƒ×Éèñez,Nê‹aƒ_”ÏâGjj#cnÞHzZl¯ÓµK‘׬Sê_‚ÀÔD€Ñžq¥kÑNÆßÛW·‹ü‚ ;¾Ì3 kkB €iX6ð¼|_N;o C‡ÅæUàâŸÕ`QêïÏÅêľ7üy Aþ‹ã«@ZWÞ²‰´(à-ìhséuë0Œ Œ_ÊY )¦a•£ÁÀ¸Ó½÷~sçþ¨žó7÷ì¦]‡ý2nü™TOÈ `’|N¿` ?Ú•sýô_k0t­Œš€'by˜ €iXŸŸÉ—ñ%-½ž«oÝLjJdç)hosÙõëñù”ú;À,Ó°¶%´„yT¾Œ?=ŠË¸áöÈFìoºgí;í•1áO±¾@¼à5`“üθh ƒ·íUàüuœ2 ëÝx^0î`V#ðòµ3dfÕpíí[¿U 2+Óæ—¿Ù@Jªêû9„ Üï‹úºÙYDisCÑzŠÙÂuã+¿ñÿn¾g…ÝvË8Î1Ý4¬Ï=!áwœ› :pΨ5œPzÚŸqf=CÎRêï ÕÀíN\Ø© Ó°–ÏÊ÷Ε]ͯïØFFºÍèñIMm”Qœã¦a9²£–áä]lG`-ÐA}À¶|Ý“Þý·Éα(‰å’_× @XÆ¢ÊA»œiÖ\§.îs^æ«2ÍÉàwEÎúËlõ áÊãMÃÚçd#Ü`Özànõ á!Æ9ü®€0Bs„7˜iÖ«nhˆkÀ4¬f` `©ˆ$fp½[㦠Ӱ6¿QIJcV…àð"0xY}E$!;=êïzs°AýE$‹€»ÜÖ(Ã­Ö ØþO,õ‘àìƺÄw2e˜†µ§¾#œfàr7¿« ,ÏãQ„ˆ1wš†õž[çKÞ,P? ÈL\^×H+†W .ŽRŸ ÂgÀéá:˜€(ˆÀ1„FRÛ©o —³ lÖ.·7Ô—(5 k-0¨Sÿ.æ p^"B @Xæ£Q)1áNꀦa­J”ûͦa½Ü ¾&\FpYø!… ¶"ðp§úœp 6pµiX³­á¾Dµ¸iXÿ ܯ¾'\üÿnÖ”Dl¼‘èÖØþ‡€ßª ‡¸Ñ4¬Çµñ¾D·¾iX·¨ žüã9ø“BÂ"p;p¯ú¤ˆAàZÓ°Oô1’É+ÛðH²Ý—p ÀhÓ°f$ÃÍ$] lÿ/ í8”¦¾*¢L50Ò4¬w’冒òI°ýg¯~õY%Ê œØÀSÐ6¼ tWß²&ü›’íÆ|Éê1Ó°¾N–©ÿŠ˜ IÆàOj‹Àà4TdT´‰À¹¦aLÖôÄhyÀöÀ­„f¦ª_‹#P ü:Qg÷I/§‡³.êãâ0l 4Ò¿Ü 7ëó’gMÃúÌS?ßÁkÀI^ ~Ïeÿ ¤€{Ð|5ÀxÓ°žöÚ{zÆ\Àö^ú+<ËRàŠpÅ)Ïáó²çMÃú,üJðª2ä5­âÕà÷|ðOÙÀ©Às@_Y#éù¸ÊKïúÊŽœ ,~HèSaƒ,’”TªqŠ‚_À÷eÇ“€Óe¤¡¸É4¬­2… %"`£€‡"Y$aYü92… -B Œ'ôÙP« ‡}„ùž2 «QæD* U"¾ÈE\ýž?xÈ4¬J™Cm!èÜüM"rµÀ3Àý¦aí‘9$±‚bàŽ°(#pŽ*B J”í¸$É%ÝÃc×y²HÜØ < ;€2B«í6Ú=g-°NÁ.ΉC/ cX º@>¡YŠÙ៳ ÍO0þ)¨›-¦©?É+Ãéû~B{ãm'4¯L+ì„B!„B!„B!„B!„B!„B!„B!„"¦üDz[R8ÿåZIEND®B`‚chiaki-v2.2.0/switch/res/inter000077700000000000000000000000001447035777400233752../borealis/resources/interustar00rootroot00000000000000chiaki-v2.2.0/switch/res/material000077700000000000000000000000001447035777400245272../borealis/resources/materialustar00rootroot00000000000000chiaki-v2.2.0/switch/res/settings-20px.svg000077700000000000000000000000001447035777400255632../../gui/res/settings-20px.svgustar00rootroot00000000000000chiaki-v2.2.0/switch/src/000077500000000000000000000000001447035777400152435ustar00rootroot00000000000000chiaki-v2.2.0/switch/src/discoverymanager.cpp000066400000000000000000000135251447035777400213170ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifdef __SWITCH__ #include #endif #include #include #include #include #include #include #define PING_MS 500 #define HOSTS_MAX 16 #define DROP_PINGS 3 static void Discovery(ChiakiDiscoveryHost *discovered_hosts, size_t hosts_count, void *user) { DiscoveryManager *dm = (DiscoveryManager *)user; for(size_t i = 0; i < hosts_count; i++) { dm->DiscoveryCB(discovered_hosts + i); } } DiscoveryManager::DiscoveryManager() { this->settings = Settings::GetInstance(); this->log = this->settings->GetLogger(); } DiscoveryManager::~DiscoveryManager() { // join discovery thread if(this->service_enable) SetService(false); } void DiscoveryManager::SetService(bool enable) { if(this->service_enable == enable) return; this->service_enable = enable; if(enable) { ChiakiDiscoveryServiceOptions options; options.ping_ms = PING_MS; options.hosts_max = HOSTS_MAX; options.host_drop_pings = DROP_PINGS; options.cb = Discovery; options.cb_user = this; sockaddr_in addr = {}; addr.sin_family = AF_INET; addr.sin_addr.s_addr = GetIPv4BroadcastAddr(); options.send_addr = reinterpret_cast(&addr); options.send_addr_size = sizeof(addr); ChiakiErrorCode err = chiaki_discovery_service_init(&this->service, &options, log); if(err != CHIAKI_ERR_SUCCESS) { this->service_enable = false; CHIAKI_LOGE(this->log, "DiscoveryManager failed to init Discovery Service"); return; } } else { chiaki_discovery_service_fini(&this->service); } } uint32_t DiscoveryManager::GetIPv4BroadcastAddr() { #ifdef __SWITCH__ uint32_t current_addr, subnet_mask; // init nintendo net interface service Result rc = nifmInitialize(NifmServiceType_User); if(R_SUCCEEDED(rc)) { // read current IP and netmask rc = nifmGetCurrentIpConfigInfo( ¤t_addr, &subnet_mask, NULL, NULL, NULL); nifmExit(); } else { CHIAKI_LOGE(this->log, "Failed to get nintendo nifmGetCurrentIpConfigInfo"); return 1; } return current_addr | (~subnet_mask); #else return 0xffffffff; #endif } int DiscoveryManager::Send(struct sockaddr *host_addr, size_t host_addr_len) { if(!host_addr) { CHIAKI_LOGE(log, "Null sockaddr"); return 1; } ChiakiDiscoveryPacket packet; memset(&packet, 0, sizeof(packet)); packet.cmd = CHIAKI_DISCOVERY_CMD_SRCH; chiaki_discovery_send(&this->discovery, &packet, this->host_addr, this->host_addr_len); return 0; } int DiscoveryManager::Send(const char *discover_ip_dest) { struct addrinfo *host_addrinfos; int r = getaddrinfo(discover_ip_dest, NULL, NULL, &host_addrinfos); if(r != 0) { CHIAKI_LOGE(log, "getaddrinfo failed"); return 1; } struct sockaddr *host_addr = nullptr; socklen_t host_addr_len = 0; for(struct addrinfo *ai = host_addrinfos; ai; ai = ai->ai_next) { if(ai->ai_protocol != IPPROTO_UDP) continue; if(ai->ai_family != AF_INET) // TODO: IPv6 continue; this->host_addr_len = ai->ai_addrlen; this->host_addr = (struct sockaddr *)malloc(host_addr_len); if(!this->host_addr) break; memcpy(this->host_addr, ai->ai_addr, this->host_addr_len); } freeaddrinfo(host_addrinfos); if(!this->host_addr) { CHIAKI_LOGE(log, "Failed to get addr for hostname"); return 1; } return DiscoveryManager::Send(this->host_addr, this->host_addr_len); } int DiscoveryManager::Send() { struct sockaddr_in addr; addr.sin_family = AF_INET; addr.sin_addr.s_addr = GetIPv4BroadcastAddr(); this->host_addr_len = sizeof(sockaddr_in); this->host_addr = (struct sockaddr *)malloc(host_addr_len); memcpy(this->host_addr, &addr, this->host_addr_len); return DiscoveryManager::Send(this->host_addr, this->host_addr_len); } void DiscoveryManager::DiscoveryCB(ChiakiDiscoveryHost *discovered_host) { // the user ptr is passed as // chiaki_discovery_thread_start arg std::string key = discovered_host->host_name; Host *host = this->settings->GetOrCreateHost(&key); CHIAKI_LOGI(this->log, "--"); CHIAKI_LOGI(this->log, "Discovered Host:"); CHIAKI_LOGI(this->log, "State: %s", chiaki_discovery_host_state_string(discovered_host->state)); host->state = discovered_host->state; host->discovered = true; // add host ptr to list if(discovered_host->system_version && discovered_host->device_discovery_protocol_version) { // example: 07020001 ChiakiTarget target = chiaki_discovery_host_system_version_target(discovered_host); host->SetChiakiTarget(target); CHIAKI_LOGI(this->log, "System Version: %s", discovered_host->system_version); CHIAKI_LOGI(this->log, "Device Discovery Protocol Version: %s", discovered_host->device_discovery_protocol_version); CHIAKI_LOGI(this->log, "PlayStation ChiakiTarget Version: %d", target); } if(discovered_host->host_request_port) CHIAKI_LOGI(this->log, "Request Port: %hu", (unsigned short)discovered_host->host_request_port); if(discovered_host->host_addr) { host->host_addr = discovered_host->host_addr; CHIAKI_LOGI(this->log, "Host Addr: %s", discovered_host->host_addr); } if(discovered_host->host_name) { host->host_name = discovered_host->host_name; CHIAKI_LOGI(this->log, "Host Name: %s", discovered_host->host_name); } if(discovered_host->host_type) CHIAKI_LOGI(this->log, "Host Type: %s", discovered_host->host_type); if(discovered_host->host_id) CHIAKI_LOGI(this->log, "Host ID: %s", discovered_host->host_id); if(discovered_host->running_app_titleid) CHIAKI_LOGI(this->log, "Running App Title ID: %s", discovered_host->running_app_titleid); if(discovered_host->running_app_name) CHIAKI_LOGI(this->log, "Running App Name: %s", discovered_host->running_app_name); CHIAKI_LOGI(this->log, "--"); } chiaki-v2.2.0/switch/src/gui.cpp000066400000000000000000000404451447035777400165420ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "gui.h" #include #define SCREEN_W 1280 #define SCREEN_H 720 // TODO using namespace brls::i18n::literals; // for _i18n #define DIALOG(dialog, r) \ brls::Dialog *d_##dialog = new brls::Dialog(r); \ brls::GenericEvent::Callback cb_##dialog = [d_##dialog](brls::View *view) { \ d_##dialog->close(); \ }; \ d_##dialog->addButton("Ok", cb_##dialog); \ d_##dialog->setCancelable(false); \ d_##dialog->open(); \ brls::Logger::info("Dialog: {0}", r); HostInterface::HostInterface(Host *host) : host(host) { this->settings = Settings::GetInstance(); this->io = IO::GetInstance(); brls::ListItem *connect = new brls::ListItem("Connect"); connect->getClickEvent()->subscribe(std::bind(&HostInterface::Connect, this, std::placeholders::_1)); this->addView(connect); brls::ListItem *wakeup = new brls::ListItem("Wakeup"); wakeup->getClickEvent()->subscribe(std::bind(&HostInterface::Wakeup, this, std::placeholders::_1)); this->addView(wakeup); // message delimiter brls::Label *info = new brls::Label(brls::LabelStyle::REGULAR, "Host configuration", true); this->addView(info); // push opengl chiaki stream // when the host is connected this->host->SetEventConnectedCallback(std::bind(&HostInterface::Stream, this)); this->host->SetEventQuitCallback(std::bind(&HostInterface::CloseStream, this, std::placeholders::_1)); // allow host to update controller state this->host->SetEventRumbleCallback(std::bind(&IO::SetRumble, this->io, std::placeholders::_1, std::placeholders::_2)); this->host->SetReadControllerCallback(std::bind(&IO::UpdateControllerState, this->io, std::placeholders::_1, std::placeholders::_2)); } HostInterface::~HostInterface() { Disconnect(); } void HostInterface::Register(Host *host, std::function success_cb) { Settings *settings = Settings::GetInstance(); IO *io = IO::GetInstance(); // user must provide psn id for registration std::string account_id = settings->GetPSNAccountID(host); std::string online_id = settings->GetPSNOnlineID(host); ChiakiTarget target = host->GetChiakiTarget(); if(target >= CHIAKI_TARGET_PS4_9 && account_id.length() <= 0) { // PS4 firmware > 7.0 DIALOG(upaid, "Undefined PSN Account ID (Please configure a valid psn_account_id)"); return; } else if(target < CHIAKI_TARGET_PS4_9 && online_id.length() <= 0) { // use oline ID for ps4 < 7.0 DIALOG(upoid, "Undefined PSN Online ID (Please configure a valid psn_online_id)"); return; } // add HostConnected function to regist_event_type_finished_success auto event_type_finished_success_cb = [settings, success_cb]() { // save RP keys settings->WriteFile(); if(success_cb != nullptr) { // FIXME: may raise a connection refused // when the connection is triggered // just after the register success sleep(2); success_cb(); } // decrement block input token number brls::Application::unblockInputs(); }; host->SetRegistEventTypeFinishedSuccess(event_type_finished_success_cb); auto event_type_finished_failed_cb = []() { // unlock user inputs brls::Application::unblockInputs(); brls::Application::notify("Registration failed"); }; host->SetRegistEventTypeFinishedFailed(event_type_finished_failed_cb); // the host is not registered yet // use callback to ensure that the message is showed on screen // before the Swkbd auto pin_input_cb = [host](int pin) { // prevent users form messing with the gui brls::Application::blockInputs(); int ret = host->Register(pin); if(ret != HOST_REGISTER_OK) { switch(ret) { // account not configured case HOST_REGISTER_ERROR_SETTING_PSNACCOUNTID: brls::Application::notify("No PSN Account ID provided"); brls::Application::unblockInputs(); break; case HOST_REGISTER_ERROR_SETTING_PSNONLINEID: brls::Application::notify("No PSN Online ID provided"); brls::Application::unblockInputs(); break; } } }; // the pin is 8 digit bool success = brls::Swkbd::openForNumber(pin_input_cb, "Please enter your PlayStation registration PIN code", "8 digits without spaces", 8, "", "", ""); } void HostInterface::Register() { // use Connect just after the registration to save user inputs HostInterface::Register(this->host, std::bind(&HostInterface::ConnectSession, this)); } void HostInterface::Wakeup(brls::View *view) { if(!this->host->HasRPkey()) { // the host is not registered yet DIALOG(prypf, "Please register your PlayStation first"); } else { int r = host->Wakeup(); if(r == 0) { brls::Application::notify("PlayStation Wakeup packet sent"); } else { brls::Application::notify("PlayStation Wakeup packet failed"); } } } void HostInterface::Connect(brls::View *view) { // check that all requirements are met if(!this->host->IsDiscovered() && !this->host->HasRPkey()) { // at this point the host must be discovered or registered manually // to validate the system_version accuracy brls::Application::crash("Undefined PlayStation remote version"); } // ignore state for remote hosts if(this->host->IsDiscovered() && !this->host->IsReady()) { // host in standby mode DIALOG(ptoyp, "Please turn on your PlayStation"); return; } if(!this->host->HasRPkey()) { this->Register(); } else { // the host is already registered // start session directly ConnectSession(); } } void HostInterface::ConnectSession() { // ignore all user inputs (avoid double connect) // user inputs are restored with the CloseStream brls::Application::blockInputs(); // connect host sesssion this->host->InitSession(this->io); this->host->StartSession(); } void HostInterface::Disconnect() { if(this->connected) { brls::Application::popView(); this->host->StopSession(); this->connected = false; } this->host->FiniSession(); } void HostInterface::Stream() { this->connected = true; // https://github.com/natinusala/borealis/issues/59 // disable 60 fps limit brls::Application::setMaximumFPS(0); // show FPS counter // brls::Application::setDisplayFramerate(true); // push raw opengl stream over borealis brls::Application::pushView(new PSRemotePlay(this->host)); } void HostInterface::CloseStream(ChiakiQuitEvent *quit) { // session QUIT call back brls::Application::unblockInputs(); // restore 60 fps limit brls::Application::setMaximumFPS(60); // brls::Application::setDisplayFramerate(false); /* DIALOG(sqrs, chiaki_quit_reason_string(quit->reason)); */ brls::Application::notify(chiaki_quit_reason_string(quit->reason)); Disconnect(); } MainApplication::MainApplication(DiscoveryManager *discoverymanager) : discoverymanager(discoverymanager) { this->settings = Settings::GetInstance(); this->log = this->settings->GetLogger(); this->io = IO::GetInstance(); } MainApplication::~MainApplication() { this->discoverymanager->SetService(false); this->io->FreeController(); this->io->FreeVideo(); } bool MainApplication::Load() { this->discoverymanager->SetService(true); // Init the app brls::Logger::setLogLevel(brls::LogLevel::DEBUG); brls::i18n::loadTranslations(); if(!brls::Application::init("Chiaki Remote play")) { brls::Logger::error("Unable to init Borealis application"); return false; } // init chiaki gl after borealis // let borealis manage the main screen/window if(!io->InitVideo(0, 0, SCREEN_W, SCREEN_H)) { brls::Logger::error("Failed to initiate Video"); } brls::Logger::info("Load sdl/hid controller"); if(!io->InitController()) { brls::Logger::error("Faled to initiate Controller"); } // Create a view this->rootFrame = new brls::TabFrame(); this->rootFrame->setTitle("Chiaki: Open Source PlayStation Remote Play Client"); this->rootFrame->setIcon(BOREALIS_ASSET("icon.png")); brls::List *config = new brls::List(); brls::List *add_host = new brls::List(); BuildConfigurationMenu(config); BuildAddHostConfigurationMenu(add_host); this->rootFrame->addTab("Configuration", config); this->rootFrame->addTab("Add Host", add_host); // ---------------- this->rootFrame->addSeparator(); // Add the root view to the stack brls::Application::pushView(this->rootFrame); std::map *hosts = this->settings->GetHostsMap(); while(brls::Application::mainLoop()) { for(auto it = hosts->begin(); it != hosts->end(); it++) { // add host to the gui only if the host is registered or discovered if(this->host_menuitems.find(&it->second) == this->host_menuitems.end() && (it->second.HasRPkey() == true || it->second.IsDiscovered() == true)) { HostInterface *new_host = new HostInterface(&it->second); this->host_menuitems[&it->second] = new_host; // create host if udefined BuildConfigurationMenu(new_host, &it->second); this->rootFrame->addTab(it->second.GetHostName().c_str(), new_host); } } } return true; } bool MainApplication::BuildConfigurationMenu(brls::List *ls, Host *host) { std::string psn_account_id_string = this->settings->GetPSNAccountID(host); brls::InputListItem *psn_account_id = new brls::InputListItem("PSN Account ID", psn_account_id_string, "Account ID in base64 format", "PS5 or PS4 v7.0 and greater", CHIAKI_PSN_ACCOUNT_ID_SIZE * 2, brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_SPACE | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_AT | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_PERCENT | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_BACKSLASH); auto psn_account_id_cb = [this, host, psn_account_id](brls::View *view) { // retrieve, push and save setting this->settings->SetPSNAccountID(host, psn_account_id->getValue()); // write on disk this->settings->WriteFile(); }; psn_account_id->getClickEvent()->subscribe(psn_account_id_cb); ls->addView(psn_account_id); std::string psn_online_id_string = this->settings->GetPSNOnlineID(host); brls::InputListItem *psn_online_id = new brls::InputListItem("PSN Online ID", psn_online_id_string, "", "", 16, brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_SPACE | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_AT | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_PERCENT | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_FORWSLASH | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_BACKSLASH); auto psn_online_id_cb = [this, host, psn_online_id](brls::View *view) { // retrieve, push and save setting this->settings->SetPSNOnlineID(host, psn_online_id->getValue()); // write on disk this->settings->WriteFile(); }; psn_online_id->getClickEvent()->subscribe(psn_online_id_cb); ls->addView(psn_online_id); int value; ChiakiVideoResolutionPreset resolution_preset = this->settings->GetVideoResolution(host); switch(resolution_preset) { case CHIAKI_VIDEO_RESOLUTION_PRESET_720p: value = 0; break; case CHIAKI_VIDEO_RESOLUTION_PRESET_540p: value = 1; break; case CHIAKI_VIDEO_RESOLUTION_PRESET_360p: value = 2; break; } brls::SelectListItem *resolution = new brls::SelectListItem( "Resolution", { "720p", "540p", "360p" }, value); auto resolution_cb = [this, host](int result) { ChiakiVideoResolutionPreset value = CHIAKI_VIDEO_RESOLUTION_PRESET_720p; switch(result) { case 0: value = CHIAKI_VIDEO_RESOLUTION_PRESET_720p; break; case 1: value = CHIAKI_VIDEO_RESOLUTION_PRESET_540p; break; case 2: value = CHIAKI_VIDEO_RESOLUTION_PRESET_360p; break; } this->settings->SetVideoResolution(host, value); this->settings->WriteFile(); }; resolution->getValueSelectedEvent()->subscribe(resolution_cb); ls->addView(resolution); ChiakiVideoFPSPreset fps_preset = this->settings->GetVideoFPS(host); switch(fps_preset) { case CHIAKI_VIDEO_FPS_PRESET_60: value = 0; break; case CHIAKI_VIDEO_FPS_PRESET_30: value = 1; break; } brls::SelectListItem *fps = new brls::SelectListItem( "FPS", { "60", "30" }, value); auto fps_cb = [this, host](int result) { ChiakiVideoFPSPreset value = CHIAKI_VIDEO_FPS_PRESET_60; switch(result) { case 0: value = CHIAKI_VIDEO_FPS_PRESET_60; break; case 1: value = CHIAKI_VIDEO_FPS_PRESET_30; break; } this->settings->SetVideoFPS(host, value); this->settings->WriteFile(); }; fps->getValueSelectedEvent()->subscribe(fps_cb); ls->addView(fps); if(host != nullptr) { // message delimiter brls::Label *info = new brls::Label(brls::LabelStyle::REGULAR, "Host information", true); ls->addView(info); std::string host_name_string = this->settings->GetHostName(host); brls::ListItem *host_name = new brls::ListItem("PS Hostname"); host_name->setValue(host_name_string.c_str()); ls->addView(host_name); std::string host_addr_string = settings->GetHostAddr(host); brls::ListItem *host_addr = new brls::ListItem("PS Address"); host_addr->setValue(host_addr_string.c_str()); ls->addView(host_addr); brls::ListItem *host_regist_state_item = new brls::ListItem("Register Status"); host_regist_state_item->setValue(!settings->GetHostRPKey(host).empty() ? "registered" : "unregistered"); ls->addView(host_regist_state_item); } return true; } void MainApplication::BuildAddHostConfigurationMenu(brls::List *add_host) { // create host for wan connection // brls::Label* add_host_label = new brls::Label(brls::LabelStyle::REGULAR, // "Add Host configuration", true); brls::InputListItem *display_name = new brls::InputListItem("Display name", "default", "configuration name", "", 16, brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_SPACE | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_AT | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_PERCENT | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_FORWSLASH | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_BACKSLASH); add_host->addView(display_name); brls::InputListItem *address = new brls::InputListItem("Remote IP/name", "", "IP address or fqdn", "", 255, brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_SPACE | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_AT | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_PERCENT | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_FORWSLASH | brls::KeyboardKeyDisableBitmask::KEYBOARD_DISABLE_BACKSLASH); add_host->addView(address); // TODO // brls::ListItem* port = new brls::ListItem("Remote session port", "tcp/udp 9295"); // brls::ListItem* port = new brls::ListItem("Remote stream port", "udp 9296"); // brls::ListItem* port = new brls::ListItem("Remote Senkusha port", "udp 9297"); brls::SelectListItem *ps_version = new brls::SelectListItem("PlayStation Version", { "PS5", "PS4 > 8", "7 < PS4 < 8", "PS4 < 7" }); add_host->addView(ps_version); brls::ListItem *register_host = new brls::ListItem("Register"); auto register_host_cb = [this, display_name, address, ps_version](brls::View *view) { bool err = false; std::string dn = display_name->getValue(); std::string addr = address->getValue(); ChiakiTarget version = CHIAKI_TARGET_PS4_UNKNOWN; switch(ps_version->getSelectedValue()) { case 0: // ps5 v1 version = CHIAKI_TARGET_PS5_1; break; case 1: // ps4 v8 version = CHIAKI_TARGET_PS4_10; break; case 2: // ps4 v7 version = CHIAKI_TARGET_PS4_9; break; case 3: // ps4 v6 version = CHIAKI_TARGET_PS4_8; break; } if(dn.length() <= 0) { brls::Application::notify("No Display name defined"); err = true; } if(addr.length() <= 0) { brls::Application::notify("No Remote address provided"); err = true; } if(version <= CHIAKI_TARGET_PS4_UNKNOWN) { brls::Application::notify("No PlayStation Version provided"); err = true; } if(err) return; Host *host = this->settings->GetOrCreateHost(&dn); host->SetHostAddr(addr); host->SetChiakiTarget(version); HostInterface::Register(host); }; register_host->getClickEvent()->subscribe(register_host_cb); add_host->addView(register_host); } PSRemotePlay::PSRemotePlay(Host *host) : host(host) { this->io = IO::GetInstance(); } void PSRemotePlay::draw(NVGcontext *vg, int x, int y, unsigned width, unsigned height, brls::Style *style, brls::FrameContext *ctx) { this->io->MainLoop(); this->host->SendFeedbackState(); } PSRemotePlay::~PSRemotePlay() { } chiaki-v2.2.0/switch/src/host.cpp000066400000000000000000000256061447035777400167350ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include "host.h" #include "io.h" static void InitAudioCB(unsigned int channels, unsigned int rate, void *user) { IO *io = (IO *)user; io->InitAudioCB(channels, rate); } static bool VideoCB(uint8_t *buf, size_t buf_size, void *user) { IO *io = (IO *)user; return io->VideoCB(buf, buf_size); } static void AudioCB(int16_t *buf, size_t samples_count, void *user) { IO *io = (IO *)user; io->AudioCB(buf, samples_count); } static void EventCB(ChiakiEvent *event, void *user) { Host *host = (Host *)user; host->ConnectionEventCB(event); } static void RegistEventCB(ChiakiRegistEvent *event, void *user) { Host *host = (Host *)user; host->RegistCB(event); } Host::Host(std::string host_name) : host_name(host_name) { this->settings = Settings::GetInstance(); this->log = settings->GetLogger(); } Host::~Host() { } int Host::Wakeup() { if(strlen(this->rp_regist_key) > 8) { CHIAKI_LOGE(this->log, "Given registkey is too long"); return 1; } else if(strlen(this->rp_regist_key) <= 0) { CHIAKI_LOGE(this->log, "Given registkey is not defined"); return 2; } uint64_t credential = (uint64_t)strtoull(this->rp_regist_key, NULL, 16); ChiakiErrorCode ret = chiaki_discovery_wakeup(this->log, NULL, host_addr.c_str(), credential, this->IsPS5()); if(ret == CHIAKI_ERR_SUCCESS) { //FIXME } return ret; } int Host::Register(int pin) { // use pin and accont_id to negociate secrets for session // std::string account_id = this->settings->GetPSNAccountID(this); std::string online_id = this->settings->GetPSNOnlineID(this); size_t account_id_size = sizeof(uint8_t[CHIAKI_PSN_ACCOUNT_ID_SIZE]); regist_info.target = this->target; if(this->target >= CHIAKI_TARGET_PS4_9) { // use AccountID for ps4 > 7.0 if(account_id.length() > 0) { chiaki_base64_decode(account_id.c_str(), account_id.length(), regist_info.psn_account_id, &(account_id_size)); regist_info.psn_online_id = nullptr; } else { CHIAKI_LOGE(this->log, "Undefined PSN Account ID (Please configure a valid psn_account_id)"); return HOST_REGISTER_ERROR_SETTING_PSNACCOUNTID; } } else if(this->target > CHIAKI_TARGET_PS4_UNKNOWN) { // use oline ID for ps4 < 7.0 if(online_id.length() > 0) { regist_info.psn_online_id = this->psn_online_id.c_str(); // regist_info.psn_account_id = '\0'; } else { CHIAKI_LOGE(this->log, "Undefined PSN Online ID (Please configure a valid psn_online_id)"); return HOST_REGISTER_ERROR_SETTING_PSNONLINEID; } } else { CHIAKI_LOGE(this->log, "Undefined PS4 system version (please run discover first)"); throw Exception("Undefined PS4 system version (please run discover first)"); } this->regist_info.pin = pin; this->regist_info.host = this->host_addr.c_str(); this->regist_info.broadcast = false; if(this->target >= CHIAKI_TARGET_PS4_9) CHIAKI_LOGI(this->log, "Registering to host `%s` `%s` with PSN AccountID `%s` pin `%d`", this->host_name.c_str(), this->host_addr.c_str(), account_id.c_str(), pin); else CHIAKI_LOGI(this->log, "Registering to host `%s` `%s` with PSN OnlineID `%s` pin `%d`", this->host_name.c_str(), this->host_addr.c_str(), online_id.c_str(), pin); chiaki_regist_start(&this->regist, this->log, &this->regist_info, RegistEventCB, this); return HOST_REGISTER_OK; } int Host::InitSession(IO *user) { chiaki_connect_video_profile_preset(&(this->video_profile), this->video_resolution, this->video_fps); // Build chiaki ps4 stream session chiaki_opus_decoder_init(&(this->opus_decoder), this->log); ChiakiAudioSink audio_sink; ChiakiConnectInfo chiaki_connect_info = {}; chiaki_connect_info.host = this->host_addr.c_str(); chiaki_connect_info.video_profile = this->video_profile; chiaki_connect_info.video_profile_auto_downgrade = true; chiaki_connect_info.ps5 = this->IsPS5(); memcpy(chiaki_connect_info.regist_key, this->rp_regist_key, sizeof(chiaki_connect_info.regist_key)); memcpy(chiaki_connect_info.morning, this->rp_key, sizeof(chiaki_connect_info.morning)); ChiakiErrorCode err = chiaki_session_init(&(this->session), &chiaki_connect_info, this->log); if(err != CHIAKI_ERR_SUCCESS) throw Exception(chiaki_error_string(err)); this->session_init = true; // audio setting_cb and frame_cb chiaki_opus_decoder_set_cb(&this->opus_decoder, InitAudioCB, AudioCB, user); chiaki_opus_decoder_get_sink(&this->opus_decoder, &audio_sink); chiaki_session_set_audio_sink(&this->session, &audio_sink); chiaki_session_set_video_sample_cb(&this->session, VideoCB, user); chiaki_session_set_event_cb(&this->session, EventCB, this); // init controller states chiaki_controller_state_set_idle(&this->controller_state); return 0; } int Host::FiniSession() { if(this->session_init) { this->session_init = false; chiaki_session_join(&this->session); chiaki_session_fini(&this->session); chiaki_opus_decoder_fini(&this->opus_decoder); } return 0; } void Host::StopSession() { chiaki_session_stop(&this->session); } void Host::StartSession() { ChiakiErrorCode err = chiaki_session_start(&this->session); if(err != CHIAKI_ERR_SUCCESS) { chiaki_session_fini(&this->session); throw Exception("Chiaki Session Start failed"); } } void Host::SendFeedbackState() { // send controller/joystick key if(this->io_read_controller_cb != nullptr) this->io_read_controller_cb(&this->controller_state, &finger_id_touch_id); chiaki_session_set_controller_state(&this->session, &this->controller_state); } void Host::ConnectionEventCB(ChiakiEvent *event) { switch(event->type) { case CHIAKI_EVENT_CONNECTED: CHIAKI_LOGI(this->log, "EventCB CHIAKI_EVENT_CONNECTED"); if(this->chiaki_event_connected_cb != nullptr) this->chiaki_event_connected_cb(); break; case CHIAKI_EVENT_LOGIN_PIN_REQUEST: CHIAKI_LOGI(this->log, "EventCB CHIAKI_EVENT_LOGIN_PIN_REQUEST"); if(this->chiaki_even_login_pin_request_cb != nullptr) this->chiaki_even_login_pin_request_cb(event->login_pin_request.pin_incorrect); break; case CHIAKI_EVENT_RUMBLE: CHIAKI_LOGD(this->log, "EventCB CHIAKI_EVENT_RUMBLE"); if(this->chiaki_event_rumble_cb != nullptr) this->chiaki_event_rumble_cb(event->rumble.left, event->rumble.right); break; case CHIAKI_EVENT_QUIT: CHIAKI_LOGI(this->log, "EventCB CHIAKI_EVENT_QUIT"); if(this->chiaki_event_quit_cb != nullptr) this->chiaki_event_quit_cb(&event->quit); break; } } void Host::RegistCB(ChiakiRegistEvent *event) { // Chiaki callback fuction // fuction called by lib chiaki regist // durring client pin code registration // // read data from lib and record secrets into Host object this->registered = false; switch(event->type) { case CHIAKI_REGIST_EVENT_TYPE_FINISHED_CANCELED: CHIAKI_LOGI(this->log, "Register event CHIAKI_REGIST_EVENT_TYPE_FINISHED_CANCELED"); if(this->chiaki_regist_event_type_finished_canceled != nullptr) { this->chiaki_regist_event_type_finished_canceled(); } break; case CHIAKI_REGIST_EVENT_TYPE_FINISHED_FAILED: CHIAKI_LOGI(this->log, "Register event CHIAKI_REGIST_EVENT_TYPE_FINISHED_FAILED"); if(this->chiaki_regist_event_type_finished_failed != nullptr) { this->chiaki_regist_event_type_finished_failed(); } break; case CHIAKI_REGIST_EVENT_TYPE_FINISHED_SUCCESS: { ChiakiRegisteredHost *r_host = event->registered_host; CHIAKI_LOGI(this->log, "Register event CHIAKI_REGIST_EVENT_TYPE_FINISHED_SUCCESS"); // copy values form ChiakiRegisteredHost object this->ap_ssid = r_host->ap_ssid; this->ap_key = r_host->ap_key; this->ap_name = r_host->ap_name; memcpy(&(this->server_mac), &(r_host->server_mac), sizeof(this->server_mac)); this->server_nickname = r_host->server_nickname; memcpy(&(this->rp_regist_key), &(r_host->rp_regist_key), sizeof(this->rp_regist_key)); this->rp_key_type = r_host->rp_key_type; memcpy(&(this->rp_key), &(r_host->rp_key), sizeof(this->rp_key)); // mark host as registered this->registered = true; this->rp_key_data = true; CHIAKI_LOGI(this->log, "Register Success %s", this->host_name.c_str()); if(this->chiaki_regist_event_type_finished_success != nullptr) this->chiaki_regist_event_type_finished_success(); break; } } // close registration socket chiaki_regist_stop(&this->regist); chiaki_regist_fini(&this->regist); } bool Host::GetVideoResolution(int *ret_width, int *ret_height) { switch(this->video_resolution) { case CHIAKI_VIDEO_RESOLUTION_PRESET_360p: *ret_width = 640; *ret_height = 360; break; case CHIAKI_VIDEO_RESOLUTION_PRESET_540p: *ret_width = 950; *ret_height = 540; break; case CHIAKI_VIDEO_RESOLUTION_PRESET_720p: *ret_width = 1280; *ret_height = 720; break; case CHIAKI_VIDEO_RESOLUTION_PRESET_1080p: *ret_width = 1920; *ret_height = 1080; break; default: return false; } return true; } std::string Host::GetHostName() { return this->host_name; } std::string Host::GetHostAddr() { return this->host_addr; } ChiakiTarget Host::GetChiakiTarget() { return this->target; } void Host::SetChiakiTarget(ChiakiTarget target) { this->target = target; } void Host::SetHostAddr(std::string host_addr) { this->host_addr = host_addr; } void Host::SetRegistEventTypeFinishedCanceled(std::function chiaki_regist_event_type_finished_canceled) { this->chiaki_regist_event_type_finished_canceled = chiaki_regist_event_type_finished_canceled; } void Host::SetRegistEventTypeFinishedFailed(std::function chiaki_regist_event_type_finished_failed) { this->chiaki_regist_event_type_finished_failed = chiaki_regist_event_type_finished_failed; } void Host::SetRegistEventTypeFinishedSuccess(std::function chiaki_regist_event_type_finished_success) { this->chiaki_regist_event_type_finished_success = chiaki_regist_event_type_finished_success; } void Host::SetEventConnectedCallback(std::function chiaki_event_connected_cb) { this->chiaki_event_connected_cb = chiaki_event_connected_cb; } void Host::SetEventLoginPinRequestCallback(std::function chiaki_even_login_pin_request_cb) { this->chiaki_even_login_pin_request_cb = chiaki_even_login_pin_request_cb; } void Host::SetEventQuitCallback(std::function chiaki_event_quit_cb) { this->chiaki_event_quit_cb = chiaki_event_quit_cb; } void Host::SetEventRumbleCallback(std::function chiaki_event_rumble_cb) { this->chiaki_event_rumble_cb = chiaki_event_rumble_cb; } void Host::SetReadControllerCallback(std::function *)> io_read_controller_cb) { this->io_read_controller_cb = io_read_controller_cb; } bool Host::IsRegistered() { return this->registered; } bool Host::IsDiscovered() { return this->discovered; } bool Host::IsReady() { return this->state == CHIAKI_DISCOVERY_HOST_STATE_READY; } bool Host::HasRPkey() { return this->rp_key_data; } bool Host::IsPS5() { if(this->target >= CHIAKI_TARGET_PS5_UNKNOWN) return true; else return false; } chiaki-v2.2.0/switch/src/io.cpp000066400000000000000000000671461447035777400163740ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "io.h" #include "settings.h" // https://github.com/torvalds/linux/blob/41ba50b0572e90ed3d24fe4def54567e9050bc47/drivers/hid/hid-sony.c#L2742 #define DS4_TRACKPAD_MAX_X 1920 #define DS4_TRACKPAD_MAX_Y 942 #define SWITCH_TOUCHSCREEN_MAX_X 1280 #define SWITCH_TOUCHSCREEN_MAX_Y 720 // source: // gui/src/avopenglwidget.cpp // // examples : // https://www.roxlu.com/2014/039/decoding-h264-and-yuv420p-playback // https://gist.github.com/roxlu/9329339 // use OpenGl to decode YUV // the aim is to spare CPU load on nintendo switch static const char *shader_vert_glsl = R"glsl( #version 150 core in vec2 pos_attr; out vec2 uv_var; void main() { uv_var = pos_attr; gl_Position = vec4(pos_attr * vec2(2.0, -2.0) + vec2(-1.0, 1.0), 0.0, 1.0); } )glsl"; static const char *yuv420p_shader_frag_glsl = R"glsl( #version 150 core uniform sampler2D plane1; // Y uniform sampler2D plane2; // U uniform sampler2D plane3; // V in vec2 uv_var; out vec4 out_color; void main() { vec3 yuv = vec3( (texture(plane1, uv_var).r - (16.0 / 255.0)) / ((235.0 - 16.0) / 255.0), (texture(plane2, uv_var).r - (16.0 / 255.0)) / ((240.0 - 16.0) / 255.0) - 0.5, (texture(plane3, uv_var).r - (16.0 / 255.0)) / ((240.0 - 16.0) / 255.0) - 0.5); vec3 rgb = mat3( 1.0, 1.0, 1.0, 0.0, -0.21482, 2.12798, 1.28033, -0.38059, 0.0) * yuv; out_color = vec4(rgb, 1.0); } )glsl"; static const float vert_pos[] = { 0.0f, 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 1.0f}; IO *IO::instance = nullptr; IO *IO::GetInstance() { if(instance == nullptr) { instance = new IO; } return instance; } IO::IO() { Settings *settings = Settings::GetInstance(); this->log = settings->GetLogger(); } IO::~IO() { //FreeJoystick(); if(this->sdl_audio_device_id <= 0) { SDL_CloseAudioDevice(this->sdl_audio_device_id); } FreeVideo(); } void IO::SetMesaConfig() { //TRACE("%s", "Mesaconfig"); //setenv("MESA_GL_VERSION_OVERRIDE", "3.3", 1); //setenv("MESA_GLSL_VERSION_OVERRIDE", "330", 1); // Uncomment below to disable error checking and save CPU time (useful for production): //setenv("MESA_NO_ERROR", "1", 1); #ifdef DEBUG_OPENGL // Uncomment below to enable Mesa logging: setenv("EGL_LOG_LEVEL", "debug", 1); setenv("MESA_VERBOSE", "all", 1); setenv("NOUVEAU_MESA_DEBUG", "1", 1); // Uncomment below to enable shader debugging in Nouveau: //setenv("NV50_PROG_OPTIMIZE", "0", 1); setenv("NV50_PROG_DEBUG", "1", 1); //setenv("NV50_PROG_CHIPSET", "0x120", 1); #endif } #ifdef DEBUG_OPENGL #define D(x) \ { \ (x); \ CheckGLError(__func__, __FILE__, __LINE__); \ } void IO::CheckGLError(const char *func, const char *file, int line) { GLenum err; while((err = glGetError()) != GL_NO_ERROR) { CHIAKI_LOGE(this->log, "glGetError: %x function: %s from %s line %d", err, func, file, line); //GL_INVALID_VALUE, 0x0501 // Given when a value parameter is not a legal value for that function. T // his is only given for local problems; // if the spec allows the value in certain circumstances, // where other parameters or state dictate those circumstances, // then GL_INVALID_OPERATION is the result instead. } } #define DS(x) \ { \ DumpShaderError(x, __func__, __FILE__, __LINE__); \ } void IO::DumpShaderError(GLuint shader, const char *func, const char *file, int line) { GLchar str[512 + 1]; GLsizei len = 0; glGetShaderInfoLog(shader, 512, &len, str); if(len > 512) len = 512; str[len] = '\0'; CHIAKI_LOGE(this->log, "glGetShaderInfoLog: %s function: %s from %s line %d", str, func, file, line); } #define DP(x) \ { \ DumpProgramError(x, __func__, __FILE__, __LINE__); \ } void IO::DumpProgramError(GLuint prog, const char *func, const char *file, int line) { GLchar str[512 + 1]; GLsizei len = 0; glGetProgramInfoLog(prog, 512, &len, str); if(len > 512) len = 512; str[len] = '\0'; CHIAKI_LOGE(this->log, "glGetProgramInfoLog: %s function: %s from %s line %d", str, func, file, line); } #else // do nothing #define D(x) \ { \ (x); \ } #define DS(x) \ { \ } #define DP(x) \ { \ } #endif bool IO::VideoCB(uint8_t *buf, size_t buf_size) { // callback function to decode video buffer AVPacket packet; av_init_packet(&packet); packet.data = buf; packet.size = buf_size; AVFrame *frame = av_frame_alloc(); if(!frame) { CHIAKI_LOGE(this->log, "UpdateFrame Failed to alloc AVFrame"); av_packet_unref(&packet); return false; } send_packet: // Push int r = avcodec_send_packet(this->codec_context, &packet); if(r != 0) { if(r == AVERROR(EAGAIN)) { CHIAKI_LOGE(this->log, "AVCodec internal buffer is full removing frames before pushing"); r = avcodec_receive_frame(this->codec_context, frame); // send decoded frame for sdl texture update if(r != 0) { CHIAKI_LOGE(this->log, "Failed to pull frame"); av_frame_free(&frame); av_packet_unref(&packet); return false; } goto send_packet; } else { char errbuf[128]; av_make_error_string(errbuf, sizeof(errbuf), r); CHIAKI_LOGE(this->log, "Failed to push frame: %s", errbuf); av_frame_free(&frame); av_packet_unref(&packet); return false; } } this->mtx.lock(); // Pull r = avcodec_receive_frame(this->codec_context, this->frame); this->mtx.unlock(); if(r != 0) CHIAKI_LOGE(this->log, "Failed to pull frame"); av_frame_free(&frame); av_packet_unref(&packet); return true; } void IO::InitAudioCB(unsigned int channels, unsigned int rate) { SDL_AudioSpec want, have, test; SDL_memset(&want, 0, sizeof(want)); //source //[I] Audio Header: //[I] channels = 2 //[I] bits = 16 //[I] rate = 48000 //[I] frame size = 480 //[I] unknown = 1 want.freq = rate; want.format = AUDIO_S16SYS; // 2 == stereo want.channels = channels; want.samples = 1024; want.callback = NULL; if(this->sdl_audio_device_id <= 0) { // the chiaki session might be called many times // open the audio device only once this->sdl_audio_device_id = SDL_OpenAudioDevice(NULL, 0, &want, NULL, 0); } if(this->sdl_audio_device_id <= 0) { CHIAKI_LOGE(this->log, "SDL_OpenAudioDevice failed: %s\n", SDL_GetError()); } else { SDL_PauseAudioDevice(this->sdl_audio_device_id, 0); } } void IO::AudioCB(int16_t *buf, size_t samples_count) { for(int x = 0; x < samples_count * 2; x++) { // boost audio volume int sample = buf[x] * 1.80; // Hard clipping (audio compression) // truncate value that overflow/underflow int16 if(sample > INT16_MAX) { buf[x] = INT16_MAX; CHIAKI_LOGD(this->log, "Audio Hard clipping INT16_MAX < %d", sample); } else if(sample < INT16_MIN) { buf[x] = INT16_MIN; CHIAKI_LOGD(this->log, "Audio Hard clipping INT16_MIN > %d", sample); } else buf[x] = (int16_t)sample; } int audio_queued_size = SDL_GetQueuedAudioSize(this->sdl_audio_device_id); if(audio_queued_size > 16000) { // clear audio queue to avoid big audio delay // average values are close to 13000 bytes CHIAKI_LOGW(this->log, "Triggering SDL_ClearQueuedAudio with queue size = %d", audio_queued_size); SDL_ClearQueuedAudio(this->sdl_audio_device_id); } int success = SDL_QueueAudio(this->sdl_audio_device_id, buf, sizeof(int16_t) * samples_count * 2); if(success != 0) CHIAKI_LOGE(this->log, "SDL_QueueAudio failed: %s\n", SDL_GetError()); } bool IO::InitVideo(int video_width, int video_height, int screen_width, int screen_height) { CHIAKI_LOGV(this->log, "load InitVideo"); this->video_width = video_width; this->video_height = video_height; this->screen_width = screen_width; this->screen_height = screen_height; this->frame = av_frame_alloc(); if(!InitAVCodec()) { throw Exception("Failed to initiate libav codec"); } if(!InitOpenGl()) { throw Exception("Failed to initiate OpenGl"); } return true; } bool IO::FreeVideo() { bool ret = true; if(this->frame) av_frame_free(&this->frame); // avcodec_alloc_context3(codec); if(this->codec_context) { avcodec_close(this->codec_context); avcodec_free_context(&this->codec_context); } return ret; } bool IO::ReadGameTouchScreen(ChiakiControllerState *chiaki_state, std::map *finger_id_touch_id) { #ifdef __SWITCH__ HidTouchScreenState sw_state = {0}; bool ret = false; hidGetTouchScreenStates(&sw_state, 1); // scale switch screen to the PS trackpad chiaki_state->buttons &= ~CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; // touchscreen release // un-touch all old touches for(auto it = finger_id_touch_id->begin(); it != finger_id_touch_id->end();) { auto cur = it; it++; for(int i = 0; i < sw_state.count; i++) { if(sw_state.touches[i].finger_id == cur->first) goto cont; } if(cur->second >= 0) chiaki_controller_state_stop_touch(chiaki_state, (uint8_t)cur->second); finger_id_touch_id->erase(cur); cont: continue; } // touch or update all current touches for(int i = 0; i < sw_state.count; i++) { uint16_t x = sw_state.touches[i].x * ((float)DS4_TRACKPAD_MAX_X / (float)SWITCH_TOUCHSCREEN_MAX_X); uint16_t y = sw_state.touches[i].y * ((float)DS4_TRACKPAD_MAX_Y / (float)SWITCH_TOUCHSCREEN_MAX_Y); // use nintendo switch border's 5% to trigger the touchpad button if(x <= (DS4_TRACKPAD_MAX_X * 0.05) || x >= (DS4_TRACKPAD_MAX_X * 0.95) || y <= (DS4_TRACKPAD_MAX_Y * 0.05) || y >= (DS4_TRACKPAD_MAX_Y * 0.95)) chiaki_state->buttons |= CHIAKI_CONTROLLER_BUTTON_TOUCHPAD; // touchscreen auto it = finger_id_touch_id->find(sw_state.touches[i].finger_id); if(it == finger_id_touch_id->end()) { // new touch (*finger_id_touch_id)[sw_state.touches[i].finger_id] = chiaki_controller_state_start_touch(chiaki_state, x, y); } else if(it->second >= 0) chiaki_controller_state_set_touch_pos(chiaki_state, (uint8_t)it->second, x, y); // it->second < 0 ==> touch ignored because there were already too many multi-touches ret = true; } return ret; #else return false; #endif } void IO::SetRumble(uint8_t left, uint8_t right) { #ifdef __SWITCH__ Result rc = 0; HidVibrationValue vibration_values[] = { { .amp_low = 0.0f, .freq_low = 160.0f, .amp_high = 0.0f, .freq_high = 320.0f, }, { .amp_low = 0.0f, .freq_low = 160.0f, .amp_high = 0.0f, .freq_high = 320.0f, }}; int target_device = padIsHandheld(&pad) ? 0 : 1; if(left > 0) { // SDL_HapticRumblePlay(this->sdl_haptic_ptr[0], left / 100, 5000); vibration_values[0].amp_low = (float)left / (float)100; vibration_values[0].amp_high = (float)left / (float)100; vibration_values[0].freq_low *= (float)left / (float)100; vibration_values[0].freq_high *= (float)left / (float)100; } if(right > 0) { // SDL_HapticRumblePlay(this->sdl_haptic_ptr[1], right / 100, 5000); vibration_values[1].amp_low = (float)right / (float)100; vibration_values[1].amp_high = (float)right / (float)100; vibration_values[1].freq_low *= (float)left / (float)100; vibration_values[1].freq_high *= (float)left / (float)100; } // printf("left ptr %p amp_low %f amp_high %f freq_low %f freq_high %f\n", // &vibration_values[0], // vibration_values[0].amp_low, // vibration_values[0].amp_high, // vibration_values[0].freq_low, // vibration_values[0].freq_high); // printf("right ptr %p amp_low %f amp_high %f freq_low %f freq_high %f\n", // &vibration_values[1], // vibration_values[1].amp_low, // vibration_values[1].amp_high, // vibration_values[1].freq_low, // vibration_values[1].freq_high); rc = hidSendVibrationValues(this->vibration_handles[target_device], vibration_values, 2); if(R_FAILED(rc)) CHIAKI_LOGE(this->log, "hidSendVibrationValues() returned: 0x%x", rc); #endif } bool IO::ReadGameSixAxis(ChiakiControllerState *state) { #ifdef __SWITCH__ // Read from the correct sixaxis handle depending on the current input style HidSixAxisSensorState sixaxis = {0}; uint64_t style_set = padGetStyleSet(&pad); if(style_set & HidNpadStyleTag_NpadHandheld) hidGetSixAxisSensorStates(this->sixaxis_handles[0], &sixaxis, 1); else if(style_set & HidNpadStyleTag_NpadFullKey) hidGetSixAxisSensorStates(this->sixaxis_handles[1], &sixaxis, 1); else if(style_set & HidNpadStyleTag_NpadJoyDual) { // For JoyDual, read from either the Left or Right Joy-Con depending on which is/are connected u64 attrib = padGetAttributes(&pad); if(attrib & HidNpadAttribute_IsLeftConnected) hidGetSixAxisSensorStates(this->sixaxis_handles[2], &sixaxis, 1); else if(attrib & HidNpadAttribute_IsRightConnected) hidGetSixAxisSensorStates(this->sixaxis_handles[3], &sixaxis, 1); } state->gyro_x = sixaxis.angular_velocity.x * 2.0f * M_PI; state->gyro_y = sixaxis.angular_velocity.z * 2.0f * M_PI; state->gyro_z = -sixaxis.angular_velocity.y * 2.0f * M_PI; state->accel_x = -sixaxis.acceleration.x; state->accel_y = -sixaxis.acceleration.z; state->accel_z = sixaxis.acceleration.y; // https://d3cw3dd2w32x2b.cloudfront.net/wp-content/uploads/2015/01/matrix-to-quat.pdf float (*dm)[3] = sixaxis.direction.direction; float m[3][3] = { { dm[0][0], dm[2][0], dm[1][0] }, { dm[0][2], dm[2][2], dm[1][2] }, { dm[0][1], dm[2][1], dm[1][1] } }; std::array q; float t; if(m[2][2] < 0) { if (m[0][0] > m[1][1]) { t = 1 + m[0][0] - m[1][1] - m[2][2]; q = { t, m[0][1] + m[1][0], m[2][0] + m[0][2], m[1][2] - m[2][1] }; } else { t = 1 - m[0][0] + m[1][1] -m[2][2]; q = { m[0][1] + m[1][0], t, m[1][2] + m[2][1], m[2][0] - m[0][2] }; } } else { if(m[0][0] < -m[1][1]) { t = 1 - m[0][0] - m[1][1] + m[2][2]; q = { m[2][0] + m[0][2], m[1][2] + m[2][1], t, m[0][1] - m[1][0] }; } else { t = 1 + m[0][0] + m[1][1] + m[2][2]; q = { m[1][2] - m[2][1], m[2][0] - m[0][2], m[0][1] - m[1][0], t }; } } float fac = 0.5f / sqrt(t); state->orient_x = q[0] * fac; state->orient_y = q[1] * fac; state->orient_z = -q[2] * fac; state->orient_w = q[3] * fac; return true; #else return false; #endif } bool IO::ReadGameKeys(SDL_Event *event, ChiakiControllerState *state) { // return true if an event changed (gamepad input) // TODO // share vs PS button bool ret = true; switch(event->type) { case SDL_JOYAXISMOTION: // printf("SDL_JOYAXISMOTION jaxis %d axis %d value %d\n", // event->jaxis.which, event->jaxis.axis, event->jaxis.value); if(event->jaxis.which == 0) { // left joystick if(event->jaxis.axis == 0) // Left-right movement state->left_x = event->jaxis.value; else if(event->jaxis.axis == 1) // Up-Down movement state->left_y = event->jaxis.value; else if(event->jaxis.axis == 2) // Left-right movement state->right_x = event->jaxis.value; else if(event->jaxis.axis == 3) // Up-Down movement state->right_y = event->jaxis.value; else ret = false; } else if(event->jaxis.which == 1) { // right joystick if(event->jaxis.axis == 0) // Left-right movement state->right_x = event->jaxis.value; else if(event->jaxis.axis == 1) // Up-Down movement state->right_y = event->jaxis.value; else ret = false; } else ret = false; break; case SDL_JOYBUTTONDOWN: // printf("Joystick %d button %d DOWN\n", // event->jbutton.which, event->jbutton.button); switch(event->jbutton.button) { case 0: state->buttons |= CHIAKI_CONTROLLER_BUTTON_MOON; break; // KEY_A case 1: state->buttons |= CHIAKI_CONTROLLER_BUTTON_CROSS; break; // KEY_B case 2: state->buttons |= CHIAKI_CONTROLLER_BUTTON_PYRAMID; break; // KEY_X case 3: state->buttons |= CHIAKI_CONTROLLER_BUTTON_BOX; break; // KEY_Y case 12: state->buttons |= CHIAKI_CONTROLLER_BUTTON_DPAD_LEFT; break; // KEY_DLEFT case 14: state->buttons |= CHIAKI_CONTROLLER_BUTTON_DPAD_RIGHT; break; // KEY_DRIGHT case 13: state->buttons |= CHIAKI_CONTROLLER_BUTTON_DPAD_UP; break; // KEY_DUP case 15: state->buttons |= CHIAKI_CONTROLLER_BUTTON_DPAD_DOWN; break; // KEY_DDOWN case 6: state->buttons |= CHIAKI_CONTROLLER_BUTTON_L1; break; // KEY_L case 7: state->buttons |= CHIAKI_CONTROLLER_BUTTON_R1; break; // KEY_R case 8: state->l2_state = 0xff; break; // KEY_ZL case 9: state->r2_state = 0xff; break; // KEY_ZR case 4: state->buttons |= CHIAKI_CONTROLLER_BUTTON_L3; break; // KEY_LSTICK case 5: state->buttons |= CHIAKI_CONTROLLER_BUTTON_R3; break; // KEY_RSTICK case 10: state->buttons |= CHIAKI_CONTROLLER_BUTTON_OPTIONS; break; // KEY_PLUS // FIXME // case 11: state->buttons |= CHIAKI_CONTROLLER_BUTTON_SHARE; break; // KEY_MINUS case 11: state->buttons |= CHIAKI_CONTROLLER_BUTTON_PS; break; // KEY_MINUS default: ret = false; } break; case SDL_JOYBUTTONUP: // printf("Joystick %d button %d UP\n", // event->jbutton.which, event->jbutton.button); switch(event->jbutton.button) { case 0: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_MOON; break; // KEY_A case 1: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_CROSS; break; // KEY_B case 2: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_PYRAMID; break; // KEY_X case 3: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_BOX; break; // KEY_Y case 12: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_DPAD_LEFT; break; // KEY_DLEFT case 14: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_DPAD_RIGHT; break; // KEY_DRIGHT case 13: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_DPAD_UP; break; // KEY_DUP case 15: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_DPAD_DOWN; break; // KEY_DDOWN case 6: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_L1; break; // KEY_L case 7: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_R1; break; // KEY_R case 8: state->l2_state = 0x00; break; // KEY_ZL case 9: state->r2_state = 0x00; break; // KEY_ZR case 4: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_L3; break; // KEY_LSTICK case 5: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_R3; break; // KEY_RSTICK case 10: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_OPTIONS; break; // KEY_PLUS //case 11: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_SHARE; break; // KEY_MINUS case 11: state->buttons ^= CHIAKI_CONTROLLER_BUTTON_PS; break; // KEY_MINUS default: ret = false; } break; default: ret = false; } return ret; } bool IO::InitAVCodec() { CHIAKI_LOGV(this->log, "loading AVCodec"); // set libav video context this->codec = avcodec_find_decoder(AV_CODEC_ID_H264); if(!this->codec) throw Exception("H264 Codec not available"); this->codec_context = avcodec_alloc_context3(codec); if(!this->codec_context) throw Exception("Failed to alloc codec context"); // use rock88's mooxlight-nx optimization // https://github.com/rock88/moonlight-nx/blob/698d138b9fdd4e483c998254484ccfb4ec829e95/src/streaming/ffmpeg/FFmpegVideoDecoder.cpp#L63 // this->codec_context->skip_loop_filter = AVDISCARD_ALL; this->codec_context->flags |= AV_CODEC_FLAG_LOW_DELAY; this->codec_context->flags2 |= AV_CODEC_FLAG2_FAST; // this->codec_context->flags2 |= AV_CODEC_FLAG2_CHUNKS; this->codec_context->thread_type = FF_THREAD_SLICE; this->codec_context->thread_count = 4; if(avcodec_open2(this->codec_context, this->codec, nullptr) < 0) { avcodec_free_context(&this->codec_context); throw Exception("Failed to open codec context"); } return true; } bool IO::InitOpenGl() { CHIAKI_LOGV(this->log, "loading OpenGL"); if(!InitOpenGlShader()) return false; if(!InitOpenGlTextures()) return false; return true; } bool IO::InitOpenGlTextures() { CHIAKI_LOGV(this->log, "loading OpenGL textrures"); D(glGenTextures(PLANES_COUNT, this->tex)); D(glGenBuffers(PLANES_COUNT, this->pbo)); uint8_t uv_default[] = {0x7f, 0x7f}; for(int i = 0; i < PLANES_COUNT; i++) { D(glBindTexture(GL_TEXTURE_2D, this->tex[i])); D(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR)); D(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR)); D(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE)); D(glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE)); D(glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, 1, 1, 0, GL_RED, GL_UNSIGNED_BYTE, i > 0 ? uv_default : nullptr)); } D(glUseProgram(this->prog)); // bind only as many planes as we need const char *plane_names[] = {"plane1", "plane2", "plane3"}; for(int i = 0; i < PLANES_COUNT; i++) D(glUniform1i(glGetUniformLocation(this->prog, plane_names[i]), i)); D(glGenVertexArrays(1, &this->vao)); D(glBindVertexArray(this->vao)); D(glGenBuffers(1, &this->vbo)); D(glBindBuffer(GL_ARRAY_BUFFER, this->vbo)); D(glBufferData(GL_ARRAY_BUFFER, sizeof(vert_pos), vert_pos, GL_STATIC_DRAW)); D(glBindBuffer(GL_ARRAY_BUFFER, this->vbo)); D(glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, nullptr)); D(glEnableVertexAttribArray(0)); D(glCullFace(GL_BACK)); D(glEnable(GL_CULL_FACE)); D(glClearColor(0.5, 0.5, 0.5, 1.0)); return true; } GLuint IO::CreateAndCompileShader(GLenum type, const char *source) { GLint success; GLchar msg[512]; GLuint handle; D(handle = glCreateShader(type)); if(!handle) { CHIAKI_LOGE(this->log, "%u: cannot create shader", type); DP(this->prog); } D(glShaderSource(handle, 1, &source, nullptr)); D(glCompileShader(handle)); D(glGetShaderiv(handle, GL_COMPILE_STATUS, &success)); if(!success) { D(glGetShaderInfoLog(handle, sizeof(msg), nullptr, msg)); CHIAKI_LOGE(this->log, "%u: %s\n", type, msg); D(glDeleteShader(handle)); } return handle; } bool IO::InitOpenGlShader() { CHIAKI_LOGV(this->log, "loading OpenGl Shaders"); D(this->vert = CreateAndCompileShader(GL_VERTEX_SHADER, shader_vert_glsl)); D(this->frag = CreateAndCompileShader(GL_FRAGMENT_SHADER, yuv420p_shader_frag_glsl)); D(this->prog = glCreateProgram()); D(glAttachShader(this->prog, this->vert)); D(glAttachShader(this->prog, this->frag)); D(glBindAttribLocation(this->prog, 0, "pos_attr")); D(glLinkProgram(this->prog)); GLint success; D(glGetProgramiv(this->prog, GL_LINK_STATUS, &success)); if(!success) { char buf[512]; glGetProgramInfoLog(this->prog, sizeof(buf), nullptr, buf); CHIAKI_LOGE(this->log, "OpenGL link error: %s", buf); return false; } D(glDeleteShader(this->vert)); D(glDeleteShader(this->frag)); return true; } inline void IO::SetOpenGlYUVPixels(AVFrame *frame) { D(glUseProgram(this->prog)); int planes[][3] = { // { width_divide, height_divider, data_per_pixel } {1, 1, 1}, // Y {2, 2, 1}, // U {2, 2, 1} // V }; this->mtx.lock(); for(int i = 0; i < PLANES_COUNT; i++) { int width = frame->width / planes[i][0]; int height = frame->height / planes[i][1]; int size = width * height * planes[i][2]; uint8_t *buf; D(glBindBuffer(GL_PIXEL_UNPACK_BUFFER, this->pbo[i])); D(glBufferData(GL_PIXEL_UNPACK_BUFFER, size, nullptr, GL_STREAM_DRAW)); D(buf = reinterpret_cast(glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, size, GL_MAP_WRITE_BIT | GL_MAP_INVALIDATE_BUFFER_BIT))); if(!buf) { GLint data; D(glGetBufferParameteriv(GL_PIXEL_UNPACK_BUFFER, GL_BUFFER_SIZE, &data)); CHIAKI_LOGE(this->log, "AVOpenGLFrame failed to map PBO"); CHIAKI_LOGE(this->log, "Info buf == %p. size %d frame %d * %d, divs %d, %d, pbo %d GL_BUFFER_SIZE %x", buf, size, frame->width, frame->height, planes[i][0], planes[i][1], pbo[i], data); continue; } if(frame->linesize[i] == width) { // Y memcpy(buf, frame->data[i], size); } else { // UV for(int l = 0; l < height; l++) memcpy(buf + width * l * planes[i][2], frame->data[i] + frame->linesize[i] * l, width * planes[i][2]); } D(glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER)); D(glBindTexture(GL_TEXTURE_2D, tex[i])); D(glTexImage2D(GL_TEXTURE_2D, 0, GL_R8, width, height, 0, GL_RED, GL_UNSIGNED_BYTE, nullptr)); glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); } this->mtx.unlock(); glFinish(); } inline void IO::OpenGlDraw() { glClear(GL_COLOR_BUFFER_BIT); // send to OpenGl SetOpenGlYUVPixels(this->frame); //avcodec_flush_buffers(this->codec_context); D(glBindVertexArray(this->vao)); for(int i = 0; i < PLANES_COUNT; i++) { D(glActiveTexture(GL_TEXTURE0 + i)); D(glBindTexture(GL_TEXTURE_2D, this->tex[i])); } D(glDrawArrays(GL_TRIANGLE_STRIP, 0, 4)); D(glBindVertexArray(0)); D(glFinish()); } bool IO::InitController() { // https://github.com/switchbrew/switch-examples/blob/master/graphics/sdl2/sdl2-simple/source/main.cpp#L57 // open CONTROLLER_PLAYER_1 and CONTROLLER_PLAYER_2 // when railed, both joycons are mapped to joystick #0, // else joycons are individually mapped to joystick #0, joystick #1, ... for(int i = 0; i < SDL_JOYSTICK_COUNT; i++) { this->sdl_joystick_ptr[i] = SDL_JoystickOpen(i); if(sdl_joystick_ptr[i] == nullptr) { CHIAKI_LOGE(this->log, "SDL_JoystickOpen: %s\n", SDL_GetError()); return false; } // this->sdl_haptic_ptr[i] = SDL_HapticOpenFromJoystick(sdl_joystick_ptr[i]); // SDL_HapticRumbleInit(this->sdl_haptic_ptr[i]); // if(sdl_haptic_ptr[i] == nullptr) // { // CHIAKI_LOGE(this->log, "SDL_HapticRumbleInit: %s\n", SDL_GetError()); // } } #ifdef __SWITCH__ Result rc = 0; // Configure our supported input layout: a single player with standard controller styles padConfigureInput(1, HidNpadStyleSet_NpadStandard); // Initialize the default gamepad (which reads handheld mode inputs as well as the first connected controller) padInitializeDefault(&this->pad); // touchpad hidInitializeTouchScreen(); // It's necessary to initialize these separately as they all have different handle values hidGetSixAxisSensorHandles(&this->sixaxis_handles[0], 1, HidNpadIdType_Handheld, HidNpadStyleTag_NpadHandheld); hidGetSixAxisSensorHandles(&this->sixaxis_handles[1], 1, HidNpadIdType_No1, HidNpadStyleTag_NpadFullKey); hidGetSixAxisSensorHandles(&this->sixaxis_handles[2], 2, HidNpadIdType_No1, HidNpadStyleTag_NpadJoyDual); hidStartSixAxisSensor(this->sixaxis_handles[0]); hidStartSixAxisSensor(this->sixaxis_handles[1]); hidStartSixAxisSensor(this->sixaxis_handles[2]); hidStartSixAxisSensor(this->sixaxis_handles[3]); rc = hidInitializeVibrationDevices(this->vibration_handles[0], 2, HidNpadIdType_Handheld, HidNpadStyleTag_NpadHandheld); if(R_FAILED(rc)) CHIAKI_LOGE(this->log, "hidInitializeVibrationDevices() HidNpadIdType_Handheld returned: 0x%x", rc); rc = hidInitializeVibrationDevices(this->vibration_handles[1], 2, HidNpadIdType_No1, HidNpadStyleTag_NpadJoyDual); if(R_FAILED(rc)) CHIAKI_LOGE(this->log, "hidInitializeVibrationDevices() HidNpadIdType_No1 returned: 0x%x", rc); #endif return true; } bool IO::FreeController() { for(int i = 0; i < SDL_JOYSTICK_COUNT; i++) { SDL_JoystickClose(this->sdl_joystick_ptr[i]); // SDL_HapticClose(this->sdl_haptic_ptr[i]); } #ifdef __SWITCH__ hidStopSixAxisSensor(this->sixaxis_handles[0]); hidStopSixAxisSensor(this->sixaxis_handles[1]); hidStopSixAxisSensor(this->sixaxis_handles[2]); hidStopSixAxisSensor(this->sixaxis_handles[3]); #endif return true; } void IO::UpdateControllerState(ChiakiControllerState *state, std::map *finger_id_touch_id) { #ifdef __SWITCH__ padUpdate(&this->pad); #endif // handle SDL events while(SDL_PollEvent(&this->sdl_event)) { this->ReadGameKeys(&this->sdl_event, state); switch(this->sdl_event.type) { case SDL_QUIT: this->quit = true; } } ReadGameTouchScreen(state, finger_id_touch_id); ReadGameSixAxis(state); } bool IO::MainLoop() { D(glUseProgram(this->prog)); glClearColor(0.0f, 0.0f, 0.0f, 1.0f); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); OpenGlDraw(); return !this->quit; } chiaki-v2.2.0/switch/src/main.cpp000066400000000000000000000054421447035777400167000ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL // chiaki modules #include #include // discover and wakeup ps4 host // from local network #include "discoverymanager.h" #include "gui.h" #include "io.h" #include "settings.h" #ifdef __SWITCH__ #include #else bool appletMainLoop() { return true; } #endif #if __SWITCH__ #define CHIAKI_ENABLE_SWITCH_NXLINK 1 #endif #ifdef __SWITCH__ // use a custom nintendo switch socket config // chiaki requiers many threads with udp/tcp sockets static const SocketInitConfig g_chiakiSocketInitConfig = { .bsdsockets_version = 1, .tcp_tx_buf_size = 0x8000, .tcp_rx_buf_size = 0x10000, .tcp_tx_buf_max_size = 0x40000, .tcp_rx_buf_max_size = 0x40000, .udp_tx_buf_size = 0x40000, .udp_rx_buf_size = 0x40000, .sb_efficiency = 8, .num_bsd_sessions = 16, .bsd_service_type = BsdServiceType_User, }; #endif // __SWITCH__ #ifdef CHIAKI_ENABLE_SWITCH_NXLINK static int s_nxlinkSock = -1; static void initNxLink() { // use chiaki socket config initialization if(R_FAILED(socketInitialize(&g_chiakiSocketInitConfig))) return; s_nxlinkSock = nxlinkStdio(); if(s_nxlinkSock >= 0) printf("initNxLink\n"); else socketExit(); } static void deinitNxLink() { if(s_nxlinkSock >= 0) { close(s_nxlinkSock); s_nxlinkSock = -1; } } #endif // CHIAKI_ENABLE_SWITCH_NXLINK #ifdef __SWITCH__ extern "C" void userAppInit() { #ifdef CHIAKI_ENABLE_SWITCH_NXLINK initNxLink(); #endif // to load gui resources romfsInit(); plInitialize(PlServiceType_User); // load socket custom config socketInitialize(&g_chiakiSocketInitConfig); setsysInitialize(); } extern "C" void userAppExit() { #ifdef CHIAKI_ENABLE_SWITCH_NXLINK deinitNxLink(); #endif // CHIAKI_ENABLE_SWITCH_NXLINK socketExit(); /* Cleanup tesla required services. */ hidsysExit(); pmdmntExit(); plExit(); /* Cleanup default services. */ fsExit(); hidExit(); appletExit(); setsysExit(); smExit(); } #endif // __SWITCH__ int main(int argc, char *argv[]) { // load chiaki lib Settings *settings = Settings::GetInstance(); ChiakiLog *log = settings->GetLogger(); CHIAKI_LOGI(log, "Loading chaki lib"); ChiakiErrorCode err = chiaki_lib_init(); if(err != CHIAKI_ERR_SUCCESS) { CHIAKI_LOGE(log, "Chiaki lib init failed: %s\n", chiaki_error_string(err)); return 1; } CHIAKI_LOGI(log, "Loading SDL audio / joystick / haptic"); if(SDL_Init(SDL_INIT_AUDIO | SDL_INIT_JOYSTICK)) { CHIAKI_LOGE(log, "SDL initialization failed: %s", SDL_GetError()); return 1; } // build sdl OpenGl and AV decoders graphical interface DiscoveryManager discoverymanager = DiscoveryManager(); { // scope to delete MainApplication before SDL_Quit() MainApplication app(&discoverymanager); app.Load(); } CHIAKI_LOGI(log, "Quit applet"); SDL_Quit(); return 0; } chiaki-v2.2.0/switch/src/settings.cpp000066400000000000000000000360511447035777400176140ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include "settings.h" Settings::Settings() { #if defined(__SWITCH__) chiaki_log_init(&this->log, CHIAKI_LOG_ALL & ~(CHIAKI_LOG_VERBOSE | CHIAKI_LOG_DEBUG), chiaki_log_cb_print, NULL); #else chiaki_log_init(&this->log, CHIAKI_LOG_ALL & ~CHIAKI_LOG_VERBOSE, chiaki_log_cb_print, NULL); #endif } Settings::ConfigurationItem Settings::ParseLine(std::string *line, std::string *value) { Settings::ConfigurationItem ci; std::smatch m; for(auto it = re_map.begin(); it != re_map.end(); it++) { if(regex_search(*line, m, it->second)) { ci = it->first; *value = m[1]; return ci; } } return UNKNOWN; } size_t Settings::GetB64encodeSize(size_t in) { // calculate base64 buffer size after encode return ((4 * in / 3) + 3) & ~3; } Settings *Settings::instance = nullptr; Settings *Settings::GetInstance() { if(instance == nullptr) { instance = new Settings; instance->ParseFile(); } return instance; } ChiakiLog *Settings::GetLogger() { return &this->log; } std::map *Settings::GetHostsMap() { return &this->hosts; } Host *Settings::GetOrCreateHost(std::string *host_name) { bool created = false; // update of create Host instance if(this->hosts.find(*host_name) == hosts.end()) { // create host if udefined Host h = Host(*host_name); this->hosts.emplace(*host_name, h); created = true; } Host *host = &(this->hosts.at(*host_name)); if(created) { // copy default settings // to the newly created host this->SetPSNOnlineID(host, this->global_psn_online_id); this->SetPSNAccountID(host, this->global_psn_account_id); this->SetVideoResolution(host, this->global_video_resolution); this->SetVideoFPS(host, this->global_video_fps); } return host; } void Settings::ParseFile() { CHIAKI_LOGI(&this->log, "Parse config file %s", this->filename); std::fstream config_file; config_file.open(this->filename, std::fstream::in); std::string line; std::string value; bool rp_key_b = false, rp_regist_key_b = false, rp_key_type_b = false; Host *current_host = nullptr; if(config_file.is_open()) { CHIAKI_LOGV(&this->log, "Config file opened"); Settings::ConfigurationItem ci; while(getline(config_file, line)) { CHIAKI_LOGV(&this->log, "Parse config line `%s`", line.c_str()); // for each line loop over config regex ci = this->ParseLine(&line, &value); switch(ci) { // got to next line case UNKNOWN: CHIAKI_LOGV(&this->log, "UNKNOWN config"); break; case HOST_NAME: CHIAKI_LOGV(&this->log, "HOST_NAME %s", value.c_str()); // current host is in context current_host = this->GetOrCreateHost(&value); // all following case will edit the current_host config rp_key_b = false; rp_regist_key_b = false; rp_key_type_b = false; break; case HOST_ADDR: CHIAKI_LOGV(&this->log, "HOST_ADDR %s", value.c_str()); if(current_host != nullptr) current_host->host_addr = value; break; case PSN_ONLINE_ID: CHIAKI_LOGV(&this->log, "PSN_ONLINE_ID %s", value.c_str()); // current_host == nullptr // means we are in global ini section // update default setting this->SetPSNOnlineID(current_host, value); break; case PSN_ACCOUNT_ID: CHIAKI_LOGV(&this->log, "PSN_ACCOUNT_ID %s", value.c_str()); this->SetPSNAccountID(current_host, value); break; case RP_KEY: CHIAKI_LOGV(&this->log, "RP_KEY %s", value.c_str()); if(current_host != nullptr) rp_key_b = this->SetHostRPKey(current_host, value); break; case RP_KEY_TYPE: CHIAKI_LOGV(&this->log, "RP_KEY_TYPE %s", value.c_str()); if(current_host != nullptr) // TODO Check possible rp_type values rp_key_type_b = this->SetHostRPKeyType(current_host, value); break; case RP_REGIST_KEY: CHIAKI_LOGV(&this->log, "RP_REGIST_KEY %s", value.c_str()); if(current_host != nullptr) rp_regist_key_b = this->SetHostRPRegistKey(current_host, value); break; case VIDEO_RESOLUTION: this->SetVideoResolution(current_host, value); break; case VIDEO_FPS: this->SetVideoFPS(current_host, value); break; case TARGET: CHIAKI_LOGV(&this->log, "TARGET %s", value.c_str()); if(current_host != nullptr) this->SetChiakiTarget(current_host, value); break; } // ci switch if(rp_key_b && rp_regist_key_b && rp_key_type_b) // the current host contains rp key data current_host->rp_key_data = true; } // is_open config_file.close(); } return; } int Settings::WriteFile() { std::fstream config_file; CHIAKI_LOGI(&this->log, "Write config file %s", this->filename); // flush file (trunc) // the config file is completely overwritten config_file.open(this->filename, std::fstream::out | std::ofstream::trunc); std::string line; std::string value; if(config_file.is_open()) { // save global settings CHIAKI_LOGD(&this->log, "Write Global config file %s", this->filename); if(this->global_video_resolution) config_file << "video_resolution = \"" << this->ResolutionPresetToString(this->GetVideoResolution(nullptr)) << "\"\n"; if(this->global_video_fps) config_file << "video_fps = " << this->FPSPresetToString(this->GetVideoFPS(nullptr)) << "\n"; if(this->global_psn_online_id.length()) config_file << "psn_online_id = \"" << this->global_psn_online_id << "\"\n"; if(this->global_psn_account_id.length()) config_file << "psn_account_id = \"" << this->global_psn_account_id << "\"\n"; // write host config in file // loop over all configured for(auto it = this->hosts.begin(); it != this->hosts.end(); it++) { // first is std::string // second is Host CHIAKI_LOGD(&this->log, "Write Host config file %s", it->first.c_str()); config_file << "[" << it->first << "]\n" << "host_addr = \"" << it->second.GetHostAddr() << "\"\n" << "target = \"" << it->second.GetChiakiTarget() << "\"\n"; if(it->second.video_resolution) config_file << "video_resolution = \"" << this->ResolutionPresetToString(this->GetVideoResolution(&it->second)) << "\"\n"; if(it->second.video_fps) config_file << "video_fps = " << this->FPSPresetToString(this->GetVideoFPS(&it->second)) << "\n"; if(it->second.psn_online_id.length()) config_file << "psn_online_id = \"" << it->second.psn_online_id << "\"\n"; if(it->second.psn_account_id.length()) config_file << "psn_account_id = \"" << it->second.psn_account_id << "\"\n"; if(it->second.rp_key_data || it->second.registered) { char rp_key_type[33] = { 0 }; snprintf(rp_key_type, sizeof(rp_key_type), "%d", it->second.rp_key_type); // save registered rp key for auto login config_file << "rp_key = \"" << this->GetHostRPKey(&it->second) << "\"\n" << "rp_regist_key = \"" << this->GetHostRPRegistKey(&it->second) << "\"\n" << "rp_key_type = " << rp_key_type << "\n"; } config_file << "\n"; } // for host } // is_open config_file.close(); return 0; } std::string Settings::ResolutionPresetToString(ChiakiVideoResolutionPreset resolution) { switch(resolution) { case CHIAKI_VIDEO_RESOLUTION_PRESET_360p: return "360p"; case CHIAKI_VIDEO_RESOLUTION_PRESET_540p: return "540p"; case CHIAKI_VIDEO_RESOLUTION_PRESET_720p: return "720p"; case CHIAKI_VIDEO_RESOLUTION_PRESET_1080p: return "1080p"; } return "UNKNOWN"; } int Settings::ResolutionPresetToInt(ChiakiVideoResolutionPreset resolution) { switch(resolution) { case CHIAKI_VIDEO_RESOLUTION_PRESET_360p: return 360; case CHIAKI_VIDEO_RESOLUTION_PRESET_540p: return 540; case CHIAKI_VIDEO_RESOLUTION_PRESET_720p: return 720; case CHIAKI_VIDEO_RESOLUTION_PRESET_1080p: return 1080; } return 0; } ChiakiVideoResolutionPreset Settings::StringToResolutionPreset(std::string value) { if(value.compare("1080p") == 0) return CHIAKI_VIDEO_RESOLUTION_PRESET_1080p; else if(value.compare("720p") == 0) return CHIAKI_VIDEO_RESOLUTION_PRESET_720p; else if(value.compare("540p") == 0) return CHIAKI_VIDEO_RESOLUTION_PRESET_540p; else if(value.compare("360p") == 0) return CHIAKI_VIDEO_RESOLUTION_PRESET_360p; // default CHIAKI_LOGE(&this->log, "Unable to parse String resolution: %s", value.c_str()); return CHIAKI_VIDEO_RESOLUTION_PRESET_720p; } std::string Settings::FPSPresetToString(ChiakiVideoFPSPreset fps) { switch(fps) { case CHIAKI_VIDEO_FPS_PRESET_30: return "30"; case CHIAKI_VIDEO_FPS_PRESET_60: return "60"; } return "UNKNOWN"; } int Settings::FPSPresetToInt(ChiakiVideoFPSPreset fps) { switch(fps) { case CHIAKI_VIDEO_FPS_PRESET_30: return 30; case CHIAKI_VIDEO_FPS_PRESET_60: return 60; } return 0; } ChiakiVideoFPSPreset Settings::StringToFPSPreset(std::string value) { if(value.compare("60") == 0) return CHIAKI_VIDEO_FPS_PRESET_60; else if(value.compare("30") == 0) return CHIAKI_VIDEO_FPS_PRESET_30; // default CHIAKI_LOGE(&this->log, "Unable to parse String fps: %s", value.c_str()); return CHIAKI_VIDEO_FPS_PRESET_30; } std::string Settings::GetHostName(Host *host) { if(host != nullptr) return host->GetHostName(); else CHIAKI_LOGE(&this->log, "Cannot GetHostName from nullptr host"); return ""; } std::string Settings::GetHostAddr(Host *host) { if(host != nullptr) return host->GetHostAddr(); else CHIAKI_LOGE(&this->log, "Cannot GetHostAddr from nullptr host"); return ""; } std::string Settings::GetPSNOnlineID(Host *host) { if(host == nullptr || host->psn_online_id.length() == 0) return this->global_psn_online_id; else return host->psn_online_id; } void Settings::SetPSNOnlineID(Host *host, std::string psn_online_id) { if(host == nullptr) this->global_psn_online_id = psn_online_id; else host->psn_online_id = psn_online_id; } std::string Settings::GetPSNAccountID(Host *host) { if(host == nullptr || host->psn_account_id.length() == 0) return this->global_psn_account_id; else return host->psn_account_id; } void Settings::SetPSNAccountID(Host *host, std::string psn_account_id) { if(host == nullptr) this->global_psn_account_id = psn_account_id; else host->psn_account_id = psn_account_id; } ChiakiVideoResolutionPreset Settings::GetVideoResolution(Host *host) { if(host == nullptr) return this->global_video_resolution; else return host->video_resolution; } void Settings::SetVideoResolution(Host *host, ChiakiVideoResolutionPreset value) { if(host == nullptr) this->global_video_resolution = value; else host->video_resolution = value; } void Settings::SetVideoResolution(Host *host, std::string value) { ChiakiVideoResolutionPreset p = StringToResolutionPreset(value); this->SetVideoResolution(host, p); } ChiakiVideoFPSPreset Settings::GetVideoFPS(Host *host) { if(host == nullptr) return this->global_video_fps; else return host->video_fps; } void Settings::SetVideoFPS(Host *host, ChiakiVideoFPSPreset value) { if(host == nullptr) this->global_video_fps = value; else host->video_fps = value; } void Settings::SetVideoFPS(Host *host, std::string value) { ChiakiVideoFPSPreset p = StringToFPSPreset(value); this->SetVideoFPS(host, p); } ChiakiTarget Settings::GetChiakiTarget(Host *host) { return host->GetChiakiTarget(); } bool Settings::SetChiakiTarget(Host *host, ChiakiTarget target) { if(host != nullptr) { host->SetChiakiTarget(target); return true; } else { CHIAKI_LOGE(&this->log, "Cannot SetChiakiTarget from nullptr host"); return false; } } bool Settings::SetChiakiTarget(Host *host, std::string value) { // TODO Check possible target values return this->SetChiakiTarget(host, static_cast(std::atoi(value.c_str()))); } std::string Settings::GetHostRPKey(Host *host) { if(host != nullptr) { if(host->rp_key_data || host->registered) { size_t rp_key_b64_sz = this->GetB64encodeSize(0x10); char rp_key_b64[rp_key_b64_sz + 1] = { 0 }; ChiakiErrorCode err; err = chiaki_base64_encode( host->rp_key, 0x10, rp_key_b64, sizeof(rp_key_b64)); if(CHIAKI_ERR_SUCCESS == err) return rp_key_b64; else CHIAKI_LOGE(&this->log, "Failed to encode rp_key to base64"); } } else CHIAKI_LOGE(&this->log, "Cannot GetHostRPKey from nullptr host"); return ""; } bool Settings::SetHostRPKey(Host *host, std::string rp_key_b64) { if(host != nullptr) { size_t rp_key_sz = sizeof(host->rp_key); ChiakiErrorCode err = chiaki_base64_decode( rp_key_b64.c_str(), rp_key_b64.length(), host->rp_key, &rp_key_sz); if(CHIAKI_ERR_SUCCESS != err) CHIAKI_LOGE(&this->log, "Failed to parse RP_KEY %s (it must be a base64 encoded)", rp_key_b64.c_str()); else return true; } else CHIAKI_LOGE(&this->log, "Cannot SetHostRPKey from nullptr host"); return false; } std::string Settings::GetHostRPRegistKey(Host *host) { if(host != nullptr) { if(host->rp_key_data || host->registered) { size_t rp_regist_key_b64_sz = this->GetB64encodeSize(CHIAKI_SESSION_AUTH_SIZE); char rp_regist_key_b64[rp_regist_key_b64_sz + 1] = { 0 }; ChiakiErrorCode err; err = chiaki_base64_encode( (uint8_t *)host->rp_regist_key, CHIAKI_SESSION_AUTH_SIZE, rp_regist_key_b64, sizeof(rp_regist_key_b64)); if(CHIAKI_ERR_SUCCESS == err) return rp_regist_key_b64; else CHIAKI_LOGE(&this->log, "Failed to encode rp_regist_key to base64"); } } else CHIAKI_LOGE(&this->log, "Cannot GetHostRPRegistKey from nullptr host"); return ""; } bool Settings::SetHostRPRegistKey(Host *host, std::string rp_regist_key_b64) { if(host != nullptr) { size_t rp_regist_key_sz = sizeof(host->rp_regist_key); ChiakiErrorCode err = chiaki_base64_decode( rp_regist_key_b64.c_str(), rp_regist_key_b64.length(), (uint8_t *)host->rp_regist_key, &rp_regist_key_sz); if(CHIAKI_ERR_SUCCESS != err) CHIAKI_LOGE(&this->log, "Failed to parse RP_REGIST_KEY %s (it must be a base64 encoded)", rp_regist_key_b64.c_str()); else return true; } else CHIAKI_LOGE(&this->log, "Cannot SetHostRPKey from nullptr host"); return false; } int Settings::GetHostRPKeyType(Host *host) { if(host != nullptr) return host->rp_key_type; CHIAKI_LOGE(&this->log, "Cannot GetHostRPKeyType from nullptr host"); return 0; } bool Settings::SetHostRPKeyType(Host *host, std::string value) { if(host != nullptr) { // TODO Check possible rp_type values host->rp_key_type = std::atoi(value.c_str()); return true; } return false; } #ifdef CHIAKI_ENABLE_SWITCH_OVERCLOCK int Settings::GetCPUOverclock(Host *host) { if(host == nullptr) return this->global_cpu_overclock; else return host->cpu_overclock; } void Settings::SetCPUOverclock(Host *host, int value) { int oc = OC_1326; if(value > OC_1580) // max OC oc = OC_1785; else if(OC_1580 >= value && value > OC_1326) oc = OC_1580; else if(OC_1326 >= value && value > OC_1220) oc = OC_1326; else if(OC_1220 >= value && value > OC_1020) oc = OC_1220; else if(OC_1020 >= value) // no overclock // default nintendo switch value oc = OC_1020; if(host == nullptr) this->global_cpu_overclock = oc; else host->cpu_overclock = oc; } void Settings::SetCPUOverclock(Host *host, std::string value) { int v = atoi(value.c_str()); this->SetCPUOverclock(host, v); } #endif chiaki-v2.2.0/test/000077500000000000000000000000001447035777400141325ustar00rootroot00000000000000chiaki-v2.2.0/test/CMakeLists.txt000066400000000000000000000006061447035777400166740ustar00rootroot00000000000000 add_library(munit "${CMAKE_CURRENT_SOURCE_DIR}/munit/munit.c") target_include_directories(munit PUBLIC "${CMAKE_CURRENT_SOURCE_DIR}/munit") add_executable(chiaki-unit main.c http.c rpcrypt.c gkcrypt.c takion.c seqnum.c keystate.c reorderqueue.c fec.c test_log.c test_log.h regist.c) target_link_libraries(chiaki-unit chiaki-lib munit) add_test(unit chiaki-unit) chiaki-v2.2.0/test/fec.c000066400000000000000000000045511447035777400150400ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include typedef struct fec_test_case_t { unsigned int k; unsigned int m; const int erasures[0x10]; const char *frame_buffer_b64; const size_t unit_size; } FECTestCase; #include "fec_test_cases.inl" static MunitResult test_fec_case(FECTestCase *test_case) { size_t b64len = strlen(test_case->frame_buffer_b64); uint8_t *frame_buffer_ref = malloc(b64len); munit_assert_not_null(frame_buffer_ref); size_t stride = ((test_case->unit_size + 0xf) / 0x10) * 0x10; size_t frame_buffer_size = stride * (test_case->k + test_case->m); uint8_t *frame_buffer = malloc(frame_buffer_size); munit_assert_not_null(frame_buffer); ChiakiErrorCode err = chiaki_base64_decode(test_case->frame_buffer_b64, b64len, frame_buffer_ref, &b64len); munit_assert_int(err, ==, CHIAKI_ERR_SUCCESS); munit_assert_size(b64len, ==, test_case->unit_size * (test_case->k + test_case->m)); for(size_t i=0; ik + test_case->m; i++) memcpy(frame_buffer + i * stride, frame_buffer_ref + i * test_case->unit_size, test_case->unit_size); size_t erasures_count = 0; for(const int *e = test_case->erasures; *e >= 0; e++, erasures_count++); // write garbage over erasures for(size_t i=0; ierasures[i]; munit_assert_uint(e, <, test_case->k + test_case->m); memset(frame_buffer + stride * e, 0x42, test_case->unit_size); } err = chiaki_fec_decode(frame_buffer, test_case->unit_size, stride, test_case->k, test_case->m, (const unsigned int *)test_case->erasures, erasures_count); munit_assert_int(err, ==, CHIAKI_ERR_SUCCESS); for(size_t i=0; ik; i++) munit_assert_memory_equal(test_case->unit_size, frame_buffer + i * stride, frame_buffer_ref + i * test_case->unit_size); free(frame_buffer); free(frame_buffer_ref); return MUNIT_OK; } static MunitParameterEnum fec_params[] = { { "test_case", fec_test_case_ids }, { NULL, NULL }, }; static MunitResult test_fec(const MunitParameter params[], void *test_user) { unsigned long test_case_id = strtoul(params[0].value, NULL, 0); return test_fec_case(&fec_test_cases[test_case_id]); } MunitTest tests_fec[] = { { "/fec", test_fec, NULL, NULL, MUNIT_TEST_OPTION_NONE, fec_params }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } }; chiaki-v2.2.0/test/fec_test_cases.inl000066400000000000000000025637471447035777400176400ustar00rootroot00000000000000 static FECTestCase fec_test_cases[] = { { 6, 1, { 3, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEARcajES/FE7o2MUSi7VW0jKLuyPuS//q9LMIkzrm452Gi8REe8WNp6vXp5GQI9TdAk6YLQuI3CrGNzk4oafO8u3q0lgTanQaA" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAFBAE9GoxEv8Pv6QB2OfhKBInFMUoYNPT3Jyi4PPP/RCaVkNbLm1s5k7VzVvd/3PBXhuYGCKo9PwZIt1gi2OOD8b7amPu3oyaEx59G+atRGb74RKFTM9In+6sygFCkJA7Gwtkuiz9uuubhuUVYIRiGpJGSAE1IMRXMHiKjGai5Ln+zsFC3s5YvKgiiSeK3BbltnmSjL35KkMdkL" "fb9DL4T3b+POtQXhA0fAJkAmJADlKgn3Xi078xfF0p3sjXUQXeGRot/rq4slbRtH+du8BpCJpBpVWBbsNbeAKOH6j8lfRte4ZDw1MEl1dxxkpxATfZVX83HM3DAci9xyRpeDFBVZO/QFHbjDD60/VlnGo+3r/ZUuDRQJRkvxKF6uyNYEyGnlADNiHwM7gfmkaylXAU0/0jqjV3oqntKkrqXvQN4lL31yypSma+yzKgVuRjGChtQM0QdFNc5qiwZ3" "Qx1fX29JGxvHBEITQ9a0Dd+nYrkTpPQ+i0p3fS5T6h6jF03WA+sTgjP0NcZVQ/ujqIkP9YUHJcK0D97udjisgX0Pptvel9pXmpoAdFQCohjobWWwcWIe/6Bq2rfxuXsFLPBmW1mFbAxPHIdsHEcUOG50F2WVsZ+H9M62s2h517p6Uv93GsYTHj/6/CrPG7DYqUGpCZ3cg/rwUUjB75wwYAF2PCmZWOU2ln/qu7k/ip01Qiyy/ppWpmlTM0nRDQgP" "On6UdmwaXlNaNJ8Hyu/5GoQO81fg9+L2XpzTpKWPwpufnrc0goFyv6PkCBDMomfdTfWfs/OclP597M42DljLckef2d47Lh+a24DAkKvyN6mp2Y8cLZVh+LADlzQvwgkY+GqM5hOMh3EJh88icvgiAiP6XEp3iqFQHrJmc7Iw/Jvi9WfAzJtZirzotwrZ46B3pDfF7IPDGDX0SE3iw2aHdh8a2WGKX3MbZye9JL+5qkgCZW3BFpGHMIxxK7rHQCOx" "CXV+8z/9TYA6kumAy1+S6kJkeiMGetmRNwzCqSHXR8L4M9e4Zjhs/VD13jrmPRRUN8jINo/BxnQRprQFlSnp09ZkjZ4yD37N0QCSuyhtTgGwIiA6Pst8qpJT10kpy9BjOGT1tfCCqKZKKXqS68qy16kjcWTH3yOKPz7dTrppsu64dukX0S2BpngHB3Cdy+9DKJ0R0mQ5n75V0hAV0bfyEuNPCGgub0R0FNGeTnqdfRVzompFtPJ+aCg+sw1II2My" "aE5t/jY67hh5jMkN7ZhJ9dYSL0Gkz1/fcX7WuS9SXJcsB0l7DdZMpuuuKhvrBvyXAjidIIr9msBIl7LIPsaKnazwTItlvX2kyfcNFmFyiwTJxrqn+yljc+tJCtyKSGGYSYn3X+qGwHfytoN0S/tvx5aQTl3f2eYcKceGLkn11bqGPmwVqFSr0N7uncCaFjjqXq1+NgxRfR+RmVyTJaiz2xN5/MwrG09KBIvprkdJzaocInkZuXu5UCJx5HYBSl2k" "tVIRYUi5iUHRYQ9t7NmaJD9bNPC4jdXLeA+hSxJSHPwBVSNHf0enqllLY7Y+T9rg2D3ZrPpv9Qu2IrorlsB25BLSnxDdCmCNmxjcfD2OOi8QxOYJuzsOv4u7jwrB//LxeyKygiPQaBHJCk2xKHtjdZ0MRK2dd78POQnUGU/s2BxkC7VK6OPe2Ntc2m6qs8nBJ+HSVzpoywnU2agQyKm8+hlVofIHLutQIQFZTMuNVMol7JpTuc12lxKkb+lRvHUw" "E5RJzUhDhU/9Xq6rCcMuyLhpvzHYTJ9wq/XXldPVIDjcgJ3uDT3u8TsWfmENoVtCKYDEC2bMYN/x4MBOaqBJvP6mb4j1eos6Q4FAOE6E33PJZU1t75U0AALEAAAAAUEAYiajE7/gp4GCACtZCN+8ie0GyNUHSSo//bIX8FRI21t4iImQb3djv3PNDBPkEj+6Ga0Au2ONw7iDj+XDRlqfitXG1jOOqocHUaNgprUZPJ3xcb3DYCHv0BxHp8R/Mutw" "ACjmjdL2yKbaGc7mpfk3exDZcq27IIeYAdEsANhgVqzB7jKRKyzxljAkPupgKNp3ZZ2bZPqP2TD+rT74DTrHSjMUDLJL13bwor90M3S0Z0q+zxsxDpn4yhC6ZDFTrVH8ruX6djOoxdYBTQUAJZKnk216Fk3UifXMjK7sS9r430HJRl8eDz2Kd/7A3NcStm8a5aeEgBvhhQdYud3EuIlB985ifZfn27/nbPwxBhWglT4n7TKw099VPWr6Iaofq1Yx" "F6Zbeh2l3vNpxBuzFnHRZhOfM8h/npoQ2a3PLr9129GD3PA4G/IPNrdLDfKn/RtqajIq734w5buXEfXUfuRRsvHEyNRvvnenjMMEqQTpv2VYTeifrucwiUltFJR4k27SdtvxfrjgHdbFNaiGbhyVeHegXkAYCygbhs17kI41Bjenrt/cXGd8O/g6zDMJiR6skk8VIlt6A8RZ32l/m6GEbpZMZQejcoB2FNiCCqGQyMXSZmtRpXRaPoe8mrYRpdwk" "EcIq/X5zOQlHgL8lBnlyP/9cCAiZeEFo4lcwo8aythzbqgiWWQ5GjSoJhJWtqYY6YWl0IsUcb+yuG5rvh6OFtyU8dCbFLwGDmrEdoOzeee2GpE9QkCE7UFoXG3aP5yzRd+F/OiO7aplm1SlZ6//03Au4v19nT+jPF4Bm17HBrRBe0P/SNQK/j2kOOaHyV7uoJKI6PxJBBrCfB6C/JS8NRHQcNsTwUidz476RFgFU8o91DOHsEcSnZQVrM+xm9VWy" "tSUlcGF3mH68zqcmAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPjO8cpPFL3UmsCNzn67Nxn6USIA0XUAxwfL+XbhpjaJenBAzqS+pdx60W5s+OVNZ" "BnHKzdKeegrem7P91HZoJqGZ3Z3Zoh9QRnt3bIo3Ir9zvUMHDbat6g6Zg5zWmkqqf5hx3hiSunbEEi/dBy2omTLCEOBQuHDNItP83wmNhw+5kGRXK09hBJYuDZPlQ9uk2T8zYY4npSMCLuj23l3J+TwoE2sukyljN/5QxPqRto6ua5fsJwzbzXG0TJeT5l5h6diUrjfZzEy9W8YJiEXnDWV5wrLxA7f4wOKyWIm9SDkCFsNg1aJrhgshanfbJwFY" "pOf+Ayb7zGjEInNlJPQGGgNKFLo2/enpAoRBSgTJymPEgdoKP5BI+ork+4DF/xLOUIlgD5wXGGf+SjeOioP2dbU9nTi5f/HKt8IXtWtKTndzp66pNvMehtLrcikwwnC49/DiuE6MfPKf+60Sg/NWMFIdHQqC46aWuAupH1KvRUu0ohcJIlYKwhMMuGe7ULw7ADfK3oV9AJku2iFWnADBtx9MnRHpKwOdifMMiTgVj6N/meTzK66Mbjbl4H2oc+Qs" "d0elOlKzXNmvQRuPwFrRRwkqIcgxWJ8H5RpVVj2xzBlCAp5JfjHUAOFTVu1OxtRCq50kK76jAtrg/rLlK98iv/ugbt49a3tuS3hOs+6jpX7gsEeiEZZUYvxzgTmeqo1aiKMblKOcxJ1IBaAelngFBdjp+Vb+p9vnCUsp/yh45EeSwmRXp47AK6VEUVCP02W6b9HooLsI/LqG5uAbR4BAI/rwgqZ0LwLm9vfukQynvNjZbfhvdOw+PIuI2vJjyCCa" "glecP/ZH3v8T4Ex2R5YVRhgDgmqaV9nWUDx6UAfDGkKbOy//MonPIm5uvyopnSeDnX/rFRlNGryaZi2Idz1tum48iB7HNfX5stZFbdpBFiAETvMR6TYASh1AL7n/CySixclR93I0AfuYit8pfFeqyOFIVoRG4xvUaqvhFbBCstMqy+pvr5LKwx8ja4MPhpJBm33hnr4m8fBYG82YiGkdNkj2tvoLZ25VON5h1Y3z1VmtRejcDazRqy3/6FTZpPC/" "L8xHNOSvp3lT58D/Ui8sXUBhiGcNW/CHimQWKTFmUADq2xBvqvw5wdIFkPwEsESKTtTnNQImZnwg4TWxgPxrfF4I6NXIYekLtAtjt/RjnhNcGDiuzkwpqDJ1s8Boft5pi9WIsYWhdwpcvfZ+uqVHFynX6Q9p/O0WgPAUQ90PYk0h2K0bY9ApHz0Ppfqw4FozOlRjHD/LOcoqGRosdEETmgXps0ueuTUSRdQbP9XTL7DcnMnzJ5tbsCEfZu+d/+2C" "9605VZa+QRtrKt+TQkC+JdPSSvvJyIu72yc/S925ZBb91439dz7TZ3m5RTQAf7Jn7xJ6xFgy25K88elCTmm6tqBlBptEP1t94f/76g595plQVqaCB1zUiFO6Ad31WxuU8o/g5YcNBHC9cw8a9nvhJTKYKBOSVAgZYOGzvA2ScqHDWqfR8fUila2sIJ1BhLrTJCZd0E5hD/ZBwtnBn1XCzvcLxV5jnR5OCSnNF/iAXE4KnXMismK1LxowexAw1kvK" "OMeNxXB4BMobxx6guOyl9xjAZPVe9PDRkhhMkBvUn+XnysrQX69G4wMMMa82KhsAtyRk0cLXwbsEK1kkrQYIU8jp3uoAsEA9HSQ318Lke3GR5vlWSLTr7kN2eLfj/2c5Qre6gv17fDIgKG8kRXF2WDRn6Rh/9nO5jDE2Wkxtv5oFs1nq5ENg5eM9vSWQE3t0VRNZSRTdzGTXEicOe1LreGkSjMzl0lN9o6C7z0O25f1bnylZh3EnT5NwLdpLit2Q" "Qsp9TUxKhkE=", 1400 }, { 8, 1, { 2, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEARganES/daRBoHjRQl8YhlAp/I6XAPlRRqvly39q05GQLqUrvzkMKWsm24aXgSqaIuxx1qqLaZlbV7tV50OuPj0yH1ci5VWeN" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBAEympxEvxkEmrHZQzcdgjqwEbeae2zGBWbQREllKC3lY3W1BSTWry40s6gxH/HF6FG7N0l2T9P6OF1xQ3a6mf7l/8vU2ZGcszuBU0ZNrKqB/PskEqyeU1pYkATauLDI4fr/oO+LJ4O5M+M7hf0WEqXQIT9wWiMesVc85Z+aL8sLNZrrGHtPkzTcEdLX7HQNI9PEW8jvOy4Td" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAE4AAAABQQBRJqcb/+etK4gX4LqQTmcoGNNKXb3MnXYmkL7ZUgGS17EnwQetwult" "AC6ogJ54QNap7iHiCpFVNl7zslaqQNIVKD2saurFRus5KV8nhbndjQxeiBF/3K3swHJYyM2uTsAFstuzK+ggeHcx6F0Q5qqaKNT08sDZo2GaytknZ5j1yMIgjyaXzTH0pRtISijQOQT5lSwfazmKjYVe7R6U4wMLPlHkxvjBzDtFfN1dPARuNLUvcVb0wx+sxek6/FPIKVpCj1XkDPVQ2DlCsMIFS3iGZF6F/JGFRG7BMipJgaK8Ema/dTDt6z6Y" "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", 1400 }, { 8, 1, { 6, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEAReaoE7/y2JYrYJnD9FunpeqRwCjlQZabD/VjJYXajA354pc+7Dt3cMr36EfXMeUplGFOiiFtbs6HE6NIL5k7bHSO4LklJe+B" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBAE2mqBO/9CL7oJ/Pwx3+5L2PFGRCrTeKWoH3TPB6WHOF1+2f0bk+NqG/NgHFkyh8xZ3EAOUtbwi2z8NwA8PgdpzCjC2/7nxsGidvV+IUDoRQdxhjiliLb5EXomjpnxyiYfr0SMQkOn48/FEBYsvP99auT213juqduePL8WjbCBQ2nIRPFDcCwKbonPHXNywMCpiLc00jX9o7" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFgAAAABQQBRxqgU/+uD8kajYXYFjj0MAvucU1gKmiSxnGWuCp79MOunACrrl2i9" "cSrVwdy/dDFBqONdcC6fzSxiOiR7zdOLOz1WT8+jz3cL69m6CeiTwj9q+YSBbT0unHkc3Q99dFy0HJxRQxnubS83pJqzb5g449JSyPBiIkoitd38KG3C4coR6zoRAENR7XJ5OC6FUyBcNnpCKt2jYkdqyP8aqo1a6COsCHx4bDnXL1X6d1KNCpDknKrlianACrwwqoyYlTKXTlx8QFYffBZyGkFRS/ydtD1sSuLiQlhBm9G9BnEbLpjlOI5gLhy8" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMvPCDGIb52998AsYJrmGVauTc+Q1I20Fzon+d+aKndEmIwxLtZ84yGTlQpsXPwdEIqFfALJ4ggynxSgIY4WOgeznW0G1lzJQkuKHzVjosVsE24fcdiU+Lc7pRBkkXS4BeJO8jYCE17+71Penzw5BDHSOdWZ4gFbHuKfLtNYdhUz" "22MmVoaCb+kKTGbHRvxQgh1YnroXUbXC4wrZyKMM1D2Ah5mq+GpP1LgfR6he/La9vg8fdFiffPh8NlSvYuEzlU656tdlxmYV6HMeHOwh6HbnXSxz4cbV33lTAKSafyAhMOabeKMun/qgjAcv3j4Fa8+rcpdh/8Vjg1V9d/Ki7VSug96hJDXpS1a/rjN5NnTCt6PhmJQZvG/VPifVl+5RwY/Ps5ZoRNdEKJZ75zv12D1do2lu2keoPkWMTTQsUpzY" "z0rbhQj/bXOeVT/wXLmpNOueR3uwcAtol74V2OrjwtvKC3xDEiVdPQZ3G3Yh3FOYnEVjmW/adUwiBpaBSNQLb+klCt1/1vtvdKBHtwNsEScUzzQcD4TjgOHTA/9Qd9LPmlfW7/ahUIjpY53idU1fLIk/VGZODuIl/f4ZVnz8iTb8MqdlperQGNhjx0H4CnxNkl/KExQBymKQ8qDVSNTPfyLLB3pTjeyQOnvj8tpLu0VfYtV8aOdmd+Wfc13WZUw3" "BmnfqXhacUvrRzV7I/sLxU1CVLPB1Rmkghh+b2jLFo06Cx7sIPFM6VHokXsq9cufJmoB/PxZZLYxwc1wRgNSZEo0UX7818tgr9/0TPII10RaNIPLo9njJMBOKKxqOCyR9g/GndpeypHv6keYKe5B3X42gjQxkeuKAlW94x7tx23bEGyMT0oYXDK4UnSZMvfN9YZQnXR+MLaFiAtPKRULJBENKZ38P0Td74Xkwc0MwqAVzdDpl7C3T0UaqrwJITeD" "qCDBQNSmc9c5kLw8RdkTyw6aIV95E5sRgCYg0NQtPcM2f0zKCFkI5vO0jbrAlo0MNnVxJAmaulKI+IydZNMw5iPwCmPvzRH0GxL3TVeE4KFhg+uvGaRC4hDnuI0u55/B2aRG+27DfL8o37Y2Pu3a0GOUassEtsN22ql01zo4VUnGg1iVN64v7EvDlzs0sZJX50XZbWktWvGxtaLQOEQwrXuqya4R7s2L3gNXEo0odnLTX8l/aKqaRgoNUcqMQXal" "loGFHbr7FGcjxtVyGlwaWDmNVMKBiBaQJgrnpYiQkjJacGtI29uV1ac+PVLMlO06ExwSTGY0mTMuKnz3XxbQHW4BYt8GPp6KW4y2rS74cQcgbVifwWJ3bSPgSQNOnADphtaBWRSy4e7MMGSxsVxQRJzizd5PxKl3pGAfRxXqrEof0mUZHovq0HmPO2dL0oo8etClIxnsr23nmbAcAvnrYJtzNT/d2pfx0myl4PjLcQSyp8UCa6JAEEoErOsZ+tvN" "ahPm3OJDr1OuBgYCqRCEkYvg085/wjOmrIgBomFkOQk8eSSU4FCkWS6cjDuiH7vGq02dsLdmwa7lGU1KamXLlTUNCXFuSI9U6rxQZnfuSGNe7zY+Yy7x6Rr2YB2eSaEudfBdJolnYZoKPYHaRQRBrOB4uH0BYe3BZRN+4u7Z9dJ9vvx3gTUoHpaZne4+5sHBqypGZuszSaBK6i1lscc1IE9aMwW4ysRFDfgIT1FTJmHmk9tkRkaeJIyWrwUF1b1A" "USWivDu2Heg6d7rhkfzDtB7ijzpfYeLF3C2XEYsFAWr/wt2sbb5NJ2d/5fRBBBWQ1DVNCCwH3XpskDXYMowTmdwTEu52/IXi944j7YqcTCudsy/89YURiyA1nWC9tK3rRopiX0gAKRLil2Q+RVKVRlg9ELjwfiuQ", 1400 }, { 7, 2, { 1, 2, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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", 1400 }, { 5, 2, { 4, 6, -1 }, "ACwAAAABQZqwW/8AAAMBPhunfzh7frPGdmmc/uq5zbSHVb3QLm74fnKyvkfps0NatOSYOTwbYJ+6ypWHHRKVmXrD610d1WokjMj6ctkCY3Rl6U4oxbwMW6IfuE9AQNbP4ZRiDN3ShmJUP/lapUpol+txXzYIFx3jxYsIBF/a4LaZ8aBCC+iCz+J/EZMEMDNg4KeylfZ6E1vnFKONH67G51jbx+ptZOPNBp2MqE9tBw7TvTD7TMTyCj8lPYcqLy6S" "FuAtsWo/aSOxTM0QOfPnPmWH40ZXVs7yqi9t6bIzD5hA54MMEvnAK8BDhR5Jk1yNzloX5j1HKXXs11QTpKlRbuJ7Blo8Aq0VrNya8nVGjYPINsjt6PCQtgVimStqiZFMSJK8mEj4W1LeKZfh8NqJkYbShwOAOckBWqIGixGsbeoN50vQYSnRz/V2tQrVgwRL8K/1BW0YuqUzBtrrG38SYSyMw6NhdLbtSdi+YxuW4zCL5VH679ONwqHHxkj/y3om" "n/ac+QIKypOVMJ/NOiIkOtiy/rTHD4hLzisj1YcRZCWnZHkrh/90lNKNMEjsvK07F/r5U3Th52xT52TbLJOOjRkuK2syAltD3TXm6ZaP4KkAeRzOlUhDuqzfy1Wbr5i/ZSfblLmcSNdfzNpNuZq2d1GevFv0XSVEICIOrwehcGRGwUYTsynyiYBX4cFn9kxip2/r5gg12XoqiDxB/jrUoVcWg1WtN5XFndagxm4sbnDyxPKUKcNcZ7IavWL6Lv5/" "Oma8lfzAb/MgnUHK3EjHwV6D00RHRCXR4wep96MNiW0Tz5NPo5lc0Ev9ncX/BSLq1Zi6Ab2qjQ6Qm5YSszHt6LNGU9zcjYGMRAiEKQu0mBUB2U3YMbpg57LRhiiSROdiPAWteY8N6xWO+Bs3VKLSguNJuonEltqnfNQXV91NYuaWP1txfVbERcu1eJv+AScOue8F+er++8ZJaLIdIC3jKp/G2e6WktHjmAyOP0FTQxLCmYOgLz0ZShatatEnDkN+" "/I4SP9JQoaTaoaR4YhxbJ4wI7S9qtCxJWRI3ofIKsfJsGB2kH5jHAjhnYEC7ACF+reSmRjzfaYcWkUjgcRKgTgZNgt2aIXwFk1m9Q0semnZThJgKrOMnozqVmCnG8bqYX5f+VfLhOTGzIYytW1snQ5ldEWDsq12y1/wNcNlFp5mbyNI+K/+osBSUwalE02rwWSEjP3IdoSIpQSlxoId/7QOfii71o5FvM1iyq3HSJvf2pL6okpi9AdjBigsN+Rn/" "QnyWgp6Se2v62eml1fiuCoKe5ndPcXDvhlK9ALuv8EG/NifBUGfhJBXqA6TEQQaKz4wl61wIe/mm9HbkYLDQd1mds0F/4BvPGXkWGSTcZg8ooesobEb0nHl+lo71KoXw324BIpG3C2Ob+49CxoJvLM0TbWz1AogKxU2ZlTDRPRuxEIiWH65PAuflHv4IRVPHtZbRCFmQFax8zspFhECer+TcOJj4HgkFzuFgs8LlxaqquUOodqYI9rife+GBGxZN" "vrvHmdTOflpiq384UF/wTB8MeSvnrQz967qzir9B5yiwSuEThscVK+yGIo8tPmwsAUfglotyZhHyCaUqi+eTIEb1431miNP5sgkXSixB5n1VGV0fLav00VPQ1iQJ4zbHmmxNkLJC7gn0CrVv9HeKSmbsMamfeiyhhPtsWiVwVLTxXNWaA8pERDbukZ13qxDXOUr0TzyK3cLIFlB0RKAxVpDKAc7TFkNYczU3j6GzXdeOtELp7m6YIgysbidibkAO" "CA/ArKb/QN/t9nxwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFBAEmmrBb/yQB+sCZg2teT651U08NswNoZckZgaHL8BtgScd93lAUdD2KOmUMLJWYVYSFIZuCiGBLUNP5Bi2yfs4xPNBBYbPDaLFO+0Lq0Ejo4vEuZcuoxMNztYePzKI8xXI//EBfCHujqafhLWAV1K2sa2PQsAq9/CuQDhFg+rXi+" "dXQp+cIOgvZUIwMxfGQ3wJnTQN+NPgkhTS889qIBOTE8Dl29EVu/Nn60ZdxAn7vXSyoFZNv43S/pMdaA8HkkueUF1jki0WE8qi3wT5dvjNhSxhmRLAFbrIEENdPKhKtlqIqxeFpzxO9I1pKjpDmo85p/LaLM4E133vP9SBTgzwC4hL1gCagSOhdFDHRFW80+W0qaecz387WoBhLNPuSoOVCI1ygK422BVWuh9QNeUt9xuE01T4WspzlbchEJ+7U0" "cwXZ7V+QJ4pqe4NKCeqBIBYroFrhn92ppmrfPNlBgmOAN8K9jOdGvpW4HSDmDYYls3HjB8nTehvRBsKS/EZrvmM2CnaOmumVyGOzpGzhQjWktNjER85dyi4PM+Gp+0Wp/o5n9282QSa5pNH2fLPbP5hNTVm+bYfq3ksqDm6dQ/jV3vQCE8Tj/sSEyoSYx/Ha7lK7/iDZg9kCWKYVQvMQ3udCllc8bBl9wg9v9fXI1cpq9SSF+pdnAxPcRDH6cqtl" "pu2EFZl5wHX/KYiM98w3UvpaMLhPCtTF73Vqy5sRX3sgNLz8Viamaj9QnTlOlZerP1V+fFBjHn+kr+635qkLKfB8wrLbJvgeju7OA8u6UwyjJ4sYwq90MVziIvfGH72BW9Doku7UvZ+UPAbkHqSPH0MrdnCnVjC6+/EHQT527jubHDHI+B8QNcqXlQrTggPXnv6WcFEwERWrcX3BKHURExB1M8gdUA7ZaNKm5matW2xDJr9T8MytfTL9aS6QDoHk" "XnksKL+AAOYEiCOzKxMnVhJsm0PphzLxnaVBldyEqTkaVWuUAt6tQHeEBjPc+vFYgkHBSRvgzDPPLrPzrVQrjRgF0oq717kfrhZxEQz9ZT1/RaPOJxH7p1v5Amk+JG+YJ2ER85YQvJeW09wHSQbIZYohMnjR2Zl0DFmKG0GbbyDA5upjmkKGZyVnNlVr/8TDsdAnN2QeMOH/S6c4Eqfu4YCQFynOKKve7LmtLuo5i7+rob5NCjNKl3Pug9QzNhse" "xlKL+bjkCcBK7o32d53/jcjVgzJuyOJOF0vaoHqvCJ+WKAshjxP07+B4ZGG2ZRb7qI144OWx5HXdij5IX9IXgFFenaEfWYaHfpzn94/rYAxgKgl3o8oBMbpgQK9hJpx2vWDqGUHx9K0q8MKs9tPB6oASvjXIiu7yHNAl/vNdFh8s/MqrJyFZN8jUJrmEIJGSTYO3ljqdH6Exa7aGpE9XhLDUMMMTUvykNlbjZmRqwOxPtcf8j/cRjAtqkI5S5t2G" "VHesBszxgV4Fiby9hp9V49KLMNJszGTv4p9QmzPbo2roiCUpgGf0hkBi11bzTFniaK63+Q/c5C6/2rqlQx/key4MdvZxb+nT+zCwluH4pqQfg5nbwCycY7YqP6DCMj++vla3HM4NALY6A8p6vml+22AxzvXWeP4hDDLs8p84cayqcRLZsf/TH7lGij80kii06h3Irpz7dvZbpFZ1TgdIVlyVnO+5rE+UY5GhvOLDWtg5neBwCcCy26sGlao5so/b" "DWofQsyL2pgpn/yU2JKvgdNhYsHUos18qWA0kYCmG9LzSE+Y7BnrdYlvp3O4yuc3oFpMZjKRYwdr528jNrbQiPytF67FLDrf6zKPHw3EqH2Zk6XLS4X4QFGsVD8jxDXj7PWrf524jiCIWoFBfLTnUQVV4F0fnL6ugTJkHLSQ68xGmKoEujWgIvHgfj51kChPGmJwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0AAAABQQBRRqwW/6BTRW+J2nIEC8H8" "NmUVlOhHPJ/ihfmOHEPooE9CYWQyLsCunZlB6o00Dff7b9uiPUu/dZbWarF5WicZOne7alpH607CiBLvPhCfV2QZhixoJ0yyvjB8QEZkiNl3hw4LBtilZYqSGaeTbjEqP9MLoV6MqJf2QbDXXxksKF44dkfUPEFsYrSYB2hG/Sft+KN9b+kbY+RhObg8CdTemQyobkR+iP/MhHWVoeIrcCJElumyjWPPeKYc5rmbtlPdW50yE2XD5ujHy4j88+wZ" "fogjc60sQTTsRgQ/UTV5B6+LmoX7KXY8jeFZQAa6Sw3UpunNtZnlZQVrGpiEGkN9fdQumnH3/qDCyCkJ/fF+OzBSCaly1ZoFAb5vuPQF9IF9IiMJuOwNg3EhjasAvYnobgDp1uNyyu+Em7l5GQeTkm4NqWAS/WOdU2CUPAf02V299/32QJYzF8SBVB+o6EO0RC/0DXzEKxwriZoI7eOCqxzGG8eY7vew0dxHvZN0QaK6wmnXtmK2xGcSm6c2q9Hn" "bCJiPjop1jIi0oJVK92UM7zyhNE2rxwhk89U1XDsk+U+tp166wlV00r33ZSsd3vhTnTaNzga6dReCWCjMqSEDdRNmiDyI0ODk29DjkfVBOoigNZ6BCkEnMQsMeUgRoI0y87C5RAhUDNtaOLC+w54fSb/4AdZ5OHBeGxFzAPfCO2/gh3FW6T6NDufS/h7Wa9I2iLAo09d5EU+wLnDaf2NzmfLXSF08XTEYmrWops79/FtOnEZJC9j1BYD41Gok43l" "l0hitahgTS0i+1HmvSS2abVyL2md453TxMSIEdsqpov3dq9Y02t+tihbiMAuY4TnE8ylrF42FmlzjuExkiGsCY8vtkHkk0+WGg/HE/Ahf3n6qe8Bp89W4OMl/7DQ8WujcBBpDpDfXvHMmEsdkscEhWSV8Ee9QPgnAxZldJ1L3Ia4cp07Mxo6L+0HRJd+CveITBMGtRuR0uLmAk+TMYbL582/BO35QGbQBqBGAciuJ3ADtu+bRDc07E3N1vQufA2w" "ncCBvNLKzCboAMiIOsgETM2k93ogAJU0JEclzh2avcIpskjGrsYKc5V0MGriqA5JdKR3fN/RM6vY+DLbkK90ZJ+m2DJCdZ26g6ddylYr1ybazU4J+fnJDPBFUFYo8bOxfRxEOl4xEXre2nhJr0TjKlIhXLK53zae4Pq1FcA451mHv11A7N54QmnAKhG156ilVuKeKXF3eiM/SJ/XqdMkspB4/CCQslBbPbn8oiqWHsjk6rLEPL6w/1JFJgVmOepR" "JAg/bfHl8QXLkqbPiyjRTnkKpg29n/r9WiVWhUEln8S/Od6zTrccEf8PD3kNEwA7SGsmy7SV1UA7NU3N9OatYeXjmQNhZRFnHeuGqCI2nWJA6+lYmSJ60aJ7JpLGU5Ft5UguUUAYq/dbEbNfZhosmbdYEKzEmqYBMKSjCXflcOhLampFz9K8Jii2oMUkQVkFA+GKjF+PQoPqurvGf68WLP/suPBTWUMOYOhra5r7yGdm6ndXuhBZqs88RlblFePp" "xbcLVswpTWpLkTU7Xmqe6b85/CODi7WZgtOv3aOVvF+isdiA/LhzQIbgKTaLpb3N+BpatmMiX52/i2ImolYMASk18ZLoHjEGGjIOBGsSibWdKh8RLO8XYshzHFTGz48rH/om81yeWmn2XoRpMuArcJPS/uofKCYZTlMBNA3vw/nJswAU+m8otM95zTsS7qLIAu6p7/xKBE7XERKfD9ykJXEzxgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAhwAAAAFBAFomrBEP8Ys0qOrKBBMcp3PO20LrjTOY1iw6A1w6vWwyr4Tpmn8Cq4LRtDv9V56KPR1h5rQ2hcSQ7xqTsusFsxCSGNpaPK4nBy2wcUZbB7lc9iZhbjpW3TTNotde9wBcLRBi2sAcQjGZrrSIYAs9YOohEMKEiU4m5jw0xP5niQf5JmzVxJ2nku2Ap+DpgjNY1DOJQbWkzW1j" "/VnymeECc3YTazr6LQl0vpCgUDqbPzYwF0RcKa1ihR+qDRX0HnSflilTwmxS8ByjSrv2Go8rqKNWPJ/sV4rS2wmHly7tQwIMKTC/nypoG3zQ+9o73+6126lWYdGVMQkIEUEgyTryHoi9AB7E+6NogmN4SY+ke9RR1hG1TnOfGqIMt1G+sqwZdg5vpGqUXrt4ak2LFk/S2Kc47Fo5CNAL3Imlzku7+lbR/IoPeVGs7S8orescgWSpzUmQ6Cp+abW8" "TUpU4W/pP6T4cBTXRfb7EcrrNZjupQD0Ik5I8FdbbQoyKQDkSc0hocRtMxRqJxUFlf/LyQvb7vwq6hTw/MOENZQ2J+G0EF5jQBKrYMTO5i+PTw/zFTNnnJUtP5Dh1CqW0dD6+AaLC7Y+B+ppYM0GHCVCHizJUTRea3vzrRW0+FCQEdi3+95QIjp02ilB5+Yr+2xZf8Ae0Jks1eH/D1d8RmtV/jKrdYTIH1ppV7uKUorx65/OLQqYZic/W6OiY9Cu" "02EZxqBQEkZR/6Ad5q5A6ZvJ3C6li1D/nxUP5n0NaR4vMDtvWlfbsFnxEQ9y33eoDgMfZL9bvJNnmxO4JZxnRjkh+UuNnQnb08hsWel4AY+/TJ1fbANXJGvrM5ZE4yO7A71sPEl+Lj7o/sHUqKgzkscjPjrk4/VPjveYHPSOLFdI+Sv3zSEOnmOupQ5ujCFGHUQ4Xvpc2JwKXjfOeCDKPbnSltCSLYvxWcW1bjwf5TTBqX2A499bbSHMK1q/2e2d" "HWhy9/gsR2ulh7i5Fz39WBnWL/hORHXY+xU5tPHsBNeHLjP/pLJlUrEQUkbgNC1NWPidJPVGfUPopC5fFL3EbJ485F48yiAuWDB9j04qwXvSpVxLYr6PFfXbVaeNVVAboLEuY1YLzJR8jSbwCt8VOijXifx0P0fYZHQEEwW2DZBJRXIQZOmK9RGfyJRRWH1Fqtzdr7F/OcXlqGe2obnE+Jt9m7elX4oJXmgmpcZ0vmxwAJjuQkOI0JL9+Gd9Tm+9" "A6oZDkby2NKE1+J1vapH1l/N+bSV+wicDtNua8cYylTEAE9shHdKZfVHUccNVQLxagTQ2P+hbpc+F2lyri7BOibytSAVbgKUT8BWWy4ICKUpnkcugRG9OqHMZ2FHuFYODFQ4dRWxFfW5Ejqej6gngek9xCojW2+P3SDHZNQjli1nf5CcLpi4P16vfQacZyBcc5kqX+GmXf4xoZxttATtk0O+wjhK1lorANgebGICx3qhzRBqSDPepzfJ9UQVXP1N" "PuZMwtgYU5HlzyjnJ4340lRIMFpE+YgoaY5s6Sw6f7a3Cu6S7Dz2m4MbhLEtxnnrgrqEHXW/b9DKWsiNbXdgxgN4hSasHNRhTX2vHvF9kJEU0Y3M6sjgWTNoyS5Tg4NMwXMmg19euVQYAK2WtH2F1PYv4fOvaCHJB8YDHtWA+xtsTDZIBbgZJuvi2AuFif+FzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEZfOFDOgLToX/5pIMeeK0ioRX1PhVCBz194IgUfLd2ktGFXgR3I5e0bOGhcPtUoQwIe4qC8MlAHXN/wI7dSnv6jIpvLuQzpOr2ccQjed7W4lnv08r6JhhiqFs3PPNaVetuhjQvsqpUZ" "TAt9pW0IPzdhq/C6UWLVrmjt0lSmmyUOUR97BxL2vC7nJYqlOK4w3cRYCSQhK+7OzpdRI9eKC2Nz1ChBgMRKI0ev/FsxGi0TyVNrnStS5Qkqe6cIxfcHEIw5COcUJWXeMQYOpTZ659Lx9eg1o0hK22T5XRqlBXnft/05SVsRueim9jXr8VWvi6XwNtGtF1Ifcvc/ICIugwezPfgyxtbeoZzd3lUMbLXGb12pZRm3M4ZnNg6MBrC+exLV2hpkE9gC" "sHTgA2BM8CCN1sKrJqaEuLLgR8HZF2yjBv4nSldBSC9LoDLbQu2j2rZTobxc0gAv2kBB8Ht3AeiKVgrL75DnOOozeizWUpuuZ7nzCL/Oa9Ee4dJjXwbqm7yRG4sceyOUsPpcDANftYzRLcISvvmZUhQlaSQjNlD1AAQJdGCZYbxW1lhciLlo83FFhzvQh/CKzDIGp+rH08HRn2ToHij8+7BKZzsLhr9FdyemNkJ2KV6qXP0UN/5f+F4/49ddUmEw" "/TdTU/Fm2zAv9rIMUFHdjKFxImb1xR/WC3wAB118zSfx1o0nllu/TcLrhBbVuZorQtydssADxwYIYYBWhmTVzCIiNGhueYr7cjRcbwJOmeRBLDbKOdkHB0W36UayOoNPbrR808/Iyez0709xIfFFx3wyZkpvPG+/PKPL+vyDv6C3htDhdrKL2kHcN0MEF/AricQ3qsK/cCTziWuQFBtGmtoZ3dhbbWZGLswQPYqIQSGfTokrZCC6hDAF6AO5L0gP" "ELS8d7Vg/IXBovMPAlbFF77PdeZ/fTa/3JyqjYTACdryfa/dOcioWItrF0yyzRG19ijSD/wbQKsItd7exs5zqUvTVNvU4VXsVT8LsWdUJAK/GqLeAMcA735wUsOmXFOMKFlhJZcX4ZXauQsOa67+rdvPJ45YeJ1R+VHBs5Pplcp158Z95QOBfnKXrijED5wKjqK1Lc4cPTztyTqeqhSd7ok+nBi0oLdje12w0EkNVfdPvJyp2na+qx/qvn13wjvC" "vsGKD7aSqXZuXq1zajQqTTp4nTgar8DQlc66rxZj84TllorjH8cJVR72qE3Az3dfzsePin+ua5gRAN2EQKZgyj5d+wdtu28kvMH1jbGjIcfS0EwQoEjtcRTHChgfsVA1KiPJfm76qBk7fVE2nahuCWIdsoHjAUFA2G/PuFy6sBA3d+6fgiVhCmCAXOrYb2Q5E1v3fQUxfuNslcPczF8G7sCv6rBsbOxsrxgl66nOEsCxKFAkiAoO1py9o9NW2vL/" "BDQmII7lXVXk7EYIvPIYz8OZs08SRrnY9B6W3bKMVyfqtMy4ySVWa2YZXoosKNt0FFo7T9JEvUjatuXQtleb6Z8frxV543V245vNQz4aWIchCB/P1tF+1JKuEyOgBtD8cMVNtQQHXBzU2lCHXZee0Owc0lrFdnv9WKBVQ3AQyP8O5wee9qiN4LSYpo2tE7dJrKz4MiNDnlTx7gVeDmhU4FoF0ddQap7jkOA0nrBcFIDeuMEOYZDPwD3gNyqiEr7B" "ZwIlawwG316qT1fzobRaavRBMTJ8B1YOoZhINjCZUCLEa6xuUKoZMmi0iXMGUbrY46n9ilwtLtDn+vK9nV/V+LWajdu2m18r8HpG+Bzvl6+Ib8a/1LMB8dbURbxBaJuZrOszqUPvFr5Z5Y7+8LeTK3dxY7I5iKPLxGTHFeq3E6qvU5LegGh663g2fz/fbF3EBVcAAAABQQBxpqsQ4//9B9a+eel2XDfltCJTzmyDF4dUAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAA=", 1400 }, { 5, 2, { 0, 6, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAA=", 1400 }, { 5, 2, { 2, 6, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAA=", 1400 }, { 5, 2, { 4, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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" "3WFn3jZHMsE=", 1400 }, { 6, 2, { 4, 7, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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", 1400 }, { 6, 4, { 0, 6, 8, 9, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEASga1Er+anNKTqAn6lMA9vD+6eWEE5zScPs1zfprCLmhei9UG/tNcGAT2S4kS4yM82ITExXSZax0zYh/hEaz2ArYLb75rG066" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALwAAAAFBAFNGtRK/4xrkDttS55sQDRVmtGtJiTQEdTN5EbCxuNxVA1jO3NWbk69vgXEsgcFFZ2nal2lTsJVdKcW1cXVBT5tYDqTyXrtlQ73VZu5uVvJK8N6x7WVJFBfSbkv0AbwSac+kFoFSz/HS/20ZSB1S04Ffg9V6e1nywHFVuBvie1LqPHuo8OnVxmxiBgLpT/qSznPN/Hgxjfal" "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" "t2/dHsZIyLzomgapVJkCT33bXfogSAsXUfHqTq5VW+IcSpmLcujIE3/8Y/gWqMf6f5fGZLrdA5J14lLnomYX51TkODGIHh/J3iRJTstHvZb8V0AMeICRT41RuH0SJY8yKuRMjH5Y6xXPOqe23VYiYeAMVlydfY6yAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=", 1400 }, { 5, 3, { 2, 6, 7, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUEASia6Fv/m+YJnuIbZpgH3M0C69UF9UXhIS0WDaMa7n65zBXezNtLpOB5ZaN4IjLvTWztNKB2oYaR3NVmFmZhLU/X/X/Tg5OXC" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACSQAAAAFBAFgGuhFP+fGG5uGq6dMLJWW1RL3+dhMyOSs0JGZ7BxoIWh2ds7tr+ZCXpq1y32B7yPyOwG6dDRHc856BnenEUd5VKrLljND2NbqHOP1/rb/DJ0rZRzKkE9vOV3GPga+fibNfLj5dFzGXy+1H+6HQUPdeHqPIhekSCvfT2puNWpUZlk3O+SldlF5CXQ291mBZbBbG7k81c4u4" "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", 1400 }, { 4, 3, { 2, 4, 6, -1 }, "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" "3xCv3ewo/HXFuU9xc1h/Eb5Y7OvvDLEK6WfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnkAAAABQQBYJoIU/8WePNFt2/iIkL3q" "ZdZr5IVrWX5Z+DhQ0Bn7P5RFHgbKN+ATuxls5N2LUPJxotdRs0jjCznsDAI134D5i2aH/Fn92sa8E4S1s34LQO65jBBr1K9Ofbghosb8UsSoijOShq4P7ABkVh114EDPxyKcOXwyGM8Ik8ehV73rlhqJvLQV5st8mQr75Bg+vMQdNGL1rilv5zjcYJEXtiQLfGNZNLeXZ1c4rGiT0qz65F4uE7kjAngC2YkmXw6q6DXKyHqTyoUqbkbi8Ohp7EBJ" "JGg3H1nnzu8YUxgGpRqKYQqV4KGZX6zYkdSdZy32YXhqXY1Zff9kP3iYhTLeyAZDoJZZgWRo276BQekVwZUrr6AZEXimZveG1X1wBgSwFUFnACyzriJdFlVgEGl/jRFiI+L0VZR3Z1S1fv4xLnORdOaMvuW5zz3s3reqC1mERgl7dSMIHk7GccD7n30s+bKx5N4Uu3b7qRXX2jrlmHN0FSjoNOcEvqZaIPg21v6TeJIzU/OXLhC6al+hEywOOHAU" "INHptCEWx4nqvrbk0enKl9s5xXOo0ygYP1Boeo9gO/HVdISoOSLsBY1dDthM6lQZuSEQoA0/fK9bFvXeZ7nXPz7BvIFcnaj40O/nabrfr+s0L2+SGqXhM0yhhPNOf/DWkgInEblZhXA6Uer9wMBOSuKYAyI20P3nN0eiqo4gmCn1WcIRhJ/XfZkgUvE14k/xAFW7zbyylMN3IMSI/ztngEWSn+gB2li8hIGSt6SgcYeP7d8aTUC8JWl05Z+boxK3" "INabXj1nCZfhqWxjBmviShUvETNK3NrcF9ydDYiQZfNJl5FOWL51Xbe2lrUfGhkbncfshWmlqTPLKBvz7U50p1lOJHVujyiIs8/VV0uw32iErpoK1qOVUiW9msF1qMXmrCKFFg5dCYv3ENpJ3+HC52qTxpNx+uy8NBXkZvnxamqaBrDJkbN7bYzJEd3ctf4Hss9nG0iZkC1PoNaOTA+6pB8qntON58AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4ACOw5beib2560LpqWxD0ETymVADVFIRxSYJ3jF41sGzfqNfneh16jaVHL8i6rDnZEB0P7KQQxTaS38IzfYK77CyC1V093YQAX83apLsLm+M+l5FYo7VQ+RdYcPPWjx3UxO8onKdanX+LW3pAQQiFc9AW74jmTY5zj+XGbK7p37MYwzJW9i0mYwL1FWdM/v6iYWoFpbhEP5x+pJtEz2N+" "upOd7E0F5zXY84GFa/6lqammJAuyzc2AQUdcoj3DIx5Bp6TY4520qqLIeTOHedH/D9fYCNqsjDUOv5XVHaCWLYEZvJueLL6Y545IYyrIFeAv//+uU4mE/dyeDAzLViqCwPFIROcXNnjKUKNAgjONqSz+t5azb5S193W92QFeZ7w/NhQfGPwgQpRt9BJGQ7pv9syRtQbykpCQU/gtOuX6qxRBuykI17UAISmoG1LTZnsT/winZou79wR8g8PrgSbt" "M4Jn6V7eVWJi6pQWGRlltd+xf3MSEGsTinCfX+f9L5P/3VqOlZxEEWcrSCFymPxyM1+hlzJYaQxgTQF3IBA9S4Ib7WHej7bRkCEEIWs4d+lFPUHddLdDdwxvkgXt8LR3zqGjpbZwM+S+JM78zD8p90sWJpoXmubOzM3c4TfOIC5yWVTOFUnrRx7Y7WAjyCvYoxCFRRyz0BeddM2zJCZi3cZrhW+YV2zH7QcGBKszpHUyXdxkyz1gXgc1YTgzHmXr" "w3R10bU5XmYqTkXWEKQI1mZ5B8UnhlDcS+s9MUER3Yl1saVzpyCwopx3c1WrfhbgP+1xm+T5WDahtXo/c5EfRoycQBoWvXqMtnbZ8pKQkFP4LTrl+qsUQbspCNe1ACEpqBtS02Z7E/8Ip2aLu/cEfIPD64Em7TOCZ+le3lViYuqUFhkZZbXfsX9zEhBrE4pwn1/n/S+T/91ajpWcRBFnK0ghcpj8cjNfoZcyWGkMYE0BdyAQPUuCG+1h3o+20ZAh" "BCFrOHfpRT1B3XS3Q3cMb5IF7fC0d86ho6W2cDPkviTO/Mw/KfdLFiaaF5rmzszN3OE3ziAucllUzhVJ60ce2O1gI8gr2KMQhUUcs9AXnXTNsyQmYt3Ga4VvmFdsx+0HBgSrM6R1Ml3cZMs9YF4HNWE4Mx5l68N0ddG1OV5mKk5F1hCkCNZmeQfFJ4ZQ3EvrPTFBEd2JdbGlc6cgsKKcd3NVq34W4D/tcZvk+Vg2obV6P3ORH0aMnEAaFr16jLZ2" "2QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAC/5ek+egsi1qGH2gdnQtagEZi5PhCQAd+Tu7v08Gze26HDuLMwYqLFieq4upFmx2I3Ks2h7+lHGgIPQyIYq2H9wVJJXqc6X3fjsnc9cD7Hshff2nucVHoDiwzTDAiQ9AOOEQKAynEeR" "+zAWb1GzgkUO3ZwIud6/FRCM88bNp0EnsrTIwNAx9lKObKKrdOGE6fW+Qf62IGh2XHwQKoBsKkWAMzDVW463JwcR5qjSi/nnCSdthlRL7R7jeOBau4/XqpXjcM0oaH20nMMidTi55S0DulQTfD0A6bpwX6dD3sYVGFsoPX169NJ6H8UG0VyQezpdOQCe69wDg+jnGI4zZjdienvNrH346M2JtqgMMfCBBPvtD/iemu1nAQawgkK6ivxlySx18iaM" "TpvxCKY54cR0E7pOimvUHOGcdQ6u98Oq5tIjTfLx8Bt+w1ilktMAgA7ua+2hDIDjWO/C67fcwvcUIc+ys9BLqIgD/JtJG/dTydk1be1mlwtUPLsGo0JOTL/1rbwxsFkvtjhtBCifs5HAzf8LZCj1gOha7gaRl3wd7J0CtV2Tm+0VnXj3gLgnmEzrLJDlR8RRLT2S63B8PLBfph9pI8yw7d5YOqEwFHfwC6tUTsoqL20RVNNXushnP82WHio+yGS5" "YlCDDE2o3MtPS2UzEIB8vexhJMP46zama8or8xOPKFJbkS2w/eaHVACsxRW5LXrZcVABxJNoRfSuylpvFgB9qOQR8aI0XEmWNwBFV4KvslPafYhGJ3q8HOXmCJrN2yFxOGM+qwo/QKICle4EElSIHkFUw7uVm8R11LbbbE7qhOCiufX8uTFoo9DT/mIEM8xt2zVb6dRS5Hch3ZM4Cybew90S73mwaxkPV4VYE/OnE+RE13TqTeNf/iMCDXDiLMzz" "CS/pQ965foQEqFLaKArrgnLi0sh8u3di1M/yEigtSWyXlGz5PY+CyRWsSwzf4Mfqe6i8U9Iu0VBdNq9+wxTm//UEsFKwMbKHHQbhYBCWytobnawmJEtcvXHBFyvGVGTAWHdCZZX6zyEpXhphdKABQEOXQLct1EHaoj08vIW/vRTa+C2wS72NqToTKXnQRiAhZ/huBUdpAizh4oSxqa1eC52rU2lgdKPdOjKlaysoYMgu393zTXxyAWAVsZERP5xM" "xtu1rIfl1IERDOE63DDg3ry3WlwD8/HJidyj8rKsF5+dJRgDhQM81/G6UscOuBBRIfbMjAghpuc0p0vavwhIfNwj0XsY6joEVFpFtPZRfLSDn66JSFicydwlb2GiN2lK7qAQxUmdhXOa0co0t+gsvkE/uaMMmKV8bvKiUEwJ3rFd7XRTa4a0PZmMRRNG+Av9V/2YgSx59xsH7+PXBq4z8Ph86mbYAKbPeI4O4ctXzXHEwmMdM1uKfw3pU5fnI/iH" "+kwBjsqomXomjDlJx6b0n3V1UcOTlJz6v90ElzkSkmYg35lNcG8ROvhBU+VBKCb+PV+EWl1iYAUTrWJNND7TH+uPAoa3K3pVrGP16MjcnO9zWDWjCZCKPkj3xtCcO+D980Mf7RXbPj5qd7zT5LSKqk4l9SOjxaeDFVPd2H7Z2nNwk7rAs5jYUyNDxNCxAAHr9nUT4GdFg3n4Q7U02KXuvC6Ib8sNp5OEBXyj2t6UKZ5LU1x93cDvUc8/WSSn0nSl" "ivf+JzHywPt8t95o2RPgGGfCV3MGLDhMIjvQWLpJuFLBHHPC03e2yZaNT0Jk7BDgwZY13Zid2CRsJKqv7tyMZjDs4pO8tJepQ+ruLa4mOukBBtJ100uyXxCZsEVmkScYYR6OhZpfbuXlzWEziDtYJi03OtehQdmV5y0rZBwrElZG2PpW5Angpjlj+a8nQZvXyUBj6bAFYwJVT3vAnr4zXB2Xzq4kf4V4taItIyQYBUoWAPkiuMDT6+/CneP6RYi8" "Z7cjHSNcjcPRDaKhrSLXiJNThPRXui3RTfupC249RJCXa9wGECsK15I0DMsNC4x/uRx25I3qRAmegtiGWsW16rVoIZKIY+4oLqcSE3u/itUST4dgIQUmMj/C9w3Vt0fj8viBLxhr9TfsESS2uJ6XIH8t98kVnZHaZGQomzz4aNRFuWIdsqfUsyf8O0I0avXiIc0f6Vs8Cax8MYR64kZZK67iJt/NBd68fiK9zOdpQdkwjSx5uzvyKAgEKSxCYyjU" "nP1DWtNbC7Tz8kR/+KStnaltUangRHTmIMkZlrfPk/Nd9Ow+nmnTxwqxv6ceX5g5bk+Q58vdedh5KbI7asJ/AxzlP+6MBN30gR09YxTGaczfzEGo2sPIzhtRo89CI4OrX7iXrsTyAK/HAy8/Q85PGFY+dp1O9s8vaqEoReW971wDdwosxT7g7ik6tj0llES+z4U6npRwsYPeGNYNJqbTu1hVwqVFc49oDbci6l1DQahRc/UwV8KtIq6q4aPERsNZ" "M0DfJ1XT/2STqFvmkgN+T2MWrh/LnIzLcvzIJ9LQeUt1iw39yosj1d8IX4PlxLLINiUCFH4/hMGMBL6CuNj//Su6YLa04Z4rjCp66Cy/AFuNzpX5NlAzjLF4wutu2SatyR9p5WN+wTjP9OOTFCCy74AtnIso7tvlPsqB0zc8MCW8nuk4iojVfei9VB5YrJX3Z75StnoxLjIys6W+7nZTe1fxdjT4ve53a+FlqXi7uM+u4CDtvM3I6L6vws/5avQ5" "XKRXqgwLe6jrtUXwfJ9xdyb4fvwabCwMD2b4MlYAE46dvxGPGyherhugLs56Bjxmdq5sDMOq3R0ewXgvHVZJofhz4CCUkk9jkXCPbNcTXpFZ7rH81xvuwFkdeVWLearXbcvF8YY0AJ+HPMlsuqBk2CDdyy6oMOmgR81MrQnayUMpEWii9H35+PbKbdLVKz74T1NlaueAS2QwTVX620rsb0K6u6+D0stBW+C14R0pC1RbRLyleQuIYvVnKOrblmci" "5MiLK+q+gZOF2xpPiL5SaeUO2ojVQhzwjtD6VuaMZqNBiQufPAKEsURRXW7GzfiXTlegXxaCBwN4EOYDZR4VyCOtzulOBKebraN216dcAhSgrdgyWNqAa+KbCeNxpnJA4T97L45SjejSep9QOvsLiAeoZ7TjieQY9yAKSCTKzakT+Spigj86U+CM5ia0FHWIZFdbQZorwC1iY/zHpEzHpUKN2DC2EooigWHuyXu0o0gqJpUiNcPfMujALhECgUKR" "83kj6m1ZGHHK7RSIZLJEvgFQT9hP7Gejl/vMHvhZQf+WmwanMlp6y4QznDbC8rKU8ZXH8E9DrDhmV0Gk/aJ4GMOrHnlGh7ybRvlAEpFaVh1iKeLEUw1m+PBtQNaunQQUzzJOutqE89oZ50MKKSFIEq6al2eDgswl3WfcyO5DDthfs+ZI5TW1gpNn+V+5AXmJxKmDSUpF+NS1fiA0Hvui0eHAHItwWMLAdCitmPTCjvwFt6tg8AEC3c5KIfKfcusB" "fpRb4GIXh9BBfPVovQsrrBOa1jd6bJc6EpNsZi1itSNC5AxnGod7cEPjVLRN/p+0r4CJxqA6GEoFJFUpAnumBEuy8AJdDXCVGYVv3UUEZL/U0vygSkbHJ5SvLuS6dTcWHFPBMAQKL5IvfFK5ljoWFt6GCGMAAM7o2neUizJptg/J0inWIAcE9v+i/AdJeLuWx+hyV6oxBdPYfBVPFgo+t4OakotQtBEqL+ykKwMLtIgP06Lkaa7Dq9aCK3MZELJE" "AsVXjjqvFIs=", 1400 }, { 3, 2, { 1, 4, -1 }, "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", 1380 }, { 3, 2, { 2, 4, -1 }, "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" "o6l7ibsjHwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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", 1336 }, { 3, 2, { 2, 4, -1 }, "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" "cul0gDqocLZOsw2iea4iCrH5nPawvtqrUKumzjQ/wZ+PCrw4cc736eD2M8mfw+iPfuxChwE9tvBinWp/hdRdpgsgfI3tyz5rLncaRHsj8K1XmU+zSrsDO8Ho3dj0VEUwvYvwYdaeKvLjj7L5m4WgZ4qShYT0YMgUxYVV6XU9R62n4VuoV+FtMLUppLM5q2z4cEEAOO2V1IAxv1xiEbnWerTzqh/cIg1SQ8kI3C2GnLHgREksyP8+Y71HfmsRGV8v" "7xlD9Z5adsLetLse00ysAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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", 1400 }, { 3, 2, { 1, 4, -1 }, "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", 1356 }, { 3, 2, { 2, 4, -1 }, "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" "nhzv2Cbf/qyJnGYsrTguYuzSI42/y+Jecuyiti8abtzj3rW8KCIpo7Ktp6evTM7x+c4ucnYaq8c5+bHjeNGs/dDwm6AEsHC//M41cQKvyTM0yeZh3HRe4cLgaGiQe4KEECfhzafEHwSS9x+gHxpEUzXURmHJfrNYzgzErPNKjIkhAeky9F9qxve3nz2z2Vzotoef7vfj5EQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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" "axHXn55X7y/ks6N3gceEDQsvSDTX5HPsmagE1Nnl4dcIg8roqPqiUqy1Twrl8GQb6WWNKQP4tCdsRPbrmG+AmOd0Q66jWhUq+1wTGAirjCDbhlgvVdfKJRqLPBtTcs5kW/NbMzkMiilpSpakqj4ZYlC8LU8atF3SUDXw/zC4+GSR5UUlFA3Ud7ZosDsx37JBDNiVanDoudnEYZdmfVn+1s+04E5jvLl8fFykyMr3rEcgjjjXyWdQbNzO9aE8dQ5y" "NNhv2F7fXCIcHROG8kgTQ6Kx1NSs2hJDYgwLdvWLSiV7PKBBmhIVFCqwHjkkYV4TlA9G6OmBN5NAmysXviqB+fUB68AyAoyrNt2eri8lm9WCZSauLodNCrn/dTr04ocpyaNqp5dgCODW9k76PTHcroP3oGS3vGCYj7JM2xx/uvV8+7hiIAqM/yakaoQ+opeZEMNLb93pq/LOY40moG8rEyq6kA9nw6I11TdbFuAa2U60Eq8q4wU8WaCiMnlgLFtO" "2YkkdB2X8JCnDohwycaKkWhZrRc6cNchICaUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAA=", 1384 }, { 4, 2, { 1, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbAAAAAUEATgabG/9DciRBbP3FBsQUbv/9znldbLtpGS5ndl4aS6Nu/uYvOAg3FxGXESL3H882wgRRvmIw9dtoR98t1wplmMnH0E3fRGbc" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClDgknR8A6o8eTrGPL25CdDQTdl4ZcjhVT6XI7+Tnl+IEnspREhZUOOZf45BfgOzznqXRXpbV86fulacQoejmYxpBQmlvhfMBnd3jSiwIp7+POGfWdhKcgitYTm+roin/jgUAZ1SjZuelZ5fa8WaZ8yYnRZIv4udOvn5dGimlf8Yrmj8duFbHpGXdeaAj8lOL0KyyQRuLig7ohKqHPCLnl" "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", 1400 }, { 4, 2, { 3, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6gAAAABQQBjhp8U/8Ab6wAKs7Ft/drU" "p+YhQLs7dYTo+zINirBWNB62bf3CaIR/NQ6u7Vdq+ZVJpBXJBP84AKJBZNopVsD7l3VR1OBLZZVpoZ89rouFn+iOn+6QLJmjfPwqXWxNpGZCBDEm1GLUxcxB3gTB7X4ZwxiCsK61yBN/KxZmz28hwjtHFs/Y9IMnpoaTkLDcbsbyEwb/Vuo+ENPGIilu29JTB6St4tw3oF8p9yomWlDeJxpJvmHa5G28ggj43UDZZ/L+KaqKE91RcHq663HkDSUj" "UvyduDT2h3MY5LOXgIxzlNnRNWURr3s4rveEI4VCjxazrHf541UNVBEeW1vf20dQeh5WmhBfFKFbKMy+9Tes+c8rqtliGBZiIVioqSV7zqWRRx53j2PWI3jjofyK8wXjjq3v4qkYH5agMpCofelIgo0cGWzv3AMwabSGCHmHxTuF+nb4zYdT8vRsernPLGcqgcbeKecI1xUifgseZ247/vKNe+TrHoR1s7eLfOKIbRwirTOjYIZz1zi7Z7pGrmNh" "wdUeBgs4CMLg22/9qAY1eBKANrda3SRPv4wdShKa11Jk7/Tc+n+12XMVZp/GQfVvtSB5vi44tWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyw3JnO9L6OaCLba2V5slqr6guZPQ8oN5ZCX25z74ADh0hqb0zMumCZBl2XdCQorKpwtDytgcyXdMHte3PEQWG3B0K4xH8ce5eiEqIZMhuNaHaY/WY/9mRIcGj2l5FtyIW+lvSTlT61N8Wv7e2tRPaKn/lkvbnVN7LDTZKMlK0S6FEcOaIzjexryd2F0n3gpZFdg2sYPMQF0JWNNLwgmS7" "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", 1400 }, { 4, 2, { 2, 5, -1 }, "AAAAAAABQZqAbwAABDs9AmDw0ZLpICeYJDS/SMfBX32tjO3HHFB8tEssVUj4OMZc26wI0U+hsC/vZJvZJouTP56fTIbeSPjtcJCLd4CU4LY7N8kqnHIVpaYrRfv9iZQkkkb0YU7FOIA7IxX2yWRgBxO0H3G9ib0yRYuOL8rtfOs3/1hIUL9ctBK6X08l7OoEyyTruYLLy4pkfdQ+IHp7D3/82hFX8ZUhze0NkEOEF0/92Ml2Zu89N8fE6mRj9dMo" "4omaa5QdGC2HZvoS0jyKc/UmVqfBsOZ9o+eV2yjVEL8Op1PD3A1aZ6PSuG7T0LxO2c02j3580Opt4B5n4pvhEwReR+1RitBpNuISk8yscUyxQOT1Q2ECeZzBYVUxZS0FN0Cnhc6rTtXN1obCVmxLsI0FHWn9nP7/JnzPpKv9kC7RlmvIAHaSj5rLklG0hdbOmUKUpuledTQyeOgBbnrTSaNRs1SpJQsBRt13iqWxwMhLi+uWUX3eZHNFH2D81vxA" "I+AdIa/gWaLrfjFTEy2NyfCDZ0SPyiziZubgT7eXPNHkitjDwuB9ICgyPxPtr3nuEC4ceauBrQPoGAFAPVc/rak1PymNuz/Uo/m6NID/Q4ytvJDVHHCjd9GTtPsnb9IttAK4PNHqjp/lrlqinV+AfQFHTteBRT8+HIes4pbmK6VjD4fbb9QikU//pmFWH4dhfdFzjo3P8QJ99f5No9G//WByr0BtFvpkMtDPigH8ycLZZA63ARMCQO5klUJJ9vJk" "WIykKZ1xriwDdqRVHRQr02OVu9WwlD7FvkDEUE4irkEfxGDrFq55BFs0Hj6iSmi0YHY2VOkJI3WTGFQuPMLPkJASb34riZOvWOeWJE74lxoMkXXXzSKWLCx98ZTdFWbrcBEQ82/DfxsHm6hSlMSGfq5RM3SGaHWsrPDLYqp6Abil3+ApVcRFuWgeQAk7cDxdPB3OQpaYxy0knGRL25iOjGWe0R6Od6Fn2pOcUMRmLRTzkL6nnDnYUH0UVdOGfm+Q" "lvTZV1z7cH2cTB4dsd4KEAF8HoWHe2+4j6xmVf0F8QXtBLBasu55Iu+F3bpgU9VoFugd9FetYk/ihgqrKkt/yMJSHezinIah9ZLAHRWgOATRx4DbwCr09hCYytP1fIlk89lFMY8+uUxiN8xwA41G6zb2xqzKLO3i1XV+w2gSKLicu78GjxHSJYcai/Mj4bB39WuMC8zonaY6xp7TDOGmQmCW5vIx2mpgjkyT9N90UKgk2fxb+MgokLmTp3F5o1wB" "B648cV7hTrL+AajU3rWIhVzfK+6Z0gE9n+m4AI/E1U25nNi+q3XxrHmY2qULcw+HgktwSlk2n5aiGKvwlp2PDXE1Ta0DopuRi8Ux0Mmkg/joVNbfYos/m1d6rS2shdR497viG2Db/kt/TempQC1hUCk96sm9ykVqZqpk2tm8zi9atTXXOqDFoazpNxnlXxALgcIwDYPzeAZ974bI9SECABkv1Y+nvOMDe92VEXJvaxIkJknFFP7hKKhodB5VeUW4" "jRx0PF8zPyh1OU2XgziEqAiAe+2Frx+8MXL30qq3hPlMTvNyos5hLEWyGjDot0Ma7p6qPH7bzu+Us2ivWkjb0881ByWsykI6FrsG2bCvwG62vLW7TXSo6CRyTEZM9bj4G6uXYE+gKNfN7hpgpryYdhsyu4PZDO/yHiKoxQx0PR/NMSnfFUEEO6epmXT1YXUzRcVcTCKnWazf2um8V0snbYrD87rYcMLRFJBQeJah9hfg2HxgwtLdL0JPTnI4DsEy" "5ft8p1ZbNOfD5LsbSBD21fb8wTuQ48GazaIp+HF6ODa5fagILPy9+DvYXporjr7vN65nQYqOo+UFZza/lTQCxaAOhdWQYRIyEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABaAAAAAUEATgagG//xBHPX6oWMJJnIxi72epfQFi181T/yKbEU3hvYb4mPCAn50RN1wAwBwPlCk/rxPR8QZBxfL93GM/j2Vl+1Be3UnzF4" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3oBKec4kZDqL5gHC3ug2Bg78fj8/nNpO+te90DF5COc/8vFMDZcyK0OmkGsRvwsx7lt92JP6VJYGvRqPxFc+6sBmH0PaeogCRR4v7hK2c7BSCRTbb2Jg/+fpDuuX+I1g5MU2lndPNgDbiLzuGTOG+71SICBzcdzmUZ11P+Y8lBpBvSRcYnI/C7Fts3JilIbRb9cdvcN3ZKtllqVLzOknj" "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", 1400 }, { 4, 2, { 2, 5, -1 }, "AAAAAAABQZqQbwAAAwPleU49a40W8wDJVqbMP38sg0aRjxKOzoP/JOrIOuhwly1QXvozr+isEe43VpiuMQ2DFLM9BVEnC4ESzkyXzZjKthkw6X+mubTrIvqr011mankovt5CfwYaTusKxXdQwfuAHJ6R7dqKH1Q7OpjCmJFN7i4G3Au1R6FL4TutSgKZf+dx+50wxMaNZCfKbr06RBxNceAI0FmtoN6czPZebqhzdcDYrIWBA1qw8pxm7EIqG2bt" "93LVKHKQNk39eVN6IYA8clHWtMPNyBmckpGhuH/BEA6W27YkXxASxYx/0lkdSv4G14E588k3NccQ9vXUilStepT0EuJ/v9TTdMZcZB6i1qlp9ZYW+nM0jQblzVATT9yU3O/EKdcjwVMxDJ0HQGwnFmo56H6/WrpmTww5PX+Bsti1HlqPw+m1IC1Mw99hj/q7p/q0ULcHT/CAh+Ga1xLtr0Gq/cPqzEzoVeEqey38zuCrlF6i4o8rjkxPRkKNDR2B" "wU7yYALFSwpTaAOdtCPYsgmufDu2TAq4EbxOwZGiHQOfMD9JEwVo5kOGjyennGIoc1Mi7dgiGNtjPJbMAR5nToffe/Xob30UZK3Jsupxu8F9FGVXaOY6pBeqXdOijD4TyTQFewB/lLuSPE5c4hySohcgjDkZWoXZDiHFN8UyvTshjYShIG6buqseekk3brhfNRuOlZg1GtZcpfBgtc8bqM8K2FizalEm0XJ7AFCCA2VA3FuiCxJD0Nk2IIcDdxr6" "/NoYK/SXyGQAGtW33BJEbZ7xESDfDr1YVMjPAVXXK+yv74bBHjP2OC06q6MeTeCHc63r2V+QVnv0EFvvr6vYe+nW0z0rgVp081xl7+Bb+rMn5XFV6yEfo9JtJhd1sHhHaY10M4KTJBxAZNy2xBCgxITFXSkolhA/X2IplYMZeQEfhRdh+x/kH/hJUE6Nzk9S1IBvp/3lrE04WfLekpuv2NoqCA37uAvkoTIyT8uozTAu0JBUklGU/bF89gRhtobl" "zG2VJYSm7v7yOSteIh/+0JjAtT65BDoq8bgI9jxGQB1sD06y86FgiRUhl0Vzlo9hRLfGp+TB/9SZDmyC+1wcHbUnNdquqi4AOQyElNP5OqinwsJPmtEladXcTGXV3vkAPxqB9krkfUNeSZ0N8HT5dNs9bge97X3VO9lh9sROLbFv2Y/ySFOI54CTt6h/GKp8sNWjtAt1AmTKrAS4pnNC1QxBb4Eb3Afx8J5gIHUhb8tLJXwtDee0tBH7WuxRkOYh" "iTrlRg07ldmWZqXt8vIgQH+NmIxfjPLmg2xT1p4mbPla4oi7eOHGZNDpwSCnC79LkKlgrTBuywcqbfX5KyE2fTsmPAC28jjf5Q4AW2ENVMr73EY5F/ntdWj5DrDOwzLxFLNTo96gXdT3hMq7+1vf8+qlwcNzRjAIuQkEEc7psbb3WSyag3Pa6Yn19oz3n548giF2Y9fEhSDY2Gg59GulWoPNdTWhIf2N2waQiLh7qWLl/gNvw5BpLwwIirzcLqg2" "e7K757O/x7tbHXesbmoJypB0wh9WCkD5i/a0GLcFfXAxD3eclWSK3ulGlf95vAmL1AqfCHUspGjzVoM3u/pvM+B/rdrln/jyx/0z+ee0jra1r+Ts7apwnx1gpUC+Yq4tZut94XnbW4XTwPdcHiAxknsQACWL0HjBIILuqAkJJxxqK11Z32g5FRV0E1mRE3/up4F7e69GpaTGQlqF12WpQwToh7k7HBme2x0A2KZRCz75jFBtLZscKCgTS/k8IvMH" "5vedscFBcy7+JXhpTj+0WDcIqNTO2C9DcYFiHHVhIuyo0IvLQ/5f/FLKbgQ+0N1EDfqi+6fcuc0FbIRCEhaCTWmOiPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABbAAAAAUEATaakG//zDsFLvxitN9e/fjudXLKyQvv3Ugc85OuvJ3SxEa+qt8CLEUys6iI1X91vjPQpzU6/dp6ijnn2X0tZUzj5CqtqF9tj" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClSXw+DpeSdiQD12hKqeMdVMiwSbVRKSL29ZNbxLKEZXN2zhMpaYJ8z5HEZJqqfTjYayArZ9JCLRU+VwglgnfUtZmutCZmxp8KLSPm7n4EygIJBvKgcWDzyqoEd9XnryatzB/TLoJRJDk7jsNlyUBmWz7N+spNKVHc02rJBDOu8ExWTsplWyyuMyhzT/nZAinob2XkKS0UiNGHfgIUCcG5" "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", 1400 }, { 4, 2, { 3, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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", 1400 }, { 3, 2, { 0, 2, -1 }, "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", 1372 }, { 3, 2, { 2, 4, -1 }, "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" "OePHf8rLjQdUVp8NlK8g+uw92aUzfP8uinu/IbpSdf/7bR+9FccYBMtwqwsQSCY2J+s6sHO4Vt1N2I/nCcBek850i6cePP/uCC568Jlg9eDg6UZk4LnfNHaOYl9ItER/gskKo9XyR3L4V29X73B6zsrn+bdBrsUsZnVpgKI5kZj5d/3nLkS+W2bp9ewHPNjY/5lVM3d7DdprO4bOeEjUvtXq4dQXVXNqiiFXNr8GYepcg1AaOkRHhy4byJdxjxti" "BYt/xoA325K1THUCryzob4k7M4HNTroymILsfw5kJydTXPNIOaCQZjAXqxe0/ftspjLtYQR0cSVzNp5XKBKnVMheVa6RM4Z4A+TTGVMwS+CUmlffTAqLcf5CqNPkw0SfdZjdMgqx70HZrmkb3V8LFR0kFlrT+bi5V6+afByUh8UVUhlqaMZLr1mwQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==", 1376 }, { 4, 2, { 2, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHAAAAAUEASMa+FP/Tfn0sCqvSrWmsHrjmpRSTv8rcYAJPcbz83Z0THd95Ps90EeB1zdj86+ra1CVNq+Zv/mvkoNd+mjfxPAcn9SHHrnQL" "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", 1400 }, { 3, 2, { 1, 4, -1 }, "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" "BKqPOF7OFWNRALF8TS/iXtCECC/T1Hceoh1SyYhFHjpMW6lUh8EPA9tV0mgTZWz9JJmk3b4dOzu88FUt4xBt8IV9ivt5u2j1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATwAAAA9xsOIuTWE06JOS0h5Xmi2tKtgPMqNuDCOEuAWnDAo" "0ZHHCVDMCVFyGHJ2qV7qTlHMj7Eu+7XS81hQb/QJFJyGgk/K9T926grz3MQcLhvGpvMwiodT7Tfd1oO98ikp/kO3fJ4UU6jKb7QqZN+EZtSF2gWC5kvuXZcpp4g5cli4A9+NeloqollhXUMiKqtXOwnikNqozkuBeu3jn6vIuobM53BDXKBE7rkWfiyBHh9AHauUFBFH4jWmgmoeYK70De2SwuyL2TD4RaVcsUH83ayAcVpG7KvSha3QL1fpfuGr" "xpmexQ/1O89fAtQ7onyqPR5tnllRpOEXmDjxOn9CizFBe7CfzHzQZDAp6lLNZ4WrcRvDUTM/O68DEGNjNh+GjrUrtyaCGGCcrhYkJV3p4egEulmaNFpHjLIdfmP3yM6KNYKb9n4xEttU7MFhDlErptouZRxZIPzkvanrUPYIwfWP3CwrQm5o6jK/yJHW4Jsu7gEgMxO4csAku6x/fCKaDN+SAR99RB0UUZ0zCHVf9ysEQOxnRN2V8g6BVzCvQB2w" "0NpdwiW1dy104Ek7h2DBVHP7h0qI+EddwTVkKhZAy6UjN+F/z3NpnOIdFlCGdGPQc7euAw2eZVpqLqAcUzivqRXEdocwLHSH1ICVpoG8Ah9MfNQb3wpGCwaVdNCOFBRtF9HcbQGYIqIPxwIm5yinaVpiQbr7ObzgubBO+jto13z9mSEKgB+CmUjcrQQPnnqWVJgYLklvQbYPNMdO0XzQqv2IMnZUxklwpsjldhsW2pShT+1gAKGGMtgQ9gMHf82U" "KsPGYTk2317Swep6YdX1ibtJsDq+Tctxjm+KTMh6ZMtK1mxRw20xUXQFmaqULiy68IbYYEDLs7RTwe9Nu5tR6fE7ITPcfIoEIKf9/StDfKBKI9Yf6OJ84hMirjLTUHKRDyZ3l6uPyZAJDm3ttXR9uvikWQmKSsMHk3UiznqnQI9whMJaRgpzc1MB1lYjAQScZCcB7WK6MTtgHhIhxPx8MRhnBhs7wolWC/J6mkEuoVBSzDdqFABA96ftYoBYQ0i4" "eGgEIK4XVbT1is7MdsauwJbDX+qBOxw6Vjcb4ScQNZAm/zsjH9m6pJe9a749P8bnjuJr6+YEE5Rzi3bsyEuu+jrsBMoQyZlzv9FVx30dnwTmE4iZYYKT6wCCLFi69IMPBnsQ8YwDMX8OJ2jqLOQ8Q7JKw5Mxv4Y7IbPGYrnvWjwV0FwW6ZJ5GguYbzFvBz4Xalw3Numk5LO5BSf/cqyMH5FinmnZSgBLVn5yFGP3xFdmHMve21s87Frvq9MQDefy" "XyX/+6jyE0kK67btvQ6k+m1xFQ9YqEKHPcrNTdIRNXRmpLuAqmSEA2f3QGrVA7RR1Sh79+9lx0r05sUckHgYd7GLI17jloHxSUCb7ZtMNcPaFIXNJiaI2miXxN29N7l+KdFDMYlcrm7s2g2/YFyfJKibwhpcvJzBiDJQ4cmYRoQVfvIvVDcux7A1BAdDFxtDoYlbacBVO3snntpbOSTyYfRMzcviGLCgBqPAhvDXC6MssnA9L304YQKNqkpUhnxr" "qmDI5PTyMrMM6xw8i9YiV80viIX9Qs+Q8mDJeFnwtDbN1jPpJr9q7ToNOlGohteHR0XAa1LwbTG0gKeHORafhkCYe2TkxrPEJcS6iqfZR63Xwi5MlcTeSSv6qGfQm3mnrDq2Q3kyBvXdJBDMtUdwp2KECJw4xGHtCBSBAL3cj2lCaH3aEY7frVYUleSV6WlIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQSBl3fSIe/K0JO6YDDfnZRw+Rv8u7mSvpOHPOrspwBitMKsyozW0jLlLeSWta1OKpTczjsrp7l/QcIIq2h1GbAA0076votX6u8T8ne9inIXvF1l6R6SBjf4jDmavLE3BUWLOI8HlhB7+ZIKsJvJfiwEiQRxyadlKsGQsFqAHZv7wXHF2FLcN/SZqBZ1ALJ0ZuMiKk2tpI+t+mhCEpZWFK" "O1gPwcl4tk48C4Dw9Nf5q/GG8BUnmQUz3b9lQO2qniA7gwAYYsQIpPqq7FacAEHBcGEFpgtORtcbXV5OPNP7QCg4Eys4+XV81U78daLD2q/k95eSsE8ioTcn74lIrUfLx2fK7ZCR58T6KJKvvmWdJe1aIIdmVrFnUzpzaJo3raP7f0dZXYiHw7Z0rasenRzbnHd3hiUjrCsyQxyE7fychgDd8OjjguhhgvhP3bsGlY06t0wIqeSHcw+gCHmvySMH" "Wvmr4nVQtjQE6Mf+LKsN3FxzEOYtrJ+Hy4Af0VKCPBn2WeMwhcX1Nc1idfLmBBqUN7UI8VfaPUHxRr3B8fc+F6kdZ2LHwdiJvwZp+i3UMxxINSQp5owsX0AhArUyV+B+P2bpqbOmJ4rdsXzHogfYG9NeC5ryJt9rYShvgkFZ1PPF6jSljldqw/wgEZf7sNab3xDWOyQY75bdhEvJxgYcM7Guqb6Pv3WgmpNcDtuW1l0M8SipLfUdU5OaQjg/KJrn" "RCZPeFpkavM5ZCZp3mr2CLTnCqclPhNnl9JZjLglsF/46aZCmKuy/pEQHDT5chlBt5OoYPOhpazD/yAuURdUGLo35QsPykeEHNMcmPZVZHFqN+TfuSTdumlJ2w2jiyMoLz1nBrEay0rbrIyEje0idtuaibaWz2zpuw6k3CyNFXAl3kJgZEBCLbpfcXutLcopEnOINVYZN2PcFM8cVe7zih9OPdxh40jzB9WN+slxMeAIsLxKOFc7eXQR9XzLubL8" "k5l4xx2hLAY35nbdc0UtIHBkfO5dUBXVnS+H/5L0vYLlHC5YBEf7wr9HQHPFqSKxBvL29IAYkUW/tUo4i8XgvF2/UNRlTlDnSgeJviWZK0rqCrTpPA/a4GPWhG+Eo9ghCh1i8xaS8bIYy14IL5ZTX22JcHru6XfHvwZpcvXUBNjhdND3xQAlzvA0jDlrBLhmCU7q7GPtCBJs18P9V0dMW6kdTZJBiG3Cd5hm4JZlRjhT/IEYBgG6wabh9890C3Rj" "6wFx0IxzLz5xF8yJ4U+95oFXsQIo22ZkRhinzbe1WfoYpDIYYW5m8sIjojnOYtks49907EBpuqYqzT0oZ+yTHqzh/6XnQIEUQN9EsM+KRGQBMk46vfc4A90syWPJDCfeZjq/z5fTv6gzwzSyaB4ehpTTwI8/jKPvDU1LFBCtGZfLAYw3", 1332 }, { 4, 2, { 2, 5, -1 }, "AAAAAAABQZtISP8ADwnt1m9bKazQTmyYCYDK7/m2Gy+MgFP/tqCEXS2d2MErbj26NFyHw4aaDdklJmuug2lMyWvyHiqN2sK+56i6he540DJ4nWii+Aewh+9YJFL5lFHC6Xoef//jfcd9ZZ88TDgfD1H11NmYr6AEJIUqrWMtuwSTQdwIDFC0ZIgMW887JMijocPbkoMEn+WejPWi74NyE/5wOKmXcE3lrKMwfqcTS0dxyJSMYcxA/RTUgLogsvGa" "WKM6Feg5jBoSPYaje8/rVRbJ2IngitFEuu/toYf+eQDdbX10RDIhv7d40zNvZOGPVqIkoC7bY15Z7vE60Qs+CGBzNUoCD/OKV0bs2E4vuWwsDoYnY25piXuEzZbm0K3BKpikV0Tj4oGigYxdFIJw2sZ1UvcRhTFqpp7r7BNsvcjODgpP3dPp9iGX8ug4cwqlLto+5XFNchq+KBFyW3uvUSwhf79wEyPo3KJsZ4N5heQsmWE23hueXkc4ufuWP18p" "Vh+M6UjXPsnku4AcLiv9QSKDU5SNAhpwIFtSeFryMW/6H4q7ghnOhEOjiWf8/vR4NIR2zgKU8znmbldiNQpGxz3sFS2ApMINSM0tCaxFKTRYz9Dlcz3JgO81YE/23/Xw0YIqpB9QvaYtr+e7JJWwB1B/3DupaJigtlUU3cEVpyxihi99BX5LNvitgNLBH+L4TOt8v3yKxMFiZFRkMP4yl+uyK9CBUjpX/Kdnh7y7ty9m6zg/VDYH7kZM6xRbPcn+" "jfLEihr+Ox1R82hIwKOI9cp20PuZMFUxffD7iKa5TYwZppdvzPQIzjFC/EqtD1XAQ4wNJoiofnWQM8l6EITaI1Rse2Ob7A8Qm7Cak50HB5a41LkdIoyAEpkVSdqLx7x7cvw0Dlz3ulgmgMNYny/abkonMZhDuo+y8LXaQjMlHoFHi+3ZJOpcNn4HWktSMpICePX11VXEfbCmHlt8IZSSqLil2suZwhrNPULhADOLEY7CI+2uHZOPMZgSJ0fkODyL" "J4OH8eNzdmeu2rvH3LIpfggKsPkr5M9eHrwJRdhYlBroawBwR2ZgkmY4u7El+sTU78f9vBPf+bg/r07SpbgQ1AdB5+ZAwJFQOvWzhGFMmRerHIb55HBdqk5P+wlDYCcUqFjGmNgiZFwTgpKlZ1c3wuwYGj6pE+Dk//f7LH/fIilMnY16KFqCauHt9kr53Y76Z7Zlnzg7nd/IlM/3TGpfMQS0H4nBX0jvdFkDNC64A2kKZ9gPsc1v1mCGaS4s7UUH" "vcXzIsoANSJO1DG/PxAd2UpxuRBglS8OyPW85TfcPyGS1fY5iD7q6Pfz4aKKj6QWJHhJJbjtdpWx247mJwiaB7Ud2T8mIQR4923qTEbfONWBfv10WLt/r8VrUlhkm76uRTyRGoQaodfDhi65FC8dbtCme774udRFM7jfvgyfBQg5FAtB0fB705D4zVtuMLILkVOc0MQLMdEowQe0zuIBCgeB/DULNe0Ie6Xi2UFGoqqZwoObdZ8v+8+jXbTSMj+2" "B6jATXxp37rHeKt+dkUTqC2kMANuW3tdR3Bflh7CvSpwOhIrlv/G3CnfYa83ugKxCNhCF4OwsJH/T+lRfL0vWx5G6FRTqz3S0sMvo/ms8ZNnBRuNoD/y8p37EqkYYGBHdOn64sjKDdpxtZ0MjAlRiGuumH3qVeyt8+wCyF8sr2a3opHl2tGgvw3+npobl2H/AqpbSENQw4JTD/0aVEA8vT/q4zaMShxy0AfeIVabHkKgCnjuRmii3uQPo56XobeB" "y6dmvHZIB9OnSgxJkyFpunWtf8vwRHJpxWjc5x4rTLK1ZK98T5Xqxutn8U8E8pNds+HwUzg0yZQFVsdNAVUZJcZbVwPromp9HfSJq8h5ET8o3/1ETSfppglwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABdAAAAAUEARCbSEj/wPQ8MaKEt7c6IHwiFCbSTLHpM8Q3nU0Ip444RGswTDn9H1XeBe/B65piN8l8fY0yIPUeUQD9Tn8jK8TUFLUE9RmA+" "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" "fKRlV+52GoIsxm6bAvLMvWsZRYMhuIRsUtARDY7pmMqVgKeohC6T+yvRtCKYEltmXiVBpnFAmZXrSHnyNgZQ+2I4UAvcRdznrUKfnslBQKO3ilxp/08ZttiuF1+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQXbY79F0QK5Fft93u17ySihtEXS8s46BaACybbPkcRV2Ftf3mGvIgYkcftppdmIeE8rLwMFHwKRte2qolcubOWTBbXGxSvSZMXxyXhweSFFqm8x57EQUEoeosDFL8/faw2N1/Evb/ziwAxjG6ilyhNrfk7RcBpTlkhfmVvSLkBCG+fR6G175aZeFqGQbrRmHP6eba1BY60aBj4jozEKMb" "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", 1400 }, { 4, 2, { 1, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcAAAAAUEA+ptQU//wnWn7g0VOWmWgu28cNRCDTcJIIxooUy4BEziRQFG6jaYiwmIO6J8HFzJ+SuqGaD/nZklRTk0Y4zWF1y3czMMk2JDH" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3ByI33gaSPsNVDlcFj5/IpSI5J1/njYSMDJkyKky/MYCatA5PcJw8k1YiDL653IX2gb7LC02mnxwENzKtsox+mMivUlQ/6Z+cHVs9KHshvYZamW+yTDJuXhbcpS13ENPzD+a6zbm3BhE4A5pt+82xQSX6/uB15/Cs1ZBczMFb9lBOH81OxY5thfeqaWHqH5ImW9AKsm9qhqhMsBBEnIYV" "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", 1400 }, { 4, 2, { 1, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAAAUEA+5tUU//VZHEdaDR455FgzfXcLNNd4YTmlPkDn1XlsriI2No78ECmSHvSC4Ty53VHOZwlXP7M91uSD9eQP0c+m1pkPLuvm5w4" "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" "YveF4b6Gs8HGIawjNG6+28lyQFH+1vfWfD3xG4L1HuAyQi6vRK7DgfMo1aVZG4/PV+82a0ucRNN0qtgi3GiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQnjVfQ6vKhkZUcw5TV8c7NLBYnnFZvW6LSGfkAjKgYKH+tXNf/xHxT9OnRvsCH2PD30rxZ4TBXXuLHlG9McUW98D3q8cGsNmLHHDjuWHfEPyxOk+XcbMTbYIH5KHhXOWRqnOe1TVAhKPHh4BjHLXf4E/mDuKXuwjg9wyitACEYiR17MQk6BN7VYEc/wTfkje4uJkXTQ5xcnZFLrX6RkNh" "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", 1400 }, { 3, 2, { 2, 4, -1 }, "AAMAAAABQZtgSP8AAyect2+zAi5O8S5dCcw4ZJod/LOqxCBdNL1vYv/Qcyry2vkcsf4A+3YbfjjmVjLccK3hEPRvmigU2A5YNGcpJYhMgy5MkeH8oS/x9M9aiFqRcTik/P4MlpkCVDQYtzoSbdfUwr3wlDsHf6kluBhzTCr35upHp1jRzrmiNVggLamQRuw6dgq3q8RMiFmgH1bYZ+/01kh9c/sBL6+5lAuqQPKXgYJOTKI7WjikfCGcgQ3m4pMM" "sA1FETsxnCKoJZ0fr13pyfjBtrnoW0GODqv6OFOWIzGJOk3j2H/s476KxulIVXRa0egQclCRwXIz8JvsE018C1UszCHx4aDyLcYo082OHaJ8y+xeGB8ImXjCcymkGdC0cOQDWs5R/1WojX9h3814IdMSWsVsM/HsEyzZpCGd2nU84f1NxIayURVl1MdRFc5Bn43CI3evJ3CNJvgZ+KCJlApAw3Pr4DfcZorfSFRfC6BXG+jbfa9B63nHrHDIWPR8" "gSWycxNo7AZ6OoU0vqiC6A1L4Etl+7FmTsVWcR3CuoC6k5TPwwgYNuRT6WRotMwC0QeKqW8S8kZpTXN3DJckd9eszced9emo1l2PGYzUmlpXVJmNzEFu9VXeHy9VbtMcA23UXH1FU2YkAmW+xVAtpIGDEov7m17o4PQCrl/GeBfOwbxGIpTfYmkX2IDbIIkcFA3BY2Mp/9hckJWjN3JdA0IuaKTazXMllM+42W3ROMsvIeBmU+/MPMxJWuJpzE2j" "58ZLojic3YjQLCxKT4yOdh9A46xh7dK6HfLxFfKQDMVpGeZXwRyxoVJPJ8Jo9Y22Q9rNSP2kphdvCoaFqkzIPpJwWEDWWRekPqPJmdM/XW4mClUI80XdRzd4pvrarVvUVQ4Mia/pwZdJQNv2KGWgs91whJjTmJyaUKKZXTaw+0MWzVnxuSBD15hikUyLnlyRjXbgtGcIr9qm3YBkDbCEmyobiuR6A6YHQZFjAs6l/zw3qUXI83AW5TliBkJT6oXd" "M9xdCQXz1EAHvAJ+GFUlxwOvlV5dw2rQbomW7BUYzo7rwWYEIvDn7rfCeHrXrQF///IqvUH0ESklMVUYPGocvTXcrsYG9hMoQkCOcvqLC7cc6iXZWHMtR9qW960IuY+ApLlRHEUSCQCiZnM7c+kqAEeAaa8OvMIiMh7zj328MlhMY47T7H0cfWFR5EnBkqiCp5v2eDX8A31gHBJOs+HgYC+uxzCi8ZB9Ay3gUHeaoO9fXNwBL5mY8W+COUJ8DijV" "72N6Evr/D1XCWJUVvCBW68iYJSuAHQ59mBF1E3ui76KqEpeY4GZvJa7FsBTCzoAABQnmc2qpn0sOpOOkm1vnDwfpgAa9bLcEVOfUwaTaNLrnpEKs30rQ/QAsfds/AScDoKEuP+aP0OhpePgY+e/lYMWUHqc4JSfyw/8tuCmecWztagynBQrA1iM7i2V0o/a5Nctv81Pi+RNlhLSqkvwLc5JcekP2fdXR4utnxacqEQJEG/0rwU0PRau6NzoXmBQK" "7RcnnjsLL+MwoB22ar/3By7XlcpzHlorBLSwvLvOmAfs6LIO9u2M/ZKnOmS8DFfdnTqpOl7pBoQGaijdvzmL0FpvRSNuqaDUdhpeAdV8NTt/IpkJOM/8vUHg+EyfN2dj8+BICzUuwtX4SJ8kX1JTQ3RoTDGFYu3QSYo3AiD8iXUzSAHxq6xhNjAuV86fjvjLAb43WfqNtS+fjTB9rS886ul1NgQ7GpgB0FYRoBYxuxW5jA1z6EW73XaoL2rxPYLO" "cAIb8cDiwWT+FD5KXGNMhlAAIin3afsbEgAAAAAfAAAAAUEA/ZtgSP8CylVxeZ6bA4Ncw/7y8ThI6E/x+a9BQouOiAEKymB8iVP0CkR8UCmiD4Odb5w4StrhrJokYoBSpVEXINQfVaX6bX275KaRzenyK1/IGAn2sJR7wZu1cQdVNoe7FAMOuu6vLEaHwVzlHPp6ueCrdCER3QPsvHS+CFfRPJNjBhrVucZjshSOwocwAlaGZFanJ1xg7LyT9EKz" "m+7b2KkCgypX0HG2ATTOgyN/TqIsR+aFl+5RbvrsrkV/ox/Lr+aJLTh4sUVOPxFORmXWSGe3ExNLGa5b7wt1YvCt8umdlAvphdcw4IRvhQiTe3q9Kp3U5o9Uw23i1VP7l2cwQBtdhkPyi/KPAvnTW58UYmsj161uFTFd2N/BOX6Ucw3hOfYNRpCqTgMWD15xJrK8jB9pAOnB5ZSpWx05EKwN5GzdapoWa4itI9PpIPxs544sImzMh4KbkbMJkHI/" "a65DWoS/WXiGpXxESC8+NQPyt2XHcWG0nwFphaOT0sEgTkSczz4hJmWwFt8PZA4EvyONPasaQPxjTvGj/nfx5OUlJqtOpu+eaKL915oQ3Y5TUJ4Zkih4t4eW/2s1PdhYNjipsTTi7IBZUks+a83hJdZIAdVRAg6GF14tW5S4Nb44cO60ParjMYls/h3wDb5Rkc4r31cQ2j5LooI0jDOyRJ4JD0L2Z7tNN7b64Funw9B7GmZjRPRowcmLF2H1dUg6" "oItQnyxFWBvb4PJcX32cJzrIQLk8FtXcnbTfI8sewz8CGSCxE/SO15NmGmqhmeJPXriOVkooA1LrZMwJbxORA4cuP037mI23/eBxCndwQVdMdmdu0ljzllxoBSFDrnwTzVAwj2r4Tt3c2HTWSbduqsNKKJyvIK5gQ1qI8tvImswSeTu7NI2Or1Gh1vn5yKcPTSwoHbPc0mLHnPosD2zjeC5kUwlwPPSwVGuZOhpJF6iCxI6VkbbpnPJLne8MrooE" "RR2tW8RJuTEVwwtrge2t52OxebbcG0NVH2ZRZa9t105jUfTePsdzMROmhwg8EtqXd6IDpZPPmKQcnAEv9uL37KJyddGqGR0AOnLifuykVh/2OgIjuu/yOvTtebT2WJHs0p9Xq91Fy0jEyW8gnpxrhAxNVouQB9ghYfktoZH/DsuXT9uFgZ5RCYqHO3bB+fa60IrCUMRRW6M84eaFZatQBj/3BdTshSeji/LzbKtgzXmGk9CtHuT/Fj3dL5w4PYHG" "Wpu8tJ67kfL5zrrSPHmvA8Cb6lFMOGV+x9e3jTA3GITHr00vteKMkFJCxkmuPRmqfHDONwHJR8HfblFIgKzCSEFLpSLts+IkFvdrC2L3xCD5SwSvFVlELQhrIJhJ+slVzmT9sRtFHRt7LbW3hOLT2SLdiA+LrgsSZqUDGz+8gc2RdHI0uCOJkvKNGbKnHWU4x5HK7+aSHpnyFPSvtGJ5IdOGuES4R08hiqL4wt1YrD04fpvXJj9ViKDSYTavh6en" "AVe6aMbJsXsuUxJaQdLNxMmBt2SB333g9vJIBn7MRL4Ttr28+Ek2+N/ql6lZuojG5oyD6do3BqREuWD7VZdfm1uLAzWzUNjCTt0HRam9UPOHccyTtfn7ND5tPdbgoH+NcnFUIEtuCFIEDFrHpGq8PUlPR3j27lXMp3WscNwo5Ike58p2n7ChT9dePfE2pMOErNwADeaae6nDudmlMon6bossP77iaxIZ/ahU561OfpqpRxHUwjZtEb0o7HWFQyjn" "pDRMtwiofWfRs12xSdFIlhiWrkwes7wscAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACpwAAAAFBAFfG2BHP5iJpAlNtEzWTsIiB9Rr3u7ZX6/Zfq1QJLk5LN3DbZLQn8oYiEZrFJxvFLE/G/t3/JeH/1GxPXBCYQbS06PJ1cv/3zcWZHqpDnsaJdWZFsgZ0wMyGOqdBwUiFVTnm3dwozLvZpVnkqJ6TSKzSarx4Pu+JKdFl0rUmVgEA" "d9kcdjlRyCG0/oXxl/inNuA9HXpuLgZKe/5IXCxP6WryOuwqURTvHC0T2hWeb8xPH3T0f6qFbyFTRHunpO3VeiIKVXRo/e5q7gA7XsIZ5oFhB3eH33pCEXivpE0/GKlihv5SgvoVppD4wzKh2/BEczM/8qODnBuFPQ8IjylwxP2RhOLscYJZEx5XyEnFDpCyUQCZOuiiWgd6QosTCo6Bj+nsLfi+Kc6yiR+fsLw7Vx3QmS+deVXpABRXsevZLgHd" "6RKzHXp5uKhfV9MPBqZnvrMn7AUa+iww8dNw2vHgU0NvlrZBX2z8NpUwvwsv1HYmiVdysWZ1Y0ATu8Pd0bLwaAPuAuqrSz2GMLEr5UuAz2HAt41ybrSBmidiIgrg24MmUpkWdUZBmfoX2JEImAt9XB8DjjVddUNr6Fsb7nxMJWYAVsqtwmTP2FcX6f+WJl89o8PPuYMEl9oxZS5jSKs7RDahoHnSVJngx9RS9AiXr7+SwVc4mLI7v7l32c3lg0Dh" "g31qFE/PuItBL+MLAFELYrI4f+0wg5Qwc4dwfN+PbWqH2NEChhBmOztjU7UBhnQokrttKxQ97JTXrDnEtgT8SsEDfwdeNS9fRFztdt5NcBmaeDQXU7LlbiFEl65NR8VhkSxrDzC44SOBThqg8JwD4miuojO93YBZp/Uj1DG7F4EntZqHLbFN/AGFa/evHhT9Afb6I3RojdKnSR+WBD4DZ8Glvi33wUrIy6oO3UMAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjpEAAAA9xsNMGed7IN+OuxjW3FhskQ/DTLkwJZJ7bICx2cyLJi9cHjMyaNPYnOenbOOYaW5Jw5eM4EvTc8nliFN3HMZtjl3qe3kbpYAAEAoMxfNqq5VQKgCyFd3SLAXVU2fJ6oYBMSFJY5yj" "6LNi2cOdRxHbChUrTQq0J5tMF5dBr/x/JgYC5dljYvGdMmU8Gs4G3Z7tlqi/+/3hHFxaaIKmm34HGe0On/7kSex7E9+fDFhbbhBbcb9uWtZRTdGY0zbqrmSLwjO3uR6HIPAgtvP7k3EDwaAYjn5TDmAnkBd6DVl++ie+xXBzC/gcq42ipKgCpabTIoe/Pj0+4EiwPbJkVdY9NHHK8oIrFhaQdBJCYP64DwD1soUsRsuQwDDaFlhzymzRZhE+oQ1J" "MMO7PXvCAu/wPrW5TVAgnnM6l9PZKYygdzZC8rIQ+VTkpdlupbh3AR4jN3Yz9wO5imJF3Hmt3RpS2YKBnXB1W33Za+//YXM7c0lQX2EeED+GgoymYgrucx+sdm2xSV1HnxTwZYEXQiL5OVeMhfWEcDR2nok8fGg5fxMMDtKk3+l4mKf8XEBtoq7yoMjxeTKSK+2etMxpb5vNBNOsjGXaZc+2jvqrVuDWdBEdBIFjinlA9xB0Q478lUGUOk5xCD7i" "2hlYYWYK+TJ1ntQsHPZguL5UhYSBK0Fr7qT0cAELkX7fc7JOn9xez5Y0GNuw4cEX3qmIV6cnEFvze9t9TRfsZV5JLhhrZNlE9uWwiNi0yQ0/Qi0Qs0KjdUqzNLfleLqgQS54wwRA3QvGxA8u5X/6jf09PH7QaRsBx8y1uughNcaYcZic5StfygOsTOLtY7R7CYVHUWPTMu+QdVm7+RZ4YRSy2LGYDqaWVOj9obdkcpy69L91DeG+JdanxXw6NThS" "JF91skwvWTkFo1ZGsu6Mda0spUAOzAjeyMee4pclYb0MnVnQNfd9ycOzox7XeexGLWHCbRESyIX1hMNPGQoj5Z+dA8zqgTw51lfXZS04yRJZVwjD8r7tsK0zzWps6Nvb9sbhHpvXeamNejQLRo/I4Xt4k6mpsJWthFYlOLOdNz3z9tCbXu4nLvxsc3ABOAEauW7SvMat08xNDkGGauj1AcqMrj6PAU6eKIyq1B29vcfQhdLU1odXvCrHw4gusnOU" "Oof32RkX6ES809Qhrss1qKQBsKQFLXflYxYN/BEub8uX7AVlT+PL4B0PNCA6UlzeN7WeRHq3klpndNfcDvH0jeL8zbe18guP2UDhMnaisQuISnmf6Vk1dcuUskr5ckv0my5pN/WsYP2fW7ZWuMGJMw2APWnebXB0Twraggx2BhaYwZLyWSzEXGLjNs7/ZcNJMHEWCkGsBzBh4XVtIzVh53t2gjCBDJvq/24Q9XmHQu2z7ZyGRUFoIfflRpPS1vCJ" "V4IAXnpBLD6qGNvXRnSSKz9DEVOU4NrCNowIV/euBaO3Sthn3yjdF0RbcMpVV2ktKTBfpSxTqzmPdnk1M7zSxcckiDcdzUAsqdfke6TjvrbX6TIH0sGhJWkS8mC7nJL4i3xz6iB4vCcegKc3v7xaye/7bC9F8myFuYFH49PtVYdkTVMop3bqTFLVRzObYrYHMEIr0YbZcuQZ9ZeBAtzcSxM6oiUmN11q0CdD+PwqT2JXTdlkSGh4B55KJz0Jv1Xc" "7OhHCyijZ+qojviYAzO8ZlHidtdyqNgnormrcUbFq5th1Lu2HmW/1Br129V02si/s4GxrXJ+A18E6oPjm7ithkQME+seCbDFfN5CLzHOBtotkEFnOAGD9mBx7jJ/Ch8lLr8mQygAEZr1uvODCQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQnjVfQ6vKhkZUcw5TV8c7NLBYnnFZvW6LSGfkAjKgYKH+tXNf/xHxT9OnRvsCH2PD30rxZ4TBXXuLHlG9McUW98D3q8cGsNmLHHDjuWHfEPyxOk+XcbMTbYIH5KHhXOWRqnOe1TVAhKPHh4BjHLXf4E/mDuKXuwjg9wyitACEYiR17MQk6BN7VYEc/wTfkje4uJkXTQ5xcnZFLrX6RkNh" "I3HtmOTgKd4fM+6p0HCZ/L4rZ0tPXxv9lDPuS3NxHmDIX2sc6liPo7dwPQzIuAnByAQeo0nMLabxk77c1536jpjbWQTz5DH8essfvreaKpJ/Qg5jwn2/UF1PA/THUmAGbE9LNv1AeWiX6EKPKUxnyZkF0mkjgGw7JeP6shr9Ek1DN0ltpftYVvoJTrKBsj0s2ggTgHuo52X9xRvLNfgULRE57guzAq8PR7/LmgXP/y1SkXWHKAU+u/p8FcqGTkC5" "Luyfw6VRxu7LvA2Wr3tHa1WQ2+CNASaAT1jGKTAq+OhxBM2DyRh9E7kwF/6WfHMK5dGucctPrYatC4NGM6mkDvlg4ERv2oiTfAyikCI36lXeSsvsA285Ic3lYiJ57oe67FYqbH5KpaJ7iGloCZUekYYPvMhOcmIYxbJx1cRfVybSiKaQp9aaaM7joQt8ps/G1jONbHeMEhRvmLG7LGmQqCJ0Q58pj/q+tKogxdLGLhtRm+OsQSEmC+2EijR+pxks" "YNQVDDcrIjHftJDkC0bQhCRb5OJe4VWjHaGh0LpntEgcho7Iy6t3bUlPRUD5JsNE7/jESpnANiK3P6JlofsEf++y9KQ2xbruVNB1i/G6CMAJcfG0iwvCSuUSWymkdJ4Dk/BqhkwA4nY0s2QTL3I/JGtIGkSc+YWQe21wAFd+LCWam2Id9Gqxn34rMPfFMWpF51PPB4+zw2fr34O+JHvdLVU5qXUOXVPfX5C29Hi0zrBoOkgYQmGaYFxyP2BbMeo4" "v0An9iT0GoD+b+uGnsj22tgIBNJekUAK5GKmNJTWf0jUT7d7yA0mvC5WjRmf3Bp6D0p5Xy34uAEFHRUuNRTAk4u93WabjHthJZEu2IfGoqCENg+3ppQIbFabr2s/3uNroAHcO4YbZkGijEIcZlTeDRCgvsf2JxL11S6zoor066Oaeh29D4xP8CMYT9Y//iOM+eb1GYHyw7XgboFslTJT+nDmQUgiVxOKykMeKoBE8PjKafGyZu5tK1+hDgShaNaE" "hC5WUj53RwO9AlNjWkalrjoDYW0yPHkCvkknrVYEzCliYlt4jbbdbdPOZfh8OsmO8ifn06ThKPoXXsALzm3DFXMtQfq00gXnk5ltlPXVftUPB2zv8kkfIl8k38SyDLr/3C7vJHh6r+P2umHPkKZIUlw9WRX/fChcMRZHcfiwkeLfd/QBYCjxvJ/63Uc7+Vfqc5kukYM6gffmI/2bydce4SScgE5WGY3xFcN3QKLiUIiz8FGfd1nPxBGZlBEhUpGR" "9FOX57M9pvyPy/nsZ7xR7sl1DLD4pbduTVf97cC+FUBZwig4jbPXNcwuRS7OJJGCpMpaUGoJQDqhGP5vMOAISibJqTLP2KNHFodoz0ljq5UlLK8B/ht9+d7yG2mk7C4OFMWJo4xL0l9YApTsYMPLtpN1/BBjsrcTur6oF0bIlplT8+T4sV/A4hUIjUU=", 1372 }, { 4, 2, { 3, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAArAAAAAUEAQ6bZEj/e7sUWyPPeGEqDi6s4ABcJqZrG5pyPISAenSKunWYi2ntaMpuwfXBj5bOJp85wUa2GQjrVLCOnKLHP3JG18S4I2WW9" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3+4KwhW6on4q1tPZkc7Czhl37APt4Q65EKP97NfVXmMCotDro3jLJ/AGkEqFjmp2cxOIneb/43X/IJbGyxP4/lCIeEm+kl+788duhmXqdVOgk9rkxk0Q6H0BoPRADnSw59TUfZsURDHIGF9oIlP+TuOx+kiXQV6vRYx4fVjFrDkxK6qB7p1JeUTm1CYK3lXSshRpPbdgjHAzyjbXpfG9H" "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", 1400 }, { 4, 2, { 2, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA5AAAAAUEARCbaEj/xF+oMtiou9+DQCi61Xs0X8WyDUPzC4A1tNik0N/HiQplTcANRJ/1MAnP+ua1kSryDMDkaojb0wrYAMqNZSzsxQJfL" "YElIp5S1BfQradZSOM9pIts8BiPYuWFB7qQIOGpi4OXU1ExEdQEpPVfZ6Ma2mfgvyu13Jla0naBYxH2CB/q94KDjWPiA8z0o4YXf0qT0+8gReSrlKjLBR0aRhBNasDqIpPDfrQxVmiuhXFDTi1AeykdFiO4LEgnvJg5QELvMlQd5N26tcEN6tnNU7ye2OwGQoz0iOQfFnRi5H+6mD+Gi+/HN5nh8dgX/bCOu3YdCUhmvHruq9wcWR9VZecMLHTdJ" "e8FMSowS6kpEyQaZzujbMoOnbxdL67gSys9I6DpN8en5E0e4G/DNSEMTA3X9UjnE38TQ0LKhIoH6pA/UCOuAVDMMoTYIgQivhD0lmR5kWkqsocynkhGTRLElCDQaKpZsZ0626sSzva6Sv16WMd5aZzH0RSPLaJ7F1MOiC7qjZj8xPcbaSVeWvclKHqrcD0YIXDX4uTQG46rU4yeccwEH/54aWbnWJfOIJyc/Na6sYezuLmie9vXr9USkQWONgTmR" "ZiFNUyhnEIn3AGXeSWrhHC3Exvj9KsMviFThkUbFZ/oRpmcMEgSD9Ud0z1/eA69SG4vi1dXHWC6oGRob3JiVV3tjmDOwCKitvCetbqvK+m+b1L3TY2ie0/V314z0py19ctRUKXtFtDRIYMOh/Bi4xlYiuZGrkEjI2TTycx6/HR97vTP0Haa0O87FFNMukgQc6xRJT4l4Wq0Jpzz+nwoQSNIjrRpEkSVplYRN4b+WfgAeNITOF2yE5VBd1haAzFw6" "lGjXRuMcOAXPyF1YHJQ6U8htqj9C2u77upr3M0Lewd9gahXs4ClZQ3U6l/zYxipf232r+sPgaATEm3h+YExwW8Isl238Oi55B4Tg6b0Nh3wQ6r4XXizkkQzrXalPUtNyr0AbgL+pDsEp71z+9zP58Z00gTi7N2ZEqLlQ32QKUZw/DERZbQa2fsYGEaZz5lB1BLdzjkAoKoIn/jTLKP5JeM79UKK9n981Pe20h8FXOu1AS6caXsRcBh7aFp7AbSzI" "TlZdHBgzXnp1qlqK2G7ib19ybCf85HVVE3qfJMAv7vQmj3vxQEuRpuCYhLdEKX9BpbjGU0x6aMhW+3FfaAso6H8xiuh/QtJ8nJP5qx5FNvHNq4cTNC0G1Mp7ucWmRsdZQpQr4aiKwnPxIHqzi01UpkG5F5+8hyUXoQnBToWQJbUhiRvIGZn28/N1Gwr6kxLhZARlGE2EuIHVC4jhN531yxeX8jJpGhGLFm3OOPIKyvZ1kCO+ZLGWgUmZeierTU3r" "IrAzazerZ0480peDrlqMWGFvf4h91WFJuxCztofFOmJ1VTf3EYr6ROOVgZG3/JdWosw/QG66gC7MosEN6GZx6GMAnr/3wIb9r2Kmt0kq5qLhBRj0uw+cWAE/AU0L8jOAZ12kdRnsE5D06J6l+Rv4y+SDcNnAZ4Hufiph+XGziCBGs4Kj9am8Ibkau9DwZbsmA+ZzklOO+Es+3n9qUdEsMv9v84And2fap5mPrgr3M1Uo9bQFtJU9xG65GrW41kKe" "Ol3Q52qkhBTzUWRhIeKjAIulN9xigE3Z82b2Lea2mtq8+JYzzC4H4HhhaJAJKs9+DE30fenZQ0FpchB47E7rvOTuukkOac8VCOt+/vORTm5YpKpbK3MhohjEmqmywCYjfZgnX0/5mUIQyz1uupzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4cAAAABQQBdJtoRjzeYsIK3aSmeV9a9" "bQBcabUkECLPUH6lEsVm07Xu/pZOlIo5USyk7s/O6V1gCKmh3DHsQ1wxB7/NiqzLud+ENRnR0Ae22ahlcXzEVCA4wqHdQbTMGst8UF/DNAiHg/5JukCOHDjeT54SGyPgoXXcp4dckdiu2jImM/MEOL5H+eLHwgMSKzUyfpf3W84T1C6lhZ8v8mKdWEaiP6yIwYVaKy0Z8I70MflXJMX634UnpktuwgQ4tgPT2RSEmLxmZmcJgAG3GUBQKYsWZEVi" "NAgkf3LxEHaX+4tMB9LJbroAoFeAfNHYw29eQhu9hupGOmMK3TyUBVtnkX+EpayspN/H3+LQKf/J2+c+FO24pneTx8dYanKox8+ZuTEoQ6Le7ToC59RNaumaYNNjVikDJ1f6dEyoamT6DD5o6QGI6CQ1jEyy5c1Fnx55THvU6jwb5JTezPh0nDBM8hJAWgvvrexoIB74vmC3mHhaEITuKHFKwFJrG8UbyTWx0wGHyKHFnrkFOp6t+vPAFXSaR4xx" "jM4s8Ot2UHHOkNrz5idzFgyJhRV4a9/r4ormw8doQnJJoJGhucMzpqR8saC59G9JGuT2Iug2OvLSoXeox+1BCPmpLl6YI62PYRE6puALGkRR+YBBr2IDILAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3Q7ZXdCSMTBmLHZQ66m4sLhl3WN+R98WwSeyMpM6lqY3otiAa3YYxPcDIlQEFdyn1t4DDjouaDEok53mx6U3UrBc/1oYogYD9/Kfj9fYf1PnvN/XXr0nIGhyGJ4tSmSH0Y3m/TexEzfhrqcR/B0w9FqpdVLJsseWFEIa4J81bGc0g6j97gExY2oAsvfTBmlYpZxbhn29mTt9xSLTCUY7H" "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", 1400 }, { 4, 2, { 2, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6AAAAAUEASGbeEj/dodXo9y81vCtKDJrgbF+uxeAPrf+1A9WZt5Q6kJ5LvU+MAW/pcNNXxt30Devzll0gURLUvk7DT5lv9t9E0dh13PzI" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACl9Cm+aDWQqoIeg7Zf284G5cC9/opy5KfVdqov0NPZxVrUDchGP97KG1DWhXD16CtCuq0JFZxg5J0cClUC6f1jKsorCYFPamBIZ3irsJgEIzqKAhIE9n7w/eh+uvjwZAQUfzKHnlEiuMYCCoNbQ7OltGMyZ8U8f7cNG2dJmxZeagHA+yud8yb/i6BTNupQlWAZvByMy3QsC2xW4U6tZ5FI" "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", 1400 }, { 3, 2, { 2, 4, -1 }, "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" "ZnCKf+7Ke+Ock/2I7uzQKe5mW5DWRI+UGaDC0rcarQQ29F76JQxL7r6wKiSabF9GLyIl5BIt4Faumqydx3ZW6dbKJ5/IAUAOp0MTVgysnhBkQj0BaiH8d68TdgjAHwMsDZ69B3nWEYSKAHq+kQiPIdoPcG1Z10LtJoH8jM+2pqiW8uthgnltylM/QWR0Em+0tS9tcos2avctSR+Evkvt4LE0E8o+Ew6SHcsNzZpyDx7UTLkrD9MzMDdP+EZ7GPyg" "UFRfHD2xwO5zUoatvbznXX8Me2ur5lK31n7Qi36bUWKn7Dkl85OE7ij7Eh8Hotvl3jxHAZ7o745tHSWXxo/oxBPi6YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyZ8AAAA9xsPd6bHD00oog/CBhqf5LMPGbroZNA3tcKtzk83GaYGXDrQdD7MZsj8D" "nPE1Vx4/It4wWL1s3Dgi6nOh1Tqgg4WQbBOIJx6ZyrZRvgOKyb2Ehsq2giWy7lq5mWMhxwDF/r3U/6ztnOMQwlFPNOREe47ZeTeLwdRmggm3lcMYvNW6N3/BM/fgXqB/aKe1ov8qFMkZFq8dk96VR9twYgFN4Aa1oa0owe5EDN2pIm6jV9iKK8NlKFAXRXh9Q5fLASLt3+6bsf9pUbNKEY0q5PZAZqLE/RX2CJ9N2Y1C+liYmkHVbUtMjHn3UuT3" "XNMQnHRKJMVwad+7xBlIhZmD34bLoxD+hJDB9OAowdCy8I11Bh+BzCsvAf7zjN2JVmVDsWC++s9yjC5N+NlL92st8683gzdBwd9pbCf72P1BhUPM+98ww4HtSvlqAIZIbZwu/SsI050rWlX32UguDJfezQ4kLsr/UbRSweL4utInsGfqqyV4vxXCMurhhMxa93pQiRTor3nT6N7MYP2R5vRgqXF4vDBZLeIAj6V6CGB7cy/RKvTZCigTPlnGR8Nw" "3o+X9q+xmrie5ecdeRnT7jjJvvnVQObdIDDsp0CagIuLY11git43KzUxaDxU3X5vpoPM16OfI0UP3ynf3dxe5YnCXKuuD7L9MJDJ9qDYdLTC5n62vX9LsONqWQnrJn6VxXnZhYS7wdZKbirt3bpO/l748AlrdTwU1wVdEZFffkAYkyD+X2H8uAsMV6LaUTZ/wbpyq2F+vd1Oa17gUa0x6IimiE8kFm/pXd2VbOOJWJDc2cO+sHxJNhJhDv8VFiGu" "JmBn5VgYOUGaEEUgdqZeoGPyYlZ9TCrVF6vPST8tfXqjtY7a3DTiaGWy45RSuUsyDsZvgxKx/RepdOrUgdPAqTb3rI9ktyk9dTT2EEZkLERP6CpOFRo3CAaXT+AZkZisihkxyMn7nPk6z8q0LH0KD9egXUAfRZnW9e01XQuPglPGC76eepgMCI+VW6SqZ9HK5SKu5YrTMt+9Rmc07dx16LCOiWvv1K4DDeMfTH6SLorQRn+nHnynejqFba7JNiFJ" "E6xVKBchRrDg5Auq1aJdiQG7YPPV2di8HGrHucMi6ZYS7QZeC7JY5/I3j6ZL7y9rm4vo3xoiOWl+rtkBCcRRT7258PYtKsgx/mXT/egYmD8hgp4FIJ9KUtnV4xveFppD1KSIRC3xk8ojcuTJVyZ3rPS4pPR+rzxNNbrXJw7PWbSnQbS90k2zI141s1oIuCYPh2HqOpUqG9BqfTvfcwsYFGsXs3Q+98j/90eQbgulj1Bi5KJKzqyH3R2SJDVbcykA" "ErPp5erBmI4VENuDcEj9o94S10GuFVSzgzCjOYFUij3XopVsIYHoGLGkrwm2sedR5yQt+OYy5nxEIIPsC8JYa9ChfuG5J5gcol3tWcjj3uh0KgAaZ3Cz6r7Pq3gSsyOdctAh8tUa1SU53FayxeckIp+LUxnaRnT9UcB0e9sT4CRqri7AFQHkoZCgi8FUSq+gZkOCI9cNxhkiLrOeAZw021QBNo9s+Z5fQk2bJtNuptJQQyDjavQDG9k5+JakG2zE" "dKsszRZGwpC56YzKUTUyKcaojhvDwQIM2hDc22Q7IqnwVmMxHyqtC1ezBe0wvU4ApRNgi0bUeUAqRDiFlQ3qgzN06pBx34dH6gJTd4hRXg2UPQN7kv7ZNwk2ZkpWFUxsqrKW0jZ2I1cBQ5u0wdOeFzuKHIeqd98LzRo2m1AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACl9Cm+aDWQqoIeg7Zf284G5cC9/opy5KfVdqov0NPZxVrUDchGP97KG1DWhXD16CtCuq0JFZxg5J0cClUC6f1jKsorCYFPamBIZ3irsJgEIzqKAhIE9n7w/eh+uvjwZAQUfzKHnlEiuMYCCoNbQ7OltGMyZ8U8f7cNG2dJmxZeagHA+yud8yb/i6BTNupQlWAZvByMy3QsC2xW4U6tZ5FI" "WL6NxWTcwA0DoZ8g6b6X8xg3Eokrk6c+5bwfxW0EkRd7Td+sMpn9/MBnMdoba169ctgJkbXLcwYRZsG4wrJm4nZVcSu/1x3RNB1gpU+Ujl/e3e24MO6rq1OijG9/eXf1fqo3uWW2qUpIGGtFOxw9+6FPiI4XV8azivH9d81jnEAxNDKYFq3B/CbVy1ul4e9vmY9eA82rmT6E/4WPY14IEbdMnr+xF55aOj6I+7pIV2JjyymLmPhzyfptJQT+c4Kw" "mWTLzN/4MzlQtxizMu7T16uoaTXM8TiAGmhG0CP14okI+i35m5e1w20UF+MQP95OXiMGbnj+tTuUQpqCx/Ky/vQUtZXGmFsG3ZGWSu0z99eBZ9M6QbBGps0o/4zfDQZCMTEtmUoA/gvSN2a7CvLNf3uDxXobG+jMYRtO6E9mBEt7ihh8ljsMDASMMRnX9Dcgt6JIPFX5NlcLO0rkeKpItJ1CR9wOgLcN9dFw38WBYbjx01FsWuv3+ZGvqh2+t09d" "KvPO5Cn7hdTW4an51TO9CW//ARUrDtciyXIVoukZ4nzZr7kLrLwkRy9bCvMNbEAfFJRJP+7MuNZ0xZOcSnMcmmZlY9XwPDAyumsbmrTANJ1D4O4NT+yHWrHiz0MnfgZcwr+mQFrWKB6uwIrU65H7+EqdEYcBWLvLRYECc5w+k6BIbtdLafd/cxWBtg0XaeP8HwRlnf2YjljM0vZCZI0tBrpKkziiNsuD4qUq47tEMFWWqRuVjWniYfiBYcCbR7hl" "uelrd7HplWHy9J2Wv1rypgSMwcG2aoSIcSbpvnALLlVJBpCtFzr9IS+r7aBwb1C89ndjLuzbMg8JeGMVONV34gs0ZXGEtRnDnKsrJux30ScVCLwWy/PRGE8CbXEbWMarKUqTSkkaqV0NJhUhCHsLUW22U2nmGjFUUkiPtHvLJUQLHaIP7y5/TXvQePqes8TsxIeDKpESlKXTWG8KxqjoDQJ9jgohGeEgDqaPXmFmNWWCu3DTIDkmP8yl5dMihFsw" "u7xQwH/pGTSnHbZfHaVZ+6+tIwWYtny/5SwfyOTquv1j1a+JII1Yq42Nt2DQ24x29CHw0BaHaR4UIbm3UF9vuIdDJMwtI2MUDR2hr1GNHWEyMlBBji6nIZ8hzAoOUy8JsthsLbI1174duYvDPWrKRQ==", 1328 }, { 3, 2, { 1, 4, -1 }, "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" "EukpWsiQrAE0quXwgR8SIminwNy9O4fAAH/XkZOTMVxQ7/1oH8N1aeje9oR9F2yQggJhNrg+sybKZRal5tCviKm/b8Z+DWPD6KJKcdJPw+R3MjJIFq44XJWr+TbRDpvDxpsKCcIBO+ZgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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", 1340 }, { 3, 2, { 0, 4, -1 }, "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" "hX0NqSZJYVvzUcitwes8HoeFGd1ykSuNSzmfpcjFAW5cbMyRdEhAfBaXdR0jRDpvdp56pUKEBmVRl2sKQavQF923laU4KUR61kWGk2ioNWjar7SiP/+f1bhc3zxCx2WGowXzaJFPfmzZvvnMFK0sM+H1Hu6zBVTypoZ+wwaurpACgvoNKGZPTY4IjRz71AtUw9ZvHGD7Q9DRyzhv9ngav3eTgByKJyws2v8wjELe+rRequm1RTQxElea7ZU2s5ME" "kMMCq/iCFzB8pAuYWwASj0hR5HqSR67Q2b0d1sSTN4Qa684+9j0LNjl+NJu8CMV3ZVAMmFUE9NM8Gjesksk5TZupDnP4+DIxIhtcExJZPFGqGhSW3HWIX99ebVwlmep7HKcRtHoDp+FDXj4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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", 1352 }, { 4, 2, { 3, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABNAAAAAUEARCbuFP/2WelIDOe8mKadgRj8S8u6GFy7tWeUWNGO0mxAfPQiyJI0kVA6VlXMwbyiKVj7bJr+zSrX5MCjpa3ka6AjxiCMXUi1" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD3xTmXKttdOqEvPlXSaY/y9Gus+TF9YH3YKRS3gLZ66GDHUyajHFnPaUq9sIylXrYemWv6sHFLbDrwZf0hIpVg0K7gM2w5ET8vC30zeDQRIHa6xAuSLwaLG/AJJpggaFW0gWUdcc0kFFVjfDUiR7aAfUJSzhssopOetdvKoFvbOLzB3l3W0A1xHPUBhwa0YXNDZnqvTuw/Sig9lhnNuJKp" "KC8pNrjFKj0FPCDDAtTAvMXAUj0vo4yMXH96s8/mb/xJoHgIj6tztwagvVisgX/SSQl3yEx54Krbnb/sPybNWenUkuaaMwdc9KIc0tRF2f68DKW0KGBxqZLNvCK5N8UknSW8KQxny/HMbVhi/61DuUB2yC1Sga0DoggEBP9o1BhxHa5UCVmfQxusdzGM9mBWr8iO5uleUQamixX/tZjFzRCuX56wpsewIa4xvKMPzy2CjzN3xxtSWZtV2AaW4cU8" "ZeppfXstsKfxcd/Kl1+XKwUtPw5x6YIPb5PDzcaJsSAobFEqeVIyJlH4KQeRjziLa4mujZbScULs2QaFqZwwu5jU0cUZX0mccakjD/RMYl81mIXT9AfJB5ryymmZCrUCNvdroghddmlLhawsZObIfW2f6gVasw5O1deqMAXUVu9WuecUyPak7RyKt5lsud77Pqy8vFJ7Y6TFBfwA4HPG3sNa1YWrPVJFPJsZ8LQaQNql4u/RViUzI0N6Ae+ttgs4" "IXPzs/FhgMbrrErjdYQ0TuQDb+u8wPsW0CtI3gUXLaqbCluyDCmTZ64HGhGa0j+yKfedFjZENaeI9pj74IFNPSBgZa1F+z4hUE1BfCN5QKswHQaz+d/6R/fef/s4UO2TFzi2gBN3myTD3Zq9KjFRslQP+2M2TX6u4ufev6TJ8pwXc4zqdgzdyy6qJG9LtDuf/IBRmDottOOPjIYMLl9ozLMz4PRigK1ECdRq4XqiP2mJVpEHlwQG+eEEzMEsghs4" "FQL9+R2CQ4e6S5OMlh/mU2BNreOVlbLniwwqIL6mYEGy6S9A4doMbC+SPISD6TJH3xQiSrWw9tZQzVWYET7eWFdl9zZ766GgkW1YvXrQ/bEvG99aIc8oLTI4z6b5PB8YXJFPYG4HymcG/rH8nXbcQwHqGKmswezIeggLNK7pTCbVhu5GNh3zNU/G9d7tI89XTArf12mvXqaC9HdDsrTyUFYR+//CJucII3eYmmMVz3GTcA23kat1uGNyCsG+1C0T" "cd9kGOHrt456amUuHT65lkEMeN4bKS2YmjJYS5oeyGK2w+T1P09xI+sy2mH3BPGHvkbi5P+eoXRr4xdHnMUPsTYKz1eiaLaqEvbIN03usHunf7CJtUG+XbtZEqe9r/vKsyH0CPw5gyP/HQq42O1tqCGcYfKvH9lF2clpjVct5GrlVwxZ6dYNMHoz8FNRsAKn6WPpbZx7UXUd5JTCU36/jBsp/XJhhW5dfWuMsxEFzRxoXwpUEAe9Vdb9uEP3O/fR" "gIULdB8c7WIftSXrRUqcBZhYwiUSFxHJ8zEnNRqAfGBPkd5mHMp92EqRf1BzFRCX/aRQr+t6cax4WBCvbjdlIGXRKjQl7mjDxnwcKkNlzWd1CV55n3faMUC/6HkyUV/IHE5pcQsqisPI6ZQv6r6T4WNyuMOXBYA4y/yadeUTlZnrj4pI716IFLiS2LZ73ihdN6msUuTNxdpdjD9nc0T1mfA8Z3ey2VtV9UDeQhBnQdUAk475iMga2VgDMhsLGKE+" "1SrfvCN1W59jCb/xMqJLJi3idLspwp/rOUMcOZH9gZuvC5aNHRFoPxy0wCd4pLi7pchJu3ovTCH7YBI7zywolaE0/26ggt8tHJbLj219FXzUf3sZUv70Ay/5ek+egsi1qGH2gdnQtagEZi5PhCQAd+Tu7v08Gze26HDuLMwYqLFieq4upFmx2I3Ks2h7+lHGgIPQyIYq2H9wVJJXqc6X3fjsnc9cD7Hshff2nucVHoDiwzTDAiQ9AOOEQKAynEeR" "+zAWb1GzgkUO3ZwIud6/FRCM88bNp0EnsrTIwNAx9lKObKKrdOGE6fW+Qf62IGh2XHwQKoBsKkWAMzDVW463JwcR5qjSi/nnCSdthlRL7R7jeOBau4/XqpXjcM0oaH20nMMidTi55S0DulQTfD0A6bpwX6dD3sYVGFsoPX169NJ6H8UG0VyQezpdOQCe69wDg+jnGI4zZjdienvNrH346M2JtqgMMfCBBPvtD/iemu1nAQawgkK6ivxlySx18iaM" "TpvxCKY54cR0E7pOimvUHOGcdQ6u98Oq5tIjTfLx8Bt+w1ilktMAgA7ua+2hDIDjWO/C67fcwvcUIc+ys9BLqIgD/JtJG/dTydk1be1mlwtUPLsGo0JOTL/1rbwxsFkvtjhtBCifs5HAzf8LZCj1gOha7gaRl3wd7J0CtV2Tm+0VnXj3gLgnmEzrLJDlR8RRLT2S63B8PLBfph9pI8yw7d5YOqEwFHfwC6tUTsoqL20RVNNXushnP82WHio+yGS5" "YlCDDE2o3MtPS2UzEIB8vexhJMP46zama8or8xOPKFJbkS2w/eaHVACsxRW5LXrZcVABxJNoRfSuylpvFgB9qOQR8aI0XEmWNwBFV4KvslPafYhGJ3q8HOXmCJrN2yFxOGM+qwo/QKICle4EElSIHkFUw7uVm8R11LbbbE7qhOCiufX8uTFoo9DT/mIEM8xt2zVb6dRS5Hch3ZM4Cybew90S73mwaxkPV4VYE/OnE+RE13TqTeNf/iMCDXDiLMzz" "CS/pQ965foQEqFLaKArrgnLi0sh8u3di1M/yEigtSWyXlGz5PY+CyRWsSwzf4Mfqe6i8U9Iu0VBdNq9+wxTm//UEsFKwMbKHHQbhYBCWytobnawmJEtcvXHBFyvGVGTAWHdCZZX6zyEpXhphdKABQEOXQLct1EHaoj08vIW/vRTa+C2wS72NqToTKXnQRiAhZ/huBUdpAizh4oSxqa1eC52rU2lgdKPdOjKlaysoYMgu393zTXxyAWAVsZERP5xM" "xtu1rIfl1IERDOE63DDg3ry3WlwD8/HJidyj8rKsF5+dJRgDhQM81/G6UscOuBBRIfbMjAghpuc0p0vavwhIfNwj0XsY6joEVFpFtPZRfLSDn66JSFicydwlb2GiN2lK7qAQxUmdhXOa0co0t+gsvkE/uaMMmKV8bvKiUEwJ3rFd7XRTa4a0PZmMRRNG+Av9V/2YgSx59xsH7+PXBq4z8Ph86mbYAKbPeI4O4ctXzXHEwmMdM1uKfw3pU5fnI/iH" "+kwBjsqomXomjDlJx6b0n3V1UcOTlJz6v90ElzkSkmYg35lNcG8ROvhBU+VBKCb+PV+EWl1iYAUTrWJNND7TH+uPAoa3K3pVrGP16MjcnO9zWDWjCZCKPkj3xtCcO+D980Mf7RXbPj5qd7zT5LSKqk4l9SOjxaeDFVPd2H7Z2nNwk7rAs5jYUyNDxNCxAAHr9nUT4GdFg3n4Q7U02KXuvC6Ib8sNp5OEBXyj2t6UKZ5LU1x93cDvUc8/WSSn0nSl" "ivf+JzHywPt8t95o2RPgGGfCV3MGLDhMIjvQWLpJuFLBHHPC03e2yZaNT0Jk7BDgwZY13Zid2CRsJKqv7tyMZjDs4pO8tJepQ+ruLa4mOukBBtJ100uyXxCZsEVmkScYYR6OhZpfbuXlzWEziDtYJi03OtehQdmV5y0rZBwrElZG2PpW5Angpjlj+a8nQZvX", 1400 }, { 3, 2, { 1, 4, -1 }, "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", 1372 }, { 3, 2, { 0, 2, -1 }, "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" "Q3CNIhFz8p8FKdcIRAX7X/f6+rqFadLjk89aK/+z5pfv531LwJYhYGrU4w8lVjy8LyBRspBrdFKR4LseYFp9KOUvp4n7jKDW70pM+RkQeVA9fMaLMu8cx/r9Ku2f60RufqtzIwJrf9MfA/WuO+fnYa4StODAJe+RQyUhnchZ9+bNeV6cNTqTh5GRWkYsM9I27JMImQiuor5NWDHgg/ePwaZPU/1jWpDLvtd3RyP27dt0PtJ/ANEsRl0LT0GO254+" "/2FZXBURCPGWUsKqwwmtLcRntjxO/+VFECVeffVhf5KjjwxzkPxCuOROzDqMzw9RME+es/v1VDlS7QogRxdqiRYnUBXzL1CGDBR3DJpVQz9y9pfg5Tx4O0Grhu9HP0i4XRO9uSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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" "kPay/XwZ1jPg9gXuB/p+sPiXDAaWmEALLEgAAA==", 1388 }, { 4, 2, { 1, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4AAAAAUEASOb5FP/2yA5VrAYwFzzkRJsg+Mmnrsrglzj4dQQfqBLTUjrUBiAKE6yNrQZgsmUnvylAVb2Vlwpj1szMMitnblYRd3nZRUKl" "ia3DyTHeoN5KC33m1xwwli8RDtr/kUJ8dv8nOkJqBbryNXMgtTVxTsDS0EUSnCvWuPAAx6ABsgFzYeak07G1PhBFz658/e0wdosSKDeN14fMuidy5lrdDluKp5wCRjiaVfFVKxzZ/lUySzOI8jggolAPayqnFR+JCqfJAJl2VwaHM2KgcK+jZyZRNtfXgfqIv2Zp3CT6j20M7l/b5TPvs8THv4/Om/CUNsXtHd8CvZ+9h/x1w0rk49AYsoNkD8r4" "5NV8iHIk2U9HhO+byTheWCbOoOuiwTflP58BgNL/xdK7vdLut7me2e2uVaqbbdUGghPuj4BUKtFE6nxs5m1gaPGkHc4X899v/X1ej1u4NQmVj7bMu4qmCrhQX65cg5qxkNW5n2KUKsifXtLAvvr6WvOQ+4VYHVogJXcA4vIzSlDFeZ3wWAMFs4GpfSgixPQ6lh1YOQEnmQo/ld2pHSA1TACmYqcpIuQWuD1mxnAOoz8BAsQQsgIAIPJv3XifS3fL" "w3DA+KBKIGFua5ovK2LIObjCQAEM3cTvbXtASAUuGRCGhq9IHDi+NBk+zq/t4upZidk5ZA7d8QBYctZC59wspkqaLe01cHvUuDmu27ELRDA+GFF+Nu9tLHxSg33jO2xQcmjZIV2/Moc1mhQRl134XFvPASLmlMPkcbbyB9fYV9/F8FUAkRE7qWJof9HOf3LXsTXEZvsIZAsVjykrfib/0+RkWeFqfAE9JzjFEWZT1XGpSli3PA8RNsQ1uwjPg4KP" "/9yF2BQeqt6j4+uSryh43FMA21cYfrmO8UeFA5lDvNaSm9zsOn4qSwyk91PEx4k0EpwoeAdTlaVHLlxcE5Ws9XoLbYpLnBm5OUFCsVFO362hniSx2YIzYykRlGqBeavY6R0LdANIOvKgi5yLjfa40WiSEB73o+kzOtB1HNOhlkRoFvVYEdPup2mJ7oWEweGz4Vhp2A/oVf3ujwAAMp3zNed+ZmeBAzmQbwFZ6p/jWS5LTNvZoI1qt4l6COC61LFM" "knvWnS/m6JWGYpfW7I26C2BZ4NYyog0o/VRJaO3rX3tI5Gh0n6jUH/61lSNF4OEDzr9dJFfp3JazEIBz2Im+0/0WEpn3DnOyMfTMtToNoo41PgupmdbkKQ4QUDxk6nnfoYRZh8+VoZHZaPQbUKVY1uIwNBCE1Jn9iN2CeZQ0RwpEk84ZC6en0K4s8TIFXZi/gtfLnpwI08ZPF3yZbRw6se8n2oveyiIPJCeNp8s9eX4CjP5ZcooG6omCId5EQZAi" "/aMyDy23oUVV+lmr7yPUOnkSALNHKq5BpNrrU782kbfZ49fzA++OTG2y3rLYbr0xheEAYu2plAogiHh2hdBT08QLc8jpt/MP4lNEe3gHiGKp/0NlauTf7rkf3xFZCYDrLqNW/24holQnulgpPxP1Rz9lXOOqGmtXCdi25r9uLHHsDk7yvoediGqRUIgXGxMAAbpuTHbLkYc608b9X3VvbThHrkKN8rCwTrcUix6mLwV5Xp9J3VETcOhJYwFW/VuP" "oWY8smIpB5UopBM6BmJaP0Uk2IMtVbn0U+/b2e6pNk4Yh120cEoSU85Oxj6/ev6E+6eu24aRyYEk17w6I8/WHM/Ao6K+9H8FB0TMYsKo7eKem0uDKGLSGI1j3QdK7eq+frb+NZX3qCOgTFlS09mJ4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABH0AAAABQQBiRvkTPxkQO67JIc7LfPF7" "GsQ+BarMB0iKXYNskc6/FJlwbN63R7WtRwo+l8ItQl5o6zmkDSvI332irwA3MsvKuunlZxqdEsekORrEEONN28vvBJFLuc9Se6YZQUwnZ2LQNLMx5nRifGIg4/aSLdMAaAl8wJBINZuZufRA2TEBSACeloXWZduFdmX9eHoOaBCfFN20qxu0+8UmObfmsAQCAPHJf9y/ZUeKfaGesdqpfeteBjJoBvLZgY18FLdV00wYnwkCTaPlFr8Dr3QSNNBV" "MAAJn33dAzu5CznkEjFdgMF9nCX6PefUibdzEaFT8aitu0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACl1kzjqsOyZn/o49wbgHVAiOZDZfwypfqLcCm7bFvvrPu9l8PBB/1UO8pbC+iifNXnscTtJM2fIdhpg9NXWYKezX+WwZDHMTGVZzTILKuvW/s2y+ctkg9T0kAUpPHgWuhmmMBzktTrG++SK13IvQAn2tuXKBpiAhVq8NyHJcPZ1YrXDS+G2vyWxmuNAtx2J54wrHDUK8LKl0Qq4LCMxgPy" "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", 1400 }, { 4, 2, { 0, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABUAAAAAUEASOb6FP/s1wr/3MBxITXodsDlkpQ03D+7e6cAaF7M/2VBkPlYLSDPmmhDVV0vwOWQsmhUt56QvRNKELHXWdpEd6WrFwv1A9D9" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClq3zggGDEb8sSmGx958lGpw+mRhOLu5uuGsabS9IJUMcH5IYaYdsB7/3Xh/I8zkw/++aq22722XgIwtrBD7zZEsyv3Km6Mwl50uAF7VZBINDeEjpzrngoQkkICxVPFGnf0Qy3yNwNPjztl0qGzWeaDAiwlwPSpCwvCs8jVObJSj2HcNadfoQeDf4PR7ecxG/7dSLGOLez5vrF4c6CS7Qd" "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", 1400 }, { 4, 2, { 1, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATAAAAAUEAQ8b8FP/tLG2GWW3RLDpO/+yFgZ5TBjRhnAp1BZwPVxgcLqhv+XVh8bVj8CS9HXyB5WE4m4KrXeKKQudA0HMuTrE8p9DpQVm+" "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAClnFF7/cFC7KhwdDd7wKzmQDCg7sS0BYvuilEKXp1f0GIxQDM76sLKlF3Z2BfHXabf7+btUPrh8nX88g5Bvg4yKjniTQz4bs3J9htRKXqbUsNNWnqMvCeznbhtbwuZUKumJU8n/pkJZ/GCtJPyZNGY/nJuMOWRBv6C4l9YF8WmD9rFs7XqVHyyglXZH7Escp0JwzZZhnaLF0ErHzVMaoE4" "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", 1400 }, { 4, 2, { 2, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA4gAAAABQQBcxv8RD+VdERd1NWyFfmf/" "6PH8gLmfjdWH3JMpOj8+hkKEXdU2P/ISN6aRPPtYUoubojG1fdRnDZB57f47wZB9fiWypbKroZ56dxm23fKLJfmZeghpsYBXPJlvfCtn3sxZTt/fvpEaUB/uckIMANno5icfcbuodEbTwBsc0j+PX+kdoYhJNBHXw8jM/VEDf9b09FKVz3qYSS3mDCFxrXjzhDWCUoCgq2rAtGl+IOWBmIOwYgXXq4yVvOx+eBwAUAcbms3Zj/294D3+7EhxitFe" "pF9yEk//aASM9fMgA3wbeaqFmq4vfZ0lYS/y1TxalABNyNbuL6LHcQp+Wyw7Q9PdW8EezRmwaBEkC0Jd3ZaboFgHjTOeSDcaHijQTBN2w1dbmK8jaLppU8Y30Wc6YpPSCNOthL77HMtqMp5v2Z022J6/0obb8PKMCkPYwiS2DaS4mKuFB+p0ql18F1ynoKvZSBKNeMfOcX0+vOoQMiUO2vGr7xMSgoKuXjLzLry+eoGW5Y+jF61w68WT0bEEmzAw" "3dvTYFWDKRhOyMIlHmdCixpJJUb7PJGc9vhzAskeg0XJxy+kphLXBXMBlr6n7UEkUklgWWXLMKG3HeEs+lDiq5OU7yi20vSTyQW8b4alk0CcofevGmaTUgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyfeUYhCFsd3zmFldw72itO8/LztcmLMx+Nx9TI1xB9LSgg93RP0iHiBlBTXGiRdSGTtcgZpBroQdDMpepaAfXhWPDXMo1kVaWNEHPtCgq5472NOpoOPFODiJ4kjkiKk+nE1jNfiv8lIvZBKbnYaulI9RXf69nMv2srNOhomw9ISud/CfZZKjBzFpvi6KGxMAP4AKUYzf4ZjMPXY3ORm6U" "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", 1400 }, { 3, 2, { 1, 4, -1 }, "AAIAAAABQZoAU/8AABQt9eYt0/ZTXQPeVEd6QDts/NK+gQzot7zmMpfi1PeI507/8FO4jjKNbifsN2DiEL+JC9g1C25Mu0riWLJc7PCqMXaqR9SGBW0pi6G0SvYJWlnncMwNezgg8AD49hyWcFuo3+MsbSY5jw3jN+YNXEdxvdnz4NZXit31kSQAVx18IMaa3yDKE1EGCp4vssr/+JKth9l7EZeHqJD19x1+aijqtrnzqRlBhNj/FLWDvcffLyz9" "Vhuzoe6XLqRrFcqenSavinpfylc2D/f3rcehWY/Ftpxa88nixxux4U4pRRXdlNxGFH3AcRlmtjsWzFrGu5pD7eKz5wPFRXWQiPTcYGpwBQLP5RFO+7yFYkBvjVR2T8iMRiHo9jxXi5iPHReY/IhXhtnPsSkyA/dcNWpX/+fng5BZ1rzz2v7cJCbJMo14cPsOrT3N8k1NcIBTNoINNOkK6DsiGpSe0tpy0LPIApxNF+KVN7HeypAKeOR9MqUTB1KX" "NRtj6wutLn+40Mg9+iw5/bXAgZJYxSWDIsaOtshMFii9uB7IUEi7WCxb/2oBEiVNflMkmxAx6znWlmrUDc4u3s0SmUk6kD7lRoUNK7944sQ6hKkm6IDWm4FhqHGwqHzwwYQqPMul/YKAq56LRbt58/X3M/b/ZwB5E+7o50UMubWF01G9uu1dwbzYcfGT4eYgakRlv/emhgWts+OVxjgmGtN7n6Xo3UXHOlgWmGIVKuwKSTMDggnceS5+EylCrFo/" "GxSC4ogUV3NnuYxmO/82EJ6aO1WCLhg5tolp1QZH6OMWx4hHEcLrouC1NGtEkYDGB4hxsnsGQZuAw/sj31gPqUDTb28nNCtaP3l/zn2lrmNM3mIROTCR1kXCcAg30WNPTkifCd9I7YJQuifmIpFzA9PiBXL6tRlaGe7TTz2UCBsnpLMOD3yPJbfN6boUudhQbboqibeBrjb//fBlDyzw5eL4ESVceJoojIdlQGqFbY4nq6fQ1FkUWDldrrrr2j3r" "f5A7Zxq7LSZt2ZpbC8VJtBvNwxbTyL8uoLY5AfJ6kNPlOkqXPK8UB+7WxW42KD73aQWKzz8MoW4x2ONDH5RRIlQAivRqvvwiEIeHLBIPyg8aeAswp/rDMeGIU8L010U4EWjRmPSb6LJiil6mnenxxKCj0dPdUfnV9Kpc9ELxQgBDCEBpA9ZYCwPO1BP9f4Y6/F+XqyfnKKoJqgIu0GirmqShVhYWuYDuHDKW3pf+THtUgL8x+eIBHYNySF3wcAob" "37rEAqv7OaMhbfKe6FQgoDqOLTLGgXQPRd6u740fBg6FN1O6QTqyHREGAgnrDfmHuWQoSo65A0aqgVZxE03NbRaR7CDjo4KswXAuHIvvAsi7gQ76pSDKGVwNWG5y+QyZdWU8zhngFo4+PqgzsQtpPMLTyBajvnoNUQmlquhrtX4RdqyLGVkJHSQxyaakG3bgakxs/zAzWC3Eo3nXoL4j/FlttZCsP3RptkjHZR19KrUIdy/gW5ktqGzIJliaDY9D" "riAIUOAAruwCblpJvvxrp8x5zz+I3hdVuVZ6UYWsVcccyPr80akpMFRwk1VW8QT+EwxWERq0YABg4L84bqgHoGOjkGxRM1lnagCElMB4JfwcFK3lsA0AB+XT4GZoNpiU4Bv7Yz5dPgfOjRdsOvPmZrVRph6AQLcV+DCADZCpv/yOl4ZsDq1VAWtQJ6jDNTBfNmmSTw2p6j0vNO1JP30B2mV6MBZUs9yKul13tbFI/Dpuw5qHXJAAAAAHAAAAAUEA" "RqaAFP/FXQfHcSn8YQd+CksxXma5atyrcVwGftlbi79GeHd0ocnGN2/HxVetgWc5C97UJRSr3MOeam9KNh9rOq3KM+A30dwAWRCpy4p1WhhSB+4Omf0vaqRHDe69V3vGpJCNSDu7k9FFYQ2Q5eIet5tCPGqewq5PdhH3n7baNdB92rwk0pfWhnoM45pwDCHRc0GIJS3VI4gDIveQmaIAV9hC9u5Yhvs7LOal7F9BOwY7QHIggmEWJLQAweV9cCmz" "57PPAboAJid+7Ra11Sj3XXFKb0oRdzpnj2ydC+E/Aohc9ivIq5VFux25yJKDmQ97gHOqQJKO675Qn1QTkB69Bv3A0R3tXffAwmSYSomPzR6GnLRDSZVfcrx1/V4ip9AJnbiDKsCS/0LDB4yJQsPlUOdZ/6ICywPr3s8RWTi2m3M0XBDytAbuh56RwBb9KovlOPdUBqlU+Y1QjN+TJBuB7k+3s/wtzdKsYbz/FI+qaR8djQgK2QMqshZDhRejjDoN" "AORpP2rY1Zniq/lJWlbNzAEKDjggE2WgW91WkkJY0klbGYscbbQtX/v4EPeRX3P1IvCKo7nNDnX4CK03evK9nq/obGpnvYpb+T8pwTIdwK45zIpzs5FHvey0QjmkDdxOq2Xh/x+sACcPZfuF0CD/h+B6/dOE/Y8ikHMSvIte8gMS2MBPIuuwjrJNL+qOpXkHnD9UUr/bdMQ40bBvBB+AuC++/4U18ySUFzumRjuMsD8Fr95nucT5O8bVNS4J1vrS" "Ogw05zdr5Gq4VUpjpLkt78vAS+8uMUHhMBoqZLU3SAaOPK3S1/li533tl6kuBRWRU2ZYJN2ejjpIBAXfjUhvIaA1506tEbBJGRHto2sYW9BH8Z3WyNUBkdA4L7FYFylkqu4Iwh7CxeElbZUzKHZ2dNwQ4Pt2e00ITjOQZhS70xAwKAUL1tIjYXHTtzOUjP/KPqrOw+Q396BICZ/cuJyDYe1o0rx4mD2/UZrIHaD4zWZDpMEeEr5V8A5/ArUjkYOb" "IeUQSi9dKydW3qMVz6iTIxjXCaCv7OuyB0K+dTj9mYNOPWFXyRuKRHUFn8OAm3FgFpFgn6v+jtbr0rFVm9xKauplxmcvbp7KlczQobynh5vrNFzZPmayxEF4JE/D0QuieDXpsgGAOOOdvmmnkRnQzUrw/U40FhD1eiI6KIyoz9D767biLMDewRZu+2aUbXGc1Daro279NvbNBxhm9VUXpsnj2ppzvupRkjCNVT6bLuMlOTjw00N2Ap5ejqzIyaV3" "IS0bHydy0Jp2qe47WMbA5lutbuiydQ8q9z8D5VAK9xTGs78XhwbDV9V8WMsG65f57aasmk1LpIBHrXgp7VR4edOXlfNJbuW+Fn6InWKgNXSADBszS20OpopVM64Fub6C8QwIQen5EgjH9UIy6bb2sITTpmRCE7zNs/JLBFCJBga2UetQhiUnUocchRS8xALvxCIarSFVmmtygZDjmKjIt+eJQWx3DlITkcASX+3gSUUO15oReYPcxzHgVxCtFzxL" "X1MRH80CwgjLD3xY2clSw1Kz2ewP0AANDUy56C/tGosHt0qk0ww3q1NVxNr4Lfru7lSOfYHFZ9uEKPxOz1zEcz5PWi1c83HJnv+ZdSgShzJ0k19PYYq9gDIs/iJ9GjB6PPNFZQxdue7ulbLswYuvn/6a8VQGn54iXnhvfAGp00TGCJitGYc832TSP8uiyNU36xY7WZY7zH4sjMF1lxyQfrMzR8LynEcMwAAAAAAAAAACWwAAAAFBAF1mgBM/0D0g" "X2rVNM5vscUZchw91nyK6ruW34ZeqMK2bt0cLyyKDNm96VGORWVyA+xn4pYxAtrBo+zRDlTmelnaUdbC0NDjLhGHeuchsgiZsgjlFPn2Cv4BE87jBp0BvKPe1/rrbGA5ccEHCk2jUa6pSUSXhPMVCfE9uz2IwsH3sIdosL4vuRQU3uuVI+E4P4I9rui30acKO802ZojWIj3D7VVq99JQ2XkRhmLeJ1jiKTKJQFsaw3IXzJqq8gdGmA+Qlp6xG553" "RMb/5DFRlkwXkjAxs8HFglNtCh+AUcNDp64BCU2yLUZ5HAgoakqIBNIqeDz8Nc4SZVqxG+bEafZPyvIYp7Cew7+u3YSfF3uuAWCfA9K7fzPM2u7iflOQvLKwRI5Fz/0srZFRDYaIoS9EGesOsd32TBODttK/69O7VZ243tt8Y6fmuaj6mpEbJDfAQF1VaOEcdqH/tYRxODHo7+Lgih+rlJBSUdf3fazD5WXE7lem/ohpjlhaJsV0RKHnJtSdx3QY" "BrPZPaNPUrLBSYDv3fJ+PcO89NcNd3B3y5N90r6QHj47vUm/HsQTfW7LJP+6N7egVrFIZ2aN/j2yIq2kTLrpLCHADFa4cF0hER9y/vR7mXA7i41xu58BL7IcnngdRcOH3RxtRbhvB+GFAXcg3ltGSzrpFbiJ/Dwja51uk9ygbgP7pTmOHmcIovmhdM8R4LZiGwS2QRVbYdQ7/sWUDobZUE2ScVx8SiMXhcgdboAQHVjwjkfJ8ooirY3NjzTG2aDn" "xGQbIcQUoZLIsjcvUVewLqCnjcOwZTLL/Ze9TjuLqmbsI1X2sjvCYx/27QHGepGA48/mdRtavBKCAAQUyNuuREqaUrYp/bscqidnAXp10UI0vt9Q0t5pQTlFbv9NcnBoQ+z7u1kiw/K7q9Rt21JNLMY6ITjD9X0/lHheUX2GqQglXZzbFLCocIj2VPttAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAjigAAAA9xk2ZUlrBk30QChsjeSLOhM4f" "Utv7SrQPbU+XUfrx8La0JJkpQBvbFmZmNWxMLN/pc0O/D8oyT83NvQyJ3Xchmmc2BEyEY6ou2L4hvp0BTsKuormuAY+EPsBq6JbFGPi2Fm0KsonDKdE952y1gO9udtE3ehiN5A32A2lVNyqY/uOQiRVVILDRVLPBOa08k7x4FMbtLrgjg4LSOSTZoyKYes56RMI/+yNG7UFBME6XzpMFvnuGmxZAxRZ+i7DL0u7WZO4sOosSNtyZjAZFagTowvgm" "O4r3JCO2OzZ+j+ZNksXaX/Nt8nImm+rVWCvROZzYfLs6OFWnaX1LGB86Uborl4L5PoaTPY7Ug7i6jnXLkRyrnu7VSilNPYetj/5hDJHuVGTrxB4MaDuIds98ClKI7DLc2EMD6WM/fQIlx/J6aBURL6a+zNSvJXia7n2CMKAmjuGAjZbaLyctCDDxRVFyOxwonEhIbfnWKDA0kNCfH3YJOweV22/nK3WJMOQhbm0hHFAzxMSwO6Y3gQUX6M37BLYp" "kjCWSv9uuTzrOAAdUjOBNC+y0HD/QQ4cWmy8gwWS7Jng4LH9tBMCn9CRQJxXicU15BLAlBT3gasFZzU8v1d7HZo0S93/B2IPhsVPUpvCCLlw/7mAEuFLAoHRaaVkhJ2wSu0AT2l5wxE8QOphQQYKLoNEY9Xuj32jrHcb0QbgndzVrSX7vm2cLMv9+a7BwXiwNPco4a96eOVc4q5RvJk0a3Jojdmd5Tpl/R+KHvEfdZXPoktjylJv3hZnkcrnjniW" "2yhHiEqVZyUz8M2DMtlBqHIs4mioejGpnd5ijQvH6Ja/fkzEFT2Q7OnqDV0pupG4X6HtWBIsaWJGyPBEDWjj1zUFaPq2BDizkWbR8ZiQScEHUfswT+HoytaaCM80i6Kz2m95V7b5a3sYw+grfC0roeDuYPzrM+v+2bdfJFdtKEEyJdwKifDenEl78yNGSMfAHR7yvx1PWNlZrW5jCgG6Dlg341f1B6OrQJZmJedXEpGnSrZuZSyzR7GijvOi96D9" "WBaV7hySEYkKI08d/Xl9B02LOPFcHZLJYo8wqBqE8Rdv6N/aE+vcqHNOKkm34LM3pe6PwOdY5M9+eDCMQuuSFKejk92bx8KruRz6gjuMhswZVoM9NHEVyNC1wXFkWklUtwWOQMYP2lNyGjaiAPhpMC0+89kf8Qmph3Bn+RotOyHGR5N2uZTJH+IoIylY4U0VSbP2GR8Vi3evUKqlE/OUKicux/DC8tx2YJwYZWi08fKBo3CxaQSrJsQgwvugjHog" "bv+GoaZZBupqgKb1nhv/jMSZn4eGirMLau3Xl0WLCXQOrE/AvJF/MzZWXvykGGmKVL5kXwcoqQ4q5H/9CXB2rqWMJSYAIvegOY8P9oHsYTm7G6eoety07de0Wu5zxm8T2jC+gkpBS48cnm88si6IgotSs2Pbaya1SNm+/Ycg2TbVwU91T2zprIzHpOLVAonXBqjSmK1B0C6A9ZdF+GlUnMcpZSORAnYZs7vC0+ANQ080BiJU74sOLtS3NlL4KEDl" "F7GBCcntpB3+q+EmCIFnYdxVCjOR8uTttjWcO65BZlpqt6s3SBdbGcPHHAzjoxVn1M50UVRtszmPX68kQIZ9aNCWRf3glifBlWxSoTRdD1BzmU0VGTfvaY7VPaD0WbDx3W7kT0qvUGCG7Wbp878esvnbHsQT6QwfzPRcGx1pzXbA4xqd41LKR1OyrNOsKB5vx7GIYXNQQxl3703NLkgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACyfeUYhCFsd3zmFldw72itO8/LztcmLMx+Nx9TI1xB9LSgg93RP0iHiBlBTXGiRdSGTtcgZpBroQdDMpepaAfXhWPDXMo1kVaWNEHPtCgq5472NOpoOPFODiJ4kjkiKk+nE1jNfiv8lIvZBKbnYaulI9RXf69nMv2srNOhomw9ISud/CfZZKjBzFpvi6KGxMAP4AKUYzf4ZjMPXY3ORm6U" "uLBXqz8k+PIH2pDzoalzJ2JaQ+WKdrvpaTOWxAfGkg7Poa10tKSoTmBLvMFeO9EpgqGqjQsuiANWNFv+ejD1jGxScNhakIQphbHKxxyC0YML09JMCzgJtZ2Tvg2NhFmU9rGKX+JuJE/4mbpm5uVJRJJevko5y2vlsqDDOCM2L3UA4gwme4dT7ou54nIyC6wDNc9q8vBDcrsqW7HI+uXfXYqGlLIDhtfwoRcTNgqKF7ylfFXoVdlePQfU7FAhaO4i" "V6LPvLs935zef042k77bHaTZLqodeP1WSiutgvq9xysecgNMAbCTaUofr2rD3uBIxKAgJQJ+Y27SqkllqhJT0EiZhbzBOs4gElOszXUwyhg0f6clvuZcyRQ1CZw37oE8IXV5wQDSRYCZpzcrA7HlQI0ZewWfLuxDCvE8XsEirRKdWoPi5o/UxSyznsCbpo6414+qM1VirsCQuy5uxxSuXoD/6GMOWBUkf/ol31L9XCQ+bKghWDkeWJWmGwAlWNH3" "fegiV+d3BBPedlmweT35XKNRwxzAxhFEOFJLWV17RxNVZR2OCfq3/aTpL99MHPrbtRxRvPelkU150TITpkhDXF0XtD9kcdHnVS8ZR5yLP6lS+vf9kPJ6ILmQzBRz6DccHuh3hq+oK9SsmOQzp4OkoWTzJSLlN7Mo+iEylv1f9TfVzt0hGsBjjtEgz5fCKpa9PbCuqe7hQ9SnD2Ol+L5Br1a5iW5X79iBoAnwXZI8dCCBo6+/yHU1uGD+BC6j6La7" "co92lRw2hgKcVQsugP8QOj25foqcf2bFb6QbMNW86yQ/GPHCKB4VepAPN93Dzs3vvkeA69tam32pvJEXKj1fTlLwey46E1/VFL/oyc5qKX479V8gjIPzjMi7ewLbo+MPzkkdf48DGKYbU9NfPloS3UrEGTjcd4Q83WhDpr4q8hbLJNaDGBTRVlx7FeS+RdAq3+ngUo2/11bRDirgyWjJuXj1MkYvVkkvBTHNn2bQnTPp8mdw1jK/oQHSpV/sU1L0" "T4bcwU+eiWWqiE947olsP7M+VtPYuKdd/rNnNPLKh/6JZFY03KaExAqUiN2Xu4bh1kbTluqV7V/KvDAYwx8YtkQjxcQUbNhC5RWVBrsMh9rlicLXujbGeAIL8OiQMdBauyh7Hf7tKn0AeKalIbcDggBt9OVMpKmfJZYrdAAK/JEN4jQwKoikh8/OmHtT9zmbMzHSCdNvAtE=", 1336 }, { 3, 2, { 2, 4, -1 }, "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", 1352 }, { 3, 2, { 0, 4, -1 }, "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", 1336 }, { 3, 2, { 1, 4, -1 }, "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", 1352 }, { 3, 2, { 2, 4, -1 }, "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", 1352 }, { 4, 4, { 3, 5, 6, 7, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABVAAAAAUEArRpART/mqkEQo6EgjAqqLwnqBSKk3Y71DBRuzH4ow+ZQDC45WDSs9A6YSwq+3VhSW2Mh93BjpwqdQAUc2DJu9XtyQIXEE/5z" "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", 1400 }, { 3, 2, { 1, 4, -1 }, "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", 1340 }, { 3, 2, { 2, 4, -1 }, "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", 1392 }, { 4, 2, { 0, 5, -1 }, "AAAAAAABQZqURD80WOPy3yZp3fG6ij0IPRrVahpk1xlwDdyW0tmfeyUYVWlMHYCsgcHWEWraevgJcG9HhUPBblWiD7j9Zyz/JFnIWFsa65/xNcX0ePr+2zjcdg6sUScYJYeOlMO4bWEr3fUH3RPAWiYarikOqHvXK+ypV5ParWospKuOX+Bugs6Lb1EDo/UK/9C71KpB1N8+zpDvv/ovplZKAaz5wi+5QHKN9rWP+NJfUSPOKYNweGMblnYxDh61" "eeMSHfgurKxq8CHilgzzDPyOHBQdviHVr/vMmY+Hwx7oa60KCTBYxffmPKm5WyJHnEs9T8o4+fXd5mJPn3QEJEuRqgkDNY+FtNEMPSJH9/UpXb7CGXSOoc94oenIcrYaYnh8iYRgj745V7VdYE7GFu5ME8KlIgYfXhYA1dceOF1LMqcw0AwPgv3/KuGbuMrd6bXdwhniPxJRL5uki6bhzJrPDB97PpJmgwSAdsrqXOkOlFp06a2gyEvRT3EDL5f1" "kKsNh4vzS/lueZR7V7Md+ckJJaiq8nixQ9kgdsgRdpIjlGFlynCmrvGIjqAet/YQu6VDTNNNYDY5SFtLyC8PopTutDDhLu4vbl+G2Mssy0idCUKBYNA2qJQZT5tWdBXq1Fa+9Ve3dCVAQZgjlorrI1xIzBueltXoj1bixxcORwpx2n9P4e1f2wGRRmx1ivaeH8GL6nDaKT1CFaP4aZ83cZQnBdaPHOTbMNJX+NJyW2Z/sI2j0/ZOi5/kHvO6vBli" "NH31RCNcRSc7LIhATXz+2HtQgFLS8sEb5uG0AFZ2ZQnAjbxC9Ig5v1z0cUSvQDZlck1graDf94eYnYhMSYSGDtWT8D99x8wZWCUcyhgfGhZwjZqmzq97IYYsO0gIy6KrUs+oyjv3DLG5l+iaOcqOHd5P7XinWEj4zqQHjUi1rPT4RM1K9GyUJ2tyE1eoM8tNKV/tQ/8SgtHHliMtMJcTQFEtuNjk8734vDO8NkJw9FiCZ2JSt6UhJw0USPv1YxBw" "fWgba0mgTTS1D/hyEzJCNEFeYjTxOogbuZkdBotKechDKr714sBRtw6E+Iy9LabTeBDJ1UL4GGDyD9SZ/aP5yKDt8KD1NoEqiLRng4m+1ZgTB1K+JSbGwQOIyTsIFLFGaXHq21Hk0wJIBins5a5bJ41loi/h7BhTdinnB42S0Wn0ZzQuGvKKzvFdakrKJShF/UtNs4zcipQNt2Da8nzBOtZ4bOfjxSL4qTTBXA661D/qs7md5cj8VQM4hkfg8F3A" "VGU6zSYbsKJ9vYk0sLpit3/i4EXPWIXAtJd3dDRbs4dfqRl3QGOLI1Z7xBd/is5HNMP/fsd4yyjvIoqKjJRvXLWwqPc6JjIkCWyXBs3ROrpuFzF3HMIUcKY2J2McsP452fRpVkcK7onTnJPyNu9O6uO5fqBc63U17fxKHQL6iStVTYQx/rl/EjaXL+ei2HgTwkIyrSHDxDPM1idAab9gsoQB+U65ugTi6lYcUTGWZQfyuwMO2xcGDElSLoQYLjto" "zQZEvgaE8MvBV9QVdqK6y4zl4q6HyzUT4RncGkwu/sMmwipiZ2ybx3JCd14PkdC1fjZ6mVIxtJCJHP9SJ4QyZp1CyQkguHahgrVyp7pond9ISlpG8ES01Ihk22PrDWqdlmwrj7utfuki5S0PQpyor2QPxvkpoQsW6lnFDT9mp922lB+0PS/Le6k27jdpAc+UQtWHMrTRZvbtXYQ+rCSAZ7sMDhnT7NdarxJ66EhErhMkQNZ+DQBJUURTsINk+6pJ" "Pt3+CBAh4xuFRVzs+ueT+y7XpbrAOYpM9VtK720Vv5+cecUmEp8U5UKq+DoksGvxKresWGRVWpoFQZlcYYLdREp8UGzvpHo4cjPDiu00ioEaM7Zny65B7DJOTIG62+DHqSRQGWl8+WXf+1NBN6WwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABLAAAAAUEAwBqUTP/gHaN416PHtkzSzgNVdJFthdclGyp+wATvorWi0L9hAQJvK4xwHoOBZykhYpjxADMEu3nSQOt/tnpv2H5bX3OgtbKT" "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" "yBtnsApYfMjM1DIO+B5mo+F1SZ8kE7/Hh1IZ5X6u7E7Qk93K7El3/J7mlF3JMhD6wmkhZORhutTcgihuoL9daKlXU10MIpiiqxQL3SnJvZhwt4CV47Db/WqUls4Y9On8zPXZtRwc0yLpTDDStbxE1TAxG+oSZaqQahr8PFllpjPewOdmgnPxBamh3r6DUMGEeBZAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQzXc01BCncab5pSi8ytZUnPip7SYnTe2Zu1k5lF0EHU1GfxbRA3Eo0WTSHkn6YHr0HgaY05c72gHu53lYqHY0SejcxNNM0NJHj+3jch+1kLeJcmxaBOHBzsO/hWuDwaRyFX4YvJIYQJZ85FRzjWIcDV/4lUtlk0J8hTr236gQbczK5q+OMZnhDsEyGOfAZNNWGk94FjUpBeD34HO17o+h" "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", 1400 }, { 3, 2, { 0, 4, -1 }, "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", 1396 }, { 3, 2, { 0, 2, -1 }, "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" "TB0ejySAR885haUjSSnsfyp3DAMBG3RAiajxMA==", 1388 }, { 3, 2, { 0, 4, -1 }, "AAAAAAABQZrMRT+/mWkmbOspju+N/yhWvnKC2Q7Ppjf4g4zf1HQplXWMXNQUmtTr7uKrr3KMvsgh1sQsMJhTw2mawlqqbutFhBfYd0vTWfm6L9j5h1gTWOSlIXVsa4n4TozpHkivn6VBXqQ8JjeqtpE6kOMgBd69rkzoXX4C63Z+5dsnAhgYLUKLsCjYZHlfhqRzIJeylG8uz9wToeYaaOZLe/Ib9C7qxY5/2x3fMhpvVhZ5VNI6RsAs+LAjCTXM" "DQYfcbPsmt5091EBdwvByQea2VTexSOww0TQ1z7Fkj+dvmoc/8jcBymc9Rls4b9zTNKVTfaBu2pwwq3+84k3k01EpnONek8Ep3T1XLA/FywsZkJ+0NcE+501DF7A1n2EeAgXbJHaXN2UetM5CAQu8XdnXzQuhX9syjmUZOU68rpMrisPoCcD1oKlcv9AfzYepFhbtF9BIfeqgWl0cegQbGyo3zRstCL9Kgx0W34YYGJ8suGRfyEFrwG9PbRAuXF8" "w6mPPHRAcnh9JFMs/tqx8005AU01IztfgQ2CGO9kDP7U5ihCw8RACNqatsUIpBo4MFjerQhVkyANC8HZrvbSp9qmyb38s1wdOQB+qOezlen9C1ckOf5JwxR0PN+tTtbepEztNl9xTX9G4pxq9+yGst6DktOjSQzKUXuh/LwgQWUMXv2uZKKVCEZTUqF8GG9flCBozaxP3iTYVmeEeWwbpYsRu/1+BcoDrvLBCbgbjsqDoQpvDTT+lPYqGYYRffV4" "bdG2V4HQRFnjBdSGUVSZbjGQldqnVD76rZ4953TnUwn1FC83RYFx0jOuLCFop9tToM4SO7XO5ujGCWpe45zeHrzUGiSm4OYPBRXi/0LygqbI7tYoFvtgRGg25KCMWftzW39xmb91o/qxQq7BGHE+EF1ymzdD1HpkfWNQ6tpvmZng8pwRPYVxufW+vskHXqTgtsZlYrIjdRVTy6y5dl+4iXSBtXVIA5gHQFk9gRvHG1IovJqPFdtkh2zHZ6z+AzaJ" "PHeWqkLSnzYm/Tbkb8ojtlzrPOIbxESm2kkM7fQ3r5e/348+mvNlYOhl+y0UdFqyHVcjdCaAyVoSsb5EitWIOPBcCkNOesgTICP/U8XNwUl4j3BBp1HHBef9vYjMORQ7IrT90z+L1Ftg2XQG7Qbx8RlH2LumFUHhdZZxyLsjhEbe6ulP09kF4rJFP6M4w7X3buZs6E2VtazqQvyhXFZL0nTZpk4OwU9E9ZlzMzPBBI26T6eQSoVDnoFKGcif+1rd" "EtiWJCfDBu5edG5Wuhe2/yoBmRByFO4nxVri9mlFLigY2eWM9T1f6ZFs1tl1yRfpSs6xH07602kpVcSorNsTzlv5PghzfBH5Ca+h0UcLz0Fy2tXtoMgZkVTA5zjLDRBHJJlrPxFVj3Bo1vElA59AbcdhZlPa328zbE9whLcqvvB9yOVo5LeEPw+t8yYplVy1oU/J8uBToFeMQVAZ8/wMPHdkOriBQMCGfeJifpehbVPzTk2UhQj0JdnKM75Tsf1Q" "83NnBeSNnSC7n+UqZ9+BPK0aqpDKerngdmWv4ggDsACqzY2puekohq1WD+6FklEYpiSSODByYhBv26hNiyIzezZ9vhhv2k7+Cg7Kz7UFzioJSvXpYmCk9iLmiozfXHCGvAXM3jiwwWisem9kn6VcmsxjvEoAmLohZ7dywVMhFjotqEnnva07aN2AqfgGZuddK5ylSdTB83H7pAwzdZLcvMsTaUuT48K73SDPWykkHLJHHJ7AMO+5bAEavLro0NP4" "sKFmsS2jrIIxvIF4cCxmP0icX5AAKwAAAAFBAI+azEIP12NLxamwVpffV8nkKw6aBDcMPWrTyG/qArTxvZ4NDd/opjIcGcxloGHkvy8cp/ftchICfvyLPykk7518a+91XSneRZ9KXwR0ls6DbrBohjblEqk/Xdaqil+0kpKlazc564RX8LdWf/tAJUxksoR+dQqIB1FQXs+eW07zG9P+7VbG7+CAFplXzAEe1E8cM04S/n9jLPUwyYR4laUdXtss" "9iVedE/9d9yovCQvhePS+i9NoSzidsxCBY0QpUf1V60K/z8OyeWSKQ4NyUnSz+CMfFLXOHbrUOwVlsGjrMyoNRDdk7tKUdyrCDPGQwAEaTTm4JFaJv03AJVE2QstmMTARW5CqmPV0GdS6rnTBKSwD0+WtAZZ3cOz+thZ5YI3Q/6XbXxA4FQHlRibMzImBKLNSxo30MCYIUgiLfCUayuFDxTo4o+UzPBTyqZgYbKkhiwZu5PaFvo+2UfcwF2rPoxL" "XNGJ0uCMuy4sTKur8ffxaN6SCmzT51NOgwDbR472kAABK9ldZ6yRWd5M5kJhXgudEnAIAHhtaF8L5WDcIKNRgls/412+dSXNYHOOkktGEXMTX208F1ob4tHsRCEk08Ev/mpjdLj2DLQ+SQnUh31/7+gj3icrvI8YlKZQZj/YWxK1KGTOLG2kVOiFrk2IS9SXbQwPWWVSfzhYrd1x46ePPdZOceHTpQsVEIWl+elfZUfEOXWojK8i1+c8sLxkGW0H" "xX7/t3r9jXi5ksw6gAazX0OXEq5YzuF5KWlMRxR/GomxNAeL0ZkHO5Klc2POytCr9UsLunrWeWkwCPIBGA4UWrUCef0F8D/77tYWxI02kJzlehnLl4ACDh6/y7jV7elXAOTcDe8kkrQbX5I4D/k0wTpOzXlwo9OPxQnxwgjP48pSaKxgk8rRg7wCopNPGMmufRK66Pr4/eblRQepXS1IJugm/FHAVAZM/+ib8p5xcf+Q3/lrGPbdkzhMdLw5ePYp" "f7SU39lQwLizzOOPQdvDK7YOIm/kyNgeBNdxelACaMKUFBm9/mkcPwajryZzNq6RrvkWaoun1QoW5P5aGfin/iqAG9Yowpo+i5vQzbPpZdKrBoO/FOhQJzvGSvJob1lxacaK2+yyEZvM1eLhjuiTMSqXr86L5OB/3lEKK5mbHXG9nv7VhAV6QV/qJat65zpRYwAnlRutMCkyS9oD3f30hDj1S2eAjv/Ef8yXLFACZIVm/wl4WfvymydD7kqoRs4U" "SDBRVqnkcePlCd48dYvNsm32ciGFn3FgMX8mduXjDCsrkzvN0sSZHTfF4crJ40v8BasE6nd9Vuc0SEJ7k70qbiH8BgrdpC+swRfMJ+H+UJMgnttdEh/6A0afbpD4qJtQtdglqNsDNweZIUsKBtIVOPlDVClWYYakMQp6+9/BER8kU0laPQVAOa5tvl7fEY6GUbTOWdfov98TEp2Jflwn6EhXPlPjlj7oB1G+Kd+9KVlbYXLEMzw6Un0RNCmdbd6u" "ZrmE1lebExRykdu/ClzCJrmyC87s7E1cn+UNgBuRqBE8r2vuWUb/jkgYg8PotmSMsbVj9CVn8cUUzZo0bG8LdDzj0pF7AXSAZEWBidURGFYIYYQUHkzvMTNMc/fkZ7ExccGztxe1+5/vb6qOYQ/PSVMpxiHEB8MCGz/9P6mng7IE5eHmHi1t0HmL/YYNA1uE8n0Y68hSnwhE4AAR1KffmXKzageZwSESOpocZY8w/9AGnJ4alRIEAiQL3fFIAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHiAAAAAUEARgazEOP/46l2zkF+SZHCu/vI5EfS6WLrnW//UtUuWYcD0gs4a3If5GwcNBCHwIk+c+rsXsG89T2dHfn6DNjNhDl7gzyAps7UppOxdOWrB7aPKlI4QZJ7YJn9jiw2pP9Un/hsgONjxkSC5g9jAwW2Vkgvy5NRLg9eIdyzzy6+KoJj9wbhvw8w1OM6MBJxGQqz" "GZumFEIwkJ5mxxxnDip95Mm2sFDoGiCXgcupuHdGkHsU1wC4L2lg3DvD35Gcg2dfeUdF6T/VJpBMEZwqTjGplByYR2TSpVUzpARhxil5qv5d3/ke7OvNg/GKzptGAV5BE/Ta4K1uWrbL1p1a3HLxv2Xd1HNRnQYL/JqBld3Z4AX2Joa+WWLR/eqp6T1DmbO9woFsp5tUIAfxeZNZ5+sgRbSK4uoJLUX2PuqlD7UCwIxUZMPmFedszelya67a0gfP" "2O1QLSLd43nf/naTpxqvif/esR3jbApoaT1mx6aeFPif09rmjT2R0e0x08KeK24+aa165xuQzL/MdJvTTSbqWnoXgznDBCAODZ9w3cZExwbMJqDNv1argFXqhsEmVqgm2tW6LjTsv25nZX6eC/jkvG5e1XDZXfs5CPlmJvKgrNF4ie2WdgVqfUmML8qRlRzVkDK7rT62+N8E1JyhwJqgaIHWMBH4mddm+yElK6YxAEbR456SnOwGUw5HTUUkxmJP" "jVrlUiF0BQm7Fsf486KPij1z5nWPAOb/+vOcJ09/8wI0gE43IGug/AAiqVLKiEWc6wp7BUK4qWFlqniVOgy6sxCi+7WTjwUEJrR/ioO75k/vjaws3pg2QRSjrIHnoIqLyFz3oNeeZXJqIqdlmL1CtSMZSFzTVgTDB5rEL3eMgXtTDogG8axxwnNdTfPDpTJGHNTamM5yl8bODS2Vpdiujk9IhGiajVfwq+OKdVAcQF/wq3wGmENSKaSPh84K2G6u" "GEbC56KZErZG3N0THvtsfVYX6R7OXzyz+lwSdHjZxoMVqx+eZZ9K4C38ss1H468uYT3C7c1ArIhnHitfXUcfKYKdB1+3hZgizfIXjGYStMEj2QiWsqk+OGKAf7piaJbbXXUlYNT0yQaPUhUgK7ZczBuM7KCFxWQ7G2NYV1cTevUpXIHuTK7iqPZocmSnDFROMO3TEHEAeRYnhAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAR68AAAA9xk13VTDrNgHDYitAi1obLGyL9BKJTEpywYY6pwNetUqniBZ9FZRnh8Ynk4qS/rGiZnulIM8pNE3TUvBZYYi6HSEN1IArYkusVQ+PuTIYn73+BUnD1zNzuRMDU/7uYirFW0zFcpvY9R2WjDjHsPB7ASSEkorzZ7SCSVS0+8ci" "BW+yZ/mFdjC4uhA/OSvMXNrszBCY+di4Tt73vAsApO5y1jwvkiXUGOiB0M0QcEsjbWklGu1AMiCz7Bi+ESM76/PkZtJefjZjdax8P9mmQEIDV7WxpkEbc3pHVrcwB1oeRE9+Xa70Hhj2RtQ3kAHG1ReYCKj1q0egMvSJUro51S+Mk24WmMl2u8MgNLsII/2L3TmmD4SEMov/j684vyK55ElE/CCKvDbTbcfA9WUjujjvvaiFoclpNoCsyVXnYOp7" "JAjvz4bcSENuGV71qPogzl92dtsNJSeZzG2I0jGzk0vrbbNVcV7e2vpYMGXIngAk+fgbdcSLjD4OH9NpKcwFmhnj5YCXLEfmRFBZ0U3r5WKK144HioVaxQ7o/fIGTdtkotv4NLWrt+Yg3ET8IEAoH6PllxIJMEG9oHVfXLA7cif6RiuwGyP5pi2hEp+aoDb5wZuG0Gl0vOQTi7UqHpq0r0W2n+ESu2tX7M2qFoEq+U+3ir9EuTGeu7B1VxzSpWB3" "VoqPtPrADpSgDRkjfauSRqSemp+khuDlSjwdCqNoNYOXPhS8yFCJJvWppf6ii1lRzknO0v03hbJE5dKSe9Fp455tu7gA3kCJV+NZEYebLO3YSmW5ba/cBYQuExaunpMeVdqkR23CMaMVDrxQVtY3Vn72Jigqj7FzqzrNL0xnGL1/hl+L9Z7PINy+/1oCw9+61uXSFuzBt2srsxjVrYBYuWvd+VciUUWOdPeXl2w7wH1eqQ3upKVO/u7Tg6bFK0J1" "LANQawineIzzH5z5Mk5WQ4Dxo4QgW8d37X6Bu62r7whOt3tKrEa/q+BfC3IYeYe8ANYnqktHMua4kJnXDjmhKw7VDEN8TXa7SnlIEl9VIrrR24n3Gdhfog+kBmXcxb06IyEwcUluZ5JF3KXuDjA/e/zY+mLDIDJ04tu7DZ7sd7oG3L4RDJn9oK3ceiRcdiHwRdMjqcq/xhWYsdkI2xzJIDsMeSdLHMwoyIIOxT6PsexmKUZsaRagoPKfX1Bm5epF" "AtsxcBIMNqP/vO0jvAljw3aAUrlF1KlWDH6sQQ1A9qUaJPPvZwsGm6/+xvo69fLijcvlWxZcMgoRoQP/gRlkMnkx6q6HkDMyRPS5QVs5tQPfSSjbq4dIL7k+4Lkhyc4bE6if07ddhjOrvof8bvA45ZNwo6fFBVIlvWLOp60MSQV+S1eCKUpc1jXDAT1wbAIOJ3u7wCguBf+8Qs9BIBYyBmKiFJqK3/lik/Dsjg29+LD8MdNWiKZCyxF57k/9PGKK" "iNvCHaPs6kuiAs/ldNsLIYZjOkn4xcS1NaooqaQmC5nlL4evMKF7rudCxB4xpVJG4oAzAuRRIrY7uAKZWBiGuAdgMJvaRW8aqYQcRO/EADJdNVgxYyUO/msXeae9PmyZ3kpipPwOe1vY4+iIeuZll8/xToQB7FyaOMXrvxF/8eioov3ZWdEKDfs4/XiHvVaPnxU0AcV2AIrQwnpc6XonmhVNTiExqzNcNnRx5Gykjp7cNf0XTdT7kgK1A0Qrkd8O" "7HOTO6zWZAstqdtW7PrDpHyYCJV9QlMstj3vo5iJTV7bDSp32BDpo5oSDlmtDk9gGPnSNo4NXl10aOd8WN4z1pjfVkGWXs48OBYzkSROoUhgWsUeEug8FVy26ICOTa2uiwuVl4DQqNsvTgMnzdv6ODIUHo1ZtPXVu42Hq6ChbZP45NIoxuJlntsrcYbdDGqMF7k++y10EUY2wOomq0l5vOOzms4/wgqMj5hOYEP8ByhT3gAAAN2EdpYQUo5qg4Fs" "pB20WtmL1LKDA6J2snWd0X813p3gr7k3VGMs/C7yYT5V43AETVOjev4V3LRFgVq1s5DfC7siPiO6grsGoUvXdVzTth9MNYGN6FuT1/Sk513Nya4eik85egPL+RsitYgz8e+zXAiPoKusZbkY43JXhvgpozO7TPELVPzqPeO1az0oeMfH8t+NK5RhBt4bOSEzD2pGwkCcniXWxmCgypaIpjGZ12Y7lfOXllJCQ55pBPK0onyqf7H5D9IgDQ51wmj8" "FWYKo+sYZm/+t0oIxdFNniaHvabT8joSbEamPiTTOwhw+LuH4wfRzahCmM5ECBZ3h1KyoXxNW5ESsvy0Zi+N4WS/kobeKtYBeCCwKSyfzU6/yHczIJatadYrMjHHAcZT4tOG3+P1YoQNBG2SKAK7moFqZnbjZ3fw+88QIErZVAbV+YpLX8VoHLKE2Hj5ujiSgBIw0JiyOblr08XhH1gsw6fwdpSAuvarIeMOt9zrO9HdiXAiYgV0w7i+Jj0uiwkc" "OBHvXUmDboELzrTBqsVWc/MHfeIVVUnK/DoJPFv4LFyMABglqr39H1tSb52yYMrozlVyQiAAJkQVEg+LtyXiZI0UYhT9dfGjahHFYOZ1AgS3t7giX6K2bx6ugj7Rj47BU/9XIfdD0eyA/vdDiHlFjKcuSxRp40tFrN+vsWBj99y3DgAbLDCn5tirnFaPFcHmFI1HR5BrveQLINxNAi81dn6RdAOCOrKaV00scdhNBSyRyglLoUlxhJWvx1D9e8H8" "TmSPxIjyYltXPclc/5UPHHMZzzc8TbSn/bGignFWsW9GB0g/1Ns16wRDnCC+LatlLX+g3jeGTBL3Hw4gOO8LYwawaBcbT+6MjBh/hGaCQ+ooDTMKDd4yglQFeNLjSfMtqS7EbENm9v7YTJQpHlYRaVeGR1qAq1T2fhy2CaDHkFL4+uec1vvi+lqmW5lSQvun1vIZYCpKJc4xx8I6DeYlgLO9hS7pPD3TFUdL/KGz8D8U2DDNOez3SwhojOz1eoNa" "pVuaRtq6JgMQICB7mBuQChcC/UG8azLk9nTqmh3GQWv95I4PEmhxa63iARe1a1RivO6o1XytxirG/NPZQZ7jPO55rphH6HJaAkFh2igFE6q3VKIX/KqgDGkwguaJHJIG1uTDoTG0NqL1HGIumVwXj2+lCRE7BCbqY8ay64AxQPP22+qkjEVi/eVyigImtNzKv9ZlAvFCS9QNmn5tlU6EnRluVJG+wyHjPEjPrN1RlziLHcoDBOdlJSZofxl158Z3" "N2ML6CdHj/wscPeA9V33Ih4KFeinJIc3nJo2X17liyHt3hPDr+8amFPIC0iaTi6KRJgMdrsZJIgldLQ5gkJnE6bC65afwvqphNC+PQgbIuJC2q97HYsya5cQH2vfRdJgEzC68HqlUG0IB6V+vakkNkO/58PWbCjSP6Bdx7A19YelimTAb3pfopvCClTQfnYul6K8MpDEmzz/QEqPkbsdf/P+vRzhGLp5x+kHUObfhFc1sN3CD/LTcA1FyfG2N/O3" "YU/NOdnl6sApqrs5BsGFPpVRrnby+Brr5EeG+HDfcHGJDakJAqD/U1GuTiqHIChE0al0pplQOkHDiiIRf4LQj4Rma5R2rIpHGRWFSnPmZwV/Dd+uadE9Q0hXZgCsg0qJtkAqzQ==", 1364 }, { 3, 2, { 2, 4, -1 }, "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", 1356 }, { 4, 2, { 3, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAmAAAAAUEArBsAQo/SaFxz7zT0GKrGXASqYy6d1RDwaH79hq4dcuD2TkisQAF1BVkTzub3MxdqZ2X12yXOEY+7ME7S9cGKFPcd3a8lFPS7" "ZUlm6Wkczy1g1C8AxEtpQSh+jorV7upi7YW7bNmfEVA6Y0wK39s6jfIkWhyzhc+1k5zVB1aJ4n2g5MYQ4TsXnqox1uN08t412Kvw3QK5OUcBA3Td6O6XDKiOXVDcca1SZkhWJ51b+gMOEHZ4g+NrTT82JVv1YaOIrR6mB4fx6fXgiylv6ECjY2Ahn0hWRFDooCSNWITa1QQnyVGg1pQn2KVmxdE2Fek47rROc3fExQSTGTqMno9SA67JgH5Gee1g" "PZjFi9tUmVvgPGIf3XEjj3CTV/kT47Dv1p2ZlLZBK29VKZqiy7FYOv9Btig1gZcCROr6MBt/9AWqzVV/LxuWoN3NtQGRaT2SKcpAWMLv0AOdPIBar6ympoj7hxpW8KG86srdIhDp/OCKzRgxL0hOsdttzM3yRftcpkmLjqf2qXbJ0zyss6gpSc1VJ1KY0jx3wFbimlxQ0eCtT7KJHbSQy7E+zwc3RIR/EZFC1FRA6xuWOfsP+et5Clgjg433oL3i" "wwxHY7LDWQKsUY7VH5XXQZayheAG74qgTi+SA8lOFwGMptHFHKcfo/wDL8al0aV0e7UMWhEXTmVmXTZ3Zk21riM4UrYaj0Zz8WnPCISMoJpiD1kf2yrXnNsLPpM3Bsa+11iu9SWu5sAJUCYoBfdEK9XMMO8mRa7MFIiCULTicNWJpZf+bpCyBX9CsfbBBWNx3JXl7KALLR5yAoxxs0zteggAcbpjHbxVWAp6AJTZ2JSUEpCEXymqkiCrDOU6+qOL" "vbgxSIB2ltanYih7H62DZ7TzdKUVlU3ClRKYInN43Dbtxut+p4mW0KNpiioFrK1isyEZ9k6Vot8dOfPZj1GNz39hYRoBRLHxr4YFeWrsBIwC8kaHXwSuUG4Lu3Fnfut2nSCCGGIIPjvIg92RQ7Pi94KK9jAJONGF+SXCneDwbR0lyLmqIGnpE6qYhbBAUUqzWSBdaEAhy3h/h+1jM8u1gddQWi1J8Mcj2iNPFg8AIY+87Wgc80zY8054Jq9Knju0" "quz42hOy7E8wrlTMj07D0V7krfqx73IvCFbXSAahTPrpWnKhju+Slvn7CQYpJPMetvRT2dlR5cAQYr0gWuKUlNDf3x2DylQZ2Opu3cl7tt31c+33jN4aiTfs+hXwPo9KNpA3DWvvSNOixMLFpgcb2P8LPEPIH0IWzv5T7XA0hTlQDnaNTodUVLpL4aBANpSGn66nPmn42BY4YSoxh/MvMmHsxN7U1hNVvWLVEf4a0zkIAa0I1EHZ0Qs5Eue381gn" "BlrxUqqis3uUxWpadWVeaL/NgevSdjsJCS4KmRoyNZRhTUOJ9vedVTDLnttQ3MODgdj1EUdxoHDyEtI4Un116gv4DKw/kixL/n7GjDRbw6EksmIHPdKy1WPvCu8ti0y8leXzX5N3XvwgsTnOFi1p0MpOtPDriygCPGYLLJ8EVhaAVqjsDNPrF8dlF2pqqBvHetjG+kN+GhlNfzFEjg5qb67ptoXJZKtTOzo+RZda88il0f3XA2UW07QBStnH7RYi" "XDqqfC6uA23WYaWTkcczuYERKgrp8EGMQAKW7GcgsMjFGEwGhVjF3zTGICE249g/eG4zL6wHT05dj5GWMU2TIUNybZpc/mQSBr2OZvim8PbzWU8SF8tIWIJtwT4fz3n4n9WJFX7axDT+itrNnV9nf0lxL16FPZLCOwZ6fyMViEJeUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAnwAAAABQQBc5sAQo//lEQzT2CQ1dTe/" "2l9TBCT9a1xGSl7u7zFdCiEpZz1xEVoEBkGcp4Op3FS881xp5n9qIzVzIyi58phG5U4Bxt015AWIyw8jJwg68whkM3gqLHlJhWbxXB7OPUUfM9RzWE31IUOX5BtRy3nJbfBtiXr3oeIM99bwxMRJAK2BN+n9nc+4/OTGQ5YhU9snoPwLBoqzr3SwwB07GP979B8C2icVvE+1UBDWr/btY7Bl5tDEVGFPtf5s4qchJP93biHK/5nhfmAQ+8KofMzv" "ApwOui9SF12emsOsHjNJvvoX/ciRdlgr6CCitEqpRf0JdgDyejWi6jTiu1NdfhwNbL0QhBYWgIiyCOZRHQjlVzbX4t45HHQ5M8jwUICcVACabIs2zSJ7HDAeSY2/DgjwOw0UJED+7A8P3iKJ2se/eV5gEb5cFF45kqSG5L+tmsAtZijIWg9jyKhcM/T2/YRgcqc26Tqa1aW8AVJWQhifIE1+rTYT7nu6KFodiR3FdM33SJ9Z0ex907iv3pouE9Qk" "Jeq6yFFDwdckrmrZOKI7pCSo+XU+Sla/K1v60tqar8Qd3F9szDejnBKBlqBuiuLY8wb0ttXI9T7BuyxT/aZDF+GLxDQSkI09JsbsqvxXuRmTKfmUQ6FV0TRiHf1RLvVzRh2Zjp3xnhGsA2fwsPafED3pR181H1qEcwte71ZUi25oJma50dK9YlJbmqJ6SliV3OdTWTsv/eEPpO6FhKSuhSzMEIR6p3ymlOeGukMo5Xc6QyfG6oGVhQbp5SmTqUfF" "dOKEbT7P1OWZirxoqNWU0pf28jjRThAhXxQxUVgi5BlAb8JNJeD/Di/pO3vdLLbVXXlUI7WA/xiqOj2yvV1jisGn8QIb2xUBvTmJ1uCkhbYDw2aBX7Cid1FN+E+2kBoCs3UhYnt6EGDLD7fmbur/9aYVNiTIL1KSRE6ukYCknTYMBAUInfEZ7EOszN7n6ACQO8Zu5HFkRPB+oGLT0sH6MXH2CWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ47HZIG7sw8wEWkOkwtUj6wDN2vkhaiQ6fLHJBL2c4LrWgTBKf4hh3e9k0JdqCBxROHurDWncZu8BRDp4qt0hPaENAqIrrNR7DwMcRbnYlAnyZQKMwjwtV4O1iTOz2d2/JeoGC6NMXh3HRMaelzwKZ45bk1i0cIqxVqgr/hGcN/JeoCHyNPESDGWvXAVYORf8JH5Ox4Csyb/3RZng1CbK" "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", 1400 }, { 3, 2, { 2, 4, -1 }, "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" "zt8iz5M3tRc6NOWg+BKY+ud1iWTwssk8+g+TJZLHgPRY9iHznc+1S0rR4LprqjXKkcnRj9tWSgNWenPvRaxr/eNM+LjMoLflXMppIKgLGioj3RDSgIz6aTo73C+NA5d4Lh+TA6NMKg/pdeBNv03Mz8U45etLr5fW7mVRGqbad2Dy364wt97d8oPgij2kxjIj6z/QvSroXbLnWMz78Ns+uyZMfGSPKKqGs/8dPWGBxxjHQMetWFnqYhQtY4XCfrhV" "EUjpXrpn9aJeNdvYTwBcKbRyWHDGVm8SqMTTe+WdsiDCvfNkBrsto1p3O8kVgu7WXvUaFor0h8bay3tHsXKaLIknBFmnNj7OO4SUmmIfWMr/so486s+lDBr1cOAGmQRVaRZ8JIxnsfLqDWcNfTs0KSkNIOk1Xt9L+ceL7tWWvwxDCvWkzFizc5CryjG8PlaCxxmtay1Yxd9Wu18IA4gI370gu8vZrkmTVCJd5txoTbWykt24liGf4nJIkXnpIyr6" "mrDIlzmjSImerSwiqaO+iWmtSXAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "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", 1364 }, { 3, 2, { 2, 4, -1 }, "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", 1368 }, { 3, 2, { 1, 4, -1 }, "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", 1364 }, { 3, 2, { 1, 4, -1 }, "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", 1344 }, { 3, 2, { 2, 4, -1 }, "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", 1376 }, { 3, 2, { 0, 4, -1 }, "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", 1380 }, { 4, 2, { 2, 5, -1 }, "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" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAAAAAUEA5htURT/nRvWwOvEqt3JyzIDvX8jzBqW7SKgZQhIwPJFDJPrHi9bCtdjYHvZtkVACLsA8VzuJ0qNir+/1471ZalTMHRYouYyf" "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" "jbHSHdqsZ6YbZzkmYsItUebYusLkbrk2EvQ+BYZY3VUQwYHO2PSzy2oqf/PphhZsU7R8MqvcNuurZN/a+iTBKbm60JULSraXVzsX9rk2YiCX+FEftmF7nIQwejAGk/tAVGvgiXbKvNcWd/2cq6XmsB2y15P8mfpgfBm1zzq8lQ5uuWvf6nLLJgdweCFN5eYFtWIfzsSpLNaZp74E1KFqSoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA" "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABQ4UCpeBQFsFhZb0jWBoFGEtqgJK9z5Jx482HP6DscvtgHy5Zqf4faxowZSiOwXvQyFRcsgON/l+LqwEOYz5fKSAuRZ7QgYHBNL526tJQG7fuhna+jlS9h1ZUZ5y0gOBaAp9nO4JaKvH3v9ALHu7mCqctsKuSoTkOV6bTDjPxkSL9C2jJsBkyPYLE6WmjNQZyUS2eJ1rUz8DHq4jm8WPZH" "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", 1400 }, }; static char *fec_test_case_ids[] = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30", "31", "32", "33", "34", "35", "36", "37", "38", "39", "40", "41", "42", "43", "44", "45", "46", "47", "48", "49", "50", "51", "52", "53", "54", "55", "56", "57", "58", "59", "60", "61", "62", "63", NULL }; chiaki-v2.2.0/test/gkcrypt.c000066400000000000000000000533431447035777400157710ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include static MunitResult test_ecdh(const MunitParameter params[], void *user) { static const uint8_t handshake_key[] = { 0xfc, 0x5d, 0x4b, 0xa0, 0x3a, 0x35, 0x3a, 0xbb, 0x6a, 0x7f, 0xac, 0x79, 0x1b, 0x17, 0xbb, 0x34 }; static const uint8_t local_private_key[] = { 0x16, 0xe7, 0x5d, 0xcb, 0xda, 0x98, 0x55, 0xfb, 0x6b, 0xef, 0xdd, 0x8a, 0xa5, 0xf1, 0x6e, 0x7f, 0x46, 0xfd, 0xe1, 0xd2, 0x27, 0x97, 0x3, 0x60, 0x18, 0x72, 0xd8, 0x4b, 0x15, 0x38, 0xd9, 0x0 }; static const uint8_t local_public_key[] = { 0x4, 0xf4, 0xa, 0xf1, 0x35, 0xa4, 0x88, 0x94, 0x36, 0xce, 0xe5, 0x2b, 0x5c, 0x73, 0xa3, 0x3e, 0xc5, 0xad, 0xb, 0xe0, 0x95, 0x2f, 0x57, 0xf4, 0xf0, 0xed, 0xc, 0x80, 0xb0, 0xbe, 0xda, 0x7c, 0xa6, 0x43, 0x78, 0x93, 0x93, 0xa5, 0x94, 0x7e, 0x9f, 0xaa, 0x3f, 0x67, 0x95, 0xc9, 0xaa, 0x9, 0xa9, 0x63, 0x25, 0xdf, 0xe8, 0x50, 0xbf, 0xc3, 0xf1, 0xdb, 0x62, 0xa5, 0xa, 0xbf, 0xb0, 0xff, 0xf7 }; static const uint8_t local_public_key_sig[] = { 0x99, 0xb5, 0xcb, 0xb5, 0x37, 0x18, 0xb, 0xfc, 0x55, 0xda, 0x43, 0x7f, 0x44, 0x76, 0xa8, 0x17, 0xc9, 0x37, 0xfe, 0x56, 0x1b, 0x8a, 0xbe, 0xc, 0x41, 0x12, 0xab, 0x71, 0xf5, 0xa6, 0x8d, 0x29 }; static const uint8_t remote_public_key[] = { 0x4, 0xdf, 0xef, 0x8, 0xbb, 0xa8, 0x56, 0xf2, 0xb4, 0x4b, 0x8a, 0xe, 0x4f, 0x44, 0x20, 0x3f, 0x8e, 0x49, 0x3f, 0xee, 0xd4, 0x3c, 0xe9, 0x3a, 0xfe, 0x5c, 0x64, 0x67, 0x77, 0x20, 0x15, 0x7c, 0x59, 0x10, 0x15, 0x67, 0x94, 0xae, 0x5f, 0x2, 0x4a, 0xad, 0xc, 0xce, 0xfa, 0x14, 0x15, 0xa, 0xab, 0xee, 0x8, 0xb, 0x14, 0x12, 0x76, 0xea, 0x3e, 0xc0, 0xd5, 0x65, 0xf4, 0x68, 0x77, 0xa3, 0xca }; static const uint8_t remote_public_key_sig[] = { 0x13, 0xc5, 0x89, 0xe2, 0x3b, 0x72, 0x85, 0x24, 0xa9, 0x9f, 0x96, 0x80, 0x3, 0xa1, 0x81, 0x30, 0x59, 0x68, 0xf1, 0xbb, 0xb6, 0x4d, 0xc4, 0xa7, 0x6c, 0xce, 0xf6, 0x79, 0x4c, 0xeb, 0x2d, 0x98 }; static const uint8_t secret[] = { 0xb8, 0x1c, 0x61, 0x46, 0xe7, 0x49, 0x73, 0x8c, 0x96, 0x30, 0xca, 0x13, 0xff, 0x71, 0xe5, 0x9b, 0x3b, 0xf9, 0x41, 0x98, 0xd4, 0x67, 0xa5, 0xa2, 0xbc, 0x78, 0x4, 0x92, 0x81, 0x43, 0xec, 0x1d }; ChiakiECDH ecdh; ChiakiErrorCode err = chiaki_ecdh_init(&ecdh); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; err = chiaki_ecdh_set_local_key(&ecdh, local_private_key, sizeof(local_private_key), local_public_key, sizeof(local_public_key)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; uint8_t local_public_key_result[128]; size_t local_public_key_result_size = sizeof(local_public_key_result); uint8_t local_public_key_sig_result[32]; size_t local_public_key_sig_result_size = sizeof(local_public_key_sig_result); chiaki_ecdh_get_local_pub_key(&ecdh, local_public_key_result, &local_public_key_result_size, handshake_key, local_public_key_sig_result, &local_public_key_sig_result_size); munit_assert_size(local_public_key_result_size, ==, sizeof(local_public_key)); munit_assert_memory_equal(sizeof(local_public_key), local_public_key_result, local_public_key); munit_assert_size(local_public_key_sig_result_size, ==, sizeof(local_public_key_sig)); munit_assert_memory_equal(sizeof(local_public_key_sig), local_public_key_sig_result, local_public_key_sig); uint8_t secret_result[128]; chiaki_ecdh_derive_secret(&ecdh, secret_result, remote_public_key, sizeof(remote_public_key), handshake_key, remote_public_key_sig, sizeof(remote_public_key_sig)); munit_assert_size(CHIAKI_ECDH_SECRET_SIZE, ==, sizeof(secret)); munit_assert_memory_equal(sizeof(secret), secret_result, secret); chiaki_ecdh_fini(&ecdh); return MUNIT_OK; } static MunitResult test_key_stream(const MunitParameter params[], void *user) { static const uint8_t handshake_key[] = { 0x83, 0xcf, 0x93, 0x1a, 0x6a, 0xa7, 0x69, 0xa6, 0xc4, 0x48, 0x5d, 0x19, 0xc1, 0x5c, 0xcc, 0x52 }; static const uint8_t ecdh_secret[] = { 0x73, 0xc8, 0xd5, 0x49, 0xc4, 0xd9, 0xdb, 0x50, 0x2e, 0xc0, 0x44, 0xea, 0x33, 0x64, 0x8c, 0x6a, 0xc9, 0xf3, 0x6c, 0x41, 0xb6, 0xa0, 0x50, 0x4f, 0xe0, 0x93, 0xde, 0xfb, 0x61, 0x9b, 0x9, 0x73 }; static const uint8_t gkcrypt_key[] = { 0x8, 0x81, 0x6f, 0xa2, 0xe5, 0x55, 0x89, 0x61, 0xd5, 0xa2, 0x86, 0xd9, 0xe, 0xec, 0x5b, 0x8c }; static const uint8_t gkcrypt_iv[] = { 0x2a, 0xe1, 0xbb, 0x3d, 0x84, 0xdc, 0x9a, 0xa9, 0xc3, 0x52, 0xa4, 0xcf, 0x3f, 0xfb, 0x8b, 0x72 }; static const uint8_t key_stream[] = { 0xf, 0x6d, 0x89, 0x85, 0x5b, 0xa7, 0x86, 0x74, 0x5b, 0xa1, 0xfe, 0x5c, 0x81, 0x19, 0x6c, 0xd5, 0x54, 0xc4, 0x1c, 0xca, 0xf6, 0xe9, 0x34, 0xa4, 0x89, 0x26, 0x98, 0xb0, 0x62, 0x12, 0xb3, 0x1a }; static const uint8_t key_stream_high[] = { 0x14, 0x31, 0x9f, 0xf8, 0xbe, 0x08, 0x17, 0xa4, 0xfc, 0x28, 0x49, 0x0b, 0x1e, 0x5f, 0x7b, 0x7e, 0xfa, 0xe9, 0x14, 0xde, 0xc6, 0xdf, 0xe7, 0x5d, 0xd6, 0x9c, 0x75, 0x3f, 0x94, 0x62, 0xd5, 0x2c }; ChiakiLog log; ChiakiGKCrypt gkcrypt; ChiakiErrorCode err = chiaki_gkcrypt_init(&gkcrypt, &log, 0, 42, handshake_key, ecdh_secret); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(gkcrypt_key), gkcrypt.key_base, gkcrypt_key); munit_assert_memory_equal(sizeof(gkcrypt_iv), gkcrypt.iv, gkcrypt_iv); uint8_t key_stream_result[0x20]; err = chiaki_gkcrypt_gen_key_stream(&gkcrypt, 0x30, key_stream_result, sizeof(key_stream_result)); if(err != CHIAKI_ERR_SUCCESS) { chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_ERROR; } munit_assert_memory_equal(sizeof(key_stream), key_stream_result, key_stream); uint64_t key_pos = ((uint64_t)(1ull << 32)) + 0x420; err = chiaki_gkcrypt_gen_key_stream(&gkcrypt, key_pos, key_stream_result, sizeof(key_stream_result)); if (err != CHIAKI_ERR_SUCCESS) { chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_ERROR; } munit_assert_memory_equal(sizeof(key_stream_high), key_stream_result, key_stream_high); chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_OK; } static MunitResult test_endecrypt(const MunitParameter params[], void *user) { static const uint8_t handshake_key[] = { 0x14, 0xf1, 0xe6, 0x94, 0x6c, 0x5d, 0xce, 0xa8, 0xb7, 0xaa, 0x48, 0x50, 0xf6, 0x4d, 0x21, 0xac }; static const uint8_t ecdh_secret[] = { 0xc, 0xeb, 0x77, 0x9, 0x83, 0x4d, 0x7a, 0xfc, 0x50, 0xb8, 0x46, 0x8c, 0xc6, 0x3c, 0x1e, 0x7c, 0x4e, 0x4a, 0x88, 0x93, 0x42, 0x80, 0xc1, 0x28, 0xe6, 0x1e, 0xe9, 0xd4, 0x1b, 0x8c, 0x69, 0x36 }; static const uint8_t gkcrypt_key[] = { 0x27, 0x7a, 0xa5, 0x1d, 0xac, 0xd1, 0x5f, 0xe, 0x54, 0x12, 0xfa, 0xce, 0xd, 0xc4, 0x63, 0x6a }; static const uint8_t gkcrypt_iv[] = { 0xef, 0x20, 0x40, 0xc2, 0x15, 0x3c, 0x2, 0x66, 0x32, 0x1f, 0x42, 0xbb, 0xf4, 0x50, 0x34, 0x4d }; static const uint8_t clear_data[] = { 0x4e, 0x61, 0x9f, 0x94, 0x5d, 0x4b, 0x8e, 0xbd, 0x2a, 0x15, 0x4d, 0x3, 0x6a, 0xcd, 0x49, 0x56, 0x9c, 0xc7, 0x5c, 0xe3, 0xe7, 0x0, 0x17, 0x9a, 0x38, 0xd9, 0x69, 0x53, 0x45, 0xf9, 0xc, 0xb5, 0x8c, 0x5, 0x65, 0xf, 0x70 }; static const uint8_t enc_data[] = { 0x23, 0xf4, 0x8d, 0xd8, 0xaa, 0xf9, 0x58, 0x9b, 0xb1, 0x94, 0x4f, 0xad, 0x2b, 0x8d, 0xaa, 0x8d, 0x25, 0x88, 0xfa, 0xf8, 0xb6, 0xd4, 0x17, 0xf4, 0x5f, 0x78, 0xec, 0xf5, 0x4e, 0x37, 0x20, 0xb0, 0x76, 0x81, 0x7, 0x67, 0x9a }; static const uint8_t enc_data_high[] = { 0x2b, 0x9e, 0xe9, 0x83, 0x27, 0x44, 0x08, 0xb1, 0x17, 0xf5, 0x37, 0xa0, 0xd9, 0xc2, 0xc6, 0x05, 0x95, 0x78, 0xb2, 0x78, 0xfd, 0x17, 0x8c, 0x52, 0xf4, 0x17, 0x9d, 0xee, 0x3f, 0x62, 0xe6, 0x30, 0x01, 0x61, 0x4c, 0xf4, 0xa1 }; ChiakiLog log; ChiakiGKCrypt gkcrypt; ChiakiErrorCode err = chiaki_gkcrypt_init(&gkcrypt, &log, 0, 42, handshake_key, ecdh_secret); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(gkcrypt_key), gkcrypt.key_base, gkcrypt_key); munit_assert_memory_equal(sizeof(gkcrypt_iv), gkcrypt.iv, gkcrypt_iv); uint8_t key_stream_result[0x20]; err = chiaki_gkcrypt_gen_key_stream(&gkcrypt, 0x30, key_stream_result, sizeof(key_stream_result)); if(err != CHIAKI_ERR_SUCCESS) { chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_ERROR; } uint8_t buf[0x25]; // Low memcpy(buf, clear_data, sizeof(buf)); err = chiaki_gkcrypt_encrypt(&gkcrypt, 0x11, buf, sizeof(buf)); if(err != CHIAKI_ERR_SUCCESS) { chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_ERROR; } munit_assert_memory_equal(sizeof(buf), buf, enc_data); memcpy(buf, clear_data, sizeof(buf)); err = chiaki_gkcrypt_decrypt(&gkcrypt, 0x11, buf, sizeof(buf)); if(err != CHIAKI_ERR_SUCCESS) { chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_ERROR; } munit_assert_memory_equal(sizeof(buf), buf, enc_data); // High uint64_t key_pos_high = ((uint64_t)(1ull << 32)) + 0x420; memcpy(buf, clear_data, sizeof(buf)); err = chiaki_gkcrypt_encrypt(&gkcrypt, key_pos_high, buf, sizeof(buf)); if (err != CHIAKI_ERR_SUCCESS) { chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_ERROR; } munit_assert_memory_equal(sizeof(buf), buf, enc_data_high); memcpy(buf, clear_data, sizeof(buf)); err = chiaki_gkcrypt_decrypt(&gkcrypt, key_pos_high, buf, sizeof(buf)); if (err != CHIAKI_ERR_SUCCESS) { chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_ERROR; } munit_assert_memory_equal(sizeof(buf), buf, enc_data_high); chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_OK; } static MunitResult test_gmac(const MunitParameter params[], void *user) { static const uint8_t gkcrypt_key[] = { 0xb6, 0x4b, 0x1e, 0x65, 0x3f, 0xbb, 0xa7, 0xab, 0x80, 0xb3, 0x1e, 0x5a, 0x32, 0x4d, 0xec, 0xc0 }; static const uint8_t gkcrypt_iv[] = { 0x7c, 0xc8, 0xd0, 0x19, 0x9e, 0xdf, 0xd8, 0xc3, 0xb5, 0x0f, 0x32, 0xee, 0x36, 0x33, 0x6a, 0x5a }; static const uint8_t buf[] = { 0x03, 0x00, 0x18, 0x00, 0x19, 0x00, 0x02, 0x50, 0x21, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x69, 0xa0, 0x00, 0xf9, 0xf8, 0x98, 0x24, 0xda, 0x56, 0x0b, 0x74, 0xec, 0x68, 0x15, 0xd3, 0x1f, 0x85, 0x43, 0xaa, 0xd3, 0xcd, 0xb8, 0x50, 0x2e, 0x90, 0xa4, 0xb0, 0x85, 0xf3, 0xbe, 0x9a, 0x47, 0x97, 0xc1, 0xab, 0x5f, 0xa5, 0xfd, 0x62, 0x5c, 0x26, 0x1a, 0x54, 0x36, 0x72, 0x30, 0xc3, 0x2b, 0xe0, 0x2c, 0x5a, 0x86, 0x07, 0xf5, 0xdc, 0x12, 0x55, 0xb4, 0x8e, 0x17, 0x5b, 0xe4, 0x7f, 0x96, 0x55, 0x86, 0xf0, 0xfb, 0x45, 0xe2, 0xf8, 0xe8, 0x7d, 0x5f, 0x3a, 0x8b, 0xb0, 0x64, 0x6c, 0x54, 0xf6, 0x8c, 0x4e, 0xa4, 0x12, 0xa3, 0x26, 0x7f, 0x22, 0x5b, 0x19, 0x98, 0xba, 0xd4, 0xad, 0x9f, 0x5f, 0x63, 0xaf, 0x1f, 0x97, 0x8c, 0x17, 0x49, 0xa3, 0x30, 0x71, 0xd2, 0xb0, 0x49, 0x2c, 0x75, 0xa2, 0x89, 0xda, 0x50, 0xfd, 0x9b, 0x08, 0x41, 0x98, 0x2d, 0x8c, 0x0b, 0x92, 0x79, 0xae, 0x60, 0x23, 0x83, 0xef, 0x5c, 0xda, 0xce, 0x71, 0x08, 0x2d, 0x0b, 0x17, 0x62, 0x56, 0x48, 0xc5, 0xe2, 0x0f, 0x22, 0x1d, 0xdc, 0xcc, 0xc2, 0x82, 0xa6, 0x8e, 0xec, 0x1e, 0x04, 0x0c, 0x08, 0xaa, 0xa2, 0x80, 0x6c, 0x4f, 0xd3, 0x6f, 0xc1, 0x9b, 0x76, 0x9a, 0x58, 0xaa, 0x25, 0x56, 0xef, 0xf2, 0xfd, 0x77, 0xf0, 0x32, 0x4e, 0x83, 0xe2, 0x30, 0x25, 0xa5, 0x5a, 0xf1, 0xdf, 0xc8, 0x75, 0xa2, 0xb6, 0x2b, 0xfd, 0xac, 0xbc, 0x63, 0x09, 0xa1, 0xcc, 0x2b, 0xf5, 0x46, 0xef, 0x49, 0x83, 0x8f, 0x0b, 0xc1, 0x47, 0xac, 0x5a, 0x00, 0x2e, 0xec, 0x1c, 0xd0, 0x0a, 0x66, 0xb5, 0xee, 0x9e, 0xad, 0xc9, 0x64, 0x2d, 0xcb, 0x98, 0x0f, 0x43, 0xa6, 0xe1, 0x4c, 0xe7, 0x9f, 0x2d, 0xab, 0x94, 0x01, 0xd7, 0x52, 0x84, 0x19 }; static const uint64_t key_pos = 0x69a0; static const uint64_t key_pos_high = ((uint64_t)(1ull << 32)) + 0x420; static const uint8_t gmac_expected[] = { 0x6f, 0x81, 0x10, 0x97 }; static const uint8_t gmac_expected_high[] = { 0x4a, 0x30, 0x98, 0x10 }; ChiakiGKCrypt gkcrypt; // Low memset(&gkcrypt, 0, sizeof(gkcrypt)); memcpy(gkcrypt.key_gmac_current, gkcrypt_key, sizeof(gkcrypt.key_gmac_current)); memcpy(gkcrypt.iv, gkcrypt_iv, sizeof(gkcrypt.iv)); gkcrypt.key_buf = NULL; gkcrypt.key_buf_size = 0; gkcrypt.key_gmac_index_current = 0; uint8_t gmac[CHIAKI_GKCRYPT_GMAC_SIZE]; ChiakiErrorCode err = chiaki_gkcrypt_gmac(&gkcrypt, key_pos, buf, sizeof(buf), gmac); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(gmac), gmac, gmac_expected); // High memset(&gkcrypt, 0, sizeof(gkcrypt)); memcpy(gkcrypt.key_gmac_current, gkcrypt_key, sizeof(gkcrypt.key_gmac_current)); memcpy(gkcrypt.iv, gkcrypt_iv, sizeof(gkcrypt.iv)); gkcrypt.key_buf = NULL; gkcrypt.key_buf_size = 0; gkcrypt.key_gmac_index_current = 0; err = chiaki_gkcrypt_gmac(&gkcrypt, key_pos_high, buf, sizeof(buf), gmac); if (err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(gmac), gmac, gmac_expected_high); return MUNIT_OK; } static MunitResult test_gen_gmac_key(const MunitParameter params[], void *user) { static const uint8_t key_initial[] = { 0xbe, 0xeb, 0xa0, 0xf0, 0x3d, 0x05, 0x70, 0x7d, 0x3a, 0xc7, 0x3c, 0xd7, 0x32, 0xb9, 0x48, 0x01 }; static const uint8_t iv[] = { 0xe8, 0x71, 0x87, 0xe7, 0x63, 0xe0, 0xdf, 0x46, 0x3d, 0xc2, 0x02, 0x4a, 0x2c, 0xd2, 0x9c, 0x45 }; static const uint8_t key_result[] = { 0xe3, 0xdb, 0x92, 0xd9, 0xdd, 0xd3, 0x68, 0x99, 0xae, 0xfd, 0x9b, 0x15, 0xe1, 0xa6, 0x87, 0x8b }; ChiakiGKCrypt gkcrypt; memset(&gkcrypt, 0, sizeof(gkcrypt)); memcpy(gkcrypt.key_gmac_base, key_initial, sizeof(gkcrypt.key_gmac_base)); memcpy(gkcrypt.iv, iv, sizeof(gkcrypt.iv)); uint8_t key_out[CHIAKI_GKCRYPT_BLOCK_SIZE]; chiaki_gkcrypt_gen_gmac_key(1, key_initial, iv, key_out); munit_assert_memory_equal(sizeof(key_out), key_out, key_result); return MUNIT_OK; } static MunitResult test_gmac_split(const MunitParameter params[], void *user) { static const uint8_t gkcrypt_key[] = { 0x35, 0x95, 0x81, 0x87, 0xeb, 0xcb, 0x63, 0x54, 0x90, 0x00, 0xd7, 0xd5, 0xbd, 0xf4, 0xc5, 0xf4 }; static const uint8_t gkcrypt_iv[] = { 0xb8, 0xde, 0xfc, 0xa4, 0x48, 0xf0, 0x4c, 0x3f, 0xd5, 0x94, 0x0e, 0x1c, 0x04, 0x64, 0x63, 0xb1 }; static const uint8_t buf[] = { 0x2, 0x0, 0x1e, 0x0, 0x9, 0x0, 0x20, 0x8, 0x1, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xad, 0xf0, 0x2, 0x4e, 0x0, 0x2c, 0x6f, 0x3b, 0x6c, 0x2e, 0x4a, 0x27, 0x9c, 0x50, 0x34, 0x84, 0xea, 0x37, 0xc7, 0x76, 0xab, 0x92, 0x30, 0x43, 0x61, 0xc7, 0x1d, 0xcb, 0xc4, 0x35, 0x94, 0xcc, 0x44, 0xe2, 0xfa, 0x89, 0x86, 0x47, 0x5e, 0xc2, 0x1, 0x39, 0x4c, 0x9f, 0x67, 0xb3, 0x6e, 0x35, 0x44, 0x97, 0xf4, 0x28, 0xe2, 0x51, 0x12, 0xda, 0xf5, 0x2c, 0x43, 0x1c, 0x49, 0x46, 0x2c, 0x53, 0xe3, 0xe9, 0x76, 0x61, 0x87, 0x2b, 0x7a, 0xe3, 0x2f, 0xbb, 0x9f, 0x4d, 0x66, 0x8a, 0x31, 0xbc, 0x64, 0x9d, 0x6, 0xd, 0x4a, 0xdd, 0x42, 0x21, 0x73, 0x3c, 0x97, 0x21, 0x84, 0x53, 0x65, 0x53, 0x7a, 0xf4, 0x57, 0x77, 0x61, 0xae, 0xc, 0x7a, 0x42, 0x90, 0xfc, 0x6b, 0xbb, 0x38, 0x6e, 0x52, 0xb6, 0xe5, 0x26, 0xf, 0xd2, 0x2a, 0xf1, 0x56, 0x50, 0xdd, 0x65, 0x14, 0x9e, 0xe3, 0xb5, 0x70, 0x67, 0x55, 0x47, 0xcd, 0x8e, 0xc1, 0xba, 0xf6, 0x72, 0xb1, 0xb4, 0x11, 0x1b, 0x25, 0xd4, 0x3d, 0x19, 0xb5, 0xf5, 0xdd, 0x2f, 0xef, 0xd6, 0xd1, 0xaf, 0xb4, 0xdc, 0x93, 0xe5, 0x3c, 0xc3, 0xa4, 0x64, 0xb3, 0xad, 0xd3, 0xfc, 0x23, 0x84, 0x86, 0xf7, 0xf9, 0x10, 0xdf, 0x15, 0x6e, 0xc, 0x6e, 0x43, 0x9a, 0x63, 0x3b, 0xb5, 0x38, 0x5, 0xf9, 0x4a, 0x68, 0x4a, 0xfb, 0x95, 0x94, 0x9d, 0x31, 0xfd, 0x84, 0x31, 0x43, 0x85, 0xd, 0x8e, 0xbb, 0x66, 0xca, 0x4d, 0x3b, 0xa, 0x75, 0xe5, 0xeb, 0xde, 0xd5, 0xf8, 0x82, 0x85, 0xb2, 0xcc, 0xdb, 0x70, 0x9e, 0xa9, 0xe2, 0xb0, 0xac, 0x76, 0x1, 0x28, 0xea, 0x10, 0x39, 0xb7, 0x47, 0x78, 0x82, 0xc9, 0xa4, 0x24, 0x16, 0xc3, 0xe5, 0x16, 0x2, 0x46, 0x92, 0x7, 0xdb, 0x3a, 0xb0, 0xd0, 0xdd, 0xc0, 0x15, 0xdc, 0x5, 0xc7, 0x61, 0xe5, 0x7d, 0x82, 0xd0, 0x4c, 0x17, 0x44, 0xb4, 0xfa, 0x28, 0xd8, 0x94, 0xc1, 0xf4, 0xd0, 0xb3, 0x50, 0x6a, 0x25, 0x81, 0x98, 0x7b, 0x49, 0x67, 0xa2, 0x19, 0xb2, 0x41, 0xe5, 0xd2, 0xdf, 0x9a, 0x4f, 0xc9, 0x60, 0xff, 0xb2, 0x91, 0xe8, 0x5f, 0x77, 0x67, 0xff, 0xc0, 0xa1, 0x76, 0x57, 0xeb, 0x61, 0x34, 0x57, 0x80, 0x75, 0xdb, 0x3, 0xc5, 0x53, 0xf5, 0xb3, 0xa8, 0x61, 0xdf, 0xf, 0xb6, 0xe6, 0xc4, 0x39, 0xa0, 0xcd, 0xe9, 0xa6, 0x32, 0xb8, 0xba, 0x46, 0x9c, 0x43, 0x16, 0x49, 0x65, 0x9d, 0x71, 0x87, 0xf3, 0x37, 0xe5, 0xe0, 0xc6, 0xdf, 0x5e, 0x4c, 0xc5, 0x20, 0x9b, 0x16, 0xed, 0x13, 0x2d, 0x63, 0x79, 0x2b, 0xd0, 0x51, 0x44, 0x0, 0x44, 0x8c, 0x7c, 0x2c, 0xc6, 0x82, 0x20, 0xca, 0xca, 0x1f, 0x7f, 0xea, 0x71, 0xb7, 0x84, 0x5b, 0x8c, 0x94, 0x5b, 0x92, 0xb6, 0xef, 0xbe, 0x5f, 0x8, 0x3d, 0x5, 0xb2, 0xfb, 0xcb, 0x5a, 0x1, 0xd4, 0x16, 0x71, 0x8d, 0x9e, 0xf5, 0x8d, 0xae, 0x80, 0x40, 0x90, 0xfe, 0xef, 0x5d, 0xa4, 0x74, 0xf3, 0xe3, 0x4a, 0x9a, 0x67, 0x8b, 0xa6, 0xb5, 0x59, 0x18, 0x61, 0x4f, 0x42, 0x5f, 0x2b, 0x74, 0x39, 0xa8, 0x30, 0x5d, 0x8d, 0xf1, 0xad, 0x25, 0x4f, 0x41, 0xca, 0x27, 0xda, 0x7, 0x75, 0x49, 0x46, 0xd7, 0x81, 0xaa, 0x27, 0x61, 0x56, 0x9c, 0x29, 0x40, 0x90, 0x22, 0xa, 0xcd, 0x3a, 0x7b, 0xb4, 0x85, 0x96, 0x7, 0x80, 0x13, 0x12, 0x3f, 0x25, 0x27, 0xa0, 0xf6, 0x26, 0xbd, 0xd1, 0xb0, 0x95, 0xbd, 0x26, 0xba, 0x49, 0xa6, 0x81, 0x7, 0x31, 0xd3, 0xe1, 0x25, 0xda, 0xab, 0x71, 0xb9, 0x65, 0x1d, 0x13, 0xab, 0x82, 0x52, 0x95, 0xb3, 0x62, 0xa6, 0x48, 0x48, 0xb8, 0xd8, 0x55, 0x26, 0x98, 0xa1, 0xc9, 0x57, 0x66, 0x1c, 0xac, 0xb1, 0xc7, 0x5f, 0xfa, 0x44, 0xc6, 0xd8, 0x19, 0x1, 0x8d, 0x41, 0x1f, 0xc7, 0xf, 0x89, 0x1d, 0xef, 0x34, 0x9a, 0x68, 0x77, 0x8c }; static const uint64_t key_pos = 0xadf0; static const uint64_t key_pos_high = ((uint64_t)(1ull << 32)) + 0x420; static const uint8_t gmac_expected[] = { 0xd6, 0x6a, 0x07, 0xb7 }; static const uint8_t gmac_expected_high[] = { 0xf0, 0x17, 0x95, 0x3c }; ChiakiGKCrypt gkcrypt; memset(&gkcrypt, 0, sizeof(gkcrypt)); memcpy(gkcrypt.key_gmac_current, gkcrypt_key, sizeof(gkcrypt.key_gmac_current)); memcpy(gkcrypt.iv, gkcrypt_iv, sizeof(gkcrypt.iv)); gkcrypt.key_buf = NULL; gkcrypt.key_buf_size = 0; gkcrypt.key_gmac_index_current = 0; uint8_t gmac[CHIAKI_GKCRYPT_GMAC_SIZE]; ChiakiErrorCode err = chiaki_gkcrypt_gmac(&gkcrypt, key_pos, buf, sizeof(buf), gmac); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(gmac), gmac, gmac_expected); // High memset(&gkcrypt, 0, sizeof(gkcrypt)); memcpy(gkcrypt.key_gmac_current, gkcrypt_key, sizeof(gkcrypt.key_gmac_current)); memcpy(gkcrypt.iv, gkcrypt_iv, sizeof(gkcrypt.iv)); gkcrypt.key_buf = NULL; gkcrypt.key_buf_size = 0; gkcrypt.key_gmac_index_current = 0; err = chiaki_gkcrypt_gmac(&gkcrypt, key_pos_high, buf, sizeof(buf), gmac); if (err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(gmac), gmac, gmac_expected_high); return MUNIT_OK; } static MunitResult test_gmac_multiple_of_key_refresh(const MunitParameter params[], void *user) { static const uint8_t handshake_key[] = { 0x70, 0x58, 0x37, 0x50, 0x91, 0xea, 0xd1, 0x37, 0x71, 0x58, 0xec, 0xb3, 0xb, 0xea, 0x23, 0x87 }; static const uint8_t ecdh_secret[] = { 0x3c, 0x3a, 0xf0, 0xec, 0xd6, 0x33, 0x1b, 0xb1, 0x6d, 0x24, 0x4f, 0x48, 0x19, 0xde, 0x6, 0x3d, 0xc7, 0xe, 0xac, 0x95, 0x70, 0xac, 0x24, 0x92, 0x86, 0xa7, 0x24, 0xd0, 0x7a, 0x37, 0x55, 0x52 }; static const uint8_t data[] = { 0x3, 0x11, 0xa4, 0x11, 0xa5, 00, 0x2, 0x50, 0x21, 0x5, 00, 00, 00, 00, 00, 0x6b, 0x1d, 0xe0, 00, 0x83, 0xf1, 0xc4, 0x79, 0x71, 0xe4, 0x67, 0x7c, 0xcc, 0xb7, 0x92, 0x7, 0x8b, 0xba, 0x8a, 0x8, 0xd6, 0x62, 0xf5, 0x7, 0x5d, 0x4a, 0x20, 0x14, 0xb3, 0xe7, 0xe, 0x5c, 0x77, 0xfd, 0x6d, 0x60, 0xa3, 0xc5, 0x48, 0xa9, 0xc0, 0x61, 0xf9, 0x84, 0xf6, 0x37, 0x62, 0xac, 0xbc, 0x1f, 0x5d, 0xe4, 0x40, 0x90, 0x54, 0x71, 0x37, 0xab, 0x33, 0x7e, 0xaa, 0xa5, 0xf4, 0xc4, 0x9, 0x3, 0xf4, 0xb6, 0xa1, 0x2f, 0x2, 0x27, 0x53, 0xc6, 0xa5, 0xb1, 0x9c, 0x8f, 0xb4, 0x69, 0xd6, 0x5c, 0x7f, 0x79, 0x5f, 0x14, 0x47, 0xcc, 0xa8, 0x8b, 0x37, 0xf7, 0x77, 0x6d, 0x1, 0xf4, 0x5b, 0x59, 0xca, 0x96, 0x73, 0xa, 0x20, 0xf3, 0x7a, 0xd1, 0xd2, 0x7f, 0xfe, 0xb6, 0x66, 0xf4, 0xdb, 0x10, 0xaf, 0xf3, 0x7, 0xee, 0x49, 0x8a, 0xa1, 0xa5, 0x73, 0xd8, 0x23, 0x83, 0xe, 0xc, 0xc, 0x3a, 0x49, 0xdc, 0xd8, 0xc, 0xc8, 0xe4, 0xb6, 0xf2, 0x3c, 0x6d, 0x25, 0x6a, 0x7d, 0xa0, 0x1c, 0x3a, 0x8e, 0xf, 0x3f, 0x25, 0x47, 0x11, 0x89, 0x67, 0xc4, 0xf9, 0xac, 0xc7, 0xe2, 0x93, 0x74, 0xc6, 0xfb, 0xdd, 0x48, 0x57, 0xae, 0x53, 0xe2, 0xf4, 0x17, 0x80, 0x62, 0xf3, 0x9, 0xd8, 0xd4, 0x7a, 0x46, 0x6b, 0x8, 0x76, 0x9c, 0x29, 0x81, 0x91, 0x4e, 0x57, 0xaf, 0x70, 0xb6, 0x32, 0x78, 0x98, 0x9e, 0x85, 0xf2, 0xe3, 0x69, 0x15, 0xaf, 0xd4, 0x32, 0x54, 0xf, 0xd4, 0xa2, 0xfc, 0xf5, 0x36, 0xdc, 0x6, 0x45, 0xf4, 0x6, 0xa3, 0x38, 0x21, 0x2, 0xfd, 0xf0, 0x51, 0x75, 0xea, 0xb1, 0xf6, 0x8e, 0x39, 0x35, 0xfd, 0x75, 0x74, 0xad, 0xbc, 0x3e, 0xfb, 0xee, 0x7d, 0xf, 0x2d, 0x76, 0xbe, 0xfd, 0xee }; static const uint8_t crypt_index = 3; static const uint64_t key_pos = 0x6b1de0; // % CHIAKI_GKCRYPT_GMAC_KEY_REFRESH_KEY_POS == 0 static const uint8_t gmac_expected[] = { 0x20, 0xcc, 0xa5, 0xf1 }; ChiakiLog log; ChiakiGKCrypt gkcrypt; chiaki_gkcrypt_init(&gkcrypt, &log, 0, crypt_index, handshake_key, ecdh_secret); uint8_t gmac[CHIAKI_GKCRYPT_GMAC_SIZE]; ChiakiErrorCode err = chiaki_gkcrypt_gmac(&gkcrypt, key_pos, data, sizeof(data), gmac); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(gmac), gmac, gmac_expected); chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_OK; } MunitTest tests_gkcrypt[] = { { "/ecdh", test_ecdh, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/key_stream", test_key_stream, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/en_decrypt", test_endecrypt, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/gmac", test_gmac, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/gen_gmac_key", test_gen_gmac_key, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/gmac_split", test_gmac_split, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/gmac_multiple_of_key_refresh", test_gmac_multiple_of_key_refresh, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } };chiaki-v2.2.0/test/http.c000066400000000000000000000040041447035777400152530ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include static char * const response_crlf = "HTTP/1.1 200 OK\r\n" "Content-type: text/html, text, plain\r\n" "Ultimate Ability: Gamer\r\n" "\r\n"; static char * const response_lf = "HTTP/1.1 200 Ok\n" "Content-type: text/html, text, plain\n" "Ultimate Ability:Gamer\n"; static void *test_http_response_parse_setup(const MunitParameter params[], void *user) { const char *response = NULL; if(strcmp(params[0].value, "crlf") == 0) response = response_crlf; else if(strcmp(params[0].value, "lf") == 0) response = response_lf; return response ? strdup(response) : NULL; } static void test_http_response_parse_teardown(void *fixture) { free(fixture); } static MunitResult test_http_response_parse(const MunitParameter params[], void *fixture) { char *buf = fixture; ChiakiHttpResponse parsed_response; ChiakiErrorCode err = chiaki_http_response_parse(&parsed_response, buf, strlen(buf)); munit_assert_int(err, ==, CHIAKI_ERR_SUCCESS); munit_assert_int(parsed_response.code, ==, 200); ChiakiHttpHeader *header = parsed_response.headers; munit_assert_ptr_not_null(header); munit_assert_string_equal(header->key, "Ultimate Ability"); munit_assert_string_equal(header->value, "Gamer"); header = header->next; munit_assert_ptr_not_null(header); munit_assert_string_equal(header->key, "Content-type"); munit_assert_string_equal(header->value, "text/html, text, plain"); header = header->next; munit_assert_ptr_null(header); chiaki_http_response_fini(&parsed_response); return MUNIT_OK; } static char *response_params[] = { "crlf", "lf", NULL }; static MunitParameterEnum params[] = { { "line ending", response_params }, { NULL, NULL } }; MunitTest tests_http[] = { { "/response_parse", test_http_response_parse, test_http_response_parse_setup, test_http_response_parse_teardown, MUNIT_TEST_OPTION_NONE, params }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } };chiaki-v2.2.0/test/keystate.c000066400000000000000000000045121447035777400161310ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include static MunitResult test_key_state(const MunitParameter params[], void *user) { ChiakiKeyState state; chiaki_key_state_init(&state); uint64_t pos = chiaki_key_state_request_pos(&state, 0, true); munit_assert_uint64(pos, ==, 0); pos = chiaki_key_state_request_pos(&state, 0x1337, true); munit_assert_uint64(pos, ==, 0x1337); pos = chiaki_key_state_request_pos(&state, 0xffff0000, true); munit_assert_uint64(pos, ==, 0xffff0000); pos = chiaki_key_state_request_pos(&state, 0x1337, true); munit_assert_uint64(pos, ==, 0x100001337); pos = chiaki_key_state_request_pos(&state, 0xffff1337, true); munit_assert_uint64(pos, ==, 0xffff1337); pos = chiaki_key_state_request_pos(&state, 0x50000000, true); munit_assert_uint64(pos, ==, 0x150000000); pos = chiaki_key_state_request_pos(&state, 0xb0000000, true); munit_assert_uint64(pos, ==, 0x1b0000000); pos = chiaki_key_state_request_pos(&state, 0x00000000, true); munit_assert_uint64(pos, ==, 0x200000000); return MUNIT_OK; } static MunitResult test_key_state_nocommit(const MunitParameter params[], void *user) { ChiakiKeyState state; chiaki_key_state_init(&state); uint64_t pos = chiaki_key_state_request_pos(&state, 0, false); munit_assert_uint64(pos, ==, 0); pos = chiaki_key_state_request_pos(&state, 0x1337, false); munit_assert_uint64(pos, ==, 0x1337); pos = chiaki_key_state_request_pos(&state, 0xffff0000, false); munit_assert_uint64(pos, ==, 0xffff0000); pos = chiaki_key_state_request_pos(&state, 0x1337, false); munit_assert_uint64(pos, ==, 0x1337); pos = chiaki_key_state_request_pos(&state, 0xffff1337, false); munit_assert_uint64(pos, ==, 0xffff1337); pos = chiaki_key_state_request_pos(&state, 0x50000000, false); munit_assert_uint64(pos, ==, 0x50000000); pos = chiaki_key_state_request_pos(&state, 0xb0000000, false); munit_assert_uint64(pos, ==, 0xb0000000); pos = chiaki_key_state_request_pos(&state, 0x00000000, false); munit_assert_uint64(pos, ==, 0); return MUNIT_OK; } MunitTest tests_key_state[] = { { "/key_state", test_key_state, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/key_state_nocommit", test_key_state_nocommit, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } }; chiaki-v2.2.0/test/main.c000066400000000000000000000025161447035777400152260ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include extern MunitTest tests_seq_num[]; extern MunitTest tests_key_state[]; extern MunitTest tests_reorder_queue[]; extern MunitTest tests_http[]; extern MunitTest tests_rpcrypt[]; extern MunitTest tests_gkcrypt[]; extern MunitTest tests_takion[]; extern MunitTest tests_fec[]; extern MunitTest tests_regist[]; static MunitSuite suites[] = { { "/seq_num", tests_seq_num, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { "/key_state", tests_key_state, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { "/reorder_queue", tests_reorder_queue, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { "/http", tests_http, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { "/rpcrypt", tests_rpcrypt, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { "/gkcrypt", tests_gkcrypt, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { "/takion", tests_takion, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { "/fec", tests_fec, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { "/regist", tests_regist, NULL, 1, MUNIT_SUITE_OPTION_NONE }, { NULL, NULL, NULL, 0, MUNIT_SUITE_OPTION_NONE } }; static const MunitSuite suite_main = { "/chiaki", NULL, suites, 1, MUNIT_SUITE_OPTION_NONE }; int main(int argc, char *argv[]) { return munit_suite_main(&suite_main, NULL, argc, argv); } chiaki-v2.2.0/test/munit/000077500000000000000000000000001447035777400152665ustar00rootroot00000000000000chiaki-v2.2.0/test/regist.c000066400000000000000000000125231447035777400155760ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include static const uint8_t ambassador[CHIAKI_RPCRYPT_KEY_SIZE] = { 0x13, 0x37, 0xde, 0xad, 0xbe, 0xef, 0xc0, 0xff, 0xee, 0x42, 0x63, 0x68, 0x69, 0x61, 0x6b, 0x69 }; static const uint32_t pin = 13374201; static const char * const psn_id = "ChiakiNanami1337"; static MunitResult test_aeropause_ps4_pre10(const MunitParameter params[], void *user) { uint8_t expected[CHIAKI_RPCRYPT_KEY_SIZE] = { 0x0b, 0xe1, 0x2f, 0xbb, 0x4c, 0x7c, 0x99, 0x4a, 0x41, 0x1e, 0x2d, 0x4c, 0xa4, 0x19, 0xf4, 0x35 }; uint8_t aeropause[CHIAKI_RPCRYPT_KEY_SIZE]; chiaki_rpcrypt_aeropause_ps4_pre10(aeropause, ambassador); munit_assert_memory_equal(sizeof(expected), aeropause, expected); return MUNIT_OK; } static MunitResult test_pin_bright_ps4_pre10(const MunitParameter params[], void *user) { uint8_t expected[CHIAKI_RPCRYPT_KEY_SIZE] = { 0x3f, 0xd0, 0xd6, 0x4f, 0xdc, 0xbb, 0x3e, 0xcc, 0x50, 0xba, 0xed, 0xef, 0x97, 0x34, 0xc7, 0xc9 }; ChiakiRPCrypt rpcrypt; chiaki_rpcrypt_init_regist_ps4_pre10(&rpcrypt, ambassador, pin); munit_assert_memory_equal(sizeof(expected), rpcrypt.bright, expected); return MUNIT_OK; } static MunitResult test_request_payload_ps4_pre10(const MunitParameter params[], void *user) { uint8_t expected[] = { 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x0b, 0xe1, 0x2f, 0xbb, 0x4c, 0x7c, 0x99, 0x4a, 0x41, 0x1e, 0x2d, 0x4c, 0xa4, 0x19, 0xf4, 0x35, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0xf2, 0xfd, 0x4d, 0xdc, 0x86, 0x21, 0xda, 0x3d, 0x9f, 0x35, 0xf3, 0xdf, 0x82, 0x58, 0x65, 0x08, 0x6f, 0xb5, 0xee, 0xd1, 0x1e, 0xdd, 0xdd, 0xaa, 0x5a, 0xce, 0x28, 0xdf, 0x2f, 0x13, 0x9c, 0x0c, 0x66, 0x6f, 0xec, 0x1c, 0x5d, 0xd1, 0x9f, 0x08, 0x15, 0xdd, 0x5c, 0x61, 0x57, 0xe6, 0xad, 0x69, 0x60, 0x12, 0x67, 0x2d, 0x4b, 0x64, }; ChiakiRPCrypt rpcrypt; uint8_t payload[0x400]; size_t payload_size = sizeof(payload); ChiakiErrorCode err = chiaki_regist_request_payload_format(CHIAKI_TARGET_PS4_9, ambassador, payload, &payload_size, &rpcrypt, psn_id, NULL, pin); munit_assert_int(err, ==, CHIAKI_ERR_SUCCESS); munit_assert_size(payload_size, ==, sizeof(expected)); munit_assert_memory_equal(sizeof(expected), payload, expected); return MUNIT_OK; } MunitTest tests_regist[] = { { "/aeropause_ps4_pre10", test_aeropause_ps4_pre10, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/pin_bright_ps4_pre10", test_pin_bright_ps4_pre10, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/request_payload_ps4_pre10", test_request_payload_ps4_pre10, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } }; chiaki-v2.2.0/test/reorderqueue.c000066400000000000000000000145671447035777400170220ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #define DROP_RECORD_MAX 16 typedef struct drop_record_t { uint64_t count[DROP_RECORD_MAX]; uint64_t seq_num[DROP_RECORD_MAX]; bool failed; } DropRecord; static void drop(uint64_t seq_num, void *elem_user, void *cb_user) { DropRecord *record = cb_user; uint64_t v = (uint64_t)(size_t)elem_user; if(v > DROP_RECORD_MAX) { record->failed = true; return; } record->count[v]++; record->seq_num[v] = seq_num; } static MunitResult test_reorder_queue_16(const MunitParameter params[], void *test_user) { ChiakiReorderQueue queue; ChiakiErrorCode err = chiaki_reorder_queue_init_16(&queue, 2, 42); munit_assert_int(err, ==, CHIAKI_ERR_SUCCESS); munit_assert_size(chiaki_reorder_queue_size(&queue), ==, 4); munit_assert_uint64(chiaki_reorder_queue_count(&queue), ==, 0); chiaki_reorder_queue_set_drop_strategy(&queue, CHIAKI_REORDER_QUEUE_DROP_STRATEGY_END); DropRecord drop_record = { 0 }; chiaki_reorder_queue_set_drop_cb(&queue, drop, &drop_record); uint64_t seq_num = 0; void *user = NULL; // pull from empty bool pulled = chiaki_reorder_queue_pull(&queue, &seq_num, &user); munit_assert(!pulled); munit_assert_uint64(chiaki_reorder_queue_count(&queue), ==, 0); munit_assert(!drop_record.failed); // push one chiaki_reorder_queue_push(&queue, 42, (void *)0); munit_assert_uint64(chiaki_reorder_queue_count(&queue), ==, 1); // pull one pulled = chiaki_reorder_queue_pull(&queue, &seq_num, &user); munit_assert(pulled); munit_assert_uint64(chiaki_reorder_queue_count(&queue), ==, 0); munit_assert(!drop_record.failed); munit_assert_uint64(drop_record.count[0], ==, 0); munit_assert_uint64((uint64_t)(size_t)user, ==, 0); munit_assert_uint64(seq_num, ==, 42); // push outdated chiaki_reorder_queue_push(&queue, 42, (void *)0); munit_assert_uint64(chiaki_reorder_queue_count(&queue), ==, 0); munit_assert(!drop_record.failed); munit_assert_uint64(drop_record.count[0], ==, 1); munit_assert_uint64(drop_record.seq_num[0], ==, 42); memset(&drop_record, 0, sizeof(drop_record)); // push until full out of order and try to pull in between chiaki_reorder_queue_push(&queue, 46, (void *)1); pulled = chiaki_reorder_queue_pull(&queue, &seq_num, &user); munit_assert(!pulled); chiaki_reorder_queue_push(&queue, 45, (void *)2); pulled = chiaki_reorder_queue_pull(&queue, &seq_num, &user); munit_assert(!pulled); chiaki_reorder_queue_push(&queue, 44, (void *)3); pulled = chiaki_reorder_queue_pull(&queue, &seq_num, &user); munit_assert(!pulled); chiaki_reorder_queue_push(&queue, 43, (void *)4); munit_assert(!drop_record.failed); for(size_t i=0; i #include static MunitResult test_bright_ambassador_ps4_pre10(const MunitParameter params[], void *user) { static const uint8_t nonce[] = { 0x43, 0x9, 0x67, 0xae, 0x36, 0x4b, 0x1c, 0x45, 0x26, 0x62, 0x37, 0x7a, 0xbf, 0x3f, 0xe9, 0x39 }; static const uint8_t morning[] = { 0xd2, 0x78, 0x9f, 0x51, 0x85, 0xa7, 0x99, 0xa2, 0x44, 0x52, 0x77, 0x9c, 0x2b, 0x83, 0xcf, 0x7 }; static const uint8_t bright_expected[] = { 0xa4, 0x4e, 0x2a, 0x16, 0x5e, 0x20, 0xd3, 0xf, 0xaa, 0x11, 0x8b, 0xc7, 0x7c, 0xa7, 0xdc, 0x11 }; static const uint8_t ambassador_expected[] = { 0x1d, 0xa8, 0xb9, 0x1f, 0x6e, 0x26, 0x64, 0x2e, 0xbc, 0x8, 0x8b, 0x0, 0x4f, 0x1, 0x5b, 0x52 }; uint8_t bright[CHIAKI_RPCRYPT_KEY_SIZE]; uint8_t ambassador[CHIAKI_RPCRYPT_KEY_SIZE]; chiaki_rpcrypt_bright_ambassador(CHIAKI_TARGET_PS4_9, bright, ambassador, nonce, morning); munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, bright, bright_expected); munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, ambassador, ambassador_expected); return MUNIT_OK; } static MunitResult test_bright_ambassador(const MunitParameter params[], void *user) { static const uint8_t nonce_local[] = { 0xAE, 0x92, 0xE7, 0x64, 0x88, 0x26, 0x51, 0xEF, 0x89, 0x01, 0x8C, 0xFA, 0x69, 0x6C, 0x69, 0x38 }; static const uint8_t morning_local[] = { 0x74, 0xA5, 0x9C, 0x96, 0x93, 0xC2, 0x08, 0x3B, 0xA6, 0xA8, 0x4B, 0xA0, 0x50, 0xFA, 0x8E, 0x5A }; static const uint8_t ambassador_expected[] = { 0x92, 0xBE, 0xE2, 0x19, 0xB9, 0xD5, 0xB1, 0xAB, 0xC6, 0x49, 0x45, 0x77, 0xA4, 0x21, 0xE9, 0xBD }; static const uint8_t bright_expected[] = { 0x67, 0x40, 0x8C, 0x5E, 0x65, 0x66, 0x5A, 0xD2, 0x91, 0xA8, 0x32, 0xEB, 0xE2, 0xD9, 0x0A, 0xBB }; uint8_t bright[CHIAKI_RPCRYPT_KEY_SIZE]; uint8_t ambassador[CHIAKI_RPCRYPT_KEY_SIZE]; chiaki_rpcrypt_bright_ambassador(CHIAKI_TARGET_PS4_10, bright, ambassador, nonce_local, morning_local); munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, ambassador, ambassador_expected); munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, bright, bright_expected); return MUNIT_OK; } static MunitResult test_iv_ps4_pre10(const MunitParameter params[], void *user) { static const uint8_t nonce[] = { 0x43, 0x9, 0x67, 0xae, 0x36, 0x4b, 0x1c, 0x45, 0x26, 0x62, 0x37, 0x7a, 0xbf, 0x3f, 0xe9, 0x39 }; static const uint8_t morning[] = { 0xd2, 0x78, 0x9f, 0x51, 0x85, 0xa7, 0x99, 0xa2, 0x44, 0x52, 0x77, 0x9c, 0x2b, 0x83, 0xcf, 0x7 }; static const uint8_t iv_a_expected[] = { 0x6, 0x29, 0xbe, 0x4, 0xe9, 0x91, 0x1c, 0x48, 0xb4, 0x5c, 0x2, 0x6d, 0xb7, 0xb7, 0x88, 0x46 }; static const uint8_t iv_b_expected[] = { 0x3f, 0xd0, 0x83, 0xa, 0xc7, 0x30, 0xfc, 0x56, 0x75, 0x2d, 0xbe, 0xb8, 0x2c, 0x68, 0xa7, 0x4 }; ChiakiRPCrypt rpcrypt; ChiakiErrorCode err; chiaki_rpcrypt_init_auth(&rpcrypt, CHIAKI_TARGET_PS4_9, nonce, morning); uint8_t iv[CHIAKI_RPCRYPT_KEY_SIZE]; err = chiaki_rpcrypt_generate_iv(&rpcrypt, iv, 0); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, iv, iv_a_expected); err = chiaki_rpcrypt_generate_iv(&rpcrypt, iv, 0); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, iv, iv_a_expected); err = chiaki_rpcrypt_generate_iv(&rpcrypt, iv, 0x0102030405060708); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, iv, iv_b_expected); err = chiaki_rpcrypt_generate_iv(&rpcrypt, iv, 0x0102030405060708); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, iv, iv_b_expected); return MUNIT_OK; } static MunitResult test_iv_regist_ps4(const MunitParameter params[], void *user) { static const uint8_t ambassador[] = { 0x3e, 0x7e, 0x7a, 0x82, 0x59, 0x73, 0xad, 0xab, 0x2f, 0x69, 0x43, 0x46, 0xbd, 0x44, 0xda, 0xb5 }; static const uint8_t iv_expected[] = { 0xac, 0x48, 0x99, 0x77, 0xf9, 0x2a, 0xc5, 0x5b, 0xb9, 0x09, 0x3c, 0x33, 0xb6, 0x11, 0x3c, 0x46 }; ChiakiRPCrypt rpcrypt; ChiakiErrorCode err; chiaki_rpcrypt_init_regist(&rpcrypt, CHIAKI_TARGET_PS4_10, ambassador, 0, 0); uint8_t iv[CHIAKI_RPCRYPT_KEY_SIZE]; err = chiaki_rpcrypt_generate_iv(&rpcrypt, iv, 0); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, iv, iv_expected); return MUNIT_OK; } static MunitResult test_iv_regist_ps5(const MunitParameter params[], void *user) { static const uint8_t ambassador[] = { 0x3e, 0x7e, 0x7a, 0x82, 0x59, 0x73, 0xad, 0xab, 0x2f, 0x69, 0x43, 0x46, 0xbd, 0x44, 0xda, 0xb5 }; static const uint8_t iv_expected[] = { 0x90, 0x44, 0x40, 0x82, 0x73, 0xf8, 0x04, 0x4d, 0xca, 0x76, 0x7b, 0x5a, 0x16, 0x39, 0x4d, 0x64 }; ChiakiRPCrypt rpcrypt; ChiakiErrorCode err; chiaki_rpcrypt_init_regist(&rpcrypt, CHIAKI_TARGET_PS5_1, ambassador, 0, 0); uint8_t iv[CHIAKI_RPCRYPT_KEY_SIZE]; err = chiaki_rpcrypt_generate_iv(&rpcrypt, iv, 0); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, iv, iv_expected); return MUNIT_OK; } static MunitResult test_bright_regist_ps4(const MunitParameter params[], void *user) { static const uint8_t ambassador[] = { 0xdc, 0xa1, 0xc8, 0x4d, 0xfe, 0x50, 0xd6, 0x57, 0x22, 0xda, 0x09, 0x65, 0x42, 0x31, 0xe7, 0xc2 }; static const uint8_t bright_expected[] = { 0xed, 0xfc, 0x1d, 0xc5, 0xa2, 0xfe, 0x2d, 0x7f, 0x09, 0x19, 0x85, 0x75, 0x33, 0x6c, 0x13, 0x16 }; size_t key_0_off = 0x1e; ChiakiRPCrypt rpcrypt; ChiakiErrorCode err; chiaki_rpcrypt_init_regist(&rpcrypt, CHIAKI_TARGET_PS4_10, ambassador, key_0_off, 78703893); munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, rpcrypt.bright, bright_expected); return MUNIT_OK; } static MunitResult test_bright_regist_ps5(const MunitParameter params[], void *user) { static const uint8_t ambassador[] = { 0xdc, 0xa1, 0xc8, 0x4d, 0xfe, 0x50, 0xd6, 0x57, 0x22, 0xda, 0x09, 0x65, 0x42, 0x31, 0xe7, 0xc2 }; static const uint8_t bright_expected[] = { 0xe2, 0x9d, 0x64, 0x4c, 0x14, 0x1b, 0x9d, 0x61, 0x74, 0x31, 0xa5, 0x6d, 0x34, 0xcf, 0xc1, 0x7f }; size_t key_0_off = 0x1e; ChiakiRPCrypt rpcrypt; ChiakiErrorCode err; chiaki_rpcrypt_init_regist(&rpcrypt, CHIAKI_TARGET_PS5_1, ambassador, key_0_off, 78703893); munit_assert_memory_equal(CHIAKI_RPCRYPT_KEY_SIZE, rpcrypt.bright, bright_expected); return MUNIT_OK; } static MunitResult test_encrypt_ps4_pre10(const MunitParameter params[], void *user) { static const uint8_t nonce[] = { 0x43, 0x9, 0x67, 0xae, 0x36, 0x4b, 0x1c, 0x45, 0x26, 0x62, 0x37, 0x7a, 0xbf, 0x3f, 0xe9, 0x39 }; static const uint8_t morning[] = { 0xd2, 0x78, 0x9f, 0x51, 0x85, 0xa7, 0x99, 0xa2, 0x44, 0x52, 0x77, 0x9c, 0x2b, 0x83, 0xcf, 0x7 }; ChiakiRPCrypt rpcrypt; ChiakiErrorCode err; chiaki_rpcrypt_init_auth(&rpcrypt, CHIAKI_TARGET_PS4_9, nonce, morning); // less than block size uint8_t buf_a[] = { 0x13, 0x37, 0xc0, 0xff, 0xee }; static const uint8_t cipher_expected_a[] = { 0x40, 0x48, 0x63, 0xeb, 0xb4 }; err = chiaki_rpcrypt_encrypt(&rpcrypt, 0x0102030405060708, buf_a, buf_a, sizeof(buf_a)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(buf_a), buf_a, cipher_expected_a); // 1x block size uint8_t buf_b[] = { 0xdf, 0xa8, 0xa3, 0xd2, 0x6a, 0xd7, 0xf3, 0x4c, 0x4f, 0x87, 0x4c, 0xeb, 0x8c, 0x57, 0xfb, 0x3f }; static const uint8_t cipher_expected_b[] = { 0x8c, 0xd7, 0x0, 0xc6, 0x30, 0x25, 0x3a, 0x18, 0x15, 0x20, 0xeb, 0x26, 0xf7, 0xed, 0xab, 0x15 }; err = chiaki_rpcrypt_encrypt(&rpcrypt, 0x0102030405060708, buf_b, buf_b, sizeof(buf_b)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(buf_b), buf_b, cipher_expected_b); // more than block size, but not dividable by block size uint8_t buf_c[] = { 0x8, 0xd, 0x80, 0xc7, 0xb2, 0x2b, 0x9f, 0xf3, 0xe2, 0xd7, 0xc8, 0xa5, 0xb0, 0x92, 0xd5, 0x0, 0x8d, 0xe6, 0xd7, 0x74 }; static const uint8_t cipher_expected_c[] = { 0x5b, 0x72, 0x23, 0xd3, 0xe8, 0xd9, 0x56, 0xa7, 0xb8, 0x70, 0x6f, 0x68, 0xcb, 0x28, 0x85, 0x2a, 0x6, 0xa5, 0xd2, 0xe0 }; err = chiaki_rpcrypt_encrypt(&rpcrypt, 0x0102030405060708, buf_c, buf_c, sizeof(buf_c)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(buf_c), buf_c, cipher_expected_c); // 2x block size uint8_t buf_d[] = { 0xa1, 0x6, 0x91, 0x1b, 0x49, 0x74, 0xe0, 0x73, 0x3, 0xe8, 0x47, 0x42, 0x8, 0x4d, 0x83, 0x4e, 0xf3, 0x26, 0x14, 0x7b, 0xde, 0x2d, 0xf6, 0x7d, 0x47, 0x96, 0x8c, 0x3b, 0x66, 0x95, 0x7e, 0x5d }; static const uint8_t cipher_expected_d[] = { 0xf2, 0x79, 0x32, 0xf, 0x13, 0x86, 0x29, 0x27, 0x59, 0x4f, 0xe0, 0x8f, 0x73, 0xf7, 0xd3, 0x64, 0x9d, 0x80, 0x7e, 0x90, 0xd1, 0xf5, 0xd8, 0x18, 0xe7, 0xbe, 0x16, 0x29, 0xfb, 0x48, 0x2b, 0xf8 }; err = chiaki_rpcrypt_encrypt(&rpcrypt, 0x0102030405060708, buf_d, buf_d, sizeof(buf_d)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(buf_d), buf_d, cipher_expected_d); return MUNIT_OK; } static MunitResult test_decrypt_ps4_pre10(const MunitParameter params[], void *user) { static const uint8_t nonce[] = { 0x43, 0x9, 0x67, 0xae, 0x36, 0x4b, 0x1c, 0x45, 0x26, 0x62, 0x37, 0x7a, 0xbf, 0x3f, 0xe9, 0x39 }; static const uint8_t morning[] = { 0xd2, 0x78, 0x9f, 0x51, 0x85, 0xa7, 0x99, 0xa2, 0x44, 0x52, 0x77, 0x9c, 0x2b, 0x83, 0xcf, 0x7 }; ChiakiRPCrypt rpcrypt; ChiakiErrorCode err; chiaki_rpcrypt_init_auth(&rpcrypt, CHIAKI_TARGET_PS4_9, nonce, morning); // less than block size uint8_t buf_a[] = { 0x8d, 0xd2, 0x1d, 0xfb }; static const uint8_t expected_a[] = { 0xde, 0xad, 0xbe, 0xef }; err = chiaki_rpcrypt_decrypt(&rpcrypt, 0x0102030405060708, buf_a, buf_a, sizeof(buf_a)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(buf_a), buf_a, expected_a); // 1x block size uint8_t buf_b[] = { 0xeb, 0x22, 0x4e, 0xb7, 0x73, 0x94, 0x6a, 0x31, 0x6e, 0xdd, 0xe5, 0x87, 0x29, 0xdc, 0xd5, 0x6b }; static const uint8_t expected_b[] = { 0xb8, 0x5d, 0xed, 0xa3, 0x29, 0x66, 0xa3, 0x65, 0x34, 0x7a, 0x42, 0x4a, 0x52, 0x66, 0x85, 0x41 }; err = chiaki_rpcrypt_decrypt(&rpcrypt, 0x0102030405060708, buf_b, buf_b, sizeof(buf_b)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(buf_b), buf_b, expected_b); // more than block size, but not dividable by block size uint8_t buf_c[] = { 0x2b, 0xd8, 0x1d, 0x86, 0x39, 0xe, 0x2d, 0xd7, 0xde, 0x2d, 0xb5, 0xbc, 0xba, 0x5e, 0xe9, 0x78, 0xee, 0xc9, 0x3b, 0x18 }; static const uint8_t expected_c[] = { 0x78, 0xa7, 0xbe, 0x92, 0x63, 0xfc, 0xe4, 0x83, 0x84, 0x8a, 0x12, 0x71, 0xc1, 0xe4, 0xb9, 0x52, 0xf2, 0xbb, 0xcd, 0x39 }; err = chiaki_rpcrypt_decrypt(&rpcrypt, 0x0102030405060708, buf_c, buf_c, sizeof(buf_c)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(buf_c), buf_c, expected_c); // 2x block size uint8_t buf_d[] = { 0x2b, 0x80, 0xda, 0xa0, 0x5e, 0x8d, 0x2e, 0x1d, 0xe1, 0x95, 0x16, 0xb1, 0xed, 0xd2, 0xc3, 0x8a, 0xb8, 0xcc, 0x6c, 0x42, 0x57, 0x8d, 0xc5, 0x7d, 0xf1, 0x5c, 0x4, 0x42, 0x97, 0x25, 0x3a, 0x91 }; static const uint8_t expected_d[] = { 0x78, 0xff, 0x79, 0xb4, 0x4, 0x7f, 0xe7, 0x49, 0xbb, 0x32, 0xb1, 0x7c, 0x96, 0x68, 0x93, 0xa0, 0x86, 0xa6, 0x56, 0x38, 0x79, 0x2a, 0xa8, 0x3, 0x67, 0x9b, 0xf2, 0x82, 0x2d, 0x1a, 0x8, 0x29 }; err = chiaki_rpcrypt_decrypt(&rpcrypt, 0x0102030405060708, buf_d, buf_d, sizeof(buf_d)); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; munit_assert_memory_equal(sizeof(buf_d), buf_d, expected_d); return MUNIT_OK; } MunitTest tests_rpcrypt[] = { { "/bright_ambassador_ps4_pre10", test_bright_ambassador_ps4_pre10, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/bright_ambassador", test_bright_ambassador, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/iv_ps4_pre10", test_iv_ps4_pre10, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/iv_regist_ps4", test_iv_regist_ps4, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/iv_regist_ps5", test_iv_regist_ps5, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/bright_regist_ps4", test_bright_regist_ps4, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/bright_regist_ps5", test_bright_regist_ps5, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/encrypt_ps4_pre10", test_encrypt_ps4_pre10, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/decrypt_ps4_pre10", test_decrypt_ps4_pre10, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } }; chiaki-v2.2.0/test/seqnum.c000066400000000000000000000027011447035777400156060ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include static MunitResult test_seq_num_16(const MunitParameter params[], void *user) { ChiakiSeqNum16 a = 0; do { ChiakiSeqNum16 b = a + 1; munit_assert(chiaki_seq_num_16_gt(b, a)); munit_assert(!chiaki_seq_num_16_gt(a, b)); munit_assert(chiaki_seq_num_16_lt(a, b)); munit_assert(!chiaki_seq_num_16_lt(b, a)); a = b; } while(a); a = 0; do { ChiakiSeqNum16 b = a + 0xfff; munit_assert(chiaki_seq_num_16_gt(b, a)); munit_assert(!chiaki_seq_num_16_gt(a, b)); munit_assert(chiaki_seq_num_16_lt(a, b)); munit_assert(!chiaki_seq_num_16_lt(b, a)); a++; } while(a); munit_assert(chiaki_seq_num_16_gt(1, 0xfff5)); munit_assert(!chiaki_seq_num_16_gt(0xfff5, 1)); return MUNIT_OK; } static MunitResult test_seq_num_32(const MunitParameter params[], void *user) { munit_assert(chiaki_seq_num_32_gt(1, 0)); munit_assert(!chiaki_seq_num_32_gt(0, 1)); munit_assert(!chiaki_seq_num_32_lt(1, 0)); munit_assert(chiaki_seq_num_32_lt(0, 1)); munit_assert(chiaki_seq_num_32_gt(1, 0xfffffff5)); munit_assert(!chiaki_seq_num_32_gt(0xfffffff5, 1)); return MUNIT_OK; } MunitTest tests_seq_num[] = { { "/seq_num_16", test_seq_num_16, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/seq_num_32", test_seq_num_32, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } };chiaki-v2.2.0/test/takion.c000066400000000000000000000157541447035777400155770ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include #include #include #include #define CHIAKI_UNIT_TEST #include "../lib/src/takionsendbuffer.c" #include "test_log.h" static MunitResult test_av_packet_parse(const MunitParameter params[], void *user) { uint8_t packet[] = { 0x2, 0x0, 0x2d, 0x0, 0x5, 0x0, 0xc0, 0x1c, 0x1, 0x3, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0xe4, 0x10, 0x3, 0x67, 0x0, 0x29, 0xf3, 0x2f, 0x98, 0xf6, 0x99, 0x82, 0x83, 0x78, 0xdb, 0x29, 0x43, 0xa9, 0xe5, 0x88, 0xf2, 0x11, 0x4, 0x20, 0xe6, 0x20, 0x96, 0xe9, 0x6, 0xee, 0xd, 0x27, 0xa1, 0x83, 0x82, 0x88, 0xe6, 0x21, 0x49, 0x2, 0x75, 0x74, 0x32, 0x5b, 0xf6, 0xe9, 0xdc, 0x93, 0xea, 0x31, 0x88, 0xd, 0x2b, 0x4b, 0x34, 0xf9, 0xec, 0x1b, 0x26, 0xcc, 0xbb, 0xbb, 0x81, 0xf2, 0xd9, 0x2d, 0x8e, 0xa1, 0xb9, 0xe2, 0xb3, 0xca, 0xb2, 0x7d, 0xa3, 0x31, 0xf0, 0x42, 0xb7, 0xb6, 0x1e, 0x8f, 0x6d, 0xa2, 0x70, 0x46, 0xfd, 0x7e, 0x9b, 0x60, 0x85, 0xb0, 0xed, 0x4f, 0x20, 0xb5, 0x1, 0x71, 0xa9, 0xaa, 0x18, 0x6b, 0x2a, 0x90, 0xf3, 0xa7, 0x84, 0x36, 0xfd, 0x6d, 0x14, 0x83, 0x68, 0xa3, 0x9b, 0x3a, 0xc8, 0xd4, 0x3a, 0x31, 0xa0, 0x9b, 0x61, 0xde, 0xa7, 0xed, 0x46, 0xb4, 0xa3, 0xdf, 0x3f, 0x44, 0x8f, 0xad, 0x64, 0x9, 0xfc, 0x7a, 0xe7, 0x24, 0xf0, 0xd2, 0x42, 0xd3, 0x57, 0x5a, 0x76, 0x0, 0xc5, 0xe0, 0x93, 0xa9, 0xf5, 0x32, 0x5d, 0xee, 0xf7, 0x9d }; ChiakiKeyState key_state; chiaki_key_state_init(&key_state); ChiakiTakionAVPacket av_packet; ChiakiErrorCode err = chiaki_takion_v9_av_packet_parse(&av_packet, &key_state, packet, sizeof(packet)); munit_assert_int(err, ==, CHIAKI_ERR_SUCCESS); munit_assert(av_packet.is_video); munit_assert_uint16(av_packet.packet_index, ==, 45); munit_assert_uint16(av_packet.frame_index, ==, 5); // TODO: uses_nalu_info_structs munit_assert_uint16(av_packet.unit_index, ==, 6); munit_assert_uint16(av_packet.units_in_frame_total, ==, 8); munit_assert_uint16(av_packet.units_in_frame_fec, ==, 1); munit_assert_uint32(av_packet.codec, ==, 3); // munit_assert_uint16(av_packet.word_at_0x18, ==, 871); munit_assert_uint8(av_packet.adaptive_stream_index, ==, 0); // munit_assert_uint8(av_packet.byte_at_0x2c, ==, 0); munit_assert_ptr_equal(av_packet.data, packet + 0x15); munit_assert_size(av_packet.data_size, ==, 0x99); return MUNIT_OK; } static MunitResult test_av_packet_parse_real_video(const MunitParameter params[], void *user) { #include "takion_av_packet_parse_real_video.inl" return MUNIT_OK; } static void random_seqnums(ChiakiSeqNum32 *nums, size_t count) { for(size_t i=0; imutex) != CHIAKI_ERR_SUCCESS) return false; if(send_buffer->packets_count != nums_expected_count) goto fail; for(size_t i=0; ipackets_count; j++) { if(send_buffer->packets[j].seq_num == nums_expected[i]) { found = true; break; } } if(!found) goto fail; } chiaki_mutex_unlock(&send_buffer->mutex); return true; fail: chiaki_mutex_unlock(&send_buffer->mutex); return false; } static void seqnums_ack(ChiakiSeqNum32 *nums, size_t *nums_count, ChiakiSeqNum32 ack_num) { // simulate ack of ack_num for(size_t i=0; i<*nums_count; i++) { if(nums[i] == ack_num || chiaki_seq_num_32_lt(nums[i], ack_num)) { for(size_t j=i+1; j<*nums_count; j++) nums[j-1] = nums[j]; (*nums_count)--; i--; } } } static MunitResult test_takion_send_buffer(const MunitParameter params[], void *user) { #define nums_count 0x30 ChiakiTakionSendBuffer send_buffer; ChiakiErrorCode err = chiaki_takion_send_buffer_init(&send_buffer, NULL, nums_count); munit_assert_int(err, ==, CHIAKI_ERR_SUCCESS); send_buffer.log = get_test_log(); ChiakiSeqNum32 nums_expected[nums_count + 1]; random_seqnums(nums_expected, nums_count + 1); for(size_t i=0; i 0) { ChiakiSeqNum32 ack_num = nums_expected[nums_count_cur - 1] + munit_rand_int_range(-1, 1) * munit_rand_int_range(1, 32); chiaki_takion_send_buffer_ack(&send_buffer, ack_num, NULL, NULL); // TODO: test acked seqnums params seqnums_ack(nums_expected, &nums_count_cur, ack_num); bool correct = check_send_buffer_contents(&send_buffer, nums_expected, nums_count_cur); munit_assert(correct); } chiaki_takion_send_buffer_fini(&send_buffer); return MUNIT_OK; #undef nums_count } static MunitResult test_takion_format_congestion(const MunitParameter params[], void *user) { static const uint8_t handshake_key[] = { 0x54, 0x65, 0x4c, 0x34, 0x5c, 0xac, 0x56, 0xb8, 0xea, 0xe6, 0x15, 0x2a, 0xde, 0x1c, 0xe2, 0xe8 }; static const uint8_t ecdh_secret[] = { 0x00, 0x34, 0xf8, 0x21, 0xc7, 0xd9, 0xde, 0xa9, 0xe9, 0x11, 0xca, 0x5a, 0xd6, 0x7d, 0x11, 0xce, 0x4f, 0x02, 0xb1, 0xce, 0x1e, 0xe7, 0xc3, 0x8d, 0x54, 0x39, 0xfa, 0x64, 0xe3, 0xdb, 0xd8, 0x0d }; ChiakiGKCrypt gkcrypt; ChiakiErrorCode err = chiaki_gkcrypt_init(&gkcrypt, NULL, 0, 2, handshake_key, ecdh_secret); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; ChiakiTakionCongestionPacket packet; packet.word_0 = 0x42; packet.received = 26; packet.lost = 10; const uint64_t key_pos = 0x1e5; uint8_t buf[CHIAKI_TAKION_CONGESTION_PACKET_SIZE]; chiaki_takion_format_congestion(buf, &packet, key_pos); static const uint8_t buf_expected[] = { 0x05, 0x00, 0x42, 0x00, 0x1a, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xe5 }; munit_assert_memory_equal(sizeof(buf), buf, buf_expected); err = chiaki_takion_packet_mac(&gkcrypt, buf, sizeof(buf), key_pos, NULL, NULL); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; static const uint8_t buf_expected_mac[] = { 0x05, 0x00, 0x42, 0x00, 0x1a, 0x00, 0x0a, 0x64, 0x8a, 0x7c, 0x74, 0x00, 0x00, 0x01, 0xe5 }; munit_assert_memory_equal(sizeof(buf), buf, buf_expected_mac); chiaki_gkcrypt_fini(&gkcrypt); return MUNIT_OK; } MunitTest tests_takion[] = { { "/av_packet_parse", test_av_packet_parse, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/av_packet_parse_real_video", test_av_packet_parse_real_video, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/send_buffer", test_takion_send_buffer, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { "/format_congestion", test_takion_format_congestion, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL }, { NULL, NULL, NULL, NULL, MUNIT_TEST_OPTION_NONE, NULL } }; chiaki-v2.2.0/test/takion_av_packet_parse_real_video.inl000066400000000000000000002423411447035777400235310ustar00rootroot00000000000000// testcasetoc.py generated code begin uint8_t handshake_key[] = { 0xb3, 0x14, 0x88, 0x57, 0xb0, 0x46, 0x5, 0x96, 0x62, 0x37, 0xe0, 0x55, 0xb5, 0x60, 0xc4, 0x6 }; uint8_t ecdh_secret[] = { 0xaa, 0xbc, 0x10, 0x46, 0xd, 0x6d, 0xed, 0x4b, 0x58, 0x33, 0x88, 0xdb, 0xdb, 0x2, 0x86, 0xdb, 0x2d, 0xd8, 0x91, 0x52, 0x37, 0xeb, 0x59, 0x37, 0x42, 0xac, 0xb7, 0x5d, 0x5d, 0x5e, 0x82, 0xb4 }; static const uint8_t crypt_index = 3; ChiakiGKCrypt gkcrypt; ChiakiErrorCode err = chiaki_gkcrypt_init(&gkcrypt, NULL, 0, crypt_index, handshake_key, ecdh_secret); if(err != CHIAKI_ERR_SUCCESS) return MUNIT_ERROR; // -- frame -- ChiakiKeyState key_state; ChiakiKeyState key_state; chiaki_key_state_init(&key_state); uint8_t packet_0[126]; size_t packet_0_size = sizeof(packet_0); if(chiaki_base64_decode("AgAAAAEAAAQBAwlCI7oAAACAA5gAhJT79yG83L9WhXCDP/h48VDjBL03cGscKH6DLQ3ZOzh007JcllEEIpTP3DbJwYAF5MGH2BwWJJTcbZATOGrzCznFMInIL7pWssSgxQBcf2q+u+vECFWQ5zvEQsq4RxQs3bre0DchyEMz", 168, packet_0, &packet_0_size) != CHIAKI_ERR_SUCCESS || packet_0_size != 126) return MUNIT_ERROR; uint8_t nalu_0[105]; size_t nalu_0_size = sizeof(nalu_0); if(chiaki_base64_decode("AAMAAAABZYiAhn8AL8gD/wh+/miASsv/rw5fm2PYQAAAAwAAAwAFIc42jXIHLchAAAe8A/i2oRmALiO8cB3sEzDosBxyZyFg4KK5rAXoBy0/2EfQAAADAAADAAADAAADAAADAAADAAJq", 140, nalu_0, &nalu_0_size) != CHIAKI_ERR_SUCCESS || nalu_0_size != 105) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_0; memset(&av_packet_0, 0, sizeof(av_packet_0)); chiaki_takion_v9_av_packet_parse(&av_packet_0, &key_state, packet_0, sizeof(packet_0)); munit_assert(av_packet_0.is_video); munit_assert_size(av_packet_0.data_size, ==, sizeof(nalu_0)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_0.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_0.data, av_packet_0.data_size); munit_assert_memory_equal(sizeof(nalu_0), av_packet_0.data, nalu_0); uint8_t packet_1[129]; size_t packet_1_size = sizeof(packet_1); if(chiaki_base64_decode("AgABAAEAIAQBA1qLB8QAAAEAAAAAI6yViW2Gd1ERoIOVS+8J6N4D36erxNa+1CiLmTVZfD+pMvNgT+OSMhXk+tFWDoRga6Nlbn59gIsrQqOeyj7TrFyHsIQdIWc5AAgGBfhi9AX/jVkAcXFy5+4z5Ob/FO4/C5LTEaPXLkvFWdbZ", 172, packet_1, &packet_1_size) != CHIAKI_ERR_SUCCESS || packet_1_size != 129) return MUNIT_ERROR; uint8_t nalu_1[108]; size_t nalu_1_size = sizeof(nalu_1); if(chiaki_base64_decode("AAMAAAABZYiAhn8AL8gD/wh+/miASsv/rw5fm2PYQAAAAwAAAwAFIc42jXIHLchAAAe8A/i2oRmALiO8cB3sEzDosBxyZyFg4KK5rAXoBy0/2EfQAAADAAADAAADAAADAAADAAADAAJqAAAA", 144, nalu_1, &nalu_1_size) != CHIAKI_ERR_SUCCESS || nalu_1_size != 108) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_1; memset(&av_packet_1, 0, sizeof(av_packet_1)); chiaki_takion_v9_av_packet_parse(&av_packet_1, &key_state, packet_1, sizeof(packet_1)); munit_assert(av_packet_1.is_video); munit_assert_size(av_packet_1.data_size, ==, sizeof(nalu_1)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_1.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_1.data, av_packet_1.data_size); munit_assert_memory_equal(sizeof(nalu_1), av_packet_1.data, nalu_1); uint8_t packet_2[1424]; size_t packet_2_size = sizeof(packet_2); if(chiaki_base64_decode("EgACAAIAAEQBA8fX6tMAAAWAAF4AAAAyCmfH3hbmk3W9636CuDemFcSMDZ6bGzT6hgzm3ohtDQiH+HM913g7g7T+9pTlC/Qq6rPnmCX9UAX7EnjWaPgSook3ZeyAkY2j0T6FhnAg5fdRxJudosanrDvTbb5WWSGkwg/ut/ztG2Z4bD4FPPG9b64D83ln3f96O9NsFOCrsB5iOFVTmWwIlz78BuXTJ3qBUzUyIhQfriQdoDDJud8LeKhqLWlNVlOP8Nbx+I6Hl/wl9ee0rfZuZNsQ66x3cZH2D2blc77cHKgqJyFGen3CQnaaR84fabXXet6EHNkBX/6p87SVIRMfc9DUz/3rGi82c7kKQtyD1E9SH6FGb6KnXJlT7K5HdBJ4jj8+2N4c2L9fyGjv2vaa/I41/+WeBEbkwYmOdKVPEMNQQZCM1EqlKTaKaf52GsqlkfBSk1tkcwmb6tjnVVojGOxa3wV+swozFT2H5L1hQov+E6YFHEcAJ3G+79A9snxJOOZ94fI6Dthsw8qD2Y52Gs2vkJJu1+KzCSiIRD5qkS54S2fspzL1HX9PcyiKurp2vGQITQIEUc6VgcT0ZOqhVj8YJ7d6Q4j9FM3tPFej6Ys9cWZA6nW43WlMrtdhD6pJ9E2cLlKBomUiDNWpW9yKWCjUu2mOE67GG51I0rnIcTvufDK+WaX6NlmEnbg7OTj3xGWGQmrRRfDsHFB1px3CktrMLehPWGZtvz6fyE1wuj0HjiB0ue7733tueqk9xJPzieRq5UTuGyJVaRUOLJpVAHr/CeLEXUDIBQli4e6Gest8UfNmDtefUn95WVdJCR1swSgbNjGTtgyEDJOGHQCXiqK9xUOeGbwSNuUnmXWVFcdctDG1Tr28ulIbM/Rinx/7rGSiVUEpjClexmXrOOZ465jjGOiZe6CLcMf9rYPHaiXEbWcw89MeWiQMn7LIPda68HYBeEPYZN9ihOwMWNN8tFRjfelYavmKrv/VpPr/iMq0kzvxEhAycNHpQEAjRNtvogiPaOAFGyHgTqB8+lQpvf6AW4fp2v6dHMpfV/8JK6diUFb0Ycr65jZ4kxubne/k4UZI+ETOrNy9pHGWDwj3qPc8mFtxlmVKPCm4Ea2OMjkxQqgwbIoyIphdVKHwhjqaxQCC1b+7Xi/i4VpPc04n6TmGQ4ITCHLqPQMxKTn2JdHTtxvipkHnC8D0BX3sRB6ktgAeHo1z0CaUcCEWeyWrnrgnQ0vdZnQGKayELb0svMdVnxKF1OalGsJZ8TfHj4Ys9PQWCU1JUzbQGhuQsbM179rE122pWZLPk7kraViqQq2NiCdEjtn7/tgSalF3D3yit1usVoe6h+SY8x8Qup2lW3YMKiZmbgco4J2lepCDptxJR6ASh1d8qrGjPvSyRJMBxobi7JaG7u7Va8n47OwtCl3X6KgFXHuT2pDLnEdaj2XCy4som3j8VHPWDYLPz6g2mfbePkmq4ogHPxiW7EvECoabFEuBcyp3xPyPbIiaGixETGY1+xoXbD+KNY0uDHSbDRwFISosmuVyVz6eUn/X6gCm9YGpHW+O6YAukrE0gp+0q8rZ9B1PWcidCbsuuCLxPPoQPr3FaDo+khIVl3gh2GtF31NuKJI7W3iSWndUFCALBKD3xaU6n4z0YApENj+8glde358WKlxt9xoe/MxHtF9aCbgqMO+rCaSf4OkCZrOFxZFb2IaVOvSEY3XfdKUwVxreMVIfYd7g2w/PPJbiM4sv/zzHJ7OnNK6vG9jKLp4XznAlcGLFaja48g8Y6CsSaQaImIkw4ZRRsvmif/gQKwRNtPTTpSoLai9udbz592V3B1dVFsqVaBDDjmx8x4ZS0gsw+YjS5++4svlbHFOJnHzSjPOAMDEuc/ONSdX+3G0=", 1900, packet_2, &packet_2_size) != CHIAKI_ERR_SUCCESS || packet_2_size != 1424) return MUNIT_ERROR; uint8_t nalu_2[1400]; size_t nalu_2_size = sizeof(nalu_2); if(chiaki_base64_decode("AAAAAAABQZoEQi+f4ASkBP/8QW9nJreZ4mlZxu8ZpWqn5dJ7r5pgZIDO0Xv/92AQqshFvRlthKWIEKvbIzWJBTYXkJnzMA+cUNmFVzuBy/0S3aXhO4JsKeQ9q+RAFEm7BECnIqes7Jega69fgZxDsrkfaPNBnbOoX09JcVBFhqBMphwqvpRp/nX8qKy/AN62KakIV7x/qeHcffPA3GfCmX3u2GkyzZnZ79/ALMjifQmc4vPl6B9BdPWZ0U398+tOpqfo0CVWTezXWRC4eFwt0szP3khlpTUiAtHd9vKsL0oaUUMkOn09IlL6Ew7j26PQYyBP+IJ3BIpkpKuwWRqwf2bghibYwmxuzNHQ4MB3RJQURYJwoA8nWUxkicMmMRWhYZ5aK15AxePoq54R39Cz36S3unOYPuHFmSAcywix/J56q4CncP1vzYI9s3vaGVKCaIPbEXA13bXqcyVmf4w8jNi64WsprCjLtbaolk1GUu+f09w04Da7L4RVuUaWQgwaI6RBMbm95APiJDQ4Sd7PJsO+5sSRcgvTES9NVFZI49YjuyLkybuBK9i5FHGnwWHIoaXWviOQbH3gkT5otSbINDjFEr7nwekD0o8DOFRHZw+CLMflTSxvYzdjlsaKu2gOQYTFeai74nuksGgIw8MMMnTh/CN6K79I9V+S1nXIsOikvO9+dbIMPb+3ldyotYPsKdVtwnGlVKDYIdB4LGvTFSAzPgvoS2LfU2qj1P3TRv+zOLPRTw9SgQ/8h1si8iL4jXIdzSB7HQyFtl4k7wEqOTATVt48VRuoH4bEEzH8OnQx9SOxeP4KPLpOx7mU/5dUvCxOKhJPoEwPwQQs2u4GEZKESbbWo4pTo0NeEpGcK9pMJn/sR8Ylq2vcuP+gDF+cHAsbK6C9H6KdxDgt5Q+9y4C3V0MzakhYz5dlYs7zUplr7fcn+Qo/S232G4UJHnAndmCAHyuM9RPrlBRr6Nk4pw7GLRkeB4cQ0D8zLZvDKJD0Lwf4eTBmmaAyKLKmwPdGF5jr1qaYRxL2vEa6CySczQf2guYd9SGNejSo8HNbR+dzlVuk6zBpEseMJFVKkVADb3v27HGjYRWaOCZoQkR+rqGCnQBlK8y0KceVA0AoUXxP+lSEc/OEbRLQv8JOgWGbTLJMu3ep4awMf2c2av7AR2IEIIg/aJKA03k+L2kpNG6HrcDEu42rP/CFNoAtehW07g1fNXr+DVcTuAeyT77eSG9U6ZyQjBAChCSQaEjUevWV3f/w9ZDwbNCxWr0SMVqbSctBnpgmwtXuBRasXRT60JSXFV43pwhkXK19xq0Gj4uAzjDZPqi7vWsZz5dI/J0uBN4MgLxyITTn9T1a8b2Wecd2pIH7/lGHhPuDoeZy6DTHAbatXWIil1kuBFoM0Kr5aJMfloWaX7jyRO7n1KaDBNe1+wcYnco4/UEcyMj7QRBM1QlTupyMdOXMLluozoBLedM6SYDiBurcr5azqBC7RBOFSSKyHEn4h/VpK7eJnfSAAUkU8ktGpdAyfMbWrVjhxCz5uFc+ii2WNXfIW6h9bDvuvork1bT6qnNQi5/g7IwY3kWaEsrvFkwdh7LgWYFcMn32OIxnsRpHl2tUlNeWl3TegKndWViJ5llJ3tI/n/cm8J8g/EMpjssofaqFhYK+vJhTaBif5YvGQWIfBO+2FifcgKuLtMqJhf4Woro72Dklm92PWviukYH++WzOxC5DAIvN4JStGV4pDal1oXPS0za88Jm5+XyJzVAMjNC2CnDA1MQkof7mvRl5JAxNOQgeWnZ2SQ9Y1/Xh2MDCctvTmgcqIsqOEAlKls1piFc0RBykzwuseAy6qorZvxQ910O2cjdhxX/8Ktk=", 1868, nalu_2, &nalu_2_size) != CHIAKI_ERR_SUCCESS || nalu_2_size != 1400) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_2; memset(&av_packet_2, 0, sizeof(av_packet_2)); chiaki_takion_v9_av_packet_parse(&av_packet_2, &key_state, packet_2, sizeof(packet_2)); munit_assert(av_packet_2.is_video); munit_assert_size(av_packet_2.data_size, ==, sizeof(nalu_2)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_2.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_2.data, av_packet_2.data_size); munit_assert_memory_equal(sizeof(nalu_2), av_packet_2.data, nalu_2); uint8_t packet_3[36]; size_t packet_3_size = sizeof(packet_3); if(chiaki_base64_decode("EgADAAIAIEQBA8f0C08AAAsQAF4AAAAxQblNDv49Be5DWfYx", 48, packet_3, &packet_3_size) != CHIAKI_ERR_SUCCESS || packet_3_size != 36) return MUNIT_ERROR; uint8_t nalu_3[12]; size_t nalu_3_size = sizeof(nalu_3); if(chiaki_base64_decode("BWxK+hg9EhJA95+B", 16, nalu_3, &nalu_3_size) != CHIAKI_ERR_SUCCESS || nalu_3_size != 12) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_3; memset(&av_packet_3, 0, sizeof(av_packet_3)); chiaki_takion_v9_av_packet_parse(&av_packet_3, &key_state, packet_3, sizeof(packet_3)); munit_assert(av_packet_3.is_video); munit_assert_size(av_packet_3.data_size, ==, sizeof(nalu_3)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_3.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_3.data, av_packet_3.data_size); munit_assert_memory_equal(sizeof(nalu_3), av_packet_3.data, nalu_3); uint8_t packet_4[1424]; size_t packet_4_size = sizeof(packet_4); if(chiaki_base64_decode("EgAEAAIAQEQBA1XntcEAAAswAEsAACAypBtYe/N0T4u57Dqsubrk17PQHW8ELyAvaAo/sXzXxU9mPfmnlUiZMXdo6RntpHLZArAW93u0fu9vR9s26Zsp5LB8s/tDFK3EVPUuwddk4bXcGCYS4iUYglddDw6pSfGc2Ps5uC0Nv1prJow/dEDbaMAAgvSyymVBhU1y0Jp/wOv86IiXlXWw5WIZ6L7Q9Zpt4NVBGyXJHETAyWAlw/j97Dczay6TOQ/oGBXG7rE4yhkeDZW7WHv8i/6mXAgROy9S2lqwz4/S7XC8wkBfrGBRZ9O/MZH2/zm0n9Y6PvN28zfy5FLj6K0tsJtSX8mTHiKNjf4cUoeWakPsXKq5p+e5mcggScZmOl2WF7W5U8qXjry+2cumWq/qF/QaSb6wTNcgntyg96MrDweF4H0f9Y3XDFJmgyWbtuqJn82gu9am/8GL5x7Qdn9c54nTU6UKnABYJyiDWVOq3+Thr5yqnBoaeDE+ET5NAy9XPpgD/kbcvYTGHFMcGdfVEs/RWTnJtIIBHn8gEDJnEmxiQ7EWXhozY3SySsp2M6JKyJfcw8C9WlTZUYTTuB4AKebq9JhU3yWD/JAM4ySsWN6ELlI5VXW5wkNkLVOePmz/YY+oPOVDnQT7YLdCrUoamGFF4nFrpdQ+DvIweER49gd8irqjLOBtgF6hTxn6FOSmJFGpxTLpW/0JtHa+cL67q7+JjIjgsGRVsfc53DbckcZwsD9UDcQD1v87EPn9Gjn2ueyWFfdqtvxRuQWJ9wZzi0WA3KHLajEc18yMjIfkCgv9id9hY14Ooxl/XY18B1UEyQ+8H6aEqTfTzjQAO/VNLryejudZWnq5MiVwkHKlKvcE/M8t3yaopnilIdw2FsT8OaCT+wBXxHzmyah2Uqt+jgVYa73bDrxievGyyIQcHt4YvwIsJYINwDbZakRCv0AF/euYyUp5oyadrLUla1BAnk+Rrt37kQJJ5xyKgmLPqYnYx+5AmkOOJajSR1I0w6cM7KjuVVga5DvGwR1UeRJgJBHG3xwN52Qvd0iAnLH1KEp8nl+AJoWUgc1JV7yj5zEAnyRH8nFWwm48cKBoT7jcRqumyLTfjjTJvQEAWOkAzTTCpnUEiePChun7nmHl4ZnOhg9gFKcJxLuMTIzTUnGzRS03J7Ywikqpp192+YZIWbbXx3z2twLxHEm7jY0ETKGg5NMdRlgaDrR7CGO29PJFNYpkSc5ieLZAmHPYhcU8vqrgqNiOZ0GsN9C59vst2NNYxkIwGP46DFCqGUC9Zgjc31RiVYnlKCkUE0XZwMxnOFdiDE9OA5PwajA0kYZN/Y3rAczFfYPsWlfSGZlWmU0lXiwVS75BdUjvWocA9So2gQRR0TmY90Pu2W9h/e6Xuxj77sCNVGsHvrJhivUv2a/vogA/b4FAR0X1HwPu2Cn+atyR+ak9ZwHVYPsFaNT7JwcjqmWvAr0Gmf29ovG9JQ5ONvYuqFPHVUcNqNUN93xHxRhSYJGkOHOkyQYoLbzQF6TLdq6VCb5Px69m0fx7NsocuTID6ZezU3rbUp/fIlB2LY5/hk6gfLKCXwhSeYo1vEqIfE0I920qv/KI5SX2PIgtw2Av98rdnUj4CZkns/wsKx1IKYRfoHAD5+SQsANWgRaN7iFAPCwY2qhGjGBUSQe9EijZwYkohj+Qpv05KdpMCFcbJDxO+/N6ubAB0Pl4OLgjQ/pcB0XYuguXIRJbJ8cb41GosxPvVtwXY/3rQ/Mr8xlvojwzZ4c2TvI1UY/NRZjybshcb6c0I6ewNAik3lFJUyvNWjeTWQ+HmGrUJv+DJyKuooFwMFggbE5WeZ63cYLMw+CDPNmCSR6FFiQD8pEC8yLysJ/CLbuKcCZUL10sEEQ=", 1900, packet_4, &packet_4_size) != CHIAKI_ERR_SUCCESS || packet_4_size != 1424) return MUNIT_ERROR; uint8_t nalu_4[1400]; size_t nalu_4_size = sizeof(nalu_4); if(chiaki_base64_decode("AAAAAAABQQL5oETPxebVo44rgsAjIDgHI5wkuz0Ww5W/5urZG1Y+OGDPm2TXCd7ak1f8PF8cXyaBxnpMMXVMR5N+90NM9JJSkzjxeW6Hb+IH32ER3FEsljjZQwaPAoj6GvqPvzl5GVk9mVVMg2SZR+LpwiaQaaqkhBSWVYTgTDA4Abhu9nDFFKEQNvadKt+0SWH5PMUxdq1jaIYG7eN22TZvyeKoMWIbY7sPj3pl0LscEsfDxZq+ihozPt7fdK+eYTzf6XfNfj6b5OMJuX3Gahe1q+Lnpr/5xBkUagI+Zk0RczNwwCTAwxYDkcNAb47jrDj7ZRBCDTL3O0S8DH1aol7wU5bl2NlrLGAdStUj1M2G75j1lx3qPxAkPbNmEkgy5FvTw3P7B6oHPRaxAbbZfhjs0Yz/n4QFXcveEsy54b7t/Ad5WZZEOJ5LRiNgJOPUPT+YuCRfGRBlHOTv7h7lVUvWZx9mPsCtjGbk/vXRnlShQAC9Pd+U+fK9eDMxFDO6SONEzmIxwxpdbkYfQhJIbXq33KAce4I7N4B7rv4MfCXxPKCsRQu+CQHC9To3W6cZE6onJ7XTG0+Xdhamegh94lYpqwhhWJXEOPZAKOZrR9ilQ4P9VVy2rmGbty6Go8fPMk2ApsxE7DBcrUPQ7ndmOhrz0NOjZOYI9Cs5LXB6hAVkgJK8QoYLHObH23zmJScQnOoBXJ6tgUm9qGIruoC6tOC2fa41/07lqJB5oJ0fBLGqS95nQj/yldqCmPkJeYeb7BXsIN4qj5mfS+KZ/P2zVTcsOmllQpze5FqQiEwz0PFR6Ko5W1na+VI8AksQEzEaaqrecXfdBxWWrYQkxleDcnuZ1nBuSZPEaTf2WHDFC/fT3GCAIeCL2JkWcyNAbiTYnJynzZCBA3kso7gD4/XeFlPDO2aYuDVICwt9/cuP56o+1vfY7+qEp/ncQqAU5rDGut8jihoD+V90Fv518mDj0WaignibefDmyuePOoJrz7doIcngahoY4t5gJJQIlbIt8td910hJzhnHAfLaW2s0okApQKlh578cDNBHoZgg36rLhSSCONorrKizVhtQ+uUD8yATdYYP7VphtXEk7nE01yY9MoSBxWpd21HPMbWqBs7ocArCzLH/3KXiDrxTkp3VKihoSgmN6dUVL+YDvzEza+CXRfaNfykQh3waTXFAg3PPXNdB8BdNlxPGETU83ppYv97R5BG+Xif0zDALCZxj9bSgwA1MHjzFNdBzktK2HRaCmF3qyp2lQOXJru1JrxoE0L6Ny9mXOpAUc2R3v7n8hguVHL5UMv7EORJKdUwgEOjJ6pfAUOh75K2+eIIS4+Xb0Wxnxqca0/TWZwRAa465OZNZRzxx99NDJkO055cpBcS1l2Pg0YMROOFfiGDkQdvJJpUO63UYiqrJB7BCcs4VQb1dmDcMjQysOtbfGvvEotNHVTN2efF+nkCVIuiAPCxxAnmbSBrjTMWYro7m7m5v8oDkw2/gHwGdJfw9S9L7AxCugzMK/NrqYhcQydx2n07L4DyFXd/mqpcNngjSV1XN7XsQTJHxRRDxmr3/02fjwKjR3oPthCL6FGQBmFyow6QY4ffIQi5KIrXyDJwLLpgqV8XD5O5tfJVz3OsVR8jUyPOc3HfVOv2GGfNCkOFytI9MOwz4XjvXBNveiQFKUNrrh0e5NS9rjGxR0FcRaFM0DrEj1HdQk3r6PcghsjoAo+9I4Y44n/WJWNBKUVcpdNVPug2AAoG5QIRWszIfr5rNyc+xgQcvFVAgvbsZQge/B6voMS8OzdI4rH55bM3/DNDy6d67xej93FD33XDFfJHyYMvXoJHOUQm07br5ID9B5AWyRkvg+zDED6A=", 1868, nalu_4, &nalu_4_size) != CHIAKI_ERR_SUCCESS || nalu_4_size != 1400) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_4; memset(&av_packet_4, 0, sizeof(av_packet_4)); chiaki_takion_v9_av_packet_parse(&av_packet_4, &key_state, packet_4, sizeof(packet_4)); munit_assert(av_packet_4.is_video); munit_assert_size(av_packet_4.data_size, ==, sizeof(nalu_4)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_4.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_4.data, av_packet_4.data_size); munit_assert_memory_equal(sizeof(nalu_4), av_packet_4.data, nalu_4); uint8_t packet_5[163]; size_t packet_5_size = sizeof(packet_5); if(chiaki_base64_decode("EgAFAAIAYEQBAyVRmNUAABDAAEsAACAxLcDgjQdOz39g8DGtikU+c1s0anc0mIORfw2kbN0uuArlwgJUM3Ox+R1M5Fw/EyWfraDrLEF+5rGe7R0lff3aFhGzLJGvFOVD6JjvpL3jqZ8cLUFNU4kPk5HWtov7Gl5E1Z6j7X6hJBJfWiCiG9DXylP2RInLrFo1RV7sjlcoqNt0Y3aatpYsVb9qEw==", 220, packet_5, &packet_5_size) != CHIAKI_ERR_SUCCESS || packet_5_size != 163) return MUNIT_ERROR; uint8_t nalu_5[139]; size_t nalu_5_size = sizeof(nalu_5); if(chiaki_base64_decode("BO2lWceEiAJacXniOdSY51UunQ1oVFkQsu1i3ihOh/mfR+GpPn/elcT7+H47bR2OD/gDZlqF1Xf6gaPxbcvw6x6pWEesuhECFSnJqVpSPS/trjKSIUCll5OPTx8N3K/JSLgPXRVgW8yGWthXANm3r0cHuP9RVj3Z5aBYe+JQ3+hON8f05Djv37tl8A==", 188, nalu_5, &nalu_5_size) != CHIAKI_ERR_SUCCESS || nalu_5_size != 139) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_5; memset(&av_packet_5, 0, sizeof(av_packet_5)); chiaki_takion_v9_av_packet_parse(&av_packet_5, &key_state, packet_5, sizeof(packet_5)); munit_assert(av_packet_5.is_video); munit_assert_size(av_packet_5.data_size, ==, sizeof(nalu_5)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_5.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_5.data, av_packet_5.data_size); munit_assert_memory_equal(sizeof(nalu_5), av_packet_5.data, nalu_5); uint8_t packet_6[1363]; size_t packet_6_size = sizeof(packet_6); if(chiaki_base64_decode("EgAGAAIAgEQBA5azjhAAABFgAE8AAEAzrgIGreuIfwxq9ASUvQJyV+sk/tN8LQLyD529P2GhbPVwHSzCaPmmRxZNcLxuMiFBrOSd2h0v7QRqQmYSyKFRXTzFO/Oz8Zv50JPqlzGiRN7GS7CfXDyW9pRMRb8xIw+JfURDLWFspim/3b8bIRZb/ernKS+tjCOVgry8Gg5QqjYzskMix/VbfuPHWZ9rfElrnZkOoiy/PJX0wA1EfxrDhnggjQGX1DkPT/pob2J7sVI9h87xIkMXlj9gNougA/oQ9z73U/CVCG60eLWuGyOIXB8OFxr2L+FnCXia6vyIJ3WvDIrUQ2zREJS9LrxAfvE4u9wdSQOmfT0etl5ZsvQjahg8LT6lfHVTDYi2UXoh1uVlM1yLgWurKu5fU7DeEQkAnP4WFFNJvNhnq1jDefN3U/UsM/WrzPKU9sSFvnNNEx3Xzsokr/98qGkqtRTsvPIWeBkQJ0OfBYv6PrMAjwiXRbPNOCpq4gdtfF1E9o3HiLLHfEtX3MQ3p9+CPewzwz1I3f18BJmuc/aKq8YrUxQuoVnYQ81gtVXsvjoYKqow7MYyhwlXskbx+VGkNCK5dJKLNSZCqxq92+S4/spXhwVLaVzAV9I6BiIPWHdzRgWCRygPxLmnFLa+Fdk+25ZqAeCFiN1HLrJLMIEfNr82mIQSG9YbZiKBpfg5CsbjDDGqrEBNHS9dElcOcUoxndinCWVeAaw2LfwuhzHyGFaLzyH4OAqzi2vdYgoe7GgsBrU6Wgbl6F3FhubGERCUyWXt/4qOpDeTJEREfqCwSEn/GaBdIVoby7Twn4rs+BfMxHLIsTEbm/VXwHknF+vq1ZRJxG76fUDIO1Kzjxd9sHIjPDEfbFKnH31czqkM6kT+xJRlaCTrmEKyN38R/oZAIXXT/f1if+ja6aUnrOF2gcVfSCK2Rrf4IGzRlf1CzzwswEnM0hgPdm9lGUquspBkfVXVlL9o7qpWI6U+QG4YHJdRdtSaY+1pM+r8SJDgm8L2Or8KlcgTAfGxze9+K6+RpHhgTjeX0KxZc0020g9+PPs6kqDUjrA+9nH5Uyt6NfSpLWHjGzMWrIg/j1r6EOGqY+nEL7bbdDaVfHhEBxW8cZZOrbaL3rIefkBiIeDHWOa0horMjZ1DthSzYVyii+TkJnmxsGa36pMxnru9A/Exd96ZC2K6XM7wAElHbtMombdQEM5dTy6j1iAWFJhKdIekUQuIi0hPejINVG2SDZInYeLeGR7eucyFdbilncryWHkmOT8y2jJzTdXl3K0XBaITBEI6CJorS8GeaWBjjhcz8y+oonCg1IDP3+p0r/bcluMZnF2QTIyanuIxLGSGWXXMwOEJIyub1trsvDF/xP/UXJ6ROj12gD0B0BRu2oCFm03fbaF3X03UPTxrvG66QzbXPWwtpIa2fmiHEeY6mM45XYKmfVyv4eCKXX3v7YgTCVoosYBYNbdXJUKNTNEk4SNyFvqyZCbSjlHu51g+F0cXxU1s5sIv6TgtYXdKOhHg2S6NnaNW/Ah6L+yMuFisZ6oP8LqpqI9lHG00UW3ZfdppfSCi5YaE+WiunAeAE9pMDW2M4absiM4FpaSVXoQ5fIO0VfaU9nrWL1u2No6+QQ+GvS4Hek3C4DFBoc81A0LO9mn7Cfwc7+kvvVb3YbvYMOveiFNdEFwneVJZWg0MnOa1orJlwt+U3e5PcN0n8rqvAGMkcpXezoNrDmyHNEhVLIHhbbFb78phWwttYk1eIIKXuZQfjv41O5WwKQlRxXg/71QqvFsri5iUbd+hff1BOyNwyA==", 1820, packet_6, &packet_6_size) != CHIAKI_ERR_SUCCESS || packet_6_size != 1363) return MUNIT_ERROR; uint8_t nalu_6[1339]; size_t nalu_6_size = sizeof(nalu_6); if(chiaki_base64_decode("AD0AAAABQQFUaBEz//49Rahcd06lG38RbOsz8/+BFwO4rCdlpQJCnAKUxM5PafEcXJ77wccH+5O9juJmAOiGIms4bQXIzGjHiyQ8OQuL9TNPHRfX/2LN+ds1vPIzQIULkjm0PRGo7RxQLSx4D/xb4Mrp8Desjb+F66qbz8dn+oO++SyJUK4yMx8vPkuqVy4kts18WoRQlO/4/N1v5zn5zQACriwx04JpNNkh5ioShY6LcFwlOKSiYaNM6IcrrM6ktUTHPsJr1hHSUI9B2jxrYtrNds+G9imdeJy3PXrOds1q4zGEdl4hcSF25gmIb6QEIGXdv3OhFkgEdy6IbLV2av9qQgt3SgmWyHMjfv9Xq7BmTxZDa4+l4I0GHCoytOKTLkWNlTp5BqMulMx+9YckefqtKVCQhD3GPlqHuZa6JTOE+bxiOqVAR0rJNZVw1yuWle8GrC1aM+hsFGQvwcVsC4iOzAuUa7JXnqWtaLCHDzFiHveMaE4GBtgcjmSjqqt4A/YNnSQA4rYMtivVhI6U3bWbZ1Vt+QhHXu9FkeYnla5qItWCg9jZ4OULZ/FiwAVSPTyh8EkSViUuBex6n8C1wDn1/CrHQ++EGomC1mH9VeKbOji8LHpGqM8y0GQrngZhI5o0Qr+hT61zWm+JaPjY1jvcyfSfg8yfwr+KeQ1dnkli2atJvc6L7G0zqoJf0FYeJdk5Bc9TY6zw9mt3h7eqMemZ4R6wEneh8SS47LflymSYdCXa2buPSG9x1wbYZniwZqvxppTJcPzwWq8PoeBTvMwBNU5EdcMETzskO/ftBgLmfpBTsGAwBm1WUuUmV0N7IZPTsKbxQ1YfaIWyAE8KCi0GUI0NpwzmrtFvEtCVIGZ2q3WZ7Bn2YgaIbCz9BAmSbLQ90mhnhSNbetLECPrbj6le48TreDj/GMrmTlsctd1ki1fqikPr5qj5wqKFuVJcPuCAekslhrHtPwQbtPf5WAMeQ/sUIxCBxAo2aJFBQQlhtLJoHpefD50CbrfHVzhPM+R82VZhmKpV8lVMaLukZfK9NCyfQGWkKwHj0MrdIsh+ixIVfFQb/kKVH7g5Ll3T7KQHqYXH63MsHu2hHRRVfmsHnnpKLUBV9ptJwUMncDYclQPEH6k3U9hr7naWuERPvZz7o4r+QHFSdkzotuTrpm1Ou6Q7fT65EKc57umhVzUsz2Y8qh4iVZjc2bVER1+YZId/Ix9DtOcbIj1d6ra4q/c/amWFhAaPvZunWPiXG4IAqpXgpKBQwE9LIeCs7iEVRAuSibfNwM3cpYL25Pi4UL0Pi2vZJAMViZ86KbUJ2DxPNq10+mJEwYBb+b/AqNeb1qCSi5PcO2vAaroV+zz6xT6uAvoecH7DQuoJ7igJb4mjWYfuAm9DBNQtdu7lwx4dB+9MiVGJVujrJhjKz9m1vPJqQIAAFbKUsDPkVc57u7+VuZrk5xhXqphuz2tTd8mAu9QMrq7j8oDjVYrOU3cm9PJncrURt7kTJxLfd5MHn1kZSDxjNCeA1/Nc4yhX44DGUMTgNNId7sUOAvgy1TttSXH+BpVp42D/5wFOcHsYWro9cn5XwhuBJdtHi5TvLWEO291S1yMHD1Co7rqwbVZNL67rLP3xWy8w9kSAZ84dx0KBo/cLFYFOvsByaOhm7oK8U2bcxRhqmAA4VJo3ujxsavX6faLnGNRo41Vb6tdsLlfq1q1QlPoJvcBiBeLrOVCo2i47KTD0UEtOzf5ywcU8hzf6tGU6w77ZttSgOMmDrObAL83JB0Ec6H0DcA==", 1788, nalu_6, &nalu_6_size) != CHIAKI_ERR_SUCCESS || nalu_6_size != 1339) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_6; memset(&av_packet_6, 0, sizeof(av_packet_6)); chiaki_takion_v9_av_packet_parse(&av_packet_6, &key_state, packet_6, sizeof(packet_6)); munit_assert(av_packet_6.is_video); munit_assert_size(av_packet_6.data_size, ==, sizeof(nalu_6)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_6.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_6.data, av_packet_6.data_size); munit_assert_memory_equal(sizeof(nalu_6), av_packet_6.data, nalu_6); uint8_t packet_7[1424]; size_t packet_7_size = sizeof(packet_7); if(chiaki_base64_decode("EgAHAAIAoEQBA/hPwIoAABawAEEAAGAyGS2cnGgJyx35/e08eupzFUcv/jpeBrXw+3Wc2YIwoFSS324yMQIs8Nsm3uD3xIRjONboqv9ruKgZ7flD3A1bKXiVJZ9tuitFizxCV7Ry7eHVs4xUiMFzrN8WPlo2IxBzz8mn6JUtMaWoIbV8WK/OfdA1Aesa1m6VCX/3PBq9/WSBmu4p8fJLCHyodGCoqD0u2IPrhrm6phKJ0vnhlWfRsm4fUxLBUCCpdV5kZzLwd+E43E1kvo01Z9bBdMLQubgCVNTCzDDh5Stq8hIgW/eEi3z320VT9c0Tiqzh5cQqyboQE1ez6/4CZ+KRq+/JdpC/8xr9wJKI7ua44PM1s3yEfB6l+cneDENNTIHyZEdGfWn2dRxiu2Z4kBw4aRswlxGQwPGOJQs/4R/4pKLSisBrfzCRTdZFVEzOLH0eV6koLcYmfwm3HBNis3+Q37RiayBRXjOf4BRymiq83bOjb8vpGw0AvUrP699XqqCCHnzmhtSLP3AOvL0SsdzvIrvRGt9OTFKh7MP4ThdwAYNx40CsasGlTl+PHIrh2UmXA2yMREb3a0PY8kC7M/vOzvBCnjJin8luh7bnJQVp9qKHduH1bBEv4upIQDtgN0G5VbBgx0lsVYMFFtlqgGJxRcOU0/OVkxRCnrHKIn9bLJ2jT2U7cEVw/FNXP83pmQb8Pk4Bh+ppeDk3Sb5LZNErcacs878s53cpxJ1IIhmaj/MMh2D7vVrD3gP2T2pEX3TowLoCocmc8Ch4ZBXrfqorBEf/k5tGgtJqptjdG0PMZO0mfhavwChOjDPGLRToWkgTRi9yxGXIXAUtGm6LnM/Q8Y187NRlhg1eUY/Lfexai3v60MAxqE1fccUEK0FN9TgYZqA6iG2KAI9kcJI3mMxRbfADdmtXodG1pJZzSazCNpZ7K8aAKjpLNK5oyyWsw4qGPaaoUWeN7sbJwW/V15jG/7WULxAUO9Cj39i5qJA2zh2tMo1NNeiufCNX77gz5JdaAEtLI1mZ8zIU05nAkKj8YJ/kDPXx93KO+aTFe4vU8n2Mrlz/Nehdvrm6dDflPFYiuLwi+8ZHyEHsD4UqmHJBH+bseFSmKR69cG6w6SqmzWcOLv1LoefWwIj5OeRbr1cDLhvc+8/3KA4eftMVFGeql32isAg31Uiz1SxiaA8u25KcGLjuHK5DcyQLGJ0xViz15oRLeqJP9AKctG1FB/wfyp7oiW2DH3MRD7yelcQqG/seBSExIOz8spBTyza5bY/GEcffFb1AgZi+ydMNjY7Sn4SyBhzzLWxOZOKKUOkrBXlZXDyHDQQz6owCg7ScWT1jTyYJEqmfS6YyGhHkA4VQxoTCLB3eMvwCzWP5NZXd8oe6YNc8kV82q7/6BKRRX5MHuAeRvVnBKoRd7lcCudhrFG65ME7N5p8Zut0T5Iougyy9gtPjdvPslq3w6CpBFl2swvs1W7qCv4ppF2sEEPu4JFD2ycNqb/6CrlxCrkuzCvJ74ssX4Id5xWzoWB8/ME7uGdrVwDZBmgdxPREvSKcNWb8Sz10ALvjAS4T7/qzWYH1uyPuYVh0YSIfGhqrVIzZuTAU6WmFx+93mGeyIC/bP52YILPkeWt0E3qPZ/SeI8mI13bmjf+37+76L/ClONDw4R+HcKCTaFVnL9N/XysUWHCzbFGgnGpJIxhjyDmkTipsSLENq4sbMGPsKNQv9dN/qnEUR1v6FVaZ2fMVKJ/S1l8QOrYuOeOSZ5+fY0UYCMAY2G+rCgxPlUiv3d1GbJpEqc+Voz3hfYvb0sEgqAcACh/1bFdxxZUK1LQl8TpyE/HrN6j+W64pIMA+TLuiUsXtnJfXhh6I0BcVxrUGRidmX3Jl0bmFiGhP5Pss6kE0=", 1900, packet_7, &packet_7_size) != CHIAKI_ERR_SUCCESS || packet_7_size != 1424) return MUNIT_ERROR; uint8_t nalu_7[1400]; size_t nalu_7_size = sizeof(nalu_7); if(chiaki_base64_decode("AAAAAAABQQHyaBEz//4AbuU7//xl/5Zm6skEgvEZ2ieKA8qKRcLoOrrTTe0aj435fiUCzzJLHHvYsfIZ8sfjHsI1IKicIcyIV0dp379WRCmM+q8DPuGw/d2h1spAWqYi/au8uQMY2Wp//3mvrD9kYjTulsqIXYmGeAvwo3oRmlRh475dcnj0PgprVEuPTEEAth/0Bit6Ybi7THX0bVGMPido0ciiDty+0Di80DItoYQolQS9bMTmdtuIBl7yBIrkfvo6DBUWAHDQI8jDLEemPTh/n0DEei8ykg2ut7Wwa5IXh6jbdre9Ael+qsY8mAEeQP63QzNWElOv0yj17TSK+Vtb7uCaADbiy/hfSihjRWwrcg4FHSWtw8XYEmpkM8DDIvKm7GU81S93tWTbA8ltI593XKPfKAY+M8bTQ+V8dx3yZIVN1F0YCVsJI1qubO0QbE6rOswFsZqjTXkPw5zL7ERkGvA7Va3pmPOpJfPlMz74LmQ1bMVlWGCIMfQHC61XqIfYNp/Zg/Bv2Iv1oPgXwjo/sF8cI735K3Hj0lRBdomRMPIfxjyWqOVm0BVcK1UVPpxYYVtLBGRjIOMooYYmCBvhrvOKdQUV61c75amGyUq13KC3YTCuK6BdCpT4BWC5okr9TeDJ0b2mb4IwsRW4RlvEIhrKHvtqrEw+qtKOO9lTWXHp+uQcLssyD3/GWmliXJkVkEGFcmET3KBsceFWDFU+C6a771Ry+I6W3PmXKb4yTjTxBXYYipF5nP9skfdAMpnguT9fIwbpWTy3zt9jREYFcRsMh25UlOAwijHNd3NX0ve7aiXUPJvW4Qk9Sx6iV6JtkrUBSQpJ8qq0aZJaxfn/tLoAiplR0cE/2ej2vurZP6OTzBpie5h9HN9BwBOev208hDj1CAUJXJwyrSmn9Ih8pvOP7SeM5Croh4TSiIOv4bq7LEB81OBKxls9g1C/o8ix59lHTsX8Ok7A/YnjXo7F1k4FQ55nvy8Vl6JZyqGBoBaLC2fCcIZ7HfrP+5G5f4VFnzIlJe11XXsKFbxiX/wcg62w4xRKF6EQfRVhK2wyqezhYLE0QRAIoxq5G0v5Vwd9Hc9y4eXeTCoCyPTTprrhd2FmFIRzvNvOU1/q+bfxuV96D63vFQobuxxop9WN9BkNsCNox1pJHTbz7H+uFPBztciLvSieWVx0RlpMKbHQ9GJ/1e4lPEIv7S3ey02x5+qBvSxYJmAUv/cXVxAaI2ULxNMNrtuviYKzN3KGGqEf+phmXDvfCTAG7Y+Qvp3JhyROOnR50hg6lnbAXhIYGs1vRyJhoyriSdgVpY6ytHtAvGmycWj32HrDfshesvLREFj4uaX1V6WsfClcP5qH3bJHOSegTMsYvA1tiHhtDA8JpSd93IfS11Q/BbKPyJP1i9xWXOV6oe5rUlnfrwo1EAjtPp9GzU+Z2E6kp+mwIieYfWFK7j2c4qxqYBBi1z19ts1aXq+y2K666sUdUljrIrP/YphKEnDJNCxG6bTkyeRcBd3vmgjbFzniBFth/LeZQkg+lGJHbktlGb/XkMlHjnxeBw1WXHFBjTdKBgt+3WCff29uFECFeXY0JuSVZSViEjR0atGSHTgyYJDgvbtyyi17dfqqJpuPCfcjVKyhesp3pypAPVC9I7G9RDAcfLkcP3FcSIQiuY1grAo1Afd61/69fi9IGpqAq4hHKgjhYHUnVpFN45RtBGKRcABlZBS4S/Vdtl5790TGSh2jENZKkMtModOkPIiZhScRC9ku2VAQkEAfQByYn4hVTj4lcGJ2fFmaHbXzborr1r1lYzAYgYtkmZHmX6rOAVUnhAO6qrKxXNbUdNejusexyaL/R5W9cKbzL0gEDYw=", 1868, nalu_7, &nalu_7_size) != CHIAKI_ERR_SUCCESS || nalu_7_size != 1400) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_7; memset(&av_packet_7, 0, sizeof(av_packet_7)); chiaki_takion_v9_av_packet_parse(&av_packet_7, &key_state, packet_7, sizeof(packet_7)); munit_assert(av_packet_7.is_video); munit_assert_size(av_packet_7.data_size, ==, sizeof(nalu_7)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_7.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_7.data, av_packet_7.data_size); munit_assert_memory_equal(sizeof(nalu_7), av_packet_7.data, nalu_7); uint8_t packet_8[196]; size_t packet_8_size = sizeof(packet_8); if(chiaki_base64_decode("EgAIAAIAwEQBAwlTy/YAABxAAEEAAGAx76xesUBeyKD9lcl4n7YbW9Pmj8tnYvUSdLTiKrxXiB1BPQjZKAV2x1rocHLRegjsxJZ1DffXKgacw13+4PXD7yGqULfF9Ni1+dcVMND8pA8HMU2ze9FonuVuA7NIGbTCy4zHrS6iEJuaxhfFwkt9CCyubUwiFHKNOlK+utfm0aEhfBk/k35xjBXGNGsyj4UNSgBBuYudfRl0XdiHDdVos+VGbORJpeg+kBU3fA==", 264, packet_8, &packet_8_size) != CHIAKI_ERR_SUCCESS || packet_8_size != 196) return MUNIT_ERROR; uint8_t nalu_8[172]; size_t nalu_8_size = sizeof(nalu_8); if(chiaki_base64_decode("BMyjv2Q+0B2eEHpzAltlioh+6AmSGgDM8H4t+vBKR/IB29clPybjTjkVzyHDoOhYhj24T8o+oKeKqXeSJrVWEyB7LUd5pD0s7zlAdKRQSYDIityirJ0oW3fNBCJXPpzMyylh/Nqjv9FOC9TDjbNXIGyZXsgzjUuBAV/MOkK2nll9cjq8Mw3bB2nAnRijg8gQhNg1qLbzDmvPrJpS9Y5HcOrVdmjvtTTg/K91pw==", 232, nalu_8, &nalu_8_size) != CHIAKI_ERR_SUCCESS || nalu_8_size != 172) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_8; memset(&av_packet_8, 0, sizeof(av_packet_8)); chiaki_takion_v9_av_packet_parse(&av_packet_8, &key_state, packet_8, sizeof(packet_8)); munit_assert(av_packet_8.is_video); munit_assert_size(av_packet_8.data_size, ==, sizeof(nalu_8)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_8.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_8.data, av_packet_8.data_size); munit_assert_memory_equal(sizeof(nalu_8), av_packet_8.data, nalu_8); uint8_t packet_9[1375]; size_t packet_9_size = sizeof(packet_9); if(chiaki_base64_decode("EgAJAAIA4EQBA/kUl6oAAB0AADAAAIAz7MY54TlevvHShbwbxRdNku2Qn3pFKnG6MaP6+qJVIpNM8zlLy3DJ7+lkjL6AvwTi/kFkAD+ybzlxW5vsM8LKN5rzKFfHC6j5BY1njze0wcNTwaAOlJmYFY642GQjH6a7xwATRySuBkYCdWyVHyD1JvulxG9z2Ac6bbm83Rzyk2lR1ouxXlrCkmwAnQTDlx35zGUZFZhPdpnHz8F1n6YbQXj/7c/cDp47bReSowvhu0lhpP4Trvo8zvYI/o5sQ++7aFdklYdncwISzoJpYstNwBHq+9daVvrW1Rc4wTRgL2AvpeMDu8xQr4moPJqfZyNREFMufYrKvzOQF/0WwMprFG14Z6y0+/c1TJreFbV9mEVDEeV1Lp9yyaym0pwUeJr8xGtlsKadsxYEw0pxRuzp+4h+CP9camZ48TZ95cy2soQeqX8r+Ynoqqqo3ii4nQyxcF7nmMJWYaC/2ktP7J4LLLrUmZ8jPCN/rvicIVocX6uWakpSvjwKbgmrrpm3OIBZ28c+T0zNjOdezUg0GJVWcJctwT+HBW15U9MzHUCtnTIBfsI+1wf/zIgNArgSsp5fd33vQQ8AYVjriS38XrWK2p0QfIWDFw7CrWAwJ+Ey58rAJQ3xKtpd89g1N2x6wzPNSqdssboppWPsz3ZR+rc/koOtstoc9c9Vk8HScW5un8gtFiOvJg2x44lbS783gzoT1xmoHAxbswTJeVcjk3XlBss5Rj8Dd+l23utd4Wm5KfzkskR8OJMxgnutapvcemFqbhogTvBj+jiKugx3ORMZnToZ9NaryH1DIiLltPx/3YY1GZbKwHh+MQ5wAWCdJldi8MGLygAz/+3igQbeKmiYMB8K4B1QkL3alnXz+9PBw+JwANuRVb/219z45+duZHI6DxQmlfdNEdEC5QNVt0fyzhQf0fMAbFGEGUBs/9DurcNiCLnDgMrR3eo0hBBOZmtKsmRDtz74cWZEf/t2WvG30hqXVPhcDAP6lGph/jjaqM0C5B3gEmj67mh9VlRgqWBppGt3cssXQI+bWrU7NR4B5kBF4vf6Id01qpwb9jiC99/NL6TV5m4BDSyOGG+ZXva69UCbWDLCrztLfYMX1j4EYS+kWB9yMGXkUBrjeQPUfGqJdjdbQATMVepKU7LsYf7kp4d/BYWyAFiCkGpWdKUa9CJ/WvD7qUijapGtyMwY69KYaoQN6oRdURaTAel9kaRCTZA/4UkpmcuC8NUGSc26Wa+PwyjdtkzIU1dioxtI2L73LULmpR8LvSLVGv3AD9Mco1k129fUYaBOlFN+OFUVHkRkK5KCwVFMTHZ33U5zsjpvoZNg2biiEIfjq06QpLDGvWbMDA5lOi6SFZoE/Im1joIJr/QPi82jJj5IxxcmTuT+ndPKEE8+kCSaVilUhbfHvlvZw47qrYW3ol0KK0CQ0/VIcMzoWAb/AzN7Jv8uBwZcxd2nLJ6pww8VcddToqECU332lBhXyV7UPSCzAfVXzfwaPj4dQV5H9TElZb5sAdx1ZzE9KIvqbYTFMqVNhHIdUSiP/booL5exxM6fPyulsvdGOFeBy6gZjdnVuJmH1DCzsJ9x0mv+q2E+SJt50fKaBbkPybpmjo0pSvrDfBI43rGd00Sa9wfoH61xvPD092BHkM3kEhkf2sfNqoDggTu/f28nGSNaDt8yPJjee5eAZGudTEoKIOwG0HhU9QMD32wRLNHLh8mQFGvR5suOYwGMjcr52i4fA0SzW/07M1NsVLWF2eRdL2fZIaakfqND4C6Hnz53QWZgaA92OZCm2Esxg8LbzFrenA==", 1836, packet_9, &packet_9_size) != CHIAKI_ERR_SUCCESS || packet_9_size != 1375) return MUNIT_ERROR; uint8_t nalu_9[1351]; size_t nalu_9_size = sizeof(nalu_9); if(chiaki_base64_decode("ADEAAAABQQCdGgRM//4YFg4TcqcT/7vOOUW2zpLhRD9npwwIWEwtDNAL/oNSXcBcYHgpMeW2V9bIzOJ8OdvBCH9V2vEKrpXIjtpQVeVCGf+QLfV0ObcLtmKvwGKCQzBkPopmZO3z9/zXJfiGAFkg/i7RNLhYIfZfllWaEwuQgf2qOPUFlRgsqdlV1Cwqm4GXpCuVD+M5QiVwPfgP/4ucmU77P9zv5IXwUer5E4mwllcpGH8h8kOURJol2rtvO0C8R8bIBBgUC1fMyrOJBaXvEkVtBCs0YQgF+VieLP685Gd+ol2qVZ8PYvs8BPO1SWVMLz5dMSpDfpwj/ImtA58JsNC+co8XXdkmbTSiNJv2BJ1kdh6fTrXwrLE0ZKX5E+x13wyBeq2KY12P9MugrxEOuilWOgQnTXyDkeQvWC7hyXtztw/tqcVFyRALKNUuekjcGhctd9Lz/unsaUyNfr2hURzwhd/cQaAYlYUmTCx2Q+RaAetwXY2PuKuF7JKy2AEUvT8OfV1+IyIeEZMXtXaqz9J7Qq1mCpVAxTjZrijNrl/3Q0yaU0DApOOZOix/wJUV8JL2RpHdSPONjDFW2Th6eu2TQV+TGAHDEyw/uNERswBbKqlcEN9zjs3yqSjYQ94pzIe43lSPa+RRrMv1QmQJl4vznr2pXUVPdd4U0ZgO5AjMy/g1krPAgU65VxT5g5UHGp0CQG4kBfpoDJ8CuZ+UfKleoi7h2AiaXWHVANn8Tx4RdxAyR0G/OZgYNLlOHxi6LNZxg40jIXRnDlQG2BXJfXeOM9qchYQqGR5slhW2vG1kTjhiUHyZ19VYYGRT3QikIRtf4UhBmwP+7XYaH+ELAHaap5IPup6YXiZw0iaAcUbvxGsbnyDG0y1xdqL7yM4SZCfsfMOOum33bH9sTXg7OEcOYUO3drhT1VJuWKJsv6kv4RRUdHAGtD/VkhDPE4eJLR848mUrNaT64MeUqEvoLM3ieLQAmvx4MPkeQsmXnePwrcS4XjBBKFSVzFgDlD5lH014sgUd4NPxenK5VXXpOBAW/yUu+QnA+VhV42DRHlNp9MNUP/2at+xXuIF/0O8b2UOu86wXiKAnm0IxvSYlFf1F0OxjVc9dQhlVSlp5uzT2p4kOPzLENFrrxrxGRU4Rn5CE8Ipaef3ML4e5lcIPrVw08NQgF+RDsbiigZmg1untxWLIHVqfSWGfM6BmthikZfopJkh023uahtxf407ilKqtELulLNmSwTIN3m87lI6tg4XyIJNF6sqzkWzz7C7HiEl2PdlAexidpxDhToHDxySxKAKa7Qb8whV7m1kcSEap4igNc+760/seaCjXp55G0L3mpcpQ5BRTkhnLyKikhQ7PPIEpMSRf6dVy2FtdXnuYCQBPxYduMSj0LKxefzPZNiSR+n2+An+2tttB1jNxyIgqBEJn1WZ5v4ZTt5h8Md/FByLuqgCeGCoK6+kikK1gHtfmCxCfGfC2z+oixoND5+lNnznWBw/2FuapwJlLN23j/96PBTtpBckno4BVloTlQlpWEXJSslfZRj4TlN72j9RZSGpDVaRSD0nQX9xYZuhXBip+l2YWqPVR8VSLNsJ4mq/3J7nv00ZGr7Ha6BEsPmuQosZyn1oPstBNZMgF0uUMlBrDCF5pLZjK7Ujp2Lb6LNTlehXgYkLgh22byCf5myTWgaroMZPP+zrDVFsUsEt+U4j2RkfAHnfDCsUk7o/XArMgtxW6mycZjWW+0oBkrNDw0U4Pzin31ktGT/gKDjfShvfmq+WLtMGL7EzTF12jOtdhK6DugA==", 1804, nalu_9, &nalu_9_size) != CHIAKI_ERR_SUCCESS || nalu_9_size != 1351) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_9; memset(&av_packet_9, 0, sizeof(av_packet_9)); chiaki_takion_v9_av_packet_parse(&av_packet_9, &key_state, packet_9, sizeof(packet_9)); munit_assert(av_packet_9.is_video); munit_assert_size(av_packet_9.data_size, ==, sizeof(nalu_9)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_9.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_9.data, av_packet_9.data_size); munit_assert_memory_equal(sizeof(nalu_9), av_packet_9.data, nalu_9); uint8_t packet_10[1424]; size_t packet_10_size = sizeof(packet_10); if(chiaki_base64_decode("EgAKAAIBAEQBAwLR/mMAACJgADAAAKAyWX6VmeSNPLmxD5RbsCSgOH+haJibjTB1reHDo2ABnBmPbkMX6IZ9qJf59aDOOxE8w3x2RyeC4bdFQA3PTjWB05N1qpD3lBpF0As70KYwJu4AIptnoo0MeawYhiROW3KVQJ3h4U7/K1p4y7EWPgeq3VdYO3F3+g1HLnMj99qwObdUuZry+38W+NwYe+0tWhSnfcW8EQA6oAAzPboaC8ApQfbbqfBdTU7VDTkGNKV8+aRcFhu0qQhiVsQMtaktt8I+BcfmhMs8woe3a73+KjGXtf/bjgDU08+3LZTMgwbvRiR5jJuKkS55Z2OPhbU9BLQ7aPIlBZpc6gtE7fO8jFP8NdujePEhe+eoAJlnOZL0AOpqOVpNBNPf3cO7tDqxO1gBUkNx9tVdF0X2oLNMLA/+k7DTi4bWZCP1o1UnGOiWErHkZmL7YNCDgxiNlNXO8MzzoHqiBGyL5Pohxcv9RDOjta6PTTMIrEBkORVYwZpQP9oNKjHNuC5lcUjgEjKdkkrfbLGBIWQhir3TzST/wiL4BnqTW7C2IRtUFdSr41CjodnI8JOXEW/eMpdQQhyOUmvLbG4daqr9gQskO8k0skJPSbviWQy/vJw7XXHMxxtI5KJelID6WUcLoAKIJSC9RiYTQNuvMgFFQEzbKBgFNWulv+jFap8OXdmc+szM/dhi11ggfRDluTd/Lpab4zcv8ib0IF6qPTciIgbW+TlR4sH2WYxS3KYvBb+HGC+xytwNxnAvO336Gj9rI7kAdt6fYZz6Hk3OKwxNDlCO/LhNB87FU3W6qVdVmttk4lBupcwrlWWJscAElT23Lr9coHj9nJv2zhlS30ikFspFZO+zQfVOl7fM7ix2AIzXeS0eYhQ6PVoI97TDPrXB/Rp4MS7ugWSHe3RXY7lzO6XwAI2rvqqBX6zILvX6huk6jdD0IsrdKOLsWPrc4HPZK36PLnSiD0wzQkDEh5SYKhUHS9AplE35+nqWC4lvinVIYe4tnN3sHI7a90kV+R9z8ieuDiGeA6pUBM79Q1+tduIaPtAFCFMMHzo527wZO73rnjicJy0XJC+C84GiX7OvEZ5EvqURhJ6A51rhJ0pXGcUIHNOADtTO2puvvrG/LOvTXpqXcpCaH5Z47hi7i6Nwjie5MWQfBmErfK0//Ns14fCZwkxoyX0dIdLU2cXkP2DHnl9FgGqiFc+rO9KVGYuMeXgBpwyWi3jmOmM7OTlTe3hlNow02Oeqsh2Wq50uKmutlUDdb7kjygDm+bRky2ZYewJxElDfndtAjJ8vhVtqbvMV/aLbz6usoi1sijgwcrEQGFVhvChYufKyvLtkdUThNlEZE7N5+aedL6KzYt3luOe+Gen/bDMspgvpPWBfUWzTFt2lBGVDjRLYXii9rt4rYMvWaytg/cn+G7UEyYptf0e62fkVRPaky7cIqVCStWNxZ0WnMKr49Cb4fMHaNyH4JX/0AxVn1AUSXHjHrFduU9ZIUBWf0TNULRZkWhT3iJP8yuSFP4gl9dosm1qZZADR2/9YG6i7Hzsly+Er7nOLTWnmgjDom+jFEuek3LzixeLHHQNhgeil0VyIFu1qZ0QpP+e5K5zECluigpHejkbaxgiZHt+vYqqv3Gk3QvRENU7GlDpVBFg5NxF+xlSDrXCbw353r3lTeAzsUMVzJvx6TpOSL8RQqNfizMv8fhdjTp4MxdmAiP6gKFyZMWC2Ylzhtjr0P8RlFCLy+HZ2LMp9om3tjWff1vJLtZu8PZCs62Hn5+l/sLRsjNquWF1KlN1OgJkXcBijju1fKBCLqxqTaUET+7MNC85BSfF4cpbWeOfIsXQjBfnR6NlUaaLfmdP9YmUT2WhPJP9Xxvs99BhsRlg=", 1900, packet_10, &packet_10_size) != CHIAKI_ERR_SUCCESS || packet_10_size != 1424) return MUNIT_ERROR; uint8_t nalu_10[1400]; size_t nalu_10_size = sizeof(nalu_10); if(chiaki_base64_decode("AAAAAAABQQC1GgRM//4WixUAs5hj/5I3KgXm0jife2IAbeKMCMpbdE+8KzYNKc+ZtsBC+sHdHxJo/S6HSTLnsw+qmJLGSKJhh8fAxTWWBNhrhIWqKmmLJFwr9Z12xLIWfdNZFbJBBxIQKpTe5ltazOXByC+DBO8WTlmbd5+vsE9Uh6Gw5GXtx9PfcRZncl0gteMENrnj4Lp+ySahGie6QCKzeLiHCUfIceqmywzhH3lnaV6KD7Ghd6cTB0Jteh+5cPwSwUrYXwwW47517Qr/OWGb1HG0HqV2s4la58AcfPoZc45FjMZWN+718l1iWh0/5sCNy8cqEOfGQ6zZlEiBsjUgclnN7NCM/llRk+kfqpUUoTCwh8eLfF2NUUQBmwvEkTCt9Gpiipt2IJ924IWZClULnx3Z6RQmDSDC5lLTXWuTh7u7fSIskVjVdxau3JcAR1EhOyWCcEsYuWSIa8pRXZEsBxl0cPlT+MaOmNdk+NsetdJ/PKJ6EOSk5JmPtT+PcARiy7BrZlrqYRNY1Q4T1x5Yt5Zy/SPTN5dC/VQD18Aze+uQJu73BoeaBOYFY475y61qV2m0qPPyB1HerWZVgABYVQSOS6gHjEHruApvNYvq6M7xaVFIr+AQ6r2IYGRlUi/AJjMRhWbY90UZZGsD2AIQoPkT2accDSHBnRlSh8Pz67a8gr7Y4T4C4XKvdgKR0eogjbt2JT+iiDSCSt4Y1Mch5L+e5jt3NZbQcANAeMtsrNZidWC8OYAyJm+pZ+EJ1C9cL233y6MqSIg1qzNocL6Ih4cdAI8ffZZ897oRrc+RikJxMIcPw3RiY6DJuXb0N6+t4mMDpuZJf4lqVxWFGf/HMRLZaoeikVP+890CtmTyK1KJYfpoW+44+EnZdiQDEicMZQ6+nj9YvGL3S4iMwCuB9kjdC9wQXCwMeSdZ0qAZUmVNXojrjDvzKwOkbJXXx9sFcl4Z6er/oa5g855ccNESk39MiM8Es0wfAAP/EEIb1EL7hbdgukGyRrhpoOb8D2gWQAhTam0OzQ/2BNygKdbhbaBNgputpaXupTwzBTx3T5p4OHDAyYdJt85tZNTkNOGcodYHY4sAHMiyUvvb/EpQ6oMpBNQfj42/Dah8pZgOHfm+kjGITkJv8B2hH6x/yjPV+xdN+/YjeK1Z69vqz63f6L5ppTSI1AwJqN3NyoHEPcf3A6cqwtq8J3cdhad04JkHM1ciaFStT+mlsNxxqftL5DDGRbIkh2fq7y38rn/NHobZexFXJTAJxYgIheSg3TtLX4vTpxzUUKEnfccX6M64KZs5K0ZbVz91+fub8o2er4VEZeWu+Ykcfvwtni5tXlk1yhbhd0cszeFrq2c3L3WNCrfMg3eEUfGvx3mnVaKaUVcE+o2IT2vzMiylep/a9OdKlTo5s84fUMsj7navFKmyFWK91AvFxX/ipkSZvnDaJyzv17rngA1XHM7XR+Jn2gm5VP7CpPn0zX+u0HjSOc1gcO33uI2GR2MXec8T8VOzge9s9xqn1PMjqGKNBRA7QxBMoA81sAimcR3EM9RhTnOY9fVsZAGae7FrcScmbsDTvKFuyYzAuIxog5Qi0AIXwUkKujJCLtOkW1upvjTXUDrWDNKLcKw+5aedgbt+D/AvhDxs1Nneum4iwOcpIZIKcXxmB0/TPvAPm9alt8Ad9NRhfJaxc2WIfRNWYHbF+ynMt6c9vtMuX4QtrNsSBTFfDoEA+LbTFLxTVW378ZvzW/3BphOWQbklwl6MAPRCzqXroTpKTfs8XlqJbPNqlhKnc4O+jaO8BEkMEhu+i8l7PCouexlX9ZTfbi6D6PUtna5CxOskroZ253Ht1DwdIHJB5t30EEbF+HQ=", 1868, nalu_10, &nalu_10_size) != CHIAKI_ERR_SUCCESS || nalu_10_size != 1400) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_10; memset(&av_packet_10, 0, sizeof(av_packet_10)); chiaki_takion_v9_av_packet_parse(&av_packet_10, &key_state, packet_10, sizeof(packet_10)); munit_assert(av_packet_10.is_video); munit_assert_size(av_packet_10.data_size, ==, sizeof(nalu_10)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_10.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_10.data, av_packet_10.data_size); munit_assert_memory_equal(sizeof(nalu_10), av_packet_10.data, nalu_10); uint8_t packet_11[35]; size_t packet_11_size = sizeof(packet_11); if(chiaki_base64_decode("EgALAAIBIEQBA/FpI0YAACfwADAAAKAxlzLDthrdmf5qaV8=", 48, packet_11, &packet_11_size) != CHIAKI_ERR_SUCCESS || packet_11_size != 35) return MUNIT_ERROR; uint8_t nalu_11[11]; size_t nalu_11_size = sizeof(nalu_11); if(chiaki_base64_decode("BW1F1JVpl1hLJyA=", 16, nalu_11, &nalu_11_size) != CHIAKI_ERR_SUCCESS || nalu_11_size != 11) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_11; memset(&av_packet_11, 0, sizeof(av_packet_11)); chiaki_takion_v9_av_packet_parse(&av_packet_11, &key_state, packet_11, sizeof(packet_11)); munit_assert(av_packet_11.is_video); munit_assert_size(av_packet_11.data_size, ==, sizeof(nalu_11)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_11.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_11.data, av_packet_11.data_size); munit_assert_memory_equal(sizeof(nalu_11), av_packet_11.data, nalu_11); uint8_t packet_12[1424]; size_t packet_12_size = sizeof(packet_12); if(chiaki_base64_decode("EgAMAAIBQEQBAxy4uY4AACgQAC4AAMAyyKNnLvvOHx7usGT88UJni01P5qcq/yiAjrha0P+J/nMTVTaBZvDkxcloNpNF+xfJeE06opVqmII6FLHcqp9mB75F/+5IUskInEQrQnzClvL4h+ztBltlIEYlDrZdw+PN6XGXFRuV63zBaaYZv8nxzRGtQxRJrWChzoqneOVs8jqyxuwD7RTBVKTzOT8/TtrbwxK7AkhDtIqKL53ebUQDb9VosuusA7JnanWvdqIylgkArtUC86GhVBJeD4xVifofI4im0Y22xAJUntEuKX2Gf8RWstafo/Ykhs4aq0nz68EqIaa4jimgpPK2VpNPEAKxYD5tLLkt/1mWP+JdkBuu1vQBEDkPZFyM7g/cuNOqEXNZJx1XR1zkVP8SVjvLn8ohFQdKmTJDoFyqNkKz4BtpL2WvoeCXWxC/kGH5OqcNoBVrflqeQY+sv96bMs+aObgdOuO/dQeShDbnS6VRXPlD5pMPFrEJRGoCHnv/pVpujEaLS16AItVZ6RJkDNf++1JILXSClEltm/ownUVck4ecrrPhXBdzSQAnbnDGH4SdiQ3sxE4XtFsuvCw6+kPBnYvkma7CPcEzc11EHDDMeaiqbb5V3xHAIByB/WWXn+oT5DNslo1/Aei4o7Qjk8KPNCPLd4ELCTg9mrJCO6E5ZFUQClk3RSjrMd/jLScFrpj56Eyu3XNYO68KKtvNSkTOMwpweQRRZWhegORuGP75wDUJdd2fyPuw2TaymssRp3F4b2XGxELgqW/9sXxc1NuEz+UD9vhzwwKIvX4ysXk+uEnuDvCRULU2XuItrbZxV4NAqphaFPPquDa+NpQBN1wSnLEGsp0r7VeIRBExJTilP55ZUMnQNadXtnVmYDIOix8CgFalyVfGE225EzT+s1zmJ0oZ56TqWWtlfMwcdLigPfdfZS7e9T5RP/HgTcsRBRTye5m0nKEe+KKgyNXTGZ+5hIqswOktNkw9tYDpCHcNvjLtc0PYRPsAqGJmKE4i1zgAgiM9YUgSnfQ51b4Rq1+h3G33yB6fRaXCPJOfP8UF1RxYZAk110cdNMAgqR2Ja8DTOioiD34a6zfftP0cBuAFV/B6xbdEjTdu949P0nr/0vbEZUXPh2P/c8xm/0wXTT57tnIXNo5YJl9bs8iXmFivrVd0S2091FDs4f+G1b5+j4g/ZdJcVx5Y2QzSEhCW3kE77BBeG8zRCnKQSDyGimvM8dcKhjKfz5wYPloz2U8ltQmFsWmt/Tv/wh6T5MRiRSNsMsHqEj9sZnRloQK+xn98Yvyb88X6r7MWbjMsSLa+PfCM6qXPDhXlrRIGFgZQFrnPLnnTHvNqHcwnoVc+B75w/4+BFq5DoU+hZ1hSiEne7Gb9JM0lD3WYHKM2ZQ6feuo1WLvoRfhHfFMPzmwodC/3g0dGtE81frOHgXXBEB4xTH6X86IhUD/PTP7KfE5v1SY/MfaXCHkhfOOUolPuRaEubkKF1zA0wThWjoWuryxRDIAmIl8doIq4+Ek6syqVawNeFxKsz7hNW7biKK4BPzjBm8DtxkDl70CAlxXuhO/e3swFPrM44AOsjyAc+jt9dh+XGC06xwVOlgLM8HoP2LwdmgCN7O9dJvmdiUmX6mwhDh3Z8db5YYK5O+m61BLVmgz7TBVafrRb5vbw0c3l7Iw+cJNsR0zRIKanlVZuqPfmrAsJFclwhvmDM8PFp6R/9FOli/WFIE/kaAHUwS5TGGZ1NWOqgL5qpTF4zuLUhfsdOURzMqLrpjnXDfmPcQVbte6T/VAhHqOBMN/toElXWsg7LnvFMzc9SoPxXMESUFIBiaseQlQ62V1RrrK+5D5c/X7WwOPB6t/DbtokzMPvWCYL5iP0K0YIrVs/5x8=", 1900, packet_12, &packet_12_size) != CHIAKI_ERR_SUCCESS || packet_12_size != 1424) return MUNIT_ERROR; uint8_t nalu_12[1400]; size_t nalu_12_size = sizeof(nalu_12); if(chiaki_base64_decode("AAAAAAABQQDNGgRM//4dfqE9j1rImCPZDp9LcSBUDq3DZXmYcKQ3EV3lTgg/x1o4iUcVkIVRFsooEapnCOVuLxROb/C3444VGx/bBUWBHS6Lov5lIaovzi0ssFDusvDTemWyXSOE1H4ETwr8rIOYBJMm05NoybeqDJn57CUfZFdlgIdVjAdrDn7pARZlvfUsOjTTHSwBuyztFvRNL7FUtPCZTjzpB3lWcckx+2BzVJ+ei5/aArgJFfxYfyiDI6mjSuBAq3mGDQ5s+oRddbaYbcSvlVZeo56XZGBwmS8KSJbLF4XMSenjWSSs4deChWrMQ0nyxt0WF/5G+/JaExy4I5PA/6y6clhNcOSft4tZXFq7fwgcQPgtgpNsC8jXkjudU+94x+dSQG3xlFViegETVOxjUtqYrpxaLv8+V24jhxQKQQgWtgvqd6MpydepkPLVHerncyAYSFLHui7NrW326WD/t5YhjGDNapF8XmxtgFj21RfCMYkTlS7MH79PXabZP+8KeVE2+Dlnm8FRH90gc95dhrOEx7IZWRv1ddhuHXF2xRCFFMl5mF62lcoD0aiKH47Aotl26WgpT30rUvrmPzqAQErzMXNBdoeuWVfW1d2X0AAU7vqWAmIyFwzMQUz4i8oexyCTzlCL0oRCUs/Tyv1HVoJtQtN5mPytuyqIOBpKptB2zumIzUAQVa2G3vROFjMVMU16sDeTOoyMyV/WfKE6alStsnd3EFvin21KLNE7wi1Mu5hF1QXVUEvG3H1+nTv+oNR6YCKENMRVOPyJNf5TiPrByFZRySDZk2UUR/3xAQqPwc73/W26/2Bhx5/QmnuhCSX++skfCbVZ6Z/phLcjUH9kiMf4r4oBizR/4BdWQSY6U7SU69CZNWCFUvrmo1SsLePt2bUWrOtqsJT6NKE2zmOGJ5EnU3aLcqrsdi7xFioQmY3iwUQmTtVOBh574gukl28HoyzNToc1Fcg7r6vO+9Q40LcnWBP0rx5RYUag2a8KguJsfYToBbVZfskbMV+dUw1IAJxww3cfU5t36HQ8/DCGUztLX9qOPl2x64Unrucoaba0r1yQakOQs5Uwqjd1QPV3clvUH4VmFjD616l6IDa5ncm1jE1+8OfqLxRFmQqZdyfeitFUNWMTsy+e3rWMvA6Ls+My1kLU4BeOYMiCUKqC+i1uWHigsNC9aypGCntj8He09DdolgV+1jaDTKQMlg8zddi9xEuLRqRE611YcsXbcbPJ8i67YkpojFB2FQzfvDpI1+JDUKHYNLYgM0KinqCBMaz7XebzfkspbMkmDIfNS9roo6NkqIMTTiLcofuHhYt1jkKIu/pjDx9+THkgj+3rl9XUmL646LHvess5uTEkAUkxOZDxk6AW/bBig8t7UqfxCCwamR1uy1DhgQ3f2ybowuMtP3PQUYfZCaVvfp7a0mlKrudZ8ZkCCsj8kPzWZyJZ/Tql48V0m8jQ3tLkUDa3p3M/duOacJqnMST4l3wUms6k+B2baasaMOQHXNv2A40qyGOFGuqPrbbkOnvMYvIS0KHDDJAfmlvd+yN9Ahc76eRM5+CBD53psLu+opho/vW6MUhraXyV7n9JTZ/3CpdmqBYGunNepmom18yP6QJoBoNYDp+EOE/PKaXo5lWnbXo/dJaNHSI8e6lgSNBCI9kwzy+FAmiQ4B6+EX3Nt4kkHeRbpSUtly/Q2hJCztD7l7hYpw6x3+Fh3uuTx6BY4afSNBOW/p7AwIOn19n32N+wVeMl6rp99Nclt7zFLQMjNKQZB47LRh+27vJxv9LA3d2j+x36AZ6/LPZCIoE9KKUnsNg/7k0/OYnmZQsGzA0z/NvlKZCajb6xTO/Tv+j56tLQSGc=", 1868, nalu_12, &nalu_12_size) != CHIAKI_ERR_SUCCESS || nalu_12_size != 1400) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_12; memset(&av_packet_12, 0, sizeof(av_packet_12)); chiaki_takion_v9_av_packet_parse(&av_packet_12, &key_state, packet_12, sizeof(packet_12)); munit_assert(av_packet_12.is_video); munit_assert_size(av_packet_12.data_size, ==, sizeof(nalu_12)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_12.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_12.data, av_packet_12.data_size); munit_assert_memory_equal(sizeof(nalu_12), av_packet_12.data, nalu_12); uint8_t packet_13[34]; size_t packet_13_size = sizeof(packet_13); if(chiaki_base64_decode("EgANAAIBYEQBA26SNTQAAC2gAC4AAMAxrwAZh6ksY4n2zQ==", 48, packet_13, &packet_13_size) != CHIAKI_ERR_SUCCESS || packet_13_size != 34) return MUNIT_ERROR; uint8_t nalu_13[10]; size_t nalu_13_size = sizeof(nalu_13); if(chiaki_base64_decode("BW6UnA0HjWWqYA==", 16, nalu_13, &nalu_13_size) != CHIAKI_ERR_SUCCESS || nalu_13_size != 10) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_13; memset(&av_packet_13, 0, sizeof(av_packet_13)); chiaki_takion_v9_av_packet_parse(&av_packet_13, &key_state, packet_13, sizeof(packet_13)); munit_assert(av_packet_13.is_video); munit_assert_size(av_packet_13.data_size, ==, sizeof(nalu_13)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_13.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_13.data, av_packet_13.data_size); munit_assert_memory_equal(sizeof(nalu_13), av_packet_13.data, nalu_13); uint8_t packet_14[1402]; size_t packet_14_size = sizeof(packet_14); if(chiaki_base64_decode("EgAOAAIBgEQBAzZQ0IEAAC3AAEkAAOAzueu1YIFfbPSuNpRpQc0PWyUcoL+tpc5cC4/oNom3/6XmR+3rY2hJ4kV5U1FARGreBcxXaUOma3BUL+9I7HI2BG47vlEEDjbYeFo2/DKazXJVO+AcJZhXJzgVgE1fK4mhYsh5bG0MWEvU3UphWiHZyCvBYVb8Zdy0ccXpGzUSSlZ6EpPR5FwlQLTw0IWFf2jWfWjGcC5/XIW1XkYcLxYrciyo5VPTlb++8ubhzo3AjXYYwk6tNtdtCJ4ChoHnyHpAPdTSxDwCFPxBWOKSk9hLu7/k1iuHQbhmPJoX3bTMCGkzQXwC7vNsYzWGg7IkZSNIYE3l9FgUCfQSwaVVGwhFnavCG9XV3FTUZKzZvcMPt7EfGM3Aq912A79A9IaOe4dJV0cRsY3MKnwuvhEsvjLFkWgQXER8CI62N1phXdAe+6nEw3UoGJm8QzuYNQe1YQvDGtCrOb/tWKE37qtjABXviUWkWU1jwQ3NCog//pC50XpXaZAdXKtudX/H+ViIwStgCG7YxeOODYLiE/Jcs/qHtz41WxmjdxkHMskaX75mqUmPFo8NTBlFNx6JOi4lEjfKUG+riSagY7Sh7Gn7MbGtFzlR3Lv+UtYFg1poS3E2Jms/WKzydTJsBeYCSGLz6I2GFWk6FP6Dr8pkBdwUr4Xj/I/QtbQHwWbv3ob9mIBpLLw0shXwomXMohQw4OFpPaPCo0lGzgVLo/ngHNFuXwOwLD2WgYx9VGDzfiCaR1mPvzpdXKOtVgyq9/5WMle+f7XBiEm7O9RdInvkT36O9IAsF8cGL/mC87LEo1fxGaMv2SHaH5VHHZVoy3KWgfXGAttyBJiz5FDmiszgzltgoSFrJOFa389it1SBHi1qRzkvNNsWQOx21ggysiv6sgIYQCB+y82h29s5y9p16EjB/rDTRcHh+nvk9tK4+ZaKCTNDAO4nYz3sbLGqUQzLbapM0UqH8+zS5tQeEoy8/KR5rnnIYWc3dimC2a6iz5L54lxPM0LGymVDpbAs+l1FA/Ujn42MnVriBBJONCY4zuaaJV92ZhrzATeM24jR25RknUKSMLKhkFv+IPt1/WxbIq+7EU7n8Tf9ENFFSIAUN95BPuSoVlGAgTfHbgaq9Vnz/gi0pTCfsedoKtWtGYNix6u9JzkYf8yv+srAfrxtFP3oo+zIB0CpaRaklag0y/FdLMSLLSNHnhJ0pOCm02vi/wTlMqcSOM5GPfyVB1PP5obPcITWxgxtjb1VHFnj1P53Y76bvoQMEbrXXjaHfgjP99w6YZekXnBqRXvy+fflT39a3vhAz82eu0v2rpwaNhMr/Irfi2o2GL5An7BwL5McPA854tfYQutqutihQzShUq0TrSqq/YluLv0FpCcoDEmw2M2Y2w2Y1LNSsS5sF66EYr+VF1uOsVHSqaOa19Lp1E/MHBzCWvEhuglPx8a7vOH034hXp5tnB16+YrSXypfhNIHxcqNPivX6hLtji4U8QHgCUfQL2acwrcPuvKLs31AMN6r3qL/9f52nOyH8hHiKnJCEFnScDpqZk+FdAcrHbXYdgxrj/IODO14eDp3mHNpWj0fUneCXnV6+x5TBx2FHKJdcrDEdasBQ9wFDswsu7yH7xLVxdSGsUQUOMJ/1KsRQ/G5S6n2/Lanpie2sUFSvbk5oCgVU8FJyPhIq8wE0+X8NRcYpg1V8HH5Yog5/5MTogy82LdH+a6WnJxBm9qHo8OIql5tGWFkpXyVsSYHROvS1AX6L7W3BaqDVXTUanzU59h0ftftWkUhDknDKdjSuwzeU/eZ8+mYfZLQefSMfZtKPoy0BYzQcMZkr2Xc9AeeQMygVYr26hA==", 1872, packet_14, &packet_14_size) != CHIAKI_ERR_SUCCESS || packet_14_size != 1402) return MUNIT_ERROR; uint8_t nalu_14[1378]; size_t nalu_14_size = sizeof(nalu_14); if(chiaki_base64_decode("ABYAAAABQQDkGgRM//4CXpb7f7//xwtXrcv7zV5cY4pGnA6VBY0/wK+FDnxGCJq+R3DAqGjw8jzz9hrTyfbrRnQqJzVbj5uSJDzfK5W0AYoc3QzmxkUqz7KTeiC8RPpaKGEvDLPoYgYOpMME70B071QcWG5WzdA5J/ScBrhal4gAoYkvqfLKyxRwy/F4LiLflwmpacB1vWI8wM/6V/V8fAf84Jes+jomQ/SHZHFNJL+TWRnVZ10Y6ZmAUX0h22wvn4Aj5kKXZNSWzjHvO14hNDoqfB414h7+MFxZHlVtsv+rUfHReAcR0STZuX9bCYhl7eLjOvwI485A2+6KmuA+0b8nFY5YORBmjaFAweLM/fwx1e0JzWDpH9IgTMK9xiqB3mWAON6On2Z6ilQrF7Hi9VoSwZLhsYws2aqMRg3bkzJCip7I6AUZrc7e7AUev/07CWciobosvX77iSU3LvZR5z18A+uZrpD+4Pus3LW3mbpXok35afvwUYGueh3be5Jkzo8+mvV8w4v/nKvV6XCTBuhLUbbxy5evFXY24n485E9OpOdjMWI+tSx9/NalBD2JV4kcIOZcNtxDkUL7Wn0B7/yh2zEYGR6zX2kNF57FbHcutYwNtQ+2qY4khyhbhVmuwKKmZfCnPb3n0L/nV2KeLgA+sZPZWBxjrqRXUBuGAaJBos1FUtxo3PTF1Ds7u2ds9EaaoT7vFR4YuUocrkLtH5/F5+PtS12+7YSwWrKyj2GWJIp5L5f58iO7Ut/xA2qu+6m0bu3Siqly0IeeGcJalT7JwTEOUJnhBULNrVR6ZqVSS5pE9fm5NcPXZ/o2wkPBl0RiqFtikLFNTE1jAwer0w+YrQwlsDlYQTG91ug24A+/aZHaFGM1Iq9k28ZTMzLDW0dXMILoFoV2WbxoKZP/GNayH6YskwKqOzTMocjYXUES+O1wibk13vvlGldTmLJF56BYWuhuYlRDsnXEEbRg3kAj67Tz+4l8ZqdRZKbJXY1u/BlH0dW36fFwPEXPi7w/zx8DMdMl6qSXNMixun+Kjf/sQUXj3a3hRLt2YDgB1jP4vl5wyk8+UiCPtKMF/KQAnW7FVFjdrL+bcrbabeTBKIDoNScUGeSZ6aSDyFJtn6lPwpxBXPQOdWkXDTTy7lKUgqS+QNuNYIcKM757zJD0nUfJ0o/UShM2iZZC0Di+Xl/Yej9W1fOhOJU/QTkmZrwbMTb7/O3Qp78lLPSt9AvFmDP6yPyBPva32O5sEQJy2MXVsMw81t/iUmqNlPSjC3Psw4fyaSdNb4MnxkqQn8UMGaNAHk+/3oOEcW+vd8xCNGpMrXp/r6c0rzxZpWMJgLJnTeO7g5gahAynn0qTSFO7yejuymV4UYe57oT05XdVmUW3ZZ+jjOdT+SEFgYPNNfP/cP3A28jypnGeuFcNu+abDXvPLXvScQxQkFZTJab8t7gU/A+52XlZ6Dekm3ga6Knt4/nXdihWiOHwqTy8PHJFyDjA3qysiAkqHN4GrFAtskwQmzZ4SsBneJ0qE/5DYSbbZmnjk6NtLkyYx33nhDTNidth4Xm/SGQ1hNvN9psR6ks2XplFUpuR1XLZ1JZ5A/P3JpHJE7rL44+zcKP8H8/zfTvH7KSelT3TdOEHqlQ7JDh6AAy0ekk+UV3F73mz+5NwE4NU2NHN7AHu0WyQejVkJTfGjptVYpECSMKr03665I1wbBqyi8QhdJFdce2e+x3+OV524ADGBPNB8srnqaFGL6kTGBH0e9FUtEwLZDrMw1XiqslV5Af7gt4UtCo/I3FlNIzD+U3v+bbdiXp6oT7/Jyq5Gt35HkghhrYAMX4AKVGI/w==", 1840, nalu_14, &nalu_14_size) != CHIAKI_ERR_SUCCESS || nalu_14_size != 1378) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_14; memset(&av_packet_14, 0, sizeof(av_packet_14)); chiaki_takion_v9_av_packet_parse(&av_packet_14, &key_state, packet_14, sizeof(packet_14)); munit_assert(av_packet_14.is_video); munit_assert_size(av_packet_14.data_size, ==, sizeof(nalu_14)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_14.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_14.data, av_packet_14.data_size); munit_assert_memory_equal(sizeof(nalu_14), av_packet_14.data, nalu_14); uint8_t packet_15[1377]; size_t packet_15_size = sizeof(packet_15); if(chiaki_base64_decode("EgAPAAIBoEQBA/HQAnwAADNAAHAAAQAzdqYtJOnis8/yz4FDcDSjq9aNMpzhF0BTHvenWSGZdD8hp/EX8oRSzqBzcsystVwv7yMafl4NyT4giDQdjGHwrKw2/++/KAJ2Peryn5sXPcSP3SyjLOnSw437grsp6g7j10hmFMe1MSlNJsrUX2MICTB+M36MlDiu0k58UR9pAXnj/IwTFBEKSQ+BiBV95TwwFaHAuvI+E+ZGAqviKCFbm2A6tAzbFUC4FKNlnxBrQ45N88vpbE5IE/zkQl94Jz04rKpbUAmri70uCAzdLDi6BUvxm8vFquJecEb5Pygx+Mh6/B5l4TYMbPzRg/MK4HynoggbsUvVobafMHoUq5gFYOySfmePEvds2ewse7uKBoRma9MV4SSZcXoRscVgTYfWYqGmFpIHaYtpLY+/iS+rmxRF5Ll0QJxmXz00/CByS1pYtnNNWmiMpOH61UkHBF5LZH7j86IBV2Gwgm1As1Och2OFO3/oJ8ipXEM5JpYieTrnTmFQbHUAvNI4vZEocPKGoyuwYRotj7BcUCf9Gn2HHs2x7yGQb5vfoM/1pkcTcTtql7PhlxG9gM4kYfWIYdhYBhs2iRR8r21E3+D/08YOWF9Cd0/UqmjKfVhICj18zrVjGyVfezeXw3jy92IkppQ/SDGiH5Uf0wOvkE//Akh/L0rOIqJsWhbYKXzLynECUUJj+SAuME/CLRbN8iOXt3Qrzl3rMsu/YJfGsyrGN+XVpGeuq43WZPAbez9RoCDjZsqjGOnLRchvArkckUjiElnMeTiWNx5l5lTO6bChcZpAqfZXRVlWHHB09+fDg3QILeCyPCBUax4ZS24fm0yz0xEF7kZSQGwywCQrrmJco55N9AI4zPA5jUH4GR6mrFltn1IKHDUReiMC9Zcf7q044iq9Z1BYcFpcXoAaCv7RQVRcOAda6Z1TH8Ct82KqqL9BUkT07cOF1czwidSO3OwaehsNLYtVRp3zl6gEaQ+wTu+fKHPHMf20LPjHEeSJgXQMni6HnykPPXbK2FF0jW102mF11BWIXVhqz4YyuQfUDvcV8PgdwzuUdXT5DCYTI+reqBt68hiehrTOohS4K4fNlXB//+xiGX7u1b5u6eTJ5PtxGdA8A9NdsuFN+D/2GKQyGbj9ScfyWBYkDwhyCEjRYBr1yUp8nKjyrk76l+A3AzyXvpgtUCeYV/u/J6dph9/xjjXNFGcSK1lXerHAmhbp48DS1GHEQle4Nu8YEQP9t3Hmt3crD0Q64M5M6rN9/REkvT5WchUjGiN52tm/W7sHQ1F69Vn8qwfGpQEUWORJgcalVjdwvk1DdhvD0JS7AfiGPkV2Gjq4fGxwXYDVdDsvH6SQMGbmb4yUijNiWhtzfX9eC5tV7WXsSA+kul9TvWhodWeT6uMJW0VsWz2YpJzMeuk+GuozP/ISt8lP0ZVeF+xUuqTv8Z2uudjq79/oKKoUmKLS7UYN20e9RSNGetWkAndupBbq0YKQQqt2exAIJkLyIbFFYiGgmoxYSVMuCQS+aOtxH7NjF7w4HOGgXHpiu0qX0moFKytXQN67UW6LBZsz+1xNFF/aMIaKeyKOirAjQoriY/6Bgc2YLexlrh0IL8HuRS/X1+4IRgYl9G1UBBldJWtIqF9kelXrEfp9m9gy3NhHzSkXwlMpxwZzPoWGs/3WLPew2B3QOboBcDVrJ4UbryncQy35+BrnmPDWFgYa8FWtxErfWRKSCjTL1oTILPSXkgvw0abW6QHnKRrV5LRownk3L1JtR0oALmhx58Mrcm9HlI359aRc9ccWb6sRN5xij9QQHfmlNQEC", 1836, packet_15, &packet_15_size) != CHIAKI_ERR_SUCCESS || packet_15_size != 1377) return MUNIT_ERROR; uint8_t nalu_15[1353]; size_t nalu_15_size = sizeof(nalu_15); if(chiaki_base64_decode("AC8AAAABQQBCJoETP/4AKfrf/32z4ob+nMCbUtuYYSus0s+798nlmNpb//ehnTRj0pJZPtaLz5JicNbcWAt0+xPI3cLa63Ptd4YiIqkmSbSnjA2RajTjzn7JmUKuB603eSdTcBMMh+OWcIsucXVaOzGkncruF/gCMZpssjPKmUch3IOa5b5Ub+oKcMpLL7+0plF7IPaDawitAsbVCLLR8ToSYMVG5QaIOMX+oe9b9yCZiVEK6PVRUAVN/YiAch63Rr6LBZAsW1kakiaEtdKk6dAdJs9uw96KWZqTva9ia89CaNtWIwrYZATG8hrej2xJPhD34RyS3yy6k/KV1resVUIH1yTsV6aqIXWNPuxeGlwRxXHGWk3WIlrmoPbwmfLzAVH9eTNvTsEoi7wzy8DNHYvUnU45zPt+cihmqIsawsb+LKvbAh6gO0nVFjUcVYoTjthlJgr4WCYvQABefTN5JizMBc92yrEFHkSJwbQEhvFhp1ZpddL+z8GMrPuBfkF5QNA4m1gsC0mO1ch+9WZTSLD0FzrWQnIIO53dTCys4kSbEAgXg9WqUCyGWL8mC5KgQF3KPXrEyJDtw8kVf3Ix1+v67wAY8Eq6aQUAVYsG9V9ExtTCRZTLwcMdru7vZ+n/ERKoAD5qWLtVY7ytYd0lrWbkZZ30neaTHYdX4xnqBRVn6/qePXKO7lLWmO/72KLGNE1iE9zmUp9N12ofbPHcm1R56RPP4o+ikjkfTNVZfFxJ+fgWXHbzNvAN2KdIgq9PLUry90gcdZIoHYjIhBoug+P05ngFXCJ3dXj0mzruhPJl1arW/KHs12WTQ5E/M1hgGxDeLux8BIH6VRZ0yMNfxDIPiO72xxH7r9m/nvykIVZbuQYxYNN9U2B/CtFTWS+OdQrTpKx+ntcM238X7WlI6BzzXSQZkQOv3DDg+aAT9Sofum2Oefo2U+3n1nYO8GvLE3rvCIW6MdfS3IkPe0XOUDuDdSaliiYzBFQanzblYN2tFeN3sdklKfXJFUG7HI3vnE0HkKGU7E9DX1RWyIL6OD5pA5R9Jb6YXn1qQFO0NvAVuFIyma7LM2TFZ0yo3oXi8LJ24mDJt0Pcc2vObAD2JyXHnlRBvzIfVdIHjsR64JUj0hYIsa7y4D8YbDyoKcYm7AcnJW8yvzUkE7MTK8NxGB1OpIEBS1OdynGlKLMBwKYGNIky93TmtfKYpVCSX/jO7XMBI0q0ZKG/YD1cuF5gNOWwEK7WCeJLEV8sYIo2QbGPcDl6ldVJkPQIQgardJQA9ugC7qYAnSKuoLkhitQ7d2Vrskg0mzMsjK4/S638q9ADvunwnFOMcQoZMDyjHN8N0nDhWcQ+KgHW56/Om7D41q+Drkb4H4uJG6wEZ0Tr7dmHpfyrBdVf+AzHMhXIkNpUa4yM+xsRYi9SIpFhTGtuPWbq/RLOeXf29AnH8vtn9iKaiGK9t43FJ6uLcglIIlYbQY5InSS+AgK9VCuZOCOi6xAtWMeg34DHxd4IMd8mTZpWaeS66cn74fbsLkDNhr1CYfqmrtg/M+23g0YJ7kTT1DQaC7GbhgqB228OrrNX+zyFipeCmi5U925DCGQXTI8cZJ9E5vwU4npKpLwnW4kubC+D53EODM19vUrztpP/IsfeGAaVWA9XOgg7FV+PSZXNvhQeNEDsih6L9HUgtU2FcelwJzw6UBd8sGlgEDG1D26pQkuk9htcXgTUdB9MYH5isKxqTgjqEjVXkwPGcd4HK1E3RNOTy+hhg7bv6hdkTRkGbs3IReLKEX04FJHFT/zsVsnmqmFle5hQ", 1804, nalu_15, &nalu_15_size) != CHIAKI_ERR_SUCCESS || nalu_15_size != 1353) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_15; memset(&av_packet_15, 0, sizeof(av_packet_15)); chiaki_takion_v9_av_packet_parse(&av_packet_15, &key_state, packet_15, sizeof(packet_15)); munit_assert(av_packet_15.is_video); munit_assert_size(av_packet_15.data_size, ==, sizeof(nalu_15)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_15.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_15.data, av_packet_15.data_size); munit_assert_memory_equal(sizeof(nalu_15), av_packet_15.data, nalu_15); uint8_t packet_16[1356]; size_t packet_16_size = sizeof(packet_16); if(chiaki_base64_decode("EgAQAAIBwEQBA/YPlvkAADigAGoAASAziktJWYXDaOHqpOyID3vBIyzVoWyV2Ox3LIkGgwG2Egyp4l/sDCRt3YKeIyx8Z2e9V3OHuXqwlSKeYRHCXttw1IKwx+7eQ5D8Qo+d1uM+mMSOAOhN5kUnicllGRTtPAnf+XvMggZeWQkZjlQfYLXZryCivQv4g1wquB1NUTLUGhEdpbli7Rj4c1ZS0UEfKyxxp4yEAPlTKfXixdNsmJrXF1v7kRX11ERGvR07F3ZHUwZMIT/T6VzCU4zd/WQ9yiyZpHnwAlrhXsL/4cL3uZwNExrSLnJ1t0uenZEeJrb6a6h+3fSvJPC2Y7sfGwr6xu/S4oA9iV3QJ7D+VuCUlcM94j0A4KLCSkJzoeqqNjryuTTEVoMtkbj17h38e/VjjSpqCpxWV9tWg1Ify8MpP6wJMH4sHo83+PslZaAhB7Z1N9+pqbNbbN0Fb/SIvSus/PYc+7y0NxElUmm0hlKAtOWmcwEcudyLpLeETzsPadY97znLpcHvJo9gt/wyn7iIoHCyIxjrsgaaoapBAn2mHdbKWwOPY4+7RojGwQZFdk/FUVrrtLz5FX5m0FKUfT3lCFgagoTUqbfZJJQEQW+awkZiSJteb1n47Z2JW7wZUCHq+OlFOQyv7h7LukRUOsSEbt20nGSiyIM7RIOAW9MJxv0DgGsKs8oyaBwktN52P9lyLD4Czxh5qeG8Ce2ffKFszsnGeVV0lLxRqGHPTl3YmGv2Xh31dn5mHo2hCHS+2xtYuqMzNw4D2f2oatiVljL491NI9DrCztQN4a+UOQsjKmtKHbUSQMgz/uljQLXr8eBQWEXk2Yr9OS79XIrs379QogqDmlNfOTTAz7iq0QT7KzeO687GLYJx9sm+sRYnS8T84Wz93cOAb0+l+l6dqvW4wCE6zWzSvgMYuVoEIQtoERnfP059+TFeKDAqYYeJa9AM4Ew94pGhlpJcE8qA/dum6W36Xllgen5BtCH3KbcAIKuPqqaVJ+Offx16X+wHnODeAwg79vme++OTq7AYIwLQn1l/2A+DogmBIPTHbH50SGM7zt+ogcyEl1hQnPt2WcoKeo5wrHC5HyDeToOWOcIyctHfNkP7jGfP4Cq5+pBcl/y0NdKatWoPGguynxwCeEsBBn5qeKPrMd3jEpOp7A9mD1QXcrodRZnprfng12pftZvpxuV+zY2JxUpxiQ4y9RLc4hnNnAiSnrOK8vES4skUyeQH3/z4xStaYBRP45bOwc8nxzuk3zmQNwpZZVhFS56y3LxK3DJ3jW1VzPoBEFNn1BtaZKLMlu5jqex9w3UrxK2O18spRJUaHql0Ho+2ngM/+CX7d0dLXn78GxAizQmZSRRCQKnrLtb+EqALS+y4zx3IbtYgABRWN27nc9p+AOLHhuPGP4ZZk+bJ0byYVJe1uk+ZDn2P2eShNnmm1dSQqbwYRWVSmCQYs6Diz3DGkTuUleJuydHbU75TWfL53ClK9Xin+NIpjOt73chhTfHtPdS+MEU6tog8ATDTeZ+/fqP4TsfAXg+4T5HEyuhNnBzr9yGCWXsm/a7KeEPqhJzl/cRIlnshRHT+uKpoWlQb0PjzPUlvQvSvCC3Eg7xiYcycxDO78GSHtvBheB1On7ecwBe+5bR06uKqTFxsHxPLzLG/9GY1h2R2Nu6GfKq3Ft7BEr3ncKJ5Ld92GHhaSokRJD+7UizaKMmbNvLnlbEuE+woo0Yoyz0GnhKFZfnzpmIE35OKiolLSsoYzB+WMohoaW8bRurSarIbpNDsel40r0ai4gYhvV/6", 1808, packet_16, &packet_16_size) != CHIAKI_ERR_SUCCESS || packet_16_size != 1356) return MUNIT_ERROR; uint8_t nalu_16[1332]; size_t nalu_16_size = sizeof(nalu_16); if(chiaki_base64_decode("AEQAAAABQQBQJoETP/5gqzupgeUmA9dN7Z0HwyEyVrxRyX1zzBdDKwyMx3DiCi6IxDaGG3dCtmMyHNfsFUm0+716SPggjfOcwNUQu9bAEP8M/tqq54vAiuC6f45JQlt6NCN/KgZ1rKqEMJg7puSmOgFttfNPGse4BXqgwwWiNWoNSEGWNYOzKkgjqpmBkpnYLEVLjJylBOSx7ktd/AoPXggS0Ee0aV/BcWwTMIj2NBbsxfQ80EDnWCiAUfcC8fsw/sRLxqoetoRa6BSnshIJ0qtf2zPkVR6x4KpTLCTAgvV6mIp3EpAROIC1Bham3KzBk4ISMMQ9mb865Hy1GmEqI3Y3Qu/N4VN9Mm5t8QF/oxNG4tylkPRuiu2UmXemkQCoe181xE7IQNDhcdD7BHGXwKfY2WTwRVtXaPoeogAs2X5dL1H6gBpK3tBtSy5v8qs9k9hWifBYSVZgvyCC5jPFIibz2xGV4dahKeKy+9jtn1yg051IcN27Gew3NinXyWH4lphQ0EfqxmPD4A0krW0HUak49oENsnAcJBlKgY47tbQgN2nagwXxpipzbfkX321Oi0tQL1v4c+J9qv6NicwlDZ3Wb5BOgQPxm2zjs1aMc/tkzSWs86rq4oGlDoeVUn+U4bO++spnbnfggR8f9MMuxuEQQiLOPnn07jSboDHGZjwk+VjuzlT20MpjIoyP8CKcbQ8xa2kYHNgopKkyAjl11X4+f6Dgz98N64GpPqQJqRmo+OBv+42wPe95k0n1NGJV4zY+695ww6vJov+liVb2BXYEIUPYtPnjMZbmD5BtoKC4Mj5z3Ce3r7jwJYWeGfCpZ7IyVFpFhNfraG15WDlz6cwWJo1jSCqHXqUI7QVg2BzbnuAQayaUitPWuHquXMJHowjInBm7n9nZCyZkg9YjXL1O3MgNXLp97oujytN3WwPqdIhf/fosJYLYwi1sWACmpYfe+M0REkHmjl9IMBMzifWSFy8M6MiyEhXwzbmbjKrMv2e24KyGWCYQBO+IXQL62kyk2DiftWuCywkd3Ny5bQ8SVx2Gg1CHpVvQn2zIGi/RzkdvtOY1kpPxgqWzUVLwFP3n5f6UPBIrsZDB3V0GBzBDxZcOYuqzYsLUjfwrYwjLfzifKilmBrxRTJB/u/mo217dvSvcvQ4pj2WFtyX/RryJUzkuNcGHWehLXFwJxN/PZKF852+/vd7g4xnC7rJDhOtkKxKd97BoWHPJmwWPvQRoPxvp8i/xKh9VR7ZVFAf3KLCc2gQDuC9ubILa1zpW5LdsPCH3jPaWgLxVQh5UC3ezQ0Kg5l+8Aj+Iqcwj45ZjfftwcXfkA5ZVpVoZfFsJhCo8rh/bDZnBq2/GrEaMinG2/i5odgGk2jC7VbX5Wy6pxH9gmf9caIlxIU+sX7EntzEzXpSHkpOet9CcJw1AnLZFflAZmkBaB71Q0VoacpAfGa6VREYItrVo2NbiJyjsg/7yB+8I5ySaCQSAngi/IV7ZqPNX8XVPNB0dxMG1saTgAIY15Oe6ouSvQhd1dH0hijeLp+aIctG81bKxzDk/QF4Dl9F9TO4L97MCbtl9NDBk7iy5tuHpjir69lpfp3vhnrf3gM2uNYdwquY31nZLsMGlTix5wOoGOwgf5Y8O/Lo8EF9G8J2pRwAGxhE28Qgds7lTExauZQZNAOuU8zRO+dNOmLgko16oYT1tenZQBiQUgP9g0dMZV155rQZdugNF/9yTeKcr7HlfXC+mfZjMDH0be2xTv461QSwEP3ig23B/yPga", 1776, nalu_16, &nalu_16_size) != CHIAKI_ERR_SUCCESS || nalu_16_size != 1332) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_16; memset(&av_packet_16, 0, sizeof(av_packet_16)); chiaki_takion_v9_av_packet_parse(&av_packet_16, &key_state, packet_16, sizeof(packet_16)); munit_assert(av_packet_16.is_video); munit_assert_size(av_packet_16.data_size, ==, sizeof(nalu_16)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_16.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_16.data, av_packet_16.data_size); munit_assert_memory_equal(sizeof(nalu_16), av_packet_16.data, nalu_16); uint8_t packet_17[1381]; size_t packet_17_size = sizeof(packet_17); if(chiaki_base64_decode("EgARAAIB4EQBAyk8f/gAAD3wAHMAAUAz/PrXb1GIqkfwcn4qD0MEN3vnucZpSKDH8qQBwxys0rujk//EU8LVBJP+gYP8ydJcfVwucn4P6WfD/SxB9tGCk7mh4NDXKqGjMjbo8FqmFW9uIUGhCmDyLgsL6lX/ZPX4Jy6tV2f0WwhappPOHfREnUy7yVRuNiZ9Pu8ynbUhbTAatvnTvnK005UikG3D8pfzYljzu6wwBGgDNcaD4VDcGUG9e6Xun1CRs5FtVqYCeLhZ/QEYHP1fgz5NIYEZUXK63euAXOC6wFoG/a/pV5T9WvTxl9u4V7RRFY/4EjtL0lQYcoQtR92hq2cEse+Mrq+I1J/KCRirtDr4TQk17EByjEb2ReHWB0PdGXzERPv5oJlLbzM1ux6qvTtJ8YExrIfVb7vAgoIutVTcYKVoxRC3kgCyn+TTdJ4ph7Yp4geNq0fhO3zwsuKOOu9sf+qgFUR09tMYOfTNh3QRp5ZUXACsVL3AIgt/7wm/aMI+HVheLHA0V/e3wTmvIjJcWrvTNyMZ1kY0hpb5JctJR8FxFf4EosWmm55bpPESEP91yM5zcm+5FYSQD6s05cqOU80BinEn2quxGAvdkQarbGf6c6cCRvNbcAKiPUOH/qMdNPRvm8yhtfguZpLhkQvocLw8wySwedKgdHoM2GQ8Caz1RgWTfbkna2J1Pn7vnDxHOyf2il5KoLsgm0EwfRWKM2qARGRgOWZly+wv4ZEcGwyeHgmU3/B/v4mPnjoGHUtGja9mPM+t0BW1hxkTgJLtV3T5YlAHIwTz/sl7xSfTMFNaaquD+H0CCCopjhWq7s5EtUNA+vCbPNQw0dpFKehB/rQXr1SJMgpw+iQeeF62JZ28A84bW1F9XkId5jPqtOE7lBa994kzmjUQqrVAo3XZxWWqiuB+YdO0cd+M62yyTcaslzmbta28/KETZKEdsYmuyP/jls4P5a9R2sArj2rcTRH24jQqxCO6ErptTa55YMOyKc43e80LA+IQNhqMxZK7eQZkykAk9lTGHVxInOAk945c1Gn7emnBC7MZ4iRd5eafqaV4Qs0hSJvwchZMjiWsD8zziTyUbOsqgVPT12le4bV8UnxXU5Mv8UeaeNqQzJZ1QcoASn+MNE9bhkgzxfeY9XYJlhUTW+qj+oLpKJIQgGcxyYk6y8nRDR4sG0GkSTxgzce2dLppLYobaU/dMKiLfywSu2zZxxHgn90JxEv8D0Hoc7pyeGbHcLjNn+La7sbiX+gc1O+V4xAy1248dB+PhJXKKQJhuzt9RVV6yyDIObrakFWrAhlymUw2/hF9NUlk9W6VcIsu8MKM0KT6WZPe9ruboscFMpC+Yryxk9tnjyViSWkN1yGRvMgp/MgjPEhy9/tB9jOntd34xeRU/ExzybWI0tf2a37TxcTWeOorDLFsOjaL4pWwQ6FsT34FluyqKHNxgJwEkM5rFzO+uzjhOOqDlrMWcUdbucpn6hoZ+i9frSqxy4/2swfG9ECMj5kXwUDARg7e8MV7YLZa+wB9R8D4sh6rwNcQnYP3bR5KR8rIWDKxT2GT+66odLggT04vKy4MNPCbMxfVsffneI8ghDznMg2ldbq6r1QdS/B0dc+vJrjTcKEAR5I1q79AOxPbK+g6gGePsGCmLIKr7cduy4q2xwLxxNGwp43a0M49SKhKinMwuyNJrNkgmnKgWZIEdYYNi5FFYuZvw0bgbEG2gF0aALzc8tdrnU5w5KwqB9iCjcJjV6f56isEnkk+W1t/glPWS/vuzgxEPouVnDRlUAlJu3tBshj/sVqXRv/B7ny3Vjx5nB9avEcqRhWrIj8FLQ==", 1844, packet_17, &packet_17_size) != CHIAKI_ERR_SUCCESS || packet_17_size != 1381) return MUNIT_ERROR; uint8_t nalu_17[1357]; size_t nalu_17_size = sizeof(nalu_17); if(chiaki_base64_decode("ACsAAAABQQBdZoETP/4BcBi6eH//n/hE9E0AGU6jeISCmHSuSkYE48UpajTn1ge+ZSgI1r83HaIk3BQ+BkwemI0sQMRrKiZcjARmSlQCWJCbR9872jquD9ABYEJAGtU3NwhCTOAgdkMDRxxic9WaUQpFgdQiOlaNwJIZchR1AHkUgolT5ylfEaqdG2pEXl/gkXGIKOc8SjrSAclp0yK+dv0ehD/9YiZWZgkOonMYZYITvohkJYLfb1Z/rRyHubqeGQ0JqKc3NLzRTckClacwsLztY8A+w1+pGGaJtUbD+VZbnrgTgWCN1xTSsLtZdVrVQkPzrO0ndxCT9m5x4PYqoL1vXe07NBes9IswTu+hlH5qPJcJNPUSX1Lqu1bIDJ34eIPiBSTG/fm3mSUag2CHVjaY+1ETpoqCO4iTZ86r1lh2n87e18GNGhQSf6YGgmZFsetILrG7VR4uEJUO5pYd1TmMgpbZbWzDF+xoCzOuIQS4MmJMLTqiT80+0pwHEgum9X5OaffFzBAOXTw2YPappXhj29eHgGA87/dWcstVD4FaP4a9JCzncTkEydm06T1xxuRl99+zmURxpBEhl0rypsZ6ParXsB3CvDIfnZ56gmZgVmpRn8VrlwRsqLGkPj15elpMY2ICwSW3CSPKHhtx18eEE9JuCPNrVcie6JLTq6IiGAPgWUoXby42sj+wqdOcNfcRx/lNxIxgSrh2hDm+emXS/cL5nMGI6Ya+KHGImqHUtmYcl0RUb8JfGm78OOjKUJ8JKh4bSFxMd6u1owVGUOVYdAX7zdNuDbyRqUbtzi1YH6tY6+To6nvB2ovDdoLYWavZ5xl4Tzz3rtLQjKYKeeX5BJxshNbaXlSo/a3uBP61uOHjaNYyXsaZUvkvE6tHyJikOnh9vL8ILCgY7m63Syhmz0emN7Twzhv30WDhVsV/4l8igtRLWk6e8uSDVfNDeseF2qb46DZ6GsqBB14+vNlNe7nryOGX09qxYRP/bD6YWwfqkCJUSX25s0djnIm9tmrDppHdomFJNyi7Fn+ZAo3aC5QXyf4y4lXKc4D3Lo9Ym4+eylBSDOJutoj0LK36rWbSe0MMHMkj7JkN4X0HzGZ88OhlsSl1YA6TGEqoPCBxYNQrnazPHv4bDjgqNSguYNsPh2R9VGzxbsJZELkhTwJTCyhbOH1u5HiyF3YTNi1sziKJmolWcz0svDnRjaBhaV3OWvgQUnoTWrqHsweAmLuOwWFa1j4jv7Uwxw9mNtZ9/1xbH+3Www7WfXZj5McqutuYrLijmGswdcuRHVhlL4QZc13aXGzPdp1Mkb64VRBNoYQJTpQU10mKgyj7WX1j9E4CBCOik6iQlQAtuNa1kQzyPzQF8OUy/yze5MgkO8BPqL8OAkALlYolbdk2se40YOVPdnNNKFh81TKL6+93N+rqtYjMhdd51IKy/GhqPIeTdsdzWEKYXazClSMXT6ROkhzxEB+Vb40Oz4BAWuBw1OABqvXx95rZcgXFXYClsui+Qz35L2X67wf1p/NuBK6fBv4ui3aeJsboJ32aBrXwzZatzzSebV/SDRrhpaSRJishdOhLh2MTqMQwy+jmgmx0wZCjbKHqqcKseZ2HjzInAbbhotKmkUeexODn5fI3tqMy7KQSB9dXaxtKGvqpX4yDpyl/GFe0VQb9eUFvCToJeniOIiRPq/sTAAWUuDf9wOpB3mfKaPtkSyvDc2u2hlujbUKYCfKQ3EZNwvPSgRt9td91MEfBLGRqg6f4VrVeduPLA+z1kZYvv+UVh1s51bltGP0uAUYZaRjUWmGLpw==", 1812, nalu_17, &nalu_17_size) != CHIAKI_ERR_SUCCESS || nalu_17_size != 1357) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_17; memset(&av_packet_17, 0, sizeof(av_packet_17)); chiaki_takion_v9_av_packet_parse(&av_packet_17, &key_state, packet_17, sizeof(packet_17)); munit_assert(av_packet_17.is_video); munit_assert_size(av_packet_17.data_size, ==, sizeof(nalu_17)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_17.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_17.data, av_packet_17.data_size); munit_assert_memory_equal(sizeof(nalu_17), av_packet_17.data, nalu_17); // -- frame -- uint8_t packet_18[599]; size_t packet_18_size = sizeof(packet_18); if(chiaki_base64_decode("EgASAAICAEQBA2wBjlsAAENQADsAAWAzO/Uwhg3vaVoeDrHSwDaDd44PcTowhIymn4cBeWChpL2G4hKvozU7CslJ0nL8XBvBeL54ZcftRK+gpVL3pt/p4vWuatNmwu3i360lsvET7apDRQ3GIBElAaAPNzmNQRs9dkt4a080+Lac9Rom5YRQ23HEImp6C6wWFhd5vi1AuKxDpfNcKYxwuYTr1G5ZFSmtzHb6n/81Q4TkDb73C5yjMfeWyGJhF8H//wRn11umevrheXr7yE5yn/AmM4o28UJynUFgVMlzCIBRKcFYnXmsFd6qqeHubTk7ySVaDzjVB+5IdyYqrNvmb9sZsX9HqTB665z1/YhKXmprCU7DoozMNnyOk3fZTdg+zqu/CDHlzNkyX79AKQj5+JJItuokIhC5Odi4KpYAerzn+Asyxrn0jCVTVhBKHCjLljWDnlwltv8DuYn+Sjs9U0ibYNMWHSEtFVPxZ7hm+7ZYhzJUST85AYvfUJvGlPxCIxCDRJVvafHr9eXFnlG60VSEhQ9oMK64d2bSVogzdvQcuyIpb48j8/jDPKPuyLdqHA73MQITspbwAMWTmuA++iI/0M02HBgb8k2nX5RBZ0Dhk7PT8ur4RMKVAo/fAmqGVEyWBuw/82cI+aMjncg8OQ1U5rAm/6TsdSMcqqezFRPV3cSTOKkkYG99DmPg/Dq9+o/tzxnw8eCmpKScvgc36zbLGUeXgQQt9gVjC27Oaw1g+2uxfNGqnHyJgaRF8VXB0wEa2kxVxNLY8NUCFraGgN+m0EU3v2Q=", 800, packet_18, &packet_18_size) != CHIAKI_ERR_SUCCESS || packet_18_size != 599) return MUNIT_ERROR; uint8_t nalu_18[575]; size_t nalu_18_size = sizeof(nalu_18); if(chiaki_base64_decode("AzkAAAABQQBrxoETP/4DLod9xZ//+BSjirzcvUbxJ95KK0Ee19Kalq2RQ91AYzQVIQ9E99RkATuO/f+KvumnreJFieP+U5mnhx/CctnpQyHYnvnrvdXT3hnlyBbsgpU1zc2jlF1jaY5kEQbeG5L0M3+NQ9/bk53oqs78qgEwrdcziIaqmoeO7VYRZ/++jgzdPfdUA0N8KCvYU/XZa2X08ee+XDWfMdK/GmalIP62Au+9d7yf+a2jJOm6AaBQG43p09Sk99KAXlVo//ETKe34uXsIvmYvhsvdqYzyRpBL6RW0/sR79zCGsRjcOw0w1Nv4LAN6ASwVaSiOAxlUimkRjT43IYNpGYQ70saaYUFgJwccUorGgQWvMLscA1TTZ2yK6yrHo6qBDXvVMZHNYmTZOsQCsv5YxFEhwx5+QT4C3a50NLsJY0GIrc34EBD67qOQp4b2Kjt43pY4ycLyter3+jykc+1ZtYlIe+Ecbwhf4cQWX6H6E4orOiGsB/1uZWU3MDDa0/6AgVULQ+6QDg7YjSBBNd8te2jWhJSQUd3F5apnbUBssSnb965s3CsqSvDq7IUV2P9PLlN/hpmOKlFrm41oVPRs0/1Lnu+Det4N3iAoSd4nVS88thuyhSs2Pb7y4G/FsWEaD0d8ic/IJRhahEqwSuTqUrYcD0Nx8XTDLBhjyGMamesNzN6EPahzsPs9UmflNGl09+z1+jXT3jWewRQlwojxPImQ4UgroZzcnPDLz/C4Hyo52GRRSKWbTUA=", 768, nalu_18, &nalu_18_size) != CHIAKI_ERR_SUCCESS || nalu_18_size != 575) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_18; memset(&av_packet_18, 0, sizeof(av_packet_18)); chiaki_takion_v9_av_packet_parse(&av_packet_18, &key_state, packet_18, sizeof(packet_18)); munit_assert(av_packet_18.is_video); munit_assert_size(av_packet_18.data_size, ==, sizeof(nalu_18)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_18.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_18.data, av_packet_18.data_size); munit_assert_memory_equal(sizeof(nalu_18), av_packet_18.data, nalu_18); uint8_t packet_19[1424]; size_t packet_19_size = sizeof(packet_19); if(chiaki_base64_decode("EgATAAICIEQBA1Xi8N0AAEWgAAAAAAAwp9BvtGA7UU6jZlRRJXCf7pEen2kKddGXtWhjPa3oa8Hc5TqGAWcFuYXb/ATp6LIeA+esT0ginLL5wG06nAMoT0Cp5YYIKt/qvVLiIS4b9uk1N57CsDYxierbDvuPb2rbexsF0AqSunZSSFQ/oDawzgFkgCzHZnIh5zsMCMjejRc/oz/un8MhkzVAi3c4RPiolb4e94dhr7ZIrDDyXflUOXPMNyantCGdzn7SoPSjbtNItrF6cs5LWl4CJ4uDY66FmWc3Zuwvrbh5Y0P4cmg+u5rPx5rkSywQJWS3sRl7HEBcu7ygdNvGafzONjAbgX2A949u6Jz7Z5RIsAosP9ptph63lYKRRxLXlFMkGPSemY31gJd7oAWAwoEccGvpgyEckH3kO1sY/zr3fFFVYxpYl4u0+3zoNqd5GNzinCTHzJj2NRR3U0EOhgckUwrHBnwYbY7RF8ee2/rMV+AJ4i9N3OfleiLLuoWiAvRYsh1xqK/Yz4ErnsYY0+bJcol65vAGBwJIFFVhKex+S0AsbYheLN5X8pVXnVgclndS0tT6vohNOqsvZgjxE5XDXKpBGjfY3/p1nbQ0pC4Y1JL7TK2G/9/Eroz4XJAr8fiD7IF6CkCmqYAJrIkoD7WXl6HwlRJTu3YCYojiUM0XyHDfm+kh0abYtau+/UeNWmQXtKUmAwotDuQaH2IV3dgr7WPe53zI2umPKe0wgqKJF5WMdFn57YDmwsxqCBqM+2GifPvxBKxntcMWuNfufVqGDgiDzTlV2wX7wmqdhYfzo8rjJFGBFEGhqYaGXSCOfKbhcD4q10ibBChh1NogTcAjx8rKCu1cxe09kq05HQ7756rR43gJ/yfOJA/0w1sKwTpW2wR6Bl8y30zPFkQj4TIGc1QTer2ujlO8FTZCo+x9eRbDzLtEpm4jdYZh5NwG+ikm7pXkBEqtmqWZVjnpcqFdq9zfwhveHrLy83bR+kRuPDC110/B79jozE/XebKey3yhtdJ7UQvwTYMBJWWsAcYXk36vnWE47pwTn5kN9HKJ8LIQ/0PVPny6N/4LrkurvJKg2xdql3FSg8niTJ+7M3LreUDZiyG7ryXyTAHx3JVnc0Ejqgk/srSq0WHKQFVQLhgzmv2y7/aeIStTNG5BNpfO3s9OvU2qcNOXkpyaMivT/LOY6xDaMeOpk3BQw+jdMYjjA9CFzGIdf5ZCedn/QMMfOG11tyQaogGwjstwcdQol+KZF16RkYi2GAxqMZT8DEAZ+T78vViatwnwQeBOCW/slyhQtRLcaSP8f1+96pP6vjBu5RYXxN3igE1/IZJvxFLh0YNOtdQftw8OEGPxSHYieFUXeRIWqZDInOx+/FzxQsU30HbaIl5FJH/lnUQ8xbmyXe+3xBjrHrGhewCUcFQAX7QkjEiN2VDUdGVSePyvVeUe9hdjQpk87lpJaBE1w/sEa6EJuWn9nOYFRlcG0kt4er9wTMr+5ECkuD1T86T4L40RovqCK/IXqHV1NL6oYoeuwyF3xEGH2xwrMxwzha4r3cRV2XO9sGUTrNL87xpljMsQ/5+fh72g5WeWrplm6MR9KGEM8CDvRji9DHhBatRehENedzTMCvtcDOn2oOYbes1PuT+u2wHA18STnc3Dzhcq9g1QRAZ/9XzHi+5vbJFIPitSEZ20o3jqa0nxQAfKyA256PIrqSJWySAP0wIteRc3VwcaDa63b/lun9jjUxOTJ9sQJxugHsMBK9lmYqc6g9CbWsf/jaBI4qtuC8/SKld2zMBtsNgjnf6koSxJeGLqqQZwQBRLop+0tq+1OpYpzd/N7EFYy1LDhksPsSuT5cXqZMGeyfJGEjQ8UEUStSOaUCGKbydzfatqeSQrSRo=", 1900, packet_19, &packet_19_size) != CHIAKI_ERR_SUCCESS || packet_19_size != 1424) return MUNIT_ERROR; uint8_t nalu_19[1400]; size_t nalu_19_size = sizeof(nalu_19); if(chiaki_base64_decode("jkAmjgh62+ShYsaNAK6USLqU8Pj6sI4SWVMKCfAgrirchF/Z2D8szFUbZ5cbyfsOnrvN19pb1tHIEz/8ynnCBxJdplqxN7JpVtGDnhERalikdZTr8YivgXdHbVecE65axzIMJlf454IyW5BXvvttnh80eItpJRXlfGo4hHmjLsm0toMXVPkeBE1znxC1nFXUpJ4dpdJaYKlNyv1dgPkdJLV0iHNWXyNpzw3n8k1haK/UdL73CQKfra3QEafn/vOi+CVSQ+HaA4c+VjU6kD11Ky4c98sO7ETAojaXZbwWC/YEJtYhMZHE1Bk33bKghQlTuQFBmgYr/vmYxkr/tAyxTof6sYXsXX/vBfpbSTnMcvMoPjV1h0u9inumWc6C2C2aFCW3oIeMCb7DsbaRRFS5Op2XkNTmcCqz9fNZUWIDNT527jjxtA7GqeNHFxDyeCmgc6mWfSeybwjoRpOinS6ObXHpJ8lZhCc3XpqMXynAJbZI5Aw2nnGC/+9tcmkUAcP0YuMEt+OxSJ1T+9o3B46wdfVShxNfeC8H1b5JzcRsDBDdkdSkXZFBZXCDvWSQxvTkAiUvQPrRq3lLYWu4bjc9VP8LNLOFHFNKbmgsL76lBUiqBPWA/O7clVbQ4WNf34ageyI69ofFHV0TMch0uOdAeQjxvIVNoLgjRvftCgJ4W/f1OiC30bcgamYoeS66PuOKKmYuWQea3uI+ej6Voo/zKI9jJMx1PYzICA98ejODcaf7oAEWi5881pVSQiEdlqvEjefnMwdJxhlArU3iW2KLoVJ03wjhKAdobvJSceNrwiblYjezOtyofx5MrlooLzTroUgku2w0cw8ZaGVGF0riACjD6khZ7s/yOMmGoI7PmdWkMqoiwYKLbuHM90Oh9cIK5IQqcU7MAaLHG1k1ThAj3a0Y6xgoUjsY+Dc1o/XWDSFq01DZ4YjVqnwZmf2M5Sc4aku0FsQv+w5ZFhhdmiPM0CsKdr/E+STlBUDUCDApV1XKlMAfuoUSe0L09A3GsvWIYMVIW5nDAb0fwXsY97oaBBVs0dcKjeOtbngyReb2DUcAB/J/j6P18TdqiqaMoSR/0lsupJgAb96NpWSuZsHD4j6NwT5H/edNP+YvXY+j9noi5fARC7ur6IUSJ9gYWvmGJDhTkwj1XR/AcH2NI+WhsJPvDzNQCyGiM2oiRfCoYltW0RwJs6WI0z0cv7r5LjeQWpJ5Ty6MsqepZ02RPp1MLk073HVroOH2O8NUfF2ERcl7o4kmgNARy6IsPVE0968vkkrtGI4KK3oW/0Au87LUxStE4L4cXGvYR6TFWDLM16VvF/DhgygsDFpI+dsHUuXyAwQRLntRQBas01gtY64QzcdMpNOKPGre63AVMI8cziXOw9up0SS5jo2QnZZg9EBSQwmPJFUAxqkPvJzY/s4gDBudvEQEteiWYPsH8t77fGMvL0apmJ63BsguKSiVwODbVXG3EXZPVf7faeWROIO6/CwbLtPtW5BmpxSkBeKBWROKNjXnD8sbh6GZwS5Vj0PiwhiRAn2TJiNTZuIVLRrZem2T427hGaysRt+LkMwYqRvyNoE6tRACOCFv9f8Cp9H7nMMLd2aTfLeTcdpBhgqsZRGF8kI8F6M7cSeK0X7kUpj/1WCsA/ELD9OwtStc5cY3qGlyt2Bxyeq/DYRoRAyBUeRNYkQjc9n0o/qVoAFbh/an0qeqViTduVyK19o9TJ8uyYI06xTBuEGCTk4O44YGSQVfHVYEx4IsdKcoQ8vAt2Sl/iLvLvoPPysUNvaVSwaqKhDQu0+N2T4xthwsPhL3aI1CVULTpj9cj3vhkUKPnh8aTuYVF82U6NDwyqtEdtzskewZAJD/eAk=", 1868, nalu_19, &nalu_19_size) != CHIAKI_ERR_SUCCESS || nalu_19_size != 1400) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_19; memset(&av_packet_19, 0, sizeof(av_packet_19)); chiaki_takion_v9_av_packet_parse(&av_packet_19, &key_state, packet_19, sizeof(packet_19)); munit_assert(av_packet_19.is_video); munit_assert_size(av_packet_19.data_size, ==, sizeof(nalu_19)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_19.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_19.data, av_packet_19.data_size); munit_assert_memory_equal(sizeof(nalu_19), av_packet_19.data, nalu_19); uint8_t packet_20[1349]; size_t packet_20_size = sizeof(packet_20); if(chiaki_base64_decode("AgAUAAMAABQBA6IyPEIAAFUwALYAFBLs1L4j7MMMkGN7Zz24OcaVjvQl5JsLzmalafevr6Jmi3mBkvMum8Qpq88O9Co8ZsGrpYBpWrBSQL2o1l1zJfg1PQkTP+pASmgifDpElJEMHEH+SW//WnheitWUvRQx+0xtMFAv44WHVO4b9HZGeegiKoXnruMj8NgIxE2P+Dy1XZ+noOBujGCWGxjnAyU+88d+PGNNNyQN3SsJDktTUJkMM6upjmVi9XqwYaIkTrR5faoqDadhzEBWdN9HwDjCb0dOCmbcKDRF+Qy6/IYfQjTqflVn/lpNI/LRQQMXsBE4IV1iJXJDFaOT6vn9NNv6XamkJoilfG53FQDRMsJr+LtUP8VpuDvLIDrG2qjBvlrHSnXqzA3Tvlt17SJE6eQ0BvTmjyK3DN+rKquDZa0vUDJhXeJwIVoImcsfkCOaDJp7NEt8EXSJNFkhr/LJlYJcqbqUh1yy6/ef+pNd6AJ/Jzm7ZkZQvwlv9cRjv+4nSYntudXdtHb0X8hmkQTlGC50p/AQvc7TjNDtU+g6cnKT1KcumAUMTWeL4H3nazUvxDOuwzHH95Ls24vvooqoXbxebBC1Sow4WxJoEjADy2O4eGLCYXHLxp1x8bJoIqOJKUwEpuSPGTPrd7fo9kPY1CIdFiXqia+0+1zCRTotDeP9IRAxYg1UefHaq/iuQ/mh9JOFGuxImMNNVB+zdWE4c++i6aSbaXpR4/XJbq2WXJPZoK4c4fReQrjbtcDjAfucbPjBzm2IPowKO+Nb0l9464/NACFWvEpYOWsv0OAB8Odw7HYmLEkJkW5lac9/oPr1tiKCRn/6ZNS0dYVSEBPLYPTYXESW9JfI2TO28UjsVs4lc+SkGFqQT+wyb2/iwLE94msTXqOpAga3jaA1Pl2v67QQki/w4/s+JRlqQDqU5Qzje9sRHugwIUVwsdRc2E422yznoYd0Najq1pNTR2MJ//j+jAnAsZILWt5UMR70AOXVce/dQrDuYCnotLRysuz++AeikcgXpwysh2IM+FXKR0MoU3auvfwdEcnnN63X5+Anrmiv+ILhPxsrEr+NYCF7TJtCYO7u5wGISxwBO7QTXRfXGi1BOaNL9j62nVxfm2pqof7k7sIm3FPeXwVkYdrbXx4FvbA4BFlQi47+ibZOhVuDsMKKbUoIbxlpO8UmcykCs9UXG5P8VoTU4XJmKmvYhCh6f5mg/i+sBrU8AP6vZejSm07qapAVe3XklX1GnfBwyTv4p8A4VsfvRsTQk8Kg6gywwHhCftiEqgkWyeIIQzV2VESKPi9rvWatdX3qeDLkkmNuH1MSwtd1ab/OSx42GOY0ZUPeKHQ7PUw0rrOVKUe7hdtaMB6E0XhEeBW3rkwV6l1gG+JAa2BgFriujvLDp3HezXbXadQWSG7o616VXpUhGOjmyY9ZxYcdqPsGrbmlh7eySczOa3OOPN6urK8I11w7HR5/aCw8Jol7BBNvsF1YYhqYIGD1vfwg1Z8Ux1h+pyPe9KDFYAZY1KANv3JPkp7tHngYsF4Yvr37hRhCrUvoZxbLrceVyADwCm6QaUk1G72dTDhzJ2fn1mvzWoKngvycQfN6KIwbnSaf+9TE1sY0oMCSH4a8TR+E3Fjz/JF7AMaKojamGRNoxaWqz0IaRFHlJxEoO2JBv39sLBaLIskXTBruFpZp6+55ZTQV2SQ0NtHAMBTfUz5aFbUUAwKZFonKPgj9rI4QK72ihwF6ImKPZXuF0Z6W15aJq8ie7sAMMmgUeIvDNHBOY/kAeSDI0ZU=", 1800, packet_20, &packet_20_size) != CHIAKI_ERR_SUCCESS || packet_20_size != 1349) return MUNIT_ERROR; uint8_t nalu_20[1328]; size_t nalu_20_size = sizeof(nalu_20); if(chiaki_base64_decode("AAQAAAABQZoIU/+45v4gLpLzVrxG1CUmTzquLbAitW2ubUnhPZh+TykGsqortqBDSsjIDASkbKUOO34M4ZHmWvbivhMQzSxPjP4GWtzqCG5rpXM74lX8DCQrI9+ZDpByzMydqpXmBZ1posLTxwn6evA6hwSmzin8w2NyVfZpofbQf91S5lCF6qMCK7qMN8UNZa1Rcvfci/s+XtU5KJMOy6EdCcZUmHAea7O8KpW8rmZ5WveA1tpeXNnrudynqIfE3kENVpOmLtiA0ztfohZ8zlRca2oN2Q65EHraHMFI6JMFWmhsOGnRJUOTNSIgKXcyteNem20E03nzTncIT8kIpLcyVcck/oQbgnnDNfxExDYmEBL9vZTHMNt44A9qfPs2bYtueUP6fYEMuSETyOAFrMECug/QQ00RN8J6Ebrqtdau6eIfrFMWBS6KHCCAPxc/MOtRkRwULsIZ4nXKw4MJExTp9Xg5qkgUEqYainkgs3wAQaxWRvpTh1Qb27Xhxq5YNBJNAZpO4Kw4K2G2806auItho7hqBWtha7JizfJdWxizeM5r72bn/F5/3n9/aQen98UuhKscK8ZYBD+0wAolx5TjcFUEHCg+NRT7o2KrYwfL6/vOeQdUDp7rfWsuTWQQkvYbL4qGhzs4+oGlGm3TxHUtjWYXwql/cEun4NCb4VisJyKA2+E3rm2uMERVQW6VSdEAf6y+QseMTv2JR3YH05IZFzmfBS7jBwwTlcwTF0QzYrNKcq7z/cLNOSEcJpRTuztpU7KVVDEbzFNjYYfB1f4bWeKuuSTAsc9mmq1yx6WSVrMNw79oJiu4kWAFN5TBdbOhmUyLF18ia4Be6OAlFbinxe25pvVjLXcstOj80nxP+G0l3aGrv+1s1uxlF92FQIIcH5NqCkvATEEKQoEEIBVoleBWuJ1ajd5Y+E2ArVQz23fU7wy0zH9tsfnE7XB5Bzn/MxMdCQI+Xof55FqU3kduasPvx7xp0Xc8C9GD6sJKxAeLWNtEj0PSaB+3wr6e34ycvK5HSjPmartNhgken75uI8okh0vqs4A4HFN/ha+7jyRS818Gv6G4F4FxPyIVa+exStfUuwlqXFBwsgXASoW2j27kReBzB3nDSDNQKUOpCiBe161rNdRCoBQVsfcmBlRCsYNk4jSAW3UkXdo2iVkk0THGyAHc7ePZigYIX1F+kxq2wUkKqp85OCkZFEkIXdPWVvaFQc+8/5TIC8hmiPYiCfRfKcDwBzPBSNvbQVqkFGBQkvFCA44hu+ayVg9IZ6b/t4hlkSaYbK/l3ljztC6mPEygDMCgRxcpyjdHz/+V5hmdtVkCoSHR7FBNIyGWoRnmZj+9u9TlODphw6W9GQNSxUHa8ur/1jMkIa+vQd+tsaiCAZ+463BPmG2GXiO8RddsD1RLcQAhr8l2kjoVBBuE4+Htz6ylZXglyRxJLreJ6GtwsnwGJsHoQi2JAWyfjrZREs6U8+51iYC3OjaVx+SgbUDlLrlFnGPiLtQKwF5U8KzG8aQM3gXjrpS6PcvtNCfEZvfdQnfAWXZRIrblyaPnnR0kzsdg5w35w0wAO6pZe5pwX8d0SoIYsjw3p5MYB/R+UkB1FeixqShzqV1g+vCyvi8aDOm9Vbu7JIllZ3ORdfJvdTRoyQ3923BCPay3Y8J6NmTPm/e4noF2gRL177D4mswvuHcFe8CWaz3HnBO64pDyPy7FyZqZtIvGOKHZW759skeNffdSXnteIb11pTl3CiblpbZww2935ksk9CA=", 1772, nalu_20, &nalu_20_size) != CHIAKI_ERR_SUCCESS || nalu_20_size != 1328) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_20; memset(&av_packet_20, 0, sizeof(av_packet_20)); chiaki_takion_v9_av_packet_parse(&av_packet_20, &key_state, packet_20, sizeof(packet_20)); munit_assert(av_packet_20.is_video); munit_assert_size(av_packet_20.data_size, ==, sizeof(nalu_20)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_20.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_20.data, av_packet_20.data_size); munit_assert_memory_equal(sizeof(nalu_20), av_packet_20.data, nalu_20); uint8_t packet_21[1334]; size_t packet_21_size = sizeof(packet_21); if(chiaki_base64_decode("AgAVAAMAIBQBA4bVRpIAAFpwAMgAYu/88xuha4N8fgx9p1NrR19djiQUA/JapudvDEPQqbZfQOF6jUcZQtnKKGNJ4UMGwufJ/uzDOhDdo8kcQ6P4774DuTAO102stOqTWp+oRqXIPyRqMW1uACM6dJmMErlvA9dUcDlJFsD0maqdx7NvZLNkNrdCa0W/bjBJz9/ejgzVTfxMjMoy7UNG6NdbyrOdD31q7+zE0GRk0KhaDsW1H6rkUZwMiyx40cDg8Q7KLCobPpAFAafxcL2IJxM1lwVTrDBf8/Wnx180xPSWj1E3NYgEJZS7AGtvfgvv6y6PTLvMJt5O+7iu7dkIf0Q9nIPeJvwld8tj4EWnx4IEs+kWtztcIvC3FKzp3lLNnPD6fkE4mzIZkVy6/lWZByk0cv1r8V4YPhtasA6zr0iTBvYCeY2qYLN0XbD+P5gLBsZ8gIl/DYoNJgEsYvjL7qVMAiE9zUCll/jUmsOr1UWAd9q2/0xnKrifdMhDPn54rgznywENzXvGGMlA0Z9SisBXB704FPNWecug7Jc0LmDrdjCDs78bFDORp9g+j/uEqfMesZVKx+afNalWPpJUsiUgxdNVMAEAxwQ7asTPgDDjSUsf1i1fgPMQTGSYKilKlFvYUoKKJ3bUu/xUSluoIctLaP4xi+dm434jkJMYr4nnSRGDtTUE3vBtm0f3L4BBcq8/vaVdr2yZ1Nybp1pCWuo/iNev/NjpOKBNAGrYkY4N2kZ8LLTkYHdHyl7u6bzRMef30Y0RSHqoG9NFGxxSRlXTiHyK0m67QTaWOfBdxTjFlp0dB4bBVKsPDOfvJ4FxZPmoj01XZHrolZAQcu8+FjBzrRIrF6uji2392dUZh6I75kkVe8s+De5iPh9EgHjG1LrvLadXGYCHunChKu43FhZvEFu2QGFJPp6FalcfuowRRVjJFq4h+pyd+Hm7e6xuNrl9P44ANh94WF3FgOfQ3Y0+9AzIPTRWNyuxAEMeUeJJZ6rXN2wYDbXV+3ni3xPGAJm8VyxjlDAtIncl/hO/g6uTIicQwarHObnJxWcAkIKB6X6i7/BehYxbSywHylamQisfnAflsys8fugwgEN0aUo7chQD1OvfSB6vNY4Omam+//cPVB+88ek/rY09V4aJAe07Zptb6qSBwpGFOBJXxDT/kbdReHy+gqkL9CI/dejPR1lk7/8RSirNKmA4cNqsytTrp2K2iN7xo1D2cSU+6t76+WpDmZuFWwgQWk4CSg0dEh2rss7iUPdq8TMCNs2WhFORTODh+bbVZ7wRZO2htPElPWEY1RUEOdhnJwrWEPl7Lm3qoWVShv3yCuHtf/btsT2KuyCGz5jDITfRh8L/JObwklyFKAStmfzNzrVRjfYsHaPgWq1+eM/XIYM0P+UERDe1ZY4i++qJpVyr0ATuEmI5uhRznds0QtIaWBKnnvpDBLp5xWw+27aI6FlO9hPMMbVHhAVPE38uw6VwcbQwStD2PSG6JTvUVAZZx9fNbrxjVp8n8GpugMNHwabzLYy5l1KI24pKrIDm6vsLAepc41wG0VbvbNDtrul44TbkZ7x0V3TjAa48PAUyhQxndrGN9yVyCAXw/3ftllgUXF7ZM1gOf1lO5gbMnsahKsKIChlvJMYGWiMmwIhCL4bNFv5NMmK8p2Lp3aXx7UMz6iGFpUwKBYVhvvuV5tdrl5++gH80HrYYg02dSU+NrQ9tCA19jSDxOBkzI7CJEf0CZyeSlQCt7bA2CGaanKjdBQOxczKKs1vjoDw=", 1780, packet_21, &packet_21_size) != CHIAKI_ERR_SUCCESS || packet_21_size != 1334) return MUNIT_ERROR; uint8_t nalu_21[1313]; size_t nalu_21_size = sizeof(nalu_21); if(chiaki_base64_decode("ABMAAAABQQFuaCEz/9AkXEmCxD1InUshQuverX4zNPuEk/X0V+zXfPhFvW8r3iiO8REpPnIFM3bN9r7ChCRotpIe9O5xq9zOveGEpTteMmF42K2Xx3WDQBVPjOTY9Dk6r3GSsMUlvQgHyavE8ryIyCN+K782jNsAekZeEXSQ997v6bbsDCNZ2uFDtW6bhgOKgvK1s6CSYJ4PQMdTSvTUBSGSV+NIXFViOTHGEeDj4HvbwGqXHu3EpI7931SGnUGPTsPM5qBFJ2FvldQzGyerLbzIuLp2W9pUmrhtjYv/RY3ygmvPbqCN9AV7O/+1XOWwKz5aks5RZvzWnUz34qt/NicR/PNFNeqFFiGp64B8dlxY9RnudIQ9QuETYU8aI5a3CJ1v5NtRQ++LbzdRad18/ERZoBhWh+R3fE+w3KyjljFynVQuvqk1TEOMpMhmDolMNW/j5bqzID3+NAtoMfc6wAkr7irReeb+e/GHSlee4df4HJAigSGECxolL6cDPrfKpSJGnV7WgfCxzE34JBrKgQbAuUcoHJLMdpvUICjueWLCn20nnP1zVN43ux/KqgJWT/bCCWXWKp8DrCdh/SkUltpLVnz1GOd8fDgywBmDduxC5Ggufs1tzOQZqXx17o7yeQRW7DFg1Psv73yjMF7N0oDjHLjmrxRsnmep/7miGr3/Rfhi+LiZIBa0viMt8mFrTi7+daRV9DgM4RsQQwilGRhjnVBhstI873dCZPxDKrPq5TD60g1b1MvV8cStRIt7WygDklJ+XWyVJ2dWCZr1x87TUS69F7XFBV5Fi9+o0HbxWku9sAbiTI754Vae4n1Ky6vtBX1lCLhwqpw4kW8eYx8/DffDcbu5PsE2j2SoaHaNGi7mG5u8dPIcf1F07Vaj2WVWYjm9M7rRqe5fYf0DhFngvgXdov10A/LgZioqteG2DTKwP50r/InD0a316A/YQxIE+odD6ZRzX9EmtrraxdesRNbQymyoQTBxsxf55L/kMyXDSt9aRJrlT7wH1dWUuRAGx+phM2JlTZd+WorQFUIyeX7sw5BvWs3lgjtoxPy2VrTJ/T3la90Co23N5Yd7QL2Vm+xtvEFZcVIgrn2ic3To3huCPdz/kYQJtU2+0jlLHVWhs7Vr0WC/Drzk/OUb16P06MqGdtI0Ny/BjsCEm3OTtTTXgcxBD/E50dVd3W1dYeqtmD0ndaTmruNouqxEyIeeDerL626nRPwU9kyhbGFXwKyPTeQEYrEp8hcHX63NH/Q43j01xy9vt+Ml1chN8QCPSyBnakCsdyelnqfwqEQIMcpAqA9EOXAUiuM8XABvcJ3vA9XJaGzAHAaP8sn0//NBgtbckVvccV3CK4Pr/uRuQ+tC2c9vx2N7Kp7ikd7pFlzU8NNu6hyK9RZPamwBoGn87I7v+9TMapFeJiG1YJusaZ40skIRu6Syt9eZuam32Vv5zEkb89bIGi/nX0BuTNyf1cFqt6mTMGjvvSnUTq0dHjUxUVrn1wAzSTRax/RUB3mCfTD9WB/scl215MS33vAh4wbw9qCA3Bao6ru/4A+kiOjpp8BVexLGnqcpzqTbPUpTp8qV7qVmAk/GN84DNLb7yzb0ObrXq+KGNfd9E12d5Zk0Jz+PlBtqpFDMe8sdOPXQnP4nSIdQ2qaazj987xhOlygZBF9GWbQFrv2zAfpgZffYQM74Ehhp66GD0Te2P48M7Rqcq2kR49i0k10Rp4qBRGmjeZch7Z1KPAtq1IA=", 1752, nalu_21, &nalu_21_size) != CHIAKI_ERR_SUCCESS || nalu_21_size != 1313) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_21; memset(&av_packet_21, 0, sizeof(av_packet_21)); chiaki_takion_v9_av_packet_parse(&av_packet_21, &key_state, packet_21, sizeof(packet_21)); munit_assert(av_packet_21.is_video); munit_assert_size(av_packet_21.data_size, ==, sizeof(nalu_21)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_21.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_21.data, av_packet_21.data_size); munit_assert_memory_equal(sizeof(nalu_21), av_packet_21.data, nalu_21); uint8_t packet_22[1352]; size_t packet_22_size = sizeof(packet_22); if(chiaki_base64_decode("AgAWAAMAQBQBA5x1jkoAAF+wAOoAddR1vKblyVOAkFtxOcRuknxzPV8OAMSQvNReqkkVInNeQVW9A1ci+unxnYjAQ+Db6Nsnn6yGAgXAS7vlfjkDYmMpMl/6Wp1wl5Vxa6O0bdc9yP13b/PGh07HaXEqWqc+Xo5iCbQBMnZzs9Uruxe4yWDoFgHQpzY9F1rMGRXGYwQW02DENHYqKCYUB9Iny41WT73tG5EfWHk8G0WBrf/vmTCs9CNBEanvNdBTnNu51QJQPcnQ9qPBC4PBL+fxN5fZzakznmrt4mCweB2oKb4gtgeymTEoIZPvpvDZXkv9sfRC0hHxowCUr+zMEGxOTQb6vk/yW+p+PxsyQEmLlVG6DtEwMqqheggorp9/rwWXmA8U/LRw5qDELfZOeCgmf2izUtUKFChbRoa734B4G7ywpwv7XWbd86Rd1w3FZJblYq0GNDOatsCgalhrQ0BazdoBnpOQr8+aUKJn/oep473I8LIOjGxfGroW6L997yvaiB0yq9PA855vWmnuTUPSzp/GJt8NikbhxkIMttBNblCl6/EwdBF2cSDIAqGhOAdwZU5bH1/fjUkQ0IisCLnrqD3pmNo1j9YyMS/awOp9s3wzLZnabBKHboo6Nln4b7hiwyZZ53jkMU9zA7jGQdjVF79i/CyONa/HKMLNo+Cr0ZwfquABu1zsoBhYPyL2pvUOcAS16VL4rEBruTeeSESSn2JJS9U6pP8T4cQvTaQ9O+KNWIvh3R4bIN6JMPPbEag/lo8AtczhHNJgTGYr5901uiygjR1FFc6koWIjjD1BJwS4SVnXaS11cOJKBGshBP1NGH83Kq6Bc/Xc4c7eVBd2QXTpBzb4FOUjB3yeAnGm+oIs8fDvA3M3Gb+TMzaCRYM4SPhXusHedQG1Ha1meg6tFtiwkQgf3EQbDrR7t5BC5LOMGOZR+4nn/hfkaVkqTJ8tkpFdMBh5aJS9wxWQfSRdPEh1ZLx8sxN+ldxN5eUyuJNTXHDkd18n+nOsAaBlxBJCx9+lkZ51WizAGWuY2sR1iepThIeWhh6IlN++PJJzr4yv4j+3BEGtdS8oOj6wBekw1MewKY+/dNXZeZpQT+UKcHrqMFgJiEBQYt7NeZKZ2xIhdp+/WJvrvQiv0NUeG5f92mQmEuQRW1GzS9N3qJwxXpXKn8BMlPKGN+rccaorN7kbBrzFcZ1tB7Rta8bYv3F7maJyctJpwFBNY6oGlTGL1geTvTZtu1mXZrQ9OC2oYVs4wfkoB3a5moItrLczysembAO6BCg1+QjV0qVw2Se7ZZ5nvb9KGmdYTXRC6ZGtXU22aQ/MQ6gvNqZ7uOO03SBPJ/NBnGzgsTeZ2N3CKBIp/bjayT4RN+ad5B95IOSlPCMX8/L1VjQDmog31tAvtlu7YKjvXTd7uGrbvibuQHmjFnat56R9HItsQzJyCp/bv5tgi2NSK2FY3s2zqe24HIMWzclZ5Q0b0bwjFSChhkUiVK42Kv28Yyw3QAz9WcpaSR/BNxYrJ1pfuZ6X/YHUqUhg8U0RzIllEYJDbTqrqh2fryU5ZcbamTQyB4+jCIWr/UOZrc75k8R0HaIPhbRxmSRYF7Gtta92+kmTmSpjnehs7JROjEfnBiZ7ArawnyWKAAhHihN1ryN9SQ0pwB02QoYPnb90rY2Pz/s9ieRrL30CZGftkPIrNXLjb/zGG6L9xwUCT9VqLBE3pIRAEUkDHdRjBYIDNmhCOVCtlwvo5ChLItltfaIVacnUcee78g77/sajnnbGoPC0EWCVq7OjJe5zekxAB/U=", 1804, packet_22, &packet_22_size) != CHIAKI_ERR_SUCCESS || packet_22_size != 1352) return MUNIT_ERROR; uint8_t nalu_22[1331]; size_t nalu_22_size = sizeof(nalu_22); if(chiaki_base64_decode("AAEAAAABQQC/mghCT9fcMlPQ8f0wyc1mYW1UF/KMHKFKH6KCoTXA3ba2DCVkHWmoxH959gAb4Kx5KdlGQYltMoK7dEEMtCjPd1yhUOu8G3ksNjm+TMAqu0jwhwCgNbk0UVf0w+uicVYIV2AQPglfxMzTvGId/o2D8O5SR9VE8Me/Xl/K+XELY/qzoEpt7tsAWR9ac7EvnqKwn0iRPcfVYzInIqr2XJ55ee72kTVXZmrxXVK8e+dDItkWN5HikGdtF/3qc8nKapHNLl8z+BuGxrEHOvO1NNr3wbW6qzYqiVHDbajfldYnpmKbP4igHyPu6b9sXJQVYbLeI+TH5dguJ/XFzuwU2MohlMnFiYdlLJiostVF7wWIX6XLQzpKRJUNgjMzd2x2SM/xy6I1aAQ/F3cgDgrQSIp2hKdQxNhdbBD7luk0zlTKpi1XMS3T+rHvZovCuOU/KkaecYUea7HvEuIUJu9vN4RAfXPaKGrIEFwldSiM+KWKsxIZRaLLmaOS4JfHrPnG/q0aANrhCxYI3wlhdzmpNCUsMbBJRpL5+0RLv4KtYJsOFz6CdnoRjxBAC+s0AlEB/DQ1HCP9AcMIIu/5dfe0KvVaX9/xznBwyApFY2CGSkLtwipEXFImFrluSe60K26bRSkKc/3hiwRDU/folZPjHMxqYZdPZAClCfZIXbCeUwl5PQHoNoqf5ORuC7V3EnYTVIauczci9T9UzQmfZCFcWFdU8u03bVEzsn6aVrFaKR59pamDBozc2kNQzVsnTfnM3WNQtIWzLka3YZy5Akrf2r+tExgZncA6yBJXBJTLrvgAVKYZo+E1u+hyHx/bYTWG4S1mJYD6jwEq6KMgA1fpJqK3nGaHPmIuwG4wof8JxDdn6YUnmTVDo3RbYPERpoTz22IdXJUFq2IfHxN4D//fQxGh1+fPyK2Vx1Yyncw4ER8/crjQr2OpnSSKkizwKpluo5LegUYxVDApi1ldyIPmq9hVOx4/iTb5GuoTR99SZ/uEBWEn0lbHCFFkhv81sNPQsoR/X0zuRkBVToSJgYj61Hi30AKNp3luDevFNGY/el3KFJsyFNcCduVr7fF7S34v61CaPnnxGLNrhDD0jmMBR1Y3u26mwdpTU+unXHmDq7wMQ+gwiErVcGo1qzAdUUz/FZwofZ5nQUHFDjx0iP8rFUVVQBDCEsT2YbCyd7b67MYU9YlKpkIm0JorPiAYaLcVqZ6UB1PUtIrmjIlQd1mRfZvLoIKpM0e7m6bha+yT42Prmf6z4OJCFGp9WBkmTPGsedG67+8+KY16UmLgRfGRzkQhrS0IYUHkUb+LEtPQ68Ti+cLglBSskH/4glXGF3faWpXwnuW9nWIBuwliB7KUdJr0BBj4Xlz304EKYfqfkQ7vCaxw45IWlHydqgw/Pl3cy8JYG3e3qrjiSKSdVhWDrbdMNCVI0WMjDANudS5ngIVyZh5J6FRfdFoRTQSspeWyapoGOlD2wFRV7LYHSFHvQgVaychGyNQgWaOcxCf9yykxS4KtVtN42MUCKsmiFG77uhPIY4hFyxjWEHXlNg1pjSd80GGk1Ha2oayOVwwdHTytX+TofQocGo/QEDoz0KH1In22l67d86homGUHGruegaJu7Kl4kQPJKvYkZXfimYW5IPjn42NSb670PidWpL3Ba3SnJXcpdAJQkmsmZdHdTbOpvEUrjMAkEHRsGaw33Y+/1SGhfGRV43Enn7onoFrJC2YGnUKVIOrkq5p4jIp9W29ttx+T9beVb030apg=", 1776, nalu_22, &nalu_22_size) != CHIAKI_ERR_SUCCESS || nalu_22_size != 1331) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_22; memset(&av_packet_22, 0, sizeof(av_packet_22)); chiaki_takion_v9_av_packet_parse(&av_packet_22, &key_state, packet_22, sizeof(packet_22)); munit_assert(av_packet_22.is_video); munit_assert_size(av_packet_22.data_size, ==, sizeof(nalu_22)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_22.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_22.data, av_packet_22.data_size); munit_assert_memory_equal(sizeof(nalu_22), av_packet_22.data, nalu_22); uint8_t packet_23[1328]; size_t packet_23_size = sizeof(packet_23); if(chiaki_base64_decode("AgAXAAMAYBQBA8Hy0WkAAGUAAPsAin4FQyiv3yCVWjsTdaBCnwPTKZsqb6PVDxPxfDouNnLHimAMlu2ONbVLrUYDzYr4ODn4+3Z8VkJFfRpwLCh7kvZOzpigSqXfbKnGDMSJ/q7AM+ClVCQTymAV+r/cwpGmHsB3C9erZ7KIAYW+MarkEhIrKCEqhqrbe6vuvgCm4ykLZj/WC+CUN8518BHbfdiRM6txHum/6L/kYT76l/Vs5q8U8Wc7ZOeXYekFb2sY805BqXGjgPEjooHoQFB5nQ2dwXiClUiOzKuKe64KmZAVUdzg+0vYtWgkjdH06wWFvOgJer5BURFbyaseMil4nX2lPVFlTDJArbiiqcqGiaPedF8rc93r6k7eURBBXCaUcO+AWsp/CeyW19E4M2kWS2A2HX/2N6TSSIiW6uyLxduuN8e79D1OVWkt2ytlsbQJpcHQr+Zy+tk0rMAZ+9Ctt6QPFMD+AvJ5whA2/M/V3avDGLJXebykq4uUqy3TchaIqG+uLTh1sd1xd9HRNH6QviC31+cbOm0Z6mXrbKQUFqs8XotCTlZk0MgpuxQ+geVKFIwphrtxIbMqUiIcxhzYBjMBRkC/C6jZdJuz1YOVSk2667+mtpOzAYA7HSDP3anSC4DzUmA6OBFSYDpXSQZXV91W8sMCxdn0+q9/+H+wpFyjTdqzcwirb/bmSZz9Fm4gnbWTOoe/xC8Dks5yz0H3uFup6uXE33opkEjNH1ud2mjpYiLW2SLq3KSctKjuPhLSVsy9/bEYQy1mkCUzau/MhDml93VzHJF5h7DbwHX7ItjfRCeMUOQ8jDTk7uDHSh7+w8+PPkwqiuLQWbSirmS/MkRVe/EO/Hdn3YjNaMtDmUUpEVkG6DF/qQwiwhl2m3CDUxLgLNysWmTL+aalUwIoBxKXgRIUcVI18oSJp2wuow2pAOPwIefP+Kv+zLubBdoRXnic0ecsiqRDq85mYKwmAS1AFZlZSNiXHTFD7Hc+9t47iicn4sASnUCD9VFqvgAp4evi5Ckh+2+K9le4SoN1A3cd37X65obVKH8ykpQavsonZy5os97m752GYOsHHAyXjwrVWjeEb8xzqeLPVqYfhhKd7wzS1yYKjklZiDerVq73LQAiZmzxZvwcc1w9siCk0lcuhbjmov0eDiOomOYDmodKRfuM56pzCjXNXCrt1GB/z8WgHvgpB4Ebxl3ZffebDYmxQBEhY8JgQIu7oDVKVpxXG9dXnbJlQdaHcBd+bLChf3zgpIQU5iwp0U+CdlQE12WjFzsm7HUi1w6BPisGVMwaoGskmd0Eaz6gwTBeFENQ32cbvYFGEJgBcl37i1XNSDFNl9B0O69Qmog1EQi9ZI4v3i1ego0ZxNe41c4aqD2JudNVzE+HFuDjXWxleERdENT8BSt87qNTz8fEDiYWVwjPnyzl4oGhCqSnI4tEXDz+0lPHG/Xx3ttyJnvAwEto9/iFgDvIHVc75MREqm98gWTJPVp0Tz5jFvuyBHvP2doGIqriw+FgzVffp6LKoVNIScEH8XFuVlV6c7C/bhofDpV5AW3aVcAgw3uD+fHhC8W6EO2yTBUNSH68IU8ukXQgO01QZ//sG7LU5SMV7sw0MzULb5qYqH3pE7FtSGlyavo4vfvH6X31SnNQR42DeZIcI8n/77mJTtK5QKTB99obSU0nDxsrF8yBffRu9nOD7elMCVwAqUm4sPs5CQ2MSk4E7d2VP35IU4nZG2ywawR+WbHCp0C/bwAO/rvPLgg=", 1772, packet_23, &packet_23_size) != CHIAKI_ERR_SUCCESS || packet_23_size != 1328) return MUNIT_ERROR; uint8_t nalu_23[1307]; size_t nalu_23_size = sizeof(nalu_23); if(chiaki_base64_decode("ABkAAAABQQBNJoIQg//eoqCWu3zz+HXFAKq32pQyBi8LkfNPdF1/9RYsjLS7cMNmBGUt0WmWd63aYl5jgl8E7AL+MMB8lb+8Udv9TJf2U1TeMAISiYl/4lNxbQpPjerAYqD4WZDQU6yeaYwSg2yqYc8QTOwCHD3Z0ETXgz7R+3vw1SxsijSubShUmugvuDxIEqNLATEgaMdFOBcEVWZPrnGw2KWjy1/eYFSaPq9s+SQnsRinmkSBWNGNxwlfesIica184uEqwFClFe7btI1G0DsW6SUyl3WSnX8NYDnlc1NDv/IH5EZpE3s+qzQMdP4ueNhILQp9VfqDwefesIilqhcczp+MfMP8Qmpq4RfsoGe8olz0N+2h/Kd/DXNgDvVS5uvurq0NA9LRA/HHwrmrbfymvmcDuKZOq3Ro+5/yiVe7lyeB73EwLpKo0xHyqbvdbqAtQqkkqoW8AzBe0KYyLDMRw2ytzBExLNuy4puAqzGkZKnIO6sII2NkjPjfmZejAORs6rVBasnePV2JdawFlQGFID1MwfzDV6K+Bymei01dq+5tFLfYnBrDnwXtoAUl4VuhS/8S7JsVb12UWh7d9wOWYrXLrZwbqCQOUuZ1nkWrmlvY9AymUJXlg+ehPaAgr7U5noh9vImfcs9UyuVb+FvVeiZtPH6z1XdGLUYrY8CLkgaZLVL2I/JhLGPdNEYj6GFDgfWUSehf1Jzuh+MGQkUxHxf3KFlRLd1W74TNN5fZKdumf+4BdikW4TP7Z/FaWh4ALrE/FybJ3ds8sVKPD3dAaHSGZ5SwsQWSKM1/8IdiXyL0RHvjKlYDgQabcOOiHTxDvTvhIpVvvFt0DuaJAxON86gzNckgcJv8AfI3yTmRVW0UXlXeEcc1sMUF6LS1egJuP8J7aRUFY2xyh1EE8XEmy/YVH0SUaIZde2oEEOGPEmzfV/Wrim/se2iDaVY3mbwf3FqYHJiJwOgacavF4MLcFRwgzzuP9XJ7E5YytdYTY8rKsBDAoer22EWVdSDBtcGWjS93TT8+uTpFc1hBEs5fu8z3PPvvUHENYAw909UkWCJEACeYfxzCLoHnCWl4blcpwYU/BaEeA6RQprpak1tD+ZB/3L1GeHHad2Xa1w5aDQ0UNi6DE0w3vjC8x25P3lOQhvCYD6Axb0HZ8sqfTtQQPtqdfc4b690kw0E6wpDMF8vNYru7XgWaXHVrfJB9a6G+xZ4RHOJfeMc68CpUSTJhBv+PIVgNo1hX//o+cQsD2wLpV8LdkJIOcmYf6wsQbNfeu611mW9iRv7nm4kuTTK2Qy30rUY+OLRhTliFuZt95s8hpnetVTgoQDxwRGUyul6Yv0wZQZtwDQMcRceb+VYcyGxbpq3LEPiZgPUYO3HbPfjvv3Jr7ms9c1UHBqGlD5x3YcOgb0zEsmOgWhrI+k0+CJr2IvAr+GJ6l+FH3PBbmq33gznHLkrk7cfD1GxSs69RCYpH+iLMCiCISujV1Xiiy55CyeYuREX+uW7BmyzYZkZ1/oIrppSwBuGonVmiaByUISxkLIRQ922jWRhXjLCvGZMNCBFNL305alBdhmB1SQyfBn+Ht0ZVAodLeAldHckvh8Q2jfxdeF26vvKeDZcN4vEg5/9PhGriGXE3IwwGyLqQRogw3KImSsovTj/2qhvXLtWe93G0UuPnRZ1c2NXGQUNvRylUbfdkxgUkHxVVrwjWAFDt812YuNz/PG3vwpoY9uccGkzZhvA=", 1744, nalu_23, &nalu_23_size) != CHIAKI_ERR_SUCCESS || nalu_23_size != 1307) return MUNIT_ERROR; ChiakiTakionAVPacket av_packet_23; memset(&av_packet_23, 0, sizeof(av_packet_23)); chiaki_takion_v9_av_packet_parse(&av_packet_23, &key_state, packet_23, sizeof(packet_23)); munit_assert(av_packet_23.is_video); munit_assert_size(av_packet_23.data_size, ==, sizeof(nalu_23)); chiaki_gkcrypt_decrypt(&gkcrypt, av_packet_23.key_pos + CHIAKI_GKCRYPT_BLOCK_SIZE, av_packet_23.data, av_packet_23.data_size); munit_assert_memory_equal(sizeof(nalu_23), av_packet_23.data, nalu_23); // -- frame -- // packets: 128, nalus: 96 chiaki_gkcrypt_fini(&gkcrypt); // testcasetoc.py generated code end chiaki-v2.2.0/test/test_log.c000066400000000000000000000004321447035777400161150ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #include "test_log.h" #include static bool initialized = false; static ChiakiLog log_quiet; ChiakiLog *get_test_log() { if(!initialized) chiaki_log_init(&log_quiet, 0, NULL, NULL); return &log_quiet; }chiaki-v2.2.0/test/test_log.h000066400000000000000000000003051447035777400161210ustar00rootroot00000000000000// SPDX-License-Identifier: LicenseRef-AGPL-3.0-only-OpenSSL #ifndef CHIAKI_TEST_LOG_H #define CHIAKI_TEST_LOG_H #include ChiakiLog *get_test_log(); #endif // CHIAKI_LOG_QUIET_H chiaki-v2.2.0/third-party/000077500000000000000000000000001447035777400154225ustar00rootroot00000000000000chiaki-v2.2.0/third-party/CMakeLists.txt000066400000000000000000000031451447035777400201650ustar00rootroot00000000000000 if(NOT CHIAKI_USE_SYSTEM_NANOPB) ################## # nanopb ################## add_definitions(-DPB_C99_STATIC_ASSERT) # Fix PB_STATIC_ASSERT on msvc without using C11 for now add_subdirectory(nanopb EXCLUDE_FROM_ALL) set(NANOPB_GENERATOR_PY "${CMAKE_CURRENT_SOURCE_DIR}/nanopb/generator/nanopb_generator.py" PARENT_SCOPE) add_library(nanopb INTERFACE) target_link_libraries(nanopb INTERFACE protobuf-nanopb-static) target_include_directories(nanopb INTERFACE "${CMAKE_CURRENT_SOURCE_DIR}/nanopb") target_compile_definitions(nanopb INTERFACE -DPB_C99_STATIC_ASSERT) # see above add_library(Nanopb::nanopb ALIAS nanopb) endif() if(NOT CHIAKI_USE_SYSTEM_JERASURE) ################## # gf-complete ################## set(GF_COMPLETE_SOURCE gf-complete/src/gf.c gf-complete/src/gf_wgen.c gf-complete/src/gf_w4.c gf-complete/src/gf_w8.c gf-complete/src/gf_w16.c gf-complete/src/gf_w32.c gf-complete/src/gf_w64.c gf-complete/src/gf_w128.c gf-complete/src/gf_rand.c gf-complete/src/gf_general.c gf-complete/src/gf_cpu.c) # TODO: support NEON add_library(gf_complete STATIC ${GF_COMPLETE_SOURCE}) target_include_directories(gf_complete PUBLIC gf-complete/include) ################## # jerasure ################## set(JERASURE_SOURCE jerasure/src/galois.c jerasure/src/jerasure.c jerasure/src/reed_sol.c jerasure/src/cauchy.c jerasure/src/liberation.c) add_library(jerasure STATIC ${JERASURE_SOURCE}) target_include_directories(jerasure PUBLIC jerasure/include) target_link_libraries(jerasure gf_complete) add_library(Jerasure::Jerasure ALIAS jerasure) endif() chiaki-v2.2.0/third-party/gf-complete/000077500000000000000000000000001447035777400176245ustar00rootroot00000000000000chiaki-v2.2.0/third-party/jerasure/000077500000000000000000000000001447035777400172425ustar00rootroot00000000000000chiaki-v2.2.0/third-party/nanopb/000077500000000000000000000000001447035777400166775ustar00rootroot00000000000000